@bryanhu/codexly 0.7.0 → 0.9.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 +24 -1
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/{chunk-NAHIDASP.js → chunk-7XFCPPAG.js} +37 -2
- package/dist/{chunk-CGZ44LHJ.js → chunk-HEWCIXCQ.js} +45 -12
- package/dist/cli.js +5 -4
- 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-bEY6272A.js → chunk-BO2N2NFS-C9-C2tVf.js} +4 -4
- package/dist/web/assets/chunk-BO2N2NFS-C9-C2tVf.js.br +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-C9-C2tVf.js.gz +0 -0
- package/dist/web/assets/{code-highlighter-Cm84nMIT.js → code-highlighter-Bc0RuXH6.js} +1 -1
- package/dist/web/assets/code-highlighter-Bc0RuXH6.js.br +0 -0
- package/dist/web/assets/code-highlighter-Bc0RuXH6.js.gz +0 -0
- package/dist/web/assets/{code-languages-D5Nrl7sO.js → code-languages-Dyc6uij-.js} +1 -1
- package/dist/web/assets/code-languages-Dyc6uij-.js.br +0 -0
- package/dist/web/assets/code-languages-Dyc6uij-.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-DO97in5h.js +2 -0
- package/dist/web/assets/file-review-dialog-DO97in5h.js.br +0 -0
- package/dist/web/assets/file-review-dialog-DO97in5h.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-CqKWTKwH.js +2 -0
- package/dist/web/assets/git-history-panel-CqKWTKwH.js.br +0 -0
- package/dist/web/assets/git-history-panel-CqKWTKwH.js.gz +0 -0
- package/dist/web/assets/global-settings-dialog-CcncTTuP.js +1 -0
- package/dist/web/assets/global-settings-dialog-CcncTTuP.js.br +0 -0
- package/dist/web/assets/global-settings-dialog-CcncTTuP.js.gz +0 -0
- package/dist/web/assets/{highlighted-body-OFNGDK62-oKnqW5V8.js → highlighted-body-OFNGDK62-D6sPM03A.js} +1 -1
- package/dist/web/assets/highlighted-body-OFNGDK62-D6sPM03A.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-D6sPM03A.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-C1A_OTjT.js → index-D07js1WI.js} +3 -3
- package/dist/web/assets/index-D07js1WI.js.br +0 -0
- package/dist/web/assets/index-D07js1WI.js.gz +0 -0
- package/dist/web/assets/{lazy-message-response-DNUwJy0d.js → lazy-message-response-BCtctszr.js} +2 -2
- package/dist/web/assets/lazy-message-response-BCtctszr.js.br +0 -0
- package/dist/web/assets/lazy-message-response-BCtctszr.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-DPTLsg8Y.js +1 -0
- package/dist/web/assets/mermaid-GHXKKRXX-DPTLsg8Y.js.br +1 -0
- package/dist/web/assets/mermaid-GHXKKRXX-DPTLsg8Y.js.gz +0 -0
- package/dist/web/assets/{message-response-DVL8_J3z.js → message-response-Bx5gf4FU.js} +1 -1
- package/dist/web/assets/message-response-Bx5gf4FU.js.br +0 -0
- package/dist/web/assets/message-response-Bx5gf4FU.js.gz +0 -0
- package/dist/web/assets/{patch-diff-viewer-BgNx-ffs.js → patch-diff-viewer-DGu83IBP.js} +2 -2
- package/dist/web/assets/patch-diff-viewer-DGu83IBP.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-DGu83IBP.js.gz +0 -0
- package/dist/web/assets/{project-file-popup-page-BwPTSc8o.js → project-file-popup-page-CVtCt_XU.js} +1 -1
- package/dist/web/assets/project-file-popup-page-CVtCt_XU.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-CVtCt_XU.js.gz +0 -0
- package/dist/web/assets/{project-source-panel-DWDcX3T9.js → project-source-panel-BEBbL2Id.js} +3 -3
- package/dist/web/assets/project-source-panel-BEBbL2Id.js.br +0 -0
- package/dist/web/assets/project-source-panel-BEBbL2Id.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-Dhkx9AYM.js → shiki-bundle-4bLwaf7_.js} +1 -1
- package/dist/web/assets/shiki-bundle-4bLwaf7_.js.br +0 -0
- package/dist/web/assets/shiki-bundle-4bLwaf7_.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-BLY-8Tfn.js +2 -0
- package/dist/web/assets/workbench-inspector-changes-BLY-8Tfn.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-BLY-8Tfn.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-DVC3DE5a.js → workbench-shell-DSfvZh4Q.js} +8 -8
- package/dist/web/assets/workbench-shell-DSfvZh4Q.js.br +0 -0
- package/dist/web/assets/workbench-shell-DSfvZh4Q.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-bEY6272A.js.br +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-bEY6272A.js.gz +0 -0
- package/dist/web/assets/code-highlighter-Cm84nMIT.js.br +0 -0
- package/dist/web/assets/code-highlighter-Cm84nMIT.js.gz +0 -0
- package/dist/web/assets/code-languages-D5Nrl7sO.js.br +0 -0
- package/dist/web/assets/code-languages-D5Nrl7sO.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-DVVtiNEL.js +0 -2
- package/dist/web/assets/file-review-dialog-DVVtiNEL.js.br +0 -0
- package/dist/web/assets/file-review-dialog-DVVtiNEL.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-4j8odsDb.js +0 -2
- package/dist/web/assets/git-history-panel-4j8odsDb.js.br +0 -0
- package/dist/web/assets/git-history-panel-4j8odsDb.js.gz +0 -0
- package/dist/web/assets/global-settings-dialog-Dhqfe3qK.js +0 -1
- package/dist/web/assets/global-settings-dialog-Dhqfe3qK.js.br +0 -0
- package/dist/web/assets/global-settings-dialog-Dhqfe3qK.js.gz +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-oKnqW5V8.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-oKnqW5V8.js.gz +0 -0
- package/dist/web/assets/index-C1A_OTjT.js.br +0 -0
- package/dist/web/assets/index-C1A_OTjT.js.gz +0 -0
- package/dist/web/assets/index-lKikkWES.css +0 -2
- package/dist/web/assets/index-lKikkWES.css.br +0 -0
- package/dist/web/assets/index-lKikkWES.css.gz +0 -0
- package/dist/web/assets/lazy-message-response-DNUwJy0d.js.br +0 -0
- package/dist/web/assets/lazy-message-response-DNUwJy0d.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-8A2qFznr.js +0 -1
- package/dist/web/assets/mermaid-GHXKKRXX-8A2qFznr.js.br +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-8A2qFznr.js.gz +0 -0
- package/dist/web/assets/message-response-DVL8_J3z.js.br +0 -0
- package/dist/web/assets/message-response-DVL8_J3z.js.gz +0 -0
- package/dist/web/assets/patch-diff-viewer-BgNx-ffs.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-BgNx-ffs.js.gz +0 -0
- package/dist/web/assets/project-file-popup-page-BwPTSc8o.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-BwPTSc8o.js.gz +0 -0
- package/dist/web/assets/project-source-panel-DWDcX3T9.js.br +0 -0
- package/dist/web/assets/project-source-panel-DWDcX3T9.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-Dhkx9AYM.js.br +0 -0
- package/dist/web/assets/shiki-bundle-Dhkx9AYM.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-CWIx9Os6.js +0 -2
- package/dist/web/assets/workbench-inspector-changes-CWIx9Os6.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-CWIx9Os6.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-DVC3DE5a.js.br +0 -0
- package/dist/web/assets/workbench-shell-DVC3DE5a.js.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.9.0] - 2026-08-28
|
|
8
|
+
|
|
9
|
+
### 新增
|
|
10
|
+
|
|
11
|
+
- 支持使用 PNG 或 WebP 自定义宠物精灵图,并兼容 `spriteVersionNumber: 2` 的 8×11 帧网格清单。
|
|
12
|
+
|
|
13
|
+
### 修复
|
|
14
|
+
|
|
15
|
+
- 修复 SQLite Worker 操作超时后 Repository 永久关闭的问题,终止状态未知的 Worker 并为后续请求自动重建连接。
|
|
16
|
+
- 修复检查更新后 registry 版本继续推进时旧页面无法安装更新的问题,重新校验并安装当前最新版本。
|
|
17
|
+
|
|
18
|
+
## [0.8.0] - 2026-08-27
|
|
19
|
+
|
|
20
|
+
### 新增
|
|
21
|
+
|
|
22
|
+
- 添加自定义工作台背景图片集合,支持批量添加、缩略图选择和单独删除,并将背景配置移至独立设置分类。
|
|
23
|
+
|
|
24
|
+
### 修复
|
|
25
|
+
|
|
26
|
+
- 修复已水合任务在后台 Snapshot 重验证期间错误显示挂起状态的问题,使现有内容保持可用。
|
|
27
|
+
|
|
7
28
|
## [0.7.0] - 2026-08-27
|
|
8
29
|
|
|
9
30
|
### 新增
|
|
@@ -137,7 +158,9 @@
|
|
|
137
158
|
- 拆分全栈测试套件并限制 Vitest 并发,提升跨平台门禁稳定性;GitHub Release 改为严格提取对应版本的完整更新日志。
|
|
138
159
|
- 将最低 Node.js 版本调整为 `22.14.0`,同步 CLI、CI、发布环境和使用文档。
|
|
139
160
|
|
|
140
|
-
[Unreleased]: https://github.com/BryanHoo/Codexly/compare/v0.
|
|
161
|
+
[Unreleased]: https://github.com/BryanHoo/Codexly/compare/v0.9.0...HEAD
|
|
162
|
+
[0.9.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.9.0
|
|
163
|
+
[0.8.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.8.0
|
|
141
164
|
[0.7.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.7.0
|
|
142
165
|
[0.6.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.6.0
|
|
143
166
|
[0.5.0]: https://github.com/BryanHoo/Codexly/releases/tag/v0.5.0
|
package/README.md
CHANGED
|
@@ -43,8 +43,8 @@
|
|
|
43
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 with separate activity bubbles
|
|
47
|
-
-
|
|
46
|
+
- Add animated workspace pets with separate task activity bubbles and custom PNG or WebP sprite manifests
|
|
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
|
@@ -13,8 +13,8 @@ Codexly 是一个在浏览器中使用 Codex 的本地 AI 编程工作台。它
|
|
|
13
13
|
- 组织有序的多根项目、归档项目或临时任务,并按需永久删除任务
|
|
14
14
|
- 查看、预览、重命名和删除项目文件,审查差异,管理分支与 worktree,并提交或推送变更
|
|
15
15
|
- 从 AI 回复处分叉任务,在新的 Git worktree 中继续工作
|
|
16
|
-
-
|
|
17
|
-
-
|
|
16
|
+
- 添加工作台宠物动画,用独立气泡区分任务活动,并支持自定义 PNG 或 WebP 精灵图清单
|
|
17
|
+
- 管理自定义工作台背景图片集合,或使用 Bing 每日壁纸,并自动适配前景色、浮层遮罩与背景模糊
|
|
18
18
|
- 从可信局域网中的其他设备访问工作台
|
|
19
19
|
|
|
20
20
|
## 环境要求
|
|
@@ -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-HEWCIXCQ.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';
|
|
@@ -61764,19 +61764,25 @@ function parseQueueWorkerRecord(record) {
|
|
|
61764
61764
|
}
|
|
61765
61765
|
var DEFAULT_SQLITE_REQUEST_TIMEOUT_MS = 1e4;
|
|
61766
61766
|
var SqliteStateRepository = class _SqliteStateRepository {
|
|
61767
|
+
#databasePath;
|
|
61767
61768
|
#now;
|
|
61769
|
+
#options;
|
|
61768
61770
|
#pending = /* @__PURE__ */ new Map();
|
|
61769
61771
|
#ready;
|
|
61770
61772
|
#requestTimeoutMs;
|
|
61771
61773
|
#worker;
|
|
61772
61774
|
#workerExit;
|
|
61773
61775
|
#closed = false;
|
|
61776
|
+
#closing = false;
|
|
61774
61777
|
#nextRequestId = 1;
|
|
61778
|
+
#replacement;
|
|
61775
61779
|
#workerExited = false;
|
|
61776
61780
|
constructor(databasePath, options) {
|
|
61777
61781
|
if (!isAbsolute(databasePath)) {
|
|
61778
61782
|
throw new Error("SQLite database path must be absolute");
|
|
61779
61783
|
}
|
|
61784
|
+
this.#databasePath = databasePath;
|
|
61785
|
+
this.#options = options;
|
|
61780
61786
|
this.#requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_SQLITE_REQUEST_TIMEOUT_MS;
|
|
61781
61787
|
if (!Number.isFinite(this.#requestTimeoutMs) || this.#requestTimeoutMs <= 0) {
|
|
61782
61788
|
throw new RangeError("SQLite request timeout must be a positive number");
|
|
@@ -61873,6 +61879,15 @@ var SqliteStateRepository = class _SqliteStateRepository {
|
|
|
61873
61879
|
}
|
|
61874
61880
|
}
|
|
61875
61881
|
async close() {
|
|
61882
|
+
if (this.#closing) {
|
|
61883
|
+
return;
|
|
61884
|
+
}
|
|
61885
|
+
this.#closing = true;
|
|
61886
|
+
if (this.#replacement !== void 0) {
|
|
61887
|
+
const replacement = await this.#replacement;
|
|
61888
|
+
await replacement.close();
|
|
61889
|
+
return;
|
|
61890
|
+
}
|
|
61876
61891
|
if (this.#closed) {
|
|
61877
61892
|
return;
|
|
61878
61893
|
}
|
|
@@ -61996,6 +62011,13 @@ var SqliteStateRepository = class _SqliteStateRepository {
|
|
|
61996
62011
|
});
|
|
61997
62012
|
}
|
|
61998
62013
|
async #call(operation, payload, allowClosed = false) {
|
|
62014
|
+
if (this.#closing && !allowClosed) {
|
|
62015
|
+
throw new Error("SQLite repository is closed");
|
|
62016
|
+
}
|
|
62017
|
+
if (this.#replacement !== void 0) {
|
|
62018
|
+
const replacement = await this.#replacement;
|
|
62019
|
+
return replacement.#call(operation, payload, allowClosed);
|
|
62020
|
+
}
|
|
61999
62021
|
await this.#ready;
|
|
62000
62022
|
if (this.#closed && !allowClosed) {
|
|
62001
62023
|
throw new Error("SQLite repository is closed");
|
|
@@ -62010,8 +62032,15 @@ var SqliteStateRepository = class _SqliteStateRepository {
|
|
|
62010
62032
|
`SQLite worker operation ${operation} timed out after ${String(this.#requestTimeoutMs)}ms`
|
|
62011
62033
|
);
|
|
62012
62034
|
this.#closed = true;
|
|
62035
|
+
if (!this.#closing) {
|
|
62036
|
+
const replacement = this.#replaceWorker();
|
|
62037
|
+
this.#replacement = replacement;
|
|
62038
|
+
void replacement.catch(() => void 0);
|
|
62039
|
+
}
|
|
62013
62040
|
this.#rejectPending(error);
|
|
62014
|
-
|
|
62041
|
+
if (this.#replacement === void 0) {
|
|
62042
|
+
void this.#worker.terminate();
|
|
62043
|
+
}
|
|
62015
62044
|
}, this.#requestTimeoutMs);
|
|
62016
62045
|
this.#pending.set(id, {
|
|
62017
62046
|
reject: rejectRequest,
|
|
@@ -62036,6 +62065,12 @@ var SqliteStateRepository = class _SqliteStateRepository {
|
|
|
62036
62065
|
}
|
|
62037
62066
|
this.#pending.clear();
|
|
62038
62067
|
}
|
|
62068
|
+
async #replaceWorker() {
|
|
62069
|
+
if (!this.#workerExited) {
|
|
62070
|
+
await this.#worker.terminate();
|
|
62071
|
+
}
|
|
62072
|
+
return _SqliteStateRepository.open(this.#databasePath, this.#options);
|
|
62073
|
+
}
|
|
62039
62074
|
async #waitForWorkerExit() {
|
|
62040
62075
|
let timeout;
|
|
62041
62076
|
try {
|
|
@@ -13153,12 +13153,26 @@ function imageDimensionsFromData(bytes) {
|
|
|
13153
13153
|
}
|
|
13154
13154
|
|
|
13155
13155
|
// packages/provider-codex/src/workbench-pet-image.ts
|
|
13156
|
-
function
|
|
13156
|
+
function readPetImageMetadata(data) {
|
|
13157
13157
|
const dimensions = imageDimensionsFromData(data);
|
|
13158
|
-
if (dimensions?.type !== "webp") {
|
|
13158
|
+
if (dimensions?.type !== "png" && dimensions?.type !== "webp") {
|
|
13159
|
+
throw new Error("Pet spritesheet must be a valid PNG or WebP image");
|
|
13160
|
+
}
|
|
13161
|
+
return {
|
|
13162
|
+
contentType: dimensions.type === "png" ? "image/png" : "image/webp",
|
|
13163
|
+
height: dimensions.height,
|
|
13164
|
+
width: dimensions.width
|
|
13165
|
+
};
|
|
13166
|
+
}
|
|
13167
|
+
async function readPetImageMetadataFromFile(path) {
|
|
13168
|
+
return readPetImageMetadata(await readFile(path));
|
|
13169
|
+
}
|
|
13170
|
+
function readWebpDimensions(data) {
|
|
13171
|
+
const metadata = readPetImageMetadata(data);
|
|
13172
|
+
if (metadata.contentType !== "image/webp") {
|
|
13159
13173
|
throw new Error("Pet spritesheet must be a valid WebP image");
|
|
13160
13174
|
}
|
|
13161
|
-
return
|
|
13175
|
+
return metadata;
|
|
13162
13176
|
}
|
|
13163
13177
|
async function readWebpDimensionsFromFile(path) {
|
|
13164
13178
|
return readWebpDimensions(await readFile(path));
|
|
@@ -13167,6 +13181,7 @@ var MAX_MANIFEST_BYTES = 64 * 1024;
|
|
|
13167
13181
|
var MAX_CUSTOM_ASSET_BYTES = 16 * 1024 * 1024;
|
|
13168
13182
|
var MAX_FRAMES = 256;
|
|
13169
13183
|
var MAX_FPS = 60;
|
|
13184
|
+
var PET_V2_ROWS = 11;
|
|
13170
13185
|
async function loadCustomPet(input) {
|
|
13171
13186
|
const baseDirectory = await realpath(input.directory);
|
|
13172
13187
|
const manifestPath = resolve(baseDirectory, input.manifestName);
|
|
@@ -13186,14 +13201,16 @@ async function loadCustomPet(input) {
|
|
|
13186
13201
|
if (!assetStats.isFile() || assetStats.size > MAX_CUSTOM_ASSET_BYTES) {
|
|
13187
13202
|
throw new Error("Pet spritesheet is missing or too large");
|
|
13188
13203
|
}
|
|
13189
|
-
const
|
|
13190
|
-
const
|
|
13191
|
-
const
|
|
13204
|
+
const image = await readPetImageMetadataFromFile(path);
|
|
13205
|
+
const spriteVersion = parseSpriteVersion(manifest["spriteVersionNumber"]);
|
|
13206
|
+
const frame = parseFrame(manifest["frame"], spriteVersion);
|
|
13207
|
+
const frameCount = validateFrame(frame, image.width, image.height);
|
|
13192
13208
|
const animations = parseAnimations(manifest["animations"], frameCount);
|
|
13193
13209
|
const manifestId = readOptionalString(manifest, "id");
|
|
13194
13210
|
return {
|
|
13195
13211
|
assetId: input.assetId,
|
|
13196
13212
|
baseDirectory,
|
|
13213
|
+
contentType: image.contentType,
|
|
13197
13214
|
descriptor: {
|
|
13198
13215
|
animations,
|
|
13199
13216
|
assetId: input.assetId,
|
|
@@ -13217,12 +13234,17 @@ async function validatePetAsset(record) {
|
|
|
13217
13234
|
if (!assetStats.isFile() || assetStats.size > MAX_CUSTOM_ASSET_BYTES) {
|
|
13218
13235
|
throw new Error("Pet spritesheet is unavailable");
|
|
13219
13236
|
}
|
|
13220
|
-
const
|
|
13221
|
-
|
|
13237
|
+
const image = await readPetImageMetadataFromFile(resolved);
|
|
13238
|
+
if (image.contentType !== record.contentType) {
|
|
13239
|
+
throw new Error("Pet spritesheet format changed after discovery");
|
|
13240
|
+
}
|
|
13241
|
+
validateFrame(record.descriptor.frame, image.width, image.height);
|
|
13222
13242
|
return { mtimeMs: assetStats.mtimeMs, size: assetStats.size };
|
|
13223
13243
|
}
|
|
13224
|
-
function parseFrame(value) {
|
|
13225
|
-
if (value === void 0 || value === null)
|
|
13244
|
+
function parseFrame(value, spriteVersion) {
|
|
13245
|
+
if (value === void 0 || value === null) {
|
|
13246
|
+
return spriteVersion === 2 ? { ...PET_FRAME, rows: PET_V2_ROWS } : PET_FRAME;
|
|
13247
|
+
}
|
|
13226
13248
|
const frame = parseRecord(value, "Pet frame");
|
|
13227
13249
|
return {
|
|
13228
13250
|
columns: readPositiveInteger(frame, "columns"),
|
|
@@ -13231,6 +13253,11 @@ function parseFrame(value) {
|
|
|
13231
13253
|
width: readPositiveInteger(frame, "width")
|
|
13232
13254
|
};
|
|
13233
13255
|
}
|
|
13256
|
+
function parseSpriteVersion(value) {
|
|
13257
|
+
if (value === void 0 || value === null || value === 1) return 1;
|
|
13258
|
+
if (value === 2) return 2;
|
|
13259
|
+
throw new Error("Pet spriteVersionNumber must be 1 or 2");
|
|
13260
|
+
}
|
|
13234
13261
|
function validateFrame(frame, width, height) {
|
|
13235
13262
|
if (width === void 0 || height === void 0 || frame.width * frame.columns !== width || frame.height * frame.rows !== height) {
|
|
13236
13263
|
throw new Error("Pet frame grid must cover the spritesheet exactly");
|
|
@@ -13365,7 +13392,7 @@ var CodexWorkbenchPetProvider = class {
|
|
|
13365
13392
|
const content = await readFile(record.path);
|
|
13366
13393
|
return {
|
|
13367
13394
|
content,
|
|
13368
|
-
contentType:
|
|
13395
|
+
contentType: record.contentType,
|
|
13369
13396
|
etag: `W/"${String(metadata.size)}-${String(Math.trunc(metadata.mtimeMs))}"`,
|
|
13370
13397
|
size: metadata.size
|
|
13371
13398
|
};
|
|
@@ -13384,7 +13411,13 @@ var CodexWorkbenchPetProvider = class {
|
|
|
13384
13411
|
} catch {
|
|
13385
13412
|
}
|
|
13386
13413
|
const descriptor = createBuiltinDescriptor(pet, assetId, availability);
|
|
13387
|
-
this.#assetRecords.set(assetId, {
|
|
13414
|
+
this.#assetRecords.set(assetId, {
|
|
13415
|
+
assetId,
|
|
13416
|
+
baseDirectory,
|
|
13417
|
+
contentType: "image/webp",
|
|
13418
|
+
descriptor,
|
|
13419
|
+
path
|
|
13420
|
+
});
|
|
13388
13421
|
return descriptor;
|
|
13389
13422
|
}
|
|
13390
13423
|
async #ensureBuiltin(pet) {
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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-7XFCPPAG.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-HEWCIXCQ.js';
|
|
6
6
|
import './chunk-RNTA4MFS.js';
|
|
7
7
|
import './chunk-TEWPWZPG.js';
|
|
8
8
|
import './chunk-K6J42667.js';
|
|
@@ -18,7 +18,7 @@ createRequire(import.meta.url);
|
|
|
18
18
|
|
|
19
19
|
// package.json
|
|
20
20
|
var package_default = {
|
|
21
|
-
version: "0.
|
|
21
|
+
version: "0.9.0"};
|
|
22
22
|
var PACKAGE_NAME = "@bryanhu/codexly";
|
|
23
23
|
var INITIAL_APP_VERSION = "0.1.0";
|
|
24
24
|
var CHANGELOG_URL_PREFIX = "https://raw.githubusercontent.com/BryanHoo/Codexly/v";
|
|
@@ -174,7 +174,8 @@ function createAppUpdateService(options) {
|
|
|
174
174
|
return {
|
|
175
175
|
async install(version) {
|
|
176
176
|
const latestVersion = await readLatest();
|
|
177
|
-
|
|
177
|
+
const requestedVersionIsAvailable = isNewerVersion(version, options.appVersion) && !isNewerVersion(version, latestVersion);
|
|
178
|
+
if (!requestedVersionIsAvailable || !isNewerVersion(latestVersion, options.appVersion)) {
|
|
178
179
|
throw new AppUpdateError("UPDATE_NOT_AVAILABLE", "The requested update is not available");
|
|
179
180
|
}
|
|
180
181
|
try {
|
|
@@ -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-HEWCIXCQ.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-7XFCPPAG.js';
|
|
3
3
|
import '../chunk-DEKHLAWT.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-HEWCIXCQ.js';
|
|
5
5
|
import '../chunk-RNTA4MFS.js';
|
|
6
6
|
import '../chunk-TEWPWZPG.js';
|
|
7
7
|
import '../chunk-K6J42667.js';
|