@bryanhu/codexly 0.6.0 → 0.8.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 +26 -1
- package/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/dist/{chunk-NUY5U24W.js → chunk-CGZ44LHJ.js} +19 -15
- package/dist/{chunk-C3PIS4SQ.js → chunk-NAHIDASP.js} +4 -4
- package/dist/cli.js +5 -21
- package/dist/providers/codex/index.js +1 -1
- package/dist/server/index.js +2 -2
- package/dist/web/.vite/manifest.json +176 -175
- package/dist/web/.vite/manifest.json.br +0 -0
- package/dist/web/.vite/manifest.json.gz +0 -0
- package/dist/web/assets/{button-group-b2-xCzBP.js → button-group-CYhxptHg.js} +1 -1
- package/dist/web/assets/button-group-CYhxptHg.js.br +0 -0
- package/dist/web/assets/button-group-CYhxptHg.js.gz +0 -0
- package/dist/web/assets/check-BOdEYGxk.js +1 -0
- package/dist/web/assets/check-BOdEYGxk.js.br +0 -0
- package/dist/web/assets/check-BOdEYGxk.js.gz +0 -0
- package/dist/web/assets/{checkbox-Cft8ypsb.js → checkbox-nYXSVVQi.js} +1 -1
- package/dist/web/assets/checkbox-nYXSVVQi.js.br +0 -0
- package/dist/web/assets/checkbox-nYXSVVQi.js.gz +0 -0
- package/dist/web/assets/{chunk-BO2N2NFS-BZtBhhTV.js → chunk-BO2N2NFS-Du4ZYlrF.js} +4 -4
- package/dist/web/assets/chunk-BO2N2NFS-Du4ZYlrF.js.br +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-Du4ZYlrF.js.gz +0 -0
- package/dist/web/assets/{code-highlighter-BG341hSJ.js → code-highlighter-CsBwNeVP.js} +1 -1
- package/dist/web/assets/code-highlighter-CsBwNeVP.js.br +0 -0
- package/dist/web/assets/code-highlighter-CsBwNeVP.js.gz +0 -0
- package/dist/web/assets/{code-languages-DA_FG9-T.js → code-languages-CPYTSY-8.js} +1 -1
- package/dist/web/assets/code-languages-CPYTSY-8.js.br +0 -0
- package/dist/web/assets/code-languages-CPYTSY-8.js.gz +0 -0
- package/dist/web/assets/{context-menu-CZuXyHCN.js → context-menu-B-oGuenT.js} +1 -1
- package/dist/web/assets/context-menu-B-oGuenT.js.br +0 -0
- package/dist/web/assets/context-menu-B-oGuenT.js.gz +0 -0
- package/dist/web/assets/{dist-ByRtqJXv.js → dist-CaAkD3UC.js} +1 -1
- package/dist/web/assets/dist-CaAkD3UC.js.br +0 -0
- package/dist/web/assets/dist-CaAkD3UC.js.gz +0 -0
- package/dist/web/assets/dist-Cib4eRMP.js +1 -0
- package/dist/web/assets/dist-Cib4eRMP.js.br +0 -0
- package/dist/web/assets/dist-Cib4eRMP.js.gz +0 -0
- package/dist/web/assets/{es2015-Cd8ehGwJ.js → es2015-Ru0tXs3G.js} +1 -1
- package/dist/web/assets/es2015-Ru0tXs3G.js.br +0 -0
- package/dist/web/assets/es2015-Ru0tXs3G.js.gz +0 -0
- package/dist/web/assets/{file-code-corner-D1h7_C7f.js → file-code-corner-Bs_lkoMS.js} +1 -1
- package/dist/web/assets/file-code-corner-Bs_lkoMS.js.br +0 -0
- package/dist/web/assets/file-code-corner-Bs_lkoMS.js.gz +0 -0
- package/dist/web/assets/{file-navigation-view-preference-BikLLmlP.js → file-navigation-view-preference-CMQ7btc9.js} +1 -1
- package/dist/web/assets/file-navigation-view-preference-CMQ7btc9.js.br +0 -0
- package/dist/web/assets/file-navigation-view-preference-CMQ7btc9.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-CotyuYId.js +2 -0
- package/dist/web/assets/file-review-dialog-CotyuYId.js.br +0 -0
- package/dist/web/assets/file-review-dialog-CotyuYId.js.gz +0 -0
- package/dist/web/assets/{file-tree-CbuG5nkz.js → file-tree-CqppWhX1.js} +1 -1
- package/dist/web/assets/file-tree-CqppWhX1.js.br +0 -0
- package/dist/web/assets/file-tree-CqppWhX1.js.gz +0 -0
- package/dist/web/assets/{git-commit-horizontal-BJGxHnV4.js → git-commit-horizontal-BezTHHvd.js} +1 -1
- package/dist/web/assets/git-commit-horizontal-BezTHHvd.js.br +0 -0
- package/dist/web/assets/git-commit-horizontal-BezTHHvd.js.gz +0 -0
- package/dist/web/assets/git-history-panel-CUvtjCk7.js +2 -0
- package/dist/web/assets/git-history-panel-CUvtjCk7.js.br +0 -0
- package/dist/web/assets/git-history-panel-CUvtjCk7.js.gz +0 -0
- package/dist/web/assets/global-settings-dialog-B8gBgus7.js +1 -0
- package/dist/web/assets/global-settings-dialog-B8gBgus7.js.br +0 -0
- package/dist/web/assets/global-settings-dialog-B8gBgus7.js.gz +0 -0
- package/dist/web/assets/{highlighted-body-OFNGDK62-bj8RQV-D.js → highlighted-body-OFNGDK62-BoYHrzPS.js} +1 -1
- package/dist/web/assets/highlighted-body-OFNGDK62-BoYHrzPS.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-BoYHrzPS.js.gz +0 -0
- package/dist/web/assets/index-C4ygqQbj.css +2 -0
- package/dist/web/assets/index-C4ygqQbj.css.br +0 -0
- package/dist/web/assets/index-C4ygqQbj.css.gz +0 -0
- package/dist/web/assets/{index-DTJVeg10.js → index-zqp46jqN.js} +3 -3
- package/dist/web/assets/index-zqp46jqN.js.br +0 -0
- package/dist/web/assets/index-zqp46jqN.js.gz +0 -0
- package/dist/web/assets/{lazy-message-response-8zk6PTbZ.js → lazy-message-response-CG0j4yJD.js} +2 -2
- package/dist/web/assets/lazy-message-response-CG0j4yJD.js.br +0 -0
- package/dist/web/assets/lazy-message-response-CG0j4yJD.js.gz +0 -0
- package/dist/web/assets/loader-circle-B1P6CG7G.js +1 -0
- package/dist/web/assets/loader-circle-B1P6CG7G.js.br +0 -0
- package/dist/web/assets/loader-circle-B1P6CG7G.js.gz +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BRvawXSo.js +1 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BRvawXSo.js.br +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BRvawXSo.js.gz +0 -0
- package/dist/web/assets/{message-response-CKPW6CRi.js → message-response-HPRWZrlE.js} +1 -1
- package/dist/web/assets/message-response-HPRWZrlE.js.br +0 -0
- package/dist/web/assets/message-response-HPRWZrlE.js.gz +0 -0
- package/dist/web/assets/{patch-diff-viewer-CaWTvh9_.js → patch-diff-viewer-CMgdM7ny.js} +2 -2
- package/dist/web/assets/patch-diff-viewer-CMgdM7ny.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-CMgdM7ny.js.gz +0 -0
- package/dist/web/assets/{project-file-popup-page-Cmjoovjs.js → project-file-popup-page-DLcWrRDd.js} +1 -1
- package/dist/web/assets/project-file-popup-page-DLcWrRDd.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-DLcWrRDd.js.gz +0 -0
- package/dist/web/assets/{project-source-panel-0Chmfe7s.js → project-source-panel-BAOR4fTj.js} +3 -3
- package/dist/web/assets/project-source-panel-BAOR4fTj.js.br +0 -0
- package/dist/web/assets/project-source-panel-BAOR4fTj.js.gz +0 -0
- package/dist/web/assets/{prompt-input-controls-CT6f-1tO.js → prompt-input-controls-CJyoVdGf.js} +1 -1
- package/dist/web/assets/prompt-input-controls-CJyoVdGf.js.br +0 -0
- package/dist/web/assets/prompt-input-controls-CJyoVdGf.js.gz +0 -0
- package/dist/web/assets/{prompt-reference-token-CTm_xv2R.js → prompt-reference-token-DvdGBAjJ.js} +1 -1
- package/dist/web/assets/prompt-reference-token-DvdGBAjJ.js.br +0 -0
- package/dist/web/assets/prompt-reference-token-DvdGBAjJ.js.gz +0 -0
- package/dist/web/assets/{provider-connection-queries-CLpiOnBN.js → provider-connection-queries-CSumXgIL.js} +1 -1
- package/dist/web/assets/provider-connection-queries-CSumXgIL.js.br +0 -0
- package/dist/web/assets/provider-connection-queries-CSumXgIL.js.gz +0 -0
- package/dist/web/assets/{shiki-bundle-BEmB8kBs.js → shiki-bundle-BD1THhST.js} +1 -1
- package/dist/web/assets/shiki-bundle-BD1THhST.js.br +0 -0
- package/dist/web/assets/shiki-bundle-BD1THhST.js.gz +0 -0
- package/dist/web/assets/{tooltip-BU1Qoscx.js → tooltip-D3tWiAWP.js} +1 -1
- package/dist/web/assets/tooltip-D3tWiAWP.js.br +0 -0
- package/dist/web/assets/tooltip-D3tWiAWP.js.gz +0 -0
- package/dist/web/assets/{upload-BDX8w8rQ.js → upload-C2JxJnmn.js} +1 -1
- package/dist/web/assets/upload-C2JxJnmn.js.br +0 -0
- package/dist/web/assets/upload-C2JxJnmn.js.gz +0 -0
- package/dist/web/assets/{useInfiniteQuery-Bj31MvqL.js → useInfiniteQuery-Bu9BuQ4a.js} +1 -1
- package/dist/web/assets/useInfiniteQuery-Bu9BuQ4a.js.br +0 -0
- package/dist/web/assets/useInfiniteQuery-Bu9BuQ4a.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-NQ5C_cXN.js +2 -0
- package/dist/web/assets/workbench-inspector-changes-NQ5C_cXN.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-NQ5C_cXN.js.gz +0 -0
- package/dist/web/assets/{workbench-pet-canvas-CO4nVH5z.js → workbench-pet-canvas-BLh6Qsla.js} +1 -1
- package/dist/web/assets/workbench-pet-canvas-BLh6Qsla.js.br +0 -0
- package/dist/web/assets/workbench-pet-canvas-BLh6Qsla.js.gz +0 -0
- package/dist/web/assets/{workbench-shell-BOnddpen.js → workbench-shell-B5fsrpDH.js} +8 -8
- package/dist/web/assets/workbench-shell-B5fsrpDH.js.br +0 -0
- package/dist/web/assets/workbench-shell-B5fsrpDH.js.gz +0 -0
- package/dist/web/index.html +12 -12
- 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/button-group-b2-xCzBP.js.br +0 -0
- package/dist/web/assets/button-group-b2-xCzBP.js.gz +0 -0
- package/dist/web/assets/check-DExH7zwT.js +0 -1
- package/dist/web/assets/check-DExH7zwT.js.br +0 -0
- package/dist/web/assets/check-DExH7zwT.js.gz +0 -0
- package/dist/web/assets/checkbox-Cft8ypsb.js.br +0 -0
- package/dist/web/assets/checkbox-Cft8ypsb.js.gz +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-BZtBhhTV.js.br +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-BZtBhhTV.js.gz +0 -0
- package/dist/web/assets/code-highlighter-BG341hSJ.js.br +0 -0
- package/dist/web/assets/code-highlighter-BG341hSJ.js.gz +0 -0
- package/dist/web/assets/code-languages-DA_FG9-T.js.br +0 -0
- package/dist/web/assets/code-languages-DA_FG9-T.js.gz +0 -0
- package/dist/web/assets/context-menu-CZuXyHCN.js.br +0 -0
- package/dist/web/assets/context-menu-CZuXyHCN.js.gz +0 -0
- package/dist/web/assets/dist-ByRtqJXv.js.br +0 -0
- package/dist/web/assets/dist-ByRtqJXv.js.gz +0 -0
- package/dist/web/assets/dist-hozmU7_C.js +0 -1
- package/dist/web/assets/dist-hozmU7_C.js.br +0 -0
- package/dist/web/assets/dist-hozmU7_C.js.gz +0 -0
- package/dist/web/assets/es2015-Cd8ehGwJ.js.br +0 -0
- package/dist/web/assets/es2015-Cd8ehGwJ.js.gz +0 -0
- package/dist/web/assets/file-code-corner-D1h7_C7f.js.br +0 -0
- package/dist/web/assets/file-code-corner-D1h7_C7f.js.gz +0 -0
- package/dist/web/assets/file-navigation-view-preference-BikLLmlP.js.br +0 -0
- package/dist/web/assets/file-navigation-view-preference-BikLLmlP.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-dlOxwNrj.js +0 -2
- package/dist/web/assets/file-review-dialog-dlOxwNrj.js.br +0 -0
- package/dist/web/assets/file-review-dialog-dlOxwNrj.js.gz +0 -0
- package/dist/web/assets/file-tree-CbuG5nkz.js.br +0 -0
- package/dist/web/assets/file-tree-CbuG5nkz.js.gz +0 -0
- package/dist/web/assets/git-commit-horizontal-BJGxHnV4.js.br +0 -0
- package/dist/web/assets/git-commit-horizontal-BJGxHnV4.js.gz +0 -0
- package/dist/web/assets/git-history-panel-DqiTnaf1.js +0 -2
- package/dist/web/assets/git-history-panel-DqiTnaf1.js.br +0 -0
- package/dist/web/assets/git-history-panel-DqiTnaf1.js.gz +0 -0
- package/dist/web/assets/global-settings-dialog-DFjxQX_B.js +0 -1
- package/dist/web/assets/global-settings-dialog-DFjxQX_B.js.br +0 -0
- package/dist/web/assets/global-settings-dialog-DFjxQX_B.js.gz +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-bj8RQV-D.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-bj8RQV-D.js.gz +0 -0
- package/dist/web/assets/index-BZYdzDQ3.css +0 -2
- package/dist/web/assets/index-BZYdzDQ3.css.br +0 -0
- package/dist/web/assets/index-BZYdzDQ3.css.gz +0 -0
- package/dist/web/assets/index-DTJVeg10.js.br +0 -0
- package/dist/web/assets/index-DTJVeg10.js.gz +0 -0
- package/dist/web/assets/lazy-message-response-8zk6PTbZ.js.br +0 -0
- package/dist/web/assets/lazy-message-response-8zk6PTbZ.js.gz +0 -0
- package/dist/web/assets/loader-circle-CYc50iXi.js +0 -1
- package/dist/web/assets/loader-circle-CYc50iXi.js.br +0 -0
- package/dist/web/assets/loader-circle-CYc50iXi.js.gz +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BDoa2Ho_.js +0 -1
- package/dist/web/assets/mermaid-GHXKKRXX-BDoa2Ho_.js.br +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BDoa2Ho_.js.gz +0 -0
- package/dist/web/assets/message-response-CKPW6CRi.js.br +0 -0
- package/dist/web/assets/message-response-CKPW6CRi.js.gz +0 -0
- package/dist/web/assets/patch-diff-viewer-CaWTvh9_.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-CaWTvh9_.js.gz +0 -0
- package/dist/web/assets/project-file-popup-page-Cmjoovjs.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-Cmjoovjs.js.gz +0 -0
- package/dist/web/assets/project-source-panel-0Chmfe7s.js.br +0 -0
- package/dist/web/assets/project-source-panel-0Chmfe7s.js.gz +0 -0
- package/dist/web/assets/prompt-input-controls-CT6f-1tO.js.br +0 -0
- package/dist/web/assets/prompt-input-controls-CT6f-1tO.js.gz +0 -0
- package/dist/web/assets/prompt-reference-token-CTm_xv2R.js.br +0 -0
- package/dist/web/assets/prompt-reference-token-CTm_xv2R.js.gz +0 -0
- package/dist/web/assets/provider-connection-queries-CLpiOnBN.js.br +0 -0
- package/dist/web/assets/provider-connection-queries-CLpiOnBN.js.gz +0 -0
- package/dist/web/assets/shiki-bundle-BEmB8kBs.js.br +0 -0
- package/dist/web/assets/shiki-bundle-BEmB8kBs.js.gz +0 -0
- package/dist/web/assets/tooltip-BU1Qoscx.js.br +0 -0
- package/dist/web/assets/tooltip-BU1Qoscx.js.gz +0 -0
- package/dist/web/assets/upload-BDX8w8rQ.js.br +0 -0
- package/dist/web/assets/upload-BDX8w8rQ.js.gz +0 -0
- package/dist/web/assets/useInfiniteQuery-Bj31MvqL.js.br +0 -0
- package/dist/web/assets/useInfiniteQuery-Bj31MvqL.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-CWeWA-hv.js +0 -2
- package/dist/web/assets/workbench-inspector-changes-CWeWA-hv.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-CWeWA-hv.js.gz +0 -0
- package/dist/web/assets/workbench-pet-canvas-CO4nVH5z.js.br +0 -0
- package/dist/web/assets/workbench-pet-canvas-CO4nVH5z.js.gz +0 -0
- package/dist/web/assets/workbench-shell-BOnddpen.js.br +0 -0
- package/dist/web/assets/workbench-shell-BOnddpen.js.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,29 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.8.0] - 2026-08-27
|
|
8
|
+
|
|
9
|
+
### 新增
|
|
10
|
+
|
|
11
|
+
- 添加自定义工作台背景图片集合,支持批量添加、缩略图选择和单独删除,并将背景配置移至独立设置分类。
|
|
12
|
+
|
|
13
|
+
### 修复
|
|
14
|
+
|
|
15
|
+
- 修复已水合任务在后台 Snapshot 重验证期间错误显示挂起状态的问题,使现有内容保持可用。
|
|
16
|
+
|
|
17
|
+
## [0.7.0] - 2026-08-27
|
|
18
|
+
|
|
19
|
+
### 新增
|
|
20
|
+
|
|
21
|
+
- 添加临时任务归档入口,支持查看、恢复和永久删除已归档的 standalone Task。
|
|
22
|
+
- 为临时任务添加独立宠物活动气泡,使其与项目任务状态分别展示。
|
|
23
|
+
- 根据壁纸亮度自动切换完整前景色方案,保持文字与控件清晰可读。
|
|
24
|
+
|
|
25
|
+
### 修复
|
|
26
|
+
|
|
27
|
+
- 修复 standalone Task 错误继承合成工作区上下文的问题,改用 Codex 原生运行时上下文。
|
|
28
|
+
- 固定 Inspector 标签栏,并让文件预览填充剩余高度,避免长内容挤压标签。
|
|
29
|
+
|
|
7
30
|
## [0.6.0] - 2026-08-27
|
|
8
31
|
|
|
9
32
|
### 新增
|
|
@@ -124,7 +147,9 @@
|
|
|
124
147
|
- 拆分全栈测试套件并限制 Vitest 并发,提升跨平台门禁稳定性;GitHub Release 改为严格提取对应版本的完整更新日志。
|
|
125
148
|
- 将最低 Node.js 版本调整为 `22.14.0`,同步 CLI、CI、发布环境和使用文档。
|
|
126
149
|
|
|
127
|
-
[Unreleased]: https://github.com/BryanHoo/Codexly/compare/v0.
|
|
150
|
+
[Unreleased]: https://github.com/BryanHoo/Codexly/compare/v0.8.0...HEAD
|
|
151
|
+
[0.8.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.8.0
|
|
152
|
+
[0.7.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.7.0
|
|
128
153
|
[0.6.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.6.0
|
|
129
154
|
[0.5.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.5.0
|
|
130
155
|
[0.4.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.4.0
|
package/README.md
CHANGED
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
- Keep follow-up work in a persistent task queue, and edit queued messages and attachments before they run
|
|
41
41
|
- Attach files and images, reference project files with `@`, and answer input requests from configured MCP servers
|
|
42
42
|
- Choose the model, reasoning effort, Fast mode, approval behavior, and file access level for each task
|
|
43
|
-
- Organize ordered multi-root projects, archive
|
|
43
|
+
- Organize ordered multi-root projects, archive project or temporary tasks, and permanently delete tasks when needed
|
|
44
44
|
- Inspect, preview, rename, and delete project files; review diffs; manage branches and worktrees; and commit or push changes
|
|
45
45
|
- Fork a task from an AI response and continue it in a new Git worktree
|
|
46
|
-
- Add animated workspace pets
|
|
47
|
-
-
|
|
46
|
+
- Add animated workspace pets with separate activity bubbles for project and temporary tasks
|
|
47
|
+
- Manage a collection of custom workspace backgrounds, or use Bing daily images, with automatic foreground colors, overlay opacity, and blur
|
|
48
48
|
- Access the workspace from another device on a trusted local network
|
|
49
49
|
|
|
50
50
|
## Requirements
|
package/README.zh-CN.md
CHANGED
|
@@ -10,11 +10,11 @@ Codexly 是一个在浏览器中使用 Codex 的本地 AI 编程工作台。它
|
|
|
10
10
|
- 使用持久化任务队列安排后续工作,并在执行前编辑排队消息和附件
|
|
11
11
|
- 添加文件与图片、使用 `@` 引用项目文件,并回答已配置 MCP 服务的补充输入请求
|
|
12
12
|
- 为每个任务选择模型、思考量、快速模式、审批方式和文件访问范围
|
|
13
|
-
-
|
|
13
|
+
- 组织有序的多根项目、归档项目或临时任务,并按需永久删除任务
|
|
14
14
|
- 查看、预览、重命名和删除项目文件,审查差异,管理分支与 worktree,并提交或推送变更
|
|
15
15
|
- 从 AI 回复处分叉任务,在新的 Git worktree 中继续工作
|
|
16
|
-
-
|
|
17
|
-
-
|
|
16
|
+
- 添加工作台宠物动画,并用独立气泡区分项目与临时任务的活动状态
|
|
17
|
+
- 管理自定义工作台背景图片集合,或使用 Bing 每日壁纸,并自动适配前景色、浮层遮罩与背景模糊
|
|
18
18
|
- 从可信局域网中的其他设备访问工作台
|
|
19
19
|
|
|
20
20
|
## 环境要求
|
|
@@ -9032,7 +9032,7 @@ async function isSameCanonicalPath(left, right) {
|
|
|
9032
9032
|
]);
|
|
9033
9033
|
return leftIdentity === rightIdentity;
|
|
9034
9034
|
}
|
|
9035
|
-
|
|
9035
|
+
function isProjectThread(thread, project) {
|
|
9036
9036
|
const nativeProjectId = thread["projectId"];
|
|
9037
9037
|
if (nativeProjectId !== null && typeof nativeProjectId !== "string") {
|
|
9038
9038
|
throw new CodexProtocolMappingError("Codex thread projectId must be a string or null");
|
|
@@ -9043,13 +9043,15 @@ async function isProjectThread(thread, project) {
|
|
|
9043
9043
|
if (nativeProjectId !== null) {
|
|
9044
9044
|
return false;
|
|
9045
9045
|
}
|
|
9046
|
-
|
|
9047
|
-
return isSameCanonicalPath(cwd, project.rootPath);
|
|
9046
|
+
return true;
|
|
9048
9047
|
}
|
|
9049
|
-
|
|
9050
|
-
if (!
|
|
9051
|
-
|
|
9048
|
+
function assertProjectThread(thread, project) {
|
|
9049
|
+
if (!isProjectThread(thread, project)) {
|
|
9050
|
+
return Promise.reject(
|
|
9051
|
+
new CodexProtocolMappingError("Codex thread does not belong to the active project")
|
|
9052
|
+
);
|
|
9052
9053
|
}
|
|
9054
|
+
return Promise.resolve();
|
|
9053
9055
|
}
|
|
9054
9056
|
function isThreadNotLoadedError(error) {
|
|
9055
9057
|
return error instanceof RpcResponseError && error.code === -32600 && error.message.startsWith("thread not loaded:");
|
|
@@ -9214,7 +9216,7 @@ var CodexAgentProviderBase = class {
|
|
|
9214
9216
|
await this.client.request("thread/fork", {
|
|
9215
9217
|
...lastTurnId === void 0 ? {} : { lastTurnId },
|
|
9216
9218
|
// Fork 必须使用当前 Project 的完整运行时根,不能继承旧 Thread 的单根配置。
|
|
9217
|
-
runtimeWorkspaceRoots: [...this.project.runtimeWorkspaceRoots],
|
|
9219
|
+
...this.project.kind === "project" ? { runtimeWorkspaceRoots: [...this.project.runtimeWorkspaceRoots] } : {},
|
|
9218
9220
|
threadId: taskId
|
|
9219
9221
|
}),
|
|
9220
9222
|
"thread/fork response"
|
|
@@ -9577,11 +9579,13 @@ var CodexAgentProviderTurns = class extends CodexAgentProviderQueue {
|
|
|
9577
9579
|
async startTask(options = {}) {
|
|
9578
9580
|
const response = expectRecord(
|
|
9579
9581
|
await this.client.request("thread/start", {
|
|
9580
|
-
cwd: this.project.rootPath,
|
|
9581
9582
|
historyMode: "paginated",
|
|
9582
|
-
...this.project.kind === "temporary" ? {} : {
|
|
9583
|
-
|
|
9584
|
-
|
|
9583
|
+
...this.project.kind === "temporary" ? {} : {
|
|
9584
|
+
cwd: this.project.rootPath,
|
|
9585
|
+
projectId: this.project.id,
|
|
9586
|
+
// Project 身份与运行时文件系统授权彼此独立,必须显式传递完整根列表。
|
|
9587
|
+
runtimeWorkspaceRoots: [...this.project.runtimeWorkspaceRoots]
|
|
9588
|
+
},
|
|
9585
9589
|
...options.ephemeral === true ? { ephemeral: true } : {}
|
|
9586
9590
|
}),
|
|
9587
9591
|
"thread/start response"
|
|
@@ -9838,7 +9842,7 @@ var CodexAgentProviderTurns = class extends CodexAgentProviderQueue {
|
|
|
9838
9842
|
await this.client.request("thread/list", {
|
|
9839
9843
|
...input.archived === true ? { archived: true } : {},
|
|
9840
9844
|
...input.cursor === void 0 ? {} : { cursor: input.cursor },
|
|
9841
|
-
...this.project.kind === "temporary" ? {
|
|
9845
|
+
...this.project.kind === "temporary" ? { projectId: null } : { projectId: this.project.id },
|
|
9842
9846
|
...input.limit === void 0 ? {} : { limit: input.limit },
|
|
9843
9847
|
// 锁定版本用稳定 Pinned Section 过滤,保证固定任务先过滤再分页。
|
|
9844
9848
|
...input.pinnedOnly === true ? { sectionId: CODEX_PINNED_THREAD_SECTION_ID } : {},
|
|
@@ -10058,7 +10062,7 @@ var CodexAgentProviderTasks = class extends CodexAgentProviderTurns {
|
|
|
10058
10062
|
}
|
|
10059
10063
|
const response = expectRecord(nativeResponse, "thread/read response");
|
|
10060
10064
|
const thread = expectRecord(response["thread"], "thread/read thread");
|
|
10061
|
-
if (!
|
|
10065
|
+
if (!isProjectThread(thread, this.project)) {
|
|
10062
10066
|
const unmaterializedTask = this.runtime.unmaterializedTasks.get(taskId);
|
|
10063
10067
|
if (unmaterializedTask !== void 0 && thread["id"] === unmaterializedTask.id && thread["projectId"] === null) {
|
|
10064
10068
|
projectOwnershipVerified = true;
|
|
@@ -10596,8 +10600,8 @@ var CodexAgentProviderEvents = class extends CodexAgentProviderTasks {
|
|
|
10596
10600
|
const resumePromise = (async () => {
|
|
10597
10601
|
const response = expectRecord(
|
|
10598
10602
|
await this.client.request("thread/resume", {
|
|
10599
|
-
//
|
|
10600
|
-
runtimeWorkspaceRoots: [...this.project.runtimeWorkspaceRoots],
|
|
10603
|
+
// 恢复 Project Task 时覆盖旧运行时配置,使全部根立即生效。
|
|
10604
|
+
...this.project.kind === "project" ? { runtimeWorkspaceRoots: [...this.project.runtimeWorkspaceRoots] } : {},
|
|
10601
10605
|
threadId: taskId
|
|
10602
10606
|
}),
|
|
10603
10607
|
"thread/resume response"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
2
|
import { value_exports } from './chunk-DEKHLAWT.js';
|
|
3
|
-
import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-
|
|
3
|
+
import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-CGZ44LHJ.js';
|
|
4
4
|
import { WorkbenchPetProviderError, PendingRequestResolutionError } from './chunk-RNTA4MFS.js';
|
|
5
5
|
import { AGENT_FILE_EXTENSIONS, AGENT_FILE_MEDIA_TYPES, DEFAULT_COMMIT_MESSAGE_MODEL, TEMPORARY_TASK_API_PATH, TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_FILE_BYTES, AccessStatusResponseSchema, PairAccessRequestSchema, HealthResponseSchema, AppInfoResponseSchema, AgentMutationErrorSchema, InstallAppUpdateResponseSchema, InstallAppUpdateRequestSchema, EventStreamMetricsResponseSchema, AgentCapabilitiesSchema, AgentModelPageSchema, AgentGlobalSettingsResponseSchema, AgentGlobalSettingsSchema, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, 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, AgentTaskPageSchema, UnsubscribeAgentTaskResponseSchema, AgentTaskSnapshotResponseSchema, AgentMcpServerPageSchema, AgentBackgroundTerminalPageSchema, TerminateAgentBackgroundTerminalResponseSchema, PinAgentTaskResponseSchema, PinAgentTaskRequestSchema, RenameAgentTaskResponseSchema, RenameAgentTaskRequestSchema, ArchiveAgentTaskResponseSchema, ArchiveAgentTaskRequestSchema, UnarchiveAgentTaskResponseSchema, UnarchiveAgentTaskRequestSchema, DeleteAgentTaskResponseSchema, DeleteAgentTaskRequestSchema, StartAgentTaskResponseSchema, StartAgentTaskRequestSchema, StartAgentTurnResponseSchema, StartAgentTurnRequestSchema, SteerAgentTurnResponseSchema, SteerAgentTurnRequestSchema, InterruptAgentTurnResponseSchema, InterruptAgentTurnRequestSchema, ResolvePendingRequestResponseSchema, ResolvePendingRequestRequestSchema, AgentQueuedSubmissionPageSchema, AddAgentQueuedSubmissionResponseSchema, AddAgentQueuedSubmissionRequestSchema, UpdateAgentQueuedSubmissionResponseSchema, UpdateAgentQueuedSubmissionRequestSchema, DeleteAgentQueuedSubmissionResponseSchema, ReorderAgentQueuedSubmissionsResponseSchema, ReorderAgentQueuedSubmissionsRequestSchema, StartAgentQueuedSubmissionResponseSchema, StartAgentQueuedSubmissionRequestSchema, AgentPromptInputSchema, AgentProviderConnectionRecordSchema, MAX_AGENT_IMAGES, MAX_AGENT_IMAGE_TOTAL_BYTES, MAX_AGENT_FILE_TOTAL_BYTES, ProjectGitStatusSchema, ProjectGitStatusQuerySchema, ProjectGitHistoryPageSchema, ProjectGitHistoryQuerySchema, ProjectGitCommitFilesPageSchema, ProjectGitCommitFilesQuerySchema, ProjectGitCommitFileDiffSchema, ProjectGitCommitFileDiffQuerySchema, SwitchProjectBranchRequestSchema, CreateProjectBranchRequestSchema, GenerateCommitMessageResponseSchema, GenerateCommitMessageRequestSchema, CommitProjectChangesResponseSchema, CommitProjectChangesRequestSchema, ProjectFileTreeSchema, ProjectFileTreeQuerySchema, ProjectFileSearchPageSchema, ProjectFileSearchQuerySchema, StopProjectFileSearchResponseSchema, StopProjectFileSearchRequestSchema, ProjectSourceFileQuerySchema, ProjectSourceFileSchema, AgentAttachmentUploadResponseSchema, HostFileKindSchema, ImportHostAttachmentRequestSchema, AgentAttachmentKindSchema, AgentTaskSettingsResponseSchema, AgentTaskSettingsSchema, ReloadAgentMcpServersResponseSchema, ReloadAgentMcpServersRequestSchema, ReviewAgentTaskResponseSchema, ReviewAgentTaskRequestSchema, CompactAgentTaskResponseSchema, CompactAgentTaskRequestSchema, ForkAgentTaskResponseSchema, ForkAgentTaskRequestSchema, UploadAgentFeedbackResponseSchema, UploadAgentFeedbackRequestSchema, OpenAgentTaskAttachmentResponseSchema, OpenAgentTaskAttachmentRequestSchema, UpdateAgentGoalResponseSchema, UpdateAgentGoalRequestSchema, ClearAgentGoalResponseSchema, ProjectGitWorktreePageSchema, ProjectWorktreeMutationResponseSchema, CreateProjectWorktreeRequestSchema, SwitchProjectWorktreeRequestSchema, RenameProjectFileResponseSchema, RenameProjectFileRequestSchema, DeleteProjectFileResponseSchema, DeleteProjectFileRequestSchema, MAX_EVENT_BATCH_SIZE } from './chunk-TEWPWZPG.js';
|
|
6
6
|
import { __commonJS, __require, __toESM } from './chunk-K6J42667.js';
|
|
@@ -60917,12 +60917,12 @@ async function runSingleFlight(inFlight, key, operation) {
|
|
|
60917
60917
|
async function resolveTaskScope(projectId, options) {
|
|
60918
60918
|
if (projectId === TEMPORARY_TASK_SCOPE_ID) {
|
|
60919
60919
|
return {
|
|
60920
|
-
provider: options.provider.forTemporary(options.
|
|
60920
|
+
provider: options.provider.forTemporary(options.standaloneCwd),
|
|
60921
60921
|
scope: {
|
|
60922
60922
|
id: TEMPORARY_TASK_SCOPE_ID,
|
|
60923
60923
|
kind: "temporary",
|
|
60924
|
-
rootPath: options.
|
|
60925
|
-
runtimeWorkspaceRoots: [options.
|
|
60924
|
+
rootPath: options.standaloneCwd,
|
|
60925
|
+
runtimeWorkspaceRoots: [options.standaloneCwd]
|
|
60926
60926
|
}
|
|
60927
60927
|
};
|
|
60928
60928
|
}
|
package/dist/cli.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { createCodexlyServer, SqliteStateRepository, normalizeAllowedHost } from './chunk-
|
|
3
|
+
import { createCodexlyServer, SqliteStateRepository, normalizeAllowedHost } from './chunk-NAHIDASP.js';
|
|
4
4
|
import './chunk-DEKHLAWT.js';
|
|
5
|
-
import { startCodexAppServer, locateCodexBinary, createCodexRuntimeProvider, createCodexWorkbenchPetProvider, CodexProjectRepository, checkCodexVersion } from './chunk-
|
|
5
|
+
import { startCodexAppServer, locateCodexBinary, createCodexRuntimeProvider, createCodexWorkbenchPetProvider, CodexProjectRepository, checkCodexVersion } from './chunk-CGZ44LHJ.js';
|
|
6
6
|
import './chunk-RNTA4MFS.js';
|
|
7
7
|
import './chunk-TEWPWZPG.js';
|
|
8
8
|
import './chunk-K6J42667.js';
|
|
9
|
-
import { mkdir, lstat, chmod, realpath } from 'fs/promises';
|
|
10
9
|
import { networkInterfaces, homedir } from 'os';
|
|
11
10
|
import { join, win32 } from 'path';
|
|
12
11
|
import { fileURLToPath } from 'url';
|
|
@@ -19,7 +18,7 @@ createRequire(import.meta.url);
|
|
|
19
18
|
|
|
20
19
|
// package.json
|
|
21
20
|
var package_default = {
|
|
22
|
-
version: "0.
|
|
21
|
+
version: "0.8.0"};
|
|
23
22
|
var PACKAGE_NAME = "@bryanhu/codexly";
|
|
24
23
|
var INITIAL_APP_VERSION = "0.1.0";
|
|
25
24
|
var CHANGELOG_URL_PREFIX = "https://raw.githubusercontent.com/BryanHoo/Codexly/v";
|
|
@@ -579,7 +578,6 @@ var defaultDependencies = {
|
|
|
579
578
|
listen: (options) => server.listen(options)
|
|
580
579
|
};
|
|
581
580
|
},
|
|
582
|
-
ensureTemporaryWorkspace,
|
|
583
581
|
generateLanPairingCode,
|
|
584
582
|
listLanAccessUrls,
|
|
585
583
|
locateCodexBinary,
|
|
@@ -590,18 +588,6 @@ var defaultDependencies = {
|
|
|
590
588
|
startCodexAppServer,
|
|
591
589
|
webRoot: fileURLToPath(new URL("../dist/web", import.meta.url))
|
|
592
590
|
};
|
|
593
|
-
async function ensureTemporaryWorkspace(path) {
|
|
594
|
-
await mkdir(path, { mode: 448, recursive: true });
|
|
595
|
-
const metadata = await lstat(path);
|
|
596
|
-
if (metadata.isSymbolicLink()) {
|
|
597
|
-
throw new Error("Temporary workspace must not be a symbolic link");
|
|
598
|
-
}
|
|
599
|
-
if (!metadata.isDirectory()) {
|
|
600
|
-
throw new Error("Temporary workspace path must be a directory");
|
|
601
|
-
}
|
|
602
|
-
await chmod(path, 448);
|
|
603
|
-
return realpath(path);
|
|
604
|
-
}
|
|
605
591
|
function assertSupportedNodeVersion(version) {
|
|
606
592
|
const [major = Number.NaN, minor = Number.NaN] = version.split(".").map(Number);
|
|
607
593
|
if (!(major > 22 || major === 22 && minor >= 14)) {
|
|
@@ -749,9 +735,6 @@ async function runStart(args, dependencies, signal, output) {
|
|
|
749
735
|
stateRepository = await dependencies.createStateRepository(
|
|
750
736
|
join(codexHome, "codexly", "state.sqlite3")
|
|
751
737
|
);
|
|
752
|
-
const temporaryWorkspace = await dependencies.ensureTemporaryWorkspace(
|
|
753
|
-
join(codexHome, "codexly", "temporary-workspace")
|
|
754
|
-
);
|
|
755
738
|
runtime = await dependencies.startCodexAppServer({
|
|
756
739
|
appVersion: dependencies.appVersion,
|
|
757
740
|
env,
|
|
@@ -791,7 +774,8 @@ async function runStart(args, dependencies, signal, output) {
|
|
|
791
774
|
queueRepository: stateRepository,
|
|
792
775
|
settingsRepository: stateRepository,
|
|
793
776
|
staticRoot: dependencies.webRoot,
|
|
794
|
-
|
|
777
|
+
// Standalone Thread 继承 app-server 的 cwd,不再创建伪项目目录。
|
|
778
|
+
standaloneCwd: process.cwd()
|
|
795
779
|
});
|
|
796
780
|
const host = options.lan === true ? "0.0.0.0" : "127.0.0.1";
|
|
797
781
|
const activePort = await listenOnAvailablePort(server, host, port);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
|
-
export { CodexAppServerExitedError, CodexAppServerProcess, CodexAppServerShutdownError, CodexAppServerSpawnError, CodexProjectRepository, CodexProtocolMappingError, CodexProviderConnectionError, CodexProviderConnectionService, CodexRuntimeProvider, CodexWorkbenchPetProvider, JsonlRpcClient, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError, SUPPORTED_CODEX_VERSION, checkCodexVersion, createCodexRuntimeProvider, createCodexWorkbenchPetProvider, locateCodexBinary, startCodexAppServer } from '../../chunk-
|
|
2
|
+
export { CodexAppServerExitedError, CodexAppServerProcess, CodexAppServerShutdownError, CodexAppServerSpawnError, CodexProjectRepository, CodexProtocolMappingError, CodexProviderConnectionError, CodexProviderConnectionService, CodexRuntimeProvider, CodexWorkbenchPetProvider, JsonlRpcClient, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError, SUPPORTED_CODEX_VERSION, checkCodexVersion, createCodexRuntimeProvider, createCodexWorkbenchPetProvider, locateCodexBinary, startCodexAppServer } from '../../chunk-CGZ44LHJ.js';
|
|
3
3
|
import '../../chunk-RNTA4MFS.js';
|
|
4
4
|
import '../../chunk-TEWPWZPG.js';
|
|
5
5
|
import '../../chunk-K6J42667.js';
|
package/dist/server/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
|
-
export { AccessSessionService, AgentEventStream, GitCommitError, GitCommitReviewError, SqliteStateRepository, commitSelectedProjectChanges, createCodexlyServer, normalizeAllowedHost, readProjectGitCommitFileDiff, readProjectGitCommitFiles } from '../chunk-
|
|
2
|
+
export { AccessSessionService, AgentEventStream, GitCommitError, GitCommitReviewError, SqliteStateRepository, commitSelectedProjectChanges, createCodexlyServer, normalizeAllowedHost, readProjectGitCommitFileDiff, readProjectGitCommitFiles } from '../chunk-NAHIDASP.js';
|
|
3
3
|
import '../chunk-DEKHLAWT.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-CGZ44LHJ.js';
|
|
5
5
|
import '../chunk-RNTA4MFS.js';
|
|
6
6
|
import '../chunk-TEWPWZPG.js';
|
|
7
7
|
import '../chunk-K6J42667.js';
|