@bryanhu/codexly 0.34.1 → 0.36.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 (485) hide show
  1. package/CHANGELOG.md +61 -1
  2. package/README.md +30 -6
  3. package/README.zh-CN.md +36 -6
  4. package/dist/chunk-3WW7LK46.js +5 -0
  5. package/dist/chunk-DRIJMD7S.js +1040 -0
  6. package/dist/chunk-GFASBWL4.js +3 -0
  7. package/dist/chunk-HD7TOFDV.js +3 -0
  8. package/dist/chunk-IV4NRE4S.js +2 -0
  9. package/dist/chunk-PQPYP3AR.js +77 -0
  10. package/dist/chunk-XJOOU7A5.js +2 -0
  11. package/dist/chunk-YXJGRSCL.js +2 -0
  12. package/dist/chunk-ZK7RF5XC.js +40 -0
  13. package/dist/cli.js +6 -1269
  14. package/dist/client/index.js +2 -1564
  15. package/dist/codex-jsonl-frame-worker.js +2 -120
  16. package/dist/command-VIK5GXBS.js +84 -0
  17. package/dist/core/index.js +1 -5
  18. package/dist/dist-2UQZKK3B.js +2 -0
  19. package/dist/historical-attachment-worker.js +2 -0
  20. package/dist/protocol/index.js +1 -6
  21. package/dist/providers/codex/index.js +1 -8
  22. package/dist/scheduled-task-recurrence-worker.js +9 -2969
  23. package/dist/server/index.js +1 -10
  24. package/dist/sqlite-state-worker.js +31 -872
  25. package/dist/web/.vite/manifest.json +348 -304
  26. package/dist/web/.vite/manifest.json.br +0 -0
  27. package/dist/web/.vite/manifest.json.gz +0 -0
  28. package/dist/web/assets/abnfDiagram-N423BO3Z-BA9G7eND.js +1 -0
  29. package/dist/web/assets/abnfDiagram-N423BO3Z-BA9G7eND.js.br +0 -0
  30. package/dist/web/assets/abnfDiagram-N423BO3Z-BA9G7eND.js.gz +0 -0
  31. package/dist/web/assets/agent-settings-panel-B0qVVJ3_.js +1 -0
  32. package/dist/web/assets/agent-settings-panel-B0qVVJ3_.js.br +0 -0
  33. package/dist/web/assets/agent-settings-panel-B0qVVJ3_.js.gz +0 -0
  34. package/dist/web/assets/architectureDiagram-T3A2C74G-hY1IIQ-y.js +36 -0
  35. package/dist/web/assets/architectureDiagram-T3A2C74G-hY1IIQ-y.js.br +0 -0
  36. package/dist/web/assets/architectureDiagram-T3A2C74G-hY1IIQ-y.js.gz +0 -0
  37. package/dist/web/assets/{background-image-picker-qVC2tyE3.js → background-image-picker-CVhVTosp.js} +1 -1
  38. package/dist/web/assets/background-image-picker-CVhVTosp.js.br +0 -0
  39. package/dist/web/assets/background-image-picker-CVhVTosp.js.gz +0 -0
  40. package/dist/web/assets/{chunk-5RXB4S5H-CZZnhtaV.js → chunk-5RXB4S5H-fg31GjQR.js} +1 -1
  41. package/dist/web/assets/chunk-5RXB4S5H-fg31GjQR.js.br +0 -0
  42. package/dist/web/assets/chunk-5RXB4S5H-fg31GjQR.js.gz +0 -0
  43. package/dist/web/assets/{chunk-6Q2QTUOP-F3pSVbiC.js → chunk-6Q2QTUOP-UGVxaGe-.js} +1 -1
  44. package/dist/web/assets/chunk-6Q2QTUOP-UGVxaGe-.js.br +0 -0
  45. package/dist/web/assets/chunk-6Q2QTUOP-UGVxaGe-.js.gz +0 -0
  46. package/dist/web/assets/{chunk-GF5L2VYU-DtEOvQdn.js → chunk-GF5L2VYU-iTLU6Gbu.js} +2 -2
  47. package/dist/web/assets/chunk-GF5L2VYU-iTLU6Gbu.js.br +0 -0
  48. package/dist/web/assets/chunk-GF5L2VYU-iTLU6Gbu.js.gz +0 -0
  49. package/dist/web/assets/{chunk-JQJVKLGR-BHL4KhjZ.js → chunk-JQJVKLGR-DzWAKhHq.js} +3 -3
  50. package/dist/web/assets/chunk-JQJVKLGR-DzWAKhHq.js.br +0 -0
  51. package/dist/web/assets/chunk-JQJVKLGR-DzWAKhHq.js.gz +0 -0
  52. package/dist/web/assets/classDiagram-JCYQIIEL-Cc_4r5xo.js +1 -0
  53. package/dist/web/assets/classDiagram-JCYQIIEL-Cc_4r5xo.js.br +0 -0
  54. package/dist/web/assets/classDiagram-JCYQIIEL-Cc_4r5xo.js.gz +0 -0
  55. package/dist/web/assets/classDiagram-v2-OCEON4UE-Cc_4r5xo.js +1 -0
  56. package/dist/web/assets/classDiagram-v2-OCEON4UE-Cc_4r5xo.js.br +0 -0
  57. package/dist/web/assets/classDiagram-v2-OCEON4UE-Cc_4r5xo.js.gz +0 -0
  58. package/dist/web/assets/code-highlighter-CTwU6LuI.js +3 -0
  59. package/dist/web/assets/code-highlighter-CTwU6LuI.js.br +0 -0
  60. package/dist/web/assets/code-highlighter-CTwU6LuI.js.gz +0 -0
  61. package/dist/web/assets/{commit-settings-panel-2rAqVa_3.js → commit-settings-panel-Ctb-LmoD.js} +1 -1
  62. package/dist/web/assets/commit-settings-panel-Ctb-LmoD.js.br +0 -0
  63. package/dist/web/assets/commit-settings-panel-Ctb-LmoD.js.gz +0 -0
  64. package/dist/web/assets/cynefinDiagram-MW4NZA55-CarrAQe_.js +62 -0
  65. package/dist/web/assets/cynefinDiagram-MW4NZA55-CarrAQe_.js.br +0 -0
  66. package/dist/web/assets/cynefinDiagram-MW4NZA55-CarrAQe_.js.gz +0 -0
  67. package/dist/web/assets/{diagram-7IWD3JNH-B9Lkv0en.js → diagram-7IWD3JNH-CHgQ34Br.js} +3 -3
  68. package/dist/web/assets/diagram-7IWD3JNH-CHgQ34Br.js.br +0 -0
  69. package/dist/web/assets/diagram-7IWD3JNH-CHgQ34Br.js.gz +0 -0
  70. package/dist/web/assets/diagram-B4RE2ZJO-qtdLm98R.js +3 -0
  71. package/dist/web/assets/diagram-B4RE2ZJO-qtdLm98R.js.br +0 -0
  72. package/dist/web/assets/diagram-B4RE2ZJO-qtdLm98R.js.gz +0 -0
  73. package/dist/web/assets/diagram-LBJQPF4R-Do0sclzV.js +24 -0
  74. package/dist/web/assets/diagram-LBJQPF4R-Do0sclzV.js.br +0 -0
  75. package/dist/web/assets/diagram-LBJQPF4R-Do0sclzV.js.gz +0 -0
  76. package/dist/web/assets/diagram-Q27KOJAE-CuX25bnK.js +24 -0
  77. package/dist/web/assets/diagram-Q27KOJAE-CuX25bnK.js.br +0 -0
  78. package/dist/web/assets/diagram-Q27KOJAE-CuX25bnK.js.gz +0 -0
  79. package/dist/web/assets/diagram-UB23O5K3-C8vf7TKH.js +41 -0
  80. package/dist/web/assets/diagram-UB23O5K3-C8vf7TKH.js.br +0 -0
  81. package/dist/web/assets/diagram-UB23O5K3-C8vf7TKH.js.gz +0 -0
  82. package/dist/web/assets/{dist-jnof4ZZu.js → dist-C12Fexcu.js} +1 -1
  83. package/dist/web/assets/dist-C12Fexcu.js.br +0 -0
  84. package/dist/web/assets/dist-C12Fexcu.js.gz +0 -0
  85. package/dist/web/assets/dist-DHnVkR1t.js +42 -0
  86. package/dist/web/assets/dist-DHnVkR1t.js.br +0 -0
  87. package/dist/web/assets/dist-DHnVkR1t.js.gz +0 -0
  88. package/dist/web/assets/ebnfDiagram-BXEA7PRR-DctRYehy.js +1 -0
  89. package/dist/web/assets/ebnfDiagram-BXEA7PRR-DctRYehy.js.br +0 -0
  90. package/dist/web/assets/ebnfDiagram-BXEA7PRR-DctRYehy.js.gz +0 -0
  91. package/dist/web/assets/{erDiagram-JOGREHBK-B83NMJhw.js → erDiagram-JOGREHBK-BkfLzWvS.js} +2 -2
  92. package/dist/web/assets/erDiagram-JOGREHBK-BkfLzWvS.js.br +0 -0
  93. package/dist/web/assets/erDiagram-JOGREHBK-BkfLzWvS.js.gz +0 -0
  94. package/dist/web/assets/file-review-dialog-pkoiV9C7.js +2 -0
  95. package/dist/web/assets/file-review-dialog-pkoiV9C7.js.br +0 -0
  96. package/dist/web/assets/file-review-dialog-pkoiV9C7.js.gz +0 -0
  97. package/dist/web/assets/{flowDiagram-UKHOOZJN-4x6NyWk2.js → flowDiagram-UKHOOZJN-CQWRJfj_.js} +1 -1
  98. package/dist/web/assets/flowDiagram-UKHOOZJN-CQWRJfj_.js.br +0 -0
  99. package/dist/web/assets/flowDiagram-UKHOOZJN-CQWRJfj_.js.gz +0 -0
  100. package/dist/web/assets/git-commit-review-BK6Ykgxx.js +2 -0
  101. package/dist/web/assets/git-commit-review-BK6Ykgxx.js.br +0 -0
  102. package/dist/web/assets/git-commit-review-BK6Ykgxx.js.gz +0 -0
  103. package/dist/web/assets/git-history-panel-BYunPg_Y.js +1 -0
  104. package/dist/web/assets/git-history-panel-BYunPg_Y.js.br +0 -0
  105. package/dist/web/assets/git-history-panel-BYunPg_Y.js.gz +0 -0
  106. package/dist/web/assets/gitGraphDiagram-DS77QQ5N-JH4oE096.js +106 -0
  107. package/dist/web/assets/gitGraphDiagram-DS77QQ5N-JH4oE096.js.br +0 -0
  108. package/dist/web/assets/gitGraphDiagram-DS77QQ5N-JH4oE096.js.gz +0 -0
  109. package/dist/web/assets/global-search-dialog-DKnqW_9p.js +2 -0
  110. package/dist/web/assets/global-search-dialog-DKnqW_9p.js.br +0 -0
  111. package/dist/web/assets/global-search-dialog-DKnqW_9p.js.gz +0 -0
  112. package/dist/web/assets/{global-settings-about-QnPZzZuN.js → global-settings-about-CUWtouNQ.js} +1 -1
  113. package/dist/web/assets/global-settings-about-CUWtouNQ.js.br +0 -0
  114. package/dist/web/assets/global-settings-about-CUWtouNQ.js.gz +0 -0
  115. package/dist/web/assets/global-settings-page-7DIqvRQV.js +2 -0
  116. package/dist/web/assets/global-settings-page-7DIqvRQV.js.br +0 -0
  117. package/dist/web/assets/global-settings-page-7DIqvRQV.js.gz +0 -0
  118. package/dist/web/assets/{global-settings-pets-Bx1MItgn.js → global-settings-pets-DOp0Bwxj.js} +1 -1
  119. package/dist/web/assets/global-settings-pets-DOp0Bwxj.js.br +0 -0
  120. package/dist/web/assets/global-settings-pets-DOp0Bwxj.js.gz +0 -0
  121. package/dist/web/assets/{highlighted-body-OFNGDK62-DUyZcQSF.js → highlighted-body-OFNGDK62-BN31gHcf.js} +1 -1
  122. package/dist/web/assets/highlighted-body-OFNGDK62-BN31gHcf.js.br +0 -0
  123. package/dist/web/assets/highlighted-body-OFNGDK62-BN31gHcf.js.gz +0 -0
  124. package/dist/web/assets/{history-task-timeline-7DRGPm6t.js → history-task-timeline-Db7jVbJQ.js} +1 -1
  125. package/dist/web/assets/history-task-timeline-Db7jVbJQ.js.br +0 -0
  126. package/dist/web/assets/history-task-timeline-Db7jVbJQ.js.gz +0 -0
  127. package/dist/web/assets/{image-preview-DivFRWxv.js → image-preview-NyGMcveW.js} +2 -2
  128. package/dist/web/assets/image-preview-NyGMcveW.js.br +0 -0
  129. package/dist/web/assets/image-preview-NyGMcveW.js.gz +0 -0
  130. package/dist/web/assets/{image-preview-content-SHlFPatX.js → image-preview-content-BBgkjUms.js} +2 -2
  131. package/dist/web/assets/image-preview-content-BBgkjUms.js.br +0 -0
  132. package/dist/web/assets/image-preview-content-BBgkjUms.js.gz +0 -0
  133. package/dist/web/assets/index-Bea8TUta.css +2 -0
  134. package/dist/web/assets/index-Bea8TUta.css.br +0 -0
  135. package/dist/web/assets/index-Bea8TUta.css.gz +0 -0
  136. package/dist/web/assets/index-CGGXkww0.js +4 -0
  137. package/dist/web/assets/index-CGGXkww0.js.br +0 -0
  138. package/dist/web/assets/index-CGGXkww0.js.gz +0 -0
  139. package/dist/web/assets/infoDiagram-6WML65LV-smD1e7u3.js +2 -0
  140. package/dist/web/assets/infoDiagram-6WML65LV-smD1e7u3.js.br +0 -0
  141. package/dist/web/assets/infoDiagram-6WML65LV-smD1e7u3.js.gz +0 -0
  142. package/dist/web/assets/{initial-deps-CjThEvcM.js → initial-deps-CJDv_c3Y.js} +1 -1
  143. package/dist/web/assets/initial-deps-CJDv_c3Y.js.br +0 -0
  144. package/dist/web/assets/{initial-deps-CjThEvcM.js.gz → initial-deps-CJDv_c3Y.js.gz} +0 -0
  145. package/dist/web/assets/initial-deps-DwgXix97.js +2 -0
  146. package/dist/web/assets/initial-deps-DwgXix97.js.br +0 -0
  147. package/dist/web/assets/initial-deps-DwgXix97.js.gz +0 -0
  148. package/dist/web/assets/{installed-skills-pane-xlfIyXj3.js → installed-skills-pane-BjwoHdKg.js} +1 -1
  149. package/dist/web/assets/installed-skills-pane-BjwoHdKg.js.br +0 -0
  150. package/dist/web/assets/installed-skills-pane-BjwoHdKg.js.gz +0 -0
  151. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-DL-EqtUw.js → ishikawaDiagram-WSZJBQD7-BMJ0kCX-.js} +1 -1
  152. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-BMJ0kCX-.js.br +0 -0
  153. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-BMJ0kCX-.js.gz +0 -0
  154. package/dist/web/assets/{kanban-definition-27J2QSJJ-C2eEzeXr.js → kanban-definition-27J2QSJJ-pQQ3ybGq.js} +3 -3
  155. package/dist/web/assets/kanban-definition-27J2QSJJ-pQQ3ybGq.js.br +0 -0
  156. package/dist/web/assets/kanban-definition-27J2QSJJ-pQQ3ybGq.js.gz +0 -0
  157. package/dist/web/assets/lazy-message-response-lBhr_q1o.js +2 -0
  158. package/dist/web/assets/lazy-message-response-lBhr_q1o.js.br +5 -0
  159. package/dist/web/assets/lazy-message-response-lBhr_q1o.js.gz +0 -0
  160. package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js +65 -0
  161. package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js.br +0 -0
  162. package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js.gz +0 -0
  163. package/dist/web/assets/{mcp-management-pane-DkGnQLeq.js → mcp-management-pane-sSqs8EvB.js} +1 -1
  164. package/dist/web/assets/mcp-management-pane-sSqs8EvB.js.br +0 -0
  165. package/dist/web/assets/mcp-management-pane-sSqs8EvB.js.gz +0 -0
  166. package/dist/web/assets/mermaid-GHXKKRXX-DqH-ybrY.js +1 -0
  167. package/dist/web/assets/mermaid-GHXKKRXX-DqH-ybrY.js.br +1 -0
  168. package/dist/web/assets/mermaid-GHXKKRXX-DqH-ybrY.js.gz +0 -0
  169. package/dist/web/assets/message-assistant-directive-B5_Hjs0F.js +3 -0
  170. package/dist/web/assets/message-assistant-directive-B5_Hjs0F.js.br +0 -0
  171. package/dist/web/assets/message-assistant-directive-B5_Hjs0F.js.gz +0 -0
  172. package/dist/web/assets/message-response-B1MUkN4A.js +151 -0
  173. package/dist/web/assets/message-response-B1MUkN4A.js.br +0 -0
  174. package/dist/web/assets/message-response-B1MUkN4A.js.gz +0 -0
  175. package/dist/web/assets/{mindmap-definition-FAOFIHXS-BYjrCygr.js → mindmap-definition-FAOFIHXS-CgQ5woK5.js} +2 -2
  176. package/dist/web/assets/mindmap-definition-FAOFIHXS-CgQ5woK5.js.br +0 -0
  177. package/dist/web/assets/{mindmap-definition-FAOFIHXS-BYjrCygr.js.gz → mindmap-definition-FAOFIHXS-CgQ5woK5.js.gz} +0 -0
  178. package/dist/web/assets/{official-plugins-pane-DAdYsWfC.js → official-plugins-pane-wD25peXQ.js} +1 -1
  179. package/dist/web/assets/official-plugins-pane-wD25peXQ.js.br +0 -0
  180. package/dist/web/assets/official-plugins-pane-wD25peXQ.js.gz +0 -0
  181. package/dist/web/assets/{patch-diff-viewer-xS0oLx5O.js → patch-diff-viewer-VOHL2ZQz.js} +24 -24
  182. package/dist/web/assets/patch-diff-viewer-VOHL2ZQz.js.br +0 -0
  183. package/dist/web/assets/patch-diff-viewer-VOHL2ZQz.js.gz +0 -0
  184. package/dist/web/assets/pdf-preview-BWJWSwA6.js +3 -0
  185. package/dist/web/assets/pdf-preview-BWJWSwA6.js.br +0 -0
  186. package/dist/web/assets/pdf-preview-BWJWSwA6.js.gz +0 -0
  187. package/dist/web/assets/pegDiagram-VL7TDLO6-CEECg9Qv.js +1 -0
  188. package/dist/web/assets/pegDiagram-VL7TDLO6-CEECg9Qv.js.br +0 -0
  189. package/dist/web/assets/pegDiagram-VL7TDLO6-CEECg9Qv.js.gz +0 -0
  190. package/dist/web/assets/{personalization-settings-panel-CT3SQ4Vu.js → personalization-settings-panel-Be8r7yUH.js} +1 -1
  191. package/dist/web/assets/personalization-settings-panel-Be8r7yUH.js.br +0 -0
  192. package/dist/web/assets/personalization-settings-panel-Be8r7yUH.js.gz +0 -0
  193. package/dist/web/assets/pieDiagram-7S7Q4E2Y-C3L4IYmx.js +39 -0
  194. package/dist/web/assets/pieDiagram-7S7Q4E2Y-C3L4IYmx.js.br +0 -0
  195. package/dist/web/assets/pieDiagram-7S7Q4E2Y-C3L4IYmx.js.gz +0 -0
  196. package/dist/web/assets/{project-file-popup-page-zPj3Gecj.js → project-file-popup-page-3kD_QzID.js} +1 -1
  197. package/dist/web/assets/project-file-popup-page-3kD_QzID.js.br +0 -0
  198. package/dist/web/assets/project-file-popup-page-3kD_QzID.js.gz +0 -0
  199. package/dist/web/assets/project-source-panel-ZKxkrM_q.js +2 -0
  200. package/dist/web/assets/project-source-panel-ZKxkrM_q.js.br +0 -0
  201. package/dist/web/assets/project-source-panel-ZKxkrM_q.js.gz +0 -0
  202. package/dist/web/assets/{prompt-input-HHHMHdzj.js → prompt-input-DpTzQpMu.js} +1 -1
  203. package/dist/web/assets/prompt-input-DpTzQpMu.js.br +0 -0
  204. package/dist/web/assets/prompt-input-DpTzQpMu.js.gz +0 -0
  205. package/dist/web/assets/railroadDiagram-AXF67PYL-CXSGJisB.js +1 -0
  206. package/dist/web/assets/railroadDiagram-AXF67PYL-CXSGJisB.js.br +0 -0
  207. package/dist/web/assets/railroadDiagram-AXF67PYL-CXSGJisB.js.gz +0 -0
  208. package/dist/web/assets/{requirementDiagram-LRYGKXZP-B9-6SM38.js → requirementDiagram-LRYGKXZP-uB3tW141.js} +2 -2
  209. package/dist/web/assets/requirementDiagram-LRYGKXZP-uB3tW141.js.br +0 -0
  210. package/dist/web/assets/requirementDiagram-LRYGKXZP-uB3tW141.js.gz +0 -0
  211. package/dist/web/assets/resources-en-gaD7QZkd.js +1 -0
  212. package/dist/web/assets/resources-en-gaD7QZkd.js.br +0 -0
  213. package/dist/web/assets/resources-en-gaD7QZkd.js.gz +0 -0
  214. package/dist/web/assets/{scheduled-task-date-time-picker-DtFk2PIk.js → scheduled-task-date-time-picker-CA-dPI35.js} +1 -1
  215. package/dist/web/assets/scheduled-task-date-time-picker-CA-dPI35.js.br +0 -0
  216. package/dist/web/assets/scheduled-task-date-time-picker-CA-dPI35.js.gz +0 -0
  217. package/dist/web/assets/{scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js → scheduled-task-floating-ui~scheduled-task-date-time-picker-wwPq7k9m.js} +1 -1
  218. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-wwPq7k9m.js.br +0 -0
  219. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-wwPq7k9m.js.gz +0 -0
  220. package/dist/web/assets/scheduled-tasks-BBUd86IL.js +1 -0
  221. package/dist/web/assets/scheduled-tasks-BBUd86IL.js.br +0 -0
  222. package/dist/web/assets/scheduled-tasks-BBUd86IL.js.gz +0 -0
  223. package/dist/web/assets/scheduled-tasks-container-D0Zpvskg.js +2 -0
  224. package/dist/web/assets/scheduled-tasks-container-D0Zpvskg.js.br +0 -0
  225. package/dist/web/assets/scheduled-tasks-container-D0Zpvskg.js.gz +0 -0
  226. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-DS13cFp5.js → sequenceDiagram-SI44F4Z6-BikVJyrh.js} +2 -2
  227. package/dist/web/assets/sequenceDiagram-SI44F4Z6-BikVJyrh.js.br +0 -0
  228. package/dist/web/assets/sequenceDiagram-SI44F4Z6-BikVJyrh.js.gz +0 -0
  229. package/dist/web/assets/{sheet-Byg2gkAE.js → sheet-BSeAYy7W.js} +1 -1
  230. package/dist/web/assets/sheet-BSeAYy7W.js.br +0 -0
  231. package/dist/web/assets/sheet-BSeAYy7W.js.gz +0 -0
  232. package/dist/web/assets/{shiki-bundle-CLewxArG.js → shiki-bundle-BZV5obW1.js} +1 -1
  233. package/dist/web/assets/shiki-bundle-BZV5obW1.js.br +2 -0
  234. package/dist/web/assets/shiki-bundle-BZV5obW1.js.gz +0 -0
  235. package/dist/web/assets/skills-market-container-iC2hoU-7.js +2 -0
  236. package/dist/web/assets/skills-market-container-iC2hoU-7.js.br +0 -0
  237. package/dist/web/assets/skills-market-container-iC2hoU-7.js.gz +0 -0
  238. package/dist/web/assets/split-workspace-menu-content-BlNIoxF5.js +1 -0
  239. package/dist/web/assets/split-workspace-menu-content-BlNIoxF5.js.br +3 -0
  240. package/dist/web/assets/split-workspace-menu-content-BlNIoxF5.js.gz +0 -0
  241. package/dist/web/assets/stateDiagram-OKZ733FA-CBWRnaGO.js +1 -0
  242. package/dist/web/assets/stateDiagram-OKZ733FA-CBWRnaGO.js.br +0 -0
  243. package/dist/web/assets/stateDiagram-OKZ733FA-CBWRnaGO.js.gz +0 -0
  244. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CJYWLmtB.js +1 -0
  245. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CJYWLmtB.js.br +0 -0
  246. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CJYWLmtB.js.gz +0 -0
  247. package/dist/web/assets/{swimlanesDiagram-ULZ7WXOC-BFGAe9px.js → swimlanesDiagram-ULZ7WXOC-5agQ3ner.js} +1 -1
  248. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-5agQ3ner.js.br +0 -0
  249. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-5agQ3ner.js.gz +0 -0
  250. package/dist/web/assets/{third-party-marketplace-pane-Bt9mm_bV.js → third-party-marketplace-pane-DvF5pfS7.js} +1 -1
  251. package/dist/web/assets/third-party-marketplace-pane-DvF5pfS7.js.br +0 -0
  252. package/dist/web/assets/third-party-marketplace-pane-DvF5pfS7.js.gz +0 -0
  253. package/dist/web/assets/{timeline-definition-Z64GVDOM-B-ybp4wL.js → timeline-definition-Z64GVDOM-D_09Q10V.js} +1 -1
  254. package/dist/web/assets/timeline-definition-Z64GVDOM-D_09Q10V.js.br +0 -0
  255. package/dist/web/assets/timeline-definition-Z64GVDOM-D_09Q10V.js.gz +0 -0
  256. package/dist/web/assets/{vennDiagram-T6HMQDX7-Du4Kq6DY.js → vennDiagram-T6HMQDX7-3WtBk1Fg.js} +1 -1
  257. package/dist/web/assets/vennDiagram-T6HMQDX7-3WtBk1Fg.js.br +0 -0
  258. package/dist/web/assets/vennDiagram-T6HMQDX7-3WtBk1Fg.js.gz +0 -0
  259. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-Dn8N9v_V.js → wardleyDiagram-T6FBY63Y-DBIzys3u.js} +3 -3
  260. package/dist/web/assets/wardleyDiagram-T6FBY63Y-DBIzys3u.js.br +0 -0
  261. package/dist/web/assets/wardleyDiagram-T6FBY63Y-DBIzys3u.js.gz +0 -0
  262. package/dist/web/assets/workbench-inspector-changes-DGOGbxn8.js +2 -0
  263. package/dist/web/assets/workbench-inspector-changes-DGOGbxn8.js.br +0 -0
  264. package/dist/web/assets/workbench-inspector-changes-DGOGbxn8.js.gz +0 -0
  265. package/dist/web/assets/{workbench-pet-canvas-CEcRG47k.js → workbench-pet-canvas-06NCdnyp.js} +1 -1
  266. package/dist/web/assets/workbench-pet-canvas-06NCdnyp.js.br +0 -0
  267. package/dist/web/assets/workbench-pet-canvas-06NCdnyp.js.gz +0 -0
  268. package/dist/web/assets/workbench-shell-BmVPybzn.js +16 -0
  269. package/dist/web/assets/workbench-shell-BmVPybzn.js.br +0 -0
  270. package/dist/web/assets/workbench-shell-BmVPybzn.js.gz +0 -0
  271. package/dist/web/assets/{xychartDiagram-ELKLHX3M-BUDqP7n9.js → xychartDiagram-ELKLHX3M-DwDj5q-W.js} +1 -1
  272. package/dist/web/assets/xychartDiagram-ELKLHX3M-DwDj5q-W.js.br +0 -0
  273. package/dist/web/assets/xychartDiagram-ELKLHX3M-DwDj5q-W.js.gz +0 -0
  274. package/dist/web/index.html +5 -6
  275. package/dist/web/index.html.br +0 -0
  276. package/dist/web/index.html.gz +0 -0
  277. package/docs/git-workflow.md +41 -0
  278. package/docs/model-context-window.md +31 -0
  279. package/docs/web-autostart.md +104 -0
  280. package/docs/web-autostart.zh-CN.md +104 -0
  281. package/package.json +5 -1
  282. package/dist/chunk-CX3MHD3W.js +0 -73909
  283. package/dist/chunk-GT7XTSEG.js +0 -56
  284. package/dist/chunk-GTANGQWE.js +0 -3360
  285. package/dist/chunk-JHTU6235.js +0 -15747
  286. package/dist/chunk-K6J42667.js +0 -43
  287. package/dist/chunk-N244YZAA.js +0 -6050
  288. package/dist/chunk-REIMOLGX.js +0 -317
  289. package/dist/dist-NGSIFQU5.js +0 -252
  290. package/dist/runtime-instance-worker.js +0 -19
  291. package/dist/web/assets/abnfDiagram-N423BO3Z-CIs8hIzJ.js +0 -1
  292. package/dist/web/assets/abnfDiagram-N423BO3Z-CIs8hIzJ.js.br +0 -0
  293. package/dist/web/assets/abnfDiagram-N423BO3Z-CIs8hIzJ.js.gz +0 -0
  294. package/dist/web/assets/agent-settings-panel-nlSHgUSn.js +0 -1
  295. package/dist/web/assets/agent-settings-panel-nlSHgUSn.js.br +0 -0
  296. package/dist/web/assets/agent-settings-panel-nlSHgUSn.js.gz +0 -0
  297. package/dist/web/assets/architectureDiagram-T3A2C74G-Bs3ktNP5.js +0 -36
  298. package/dist/web/assets/architectureDiagram-T3A2C74G-Bs3ktNP5.js.br +0 -0
  299. package/dist/web/assets/architectureDiagram-T3A2C74G-Bs3ktNP5.js.gz +0 -0
  300. package/dist/web/assets/background-image-picker-qVC2tyE3.js.br +0 -0
  301. package/dist/web/assets/background-image-picker-qVC2tyE3.js.gz +0 -0
  302. package/dist/web/assets/chunk-5RXB4S5H-CZZnhtaV.js.br +0 -0
  303. package/dist/web/assets/chunk-5RXB4S5H-CZZnhtaV.js.gz +0 -0
  304. package/dist/web/assets/chunk-6Q2QTUOP-F3pSVbiC.js.br +0 -0
  305. package/dist/web/assets/chunk-6Q2QTUOP-F3pSVbiC.js.gz +0 -0
  306. package/dist/web/assets/chunk-GF5L2VYU-DtEOvQdn.js.br +0 -0
  307. package/dist/web/assets/chunk-GF5L2VYU-DtEOvQdn.js.gz +0 -0
  308. package/dist/web/assets/chunk-JQJVKLGR-BHL4KhjZ.js.br +0 -0
  309. package/dist/web/assets/chunk-JQJVKLGR-BHL4KhjZ.js.gz +0 -0
  310. package/dist/web/assets/classDiagram-JCYQIIEL-CVbDkB9M.js +0 -1
  311. package/dist/web/assets/classDiagram-JCYQIIEL-CVbDkB9M.js.br +0 -0
  312. package/dist/web/assets/classDiagram-JCYQIIEL-CVbDkB9M.js.gz +0 -0
  313. package/dist/web/assets/classDiagram-v2-OCEON4UE-CVbDkB9M.js +0 -1
  314. package/dist/web/assets/classDiagram-v2-OCEON4UE-CVbDkB9M.js.br +0 -0
  315. package/dist/web/assets/classDiagram-v2-OCEON4UE-CVbDkB9M.js.gz +0 -0
  316. package/dist/web/assets/code-highlighter-DRXtndXt.js +0 -1
  317. package/dist/web/assets/code-highlighter-DRXtndXt.js.br +0 -0
  318. package/dist/web/assets/code-highlighter-DRXtndXt.js.gz +0 -0
  319. package/dist/web/assets/commit-settings-panel-2rAqVa_3.js.br +0 -0
  320. package/dist/web/assets/commit-settings-panel-2rAqVa_3.js.gz +0 -0
  321. package/dist/web/assets/cynefinDiagram-MW4NZA55-a8_N7W-y.js +0 -62
  322. package/dist/web/assets/cynefinDiagram-MW4NZA55-a8_N7W-y.js.br +0 -0
  323. package/dist/web/assets/cynefinDiagram-MW4NZA55-a8_N7W-y.js.gz +0 -0
  324. package/dist/web/assets/diagram-7IWD3JNH-B9Lkv0en.js.br +0 -0
  325. package/dist/web/assets/diagram-7IWD3JNH-B9Lkv0en.js.gz +0 -0
  326. package/dist/web/assets/diagram-B4RE2ZJO-Ct90H1dH.js +0 -3
  327. package/dist/web/assets/diagram-B4RE2ZJO-Ct90H1dH.js.br +0 -0
  328. package/dist/web/assets/diagram-B4RE2ZJO-Ct90H1dH.js.gz +0 -0
  329. package/dist/web/assets/diagram-LBJQPF4R-CL0t6Ia0.js +0 -24
  330. package/dist/web/assets/diagram-LBJQPF4R-CL0t6Ia0.js.br +0 -0
  331. package/dist/web/assets/diagram-LBJQPF4R-CL0t6Ia0.js.gz +0 -0
  332. package/dist/web/assets/diagram-Q27KOJAE-D7QB_48L.js +0 -24
  333. package/dist/web/assets/diagram-Q27KOJAE-D7QB_48L.js.br +0 -0
  334. package/dist/web/assets/diagram-Q27KOJAE-D7QB_48L.js.gz +0 -0
  335. package/dist/web/assets/diagram-UB23O5K3-DV58iDyq.js +0 -41
  336. package/dist/web/assets/diagram-UB23O5K3-DV58iDyq.js.br +0 -0
  337. package/dist/web/assets/diagram-UB23O5K3-DV58iDyq.js.gz +0 -0
  338. package/dist/web/assets/dist-jnof4ZZu.js.br +0 -0
  339. package/dist/web/assets/dist-jnof4ZZu.js.gz +0 -0
  340. package/dist/web/assets/ebnfDiagram-BXEA7PRR-C54Dd_kV.js +0 -1
  341. package/dist/web/assets/ebnfDiagram-BXEA7PRR-C54Dd_kV.js.br +0 -0
  342. package/dist/web/assets/ebnfDiagram-BXEA7PRR-C54Dd_kV.js.gz +0 -0
  343. package/dist/web/assets/erDiagram-JOGREHBK-B83NMJhw.js.br +0 -0
  344. package/dist/web/assets/erDiagram-JOGREHBK-B83NMJhw.js.gz +0 -0
  345. package/dist/web/assets/file-review-dialog-CcxGGOW7.js +0 -2
  346. package/dist/web/assets/file-review-dialog-CcxGGOW7.js.br +0 -0
  347. package/dist/web/assets/file-review-dialog-CcxGGOW7.js.gz +0 -0
  348. package/dist/web/assets/flowDiagram-UKHOOZJN-4x6NyWk2.js.br +0 -2
  349. package/dist/web/assets/flowDiagram-UKHOOZJN-4x6NyWk2.js.gz +0 -0
  350. package/dist/web/assets/git-commit-review-sswj11C9.js +0 -2
  351. package/dist/web/assets/git-commit-review-sswj11C9.js.br +0 -0
  352. package/dist/web/assets/git-commit-review-sswj11C9.js.gz +0 -0
  353. package/dist/web/assets/git-history-panel-rd3E2f9s.js +0 -1
  354. package/dist/web/assets/git-history-panel-rd3E2f9s.js.br +0 -0
  355. package/dist/web/assets/git-history-panel-rd3E2f9s.js.gz +0 -0
  356. package/dist/web/assets/gitGraphDiagram-DS77QQ5N-CuMvIZdK.js +0 -106
  357. package/dist/web/assets/gitGraphDiagram-DS77QQ5N-CuMvIZdK.js.br +0 -0
  358. package/dist/web/assets/gitGraphDiagram-DS77QQ5N-CuMvIZdK.js.gz +0 -0
  359. package/dist/web/assets/global-search-dialog-PwyNRt1N.js +0 -2
  360. package/dist/web/assets/global-search-dialog-PwyNRt1N.js.br +0 -0
  361. package/dist/web/assets/global-search-dialog-PwyNRt1N.js.gz +0 -0
  362. package/dist/web/assets/global-settings-about-QnPZzZuN.js.br +0 -0
  363. package/dist/web/assets/global-settings-about-QnPZzZuN.js.gz +0 -0
  364. package/dist/web/assets/global-settings-page-DYYJnyg0.js +0 -2
  365. package/dist/web/assets/global-settings-page-DYYJnyg0.js.br +0 -0
  366. package/dist/web/assets/global-settings-page-DYYJnyg0.js.gz +0 -0
  367. package/dist/web/assets/global-settings-pets-Bx1MItgn.js.br +0 -0
  368. package/dist/web/assets/global-settings-pets-Bx1MItgn.js.gz +0 -0
  369. package/dist/web/assets/highlighted-body-OFNGDK62-DUyZcQSF.js.br +0 -0
  370. package/dist/web/assets/highlighted-body-OFNGDK62-DUyZcQSF.js.gz +0 -0
  371. package/dist/web/assets/history-task-timeline-7DRGPm6t.js.br +0 -0
  372. package/dist/web/assets/history-task-timeline-7DRGPm6t.js.gz +0 -0
  373. package/dist/web/assets/image-preview-DivFRWxv.js.br +0 -0
  374. package/dist/web/assets/image-preview-DivFRWxv.js.gz +0 -0
  375. package/dist/web/assets/image-preview-content-SHlFPatX.js.br +0 -0
  376. package/dist/web/assets/image-preview-content-SHlFPatX.js.gz +0 -0
  377. package/dist/web/assets/index-BVD-j9ba.css +0 -2
  378. package/dist/web/assets/index-BVD-j9ba.css.br +0 -0
  379. package/dist/web/assets/index-BVD-j9ba.css.gz +0 -0
  380. package/dist/web/assets/index-C-YUvCZy.js +0 -4
  381. package/dist/web/assets/index-C-YUvCZy.js.br +0 -0
  382. package/dist/web/assets/index-C-YUvCZy.js.gz +0 -0
  383. package/dist/web/assets/infoDiagram-6WML65LV-Dudzuljd.js +0 -2
  384. package/dist/web/assets/infoDiagram-6WML65LV-Dudzuljd.js.br +0 -0
  385. package/dist/web/assets/infoDiagram-6WML65LV-Dudzuljd.js.gz +0 -0
  386. package/dist/web/assets/initial-deps-CANa4ch0.js +0 -2
  387. package/dist/web/assets/initial-deps-CANa4ch0.js.br +0 -0
  388. package/dist/web/assets/initial-deps-CANa4ch0.js.gz +0 -0
  389. package/dist/web/assets/initial-deps-CjThEvcM.js.br +0 -0
  390. package/dist/web/assets/installed-skills-pane-xlfIyXj3.js.br +0 -0
  391. package/dist/web/assets/installed-skills-pane-xlfIyXj3.js.gz +0 -0
  392. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-DL-EqtUw.js.br +0 -0
  393. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-DL-EqtUw.js.gz +0 -0
  394. package/dist/web/assets/kanban-definition-27J2QSJJ-C2eEzeXr.js.br +0 -0
  395. package/dist/web/assets/kanban-definition-27J2QSJJ-C2eEzeXr.js.gz +0 -0
  396. package/dist/web/assets/lazy-message-response-BHNzFjnC.js +0 -2
  397. package/dist/web/assets/lazy-message-response-BHNzFjnC.js.br +0 -0
  398. package/dist/web/assets/lazy-message-response-BHNzFjnC.js.gz +0 -0
  399. package/dist/web/assets/mcp-management-pane-DkGnQLeq.js.br +0 -0
  400. package/dist/web/assets/mcp-management-pane-DkGnQLeq.js.gz +0 -0
  401. package/dist/web/assets/mermaid-GHXKKRXX-D8qgMyDU.js +0 -1
  402. package/dist/web/assets/mermaid-GHXKKRXX-D8qgMyDU.js.br +0 -0
  403. package/dist/web/assets/mermaid-GHXKKRXX-D8qgMyDU.js.gz +0 -0
  404. package/dist/web/assets/message-response-Cmz2Diu3.js +0 -188
  405. package/dist/web/assets/message-response-Cmz2Diu3.js.br +0 -0
  406. package/dist/web/assets/message-response-Cmz2Diu3.js.gz +0 -0
  407. package/dist/web/assets/mindmap-definition-FAOFIHXS-BYjrCygr.js.br +0 -0
  408. package/dist/web/assets/official-plugins-pane-DAdYsWfC.js.br +0 -0
  409. package/dist/web/assets/official-plugins-pane-DAdYsWfC.js.gz +0 -0
  410. package/dist/web/assets/patch-diff-viewer-xS0oLx5O.js.br +0 -0
  411. package/dist/web/assets/patch-diff-viewer-xS0oLx5O.js.gz +0 -0
  412. package/dist/web/assets/pegDiagram-VL7TDLO6-CtYRxL4U.js +0 -1
  413. package/dist/web/assets/pegDiagram-VL7TDLO6-CtYRxL4U.js.br +0 -0
  414. package/dist/web/assets/pegDiagram-VL7TDLO6-CtYRxL4U.js.gz +0 -0
  415. package/dist/web/assets/personalization-settings-panel-CT3SQ4Vu.js.br +0 -0
  416. package/dist/web/assets/personalization-settings-panel-CT3SQ4Vu.js.gz +0 -0
  417. package/dist/web/assets/pieDiagram-7S7Q4E2Y-Bdq2vyip.js +0 -39
  418. package/dist/web/assets/pieDiagram-7S7Q4E2Y-Bdq2vyip.js.br +0 -0
  419. package/dist/web/assets/pieDiagram-7S7Q4E2Y-Bdq2vyip.js.gz +0 -0
  420. package/dist/web/assets/project-file-popup-page-zPj3Gecj.js.br +0 -0
  421. package/dist/web/assets/project-file-popup-page-zPj3Gecj.js.gz +0 -0
  422. package/dist/web/assets/project-source-panel-DMqwrWYJ.js +0 -3
  423. package/dist/web/assets/project-source-panel-DMqwrWYJ.js.br +0 -0
  424. package/dist/web/assets/project-source-panel-DMqwrWYJ.js.gz +0 -0
  425. package/dist/web/assets/prompt-input-HHHMHdzj.js.br +0 -0
  426. package/dist/web/assets/prompt-input-HHHMHdzj.js.gz +0 -0
  427. package/dist/web/assets/prompt-reference-token-BW8a7fO2.js +0 -3
  428. package/dist/web/assets/prompt-reference-token-BW8a7fO2.js.br +0 -0
  429. package/dist/web/assets/prompt-reference-token-BW8a7fO2.js.gz +0 -0
  430. package/dist/web/assets/railroadDiagram-AXF67PYL-C_xKQjH6.js +0 -1
  431. package/dist/web/assets/railroadDiagram-AXF67PYL-C_xKQjH6.js.br +0 -0
  432. package/dist/web/assets/railroadDiagram-AXF67PYL-C_xKQjH6.js.gz +0 -0
  433. package/dist/web/assets/requirementDiagram-LRYGKXZP-B9-6SM38.js.br +0 -0
  434. package/dist/web/assets/requirementDiagram-LRYGKXZP-B9-6SM38.js.gz +0 -0
  435. package/dist/web/assets/scheduled-task-date-time-picker-DtFk2PIk.js.br +0 -0
  436. package/dist/web/assets/scheduled-task-date-time-picker-DtFk2PIk.js.gz +0 -0
  437. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js.br +0 -0
  438. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js.gz +0 -0
  439. package/dist/web/assets/scheduled-tasks-container-CkXA7caR.js +0 -2
  440. package/dist/web/assets/scheduled-tasks-container-CkXA7caR.js.br +0 -0
  441. package/dist/web/assets/scheduled-tasks-container-CkXA7caR.js.gz +0 -0
  442. package/dist/web/assets/sequenceDiagram-SI44F4Z6-DS13cFp5.js.br +0 -0
  443. package/dist/web/assets/sequenceDiagram-SI44F4Z6-DS13cFp5.js.gz +0 -0
  444. package/dist/web/assets/sheet-Byg2gkAE.js.br +0 -0
  445. package/dist/web/assets/sheet-Byg2gkAE.js.gz +0 -0
  446. package/dist/web/assets/shiki-bundle-CLewxArG.js.br +0 -3
  447. package/dist/web/assets/shiki-bundle-CLewxArG.js.gz +0 -0
  448. package/dist/web/assets/skills-market-container-BQkCE5hm.js +0 -2
  449. package/dist/web/assets/skills-market-container-BQkCE5hm.js.br +0 -0
  450. package/dist/web/assets/skills-market-container-BQkCE5hm.js.gz +0 -0
  451. package/dist/web/assets/snapshot-memory-BU8oqjvK.js +0 -1
  452. package/dist/web/assets/snapshot-memory-BU8oqjvK.js.br +0 -0
  453. package/dist/web/assets/snapshot-memory-BU8oqjvK.js.gz +0 -0
  454. package/dist/web/assets/split-workspace-menu-content-6G08udT3.js +0 -1
  455. package/dist/web/assets/split-workspace-menu-content-6G08udT3.js.br +0 -0
  456. package/dist/web/assets/split-workspace-menu-content-6G08udT3.js.gz +0 -0
  457. package/dist/web/assets/stateDiagram-OKZ733FA-Dc16lzBR.js +0 -1
  458. package/dist/web/assets/stateDiagram-OKZ733FA-Dc16lzBR.js.br +0 -0
  459. package/dist/web/assets/stateDiagram-OKZ733FA-Dc16lzBR.js.gz +0 -0
  460. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DMpPTWm4.js +0 -1
  461. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DMpPTWm4.js.br +0 -0
  462. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DMpPTWm4.js.gz +0 -0
  463. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BFGAe9px.js.br +0 -0
  464. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BFGAe9px.js.gz +0 -0
  465. package/dist/web/assets/third-party-marketplace-pane-Bt9mm_bV.js.br +0 -0
  466. package/dist/web/assets/third-party-marketplace-pane-Bt9mm_bV.js.gz +0 -0
  467. package/dist/web/assets/timeline-definition-Z64GVDOM-B-ybp4wL.js.br +0 -0
  468. package/dist/web/assets/timeline-definition-Z64GVDOM-B-ybp4wL.js.gz +0 -0
  469. package/dist/web/assets/vennDiagram-T6HMQDX7-Du4Kq6DY.js.br +0 -0
  470. package/dist/web/assets/vennDiagram-T6HMQDX7-Du4Kq6DY.js.gz +0 -0
  471. package/dist/web/assets/wardleyDiagram-T6FBY63Y-Dn8N9v_V.js.br +0 -0
  472. package/dist/web/assets/wardleyDiagram-T6FBY63Y-Dn8N9v_V.js.gz +0 -0
  473. package/dist/web/assets/workbench-inspector-changes-Bz2Q8-Uy.js +0 -2
  474. package/dist/web/assets/workbench-inspector-changes-Bz2Q8-Uy.js.br +0 -0
  475. package/dist/web/assets/workbench-inspector-changes-Bz2Q8-Uy.js.gz +0 -0
  476. package/dist/web/assets/workbench-pet-canvas-CEcRG47k.js.br +0 -0
  477. package/dist/web/assets/workbench-pet-canvas-CEcRG47k.js.gz +0 -0
  478. package/dist/web/assets/workbench-shell-D01RgKwg.js +0 -14
  479. package/dist/web/assets/workbench-shell-D01RgKwg.js.br +0 -0
  480. package/dist/web/assets/workbench-shell-D01RgKwg.js.gz +0 -0
  481. package/dist/web/assets/xychartDiagram-ELKLHX3M-BUDqP7n9.js.br +0 -0
  482. package/dist/web/assets/xychartDiagram-ELKLHX3M-BUDqP7n9.js.gz +0 -0
  483. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-source~c6tt9j64-ClgveiMa.js} +0 -0
  484. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js.br → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-source~c6tt9j64-ClgveiMa.js.br} +0 -0
  485. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js.gz → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-source~c6tt9j64-ClgveiMa.js.gz} +0 -0
@@ -1,601 +1,78 @@
1
- import { createRequire } from 'node:module';
2
- import './chunk-K6J42667.js';
3
- import { mkdirSync } from 'fs';
4
- import { resolve } from 'path';
5
- import { workerData, parentPort } from 'worker_threads';
6
- import Database from 'better-sqlite3';
7
-
8
- createRequire(import.meta.url);
9
-
10
- // packages/server/src/approval-policy-persistence.js
11
- var GRANULAR_FIELDS = [
12
- "mcp_elicitations",
13
- "request_permissions",
14
- "rules",
15
- "sandbox_approval",
16
- "skill_approval"
17
- ];
18
- function parseGranularApprovalPolicy(value) {
19
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
20
- throw new Error("Stored approval policy is invalid");
21
- }
22
- const outerKeys = Object.keys(value);
23
- const granular = value.granular;
24
- if (outerKeys.length !== 1 || outerKeys[0] !== "granular" || typeof granular !== "object" || granular === null || Array.isArray(granular) || Object.keys(granular).length !== GRANULAR_FIELDS.length || GRANULAR_FIELDS.some((field) => typeof granular[field] !== "boolean")) {
25
- throw new Error("Stored granular approval policy is invalid");
26
- }
27
- return { granular: Object.fromEntries(GRANULAR_FIELDS.map((field) => [field, granular[field]])) };
28
- }
29
- function deserializeApprovalPolicy(serialized, scope) {
30
- if (serialized === "on-request" || serialized === "never") {
31
- return serialized;
32
- }
33
- if (scope === "turn" && serialized === "untrusted") {
34
- return serialized;
35
- }
36
- if (typeof serialized !== "string" || !serialized.startsWith("{")) {
37
- throw new Error(`Stored ${scope} approval policy is invalid`);
38
- }
39
- try {
40
- return parseGranularApprovalPolicy(JSON.parse(serialized));
41
- } catch (error) {
42
- if (error instanceof SyntaxError) {
43
- throw new Error(`Stored ${scope} approval policy JSON is invalid`, { cause: error });
44
- }
45
- throw error;
46
- }
47
- }
48
- function serializeApprovalPolicy(policy) {
49
- return typeof policy === "string" ? policy : JSON.stringify(parseGranularApprovalPolicy(policy));
50
- }
51
-
52
- // packages/server/src/sqlite-state-worker-bootstrap.js
53
- function projectFromRows(row, rootRows) {
54
- if (row === void 0) {
55
- return void 0;
56
- }
57
- const roots = rootRows.map((root) => ({ id: root.root_id, path: root.path }));
58
- if (roots.length === 0) {
59
- throw new Error(`Project ${row.id} has no stored roots`);
60
- }
61
- return {
62
- createdAt: row.created_at,
63
- id: row.id,
64
- name: row.name,
65
- roots
66
- };
67
- }
68
- function projectsFromRows(projectRows, rootRows) {
69
- const rootsByProject = /* @__PURE__ */ new Map();
70
- for (const root of rootRows) {
71
- const roots = rootsByProject.get(root.project_id) ?? [];
72
- roots.push(root);
73
- rootsByProject.set(root.project_id, roots);
74
- }
75
- return projectRows.map(
76
- (project) => projectFromRows(project, rootsByProject.get(project.id) ?? [])
77
- );
78
- }
79
- function projectDefaultsFromRow(row) {
80
- if (row === void 0) {
81
- return void 0;
82
- }
83
- return {
84
- approvalPolicy: deserializeApprovalPolicy(row.approval_policy, "turn"),
85
- approvalsReviewer: row.approvals_reviewer,
86
- fastMode: row.fast_mode === 1,
87
- model: row.model,
88
- reasoningEffort: row.reasoning_effort,
89
- sandboxMode: row.sandbox_mode
90
- };
91
- }
92
- function taskSettingsFromRow(row) {
93
- if (row === void 0) {
94
- return void 0;
95
- }
96
- return {
97
- approvalPolicy: deserializeApprovalPolicy(row.approval_policy, "turn"),
98
- approvalsReviewer: row.approvals_reviewer,
99
- model: row.model,
100
- reasoningEffort: row.reasoning_effort,
101
- sandboxMode: row.sandbox_mode
102
- };
103
- }
104
- function globalSettingsFromRow(row) {
105
- if (row === void 0) {
106
- return void 0;
107
- }
108
- return {
109
- approvalPolicy: deserializeApprovalPolicy(row.approval_policy, "global"),
110
- approvalsReviewer: row.approvals_reviewer,
111
- commitMessageModel: row.commit_message_model,
112
- commitMessagePrompt: row.commit_message_prompt,
113
- defaultOpenAppId: row.default_open_app_id,
114
- fastMode: row.fast_mode === 1,
115
- followUpBehavior: row.follow_up_behavior,
116
- model: row.model,
117
- pet: { enabled: row.pet_enabled === 1, selectedPetId: row.pet_id },
118
- reasoningEffort: row.reasoning_effort,
119
- sandboxMode: row.sandbox_mode
120
- };
121
- }
122
- function providerConnectionFromRow(row) {
123
- if (row === void 0) {
124
- return void 0;
125
- }
126
- return {
127
- customBaseUrl: row.custom_base_url,
128
- customModelsJson: row.custom_models_json,
129
- mode: row.mode,
130
- updatedAt: row.updated_at
131
- };
132
- }
133
- function hasTable(database2, tableName) {
134
- return database2.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?").get(tableName) !== void 0;
135
- }
136
- function configureDatabase(database2) {
137
- database2.pragma("journal_mode = WAL");
138
- database2.pragma("foreign_keys = ON");
139
- database2.pragma("synchronous = NORMAL");
140
- database2.pragma("busy_timeout = 5000");
141
- }
142
- function readMigrationVersion(database2) {
143
- if (!hasTable(database2, "schema_migrations")) {
144
- return 0;
145
- }
146
- return database2.prepare("SELECT COALESCE(MAX(version), 0) AS version FROM schema_migrations").get().version;
147
- }
148
- function runMigrations(database2, migrations, onMigrationApplied = () => {
149
- }) {
150
- database2.exec(`
1
+ import {createRequire}from'node:module';import'./chunk-YXJGRSCL.js';import {mkdirSync}from'fs';import {resolve}from'path';import {workerData,parentPort}from'worker_threads';import G from'better-sqlite3';createRequire(import.meta.url);
2
+ var v=["mcp_elicitations","request_permissions","rules","sandbox_approval","skill_approval"];function k(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Stored approval policy is invalid");let s=Object.keys(e),n=e.granular;if(s.length!==1||s[0]!=="granular"||typeof n!="object"||n===null||Array.isArray(n)||Object.keys(n).length!==v.length||v.some(o=>typeof n[o]!="boolean"))throw new Error("Stored granular approval policy is invalid");return {granular:Object.fromEntries(v.map(o=>[o,n[o]]))}}function S(e,s){if(e==="on-request"||e==="never"||s==="turn"&&e==="untrusted")return e;if(typeof e!="string"||!e.startsWith("{"))throw new Error(`Stored ${s} approval policy is invalid`);try{return k(JSON.parse(e))}catch(n){throw n instanceof SyntaxError?new Error(`Stored ${s} approval policy JSON is invalid`,{cause:n}):n}}function R(e){return typeof e=="string"?e:JSON.stringify(k(e))}function h(e,s){if(e===void 0)return;let n=s.map(o=>({id:o.root_id,path:o.path}));if(n.length===0)throw new Error(`Project ${e.id} has no stored roots`);return {createdAt:e.created_at,id:e.id,name:e.name,roots:n}}function I(e,s){let n=new Map;for(let o of s){let a=n.get(o.project_id)??[];a.push(o),n.set(o.project_id,a);}return e.map(o=>h(o,n.get(o.id)??[]))}function L(e){if(e!==void 0)return {approvalPolicy:S(e.approval_policy,"turn"),approvalsReviewer:e.approvals_reviewer,fastMode:e.fast_mode===1,model:e.model,reasoningEffort:e.reasoning_effort,sandboxMode:e.sandbox_mode}}function P(e){if(e!==void 0)return {approvalPolicy:S(e.approval_policy,"turn"),approvalsReviewer:e.approvals_reviewer,model:e.model,reasoningEffort:e.reasoning_effort,sandboxMode:e.sandbox_mode}}function D(e){if(e!==void 0)return {approvalPolicy:S(e.approval_policy,"global"),approvalsReviewer:e.approvals_reviewer,commitMessageModel:e.commit_message_model,commitMessagePrompt:e.commit_message_prompt,modelContextWindow:null,defaultOpenAppId:e.default_open_app_id,fastMode:e.fast_mode===1,followUpBehavior:e.follow_up_behavior,model:e.model,pet:{enabled:e.pet_enabled===1,selectedPetId:e.pet_id},reasoningEffort:e.reasoning_effort,sandboxMode:e.sandbox_mode}}function w(e){if(e!==void 0)return {customBaseUrl:e.custom_base_url,customModelsJson:e.custom_models_json,mode:e.mode,updatedAt:e.updated_at}}function T(e,s){return e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?").get(s)!==void 0}function M(e){e.pragma("journal_mode = WAL"),e.pragma("foreign_keys = ON"),e.pragma("synchronous = NORMAL"),e.pragma("busy_timeout = 5000");}function C(e){return T(e,"schema_migrations")?e.prepare("SELECT COALESCE(MAX(version), 0) AS version FROM schema_migrations").get().version:0}function y(e,s,n=()=>{}){e.exec(`
151
3
  CREATE TABLE IF NOT EXISTS schema_migrations (
152
4
  version INTEGER PRIMARY KEY,
153
5
  name TEXT NOT NULL,
154
6
  applied_at TEXT NOT NULL
155
7
  ) STRICT;
156
- `);
157
- const applied = new Set(
158
- database2.prepare("SELECT version FROM schema_migrations").all().map((row) => row.version)
159
- );
160
- let previousVersion = 0;
161
- for (const migration of migrations) {
162
- if (!Number.isInteger(migration.version) || migration.version <= previousVersion || typeof migration.name !== "string" || typeof migration.sql !== "string") {
163
- throw new Error("Invalid SQLite migration definition");
164
- }
165
- previousVersion = migration.version;
166
- if (applied.has(migration.version)) {
167
- continue;
168
- }
169
- database2.transaction(() => {
170
- database2.exec(migration.sql);
171
- onMigrationApplied(migration.version);
172
- database2.prepare("INSERT INTO schema_migrations (version, name, applied_at) VALUES (?, ?, ?)").run(migration.version, migration.name, (/* @__PURE__ */ new Date()).toISOString());
173
- })();
174
- }
175
- }
176
- function initializeProjectSourceMigration(database2, previousMigrationVersion) {
177
- if (!hasTable(database2, "project_source_migration")) {
178
- return;
179
- }
180
- database2.prepare(
181
- `INSERT OR IGNORE INTO project_source_migration
182
- (id, completed, recover_unassigned) VALUES (1, 0, ?)`
183
- ).run(previousMigrationVersion === 14 ? 1 : 0);
184
- }
185
- function ensureGlobalSettingsCompatibility(database2) {
186
- if (!hasTable(database2, "global_settings")) {
187
- return;
188
- }
189
- const columns = new Set(
190
- database2.prepare("PRAGMA table_info(global_settings)").all().map((column) => column.name)
191
- );
192
- database2.transaction(() => {
193
- if (!columns.has("fast_mode")) {
194
- database2.exec(`
8
+ `);let o=new Set(e.prepare("SELECT version FROM schema_migrations").all().map(i=>i.version)),a=0;for(let i of s){if(!Number.isInteger(i.version)||i.version<=a||typeof i.name!="string"||typeof i.sql!="string")throw new Error("Invalid SQLite migration definition");a=i.version,!o.has(i.version)&&e.transaction(()=>{e.exec(i.sql),n(i.version),e.prepare("INSERT INTO schema_migrations (version, name, applied_at) VALUES (?, ?, ?)").run(i.version,i.name,new Date().toISOString());})();}}function A(e,s){T(e,"project_source_migration")&&e.prepare(`INSERT OR IGNORE INTO project_source_migration
9
+ (id, completed, recover_unassigned) VALUES (1, 0, ?)`).run(s===14?1:0);}function F(e){if(!T(e,"global_settings"))return;let s=new Set(e.prepare("PRAGMA table_info(global_settings)").all().map(n=>n.name));e.transaction(()=>{s.has("fast_mode")||e.exec(`
195
10
  ALTER TABLE global_settings
196
11
  ADD COLUMN fast_mode INTEGER NOT NULL DEFAULT 0
197
12
  CHECK (fast_mode IN (0, 1));
198
- `);
199
- }
200
- if (!columns.has("commit_message_reasoning_effort")) {
201
- database2.exec(`
13
+ `),s.has("commit_message_reasoning_effort")||e.exec(`
202
14
  ALTER TABLE global_settings
203
15
  ADD COLUMN commit_message_reasoning_effort TEXT NOT NULL DEFAULT '';
204
16
  UPDATE global_settings
205
17
  SET commit_message_reasoning_effort = reasoning_effort;
206
- `);
207
- }
208
- if (!columns.has("pet_enabled")) {
209
- database2.exec(`
18
+ `),s.has("pet_enabled")||e.exec(`
210
19
  ALTER TABLE global_settings
211
20
  ADD COLUMN pet_enabled INTEGER NOT NULL DEFAULT 0
212
21
  CHECK (pet_enabled IN (0, 1));
213
- `);
214
- }
215
- if (!columns.has("pet_id")) {
216
- database2.exec("ALTER TABLE global_settings ADD COLUMN pet_id TEXT;");
217
- }
218
- })();
219
- }
220
-
221
- // packages/server/src/sqlite-task-queue-worker.js
222
- function queueRecord(row) {
223
- return {
224
- clientUserMessageId: row.client_user_message_id,
225
- id: row.id,
226
- inputJson: row.input_json,
227
- projectId: row.project_id,
228
- status: row.status,
229
- taskId: row.task_id,
230
- ...row.execution_json === null ? {} : { executionJson: row.execution_json }
231
- };
232
- }
233
- function createTaskQueueOperations(database2) {
234
- let statements;
235
- const getStatements = () => {
236
- if (statements !== void 0) return statements;
237
- const list = database2.prepare(`
22
+ `),s.has("pet_id")||e.exec("ALTER TABLE global_settings ADD COLUMN pet_id TEXT;");})();}function N(e){return {clientUserMessageId:e.client_user_message_id,id:e.id,inputJson:e.input_json,projectId:e.project_id,status:e.status,taskId:e.task_id,...e.execution_json===null?{}:{executionJson:e.execution_json}}}function U(e){let s,n=()=>{if(s!==void 0)return s;let o=e.prepare(`
238
23
  SELECT project_id, task_id, id, client_user_message_id, input_json, status, execution_json
239
24
  FROM task_queue WHERE project_id = ? AND task_id = ? ORDER BY position
240
- `);
241
- const move = database2.prepare(
242
- "UPDATE task_queue SET position = ? WHERE project_id = ? AND task_id = ? AND id = ?"
243
- );
244
- const reorder = database2.transaction((projectId, taskId, queuedSubmissionIds) => {
245
- const currentIds = list.all(projectId, taskId).map((row) => row.id);
246
- const requestedIds = new Set(queuedSubmissionIds);
247
- if (currentIds.length !== queuedSubmissionIds.length || requestedIds.size !== currentIds.length || currentIds.some((id) => !requestedIds.has(id))) {
248
- throw new Error("Task queue order must contain every queued submission exactly once");
249
- }
250
- queuedSubmissionIds.forEach((id, index) => move.run(-index - 1, projectId, taskId, id));
251
- queuedSubmissionIds.forEach((id, index) => move.run(index, projectId, taskId, id));
252
- });
253
- statements = {
254
- insert: database2.prepare(`
25
+ `),a=e.prepare("UPDATE task_queue SET position = ? WHERE project_id = ? AND task_id = ? AND id = ?"),i=e.transaction((c,_,d)=>{let u=o.all(c,_).map(t=>t.id),r=new Set(d);if(u.length!==d.length||r.size!==u.length||u.some(t=>!r.has(t)))throw new Error("Task queue order must contain every queued submission exactly once");d.forEach((t,p)=>a.run(-p-1,c,_,t)),d.forEach((t,p)=>a.run(p,c,_,t));});return s={insert:e.prepare(`
255
26
  INSERT INTO task_queue (
256
27
  project_id, task_id, id, client_user_message_id, input_json, status, position, updated_at, execution_json
257
28
  ) VALUES (?, ?, ?, ?, ?, ?, (
258
29
  SELECT COALESCE(MAX(position) + 1, 0)
259
30
  FROM task_queue WHERE project_id = ? AND task_id = ?
260
31
  ), ?, ?)
261
- `),
262
- list,
263
- remove: database2.prepare(
264
- "DELETE FROM task_queue WHERE project_id = ? AND task_id = ? AND id = ?"
265
- ),
266
- reorder,
267
- update: database2.prepare(`
32
+ `),list:o,remove:e.prepare("DELETE FROM task_queue WHERE project_id = ? AND task_id = ? AND id = ?"),reorder:i,update:e.prepare(`
268
33
  UPDATE task_queue SET input_json = ?, status = ?, updated_at = ?
269
34
  WHERE project_id = ? AND task_id = ? AND id = ? AND execution_json IS NULL
270
- `),
271
- execution: database2.prepare(`
35
+ `),execution:e.prepare(`
272
36
  UPDATE task_queue SET execution_json = ?
273
37
  WHERE project_id = ? AND task_id = ? AND id = ?
274
38
  AND (? = 0 OR (execution_json IS NULL AND status = 'queued'))
275
- `)
276
- };
277
- return statements;
278
- };
279
- return {
280
- setTaskQueueExecution(payload) {
281
- const { execution } = getStatements();
282
- return execution.run(
283
- payload.executionJson,
284
- payload.projectId,
285
- payload.taskId,
286
- payload.id,
287
- payload.claim ? 1 : 0
288
- ).changes > 0;
289
- },
290
- addTaskQueueRecord(payload) {
291
- const { insert, list } = getStatements();
292
- insert.run(
293
- payload.projectId,
294
- payload.taskId,
295
- payload.id,
296
- payload.clientUserMessageId,
297
- payload.inputJson,
298
- payload.status,
299
- payload.projectId,
300
- payload.taskId,
301
- payload.updatedAt,
302
- payload.execution === void 0 ? null : JSON.stringify(payload.execution)
303
- );
304
- return list.all(payload.projectId, payload.taskId).map(queueRecord).find((record) => record.id === payload.id);
305
- },
306
- deleteTaskQueueRecord(payload) {
307
- const { remove } = getStatements();
308
- return remove.run(payload.projectId, payload.taskId, payload.queuedSubmissionId).changes > 0;
309
- },
310
- listTaskQueueRecords(payload) {
311
- const { list } = getStatements();
312
- return list.all(payload.projectId, payload.taskId).map(queueRecord);
313
- },
314
- reorderTaskQueueRecords(payload) {
315
- const { reorder } = getStatements();
316
- reorder(payload.projectId, payload.taskId, payload.queuedSubmissionIds);
317
- return null;
318
- },
319
- updateTaskQueueRecord(payload) {
320
- const { list, update } = getStatements();
321
- const changed = update.run(
322
- payload.inputJson,
323
- payload.status,
324
- payload.updatedAt,
325
- payload.projectId,
326
- payload.taskId,
327
- payload.queuedSubmissionId
328
- ).changes;
329
- if (changed === 0) return void 0;
330
- return list.all(payload.projectId, payload.taskId).map(queueRecord).find((record) => record.id === payload.queuedSubmissionId);
331
- }
332
- };
333
- }
334
-
335
- // packages/server/src/sqlite-state-worker-scheduled-tasks.js
336
- function createScheduledTaskOperations(database2) {
337
- const available = database2.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?").get("scheduled_task_state");
338
- if (available === void 0) return {};
339
- const read = database2.prepare("SELECT tasks_json FROM scheduled_task_state WHERE id = 1");
340
- const write = database2.prepare(`
39
+ `)},s};return {setTaskQueueExecution(o){let{execution:a}=n();return a.run(o.executionJson,o.projectId,o.taskId,o.id,o.claim?1:0).changes>0},addTaskQueueRecord(o){let{insert:a,list:i}=n();return a.run(o.projectId,o.taskId,o.id,o.clientUserMessageId,o.inputJson,o.status,o.projectId,o.taskId,o.updatedAt,o.execution===void 0?null:JSON.stringify(o.execution)),i.all(o.projectId,o.taskId).map(N).find(c=>c.id===o.id)},deleteTaskQueueRecord(o){let{remove:a}=n();return a.run(o.projectId,o.taskId,o.queuedSubmissionId).changes>0},listTaskQueueRecords(o){let{list:a}=n();return a.all(o.projectId,o.taskId).map(N)},reorderTaskQueueRecords(o){let{reorder:a}=n();return a(o.projectId,o.taskId,o.queuedSubmissionIds),null},updateTaskQueueRecord(o){let{list:a,update:i}=n();if(i.run(o.inputJson,o.status,o.updatedAt,o.projectId,o.taskId,o.queuedSubmissionId).changes!==0)return a.all(o.projectId,o.taskId).map(N).find(_=>_.id===o.queuedSubmissionId)}}}function W(e){if(e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?").get("scheduled_task_state")===void 0)return {};let n=e.prepare("SELECT tasks_json FROM scheduled_task_state WHERE id = 1"),o=e.prepare(`
341
40
  INSERT INTO scheduled_task_state (id, tasks_json) VALUES (1, ?)
342
41
  ON CONFLICT(id) DO UPDATE SET tasks_json = excluded.tasks_json
343
- `);
344
- const deleteAttachments = database2.prepare(
345
- "DELETE FROM scheduled_task_attachments WHERE task_id = ?"
346
- );
347
- const insertAttachment = database2.prepare(`
42
+ `),a=e.prepare("DELETE FROM scheduled_task_attachments WHERE task_id = ?"),i=e.prepare(`
348
43
  INSERT INTO scheduled_task_attachments (
349
44
  task_id, attachment_id, project_id, kind, media_type, name, size, content
350
45
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
351
- `);
352
- const listAttachments = database2.prepare(
353
- "SELECT * FROM scheduled_task_attachments WHERE task_id = ? ORDER BY attachment_id"
354
- );
355
- const readAttachment = database2.prepare(`
46
+ `),c=e.prepare("SELECT * FROM scheduled_task_attachments WHERE task_id = ? ORDER BY attachment_id"),_=e.prepare(`
356
47
  SELECT * FROM scheduled_task_attachments
357
48
  WHERE project_id = ? AND attachment_id = ?
358
49
  LIMIT 1
359
- `);
360
- const removeOrphanAttachments = database2.prepare(`
50
+ `),d=e.prepare(`
361
51
  DELETE FROM scheduled_task_attachments
362
52
  WHERE task_id NOT IN (SELECT json_extract(value, '$.id') FROM json_each(?))
363
- `);
364
- const replaceAttachments = (payload) => {
365
- deleteAttachments.run(payload.taskId);
366
- for (const item of payload.attachments) {
367
- insertAttachment.run(
368
- payload.taskId,
369
- item.attachment.id,
370
- payload.projectId,
371
- item.attachment.kind,
372
- item.attachment.mediaType,
373
- item.attachment.name,
374
- item.attachment.size,
375
- item.content
376
- );
377
- }
378
- };
379
- const writeTasks = database2.transaction((payload) => {
380
- write.run(payload.tasksJson);
381
- if (payload.attachments !== void 0) replaceAttachments(payload.attachments);
382
- removeOrphanAttachments.run(payload.tasksJson);
383
- });
384
- return {
385
- listScheduledTaskAttachments(payload) {
386
- return listAttachments.all(payload.taskId);
387
- },
388
- readScheduledTasks() {
389
- return read.get()?.tasks_json ?? "[]";
390
- },
391
- readScheduledTaskAttachment(payload) {
392
- return readAttachment.get(payload.projectId, payload.attachmentId);
393
- },
394
- writeScheduledTasks(payload) {
395
- writeTasks(payload);
396
- return null;
397
- }
398
- };
399
- }
400
-
401
- // packages/server/src/sqlite-submission-worker.js
402
- function createSubmissionOperations(database2) {
403
- if (!database2.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'task_submissions'").get())
404
- return {};
405
- const read = database2.prepare(
406
- "SELECT record_json FROM task_submissions WHERE project_id = ? AND submission_key = ?"
407
- );
408
- const count = database2.prepare("SELECT COUNT(*) AS count FROM task_submissions");
409
- const prune = database2.prepare(
410
- "DELETE FROM task_submissions WHERE completed = 1 AND updated_at < ?"
411
- );
412
- const write = database2.prepare(`INSERT INTO task_submissions (project_id, submission_key, record_json, completed, updated_at)
53
+ `),u=t=>{a.run(t.taskId);for(let p of t.attachments)i.run(t.taskId,p.attachment.id,t.projectId,p.attachment.kind,p.attachment.mediaType,p.attachment.name,p.attachment.size,p.content);},r=e.transaction(t=>{o.run(t.tasksJson),t.attachments!==void 0&&u(t.attachments),d.run(t.tasksJson);});return {listScheduledTaskAttachments(t){return c.all(t.taskId)},readScheduledTasks(){return n.get()?.tasks_json??"[]"},readScheduledTaskAttachment(t){return _.get(t.projectId,t.attachmentId)},writeScheduledTasks(t){return r(t),null}}}function H(e){if(!e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'task_submissions'").get())return {};let s=e.prepare("SELECT record_json FROM task_submissions WHERE project_id = ? AND submission_key = ?"),n=e.prepare("SELECT COUNT(*) AS count FROM task_submissions"),o=e.prepare("DELETE FROM task_submissions WHERE completed = 1 AND updated_at < ?"),a=e.prepare(`INSERT INTO task_submissions (project_id, submission_key, record_json, completed, updated_at)
413
54
  VALUES (?, ?, ?, ?, ?) ON CONFLICT(project_id, submission_key) DO UPDATE SET
414
- record_json = excluded.record_json, completed = excluded.completed, updated_at = excluded.updated_at`);
415
- return {
416
- readSubmission({ projectId, key }) {
417
- return read.get(projectId, key)?.record_json;
418
- },
419
- writeSubmission: database2.transaction(({ projectId, key, recordJson, completed }) => {
420
- const now = Date.now();
421
- prune.run(now - 7 * 24 * 60 * 60 * 1e3);
422
- if (!read.get(projectId, key) && count.get().count >= 1e4)
423
- throw new Error("Submission recovery capacity is exhausted");
424
- write.run(projectId, key, recordJson, completed ? 1 : 0, now);
425
- return null;
426
- })
427
- };
428
- }
429
-
430
- // packages/server/src/sqlite-project-todo-worker.js
431
- function createProjectTodoOperations(database2) {
432
- if (!database2.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'project_todos'").get())
433
- return {};
434
- const list = database2.prepare(
435
- "SELECT record_json FROM project_todos WHERE project_id = ? ORDER BY updated_at DESC, id"
436
- );
437
- const read = database2.prepare(
438
- "SELECT version FROM project_todos WHERE project_id = ? AND id = ?"
439
- );
440
- const write = database2.prepare(`INSERT INTO project_todos (project_id, id, version, updated_at, record_json) VALUES (?, ?, ?, ?, ?)
441
- ON CONFLICT(project_id, id) DO UPDATE SET version = excluded.version, updated_at = excluded.updated_at, record_json = excluded.record_json`);
442
- const remove = database2.prepare("DELETE FROM project_todos WHERE project_id = ? AND id = ?");
443
- const removeAttachments = database2.prepare(
444
- "DELETE FROM project_todo_attachments WHERE project_id = ? AND todo_id = ?"
445
- );
446
- const writeAttachment = database2.prepare(
447
- "INSERT INTO project_todo_attachments (project_id, todo_id, attachment_id, metadata, content) VALUES (?, ?, ?, ?, ?)"
448
- );
449
- const readAttachment = database2.prepare(
450
- "SELECT metadata, content FROM project_todo_attachments WHERE project_id = ? AND attachment_id = ? LIMIT 1"
451
- );
452
- return {
453
- listProjectTodos: ({ projectId }) => list.all(projectId).map((row) => row.record_json),
454
- readProjectTodoAttachment: ({ projectId, attachmentId }) => readAttachment.get(projectId, attachmentId),
455
- saveProjectTodo: database2.transaction(({ todo, expectedVersion, attachments }) => {
456
- if ((read.get(todo.projectId, todo.id)?.version ?? null) !== expectedVersion) return false;
457
- if (expectedVersion === null && list.all(todo.projectId).length >= 1e3)
458
- throw new Error("Project todo capacity is exhausted");
459
- write.run(todo.projectId, todo.id, todo.version, todo.updatedAt, JSON.stringify(todo));
460
- removeAttachments.run(todo.projectId, todo.id);
461
- for (const { attachment, content } of attachments)
462
- writeAttachment.run(
463
- todo.projectId,
464
- todo.id,
465
- attachment.id,
466
- JSON.stringify(attachment),
467
- content
468
- );
469
- return true;
470
- }),
471
- deleteProjectTodo: database2.transaction(({ projectId, todoId, expectedVersion }) => {
472
- const current = read.get(projectId, todoId);
473
- if (current === void 0) return false;
474
- if (current.version !== expectedVersion) return null;
475
- remove.run(projectId, todoId);
476
- return true;
477
- })
478
- };
479
- }
480
-
481
- // packages/server/src/sqlite-async-question-worker.js
482
- function createAsyncQuestionOperations(database2) {
483
- if (!database2.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'async_questions'").get())
484
- return {};
485
- const list = database2.prepare(
486
- // 同一回合的问题按发现顺序展示,不能按内容哈希重新排序。
487
- "SELECT record_json FROM async_questions WHERE project_id = ? AND task_id = ? ORDER BY json_extract(record_json, '$.group.createdAt'), rowid"
488
- );
489
- const read = database2.prepare(
490
- "SELECT record_json FROM async_questions WHERE project_id = ? AND task_id = ? AND id = ?"
491
- );
492
- const insert = database2.prepare(
493
- "INSERT OR IGNORE INTO async_questions (project_id, task_id, id, status, record_json) VALUES (?, ?, ?, 'pending', ?)"
494
- );
495
- const update = database2.prepare(
496
- "UPDATE async_questions SET status = ?, record_json = ? WHERE project_id = ? AND task_id = ? AND id = ? AND status = ?"
497
- );
498
- const count = database2.prepare(
499
- "SELECT COUNT(*) AS count FROM async_questions WHERE project_id = ? AND task_id = ?"
500
- );
501
- return {
502
- listAsyncQuestions: ({ projectId, taskId }) => list.all(projectId, taskId).map((row) => row.record_json),
503
- discoverAsyncQuestions: database2.transaction(({ projectId, taskId, groups }) => {
504
- for (const group of groups)
505
- insert.run(projectId, taskId, group.id, JSON.stringify({ group }));
506
- if (count.get(projectId, taskId).count > 1e4)
507
- throw new Error("Async question capacity is exhausted");
508
- return null;
509
- }),
510
- updateAsyncQuestion: ({ projectId, taskId, record, expectedStatus }) => update.run(
511
- record.group.status,
512
- JSON.stringify(record),
513
- projectId,
514
- taskId,
515
- record.group.id,
516
- expectedStatus
517
- ).changes === 1,
518
- dismissAsyncQuestions: database2.transaction(({ projectId, taskId, ids }) => {
519
- for (const id of ids) {
520
- const row = read.get(projectId, taskId, id);
521
- if (row === void 0) continue;
522
- const record = JSON.parse(row.record_json);
523
- record.group.status = "dismissed";
524
- update.run("dismissed", JSON.stringify(record), projectId, taskId, id, "pending");
525
- }
526
- return null;
527
- })
528
- };
529
- }
530
-
531
- // packages/server/src/sqlite-state-worker-features.js
532
- function createFeatureOperations(database2) {
533
- return {
534
- ...createTaskQueueOperations(database2),
535
- ...createScheduledTaskOperations(database2),
536
- ...createSubmissionOperations(database2),
537
- ...createProjectTodoOperations(database2),
538
- ...createAsyncQuestionOperations(database2)
539
- };
540
- }
541
-
542
- // packages/server/src/sqlite-worker-error.js
543
- function serializeError(error) {
544
- return {
545
- message: error instanceof Error ? error.message : String(error),
546
- name: error instanceof Error ? error.name : "Error"
547
- };
548
- }
549
-
550
- // packages/server/src/sqlite-state-worker.js
551
- function createOperations(database2) {
552
- const statements = hasTable(database2, "projects") && hasTable(database2, "project_roots") ? {
553
- upsertProject: database2.prepare(
554
- `INSERT INTO projects (id, name, created_at, sort_order, kind)
55
+ record_json = excluded.record_json, completed = excluded.completed, updated_at = excluded.updated_at`);return {readSubmission({projectId:i,key:c}){return s.get(i,c)?.record_json},writeSubmission:e.transaction(({projectId:i,key:c,recordJson:_,completed:d})=>{let u=Date.now();if(o.run(u-10080*60*1e3),!s.get(i,c)&&n.get().count>=1e4)throw new Error("Submission recovery capacity is exhausted");return a.run(i,c,_,d?1:0,u),null})}}function q(e){if(!e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'project_todos'").get())return {};let s=e.prepare("SELECT record_json FROM project_todos WHERE project_id = ? ORDER BY updated_at DESC, id"),n=e.prepare("SELECT version FROM project_todos WHERE project_id = ? AND id = ?"),o=e.prepare(`INSERT INTO project_todos (project_id, id, version, updated_at, record_json) VALUES (?, ?, ?, ?, ?)
56
+ ON CONFLICT(project_id, id) DO UPDATE SET version = excluded.version, updated_at = excluded.updated_at, record_json = excluded.record_json`),a=e.prepare("DELETE FROM project_todos WHERE project_id = ? AND id = ?"),i=e.prepare("DELETE FROM project_todo_attachments WHERE project_id = ? AND todo_id = ?"),c=e.prepare("INSERT INTO project_todo_attachments (project_id, todo_id, attachment_id, metadata, content) VALUES (?, ?, ?, ?, ?)"),_=e.prepare("SELECT metadata, content FROM project_todo_attachments WHERE project_id = ? AND attachment_id = ? LIMIT 1");return {listProjectTodos:({projectId:d})=>s.all(d).map(u=>u.record_json),readProjectTodoAttachment:({projectId:d,attachmentId:u})=>_.get(d,u),saveProjectTodo:e.transaction(({todo:d,expectedVersion:u,attachments:r})=>{if((n.get(d.projectId,d.id)?.version??null)!==u)return false;if(u===null&&s.all(d.projectId).length>=1e3)throw new Error("Project todo capacity is exhausted");o.run(d.projectId,d.id,d.version,d.updatedAt,JSON.stringify(d)),i.run(d.projectId,d.id);for(let{attachment:t,content:p}of r)c.run(d.projectId,d.id,t.id,JSON.stringify(t),p);return true}),deleteProjectTodo:e.transaction(({projectId:d,todoId:u,expectedVersion:r})=>{let t=n.get(d,u);return t===void 0?false:t.version!==r?null:(a.run(d,u),true)})}}function b(e){if(!e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'async_questions'").get())return {};let s=e.prepare("SELECT record_json FROM async_questions WHERE project_id = ? AND task_id = ? ORDER BY json_extract(record_json, '$.group.createdAt'), rowid"),n=e.prepare("SELECT record_json FROM async_questions WHERE project_id = ? AND task_id = ? AND id = ?"),o=e.prepare("INSERT OR IGNORE INTO async_questions (project_id, task_id, id, status, record_json) VALUES (?, ?, ?, 'pending', ?)"),a=e.prepare("UPDATE async_questions SET status = ?, record_json = ? WHERE project_id = ? AND task_id = ? AND id = ? AND status = ?"),i=e.prepare("SELECT COUNT(*) AS count FROM async_questions WHERE project_id = ? AND task_id = ?");return {listAsyncQuestions:({projectId:c,taskId:_})=>s.all(c,_).map(d=>d.record_json),discoverAsyncQuestions:e.transaction(({projectId:c,taskId:_,groups:d})=>{for(let u of d)o.run(c,_,u.id,JSON.stringify({group:u}));if(i.get(c,_).count>1e4)throw new Error("Async question capacity is exhausted");return null}),updateAsyncQuestion:({projectId:c,taskId:_,record:d,expectedStatus:u})=>a.run(d.group.status,JSON.stringify(d),c,_,d.group.id,u).changes===1,dismissAsyncQuestions:e.transaction(({projectId:c,taskId:_,ids:d})=>{for(let u of d){let r=n.get(c,_,u);if(r===void 0)continue;let t=JSON.parse(r.record_json);t.group.status="dismissed",a.run("dismissed",JSON.stringify(t),c,_,u,"pending");}return null})}}function B(e){return {...U(e),...W(e),...H(e),...q(e),...b(e)}}function x(e){return {message:e instanceof Error?e.message:String(e),name:e instanceof Error?e.name:"Error"}}function V(e){let s=new G(`${e}.scheduled-lock`,{timeout:5e3});s.exec(`CREATE TABLE IF NOT EXISTS run_owners (
57
+ run_id TEXT PRIMARY KEY, pid INTEGER NOT NULL
58
+ ) STRICT`);let n=s.prepare("SELECT run_id, pid FROM run_owners"),o=s.prepare("DELETE FROM run_owners WHERE run_id = ?"),a=s.prepare("INSERT INTO run_owners (run_id, pid) VALUES (?, ?)");return {initialize(i){try{return s.transaction(i).immediate()}finally{s.pragma("busy_timeout = 0");}},close:()=>s.close(),operations:{acquireScheduledTaskLock(){if(s.inTransaction)return false;try{return s.exec("BEGIN IMMEDIATE"),!0}catch(i){if(i.code==="SQLITE_BUSY")return false;throw i}},releaseScheduledTaskLock(){return s.exec("COMMIT"),null},listActiveScheduledTaskRunIds(){let i=[];for(let c of n.all())try{process.kill(c.pid,0),i.push(c.run_id);}catch(_){_.code==="ESRCH"?o.run(c.run_id):i.push(c.run_id);}return i},claimScheduledTaskRun(i){return a.run(i.runId,process.pid),null},releaseScheduledTaskRun(i){return o.run(i.runId),null}}}}function z(e){let s=T(e,"projects")&&T(e,"project_roots")?{upsertProject:e.prepare(`INSERT INTO projects (id, name, created_at, sort_order, kind)
555
59
  VALUES (?, ?, ?, (
556
60
  SELECT COALESCE(MAX(sort_order) + 1, 0) FROM projects WHERE kind = 'user'
557
61
  ), 'user')
558
62
  ON CONFLICT(id) DO UPDATE SET
559
63
  name = excluded.name,
560
64
  created_at = excluded.created_at
561
- WHERE projects.kind = 'user'`
562
- ),
563
- upsertProjectAtOrder: database2.prepare(
564
- `INSERT INTO projects (id, name, created_at, sort_order, kind)
65
+ WHERE projects.kind = 'user'`),upsertProjectAtOrder:e.prepare(`INSERT INTO projects (id, name, created_at, sort_order, kind)
565
66
  VALUES (?, ?, ?, ?, 'user')
566
67
  ON CONFLICT(id) DO UPDATE SET
567
68
  name = excluded.name,
568
69
  created_at = excluded.created_at,
569
70
  sort_order = excluded.sort_order
570
- WHERE projects.kind = 'user'`
571
- ),
572
- listProjects: database2.prepare(
573
- "SELECT id, name, created_at FROM projects WHERE kind = 'user' ORDER BY sort_order, created_at, id"
574
- ),
575
- listProjectRoots: database2.prepare(
576
- `SELECT project_roots.project_id, project_roots.root_id, project_roots.path
71
+ WHERE projects.kind = 'user'`),listProjects:e.prepare("SELECT id, name, created_at FROM projects WHERE kind = 'user' ORDER BY sort_order, created_at, id"),listProjectRoots:e.prepare(`SELECT project_roots.project_id, project_roots.root_id, project_roots.path
577
72
  FROM project_roots
578
73
  JOIN projects ON projects.id = project_roots.project_id
579
74
  WHERE projects.kind = 'user'
580
- ORDER BY projects.sort_order, projects.created_at, projects.id, project_roots.position`
581
- ),
582
- listProjectIds: database2.prepare(
583
- "SELECT id FROM projects WHERE kind = 'user' ORDER BY sort_order, created_at, id"
584
- ),
585
- readProject: database2.prepare("SELECT id, name, created_at FROM projects WHERE id = ?"),
586
- readProjectWithOrder: database2.prepare(
587
- "SELECT id, name, created_at, sort_order FROM projects WHERE id = ? AND kind = 'user'"
588
- ),
589
- readProjectRoots: database2.prepare(
590
- "SELECT project_id, root_id, path FROM project_roots WHERE project_id = ? ORDER BY position"
591
- ),
592
- removeProjectRoots: database2.prepare("DELETE FROM project_roots WHERE project_id = ?"),
593
- writeProjectRoot: database2.prepare(
594
- "INSERT INTO project_roots (project_id, position, root_id, path) VALUES (?, ?, ?, ?)"
595
- ),
596
- removeProject: database2.prepare("DELETE FROM projects WHERE id = ? AND kind = 'user'"),
597
- copyProjectDefaults: database2.prepare(
598
- `INSERT INTO project_defaults
75
+ ORDER BY projects.sort_order, projects.created_at, projects.id, project_roots.position`),listProjectIds:e.prepare("SELECT id FROM projects WHERE kind = 'user' ORDER BY sort_order, created_at, id"),readProject:e.prepare("SELECT id, name, created_at FROM projects WHERE id = ?"),readProjectWithOrder:e.prepare("SELECT id, name, created_at, sort_order FROM projects WHERE id = ? AND kind = 'user'"),readProjectRoots:e.prepare("SELECT project_id, root_id, path FROM project_roots WHERE project_id = ? ORDER BY position"),removeProjectRoots:e.prepare("DELETE FROM project_roots WHERE project_id = ?"),writeProjectRoot:e.prepare("INSERT INTO project_roots (project_id, position, root_id, path) VALUES (?, ?, ?, ?)"),removeProject:e.prepare("DELETE FROM projects WHERE id = ? AND kind = 'user'"),copyProjectDefaults:e.prepare(`INSERT INTO project_defaults
599
76
  (project_id, model, reasoning_effort, updated_at, sandbox_mode,
600
77
  approval_policy, approvals_reviewer, fast_mode)
601
78
  SELECT ?, model, reasoning_effort, updated_at, sandbox_mode,
@@ -608,10 +85,7 @@ function createOperations(database2) {
608
85
  sandbox_mode = excluded.sandbox_mode,
609
86
  approval_policy = excluded.approval_policy,
610
87
  approvals_reviewer = excluded.approvals_reviewer,
611
- fast_mode = excluded.fast_mode`
612
- ),
613
- copyTaskSettings: database2.prepare(
614
- `INSERT INTO task_settings
88
+ fast_mode = excluded.fast_mode`),copyTaskSettings:e.prepare(`INSERT INTO task_settings
615
89
  (project_id, task_id, approval_policy, model, reasoning_effort, updated_at,
616
90
  sandbox_mode, approvals_reviewer)
617
91
  SELECT ?, task_id, approval_policy, model, reasoning_effort, updated_at,
@@ -623,29 +97,12 @@ function createOperations(database2) {
623
97
  reasoning_effort = excluded.reasoning_effort,
624
98
  updated_at = excluded.updated_at,
625
99
  sandbox_mode = excluded.sandbox_mode,
626
- approvals_reviewer = excluded.approvals_reviewer`
627
- ),
628
- writeProjectSortOrder: database2.prepare(
629
- "UPDATE projects SET sort_order = ? WHERE id = ? AND kind = 'user'"
630
- ),
631
- readProjectDefaults: database2.prepare(
632
- `SELECT approval_policy, approvals_reviewer, fast_mode, model,
100
+ approvals_reviewer = excluded.approvals_reviewer`),writeProjectSortOrder:e.prepare("UPDATE projects SET sort_order = ? WHERE id = ? AND kind = 'user'"),readProjectDefaults:e.prepare(`SELECT approval_policy, approvals_reviewer, fast_mode, model,
633
101
  reasoning_effort, sandbox_mode
634
- FROM project_defaults WHERE project_id = ?`
635
- ),
636
- readGlobalSettings: database2.prepare(
637
- `SELECT approval_policy, approvals_reviewer, commit_message_model, commit_message_prompt,
102
+ FROM project_defaults WHERE project_id = ?`),readGlobalSettings:e.prepare(`SELECT approval_policy, approvals_reviewer, commit_message_model, commit_message_prompt,
638
103
  model, reasoning_effort, sandbox_mode, default_open_app_id, fast_mode, follow_up_behavior, pet_enabled, pet_id
639
- FROM global_settings WHERE id = 1`
640
- ),
641
- readProviderConnection: database2.prepare(
642
- `SELECT mode, custom_base_url, custom_models_json, updated_at
643
- FROM provider_connection WHERE id = 1`
644
- ),
645
- readTaskSettings: database2.prepare(
646
- "SELECT approval_policy, approvals_reviewer, model, reasoning_effort, sandbox_mode FROM task_settings WHERE project_id = ? AND task_id = ?"
647
- ),
648
- writeProjectDefaults: database2.prepare(`
104
+ FROM global_settings WHERE id = 1`),readProviderConnection:e.prepare(`SELECT mode, custom_base_url, custom_models_json, updated_at
105
+ FROM provider_connection WHERE id = 1`),readTaskSettings:e.prepare("SELECT approval_policy, approvals_reviewer, model, reasoning_effort, sandbox_mode FROM task_settings WHERE project_id = ? AND task_id = ?"),writeProjectDefaults:e.prepare(`
649
106
  INSERT INTO project_defaults (
650
107
  project_id, approval_policy, approvals_reviewer, fast_mode, model,
651
108
  reasoning_effort, sandbox_mode, updated_at
@@ -658,8 +115,7 @@ function createOperations(database2) {
658
115
  reasoning_effort = excluded.reasoning_effort,
659
116
  sandbox_mode = excluded.sandbox_mode,
660
117
  updated_at = excluded.updated_at
661
- `),
662
- writeGlobalSettings: database2.prepare(`
118
+ `),writeGlobalSettings:e.prepare(`
663
119
  INSERT INTO global_settings (
664
120
  id, approval_policy, approvals_reviewer, commit_message_model, commit_message_prompt, model,
665
121
  reasoning_effort, sandbox_mode, default_open_app_id, fast_mode, follow_up_behavior, pet_enabled, pet_id, updated_at
@@ -677,8 +133,7 @@ function createOperations(database2) {
677
133
  follow_up_behavior = excluded.follow_up_behavior,
678
134
  pet_enabled = excluded.pet_enabled, pet_id = excluded.pet_id,
679
135
  updated_at = excluded.updated_at
680
- `),
681
- writeProviderConnection: database2.prepare(`
136
+ `),writeProviderConnection:e.prepare(`
682
137
  INSERT INTO provider_connection (
683
138
  id, mode, custom_base_url, custom_models_json, updated_at
684
139
  ) VALUES (1, ?, ?, ?, ?)
@@ -687,8 +142,7 @@ function createOperations(database2) {
687
142
  custom_base_url = excluded.custom_base_url,
688
143
  custom_models_json = excluded.custom_models_json,
689
144
  updated_at = excluded.updated_at
690
- `),
691
- writeTaskSettings: database2.prepare(`
145
+ `),writeTaskSettings:e.prepare(`
692
146
  INSERT INTO task_settings (
693
147
  project_id, task_id, approval_policy, approvals_reviewer, model, reasoning_effort, sandbox_mode, updated_at
694
148
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -699,299 +153,4 @@ function createOperations(database2) {
699
153
  reasoning_effort = excluded.reasoning_effort,
700
154
  sandbox_mode = excluded.sandbox_mode,
701
155
  updated_at = excluded.updated_at
702
- `)
703
- } : void 0;
704
- function requireStatements() {
705
- if (statements === void 0) {
706
- throw new Error("SQLite state tables are unavailable");
707
- }
708
- return statements;
709
- }
710
- function readStoredProject(projectId) {
711
- const stateStatements = requireStatements();
712
- return projectFromRows(
713
- stateStatements.readProject.get(projectId),
714
- stateStatements.readProjectRoots.all(projectId)
715
- );
716
- }
717
- function readStoredProjects() {
718
- const stateStatements = requireStatements();
719
- return projectsFromRows(
720
- stateStatements.listProjects.all(),
721
- stateStatements.listProjectRoots.all()
722
- );
723
- }
724
- function replaceStoredRoots(project) {
725
- const stateStatements = requireStatements();
726
- if (!Array.isArray(project.roots) || project.roots.length === 0) {
727
- throw new Error("Project roots must contain a primary root");
728
- }
729
- const rootIds = project.roots.map((root) => root.id);
730
- const paths = project.roots.map((root) => root.path);
731
- if (rootIds.some((rootId) => typeof rootId !== "string" || rootId.length === 0)) {
732
- throw new Error("Project root ids must be non-empty strings");
733
- }
734
- if (new Set(rootIds).size !== rootIds.length) {
735
- throw new Error("Project root ids must be unique");
736
- }
737
- if (paths.some((path) => typeof path !== "string" || path.length === 0)) {
738
- throw new Error("Project root paths must be non-empty strings");
739
- }
740
- if (new Set(paths).size !== paths.length) {
741
- throw new Error("Project root paths must be unique");
742
- }
743
- stateStatements.removeProjectRoots.run(project.id);
744
- paths.forEach((path, position) => {
745
- stateStatements.writeProjectRoot.run(project.id, position, rootIds[position], path);
746
- });
747
- }
748
- const reorderProjects = database2.transaction((projectIds) => {
749
- const stateStatements = requireStatements();
750
- const storedProjectIds = stateStatements.listProjectIds.all().map((row) => row.id);
751
- const requestedProjectIds = new Set(projectIds);
752
- const containsCompleteProjectSet = projectIds.length === storedProjectIds.length && requestedProjectIds.size === storedProjectIds.length && storedProjectIds.every((projectId) => requestedProjectIds.has(projectId));
753
- if (!containsCompleteProjectSet) {
754
- throw new Error("Project order must contain every project exactly once");
755
- }
756
- projectIds.forEach((projectId, sortOrder) => {
757
- stateStatements.writeProjectSortOrder.run(sortOrder, projectId);
758
- });
759
- return readStoredProjects();
760
- });
761
- const replaceProjects = database2.transaction((projects) => {
762
- const stateStatements = requireStatements();
763
- const projectIds = new Set(projects.map((project) => project.id));
764
- if (projectIds.size !== projects.length) {
765
- throw new Error("Project projection must contain unique project ids");
766
- }
767
- for (const { id } of stateStatements.listProjectIds.all()) {
768
- if (!projectIds.has(id)) {
769
- stateStatements.removeProject.run(id);
770
- }
771
- }
772
- projects.forEach((project, sortOrder) => {
773
- stateStatements.upsertProjectAtOrder.run(
774
- project.id,
775
- project.name,
776
- project.createdAt,
777
- sortOrder
778
- );
779
- replaceStoredRoots(project);
780
- });
781
- return readStoredProjects();
782
- });
783
- const migrateProject = database2.transaction((legacyProjectId, project) => {
784
- const stateStatements = requireStatements();
785
- const legacy = stateStatements.readProjectWithOrder.get(legacyProjectId);
786
- const sortOrder = legacy?.sort_order ?? stateStatements.listProjectIds.all().length;
787
- stateStatements.upsertProjectAtOrder.run(
788
- project.id,
789
- project.name,
790
- project.createdAt,
791
- sortOrder
792
- );
793
- replaceStoredRoots(project);
794
- if (legacyProjectId !== project.id && legacy !== void 0) {
795
- stateStatements.copyProjectDefaults.run(project.id, legacyProjectId);
796
- stateStatements.copyTaskSettings.run(project.id, legacyProjectId);
797
- stateStatements.removeProject.run(legacyProjectId);
798
- }
799
- const stored = readStoredProject(project.id);
800
- if (stored === void 0) {
801
- throw new Error("Migrated Project projection could not be stored");
802
- }
803
- return stored;
804
- });
805
- const projectSourceMigrationStatements = hasTable(database2, "project_source_migration") ? {
806
- complete: database2.prepare(
807
- "UPDATE project_source_migration SET completed = 1 WHERE id = 1"
808
- ),
809
- read: database2.prepare(
810
- "SELECT completed, recover_unassigned FROM project_source_migration WHERE id = 1"
811
- )
812
- } : void 0;
813
- return {
814
- ...createFeatureOperations(database2),
815
- diagnose() {
816
- database2.exec("BEGIN IMMEDIATE");
817
- try {
818
- database2.prepare(
819
- "INSERT INTO schema_migrations (version, name, applied_at) VALUES (-1, 'doctor', ?)"
820
- ).run((/* @__PURE__ */ new Date()).toISOString());
821
- } finally {
822
- database2.exec("ROLLBACK");
823
- }
824
- const synchronousValue = database2.pragma("synchronous", { simple: true });
825
- return {
826
- busyTimeout: database2.pragma("busy_timeout", { simple: true }),
827
- foreignKeys: database2.pragma("foreign_keys", { simple: true }) === 1,
828
- integrityCheck: database2.pragma("integrity_check", { simple: true }),
829
- journalMode: database2.pragma("journal_mode", { simple: true }),
830
- migrationVersion: database2.prepare("SELECT COALESCE(MAX(version), 0) AS version FROM schema_migrations").get().version,
831
- synchronous: synchronousValue === 1 ? "normal" : String(synchronousValue),
832
- writable: true
833
- };
834
- },
835
- completeProjectSourceMigration() {
836
- if (projectSourceMigrationStatements === void 0) {
837
- throw new Error("Project source migration state is unavailable");
838
- }
839
- projectSourceMigrationStatements.complete.run();
840
- return null;
841
- },
842
- listProjects() {
843
- return readStoredProjects();
844
- },
845
- readProject(payload) {
846
- return readStoredProject(payload.projectId);
847
- },
848
- readProjectSourceMigration() {
849
- if (projectSourceMigrationStatements === void 0) {
850
- throw new Error("Project source migration state is unavailable");
851
- }
852
- const row = projectSourceMigrationStatements.read.get();
853
- if (row === void 0) {
854
- throw new Error("Project source migration state is missing");
855
- }
856
- return {
857
- completed: row.completed === 1,
858
- recoverUnassigned: row.recover_unassigned === 1
859
- };
860
- },
861
- replaceProjects(payload) {
862
- return replaceProjects(payload.projects);
863
- },
864
- upsertProject(payload) {
865
- return database2.transaction((project) => {
866
- const stateStatements = requireStatements();
867
- stateStatements.upsertProject.run(project.id, project.name, project.createdAt);
868
- replaceStoredRoots(project);
869
- const stored = readStoredProject(project.id);
870
- if (stored === void 0) {
871
- throw new Error("Project projection could not be stored");
872
- }
873
- return stored;
874
- })(payload.project);
875
- },
876
- migrateProject(payload) {
877
- return migrateProject(payload.legacyProjectId, payload.project);
878
- },
879
- deleteProject(payload) {
880
- return requireStatements().removeProject.run(payload.projectId).changes > 0;
881
- },
882
- setProjectOrder(payload) {
883
- return reorderProjects(payload.projectIds);
884
- },
885
- readProjectDefaults(payload) {
886
- return projectDefaultsFromRow(requireStatements().readProjectDefaults.get(payload.projectId));
887
- },
888
- readGlobalSettings() {
889
- return globalSettingsFromRow(requireStatements().readGlobalSettings.get());
890
- },
891
- readProviderConnection() {
892
- return providerConnectionFromRow(requireStatements().readProviderConnection.get());
893
- },
894
- readTaskSettings(payload) {
895
- return taskSettingsFromRow(
896
- requireStatements().readTaskSettings.get(payload.projectId, payload.taskId)
897
- );
898
- },
899
- writeProjectDefaults(payload) {
900
- const settings = payload.settings;
901
- requireStatements().writeProjectDefaults.run(
902
- payload.projectId,
903
- serializeApprovalPolicy(settings.approvalPolicy),
904
- settings.approvalsReviewer,
905
- settings.fastMode ? 1 : 0,
906
- settings.model,
907
- settings.reasoningEffort,
908
- settings.sandboxMode,
909
- payload.updatedAt
910
- );
911
- return settings;
912
- },
913
- writeGlobalSettings(payload) {
914
- const settings = payload.settings;
915
- requireStatements().writeGlobalSettings.run(
916
- serializeApprovalPolicy(settings.approvalPolicy),
917
- settings.approvalsReviewer,
918
- settings.commitMessageModel,
919
- settings.commitMessagePrompt,
920
- settings.model,
921
- settings.reasoningEffort,
922
- settings.sandboxMode,
923
- settings.defaultOpenAppId,
924
- settings.fastMode ? 1 : 0,
925
- settings.followUpBehavior,
926
- settings.pet.enabled ? 1 : 0,
927
- settings.pet.selectedPetId,
928
- payload.updatedAt
929
- );
930
- return settings;
931
- },
932
- writeProviderConnection(payload) {
933
- requireStatements().writeProviderConnection.run(
934
- payload.mode,
935
- payload.customBaseUrl,
936
- payload.customModelsJson,
937
- payload.updatedAt
938
- );
939
- return null;
940
- },
941
- writeTaskSettings(payload) {
942
- const settings = payload.settings;
943
- requireStatements().writeTaskSettings.run(
944
- payload.projectId,
945
- payload.taskId,
946
- serializeApprovalPolicy(settings.approvalPolicy),
947
- settings.approvalsReviewer,
948
- settings.model,
949
- settings.reasoningEffort,
950
- settings.sandboxMode,
951
- payload.updatedAt
952
- );
953
- return settings;
954
- }
955
- };
956
- }
957
- var database;
958
- try {
959
- mkdirSync(resolve(workerData.databasePath, ".."), { recursive: true });
960
- database = new Database(workerData.databasePath);
961
- configureDatabase(database);
962
- const previousMigrationVersion = readMigrationVersion(database);
963
- runMigrations(database, workerData.migrations, (version) => {
964
- if (version === 15) {
965
- initializeProjectSourceMigration(database, previousMigrationVersion);
966
- }
967
- });
968
- initializeProjectSourceMigration(database, previousMigrationVersion);
969
- ensureGlobalSettingsCompatibility(database);
970
- const operations = createOperations(database);
971
- parentPort.on("message", (message) => {
972
- try {
973
- if (message.operation === "close") {
974
- database.close();
975
- parentPort.postMessage({ id: message.id, result: null, type: "response" });
976
- parentPort.close();
977
- return;
978
- }
979
- const operation = operations[message.operation];
980
- if (typeof operation !== "function") {
981
- throw new Error(`Unknown SQLite worker operation: ${String(message.operation)}`);
982
- }
983
- parentPort.postMessage({
984
- id: message.id,
985
- result: operation(message.payload),
986
- type: "response"
987
- });
988
- } catch (error) {
989
- parentPort.postMessage({ id: message.id, error: serializeError(error), type: "response" });
990
- }
991
- });
992
- parentPort.postMessage({ type: "ready" });
993
- } catch (error) {
994
- database?.close();
995
- parentPort.postMessage({ error: serializeError(error), type: "fatal" });
996
- parentPort.close();
997
- }
156
+ `)}:void 0;function n(){if(s===void 0)throw new Error("SQLite state tables are unavailable");return s}function o(r){let t=n();return h(t.readProject.get(r),t.readProjectRoots.all(r))}function a(){let r=n();return I(r.listProjects.all(),r.listProjectRoots.all())}function i(r){let t=n();if(!Array.isArray(r.roots)||r.roots.length===0)throw new Error("Project roots must contain a primary root");let p=r.roots.map(m=>m.id),l=r.roots.map(m=>m.path);if(p.some(m=>typeof m!="string"||m.length===0))throw new Error("Project root ids must be non-empty strings");if(new Set(p).size!==p.length)throw new Error("Project root ids must be unique");if(l.some(m=>typeof m!="string"||m.length===0))throw new Error("Project root paths must be non-empty strings");if(new Set(l).size!==l.length)throw new Error("Project root paths must be unique");t.removeProjectRoots.run(r.id),l.forEach((m,E)=>{t.writeProjectRoot.run(r.id,E,p[E],m);});}let c=e.transaction(r=>{let t=n(),p=t.listProjectIds.all().map(E=>E.id),l=new Set(r);if(!(r.length===p.length&&l.size===p.length&&p.every(E=>l.has(E))))throw new Error("Project order must contain every project exactly once");return r.forEach((E,J)=>{t.writeProjectSortOrder.run(J,E);}),a()}),_=e.transaction(r=>{let t=n(),p=new Set(r.map(l=>l.id));if(p.size!==r.length)throw new Error("Project projection must contain unique project ids");for(let{id:l}of t.listProjectIds.all())p.has(l)||t.removeProject.run(l);return r.forEach((l,m)=>{t.upsertProjectAtOrder.run(l.id,l.name,l.createdAt,m),i(l);}),a()}),d=e.transaction((r,t)=>{let p=n(),l=p.readProjectWithOrder.get(r),m=l?.sort_order??p.listProjectIds.all().length;p.upsertProjectAtOrder.run(t.id,t.name,t.createdAt,m),i(t),r!==t.id&&l!==void 0&&(p.copyProjectDefaults.run(t.id,r),p.copyTaskSettings.run(t.id,r),p.removeProject.run(r));let E=o(t.id);if(E===void 0)throw new Error("Migrated Project projection could not be stored");return E}),u=T(e,"project_source_migration")?{complete:e.prepare("UPDATE project_source_migration SET completed = 1 WHERE id = 1"),read:e.prepare("SELECT completed, recover_unassigned FROM project_source_migration WHERE id = 1")}:void 0;return {...B(e),diagnose(){e.exec("BEGIN IMMEDIATE");try{e.prepare("INSERT INTO schema_migrations (version, name, applied_at) VALUES (-1, 'doctor', ?)").run(new Date().toISOString());}finally{e.exec("ROLLBACK");}let r=e.pragma("synchronous",{simple:true});return {busyTimeout:e.pragma("busy_timeout",{simple:true}),foreignKeys:e.pragma("foreign_keys",{simple:true})===1,integrityCheck:e.pragma("integrity_check",{simple:true}),journalMode:e.pragma("journal_mode",{simple:true}),migrationVersion:e.prepare("SELECT COALESCE(MAX(version), 0) AS version FROM schema_migrations").get().version,synchronous:r===1?"normal":String(r),writable:true}},completeProjectSourceMigration(){if(u===void 0)throw new Error("Project source migration state is unavailable");return u.complete.run(),null},listProjects(){return a()},readProject(r){return o(r.projectId)},readProjectSourceMigration(){if(u===void 0)throw new Error("Project source migration state is unavailable");let r=u.read.get();if(r===void 0)throw new Error("Project source migration state is missing");return {completed:r.completed===1,recoverUnassigned:r.recover_unassigned===1}},replaceProjects(r){return _(r.projects)},upsertProject(r){return e.transaction(t=>{n().upsertProject.run(t.id,t.name,t.createdAt),i(t);let l=o(t.id);if(l===void 0)throw new Error("Project projection could not be stored");return l})(r.project)},migrateProject(r){return d(r.legacyProjectId,r.project)},deleteProject(r){return n().removeProject.run(r.projectId).changes>0},setProjectOrder(r){return c(r.projectIds)},readProjectDefaults(r){return L(n().readProjectDefaults.get(r.projectId))},readGlobalSettings(){return D(n().readGlobalSettings.get())},readProviderConnection(){return w(n().readProviderConnection.get())},readTaskSettings(r){return P(n().readTaskSettings.get(r.projectId,r.taskId))},writeProjectDefaults(r){let t=r.settings;return n().writeProjectDefaults.run(r.projectId,R(t.approvalPolicy),t.approvalsReviewer,t.fastMode?1:0,t.model,t.reasoningEffort,t.sandboxMode,r.updatedAt),t},writeGlobalSettings(r){let t=r.settings;return n().writeGlobalSettings.run(R(t.approvalPolicy),t.approvalsReviewer,t.commitMessageModel,t.commitMessagePrompt,t.model,t.reasoningEffort,t.sandboxMode,t.defaultOpenAppId,t.fastMode?1:0,t.followUpBehavior,t.pet.enabled?1:0,t.pet.selectedPetId,r.updatedAt),t},writeProviderConnection(r){return n().writeProviderConnection.run(r.mode,r.customBaseUrl,r.customModelsJson,r.updatedAt),null},writeTaskSettings(r){let t=r.settings;return n().writeTaskSettings.run(r.projectId,r.taskId,R(t.approvalPolicy),t.approvalsReviewer,t.model,t.reasoningEffort,t.sandboxMode,r.updatedAt),t}}}var f,j;try{mkdirSync(resolve(workerData.databasePath,".."),{recursive:!0}),j=V(workerData.databasePath),j.initialize(()=>{f=new G(workerData.databasePath),M(f);let s=C(f);y(f,workerData.migrations,n=>{n===15&&A(f,s);}),A(f,s),F(f);});let e={...z(f),...j.operations};parentPort.on("message",s=>{try{if(s.operation==="close"){j.close(),f.close(),parentPort.postMessage({id:s.id,result:null,type:"response"}),parentPort.close();return}let n=e[s.operation];if(typeof n!="function")throw new Error(`Unknown SQLite worker operation: ${String(s.operation)}`);parentPort.postMessage({id:s.id,result:n(s.payload),type:"response"});}catch(n){parentPort.postMessage({id:s.id,error:x(n),type:"response"});}}),parentPort.postMessage({type:"ready"});}catch(e){j?.close(),f?.close(),parentPort.postMessage({error:x(e),type:"fatal"}),parentPort.close();}