@cryptiklemur/lattice 1.47.0 → 2.0.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 (597) hide show
  1. package/README.md +14 -36
  2. package/bin/lattice +5 -21
  3. package/dist/client/assets/abap-DOv5zRgd.js +1 -0
  4. package/dist/client/assets/actionscript-3-D_b0n2Ff.js +1 -0
  5. package/dist/client/assets/ada-C6m8O36S.js +1 -0
  6. package/dist/client/assets/andromeeda-LdzAHaKR.js +1 -0
  7. package/dist/client/assets/angular-html-BBi1Szz5.js +1 -0
  8. package/dist/client/assets/angular-ts-2PMpSPqc.js +1 -0
  9. package/dist/client/assets/apache-CE7PmWoU.js +1 -0
  10. package/dist/client/assets/apex-DOfNfL0V.js +1 -0
  11. package/dist/client/assets/apl-B-NEtBvQ.js +1 -0
  12. package/dist/client/assets/applescript-D4zGaScB.js +1 -0
  13. package/dist/client/assets/ara-DMoCP0pJ.js +1 -0
  14. package/dist/client/assets/asciidoc-BkmPq932.js +1 -0
  15. package/dist/client/assets/asm-ClIKbvsu.js +1 -0
  16. package/dist/client/assets/astro-mxH1DA5Z.js +1 -0
  17. package/dist/client/assets/aurora-x-DTcNXZIS.js +1 -0
  18. package/dist/client/assets/awk-D1ZOsISX.js +1 -0
  19. package/dist/client/assets/ayu-dark-DpNcORnA.js +1 -0
  20. package/dist/client/assets/ayu-light-lHqf0ddo.js +1 -0
  21. package/dist/client/assets/ayu-mirage-Dji5RWiH.js +1 -0
  22. package/dist/client/assets/ballerina-H14_EqPr.js +1 -0
  23. package/dist/client/assets/bat-cyb3gF8B.js +1 -0
  24. package/dist/client/assets/beancount-D84pBacF.js +1 -0
  25. package/dist/client/assets/berry-B29XeKK4.js +1 -0
  26. package/dist/client/assets/bibtex-Hs7VvQaV.js +1 -0
  27. package/dist/client/assets/bicep-CugTE5CQ.js +1 -0
  28. package/dist/client/assets/bird2-mieRHotO.js +1 -0
  29. package/dist/client/assets/blade-BUQ9XSm3.js +1 -0
  30. package/dist/client/assets/bsl-BRmzGEWg.js +1 -0
  31. package/dist/client/assets/c-DrQixLw7.js +1 -0
  32. package/dist/client/assets/c3-Dx2gByXW.js +1 -0
  33. package/dist/client/assets/cadence-CCTSwj3w.js +1 -0
  34. package/dist/client/assets/cairo-CaIu88t6.js +1 -0
  35. package/dist/client/assets/catppuccin-frappe-DQrU04q0.js +1 -0
  36. package/dist/client/assets/catppuccin-latte-B_oiWZka.js +1 -0
  37. package/dist/client/assets/catppuccin-macchiato-D8VB2qi4.js +1 -0
  38. package/dist/client/assets/catppuccin-mocha-5vkMJ1Mb.js +1 -0
  39. package/dist/client/assets/clarity-BbUNTPrg.js +1 -0
  40. package/dist/client/assets/clojure-Bcw7lCta.js +1 -0
  41. package/dist/client/assets/cmake-DM0FE-T9.js +1 -0
  42. package/dist/client/assets/cobol-42amjOMh.js +1 -0
  43. package/dist/client/assets/codeowners-CBvEPOlS.js +1 -0
  44. package/dist/client/assets/codeql-CjS8Tp16.js +1 -0
  45. package/dist/client/assets/coffee-CMSEUKyy.js +1 -0
  46. package/dist/client/assets/common-lisp-BCx4dVK8.js +1 -0
  47. package/dist/client/assets/coq-Ddo7YIsR.js +1 -0
  48. package/dist/client/assets/cpp-C4yJBzl2.js +1 -0
  49. package/dist/client/assets/crystal-DZ27EoiA.js +1 -0
  50. package/dist/client/assets/csharp-Kzd7Ey2d.js +1 -0
  51. package/dist/client/assets/css-CdQwkSNm.js +1 -0
  52. package/dist/client/assets/csv-DGwgERVJ.js +1 -0
  53. package/dist/client/assets/cue-CMabdDG0.js +1 -0
  54. package/dist/client/assets/cypher-CJUzJAhQ.js +1 -0
  55. package/dist/client/assets/d-BvLF4qGs.js +1 -0
  56. package/dist/client/assets/dark-plus-BMwvn5lx.js +1 -0
  57. package/dist/client/assets/dart-DxXbDeKR.js +1 -0
  58. package/dist/client/assets/dax-BvrCypuS.js +1 -0
  59. package/dist/client/assets/desktop-BEul_kAS.js +1 -0
  60. package/dist/client/assets/diff-B7rhrwA5.js +1 -0
  61. package/dist/client/assets/dist-CBRIe7YG.js +153 -0
  62. package/dist/client/assets/docker-9Zbx0dQX.js +1 -0
  63. package/dist/client/assets/dotenv-C0epktMv.js +1 -0
  64. package/dist/client/assets/dracula-CBD4ckb0.js +1 -0
  65. package/dist/client/assets/dracula-soft-CuGBZj_h.js +1 -0
  66. package/dist/client/assets/dream-maker-D6UB367x.js +1 -0
  67. package/dist/client/assets/edge-J8VemHZC.js +1 -0
  68. package/dist/client/assets/elixir-DU66qSn_.js +1 -0
  69. package/dist/client/assets/elm-8cz1JjRg.js +1 -0
  70. package/dist/client/assets/emacs-lisp-DFyMFAZA.js +1 -0
  71. package/dist/client/assets/erb-DMl63J6s.js +1 -0
  72. package/dist/client/assets/erlang-LvhGhZI3.js +1 -0
  73. package/dist/client/assets/everforest-dark-BhFNrp2k.js +1 -0
  74. package/dist/client/assets/everforest-light-CpIbZ9aT.js +1 -0
  75. package/dist/client/assets/fennel-CH1ohGYX.js +1 -0
  76. package/dist/client/assets/fish-D2X4h_sR.js +1 -0
  77. package/dist/client/assets/fluent-B_In4uB6.js +1 -0
  78. package/dist/client/assets/fortran-fixed-form-BXvkHMbK.js +1 -0
  79. package/dist/client/assets/fortran-free-form-Bw_JZ1tj.js +1 -0
  80. package/dist/client/assets/fsharp-uxIU8dwY.js +1 -0
  81. package/dist/client/assets/gdresource-DkI-mZL2.js +1 -0
  82. package/dist/client/assets/gdscript-DDro0rs8.js +1 -0
  83. package/dist/client/assets/gdshader-DkUeC1ld.js +1 -0
  84. package/dist/client/assets/genie-khT2hrp-.js +1 -0
  85. package/dist/client/assets/gherkin-CPELKal0.js +1 -0
  86. package/dist/client/assets/git-commit-a3TktZ3A.js +1 -0
  87. package/dist/client/assets/git-rebase-DjlZL8cj.js +1 -0
  88. package/dist/client/assets/github-dark-DQp1Qkx5.js +1 -0
  89. package/dist/client/assets/github-dark-default-BroO-mT3.js +1 -0
  90. package/dist/client/assets/github-dark-dimmed-D8UZ8uTL.js +1 -0
  91. package/dist/client/assets/github-dark-high-contrast-CM0RRMCj.js +1 -0
  92. package/dist/client/assets/github-light-BRTmX4Ht.js +1 -0
  93. package/dist/client/assets/github-light-default-dl7biQ4g.js +1 -0
  94. package/dist/client/assets/github-light-high-contrast-Cvzq8ZXJ.js +1 -0
  95. package/dist/client/assets/gleam-7UVjplRF.js +1 -0
  96. package/dist/client/assets/glimmer-js-Fu7vOQY-.js +1 -0
  97. package/dist/client/assets/glimmer-ts-AJljRs0A.js +1 -0
  98. package/dist/client/assets/glsl-CfodGzSv.js +1 -0
  99. package/dist/client/assets/gn-EcrZPIZo.js +1 -0
  100. package/dist/client/assets/gnuplot-CcsFlqcz.js +1 -0
  101. package/dist/client/assets/go-TqNfhUhh.js +1 -0
  102. package/dist/client/assets/graphql-C8GPKPx1.js +1 -0
  103. package/dist/client/assets/groovy-bfrzFpSZ.js +1 -0
  104. package/dist/client/assets/gruvbox-dark-hard-CBFL_VqK.js +1 -0
  105. package/dist/client/assets/gruvbox-dark-medium-Dn18r-Yz.js +1 -0
  106. package/dist/client/assets/gruvbox-dark-soft-DUyKWd02.js +1 -0
  107. package/dist/client/assets/gruvbox-light-hard-DV9RwKs4.js +1 -0
  108. package/dist/client/assets/gruvbox-light-medium-Ba-VIg48.js +1 -0
  109. package/dist/client/assets/gruvbox-light-soft-CVIZMKFx.js +1 -0
  110. package/dist/client/assets/hack-Gp6OuE21.js +1 -0
  111. package/dist/client/assets/haml-BOyG6GfM.js +1 -0
  112. package/dist/client/assets/handlebars-B9IoVRxd.js +1 -0
  113. package/dist/client/assets/haskell-DzEtL6Zk.js +1 -0
  114. package/dist/client/assets/haxe-wLDEcRoz.js +1 -0
  115. package/dist/client/assets/hcl-C1fs3gTM.js +1 -0
  116. package/dist/client/assets/hjson-B4b85MZo.js +1 -0
  117. package/dist/client/assets/hlsl-JhqkHhML.js +1 -0
  118. package/dist/client/assets/horizon-DMOEeSnA.js +1 -0
  119. package/dist/client/assets/horizon-bright-CPVackS9.js +1 -0
  120. package/dist/client/assets/houston-DSlR9wH9.js +1 -0
  121. package/dist/client/assets/html-CFrSukiU.js +1 -0
  122. package/dist/client/assets/html-derivative-D0_gRK_M.js +1 -0
  123. package/dist/client/assets/http-D4MmFixi.js +1 -0
  124. package/dist/client/assets/hurl-D1xbk-LS.js +1 -0
  125. package/dist/client/assets/hxml-Bdi_kWeE.js +1 -0
  126. package/dist/client/assets/hy-uAHU8420.js +1 -0
  127. package/dist/client/assets/imba-CPCwfD-G.js +1 -0
  128. package/dist/client/assets/index-DrTbNMzI.css +2 -0
  129. package/dist/client/assets/index-ZIuI5BCP.js +284 -0
  130. package/dist/client/assets/ini-2Ew1Qzj6.js +1 -0
  131. package/dist/client/assets/java-CfPMY1Dv.js +1 -0
  132. package/dist/client/assets/javascript-B8vNHeqm.js +1 -0
  133. package/dist/client/assets/jinja-CF0K8bFV.js +1 -0
  134. package/dist/client/assets/jison-BP7my5TL.js +1 -0
  135. package/dist/client/assets/json-TeXNjpMZ.js +1 -0
  136. package/dist/client/assets/json5-Dl8gAgq4.js +1 -0
  137. package/dist/client/assets/jsonc-C9b23pMf.js +1 -0
  138. package/dist/client/assets/jsonl-DkF3QjsY.js +1 -0
  139. package/dist/client/assets/jsonnet-DH4UkOBo.js +1 -0
  140. package/dist/client/assets/jssm-CBV9_O8o.js +1 -0
  141. package/dist/client/assets/jsx-C86NmHc2.js +1 -0
  142. package/dist/client/assets/julia-C58U_aQP.js +1 -0
  143. package/dist/client/assets/just-h6Vco8Qu.js +1 -0
  144. package/dist/client/assets/kanagawa-dragon-DLDXA4f2.js +1 -0
  145. package/dist/client/assets/kanagawa-lotus-qAvw6eOU.js +1 -0
  146. package/dist/client/assets/kanagawa-wave-DFO_g5Mb.js +1 -0
  147. package/dist/client/assets/kdl-BQl-X5Uf.js +1 -0
  148. package/dist/client/assets/kotlin-d6oenWPH.js +1 -0
  149. package/dist/client/assets/kusto-Cpu9Tdho.js +1 -0
  150. package/dist/client/assets/laserwave-Bbquw0Nf.js +1 -0
  151. package/dist/client/assets/latex-DRsNisjT.js +1 -0
  152. package/dist/client/assets/lean-CvyEisyW.js +1 -0
  153. package/dist/client/assets/less-B9RQiV1N.js +1 -0
  154. package/dist/client/assets/light-plus-Ch1Usv7R.js +1 -0
  155. package/dist/client/assets/liquid-C9jXC9M7.js +1 -0
  156. package/dist/client/assets/llvm-DtrwjsAs.js +1 -0
  157. package/dist/client/assets/log-JKbKuM4J.js +1 -0
  158. package/dist/client/assets/logo-BsxZM_eb.js +1 -0
  159. package/dist/client/assets/lua-BUYvdn-F.js +1 -0
  160. package/dist/client/assets/luau-D9oeBRnv.js +1 -0
  161. package/dist/client/assets/make-DLuqI3Sa.js +1 -0
  162. package/dist/client/assets/markdown-hfQzyr6v.js +1 -0
  163. package/dist/client/assets/marko-BqB4tqw-.js +1 -0
  164. package/dist/client/assets/material-theme-darker-yvetTWEr.js +1 -0
  165. package/dist/client/assets/material-theme-kX26WiJU.js +1 -0
  166. package/dist/client/assets/material-theme-lighter-L4j3qddN.js +1 -0
  167. package/dist/client/assets/material-theme-ocean-BnNk1wNQ.js +1 -0
  168. package/dist/client/assets/material-theme-palenight-W0qbGyud.js +1 -0
  169. package/dist/client/assets/matlab-Cz4xBfaA.js +1 -0
  170. package/dist/client/assets/mdc-C8Rs68Nw.js +1 -0
  171. package/dist/client/assets/mdx-Crds6sJw.js +1 -0
  172. package/dist/client/assets/mermaid-Bk1sayFm.js +1 -0
  173. package/dist/client/assets/min-dark-DK6uq44k.js +1 -0
  174. package/dist/client/assets/min-light-lr1QiEOE.js +1 -0
  175. package/dist/client/assets/mipsasm-D3Vr1VJI.js +1 -0
  176. package/dist/client/assets/mojo-D3ai4ATt.js +1 -0
  177. package/dist/client/assets/monokai-DZSWSdmN.js +1 -0
  178. package/dist/client/assets/moonbit-c7XV1V8w.js +1 -0
  179. package/dist/client/assets/move--lg8RSZu.js +1 -0
  180. package/dist/client/assets/narrat-Bn_PlXDl.js +1 -0
  181. package/dist/client/assets/nextflow-DXxhyYjQ.js +1 -0
  182. package/dist/client/assets/nextflow-groovy-CUrXbMOF.js +1 -0
  183. package/dist/client/assets/nginx-Dj6E3HRL.js +1 -0
  184. package/dist/client/assets/night-owl-DnKT96OJ.js +1 -0
  185. package/dist/client/assets/night-owl-light-gVSh6ltn.js +1 -0
  186. package/dist/client/assets/nim-BizJb4iF.js +1 -0
  187. package/dist/client/assets/nix-DE1Q2B1F.js +1 -0
  188. package/dist/client/assets/nord-CbYaE7ZY.js +1 -0
  189. package/dist/client/assets/nushell-BBFYNdNE.js +1 -0
  190. package/dist/client/assets/objective-c-mc6rHp-y.js +1 -0
  191. package/dist/client/assets/objective-cpp-D96wcRis.js +1 -0
  192. package/dist/client/assets/ocaml-Ddt3E4VO.js +1 -0
  193. package/dist/client/assets/odin-BUZTfc03.js +1 -0
  194. package/dist/client/assets/one-dark-pro-CLMO01es.js +1 -0
  195. package/dist/client/assets/one-light-27sfjFDM.js +1 -0
  196. package/dist/client/assets/openscad-C-XxCD_t.js +1 -0
  197. package/dist/client/assets/pascal-BvJwb9Ca.js +1 -0
  198. package/dist/client/assets/perl-DnJAtWNn.js +1 -0
  199. package/dist/client/assets/php-BeY_VEeb.js +1 -0
  200. package/dist/client/assets/pkl-DtSDxyR8.js +1 -0
  201. package/dist/client/assets/plastic-Dd1-4HJb.js +1 -0
  202. package/dist/client/assets/plsql-CgEVu7mV.js +1 -0
  203. package/dist/client/assets/po-BNFx8QMG.js +1 -0
  204. package/dist/client/assets/poimandres-DdZFFINT.js +1 -0
  205. package/dist/client/assets/polar-DcGwqI2v.js +1 -0
  206. package/dist/client/assets/postcss-BgFCg0uM.js +1 -0
  207. package/dist/client/assets/powerquery-BNMZnWRc.js +1 -0
  208. package/dist/client/assets/powershell-CeNh_gMu.js +1 -0
  209. package/dist/client/assets/prisma-C4wKi9Xs.js +1 -0
  210. package/dist/client/assets/prolog-DcNkIfZZ.js +1 -0
  211. package/dist/client/assets/proto-BqsNb_Ru.js +1 -0
  212. package/dist/client/assets/pug-DXhFbVDh.js +1 -0
  213. package/dist/client/assets/puppet-BLvi8DVC.js +1 -0
  214. package/dist/client/assets/purescript-B_tjgp5s.js +1 -0
  215. package/dist/client/assets/python-xLLWlBd0.js +1 -0
  216. package/dist/client/assets/qml-CngzXsz8.js +1 -0
  217. package/dist/client/assets/qmldir-CDe6ORFD.js +1 -0
  218. package/dist/client/assets/qss-CvW7b9vz.js +1 -0
  219. package/dist/client/assets/r-BMmy9apu.js +1 -0
  220. package/dist/client/assets/racket-CA2oKVL1.js +1 -0
  221. package/dist/client/assets/raku-D9dEetfn.js +1 -0
  222. package/dist/client/assets/razor-kIo5DNUk.js +1 -0
  223. package/dist/client/assets/red-Cj1vpJ_n.js +1 -0
  224. package/dist/client/assets/reg-CHsE82Pk.js +1 -0
  225. package/dist/client/assets/regexp-BIa5IayX.js +1 -0
  226. package/dist/client/assets/rel-SUS6CYTF.js +1 -0
  227. package/dist/client/assets/riscv-xyAKa3qa.js +1 -0
  228. package/dist/client/assets/ron-D5BrJbC5.js +1 -0
  229. package/dist/client/assets/rose-pine-Dd0RAvir.js +1 -0
  230. package/dist/client/assets/rose-pine-dawn-CeS_2jlO.js +1 -0
  231. package/dist/client/assets/rose-pine-moon-CQrvtQEF.js +1 -0
  232. package/dist/client/assets/rosmsg-Bie95NPX.js +1 -0
  233. package/dist/client/assets/rst-McWv3WP0.js +1 -0
  234. package/dist/client/assets/ruby-CkenUDKe.js +1 -0
  235. package/dist/client/assets/rust-CAON_J-7.js +1 -0
  236. package/dist/client/assets/sas-Dgn9Yrr5.js +1 -0
  237. package/dist/client/assets/sass-CKkv3rB4.js +1 -0
  238. package/dist/client/assets/scala-BADlfUbE.js +1 -0
  239. package/dist/client/assets/scheme-Bv8vdcS_.js +1 -0
  240. package/dist/client/assets/scss-Tfn9jzBB.js +1 -0
  241. package/dist/client/assets/sdbl-TUdAkzzL.js +1 -0
  242. package/dist/client/assets/shaderlab-C5utLNvK.js +1 -0
  243. package/dist/client/assets/shellscript-vGpgBWOS.js +1 -0
  244. package/dist/client/assets/shellsession-7CA0dOzR.js +1 -0
  245. package/dist/client/assets/slack-dark-BeQrlvP4.js +1 -0
  246. package/dist/client/assets/slack-ochin-DaA1aBiy.js +1 -0
  247. package/dist/client/assets/smalltalk-C1k1DVft.js +1 -0
  248. package/dist/client/assets/snazzy-light-C9Bzvwcg.js +1 -0
  249. package/dist/client/assets/solarized-dark--ZJpQY8O.js +1 -0
  250. package/dist/client/assets/solarized-light-wzNWfjF2.js +1 -0
  251. package/dist/client/assets/solidity-CaEDdWYR.js +1 -0
  252. package/dist/client/assets/soy-DbBURueN.js +1 -0
  253. package/dist/client/assets/sparql-nVt1Q8sD.js +1 -0
  254. package/dist/client/assets/splunk-mpBjmHRA.js +1 -0
  255. package/dist/client/assets/sql-BJGtbEM8.js +1 -0
  256. package/dist/client/assets/ssh-config-DqmSAS3N.js +1 -0
  257. package/dist/client/assets/stata-L0kV9FQT.js +1 -0
  258. package/dist/client/assets/stylus-mNYBrtqL.js +1 -0
  259. package/dist/client/assets/surrealql-C17jcHRl.js +1 -0
  260. package/dist/client/assets/svelte-B5_CmVcu.js +1 -0
  261. package/dist/client/assets/swift-BXoR6L-y.js +1 -0
  262. package/dist/client/assets/synthwave-84-ybvkLGau.js +1 -0
  263. package/dist/client/assets/system-verilog-BnyrpGlO.js +1 -0
  264. package/dist/client/assets/systemd-BBVr_qxh.js +1 -0
  265. package/dist/client/assets/talonscript-l0qUQn2r.js +1 -0
  266. package/dist/client/assets/tasl-BzcMwPTS.js +1 -0
  267. package/dist/client/assets/tcl-CQgtyMkG.js +1 -0
  268. package/dist/client/assets/templ-C5f2EORt.js +1 -0
  269. package/dist/client/assets/terraform-BgPqtSWN.js +1 -0
  270. package/dist/client/assets/tex-DvaBtCMN.js +1 -0
  271. package/dist/client/assets/tokyo-night-BZt2NwCl.js +1 -0
  272. package/dist/client/assets/toml-CpHBCfVl.js +1 -0
  273. package/dist/client/assets/ts-tags-DlZzQdBU.js +1 -0
  274. package/dist/client/assets/tsv-DYxH1-vL.js +1 -0
  275. package/dist/client/assets/tsx-DaLOIju9.js +1 -0
  276. package/dist/client/assets/turtle-DdFFvP5J.js +1 -0
  277. package/dist/client/assets/twig-BB7320dl.js +1 -0
  278. package/dist/client/assets/typescript-D8B-VgXj.js +1 -0
  279. package/dist/client/assets/typespec-CHOxKRtr.js +1 -0
  280. package/dist/client/assets/typst-C0VS9TQm.js +1 -0
  281. package/dist/client/assets/v-CfOPGXPl.js +1 -0
  282. package/dist/client/assets/vala-DYqHmNOK.js +1 -0
  283. package/dist/client/assets/vb-DUBgqZ02.js +1 -0
  284. package/dist/client/assets/verilog-BxybH_AY.js +1 -0
  285. package/dist/client/assets/vesper-BDlBlJR-.js +1 -0
  286. package/dist/client/assets/vhdl-DBoxxi7I.js +1 -0
  287. package/dist/client/assets/viml-C8vROCgw.js +1 -0
  288. package/dist/client/assets/vitesse-black-CUBzmgJa.js +1 -0
  289. package/dist/client/assets/vitesse-dark-COrLBgkv.js +1 -0
  290. package/dist/client/assets/vitesse-light-ThZGgLQK.js +1 -0
  291. package/dist/client/assets/vue-DylGFDrG.js +1 -0
  292. package/dist/client/assets/vue-html-Dt8r3B9y.js +1 -0
  293. package/dist/client/assets/vue-vine-DdN02uhY.js +1 -0
  294. package/dist/client/assets/vyper-D08CaD4o.js +1 -0
  295. package/dist/client/assets/wasm-CoVafRYN.js +1 -0
  296. package/dist/client/assets/wasm-DiIFv9DE.js +1 -0
  297. package/dist/client/assets/wenyan-GlRgAbTB.js +1 -0
  298. package/dist/client/assets/wgsl-BmWpQFqb.js +1 -0
  299. package/dist/client/assets/wikitext-Axug2vPC.js +1 -0
  300. package/dist/client/assets/wit-Dk1fPIaK.js +1 -0
  301. package/dist/client/assets/wolfram-DMhXlmnL.js +1 -0
  302. package/dist/client/assets/xml-CBEuB6I0.js +1 -0
  303. package/dist/client/assets/xsl-CuhlgDL5.js +1 -0
  304. package/dist/client/assets/yaml-Da6ymghi.js +1 -0
  305. package/dist/client/assets/zenscript-x7PXwj2_.js +1 -0
  306. package/dist/client/assets/zig-BlD2NI35.js +1 -0
  307. package/dist/client/index.html +21 -0
  308. package/dist/client/manifest.webmanifest +1 -0
  309. package/dist/client/registerSW.js +1 -0
  310. package/dist/client/sw-push.js +53 -0
  311. package/dist/client/sw.js +1 -0
  312. package/dist/client/workbox-b51dd497.js +1 -0
  313. package/{client/index.html → index.html} +1 -1
  314. package/package.json +62 -14
  315. package/public/icons/icon-192.svg +11 -0
  316. package/public/icons/icon-512.svg +11 -0
  317. package/public/sw-push.js +53 -0
  318. package/{client/src → src/client}/components/analytics/AnalyticsView.tsx +70 -78
  319. package/{client/src → src/client}/components/analytics/ChartCard.tsx +8 -2
  320. package/{client/src → src/client}/components/analytics/QuickStats.tsx +12 -10
  321. package/{client/src → src/client}/components/analytics/charts/ActivityCalendar.tsx +5 -3
  322. package/{client/src → src/client}/components/analytics/charts/CacheEfficiencyChart.tsx +1 -1
  323. package/{client/src → src/client}/components/analytics/charts/ContextUtilizationChart.tsx +33 -25
  324. package/{client/src → src/client}/components/analytics/charts/CostAreaChart.tsx +4 -4
  325. package/{client/src → src/client}/components/analytics/charts/CostDistributionChart.tsx +1 -0
  326. package/{client/src → src/client}/components/analytics/charts/CostDonutChart.tsx +1 -0
  327. package/{client/src → src/client}/components/analytics/charts/CumulativeCostChart.tsx +1 -0
  328. package/{client/src → src/client}/components/analytics/charts/HourlyHeatmap.tsx +5 -3
  329. package/{client/src → src/client}/components/analytics/charts/ProjectRadar.tsx +30 -26
  330. package/{client/src → src/client}/components/analytics/charts/ResponseTimeScatter.tsx +16 -10
  331. package/{client/src → src/client}/components/analytics/charts/SessionBubbleChart.tsx +23 -16
  332. package/{client/src → src/client}/components/analytics/charts/SessionTimeline.tsx +5 -3
  333. package/{client/src → src/client}/components/analytics/charts/TokenFlowChart.tsx +3 -3
  334. package/{client/src → src/client}/components/analytics/charts/ToolSunburst.tsx +26 -23
  335. package/{client/src → src/client}/components/chat/ChatView.tsx +59 -25
  336. package/{client/src → src/client}/components/chat/Message.tsx +245 -8
  337. package/{client/src → src/client}/components/chat/ModelSelector.tsx +29 -8
  338. package/src/client/components/settings/Appearance.tsx +275 -0
  339. package/{client/src → src/client}/components/settings/Notifications.tsx +35 -0
  340. package/src/client/components/settings/ThemePreview.tsx +140 -0
  341. package/src/client/components/settings/ThemeWizard.tsx +405 -0
  342. package/{client/src → src/client}/components/sidebar/ProjectRail.tsx +43 -169
  343. package/{client/src → src/client}/components/sidebar/SessionList.tsx +27 -49
  344. package/{client/src → src/client}/components/sidebar/Sidebar.tsx +2 -6
  345. package/{client/src → src/client}/components/sidebar/UserIsland.tsx +24 -5
  346. package/{client/src → src/client}/components/sidebar/UserMenu.tsx +4 -2
  347. package/src/client/components/ui/ContextMenu.tsx +153 -0
  348. package/{client/src → src/client}/components/ui/PopupMenu.tsx +4 -2
  349. package/{client/src → src/client}/components/ui/SaveFooter.tsx +1 -1
  350. package/{client/src → src/client}/components/workspace/TabBar.tsx +17 -64
  351. package/{client/src → src/client}/hooks/useAnalytics.ts +17 -8
  352. package/src/client/hooks/usePushNotifications.ts +92 -0
  353. package/{client/src → src/client}/hooks/useSession.ts +35 -8
  354. package/{client/src → src/client}/hooks/useWebSocket.ts +0 -3
  355. package/src/client/lib/theme-derive.ts +196 -0
  356. package/{client/src → src/client}/stores/analytics.ts +20 -6
  357. package/{client/src → src/client}/stores/session.ts +32 -2
  358. package/{client/src → src/client}/stores/sidebar.ts +3 -1
  359. package/{client/src → src/client}/themes/index.ts +26 -0
  360. package/{server/src → src/server}/analytics/engine.ts +87 -30
  361. package/src/server/assets.ts +45 -0
  362. package/src/server/daemon.ts +547 -0
  363. package/{server/src → src/server}/handlers/analytics.ts +13 -8
  364. package/{server/src → src/server}/handlers/chat.ts +73 -2
  365. package/{server/src → src/server}/handlers/mesh.ts +3 -2
  366. package/{server/src → src/server}/handlers/plugins.ts +10 -13
  367. package/{server/src → src/server}/handlers/session.ts +6 -1
  368. package/{server/src → src/server}/handlers/settings.ts +1 -1
  369. package/{server/src → src/server}/handlers/skills.ts +7 -9
  370. package/src/server/handlers/themes.ts +121 -0
  371. package/{server/src → src/server}/handlers/update.ts +5 -23
  372. package/{server/src → src/server}/index.ts +97 -134
  373. package/{server/src → src/server}/mesh/connector.ts +1 -1
  374. package/{server/src → src/server}/project/context-breakdown.ts +4 -5
  375. package/{server/src → src/server}/project/pty-worker.cjs +1 -1
  376. package/{server/src → src/server}/project/sdk-bridge.ts +434 -289
  377. package/{server/src → src/server}/project/session.ts +84 -38
  378. package/{server/src → src/server}/project/terminal.ts +7 -24
  379. package/{server/src → src/server}/project/warmup.ts +63 -10
  380. package/src/server/push.ts +121 -0
  381. package/src/server/runtime.ts +1 -0
  382. package/src/server/tui.ts +103 -0
  383. package/{server/src → src/server}/update-checker.ts +10 -10
  384. package/{server/src → src/server}/ws/broadcast.ts +8 -8
  385. package/{server/src → src/server}/ws/router.ts +21 -25
  386. package/{shared/src → src/shared}/analytics.ts +1 -0
  387. package/{shared/src → src/shared}/constants.ts +1 -0
  388. package/{shared/src → src/shared}/messages.ts +104 -6
  389. package/{shared/src → src/shared}/models.ts +1 -1
  390. package/tsconfig.json +7 -8
  391. package/{client/vite.config.ts → vite.config.ts} +14 -18
  392. package/.editorconfig +0 -12
  393. package/.github/workflows/ci.yml +0 -81
  394. package/.github/workflows/release.yml +0 -87
  395. package/.impeccable.md +0 -66
  396. package/.releaserc.json +0 -33
  397. package/.serena/memories/code_style_and_conventions.md +0 -35
  398. package/.serena/memories/project_overview.md +0 -51
  399. package/.serena/memories/suggested_commands.md +0 -32
  400. package/.serena/memories/task_completion_checklist.md +0 -15
  401. package/.serena/project.yml +0 -152
  402. package/CLAUDE.md +0 -71
  403. package/CONTRIBUTING.md +0 -93
  404. package/bun.lock +0 -2246
  405. package/bunfig.toml +0 -2
  406. package/client/package.json +0 -43
  407. package/client/src/components/settings/Appearance.tsx +0 -152
  408. package/client/tsconfig.json +0 -18
  409. package/install.sh +0 -71
  410. package/playwright.config.ts +0 -19
  411. package/scripts/build-binary.ts +0 -157
  412. package/scripts/postinstall.js +0 -31
  413. package/server/package.json +0 -24
  414. package/server/src/_generated/embedded-assets.ts +0 -2
  415. package/server/src/assets.ts +0 -69
  416. package/server/src/daemon.ts +0 -459
  417. package/server/src/runtime.ts +0 -4
  418. package/server/tsconfig.json +0 -20
  419. package/shared/package.json +0 -11
  420. package/shared/tsconfig.json +0 -15
  421. package/tests/accessibility.spec.ts +0 -77
  422. package/tests/keyboard-shortcuts.spec.ts +0 -70
  423. package/tests/message-actions.spec.ts +0 -112
  424. package/tests/onboarding.spec.ts +0 -72
  425. package/tests/session-flow.spec.ts +0 -117
  426. package/tests/session-preview.spec.ts +0 -83
  427. package/themes/amoled.json +0 -20
  428. package/themes/ayu-light.json +0 -9
  429. package/themes/catppuccin-latte.json +0 -9
  430. package/themes/catppuccin-mocha.json +0 -9
  431. package/themes/clay-light.json +0 -10
  432. package/themes/clay.json +0 -10
  433. package/themes/dracula.json +0 -9
  434. package/themes/everforest-light.json +0 -9
  435. package/themes/everforest.json +0 -9
  436. package/themes/github-light.json +0 -9
  437. package/themes/gruvbox-dark.json +0 -9
  438. package/themes/gruvbox-light.json +0 -9
  439. package/themes/monokai.json +0 -9
  440. package/themes/nord-light.json +0 -9
  441. package/themes/nord.json +0 -9
  442. package/themes/one-dark.json +0 -9
  443. package/themes/one-light.json +0 -9
  444. package/themes/rose-pine-dawn.json +0 -9
  445. package/themes/rose-pine.json +0 -9
  446. package/themes/solarized-dark.json +0 -9
  447. package/themes/solarized-light.json +0 -9
  448. package/themes/tokyo-night-light.json +0 -9
  449. package/themes/tokyo-night.json +0 -9
  450. package/tp.js +0 -19
  451. /package/{client/public → dist/client}/icons/icon-192.svg +0 -0
  452. /package/{client/public → dist/client}/icons/icon-512.svg +0 -0
  453. /package/{client/src → src/client}/App.tsx +0 -0
  454. /package/{client/src → src/client}/commands.ts +0 -0
  455. /package/{client/src → src/client}/components/analytics/PeriodSelector.tsx +0 -0
  456. /package/{client/src → src/client}/components/analytics/chartTokens.ts +0 -0
  457. /package/{client/src → src/client}/components/analytics/charts/DailySummaryCards.tsx +0 -0
  458. /package/{client/src → src/client}/components/analytics/charts/NodeFleetOverview.tsx +0 -0
  459. /package/{client/src → src/client}/components/analytics/charts/PermissionBreakdown.tsx +0 -0
  460. /package/{client/src → src/client}/components/analytics/charts/SessionComplexityList.tsx +0 -0
  461. /package/{client/src → src/client}/components/analytics/charts/TokenSankeyChart.tsx +0 -0
  462. /package/{client/src → src/client}/components/analytics/charts/ToolTreemap.tsx +0 -0
  463. /package/{client/src → src/client}/components/auth/PassphrasePrompt.tsx +0 -0
  464. /package/{client/src → src/client}/components/chat/AttachmentChips.tsx +0 -0
  465. /package/{client/src → src/client}/components/chat/ChatInput.tsx +0 -0
  466. /package/{client/src → src/client}/components/chat/CommandPalette.tsx +0 -0
  467. /package/{client/src → src/client}/components/chat/ElicitationCard.tsx +0 -0
  468. /package/{client/src → src/client}/components/chat/PermissionModeSelector.tsx +0 -0
  469. /package/{client/src → src/client}/components/chat/PromptQuestion.tsx +0 -0
  470. /package/{client/src → src/client}/components/chat/StatusBar.tsx +0 -0
  471. /package/{client/src → src/client}/components/chat/TodoCard.tsx +0 -0
  472. /package/{client/src → src/client}/components/chat/ToolGroup.tsx +0 -0
  473. /package/{client/src → src/client}/components/chat/ToolResultRenderer.tsx +0 -0
  474. /package/{client/src → src/client}/components/chat/VoiceRecorder.tsx +0 -0
  475. /package/{client/src → src/client}/components/chat/toolSummary.ts +0 -0
  476. /package/{client/src → src/client}/components/dashboard/DashboardView.tsx +0 -0
  477. /package/{client/src → src/client}/components/dashboard/ProjectDashboardView.tsx +0 -0
  478. /package/{client/src → src/client}/components/mesh/NodeBadge.tsx +0 -0
  479. /package/{client/src → src/client}/components/mesh/PairingDialog.tsx +0 -0
  480. /package/{client/src → src/client}/components/project-settings/ProjectClaude.tsx +0 -0
  481. /package/{client/src → src/client}/components/project-settings/ProjectEnvironment.tsx +0 -0
  482. /package/{client/src → src/client}/components/project-settings/ProjectGeneral.tsx +0 -0
  483. /package/{client/src → src/client}/components/project-settings/ProjectMcp.tsx +0 -0
  484. /package/{client/src → src/client}/components/project-settings/ProjectMemory.tsx +0 -0
  485. /package/{client/src → src/client}/components/project-settings/ProjectNotifications.tsx +0 -0
  486. /package/{client/src → src/client}/components/project-settings/ProjectPermissions.tsx +0 -0
  487. /package/{client/src → src/client}/components/project-settings/ProjectPlugins.tsx +0 -0
  488. /package/{client/src → src/client}/components/project-settings/ProjectRules.tsx +0 -0
  489. /package/{client/src → src/client}/components/project-settings/ProjectSettingsView.tsx +0 -0
  490. /package/{client/src → src/client}/components/project-settings/ProjectSkills.tsx +0 -0
  491. /package/{client/src → src/client}/components/settings/BudgetSettings.tsx +0 -0
  492. /package/{client/src → src/client}/components/settings/ClaudeSettings.tsx +0 -0
  493. /package/{client/src → src/client}/components/settings/Editor.tsx +0 -0
  494. /package/{client/src → src/client}/components/settings/Environment.tsx +0 -0
  495. /package/{client/src → src/client}/components/settings/GlobalMcp.tsx +0 -0
  496. /package/{client/src → src/client}/components/settings/GlobalMemory.tsx +0 -0
  497. /package/{client/src → src/client}/components/settings/GlobalPlugins.tsx +0 -0
  498. /package/{client/src → src/client}/components/settings/GlobalRules.tsx +0 -0
  499. /package/{client/src → src/client}/components/settings/GlobalSkills.tsx +0 -0
  500. /package/{client/src → src/client}/components/settings/MeshStatus.tsx +0 -0
  501. /package/{client/src → src/client}/components/settings/SettingsView.tsx +0 -0
  502. /package/{client/src → src/client}/components/settings/SkillMarketplace.tsx +0 -0
  503. /package/{client/src → src/client}/components/settings/mcp-shared.tsx +0 -0
  504. /package/{client/src → src/client}/components/settings/skill-shared.tsx +0 -0
  505. /package/{client/src → src/client}/components/setup/SetupWizard.tsx +0 -0
  506. /package/{client/src → src/client}/components/sidebar/AddProjectModal.tsx +0 -0
  507. /package/{client/src → src/client}/components/sidebar/NodeSettingsModal.tsx +0 -0
  508. /package/{client/src → src/client}/components/sidebar/ProjectDropdown.tsx +0 -0
  509. /package/{client/src → src/client}/components/sidebar/SearchFilter.tsx +0 -0
  510. /package/{client/src → src/client}/components/sidebar/SettingsSidebar.tsx +0 -0
  511. /package/{client/src → src/client}/components/ui/CommandPalette.tsx +0 -0
  512. /package/{client/src → src/client}/components/ui/ErrorBoundary.tsx +0 -0
  513. /package/{client/src → src/client}/components/ui/IconPicker.tsx +0 -0
  514. /package/{client/src → src/client}/components/ui/KeyboardShortcuts.tsx +0 -0
  515. /package/{client/src → src/client}/components/ui/LatticeLogomark.tsx +0 -0
  516. /package/{client/src → src/client}/components/ui/NodeDisconnectedOverlay.tsx +0 -0
  517. /package/{client/src → src/client}/components/ui/Toast.tsx +0 -0
  518. /package/{client/src → src/client}/components/ui/UpdateBanner.tsx +0 -0
  519. /package/{client/src → src/client}/components/ui/UpdatePrompt.tsx +0 -0
  520. /package/{client/src → src/client}/components/workspace/BookmarksView.tsx +0 -0
  521. /package/{client/src → src/client}/components/workspace/FileBrowser.tsx +0 -0
  522. /package/{client/src → src/client}/components/workspace/FileTree.tsx +0 -0
  523. /package/{client/src → src/client}/components/workspace/FileViewer.tsx +0 -0
  524. /package/{client/src → src/client}/components/workspace/NoteCard.tsx +0 -0
  525. /package/{client/src → src/client}/components/workspace/NotesView.tsx +0 -0
  526. /package/{client/src → src/client}/components/workspace/ScheduledTasksView.tsx +0 -0
  527. /package/{client/src → src/client}/components/workspace/SplitPane.tsx +0 -0
  528. /package/{client/src → src/client}/components/workspace/TaskCard.tsx +0 -0
  529. /package/{client/src → src/client}/components/workspace/TaskEditModal.tsx +0 -0
  530. /package/{client/src → src/client}/components/workspace/TerminalInstance.tsx +0 -0
  531. /package/{client/src → src/client}/components/workspace/TerminalView.tsx +0 -0
  532. /package/{client/src → src/client}/components/workspace/WorkspaceView.tsx +0 -0
  533. /package/{client/src → src/client}/hooks/useAttachments.ts +0 -0
  534. /package/{client/src → src/client}/hooks/useBookmarks.ts +0 -0
  535. /package/{client/src → src/client}/hooks/useEditorConfig.ts +0 -0
  536. /package/{client/src → src/client}/hooks/useFocusTrap.ts +0 -0
  537. /package/{client/src → src/client}/hooks/useIdleDetection.ts +0 -0
  538. /package/{client/src → src/client}/hooks/useInstallPrompt.ts +0 -0
  539. /package/{client/src → src/client}/hooks/useMesh.ts +0 -0
  540. /package/{client/src → src/client}/hooks/useNotifications.ts +0 -0
  541. /package/{client/src → src/client}/hooks/useOnline.ts +0 -0
  542. /package/{client/src → src/client}/hooks/useProjectSettings.ts +0 -0
  543. /package/{client/src → src/client}/hooks/useProjects.ts +0 -0
  544. /package/{client/src → src/client}/hooks/useSaveState.ts +0 -0
  545. /package/{client/src → src/client}/hooks/useSidebar.ts +0 -0
  546. /package/{client/src → src/client}/hooks/useSkills.ts +0 -0
  547. /package/{client/src → src/client}/hooks/useSpinnerVerb.ts +0 -0
  548. /package/{client/src → src/client}/hooks/useSwipeDrawer.ts +0 -0
  549. /package/{client/src → src/client}/hooks/useTheme.ts +0 -0
  550. /package/{client/src → src/client}/hooks/useTimeTick.ts +0 -0
  551. /package/{client/src → src/client}/hooks/useVoiceRecorder.ts +0 -0
  552. /package/{client/src → src/client}/hooks/useWorkspace.ts +0 -0
  553. /package/{client/src → src/client}/lib/workspace-url.ts +0 -0
  554. /package/{client/src → src/client}/main.tsx +0 -0
  555. /package/{client/src → src/client}/providers/WebSocketProvider.tsx +0 -0
  556. /package/{client/src → src/client}/router.tsx +0 -0
  557. /package/{client/src → src/client}/stores/bookmarks.ts +0 -0
  558. /package/{client/src → src/client}/stores/mesh.ts +0 -0
  559. /package/{client/src → src/client}/stores/theme.ts +0 -0
  560. /package/{client/src → src/client}/stores/workspace.ts +0 -0
  561. /package/{client/src → src/client}/styles/global.css +0 -0
  562. /package/{client/src → src/client}/styles/theme-vars.css +0 -0
  563. /package/{client/src → src/client}/utils/editorUrl.ts +0 -0
  564. /package/{client/src → src/client}/utils/findDuplicateKeys.ts +0 -0
  565. /package/{client/src → src/client}/utils/formatSessionTitle.ts +0 -0
  566. /package/{client/src → src/client}/vite-env.d.ts +0 -0
  567. /package/{server/src → src/server}/auth/passphrase.ts +0 -0
  568. /package/{server/src → src/server}/config.ts +0 -0
  569. /package/{server/src → src/server}/features/ralph-loop.ts +0 -0
  570. /package/{server/src → src/server}/features/scheduler.ts +0 -0
  571. /package/{server/src → src/server}/features/sticky-notes.ts +0 -0
  572. /package/{server/src → src/server}/handlers/attachment.ts +0 -0
  573. /package/{server/src → src/server}/handlers/bookmarks.ts +0 -0
  574. /package/{server/src → src/server}/handlers/editor.ts +0 -0
  575. /package/{server/src → src/server}/handlers/fs.ts +0 -0
  576. /package/{server/src → src/server}/handlers/loop.ts +0 -0
  577. /package/{server/src → src/server}/handlers/memory.ts +0 -0
  578. /package/{server/src → src/server}/handlers/notes.ts +0 -0
  579. /package/{server/src → src/server}/handlers/project-settings.ts +0 -0
  580. /package/{server/src → src/server}/handlers/scheduler.ts +0 -0
  581. /package/{server/src → src/server}/handlers/terminal.ts +0 -0
  582. /package/{server/src → src/server}/identity.ts +0 -0
  583. /package/{server/src → src/server}/logger.ts +0 -0
  584. /package/{server/src → src/server}/mesh/crypto.ts +0 -0
  585. /package/{server/src → src/server}/mesh/discovery.ts +0 -0
  586. /package/{server/src → src/server}/mesh/pairing.ts +0 -0
  587. /package/{server/src → src/server}/mesh/peers.ts +0 -0
  588. /package/{server/src → src/server}/mesh/proxy.ts +0 -0
  589. /package/{server/src → src/server}/mesh/session-sync.ts +0 -0
  590. /package/{server/src → src/server}/project/bookmarks.ts +0 -0
  591. /package/{server/src → src/server}/project/file-browser.ts +0 -0
  592. /package/{server/src → src/server}/project/project-files.ts +0 -0
  593. /package/{server/src → src/server}/project/registry.ts +0 -0
  594. /package/{server/src → src/server}/tls.ts +0 -0
  595. /package/{server/src → src/server}/ws/server.ts +0 -0
  596. /package/{shared/src → src/shared}/index.ts +0 -0
  597. /package/{shared/src → src/shared}/project-settings.ts +0 -0
@@ -1,7 +1,9 @@
1
1
  import { readFileSync } from "node:fs";
2
- import { join } from "node:path";
2
+ import { join, dirname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
3
4
  import { log } from "./logger";
4
- import { IS_COMPILED } from "./runtime";
5
+
6
+ var __dirname_local = dirname(fileURLToPath(import.meta.url));
5
7
 
6
8
  var PKG_NAME = "@cryptiklemur/lattice";
7
9
  var GITHUB_REPO = "cryptiklemur/lattice";
@@ -24,7 +26,7 @@ var checking = false;
24
26
  function getCurrentVersion(): string {
25
27
  if (process.env.LATTICE_VERSION) return process.env.LATTICE_VERSION;
26
28
  try {
27
- var pkg = JSON.parse(readFileSync(join(import.meta.dir, "../../package.json"), "utf-8"));
29
+ var pkg = JSON.parse(readFileSync(join(__dirname_local, "../../package.json"), "utf-8"));
28
30
  return pkg.version || "0.0.0";
29
31
  } catch {
30
32
  return "0.0.0";
@@ -44,7 +46,7 @@ function compareVersions(a: string, b: string): number {
44
46
  }
45
47
 
46
48
  export function getInstallMode(): InstallMode {
47
- return IS_COMPILED ? "binary" : "npm";
49
+ return "npm";
48
50
  }
49
51
 
50
52
  async function checkGitHub(currentVersion: string): Promise<UpdateInfo> {
@@ -54,7 +56,7 @@ async function checkGitHub(currentVersion: string): Promise<UpdateInfo> {
54
56
  });
55
57
 
56
58
  if (!res.ok) {
57
- log.server("GitHub update check failed: HTTP %d", res.status);
59
+ console.error("[lattice] GitHub update check failed: HTTP " + res.status);
58
60
  return { currentVersion, latestVersion: null, updateAvailable: false, lastCheckedAt: Date.now(), releaseUrl: null, installMode: "binary" };
59
61
  }
60
62
 
@@ -79,7 +81,7 @@ async function checkNpm(currentVersion: string): Promise<UpdateInfo> {
79
81
  });
80
82
 
81
83
  if (!res.ok) {
82
- log.server("npm update check failed: HTTP %d", res.status);
84
+ console.error("[lattice] npm update check failed: HTTP " + res.status);
83
85
  return { currentVersion, latestVersion: null, updateAvailable: false, lastCheckedAt: Date.now(), releaseUrl: null, installMode: "npm" };
84
86
  }
85
87
 
@@ -110,16 +112,14 @@ export async function checkForUpdate(force: boolean = false): Promise<UpdateInfo
110
112
 
111
113
  checking = true;
112
114
  try {
113
- cached = IS_COMPILED
114
- ? await checkGitHub(currentVersion)
115
- : await checkNpm(currentVersion);
115
+ cached = await checkNpm(currentVersion);
116
116
 
117
117
  if (cached.updateAvailable) {
118
118
  log.server("Update available: %s -> %s (%s)", currentVersion, cached.latestVersion, cached.installMode);
119
119
  }
120
120
  return cached;
121
121
  } catch (err) {
122
- log.server("Update check error: %s", err instanceof Error ? err.message : String(err));
122
+ console.error("[lattice] Update check error: " + (err instanceof Error ? err.message : String(err)));
123
123
  cached = { currentVersion, latestVersion: null, updateAvailable: false, lastCheckedAt: Date.now(), releaseUrl: null, installMode: getInstallMode() };
124
124
  return cached;
125
125
  } finally {
@@ -1,6 +1,7 @@
1
- import type { ServerWebSocket } from "bun";
1
+ import type { WebSocket } from "ws";
2
+ import { log } from "../logger";
2
3
 
3
- var clients = new Map<string, ServerWebSocket<{ id: string }>>();
4
+ var clients = new Map<string, WebSocket>();
4
5
  var virtualSendHandlers = new Map<string, (message: object) => void>();
5
6
 
6
7
  export function registerVirtualClient(id: string, handler: (message: object) => void): void {
@@ -11,8 +12,8 @@ export function removeVirtualClient(id: string): void {
11
12
  virtualSendHandlers.delete(id);
12
13
  }
13
14
 
14
- export function addClient(ws: ServerWebSocket<{ id: string }>): void {
15
- clients.set(ws.data.id, ws);
15
+ export function addClient(id: string, ws: WebSocket): void {
16
+ clients.set(id, ws);
16
17
  }
17
18
 
18
19
  export function removeClient(id: string): void {
@@ -22,7 +23,7 @@ export function removeClient(id: string): void {
22
23
  export function broadcast(message: object, excludeId?: string): void {
23
24
  var text = JSON.stringify(message);
24
25
  for (var [id, ws] of clients) {
25
- if (id !== excludeId) {
26
+ if (id !== excludeId && ws.readyState === ws.OPEN) {
26
27
  ws.send(text);
27
28
  }
28
29
  }
@@ -30,7 +31,7 @@ export function broadcast(message: object, excludeId?: string): void {
30
31
 
31
32
  export function sendTo(id: string, message: object): void {
32
33
  var ws = clients.get(id);
33
- if (ws) {
34
+ if (ws && ws.readyState === ws.OPEN) {
34
35
  ws.send(JSON.stringify(message));
35
36
  return;
36
37
  }
@@ -40,12 +41,11 @@ export function sendTo(id: string, message: object): void {
40
41
  return;
41
42
  }
42
43
  if (id.startsWith("mesh-proxy:")) {
43
- var { log } = require("../logger");
44
44
  log.broadcast(" ✗ sendTo %s but no virtual handler registered (msg=%s)", id.slice(0, 30), (message as any).type);
45
45
  }
46
46
  }
47
47
 
48
- export function getClientWebSocket(id: string): ServerWebSocket<{ id: string }> | undefined {
48
+ export function getClientWebSocket(id: string): WebSocket | undefined {
49
49
  return clients.get(id);
50
50
  }
51
51
 
@@ -6,23 +6,23 @@ var _registry: typeof import("../project/registry") | null = null;
6
6
  var _connector: typeof import("../mesh/connector") | null = null;
7
7
  var _proxy: typeof import("../mesh/proxy") | null = null;
8
8
 
9
- function getRegistry(): typeof import("../project/registry") {
9
+ async function getRegistry(): Promise<typeof import("../project/registry")> {
10
10
  if (!_registry) {
11
- _registry = require("../project/registry") as typeof import("../project/registry");
11
+ _registry = await import("../project/registry");
12
12
  }
13
13
  return _registry;
14
14
  }
15
15
 
16
- function getConnector(): typeof import("../mesh/connector") {
16
+ async function getConnector(): Promise<typeof import("../mesh/connector")> {
17
17
  if (!_connector) {
18
- _connector = require("../mesh/connector") as typeof import("../mesh/connector");
18
+ _connector = await import("../mesh/connector");
19
19
  }
20
20
  return _connector;
21
21
  }
22
22
 
23
- function getProxy(): typeof import("../mesh/proxy") {
23
+ async function getProxy(): Promise<typeof import("../mesh/proxy")> {
24
24
  if (!_proxy) {
25
- _proxy = require("../mesh/proxy") as typeof import("../mesh/proxy");
25
+ _proxy = await import("../mesh/proxy");
26
26
  }
27
27
  return _proxy;
28
28
  }
@@ -50,7 +50,7 @@ export function getClientRemoteNode(clientId: string): { nodeId: string; project
50
50
  return clientRemoteNode.get(clientId);
51
51
  }
52
52
 
53
- export function routeMessage(clientId: string, message: ClientMessage): void {
53
+ export async function routeMessage(clientId: string, message: ClientMessage): Promise<void> {
54
54
  var prefix = message.type.split(":")[0];
55
55
 
56
56
  log.router("→ %s from client %s (prefix=%s)", message.type, clientId.slice(0, 8), prefix);
@@ -61,14 +61,14 @@ export function routeMessage(clientId: string, message: ClientMessage): void {
61
61
  var msgSlug = (message as any).projectSlug as string | undefined;
62
62
 
63
63
  if (msgSlug) {
64
- var localProject = getLocalProject(msgSlug);
64
+ var localProject = await getLocalProject(msgSlug);
65
65
  log.router(" slug=%s local=%s", msgSlug, localProject);
66
66
  if (!localProject) {
67
- var remoteEntry = getRemoteNodeForProject(msgSlug);
67
+ var remoteEntry = await getRemoteNodeForProject(msgSlug);
68
68
  if (remoteEntry) {
69
69
  log.router(" → proxying to remote node %s for project %s", remoteEntry.nodeId.slice(0, 8), msgSlug);
70
70
  setClientRemoteNode(clientId, remoteEntry.nodeId, msgSlug);
71
- proxyMessage(clientId, remoteEntry.nodeId, msgSlug, message);
71
+ await proxyMessage(clientId, remoteEntry.nodeId, msgSlug, message);
72
72
  return;
73
73
  }
74
74
  log.router(" ✗ no remote node found for slug %s", msgSlug);
@@ -77,7 +77,7 @@ export function routeMessage(clientId: string, message: ClientMessage): void {
77
77
  }
78
78
  } else if (remote) {
79
79
  log.router(" → proxying via cached remote node %s", remote.nodeId.slice(0, 8));
80
- proxyMessage(clientId, remote.nodeId, remote.projectSlug, message);
80
+ await proxyMessage(clientId, remote.nodeId, remote.projectSlug, message);
81
81
  return;
82
82
  }
83
83
  }
@@ -86,14 +86,7 @@ export function routeMessage(clientId: string, message: ClientMessage): void {
86
86
  if (handler) {
87
87
  log.router(" → dispatching to %s handler", prefix);
88
88
  try {
89
- var result = handler(clientId, message);
90
- if (result && typeof result.then === "function") {
91
- result.then(undefined, function (err: unknown) {
92
- var stack = err instanceof Error ? err.stack : String(err);
93
- log.ws("Async handler error for %s: %s", message.type, stack);
94
- sendTo(clientId, { type: "chat:error", message: "Internal server error processing " + message.type });
95
- });
96
- }
89
+ await handler(clientId, message);
97
90
  } catch (err) {
98
91
  var stack = err instanceof Error ? (err as Error).stack : String(err);
99
92
  log.ws("Handler error for %s: %s", message.type, stack);
@@ -105,21 +98,24 @@ export function routeMessage(clientId: string, message: ClientMessage): void {
105
98
  sendTo(clientId, { type: "error", message: `Unknown message type: ${message.type}` });
106
99
  }
107
100
 
108
- function getLocalProject(slug: string): boolean {
109
- return getRegistry().getProjectBySlug(slug) !== undefined;
101
+ async function getLocalProject(slug: string): Promise<boolean> {
102
+ var registry = await getRegistry();
103
+ return registry.getProjectBySlug(slug) !== undefined;
110
104
  }
111
105
 
112
- function getRemoteNodeForProject(slug: string): { nodeId: string } | undefined {
113
- var nodeId = getConnector().findNodeForProject(slug);
106
+ async function getRemoteNodeForProject(slug: string): Promise<{ nodeId: string } | undefined> {
107
+ var connector = await getConnector();
108
+ var nodeId = connector.findNodeForProject(slug);
114
109
  if (nodeId) {
115
110
  return { nodeId: nodeId };
116
111
  }
117
112
  return undefined;
118
113
  }
119
114
 
120
- function proxyMessage(clientId: string, nodeId: string, projectSlug: string, message: ClientMessage): void {
115
+ async function proxyMessage(clientId: string, nodeId: string, projectSlug: string, message: ClientMessage): Promise<void> {
121
116
  try {
122
- getProxy().proxyToRemoteNode(nodeId, projectSlug, clientId, message);
117
+ var proxy = await getProxy();
118
+ proxy.proxyToRemoteNode(nodeId, projectSlug, clientId, message);
123
119
  } catch (err) {
124
120
  log.ws("Failed to proxy message: %O", err);
125
121
  sendTo(clientId, { type: "chat:error", message: "Failed to proxy message to remote node" });
@@ -37,3 +37,4 @@ export interface AnalyticsPayload {
37
37
 
38
38
  export type AnalyticsPeriod = "24h" | "7d" | "30d" | "90d" | "all";
39
39
  export type AnalyticsScope = "global" | "project" | "session";
40
+ export type AnalyticsSectionName = "summary" | "spending" | "usage" | "activity" | "projects";
@@ -1,4 +1,5 @@
1
1
  export var DEFAULT_PORT = 7654;
2
+ export var DEFAULT_DEV_PORT = 17654;
2
3
  export var PROTOCOL_VERSION = 1;
3
4
  export var MDNS_SERVICE_TYPE = "_lattice._tcp";
4
5
  export var LATTICE_HOME_DIR = ".lattice";
@@ -1,4 +1,4 @@
1
- import type { AnalyticsPayload } from "./analytics.js";
1
+ import type { AnalyticsPayload, AnalyticsSectionName } from "./analytics.js";
2
2
  import type {
3
3
  FileEntry,
4
4
  HistoryMessage,
@@ -86,11 +86,45 @@ export interface ChatPermissionResponseMessage {
86
86
  alwaysAllowScope?: "session" | "project";
87
87
  }
88
88
 
89
- export interface ChatRewindMessage {
90
- type: "chat:rewind";
89
+ export interface ChatRewindPreviewMessage {
90
+ type: "chat:rewind_preview";
91
91
  messageUuid: string;
92
92
  }
93
93
 
94
+ export interface ChatRewindExecuteMessage {
95
+ type: "chat:rewind_execute";
96
+ messageUuid: string;
97
+ mode: "both" | "files" | "chat";
98
+ }
99
+
100
+ export interface ChatRewindPreviewResultMessage {
101
+ type: "chat:rewind_preview_result";
102
+ messageUuid: string;
103
+ canRewind: boolean;
104
+ error?: string;
105
+ filesChanged?: number;
106
+ insertions?: number;
107
+ deletions?: number;
108
+ }
109
+
110
+ export interface ChatRewindExecuteResultMessage {
111
+ type: "chat:rewind_execute_result";
112
+ messageUuid: string;
113
+ success: boolean;
114
+ error?: string;
115
+ }
116
+
117
+ export interface ChatMessageUuidMessage {
118
+ type: "chat:message_uuid";
119
+ uuid: string;
120
+ messageType: "user" | "assistant";
121
+ }
122
+
123
+ export interface ChatSetModelMessage {
124
+ type: "chat:set_model";
125
+ model: string;
126
+ }
127
+
94
128
  export interface ChatCancelMessage {
95
129
  type: "chat:cancel";
96
130
  }
@@ -447,6 +481,18 @@ export interface AnalyticsDataMessage {
447
481
  data: AnalyticsPayload;
448
482
  }
449
483
 
484
+ export interface AnalyticsSectionMessage {
485
+ type: "analytics:section";
486
+ requestId: string;
487
+ section: AnalyticsSectionName;
488
+ data: Partial<AnalyticsPayload>;
489
+ }
490
+
491
+ export interface AnalyticsCompleteMessage {
492
+ type: "analytics:complete";
493
+ requestId: string;
494
+ }
495
+
450
496
  export interface AnalyticsErrorMessage {
451
497
  type: "analytics:error";
452
498
  scope: "global" | "project" | "session";
@@ -528,6 +574,23 @@ export interface UpdateApplyMessage {
528
574
  type: "update:apply";
529
575
  }
530
576
 
577
+ export interface ThemeListCustomMessage {
578
+ type: "theme:list_custom";
579
+ }
580
+
581
+ export interface ThemeSaveMessage {
582
+ type: "theme:save";
583
+ name: string;
584
+ author: string;
585
+ variant: "dark" | "light";
586
+ colors: Record<string, string>;
587
+ }
588
+
589
+ export interface ThemeDeleteMessage {
590
+ type: "theme:delete";
591
+ name: string;
592
+ }
593
+
531
594
  export interface ChatElicitationRequestMessage {
532
595
  type: "chat:elicitation_request";
533
596
  requestId: string;
@@ -567,8 +630,10 @@ export type ClientMessage =
567
630
  | SessionListRequestMessage
568
631
  | ChatSendMessage
569
632
  | ChatPermissionResponseMessage
570
- | ChatRewindMessage
571
633
  | ChatCancelMessage
634
+ | ChatSetModelMessage
635
+ | ChatRewindPreviewMessage
636
+ | ChatRewindExecuteMessage
572
637
  | FsListMessage
573
638
  | FsReadMessage
574
639
  | FsWriteMessage
@@ -634,7 +699,10 @@ export type ClientMessage =
634
699
  | PluginErrorsMessage
635
700
  | UpdateCheckMessage
636
701
  | UpdateApplyMessage
637
- | ChatElicitationResponseMessage;
702
+ | ChatElicitationResponseMessage
703
+ | ThemeListCustomMessage
704
+ | ThemeSaveMessage
705
+ | ThemeDeleteMessage;
638
706
 
639
707
  export interface SessionListMessage {
640
708
  type: "session:list";
@@ -666,6 +734,12 @@ export interface SessionHistoryMessage {
666
734
  hasMore?: boolean;
667
735
  }
668
736
 
737
+ export interface SessionLoadingProgressMessage {
738
+ type: "session:loading_progress";
739
+ sessionId: string;
740
+ fileSize: number | null;
741
+ }
742
+
669
743
  export interface SessionBusyMessage {
670
744
  type: "session:busy";
671
745
  sessionId: string;
@@ -1050,6 +1124,21 @@ export interface UpdateApplyResultMessage {
1050
1124
  message?: string;
1051
1125
  }
1052
1126
 
1127
+ export interface ThemeCustomListMessage {
1128
+ type: "theme:custom_list";
1129
+ themes: Array<{ name: string; author: string; variant: string; filename: string; colors: Record<string, string> }>;
1130
+ }
1131
+
1132
+ export interface ThemeSavedMessage {
1133
+ type: "theme:saved";
1134
+ theme: { name: string; author: string; variant: string; filename: string; colors: Record<string, string> };
1135
+ }
1136
+
1137
+ export interface ThemeDeletedMessage {
1138
+ type: "theme:deleted";
1139
+ filename: string;
1140
+ }
1141
+
1053
1142
  export type ServerMessage =
1054
1143
  | SessionListMessage
1055
1144
  | SessionCreatedMessage
@@ -1114,6 +1203,8 @@ export type ServerMessage =
1114
1203
  | ChatTodoUpdateMessage
1115
1204
  | ChatPlanModeMessage
1116
1205
  | AnalyticsDataMessage
1206
+ | AnalyticsSectionMessage
1207
+ | AnalyticsCompleteMessage
1117
1208
  | AnalyticsErrorMessage
1118
1209
  | SessionPreviewMessage
1119
1210
  | SessionHistoryPageResultMessage
@@ -1132,9 +1223,16 @@ export type ServerMessage =
1132
1223
  | UpdateStatusMessage
1133
1224
  | UpdateApplyResultMessage
1134
1225
  | ChatElicitationRequestMessage
1226
+ | ChatRewindPreviewResultMessage
1227
+ | ChatRewindExecuteResultMessage
1228
+ | ChatMessageUuidMessage
1135
1229
  | WarmupModelsMessage
1136
1230
  | WarmupAccountMessage
1137
- | ChatRateLimitMessage;
1231
+ | ChatRateLimitMessage
1232
+ | ThemeCustomListMessage
1233
+ | ThemeSavedMessage
1234
+ | ThemeDeletedMessage
1235
+ | SessionLoadingProgressMessage;
1138
1236
 
1139
1237
  export interface ChatRateLimitMessage {
1140
1238
  type: "chat:rate_limit";
@@ -61,7 +61,7 @@ export interface Attachment {
61
61
  lineCount?: number;
62
62
  }
63
63
 
64
- export type HistoryMessageType = "user" | "assistant" | "tool_start" | "tool_result" | "permission_request" | "prompt_question" | "todo_update" | "elicitation";
64
+ export type HistoryMessageType = "user" | "assistant" | "tool_start" | "tool_result" | "permission_request" | "prompt_question" | "todo_update" | "elicitation" | "compact_summary";
65
65
 
66
66
  export interface HistoryMessage {
67
67
  type: HistoryMessageType;
package/tsconfig.json CHANGED
@@ -8,16 +8,15 @@
8
8
  "esModuleInterop": true,
9
9
  "allowSyntheticDefaultImports": true,
10
10
  "resolveJsonModule": true,
11
- "declaration": true,
12
- "declarationMap": true,
13
11
  "sourceMap": true,
14
- "composite": true,
15
- "incremental": true
12
+ "jsx": "react-jsx",
13
+ "paths": {
14
+ "@lattice/shared": ["./src/shared/index.ts"]
15
+ },
16
+ "types": ["node"]
16
17
  },
17
- "references": [
18
- { "path": "./shared" },
19
- { "path": "./server" },
20
- { "path": "./client" }
18
+ "include": [
19
+ "src/**/*"
21
20
  ],
22
21
  "exclude": [
23
22
  "node_modules",
@@ -1,9 +1,17 @@
1
+ import { resolve } from "node:path";
1
2
  import { defineConfig } from "vite";
2
3
  import react from "@vitejs/plugin-react";
3
4
  import tailwindcss from "@tailwindcss/vite";
4
5
  import { VitePWA } from "vite-plugin-pwa";
5
6
 
6
7
  export default defineConfig({
8
+ root: ".",
9
+ publicDir: "public",
10
+ resolve: {
11
+ alias: {
12
+ "@lattice/shared": resolve(__dirname, "src/shared/index.ts"),
13
+ },
14
+ },
7
15
  plugins: [
8
16
  tailwindcss(),
9
17
  react(),
@@ -50,26 +58,14 @@ export default defineConfig({
50
58
  },
51
59
  }),
52
60
  ],
61
+ build: {
62
+ outDir: "dist/client",
63
+ },
53
64
  server: {
54
65
  host: "0.0.0.0",
55
- open: true,
56
- proxy: {
57
- "/ws": {
58
- target: "ws://localhost:" + (process.env.LATTICE_PORT || "17654"),
59
- ws: true,
60
- configure: function (proxy) {
61
- proxy.on("error", function () {});
62
- proxy.on("proxyReqWs", function (_proxyReq, _req, socket) {
63
- socket.on("error", function () {});
64
- });
65
- },
66
- },
67
- "/api": {
68
- target: "http://localhost:" + (process.env.LATTICE_PORT || "17654"),
69
- configure: function (proxy) {
70
- proxy.on("error", function () {});
71
- },
72
- },
66
+ hmr: {
67
+ host: "localhost",
73
68
  },
69
+ open: true,
74
70
  },
75
71
  });
package/.editorconfig DELETED
@@ -1,12 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- indent_style = space
5
- indent_size = 2
6
- end_of_line = lf
7
- charset = utf-8
8
- trim_trailing_whitespace = true
9
- insert_final_newline = true
10
-
11
- [*.md]
12
- trim_trailing_whitespace = false
@@ -1,81 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- pull_request:
8
- branches:
9
- - main
10
-
11
- jobs:
12
- typecheck:
13
- name: Typecheck
14
- runs-on: ubuntu-latest
15
- steps:
16
- - name: Checkout
17
- uses: actions/checkout@v5
18
-
19
- - name: Setup Bun
20
- uses: oven-sh/setup-bun@v2
21
- with:
22
- bun-version: latest
23
-
24
- - name: Setup Node.js
25
- uses: actions/setup-node@v4
26
- with:
27
- node-version: 22
28
-
29
- - name: Cache bun install
30
- uses: actions/cache@v4
31
- with:
32
- path: ~/.bun/install/cache
33
- key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
34
- restore-keys: |
35
- ${{ runner.os }}-bun-
36
-
37
- - name: Install dependencies
38
- run: bun install --frozen-lockfile
39
-
40
- - name: Build shared types
41
- run: bunx tsc -p shared/tsconfig.json
42
-
43
- - name: Typecheck server
44
- run: bunx tsc --noEmit -p server/tsconfig.json
45
-
46
- - name: Typecheck client
47
- run: bunx tsc --noEmit -p client/tsconfig.json
48
-
49
- build:
50
- name: Build
51
- runs-on: ubuntu-latest
52
- steps:
53
- - name: Checkout
54
- uses: actions/checkout@v5
55
-
56
- - name: Setup Bun
57
- uses: oven-sh/setup-bun@v2
58
- with:
59
- bun-version: latest
60
-
61
- - name: Setup Node.js
62
- uses: actions/setup-node@v4
63
- with:
64
- node-version: 22
65
-
66
- - name: Cache bun install
67
- uses: actions/cache@v4
68
- with:
69
- path: ~/.bun/install/cache
70
- key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
71
- restore-keys: |
72
- ${{ runner.os }}-bun-
73
-
74
- - name: Install dependencies
75
- run: bun install --frozen-lockfile
76
-
77
- - name: Build client
78
- run: cd client && npx vite build
79
-
80
- # Playwright tests require a running server (localhost:7654)
81
- # Run locally with: bunx playwright test
@@ -1,87 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
-
8
- permissions:
9
- contents: write
10
- issues: write
11
- pull-requests: write
12
- id-token: write
13
-
14
- jobs:
15
- release:
16
- name: Release
17
- runs-on: ubuntu-latest
18
- environment: npm
19
- outputs:
20
- new_release_published: ${{ steps.semantic.outputs.new_release_published }}
21
- new_release_version: ${{ steps.semantic.outputs.new_release_version }}
22
- steps:
23
- - name: Checkout
24
- uses: actions/checkout@v5
25
- with:
26
- fetch-depth: 0
27
-
28
- - name: Setup Bun
29
- uses: oven-sh/setup-bun@v2
30
- with:
31
- bun-version: latest
32
-
33
- - name: Setup Node.js
34
- uses: actions/setup-node@v5
35
- with:
36
- node-version: 24
37
-
38
- - name: Install dependencies
39
- run: bun install --frozen-lockfile
40
-
41
- - name: Build
42
- run: bun run build
43
-
44
- - name: Release
45
- id: semantic
46
- env:
47
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48
- run: |
49
- npx semantic-release
50
- TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
51
- if [ -n "$TAG" ]; then
52
- VERSION="${TAG#v}"
53
- echo "new_release_published=true" >> $GITHUB_OUTPUT
54
- echo "new_release_version=$VERSION" >> $GITHUB_OUTPUT
55
- else
56
- echo "new_release_published=false" >> $GITHUB_OUTPUT
57
- fi
58
-
59
- build-binaries:
60
- name: Build ${{ matrix.target }}
61
- needs: release
62
- if: needs.release.outputs.new_release_published == 'true'
63
- runs-on: ubuntu-latest
64
- strategy:
65
- matrix:
66
- target: [linux-x64, linux-arm64, darwin-x64, darwin-arm64]
67
- steps:
68
- - name: Checkout
69
- uses: actions/checkout@v5
70
- with:
71
- ref: v${{ needs.release.outputs.new_release_version }}
72
-
73
- - name: Setup Bun
74
- uses: oven-sh/setup-bun@v2
75
- with:
76
- bun-version: latest
77
-
78
- - name: Install dependencies
79
- run: bun install --frozen-lockfile
80
-
81
- - name: Build binary
82
- run: bun scripts/build-binary.ts --target=${{ matrix.target }} --version=${{ needs.release.outputs.new_release_version }}
83
-
84
- - name: Upload to GitHub Release
85
- env:
86
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
87
- run: gh release upload "v${{ needs.release.outputs.new_release_version }}" "dist/lattice-${{ matrix.target }}" --clobber