constellai 0.3.2 → 0.3.3

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 (242) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/react-loadable-manifest.json +2 -2
  6. package/.next/server/app/(app)/activity/page.js +2 -2
  7. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  8. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/(app)/agents/[handle]/page.js +3 -3
  10. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
  11. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(app)/code/page.js +2 -2
  13. package/.next/server/app/(app)/code/page.js.nft.json +1 -1
  14. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/(app)/config/page.js +2 -2
  16. package/.next/server/app/(app)/config/page.js.nft.json +1 -1
  17. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/(app)/costs/page.js +2 -2
  19. package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
  20. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/(app)/cron/page.js +2 -2
  22. package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
  23. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/(app)/dashboard/page.js +2 -2
  25. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/design/page.js +13 -13
  28. package/.next/server/app/(app)/design/page.js.nft.json +1 -1
  29. package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
  30. package/.next/server/app/(app)/docs/[id]/page.js +2 -2
  31. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
  32. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/(app)/docs/page.js +2 -2
  34. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  35. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/(app)/github/page.js +2 -2
  37. package/.next/server/app/(app)/github/page.js.nft.json +1 -1
  38. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/(app)/goals/page.js +2 -2
  40. package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
  41. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/(app)/inbox/page.js +2 -2
  43. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
  44. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
  45. package/.next/server/app/(app)/knowledge/page.js +3 -3
  46. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
  47. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/(app)/models/page.js +2 -2
  49. package/.next/server/app/(app)/models/page.js.nft.json +1 -1
  50. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/(app)/notifications/page.js +2 -2
  52. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
  53. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
  54. package/.next/server/app/(app)/org/page.js +4 -4
  55. package/.next/server/app/(app)/org/page.js.nft.json +1 -1
  56. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/(app)/organizations/page.js +2 -2
  58. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
  59. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
  60. package/.next/server/app/(app)/page.js +3 -3
  61. package/.next/server/app/(app)/page.js.nft.json +1 -1
  62. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  63. package/.next/server/app/(app)/planner/page.js +2 -2
  64. package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
  65. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
  66. package/.next/server/app/(app)/plugins/page.js +2 -2
  67. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
  68. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
  69. package/.next/server/app/(app)/pm/page.js +2 -2
  70. package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
  71. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
  72. package/.next/server/app/(app)/prepare-deploy/page.js +2 -2
  73. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
  74. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/(app)/profile/page.js +2 -2
  76. package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
  77. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/(app)/pulse/page.js +2 -2
  79. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
  80. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
  81. package/.next/server/app/(app)/reports/[id]/page.js +2 -2
  82. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
  83. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/(app)/reports/page.js +3 -3
  85. package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
  86. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
  87. package/.next/server/app/(app)/routines/page.js +1 -1
  88. package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
  89. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app/(app)/search/page.js +2 -2
  91. package/.next/server/app/(app)/search/page.js.nft.json +1 -1
  92. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/(app)/security/page.js +2 -2
  94. package/.next/server/app/(app)/security/page.js.nft.json +1 -1
  95. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  96. package/.next/server/app/(app)/skills/page.js +3 -3
  97. package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
  98. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
  99. package/.next/server/app/(app)/tasks/page.js +2 -2
  100. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
  101. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  102. package/.next/server/app/(app)/test-dev/page.js +2 -2
  103. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
  104. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
  105. package/.next/server/app/(app)/update/page.js +2 -2
  106. package/.next/server/app/(app)/update/page.js.nft.json +1 -1
  107. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
  108. package/.next/server/app/(auth)/login/page.js +2 -2
  109. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  110. package/.next/server/app/(auth)/onboarding/page.js +2 -2
  111. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  113. package/.next/server/app/_global-error.html +1 -1
  114. package/.next/server/app/_global-error.rsc +1 -1
  115. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  116. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  117. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  118. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  119. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  120. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  121. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/cron/tick/route.js +2 -2
  123. package/.next/server/app/api/sync/file/route.js +1 -1
  124. package/.next/server/app/api/telegram/poll/route.js +2 -2
  125. package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
  126. package/.next/server/app-paths-manifest.json +1 -1
  127. package/.next/server/chunks/1249.js +6 -6
  128. package/.next/server/chunks/259.js +1 -1
  129. package/.next/server/chunks/2867.js +1 -1
  130. package/.next/server/chunks/2960.js +1 -1
  131. package/.next/server/chunks/3174.js +12 -0
  132. package/.next/server/chunks/3234.js +1 -1
  133. package/.next/server/chunks/3334.js +1 -0
  134. package/.next/server/chunks/3439.js +4 -0
  135. package/.next/server/chunks/478.js +1 -0
  136. package/.next/server/chunks/4979.js +2 -2
  137. package/.next/server/chunks/{3078.js → 5086.js} +15 -15
  138. package/.next/server/chunks/6431.js +1 -1
  139. package/.next/server/chunks/7589.js +1 -1
  140. package/.next/server/chunks/7989.js +1 -1
  141. package/.next/server/chunks/8195.js +21 -0
  142. package/.next/server/chunks/8244.js +1 -0
  143. package/.next/server/chunks/8561.js +1 -1
  144. package/.next/server/chunks/8823.js +1 -1
  145. package/.next/server/chunks/9783.js +1 -1
  146. package/.next/server/middleware-build-manifest.js +1 -1
  147. package/.next/server/middleware-react-loadable-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/386-0f2b8d23016cf4d0.js +1 -0
  152. package/.next/static/chunks/4909-9f16a714c78ed30d.js +4 -0
  153. package/.next/static/chunks/5332-84d9a65aa5d16106.js +1 -0
  154. package/.next/static/chunks/5664-3cb5735f1b5bbde1.js +1 -0
  155. package/.next/static/chunks/{7509.8d3cbebb5fbe6247.js → 7509.721cd47a931c5518.js} +1 -1
  156. package/.next/static/chunks/8370-7ec9e9bf414f8f2d.js +12 -0
  157. package/.next/static/chunks/app/(app)/activity/{page-02fbf7cf46282feb.js → page-0f51a22d4f2207b2.js} +1 -1
  158. package/.next/static/chunks/app/(app)/agents/[handle]/{page-e3eda42a3f20e3e5.js → page-14805dd54a1333e8.js} +1 -1
  159. package/.next/static/chunks/app/(app)/code/page-7ebd6923ac440103.js +1 -0
  160. package/.next/static/chunks/app/(app)/config/page-47b5b62b73050673.js +1 -0
  161. package/.next/static/chunks/app/(app)/costs/{page-aadb60fb329974f3.js → page-969eba498344314d.js} +1 -1
  162. package/.next/static/chunks/app/(app)/cron/{page-0219c7a0530ad628.js → page-ab35783e4341f6b7.js} +1 -1
  163. package/.next/static/chunks/app/(app)/dashboard/page-59521ad116c60a88.js +1 -0
  164. package/.next/static/chunks/app/(app)/design/{page-f889489d70e0e839.js → page-fcee2dfd5c7e3a4b.js} +3 -3
  165. package/.next/static/chunks/app/(app)/docs/[id]/{page-f2e1f3d72634fb4b.js → page-b3451b21d7d2127b.js} +1 -1
  166. package/.next/static/chunks/app/(app)/docs/page-3a34eec67591ce3e.js +1 -0
  167. package/.next/static/chunks/app/(app)/github/page-a0117637dc143821.js +1 -0
  168. package/.next/static/chunks/app/(app)/goals/page-d1cb2552625ccadb.js +1 -0
  169. package/.next/static/chunks/app/(app)/inbox/page-dbfc885cd61f9b9f.js +12 -0
  170. package/.next/static/chunks/app/(app)/knowledge/page-29df476a9c2f930c.js +1 -0
  171. package/.next/static/chunks/app/(app)/layout-2b6b23e82fbf0211.js +1 -0
  172. package/.next/static/chunks/app/(app)/models/page-ea54a5d167cd3cc2.js +1 -0
  173. package/.next/static/chunks/app/(app)/notifications/page-ef1ac55efadb2a1a.js +12 -0
  174. package/.next/static/chunks/app/(app)/org/page-a7c734b8d86f7641.js +12 -0
  175. package/.next/static/chunks/app/(app)/organizations/page-4bcec3010a9d9119.js +1 -0
  176. package/.next/static/chunks/app/(app)/page-54a99a54295a40be.js +1 -0
  177. package/.next/static/chunks/app/(app)/planner/page-adfd05afc6ddcbef.js +1 -0
  178. package/.next/static/chunks/app/(app)/plugins/page-e75d982132825b07.js +1 -0
  179. package/.next/static/chunks/app/(app)/pm/page-773626398c10fdb7.js +1 -0
  180. package/.next/static/chunks/app/(app)/prepare-deploy/page-01f767248e7fa2a7.js +1 -0
  181. package/.next/static/chunks/app/(app)/profile/page-cb2450679785db1a.js +1 -0
  182. package/.next/static/chunks/app/(app)/pulse/{page-a0895a89c74c1d4c.js → page-1a63c4ed76db48f5.js} +1 -1
  183. package/.next/static/chunks/app/(app)/reports/[id]/{page-0219c7a0530ad628.js → page-ab35783e4341f6b7.js} +1 -1
  184. package/.next/static/chunks/app/(app)/reports/page-b0bcc85ad4afecf5.js +1 -0
  185. package/.next/static/chunks/app/(app)/routines/page-c0ce223d128a9010.js +1 -0
  186. package/.next/static/chunks/app/(app)/search/{page-d975712d07eed70d.js → page-d30f1c44c95e14a3.js} +1 -1
  187. package/.next/static/chunks/app/(app)/security/page-4640d72a0b360f05.js +1 -0
  188. package/.next/static/chunks/app/(app)/skills/page-87a71bd0a6b0f262.js +1 -0
  189. package/.next/static/chunks/app/(app)/tasks/page-a34a5658aff509ec.js +1 -0
  190. package/.next/static/chunks/app/(app)/test-dev/page-842f8771d36e964b.js +1 -0
  191. package/.next/static/chunks/app/(app)/update/page-64467fa6d8ed737e.js +1 -0
  192. package/.next/static/chunks/app/(auth)/login/page-82964b720ff11bab.js +1 -0
  193. package/.next/static/chunks/app/(auth)/onboarding/{page-ee09eb3fd38f3365.js → page-0cd7cd9fa146a927.js} +1 -1
  194. package/.next/static/chunks/app/_not-found/page-489c316e4356f1b7.js +1 -0
  195. package/.next/static/chunks/{main-2e2f6e1d0f3b78b1.js → main-722e16032e7764d1.js} +1 -1
  196. package/.next/static/chunks/webpack-222e3894b78c67db.js +1 -0
  197. package/.next/trace-build +1 -1
  198. package/CHANGELOG.md +3 -0
  199. package/docs/UPDATE.md +20 -0
  200. package/package.json +1 -1
  201. package/.next/server/chunks/104.js +0 -1
  202. package/.next/server/chunks/1082.js +0 -1
  203. package/.next/server/chunks/2359.js +0 -1
  204. package/.next/server/chunks/7970.js +0 -21
  205. package/.next/server/chunks/8071.js +0 -4
  206. package/.next/server/chunks/8102.js +0 -12
  207. package/.next/static/chunks/1068-50497be19315ccfb.js +0 -1
  208. package/.next/static/chunks/4991-0306ad0e6cd8cb8a.js +0 -1
  209. package/.next/static/chunks/6061-f3ad54a48323cba0.js +0 -1
  210. package/.next/static/chunks/6121-37930472292e5a6c.js +0 -4
  211. package/.next/static/chunks/8370-4a29b1affcb7dc68.js +0 -12
  212. package/.next/static/chunks/app/(app)/code/page-8f8ae22136752631.js +0 -1
  213. package/.next/static/chunks/app/(app)/config/page-84216e49b0b08248.js +0 -1
  214. package/.next/static/chunks/app/(app)/dashboard/page-1e7ecb2bdefcdc19.js +0 -1
  215. package/.next/static/chunks/app/(app)/docs/page-ab10f655b932f175.js +0 -1
  216. package/.next/static/chunks/app/(app)/github/page-0e47c2c1c9c927e4.js +0 -1
  217. package/.next/static/chunks/app/(app)/goals/page-9a68e61bbc392281.js +0 -1
  218. package/.next/static/chunks/app/(app)/inbox/page-6ee42cdd99664d11.js +0 -12
  219. package/.next/static/chunks/app/(app)/knowledge/page-c02936180f61550f.js +0 -1
  220. package/.next/static/chunks/app/(app)/layout-7d2d377b224620c8.js +0 -1
  221. package/.next/static/chunks/app/(app)/models/page-8635495017d696c1.js +0 -1
  222. package/.next/static/chunks/app/(app)/notifications/page-72f15bd4b6289bf1.js +0 -12
  223. package/.next/static/chunks/app/(app)/org/page-30bb71b216cc152e.js +0 -12
  224. package/.next/static/chunks/app/(app)/organizations/page-50c64b60a6850870.js +0 -1
  225. package/.next/static/chunks/app/(app)/page-638517264806ba7e.js +0 -1
  226. package/.next/static/chunks/app/(app)/planner/page-5177b5fd72d529f4.js +0 -1
  227. package/.next/static/chunks/app/(app)/plugins/page-66921b5b398f2c05.js +0 -1
  228. package/.next/static/chunks/app/(app)/pm/page-a1f93d19d3c28627.js +0 -1
  229. package/.next/static/chunks/app/(app)/prepare-deploy/page-de7dc9413e3dbf82.js +0 -1
  230. package/.next/static/chunks/app/(app)/profile/page-e73d191fce633cd7.js +0 -1
  231. package/.next/static/chunks/app/(app)/reports/page-fd0b0d0fa742819e.js +0 -1
  232. package/.next/static/chunks/app/(app)/routines/page-eaba9756a33d98a6.js +0 -1
  233. package/.next/static/chunks/app/(app)/security/page-4b126307f9963c2a.js +0 -1
  234. package/.next/static/chunks/app/(app)/skills/page-f1fc99f1d15e26a4.js +0 -1
  235. package/.next/static/chunks/app/(app)/tasks/page-a4b78a8d76fd9432.js +0 -1
  236. package/.next/static/chunks/app/(app)/test-dev/page-55cef74633b3cf4c.js +0 -1
  237. package/.next/static/chunks/app/(app)/update/page-92764fc98b253709.js +0 -1
  238. package/.next/static/chunks/app/(auth)/login/page-3df648bab2319a0b.js +0 -1
  239. package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +0 -1
  240. package/.next/static/chunks/webpack-94c9726ec79ee4b4.js +0 -1
  241. /package/.next/static/{N4KMSOY3i-qyXrbfm97sO → Fx06n4huXV42eQUI-Lty0}/_buildManifest.js +0 -0
  242. /package/.next/static/{N4KMSOY3i-qyXrbfm97sO → Fx06n4huXV42eQUI-Lty0}/_ssgManifest.js +0 -0
package/docs/UPDATE.md CHANGED
@@ -18,6 +18,26 @@ it didn't earn: the updater writes the real result and the screen reflects it tr
18
18
 
19
19
  ---
20
20
 
21
+ ## 🆕 What's new — release history
22
+
23
+ Latest first. The in-app **Update** module shows the changelog inline as “What's new”; this is the same history, kept
24
+ here so the “docs” button always shows what each release added. Full detail: [Changelog](../CHANGELOG.md).
25
+
26
+ ### v0.3.2 — install & onboarding fixes
27
+ - `npx constellai` works on **Windows** (the package ships a matching `constellai` bin).
28
+ - Onboarding no longer freezes at “Setting up… 100%” — it hard-navigates to the Planner (all modes).
29
+ - **VPS:** the systemd service gets a real `PATH`, so it detects + runs your CLIs (Claude Code / Codex / …).
30
+ - Avatar photos show in the home chat + @-mention list (the operator/agent image is threaded everywhere now).
31
+
32
+ ### v0.3.0 — first clean public release
33
+ - **Design module** — Grace prototypes the UI on a faithful, **text-only** canvas; the approved design **becomes the
34
+ real served frontend** (engineers extend it, never rebuild). **Live app + Inspect**: render the real running dev
35
+ server (any stack) and click an element to ask Grace to change it. Visual-fidelity gate + Telegram control.
36
+ - **Context donut** — per-conversation, per-agent token + `$` cost in the chat header.
37
+ - **Resilience** — agent runs retry transient failures (429 / quota / 5xx); the Design→execution handoff is idempotent + resumable.
38
+
39
+ ---
40
+
21
41
  ## ✦ Update from the app (recommended)
22
42
 
23
43
  Open the **Update** module (the rocket icon, or `/update`):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "constellai",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Constella — run autonomous AI agent-companies locally: real claude/codex agents, Goals → Specs → Issues → Plans, local models, GitHub & Telegram, all from one cosmic control plane.",
5
5
  "//name": "Published as `constellai` (the unscoped `constella` was taken). Ships BOTH a `constellai` and a `constella` bin (same launcher): `npx constellai` needs a bin matching the package name to run on Windows, and a global install also gives the short `constella` command.",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- "use strict";exports.id=104,exports.ids=[104,7336],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")},4795:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(2910);let e=(0,d.createServerReference)("003f7bfd00bce6e4642889640da92a0031cf3f1506",d.callServer,void 0,d.findSourceMapURL,"devServerStatusAction")},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.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})}},33379:(a,b,c)=>{c.r(b),c.d(b,{"0028f961902c9e2476af137bbeb472cd7073047824":()=>d.Kd,"007022a76790c9702b4391280231b2e171ccb37259":()=>d.cT,"405c3175ae584fd80327c8ee43d0a247dd50e3c25b":()=>d.j0,"40834c7dee509b9fe3747f69a43078710b318bcdf5":()=>d.OD});var d=c(14565)},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;return"dev"===b?{ok:!1,context:b,command:c,backupDir:d,message:"Running from source — update with: git pull && pnpm install && pnpm build"}:"npx"===b?{ok:!1,context:b,command:c,backupDir:d,message:"npx runs an ephemeral copy — re-run: npx constellai@latest"}:"vps"===b?{ok:!1,context:b,command:"bash scripts/vps-update.sh",backupDir:d,needsRestart:!0,message:"On a VPS, update from a shell: `bash scripts/vps-update.sh` (or `npm install -g constellai@latest && sudo systemctl restart constella`). Your data in ~/.constella — DB, secrets, workspaces — is preserved; migrations run on the next boot."}: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,"400cec94da616f674817927789cb26482bba22cfbd",null),(0,d.A)(y,"401b5fdc3d8fb095679094c177536777e53f9c06fd",null),(0,d.A)(z,"00a3d5009503b1be561d7520e2b68ce0587a6740c0",null),(0,d.A)(A,"004385fd0fd07982e82eeb3fc0a146319a0c4cddcf",null),(0,d.A)(B,"009be10f119924c7536924e7aa423be2a59d4a0f40",null)},56662:(a,b,c)=>{c.d(b,{R:()=>e});var d=c(2910);let e=(0,d.createServerReference)("001e793b6b9e17dd4f29b7fd68cfaf7432f33ca45b",d.callServer,void 0,d.findSourceMapURL,"startDevServerAction")},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,"001e793b6b9e17dd4f29b7fd68cfaf7432f33ca45b",null),(0,d.A)(m,"001fccc7214a81eee4a828374a1cfd7cc92e5109fb",null),(0,d.A)(n,"003f7bfd00bce6e4642889640da92a0031cf3f1506",null),(0,d.A)(o,"00c38194c9d1cef9ff1d75790c8f782badbc37b52a",null),(0,d.A)(p,"006e8b51bd97c68f55b9872060b05677c64a7c9f97",null),(0,d.A)(q,"405a2f4d5897167f5bd29ff4e7282eb422acfea757",null),(0,d.A)(r,"40d7c1696464f382355736732058cace6827a29770",null),(0,d.A)(s,"60df05f65ffaefc9f562b1958a9e2824fad101221e",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)}},78564:(a,b,c)=>{c.d(b,{K:()=>e});var d=c(2910);let e=(0,d.createServerReference)("405a2f4d5897167f5bd29ff4e7282eb422acfea757",d.callServer,void 0,d.findSourceMapURL,"previewFrameableAction")}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=1082,exports.ids=[1082],exports.modules={25543:(a,b,c)=>{c.d(b,{IssueApprove:()=>g,PlanGate:()=>f,PlanGateLive:()=>e,Run247Button:()=>h});var d=c(62060);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call PlanGateLive() from the server but PlanGateLive 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\\modules\\plan-gate.tsx","PlanGateLive");(0,d.registerClientReference)(function(){throw Error("Attempted to call GeneratePlanButton() from the server but GeneratePlanButton 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\\modules\\plan-gate.tsx","GeneratePlanButton");let f=(0,d.registerClientReference)(function(){throw Error("Attempted to call PlanGate() from the server but PlanGate 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\\modules\\plan-gate.tsx","PlanGate");(0,d.registerClientReference)(function(){throw Error("Attempted to call SpecApprove() from the server but SpecApprove 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\\modules\\plan-gate.tsx","SpecApprove");let g=(0,d.registerClientReference)(function(){throw Error("Attempted to call IssueApprove() from the server but IssueApprove 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\\modules\\plan-gate.tsx","IssueApprove"),h=(0,d.registerClientReference)(function(){throw Error("Attempted to call Run247Button() from the server but Run247Button 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\\modules\\plan-gate.tsx","Run247Button")},30527:(a,b,c)=>{c.d(b,{P:()=>e});var d=c(2910);let e=(0,d.createServerReference)("003febf4e7267ca98f9eb9b6dc436d9a4e2b65e7ca",d.callServer,void 0,d.findSourceMapURL,"approvePlan")},33379:(a,b,c)=>{c.r(b),c.d(b,{"0028f961902c9e2476af137bbeb472cd7073047824":()=>d.Kd,"007022a76790c9702b4391280231b2e171ccb37259":()=>d.cT,"405c3175ae584fd80327c8ee43d0a247dd50e3c25b":()=>d.j0,"40834c7dee509b9fe3747f69a43078710b318bcdf5":()=>d.OD});var d=c(14565)},73134:(a,b,c)=>{c.d(b,{AgentRunLive:()=>j});var d=c(4374),e=c(74679),f=c(47104),g=c(43526);c(14631);var h=c(31819);let i=["read","create","edit","run","search","thinking","done","error"];function j({channel:a,resume:b=!1,sinceSeq:c=0,onFinish:k}){let l=(0,h.k)();(0,f.useRouter)();let[m,n]=(0,e.useState)(b),[o,p]=(0,e.useState)([]),[q,r]=(0,e.useState)(0);if((0,e.useRef)(b?c:0),(0,e.useRef)(!1),(0,e.useRef)(0),!m&&0===o.length)return null;let s=function(a){let b=[];for(let c of a)if("text"===c.kind){let a=(c.detail||"").replace(/\s+/g," ").trim();if(!a)continue;let d=b[b.length-1];d&&"text"===d.kind?d.content=(d.content+" "+a).slice(-600):b.push({id:c.id,kind:"text",content:a})}else if("thinking"===c.kind){let a=(c.detail||c.target||"").replace(/\s+/g," ").trim();a&&b.push({id:c.id,kind:"thinking",content:a})}else b.push({id:c.id,kind:c.kind,content:function(a){if(!a)return"";let b=a.split(/[\\/]/);return b.length>1?b.slice(-2).join("/"):a}(c.target)||c.detail||""});return b}(o),t=s.slice(-5),u=s.length-t.length,v=o.some(a=>"done"===a.kind||"error"===a.kind),w=o.some(a=>"error"===a.kind),x=String(Math.floor(q/60)).padStart(2,"0"),y=String(q%60).padStart(2,"0");return(0,d.jsxs)("div",{className:"card live-stream",style:{marginBottom:16,borderColor:w?"var(--sx-keyword)":"var(--accent)"},children:[(0,d.jsxs)("div",{className:"set-desc",style:{marginBottom:8,display:"flex",alignItems:"center",gap:7},children:[m&&!v?(0,d.jsx)("span",{className:"dotpulse"}):(0,d.jsx)(g.I,{name:w?"close":"check",size:13,style:{color:w?"var(--sx-keyword)":"var(--sx-string)"}}),m&&!v?l("agent.run.working"):w?l("agent.run.failed"):l("agent.run.finished"),s.length>0&&(0,d.jsxs)("span",{style:{color:"var(--text-faint)"},children:["\xb7 ",l(1===s.length?"agent.run.steps.one":"agent.run.steps.other",{n:s.length})]}),(0,d.jsxs)("span",{className:"live-elapsed",style:{marginLeft:"auto"},children:[x,":",y]})]}),0===t.length?(0,d.jsxs)("div",{className:"muted",style:{fontSize:12,display:"flex",alignItems:"center",gap:7},children:[(0,d.jsx)("span",{className:"sync-spin",children:(0,d.jsx)(g.I,{name:"refresh",size:12})})," ",l("agent.run.reading")]}):(0,d.jsxs)(d.Fragment,{children:[u>0&&(0,d.jsx)("div",{className:"live-more",children:l(1===u?"agent.run.earlier.one":"agent.run.earlier.other",{n:u})}),(0,d.jsx)("div",{className:"live-stream-lines",children:t.map(a=>(0,d.jsxs)("div",{className:"live-line "+a.kind,children:["text"!==a.kind&&(0,d.jsx)("span",{className:"ll-k",children:i.includes(a.kind)?l(`agent.verb.${a.kind}`):a.kind}),(0,d.jsxs)("span",{className:"ll-c",children:[a.content,!v&&a===t[t.length-1]&&"text"===a.kind&&(0,d.jsx)("span",{className:"ll-caret"})]})]},a.id))})]})]})}},73838:(a,b,c)=>{c.d(b,{IssueApprove:()=>x,PlanGate:()=>v,PlanGateLive:()=>u,Run247Button:()=>y,p:()=>w});var d=c(4374),e=c(74679),f=c(47104),g=c(43526),h=c(31819),i=c(73134),j=c(2910);let k=(0,j.createServerReference)("40a5db20e92cac0094f3ce6250a17ec8d42fc4d887",j.callServer,void 0,j.findSourceMapURL,"generatePlan"),l=(0,j.createServerReference)("005cb5bb28bc19f2d5ed503834ad00dc741d78a51d",j.callServer,void 0,j.findSourceMapURL,"requestPlanChanges");var m=c(30527),n=c(97696),o=c(90362),p=c(80047),q=c(99756);let r=(0,j.createServerReference)("4096425e44cce93bbec45707a6319457d2f7f2d3cb",j.callServer,void 0,j.findSourceMapURL,"setAuto247"),s=(0,j.createServerReference)("0042e68aad222037eb8d73ca8b3ce5329de2cd3485",j.callServer,void 0,j.findSourceMapURL,"skipDesignGate");function t(a,b){window.dispatchEvent(new CustomEvent("constella:open-dm",{detail:{handle:a,text:b}}))}function u({planning:a,planSince:b,designRecommended:c=!1,designPending:j=!1}){let l=(0,h.k)(),[m,n]=(0,e.useTransition)(),o=(0,f.useRouter)(),[p,q]=(0,e.useState)(!1),[r,t]=(0,e.useState)(""),v=a||p;function w(){t(""),q(!0),window.dispatchEvent(new CustomEvent("constella:agent-run",{detail:{channel:"planner"}})),n(async()=>{try{let a=await k();(!a?.ok||!1===a.started)&&(q(!1),a?.error&&t(a.error)),o.refresh()}catch{q(!1),t(l("planner.gate.staleTab"))}})}return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.AgentRunLive,{channel:"planner",resume:a,sinceSeq:a?b-1:0,onFinish:()=>q(!1)}),v?(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:l("planner.gate.drafting.t")}),(0,d.jsx)("div",{className:"pg-d",children:l("planner.gate.drafting.d")})]})]}):c||j?(0,d.jsxs)("div",{className:"plan-gate",style:{borderColor:"rgba(99,102,241,.45)"},children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0,style:{background:"#6366f1"}}),(0,d.jsx)("div",{className:"pg-ic",style:{background:"rgba(99,102,241,.16)",color:"#6366f1"},children:(0,d.jsx)(g.I,{name:"skill",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:j?"Design step pending":"Recommended: prototype the design first"}),(0,d.jsx)("div",{className:"pg-d",children:j?"Ada is holding the plan on the design step. Open the Design module, build & approve the prototype with Grace, then Send to execution — Ada turns the approved design into specs & issues (zero drift).":"This is a frontend product. Prototype & approve the UI in the Design module before generating the plan — Grace turns the brief into a real visual reference, so the specs are precise and you avoid rework."}),r&&(0,d.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:r})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("button",{className:"btn-accent",onClick:()=>o.push("/design"),children:[(0,d.jsx)(g.I,{name:"skill",size:14})," Open Design"]}),(0,d.jsxs)("button",{className:"btn-ghost",disabled:m,onClick:function(){n(async()=>{try{await s()}catch{}}),w()},style:{fontSize:12},children:[(0,d.jsx)(g.I,{name:m?"refresh":"bot",size:13,className:m?"sync-spin":""})," ",m?l("planner.gate.analyzing"):"Skip design & plan anyway"]})]})]}):(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:l("planner.gate.noPlan.t")}),(0,d.jsx)("div",{className:"pg-d",children:l("planner.gate.noPlan.d")}),r&&(0,d.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:r})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("div",{className:"plan-hint",children:[(0,d.jsx)("div",{className:"plan-hint-t",children:l("planner.gate.hint.t")}),(0,d.jsx)("div",{className:"plan-hint-d",children:l("planner.gate.hint.d")})]}),(0,d.jsxs)("button",{className:"btn-accent",disabled:m,onClick:w,children:[(0,d.jsx)(g.I,{name:m?"refresh":"bot",size:14,className:m?"sync-spin":""})," ",m?l("planner.gate.analyzing"):l("planner.gate.generate")]})]})]})]})}function v({specs:a,total:b}){let c=(0,h.k)(),[f,i]=(0,e.useTransition)();return(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:c("planner.gate.ready.t")}),(0,d.jsx)("div",{className:"pg-d",children:c("planner.gate.ready.d",{specs:a,total:b})})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("button",{className:"btn-ghost",disabled:f,onClick:()=>i(async()=>{await l(),t("ada",c("planner.gate.rejectPlanDm"))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:13})," ",c("planner.gate.requestChanges")]}),(0,d.jsxs)("button",{className:"btn-accent",disabled:f,onClick:()=>i(()=>(0,m.P)()),children:[(0,d.jsx)(g.I,{name:"check",size:14})," ",c("planner.gate.approvePlan")]})]})]})}function w({specId:a,specKey:b,approved:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)();return c?(0,d.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approved")]}):(0,d.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,d.jsxs)("button",{className:"sc2-btn",disabled:i,onClick:()=>j(()=>(0,n.B)(a)),children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approve")]}),(0,d.jsxs)("button",{className:"sc2-btn danger",disabled:i,onClick:()=>j(async()=>{t((await (0,o.J)(a)).handle,f("planner.rejectItemDm",{key:b}))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:11})," ",f("planner.reject")]})]})}function x({issueId:a,issueKey:b,approved:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)();return c?(0,d.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approved")]}):(0,d.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,d.jsxs)("button",{className:"sc2-btn",disabled:i,onClick:()=>j(()=>(0,p.t)(a)),children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approve")]}),(0,d.jsxs)("button",{className:"sc2-btn danger",disabled:i,onClick:()=>j(async()=>{t((await (0,q.d)(a)).handle,f("planner.rejectItemDm",{key:b}))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:11})," ",f("planner.reject")]})]})}function y({auto:a,approved:b,state:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)(),k=f(i?a?"planner.run247.pausing":"planner.run247.starting":"waiting-approval"===c?"planner.run247.approveToRun":"all-done"===c?"planner.run247.allDone":a?"planner.run247.pause":"planner.run247.run"),l="blocked"===c?f("planner.run247.blockedTip"):void 0,m="off"===c&&!i;return(0,d.jsxs)("button",{className:"btn-"+(a?"ghost":"accent")+(m?" run-attn":""),disabled:!b||"all-done"===c||i,title:l,onClick:()=>j(()=>r(!a)),children:[(0,d.jsx)(g.I,{name:i?"refresh":"waiting-approval"===c?"bot":"all-done"===c?"check":a?"close":"play",size:14,className:i?"sync-spin":""})," ",k,("running"===c||m)&&(0,d.jsx)("span",{className:"dotpulse",style:{marginLeft:6}})]})}},80047:(a,b,c)=>{c.d(b,{t:()=>e});var d=c(2910);let e=(0,d.createServerReference)("40aa8d10fe1fc7b3d00fb58cf6686d7e66a57a82de",d.callServer,void 0,d.findSourceMapURL,"approveIssue")},90362:(a,b,c)=>{c.d(b,{J:()=>e});var d=c(2910);let e=(0,d.createServerReference)("409c5ecd26ccaec10a2e66bce9e702bf46d8cc21e0",d.callServer,void 0,d.findSourceMapURL,"rejectSpec")},97696:(a,b,c)=>{c.d(b,{B:()=>e});var d=c(2910);let e=(0,d.createServerReference)("40278c98b65eb6a42ba19ed36299f6ada32c9eea34",d.callServer,void 0,d.findSourceMapURL,"approveSpec")},99756:(a,b,c)=>{c.d(b,{d:()=>e});var d=c(2910);let e=(0,d.createServerReference)("4067ca80a5da742c05fbb50e0a730ae4a24a79b000",d.callServer,void 0,d.findSourceMapURL,"rejectIssue")}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=2359,exports.ids=[2359,7336],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})]})}},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[]}}},18727:(a,b,c)=>{c.d(b,{O:()=>e});var d=c(2910);let e=(0,d.createServerReference)("00989a2c152ceb87b200f52f9d56d6a1006b3ae418",d.callServer,void 0,d.findSourceMapURL,"curateKbAction")},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;return"dev"===b?{ok:!1,context:b,command:c,backupDir:d,message:"Running from source — update with: git pull && pnpm install && pnpm build"}:"npx"===b?{ok:!1,context:b,command:c,backupDir:d,message:"npx runs an ephemeral copy — re-run: npx constellai@latest"}:"vps"===b?{ok:!1,context:b,command:"bash scripts/vps-update.sh",backupDir:d,needsRestart:!0,message:"On a VPS, update from a shell: `bash scripts/vps-update.sh` (or `npm install -g constellai@latest && sudo systemctl restart constella`). Your data in ~/.constella — DB, secrets, workspaces — is preserved; migrations run on the next boot."}: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,"400cec94da616f674817927789cb26482bba22cfbd",null),(0,d.A)(y,"401b5fdc3d8fb095679094c177536777e53f9c06fd",null),(0,d.A)(z,"00a3d5009503b1be561d7520e2b68ce0587a6740c0",null),(0,d.A)(A,"004385fd0fd07982e82eeb3fc0a146319a0c4cddcf",null),(0,d.A)(B,"009be10f119924c7536924e7aa423be2a59d4a0f40",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)}},76594:(a,b,c)=>{c.r(b),c.d(b,{"003d1836382188603c5b40a8fd0c7735cec69e7922":()=>i.V,"004385fd0fd07982e82eeb3fc0a146319a0c4cddcf":()=>n.PG,"004ec7f252351e38a9c4baf338040eebc632b425d2":()=>j.f,"0051a52502b49e09ad171c2a611bc2418ed1c1a9dc":()=>e.PE,"005a226f73ea851bb80ec4f9fdf3aedb50fb7fbcd1":()=>e.y_,"00703229b811528142c40576d5c57f3467b87b9b61":()=>d.bt,"008945e940738840c2c3f8cf09a767e9dff2d1d34b":()=>k.dj,"00989a2c152ceb87b200f52f9d56d6a1006b3ae418":()=>j.O,"009be10f119924c7536924e7aa423be2a59d4a0f40":()=>n.eU,"00a3d5009503b1be561d7520e2b68ce0587a6740c0":()=>n.pM,"00bb81b2ee7b45ce9f2c558b5098b2acbe223d936e":()=>k.eg,"00cdd261029ea6d12df690e0b43e69818dbfeca142":()=>h.x7,"00ce8a19facd18b6c85993ebd6da347d63d0579dfa":()=>k.io,"00d423e1c54f47493dd9e26787f081501532d5754f":()=>d.xU,"00df7e6e08eaa29f35def8db35d7aefb6c9acb9ce2":()=>e.KO,"00e68579200e3df5cde1803035a93f8406aa41e3b0":()=>h.Mp,"00ee824db0a18ba9e4b113a979c27e43db14785003":()=>e.GK,"4004cb652b9955d22ac032162768b4e0579a46079b":()=>e.ey,"400cec94da616f674817927789cb26482bba22cfbd":()=>n.Kg,"4010339d35fee3f9209079d6bec35c010e1bbd23f5":()=>m.y,"4012df9fe60cdc771539fe5ed6ee353f894150d310":()=>g.L,"40180769811ee904607ab5b31116043b8c5f8be1a1":()=>i.E_,"401b5fdc3d8fb095679094c177536777e53f9c06fd":()=>n.lP,"4021ca58f6081eea2ecbd22b042f8eb7cb116a2fc3":()=>i.zS,"40242806df9ad69eb1c87ff62b4b2b34b3abad98dd":()=>e.jc,"40249f352fbd111bf83a85129254e9e18ef8ea9d64":()=>l.TX,"404005f581c185523c57ba4de7b6e623b00422d422":()=>l.IL,"4049b65fc61de5f15ea027c832048d695017a2cadc":()=>d.GW,"404aa55a36511316cdf338b098de663d429f9e7c1f":()=>k.De,"4055d44350781ccf3333fcaf2f5cb371866c797769":()=>i.F,"406201c1d173ad16581e88feb7fdf42ebbc95ef841":()=>d.VL,"407c52c4d4449ab61d90dcfa9cbf1ddd27160f6838":()=>e.RG,"4087e6e58cd4d57932fba61705c67f27c76e9dbebb":()=>d.Wu,"40972d5b822e66513389d5179af32bb5f9ab77ca88":()=>g.p,"409743adf88b2fc6a237494fd51038d3a4527b0203":()=>h.lR,"4098f6bc6c8bcf5e0704daf3a5a7bab7ffa82a196c":()=>d.H7,"40a6b782c452b9d7da8220c5630efb6277ba4077a1":()=>h.sE,"40a7dc12aa0d1b7b04c68ad7e482ba71fd189a44a7":()=>i.VJ,"40b05730806e4d6ca81c8b097bbe58fc8b2a6a9c19":()=>e.lJ,"40b85e5a61026f49480c36b5f71ce876512194b848":()=>e.S,"40dd7a9ba904e27f9eeac05cd7a750583e8de84545":()=>d.rd,"40e311db584b685c4692979c63d0c6e43ebfbb3776":()=>e.r7,"40eca98781164e186e8b92598018c0247eee2533ed":()=>l.q4,"40faf10ed1dd931e743694b6ab07acfffa9f1c5fff":()=>d.gg,"600d82e3d7031f663a63e6110ba9f565e1925bac77":()=>d.Fu,"602541726f950df2e46bd648c470b35caff4290401":()=>l.Jp,"60301fe28cb811b08550b91045a0558179995780c0":()=>d.ME,"6043588d0686a7654ec852ff74b41a1990afb8ad5b":()=>l.bk,"60581df9364a1b92ebc0d853d7c78efa696792047f":()=>d.rm,"605cdb117d7636ebc2c1655a5624f369a8c5530ef3":()=>l.bV,"605ee4201fe65199f85db7180e840b038e2e8ffd10":()=>d.n4,"60641a6b24e31ba5d7c698743071a038d3366fc586":()=>e.AA,"6089bcc5361f39d22c01d6f92038ab1a71d519835f":()=>f.k,"60b6a569caae9899b156707b836ab2851f5218fa91":()=>e.q$,"60c1724f6f00fd2d33760b52f4dde31de692d1b203":()=>f.I,"60e6371f54999c9587eca32148839e4ce8eef9abc3":()=>e.LZ,"60e9b223d15847a611ea2b6fdf59614eceb4151ee9":()=>d.jw,"700e7dc42f9902ba897ac4e36d45bfd5032bd56211":()=>d._z,"706d88c745d18277356678742d9b6b2b19c4f6e86d":()=>e.M8});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)}};
@@ -1,21 +0,0 @@
1
- "use strict";exports.id=7970,exports.ids=[7970],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})}},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(92837),c(44153)},36172:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(2910);let e=(0,d.createServerReference)("4023914c635fa47959e59550bc8bd4ebb3ff58154d",d.callServer,void 0,d.findSourceMapURL,"pullModel")},37343:(a,b,c)=>{c.d(b,{k:()=>e});var d=c(2910);let e=(0,d.createServerReference)("60f7a9badac0e78da08a792858f4ccc8f6f37a02ef",d.callServer,void 0,d.findSourceMapURL,"saveAgentModel")},44153:(a,b,c)=>{c.d(b,{E:()=>e});var d=c(2910);let e=(0,d.createServerReference)("40ad8cc407db284a4237d2a2f3eb012ddf1050500b",d.callServer,void 0,d.findSourceMapURL,"listProviderModels")},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))]})]})}},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,"607693138d28d8f43569c42d33b1e396036f9caee1",null),(0,d.A)(o,"60b5e8b749b8c079b6f0232b55d48f5ad0e9f26bd0",null),(0,d.A)(p,"60f7a9badac0e78da08a792858f4ccc8f6f37a02ef",null),(0,d.A)(q,"60182615880c9d485a408140c0a1796aa25913b0c7",null),(0,d.A)(r,"6075563bd7c53667d7c6bc25a3c8ae003c74b8de89",null),(0,d.A)(s,"70f5473699d6879da7e70820c873eebbda885204de",null),(0,d.A)(t,"6008d8c78dff76e554930b597d23dddf9673f6a7b6",null)},92837:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(2910);let e=(0,d.createServerReference)("406836dff841ba34c3bd419e038c83fef59ce53ba8",d.callServer,void 0,d.findSourceMapURL,"listCatalogModels")},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,"60bdec14597a2402418a9153dbff11622c12dfd58e",null),(0,d.A)(I,"407eeda1dd6b19dfa06ac9af2c006223133feb94b3",null),(0,d.A)(J,"40f69e0eec9373f2ba113fc240678e663895f384eb",null),(0,d.A)(L,"4000f825adbb6c74572d70e17b9995709d1cbb122a",null),(0,d.A)(M,"406836dff841ba34c3bd419e038c83fef59ce53ba8",null),(0,d.A)(N,"40bd06c4c1aab8ecdfd0402fbd0a27917dcf1c6f88",null),(0,d.A)(O,"40ad8cc407db284a4237d2a2f3eb012ddf1050500b",null),(0,d.A)(P,"402e429d688574228a27b88515e0ac2b623fd0dc00",null),(0,d.A)(Q,"40d4835df2ba133a7be578a6d2ad50dba23e0a77be",null)}};
@@ -1,4 +0,0 @@
1
- "use strict";exports.id=8071,exports.ids=[7336,8071],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})]})}},18137:(a,b,c)=>{c.r(b),c.d(b,{"002fec2d26110a9739fa280853926b598d1a49bd44":()=>x,"003d1836382188603c5b40a8fd0c7735cec69e7922":()=>i.V,"004385fd0fd07982e82eeb3fc0a146319a0c4cddcf":()=>y.PG,"004ec7f252351e38a9c4baf338040eebc632b425d2":()=>j.f,"0051a52502b49e09ad171c2a611bc2418ed1c1a9dc":()=>e.PE,"005a226f73ea851bb80ec4f9fdf3aedb50fb7fbcd1":()=>e.y_,"00703229b811528142c40576d5c57f3467b87b9b61":()=>d.bt,"008945e940738840c2c3f8cf09a767e9dff2d1d34b":()=>k.dj,"00989a2c152ceb87b200f52f9d56d6a1006b3ae418":()=>j.O,"009be10f119924c7536924e7aa423be2a59d4a0f40":()=>y.eU,"00a3d5009503b1be561d7520e2b68ce0587a6740c0":()=>y.pM,"00bb81b2ee7b45ce9f2c558b5098b2acbe223d936e":()=>k.eg,"00cdd261029ea6d12df690e0b43e69818dbfeca142":()=>h.x7,"00ce8a19facd18b6c85993ebd6da347d63d0579dfa":()=>k.io,"00d423e1c54f47493dd9e26787f081501532d5754f":()=>d.xU,"00df7e6e08eaa29f35def8db35d7aefb6c9acb9ce2":()=>e.KO,"00e68579200e3df5cde1803035a93f8406aa41e3b0":()=>h.Mp,"00ee824db0a18ba9e4b113a979c27e43db14785003":()=>e.GK,"4004cb652b9955d22ac032162768b4e0579a46079b":()=>e.ey,"400cec94da616f674817927789cb26482bba22cfbd":()=>y.Kg,"4010339d35fee3f9209079d6bec35c010e1bbd23f5":()=>m.y,"4012df9fe60cdc771539fe5ed6ee353f894150d310":()=>g.L,"40180769811ee904607ab5b31116043b8c5f8be1a1":()=>i.E_,"401b5fdc3d8fb095679094c177536777e53f9c06fd":()=>y.lP,"4021ca58f6081eea2ecbd22b042f8eb7cb116a2fc3":()=>i.zS,"40242806df9ad69eb1c87ff62b4b2b34b3abad98dd":()=>e.jc,"40249f352fbd111bf83a85129254e9e18ef8ea9d64":()=>l.TX,"404005f581c185523c57ba4de7b6e623b00422d422":()=>l.IL,"4049b65fc61de5f15ea027c832048d695017a2cadc":()=>d.GW,"404aa55a36511316cdf338b098de663d429f9e7c1f":()=>k.De,"4055d44350781ccf3333fcaf2f5cb371866c797769":()=>i.F,"406201c1d173ad16581e88feb7fdf42ebbc95ef841":()=>d.VL,"407c52c4d4449ab61d90dcfa9cbf1ddd27160f6838":()=>e.RG,"4087e6e58cd4d57932fba61705c67f27c76e9dbebb":()=>d.Wu,"40972d5b822e66513389d5179af32bb5f9ab77ca88":()=>g.p,"409743adf88b2fc6a237494fd51038d3a4527b0203":()=>h.lR,"4098f6bc6c8bcf5e0704daf3a5a7bab7ffa82a196c":()=>d.H7,"40a6b782c452b9d7da8220c5630efb6277ba4077a1":()=>h.sE,"40a7dc12aa0d1b7b04c68ad7e482ba71fd189a44a7":()=>i.VJ,"40b05730806e4d6ca81c8b097bbe58fc8b2a6a9c19":()=>e.lJ,"40b85e5a61026f49480c36b5f71ce876512194b848":()=>e.S,"40dd7a9ba904e27f9eeac05cd7a750583e8de84545":()=>d.rd,"40e311db584b685c4692979c63d0c6e43ebfbb3776":()=>e.r7,"40eca98781164e186e8b92598018c0247eee2533ed":()=>l.q4,"40faf10ed1dd931e743694b6ab07acfffa9f1c5fff":()=>d.gg,"600d82e3d7031f663a63e6110ba9f565e1925bac77":()=>d.Fu,"602541726f950df2e46bd648c470b35caff4290401":()=>l.Jp,"6028f21157caf9e4ebf73d2a6dedcc869505c929ee":()=>w,"60301fe28cb811b08550b91045a0558179995780c0":()=>d.ME,"6043588d0686a7654ec852ff74b41a1990afb8ad5b":()=>l.bk,"60581df9364a1b92ebc0d853d7c78efa696792047f":()=>d.rm,"605cdb117d7636ebc2c1655a5624f369a8c5530ef3":()=>l.bV,"605ee4201fe65199f85db7180e840b038e2e8ffd10":()=>d.n4,"60641a6b24e31ba5d7c698743071a038d3366fc586":()=>e.AA,"6089bcc5361f39d22c01d6f92038ab1a71d519835f":()=>f.k,"60b6a569caae9899b156707b836ab2851f5218fa91":()=>e.q$,"60c1724f6f00fd2d33760b52f4dde31de692d1b203":()=>f.I,"60e6371f54999c9587eca32148839e4ce8eef9abc3":()=>e.LZ,"60e9b223d15847a611ea2b6fdf59614eceb4151ee9":()=>d.jw,"700e7dc42f9902ba897ac4e36d45bfd5032bd56211":()=>d._z,"706d88c745d18277356678742d9b6b2b19c4f6e86d":()=>e.M8});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,"6028f21157caf9e4ebf73d2a6dedcc869505c929ee",null),(0,n.A)(x,"002fec2d26110a9739fa280853926b598d1a49bd44",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;return"dev"===b?{ok:!1,context:b,command:c,backupDir:d,message:"Running from source — update with: git pull && pnpm install && pnpm build"}:"npx"===b?{ok:!1,context:b,command:c,backupDir:d,message:"npx runs an ephemeral copy — re-run: npx constellai@latest"}:"vps"===b?{ok:!1,context:b,command:"bash scripts/vps-update.sh",backupDir:d,needsRestart:!0,message:"On a VPS, update from a shell: `bash scripts/vps-update.sh` (or `npm install -g constellai@latest && sudo systemctl restart constella`). Your data in ~/.constella — DB, secrets, workspaces — is preserved; migrations run on the next boot."}: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,"400cec94da616f674817927789cb26482bba22cfbd",null),(0,d.A)(y,"401b5fdc3d8fb095679094c177536777e53f9c06fd",null),(0,d.A)(z,"00a3d5009503b1be561d7520e2b68ce0587a6740c0",null),(0,d.A)(A,"004385fd0fd07982e82eeb3fc0a146319a0c4cddcf",null),(0,d.A)(B,"009be10f119924c7536924e7aa423be2a59d4a0f40",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)}}};
@@ -1,12 +0,0 @@
1
- "use strict";exports.id=8102,exports.ids=[8102],exports.modules={33379:(a,b,c)=>{c.r(b),c.d(b,{"0028f961902c9e2476af137bbeb472cd7073047824":()=>d.Kd,"007022a76790c9702b4391280231b2e171ccb37259":()=>d.cT,"405c3175ae584fd80327c8ee43d0a247dd50e3c25b":()=>d.j0,"40834c7dee509b9fe3747f69a43078710b318bcdf5":()=>d.OD});var d=c(14565)},76402:(a,b,c)=>{c.r(b),c.d(b,{"003d1836382188603c5b40a8fd0c7735cec69e7922":()=>i.V,"004385fd0fd07982e82eeb3fc0a146319a0c4cddcf":()=>F.PG,"004ec7f252351e38a9c4baf338040eebc632b425d2":()=>j.f,"0051a52502b49e09ad171c2a611bc2418ed1c1a9dc":()=>e.PE,"005a226f73ea851bb80ec4f9fdf3aedb50fb7fbcd1":()=>e.y_,"00703229b811528142c40576d5c57f3467b87b9b61":()=>d.bt,"008945e940738840c2c3f8cf09a767e9dff2d1d34b":()=>k.dj,"00989a2c152ceb87b200f52f9d56d6a1006b3ae418":()=>j.O,"009be10f119924c7536924e7aa423be2a59d4a0f40":()=>F.eU,"00a3d5009503b1be561d7520e2b68ce0587a6740c0":()=>F.pM,"00ba14d2b5c3a4f458d7d2061711c1f5378dd90b92":()=>E,"00bb81b2ee7b45ce9f2c558b5098b2acbe223d936e":()=>k.eg,"00cdd261029ea6d12df690e0b43e69818dbfeca142":()=>h.x7,"00ce8a19facd18b6c85993ebd6da347d63d0579dfa":()=>k.io,"00d423e1c54f47493dd9e26787f081501532d5754f":()=>d.xU,"00df7e6e08eaa29f35def8db35d7aefb6c9acb9ce2":()=>e.KO,"00e68579200e3df5cde1803035a93f8406aa41e3b0":()=>h.Mp,"00ee824db0a18ba9e4b113a979c27e43db14785003":()=>e.GK,"4004cb652b9955d22ac032162768b4e0579a46079b":()=>e.ey,"400cec94da616f674817927789cb26482bba22cfbd":()=>F.Kg,"4010339d35fee3f9209079d6bec35c010e1bbd23f5":()=>m.y,"4012df9fe60cdc771539fe5ed6ee353f894150d310":()=>g.L,"401571128a88231061daa7ab3ca11b65af45af2ac4":()=>z,"40180769811ee904607ab5b31116043b8c5f8be1a1":()=>i.E_,"401b5fdc3d8fb095679094c177536777e53f9c06fd":()=>F.lP,"4021ca58f6081eea2ecbd22b042f8eb7cb116a2fc3":()=>i.zS,"40242806df9ad69eb1c87ff62b4b2b34b3abad98dd":()=>e.jc,"40249f352fbd111bf83a85129254e9e18ef8ea9d64":()=>l.TX,"404005f581c185523c57ba4de7b6e623b00422d422":()=>l.IL,"4049b65fc61de5f15ea027c832048d695017a2cadc":()=>d.GW,"404aa55a36511316cdf338b098de663d429f9e7c1f":()=>k.De,"4055d44350781ccf3333fcaf2f5cb371866c797769":()=>i.F,"406201c1d173ad16581e88feb7fdf42ebbc95ef841":()=>d.VL,"407c52c4d4449ab61d90dcfa9cbf1ddd27160f6838":()=>e.RG,"4087e6e58cd4d57932fba61705c67f27c76e9dbebb":()=>d.Wu,"40972d5b822e66513389d5179af32bb5f9ab77ca88":()=>g.p,"409743adf88b2fc6a237494fd51038d3a4527b0203":()=>h.lR,"4098f6bc6c8bcf5e0704daf3a5a7bab7ffa82a196c":()=>d.H7,"40a01c0931ff061f0f56472a225b21888d3cd32089":()=>D,"40a0e2ee30f5d3805b41c5e1f9061840788d507f84":()=>A,"40a6b782c452b9d7da8220c5630efb6277ba4077a1":()=>h.sE,"40a7dc12aa0d1b7b04c68ad7e482ba71fd189a44a7":()=>i.VJ,"40b05730806e4d6ca81c8b097bbe58fc8b2a6a9c19":()=>e.lJ,"40b85e5a61026f49480c36b5f71ce876512194b848":()=>e.S,"40ba9a6a07e06f168c8e61d97eab0b139c0826c41f":()=>C,"40dd7a9ba904e27f9eeac05cd7a750583e8de84545":()=>d.rd,"40e311db584b685c4692979c63d0c6e43ebfbb3776":()=>e.r7,"40eca98781164e186e8b92598018c0247eee2533ed":()=>l.q4,"40faf10ed1dd931e743694b6ab07acfffa9f1c5fff":()=>d.gg,"600d82e3d7031f663a63e6110ba9f565e1925bac77":()=>d.Fu,"602541726f950df2e46bd648c470b35caff4290401":()=>l.Jp,"60301fe28cb811b08550b91045a0558179995780c0":()=>d.ME,"6043588d0686a7654ec852ff74b41a1990afb8ad5b":()=>l.bk,"60581df9364a1b92ebc0d853d7c78efa696792047f":()=>d.rm,"605cdb117d7636ebc2c1655a5624f369a8c5530ef3":()=>l.bV,"605ee4201fe65199f85db7180e840b038e2e8ffd10":()=>d.n4,"60641a6b24e31ba5d7c698743071a038d3366fc586":()=>e.AA,"6064a3ad18a5503a5d815a28fe065218575a8c1c8b":()=>B,"6089bcc5361f39d22c01d6f92038ab1a71d519835f":()=>f.k,"609166d96c2602d5d974ddca3a1d7cc4aae8af0e36":()=>y,"60b6a569caae9899b156707b836ab2851f5218fa91":()=>e.q$,"60c1724f6f00fd2d33760b52f4dde31de692d1b203":()=>f.I,"60e6371f54999c9587eca32148839e4ce8eef9abc3":()=>e.LZ,"60e9b223d15847a611ea2b6fdf59614eceb4151ee9":()=>d.jw,"700e7dc42f9902ba897ac4e36d45bfd5032bd56211":()=>d._z,"706d88c745d18277356678742d9b6b2b19c4f6e86d":()=>e.M8});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(31371),r=c(65705),s=c(1890),t=c(53993),u=c(70149),v=c(56338),w=c(24701),x=c(83963);async function y(a,b){let{workspace:c}=await (0,t.nP)();await r.db.update(s.routine).set({enabled:b}).where((0,p.Uo)((0,p.eq)(s.routine.id,a),(0,p.eq)(s.routine.workspaceId,c.id))),(0,q.revalidatePath)("/routines")}async function z(a){let{workspace:b}=await (0,t.nP)(),c=a.name.trim();return c?(await r.db.insert(s.routine).values({id:(0,o.randomUUID)(),workspaceId:b.id,name:c.slice(0,120),cmd:(a.cmd??"").trim().slice(0,500),freq:(a.freq??"Daily").trim()||"Daily",agentId:a.agentId||null,enabled:!0}),(0,q.revalidatePath)("/routines"),{ok:!0}):{ok:!1,error:"Name the routine."}}async function A(a){let{workspace:b}=await (0,t.nP)();await r.db.delete(s.routine).where((0,p.Uo)((0,p.eq)(s.routine.id,a),(0,p.eq)(s.routine.workspaceId,b.id))),(0,q.revalidatePath)("/routines")}async function B(a,b){let{workspace:c}=await (0,t.nP)();await r.db.update(s.plugin).set({enabled:b}).where((0,p.Uo)((0,p.eq)(s.plugin.id,a),(0,p.eq)(s.plugin.workspaceId,c.id))),(0,q.revalidatePath)("/plugins")}async function C(a){let{workspace:b}=await (0,t.nP)();await r.db.delete(s.inboxItem).where((0,p.Uo)((0,p.eq)(s.inboxItem.id,a),(0,p.eq)(s.inboxItem.workspaceId,b.id))),(0,q.revalidatePath)("/inbox")}async function D(a){let{workspace:b}=await (0,t.nP)();await r.db.update(s.finding).set({status:"fixed"}).where((0,p.Uo)((0,p.eq)(s.finding.id,a),(0,p.eq)(s.finding.workspaceId,b.id))),await r.db.insert(s.notification).values({id:(0,o.randomUUID)(),workspaceId:b.id,kind:"security",text:"Finding patched by the Code Review Agent",detail:"A security finding was fixed and a report was filed."}),(0,q.revalidatePath)("/security")}async function E(){let{org:a,workspace:b}=await (0,t.nP)(),c=await r.db.select().from(s.agent).where((0,p.eq)(s.agent.workspaceId,b.id)),d=c.find(a=>"whitfield"===a.handle)??c.find(a=>/cyber|sec/i.test(a.role))??c[0],e=(0,o.randomUUID)();if(!d)return{ok:!1,count:0,runId:e,error:"no agent"};await r.db.update(s.agent).set({status:"working"}).where((0,p.eq)(s.agent.id,d.id)),await (0,f.I)(b.id,{runId:e,channel:"security",agentId:d.id,kind:"thinking",target:`${d.name} is reviewing the workspace…`});let g=await r.db.select({name:s.skill.name,instructions:s.skill.instructions,summary:s.skill.summary}).from(s.agentSkill).innerJoin(s.skill,(0,p.eq)(s.agentSkill.skillId,s.skill.id)).where((0,p.Uo)((0,p.eq)(s.agentSkill.agentId,d.id),(0,p.RV)(s.skill.name,["owasp-top-10","owasp-asvs","appsec-fundamentals","secrets-management","secure-auth-sessions","dependency-supply-chain","review-code-perf-security","code-review-practices"]))),h=g.length?`
2
- Apply these review skills (consult before judging):
3
- ${g.map(a=>`- ${a.name}: ${(a.instructions||a.summary).replace(/\s+/g," ").slice(0,300)}`).join("\n")}`:"",i=await (0,v.yY)(a.id,"security review: vulnerabilities, auth, secrets, prior findings and decisions",{agentHandle:d.handle,k:6}),j=i.context?`
4
- Project knowledge (prior findings, decisions, patterns — do not contradict):
5
- ${i.context}`:"",k=[`You are ${d.name}, the security reviewer. Review the code in the current workspace directory for vulnerabilities, secret/token exposure, permission & workspace-isolation issues, and risky patterns.`,h,j,"Output ONLY a JSON array (no prose, no markdown fences) of findings:",'[{"sev":"high"|"med"|"low","title":"short title","file":"relative/path","suggestion":"how to fix"}]',"If the workspace is clean or empty, output []. Do not modify any files."].filter(Boolean).join("\n"),l=(0,u.hW)(d.adapter,d.model),m=(0,u.qX)(d.adapter),n=await (0,u.p1)(k,{orgId:a.id,binary:l,model:m,timeoutMs:24e4},a=>{(0,f.I)(b.id,{runId:e,channel:"security",agentId:d.id,kind:a.kind,target:a.target,detail:a.detail})}),y=[],z=n.text.match(/\[[\s\S]*\]/);if(z)try{y=JSON.parse(z[0])}catch{y=[]}for(let a of y.slice(0,40)){let c="high"===a.sev||"low"===a.sev?a.sev:"med";await r.db.insert(s.finding).values({id:(0,o.randomUUID)(),workspaceId:b.id,sev:c,title:String(a.title??"Finding").slice(0,200),file:String(a.file??""),suggestion:String(a.suggestion??""),status:"open"})}y.length&&(0,v.ru)(a.id,y.slice(0,40).map(a=>({type:"vuln",title:String(a.title??"Finding").slice(0,120),summary:`${a.sev??"med"}: ${String(a.suggestion??"")}`.slice(0,1e3),paths:a.file?[String(a.file)]:void 0,agentHandle:d.handle,sourceKind:"review",sourceRef:`${String(a.file??"")}::${String(a.title??"")}`.slice(0,200)}))).catch(()=>{}),(n.usd>0||n.inputTokens+n.outputTokens>0)&&await r.db.insert(s.costEntry).values({id:(0,o.randomUUID)(),workspaceId:b.id,agentId:d.id,provider:n.binary,model:n.model??d.model,usd:n.usd,tokens:n.inputTokens+n.outputTokens,at:new Date}),await r.db.update(s.workspace).set({settings:{...b.settings??{},lastSecurityRun:Date.now()}}).where((0,p.eq)(s.workspace.id,b.id)),await r.db.update(s.agent).set({status:"idle"}).where((0,p.eq)(s.agent.id,d.id));let A=new Date().toISOString().replace("T"," ").slice(0,19),B=`# Security review
6
-
7
- _By @${d.handle} (${d.role}) \xb7 ${A}_
8
-
9
- `+(y.length?`Filed ${y.length} finding(s):
10
-
11
- `+y.slice(0,40).map(a=>`- **${a.sev??"med"}** ${a.title??"Finding"} — \`${a.file??"?"}\`
12
- - ${a.suggestion??""}`).join("\n")+"\n":"No findings — the workspace looks clean.\n");try{await (0,x.g)(a.id,"Reports/security-review.md",B)}catch(a){console.error("[review] security report write failed:",a)}return await (0,f.I)(b.id,{runId:e,channel:"security",agentId:d.id,kind:n.ok?"done":"error",target:n.ok?`${y.length} finding(s) filed`:(n.error??"review failed").slice(0,200)}),await (0,w.I)(b.id,{kind:"security",text:"Security sweep finished",detail:`${d.name} filed ${y.length} finding(s).`,agentId:d.id}),(0,q.revalidatePath)("/security"),(0,q.revalidatePath)("/","layout"),{ok:n.ok,count:y.length,runId:e,error:n.error}}(0,c(74252).D)([y,z,A,B,C,D,E]),(0,n.A)(y,"609166d96c2602d5d974ddca3a1d7cc4aae8af0e36",null),(0,n.A)(z,"401571128a88231061daa7ab3ca11b65af45af2ac4",null),(0,n.A)(A,"40a0e2ee30f5d3805b41c5e1f9061840788d507f84",null),(0,n.A)(B,"6064a3ad18a5503a5d815a28fe065218575a8c1c8b",null),(0,n.A)(C,"40ba9a6a07e06f168c8e61d97eab0b139c0826c41f",null),(0,n.A)(D,"40a01c0931ff061f0f56472a225b21888d3cd32089",null),(0,n.A)(E,"00ba14d2b5c3a4f458d7d2061711c1f5378dd90b92",null);var F=c(52932)},86450:(a,b,c)=>{c.d(b,{FixButton:()=>f,RunReviewButton:()=>g,Toggle:()=>e});var d=c(62060);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call Toggle() from the server but Toggle 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\\modules\\module-toggles.tsx","Toggle");(0,d.registerClientReference)(function(){throw Error("Attempted to call ResolveButton() from the server but ResolveButton 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\\modules\\module-toggles.tsx","ResolveButton");let f=(0,d.registerClientReference)(function(){throw Error("Attempted to call FixButton() from the server but FixButton 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\\modules\\module-toggles.tsx","FixButton"),g=(0,d.registerClientReference)(function(){throw Error("Attempted to call RunReviewButton() from the server but RunReviewButton 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\\modules\\module-toggles.tsx","RunReviewButton")},95140:(a,b,c)=>{c.d(b,{FixButton:()=>n,RunReviewButton:()=>o,Toggle:()=>m});var d=c(4374),e=c(74679),f=c(2910);let g=(0,f.createServerReference)("609166d96c2602d5d974ddca3a1d7cc4aae8af0e36",f.callServer,void 0,f.findSourceMapURL,"toggleRoutine"),h=(0,f.createServerReference)("6064a3ad18a5503a5d815a28fe065218575a8c1c8b",f.callServer,void 0,f.findSourceMapURL,"togglePlugin"),i=(0,f.createServerReference)("40a01c0931ff061f0f56472a225b21888d3cd32089",f.callServer,void 0,f.findSourceMapURL,"fixFinding"),j=(0,f.createServerReference)("00ba14d2b5c3a4f458d7d2061711c1f5378dd90b92",f.callServer,void 0,f.findSourceMapURL,"runReview");var k=c(43526),l=c(31819);function m({kind:a,id:b,on:c}){let[f,i]=(0,e.useTransition)(),j="routine"===a?g:h;return(0,d.jsx)("div",{className:"toggle"+(c?" on":""),"aria-disabled":f,role:"switch","aria-checked":c,onClick:()=>!f&&i(()=>j(b,!c))})}function n({id:a}){let b=(0,l.k)(),[c,f]=(0,e.useTransition)();return(0,d.jsxs)("button",{className:"sc2-btn",disabled:c,onClick:()=>f(()=>i(a)),children:[(0,d.jsx)(k.I,{name:"bot",size:12})," ",b("security.letAgentFix")]})}function o(){let a=(0,l.k)(),[b,c]=(0,e.useTransition)();return(0,d.jsxs)("button",{className:"btn-accent",disabled:b,onClick:()=>{window.dispatchEvent(new CustomEvent("constella:agent-run",{detail:{channel:"security"}})),c(async()=>{await j()})},children:[(0,d.jsx)(k.I,{name:"refresh",size:14,className:b?"sync-spin":""})," ",a(b?"security.reviewing":"security.runReview")]})}}};
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1068],{505:(e,n,a)=>{a.d(n,{d:()=>r});var s=a(7814);let r=(0,s.createServerReference)("4067ca80a5da742c05fbb50e0a730ae4a24a79b000",s.callServer,void 0,s.findSourceMapURL,"rejectIssue")},1068:(e,n,a)=>{a.d(n,{IssueApprove:()=>y,PlanGate:()=>k,PlanGateLive:()=>b,Run247Button:()=>S,p:()=>N});var s=a(5076),r=a(8488),t=a(9860),l=a(8576),i=a(5629),c=a(2978),d=a(7814);let o=(0,d.createServerReference)("40a5db20e92cac0094f3ce6250a17ec8d42fc4d887",d.callServer,void 0,d.findSourceMapURL,"generatePlan"),p=(0,d.createServerReference)("005cb5bb28bc19f2d5ed503834ad00dc741d78a51d",d.callServer,void 0,d.findSourceMapURL,"requestPlanChanges");var u=a(5342),h=a(9701),g=a(6011),v=a(1774),m=a(505);let f=(0,d.createServerReference)("4096425e44cce93bbec45707a6319457d2f7f2d3cb",d.callServer,void 0,d.findSourceMapURL,"setAuto247"),x=(0,d.createServerReference)("0042e68aad222037eb8d73ca8b3ce5329de2cd3485",d.callServer,void 0,d.findSourceMapURL,"skipDesignGate");function j(e,n){window.dispatchEvent(new CustomEvent("constella:open-dm",{detail:{handle:e,text:n}}))}function b({planning:e,planSince:n,designRecommended:a=!1,designPending:d=!1}){let p=(0,i.k)(),[u,h]=(0,r.useTransition)(),g=(0,t.useRouter)(),[v,m]=(0,r.useState)(!1),[f,j]=(0,r.useState)(""),k=e||v;function N(){j(""),m(!0),window.dispatchEvent(new CustomEvent("constella:agent-run",{detail:{channel:"planner"}})),h(async()=>{try{let e=await o();(!e?.ok||!1===e.started)&&(m(!1),e?.error&&j(e.error)),g.refresh()}catch{m(!1),j(p("planner.gate.staleTab"))}})}return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(c.AgentRunLive,{channel:"planner",resume:e,sinceSeq:e?n-1:0,onFinish:()=>m(!1)}),k?(0,s.jsxs)("div",{className:"plan-gate",children:[(0,s.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,s.jsx)("div",{className:"pg-ic",children:(0,s.jsx)(l.I,{name:"bot",size:20})}),(0,s.jsxs)("div",{className:"pg-main",children:[(0,s.jsx)("div",{className:"pg-t",children:p("planner.gate.drafting.t")}),(0,s.jsx)("div",{className:"pg-d",children:p("planner.gate.drafting.d")})]})]}):a||d?(0,s.jsxs)("div",{className:"plan-gate",style:{borderColor:"rgba(99,102,241,.45)"},children:[(0,s.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0,style:{background:"#6366f1"}}),(0,s.jsx)("div",{className:"pg-ic",style:{background:"rgba(99,102,241,.16)",color:"#6366f1"},children:(0,s.jsx)(l.I,{name:"skill",size:20})}),(0,s.jsxs)("div",{className:"pg-main",children:[(0,s.jsx)("div",{className:"pg-t",children:d?"Design step pending":"Recommended: prototype the design first"}),(0,s.jsx)("div",{className:"pg-d",children:d?"Ada is holding the plan on the design step. Open the Design module, build & approve the prototype with Grace, then Send to execution — Ada turns the approved design into specs & issues (zero drift).":"This is a frontend product. Prototype & approve the UI in the Design module before generating the plan — Grace turns the brief into a real visual reference, so the specs are precise and you avoid rework."}),f&&(0,s.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:f})]}),(0,s.jsxs)("div",{className:"pg-actions",children:[(0,s.jsxs)("button",{className:"btn-accent",onClick:()=>g.push("/design"),children:[(0,s.jsx)(l.I,{name:"skill",size:14})," Open Design"]}),(0,s.jsxs)("button",{className:"btn-ghost",disabled:u,onClick:function(){h(async()=>{try{await x()}catch{}}),N()},style:{fontSize:12},children:[(0,s.jsx)(l.I,{name:u?"refresh":"bot",size:13,className:u?"sync-spin":""})," ",u?p("planner.gate.analyzing"):"Skip design & plan anyway"]})]})]}):(0,s.jsxs)("div",{className:"plan-gate",children:[(0,s.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,s.jsx)("div",{className:"pg-ic",children:(0,s.jsx)(l.I,{name:"bot",size:20})}),(0,s.jsxs)("div",{className:"pg-main",children:[(0,s.jsx)("div",{className:"pg-t",children:p("planner.gate.noPlan.t")}),(0,s.jsx)("div",{className:"pg-d",children:p("planner.gate.noPlan.d")}),f&&(0,s.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:f})]}),(0,s.jsxs)("div",{className:"pg-actions",children:[(0,s.jsxs)("div",{className:"plan-hint",children:[(0,s.jsx)("div",{className:"plan-hint-t",children:p("planner.gate.hint.t")}),(0,s.jsx)("div",{className:"plan-hint-d",children:p("planner.gate.hint.d")})]}),(0,s.jsxs)("button",{className:"btn-accent",disabled:u,onClick:N,children:[(0,s.jsx)(l.I,{name:u?"refresh":"bot",size:14,className:u?"sync-spin":""})," ",u?p("planner.gate.analyzing"):p("planner.gate.generate")]})]})]})]})}function k({specs:e,total:n}){let a=(0,i.k)(),[t,c]=(0,r.useTransition)();return(0,s.jsxs)("div",{className:"plan-gate",children:[(0,s.jsx)("div",{className:"pg-ic",children:(0,s.jsx)(l.I,{name:"bot",size:20})}),(0,s.jsxs)("div",{className:"pg-main",children:[(0,s.jsx)("div",{className:"pg-t",children:a("planner.gate.ready.t")}),(0,s.jsx)("div",{className:"pg-d",children:a("planner.gate.ready.d",{specs:e,total:n})})]}),(0,s.jsxs)("div",{className:"pg-actions",children:[(0,s.jsxs)("button",{className:"btn-ghost",disabled:t,onClick:()=>c(async()=>{await p(),j("ada",a("planner.gate.rejectPlanDm"))}),children:[(0,s.jsx)(l.I,{name:"refresh",size:13})," ",a("planner.gate.requestChanges")]}),(0,s.jsxs)("button",{className:"btn-accent",disabled:t,onClick:()=>c(()=>(0,u.P)()),children:[(0,s.jsx)(l.I,{name:"check",size:14})," ",a("planner.gate.approvePlan")]})]})]})}function N({specId:e,specKey:n,approved:a}){let t=(0,i.k)(),[c,d]=(0,r.useTransition)();return a?(0,s.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,s.jsx)(l.I,{name:"check",size:11})," ",t("planner.approved")]}):(0,s.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,s.jsxs)("button",{className:"sc2-btn",disabled:c,onClick:()=>d(()=>(0,h.B)(e)),children:[(0,s.jsx)(l.I,{name:"check",size:11})," ",t("planner.approve")]}),(0,s.jsxs)("button",{className:"sc2-btn danger",disabled:c,onClick:()=>d(async()=>{j((await (0,g.J)(e)).handle,t("planner.rejectItemDm",{key:n}))}),children:[(0,s.jsx)(l.I,{name:"refresh",size:11})," ",t("planner.reject")]})]})}function y({issueId:e,issueKey:n,approved:a}){let t=(0,i.k)(),[c,d]=(0,r.useTransition)();return a?(0,s.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,s.jsx)(l.I,{name:"check",size:11})," ",t("planner.approved")]}):(0,s.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,s.jsxs)("button",{className:"sc2-btn",disabled:c,onClick:()=>d(()=>(0,v.t)(e)),children:[(0,s.jsx)(l.I,{name:"check",size:11})," ",t("planner.approve")]}),(0,s.jsxs)("button",{className:"sc2-btn danger",disabled:c,onClick:()=>d(async()=>{j((await (0,m.d)(e)).handle,t("planner.rejectItemDm",{key:n}))}),children:[(0,s.jsx)(l.I,{name:"refresh",size:11})," ",t("planner.reject")]})]})}function S({auto:e,approved:n,state:a}){let t=(0,i.k)(),[c,d]=(0,r.useTransition)(),o=t(c?e?"planner.run247.pausing":"planner.run247.starting":"waiting-approval"===a?"planner.run247.approveToRun":"all-done"===a?"planner.run247.allDone":e?"planner.run247.pause":"planner.run247.run"),p="blocked"===a?t("planner.run247.blockedTip"):void 0,u="off"===a&&!c;return(0,s.jsxs)("button",{className:"btn-"+(e?"ghost":"accent")+(u?" run-attn":""),disabled:!n||"all-done"===a||c,title:p,onClick:()=>d(()=>f(!e)),children:[(0,s.jsx)(l.I,{name:c?"refresh":"waiting-approval"===a?"bot":"all-done"===a?"check":e?"close":"play",size:14,className:c?"sync-spin":""})," ",o,("running"===a||u)&&(0,s.jsx)("span",{className:"dotpulse",style:{marginLeft:6}})]})}},1774:(e,n,a)=>{a.d(n,{t:()=>r});var s=a(7814);let r=(0,s.createServerReference)("40aa8d10fe1fc7b3d00fb58cf6686d7e66a57a82de",s.callServer,void 0,s.findSourceMapURL,"approveIssue")},2978:(e,n,a)=>{a.d(n,{AgentRunLive:()=>o});var s=a(5076),r=a(8488),t=a(9860),l=a(8576),i=a(9910),c=a(5629);let d=["read","create","edit","run","search","thinking","done","error"];function o({channel:e,resume:n=!1,sinceSeq:a=0,onFinish:p}){let u=(0,c.k)(),h=(0,t.useRouter)(),[g,v]=(0,r.useState)(n),[m,f]=(0,r.useState)([]),[x,j]=(0,r.useState)(0),b=(0,r.useRef)(n?a:0),k=(0,r.useRef)(!1),N=(0,r.useRef)(0);if((0,r.useEffect)(()=>{n&&(b.current=a,k.current=!1,N.current=a>0?a:Date.now(),f([]),j(Math.max(0,Math.floor((Date.now()-N.current)/1e3))),v(!0))},[n,a]),(0,r.useEffect)(()=>{function n(n){let a=n.detail;a?.channel===e&&(b.current=Date.now()-1,k.current=!1,N.current=Date.now(),f([]),j(0),v(!0))}return window.addEventListener("constella:agent-run",n),()=>window.removeEventListener("constella:agent-run",n)},[e]),(0,r.useEffect)(()=>{if(!g)return;N.current||(N.current=Date.now());let e=setInterval(()=>j(Math.floor((Date.now()-N.current)/1e3)),1e3);return()=>clearInterval(e)},[g]),(0,r.useEffect)(()=>{if(!g)return;let n=!0,a=Date.now();async function s(){let s=await (0,i.k)(e,b.current);n&&(s.length&&(b.current=Math.max(b.current,...s.map(e=>e.seq)),f(e=>{let n=new Set(e.map(e=>e.id));return[...e,...s.filter(e=>!n.has(e.id))]}),s.some(e=>"done"===e.kind||"error"===e.kind)&&(k.current||(k.current=!0,h.refresh(),p?.()),setTimeout(()=>{n&&v(!1)},2500))),Date.now()-a>96e4&&v(!1))}s();let r=setInterval(s,700);return()=>{n=!1,clearInterval(r)}},[g,e,h,p]),!g&&0===m.length)return null;let y=function(e){let n=[];for(let a of e)if("text"===a.kind){let e=(a.detail||"").replace(/\s+/g," ").trim();if(!e)continue;let s=n[n.length-1];s&&"text"===s.kind?s.content=(s.content+" "+e).slice(-600):n.push({id:a.id,kind:"text",content:e})}else if("thinking"===a.kind){let e=(a.detail||a.target||"").replace(/\s+/g," ").trim();e&&n.push({id:a.id,kind:"thinking",content:e})}else n.push({id:a.id,kind:a.kind,content:function(e){if(!e)return"";let n=e.split(/[\\/]/);return n.length>1?n.slice(-2).join("/"):e}(a.target)||a.detail||""});return n}(m),S=y.slice(-5),w=y.length-S.length,I=m.some(e=>"done"===e.kind||"error"===e.kind),R=m.some(e=>"error"===e.kind),z=String(Math.floor(x/60)).padStart(2,"0"),C=String(x%60).padStart(2,"0");return(0,s.jsxs)("div",{className:"card live-stream",style:{marginBottom:16,borderColor:R?"var(--sx-keyword)":"var(--accent)"},children:[(0,s.jsxs)("div",{className:"set-desc",style:{marginBottom:8,display:"flex",alignItems:"center",gap:7},children:[g&&!I?(0,s.jsx)("span",{className:"dotpulse"}):(0,s.jsx)(l.I,{name:R?"close":"check",size:13,style:{color:R?"var(--sx-keyword)":"var(--sx-string)"}}),g&&!I?u("agent.run.working"):R?u("agent.run.failed"):u("agent.run.finished"),y.length>0&&(0,s.jsxs)("span",{style:{color:"var(--text-faint)"},children:["\xb7 ",u(1===y.length?"agent.run.steps.one":"agent.run.steps.other",{n:y.length})]}),(0,s.jsxs)("span",{className:"live-elapsed",style:{marginLeft:"auto"},children:[z,":",C]})]}),0===S.length?(0,s.jsxs)("div",{className:"muted",style:{fontSize:12,display:"flex",alignItems:"center",gap:7},children:[(0,s.jsx)("span",{className:"sync-spin",children:(0,s.jsx)(l.I,{name:"refresh",size:12})})," ",u("agent.run.reading")]}):(0,s.jsxs)(s.Fragment,{children:[w>0&&(0,s.jsx)("div",{className:"live-more",children:u(1===w?"agent.run.earlier.one":"agent.run.earlier.other",{n:w})}),(0,s.jsx)("div",{className:"live-stream-lines",children:S.map(e=>(0,s.jsxs)("div",{className:"live-line "+e.kind,children:["text"!==e.kind&&(0,s.jsx)("span",{className:"ll-k",children:d.includes(e.kind)?u(`agent.verb.${e.kind}`):e.kind}),(0,s.jsxs)("span",{className:"ll-c",children:[e.content,!I&&e===S[S.length-1]&&"text"===e.kind&&(0,s.jsx)("span",{className:"ll-caret"})]})]},e.id))})]})]})}},5342:(e,n,a)=>{a.d(n,{P:()=>r});var s=a(7814);let r=(0,s.createServerReference)("003febf4e7267ca98f9eb9b6dc436d9a4e2b65e7ca",s.callServer,void 0,s.findSourceMapURL,"approvePlan")},6011:(e,n,a)=>{a.d(n,{J:()=>r});var s=a(7814);let r=(0,s.createServerReference)("409c5ecd26ccaec10a2e66bce9e702bf46d8cc21e0",s.callServer,void 0,s.findSourceMapURL,"rejectSpec")},9701:(e,n,a)=>{a.d(n,{B:()=>r});var s=a(7814);let r=(0,s.createServerReference)("40278c98b65eb6a42ba19ed36299f6ada32c9eea34",s.callServer,void 0,s.findSourceMapURL,"approveSpec")},9910:(e,n,a)=>{a.d(n,{k:()=>r});var s=a(7814);let r=(0,s.createServerReference)("6089bcc5361f39d22c01d6f92038ab1a71d519835f",s.callServer,void 0,s.findSourceMapURL,"getEvents")}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4991],{3014:(e,t,r)=>{r.r(t),r.d(t,{AnimToggle:()=>l});var s=r(5076),h=r(8488),c=r(9860),x=r(8576),a=r(5629),n=r(7814);let i=(0,n.createServerReference)("007022a76790c9702b4391280231b2e171ccb37259",n.callServer,void 0,n.findSourceMapURL,"toggleAnim");function l({labeled:e}){let t=(0,a.k)(),r=(0,c.useRouter)(),[n,d]=(0,h.useState)(!0),[j,M]=(0,h.useTransition)();(0,h.useEffect)(()=>{d(!/(?:^|;\s*)cn-anim=off/.test(document.cookie))},[]);let o=()=>M(async()=>{await i(),d(e=>!e),r.refresh()});return e?(0,s.jsxs)("button",{className:"btn-ghost",onClick:o,disabled:j,type:"button",style:{gap:8},children:[(0,s.jsx)(x.I,{name:"pulse",size:14,style:{opacity:n?1:.4}})," ",t("chrome.anim.label",{state:t(n?"common.on":"common.off")})]}):(0,s.jsx)("button",{className:"top-btn",onClick:o,disabled:j,type:"button",title:t(n?"chrome.anim.titleOn":"chrome.anim.titleOff"),children:(0,s.jsx)(x.I,{name:"pulse",size:17,style:{opacity:n?1:.4}})})}},5629:(e,t,r)=>{r.d(t,{LangProvider:()=>a,k:()=>n});var s=r(5076),h=r(8488),c=r(3219);let x=(0,h.createContext)("en");function a({lang:e,children:t}){return(0,s.jsx)(x.Provider,{value:e,children:t})}function n(){let e=(0,h.useContext)(x);return(t,r)=>(0,c.t)(e,t,r)}},8576:(e,t,r)=>{r.d(t,{I:()=>c});var s=r(5076);let h={files:(0,s.jsx)("path",{d:"M3 3.5h5l1.5 2H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4.5a1 1 0 0 1 1-1z"}),search:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"7",cy:"7",r:"4.2"}),(0,s.jsx)("path",{d:"M10.2 10.2 14 14"})]}),git:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"4",cy:"4",r:"1.8"}),(0,s.jsx)("circle",{cx:"4",cy:"12",r:"1.8"}),(0,s.jsx)("circle",{cx:"12",cy:"9.5",r:"1.8"}),(0,s.jsx)("path",{d:"M4 5.8v4.4M5.8 4H9a2 2 0 0 1 2 2v1.6"})]}),debug:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"8",cy:"8.5",r:"3.5"}),(0,s.jsx)("path",{d:"M8 5V3M4.5 8.5H2m12 0h-2.5M4.8 11.8 3.4 13M11.2 11.8l1.4 1.2M5.2 5 3.8 3.6M10.8 5l1.4-1.4"})]}),ext:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2.5",y:"2.5",width:"4.5",height:"4.5",rx:"1"}),(0,s.jsx)("rect",{x:"9",y:"2.5",width:"4.5",height:"4.5",rx:"1"}),(0,s.jsx)("rect",{x:"2.5",y:"9",width:"4.5",height:"4.5",rx:"1"}),(0,s.jsx)("path",{d:"M9 11.2h4.5M11.2 9v4.5"})]}),settings:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"8",cy:"8",r:"2.2"}),(0,s.jsx)("path",{d:"M8 1.5v2M8 12.5v2M14.5 8h-2M3.5 8h-2M12.6 3.4l-1.4 1.4M4.8 11.2l-1.4 1.4M12.6 12.6l-1.4-1.4M4.8 4.8 3.4 3.4"})]}),account:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"8",cy:"5.5",r:"2.8"}),(0,s.jsx)("path",{d:"M2.8 14c0-2.8 2.3-4.5 5.2-4.5s5.2 1.7 5.2 4.5"})]}),chevronRight:(0,s.jsx)("path",{d:"M6 4l4 4-4 4"}),chevronDown:(0,s.jsx)("path",{d:"M4 6l4 4 4-4"}),chevronUp:(0,s.jsx)("path",{d:"M4 10l4-4 4 4"}),close:(0,s.jsx)("path",{d:"M4 4l8 8M12 4l-8 8"}),add:(0,s.jsx)("path",{d:"M8 3v10M3 8h10"}),newFile:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M9 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6L9 2z"}),(0,s.jsx)("path",{d:"M9 2v4h4M8 8v4M6 10h4"})]}),newFolder:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M2 5.5a1 1 0 0 1 1-1h3l1.2 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5.5z"}),(0,s.jsx)("path",{d:"M8 8v3M6.5 9.5h3"})]}),refresh:(0,s.jsx)("path",{d:"M13 8a5 5 0 1 1-1.5-3.5M13 2.5V5h-2.5"}),collapse:(0,s.jsx)("path",{d:"M3 5h6M3 8h6M3 11h6M12 6l-1.5 1.5L12 9"}),more:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"3.5",cy:"8",r:"1"}),(0,s.jsx)("circle",{cx:"8",cy:"8",r:"1"}),(0,s.jsx)("circle",{cx:"12.5",cy:"8",r:"1"})]}),split:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1"}),(0,s.jsx)("path",{d:"M8 3v10"})]}),terminal:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1.5"}),(0,s.jsx)("path",{d:"M4.5 6.5 6.5 8l-2 1.5M8 10h3.5"})]}),panelBottom:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1.5"}),(0,s.jsx)("path",{d:"M2 10h12"})]}),sidebarIcon:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1.5"}),(0,s.jsx)("path",{d:"M6 3v10"})]}),bell:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M8 2a3.5 3.5 0 0 0-3.5 3.5c0 3-1.3 4-1.3 4h9.6s-1.3-1-1.3-4A3.5 3.5 0 0 0 8 2z"}),(0,s.jsx)("path",{d:"M6.7 12a1.4 1.4 0 0 0 2.6 0"})]}),check:(0,s.jsx)("path",{d:"M3 8.5 6.5 12 13 4"}),error:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"8",cy:"8",r:"6"}),(0,s.jsx)("path",{d:"M8 5v4M8 11h.01"})]}),warn:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M8 2.5 14.5 13.5h-13z"}),(0,s.jsx)("path",{d:"M8 7v3M8 12h.01"})]}),branch:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"4",cy:"4",r:"1.6"}),(0,s.jsx)("circle",{cx:"4",cy:"12",r:"1.6"}),(0,s.jsx)("circle",{cx:"12",cy:"9",r:"1.6"}),(0,s.jsx)("path",{d:"M4 5.6v4.8M5.6 4H9a1.8 1.8 0 0 1 1.8 1.8v1.6"})]}),sync:(0,s.jsx)("path",{d:"M3 6a5 5 0 0 1 8.5-2M13 10a5 5 0 0 1-8.5 2M11.5 2.5V4h-1.5M4.5 13.5V12h1.5"}),command:(0,s.jsx)("path",{d:"M5.5 3.5A1.5 1.5 0 1 1 4 5h8a1.5 1.5 0 1 1-1.5 1.5v3A1.5 1.5 0 1 1 12 11H4a1.5 1.5 0 1 1 1.5-1.5v-3z"}),goto:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M3 8h8M7.5 4.5 11 8l-3.5 3.5"}),(0,s.jsx)("path",{d:"M13 3v10"})]}),sun:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"8",cy:"8",r:"3"}),(0,s.jsx)("path",{d:"M8 1.5v1.5M8 13v1.5M14.5 8H13M3 8H1.5M12.6 3.4l-1 1M4.4 11.6l-1 1M12.6 12.6l-1-1M4.4 4.4l-1-1"})]}),moon:(0,s.jsx)("path",{d:"M13 9.2A5.5 5.5 0 0 1 6.8 3 5.5 5.5 0 1 0 13 9.2z"}),play:(0,s.jsx)("path",{d:"M5 3.5v9l7-4.5z"}),trash:(0,s.jsx)("path",{d:"M3.5 4.5h9M6 4.5V3h4v1.5M5 4.5l.5 8.5h5l.5-8.5"}),dot:(0,s.jsx)("circle",{cx:"8",cy:"8",r:"3"}),fileTs:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M9 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6L9 2z"}),(0,s.jsx)("path",{d:"M9 2v4h4"})]}),arrowUp:(0,s.jsx)("path",{d:"M8 13V3M4 7l4-4 4 4"}),arrowDown:(0,s.jsx)("path",{d:"M8 3v10M4 9l4 4 4-4"}),agents:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"5.5",cy:"6",r:"2.2"}),(0,s.jsx)("circle",{cx:"11",cy:"6.5",r:"1.8"}),(0,s.jsx)("path",{d:"M2 13c0-2 1.6-3.2 3.5-3.2S9 11 9 13M9.5 12.5c.2-1.6 1.3-2.5 2.8-2.5 1.3 0 2.4.8 2.4 2.3"})]}),bot:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"3",y:"5.5",width:"10",height:"7",rx:"2"}),(0,s.jsx)("path",{d:"M8 3v2.5M5.8 9h.01M10.2 9h.01M6 12h4"}),(0,s.jsx)("circle",{cx:"8",cy:"3",r:"1"})]}),send:(0,s.jsx)("path",{d:"M14 2 7 9M14 2l-4.5 12-2.5-5L2 6.5z"}),at:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"8",cy:"8",r:"3"}),(0,s.jsx)("path",{d:"M11 8v1.2a1.8 1.8 0 0 0 3.5.6A6.5 6.5 0 1 0 11 13.2"})]}),chevronLeft:(0,s.jsx)("path",{d:"M10 4 6 8l4 4"}),dockRight:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1.5"}),(0,s.jsx)("path",{d:"M10 3v10"}),(0,s.jsx)("rect",{x:"10.5",y:"3.5",width:"3",height:"9",rx:"1",fill:"currentColor",stroke:"none",opacity:"0.25"})]}),dockLeft:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1.5"}),(0,s.jsx)("path",{d:"M6 3v10"}),(0,s.jsx)("rect",{x:"2.5",y:"3.5",width:"3",height:"9",rx:"1",fill:"currentColor",stroke:"none",opacity:"0.25"})]}),chat:(0,s.jsx)("path",{d:"M3 4.5h10a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H7l-3 2.5V11.5H3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z"}),grid:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2.5",y:"2.5",width:"4.5",height:"4.5",rx:"1"}),(0,s.jsx)("rect",{x:"9",y:"2.5",width:"4.5",height:"4.5",rx:"1"}),(0,s.jsx)("rect",{x:"2.5",y:"9",width:"4.5",height:"4.5",rx:"1"}),(0,s.jsx)("rect",{x:"9",y:"9",width:"4.5",height:"4.5",rx:"1"})]}),inbox:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M2 9h3l1 2h4l1-2h3"}),(0,s.jsx)("path",{d:"M2.5 9 4 3.5h8L13.5 9v3.5a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1z"})]}),calendar:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2.5",y:"3.5",width:"11",height:"10",rx:"1.5"}),(0,s.jsx)("path",{d:"M2.5 6.5h11M5.5 2v3M10.5 2v3"})]}),repeat:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M3 6a4 4 0 0 1 7-2.5L12 5M13 10a4 4 0 0 1-7 2.5L4 11"}),(0,s.jsx)("path",{d:"M12 2v3H9M4 14v-3h3"})]}),doc:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M9 2H4.5a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V5.5L9 2z"}),(0,s.jsx)("path",{d:"M9 2v3.5h3.5M6 8.5h4M6 11h4"})]}),skill:(0,s.jsx)("path",{d:"M8 2.5l1.4 3.1 3.4.4-2.5 2.3.7 3.3L8 9.9 5 11.6l.7-3.3L3.2 6l3.4-.4z"}),pulse:(0,s.jsx)("path",{d:"M2 8h3l1.5-4 2.5 8 1.5-4H14"}),coins:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("ellipse",{cx:"6",cy:"4.5",rx:"3.5",ry:"1.8"}),(0,s.jsx)("path",{d:"M2.5 4.5v3c0 1 1.6 1.8 3.5 1.8s3.5-.8 3.5-1.8v-3"}),(0,s.jsx)("ellipse",{cx:"10",cy:"9.5",rx:"3.5",ry:"1.8"}),(0,s.jsx)("path",{d:"M6.5 9.5c.4.9 1.8 1.5 3.5 1.5s3.5-.8 3.5-1.8v-1.2"})]}),cpu:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"4",y:"4",width:"8",height:"8",rx:"1.5"}),(0,s.jsx)("rect",{x:"6.3",y:"6.3",width:"3.4",height:"3.4",rx:".5"}),(0,s.jsx)("path",{d:"M6 2v2M10 2v2M6 12v2M10 12v2M2 6h2M2 10h2M12 6h2M12 10h2"})]}),shield:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:"M8 2 3 4v4c0 3 2.2 5 5 6 2.8-1 5-3 5-6V4z"}),(0,s.jsx)("path",{d:"M5.8 8 7.3 9.5 10.4 6.3"})]}),target:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,s.jsx)("circle",{cx:"8",cy:"8",r:"2.4"})]}),selectParent:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("rect",{x:"2",y:"2.5",width:"12",height:"11",rx:"1.5"}),(0,s.jsx)("path",{d:"M8 11V6.5M5.5 9 8 6.5l2.5 2.5"})]})};function c({name:e,size:t=16,className:r="",strokeWidth:x=1.4,style:a}){let n=h[e];return n?(0,s.jsx)("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:x,strokeLinecap:"round",strokeLinejoin:"round",className:r,style:a,children:"play"===e||"dot"===e?(0,s.jsx)("g",{fill:"currentColor",stroke:"none",children:n}):n}):null}},8718:(e,t,r)=>{r.d(t,{LangSwitch:()=>n});var s=r(5076),h=r(8488),c=r(9860),x=r(7814);let a=(0,x.createServerReference)("405c3175ae584fd80327c8ee43d0a247dd50e3c25b",x.callServer,void 0,x.findSourceMapURL,"setLang");function n(){let e=(0,c.useRouter)(),[t,r]=(0,h.useState)("en"),[x,n]=(0,h.useTransition)();return(0,h.useEffect)(()=>{r(/(?:^|;\s*)cn-lang=pt/.test(document.cookie)?"pt":"en")},[]),(0,s.jsx)("div",{style:{display:"inline-flex",border:"1px solid var(--border)",borderRadius:7,overflow:"hidden"},children:["en","pt"].map(h=>(0,s.jsx)("button",{type:"button",disabled:x,onClick:()=>{h===t||x||n(async()=>{await a(h),r(h),e.refresh()})},title:"en"===h?"English":"Portugu\xeas (BR)",style:{padding:"3px 8px",fontSize:11,fontWeight:600,cursor:"pointer",border:"none",background:t===h?"var(--accent)":"transparent",color:t===h?"var(--accent-fg)":"var(--text-dim)"},children:h.toUpperCase()},h))})}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6061],{401:(e,t,a)=>{a.d(t,{_:()=>c});var s=a(7814);let c=(0,s.createServerReference)("700e7dc42f9902ba897ac4e36d45bfd5032bd56211",s.callServer,void 0,s.findSourceMapURL,"sendMessage")},891:(e,t,a)=>{a.d(t,{m:()=>n});var s=a(5076);let c={working:{c:"var(--sx-string)",pulse:!0,label:"working"},review:{c:"#e0a44e",label:"review"},blocked:{c:"#e8688f",label:"blocked"},idle:{c:"var(--text-faint)",label:"idle"}};function n({status:e,label:t=!1,size:a=8}){let l=c[e]??c.idle;return(0,s.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5},title:l.label,children:[l.pulse?(0,s.jsx)("span",{className:"dotpulse"}):(0,s.jsx)("span",{style:{width:a,height:a,borderRadius:"50%",background:l.c,display:"inline-block",flex:`0 0 ${a}px`}}),t&&(0,s.jsx)("span",{style:{fontSize:11,color:l.c,fontWeight:600},children:l.label})]})}},1932:(e,t,a)=>{a.d(t,{n:()=>c});var s=a(7814);let c=(0,s.createServerReference)("605ee4201fe65199f85db7180e840b038e2e8ffd10",s.callServer,void 0,s.findSourceMapURL,"agentRespond")},2952:(e,t,a)=>{a.d(t,{K:()=>c});var s=a(7814);let c=(0,s.createServerReference)("00df7e6e08eaa29f35def8db35d7aefb6c9acb9ce2",s.callServer,void 0,s.findSourceMapURL,"disconnectTelegram")},4840:(e,t,a)=>{a.d(t,{G:()=>c});var s=a(7814);let c=(0,s.createServerReference)("00ee824db0a18ba9e4b113a979c27e43db14785003",s.callServer,void 0,s.findSourceMapURL,"telegramStatus")},6061:(e,t,a)=>{a.d(t,{uG:()=>U,QE:()=>T,CZ:()=>A});var s=a(5076),c=a(8488),n=a(7814);let l=(0,n.createServerReference)("00d423e1c54f47493dd9e26787f081501532d5754f",n.callServer,void 0,n.findSourceMapURL,"listChatRefs");var r=a(8e3);let i=(0,n.createServerReference)("4049b65fc61de5f15ea027c832048d695017a2cadc",n.callServer,void 0,n.findSourceMapURL,"listSessions"),o=(0,n.createServerReference)("60e9b223d15847a611ea2b6fdf59614eceb4151ee9",n.callServer,void 0,n.findSourceMapURL,"createSession"),d=(0,n.createServerReference)("60581df9364a1b92ebc0d853d7c78efa696792047f",n.callServer,void 0,n.findSourceMapURL,"switchSession"),h=(0,n.createServerReference)("600d82e3d7031f663a63e6110ba9f565e1925bac77",n.callServer,void 0,n.findSourceMapURL,"renameSession"),m=(0,n.createServerReference)("60301fe28cb811b08550b91045a0558179995780c0",n.callServer,void 0,n.findSourceMapURL,"deleteSession");var u=a(9266),f=a(9291),x=a(401),g=a(1932),v=a(5629),p=a(8355),j=a(4840),b=a(2952),k=a(9910),N=a(8193),S=a(3809);let y=(0,n.createServerReference)("00cdd261029ea6d12df690e0b43e69818dbfeca142",n.callServer,void 0,n.findSourceMapURL,"getChatNotifications"),w=(0,n.createServerReference)("00e68579200e3df5cde1803035a93f8406aa41e3b0",n.callServer,void 0,n.findSourceMapURL,"getUnreadCounts"),C=(0,n.createServerReference)("409743adf88b2fc6a237494fd51038d3a4527b0203",n.callServer,void 0,n.findSourceMapURL,"markChannelRead"),R=(0,n.createServerReference)("40a6b782c452b9d7da8220c5630efb6277ba4077a1",n.callServer,void 0,n.findSourceMapURL,"markNotifRead");var I=a(4552),L=a(8576),z=a(891),E=a(8163),M=a(6913);function T({agents:e,previews:t,onOpenDM:a}){let n=(0,v.k)(),[l,r]=(0,c.useState)(""),i=l.trim().toLowerCase(),o=e.filter(e=>!i||e.name.toLowerCase().includes(i)||e.handle.includes(i)||e.role.toLowerCase().includes(i));return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"dm-search",children:[(0,s.jsx)(L.I,{name:"search",size:13}),(0,s.jsx)("input",{placeholder:n("chat.searchAgents"),value:l,onChange:e=>r(e.target.value),autoFocus:!0})]}),(0,s.jsxs)("div",{className:"people-list scroll",children:[0===o.length&&(0,s.jsx)("div",{className:"mention-empty",children:n("chat.noAgentMatch",{q:l})}),o.map(e=>{let c=t[e.handle];return(0,s.jsxs)("div",{className:"people-row",onClick:()=>a(e.handle),children:[(0,s.jsx)(I.e,{name:e.name,color:e.color,image:e.image,size:36,health:e.health}),(0,s.jsxs)("div",{className:"people-meta",children:[(0,s.jsxs)("div",{className:"people-name",style:{display:"flex",alignItems:"center",gap:6},children:[e.name," ",(0,s.jsxs)("span",{className:"agent-handle",children:["@",e.handle]})," ","idle"!==e.status&&(0,s.jsx)(z.m,{status:e.status})]}),(0,s.jsx)("div",{className:"people-sub"+(c?" preview":""),children:c?(c.mine?n("chat.youPrefix"):"")+(c.text||"…"):`${e.role} \xb7 ${e.adapter}`})]}),(0,s.jsx)("span",{className:"people-go",children:(0,s.jsx)(L.I,{name:c?"chat":"chevronRight",size:14})})]},e.handle)})]})]})}function A({onConnected:e}){let t=(0,v.k)(),[a,n]=(0,c.useState)(""),[l,r]=(0,c.useState)(""),[i,o]=(0,c.useState)(""),[d,h]=(0,c.useState)(""),[m,u]=(0,c.useState)(""),[f,x]=(0,c.useTransition)();return(0,s.jsx)("div",{className:"tg-connect scroll",children:(0,s.jsxs)("div",{className:"tg-card",children:[(0,s.jsxs)("div",{className:"tg-card-head",children:[(0,s.jsx)("span",{className:"tg-card-ico",children:(0,s.jsx)(L.I,{name:"send",size:18})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"tg-card-title",children:t("chat.tg.connectTitle")}),(0,s.jsx)("div",{className:"tg-card-sub",children:t("chat.tg.connectSub")})]})]}),(0,s.jsxs)("ol",{className:"tg-steps",children:[(0,s.jsxs)("li",{children:[t("chat.tg.step1.a")," ",(0,s.jsx)("b",{children:"@BotFather"})," ",t("chat.tg.step1.b")," → ",(0,s.jsx)("code",{children:"/newbot"})," → ",t("chat.tg.step1.c")," ",(0,s.jsx)("b",{children:t("chat.tg.step1.token")}),"."]}),(0,s.jsxs)("li",{children:[t("chat.tg.step2.a")," ",(0,s.jsx)("b",{children:"@userinfobot"})," → ",t("chat.tg.step2.b")," ",(0,s.jsx)("b",{children:t("chat.tg.step2.chatId")})," ",t("chat.tg.step2.c")]}),(0,s.jsx)("li",{children:t("chat.tg.step3")})]}),(0,s.jsxs)("label",{className:"tg-field",children:[(0,s.jsx)("span",{children:t("chat.tg.botToken")}),(0,s.jsx)("input",{className:"form-input",placeholder:"123456789:AA…",value:a,onChange:e=>n(e.target.value)})]}),(0,s.jsxs)("div",{className:"tg-field-row",children:[(0,s.jsxs)("label",{className:"tg-field",children:[(0,s.jsx)("span",{children:t("chat.tg.yourChatId")}),(0,s.jsx)("input",{className:"form-input",placeholder:"123456789",value:l,onChange:e=>r(e.target.value)})]}),(0,s.jsxs)("label",{className:"tg-field",children:[(0,s.jsx)("span",{children:t("chat.tg.yourName")}),(0,s.jsx)("input",{className:"form-input",placeholder:t("chat.tg.namePlaceholder"),value:i,onChange:e=>o(e.target.value)})]})]}),d&&(0,s.jsx)("div",{className:"tg-msg err",children:d}),m&&(0,s.jsx)("div",{className:"tg-msg ok",children:m}),(0,s.jsxs)("button",{className:"btn-accent tg-save",disabled:f||!a.trim()||!l.trim(),onClick:function(){h(""),u(""),x(async()=>{let s=await (0,p.M)(a,l,i);s.ok?(u(t("chat.tg.botConnected",{bot:"@"+(s.username??"bot")})),n(""),r(""),o(""),e()):h(s.error??t("chat.tg.connectionFailed"))})},children:[f?(0,s.jsx)("span",{className:"spin",children:(0,s.jsx)(L.I,{name:"refresh",size:13})}):(0,s.jsx)(L.I,{name:"send",size:13})," ",t("chat.tg.connectBot")]}),(0,s.jsxs)("div",{className:"tg-note",children:[(0,s.jsx)(L.I,{name:"bot",size:12})," ",t("chat.tg.isolatedNote")]})]})})}function U({agents:e,operator:t}){let a,n,p,z,[D,q]=(0,c.useState)(!1),[F,H]=(0,c.useState)("right"),[O,P]=(0,c.useState)(380),[W,$]=(0,c.useState)("room"),[_,B]=(0,c.useState)("all"),[K,V]=(0,c.useState)(""),G=(0,v.k)(),[J,X]=(0,c.useState)([]),[Q,Y]=(0,c.useState)([]),[Z,ee]=(0,c.useState)([]),[et,ea]=(0,c.useState)(!1),[es,ec]=(0,c.useState)(null),[en,el]=(0,c.useState)(!1),[er,ei]=(0,c.useState)([]),[eo,ed]=(0,c.useState)({}),[eh,em]=(0,c.useState)(!1),[eu,ef]=(0,c.useState)(null),[ex,eg]=(0,c.useState)({}),[ev,ep]=(0,c.useState)(""),[ej,eb]=(0,c.useState)(0),[ek,eN]=(0,c.useState)([]),[eS,ey]=(0,c.useState)(null),[ew,eC]=(0,c.useState)(0),[eR,eI]=(0,c.useState)([]),[,eL]=(0,c.useTransition)(),ez=(0,c.useRef)(0),eE=(0,c.useRef)(0),eM=(0,c.useRef)(null),eT=(0,c.useRef)({}),eA=(0,c.useRef)([]),[eU,eD]=(0,c.useState)(null),eq=Object.fromEntries(e.map(e=>[e.handle,e])),eF=W.startsWith("dm:");(0,c.useEffect)(()=>{D&&!eR.length&&l().then(eI).catch(()=>{})},[D]);let eH="people"===W,eO="telegram"===W,eP=eF?W.slice(3):null,eW=eP?eq[eP]:null,e$=eF?W:eO?"telegram":"room";function e_(){delete eT.current[e$],eC(e=>e+1)}(0,c.useEffect)(()=>{function e(){q(e=>!e)}function t(e){q(!0);let t=e.detail?.channel;("room"===t||"telegram"===t||t&&t.startsWith("dm:"))&&$(t)}return window.addEventListener("constella:toggle-chat",e),window.addEventListener("constella:open-chat",t),()=>{window.removeEventListener("constella:toggle-chat",e),window.removeEventListener("constella:open-chat",t)}},[]),(0,c.useEffect)(()=>{try{"1"===localStorage.getItem("bx.chatOpen")&&q(!0);let e=localStorage.getItem("bx.chatSide");("left"===e||"right"===e)&&H(e);let t=Number(localStorage.getItem("bx.chatWidth"));t>=320&&t<=640&&P(t)}catch{}},[]),(0,c.useEffect)(()=>{try{localStorage.setItem("bx.chatOpen",D?"1":"0")}catch{}},[D]),(0,c.useEffect)(()=>{try{localStorage.setItem("bx.chatSide",F)}catch{}},[F]),(0,c.useEffect)(()=>{try{localStorage.setItem("bx.chatWidth",String(O))}catch{}},[O]),(0,c.useEffect)(()=>{function e(e){let t=e.detail;t?.handle&&(q(!0),$("dm:"+t.handle),t.text&&(ep(t.text),eb(e=>e+1)))}return window.addEventListener("constella:open-dm",e),()=>window.removeEventListener("constella:open-dm",e)},[]),(0,c.useEffect)(()=>{if(!D||eH)return;let e=!1,t=()=>({msgs:[],events:[],evSeq:0,msgCursor:0}),a=e=>e.length>250?e.slice(-250):e;for(eA.current=[...eA.current.filter(e=>e!==e$),e$];eA.current.length>6;){let e=eA.current.shift();e&&e!==e$&&delete eT.current[e]}let s=eT.current[e$];async function c(){let[t,a]=await Promise.all([(0,r.V)(e$),(0,k.k)(e$,0)]);e||(X(t),Y(a),ez.current=a.reduce((e,t)=>Math.max(e,t.seq),0),eE.current=t.reduce((e,t)=>Math.max(e,t.createdAt?new Date(t.createdAt).getTime():0),0),eT.current[e$]={msgs:t,events:a,evSeq:ez.current,msgCursor:eE.current})}function n(){if(e||document.hidden||eM.current)return;let s=new EventSource(`/api/stream?channel=${encodeURIComponent(e$)}&evCursor=${ez.current}&msgCursor=${eE.current}`);eM.current=s,s.addEventListener("ev",e=>{let s=JSON.parse(e.data);s.seq>ez.current&&(ez.current=s.seq),Y(e=>e.some(e=>e.id===s.id)?e:a([...e,s]));let c=eT.current[e$]??t();c.events.some(e=>e.id===s.id)||(eT.current[e$]={...c,events:a([...c.events,s]),evSeq:ez.current})}),s.addEventListener("msg",e=>{let s=JSON.parse(e.data),c=s.createdAt?new Date(s.createdAt).getTime():0;if(c>eE.current&&(eE.current=c),"cleared"===s.kind){X([s]),Y([]),ee([]),eT.current[e$]={...t(),msgs:[s],msgCursor:eE.current,evSeq:ez.current};return}X(e=>e.some(e=>e.id===s.id)?e:a([...e,s])),Y(e=>e.filter(e=>e.runId!==s.id||"text"!==e.kind));let n=eT.current[e$]??t();eT.current[e$]={...n,msgs:n.msgs.some(e=>e.id===s.id)?n.msgs:a([...n.msgs,s]),events:n.events.filter(e=>e.runId!==s.id||"text"!==e.kind),msgCursor:eE.current}})}function l(){eM.current&&(eM.current.close(),eM.current=null)}s?(X(s.msgs),Y(s.events),ez.current=s.evSeq,eE.current=s.msgCursor,ea(!1)):(X([]),Y([]),ez.current=0,eE.current=0,ea(!0)),s?document.hidden||n():c().catch(()=>{}).finally(()=>{!e&&(ea(!1),document.hidden||n())});let i=()=>{document.hidden?l():n()};return document.addEventListener("visibilitychange",i),()=>{e=!0,document.removeEventListener("visibilitychange",i),l()}},[D,W,ew]),(0,c.useEffect)(()=>{D&&eF?i(e$).then(eN).catch(()=>{}):eN([])},[D,W,ew]);let eB=()=>(0,u.b)().then(e=>eg(e));(0,c.useEffect)(()=>{D&&eB()},[D,W]);let eK=()=>(0,j.G)().then(e=>eD(e)).catch(()=>eD({connected:!1}));(0,c.useEffect)(()=>{D&&eO&&eK()},[D,W]);let eV=async()=>{if(!eH)try{let e=await (0,N.p)(e$);if(e.used>=e.max&&!en){el(!0);try{await (0,S.L)(e$),e=await (0,N.p)(e$)}finally{el(!1)}}ec(e)}catch{}};async function eG(){if(!en){el(!0);try{await (0,S.L)(e$),await eV()}finally{el(!1)}}}function eJ(){ey({title:G("chat.dock.clearTitle"),body:G("chat.dock.clearBody"),confirmLabel:G("common.clear"),onConfirm:()=>eL(async()=>{await (0,f.H)(e$).catch(()=>{}),X([]),Y([]),ee([]),delete eT.current[e$],ez.current=0,eE.current=0,await eV(),eF&&await eB()})})}(0,c.useEffect)(()=>{D&&!eH?eV():eH&&ec(null)},[D,W,J.length]);let eX=async()=>{try{let[e,t]=await Promise.all([y(),w()]);ei(e),ed(t)}catch{}};async function eQ(e){em(!1),e.channel&&$(e.channel.startsWith("dm:")?e.channel:"room"),e.messageId&&(ef(e.messageId),setTimeout(()=>ef(null),2600));try{await R(e.id)}catch{}eX()}function eY(e,t){eL(async()=>{let{responders:a}=await (0,x._)(e$,e,t);if(a.length){for(let e of(ee(a),a))await (0,g.n)(e$,e),ee(t=>t.filter(t=>t!==e));ee([])}eF&&await eB()})}if((0,c.useEffect)(()=>{D&&eX()},[D,W,J.length]),(0,c.useEffect)(()=>{D&&!eH&&C(e$).then(eX).catch(()=>{})},[D,W,J.length]),!D)return(0,s.jsx)("button",{className:"chat-fab",style:{display:"grid",placeItems:"center"},onClick:()=>q(!0),title:G("chrome.chat.agentRoom"),children:(0,s.jsx)(L.I,{name:"chat",size:20})});let eZ={};for(let e of Q)(eZ[e.runId]??=[]).push(e);let e0=new Set(J.map(e=>e.id)),e1=Object.entries(eZ).filter(([e])=>!e0.has(e)),e8=Object.keys(ex).length,e2=eo.room??0,e5=Object.entries(eo).reduce((e,[t,a])=>t.startsWith("dm:")?e+a:e,0),e6=eo.telegram??0;return(0,s.jsxs)("div",{className:"chat-dock "+F,style:{width:O},children:[(0,s.jsx)("div",{className:"dock-resizer "+F,onMouseDown:function(e){e.preventDefault();let t=e.clientX;function a(e){let a=e.clientX-t;P(Math.max(320,Math.min(640,"right"===F?O-a:O+a)))}document.body.style.cursor="col-resize",window.addEventListener("mousemove",a),window.addEventListener("mouseup",function e(){window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",e),document.body.style.cursor=""})}}),(0,s.jsxs)("div",{className:"dock-toolbar",children:[(0,s.jsxs)("span",{className:"dock-toolbar-title",children:[(0,s.jsx)(L.I,{name:"agents",size:15,style:{color:"var(--accent)"}})," ",G("chat.dock.agents")]}),(0,s.jsxs)("div",{className:"dock-tools",children:[(0,s.jsxs)("div",{className:"dock-bell-wrap",children:[(0,s.jsxs)("button",{className:"dock-tool",title:G("top.notifications"),onClick:()=>em(e=>!e),children:[(0,s.jsx)(L.I,{name:"bell",size:15}),er.length>0&&(0,s.jsx)("span",{className:"dock-bell-badge",children:er.length})]}),eh&&(0,s.jsxs)("div",{className:"dock-notif-pop",children:[(0,s.jsxs)("div",{className:"dock-notif-head",children:[G("top.notifications")," ",er.length>0&&(0,s.jsxs)("span",{children:["(",er.length,")"]})]}),0===er.length&&(0,s.jsx)("div",{className:"dock-notif-empty",children:G("chat.dock.nothingNeedsYou")}),er.map(e=>(0,s.jsxs)("button",{className:"dock-notif-row"+("approval"===e.kind?" approval":""),onClick:()=>eQ(e),children:[(0,s.jsx)("span",{className:"dn-ico",children:(0,s.jsx)(L.I,{name:"approval"===e.kind?"check":"at",size:13})}),(0,s.jsxs)("span",{className:"dn-body",children:[(0,s.jsx)("span",{className:"dn-text",children:e.text}),e.detail&&(0,s.jsx)("span",{className:"dn-detail",children:e.detail})]}),(0,s.jsx)("span",{className:"dn-go",children:(0,s.jsx)(L.I,{name:"chevronRight",size:12})})]},e.id))]})]}),(0,s.jsx)("button",{className:"dock-tool",title:"right"===F?G("chat.dock.moveLeft"):G("chat.dock.moveRight"),onClick:()=>H(e=>"right"===e?"left":"right"),children:(0,s.jsx)(L.I,{name:"right"===F?"dockLeft":"dockRight",size:15})}),(0,s.jsx)("button",{className:"dock-tool",title:G("chat.dock.hide"),onClick:()=>q(!1),children:(0,s.jsx)(L.I,{name:"close",size:15})})]})]}),(0,s.jsxs)("div",{className:"dock-tabs",children:[(0,s.jsxs)("button",{className:"dock-tab"+(eF||eH||eO?"":" on"),onClick:()=>$("room"),children:[(0,s.jsx)(L.I,{name:"agents",size:14})," ",G("chat.dock.tabRoom"),e2>0&&(0,s.jsx)("span",{className:"dt-badge",children:e2})]}),(0,s.jsxs)("button",{className:"dock-tab"+(eH||eF?" on":""),onClick:()=>$("people"),children:[(0,s.jsx)(L.I,{name:"chat",size:14})," ",G("chat.dock.tabDirect"),(e5||e8)>0&&(0,s.jsx)("span",{className:"dt-badge",children:e5||e8})]}),(0,s.jsxs)("button",{className:"dock-tab"+(eO?" on":""),onClick:()=>$("telegram"),children:[(0,s.jsx)(L.I,{name:"send",size:14})," Telegram",e6>0&&(0,s.jsx)("span",{className:"dt-badge",children:e6})]})]}),!eH&&!(eO&&eU&&!eU.connected)&&(0,s.jsxs)("div",{className:"ctx-bar",children:[es?(0,s.jsx)(E.m,{stat:es,onCompact:eG,compacting:en}):(0,s.jsx)("span",{}),eO?(0,s.jsxs)("span",{className:"ctx-hint",title:G("chat.dock.tgIsolatedTip"),children:[(0,s.jsx)(L.I,{name:"bot",size:12})," ",G("chat.dock.isolatedThreadAda")]}):(0,s.jsxs)("span",{className:"ctx-hint",title:G("chat.dock.dmAdaTip"),children:[(0,s.jsx)(L.I,{name:"bot",size:12})," ",G("home.chat.dmAda")]})]}),eF&&eW?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"dm-back-row",children:[(0,s.jsxs)("button",{className:"dm-back-btn",onClick:()=>$("people"),children:[(0,s.jsx)(L.I,{name:"chevronLeft",size:14})," ",G("chat.dock.allAgents")]}),(0,s.jsxs)("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:5,flexWrap:"wrap",justifyContent:"flex-end"},children:[ek.map(e=>(0,s.jsxs)("span",{className:"sess-pill",children:[(0,s.jsx)("button",{className:"sess-tab"+(e.active?" active":""),title:e.active?G("chat.dock.sessActiveTip"):G("chat.dock.sessSwitchTip"),onClick:()=>{var t;return t=e.id,void(!ek.find(e=>e.id===t)?.active&&eL(async()=>{await d(e$,t).catch(()=>{}),e_()}))},onDoubleClick:()=>{var t,a;let s;return t=e.id,a=e.title,void(null!=(s=prompt(G("chat.dock.renameSession"),a))&&eL(async()=>{await h(t,s).catch(()=>{}),i(e$).then(eN).catch(()=>{})}))},children:e.title}),ek.length>1&&(0,s.jsx)("button",{className:"sess-del",title:G("chat.dock.sessDelete"),onClick:()=>{var t,a;return t=e.id,a=e.title,void ey({title:G("chat.dock.deleteSessionTitle"),body:G("chat.dock.deleteSessionBody",{title:a}),confirmLabel:G("common.delete"),onConfirm:()=>eL(async()=>{await m(e$,t).catch(()=>{}),e_(),i(e$).then(eN).catch(()=>{})})})},children:(0,s.jsx)(L.I,{name:"close",size:11})})]},e.id)),(0,s.jsxs)("button",{className:"sess-new",title:G("chat.dock.sessNewTip"),onClick:function(){eL(async()=>{await o(e$).catch(()=>{}),e_()})},children:[(0,s.jsx)(L.I,{name:"add",size:12})," ",G("chat.dock.sessNew")]})]})]}),(0,s.jsxs)("div",{className:"chat-header dm",children:[(0,s.jsx)(I.e,{name:eW.name,color:eW.color,image:eW.image,size:34,health:eW.health}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"chat-title",children:[eW.name," ",(0,s.jsxs)("span",{className:"agent-handle",children:["@",eW.handle]})]}),(0,s.jsxs)("div",{className:"chat-sub",children:[eW.role," \xb7 ",eW.adapter]})]}),(0,s.jsxs)("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8},children:[(0,s.jsx)(M.qs,{status:eW.status}),(0,s.jsx)("button",{className:"dock-tool",title:G("chat.dock.clearConversation"),onClick:eJ,children:(0,s.jsx)(L.I,{name:"trash",size:15})})]})]}),(0,s.jsxs)("div",{className:"dm-context-note",children:[(0,s.jsx)("span",{className:"ico",children:(0,s.jsx)(L.I,{name:"bot",size:14})}),G("chat.dock.dmContextNote",{name:eW.name})]}),(0,s.jsx)(M.H8,{msgs:J,typing:Z,agents:e,byRun:eZ,liveRuns:e1,loading:et,highlightId:eu,operator:t,markdownAgent:!0}),(0,s.jsx)(M.V4,{onSend:eY,agents:e,defaultText:ev,placeholder:G("chat.dock.messageAgent",{name:eW.name})},"dm:"+eP+":"+ej)]}):eH?(0,s.jsx)(T,{agents:e,previews:ex,onOpenDM:e=>{$("dm:"+e)}}):eO?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"chat-header room",children:[(0,s.jsx)("div",{className:"brand-ico",style:{background:"linear-gradient(150deg,#2aabee,#229ed9)",color:"#fff"},children:(0,s.jsx)(L.I,{name:"send",size:16})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"chat-title",children:"Telegram"}),(0,s.jsx)("div",{className:"chat-sub",children:eU?.connected?G("chat.tg.connectedSub",{name:eU.allowedName||G("chat.tg.you"),chatId:eU.chatIdMasked??""}):G("chat.tg.connectPrompt")})]}),eU?.connected&&(0,s.jsxs)("div",{style:{marginLeft:"auto",display:"flex",gap:6},children:[(0,s.jsx)("button",{className:"dock-tool",title:G("chat.dock.clearConversation"),onClick:eJ,children:(0,s.jsx)(L.I,{name:"trash",size:15})}),(0,s.jsx)("button",{className:"dock-tool",title:G("chat.tg.disconnect"),onClick:()=>{confirm(G("chat.tg.disconnectConfirm"))&&eL(async()=>{await (0,b.K)(),eK()})},children:(0,s.jsx)(L.I,{name:"close",size:15})})]})]}),eU&&!eU.connected?(0,s.jsx)(A,{onConnected:eK}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"dm-context-note",children:[(0,s.jsx)("span",{className:"ico",children:(0,s.jsx)(L.I,{name:"send",size:14})}),G("chat.tg.isolatedThreadNote")]}),(0,s.jsx)(M.H8,{msgs:J,typing:Z,agents:e,byRun:eZ,liveRuns:e1,loading:et||!eU,highlightId:eu,operator:t,markdownAgent:!0}),(0,s.jsx)(M.V4,{onSend:eY,agents:e,placeholder:G("chat.tg.composerPlaceholder")},"telegram:"+ej)]})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"chat-header room",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"chat-title",children:G("chat.dock.teamChannel")}),(0,s.jsx)("div",{className:"chat-sub",children:G("chat.dock.teamChannelSub",{n:e.length})})]}),(0,s.jsxs)("div",{className:"chat-members",children:[e.slice(0,6).map(e=>(0,s.jsx)("button",{className:"member-btn",title:G("chat.dock.dmName",{name:e.name}),onClick:()=>{$("dm:"+e.handle)},children:(0,s.jsx)(I.e,{name:e.name,color:e.color,size:26})},e.handle)),e.length>6&&(0,s.jsxs)("button",{className:"more",title:G("chat.dock.allAgents"),onClick:()=>$("people"),children:["+",e.length-6]})]})]}),(a=Array.from(new Set(e.map(e=>e.role))).sort(),n="all"===_?J:"type:work"===_?J.filter(e=>(eZ[e.id]?.length??0)>0||!!e.kind):"type:chat"===_?J.filter(e=>!eZ[e.id]?.length&&!e.kind):_.startsWith("role:")?J.filter(e=>"operator"===e.fromKind||e.fromHandle&&eq[e.fromHandle]?.role===_.slice(5)):J.filter(e=>"operator"===e.fromKind||e.fromHandle===_),z=(p=K.trim().toLowerCase())?n.filter(e=>(e.text??"").toLowerCase().includes(p)):n,(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"room-filter",children:[(0,s.jsx)("span",{className:"rf-label",children:G("chat.filter")}),(0,s.jsx)("button",{type:"button",className:"rf-chip"+("all"===_?" on":""),onClick:()=>B("all"),children:G("common.all")}),(0,s.jsx)("button",{type:"button",className:"rf-chip rf-lane"+("type:work"===_?" on":""),title:G("chat.filter.work"),onClick:()=>B("type:work"===_?"all":"type:work"),children:G("chat.filter.work")}),(0,s.jsx)("button",{type:"button",className:"rf-chip rf-lane"+("type:chat"===_?" on":""),title:G("chat.filter.discussion"),onClick:()=>B("type:chat"===_?"all":"type:chat"),children:G("chat.filter.discussion")}),a.map(e=>(0,s.jsx)("button",{type:"button",className:"rf-chip rf-role"+(_==="role:"+e?" on":""),title:G("chat.filter.byRole"),onClick:()=>B(_==="role:"+e?"all":"role:"+e),children:e},"role:"+e)),e.map(e=>(0,s.jsxs)("button",{type:"button",className:"rf-chip"+(_===e.handle?" on":""),title:e.name,onClick:()=>B(_===e.handle?"all":e.handle),children:["@",e.handle]},e.handle)),(0,s.jsxs)("span",{className:"rf-search",children:[(0,s.jsx)(L.I,{name:"search",size:12}),(0,s.jsx)("input",{value:K,onChange:e=>V(e.target.value),placeholder:G("chat.filter.search"),"aria-label":G("chat.filter.search")}),K&&(0,s.jsx)("button",{type:"button",className:"rf-clear",onClick:()=>V(""),"aria-label":G("common.dismiss"),children:(0,s.jsx)(L.I,{name:"close",size:11})})]})]}),(0,s.jsx)(M.H8,{msgs:z,typing:Z,agents:e,byRun:eZ,liveRuns:e1,loading:et,highlightId:eu,operator:t,markdownAgent:!0,refs:eR})]})),(0,s.jsx)(M.V4,{onSend:eY,agents:e,defaultText:"room"===W?ev:"",requireMention:!0,placeholder:G("chat.dock.roomPlaceholder"),refs:eR},"room:"+ej)]}),eS&&(0,s.jsx)("div",{className:"modal-overlay",onMouseDown:()=>ey(null),children:(0,s.jsxs)("div",{className:"modal",style:{width:380},onMouseDown:e=>e.stopPropagation(),children:[(0,s.jsx)("div",{className:"modal-head",children:(0,s.jsxs)("div",{className:"modal-title",children:[(0,s.jsx)(L.I,{name:"trash",size:15,style:{color:"var(--sx-keyword)"}})," ",eS.title]})}),(0,s.jsx)("div",{className:"modal-body",children:(0,s.jsx)("div",{style:{fontSize:13,color:"var(--text-dim)",lineHeight:1.55},children:eS.body})}),(0,s.jsxs)("div",{className:"modal-foot",children:[(0,s.jsx)("button",{className:"btn-ghost",onClick:()=>ey(null),children:G("common.cancel")}),(0,s.jsx)("button",{className:"btn-accent",style:{background:"var(--sx-keyword)",borderColor:"var(--sx-keyword)",color:"#fff"},onClick:()=>{eS.onConfirm(),ey(null)},children:eS.confirmLabel})]})]})})]})}},8355:(e,t,a)=>{a.d(t,{M:()=>c});var s=a(7814);let c=(0,s.createServerReference)("706d88c745d18277356678742d9b6b2b19c4f6e86d",s.callServer,void 0,s.findSourceMapURL,"connectTelegram")},9266:(e,t,a)=>{a.d(t,{b:()=>c});var s=a(7814);let c=(0,s.createServerReference)("00703229b811528142c40576d5c57f3467b87b9b61",s.callServer,void 0,s.findSourceMapURL,"getDmPreviews")},9291:(e,t,a)=>{a.d(t,{H:()=>c});var s=a(7814);let c=(0,s.createServerReference)("4098f6bc6c8bcf5e0704daf3a5a7bab7ffa82a196c",s.callServer,void 0,s.findSourceMapURL,"clearConversation")}}]);