@bryanhu/codexly 0.21.1 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +6 -3
  3. package/README.zh-CN.md +6 -3
  4. package/dist/{chunk-2J5P2EG2.js → chunk-4VM2ZUPT.js} +67 -3
  5. package/dist/{chunk-ZUECHB6L.js → chunk-6JWQNFM2.js} +1 -1
  6. package/dist/{chunk-AIACWU7L.js → chunk-NUJPWN62.js} +135 -1
  7. package/dist/{chunk-X5JZ3VOF.js → chunk-ZXTTTT25.js} +433 -373
  8. package/dist/cli.js +83 -52
  9. package/dist/client/index.js +17 -3
  10. package/dist/protocol/index.js +1 -1
  11. package/dist/providers/codex/index.js +2 -2
  12. package/dist/server/index.js +4 -4
  13. package/dist/web/.vite/manifest.json +420 -277
  14. package/dist/web/.vite/manifest.json.br +0 -0
  15. package/dist/web/.vite/manifest.json.gz +0 -0
  16. package/dist/web/assets/{agent-settings-panel-C7uNXeGy.js → agent-settings-panel-Ci9mJOS-.js} +1 -1
  17. package/dist/web/assets/agent-settings-panel-Ci9mJOS-.js.br +0 -0
  18. package/dist/web/assets/agent-settings-panel-Ci9mJOS-.js.gz +0 -0
  19. package/dist/web/assets/attachments-uWbRsPJj.js +1 -0
  20. package/dist/web/assets/attachments-uWbRsPJj.js.br +0 -0
  21. package/dist/web/assets/attachments-uWbRsPJj.js.gz +0 -0
  22. package/dist/web/assets/{background-image-picker-DtuAcWzD.js → background-image-picker-qGpdQPQi.js} +1 -1
  23. package/dist/web/assets/background-image-picker-qGpdQPQi.js.br +0 -0
  24. package/dist/web/assets/background-image-picker-qGpdQPQi.js.gz +0 -0
  25. package/dist/web/assets/{bing-wallpaper-queries-BQDBcor6.js → bing-wallpaper-queries-uesKD16x.js} +1 -1
  26. package/dist/web/assets/bing-wallpaper-queries-uesKD16x.js.br +0 -0
  27. package/dist/web/assets/bing-wallpaper-queries-uesKD16x.js.gz +0 -0
  28. package/dist/web/assets/{bot-DYpQGfoo.js → bot-DS7Hjc6u.js} +1 -1
  29. package/dist/web/assets/bot-DS7Hjc6u.js.br +0 -0
  30. package/dist/web/assets/bot-DS7Hjc6u.js.gz +0 -0
  31. package/dist/web/assets/{button-group-CnJgFd3H.js → button-group-075rCj_f.js} +1 -1
  32. package/dist/web/assets/button-group-075rCj_f.js.br +0 -0
  33. package/dist/web/assets/button-group-075rCj_f.js.gz +0 -0
  34. package/dist/web/assets/{chunk-BO2N2NFS-DauaBPLH.js → chunk-BO2N2NFS-D6bbuE0-.js} +4 -4
  35. package/dist/web/assets/chunk-BO2N2NFS-D6bbuE0-.js.br +0 -0
  36. package/dist/web/assets/chunk-BO2N2NFS-D6bbuE0-.js.gz +0 -0
  37. package/dist/web/assets/code-block-C9eTeWWd.js +3 -0
  38. package/dist/web/assets/code-block-C9eTeWWd.js.br +0 -0
  39. package/dist/web/assets/code-block-C9eTeWWd.js.gz +0 -0
  40. package/dist/web/assets/{commit-settings-panel-CsqSHXMY.js → commit-settings-panel-CaMMU0oA.js} +1 -1
  41. package/dist/web/assets/commit-settings-panel-CaMMU0oA.js.br +0 -0
  42. package/dist/web/assets/commit-settings-panel-CaMMU0oA.js.gz +0 -0
  43. package/dist/web/assets/{context-menu-DA8sXAc3.js → context-menu-Dj3lnor1.js} +1 -1
  44. package/dist/web/assets/context-menu-Dj3lnor1.js.br +0 -0
  45. package/dist/web/assets/context-menu-Dj3lnor1.js.gz +0 -0
  46. package/dist/web/assets/copy-BynT2kGi.js +1 -0
  47. package/dist/web/assets/copy-BynT2kGi.js.br +0 -0
  48. package/dist/web/assets/copy-BynT2kGi.js.gz +0 -0
  49. package/dist/web/assets/{dist-B4No2uWB.js → dist-BpzI75g4.js} +1 -1
  50. package/dist/web/assets/dist-BpzI75g4.js.br +0 -0
  51. package/dist/web/assets/dist-BpzI75g4.js.gz +0 -0
  52. package/dist/web/assets/{download-B__AuyX_.js → download-DMNchNW0.js} +1 -1
  53. package/dist/web/assets/download-DMNchNW0.js.br +0 -0
  54. package/dist/web/assets/download-DMNchNW0.js.gz +0 -0
  55. package/dist/web/assets/{external-link-BHe2GLz2.js → external-link-DcCR8cO8.js} +1 -1
  56. package/dist/web/assets/external-link-DcCR8cO8.js.br +0 -0
  57. package/dist/web/assets/external-link-DcCR8cO8.js.gz +0 -0
  58. package/dist/web/assets/file-code-corner-DrXDbEPu.js +1 -0
  59. package/dist/web/assets/file-code-corner-DrXDbEPu.js.br +0 -0
  60. package/dist/web/assets/file-code-corner-DrXDbEPu.js.gz +0 -0
  61. package/dist/web/assets/{file-navigation-view-preference-ePb5OplI.js → file-navigation-view-preference-BrQTIoOu.js} +1 -1
  62. package/dist/web/assets/file-navigation-view-preference-BrQTIoOu.js.br +0 -0
  63. package/dist/web/assets/file-navigation-view-preference-BrQTIoOu.js.gz +0 -0
  64. package/dist/web/assets/{file-pen-line-Ct-6viiE.js → file-pen-line-Dm4cCdyM.js} +1 -1
  65. package/dist/web/assets/file-pen-line-Dm4cCdyM.js.br +0 -0
  66. package/dist/web/assets/file-pen-line-Dm4cCdyM.js.gz +0 -0
  67. package/dist/web/assets/file-review-dialog-D8XVZ21M.js +2 -0
  68. package/dist/web/assets/file-review-dialog-D8XVZ21M.js.br +0 -0
  69. package/dist/web/assets/file-review-dialog-D8XVZ21M.js.gz +0 -0
  70. package/dist/web/assets/files-BQtgYZvR.js +1 -0
  71. package/dist/web/assets/files-BQtgYZvR.js.br +0 -0
  72. package/dist/web/assets/files-BQtgYZvR.js.gz +0 -0
  73. package/dist/web/assets/{git-fork-CqXNwC6z.js → git-fork-93orhLsV.js} +1 -1
  74. package/dist/web/assets/git-fork-93orhLsV.js.br +2 -0
  75. package/dist/web/assets/git-fork-93orhLsV.js.gz +0 -0
  76. package/dist/web/assets/git-history-panel-D2fKSR66.js +2 -0
  77. package/dist/web/assets/git-history-panel-D2fKSR66.js.br +0 -0
  78. package/dist/web/assets/git-history-panel-D2fKSR66.js.gz +0 -0
  79. package/dist/web/assets/global-search-dialog-BxT-UjpZ.js +3 -0
  80. package/dist/web/assets/global-search-dialog-BxT-UjpZ.js.br +0 -0
  81. package/dist/web/assets/global-search-dialog-BxT-UjpZ.js.gz +0 -0
  82. package/dist/web/assets/{global-settings-about-DEM2NPhz.js → global-settings-about-DiblprcD.js} +1 -1
  83. package/dist/web/assets/global-settings-about-DiblprcD.js.br +0 -0
  84. package/dist/web/assets/global-settings-about-DiblprcD.js.gz +0 -0
  85. package/dist/web/assets/{global-settings-fields-Bi-Jx6d5.js → global-settings-fields-D5T5SPXY.js} +1 -1
  86. package/dist/web/assets/global-settings-fields-D5T5SPXY.js.br +0 -0
  87. package/dist/web/assets/global-settings-fields-D5T5SPXY.js.gz +0 -0
  88. package/dist/web/assets/{global-settings-model-DwpWNpvi.js → global-settings-model-COz331Sr.js} +1 -1
  89. package/dist/web/assets/global-settings-model-COz331Sr.js.br +0 -0
  90. package/dist/web/assets/global-settings-model-COz331Sr.js.gz +0 -0
  91. package/dist/web/assets/{global-settings-page-CsEk6ST2.js → global-settings-page-DEBGBxSg.js} +2 -2
  92. package/dist/web/assets/global-settings-page-DEBGBxSg.js.br +0 -0
  93. package/dist/web/assets/global-settings-page-DEBGBxSg.js.gz +0 -0
  94. package/dist/web/assets/{global-settings-pets-QZlIeo6Z.js → global-settings-pets-DwJnj_6N.js} +1 -1
  95. package/dist/web/assets/global-settings-pets-DwJnj_6N.js.br +0 -0
  96. package/dist/web/assets/global-settings-pets-DwJnj_6N.js.gz +0 -0
  97. package/dist/web/assets/{highlighted-body-OFNGDK62-BxPDtlWp.js → highlighted-body-OFNGDK62-D0ZQwVKA.js} +1 -1
  98. package/dist/web/assets/highlighted-body-OFNGDK62-D0ZQwVKA.js.br +0 -0
  99. package/dist/web/assets/highlighted-body-OFNGDK62-D0ZQwVKA.js.gz +0 -0
  100. package/dist/web/assets/history-BWOEYMB7.js +1 -0
  101. package/dist/web/assets/history-BWOEYMB7.js.br +0 -0
  102. package/dist/web/assets/history-BWOEYMB7.js.gz +0 -0
  103. package/dist/web/assets/history-location-BlnZi6Z-.js +1 -0
  104. package/dist/web/assets/history-location-BlnZi6Z-.js.br +0 -0
  105. package/dist/web/assets/history-location-BlnZi6Z-.js.gz +0 -0
  106. package/dist/web/assets/history-task-timeline-oQRRdMbY.js +1 -0
  107. package/dist/web/assets/history-task-timeline-oQRRdMbY.js.br +0 -0
  108. package/dist/web/assets/history-task-timeline-oQRRdMbY.js.gz +0 -0
  109. package/dist/web/assets/index-Cm5l38kF.css +2 -0
  110. package/dist/web/assets/index-Cm5l38kF.css.br +0 -0
  111. package/dist/web/assets/index-Cm5l38kF.css.gz +0 -0
  112. package/dist/web/assets/index-DRfXjZ2a.js +4 -0
  113. package/dist/web/assets/index-DRfXjZ2a.js.br +0 -0
  114. package/dist/web/assets/index-DRfXjZ2a.js.gz +0 -0
  115. package/dist/web/assets/{info-BSMz7uRW.js → info-BbsecYYN.js} +1 -1
  116. package/dist/web/assets/info-BbsecYYN.js.br +0 -0
  117. package/dist/web/assets/info-BbsecYYN.js.gz +0 -0
  118. package/dist/web/assets/{initial-deps-BsEyuMB0.js → initial-deps-BM3gt1hz.js} +1 -1
  119. package/dist/web/assets/initial-deps-BM3gt1hz.js.br +0 -0
  120. package/dist/web/assets/initial-deps-BM3gt1hz.js.gz +0 -0
  121. package/dist/web/assets/{initial-deps-CA0YnOrW.js → initial-deps-BYSU0u1N.js} +1 -1
  122. package/dist/web/assets/initial-deps-BYSU0u1N.js.br +0 -0
  123. package/dist/web/assets/initial-deps-BYSU0u1N.js.gz +0 -0
  124. package/dist/web/assets/{initial-deps-CTprc_pY.js → initial-deps-CB2J2rjl.js} +1 -1
  125. package/dist/web/assets/initial-deps-CB2J2rjl.js.br +0 -0
  126. package/dist/web/assets/{initial-deps-CTprc_pY.js.gz → initial-deps-CB2J2rjl.js.gz} +0 -0
  127. package/dist/web/assets/initial-deps-DipJkDUX.js +1 -0
  128. package/dist/web/assets/initial-deps-DipJkDUX.js.br +0 -0
  129. package/dist/web/assets/initial-deps-DipJkDUX.js.gz +0 -0
  130. package/dist/web/assets/{initial-deps-DKh4Kqow.js → initial-deps-E80pA8LY.js} +1 -1
  131. package/dist/web/assets/initial-deps-E80pA8LY.js.br +0 -0
  132. package/dist/web/assets/initial-deps-E80pA8LY.js.gz +0 -0
  133. package/dist/web/assets/{installed-skills-pane-BIymfpjl.js → installed-skills-pane-v1IcvRKL.js} +1 -1
  134. package/dist/web/assets/installed-skills-pane-v1IcvRKL.js.br +0 -0
  135. package/dist/web/assets/installed-skills-pane-v1IcvRKL.js.gz +0 -0
  136. package/dist/web/assets/lazy-message-response-B6dT9kbf.js +2 -0
  137. package/dist/web/assets/lazy-message-response-B6dT9kbf.js.br +0 -0
  138. package/dist/web/assets/lazy-message-response-B6dT9kbf.js.gz +0 -0
  139. package/dist/web/assets/{mcp-management-pane-CTAt5eCP.js → mcp-management-pane-DiPUaZAO.js} +1 -1
  140. package/dist/web/assets/mcp-management-pane-DiPUaZAO.js.br +0 -0
  141. package/dist/web/assets/mcp-management-pane-DiPUaZAO.js.gz +0 -0
  142. package/dist/web/assets/mermaid-GHXKKRXX-BghgL98l.js +1 -0
  143. package/dist/web/assets/mermaid-GHXKKRXX-BghgL98l.js.br +0 -0
  144. package/dist/web/assets/mermaid-GHXKKRXX-BghgL98l.js.gz +0 -0
  145. package/dist/web/assets/{message-response-BmWeJe7f.js → message-response-BZZGbaVm.js} +1 -1
  146. package/dist/web/assets/message-response-BZZGbaVm.js.br +0 -0
  147. package/dist/web/assets/message-response-BZZGbaVm.js.gz +0 -0
  148. package/dist/web/assets/{official-plugins-pane-vm-wO5X8.js → official-plugins-pane-Cis1hRgm.js} +1 -1
  149. package/dist/web/assets/official-plugins-pane-Cis1hRgm.js.br +0 -0
  150. package/dist/web/assets/official-plugins-pane-Cis1hRgm.js.gz +0 -0
  151. package/dist/web/assets/{paw-print-dDU9UzMl.js → paw-print-BysLHcBp.js} +1 -1
  152. package/dist/web/assets/paw-print-BysLHcBp.js.br +0 -0
  153. package/dist/web/assets/paw-print-BysLHcBp.js.gz +0 -0
  154. package/dist/web/assets/{personalization-settings-panel-Cdt-GJKo.js → personalization-settings-panel-BB5nguhA.js} +1 -1
  155. package/dist/web/assets/personalization-settings-panel-BB5nguhA.js.br +0 -0
  156. package/dist/web/assets/personalization-settings-panel-BB5nguhA.js.gz +0 -0
  157. package/dist/web/assets/{project-file-popup-page-BLp3bOha.js → project-file-popup-page-CAcF7DIa.js} +1 -1
  158. package/dist/web/assets/project-file-popup-page-CAcF7DIa.js.br +0 -0
  159. package/dist/web/assets/project-file-popup-page-CAcF7DIa.js.gz +0 -0
  160. package/dist/web/assets/project-source-dialog-DbOmvJBS.js +1 -0
  161. package/dist/web/assets/project-source-dialog-DbOmvJBS.js.br +0 -0
  162. package/dist/web/assets/project-source-dialog-DbOmvJBS.js.gz +0 -0
  163. package/dist/web/assets/project-source-panel-DGafRUDi.js +1 -0
  164. package/dist/web/assets/project-source-panel-DGafRUDi.js.br +0 -0
  165. package/dist/web/assets/project-source-panel-DGafRUDi.js.gz +0 -0
  166. package/dist/web/assets/{prompt-input-CFPRtHQa.js → prompt-input-DwT-XwSc.js} +1 -1
  167. package/dist/web/assets/prompt-input-DwT-XwSc.js.br +0 -0
  168. package/dist/web/assets/prompt-input-DwT-XwSc.js.gz +0 -0
  169. package/dist/web/assets/{prompt-input-controls-qBjai56L.js → prompt-input-controls-CLasQrSj.js} +1 -1
  170. package/dist/web/assets/prompt-input-controls-CLasQrSj.js.br +0 -0
  171. package/dist/web/assets/prompt-input-controls-CLasQrSj.js.gz +0 -0
  172. package/dist/web/assets/{scheduled-task-date-time-picker-ChB1QMq4.js → scheduled-task-date-time-picker-CnSPVHna.js} +1 -1
  173. package/dist/web/assets/scheduled-task-date-time-picker-CnSPVHna.js.br +0 -0
  174. package/dist/web/assets/scheduled-task-date-time-picker-CnSPVHna.js.gz +0 -0
  175. package/dist/web/assets/{scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js → scheduled-task-floating-ui~scheduled-task-date-time-picker-BmEuIPw_.js} +1 -1
  176. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-BmEuIPw_.js.br +0 -0
  177. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-BmEuIPw_.js.gz +0 -0
  178. package/dist/web/assets/{scheduled-task-schedule-C1OLCa3o.js → scheduled-task-schedule-BnMdRADi.js} +1 -1
  179. package/dist/web/assets/scheduled-task-schedule-BnMdRADi.js.br +0 -0
  180. package/dist/web/assets/scheduled-task-schedule-BnMdRADi.js.gz +0 -0
  181. package/dist/web/assets/scheduled-tasks-container-CNCzsjiP.js +2 -0
  182. package/dist/web/assets/scheduled-tasks-container-CNCzsjiP.js.br +0 -0
  183. package/dist/web/assets/scheduled-tasks-container-CNCzsjiP.js.gz +0 -0
  184. package/dist/web/assets/search-highlight-Ct60jVKA.css +1 -0
  185. package/dist/web/assets/search-highlight-Ct60jVKA.css.br +0 -0
  186. package/dist/web/assets/search-highlight-Ct60jVKA.css.gz +0 -0
  187. package/dist/web/assets/search-highlight-Zgr_0184.js +1 -0
  188. package/dist/web/assets/search-highlight-Zgr_0184.js.br +0 -0
  189. package/dist/web/assets/search-highlight-Zgr_0184.js.gz +0 -0
  190. package/dist/web/assets/{settings-personalization-C02xFFt3.js → settings-personalization-CB_nnUys.js} +1 -1
  191. package/dist/web/assets/settings-personalization-CB_nnUys.js.br +0 -0
  192. package/dist/web/assets/settings-personalization-CB_nnUys.js.gz +0 -0
  193. package/dist/web/assets/{sheet-7wHRYO_r.js → sheet-JpH2S7eZ.js} +1 -1
  194. package/dist/web/assets/sheet-JpH2S7eZ.js.br +0 -0
  195. package/dist/web/assets/sheet-JpH2S7eZ.js.gz +0 -0
  196. package/dist/web/assets/{skills-market-container-DV3Z3dho.js → skills-market-container-BgtnwdI7.js} +2 -2
  197. package/dist/web/assets/skills-market-container-BgtnwdI7.js.br +0 -0
  198. package/dist/web/assets/skills-market-container-BgtnwdI7.js.gz +0 -0
  199. package/dist/web/assets/{sliders-horizontal-9U3YhJ-G.js → sliders-horizontal-DzlaBxiO.js} +1 -1
  200. package/dist/web/assets/sliders-horizontal-DzlaBxiO.js.br +2 -0
  201. package/dist/web/assets/sliders-horizontal-DzlaBxiO.js.gz +0 -0
  202. package/dist/web/assets/{sparkles-R_aBU9Dh.js → sparkles-B6-DOZ3B.js} +1 -1
  203. package/dist/web/assets/sparkles-B6-DOZ3B.js.br +0 -0
  204. package/dist/web/assets/sparkles-B6-DOZ3B.js.gz +0 -0
  205. package/dist/web/assets/task-timeline-store-BN41mX3t.js +6 -0
  206. package/dist/web/assets/task-timeline-store-BN41mX3t.js.br +0 -0
  207. package/dist/web/assets/task-timeline-store-BN41mX3t.js.gz +0 -0
  208. package/dist/web/assets/{third-party-marketplace-pane-DgdNcV-f.js → third-party-marketplace-pane-CAI6XIWR.js} +1 -1
  209. package/dist/web/assets/third-party-marketplace-pane-CAI6XIWR.js.br +0 -0
  210. package/dist/web/assets/third-party-marketplace-pane-CAI6XIWR.js.gz +0 -0
  211. package/dist/web/assets/{upload-B6cPQ82X.js → upload-ixXXjamH.js} +1 -1
  212. package/dist/web/assets/upload-ixXXjamH.js.br +0 -0
  213. package/dist/web/assets/upload-ixXXjamH.js.gz +0 -0
  214. package/dist/web/assets/workbench-composer-dKix0zGK.js +8 -0
  215. package/dist/web/assets/workbench-composer-dKix0zGK.js.br +0 -0
  216. package/dist/web/assets/workbench-composer-dKix0zGK.js.gz +0 -0
  217. package/dist/web/assets/workbench-inspector-changes-Bl5nS-_2.js +2 -0
  218. package/dist/web/assets/workbench-inspector-changes-Bl5nS-_2.js.br +0 -0
  219. package/dist/web/assets/workbench-inspector-changes-Bl5nS-_2.js.gz +0 -0
  220. package/dist/web/assets/{workbench-pet-canvas-Bf6038yN.js → workbench-pet-canvas-CnwZR5HG.js} +1 -1
  221. package/dist/web/assets/workbench-pet-canvas-CnwZR5HG.js.br +0 -0
  222. package/dist/web/assets/workbench-pet-canvas-CnwZR5HG.js.gz +0 -0
  223. package/dist/web/assets/workbench-shell-B8lBrj2O.js +3 -0
  224. package/dist/web/assets/workbench-shell-B8lBrj2O.js.br +0 -0
  225. package/dist/web/assets/workbench-shell-B8lBrj2O.js.gz +0 -0
  226. package/dist/web/index.html +8 -8
  227. package/dist/web/index.html.br +0 -0
  228. package/dist/web/index.html.gz +0 -0
  229. package/package.json +1 -1
  230. package/dist/web/assets/agent-settings-panel-C7uNXeGy.js.br +0 -0
  231. package/dist/web/assets/agent-settings-panel-C7uNXeGy.js.gz +0 -0
  232. package/dist/web/assets/background-image-picker-DtuAcWzD.js.br +0 -0
  233. package/dist/web/assets/background-image-picker-DtuAcWzD.js.gz +0 -0
  234. package/dist/web/assets/bing-wallpaper-queries-BQDBcor6.js.br +0 -0
  235. package/dist/web/assets/bing-wallpaper-queries-BQDBcor6.js.gz +0 -0
  236. package/dist/web/assets/bot-DYpQGfoo.js.br +0 -0
  237. package/dist/web/assets/bot-DYpQGfoo.js.gz +0 -0
  238. package/dist/web/assets/button-group-CnJgFd3H.js.br +0 -0
  239. package/dist/web/assets/button-group-CnJgFd3H.js.gz +0 -0
  240. package/dist/web/assets/chunk-BO2N2NFS-DauaBPLH.js.br +0 -0
  241. package/dist/web/assets/chunk-BO2N2NFS-DauaBPLH.js.gz +0 -0
  242. package/dist/web/assets/commit-settings-panel-CsqSHXMY.js.br +0 -0
  243. package/dist/web/assets/commit-settings-panel-CsqSHXMY.js.gz +0 -0
  244. package/dist/web/assets/context-menu-DA8sXAc3.js.br +0 -0
  245. package/dist/web/assets/context-menu-DA8sXAc3.js.gz +0 -0
  246. package/dist/web/assets/dist-B4No2uWB.js.br +0 -0
  247. package/dist/web/assets/dist-B4No2uWB.js.gz +0 -0
  248. package/dist/web/assets/download-B__AuyX_.js.br +0 -0
  249. package/dist/web/assets/download-B__AuyX_.js.gz +0 -0
  250. package/dist/web/assets/external-link-BHe2GLz2.js.br +0 -0
  251. package/dist/web/assets/external-link-BHe2GLz2.js.gz +0 -0
  252. package/dist/web/assets/file-code-corner-DCQQ8xoR.js +0 -1
  253. package/dist/web/assets/file-code-corner-DCQQ8xoR.js.br +0 -0
  254. package/dist/web/assets/file-code-corner-DCQQ8xoR.js.gz +0 -0
  255. package/dist/web/assets/file-navigation-view-preference-ePb5OplI.js.br +0 -0
  256. package/dist/web/assets/file-navigation-view-preference-ePb5OplI.js.gz +0 -0
  257. package/dist/web/assets/file-pen-line-Ct-6viiE.js.br +0 -0
  258. package/dist/web/assets/file-pen-line-Ct-6viiE.js.gz +0 -0
  259. package/dist/web/assets/file-review-dialog-CE5KTB4O.js +0 -2
  260. package/dist/web/assets/file-review-dialog-CE5KTB4O.js.br +0 -0
  261. package/dist/web/assets/file-review-dialog-CE5KTB4O.js.gz +0 -0
  262. package/dist/web/assets/git-fork-CqXNwC6z.js.br +0 -2
  263. package/dist/web/assets/git-fork-CqXNwC6z.js.gz +0 -0
  264. package/dist/web/assets/git-history-panel-C4f1X26C.js +0 -2
  265. package/dist/web/assets/git-history-panel-C4f1X26C.js.br +0 -0
  266. package/dist/web/assets/git-history-panel-C4f1X26C.js.gz +0 -0
  267. package/dist/web/assets/global-settings-about-DEM2NPhz.js.br +0 -0
  268. package/dist/web/assets/global-settings-about-DEM2NPhz.js.gz +0 -0
  269. package/dist/web/assets/global-settings-fields-Bi-Jx6d5.js.br +0 -0
  270. package/dist/web/assets/global-settings-fields-Bi-Jx6d5.js.gz +0 -0
  271. package/dist/web/assets/global-settings-model-DwpWNpvi.js.br +0 -0
  272. package/dist/web/assets/global-settings-model-DwpWNpvi.js.gz +0 -0
  273. package/dist/web/assets/global-settings-page-CsEk6ST2.js.br +0 -0
  274. package/dist/web/assets/global-settings-page-CsEk6ST2.js.gz +0 -0
  275. package/dist/web/assets/global-settings-pets-QZlIeo6Z.js.br +0 -0
  276. package/dist/web/assets/global-settings-pets-QZlIeo6Z.js.gz +0 -0
  277. package/dist/web/assets/highlighted-body-OFNGDK62-BxPDtlWp.js.br +0 -0
  278. package/dist/web/assets/highlighted-body-OFNGDK62-BxPDtlWp.js.gz +0 -0
  279. package/dist/web/assets/index-Bqye0xU0.css +0 -2
  280. package/dist/web/assets/index-Bqye0xU0.css.br +0 -0
  281. package/dist/web/assets/index-Bqye0xU0.css.gz +0 -0
  282. package/dist/web/assets/index-v4sEBOkU.js +0 -4
  283. package/dist/web/assets/index-v4sEBOkU.js.br +0 -0
  284. package/dist/web/assets/index-v4sEBOkU.js.gz +0 -0
  285. package/dist/web/assets/info-BSMz7uRW.js.br +0 -0
  286. package/dist/web/assets/info-BSMz7uRW.js.gz +0 -0
  287. package/dist/web/assets/initial-deps-Bk3GSWTk.js +0 -1
  288. package/dist/web/assets/initial-deps-Bk3GSWTk.js.br +0 -0
  289. package/dist/web/assets/initial-deps-Bk3GSWTk.js.gz +0 -0
  290. package/dist/web/assets/initial-deps-BsEyuMB0.js.br +0 -0
  291. package/dist/web/assets/initial-deps-BsEyuMB0.js.gz +0 -0
  292. package/dist/web/assets/initial-deps-CA0YnOrW.js.br +0 -0
  293. package/dist/web/assets/initial-deps-CA0YnOrW.js.gz +0 -0
  294. package/dist/web/assets/initial-deps-CTprc_pY.js.br +0 -0
  295. package/dist/web/assets/initial-deps-DKh4Kqow.js.br +0 -0
  296. package/dist/web/assets/initial-deps-DKh4Kqow.js.gz +0 -0
  297. package/dist/web/assets/installed-skills-pane-BIymfpjl.js.br +0 -0
  298. package/dist/web/assets/installed-skills-pane-BIymfpjl.js.gz +0 -0
  299. package/dist/web/assets/lazy-message-response-CkQTXmyE.js +0 -2
  300. package/dist/web/assets/lazy-message-response-CkQTXmyE.js.br +0 -0
  301. package/dist/web/assets/lazy-message-response-CkQTXmyE.js.gz +0 -0
  302. package/dist/web/assets/mcp-management-pane-CTAt5eCP.js.br +0 -0
  303. package/dist/web/assets/mcp-management-pane-CTAt5eCP.js.gz +0 -0
  304. package/dist/web/assets/mermaid-GHXKKRXX-CYui0uZI.js +0 -1
  305. package/dist/web/assets/mermaid-GHXKKRXX-CYui0uZI.js.br +0 -0
  306. package/dist/web/assets/mermaid-GHXKKRXX-CYui0uZI.js.gz +0 -0
  307. package/dist/web/assets/message-response-BmWeJe7f.js.br +0 -0
  308. package/dist/web/assets/message-response-BmWeJe7f.js.gz +0 -0
  309. package/dist/web/assets/official-plugins-pane-vm-wO5X8.js.br +0 -0
  310. package/dist/web/assets/official-plugins-pane-vm-wO5X8.js.gz +0 -0
  311. package/dist/web/assets/paw-print-dDU9UzMl.js.br +0 -0
  312. package/dist/web/assets/paw-print-dDU9UzMl.js.gz +0 -0
  313. package/dist/web/assets/personalization-settings-panel-Cdt-GJKo.js.br +0 -0
  314. package/dist/web/assets/personalization-settings-panel-Cdt-GJKo.js.gz +0 -0
  315. package/dist/web/assets/project-file-popup-page-BLp3bOha.js.br +0 -0
  316. package/dist/web/assets/project-file-popup-page-BLp3bOha.js.gz +0 -0
  317. package/dist/web/assets/project-source-panel-CxH_R69O.js +0 -3
  318. package/dist/web/assets/project-source-panel-CxH_R69O.js.br +0 -0
  319. package/dist/web/assets/project-source-panel-CxH_R69O.js.gz +0 -0
  320. package/dist/web/assets/prompt-input-CFPRtHQa.js.br +0 -0
  321. package/dist/web/assets/prompt-input-CFPRtHQa.js.gz +0 -0
  322. package/dist/web/assets/prompt-input-controls-qBjai56L.js.br +0 -0
  323. package/dist/web/assets/prompt-input-controls-qBjai56L.js.gz +0 -0
  324. package/dist/web/assets/scheduled-task-date-time-picker-ChB1QMq4.js.br +0 -0
  325. package/dist/web/assets/scheduled-task-date-time-picker-ChB1QMq4.js.gz +0 -0
  326. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js.br +0 -0
  327. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js.gz +0 -0
  328. package/dist/web/assets/scheduled-task-schedule-C1OLCa3o.js.br +0 -0
  329. package/dist/web/assets/scheduled-task-schedule-C1OLCa3o.js.gz +0 -0
  330. package/dist/web/assets/scheduled-tasks-container-CoiL1t1E.js +0 -2
  331. package/dist/web/assets/scheduled-tasks-container-CoiL1t1E.js.br +0 -0
  332. package/dist/web/assets/scheduled-tasks-container-CoiL1t1E.js.gz +0 -0
  333. package/dist/web/assets/settings-personalization-C02xFFt3.js.br +0 -0
  334. package/dist/web/assets/settings-personalization-C02xFFt3.js.gz +0 -0
  335. package/dist/web/assets/sheet-7wHRYO_r.js.br +0 -0
  336. package/dist/web/assets/sheet-7wHRYO_r.js.gz +0 -0
  337. package/dist/web/assets/skills-market-container-DV3Z3dho.js.br +0 -0
  338. package/dist/web/assets/skills-market-container-DV3Z3dho.js.gz +0 -0
  339. package/dist/web/assets/sliders-horizontal-9U3YhJ-G.js.br +0 -0
  340. package/dist/web/assets/sliders-horizontal-9U3YhJ-G.js.gz +0 -0
  341. package/dist/web/assets/sparkles-R_aBU9Dh.js.br +0 -2
  342. package/dist/web/assets/sparkles-R_aBU9Dh.js.gz +0 -0
  343. package/dist/web/assets/third-party-marketplace-pane-DgdNcV-f.js.br +0 -0
  344. package/dist/web/assets/third-party-marketplace-pane-DgdNcV-f.js.gz +0 -0
  345. package/dist/web/assets/upload-B6cPQ82X.js.br +0 -0
  346. package/dist/web/assets/upload-B6cPQ82X.js.gz +0 -0
  347. package/dist/web/assets/workbench-composer-BuHnGjEu.js +0 -8
  348. package/dist/web/assets/workbench-composer-BuHnGjEu.js.br +0 -0
  349. package/dist/web/assets/workbench-composer-BuHnGjEu.js.gz +0 -0
  350. package/dist/web/assets/workbench-inspector-changes-DAUq5vRm.js +0 -2
  351. package/dist/web/assets/workbench-inspector-changes-DAUq5vRm.js.br +0 -0
  352. package/dist/web/assets/workbench-inspector-changes-DAUq5vRm.js.gz +0 -0
  353. package/dist/web/assets/workbench-pet-canvas-Bf6038yN.js.br +0 -0
  354. package/dist/web/assets/workbench-pet-canvas-Bf6038yN.js.gz +0 -0
  355. package/dist/web/assets/workbench-shell-C1Vo7pWC.js +0 -8
  356. package/dist/web/assets/workbench-shell-C1Vo7pWC.js.br +0 -0
  357. package/dist/web/assets/workbench-shell-C1Vo7pWC.js.gz +0 -0
  358. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~egzauog4-DAfditVv.js → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~m6x4vffh-DAfditVv.js} +0 -0
  359. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~egzauog4-DAfditVv.js.br → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~m6x4vffh-DAfditVv.js.br} +0 -0
  360. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~egzauog4-DAfditVv.js.gz → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~m6x4vffh-DAfditVv.js.gz} +0 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.22.1] - 2026-09-16
8
+
9
+ ### 修复
10
+
11
+ - 修复内置更新和全局安装复用过期 npm 元数据、可能无法及时发现新版本的问题。
12
+
13
+ ## [0.22.0] - 2026-09-16
14
+
15
+ ### 新增
16
+
17
+ - 添加任务、历史消息和项目文件的全局搜索,支持结果分页、消息定位与文件预览。
18
+
19
+ ### 修复
20
+
21
+ - 修复 Linux 系统级全局安装因目录权限不足而无法使用内置更新的问题。
22
+
7
23
  ## [0.21.1] - 2026-09-15
8
24
 
9
25
  ### 新增
package/README.md CHANGED
@@ -43,6 +43,7 @@
43
43
  - Choose the model, reasoning effort, Fast mode, approval behavior, and file access level for each task
44
44
  - Manage installed Skills, official Plugins, MCP servers, and compatible third-party Skills from ClawHub in one extension center
45
45
  - Organize ordered multi-root projects, archive project or temporary tasks, and permanently delete tasks when needed
46
+ - Search tasks, conversation history, and project files globally, then jump to a matching message or preview a file
46
47
  - Inspect, preview, rename, and delete project files; review diffs; manage branches and worktrees; and commit or push changes
47
48
  - Fork a task from an AI response and continue it in a new Git worktree
48
49
  - Add animated workspace pets with separate task activity bubbles and custom PNG or WebP sprite manifests
@@ -73,11 +74,11 @@ On first launch, sign in with ChatGPT or configure an OpenAI-compatible service
73
74
  For regular use, install Codexly globally:
74
75
 
75
76
  ```bash
76
- npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com --prefer-offline || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org --prefer-offline
77
+ npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org
77
78
  codexly
78
79
  ```
79
80
 
80
- The installation command tries the China mirror first, falls back to the official registry on failure, and reuses the npm cache. `||` works in Bash, Zsh, cmd, and PowerShell 7+. In Windows PowerShell 5.1, run the command to the right of `||` separately if the first command fails.
81
+ The installation command tries the China mirror first, falls back to the official registry on failure, reuses the npm cache, and revalidates stale package metadata. `||` works in Bash, Zsh, cmd, and PowerShell 7+. In Windows PowerShell 5.1, run the command to the right of `||` separately if the first command fails.
81
82
 
82
83
  ## Usage
83
84
 
@@ -113,9 +114,11 @@ Run `codexly doctor` when startup, Codex, or local data checks fail. Run `codexl
113
114
  Interactive startup and **Settings > About** check for new releases. Built-in updates try the China mirror first for version checks, package downloads, and dependency installation, falling back to the official registry on failure and reusing your npm cache. New releases may appear later while the mirror synchronizes. A global installation can also be updated with:
114
115
 
115
116
  ```bash
116
- npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com --prefer-offline || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org --prefer-offline
117
+ npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org
117
118
  ```
118
119
 
120
+ If an older Linux release was installed into a system directory with `sudo npm install --global`, manually run the command above with `sudo` once to reach a release that supports elevated updates. Later built-in updates request `sudo` access when needed.
121
+
119
122
  ## Help
120
123
 
121
124
  - [Report an issue](https://github.com/BryanHoo/Codexly/issues)
package/README.zh-CN.md CHANGED
@@ -13,6 +13,7 @@ Codexly 是一个在浏览器中使用 Codex 的本地 AI 编程工作台。它
13
13
  - 为每个任务选择模型、思考量、快速模式、审批方式和文件访问范围
14
14
  - 在扩展中心统一管理已安装 Skills、官方 Plugins、MCP Servers,以及来自 ClawHub 的兼容第三方 Skills
15
15
  - 组织有序的多根项目、归档项目或临时任务,并按需永久删除任务
16
+ - 全局搜索任务、历史消息和项目文件,并定位匹配消息或预览文件
16
17
  - 查看、预览、重命名和删除项目文件,审查差异,管理分支与 worktree,并提交或推送变更
17
18
  - 从 AI 回复处分叉任务,在新的 Git worktree 中继续工作
18
19
  - 添加工作台宠物动画,用独立气泡区分任务活动,并支持自定义 PNG 或 WebP 精灵图清单
@@ -43,11 +44,11 @@ Codexly 会自动打开浏览器。若未打开,请访问终端输出的地址
43
44
  经常使用时可以全局安装:
44
45
 
45
46
  ```bash
46
- npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com --prefer-offline || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org --prefer-offline
47
+ npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org
47
48
  codexly
48
49
  ```
49
50
 
50
- 安装命令优先使用国内镜像,失败后回退官方源,并复用 npm 缓存。`||` 适用于 Bash、Zsh、cmd 和 PowerShell 7+;Windows PowerShell 5.1 请在第一条命令失败后单独执行 `||` 右侧的命令。
51
+ 安装命令优先使用国内镜像,失败后回退官方源,复用 npm 缓存并重新校验过期的包元数据。`||` 适用于 Bash、Zsh、cmd 和 PowerShell 7+;Windows PowerShell 5.1 请在第一条命令失败后单独执行 `||` 右侧的命令。
51
52
 
52
53
  ## 使用方式
53
54
 
@@ -83,9 +84,11 @@ codexly start --lan
83
84
  交互式启动和“设置 > 关于”会检查新版本。内置更新的版本查询、包下载和依赖安装优先使用国内镜像,失败后回退官方源;下载和安装复用用户的 npm 缓存。镜像同步期间可能稍晚显示新版本。全局安装也可以通过以下命令更新:
84
85
 
85
86
  ```bash
86
- npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com --prefer-offline || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org --prefer-offline
87
+ npm install --global @bryanhu/codexly@latest --registry=https://registry.npmmirror.com || npm install --global @bryanhu/codexly@latest --registry=https://registry.npmjs.org
87
88
  ```
88
89
 
90
+ 如果 Linux 上的旧版本通过 `sudo npm install --global` 安装到系统目录,首次升级到支持提权更新的版本时需要手动执行一次上述命令并在前面加上 `sudo`。后续内置更新会在需要时请求 `sudo` 权限。
91
+
89
92
  ## 获取帮助
90
93
 
91
94
  - [问题反馈](https://github.com/BryanHoo/Codexly/issues)
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from 'node:module';
2
- import { value_exports } from './chunk-ZUECHB6L.js';
3
- import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-AIACWU7L.js';
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';
4
4
  import { WorkbenchPetProviderError, listTaskCatalog, PendingRequestResolutionError, deleteArchivedTasks, queryCompletedTasks, CompletedTasksQueryError, submitTask, TaskSubmissionError, collectQuestionGroups, formatQuestionAnswers, ProjectTodoError, saveProjectTodo } from './chunk-B2673ODM.js';
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, 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-X5JZ3VOF.js';
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';
@@ -70155,6 +70155,69 @@ var registerTaskRoutes = (app, context, done) => {
70155
70155
  done();
70156
70156
  };
70157
70157
 
70158
+ // packages/server/src/routes/search-routes.ts
70159
+ var registerSearchRoutes = (app, context, done) => {
70160
+ const { getProjectContext, projectRepository, provider } = context;
70161
+ app.get(
70162
+ "/v1/search/tasks",
70163
+ {
70164
+ schema: {
70165
+ querystring: TaskSearchQuerySchema,
70166
+ response: {
70167
+ 200: TaskSearchPageSchema,
70168
+ 503: ErrorResponseSchema
70169
+ }
70170
+ }
70171
+ },
70172
+ async (request2, reply) => {
70173
+ if (provider.search === void 0) {
70174
+ return reply.code(503).send({
70175
+ code: "GLOBAL_SEARCH_UNAVAILABLE",
70176
+ message: "Global search is unavailable"
70177
+ });
70178
+ }
70179
+ const projects = await projectRepository.list();
70180
+ const scopes = [
70181
+ { id: TEMPORARY_TASK_SCOPE_ID, kind: "temporary" },
70182
+ ...projects.map((project) => ({ id: project.id, kind: "project" }))
70183
+ ];
70184
+ return provider.search.searchTasks(request2.query, scopes);
70185
+ }
70186
+ );
70187
+ app.get(
70188
+ "/v1/projects/:projectId/tasks/:taskId/search-occurrences",
70189
+ {
70190
+ schema: {
70191
+ params: ProjectTaskParamsSchema,
70192
+ querystring: SearchOccurrencesQuerySchema,
70193
+ response: {
70194
+ 200: SearchOccurrencesPageSchema,
70195
+ 404: ErrorResponseSchema,
70196
+ 503: ErrorResponseSchema
70197
+ }
70198
+ }
70199
+ },
70200
+ async (request2, reply) => {
70201
+ const project = await getProjectContext(request2.params.projectId);
70202
+ if (project === void 0) {
70203
+ return reply.code(404).send({ code: "PROJECT_NOT_FOUND", message: "Project not found" });
70204
+ }
70205
+ if (provider.search === void 0) {
70206
+ return reply.code(503).send({
70207
+ code: "GLOBAL_SEARCH_UNAVAILABLE",
70208
+ message: "Global search is unavailable"
70209
+ });
70210
+ }
70211
+ return provider.search.searchTaskOccurrences(
70212
+ request2.params.taskId,
70213
+ request2.query,
70214
+ project.scope
70215
+ );
70216
+ }
70217
+ );
70218
+ done();
70219
+ };
70220
+
70158
70221
  // packages/server/src/routes/turn-routes.ts
70159
70222
  var registerTurnRoutes = (app, context, done) => {
70160
70223
  const {
@@ -73178,6 +73241,7 @@ async function createCodexlyServer(options) {
73178
73241
  await app.register(registerSkillMarketRoutes, routeContext);
73179
73242
  await app.register(registerScheduledTaskRoutes, routeContext);
73180
73243
  await app.register(registerTaskRoutes, routeContext);
73244
+ await app.register(registerSearchRoutes, routeContext);
73181
73245
  await app.register(registerTurnRoutes, routeContext);
73182
73246
  await app.register(registerSubmissionRoutes, routeContext);
73183
73247
  await app.register(registerAsyncQuestionRoutes, routeContext);
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'node:module';
2
- import { IsArray, IsDate, IsTypedArray, IsMap, IsSet, IsObject, IsValueType, TypeBoxError, Object as Object$1, Unknown, String, Literal, Union, IsBoolean, IsBigInt, IsNull, IsNumber, IsString, IsSymbol, IsUint8Array, IsUndefined, Kind, type_exports, IsStandardObject, TypeSystemPolicy, format_exports, IsPromise, IsIterator, KeyOfPattern, IsSchema, IsInteger, IsFunction, IsAsyncIterator, Never, HasPropertyKey, IsTemplateLiteralFinite, TemplateLiteralGenerate, IsKind, KeyOfPropertyKeys, IsTransform, TransformKind, IsUndefined2, IndexFromPropertyKeys } from './chunk-X5JZ3VOF.js';
2
+ import { IsArray, IsDate, IsTypedArray, IsMap, IsSet, IsObject, IsValueType, TypeBoxError, Object as Object$1, Unknown, String, Literal, Union, IsBoolean, IsBigInt, IsNull, IsNumber, IsString, IsSymbol, IsUint8Array, IsUndefined, Kind, type_exports, IsStandardObject, TypeSystemPolicy, format_exports, IsPromise, IsIterator, KeyOfPattern, IsSchema, IsInteger, IsFunction, IsAsyncIterator, Never, HasPropertyKey, IsTemplateLiteralFinite, TemplateLiteralGenerate, IsKind, KeyOfPropertyKeys, IsTransform, TransformKind, IsUndefined2, IndexFromPropertyKeys } from './chunk-ZXTTTT25.js';
3
3
  import { __export } from './chunk-K6J42667.js';
4
4
 
5
5
  createRequire(import.meta.url);
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { WorkbenchPetProviderError, PendingRequestResolutionError } from './chunk-B2673ODM.js';
3
- import { TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_HISTORY_IMAGE_TOTAL_BYTES, isAgentFastModeAvailable, MAX_REALTIME_FILE_CHANGES, MAX_REALTIME_DIFF_BYTES, stripLeadingAgentSkillReferences, MAX_AGENT_HISTORY_IMAGES, MAX_AGENT_TEXT_BYTES } from './chunk-X5JZ3VOF.js';
3
+ import { TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_HISTORY_IMAGE_TOTAL_BYTES, isAgentFastModeAvailable, MAX_REALTIME_FILE_CHANGES, MAX_REALTIME_DIFF_BYTES, stripLeadingAgentSkillReferences, MAX_AGENT_HISTORY_IMAGES, MAX_AGENT_TEXT_BYTES } from './chunk-ZXTTTT25.js';
4
4
  import { __commonJS, __require, __toESM } from './chunk-K6J42667.js';
5
5
  import { execFile, spawn } from 'child_process';
6
6
  import { constants, mkdtempSync, rmSync, createReadStream, mkdirSync, unlinkSync, renameSync, writeFileSync, openSync, readSync, closeSync, statSync } from 'fs';
@@ -12824,6 +12824,138 @@ var CodexGitMetadataWatchService = class {
12824
12824
  }
12825
12825
  };
12826
12826
 
12827
+ // packages/provider-codex/src/global-search.ts
12828
+ var SEARCH_PAGE_SIZE = 30;
12829
+ var HISTORY_OCCURRENCE_CONCURRENCY = 4;
12830
+ function validateQuery(value) {
12831
+ const query = value.trim();
12832
+ if (query.length === 0 || Array.from(query).length > 1024) {
12833
+ throw new CodexProtocolMappingError("Global search query is invalid");
12834
+ }
12835
+ return query;
12836
+ }
12837
+ function parsePage(value, label) {
12838
+ const page = expectRecord(value, label);
12839
+ if (!Array.isArray(page["data"])) {
12840
+ throw new CodexProtocolMappingError(`${label} data must be an array`);
12841
+ }
12842
+ const nextCursor = page["nextCursor"];
12843
+ if (nextCursor !== null && typeof nextCursor !== "string") {
12844
+ throw new CodexProtocolMappingError(`${label} nextCursor must be a string or null`);
12845
+ }
12846
+ return { data: page["data"], nextCursor };
12847
+ }
12848
+ function parseOccurrence(value) {
12849
+ const occurrence = expectRecord(value, "thread/searchOccurrences item");
12850
+ const range = expectRecord(
12851
+ occurrence["snippetMatchRange"],
12852
+ "thread/searchOccurrences snippetMatchRange"
12853
+ );
12854
+ const start = range["start"];
12855
+ const end = range["end"];
12856
+ if (!Number.isInteger(start) || !Number.isInteger(end) || Number(start) < 0 || Number(end) < 0) {
12857
+ throw new CodexProtocolMappingError("thread/searchOccurrences range must be non-negative");
12858
+ }
12859
+ const nativeTurnCursor = expectString(
12860
+ occurrence["turnCursor"],
12861
+ "thread/searchOccurrences turnCursor"
12862
+ );
12863
+ const turnCursor = encodeTaskTurnCursor(nativeTurnCursor, void 0);
12864
+ if (turnCursor === null) {
12865
+ throw new CodexProtocolMappingError("thread/searchOccurrences turnCursor must not be null");
12866
+ }
12867
+ return {
12868
+ itemId: expectString(occurrence["itemId"], "thread/searchOccurrences itemId"),
12869
+ snippet: expectString(occurrence["snippet"], "thread/searchOccurrences snippet"),
12870
+ snippetMatchRange: { end: Number(end), start: Number(start) },
12871
+ turnCursor,
12872
+ turnId: expectString(occurrence["turnId"], "thread/searchOccurrences turnId")
12873
+ };
12874
+ }
12875
+ function scopeForThread(thread, scopes) {
12876
+ return scopes.find((scope) => isProjectThread(thread, scope));
12877
+ }
12878
+ async function mapWithConcurrency(values, concurrency, map) {
12879
+ const results = new Array(values.length);
12880
+ const entries = values.entries();
12881
+ await Promise.all(
12882
+ Array.from({ length: Math.min(concurrency, values.length) }, async () => {
12883
+ let entry = entries.next();
12884
+ while (!entry.done) {
12885
+ const [index, value] = entry.value;
12886
+ results[index] = await map(value);
12887
+ entry = entries.next();
12888
+ }
12889
+ })
12890
+ );
12891
+ return results;
12892
+ }
12893
+ var CodexGlobalSearchService = class {
12894
+ constructor(client) {
12895
+ this.client = client;
12896
+ }
12897
+ client;
12898
+ async searchTasks(input, scopes) {
12899
+ const query = validateQuery(input.query);
12900
+ const params = {
12901
+ archived: input.archived,
12902
+ ...input.cursor === void 0 ? {} : { cursor: input.cursor },
12903
+ limit: SEARCH_PAGE_SIZE,
12904
+ searchTerm: query,
12905
+ sortDirection: "desc",
12906
+ sortKey: "recency_at"
12907
+ };
12908
+ const page = parsePage(
12909
+ await this.client.request(
12910
+ input.kind === "tasks" ? "thread/list" : "thread/search",
12911
+ input.kind === "tasks" ? { ...params, modelProviders: [] } : params
12912
+ ),
12913
+ input.kind === "tasks" ? "thread/list response" : "thread/search response"
12914
+ );
12915
+ const mapped = await mapWithConcurrency(
12916
+ page.data.slice(0, SEARCH_PAGE_SIZE),
12917
+ input.kind === "history" ? HISTORY_OCCURRENCE_CONCURRENCY : SEARCH_PAGE_SIZE,
12918
+ async (value) => {
12919
+ const result = input.kind === "tasks" ? { thread: value } : expectRecord(value, "thread/search item");
12920
+ const thread = expectRecord(result["thread"], "global search thread");
12921
+ const scope = scopeForThread(thread, scopes);
12922
+ if (scope === void 0) return void 0;
12923
+ const task = await mapAgentTask(thread, scope);
12924
+ if (input.kind === "tasks") return { snippet: "", task };
12925
+ const occurrences = await this.requestOccurrences(task.id, query, void 0, 1);
12926
+ const occurrence = occurrences.data[0];
12927
+ if (occurrence === void 0) return void 0;
12928
+ return { occurrence, snippet: occurrence.snippet, task };
12929
+ }
12930
+ );
12931
+ return { data: mapped.filter((item) => item !== void 0), nextCursor: page.nextCursor };
12932
+ }
12933
+ async searchTaskOccurrences(taskId, input, scope) {
12934
+ const query = validateQuery(input.query);
12935
+ const response = expectRecord(
12936
+ await this.client.request("thread/read", { includeTurns: false, threadId: taskId }),
12937
+ "thread/read response"
12938
+ );
12939
+ const thread = expectRecord(response["thread"], "thread/read thread");
12940
+ if (!isProjectThread(thread, scope)) {
12941
+ throw new CodexProtocolMappingError("Search task does not belong to the requested project");
12942
+ }
12943
+ return this.requestOccurrences(taskId, query, input.cursor, SEARCH_PAGE_SIZE);
12944
+ }
12945
+ async requestOccurrences(taskId, query, cursor, limit) {
12946
+ const page = parsePage(
12947
+ await this.client.request("thread/searchOccurrences", {
12948
+ ...cursor === void 0 ? {} : { cursor },
12949
+ limit,
12950
+ searchTerm: query,
12951
+ threadId: taskId
12952
+ }),
12953
+ "thread/searchOccurrences response"
12954
+ );
12955
+ return { data: page.data.map(parseOccurrence), nextCursor: page.nextCursor };
12956
+ }
12957
+ };
12958
+
12827
12959
  // packages/provider-codex/src/skill-market-provider.ts
12828
12960
  var OFFICIAL_MARKETPLACES = /* @__PURE__ */ new Set([
12829
12961
  "openai-curated",
@@ -13062,6 +13194,7 @@ async function setCodexMcpServerEnabled(client, name, enabled) {
13062
13194
  var CodexRuntimeProvider = class {
13063
13195
  personalization;
13064
13196
  fileSearch;
13197
+ search;
13065
13198
  #client;
13066
13199
  #taskTitles;
13067
13200
  #logger;
@@ -13090,6 +13223,7 @@ var CodexRuntimeProvider = class {
13090
13223
  this.#logger = logger;
13091
13224
  this.#providerConnection = new CodexProviderConnectionService(client, options);
13092
13225
  this.fileSearch = new CodexFuzzyFileSearchService(client);
13226
+ this.search = new CodexGlobalSearchService(client);
13093
13227
  this.#gitMetadataWatch = new CodexGitMetadataWatchService(client, {
13094
13228
  logger,
13095
13229
  onChanged: (projectId, rootPath) => {