@bryanhu/codexly 0.1.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 (305) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +87 -0
  4. package/README.zh-CN.md +87 -0
  5. package/dist/chunk-3OBVX5TN.js +15 -0
  6. package/dist/chunk-42AR5IS7.js +12543 -0
  7. package/dist/chunk-K63YBMTG.js +61287 -0
  8. package/dist/chunk-K6J42667.js +43 -0
  9. package/dist/chunk-MH54VCZJ.js +5224 -0
  10. package/dist/chunk-TEPSAXZZ.js +3360 -0
  11. package/dist/cli.js +889 -0
  12. package/dist/client/index.js +1010 -0
  13. package/dist/codex-jsonl-frame-worker.js +120 -0
  14. package/dist/core/index.js +5 -0
  15. package/dist/dist-NGSIFQU5.js +252 -0
  16. package/dist/protocol/index.js +5 -0
  17. package/dist/providers/codex/index.js +7 -0
  18. package/dist/server/index.js +9 -0
  19. package/dist/sqlite-state-worker.js +661 -0
  20. package/dist/web/.vite/manifest.json +829 -0
  21. package/dist/web/.vite/manifest.json.br +0 -0
  22. package/dist/web/.vite/manifest.json.gz +0 -0
  23. package/dist/web/assets/bash-BiGZg9Om.js +1 -0
  24. package/dist/web/assets/bash-BiGZg9Om.js.br +0 -0
  25. package/dist/web/assets/bash-BiGZg9Om.js.gz +0 -0
  26. package/dist/web/assets/bundle-mjs-rHxsej31.js +1 -0
  27. package/dist/web/assets/bundle-mjs-rHxsej31.js.br +0 -0
  28. package/dist/web/assets/bundle-mjs-rHxsej31.js.gz +0 -0
  29. package/dist/web/assets/button-CG0GNEOD.js +1 -0
  30. package/dist/web/assets/button-CG0GNEOD.js.br +0 -0
  31. package/dist/web/assets/button-CG0GNEOD.js.gz +0 -0
  32. package/dist/web/assets/button-group-D2LfHIjt.js +1 -0
  33. package/dist/web/assets/button-group-D2LfHIjt.js.br +0 -0
  34. package/dist/web/assets/button-group-D2LfHIjt.js.gz +0 -0
  35. package/dist/web/assets/c-DWGmR78Y.js +1 -0
  36. package/dist/web/assets/c-DWGmR78Y.js.br +1 -0
  37. package/dist/web/assets/c-DWGmR78Y.js.gz +0 -0
  38. package/dist/web/assets/c-SSSlmE39.js +1 -0
  39. package/dist/web/assets/c-SSSlmE39.js.br +0 -0
  40. package/dist/web/assets/c-SSSlmE39.js.gz +0 -0
  41. package/dist/web/assets/checkbox-Bvl7MRXT.js +1 -0
  42. package/dist/web/assets/checkbox-Bvl7MRXT.js.br +0 -0
  43. package/dist/web/assets/checkbox-Bvl7MRXT.js.gz +0 -0
  44. package/dist/web/assets/chunk-BO2N2NFS-C72FSBge.js +131 -0
  45. package/dist/web/assets/chunk-BO2N2NFS-C72FSBge.js.br +0 -0
  46. package/dist/web/assets/chunk-BO2N2NFS-C72FSBge.js.gz +0 -0
  47. package/dist/web/assets/code-highlighter-Cm0xdvAd.js +1 -0
  48. package/dist/web/assets/code-highlighter-Cm0xdvAd.js.br +0 -0
  49. package/dist/web/assets/code-highlighter-Cm0xdvAd.js.gz +0 -0
  50. package/dist/web/assets/code-languages-CfwYbccP.js +2 -0
  51. package/dist/web/assets/code-languages-CfwYbccP.js.br +0 -0
  52. package/dist/web/assets/code-languages-CfwYbccP.js.gz +0 -0
  53. package/dist/web/assets/cpp-BcHBJY00.js +1 -0
  54. package/dist/web/assets/cpp-BcHBJY00.js.br +0 -0
  55. package/dist/web/assets/cpp-BcHBJY00.js.gz +0 -0
  56. package/dist/web/assets/cpp-CIkEvbIe.js +1 -0
  57. package/dist/web/assets/cpp-CIkEvbIe.js.br +0 -0
  58. package/dist/web/assets/cpp-CIkEvbIe.js.gz +0 -0
  59. package/dist/web/assets/csharp-oqKa8noW.js +1 -0
  60. package/dist/web/assets/csharp-oqKa8noW.js.br +0 -0
  61. package/dist/web/assets/csharp-oqKa8noW.js.gz +0 -0
  62. package/dist/web/assets/css-CdtkT07m.js +1 -0
  63. package/dist/web/assets/css-CdtkT07m.js.br +1 -0
  64. package/dist/web/assets/css-CdtkT07m.js.gz +0 -0
  65. package/dist/web/assets/css-LbU1hoFO.js +1 -0
  66. package/dist/web/assets/css-LbU1hoFO.js.br +0 -0
  67. package/dist/web/assets/css-LbU1hoFO.js.gz +0 -0
  68. package/dist/web/assets/diff-woXpYk--.js +1 -0
  69. package/dist/web/assets/diff-woXpYk--.js.br +0 -0
  70. package/dist/web/assets/diff-woXpYk--.js.gz +0 -0
  71. package/dist/web/assets/dockerfile-IyjqRm3v.js +1 -0
  72. package/dist/web/assets/dockerfile-IyjqRm3v.js.br +0 -0
  73. package/dist/web/assets/dockerfile-IyjqRm3v.js.gz +0 -0
  74. package/dist/web/assets/dotenv-_5a1GRtc.js +1 -0
  75. package/dist/web/assets/dotenv-_5a1GRtc.js.br +0 -0
  76. package/dist/web/assets/dotenv-_5a1GRtc.js.gz +0 -0
  77. package/dist/web/assets/engine-compile-DQ0HPfe0.js +152 -0
  78. package/dist/web/assets/engine-compile-DQ0HPfe0.js.br +0 -0
  79. package/dist/web/assets/engine-compile-DQ0HPfe0.js.gz +0 -0
  80. package/dist/web/assets/es2015-CIXyxC_2.js +41 -0
  81. package/dist/web/assets/es2015-CIXyxC_2.js.br +0 -0
  82. package/dist/web/assets/es2015-CIXyxC_2.js.gz +0 -0
  83. package/dist/web/assets/file-CEs2ZXvf.js +1 -0
  84. package/dist/web/assets/file-CEs2ZXvf.js.br +0 -0
  85. package/dist/web/assets/file-CEs2ZXvf.js.gz +0 -0
  86. package/dist/web/assets/file-change-D7aZLgtG.js +4 -0
  87. package/dist/web/assets/file-change-D7aZLgtG.js.br +0 -0
  88. package/dist/web/assets/file-change-D7aZLgtG.js.gz +0 -0
  89. package/dist/web/assets/file-review-dialog-CTL5FpHU.js +2 -0
  90. package/dist/web/assets/file-review-dialog-CTL5FpHU.js.br +0 -0
  91. package/dist/web/assets/file-review-dialog-CTL5FpHU.js.gz +0 -0
  92. package/dist/web/assets/file-tree-DRpR7Mu2.js +1 -0
  93. package/dist/web/assets/file-tree-DRpR7Mu2.js.br +0 -0
  94. package/dist/web/assets/file-tree-DRpR7Mu2.js.gz +0 -0
  95. package/dist/web/assets/git-commit-horizontal-CQWH7rsr.js +1 -0
  96. package/dist/web/assets/git-commit-horizontal-CQWH7rsr.js.br +0 -0
  97. package/dist/web/assets/git-commit-horizontal-CQWH7rsr.js.gz +0 -0
  98. package/dist/web/assets/git-history-panel-BsIopLeA.js +2 -0
  99. package/dist/web/assets/git-history-panel-BsIopLeA.js.br +0 -0
  100. package/dist/web/assets/git-history-panel-BsIopLeA.js.gz +0 -0
  101. package/dist/web/assets/github-dark-C-LZuMrd.js +1 -0
  102. package/dist/web/assets/github-dark-C-LZuMrd.js.br +0 -0
  103. package/dist/web/assets/github-dark-C-LZuMrd.js.gz +0 -0
  104. package/dist/web/assets/github-light-EUqPIrTm.js +1 -0
  105. package/dist/web/assets/github-light-EUqPIrTm.js.br +0 -0
  106. package/dist/web/assets/github-light-EUqPIrTm.js.gz +0 -0
  107. package/dist/web/assets/global-settings-dialog-CJA_j2dA.js +1 -0
  108. package/dist/web/assets/global-settings-dialog-CJA_j2dA.js.br +0 -0
  109. package/dist/web/assets/global-settings-dialog-CJA_j2dA.js.gz +0 -0
  110. package/dist/web/assets/go-rLFTqkRN.js +1 -0
  111. package/dist/web/assets/go-rLFTqkRN.js.br +0 -0
  112. package/dist/web/assets/go-rLFTqkRN.js.gz +0 -0
  113. package/dist/web/assets/grammar-cpp-support-CV8oNpIY.js +1 -0
  114. package/dist/web/assets/grammar-cpp-support-CV8oNpIY.js.br +0 -0
  115. package/dist/web/assets/grammar-cpp-support-CV8oNpIY.js.gz +0 -0
  116. package/dist/web/assets/graphql-D5qRqMLb.js +1 -0
  117. package/dist/web/assets/graphql-D5qRqMLb.js.br +0 -0
  118. package/dist/web/assets/graphql-D5qRqMLb.js.gz +0 -0
  119. package/dist/web/assets/graphql-f69H1Mm0.js +1 -0
  120. package/dist/web/assets/graphql-f69H1Mm0.js.br +0 -0
  121. package/dist/web/assets/graphql-f69H1Mm0.js.gz +0 -0
  122. package/dist/web/assets/highlighted-body-OFNGDK62-NQRGdW--.js +1 -0
  123. package/dist/web/assets/highlighted-body-OFNGDK62-NQRGdW--.js.br +0 -0
  124. package/dist/web/assets/highlighted-body-OFNGDK62-NQRGdW--.js.gz +0 -0
  125. package/dist/web/assets/html-BcACZWSP.js +1 -0
  126. package/dist/web/assets/html-BcACZWSP.js.br +0 -0
  127. package/dist/web/assets/html-BcACZWSP.js.gz +0 -0
  128. package/dist/web/assets/html-DDNsd9lV.js +1 -0
  129. package/dist/web/assets/html-DDNsd9lV.js.br +0 -0
  130. package/dist/web/assets/html-DDNsd9lV.js.gz +0 -0
  131. package/dist/web/assets/index-B3NtDmQp.css +2 -0
  132. package/dist/web/assets/index-B3NtDmQp.css.br +0 -0
  133. package/dist/web/assets/index-B3NtDmQp.css.gz +0 -0
  134. package/dist/web/assets/index-C_O4z_mI.js +4 -0
  135. package/dist/web/assets/index-C_O4z_mI.js.br +0 -0
  136. package/dist/web/assets/index-C_O4z_mI.js.gz +0 -0
  137. package/dist/web/assets/ini-B5eOa1yu.js +1 -0
  138. package/dist/web/assets/ini-B5eOa1yu.js.br +5 -0
  139. package/dist/web/assets/ini-B5eOa1yu.js.gz +0 -0
  140. package/dist/web/assets/java-BtIQNnN0.js +1 -0
  141. package/dist/web/assets/java-BtIQNnN0.js.br +0 -0
  142. package/dist/web/assets/java-BtIQNnN0.js.gz +0 -0
  143. package/dist/web/assets/java-DxlWrXwe.js +1 -0
  144. package/dist/web/assets/java-DxlWrXwe.js.br +1 -0
  145. package/dist/web/assets/java-DxlWrXwe.js.gz +0 -0
  146. package/dist/web/assets/javascript-BzbQS41l.js +1 -0
  147. package/dist/web/assets/javascript-BzbQS41l.js.br +0 -0
  148. package/dist/web/assets/javascript-BzbQS41l.js.gz +0 -0
  149. package/dist/web/assets/javascript-Yelw-5ZN.js +1 -0
  150. package/dist/web/assets/javascript-Yelw-5ZN.js.br +0 -0
  151. package/dist/web/assets/javascript-Yelw-5ZN.js.gz +0 -0
  152. package/dist/web/assets/json-B88Oqtu5.js +1 -0
  153. package/dist/web/assets/json-B88Oqtu5.js.br +0 -0
  154. package/dist/web/assets/json-B88Oqtu5.js.gz +0 -0
  155. package/dist/web/assets/json-CaljABEy.js +1 -0
  156. package/dist/web/assets/json-CaljABEy.js.br +1 -0
  157. package/dist/web/assets/json-CaljABEy.js.gz +0 -0
  158. package/dist/web/assets/json5-BR5RXkoi.js +1 -0
  159. package/dist/web/assets/json5-BR5RXkoi.js.br +0 -0
  160. package/dist/web/assets/json5-BR5RXkoi.js.gz +0 -0
  161. package/dist/web/assets/jsonc-CYpm1nAK.js +1 -0
  162. package/dist/web/assets/jsonc-CYpm1nAK.js.br +0 -0
  163. package/dist/web/assets/jsonc-CYpm1nAK.js.gz +0 -0
  164. package/dist/web/assets/jsx-D3KKoC5L.js +1 -0
  165. package/dist/web/assets/jsx-D3KKoC5L.js.br +0 -0
  166. package/dist/web/assets/jsx-D3KKoC5L.js.gz +0 -0
  167. package/dist/web/assets/jsx-hEbJ82HF.js +1 -0
  168. package/dist/web/assets/jsx-hEbJ82HF.js.br +1 -0
  169. package/dist/web/assets/jsx-hEbJ82HF.js.gz +0 -0
  170. package/dist/web/assets/kotlin-DhhofPvG.js +1 -0
  171. package/dist/web/assets/kotlin-DhhofPvG.js.br +0 -0
  172. package/dist/web/assets/kotlin-DhhofPvG.js.gz +0 -0
  173. package/dist/web/assets/lazy-message-response-Cy_8wxLM.js +2 -0
  174. package/dist/web/assets/lazy-message-response-Cy_8wxLM.js.br +0 -0
  175. package/dist/web/assets/lazy-message-response-Cy_8wxLM.js.gz +0 -0
  176. package/dist/web/assets/lib-DrPFkMXk.js +1 -0
  177. package/dist/web/assets/lib-DrPFkMXk.js.br +0 -0
  178. package/dist/web/assets/lib-DrPFkMXk.js.gz +0 -0
  179. package/dist/web/assets/lua-BJObVtAx.js +1 -0
  180. package/dist/web/assets/lua-BJObVtAx.js.br +0 -0
  181. package/dist/web/assets/lua-BJObVtAx.js.gz +0 -0
  182. package/dist/web/assets/lua-DjuecEsk.js +1 -0
  183. package/dist/web/assets/lua-DjuecEsk.js.br +0 -0
  184. package/dist/web/assets/lua-DjuecEsk.js.gz +0 -0
  185. package/dist/web/assets/makefile-Dixweg8N.js +1 -0
  186. package/dist/web/assets/makefile-Dixweg8N.js.br +0 -0
  187. package/dist/web/assets/makefile-Dixweg8N.js.gz +0 -0
  188. package/dist/web/assets/markdown-BYOwaDjH.js +1 -0
  189. package/dist/web/assets/markdown-BYOwaDjH.js.br +0 -0
  190. package/dist/web/assets/markdown-BYOwaDjH.js.gz +0 -0
  191. package/dist/web/assets/mdx-DQZ5AkYe.js +1 -0
  192. package/dist/web/assets/mdx-DQZ5AkYe.js.br +0 -0
  193. package/dist/web/assets/mdx-DQZ5AkYe.js.gz +0 -0
  194. package/dist/web/assets/mermaid-GHXKKRXX-D0CV54MY.js +1 -0
  195. package/dist/web/assets/mermaid-GHXKKRXX-D0CV54MY.js.br +0 -0
  196. package/dist/web/assets/mermaid-GHXKKRXX-D0CV54MY.js.gz +0 -0
  197. package/dist/web/assets/message-response-CBOOkYPm.js +7 -0
  198. package/dist/web/assets/message-response-CBOOkYPm.js.br +0 -0
  199. package/dist/web/assets/message-response-CBOOkYPm.js.gz +0 -0
  200. package/dist/web/assets/patch-diff-viewer-BHcdOhhw.js +1409 -0
  201. package/dist/web/assets/patch-diff-viewer-BHcdOhhw.js.br +0 -0
  202. package/dist/web/assets/patch-diff-viewer-BHcdOhhw.js.gz +0 -0
  203. package/dist/web/assets/perl-Br95gH8g.js +1 -0
  204. package/dist/web/assets/perl-Br95gH8g.js.br +0 -0
  205. package/dist/web/assets/perl-Br95gH8g.js.gz +0 -0
  206. package/dist/web/assets/php-CYrBA5iX.js +1 -0
  207. package/dist/web/assets/php-CYrBA5iX.js.br +0 -0
  208. package/dist/web/assets/php-CYrBA5iX.js.gz +0 -0
  209. package/dist/web/assets/prompt-input-controls-CrypM5HZ.js +1 -0
  210. package/dist/web/assets/prompt-input-controls-CrypM5HZ.js.br +0 -0
  211. package/dist/web/assets/prompt-input-controls-CrypM5HZ.js.gz +0 -0
  212. package/dist/web/assets/prompt-reference-token-Cxx6C-IR.js +1 -0
  213. package/dist/web/assets/prompt-reference-token-Cxx6C-IR.js.br +0 -0
  214. package/dist/web/assets/prompt-reference-token-Cxx6C-IR.js.gz +0 -0
  215. package/dist/web/assets/provider-connection-queries-C40YvSEy.js +1 -0
  216. package/dist/web/assets/provider-connection-queries-C40YvSEy.js.br +0 -0
  217. package/dist/web/assets/provider-connection-queries-C40YvSEy.js.gz +0 -0
  218. package/dist/web/assets/python-gzcpVVnB.js +1 -0
  219. package/dist/web/assets/python-gzcpVVnB.js.br +0 -0
  220. package/dist/web/assets/python-gzcpVVnB.js.gz +0 -0
  221. package/dist/web/assets/react-runtime-CVaUQXZF.js +9 -0
  222. package/dist/web/assets/react-runtime-CVaUQXZF.js.br +0 -0
  223. package/dist/web/assets/react-runtime-CVaUQXZF.js.gz +0 -0
  224. package/dist/web/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  225. package/dist/web/assets/rolldown-runtime-QTnfLwEv.js.br +0 -0
  226. package/dist/web/assets/rolldown-runtime-QTnfLwEv.js.gz +0 -0
  227. package/dist/web/assets/ruby-CbXu8Ywv.js +1 -0
  228. package/dist/web/assets/ruby-CbXu8Ywv.js.br +0 -0
  229. package/dist/web/assets/ruby-CbXu8Ywv.js.gz +0 -0
  230. package/dist/web/assets/rust-Cfkwpbl8.js +1 -0
  231. package/dist/web/assets/rust-Cfkwpbl8.js.br +0 -0
  232. package/dist/web/assets/rust-Cfkwpbl8.js.gz +0 -0
  233. package/dist/web/assets/scss-DHtrkMkT.js +1 -0
  234. package/dist/web/assets/scss-DHtrkMkT.js.br +0 -0
  235. package/dist/web/assets/scss-DHtrkMkT.js.gz +0 -0
  236. package/dist/web/assets/shellscript-BiGZg9Om.js +1 -0
  237. package/dist/web/assets/shellscript-BiGZg9Om.js.br +0 -0
  238. package/dist/web/assets/shellscript-BiGZg9Om.js.gz +0 -0
  239. package/dist/web/assets/shellscript-CqHdAlCp.js +1 -0
  240. package/dist/web/assets/shellscript-CqHdAlCp.js.br +0 -0
  241. package/dist/web/assets/shellscript-CqHdAlCp.js.gz +0 -0
  242. package/dist/web/assets/shiki-bundle-DzEBOJSk.js +1 -0
  243. package/dist/web/assets/shiki-bundle-DzEBOJSk.js.br +0 -0
  244. package/dist/web/assets/shiki-bundle-DzEBOJSk.js.gz +0 -0
  245. package/dist/web/assets/sql-0Qcw9ht3.js +1 -0
  246. package/dist/web/assets/sql-0Qcw9ht3.js.br +0 -0
  247. package/dist/web/assets/sql-0Qcw9ht3.js.gz +0 -0
  248. package/dist/web/assets/sql-CP0rg-5b.js +1 -0
  249. package/dist/web/assets/sql-CP0rg-5b.js.br +0 -0
  250. package/dist/web/assets/sql-CP0rg-5b.js.gz +0 -0
  251. package/dist/web/assets/svelte-BUVJxsYv.js +1 -0
  252. package/dist/web/assets/svelte-BUVJxsYv.js.br +0 -0
  253. package/dist/web/assets/svelte-BUVJxsYv.js.gz +0 -0
  254. package/dist/web/assets/swift-DonLKvLd.js +1 -0
  255. package/dist/web/assets/swift-DonLKvLd.js.br +0 -0
  256. package/dist/web/assets/swift-DonLKvLd.js.gz +0 -0
  257. package/dist/web/assets/toml-CcmNWLt0.js +1 -0
  258. package/dist/web/assets/toml-CcmNWLt0.js.br +0 -0
  259. package/dist/web/assets/toml-CcmNWLt0.js.gz +0 -0
  260. package/dist/web/assets/tsx-5f3ulCja.js +1 -0
  261. package/dist/web/assets/tsx-5f3ulCja.js.br +0 -0
  262. package/dist/web/assets/tsx-5f3ulCja.js.gz +0 -0
  263. package/dist/web/assets/tsx-BOvsFOI6.js +1 -0
  264. package/dist/web/assets/tsx-BOvsFOI6.js.br +0 -0
  265. package/dist/web/assets/tsx-BOvsFOI6.js.gz +0 -0
  266. package/dist/web/assets/typescript-Utq2Cl8c.js +1 -0
  267. package/dist/web/assets/typescript-Utq2Cl8c.js.br +0 -0
  268. package/dist/web/assets/typescript-Utq2Cl8c.js.gz +0 -0
  269. package/dist/web/assets/typescript-j_1H8WHN.js +1 -0
  270. package/dist/web/assets/typescript-j_1H8WHN.js.br +0 -0
  271. package/dist/web/assets/typescript-j_1H8WHN.js.gz +0 -0
  272. package/dist/web/assets/vue-BpAUjojh.js +1 -0
  273. package/dist/web/assets/vue-BpAUjojh.js.br +0 -0
  274. package/dist/web/assets/vue-BpAUjojh.js.gz +0 -0
  275. package/dist/web/assets/workbench-inspector-changes-RHaBVG45.js +1 -0
  276. package/dist/web/assets/workbench-inspector-changes-RHaBVG45.js.br +0 -0
  277. package/dist/web/assets/workbench-inspector-changes-RHaBVG45.js.gz +0 -0
  278. package/dist/web/assets/workbench-shell--6Y1cx2L.js +12 -0
  279. package/dist/web/assets/workbench-shell--6Y1cx2L.js.br +0 -0
  280. package/dist/web/assets/workbench-shell--6Y1cx2L.js.gz +0 -0
  281. package/dist/web/assets/xml-CoDIzWF0.js +1 -0
  282. package/dist/web/assets/xml-CoDIzWF0.js.br +0 -0
  283. package/dist/web/assets/xml-CoDIzWF0.js.gz +0 -0
  284. package/dist/web/assets/xml-WY0zc4PG.js +1 -0
  285. package/dist/web/assets/xml-WY0zc4PG.js.br +0 -0
  286. package/dist/web/assets/xml-WY0zc4PG.js.gz +0 -0
  287. package/dist/web/assets/yaml-CxbubiML.js +1 -0
  288. package/dist/web/assets/yaml-CxbubiML.js.br +0 -0
  289. package/dist/web/assets/yaml-CxbubiML.js.gz +0 -0
  290. package/dist/web/assets/yaml-DijMHRDA.js +1 -0
  291. package/dist/web/assets/yaml-DijMHRDA.js.br +0 -0
  292. package/dist/web/assets/yaml-DijMHRDA.js.gz +0 -0
  293. package/dist/web/brand/codexly-logo.svg +34 -0
  294. package/dist/web/brand/codexly-logo.svg.br +0 -0
  295. package/dist/web/brand/codexly-logo.svg.gz +0 -0
  296. package/dist/web/brand/codexly-mark.svg +21 -0
  297. package/dist/web/brand/codexly-mark.svg.br +0 -0
  298. package/dist/web/brand/codexly-mark.svg.gz +0 -0
  299. package/dist/web/favicon.svg +20 -0
  300. package/dist/web/favicon.svg.br +0 -0
  301. package/dist/web/favicon.svg.gz +0 -0
  302. package/dist/web/index.html +25 -0
  303. package/dist/web/index.html.br +0 -0
  304. package/dist/web/index.html.gz +0 -0
  305. package/package.json +85 -0
@@ -0,0 +1,661 @@
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
+ reasoningEffort: row.reasoning_effort,
118
+ sandboxMode: row.sandbox_mode
119
+ };
120
+ }
121
+ function providerConnectionFromRow(row) {
122
+ if (row === void 0) {
123
+ return void 0;
124
+ }
125
+ return {
126
+ customBaseUrl: row.custom_base_url,
127
+ customModelsJson: row.custom_models_json,
128
+ mode: row.mode,
129
+ updatedAt: row.updated_at
130
+ };
131
+ }
132
+ function hasTable(database2, tableName) {
133
+ return database2.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?").get(tableName) !== void 0;
134
+ }
135
+ function configureDatabase(database2) {
136
+ database2.pragma("journal_mode = WAL");
137
+ database2.pragma("foreign_keys = ON");
138
+ database2.pragma("synchronous = NORMAL");
139
+ database2.pragma("busy_timeout = 5000");
140
+ }
141
+ function readMigrationVersion(database2) {
142
+ if (!hasTable(database2, "schema_migrations")) {
143
+ return 0;
144
+ }
145
+ return database2.prepare("SELECT COALESCE(MAX(version), 0) AS version FROM schema_migrations").get().version;
146
+ }
147
+ function runMigrations(database2, migrations, onMigrationApplied = () => {
148
+ }) {
149
+ database2.exec(`
150
+ CREATE TABLE IF NOT EXISTS schema_migrations (
151
+ version INTEGER PRIMARY KEY,
152
+ name TEXT NOT NULL,
153
+ applied_at TEXT NOT NULL
154
+ ) STRICT;
155
+ `);
156
+ const applied = new Set(
157
+ database2.prepare("SELECT version FROM schema_migrations").all().map((row) => row.version)
158
+ );
159
+ let previousVersion = 0;
160
+ for (const migration of migrations) {
161
+ if (!Number.isInteger(migration.version) || migration.version <= previousVersion || typeof migration.name !== "string" || typeof migration.sql !== "string") {
162
+ throw new Error("Invalid SQLite migration definition");
163
+ }
164
+ previousVersion = migration.version;
165
+ if (applied.has(migration.version)) {
166
+ continue;
167
+ }
168
+ database2.transaction(() => {
169
+ database2.exec(migration.sql);
170
+ onMigrationApplied(migration.version);
171
+ database2.prepare("INSERT INTO schema_migrations (version, name, applied_at) VALUES (?, ?, ?)").run(migration.version, migration.name, (/* @__PURE__ */ new Date()).toISOString());
172
+ })();
173
+ }
174
+ }
175
+ function initializeProjectSourceMigration(database2, previousMigrationVersion) {
176
+ if (!hasTable(database2, "project_source_migration")) {
177
+ return;
178
+ }
179
+ database2.prepare(
180
+ `INSERT OR IGNORE INTO project_source_migration
181
+ (id, completed, recover_unassigned) VALUES (1, 0, ?)`
182
+ ).run(previousMigrationVersion === 14 ? 1 : 0);
183
+ }
184
+ function ensureGlobalSettingsCompatibility(database2) {
185
+ if (!hasTable(database2, "global_settings")) {
186
+ return;
187
+ }
188
+ const columns = new Set(
189
+ database2.prepare("PRAGMA table_info(global_settings)").all().map((column) => column.name)
190
+ );
191
+ database2.transaction(() => {
192
+ if (!columns.has("fast_mode")) {
193
+ database2.exec(`
194
+ ALTER TABLE global_settings
195
+ ADD COLUMN fast_mode INTEGER NOT NULL DEFAULT 0
196
+ CHECK (fast_mode IN (0, 1));
197
+ `);
198
+ }
199
+ if (!columns.has("commit_message_reasoning_effort")) {
200
+ database2.exec(`
201
+ ALTER TABLE global_settings
202
+ ADD COLUMN commit_message_reasoning_effort TEXT NOT NULL DEFAULT '';
203
+ UPDATE global_settings
204
+ SET commit_message_reasoning_effort = reasoning_effort;
205
+ `);
206
+ }
207
+ })();
208
+ }
209
+
210
+ // packages/server/src/sqlite-state-worker.js
211
+ function serializeError(error) {
212
+ return {
213
+ message: error instanceof Error ? error.message : String(error),
214
+ name: error instanceof Error ? error.name : "Error"
215
+ };
216
+ }
217
+ function createOperations(database2) {
218
+ const statements = hasTable(database2, "projects") && hasTable(database2, "project_roots") ? {
219
+ upsertProject: database2.prepare(
220
+ `INSERT INTO projects (id, name, created_at, sort_order, kind)
221
+ VALUES (?, ?, ?, (
222
+ SELECT COALESCE(MAX(sort_order) + 1, 0) FROM projects WHERE kind = 'user'
223
+ ), 'user')
224
+ ON CONFLICT(id) DO UPDATE SET
225
+ name = excluded.name,
226
+ created_at = excluded.created_at
227
+ WHERE projects.kind = 'user'`
228
+ ),
229
+ upsertProjectAtOrder: database2.prepare(
230
+ `INSERT INTO projects (id, name, created_at, sort_order, kind)
231
+ VALUES (?, ?, ?, ?, 'user')
232
+ ON CONFLICT(id) DO UPDATE SET
233
+ name = excluded.name,
234
+ created_at = excluded.created_at,
235
+ sort_order = excluded.sort_order
236
+ WHERE projects.kind = 'user'`
237
+ ),
238
+ listProjects: database2.prepare(
239
+ "SELECT id, name, created_at FROM projects WHERE kind = 'user' ORDER BY sort_order, created_at, id"
240
+ ),
241
+ listProjectRoots: database2.prepare(
242
+ `SELECT project_roots.project_id, project_roots.root_id, project_roots.path
243
+ FROM project_roots
244
+ JOIN projects ON projects.id = project_roots.project_id
245
+ WHERE projects.kind = 'user'
246
+ ORDER BY projects.sort_order, projects.created_at, projects.id, project_roots.position`
247
+ ),
248
+ listProjectIds: database2.prepare(
249
+ "SELECT id FROM projects WHERE kind = 'user' ORDER BY sort_order, created_at, id"
250
+ ),
251
+ readProject: database2.prepare("SELECT id, name, created_at FROM projects WHERE id = ?"),
252
+ readProjectWithOrder: database2.prepare(
253
+ "SELECT id, name, created_at, sort_order FROM projects WHERE id = ? AND kind = 'user'"
254
+ ),
255
+ readProjectRoots: database2.prepare(
256
+ "SELECT project_id, root_id, path FROM project_roots WHERE project_id = ? ORDER BY position"
257
+ ),
258
+ removeProjectRoots: database2.prepare("DELETE FROM project_roots WHERE project_id = ?"),
259
+ writeProjectRoot: database2.prepare(
260
+ "INSERT INTO project_roots (project_id, position, root_id, path) VALUES (?, ?, ?, ?)"
261
+ ),
262
+ removeProject: database2.prepare("DELETE FROM projects WHERE id = ? AND kind = 'user'"),
263
+ copyProjectDefaults: database2.prepare(
264
+ `INSERT INTO project_defaults
265
+ (project_id, model, reasoning_effort, updated_at, sandbox_mode,
266
+ approval_policy, approvals_reviewer, fast_mode)
267
+ SELECT ?, model, reasoning_effort, updated_at, sandbox_mode,
268
+ approval_policy, approvals_reviewer, fast_mode
269
+ FROM project_defaults WHERE project_id = ?
270
+ ON CONFLICT(project_id) DO UPDATE SET
271
+ model = excluded.model,
272
+ reasoning_effort = excluded.reasoning_effort,
273
+ updated_at = excluded.updated_at,
274
+ sandbox_mode = excluded.sandbox_mode,
275
+ approval_policy = excluded.approval_policy,
276
+ approvals_reviewer = excluded.approvals_reviewer,
277
+ fast_mode = excluded.fast_mode`
278
+ ),
279
+ copyTaskSettings: database2.prepare(
280
+ `INSERT INTO task_settings
281
+ (project_id, task_id, approval_policy, model, reasoning_effort, updated_at,
282
+ sandbox_mode, approvals_reviewer)
283
+ SELECT ?, task_id, approval_policy, model, reasoning_effort, updated_at,
284
+ sandbox_mode, approvals_reviewer
285
+ FROM task_settings WHERE project_id = ?
286
+ ON CONFLICT(project_id, task_id) DO UPDATE SET
287
+ approval_policy = excluded.approval_policy,
288
+ model = excluded.model,
289
+ reasoning_effort = excluded.reasoning_effort,
290
+ updated_at = excluded.updated_at,
291
+ sandbox_mode = excluded.sandbox_mode,
292
+ approvals_reviewer = excluded.approvals_reviewer`
293
+ ),
294
+ writeProjectSortOrder: database2.prepare(
295
+ "UPDATE projects SET sort_order = ? WHERE id = ? AND kind = 'user'"
296
+ ),
297
+ readProjectDefaults: database2.prepare(
298
+ `SELECT approval_policy, approvals_reviewer, fast_mode, model,
299
+ reasoning_effort, sandbox_mode
300
+ FROM project_defaults WHERE project_id = ?`
301
+ ),
302
+ readGlobalSettings: database2.prepare(
303
+ `SELECT approval_policy, approvals_reviewer, commit_message_model,
304
+ commit_message_prompt, model, reasoning_effort, sandbox_mode,
305
+ default_open_app_id, fast_mode, follow_up_behavior
306
+ FROM global_settings WHERE id = 1`
307
+ ),
308
+ readProviderConnection: database2.prepare(
309
+ `SELECT mode, custom_base_url, custom_models_json, updated_at
310
+ FROM provider_connection WHERE id = 1`
311
+ ),
312
+ readTaskSettings: database2.prepare(
313
+ "SELECT approval_policy, approvals_reviewer, model, reasoning_effort, sandbox_mode FROM task_settings WHERE project_id = ? AND task_id = ?"
314
+ ),
315
+ writeProjectDefaults: database2.prepare(`
316
+ INSERT INTO project_defaults (
317
+ project_id, approval_policy, approvals_reviewer, fast_mode, model,
318
+ reasoning_effort, sandbox_mode, updated_at
319
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
320
+ ON CONFLICT(project_id) DO UPDATE SET
321
+ approval_policy = excluded.approval_policy,
322
+ approvals_reviewer = excluded.approvals_reviewer,
323
+ fast_mode = excluded.fast_mode,
324
+ model = excluded.model,
325
+ reasoning_effort = excluded.reasoning_effort,
326
+ sandbox_mode = excluded.sandbox_mode,
327
+ updated_at = excluded.updated_at
328
+ `),
329
+ writeGlobalSettings: database2.prepare(`
330
+ INSERT INTO global_settings (
331
+ id, approval_policy, approvals_reviewer, commit_message_model, commit_message_prompt,
332
+ model, reasoning_effort, sandbox_mode, default_open_app_id, fast_mode,
333
+ follow_up_behavior, updated_at
334
+ ) VALUES (1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
335
+ ON CONFLICT(id) DO UPDATE SET
336
+ approval_policy = excluded.approval_policy,
337
+ approvals_reviewer = excluded.approvals_reviewer,
338
+ commit_message_model = excluded.commit_message_model,
339
+ commit_message_prompt = excluded.commit_message_prompt,
340
+ model = excluded.model,
341
+ reasoning_effort = excluded.reasoning_effort,
342
+ sandbox_mode = excluded.sandbox_mode,
343
+ default_open_app_id = excluded.default_open_app_id,
344
+ fast_mode = excluded.fast_mode,
345
+ follow_up_behavior = excluded.follow_up_behavior,
346
+ updated_at = excluded.updated_at
347
+ `),
348
+ writeProviderConnection: database2.prepare(`
349
+ INSERT INTO provider_connection (
350
+ id, mode, custom_base_url, custom_models_json, updated_at
351
+ ) VALUES (1, ?, ?, ?, ?)
352
+ ON CONFLICT(id) DO UPDATE SET
353
+ mode = excluded.mode,
354
+ custom_base_url = excluded.custom_base_url,
355
+ custom_models_json = excluded.custom_models_json,
356
+ updated_at = excluded.updated_at
357
+ `),
358
+ writeTaskSettings: database2.prepare(`
359
+ INSERT INTO task_settings (
360
+ project_id, task_id, approval_policy, approvals_reviewer, model, reasoning_effort, sandbox_mode, updated_at
361
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
362
+ ON CONFLICT(project_id, task_id) DO UPDATE SET
363
+ approval_policy = excluded.approval_policy,
364
+ approvals_reviewer = excluded.approvals_reviewer,
365
+ model = excluded.model,
366
+ reasoning_effort = excluded.reasoning_effort,
367
+ sandbox_mode = excluded.sandbox_mode,
368
+ updated_at = excluded.updated_at
369
+ `)
370
+ } : void 0;
371
+ function requireStatements() {
372
+ if (statements === void 0) {
373
+ throw new Error("SQLite state tables are unavailable");
374
+ }
375
+ return statements;
376
+ }
377
+ function readStoredProject(projectId) {
378
+ const stateStatements = requireStatements();
379
+ return projectFromRows(
380
+ stateStatements.readProject.get(projectId),
381
+ stateStatements.readProjectRoots.all(projectId)
382
+ );
383
+ }
384
+ function readStoredProjects() {
385
+ const stateStatements = requireStatements();
386
+ return projectsFromRows(
387
+ stateStatements.listProjects.all(),
388
+ stateStatements.listProjectRoots.all()
389
+ );
390
+ }
391
+ function replaceStoredRoots(project) {
392
+ const stateStatements = requireStatements();
393
+ if (!Array.isArray(project.roots) || project.roots.length === 0) {
394
+ throw new Error("Project roots must contain a primary root");
395
+ }
396
+ const rootIds = project.roots.map((root) => root.id);
397
+ const paths = project.roots.map((root) => root.path);
398
+ if (rootIds.some((rootId) => typeof rootId !== "string" || rootId.length === 0)) {
399
+ throw new Error("Project root ids must be non-empty strings");
400
+ }
401
+ if (new Set(rootIds).size !== rootIds.length) {
402
+ throw new Error("Project root ids must be unique");
403
+ }
404
+ if (paths.some((path) => typeof path !== "string" || path.length === 0)) {
405
+ throw new Error("Project root paths must be non-empty strings");
406
+ }
407
+ if (new Set(paths).size !== paths.length) {
408
+ throw new Error("Project root paths must be unique");
409
+ }
410
+ stateStatements.removeProjectRoots.run(project.id);
411
+ paths.forEach((path, position) => {
412
+ stateStatements.writeProjectRoot.run(project.id, position, rootIds[position], path);
413
+ });
414
+ }
415
+ const reorderProjects = database2.transaction((projectIds) => {
416
+ const stateStatements = requireStatements();
417
+ const storedProjectIds = stateStatements.listProjectIds.all().map((row) => row.id);
418
+ const requestedProjectIds = new Set(projectIds);
419
+ const containsCompleteProjectSet = projectIds.length === storedProjectIds.length && requestedProjectIds.size === storedProjectIds.length && storedProjectIds.every((projectId) => requestedProjectIds.has(projectId));
420
+ if (!containsCompleteProjectSet) {
421
+ throw new Error("Project order must contain every project exactly once");
422
+ }
423
+ projectIds.forEach((projectId, sortOrder) => {
424
+ stateStatements.writeProjectSortOrder.run(sortOrder, projectId);
425
+ });
426
+ return readStoredProjects();
427
+ });
428
+ const replaceProjects = database2.transaction((projects) => {
429
+ const stateStatements = requireStatements();
430
+ const projectIds = new Set(projects.map((project) => project.id));
431
+ if (projectIds.size !== projects.length) {
432
+ throw new Error("Project projection must contain unique project ids");
433
+ }
434
+ for (const { id } of stateStatements.listProjectIds.all()) {
435
+ if (!projectIds.has(id)) {
436
+ stateStatements.removeProject.run(id);
437
+ }
438
+ }
439
+ projects.forEach((project, sortOrder) => {
440
+ stateStatements.upsertProjectAtOrder.run(
441
+ project.id,
442
+ project.name,
443
+ project.createdAt,
444
+ sortOrder
445
+ );
446
+ replaceStoredRoots(project);
447
+ });
448
+ return readStoredProjects();
449
+ });
450
+ const migrateProject = database2.transaction((legacyProjectId, project) => {
451
+ const stateStatements = requireStatements();
452
+ const legacy = stateStatements.readProjectWithOrder.get(legacyProjectId);
453
+ const sortOrder = legacy?.sort_order ?? stateStatements.listProjectIds.all().length;
454
+ stateStatements.upsertProjectAtOrder.run(
455
+ project.id,
456
+ project.name,
457
+ project.createdAt,
458
+ sortOrder
459
+ );
460
+ replaceStoredRoots(project);
461
+ if (legacyProjectId !== project.id && legacy !== void 0) {
462
+ stateStatements.copyProjectDefaults.run(project.id, legacyProjectId);
463
+ stateStatements.copyTaskSettings.run(project.id, legacyProjectId);
464
+ stateStatements.removeProject.run(legacyProjectId);
465
+ }
466
+ const stored = readStoredProject(project.id);
467
+ if (stored === void 0) {
468
+ throw new Error("Migrated Project projection could not be stored");
469
+ }
470
+ return stored;
471
+ });
472
+ const projectSourceMigrationStatements = hasTable(database2, "project_source_migration") ? {
473
+ complete: database2.prepare(
474
+ "UPDATE project_source_migration SET completed = 1 WHERE id = 1"
475
+ ),
476
+ read: database2.prepare(
477
+ "SELECT completed, recover_unassigned FROM project_source_migration WHERE id = 1"
478
+ )
479
+ } : void 0;
480
+ return {
481
+ diagnose() {
482
+ database2.exec("BEGIN IMMEDIATE");
483
+ try {
484
+ database2.prepare(
485
+ "INSERT INTO schema_migrations (version, name, applied_at) VALUES (-1, 'doctor', ?)"
486
+ ).run((/* @__PURE__ */ new Date()).toISOString());
487
+ } finally {
488
+ database2.exec("ROLLBACK");
489
+ }
490
+ const synchronousValue = database2.pragma("synchronous", { simple: true });
491
+ return {
492
+ busyTimeout: database2.pragma("busy_timeout", { simple: true }),
493
+ foreignKeys: database2.pragma("foreign_keys", { simple: true }) === 1,
494
+ integrityCheck: database2.pragma("integrity_check", { simple: true }),
495
+ journalMode: database2.pragma("journal_mode", { simple: true }),
496
+ migrationVersion: database2.prepare("SELECT COALESCE(MAX(version), 0) AS version FROM schema_migrations").get().version,
497
+ synchronous: synchronousValue === 1 ? "normal" : String(synchronousValue),
498
+ writable: true
499
+ };
500
+ },
501
+ completeProjectSourceMigration() {
502
+ if (projectSourceMigrationStatements === void 0) {
503
+ throw new Error("Project source migration state is unavailable");
504
+ }
505
+ projectSourceMigrationStatements.complete.run();
506
+ return null;
507
+ },
508
+ listProjects() {
509
+ return readStoredProjects();
510
+ },
511
+ readProject(payload) {
512
+ return readStoredProject(payload.projectId);
513
+ },
514
+ readProjectSourceMigration() {
515
+ if (projectSourceMigrationStatements === void 0) {
516
+ throw new Error("Project source migration state is unavailable");
517
+ }
518
+ const row = projectSourceMigrationStatements.read.get();
519
+ if (row === void 0) {
520
+ throw new Error("Project source migration state is missing");
521
+ }
522
+ return {
523
+ completed: row.completed === 1,
524
+ recoverUnassigned: row.recover_unassigned === 1
525
+ };
526
+ },
527
+ replaceProjects(payload) {
528
+ return replaceProjects(payload.projects);
529
+ },
530
+ upsertProject(payload) {
531
+ return database2.transaction((project) => {
532
+ const stateStatements = requireStatements();
533
+ stateStatements.upsertProject.run(project.id, project.name, project.createdAt);
534
+ replaceStoredRoots(project);
535
+ const stored = readStoredProject(project.id);
536
+ if (stored === void 0) {
537
+ throw new Error("Project projection could not be stored");
538
+ }
539
+ return stored;
540
+ })(payload.project);
541
+ },
542
+ migrateProject(payload) {
543
+ return migrateProject(payload.legacyProjectId, payload.project);
544
+ },
545
+ deleteProject(payload) {
546
+ return requireStatements().removeProject.run(payload.projectId).changes > 0;
547
+ },
548
+ setProjectOrder(payload) {
549
+ return reorderProjects(payload.projectIds);
550
+ },
551
+ readProjectDefaults(payload) {
552
+ return projectDefaultsFromRow(requireStatements().readProjectDefaults.get(payload.projectId));
553
+ },
554
+ readGlobalSettings() {
555
+ return globalSettingsFromRow(requireStatements().readGlobalSettings.get());
556
+ },
557
+ readProviderConnection() {
558
+ return providerConnectionFromRow(requireStatements().readProviderConnection.get());
559
+ },
560
+ readTaskSettings(payload) {
561
+ return taskSettingsFromRow(
562
+ requireStatements().readTaskSettings.get(payload.projectId, payload.taskId)
563
+ );
564
+ },
565
+ writeProjectDefaults(payload) {
566
+ const settings = payload.settings;
567
+ requireStatements().writeProjectDefaults.run(
568
+ payload.projectId,
569
+ serializeApprovalPolicy(settings.approvalPolicy),
570
+ settings.approvalsReviewer,
571
+ settings.fastMode ? 1 : 0,
572
+ settings.model,
573
+ settings.reasoningEffort,
574
+ settings.sandboxMode,
575
+ payload.updatedAt
576
+ );
577
+ return settings;
578
+ },
579
+ writeGlobalSettings(payload) {
580
+ const settings = payload.settings;
581
+ requireStatements().writeGlobalSettings.run(
582
+ serializeApprovalPolicy(settings.approvalPolicy),
583
+ settings.approvalsReviewer,
584
+ settings.commitMessageModel,
585
+ settings.commitMessagePrompt,
586
+ settings.model,
587
+ settings.reasoningEffort,
588
+ settings.sandboxMode,
589
+ settings.defaultOpenAppId,
590
+ settings.fastMode ? 1 : 0,
591
+ settings.followUpBehavior,
592
+ payload.updatedAt
593
+ );
594
+ return settings;
595
+ },
596
+ writeProviderConnection(payload) {
597
+ requireStatements().writeProviderConnection.run(
598
+ payload.mode,
599
+ payload.customBaseUrl,
600
+ payload.customModelsJson,
601
+ payload.updatedAt
602
+ );
603
+ return null;
604
+ },
605
+ writeTaskSettings(payload) {
606
+ const settings = payload.settings;
607
+ requireStatements().writeTaskSettings.run(
608
+ payload.projectId,
609
+ payload.taskId,
610
+ serializeApprovalPolicy(settings.approvalPolicy),
611
+ settings.approvalsReviewer,
612
+ settings.model,
613
+ settings.reasoningEffort,
614
+ settings.sandboxMode,
615
+ payload.updatedAt
616
+ );
617
+ return settings;
618
+ }
619
+ };
620
+ }
621
+ var database;
622
+ try {
623
+ mkdirSync(resolve(workerData.databasePath, ".."), { recursive: true });
624
+ database = new Database(workerData.databasePath);
625
+ configureDatabase(database);
626
+ const previousMigrationVersion = readMigrationVersion(database);
627
+ runMigrations(database, workerData.migrations, (version) => {
628
+ if (version === 15) {
629
+ initializeProjectSourceMigration(database, previousMigrationVersion);
630
+ }
631
+ });
632
+ initializeProjectSourceMigration(database, previousMigrationVersion);
633
+ ensureGlobalSettingsCompatibility(database);
634
+ const operations = createOperations(database);
635
+ parentPort.on("message", (message) => {
636
+ try {
637
+ if (message.operation === "close") {
638
+ database.close();
639
+ parentPort.postMessage({ id: message.id, result: null, type: "response" });
640
+ parentPort.close();
641
+ return;
642
+ }
643
+ const operation = operations[message.operation];
644
+ if (typeof operation !== "function") {
645
+ throw new Error(`Unknown SQLite worker operation: ${String(message.operation)}`);
646
+ }
647
+ parentPort.postMessage({
648
+ id: message.id,
649
+ result: operation(message.payload),
650
+ type: "response"
651
+ });
652
+ } catch (error) {
653
+ parentPort.postMessage({ id: message.id, error: serializeError(error), type: "response" });
654
+ }
655
+ });
656
+ parentPort.postMessage({ type: "ready" });
657
+ } catch (error) {
658
+ database?.close();
659
+ parentPort.postMessage({ error: serializeError(error), type: "fatal" });
660
+ parentPort.close();
661
+ }