@bryanhu/codexly 0.17.0 → 0.18.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 (247) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -2
  3. package/README.zh-CN.md +1 -1
  4. package/dist/{chunk-I74DBIGI.js → chunk-2O7SN37L.js} +1 -1
  5. package/dist/{chunk-PJNYCTFC.js → chunk-3PU3WPOK.js} +234 -59
  6. package/dist/{chunk-P3ZQ3QOJ.js → chunk-M6GWGUSX.js} +105 -2
  7. package/dist/{chunk-5VUCBET3.js → chunk-NROPHBJ7.js} +457 -85
  8. package/dist/cli.js +6 -5
  9. package/dist/client/index.js +136 -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 +299 -125
  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-BagNBAoe.js +1 -0
  17. package/dist/web/assets/agent-settings-panel-BagNBAoe.js.br +0 -0
  18. package/dist/web/assets/agent-settings-panel-BagNBAoe.js.gz +0 -0
  19. package/dist/web/assets/approval-mode-CKJY6q52.js +1 -0
  20. package/dist/web/assets/approval-mode-CKJY6q52.js.br +0 -0
  21. package/dist/web/assets/approval-mode-CKJY6q52.js.gz +0 -0
  22. package/dist/web/assets/background-image-picker-CjpS0dIk.js +1 -0
  23. package/dist/web/assets/background-image-picker-CjpS0dIk.js.br +0 -0
  24. package/dist/web/assets/background-image-picker-CjpS0dIk.js.gz +0 -0
  25. package/dist/web/assets/bing-wallpaper-queries-B-1L0OYP.js +1 -0
  26. package/dist/web/assets/bing-wallpaper-queries-B-1L0OYP.js.br +0 -0
  27. package/dist/web/assets/bing-wallpaper-queries-B-1L0OYP.js.gz +0 -0
  28. package/dist/web/assets/bot-nsMcDaYk.js +1 -0
  29. package/dist/web/assets/bot-nsMcDaYk.js.br +0 -0
  30. package/dist/web/assets/bot-nsMcDaYk.js.gz +0 -0
  31. package/dist/web/assets/{button-group-DxqOhlVt.js → button-group-DIxa2Erp.js} +1 -1
  32. package/dist/web/assets/button-group-DIxa2Erp.js.br +0 -0
  33. package/dist/web/assets/button-group-DIxa2Erp.js.gz +0 -0
  34. package/dist/web/assets/commit-settings-panel-Co1u5Lzc.js +1 -0
  35. package/dist/web/assets/commit-settings-panel-Co1u5Lzc.js.br +0 -0
  36. package/dist/web/assets/commit-settings-panel-Co1u5Lzc.js.gz +0 -0
  37. package/dist/web/assets/{context-menu-D6mhhPGo.js → context-menu-HaQeWpEd.js} +1 -1
  38. package/dist/web/assets/context-menu-HaQeWpEd.js.br +0 -0
  39. package/dist/web/assets/context-menu-HaQeWpEd.js.gz +0 -0
  40. package/dist/web/assets/{dist-Czw-hil0.js → dist-ClwyqJQu.js} +1 -1
  41. package/dist/web/assets/dist-ClwyqJQu.js.br +0 -0
  42. package/dist/web/assets/dist-ClwyqJQu.js.gz +0 -0
  43. package/dist/web/assets/file-review-dialog-B-0RkLZR.js +2 -0
  44. package/dist/web/assets/file-review-dialog-B-0RkLZR.js.br +0 -0
  45. package/dist/web/assets/file-review-dialog-B-0RkLZR.js.gz +0 -0
  46. package/dist/web/assets/git-fork-D0BPqh18.js +1 -0
  47. package/dist/web/assets/git-fork-D0BPqh18.js.br +2 -0
  48. package/dist/web/assets/git-fork-D0BPqh18.js.gz +0 -0
  49. package/dist/web/assets/git-history-panel-QiNKxo_n.js +2 -0
  50. package/dist/web/assets/git-history-panel-QiNKxo_n.js.br +0 -0
  51. package/dist/web/assets/git-history-panel-QiNKxo_n.js.gz +0 -0
  52. package/dist/web/assets/global-settings-about-DWXfIOas.js +1 -0
  53. package/dist/web/assets/global-settings-about-DWXfIOas.js.br +0 -0
  54. package/dist/web/assets/global-settings-about-DWXfIOas.js.gz +0 -0
  55. package/dist/web/assets/global-settings-fields-CmEy5pOE.js +1 -0
  56. package/dist/web/assets/global-settings-fields-CmEy5pOE.js.br +0 -0
  57. package/dist/web/assets/global-settings-fields-CmEy5pOE.js.gz +0 -0
  58. package/dist/web/assets/global-settings-model-B49sZloO.js +1 -0
  59. package/dist/web/assets/global-settings-model-B49sZloO.js.br +0 -0
  60. package/dist/web/assets/global-settings-model-B49sZloO.js.gz +0 -0
  61. package/dist/web/assets/global-settings-page-BqzYrF2U.css +1 -0
  62. package/dist/web/assets/global-settings-page-BqzYrF2U.css.br +0 -0
  63. package/dist/web/assets/global-settings-page-BqzYrF2U.css.gz +0 -0
  64. package/dist/web/assets/global-settings-page-DKXRkWmd.js +2 -0
  65. package/dist/web/assets/global-settings-page-DKXRkWmd.js.br +0 -0
  66. package/dist/web/assets/global-settings-page-DKXRkWmd.js.gz +0 -0
  67. package/dist/web/assets/global-settings-pets-8bzx8OFf.css +1 -0
  68. package/dist/web/assets/global-settings-pets-8bzx8OFf.css.br +0 -0
  69. package/dist/web/assets/global-settings-pets-8bzx8OFf.css.gz +0 -0
  70. package/dist/web/assets/global-settings-pets-DP2AxhJW.js +1 -0
  71. package/dist/web/assets/global-settings-pets-DP2AxhJW.js.br +0 -0
  72. package/dist/web/assets/global-settings-pets-DP2AxhJW.js.gz +0 -0
  73. package/dist/web/assets/index-BGtID8VJ.css +2 -0
  74. package/dist/web/assets/index-BGtID8VJ.css.br +0 -0
  75. package/dist/web/assets/index-BGtID8VJ.css.gz +0 -0
  76. package/dist/web/assets/index-mkWzMsjN.js +4 -0
  77. package/dist/web/assets/index-mkWzMsjN.js.br +0 -0
  78. package/dist/web/assets/index-mkWzMsjN.js.gz +0 -0
  79. package/dist/web/assets/initial-deps-CDAJF_GU.js +1 -0
  80. package/dist/web/assets/initial-deps-CDAJF_GU.js.br +0 -0
  81. package/dist/web/assets/initial-deps-CDAJF_GU.js.gz +0 -0
  82. package/dist/web/assets/{initial-deps-CQxWMuPh.js → initial-deps-DeVnmDFC.js} +1 -1
  83. package/dist/web/assets/initial-deps-DeVnmDFC.js.br +0 -0
  84. package/dist/web/assets/initial-deps-DeVnmDFC.js.gz +0 -0
  85. package/dist/web/assets/{installed-skills-pane-BfNddwjn.js → installed-skills-pane-CR2LbYh9.js} +1 -1
  86. package/dist/web/assets/installed-skills-pane-CR2LbYh9.js.br +0 -0
  87. package/dist/web/assets/installed-skills-pane-CR2LbYh9.js.gz +0 -0
  88. package/dist/web/assets/lazy-message-response-3Fr_a8du.js +2 -0
  89. package/dist/web/assets/lazy-message-response-3Fr_a8du.js.br +0 -0
  90. package/dist/web/assets/lazy-message-response-3Fr_a8du.js.gz +0 -0
  91. package/dist/web/assets/{mcp-management-pane-Ch_kUuam.js → mcp-management-pane-DEuUn7Y6.js} +1 -1
  92. package/dist/web/assets/mcp-management-pane-DEuUn7Y6.js.br +0 -0
  93. package/dist/web/assets/mcp-management-pane-DEuUn7Y6.js.gz +0 -0
  94. package/dist/web/assets/{message-response-KFxzclWt.js → message-response-D3YFwFiE.js} +1 -1
  95. package/dist/web/assets/message-response-D3YFwFiE.js.br +0 -0
  96. package/dist/web/assets/message-response-D3YFwFiE.js.gz +0 -0
  97. package/dist/web/assets/{official-plugins-pane-CFbYqeRf.js → official-plugins-pane-k8o9gVMR.js} +1 -1
  98. package/dist/web/assets/official-plugins-pane-k8o9gVMR.js.br +0 -0
  99. package/dist/web/assets/official-plugins-pane-k8o9gVMR.js.gz +0 -0
  100. package/dist/web/assets/paw-print-9SfXKttW.js +1 -0
  101. package/dist/web/assets/paw-print-9SfXKttW.js.br +0 -0
  102. package/dist/web/assets/paw-print-9SfXKttW.js.gz +0 -0
  103. package/dist/web/assets/personalization-settings-panel-Cl4_Y5Uk.js +1 -0
  104. package/dist/web/assets/personalization-settings-panel-Cl4_Y5Uk.js.br +0 -0
  105. package/dist/web/assets/personalization-settings-panel-Cl4_Y5Uk.js.gz +0 -0
  106. package/dist/web/assets/{project-file-popup-page-9jdg_OXD.js → project-file-popup-page-0uRpUcFH.js} +1 -1
  107. package/dist/web/assets/project-file-popup-page-0uRpUcFH.js.br +0 -0
  108. package/dist/web/assets/project-file-popup-page-0uRpUcFH.js.gz +0 -0
  109. package/dist/web/assets/{project-source-panel-B-xuo6G6.js → project-source-panel-CEegjNVo.js} +2 -2
  110. package/dist/web/assets/project-source-panel-CEegjNVo.js.br +0 -0
  111. package/dist/web/assets/project-source-panel-CEegjNVo.js.gz +0 -0
  112. package/dist/web/assets/prompt-input-Bs_e51Ey.js +1 -0
  113. package/dist/web/assets/prompt-input-Bs_e51Ey.js.br +0 -0
  114. package/dist/web/assets/prompt-input-Bs_e51Ey.js.gz +0 -0
  115. package/dist/web/assets/{prompt-input-controls-CuE9VrWA.js → prompt-input-controls-DMqyvYVY.js} +1 -1
  116. package/dist/web/assets/prompt-input-controls-DMqyvYVY.js.br +0 -0
  117. package/dist/web/assets/prompt-input-controls-DMqyvYVY.js.gz +0 -0
  118. package/dist/web/assets/scheduled-task-date-time-picker-CHc9a7G1.js +1 -0
  119. package/dist/web/assets/scheduled-task-date-time-picker-CHc9a7G1.js.br +0 -0
  120. package/dist/web/assets/scheduled-task-date-time-picker-CHc9a7G1.js.gz +0 -0
  121. package/dist/web/assets/{scheduled-task-floating-ui~scheduled-task-date-time-picker-BischM2-.js → scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js} +1 -1
  122. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js.br +0 -0
  123. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js.gz +0 -0
  124. package/dist/web/assets/scheduled-task-schedule-2Ugh5sqp.js +1 -0
  125. package/dist/web/assets/scheduled-task-schedule-2Ugh5sqp.js.br +0 -0
  126. package/dist/web/assets/scheduled-task-schedule-2Ugh5sqp.js.gz +0 -0
  127. package/dist/web/assets/scheduled-tasks-container-CVGTy7-W.css +1 -0
  128. package/dist/web/assets/scheduled-tasks-container-CVGTy7-W.css.br +0 -0
  129. package/dist/web/assets/scheduled-tasks-container-CVGTy7-W.css.gz +0 -0
  130. package/dist/web/assets/scheduled-tasks-container-Ddieo85Q.js +2 -0
  131. package/dist/web/assets/scheduled-tasks-container-Ddieo85Q.js.br +0 -0
  132. package/dist/web/assets/scheduled-tasks-container-Ddieo85Q.js.gz +0 -0
  133. package/dist/web/assets/settings-personalization-b55VcvKr.js +1 -0
  134. package/dist/web/assets/settings-personalization-b55VcvKr.js.br +0 -0
  135. package/dist/web/assets/settings-personalization-b55VcvKr.js.gz +0 -0
  136. package/dist/web/assets/{sheet-DTJIZQHt.js → sheet-DbEBBgCs.js} +1 -1
  137. package/dist/web/assets/sheet-DbEBBgCs.js.br +0 -0
  138. package/dist/web/assets/sheet-DbEBBgCs.js.gz +0 -0
  139. package/dist/web/assets/{skills-market-container-8VwHWKJN.js → skills-market-container-BwT-U8XF.js} +2 -2
  140. package/dist/web/assets/skills-market-container-BwT-U8XF.js.br +0 -0
  141. package/dist/web/assets/skills-market-container-BwT-U8XF.js.gz +0 -0
  142. package/dist/web/assets/sliders-horizontal-DfoeSLtp.js +1 -0
  143. package/dist/web/assets/sliders-horizontal-DfoeSLtp.js.br +0 -0
  144. package/dist/web/assets/sliders-horizontal-DfoeSLtp.js.gz +0 -0
  145. package/dist/web/assets/{third-party-marketplace-pane-BtZYBzru.js → third-party-marketplace-pane-Cva9dfRn.js} +1 -1
  146. package/dist/web/assets/third-party-marketplace-pane-Cva9dfRn.js.br +0 -0
  147. package/dist/web/assets/third-party-marketplace-pane-Cva9dfRn.js.gz +0 -0
  148. package/dist/web/assets/workbench-composer-BxYlmKUq.js +10 -0
  149. package/dist/web/assets/workbench-composer-BxYlmKUq.js.br +0 -0
  150. package/dist/web/assets/workbench-composer-BxYlmKUq.js.gz +0 -0
  151. package/dist/web/assets/workbench-inspector-changes-DFZ_PDdt.js +2 -0
  152. package/dist/web/assets/workbench-inspector-changes-DFZ_PDdt.js.br +0 -0
  153. package/dist/web/assets/workbench-inspector-changes-DFZ_PDdt.js.gz +0 -0
  154. package/dist/web/assets/workbench-pet-canvas-DwkSGxpw.js +1 -0
  155. package/dist/web/assets/workbench-pet-canvas-DwkSGxpw.js.br +0 -0
  156. package/dist/web/assets/workbench-pet-canvas-DwkSGxpw.js.gz +0 -0
  157. package/dist/web/assets/workbench-shell-CnjG23lI.js +8 -0
  158. package/dist/web/assets/workbench-shell-CnjG23lI.js.br +0 -0
  159. package/dist/web/assets/workbench-shell-CnjG23lI.js.gz +0 -0
  160. package/dist/web/index.html +5 -5
  161. package/dist/web/index.html.br +0 -0
  162. package/dist/web/index.html.gz +0 -0
  163. package/package.json +2 -2
  164. package/dist/web/assets/button-group-DxqOhlVt.js.br +0 -0
  165. package/dist/web/assets/button-group-DxqOhlVt.js.gz +0 -0
  166. package/dist/web/assets/context-menu-D6mhhPGo.js.br +0 -0
  167. package/dist/web/assets/context-menu-D6mhhPGo.js.gz +0 -0
  168. package/dist/web/assets/dist-Czw-hil0.js.br +0 -0
  169. package/dist/web/assets/dist-Czw-hil0.js.gz +0 -0
  170. package/dist/web/assets/file-review-dialog-CX8yGcaF.js +0 -2
  171. package/dist/web/assets/file-review-dialog-CX8yGcaF.js.br +0 -0
  172. package/dist/web/assets/file-review-dialog-CX8yGcaF.js.gz +0 -0
  173. package/dist/web/assets/git-commit-horizontal-CV-KjCHw.js +0 -1
  174. package/dist/web/assets/git-commit-horizontal-CV-KjCHw.js.br +0 -0
  175. package/dist/web/assets/git-commit-horizontal-CV-KjCHw.js.gz +0 -0
  176. package/dist/web/assets/git-history-panel-ChKO0MmG.js +0 -2
  177. package/dist/web/assets/git-history-panel-ChKO0MmG.js.br +0 -0
  178. package/dist/web/assets/git-history-panel-ChKO0MmG.js.gz +0 -0
  179. package/dist/web/assets/global-settings-dialog-Dmjldruk.js +0 -1
  180. package/dist/web/assets/global-settings-dialog-Dmjldruk.js.br +0 -0
  181. package/dist/web/assets/global-settings-dialog-Dmjldruk.js.gz +0 -0
  182. package/dist/web/assets/index-C1q8rvrB.css +0 -2
  183. package/dist/web/assets/index-C1q8rvrB.css.br +0 -0
  184. package/dist/web/assets/index-C1q8rvrB.css.gz +0 -0
  185. package/dist/web/assets/index-Dc0FOD_M.js +0 -4
  186. package/dist/web/assets/index-Dc0FOD_M.js.br +0 -0
  187. package/dist/web/assets/index-Dc0FOD_M.js.gz +0 -0
  188. package/dist/web/assets/initial-deps-CQxWMuPh.js.br +0 -0
  189. package/dist/web/assets/initial-deps-CQxWMuPh.js.gz +0 -0
  190. package/dist/web/assets/initial-deps-Dr1AWuHB.js +0 -1
  191. package/dist/web/assets/initial-deps-Dr1AWuHB.js.br +0 -0
  192. package/dist/web/assets/initial-deps-Dr1AWuHB.js.gz +0 -0
  193. package/dist/web/assets/installed-skills-pane-BfNddwjn.js.br +0 -0
  194. package/dist/web/assets/installed-skills-pane-BfNddwjn.js.gz +0 -0
  195. package/dist/web/assets/lazy-message-response-BpXGmE9E.js +0 -2
  196. package/dist/web/assets/lazy-message-response-BpXGmE9E.js.br +0 -0
  197. package/dist/web/assets/lazy-message-response-BpXGmE9E.js.gz +0 -0
  198. package/dist/web/assets/mcp-management-pane-Ch_kUuam.js.br +0 -0
  199. package/dist/web/assets/mcp-management-pane-Ch_kUuam.js.gz +0 -0
  200. package/dist/web/assets/message-response-KFxzclWt.js.br +0 -0
  201. package/dist/web/assets/message-response-KFxzclWt.js.gz +0 -0
  202. package/dist/web/assets/official-plugins-pane-CFbYqeRf.js.br +0 -0
  203. package/dist/web/assets/official-plugins-pane-CFbYqeRf.js.gz +0 -0
  204. package/dist/web/assets/project-file-popup-page-9jdg_OXD.js.br +0 -0
  205. package/dist/web/assets/project-file-popup-page-9jdg_OXD.js.gz +0 -0
  206. package/dist/web/assets/project-source-panel-B-xuo6G6.js.br +0 -0
  207. package/dist/web/assets/project-source-panel-B-xuo6G6.js.gz +0 -0
  208. package/dist/web/assets/prompt-input-CS22f1Yj.js +0 -1
  209. package/dist/web/assets/prompt-input-CS22f1Yj.js.br +0 -0
  210. package/dist/web/assets/prompt-input-CS22f1Yj.js.gz +0 -0
  211. package/dist/web/assets/prompt-input-controls-CuE9VrWA.js.br +0 -0
  212. package/dist/web/assets/prompt-input-controls-CuE9VrWA.js.gz +0 -0
  213. package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js +0 -1
  214. package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js.br +0 -0
  215. package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js.gz +0 -0
  216. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-BischM2-.js.br +0 -0
  217. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-BischM2-.js.gz +0 -0
  218. package/dist/web/assets/scheduled-task-schedule-Cfuv_Kyf.js +0 -1
  219. package/dist/web/assets/scheduled-task-schedule-Cfuv_Kyf.js.br +0 -0
  220. package/dist/web/assets/scheduled-task-schedule-Cfuv_Kyf.js.gz +0 -0
  221. package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js +0 -2
  222. package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js.br +0 -0
  223. package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js.gz +0 -0
  224. package/dist/web/assets/scheduled-tasks-container-xtJWjMjU.css +0 -1
  225. package/dist/web/assets/scheduled-tasks-container-xtJWjMjU.css.br +0 -0
  226. package/dist/web/assets/scheduled-tasks-container-xtJWjMjU.css.gz +0 -0
  227. package/dist/web/assets/sheet-DTJIZQHt.js.br +0 -0
  228. package/dist/web/assets/sheet-DTJIZQHt.js.gz +0 -0
  229. package/dist/web/assets/skills-market-container-8VwHWKJN.js.br +0 -0
  230. package/dist/web/assets/skills-market-container-8VwHWKJN.js.gz +0 -0
  231. package/dist/web/assets/third-party-marketplace-pane-BtZYBzru.js.br +0 -0
  232. package/dist/web/assets/third-party-marketplace-pane-BtZYBzru.js.gz +0 -0
  233. package/dist/web/assets/workbench-composer-Dfa3le3p.js +0 -10
  234. package/dist/web/assets/workbench-composer-Dfa3le3p.js.br +0 -0
  235. package/dist/web/assets/workbench-composer-Dfa3le3p.js.gz +0 -0
  236. package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js +0 -2
  237. package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js.br +0 -0
  238. package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js.gz +0 -0
  239. package/dist/web/assets/workbench-pet-canvas-gckmllUf.js +0 -1
  240. package/dist/web/assets/workbench-pet-canvas-gckmllUf.js.br +0 -0
  241. package/dist/web/assets/workbench-pet-canvas-gckmllUf.js.gz +0 -0
  242. package/dist/web/assets/workbench-shell-0X1Ehypo.js +0 -8
  243. package/dist/web/assets/workbench-shell-0X1Ehypo.js.br +0 -0
  244. package/dist/web/assets/workbench-shell-0X1Ehypo.js.gz +0 -0
  245. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~olri0nvu-DAfditVv.js → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~egzauog4-DAfditVv.js} +0 -0
  246. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~olri0nvu-DAfditVv.js.br → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~egzauog4-DAfditVv.js.br} +0 -0
  247. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~olri0nvu-DAfditVv.js.gz → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~egzauog4-DAfditVv.js.gz} +0 -0
@@ -1,16 +1,16 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { WorkbenchPetProviderError, PendingRequestResolutionError } from './chunk-RNTA4MFS.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-P3ZQ3QOJ.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-M6GWGUSX.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';
7
- import { readFile, mkdir, writeFile, rename, rm, readdir, realpath, stat, access, lstat, opendir } from 'fs/promises';
7
+ import { readFile, mkdir, writeFile, rename, rm, readdir, realpath, stat, access, open, unlink, lstat, opendir } from 'fs/promises';
8
8
  import { createRequire as createRequire$1 } from 'module';
9
9
  import { resolve, basename, dirname, join, relative, sep, win32, posix, isAbsolute, extname } from 'path';
10
10
  import { promisify } from 'util';
11
11
  import { randomUUID, createHash } from 'crypto';
12
12
  import { Buffer as Buffer$1 } from 'buffer';
13
- import { tmpdir, homedir } from 'os';
13
+ import { homedir, tmpdir } from 'os';
14
14
  import { StringDecoder } from 'string_decoder';
15
15
  import { Worker } from 'worker_threads';
16
16
 
@@ -1250,7 +1250,7 @@ var require_sonic_boom = __commonJS({
1250
1250
  if (!(this instanceof SonicBoom)) {
1251
1251
  return new SonicBoom(opts);
1252
1252
  }
1253
- let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append = true, mkdir: mkdir2, retryEAGAIN, fsync, contentMode, mode } = opts || {};
1253
+ let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append = true, mkdir: mkdir3, retryEAGAIN, fsync, contentMode, mode } = opts || {};
1254
1254
  fd = fd || dest;
1255
1255
  this._len = 0;
1256
1256
  this.fd = -1;
@@ -1275,7 +1275,7 @@ var require_sonic_boom = __commonJS({
1275
1275
  this.append = append || false;
1276
1276
  this.mode = mode;
1277
1277
  this.retryEAGAIN = retryEAGAIN || (() => true);
1278
- this.mkdir = mkdir2 || false;
1278
+ this.mkdir = mkdir3 || false;
1279
1279
  let fsWriteSync;
1280
1280
  let fsWrite;
1281
1281
  if (contentMode === kContentModeBuffer) {
@@ -1983,7 +1983,7 @@ var require_thread_stream = __commonJS({
1983
1983
  var { version } = require_package();
1984
1984
  var { EventEmitter } = __require("events");
1985
1985
  var { Worker: Worker2 } = __require("worker_threads");
1986
- var { join: join6 } = __require("path");
1986
+ var { join: join7 } = __require("path");
1987
1987
  var { pathToFileURL } = __require("url");
1988
1988
  var { wait } = require_wait();
1989
1989
  var {
@@ -2034,7 +2034,7 @@ var require_thread_stream = __commonJS({
2034
2034
  function createWorker(stream, opts) {
2035
2035
  const { filename, workerData } = opts;
2036
2036
  const bundlerOverrides = "__bundlerPathsOverrides" in globalThis ? globalThis.__bundlerPathsOverrides : {};
2037
- const toExecute = bundlerOverrides["thread-stream-worker"] || join6(__dirname, "lib", "worker.js");
2037
+ const toExecute = bundlerOverrides["thread-stream-worker"] || join7(__dirname, "lib", "worker.js");
2038
2038
  const worker = new Worker2(toExecute, {
2039
2039
  ...opts.workerOpts,
2040
2040
  name: opts.workerOpts?.name || "thread-stream",
@@ -2501,7 +2501,7 @@ var require_transport = __commonJS({
2501
2501
  var { createRequire: createRequire2 } = __require("module");
2502
2502
  var { existsSync } = __require("fs");
2503
2503
  var getCallers = require_caller();
2504
- var { join: join6, isAbsolute: isAbsolute7, sep: sep3 } = __require("path");
2504
+ var { join: join7, isAbsolute: isAbsolute7, sep: sep3 } = __require("path");
2505
2505
  var { fileURLToPath } = __require("url");
2506
2506
  var sleep = require_atomic_sleep();
2507
2507
  var onExit = require_on_exit_leak_free();
@@ -2654,7 +2654,7 @@ var require_transport = __commonJS({
2654
2654
  throw new Error("only one of target or targets can be specified");
2655
2655
  }
2656
2656
  if (targets) {
2657
- target = bundlerOverrides["pino-worker"] || join6(__dirname, "worker.js");
2657
+ target = bundlerOverrides["pino-worker"] || join7(__dirname, "worker.js");
2658
2658
  options.targets = targets.filter((dest) => dest.target).map((dest) => {
2659
2659
  return {
2660
2660
  ...dest,
@@ -2672,7 +2672,7 @@ var require_transport = __commonJS({
2672
2672
  });
2673
2673
  });
2674
2674
  } else if (pipeline) {
2675
- target = bundlerOverrides["pino-worker"] || join6(__dirname, "worker.js");
2675
+ target = bundlerOverrides["pino-worker"] || join7(__dirname, "worker.js");
2676
2676
  options.pipelines = [pipeline.map((dest) => {
2677
2677
  return {
2678
2678
  ...dest,
@@ -2695,7 +2695,7 @@ var require_transport = __commonJS({
2695
2695
  return origin;
2696
2696
  }
2697
2697
  if (origin === "pino/file") {
2698
- return join6(__dirname, "..", "file.js");
2698
+ return join7(__dirname, "..", "file.js");
2699
2699
  }
2700
2700
  let fixTarget2;
2701
2701
  for (const filePath of callers) {
@@ -3670,7 +3670,7 @@ var require_safe_stable_stringify = __commonJS({
3670
3670
  return circularValue;
3671
3671
  }
3672
3672
  let res = "";
3673
- let join6 = ",";
3673
+ let join7 = ",";
3674
3674
  const originalIndentation = indentation;
3675
3675
  if (Array.isArray(value)) {
3676
3676
  if (value.length === 0) {
@@ -3684,7 +3684,7 @@ var require_safe_stable_stringify = __commonJS({
3684
3684
  indentation += spacer;
3685
3685
  res += `
3686
3686
  ${indentation}`;
3687
- join6 = `,
3687
+ join7 = `,
3688
3688
  ${indentation}`;
3689
3689
  }
3690
3690
  const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
@@ -3692,13 +3692,13 @@ ${indentation}`;
3692
3692
  for (; i < maximumValuesToStringify - 1; i++) {
3693
3693
  const tmp2 = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation);
3694
3694
  res += tmp2 !== void 0 ? tmp2 : "null";
3695
- res += join6;
3695
+ res += join7;
3696
3696
  }
3697
3697
  const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation);
3698
3698
  res += tmp !== void 0 ? tmp : "null";
3699
3699
  if (value.length - 1 > maximumBreadth) {
3700
3700
  const removedKeys = value.length - maximumBreadth - 1;
3701
- res += `${join6}"... ${getItemCount(removedKeys)} not stringified"`;
3701
+ res += `${join7}"... ${getItemCount(removedKeys)} not stringified"`;
3702
3702
  }
3703
3703
  if (spacer !== "") {
3704
3704
  res += `
@@ -3719,7 +3719,7 @@ ${originalIndentation}`;
3719
3719
  let separator = "";
3720
3720
  if (spacer !== "") {
3721
3721
  indentation += spacer;
3722
- join6 = `,
3722
+ join7 = `,
3723
3723
  ${indentation}`;
3724
3724
  whitespace = " ";
3725
3725
  }
@@ -3733,13 +3733,13 @@ ${indentation}`;
3733
3733
  const tmp = stringifyFnReplacer(key2, value, stack, replacer, spacer, indentation);
3734
3734
  if (tmp !== void 0) {
3735
3735
  res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`;
3736
- separator = join6;
3736
+ separator = join7;
3737
3737
  }
3738
3738
  }
3739
3739
  if (keyLength > maximumBreadth) {
3740
3740
  const removedKeys = keyLength - maximumBreadth;
3741
3741
  res += `${separator}"...":${whitespace}"${getItemCount(removedKeys)} not stringified"`;
3742
- separator = join6;
3742
+ separator = join7;
3743
3743
  }
3744
3744
  if (spacer !== "" && separator.length > 1) {
3745
3745
  res = `
@@ -3780,7 +3780,7 @@ ${originalIndentation}`;
3780
3780
  }
3781
3781
  const originalIndentation = indentation;
3782
3782
  let res = "";
3783
- let join6 = ",";
3783
+ let join7 = ",";
3784
3784
  if (Array.isArray(value)) {
3785
3785
  if (value.length === 0) {
3786
3786
  return "[]";
@@ -3793,7 +3793,7 @@ ${originalIndentation}`;
3793
3793
  indentation += spacer;
3794
3794
  res += `
3795
3795
  ${indentation}`;
3796
- join6 = `,
3796
+ join7 = `,
3797
3797
  ${indentation}`;
3798
3798
  }
3799
3799
  const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
@@ -3801,13 +3801,13 @@ ${indentation}`;
3801
3801
  for (; i < maximumValuesToStringify - 1; i++) {
3802
3802
  const tmp2 = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation);
3803
3803
  res += tmp2 !== void 0 ? tmp2 : "null";
3804
- res += join6;
3804
+ res += join7;
3805
3805
  }
3806
3806
  const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation);
3807
3807
  res += tmp !== void 0 ? tmp : "null";
3808
3808
  if (value.length - 1 > maximumBreadth) {
3809
3809
  const removedKeys = value.length - maximumBreadth - 1;
3810
- res += `${join6}"... ${getItemCount(removedKeys)} not stringified"`;
3810
+ res += `${join7}"... ${getItemCount(removedKeys)} not stringified"`;
3811
3811
  }
3812
3812
  if (spacer !== "") {
3813
3813
  res += `
@@ -3820,7 +3820,7 @@ ${originalIndentation}`;
3820
3820
  let whitespace = "";
3821
3821
  if (spacer !== "") {
3822
3822
  indentation += spacer;
3823
- join6 = `,
3823
+ join7 = `,
3824
3824
  ${indentation}`;
3825
3825
  whitespace = " ";
3826
3826
  }
@@ -3829,7 +3829,7 @@ ${indentation}`;
3829
3829
  const tmp = stringifyArrayReplacer(key2, value[key2], stack, replacer, spacer, indentation);
3830
3830
  if (tmp !== void 0) {
3831
3831
  res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`;
3832
- separator = join6;
3832
+ separator = join7;
3833
3833
  }
3834
3834
  }
3835
3835
  if (spacer !== "" && separator.length > 1) {
@@ -3887,20 +3887,20 @@ ${originalIndentation}`;
3887
3887
  indentation += spacer;
3888
3888
  let res2 = `
3889
3889
  ${indentation}`;
3890
- const join7 = `,
3890
+ const join8 = `,
3891
3891
  ${indentation}`;
3892
3892
  const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
3893
3893
  let i = 0;
3894
3894
  for (; i < maximumValuesToStringify - 1; i++) {
3895
3895
  const tmp2 = stringifyIndent(String(i), value[i], stack, spacer, indentation);
3896
3896
  res2 += tmp2 !== void 0 ? tmp2 : "null";
3897
- res2 += join7;
3897
+ res2 += join8;
3898
3898
  }
3899
3899
  const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation);
3900
3900
  res2 += tmp !== void 0 ? tmp : "null";
3901
3901
  if (value.length - 1 > maximumBreadth) {
3902
3902
  const removedKeys = value.length - maximumBreadth - 1;
3903
- res2 += `${join7}"... ${getItemCount(removedKeys)} not stringified"`;
3903
+ res2 += `${join8}"... ${getItemCount(removedKeys)} not stringified"`;
3904
3904
  }
3905
3905
  res2 += `
3906
3906
  ${originalIndentation}`;
@@ -3916,16 +3916,16 @@ ${originalIndentation}`;
3916
3916
  return '"[Object]"';
3917
3917
  }
3918
3918
  indentation += spacer;
3919
- const join6 = `,
3919
+ const join7 = `,
3920
3920
  ${indentation}`;
3921
3921
  let res = "";
3922
3922
  let separator = "";
3923
3923
  let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth);
3924
3924
  if (isTypedArrayWithEntries(value)) {
3925
- res += stringifyTypedArray(value, join6, maximumBreadth);
3925
+ res += stringifyTypedArray(value, join7, maximumBreadth);
3926
3926
  keys = keys.slice(value.length);
3927
3927
  maximumPropertiesToStringify -= value.length;
3928
- separator = join6;
3928
+ separator = join7;
3929
3929
  }
3930
3930
  if (deterministic) {
3931
3931
  keys = sort(keys, comparator);
@@ -3936,13 +3936,13 @@ ${indentation}`;
3936
3936
  const tmp = stringifyIndent(key2, value[key2], stack, spacer, indentation);
3937
3937
  if (tmp !== void 0) {
3938
3938
  res += `${separator}${strEscape(key2)}: ${tmp}`;
3939
- separator = join6;
3939
+ separator = join7;
3940
3940
  }
3941
3941
  }
3942
3942
  if (keyLength > maximumBreadth) {
3943
3943
  const removedKeys = keyLength - maximumBreadth;
3944
3944
  res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"`;
3945
- separator = join6;
3945
+ separator = join7;
3946
3946
  }
3947
3947
  if (separator !== "") {
3948
3948
  res = `
@@ -4466,8 +4466,8 @@ var require_pino = __commonJS({
4466
4466
  }
4467
4467
  });
4468
4468
  var execFileAsync = promisify(execFile);
4469
- var SUPPORTED_CODEX_VERSION = "0.153.4";
4470
- var SUPPORTED_CODEX_VERSION_RANGE = ">=0.153.4,<0.154.0";
4469
+ var SUPPORTED_CODEX_VERSION = "0.154.0";
4470
+ var SUPPORTED_CODEX_VERSION_RANGE = ">=0.154.0,<0.155.0";
4471
4471
  var BUNDLED_CODEX_TARGETS = {
4472
4472
  "darwin-arm64": {
4473
4473
  executableName: "codex",
@@ -4609,7 +4609,7 @@ async function checkCodexVersion(binaryPath, options = {}) {
4609
4609
  }
4610
4610
  const [major, minor, patch] = version.split("-", 1)[0]?.split(".").map(Number) ?? [];
4611
4611
  const isPrerelease = version.includes("-");
4612
- if (major !== 0 || minor !== 153 || patch === void 0 || patch < 4 || isPrerelease) {
4612
+ if (major !== 0 || minor !== 154 || patch === void 0 || isPrerelease) {
4613
4613
  throw new Error(
4614
4614
  `Unsupported Codex version ${version}; expected ${SUPPORTED_CODEX_VERSION_RANGE}`
4615
4615
  );
@@ -5145,10 +5145,10 @@ function fieldValueMatches(field, value) {
5145
5145
  function mcpElicitationContentMatchesRequest(request, content) {
5146
5146
  if (request.mode === "unsupported") return false;
5147
5147
  if (request.mode === "url") return Object.keys(content).length === 0;
5148
- const fields = new Map(request.fields.map((field) => [field.id, field]));
5148
+ const fields2 = new Map(request.fields.map((field) => [field.id, field]));
5149
5149
  const entries = Object.entries(content);
5150
5150
  return entries.every(([id, value]) => {
5151
- const field = fields.get(id);
5151
+ const field = fields2.get(id);
5152
5152
  return field !== void 0 && fieldValueMatches(field, value);
5153
5153
  }) && request.fields.every((field) => !field.required || Object.hasOwn(content, field.id));
5154
5154
  }
@@ -6528,10 +6528,10 @@ function normalizedTitle(thread) {
6528
6528
  var CODEX_PINNED_THREAD_SECTION_ID = "01984de2-8f74-7c91-a3b2-5c5e937cf318";
6529
6529
  function isPinnedThreadSection(value) {
6530
6530
  if (value === null) return false;
6531
- const section = expectRecord(value, "Codex thread section");
6532
- const sectionId = expectString(section["id"], "Codex thread section id");
6533
- expectString(section["name"], "Codex thread section name");
6534
- const appearance = section["appearance"];
6531
+ const section2 = expectRecord(value, "Codex thread section");
6532
+ const sectionId = expectString(section2["id"], "Codex thread section id");
6533
+ expectString(section2["name"], "Codex thread section name");
6534
+ const appearance = section2["appearance"];
6535
6535
  if (appearance !== null && (!isRecord(appearance) || appearance["icon"] !== null && typeof appearance["icon"] !== "string" || appearance["color"] !== null && typeof appearance["color"] !== "string")) {
6536
6536
  throw new CodexProtocolMappingError("Codex thread section appearance is invalid");
6537
6537
  }
@@ -7477,7 +7477,7 @@ var RpcPendingRequest = class {
7477
7477
  };
7478
7478
 
7479
7479
  // packages/provider-codex/src/jsonl-rpc-client.ts
7480
- var DEFAULT_MAX_JSONL_BYTES = 64 * 1024 * 1024;
7480
+ var DEFAULT_MAX_JSONL_BYTES = 80 * 1024 * 1024;
7481
7481
  var DEFAULT_LARGE_FRAME_THRESHOLD_BYTES = 1 * 1024 * 1024;
7482
7482
  var JsonlRpcClient = class {
7483
7483
  #defaultTimeoutMs;
@@ -8656,6 +8656,10 @@ async function listCodexMcpServers(client, taskId) {
8656
8656
  const serverInfoValue = server["serverInfo"];
8657
8657
  const serverInfo = serverInfoValue === null || serverInfoValue === void 0 ? null : expectRecord(serverInfoValue, "mcpServerStatus/list serverInfo");
8658
8658
  const tools = expectRecord(server["tools"], "mcpServerStatus/list tools");
8659
+ const toolsError = server["toolsError"];
8660
+ if (toolsError !== null && typeof toolsError !== "string") {
8661
+ throw new CodexProtocolMappingError("mcpServerStatus/list toolsError is invalid");
8662
+ }
8659
8663
  const authStatus = mapMcpAuthStatus(server["authStatus"]);
8660
8664
  let displayName = name;
8661
8665
  if (serverInfo !== null) {
@@ -8669,10 +8673,12 @@ async function listCodexMcpServers(client, taskId) {
8669
8673
  if (servers.has(name)) {
8670
8674
  continue;
8671
8675
  }
8676
+ const runtimeStatus = mapMcpRuntimeStatus(server["runtimeStatus"], authStatus);
8677
+ const status = toolsError !== null && (runtimeStatus === "connected" || runtimeStatus === "unknown") ? "failed" : runtimeStatus;
8672
8678
  servers.set(name, {
8673
8679
  displayName,
8674
8680
  name,
8675
- status: mapMcpRuntimeStatus(server["runtimeStatus"], authStatus),
8681
+ status,
8676
8682
  toolCount: Object.keys(tools).length
8677
8683
  });
8678
8684
  }
@@ -9446,12 +9452,19 @@ var CodexAgentProviderQueue = class extends CodexAgentProviderBase {
9446
9452
  }
9447
9453
  return { name: skill.name, path: skill.path, type: "skill" };
9448
9454
  });
9449
- const images = input.images.map((image) => {
9450
- if (image.path.length === 0) {
9451
- throw new CodexProtocolMappingError("Provider image path must not be empty");
9452
- }
9453
- return { detail: image.detail, path: image.path, type: "localImage" };
9454
- });
9455
+ const images = await Promise.all(
9456
+ input.images.map(async (image) => {
9457
+ if (image.path.length === 0) {
9458
+ throw new CodexProtocolMappingError("Provider image path must not be empty");
9459
+ }
9460
+ const content = await readFile(image.path);
9461
+ return {
9462
+ detail: image.detail,
9463
+ type: "image",
9464
+ url: `data:${image.mediaType};base64,${content.toString("base64")}`
9465
+ };
9466
+ })
9467
+ );
9455
9468
  const files = input.files.map(createCodexFileTextInput);
9456
9469
  const textAttachments = input.textAttachments.map((attachment) => ({
9457
9470
  text: attachment.text,
@@ -10756,6 +10769,146 @@ var CodexAgentProviderEvents = class extends CodexAgentProviderTasks {
10756
10769
  var CodexAgentProvider = class extends CodexAgentProviderEvents {
10757
10770
  };
10758
10771
 
10772
+ // packages/provider-codex/src/runtime-default-settings.ts
10773
+ var fields = {
10774
+ approvalPolicy: "approval_policy",
10775
+ approvalsReviewer: "approvals_reviewer",
10776
+ model: "model",
10777
+ reasoningEffort: "model_reasoning_effort",
10778
+ sandboxMode: "sandbox_mode",
10779
+ fastMode: "service_tier"
10780
+ };
10781
+ async function writeRuntimeDefaultSettings(client, settings) {
10782
+ const edits = Object.keys(fields).filter((key) => settings[key] !== void 0).map((key) => ({
10783
+ keyPath: fields[key],
10784
+ // default 显式关闭快速档位;不删除键,避免重新继承模型的默认档位。
10785
+ value: key === "fastMode" ? settings.fastMode ? "priority" : "default" : settings[key],
10786
+ mergeStrategy: "replace"
10787
+ }));
10788
+ if (edits.length === 0) return;
10789
+ await client.request("config/batchWrite", { edits, reloadUserConfig: true });
10790
+ }
10791
+ async function readOptional(path) {
10792
+ try {
10793
+ return await readFile(path, "utf8");
10794
+ } catch (error) {
10795
+ if (error.code === "ENOENT") return "";
10796
+ throw error;
10797
+ }
10798
+ }
10799
+ function createGlobalInstructionsStore(home) {
10800
+ let pending = Promise.resolve();
10801
+ const read = async () => ({
10802
+ content: await readOptional(join(home, "AGENTS.md")),
10803
+ path: join(home, "AGENTS.md"),
10804
+ overrideActive: (await readOptional(join(home, "AGENTS.override.md"))).trim().length > 0
10805
+ });
10806
+ return {
10807
+ read,
10808
+ save(input) {
10809
+ const result = pending.then(async () => {
10810
+ const path = join(home, "AGENTS.md");
10811
+ if (await readOptional(path) !== input.expectedContent) {
10812
+ throw Object.assign(new Error("Global instructions changed; reload before saving"), {
10813
+ code: "GLOBAL_INSTRUCTIONS_CHANGED"
10814
+ });
10815
+ }
10816
+ await mkdir(home, { recursive: true });
10817
+ let target = path;
10818
+ try {
10819
+ target = await realpath(path);
10820
+ } catch (error) {
10821
+ if (error.code !== "ENOENT") throw error;
10822
+ }
10823
+ const temporary = join(dirname(target), `.AGENTS-${randomUUID()}.tmp`);
10824
+ const file = await open(temporary, "wx", 384);
10825
+ try {
10826
+ try {
10827
+ await file.chmod((await stat(target)).mode);
10828
+ } catch (error) {
10829
+ if (error.code !== "ENOENT") throw error;
10830
+ }
10831
+ await file.writeFile(input.content, "utf8");
10832
+ await file.sync();
10833
+ await file.close();
10834
+ if (await readOptional(path) !== input.expectedContent)
10835
+ throw Object.assign(new Error("Global instructions changed; reload before saving"), {
10836
+ code: "GLOBAL_INSTRUCTIONS_CHANGED"
10837
+ });
10838
+ await rename(temporary, target);
10839
+ } finally {
10840
+ await file.close();
10841
+ await unlink(temporary).catch((error) => {
10842
+ if (error.code !== "ENOENT") throw error;
10843
+ });
10844
+ }
10845
+ return read();
10846
+ });
10847
+ pending = result.then(
10848
+ () => void 0,
10849
+ () => void 0
10850
+ );
10851
+ return result;
10852
+ }
10853
+ };
10854
+ }
10855
+
10856
+ // packages/provider-codex/src/personalization.ts
10857
+ async function readConfig(client) {
10858
+ const response = expectRecord(
10859
+ await client.request("config/read", { includeLayers: false }),
10860
+ "config/read response"
10861
+ );
10862
+ return expectRecord(response["config"], "config/read config");
10863
+ }
10864
+ function section(config, key) {
10865
+ return config[key] === void 0 ? {} : expectRecord(config[key], key);
10866
+ }
10867
+ var edit = (keyPath, value) => ({ keyPath, value, mergeStrategy: "replace" });
10868
+ async function readMemorySettings(client) {
10869
+ const config = await readConfig(client);
10870
+ const features = section(config, "features");
10871
+ const memories = section(config, "memories");
10872
+ return {
10873
+ enabled: features["memories"] === true && memories["generate_memories"] !== false && memories["use_memories"] !== false,
10874
+ allowExternalContext: !(memories["disable_on_external_context"] ?? memories["no_memories_if_mcp_or_web_search"] ?? false)
10875
+ };
10876
+ }
10877
+ async function updateMemorySettings(client, update) {
10878
+ const edits = [];
10879
+ if (update.enabled !== void 0)
10880
+ for (const key of ["features.memories", "memories.generate_memories", "memories.use_memories"])
10881
+ edits.push(edit(key, update.enabled));
10882
+ if (update.allowExternalContext !== void 0) {
10883
+ edits.push(edit("memories.no_memories_if_mcp_or_web_search", null));
10884
+ edits.push(edit("memories.disable_on_external_context", !update.allowExternalContext));
10885
+ }
10886
+ if (edits.length) await client.request("config/batchWrite", { edits, reloadUserConfig: true });
10887
+ return readMemorySettings(client);
10888
+ }
10889
+ async function resetMemories(client) {
10890
+ await client.request("memory/reset", null);
10891
+ }
10892
+ async function readAgentPreferences(client) {
10893
+ const config = await readConfig(client);
10894
+ const verbosity = config["model_verbosity"];
10895
+ const search = config["web_search"];
10896
+ return {
10897
+ webSearch: search === "disabled" || search === "live" ? search : "cached",
10898
+ modelVerbosity: verbosity === "low" || verbosity === "medium" || verbosity === "high" ? verbosity : null
10899
+ };
10900
+ }
10901
+ async function updateAgentPreferences(client, settings) {
10902
+ await client.request("config/batchWrite", {
10903
+ edits: [
10904
+ edit("web_search", settings.webSearch),
10905
+ edit("model_verbosity", settings.modelVerbosity)
10906
+ ],
10907
+ reloadUserConfig: true
10908
+ });
10909
+ return readAgentPreferences(client);
10910
+ }
10911
+
10759
10912
  // packages/provider-codex/src/custom-model-catalog.ts
10760
10913
  var DEFAULT_REASONING_EFFORTS = [
10761
10914
  { description: "", id: "medium" }
@@ -11084,7 +11237,7 @@ function mapAccount(value) {
11084
11237
  }
11085
11238
  return null;
11086
11239
  }
11087
- function readConfig(response) {
11240
+ function readConfig2(response) {
11088
11241
  if (!isRecord7(response) || !isRecord7(response["config"])) {
11089
11242
  throw new CodexProviderConnectionError("Codex returned an invalid config response");
11090
11243
  }
@@ -11131,7 +11284,7 @@ var CodexProviderConnectionService = class {
11131
11284
  this.#modelResponseMaxBytes = options.modelResponseMaxBytes ?? DEFAULT_MODEL_RESPONSE_MAX_BYTES;
11132
11285
  this.#nativeState = new CodexNativeStateSnapshot({
11133
11286
  account: async () => readAccountResponse(await client.request("account/read", { refreshToken: false })),
11134
- config: async () => readConfig(await client.request("config/read", { includeLayers: false }))
11287
+ config: async () => readConfig2(await client.request("config/read", { includeLayers: false }))
11135
11288
  });
11136
11289
  }
11137
11290
  receiveNotification(method, params) {
@@ -11201,6 +11354,9 @@ var CodexProviderConnectionService = class {
11201
11354
  async readConfig() {
11202
11355
  return this.#nativeState.readConfig();
11203
11356
  }
11357
+ invalidateConfig() {
11358
+ this.#nativeState.clear();
11359
+ }
11204
11360
  async configureCustom(input, persistedModels) {
11205
11361
  const baseUrl = normalizeBaseUrl(input.baseUrl);
11206
11362
  const apiKey = input.apiKey;
@@ -11226,7 +11382,7 @@ var CodexProviderConnectionService = class {
11226
11382
  this.#client.request("config/read", { includeLayers: false }),
11227
11383
  this.#client.request("account/read", { refreshToken: false })
11228
11384
  ]);
11229
- const previousConfig = readConfig(configResponse);
11385
+ const previousConfig = readConfig2(configResponse);
11230
11386
  const previousAccountState = readAccountResponse(accountResponse);
11231
11387
  const configUpdate = createCustomProviderConfigUpdate(
11232
11388
  previousConfig,
@@ -12297,7 +12453,7 @@ function optionalApprovalPolicy(value) {
12297
12453
  if (typeof granular !== "object" || granular === null || Array.isArray(granular)) {
12298
12454
  return void 0;
12299
12455
  }
12300
- const fields = granular;
12456
+ const fields2 = granular;
12301
12457
  const knownFields = /* @__PURE__ */ new Set([
12302
12458
  "mcp_elicitations",
12303
12459
  "request_permissions",
@@ -12305,16 +12461,16 @@ function optionalApprovalPolicy(value) {
12305
12461
  "sandbox_approval",
12306
12462
  "skill_approval"
12307
12463
  ]);
12308
- if (Object.keys(fields).some((key) => !knownFields.has(key)) || typeof fields["mcp_elicitations"] !== "boolean" || typeof fields["rules"] !== "boolean" || typeof fields["sandbox_approval"] !== "boolean" || fields["request_permissions"] !== void 0 && typeof fields["request_permissions"] !== "boolean" || fields["skill_approval"] !== void 0 && typeof fields["skill_approval"] !== "boolean") {
12464
+ if (Object.keys(fields2).some((key) => !knownFields.has(key)) || typeof fields2["mcp_elicitations"] !== "boolean" || typeof fields2["rules"] !== "boolean" || typeof fields2["sandbox_approval"] !== "boolean" || fields2["request_permissions"] !== void 0 && typeof fields2["request_permissions"] !== "boolean" || fields2["skill_approval"] !== void 0 && typeof fields2["skill_approval"] !== "boolean") {
12309
12465
  return void 0;
12310
12466
  }
12311
12467
  return {
12312
12468
  granular: {
12313
- mcp_elicitations: fields["mcp_elicitations"],
12314
- request_permissions: fields["request_permissions"] ?? false,
12315
- rules: fields["rules"],
12316
- sandbox_approval: fields["sandbox_approval"],
12317
- skill_approval: fields["skill_approval"] ?? false
12469
+ mcp_elicitations: fields2["mcp_elicitations"],
12470
+ request_permissions: fields2["request_permissions"] ?? false,
12471
+ rules: fields2["rules"],
12472
+ sandbox_approval: fields2["sandbox_approval"],
12473
+ skill_approval: fields2["skill_approval"] ?? false
12318
12474
  }
12319
12475
  };
12320
12476
  }
@@ -12322,6 +12478,7 @@ function optionalSandboxMode(value) {
12322
12478
  return value === "read-only" || value === "workspace-write" || value === "danger-full-access" ? value : void 0;
12323
12479
  }
12324
12480
  var CodexRuntimeProvider = class {
12481
+ personalization;
12325
12482
  fileSearch;
12326
12483
  #client;
12327
12484
  #logger;
@@ -12334,6 +12491,18 @@ var CodexRuntimeProvider = class {
12334
12491
  #reviewWorkerOwners = /* @__PURE__ */ new Map();
12335
12492
  constructor(client, logger = DEFAULT_PROVIDER_LOGGER, options = {}) {
12336
12493
  this.#client = client;
12494
+ const instructions = createGlobalInstructionsStore(
12495
+ options.codexHome ?? process.env["CODEX_HOME"] ?? resolve(homedir(), ".codex")
12496
+ );
12497
+ this.personalization = {
12498
+ getGlobalInstructions: instructions.read,
12499
+ saveGlobalInstructions: (input) => instructions.save(input),
12500
+ getMemorySettings: () => readMemorySettings(client),
12501
+ updateMemorySettings: (input) => updateMemorySettings(client, input),
12502
+ resetMemories: () => resetMemories(client),
12503
+ getAgentPreferences: () => readAgentPreferences(client),
12504
+ updateAgentPreferences: (input) => updateAgentPreferences(client, input)
12505
+ };
12337
12506
  this.#logger = logger;
12338
12507
  this.#providerConnection = new CodexProviderConnectionService(client, options);
12339
12508
  this.fileSearch = new CodexFuzzyFileSearchService(client);
@@ -12515,6 +12684,7 @@ var CodexRuntimeProvider = class {
12515
12684
  const sandboxMode = optionalSandboxMode(config["sandbox_mode"]);
12516
12685
  return {
12517
12686
  ...approvalDefaults,
12687
+ fastMode: config["service_tier"] === "priority" || config["service_tier"] === "fast",
12518
12688
  ...model === void 0 ? {} : { model },
12519
12689
  ...reasoningEffort === void 0 ? {} : { reasoningEffort },
12520
12690
  ...sandboxMode === void 0 ? {} : { sandboxMode }
@@ -12523,6 +12693,10 @@ var CodexRuntimeProvider = class {
12523
12693
  readProviderConnection() {
12524
12694
  return this.#providerConnection.readStatus();
12525
12695
  }
12696
+ async updateDefaultSettings(settings) {
12697
+ await writeRuntimeDefaultSettings(this.#client, settings);
12698
+ this.#providerConnection.invalidateConfig();
12699
+ }
12526
12700
  async releaseProject(projectId, expectedProvider) {
12527
12701
  const projectProvider = this.#projectProviders.get(projectId);
12528
12702
  if (expectedProvider !== void 0 && projectProvider !== expectedProvider) {
@@ -12580,6 +12754,7 @@ var CodexRuntimeProvider = class {
12580
12754
  };
12581
12755
  function createCodexRuntimeProvider(options) {
12582
12756
  return new CodexRuntimeProvider(options.client, options.logger, {
12757
+ ...options.codexHome === void 0 ? {} : { codexHome: options.codexHome },
12583
12758
  ...options.fetch === void 0 ? {} : { fetch: options.fetch }
12584
12759
  });
12585
12760
  }