constellai 0.3.3 → 0.3.5

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 (252) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/app/(app)/activity/page.js +2 -2
  5. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  6. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  7. package/.next/server/app/(app)/agents/[handle]/page.js +3 -3
  8. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/code/page.js +2 -2
  11. package/.next/server/app/(app)/code/page.js.nft.json +1 -1
  12. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/(app)/config/page.js +2 -2
  14. package/.next/server/app/(app)/config/page.js.nft.json +1 -1
  15. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(app)/costs/page.js +2 -2
  17. package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
  18. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/(app)/cron/page.js +2 -2
  20. package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
  21. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/(app)/dashboard/page.js +2 -2
  23. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
  24. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(app)/design/page.js +44 -44
  26. package/.next/server/app/(app)/design/page.js.nft.json +1 -1
  27. package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/(app)/docs/[id]/page.js +2 -2
  29. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/docs/page.js +2 -2
  32. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  33. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  34. package/.next/server/app/(app)/github/page.js +2 -2
  35. package/.next/server/app/(app)/github/page.js.nft.json +1 -1
  36. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/(app)/goals/page.js +2 -2
  38. package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
  39. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/(app)/inbox/page.js +2 -2
  41. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
  42. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/(app)/knowledge/page.js +3 -3
  44. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
  45. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/(app)/models/page.js +2 -2
  47. package/.next/server/app/(app)/models/page.js.nft.json +1 -1
  48. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/(app)/notifications/page.js +2 -2
  50. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
  51. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/(app)/org/page.js +3 -3
  53. package/.next/server/app/(app)/org/page.js.nft.json +1 -1
  54. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
  55. package/.next/server/app/(app)/organizations/page.js +2 -2
  56. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
  57. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/(app)/page.js +3 -3
  59. package/.next/server/app/(app)/page.js.nft.json +1 -1
  60. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/(app)/planner/page.js +2 -2
  62. package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
  63. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/(app)/plugins/page.js +2 -2
  65. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
  66. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/(app)/pm/page.js +2 -2
  68. package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
  69. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
  70. package/.next/server/app/(app)/prepare-deploy/page.js +2 -2
  71. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
  72. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app/(app)/profile/page.js +2 -2
  74. package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
  75. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
  76. package/.next/server/app/(app)/pulse/page.js +2 -2
  77. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
  78. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
  79. package/.next/server/app/(app)/reports/[id]/page.js +3 -3
  80. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
  81. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app/(app)/reports/page.js +3 -3
  83. package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
  84. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
  85. package/.next/server/app/(app)/routines/page.js +1 -1
  86. package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
  87. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
  88. package/.next/server/app/(app)/search/page.js +2 -2
  89. package/.next/server/app/(app)/search/page.js.nft.json +1 -1
  90. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
  91. package/.next/server/app/(app)/security/page.js +2 -2
  92. package/.next/server/app/(app)/security/page.js.nft.json +1 -1
  93. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/(app)/skills/page.js +3 -3
  95. package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
  96. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
  97. package/.next/server/app/(app)/tasks/page.js +2 -2
  98. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
  99. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  100. package/.next/server/app/(app)/test-dev/page.js +2 -2
  101. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
  102. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/(app)/update/page.js +2 -2
  104. package/.next/server/app/(app)/update/page.js.nft.json +1 -1
  105. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
  106. package/.next/server/app/(auth)/login/page.js +2 -2
  107. package/.next/server/app/(auth)/login/page.js.nft.json +1 -1
  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.js.nft.json +1 -1
  111. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/_global-error/page.js +1 -1
  113. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  114. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/_global-error.html +1 -1
  116. package/.next/server/app/_global-error.rsc +3 -3
  117. package/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  118. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  120. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  121. package/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
  122. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  123. package/.next/server/app/_not-found/page.js +1 -1
  124. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  125. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/cron/tick/route.js +2 -2
  127. package/.next/server/app/api/sync/file/route.js +2 -2
  128. package/.next/server/app/api/telegram/poll/route.js +2 -2
  129. package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
  130. package/.next/server/chunks/1249.js +7 -7
  131. package/.next/server/chunks/1845.js +1 -1
  132. package/.next/server/chunks/212.js +1 -0
  133. package/.next/server/chunks/259.js +1 -1
  134. package/.next/server/chunks/260.js +1 -1
  135. package/.next/server/chunks/2867.js +1 -1
  136. package/.next/server/chunks/2960.js +1 -1
  137. package/.next/server/chunks/3131.js +1 -1
  138. package/.next/server/chunks/3234.js +1 -1
  139. package/.next/server/chunks/4979.js +2 -2
  140. package/.next/server/chunks/6381.js +15 -0
  141. package/.next/server/chunks/6431.js +1 -1
  142. package/.next/server/chunks/6853.js +12 -0
  143. package/.next/server/chunks/6954.js +1 -0
  144. package/.next/server/chunks/7589.js +1 -1
  145. package/.next/server/chunks/7989.js +1 -1
  146. package/.next/server/chunks/8561.js +1 -1
  147. package/.next/server/chunks/8623.js +1 -1
  148. package/.next/server/chunks/8762.js +417 -15
  149. package/.next/server/chunks/8823.js +1 -1
  150. package/.next/server/chunks/9215.js +4 -0
  151. package/.next/server/chunks/9229.js +1 -0
  152. package/.next/server/chunks/9310.js +21 -0
  153. package/.next/server/chunks/9783.js +1 -1
  154. package/.next/server/middleware-build-manifest.js +1 -1
  155. package/.next/server/pages/500.html +1 -1
  156. package/.next/server/server-reference-manifest.js +1 -1
  157. package/.next/server/server-reference-manifest.json +1 -1
  158. package/.next/static/chunks/2692-7fee6e06b3c93940.js +1 -0
  159. package/.next/static/chunks/2997-ec8b18227849683e.js +1 -0
  160. package/.next/static/chunks/3219-b4941c7ff967e904.js +1 -0
  161. package/.next/static/chunks/6602-f26d109fd94cee1d.js +4 -0
  162. package/.next/static/chunks/8370-2733742abf5f3ddf.js +12 -0
  163. package/.next/static/chunks/{5332-84d9a65aa5d16106.js → 9112-c37628abc8a164cd.js} +1 -1
  164. package/.next/static/chunks/app/(app)/activity/{page-0f51a22d4f2207b2.js → page-29e80a32c02f376b.js} +1 -1
  165. package/.next/static/chunks/app/(app)/agents/[handle]/page-83277413debb3b25.js +1 -0
  166. package/.next/static/chunks/app/(app)/code/page-1f954f7688bc24e4.js +1 -0
  167. package/.next/static/chunks/app/(app)/config/page-eee4f8736608afa5.js +1 -0
  168. package/.next/static/chunks/app/(app)/costs/page-0beac688917eaa30.js +1 -0
  169. package/.next/static/chunks/app/(app)/cron/{page-ab35783e4341f6b7.js → page-a4dd65c78173b872.js} +1 -1
  170. package/.next/static/chunks/app/(app)/dashboard/page-519a934ccfcce6fa.js +1 -0
  171. package/.next/static/chunks/app/(app)/design/{page-fcee2dfd5c7e3a4b.js → page-238be90d78d22780.js} +3 -3
  172. package/.next/static/chunks/app/(app)/docs/[id]/page-e29afa1ba1a086e1.js +1 -0
  173. package/.next/static/chunks/app/(app)/docs/page-b4462f9ca2118f8b.js +1 -0
  174. package/.next/static/chunks/app/(app)/github/page-cf8501e45fe38663.js +1 -0
  175. package/.next/static/chunks/app/(app)/goals/page-75c36155c162df5b.js +1 -0
  176. package/.next/static/chunks/app/(app)/inbox/page-f40bdb457609ddad.js +12 -0
  177. package/.next/static/chunks/app/(app)/knowledge/page-dc5dd15e4f0ad22e.js +1 -0
  178. package/.next/static/chunks/app/(app)/layout-408976a4d35f06a8.js +1 -0
  179. package/.next/static/chunks/app/(app)/models/page-a54e0b8ffed0085c.js +1 -0
  180. package/.next/static/chunks/app/(app)/notifications/page-1f84d74bc53c2c6c.js +12 -0
  181. package/.next/static/chunks/app/(app)/org/page-d17c62b7a668b399.js +12 -0
  182. package/.next/static/chunks/app/(app)/organizations/page-b55445f226cf8c61.js +1 -0
  183. package/.next/static/chunks/app/(app)/{page-54a99a54295a40be.js → page-c7dd52ecc2da529d.js} +1 -1
  184. package/.next/static/chunks/app/(app)/planner/page-920e439e6f88c238.js +1 -0
  185. package/.next/static/chunks/app/(app)/plugins/{page-e75d982132825b07.js → page-d10239fcbabdf4fa.js} +1 -1
  186. package/.next/static/chunks/app/(app)/pm/page-61ad11558f241cf1.js +1 -0
  187. package/.next/static/chunks/app/(app)/prepare-deploy/page-8d25f86b26ab0d2e.js +1 -0
  188. package/.next/static/chunks/app/(app)/profile/page-236673e1a8c1e6c6.js +1 -0
  189. package/.next/static/chunks/app/(app)/pulse/{page-1a63c4ed76db48f5.js → page-f2c6049a967b93a3.js} +1 -1
  190. package/.next/static/chunks/app/(app)/reports/[id]/{page-ab35783e4341f6b7.js → page-a4dd65c78173b872.js} +1 -1
  191. package/.next/static/chunks/app/(app)/reports/page-5c07fa3a8b5ba553.js +1 -0
  192. package/.next/static/chunks/app/(app)/routines/page-0193e84e6a60a06a.js +1 -0
  193. package/.next/static/chunks/app/(app)/search/{page-d30f1c44c95e14a3.js → page-07e037c487f14c35.js} +1 -1
  194. package/.next/static/chunks/app/(app)/security/{page-4640d72a0b360f05.js → page-71e5d992b5ddf79a.js} +1 -1
  195. package/.next/static/chunks/app/(app)/skills/page-72691864856c9906.js +1 -0
  196. package/.next/static/chunks/app/(app)/tasks/page-5c9ca8f83d4c904f.js +1 -0
  197. package/.next/static/chunks/app/(app)/test-dev/page-5aee630d9bc73a0b.js +1 -0
  198. package/.next/static/chunks/app/(app)/update/page-2c9bcdb65bd2f597.js +1 -0
  199. package/.next/static/chunks/app/(auth)/login/page-50033813b56469ee.js +1 -0
  200. package/.next/static/chunks/app/(auth)/onboarding/{page-0cd7cd9fa146a927.js → page-075fd9673f7ab241.js} +1 -1
  201. package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
  202. package/.next/trace-build +1 -1
  203. package/CHANGELOG.md +45 -3
  204. package/README.md +1 -1
  205. package/README.pt-BR.md +1 -1
  206. package/bin/constella-update.mjs +44 -0
  207. package/docs/UPDATE.md +38 -7
  208. package/package.json +1 -1
  209. package/scripts/vps-install.sh +25 -0
  210. package/scripts/vps-update.sh +24 -0
  211. package/.next/server/chunks/3174.js +0 -12
  212. package/.next/server/chunks/3334.js +0 -1
  213. package/.next/server/chunks/3439.js +0 -4
  214. package/.next/server/chunks/478.js +0 -1
  215. package/.next/server/chunks/5086.js +0 -417
  216. package/.next/server/chunks/8195.js +0 -21
  217. package/.next/server/chunks/8244.js +0 -1
  218. package/.next/static/chunks/3219-9684aa1c634212de.js +0 -1
  219. package/.next/static/chunks/386-0f2b8d23016cf4d0.js +0 -1
  220. package/.next/static/chunks/4909-9f16a714c78ed30d.js +0 -4
  221. package/.next/static/chunks/5664-3cb5735f1b5bbde1.js +0 -1
  222. package/.next/static/chunks/8370-7ec9e9bf414f8f2d.js +0 -12
  223. package/.next/static/chunks/app/(app)/agents/[handle]/page-14805dd54a1333e8.js +0 -1
  224. package/.next/static/chunks/app/(app)/code/page-7ebd6923ac440103.js +0 -1
  225. package/.next/static/chunks/app/(app)/config/page-47b5b62b73050673.js +0 -1
  226. package/.next/static/chunks/app/(app)/costs/page-969eba498344314d.js +0 -1
  227. package/.next/static/chunks/app/(app)/dashboard/page-59521ad116c60a88.js +0 -1
  228. package/.next/static/chunks/app/(app)/docs/[id]/page-b3451b21d7d2127b.js +0 -1
  229. package/.next/static/chunks/app/(app)/docs/page-3a34eec67591ce3e.js +0 -1
  230. package/.next/static/chunks/app/(app)/github/page-a0117637dc143821.js +0 -1
  231. package/.next/static/chunks/app/(app)/goals/page-d1cb2552625ccadb.js +0 -1
  232. package/.next/static/chunks/app/(app)/inbox/page-dbfc885cd61f9b9f.js +0 -12
  233. package/.next/static/chunks/app/(app)/knowledge/page-29df476a9c2f930c.js +0 -1
  234. package/.next/static/chunks/app/(app)/layout-2b6b23e82fbf0211.js +0 -1
  235. package/.next/static/chunks/app/(app)/models/page-ea54a5d167cd3cc2.js +0 -1
  236. package/.next/static/chunks/app/(app)/notifications/page-ef1ac55efadb2a1a.js +0 -12
  237. package/.next/static/chunks/app/(app)/org/page-a7c734b8d86f7641.js +0 -12
  238. package/.next/static/chunks/app/(app)/organizations/page-4bcec3010a9d9119.js +0 -1
  239. package/.next/static/chunks/app/(app)/planner/page-adfd05afc6ddcbef.js +0 -1
  240. package/.next/static/chunks/app/(app)/pm/page-773626398c10fdb7.js +0 -1
  241. package/.next/static/chunks/app/(app)/prepare-deploy/page-01f767248e7fa2a7.js +0 -1
  242. package/.next/static/chunks/app/(app)/profile/page-cb2450679785db1a.js +0 -1
  243. package/.next/static/chunks/app/(app)/reports/page-b0bcc85ad4afecf5.js +0 -1
  244. package/.next/static/chunks/app/(app)/routines/page-c0ce223d128a9010.js +0 -1
  245. package/.next/static/chunks/app/(app)/skills/page-87a71bd0a6b0f262.js +0 -1
  246. package/.next/static/chunks/app/(app)/tasks/page-a34a5658aff509ec.js +0 -1
  247. package/.next/static/chunks/app/(app)/test-dev/page-842f8771d36e964b.js +0 -1
  248. package/.next/static/chunks/app/(app)/update/page-64467fa6d8ed737e.js +0 -1
  249. package/.next/static/chunks/app/(auth)/login/page-82964b720ff11bab.js +0 -1
  250. package/.next/static/chunks/app/_not-found/page-489c316e4356f1b7.js +0 -1
  251. /package/.next/static/{Fx06n4huXV42eQUI-Lty0 → vaEtsAmUuKf_DngRqwRUn}/_buildManifest.js +0 -0
  252. /package/.next/static/{Fx06n4huXV42eQUI-Lty0 → vaEtsAmUuKf_DngRqwRUn}/_ssgManifest.js +0 -0
@@ -14,7 +14,7 @@ ${r}`,`
14
14
  Output ONLY a JSON object (no prose, no markdown fences): {"estimates":[{"key":"1","points":5,"moscow":"Must","duplicateOf":"3"}],"gaps":["a missing issue the objectives need"]} — one estimate per issue above, "points" one of 1,2,3,5,8,13, "duplicateOf" optional, "gaps" optional.`].filter(Boolean).join("\n");await i.db.update(j.agent).set({status:"working"}).where((0,f.eq)(j.agent.id,h.id));try{c=await (0,l.p1)(x,{orgId:a,binary:m,model:p,timeoutMs:12e4},()=>{})}finally{try{await i.db.update(j.agent).set({status:"idle"}).where((0,f.eq)(j.agent.id,h.id))}catch{}}(c.usd>0||c.inputTokens+c.outputTokens>0)&&await i.db.insert(j.costEntry).values({id:(0,e.randomUUID)(),workspaceId:b.id,agentId:h.id,provider:c.binary,model:c.model??h.model,usd:c.usd,tokens:c.inputTokens+c.outputTokens,at:new Date});let y=[],z=[],A=c.text.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(A)try{let a=JSON.parse(A[0]);Array.isArray(a)?y=a:(y=Array.isArray(a.estimates)?a.estimates:[],z=Array.isArray(a.gaps)?a.gaps.map(String).slice(0,8):[])}catch{y=[]}if(!Array.isArray(y)||!y.length)return{ok:!1,error:"The PO returned no parseable estimates — try again."};let B=new Set([1,2,3,5,8,13]),C=new Set(["Must","Should","Could","Won't"]),D=Object.fromEntries(k.map(a=>[String(a.key),a.id])),E=0;for(let a of y){let b=D[String(a.key)];if(!b)continue;let c="number"==typeof a.points?Math.round(a.points):NaN,d=B.has(c)?c:void 0,e="string"==typeof a.moscow&&C.has(a.moscow)?a.moscow:void 0;(void 0!==d||e)&&(await i.db.update(j.issue).set({...void 0!==d?{points:d}:{},...e?{moscow:e}:{}}).where((0,f.eq)(j.issue.id,b)),E++)}if(E){for(let a of(await i.db.select().from(j.issue).where((0,f.Uo)((0,f.eq)(j.issue.workspaceId,b.id),(0,f.eq)(j.issue.status,"active")))))await i.db.update(j.backlogItem).set({points:a.points,moscow:a.moscow??"Should"}).where((0,f.Uo)((0,f.eq)(j.backlogItem.workspaceId,b.id),(0,f.eq)(j.backlogItem.title,a.title)));await i.db.insert(j.message).values({id:(0,e.randomUUID)(),workspaceId:b.id,channel:"room",fromKind:"agent",fromHandle:h.handle,text:`Backlog groomed — estimated story points + MoSCoW for ${E} issue${1===E?"":"s"}. Open the Product Manager to review.`,createdAt:new Date}),await (0,n.j)(b.id,{text:`Backlog groomed by ${h.name} — sized ${E} issue(s)`,by:h.handle,source:"po-grooming"})}let F=y.filter(a=>null!=a.duplicateOf&&D[String(a.duplicateOf)]&&D[String(a.key)]&&String(a.duplicateOf)!==String(a.key)).map(a=>`${a.key} ↔ ${a.duplicateOf}`);if(F.length||z.length){let a=[];F.length&&a.push(`Possible duplicate / overlapping issues: ${F.join(", ")}.`),z.length&&a.push(`Gaps the objectives need:
15
15
  ${z.map(a=>`- ${a}`).join("\n")}`);let c=a.join("\n\n");await i.db.insert(j.message).values({id:(0,e.randomUUID)(),workspaceId:b.id,channel:"room",fromKind:"agent",fromHandle:h.handle,text:`Backlog review — ${c}`.slice(0,4e3),createdAt:new Date}),await (0,o.vE)(b.id,{kind:"review",fromAgentId:h.id,title:`PO backlog review — ${F.length} duplicate, ${z.length} gap`,detail:c.slice(0,500)}),await (0,n.j)(b.id,{text:`PO flagged ${F.length} duplicate + ${z.length} gap during grooming`,by:h.handle,source:"po-grooming"})}return{ok:!0,groomed:E}}async function v(){let{org:a,workspace:b}=await (0,k.nP)(),c=await u(a.id,b);return(0,h.revalidatePath)("/pm"),(0,h.revalidatePath)("/planner"),(0,h.revalidatePath)("/","layout"),c}async function w(){let{workspace:a}=await (0,k.nP)();await (0,q.TR)(a.id),(0,h.revalidatePath)("/planner"),(0,h.revalidatePath)("/inbox")}async function x(a){let{workspace:b}=await (0,k.nP)();await i.db.update(j.spec).set({approved:!0}).where((0,f.Uo)((0,f.eq)(j.spec.id,a),(0,f.eq)(j.spec.workspaceId,b.id))),await (0,o.W_)(b.id,"spec",a),(0,h.revalidatePath)("/planner"),(0,h.revalidatePath)("/inbox")}async function y(a){let{workspace:b}=await (0,k.nP)(),[c]=await i.db.select().from(j.spec).where((0,f.Uo)((0,f.eq)(j.spec.id,a),(0,f.eq)(j.spec.workspaceId,b.id)));await i.db.update(j.spec).set({approved:!1}).where((0,f.eq)(j.spec.id,a));let d="ada",e=null;if(c?.authorId){let[a]=await i.db.select().from(j.agent).where((0,f.eq)(j.agent.id,c.authorId));a&&(d=a.handle,e=a.id)}return await (0,m.I)(b.id,{kind:"review",text:`Spec ${c?.key??""} sent back for revision`,detail:"The operator rejected this spec."}),await (0,o.vE)(b.id,{kind:"review",refType:"spec",refId:a,goalId:c?.goalId??null,fromAgentId:e,title:`Revise spec ${c?.key??""}`,detail:`Rejected — @${d} should revise “${c?.title??""}”.`}),(0,h.revalidatePath)("/planner"),(0,h.revalidatePath)("/inbox"),{handle:d,key:c?.key??"spec"}}async function z(a){let{org:b,workspace:c}=await (0,k.nP)(),[d]=await i.db.update(j.issue).set({approved:!0}).where((0,f.Uo)((0,f.eq)(j.issue.id,a),(0,f.eq)(j.issue.workspaceId,c.id))).returning();if(d?.key){let a=(0,p.sL)(b.id,`issues/${d.key}.md`);a&&(0,p.dx)(b.id,`issues/${d.key}.md`,a.replace(/\*\*Status:\*\* .*/m,"**Status:** approved"))}await (0,o.W_)(c.id,"issue",a),(0,h.revalidatePath)("/pm"),(0,h.revalidatePath)("/planner"),(0,h.revalidatePath)("/inbox")}async function A(a){let{workspace:b}=await (0,k.nP)(),[c]=await i.db.select().from(j.issue).where((0,f.Uo)((0,f.eq)(j.issue.id,a),(0,f.eq)(j.issue.workspaceId,b.id)));await i.db.update(j.issue).set({approved:!1}).where((0,f.eq)(j.issue.id,a));let d="donald",e=null;if(c?.assigneeId){let[a]=await i.db.select().from(j.agent).where((0,f.eq)(j.agent.id,c.assigneeId));a&&(d=a.handle,e=a.id)}return await (0,m.I)(b.id,{kind:"review",text:`Issue ${c?.key??""} sent back for revision`,detail:"The operator rejected this issue."}),await (0,o.vE)(b.id,{kind:"review",refType:"issue",refId:a,goalId:c?.goalId??null,fromAgentId:e,title:`Revise issue ${c?.key??""}`,detail:`Rejected — @${d} should revise “${c?.title??""}”.`}),(0,h.revalidatePath)("/pm"),(0,h.revalidatePath)("/planner"),(0,h.revalidatePath)("/inbox"),{handle:d,key:c?.key??"issue"}}async function B(a){let{workspace:b}=await (0,k.nP)();await (0,q.mL)(b.id,a),(0,h.revalidatePath)("/planner")}async function C(a){let{workspace:b}=await (0,k.nP)(),c=["todo","doing","review","done"],[d]=await i.db.select().from(j.issue).where((0,f.Uo)((0,f.eq)(j.issue.id,a),(0,f.eq)(j.issue.workspaceId,b.id)));if(!d||"done"===d.col||"blocked"===d.col)return;let e=c[c.indexOf(d.col)+1]??"done";await i.db.update(j.issue).set({col:e}).where((0,f.eq)(j.issue.id,a)),"done"===e&&await (0,m.I)(b.id,{kind:"test",text:`${d.key} merged — ${d.title}`,detail:"QA passed and the issue was merged.",tg:!0}),(0,h.revalidatePath)("/planner")}async function D(a){let{org:b,workspace:c}=await (0,k.nP)();return(0,r.generatePlanFor)(b.id,c,a)}async function E(a){let b=a.brief?.trim();return b?D({brief:b,goalTitle:a.title?.trim()||void 0}):{ok:!1,error:"Describe what you want to implement, fix or change."}}async function F(a){let{workspace:b}=await (0,k.nP)(),c=(await i.db.select().from(j.message).where((0,f.Uo)((0,f.eq)(j.message.workspaceId,b.id),(0,f.eq)(j.message.channel,a))).orderBy((0,g.Y)(j.message.createdAt))).slice(-30).map(a=>("operator"===a.fromKind?"Operator":"@"+(a.fromHandle??"agent"))+": "+a.text).join("\n");return c.trim()?D({brief:`Turn the operator's request from this chat into a delivery plan. Conversation:
16
16
 
17
- ${c}`}):{ok:!1,error:"No conversation to plan from yet."}}(0,c(29635).D)([t,u,v,w,x,y,z,A,B,C,D,E,F]),(0,d.A)(t,"00e565233acd1b1622979ff2cf891f01f7021a1b7a",null),(0,d.A)(u,"601b583d70097128ea8208f56230640112a36ed0b4",null),(0,d.A)(v,"00b3b52cb7833f87653e869ab0da35b470165ab3f2",null),(0,d.A)(w,"002ec012533e91d74d3596cacc28fb29672dd2d424",null),(0,d.A)(x,"404de78d48c7a08195046dd144742454e2bda67c9c",null),(0,d.A)(y,"40ce2a1d1b3f5a652afcd597a20bc8bfc5e240f8e2",null),(0,d.A)(z,"409483dd86b3a500619c574d5486d6fe760b53accd",null),(0,d.A)(A,"407e76c79e36677578f1327d2f785d64c352713479",null),(0,d.A)(B,"40747886657d57fe4ec7bb6e930420729ce0501fd8",null),(0,d.A)(C,"407c3e9df9b0d1da40b0b033574d67de5b2dbab44b",null),(0,d.A)(D,"40b9f423165fc1bd787ea6c1079de9f2c3abab7157",null),(0,d.A)(E,"4040f166eec5ea57ea575d9d9c381347e68abe1328",null),(0,d.A)(F,"40933768e7809f7eb198ab6ffe0955c3d64fb1a288",null)},96930:(a,b,c)=>{c.d(b,{generatePlanFor:()=>v,G:()=>u,startNewWorkFor:()=>w});var d=c(77598),e=c(1782),f=c(7852),g=c(83550),h=c(80280),i=c(25533),j=c(3188),k=c(20850),l=c(78848),m=c(18612);let n="specs/SUPER-SPEC.md";async function o(a){let b,{orgId:c,wsId:e,ada:f,binary:g,model:k}=a,o=`You are ${f.name}, analyzing an EXISTING project that is ALREADY present in this workspace (the current directory). Do NOT write any product code, do NOT scaffold anything — your ONLY job is to UNDERSTAND the project and write a thorough "super spec".
17
+ ${c}`}):{ok:!1,error:"No conversation to plan from yet."}}(0,c(29635).D)([t,u,v,w,x,y,z,A,B,C,D,E,F]),(0,d.A)(t,"00a7004dfc810d6e90f45ba9bd04c2eca003d5e093",null),(0,d.A)(u,"608afcbccbaff8e6c4a43052c351055e65a62dd352",null),(0,d.A)(v,"000089ba14b42533398abdb41e570d2405b97bf2a8",null),(0,d.A)(w,"0029bb6209b7625897f6acdf3d35b4ef5b219d578e",null),(0,d.A)(x,"40c8d005e334f79c3d49673bd0c6cd2f849273b72e",null),(0,d.A)(y,"407ed923314dd0345588038a18fe9b55c8a8fbc857",null),(0,d.A)(z,"400f1502baff617e4723ca3981ce687c276c48b759",null),(0,d.A)(A,"407e9aa8711c5ef7e274c016f412637c44a483fd40",null),(0,d.A)(B,"4046442bdc21d1e6839fe89a0eaa873baf2538c3ff",null),(0,d.A)(C,"40fd61509391be62062cf7a8fc99f5a2fbd01608d0",null),(0,d.A)(D,"40f9cd3fc6c6d8cae96897a561300a7232d723d346",null),(0,d.A)(E,"40e41f281f5ba97fe6181c0b4eb66011755ea7502c",null),(0,d.A)(F,"40e9eeca52e7c9ad6dad0edc93d6c93b24f979ffde",null)},96930:(a,b,c)=>{c.d(b,{generatePlanFor:()=>v,G:()=>u,startNewWorkFor:()=>w});var d=c(77598),e=c(1782),f=c(7852),g=c(83550),h=c(80280),i=c(25533),j=c(3188),k=c(20850),l=c(78848),m=c(18612);let n="specs/SUPER-SPEC.md";async function o(a){let b,{orgId:c,wsId:e,ada:f,binary:g,model:k}=a,o=`You are ${f.name}, analyzing an EXISTING project that is ALREADY present in this workspace (the current directory). Do NOT write any product code, do NOT scaffold anything — your ONLY job is to UNDERSTAND the project and write a thorough "super spec".
18
18
 
19
19
  Read in THIS order, then go deeper:
20
20
  1. Docs first: README*, CHANGELOG*, docs/**, any install/setup/usage guides, CONTRIBUTING.
@@ -0,0 +1,4 @@
1
+ "use strict";exports.id=9215,exports.ids=[7336,9215],exports.modules={4719:(a,b,c)=>{c.d(b,{ViewChrome:()=>d});let d=(0,c(62060).registerClientReference)(function(){throw Error("Attempted to call ViewChrome() from the server but ViewChrome is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\shell\\view-chrome.tsx","ViewChrome")},5323:(a,b,c)=>{c.d(b,{_:()=>g});var d=c(61576),e=c(1308),f=c(4719);function g({title:a,sub:b,right:c,icon:h,flush:i,children:j}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.b,{title:a}),(0,d.jsx)(f.ViewChrome,{title:a,sub:b,right:c,icon:h,flush:i,children:j})]})}},33441:(a,b,c)=>{c.r(b),c.d(b,{"001d862a45700b97eed7ff82f3c441cd8ee0ffab20":()=>e.GK,"0026fb789a3869385c4fa73286eaceabb57fec0a3e":()=>e.y_,"00399934414125b2c0f556b17a89ea40f72d300443":()=>k.io,"0042ee277c4926ed16da4986433df2a10d31d9c1e3":()=>y.eU,"004be00b695774440c703396f4cfeb3351aa70a5d8":()=>j.f,"0077c0ee3c6156b515eb879c6db644118d802ddc9c":()=>i.V,"008fca8433fce8ba54b47b22064f066194f5bf191b":()=>h.Mp,"009378c403e9e324f0ea88a71d85dfea0ed41709af":()=>y.PG,"00946a38085cf8dbcf482ccf5d1ab92e9c3d69ae81":()=>e.PE,"009d345770f2c961a9317e72195418f543c2578bc9":()=>k.dj,"00bfcb15dbf3ee78330196c651f567f7a854c6cbef":()=>d.bt,"00d8b990afa0bc3a165262e4e3d7da082ea9b42111":()=>h.x7,"00d8da9ae2efc29e163e46ef9adaffef40309457c0":()=>x,"00e09d54565aaa4291e3c1b70329c9bbaf8862ed9e":()=>d.xU,"00ee5748ec968a18003657ec434046e78e64366821":()=>y.pM,"00efb944f8a739779968b563aa6011039e70a0e09b":()=>k.eg,"00f19587be9951e63603509c801a62942c770acbd1":()=>e.KO,"00f57922c0ba4f86fb7b8e8a38e47b755ad66db28f":()=>j.O,"400d3b9b778ad01e27d82818676a48e8fb3d7b40cb":()=>d.H7,"4011a317307d07ace50ae499187fb0bf81b2b71615":()=>d.gg,"4017c4c0c0ab0fb7c815fa6cb7c9dd40a828a409b4":()=>e.jc,"401e79b9cb6705efb44057fbf05167f46ffe2e9f9d":()=>i.VJ,"406155dd34c1c6547ddc7214718ecae680576e9bf3":()=>e.ey,"40689da10adb9fd3b881cbb8d78286858377f35f6e":()=>g.L,"4070ff940b1c687ad22aabf20fe92a3ad89a64705d":()=>e.lJ,"4073f5489bb2ffc8c17fb63954cf2ed0749a41eaa0":()=>e.S,"4074a961759047c07e6197cfff2f919fcd136c791a":()=>g.p,"408332013b91d3c84e59356b3abf582a946f1be913":()=>e.r7,"408e5bb62d8ee22f5b7c1ce4cb0d3e9aea321789bf":()=>k.De,"40a498adc14fd9e0cffafe7b5c76b42428205c128e":()=>l.q4,"40a5e1c431b980840b573db267d5663b2a55730440":()=>d.rd,"40b69f03027af7c3f35fd8f0bc599ca19477f03650":()=>d.VL,"40bc1c38fe5859f94e8f79cb473dbc41e188992aad":()=>y.Kg,"40c1a5b2ff8c5ec1329df3acdbccc1ffdff57c6dd4":()=>h.lR,"40c731e7b257cbf2386da74d20773d05afe1d07fe8":()=>h.sE,"40ce3ac173f4dd51e6763bfe813dc16f40bb916440":()=>e.RG,"40d676ce0c61e346620b788dd4a627d29f65091098":()=>d.Wu,"40da4d98252e05782e4564fe6b561ca877b47a913e":()=>i.zS,"40dd7e0269afedda7e25496a7995e1e186adfdafe6":()=>l.IL,"40df031f8f1b4814c665bf1e6d7ea4e8f9334e460b":()=>l.TX,"40df103f8d0c456688772da1ca3aaf13a26be0f59a":()=>d.GW,"40e75079f4b731afb27cbf4de46348e1c26461bbb5":()=>y.lP,"40f6cd94551ef7550be6c5035f9bb11e5d70db42d7":()=>i.F,"40f9e6d774bd91fd9e919e45b069694dc497ebfae4":()=>i.E_,"40fdf7ada61251ec4d2ac9d02b4f141f9e416014e6":()=>m.y,"600cd6c42f3befc0d27e9a1941e44d657bfee3cd98":()=>d.jw,"601a079553b2115aeb70f6956d37870e90449fc8ad":()=>d.rm,"6029c3b1002579a195fb86355a9b98618d2234092e":()=>e.q$,"60331696bed4b24f71687dc42b031b7ba09ed8b7cc":()=>d.ME,"60512b89dc36e7d5d1abc7ad6d6526d057c69de788":()=>l.bk,"605cf7522aa1f909b0b70c2b5a21c29a25f270aade":()=>e.LZ,"6072203b503672bb78424c53de9d83e1f7b4c8094c":()=>e.AA,"607e0a457f7dc73f4fd6cc95c03cad1c96739a2d43":()=>d.n4,"60a6635adb20a0863a21f9478b3ad76af6fa8ad012":()=>w,"60c90060eb97b05811e1cc6d6b7612c92c3560e129":()=>f.I,"60e01c7f3ced33925729b2f450e494674ad5b9ae98":()=>l.Jp,"60e902ea7bc78c560894ce919b6c0ca7987450d908":()=>l.bV,"60f088be7c482526a422c65a61db5559ac882567e8":()=>d.Fu,"60f0bea5ddad11025dc93938ce3faf0f92f28b665a":()=>f.k,"7060480ee412a771306b0ad69a956d64a8119084a6":()=>e.M8,"70a2cbc8ec085871a421b04c8b662ee25cab5f3bfa":()=>d._z});var d=c(97140),e=c(15487),f=c(79505),g=c(51605),h=c(46363),i=c(46282),j=c(387),k=c(13604),l=c(7482),m=c(58169),n=c(6866),o=c(77598),p=c(97603),q=c(65705),r=c(1890),s=c(53993),t=c(83963),u=c(70149),v=c(24701);async function w(a,b){let{org:c,workspace:d}=await (0,s.nP)(),[e]=await q.db.select().from(r.docIndex).where((0,p.Uo)((0,p.eq)(r.docIndex.id,a),(0,p.eq)(r.docIndex.workspaceId,d.id)));return e?(await (0,t.g)(c.id,e.path,b),{ok:!0}):{ok:!1}}async function x(){let{org:a,workspace:b}=await (0,s.nP)(),c=await q.db.select().from(r.agent).where((0,p.eq)(r.agent.workspaceId,b.id)),d=c.find(a=>"barbara"===a.handle)??c.find(a=>/docs|writer/i.test(a.role))??c[0];if(!d)return{ok:!1,error:"no docs agent"};let e=(0,u.hW)(d.adapter,d.model),f="claude"===e?d.model.includes("opus")?"opus":d.model.includes("haiku")?"haiku":"sonnet":void 0,g=`You are ${d.name} (@${d.handle}), ${d.role} at ${b.name}.
2
+ Review the current state of this workspace directory (code, specs, structure) and write or refresh a single piece of project documentation in GitHub-flavoured Markdown.
3
+ Begin with one H1 title line. Cover what exists, how it is organised, and how to work with it. Be specific and truthful — describe only what the files actually show; do not invent features.
4
+ Output ONLY the Markdown document (no code fences).`,h=await (0,u.JN)(g,{orgId:a.id,binary:e,model:f,timeoutMs:24e4});(h.usd>0||h.inputTokens+h.outputTokens>0)&&await q.db.insert(r.costEntry).values({id:(0,o.randomUUID)(),workspaceId:b.id,agentId:d.id,provider:h.binary,model:h.model??d.model,usd:h.usd,tokens:h.inputTokens+h.outputTokens,at:new Date});let i=h.text.trim();if(!h.ok||!i)return await (0,v.I)(b.id,{kind:"info",text:"Docs generation failed",detail:(h.error??"no output").slice(0,300),agentId:d.id}),{ok:!1,error:h.error};let j=(i.split("\n").find(a=>a.trim())??"Documentation").replace(/^#+\s*/,"").slice(0,120)||"Documentation",k=j.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)||"doc",l=`DOCS/${k}.md`;return await (0,t.g)(a.id,l,i),await (0,v.I)(b.id,{kind:"done",text:`${d.name} updated the docs: ${j}`,detail:`Saved to ${l}`,agentId:d.id}),{ok:!0,path:l}}(0,c(74252).D)([w,x]),(0,n.A)(w,"60a6635adb20a0863a21f9478b3ad76af6fa8ad012",null),(0,n.A)(x,"00d8da9ae2efc29e163e46ef9adaffef40309457c0",null);var y=c(52932)},47336:(a,b,c)=>{c.d(b,{checkForUpdate:()=>l});var d=c(73024),e=c(76760),f=c(30043);let g="constellai",h=null,i=a=>a.replace(/^v/,"").split("-")[0].split(".").map(a=>parseInt(a,10)||0);async function j(a){try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch(a,{signal:b.signal,headers:{"user-agent":"constella"}});return clearTimeout(c),d.ok?await d.json():null}catch{return null}}async function k(a){try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch(a,{signal:b.signal,headers:{"user-agent":"constella"}});return clearTimeout(c),d.ok?await d.text():null}catch{return null}}async function l(a=!1){let b,c,m=function(){if(process.env.CONSTELLA_VERSION)return process.env.CONSTELLA_VERSION;try{let a=JSON.parse((0,d.readFileSync)((0,e.join)((0,f.v)(),"package.json"),"utf8"));if(a?.version)return a.version}catch{}return"0.0.0"}(),n=`npm install -g ${g}@latest`;if(!a&&h&&Date.now()-h.at<216e5)return h.info;let o=await j(`https://registry.npmjs.org/${g}/latest`),p=o?.version??null,q=!!p&&function(a,b){let c=i(a),d=i(b);for(let a=0;a<3;a++){if((c[a]||0)>(d[a]||0))return!0;if((c[a]||0)<(d[a]||0))break}return!1}(p,m),r=null;if(q&&p){let a=await k("https://raw.githubusercontent.com/gabriel7silva/constella/main/CHANGELOG.md");r=a?function(a,b){let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=a.match(RegExp(`(^|\\n)##\\s*\\[?${c}\\]?[\\s\\S]*?(?=\\n##\\s|$)`));if(d)return d[0].trim();let e=a.split(/\n##\s/)[1];return e?"## "+e.trim():null}(a,p):null}let s={current:m,latest:p,updateAvailable:q,type:p?(b=i(p),c=i(m),b[0]>c[0]?"major":b[1]>c[1]?"minor":b[2]>c[2]?"patch":null):null,command:n,changelog:r};return h={at:Date.now(),info:s},s}},51221:(a,b,c)=>{c.d(b,{ViewChrome:()=>h});var d=c(4374),e=c(43526),f=c(48442),g=c(31819);function h({title:a,sub:b,right:c,icon:i,flush:j,children:k}){let l=(0,g.k)(),m=f.e.find(b=>b.title===a),n=i??m?.icon,o=m?l(`mod.${m.id}`):a;return(0,d.jsxs)("div",{className:"app-view",children:[(0,d.jsxs)("div",{className:"view-head",children:[n&&(0,d.jsx)("div",{className:"vh-icon",children:(0,d.jsx)(e.I,{name:n,size:18})}),(0,d.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,d.jsx)("div",{className:"view-title",children:o}),b&&(0,d.jsx)("div",{className:"view-sub",children:b})]}),c]}),(0,d.jsx)("div",{className:"view-body",style:j?{padding:0,overflow:"hidden"}:void 0,children:k})]})}},52932:(a,b,c)=>{c.d(b,{pM:()=>z,lP:()=>y,Kg:()=>x,eU:()=>B,PG:()=>A});var d=c(6866),e=c(53993),f=c(30043),g=c(64567),h=c(30170);function i(){return(0,h.n)()?"dev":"vps"===(0,g.T)()?"vps":"portable"===(0,g.T)()?"portable":/[\\/]_npx[\\/]/.test((0,f.v)())?"npx":"global"}var j=c(47336),k=c(73024),l=c(76760),m=c(48161),n=c(31421),o=c(57086);let p=()=>new Date().toISOString().replace(/[:.]/g,"-"),q=()=>(0,l.join)((0,o.r$)(),"backups","last-update.json");async function r(){let a=await (0,j.checkForUpdate)(!0),b=i(),c=a.command;if(!a.updateAvailable)return{ok:!0,context:b,command:c,message:"Already up to date."};let d=function(){try{let a=(0,o.r$)(),b=(0,l.join)(a,"backups",p());for(let c of((0,k.mkdirSync)(b,{recursive:!0}),[".env","constella.db","constella.db-wal","constella.db-shm"])){let d=(0,l.join)(a,c);if((0,k.existsSync)(d))try{(0,k.copyFileSync)(d,(0,l.join)(b,c))}catch{}}return b}catch{return null}}()??void 0;if("dev"===b)return{ok:!1,context:b,command:c,backupDir:d,message:"Running from source — update with: git pull && pnpm install && pnpm build"};if("npx"===b)return{ok:!1,context:b,command:c,backupDir:d,message:"npx runs an ephemeral copy — re-run: npx constellai@latest"};if("vps"===b){var e="bash scripts/vps-update.sh";try{(0,k.writeFileSync)(q(),JSON.stringify({status:"running",to:a.latest,at:p()}));let b=(0,o.r$)(),c=process.env.CONSTELLA_PKG_ROOT||process.cwd(),f=(0,l.join)(c,"bin","constella-update.mjs"),g=a.latest?["--version",a.latest]:[];return(0,n.spawn)(process.execPath,[f,"--quiet","--mode","vps","--home",b,...g],{detached:!0,stdio:"ignore",cwd:(0,m.tmpdir)()}).unref(),{ok:!0,started:!0,needsRestart:!0,context:"vps",command:e,backupDir:d,message:`Updating to ${a.latest} and restarting the service — this page reconnects in a few seconds.`}}catch(a){return{ok:!1,context:"vps",command:e,backupDir:d,message:"Couldn't launch the updater: "+String(a instanceof Error?a.message:a)}}}return function(a,b,c,d){try{(0,k.writeFileSync)(q(),JSON.stringify({status:"running",to:a.latest,at:p()}));let e=process.env.CONSTELLA_RUN_MODE||"start",f=process.env.CONSTELLA_LAUNCHER_PID||(process.ppid?String(process.ppid):"0"),g=(0,o.r$)(),h=process.env.PORT||"3000",i=process.env.CONSTELLA_PKG_ROOT||process.cwd(),j=(0,l.join)(i,"bin","constella-update.mjs"),r=a.latest?["--version",a.latest]:[];return(0,n.spawn)(process.execPath,[j,"--quiet","--pid",f,"--mode",e,"--home",g,"--port",h,...r],{detached:!0,stdio:"ignore",windowsHide:!0,cwd:(0,m.tmpdir)()}).unref(),{ok:!0,started:!0,needsRestart:!0,context:b,command:c,backupDir:d,message:`Updating to ${a.latest} and restarting — this page reconnects in a few seconds.`}}catch(a){return{ok:!1,context:b,command:c,backupDir:d,message:"Couldn't launch the updater: "+String(a instanceof Error?a.message:a)}}}(a,b,c,d)}var s=c(97603),t=c(65705),u=c(1890),v=c(10245);async function w(){let a=await t.db.select({lastPulse:u.agent.lastPulse}).from(u.agent).where((0,s.eq)(u.agent.status,"working")),b=Date.now()-v.fQ;return a.some(a=>null!=a.lastPulse&&new Date(a.lastPulse).getTime()>=b)}async function x(a=!1){return(0,j.checkForUpdate)(a)}async function y(a=!1){let[b,c]=await Promise.all([(0,j.checkForUpdate)(a),w()]);return{info:b,busy:c}}async function z(){return i()}async function A(){return(await (0,e.nP)(),await w())?{ok:!1,started:!1,blocked:!0,context:"",command:"",message:"An agent is working — pause it before updating."}:r()}async function B(){try{return JSON.parse((0,k.readFileSync)(q(),"utf8"))}catch{return{status:"idle"}}}(0,c(74252).D)([x,y,z,A,B]),(0,d.A)(x,"40bc1c38fe5859f94e8f79cb473dbc41e188992aad",null),(0,d.A)(y,"40e75079f4b731afb27cbf4de46348e1c26461bbb5",null),(0,d.A)(z,"00ee5748ec968a18003657ec434046e78e64366821",null),(0,d.A)(A,"009378c403e9e324f0ea88a71d85dfea0ed41709af",null),(0,d.A)(B,"0042ee277c4926ed16da4986433df2a10d31d9c1e3",null)},64567:(a,b,c)=>{c.d(b,{T:()=>e});let d=["start","auth","vps","portable"];function e(){let a=process.env.CONSTELLA_RUN_MODE;return a&&d.includes(a)?a:"start"}},67949:(a,b,c)=>{c.d(b,{l:()=>g});var d=c(79676),e=c(75785);async function f(){return(0,e.e)((await (0,d.cookies)()).get("cn-lang")?.value)}async function g(){let a=await f();return(b,c)=>(0,e.t)(a,b,c)}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=9229,exports.ids=[7336,9229],exports.modules={4719:(a,b,c)=>{c.d(b,{ViewChrome:()=>d});let d=(0,c(62060).registerClientReference)(function(){throw Error("Attempted to call ViewChrome() from the server but ViewChrome is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\shell\\view-chrome.tsx","ViewChrome")},5323:(a,b,c)=>{c.d(b,{_:()=>g});var d=c(61576),e=c(1308),f=c(4719);function g({title:a,sub:b,right:c,icon:h,flush:i,children:j}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.b,{title:a}),(0,d.jsx)(f.ViewChrome,{title:a,sub:b,right:c,icon:h,flush:i,children:j})]})}},7159:(a,b,c)=>{c.r(b),c.d(b,{"001d862a45700b97eed7ff82f3c441cd8ee0ffab20":()=>e.GK,"0026fb789a3869385c4fa73286eaceabb57fec0a3e":()=>e.y_,"00399934414125b2c0f556b17a89ea40f72d300443":()=>k.io,"0042ee277c4926ed16da4986433df2a10d31d9c1e3":()=>n.eU,"004be00b695774440c703396f4cfeb3351aa70a5d8":()=>j.f,"0077c0ee3c6156b515eb879c6db644118d802ddc9c":()=>i.V,"008fca8433fce8ba54b47b22064f066194f5bf191b":()=>h.Mp,"009378c403e9e324f0ea88a71d85dfea0ed41709af":()=>n.PG,"00946a38085cf8dbcf482ccf5d1ab92e9c3d69ae81":()=>e.PE,"009d345770f2c961a9317e72195418f543c2578bc9":()=>k.dj,"00bfcb15dbf3ee78330196c651f567f7a854c6cbef":()=>d.bt,"00d8b990afa0bc3a165262e4e3d7da082ea9b42111":()=>h.x7,"00e09d54565aaa4291e3c1b70329c9bbaf8862ed9e":()=>d.xU,"00ee5748ec968a18003657ec434046e78e64366821":()=>n.pM,"00efb944f8a739779968b563aa6011039e70a0e09b":()=>k.eg,"00f19587be9951e63603509c801a62942c770acbd1":()=>e.KO,"00f57922c0ba4f86fb7b8e8a38e47b755ad66db28f":()=>j.O,"400d3b9b778ad01e27d82818676a48e8fb3d7b40cb":()=>d.H7,"4011a317307d07ace50ae499187fb0bf81b2b71615":()=>d.gg,"4017c4c0c0ab0fb7c815fa6cb7c9dd40a828a409b4":()=>e.jc,"401e79b9cb6705efb44057fbf05167f46ffe2e9f9d":()=>i.VJ,"406155dd34c1c6547ddc7214718ecae680576e9bf3":()=>e.ey,"40689da10adb9fd3b881cbb8d78286858377f35f6e":()=>g.L,"4070ff940b1c687ad22aabf20fe92a3ad89a64705d":()=>e.lJ,"4073f5489bb2ffc8c17fb63954cf2ed0749a41eaa0":()=>e.S,"4074a961759047c07e6197cfff2f919fcd136c791a":()=>g.p,"408332013b91d3c84e59356b3abf582a946f1be913":()=>e.r7,"408e5bb62d8ee22f5b7c1ce4cb0d3e9aea321789bf":()=>k.De,"40a498adc14fd9e0cffafe7b5c76b42428205c128e":()=>l.q4,"40a5e1c431b980840b573db267d5663b2a55730440":()=>d.rd,"40b69f03027af7c3f35fd8f0bc599ca19477f03650":()=>d.VL,"40bc1c38fe5859f94e8f79cb473dbc41e188992aad":()=>n.Kg,"40c1a5b2ff8c5ec1329df3acdbccc1ffdff57c6dd4":()=>h.lR,"40c731e7b257cbf2386da74d20773d05afe1d07fe8":()=>h.sE,"40ce3ac173f4dd51e6763bfe813dc16f40bb916440":()=>e.RG,"40d676ce0c61e346620b788dd4a627d29f65091098":()=>d.Wu,"40da4d98252e05782e4564fe6b561ca877b47a913e":()=>i.zS,"40dd7e0269afedda7e25496a7995e1e186adfdafe6":()=>l.IL,"40df031f8f1b4814c665bf1e6d7ea4e8f9334e460b":()=>l.TX,"40df103f8d0c456688772da1ca3aaf13a26be0f59a":()=>d.GW,"40e75079f4b731afb27cbf4de46348e1c26461bbb5":()=>n.lP,"40f6cd94551ef7550be6c5035f9bb11e5d70db42d7":()=>i.F,"40f9e6d774bd91fd9e919e45b069694dc497ebfae4":()=>i.E_,"40fdf7ada61251ec4d2ac9d02b4f141f9e416014e6":()=>m.y,"600cd6c42f3befc0d27e9a1941e44d657bfee3cd98":()=>d.jw,"601a079553b2115aeb70f6956d37870e90449fc8ad":()=>d.rm,"6029c3b1002579a195fb86355a9b98618d2234092e":()=>e.q$,"60331696bed4b24f71687dc42b031b7ba09ed8b7cc":()=>d.ME,"60512b89dc36e7d5d1abc7ad6d6526d057c69de788":()=>l.bk,"605cf7522aa1f909b0b70c2b5a21c29a25f270aade":()=>e.LZ,"6072203b503672bb78424c53de9d83e1f7b4c8094c":()=>e.AA,"607e0a457f7dc73f4fd6cc95c03cad1c96739a2d43":()=>d.n4,"60c90060eb97b05811e1cc6d6b7612c92c3560e129":()=>f.I,"60e01c7f3ced33925729b2f450e494674ad5b9ae98":()=>l.Jp,"60e902ea7bc78c560894ce919b6c0ca7987450d908":()=>l.bV,"60f088be7c482526a422c65a61db5559ac882567e8":()=>d.Fu,"60f0bea5ddad11025dc93938ce3faf0f92f28b665a":()=>f.k,"7060480ee412a771306b0ad69a956d64a8119084a6":()=>e.M8,"70a2cbc8ec085871a421b04c8b662ee25cab5f3bfa":()=>d._z});var d=c(97140),e=c(15487),f=c(79505),g=c(51605),h=c(46363),i=c(46282),j=c(387),k=c(13604),l=c(7482),m=c(58169),n=c(52932)},9842:(a,b,c)=>{c.d(b,{IZ:()=>k,Ix:()=>j,ZF:()=>m,h6:()=>n,w1:()=>l});var d=c(1782),e=c(76760),f=c(80280),g=c(25533),h=c(18612),i=c(54033);function j(a,b){if(!b)return null;let c=(0,h.HZ)(a),d=((0,e.isAbsolute)(b)?(0,e.relative)(c,b):b).replace(/\\/g,"/");return!d||d.startsWith("..")||d.startsWith(".git/")||d.startsWith(".claude/")||d.startsWith("archives/")?null:d}async function k(a,b,c){let e=(0,d.Uo)((0,d.eq)(g.fileLock.workspaceId,a),(0,d.eq)(g.fileLock.path,b)),[h]=await f.db.select().from(g.fileLock).where(e);if(h){let a=!!c.taskId&&h.taskId===c.taskId,b=!h.taskId&&!!c.agentId&&h.agentId===c.agentId;return a||b?(await f.db.update(g.fileLock).set({heartbeatAt:new Date}).where(e),{ok:!0}):{ok:!1,heldBy:{handle:h.agentHandle,taskId:h.taskId}}}try{return await f.db.insert(g.fileLock).values({workspaceId:a,path:b,taskId:c.taskId||"",agentId:c.agentId||"",agentHandle:c.handle||"",acquiredAt:new Date,heartbeatAt:new Date}),{ok:!0}}catch{let[a]=await f.db.select().from(g.fileLock).where(e);if(a&&(a.taskId===c.taskId||a.agentId===c.agentId))return{ok:!0};return{ok:!1,heldBy:a?{handle:a.agentHandle,taskId:a.taskId}:void 0}}}async function l(a,b){if(b)try{let c=await f.db.select({path:g.fileLock.path}).from(g.fileLock).where((0,d.Uo)((0,d.eq)(g.fileLock.workspaceId,a),(0,d.eq)(g.fileLock.taskId,b)));for(let e of(await f.db.delete(g.fileLock).where((0,d.Uo)((0,d.eq)(g.fileLock.workspaceId,a),(0,d.eq)(g.fileLock.taskId,b))),c))await (0,i.W_)(a,"task",`lock:${e.path}`)}catch{}}async function m(a=3e5){try{await f.db.delete(g.fileLock).where((0,d.lt)(g.fileLock.heartbeatAt,new Date(Date.now()-a)))}catch{}}async function n(a){try{return await f.db.select({path:g.fileLock.path,agentHandle:g.fileLock.agentHandle,taskId:g.fileLock.taskId}).from(g.fileLock).where((0,d.eq)(g.fileLock.workspaceId,a))}catch{return[]}}},47336:(a,b,c)=>{c.d(b,{checkForUpdate:()=>l});var d=c(73024),e=c(76760),f=c(30043);let g="constellai",h=null,i=a=>a.replace(/^v/,"").split("-")[0].split(".").map(a=>parseInt(a,10)||0);async function j(a){try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch(a,{signal:b.signal,headers:{"user-agent":"constella"}});return clearTimeout(c),d.ok?await d.json():null}catch{return null}}async function k(a){try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch(a,{signal:b.signal,headers:{"user-agent":"constella"}});return clearTimeout(c),d.ok?await d.text():null}catch{return null}}async function l(a=!1){let b,c,m=function(){if(process.env.CONSTELLA_VERSION)return process.env.CONSTELLA_VERSION;try{let a=JSON.parse((0,d.readFileSync)((0,e.join)((0,f.v)(),"package.json"),"utf8"));if(a?.version)return a.version}catch{}return"0.0.0"}(),n=`npm install -g ${g}@latest`;if(!a&&h&&Date.now()-h.at<216e5)return h.info;let o=await j(`https://registry.npmjs.org/${g}/latest`),p=o?.version??null,q=!!p&&function(a,b){let c=i(a),d=i(b);for(let a=0;a<3;a++){if((c[a]||0)>(d[a]||0))return!0;if((c[a]||0)<(d[a]||0))break}return!1}(p,m),r=null;if(q&&p){let a=await k("https://raw.githubusercontent.com/gabriel7silva/constella/main/CHANGELOG.md");r=a?function(a,b){let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=a.match(RegExp(`(^|\\n)##\\s*\\[?${c}\\]?[\\s\\S]*?(?=\\n##\\s|$)`));if(d)return d[0].trim();let e=a.split(/\n##\s/)[1];return e?"## "+e.trim():null}(a,p):null}let s={current:m,latest:p,updateAvailable:q,type:p?(b=i(p),c=i(m),b[0]>c[0]?"major":b[1]>c[1]?"minor":b[2]>c[2]?"patch":null):null,command:n,changelog:r};return h={at:Date.now(),info:s},s}},51221:(a,b,c)=>{c.d(b,{ViewChrome:()=>h});var d=c(4374),e=c(43526),f=c(48442),g=c(31819);function h({title:a,sub:b,right:c,icon:i,flush:j,children:k}){let l=(0,g.k)(),m=f.e.find(b=>b.title===a),n=i??m?.icon,o=m?l(`mod.${m.id}`):a;return(0,d.jsxs)("div",{className:"app-view",children:[(0,d.jsxs)("div",{className:"view-head",children:[n&&(0,d.jsx)("div",{className:"vh-icon",children:(0,d.jsx)(e.I,{name:n,size:18})}),(0,d.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,d.jsx)("div",{className:"view-title",children:o}),b&&(0,d.jsx)("div",{className:"view-sub",children:b})]}),c]}),(0,d.jsx)("div",{className:"view-body",style:j?{padding:0,overflow:"hidden"}:void 0,children:k})]})}},52932:(a,b,c)=>{c.d(b,{pM:()=>z,lP:()=>y,Kg:()=>x,eU:()=>B,PG:()=>A});var d=c(6866),e=c(53993),f=c(30043),g=c(64567),h=c(30170);function i(){return(0,h.n)()?"dev":"vps"===(0,g.T)()?"vps":"portable"===(0,g.T)()?"portable":/[\\/]_npx[\\/]/.test((0,f.v)())?"npx":"global"}var j=c(47336),k=c(73024),l=c(76760),m=c(48161),n=c(31421),o=c(57086);let p=()=>new Date().toISOString().replace(/[:.]/g,"-"),q=()=>(0,l.join)((0,o.r$)(),"backups","last-update.json");async function r(){let a=await (0,j.checkForUpdate)(!0),b=i(),c=a.command;if(!a.updateAvailable)return{ok:!0,context:b,command:c,message:"Already up to date."};let d=function(){try{let a=(0,o.r$)(),b=(0,l.join)(a,"backups",p());for(let c of((0,k.mkdirSync)(b,{recursive:!0}),[".env","constella.db","constella.db-wal","constella.db-shm"])){let d=(0,l.join)(a,c);if((0,k.existsSync)(d))try{(0,k.copyFileSync)(d,(0,l.join)(b,c))}catch{}}return b}catch{return null}}()??void 0;if("dev"===b)return{ok:!1,context:b,command:c,backupDir:d,message:"Running from source — update with: git pull && pnpm install && pnpm build"};if("npx"===b)return{ok:!1,context:b,command:c,backupDir:d,message:"npx runs an ephemeral copy — re-run: npx constellai@latest"};if("vps"===b){var e="bash scripts/vps-update.sh";try{(0,k.writeFileSync)(q(),JSON.stringify({status:"running",to:a.latest,at:p()}));let b=(0,o.r$)(),c=process.env.CONSTELLA_PKG_ROOT||process.cwd(),f=(0,l.join)(c,"bin","constella-update.mjs"),g=a.latest?["--version",a.latest]:[];return(0,n.spawn)(process.execPath,[f,"--quiet","--mode","vps","--home",b,...g],{detached:!0,stdio:"ignore",cwd:(0,m.tmpdir)()}).unref(),{ok:!0,started:!0,needsRestart:!0,context:"vps",command:e,backupDir:d,message:`Updating to ${a.latest} and restarting the service — this page reconnects in a few seconds.`}}catch(a){return{ok:!1,context:"vps",command:e,backupDir:d,message:"Couldn't launch the updater: "+String(a instanceof Error?a.message:a)}}}return function(a,b,c,d){try{(0,k.writeFileSync)(q(),JSON.stringify({status:"running",to:a.latest,at:p()}));let e=process.env.CONSTELLA_RUN_MODE||"start",f=process.env.CONSTELLA_LAUNCHER_PID||(process.ppid?String(process.ppid):"0"),g=(0,o.r$)(),h=process.env.PORT||"3000",i=process.env.CONSTELLA_PKG_ROOT||process.cwd(),j=(0,l.join)(i,"bin","constella-update.mjs"),r=a.latest?["--version",a.latest]:[];return(0,n.spawn)(process.execPath,[j,"--quiet","--pid",f,"--mode",e,"--home",g,"--port",h,...r],{detached:!0,stdio:"ignore",windowsHide:!0,cwd:(0,m.tmpdir)()}).unref(),{ok:!0,started:!0,needsRestart:!0,context:b,command:c,backupDir:d,message:`Updating to ${a.latest} and restarting — this page reconnects in a few seconds.`}}catch(a){return{ok:!1,context:b,command:c,backupDir:d,message:"Couldn't launch the updater: "+String(a instanceof Error?a.message:a)}}}(a,b,c,d)}var s=c(97603),t=c(65705),u=c(1890),v=c(10245);async function w(){let a=await t.db.select({lastPulse:u.agent.lastPulse}).from(u.agent).where((0,s.eq)(u.agent.status,"working")),b=Date.now()-v.fQ;return a.some(a=>null!=a.lastPulse&&new Date(a.lastPulse).getTime()>=b)}async function x(a=!1){return(0,j.checkForUpdate)(a)}async function y(a=!1){let[b,c]=await Promise.all([(0,j.checkForUpdate)(a),w()]);return{info:b,busy:c}}async function z(){return i()}async function A(){return(await (0,e.nP)(),await w())?{ok:!1,started:!1,blocked:!0,context:"",command:"",message:"An agent is working — pause it before updating."}:r()}async function B(){try{return JSON.parse((0,k.readFileSync)(q(),"utf8"))}catch{return{status:"idle"}}}(0,c(74252).D)([x,y,z,A,B]),(0,d.A)(x,"40bc1c38fe5859f94e8f79cb473dbc41e188992aad",null),(0,d.A)(y,"40e75079f4b731afb27cbf4de46348e1c26461bbb5",null),(0,d.A)(z,"00ee5748ec968a18003657ec434046e78e64366821",null),(0,d.A)(A,"009378c403e9e324f0ea88a71d85dfea0ed41709af",null),(0,d.A)(B,"0042ee277c4926ed16da4986433df2a10d31d9c1e3",null)},64567:(a,b,c)=>{c.d(b,{T:()=>e});let d=["start","auth","vps","portable"];function e(){let a=process.env.CONSTELLA_RUN_MODE;return a&&d.includes(a)?a:"start"}},67949:(a,b,c)=>{c.d(b,{l:()=>g});var d=c(79676),e=c(75785);async function f(){return(0,e.e)((await (0,d.cookies)()).get("cn-lang")?.value)}async function g(){let a=await f();return(b,c)=>(0,e.t)(a,b,c)}},87298:(a,b,c)=>{c.d(b,{O:()=>e});var d=c(2910);let e=(0,d.createServerReference)("00f57922c0ba4f86fb7b8e8a38e47b755ad66db28f",d.callServer,void 0,d.findSourceMapURL,"curateKbAction")}};
@@ -0,0 +1,21 @@
1
+ "use strict";exports.id=9310,exports.ids=[9310],exports.modules={19881:(a,b,c)=>{c.d(b,{W:()=>h});var d=c(4374),e=c(74679);let f={anthropic:"anthropic",claude_code:"claude",openai:"openai",codex_cli:"openai",google:"google",google_gemini:"gemini",gemini_cli:"gemini",vertex_ai:"vertexai",mistral:"mistral",deepseek:"deepseek",cohere:"cohere",perplexity:"perplexity",xai_grok:"grok",groq:"groq",ai21:"ai21",nvidia_nim:"nvidia",huggingface:"huggingface",replicate:"replicate",azure_openai:"azure",aws_bedrock:"bedrock",cloudflare:"cloudflare",dashscope:"qwen",zhipu:"zhipu",moonshot:"moonshot",minimax:"minimax",together:"together",openrouter:"openrouter",fireworks:"fireworks",cerebras:"cerebras",ollama:"ollama",ollama_cli:"ollama",lmstudio:"lmstudio",vllm:"vllm",localai:"localai",elevenlabs:"elevenlabs",stability:"stability",jina:"jina",voyage:"voyage"},g={anthropic:["#d97757","An"],openai:["#10a37f","AI"],google_gemini:["#4285f4","G"],google:["#4285f4","G"],mistral:["#fa520f","Mi"],xai_grok:["#1a1a1a","X"],deepseek:["#4d6bfe","DS"],cohere:["#39594d","Co"],ai21:["#e8488a","A2"],perplexity:["#20808d","Px"],groq:["#f55036","Gq"],nvidia_nim:["#76b900","NV"],together:["#0f6fff","To"],fireworks:["#5019c5","Fw"],cerebras:["#f25733","Cb"],huggingface:["#ff9d00","HF"],replicate:["#1a1a1a","Rp"],openrouter:["#6566f1","OR"],litellm:["#00b8a3","LL"],portkey:["#3b5bdb","Pk"],azure_openai:["#0078d4","Az"],aws_bedrock:["#ff9900","Br"],vertex_ai:["#4285f4","Vx"],cloudflare:["#f38020","Cf"],dashscope:["#ff6a00","Qw"],zhipu:["#3859ff","GL"],moonshot:["#16162a","Ki"],minimax:["#e1342c","MM"],ollama:["#0c0c0c","Ol"],llamacpp:["#7a4ddb","Lc"],lmstudio:["#4a5cff","LM"],vllm:["#1668dc","vL"],localai:["#2e7d32","La"],gpt4all:["#5b6cff","G4"],jan:["#1a1a1a","Jn"],claude_code:["#d97757","CC"],codex_cli:["#10a37f","Cx"],gemini_cli:["#4285f4","Gc"],aider:["#14b8a6","Ad"],ollama_cli:["#0c0c0c","Oc"],openclaw:["#e8590c","OC"],hermes_cli:["#6d28d9","Hm"],opencode:["#1a1a1a","Oc"],copilot_cli:["#1f2328","Co"],cursor_cli:["#1a1a1a","Cu"],cline_cli:["#2563eb","Cl"],kilo_code:["#7c3aed","Ki"],voyage:["#5b21b6","Vo"],jina:["#ec4899","Ji"],stability:["#a855f7","St"],elevenlabs:["#1a1a1a","El"]};function h({id:a,size:b=34,radius:c}){let i,j=g[a],k=j?j[0]:"#5b6378",l=j?j[1]:(a||"?").slice(0,2).replace(/[^a-z0-9]/gi,"").toUpperCase(),m=(i=f[a])?`https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg/icons/${i}.svg`:null,[n,o]=(0,e.useState)(!1),p=null!=c?c:Math.round(.28*b),q=m&&!n,r=Math.round(.66*b);return(0,d.jsx)("span",{className:"prov-glyph",style:{width:b,height:b,flex:"0 0 "+b+"px",borderRadius:p,background:q?"#fff":"linear-gradient(150deg, "+k+", color-mix(in srgb, "+k+" 70%, #000))",color:"#fff",display:"grid",placeItems:"center",overflow:"hidden",fontSize:Math.round(.4*b),fontWeight:800,letterSpacing:"-.5px",boxShadow:q?"inset 0 0 0 1px rgba(0,0,0,.08)":"inset 0 1px 0 rgba(255,255,255,.18)"},children:q?(0,d.jsx)("img",{src:m,alt:"",width:r,height:r,loading:"lazy",onError:()=>o(!0),style:{width:r,height:r,objectFit:"contain",display:"block"}}):l})}},20260:(a,b,c)=>{c.d(b,{k:()=>e});var d=c(2910);let e=(0,d.createServerReference)("60097f5ec474b9312847d8021391e806e8e52e09f3",d.callServer,void 0,d.findSourceMapURL,"saveAgentModel")},27829:(a,b,c)=>{c.d(b,{Y:()=>j});var d=c(4374),e=c(74679),f=c(71898),g=c(31819);let h={cli_claude_code:[{value:"opus",label:"Claude Opus \xb7 most capable"},{value:"sonnet",label:"Claude Sonnet \xb7 balanced"},{value:"haiku",label:"Claude Haiku \xb7 fast"}],cli_codex:[{value:"gpt-5-codex",label:"GPT-5 Codex"},{value:"o4-mini",label:"o4-mini"}],cli_gemini:[{value:"gemini-2.5-pro",label:"Gemini 2.5 Pro"},{value:"gemini-2.5-flash",label:"Gemini 2.5 Flash"}],cli_openclaw:[{value:"(default)",label:"Configured default"},{value:"openai/gpt-5.4",label:"OpenAI \xb7 GPT-5.4"},{value:"anthropic/claude-sonnet-4",label:"Anthropic \xb7 Claude Sonnet 4"}],cli_hermes:[{value:"(default)",label:"Configured default"},{value:"anthropic/claude-sonnet-4.6",label:"Anthropic \xb7 Claude Sonnet 4.6"},{value:"openai/gpt-5.5",label:"OpenAI \xb7 GPT-5.5"}],cli_aider:[{value:"(default)",label:"Configured default"},{value:"anthropic/claude-sonnet-4-6",label:"Anthropic \xb7 Claude Sonnet 4.6"},{value:"openai/gpt-5.2",label:"OpenAI \xb7 GPT-5.2"},{value:"deepseek/deepseek-chat",label:"DeepSeek \xb7 Chat"}],cli_opencode:[{value:"(default)",label:"Configured default"},{value:"anthropic/claude-sonnet-4-6",label:"Anthropic \xb7 Claude Sonnet 4.6"},{value:"openai/gpt-5.2",label:"OpenAI \xb7 GPT-5.2"}],cli_copilot:[{value:"(default)",label:"Configured default"},{value:"claude-sonnet-4.5",label:"Claude Sonnet 4.5"},{value:"gpt-5",label:"GPT-5"}],cli_cursor:[{value:"(default)",label:"Configured default"},{value:"claude-4.5-sonnet",label:"Claude Sonnet 4.5"},{value:"gpt-5",label:"GPT-5"}],cli_cline:[{value:"(default)",label:"Configured default"}],cli_kilo:[{value:"(default)",label:"Configured default"}]};var i=c(69503);function j({adapter:a,value:b,onChange:c,providers:k}){let l=(0,g.k)(),m=function(a){let b=h[a]??null;if(!b)return null;let c=(0,i.L2)(a);return c?b.map(a=>{let b=c.find(b=>b.id===a.value);return b?{value:a.value,label:`${b.label} ${b.version}${b.note?" \xb7 "+b.note:""}`}:a}):b}(a),n=a.startsWith("local_"),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)("");k.find(b=>b.adapter===a);let s=n?[{value:b||"local",label:l("modelpicker.localGguf")}]:null,t=m??s??o??(b?[{value:b,label:b}]:[]),u=b&&!t.some(a=>a.value===b)?[{value:b,label:b},...t]:t;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.m,{mono:!0,value:b,options:u,placeholder:l("modelpicker.placeholder"),onChange:c}),q&&(0,d.jsx)("div",{className:"form-hint",style:{marginTop:4},children:q})]})}c(55907),c(86470)},55907:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(2910);let e=(0,d.createServerReference)("40942bd62c47b06c00ffb8344c05ad1b197e87f0f4",d.callServer,void 0,d.findSourceMapURL,"listCatalogModels")},65300:(a,b,c)=>{function d(a,b,c){let d=a.match(/^---\n([\s\S]*?)\n---/);if(!d)return a;let e=d[1].split("\n"),f=!1,g=e.map(a=>a.startsWith(b+":")?(f=!0,`${b}: ${c}`):a);return f||g.push(`${b}: ${c}`),a.replace(/^---\n[\s\S]*?\n---/,`---
2
+ ${g.join("\n")}
3
+ ---`)}function e(a,b,c){let d=RegExp(`(\\*\\*${b}:\\*\\*\\s*).*`);return d.test(a)?a.replace(d,`$1${c}`):a}function f(a,b,c){let d=RegExp(`(^|\\n)##\\s+${b}\\s*\\n[\\s\\S]*?(?=\\n##\\s|$)`);return d.test(a)?a.replace(d,`$1## ${b}
4
+ ${c}`):a.replace(/\s*$/,"")+`
5
+
6
+ ## ${b}
7
+ ${c}
8
+ `}c.d(b,{a$:()=>e,c4:()=>f,tT:()=>d})},69503:(a,b,c)=>{c.d(b,{L2:()=>e,Ov:()=>f});let d={cli_claude_code:[{id:"opus",label:"Claude Opus",version:"4.8",note:"most capable"},{id:"sonnet",label:"Claude Sonnet",version:"4.6",note:"balanced"},{id:"haiku",label:"Claude Haiku",version:"4.5",note:"fast"}],cli_codex:[{id:"gpt-5-codex",label:"GPT-5 Codex",version:"5"},{id:"o4-mini",label:"o4-mini",version:"o4"}],cli_gemini:[{id:"gemini-2.5-pro",label:"Gemini Pro",version:"2.5"},{id:"gemini-2.5-flash",label:"Gemini Flash",version:"2.5"}],cli_openclaw:[{id:"(default)",label:"OpenClaw",version:"default",note:"configured provider"},{id:"openai/gpt-5.4",label:"GPT",version:"5.4"},{id:"anthropic/claude-sonnet-4",label:"Claude Sonnet",version:"4"}],cli_hermes:[{id:"(default)",label:"Hermes",version:"default",note:"configured provider"},{id:"anthropic/claude-sonnet-4.6",label:"Claude Sonnet",version:"4.6"},{id:"openai/gpt-5.5",label:"GPT",version:"5.5"}],cli_aider:[{id:"(default)",label:"Aider",version:"default",note:"configured provider"},{id:"anthropic/claude-sonnet-4-6",label:"Claude Sonnet",version:"4.6"},{id:"openai/gpt-5.2",label:"GPT",version:"5.2"},{id:"deepseek/deepseek-chat",label:"DeepSeek Chat",version:""}],cli_opencode:[{id:"(default)",label:"OpenCode",version:"default",note:"configured provider"},{id:"anthropic/claude-sonnet-4-6",label:"Claude Sonnet",version:"4.6"},{id:"openai/gpt-5.2",label:"GPT",version:"5.2"}],cli_copilot:[{id:"(default)",label:"Copilot",version:"default",note:"configured provider"},{id:"claude-sonnet-4.5",label:"Claude Sonnet",version:"4.5"},{id:"gpt-5",label:"GPT",version:"5"}],cli_cursor:[{id:"(default)",label:"Cursor",version:"default",note:"configured provider"},{id:"claude-4.5-sonnet",label:"Claude Sonnet",version:"4.5"},{id:"gpt-5",label:"GPT",version:"5"}],cli_cline:[{id:"(default)",label:"Cline",version:"default",note:"configured provider"}],cli_kilo:[{id:"(default)",label:"Kilo Code",version:"default",note:"configured provider"}]};function e(a){return d[a]??null}function f(a){if(!a)return{label:"",version:""};let b=a.match(/(\d+(?:[.\-]\d+){0,2})(?!.*\d)/),c=b?b[1].replace(/-/g,"."):"";return{label:(b?a.slice(0,b.index).replace(/[-_.\s]+$/,""):a).split(/[-_.\s]+/).filter(Boolean).map(a=>/^(gpt|llm|api|ai)$/i.test(a)?a.toUpperCase():a.charAt(0).toUpperCase()+a.slice(1)).join(" ")||a,version:c}}},71898:(a,b,c)=>{c.d(b,{m:()=>i});var d=c(4374),e=c(74679),f=c(43526),g=c(19881),h=c(31819);function i({value:a,options:b,onChange:c,placeholder:j,mono:k,glyph:l,disabled:m,searchable:n}){let o=(0,h.k)(),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(""),t=(0,e.useRef)(null),u=(0,e.useRef)(null),v=(0,e.useMemo)(()=>(b||[]).map(a=>"string"==typeof a?{value:a,label:a}:a),[b]),w=v.find(b=>b.value===a),x=(n??v.length>8)&&!m,y=r.trim().toLowerCase(),z=x&&y?v.filter(a=>(a.label+" "+a.value+" "+(a.sub||"")).toLowerCase().includes(y)):v;return(0,d.jsxs)("div",{className:"dd"+(p?" open":"")+(m?" disabled":""),ref:t,children:[(0,d.jsxs)("button",{type:"button",className:"dd-btn"+(k?" mono":""),onClick:()=>!m&&q(a=>!a),children:[l&&w&&(0,d.jsx)(g.W,{id:w.glyphId||w.value,size:20}),(0,d.jsx)("span",{className:"dd-val",children:w?w.label:(0,d.jsx)("span",{className:"dd-ph",children:j||o("common.selectEllipsis")})}),(0,d.jsx)(f.I,{name:"chevronDown",size:14})]}),p&&(0,d.jsxs)("div",{className:"dd-menu scroll",children:[x&&(0,d.jsxs)("div",{style:{position:"sticky",top:0,zIndex:1,display:"flex",alignItems:"center",gap:6,padding:"6px 8px",margin:"-4px -4px 4px",background:"var(--bg-elev, var(--bg-active))",borderBottom:"1px solid var(--border)"},children:[(0,d.jsx)(f.I,{name:"search",size:13}),(0,d.jsx)("input",{ref:u,value:r,placeholder:o("common.searchEllipsis"),onChange:a=>s(a.target.value),onKeyDown:a=>{"Enter"===a.key&&z[0]?(c(z[0].value),q(!1)):"Escape"===a.key&&r&&(a.stopPropagation(),s(""))},className:k?"mono":void 0,style:{flex:1,minWidth:0,background:"transparent",border:"none",outline:"none",color:"var(--text)",fontSize:12.5,fontFamily:k?"var(--mono-font)":"inherit"}}),r&&(0,d.jsx)("button",{type:"button",title:o("common.clear"),onClick:()=>{s(""),u.current?.focus()},style:{background:"none",border:"none",color:"var(--text-dim)",cursor:"pointer",display:"flex",padding:0},children:(0,d.jsx)(f.I,{name:"close",size:12})})]}),0===v.length&&(0,d.jsx)("div",{className:"dd-empty",children:o("common.noOptions")}),v.length>0&&0===z.length&&(0,d.jsx)("div",{className:"dd-empty",children:o("dropdown.noMatch",{q:r})}),z.map(b=>(0,d.jsxs)("button",{type:"button",className:"dd-opt"+(b.value===a?" on":""),onClick:()=>{c(b.value),q(!1)},children:[l&&(0,d.jsx)(g.W,{id:b.glyphId||b.value,size:22}),(0,d.jsxs)("span",{className:"dd-opt-main",children:[(0,d.jsx)("span",{className:"dd-opt-label"+(k?" mono":""),children:b.label}),b.sub&&(0,d.jsx)("span",{className:"dd-opt-sub",children:b.sub})]}),b.tag&&(0,d.jsx)("span",{className:"dd-opt-tag",children:b.tag}),b.value===a&&(0,d.jsx)(f.I,{name:"check",size:13})]},b.value))]})]})}},75603:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(2910);let e=(0,d.createServerReference)("401d32cbbd01c648cd56431798e978dfb425ec9e0b",d.callServer,void 0,d.findSourceMapURL,"pullModel")},86036:(a,b,c)=>{c.d(b,{bv:()=>t,eH:()=>q,iw:()=>o,jM:()=>n,kq:()=>p,yS:()=>s,z6:()=>r});var d=c(6866),e=c(97603),f=c(31371),g=c(65705),h=c(1890),i=c(53993),j=c(57086),k=c(83963),l=c(65300),m=c(35745);async function n(a,b){let{workspace:c}=await (0,i.nP)();if(a===b)return;let d=Object.fromEntries((await g.db.select().from(h.agent).where((0,e.eq)(h.agent.workspaceId,c.id))).map(a=>[a.id,a])),j=b,k=new Set;for(;j;){if(j===a)return;if(k.has(j))break;k.add(j),j=d[j]?.reportsTo??null}await g.db.update(h.agent).set({reportsTo:b}).where((0,e.Uo)((0,e.eq)(h.agent.id,a),(0,e.eq)(h.agent.workspaceId,c.id))),(0,f.revalidatePath)("/org")}async function o(a,b){let{workspace:c}=await (0,i.nP)();if(a===b)return;let d=Object.fromEntries((await g.db.select().from(h.agent).where((0,e.eq)(h.agent.workspaceId,c.id))).map(a=>[a.handle,a])),j=d[a];if(!j||null!==b&&!d[b])return;let k=b,l=new Set;for(;k;){if(k===a)return;if(l.has(k))break;l.add(k),k=d[k]?.reportsTo??null}await g.db.update(h.agent).set({reportsTo:b}).where((0,e.Uo)((0,e.eq)(h.agent.id,j.id),(0,e.eq)(h.agent.workspaceId,c.id))),(0,f.revalidatePath)("/org")}async function p(a,b){let{org:c,workspace:d}=await (0,i.nP)(),[n]=await g.db.select().from(h.agent).where((0,e.Uo)((0,e.eq)(h.agent.id,a),(0,e.eq)(h.agent.workspaceId,d.id)));if(!n)return;await g.db.update(h.agent).set({...void 0!==b.adapter?{adapter:b.adapter}:{},...void 0!==b.model?{model:b.model}:{},...void 0!==b.temperature?{temperature:b.temperature}:{},...void 0!==b.dailyCapUsd?{dailyCapUsd:b.dailyCapUsd}:{},...void 0!==b.tierFloor?{tierFloor:b.tierFloor}:{}}).where((0,e.eq)(h.agent.id,a));let o=`.claude/agents/${n.handle}/Agent.md`,p=(0,j.sL)(c.id,o);p&&(void 0!==b.adapter&&(p=(0,l.tT)(p,"provider",b.adapter)),void 0!==b.model&&(p=(0,l.tT)(p,"model",b.model)),void 0!==b.temperature&&(p=(0,l.tT)(p,"temperature",b.temperature),p=(0,l.c4)(p,"Behavior",(0,m.T)(b.temperature))),void 0!==b.dailyCapUsd&&(p=(0,l.tT)(p,"dailyCapUsd",b.dailyCapUsd)),void 0!==b.tierFloor&&(p=(0,l.tT)(p,"tierFloor",b.tierFloor)),await (0,k.g)(c.id,o,p)),(0,f.revalidatePath)("/agents/[handle]","page")}async function q(a,b){let{org:c,workspace:d}=await (0,i.nP)(),[k]=await g.db.select().from(h.agent).where((0,e.Uo)((0,e.eq)(h.agent.id,a),(0,e.eq)(h.agent.workspaceId,d.id)));if(k){if(k.image&&k.image.startsWith("uploads/")&&k.image!==b)try{(0,j.EX)(c.id,k.image.split("/").slice(0,2).join("/"))}catch{}await g.db.update(h.agent).set({image:b??null}).where((0,e.eq)(h.agent.id,a)),(0,f.revalidatePath)("/agents/[handle]","page"),(0,f.revalidatePath)("/","layout")}}async function r(a,b){let{org:c,workspace:d}=await (0,i.nP)(),[m]=await g.db.select().from(h.agent).where((0,e.Uo)((0,e.eq)(h.agent.id,a),(0,e.eq)(h.agent.workspaceId,d.id)));if(!m)return;await g.db.update(h.agent).set({persona:b}).where((0,e.eq)(h.agent.id,a));let n=`.claude/agents/${m.handle}/Agent.md`,o=(0,j.sL)(c.id,n);o?(o=(0,l.a$)(o,"Identity",b.identity),o=(0,l.a$)(o,"Ritual",b.ritual),o=(0,l.c4)(o,"System prompt",b.systemPrompt)):o=`---
9
+ handle: ${m.handle}
10
+ name: ${m.name}
11
+ role: ${m.role}
12
+ ---
13
+ # ${m.name} — ${m.role}
14
+
15
+ **Identity:** ${b.identity}
16
+
17
+ **Ritual:** ${b.ritual}
18
+
19
+ ## System prompt
20
+ ${b.systemPrompt}
21
+ `,await (0,k.g)(c.id,n,o),(0,f.revalidatePath)("/agents/[handle]","page")}async function s(a,b,c){let{workspace:d}=await (0,i.nP)();await g.db.update(h.agent).set({orgX:Math.round(b),orgY:Math.round(c)}).where((0,e.Uo)((0,e.eq)(h.agent.handle,a),(0,e.eq)(h.agent.workspaceId,d.id)))}async function t(a,b){let{workspace:c}=await (0,i.nP)(),[d]=await g.db.select().from(h.agent).where((0,e.Uo)((0,e.eq)(h.agent.id,a),(0,e.eq)(h.agent.workspaceId,c.id)));d&&(await g.db.update(h.agent).set({rag:b}).where((0,e.eq)(h.agent.id,a)),(0,f.revalidatePath)("/agents/[handle]","page"))}(0,c(74252).D)([n,o,p,q,r,s,t]),(0,d.A)(n,"60ccccf5475768de27abb2a14d8ad46c85df8c42ce",null),(0,d.A)(o,"600d2b1f545eab030685f22228374094a12be42e33",null),(0,d.A)(p,"60097f5ec474b9312847d8021391e806e8e52e09f3",null),(0,d.A)(q,"6068c50e5d5d28ba1e18b961e24217bc9396ab97b9",null),(0,d.A)(r,"605a4d9158e007b89f85205efcf2aa6a33569c9e04",null),(0,d.A)(s,"70fb4703981350b58088b4fba27a30b2d8fe344704",null),(0,d.A)(t,"6036e9b92f00af4407fbbd211bd7a372ebcce31487",null)},86470:(a,b,c)=>{c.d(b,{E:()=>e});var d=c(2910);let e=(0,d.createServerReference)("40e8df75e45bb28a0912a0d3788e77e37f502b8092",d.callServer,void 0,d.findSourceMapURL,"listProviderModels")},96214:(a,b,c)=>{c.d(b,{aO:()=>H,AO:()=>M,EC:()=>O,uR:()=>L,Po:()=>J,iw:()=>P,xf:()=>Q,x1:()=>I,WU:()=>N});var d=c(6866),e=c(77598),f=c(97603),g=c(31371),h=c(65705),i=c(1890),j=c(53993),k=c(38926),l=c(29803),m=c(70149);async function n(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 o(a){return a&&"object"==typeof a?Array.isArray(a.data)?a.data.length:Array.isArray(a.models)?a.models.length:0:0}async function p(a,b){let c=a.defaultAdapter;if(c.startsWith("cli_")){let a=(0,m.hW)(c);return await (0,m.$g)(a)?{ok:!0,count:(m.w5[c]??m.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 n(b.replace(/\/$/,"")+"/api/tags",{});return c.ok?{ok:!0,count:o(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 n(c.replace(/\/$/,"")+"/v1/models",b?{Authorization:"Bearer "+b}:{});return d.ok?{ok:!0,count:o(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 n("https://api.anthropic.com/v1/models",{"x-api-key":b,"anthropic-version":"2023-06-01"});return a.ok?{ok:!0,count:o(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 n(e,{Authorization:"Bearer "+b});return f.ok?{ok:!0,count:o(f.json)}:{ok:!1,count:0,error:f.error||"auth failed ("+f.status+")"}}var q=c(73024),r=c(76760),s=c(57086);let t={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"};function u(a){return t[a]?t[a]:a.replace(/_(grok|gemini|nim|cli|openai|api|server|rt)$/g,"").replace(/_/g,"-")}let v={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"]},w=(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}),x={anthropic:[w("claude-opus-4-8","Claude Opus 4.8",1e6,64e3,5,25,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),w("claude-opus-4-7","Claude Opus 4.7",1e6,64e3,5,25,{reasoning:!0,tools:!0,vision:!0},"2025-12-01"),w("claude-sonnet-4-6","Claude Sonnet 4.6",1e6,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2026-01-15"),w("claude-haiku-4-5","Claude Haiku 4.5",2e5,32e3,1,5,{tools:!0,vision:!0},"2025-10-01")],openai:[w("gpt-5.2","GPT-5.2",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2026-03-01"),w("gpt-5.1","GPT-5.1",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-12-01"),w("gpt-5","GPT-5",4e5,128e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-08-01"),w("o4-mini","o4-mini",2e5,1e5,1.1,4.4,{reasoning:!0,tools:!0},"2025-04-01")],google:[w("gemini-3-pro","Gemini 3 Pro",2e6,64e3,2,12,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),w("gemini-3-flash","Gemini 3 Flash",1e6,64e3,.3,2.5,{tools:!0,vision:!0},"2026-02-01"),w("gemini-2.5-pro","Gemini 2.5 Pro",2e6,64e3,1.25,10,{reasoning:!0,tools:!0,vision:!0},"2025-06-01")],xai:[w("grok-4.3","Grok 4.3",256e3,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2026-02-01"),w("grok-4","Grok 4",256e3,64e3,3,15,{reasoning:!0,tools:!0,vision:!0},"2025-09-01"),w("grok-3","Grok 3",131072,32e3,3,15,{tools:!0,vision:!0},"2025-02-01")],deepseek:[w("deepseek-chat","DeepSeek Chat",128e3,8e3,.27,1.1,{tools:!0},"2025-12-01"),w("deepseek-reasoner","DeepSeek Reasoner",128e3,64e3,.55,2.19,{reasoning:!0,tools:!0},"2025-12-01")],groq:[w("llama-4-scout","Llama 4 Scout",131072,8e3,.11,.34,{tools:!0,vision:!0},"2025-04-01"),w("llama-3.3-70b","Llama 3.3 70B",131072,32e3,.59,.79,{tools:!0},"2024-12-01")]},y=null;function z(){return(0,r.join)((0,s.r$)(),"cache","models-dev.json")}async function A(){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 B(){if(y&&Date.now()-y.at<864e5)return y.data;let a=function(){try{let a=z();if(!(0,q.existsSync)(a))return null;let b=JSON.parse((0,q.readFileSync)(a,"utf8"));if(!b?.data||"object"!=typeof b.data)return null;return{at:Number(b.at??(0,q.statSync)(a).mtimeMs),data:b.data}}catch{return null}}();if(a&&Date.now()-a.at<864e5)return y=a,a.data;let b=await A();if(b){y={at:Date.now(),data:b};try{(0,q.mkdirSync)((0,r.join)((0,s.r$)(),"cache"),{recursive:!0}),(0,q.writeFileSync)(z(),JSON.stringify({at:Date.now(),data:b}),"utf8")}catch{}return b}return a?(y=a,a.data):{}}async function C(a){let b=u(a),c=await B();return c[b]?.length?c[b]:x[b]??[]}async function D(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 E(a){let{catalogId:b,adapter:c,baseUrl:d,apiKey:e}=a;if(c.startsWith("cli_"))return"cli_opencode"===c?(await (0,m.ZB)("opencode")).map(a=>({id:a})):"cli_aider"===c?(await (0,m.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 D(`${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 D(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 F(){let a=await B(),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 G(a,b){let c=await C(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 F(),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}async function H(a,b){let{workspace:c}=await (0,j.nP)(),d=(0,l.kH)(a);if(!d)return;let f=(0,e.randomUUID)();await h.db.insert(i.provider).values({id:f,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,k.IW)(c.id,`${a}_api_key`,b,f),(0,g.revalidatePath)("/models"),await I(f)}async function I(a){let b,{workspace:c}=await (0,j.nP)(),[d]=await h.db.select().from(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.id,a),(0,f.eq)(i.provider.workspaceId,c.id)));if(!d)return{ok:!1,error:"not found"};let e=(0,l.kH)(d.catalogId);if(!e)return{ok:!1,error:"unknown provider"};let n=await (0,k.r6)(c.id,`${d.catalogId}_api_key`),o=await p(e,n),q=null;if("cli"===e.category){let a=(0,m.hW)(e.defaultAdapter);b=(q=await (0,m.$g)(a).catch(()=>null))?await (0,m.Kp)(a).catch(()=>"unknown"):"needs_login"}else b="local_runtime"===e.category?o.ok?"ready":"unknown":n&&o.ok?"ready":"needs_key";return await h.db.update(i.provider).set({status:o.ok?"connected":"error",modelCount:o.count,lastSync:new Date,cliVersion:q,authState:b}).where((0,f.eq)(i.provider.id,a)),o.ok&&await J(a).catch(()=>{}),(0,g.revalidatePath)("/models"),o}async function J(a){let{workspace:b}=await (0,j.nP)(),[c]=await h.db.select().from(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.id,a),(0,f.eq)(i.provider.workspaceId,b.id)));if(!c)return{ok:!1,count:0,error:"not found"};let d=await K(c);return(0,g.revalidatePath)("/models"),d}async function K(a){let b,c,d,g=(0,l.kH)(a.catalogId);if(!g)return{ok:!1,count:0,error:"unknown provider"};let j=await (0,k.r6)(a.workspaceId,`${a.catalogId}_api_key`),n="cli"===g.category;try{b=await E({catalogId:a.catalogId,adapter:a.adapter,baseUrl:g.baseUrl,apiKey:j})}catch{b=null}if(n){let e=(0,m.hW)(a.adapter);d=(c=await (0,m.$g)(e).catch(()=>null))?await (0,m.Kp)(e).catch(()=>"unknown"):"needs_login",null===b&&(b=(m.w5[a.adapter]??[]).filter(a=>"(default)"!==a).map(a=>({id:a})))}if(null===b)return{ok:!0,count:0};let o=await G(a.catalogId,b),p=new Date,q=o.length?function(a,b){if(!b.length)return"";let c=v[u(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,o):null;if(o.length)await h.db.delete(i.providerModel).where((0,f.eq)(i.providerModel.providerId,a.id)),await h.db.insert(i.providerModel).values(o.map(b=>({id:(0,e.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===q,lastSeen:p})));else if(!n)return{ok:!1,count:0,error:"no models returned"};let r=n&&!c?"needs_sync":"connected";return await h.db.update(i.provider).set({status:r,modelCount:o.length||(n?a.modelCount:0),lastSync:p,defaultModel:q||a.defaultModel,...n?{cliVersion:c??null,authState:d??null}:{}}).where((0,f.eq)(i.provider.id,a.id)),{ok:!0,count:o.length}}async function L(a=12){let b,c=new Date(Date.now()-60*a*6e4);try{b=await h.db.select().from(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.status,"connected"),(0,f.or)((0,f.kZ)(i.provider.lastSync),(0,f.lt)(i.provider.lastSync,c))))}catch{return{refreshed:0}}let d=0;for(let a of b.slice(0,50))try{let b=await K(a);b.ok&&b.count>0&&d++}catch{}return{refreshed:d}}async function M(a){let{workspace:b}=await (0,j.nP)(),c=(await h.db.select().from(i.providerModel).where((0,f.Uo)((0,f.eq)(i.providerModel.providerId,a),(0,f.eq)(i.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 N(a){let{workspace:b}=await (0,j.nP)(),[c]=await h.db.select().from(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.id,a),(0,f.eq)(i.provider.workspaceId,b.id)));if(!c)return{ok:!1,error:"not found"};let d=(0,l.kH)(c.catalogId);if(!d)return{ok:!1,error:"unknown provider"};let e=await (0,k.r6)(b.id,`${c.catalogId}_api_key`),m=await p(d,e);return await h.db.update(i.provider).set({status:m.ok?"connected":"error"}).where((0,f.eq)(i.provider.id,a)),(0,g.revalidatePath)("/models"),{ok:m.ok,error:m.error}}async function O(a){let{workspace:b}=await (0,j.nP)(),[c]=await h.db.select().from(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.id,a),(0,f.eq)(i.provider.workspaceId,b.id)));if(!c)return{models:[],error:"not found"};let d=(0,l.kH)(c.catalogId);if(!d?.baseUrl)return{models:[],error:"no public endpoint for this provider"};let e=await (0,k.r6)(b.id,`${c.catalogId}_api_key`),g=d.baseUrl.replace(/\/$/,"");try{let a=/ollama/i.test(c.catalogId)||c.adapter.includes("ollama")?`${g.replace(/\/v1$/,"")}/api/tags`:`${g}/models`,b=await fetch(a,{headers:e?{authorization:`Bearer ${e}`}:{},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 P(a){let{workspace:b}=await (0,j.nP)(),[c]=await h.db.select().from(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.id,a),(0,f.eq)(i.provider.workspaceId,b.id)));c&&await (0,k.Kh)(b.id,`${c.catalogId}_api_key`),await h.db.delete(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.id,a),(0,f.eq)(i.provider.workspaceId,b.id))),(0,g.revalidatePath)("/models")}async function Q(a){let{workspace:b}=await (0,j.nP)(),[c]=await h.db.select().from(i.provider).where((0,f.Uo)((0,f.eq)(i.provider.id,a),(0,f.eq)(i.provider.workspaceId,b.id)));c&&(await (0,k.Kh)(b.id,`${c.catalogId}_api_key`),await h.db.update(i.provider).set({auth:"none",status:"needs_sync",modelCount:0}).where((0,f.eq)(i.provider.id,a)),(0,g.revalidatePath)("/models"))}(0,c(74252).D)([H,I,J,L,M,N,O,P,Q]),(0,d.A)(H,"6063c4c04607bdff1f0b6dc3e695d6d838fa41dc0f",null),(0,d.A)(I,"40ef6a371c8208468fa32c33091775b5aeb9c2ea9d",null),(0,d.A)(J,"40dc8e68ecfa17e5b1a121e933261a7040870dd962",null),(0,d.A)(L,"40a0f7f5fe75a32505a82aac16e0807cfdf7d344a1",null),(0,d.A)(M,"40942bd62c47b06c00ffb8344c05ad1b197e87f0f4",null),(0,d.A)(N,"40eb39b1171f1395549f8ea5615c2ec3f79f8e6206",null),(0,d.A)(O,"40e8df75e45bb28a0912a0d3788e77e37f502b8092",null),(0,d.A)(P,"40b9cc92ffb5f4bf229890566ae068edf9090218a8",null),(0,d.A)(Q,"40c072a0683ed78fc4617b255c94c2e1a237fcbc75",null)}};
@@ -19,4 +19,4 @@ ${i}`}}async function I(){let{org:a}=await (0,l.nP)(),b=(0,n.HZ)(a.id);return aw
19
19
  `+a.findings.slice(0,20).map(a=>`• ${a.file}${a.line?":"+a.line:""} — ${a.kind} (${a.preview})`).join("\n")}),await (0,r.I)(c.id,{kind:"security",text:`Commit blocked — ${a.findings.length} secret risk(s)`,detail:a.findings.slice(0,5).map(a=>`${a.file}: ${a.kind}`).join("; ")}),(0,i.revalidatePath)("/github"),(0,i.revalidatePath)("/inbox"),j}await (0,o.d1)("git",["add","-A"],{cwd:d});let t=await (0,o.d1)("git",["-c","user.email=agents@constella.dev","-c","user.name=Constella Agents","commit","-m",a.message],{cwd:d});if(0===t.code)j.committed=!0,j.sha=(await (0,o.d1)("git",["rev-parse","--short","HEAD"],{cwd:d})).stdout.trim();else if(/nothing to commit|no changes added/i.test(t.stdout+t.stderr))return j.nothing=!0,K(c.id,j,a);else return j.error=h(t.stderr||t.stdout)||"git commit failed",K(c.id,j,a);let v=await (0,o.d1)("git",["remote","get-url","origin"],{cwd:d}),w=0===v.code?v.stdout.trim():"";if(w&&g&&/^https:\/\/github\.com\//i.test(w)){let b=w.replace(/^https:\/\//i,`https://x-access-token:${g}@`),e=await (0,o.d1)("git",["push",b,`HEAD:${f}`],{cwd:d,timeoutMs:12e4});if(j.pushed=0===e.code,!j.pushed&&(j.error=h(e.stderr)||"git push failed",/rejected|non-fast-forward|fetch first|merge conflict|failed to push/i.test(e.stderr)&&await (0,q.vE)(c.id,{kind:"block",refType:"task",refId:`push:${a.repo}:${f}`,title:`Push rejected — ${a.repo}`,detail:`git push to \`${f}\` was rejected (remote conflict / non-fast-forward). Pull + resolve, then push again.
20
20
 
21
21
  ${h(e.stderr).slice(0,300)}`})),j.pushed&&a.delegated){let a=((await (0,o.d1)("gh",["pr","create","--fill","--head",f],{cwd:d,timeoutMs:6e4,env:{GH_TOKEN:g}})).stdout.match(/https:\/\/github\.com\/\S+/)??[])[0];a&&(j.prUrl=a)}}else w?g||(j.error="committed locally — connect a GitHub PAT to push"):j.error="committed locally — no 'origin' remote configured to push";return K(c.id,j,a)}async function K(a,b,c){if(b.committed){await j.db.update(k.file).set({gitStatus:""}).where((0,h.Uo)((0,h.eq)(k.file.workspaceId,a),(0,h.ne)(k.file.gitStatus,"")));let d=b.pushed?`pushed to ${c.repo} \xb7 ${c.branch}`:"committed locally";await (0,r.I)(a,{kind:"deploy",text:`Workspace ${d}${b.sha?` (${b.sha})`:""}`,detail:(c.delegated&&b.prUrl?`PR: ${b.prUrl}
22
- `:"")+c.message})}return b.ok=b.committed,(0,i.revalidatePath)("/github"),b}(0,s.D)([x,y,z,A,B,D,E,F,G,H,I,J]),(0,d.A)(x,"008b112364eeb7b67017759411ef195828ea31ee54",null),(0,d.A)(y,"401a8ffed3e8dc7848177474edc403f5a72496d114",null),(0,d.A)(z,"40e9aa2eb5c1f62b89044366670467f73e04a45b61",null),(0,d.A)(A,"400d0bacdd8dcfd8d3fecdcfc2a463c1f60bf89899",null),(0,d.A)(B,"0010bed80fba98e729a2432f2b1c0113d754874ae5",null),(0,d.A)(D,"009ace8b974d1ab7004381dd0b4a2536e8953be85c",null),(0,d.A)(E,"406a2f7c3a0de1c48911feec81208bfded9dceb332",null),(0,d.A)(F,"4081303c7ed3a109e9fb681116544d85f6b4bca3ca",null),(0,d.A)(G,"00628de4dd0cab3a883885455188b8029692e5b52d",null),(0,d.A)(H,"004c804348b07a14ce087c6faf55f3dde1b0800e83",null),(0,d.A)(I,"00a196da82adcf26571916154c99532b10a7883b6f",null),(0,d.A)(J,"40fa5dbc1852840c38442c0d1f50e1e95fb4ae639d",null)}};
22
+ `:"")+c.message})}return b.ok=b.committed,(0,i.revalidatePath)("/github"),b}(0,s.D)([x,y,z,A,B,D,E,F,G,H,I,J]),(0,d.A)(x,"0068fd8538e536ffdb02305e379f5fd66d99f8c89e",null),(0,d.A)(y,"4001b6ad3840ef2468b0f85136746cbe8dee8e4afa",null),(0,d.A)(z,"409df99a5f136ccf3ed993205d415d895d12fece32",null),(0,d.A)(A,"40a59275eca8f4381cadd8a1b719b1baf70a49610c",null),(0,d.A)(B,"0066b342ed7261fb186e539ad838f7ab26ec1ae3d3",null),(0,d.A)(D,"00df3816cb636e084a37a3eab67adc3d90de05a5c3",null),(0,d.A)(E,"404f7a3ecde720a875d7f1c8e80bb6cf7c70c022a3",null),(0,d.A)(F,"40d3a1273de24b4f22b07a559697af4b55c214c763",null),(0,d.A)(G,"008c6c02fcb2168ca69626f6ef1eaafd0da995afba",null),(0,d.A)(H,"00cf4ed1511aecbbdd7e49c934ba9f246a1a7dc3ae",null),(0,d.A)(I,"0033c4e1d3ddf3371f3ef837fb989bd54487411e01",null),(0,d.A)(J,"40ed35b856b8659da32e743218d6854423064deae9",null)}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/Fx06n4huXV42eQUI-Lty0/_buildManifest.js","static/Fx06n4huXV42eQUI-Lty0/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-222e3894b78c67db.js","static/chunks/23550918-ff694f70f4b0648c.js","static/chunks/6834-4759af1ce7d95fb6.js","static/chunks/main-app-761880af2b6f1962.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/vaEtsAmUuKf_DngRqwRUn/_buildManifest.js","static/vaEtsAmUuKf_DngRqwRUn/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-222e3894b78c67db.js","static/chunks/23550918-ff694f70f4b0648c.js","static/chunks/6834-4759af1ce7d95fb6.js","static/chunks/main-app-761880af2b6f1962.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-222e3894b78c67db.js"/><script src="/_next/static/chunks/23550918-ff694f70f4b0648c.js" async=""></script><script src="/_next/static/chunks/6834-4759af1ce7d95fb6.js" async=""></script><script src="/_next/static/chunks/main-app-761880af2b6f1962.js" async=""></script><script src="/_next/static/chunks/3219-9684aa1c634212de.js" async=""></script><script src="/_next/static/chunks/app/error-09899a13c38b6e89.js" async=""></script><script src="/_next/static/chunks/app/global-error-c2ea8fef715f226d.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-222e3894b78c67db.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8926,[],\"\"]\n3:I[5419,[\"3219\",\"static/chunks/3219-9684aa1c634212de.js\",\"8039\",\"static/chunks/app/error-09899a13c38b6e89.js\"],\"default\"]\n4:I[5524,[],\"\"]\n5:I[4135,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[4135,[],\"ViewportBoundary\"]\nb:I[4135,[],\"MetadataBoundary\"]\nd:I[6279,[\"3219\",\"static/chunks/3219-9684aa1c634212de.js\",\"4219\",\"static/chunks/app/global-error-c2ea8fef715f226d.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$3\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$@8\"]},null,false,\"$@8\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"Fx06n4huXV42eQUI-Lty0\"}\n"])</script><script>self.__next_f.push([1,"e:[]\n8:\"$We\"\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"7:null\nc:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-222e3894b78c67db.js"/><script src="/_next/static/chunks/23550918-ff694f70f4b0648c.js" async=""></script><script src="/_next/static/chunks/6834-4759af1ce7d95fb6.js" async=""></script><script src="/_next/static/chunks/main-app-761880af2b6f1962.js" async=""></script><script src="/_next/static/chunks/3219-b4941c7ff967e904.js" async=""></script><script src="/_next/static/chunks/app/error-09899a13c38b6e89.js" async=""></script><script src="/_next/static/chunks/app/global-error-c2ea8fef715f226d.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-222e3894b78c67db.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8926,[],\"\"]\n3:I[5419,[\"3219\",\"static/chunks/3219-b4941c7ff967e904.js\",\"8039\",\"static/chunks/app/error-09899a13c38b6e89.js\"],\"default\"]\n4:I[5524,[],\"\"]\n5:I[4135,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[4135,[],\"ViewportBoundary\"]\nb:I[4135,[],\"MetadataBoundary\"]\nd:I[6279,[\"3219\",\"static/chunks/3219-b4941c7ff967e904.js\",\"4219\",\"static/chunks/app/global-error-c2ea8fef715f226d.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$3\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$@8\"]},null,false,\"$@8\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"vaEtsAmUuKf_DngRqwRUn\"}\n"])</script><script>self.__next_f.push([1,"e:[]\n8:\"$We\"\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"7:null\nc:[]\n"])</script></body></html>