@bryanhu/codexly 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/CHANGELOG.md +356 -4
  2. package/README.md +3 -3
  3. package/README.zh-CN.md +3 -3
  4. package/dist/{chunk-YEWVIPEB.js → chunk-5NDBX6YW.js} +636 -376
  5. package/dist/{chunk-T3TXYERG.js → chunk-IQDWF7SH.js} +267 -105
  6. package/dist/{chunk-W6U4V35J.js → chunk-XAI75BER.js} +28 -1
  7. package/dist/{chunk-MWNYYQDP.js → chunk-XUFOQLNM.js} +1 -1
  8. package/dist/cli.js +5 -5
  9. package/dist/client/index.js +13 -2
  10. package/dist/protocol/index.js +1 -1
  11. package/dist/providers/codex/index.js +2 -2
  12. package/dist/server/index.js +4 -4
  13. package/dist/web/.vite/manifest.json +157 -156
  14. package/dist/web/.vite/manifest.json.br +0 -0
  15. package/dist/web/.vite/manifest.json.gz +0 -0
  16. package/dist/web/assets/{abnfDiagram-N423BO3Z-B5zsWXWU.js → abnfDiagram-N423BO3Z-BjOk39fK.js} +1 -1
  17. package/dist/web/assets/abnfDiagram-N423BO3Z-BjOk39fK.js.br +0 -0
  18. package/dist/web/assets/abnfDiagram-N423BO3Z-BjOk39fK.js.gz +0 -0
  19. package/dist/web/assets/agent-settings-panel-CD856VbZ.js +1 -0
  20. package/dist/web/assets/agent-settings-panel-CD856VbZ.js.br +0 -0
  21. package/dist/web/assets/agent-settings-panel-CD856VbZ.js.gz +0 -0
  22. package/dist/web/assets/{architectureDiagram-T3A2C74G-VAJJokz3.js → architectureDiagram-T3A2C74G-CszOrw8P.js} +1 -1
  23. package/dist/web/assets/architectureDiagram-T3A2C74G-CszOrw8P.js.br +0 -0
  24. package/dist/web/assets/architectureDiagram-T3A2C74G-CszOrw8P.js.gz +0 -0
  25. package/dist/web/assets/{attachments-CuciRoPj.js → attachments-hHYcCn48.js} +1 -1
  26. package/dist/web/assets/attachments-hHYcCn48.js.br +0 -0
  27. package/dist/web/assets/attachments-hHYcCn48.js.gz +0 -0
  28. package/dist/web/assets/{background-image-picker-D4S9VbWK.js → background-image-picker-g1MOp3xh.js} +1 -1
  29. package/dist/web/assets/background-image-picker-g1MOp3xh.js.br +0 -0
  30. package/dist/web/assets/background-image-picker-g1MOp3xh.js.gz +0 -0
  31. package/dist/web/assets/{chunk-5RXB4S5H-fk5DV184.js → chunk-5RXB4S5H-CzjZ3jYa.js} +1 -1
  32. package/dist/web/assets/chunk-5RXB4S5H-CzjZ3jYa.js.br +0 -0
  33. package/dist/web/assets/chunk-5RXB4S5H-CzjZ3jYa.js.gz +0 -0
  34. package/dist/web/assets/{chunk-6Q2QTUOP-BOd4EM_k.js → chunk-6Q2QTUOP-4wecdxpy.js} +1 -1
  35. package/dist/web/assets/chunk-6Q2QTUOP-4wecdxpy.js.br +0 -0
  36. package/dist/web/assets/chunk-6Q2QTUOP-4wecdxpy.js.gz +0 -0
  37. package/dist/web/assets/{chunk-GF5L2VYU-4S3VMyhe.js → chunk-GF5L2VYU-BME1MVPj.js} +1 -1
  38. package/dist/web/assets/chunk-GF5L2VYU-BME1MVPj.js.br +0 -0
  39. package/dist/web/assets/chunk-GF5L2VYU-BME1MVPj.js.gz +0 -0
  40. package/dist/web/assets/{chunk-JQJVKLGR-BwAdww_a.js → chunk-JQJVKLGR-BNnsgjF4.js} +1 -1
  41. package/dist/web/assets/chunk-JQJVKLGR-BNnsgjF4.js.br +0 -0
  42. package/dist/web/assets/chunk-JQJVKLGR-BNnsgjF4.js.gz +0 -0
  43. package/dist/web/assets/{classDiagram-JCYQIIEL-CWvbxTV4.js → classDiagram-JCYQIIEL-DfsU-iz3.js} +1 -1
  44. package/dist/web/assets/classDiagram-JCYQIIEL-DfsU-iz3.js.br +0 -0
  45. package/dist/web/assets/classDiagram-JCYQIIEL-DfsU-iz3.js.gz +0 -0
  46. package/dist/web/assets/{classDiagram-v2-OCEON4UE-CWvbxTV4.js → classDiagram-v2-OCEON4UE-DfsU-iz3.js} +1 -1
  47. package/dist/web/assets/classDiagram-v2-OCEON4UE-DfsU-iz3.js.br +0 -0
  48. package/dist/web/assets/classDiagram-v2-OCEON4UE-DfsU-iz3.js.gz +0 -0
  49. package/dist/web/assets/{code-highlighter-BjWXy_Iw.js → code-highlighter-0eqb-Lkx.js} +1 -1
  50. package/dist/web/assets/code-highlighter-0eqb-Lkx.js.br +0 -0
  51. package/dist/web/assets/code-highlighter-0eqb-Lkx.js.gz +0 -0
  52. package/dist/web/assets/{commit-settings-panel-a9GtBcyN.js → commit-settings-panel-BVWa135n.js} +1 -1
  53. package/dist/web/assets/commit-settings-panel-BVWa135n.js.br +0 -0
  54. package/dist/web/assets/commit-settings-panel-BVWa135n.js.gz +0 -0
  55. package/dist/web/assets/{cynefinDiagram-MW4NZA55-Ds3L2HYC.js → cynefinDiagram-MW4NZA55-frpmFdyz.js} +1 -1
  56. package/dist/web/assets/cynefinDiagram-MW4NZA55-frpmFdyz.js.br +0 -0
  57. package/dist/web/assets/cynefinDiagram-MW4NZA55-frpmFdyz.js.gz +0 -0
  58. package/dist/web/assets/{diagram-7IWD3JNH-oAuqSBBd.js → diagram-7IWD3JNH-FttE2mF9.js} +1 -1
  59. package/dist/web/assets/diagram-7IWD3JNH-FttE2mF9.js.br +0 -0
  60. package/dist/web/assets/diagram-7IWD3JNH-FttE2mF9.js.gz +0 -0
  61. package/dist/web/assets/{diagram-LBJQPF4R-BTr0W5cj.js → diagram-LBJQPF4R-DWNj_QF3.js} +1 -1
  62. package/dist/web/assets/diagram-LBJQPF4R-DWNj_QF3.js.br +0 -0
  63. package/dist/web/assets/diagram-LBJQPF4R-DWNj_QF3.js.gz +0 -0
  64. package/dist/web/assets/{diagram-Q27KOJAE-Xmz7kPoV.js → diagram-Q27KOJAE-YijAHa46.js} +1 -1
  65. package/dist/web/assets/diagram-Q27KOJAE-YijAHa46.js.br +0 -0
  66. package/dist/web/assets/diagram-Q27KOJAE-YijAHa46.js.gz +0 -0
  67. package/dist/web/assets/{diagram-UB23O5K3-Ccoz8RvZ.js → diagram-UB23O5K3-BOM6whDm.js} +1 -1
  68. package/dist/web/assets/diagram-UB23O5K3-BOM6whDm.js.br +0 -0
  69. package/dist/web/assets/diagram-UB23O5K3-BOM6whDm.js.gz +0 -0
  70. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-XLCtKL91.js → ebnfDiagram-BXEA7PRR-DsJVty4x.js} +1 -1
  71. package/dist/web/assets/ebnfDiagram-BXEA7PRR-DsJVty4x.js.br +0 -0
  72. package/dist/web/assets/ebnfDiagram-BXEA7PRR-DsJVty4x.js.gz +0 -0
  73. package/dist/web/assets/{erDiagram-JOGREHBK-S2CHNYGV.js → erDiagram-JOGREHBK-CDedc87q.js} +1 -1
  74. package/dist/web/assets/erDiagram-JOGREHBK-CDedc87q.js.br +0 -0
  75. package/dist/web/assets/erDiagram-JOGREHBK-CDedc87q.js.gz +0 -0
  76. package/dist/web/assets/{file-review-dialog-F6jB7Qb_.js → file-review-dialog-ZlSRByDh.js} +2 -2
  77. package/dist/web/assets/file-review-dialog-ZlSRByDh.js.br +0 -0
  78. package/dist/web/assets/file-review-dialog-ZlSRByDh.js.gz +0 -0
  79. package/dist/web/assets/{flowDiagram-UKHOOZJN-DZbuh7hy.js → flowDiagram-UKHOOZJN-CoVA1HXU.js} +1 -1
  80. package/dist/web/assets/flowDiagram-UKHOOZJN-CoVA1HXU.js.br +0 -0
  81. package/dist/web/assets/flowDiagram-UKHOOZJN-CoVA1HXU.js.gz +0 -0
  82. package/dist/web/assets/{git-commit-review-BT1DisdC.js → git-commit-review-DdmNEtaT.js} +2 -2
  83. package/dist/web/assets/git-commit-review-DdmNEtaT.js.br +0 -0
  84. package/dist/web/assets/git-commit-review-DdmNEtaT.js.gz +0 -0
  85. package/dist/web/assets/{git-history-panel-D4wJqH0T.js → git-history-panel-BJmnH2Dh.js} +1 -1
  86. package/dist/web/assets/git-history-panel-BJmnH2Dh.js.br +0 -0
  87. package/dist/web/assets/git-history-panel-BJmnH2Dh.js.gz +0 -0
  88. package/dist/web/assets/{global-search-dialog-B7WhRB5J.js → global-search-dialog-PYK9IIEa.js} +1 -1
  89. package/dist/web/assets/global-search-dialog-PYK9IIEa.js.br +0 -0
  90. package/dist/web/assets/global-search-dialog-PYK9IIEa.js.gz +0 -0
  91. package/dist/web/assets/{global-settings-about-DF9t5LPK.js → global-settings-about-BFGYjZyv.js} +1 -1
  92. package/dist/web/assets/global-settings-about-BFGYjZyv.js.br +0 -0
  93. package/dist/web/assets/global-settings-about-BFGYjZyv.js.gz +0 -0
  94. package/dist/web/assets/global-settings-page-CrhhVjyg.js +2 -0
  95. package/dist/web/assets/global-settings-page-CrhhVjyg.js.br +0 -0
  96. package/dist/web/assets/global-settings-page-CrhhVjyg.js.gz +0 -0
  97. package/dist/web/assets/{global-settings-pets-D8Grr4dJ.js → global-settings-pets-BjntH3Nh.js} +1 -1
  98. package/dist/web/assets/global-settings-pets-BjntH3Nh.js.br +0 -0
  99. package/dist/web/assets/global-settings-pets-BjntH3Nh.js.gz +0 -0
  100. package/dist/web/assets/{highlighted-body-OFNGDK62-T0waXgH6.js → highlighted-body-OFNGDK62-FjBSs__o.js} +1 -1
  101. package/dist/web/assets/highlighted-body-OFNGDK62-FjBSs__o.js.br +0 -0
  102. package/dist/web/assets/highlighted-body-OFNGDK62-FjBSs__o.js.gz +0 -0
  103. package/dist/web/assets/{history-task-timeline-BLiCPMY2.js → history-task-timeline-DHtwHEWB.js} +1 -1
  104. package/dist/web/assets/history-task-timeline-DHtwHEWB.js.br +0 -0
  105. package/dist/web/assets/history-task-timeline-DHtwHEWB.js.gz +0 -0
  106. package/dist/web/assets/{image-preview-DHojYYCu.js → image-preview-CxAsQ_9O.js} +2 -2
  107. package/dist/web/assets/image-preview-CxAsQ_9O.js.br +0 -0
  108. package/dist/web/assets/image-preview-CxAsQ_9O.js.gz +0 -0
  109. package/dist/web/assets/{image-preview-content-bIMPrgXt.js → image-preview-content-BxJgppkC.js} +1 -1
  110. package/dist/web/assets/image-preview-content-BxJgppkC.js.br +0 -0
  111. package/dist/web/assets/image-preview-content-BxJgppkC.js.gz +0 -0
  112. package/dist/web/assets/index-CV1MnZmV.css +2 -0
  113. package/dist/web/assets/index-CV1MnZmV.css.br +0 -0
  114. package/dist/web/assets/index-CV1MnZmV.css.gz +0 -0
  115. package/dist/web/assets/{index-ySw7zE7v.js → index-CYyqBE6B.js} +3 -3
  116. package/dist/web/assets/index-CYyqBE6B.js.br +0 -0
  117. package/dist/web/assets/index-CYyqBE6B.js.gz +0 -0
  118. package/dist/web/assets/{infoDiagram-6WML65LV-8JSDIKEQ.js → infoDiagram-6WML65LV-DSZvXJp0.js} +1 -1
  119. package/dist/web/assets/infoDiagram-6WML65LV-DSZvXJp0.js.br +0 -0
  120. package/dist/web/assets/infoDiagram-6WML65LV-DSZvXJp0.js.gz +0 -0
  121. package/dist/web/assets/initial-deps-CP3yrzZ7.js +1 -0
  122. package/dist/web/assets/initial-deps-CP3yrzZ7.js.br +0 -0
  123. package/dist/web/assets/initial-deps-CP3yrzZ7.js.gz +0 -0
  124. package/dist/web/assets/{installed-skills-pane-Bnwd2-z8.js → installed-skills-pane-DAmIV2Rn.js} +1 -1
  125. package/dist/web/assets/installed-skills-pane-DAmIV2Rn.js.br +0 -0
  126. package/dist/web/assets/installed-skills-pane-DAmIV2Rn.js.gz +0 -0
  127. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-BBsZ0aSy.js → ishikawaDiagram-WSZJBQD7-DVUvT7ny.js} +1 -1
  128. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-DVUvT7ny.js.br +0 -0
  129. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-DVUvT7ny.js.gz +0 -0
  130. package/dist/web/assets/{kanban-definition-27J2QSJJ-DUC5stHg.js → kanban-definition-27J2QSJJ-C0G0BsDc.js} +1 -1
  131. package/dist/web/assets/kanban-definition-27J2QSJJ-C0G0BsDc.js.br +0 -0
  132. package/dist/web/assets/kanban-definition-27J2QSJJ-C0G0BsDc.js.gz +0 -0
  133. package/dist/web/assets/{lazy-message-response-CgZbm6_f.js → lazy-message-response-ClOOqJ2R.js} +2 -2
  134. package/dist/web/assets/lazy-message-response-ClOOqJ2R.js.br +0 -0
  135. package/dist/web/assets/lazy-message-response-ClOOqJ2R.js.gz +0 -0
  136. package/dist/web/assets/{mcp-management-pane-BwR_barH.js → mcp-management-pane-Dxb0V9mJ.js} +1 -1
  137. package/dist/web/assets/mcp-management-pane-Dxb0V9mJ.js.br +0 -0
  138. package/dist/web/assets/mcp-management-pane-Dxb0V9mJ.js.gz +0 -0
  139. package/dist/web/assets/mermaid-GHXKKRXX-CTpPHU79.js +1 -0
  140. package/dist/web/assets/mermaid-GHXKKRXX-CTpPHU79.js.br +0 -0
  141. package/dist/web/assets/mermaid-GHXKKRXX-CTpPHU79.js.gz +0 -0
  142. package/dist/web/assets/{message-response-BuAZphla.js → message-response-BqaS9_Ak.js} +6 -6
  143. package/dist/web/assets/message-response-BqaS9_Ak.js.br +0 -0
  144. package/dist/web/assets/message-response-BqaS9_Ak.js.gz +0 -0
  145. package/dist/web/assets/{mindmap-definition-FAOFIHXS-DGzAA5ft.js → mindmap-definition-FAOFIHXS-e4xaDG0C.js} +1 -1
  146. package/dist/web/assets/mindmap-definition-FAOFIHXS-e4xaDG0C.js.br +0 -0
  147. package/dist/web/assets/mindmap-definition-FAOFIHXS-e4xaDG0C.js.gz +0 -0
  148. package/dist/web/assets/official-plugins-pane-BINszJdR.js +1 -0
  149. package/dist/web/assets/official-plugins-pane-BINszJdR.js.br +0 -0
  150. package/dist/web/assets/official-plugins-pane-BINszJdR.js.gz +0 -0
  151. package/dist/web/assets/{patch-diff-viewer-BigjXoO6.js → patch-diff-viewer-uRBXpth4.js} +2 -2
  152. package/dist/web/assets/patch-diff-viewer-uRBXpth4.js.br +0 -0
  153. package/dist/web/assets/patch-diff-viewer-uRBXpth4.js.gz +0 -0
  154. package/dist/web/assets/{pegDiagram-VL7TDLO6-BfAVCl7E.js → pegDiagram-VL7TDLO6-yAZdMeDN.js} +1 -1
  155. package/dist/web/assets/pegDiagram-VL7TDLO6-yAZdMeDN.js.br +0 -0
  156. package/dist/web/assets/pegDiagram-VL7TDLO6-yAZdMeDN.js.gz +0 -0
  157. package/dist/web/assets/{personalization-settings-panel-D-Gd--Rl.js → personalization-settings-panel-Sw_yJQCY.js} +1 -1
  158. package/dist/web/assets/personalization-settings-panel-Sw_yJQCY.js.br +0 -0
  159. package/dist/web/assets/personalization-settings-panel-Sw_yJQCY.js.gz +0 -0
  160. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-kgcNar0g.js → pieDiagram-7S7Q4E2Y-DKgKZ9K6.js} +1 -1
  161. package/dist/web/assets/pieDiagram-7S7Q4E2Y-DKgKZ9K6.js.br +0 -0
  162. package/dist/web/assets/pieDiagram-7S7Q4E2Y-DKgKZ9K6.js.gz +0 -0
  163. package/dist/web/assets/{project-file-popup-page-DJCEoy22.js → project-file-popup-page-BK__Q18L.js} +1 -1
  164. package/dist/web/assets/project-file-popup-page-BK__Q18L.js.br +0 -0
  165. package/dist/web/assets/project-file-popup-page-BK__Q18L.js.gz +0 -0
  166. package/dist/web/assets/{project-source-panel-B_iPZ4Xn.js → project-source-panel-Dd__SIgT.js} +3 -3
  167. package/dist/web/assets/project-source-panel-Dd__SIgT.js.br +0 -0
  168. package/dist/web/assets/project-source-panel-Dd__SIgT.js.gz +0 -0
  169. package/dist/web/assets/{prompt-input-BDkiLB2S.js → prompt-input-D7ZkQ_gQ.js} +1 -1
  170. package/dist/web/assets/prompt-input-D7ZkQ_gQ.js.br +0 -0
  171. package/dist/web/assets/prompt-input-D7ZkQ_gQ.js.gz +0 -0
  172. package/dist/web/assets/{prompt-reference-token-_srKof11.js → prompt-reference-token-BBMnimT4.js} +1 -1
  173. package/dist/web/assets/prompt-reference-token-BBMnimT4.js.br +0 -0
  174. package/dist/web/assets/prompt-reference-token-BBMnimT4.js.gz +0 -0
  175. package/dist/web/assets/{railroadDiagram-AXF67PYL-CmHkSqa8.js → railroadDiagram-AXF67PYL-BBVyDlId.js} +1 -1
  176. package/dist/web/assets/railroadDiagram-AXF67PYL-BBVyDlId.js.br +0 -0
  177. package/dist/web/assets/railroadDiagram-AXF67PYL-BBVyDlId.js.gz +0 -0
  178. package/dist/web/assets/{requirementDiagram-LRYGKXZP-I035gQYY.js → requirementDiagram-LRYGKXZP-1CJGSuUO.js} +1 -1
  179. package/dist/web/assets/requirementDiagram-LRYGKXZP-1CJGSuUO.js.br +0 -0
  180. package/dist/web/assets/requirementDiagram-LRYGKXZP-1CJGSuUO.js.gz +0 -0
  181. package/dist/web/assets/{scheduled-task-date-time-picker-BCFLWNkx.js → scheduled-task-date-time-picker-BoLv1Roe.js} +1 -1
  182. package/dist/web/assets/scheduled-task-date-time-picker-BoLv1Roe.js.br +0 -0
  183. package/dist/web/assets/{scheduled-task-date-time-picker-BCFLWNkx.js.gz → scheduled-task-date-time-picker-BoLv1Roe.js.gz} +0 -0
  184. package/dist/web/assets/{scheduled-tasks-container-Q8NazFRD.js → scheduled-tasks-container-CH4kKvAd.js} +2 -2
  185. package/dist/web/assets/scheduled-tasks-container-CH4kKvAd.js.br +0 -0
  186. package/dist/web/assets/scheduled-tasks-container-CH4kKvAd.js.gz +0 -0
  187. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-BomGpYgp.js → sequenceDiagram-SI44F4Z6-C073VZDH.js} +1 -1
  188. package/dist/web/assets/sequenceDiagram-SI44F4Z6-C073VZDH.js.br +0 -0
  189. package/dist/web/assets/sequenceDiagram-SI44F4Z6-C073VZDH.js.gz +0 -0
  190. package/dist/web/assets/{sheet-YYYqH36Y.js → sheet-DietHvw8.js} +1 -1
  191. package/dist/web/assets/sheet-DietHvw8.js.br +0 -0
  192. package/dist/web/assets/sheet-DietHvw8.js.gz +0 -0
  193. package/dist/web/assets/{shiki-bundle-DirQN6eN.js → shiki-bundle-DC-eDV05.js} +1 -1
  194. package/dist/web/assets/shiki-bundle-DC-eDV05.js.br +1 -0
  195. package/dist/web/assets/shiki-bundle-DC-eDV05.js.gz +0 -0
  196. package/dist/web/assets/{skills-market-container-Dra_SRsM.js → skills-market-container--2yomrH9.js} +2 -2
  197. package/dist/web/assets/skills-market-container--2yomrH9.js.br +0 -0
  198. package/dist/web/assets/skills-market-container--2yomrH9.js.gz +0 -0
  199. package/dist/web/assets/{stateDiagram-OKZ733FA-C5gL7nOO.js → stateDiagram-OKZ733FA-BUJVFo5h.js} +1 -1
  200. package/dist/web/assets/stateDiagram-OKZ733FA-BUJVFo5h.js.br +0 -0
  201. package/dist/web/assets/stateDiagram-OKZ733FA-BUJVFo5h.js.gz +0 -0
  202. package/dist/web/assets/{stateDiagram-v2-UEYNNEHI-QvfdP3k_.js → stateDiagram-v2-UEYNNEHI-DZH6sQ3n.js} +1 -1
  203. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DZH6sQ3n.js.br +4 -0
  204. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DZH6sQ3n.js.gz +0 -0
  205. package/dist/web/assets/{swimlanesDiagram-ULZ7WXOC-CaCw1cJg.js → swimlanesDiagram-ULZ7WXOC-BbRbJrCo.js} +1 -1
  206. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BbRbJrCo.js.br +0 -0
  207. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BbRbJrCo.js.gz +0 -0
  208. package/dist/web/assets/{third-party-marketplace-pane-D98JmIr4.js → third-party-marketplace-pane-B8mrwncM.js} +1 -1
  209. package/dist/web/assets/third-party-marketplace-pane-B8mrwncM.js.br +0 -0
  210. package/dist/web/assets/third-party-marketplace-pane-B8mrwncM.js.gz +0 -0
  211. package/dist/web/assets/{timeline-definition-Z64GVDOM-DJi8dcVA.js → timeline-definition-Z64GVDOM-CyaFUBPU.js} +1 -1
  212. package/dist/web/assets/timeline-definition-Z64GVDOM-CyaFUBPU.js.br +0 -0
  213. package/dist/web/assets/timeline-definition-Z64GVDOM-CyaFUBPU.js.gz +0 -0
  214. package/dist/web/assets/{vennDiagram-T6HMQDX7-CrKTcaED.js → vennDiagram-T6HMQDX7-D2V-UUrU.js} +1 -1
  215. package/dist/web/assets/vennDiagram-T6HMQDX7-D2V-UUrU.js.br +0 -0
  216. package/dist/web/assets/{vennDiagram-T6HMQDX7-CrKTcaED.js.gz → vennDiagram-T6HMQDX7-D2V-UUrU.js.gz} +0 -0
  217. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-bLfKjN8C.js → wardleyDiagram-T6FBY63Y-BrvOdgtd.js} +1 -1
  218. package/dist/web/assets/wardleyDiagram-T6FBY63Y-BrvOdgtd.js.br +0 -0
  219. package/dist/web/assets/wardleyDiagram-T6FBY63Y-BrvOdgtd.js.gz +0 -0
  220. package/dist/web/assets/{workbench-inspector-changes-DYK3o-JB.js → workbench-inspector-changes-B4aWIRfS.js} +1 -1
  221. package/dist/web/assets/workbench-inspector-changes-B4aWIRfS.js.br +0 -0
  222. package/dist/web/assets/workbench-inspector-changes-B4aWIRfS.js.gz +0 -0
  223. package/dist/web/assets/{workbench-pet-canvas-UNLOz4Hj.js → workbench-pet-canvas-Cn4RQA28.js} +1 -1
  224. package/dist/web/assets/workbench-pet-canvas-Cn4RQA28.js.br +0 -0
  225. package/dist/web/assets/workbench-pet-canvas-Cn4RQA28.js.gz +0 -0
  226. package/dist/web/assets/{workbench-shell-dY_e5m74.js → workbench-shell-CfrE67rt.js} +4 -4
  227. package/dist/web/assets/workbench-shell-CfrE67rt.js.br +0 -0
  228. package/dist/web/assets/workbench-shell-CfrE67rt.js.gz +0 -0
  229. package/dist/web/assets/{xychartDiagram-ELKLHX3M-Cx1crMso.js → xychartDiagram-ELKLHX3M-BCQllPKr.js} +1 -1
  230. package/dist/web/assets/xychartDiagram-ELKLHX3M-BCQllPKr.js.br +0 -0
  231. package/dist/web/assets/xychartDiagram-ELKLHX3M-BCQllPKr.js.gz +0 -0
  232. package/dist/web/index.html +3 -3
  233. package/dist/web/index.html.br +0 -0
  234. package/dist/web/index.html.gz +0 -0
  235. package/package.json +2 -2
  236. package/dist/web/assets/abnfDiagram-N423BO3Z-B5zsWXWU.js.br +0 -0
  237. package/dist/web/assets/abnfDiagram-N423BO3Z-B5zsWXWU.js.gz +0 -0
  238. package/dist/web/assets/agent-settings-panel-D0fbmF3P.js +0 -1
  239. package/dist/web/assets/agent-settings-panel-D0fbmF3P.js.br +0 -0
  240. package/dist/web/assets/agent-settings-panel-D0fbmF3P.js.gz +0 -0
  241. package/dist/web/assets/architectureDiagram-T3A2C74G-VAJJokz3.js.br +0 -0
  242. package/dist/web/assets/architectureDiagram-T3A2C74G-VAJJokz3.js.gz +0 -0
  243. package/dist/web/assets/attachments-CuciRoPj.js.br +0 -0
  244. package/dist/web/assets/attachments-CuciRoPj.js.gz +0 -0
  245. package/dist/web/assets/background-image-picker-D4S9VbWK.js.br +0 -0
  246. package/dist/web/assets/background-image-picker-D4S9VbWK.js.gz +0 -0
  247. package/dist/web/assets/chunk-5RXB4S5H-fk5DV184.js.br +0 -0
  248. package/dist/web/assets/chunk-5RXB4S5H-fk5DV184.js.gz +0 -0
  249. package/dist/web/assets/chunk-6Q2QTUOP-BOd4EM_k.js.br +0 -0
  250. package/dist/web/assets/chunk-6Q2QTUOP-BOd4EM_k.js.gz +0 -0
  251. package/dist/web/assets/chunk-GF5L2VYU-4S3VMyhe.js.br +0 -0
  252. package/dist/web/assets/chunk-GF5L2VYU-4S3VMyhe.js.gz +0 -0
  253. package/dist/web/assets/chunk-JQJVKLGR-BwAdww_a.js.br +0 -0
  254. package/dist/web/assets/chunk-JQJVKLGR-BwAdww_a.js.gz +0 -0
  255. package/dist/web/assets/classDiagram-JCYQIIEL-CWvbxTV4.js.br +0 -0
  256. package/dist/web/assets/classDiagram-JCYQIIEL-CWvbxTV4.js.gz +0 -0
  257. package/dist/web/assets/classDiagram-v2-OCEON4UE-CWvbxTV4.js.br +0 -0
  258. package/dist/web/assets/classDiagram-v2-OCEON4UE-CWvbxTV4.js.gz +0 -0
  259. package/dist/web/assets/code-highlighter-BjWXy_Iw.js.br +0 -0
  260. package/dist/web/assets/code-highlighter-BjWXy_Iw.js.gz +0 -0
  261. package/dist/web/assets/commit-settings-panel-a9GtBcyN.js.br +0 -0
  262. package/dist/web/assets/commit-settings-panel-a9GtBcyN.js.gz +0 -0
  263. package/dist/web/assets/cynefinDiagram-MW4NZA55-Ds3L2HYC.js.br +0 -0
  264. package/dist/web/assets/cynefinDiagram-MW4NZA55-Ds3L2HYC.js.gz +0 -0
  265. package/dist/web/assets/diagram-7IWD3JNH-oAuqSBBd.js.br +0 -0
  266. package/dist/web/assets/diagram-7IWD3JNH-oAuqSBBd.js.gz +0 -0
  267. package/dist/web/assets/diagram-LBJQPF4R-BTr0W5cj.js.br +0 -0
  268. package/dist/web/assets/diagram-LBJQPF4R-BTr0W5cj.js.gz +0 -0
  269. package/dist/web/assets/diagram-Q27KOJAE-Xmz7kPoV.js.br +0 -0
  270. package/dist/web/assets/diagram-Q27KOJAE-Xmz7kPoV.js.gz +0 -0
  271. package/dist/web/assets/diagram-UB23O5K3-Ccoz8RvZ.js.br +0 -0
  272. package/dist/web/assets/diagram-UB23O5K3-Ccoz8RvZ.js.gz +0 -0
  273. package/dist/web/assets/ebnfDiagram-BXEA7PRR-XLCtKL91.js.br +0 -0
  274. package/dist/web/assets/ebnfDiagram-BXEA7PRR-XLCtKL91.js.gz +0 -0
  275. package/dist/web/assets/erDiagram-JOGREHBK-S2CHNYGV.js.br +0 -0
  276. package/dist/web/assets/erDiagram-JOGREHBK-S2CHNYGV.js.gz +0 -0
  277. package/dist/web/assets/file-review-dialog-F6jB7Qb_.js.br +0 -0
  278. package/dist/web/assets/file-review-dialog-F6jB7Qb_.js.gz +0 -0
  279. package/dist/web/assets/flowDiagram-UKHOOZJN-DZbuh7hy.js.br +0 -5
  280. package/dist/web/assets/flowDiagram-UKHOOZJN-DZbuh7hy.js.gz +0 -0
  281. package/dist/web/assets/git-commit-review-BT1DisdC.js.br +0 -0
  282. package/dist/web/assets/git-commit-review-BT1DisdC.js.gz +0 -0
  283. package/dist/web/assets/git-history-panel-D4wJqH0T.js.br +0 -0
  284. package/dist/web/assets/git-history-panel-D4wJqH0T.js.gz +0 -0
  285. package/dist/web/assets/global-search-dialog-B7WhRB5J.js.br +0 -0
  286. package/dist/web/assets/global-search-dialog-B7WhRB5J.js.gz +0 -0
  287. package/dist/web/assets/global-settings-about-DF9t5LPK.js.br +0 -0
  288. package/dist/web/assets/global-settings-about-DF9t5LPK.js.gz +0 -0
  289. package/dist/web/assets/global-settings-page-t1WBVqHm.js +0 -2
  290. package/dist/web/assets/global-settings-page-t1WBVqHm.js.br +0 -0
  291. package/dist/web/assets/global-settings-page-t1WBVqHm.js.gz +0 -0
  292. package/dist/web/assets/global-settings-pets-D8Grr4dJ.js.br +0 -0
  293. package/dist/web/assets/global-settings-pets-D8Grr4dJ.js.gz +0 -0
  294. package/dist/web/assets/highlighted-body-OFNGDK62-T0waXgH6.js.br +0 -0
  295. package/dist/web/assets/highlighted-body-OFNGDK62-T0waXgH6.js.gz +0 -0
  296. package/dist/web/assets/history-task-timeline-BLiCPMY2.js.br +0 -0
  297. package/dist/web/assets/history-task-timeline-BLiCPMY2.js.gz +0 -0
  298. package/dist/web/assets/image-preview-DHojYYCu.js.br +0 -0
  299. package/dist/web/assets/image-preview-DHojYYCu.js.gz +0 -0
  300. package/dist/web/assets/image-preview-content-bIMPrgXt.js.br +0 -0
  301. package/dist/web/assets/image-preview-content-bIMPrgXt.js.gz +0 -0
  302. package/dist/web/assets/index-ukQTBvh0.css +0 -2
  303. package/dist/web/assets/index-ukQTBvh0.css.br +0 -0
  304. package/dist/web/assets/index-ukQTBvh0.css.gz +0 -0
  305. package/dist/web/assets/index-ySw7zE7v.js.br +0 -0
  306. package/dist/web/assets/index-ySw7zE7v.js.gz +0 -0
  307. package/dist/web/assets/infoDiagram-6WML65LV-8JSDIKEQ.js.br +0 -0
  308. package/dist/web/assets/infoDiagram-6WML65LV-8JSDIKEQ.js.gz +0 -0
  309. package/dist/web/assets/initial-deps-BOjpvLsi.js +0 -1
  310. package/dist/web/assets/initial-deps-BOjpvLsi.js.br +0 -0
  311. package/dist/web/assets/initial-deps-BOjpvLsi.js.gz +0 -0
  312. package/dist/web/assets/installed-skills-pane-Bnwd2-z8.js.br +0 -0
  313. package/dist/web/assets/installed-skills-pane-Bnwd2-z8.js.gz +0 -0
  314. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-BBsZ0aSy.js.br +0 -0
  315. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-BBsZ0aSy.js.gz +0 -0
  316. package/dist/web/assets/kanban-definition-27J2QSJJ-DUC5stHg.js.br +0 -0
  317. package/dist/web/assets/kanban-definition-27J2QSJJ-DUC5stHg.js.gz +0 -0
  318. package/dist/web/assets/lazy-message-response-CgZbm6_f.js.br +0 -0
  319. package/dist/web/assets/lazy-message-response-CgZbm6_f.js.gz +0 -0
  320. package/dist/web/assets/mcp-management-pane-BwR_barH.js.br +0 -0
  321. package/dist/web/assets/mcp-management-pane-BwR_barH.js.gz +0 -0
  322. package/dist/web/assets/mermaid-GHXKKRXX-DCtqsNyY.js +0 -1
  323. package/dist/web/assets/mermaid-GHXKKRXX-DCtqsNyY.js.br +0 -1
  324. package/dist/web/assets/mermaid-GHXKKRXX-DCtqsNyY.js.gz +0 -0
  325. package/dist/web/assets/message-response-BuAZphla.js.br +0 -0
  326. package/dist/web/assets/message-response-BuAZphla.js.gz +0 -0
  327. package/dist/web/assets/mindmap-definition-FAOFIHXS-DGzAA5ft.js.br +0 -0
  328. package/dist/web/assets/mindmap-definition-FAOFIHXS-DGzAA5ft.js.gz +0 -0
  329. package/dist/web/assets/official-plugins-pane-BYlHv1Zw.js +0 -1
  330. package/dist/web/assets/official-plugins-pane-BYlHv1Zw.js.br +0 -0
  331. package/dist/web/assets/official-plugins-pane-BYlHv1Zw.js.gz +0 -0
  332. package/dist/web/assets/patch-diff-viewer-BigjXoO6.js.br +0 -0
  333. package/dist/web/assets/patch-diff-viewer-BigjXoO6.js.gz +0 -0
  334. package/dist/web/assets/pegDiagram-VL7TDLO6-BfAVCl7E.js.br +0 -0
  335. package/dist/web/assets/pegDiagram-VL7TDLO6-BfAVCl7E.js.gz +0 -0
  336. package/dist/web/assets/personalization-settings-panel-D-Gd--Rl.js.br +0 -0
  337. package/dist/web/assets/personalization-settings-panel-D-Gd--Rl.js.gz +0 -0
  338. package/dist/web/assets/pieDiagram-7S7Q4E2Y-kgcNar0g.js.br +0 -0
  339. package/dist/web/assets/pieDiagram-7S7Q4E2Y-kgcNar0g.js.gz +0 -0
  340. package/dist/web/assets/project-file-popup-page-DJCEoy22.js.br +0 -0
  341. package/dist/web/assets/project-file-popup-page-DJCEoy22.js.gz +0 -0
  342. package/dist/web/assets/project-source-panel-B_iPZ4Xn.js.br +0 -0
  343. package/dist/web/assets/project-source-panel-B_iPZ4Xn.js.gz +0 -0
  344. package/dist/web/assets/prompt-input-BDkiLB2S.js.br +0 -0
  345. package/dist/web/assets/prompt-input-BDkiLB2S.js.gz +0 -0
  346. package/dist/web/assets/prompt-reference-token-_srKof11.js.br +0 -0
  347. package/dist/web/assets/prompt-reference-token-_srKof11.js.gz +0 -0
  348. package/dist/web/assets/railroadDiagram-AXF67PYL-CmHkSqa8.js.br +0 -0
  349. package/dist/web/assets/railroadDiagram-AXF67PYL-CmHkSqa8.js.gz +0 -0
  350. package/dist/web/assets/requirementDiagram-LRYGKXZP-I035gQYY.js.br +0 -0
  351. package/dist/web/assets/requirementDiagram-LRYGKXZP-I035gQYY.js.gz +0 -0
  352. package/dist/web/assets/scheduled-task-date-time-picker-BCFLWNkx.js.br +0 -0
  353. package/dist/web/assets/scheduled-tasks-container-Q8NazFRD.js.br +0 -0
  354. package/dist/web/assets/scheduled-tasks-container-Q8NazFRD.js.gz +0 -0
  355. package/dist/web/assets/sequenceDiagram-SI44F4Z6-BomGpYgp.js.br +0 -0
  356. package/dist/web/assets/sequenceDiagram-SI44F4Z6-BomGpYgp.js.gz +0 -0
  357. package/dist/web/assets/sheet-YYYqH36Y.js.br +0 -0
  358. package/dist/web/assets/sheet-YYYqH36Y.js.gz +0 -0
  359. package/dist/web/assets/shiki-bundle-DirQN6eN.js.br +0 -0
  360. package/dist/web/assets/shiki-bundle-DirQN6eN.js.gz +0 -0
  361. package/dist/web/assets/skills-market-container-Dra_SRsM.js.br +0 -0
  362. package/dist/web/assets/skills-market-container-Dra_SRsM.js.gz +0 -0
  363. package/dist/web/assets/stateDiagram-OKZ733FA-C5gL7nOO.js.br +0 -0
  364. package/dist/web/assets/stateDiagram-OKZ733FA-C5gL7nOO.js.gz +0 -0
  365. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-QvfdP3k_.js.br +0 -0
  366. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-QvfdP3k_.js.gz +0 -0
  367. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CaCw1cJg.js.br +0 -0
  368. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CaCw1cJg.js.gz +0 -0
  369. package/dist/web/assets/third-party-marketplace-pane-D98JmIr4.js.br +0 -0
  370. package/dist/web/assets/third-party-marketplace-pane-D98JmIr4.js.gz +0 -0
  371. package/dist/web/assets/timeline-definition-Z64GVDOM-DJi8dcVA.js.br +0 -0
  372. package/dist/web/assets/timeline-definition-Z64GVDOM-DJi8dcVA.js.gz +0 -0
  373. package/dist/web/assets/vennDiagram-T6HMQDX7-CrKTcaED.js.br +0 -0
  374. package/dist/web/assets/wardleyDiagram-T6FBY63Y-bLfKjN8C.js.br +0 -0
  375. package/dist/web/assets/wardleyDiagram-T6FBY63Y-bLfKjN8C.js.gz +0 -0
  376. package/dist/web/assets/workbench-inspector-changes-DYK3o-JB.js.br +0 -0
  377. package/dist/web/assets/workbench-inspector-changes-DYK3o-JB.js.gz +0 -0
  378. package/dist/web/assets/workbench-pet-canvas-UNLOz4Hj.js.br +0 -0
  379. package/dist/web/assets/workbench-pet-canvas-UNLOz4Hj.js.gz +0 -0
  380. package/dist/web/assets/workbench-shell-dY_e5m74.js.br +0 -0
  381. package/dist/web/assets/workbench-shell-dY_e5m74.js.gz +0 -0
  382. package/dist/web/assets/xychartDiagram-ELKLHX3M-Cx1crMso.js.br +0 -0
  383. package/dist/web/assets/xychartDiagram-ELKLHX3M-Cx1crMso.js.gz +0 -0
@@ -1,10 +1,12 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { WorkbenchPetProviderError, CUSTOM_MODEL_REASONING_FALLBACK, normalizeCustomModelReasoning, PendingRequestResolutionError } from './chunk-REIMOLGX.js';
3
- import { TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_HISTORY_IMAGE_TOTAL_BYTES, isAgentFastModeAvailable, MAX_REALTIME_FILE_CHANGES, MAX_REALTIME_DIFF_BYTES, stripLeadingAgentSkillReferences, MAX_AGENT_HISTORY_IMAGES, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, MAX_AGENT_FILE_BYTES } from './chunk-W6U4V35J.js';
3
+ import { TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_HISTORY_IMAGE_TOTAL_BYTES, isAgentFastModeAvailable, MAX_REALTIME_FILE_CHANGES, MAX_REALTIME_DIFF_BYTES, stripLeadingAgentSkillReferences, MAX_AGENT_HISTORY_IMAGES, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, MAX_AGENT_FILE_BYTES } from './chunk-XAI75BER.js';
4
4
  import { __commonJS, __require, __toESM } from './chunk-K6J42667.js';
5
5
  import { randomUUID, createHash } from 'crypto';
6
6
  import { Buffer as Buffer$1 } from 'buffer';
7
7
  import { mkdtempSync, rmSync, constants, createReadStream, mkdirSync, unlinkSync, renameSync, writeFileSync, readFileSync, statSync, existsSync, openSync, readSync, closeSync } from 'fs';
8
+ import { pipeline } from 'stream';
9
+ import { createZstdDecompress, constants as constants$1 } from 'zlib';
8
10
  import { readFile, mkdir, writeFile, rename, rm, readdir, realpath, stat, access, open, unlink, lstat, opendir } from 'fs/promises';
9
11
  import { homedir, tmpdir } from 'os';
10
12
  import { resolve, join, basename, dirname, relative, sep, win32, posix, isAbsolute, extname } from 'path';
@@ -2643,7 +2645,7 @@ var require_transport = __commonJS({
2643
2645
  stream.flushSync();
2644
2646
  }
2645
2647
  function transport(fullOptions) {
2646
- const { pipeline, targets, levels, dedupe, worker = {}, caller = getCallers(), sync = false } = fullOptions;
2648
+ const { pipeline: pipeline2, targets, levels, dedupe, worker = {}, caller = getCallers(), sync = false } = fullOptions;
2647
2649
  const options = {
2648
2650
  ...fullOptions.options
2649
2651
  };
@@ -2671,9 +2673,9 @@ var require_transport = __commonJS({
2671
2673
  };
2672
2674
  });
2673
2675
  });
2674
- } else if (pipeline) {
2676
+ } else if (pipeline2) {
2675
2677
  target = bundlerOverrides["pino-worker"] || join10(__dirname, "worker.js");
2676
- options.pipelines = [pipeline.map((dest) => {
2678
+ options.pipelines = [pipeline2.map((dest) => {
2677
2679
  return {
2678
2680
  ...dest,
2679
2681
  target: fixTarget(dest.target)
@@ -2687,7 +2689,7 @@ var require_transport = __commonJS({
2687
2689
  options.dedupe = dedupe;
2688
2690
  }
2689
2691
  options.pinoWillSendConfig = true;
2690
- const name = targets || pipeline ? "pino.transport" : target;
2692
+ const name = targets || pipeline2 ? "pino.transport" : target;
2691
2693
  return buildStream(fixTarget(target), options, worker, sync, name);
2692
2694
  function fixTarget(origin) {
2693
2695
  origin = bundlerOverrides[origin] || origin;
@@ -3513,20 +3515,20 @@ var require_safe_stable_stringify = __commonJS({
3513
3515
  }
3514
3516
  return JSON.stringify(str);
3515
3517
  }
3516
- function sort(array, comparator) {
3517
- if (array.length > 200 || comparator) {
3518
- return array.sort(comparator);
3518
+ function sort(array2, comparator) {
3519
+ if (array2.length > 200 || comparator) {
3520
+ return array2.sort(comparator);
3519
3521
  }
3520
- for (let i = 1; i < array.length; i++) {
3521
- const currentValue = array[i];
3522
+ for (let i = 1; i < array2.length; i++) {
3523
+ const currentValue = array2[i];
3522
3524
  let position = i;
3523
- while (position !== 0 && array[position - 1] > currentValue) {
3524
- array[position] = array[position - 1];
3525
+ while (position !== 0 && array2[position - 1] > currentValue) {
3526
+ array2[position] = array2[position - 1];
3525
3527
  position--;
3526
3528
  }
3527
- array[position] = currentValue;
3529
+ array2[position] = currentValue;
3528
3530
  }
3529
- return array;
3531
+ return array2;
3530
3532
  }
3531
3533
  var typedArrayPrototypeGetSymbolToStringTag = Object.getOwnPropertyDescriptor(
3532
3534
  Object.getPrototypeOf(
@@ -3539,14 +3541,14 @@ var require_safe_stable_stringify = __commonJS({
3539
3541
  function isTypedArrayWithEntries(value) {
3540
3542
  return typedArrayPrototypeGetSymbolToStringTag.call(value) !== void 0 && value.length !== 0;
3541
3543
  }
3542
- function stringifyTypedArray(array, separator, maximumBreadth) {
3543
- if (array.length < maximumBreadth) {
3544
- maximumBreadth = array.length;
3544
+ function stringifyTypedArray(array2, separator, maximumBreadth) {
3545
+ if (array2.length < maximumBreadth) {
3546
+ maximumBreadth = array2.length;
3545
3547
  }
3546
3548
  const whitespace = separator === "," ? "" : " ";
3547
- let res = `"0":${whitespace}${array[0]}`;
3549
+ let res = `"0":${whitespace}${array2[0]}`;
3548
3550
  for (let i = 1; i < maximumBreadth; i++) {
3549
- res += `${separator}"${i}":${whitespace}${array[i]}`;
3551
+ res += `${separator}"${i}":${whitespace}${array2[i]}`;
3550
3552
  }
3551
3553
  return res;
3552
3554
  }
@@ -5680,6 +5682,72 @@ function mapCodexGoal(value, expectedTaskId) {
5680
5682
  updatedAt: toDateTime(goal["updatedAt"], "Codex goal updatedAt")
5681
5683
  };
5682
5684
  }
5685
+ var MAX_READERS = 2;
5686
+ var IDLE_TIMEOUT_MS = 3e4;
5687
+ var readers = /* @__PURE__ */ new Set();
5688
+ var TranscriptZstdReader = class _TranscriptZstdReader {
5689
+ #source;
5690
+ #decoder;
5691
+ #iterator;
5692
+ #pending = Buffer.alloc(0);
5693
+ #timer;
5694
+ closed = false;
5695
+ done = false;
5696
+ constructor(path) {
5697
+ this.#source = createReadStream(path, { highWaterMark: 64 * 1024 });
5698
+ this.#decoder = createZstdDecompress({
5699
+ chunkSize: 64 * 1024,
5700
+ // 上游 level 3 的窗口小于此限制;拒绝异常大窗口,避免压缩文件放大内存占用。
5701
+ params: { [constants$1.ZSTD_d_windowLogMax]: 23 }
5702
+ });
5703
+ this.#iterator = this.#decoder[Symbol.asyncIterator]();
5704
+ pipeline(this.#source, this.#decoder, () => {
5705
+ });
5706
+ readers.add(this);
5707
+ }
5708
+ static open(path) {
5709
+ if (readers.size >= MAX_READERS) return void 0;
5710
+ return new _TranscriptZstdReader(path);
5711
+ }
5712
+ async read(limit, consume) {
5713
+ clearTimeout(this.#timer);
5714
+ let count = 0;
5715
+ try {
5716
+ while (count < limit && !this.closed) {
5717
+ if (this.#pending.length === 0) {
5718
+ const next = await this.#iterator.next();
5719
+ if (next.done) {
5720
+ this.done = true;
5721
+ this.close();
5722
+ break;
5723
+ }
5724
+ this.#pending = next.value;
5725
+ }
5726
+ const length = Math.min(limit - count, this.#pending.length);
5727
+ consume(this.#pending.subarray(0, length));
5728
+ this.#pending = this.#pending.subarray(length);
5729
+ count += length;
5730
+ }
5731
+ return count;
5732
+ } catch (error) {
5733
+ this.close();
5734
+ throw error;
5735
+ } finally {
5736
+ if (!this.closed)
5737
+ this.#timer = setTimeout(() => {
5738
+ this.close();
5739
+ }, IDLE_TIMEOUT_MS).unref();
5740
+ }
5741
+ }
5742
+ close() {
5743
+ this.closed = true;
5744
+ clearTimeout(this.#timer);
5745
+ this.#pending = Buffer.alloc(0);
5746
+ this.#source.destroy();
5747
+ this.#decoder.destroy();
5748
+ readers.delete(this);
5749
+ }
5750
+ };
5683
5751
  var EXPANDED_SKILL_PATTERN = /^<skill>\s*<name>(?<name>[^<]+)<\/name>\s*<path>(?<path>[^<]+)<\/path>[\s\S]*<\/skill>\s*$/u;
5684
5752
  var LINKED_SKILL_PATTERN = /\[\$(?<name>[^\]\s]+)\]\((?<path>[^)]+\/SKILL\.md)\)/gu;
5685
5753
  var SAFE_THREAD_ID_PATTERN = /^[a-zA-Z0-9_-]+$/u;
@@ -5781,32 +5849,41 @@ function getTranscriptThreadCache(cacheKey) {
5781
5849
  if (oldestKey === void 0) {
5782
5850
  break;
5783
5851
  }
5852
+ for (const file of transcriptCacheByThread.get(oldestKey)?.files.values() ?? [])
5853
+ file.reader?.close();
5784
5854
  transcriptCacheByThread.delete(oldestKey);
5785
5855
  }
5786
5856
  return created;
5787
5857
  }
5788
- async function discoverTranscriptPaths(cache, sessionsDirectory, threadId) {
5858
+ async function discoverTranscriptPaths(cache, codexHome, threadId) {
5789
5859
  const now = Date.now();
5790
5860
  if (cache.transcriptPaths.length > 0 || now - cache.lastDiscoveryAt < TRANSCRIPT_DISCOVERY_INTERVAL_MS) {
5791
5861
  return;
5792
5862
  }
5793
5863
  const transcriptPaths = [];
5794
5864
  const transcriptSuffix = `-${threadId}.jsonl`;
5795
- const directory = await opendir(sessionsDirectory, { recursive: true });
5796
- for await (const entry of directory) {
5797
- if (!entry.isFile() || !entry.name.startsWith("rollout-") || !entry.name.endsWith(transcriptSuffix)) {
5798
- continue;
5865
+ for (const name of ["sessions", "archived_sessions"]) {
5866
+ let directory;
5867
+ try {
5868
+ directory = await opendir(join(codexHome, name), { recursive: true });
5869
+ } catch (error) {
5870
+ if (isRecord2(error) && error["code"] === "ENOENT") continue;
5871
+ throw error;
5799
5872
  }
5800
- transcriptPaths.push(join(entry.parentPath, entry.name));
5801
- if (transcriptPaths.length >= MAX_TRANSCRIPT_FILES_PER_THREAD) {
5802
- break;
5873
+ for await (const entry of directory) {
5874
+ if (!entry.isFile() || !entry.name.startsWith("rollout-") || !(entry.name.endsWith(transcriptSuffix) || entry.name.endsWith(`${transcriptSuffix}.zst`)))
5875
+ continue;
5876
+ transcriptPaths.push(join(entry.parentPath, entry.name));
5877
+ if (transcriptPaths.length >= MAX_TRANSCRIPT_FILES_PER_THREAD) break;
5803
5878
  }
5879
+ if (transcriptPaths.length >= MAX_TRANSCRIPT_FILES_PER_THREAD) break;
5804
5880
  }
5805
5881
  cache.transcriptPaths = transcriptPaths;
5806
5882
  cache.lastDiscoveryAt = now;
5807
5883
  const discoveredPaths = new Set(transcriptPaths);
5808
5884
  for (const cachedPath of cache.files.keys()) {
5809
5885
  if (!discoveredPaths.has(cachedPath)) {
5886
+ cache.files.get(cachedPath)?.reader?.close();
5810
5887
  cache.files.delete(cachedPath);
5811
5888
  cache.mergedSkillsDirty = true;
5812
5889
  }
@@ -5814,11 +5891,12 @@ async function discoverTranscriptPaths(cache, sessionsDirectory, threadId) {
5814
5891
  }
5815
5892
  async function parseTranscriptFileIncrementally(transcriptPath, cache, remainingBytes) {
5816
5893
  const transcriptStats = await stat(transcriptPath);
5894
+ const compressed = transcriptPath.endsWith(".zst");
5817
5895
  const cachedFile = cache.files.get(transcriptPath);
5818
- if (cachedFile?.mtimeMs === transcriptStats.mtimeMs && cachedFile.size === transcriptStats.size && cachedFile.offset === transcriptStats.size) {
5896
+ if (cachedFile?.mtimeMs === transcriptStats.mtimeMs && cachedFile.size === transcriptStats.size && (compressed ? cachedFile.complete : cachedFile.offset === transcriptStats.size)) {
5819
5897
  return 0;
5820
5898
  }
5821
- const canContinue = cachedFile !== void 0 && transcriptStats.size >= cachedFile.size && transcriptStats.size >= cachedFile.offset && (transcriptStats.size > cachedFile.size || transcriptStats.mtimeMs === cachedFile.mtimeMs);
5899
+ const canContinue = cachedFile !== void 0 && (compressed ? cachedFile.size === transcriptStats.size && cachedFile.mtimeMs === transcriptStats.mtimeMs && cachedFile.reader?.closed === false : transcriptStats.size >= cachedFile.size && transcriptStats.size >= cachedFile.offset && (transcriptStats.size > cachedFile.size || transcriptStats.mtimeMs === cachedFile.mtimeMs));
5822
5900
  const fileCache = canContinue ? cachedFile : {
5823
5901
  cachedSkillNameBytes: 0,
5824
5902
  discardUntilNewline: false,
@@ -5829,8 +5907,23 @@ async function parseTranscriptFileIncrementally(transcriptPath, cache, remaining
5829
5907
  skillNamesByTurnId: /* @__PURE__ */ new Map()
5830
5908
  };
5831
5909
  if (cachedFile !== void 0 && fileCache !== cachedFile) {
5910
+ cachedFile.reader?.close();
5832
5911
  cache.mergedSkillsDirty = true;
5833
5912
  }
5913
+ if (compressed) {
5914
+ fileCache.reader ??= TranscriptZstdReader.open(transcriptPath);
5915
+ if (fileCache.reader === void 0) return 0;
5916
+ const bytes = await fileCache.reader.read(remainingBytes, (chunk) => {
5917
+ consumeTranscriptChunk(chunk, fileCache);
5918
+ });
5919
+ fileCache.complete = fileCache.reader.done;
5920
+ fileCache.offset += bytes;
5921
+ fileCache.mtimeMs = transcriptStats.mtimeMs;
5922
+ fileCache.size = transcriptStats.size;
5923
+ cache.files.set(transcriptPath, fileCache);
5924
+ cache.mergedSkillsDirty = true;
5925
+ return bytes;
5926
+ }
5834
5927
  const availableBytes = transcriptStats.size - fileCache.offset;
5835
5928
  const bytesToRead = Math.min(availableBytes, remainingBytes);
5836
5929
  if (bytesToRead <= 0) {
@@ -5844,27 +5937,7 @@ async function parseTranscriptFileIncrementally(transcriptPath, cache, remaining
5844
5937
  start: fileCache.offset
5845
5938
  });
5846
5939
  for await (const chunk of stream) {
5847
- const data = fileCache.pendingLine.length === 0 ? chunk : Buffer.concat([fileCache.pendingLine, chunk]);
5848
- fileCache.pendingLine = Buffer.alloc(0);
5849
- let lineStart = 0;
5850
- let lineEnd = data.indexOf(10, lineStart);
5851
- while (lineEnd >= 0) {
5852
- const line = data.subarray(lineStart, lineEnd);
5853
- if (!fileCache.discardUntilNewline && line.length <= MAX_TRANSCRIPT_LINE_BYTES) {
5854
- const contentEnd = line.at(-1) === 13 ? line.length - 1 : line.length;
5855
- collectTranscriptLineSkills(line.subarray(0, contentEnd).toString("utf8"), fileCache);
5856
- }
5857
- fileCache.discardUntilNewline = false;
5858
- lineStart = lineEnd + 1;
5859
- lineEnd = data.indexOf(10, lineStart);
5860
- }
5861
- const incompleteLine = data.subarray(lineStart);
5862
- if (!fileCache.discardUntilNewline && incompleteLine.length <= MAX_TRANSCRIPT_LINE_BYTES) {
5863
- fileCache.pendingLine = Buffer.from(incompleteLine);
5864
- } else if (incompleteLine.length > 0) {
5865
- fileCache.pendingLine = Buffer.alloc(0);
5866
- fileCache.discardUntilNewline = true;
5867
- }
5940
+ consumeTranscriptChunk(chunk, fileCache);
5868
5941
  }
5869
5942
  fileCache.offset += bytesToRead;
5870
5943
  fileCache.mtimeMs = transcriptStats.mtimeMs;
@@ -5873,6 +5946,29 @@ async function parseTranscriptFileIncrementally(transcriptPath, cache, remaining
5873
5946
  cache.mergedSkillsDirty = true;
5874
5947
  return bytesToRead;
5875
5948
  }
5949
+ function consumeTranscriptChunk(chunk, fileCache) {
5950
+ const data = fileCache.pendingLine.length === 0 ? chunk : Buffer.concat([fileCache.pendingLine, chunk]);
5951
+ fileCache.pendingLine = Buffer.alloc(0);
5952
+ let lineStart = 0;
5953
+ let lineEnd = data.indexOf(10, lineStart);
5954
+ while (lineEnd >= 0) {
5955
+ const line = data.subarray(lineStart, lineEnd);
5956
+ if (!fileCache.discardUntilNewline && line.length <= MAX_TRANSCRIPT_LINE_BYTES) {
5957
+ const contentEnd = line.at(-1) === 13 ? line.length - 1 : line.length;
5958
+ collectTranscriptLineSkills(line.subarray(0, contentEnd).toString("utf8"), fileCache);
5959
+ }
5960
+ fileCache.discardUntilNewline = false;
5961
+ lineStart = lineEnd + 1;
5962
+ lineEnd = data.indexOf(10, lineStart);
5963
+ }
5964
+ const incompleteLine = data.subarray(lineStart);
5965
+ if (!fileCache.discardUntilNewline && incompleteLine.length <= MAX_TRANSCRIPT_LINE_BYTES) {
5966
+ fileCache.pendingLine = Buffer.from(incompleteLine);
5967
+ } else if (incompleteLine.length > 0) {
5968
+ fileCache.pendingLine = Buffer.alloc(0);
5969
+ fileCache.discardUntilNewline = true;
5970
+ }
5971
+ }
5876
5972
  function mergeTranscriptSkills(cache) {
5877
5973
  if (!cache.mergedSkillsDirty) {
5878
5974
  return cache.mergedSkills;
@@ -5893,9 +5989,9 @@ function mergeTranscriptSkills(cache) {
5893
5989
  cache.mergedSkillsDirty = false;
5894
5990
  return cache.mergedSkills;
5895
5991
  }
5896
- async function readCachedCodexTranscriptTurnSkills(cache, sessionsDirectory, threadId) {
5992
+ async function readCachedCodexTranscriptTurnSkills(cache, codexHome, threadId) {
5897
5993
  try {
5898
- await discoverTranscriptPaths(cache, sessionsDirectory, threadId);
5994
+ await discoverTranscriptPaths(cache, codexHome, threadId);
5899
5995
  let remainingBytes = MAX_TRANSCRIPT_BYTES_PER_READ;
5900
5996
  for (const transcriptPath of cache.transcriptPaths) {
5901
5997
  if (remainingBytes <= 0) {
@@ -5909,10 +6005,19 @@ async function readCachedCodexTranscriptTurnSkills(cache, sessionsDirectory, thr
5909
6005
  );
5910
6006
  } catch (error) {
5911
6007
  if (isRecord2(error) && error["code"] === "ENOENT") {
5912
- cache.files.delete(transcriptPath);
5913
- cache.mergedSkillsDirty = true;
5914
- cache.transcriptPaths = cache.transcriptPaths.filter((path) => path !== transcriptPath);
6008
+ cache.files.get(transcriptPath)?.reader?.close();
6009
+ cache.transcriptPaths = [];
5915
6010
  cache.lastDiscoveryAt = 0;
6011
+ await discoverTranscriptPaths(cache, codexHome, threadId);
6012
+ for (const replacement of cache.transcriptPaths) {
6013
+ if (remainingBytes <= 0) break;
6014
+ remainingBytes -= await parseTranscriptFileIncrementally(
6015
+ replacement,
6016
+ cache,
6017
+ remainingBytes
6018
+ );
6019
+ }
6020
+ break;
5916
6021
  }
5917
6022
  }
5918
6023
  }
@@ -5924,13 +6029,12 @@ async function readCodexTranscriptTurnSkills(threadId, codexHome = process.env["
5924
6029
  if (!SAFE_THREAD_ID_PATTERN.test(threadId)) {
5925
6030
  return /* @__PURE__ */ new Map();
5926
6031
  }
5927
- const sessionsDirectory = join(codexHome, "sessions");
5928
6032
  const cacheKey = `${codexHome}\0${threadId}`;
5929
6033
  const cache = getTranscriptThreadCache(cacheKey);
5930
6034
  if (cache.pendingRead !== void 0) {
5931
6035
  return cache.pendingRead;
5932
6036
  }
5933
- const pendingRead = readCachedCodexTranscriptTurnSkills(cache, sessionsDirectory, threadId);
6037
+ const pendingRead = readCachedCodexTranscriptTurnSkills(cache, codexHome, threadId);
5934
6038
  cache.pendingRead = pendingRead;
5935
6039
  try {
5936
6040
  return await pendingRead;
@@ -7093,15 +7197,15 @@ var JsonlFrameProcessor = class {
7093
7197
  );
7094
7198
  this.#worker.unref();
7095
7199
  this.#worker.on("message", (response) => {
7096
- const pending = this.#pending.get(response.id);
7097
- if (pending === void 0) return;
7200
+ const pending2 = this.#pending.get(response.id);
7201
+ if (pending2 === void 0) return;
7098
7202
  this.#pending.delete(response.id);
7099
7203
  if (response.type === "error") {
7100
- pending.reject(new JsonlFrameParseError(response.code));
7204
+ pending2.reject(new JsonlFrameParseError(response.code));
7101
7205
  return;
7102
7206
  }
7103
7207
  this.#hydrateStagedImages(response.message);
7104
- pending.resolve(response.message);
7208
+ pending2.resolve(response.message);
7105
7209
  });
7106
7210
  this.#worker.once("error", (error) => {
7107
7211
  this.#rejectPending(error);
@@ -7151,7 +7255,7 @@ var JsonlFrameProcessor = class {
7151
7255
  }
7152
7256
  }
7153
7257
  #rejectPending(error) {
7154
- for (const pending of this.#pending.values()) pending.reject(error);
7258
+ for (const pending2 of this.#pending.values()) pending2.reject(error);
7155
7259
  this.#pending.clear();
7156
7260
  }
7157
7261
  };
@@ -7416,10 +7520,10 @@ var JsonlRpcClient = class {
7416
7520
  const id = this.#nextRequestId++;
7417
7521
  const request = params === void 0 ? { id, method } : { id, method, params };
7418
7522
  return new Promise((resolve7, reject) => {
7419
- const pending = new RpcPendingRequest({
7523
+ const pending2 = new RpcPendingRequest({
7420
7524
  onTimeout: () => {
7421
- if (this.#removePending(id, pending)) {
7422
- pending.reject(new RpcTimeoutError(id, method, timeoutMs));
7525
+ if (this.#removePending(id, pending2)) {
7526
+ pending2.reject(new RpcTimeoutError(id, method, timeoutMs));
7423
7527
  }
7424
7528
  },
7425
7529
  reject,
@@ -7427,7 +7531,7 @@ var JsonlRpcClient = class {
7427
7531
  resolve: resolve7,
7428
7532
  timeoutMs
7429
7533
  });
7430
- this.#pending.set(id, pending);
7534
+ this.#pending.set(id, pending2);
7431
7535
  try {
7432
7536
  void this.#sendMessage(request).catch(() => void 0);
7433
7537
  } catch {
@@ -7493,8 +7597,8 @@ var JsonlRpcClient = class {
7493
7597
  this.#input.off("end", this.#handleInputEnd);
7494
7598
  this.#input.off("error", this.#handleStreamError);
7495
7599
  this.#output.off("error", this.#handleStreamError);
7496
- for (const pending of this.#pending.values()) {
7497
- pending.reject(reason);
7600
+ for (const pending2 of this.#pending.values()) {
7601
+ pending2.reject(reason);
7498
7602
  }
7499
7603
  this.#pending.clear();
7500
7604
  this.#frameBuffer.clear();
@@ -7661,8 +7765,8 @@ var JsonlRpcClient = class {
7661
7765
  throw new RpcProtocolError("RPC frame is neither a response, server request, nor notification");
7662
7766
  }
7663
7767
  #handleResponse(id, message) {
7664
- const pending = this.#pending.get(id);
7665
- if (!pending) {
7768
+ const pending2 = this.#pending.get(id);
7769
+ if (!pending2) {
7666
7770
  return;
7667
7771
  }
7668
7772
  if ("error" in message) {
@@ -7671,12 +7775,12 @@ var JsonlRpcClient = class {
7671
7775
  throw new RpcProtocolError("RPC error response has an invalid error payload");
7672
7776
  }
7673
7777
  if (isExplicitlyUnqueuedOverload(error)) {
7674
- const scheduled = pending.scheduleOverloadRetry(this.#overloadRetryPolicy, () => {
7675
- if (this.#pending.get(id) !== pending) {
7778
+ const scheduled = pending2.scheduleOverloadRetry(this.#overloadRetryPolicy, () => {
7779
+ if (this.#pending.get(id) !== pending2) {
7676
7780
  return;
7677
7781
  }
7678
7782
  try {
7679
- void this.#sendMessage(pending.request).catch(() => void 0);
7783
+ void this.#sendMessage(pending2.request).catch(() => void 0);
7680
7784
  } catch {
7681
7785
  }
7682
7786
  });
@@ -7684,22 +7788,22 @@ var JsonlRpcClient = class {
7684
7788
  return;
7685
7789
  }
7686
7790
  }
7687
- this.#removePending(id, pending);
7688
- pending.reject(new RpcResponseError(error));
7791
+ this.#removePending(id, pending2);
7792
+ pending2.reject(new RpcResponseError(error));
7689
7793
  return;
7690
7794
  }
7691
7795
  if (!("result" in message)) {
7692
7796
  throw new RpcProtocolError("RPC response is missing result or error");
7693
7797
  }
7694
- this.#removePending(id, pending);
7695
- pending.resolve(message["result"]);
7798
+ this.#removePending(id, pending2);
7799
+ pending2.resolve(message["result"]);
7696
7800
  }
7697
- #removePending(id, pending) {
7698
- if (this.#pending.get(id) !== pending) {
7801
+ #removePending(id, pending2) {
7802
+ if (this.#pending.get(id) !== pending2) {
7699
7803
  return false;
7700
7804
  }
7701
7805
  this.#pending.delete(id);
7702
- pending.clearTimers();
7806
+ pending2.clearTimers();
7703
7807
  return true;
7704
7808
  }
7705
7809
  #assertOpen() {
@@ -8302,9 +8406,9 @@ var CodexPersistentHistoricalAttachmentStore = class {
8302
8406
  return [...this.#pending.get(taskId)?.values() ?? []];
8303
8407
  }
8304
8408
  markPersisted(taskId, attachmentId) {
8305
- const pending = this.#pending.get(taskId);
8306
- pending?.delete(attachmentId);
8307
- if (pending?.size === 0) this.#pending.delete(taskId);
8409
+ const pending2 = this.#pending.get(taskId);
8410
+ pending2?.delete(attachmentId);
8411
+ if (pending2?.size === 0) this.#pending.delete(taskId);
8308
8412
  }
8309
8413
  async read(taskId, attachmentId) {
8310
8414
  const entry = this.#entries.get(attachmentId);
@@ -9606,8 +9710,8 @@ function readReviewWorkerThread(value) {
9606
9710
  };
9607
9711
  }
9608
9712
  var execFileAsync = promisify(execFile);
9609
- var SUPPORTED_CODEX_VERSION = "0.159.2";
9610
- var SUPPORTED_CODEX_VERSION_RANGE = ">=0.159.2,<0.160.0";
9713
+ var SUPPORTED_CODEX_VERSION = "0.160.0";
9714
+ var SUPPORTED_CODEX_VERSION_RANGE = ">=0.160.0,<0.161.0";
9611
9715
  var BUNDLED_CODEX_TARGETS = {
9612
9716
  "darwin-arm64": {
9613
9717
  executableName: "codex",
@@ -9749,7 +9853,7 @@ async function checkCodexVersion(binaryPath, options = {}) {
9749
9853
  }
9750
9854
  const [major, minor, patch] = version.split("-", 1)[0]?.split(".").map(Number) ?? [];
9751
9855
  const isPrerelease = version.includes("-");
9752
- if (major !== 0 || minor !== 159 || patch === void 0 || patch < 2 || isPrerelease) {
9856
+ if (major !== 0 || minor !== 160 || patch === void 0 || isPrerelease) {
9753
9857
  throw new Error(
9754
9858
  `Unsupported Codex version ${version}; expected ${SUPPORTED_CODEX_VERSION_RANGE}`
9755
9859
  );
@@ -11695,6 +11799,64 @@ var CodexAgentProviderEvents = class extends CodexAgentProviderTasks {
11695
11799
  };
11696
11800
  var CodexAgentProvider = class extends CodexAgentProviderEvents {
11697
11801
  };
11802
+
11803
+ // packages/provider-codex/src/history-storage.ts
11804
+ function createHistoryStorage(client) {
11805
+ let pending2;
11806
+ return {
11807
+ compress() {
11808
+ pending2 ??= client.request("rollout/compress", void 0).then((response) => {
11809
+ expectRecord(response, "rollout/compress response");
11810
+ return { status: "scheduled" };
11811
+ }).finally(() => {
11812
+ pending2 = void 0;
11813
+ });
11814
+ return pending2;
11815
+ }
11816
+ };
11817
+ }
11818
+
11819
+ // packages/provider-codex/src/plugin-reconcile.ts
11820
+ var pending = /* @__PURE__ */ new WeakMap();
11821
+ function array(value, name) {
11822
+ if (!Array.isArray(value))
11823
+ throw new CodexProtocolMappingError(`plugin/reconcile ${name} must be an array`);
11824
+ return value;
11825
+ }
11826
+ async function reconcile(client) {
11827
+ const result = expectRecord(
11828
+ await client.request("plugin/reconcile", { reason: "codexly.refresh" }),
11829
+ "plugin/reconcile response"
11830
+ );
11831
+ return {
11832
+ changedPlugins: array(result["changedPlugins"], "changedPlugins").map((value) => {
11833
+ const plugin = expectRecord(value, "plugin/reconcile plugin");
11834
+ const id = expectString(plugin["id"], "plugin/reconcile id");
11835
+ if (id.length === 0) throw new CodexProtocolMappingError("plugin/reconcile id is empty");
11836
+ return {
11837
+ id,
11838
+ hasApps: expectBoolean(plugin["hasApps"], "plugin/reconcile hasApps"),
11839
+ hasHooks: expectBoolean(plugin["hasHooks"], "plugin/reconcile hasHooks"),
11840
+ hasMcps: expectBoolean(plugin["hasMcps"], "plugin/reconcile hasMcps"),
11841
+ hasSkills: expectBoolean(plugin["hasSkills"], "plugin/reconcile hasSkills")
11842
+ };
11843
+ }),
11844
+ failedRemotePluginIds: array(result["failedRemotePluginIds"], "failedRemotePluginIds").map(
11845
+ (id) => expectString(id, "plugin/reconcile failedRemotePluginId")
11846
+ ),
11847
+ failedMaterializationRemotePluginIds: array(
11848
+ result["failedMaterializationRemotePluginIds"],
11849
+ "failedMaterializationRemotePluginIds"
11850
+ ).map((id) => expectString(id, "plugin/reconcile failedMaterializationRemotePluginId"))
11851
+ };
11852
+ }
11853
+ function reconcileCodexPlugins(client) {
11854
+ const existing = pending.get(client);
11855
+ if (existing !== void 0) return existing;
11856
+ const request = reconcile(client).finally(() => pending.delete(client));
11857
+ pending.set(client, request);
11858
+ return request;
11859
+ }
11698
11860
  function taskTitlePrompt(text) {
11699
11861
  let bounded = "";
11700
11862
  let count = 0;
@@ -11886,13 +12048,13 @@ var CodexTaskTitles = class {
11886
12048
  this.#pending.set(taskId, { project, cwd });
11887
12049
  }
11888
12050
  start(taskId, input) {
11889
- const pending = this.#pending.get(taskId);
11890
- if (pending === void 0) return;
12051
+ const pending2 = this.#pending.get(taskId);
12052
+ if (pending2 === void 0) return;
11891
12053
  this.#pending.delete(taskId);
11892
12054
  const fallback = [...input.skills, ...input.files, ...input.textAttachments].map((item) => item.name.trim()).find(Boolean) ?? "\u65B0\u4EFB\u52A1";
11893
12055
  const prompt = taskTitlePrompt(input.text.trim() || fallback);
11894
12056
  const controller = new AbortController();
11895
- const active = { ...pending, controller, done: Promise.resolve() };
12057
+ const active = { ...pending2, controller, done: Promise.resolve() };
11896
12058
  this.#active.set(taskId, active);
11897
12059
  active.done = Promise.resolve().then(async () => {
11898
12060
  const model = await this.readModel();
@@ -11905,7 +12067,7 @@ var CodexTaskTitles = class {
11905
12067
  this.#listeners.delete(listener);
11906
12068
  };
11907
12069
  },
11908
- pending.cwd,
12070
+ pending2.cwd,
11909
12071
  model,
11910
12072
  prompt,
11911
12073
  controller.signal
@@ -11920,7 +12082,7 @@ var CodexTaskTitles = class {
11920
12082
  "thread/read response"
11921
12083
  );
11922
12084
  const thread = expectRecord(response["thread"], "task title thread");
11923
- const projectId = pending.project.kind === "temporary" ? null : pending.project.id;
12085
+ const projectId = pending2.project.kind === "temporary" ? null : pending2.project.id;
11924
12086
  if (thread["id"] !== taskId || thread["projectId"] !== projectId) {
11925
12087
  throw new Error("Task title ownership mismatch");
11926
12088
  }
@@ -11954,8 +12116,8 @@ var CodexTaskTitles = class {
11954
12116
  this.#active.get(taskId)?.controller.abort();
11955
12117
  }
11956
12118
  async releaseProject(projectId) {
11957
- for (const [taskId, pending] of this.#pending) {
11958
- if (pending.project.id === projectId) this.#pending.delete(taskId);
12119
+ for (const [taskId, pending2] of this.#pending) {
12120
+ if (pending2.project.id === projectId) this.#pending.delete(taskId);
11959
12121
  }
11960
12122
  const active = [...this.#active.values()].filter((entry) => entry.project.id === projectId);
11961
12123
  for (const entry of active) entry.controller.abort();
@@ -12033,7 +12195,7 @@ async function readOptional(path) {
12033
12195
  }
12034
12196
  }
12035
12197
  function createGlobalInstructionsStore(home) {
12036
- let pending = Promise.resolve();
12198
+ let pending2 = Promise.resolve();
12037
12199
  const read = async () => ({
12038
12200
  content: await readOptional(join(home, "AGENTS.md")),
12039
12201
  path: join(home, "AGENTS.md"),
@@ -12042,7 +12204,7 @@ function createGlobalInstructionsStore(home) {
12042
12204
  return {
12043
12205
  read,
12044
12206
  save(input) {
12045
- const result = pending.then(async () => {
12207
+ const result = pending2.then(async () => {
12046
12208
  const path = join(home, "AGENTS.md");
12047
12209
  if (await readOptional(path) !== input.expectedContent) {
12048
12210
  throw Object.assign(new Error("Global instructions changed; reload before saving"), {
@@ -12080,7 +12242,7 @@ function createGlobalInstructionsStore(home) {
12080
12242
  }
12081
12243
  return read();
12082
12244
  });
12083
- pending = result.then(
12245
+ pending2 = result.then(
12084
12246
  () => void 0,
12085
12247
  () => void 0
12086
12248
  );
@@ -13374,9 +13536,9 @@ var CodexGitMetadataWatchService = class {
13374
13536
  const owner = this.#watchOwners.get(params["watchId"]);
13375
13537
  const state = owner === void 0 ? void 0 : this.#projects.get(owner.projectId);
13376
13538
  if (owner === void 0 || state === void 0 || state.released) return;
13377
- const pending = state.pendingRoots.get(owner.rootPath);
13378
- if (pending !== void 0) {
13379
- pending.refreshTopology ||= owner.refreshTopology;
13539
+ const pending2 = state.pendingRoots.get(owner.rootPath);
13540
+ if (pending2 !== void 0) {
13541
+ pending2.refreshTopology ||= owner.refreshTopology;
13380
13542
  return;
13381
13543
  }
13382
13544
  const change = {
@@ -13399,7 +13561,7 @@ var CodexGitMetadataWatchService = class {
13399
13561
  if (state === void 0) return;
13400
13562
  this.#projects.delete(projectId);
13401
13563
  state.released = true;
13402
- for (const pending of state.pendingRoots.values()) clearTimeout(pending.timer);
13564
+ for (const pending2 of state.pendingRoots.values()) clearTimeout(pending2.timer);
13403
13565
  state.pendingRoots.clear();
13404
13566
  await state.operation.catch(() => void 0);
13405
13567
  const registrations = [...state.registrationsByRoot.values()].flatMap((entries) => [
@@ -13850,6 +14012,7 @@ async function setCodexMcpServerEnabled(client, name, enabled) {
13850
14012
  // packages/provider-codex/src/runtime-provider.ts
13851
14013
  var CodexRuntimeProvider = class {
13852
14014
  personalization;
14015
+ historyStorage;
13853
14016
  fileSearch;
13854
14017
  search;
13855
14018
  #client;
@@ -13867,6 +14030,7 @@ var CodexRuntimeProvider = class {
13867
14030
  #reviewWorkerOwners = /* @__PURE__ */ new Map();
13868
14031
  constructor(client, logger = DEFAULT_PROVIDER_LOGGER, options = {}) {
13869
14032
  this.#client = client;
14033
+ this.historyStorage = createHistoryStorage(client);
13870
14034
  const codexHome = options.codexHome ?? process.env["CODEX_HOME"] ?? resolve(homedir(), ".codex");
13871
14035
  this.#attachmentDirectory = join(codexHome, "codexly", "thread-attachments");
13872
14036
  this.#forkTaskDirectory = join(codexHome, "codexly", "fork-tasks");
@@ -14019,11 +14183,6 @@ var CodexRuntimeProvider = class {
14019
14183
  await this.#providerConnection.prepareModelCatalog();
14020
14184
  catalogRuntime = await this.#modelCatalogRuntimeFactory();
14021
14185
  return await this.#listModelsWithClient(catalogRuntime.client);
14022
- } catch {
14023
- this.#logger.warn(
14024
- { diagnosticCode: "model_catalog_refresh_failed" },
14025
- "Fresh model catalog unavailable; falling back to the primary Codex CLI catalog"
14026
- );
14027
14186
  } finally {
14028
14187
  if (catalogRuntime !== null) {
14029
14188
  await catalogRuntime.close().catch(() => {
@@ -14071,6 +14230,9 @@ var CodexRuntimeProvider = class {
14071
14230
  listInstalledSkills(projects, forceReload) {
14072
14231
  return listCodexInstalledSkills(this.#client, projects, forceReload);
14073
14232
  }
14233
+ reconcileOfficialPlugins() {
14234
+ return reconcileCodexPlugins(this.#client);
14235
+ }
14074
14236
  listOfficialPlugins(projects, forceRefetch) {
14075
14237
  return listCodexOfficialPlugins(this.#client, projects, forceRefetch);
14076
14238
  }