constellai 0.3.6 → 0.3.7

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 (283) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +3 -3
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/(app)/activity/page.js +2 -2
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/agents/[handle]/page.js +2 -2
  9. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
  10. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/(app)/code/page.js +2 -2
  12. package/.next/server/app/(app)/code/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/config/page.js +2 -2
  15. package/.next/server/app/(app)/config/page.js.nft.json +1 -1
  16. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/(app)/costs/page.js +2 -2
  18. package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
  19. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/(app)/cron/page.js +2 -2
  21. package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
  22. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(app)/dashboard/page.js +2 -2
  24. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
  25. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/(app)/design/page.js +44 -44
  27. package/.next/server/app/(app)/design/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/docs/[id]/page.js +2 -2
  30. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
  31. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/(app)/docs/page.js +2 -2
  33. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  34. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/(app)/github/page.js +2 -2
  36. package/.next/server/app/(app)/github/page.js.nft.json +1 -1
  37. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/(app)/goals/page.js +2 -2
  39. package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
  40. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/(app)/inbox/page.js +2 -2
  42. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
  43. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/(app)/knowledge/page.js +3 -3
  45. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
  46. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/(app)/models/page.js +2 -2
  48. package/.next/server/app/(app)/models/page.js.nft.json +1 -1
  49. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
  50. package/.next/server/app/(app)/notifications/page.js +2 -2
  51. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
  52. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/(app)/org/page.js +3 -3
  54. package/.next/server/app/(app)/org/page.js.nft.json +1 -1
  55. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/(app)/organizations/page.js +2 -2
  57. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
  58. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/(app)/page.js +3 -3
  60. package/.next/server/app/(app)/page.js.nft.json +1 -1
  61. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/(app)/planner/page.js +3 -3
  63. package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
  64. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/(app)/plugins/page.js +2 -2
  66. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
  67. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/(app)/pm/page.js +2 -2
  69. package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
  70. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/(app)/prepare-deploy/page.js +2 -2
  72. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
  73. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/(app)/profile/page.js +2 -2
  75. package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
  76. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/(app)/pulse/page.js +2 -2
  78. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
  79. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
  80. package/.next/server/app/(app)/reports/[id]/page.js +2 -2
  81. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
  82. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/(app)/reports/page.js +2 -2
  84. package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
  85. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
  86. package/.next/server/app/(app)/routines/page.js +2 -2
  87. package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
  88. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
  89. package/.next/server/app/(app)/search/page.js +2 -2
  90. package/.next/server/app/(app)/search/page.js.nft.json +1 -1
  91. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
  92. package/.next/server/app/(app)/security/page.js +2 -2
  93. package/.next/server/app/(app)/security/page.js.nft.json +1 -1
  94. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/(app)/skills/page.js +2 -2
  96. package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
  97. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
  98. package/.next/server/app/(app)/tasks/page.js +2 -2
  99. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
  100. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/(app)/test-dev/page.js +2 -2
  102. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
  103. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/(app)/update/page.js +3 -3
  105. package/.next/server/app/(app)/update/page.js.nft.json +1 -1
  106. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app/(auth)/login/page.js +2 -2
  108. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/(auth)/onboarding/page.js +2 -2
  110. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/_global-error.html +1 -1
  113. package/.next/server/app/_global-error.rsc +3 -3
  114. package/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  115. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  116. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  117. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  118. package/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
  119. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  120. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/cron/tick/route.js +2 -2
  122. package/.next/server/app/api/sync/file/route.js +1 -1
  123. package/.next/server/app/api/telegram/poll/route.js +3 -3
  124. package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
  125. package/.next/server/app-paths-manifest.json +3 -3
  126. package/.next/server/chunks/1249.js +3 -3
  127. package/.next/server/chunks/259.js +1 -1
  128. package/.next/server/chunks/2867.js +1 -1
  129. package/.next/server/chunks/2960.js +1 -1
  130. package/.next/server/chunks/3131.js +1 -1
  131. package/.next/server/chunks/3234.js +1 -1
  132. package/.next/server/chunks/4574.js +1 -0
  133. package/.next/server/chunks/4979.js +3 -3
  134. package/.next/server/chunks/6431.js +1 -1
  135. package/.next/server/chunks/6753.js +1 -0
  136. package/.next/server/chunks/{1765.js → 7236.js} +4 -1
  137. package/.next/server/chunks/7589.js +1 -1
  138. package/.next/server/chunks/7621.js +12 -0
  139. package/.next/server/chunks/7989.js +1 -1
  140. package/.next/server/chunks/7993.js +21 -0
  141. package/.next/server/chunks/8561.js +1 -1
  142. package/.next/server/chunks/8623.js +1 -1
  143. package/.next/server/chunks/8823.js +1 -1
  144. package/.next/server/chunks/8846.js +1 -0
  145. package/.next/server/chunks/{8719.js → 9160.js} +15 -15
  146. package/.next/server/chunks/9783.js +1 -1
  147. package/.next/server/middleware-build-manifest.js +1 -1
  148. package/.next/server/pages/500.html +1 -1
  149. package/.next/server/server-reference-manifest.js +1 -1
  150. package/.next/server/server-reference-manifest.json +1 -1
  151. package/.next/static/chunks/215-18ea748d2ff2caff.js +1 -0
  152. package/.next/static/chunks/27-b49ec46cfcce75b7.js +1 -0
  153. package/.next/static/chunks/2989-2dd9a66d007a96e8.js +4 -0
  154. package/.next/static/chunks/3219-92e75397858f3f1f.js +1 -0
  155. package/.next/static/chunks/4643-d0ab4088e129651f.js +1 -0
  156. package/.next/static/chunks/8370-e88907d9c72435e7.js +12 -0
  157. package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
  158. package/.next/static/chunks/app/(app)/activity/{page-cf8d67941440bdce.js → page-93d4012627ea70d5.js} +1 -1
  159. package/.next/static/chunks/app/(app)/agents/[handle]/page-bfe740784bdf239c.js +1 -0
  160. package/.next/static/chunks/app/(app)/code/page-5e24874f11857823.js +1 -0
  161. package/.next/static/chunks/app/(app)/config/page-12c5487a8d55c2c2.js +1 -0
  162. package/.next/static/chunks/app/(app)/costs/page-6edcec363617f5ef.js +1 -0
  163. package/.next/static/chunks/app/(app)/cron/page-f9167770757921f7.js +1 -0
  164. package/.next/static/chunks/app/(app)/dashboard/page-103f172e762911d1.js +1 -0
  165. package/.next/static/chunks/app/(app)/design/{page-f48c0487d240248e.js → page-11b9cc40f32fe34f.js} +3 -3
  166. package/.next/static/chunks/app/(app)/docs/[id]/page-eaae80c3d47e1ba7.js +1 -0
  167. package/.next/static/chunks/app/(app)/docs/page-87457e514ea7de32.js +1 -0
  168. package/.next/static/chunks/app/(app)/github/page-ff62b7618c594632.js +1 -0
  169. package/.next/static/chunks/app/(app)/goals/page-d4d854c091020a92.js +1 -0
  170. package/.next/static/chunks/app/(app)/inbox/page-1bcfc50e9df5ed6f.js +12 -0
  171. package/.next/static/chunks/app/(app)/knowledge/page-0a55ce74e274817c.js +1 -0
  172. package/.next/static/chunks/app/(app)/layout-825ba765e8034dfb.js +1 -0
  173. package/.next/static/chunks/app/(app)/models/page-cd077c548916b8cb.js +1 -0
  174. package/.next/static/chunks/app/(app)/notifications/page-c5c7945f6f6f18d6.js +12 -0
  175. package/.next/static/chunks/app/(app)/org/page-a83804854bd0d44a.js +12 -0
  176. package/.next/static/chunks/app/(app)/organizations/page-b38db8e364e3a108.js +1 -0
  177. package/.next/static/chunks/app/(app)/page-733340fec4cd0173.js +1 -0
  178. package/.next/static/chunks/app/(app)/planner/page-06b2841d0438d92d.js +1 -0
  179. package/.next/static/chunks/app/(app)/plugins/{page-3b78b76ecb21d616.js → page-535ed062643077fc.js} +1 -1
  180. package/.next/static/chunks/app/(app)/pm/page-dc0296761e1af17c.js +1 -0
  181. package/.next/static/chunks/app/(app)/prepare-deploy/page-6f0c5081caf1d013.js +1 -0
  182. package/.next/static/chunks/app/(app)/profile/page-cef1aa72ffc02e9c.js +1 -0
  183. package/.next/static/chunks/app/(app)/pulse/page-d4bdec1709913581.js +1 -0
  184. package/.next/static/chunks/app/(app)/reports/[id]/page-f9167770757921f7.js +1 -0
  185. package/.next/static/chunks/app/(app)/reports/page-5c37a53bbd4fd1c3.js +1 -0
  186. package/.next/static/chunks/app/(app)/routines/page-e274160cfbb3c594.js +1 -0
  187. package/.next/static/chunks/app/(app)/search/page-f0e082b9b0402981.js +1 -0
  188. package/.next/static/chunks/app/(app)/security/page-a12f04656bde8aad.js +1 -0
  189. package/.next/static/chunks/app/(app)/skills/page-583f9780fa981aa8.js +1 -0
  190. package/.next/static/chunks/app/(app)/tasks/page-7bb09650b84e0755.js +1 -0
  191. package/.next/static/chunks/app/(app)/test-dev/page-ce66efbb83b2ed21.js +1 -0
  192. package/.next/static/chunks/app/(app)/update/page-6a8082f1c1b3b762.js +1 -0
  193. package/.next/static/chunks/app/(auth)/login/page-b512c906a1566d8c.js +1 -0
  194. package/.next/static/chunks/app/(auth)/onboarding/page-8f6bf1259bb5aab5.js +1 -0
  195. package/.next/trace-build +1 -1
  196. package/CHANGELOG.md +26 -1
  197. package/README.md +1 -1
  198. package/README.pt-BR.md +1 -1
  199. package/THIRD_PARTY_LICENSES.md +64 -0
  200. package/docs/UPDATE.md +9 -2
  201. package/docs/en/AI_ARCHITECTURE.md +2 -2
  202. package/docs/en/CHAT_COMMANDS.md +1 -1
  203. package/docs/en/CONFIGURATION.md +1 -1
  204. package/docs/en/DESIGN.md +1 -1
  205. package/docs/en/FAQ.md +3 -3
  206. package/docs/en/GOALS_SPECS_ISSUES.md +1 -1
  207. package/docs/en/MCP.md +2 -2
  208. package/docs/en/PLUGINS.md +2 -2
  209. package/docs/en/PORTABLE_MODE.md +1 -1
  210. package/docs/en/PUBLISHING.md +14 -15
  211. package/docs/en/README.md +1 -1
  212. package/docs/en/SECURITY.md +3 -3
  213. package/docs/en/START_MODE.md +1 -1
  214. package/docs/en/TELEGRAM.md +1 -1
  215. package/docs/en/TROUBLESHOOTING.md +1 -1
  216. package/docs/en/VPS_MODE.md +2 -2
  217. package/docs/pt/AI_ARCHITECTURE.md +2 -2
  218. package/docs/pt/CHAT_COMMANDS.md +1 -1
  219. package/docs/pt/CONFIGURATION.md +1 -1
  220. package/docs/pt/DESIGN.md +1 -1
  221. package/docs/pt/FAQ.md +3 -3
  222. package/docs/pt/GOALS_SPECS_ISSUES.md +1 -1
  223. package/docs/pt/MCP.md +1 -1
  224. package/docs/pt/PLUGINS.md +2 -2
  225. package/docs/pt/PORTABLE_MODE.md +1 -1
  226. package/docs/pt/PUBLISHING.md +6 -7
  227. package/docs/pt/README.md +1 -1
  228. package/docs/pt/SECURITY.md +3 -3
  229. package/docs/pt/START_MODE.md +1 -1
  230. package/docs/pt/TELEGRAM.md +1 -1
  231. package/docs/pt/TROUBLESHOOTING.md +2 -2
  232. package/docs/pt/VPS_MODE.md +1 -1
  233. package/package.json +2 -1
  234. package/scripts/publish-public.mjs +21 -16
  235. package/.next/server/chunks/158.js +0 -21
  236. package/.next/server/chunks/2495.js +0 -1
  237. package/.next/server/chunks/4467.js +0 -12
  238. package/.next/server/chunks/535.js +0 -1
  239. package/.next/server/chunks/7225.js +0 -4
  240. package/.next/static/chunks/2831-d7f6495bf43f4f9d.js +0 -4
  241. package/.next/static/chunks/3219-486bddbf87074d04.js +0 -1
  242. package/.next/static/chunks/3775-82dcdf23109aa5bf.js +0 -1
  243. package/.next/static/chunks/6836-341614c5418e2aa4.js +0 -1
  244. package/.next/static/chunks/8306-7418693cd7fd5861.js +0 -1
  245. package/.next/static/chunks/8370-8b3e7106703024ce.js +0 -12
  246. package/.next/static/chunks/9690-ea874aec65263b9d.js +0 -1
  247. package/.next/static/chunks/app/(app)/agents/[handle]/page-7baa24f1ae8bc400.js +0 -1
  248. package/.next/static/chunks/app/(app)/code/page-b342d74807e8b914.js +0 -1
  249. package/.next/static/chunks/app/(app)/config/page-1e68ba8d20215d67.js +0 -1
  250. package/.next/static/chunks/app/(app)/costs/page-a58d759eec6048df.js +0 -1
  251. package/.next/static/chunks/app/(app)/cron/page-cc7f4e3d8ab5618f.js +0 -1
  252. package/.next/static/chunks/app/(app)/dashboard/page-7757c33acf751c4c.js +0 -1
  253. package/.next/static/chunks/app/(app)/docs/[id]/page-95c52cf457d869ef.js +0 -1
  254. package/.next/static/chunks/app/(app)/docs/page-fbc50cd357d5e2ca.js +0 -1
  255. package/.next/static/chunks/app/(app)/github/page-dac138256ed91e65.js +0 -1
  256. package/.next/static/chunks/app/(app)/goals/page-f87d40f6832d63b3.js +0 -1
  257. package/.next/static/chunks/app/(app)/inbox/page-49c1293e0d98874f.js +0 -12
  258. package/.next/static/chunks/app/(app)/knowledge/page-18fca436883ed5cc.js +0 -1
  259. package/.next/static/chunks/app/(app)/layout-c9778f98c0103f74.js +0 -1
  260. package/.next/static/chunks/app/(app)/models/page-030c085cd7767495.js +0 -1
  261. package/.next/static/chunks/app/(app)/notifications/page-12af3fee8b36a00e.js +0 -12
  262. package/.next/static/chunks/app/(app)/org/page-576001ff4a820744.js +0 -12
  263. package/.next/static/chunks/app/(app)/organizations/page-b973e1eee6e56baf.js +0 -1
  264. package/.next/static/chunks/app/(app)/page-cef52fc5f4fd4418.js +0 -1
  265. package/.next/static/chunks/app/(app)/planner/page-da2db56914346192.js +0 -1
  266. package/.next/static/chunks/app/(app)/pm/page-78303379c1ea5dc5.js +0 -1
  267. package/.next/static/chunks/app/(app)/prepare-deploy/page-98b1bd3bf712bb60.js +0 -1
  268. package/.next/static/chunks/app/(app)/profile/page-de24af53de0ef2b2.js +0 -1
  269. package/.next/static/chunks/app/(app)/pulse/page-db7fd63369c01fa2.js +0 -1
  270. package/.next/static/chunks/app/(app)/reports/[id]/page-cc7f4e3d8ab5618f.js +0 -1
  271. package/.next/static/chunks/app/(app)/reports/page-97ab95e6f8b77b62.js +0 -1
  272. package/.next/static/chunks/app/(app)/routines/page-cf6a3331775ca11b.js +0 -1
  273. package/.next/static/chunks/app/(app)/search/page-3960825f66b05606.js +0 -1
  274. package/.next/static/chunks/app/(app)/security/page-53b0770355cf7aa4.js +0 -1
  275. package/.next/static/chunks/app/(app)/skills/page-809a73b94861f8b8.js +0 -1
  276. package/.next/static/chunks/app/(app)/tasks/page-b2497927d127f7aa.js +0 -1
  277. package/.next/static/chunks/app/(app)/test-dev/page-93ec5d89e2afb612.js +0 -1
  278. package/.next/static/chunks/app/(app)/update/page-a23322af4e59a93c.js +0 -1
  279. package/.next/static/chunks/app/(auth)/login/page-446681bfb762cb05.js +0 -1
  280. package/.next/static/chunks/app/(auth)/onboarding/page-2b8cb3e0b024c995.js +0 -1
  281. package/docs/assets/blackhole.svg +0 -37
  282. /package/.next/static/{fb-rRThu8P8AXEQQBbLgT → Mx3bcAGWI83SQ6PqC4kYX}/_buildManifest.js +0 -0
  283. /package/.next/static/{fb-rRThu8P8AXEQQBbLgT → Mx3bcAGWI83SQ6PqC4kYX}/_ssgManifest.js +0 -0
@@ -9,7 +9,7 @@ Read more at https://nextjs.org/docs/messages/missing-root-layout-tags"
9
9
  data-next-error-stack=""
10
10
  ></template>
11
11
  `))}})}function I(a,b){let c=a;for(let a of b)a&&(c=c.pipeThrough(a));return c}async function J(a,{suffix:b,inlinedDataStream:c,isStaticGeneration:d,deploymentId:e,getServerInsertedHTML:f,getServerInsertedMetadata:g,validateRootLayout:j}){let k,l,m=b?b.split(E,1)[0]:null;return d?await a.allReady:await (0,i.waitAtLeastOneReactRenderTask)(),I(a,[x(),e?G(e):null,z(g),null!=m&&m.length>0?(l=!1,new TransformStream({transform(a,b){if(b.enqueue(a),!l){let a;l=!0,k=a=new h.DetachedPromise,(0,i.scheduleImmediate)(()=>{try{b.enqueue(p.encode(m))}catch{}finally{k=void 0,a.resolve()}})}},flush(a){if(k)return k.promise;l||a.enqueue(p.encode(m))}})):null,c?D(c,!0):null,j?H():null,F(),A(f)])}async function K(a,{getServerInsertedHTML:b,getServerInsertedMetadata:c,deploymentId:d}){return I(a,[x(),new TransformStream({transform(a,b){(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.BODY_AND_HTML)||(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.BODY)||(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.HTML)||(a=(0,k.removeFromUint8Array)(a,j.ENCODED_TAGS.CLOSED.BODY),a=(0,k.removeFromUint8Array)(a,j.ENCODED_TAGS.CLOSED.HTML),b.enqueue(a))}}),d?G(d):null,A(b),z(c)])}async function L(a,{inlinedDataStream:b,getServerInsertedHTML:c,getServerInsertedMetadata:d,deploymentId:e}){return I(a,[x(),e?G(e):null,A(c),z(d),D(b,!0),F()])}async function M(a,{inlinedDataStream:b,getServerInsertedHTML:c,getServerInsertedMetadata:d,deploymentId:e}){return I(a,[x(),e?G(e):null,A(c),await B(),z(d),D(b,!0),F()])}async function N(a,{delayDataUntilFirstHtmlChunk:b,inlinedDataStream:c,getServerInsertedHTML:d,getServerInsertedMetadata:e,deploymentId:f}){return I(a,[x(),f?G(f):null,A(d),z(e),D(c,b),F()])}function O(){return r(E)}function P(a,b,c){let d=new TextEncoder,e=d.encode(`[${a}]`),f=e[0],g=d.encode(`[${b},${c}]`),h=e.length,i=null,j=!1;function k(a,b){if(j){b&&a.enqueue(b);return}if(i){let c=i.length-(h-1);if(b&&(c+=Math.min(b.length,h-1)),c<1){a.enqueue(i),i=b;return}let d=i.indexOf(f);a:for(;-1<d&&d<c;){let c=1;for(;c<h;){let a=d+c;if((a<i.length?i[a]:b[a-i.length])!==e[c]){d=i.indexOf(f,d+1);continue a}c++}if(j=!0,a.enqueue(i.subarray(0,d)),a.enqueue(g),d+h<i.length&&a.enqueue(i.slice(d+h)),b){let c=d+h-i.length,e=c>0?b.subarray(c):b;a.enqueue(e)}i=null;return}a.enqueue(i)}i=b}return new TransformStream({transform(a,b){k(b,a)},flush(a){k(a,null)}})}},15707:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={HTTPAccessErrorStatus:function(){return e},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return g},getAccessFallbackErrorTypeByStatus:function(){return j},getAccessFallbackHTTPStatus:function(){return i},isHTTPAccessFallbackError:function(){return h}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},f=new Set(Object.values(e)),g="NEXT_HTTP_ERROR_FALLBACK";function h(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===g&&f.has(Number(c))}function i(a){return Number(a.digest.split(";")[1])}function j(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},15793:(a,b,c)=>{"use strict";c.d(b,{$:()=>e});var d=c(81605);let e=a=>(0,d.q)("a-z","A-Z","0-9")(a||32)},16035:(a,b,c)=>{"use strict";c.d(b,{Qq:()=>k});var d=c(44264),e=c(65340),f=c(81502);class g extends f.o{static [d.i]="SQLiteTextBuilder";constructor(a,b){super(a,"string","SQLiteText"),this.config.enumValues=b.enum,this.config.length=b.length}build(a){return new h(a,this.config)}}class h extends f.v{static [d.i]="SQLiteText";enumValues=this.config.enumValues;length=this.config.length;constructor(a,b){super(a,b)}getSQLType(){return`text${this.config.length?`(${this.config.length})`:""}`}}class i extends f.o{static [d.i]="SQLiteTextJsonBuilder";constructor(a){super(a,"json","SQLiteTextJson")}build(a){return new j(a,this.config)}}class j extends f.v{static [d.i]="SQLiteTextJson";getSQLType(){return"text"}mapFromDriverValue(a){return JSON.parse(a)}mapToDriverValue(a){return JSON.stringify(a)}}function k(a,b={}){let{name:c,config:d}=(0,e.Ll)(a,b);return"json"===d.mode?new i(c):new g(c,d)}},16338:(a,b,c)=>{"use strict";c.d(b,{Y:()=>e,i:()=>f});var d=c(80442);function e(a){return(0,d.ll)`${a} asc`}function f(a){return(0,d.ll)`${a} desc`}},16891:(a,b,c)=>{"use strict";c.d(b,{k:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"JSONOperatorChainNode"===a.kind,create:a=>(0,d.CN)({kind:"JSONOperatorChainNode",operator:a,values:(0,d.CN)([])}),cloneWithValue:(a,b)=>(0,d.CN)({...a,values:(0,d.CN)([...a.values,b])})})},16935:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={ActionDidNotRevalidate:function(){return e},ActionDidRevalidateDynamicOnly:function(){return g},ActionDidRevalidateStaticAndDynamic:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=0,f=1,g=2},17532:(a,b,c)=>{"use strict";c.d(b,{P:()=>f});var d=c(18110),e=c(98444);let f=(0,d.CN)({is:a=>"CaseNode"===a.kind,create:a=>(0,d.CN)({kind:"CaseNode",value:a}),cloneWithWhen:(a,b)=>(0,d.CN)({...a,when:(0,d.CN)(a.when?[...a.when,b]:[b])}),cloneWithThen:(a,b)=>(0,d.CN)({...a,when:a.when?(0,d.CN)([...a.when.slice(0,-1),e.t.cloneWithResult(a.when[a.when.length-1],b)]):void 0}),cloneWith:(a,b)=>(0,d.CN)({...a,...b})})},18110:(a,b,c)=>{"use strict";function d(a){return void 0===a||void 0===a}function e(a){return"string"==typeof a}function f(a){return"number"==typeof a}function g(a){return"boolean"==typeof a}function h(a){return null===a}function i(a){return a instanceof Date}function j(a){return"bigint"==typeof a}function k(a){return"u">typeof Buffer&&Buffer.isBuffer(a)}function l(a){return"function"==typeof a}function m(a){return"object"==typeof a&&null!==a}function n(a){return Object.freeze(a)}function o(a){return p(a)?a:[a]}function p(a){return Array.isArray(a)}function q(a){return a}function r(a){return a instanceof Error?a.message:String(a)}c.d(b,{$P:()=>i,CN:()=>n,Et:()=>f,Gv:()=>m,I4:()=>r,Kg:()=>e,Lm:()=>g,MH:()=>p,Pe:()=>k,Tn:()=>l,_j:()=>o,b0:()=>d,kZ:()=>h,lQ:()=>q,sI:()=>j}),Object.prototype.toString},19105:(a,b,c)=>{"use strict";c.d(b,{a:()=>e});var d=c(95260);function e(){return new f}class f{#i;get queryId(){return void 0===this.#i&&(this.#i=(0,d.D)(8)),this.#i}}},19523:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={HeadersAdapter:function(){return h},ReadonlyHeadersError:function(){return g}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(63574);class g extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new g}}class h extends Headers{constructor(a){super(),this.headers=new Proxy(a,{get(b,c,d){if("symbol"==typeof c)return f.ReflectAdapter.get(b,c,d);let e=c.toLowerCase(),g=Object.keys(a).find(a=>a.toLowerCase()===e);if(void 0!==g)return f.ReflectAdapter.get(b,g,d)},set(b,c,d,e){if("symbol"==typeof c)return f.ReflectAdapter.set(b,c,d,e);let g=c.toLowerCase(),h=Object.keys(a).find(a=>a.toLowerCase()===g);return f.ReflectAdapter.set(b,h??c,d,e)},has(b,c){if("symbol"==typeof c)return f.ReflectAdapter.has(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0!==e&&f.ReflectAdapter.has(b,e)},deleteProperty(b,c){if("symbol"==typeof c)return f.ReflectAdapter.deleteProperty(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0===e||f.ReflectAdapter.deleteProperty(b,e)}})}static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"append":case"delete":case"set":return g.callable;default:return f.ReflectAdapter.get(a,b,c)}}})}merge(a){return Array.isArray(a)?a.join(", "):a}static from(a){return a instanceof Headers?a:new h(a)}append(a,b){let c=this.headers[a];"string"==typeof c?this.headers[a]=[c,b]:Array.isArray(c)?c.push(b):this.headers[a]=b}delete(a){delete this.headers[a]}get(a){let b=this.headers[a];return void 0!==b?this.merge(b):null}has(a){return void 0!==this.headers[a]}set(a,b){this.headers[a]=b}forEach(a,b){for(let[c,d]of this.entries())a.call(b,d,c,this)}*entries(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase(),c=this.get(b);yield[b,c]}}*keys(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase();yield b}}*values(){for(let a of Object.keys(this.headers)){let b=this.get(a);yield b}}[Symbol.iterator](){return this.entries()}}},20177:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
12
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},21249:(a,b,c)=>{"use strict";c.d(b,{reconcileOnBoot:()=>cK});var d=c(15220),e=c(82339),f=c(9165),g=c(71401),h=c(48685),i=c(16338);async function j(a,b=3e5){try{let c=Date.now()-b,g=await e.db.select().from(f.event).where((0,d.eq)(f.event.workspaceId,a));if(!g.length)return 0;let h=new Map;for(let a of g){let b=h.get(a.runId)??[];b.push(a),h.set(a.runId,b)}let i=new Set((await e.db.select({id:f.message.id}).from(f.message).where((0,d.eq)(f.message.workspaceId,a))).map(a=>a.id)),j=0;for(let[b,g]of h){let h=g.reduce((a,b)=>Math.max(a,b.seq),0);i.has(b)||g.some(a=>"done"===a.kind)||h>c||(await e.db.delete(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.runId,b))),j+=g.length)}return j}catch(a){return console.error("[events-prune] pruneOrphanRuns failed:",a),0}}async function k(a,b,c){try{await e.db.delete(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.runId,b),(0,d.eq)(f.event.kind,"text")));let g=await e.db.select({seq:f.event.seq}).from(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.channel,c))).orderBy((0,i.i)(f.event.seq)).limit(500);if(500===g.length){let b=g[g.length-1].seq;await e.db.delete(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.channel,c),(0,d.lt)(f.event.seq,b)))}}catch(a){console.error("[events-prune] failed:",a)}}var l=c(77598),m=c(38442),n=c(80629);Object.fromEntries([{key:"language",label:"Language",opts:["TypeScript","JavaScript","Python","Go","Rust","Java","Kotlin","C#","Ruby","PHP","Elixir","Swift","C++","C","Scala","Dart","Clojure","Haskell","Lua","R","Objective-C","Erlang","None"]},{key:"runtime",label:"Runtime",opts:["Node.js","Bun","Deno","Python 3","PyPy","JVM",".NET","BEAM (Erlang VM)","None"]},{key:"frontend",label:"Frontend",opts:["React","Vue","Svelte","Angular","SolidJS","Preact","Qwik","Lit","HTMX","Alpine.js","Ember","Backbone","HTML/CSS","Vanilla JS","None"]},{key:"meta",label:"Meta-framework / SSG",opts:["Next.js","Nuxt","Remix","SvelteKit","Astro","Gatsby","Vite (SPA)","Hugo","Jekyll","Eleventy","Docusaurus","Static (no framework)","None"]},{key:"backend",label:"Backend framework",opts:["NestJS","Fastify","Express","Hono","Koa","Django","Flask","FastAPI","Spring Boot","Spring","Laravel","Symfony","CodeIgniter","Ruby on Rails","Gin","Fiber","Actix","Phoenix","ASP.NET Core","AdonisJS","GraphQL","Nginx","None"]},{key:"mobile",label:"Mobile",opts:["React Native","Flutter","Android","Ionic","Xamarin","NativeScript","None"]},{key:"database",label:"Database",opts:["PostgreSQL","MySQL","MariaDB","SQLite","MongoDB","Redis","CockroachDB","Cassandra","DynamoDB","Supabase","PlanetScale","Neon","None"]},{key:"orm",label:"ORM / Data layer",opts:["Prisma","Drizzle","TypeORM","Sequelize","SQLAlchemy","Django ORM","Mongoose","Knex","Diesel","GORM","None"]},{key:"styling",label:"Styling / UI",opts:["Tailwind CSS","Plain CSS","CSS Modules","styled-components","Sass","Vanilla Extract","UnoCSS","shadcn/ui","MUI","Bootstrap","Bulma","Vuetify","Chakra UI","None"]},{key:"testing",label:"Testing",opts:["Jest","Vitest","Cypress","Playwright","Selenium","Mocha","Jasmine","Puppeteer","None"]},{key:"aiml",label:"AI / ML",opts:["TensorFlow","PyTorch","scikit-learn","Keras","Pandas","NumPy","Jupyter","None"]},{key:"dataviz",label:"Data viz",opts:["D3","Chart.js","Grafana","Plotly","None"]},{key:"container",label:"Container",opts:["Docker","Podman","containerd","None"]},{key:"infra",label:"Infra / DevOps",opts:["Tailscale","Cloudflare","Vercel","Netlify","Fly.io","Railway","AWS","GCP","Azure","Kubernetes","Jenkins","CircleCI","Terraform","Ansible","Vagrant","None"]},{key:"baas",label:"Backend-as-a-service",opts:["Firebase","Appwrite","Amplify","Heroku","Supabase","None"]},{key:"queue",label:"Queue / Cache",opts:["Redis","BullMQ","RabbitMQ","Kafka","NATS","Celery","None"]},{key:"auth",label:"Auth",opts:["Auth.js","Clerk","Lucia","Supabase Auth","Keycloak","Auth0","Passport","None"]}].map(a=>[a.key,a.label]));let o=new Set(["Next.js","Nuxt","Remix","SvelteKit","Astro","Gatsby"]),p=[{handle:"ada",name:"Ada",role:"CEO",color:"#e0a44e",reportsTo:null,model:"sonnet",provider:"cli_claude_code",temperature:.4,dailyCapUsd:15,tier:"critical",identity:"Decisive, outcome-driven leader. Speaks in goals, not tasks. Protects scope and budget.",ritual:"Read the company goals, decompose into epics, delegate to leads, review what shipped."},{handle:"linus",name:"Linus",role:"CTO",color:"#9a5cff",reportsTo:"ada",model:"sonnet",provider:"cli_claude_code",temperature:.3,dailyCapUsd:40,tier:"critical",identity:"Systems thinker. Balances delivery speed against technical debt.",ritual:"Turn epics into tickets, route work to specialists, clear blockers, review PRs."},{handle:"donald",name:"Donald",role:"Product Owner",color:"#4fc9b0",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.4,dailyCapUsd:20,tier:"heavy",identity:"Customer voice. Ruthless about priority and clarity.",ritual:"Groom the backlog with MoSCoW, plan the sprint, track delivery, close with a retro."},{handle:"margaret",name:"Margaret",role:"Backend",color:"#3fb98f",reportsTo:"linus",model:"sonnet",provider:"cli_claude_code",temperature:.3,dailyCapUsd:50,tier:"heavy",identity:"Pragmatic server engineer. Values correctness, small diffs and green tests.",ritual:"Pull one ticket, read context, implement on a branch, never push without a passing suite."},{handle:"grace",name:"Grace",role:"Frontend",color:"#5b8def",reportsTo:"linus",model:"sonnet",provider:"cli_claude_code",temperature:.5,dailyCapUsd:45,tier:"heavy",identity:"Craft-focused UI engineer. Cares about accessibility and clean component APIs.",ritual:"Read the design tokens, build the smallest component that works, typecheck before PR."},{handle:"edsger",name:"Edsger",role:"QA",color:"#e8688f",reportsTo:"linus",model:"haiku",provider:"cli_claude_code",temperature:.2,dailyCapUsd:25,tier:"heavy",identity:"Skeptical quality gate. Assumes nothing works until proven by a test.",ritual:"Reproduce, cover with a test, run the suite, then gate the sign-off."},{handle:"werner",name:"Werner",role:"DevOps",color:"#f0a35e",reportsTo:"linus",model:"haiku",provider:"cli_claude_code",temperature:.3,dailyCapUsd:20,tier:"heavy",identity:"Reliability-minded operator. Automates the boring, guards the leases.",ritual:"Build, deploy a preview, report the URL, never leave an env leased too long."},{handle:"barbara",name:"Barbara",role:"Docs",color:"#b3d97a",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.4,dailyCapUsd:15,tier:"light",identity:"Patient explainer. Turns changes into understandable docs.",ritual:"Watch merges, draft docs while context is fresh, verify every link."},{handle:"whitfield",name:"Whitfield",role:"CyberSec",color:"#c4a0ff",reportsTo:"linus",model:"opus",provider:"cli_claude_code",temperature:.2,dailyCapUsd:30,tier:"critical",identity:"Adversarial reviewer. Thinks like an attacker, writes like an auditor.",ritual:"Audit every change for secret handling and injection, file findings with a concrete fix."},{handle:"vannevar",name:"Vannevar",role:"Knowledge",color:"#7ac5e0",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.2,dailyCapUsd:10,tier:"light",identity:"Keeper of the company's semantic memory. Indexes every document AND conversation into embeddings so any agent can recall anything instantly.",ritual:"Keep the embedding server healthy; re-index the workspace docs and the chat (team room, DMs, Telegram) into the RAG index so retrieval stays current."}],q=[{name:"open-pr",summary:"Branch, commit, open a PR with a test plan and request CTO review.",trigger:"When a work product is ready to merge",steps:["Create a branch from main","Commit the change set","Open a PR with summary + test plan","Request review from the CTO"]},{name:"run-suite",summary:"Detect the package manager, run the test task and gate sign-off on red.",trigger:"Before any sign-off",steps:["Detect package manager","Run the workspace test task","Parse results","Block sign-off if red"]},{name:"secret-scan",summary:"Scan for plaintext keys, verify vault references and flag log leaks.",trigger:"On every adapter change",steps:["Grep for plaintext keys","Check vault references","Flag any echo to logs"]},{name:"telegram-notify",summary:"Format a digest and POST it to the Telegram Bot API.",trigger:"When a routine completes",steps:["Format the digest","Resolve the chat id from secrets","POST to Telegram Bot API"]},{name:"moscow-prioritise",summary:"Score backlog items and re-order them with the MoSCoW method.",trigger:"During backlog grooming",steps:["Score each item","Assign Must/Should/Could/Won't","Re-order the backlog"]},{name:"gguf-validate",summary:"Pull a GGUF, verify SHA-256 and bind to loopback.",trigger:"When installing a local model",steps:["Download the GGUF","Verify SHA-256","Bind to 127.0.0.1 only"]}],r=q.filter(a=>"telegram-notify"!==a.name&&"gguf-validate"!==a.name).map(a=>a.name);var s=c(80733),t=c(48161),u=c.n(t),v=c(73024),w=c(31421),x=c(90977),y=c.n(x),z=c(76760),A=c(57075),B=c(46466),C=c(54410),D=c(36156);let E=process.env.OLLAMA_URL??"http://127.0.0.1:11434",F=process.env.CONSTELLA_EMBED_MODEL??"nomic-embed-text",G=/nomic/i.test(F),H=(a,b)=>`search_${b}: ${a}`,I=process.env.CONSTELLA_EMBED_URL??"http://127.0.0.1:8083",J=[".claude","DOCS","PO","Reports","specs","issues","design-skills"];function K(a){let b=a.replace(/\\/g,"/");return!(b.startsWith(".claude/kb/")||b.startsWith(".claude/skills/"))&&(b.startsWith("mock/")||b.startsWith("design-mock/")?/\.(md|html?|css|jsx?|tsx?|txt|json)$/i.test(b):b.endsWith(".md")&&J.some(a=>b===`${a}.md`||b.startsWith(`${a}/`)))}async function L(a,b="document"){try{let c=await fetch(`${E}/api/embeddings`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:F,prompt:G?H(a,b):a}),signal:AbortSignal.timeout(8e3)});if(c.ok){let a=await c.json();if(Array.isArray(a.embedding)&&a.embedding.length)return a.embedding}}catch{}try{let c=await fetch(`${I}/v1/embeddings`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({input:H(a,b),model:"nomic-embed"}),signal:AbortSignal.timeout(8e3)});if(c.ok){let a=await c.json(),b=a?.data?.[0]?.embedding;if(Array.isArray(b)&&b.length)return b}}catch{}return null}function M(a){let b=a.split(/\n(?=#{1,3}\s)/).map(a=>a.trim()).filter(Boolean),c=[];for(let d of b.length?b:[a])if(d)if(d.length<=1200)c.push(d);else for(let a=0;a<d.length;a+=1200)c.push(d.slice(a,a+1200));return c.slice(0,40)}async function N(a){let[b]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));if(!b)return{ok:!1,chunks:0,embedded:!1};let c=(0,m.CS)(a).filter(K);await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,b.id),(0,d.kZ)(f.ragChunk.kbEntryId)));let g=0,h=!1;for(let d of c)for(let c of M((0,m.sL)(a,d)??"")){let a=await L(c);a&&(h=!0),await e.db.insert(f.ragChunk).values({id:(0,l.randomUUID)(),workspaceId:b.id,path:d,chunk:c,vector:a?JSON.stringify(a):null}),g++}return{ok:!0,chunks:g+=await O(a),embedded:h}}async function O(a){let[b]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));if(!b)return 0;await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,b.id),(0,d.mj)(f.ragChunk.path,"chat/%")));let c=await e.db.select().from(f.message).where((0,d.eq)(f.message.workspaceId,b.id)).orderBy((0,i.Y)(f.message.createdAt)),g=new Map;for(let a of c){let b=(a.text??"").replace(/\s+/g," ").trim();if(!b)continue;let c="operator"===a.fromKind?"Operator":"@"+(a.fromHandle??"agent"),d=g.get(a.channel);d||(d=[],g.set(a.channel,d)),d.push(`${c}: ${b}`)}let h=0;for(let[a,c]of g)for(let d of M(c.slice(-400).join("\n"))){let c=await L(d);await e.db.insert(f.ragChunk).values({id:(0,l.randomUUID)(),workspaceId:b.id,path:`chat/${a}`,chunk:d,vector:c?JSON.stringify(c):null}),h++}return h}async function P(a,b){if(!K(b))return;let[c]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));if(c)for(let g of(await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,c.id),(0,d.eq)(f.ragChunk.path,b))),M((0,m.sL)(a,b)??""))){let a=await L(g);await e.db.insert(f.ragChunk).values({id:(0,l.randomUUID)(),workspaceId:c.id,path:b,chunk:g,vector:a?JSON.stringify(a):null})}}async function Q(a,b){if(!K(b))return;let[c]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));c&&await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,c.id),(0,d.eq)(f.ragChunk.path,b)))}let R=new Map;function S(a,b,c=.02){let d=0;try{d=(0,v.statSync)(a).size}catch{return{ok:!1,actual:0,expected:b,message:"file missing after download"}}if(!b||b<=0)return{ok:!0,actual:d,expected:b,message:"size ok (no expected size)"};let e=d/b,f=e>=1-c&&e<=1+c;return{ok:f,actual:d,expected:b,message:f?"size verified":`size mismatch — got ${d} bytes, expected ~${b} (truncated/corrupt)`}}let T=new Map,U=[{repo:"Qwen2.5-0.5B-Instruct",paramsB:.5,kind:"chat"},{repo:"Qwen2.5-1.5B-Instruct",paramsB:1.5,kind:"chat"},{repo:"Qwen2.5-3B-Instruct",paramsB:3,kind:"chat"},{repo:"Qwen2.5-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Qwen2.5-14B-Instruct",paramsB:14,kind:"chat"},{repo:"Qwen2.5-32B-Instruct",paramsB:32,kind:"chat"},{repo:"Qwen2.5-72B-Instruct",paramsB:72,kind:"chat"},{repo:"Qwen2.5-Coder-1.5B-Instruct",paramsB:1.5,kind:"code"},{repo:"Qwen2.5-Coder-3B-Instruct",paramsB:3,kind:"code"},{repo:"Qwen2.5-Coder-7B-Instruct",paramsB:7,kind:"code"},{repo:"Qwen2.5-Coder-14B-Instruct",paramsB:14,kind:"code"},{repo:"Qwen2.5-Coder-32B-Instruct",paramsB:32,kind:"code"},{repo:"Qwen3-0.6B",paramsB:.6,kind:"chat"},{repo:"Qwen3-1.7B",paramsB:1.7,kind:"chat"},{repo:"Qwen3-4B",paramsB:4,kind:"chat"},{repo:"Qwen3-8B",paramsB:8,kind:"chat"},{repo:"Qwen3-14B",paramsB:14,kind:"chat"},{repo:"Qwen3-32B",paramsB:32,kind:"chat"},{repo:"Llama-3.2-1B-Instruct",paramsB:1,kind:"chat"},{repo:"Llama-3.2-3B-Instruct",paramsB:3,kind:"chat"},{repo:"Meta-Llama-3.1-8B-Instruct",paramsB:8,kind:"chat"},{repo:"Meta-Llama-3.1-70B-Instruct",paramsB:70,kind:"chat"},{repo:"Llama-3.3-70B-Instruct",paramsB:70,kind:"chat"},{repo:"gemma-2-2b-it",paramsB:2,kind:"chat"},{repo:"gemma-2-9b-it",paramsB:9,kind:"chat"},{repo:"gemma-2-27b-it",paramsB:27,kind:"chat"},{repo:"gemma-3-1b-it",paramsB:1,kind:"chat"},{repo:"gemma-3-4b-it",paramsB:4,kind:"chat"},{repo:"gemma-3-12b-it",paramsB:12,kind:"chat"},{repo:"gemma-3-27b-it",paramsB:27,kind:"chat"},{repo:"Mistral-7B-Instruct-v0.3",paramsB:7,kind:"chat"},{repo:"Mistral-Nemo-Instruct-2407",paramsB:12,kind:"chat"},{repo:"Mistral-Small-Instruct-2409",paramsB:22,kind:"chat"},{repo:"Mistral-Small-24B-Instruct-2501",paramsB:24,kind:"chat"},{repo:"Codestral-22B-v0.1",paramsB:22,kind:"code"},{repo:"Phi-3.1-mini-4k-instruct",paramsB:3.8,kind:"chat"},{repo:"DeepSeek-R1-Distill-Qwen-1.5B",paramsB:1.5,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-7B",paramsB:7,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-14B",paramsB:14,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-32B",paramsB:32,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Llama-8B",paramsB:8,kind:"reasoning"},{repo:"DeepSeek-Coder-V2-Lite-Instruct",paramsB:16,kind:"code"},{repo:"Yi-1.5-9B-Chat",paramsB:9,kind:"chat"},{repo:"Yi-1.5-34B-Chat",paramsB:34,kind:"chat"},{repo:"granite-3.0-8b-instruct",paramsB:8,kind:"chat"},{repo:"granite-3.1-8b-instruct",paramsB:8,kind:"chat"},{repo:"SmolLM2-360M-Instruct",paramsB:.36,kind:"chat"},{repo:"SmolLM2-1.7B-Instruct",paramsB:1.7,kind:"chat"},{repo:"aya-expanse-8b",paramsB:8,kind:"chat"},{repo:"aya-expanse-32b",paramsB:32,kind:"chat"},{repo:"Falcon3-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Falcon3-10B-Instruct",paramsB:10,kind:"chat"},{repo:"EXAONE-3.5-2.4B-Instruct",paramsB:2.4,kind:"chat"},{repo:"EXAONE-3.5-7.8B-Instruct",paramsB:7.8,kind:"chat"},{repo:"Qwen3.5-0.8B",paramsB:.8,kind:"chat"},{repo:"Qwen3.5-2B",paramsB:2,kind:"chat"},{repo:"Qwen3.5-9B",paramsB:9,kind:"chat"},{repo:"Qwen3.5-27B",paramsB:27,kind:"chat"},{repo:"Qwen3.5-35B-A3B",paramsB:35,kind:"chat"},{repo:"Qwen3.6-27B",paramsB:27,kind:"chat"},{repo:"Qwen3.6-35B-A3B",paramsB:35,kind:"chat"},{repo:"Qwen3-30B-A3B",paramsB:30,kind:"chat"},{repo:"Qwen3-30B-A3B-Instruct-2507",paramsB:30,kind:"chat"},{repo:"Qwen3-Next-80B-A3B-Instruct",paramsB:80,kind:"chat"},{repo:"Qwen3-4B-Thinking-2507",paramsB:4,kind:"reasoning"},{repo:"QwQ-32B",paramsB:32,kind:"reasoning"},{repo:"Qwen2.5-7B-Instruct-1M",paramsB:7,kind:"chat"},{repo:"Qwen2.5-Coder-0.5B-Instruct",paramsB:.5,kind:"code"},{repo:"Qwen2.5-Coder-3B",paramsB:3,kind:"code"},{repo:"Qwen2.5-Coder-32B",paramsB:32,kind:"code"},{repo:"Qwen2.5-Math-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Qwen2-500M-Instruct",paramsB:.5,kind:"chat"},{repo:"Qwen1.5-32B-Chat",paramsB:32,kind:"chat"},{repo:"gemma-4-E2B-it",paramsB:2,kind:"chat"},{repo:"gemma-4-E4B-it",paramsB:4,kind:"chat"},{repo:"gemma-4-12B-it",paramsB:12,kind:"chat"},{repo:"gemma-4-26B-A4B-it",paramsB:26,kind:"chat"},{repo:"gemma-4-31B-it",paramsB:31,kind:"chat"},{repo:"gemma-3-270m-it",paramsB:.27,kind:"chat"},{repo:"gemma-1.1-2b-it",paramsB:2,kind:"chat"},{repo:"codegemma-2b",paramsB:2,kind:"code"},{repo:"codegemma-7b",paramsB:7,kind:"code"},{repo:"codegemma-7b-it",paramsB:7,kind:"code"},{repo:"codegemma-1.1-7b-it",paramsB:7,kind:"code"},{repo:"Ministral-3-3B-Instruct-2512",paramsB:3,kind:"chat"},{repo:"Ministral-3-8B-Instruct-2512",paramsB:8,kind:"chat"},{repo:"Ministral-3-14B-Instruct-2512",paramsB:14,kind:"chat"},{repo:"Ministral-3-3B-Reasoning-2512",paramsB:3,kind:"reasoning"},{repo:"Ministral-3-8B-Reasoning-2512",paramsB:8,kind:"reasoning"},{repo:"Ministral-3-14B-Reasoning-2512",paramsB:14,kind:"reasoning"},{repo:"Mistral-Small-3.1-24B-Instruct-2503",paramsB:24,kind:"chat"},{repo:"Mistral-Small-3.2-24B-Instruct-2506",paramsB:24,kind:"chat"},{repo:"Devstral-Small-2-24B-Instruct-2512",paramsB:24,kind:"code"},{repo:"mathstral-7B-v0.1",paramsB:7,kind:"chat"},{repo:"dolphin-2.8-mistral-7b-v02",paramsB:7,kind:"chat"},{repo:"WizardLM-2-7B",paramsB:7,kind:"chat"},{repo:"DeepSeek-R1-0528-Qwen3-8B",paramsB:8,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Llama-70B",paramsB:70,kind:"reasoning"},{repo:"deepseek-coder-1.3B-kexer",paramsB:1.3,kind:"code"},{repo:"deepseek-coder-6.7B-kexer",paramsB:6.7,kind:"code"},{repo:"granite-3.2-8b-instruct",paramsB:8,kind:"chat"},{repo:"granite-4.1-3b",paramsB:3,kind:"chat"},{repo:"granite-4.1-8b",paramsB:8,kind:"chat"},{repo:"granite-4.1-30b",paramsB:30,kind:"chat"},{repo:"Olmo-3-32B-Think",paramsB:32,kind:"reasoning"},{repo:"Seed-OSS-36B-Instruct",paramsB:36,kind:"chat"},{repo:"ERNIE-4.5-21B-A3B-PT",paramsB:21,kind:"chat"},{repo:"LFM2-24B-A2B",paramsB:24,kind:"chat"},{repo:"LFM2.5-1.2B-Instruct",paramsB:1.2,kind:"chat"},{repo:"LFM2.5-1.2B-Thinking",paramsB:1.2,kind:"reasoning"},{repo:"NVIDIA-Nemotron-3-Nano-4B",paramsB:4,kind:"chat"},{repo:"Hermes-4-70B",paramsB:70,kind:"chat"},{repo:"Llama-3.1-Tulu-3-8B",paramsB:8,kind:"chat"},{repo:"Meta-Llama-3-70B-Instruct",paramsB:70,kind:"chat"},{repo:"Llama3-ChatQA-1.5-70B",paramsB:70,kind:"chat"},{repo:"Llama-3-Groq-8B-Tool-Use",paramsB:8,kind:"chat"},{repo:"aya-23-8B",paramsB:8,kind:"chat"},{repo:"aya-23-35B",paramsB:35,kind:"chat"},{repo:"SmolLM2-135M-Instruct",paramsB:.135,kind:"chat"},{repo:"Yi-Coder-1.5B",paramsB:1.5,kind:"code"},{repo:"Yi-Coder-9B-Chat",paramsB:9,kind:"code"},{repo:"OpenCoder-1.5B-Instruct",paramsB:1.5,kind:"code"},{repo:"stable-code-instruct-3b",paramsB:3,kind:"code"},{repo:"internlm2-math-plus-7b",paramsB:7,kind:"chat"},{repo:"internlm2-math-plus-20b",paramsB:20,kind:"chat"}],V={Q3_K_L:.55,Q4_K_M:.67,Q6_K:.9,Q8_0:1.13},W=[{id:"nomic-embed-q8",name:"nomic-embed-text-v1.5 (Q8_0)",url:"https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF/resolve/main/nomic-embed-text-v1.5.Q8_0.gguf",params:"137M",quant:"Q8_0",sizeBytes:146e6,kind:"embed",paramsB:.137},...function(){let a=[];for(let d of U){var b,c;let e=d.vendor??"lmstudio-community";for(let f of(b=d.paramsB)<=9?["Q3_K_L","Q4_K_M","Q6_K","Q8_0"]:b<=34?["Q3_K_L","Q4_K_M","Q6_K"]:["Q3_K_L","Q4_K_M"]){let b=`${d.repo}-${f}.gguf`;a.push({id:`${d.repo}-${f}`.toLowerCase().replace(/[^a-z0-9]+/g,"-"),name:`${d.repo} (${f})`,url:`https://huggingface.co/${e}/${d.repo}-GGUF/resolve/main/${b}`,params:(c=d.paramsB)<1?`${Math.round(1e3*c)}M`:`${c}B`,quant:f,sizeBytes:Math.round(1e9*d.paramsB*V[f]),kind:d.kind,paramsB:d.paramsB})}}return a}()];var X=c(20177);let Y=process.env.OLLAMA_URL??"http://127.0.0.1:11434",Z=process.env.LLAMACPP_URL??"http://127.0.0.1:8082",$=process.env.CONSTELLA_EMBED_URL??"http://127.0.0.1:8083",_=null;async function aa(){if(_){let a=u().totalmem()/0x40000000,b=u().freemem()/0x40000000;return{..._,ram:`${a.toFixed(0)} GB \xb7 ${b.toFixed(1)} free`}}let a=u().cpus(),b=(a[0]?.model??"Unknown CPU").replace(/\s+/g," ").trim(),c=a.length,d=u().totalmem()/0x40000000,e=u().freemem()/0x40000000,f=`${d.toFixed(0)} GB \xb7 ${e.toFixed(1)} free`,g=u().platform(),h="—",i="—",j="CPU",k=[];try{let a=(0,w.execSync)("nvidia-smi --query-gpu=name,memory.total --format=csv,noheader,nounits",{timeout:4e3,stdio:["ignore","pipe","ignore"]}).toString().trim();if(a){let[b,c]=a.split("\n")[0].split(",");h=b.trim(),i=`${Math.round(Number(c)/1024)} GB`,j="CUDA",k.push("CUDA")}}catch{}if("CPU"===j&&"darwin"===g){j="Metal",k.push("Metal");let a="Apple Silicon";try{let b=(0,w.execFileSync)("sysctl",["-n","machdep.cpu.brand_string"],{timeout:3e3,stdio:["ignore","pipe","ignore"]}).toString().trim();b&&(a=b)}catch{/apple/i.test(b)&&(a=b)}h=/apple/i.test(a)?`${a} GPU`:"Apple GPU","arm64"===u().arch()&&(i=`${Math.max(1,Math.round(.7*d))} GB unified`)}k.push("arm64"===u().arch()?"NEON":"AVX2");let l="—";try{if("win32"===g){let a=((0,m.r$)()[0]||"C").toUpperCase(),b=/^[A-Z]$/.test(a)?a:"C",c=(0,w.execFileSync)("powershell",["-NoProfile","-Command",`(Get-PSDrive ${b}).Free`],{timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim(),d=Number(c.replace(/[^\d]/g,""));d>0&&(l=`${(d/0x40000000).toFixed(0)} GB`)}else{let a=(0,w.execFileSync)("df",["-h",(0,m.r$)()],{timeout:4e3,stdio:["ignore","pipe","ignore"]}).toString().trim().split("\n"),b=(a[a.length-1]??"").split(/\s+/);b[3]&&(l=b[3])}}catch{}return _={cpu:b,cores:c,ram:f,gpu:h,vram:i,diskFree:l,backend:j,accel:k,recommendedQuant:d>=32?"Q5_K_M":d>=16?"Q4_K_M":"Q4_0",maxParams:d>=64?"70B":d>=32?"34B":d>=16?"13B":"7B"}}async function ab(){try{return(0,w.execSync)("ollama --version",{timeout:3e3,stdio:"ignore"}),!0}catch{return!1}}async function ac(a){let b=await ab(),c=[];if("start"===a){if(!b)return{up:!1,installed:!1,log:["Ollama is not installed — get it at https://ollama.com, then retry."]};if((await af()).up)return{up:!0,installed:b,log:[`server already running on ${Y}`]};try{let a=(0,w.spawn)("ollama",["serve"],{detached:!0,stdio:"ignore"}),d="";a.on("error",a=>{d=String(a instanceof Error?a.message:a)}),a.unref(),c.push("$ ollama serve"),await new Promise(a=>setTimeout(a,2e3));let e=(await af()).up;return d&&c.push("spawn failed: "+d),c.push(e?`✓ ready \xb7 ${Y}`:"still stopped — the port may be busy; run `ollama serve` in a terminal to see the error."),(0,C.revalidatePath)("/models"),{up:e,installed:b,log:c}}catch(a){return{up:!1,installed:b,log:["failed to start: "+String(a instanceof Error?a.message:a)]}}}try{"win32"===u().platform()?(0,w.execSync)("taskkill /IM ollama.exe /F",{stdio:"ignore",timeout:4e3}):(0,w.execSync)("pkill -f 'ollama serve'",{stdio:"ignore",timeout:4e3}),c.push("server stopped")}catch{c.push("no running ollama process found")}return(0,C.revalidatePath)("/models"),{up:!1,installed:b,log:c}}async function ad(){try{let a=await fetch(`${Y}/api/ps`,{signal:AbortSignal.timeout(3e3)});if(!a.ok)return{running:[]};return{running:((await a.json()).models??[]).map(a=>({name:a.name,vram:a.size_vram??0}))}}catch{return{running:[]}}}async function ae(a){try{let b=await fetch(`${Y}/api/generate`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:a,prompt:"",keep_alive:"30m"}),signal:AbortSignal.timeout(12e4)});if(!b.ok)return{ok:!1,error:`Ollama ${b.status}`};return await b.json().catch(()=>({})),(0,C.revalidatePath)("/models"),{ok:!0}}catch(b){let a=String(b instanceof Error?b.message:b);return{ok:!1,error:/abort|fetch failed|ECONN/i.test(a)?"Ollama not running":a}}}async function af(){try{let a=await fetch(`${Y}/api/tags`,{signal:AbortSignal.timeout(3e3)});if(!a.ok)return{up:!1,models:[]};let b=await a.json();return{up:!0,models:(b.models??[]).map(a=>({name:a.name,size:a.size??0}))}}catch{return{up:!1,models:[]}}}async function ag(a){let b=await af(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.workspaceId,a),(0,d.eq)(f.provider.catalogId,"ollama"))),g={status:b.up?"connected":"needs_sync",modelCount:b.models.length,lastSync:b.up?new Date:null};c?await e.db.update(f.provider).set(g).where((0,d.eq)(f.provider.id,c.id)):await e.db.insert(f.provider).values({id:(0,l.randomUUID)(),workspaceId:a,catalogId:"ollama",adapter:"local_ollama",kind:"local",auth:"local",syncStatus:"implemented",...g})}async function ah(a){let{workspace:b}=await (0,D.nP)();if(!a.trim())return{ok:!1,error:"no model name"};try{let c=await fetch(`${Y}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:a.trim(),stream:!1}),signal:AbortSignal.timeout(18e5)});if(!c.ok){let a=await c.text().catch(()=>"");return{ok:!1,error:`Ollama ${c.status}${a?": "+a.slice(0,120):""}`}}let d=await c.json().catch(()=>({}));return await ag(b.id),(0,C.revalidatePath)("/models"),{ok:"success"===d.status||null==d.error,error:d.error}}catch(b){let a=String(b instanceof Error?b.message:b);return{ok:!1,error:/abort|fetch failed|ECONN/i.test(a)?"Ollama not running — start it, then retry.":a}}}async function ai(a){let{workspace:b}=await (0,D.nP)();try{await fetch(`${Y}/api/delete`,{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({name:a})})}catch{}return await ag(b.id),(0,C.revalidatePath)("/models"),{ok:!0}}async function aj(a){let{workspace:b}=await (0,D.nP)(),c=W.find(b=>b.id===a);if(!c)return{ok:!1,error:"unknown model"};let g=(0,z.join)((0,m.r$)(),"models");(0,v.mkdirSync)(g,{recursive:!0});let h=function(a){try{if("win32"===u().platform()){let b=(a[0]||"C").toUpperCase(),c=/^[A-Z]$/.test(b)?b:"C",d=(0,w.execFileSync)("powershell",["-NoProfile","-Command",`(Get-PSDrive ${c}).Free`],{timeout:6e3,stdio:["ignore","pipe","ignore"]}).toString().trim();return Number(d.replace(/[^\d]/g,""))||0}let b=(0,w.execFileSync)("df",["-k",a],{timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim().split("\n"),c=(b[b.length-1]??"").split(/\s+/),d=Number(c[3]);return d?1024*d:0}catch{return 0}}(g);if(h&&c.sizeBytes&&h<1.1*c.sizeBytes)return{ok:!1,error:`not enough free space — need ~${(c.sizeBytes/1e9).toFixed(1)} GB, ${(h/1e9).toFixed(1)} GB free`};let i=c.url.split("/").pop()??`${c.id}.gguf`,j=(0,z.join)(g,i);T.set(a,{received:0,total:0,done:!1});try{if(!(0,v.existsSync)(j)){let b=await fetch(c.url,{signal:AbortSignal.timeout(36e5)});if(!b.ok||!b.body)return T.set(a,{received:0,total:0,done:!0,error:`download failed (${b.status})`}),{ok:!1,error:`download failed (${b.status})`};let d=Number(b.headers.get("content-length"))||c.sizeBytes||0,e=0;T.set(a,{received:0,total:d,done:!1});let f=new A.PassThrough;f.on("data",b=>{e+=b.length;let c=T.get(a);c&&(c.received=e)}),await (0,B.pipeline)(A.Readable.fromWeb(b.body),f,(0,v.createWriteStream)(j));let g=S(j,d);if(!g.ok){try{(0,v.rmSync)(j)}catch{}return T.set(a,{received:e,total:d,done:!0,error:g.message}),{ok:!1,error:g.message}}}if((T.set(a,{received:1,total:1,done:!0}),c.sha256)&&await new Promise((a,b)=>{let c=(0,l.createHash)("sha256");(0,v.createReadStream)(j).on("data",a=>c.update(a)).on("end",()=>a(c.digest("hex"))).on("error",b)})!==c.sha256)return{ok:!1,error:"SHA-256 mismatch — file corrupt"};let g=(0,v.statSync)(j).size,[h]=await e.db.select().from(f.localModel).where((0,d.eq)(f.localModel.file,j));return h||await e.db.insert(f.localModel).values({id:(0,l.randomUUID)(),workspaceId:b.id,name:c.name,file:j,quant:c.quant,params:c.params,sizeBytes:g,sha256:c.sha256??"",bind:"127.0.0.1:8082"}),/embed|nomic|bge|mxbai|gte/i.test(c.name)&&az().catch(()=>{}),(0,C.revalidatePath)("/models"),{ok:!0,path:j}}catch(d){let b=String(d instanceof Error?d.message:d),c=T.get(a);return T.set(a,{received:c?.received??0,total:c?.total??0,done:!0,error:b}),{ok:!1,error:b}}}async function ak(a){return T.get(a)??null}async function al(a){await (0,D.nP)();let[b]=await e.db.select().from(f.localModel).where((0,d.eq)(f.localModel.id,a));if(!b)return{ok:!1,error:"model not found"};try{b.file&&(0,v.existsSync)(b.file)&&(0,v.rmSync)(b.file,{force:!0})}catch{}return await e.db.delete(f.localModel).where((0,d.eq)(f.localModel.file,b.file)),(0,C.revalidatePath)("/models"),{ok:!0}}function am(){return(0,z.join)((0,m.r$)(),"bin","llama")}function an(){try{let a=(0,z.join)(am(),"INSTALLED");if(!(0,v.existsSync)(a))return null;let b=(0,v.readFileSync)(a,"utf8").trim();return b&&(0,v.existsSync)(b)?b:null}catch{return null}}async function ao(a,b,c,d){let e=/\.(tar\.gz|tgz)$/i.test(b),f=(0,z.join)(c,b.replace(/[^\w.\-]+/g,"_"));(0,v.mkdirSync)(c,{recursive:!0});let g=await fetch(a,{signal:AbortSignal.timeout(18e5)});if(!g.ok||!g.body)return d&&T.set(d,{received:0,total:0,done:!0,error:`download failed (${g.status})`}),`download failed (${g.status})`;let h=Number(g.headers.get("content-length"))||0,i=A.Readable.fromWeb(g.body);if(d){let a=0;T.set(d,{received:0,total:h,done:!1});let b=new A.PassThrough;b.on("data",b=>{a+=b.length;let c=T.get(d);c&&(c.received=a)}),await (0,B.pipeline)(i,b,(0,v.createWriteStream)(f))}else await (0,B.pipeline)(i,(0,v.createWriteStream)(f));let j=S(f,h);if(!j.ok){try{(0,v.rmSync)(f)}catch{}return j.message}e?(0,w.execFileSync)("tar",["-xzf",f,"-C",c],{stdio:"ignore",timeout:12e4}):new(y())(f).extractAllTo(c,!0);try{(0,v.rmSync)(f)}catch{}return null}async function ap(){try{let a=await fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest",{headers:{"User-Agent":"constella",Accept:"application/vnd.github+json"},signal:AbortSignal.timeout(15e3)});if(!a.ok)return null;return(await a.json()).assets??[]}catch{return null}}let aq=!1;async function ar(a=!1){let b;if("win32"!==u().platform())return{ok:!0,fetched:!1};let c=am();try{b=(0,v.readdirSync)(c)}catch{return{ok:!1,fetched:!1,reason:"no llama dir"}}let d=b.some(a=>/^ggml-cuda\.dll$/i.test(a)),e=b.some(a=>/^cudart64_\d+\.dll$/i.test(a));if(!d||e)return{ok:e||!d,fetched:!1};if(aq&&!a)return{ok:!1,fetched:!1,reason:"already attempted this run"};aq=!0;let f="12";try{let a=(0,v.readFileSync)((0,z.join)(c,"ggml-cuda.dll")).toString("latin1").match(/cudart64_(\d+)\.dll/i);a&&(f=a[1])}catch{}let g=await ap();if(!g)return{ok:!1,fetched:!1,reason:"GitHub unreachable"};let h=g.filter(a=>/cudart/i.test(a.name)&&/x64|amd64/i.test(a.name)),i=h.find(a=>RegExp(`cuda-${f}\\.`,"i").test(a.name))??h[0];if(!i)return{ok:!1,fetched:!1,reason:"no cudart asset in the latest release"};let j=await ao(i.browser_download_url,i.name,c).catch(a=>String(a instanceof Error?a.message:a));if(j)return{ok:!1,fetched:!1,reason:j};let k=!1;try{k=(0,v.readdirSync)(c).some(a=>/^cudart64_\d+\.dll$/i.test(a))}catch{}return{ok:k,fetched:k}}async function as(){let a;await (0,D.nP)();let b=[];if(an()||await at()){let a=await ar(!0).catch(()=>null);return{ok:!0,installed:!0,log:["llama-server already installed.",...a?.fetched?["✓ fetched the CUDA runtime DLLs — GPU enabled."]:a&&!a.ok?[`⚠ CUDA runtime still missing (${a.reason??"unknown"}).`]:[]]}}let c=await aa(),d=/cuda|nvidia/i.test(c.backend)||(c.accel??[]).some(a=>/cuda|nvidia/i.test(a));b.push(`platform ${u().platform()}/${u().arch()} \xb7 backend ${c.backend} → ${d?"CUDA":"CPU"} build`);try{let c=await fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest",{headers:{"User-Agent":"constella",Accept:"application/vnd.github+json"},signal:AbortSignal.timeout(15e3)});if(!c.ok)return{ok:!1,installed:!1,log:b,error:403===c.status?"GitHub API rate-limited — try again later or install manually from the releases page.":`GitHub releases API ${c.status}`};a=(await c.json()).assets??[]}catch(a){return{ok:!1,installed:!1,log:b,error:"couldn't reach GitHub: "+String(a instanceof Error?a.message:a)}}let e=function(a,b){let c=u().platform(),d="win32"===c?/win/i:"darwin"===c?/macos/i:/(ubuntu|linux)/i,e="arm64"===u().arch(),f=a.filter(a=>/\.(zip|tar\.gz|tgz)$/i.test(a.name)&&d.test(a.name));e||(f=f.filter(a=>!/arm64|aarch64/i.test(a.name)));let g=/cuda|hip|vulkan|sycl|kompute|musa|cann|adreno/i,h=a=>{if(!a.length)return null;let b=e?a.filter(a=>/arm64|aarch64/i.test(a.name)):a.filter(a=>/x64|amd64/i.test(a.name)),c=(b.length?b:a).sort((a,b)=>a.name.length-b.name.length)[0];return c?{name:c.name,url:c.browser_download_url}:null};if(b){let a=f.filter(a=>/cuda/i.test(a.name));if(a.length)return h(a)}let i=f.filter(a=>!g.test(a.name));return h(i.length?i:f)}(a,!!d);if(!e)return{ok:!1,installed:!1,log:b,error:"no matching prebuilt for this platform — install manually from the releases page."};b.push(`downloading ${e.name}…`);let f=am();(0,v.mkdirSync)(f,{recursive:!0}),T.set("llama-server",{received:0,total:0,done:!1});try{let a=await ao(e.url,e.name,f,"llama-server");if(a)return T.set("llama-server",{received:0,total:0,done:!0,error:a}),{ok:!1,installed:!1,log:b,error:a};if(d){let a=await ar(!0);b.push(a.ok?a.fetched?"✓ CUDA runtime DLLs installed — GPU enabled.":"CUDA runtime already present.":`⚠ CUDA runtime not installed (${a.reason??"unknown"}) — runs on CPU; retries on next Start/Install.`)}}catch(a){return{ok:!1,installed:!1,log:b,error:"download/extract failed: "+String(a instanceof Error?a.message:a)}}let g=function a(b,c,d){let e;if(d<0)return null;try{e=(0,v.readdirSync)(b,{withFileTypes:!0})}catch{return null}for(let a of e)if(a.isFile()&&a.name===c)return(0,z.join)(b,a.name);for(let f of e)if(f.isDirectory()){let e=a((0,z.join)(b,f.name),c,d-1);if(e)return e}return null}(f,"win32"===u().platform()?"llama-server.exe":"llama-server",5);if(!g)return{ok:!1,installed:!1,log:b,error:"downloaded, but llama-server wasn't found in the archive."};if("win32"!==u().platform())try{(0,v.chmodSync)(g,493)}catch{}return(0,v.writeFileSync)((0,z.join)(f,"INSTALLED"),g,"utf8"),T.set("llama-server",{received:1,total:1,done:!0}),b.push(`✓ installed → ${g}`),await aE().catch(()=>{}),(0,C.revalidatePath)("/models"),{ok:!0,installed:!0,path:g,log:b}}async function at(){if(an())return!0;try{return(0,w.execSync)("llama-server --version",{timeout:3e3,stdio:"ignore"}),!0}catch{return!1}}async function au(){try{let a=await fetch(`${Z}/v1/models`,{signal:AbortSignal.timeout(2500)});if(!a.ok)return{up:!1,model:null};let b=await a.json(),c=b.data?.[0]?.id;return{up:!0,model:c?c.split(/[\\/]/).pop()??c:null}}catch{return{up:!1,model:null}}}async function av(a){try{var b;let c,d=await aa();if(!/cuda|metal/i.test(d.backend))return[];let e=(b=d.vram,(c=/([\d.]+)\s*GB/i.exec(b||""))?1e9*parseFloat(c[1]):0);if(a&&e&&1.15*a>e)return[];return["-ngl","99"]}catch{return[]}}function aw(){try{let a=e.db.select({file:f.localModel.file,name:f.localModel.name}).from(f.localModel).all().find(a=>/embed|nomic|bge|mxbai|gte/i.test(a.name)&&a.file&&(0,v.existsSync)(a.file));return a?{file:a.file,name:a.name}:null}catch{return null}}function ax(){try{let a=e.db.select({file:f.localModel.file,name:f.localModel.name,sizeBytes:f.localModel.sizeBytes}).from(f.localModel).all().find(a=>!/embed|nomic|bge|mxbai|gte/i.test(a.name)&&a.file&&(0,v.existsSync)(a.file));return a?{file:a.file,name:a.name,sizeBytes:a.sizeBytes}:null}catch{return null}}async function ay(){try{return(await fetch(`${$}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}async function az(){if(await ay())return{up:!0};let a=an();if(!a)return{up:!1,reason:"llama-server not installed"};let b=aw();if(!b)return{up:!1,reason:"no embedding model installed (download nomic-embed-text)"};try{await ar().catch(()=>{});let c=await av(),d=(0,w.spawn)(a,["-m",b.file,"--embeddings","--host","127.0.0.1","--port","8083","-c","2048","--pooling","mean",...c],{detached:!0,stdio:"ignore"});d.on("error",()=>{}),d.unref()}catch(a){return{up:!1,reason:"spawn failed: "+String(a instanceof Error?a.message:a)}}for(let a=0;a<24;a++)if(await new Promise(a=>setTimeout(a,500)),await ay())return{up:!0,model:b.name};return{up:!1,reason:"embedding server didn't come up in time"}}async function aA(){if((await au()).up)return{up:!0};let a=an();if(!a)return{up:!1,reason:"llama-server not installed"};let b=ax();if(!b)return{up:!1,reason:"no chat GGUF installed"};try{await ar().catch(()=>{});let c=await av(b.sizeBytes),d=(0,w.spawn)(a,["-m",b.file,"--host","127.0.0.1","--port","8082","-c","4096",...c],{detached:!0,stdio:"ignore"});d.on("error",()=>{}),d.unref()}catch(a){return{up:!1,reason:"spawn failed: "+String(a instanceof Error?a.message:a)}}for(let a=0;a<24;a++)if(await new Promise(a=>setTimeout(a,500)),(await au()).up)return{up:!0,model:b.name};return{up:!1,reason:"llama server didn't come up in time"}}async function aB(){let a=aw();return{up:await ay(),model:a?.name??null,installed:!!a}}async function aC(){let a=await az();return(0,C.revalidatePath)("/models"),a}async function aD(){let{org:a}=await (0,D.nP)();await az().catch(()=>{});let b=await N(a.id);return(0,C.revalidatePath)("/models"),b}async function aE(){let{workspace:a}=await (0,D.nP)(),b=await au(),c=new Set((await e.db.select({file:f.localModel.file}).from(f.localModel)).map(a=>a.file)).size,g={status:b.up?"connected":"needs_sync",modelCount:c,lastSync:b.up?new Date:null},[h]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.workspaceId,a.id),(0,d.eq)(f.provider.catalogId,"llamacpp")));return h?await e.db.update(f.provider).set(g).where((0,d.eq)(f.provider.id,h.id)):await e.db.insert(f.provider).values({id:(0,l.randomUUID)(),workspaceId:a.id,catalogId:"llamacpp",adapter:"local_llamacpp",kind:"local",auth:"local",syncStatus:"implemented",...g}),(0,C.revalidatePath)("/models"),{ok:!0}}async function aF(a){let b;await (0,D.nP)();let c=await at(),g=[];if(!c)return{up:!1,installed:!1,log:["llama-server not found — install llama.cpp from https://github.com/ggml-org/llama.cpp/releases (or `brew install llama.cpp`), then retry."]};if((await au()).up)return{up:!0,installed:c,log:[`server already running on ${Z}`]};let h=0;if(a){let g,[i]=await e.db.select().from(f.localModel).where((0,d.eq)(f.localModel.id,a));if(i&&(g=i.name,/embed|nomic|bge|mxbai|gte/i.test(g))){let a=await az();return{up:a.up,installed:c,log:[`${i.name} is an EMBEDDING model — started the RAG embedding server on :8083 (it can't power chat on :8082).`,a.up?`✓ embeddings ready \xb7 ${$}`:`embeddings: ${a.reason??"failed to start"}`]}}b=i?.file,h=i?.sizeBytes??0}if(!b){let a=ax();b=a?.file,h=a?.sizeBytes??0}if(!b||!(0,v.existsSync)(b)){let a=aw();if(a){let b=await az();return{up:!1,installed:c,log:[`Your only local model (${a.name}) is an EMBEDDING model — it powers RAG on the embeddings server (${$}), not the chat server.`,b.up?"✓ embeddings server is running.":`embeddings: ${b.reason??"not started"}`,"Download a chat/instruct GGUF (e.g. Qwen, Llama) below to run the chat server on :8082."]}}return{up:!1,installed:c,log:["no GGUF model on disk — download one below first."]}}try{let a=an()??"llama-server";await ar().catch(()=>{});let d=await av(h),e=(0,w.spawn)(a,["-m",b,"--host","127.0.0.1","--port","8082","-c","4096",...d],{detached:!0,stdio:"ignore"}),f="";e.on("error",a=>{f=String(a instanceof Error?a.message:a)}),e.unref(),g.push(`$ llama-server -m ${b.split(/[\\/]/).pop()} --port 8082${d.length?" -ngl 99 (GPU)":" (CPU)"}`);let i=!1;for(let a=0;a<12&&!i;a++)await new Promise(a=>setTimeout(a,1e3)),i=(await au()).up;return f&&g.push("spawn failed: "+f),g.push(i?`✓ ready \xb7 ${Z}`:"still starting — large models take longer; run llama-server in a terminal to see progress."),await aE(),(0,C.revalidatePath)("/models"),{up:i,installed:c,log:g}}catch(a){return{up:!1,installed:c,log:["failed to start: "+String(a instanceof Error?a.message:a)]}}}async function aG(){let a=await at(),b=[];try{if("win32"===u().platform()){let a=(0,w.execSync)('powershell -NoProfile -Command "Get-NetTCPConnection -LocalPort 8082 -State Listen -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess"',{timeout:5e3}).toString().split(/\r?\n/).map(a=>a.trim()).filter(Boolean);if(!a.length)throw Error("not running");for(let b of a)(0,w.execSync)(`taskkill /PID ${b} /F`,{stdio:"ignore",timeout:4e3})}else(0,w.execSync)("pkill -f -- 'llama-server.*--port 8082'",{stdio:"ignore",timeout:4e3});b.push("server stopped")}catch{b.push("no running chat llama-server process found")}return await aE(),(0,C.revalidatePath)("/models"),{up:!1,installed:a,log:b}}(0,X.D)([aa,ab,ac,ad,ae,af,ah,ai,aj,ak,al,as,at,au,ay,az,aA,aB,aC,aD,aE,aF,aG]),(0,s.A)(aa,"0085c3c15f848da7beac072fd797bc11048a499d8f",null),(0,s.A)(ab,"00f03d2d81bb26d468c7e4637a0f32c70fda9c6565",null),(0,s.A)(ac,"40e58ec47b3c8acdd5eeb552095b8d34ce834fa009",null),(0,s.A)(ad,"006b9d9e61368e96e287131f2a79d8141f80607bc5",null),(0,s.A)(ae,"404fa4e7b74f3432c13521faa40badac327c784ea2",null),(0,s.A)(af,"0073cd1b77e35abc407ab8c0bfd7158ee296172e28",null),(0,s.A)(ah,"40a51f05a62e5ad01e4585ad064bcc9493ef1588fc",null),(0,s.A)(ai,"40caf95c1217c0ac6c4afc1ff748b52c6e39b5c8cd",null),(0,s.A)(aj,"4070a1e8f5dfdb123c1dd3ba53e819cd324592eeef",null),(0,s.A)(ak,"40c08d36ba60f30915b37b6dd0aed4824b73741fe7",null),(0,s.A)(al,"4054d8c9d713d027d9beb3076074624ea681f897ba",null),(0,s.A)(as,"0024bf7b34a52fe14a9a978ce3e57cfede2898f61a",null),(0,s.A)(at,"0015b06bbd98ec7937ca597bbae4092e26b1991a66",null),(0,s.A)(au,"004d7785b6e7ed54fec1c45370d77ac4c2f07804e2",null),(0,s.A)(ay,"0011c2404adc6b3048be5ca5eb204351e28665fedd",null),(0,s.A)(az,"003c134392bb340969faa7fda2658f2c4517730d98",null),(0,s.A)(aA,"004c4e8970872e80bf3a634ff51fb13079a791cc11",null),(0,s.A)(aB,"0078876825bee310a72cf001e5fe01a3304ba0a060",null),(0,s.A)(aC,"00554e833ae48f796f0eac7ddef3970ff24f235ad7",null),(0,s.A)(aD,"0018c198f4a47e6adc1238b5daa532fab3632f90ad",null),(0,s.A)(aE,"0026a43f3e1b62dcf12b65a152b2b7d0b33855e685",null),(0,s.A)(aF,"40c0f496f5293823123e86e702c43f6dbd13fa0241",null),(0,s.A)(aG,"00a82d9997685786a827f84d1adec8c0464ab77242",null);var aH=c(48810);let aI={anthropic:"anthropic",openai:"openai",google_gemini:"google",xai_grok:"xai",deepseek:"deepseek",cohere:"cohere",groq:"groq",nvidia_nim:"nvidia",together:"togetherai",fireworks:"fireworks-ai",cerebras:"cerebras",perplexity:"perplexity",openrouter:"openrouter",mistral:"mistral",moonshot:"moonshotai",dashscope:"alibaba",zhipu:"zhipuai",azure_openai:"azure",aws_bedrock:"amazon-bedrock",vertex_ai:"google-vertex",claude_code:"anthropic",gemini_cli:"google",codex_cli:"openai"};function aJ(a){return aI[a]?aI[a]:a.replace(/_(grok|gemini|nim|cli|openai|api|server|rt)$/g,"").replace(/_/g,"-")}let aK={anthropic:["sonnet-4","sonnet","opus-4","opus"],openai:["gpt-5.2","gpt-5.1","gpt-5","gpt-4.1","o4"],google:["gemini-3-pro","gemini-3","gemini-2.5-pro","pro"],xai:["grok-4","grok-3","grok"],groq:["llama-4","llama-3.3","llama-3.1"],deepseek:["deepseek-chat","deepseek-v3","deepseek-reasoner"],mistral:["mistral-large","mistral-medium"],openrouter:["claude-sonnet","gpt-5","gemini"]},aL=(a,b,c,d,e,f,g,h)=>({id:a,name:b,context:c,outputLimit:d,inputCost:e,outputCost:f,caps:{reasoning:!!g.reasoning,tools:!!g.tools,vision:!!g.vision},released:h}),aM={anthropic:[aL("claude-opus-4-8","Claude Opus 4.8",1e6,64e3,5,25,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),aL("claude-opus-4-7","Claude Opus 4.7",1e6,64e3,5,25,{reasoning:!0,tools:!0,vision:!0},"2025-12-01"),aL("claude-sonnet-4-6","Claude Sonnet 4.6",1e6,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2026-01-15"),aL("claude-haiku-4-5","Claude Haiku 4.5",2e5,32e3,1,5,{tools:!0,vision:!0},"2025-10-01")],openai:[aL("gpt-5.2","GPT-5.2",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2026-03-01"),aL("gpt-5.1","GPT-5.1",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-12-01"),aL("gpt-5","GPT-5",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-08-01"),aL("o4-mini","o4-mini",2e5,1e5,1.1,4.4,{reasoning:!0,tools:!0},"2025-04-01")],google:[aL("gemini-3-pro","Gemini 3 Pro",2e6,64e3,2,12,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),aL("gemini-3-flash","Gemini 3 Flash",1e6,64e3,.3,2.5,{tools:!0,vision:!0},"2026-02-01"),aL("gemini-2.5-pro","Gemini 2.5 Pro",2e6,64e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-06-01")],xai:[aL("grok-4.3","Grok 4.3",256e3,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),aL("grok-4","Grok 4",256e3,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2025-09-01"),aL("grok-3","Grok 3",131072,32e3,3,15,{tools:!0,vision:!0},"2025-02-01")],deepseek:[aL("deepseek-chat","DeepSeek Chat",128e3,8e3,.27,1.1,{tools:!0},"2025-12-01"),aL("deepseek-reasoner","DeepSeek Reasoner",128e3,64e3,.55,2.19,{reasoning:!0,tools:!0},"2025-12-01")],groq:[aL("llama-4-scout","Llama 4 Scout",131072,8e3,.11,.34,{tools:!0,vision:!0},"2025-04-01"),aL("llama-3.3-70b","Llama 3.3 70B",131072,32e3,.59,.79,{tools:!0},"2024-12-01")]},aN=null;function aO(){return(0,z.join)((0,m.r$)(),"cache","models-dev.json")}async function aP(){try{let a=await fetch("https://models.dev/api.json",{signal:AbortSignal.timeout(1e4),headers:{accept:"application/json"}});if(!a.ok)return null;let b=await a.json();if(!b||"object"!=typeof b)return null;let c={};for(let[a,d]of Object.entries(b)){let b=d?.models,e=function(a){if(!a||"object"!=typeof a)return[];let b=[];for(let[c,d]of Object.entries(a)){let a=d??{},e=String(a.id??c),f=e.includes("/")?e.split("/").pop():e;if(!f)continue;let g=a.modalities??{},h=Array.isArray(g.input)?g.input:[],i=a.limit??{},j=a.cost??{},k={reasoning:!0===a.reasoning,tools:!0===a.tool_call,vision:!0===a.attachment||h.includes("image")};b.push({id:f,name:String(a.name??f),context:Number(i.context??0)||0,outputLimit:Number(i.output??0)||0,inputCost:Number(j.input??0)||0,outputCost:Number(j.output??0)||0,caps:k,released:"string"==typeof a.release_date?a.release_date:""})}return b}(b);e.length&&(c[a]=e)}return Object.keys(c).length?c:null}catch{return null}}async function aQ(){if(aN&&Date.now()-aN.at<864e5)return aN.data;let a=function(){try{let a=aO();if(!(0,v.existsSync)(a))return null;let b=JSON.parse((0,v.readFileSync)(a,"utf8"));if(!b?.data||"object"!=typeof b.data)return null;return{at:Number(b.at??(0,v.statSync)(a).mtimeMs),data:b.data}}catch{return null}}();if(a&&Date.now()-a.at<864e5)return aN=a,a.data;let b=await aP();if(b){aN={at:Date.now(),data:b};try{(0,v.mkdirSync)((0,z.join)((0,m.r$)(),"cache"),{recursive:!0}),(0,v.writeFileSync)(aO(),JSON.stringify({at:Date.now(),data:b}),"utf8")}catch{}return b}return a?(aN=a,a.data):{}}async function aR(){return Object.keys(await aQ()).length}async function aS(a){let b=aJ(a),c=await aQ();return c[b]?.length?c[b]:aM[b]??[]}async function aT(a,b,c=9e3){try{let d=await fetch(a,{headers:b,signal:AbortSignal.timeout(c)});if(!d.ok)return null;return await d.json()}catch{return null}}async function aU(a){let{catalogId:b,adapter:c,baseUrl:d,apiKey:e}=a;if(c.startsWith("cli_"))return"cli_opencode"===c?(await (0,aH.ZB)("opencode")).map(a=>({id:a})):"cli_aider"===c?(await (0,aH.ZB)("aider")).map(a=>({id:a})):null;if(/ollama/i.test(b)||c.includes("ollama")){let a=(d||"http://127.0.0.1:11434").replace(/\/$/,"").replace(/\/v1$/,""),b=await aT(`${a}/api/tags`,{});return b?(b.models??[]).map(a=>({id:String(a.name??"")})).filter(a=>a.id):[]}if(!d)return null;let f=d.replace(/\/$/,""),g="http_anthropic"===c||"anthropic"===b,h=g?"https://api.anthropic.com/v1/models":f.endsWith("/models")?f:f+(f.includes("/v1")?"/models":"/v1/models"),i=g?e?{"x-api-key":e,"anthropic-version":"2023-06-01"}:{}:e?{authorization:`Bearer ${e}`}:{},j=await aT(h,i);return j?(Array.isArray(j.data)?j.data:Array.isArray(j.models)?j.models:[]).map(a=>{let b=String(a.id??a.name??"");if(!b)return null;let c={id:b};"string"==typeof a.display_name?c.name=a.display_name:"string"==typeof a.name&&(c.name=a.name),"number"==typeof a.context_length&&(c.context=a.context_length);let d=a.pricing;if(d){let a=Number(d.prompt),b=Number(d.completion);Number.isFinite(a)&&a>0&&(c.inputCost=1e6*a),Number.isFinite(b)&&b>0&&(c.outputCost=1e6*b)}return c}).filter(a=>!!a).slice(0,200):[]}async function aV(){let a=await aQ(),b=new Map;for(let c of Object.values(a))for(let a of c){let c=a.id.toLowerCase();b.has(c)||b.set(c,a)}return b}async function aW(a,b){let c=await aS(a);if(!b||0===b.length)return c;let d=new Map;for(let a of c)d.set(a.id.toLowerCase(),a);let e=await aV(),f=a=>{let b=a.toLowerCase(),c=a.includes("/")?a.split("/").pop().toLowerCase():b;return d.get(b)??d.get(c)??e.get(b)??e.get(c)},g=[];for(let a of b){let b=f(a.id);g.push({id:a.id,name:a.name||b?.name||a.id,context:a.context??b?.context??0,outputLimit:b?.outputLimit??0,inputCost:a.inputCost??b?.inputCost??0,outputCost:a.outputCost??b?.outputCost??0,caps:b?.caps??{reasoning:!1,tools:!1,vision:!1},released:b?.released??""})}return g}var aX=c(41665);let aY=Object.fromEntries([{id:"anthropic",displayName:"Anthropic",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_anthropic",baseUrl:"https://api.anthropic.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Claude family. Model list mapped from provider capabilities."},{id:"openai",displayName:"OpenAI",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_openai",baseUrl:"https://api.openai.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"GPT-4o/o-series + DALL\xb7E + Whisper."},{id:"google_gemini",displayName:"Google AI / Gemini",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_google",baseUrl:"https://generativelanguage.googleapis.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Gemini 1.5/2.x via AI Studio API key."},{id:"xai_grok",displayName:"xAI / Grok",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_xai",baseUrl:"https://api.x.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"OpenAI-compatible REST. Grok-2/3."},{id:"deepseek",displayName:"DeepSeek",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_deepseek",baseUrl:"https://api.deepseek.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"deepseek-chat / deepseek-reasoner."},{id:"cohere",displayName:"Cohere",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_cohere",baseUrl:"https://api.cohere.com/v2",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Command R/R+ and strong rerank/embeddings."},{id:"ai21",displayName:"AI21",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_ai21",baseUrl:"https://api.ai21.com/studio/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"perplexity",displayName:"Perplexity",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_perplexity",baseUrl:"https://api.perplexity.ai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"groq",displayName:"Groq",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_groq",baseUrl:"https://api.groq.com/openai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Ultra-low-latency LPU inference, OpenAI-compatible."},{id:"nvidia_nim",displayName:"NVIDIA / NIM",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_nvidia",baseUrl:"https://integrate.api.nvidia.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"NIM microservices, OpenAI-compatible."},{id:"together",displayName:"Together AI",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_together",baseUrl:"https://api.together.xyz/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available"},{id:"fireworks",displayName:"Fireworks AI",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_fireworks",baseUrl:"https://api.fireworks.ai/inference/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available"},{id:"cerebras",displayName:"Cerebras",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_cerebras",baseUrl:"https://api.cerebras.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"available",notes:"Wafer-scale fast inference."},{id:"huggingface",displayName:"Hugging Face",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_hf",baseUrl:"https://api-inference.huggingface.co",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"replicate",displayName:"Replicate",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_replicate",baseUrl:"https://api.replicate.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"anyscale",displayName:"Anyscale",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_anyscale",baseUrl:"https://api.endpoints.anyscale.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Endpoints product changing — adapter pending."},{id:"databricks",displayName:"Databricks",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_databricks",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"requires_setup"},{id:"stability",displayName:"Stability AI",category:"image",connectionTypes:["api_key"],defaultAdapter:"http_stability",baseUrl:"https://api.stability.ai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"elevenlabs",displayName:"ElevenLabs",category:"audio",connectionTypes:["api_key"],defaultAdapter:"http_elevenlabs",baseUrl:"https://api.elevenlabs.io/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"available",notes:"TTS / voice."},{id:"voyage",displayName:"Voyage AI",category:"embedding",connectionTypes:["api_key"],defaultAdapter:"http_voyage",baseUrl:"https://api.voyageai.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"jina",displayName:"Jina AI",category:"embedding",connectionTypes:["api_key"],defaultAdapter:"http_jina",baseUrl:"https://api.jina.ai/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"runpod",displayName:"RunPod",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_runpod",baseUrl:"https://api.runpod.ai/v2",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"lambda",displayName:"Lambda Labs",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_lambda",baseUrl:"https://api.lambdalabs.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"modal",displayName:"Modal",category:"cloud_api",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"http_modal",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"baseten",displayName:"Baseten",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_baseten",baseUrl:"https://inference.baseten.co/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"openrouter",displayName:"OpenRouter",category:"router",connectionTypes:["api_key","oauth"],defaultAdapter:"http_openrouter",baseUrl:"https://openrouter.ai/api/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Aggregates 300+ models across providers — full live list."},{id:"omnirouter",displayName:"OmniRouter",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_omnirouter",baseUrl:"https://api.omnirouter.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental",notes:"OpenAI-compatible multi-provider router."},{id:"litellm",displayName:"LiteLLM",category:"openai_compatible",connectionTypes:["api_key","openai_compatible","custom_endpoint"],defaultAdapter:"http_litellm",baseUrl:"http://localhost:4000",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Self-hosted proxy; unifies 100+ providers."},{id:"portkey",displayName:"Portkey",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_portkey",baseUrl:"https://api.portkey.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Gateway with virtual keys."},{id:"helicone",displayName:"Helicone",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_helicone",baseUrl:"https://oai.helicone.ai/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental",notes:"Observability proxy in front of OpenAI-compatible providers."},{id:"openai_compatible",displayName:"OpenAI-compatible endpoint",category:"openai_compatible",connectionTypes:["openai_compatible","api_key","custom_endpoint"],defaultAdapter:"http_openai_compat",baseUrl:"https://",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Any server exposing /v1/chat/completions + /v1/models."},{id:"lmstudio_server",displayName:"LM Studio (OpenAI server)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:1234/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"Local OpenAI-compatible server from LM Studio."},{id:"ollama_openai",displayName:"Ollama (OpenAI endpoint)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:11434/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Ollama's OpenAI-compatible surface."},{id:"vllm_server",displayName:"vLLM (OpenAI server)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8000/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"High-throughput self-hosted serving."},{id:"tgi",displayName:"Text Generation Inference",category:"openai_compatible",connectionTypes:["openai_compatible","local","custom_endpoint"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8080/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental",notes:"HF TGI with OpenAI route."},{id:"localai",displayName:"LocalAI",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8080/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"Drop-in OpenAI replacement, fully local."},{id:"azure_openai",displayName:"Azure OpenAI",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_azure_openai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"requires_setup"},{id:"aws_bedrock",displayName:"AWS Bedrock",category:"cloud_platform",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"sdk_bedrock",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"requires_setup",notes:"SigV4 auth; multi-vendor models."},{id:"vertex_ai",displayName:"Google Vertex AI",category:"cloud_platform",connectionTypes:["oauth","api_key"],defaultAdapter:"sdk_vertex",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"requires_setup",notes:"GCP service-account / ADC."},{id:"cloudflare",displayName:"Cloudflare Workers AI",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_cloudflare",baseUrl:"https://api.cloudflare.com/client/v4",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"oci_genai",displayName:"Oracle OCI Generative AI",category:"cloud_platform",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"sdk_oci",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"OCI SDK signing — adapter pending."},{id:"watsonx",displayName:"IBM watsonx",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_watsonx",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"requires_setup"},{id:"dashscope",displayName:"Alibaba DashScope / Qwen",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_dashscope",baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"experimental",notes:"Qwen models, OpenAI-compatible mode."},{id:"qianfan",displayName:"Baidu Qianfan",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_qianfan",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"planned",notes:"ERNIE; access-token auth — adapter pending."},{id:"hunyuan",displayName:"Tencent Hunyuan",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_hunyuan",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"TC3-HMAC signing — adapter pending."},{id:"zhipu",displayName:"Zhipu AI (GLM)",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_zhipu",baseUrl:"https://open.bigmodel.cn/api/paas/v4",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"experimental"},{id:"moonshot",displayName:"Moonshot AI / Kimi",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_moonshot",baseUrl:"https://api.moonshot.cn/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenAI-compatible; long context."},{id:"minimax",displayName:"MiniMax",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_minimax",baseUrl:"https://api.minimax.chat/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Group-id + key auth — adapter pending."},{id:"ollama",displayName:"Ollama",category:"local_runtime",connectionTypes:["local","cli"],defaultAdapter:"local_ollama",baseUrl:"http://localhost:11434",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"Pulls + serves local models; live /api/tags list."},{id:"llamacpp",displayName:"llama.cpp",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_llamacpp",baseUrl:"http://127.0.0.1:8082",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"GGUF models, SHA-256 verified, bound to 127.0.0.1."},{id:"lmstudio",displayName:"LM Studio",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_lmstudio",baseUrl:"http://localhost:1234",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsVision:!0,status:"available",notes:"Desktop runtime + local server."},{id:"vllm",displayName:"vLLM",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_vllm",baseUrl:"http://localhost:8000",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"GPU serving engine."},{id:"localai_rt",displayName:"LocalAI",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_localai",baseUrl:"http://localhost:8080",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available"},{id:"gpt4all",displayName:"GPT4All",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_gpt4all",baseUrl:"http://localhost:4891/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"koboldcpp",displayName:"KoboldCpp",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_kobold",baseUrl:"http://localhost:5001",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"jan",displayName:"Jan",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_jan",baseUrl:"http://localhost:1337/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"anythingllm",displayName:"AnythingLLM (local)",category:"local_runtime",connectionTypes:["local","api_key"],defaultAdapter:"local_anythingllm",baseUrl:"http://localhost:3001/api",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Workspace API — adapter pending."},{id:"openwebui",displayName:"Open WebUI (backend)",category:"local_runtime",connectionTypes:["local","openai_compatible"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:3000/api",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"claude_code",displayName:"Claude Code",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_claude_code",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"available",notes:"Drives the local Claude Code CLI / agent."},{id:"codex_cli",displayName:"Codex CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_codex",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenAI Codex CLI agent."},{id:"openclaw",displayName:"OpenClaw",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_openclaw",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenClaw CLI — headless `openclaw infer model run --json` (provider-routed). No token/cost reported."},{id:"hermes_cli",displayName:"Hermes (Nous Research)",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_hermes",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Hermes agent CLI — headless `hermes -z`. Configure providers via `hermes model`."},{id:"gemini_cli",displayName:"Gemini CLI",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_gemini",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"experimental"},{id:"aider",displayName:"Aider",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_aider",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `aider --message --yes-always`; provider-routed via its own env keys. Model list from `aider --list-models`. No token/cost reported."},{id:"opencode",displayName:"OpenCode",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_opencode",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `opencode run`; providers via `opencode auth login`. Model list from `opencode models`. No token/cost reported."},{id:"copilot_cli",displayName:"GitHub Copilot CLI",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_copilot",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"experimental",notes:"Headless `copilot -p --allow-all-tools`; sign in with the Copilot CLI. No token/cost reported."},{id:"cursor_cli",displayName:"Cursor CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_cursor",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `cursor-agent -p --output-format json`; sign in via `cursor-agent login`. `-p` can hang → bounded timeout. No token/cost reported."},{id:"cline_cli",displayName:"Cline CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_cline",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `cline --json -y`; provider-routed via its own config. No token/cost reported."},{id:"kilo_code",displayName:"Kilo Code CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_kilo",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `kilocode --yes`; provider-routed via its own config. No token/cost reported."},{id:"openai_cli",displayName:"OpenAI CLI",category:"cli",connectionTypes:["cli","api_key"],defaultAdapter:"cli_openai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Thin CLI over the API — adapter pending."},{id:"ollama_cli",displayName:"Ollama CLI",category:"cli",connectionTypes:["cli","local"],defaultAdapter:"cli_ollama",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"`ollama run/list` driven."},{id:"custom_cli",displayName:"Custom CLI provider",category:"cli",connectionTypes:["cli","custom_endpoint"],defaultAdapter:"cli_custom",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,status:"requires_setup",notes:"Define your own command + arg template."}].map(a=>[a.id,a])),aZ=a=>aY[a];async function a$(a,b,c=12e3){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c,e=await fetch(a,{headers:b,signal:d.signal}),f=await e.text();try{c=JSON.parse(f)}catch{c=void 0}return{ok:e.ok,status:e.status,json:c,error:e.ok?void 0:f.slice(0,200)||e.statusText}}catch(a){return{ok:!1,status:0,error:a instanceof Error?a.message:String(a)}}finally{clearTimeout(e)}}function a_(a){return a&&"object"==typeof a?Array.isArray(a.data)?a.data.length:Array.isArray(a.models)?a.models.length:0:0}async function a0(a,b){let c=a.defaultAdapter;if(c.startsWith("cli_")){let a=(0,aH.hW)(c);return await (0,aH.$g)(a)?{ok:!0,count:(aH.w5[c]??aH.w5.cli_claude_code).length}:{ok:!1,count:0,error:`${a} CLI not found on PATH`}}if("local_ollama"===c||"ollama"===a.id||"ollama_openai"===a.id){let b=a.baseUrl||"http://127.0.0.1:11434",c=await a$(b.replace(/\/$/,"")+"/api/tags",{});return c.ok?{ok:!0,count:a_(c.json)}:{ok:!1,count:0,error:c.error||"Ollama not reachable at "+b}}if("local_runtime"===a.category){let c=a.baseUrl||"http://127.0.0.1:8080",d=await a$(c.replace(/\/$/,"")+"/v1/models",b?{Authorization:"Bearer "+b}:{});return d.ok?{ok:!0,count:a_(d.json)}:{ok:!1,count:0,error:d.error||"local runtime not reachable"}}if(!b)return{ok:!1,count:0,error:"no API key in vault — connect with a key first"};if("http_anthropic"===c||"anthropic"===a.id){let a=await a$("https://api.anthropic.com/v1/models",{"x-api-key":b,"anthropic-version":"2023-06-01"});return a.ok?{ok:!0,count:a_(a.json)}:{ok:!1,count:0,error:a.error||"auth failed ("+a.status+")"}}let d=(a.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),e=d.endsWith("/models")?d:d+(d.includes("/v1")?"/models":"/v1/models"),f=await a$(e,{Authorization:"Bearer "+b});return f.ok?{ok:!0,count:a_(f.json)}:{ok:!1,count:0,error:f.error||"auth failed ("+f.status+")"}}async function a1(a,b){let{workspace:c}=await (0,D.nP)(),d=aZ(a);if(!d)return;let g=(0,l.randomUUID)();await e.db.insert(f.provider).values({id:g,workspaceId:c.id,catalogId:a,adapter:d.defaultAdapter,kind:"cli"===d.category?"cli":"local_runtime"===d.category?"local":"cloud",auth:d.connectionTypes.includes("api_key")?"api_key":d.connectionTypes[0],status:"needs_sync",syncStatus:d.supportsModelSync?"implemented":"manual"}),b&&await (0,aX.IW)(c.id,`${a}_api_key`,b,g),(0,C.revalidatePath)("/models"),await a2(g)}async function a2(a){let b,{workspace:c}=await (0,D.nP)(),[g]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,c.id)));if(!g)return{ok:!1,error:"not found"};let h=aZ(g.catalogId);if(!h)return{ok:!1,error:"unknown provider"};let i=await (0,aX.r6)(c.id,`${g.catalogId}_api_key`),j=await a0(h,i),k=null;if("cli"===h.category){let a=(0,aH.hW)(h.defaultAdapter);b=(k=await (0,aH.$g)(a).catch(()=>null))?await (0,aH.Kp)(a).catch(()=>"unknown"):"needs_login"}else b="local_runtime"===h.category?j.ok?"ready":"unknown":i&&j.ok?"ready":"needs_key";return await e.db.update(f.provider).set({status:j.ok?"connected":"error",modelCount:j.count,lastSync:new Date,cliVersion:k,authState:b}).where((0,d.eq)(f.provider.id,a)),j.ok&&await a3(a).catch(()=>{}),(0,C.revalidatePath)("/models"),j}async function a3(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));if(!c)return{ok:!1,count:0,error:"not found"};let g=await a4(c);return(0,C.revalidatePath)("/models"),g}async function a4(a){let b,c,g,h=aZ(a.catalogId);if(!h)return{ok:!1,count:0,error:"unknown provider"};let i=await (0,aX.r6)(a.workspaceId,`${a.catalogId}_api_key`),j="cli"===h.category;try{b=await aU({catalogId:a.catalogId,adapter:a.adapter,baseUrl:h.baseUrl,apiKey:i})}catch{b=null}if(j){let d=(0,aH.hW)(a.adapter);g=(c=await (0,aH.$g)(d).catch(()=>null))?await (0,aH.Kp)(d).catch(()=>"unknown"):"needs_login",null===b&&(b=(aH.w5[a.adapter]??[]).filter(a=>"(default)"!==a).map(a=>({id:a})))}if(null===b)return{ok:!0,count:0};let k=await aW(a.catalogId,b),m=new Date,n=k.length?function(a,b){if(!b.length)return"";let c=aK[aJ(a)];if(c)for(let a of c){let c=b.filter(b=>b.id.toLowerCase().includes(a));if(c.length)return c.sort((a,b)=>(b.released||"").localeCompare(a.released||"")),c[0].id}let d=b.filter(a=>a.released);return d.length?(d.sort((a,b)=>b.released.localeCompare(a.released)),d[0].id):b[0].id}(a.catalogId,k):null;if(k.length)await e.db.delete(f.providerModel).where((0,d.eq)(f.providerModel.providerId,a.id)),await e.db.insert(f.providerModel).values(k.map(b=>({id:(0,l.randomUUID)(),workspaceId:a.workspaceId,providerId:a.id,catalogId:a.catalogId,modelId:b.id,name:b.name,context:b.context,outputLimit:b.outputLimit,inputCost:b.inputCost,outputCost:b.outputCost,caps:b.caps,released:b.released,isDefault:b.id===n,lastSeen:m})));else if(!j)return{ok:!1,count:0,error:"no models returned"};let o=j&&!c?"needs_sync":"connected";return await e.db.update(f.provider).set({status:o,modelCount:k.length||(j?a.modelCount:0),lastSync:m,defaultModel:n||a.defaultModel,...j?{cliVersion:c??null,authState:g??null}:{}}).where((0,d.eq)(f.provider.id,a.id)),{ok:!0,count:k.length}}async function a5(a=12){let b,c=new Date(Date.now()-60*a*6e4);try{b=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.status,"connected"),(0,d.or)((0,d.kZ)(f.provider.lastSync),(0,d.lt)(f.provider.lastSync,c))))}catch{return{refreshed:0}}let g=0;for(let a of b.slice(0,50))try{let b=await a4(a);b.ok&&b.count>0&&g++}catch{}return{refreshed:g}}async function a6(a){let{workspace:b}=await (0,D.nP)(),c=(await e.db.select().from(f.providerModel).where((0,d.Uo)((0,d.eq)(f.providerModel.providerId,a),(0,d.eq)(f.providerModel.workspaceId,b.id)))).map(a=>({id:a.modelId,name:a.name,context:a.context,outputLimit:a.outputLimit,inputCost:a.inputCost,outputCost:a.outputCost,caps:a.caps??{reasoning:!1,tools:!1,vision:!1},released:a.released,isDefault:a.isDefault}));return c.sort((a,b)=>Number(b.isDefault)-Number(a.isDefault)||(b.released||"").localeCompare(a.released||"")||a.name.localeCompare(b.name)),{models:c}}async function a7(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));if(!c)return{ok:!1,error:"not found"};let g=aZ(c.catalogId);if(!g)return{ok:!1,error:"unknown provider"};let h=await (0,aX.r6)(b.id,`${c.catalogId}_api_key`),i=await a0(g,h);return await e.db.update(f.provider).set({status:i.ok?"connected":"error"}).where((0,d.eq)(f.provider.id,a)),(0,C.revalidatePath)("/models"),{ok:i.ok,error:i.error}}async function a8(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));if(!c)return{models:[],error:"not found"};let g=aZ(c.catalogId);if(!g?.baseUrl)return{models:[],error:"no public endpoint for this provider"};let h=await (0,aX.r6)(b.id,`${c.catalogId}_api_key`),i=g.baseUrl.replace(/\/$/,"");try{let a=/ollama/i.test(c.catalogId)||c.adapter.includes("ollama")?`${i.replace(/\/v1$/,"")}/api/tags`:`${i}/models`,b=await fetch(a,{headers:h?{authorization:`Bearer ${h}`}:{},signal:AbortSignal.timeout(8e3)});if(!b.ok)return{models:[],error:`endpoint ${b.status}`};let d=await b.json();return{models:(d.data??d.models??[]).map(a=>a.id??a.name??"").filter(Boolean).slice(0,80)}}catch(b){let a=String(b instanceof Error?b.message:b);return{models:[],error:/abort|fetch failed|ECONN/i.test(a)?"endpoint unreachable":a}}}async function a9(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));c&&await (0,aX.Kh)(b.id,`${c.catalogId}_api_key`),await e.db.delete(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id))),(0,C.revalidatePath)("/models")}async function ba(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));c&&(await (0,aX.Kh)(b.id,`${c.catalogId}_api_key`),await e.db.update(f.provider).set({auth:"none",status:"needs_sync",modelCount:0}).where((0,d.eq)(f.provider.id,a)),(0,C.revalidatePath)("/models"))}(0,X.D)([a1,a2,a3,a5,a6,a7,a8,a9,ba]),(0,s.A)(a1,"60f96bab69a09e9fcf636f80db1eff87d3be983a60",null),(0,s.A)(a2,"4005f3f9461c2e6b2fecdac81c822e2481fbdbaec1",null),(0,s.A)(a3,"408898da73d5e0af066104c62997b817201c0a99cf",null),(0,s.A)(a5,"40897071ec7c50dcab7572d01ec05ab9ed5da6d715",null),(0,s.A)(a6,"403a1916644d7877e6f55e5ed65de73f9157ca3977",null),(0,s.A)(a7,"40c4cc3f2d97110b2d69610739ee46dbe5a2a37d85",null),(0,s.A)(a8,"409ff004d8d4df25bdce5af6d94dd7d215787a3304",null),(0,s.A)(a9,"4004673068530656edd28ca2b130a1096f274e2cde",null),(0,s.A)(ba,"403c1d8c05fcc53bd28044c5b835d4b402564a964f",null);var bb=c(11457);let bc={"gpt-4o":[2.5,10],"gpt-4o-mini":[.15,.6],"o4-mini":[1.1,4.4],"gemini-2.0-flash":[.1,.4],"gemini-1.5-pro":[1.25,5],"gemini-1.5-flash":[.075,.3]};function bd(a,b,c){let d=Object.keys(bc).find(b=>a.toLowerCase().startsWith(b));if(!d)return 0;let[e,f]=bc[d];return b/1e6*e+c/1e6*f}function be(a,b,c,d){return{ok:!1,text:"",usd:0,inputTokens:0,outputTokens:0,durationMs:c,binary:a,model:b,error:d}}async function bf(a,b,c,d){let e,f=Date.now(),g=b.baseUrl.replace(/\/$/,""),h="google"===b.provider,i=h?`${g}/models/${encodeURIComponent(b.model)}:streamGenerateContent?alt=sse&key=${encodeURIComponent(b.apiKey)}`:`${g}/chat/completions`,j={"content-type":"application/json"};!h&&b.apiKey&&(j.authorization=`Bearer ${b.apiKey}`);let k=h?{contents:[{role:"user",parts:[{text:a}]}]}:{model:b.model,messages:[{role:"user",content:a}],stream:!0,stream_options:{include_usage:!0}};try{e=await fetch(i,{method:"POST",headers:j,body:JSON.stringify(k),signal:AbortSignal.timeout(c.timeoutMs??18e4)})}catch(a){return be(b.provider,b.model,Date.now()-f,String(a instanceof Error?a.message:a))}if(!e.ok||!e.body){let a=await e.text().catch(()=>"");return be(b.provider,b.model,Date.now()-f,`http ${e.status} ${a.slice(0,200)}`)}let l=e.body.getReader(),m=new TextDecoder,n="",o="",p=0,q=0,r=0,s=()=>{o.length>p&&(d({kind:"text",detail:o.slice(p,p+8e3)}),p=o.length)};try{for(;;){let a,{value:b,done:c}=await l.read();if(c)break;for(n+=m.decode(b,{stream:!0});(a=n.indexOf("\n"))>=0;){let b=n.slice(0,a).trim();if(n=n.slice(a+1),!b.startsWith("data:"))continue;let c=b.slice(5).trim();if("[DONE]"!==c)try{let a=JSON.parse(c);if(h){let b=a.candidates?.[0]?.content?.parts?.map(a=>a.text??"").join("")??"";b&&(o+=b).length-p>=120&&s();let c=a.usageMetadata;c&&(q=c.promptTokenCount??q,r=c.candidatesTokenCount??r)}else{let b=a.choices?.[0]?.delta?.content??"";b&&(o+=b).length-p>=120&&s(),a.usage&&(q=a.usage.prompt_tokens??q,r=a.usage.completion_tokens??r)}}catch{}}}}catch(a){return s(),d({kind:"done"}),{ok:!!o,text:o,usd:bd(b.model,q,r),inputTokens:q,outputTokens:r,durationMs:Date.now()-f,binary:b.provider,model:b.model,error:o?void 0:String(a instanceof Error?a.message:a)}}return s(),d({kind:"done"}),{ok:!!o.trim(),text:o,usd:bd(b.model,q,r),inputTokens:q,outputTokens:r,durationMs:Date.now()-f,binary:b.provider,model:b.model,error:o.trim()?void 0:"empty response"}}function bg(a,b){let c=RegExp(`##\\s+${b}\\s*\\n([\\s\\S]*?)(?:\\n##\\s|$)`,"i");return a.match(c)?.[1].trim()??""}function bh(a){return a.split("\n").find(a=>a.trim()&&!a.startsWith("#")&&!a.startsWith("**")&&!a.startsWith("---")&&!a.startsWith("|"))?.trim()??""}function bi(a,b){let c=a.split("\n").find(a=>a.startsWith("# "));return c?c.slice(2).trim():b}async function bj(a){let[b]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));return b??null}async function bk(a,b,c){let g=(0,m.sL)(b,`.claude/skills/${c}.md`)??"",h=bh(g),i=(g.match(/\*\*Trigger:\*\*\s*(.+)/)?.[1]??"").trim(),j=bg(g,"Procedure")||"",[k]=await e.db.select().from(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,a),(0,d.eq)(f.skill.name,c)));k?await e.db.update(f.skill).set({summary:h,trigger:i,...j?{instructions:j}:{},indexed:"indexed"}).where((0,d.eq)(f.skill.id,k.id)):await e.db.insert(f.skill).values({id:(0,l.randomUUID)(),workspaceId:a,name:c,summary:h,trigger:i,instructions:j,native:!0,provisional:!1,indexed:"indexed"})}async function bl(a,b,c){let g=(0,m.sL)(b,`.claude/agents/${c}/Agent.md`)??"";if(!g)return;let[h]=await e.db.select().from(f.agent).where((0,d.Uo)((0,d.eq)(f.agent.workspaceId,a),(0,d.eq)(f.agent.handle,c)));if(!h)return;let i=function(a){let b=a.match(/^---\n([\s\S]*?)\n---/);if(!b)return{};let c={};for(let a of b[1].split("\n")){let b=a.indexOf(":");b>0&&(c[a.slice(0,b).trim()]=a.slice(b+1).trim())}return c}(g),j={identity:(g.match(/\*\*Identity:\*\*\s*(.+)/)?.[1]??"").trim(),ritual:(g.match(/\*\*Ritual:\*\*\s*(.+)/)?.[1]??"").trim(),tone:(g.match(/\*\*Tone:\*\*\s*(.+)/)?.[1]??"").trim()||(h.persona?.tone??""),systemPrompt:bg(g,"System prompt")},k={...i.provider?{adapter:i.provider}:{},...i.model?{model:i.model}:{},...i.temperature?{temperature:parseFloat(i.temperature)}:{},...i.dailyCapUsd?{dailyCapUsd:parseFloat(i.dailyCapUsd)}:{},...i.tierFloor?{tierFloor:i.tierFloor}:{},...i.reportsTo&&"null"!==i.reportsTo?{reportsTo:i.reportsTo}:{},persona:j};for(let g of(await e.db.update(f.agent).set(k).where((0,d.eq)(f.agent.id,h.id)),[...((0,m.sL)(b,`.claude/agents/${c}/skills.md`)??"").matchAll(/`([a-z0-9-]+)`/g)].map(a=>a[1]))){let[b]=await e.db.select().from(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,a),(0,d.eq)(f.skill.name,g)));b&&await e.db.insert(f.agentSkill).values({agentId:h.id,skillId:b.id}).onConflictDoNothing()}}async function bm(a,b,c){let g=c.split("/").pop()??c;if("README.md"===g)return;let h=(0,m.sL)(b,c)??"",i=bi(h,g),[j]=await e.db.select().from(f.report).where((0,d.Uo)((0,d.eq)(f.report.workspaceId,a),(0,d.eq)(f.report.title,i)));j?await e.db.update(f.report).set({body:h}).where((0,d.eq)(f.report.id,j.id)):await e.db.insert(f.report).values({id:(0,l.randomUUID)(),workspaceId:a,title:i,type:"Report",body:h})}async function bn(a,b,c,g){let h=(0,m.sL)(b,c)??"",i=bi(h,c.split("/").pop()??c),j=bh(h),[k]=await e.db.select().from(f.docIndex).where((0,d.Uo)((0,d.eq)(f.docIndex.workspaceId,a),(0,d.eq)(f.docIndex.path,c)));k?await e.db.update(f.docIndex).set({title:i,summary:j,updatedAt:new Date}).where((0,d.eq)(f.docIndex.id,k.id)):await e.db.insert(f.docIndex).values({id:(0,l.randomUUID)(),workspaceId:a,kind:g,path:c,title:i,summary:j})}function bo(a){(a.startsWith(".claude/skills")||a.endsWith("/skills.md"))&&(0,C.revalidatePath)("/skills"),a.startsWith(".claude/agents")&&(0,C.revalidatePath)("/agents/[handle]","page"),a.startsWith("DOCS")&&(0,C.revalidatePath)("/docs"),a.startsWith("PO")&&(0,C.revalidatePath)("/pm"),a.startsWith("Reports")&&(0,C.revalidatePath)("/reports"),(0,C.revalidatePath)("/code")}async function bp(a,b,c=!0){let d,e=await bj(a);if(!e)return{ok:!1};let f=e.id;if(!function(a,b){if(!K(b))return;let c=a+"::"+b,d=R.get(c);d&&clearTimeout(d),R.set(c,setTimeout(()=>{R.delete(c),P(a,b).catch(()=>{})},2500))}(a,b),d=b.match(/^\.claude\/skills\/(.+)\.md$/))await bk(f,a,d[1]);else if(d=b.match(/^\.claude\/agents\/([^/]+)\/(?:Agent|skills)\.md$/))await bl(f,a,d[1]);else if(/^Reports\/.+\.md$/.test(b))await bm(f,a,b);else if(/^DOCS\/.+\.md$/.test(b))await bn(f,a,b,"docs");else{if(!/^PO\/.+\.md$/.test(b))return{ok:!0};await bn(f,a,b,"po")}return c&&bo(b),{ok:!0}}async function bq(a,b){let c,g=await bj(a);if(!g)return{ok:!1};let h=g.id;return Q(a,b).catch(()=>{}),(c=b.match(/^\.claude\/skills\/(.+)\.md$/))?await e.db.delete(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,h),(0,d.eq)(f.skill.name,c[1]))):/^(?:DOCS|PO)\/.+\.md$/.test(b)&&await e.db.delete(f.docIndex).where((0,d.Uo)((0,d.eq)(f.docIndex.workspaceId,h),(0,d.eq)(f.docIndex.path,b))),bo(b),{ok:!0}}async function br(a=!0){let{org:b}=await (0,D.nP)(),c=b.id;for(let a of(0,m.Ci)(c,".claude/skills"))!a.isDir&&a.name.endsWith(".md")&&await bp(c,a.path,!1);for(let a of(0,m.Ci)(c,".claude/agents"))a.isDir&&await bp(c,`${a.path}/Agent.md`,!1);for(let a of["DOCS","PO","Reports"])for(let b of(0,m.Ci)(c,a))!b.isDir&&b.name.endsWith(".md")&&await bp(c,b.path,!1);return a&&(0,C.revalidatePath)("/","layout"),{ok:!0}}async function bs(a,b,c){(0,m.dx)(a,b,c),await bp(a,b)}(0,X.D)([bp,bq,br]),(0,s.A)(bp,"70ae6b7d6a16ebfa9c23932ee1094fbffbcab2aa68",null),(0,s.A)(bq,"60575173b13aefcb112b702ceafc6e93d4d1a87c93",null),(0,s.A)(br,"405d9a2bdd47403b8b93c2ea9799d886bf4f865790",null);var bt=c(47244),bu=c(27912);let bv=`You are Vannevar, the Knowledge agent — Constella's CENTRAL SOURCE OF TRUTH. You own the Knowledge Base (KB): a curated, classified, state-aware layer over the semantic RAG index.
12
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},21249:(a,b,c)=>{"use strict";c.d(b,{reconcileOnBoot:()=>cK});var d=c(15220),e=c(82339),f=c(9165),g=c(71401),h=c(48685),i=c(16338);async function j(a,b=3e5){try{let c=Date.now()-b,g=await e.db.select().from(f.event).where((0,d.eq)(f.event.workspaceId,a));if(!g.length)return 0;let h=new Map;for(let a of g){let b=h.get(a.runId)??[];b.push(a),h.set(a.runId,b)}let i=new Set((await e.db.select({id:f.message.id}).from(f.message).where((0,d.eq)(f.message.workspaceId,a))).map(a=>a.id)),j=0;for(let[b,g]of h){let h=g.reduce((a,b)=>Math.max(a,b.seq),0);i.has(b)||g.some(a=>"done"===a.kind)||h>c||(await e.db.delete(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.runId,b))),j+=g.length)}return j}catch(a){return console.error("[events-prune] pruneOrphanRuns failed:",a),0}}async function k(a,b,c){try{await e.db.delete(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.runId,b),(0,d.eq)(f.event.kind,"text")));let g=await e.db.select({seq:f.event.seq}).from(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.channel,c))).orderBy((0,i.i)(f.event.seq)).limit(500);if(500===g.length){let b=g[g.length-1].seq;await e.db.delete(f.event).where((0,d.Uo)((0,d.eq)(f.event.workspaceId,a),(0,d.eq)(f.event.channel,c),(0,d.lt)(f.event.seq,b)))}}catch(a){console.error("[events-prune] failed:",a)}}var l=c(77598),m=c(38442),n=c(80629);Object.fromEntries([{key:"language",label:"Language",opts:["TypeScript","JavaScript","Python","Go","Rust","Java","Kotlin","C#","Ruby","PHP","Elixir","Swift","C++","C","Scala","Dart","Clojure","Haskell","Lua","R","Objective-C","Erlang","None"]},{key:"runtime",label:"Runtime",opts:["Node.js","Bun","Deno","Python 3","PyPy","JVM",".NET","BEAM (Erlang VM)","None"]},{key:"frontend",label:"Frontend",opts:["React","Vue","Svelte","Angular","SolidJS","Preact","Qwik","Lit","HTMX","Alpine.js","Ember","Backbone","HTML/CSS","Vanilla JS","None"]},{key:"meta",label:"Meta-framework / SSG",opts:["Next.js","Nuxt","Remix","SvelteKit","Astro","Gatsby","Vite (SPA)","Hugo","Jekyll","Eleventy","Docusaurus","Static (no framework)","None"]},{key:"backend",label:"Backend framework",opts:["NestJS","Fastify","Express","Hono","Koa","Django","Flask","FastAPI","Spring Boot","Spring","Laravel","Symfony","CodeIgniter","Ruby on Rails","Gin","Fiber","Actix","Phoenix","ASP.NET Core","AdonisJS","GraphQL","Nginx","None"]},{key:"mobile",label:"Mobile",opts:["React Native","Flutter","Android","Ionic","Xamarin","NativeScript","None"]},{key:"database",label:"Database",opts:["PostgreSQL","MySQL","MariaDB","SQLite","MongoDB","Redis","CockroachDB","Cassandra","DynamoDB","Supabase","PlanetScale","Neon","None"]},{key:"orm",label:"ORM / Data layer",opts:["Prisma","Drizzle","TypeORM","Sequelize","SQLAlchemy","Django ORM","Mongoose","Knex","Diesel","GORM","None"]},{key:"styling",label:"Styling / UI",opts:["Tailwind CSS","Plain CSS","CSS Modules","styled-components","Sass","Vanilla Extract","UnoCSS","shadcn/ui","MUI","Bootstrap","Bulma","Vuetify","Chakra UI","None"]},{key:"testing",label:"Testing",opts:["Jest","Vitest","Cypress","Playwright","Selenium","Mocha","Jasmine","Puppeteer","None"]},{key:"aiml",label:"AI / ML",opts:["TensorFlow","PyTorch","scikit-learn","Keras","Pandas","NumPy","Jupyter","None"]},{key:"dataviz",label:"Data viz",opts:["D3","Chart.js","Grafana","Plotly","None"]},{key:"container",label:"Container",opts:["Docker","Podman","containerd","None"]},{key:"infra",label:"Infra / DevOps",opts:["Tailscale","Cloudflare","Vercel","Netlify","Fly.io","Railway","AWS","GCP","Azure","Kubernetes","Jenkins","CircleCI","Terraform","Ansible","Vagrant","None"]},{key:"baas",label:"Backend-as-a-service",opts:["Firebase","Appwrite","Amplify","Heroku","Supabase","None"]},{key:"queue",label:"Queue / Cache",opts:["Redis","BullMQ","RabbitMQ","Kafka","NATS","Celery","None"]},{key:"auth",label:"Auth",opts:["Auth.js","Clerk","Lucia","Supabase Auth","Keycloak","Auth0","Passport","None"]}].map(a=>[a.key,a.label]));let o=new Set(["Next.js","Nuxt","Remix","SvelteKit","Astro","Gatsby"]),p=[{handle:"ada",name:"Ada",role:"CEO",color:"#e0a44e",reportsTo:null,model:"sonnet",provider:"cli_claude_code",temperature:.4,dailyCapUsd:15,tier:"critical",identity:"Decisive, outcome-driven leader. Speaks in goals, not tasks. Protects scope and budget.",ritual:"Read the company goals, decompose into epics, delegate to leads, review what shipped."},{handle:"linus",name:"Linus",role:"CTO",color:"#9a5cff",reportsTo:"ada",model:"sonnet",provider:"cli_claude_code",temperature:.3,dailyCapUsd:40,tier:"critical",identity:"Systems thinker. Balances delivery speed against technical debt.",ritual:"Turn epics into tickets, route work to specialists, clear blockers, review PRs."},{handle:"donald",name:"Donald",role:"Product Owner",color:"#4fc9b0",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.4,dailyCapUsd:20,tier:"heavy",identity:"Customer voice. Ruthless about priority and clarity.",ritual:"Groom the backlog with MoSCoW, plan the sprint, track delivery, close with a retro."},{handle:"margaret",name:"Margaret",role:"Backend",color:"#3fb98f",reportsTo:"linus",model:"sonnet",provider:"cli_claude_code",temperature:.3,dailyCapUsd:50,tier:"heavy",identity:"Pragmatic server engineer. Values correctness, small diffs and green tests.",ritual:"Pull one ticket, read context, implement on a branch, never push without a passing suite."},{handle:"grace",name:"Grace",role:"Frontend",color:"#5b8def",reportsTo:"linus",model:"sonnet",provider:"cli_claude_code",temperature:.5,dailyCapUsd:45,tier:"heavy",identity:"Craft-focused UI engineer. Cares about accessibility and clean component APIs.",ritual:"Read the design tokens, build the smallest component that works, typecheck before PR."},{handle:"edsger",name:"Edsger",role:"QA",color:"#e8688f",reportsTo:"linus",model:"haiku",provider:"cli_claude_code",temperature:.2,dailyCapUsd:25,tier:"heavy",identity:"Skeptical quality gate. Assumes nothing works until proven by a test.",ritual:"Reproduce, cover with a test, run the suite, then gate the sign-off."},{handle:"werner",name:"Werner",role:"DevOps",color:"#f0a35e",reportsTo:"linus",model:"haiku",provider:"cli_claude_code",temperature:.3,dailyCapUsd:20,tier:"heavy",identity:"Reliability-minded operator. Automates the boring, guards the leases.",ritual:"Build, deploy a preview, report the URL, never leave an env leased too long."},{handle:"barbara",name:"Barbara",role:"Docs",color:"#b3d97a",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.4,dailyCapUsd:15,tier:"light",identity:"Patient explainer. Turns changes into understandable docs.",ritual:"Watch merges, draft docs while context is fresh, verify every link."},{handle:"whitfield",name:"Whitfield",role:"CyberSec",color:"#c4a0ff",reportsTo:"linus",model:"opus",provider:"cli_claude_code",temperature:.2,dailyCapUsd:30,tier:"critical",identity:"Adversarial reviewer. Thinks like an attacker, writes like an auditor.",ritual:"Audit every change for secret handling and injection, file findings with a concrete fix."},{handle:"vannevar",name:"Vannevar",role:"Knowledge",color:"#7ac5e0",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.2,dailyCapUsd:10,tier:"light",identity:"Keeper of the company's semantic memory. Indexes every document AND conversation into embeddings so any agent can recall anything instantly.",ritual:"Keep the embedding server healthy; re-index the workspace docs and the chat (team room, DMs, Telegram) into the RAG index so retrieval stays current."}],q=[{name:"open-pr",summary:"Branch, commit, open a PR with a test plan and request CTO review.",trigger:"When a work product is ready to merge",steps:["Create a branch from main","Commit the change set","Open a PR with summary + test plan","Request review from the CTO"]},{name:"run-suite",summary:"Detect the package manager, run the test task and gate sign-off on red.",trigger:"Before any sign-off",steps:["Detect package manager","Run the workspace test task","Parse results","Block sign-off if red"]},{name:"secret-scan",summary:"Scan for plaintext keys, verify vault references and flag log leaks.",trigger:"On every adapter change",steps:["Grep for plaintext keys","Check vault references","Flag any echo to logs"]},{name:"telegram-notify",summary:"Format a digest and POST it to the Telegram Bot API.",trigger:"When a routine completes",steps:["Format the digest","Resolve the chat id from secrets","POST to Telegram Bot API"]},{name:"moscow-prioritise",summary:"Score backlog items and re-order them with the MoSCoW method.",trigger:"During backlog grooming",steps:["Score each item","Assign Must/Should/Could/Won't","Re-order the backlog"]},{name:"gguf-validate",summary:"Pull a GGUF, verify SHA-256 and bind to loopback.",trigger:"When installing a local model",steps:["Download the GGUF","Verify SHA-256","Bind to 127.0.0.1 only"]}],r=q.filter(a=>"telegram-notify"!==a.name&&"gguf-validate"!==a.name).map(a=>a.name);var s=c(80733),t=c(48161),u=c.n(t),v=c(73024),w=c(31421),x=c(90977),y=c.n(x),z=c(76760),A=c(57075),B=c(46466),C=c(54410),D=c(36156);let E=process.env.OLLAMA_URL??"http://127.0.0.1:11434",F=process.env.CONSTELLA_EMBED_MODEL??"nomic-embed-text",G=/nomic/i.test(F),H=(a,b)=>`search_${b}: ${a}`,I=process.env.CONSTELLA_EMBED_URL??"http://127.0.0.1:8083",J=[".claude","DOCS","PO","Reports","specs","issues","design-skills"];function K(a){let b=a.replace(/\\/g,"/");return!(b.startsWith(".claude/kb/")||b.startsWith(".claude/skills/"))&&(b.startsWith("mock/")||b.startsWith("design-mock/")?/\.(md|html?|css|jsx?|tsx?|txt|json)$/i.test(b):b.endsWith(".md")&&J.some(a=>b===`${a}.md`||b.startsWith(`${a}/`)))}async function L(a,b="document"){try{let c=await fetch(`${E}/api/embeddings`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:F,prompt:G?H(a,b):a}),signal:AbortSignal.timeout(8e3)});if(c.ok){let a=await c.json();if(Array.isArray(a.embedding)&&a.embedding.length)return a.embedding}}catch{}try{let c=await fetch(`${I}/v1/embeddings`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({input:H(a,b),model:"nomic-embed"}),signal:AbortSignal.timeout(8e3)});if(c.ok){let a=await c.json(),b=a?.data?.[0]?.embedding;if(Array.isArray(b)&&b.length)return b}}catch{}return null}function M(a){let b=a.split(/\n(?=#{1,3}\s)/).map(a=>a.trim()).filter(Boolean),c=[];for(let d of b.length?b:[a])if(d)if(d.length<=1200)c.push(d);else for(let a=0;a<d.length;a+=1200)c.push(d.slice(a,a+1200));return c.slice(0,40)}async function N(a){let[b]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));if(!b)return{ok:!1,chunks:0,embedded:!1};let c=(0,m.CS)(a).filter(K);await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,b.id),(0,d.kZ)(f.ragChunk.kbEntryId)));let g=0,h=!1;for(let d of c)for(let c of M((0,m.sL)(a,d)??"")){let a=await L(c);a&&(h=!0),await e.db.insert(f.ragChunk).values({id:(0,l.randomUUID)(),workspaceId:b.id,path:d,chunk:c,vector:a?JSON.stringify(a):null}),g++}return{ok:!0,chunks:g+=await O(a),embedded:h}}async function O(a){let[b]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));if(!b)return 0;await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,b.id),(0,d.mj)(f.ragChunk.path,"chat/%")));let c=await e.db.select().from(f.message).where((0,d.eq)(f.message.workspaceId,b.id)).orderBy((0,i.Y)(f.message.createdAt)),g=new Map;for(let a of c){let b=(a.text??"").replace(/\s+/g," ").trim();if(!b)continue;let c="operator"===a.fromKind?"Operator":"@"+(a.fromHandle??"agent"),d=g.get(a.channel);d||(d=[],g.set(a.channel,d)),d.push(`${c}: ${b}`)}let h=0;for(let[a,c]of g)for(let d of M(c.slice(-400).join("\n"))){let c=await L(d);await e.db.insert(f.ragChunk).values({id:(0,l.randomUUID)(),workspaceId:b.id,path:`chat/${a}`,chunk:d,vector:c?JSON.stringify(c):null}),h++}return h}async function P(a,b){if(!K(b))return;let[c]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));if(c)for(let g of(await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,c.id),(0,d.eq)(f.ragChunk.path,b))),M((0,m.sL)(a,b)??""))){let a=await L(g);await e.db.insert(f.ragChunk).values({id:(0,l.randomUUID)(),workspaceId:c.id,path:b,chunk:g,vector:a?JSON.stringify(a):null})}}async function Q(a,b){if(!K(b))return;let[c]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));c&&await e.db.delete(f.ragChunk).where((0,d.Uo)((0,d.eq)(f.ragChunk.workspaceId,c.id),(0,d.eq)(f.ragChunk.path,b)))}let R=new Map;function S(a,b,c=.02){let d=0;try{d=(0,v.statSync)(a).size}catch{return{ok:!1,actual:0,expected:b,message:"file missing after download"}}if(!b||b<=0)return{ok:!0,actual:d,expected:b,message:"size ok (no expected size)"};let e=d/b,f=e>=1-c&&e<=1+c;return{ok:f,actual:d,expected:b,message:f?"size verified":`size mismatch — got ${d} bytes, expected ~${b} (truncated/corrupt)`}}let T=new Map,U=[{repo:"Qwen2.5-0.5B-Instruct",paramsB:.5,kind:"chat"},{repo:"Qwen2.5-1.5B-Instruct",paramsB:1.5,kind:"chat"},{repo:"Qwen2.5-3B-Instruct",paramsB:3,kind:"chat"},{repo:"Qwen2.5-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Qwen2.5-14B-Instruct",paramsB:14,kind:"chat"},{repo:"Qwen2.5-32B-Instruct",paramsB:32,kind:"chat"},{repo:"Qwen2.5-72B-Instruct",paramsB:72,kind:"chat"},{repo:"Qwen2.5-Coder-1.5B-Instruct",paramsB:1.5,kind:"code"},{repo:"Qwen2.5-Coder-3B-Instruct",paramsB:3,kind:"code"},{repo:"Qwen2.5-Coder-7B-Instruct",paramsB:7,kind:"code"},{repo:"Qwen2.5-Coder-14B-Instruct",paramsB:14,kind:"code"},{repo:"Qwen2.5-Coder-32B-Instruct",paramsB:32,kind:"code"},{repo:"Qwen3-0.6B",paramsB:.6,kind:"chat"},{repo:"Qwen3-1.7B",paramsB:1.7,kind:"chat"},{repo:"Qwen3-4B",paramsB:4,kind:"chat"},{repo:"Qwen3-8B",paramsB:8,kind:"chat"},{repo:"Qwen3-14B",paramsB:14,kind:"chat"},{repo:"Qwen3-32B",paramsB:32,kind:"chat"},{repo:"Llama-3.2-1B-Instruct",paramsB:1,kind:"chat"},{repo:"Llama-3.2-3B-Instruct",paramsB:3,kind:"chat"},{repo:"Meta-Llama-3.1-8B-Instruct",paramsB:8,kind:"chat"},{repo:"Meta-Llama-3.1-70B-Instruct",paramsB:70,kind:"chat"},{repo:"Llama-3.3-70B-Instruct",paramsB:70,kind:"chat"},{repo:"gemma-2-2b-it",paramsB:2,kind:"chat"},{repo:"gemma-2-9b-it",paramsB:9,kind:"chat"},{repo:"gemma-2-27b-it",paramsB:27,kind:"chat"},{repo:"gemma-3-1b-it",paramsB:1,kind:"chat"},{repo:"gemma-3-4b-it",paramsB:4,kind:"chat"},{repo:"gemma-3-12b-it",paramsB:12,kind:"chat"},{repo:"gemma-3-27b-it",paramsB:27,kind:"chat"},{repo:"Mistral-7B-Instruct-v0.3",paramsB:7,kind:"chat"},{repo:"Mistral-Nemo-Instruct-2407",paramsB:12,kind:"chat"},{repo:"Mistral-Small-Instruct-2409",paramsB:22,kind:"chat"},{repo:"Mistral-Small-24B-Instruct-2501",paramsB:24,kind:"chat"},{repo:"Codestral-22B-v0.1",paramsB:22,kind:"code"},{repo:"Phi-3.1-mini-4k-instruct",paramsB:3.8,kind:"chat"},{repo:"DeepSeek-R1-Distill-Qwen-1.5B",paramsB:1.5,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-7B",paramsB:7,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-14B",paramsB:14,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-32B",paramsB:32,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Llama-8B",paramsB:8,kind:"reasoning"},{repo:"DeepSeek-Coder-V2-Lite-Instruct",paramsB:16,kind:"code"},{repo:"Yi-1.5-9B-Chat",paramsB:9,kind:"chat"},{repo:"Yi-1.5-34B-Chat",paramsB:34,kind:"chat"},{repo:"granite-3.0-8b-instruct",paramsB:8,kind:"chat"},{repo:"granite-3.1-8b-instruct",paramsB:8,kind:"chat"},{repo:"SmolLM2-360M-Instruct",paramsB:.36,kind:"chat"},{repo:"SmolLM2-1.7B-Instruct",paramsB:1.7,kind:"chat"},{repo:"aya-expanse-8b",paramsB:8,kind:"chat"},{repo:"aya-expanse-32b",paramsB:32,kind:"chat"},{repo:"Falcon3-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Falcon3-10B-Instruct",paramsB:10,kind:"chat"},{repo:"EXAONE-3.5-2.4B-Instruct",paramsB:2.4,kind:"chat"},{repo:"EXAONE-3.5-7.8B-Instruct",paramsB:7.8,kind:"chat"},{repo:"Qwen3.5-0.8B",paramsB:.8,kind:"chat"},{repo:"Qwen3.5-2B",paramsB:2,kind:"chat"},{repo:"Qwen3.5-9B",paramsB:9,kind:"chat"},{repo:"Qwen3.5-27B",paramsB:27,kind:"chat"},{repo:"Qwen3.5-35B-A3B",paramsB:35,kind:"chat"},{repo:"Qwen3.6-27B",paramsB:27,kind:"chat"},{repo:"Qwen3.6-35B-A3B",paramsB:35,kind:"chat"},{repo:"Qwen3-30B-A3B",paramsB:30,kind:"chat"},{repo:"Qwen3-30B-A3B-Instruct-2507",paramsB:30,kind:"chat"},{repo:"Qwen3-Next-80B-A3B-Instruct",paramsB:80,kind:"chat"},{repo:"Qwen3-4B-Thinking-2507",paramsB:4,kind:"reasoning"},{repo:"QwQ-32B",paramsB:32,kind:"reasoning"},{repo:"Qwen2.5-7B-Instruct-1M",paramsB:7,kind:"chat"},{repo:"Qwen2.5-Coder-0.5B-Instruct",paramsB:.5,kind:"code"},{repo:"Qwen2.5-Coder-3B",paramsB:3,kind:"code"},{repo:"Qwen2.5-Coder-32B",paramsB:32,kind:"code"},{repo:"Qwen2.5-Math-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Qwen2-500M-Instruct",paramsB:.5,kind:"chat"},{repo:"Qwen1.5-32B-Chat",paramsB:32,kind:"chat"},{repo:"gemma-4-E2B-it",paramsB:2,kind:"chat"},{repo:"gemma-4-E4B-it",paramsB:4,kind:"chat"},{repo:"gemma-4-12B-it",paramsB:12,kind:"chat"},{repo:"gemma-4-26B-A4B-it",paramsB:26,kind:"chat"},{repo:"gemma-4-31B-it",paramsB:31,kind:"chat"},{repo:"gemma-3-270m-it",paramsB:.27,kind:"chat"},{repo:"gemma-1.1-2b-it",paramsB:2,kind:"chat"},{repo:"codegemma-2b",paramsB:2,kind:"code"},{repo:"codegemma-7b",paramsB:7,kind:"code"},{repo:"codegemma-7b-it",paramsB:7,kind:"code"},{repo:"codegemma-1.1-7b-it",paramsB:7,kind:"code"},{repo:"Ministral-3-3B-Instruct-2512",paramsB:3,kind:"chat"},{repo:"Ministral-3-8B-Instruct-2512",paramsB:8,kind:"chat"},{repo:"Ministral-3-14B-Instruct-2512",paramsB:14,kind:"chat"},{repo:"Ministral-3-3B-Reasoning-2512",paramsB:3,kind:"reasoning"},{repo:"Ministral-3-8B-Reasoning-2512",paramsB:8,kind:"reasoning"},{repo:"Ministral-3-14B-Reasoning-2512",paramsB:14,kind:"reasoning"},{repo:"Mistral-Small-3.1-24B-Instruct-2503",paramsB:24,kind:"chat"},{repo:"Mistral-Small-3.2-24B-Instruct-2506",paramsB:24,kind:"chat"},{repo:"Devstral-Small-2-24B-Instruct-2512",paramsB:24,kind:"code"},{repo:"mathstral-7B-v0.1",paramsB:7,kind:"chat"},{repo:"dolphin-2.8-mistral-7b-v02",paramsB:7,kind:"chat"},{repo:"WizardLM-2-7B",paramsB:7,kind:"chat"},{repo:"DeepSeek-R1-0528-Qwen3-8B",paramsB:8,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Llama-70B",paramsB:70,kind:"reasoning"},{repo:"deepseek-coder-1.3B-kexer",paramsB:1.3,kind:"code"},{repo:"deepseek-coder-6.7B-kexer",paramsB:6.7,kind:"code"},{repo:"granite-3.2-8b-instruct",paramsB:8,kind:"chat"},{repo:"granite-4.1-3b",paramsB:3,kind:"chat"},{repo:"granite-4.1-8b",paramsB:8,kind:"chat"},{repo:"granite-4.1-30b",paramsB:30,kind:"chat"},{repo:"Olmo-3-32B-Think",paramsB:32,kind:"reasoning"},{repo:"Seed-OSS-36B-Instruct",paramsB:36,kind:"chat"},{repo:"ERNIE-4.5-21B-A3B-PT",paramsB:21,kind:"chat"},{repo:"LFM2-24B-A2B",paramsB:24,kind:"chat"},{repo:"LFM2.5-1.2B-Instruct",paramsB:1.2,kind:"chat"},{repo:"LFM2.5-1.2B-Thinking",paramsB:1.2,kind:"reasoning"},{repo:"NVIDIA-Nemotron-3-Nano-4B",paramsB:4,kind:"chat"},{repo:"Hermes-4-70B",paramsB:70,kind:"chat"},{repo:"Llama-3.1-Tulu-3-8B",paramsB:8,kind:"chat"},{repo:"Meta-Llama-3-70B-Instruct",paramsB:70,kind:"chat"},{repo:"Llama3-ChatQA-1.5-70B",paramsB:70,kind:"chat"},{repo:"Llama-3-Groq-8B-Tool-Use",paramsB:8,kind:"chat"},{repo:"aya-23-8B",paramsB:8,kind:"chat"},{repo:"aya-23-35B",paramsB:35,kind:"chat"},{repo:"SmolLM2-135M-Instruct",paramsB:.135,kind:"chat"},{repo:"Yi-Coder-1.5B",paramsB:1.5,kind:"code"},{repo:"Yi-Coder-9B-Chat",paramsB:9,kind:"code"},{repo:"OpenCoder-1.5B-Instruct",paramsB:1.5,kind:"code"},{repo:"stable-code-instruct-3b",paramsB:3,kind:"code"},{repo:"internlm2-math-plus-7b",paramsB:7,kind:"chat"},{repo:"internlm2-math-plus-20b",paramsB:20,kind:"chat"}],V={Q3_K_L:.55,Q4_K_M:.67,Q6_K:.9,Q8_0:1.13},W=[{id:"nomic-embed-q8",name:"nomic-embed-text-v1.5 (Q8_0)",url:"https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF/resolve/main/nomic-embed-text-v1.5.Q8_0.gguf",params:"137M",quant:"Q8_0",sizeBytes:146e6,kind:"embed",paramsB:.137},...function(){let a=[];for(let d of U){var b,c;let e=d.vendor??"lmstudio-community";for(let f of(b=d.paramsB)<=9?["Q3_K_L","Q4_K_M","Q6_K","Q8_0"]:b<=34?["Q3_K_L","Q4_K_M","Q6_K"]:["Q3_K_L","Q4_K_M"]){let b=`${d.repo}-${f}.gguf`;a.push({id:`${d.repo}-${f}`.toLowerCase().replace(/[^a-z0-9]+/g,"-"),name:`${d.repo} (${f})`,url:`https://huggingface.co/${e}/${d.repo}-GGUF/resolve/main/${b}`,params:(c=d.paramsB)<1?`${Math.round(1e3*c)}M`:`${c}B`,quant:f,sizeBytes:Math.round(1e9*d.paramsB*V[f]),kind:d.kind,paramsB:d.paramsB})}}return a}()];var X=c(20177);let Y=process.env.OLLAMA_URL??"http://127.0.0.1:11434",Z=process.env.LLAMACPP_URL??"http://127.0.0.1:8082",$=process.env.CONSTELLA_EMBED_URL??"http://127.0.0.1:8083",_=null;async function aa(){if(_){let a=u().totalmem()/0x40000000,b=u().freemem()/0x40000000;return{..._,ram:`${a.toFixed(0)} GB \xb7 ${b.toFixed(1)} free`}}let a=u().cpus(),b=(a[0]?.model??"Unknown CPU").replace(/\s+/g," ").trim(),c=a.length,d=u().totalmem()/0x40000000,e=u().freemem()/0x40000000,f=`${d.toFixed(0)} GB \xb7 ${e.toFixed(1)} free`,g=u().platform(),h="—",i="—",j="CPU",k=[];try{let a=(0,w.execSync)("nvidia-smi --query-gpu=name,memory.total --format=csv,noheader,nounits",{timeout:4e3,stdio:["ignore","pipe","ignore"]}).toString().trim();if(a){let[b,c]=a.split("\n")[0].split(",");h=b.trim(),i=`${Math.round(Number(c)/1024)} GB`,j="CUDA",k.push("CUDA")}}catch{}if("CPU"===j&&"darwin"===g){j="Metal",k.push("Metal");let a="Apple Silicon";try{let b=(0,w.execFileSync)("sysctl",["-n","machdep.cpu.brand_string"],{timeout:3e3,stdio:["ignore","pipe","ignore"]}).toString().trim();b&&(a=b)}catch{/apple/i.test(b)&&(a=b)}h=/apple/i.test(a)?`${a} GPU`:"Apple GPU","arm64"===u().arch()&&(i=`${Math.max(1,Math.round(.7*d))} GB unified`)}k.push("arm64"===u().arch()?"NEON":"AVX2");let l="—";try{if("win32"===g){let a=((0,m.r$)()[0]||"C").toUpperCase(),b=/^[A-Z]$/.test(a)?a:"C",c=(0,w.execFileSync)("powershell",["-NoProfile","-Command",`(Get-PSDrive ${b}).Free`],{timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim(),d=Number(c.replace(/[^\d]/g,""));d>0&&(l=`${(d/0x40000000).toFixed(0)} GB`)}else{let a=(0,w.execFileSync)("df",["-h",(0,m.r$)()],{timeout:4e3,stdio:["ignore","pipe","ignore"]}).toString().trim().split("\n"),b=(a[a.length-1]??"").split(/\s+/);b[3]&&(l=b[3])}}catch{}return _={cpu:b,cores:c,ram:f,gpu:h,vram:i,diskFree:l,backend:j,accel:k,recommendedQuant:d>=32?"Q5_K_M":d>=16?"Q4_K_M":"Q4_0",maxParams:d>=64?"70B":d>=32?"34B":d>=16?"13B":"7B"}}async function ab(){try{return(0,w.execSync)("ollama --version",{timeout:3e3,stdio:"ignore"}),!0}catch{return!1}}async function ac(a){let b=await ab(),c=[];if("start"===a){if(!b)return{up:!1,installed:!1,log:["Ollama is not installed — get it at https://ollama.com, then retry."]};if((await af()).up)return{up:!0,installed:b,log:[`server already running on ${Y}`]};try{let a=(0,w.spawn)("ollama",["serve"],{detached:!0,stdio:"ignore"}),d="";a.on("error",a=>{d=String(a instanceof Error?a.message:a)}),a.unref(),c.push("$ ollama serve"),await new Promise(a=>setTimeout(a,2e3));let e=(await af()).up;return d&&c.push("spawn failed: "+d),c.push(e?`✓ ready \xb7 ${Y}`:"still stopped — the port may be busy; run `ollama serve` in a terminal to see the error."),(0,C.revalidatePath)("/models"),{up:e,installed:b,log:c}}catch(a){return{up:!1,installed:b,log:["failed to start: "+String(a instanceof Error?a.message:a)]}}}try{"win32"===u().platform()?(0,w.execSync)("taskkill /IM ollama.exe /F",{stdio:"ignore",timeout:4e3}):(0,w.execSync)("pkill -f 'ollama serve'",{stdio:"ignore",timeout:4e3}),c.push("server stopped")}catch{c.push("no running ollama process found")}return(0,C.revalidatePath)("/models"),{up:!1,installed:b,log:c}}async function ad(){try{let a=await fetch(`${Y}/api/ps`,{signal:AbortSignal.timeout(3e3)});if(!a.ok)return{running:[]};return{running:((await a.json()).models??[]).map(a=>({name:a.name,vram:a.size_vram??0}))}}catch{return{running:[]}}}async function ae(a){try{let b=await fetch(`${Y}/api/generate`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:a,prompt:"",keep_alive:"30m"}),signal:AbortSignal.timeout(12e4)});if(!b.ok)return{ok:!1,error:`Ollama ${b.status}`};return await b.json().catch(()=>({})),(0,C.revalidatePath)("/models"),{ok:!0}}catch(b){let a=String(b instanceof Error?b.message:b);return{ok:!1,error:/abort|fetch failed|ECONN/i.test(a)?"Ollama not running":a}}}async function af(){try{let a=await fetch(`${Y}/api/tags`,{signal:AbortSignal.timeout(3e3)});if(!a.ok)return{up:!1,models:[]};let b=await a.json();return{up:!0,models:(b.models??[]).map(a=>({name:a.name,size:a.size??0}))}}catch{return{up:!1,models:[]}}}async function ag(a){let b=await af(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.workspaceId,a),(0,d.eq)(f.provider.catalogId,"ollama"))),g={status:b.up?"connected":"needs_sync",modelCount:b.models.length,lastSync:b.up?new Date:null};c?await e.db.update(f.provider).set(g).where((0,d.eq)(f.provider.id,c.id)):await e.db.insert(f.provider).values({id:(0,l.randomUUID)(),workspaceId:a,catalogId:"ollama",adapter:"local_ollama",kind:"local",auth:"local",syncStatus:"implemented",...g})}async function ah(a){let{workspace:b}=await (0,D.nP)();if(!a.trim())return{ok:!1,error:"no model name"};try{let c=await fetch(`${Y}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:a.trim(),stream:!1}),signal:AbortSignal.timeout(18e5)});if(!c.ok){let a=await c.text().catch(()=>"");return{ok:!1,error:`Ollama ${c.status}${a?": "+a.slice(0,120):""}`}}let d=await c.json().catch(()=>({}));return await ag(b.id),(0,C.revalidatePath)("/models"),{ok:"success"===d.status||null==d.error,error:d.error}}catch(b){let a=String(b instanceof Error?b.message:b);return{ok:!1,error:/abort|fetch failed|ECONN/i.test(a)?"Ollama not running — start it, then retry.":a}}}async function ai(a){let{workspace:b}=await (0,D.nP)();try{await fetch(`${Y}/api/delete`,{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({name:a})})}catch{}return await ag(b.id),(0,C.revalidatePath)("/models"),{ok:!0}}async function aj(a){let{workspace:b}=await (0,D.nP)(),c=W.find(b=>b.id===a);if(!c)return{ok:!1,error:"unknown model"};let g=(0,z.join)((0,m.r$)(),"models");(0,v.mkdirSync)(g,{recursive:!0});let h=function(a){try{if("win32"===u().platform()){let b=(a[0]||"C").toUpperCase(),c=/^[A-Z]$/.test(b)?b:"C",d=(0,w.execFileSync)("powershell",["-NoProfile","-Command",`(Get-PSDrive ${c}).Free`],{timeout:6e3,stdio:["ignore","pipe","ignore"]}).toString().trim();return Number(d.replace(/[^\d]/g,""))||0}let b=(0,w.execFileSync)("df",["-k",a],{timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim().split("\n"),c=(b[b.length-1]??"").split(/\s+/),d=Number(c[3]);return d?1024*d:0}catch{return 0}}(g);if(h&&c.sizeBytes&&h<1.1*c.sizeBytes)return{ok:!1,error:`not enough free space — need ~${(c.sizeBytes/1e9).toFixed(1)} GB, ${(h/1e9).toFixed(1)} GB free`};let i=c.url.split("/").pop()??`${c.id}.gguf`,j=(0,z.join)(g,i);T.set(a,{received:0,total:0,done:!1});try{if(!(0,v.existsSync)(j)){let b=await fetch(c.url,{signal:AbortSignal.timeout(36e5)});if(!b.ok||!b.body)return T.set(a,{received:0,total:0,done:!0,error:`download failed (${b.status})`}),{ok:!1,error:`download failed (${b.status})`};let d=Number(b.headers.get("content-length"))||c.sizeBytes||0,e=0;T.set(a,{received:0,total:d,done:!1});let f=new A.PassThrough;f.on("data",b=>{e+=b.length;let c=T.get(a);c&&(c.received=e)}),await (0,B.pipeline)(A.Readable.fromWeb(b.body),f,(0,v.createWriteStream)(j));let g=S(j,d);if(!g.ok){try{(0,v.rmSync)(j)}catch{}return T.set(a,{received:e,total:d,done:!0,error:g.message}),{ok:!1,error:g.message}}}if((T.set(a,{received:1,total:1,done:!0}),c.sha256)&&await new Promise((a,b)=>{let c=(0,l.createHash)("sha256");(0,v.createReadStream)(j).on("data",a=>c.update(a)).on("end",()=>a(c.digest("hex"))).on("error",b)})!==c.sha256)return{ok:!1,error:"SHA-256 mismatch — file corrupt"};let g=(0,v.statSync)(j).size,[h]=await e.db.select().from(f.localModel).where((0,d.eq)(f.localModel.file,j));return h||await e.db.insert(f.localModel).values({id:(0,l.randomUUID)(),workspaceId:b.id,name:c.name,file:j,quant:c.quant,params:c.params,sizeBytes:g,sha256:c.sha256??"",bind:"127.0.0.1:8082"}),/embed|nomic|bge|mxbai|gte/i.test(c.name)&&az().catch(()=>{}),(0,C.revalidatePath)("/models"),{ok:!0,path:j}}catch(d){let b=String(d instanceof Error?d.message:d),c=T.get(a);return T.set(a,{received:c?.received??0,total:c?.total??0,done:!0,error:b}),{ok:!1,error:b}}}async function ak(a){return T.get(a)??null}async function al(a){await (0,D.nP)();let[b]=await e.db.select().from(f.localModel).where((0,d.eq)(f.localModel.id,a));if(!b)return{ok:!1,error:"model not found"};try{b.file&&(0,v.existsSync)(b.file)&&(0,v.rmSync)(b.file,{force:!0})}catch{}return await e.db.delete(f.localModel).where((0,d.eq)(f.localModel.file,b.file)),(0,C.revalidatePath)("/models"),{ok:!0}}function am(){return(0,z.join)((0,m.r$)(),"bin","llama")}function an(){try{let a=(0,z.join)(am(),"INSTALLED");if(!(0,v.existsSync)(a))return null;let b=(0,v.readFileSync)(a,"utf8").trim();return b&&(0,v.existsSync)(b)?b:null}catch{return null}}async function ao(a,b,c,d){let e=/\.(tar\.gz|tgz)$/i.test(b),f=(0,z.join)(c,b.replace(/[^\w.\-]+/g,"_"));(0,v.mkdirSync)(c,{recursive:!0});let g=await fetch(a,{signal:AbortSignal.timeout(18e5)});if(!g.ok||!g.body)return d&&T.set(d,{received:0,total:0,done:!0,error:`download failed (${g.status})`}),`download failed (${g.status})`;let h=Number(g.headers.get("content-length"))||0,i=A.Readable.fromWeb(g.body);if(d){let a=0;T.set(d,{received:0,total:h,done:!1});let b=new A.PassThrough;b.on("data",b=>{a+=b.length;let c=T.get(d);c&&(c.received=a)}),await (0,B.pipeline)(i,b,(0,v.createWriteStream)(f))}else await (0,B.pipeline)(i,(0,v.createWriteStream)(f));let j=S(f,h);if(!j.ok){try{(0,v.rmSync)(f)}catch{}return j.message}e?(0,w.execFileSync)("tar",["-xzf",f,"-C",c],{stdio:"ignore",timeout:12e4}):new(y())(f).extractAllTo(c,!0);try{(0,v.rmSync)(f)}catch{}return null}async function ap(){try{let a=await fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest",{headers:{"User-Agent":"constella",Accept:"application/vnd.github+json"},signal:AbortSignal.timeout(15e3)});if(!a.ok)return null;return(await a.json()).assets??[]}catch{return null}}let aq=!1;async function ar(a=!1){let b;if("win32"!==u().platform())return{ok:!0,fetched:!1};let c=am();try{b=(0,v.readdirSync)(c)}catch{return{ok:!1,fetched:!1,reason:"no llama dir"}}let d=b.some(a=>/^ggml-cuda\.dll$/i.test(a)),e=b.some(a=>/^cudart64_\d+\.dll$/i.test(a));if(!d||e)return{ok:e||!d,fetched:!1};if(aq&&!a)return{ok:!1,fetched:!1,reason:"already attempted this run"};aq=!0;let f="12";try{let a=(0,v.readFileSync)((0,z.join)(c,"ggml-cuda.dll")).toString("latin1").match(/cudart64_(\d+)\.dll/i);a&&(f=a[1])}catch{}let g=await ap();if(!g)return{ok:!1,fetched:!1,reason:"GitHub unreachable"};let h=g.filter(a=>/cudart/i.test(a.name)&&/x64|amd64/i.test(a.name)),i=h.find(a=>RegExp(`cuda-${f}\\.`,"i").test(a.name))??h[0];if(!i)return{ok:!1,fetched:!1,reason:"no cudart asset in the latest release"};let j=await ao(i.browser_download_url,i.name,c).catch(a=>String(a instanceof Error?a.message:a));if(j)return{ok:!1,fetched:!1,reason:j};let k=!1;try{k=(0,v.readdirSync)(c).some(a=>/^cudart64_\d+\.dll$/i.test(a))}catch{}return{ok:k,fetched:k}}async function as(){let a;await (0,D.nP)();let b=[];if(an()||await at()){let a=await ar(!0).catch(()=>null);return{ok:!0,installed:!0,log:["llama-server already installed.",...a?.fetched?["✓ fetched the CUDA runtime DLLs — GPU enabled."]:a&&!a.ok?[`⚠ CUDA runtime still missing (${a.reason??"unknown"}).`]:[]]}}let c=await aa(),d=/cuda|nvidia/i.test(c.backend)||(c.accel??[]).some(a=>/cuda|nvidia/i.test(a));b.push(`platform ${u().platform()}/${u().arch()} \xb7 backend ${c.backend} → ${d?"CUDA":"CPU"} build`);try{let c=await fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest",{headers:{"User-Agent":"constella",Accept:"application/vnd.github+json"},signal:AbortSignal.timeout(15e3)});if(!c.ok)return{ok:!1,installed:!1,log:b,error:403===c.status?"GitHub API rate-limited — try again later or install manually from the releases page.":`GitHub releases API ${c.status}`};a=(await c.json()).assets??[]}catch(a){return{ok:!1,installed:!1,log:b,error:"couldn't reach GitHub: "+String(a instanceof Error?a.message:a)}}let e=function(a,b){let c=u().platform(),d="win32"===c?/win/i:"darwin"===c?/macos/i:/(ubuntu|linux)/i,e="arm64"===u().arch(),f=a.filter(a=>/\.(zip|tar\.gz|tgz)$/i.test(a.name)&&d.test(a.name));e||(f=f.filter(a=>!/arm64|aarch64/i.test(a.name)));let g=/cuda|hip|vulkan|sycl|kompute|musa|cann|adreno/i,h=a=>{if(!a.length)return null;let b=e?a.filter(a=>/arm64|aarch64/i.test(a.name)):a.filter(a=>/x64|amd64/i.test(a.name)),c=(b.length?b:a).sort((a,b)=>a.name.length-b.name.length)[0];return c?{name:c.name,url:c.browser_download_url}:null};if(b){let a=f.filter(a=>/cuda/i.test(a.name));if(a.length)return h(a)}let i=f.filter(a=>!g.test(a.name));return h(i.length?i:f)}(a,!!d);if(!e)return{ok:!1,installed:!1,log:b,error:"no matching prebuilt for this platform — install manually from the releases page."};b.push(`downloading ${e.name}…`);let f=am();(0,v.mkdirSync)(f,{recursive:!0}),T.set("llama-server",{received:0,total:0,done:!1});try{let a=await ao(e.url,e.name,f,"llama-server");if(a)return T.set("llama-server",{received:0,total:0,done:!0,error:a}),{ok:!1,installed:!1,log:b,error:a};if(d){let a=await ar(!0);b.push(a.ok?a.fetched?"✓ CUDA runtime DLLs installed — GPU enabled.":"CUDA runtime already present.":`⚠ CUDA runtime not installed (${a.reason??"unknown"}) — runs on CPU; retries on next Start/Install.`)}}catch(a){return{ok:!1,installed:!1,log:b,error:"download/extract failed: "+String(a instanceof Error?a.message:a)}}let g=function a(b,c,d){let e;if(d<0)return null;try{e=(0,v.readdirSync)(b,{withFileTypes:!0})}catch{return null}for(let a of e)if(a.isFile()&&a.name===c)return(0,z.join)(b,a.name);for(let f of e)if(f.isDirectory()){let e=a((0,z.join)(b,f.name),c,d-1);if(e)return e}return null}(f,"win32"===u().platform()?"llama-server.exe":"llama-server",5);if(!g)return{ok:!1,installed:!1,log:b,error:"downloaded, but llama-server wasn't found in the archive."};if("win32"!==u().platform())try{(0,v.chmodSync)(g,493)}catch{}return(0,v.writeFileSync)((0,z.join)(f,"INSTALLED"),g,"utf8"),T.set("llama-server",{received:1,total:1,done:!0}),b.push(`✓ installed → ${g}`),await aE().catch(()=>{}),(0,C.revalidatePath)("/models"),{ok:!0,installed:!0,path:g,log:b}}async function at(){if(an())return!0;try{return(0,w.execSync)("llama-server --version",{timeout:3e3,stdio:"ignore"}),!0}catch{return!1}}async function au(){try{let a=await fetch(`${Z}/v1/models`,{signal:AbortSignal.timeout(2500)});if(!a.ok)return{up:!1,model:null};let b=await a.json(),c=b.data?.[0]?.id;return{up:!0,model:c?c.split(/[\\/]/).pop()??c:null}}catch{return{up:!1,model:null}}}async function av(a){try{var b;let c,d=await aa();if(!/cuda|metal/i.test(d.backend))return[];let e=(b=d.vram,(c=/([\d.]+)\s*GB/i.exec(b||""))?1e9*parseFloat(c[1]):0);if(a&&e&&1.15*a>e)return[];return["-ngl","99"]}catch{return[]}}function aw(){try{let a=e.db.select({file:f.localModel.file,name:f.localModel.name}).from(f.localModel).all().find(a=>/embed|nomic|bge|mxbai|gte/i.test(a.name)&&a.file&&(0,v.existsSync)(a.file));return a?{file:a.file,name:a.name}:null}catch{return null}}function ax(){try{let a=e.db.select({file:f.localModel.file,name:f.localModel.name,sizeBytes:f.localModel.sizeBytes}).from(f.localModel).all().find(a=>!/embed|nomic|bge|mxbai|gte/i.test(a.name)&&a.file&&(0,v.existsSync)(a.file));return a?{file:a.file,name:a.name,sizeBytes:a.sizeBytes}:null}catch{return null}}async function ay(){try{return(await fetch(`${$}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}async function az(){if(await ay())return{up:!0};let a=an();if(!a)return{up:!1,reason:"llama-server not installed"};let b=aw();if(!b)return{up:!1,reason:"no embedding model installed (download nomic-embed-text)"};try{await ar().catch(()=>{});let c=await av(),d=(0,w.spawn)(a,["-m",b.file,"--embeddings","--host","127.0.0.1","--port","8083","-c","2048","--pooling","mean",...c],{detached:!0,stdio:"ignore"});d.on("error",()=>{}),d.unref()}catch(a){return{up:!1,reason:"spawn failed: "+String(a instanceof Error?a.message:a)}}for(let a=0;a<24;a++)if(await new Promise(a=>setTimeout(a,500)),await ay())return{up:!0,model:b.name};return{up:!1,reason:"embedding server didn't come up in time"}}async function aA(){if((await au()).up)return{up:!0};let a=an();if(!a)return{up:!1,reason:"llama-server not installed"};let b=ax();if(!b)return{up:!1,reason:"no chat GGUF installed"};try{await ar().catch(()=>{});let c=await av(b.sizeBytes),d=(0,w.spawn)(a,["-m",b.file,"--host","127.0.0.1","--port","8082","-c","4096",...c],{detached:!0,stdio:"ignore"});d.on("error",()=>{}),d.unref()}catch(a){return{up:!1,reason:"spawn failed: "+String(a instanceof Error?a.message:a)}}for(let a=0;a<24;a++)if(await new Promise(a=>setTimeout(a,500)),(await au()).up)return{up:!0,model:b.name};return{up:!1,reason:"llama server didn't come up in time"}}async function aB(){let a=aw();return{up:await ay(),model:a?.name??null,installed:!!a}}async function aC(){let a=await az();return(0,C.revalidatePath)("/models"),a}async function aD(){let{org:a}=await (0,D.nP)();await az().catch(()=>{});let b=await N(a.id);return(0,C.revalidatePath)("/models"),b}async function aE(){let{workspace:a}=await (0,D.nP)(),b=await au(),c=new Set((await e.db.select({file:f.localModel.file}).from(f.localModel)).map(a=>a.file)).size,g={status:b.up?"connected":"needs_sync",modelCount:c,lastSync:b.up?new Date:null},[h]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.workspaceId,a.id),(0,d.eq)(f.provider.catalogId,"llamacpp")));return h?await e.db.update(f.provider).set(g).where((0,d.eq)(f.provider.id,h.id)):await e.db.insert(f.provider).values({id:(0,l.randomUUID)(),workspaceId:a.id,catalogId:"llamacpp",adapter:"local_llamacpp",kind:"local",auth:"local",syncStatus:"implemented",...g}),(0,C.revalidatePath)("/models"),{ok:!0}}async function aF(a){let b;await (0,D.nP)();let c=await at(),g=[];if(!c)return{up:!1,installed:!1,log:["llama-server not found — install llama.cpp from https://github.com/ggml-org/llama.cpp/releases (or `brew install llama.cpp`), then retry."]};if((await au()).up)return{up:!0,installed:c,log:[`server already running on ${Z}`]};let h=0;if(a){let g,[i]=await e.db.select().from(f.localModel).where((0,d.eq)(f.localModel.id,a));if(i&&(g=i.name,/embed|nomic|bge|mxbai|gte/i.test(g))){let a=await az();return{up:a.up,installed:c,log:[`${i.name} is an EMBEDDING model — started the RAG embedding server on :8083 (it can't power chat on :8082).`,a.up?`✓ embeddings ready \xb7 ${$}`:`embeddings: ${a.reason??"failed to start"}`]}}b=i?.file,h=i?.sizeBytes??0}if(!b){let a=ax();b=a?.file,h=a?.sizeBytes??0}if(!b||!(0,v.existsSync)(b)){let a=aw();if(a){let b=await az();return{up:!1,installed:c,log:[`Your only local model (${a.name}) is an EMBEDDING model — it powers RAG on the embeddings server (${$}), not the chat server.`,b.up?"✓ embeddings server is running.":`embeddings: ${b.reason??"not started"}`,"Download a chat/instruct GGUF (e.g. Qwen, Llama) below to run the chat server on :8082."]}}return{up:!1,installed:c,log:["no GGUF model on disk — download one below first."]}}try{let a=an()??"llama-server";await ar().catch(()=>{});let d=await av(h),e=(0,w.spawn)(a,["-m",b,"--host","127.0.0.1","--port","8082","-c","4096",...d],{detached:!0,stdio:"ignore"}),f="";e.on("error",a=>{f=String(a instanceof Error?a.message:a)}),e.unref(),g.push(`$ llama-server -m ${b.split(/[\\/]/).pop()} --port 8082${d.length?" -ngl 99 (GPU)":" (CPU)"}`);let i=!1;for(let a=0;a<12&&!i;a++)await new Promise(a=>setTimeout(a,1e3)),i=(await au()).up;return f&&g.push("spawn failed: "+f),g.push(i?`✓ ready \xb7 ${Z}`:"still starting — large models take longer; run llama-server in a terminal to see progress."),await aE(),(0,C.revalidatePath)("/models"),{up:i,installed:c,log:g}}catch(a){return{up:!1,installed:c,log:["failed to start: "+String(a instanceof Error?a.message:a)]}}}async function aG(){let a=await at(),b=[];try{if("win32"===u().platform()){let a=(0,w.execSync)('powershell -NoProfile -Command "Get-NetTCPConnection -LocalPort 8082 -State Listen -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess"',{timeout:5e3}).toString().split(/\r?\n/).map(a=>a.trim()).filter(Boolean);if(!a.length)throw Error("not running");for(let b of a)(0,w.execSync)(`taskkill /PID ${b} /F`,{stdio:"ignore",timeout:4e3})}else(0,w.execSync)("pkill -f -- 'llama-server.*--port 8082'",{stdio:"ignore",timeout:4e3});b.push("server stopped")}catch{b.push("no running chat llama-server process found")}return await aE(),(0,C.revalidatePath)("/models"),{up:!1,installed:a,log:b}}(0,X.D)([aa,ab,ac,ad,ae,af,ah,ai,aj,ak,al,as,at,au,ay,az,aA,aB,aC,aD,aE,aF,aG]),(0,s.A)(aa,"009eccdbd8ee7a12c8c5e6037c44c345427e77b857",null),(0,s.A)(ab,"00a6f8a866f9d7671e3850d3f25187395d1cdeef6c",null),(0,s.A)(ac,"408f1d4455ce3aba293795b4205968081c64a31dce",null),(0,s.A)(ad,"00c4c4eb1e48dec672a116fcc1a525cc89f93ce44a",null),(0,s.A)(ae,"408ca376cae089a7b61c971452b2619f47a766ebf3",null),(0,s.A)(af,"001209f45784c2ad06e7af535a2eac7c54a348e8f4",null),(0,s.A)(ah,"40b4709d31000ddc40083f5c93c24fba0dc2fade4a",null),(0,s.A)(ai,"406e2a7a9982a456863c1e9d1a651469a3b7df11b1",null),(0,s.A)(aj,"40af259b251b9d975acd90fdb75b938a85dd092e12",null),(0,s.A)(ak,"407a1b7df649692a474e0c68f65bc272c42a31e5f1",null),(0,s.A)(al,"40cabe95a8cb363461cae6a250b92ca613290d53de",null),(0,s.A)(as,"0021e4c685125ffac4b144dc6d4c81dd3710661180",null),(0,s.A)(at,"00a35d54388a0f4a02e750cc6144dd2ff12b2f55f9",null),(0,s.A)(au,"00152b4edc4d7287b8af6b7a64c52896a52497a467",null),(0,s.A)(ay,"00d9f17839436d5ce775bdcf057d58742c95ef1d99",null),(0,s.A)(az,"00ee3a6f6ac49f05a24cc2c024cf81881ac059825e",null),(0,s.A)(aA,"00c089367da43f93c202a5deebfce0323413bced96",null),(0,s.A)(aB,"0052f12c8c8995e5610d5bc601e7e7e61eccfe5207",null),(0,s.A)(aC,"00567203161585d4795d3ba48ec22910e28af6c836",null),(0,s.A)(aD,"00df413d04089d5ba64dd89b76832c0a5ea513d3da",null),(0,s.A)(aE,"003178c62a94d30782b97e6a7d13969b487c64c957",null),(0,s.A)(aF,"402dd1332ea659aac5210dbf48806895a62c99cbbf",null),(0,s.A)(aG,"009cb0b2d8ee90b44d1c3bb6e87e8750425adc0760",null);var aH=c(48810);let aI={anthropic:"anthropic",openai:"openai",google_gemini:"google",xai_grok:"xai",deepseek:"deepseek",cohere:"cohere",groq:"groq",nvidia_nim:"nvidia",together:"togetherai",fireworks:"fireworks-ai",cerebras:"cerebras",perplexity:"perplexity",openrouter:"openrouter",mistral:"mistral",moonshot:"moonshotai",dashscope:"alibaba",zhipu:"zhipuai",azure_openai:"azure",aws_bedrock:"amazon-bedrock",vertex_ai:"google-vertex",claude_code:"anthropic",gemini_cli:"google",codex_cli:"openai"};function aJ(a){return aI[a]?aI[a]:a.replace(/_(grok|gemini|nim|cli|openai|api|server|rt)$/g,"").replace(/_/g,"-")}let aK={anthropic:["sonnet-4","sonnet","opus-4","opus"],openai:["gpt-5.2","gpt-5.1","gpt-5","gpt-4.1","o4"],google:["gemini-3-pro","gemini-3","gemini-2.5-pro","pro"],xai:["grok-4","grok-3","grok"],groq:["llama-4","llama-3.3","llama-3.1"],deepseek:["deepseek-chat","deepseek-v3","deepseek-reasoner"],mistral:["mistral-large","mistral-medium"],openrouter:["claude-sonnet","gpt-5","gemini"]},aL=(a,b,c,d,e,f,g,h)=>({id:a,name:b,context:c,outputLimit:d,inputCost:e,outputCost:f,caps:{reasoning:!!g.reasoning,tools:!!g.tools,vision:!!g.vision},released:h}),aM={anthropic:[aL("claude-opus-4-8","Claude Opus 4.8",1e6,64e3,5,25,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),aL("claude-opus-4-7","Claude Opus 4.7",1e6,64e3,5,25,{reasoning:!0,tools:!0,vision:!0},"2025-12-01"),aL("claude-sonnet-4-6","Claude Sonnet 4.6",1e6,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2026-01-15"),aL("claude-haiku-4-5","Claude Haiku 4.5",2e5,32e3,1,5,{tools:!0,vision:!0},"2025-10-01")],openai:[aL("gpt-5.2","GPT-5.2",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2026-03-01"),aL("gpt-5.1","GPT-5.1",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-12-01"),aL("gpt-5","GPT-5",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-08-01"),aL("o4-mini","o4-mini",2e5,1e5,1.1,4.4,{reasoning:!0,tools:!0},"2025-04-01")],google:[aL("gemini-3-pro","Gemini 3 Pro",2e6,64e3,2,12,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),aL("gemini-3-flash","Gemini 3 Flash",1e6,64e3,.3,2.5,{tools:!0,vision:!0},"2026-02-01"),aL("gemini-2.5-pro","Gemini 2.5 Pro",2e6,64e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-06-01")],xai:[aL("grok-4.3","Grok 4.3",256e3,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),aL("grok-4","Grok 4",256e3,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2025-09-01"),aL("grok-3","Grok 3",131072,32e3,3,15,{tools:!0,vision:!0},"2025-02-01")],deepseek:[aL("deepseek-chat","DeepSeek Chat",128e3,8e3,.27,1.1,{tools:!0},"2025-12-01"),aL("deepseek-reasoner","DeepSeek Reasoner",128e3,64e3,.55,2.19,{reasoning:!0,tools:!0},"2025-12-01")],groq:[aL("llama-4-scout","Llama 4 Scout",131072,8e3,.11,.34,{tools:!0,vision:!0},"2025-04-01"),aL("llama-3.3-70b","Llama 3.3 70B",131072,32e3,.59,.79,{tools:!0},"2024-12-01")]},aN=null;function aO(){return(0,z.join)((0,m.r$)(),"cache","models-dev.json")}async function aP(){try{let a=await fetch("https://models.dev/api.json",{signal:AbortSignal.timeout(1e4),headers:{accept:"application/json"}});if(!a.ok)return null;let b=await a.json();if(!b||"object"!=typeof b)return null;let c={};for(let[a,d]of Object.entries(b)){let b=d?.models,e=function(a){if(!a||"object"!=typeof a)return[];let b=[];for(let[c,d]of Object.entries(a)){let a=d??{},e=String(a.id??c),f=e.includes("/")?e.split("/").pop():e;if(!f)continue;let g=a.modalities??{},h=Array.isArray(g.input)?g.input:[],i=a.limit??{},j=a.cost??{},k={reasoning:!0===a.reasoning,tools:!0===a.tool_call,vision:!0===a.attachment||h.includes("image")};b.push({id:f,name:String(a.name??f),context:Number(i.context??0)||0,outputLimit:Number(i.output??0)||0,inputCost:Number(j.input??0)||0,outputCost:Number(j.output??0)||0,caps:k,released:"string"==typeof a.release_date?a.release_date:""})}return b}(b);e.length&&(c[a]=e)}return Object.keys(c).length?c:null}catch{return null}}async function aQ(){if(aN&&Date.now()-aN.at<864e5)return aN.data;let a=function(){try{let a=aO();if(!(0,v.existsSync)(a))return null;let b=JSON.parse((0,v.readFileSync)(a,"utf8"));if(!b?.data||"object"!=typeof b.data)return null;return{at:Number(b.at??(0,v.statSync)(a).mtimeMs),data:b.data}}catch{return null}}();if(a&&Date.now()-a.at<864e5)return aN=a,a.data;let b=await aP();if(b){aN={at:Date.now(),data:b};try{(0,v.mkdirSync)((0,z.join)((0,m.r$)(),"cache"),{recursive:!0}),(0,v.writeFileSync)(aO(),JSON.stringify({at:Date.now(),data:b}),"utf8")}catch{}return b}return a?(aN=a,a.data):{}}async function aR(){return Object.keys(await aQ()).length}async function aS(a){let b=aJ(a),c=await aQ();return c[b]?.length?c[b]:aM[b]??[]}async function aT(a,b,c=9e3){try{let d=await fetch(a,{headers:b,signal:AbortSignal.timeout(c)});if(!d.ok)return null;return await d.json()}catch{return null}}async function aU(a){let{catalogId:b,adapter:c,baseUrl:d,apiKey:e}=a;if(c.startsWith("cli_"))return"cli_opencode"===c?(await (0,aH.ZB)("opencode")).map(a=>({id:a})):"cli_aider"===c?(await (0,aH.ZB)("aider")).map(a=>({id:a})):null;if(/ollama/i.test(b)||c.includes("ollama")){let a=(d||"http://127.0.0.1:11434").replace(/\/$/,"").replace(/\/v1$/,""),b=await aT(`${a}/api/tags`,{});return b?(b.models??[]).map(a=>({id:String(a.name??"")})).filter(a=>a.id):[]}if(!d)return null;let f=d.replace(/\/$/,""),g="http_anthropic"===c||"anthropic"===b,h=g?"https://api.anthropic.com/v1/models":f.endsWith("/models")?f:f+(f.includes("/v1")?"/models":"/v1/models"),i=g?e?{"x-api-key":e,"anthropic-version":"2023-06-01"}:{}:e?{authorization:`Bearer ${e}`}:{},j=await aT(h,i);return j?(Array.isArray(j.data)?j.data:Array.isArray(j.models)?j.models:[]).map(a=>{let b=String(a.id??a.name??"");if(!b)return null;let c={id:b};"string"==typeof a.display_name?c.name=a.display_name:"string"==typeof a.name&&(c.name=a.name),"number"==typeof a.context_length&&(c.context=a.context_length);let d=a.pricing;if(d){let a=Number(d.prompt),b=Number(d.completion);Number.isFinite(a)&&a>0&&(c.inputCost=1e6*a),Number.isFinite(b)&&b>0&&(c.outputCost=1e6*b)}return c}).filter(a=>!!a).slice(0,200):[]}async function aV(){let a=await aQ(),b=new Map;for(let c of Object.values(a))for(let a of c){let c=a.id.toLowerCase();b.has(c)||b.set(c,a)}return b}async function aW(a,b){let c=await aS(a);if(!b||0===b.length)return c;let d=new Map;for(let a of c)d.set(a.id.toLowerCase(),a);let e=await aV(),f=a=>{let b=a.toLowerCase(),c=a.includes("/")?a.split("/").pop().toLowerCase():b;return d.get(b)??d.get(c)??e.get(b)??e.get(c)},g=[];for(let a of b){let b=f(a.id);g.push({id:a.id,name:a.name||b?.name||a.id,context:a.context??b?.context??0,outputLimit:b?.outputLimit??0,inputCost:a.inputCost??b?.inputCost??0,outputCost:a.outputCost??b?.outputCost??0,caps:b?.caps??{reasoning:!1,tools:!1,vision:!1},released:b?.released??""})}return g}var aX=c(41665);let aY=Object.fromEntries([{id:"anthropic",displayName:"Anthropic",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_anthropic",baseUrl:"https://api.anthropic.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Claude family. Model list mapped from provider capabilities."},{id:"openai",displayName:"OpenAI",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_openai",baseUrl:"https://api.openai.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"GPT-4o/o-series + DALL\xb7E + Whisper."},{id:"google_gemini",displayName:"Google AI / Gemini",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_google",baseUrl:"https://generativelanguage.googleapis.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Gemini 1.5/2.x via AI Studio API key."},{id:"xai_grok",displayName:"xAI / Grok",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_xai",baseUrl:"https://api.x.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"OpenAI-compatible REST. Grok-2/3."},{id:"deepseek",displayName:"DeepSeek",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_deepseek",baseUrl:"https://api.deepseek.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"deepseek-chat / deepseek-reasoner."},{id:"cohere",displayName:"Cohere",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_cohere",baseUrl:"https://api.cohere.com/v2",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Command R/R+ and strong rerank/embeddings."},{id:"ai21",displayName:"AI21",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_ai21",baseUrl:"https://api.ai21.com/studio/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"perplexity",displayName:"Perplexity",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_perplexity",baseUrl:"https://api.perplexity.ai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"groq",displayName:"Groq",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_groq",baseUrl:"https://api.groq.com/openai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Ultra-low-latency LPU inference, OpenAI-compatible."},{id:"nvidia_nim",displayName:"NVIDIA / NIM",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_nvidia",baseUrl:"https://integrate.api.nvidia.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"NIM microservices, OpenAI-compatible."},{id:"together",displayName:"Together AI",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_together",baseUrl:"https://api.together.xyz/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available"},{id:"fireworks",displayName:"Fireworks AI",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_fireworks",baseUrl:"https://api.fireworks.ai/inference/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available"},{id:"cerebras",displayName:"Cerebras",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_cerebras",baseUrl:"https://api.cerebras.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"available",notes:"Wafer-scale fast inference."},{id:"huggingface",displayName:"Hugging Face",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_hf",baseUrl:"https://api-inference.huggingface.co",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"replicate",displayName:"Replicate",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_replicate",baseUrl:"https://api.replicate.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"anyscale",displayName:"Anyscale",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_anyscale",baseUrl:"https://api.endpoints.anyscale.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Endpoints product changing — adapter pending."},{id:"databricks",displayName:"Databricks",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_databricks",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"requires_setup"},{id:"stability",displayName:"Stability AI",category:"image",connectionTypes:["api_key"],defaultAdapter:"http_stability",baseUrl:"https://api.stability.ai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"elevenlabs",displayName:"ElevenLabs",category:"audio",connectionTypes:["api_key"],defaultAdapter:"http_elevenlabs",baseUrl:"https://api.elevenlabs.io/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"available",notes:"TTS / voice."},{id:"voyage",displayName:"Voyage AI",category:"embedding",connectionTypes:["api_key"],defaultAdapter:"http_voyage",baseUrl:"https://api.voyageai.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"jina",displayName:"Jina AI",category:"embedding",connectionTypes:["api_key"],defaultAdapter:"http_jina",baseUrl:"https://api.jina.ai/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"runpod",displayName:"RunPod",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_runpod",baseUrl:"https://api.runpod.ai/v2",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"lambda",displayName:"Lambda Labs",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_lambda",baseUrl:"https://api.lambdalabs.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"modal",displayName:"Modal",category:"cloud_api",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"http_modal",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"baseten",displayName:"Baseten",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_baseten",baseUrl:"https://inference.baseten.co/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"openrouter",displayName:"OpenRouter",category:"router",connectionTypes:["api_key","oauth"],defaultAdapter:"http_openrouter",baseUrl:"https://openrouter.ai/api/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Aggregates 300+ models across providers — full live list."},{id:"omnirouter",displayName:"OmniRouter",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_omnirouter",baseUrl:"https://api.omnirouter.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental",notes:"OpenAI-compatible multi-provider router."},{id:"litellm",displayName:"LiteLLM",category:"openai_compatible",connectionTypes:["api_key","openai_compatible","custom_endpoint"],defaultAdapter:"http_litellm",baseUrl:"http://localhost:4000",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Self-hosted proxy; unifies 100+ providers."},{id:"portkey",displayName:"Portkey",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_portkey",baseUrl:"https://api.portkey.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Gateway with virtual keys."},{id:"helicone",displayName:"Helicone",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_helicone",baseUrl:"https://oai.helicone.ai/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental",notes:"Observability proxy in front of OpenAI-compatible providers."},{id:"openai_compatible",displayName:"OpenAI-compatible endpoint",category:"openai_compatible",connectionTypes:["openai_compatible","api_key","custom_endpoint"],defaultAdapter:"http_openai_compat",baseUrl:"https://",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Any server exposing /v1/chat/completions + /v1/models."},{id:"lmstudio_server",displayName:"LM Studio (OpenAI server)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:1234/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"Local OpenAI-compatible server from LM Studio."},{id:"ollama_openai",displayName:"Ollama (OpenAI endpoint)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:11434/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Ollama's OpenAI-compatible surface."},{id:"vllm_server",displayName:"vLLM (OpenAI server)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8000/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"High-throughput self-hosted serving."},{id:"tgi",displayName:"Text Generation Inference",category:"openai_compatible",connectionTypes:["openai_compatible","local","custom_endpoint"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8080/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental",notes:"HF TGI with OpenAI route."},{id:"localai",displayName:"LocalAI",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8080/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"Drop-in OpenAI replacement, fully local."},{id:"azure_openai",displayName:"Azure OpenAI",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_azure_openai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"requires_setup"},{id:"aws_bedrock",displayName:"AWS Bedrock",category:"cloud_platform",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"sdk_bedrock",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"requires_setup",notes:"SigV4 auth; multi-vendor models."},{id:"vertex_ai",displayName:"Google Vertex AI",category:"cloud_platform",connectionTypes:["oauth","api_key"],defaultAdapter:"sdk_vertex",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"requires_setup",notes:"GCP service-account / ADC."},{id:"cloudflare",displayName:"Cloudflare Workers AI",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_cloudflare",baseUrl:"https://api.cloudflare.com/client/v4",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"oci_genai",displayName:"Oracle OCI Generative AI",category:"cloud_platform",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"sdk_oci",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"OCI SDK signing — adapter pending."},{id:"watsonx",displayName:"IBM watsonx",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_watsonx",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"requires_setup"},{id:"dashscope",displayName:"Alibaba DashScope / Qwen",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_dashscope",baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"experimental",notes:"Qwen models, OpenAI-compatible mode."},{id:"qianfan",displayName:"Baidu Qianfan",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_qianfan",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"planned",notes:"ERNIE; access-token auth — adapter pending."},{id:"hunyuan",displayName:"Tencent Hunyuan",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_hunyuan",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"TC3-HMAC signing — adapter pending."},{id:"zhipu",displayName:"Zhipu AI (GLM)",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_zhipu",baseUrl:"https://open.bigmodel.cn/api/paas/v4",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"experimental"},{id:"moonshot",displayName:"Moonshot AI / Kimi",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_moonshot",baseUrl:"https://api.moonshot.cn/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenAI-compatible; long context."},{id:"minimax",displayName:"MiniMax",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_minimax",baseUrl:"https://api.minimax.chat/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Group-id + key auth — adapter pending."},{id:"ollama",displayName:"Ollama",category:"local_runtime",connectionTypes:["local","cli"],defaultAdapter:"local_ollama",baseUrl:"http://localhost:11434",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"Pulls + serves local models; live /api/tags list."},{id:"llamacpp",displayName:"llama.cpp",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_llamacpp",baseUrl:"http://127.0.0.1:8082",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"GGUF models, SHA-256 verified, bound to 127.0.0.1."},{id:"lmstudio",displayName:"LM Studio",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_lmstudio",baseUrl:"http://localhost:1234",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsVision:!0,status:"available",notes:"Desktop runtime + local server."},{id:"vllm",displayName:"vLLM",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_vllm",baseUrl:"http://localhost:8000",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"GPU serving engine."},{id:"localai_rt",displayName:"LocalAI",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_localai",baseUrl:"http://localhost:8080",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available"},{id:"gpt4all",displayName:"GPT4All",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_gpt4all",baseUrl:"http://localhost:4891/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"koboldcpp",displayName:"KoboldCpp",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_kobold",baseUrl:"http://localhost:5001",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"jan",displayName:"Jan",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_jan",baseUrl:"http://localhost:1337/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"anythingllm",displayName:"AnythingLLM (local)",category:"local_runtime",connectionTypes:["local","api_key"],defaultAdapter:"local_anythingllm",baseUrl:"http://localhost:3001/api",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Workspace API — adapter pending."},{id:"openwebui",displayName:"Open WebUI (backend)",category:"local_runtime",connectionTypes:["local","openai_compatible"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:3000/api",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"claude_code",displayName:"Claude Code",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_claude_code",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"available",notes:"Drives the local Claude Code CLI / agent."},{id:"codex_cli",displayName:"Codex CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_codex",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenAI Codex CLI agent."},{id:"openclaw",displayName:"OpenClaw",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_openclaw",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenClaw CLI — headless `openclaw infer model run --json` (provider-routed). No token/cost reported."},{id:"hermes_cli",displayName:"Hermes (Nous Research)",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_hermes",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Hermes agent CLI — headless `hermes -z`. Configure providers via `hermes model`."},{id:"gemini_cli",displayName:"Gemini CLI",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_gemini",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"experimental"},{id:"aider",displayName:"Aider",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_aider",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `aider --message --yes-always`; provider-routed via its own env keys. Model list from `aider --list-models`. No token/cost reported."},{id:"opencode",displayName:"OpenCode",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_opencode",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `opencode run`; providers via `opencode auth login`. Model list from `opencode models`. No token/cost reported."},{id:"copilot_cli",displayName:"GitHub Copilot CLI",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_copilot",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"experimental",notes:"Headless `copilot -p --allow-all-tools`; sign in with the Copilot CLI. No token/cost reported."},{id:"cursor_cli",displayName:"Cursor CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_cursor",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `cursor-agent -p --output-format json`; sign in via `cursor-agent login`. `-p` can hang → bounded timeout. No token/cost reported."},{id:"cline_cli",displayName:"Cline CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_cline",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `cline --json -y`; provider-routed via its own config. No token/cost reported."},{id:"kilo_code",displayName:"Kilo Code CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_kilo",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `kilocode --yes`; provider-routed via its own config. No token/cost reported."},{id:"openai_cli",displayName:"OpenAI CLI",category:"cli",connectionTypes:["cli","api_key"],defaultAdapter:"cli_openai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Thin CLI over the API — adapter pending."},{id:"ollama_cli",displayName:"Ollama CLI",category:"cli",connectionTypes:["cli","local"],defaultAdapter:"cli_ollama",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"`ollama run/list` driven."},{id:"custom_cli",displayName:"Custom CLI provider",category:"cli",connectionTypes:["cli","custom_endpoint"],defaultAdapter:"cli_custom",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,status:"requires_setup",notes:"Define your own command + arg template."}].map(a=>[a.id,a])),aZ=a=>aY[a];async function a$(a,b,c=12e3){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c,e=await fetch(a,{headers:b,signal:d.signal}),f=await e.text();try{c=JSON.parse(f)}catch{c=void 0}return{ok:e.ok,status:e.status,json:c,error:e.ok?void 0:f.slice(0,200)||e.statusText}}catch(a){return{ok:!1,status:0,error:a instanceof Error?a.message:String(a)}}finally{clearTimeout(e)}}function a_(a){return a&&"object"==typeof a?Array.isArray(a.data)?a.data.length:Array.isArray(a.models)?a.models.length:0:0}async function a0(a,b){let c=a.defaultAdapter;if(c.startsWith("cli_")){let a=(0,aH.hW)(c);return await (0,aH.$g)(a)?{ok:!0,count:(aH.w5[c]??aH.w5.cli_claude_code).length}:{ok:!1,count:0,error:`${a} CLI not found on PATH`}}if("local_ollama"===c||"ollama"===a.id||"ollama_openai"===a.id){let b=a.baseUrl||"http://127.0.0.1:11434",c=await a$(b.replace(/\/$/,"")+"/api/tags",{});return c.ok?{ok:!0,count:a_(c.json)}:{ok:!1,count:0,error:c.error||"Ollama not reachable at "+b}}if("local_runtime"===a.category){let c=a.baseUrl||"http://127.0.0.1:8080",d=await a$(c.replace(/\/$/,"")+"/v1/models",b?{Authorization:"Bearer "+b}:{});return d.ok?{ok:!0,count:a_(d.json)}:{ok:!1,count:0,error:d.error||"local runtime not reachable"}}if(!b)return{ok:!1,count:0,error:"no API key in vault — connect with a key first"};if("http_anthropic"===c||"anthropic"===a.id){let a=await a$("https://api.anthropic.com/v1/models",{"x-api-key":b,"anthropic-version":"2023-06-01"});return a.ok?{ok:!0,count:a_(a.json)}:{ok:!1,count:0,error:a.error||"auth failed ("+a.status+")"}}let d=(a.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),e=d.endsWith("/models")?d:d+(d.includes("/v1")?"/models":"/v1/models"),f=await a$(e,{Authorization:"Bearer "+b});return f.ok?{ok:!0,count:a_(f.json)}:{ok:!1,count:0,error:f.error||"auth failed ("+f.status+")"}}async function a1(a,b){let{workspace:c}=await (0,D.nP)(),d=aZ(a);if(!d)return;let g=(0,l.randomUUID)();await e.db.insert(f.provider).values({id:g,workspaceId:c.id,catalogId:a,adapter:d.defaultAdapter,kind:"cli"===d.category?"cli":"local_runtime"===d.category?"local":"cloud",auth:d.connectionTypes.includes("api_key")?"api_key":d.connectionTypes[0],status:"needs_sync",syncStatus:d.supportsModelSync?"implemented":"manual"}),b&&await (0,aX.IW)(c.id,`${a}_api_key`,b,g),(0,C.revalidatePath)("/models"),await a2(g)}async function a2(a){let b,{workspace:c}=await (0,D.nP)(),[g]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,c.id)));if(!g)return{ok:!1,error:"not found"};let h=aZ(g.catalogId);if(!h)return{ok:!1,error:"unknown provider"};let i=await (0,aX.r6)(c.id,`${g.catalogId}_api_key`),j=await a0(h,i),k=null;if("cli"===h.category){let a=(0,aH.hW)(h.defaultAdapter);b=(k=await (0,aH.$g)(a).catch(()=>null))?await (0,aH.Kp)(a).catch(()=>"unknown"):"needs_login"}else b="local_runtime"===h.category?j.ok?"ready":"unknown":i&&j.ok?"ready":"needs_key";return await e.db.update(f.provider).set({status:j.ok?"connected":"error",modelCount:j.count,lastSync:new Date,cliVersion:k,authState:b}).where((0,d.eq)(f.provider.id,a)),j.ok&&await a3(a).catch(()=>{}),(0,C.revalidatePath)("/models"),j}async function a3(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));if(!c)return{ok:!1,count:0,error:"not found"};let g=await a4(c);return(0,C.revalidatePath)("/models"),g}async function a4(a){let b,c,g,h=aZ(a.catalogId);if(!h)return{ok:!1,count:0,error:"unknown provider"};let i=await (0,aX.r6)(a.workspaceId,`${a.catalogId}_api_key`),j="cli"===h.category;try{b=await aU({catalogId:a.catalogId,adapter:a.adapter,baseUrl:h.baseUrl,apiKey:i})}catch{b=null}if(j){let d=(0,aH.hW)(a.adapter);g=(c=await (0,aH.$g)(d).catch(()=>null))?await (0,aH.Kp)(d).catch(()=>"unknown"):"needs_login",null===b&&(b=(aH.w5[a.adapter]??[]).filter(a=>"(default)"!==a).map(a=>({id:a})))}if(null===b)return{ok:!0,count:0};let k=await aW(a.catalogId,b),m=new Date,n=k.length?function(a,b){if(!b.length)return"";let c=aK[aJ(a)];if(c)for(let a of c){let c=b.filter(b=>b.id.toLowerCase().includes(a));if(c.length)return c.sort((a,b)=>(b.released||"").localeCompare(a.released||"")),c[0].id}let d=b.filter(a=>a.released);return d.length?(d.sort((a,b)=>b.released.localeCompare(a.released)),d[0].id):b[0].id}(a.catalogId,k):null;if(k.length)await e.db.delete(f.providerModel).where((0,d.eq)(f.providerModel.providerId,a.id)),await e.db.insert(f.providerModel).values(k.map(b=>({id:(0,l.randomUUID)(),workspaceId:a.workspaceId,providerId:a.id,catalogId:a.catalogId,modelId:b.id,name:b.name,context:b.context,outputLimit:b.outputLimit,inputCost:b.inputCost,outputCost:b.outputCost,caps:b.caps,released:b.released,isDefault:b.id===n,lastSeen:m})));else if(!j)return{ok:!1,count:0,error:"no models returned"};let o=j&&!c?"needs_sync":"connected";return await e.db.update(f.provider).set({status:o,modelCount:k.length||(j?a.modelCount:0),lastSync:m,defaultModel:n||a.defaultModel,...j?{cliVersion:c??null,authState:g??null}:{}}).where((0,d.eq)(f.provider.id,a.id)),{ok:!0,count:k.length}}async function a5(a=12){let b,c=new Date(Date.now()-60*a*6e4);try{b=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.status,"connected"),(0,d.or)((0,d.kZ)(f.provider.lastSync),(0,d.lt)(f.provider.lastSync,c))))}catch{return{refreshed:0}}let g=0;for(let a of b.slice(0,50))try{let b=await a4(a);b.ok&&b.count>0&&g++}catch{}return{refreshed:g}}async function a6(a){let{workspace:b}=await (0,D.nP)(),c=(await e.db.select().from(f.providerModel).where((0,d.Uo)((0,d.eq)(f.providerModel.providerId,a),(0,d.eq)(f.providerModel.workspaceId,b.id)))).map(a=>({id:a.modelId,name:a.name,context:a.context,outputLimit:a.outputLimit,inputCost:a.inputCost,outputCost:a.outputCost,caps:a.caps??{reasoning:!1,tools:!1,vision:!1},released:a.released,isDefault:a.isDefault}));return c.sort((a,b)=>Number(b.isDefault)-Number(a.isDefault)||(b.released||"").localeCompare(a.released||"")||a.name.localeCompare(b.name)),{models:c}}async function a7(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));if(!c)return{ok:!1,error:"not found"};let g=aZ(c.catalogId);if(!g)return{ok:!1,error:"unknown provider"};let h=await (0,aX.r6)(b.id,`${c.catalogId}_api_key`),i=await a0(g,h);return await e.db.update(f.provider).set({status:i.ok?"connected":"error"}).where((0,d.eq)(f.provider.id,a)),(0,C.revalidatePath)("/models"),{ok:i.ok,error:i.error}}async function a8(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));if(!c)return{models:[],error:"not found"};let g=aZ(c.catalogId);if(!g?.baseUrl)return{models:[],error:"no public endpoint for this provider"};let h=await (0,aX.r6)(b.id,`${c.catalogId}_api_key`),i=g.baseUrl.replace(/\/$/,"");try{let a=/ollama/i.test(c.catalogId)||c.adapter.includes("ollama")?`${i.replace(/\/v1$/,"")}/api/tags`:`${i}/models`,b=await fetch(a,{headers:h?{authorization:`Bearer ${h}`}:{},signal:AbortSignal.timeout(8e3)});if(!b.ok)return{models:[],error:`endpoint ${b.status}`};let d=await b.json();return{models:(d.data??d.models??[]).map(a=>a.id??a.name??"").filter(Boolean).slice(0,80)}}catch(b){let a=String(b instanceof Error?b.message:b);return{models:[],error:/abort|fetch failed|ECONN/i.test(a)?"endpoint unreachable":a}}}async function a9(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));c&&await (0,aX.Kh)(b.id,`${c.catalogId}_api_key`),await e.db.delete(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id))),(0,C.revalidatePath)("/models")}async function ba(a){let{workspace:b}=await (0,D.nP)(),[c]=await e.db.select().from(f.provider).where((0,d.Uo)((0,d.eq)(f.provider.id,a),(0,d.eq)(f.provider.workspaceId,b.id)));c&&(await (0,aX.Kh)(b.id,`${c.catalogId}_api_key`),await e.db.update(f.provider).set({auth:"none",status:"needs_sync",modelCount:0}).where((0,d.eq)(f.provider.id,a)),(0,C.revalidatePath)("/models"))}(0,X.D)([a1,a2,a3,a5,a6,a7,a8,a9,ba]),(0,s.A)(a1,"6049c59fe05aeca70997ac50ed65f59dfbe72434f8",null),(0,s.A)(a2,"40dfd5e28d89607894b4d7c5da59463899b9a6568f",null),(0,s.A)(a3,"4073f99a66405a8f2309e35be0746d7b7b3c5a34a7",null),(0,s.A)(a5,"408ec6c0614fc572addf1b2179daedf12032d27d32",null),(0,s.A)(a6,"407f803d3ef7cf99e3cbd266af06ad4aa3846dd82d",null),(0,s.A)(a7,"4058c65420fcd3e7982fc48b78ca683b3a2938e6e6",null),(0,s.A)(a8,"408ddd9d10761ca340942c417e3bf16d601e91691e",null),(0,s.A)(a9,"4032f4be7f847c05ba39154e7d151b6ca63a1c5406",null),(0,s.A)(ba,"40ed0cff572629c648290a03259f8066a304253581",null);var bb=c(11457);let bc={"gpt-4o":[2.5,10],"gpt-4o-mini":[.15,.6],"o4-mini":[1.1,4.4],"gemini-2.0-flash":[.1,.4],"gemini-1.5-pro":[1.25,5],"gemini-1.5-flash":[.075,.3]};function bd(a,b,c){let d=Object.keys(bc).find(b=>a.toLowerCase().startsWith(b));if(!d)return 0;let[e,f]=bc[d];return b/1e6*e+c/1e6*f}function be(a,b,c,d){return{ok:!1,text:"",usd:0,inputTokens:0,outputTokens:0,durationMs:c,binary:a,model:b,error:d}}async function bf(a,b,c,d){let e,f=Date.now(),g=b.baseUrl.replace(/\/$/,""),h="google"===b.provider,i=h?`${g}/models/${encodeURIComponent(b.model)}:streamGenerateContent?alt=sse&key=${encodeURIComponent(b.apiKey)}`:`${g}/chat/completions`,j={"content-type":"application/json"};!h&&b.apiKey&&(j.authorization=`Bearer ${b.apiKey}`);let k=h?{contents:[{role:"user",parts:[{text:a}]}]}:{model:b.model,messages:[{role:"user",content:a}],stream:!0,stream_options:{include_usage:!0}};try{e=await fetch(i,{method:"POST",headers:j,body:JSON.stringify(k),signal:AbortSignal.timeout(c.timeoutMs??18e4)})}catch(a){return be(b.provider,b.model,Date.now()-f,String(a instanceof Error?a.message:a))}if(!e.ok||!e.body){let a=await e.text().catch(()=>"");return be(b.provider,b.model,Date.now()-f,`http ${e.status} ${a.slice(0,200)}`)}let l=e.body.getReader(),m=new TextDecoder,n="",o="",p=0,q=0,r=0,s=()=>{o.length>p&&(d({kind:"text",detail:o.slice(p,p+8e3)}),p=o.length)};try{for(;;){let a,{value:b,done:c}=await l.read();if(c)break;for(n+=m.decode(b,{stream:!0});(a=n.indexOf("\n"))>=0;){let b=n.slice(0,a).trim();if(n=n.slice(a+1),!b.startsWith("data:"))continue;let c=b.slice(5).trim();if("[DONE]"!==c)try{let a=JSON.parse(c);if(h){let b=a.candidates?.[0]?.content?.parts?.map(a=>a.text??"").join("")??"";b&&(o+=b).length-p>=120&&s();let c=a.usageMetadata;c&&(q=c.promptTokenCount??q,r=c.candidatesTokenCount??r)}else{let b=a.choices?.[0]?.delta?.content??"";b&&(o+=b).length-p>=120&&s(),a.usage&&(q=a.usage.prompt_tokens??q,r=a.usage.completion_tokens??r)}}catch{}}}}catch(a){return s(),d({kind:"done"}),{ok:!!o,text:o,usd:bd(b.model,q,r),inputTokens:q,outputTokens:r,durationMs:Date.now()-f,binary:b.provider,model:b.model,error:o?void 0:String(a instanceof Error?a.message:a)}}return s(),d({kind:"done"}),{ok:!!o.trim(),text:o,usd:bd(b.model,q,r),inputTokens:q,outputTokens:r,durationMs:Date.now()-f,binary:b.provider,model:b.model,error:o.trim()?void 0:"empty response"}}function bg(a,b){let c=RegExp(`##\\s+${b}\\s*\\n([\\s\\S]*?)(?:\\n##\\s|$)`,"i");return a.match(c)?.[1].trim()??""}function bh(a){return a.split("\n").find(a=>a.trim()&&!a.startsWith("#")&&!a.startsWith("**")&&!a.startsWith("---")&&!a.startsWith("|"))?.trim()??""}function bi(a,b){let c=a.split("\n").find(a=>a.startsWith("# "));return c?c.slice(2).trim():b}async function bj(a){let[b]=await e.db.select().from(f.workspace).where((0,d.eq)(f.workspace.orgId,a));return b??null}async function bk(a,b,c){let g=(0,m.sL)(b,`.claude/skills/${c}.md`)??"",h=bh(g),i=(g.match(/\*\*Trigger:\*\*\s*(.+)/)?.[1]??"").trim(),j=bg(g,"Procedure")||"",[k]=await e.db.select().from(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,a),(0,d.eq)(f.skill.name,c)));k?await e.db.update(f.skill).set({summary:h,trigger:i,...j?{instructions:j}:{},indexed:"indexed"}).where((0,d.eq)(f.skill.id,k.id)):await e.db.insert(f.skill).values({id:(0,l.randomUUID)(),workspaceId:a,name:c,summary:h,trigger:i,instructions:j,native:!0,provisional:!1,indexed:"indexed"})}async function bl(a,b,c){let g=(0,m.sL)(b,`.claude/agents/${c}/Agent.md`)??"";if(!g)return;let[h]=await e.db.select().from(f.agent).where((0,d.Uo)((0,d.eq)(f.agent.workspaceId,a),(0,d.eq)(f.agent.handle,c)));if(!h)return;let i=function(a){let b=a.match(/^---\n([\s\S]*?)\n---/);if(!b)return{};let c={};for(let a of b[1].split("\n")){let b=a.indexOf(":");b>0&&(c[a.slice(0,b).trim()]=a.slice(b+1).trim())}return c}(g),j={identity:(g.match(/\*\*Identity:\*\*\s*(.+)/)?.[1]??"").trim(),ritual:(g.match(/\*\*Ritual:\*\*\s*(.+)/)?.[1]??"").trim(),tone:(g.match(/\*\*Tone:\*\*\s*(.+)/)?.[1]??"").trim()||(h.persona?.tone??""),systemPrompt:bg(g,"System prompt")},k={...i.provider?{adapter:i.provider}:{},...i.model?{model:i.model}:{},...i.temperature?{temperature:parseFloat(i.temperature)}:{},...i.dailyCapUsd?{dailyCapUsd:parseFloat(i.dailyCapUsd)}:{},...i.tierFloor?{tierFloor:i.tierFloor}:{},...i.reportsTo&&"null"!==i.reportsTo?{reportsTo:i.reportsTo}:{},persona:j};for(let g of(await e.db.update(f.agent).set(k).where((0,d.eq)(f.agent.id,h.id)),[...((0,m.sL)(b,`.claude/agents/${c}/skills.md`)??"").matchAll(/`([a-z0-9-]+)`/g)].map(a=>a[1]))){let[b]=await e.db.select().from(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,a),(0,d.eq)(f.skill.name,g)));b&&await e.db.insert(f.agentSkill).values({agentId:h.id,skillId:b.id}).onConflictDoNothing()}}async function bm(a,b,c){let g=c.split("/").pop()??c;if("README.md"===g)return;let h=(0,m.sL)(b,c)??"",i=bi(h,g),[j]=await e.db.select().from(f.report).where((0,d.Uo)((0,d.eq)(f.report.workspaceId,a),(0,d.eq)(f.report.title,i)));j?await e.db.update(f.report).set({body:h}).where((0,d.eq)(f.report.id,j.id)):await e.db.insert(f.report).values({id:(0,l.randomUUID)(),workspaceId:a,title:i,type:"Report",body:h})}async function bn(a,b,c,g){let h=(0,m.sL)(b,c)??"",i=bi(h,c.split("/").pop()??c),j=bh(h),[k]=await e.db.select().from(f.docIndex).where((0,d.Uo)((0,d.eq)(f.docIndex.workspaceId,a),(0,d.eq)(f.docIndex.path,c)));k?await e.db.update(f.docIndex).set({title:i,summary:j,updatedAt:new Date}).where((0,d.eq)(f.docIndex.id,k.id)):await e.db.insert(f.docIndex).values({id:(0,l.randomUUID)(),workspaceId:a,kind:g,path:c,title:i,summary:j})}function bo(a){(a.startsWith(".claude/skills")||a.endsWith("/skills.md"))&&(0,C.revalidatePath)("/skills"),a.startsWith(".claude/agents")&&(0,C.revalidatePath)("/agents/[handle]","page"),a.startsWith("DOCS")&&(0,C.revalidatePath)("/docs"),a.startsWith("PO")&&(0,C.revalidatePath)("/pm"),a.startsWith("Reports")&&(0,C.revalidatePath)("/reports"),(0,C.revalidatePath)("/code")}async function bp(a,b,c=!0){let d,e=await bj(a);if(!e)return{ok:!1};let f=e.id;if(!function(a,b){if(!K(b))return;let c=a+"::"+b,d=R.get(c);d&&clearTimeout(d),R.set(c,setTimeout(()=>{R.delete(c),P(a,b).catch(()=>{})},2500))}(a,b),d=b.match(/^\.claude\/skills\/(.+)\.md$/))await bk(f,a,d[1]);else if(d=b.match(/^\.claude\/agents\/([^/]+)\/(?:Agent|skills)\.md$/))await bl(f,a,d[1]);else if(/^Reports\/.+\.md$/.test(b))await bm(f,a,b);else if(/^DOCS\/.+\.md$/.test(b))await bn(f,a,b,"docs");else{if(!/^PO\/.+\.md$/.test(b))return{ok:!0};await bn(f,a,b,"po")}return c&&bo(b),{ok:!0}}async function bq(a,b){let c,g=await bj(a);if(!g)return{ok:!1};let h=g.id;return Q(a,b).catch(()=>{}),(c=b.match(/^\.claude\/skills\/(.+)\.md$/))?await e.db.delete(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,h),(0,d.eq)(f.skill.name,c[1]))):/^(?:DOCS|PO)\/.+\.md$/.test(b)&&await e.db.delete(f.docIndex).where((0,d.Uo)((0,d.eq)(f.docIndex.workspaceId,h),(0,d.eq)(f.docIndex.path,b))),bo(b),{ok:!0}}async function br(a=!0){let{org:b}=await (0,D.nP)(),c=b.id;for(let a of(0,m.Ci)(c,".claude/skills"))!a.isDir&&a.name.endsWith(".md")&&await bp(c,a.path,!1);for(let a of(0,m.Ci)(c,".claude/agents"))a.isDir&&await bp(c,`${a.path}/Agent.md`,!1);for(let a of["DOCS","PO","Reports"])for(let b of(0,m.Ci)(c,a))!b.isDir&&b.name.endsWith(".md")&&await bp(c,b.path,!1);return a&&(0,C.revalidatePath)("/","layout"),{ok:!0}}async function bs(a,b,c){(0,m.dx)(a,b,c),await bp(a,b)}(0,X.D)([bp,bq,br]),(0,s.A)(bp,"70a8651ab1cfe5400449c8452f63ccc6a893b0f471",null),(0,s.A)(bq,"6073a5f0f9e7b1592a2023f4114ebe766fb437f39d",null),(0,s.A)(br,"4021c4fb6595f3c42932c52cb475e80aedc0663f8e",null);var bt=c(47244),bu=c(27912);let bv=`You are Vannevar, the Knowledge agent — Constella's CENTRAL SOURCE OF TRUTH. You own the Knowledge Base (KB): a curated, classified, state-aware layer over the semantic RAG index.
13
13
 
14
14
  ## What the KB is for
15
15
  Agents must not leave reusable knowledge scattered in chat. When anything important is created, changed, discovered, reviewed or completed, it is captured into a typed kb_entry, deduped, lifecycle-tracked (active → superseded → obsolete → archived), embedded, and made retrievable. You keep it organised, current and trustworthy.
@@ -301,7 +301,7 @@ ${c.map(a=>"- "+a).join("\n")||"(scan the project for components / screens / sty
301
301
  1) Create design-mock/styles/global.css with the design tokens (:root), reset/base and theme ([data-theme]).
302
302
  2) Scaffold a skeleton of the main screen(s) under design-mock/screens/ — valid HTML linking ../styles/global.css, with the key sections blocked out as labelled placeholders.
303
303
  3) Write design-mock/design-system.md outlining the palette, typography, spacing, core components and the screens to build.
304
- 4) Tell me what you set up and what to build/validate next before approving.`;return b7(`Ada is preparing the delivery plan and needs the design prototyped + approved first (zero drift). ${a}`)}async function cn(a){let{org:b}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let c=(0,m.sL)(b.id,a);return null==c?{ok:!1,error:"Screen not found."}:{ok:!0,html:b2(c,a,a=>(0,m.sL)(b.id,a)).slice(0,2e6)}}async function co(){let{org:a,workspace:b}=await (0,D.nP)(),c=(0,m.CS)(a.id).filter(a=>a.startsWith("design-mock/")&&/\.(md|markdown)$/i.test(a)&&!/\/README\.md$/i.test(a)).map(a=>({path:a,label:a.replace(/^design-mock\//,"")})).sort((a,b)=>cp(a.path)-cp(b.path)||a.label.localeCompare(b.label));return(0,bU.zw)(a.id,b),{docs:c}}function cp(a){return/APPROVED\.md$/i.test(a)?0:/design-system\.md$/i.test(a)?1:2}async function cq(a){let{org:b}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.(md|markdown)$/i.test(a))return{ok:!1,error:"Not a design doc."};let c=(0,m.sL)(b.id,a);return null==c?{ok:!1,error:"Doc not found."}:{ok:!0,body:c.slice(0,5e5)}}let cr=".claude/design-presets.json";async function cs(){let{org:a}=await (0,D.nP)(),b=(0,m.sL)(a.id,cr);if(!b)return{presets:[]};try{let a=JSON.parse(b);return{presets:Array.isArray(a)?a.slice(0,60):[]}}catch{return{presets:[]}}}async function ct(a,b){let{org:c}=await (0,D.nP)(),d=(a??"").trim();if(!d||d.length>6e4)return{ok:!1,error:"Nothing to save."};let{presets:e}=await cs(),f=[{id:"p"+(0,l.randomUUID)().slice(0,6),label:(b||"Preset").slice(0,40),html:d},...e].slice(0,60);return(0,m.dx)(c.id,cr,JSON.stringify(f,null,2)),{ok:!0}}async function cu(a){let{org:b}=await (0,D.nP)(),{presets:c}=await cs();return(0,m.dx)(b.id,cr,JSON.stringify(c.filter(b=>b.id!==a),null,2)),{ok:!0}}async function cv(){let{org:a,workspace:b}=await (0,D.nP)(),c=(0,bU.zw)(a.id,b);return{screens:c.designMockFiles.filter(a=>/\.html?$/i.test(a)),components:c.designMockFiles.filter(a=>a.startsWith("design-mock/components/"))}}async function cw(a,b,c){let[g]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,a)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!g)return;let h=await e.db.select({id:f.designVersion.id}).from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,g.id));await e.db.insert(f.designVersion).values({id:(0,l.randomUUID)(),sessionId:g.id,label:"v"+(h.length+1),note:b.slice(0,300),patch:{files:c}})}async function cx(){let{workspace:a}=await (0,D.nP)();bQ();let[b]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,a.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);return b?{versions:(await e.db.select().from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,b.id)).orderBy((0,i.i)(f.designVersion.createdAt))).map(a=>{let b=a.patch;return{id:a.id,label:a.label,note:a.note,files:b?.files??[],restorable:!!b?.snapshot,createdAt:a.createdAt.getTime()}})}:{versions:[]}}async function cy(a,b){return b7(`Restore the prototype to ${a} — "${b}". Re-apply that state to the screens under design-mock/screens/ and tell me what changed.`)}async function cz(a){let{org:b,workspace:c}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};bQ();let g=(0,m.sL)(b.id,a);if(null==g)return{ok:!1,error:"Screen not found."};let[h]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,c.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!h)return{ok:!1,error:"No design session."};let j="Saved v"+((await e.db.select({id:f.designVersion.id}).from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,h.id))).length+1),k=(a.split("/").pop()||a).replace(/\.[a-z]+$/i,"");await e.db.insert(f.designVersion).values({id:(0,l.randomUUID)(),sessionId:h.id,label:j,note:`Checkpoint \xb7 ${k}`,patch:{files:[a],snapshot:g}});try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,label:j}}async function cA(a){let{org:b,workspace:c}=await (0,D.nP)();bQ();let[g]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,c.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!g)return{ok:!1,error:"No design session."};let[h]=await e.db.select().from(f.designVersion).where((0,d.Uo)((0,d.eq)(f.designVersion.id,a),(0,d.eq)(f.designVersion.sessionId,g.id))).limit(1);if(!h)return{ok:!1,error:"Checkpoint not found."};let j=h.patch,k=j?.files?.[0];if(!j?.snapshot||!k)return{ok:!1,error:"This version isn't a restorable checkpoint."};if(!k.startsWith("design-mock/")||k.includes(".."))return{ok:!1,error:"Bad path."};(0,m.dx)(b.id,k,j.snapshot);try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cB(a){let{workspace:b}=await (0,D.nP)();bQ();let[c]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,b.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!c)return{comments:[]};let g=a?(0,d.Uo)((0,d.eq)(f.designComment.sessionId,c.id),(0,d.eq)(f.designComment.pageKey,a)):(0,d.eq)(f.designComment.sessionId,c.id);return{comments:(await e.db.select().from(f.designComment).where(g).orderBy(f.designComment.createdAt)).map(a=>({id:a.id,pageKey:a.pageKey,xp:a.xp,yp:a.yp,body:a.body,reply:a.reply,selection:a.selection,createdAt:a.createdAt.getTime()}))}}async function cC(a,b,c,d,g){let h=d?.trim();if(!h)return{ok:!1,error:"Empty comment."};bQ();let i=await b5(),j=(0,l.randomUUID)();await e.db.insert(f.designComment).values({id:j,sessionId:i.id,pageKey:(a||"").slice(0,300),xp:b,yp:c,body:h.slice(0,2e3),reply:"",selection:g??null});try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,id:j}}async function cD(a,b,c){bQ();let d=await b5(),g=(0,l.randomUUID)(),h=(c||"").trim();await e.db.insert(f.designComment).values({id:g,sessionId:d.id,pageKey:(a||"").slice(0,300),xp:b.x,yp:b.y,body:(h||"(region marked for review)").slice(0,2e3),reply:"",selection:{kind:"markup",rect:b}});try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,id:g}}async function cE(a){let{workspace:b}=await (0,D.nP)();bQ();let[c]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,b.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);c&&await e.db.delete(f.designComment).where((0,d.Uo)((0,d.eq)(f.designComment.id,a),(0,d.eq)(f.designComment.sessionId,c.id)));try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cF(a,b,c){let{org:d}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let e=(b??"").trim();if(!e)return{ok:!1,error:"Nothing to replace."};let f=(0,m.sL)(d.id,a);if(null==f)return{ok:!1,error:"Screen not found."};let g=f.indexOf(e);if(g<0)return{ok:!1,error:"Couldn't locate that text — ask Grace to apply it."};if(f.indexOf(e,g+1)>=0)return{ok:!1,error:"That text appears more than once — ask Grace to apply it."};(0,m.dx)(d.id,a,f.slice(0,g)+(c??"")+f.slice(g+e.length));try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cG(a,b){let{org:c,workspace:d}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};if(null==b)return{ok:!1,error:"Nothing to commit."};if(b.length>4e6)return{ok:!1,error:"Screen too large."};let e=b,f=e.match(/<body[^>]*>([\s\S]*)<\/body>/i);f&&(e=f[1]),e=e.replace(/<!doctype[^>]*>/gi,"").replace(/<\/?(?:html|head|body)\b[^>]*>/gi,"");let g=(0,m.sL)(c.id,a);if(null==g)return{ok:!1,error:"Screen not found."};let h=g.match(/<body([^>]*)>[\s\S]*<\/body>/i),i=h&&null!=h.index?g.slice(0,h.index)+`<body${h[1]}>`+e+"</body>"+g.slice(h.index+h[0].length):`<!doctype html><html><head><meta charset="utf-8"></head><body>${e}</body></html>`;(0,m.dx)(c.id,a,i);try{await cH(d.id,a)}catch{}try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cH(a,b){let[c]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,a)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!c)return;let g="Manual canvas edit",[h]=await e.db.select().from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,c.id)).orderBy((0,i.i)(f.designVersion.createdAt)).limit(1);if(h&&h.note===g&&Date.now()-h.createdAt.getTime()<9e4){let a=Array.from(new Set([...h.patch?.files??[],b]));await e.db.update(f.designVersion).set({patch:{files:a},createdAt:new Date}).where((0,d.eq)(f.designVersion.id,h.id))}else{let a=await e.db.select({id:f.designVersion.id}).from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,c.id));await e.db.insert(f.designVersion).values({id:(0,l.randomUUID)(),sessionId:c.id,label:"v"+(a.length+1),note:g,patch:{files:[b]}})}}async function cI(){let{org:a,workspace:b}=await (0,D.nP)(),c=(0,bU.zw)(a.id,b).designMockFiles.filter(a=>/design-mock\/screens\/.+\.html?$/i.test(a));if(!c.length)return{ok:!1,built:[],error:"No screens to build yet — ask Grace for a screen first."};let d=[];for(let b of c){let c=(0,m.sL)(a.id,b);if(null==c)continue;let{out:e,obfuscated:f}=function(a){let b=/<script\b/i.test(a),c=function(a){let b;return(b=[],a.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,c)=>`<style${b}>${c.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{};,])\s*/g,"$1").replace(/:\s+/g,":").replace(/;}/g,"}").trim()}</style>`).replace(/<(script|style)\b[\s\S]*?<\/\1>/gi,a=>(b.push(a),`\0${b.length-1}\0`)).replace(/<!--(?!\[if)[\s\S]*?-->/g,"").replace(/(\d+)/g,(a,c)=>b[Number(c)])).trim()}(a);return b||(c=function(a){if(/<script\b/i.test(a))return a;let b=new Set;for(let c of a.matchAll(/class\s*=\s*"([^"]*)"/gi))c[1].split(/\s+/).filter(Boolean).forEach(a=>b.add(a));if(!b.size)return a;let c=new Map;[...b].forEach((a,b)=>c.set(a,function(a){let b="",c=a+1;for(;c>0;)b="abcdefghijklmnopqrstuvwxyz"[--c%26]+b,c=Math.floor(c/26);return b}(b)));let d=a.replace(/class\s*=\s*"([^"]*)"/gi,(a,b)=>`class="${b.split(/\s+/).filter(Boolean).map(a=>c.get(a)??a).join(" ")}"`);return d.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,d)=>{let e=d;for(let[a,b]of c)e=e.replace(RegExp("\\."+a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(?![-_\\w])","g"),"."+b);return`<style${b}>${e}</style>`})}(c)),{out:c,obfuscated:!b}}(b2(c,b,b=>(0,m.sL)(a.id,b))),g=`design-mock/dist/${b.split("/").pop()}`;(0,m.dx)(a.id,g,e),d.push({path:g,before:c.length,after:e.length,obfuscated:f})}try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,built:d}}(0,X.D)([b5,b6,b7,b8,b9,ca,cb,cc,ce,cf,ch,ck,cl,cm,cn,co,cq,cs,ct,cu,cv,cx,cy,cz,cA,cB,cC,cD,cE,cF,cG,cI]),(0,s.A)(b5,"009f63092f0ec7ab04ba59b6200071d083227c97fc",null),(0,s.A)(b6,"402521df2cdcdf994cd2264cd2ae8e32cce160764d",null),(0,s.A)(b7,"70c5b800592f8c728e28096ea00b5991d917d5b166",null),(0,s.A)(b8,"4017364bc3b6d6fa14061cfac839d1a8827d6c73b5",null),(0,s.A)(b9,"704389bc75f649527643be72d97dea040cc68a8541",null),(0,s.A)(ca,"005654d5bee41f688facd5214d39464c0a5154a96d",null),(0,s.A)(cb,"60f3c0ba58cabeb1d8596a8198d8005537906a87e7",null),(0,s.A)(cc,"00c7d21ee3adeb722cfce33e92f77f27aa0c649888",null),(0,s.A)(ce,"60e4ac6bf305417265debb1d7d6d5b994d57b22161",null),(0,s.A)(cf,"005c24c0f0211e033cb8e6bc08690f6247978646f6",null),(0,s.A)(ch,"601bdeb977fbc2e3944a52d0c6037b3d61a305a56a",null),(0,s.A)(ck,"60b9de834db4c321afc7fb79b8c65f5d9dfe457ab8",null),(0,s.A)(cl,"000d2475a828032e63b1cbb99501b270d46c86c4d9",null),(0,s.A)(cm,"00a74d208fffff8f43745ea86e004ff1eb0ffe2ced",null),(0,s.A)(cn,"4022f1066dfef34fbb82f5d949e1af2381f0b41e1b",null),(0,s.A)(co,"0015ace5d40c40b2308d1146611332c7f09101db2b",null),(0,s.A)(cq,"40f19d59c8b81b0b668840478ff1dc221845092d69",null),(0,s.A)(cs,"00275a0096349c5159f727630056869831c6052a90",null),(0,s.A)(ct,"600d8ef59ec617bc23f97c4b95c39ecebfe50f11a8",null),(0,s.A)(cu,"40ade191d12ca903e1806ca591518197b710007f5f",null),(0,s.A)(cv,"00acc474f484ce96a824b2454a098e8dc71914bf5e",null),(0,s.A)(cx,"0067a5ef8d17ec38729f7ccb6c66334a5ba3c50745",null),(0,s.A)(cy,"60f05b118f57621541ffc2d84808a79b8bff859f81",null),(0,s.A)(cz,"40155f88f1c1dd62e916c89f5051e44f6b700413b4",null),(0,s.A)(cA,"40004ed28e4ffbcfb3eb0c22b185c89201e671971f",null),(0,s.A)(cB,"40f1fa3f447273f78f9a0ffce89894790292bb4b08",null),(0,s.A)(cC,"7cfdd007ba47d4feb198cc6937c6b450d454266e8c",null),(0,s.A)(cD,"7025b1705b7eb7a915125df238da780672906b31a7",null),(0,s.A)(cE,"40c24d2c549cf74080f8dcff3c2dbb2ce82e7fae5a",null),(0,s.A)(cF,"7044adad76d6dbcd2ebf27ca1fb5911ec02093ba89",null),(0,s.A)(cG,"60174a505ab0000e6ba58f8350a98c8bfd8f08f9cd",null),(0,s.A)(cI,"00362877be6a6f7da575700ffbf6d3b713016928b6",null);let cJ=!1;async function cK(){if(!cJ){cJ=!0;try{(0,g.pw)()}catch(a){console.error("[boot] FATAL:",a.message),process.exit(1)}try{by()}catch(a){console.error("[boot] ensureKbTables failed:",a)}try{for(let a of(bO(),bO(),e.F.prepare("SELECT workspace_id, steps FROM deploy_run WHERE status = 'running'").all())){let b=(function(a,b){if(!a)return b;try{return JSON.parse(a)}catch{return b}})(a.steps,[]).map(a=>"running"===a.status?{...a,status:"error",detail:a.detail||"interrupted by restart"}:a);e.F.prepare("UPDATE deploy_run SET status = 'failed', steps = ?, updated_at = unixepoch() WHERE workspace_id = ?").run(JSON.stringify(b),a.workspace_id)}}catch(a){console.error("[boot] ensureDeployTables failed:",a)}try{bQ()}catch(a){console.error("[boot] ensureDesignTables failed:",a)}try{(0,h.Vj)();let a=await e.db.update(f.agent).set({status:"idle"}).where((0,d.RV)(f.agent.status,["working","review"])).returning({id:f.agent.id}),b=await e.db.select().from(f.task).where((0,d.eq)(f.task.col,"doing")),c=0;for(let a of b){if(a.goalId){let b=await e.db.query.goal.findFirst({where:(0,d.eq)(f.goal.id,a.goalId)});if(b&&"active"!==b.status)continue}await e.db.update(f.task).set({col:"todo"}).where((0,d.eq)(f.task.id,a.id)),c++}let g=0,i=0;for(let a of(await e.db.select().from(f.goal).where((0,d.RV)(f.goal.status,["cancelled","archived"])))){let b=a.status,c=await e.db.update(f.spec).set({status:b}).where((0,d.Uo)((0,d.eq)(f.spec.goalId,a.id),(0,d.ne)(f.spec.status,b))).returning({id:f.spec.id}),h=await e.db.update(f.issue).set({status:b}).where((0,d.Uo)((0,d.eq)(f.issue.goalId,a.id),(0,d.ne)(f.issue.status,b))).returning({id:f.issue.id});g+=c.length+h.length,i+=await bE(a.workspaceId,a.id)}i&&console.log(`[boot] retired ${i} KB entr(y/ies) from cancelled/archived goals`);let k=0;for(let a of(await e.db.select({id:f.workspace.id}).from(f.workspace)))k+=await j(a.id);console.log(`[boot] reconciled: ${a.length} agent(s) → idle, ${c} orphan task(s) → todo, ${g} spec/issue status synced, ${k} orphan event(s) pruned`)}catch(a){console.error("[boot] reconcile failed:",a)}try{let a=await cf();a&&console.log(`[boot] resumed ${a} pending design handoff(s)`)}catch(a){console.error("[boot] resume design handoffs failed:",a)}try{let a=process.env.CONSTELLA_RUN_MODE;a&&["start","auth","vps","portable"].includes(a)&&(await e.db.update(f.organization).set({runMode:a}).where((0,d.ne)(f.organization.runMode,a)),(await e.db.update(f.workspace).set({runMode:a}).where((0,d.Uo)((0,d.ne)(f.workspace.runMode,"off"),(0,d.ne)(f.workspace.runMode,a))).returning({id:f.workspace.id})).length&&console.log(`[boot] run mode synced to --${a}`))}catch(a){console.error("[boot] run-mode sync failed:",a)}try{let a=function(){let a=e.db.select({id:f.workspace.id,orgId:f.workspace.orgId,stack:f.workspace.stack}).from(f.workspace).all(),b=(0,n.Ws)(),c=0;for(let g of a){let a=e.db.select({id:f.agent.id,handle:f.agent.handle}).from(f.agent).where((0,d.eq)(f.agent.workspaceId,g.id)).all();if(!a.length)continue;let h=Object.fromEntries(a.map(a=>[a.handle,a.id]));try{c+=function(a){let{orgId:b,wsId:c,names:g,agentIds:h}=a,i=a.linkNames?new Set(a.linkNames):null,j=0;for(let a of g){let g=(0,n.fi)(a);if(!g||e.db.select({id:f.skill.id}).from(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,c),(0,d.eq)(f.skill.name,a))).get())continue;let k=(0,n.qg)(a);if(!k)continue;let o=(0,n.BC)(k),p=`When working with ${a} in this project.`,q=`# Skill — ${a}
304
+ 4) Tell me what you set up and what to build/validate next before approving.`;return b7(`Ada is preparing the delivery plan and needs the design prototyped + approved first (zero drift). ${a}`)}async function cn(a){let{org:b}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let c=(0,m.sL)(b.id,a);return null==c?{ok:!1,error:"Screen not found."}:{ok:!0,html:b2(c,a,a=>(0,m.sL)(b.id,a)).slice(0,2e6)}}async function co(){let{org:a,workspace:b}=await (0,D.nP)(),c=(0,m.CS)(a.id).filter(a=>a.startsWith("design-mock/")&&/\.(md|markdown)$/i.test(a)&&!/\/README\.md$/i.test(a)).map(a=>({path:a,label:a.replace(/^design-mock\//,"")})).sort((a,b)=>cp(a.path)-cp(b.path)||a.label.localeCompare(b.label));return(0,bU.zw)(a.id,b),{docs:c}}function cp(a){return/APPROVED\.md$/i.test(a)?0:/design-system\.md$/i.test(a)?1:2}async function cq(a){let{org:b}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.(md|markdown)$/i.test(a))return{ok:!1,error:"Not a design doc."};let c=(0,m.sL)(b.id,a);return null==c?{ok:!1,error:"Doc not found."}:{ok:!0,body:c.slice(0,5e5)}}let cr=".claude/design-presets.json";async function cs(){let{org:a}=await (0,D.nP)(),b=(0,m.sL)(a.id,cr);if(!b)return{presets:[]};try{let a=JSON.parse(b);return{presets:Array.isArray(a)?a.slice(0,60):[]}}catch{return{presets:[]}}}async function ct(a,b){let{org:c}=await (0,D.nP)(),d=(a??"").trim();if(!d||d.length>6e4)return{ok:!1,error:"Nothing to save."};let{presets:e}=await cs(),f=[{id:"p"+(0,l.randomUUID)().slice(0,6),label:(b||"Preset").slice(0,40),html:d},...e].slice(0,60);return(0,m.dx)(c.id,cr,JSON.stringify(f,null,2)),{ok:!0}}async function cu(a){let{org:b}=await (0,D.nP)(),{presets:c}=await cs();return(0,m.dx)(b.id,cr,JSON.stringify(c.filter(b=>b.id!==a),null,2)),{ok:!0}}async function cv(){let{org:a,workspace:b}=await (0,D.nP)(),c=(0,bU.zw)(a.id,b);return{screens:c.designMockFiles.filter(a=>/\.html?$/i.test(a)),components:c.designMockFiles.filter(a=>a.startsWith("design-mock/components/"))}}async function cw(a,b,c){let[g]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,a)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!g)return;let h=await e.db.select({id:f.designVersion.id}).from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,g.id));await e.db.insert(f.designVersion).values({id:(0,l.randomUUID)(),sessionId:g.id,label:"v"+(h.length+1),note:b.slice(0,300),patch:{files:c}})}async function cx(){let{workspace:a}=await (0,D.nP)();bQ();let[b]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,a.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);return b?{versions:(await e.db.select().from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,b.id)).orderBy((0,i.i)(f.designVersion.createdAt))).map(a=>{let b=a.patch;return{id:a.id,label:a.label,note:a.note,files:b?.files??[],restorable:!!b?.snapshot,createdAt:a.createdAt.getTime()}})}:{versions:[]}}async function cy(a,b){return b7(`Restore the prototype to ${a} — "${b}". Re-apply that state to the screens under design-mock/screens/ and tell me what changed.`)}async function cz(a){let{org:b,workspace:c}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};bQ();let g=(0,m.sL)(b.id,a);if(null==g)return{ok:!1,error:"Screen not found."};let[h]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,c.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!h)return{ok:!1,error:"No design session."};let j="Saved v"+((await e.db.select({id:f.designVersion.id}).from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,h.id))).length+1),k=(a.split("/").pop()||a).replace(/\.[a-z]+$/i,"");await e.db.insert(f.designVersion).values({id:(0,l.randomUUID)(),sessionId:h.id,label:j,note:`Checkpoint \xb7 ${k}`,patch:{files:[a],snapshot:g}});try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,label:j}}async function cA(a){let{org:b,workspace:c}=await (0,D.nP)();bQ();let[g]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,c.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!g)return{ok:!1,error:"No design session."};let[h]=await e.db.select().from(f.designVersion).where((0,d.Uo)((0,d.eq)(f.designVersion.id,a),(0,d.eq)(f.designVersion.sessionId,g.id))).limit(1);if(!h)return{ok:!1,error:"Checkpoint not found."};let j=h.patch,k=j?.files?.[0];if(!j?.snapshot||!k)return{ok:!1,error:"This version isn't a restorable checkpoint."};if(!k.startsWith("design-mock/")||k.includes(".."))return{ok:!1,error:"Bad path."};(0,m.dx)(b.id,k,j.snapshot);try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cB(a){let{workspace:b}=await (0,D.nP)();bQ();let[c]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,b.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!c)return{comments:[]};let g=a?(0,d.Uo)((0,d.eq)(f.designComment.sessionId,c.id),(0,d.eq)(f.designComment.pageKey,a)):(0,d.eq)(f.designComment.sessionId,c.id);return{comments:(await e.db.select().from(f.designComment).where(g).orderBy(f.designComment.createdAt)).map(a=>({id:a.id,pageKey:a.pageKey,xp:a.xp,yp:a.yp,body:a.body,reply:a.reply,selection:a.selection,createdAt:a.createdAt.getTime()}))}}async function cC(a,b,c,d,g){let h=d?.trim();if(!h)return{ok:!1,error:"Empty comment."};bQ();let i=await b5(),j=(0,l.randomUUID)();await e.db.insert(f.designComment).values({id:j,sessionId:i.id,pageKey:(a||"").slice(0,300),xp:b,yp:c,body:h.slice(0,2e3),reply:"",selection:g??null});try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,id:j}}async function cD(a,b,c){bQ();let d=await b5(),g=(0,l.randomUUID)(),h=(c||"").trim();await e.db.insert(f.designComment).values({id:g,sessionId:d.id,pageKey:(a||"").slice(0,300),xp:b.x,yp:b.y,body:(h||"(region marked for review)").slice(0,2e3),reply:"",selection:{kind:"markup",rect:b}});try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,id:g}}async function cE(a){let{workspace:b}=await (0,D.nP)();bQ();let[c]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,b.id)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);c&&await e.db.delete(f.designComment).where((0,d.Uo)((0,d.eq)(f.designComment.id,a),(0,d.eq)(f.designComment.sessionId,c.id)));try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cF(a,b,c){let{org:d}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let e=(b??"").trim();if(!e)return{ok:!1,error:"Nothing to replace."};let f=(0,m.sL)(d.id,a);if(null==f)return{ok:!1,error:"Screen not found."};let g=f.indexOf(e);if(g<0)return{ok:!1,error:"Couldn't locate that text — ask Grace to apply it."};if(f.indexOf(e,g+1)>=0)return{ok:!1,error:"That text appears more than once — ask Grace to apply it."};(0,m.dx)(d.id,a,f.slice(0,g)+(c??"")+f.slice(g+e.length));try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cG(a,b){let{org:c,workspace:d}=await (0,D.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};if(null==b)return{ok:!1,error:"Nothing to commit."};if(b.length>4e6)return{ok:!1,error:"Screen too large."};let e=b,f=e.match(/<body[^>]*>([\s\S]*)<\/body>/i);f&&(e=f[1]),e=e.replace(/<!doctype[^>]*>/gi,"").replace(/<\/?(?:html|head|body)\b[^>]*>/gi,"");let g=(0,m.sL)(c.id,a);if(null==g)return{ok:!1,error:"Screen not found."};let h=g.match(/<body([^>]*)>[\s\S]*<\/body>/i),i=h&&null!=h.index?g.slice(0,h.index)+`<body${h[1]}>`+e+"</body>"+g.slice(h.index+h[0].length):`<!doctype html><html><head><meta charset="utf-8"></head><body>${e}</body></html>`;(0,m.dx)(c.id,a,i);try{await cH(d.id,a)}catch{}try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0}}async function cH(a,b){let[c]=await e.db.select({id:f.designSession.id}).from(f.designSession).where((0,d.eq)(f.designSession.workspaceId,a)).orderBy((0,i.i)(f.designSession.createdAt)).limit(1);if(!c)return;let g="Manual canvas edit",[h]=await e.db.select().from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,c.id)).orderBy((0,i.i)(f.designVersion.createdAt)).limit(1);if(h&&h.note===g&&Date.now()-h.createdAt.getTime()<9e4){let a=Array.from(new Set([...h.patch?.files??[],b]));await e.db.update(f.designVersion).set({patch:{files:a},createdAt:new Date}).where((0,d.eq)(f.designVersion.id,h.id))}else{let a=await e.db.select({id:f.designVersion.id}).from(f.designVersion).where((0,d.eq)(f.designVersion.sessionId,c.id));await e.db.insert(f.designVersion).values({id:(0,l.randomUUID)(),sessionId:c.id,label:"v"+(a.length+1),note:g,patch:{files:[b]}})}}async function cI(){let{org:a,workspace:b}=await (0,D.nP)(),c=(0,bU.zw)(a.id,b).designMockFiles.filter(a=>/design-mock\/screens\/.+\.html?$/i.test(a));if(!c.length)return{ok:!1,built:[],error:"No screens to build yet — ask Grace for a screen first."};let d=[];for(let b of c){let c=(0,m.sL)(a.id,b);if(null==c)continue;let{out:e,obfuscated:f}=function(a){let b=/<script\b/i.test(a),c=function(a){let b;return(b=[],a.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,c)=>`<style${b}>${c.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{};,])\s*/g,"$1").replace(/:\s+/g,":").replace(/;}/g,"}").trim()}</style>`).replace(/<(script|style)\b[\s\S]*?<\/\1>/gi,a=>(b.push(a),`\0${b.length-1}\0`)).replace(/<!--(?!\[if)[\s\S]*?-->/g,"").replace(/(\d+)/g,(a,c)=>b[Number(c)])).trim()}(a);return b||(c=function(a){if(/<script\b/i.test(a))return a;let b=new Set;for(let c of a.matchAll(/class\s*=\s*"([^"]*)"/gi))c[1].split(/\s+/).filter(Boolean).forEach(a=>b.add(a));if(!b.size)return a;let c=new Map;[...b].forEach((a,b)=>c.set(a,function(a){let b="",c=a+1;for(;c>0;)b="abcdefghijklmnopqrstuvwxyz"[--c%26]+b,c=Math.floor(c/26);return b}(b)));let d=a.replace(/class\s*=\s*"([^"]*)"/gi,(a,b)=>`class="${b.split(/\s+/).filter(Boolean).map(a=>c.get(a)??a).join(" ")}"`);return d.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,d)=>{let e=d;for(let[a,b]of c)e=e.replace(RegExp("\\."+a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(?![-_\\w])","g"),"."+b);return`<style${b}>${e}</style>`})}(c)),{out:c,obfuscated:!b}}(b2(c,b,b=>(0,m.sL)(a.id,b))),g=`design-mock/dist/${b.split("/").pop()}`;(0,m.dx)(a.id,g,e),d.push({path:g,before:c.length,after:e.length,obfuscated:f})}try{(0,C.revalidatePath)("/design")}catch{}return{ok:!0,built:d}}(0,X.D)([b5,b6,b7,b8,b9,ca,cb,cc,ce,cf,ch,ck,cl,cm,cn,co,cq,cs,ct,cu,cv,cx,cy,cz,cA,cB,cC,cD,cE,cF,cG,cI]),(0,s.A)(b5,"008b42e84247688609d4d11af390d02199cca0d384",null),(0,s.A)(b6,"407aa8a5d4460f484c3868d791e7f99366c3c7ebf6",null),(0,s.A)(b7,"7031f18298206b9eed07915789c732e983d508c7ca",null),(0,s.A)(b8,"401913117624f76d855c3dee8e73690e05128d58bc",null),(0,s.A)(b9,"7000739402aa8ff411bd2a910e87e78b8a4fdf8ad4",null),(0,s.A)(ca,"00720e15b692af52616f0db65016380609680e9374",null),(0,s.A)(cb,"60faf696704adc383be5bef2511d5e563a72644ea1",null),(0,s.A)(cc,"00368d513d83907a8f4ba8986f1aa4b666abb6ad3f",null),(0,s.A)(ce,"607e0e42f61eac7689406cd04620ba0c8f1afcaf87",null),(0,s.A)(cf,"009219bf65517888133423afd094deafd381a5895b",null),(0,s.A)(ch,"604a66e8eb6f8700bbb29af86dad5acb34f19ed658",null),(0,s.A)(ck,"6085c1eff9ee8fe3f7c3f226f3b0b18fb5be02165a",null),(0,s.A)(cl,"006debeee382aeab3cec4a1512b243e5752158bddb",null),(0,s.A)(cm,"0092e74bde6eae11a5647039382ef248fb7eddaf80",null),(0,s.A)(cn,"40371aa295d2eda44fb458b2c8e23e6e2b9313938d",null),(0,s.A)(co,"00239816275c839b806db62964632e16a93c1f70f2",null),(0,s.A)(cq,"40b0da75104ac6ed9b3d63a24573082c88b5e3dca6",null),(0,s.A)(cs,"007b1dcf147417c0e0a8911b079e83c4c09dbc97c8",null),(0,s.A)(ct,"6033ddf0ff1861a759f52f595fd5deaf65d294436a",null),(0,s.A)(cu,"4043659367e07630c7e4ee817d265baadc7bf68b34",null),(0,s.A)(cv,"00455199924707d963d9938c5b404ae813f90064c7",null),(0,s.A)(cx,"005d6236fdcebaa4d6b5134a005c8ae844ae5da28b",null),(0,s.A)(cy,"60e0b0224a321119849c4906ec560f96898033d2de",null),(0,s.A)(cz,"404fe2e7af3aeb0bd58b9edb36a05dda84fdcf7b70",null),(0,s.A)(cA,"400207e71c80a9d2076c6b25b6f57a85f1d812b1a2",null),(0,s.A)(cB,"4083c3a91894ca82258f9de7f07bc9efc0ef9c31f1",null),(0,s.A)(cC,"7c59630ab1449d3b9501c2f2524df8ee3e64aa4648",null),(0,s.A)(cD,"7079e05add04a9ac5f434e8fbfa4aea018130164fb",null),(0,s.A)(cE,"40390c538324b2d9e4bffc648514a3ed6e0dc4da3c",null),(0,s.A)(cF,"701428695eeaccf59f2cbd6516dfe63831d54a5449",null),(0,s.A)(cG,"60837a1694af21f238a015786df16d115ded01e9cc",null),(0,s.A)(cI,"00051c91c7dca5b2ed9baa8e3c2004af4875169699",null);let cJ=!1;async function cK(){if(!cJ){cJ=!0;try{(0,g.pw)()}catch(a){console.error("[boot] FATAL:",a.message),process.exit(1)}try{by()}catch(a){console.error("[boot] ensureKbTables failed:",a)}try{for(let a of(bO(),bO(),e.F.prepare("SELECT workspace_id, steps FROM deploy_run WHERE status = 'running'").all())){let b=(function(a,b){if(!a)return b;try{return JSON.parse(a)}catch{return b}})(a.steps,[]).map(a=>"running"===a.status?{...a,status:"error",detail:a.detail||"interrupted by restart"}:a);e.F.prepare("UPDATE deploy_run SET status = 'failed', steps = ?, updated_at = unixepoch() WHERE workspace_id = ?").run(JSON.stringify(b),a.workspace_id)}}catch(a){console.error("[boot] ensureDeployTables failed:",a)}try{bQ()}catch(a){console.error("[boot] ensureDesignTables failed:",a)}try{(0,h.Vj)();let a=await e.db.update(f.agent).set({status:"idle"}).where((0,d.RV)(f.agent.status,["working","review"])).returning({id:f.agent.id}),b=await e.db.select().from(f.task).where((0,d.eq)(f.task.col,"doing")),c=0;for(let a of b){if(a.goalId){let b=await e.db.query.goal.findFirst({where:(0,d.eq)(f.goal.id,a.goalId)});if(b&&"active"!==b.status)continue}await e.db.update(f.task).set({col:"todo"}).where((0,d.eq)(f.task.id,a.id)),c++}let g=0,i=0;for(let a of(await e.db.select().from(f.goal).where((0,d.RV)(f.goal.status,["cancelled","archived"])))){let b=a.status,c=await e.db.update(f.spec).set({status:b}).where((0,d.Uo)((0,d.eq)(f.spec.goalId,a.id),(0,d.ne)(f.spec.status,b))).returning({id:f.spec.id}),h=await e.db.update(f.issue).set({status:b}).where((0,d.Uo)((0,d.eq)(f.issue.goalId,a.id),(0,d.ne)(f.issue.status,b))).returning({id:f.issue.id});g+=c.length+h.length,i+=await bE(a.workspaceId,a.id)}i&&console.log(`[boot] retired ${i} KB entr(y/ies) from cancelled/archived goals`);let k=0;for(let a of(await e.db.select({id:f.workspace.id}).from(f.workspace)))k+=await j(a.id);console.log(`[boot] reconciled: ${a.length} agent(s) → idle, ${c} orphan task(s) → todo, ${g} spec/issue status synced, ${k} orphan event(s) pruned`)}catch(a){console.error("[boot] reconcile failed:",a)}try{let a=await cf();a&&console.log(`[boot] resumed ${a} pending design handoff(s)`)}catch(a){console.error("[boot] resume design handoffs failed:",a)}try{let a=process.env.CONSTELLA_RUN_MODE;a&&["start","auth","vps","portable"].includes(a)&&(await e.db.update(f.organization).set({runMode:a}).where((0,d.ne)(f.organization.runMode,a)),(await e.db.update(f.workspace).set({runMode:a}).where((0,d.Uo)((0,d.ne)(f.workspace.runMode,"off"),(0,d.ne)(f.workspace.runMode,a))).returning({id:f.workspace.id})).length&&console.log(`[boot] run mode synced to --${a}`))}catch(a){console.error("[boot] run-mode sync failed:",a)}try{let a=function(){let a=e.db.select({id:f.workspace.id,orgId:f.workspace.orgId,stack:f.workspace.stack}).from(f.workspace).all(),b=(0,n.Ws)(),c=0;for(let g of a){let a=e.db.select({id:f.agent.id,handle:f.agent.handle}).from(f.agent).where((0,d.eq)(f.agent.workspaceId,g.id)).all();if(!a.length)continue;let h=Object.fromEntries(a.map(a=>[a.handle,a.id]));try{c+=function(a){let{orgId:b,wsId:c,names:g,agentIds:h}=a,i=a.linkNames?new Set(a.linkNames):null,j=0;for(let a of g){let g=(0,n.fi)(a);if(!g||e.db.select({id:f.skill.id}).from(f.skill).where((0,d.Uo)((0,d.eq)(f.skill.workspaceId,c),(0,d.eq)(f.skill.name,a))).get())continue;let k=(0,n.qg)(a);if(!k)continue;let o=(0,n.BC)(k),p=`When working with ${a} in this project.`,q=`# Skill — ${a}
305
305
 
306
306
  **Trigger:** ${p}
307
307
 
@@ -907,4 +907,4 @@ params: ${b}`),this.query=a,this.params=b,this.cause=c,Error.captureStackTrace(t
907
907
  }
908
908
 
909
909
  Read more: https://nextjs.org/docs/messages/middleware-new-signature
910
- `)}}class f extends Error{constructor(){super("The request.page has been deprecated in favour of `URLPattern`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n ")}}class g extends Error{constructor(){super("The request.ua has been removed in favour of `userAgent` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n ")}}},85239:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"addPathPrefix",{enumerable:!0,get:function(){return e}});let d=c(39098);function e(a,b){if(!a.startsWith("/")||!b)return a;let{pathname:c,query:e,hash:f}=(0,d.parsePath)(a);return`${b}${c}${e}${f}`}},85556:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"InvariantError",{enumerable:!0,get:function(){return c}});class c extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},85680:(a,b,c)=>{"use strict";c.d(b,{z:()=>f});var d=c(9853),e=c(62547);let f=({schema:a,usePlural:b})=>{let c=(0,e.G)({schema:a,usePlural:b});return({field:b,model:e})=>{if("id"===b||"_id"===b)return"id";let f=c(e),g=a[f]?.fields[b];if(!g){let c=Object.entries(a[f].fields).find(([a,c])=>c.fieldName===b);c&&(g=c[1],b=c[0])}if(!g)throw new d.$l(`Field ${b} not found in model ${f}`);return b}}},86965:(a,b,c)=>{"use strict";Object.defineProperty(b,"e",{enumerable:!0,get:function(){return k}});let d=c(52730),e=c(84698),f=c(29294),g=c(63033),h=c(46752),i=0;async function j(a,b,c,e,f,g,i){await b.set(c,{kind:h.CachedRouteKind.FETCH,data:{headers:{},body:JSON.stringify(a),status:200,url:""},revalidate:"number"!=typeof f?d.CACHE_ONE_YEAR_SECONDS:f},{fetchCache:!0,tags:e,fetchIdx:g,fetchUrl:i})}function k(a,b,c={}){if(0===c.revalidate)throw Object.defineProperty(Error(`Invariant revalidate: 0 can not be passed to unstable_cache(), must be "false" or "> 0" ${a.toString()}`),"__NEXT_ERROR_CODE",{value:"E57",enumerable:!1,configurable:!0});let d=c.tags?(0,e.validateTags)(c.tags,`unstable_cache ${a.toString()}`):[];(0,e.validateRevalidate)(c.revalidate,`unstable_cache ${a.name||a.toString()}`);let l=`${a.toString()}-${Array.isArray(b)&&b.join(",")}`;return async(...b)=>{let e=f.workAsyncStorage.getStore(),k=g.workUnitAsyncStorage.getStore(),m=(null==e?void 0:e.incrementalCache)||globalThis.__incrementalCache;if(!m)throw Object.defineProperty(Error(`Invariant: incrementalCache missing in unstable_cache ${a.toString()}`),"__NEXT_ERROR_CODE",{value:"E469",enumerable:!1,configurable:!0});let n=k?(0,g.getCacheSignal)(k):null;n&&n.beginRead();try{let f=e&&k?function(a,b){switch(b.type){case"request":let c=b.url.pathname,d=new URLSearchParams(b.url.search),e=[...d.keys()].sort((a,b)=>a.localeCompare(b)).map(a=>`${a}=${d.get(a)}`).join("&");return`${c}${e.length?"?":""}${e}`;case"prerender":case"prerender-client":case"validation-client":case"prerender-runtime":case"prerender-ppr":case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":case"generate-static-params":return a.route;default:return b}}(e,k):"",n=`${l}-${JSON.stringify(b)}`,o=await m.generateCacheKey(n),p=`unstable_cache ${f} ${a.name?` ${a.name}`:o}`,q=(e?e.nextFetchId:i)??1,r=null==k?void 0:k.implicitTags,s={type:"unstable-cache",phase:"render",implicitTags:r,draftMode:k&&e&&(0,g.getDraftModeProviderForCacheScope)(e,k),rootParams:void 0};if(e){e.nextFetchId=q+1;let f=!1;if(k)switch(k.type){case"cache":case"private-cache":case"prerender":case"prerender-runtime":case"prerender-ppr":case"prerender-legacy":"number"==typeof c.revalidate&&(k.revalidate<c.revalidate||(k.revalidate=c.revalidate));let i=k.tags;if(null===i)k.tags=d.slice();else for(let a of d)i.includes(a)||i.push(a);break;case"unstable-cache":f=!0}if(!f&&"force-no-store"!==e.fetchCache&&!e.isOnDemandRevalidate&&!m.isOnDemandRevalidate&&!e.isDraftMode){let f=await m.get(o,{kind:h.IncrementalCacheKind.FETCH,revalidate:c.revalidate,tags:d,softTags:null==r?void 0:r.tags,fetchIdx:q,fetchUrl:p});if(f&&f.value)if(f.value.kind!==h.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${n}`);else{let h=void 0!==f.value.data.body?JSON.parse(f.value.data.body):void 0;if(f.isStale){if(e.pendingRevalidates||(e.pendingRevalidates={}),!e.pendingRevalidates[n]){let f=g.workUnitAsyncStorage.run(s,a,...b).then(async a=>(await j(a,m,o,d,c.revalidate,q,p),a)).catch(a=>(console.error(`revalidating cache with key: ${n}`,a),h));e.isStaticGeneration&&f.catch(()=>{}),e.pendingRevalidates[n]=f}if(e.isStaticGeneration)return await e.pendingRevalidates[n]}return h}}let l=await g.workUnitAsyncStorage.run(s,a,...b);return e.isDraftMode||(e.pendingRevalidates||(e.pendingRevalidates={}),e.pendingRevalidates[n]=j(l,m,o,d,c.revalidate,q,p)),l}{if(i+=1,!m.isOnDemandRevalidate){let a=await m.get(o,{kind:h.IncrementalCacheKind.FETCH,revalidate:c.revalidate,tags:d,fetchIdx:q,fetchUrl:p,softTags:null==r?void 0:r.tags});if(a&&a.value){if(a.value.kind!==h.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${n}`);else if(!a.isStale)return void 0!==a.value.data.body?JSON.parse(a.value.data.body):void 0}}let e=await g.workUnitAsyncStorage.run(s,a,...b);return await j(e,m,o,d,c.revalidate,q,p),e}}finally{n&&n.endRead()}}}},87143:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={delayUntilRuntimeStage:function(){return o},getRuntimeStage:function(){return n},isHangingPromiseRejectionError:function(){return g},makeDevtoolsIOAwarePromise:function(){return m},makeHangingPromise:function(){return k}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(94931);function g(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===h}let h="HANGING_PROMISE_REJECTION";class i extends Error{constructor(a,b){super(`During prerendering, ${b} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${b} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${a}".`),this.route=a,this.expression=b,this.digest=h}}let j=new WeakMap;function k(a,b,c){if(a.aborted)return Promise.reject(new i(b,c));{let d=new Promise((d,e)=>{let f=e.bind(null,new i(b,c)),g=j.get(a);if(g)g.push(f);else{let b=[f];j.set(a,b),a.addEventListener("abort",()=>{for(let a=0;a<b.length;a++)b[a]()},{once:!0})}});return d.catch(l),d}}function l(){}function m(a,b,c){return b.stagedRendering?b.stagedRendering.delayUntilStage(c,void 0,a):new Promise(b=>{setTimeout(()=>{b(a)},0)})}function n(a){return a.currentStage===f.RenderStage.EarlyStatic||a.currentStage===f.RenderStage.EarlyRuntime?f.RenderStage.EarlyRuntime:f.RenderStage.Runtime}function o(a,b){let{stagedRendering:c}=a;return c?c.waitForStage(n(c)).then(()=>b):b}},87301:(a,b,c)=>{"use strict";c.d(b,{L:()=>o});var d=c(91408),e=c(37694),f=c(69832),g=c(22046),h=c(21513),i=c(18110);let j=(0,i.CN)({is:a=>"ReturningNode"===a.kind,create:a=>(0,i.CN)({kind:"ReturningNode",selections:(0,i.CN)(a)}),cloneWithSelections:(a,b)=>(0,i.CN)({...a,selections:a.selections?(0,i.CN)([...a.selections,...b]):(0,i.CN)(b)})}),k=(0,i.CN)({is:a=>"ExplainNode"===a.kind,create:(a,b)=>(0,i.CN)({kind:"ExplainNode",format:a,options:b})});var l=c(107);let m=(0,i.CN)({is:a=>"OutputNode"===a.kind,create:a=>(0,i.CN)({kind:"OutputNode",selections:(0,i.CN)(a)}),cloneWithSelections:(a,b)=>(0,i.CN)({...a,selections:a.selections?(0,i.CN)([...a.selections,...b]):(0,i.CN)(b)})});var n=c(54254);let o=(0,i.CN)({is:a=>e.L.is(a)||d.o.is(a)||f.U.is(a)||g.e.is(a)||l.r.is(a),cloneWithEndModifier:(a,b)=>(0,i.CN)({...a,endModifiers:a.endModifiers?(0,i.CN)([...a.endModifiers,b]):(0,i.CN)([b])}),cloneWithWhere:(a,b)=>(0,i.CN)({...a,where:a.where?h.o.cloneWithOperation(a.where,"And",b):h.o.create(b)}),cloneWithJoin:(a,b)=>(0,i.CN)({...a,joins:a.joins?(0,i.CN)([...a.joins,b]):(0,i.CN)([b])}),cloneWithReturning:(a,b)=>(0,i.CN)({...a,returning:a.returning?j.cloneWithSelections(a.returning,b):j.create(b)}),cloneWithoutReturning:a=>(0,i.CN)({...a,returning:void 0}),cloneWithoutWhere:a=>(0,i.CN)({...a,where:void 0}),cloneWithExplain:(a,b,c)=>(0,i.CN)({...a,explain:k.create(b,c?.toOperationNode())}),cloneWithTop:(a,b)=>(0,i.CN)({...a,top:b}),cloneWithOutput:(a,b)=>(0,i.CN)({...a,output:a.output?m.cloneWithSelections(a.output,b):m.create(b)}),cloneWithOrderByItems:(a,b)=>(0,i.CN)({...a,orderBy:a.orderBy?n.O.cloneWithItems(a.orderBy,b):n.O.create(b)}),cloneWithoutOrderBy:a=>(0,i.CN)({...a,orderBy:void 0})})},88035:(a,b,c)=>{"use strict";c.d(b,{C:()=>h,g:()=>g});var d=c(60351),e=c(45541),f=c(18110);class g{#a1;get dynamicReference(){return this.#a1}get refType(){}constructor(a){this.#a1=a}toOperationNode(){return(0,e.vd)(this.#a1)}}function h(a){return(0,f.Gv)(a)&&(0,d.N)(a)&&(0,f.Kg)(a.dynamicReference)}},88200:(a,b,c)=>{"use strict";c.d(b,{jo:()=>C,D:()=>D});var d=c(44264),e=c(58639),f=c(65340),g=c(81502);class h extends g.o{static [d.i]="SQLiteBigIntBuilder";constructor(a){super(a,"bigint","SQLiteBigInt")}build(a){return new i(a,this.config)}}class i extends g.v{static [d.i]="SQLiteBigInt";getSQLType(){return"blob"}mapFromDriverValue(a){return"u">typeof Buffer&&Buffer.from?BigInt((Buffer.isBuffer(a)?a:a instanceof ArrayBuffer?Buffer.from(a):a.buffer?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a)).toString("utf8")):BigInt(f.su.decode(a))}mapToDriverValue(a){return Buffer.from(a.toString())}}class j extends g.o{static [d.i]="SQLiteBlobJsonBuilder";constructor(a){super(a,"json","SQLiteBlobJson")}build(a){return new k(a,this.config)}}class k extends g.v{static [d.i]="SQLiteBlobJson";getSQLType(){return"blob"}mapFromDriverValue(a){return"u">typeof Buffer&&Buffer.from?JSON.parse((Buffer.isBuffer(a)?a:a instanceof ArrayBuffer?Buffer.from(a):a.buffer?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a)).toString("utf8")):JSON.parse(f.su.decode(a))}mapToDriverValue(a){return Buffer.from(JSON.stringify(a))}}class l extends g.o{static [d.i]="SQLiteBlobBufferBuilder";constructor(a){super(a,"buffer","SQLiteBlobBuffer")}build(a){return new m(a,this.config)}}class m extends g.v{static [d.i]="SQLiteBlobBuffer";mapFromDriverValue(a){return Buffer.isBuffer(a)?a:Buffer.from(a)}getSQLType(){return"blob"}}function n(a,b){let{name:c,config:d}=(0,f.Ll)(a,b);return d?.mode==="json"?new j(c):d?.mode==="bigint"?new h(c):new l(c)}class o extends g.o{static [d.i]="SQLiteCustomColumnBuilder";constructor(a,b,c){super(a,"custom","SQLiteCustomColumn"),this.config.fieldConfig=b,this.config.customTypeParams=c}build(a){return new p(a,this.config)}}class p extends g.v{static [d.i]="SQLiteCustomColumn";sqlName;mapTo;mapFrom;constructor(a,b){super(a,b),this.sqlName=b.customTypeParams.dataType(b.fieldConfig),this.mapTo=b.customTypeParams.toDriver,this.mapFrom=b.customTypeParams.fromDriver}getSQLType(){return this.sqlName}mapFromDriverValue(a){return"function"==typeof this.mapFrom?this.mapFrom(a):a}mapToDriverValue(a){return"function"==typeof this.mapTo?this.mapTo(a):a}}function q(a){return(b,c)=>{let{name:d,config:e}=(0,f.Ll)(b,c);return new o(d,e,a)}}var r=c(81740);class s extends g.o{static [d.i]="SQLiteNumericBuilder";constructor(a){super(a,"string","SQLiteNumeric")}build(a){return new t(a,this.config)}}class t extends g.v{static [d.i]="SQLiteNumeric";mapFromDriverValue(a){return"string"==typeof a?a:String(a)}getSQLType(){return"numeric"}}class u extends g.o{static [d.i]="SQLiteNumericNumberBuilder";constructor(a){super(a,"number","SQLiteNumericNumber")}build(a){return new v(a,this.config)}}class v extends g.v{static [d.i]="SQLiteNumericNumber";mapFromDriverValue(a){return"number"==typeof a?a:Number(a)}mapToDriverValue=String;getSQLType(){return"numeric"}}class w extends g.o{static [d.i]="SQLiteNumericBigIntBuilder";constructor(a){super(a,"bigint","SQLiteNumericBigInt")}build(a){return new x(a,this.config)}}class x extends g.v{static [d.i]="SQLiteNumericBigInt";mapFromDriverValue=BigInt;mapToDriverValue=String;getSQLType(){return"numeric"}}function y(a,b){let{name:c,config:d}=(0,f.Ll)(a,b),e=d?.mode;return"number"===e?new u(c):"bigint"===e?new w(c):new s(c)}var z=c(22950),A=c(16035);let B=Symbol.for("drizzle:SQLiteInlineForeignKeys");class C extends e.XI{static [d.i]="SQLiteTable";static Symbol=Object.assign({},e.XI.Symbol,{InlineForeignKeys:B});[e.XI.Symbol.Columns];[B]=[];[e.XI.Symbol.ExtraConfigBuilder]=void 0}let D=(a,b,c)=>(function(a,b,c,d=a){let f=new C(a,void 0,d),g=Object.fromEntries(Object.entries("function"==typeof b?b({blob:n,customType:q,integer:r.nd,numeric:y,real:z.x,text:A.Qq}):b).map(([a,b])=>{b.setName(a);let c=b.build(f);return f[B].push(...b.buildForeignKeys(c,f)),[a,c]})),h=Object.assign(f,g);return h[e.XI.Symbol.Columns]=g,h[e.XI.Symbol.ExtraConfigColumns]=g,c&&(h[C.Symbol.ExtraConfigBuilder]=c),h})(a,b,c)},88743:(a,b,c)=>{"use strict";c.d(b,{l:()=>d});class d{get supportsCreateIfNotExists(){return!0}get supportsMultipleConnections(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!1}get supportsOutput(){return!1}}},88825:(a,b,c)=>{let d=+(process.versions?process.versions.node:"").split(".")[0]||0;a.exports=function(a,b){var e=c(74075);let f=d>=15&&b>0?{maxOutputLength:b}:{};return{inflate:function(){return e.inflateRawSync(a,f)},inflateAsync:function(b){var c=e.createInflateRaw(f),d=[],g=0;c.on("data",function(a){d.push(a),g+=a.length}),c.on("end",function(){var a=Buffer.alloc(g),c=0;a.fill(0);for(var e=0;e<d.length;e++){var f=d[e];f.copy(a,c),c+=f.length}b&&b(a)}),c.end(a)}}}},88891:(a,b,c)=>{"use strict";c.d(b,{s:()=>g});var d=c(24607);let e=/"/g,f=/[\\'"]/g;class g extends d.n{visitOrAction(a){this.append("or "),this.append(a.action)}getCurrentParameterPlaceholder(){return"?"}getLeftExplainOptionsWrapper(){return""}getRightExplainOptionsWrapper(){return""}getLeftIdentifierWrapper(){return'"'}getRightIdentifierWrapper(){return'"'}getAutoIncrement(){return"autoincrement"}sanitizeIdentifier(a){return a.replace(e,'""')}sanitizeJSONPathMemberValue(a){return a.replace(f,a=>"\\"===a?"\\\\":"'"===a?"''":'\\"')}visitDefaultInsertValue(a){this.append("null")}}},89192:(a,b,c)=>{"use strict";c.d(b,{B:()=>p});var d=c(50182),e=c(98051),f=c(48145),g=c(4224),h=c(75525),i=c(18110);let j={AlterTableNode:!0,AlterTypeNode:!0,CreateIndexNode:!0,CreateSchemaNode:!0,CreateTableNode:!0,CreateTypeNode:!0,CreateViewNode:!0,DeleteQueryNode:!0,DropIndexNode:!0,DropSchemaNode:!0,DropTableNode:!0,DropTypeNode:!0,RefreshMaterializedViewNode:!0,DropViewNode:!0,InsertQueryNode:!0,RawNode:!0,SelectQueryNode:!0,UpdateQueryNode:!0,MergeQueryNode:!0};var k=c(4432),l=c(3694),m=c(62030);let n=(0,i.CN)({json_agg:!0,to_json:!0});class o extends h.V{#a2;#a3=new Set;#a4=new Set;constructor(a){super(),this.#a2=a}transformNodeImpl(a,b){if(!((0,i.Gv)(a)&&(0,i.Kg)(a.kind))||!0!==j[a.kind])return super.transformNodeImpl(a,b);let c=this.#a5(a);for(let a of c)this.#a4.add(a);let d=this.#a6(a);for(let a of d)this.#a3.add(a);let e=super.transformNodeImpl(a,b);for(let a of d)this.#a3.delete(a);for(let a of c)this.#a4.delete(a);return e}transformSchemableIdentifier(a,b){let c=super.transformSchemableIdentifier(a,b);return c.schema||!this.#a3.has(a.identifier.name)?c:{...c,schema:e.O.create(this.#a2)}}transformReferences(a,b){let c=super.transformReferences(a,b);return c.table.table.schema?c:{...c,table:l.H.createWithSchema(this.#a2,c.table.table.identifier.name)}}transformAggregateFunction(a,b){return{...super.transformAggregateFunction({...a,aggregated:[]},b),aggregated:this.#a7(a,b,"aggregated")}}transformFunction(a,b){return{...super.transformFunction({...a,arguments:[]},b),arguments:this.#a7(a,b,"arguments")}}transformSelectModifier(a,b){return{...super.transformSelectModifier({...a,of:void 0},b),of:a.of?.map(a=>l.H.is(a)&&!a.table.schema?{...a,table:this.transformIdentifier(a.table.identifier,b)}:this.transformNode(a,b))}}#a7(a,b,c){return n[a.func]?a[c].map(a=>!l.H.is(a)||a.table.schema?this.transformNode(a,b):{...a,table:this.transformIdentifier(a.table.identifier,b)}):this.transformNodeList(a[c],b)}#a6(a){let b=new Set;if("name"in a&&a.name&&k.y.is(a.name)&&this.#a8(a.name,b),"from"in a&&a.from)for(let c of a.from.froms)this.#a9(c,b);if("into"in a&&a.into&&this.#a9(a.into,b),"table"in a&&a.table&&this.#a9(a.table,b),"joins"in a&&a.joins)for(let c of a.joins)this.#a9(c.table,b);return"using"in a&&a.using&&(f.b.is(a.using)?this.#a9(a.using.table,b):this.#a9(a.using,b)),b}#a5(a){let b=new Set;return"with"in a&&a.with&&this.#ba(a.with,b),b}#a9(a,b){if(l.H.is(a))return this.#a8(a.table,b);if(d.N.is(a)&&l.H.is(a.node))return this.#a8(a.node.table,b);if(g.v.is(a)){for(let c of a.items)this.#a9(c,b);return}if(m.f.is(a)){for(let c of a.tables)this.#a9(c,b);return}}#a8(a,b){let c=a.identifier.name;this.#a3.has(c)||this.#a4.has(c)||b.add(c)}#ba(a,b){for(let c of a.expressions){let a=c.name.table.table.identifier.name;this.#a4.has(a)||b.add(a)}}}class p{#T;constructor(a){this.#T=new o(a)}transformQuery(a){return this.#T.transformNode(a.node,a.queryId)}async transformResult(a){return a.result}}},90386:(a,b,c)=>{"use strict";c.d(b,{U:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"SelectAllNode"===a.kind,create:()=>(0,d.CN)({kind:"SelectAllNode"})})},90588:(a,b,c)=>{"use strict";c.d(b,{s:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"ValueListNode"===a.kind,create:a=>(0,d.CN)({kind:"ValueListNode",values:(0,d.CN)(a)})})},90977:(a,b,c)=>{let d=c(25296),e=c(33873),f=c(9738),g=c(9460),h=(...a)=>d.findLast(a,a=>"boolean"==typeof a),i=(...a)=>d.findLast(a,a=>"string"==typeof a),j={noSort:!1,readEntries:!1,method:d.Constants.NONE,fs:null};a.exports=function(a,b){let c=null,k=Object.assign(Object.create(null),j);a&&"object"==typeof a&&(a instanceof Uint8Array||(Object.assign(k,a),a=k.input?k.input:void 0,k.input&&delete k.input),Buffer.isBuffer(a)&&(c=a,k.method=d.Constants.BUFFER,a=void 0)),Object.assign(k,b);let l=new d(k);if(("object"!=typeof k.decoder||"function"!=typeof k.decoder.encode||"function"!=typeof k.decoder.decode)&&(k.decoder=d.decoder),a&&"string"==typeof a)if(l.fs.existsSync(a))k.method=d.Constants.FILE,k.filename=a,c=l.fs.readFileSync(a);else throw d.Errors.INVALID_FILENAME();let m=new g(c,k),{canonical:n,sanitize:o,zipnamefix:p}=d;function q(a){if(a&&m){var b;if("string"==typeof a&&(b=m.getEntry(e.posix.normalize(a))),"object"==typeof a&&void 0!==a.entryName&&void 0!==a.header&&(b=m.getEntry(a.entryName)),b)return b}return null}function r(a){let{join:b,normalize:c,sep:d}=e.posix;return b(e.isAbsolute(a)?"/":".",c(d+a.split("\\").join(d)+d))}function s(a){if(a instanceof RegExp)return function(b){return a.test(b)};return"function"!=typeof a?()=>!0:a}let t=(a,b)=>{let c=b.slice(-1);return c=c===l.sep?l.sep:"",e.relative(a,b)+c};return{readFile:function(a,b){var c=q(a);return c&&c.getData(b)||null},childCount:function(a){let b=q(a);if(b)return m.getChildCount(b)},readFileAsync:function(a,b){var c=q(a);c?c.getDataAsync(b):b(null,"getEntry failed for:"+a)},readAsText:function(a,b){var c=q(a);if(c){var d=c.getData();if(d&&d.length)return d.toString(b||"utf8")}return""},readAsTextAsync:function(a,b,c){var d=q(a);d?d.getDataAsync(function(a,d){d?b(a,d):a&&a.length?b(a.toString(c||"utf8")):b("")}):b("")},deleteFile:function(a,b=!0){var c=q(a);c&&m.deleteFile(c.entryName,b)},deleteEntry:function(a){var b=q(a);b&&m.deleteEntry(b.entryName)},addZipComment:function(a){m.comment=a},getZipComment:function(){return m.comment||""},addZipEntryComment:function(a,b){var c=q(a);c&&(c.comment=b)},getZipEntryComment:function(a){var b=q(a);return b&&b.comment||""},updateFile:function(a,b){var c=q(a);c&&c.setData(b)},addLocalFile:function(a,b,c,f){if(l.fs.existsSync(a)){b=b?r(b):"";let d=e.win32.basename(e.win32.normalize(a));b+=c||d;let g=l.fs.statSync(a),h=g.isFile()?l.fs.readFileSync(a):Buffer.alloc(0);g.isDirectory()&&(b+=l.sep),this.addFile(b,h,f,g)}else throw d.Errors.FILE_NOT_FOUND(a)},addLocalFileAsync:function(a,b){a="object"==typeof a?a:{localPath:a};let c=e.resolve(a.localPath),{comment:d}=a,{zipPath:f,zipName:g}=a,h=this;l.fs.stat(c,function(a,i){if(a)return b(a,!1);f=f?r(f):"";let j=e.win32.basename(e.win32.normalize(c));if(f+=g||j,i.isFile())l.fs.readFile(c,function(a,c){return a?b(a,!1):(h.addFile(f,c,d,i),setImmediate(b,void 0,!0))});else if(i.isDirectory())return f+=l.sep,h.addFile(f,Buffer.alloc(0),d,i),setImmediate(b,void 0,!0)})},addLocalFolder:function(a,b,c){if(c=s(c),b=b?r(b):"",a=e.normalize(a),l.fs.existsSync(a)){let d=l.findFiles(a);if(d.length)for(let f of d){let d=e.join(b,t(a,f));c(d)&&this.addLocalFile(f,e.dirname(d))}}else throw d.Errors.FILE_NOT_FOUND(a)},addLocalFolderAsync:function(a,b,c,f){f=s(f),c=c?r(c):"",a=e.normalize(a);var g=this;l.fs.open(a,"r",function(e){if(e&&"ENOENT"===e.code)b(void 0,d.Errors.FILE_NOT_FOUND(a));else if(e)b(void 0,e);else{var h=l.findFiles(a),i=-1,j=function(){if((i+=1)<h.length){var d=h[i],e=t(a,d).split("\\").join("/");e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),f(e)?l.fs.stat(d,function(a,f){a&&b(void 0,a),f.isFile()?l.fs.readFile(d,function(a,d){a?b(void 0,a):(g.addFile(c+e,d,"",f),j())}):(g.addFile(c+e+"/",Buffer.alloc(0),"",f),j())}):process.nextTick(()=>{j()})}else b(!0,void 0)};j()}})},addLocalFolderAsync2:function(a,b){let c=this;a="object"==typeof a?a:{localPath:a},localPath=e.resolve(r(a.localPath));let{zipPath:f,filter:g,namefix:h}=a;if(g instanceof RegExp){var i;i=g,g=function(a){return i.test(a)}}else"function"!=typeof g&&(g=function(){return!0});f=f?r(f):"","latin1"==h&&(h=a=>a.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"")),"function"!=typeof h&&(h=a=>a);let j=a=>e.join(f,h(t(localPath,a)));l.fs.open(localPath,"r",function(a){a&&"ENOENT"===a.code?b(void 0,d.Errors.FILE_NOT_FOUND(localPath)):a?b(void 0,a):l.findFilesAsync(localPath,function(a,d){if(a)return b(a);(d=d.filter(a=>g(j(a)))).length||b(void 0,!1),setImmediate(d.reverse().reduce(function(a,b){return function(d,f){if(d||!1===f)return setImmediate(a,d,!1);c.addLocalFileAsync({localPath:b,zipPath:e.dirname(j(b)),zipName:e.win32.basename(e.win32.normalize(h(b)))},a)}},b))})})},addLocalFolderPromise:function(a,b){return new Promise((c,d)=>{this.addLocalFolderAsync2(Object.assign({localPath:a},b),(a,b)=>{a&&d(a),b&&c(this)})})},addFile:function(a,b,c,d){let e=q(a=p(a)),g=null!=e;g||((e=new f(k)).entryName=a),e.comment=c||"";let h="object"==typeof d&&d instanceof l.fs.Stats;h&&(e.header.time=d.mtime);var i=16*!!e.isDirectory;let j=e.isDirectory?16384:32768;return h?j|=4095&d.mode:"number"==typeof d?j|=4095&d:j|=e.isDirectory?493:420,i=(i|j<<16)>>>0,e.attr=i,e.setData(b),g||m.setEntry(e),e},getEntries:function(a){return m.password=a,m?m.entries:[]},getEntry:function(a){return q(a)},getEntryCount:function(){return m.getEntryCount()},forEach:function(a){return m.forEach(a)},extractEntryTo:function(a,b,c,f,g,j){f=h(!1,f),g=h(!1,g),c=h(!0,c),j=i(g,j);var k=q(a);if(!k)throw d.Errors.NO_ENTRY();var p=n(k.entryName),r=o(b,j&&!k.isDirectory?j:c?p:e.basename(p));if(k.isDirectory)return m.getEntryChildren(k).forEach(function(a){if(a.isDirectory)return;var h=a.getData();if(!h)throw d.Errors.CANT_EXTRACT_FILE();var i=n(a.entryName),j=o(b,c?i:e.basename(i));let k=g?a.header.fileAttr:void 0;l.writeFileTo(j,h,f,k)}),!0;var s=k.getData(m.password);if(!s)throw d.Errors.CANT_EXTRACT_FILE();if(l.fs.existsSync(r)&&!f)throw d.Errors.CANT_OVERRIDE();let t=g?a.header.fileAttr:void 0;return l.writeFileTo(r,s,f,t),!0},test:function(a){if(!m)return!1;for(var b in m.entries)try{if(b.isDirectory)continue;if(!m.entries[b].getData(a))return!1}catch(a){return!1}return!0},extractAllTo:function(a,b,c,e){if(e=i(c=h(!1,c),e),b=h(!1,b),!m)throw d.Errors.NO_ZIP();m.entries.forEach(function(f){var g=o(a,n(f.entryName));if(f.isDirectory)return void l.makeDir(g);var h=f.getData(e);if(!h)throw d.Errors.CANT_EXTRACT_FILE();let i=c?f.header.fileAttr:void 0;l.writeFileTo(g,h,b,i);try{l.fs.utimesSync(g,f.header.time,f.header.time)}catch(a){throw d.Errors.CANT_EXTRACT_FILE()}})},extractAllToAsync:function(a,b,c,f){if(f=((...a)=>d.findLast(a,a=>"function"==typeof a))(b,c,f),c=h(!1,c),b=h(!1,b),!f)return new Promise((d,e)=>{this.extractAllToAsync(a,b,c,function(a){a?e(a):d(this)})});if(!m)return void f(d.Errors.NO_ZIP());a=e.resolve(a);let g=b=>o(a,e.normalize(n(b.entryName))),i=(a,b)=>Error(a+': "'+b+'"'),j=[],k=[];for(let a of(m.entries.forEach(a=>{a.isDirectory?j.push(a):k.push(a)}),j)){let b=g(a),d=c?a.header.fileAttr:void 0;try{l.makeDir(b),d&&l.fs.chmodSync(b,d),l.fs.utimesSync(b,a.header.time,a.header.time)}catch(a){f(i("Unable to create folder",b))}}k.reverse().reduce(function(f,g){return function(h){if(h)f(h);else{let h=e.normalize(n(g.entryName)),j=o(a,h);g.getDataAsync(function(a,e){if(e)f(e);else if(a){let d=c?g.header.fileAttr:void 0;l.writeFileToAsync(j,a,b,d,function(a){a||f(i("Unable to write file",j)),l.fs.utimes(j,g.header.time,g.header.time,function(a){a?f(i("Unable to set times",j)):f()})})}else f(d.Errors.CANT_EXTRACT_FILE())})}}},f)()},writeZip:function(a,b){if(1==arguments.length&&"function"==typeof a&&(b=a,a=""),!a&&k.filename&&(a=k.filename),a){var c=m.compressToBuffer();if(c){var d=l.writeFileTo(a,c,!0);"function"==typeof b&&b(d?null:Error("failed"),"")}}},writeZipPromise:function(a,b){let{overwrite:c,perm:d}=Object.assign({overwrite:!0},b);return new Promise((b,e)=>{!a&&k.filename&&(a=k.filename),a||e("ADM-ZIP: ZIP File Name Missing"),this.toBufferPromise().then(f=>{l.writeFileToAsync(a,f,c,d,a=>a?b(a):e("ADM-ZIP: Wasn't able to write zip file"))},e)})},toBufferPromise:function(){return new Promise((a,b)=>{m.toAsyncBuffer(a,b)})},toBuffer:function(a,b,c,d){return"function"==typeof a?(m.toAsyncBuffer(a,b,c,d),null):m.compressToBuffer()}}}},90983:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={djb2Hash:function(){return e},hexHash:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return b>>>0}function f(a){return e(a).toString(36).slice(0,5)}},91408:(a,b,c)=>{"use strict";c.d(b,{o:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"InsertQueryNode"===a.kind,create:(a,b,c)=>(0,d.CN)({kind:"InsertQueryNode",into:a,...b&&{with:b},replace:c}),createWithoutInto:()=>(0,d.CN)({kind:"InsertQueryNode"}),cloneWith:(a,b)=>(0,d.CN)({...a,...b})})},92930:(a,b,c)=>{"use strict";c.d(b,{I:()=>l});var d=c(80733),e=c(77598),f=c(15220),g=c(16338),h=c(82339),i=c(9165),j=c(36156),k=c(2229);async function l(a,b){await h.db.insert(i.event).values({id:(0,e.randomUUID)(),workspaceId:a,runId:b.runId,channel:b.channel??"room",agentId:b.agentId??null,seq:Date.now(),kind:b.kind,target:(b.target??"").slice(0,500),detail:(b.detail??"").slice(0,8e3)}),(0,k.r)(a)}async function m(a,b=0){let{workspace:c}=await (0,j.nP)();return h.db.select().from(i.event).where((0,f.Uo)((0,f.eq)(i.event.workspaceId,c.id),(0,f.eq)(i.event.channel,a),(0,f.gt)(i.event.seq,b))).orderBy((0,g.Y)(i.event.seq)).limit(300)}(0,c(20177).D)([l,m]),(0,d.A)(l,"60a238957762b5625582695c05d90f75b394483f2c",null),(0,d.A)(m,"60dba9908002f3000f3e7e8a0a7750d94f4e462c3d",null)},94457:(a,b,c)=>{"use strict";c.d(b,{Q:()=>e});var d=c(44264);class e{static [d.i]="ColumnBuilder";config;constructor(a,b,c){this.config={name:a,keyAsName:""===a,notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:b,columnType:c,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default(a){return this.config.default=a,this.config.hasDefault=!0,this}$defaultFn(a){return this.config.defaultFn=a,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn(a){return this.config.onUpdateFn=a,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName(a){""===this.config.name&&(this.config.name=a)}}},94931:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d,e={RenderStage:function(){return i},StagedRenderingController:function(){return j}};for(var f in e)Object.defineProperty(b,f,{enumerable:!0,get:e[f]});let g=c(85556),h=c(38697);var i=((d={})[d.Before=1]="Before",d[d.EarlyStatic=2]="EarlyStatic",d[d.Static=3]="Static",d[d.EarlyRuntime=4]="EarlyRuntime",d[d.Runtime=5]="Runtime",d[d.Dynamic=6]="Dynamic",d[d.Abandoned=7]="Abandoned",d);class j{constructor(a,b,c){this.abortSignal=a,this.abandonController=b,this.shouldTrackSyncIO=c,this.currentStage=1,this.syncInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.staticStageListeners=[],this.earlyRuntimeStageListeners=[],this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.staticStagePromise=(0,h.createPromiseWithResolvers)(),this.earlyRuntimeStagePromise=(0,h.createPromiseWithResolvers)(),this.runtimeStagePromise=(0,h.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,h.createPromiseWithResolvers)(),a&&a.addEventListener("abort",()=>{let{reason:b}=a;this.staticStagePromise.promise.catch(k),this.staticStagePromise.reject(b),this.earlyRuntimeStagePromise.promise.catch(k),this.earlyRuntimeStagePromise.reject(b),this.runtimeStagePromise.promise.catch(k),this.runtimeStagePromise.reject(b),this.dynamicStagePromise.promise.catch(k),this.dynamicStagePromise.reject(b)},{once:!0}),b&&b.signal.addEventListener("abort",()=>{this.abandonRender()},{once:!0})}onStage(a,b){if(this.currentStage>=a)b();else if(3===a)this.staticStageListeners.push(b);else if(4===a)this.earlyRuntimeStageListeners.push(b);else if(5===a)this.runtimeStageListeners.push(b);else if(6===a)this.dynamicStageListeners.push(b);else throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}shouldTrackSyncInterrupt(){if(!this.shouldTrackSyncIO)return!1;switch(this.currentStage){case 1:case 5:case 6:case 7:default:return!1;case 2:case 3:case 4:return!0}}syncInterruptCurrentStageWithReason(a){if(1!==this.currentStage&&7!==this.currentStage){if(this.abandonController)return void this.abandonController.abort();if(this.abortSignal){this.syncInterruptReason=a,this.currentStage=7;return}switch(this.currentStage){case 2:case 3:case 4:this.syncInterruptReason=a,this.advanceStage(6);return;case 5:return}}}getSyncInterruptReason(){return this.syncInterruptReason}getStaticStageEndTime(){return this.staticStageEndTime}getRuntimeStageEndTime(){return this.runtimeStageEndTime}abandonRender(){let{currentStage:a}=this;switch(a){case 2:this.resolveStaticStage();case 3:this.resolveEarlyRuntimeStage();case 4:this.resolveRuntimeStage();case 5:this.currentStage=7;return}}advanceStage(a){if(a<=this.currentStage)return;let b=this.currentStage;if(this.currentStage=a,b<3&&a>=3&&this.resolveStaticStage(),b<4&&a>=4&&this.resolveEarlyRuntimeStage(),b<5&&a>=5&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),b<6&&a>=6){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveStaticStage(){let a=this.staticStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.staticStagePromise.resolve()}resolveEarlyRuntimeStage(){let a=this.earlyRuntimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.earlyRuntimeStagePromise.resolve()}resolveRuntimeStage(){let a=this.runtimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.runtimeStagePromise.resolve()}resolveDynamicStage(){let a=this.dynamicStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.dynamicStagePromise.resolve()}getStagePromise(a){switch(a){case 3:return this.staticStagePromise.promise;case 4:return this.earlyRuntimeStagePromise.promise;case 5:return this.runtimeStagePromise.promise;case 6:return this.dynamicStagePromise.promise;default:throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}}waitForStage(a){return this.getStagePromise(a)}delayUntilStage(a,b,c){var d,e,f;let g,h=(d=this.getStagePromise(a),e=b,f=c,g=new Promise((a,b)=>{d.then(a.bind(null,f),b)}),void 0!==e&&(g.displayName=e),g);return this.abortSignal&&h.catch(k),h}}function k(){}},95260:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});let d=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"];function e(a){let b="";for(let c=0;c<a;++c)b+=d[~~(Math.random()*d.length)];return b}},95962:(a,b,c)=>{"use strict";c.d(b,{G:()=>f});var d=c(79362),e=c(18110);async function f(a,b){let c=new d.c,f=new d.c;return a.provideConnection(async a=>(c.resolve(a),await f.promise),b).catch(a=>c.reject(a)),(0,e.CN)({connection:await c.promise,release:f.resolve})}},96690:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={DynamicServerError:function(){return f},isDynamicServerError:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e="DYNAMIC_SERVER_USAGE";class f extends Error{constructor(a){super(`Dynamic server usage: ${a}`),this.description=a,this.digest=e}}function g(a){return"object"==typeof a&&null!==a&&"digest"in a&&"string"==typeof a.digest&&a.digest===e}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},97551:(a,b,c)=>{"use strict";c.d(b,{u:()=>e});let d=new Set;function e(a){d.has(a)||(d.add(a),console.log(a))}},97762:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={NEXT_REQUEST_META:function(){return e},addRequestMeta:function(){return h},getRequestMeta:function(){return f},removeRequestMeta:function(){return i},setRequestMeta:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=Symbol.for("NextInternalRequestMeta");function f(a,b){let c=a[e]||{};return"string"==typeof b?c[b]:c}function g(a,b){return a[e]=b,b}function h(a,b,c){let d=f(a);return d[b]=c,g(a,d)}function i(a,b){let c=f(a);return delete c[b],g(a,c)}},98051:(a,b,c)=>{"use strict";c.d(b,{O:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"IdentifierNode"===a.kind,create:a=>(0,d.CN)({kind:"IdentifierNode",name:a})})},98444:(a,b,c)=>{"use strict";c.d(b,{t:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"WhenNode"===a.kind,create:a=>(0,d.CN)({kind:"WhenNode",condition:a}),cloneWithResult:(a,b)=>(0,d.CN)({...a,result:b})})},98789:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={computeCacheBustingSearchParam:function(){return k},computeLegacyCacheBustingSearchParam:function(){return l}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(90983),g=new TextEncoder;function h(a){return void 0===a?"0":Array.isArray(a)?a.join(","):a}function i(a,b,c,d){return(void 0===a||"0"===a)&&void 0===b&&void 0===c&&void 0===d?null:[a??"0",h(b),h(c),h(d)].join(",")}async function j(a){var b=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",g.encode(a))).subarray(0,12);let c="";for(let a=0;a<b.length;a++)c+=String.fromCharCode(b[a]);return btoa(c).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function k(a,b,c,d){let e=i(a,b,c,d);return null===e?"":j(e)}function l(a,b,c,d){let e=i(a,b,c,d);return null===e?"":(0,f.hexHash)(e)}}};
910
+ `)}}class f extends Error{constructor(){super("The request.page has been deprecated in favour of `URLPattern`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n ")}}class g extends Error{constructor(){super("The request.ua has been removed in favour of `userAgent` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n ")}}},85239:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"addPathPrefix",{enumerable:!0,get:function(){return e}});let d=c(39098);function e(a,b){if(!a.startsWith("/")||!b)return a;let{pathname:c,query:e,hash:f}=(0,d.parsePath)(a);return`${b}${c}${e}${f}`}},85556:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"InvariantError",{enumerable:!0,get:function(){return c}});class c extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},85680:(a,b,c)=>{"use strict";c.d(b,{z:()=>f});var d=c(9853),e=c(62547);let f=({schema:a,usePlural:b})=>{let c=(0,e.G)({schema:a,usePlural:b});return({field:b,model:e})=>{if("id"===b||"_id"===b)return"id";let f=c(e),g=a[f]?.fields[b];if(!g){let c=Object.entries(a[f].fields).find(([a,c])=>c.fieldName===b);c&&(g=c[1],b=c[0])}if(!g)throw new d.$l(`Field ${b} not found in model ${f}`);return b}}},86965:(a,b,c)=>{"use strict";Object.defineProperty(b,"e",{enumerable:!0,get:function(){return k}});let d=c(52730),e=c(84698),f=c(29294),g=c(63033),h=c(46752),i=0;async function j(a,b,c,e,f,g,i){await b.set(c,{kind:h.CachedRouteKind.FETCH,data:{headers:{},body:JSON.stringify(a),status:200,url:""},revalidate:"number"!=typeof f?d.CACHE_ONE_YEAR_SECONDS:f},{fetchCache:!0,tags:e,fetchIdx:g,fetchUrl:i})}function k(a,b,c={}){if(0===c.revalidate)throw Object.defineProperty(Error(`Invariant revalidate: 0 can not be passed to unstable_cache(), must be "false" or "> 0" ${a.toString()}`),"__NEXT_ERROR_CODE",{value:"E57",enumerable:!1,configurable:!0});let d=c.tags?(0,e.validateTags)(c.tags,`unstable_cache ${a.toString()}`):[];(0,e.validateRevalidate)(c.revalidate,`unstable_cache ${a.name||a.toString()}`);let l=`${a.toString()}-${Array.isArray(b)&&b.join(",")}`;return async(...b)=>{let e=f.workAsyncStorage.getStore(),k=g.workUnitAsyncStorage.getStore(),m=(null==e?void 0:e.incrementalCache)||globalThis.__incrementalCache;if(!m)throw Object.defineProperty(Error(`Invariant: incrementalCache missing in unstable_cache ${a.toString()}`),"__NEXT_ERROR_CODE",{value:"E469",enumerable:!1,configurable:!0});let n=k?(0,g.getCacheSignal)(k):null;n&&n.beginRead();try{let f=e&&k?function(a,b){switch(b.type){case"request":let c=b.url.pathname,d=new URLSearchParams(b.url.search),e=[...d.keys()].sort((a,b)=>a.localeCompare(b)).map(a=>`${a}=${d.get(a)}`).join("&");return`${c}${e.length?"?":""}${e}`;case"prerender":case"prerender-client":case"validation-client":case"prerender-runtime":case"prerender-ppr":case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":case"generate-static-params":return a.route;default:return b}}(e,k):"",n=`${l}-${JSON.stringify(b)}`,o=await m.generateCacheKey(n),p=`unstable_cache ${f} ${a.name?` ${a.name}`:o}`,q=(e?e.nextFetchId:i)??1,r=null==k?void 0:k.implicitTags,s={type:"unstable-cache",phase:"render",implicitTags:r,draftMode:k&&e&&(0,g.getDraftModeProviderForCacheScope)(e,k),rootParams:void 0};if(e){e.nextFetchId=q+1;let f=!1;if(k)switch(k.type){case"cache":case"private-cache":case"prerender":case"prerender-runtime":case"prerender-ppr":case"prerender-legacy":"number"==typeof c.revalidate&&(k.revalidate<c.revalidate||(k.revalidate=c.revalidate));let i=k.tags;if(null===i)k.tags=d.slice();else for(let a of d)i.includes(a)||i.push(a);break;case"unstable-cache":f=!0}if(!f&&"force-no-store"!==e.fetchCache&&!e.isOnDemandRevalidate&&!m.isOnDemandRevalidate&&!e.isDraftMode){let f=await m.get(o,{kind:h.IncrementalCacheKind.FETCH,revalidate:c.revalidate,tags:d,softTags:null==r?void 0:r.tags,fetchIdx:q,fetchUrl:p});if(f&&f.value)if(f.value.kind!==h.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${n}`);else{let h=void 0!==f.value.data.body?JSON.parse(f.value.data.body):void 0;if(f.isStale){if(e.pendingRevalidates||(e.pendingRevalidates={}),!e.pendingRevalidates[n]){let f=g.workUnitAsyncStorage.run(s,a,...b).then(async a=>(await j(a,m,o,d,c.revalidate,q,p),a)).catch(a=>(console.error(`revalidating cache with key: ${n}`,a),h));e.isStaticGeneration&&f.catch(()=>{}),e.pendingRevalidates[n]=f}if(e.isStaticGeneration)return await e.pendingRevalidates[n]}return h}}let l=await g.workUnitAsyncStorage.run(s,a,...b);return e.isDraftMode||(e.pendingRevalidates||(e.pendingRevalidates={}),e.pendingRevalidates[n]=j(l,m,o,d,c.revalidate,q,p)),l}{if(i+=1,!m.isOnDemandRevalidate){let a=await m.get(o,{kind:h.IncrementalCacheKind.FETCH,revalidate:c.revalidate,tags:d,fetchIdx:q,fetchUrl:p,softTags:null==r?void 0:r.tags});if(a&&a.value){if(a.value.kind!==h.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${n}`);else if(!a.isStale)return void 0!==a.value.data.body?JSON.parse(a.value.data.body):void 0}}let e=await g.workUnitAsyncStorage.run(s,a,...b);return await j(e,m,o,d,c.revalidate,q,p),e}}finally{n&&n.endRead()}}}},87143:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={delayUntilRuntimeStage:function(){return o},getRuntimeStage:function(){return n},isHangingPromiseRejectionError:function(){return g},makeDevtoolsIOAwarePromise:function(){return m},makeHangingPromise:function(){return k}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(94931);function g(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===h}let h="HANGING_PROMISE_REJECTION";class i extends Error{constructor(a,b){super(`During prerendering, ${b} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${b} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${a}".`),this.route=a,this.expression=b,this.digest=h}}let j=new WeakMap;function k(a,b,c){if(a.aborted)return Promise.reject(new i(b,c));{let d=new Promise((d,e)=>{let f=e.bind(null,new i(b,c)),g=j.get(a);if(g)g.push(f);else{let b=[f];j.set(a,b),a.addEventListener("abort",()=>{for(let a=0;a<b.length;a++)b[a]()},{once:!0})}});return d.catch(l),d}}function l(){}function m(a,b,c){return b.stagedRendering?b.stagedRendering.delayUntilStage(c,void 0,a):new Promise(b=>{setTimeout(()=>{b(a)},0)})}function n(a){return a.currentStage===f.RenderStage.EarlyStatic||a.currentStage===f.RenderStage.EarlyRuntime?f.RenderStage.EarlyRuntime:f.RenderStage.Runtime}function o(a,b){let{stagedRendering:c}=a;return c?c.waitForStage(n(c)).then(()=>b):b}},87301:(a,b,c)=>{"use strict";c.d(b,{L:()=>o});var d=c(91408),e=c(37694),f=c(69832),g=c(22046),h=c(21513),i=c(18110);let j=(0,i.CN)({is:a=>"ReturningNode"===a.kind,create:a=>(0,i.CN)({kind:"ReturningNode",selections:(0,i.CN)(a)}),cloneWithSelections:(a,b)=>(0,i.CN)({...a,selections:a.selections?(0,i.CN)([...a.selections,...b]):(0,i.CN)(b)})}),k=(0,i.CN)({is:a=>"ExplainNode"===a.kind,create:(a,b)=>(0,i.CN)({kind:"ExplainNode",format:a,options:b})});var l=c(107);let m=(0,i.CN)({is:a=>"OutputNode"===a.kind,create:a=>(0,i.CN)({kind:"OutputNode",selections:(0,i.CN)(a)}),cloneWithSelections:(a,b)=>(0,i.CN)({...a,selections:a.selections?(0,i.CN)([...a.selections,...b]):(0,i.CN)(b)})});var n=c(54254);let o=(0,i.CN)({is:a=>e.L.is(a)||d.o.is(a)||f.U.is(a)||g.e.is(a)||l.r.is(a),cloneWithEndModifier:(a,b)=>(0,i.CN)({...a,endModifiers:a.endModifiers?(0,i.CN)([...a.endModifiers,b]):(0,i.CN)([b])}),cloneWithWhere:(a,b)=>(0,i.CN)({...a,where:a.where?h.o.cloneWithOperation(a.where,"And",b):h.o.create(b)}),cloneWithJoin:(a,b)=>(0,i.CN)({...a,joins:a.joins?(0,i.CN)([...a.joins,b]):(0,i.CN)([b])}),cloneWithReturning:(a,b)=>(0,i.CN)({...a,returning:a.returning?j.cloneWithSelections(a.returning,b):j.create(b)}),cloneWithoutReturning:a=>(0,i.CN)({...a,returning:void 0}),cloneWithoutWhere:a=>(0,i.CN)({...a,where:void 0}),cloneWithExplain:(a,b,c)=>(0,i.CN)({...a,explain:k.create(b,c?.toOperationNode())}),cloneWithTop:(a,b)=>(0,i.CN)({...a,top:b}),cloneWithOutput:(a,b)=>(0,i.CN)({...a,output:a.output?m.cloneWithSelections(a.output,b):m.create(b)}),cloneWithOrderByItems:(a,b)=>(0,i.CN)({...a,orderBy:a.orderBy?n.O.cloneWithItems(a.orderBy,b):n.O.create(b)}),cloneWithoutOrderBy:a=>(0,i.CN)({...a,orderBy:void 0})})},88035:(a,b,c)=>{"use strict";c.d(b,{C:()=>h,g:()=>g});var d=c(60351),e=c(45541),f=c(18110);class g{#a1;get dynamicReference(){return this.#a1}get refType(){}constructor(a){this.#a1=a}toOperationNode(){return(0,e.vd)(this.#a1)}}function h(a){return(0,f.Gv)(a)&&(0,d.N)(a)&&(0,f.Kg)(a.dynamicReference)}},88200:(a,b,c)=>{"use strict";c.d(b,{jo:()=>C,D:()=>D});var d=c(44264),e=c(58639),f=c(65340),g=c(81502);class h extends g.o{static [d.i]="SQLiteBigIntBuilder";constructor(a){super(a,"bigint","SQLiteBigInt")}build(a){return new i(a,this.config)}}class i extends g.v{static [d.i]="SQLiteBigInt";getSQLType(){return"blob"}mapFromDriverValue(a){return"u">typeof Buffer&&Buffer.from?BigInt((Buffer.isBuffer(a)?a:a instanceof ArrayBuffer?Buffer.from(a):a.buffer?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a)).toString("utf8")):BigInt(f.su.decode(a))}mapToDriverValue(a){return Buffer.from(a.toString())}}class j extends g.o{static [d.i]="SQLiteBlobJsonBuilder";constructor(a){super(a,"json","SQLiteBlobJson")}build(a){return new k(a,this.config)}}class k extends g.v{static [d.i]="SQLiteBlobJson";getSQLType(){return"blob"}mapFromDriverValue(a){return"u">typeof Buffer&&Buffer.from?JSON.parse((Buffer.isBuffer(a)?a:a instanceof ArrayBuffer?Buffer.from(a):a.buffer?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a)).toString("utf8")):JSON.parse(f.su.decode(a))}mapToDriverValue(a){return Buffer.from(JSON.stringify(a))}}class l extends g.o{static [d.i]="SQLiteBlobBufferBuilder";constructor(a){super(a,"buffer","SQLiteBlobBuffer")}build(a){return new m(a,this.config)}}class m extends g.v{static [d.i]="SQLiteBlobBuffer";mapFromDriverValue(a){return Buffer.isBuffer(a)?a:Buffer.from(a)}getSQLType(){return"blob"}}function n(a,b){let{name:c,config:d}=(0,f.Ll)(a,b);return d?.mode==="json"?new j(c):d?.mode==="bigint"?new h(c):new l(c)}class o extends g.o{static [d.i]="SQLiteCustomColumnBuilder";constructor(a,b,c){super(a,"custom","SQLiteCustomColumn"),this.config.fieldConfig=b,this.config.customTypeParams=c}build(a){return new p(a,this.config)}}class p extends g.v{static [d.i]="SQLiteCustomColumn";sqlName;mapTo;mapFrom;constructor(a,b){super(a,b),this.sqlName=b.customTypeParams.dataType(b.fieldConfig),this.mapTo=b.customTypeParams.toDriver,this.mapFrom=b.customTypeParams.fromDriver}getSQLType(){return this.sqlName}mapFromDriverValue(a){return"function"==typeof this.mapFrom?this.mapFrom(a):a}mapToDriverValue(a){return"function"==typeof this.mapTo?this.mapTo(a):a}}function q(a){return(b,c)=>{let{name:d,config:e}=(0,f.Ll)(b,c);return new o(d,e,a)}}var r=c(81740);class s extends g.o{static [d.i]="SQLiteNumericBuilder";constructor(a){super(a,"string","SQLiteNumeric")}build(a){return new t(a,this.config)}}class t extends g.v{static [d.i]="SQLiteNumeric";mapFromDriverValue(a){return"string"==typeof a?a:String(a)}getSQLType(){return"numeric"}}class u extends g.o{static [d.i]="SQLiteNumericNumberBuilder";constructor(a){super(a,"number","SQLiteNumericNumber")}build(a){return new v(a,this.config)}}class v extends g.v{static [d.i]="SQLiteNumericNumber";mapFromDriverValue(a){return"number"==typeof a?a:Number(a)}mapToDriverValue=String;getSQLType(){return"numeric"}}class w extends g.o{static [d.i]="SQLiteNumericBigIntBuilder";constructor(a){super(a,"bigint","SQLiteNumericBigInt")}build(a){return new x(a,this.config)}}class x extends g.v{static [d.i]="SQLiteNumericBigInt";mapFromDriverValue=BigInt;mapToDriverValue=String;getSQLType(){return"numeric"}}function y(a,b){let{name:c,config:d}=(0,f.Ll)(a,b),e=d?.mode;return"number"===e?new u(c):"bigint"===e?new w(c):new s(c)}var z=c(22950),A=c(16035);let B=Symbol.for("drizzle:SQLiteInlineForeignKeys");class C extends e.XI{static [d.i]="SQLiteTable";static Symbol=Object.assign({},e.XI.Symbol,{InlineForeignKeys:B});[e.XI.Symbol.Columns];[B]=[];[e.XI.Symbol.ExtraConfigBuilder]=void 0}let D=(a,b,c)=>(function(a,b,c,d=a){let f=new C(a,void 0,d),g=Object.fromEntries(Object.entries("function"==typeof b?b({blob:n,customType:q,integer:r.nd,numeric:y,real:z.x,text:A.Qq}):b).map(([a,b])=>{b.setName(a);let c=b.build(f);return f[B].push(...b.buildForeignKeys(c,f)),[a,c]})),h=Object.assign(f,g);return h[e.XI.Symbol.Columns]=g,h[e.XI.Symbol.ExtraConfigColumns]=g,c&&(h[C.Symbol.ExtraConfigBuilder]=c),h})(a,b,c)},88743:(a,b,c)=>{"use strict";c.d(b,{l:()=>d});class d{get supportsCreateIfNotExists(){return!0}get supportsMultipleConnections(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!1}get supportsOutput(){return!1}}},88825:(a,b,c)=>{let d=+(process.versions?process.versions.node:"").split(".")[0]||0;a.exports=function(a,b){var e=c(74075);let f=d>=15&&b>0?{maxOutputLength:b}:{};return{inflate:function(){return e.inflateRawSync(a,f)},inflateAsync:function(b){var c=e.createInflateRaw(f),d=[],g=0;c.on("data",function(a){d.push(a),g+=a.length}),c.on("end",function(){var a=Buffer.alloc(g),c=0;a.fill(0);for(var e=0;e<d.length;e++){var f=d[e];f.copy(a,c),c+=f.length}b&&b(a)}),c.end(a)}}}},88891:(a,b,c)=>{"use strict";c.d(b,{s:()=>g});var d=c(24607);let e=/"/g,f=/[\\'"]/g;class g extends d.n{visitOrAction(a){this.append("or "),this.append(a.action)}getCurrentParameterPlaceholder(){return"?"}getLeftExplainOptionsWrapper(){return""}getRightExplainOptionsWrapper(){return""}getLeftIdentifierWrapper(){return'"'}getRightIdentifierWrapper(){return'"'}getAutoIncrement(){return"autoincrement"}sanitizeIdentifier(a){return a.replace(e,'""')}sanitizeJSONPathMemberValue(a){return a.replace(f,a=>"\\"===a?"\\\\":"'"===a?"''":'\\"')}visitDefaultInsertValue(a){this.append("null")}}},89192:(a,b,c)=>{"use strict";c.d(b,{B:()=>p});var d=c(50182),e=c(98051),f=c(48145),g=c(4224),h=c(75525),i=c(18110);let j={AlterTableNode:!0,AlterTypeNode:!0,CreateIndexNode:!0,CreateSchemaNode:!0,CreateTableNode:!0,CreateTypeNode:!0,CreateViewNode:!0,DeleteQueryNode:!0,DropIndexNode:!0,DropSchemaNode:!0,DropTableNode:!0,DropTypeNode:!0,RefreshMaterializedViewNode:!0,DropViewNode:!0,InsertQueryNode:!0,RawNode:!0,SelectQueryNode:!0,UpdateQueryNode:!0,MergeQueryNode:!0};var k=c(4432),l=c(3694),m=c(62030);let n=(0,i.CN)({json_agg:!0,to_json:!0});class o extends h.V{#a2;#a3=new Set;#a4=new Set;constructor(a){super(),this.#a2=a}transformNodeImpl(a,b){if(!((0,i.Gv)(a)&&(0,i.Kg)(a.kind))||!0!==j[a.kind])return super.transformNodeImpl(a,b);let c=this.#a5(a);for(let a of c)this.#a4.add(a);let d=this.#a6(a);for(let a of d)this.#a3.add(a);let e=super.transformNodeImpl(a,b);for(let a of d)this.#a3.delete(a);for(let a of c)this.#a4.delete(a);return e}transformSchemableIdentifier(a,b){let c=super.transformSchemableIdentifier(a,b);return c.schema||!this.#a3.has(a.identifier.name)?c:{...c,schema:e.O.create(this.#a2)}}transformReferences(a,b){let c=super.transformReferences(a,b);return c.table.table.schema?c:{...c,table:l.H.createWithSchema(this.#a2,c.table.table.identifier.name)}}transformAggregateFunction(a,b){return{...super.transformAggregateFunction({...a,aggregated:[]},b),aggregated:this.#a7(a,b,"aggregated")}}transformFunction(a,b){return{...super.transformFunction({...a,arguments:[]},b),arguments:this.#a7(a,b,"arguments")}}transformSelectModifier(a,b){return{...super.transformSelectModifier({...a,of:void 0},b),of:a.of?.map(a=>l.H.is(a)&&!a.table.schema?{...a,table:this.transformIdentifier(a.table.identifier,b)}:this.transformNode(a,b))}}#a7(a,b,c){return n[a.func]?a[c].map(a=>!l.H.is(a)||a.table.schema?this.transformNode(a,b):{...a,table:this.transformIdentifier(a.table.identifier,b)}):this.transformNodeList(a[c],b)}#a6(a){let b=new Set;if("name"in a&&a.name&&k.y.is(a.name)&&this.#a8(a.name,b),"from"in a&&a.from)for(let c of a.from.froms)this.#a9(c,b);if("into"in a&&a.into&&this.#a9(a.into,b),"table"in a&&a.table&&this.#a9(a.table,b),"joins"in a&&a.joins)for(let c of a.joins)this.#a9(c.table,b);return"using"in a&&a.using&&(f.b.is(a.using)?this.#a9(a.using.table,b):this.#a9(a.using,b)),b}#a5(a){let b=new Set;return"with"in a&&a.with&&this.#ba(a.with,b),b}#a9(a,b){if(l.H.is(a))return this.#a8(a.table,b);if(d.N.is(a)&&l.H.is(a.node))return this.#a8(a.node.table,b);if(g.v.is(a)){for(let c of a.items)this.#a9(c,b);return}if(m.f.is(a)){for(let c of a.tables)this.#a9(c,b);return}}#a8(a,b){let c=a.identifier.name;this.#a3.has(c)||this.#a4.has(c)||b.add(c)}#ba(a,b){for(let c of a.expressions){let a=c.name.table.table.identifier.name;this.#a4.has(a)||b.add(a)}}}class p{#T;constructor(a){this.#T=new o(a)}transformQuery(a){return this.#T.transformNode(a.node,a.queryId)}async transformResult(a){return a.result}}},90386:(a,b,c)=>{"use strict";c.d(b,{U:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"SelectAllNode"===a.kind,create:()=>(0,d.CN)({kind:"SelectAllNode"})})},90588:(a,b,c)=>{"use strict";c.d(b,{s:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"ValueListNode"===a.kind,create:a=>(0,d.CN)({kind:"ValueListNode",values:(0,d.CN)(a)})})},90977:(a,b,c)=>{let d=c(25296),e=c(33873),f=c(9738),g=c(9460),h=(...a)=>d.findLast(a,a=>"boolean"==typeof a),i=(...a)=>d.findLast(a,a=>"string"==typeof a),j={noSort:!1,readEntries:!1,method:d.Constants.NONE,fs:null};a.exports=function(a,b){let c=null,k=Object.assign(Object.create(null),j);a&&"object"==typeof a&&(a instanceof Uint8Array||(Object.assign(k,a),a=k.input?k.input:void 0,k.input&&delete k.input),Buffer.isBuffer(a)&&(c=a,k.method=d.Constants.BUFFER,a=void 0)),Object.assign(k,b);let l=new d(k);if(("object"!=typeof k.decoder||"function"!=typeof k.decoder.encode||"function"!=typeof k.decoder.decode)&&(k.decoder=d.decoder),a&&"string"==typeof a)if(l.fs.existsSync(a))k.method=d.Constants.FILE,k.filename=a,c=l.fs.readFileSync(a);else throw d.Errors.INVALID_FILENAME();let m=new g(c,k),{canonical:n,sanitize:o,zipnamefix:p}=d;function q(a){if(a&&m){var b;if("string"==typeof a&&(b=m.getEntry(e.posix.normalize(a))),"object"==typeof a&&void 0!==a.entryName&&void 0!==a.header&&(b=m.getEntry(a.entryName)),b)return b}return null}function r(a){let{join:b,normalize:c,sep:d}=e.posix;return b(e.isAbsolute(a)?"/":".",c(d+a.split("\\").join(d)+d))}function s(a){if(a instanceof RegExp)return function(b){return a.test(b)};return"function"!=typeof a?()=>!0:a}let t=(a,b)=>{let c=b.slice(-1);return c=c===l.sep?l.sep:"",e.relative(a,b)+c};return{readFile:function(a,b){var c=q(a);return c&&c.getData(b)||null},childCount:function(a){let b=q(a);if(b)return m.getChildCount(b)},readFileAsync:function(a,b){var c=q(a);c?c.getDataAsync(b):b(null,"getEntry failed for:"+a)},readAsText:function(a,b){var c=q(a);if(c){var d=c.getData();if(d&&d.length)return d.toString(b||"utf8")}return""},readAsTextAsync:function(a,b,c){var d=q(a);d?d.getDataAsync(function(a,d){d?b(a,d):a&&a.length?b(a.toString(c||"utf8")):b("")}):b("")},deleteFile:function(a,b=!0){var c=q(a);c&&m.deleteFile(c.entryName,b)},deleteEntry:function(a){var b=q(a);b&&m.deleteEntry(b.entryName)},addZipComment:function(a){m.comment=a},getZipComment:function(){return m.comment||""},addZipEntryComment:function(a,b){var c=q(a);c&&(c.comment=b)},getZipEntryComment:function(a){var b=q(a);return b&&b.comment||""},updateFile:function(a,b){var c=q(a);c&&c.setData(b)},addLocalFile:function(a,b,c,f){if(l.fs.existsSync(a)){b=b?r(b):"";let d=e.win32.basename(e.win32.normalize(a));b+=c||d;let g=l.fs.statSync(a),h=g.isFile()?l.fs.readFileSync(a):Buffer.alloc(0);g.isDirectory()&&(b+=l.sep),this.addFile(b,h,f,g)}else throw d.Errors.FILE_NOT_FOUND(a)},addLocalFileAsync:function(a,b){a="object"==typeof a?a:{localPath:a};let c=e.resolve(a.localPath),{comment:d}=a,{zipPath:f,zipName:g}=a,h=this;l.fs.stat(c,function(a,i){if(a)return b(a,!1);f=f?r(f):"";let j=e.win32.basename(e.win32.normalize(c));if(f+=g||j,i.isFile())l.fs.readFile(c,function(a,c){return a?b(a,!1):(h.addFile(f,c,d,i),setImmediate(b,void 0,!0))});else if(i.isDirectory())return f+=l.sep,h.addFile(f,Buffer.alloc(0),d,i),setImmediate(b,void 0,!0)})},addLocalFolder:function(a,b,c){if(c=s(c),b=b?r(b):"",a=e.normalize(a),l.fs.existsSync(a)){let d=l.findFiles(a);if(d.length)for(let f of d){let d=e.join(b,t(a,f));c(d)&&this.addLocalFile(f,e.dirname(d))}}else throw d.Errors.FILE_NOT_FOUND(a)},addLocalFolderAsync:function(a,b,c,f){f=s(f),c=c?r(c):"",a=e.normalize(a);var g=this;l.fs.open(a,"r",function(e){if(e&&"ENOENT"===e.code)b(void 0,d.Errors.FILE_NOT_FOUND(a));else if(e)b(void 0,e);else{var h=l.findFiles(a),i=-1,j=function(){if((i+=1)<h.length){var d=h[i],e=t(a,d).split("\\").join("/");e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),f(e)?l.fs.stat(d,function(a,f){a&&b(void 0,a),f.isFile()?l.fs.readFile(d,function(a,d){a?b(void 0,a):(g.addFile(c+e,d,"",f),j())}):(g.addFile(c+e+"/",Buffer.alloc(0),"",f),j())}):process.nextTick(()=>{j()})}else b(!0,void 0)};j()}})},addLocalFolderAsync2:function(a,b){let c=this;a="object"==typeof a?a:{localPath:a},localPath=e.resolve(r(a.localPath));let{zipPath:f,filter:g,namefix:h}=a;if(g instanceof RegExp){var i;i=g,g=function(a){return i.test(a)}}else"function"!=typeof g&&(g=function(){return!0});f=f?r(f):"","latin1"==h&&(h=a=>a.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"")),"function"!=typeof h&&(h=a=>a);let j=a=>e.join(f,h(t(localPath,a)));l.fs.open(localPath,"r",function(a){a&&"ENOENT"===a.code?b(void 0,d.Errors.FILE_NOT_FOUND(localPath)):a?b(void 0,a):l.findFilesAsync(localPath,function(a,d){if(a)return b(a);(d=d.filter(a=>g(j(a)))).length||b(void 0,!1),setImmediate(d.reverse().reduce(function(a,b){return function(d,f){if(d||!1===f)return setImmediate(a,d,!1);c.addLocalFileAsync({localPath:b,zipPath:e.dirname(j(b)),zipName:e.win32.basename(e.win32.normalize(h(b)))},a)}},b))})})},addLocalFolderPromise:function(a,b){return new Promise((c,d)=>{this.addLocalFolderAsync2(Object.assign({localPath:a},b),(a,b)=>{a&&d(a),b&&c(this)})})},addFile:function(a,b,c,d){let e=q(a=p(a)),g=null!=e;g||((e=new f(k)).entryName=a),e.comment=c||"";let h="object"==typeof d&&d instanceof l.fs.Stats;h&&(e.header.time=d.mtime);var i=16*!!e.isDirectory;let j=e.isDirectory?16384:32768;return h?j|=4095&d.mode:"number"==typeof d?j|=4095&d:j|=e.isDirectory?493:420,i=(i|j<<16)>>>0,e.attr=i,e.setData(b),g||m.setEntry(e),e},getEntries:function(a){return m.password=a,m?m.entries:[]},getEntry:function(a){return q(a)},getEntryCount:function(){return m.getEntryCount()},forEach:function(a){return m.forEach(a)},extractEntryTo:function(a,b,c,f,g,j){f=h(!1,f),g=h(!1,g),c=h(!0,c),j=i(g,j);var k=q(a);if(!k)throw d.Errors.NO_ENTRY();var p=n(k.entryName),r=o(b,j&&!k.isDirectory?j:c?p:e.basename(p));if(k.isDirectory)return m.getEntryChildren(k).forEach(function(a){if(a.isDirectory)return;var h=a.getData();if(!h)throw d.Errors.CANT_EXTRACT_FILE();var i=n(a.entryName),j=o(b,c?i:e.basename(i));let k=g?a.header.fileAttr:void 0;l.writeFileTo(j,h,f,k)}),!0;var s=k.getData(m.password);if(!s)throw d.Errors.CANT_EXTRACT_FILE();if(l.fs.existsSync(r)&&!f)throw d.Errors.CANT_OVERRIDE();let t=g?a.header.fileAttr:void 0;return l.writeFileTo(r,s,f,t),!0},test:function(a){if(!m)return!1;for(var b in m.entries)try{if(b.isDirectory)continue;if(!m.entries[b].getData(a))return!1}catch(a){return!1}return!0},extractAllTo:function(a,b,c,e){if(e=i(c=h(!1,c),e),b=h(!1,b),!m)throw d.Errors.NO_ZIP();m.entries.forEach(function(f){var g=o(a,n(f.entryName));if(f.isDirectory)return void l.makeDir(g);var h=f.getData(e);if(!h)throw d.Errors.CANT_EXTRACT_FILE();let i=c?f.header.fileAttr:void 0;l.writeFileTo(g,h,b,i);try{l.fs.utimesSync(g,f.header.time,f.header.time)}catch(a){throw d.Errors.CANT_EXTRACT_FILE()}})},extractAllToAsync:function(a,b,c,f){if(f=((...a)=>d.findLast(a,a=>"function"==typeof a))(b,c,f),c=h(!1,c),b=h(!1,b),!f)return new Promise((d,e)=>{this.extractAllToAsync(a,b,c,function(a){a?e(a):d(this)})});if(!m)return void f(d.Errors.NO_ZIP());a=e.resolve(a);let g=b=>o(a,e.normalize(n(b.entryName))),i=(a,b)=>Error(a+': "'+b+'"'),j=[],k=[];for(let a of(m.entries.forEach(a=>{a.isDirectory?j.push(a):k.push(a)}),j)){let b=g(a),d=c?a.header.fileAttr:void 0;try{l.makeDir(b),d&&l.fs.chmodSync(b,d),l.fs.utimesSync(b,a.header.time,a.header.time)}catch(a){f(i("Unable to create folder",b))}}k.reverse().reduce(function(f,g){return function(h){if(h)f(h);else{let h=e.normalize(n(g.entryName)),j=o(a,h);g.getDataAsync(function(a,e){if(e)f(e);else if(a){let d=c?g.header.fileAttr:void 0;l.writeFileToAsync(j,a,b,d,function(a){a||f(i("Unable to write file",j)),l.fs.utimes(j,g.header.time,g.header.time,function(a){a?f(i("Unable to set times",j)):f()})})}else f(d.Errors.CANT_EXTRACT_FILE())})}}},f)()},writeZip:function(a,b){if(1==arguments.length&&"function"==typeof a&&(b=a,a=""),!a&&k.filename&&(a=k.filename),a){var c=m.compressToBuffer();if(c){var d=l.writeFileTo(a,c,!0);"function"==typeof b&&b(d?null:Error("failed"),"")}}},writeZipPromise:function(a,b){let{overwrite:c,perm:d}=Object.assign({overwrite:!0},b);return new Promise((b,e)=>{!a&&k.filename&&(a=k.filename),a||e("ADM-ZIP: ZIP File Name Missing"),this.toBufferPromise().then(f=>{l.writeFileToAsync(a,f,c,d,a=>a?b(a):e("ADM-ZIP: Wasn't able to write zip file"))},e)})},toBufferPromise:function(){return new Promise((a,b)=>{m.toAsyncBuffer(a,b)})},toBuffer:function(a,b,c,d){return"function"==typeof a?(m.toAsyncBuffer(a,b,c,d),null):m.compressToBuffer()}}}},90983:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={djb2Hash:function(){return e},hexHash:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return b>>>0}function f(a){return e(a).toString(36).slice(0,5)}},91408:(a,b,c)=>{"use strict";c.d(b,{o:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"InsertQueryNode"===a.kind,create:(a,b,c)=>(0,d.CN)({kind:"InsertQueryNode",into:a,...b&&{with:b},replace:c}),createWithoutInto:()=>(0,d.CN)({kind:"InsertQueryNode"}),cloneWith:(a,b)=>(0,d.CN)({...a,...b})})},92930:(a,b,c)=>{"use strict";c.d(b,{I:()=>l});var d=c(80733),e=c(77598),f=c(15220),g=c(16338),h=c(82339),i=c(9165),j=c(36156),k=c(2229);async function l(a,b){await h.db.insert(i.event).values({id:(0,e.randomUUID)(),workspaceId:a,runId:b.runId,channel:b.channel??"room",agentId:b.agentId??null,seq:Date.now(),kind:b.kind,target:(b.target??"").slice(0,500),detail:(b.detail??"").slice(0,8e3)}),(0,k.r)(a)}async function m(a,b=0){let{workspace:c}=await (0,j.nP)();return h.db.select().from(i.event).where((0,f.Uo)((0,f.eq)(i.event.workspaceId,c.id),(0,f.eq)(i.event.channel,a),(0,f.gt)(i.event.seq,b))).orderBy((0,g.Y)(i.event.seq)).limit(300)}(0,c(20177).D)([l,m]),(0,d.A)(l,"60dfe5517f88ae8541c0250966511da5c29416ccb5",null),(0,d.A)(m,"600e4c29037ec9fae5202a4a4d0890a44c2d2743c9",null)},94457:(a,b,c)=>{"use strict";c.d(b,{Q:()=>e});var d=c(44264);class e{static [d.i]="ColumnBuilder";config;constructor(a,b,c){this.config={name:a,keyAsName:""===a,notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:b,columnType:c,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default(a){return this.config.default=a,this.config.hasDefault=!0,this}$defaultFn(a){return this.config.defaultFn=a,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn(a){return this.config.onUpdateFn=a,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName(a){""===this.config.name&&(this.config.name=a)}}},94931:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d,e={RenderStage:function(){return i},StagedRenderingController:function(){return j}};for(var f in e)Object.defineProperty(b,f,{enumerable:!0,get:e[f]});let g=c(85556),h=c(38697);var i=((d={})[d.Before=1]="Before",d[d.EarlyStatic=2]="EarlyStatic",d[d.Static=3]="Static",d[d.EarlyRuntime=4]="EarlyRuntime",d[d.Runtime=5]="Runtime",d[d.Dynamic=6]="Dynamic",d[d.Abandoned=7]="Abandoned",d);class j{constructor(a,b,c){this.abortSignal=a,this.abandonController=b,this.shouldTrackSyncIO=c,this.currentStage=1,this.syncInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.staticStageListeners=[],this.earlyRuntimeStageListeners=[],this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.staticStagePromise=(0,h.createPromiseWithResolvers)(),this.earlyRuntimeStagePromise=(0,h.createPromiseWithResolvers)(),this.runtimeStagePromise=(0,h.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,h.createPromiseWithResolvers)(),a&&a.addEventListener("abort",()=>{let{reason:b}=a;this.staticStagePromise.promise.catch(k),this.staticStagePromise.reject(b),this.earlyRuntimeStagePromise.promise.catch(k),this.earlyRuntimeStagePromise.reject(b),this.runtimeStagePromise.promise.catch(k),this.runtimeStagePromise.reject(b),this.dynamicStagePromise.promise.catch(k),this.dynamicStagePromise.reject(b)},{once:!0}),b&&b.signal.addEventListener("abort",()=>{this.abandonRender()},{once:!0})}onStage(a,b){if(this.currentStage>=a)b();else if(3===a)this.staticStageListeners.push(b);else if(4===a)this.earlyRuntimeStageListeners.push(b);else if(5===a)this.runtimeStageListeners.push(b);else if(6===a)this.dynamicStageListeners.push(b);else throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}shouldTrackSyncInterrupt(){if(!this.shouldTrackSyncIO)return!1;switch(this.currentStage){case 1:case 5:case 6:case 7:default:return!1;case 2:case 3:case 4:return!0}}syncInterruptCurrentStageWithReason(a){if(1!==this.currentStage&&7!==this.currentStage){if(this.abandonController)return void this.abandonController.abort();if(this.abortSignal){this.syncInterruptReason=a,this.currentStage=7;return}switch(this.currentStage){case 2:case 3:case 4:this.syncInterruptReason=a,this.advanceStage(6);return;case 5:return}}}getSyncInterruptReason(){return this.syncInterruptReason}getStaticStageEndTime(){return this.staticStageEndTime}getRuntimeStageEndTime(){return this.runtimeStageEndTime}abandonRender(){let{currentStage:a}=this;switch(a){case 2:this.resolveStaticStage();case 3:this.resolveEarlyRuntimeStage();case 4:this.resolveRuntimeStage();case 5:this.currentStage=7;return}}advanceStage(a){if(a<=this.currentStage)return;let b=this.currentStage;if(this.currentStage=a,b<3&&a>=3&&this.resolveStaticStage(),b<4&&a>=4&&this.resolveEarlyRuntimeStage(),b<5&&a>=5&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),b<6&&a>=6){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveStaticStage(){let a=this.staticStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.staticStagePromise.resolve()}resolveEarlyRuntimeStage(){let a=this.earlyRuntimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.earlyRuntimeStagePromise.resolve()}resolveRuntimeStage(){let a=this.runtimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.runtimeStagePromise.resolve()}resolveDynamicStage(){let a=this.dynamicStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.dynamicStagePromise.resolve()}getStagePromise(a){switch(a){case 3:return this.staticStagePromise.promise;case 4:return this.earlyRuntimeStagePromise.promise;case 5:return this.runtimeStagePromise.promise;case 6:return this.dynamicStagePromise.promise;default:throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}}waitForStage(a){return this.getStagePromise(a)}delayUntilStage(a,b,c){var d,e,f;let g,h=(d=this.getStagePromise(a),e=b,f=c,g=new Promise((a,b)=>{d.then(a.bind(null,f),b)}),void 0!==e&&(g.displayName=e),g);return this.abortSignal&&h.catch(k),h}}function k(){}},95260:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});let d=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"];function e(a){let b="";for(let c=0;c<a;++c)b+=d[~~(Math.random()*d.length)];return b}},95962:(a,b,c)=>{"use strict";c.d(b,{G:()=>f});var d=c(79362),e=c(18110);async function f(a,b){let c=new d.c,f=new d.c;return a.provideConnection(async a=>(c.resolve(a),await f.promise),b).catch(a=>c.reject(a)),(0,e.CN)({connection:await c.promise,release:f.resolve})}},96690:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={DynamicServerError:function(){return f},isDynamicServerError:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e="DYNAMIC_SERVER_USAGE";class f extends Error{constructor(a){super(`Dynamic server usage: ${a}`),this.description=a,this.digest=e}}function g(a){return"object"==typeof a&&null!==a&&"digest"in a&&"string"==typeof a.digest&&a.digest===e}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},97551:(a,b,c)=>{"use strict";c.d(b,{u:()=>e});let d=new Set;function e(a){d.has(a)||(d.add(a),console.log(a))}},97762:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={NEXT_REQUEST_META:function(){return e},addRequestMeta:function(){return h},getRequestMeta:function(){return f},removeRequestMeta:function(){return i},setRequestMeta:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=Symbol.for("NextInternalRequestMeta");function f(a,b){let c=a[e]||{};return"string"==typeof b?c[b]:c}function g(a,b){return a[e]=b,b}function h(a,b,c){let d=f(a);return d[b]=c,g(a,d)}function i(a,b){let c=f(a);return delete c[b],g(a,c)}},98051:(a,b,c)=>{"use strict";c.d(b,{O:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"IdentifierNode"===a.kind,create:a=>(0,d.CN)({kind:"IdentifierNode",name:a})})},98444:(a,b,c)=>{"use strict";c.d(b,{t:()=>e});var d=c(18110);let e=(0,d.CN)({is:a=>"WhenNode"===a.kind,create:a=>(0,d.CN)({kind:"WhenNode",condition:a}),cloneWithResult:(a,b)=>(0,d.CN)({...a,result:b})})},98789:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={computeCacheBustingSearchParam:function(){return k},computeLegacyCacheBustingSearchParam:function(){return l}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(90983),g=new TextEncoder;function h(a){return void 0===a?"0":Array.isArray(a)?a.join(","):a}function i(a,b,c,d){return(void 0===a||"0"===a)&&void 0===b&&void 0===c&&void 0===d?null:[a??"0",h(b),h(c),h(d)].join(",")}async function j(a){var b=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",g.encode(a))).subarray(0,12);let c="";for(let a=0;a<b.length;a++)c+=String.fromCharCode(b[a]);return btoa(c).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function k(a,b,c,d){let e=i(a,b,c,d);return null===e?"":j(e)}function l(a,b,c,d){let e=i(a,b,c,d);return null===e?"":(0,f.hexHash)(e)}}};