constellai 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +3 -3
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/(app)/activity/page.js +2 -2
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/agents/[handle]/page.js +2 -2
  9. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
  10. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/(app)/code/page.js +2 -2
  12. package/.next/server/app/(app)/code/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/config/page.js +2 -2
  15. package/.next/server/app/(app)/config/page.js.nft.json +1 -1
  16. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/(app)/costs/page.js +2 -2
  18. package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
  19. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/(app)/cron/page.js +2 -2
  21. package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
  22. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(app)/dashboard/page.js +2 -2
  24. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
  25. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/(app)/design/page.js +44 -44
  27. package/.next/server/app/(app)/design/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/docs/[id]/page.js +2 -2
  30. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
  31. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/(app)/docs/page.js +2 -2
  33. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  34. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/(app)/github/page.js +2 -2
  36. package/.next/server/app/(app)/github/page.js.nft.json +1 -1
  37. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/(app)/goals/page.js +2 -2
  39. package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
  40. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/(app)/inbox/page.js +2 -2
  42. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
  43. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/(app)/knowledge/page.js +3 -3
  45. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
  46. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/(app)/models/page.js +2 -2
  48. package/.next/server/app/(app)/models/page.js.nft.json +1 -1
  49. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
  50. package/.next/server/app/(app)/notifications/page.js +2 -2
  51. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
  52. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/(app)/org/page.js +3 -3
  54. package/.next/server/app/(app)/org/page.js.nft.json +1 -1
  55. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/(app)/organizations/page.js +2 -2
  57. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
  58. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/(app)/page.js +3 -3
  60. package/.next/server/app/(app)/page.js.nft.json +1 -1
  61. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/(app)/planner/page.js +3 -3
  63. package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
  64. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/(app)/plugins/page.js +2 -2
  66. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
  67. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/(app)/pm/page.js +2 -2
  69. package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
  70. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/(app)/prepare-deploy/page.js +2 -2
  72. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
  73. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/(app)/profile/page.js +2 -2
  75. package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
  76. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/(app)/pulse/page.js +2 -2
  78. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
  79. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
  80. package/.next/server/app/(app)/reports/[id]/page.js +2 -2
  81. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
  82. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/(app)/reports/page.js +2 -2
  84. package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
  85. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
  86. package/.next/server/app/(app)/routines/page.js +2 -2
  87. package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
  88. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
  89. package/.next/server/app/(app)/search/page.js +2 -2
  90. package/.next/server/app/(app)/search/page.js.nft.json +1 -1
  91. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
  92. package/.next/server/app/(app)/security/page.js +2 -2
  93. package/.next/server/app/(app)/security/page.js.nft.json +1 -1
  94. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/(app)/skills/page.js +2 -2
  96. package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
  97. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
  98. package/.next/server/app/(app)/tasks/page.js +2 -2
  99. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
  100. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/(app)/test-dev/page.js +2 -2
  102. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
  103. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/(app)/update/page.js +3 -3
  105. package/.next/server/app/(app)/update/page.js.nft.json +1 -1
  106. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app/(auth)/login/page.js +2 -2
  108. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/(auth)/onboarding/page.js +2 -2
  110. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/_global-error.html +1 -1
  113. package/.next/server/app/_global-error.rsc +3 -3
  114. package/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  115. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  116. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  117. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  118. package/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
  119. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  120. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/cron/tick/route.js +2 -2
  122. package/.next/server/app/api/sync/file/route.js +1 -1
  123. package/.next/server/app/api/telegram/poll/route.js +3 -3
  124. package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
  125. package/.next/server/app-paths-manifest.json +3 -3
  126. package/.next/server/chunks/1249.js +3 -3
  127. package/.next/server/chunks/259.js +1 -1
  128. package/.next/server/chunks/2867.js +1 -1
  129. package/.next/server/chunks/2960.js +1 -1
  130. package/.next/server/chunks/3131.js +1 -1
  131. package/.next/server/chunks/3234.js +1 -1
  132. package/.next/server/chunks/4574.js +1 -0
  133. package/.next/server/chunks/4979.js +3 -3
  134. package/.next/server/chunks/6431.js +1 -1
  135. package/.next/server/chunks/6753.js +1 -0
  136. package/.next/server/chunks/{1765.js → 7236.js} +4 -1
  137. package/.next/server/chunks/7589.js +1 -1
  138. package/.next/server/chunks/7621.js +12 -0
  139. package/.next/server/chunks/7989.js +1 -1
  140. package/.next/server/chunks/7993.js +21 -0
  141. package/.next/server/chunks/8561.js +1 -1
  142. package/.next/server/chunks/8623.js +1 -1
  143. package/.next/server/chunks/8823.js +1 -1
  144. package/.next/server/chunks/8846.js +1 -0
  145. package/.next/server/chunks/{8719.js → 9160.js} +15 -15
  146. package/.next/server/chunks/9783.js +1 -1
  147. package/.next/server/middleware-build-manifest.js +1 -1
  148. package/.next/server/pages/500.html +1 -1
  149. package/.next/server/server-reference-manifest.js +1 -1
  150. package/.next/server/server-reference-manifest.json +1 -1
  151. package/.next/static/chunks/215-18ea748d2ff2caff.js +1 -0
  152. package/.next/static/chunks/27-b49ec46cfcce75b7.js +1 -0
  153. package/.next/static/chunks/2989-2dd9a66d007a96e8.js +4 -0
  154. package/.next/static/chunks/3219-92e75397858f3f1f.js +1 -0
  155. package/.next/static/chunks/4643-d0ab4088e129651f.js +1 -0
  156. package/.next/static/chunks/8370-e88907d9c72435e7.js +12 -0
  157. package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
  158. package/.next/static/chunks/app/(app)/activity/{page-cf8d67941440bdce.js → page-93d4012627ea70d5.js} +1 -1
  159. package/.next/static/chunks/app/(app)/agents/[handle]/page-bfe740784bdf239c.js +1 -0
  160. package/.next/static/chunks/app/(app)/code/page-5e24874f11857823.js +1 -0
  161. package/.next/static/chunks/app/(app)/config/page-12c5487a8d55c2c2.js +1 -0
  162. package/.next/static/chunks/app/(app)/costs/page-6edcec363617f5ef.js +1 -0
  163. package/.next/static/chunks/app/(app)/cron/page-f9167770757921f7.js +1 -0
  164. package/.next/static/chunks/app/(app)/dashboard/page-103f172e762911d1.js +1 -0
  165. package/.next/static/chunks/app/(app)/design/{page-f48c0487d240248e.js → page-11b9cc40f32fe34f.js} +3 -3
  166. package/.next/static/chunks/app/(app)/docs/[id]/page-eaae80c3d47e1ba7.js +1 -0
  167. package/.next/static/chunks/app/(app)/docs/page-87457e514ea7de32.js +1 -0
  168. package/.next/static/chunks/app/(app)/github/page-ff62b7618c594632.js +1 -0
  169. package/.next/static/chunks/app/(app)/goals/page-d4d854c091020a92.js +1 -0
  170. package/.next/static/chunks/app/(app)/inbox/page-1bcfc50e9df5ed6f.js +12 -0
  171. package/.next/static/chunks/app/(app)/knowledge/page-0a55ce74e274817c.js +1 -0
  172. package/.next/static/chunks/app/(app)/layout-825ba765e8034dfb.js +1 -0
  173. package/.next/static/chunks/app/(app)/models/page-cd077c548916b8cb.js +1 -0
  174. package/.next/static/chunks/app/(app)/notifications/page-c5c7945f6f6f18d6.js +12 -0
  175. package/.next/static/chunks/app/(app)/org/page-a83804854bd0d44a.js +12 -0
  176. package/.next/static/chunks/app/(app)/organizations/page-b38db8e364e3a108.js +1 -0
  177. package/.next/static/chunks/app/(app)/page-733340fec4cd0173.js +1 -0
  178. package/.next/static/chunks/app/(app)/planner/page-06b2841d0438d92d.js +1 -0
  179. package/.next/static/chunks/app/(app)/plugins/{page-3b78b76ecb21d616.js → page-535ed062643077fc.js} +1 -1
  180. package/.next/static/chunks/app/(app)/pm/page-dc0296761e1af17c.js +1 -0
  181. package/.next/static/chunks/app/(app)/prepare-deploy/page-6f0c5081caf1d013.js +1 -0
  182. package/.next/static/chunks/app/(app)/profile/page-cef1aa72ffc02e9c.js +1 -0
  183. package/.next/static/chunks/app/(app)/pulse/page-d4bdec1709913581.js +1 -0
  184. package/.next/static/chunks/app/(app)/reports/[id]/page-f9167770757921f7.js +1 -0
  185. package/.next/static/chunks/app/(app)/reports/page-5c37a53bbd4fd1c3.js +1 -0
  186. package/.next/static/chunks/app/(app)/routines/page-e274160cfbb3c594.js +1 -0
  187. package/.next/static/chunks/app/(app)/search/page-f0e082b9b0402981.js +1 -0
  188. package/.next/static/chunks/app/(app)/security/page-a12f04656bde8aad.js +1 -0
  189. package/.next/static/chunks/app/(app)/skills/page-583f9780fa981aa8.js +1 -0
  190. package/.next/static/chunks/app/(app)/tasks/page-7bb09650b84e0755.js +1 -0
  191. package/.next/static/chunks/app/(app)/test-dev/page-ce66efbb83b2ed21.js +1 -0
  192. package/.next/static/chunks/app/(app)/update/page-6a8082f1c1b3b762.js +1 -0
  193. package/.next/static/chunks/app/(auth)/login/page-b512c906a1566d8c.js +1 -0
  194. package/.next/static/chunks/app/(auth)/onboarding/page-8f6bf1259bb5aab5.js +1 -0
  195. package/.next/trace-build +1 -1
  196. package/CHANGELOG.md +26 -1
  197. package/README.md +1 -1
  198. package/README.pt-BR.md +1 -1
  199. package/THIRD_PARTY_LICENSES.md +64 -0
  200. package/docs/UPDATE.md +9 -2
  201. package/docs/en/AI_ARCHITECTURE.md +2 -2
  202. package/docs/en/CHAT_COMMANDS.md +1 -1
  203. package/docs/en/CONFIGURATION.md +1 -1
  204. package/docs/en/DESIGN.md +1 -1
  205. package/docs/en/FAQ.md +3 -3
  206. package/docs/en/GOALS_SPECS_ISSUES.md +1 -1
  207. package/docs/en/MCP.md +2 -2
  208. package/docs/en/PLUGINS.md +2 -2
  209. package/docs/en/PORTABLE_MODE.md +1 -1
  210. package/docs/en/PUBLISHING.md +14 -15
  211. package/docs/en/README.md +1 -1
  212. package/docs/en/SECURITY.md +3 -3
  213. package/docs/en/START_MODE.md +1 -1
  214. package/docs/en/TELEGRAM.md +1 -1
  215. package/docs/en/TROUBLESHOOTING.md +1 -1
  216. package/docs/en/VPS_MODE.md +2 -2
  217. package/docs/pt/AI_ARCHITECTURE.md +2 -2
  218. package/docs/pt/CHAT_COMMANDS.md +1 -1
  219. package/docs/pt/CONFIGURATION.md +1 -1
  220. package/docs/pt/DESIGN.md +1 -1
  221. package/docs/pt/FAQ.md +3 -3
  222. package/docs/pt/GOALS_SPECS_ISSUES.md +1 -1
  223. package/docs/pt/MCP.md +1 -1
  224. package/docs/pt/PLUGINS.md +2 -2
  225. package/docs/pt/PORTABLE_MODE.md +1 -1
  226. package/docs/pt/PUBLISHING.md +6 -7
  227. package/docs/pt/README.md +1 -1
  228. package/docs/pt/SECURITY.md +3 -3
  229. package/docs/pt/START_MODE.md +1 -1
  230. package/docs/pt/TELEGRAM.md +1 -1
  231. package/docs/pt/TROUBLESHOOTING.md +2 -2
  232. package/docs/pt/VPS_MODE.md +1 -1
  233. package/package.json +2 -1
  234. package/scripts/publish-public.mjs +21 -16
  235. package/.next/server/chunks/158.js +0 -21
  236. package/.next/server/chunks/2495.js +0 -1
  237. package/.next/server/chunks/4467.js +0 -12
  238. package/.next/server/chunks/535.js +0 -1
  239. package/.next/server/chunks/7225.js +0 -4
  240. package/.next/static/chunks/2831-d7f6495bf43f4f9d.js +0 -4
  241. package/.next/static/chunks/3219-486bddbf87074d04.js +0 -1
  242. package/.next/static/chunks/3775-82dcdf23109aa5bf.js +0 -1
  243. package/.next/static/chunks/6836-341614c5418e2aa4.js +0 -1
  244. package/.next/static/chunks/8306-7418693cd7fd5861.js +0 -1
  245. package/.next/static/chunks/8370-8b3e7106703024ce.js +0 -12
  246. package/.next/static/chunks/9690-ea874aec65263b9d.js +0 -1
  247. package/.next/static/chunks/app/(app)/agents/[handle]/page-7baa24f1ae8bc400.js +0 -1
  248. package/.next/static/chunks/app/(app)/code/page-b342d74807e8b914.js +0 -1
  249. package/.next/static/chunks/app/(app)/config/page-1e68ba8d20215d67.js +0 -1
  250. package/.next/static/chunks/app/(app)/costs/page-a58d759eec6048df.js +0 -1
  251. package/.next/static/chunks/app/(app)/cron/page-cc7f4e3d8ab5618f.js +0 -1
  252. package/.next/static/chunks/app/(app)/dashboard/page-7757c33acf751c4c.js +0 -1
  253. package/.next/static/chunks/app/(app)/docs/[id]/page-95c52cf457d869ef.js +0 -1
  254. package/.next/static/chunks/app/(app)/docs/page-fbc50cd357d5e2ca.js +0 -1
  255. package/.next/static/chunks/app/(app)/github/page-dac138256ed91e65.js +0 -1
  256. package/.next/static/chunks/app/(app)/goals/page-f87d40f6832d63b3.js +0 -1
  257. package/.next/static/chunks/app/(app)/inbox/page-49c1293e0d98874f.js +0 -12
  258. package/.next/static/chunks/app/(app)/knowledge/page-18fca436883ed5cc.js +0 -1
  259. package/.next/static/chunks/app/(app)/layout-c9778f98c0103f74.js +0 -1
  260. package/.next/static/chunks/app/(app)/models/page-030c085cd7767495.js +0 -1
  261. package/.next/static/chunks/app/(app)/notifications/page-12af3fee8b36a00e.js +0 -12
  262. package/.next/static/chunks/app/(app)/org/page-576001ff4a820744.js +0 -12
  263. package/.next/static/chunks/app/(app)/organizations/page-b973e1eee6e56baf.js +0 -1
  264. package/.next/static/chunks/app/(app)/page-cef52fc5f4fd4418.js +0 -1
  265. package/.next/static/chunks/app/(app)/planner/page-da2db56914346192.js +0 -1
  266. package/.next/static/chunks/app/(app)/pm/page-78303379c1ea5dc5.js +0 -1
  267. package/.next/static/chunks/app/(app)/prepare-deploy/page-98b1bd3bf712bb60.js +0 -1
  268. package/.next/static/chunks/app/(app)/profile/page-de24af53de0ef2b2.js +0 -1
  269. package/.next/static/chunks/app/(app)/pulse/page-db7fd63369c01fa2.js +0 -1
  270. package/.next/static/chunks/app/(app)/reports/[id]/page-cc7f4e3d8ab5618f.js +0 -1
  271. package/.next/static/chunks/app/(app)/reports/page-97ab95e6f8b77b62.js +0 -1
  272. package/.next/static/chunks/app/(app)/routines/page-cf6a3331775ca11b.js +0 -1
  273. package/.next/static/chunks/app/(app)/search/page-3960825f66b05606.js +0 -1
  274. package/.next/static/chunks/app/(app)/security/page-53b0770355cf7aa4.js +0 -1
  275. package/.next/static/chunks/app/(app)/skills/page-809a73b94861f8b8.js +0 -1
  276. package/.next/static/chunks/app/(app)/tasks/page-b2497927d127f7aa.js +0 -1
  277. package/.next/static/chunks/app/(app)/test-dev/page-93ec5d89e2afb612.js +0 -1
  278. package/.next/static/chunks/app/(app)/update/page-a23322af4e59a93c.js +0 -1
  279. package/.next/static/chunks/app/(auth)/login/page-446681bfb762cb05.js +0 -1
  280. package/.next/static/chunks/app/(auth)/onboarding/page-2b8cb3e0b024c995.js +0 -1
  281. package/docs/assets/blackhole.svg +0 -37
  282. /package/.next/static/{fb-rRThu8P8AXEQQBbLgT → Mx3bcAGWI83SQ6PqC4kYX}/_buildManifest.js +0 -0
  283. /package/.next/static/{fb-rRThu8P8AXEQQBbLgT → Mx3bcAGWI83SQ6PqC4kYX}/_ssgManifest.js +0 -0
@@ -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,"00d707af504f1a0491ca9dcf763ef015da594b49f3",null),(0,d.A)(u,"606d6a4c1c840dabf0ae062586f5d31aced8e1adf7",null),(0,d.A)(v,"00dcf7bba8dfe2aea38f8e1a0b604bdf20346de49b",null),(0,d.A)(w,"0089bb3aeea0ab3018bc9c6c3d254bc32927017ade",null),(0,d.A)(x,"40ced2f71e662e1884c830a2cb80626a57aa8be42c",null),(0,d.A)(y,"40e8f30a047d0f241003dcbb3194b872639e110c96",null),(0,d.A)(z,"4023169ed85000187a7267198eab5e95902c9af1b9",null),(0,d.A)(A,"40beac2559eab1128341c145e31826c3b57f094595",null),(0,d.A)(B,"4038b15099bf2fe9a8f44cea08bfedf104a01c187e",null),(0,d.A)(C,"401a19ed3c8c332390be321a05a8a084c75556421e",null),(0,d.A)(D,"40a8b5e4223fa4e2f64798e3c4f10e2052d74263a0",null),(0,d.A)(E,"402d4d51b2fedd60f6206531e45066dc999aaa3915",null),(0,d.A)(F,"40fe2ee19da6b0f6382e1874f540a69b1e1d7bcb02",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,"002187847445622978bc55b9008235c0fa546c1928",null),(0,d.A)(u,"60d5f34d685b2d10fa8899cf3859270d2abcaea17b",null),(0,d.A)(v,"009c38f877a21345917addab2c8bef95bc47e1e56b",null),(0,d.A)(w,"00e4e634074e109e51ede5ae51e150337216174c81",null),(0,d.A)(x,"408f2adaf50869e2202aa5684ad55b7e739765297b",null),(0,d.A)(y,"40911ea817fb8869817712ed68abca3202362f67a7",null),(0,d.A)(z,"4077cdda445a2dc4096786e1b55bbe9c2aa5a764f8",null),(0,d.A)(A,"4060c1bd339b97979ac6672046624b24053d14da09",null),(0,d.A)(B,"40f66d6d6c5aacdeed470d1cc25d6929dd35ff7dee",null),(0,d.A)(C,"40850ff30c18f6278de972d397071e1806a4d04552",null),(0,d.A)(D,"404354d696dbc7dac4784ba3b3ab014333e0ad954f",null),(0,d.A)(E,"40c03a5064033cbc8a20dac06972590ead87aba54b",null),(0,d.A)(F,"40c0c6f23bb99450ea7a789d5b2ec5ce7eaba385e9",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 @@
1
+ "use strict";exports.id=8846,exports.ids=[7336,8846],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})]})}},18612:(a,b,c)=>{c.d(b,{r$:()=>h,EX:()=>p,CS:()=>function a(b,c=""){let d=[];for(let e of l(b,c))if(e.isDir){if(m.has(e.name))continue;d.push(...a(b,e.path))}else d.push(e.path);return d},HZ:()=>j,Ci:()=>l,sL:()=>n,dx:()=>o});var d=c(73024),e=c(76760),f=c(48161),g=c(28430);function h(){return process.env.CONSTELLA_HOME?(0,g.Y)(process.env.CONSTELLA_HOME):(0,e.join)((0,f.homedir)(),".constella")}let i=new Set;function j(a){if(!/^[A-Za-z0-9_-]{6,64}$/.test(a))throw Error("Invalid orgId");let b=(0,e.join)(h(),"organizations",a,"workspace");if(!i.has(a)){i.add(a);try{let c=(0,e.join)(h(),"organizations",a,"constella"),f=!(0,d.existsSync)(b)||0===(0,d.readdirSync)(b).length;if((0,d.existsSync)(c)&&f)try{(0,d.renameSync)(c,b)}catch{(0,d.existsSync)(c)&&((0,d.mkdirSync)(b,{recursive:!0}),0===(0,d.readdirSync)(b).length&&(0,d.cpSync)(c,b,{recursive:!0}))}}catch{}}return b}function k(a,b){let c=(0,e.normalize)((0,e.join)(a,b));if(c!==a&&!c.startsWith(a+e.sep))throw Error("Path escapes workspace: "+b);if((0,d.existsSync)(a)){let f;try{f=d.realpathSync.native(a)}catch{f=a}let g=function(a){let b=a;for(;;){if((0,d.existsSync)(b))try{return d.realpathSync.native(b)}catch{return b}let a=(0,e.dirname)(b);if(a===b)return b;b=a}}(c);if(g!==f&&!g.startsWith(f+e.sep))throw Error("Path escapes workspace (symlink): "+b)}return c}function l(a,b=""){let c=k(j(a),b);return(0,d.existsSync)(c)?(0,d.readdirSync)(c).map(a=>{let f=(0,e.join)(c,a),g=(b?b+"/":"")+a;return{name:a,path:g,isDir:(0,d.statSync)(f).isDirectory()}}).sort((a,b)=>a.isDir===b.isDir?a.name.localeCompare(b.name):a.isDir?-1:1):[]}let m=new Set(["node_modules",".git",".next",".turbo","dist","build","out","coverage",".cache","archives",".testdev",".pnpm-store",".vercel","vendor"]);function n(a,b){let c=k(j(a),b);return(0,d.existsSync)(c)?(0,d.readFileSync)(c,"utf8"):null}function o(a,b,c){let f=k(j(a),b);(0,d.mkdirSync)((0,e.dirname)(f),{recursive:!0}),(0,d.writeFileSync)(f,c,"utf8")}function p(a,b){let c=k(j(a),b);(0,d.existsSync)(c)&&(0,d.rmSync)(c,{recursive:!0,force:!0})}},20716:(a,b,c)=>{c.r(b),c.d(b,{"0008abfdeefe18f706104ed40846a30c52580116ee":()=>d.cT,"004229861342763cdeeaecdf33af20836775cdc461":()=>d.Kd,"40563850bdfe40e806746d690f3e37de1586a42f27":()=>d.OD,"40e48edbe25a09f72718d05442f5dd82214415b864":()=>d.j0});var d=c(14565)},34215:(a,b,c)=>{c.d(b,{R:()=>e});var d=c(2910);let e=(0,d.createServerReference)("0025702d9be00ab981752267c30f22148e1156d08d",d.callServer,void 0,d.findSourceMapURL,"startDevServerAction")},44167:(a,b,c)=>{c.d(b,{K:()=>e});var d=c(2910);let e=(0,d.createServerReference)("40491c74154aedc3bfa423d1b839aa0e79a0901a39",d.callServer,void 0,d.findSourceMapURL,"previewFrameableAction")},47336:(a,b,c)=>{c.d(b,{checkForUpdate:()=>m});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),j=a=>a.replace(/^v/,"").split("-")[1]??"";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.json():null}catch{return null}}async function l(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 m(a=!1){let b,c,n=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"}(),o=`npm install -g ${g}@latest`;if(!a&&h&&Date.now()-h.at<216e5)return h.info;let p=await k(`https://registry.npmjs.org/${g}/latest`),q=p?.version??null,r=!!q&&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))return!1}return!j(a)&&!!j(b)}(q,n),s=null;if(r&&q){let a=await l("https://raw.githubusercontent.com/gabriel7silva/constella/main/CHANGELOG.md");s=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,q):null}let t={current:n,latest:q,updateAvailable:r,type:q?(b=i(q),c=i(n),b[0]>c[0]?"major":b[1]>c[1]?"minor":b[2]>c[2]||!j(q)&&j(n)?"patch":null):null,command:o,changelog:s};return h={at:Date.now(),info:t},t}},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||"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,"4032ce36226d2272a3df9a36cf1933b6c28baccdd3",null),(0,d.A)(y,"40e976bc870ce1c7b3f38b0d9673cb9eb9fe7e3699",null),(0,d.A)(z,"00559e73fec16acf73cac021e62ec0e900348d99f4",null),(0,d.A)(A,"002b0e1a6cbadd698c849dff2fb3a3f7c779f3f410",null),(0,d.A)(B,"005a571e9f925fc3e12976cc4f07b437bcea1f0f12",null)},60686:(a,b,c)=>{c.d(b,{Fy:()=>m,KD:()=>q,Rr:()=>l,TH:()=>s,Xu:()=>r,j0:()=>n,nx:()=>o,zC:()=>p});var d=c(6866),e=c(31371),f=c(53993),g=c(63562),h=c(81204),i=c(70221),j=c(77558),k=c(24701);async function l(){let{org:a,workspace:b}=await (0,f.nP)(),c=await (0,g.ZF)(b.id,a.id);return(0,e.revalidatePath)("/test-dev"),c}async function m(){let{workspace:a}=await (0,f.nP)(),b=await (0,g.n9)(a.id);return(0,e.revalidatePath)("/test-dev"),b}async function n(){let{workspace:a}=await (0,f.nP)();return(0,g.CS)(a.id)}async function o(){let{org:a,workspace:b}=await (0,f.nP)(),c=(0,g.CS)(b.id);if("running"!==c.status&&"starting"!==c.status&&(c=await (0,g.ZF)(b.id,a.id)),!c.url||"running"!==c.status&&"starting"!==c.status)return{ok:!1,error:"The dev server isn't running — start the app first."};let d=await (0,h.nK)(b.id,c.url);return d?{ok:!0,url:d.url}:{ok:!1,error:"Could not start the inspect proxy."}}async function p(){let{workspace:a}=await (0,f.nP)();return(0,h.hA)(a.id),{ok:!0}}async function q(a){if(await (0,f.nP)(),!/^https?:\/\/(127\.0\.0\.1|localhost)(:\d+)?/i.test(a))return{frameable:!0};try{let b=await fetch(a,{redirect:"manual",signal:AbortSignal.timeout(3e3)}),c=(b.headers.get("x-frame-options")||"").toLowerCase(),d=(b.headers.get("content-security-policy")||"").toLowerCase(),e=/frame-ancestors\s+([^;]+)/.exec(d)?.[1]??"",f=c.includes("deny")||c.includes("sameorigin"),g=!!e&&!/(\*|localhost|127\.0\.0\.1)/.test(e);return{frameable:!(f||g)}}catch{return{frameable:!0}}}async function r(a){let{org:b,workspace:c}=await (0,f.nP)(),d=a?.issueId?await (0,i.B)(c.id,a.issueId):void 0,g=await (0,i.z)(c.id,b.id,{goalId:a?.goalId,issueId:a?.issueId,routes:d,by:"operator"});return(0,e.revalidatePath)("/test-dev"),g}async function s(a,b){let{workspace:c}=await (0,f.nP)();return await (0,j.vE)(c.id,{kind:"validation",refType:"validation",refId:a,title:`Validate ${a}`,detail:b.slice(0,500)}),await (0,k.I)(c.id,{kind:"review",text:`Validation requested — ${a}`,detail:b.slice(0,300)}),(0,e.revalidatePath)("/inbox"),{ok:!0}}(0,c(74252).D)([l,m,n,o,p,q,r,s]),(0,d.A)(l,"0025702d9be00ab981752267c30f22148e1156d08d",null),(0,d.A)(m,"001a3a28426f79abc91d40fa7dd4cbfd43e3d36131",null),(0,d.A)(n,"004d8d9e8033cc5ebc8e4bc28d5a0b17c3a5f1a42c",null),(0,d.A)(o,"00e7096e00c8dea3583e5b0ed9bcdf52d4b3b42bd5",null),(0,d.A)(p,"003313fcedf1513e66577ac56f5f63a9dc25f333a3",null),(0,d.A)(q,"40491c74154aedc3bfa423d1b839aa0e79a0901a39",null),(0,d.A)(r,"4080fd438c1b3c444b71999be816e9aacd959ad4e7",null),(0,d.A)(s,"60d4ee67d4835094e07f66aebe55ebbf965ee7aef0",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)}},90328:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(2910);let e=(0,d.createServerReference)("004d8d9e8033cc5ebc8e4bc28d5a0b17c3a5f1a42c",d.callServer,void 0,d.findSourceMapURL,"devServerStatusAction")}};