@bryanhu/codexly 0.34.1 → 0.35.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 +27 -0
- package/README.md +3 -0
- package/README.zh-CN.md +3 -0
- package/dist/{chunk-CX3MHD3W.js → chunk-6TW6YUSL.js} +421 -325
- package/dist/{chunk-N244YZAA.js → chunk-BRKY2HKI.js} +23 -1
- package/dist/chunk-GBLVWFLZ.js +23 -0
- package/dist/{chunk-GTANGQWE.js → chunk-OM52Z4J7.js} +1 -1
- package/dist/{chunk-JHTU6235.js → chunk-RGMQBXXC.js} +699 -300
- package/dist/cli.js +6 -5
- package/dist/client/index.js +61 -12
- package/dist/historical-attachment-worker.js +94 -0
- package/dist/protocol/index.js +1 -1
- package/dist/providers/codex/index.js +3 -2
- package/dist/server/index.js +5 -4
- package/dist/web/.vite/manifest.json +211 -201
- package/dist/web/.vite/manifest.json.br +0 -0
- package/dist/web/.vite/manifest.json.gz +0 -0
- package/dist/web/assets/{abnfDiagram-N423BO3Z-CIs8hIzJ.js → abnfDiagram-N423BO3Z-DjEUmHES.js} +1 -1
- package/dist/web/assets/abnfDiagram-N423BO3Z-DjEUmHES.js.br +0 -0
- package/dist/web/assets/abnfDiagram-N423BO3Z-DjEUmHES.js.gz +0 -0
- package/dist/web/assets/{agent-settings-panel-nlSHgUSn.js → agent-settings-panel-CuLgzC2n.js} +1 -1
- package/dist/web/assets/agent-settings-panel-CuLgzC2n.js.br +0 -0
- package/dist/web/assets/agent-settings-panel-CuLgzC2n.js.gz +0 -0
- package/dist/web/assets/{architectureDiagram-T3A2C74G-Bs3ktNP5.js → architectureDiagram-T3A2C74G-DNtnW8Fq.js} +1 -1
- package/dist/web/assets/architectureDiagram-T3A2C74G-DNtnW8Fq.js.br +0 -0
- package/dist/web/assets/architectureDiagram-T3A2C74G-DNtnW8Fq.js.gz +0 -0
- package/dist/web/assets/{background-image-picker-qVC2tyE3.js → background-image-picker-D4xlUwrb.js} +1 -1
- package/dist/web/assets/background-image-picker-D4xlUwrb.js.br +0 -0
- package/dist/web/assets/background-image-picker-D4xlUwrb.js.gz +0 -0
- package/dist/web/assets/{chunk-5RXB4S5H-CZZnhtaV.js → chunk-5RXB4S5H-BDaXxnei.js} +1 -1
- package/dist/web/assets/chunk-5RXB4S5H-BDaXxnei.js.br +0 -0
- package/dist/web/assets/chunk-5RXB4S5H-BDaXxnei.js.gz +0 -0
- package/dist/web/assets/{chunk-6Q2QTUOP-F3pSVbiC.js → chunk-6Q2QTUOP-BcTojajm.js} +1 -1
- package/dist/web/assets/chunk-6Q2QTUOP-BcTojajm.js.br +0 -0
- package/dist/web/assets/chunk-6Q2QTUOP-BcTojajm.js.gz +0 -0
- package/dist/web/assets/{chunk-GF5L2VYU-DtEOvQdn.js → chunk-GF5L2VYU-XelwAXnk.js} +1 -1
- package/dist/web/assets/chunk-GF5L2VYU-XelwAXnk.js.br +0 -0
- package/dist/web/assets/chunk-GF5L2VYU-XelwAXnk.js.gz +0 -0
- package/dist/web/assets/{chunk-JQJVKLGR-BHL4KhjZ.js → chunk-JQJVKLGR-Cyok4-2b.js} +1 -1
- package/dist/web/assets/chunk-JQJVKLGR-Cyok4-2b.js.br +0 -0
- package/dist/web/assets/chunk-JQJVKLGR-Cyok4-2b.js.gz +0 -0
- package/dist/web/assets/{classDiagram-JCYQIIEL-CVbDkB9M.js → classDiagram-JCYQIIEL-B9HBTIG7.js} +1 -1
- package/dist/web/assets/classDiagram-JCYQIIEL-B9HBTIG7.js.br +0 -0
- package/dist/web/assets/classDiagram-JCYQIIEL-B9HBTIG7.js.gz +0 -0
- package/dist/web/assets/{classDiagram-v2-OCEON4UE-CVbDkB9M.js → classDiagram-v2-OCEON4UE-B9HBTIG7.js} +1 -1
- package/dist/web/assets/classDiagram-v2-OCEON4UE-B9HBTIG7.js.br +0 -0
- package/dist/web/assets/classDiagram-v2-OCEON4UE-B9HBTIG7.js.gz +0 -0
- package/dist/web/assets/code-highlighter-BDJkbu1d.js +3 -0
- package/dist/web/assets/code-highlighter-BDJkbu1d.js.br +0 -0
- package/dist/web/assets/code-highlighter-BDJkbu1d.js.gz +0 -0
- package/dist/web/assets/{commit-settings-panel-2rAqVa_3.js → commit-settings-panel-j2yqctr_.js} +1 -1
- package/dist/web/assets/commit-settings-panel-j2yqctr_.js.br +0 -0
- package/dist/web/assets/commit-settings-panel-j2yqctr_.js.gz +0 -0
- package/dist/web/assets/{cynefinDiagram-MW4NZA55-a8_N7W-y.js → cynefinDiagram-MW4NZA55-D9tIBEvv.js} +1 -1
- package/dist/web/assets/cynefinDiagram-MW4NZA55-D9tIBEvv.js.br +0 -0
- package/dist/web/assets/cynefinDiagram-MW4NZA55-D9tIBEvv.js.gz +0 -0
- package/dist/web/assets/{diagram-7IWD3JNH-B9Lkv0en.js → diagram-7IWD3JNH-BfnXF08-.js} +1 -1
- package/dist/web/assets/diagram-7IWD3JNH-BfnXF08-.js.br +0 -0
- package/dist/web/assets/diagram-7IWD3JNH-BfnXF08-.js.gz +0 -0
- package/dist/web/assets/{diagram-LBJQPF4R-CL0t6Ia0.js → diagram-LBJQPF4R-BlYQtbyl.js} +1 -1
- package/dist/web/assets/diagram-LBJQPF4R-BlYQtbyl.js.br +0 -0
- package/dist/web/assets/diagram-LBJQPF4R-BlYQtbyl.js.gz +0 -0
- package/dist/web/assets/{diagram-Q27KOJAE-D7QB_48L.js → diagram-Q27KOJAE-CDWObxjb.js} +1 -1
- package/dist/web/assets/diagram-Q27KOJAE-CDWObxjb.js.br +0 -0
- package/dist/web/assets/diagram-Q27KOJAE-CDWObxjb.js.gz +0 -0
- package/dist/web/assets/{diagram-UB23O5K3-DV58iDyq.js → diagram-UB23O5K3-DJnddvpy.js} +1 -1
- package/dist/web/assets/diagram-UB23O5K3-DJnddvpy.js.br +0 -0
- package/dist/web/assets/diagram-UB23O5K3-DJnddvpy.js.gz +0 -0
- package/dist/web/assets/{dist-jnof4ZZu.js → dist-Ci1kbFbB.js} +1 -1
- package/dist/web/assets/dist-Ci1kbFbB.js.br +0 -0
- package/dist/web/assets/dist-Ci1kbFbB.js.gz +0 -0
- package/dist/web/assets/{ebnfDiagram-BXEA7PRR-C54Dd_kV.js → ebnfDiagram-BXEA7PRR-D_b18zMS.js} +1 -1
- package/dist/web/assets/ebnfDiagram-BXEA7PRR-D_b18zMS.js.br +0 -0
- package/dist/web/assets/ebnfDiagram-BXEA7PRR-D_b18zMS.js.gz +0 -0
- package/dist/web/assets/{erDiagram-JOGREHBK-B83NMJhw.js → erDiagram-JOGREHBK-BOKR1NS3.js} +1 -1
- package/dist/web/assets/erDiagram-JOGREHBK-BOKR1NS3.js.br +0 -0
- package/dist/web/assets/erDiagram-JOGREHBK-BOKR1NS3.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-DvgO1Ae8.js +2 -0
- package/dist/web/assets/file-review-dialog-DvgO1Ae8.js.br +0 -0
- package/dist/web/assets/file-review-dialog-DvgO1Ae8.js.gz +0 -0
- package/dist/web/assets/{flowDiagram-UKHOOZJN-4x6NyWk2.js → flowDiagram-UKHOOZJN-CEamRwMR.js} +1 -1
- package/dist/web/assets/flowDiagram-UKHOOZJN-CEamRwMR.js.br +0 -0
- package/dist/web/assets/flowDiagram-UKHOOZJN-CEamRwMR.js.gz +0 -0
- package/dist/web/assets/git-commit-review-D5ge3jwI.js +2 -0
- package/dist/web/assets/git-commit-review-D5ge3jwI.js.br +0 -0
- package/dist/web/assets/git-commit-review-D5ge3jwI.js.gz +0 -0
- package/dist/web/assets/git-history-panel-DsGqR_Zc.js +1 -0
- package/dist/web/assets/git-history-panel-DsGqR_Zc.js.br +0 -0
- package/dist/web/assets/git-history-panel-DsGqR_Zc.js.gz +0 -0
- package/dist/web/assets/global-search-dialog-JzDBjqX4.js +2 -0
- package/dist/web/assets/global-search-dialog-JzDBjqX4.js.br +0 -0
- package/dist/web/assets/global-search-dialog-JzDBjqX4.js.gz +0 -0
- package/dist/web/assets/{global-settings-about-QnPZzZuN.js → global-settings-about-CULXi1Dn.js} +1 -1
- package/dist/web/assets/global-settings-about-CULXi1Dn.js.br +0 -0
- package/dist/web/assets/global-settings-about-CULXi1Dn.js.gz +0 -0
- package/dist/web/assets/{global-settings-page-DYYJnyg0.js → global-settings-page-AK_j6aZC.js} +2 -2
- package/dist/web/assets/global-settings-page-AK_j6aZC.js.br +0 -0
- package/dist/web/assets/global-settings-page-AK_j6aZC.js.gz +0 -0
- package/dist/web/assets/{global-settings-pets-Bx1MItgn.js → global-settings-pets-hPG36aUL.js} +1 -1
- package/dist/web/assets/global-settings-pets-hPG36aUL.js.br +0 -0
- package/dist/web/assets/global-settings-pets-hPG36aUL.js.gz +0 -0
- package/dist/web/assets/{highlighted-body-OFNGDK62-DUyZcQSF.js → highlighted-body-OFNGDK62-CoO9fhim.js} +1 -1
- package/dist/web/assets/highlighted-body-OFNGDK62-CoO9fhim.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-CoO9fhim.js.gz +0 -0
- package/dist/web/assets/{history-task-timeline-7DRGPm6t.js → history-task-timeline-CQphWf0m.js} +1 -1
- package/dist/web/assets/history-task-timeline-CQphWf0m.js.br +0 -0
- package/dist/web/assets/history-task-timeline-CQphWf0m.js.gz +0 -0
- package/dist/web/assets/{image-preview-DivFRWxv.js → image-preview-Dtx8uVmp.js} +2 -2
- package/dist/web/assets/image-preview-Dtx8uVmp.js.br +0 -0
- package/dist/web/assets/image-preview-Dtx8uVmp.js.gz +0 -0
- package/dist/web/assets/{image-preview-content-SHlFPatX.js → image-preview-content-zLsEpLCA.js} +2 -2
- package/dist/web/assets/image-preview-content-zLsEpLCA.js.br +0 -0
- package/dist/web/assets/image-preview-content-zLsEpLCA.js.gz +0 -0
- package/dist/web/assets/index-BUv6KmcO.css +2 -0
- package/dist/web/assets/index-BUv6KmcO.css.br +0 -0
- package/dist/web/assets/index-BUv6KmcO.css.gz +0 -0
- package/dist/web/assets/index-DR8WqP5v.js +4 -0
- package/dist/web/assets/index-DR8WqP5v.js.br +0 -0
- package/dist/web/assets/index-DR8WqP5v.js.gz +0 -0
- package/dist/web/assets/{infoDiagram-6WML65LV-Dudzuljd.js → infoDiagram-6WML65LV-DegAUKx4.js} +1 -1
- package/dist/web/assets/infoDiagram-6WML65LV-DegAUKx4.js.br +0 -0
- package/dist/web/assets/infoDiagram-6WML65LV-DegAUKx4.js.gz +0 -0
- package/dist/web/assets/{initial-deps-CjThEvcM.js → initial-deps-Be-R---T.js} +1 -1
- package/dist/web/assets/initial-deps-Be-R---T.js.br +0 -0
- package/dist/web/assets/initial-deps-Be-R---T.js.gz +0 -0
- package/dist/web/assets/initial-deps-DRuEePWq.js +2 -0
- package/dist/web/assets/initial-deps-DRuEePWq.js.br +0 -0
- package/dist/web/assets/initial-deps-DRuEePWq.js.gz +0 -0
- package/dist/web/assets/{installed-skills-pane-xlfIyXj3.js → installed-skills-pane-DBJ_KuXN.js} +1 -1
- package/dist/web/assets/installed-skills-pane-DBJ_KuXN.js.br +0 -0
- package/dist/web/assets/installed-skills-pane-DBJ_KuXN.js.gz +0 -0
- package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-DL-EqtUw.js → ishikawaDiagram-WSZJBQD7-CcWhd8w9.js} +1 -1
- package/dist/web/assets/ishikawaDiagram-WSZJBQD7-CcWhd8w9.js.br +0 -0
- package/dist/web/assets/ishikawaDiagram-WSZJBQD7-CcWhd8w9.js.gz +0 -0
- package/dist/web/assets/{kanban-definition-27J2QSJJ-C2eEzeXr.js → kanban-definition-27J2QSJJ-DEkge27F.js} +1 -1
- package/dist/web/assets/kanban-definition-27J2QSJJ-DEkge27F.js.br +0 -0
- package/dist/web/assets/kanban-definition-27J2QSJJ-DEkge27F.js.gz +0 -0
- package/dist/web/assets/lazy-message-response-3j-D3CVS.js +2 -0
- package/dist/web/assets/lazy-message-response-3j-D3CVS.js.br +0 -0
- package/dist/web/assets/lazy-message-response-3j-D3CVS.js.gz +0 -0
- package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js +65 -0
- package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js.br +0 -0
- package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js.gz +0 -0
- package/dist/web/assets/{mcp-management-pane-DkGnQLeq.js → mcp-management-pane-16qr0aVZ.js} +1 -1
- package/dist/web/assets/mcp-management-pane-16qr0aVZ.js.br +0 -0
- package/dist/web/assets/mcp-management-pane-16qr0aVZ.js.gz +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-kGjGANId.js +1 -0
- package/dist/web/assets/mermaid-GHXKKRXX-kGjGANId.js.br +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-kGjGANId.js.gz +0 -0
- package/dist/web/assets/{message-response-Cmz2Diu3.js → message-response-DWYIVlqg.js} +74 -74
- package/dist/web/assets/message-response-DWYIVlqg.js.br +0 -0
- package/dist/web/assets/message-response-DWYIVlqg.js.gz +0 -0
- package/dist/web/assets/{mindmap-definition-FAOFIHXS-BYjrCygr.js → mindmap-definition-FAOFIHXS-DubrGaue.js} +1 -1
- package/dist/web/assets/mindmap-definition-FAOFIHXS-DubrGaue.js.br +0 -0
- package/dist/web/assets/mindmap-definition-FAOFIHXS-DubrGaue.js.gz +0 -0
- package/dist/web/assets/{official-plugins-pane-DAdYsWfC.js → official-plugins-pane-vADxh_le.js} +1 -1
- package/dist/web/assets/official-plugins-pane-vADxh_le.js.br +0 -0
- package/dist/web/assets/official-plugins-pane-vADxh_le.js.gz +0 -0
- package/dist/web/assets/{patch-diff-viewer-xS0oLx5O.js → patch-diff-viewer-C5hjChAK.js} +3 -3
- package/dist/web/assets/patch-diff-viewer-C5hjChAK.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-C5hjChAK.js.gz +0 -0
- package/dist/web/assets/pdf-preview-BG-XpATo.js +3 -0
- package/dist/web/assets/pdf-preview-BG-XpATo.js.br +0 -0
- package/dist/web/assets/pdf-preview-BG-XpATo.js.gz +0 -0
- package/dist/web/assets/{pegDiagram-VL7TDLO6-CtYRxL4U.js → pegDiagram-VL7TDLO6-CJodWN8I.js} +1 -1
- package/dist/web/assets/pegDiagram-VL7TDLO6-CJodWN8I.js.br +0 -0
- package/dist/web/assets/pegDiagram-VL7TDLO6-CJodWN8I.js.gz +0 -0
- package/dist/web/assets/{personalization-settings-panel-CT3SQ4Vu.js → personalization-settings-panel-Br7qXDQ7.js} +1 -1
- package/dist/web/assets/personalization-settings-panel-Br7qXDQ7.js.br +0 -0
- package/dist/web/assets/personalization-settings-panel-Br7qXDQ7.js.gz +0 -0
- package/dist/web/assets/{pieDiagram-7S7Q4E2Y-Bdq2vyip.js → pieDiagram-7S7Q4E2Y-CHATPeJh.js} +1 -1
- package/dist/web/assets/pieDiagram-7S7Q4E2Y-CHATPeJh.js.br +0 -0
- package/dist/web/assets/pieDiagram-7S7Q4E2Y-CHATPeJh.js.gz +0 -0
- package/dist/web/assets/{project-file-popup-page-zPj3Gecj.js → project-file-popup-page-CmNJLTSV.js} +1 -1
- package/dist/web/assets/project-file-popup-page-CmNJLTSV.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-CmNJLTSV.js.gz +0 -0
- package/dist/web/assets/project-source-panel-ze7jsbMy.js +2 -0
- package/dist/web/assets/project-source-panel-ze7jsbMy.js.br +0 -0
- package/dist/web/assets/project-source-panel-ze7jsbMy.js.gz +0 -0
- package/dist/web/assets/{prompt-input-HHHMHdzj.js → prompt-input-Brfimssc.js} +1 -1
- package/dist/web/assets/prompt-input-Brfimssc.js.br +0 -0
- package/dist/web/assets/prompt-input-Brfimssc.js.gz +0 -0
- package/dist/web/assets/{railroadDiagram-AXF67PYL-C_xKQjH6.js → railroadDiagram-AXF67PYL-BOP9pMNb.js} +1 -1
- package/dist/web/assets/railroadDiagram-AXF67PYL-BOP9pMNb.js.br +0 -0
- package/dist/web/assets/railroadDiagram-AXF67PYL-BOP9pMNb.js.gz +0 -0
- package/dist/web/assets/{requirementDiagram-LRYGKXZP-B9-6SM38.js → requirementDiagram-LRYGKXZP-CG8KWt_j.js} +1 -1
- package/dist/web/assets/requirementDiagram-LRYGKXZP-CG8KWt_j.js.br +0 -0
- package/dist/web/assets/requirementDiagram-LRYGKXZP-CG8KWt_j.js.gz +0 -0
- package/dist/web/assets/{scheduled-task-date-time-picker-DtFk2PIk.js → scheduled-task-date-time-picker-DeOtns9O.js} +1 -1
- package/dist/web/assets/scheduled-task-date-time-picker-DeOtns9O.js.br +0 -0
- package/dist/web/assets/scheduled-task-date-time-picker-DeOtns9O.js.gz +0 -0
- package/dist/web/assets/{scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js → scheduled-task-floating-ui~scheduled-task-date-time-picker-CbWhx_7u.js} +1 -1
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-CbWhx_7u.js.br +0 -0
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-CbWhx_7u.js.gz +0 -0
- package/dist/web/assets/scheduled-tasks-container-a34CrlrM.js +2 -0
- package/dist/web/assets/scheduled-tasks-container-a34CrlrM.js.br +0 -0
- package/dist/web/assets/scheduled-tasks-container-a34CrlrM.js.gz +0 -0
- package/dist/web/assets/{sequenceDiagram-SI44F4Z6-DS13cFp5.js → sequenceDiagram-SI44F4Z6-DbZoTul2.js} +1 -1
- package/dist/web/assets/sequenceDiagram-SI44F4Z6-DbZoTul2.js.br +0 -0
- package/dist/web/assets/sequenceDiagram-SI44F4Z6-DbZoTul2.js.gz +0 -0
- package/dist/web/assets/{sheet-Byg2gkAE.js → sheet-B9MDuGoF.js} +1 -1
- package/dist/web/assets/sheet-B9MDuGoF.js.br +0 -0
- package/dist/web/assets/sheet-B9MDuGoF.js.gz +0 -0
- package/dist/web/assets/{shiki-bundle-CLewxArG.js → shiki-bundle-BlbGsyMZ.js} +1 -1
- package/dist/web/assets/shiki-bundle-BlbGsyMZ.js.br +0 -0
- package/dist/web/assets/shiki-bundle-BlbGsyMZ.js.gz +0 -0
- package/dist/web/assets/skills-market-container-CWO3CeMr.js +2 -0
- package/dist/web/assets/skills-market-container-CWO3CeMr.js.br +0 -0
- package/dist/web/assets/skills-market-container-CWO3CeMr.js.gz +0 -0
- package/dist/web/assets/split-workspace-menu-content-rImPq6wj.js +1 -0
- package/dist/web/assets/split-workspace-menu-content-rImPq6wj.js.br +0 -0
- package/dist/web/assets/split-workspace-menu-content-rImPq6wj.js.gz +0 -0
- package/dist/web/assets/{stateDiagram-OKZ733FA-Dc16lzBR.js → stateDiagram-OKZ733FA-BBZnBYr0.js} +1 -1
- package/dist/web/assets/stateDiagram-OKZ733FA-BBZnBYr0.js.br +0 -0
- package/dist/web/assets/stateDiagram-OKZ733FA-BBZnBYr0.js.gz +0 -0
- package/dist/web/assets/{stateDiagram-v2-UEYNNEHI-DMpPTWm4.js → stateDiagram-v2-UEYNNEHI-DrsX6D2d.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DrsX6D2d.js.br +1 -0
- package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DrsX6D2d.js.gz +0 -0
- package/dist/web/assets/{swimlanesDiagram-ULZ7WXOC-BFGAe9px.js → swimlanesDiagram-ULZ7WXOC-RILHYzJF.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-RILHYzJF.js.br +0 -0
- package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-RILHYzJF.js.gz +0 -0
- package/dist/web/assets/{third-party-marketplace-pane-Bt9mm_bV.js → third-party-marketplace-pane-DKWMNoa3.js} +1 -1
- package/dist/web/assets/third-party-marketplace-pane-DKWMNoa3.js.br +0 -0
- package/dist/web/assets/third-party-marketplace-pane-DKWMNoa3.js.gz +0 -0
- package/dist/web/assets/{timeline-definition-Z64GVDOM-B-ybp4wL.js → timeline-definition-Z64GVDOM-BQMes8Ld.js} +1 -1
- package/dist/web/assets/timeline-definition-Z64GVDOM-BQMes8Ld.js.br +0 -0
- package/dist/web/assets/timeline-definition-Z64GVDOM-BQMes8Ld.js.gz +0 -0
- package/dist/web/assets/{vennDiagram-T6HMQDX7-Du4Kq6DY.js → vennDiagram-T6HMQDX7-qBMuOWPn.js} +1 -1
- package/dist/web/assets/vennDiagram-T6HMQDX7-qBMuOWPn.js.br +0 -0
- package/dist/web/assets/vennDiagram-T6HMQDX7-qBMuOWPn.js.gz +0 -0
- package/dist/web/assets/{wardleyDiagram-T6FBY63Y-Dn8N9v_V.js → wardleyDiagram-T6FBY63Y-BXVFrJeX.js} +1 -1
- package/dist/web/assets/wardleyDiagram-T6FBY63Y-BXVFrJeX.js.br +0 -0
- package/dist/web/assets/wardleyDiagram-T6FBY63Y-BXVFrJeX.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-D5k96_nR.js +2 -0
- package/dist/web/assets/workbench-inspector-changes-D5k96_nR.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-D5k96_nR.js.gz +0 -0
- package/dist/web/assets/{workbench-pet-canvas-CEcRG47k.js → workbench-pet-canvas-BM6S31jL.js} +1 -1
- package/dist/web/assets/workbench-pet-canvas-BM6S31jL.js.br +0 -0
- package/dist/web/assets/workbench-pet-canvas-BM6S31jL.js.gz +0 -0
- package/dist/web/assets/workbench-shell-DEH5FG9a.js +14 -0
- package/dist/web/assets/workbench-shell-DEH5FG9a.js.br +0 -0
- package/dist/web/assets/workbench-shell-DEH5FG9a.js.gz +0 -0
- package/dist/web/assets/{xychartDiagram-ELKLHX3M-BUDqP7n9.js → xychartDiagram-ELKLHX3M-DT2u1V83.js} +1 -1
- package/dist/web/assets/xychartDiagram-ELKLHX3M-DT2u1V83.js.br +0 -0
- package/dist/web/assets/xychartDiagram-ELKLHX3M-DT2u1V83.js.gz +0 -0
- package/dist/web/index.html +5 -6
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/package.json +1 -1
- package/dist/web/assets/abnfDiagram-N423BO3Z-CIs8hIzJ.js.br +0 -0
- package/dist/web/assets/abnfDiagram-N423BO3Z-CIs8hIzJ.js.gz +0 -0
- package/dist/web/assets/agent-settings-panel-nlSHgUSn.js.br +0 -0
- package/dist/web/assets/agent-settings-panel-nlSHgUSn.js.gz +0 -0
- package/dist/web/assets/architectureDiagram-T3A2C74G-Bs3ktNP5.js.br +0 -0
- package/dist/web/assets/architectureDiagram-T3A2C74G-Bs3ktNP5.js.gz +0 -0
- package/dist/web/assets/background-image-picker-qVC2tyE3.js.br +0 -0
- package/dist/web/assets/background-image-picker-qVC2tyE3.js.gz +0 -0
- package/dist/web/assets/chunk-5RXB4S5H-CZZnhtaV.js.br +0 -0
- package/dist/web/assets/chunk-5RXB4S5H-CZZnhtaV.js.gz +0 -0
- package/dist/web/assets/chunk-6Q2QTUOP-F3pSVbiC.js.br +0 -0
- package/dist/web/assets/chunk-6Q2QTUOP-F3pSVbiC.js.gz +0 -0
- package/dist/web/assets/chunk-GF5L2VYU-DtEOvQdn.js.br +0 -0
- package/dist/web/assets/chunk-GF5L2VYU-DtEOvQdn.js.gz +0 -0
- package/dist/web/assets/chunk-JQJVKLGR-BHL4KhjZ.js.br +0 -0
- package/dist/web/assets/chunk-JQJVKLGR-BHL4KhjZ.js.gz +0 -0
- package/dist/web/assets/classDiagram-JCYQIIEL-CVbDkB9M.js.br +0 -0
- package/dist/web/assets/classDiagram-JCYQIIEL-CVbDkB9M.js.gz +0 -0
- package/dist/web/assets/classDiagram-v2-OCEON4UE-CVbDkB9M.js.br +0 -0
- package/dist/web/assets/classDiagram-v2-OCEON4UE-CVbDkB9M.js.gz +0 -0
- package/dist/web/assets/code-highlighter-DRXtndXt.js +0 -1
- package/dist/web/assets/code-highlighter-DRXtndXt.js.br +0 -0
- package/dist/web/assets/code-highlighter-DRXtndXt.js.gz +0 -0
- package/dist/web/assets/commit-settings-panel-2rAqVa_3.js.br +0 -0
- package/dist/web/assets/commit-settings-panel-2rAqVa_3.js.gz +0 -0
- package/dist/web/assets/cynefinDiagram-MW4NZA55-a8_N7W-y.js.br +0 -0
- package/dist/web/assets/cynefinDiagram-MW4NZA55-a8_N7W-y.js.gz +0 -0
- package/dist/web/assets/diagram-7IWD3JNH-B9Lkv0en.js.br +0 -0
- package/dist/web/assets/diagram-7IWD3JNH-B9Lkv0en.js.gz +0 -0
- package/dist/web/assets/diagram-LBJQPF4R-CL0t6Ia0.js.br +0 -0
- package/dist/web/assets/diagram-LBJQPF4R-CL0t6Ia0.js.gz +0 -0
- package/dist/web/assets/diagram-Q27KOJAE-D7QB_48L.js.br +0 -0
- package/dist/web/assets/diagram-Q27KOJAE-D7QB_48L.js.gz +0 -0
- package/dist/web/assets/diagram-UB23O5K3-DV58iDyq.js.br +0 -0
- package/dist/web/assets/diagram-UB23O5K3-DV58iDyq.js.gz +0 -0
- package/dist/web/assets/dist-jnof4ZZu.js.br +0 -0
- package/dist/web/assets/dist-jnof4ZZu.js.gz +0 -0
- package/dist/web/assets/ebnfDiagram-BXEA7PRR-C54Dd_kV.js.br +0 -0
- package/dist/web/assets/ebnfDiagram-BXEA7PRR-C54Dd_kV.js.gz +0 -0
- package/dist/web/assets/erDiagram-JOGREHBK-B83NMJhw.js.br +0 -0
- package/dist/web/assets/erDiagram-JOGREHBK-B83NMJhw.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-CcxGGOW7.js +0 -2
- package/dist/web/assets/file-review-dialog-CcxGGOW7.js.br +0 -0
- package/dist/web/assets/file-review-dialog-CcxGGOW7.js.gz +0 -0
- package/dist/web/assets/flowDiagram-UKHOOZJN-4x6NyWk2.js.br +0 -2
- package/dist/web/assets/flowDiagram-UKHOOZJN-4x6NyWk2.js.gz +0 -0
- package/dist/web/assets/git-commit-review-sswj11C9.js +0 -2
- package/dist/web/assets/git-commit-review-sswj11C9.js.br +0 -0
- package/dist/web/assets/git-commit-review-sswj11C9.js.gz +0 -0
- package/dist/web/assets/git-history-panel-rd3E2f9s.js +0 -1
- package/dist/web/assets/git-history-panel-rd3E2f9s.js.br +0 -0
- package/dist/web/assets/git-history-panel-rd3E2f9s.js.gz +0 -0
- package/dist/web/assets/global-search-dialog-PwyNRt1N.js +0 -2
- package/dist/web/assets/global-search-dialog-PwyNRt1N.js.br +0 -0
- package/dist/web/assets/global-search-dialog-PwyNRt1N.js.gz +0 -0
- package/dist/web/assets/global-settings-about-QnPZzZuN.js.br +0 -0
- package/dist/web/assets/global-settings-about-QnPZzZuN.js.gz +0 -0
- package/dist/web/assets/global-settings-page-DYYJnyg0.js.br +0 -0
- package/dist/web/assets/global-settings-page-DYYJnyg0.js.gz +0 -0
- package/dist/web/assets/global-settings-pets-Bx1MItgn.js.br +0 -0
- package/dist/web/assets/global-settings-pets-Bx1MItgn.js.gz +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-DUyZcQSF.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-DUyZcQSF.js.gz +0 -0
- package/dist/web/assets/history-task-timeline-7DRGPm6t.js.br +0 -0
- package/dist/web/assets/history-task-timeline-7DRGPm6t.js.gz +0 -0
- package/dist/web/assets/image-preview-DivFRWxv.js.br +0 -0
- package/dist/web/assets/image-preview-DivFRWxv.js.gz +0 -0
- package/dist/web/assets/image-preview-content-SHlFPatX.js.br +0 -0
- package/dist/web/assets/image-preview-content-SHlFPatX.js.gz +0 -0
- package/dist/web/assets/index-BVD-j9ba.css +0 -2
- package/dist/web/assets/index-BVD-j9ba.css.br +0 -0
- package/dist/web/assets/index-BVD-j9ba.css.gz +0 -0
- package/dist/web/assets/index-C-YUvCZy.js +0 -4
- package/dist/web/assets/index-C-YUvCZy.js.br +0 -0
- package/dist/web/assets/index-C-YUvCZy.js.gz +0 -0
- package/dist/web/assets/infoDiagram-6WML65LV-Dudzuljd.js.br +0 -0
- package/dist/web/assets/infoDiagram-6WML65LV-Dudzuljd.js.gz +0 -0
- package/dist/web/assets/initial-deps-CANa4ch0.js +0 -2
- package/dist/web/assets/initial-deps-CANa4ch0.js.br +0 -0
- package/dist/web/assets/initial-deps-CANa4ch0.js.gz +0 -0
- package/dist/web/assets/initial-deps-CjThEvcM.js.br +0 -0
- package/dist/web/assets/initial-deps-CjThEvcM.js.gz +0 -0
- package/dist/web/assets/installed-skills-pane-xlfIyXj3.js.br +0 -0
- package/dist/web/assets/installed-skills-pane-xlfIyXj3.js.gz +0 -0
- package/dist/web/assets/ishikawaDiagram-WSZJBQD7-DL-EqtUw.js.br +0 -0
- package/dist/web/assets/ishikawaDiagram-WSZJBQD7-DL-EqtUw.js.gz +0 -0
- package/dist/web/assets/kanban-definition-27J2QSJJ-C2eEzeXr.js.br +0 -0
- package/dist/web/assets/kanban-definition-27J2QSJJ-C2eEzeXr.js.gz +0 -0
- package/dist/web/assets/lazy-message-response-BHNzFjnC.js +0 -2
- package/dist/web/assets/lazy-message-response-BHNzFjnC.js.br +0 -0
- package/dist/web/assets/lazy-message-response-BHNzFjnC.js.gz +0 -0
- package/dist/web/assets/mcp-management-pane-DkGnQLeq.js.br +0 -0
- package/dist/web/assets/mcp-management-pane-DkGnQLeq.js.gz +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-D8qgMyDU.js +0 -1
- package/dist/web/assets/mermaid-GHXKKRXX-D8qgMyDU.js.br +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-D8qgMyDU.js.gz +0 -0
- package/dist/web/assets/message-response-Cmz2Diu3.js.br +0 -0
- package/dist/web/assets/message-response-Cmz2Diu3.js.gz +0 -0
- package/dist/web/assets/mindmap-definition-FAOFIHXS-BYjrCygr.js.br +0 -0
- package/dist/web/assets/mindmap-definition-FAOFIHXS-BYjrCygr.js.gz +0 -0
- package/dist/web/assets/official-plugins-pane-DAdYsWfC.js.br +0 -0
- package/dist/web/assets/official-plugins-pane-DAdYsWfC.js.gz +0 -0
- package/dist/web/assets/patch-diff-viewer-xS0oLx5O.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-xS0oLx5O.js.gz +0 -0
- package/dist/web/assets/pegDiagram-VL7TDLO6-CtYRxL4U.js.br +0 -0
- package/dist/web/assets/pegDiagram-VL7TDLO6-CtYRxL4U.js.gz +0 -0
- package/dist/web/assets/personalization-settings-panel-CT3SQ4Vu.js.br +0 -0
- package/dist/web/assets/personalization-settings-panel-CT3SQ4Vu.js.gz +0 -0
- package/dist/web/assets/pieDiagram-7S7Q4E2Y-Bdq2vyip.js.br +0 -0
- package/dist/web/assets/pieDiagram-7S7Q4E2Y-Bdq2vyip.js.gz +0 -0
- package/dist/web/assets/project-file-popup-page-zPj3Gecj.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-zPj3Gecj.js.gz +0 -0
- package/dist/web/assets/project-source-panel-DMqwrWYJ.js +0 -3
- package/dist/web/assets/project-source-panel-DMqwrWYJ.js.br +0 -0
- package/dist/web/assets/project-source-panel-DMqwrWYJ.js.gz +0 -0
- package/dist/web/assets/prompt-input-HHHMHdzj.js.br +0 -0
- package/dist/web/assets/prompt-input-HHHMHdzj.js.gz +0 -0
- package/dist/web/assets/railroadDiagram-AXF67PYL-C_xKQjH6.js.br +0 -0
- package/dist/web/assets/railroadDiagram-AXF67PYL-C_xKQjH6.js.gz +0 -0
- package/dist/web/assets/requirementDiagram-LRYGKXZP-B9-6SM38.js.br +0 -0
- package/dist/web/assets/requirementDiagram-LRYGKXZP-B9-6SM38.js.gz +0 -0
- package/dist/web/assets/scheduled-task-date-time-picker-DtFk2PIk.js.br +0 -0
- package/dist/web/assets/scheduled-task-date-time-picker-DtFk2PIk.js.gz +0 -0
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js.br +0 -0
- package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js.gz +0 -0
- package/dist/web/assets/scheduled-tasks-container-CkXA7caR.js +0 -2
- package/dist/web/assets/scheduled-tasks-container-CkXA7caR.js.br +0 -0
- package/dist/web/assets/scheduled-tasks-container-CkXA7caR.js.gz +0 -0
- package/dist/web/assets/sequenceDiagram-SI44F4Z6-DS13cFp5.js.br +0 -0
- package/dist/web/assets/sequenceDiagram-SI44F4Z6-DS13cFp5.js.gz +0 -0
- package/dist/web/assets/sheet-Byg2gkAE.js.br +0 -0
- package/dist/web/assets/sheet-Byg2gkAE.js.gz +0 -0
- package/dist/web/assets/shiki-bundle-CLewxArG.js.br +0 -3
- package/dist/web/assets/shiki-bundle-CLewxArG.js.gz +0 -0
- package/dist/web/assets/skills-market-container-BQkCE5hm.js +0 -2
- package/dist/web/assets/skills-market-container-BQkCE5hm.js.br +0 -0
- package/dist/web/assets/skills-market-container-BQkCE5hm.js.gz +0 -0
- package/dist/web/assets/snapshot-memory-BU8oqjvK.js +0 -1
- package/dist/web/assets/snapshot-memory-BU8oqjvK.js.br +0 -0
- package/dist/web/assets/snapshot-memory-BU8oqjvK.js.gz +0 -0
- package/dist/web/assets/split-workspace-menu-content-6G08udT3.js +0 -1
- package/dist/web/assets/split-workspace-menu-content-6G08udT3.js.br +0 -0
- package/dist/web/assets/split-workspace-menu-content-6G08udT3.js.gz +0 -0
- package/dist/web/assets/stateDiagram-OKZ733FA-Dc16lzBR.js.br +0 -0
- package/dist/web/assets/stateDiagram-OKZ733FA-Dc16lzBR.js.gz +0 -0
- package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DMpPTWm4.js.br +0 -0
- package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DMpPTWm4.js.gz +0 -0
- package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BFGAe9px.js.br +0 -0
- package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BFGAe9px.js.gz +0 -0
- package/dist/web/assets/third-party-marketplace-pane-Bt9mm_bV.js.br +0 -0
- package/dist/web/assets/third-party-marketplace-pane-Bt9mm_bV.js.gz +0 -0
- package/dist/web/assets/timeline-definition-Z64GVDOM-B-ybp4wL.js.br +0 -0
- package/dist/web/assets/timeline-definition-Z64GVDOM-B-ybp4wL.js.gz +0 -0
- package/dist/web/assets/vennDiagram-T6HMQDX7-Du4Kq6DY.js.br +0 -0
- package/dist/web/assets/vennDiagram-T6HMQDX7-Du4Kq6DY.js.gz +0 -0
- package/dist/web/assets/wardleyDiagram-T6FBY63Y-Dn8N9v_V.js.br +0 -0
- package/dist/web/assets/wardleyDiagram-T6FBY63Y-Dn8N9v_V.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-Bz2Q8-Uy.js +0 -2
- package/dist/web/assets/workbench-inspector-changes-Bz2Q8-Uy.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-Bz2Q8-Uy.js.gz +0 -0
- package/dist/web/assets/workbench-pet-canvas-CEcRG47k.js.br +0 -0
- package/dist/web/assets/workbench-pet-canvas-CEcRG47k.js.gz +0 -0
- package/dist/web/assets/workbench-shell-D01RgKwg.js +0 -14
- package/dist/web/assets/workbench-shell-D01RgKwg.js.br +0 -0
- package/dist/web/assets/workbench-shell-D01RgKwg.js.gz +0 -0
- package/dist/web/assets/xychartDiagram-ELKLHX3M-BUDqP7n9.js.br +0 -0
- package/dist/web/assets/xychartDiagram-ELKLHX3M-BUDqP7n9.js.gz +0 -0
- /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~l4z6ozb1-ClgveiMa.js} +0 -0
- /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js.br → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~l4z6ozb1-ClgveiMa.js.br} +0 -0
- /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js.gz → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~l4z6ozb1-ClgveiMa.js.gz} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-RGMQBXXC.js';
|
|
3
|
+
import { value_exports } from './chunk-OM52Z4J7.js';
|
|
4
4
|
import { normalizeCustomModelReasoning, WorkbenchPetProviderError, listTaskCatalog, PendingRequestResolutionError, restoreAsyncQuestionAnswers, deleteArchivedTasks, queryCompletedTasks, CompletedTasksQueryError, submitTask, TaskSubmissionError, collectQuestionGroups, formatQuestionAnswers, ProjectTodoError, saveProjectTodo } from './chunk-REIMOLGX.js';
|
|
5
|
-
import { Type, SkillInstallScopeSchema, ScheduledTaskSchema, SubmitTaskResponseSchema, AgentTaskSchema, AsyncQuestionGroupSchema, AnswerAsyncQuestionResultSchema, AgentTurnSchema, DEFAULT_COMMIT_MESSAGE_MODEL, TEMPORARY_TASK_API_PATH, TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_FILE_BYTES, AccessStatusResponseSchema, PairAccessRequestSchema, BingWallpaperCatalogSchema, HealthResponseSchema, AppInfoResponseSchema, AppUpdateProgressResponseSchema, AgentMutationErrorSchema, InstallAppUpdateResponseSchema, InstallAppUpdateRequestSchema, EventStreamMetricsResponseSchema, AgentCapabilitiesSchema, AgentModelPageSchema, AgentGlobalSettingsResponseSchema, AgentGlobalSettingsSchema, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, GlobalInstructionsSchema, MemorySettingsSchema, AgentPreferencesSchema, SaveGlobalInstructionsSchema, MemorySettingsUpdateSchema, PersonalizationResetSchema, HistoryCompressionResultSchema, AgentProviderConnectionStatusSchema, StartOfficialProviderLoginResponseSchema, StartOfficialProviderLoginRequestSchema, AgentProviderConnectionMutationResponseSchema, CancelProviderLoginRequestSchema, ConfigureCustomProviderResponseSchema, ConfigureCustomProviderRequestSchema, WorkbenchPetCatalogResponseSchema, WorkbenchPetDownloadResponseSchema, WorkbenchPetDownloadRequestSchema, ProjectPageSchema, HostFileListingSchema, HostFileQuerySchema, ProjectDirectoryListingSchema, ProjectDirectoryQuerySchema, ProjectOpenCapabilitiesResponseSchema, OpenProjectResponseSchema, ProjectRootQuerySchema, OpenProjectRequestSchema, ReorderProjectsResponseSchema, ReorderProjectsRequestSchema, AgentSkillPageSchema, AgentProjectDefaultsResponseSchema, AgentProjectDefaultsSchema, AddProjectResponseSchema, AddProjectRequestSchema, RenameProjectResponseSchema, RenameProjectRequestSchema, RemoveProjectResponseSchema, RemoveProjectRequestSchema, PluginReconcileResultSchema, InstalledSkillPageSchema, OfficialPluginPageSchema, OfficialPluginDetailSchema, OfficialPluginInstallResponseSchema, OfficialPluginUninstallResponseSchema, ClawhubSkillPageSchema, ClawhubSkillDetailSchema, ConfiguredMcpServerPageSchema, OpenSkillDirectoryResponseSchema, SetSkillEnabledResponseSchema, SetMcpServerEnabledResponseSchema, SkillInstallResponseSchema, ScheduledTaskPreviewSchema, ScheduledTaskPreviewRequestSchema, ScheduledTaskPageSchema, ScheduledTaskMutationResponseSchema, ScheduledTaskInputSchema, DeleteScheduledTaskResponseSchema, SetScheduledTaskEnabledRequestSchema, AgentTaskPageSchema, UnsubscribeAgentTaskResponseSchema, AgentTaskSnapshotResponseSchema, AgentMcpServerPageSchema, AgentBackgroundTerminalPageSchema, TerminateAgentBackgroundTerminalResponseSchema, PinAgentTaskResponseSchema, PinAgentTaskRequestSchema, RenameAgentTaskResponseSchema, RenameAgentTaskRequestSchema, ArchiveAgentTaskResponseSchema, ArchiveAgentTaskRequestSchema, UnarchiveAgentTaskResponseSchema, UnarchiveAgentTaskRequestSchema, DeleteAgentTaskResponseSchema, DeleteAgentTaskRequestSchema, TaskSearchPageSchema, TaskSearchQuerySchema, SearchOccurrencesPageSchema, SearchOccurrencesQuerySchema, StartAgentTaskResponseSchema, StartAgentTaskRequestSchema, StartAgentTurnResponseSchema, StartAgentTurnRequestSchema, SteerAgentTurnResponseSchema, SteerAgentTurnRequestSchema, InterruptAgentTurnResponseSchema, InterruptAgentTurnRequestSchema, ResolvePendingRequestResponseSchema, ResolvePendingRequestRequestSchema, SubmitTaskRequestSchema, AsyncQuestionPageSchema, AnswerAsyncQuestionResponseSchema, AnswerAsyncQuestionRequestSchema, DismissAsyncQuestionsRequestSchema, ProjectTodoPageSchema, ProjectTodoResponseSchema, ProjectTodoDraftSchema, SaveProjectTodoRequestSchema, DeleteProjectTodoResponseSchema, DeleteProjectTodoRequestSchema, AgentQueuedSubmissionListSchema, AddAgentQueuedSubmissionResponseSchema, AddAgentQueuedSubmissionRequestSchema, UpdateAgentQueuedSubmissionResponseSchema, UpdateAgentQueuedSubmissionRequestSchema, DeleteAgentQueuedSubmissionResponseSchema, ReorderAgentQueuedSubmissionsResponseSchema, ReorderAgentQueuedSubmissionsRequestSchema, StartAgentQueuedSubmissionResponseSchema, StartAgentQueuedSubmissionRequestSchema, AgentPromptInputSchema, AgentProviderConnectionRecordSchema, MAX_AGENT_IMAGES, MAX_AGENT_IMAGE_TOTAL_BYTES, MAX_AGENT_FILE_TOTAL_BYTES, CODEXLY_USER_AGENT, CreateProjectDirectoryResponseSchema, CreateProjectDirectoryRequestSchema, isValidProjectDirectoryName, ProjectGitStatusSchema, ProjectGitStatusQuerySchema, ProjectGitHistoryPageSchema, ProjectGitHistoryQuerySchema, ProjectGitCommitFilesPageSchema, ProjectGitCommitFilesQuerySchema, ProjectGitCommitFileDiffSchema, ProjectGitCommitFileDiffQuerySchema, SwitchProjectBranchRequestSchema, CreateProjectBranchRequestSchema, GenerateCommitMessageResponseSchema, GenerateCommitMessageRequestSchema, CommitProjectChangesResponseSchema, CommitProjectChangesRequestSchema, ProjectSourceFileQuerySchema, ProjectFileTreeSchema, ProjectFileTreeQuerySchema, ProjectFileSearchPageSchema, ProjectFileSearchQuerySchema, StopProjectFileSearchResponseSchema, StopProjectFileSearchRequestSchema, ProjectSourceFileSchema, AgentAttachmentUploadResponseSchema, HostFileKindSchema, ImportHostAttachmentRequestSchema, AgentAttachmentKindSchema, AgentTaskSettingsResponseSchema, AgentTaskSettingsSchema, ReloadAgentMcpServersResponseSchema, ReloadAgentMcpServersRequestSchema, ReviewAgentTaskResponseSchema, ReviewAgentTaskRequestSchema, CompactAgentTaskResponseSchema, CompactAgentTaskRequestSchema, ForkAgentTaskResponseSchema, ForkAgentTaskRequestSchema, UploadAgentFeedbackResponseSchema, UploadAgentFeedbackRequestSchema, DeleteArchivedTasksResponseSchema, DeleteArchivedTasksRequestSchema, AgentTaskCatalogSchema, TaskCatalogQuerySchema, CompletedTasksPageSchema, CompletedTasksQuerySchema, UpdateTaskSettingsAndDefaultsResponseSchema, UpdateTaskSettingsAndDefaultsRequestSchema, NavigableAgentTaskResponseSchema, OpenAgentTaskAttachmentResponseSchema, OpenAgentTaskAttachmentRequestSchema, UpdateAgentGoalResponseSchema, UpdateAgentGoalRequestSchema, ClearAgentGoalResponseSchema, ProjectTodoSchema, AgentMessageAttachmentSchema, ProjectGitWorktreePageSchema, CreateTaskWorktreeResponseSchema, CreateProjectWorktreeRequestSchema, CreateProjectWorktreeResponseSchema, ProjectWorktreeMutationResponseSchema, SwitchProjectWorktreeRequestSchema, RenameProjectFileResponseSchema, RenameProjectFileRequestSchema, DeleteProjectFileResponseSchema, DeleteProjectFileRequestSchema,
|
|
5
|
+
import { Type, SkillInstallScopeSchema, ScheduledTaskSchema, SubmitTaskResponseSchema, AgentTaskSchema, AsyncQuestionGroupSchema, AnswerAsyncQuestionResultSchema, AgentTurnSchema, MAX_AGENT_EVENT_BYTES, DEFAULT_COMMIT_MESSAGE_MODEL, TEMPORARY_TASK_API_PATH, TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_FILE_BYTES, AccessStatusResponseSchema, PairAccessRequestSchema, BingWallpaperCatalogSchema, HealthResponseSchema, AppInfoResponseSchema, AppUpdateProgressResponseSchema, AgentMutationErrorSchema, InstallAppUpdateResponseSchema, InstallAppUpdateRequestSchema, EventStreamMetricsResponseSchema, AgentCapabilitiesSchema, AgentModelPageSchema, AgentGlobalSettingsResponseSchema, AgentGlobalSettingsSchema, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, GlobalInstructionsSchema, MemorySettingsSchema, AgentPreferencesSchema, SaveGlobalInstructionsSchema, MemorySettingsUpdateSchema, PersonalizationResetSchema, HistoryCompressionResultSchema, AgentProviderConnectionStatusSchema, StartOfficialProviderLoginResponseSchema, StartOfficialProviderLoginRequestSchema, AgentProviderConnectionMutationResponseSchema, CancelProviderLoginRequestSchema, ConfigureCustomProviderResponseSchema, ConfigureCustomProviderRequestSchema, WorkbenchPetCatalogResponseSchema, WorkbenchPetDownloadResponseSchema, WorkbenchPetDownloadRequestSchema, ProjectPageSchema, HostFileListingSchema, HostFileQuerySchema, ProjectDirectoryListingSchema, ProjectDirectoryQuerySchema, ProjectOpenCapabilitiesResponseSchema, OpenProjectResponseSchema, ProjectRootQuerySchema, OpenProjectRequestSchema, ReorderProjectsResponseSchema, ReorderProjectsRequestSchema, AgentSkillPageSchema, AgentProjectDefaultsResponseSchema, AgentProjectDefaultsSchema, AddProjectResponseSchema, AddProjectRequestSchema, RenameProjectResponseSchema, RenameProjectRequestSchema, RemoveProjectResponseSchema, RemoveProjectRequestSchema, PluginReconcileResultSchema, InstalledSkillPageSchema, OfficialPluginPageSchema, OfficialPluginDetailSchema, OfficialPluginInstallResponseSchema, OfficialPluginUninstallResponseSchema, ClawhubSkillPageSchema, ClawhubSkillDetailSchema, ConfiguredMcpServerPageSchema, OpenSkillDirectoryResponseSchema, SetSkillEnabledResponseSchema, SetMcpServerEnabledResponseSchema, SkillInstallResponseSchema, ScheduledTaskPreviewSchema, ScheduledTaskPreviewRequestSchema, ScheduledTaskPageSchema, ScheduledTaskMutationResponseSchema, ScheduledTaskInputSchema, DeleteScheduledTaskResponseSchema, SetScheduledTaskEnabledRequestSchema, AgentTaskPageSchema, UnsubscribeAgentTaskResponseSchema, AgentTaskSnapshotResponseSchema, AgentMcpServerPageSchema, AgentBackgroundTerminalPageSchema, TerminateAgentBackgroundTerminalResponseSchema, PinAgentTaskResponseSchema, PinAgentTaskRequestSchema, RenameAgentTaskResponseSchema, RenameAgentTaskRequestSchema, ArchiveAgentTaskResponseSchema, ArchiveAgentTaskRequestSchema, UnarchiveAgentTaskResponseSchema, UnarchiveAgentTaskRequestSchema, DeleteAgentTaskResponseSchema, DeleteAgentTaskRequestSchema, TaskSearchPageSchema, TaskSearchQuerySchema, SearchOccurrencesPageSchema, SearchOccurrencesQuerySchema, StartAgentTaskResponseSchema, StartAgentTaskRequestSchema, StartAgentTurnResponseSchema, StartAgentTurnRequestSchema, SteerAgentTurnResponseSchema, SteerAgentTurnRequestSchema, InterruptAgentTurnResponseSchema, InterruptAgentTurnRequestSchema, ResolvePendingRequestResponseSchema, ResolvePendingRequestRequestSchema, SubmitTaskRequestSchema, AsyncQuestionPageSchema, AnswerAsyncQuestionResponseSchema, AnswerAsyncQuestionRequestSchema, DismissAsyncQuestionsRequestSchema, ProjectTodoPageSchema, ProjectTodoResponseSchema, ProjectTodoDraftSchema, SaveProjectTodoRequestSchema, DeleteProjectTodoResponseSchema, DeleteProjectTodoRequestSchema, AgentQueuedSubmissionListSchema, AddAgentQueuedSubmissionResponseSchema, AddAgentQueuedSubmissionRequestSchema, UpdateAgentQueuedSubmissionResponseSchema, UpdateAgentQueuedSubmissionRequestSchema, DeleteAgentQueuedSubmissionResponseSchema, ReorderAgentQueuedSubmissionsResponseSchema, ReorderAgentQueuedSubmissionsRequestSchema, StartAgentQueuedSubmissionResponseSchema, StartAgentQueuedSubmissionRequestSchema, AgentPromptInputSchema, AgentProviderConnectionRecordSchema, MAX_AGENT_IMAGES, MAX_AGENT_IMAGE_TOTAL_BYTES, MAX_AGENT_FILE_TOTAL_BYTES, CODEXLY_USER_AGENT, CreateProjectDirectoryResponseSchema, CreateProjectDirectoryRequestSchema, isValidProjectDirectoryName, ProjectGitStatusSchema, ProjectGitStatusQuerySchema, ProjectGitHistoryPageSchema, ProjectGitHistoryQuerySchema, ProjectGitCommitFilesPageSchema, ProjectGitCommitFilesQuerySchema, ProjectGitCommitFileDiffSchema, ProjectGitCommitFileDiffQuerySchema, SwitchProjectBranchRequestSchema, CreateProjectBranchRequestSchema, GenerateCommitMessageResponseSchema, GenerateCommitMessageRequestSchema, CommitProjectChangesResponseSchema, CommitProjectChangesRequestSchema, ProjectSourceFileQuerySchema, ProjectFileTreeSchema, ProjectFileTreeQuerySchema, ProjectFileSearchPageSchema, ProjectFileSearchQuerySchema, StopProjectFileSearchResponseSchema, StopProjectFileSearchRequestSchema, ProjectSourceFileSchema, AgentAttachmentUploadResponseSchema, HostFileKindSchema, ImportHostAttachmentRequestSchema, AgentAttachmentKindSchema, AgentTaskSettingsResponseSchema, AgentTaskSettingsSchema, ReloadAgentMcpServersResponseSchema, ReloadAgentMcpServersRequestSchema, ReviewAgentTaskResponseSchema, ReviewAgentTaskRequestSchema, CompactAgentTaskResponseSchema, CompactAgentTaskRequestSchema, ForkAgentTaskResponseSchema, ForkAgentTaskRequestSchema, UploadAgentFeedbackResponseSchema, UploadAgentFeedbackRequestSchema, DeleteArchivedTasksResponseSchema, DeleteArchivedTasksRequestSchema, AgentTaskCatalogSchema, TaskCatalogQuerySchema, CompletedTasksPageSchema, CompletedTasksQuerySchema, UpdateTaskSettingsAndDefaultsResponseSchema, UpdateTaskSettingsAndDefaultsRequestSchema, NavigableAgentTaskResponseSchema, OpenAgentTaskAttachmentResponseSchema, OpenAgentTaskAttachmentRequestSchema, UpdateAgentGoalResponseSchema, UpdateAgentGoalRequestSchema, ClearAgentGoalResponseSchema, ProjectTodoSchema, AgentMessageAttachmentSchema, ProjectGitWorktreePageSchema, CreateTaskWorktreeResponseSchema, CreateProjectWorktreeRequestSchema, CreateProjectWorktreeResponseSchema, ProjectWorktreeMutationResponseSchema, SwitchProjectWorktreeRequestSchema, RenameProjectFileResponseSchema, RenameProjectFileRequestSchema, DeleteProjectFileResponseSchema, DeleteProjectFileRequestSchema, ProjectTextFileRevisionSchema, ProjectTextFileSchema, SaveProjectTextFileResponseSchema, SaveProjectTextFileRequestSchema, MAX_TEXT_FILE_BYTES, MAX_EVENT_BATCH_BYTES, MAX_EVENT_BATCH_SIZE } from './chunk-BRKY2HKI.js';
|
|
6
6
|
import { __commonJS, __require, __toESM } from './chunk-K6J42667.js';
|
|
7
7
|
import { Buffer as Buffer$1 } from 'buffer';
|
|
8
8
|
import { randomBytes, createHash, timingSafeEqual, randomUUID } from 'crypto';
|
|
@@ -56184,6 +56184,9 @@ var require_websocket2 = __commonJS({
|
|
|
56184
56184
|
});
|
|
56185
56185
|
var EVENT_SOCKET_SOFT_BACKPRESSURE_BYTES = 256 * 1024;
|
|
56186
56186
|
var EVENT_SOCKET_HARD_BACKPRESSURE_BYTES = 1024 * 1024;
|
|
56187
|
+
var EVENT_BATCH_PREFIX = '{"events":[';
|
|
56188
|
+
var EVENT_BATCH_SUFFIX = '],"type":"events.batch","version":3}';
|
|
56189
|
+
var EVENT_BATCH_ENVELOPE_BYTES = EVENT_BATCH_PREFIX.length + EVENT_BATCH_SUFFIX.length;
|
|
56187
56190
|
var serializedMessages = /* @__PURE__ */ new WeakMap();
|
|
56188
56191
|
var serializedEventBatches = /* @__PURE__ */ new WeakMap();
|
|
56189
56192
|
function serializeEventStreamValue(value) {
|
|
@@ -56209,7 +56212,25 @@ function hasSameEvents(cachedEvents, events, offset, end) {
|
|
|
56209
56212
|
return cachedEvents.every((event, index) => event === events[offset + index]);
|
|
56210
56213
|
}
|
|
56211
56214
|
function serializeEventBatch(events, offset) {
|
|
56212
|
-
const
|
|
56215
|
+
const maxEnd = Math.min(offset + MAX_EVENT_BATCH_SIZE, events.length);
|
|
56216
|
+
let end = offset;
|
|
56217
|
+
let byteLength = EVENT_BATCH_ENVELOPE_BYTES;
|
|
56218
|
+
const serializedEvents = [];
|
|
56219
|
+
for (; end < maxEnd; end += 1) {
|
|
56220
|
+
const agentEvent = events[end];
|
|
56221
|
+
if (agentEvent === void 0) {
|
|
56222
|
+
throw new RangeError("Event batch must contain defined events");
|
|
56223
|
+
}
|
|
56224
|
+
const event = serializeEventStreamValue(agentEvent);
|
|
56225
|
+
if (event.byteLength > MAX_AGENT_EVENT_BYTES) {
|
|
56226
|
+
if (end === offset) return void 0;
|
|
56227
|
+
break;
|
|
56228
|
+
}
|
|
56229
|
+
const nextByteLength = byteLength + event.byteLength + (end === offset ? 0 : 1);
|
|
56230
|
+
if (nextByteLength > MAX_EVENT_BATCH_BYTES) break;
|
|
56231
|
+
byteLength = nextByteLength;
|
|
56232
|
+
serializedEvents.push(event);
|
|
56233
|
+
}
|
|
56213
56234
|
const firstEvent = events[offset];
|
|
56214
56235
|
if (firstEvent === void 0) {
|
|
56215
56236
|
throw new RangeError("Event batch must contain at least one event");
|
|
@@ -56218,24 +56239,18 @@ function serializeEventBatch(events, offset) {
|
|
|
56218
56239
|
const cachedByCount = serializedEventBatches.get(firstEvent);
|
|
56219
56240
|
const cached = cachedByCount?.get(eventCount);
|
|
56220
56241
|
if (cached !== void 0 && hasSameEvents(cached.events, events, offset, end)) {
|
|
56221
|
-
return cached
|
|
56242
|
+
return cached;
|
|
56222
56243
|
}
|
|
56223
56244
|
const batchEvents = events.slice(offset, end);
|
|
56224
|
-
const
|
|
56225
|
-
|
|
56226
|
-
|
|
56227
|
-
const data = `{"events":[${serializedEvents.map((event) => event.data).join(",")}],"type":"events.batch","version":3}`;
|
|
56228
|
-
message = { byteLength: Buffer$1.byteLength(data), data };
|
|
56229
|
-
} else {
|
|
56230
|
-
const batch = { events: batchEvents, type: "events.batch", version: 3 };
|
|
56231
|
-
message = serializeEventStreamValue(batch);
|
|
56232
|
-
}
|
|
56245
|
+
const data = `${EVENT_BATCH_PREFIX}${serializedEvents.map((event) => event.data).join(",")}${EVENT_BATCH_SUFFIX}`;
|
|
56246
|
+
const message = { byteLength, data };
|
|
56247
|
+
const batch = { events: batchEvents, message };
|
|
56233
56248
|
const batches = cachedByCount ?? /* @__PURE__ */ new Map();
|
|
56234
|
-
batches.set(eventCount,
|
|
56249
|
+
batches.set(eventCount, batch);
|
|
56235
56250
|
if (cachedByCount === void 0) {
|
|
56236
56251
|
serializedEventBatches.set(firstEvent, batches);
|
|
56237
56252
|
}
|
|
56238
|
-
return
|
|
56253
|
+
return batch;
|
|
56239
56254
|
}
|
|
56240
56255
|
function sendSerializedEventStreamMessage(socket, serialize, onSoftBackpressure, onSlowClientDisconnect) {
|
|
56241
56256
|
if (socket.readyState !== 1) {
|
|
@@ -56246,37 +56261,61 @@ function sendSerializedEventStreamMessage(socket, serialize, onSoftBackpressure,
|
|
|
56246
56261
|
socket.close(1013, "Client is too slow; refresh the snapshot");
|
|
56247
56262
|
return false;
|
|
56248
56263
|
}
|
|
56249
|
-
|
|
56264
|
+
const message = serialize();
|
|
56265
|
+
if (message === void 0 || message.byteLength > MAX_EVENT_BATCH_BYTES) {
|
|
56266
|
+
socket.close(1009, "Event frame is too large; refresh the snapshot");
|
|
56267
|
+
return false;
|
|
56268
|
+
}
|
|
56269
|
+
const projectedBufferedAmount = socket.bufferedAmount + message.byteLength;
|
|
56270
|
+
if (projectedBufferedAmount > EVENT_SOCKET_HARD_BACKPRESSURE_BYTES) {
|
|
56271
|
+
onSlowClientDisconnect();
|
|
56272
|
+
socket.close(1013, "Client is too slow; refresh the snapshot");
|
|
56273
|
+
return false;
|
|
56274
|
+
}
|
|
56275
|
+
if (projectedBufferedAmount > EVENT_SOCKET_SOFT_BACKPRESSURE_BYTES) {
|
|
56250
56276
|
onSoftBackpressure();
|
|
56251
56277
|
}
|
|
56252
|
-
socket.send(
|
|
56278
|
+
socket.send(message.data);
|
|
56253
56279
|
return true;
|
|
56254
56280
|
}
|
|
56255
56281
|
function sendEventStreamMessage(socket, message, onSoftBackpressure, onSlowClientDisconnect) {
|
|
56256
56282
|
return sendSerializedEventStreamMessage(
|
|
56257
56283
|
socket,
|
|
56258
|
-
() =>
|
|
56284
|
+
() => {
|
|
56285
|
+
if (message.type === "events.batch" && message.events.some(
|
|
56286
|
+
(event) => getSerializedAgentEventByteLength(event) > MAX_AGENT_EVENT_BYTES
|
|
56287
|
+
))
|
|
56288
|
+
return void 0;
|
|
56289
|
+
return serializeEventStreamMessage(message);
|
|
56290
|
+
},
|
|
56259
56291
|
onSoftBackpressure,
|
|
56260
56292
|
onSlowClientDisconnect
|
|
56261
56293
|
);
|
|
56262
56294
|
}
|
|
56263
56295
|
function sendEventStreamEvents(socket, events, onSoftBackpressure, onSlowClientDisconnect) {
|
|
56264
|
-
for (let offset = 0; offset < events.length;
|
|
56296
|
+
for (let offset = 0; offset < events.length; ) {
|
|
56297
|
+
let nextOffset = offset;
|
|
56265
56298
|
if (!sendSerializedEventStreamMessage(
|
|
56266
56299
|
socket,
|
|
56267
|
-
() =>
|
|
56300
|
+
() => {
|
|
56301
|
+
const batch = serializeEventBatch(events, offset);
|
|
56302
|
+
if (batch === void 0) return void 0;
|
|
56303
|
+
nextOffset += batch.events.length;
|
|
56304
|
+
return batch.message;
|
|
56305
|
+
},
|
|
56268
56306
|
onSoftBackpressure,
|
|
56269
56307
|
onSlowClientDisconnect
|
|
56270
56308
|
)) {
|
|
56271
56309
|
return false;
|
|
56272
56310
|
}
|
|
56311
|
+
offset = nextOffset;
|
|
56273
56312
|
}
|
|
56274
56313
|
return true;
|
|
56275
56314
|
}
|
|
56276
56315
|
|
|
56277
56316
|
// packages/server/src/agent-event-stream.ts
|
|
56278
56317
|
var DEFAULT_COALESCING_WINDOW_MS = 16;
|
|
56279
|
-
var DEFAULT_MAX_EVENT_BYTES =
|
|
56318
|
+
var DEFAULT_MAX_EVENT_BYTES = MAX_AGENT_EVENT_BYTES;
|
|
56280
56319
|
var DEFAULT_MAX_RETAINED_BYTES = 4 * 1048576;
|
|
56281
56320
|
var DEFAULT_PRESSURE_COALESCING_WINDOW_MS = 32;
|
|
56282
56321
|
function isCoalescedEvent(event) {
|
|
@@ -56709,6 +56748,322 @@ var registerHistoryStorageRoutes = (app, context, done) => {
|
|
|
56709
56748
|
done();
|
|
56710
56749
|
};
|
|
56711
56750
|
|
|
56751
|
+
// packages/server/src/workbench-changes.ts
|
|
56752
|
+
var WorkbenchChanges = class {
|
|
56753
|
+
#listeners = /* @__PURE__ */ new Set();
|
|
56754
|
+
subscribe(listener) {
|
|
56755
|
+
this.#listeners.add(listener);
|
|
56756
|
+
return () => {
|
|
56757
|
+
this.#listeners.delete(listener);
|
|
56758
|
+
};
|
|
56759
|
+
}
|
|
56760
|
+
publish(change) {
|
|
56761
|
+
for (const listener of this.#listeners) listener(change);
|
|
56762
|
+
}
|
|
56763
|
+
publishAgentEvent(projectId, event) {
|
|
56764
|
+
if (event.type === "turn.started" || event.type === "turn.completed" || event.type === "item.completed" && event.payload.item.type === "message" && (event.payload.item.questions?.length ?? 0) > 0) {
|
|
56765
|
+
this.publish({ type: "async-questions.changed", projectId, taskId: event.taskId });
|
|
56766
|
+
}
|
|
56767
|
+
}
|
|
56768
|
+
};
|
|
56769
|
+
|
|
56770
|
+
// packages/server/src/routes/access-routes.ts
|
|
56771
|
+
var ACCESS_SESSION_COOKIE = "codexly_session";
|
|
56772
|
+
function status(authenticated, mode) {
|
|
56773
|
+
return { authenticated, mode, version: 1 };
|
|
56774
|
+
}
|
|
56775
|
+
var registerAccessRoutes = (app, options, done) => {
|
|
56776
|
+
const { access: access3, service } = options;
|
|
56777
|
+
const mode = access3 === void 0 ? "local" : "lan";
|
|
56778
|
+
app.get(
|
|
56779
|
+
"/v1/access",
|
|
56780
|
+
{ schema: { response: { 200: AccessStatusResponseSchema } } },
|
|
56781
|
+
(request2) => status(
|
|
56782
|
+
mode === "local" || service?.validate(request2.cookies[ACCESS_SESSION_COOKIE]) === true,
|
|
56783
|
+
mode
|
|
56784
|
+
)
|
|
56785
|
+
);
|
|
56786
|
+
app.post(
|
|
56787
|
+
"/v1/access/pair",
|
|
56788
|
+
{
|
|
56789
|
+
schema: {
|
|
56790
|
+
body: PairAccessRequestSchema,
|
|
56791
|
+
response: { 200: AccessStatusResponseSchema }
|
|
56792
|
+
}
|
|
56793
|
+
},
|
|
56794
|
+
(request2, reply) => {
|
|
56795
|
+
if (access3 === void 0 || service === void 0) {
|
|
56796
|
+
return status(true, "local");
|
|
56797
|
+
}
|
|
56798
|
+
const result = service.pair(request2.body.code, request2.ip);
|
|
56799
|
+
if (result.status !== "paired") {
|
|
56800
|
+
return reply.code(result.status === "rate_limited" ? 429 : 403).send({
|
|
56801
|
+
code: result.status === "rate_limited" ? "PAIRING_RATE_LIMITED" : "PAIRING_FAILED",
|
|
56802
|
+
message: "Pairing request failed",
|
|
56803
|
+
retryable: result.status === "rate_limited"
|
|
56804
|
+
});
|
|
56805
|
+
}
|
|
56806
|
+
reply.setCookie(ACCESS_SESSION_COOKIE, result.sessionId, {
|
|
56807
|
+
...result.expiresAt === null || access3.sessionTtlMs === void 0 ? {} : {
|
|
56808
|
+
expires: new Date(result.expiresAt),
|
|
56809
|
+
maxAge: Math.ceil(access3.sessionTtlMs / 1e3)
|
|
56810
|
+
},
|
|
56811
|
+
httpOnly: true,
|
|
56812
|
+
path: "/",
|
|
56813
|
+
sameSite: "strict",
|
|
56814
|
+
secure: false
|
|
56815
|
+
});
|
|
56816
|
+
return status(true, "lan");
|
|
56817
|
+
}
|
|
56818
|
+
);
|
|
56819
|
+
app.post(
|
|
56820
|
+
"/v1/access/logout",
|
|
56821
|
+
{ schema: { response: { 200: AccessStatusResponseSchema } } },
|
|
56822
|
+
(request2, reply) => {
|
|
56823
|
+
service?.logout(request2.cookies[ACCESS_SESSION_COOKIE]);
|
|
56824
|
+
reply.clearCookie(ACCESS_SESSION_COOKIE, { path: "/", sameSite: "strict" });
|
|
56825
|
+
return status(mode === "local", mode);
|
|
56826
|
+
}
|
|
56827
|
+
);
|
|
56828
|
+
done();
|
|
56829
|
+
};
|
|
56830
|
+
|
|
56831
|
+
// packages/server/src/routes/event-routes.ts
|
|
56832
|
+
var MAX_TIMER_DELAY_MS = 2147483647;
|
|
56833
|
+
function scheduleSessionExpiry(socket, expiresAt) {
|
|
56834
|
+
let timer;
|
|
56835
|
+
const expire = () => {
|
|
56836
|
+
const remainingMs = expiresAt - Date.now();
|
|
56837
|
+
if (remainingMs <= 0) {
|
|
56838
|
+
socket.close(1008, "Access session expired");
|
|
56839
|
+
return;
|
|
56840
|
+
}
|
|
56841
|
+
timer = setTimeout(expire, Math.min(remainingMs, MAX_TIMER_DELAY_MS));
|
|
56842
|
+
timer.unref();
|
|
56843
|
+
};
|
|
56844
|
+
expire();
|
|
56845
|
+
return () => {
|
|
56846
|
+
if (timer !== void 0) {
|
|
56847
|
+
clearTimeout(timer);
|
|
56848
|
+
}
|
|
56849
|
+
};
|
|
56850
|
+
}
|
|
56851
|
+
var registerEventRoutes = (app, context, done) => {
|
|
56852
|
+
const { accessService, getProjectContext, projectContexts } = context;
|
|
56853
|
+
app.get(
|
|
56854
|
+
"/v1/projects/:projectId/events",
|
|
56855
|
+
{
|
|
56856
|
+
async preValidation(request2, reply) {
|
|
56857
|
+
if (await getProjectContext(request2.params.projectId) === void 0) {
|
|
56858
|
+
return await reply.code(404).send({ code: "PROJECT_NOT_FOUND", message: "Project not found" });
|
|
56859
|
+
}
|
|
56860
|
+
},
|
|
56861
|
+
schema: { params: ProjectParamsSchema, querystring: EventQuerySchema },
|
|
56862
|
+
websocket: true
|
|
56863
|
+
},
|
|
56864
|
+
(socket, request2) => {
|
|
56865
|
+
const sessionExpiresAt = accessService?.expiresAt(request2.cookies[ACCESS_SESSION_COOKIE]);
|
|
56866
|
+
if (accessService !== void 0 && sessionExpiresAt === void 0) {
|
|
56867
|
+
socket.close(1008, "Access session expired");
|
|
56868
|
+
return;
|
|
56869
|
+
}
|
|
56870
|
+
const context2 = projectContexts.get(request2.params.projectId);
|
|
56871
|
+
if (context2 === void 0) {
|
|
56872
|
+
socket.close(1008, "Project not found");
|
|
56873
|
+
return;
|
|
56874
|
+
}
|
|
56875
|
+
const eventStream = context2.eventStream;
|
|
56876
|
+
context2.transportMetrics.activeClients += 1;
|
|
56877
|
+
let cleanedUp = false;
|
|
56878
|
+
let liveFlushScheduled = false;
|
|
56879
|
+
const liveEvents = [];
|
|
56880
|
+
let unsubscribe = () => void 0;
|
|
56881
|
+
let cancelInvalidation = () => void 0;
|
|
56882
|
+
const cancelSessionExpiry = sessionExpiresAt === void 0 || sessionExpiresAt === null ? () => void 0 : scheduleSessionExpiry(socket, sessionExpiresAt);
|
|
56883
|
+
const cleanup = () => {
|
|
56884
|
+
if (cleanedUp) {
|
|
56885
|
+
return;
|
|
56886
|
+
}
|
|
56887
|
+
cleanedUp = true;
|
|
56888
|
+
liveEvents.length = 0;
|
|
56889
|
+
cancelSessionExpiry();
|
|
56890
|
+
cancelInvalidation();
|
|
56891
|
+
unsubscribe();
|
|
56892
|
+
context2.transportMetrics.activeClients -= 1;
|
|
56893
|
+
};
|
|
56894
|
+
socket.once("close", cleanup);
|
|
56895
|
+
socket.once("error", cleanup);
|
|
56896
|
+
cancelInvalidation = accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
|
|
56897
|
+
cleanup();
|
|
56898
|
+
socket.close(1008, "Access session expired");
|
|
56899
|
+
}) ?? (() => void 0);
|
|
56900
|
+
if (socket.readyState !== socket.OPEN) return;
|
|
56901
|
+
const send = (message) => sendEventStreamMessage(
|
|
56902
|
+
socket,
|
|
56903
|
+
message,
|
|
56904
|
+
() => {
|
|
56905
|
+
eventStream.noteBackpressure();
|
|
56906
|
+
},
|
|
56907
|
+
() => {
|
|
56908
|
+
context2.transportMetrics.slowClientDisconnects += 1;
|
|
56909
|
+
}
|
|
56910
|
+
);
|
|
56911
|
+
const sendEvents = (events) => sendEventStreamEvents(
|
|
56912
|
+
socket,
|
|
56913
|
+
events,
|
|
56914
|
+
() => {
|
|
56915
|
+
eventStream.noteBackpressure();
|
|
56916
|
+
},
|
|
56917
|
+
() => {
|
|
56918
|
+
context2.transportMetrics.slowClientDisconnects += 1;
|
|
56919
|
+
}
|
|
56920
|
+
);
|
|
56921
|
+
const flushLiveEvents = () => {
|
|
56922
|
+
liveFlushScheduled = false;
|
|
56923
|
+
if (cleanedUp || liveEvents.length === 0) {
|
|
56924
|
+
return;
|
|
56925
|
+
}
|
|
56926
|
+
const events = liveEvents.splice(0);
|
|
56927
|
+
sendEvents(events);
|
|
56928
|
+
};
|
|
56929
|
+
const enqueueLiveEvent = (event) => {
|
|
56930
|
+
liveEvents.push(event);
|
|
56931
|
+
if (liveEvents.length >= MAX_EVENT_BATCH_SIZE) {
|
|
56932
|
+
flushLiveEvents();
|
|
56933
|
+
return;
|
|
56934
|
+
}
|
|
56935
|
+
if (liveFlushScheduled) {
|
|
56936
|
+
return;
|
|
56937
|
+
}
|
|
56938
|
+
liveFlushScheduled = true;
|
|
56939
|
+
queueMicrotask(() => {
|
|
56940
|
+
if (liveFlushScheduled) {
|
|
56941
|
+
flushLiveEvents();
|
|
56942
|
+
}
|
|
56943
|
+
});
|
|
56944
|
+
};
|
|
56945
|
+
const replay = eventStream.replayAfter(request2.query.afterSequence);
|
|
56946
|
+
if (replay.type === "resync") {
|
|
56947
|
+
const sent = send({
|
|
56948
|
+
latestSequence: replay.latestSequence,
|
|
56949
|
+
reason: replay.reason,
|
|
56950
|
+
sessionId: eventStream.checkpoint.sessionId,
|
|
56951
|
+
type: "resync.required",
|
|
56952
|
+
version: 3
|
|
56953
|
+
});
|
|
56954
|
+
if (sent) {
|
|
56955
|
+
socket.close(1e3, "Snapshot resync required");
|
|
56956
|
+
}
|
|
56957
|
+
return;
|
|
56958
|
+
}
|
|
56959
|
+
const checkpoint = eventStream.checkpoint;
|
|
56960
|
+
const initializationEvents = [];
|
|
56961
|
+
let isInitializing = true;
|
|
56962
|
+
unsubscribe = eventStream.subscribe((event) => {
|
|
56963
|
+
if (isInitializing) {
|
|
56964
|
+
initializationEvents.push(event);
|
|
56965
|
+
return;
|
|
56966
|
+
}
|
|
56967
|
+
enqueueLiveEvent(event);
|
|
56968
|
+
});
|
|
56969
|
+
const readySent = send({
|
|
56970
|
+
latestSequence: checkpoint.sequence,
|
|
56971
|
+
sessionId: checkpoint.sessionId,
|
|
56972
|
+
type: "connection.ready",
|
|
56973
|
+
version: 3
|
|
56974
|
+
});
|
|
56975
|
+
if (!readySent) {
|
|
56976
|
+
return;
|
|
56977
|
+
}
|
|
56978
|
+
if (!sendEvents(replay.events)) {
|
|
56979
|
+
return;
|
|
56980
|
+
}
|
|
56981
|
+
isInitializing = false;
|
|
56982
|
+
if (!sendEvents(initializationEvents)) {
|
|
56983
|
+
return;
|
|
56984
|
+
}
|
|
56985
|
+
}
|
|
56986
|
+
);
|
|
56987
|
+
done();
|
|
56988
|
+
};
|
|
56989
|
+
|
|
56990
|
+
// packages/server/src/routes/resource-change-events.ts
|
|
56991
|
+
function registerWorkbenchEvents(app, context) {
|
|
56992
|
+
registerResourceChangeEvents(
|
|
56993
|
+
app,
|
|
56994
|
+
context,
|
|
56995
|
+
"/v1/workbench/events",
|
|
56996
|
+
{ type: "workbench.ready" },
|
|
56997
|
+
(listener) => context.workbenchChanges.subscribe(listener)
|
|
56998
|
+
);
|
|
56999
|
+
}
|
|
57000
|
+
function registerResourceChangeEvents(app, context, path, initial, subscribe) {
|
|
57001
|
+
app.get(path, { websocket: true }, (socket, request2) => {
|
|
57002
|
+
const expiresAt = context.accessService?.expiresAt(request2.cookies[ACCESS_SESSION_COOKIE]);
|
|
57003
|
+
if (context.accessService !== void 0 && expiresAt === void 0) {
|
|
57004
|
+
socket.close(1008, "Access session expired");
|
|
57005
|
+
return;
|
|
57006
|
+
}
|
|
57007
|
+
const cancelExpiry = expiresAt == null ? () => void 0 : scheduleSessionExpiry(socket, expiresAt);
|
|
57008
|
+
const pending = /* @__PURE__ */ new Set();
|
|
57009
|
+
let closed = false;
|
|
57010
|
+
const send = (frame) => {
|
|
57011
|
+
if (closed || socket.readyState !== 1) return;
|
|
57012
|
+
if (socket.bufferedAmount > 65536) {
|
|
57013
|
+
socket.close(1013, "Slow client");
|
|
57014
|
+
return;
|
|
57015
|
+
}
|
|
57016
|
+
socket.send(frame, (error) => {
|
|
57017
|
+
if (error) socket.terminate();
|
|
57018
|
+
});
|
|
57019
|
+
};
|
|
57020
|
+
const unsubscribe = subscribe((change) => {
|
|
57021
|
+
if (closed) return;
|
|
57022
|
+
const queued = pending.size > 0;
|
|
57023
|
+
pending.add(JSON.stringify(change));
|
|
57024
|
+
if (pending.size > 256) {
|
|
57025
|
+
socket.close(1013, "Too many changes");
|
|
57026
|
+
return;
|
|
57027
|
+
}
|
|
57028
|
+
if (queued) return;
|
|
57029
|
+
queueMicrotask(() => {
|
|
57030
|
+
for (const frame of pending) send(frame);
|
|
57031
|
+
pending.clear();
|
|
57032
|
+
});
|
|
57033
|
+
});
|
|
57034
|
+
let alive = true;
|
|
57035
|
+
socket.on("pong", () => {
|
|
57036
|
+
alive = true;
|
|
57037
|
+
});
|
|
57038
|
+
const heartbeat = setInterval(() => {
|
|
57039
|
+
if (!alive) {
|
|
57040
|
+
socket.terminate();
|
|
57041
|
+
return;
|
|
57042
|
+
}
|
|
57043
|
+
alive = false;
|
|
57044
|
+
socket.ping();
|
|
57045
|
+
}, 3e4);
|
|
57046
|
+
heartbeat.unref();
|
|
57047
|
+
let cancelInvalidation = () => void 0;
|
|
57048
|
+
const cleanup = () => {
|
|
57049
|
+
if (closed) return;
|
|
57050
|
+
closed = true;
|
|
57051
|
+
unsubscribe();
|
|
57052
|
+
pending.clear();
|
|
57053
|
+
cancelExpiry();
|
|
57054
|
+
cancelInvalidation();
|
|
57055
|
+
clearInterval(heartbeat);
|
|
57056
|
+
};
|
|
57057
|
+
socket.once("close", cleanup);
|
|
57058
|
+
socket.once("error", cleanup);
|
|
57059
|
+
cancelInvalidation = context.accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
|
|
57060
|
+
cleanup();
|
|
57061
|
+
socket.close(1008, "Access session expired");
|
|
57062
|
+
}) ?? (() => void 0);
|
|
57063
|
+
send(JSON.stringify(initial));
|
|
57064
|
+
});
|
|
57065
|
+
}
|
|
57066
|
+
|
|
56712
57067
|
// packages/server/src/app.ts
|
|
56713
57068
|
var import_fastify2 = __toESM(require_fastify(), 1);
|
|
56714
57069
|
|
|
@@ -61008,7 +61363,7 @@ function createUntrackedTextDiff(path, content) {
|
|
|
61008
61363
|
);
|
|
61009
61364
|
}
|
|
61010
61365
|
function applyDiffBudget(changes, budget) {
|
|
61011
|
-
return changes.map((
|
|
61366
|
+
return changes.map((change) => ({ ...change, diff: budget.takeDiff(change.diff) }));
|
|
61012
61367
|
}
|
|
61013
61368
|
function parseTrackedDiffs(output) {
|
|
61014
61369
|
if (output === "") {
|
|
@@ -61312,17 +61667,17 @@ async function readResolvedGitWorkingTreeStatus(resolvedProjectRoot, gitCommandE
|
|
|
61312
61667
|
snapshotHash.update(root).update("\0").update(fingerprint).update("\0");
|
|
61313
61668
|
}
|
|
61314
61669
|
snapshotHash.update(repositoryBranches.branch ?? "").update("\0").update(repositoryMode);
|
|
61315
|
-
const fingerprintChanges = async (location, changes) => mapWithConcurrency(changes, MAX_FILE_IO_CONCURRENCY, async (
|
|
61670
|
+
const fingerprintChanges = async (location, changes) => mapWithConcurrency(changes, MAX_FILE_IO_CONCURRENCY, async (change) => {
|
|
61316
61671
|
let metadata = "missing";
|
|
61317
61672
|
try {
|
|
61318
61673
|
const stats = await limitGitFileIO(
|
|
61319
|
-
() => lstat(join(resolvedProjectRoot,
|
|
61674
|
+
() => lstat(join(resolvedProjectRoot, change.path), { bigint: true })
|
|
61320
61675
|
);
|
|
61321
61676
|
metadata = [stats.mode, stats.size, stats.mtimeNs, stats.ctimeNs].join(":");
|
|
61322
61677
|
} catch (error) {
|
|
61323
61678
|
if (error.code !== "ENOENT") throw error;
|
|
61324
61679
|
}
|
|
61325
|
-
return `${location}\0${
|
|
61680
|
+
return `${location}\0${change.kind}\0${change.path}\0${metadata}\0`;
|
|
61326
61681
|
});
|
|
61327
61682
|
for (const fingerprint of await fingerprintChanges("staged", staged)) {
|
|
61328
61683
|
snapshotHash.update(fingerprint);
|
|
@@ -61472,7 +61827,7 @@ async function commitSelectedProjectChanges(projectRoot, request2) {
|
|
|
61472
61827
|
if (status2.snapshot !== request2.expectedSnapshot) {
|
|
61473
61828
|
throw new GitCommitError("GIT_STATUS_CHANGED", "Git changes changed before the commit");
|
|
61474
61829
|
}
|
|
61475
|
-
const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((
|
|
61830
|
+
const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((change) => change.path));
|
|
61476
61831
|
if (request2.paths.some((path) => !changedPaths.has(path))) {
|
|
61477
61832
|
throw new GitCommitError(
|
|
61478
61833
|
"GIT_PATH_UNAVAILABLE",
|
|
@@ -61480,7 +61835,7 @@ async function commitSelectedProjectChanges(projectRoot, request2) {
|
|
|
61480
61835
|
);
|
|
61481
61836
|
}
|
|
61482
61837
|
const selectedPaths = request2.paths.map(literalPath);
|
|
61483
|
-
const stagedPaths = new Set(status2.staged.map((
|
|
61838
|
+
const stagedPaths = new Set(status2.staged.map((change) => change.path));
|
|
61484
61839
|
const selectedStagedPaths = request2.paths.filter((path) => stagedPaths.has(path));
|
|
61485
61840
|
const selectedUnstagedPaths = request2.paths.filter((path) => !stagedPaths.has(path));
|
|
61486
61841
|
const temporaryIndexRoot = await mkdtemp(join(tmpdir(), "codexly-git-index-"));
|
|
@@ -61678,8 +62033,8 @@ var MAX_COMMIT_CHANGE_SUMMARY_BYTES = 20 * 1024;
|
|
|
61678
62033
|
var MAX_COMMIT_DIFF_EXCERPT_BYTES = 36 * 1024;
|
|
61679
62034
|
var MAX_EXCERPTED_COMMIT_CHANGES = 16;
|
|
61680
62035
|
function selectedCommitChanges(status2, paths) {
|
|
61681
|
-
const stagedByPath = new Map(status2.staged.map((
|
|
61682
|
-
const unstagedByPath = new Map(status2.unstaged.map((
|
|
62036
|
+
const stagedByPath = new Map(status2.staged.map((change) => [change.path, change]));
|
|
62037
|
+
const unstagedByPath = new Map(status2.unstaged.map((change) => [change.path, change]));
|
|
61683
62038
|
return paths.flatMap((path) => {
|
|
61684
62039
|
const staged = stagedByPath.get(path);
|
|
61685
62040
|
const unstaged = unstagedByPath.get(path);
|
|
@@ -61729,10 +62084,10 @@ function readDiffLineStats(diff) {
|
|
|
61729
62084
|
return { additions, deletions };
|
|
61730
62085
|
}
|
|
61731
62086
|
function buildSelectedChangeSummary(changes) {
|
|
61732
|
-
const lines = changes.map(({ change
|
|
61733
|
-
const { additions, deletions } = readDiffLineStats(
|
|
61734
|
-
const binary =
|
|
61735
|
-
return `[${location}] ${
|
|
62087
|
+
const lines = changes.map(({ change, location }) => {
|
|
62088
|
+
const { additions, deletions } = readDiffLineStats(change.diff);
|
|
62089
|
+
const binary = change.diff.includes("Binary files ") ? ", binary" : "";
|
|
62090
|
+
return `[${location}] ${change.kind} ${change.path} (+${String(additions)} -${String(deletions)}, ${String(Buffer$1.byteLength(change.diff, "utf8"))} diff bytes${binary})`;
|
|
61736
62091
|
});
|
|
61737
62092
|
const completeSummary = lines.join("\n");
|
|
61738
62093
|
if (Buffer$1.byteLength(completeSummary, "utf8") <= MAX_COMMIT_CHANGE_SUMMARY_BYTES) {
|
|
@@ -61763,7 +62118,7 @@ function representativeCommitChanges(changes) {
|
|
|
61763
62118
|
{ length: count },
|
|
61764
62119
|
(_3, index) => Math.round(index * (changes.length - 1) / (count - 1))
|
|
61765
62120
|
);
|
|
61766
|
-
return indexes.map((index) => changes[index]).filter((
|
|
62121
|
+
return indexes.map((index) => changes[index]).filter((change) => change !== void 0);
|
|
61767
62122
|
}
|
|
61768
62123
|
function compactDiff(diff, maximumBytes) {
|
|
61769
62124
|
const diffBytes = Buffer$1.byteLength(diff, "utf8");
|
|
@@ -61788,28 +62143,28 @@ function buildSelectedDiffExcerpts(changes) {
|
|
|
61788
62143
|
const perChangeBudget = Math.floor(
|
|
61789
62144
|
(MAX_COMMIT_DIFF_EXCERPT_BYTES - separatorBytes) / representatives.length
|
|
61790
62145
|
);
|
|
61791
|
-
return representatives.map(({ change
|
|
61792
|
-
const header = `[${location}] ${
|
|
62146
|
+
return representatives.map(({ change, location }) => {
|
|
62147
|
+
const header = `[${location}] ${change.kind} ${change.path}
|
|
61793
62148
|
`;
|
|
61794
62149
|
const headerBytes = Buffer$1.byteLength(header, "utf8");
|
|
61795
62150
|
if (headerBytes >= perChangeBudget) {
|
|
61796
62151
|
return takeUtf8Prefix(header, perChangeBudget);
|
|
61797
62152
|
}
|
|
61798
|
-
return `${header}${compactDiff(
|
|
62153
|
+
return `${header}${compactDiff(change.diff, perChangeBudget - headerBytes)}`;
|
|
61799
62154
|
}).join("\n\n");
|
|
61800
62155
|
}
|
|
61801
62156
|
function buildInlineSelectedDiff(changes) {
|
|
61802
62157
|
const blocks = [];
|
|
61803
62158
|
let bytes = 0;
|
|
61804
|
-
for (const { change
|
|
61805
|
-
const header = `[${location}] ${
|
|
62159
|
+
for (const { change, location } of changes) {
|
|
62160
|
+
const header = `[${location}] ${change.path}
|
|
61806
62161
|
`;
|
|
61807
62162
|
const separatorBytes = blocks.length === 0 ? 0 : 2;
|
|
61808
|
-
bytes += separatorBytes + Buffer$1.byteLength(header, "utf8") + Buffer$1.byteLength(
|
|
62163
|
+
bytes += separatorBytes + Buffer$1.byteLength(header, "utf8") + Buffer$1.byteLength(change.diff, "utf8");
|
|
61809
62164
|
if (bytes > MAX_INLINE_COMMIT_DIFF_BYTES) {
|
|
61810
62165
|
return void 0;
|
|
61811
62166
|
}
|
|
61812
|
-
blocks.push(`${header}${
|
|
62167
|
+
blocks.push(`${header}${change.diff}`);
|
|
61813
62168
|
}
|
|
61814
62169
|
return blocks.join("\n\n");
|
|
61815
62170
|
}
|
|
@@ -62571,7 +62926,7 @@ function assertCommitSelection(status2, request2) {
|
|
|
62571
62926
|
409
|
|
62572
62927
|
);
|
|
62573
62928
|
}
|
|
62574
|
-
const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((
|
|
62929
|
+
const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((change) => change.path));
|
|
62575
62930
|
if (request2.paths.some((path) => !changedPaths.has(path))) {
|
|
62576
62931
|
throw new MutationHttpError(
|
|
62577
62932
|
"GIT_PATH_UNAVAILABLE",
|
|
@@ -65020,6 +65375,7 @@ function createProjectRuntimeContext(options) {
|
|
|
65020
65375
|
invalidateProjectGitBranchCache(event.payload.rootPath);
|
|
65021
65376
|
}
|
|
65022
65377
|
eventStream.publish(event);
|
|
65378
|
+
options.workbenchChanges?.publishAgentEvent(scope.id, event);
|
|
65023
65379
|
})
|
|
65024
65380
|
};
|
|
65025
65381
|
}
|
|
@@ -65491,226 +65847,6 @@ async function readProjectDirectory(requestedPath, options = {}) {
|
|
|
65491
65847
|
roots
|
|
65492
65848
|
};
|
|
65493
65849
|
}
|
|
65494
|
-
|
|
65495
|
-
// packages/server/src/routes/access-routes.ts
|
|
65496
|
-
var ACCESS_SESSION_COOKIE = "codexly_session";
|
|
65497
|
-
function status(authenticated, mode) {
|
|
65498
|
-
return { authenticated, mode, version: 1 };
|
|
65499
|
-
}
|
|
65500
|
-
var registerAccessRoutes = (app, options, done) => {
|
|
65501
|
-
const { access: access3, service } = options;
|
|
65502
|
-
const mode = access3 === void 0 ? "local" : "lan";
|
|
65503
|
-
app.get(
|
|
65504
|
-
"/v1/access",
|
|
65505
|
-
{ schema: { response: { 200: AccessStatusResponseSchema } } },
|
|
65506
|
-
(request2) => status(
|
|
65507
|
-
mode === "local" || service?.validate(request2.cookies[ACCESS_SESSION_COOKIE]) === true,
|
|
65508
|
-
mode
|
|
65509
|
-
)
|
|
65510
|
-
);
|
|
65511
|
-
app.post(
|
|
65512
|
-
"/v1/access/pair",
|
|
65513
|
-
{
|
|
65514
|
-
schema: {
|
|
65515
|
-
body: PairAccessRequestSchema,
|
|
65516
|
-
response: { 200: AccessStatusResponseSchema }
|
|
65517
|
-
}
|
|
65518
|
-
},
|
|
65519
|
-
(request2, reply) => {
|
|
65520
|
-
if (access3 === void 0 || service === void 0) {
|
|
65521
|
-
return status(true, "local");
|
|
65522
|
-
}
|
|
65523
|
-
const result = service.pair(request2.body.code, request2.ip);
|
|
65524
|
-
if (result.status !== "paired") {
|
|
65525
|
-
return reply.code(result.status === "rate_limited" ? 429 : 403).send({
|
|
65526
|
-
code: result.status === "rate_limited" ? "PAIRING_RATE_LIMITED" : "PAIRING_FAILED",
|
|
65527
|
-
message: "Pairing request failed",
|
|
65528
|
-
retryable: result.status === "rate_limited"
|
|
65529
|
-
});
|
|
65530
|
-
}
|
|
65531
|
-
reply.setCookie(ACCESS_SESSION_COOKIE, result.sessionId, {
|
|
65532
|
-
...result.expiresAt === null || access3.sessionTtlMs === void 0 ? {} : {
|
|
65533
|
-
expires: new Date(result.expiresAt),
|
|
65534
|
-
maxAge: Math.ceil(access3.sessionTtlMs / 1e3)
|
|
65535
|
-
},
|
|
65536
|
-
httpOnly: true,
|
|
65537
|
-
path: "/",
|
|
65538
|
-
sameSite: "strict",
|
|
65539
|
-
secure: false
|
|
65540
|
-
});
|
|
65541
|
-
return status(true, "lan");
|
|
65542
|
-
}
|
|
65543
|
-
);
|
|
65544
|
-
app.post(
|
|
65545
|
-
"/v1/access/logout",
|
|
65546
|
-
{ schema: { response: { 200: AccessStatusResponseSchema } } },
|
|
65547
|
-
(request2, reply) => {
|
|
65548
|
-
service?.logout(request2.cookies[ACCESS_SESSION_COOKIE]);
|
|
65549
|
-
reply.clearCookie(ACCESS_SESSION_COOKIE, { path: "/", sameSite: "strict" });
|
|
65550
|
-
return status(mode === "local", mode);
|
|
65551
|
-
}
|
|
65552
|
-
);
|
|
65553
|
-
done();
|
|
65554
|
-
};
|
|
65555
|
-
|
|
65556
|
-
// packages/server/src/routes/event-routes.ts
|
|
65557
|
-
var MAX_TIMER_DELAY_MS = 2147483647;
|
|
65558
|
-
function scheduleSessionExpiry(socket, expiresAt) {
|
|
65559
|
-
let timer;
|
|
65560
|
-
const expire = () => {
|
|
65561
|
-
const remainingMs = expiresAt - Date.now();
|
|
65562
|
-
if (remainingMs <= 0) {
|
|
65563
|
-
socket.close(1008, "Access session expired");
|
|
65564
|
-
return;
|
|
65565
|
-
}
|
|
65566
|
-
timer = setTimeout(expire, Math.min(remainingMs, MAX_TIMER_DELAY_MS));
|
|
65567
|
-
timer.unref();
|
|
65568
|
-
};
|
|
65569
|
-
expire();
|
|
65570
|
-
return () => {
|
|
65571
|
-
if (timer !== void 0) {
|
|
65572
|
-
clearTimeout(timer);
|
|
65573
|
-
}
|
|
65574
|
-
};
|
|
65575
|
-
}
|
|
65576
|
-
var registerEventRoutes = (app, context, done) => {
|
|
65577
|
-
const { accessService, getProjectContext, projectContexts } = context;
|
|
65578
|
-
app.get(
|
|
65579
|
-
"/v1/projects/:projectId/events",
|
|
65580
|
-
{
|
|
65581
|
-
async preValidation(request2, reply) {
|
|
65582
|
-
if (await getProjectContext(request2.params.projectId) === void 0) {
|
|
65583
|
-
return await reply.code(404).send({ code: "PROJECT_NOT_FOUND", message: "Project not found" });
|
|
65584
|
-
}
|
|
65585
|
-
},
|
|
65586
|
-
schema: { params: ProjectParamsSchema, querystring: EventQuerySchema },
|
|
65587
|
-
websocket: true
|
|
65588
|
-
},
|
|
65589
|
-
(socket, request2) => {
|
|
65590
|
-
const sessionExpiresAt = accessService?.expiresAt(request2.cookies[ACCESS_SESSION_COOKIE]);
|
|
65591
|
-
if (accessService !== void 0 && sessionExpiresAt === void 0) {
|
|
65592
|
-
socket.close(1008, "Access session expired");
|
|
65593
|
-
return;
|
|
65594
|
-
}
|
|
65595
|
-
const context2 = projectContexts.get(request2.params.projectId);
|
|
65596
|
-
if (context2 === void 0) {
|
|
65597
|
-
socket.close(1008, "Project not found");
|
|
65598
|
-
return;
|
|
65599
|
-
}
|
|
65600
|
-
const eventStream = context2.eventStream;
|
|
65601
|
-
context2.transportMetrics.activeClients += 1;
|
|
65602
|
-
let cleanedUp = false;
|
|
65603
|
-
let liveFlushScheduled = false;
|
|
65604
|
-
const liveEvents = [];
|
|
65605
|
-
let unsubscribe = () => void 0;
|
|
65606
|
-
let cancelInvalidation = () => void 0;
|
|
65607
|
-
const cancelSessionExpiry = sessionExpiresAt === void 0 || sessionExpiresAt === null ? () => void 0 : scheduleSessionExpiry(socket, sessionExpiresAt);
|
|
65608
|
-
const cleanup = () => {
|
|
65609
|
-
if (cleanedUp) {
|
|
65610
|
-
return;
|
|
65611
|
-
}
|
|
65612
|
-
cleanedUp = true;
|
|
65613
|
-
liveEvents.length = 0;
|
|
65614
|
-
cancelSessionExpiry();
|
|
65615
|
-
cancelInvalidation();
|
|
65616
|
-
unsubscribe();
|
|
65617
|
-
context2.transportMetrics.activeClients -= 1;
|
|
65618
|
-
};
|
|
65619
|
-
socket.once("close", cleanup);
|
|
65620
|
-
socket.once("error", cleanup);
|
|
65621
|
-
cancelInvalidation = accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
|
|
65622
|
-
cleanup();
|
|
65623
|
-
socket.close(1008, "Access session expired");
|
|
65624
|
-
}) ?? (() => void 0);
|
|
65625
|
-
if (socket.readyState !== socket.OPEN) return;
|
|
65626
|
-
const send = (message) => sendEventStreamMessage(
|
|
65627
|
-
socket,
|
|
65628
|
-
message,
|
|
65629
|
-
() => {
|
|
65630
|
-
eventStream.noteBackpressure();
|
|
65631
|
-
},
|
|
65632
|
-
() => {
|
|
65633
|
-
context2.transportMetrics.slowClientDisconnects += 1;
|
|
65634
|
-
}
|
|
65635
|
-
);
|
|
65636
|
-
const sendEvents = (events) => sendEventStreamEvents(
|
|
65637
|
-
socket,
|
|
65638
|
-
events,
|
|
65639
|
-
() => {
|
|
65640
|
-
eventStream.noteBackpressure();
|
|
65641
|
-
},
|
|
65642
|
-
() => {
|
|
65643
|
-
context2.transportMetrics.slowClientDisconnects += 1;
|
|
65644
|
-
}
|
|
65645
|
-
);
|
|
65646
|
-
const flushLiveEvents = () => {
|
|
65647
|
-
liveFlushScheduled = false;
|
|
65648
|
-
if (cleanedUp || liveEvents.length === 0) {
|
|
65649
|
-
return;
|
|
65650
|
-
}
|
|
65651
|
-
const events = liveEvents.splice(0);
|
|
65652
|
-
sendEvents(events);
|
|
65653
|
-
};
|
|
65654
|
-
const enqueueLiveEvent = (event) => {
|
|
65655
|
-
liveEvents.push(event);
|
|
65656
|
-
if (liveEvents.length >= MAX_EVENT_BATCH_SIZE) {
|
|
65657
|
-
flushLiveEvents();
|
|
65658
|
-
return;
|
|
65659
|
-
}
|
|
65660
|
-
if (liveFlushScheduled) {
|
|
65661
|
-
return;
|
|
65662
|
-
}
|
|
65663
|
-
liveFlushScheduled = true;
|
|
65664
|
-
queueMicrotask(() => {
|
|
65665
|
-
if (liveFlushScheduled) {
|
|
65666
|
-
flushLiveEvents();
|
|
65667
|
-
}
|
|
65668
|
-
});
|
|
65669
|
-
};
|
|
65670
|
-
const replay = eventStream.replayAfter(request2.query.afterSequence);
|
|
65671
|
-
if (replay.type === "resync") {
|
|
65672
|
-
const sent = send({
|
|
65673
|
-
latestSequence: replay.latestSequence,
|
|
65674
|
-
reason: replay.reason,
|
|
65675
|
-
sessionId: eventStream.checkpoint.sessionId,
|
|
65676
|
-
type: "resync.required",
|
|
65677
|
-
version: 3
|
|
65678
|
-
});
|
|
65679
|
-
if (sent) {
|
|
65680
|
-
socket.close(1e3, "Snapshot resync required");
|
|
65681
|
-
}
|
|
65682
|
-
return;
|
|
65683
|
-
}
|
|
65684
|
-
const checkpoint = eventStream.checkpoint;
|
|
65685
|
-
const initializationEvents = [];
|
|
65686
|
-
let isInitializing = true;
|
|
65687
|
-
unsubscribe = eventStream.subscribe((event) => {
|
|
65688
|
-
if (isInitializing) {
|
|
65689
|
-
initializationEvents.push(event);
|
|
65690
|
-
return;
|
|
65691
|
-
}
|
|
65692
|
-
enqueueLiveEvent(event);
|
|
65693
|
-
});
|
|
65694
|
-
const readySent = send({
|
|
65695
|
-
latestSequence: checkpoint.sequence,
|
|
65696
|
-
sessionId: checkpoint.sessionId,
|
|
65697
|
-
type: "connection.ready",
|
|
65698
|
-
version: 3
|
|
65699
|
-
});
|
|
65700
|
-
if (!readySent) {
|
|
65701
|
-
return;
|
|
65702
|
-
}
|
|
65703
|
-
if (!sendEvents(replay.events)) {
|
|
65704
|
-
return;
|
|
65705
|
-
}
|
|
65706
|
-
isInitializing = false;
|
|
65707
|
-
if (!sendEvents(initializationEvents)) {
|
|
65708
|
-
return;
|
|
65709
|
-
}
|
|
65710
|
-
}
|
|
65711
|
-
);
|
|
65712
|
-
done();
|
|
65713
|
-
};
|
|
65714
65850
|
var ProjectRootScopeError = class extends Error {
|
|
65715
65851
|
constructor(code, message) {
|
|
65716
65852
|
super(message);
|
|
@@ -69477,7 +69613,7 @@ var registerSearchRoutes = (app, context, done) => {
|
|
|
69477
69613
|
{ id: TEMPORARY_TASK_SCOPE_ID, kind: "temporary" },
|
|
69478
69614
|
...projects.map((project) => ({ id: project.id, kind: "project" }))
|
|
69479
69615
|
];
|
|
69480
|
-
return provider.search.searchTasks(request2.query, scopes);
|
|
69616
|
+
return provider.search.searchTasks(request2.query, scopes, request2.signal);
|
|
69481
69617
|
}
|
|
69482
69618
|
);
|
|
69483
69619
|
app.get(
|
|
@@ -69507,7 +69643,8 @@ var registerSearchRoutes = (app, context, done) => {
|
|
|
69507
69643
|
return provider.search.searchTaskOccurrences(
|
|
69508
69644
|
request2.params.taskId,
|
|
69509
69645
|
request2.query,
|
|
69510
|
-
project.scope
|
|
69646
|
+
project.scope,
|
|
69647
|
+
request2.signal
|
|
69511
69648
|
);
|
|
69512
69649
|
}
|
|
69513
69650
|
);
|
|
@@ -70086,6 +70223,7 @@ var AsyncQuestionService = class {
|
|
|
70086
70223
|
async dismiss(projectId, taskId, ids) {
|
|
70087
70224
|
const { task } = await this.task(projectId, taskId);
|
|
70088
70225
|
await this.repository().dismissAsyncQuestions(projectId, taskId, ids);
|
|
70226
|
+
this.context.workbenchChanges.publish({ type: "async-questions.changed", projectId, taskId });
|
|
70089
70227
|
return this.pending(projectId, taskId, new Set(collectRunningTurnIds(task)));
|
|
70090
70228
|
}
|
|
70091
70229
|
async answer(projectId, taskId, id, answers) {
|
|
@@ -70130,6 +70268,7 @@ var AsyncQuestionService = class {
|
|
|
70130
70268
|
409
|
|
70131
70269
|
);
|
|
70132
70270
|
const checkpoint = runtime.eventStream.checkpoint;
|
|
70271
|
+
this.context.workbenchChanges.publish({ type: "async-questions.changed", projectId, taskId });
|
|
70133
70272
|
const providerInput = { text, skills: [], files: [], images: [], textAttachments: [] };
|
|
70134
70273
|
try {
|
|
70135
70274
|
const turn = running === void 0 ? await runtime.provider.startTurn(taskId, providerInput, settings) : null;
|
|
@@ -70146,6 +70285,7 @@ var AsyncQuestionService = class {
|
|
|
70146
70285
|
"answering"
|
|
70147
70286
|
))
|
|
70148
70287
|
throw new Error("Answer state changed unexpectedly");
|
|
70288
|
+
this.context.workbenchChanges.publish({ type: "async-questions.changed", projectId, taskId });
|
|
70149
70289
|
return result;
|
|
70150
70290
|
} catch {
|
|
70151
70291
|
throw this.unknownOutcome();
|
|
@@ -70319,7 +70459,9 @@ var registerProjectTodoRoutes = (app, context, done) => {
|
|
|
70319
70459
|
await assertProject(projectId);
|
|
70320
70460
|
return context.runIdempotent(scope, key, payload, async () => {
|
|
70321
70461
|
try {
|
|
70322
|
-
|
|
70462
|
+
const result = await action();
|
|
70463
|
+
context.workbenchChanges.publish({ type: "project-todos.changed", projectId });
|
|
70464
|
+
return result;
|
|
70323
70465
|
} catch (error) {
|
|
70324
70466
|
return toProjectTodoHttpError(error);
|
|
70325
70467
|
}
|
|
@@ -71381,66 +71523,16 @@ var ScheduledTaskService = class {
|
|
|
71381
71523
|
};
|
|
71382
71524
|
|
|
71383
71525
|
// packages/server/src/routes/scheduled-task-events.ts
|
|
71384
|
-
var change = { type: "scheduled-tasks.changed" };
|
|
71385
|
-
var frame = JSON.stringify(change);
|
|
71386
71526
|
function registerScheduledTaskEvents(app, context) {
|
|
71387
|
-
|
|
71388
|
-
|
|
71389
|
-
|
|
71390
|
-
|
|
71391
|
-
|
|
71392
|
-
|
|
71393
|
-
|
|
71394
|
-
|
|
71395
|
-
|
|
71396
|
-
const send = () => {
|
|
71397
|
-
if (closed || socket.readyState !== 1) return;
|
|
71398
|
-
if (socket.bufferedAmount > 65536) {
|
|
71399
|
-
socket.close(1013, "Slow client");
|
|
71400
|
-
return;
|
|
71401
|
-
}
|
|
71402
|
-
socket.send(frame, (error) => {
|
|
71403
|
-
if (error) socket.terminate();
|
|
71404
|
-
});
|
|
71405
|
-
};
|
|
71406
|
-
const unsubscribe = context.scheduledTaskService.subscribe(() => {
|
|
71407
|
-
if (queued || closed) return;
|
|
71408
|
-
queued = true;
|
|
71409
|
-
queueMicrotask(() => {
|
|
71410
|
-
queued = false;
|
|
71411
|
-
send();
|
|
71412
|
-
});
|
|
71413
|
-
});
|
|
71414
|
-
let alive = true;
|
|
71415
|
-
socket.on("pong", () => {
|
|
71416
|
-
alive = true;
|
|
71417
|
-
});
|
|
71418
|
-
const heartbeat = setInterval(() => {
|
|
71419
|
-
if (!alive) {
|
|
71420
|
-
socket.terminate();
|
|
71421
|
-
return;
|
|
71422
|
-
}
|
|
71423
|
-
alive = false;
|
|
71424
|
-
socket.ping();
|
|
71425
|
-
}, 3e4);
|
|
71426
|
-
heartbeat.unref();
|
|
71427
|
-
let cancelInvalidation = () => void 0;
|
|
71428
|
-
const cleanup = () => {
|
|
71429
|
-
if (closed) return;
|
|
71430
|
-
closed = true;
|
|
71431
|
-
unsubscribe();
|
|
71432
|
-
cancelExpiry();
|
|
71433
|
-
cancelInvalidation();
|
|
71434
|
-
clearInterval(heartbeat);
|
|
71435
|
-
};
|
|
71436
|
-
socket.once("close", cleanup);
|
|
71437
|
-
socket.once("error", cleanup);
|
|
71438
|
-
cancelInvalidation = context.accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
|
|
71439
|
-
cleanup();
|
|
71440
|
-
socket.close(1008, "Access session expired");
|
|
71441
|
-
}) ?? (() => void 0);
|
|
71442
|
-
send();
|
|
71443
|
-
});
|
|
71527
|
+
registerResourceChangeEvents(
|
|
71528
|
+
app,
|
|
71529
|
+
context,
|
|
71530
|
+
"/v1/scheduled-tasks/events",
|
|
71531
|
+
{ type: "scheduled-tasks.changed" },
|
|
71532
|
+
(listener) => context.scheduledTaskService.subscribe(() => {
|
|
71533
|
+
listener({ type: "scheduled-tasks.changed" });
|
|
71534
|
+
})
|
|
71535
|
+
);
|
|
71444
71536
|
}
|
|
71445
71537
|
|
|
71446
71538
|
// packages/server/src/routes/scheduled-task-routes.ts
|
|
@@ -72364,6 +72456,7 @@ async function createCodexlyServer(options) {
|
|
|
72364
72456
|
provider: options.provider
|
|
72365
72457
|
});
|
|
72366
72458
|
const attachmentStore = new AttachmentStore();
|
|
72459
|
+
const workbenchChanges = new WorkbenchChanges();
|
|
72367
72460
|
const resolveProviderTurnInput = createProviderTurnInputResolver(
|
|
72368
72461
|
attachmentStore,
|
|
72369
72462
|
(projectId, id) => options.projectTodoRepository?.readProjectTodoAttachment(projectId, id) ?? Promise.resolve(void 0)
|
|
@@ -72421,6 +72514,7 @@ async function createCodexlyServer(options) {
|
|
|
72421
72514
|
);
|
|
72422
72515
|
},
|
|
72423
72516
|
onTurnCompleted: (runtime) => taskQueue.startNext(runtime),
|
|
72517
|
+
workbenchChanges,
|
|
72424
72518
|
provider: resolved.provider,
|
|
72425
72519
|
scope: resolved.scope
|
|
72426
72520
|
});
|
|
@@ -72563,6 +72657,7 @@ async function createCodexlyServer(options) {
|
|
|
72563
72657
|
...options.staticRoot === void 0 ? {} : { staticRoot: options.staticRoot }
|
|
72564
72658
|
});
|
|
72565
72659
|
const routeContext = {
|
|
72660
|
+
workbenchChanges,
|
|
72566
72661
|
...options.asyncQuestionRepository === void 0 ? {} : { asyncQuestionRepository: options.asyncQuestionRepository },
|
|
72567
72662
|
...options.projectTodoRepository === void 0 ? {} : { projectTodoRepository: options.projectTodoRepository },
|
|
72568
72663
|
submissionRepository: options.submissionRepository ?? createMemorySubmissionRepository(idempotencyCacheSize),
|
|
@@ -72647,6 +72742,7 @@ async function createCodexlyServer(options) {
|
|
|
72647
72742
|
await app.register(registerSubmissionRoutes, routeContext);
|
|
72648
72743
|
await app.register(registerAsyncQuestionRoutes, routeContext);
|
|
72649
72744
|
await app.register(registerProjectTodoRoutes, routeContext);
|
|
72745
|
+
registerWorkbenchEvents(app, routeContext);
|
|
72650
72746
|
await app.register(registerQueueRoutes, routeContext);
|
|
72651
72747
|
await app.register(registerEventRoutes, routeContext);
|
|
72652
72748
|
await app.ready();
|