@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.
- package/CHANGELOG.md +17 -0
- package/README.md +2 -2
- package/README.zh-CN.md +1 -1
- package/dist/{chunk-I74DBIGI.js → chunk-2O7SN37L.js} +1 -1
- package/dist/{chunk-PJNYCTFC.js → chunk-3PU3WPOK.js} +234 -59
- package/dist/{chunk-P3ZQ3QOJ.js → chunk-M6GWGUSX.js} +105 -2
- package/dist/{chunk-5VUCBET3.js → chunk-NROPHBJ7.js} +457 -85
- package/dist/cli.js +6 -5
- package/dist/client/index.js +136 -3
- package/dist/protocol/index.js +1 -1
- package/dist/providers/codex/index.js +2 -2
- package/dist/server/index.js +4 -4
- package/dist/web/.vite/manifest.json +299 -125
- package/dist/web/.vite/manifest.json.br +0 -0
- package/dist/web/.vite/manifest.json.gz +0 -0
- package/dist/web/assets/agent-settings-panel-BagNBAoe.js +1 -0
- package/dist/web/assets/agent-settings-panel-BagNBAoe.js.br +0 -0
- package/dist/web/assets/agent-settings-panel-BagNBAoe.js.gz +0 -0
- package/dist/web/assets/approval-mode-CKJY6q52.js +1 -0
- package/dist/web/assets/approval-mode-CKJY6q52.js.br +0 -0
- package/dist/web/assets/approval-mode-CKJY6q52.js.gz +0 -0
- package/dist/web/assets/background-image-picker-CjpS0dIk.js +1 -0
- package/dist/web/assets/background-image-picker-CjpS0dIk.js.br +0 -0
- package/dist/web/assets/background-image-picker-CjpS0dIk.js.gz +0 -0
- package/dist/web/assets/bing-wallpaper-queries-B-1L0OYP.js +1 -0
- package/dist/web/assets/bing-wallpaper-queries-B-1L0OYP.js.br +0 -0
- package/dist/web/assets/bing-wallpaper-queries-B-1L0OYP.js.gz +0 -0
- package/dist/web/assets/bot-nsMcDaYk.js +1 -0
- package/dist/web/assets/bot-nsMcDaYk.js.br +0 -0
- package/dist/web/assets/bot-nsMcDaYk.js.gz +0 -0
- package/dist/web/assets/{button-group-DxqOhlVt.js → button-group-DIxa2Erp.js} +1 -1
- package/dist/web/assets/button-group-DIxa2Erp.js.br +0 -0
- package/dist/web/assets/button-group-DIxa2Erp.js.gz +0 -0
- package/dist/web/assets/commit-settings-panel-Co1u5Lzc.js +1 -0
- package/dist/web/assets/commit-settings-panel-Co1u5Lzc.js.br +0 -0
- package/dist/web/assets/commit-settings-panel-Co1u5Lzc.js.gz +0 -0
- package/dist/web/assets/{context-menu-D6mhhPGo.js → context-menu-HaQeWpEd.js} +1 -1
- package/dist/web/assets/context-menu-HaQeWpEd.js.br +0 -0
- package/dist/web/assets/context-menu-HaQeWpEd.js.gz +0 -0
- package/dist/web/assets/{dist-Czw-hil0.js → dist-ClwyqJQu.js} +1 -1
- package/dist/web/assets/dist-ClwyqJQu.js.br +0 -0
- package/dist/web/assets/dist-ClwyqJQu.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-B-0RkLZR.js +2 -0
- package/dist/web/assets/file-review-dialog-B-0RkLZR.js.br +0 -0
- package/dist/web/assets/file-review-dialog-B-0RkLZR.js.gz +0 -0
- package/dist/web/assets/git-fork-D0BPqh18.js +1 -0
- package/dist/web/assets/git-fork-D0BPqh18.js.br +2 -0
- package/dist/web/assets/git-fork-D0BPqh18.js.gz +0 -0
- package/dist/web/assets/git-history-panel-QiNKxo_n.js +2 -0
- package/dist/web/assets/git-history-panel-QiNKxo_n.js.br +0 -0
- package/dist/web/assets/git-history-panel-QiNKxo_n.js.gz +0 -0
- package/dist/web/assets/global-settings-about-DWXfIOas.js +1 -0
- package/dist/web/assets/global-settings-about-DWXfIOas.js.br +0 -0
- package/dist/web/assets/global-settings-about-DWXfIOas.js.gz +0 -0
- package/dist/web/assets/global-settings-fields-CmEy5pOE.js +1 -0
- package/dist/web/assets/global-settings-fields-CmEy5pOE.js.br +0 -0
- package/dist/web/assets/global-settings-fields-CmEy5pOE.js.gz +0 -0
- package/dist/web/assets/global-settings-model-B49sZloO.js +1 -0
- package/dist/web/assets/global-settings-model-B49sZloO.js.br +0 -0
- package/dist/web/assets/global-settings-model-B49sZloO.js.gz +0 -0
- package/dist/web/assets/global-settings-page-BqzYrF2U.css +1 -0
- package/dist/web/assets/global-settings-page-BqzYrF2U.css.br +0 -0
- package/dist/web/assets/global-settings-page-BqzYrF2U.css.gz +0 -0
- package/dist/web/assets/global-settings-page-DKXRkWmd.js +2 -0
- package/dist/web/assets/global-settings-page-DKXRkWmd.js.br +0 -0
- package/dist/web/assets/global-settings-page-DKXRkWmd.js.gz +0 -0
- package/dist/web/assets/global-settings-pets-8bzx8OFf.css +1 -0
- package/dist/web/assets/global-settings-pets-8bzx8OFf.css.br +0 -0
- package/dist/web/assets/global-settings-pets-8bzx8OFf.css.gz +0 -0
- package/dist/web/assets/global-settings-pets-DP2AxhJW.js +1 -0
- package/dist/web/assets/global-settings-pets-DP2AxhJW.js.br +0 -0
- package/dist/web/assets/global-settings-pets-DP2AxhJW.js.gz +0 -0
- package/dist/web/assets/index-BGtID8VJ.css +2 -0
- package/dist/web/assets/index-BGtID8VJ.css.br +0 -0
- package/dist/web/assets/index-BGtID8VJ.css.gz +0 -0
- package/dist/web/assets/index-mkWzMsjN.js +4 -0
- package/dist/web/assets/index-mkWzMsjN.js.br +0 -0
- package/dist/web/assets/index-mkWzMsjN.js.gz +0 -0
- package/dist/web/assets/initial-deps-CDAJF_GU.js +1 -0
- package/dist/web/assets/initial-deps-CDAJF_GU.js.br +0 -0
- package/dist/web/assets/initial-deps-CDAJF_GU.js.gz +0 -0
- package/dist/web/assets/{initial-deps-CQxWMuPh.js → initial-deps-DeVnmDFC.js} +1 -1
- package/dist/web/assets/initial-deps-DeVnmDFC.js.br +0 -0
- package/dist/web/assets/initial-deps-DeVnmDFC.js.gz +0 -0
- package/dist/web/assets/{installed-skills-pane-BfNddwjn.js → installed-skills-pane-CR2LbYh9.js} +1 -1
- package/dist/web/assets/installed-skills-pane-CR2LbYh9.js.br +0 -0
- package/dist/web/assets/installed-skills-pane-CR2LbYh9.js.gz +0 -0
- package/dist/web/assets/lazy-message-response-3Fr_a8du.js +2 -0
- package/dist/web/assets/lazy-message-response-3Fr_a8du.js.br +0 -0
- package/dist/web/assets/lazy-message-response-3Fr_a8du.js.gz +0 -0
- package/dist/web/assets/{mcp-management-pane-Ch_kUuam.js → mcp-management-pane-DEuUn7Y6.js} +1 -1
- package/dist/web/assets/mcp-management-pane-DEuUn7Y6.js.br +0 -0
- package/dist/web/assets/mcp-management-pane-DEuUn7Y6.js.gz +0 -0
- package/dist/web/assets/{message-response-KFxzclWt.js → message-response-D3YFwFiE.js} +1 -1
- package/dist/web/assets/message-response-D3YFwFiE.js.br +0 -0
- package/dist/web/assets/message-response-D3YFwFiE.js.gz +0 -0
- package/dist/web/assets/{official-plugins-pane-CFbYqeRf.js → official-plugins-pane-k8o9gVMR.js} +1 -1
- package/dist/web/assets/official-plugins-pane-k8o9gVMR.js.br +0 -0
- package/dist/web/assets/official-plugins-pane-k8o9gVMR.js.gz +0 -0
- package/dist/web/assets/paw-print-9SfXKttW.js +1 -0
- package/dist/web/assets/paw-print-9SfXKttW.js.br +0 -0
- package/dist/web/assets/paw-print-9SfXKttW.js.gz +0 -0
- package/dist/web/assets/personalization-settings-panel-Cl4_Y5Uk.js +1 -0
- package/dist/web/assets/personalization-settings-panel-Cl4_Y5Uk.js.br +0 -0
- package/dist/web/assets/personalization-settings-panel-Cl4_Y5Uk.js.gz +0 -0
- package/dist/web/assets/{project-file-popup-page-9jdg_OXD.js → project-file-popup-page-0uRpUcFH.js} +1 -1
- package/dist/web/assets/project-file-popup-page-0uRpUcFH.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-0uRpUcFH.js.gz +0 -0
- package/dist/web/assets/{project-source-panel-B-xuo6G6.js → project-source-panel-CEegjNVo.js} +2 -2
- package/dist/web/assets/project-source-panel-CEegjNVo.js.br +0 -0
- package/dist/web/assets/project-source-panel-CEegjNVo.js.gz +0 -0
- package/dist/web/assets/prompt-input-Bs_e51Ey.js +1 -0
- package/dist/web/assets/prompt-input-Bs_e51Ey.js.br +0 -0
- package/dist/web/assets/prompt-input-Bs_e51Ey.js.gz +0 -0
- package/dist/web/assets/{prompt-input-controls-CuE9VrWA.js → prompt-input-controls-DMqyvYVY.js} +1 -1
- package/dist/web/assets/prompt-input-controls-DMqyvYVY.js.br +0 -0
- package/dist/web/assets/prompt-input-controls-DMqyvYVY.js.gz +0 -0
- package/dist/web/assets/scheduled-task-date-time-picker-CHc9a7G1.js +1 -0
- package/dist/web/assets/scheduled-task-date-time-picker-CHc9a7G1.js.br +0 -0
- package/dist/web/assets/scheduled-task-date-time-picker-CHc9a7G1.js.gz +0 -0
- 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
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js.br +0 -0
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-Bz9LiWta.js.gz +0 -0
- package/dist/web/assets/scheduled-task-schedule-2Ugh5sqp.js +1 -0
- package/dist/web/assets/scheduled-task-schedule-2Ugh5sqp.js.br +0 -0
- package/dist/web/assets/scheduled-task-schedule-2Ugh5sqp.js.gz +0 -0
- package/dist/web/assets/scheduled-tasks-container-CVGTy7-W.css +1 -0
- package/dist/web/assets/scheduled-tasks-container-CVGTy7-W.css.br +0 -0
- package/dist/web/assets/scheduled-tasks-container-CVGTy7-W.css.gz +0 -0
- package/dist/web/assets/scheduled-tasks-container-Ddieo85Q.js +2 -0
- package/dist/web/assets/scheduled-tasks-container-Ddieo85Q.js.br +0 -0
- package/dist/web/assets/scheduled-tasks-container-Ddieo85Q.js.gz +0 -0
- package/dist/web/assets/settings-personalization-b55VcvKr.js +1 -0
- package/dist/web/assets/settings-personalization-b55VcvKr.js.br +0 -0
- package/dist/web/assets/settings-personalization-b55VcvKr.js.gz +0 -0
- package/dist/web/assets/{sheet-DTJIZQHt.js → sheet-DbEBBgCs.js} +1 -1
- package/dist/web/assets/sheet-DbEBBgCs.js.br +0 -0
- package/dist/web/assets/sheet-DbEBBgCs.js.gz +0 -0
- package/dist/web/assets/{skills-market-container-8VwHWKJN.js → skills-market-container-BwT-U8XF.js} +2 -2
- package/dist/web/assets/skills-market-container-BwT-U8XF.js.br +0 -0
- package/dist/web/assets/skills-market-container-BwT-U8XF.js.gz +0 -0
- package/dist/web/assets/sliders-horizontal-DfoeSLtp.js +1 -0
- package/dist/web/assets/sliders-horizontal-DfoeSLtp.js.br +0 -0
- package/dist/web/assets/sliders-horizontal-DfoeSLtp.js.gz +0 -0
- package/dist/web/assets/{third-party-marketplace-pane-BtZYBzru.js → third-party-marketplace-pane-Cva9dfRn.js} +1 -1
- package/dist/web/assets/third-party-marketplace-pane-Cva9dfRn.js.br +0 -0
- package/dist/web/assets/third-party-marketplace-pane-Cva9dfRn.js.gz +0 -0
- package/dist/web/assets/workbench-composer-BxYlmKUq.js +10 -0
- package/dist/web/assets/workbench-composer-BxYlmKUq.js.br +0 -0
- package/dist/web/assets/workbench-composer-BxYlmKUq.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-DFZ_PDdt.js +2 -0
- package/dist/web/assets/workbench-inspector-changes-DFZ_PDdt.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-DFZ_PDdt.js.gz +0 -0
- package/dist/web/assets/workbench-pet-canvas-DwkSGxpw.js +1 -0
- package/dist/web/assets/workbench-pet-canvas-DwkSGxpw.js.br +0 -0
- package/dist/web/assets/workbench-pet-canvas-DwkSGxpw.js.gz +0 -0
- package/dist/web/assets/workbench-shell-CnjG23lI.js +8 -0
- package/dist/web/assets/workbench-shell-CnjG23lI.js.br +0 -0
- package/dist/web/assets/workbench-shell-CnjG23lI.js.gz +0 -0
- package/dist/web/index.html +5 -5
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/package.json +2 -2
- package/dist/web/assets/button-group-DxqOhlVt.js.br +0 -0
- package/dist/web/assets/button-group-DxqOhlVt.js.gz +0 -0
- package/dist/web/assets/context-menu-D6mhhPGo.js.br +0 -0
- package/dist/web/assets/context-menu-D6mhhPGo.js.gz +0 -0
- package/dist/web/assets/dist-Czw-hil0.js.br +0 -0
- package/dist/web/assets/dist-Czw-hil0.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-CX8yGcaF.js +0 -2
- package/dist/web/assets/file-review-dialog-CX8yGcaF.js.br +0 -0
- package/dist/web/assets/file-review-dialog-CX8yGcaF.js.gz +0 -0
- package/dist/web/assets/git-commit-horizontal-CV-KjCHw.js +0 -1
- package/dist/web/assets/git-commit-horizontal-CV-KjCHw.js.br +0 -0
- package/dist/web/assets/git-commit-horizontal-CV-KjCHw.js.gz +0 -0
- package/dist/web/assets/git-history-panel-ChKO0MmG.js +0 -2
- package/dist/web/assets/git-history-panel-ChKO0MmG.js.br +0 -0
- package/dist/web/assets/git-history-panel-ChKO0MmG.js.gz +0 -0
- package/dist/web/assets/global-settings-dialog-Dmjldruk.js +0 -1
- package/dist/web/assets/global-settings-dialog-Dmjldruk.js.br +0 -0
- package/dist/web/assets/global-settings-dialog-Dmjldruk.js.gz +0 -0
- package/dist/web/assets/index-C1q8rvrB.css +0 -2
- package/dist/web/assets/index-C1q8rvrB.css.br +0 -0
- package/dist/web/assets/index-C1q8rvrB.css.gz +0 -0
- package/dist/web/assets/index-Dc0FOD_M.js +0 -4
- package/dist/web/assets/index-Dc0FOD_M.js.br +0 -0
- package/dist/web/assets/index-Dc0FOD_M.js.gz +0 -0
- package/dist/web/assets/initial-deps-CQxWMuPh.js.br +0 -0
- package/dist/web/assets/initial-deps-CQxWMuPh.js.gz +0 -0
- package/dist/web/assets/initial-deps-Dr1AWuHB.js +0 -1
- package/dist/web/assets/initial-deps-Dr1AWuHB.js.br +0 -0
- package/dist/web/assets/initial-deps-Dr1AWuHB.js.gz +0 -0
- package/dist/web/assets/installed-skills-pane-BfNddwjn.js.br +0 -0
- package/dist/web/assets/installed-skills-pane-BfNddwjn.js.gz +0 -0
- package/dist/web/assets/lazy-message-response-BpXGmE9E.js +0 -2
- package/dist/web/assets/lazy-message-response-BpXGmE9E.js.br +0 -0
- package/dist/web/assets/lazy-message-response-BpXGmE9E.js.gz +0 -0
- package/dist/web/assets/mcp-management-pane-Ch_kUuam.js.br +0 -0
- package/dist/web/assets/mcp-management-pane-Ch_kUuam.js.gz +0 -0
- package/dist/web/assets/message-response-KFxzclWt.js.br +0 -0
- package/dist/web/assets/message-response-KFxzclWt.js.gz +0 -0
- package/dist/web/assets/official-plugins-pane-CFbYqeRf.js.br +0 -0
- package/dist/web/assets/official-plugins-pane-CFbYqeRf.js.gz +0 -0
- package/dist/web/assets/project-file-popup-page-9jdg_OXD.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-9jdg_OXD.js.gz +0 -0
- package/dist/web/assets/project-source-panel-B-xuo6G6.js.br +0 -0
- package/dist/web/assets/project-source-panel-B-xuo6G6.js.gz +0 -0
- package/dist/web/assets/prompt-input-CS22f1Yj.js +0 -1
- package/dist/web/assets/prompt-input-CS22f1Yj.js.br +0 -0
- package/dist/web/assets/prompt-input-CS22f1Yj.js.gz +0 -0
- package/dist/web/assets/prompt-input-controls-CuE9VrWA.js.br +0 -0
- package/dist/web/assets/prompt-input-controls-CuE9VrWA.js.gz +0 -0
- package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js +0 -1
- package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js.br +0 -0
- package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js.gz +0 -0
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-BischM2-.js.br +0 -0
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-BischM2-.js.gz +0 -0
- package/dist/web/assets/scheduled-task-schedule-Cfuv_Kyf.js +0 -1
- package/dist/web/assets/scheduled-task-schedule-Cfuv_Kyf.js.br +0 -0
- package/dist/web/assets/scheduled-task-schedule-Cfuv_Kyf.js.gz +0 -0
- package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js +0 -2
- package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js.br +0 -0
- package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js.gz +0 -0
- package/dist/web/assets/scheduled-tasks-container-xtJWjMjU.css +0 -1
- package/dist/web/assets/scheduled-tasks-container-xtJWjMjU.css.br +0 -0
- package/dist/web/assets/scheduled-tasks-container-xtJWjMjU.css.gz +0 -0
- package/dist/web/assets/sheet-DTJIZQHt.js.br +0 -0
- package/dist/web/assets/sheet-DTJIZQHt.js.gz +0 -0
- package/dist/web/assets/skills-market-container-8VwHWKJN.js.br +0 -0
- package/dist/web/assets/skills-market-container-8VwHWKJN.js.gz +0 -0
- package/dist/web/assets/third-party-marketplace-pane-BtZYBzru.js.br +0 -0
- package/dist/web/assets/third-party-marketplace-pane-BtZYBzru.js.gz +0 -0
- package/dist/web/assets/workbench-composer-Dfa3le3p.js +0 -10
- package/dist/web/assets/workbench-composer-Dfa3le3p.js.br +0 -0
- package/dist/web/assets/workbench-composer-Dfa3le3p.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js +0 -2
- package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js.gz +0 -0
- package/dist/web/assets/workbench-pet-canvas-gckmllUf.js +0 -1
- package/dist/web/assets/workbench-pet-canvas-gckmllUf.js.br +0 -0
- package/dist/web/assets/workbench-pet-canvas-gckmllUf.js.gz +0 -0
- package/dist/web/assets/workbench-shell-0X1Ehypo.js +0 -8
- package/dist/web/assets/workbench-shell-0X1Ehypo.js.br +0 -0
- package/dist/web/assets/workbench-shell-0X1Ehypo.js.gz +0 -0
- /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
- /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
- /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-
|
|
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 {
|
|
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:
|
|
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 =
|
|
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:
|
|
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"] ||
|
|
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:
|
|
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"] ||
|
|
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"] ||
|
|
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
|
|
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
|
|
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
|
-
|
|
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 +=
|
|
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 += `${
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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 +=
|
|
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 += `${
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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 +=
|
|
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 += `${
|
|
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
|
|
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,
|
|
3925
|
+
res += stringifyTypedArray(value, join7, maximumBreadth);
|
|
3926
3926
|
keys = keys.slice(value.length);
|
|
3927
3927
|
maximumPropertiesToStringify -= value.length;
|
|
3928
|
-
separator =
|
|
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 =
|
|
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 =
|
|
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.
|
|
4470
|
-
var SUPPORTED_CODEX_VERSION_RANGE = ">=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 !==
|
|
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
|
|
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 =
|
|
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
|
|
6532
|
-
const sectionId = expectString(
|
|
6533
|
-
expectString(
|
|
6534
|
-
const 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 =
|
|
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
|
|
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 =
|
|
9450
|
-
|
|
9451
|
-
|
|
9452
|
-
|
|
9453
|
-
|
|
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
|
|
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 () =>
|
|
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 =
|
|
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
|
|
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(
|
|
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:
|
|
12314
|
-
request_permissions:
|
|
12315
|
-
rules:
|
|
12316
|
-
sandbox_approval:
|
|
12317
|
-
skill_approval:
|
|
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
|
}
|