constellai 0.3.8 → 0.3.10

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 (239) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/app/(app)/activity/page.js +2 -2
  5. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  6. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  7. package/.next/server/app/(app)/agents/[handle]/page.js +3 -3
  8. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/code/page.js +2 -2
  11. package/.next/server/app/(app)/code/page.js.nft.json +1 -1
  12. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/(app)/config/page.js +2 -2
  14. package/.next/server/app/(app)/config/page.js.nft.json +1 -1
  15. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(app)/costs/page.js +2 -2
  17. package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
  18. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/(app)/cron/page.js +2 -2
  20. package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
  21. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/(app)/dashboard/page.js +2 -2
  23. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
  24. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(app)/design/page.js +3 -3
  26. package/.next/server/app/(app)/design/page.js.nft.json +1 -1
  27. package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/(app)/docs/[id]/page.js +2 -2
  29. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/docs/page.js +2 -2
  32. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  33. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  34. package/.next/server/app/(app)/github/page.js +2 -2
  35. package/.next/server/app/(app)/github/page.js.nft.json +1 -1
  36. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/(app)/goals/page.js +2 -2
  38. package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
  39. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/(app)/inbox/page.js +2 -2
  41. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
  42. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/(app)/knowledge/page.js +3 -3
  44. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
  45. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/(app)/models/page.js +2 -2
  47. package/.next/server/app/(app)/models/page.js.nft.json +1 -1
  48. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/(app)/notifications/page.js +2 -2
  50. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
  51. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/(app)/org/page.js +4 -4
  53. package/.next/server/app/(app)/org/page.js.nft.json +1 -1
  54. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
  55. package/.next/server/app/(app)/organizations/page.js +1 -1
  56. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
  57. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/(app)/page.js +3 -3
  59. package/.next/server/app/(app)/page.js.nft.json +1 -1
  60. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/(app)/planner/page.js +2 -2
  62. package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
  63. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/(app)/plugins/page.js +2 -2
  65. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
  66. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/(app)/pm/page.js +2 -2
  68. package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
  69. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
  70. package/.next/server/app/(app)/prepare-deploy/page.js +3 -3
  71. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
  72. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app/(app)/profile/page.js +2 -2
  74. package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
  75. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
  76. package/.next/server/app/(app)/pulse/page.js +2 -2
  77. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
  78. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
  79. package/.next/server/app/(app)/reports/[id]/page.js +2 -2
  80. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
  81. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app/(app)/reports/page.js +3 -3
  83. package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
  84. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
  85. package/.next/server/app/(app)/routines/page.js +2 -2
  86. package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
  87. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
  88. package/.next/server/app/(app)/search/page.js +2 -2
  89. package/.next/server/app/(app)/search/page.js.nft.json +1 -1
  90. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
  91. package/.next/server/app/(app)/security/page.js +2 -2
  92. package/.next/server/app/(app)/security/page.js.nft.json +1 -1
  93. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/(app)/skills/page.js +3 -3
  95. package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
  96. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
  97. package/.next/server/app/(app)/tasks/page.js +2 -2
  98. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
  99. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  100. package/.next/server/app/(app)/test-dev/page.js +1 -1
  101. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
  102. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/(app)/update/page.js +2 -2
  104. package/.next/server/app/(app)/update/page.js.nft.json +1 -1
  105. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
  106. package/.next/server/app/(auth)/login/page.js +2 -2
  107. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  108. package/.next/server/app/(auth)/onboarding/page.js +1 -1
  109. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
  110. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/_global-error.html +1 -1
  112. package/.next/server/app/_global-error.rsc +1 -1
  113. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  114. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  115. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  116. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  118. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  119. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/cron/tick/route.js +2 -2
  121. package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -1
  122. package/.next/server/app/api/passkey/register/verify/route.js +1 -1
  123. package/.next/server/app/api/sync/file/route.js +1 -1
  124. package/.next/server/app/api/telegram/poll/route.js +3 -3
  125. package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
  126. package/.next/server/chunks/1033.js +1 -1
  127. package/.next/server/chunks/1881.js +1 -0
  128. package/.next/server/chunks/1986.js +1 -1
  129. package/.next/server/chunks/2118.js +1 -1
  130. package/.next/server/chunks/2170.js +1 -0
  131. package/.next/server/chunks/{1678.js → 2718.js} +16 -16
  132. package/.next/server/chunks/3987.js +3 -3
  133. package/.next/server/chunks/4288.js +1 -1
  134. package/.next/server/chunks/5580.js +12 -0
  135. package/.next/server/chunks/5878.js +1 -1
  136. package/.next/server/chunks/6296.js +4 -0
  137. package/.next/server/chunks/7867.js +1 -1
  138. package/.next/server/chunks/7905.js +1 -1
  139. package/.next/server/chunks/8013.js +1 -0
  140. package/.next/server/chunks/8134.js +1 -1
  141. package/.next/server/chunks/8211.js +1 -1
  142. package/.next/server/chunks/8236.js +21 -0
  143. package/.next/server/chunks/907.js +1 -1
  144. package/.next/server/chunks/9344.js +3 -3
  145. package/.next/server/middleware-build-manifest.js +1 -1
  146. package/.next/server/middleware.js +1 -1
  147. package/.next/server/pages/500.html +1 -1
  148. package/.next/server/server-reference-manifest.js +1 -1
  149. package/.next/server/server-reference-manifest.json +1 -1
  150. package/.next/static/chunks/1352-1e5e6e2ea57a0821.js +4 -0
  151. package/.next/static/chunks/2171-7d8bf2df1d540a82.js +1 -0
  152. package/.next/static/chunks/2636-13f5de5bc9726cc3.js +1 -0
  153. package/.next/static/chunks/{7218-21f40f9caef5d658.js → 7218-9fbc00e6cec34afa.js} +2 -2
  154. package/.next/static/chunks/8834-3c7f77ceebbeb079.js +1 -0
  155. package/.next/static/chunks/app/(app)/activity/{page-ce3fc6003368f592.js → page-c6f3b54a1401c391.js} +1 -1
  156. package/.next/static/chunks/app/(app)/agents/[handle]/page-38922257bbd82998.js +1 -0
  157. package/.next/static/chunks/app/(app)/code/page-51869dcdc0b0a50f.js +1 -0
  158. package/.next/static/chunks/app/(app)/config/page-ccaa231f4f64912a.js +1 -0
  159. package/.next/static/chunks/app/(app)/costs/page-864fe3407d0dc6c0.js +1 -0
  160. package/.next/static/chunks/app/(app)/cron/page-7be322a05e559da8.js +1 -0
  161. package/.next/static/chunks/app/(app)/dashboard/page-f181d957748f8f27.js +1 -0
  162. package/.next/static/chunks/app/(app)/design/{page-5997054187e59e74.js → page-dac84fe4a5e31454.js} +3 -3
  163. package/.next/static/chunks/app/(app)/docs/[id]/page-74da9f8a13f14a07.js +1 -0
  164. package/.next/static/chunks/app/(app)/docs/page-689045673b039708.js +1 -0
  165. package/.next/static/chunks/app/(app)/github/page-7b8ae16a0cd14bd3.js +1 -0
  166. package/.next/static/chunks/app/(app)/goals/page-49682d30eb297a16.js +1 -0
  167. package/.next/static/chunks/app/(app)/inbox/{page-474c3f0a181bbbd3.js → page-000769b0e849a435.js} +2 -2
  168. package/.next/static/chunks/app/(app)/knowledge/page-c329694479ee85cb.js +1 -0
  169. package/.next/static/chunks/app/(app)/{layout-720a1171f7152d86.js → layout-21e16931eac987ab.js} +1 -1
  170. package/.next/static/chunks/app/(app)/models/page-3e92db0acfbf844b.js +1 -0
  171. package/.next/static/chunks/app/(app)/notifications/page-646bdc5a20cac43b.js +12 -0
  172. package/.next/static/chunks/app/(app)/org/page-08141e549fea39ad.js +12 -0
  173. package/.next/static/chunks/app/(app)/organizations/{page-0de7da829c9b2249.js → page-b5617487ef2255ce.js} +1 -1
  174. package/.next/static/chunks/app/(app)/page-f2a05b3f92886a0c.js +1 -0
  175. package/.next/static/chunks/app/(app)/planner/{page-0fc0ebe2d338769a.js → page-4241aa863f23a96d.js} +1 -1
  176. package/.next/static/chunks/app/(app)/plugins/page-2e96b6b32d288dca.js +1 -0
  177. package/.next/static/chunks/app/(app)/pm/page-182d8faa90ed2643.js +1 -0
  178. package/.next/static/chunks/app/(app)/prepare-deploy/page-15ba476bf716d7e2.js +1 -0
  179. package/.next/static/chunks/app/(app)/profile/page-e18ad0668e7e7305.js +1 -0
  180. package/.next/static/chunks/app/(app)/pulse/page-d528de016fb3ec49.js +1 -0
  181. package/.next/static/chunks/app/(app)/reports/[id]/page-7be322a05e559da8.js +1 -0
  182. package/.next/static/chunks/app/(app)/reports/page-67f64d0e809c2bca.js +1 -0
  183. package/.next/static/chunks/app/(app)/routines/page-cdb5f6e2ca82640b.js +1 -0
  184. package/.next/static/chunks/app/(app)/search/page-a91bfaab25cd6aff.js +1 -0
  185. package/.next/static/chunks/app/(app)/security/page-79d44198dd58f2dd.js +1 -0
  186. package/.next/static/chunks/app/(app)/skills/page-2af4de1e97575285.js +1 -0
  187. package/.next/static/chunks/app/(app)/tasks/{page-4d535f34ae9c44ca.js → page-c975303be89aaee5.js} +1 -1
  188. package/.next/static/chunks/app/(app)/test-dev/page-2e0b655d1a79a326.js +1 -0
  189. package/.next/static/chunks/app/(app)/update/{page-decdb0ece526b50f.js → page-a1f8b007304e9bdc.js} +1 -1
  190. package/.next/static/chunks/app/(auth)/login/page-a8d0d8f09f9794ef.js +1 -0
  191. package/.next/static/chunks/app/(auth)/onboarding/page-7ce367a9bc0bcbeb.js +1 -0
  192. package/.next/trace-build +1 -1
  193. package/CHANGELOG.md +27 -0
  194. package/README.md +1 -1
  195. package/README.pt-BR.md +1 -1
  196. package/bin/constella.mjs +22 -0
  197. package/docs/UPDATE.md +15 -3
  198. package/package.json +1 -1
  199. package/.next/server/chunks/3392.js +0 -1
  200. package/.next/server/chunks/6538.js +0 -4
  201. package/.next/server/chunks/7727.js +0 -1
  202. package/.next/server/chunks/8237.js +0 -12
  203. package/.next/server/chunks/939.js +0 -1
  204. package/.next/server/chunks/9795.js +0 -21
  205. package/.next/static/chunks/3556-dbb9200143640484.js +0 -1
  206. package/.next/static/chunks/5523-9c369c915ee6d9c9.js +0 -1
  207. package/.next/static/chunks/7363-b9ebe28fed23b997.js +0 -1
  208. package/.next/static/chunks/7621-87d8d0d0568de3ca.js +0 -4
  209. package/.next/static/chunks/app/(app)/agents/[handle]/page-236e13b8edadd480.js +0 -1
  210. package/.next/static/chunks/app/(app)/code/page-18ae765c81a2c709.js +0 -1
  211. package/.next/static/chunks/app/(app)/config/page-8a6fcf6c04337210.js +0 -1
  212. package/.next/static/chunks/app/(app)/costs/page-230b0ef03a2024b0.js +0 -1
  213. package/.next/static/chunks/app/(app)/cron/page-ca89769e2522191d.js +0 -1
  214. package/.next/static/chunks/app/(app)/dashboard/page-6237c3a35cce55ce.js +0 -1
  215. package/.next/static/chunks/app/(app)/docs/[id]/page-3362d323e0f4dada.js +0 -1
  216. package/.next/static/chunks/app/(app)/docs/page-d7d8018a7884a4b4.js +0 -1
  217. package/.next/static/chunks/app/(app)/github/page-f5c1cae725d080fb.js +0 -1
  218. package/.next/static/chunks/app/(app)/goals/page-95e85ce115ed9ff3.js +0 -1
  219. package/.next/static/chunks/app/(app)/knowledge/page-08596428ca34b620.js +0 -1
  220. package/.next/static/chunks/app/(app)/models/page-fa1eb257e6911c9a.js +0 -1
  221. package/.next/static/chunks/app/(app)/notifications/page-31f2a041bdb497b9.js +0 -12
  222. package/.next/static/chunks/app/(app)/org/page-666438930ddc4639.js +0 -12
  223. package/.next/static/chunks/app/(app)/page-bfcf3d25f468240f.js +0 -1
  224. package/.next/static/chunks/app/(app)/plugins/page-ad369fbfec6f3d1c.js +0 -1
  225. package/.next/static/chunks/app/(app)/pm/page-bb39c9d9a4f0d597.js +0 -1
  226. package/.next/static/chunks/app/(app)/prepare-deploy/page-f182991e68b159c1.js +0 -1
  227. package/.next/static/chunks/app/(app)/profile/page-cf5fe16bfad2a7ba.js +0 -1
  228. package/.next/static/chunks/app/(app)/pulse/page-03877c467c491e8a.js +0 -1
  229. package/.next/static/chunks/app/(app)/reports/[id]/page-ca89769e2522191d.js +0 -1
  230. package/.next/static/chunks/app/(app)/reports/page-7741b6a25e582791.js +0 -1
  231. package/.next/static/chunks/app/(app)/routines/page-ea83e6337e7502c2.js +0 -1
  232. package/.next/static/chunks/app/(app)/search/page-5e7f7cf0cc51b76f.js +0 -1
  233. package/.next/static/chunks/app/(app)/security/page-410144cdc35e19cc.js +0 -1
  234. package/.next/static/chunks/app/(app)/skills/page-90e5d8a24920c275.js +0 -1
  235. package/.next/static/chunks/app/(app)/test-dev/page-782c8cadd8a10feb.js +0 -1
  236. package/.next/static/chunks/app/(auth)/login/page-147a9be880c44d42.js +0 -1
  237. package/.next/static/chunks/app/(auth)/onboarding/page-8548be7e3ab3659e.js +0 -1
  238. /package/.next/static/{ehoxBsPzAtE_FyZ2VpMF0 → PjU7M0g-BKQT9AfTuZvgl}/_buildManifest.js +0 -0
  239. /package/.next/static/{ehoxBsPzAtE_FyZ2VpMF0 → PjU7M0g-BKQT9AfTuZvgl}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1536],{1417:(e,s,a)=>{"use strict";a.d(s,{V:()=>n});var l=a(7797);let n=(0,l.createServerReference)("0032ba29fe2163f67cc17abd0182466fd3daea7438",l.callServer,void 0,l.findSourceMapURL,"seedDefaultBlocksAction")},2209:(e,s,a)=>{"use strict";a.d(s,{D:()=>n});var l=a(7797);let n=(0,l.createServerReference)("40f95e0db5e9b267d12150b25b4ec0751b2d6eddb2",l.callServer,void 0,l.findSourceMapURL,"setRunMode")},4494:(e,s,a)=>{"use strict";a.d(s,{f:()=>n});var l=a(7797);let n=(0,l.createServerReference)("009a802d7a10b4fa53ab94c5ea252e140c419cfddc",l.callServer,void 0,l.findSourceMapURL,"reindexKbAction")},4952:(e,s,a)=>{"use strict";a.d(s,{m:()=>d});var l=a(4275),n=a(2899),c=a(888),i=a(9156),t=a(869);function d({value:e,options:s,onChange:a,placeholder:r,mono:o,glyph:h,disabled:x,searchable:m}){let u=(0,t.k)(),[v,p]=(0,n.useState)(!1),[g,j]=(0,n.useState)(""),b=(0,n.useRef)(null),k=(0,n.useRef)(null),N=(0,n.useMemo)(()=>(s||[]).map(e=>"string"==typeof e?{value:e,label:e}:e),[s]),f=N.find(s=>s.value===e),y=(m??N.length>8)&&!x,w=g.trim().toLowerCase(),I=y&&w?N.filter(e=>(e.label+" "+e.value+" "+(e.sub||"")).toLowerCase().includes(w)):N;return(0,n.useEffect)(()=>{if(!v)return void j("");function e(e){b.current&&!b.current.contains(e.target)&&p(!1)}function s(e){"Escape"===e.key&&p(!1)}return document.addEventListener("mousedown",e),document.addEventListener("keydown",s),y&&requestAnimationFrame(()=>k.current?.focus()),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",s)}},[v,y]),(0,l.jsxs)("div",{className:"dd"+(v?" open":"")+(x?" disabled":""),ref:b,children:[(0,l.jsxs)("button",{type:"button",className:"dd-btn"+(o?" mono":""),onClick:()=>!x&&p(e=>!e),children:[h&&f&&(0,l.jsx)(i.W,{id:f.glyphId||f.value,size:20}),(0,l.jsx)("span",{className:"dd-val",children:f?f.label:(0,l.jsx)("span",{className:"dd-ph",children:r||u("common.selectEllipsis")})}),(0,l.jsx)(c.I,{name:"chevronDown",size:14})]}),v&&(0,l.jsxs)("div",{className:"dd-menu scroll",children:[y&&(0,l.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,l.jsx)(c.I,{name:"search",size:13}),(0,l.jsx)("input",{ref:k,value:g,placeholder:u("common.searchEllipsis"),onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&I[0]?(a(I[0].value),p(!1)):"Escape"===e.key&&g&&(e.stopPropagation(),j(""))},className:o?"mono":void 0,style:{flex:1,minWidth:0,background:"transparent",border:"none",outline:"none",color:"var(--text)",fontSize:12.5,fontFamily:o?"var(--mono-font)":"inherit"}}),g&&(0,l.jsx)("button",{type:"button",title:u("common.clear"),onClick:()=>{j(""),k.current?.focus()},style:{background:"none",border:"none",color:"var(--text-dim)",cursor:"pointer",display:"flex",padding:0},children:(0,l.jsx)(c.I,{name:"close",size:12})})]}),0===N.length&&(0,l.jsx)("div",{className:"dd-empty",children:u("common.noOptions")}),N.length>0&&0===I.length&&(0,l.jsx)("div",{className:"dd-empty",children:u("dropdown.noMatch",{q:g})}),I.map(s=>(0,l.jsxs)("button",{type:"button",className:"dd-opt"+(s.value===e?" on":""),onClick:()=>{a(s.value),p(!1)},children:[h&&(0,l.jsx)(i.W,{id:s.glyphId||s.value,size:22}),(0,l.jsxs)("span",{className:"dd-opt-main",children:[(0,l.jsx)("span",{className:"dd-opt-label"+(o?" mono":""),children:s.label}),s.sub&&(0,l.jsx)("span",{className:"dd-opt-sub",children:s.sub})]}),s.tag&&(0,l.jsx)("span",{className:"dd-opt-tag",children:s.tag}),s.value===e&&(0,l.jsx)(c.I,{name:"check",size:13})]},s.value))]})]})}},5107:(e,s,a)=>{"use strict";a.d(s,{O:()=>n});var l=a(7797);let n=(0,l.createServerReference)("00f54d59905f1573397b6c6dfb47d2518383a0e842",l.callServer,void 0,l.findSourceMapURL,"curateKbAction")},5904:(e,s,a)=>{"use strict";a.d(s,{e:()=>n});var l=a(4275);function n({name:e,color:s,size:a=24,health:c,image:i}){let t=Math.max(6,Math.round(.3*a)),d=Math.round(.28*a),r=i?/^(data:|https?:|\/)/.test(i)?i:`/api/upload?path=${encodeURIComponent(i)}`:null;return(0,l.jsxs)("span",{style:{position:"relative",width:a,height:a,flex:`0 0 ${a}px`,display:"inline-block"},children:[r?(0,l.jsx)("img",{src:r,alt:e,width:a,height:a,style:{width:a,height:a,borderRadius:d,objectFit:"cover",display:"block"}}):(0,l.jsx)("span",{style:{width:a,height:a,borderRadius:d,background:s,color:"#fff",display:"grid",placeItems:"center",fontSize:Math.round(.42*a),fontWeight:700},children:(e[0]||"?").toUpperCase()}),c&&(0,l.jsx)("span",{style:{position:"absolute",right:-1,bottom:-1,width:t,height:t,borderRadius:"50%",background:"alive"===c?"var(--sx-string)":"stale"===c?"var(--sx-number)":"var(--text-faint)",border:"1.5px solid var(--bg-elevated)"}})]})}},6469:(e,s,a)=>{Promise.resolve().then(a.t.bind(a,9746,23)),Promise.resolve().then(a.bind(a,9490)),Promise.resolve().then(a.bind(a,8171)),Promise.resolve().then(a.bind(a,8183)),Promise.resolve().then(a.bind(a,4822)),Promise.resolve().then(a.bind(a,576)),Promise.resolve().then(a.bind(a,2454)),Promise.resolve().then(a.bind(a,9508)),Promise.resolve().then(a.bind(a,3891))},9156:(e,s,a)=>{"use strict";a.d(s,{W:()=>t});var l=a(4275),n=a(2899);let c={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"},i={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 t({id:e,size:s=34,radius:a}){let d,r=i[e],o=r?r[0]:"#5b6378",h=r?r[1]:(e||"?").slice(0,2).replace(/[^a-z0-9]/gi,"").toUpperCase(),x=(d=c[e])?`https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg/icons/${d}.svg`:null,[m,u]=(0,n.useState)(!1),v=null!=a?a:Math.round(.28*s),p=x&&!m,g=Math.round(.66*s);return(0,l.jsx)("span",{className:"prov-glyph",style:{width:s,height:s,flex:"0 0 "+s+"px",borderRadius:v,background:p?"#fff":"linear-gradient(150deg, "+o+", color-mix(in srgb, "+o+" 70%, #000))",color:"#fff",display:"grid",placeItems:"center",overflow:"hidden",fontSize:Math.round(.4*s),fontWeight:800,letterSpacing:"-.5px",boxShadow:p?"inset 0 0 0 1px rgba(0,0,0,.08)":"inset 0 1px 0 rgba(255,255,255,.18)"},children:p?(0,l.jsx)("img",{src:x,alt:"",width:g,height:g,loading:"lazy",onError:()=>u(!0),style:{width:g,height:g,objectFit:"contain",display:"block"}}):h})}},9490:(e,s,a)=>{"use strict";a.d(s,{Dashboard:()=>P});var l=a(4275),n=a(2899),c=a(9746),i=a.n(c),t=a(888),d=a(5904),r=a(9491),o=a(4952);let h=["var(--sx-property)","var(--sx-type)","var(--sx-function)","var(--sx-number)","var(--sx-string)","var(--sx-operator)","var(--sx-keyword)","var(--accent)"];function x({value:e,max:s=100,size:a=64,thickness:n=7,color:c,track:i="var(--bg-active)",center:t,sub:d,className:r}){let o=(a-n)/2,h=a/2,m=2*Math.PI*o,u=s>0?Math.min(1,Math.max(0,e/s)):0,v=c??(u>=.85?"var(--sx-keyword)":u>=.6?"var(--sx-number)":"var(--sx-string)");return(0,l.jsxs)("div",{className:"donut-wrap"+(r?" "+r:""),style:{width:a,height:a},children:[(0,l.jsxs)("svg",{width:a,height:a,viewBox:`0 0 ${a} ${a}`,children:[(0,l.jsx)("circle",{cx:h,cy:h,r:o,fill:"none",stroke:i,strokeWidth:n}),(0,l.jsx)("circle",{cx:h,cy:h,r:o,fill:"none",stroke:v,strokeWidth:n,strokeLinecap:"round",strokeDasharray:`${u*m} ${m}`,transform:`rotate(-90 ${h} ${h})`,className:"donut-arc"})]}),(0,l.jsxs)("div",{className:"donut-center",children:[(0,l.jsx)("div",{className:"donut-num",style:{color:v,fontSize:Math.round(.26*a)},children:t??Math.round(100*u)+"%"}),d&&(0,l.jsx)("div",{className:"donut-sub",children:d})]})]})}function m({segments:e,size:s=96,thickness:a=12,center:n,sub:c,className:i}){let t=(s-a)/2,d=s/2,r=2*Math.PI*t,o=e.reduce((e,s)=>e+s.value,0)||1,h=0,x=e.filter(e=>e.value>0).map((e,s)=>{let n=e.value/o*r,c=(0,l.jsx)("circle",{cx:d,cy:d,r:t,fill:"none",stroke:e.color,strokeWidth:a,strokeDasharray:`${n} ${r-n}`,strokeDashoffset:-h,transform:`rotate(-90 ${d} ${d})`,className:"donut-arc"},s);return h+=n,c});return(0,l.jsxs)("div",{className:"donut-wrap"+(i?" "+i:""),style:{width:s,height:s},children:[(0,l.jsxs)("svg",{width:s,height:s,viewBox:`0 0 ${s} ${s}`,children:[(0,l.jsx)("circle",{cx:d,cy:d,r:t,fill:"none",stroke:"var(--bg-active)",strokeWidth:a}),x]}),(n||c)&&(0,l.jsxs)("div",{className:"donut-center",children:[n&&(0,l.jsx)("div",{className:"donut-num",style:{fontSize:Math.round(.2*s)},children:n}),c&&(0,l.jsx)("div",{className:"donut-sub",children:c})]})]})}function u({data:e,color:s="var(--accent)",width:a=120,height:n=34,fill:c=!0,className:i}){let t=0===e.length?[0,0]:1===e.length?[e[0],e[0]]:e,d=t.length,r=Math.max(...t),o=Math.min(...t),h=r-o||1,x=(a-4)/(d-1),m="M"+t.map((e,s)=>`${(2+s*x).toFixed(1)},${(n-2-(e-o)/h*(n-4)).toFixed(1)}`).join(" L"),v=`${m} L${(2+(d-1)*x).toFixed(1)},${n-2} L2,${n-2} Z`;return(0,l.jsxs)("svg",{className:"spark"+(i?" "+i:""),width:a,height:n,viewBox:`0 0 ${a} ${n}`,preserveAspectRatio:"none",children:[c&&(0,l.jsx)("path",{d:v,fill:s,opacity:.12}),(0,l.jsx)("path",{d:m,fill:"none",stroke:s,strokeWidth:1.6,strokeLinejoin:"round",strokeLinecap:"round"})]})}function v({segments:e,height:s=10,rounded:a=!0,className:n}){let c=e.reduce((e,s)=>e+s.value,0);return(0,l.jsx)("div",{className:"segbar"+(n?" "+n:""),style:{height:s,borderRadius:a?s:4},children:0===c?(0,l.jsx)("span",{className:"segbar-empty"}):e.filter(e=>e.value>0).map((e,s)=>(0,l.jsx)("span",{className:"segbar-seg",style:{width:`${e.value/c*100}%`,background:e.color},title:e.label},s))})}function p({pct:e,color:s="var(--accent)",height:a=8,className:n}){return(0,l.jsx)("div",{className:"pbar"+(n?" "+n:""),style:{height:a},children:(0,l.jsx)("span",{style:{width:Math.min(100,Math.max(0,e))+"%",background:s}})})}var g=a(869),j=a(7797);let b=(0,j.createServerReference)("40be1497af213337d743d74519b9ff7e9b18d8e1ec",j.callServer,void 0,j.findSourceMapURL,"getDashboardSnapshot"),k=(0,j.createServerReference)("00d19c157df1233cb263d077d0be33f7a0940d7330",j.callServer,void 0,j.findSourceMapURL,"startDevServer"),N=(0,j.createServerReference)("40e65de857acdae9d0a305d9fb5bad285effb1e509",j.callServer,void 0,j.findSourceMapURL,"releaseStaleLock");var f=a(2209),y=a(4494),w=a(5107),I=a(1417);let z=[{id:"today",key:"dash.filter.today"},{id:"7d",key:"dash.filter.7d"},{id:"30d",key:"dash.filter.30d"},{id:"month",key:"dash.filter.month"}],S={"start-dev":"dash.act.start",reindex:"dash.act.reindex","start-loop":"dash.act.start",open:"dash.act.open",configure:"dash.act.configure",reconnect:"dash.act.reconnect"},M={triage:"var(--text-faint)",todo:"var(--sx-property)",doing:"var(--sx-number)",blocked:"var(--sx-keyword)",review:"var(--sx-function)",done:"var(--sx-string)"},C={devServer:"cpu",production:"goto",agentLoop:"play",kb:"knowledge",storage:"files",models:"cpu",github:"goto",telegram:"send",testDev:"check",queues:"files",locks:"files",update:"refresh"},L={github:"goto",telegram:"send",models:"cpu",cli:"terminal",local:"cpu",update:"refresh"};function $(e){return"$"+e.toFixed(2)}function _(e){return e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":String(e)}function R(e){if(!e)return"—";let s=Math.floor((Date.now()-e)/1e3);return s<60?s+"s":s<3600?Math.floor(s/60)+"m":s<86400?Math.floor(s/3600)+"h":Math.floor(s/86400)+"d"}function P({initial:e,runMode:s}){let a=(0,g.k)(),[c,j]=(0,n.useState)(e),[D,A]=(0,n.useState)({range:e.range,goalId:"",agentId:""}),E=(0,n.useRef)(D),[B,F]=(0,n.useState)(""),[,T]=(0,n.useTransition)(),[,O]=(0,n.useState)(0),W=(0,n.useCallback)(async()=>{let e=E.current;try{let s=await b({range:e.range,goalId:e.goalId||null,agentId:e.agentId||null});j(s)}catch{}},[]);function U(e){A(e),E.current=e,T(()=>{W()})}function q(e,s){F(e),T(async()=>{try{await s()}catch{}await W(),F("")})}(0,n.useEffect)(()=>{let e=setInterval(()=>{document.hidden||W()},1e4),s=setInterval(()=>{document.hidden||O(e=>e+1)},5e3);return()=>{clearInterval(e),clearInterval(s)}},[W]);let G=c.cards,K=c.tasksByCol.reduce((e,s)=>e+s.count,0),V=G.spend.trendPct,H=G.spend.cap>0?Math.min(100,G.spend.spent/G.spend.cap*100):0,J=Math.min(100,15*G.security.high+6*G.security.med+2*G.security.low),Q=G.security.high?"var(--sx-keyword)":G.security.open?"var(--sx-number)":"var(--sx-string)",X=[{value:G.agents.idle,color:"var(--text-faint)",label:a("dash.ag.idle")},{value:G.agents.working,color:"var(--sx-string)",label:a("dash.ag.working")},{value:G.agents.review,color:"var(--sx-number)",label:a("dash.ag.review")},{value:G.agents.blocked,color:"var(--sx-keyword)",label:a("dash.ag.blocked")}],Y=[{value:G.goals.active,color:"var(--accent)"},{value:G.goals.done,color:"var(--sx-string)"},{value:G.goals.blocked,color:"var(--sx-keyword)"}],Z=[{value:G.security.high,color:"var(--sx-keyword)"},{value:G.security.med,color:"var(--sx-number)"},{value:G.security.low,color:"var(--sx-property)"}],ee=c.kbByType.length>0,es=ee?c.kbByType.map((e,s)=>({value:e.total,color:h[s%h.length],label:e.type})):[{value:c.kb.embeddings,color:"var(--sx-string)",label:a("dash.kb.embeddings")},{value:Math.max(0,c.kb.chunks-c.kb.embeddings),color:"var(--bg-active)",label:a("dash.kb.chunks")}],ea=ee?c.kb.active:c.kb.chunks,el=ee?a("dash.kb.entries"):a("dash.kb.chunks");return(0,l.jsxs)("div",{className:"dash",children:[(0,l.jsxs)("div",{className:"dash-filters",children:[(0,l.jsx)("div",{className:"df-ranges",children:z.map(e=>(0,l.jsx)("button",{className:"df-chip"+(D.range===e.id?" on":""),onClick:()=>U({...D,range:e.id}),children:a(e.key)},e.id))}),(0,l.jsxs)("div",{className:"df-selects",children:[(0,l.jsx)(o.m,{value:D.goalId,onChange:e=>U({...D,goalId:e}),options:[{value:"",label:a("dash.filter.allGoals")},...c.goalOptions.map(e=>({value:e.id,label:e.title}))]}),(0,l.jsx)(o.m,{value:D.agentId,onChange:e=>U({...D,agentId:e}),options:[{value:"",label:a("dash.filter.allAgents")},...c.agents.map(e=>({value:e.id,label:e.name}))]})]}),(0,l.jsxs)("div",{className:"df-meta",children:[(0,l.jsxs)("span",{className:"df-updated",children:[a("dash.updated")," ",R(c.generatedAt)]}),(0,l.jsx)("button",{className:"df-refresh",disabled:!!B,onClick:()=>q("refresh",W),title:a("dash.refresh"),children:(0,l.jsx)(t.I,{name:"refresh",size:13})})]})]}),(0,l.jsxs)("div",{className:"dash-grid",children:[(0,l.jsxs)("div",{className:"dash-card stat-card",style:{gridColumn:"span 3"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"agents",size:14})," ",a("dash.agents")]}),(0,l.jsxs)("div",{className:"sc-body",children:[(0,l.jsxs)("div",{className:"sc-left",children:[(0,l.jsxs)("div",{className:"stat-num",children:[G.agents.activeNow,(0,l.jsxs)("span",{className:"stat-of",children:["/",G.agents.total]})]}),(0,l.jsx)("div",{className:"kpi-sub",children:a("dash.activeNow")})]}),(0,l.jsx)(x,{value:G.agents.activeNow,max:Math.max(1,G.agents.total),size:56,thickness:6,color:"var(--sx-string)",center:String(G.agents.activeNow)})]}),(0,l.jsx)(v,{segments:X,className:"sc-seg"}),(0,l.jsxs)("div",{className:"stat-chips",children:[(0,l.jsxs)("span",{children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-string)"}}),G.agents.working," ",a("dash.ag.working")]}),(0,l.jsxs)("span",{children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-number)"}}),G.agents.review," ",a("dash.ag.review")]}),(0,l.jsxs)("span",{className:G.agents.blocked?"bad":"",children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-keyword)"}}),G.agents.blocked," ",a("dash.ag.blocked")]})]}),(0,l.jsxs)("div",{className:"sc-foot",children:[(0,l.jsx)(t.I,{name:"pulse",size:11})," ",a("dash.ag.heartbeat")," ",R(G.agents.lastHeartbeat)]})]}),(0,l.jsxs)("div",{className:"dash-card stat-card",style:{gridColumn:"span 3"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"coins",size:14})," ",a("dash.spend")]}),(0,l.jsxs)("div",{className:"sc-body",children:[(0,l.jsxs)("div",{className:"sc-left",children:[(0,l.jsx)("div",{className:"stat-num",children:$(G.spend.spent)}),(0,l.jsx)("div",{className:"kpi-sub",children:G.spend.cap?`${Math.round(H)}% ${a("dash.ofCapShort",{cap:G.spend.cap})}`:`${_(G.spend.tokens)} ${a("dash.tokens")}`})]}),(0,l.jsx)(u,{data:c.spendSeries,color:"var(--accent)",width:104,height:42})]}),(0,l.jsx)(p,{pct:H,color:H>=85?"var(--sx-keyword)":H>=60?"var(--sx-number)":"var(--sx-string)",className:"sc-seg"}),(0,l.jsxs)("div",{className:"stat-chips",children:[(0,l.jsxs)("span",{className:"trend "+(V>0?"up":V<0?"down":""),children:[(0,l.jsx)(t.I,{name:V>0?"arrowUp":V<0?"arrowDown":"dot",size:11})," ",Math.abs(V),"%"]}),(0,l.jsx)("span",{children:a("dash.vsPrev")}),(0,l.jsxs)("span",{style:{marginLeft:"auto"},children:[_(G.spend.tokens)," ",a("dash.tokens")]})]})]}),(0,l.jsxs)("div",{className:"dash-card stat-card",style:{gridColumn:"span 3"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"shield",size:14})," ",a("mod.security")]}),(0,l.jsxs)("div",{className:"sc-body",children:[(0,l.jsxs)("div",{className:"sc-left",children:[(0,l.jsx)("div",{className:"stat-num",style:{color:Q},children:G.security.score}),(0,l.jsx)("div",{className:"kpi-sub",children:a("dash.openFindings",{n:G.security.open})})]}),(0,l.jsx)(x,{value:J,max:100,size:56,thickness:6,color:Q,center:String(G.security.open),sub:a("dash.openShort")})]}),(0,l.jsx)(v,{segments:Z,className:"sc-seg"}),(0,l.jsxs)("div",{className:"stat-chips",children:[(0,l.jsxs)("span",{className:G.security.high?"bad":"",children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-keyword)"}}),G.security.high," ",a("dash.sev.high")]}),(0,l.jsxs)("span",{children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-number)"}}),G.security.med," ",a("dash.sev.med")]}),(0,l.jsxs)("span",{children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-property)"}}),G.security.low," ",a("dash.sev.low")]})]}),(0,l.jsxs)("div",{className:"sc-foot",children:[(0,l.jsx)(t.I,{name:"refresh",size:11})," ",a("dash.lastScan")," ",R(G.security.lastScan)]})]}),(0,l.jsxs)("div",{className:"dash-card stat-card",style:{gridColumn:"span 3"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"target",size:14})," ",a("mod.goals")]}),(0,l.jsxs)("div",{className:"sc-body",children:[(0,l.jsxs)("div",{className:"sc-left",children:[(0,l.jsxs)("div",{className:"stat-num",children:[G.goals.avgProgress,(0,l.jsx)("span",{className:"stat-of",children:"%"})]}),(0,l.jsx)("div",{className:"kpi-sub",children:a("dash.avgActive",{n:G.goals.active})})]}),(0,l.jsx)(x,{value:G.goals.avgProgress,max:100,size:56,thickness:6,color:"var(--accent)"})]}),(0,l.jsx)(v,{segments:Y,className:"sc-seg"}),(0,l.jsxs)("div",{className:"stat-chips",children:[(0,l.jsxs)("span",{children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--accent)"}}),G.goals.active," ",a("dash.go.active")]}),(0,l.jsxs)("span",{children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-string)"}}),G.goals.done," ",a("dash.go.done")]}),(0,l.jsxs)("span",{className:G.goals.blocked?"bad":"",children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-keyword)"}}),G.goals.blocked," ",a("dash.go.blocked")]})]})]})]}),(0,l.jsxs)("div",{className:"dash-card",children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"pulse",size:14})," ",a("dash.healthTitle")]}),(0,l.jsx)("div",{className:"hcard-grid",children:c.health.map(e=>(0,l.jsxs)("div",{className:"hcard",children:[(0,l.jsxs)("div",{className:"hc-top",children:[(0,l.jsx)("span",{className:"hc-ic",children:(0,l.jsx)(t.I,{name:C[e.key]??"dot",size:14})}),(0,l.jsx)("span",{className:"hc-name",children:a("dash.health."+e.key)}),(0,l.jsx)("span",{className:"hdot "+e.status,style:{marginLeft:"auto"}})]}),(0,l.jsx)("div",{className:"hc-detail",children:e.detail}),(0,l.jsxs)("div",{className:"hc-foot",children:[(0,l.jsx)("span",{className:"hc-badge "+e.status,children:a("dash.hstatus."+e.status)}),"start-dev"===e.action||"reindex"===e.action||"start-loop"===e.action?(0,l.jsx)("button",{className:"hi-act",disabled:!!B,onClick:()=>"start-dev"===e.action?q("h-"+e.key,k):"reindex"===e.action?q("h-"+e.key,y.f):"start-loop"===e.action?q("h-"+e.key,()=>(0,f.D)("start")):void 0,children:B==="h-"+e.key?"…":a(S[e.action])}):e.href?(0,l.jsx)(i(),{className:"hi-act",href:e.href,children:a(S[e.action??"open"]??"dash.act.open")}):null]})]},e.key))})]}),(0,l.jsxs)("div",{className:"dash-grid",children:[(0,l.jsxs)("div",{className:"dash-card",style:{gridColumn:"span 7"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"play",size:14})," ",a("dash.execTitle")]}),c.execution&&"running"===c.execution.runState?(0,l.jsxs)("div",{className:"exec-panel",children:[(0,l.jsxs)("div",{className:"exec-head",children:[(0,l.jsx)("span",{className:"dotpulse"}),(0,l.jsx)("span",{className:"exec-goal",children:c.execution.goalTitle??c.execution.issueTitle??"—"}),c.execution.agentName&&(0,l.jsx)("span",{className:"exec-agent",children:c.execution.agentName}),(0,l.jsx)("span",{className:"exec-elapsed mono",children:c.execution.elapsedMs?R(Date.now()-c.execution.elapsedMs):""})]}),(0,l.jsxs)("div",{className:"exec-grid",children:[(0,l.jsxs)("div",{className:"exec-row",children:[(0,l.jsx)("span",{className:"ex-k",children:a("dash.exec.issue")}),(0,l.jsx)("span",{className:"ex-v",children:c.execution.issueTitle??"—"})]}),(0,l.jsxs)("div",{className:"exec-row",children:[(0,l.jsx)("span",{className:"ex-k",children:a("dash.exec.next")}),(0,l.jsx)("span",{className:"ex-v",children:c.execution.nextStep??"—"})]}),(0,l.jsxs)("div",{className:"exec-row",children:[(0,l.jsx)("span",{className:"ex-k",children:a("dash.exec.review")}),(0,l.jsx)("span",{className:"ex-v",children:c.execution.reviewOpen??0})]}),(0,l.jsxs)("div",{className:"exec-row",children:[(0,l.jsx)("span",{className:"ex-k",children:a("dash.exec.tests")}),(0,l.jsx)("span",{className:"ex-v",children:c.execution.testStatus?a("dash.test."+c.execution.testStatus):"—"})]}),(0,l.jsxs)("div",{className:"exec-row",children:[(0,l.jsx)("span",{className:"ex-k",children:a("dash.exec.locks")}),(0,l.jsx)("span",{className:"ex-v",children:c.execution.lockedFiles??0})]})]})]}):(0,l.jsxs)("div",{className:"exec-blank",children:[(0,l.jsx)("span",{className:"exec-blank-ic",children:(0,l.jsx)(t.I,{name:"play",size:22})}),(0,l.jsx)("div",{className:"exec-blank-t",children:a("dash.exec.none."+(c.execution?.runState??"idle"))}),(0,l.jsxs)("div",{className:"exec-cta",children:[(0,l.jsxs)(i(),{className:"btn-accent",href:"/planner",children:[(0,l.jsx)(t.I,{name:"target",size:13})," ",a("dash.exec.planner")]}),(0,l.jsxs)("button",{className:"btn-ghost",disabled:!!B,onClick:()=>q("loop",()=>(0,f.D)("off"===s?"start":"off")),children:[(0,l.jsx)(t.I,{name:"play",size:13})," ","off"===s?a("dash.exec.startLoop"):a("dash.exec.pauseLoop")]}),(0,l.jsxs)(i(),{className:"btn-ghost",href:"/inbox",children:[(0,l.jsx)(t.I,{name:"bell",size:13})," ",a("dash.exec.pending")]})]})]})]}),(0,l.jsxs)("div",{className:"dash-card",style:{gridColumn:"span 5"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"files",size:14})," ",a("dash.tasksByStatus")]}),(0,l.jsx)(v,{segments:c.tasksByCol.map(e=>({value:e.count,color:M[e.col]})),height:12,className:"tasks-seg"}),(0,l.jsx)("div",{className:"tasks-rows",children:c.tasksByCol.map(e=>{let s=K?Math.round(e.count/K*100):0;return(0,l.jsxs)(i(),{href:"/tasks",className:"taskrow",children:[(0,l.jsx)("span",{className:"tr-dot",style:{background:M[e.col]}}),(0,l.jsx)("span",{className:"tr-name",children:a("dash.col."+e.col)}),(0,l.jsx)("span",{className:"tr-track",children:(0,l.jsx)("span",{className:"tr-fill",style:{width:s+"%",background:M[e.col]}})}),(0,l.jsxs)("span",{className:"tr-val",children:[e.count,(0,l.jsxs)("span",{className:"tr-pct",children:[" ",s,"%"]})]})]},e.col)})})]})]}),(0,l.jsxs)("div",{className:"dash-grid",children:[(0,l.jsxs)("div",{className:"dash-card",style:{gridColumn:"span 7"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"bot",size:14})," ",a("dash.activeAgents")]}),0===c.agents.length?(0,l.jsxs)("div",{className:"exec-blank",children:[(0,l.jsx)("span",{className:"exec-blank-ic",children:(0,l.jsx)(t.I,{name:"bot",size:22})}),(0,l.jsx)("div",{className:"exec-blank-t",children:a("dash.noActive")}),(0,l.jsxs)("div",{className:"exec-cta",children:[(0,l.jsxs)("button",{className:"btn-accent",disabled:!!B,onClick:()=>q("loop",()=>(0,f.D)("start")),children:[(0,l.jsx)(t.I,{name:"play",size:13})," ",a("dash.exec.startLoop")]}),(0,l.jsxs)(i(),{className:"btn-ghost",href:"/agents/ada",children:[(0,l.jsx)(t.I,{name:"agents",size:13})," ",a("dash.openStudio")]}),(0,l.jsxs)(i(),{className:"btn-ghost",href:"/config",children:[(0,l.jsx)(t.I,{name:"settings",size:13})," ",a("dash.runConfig")]})]})]}):(0,l.jsx)("div",{className:"agent-grid",children:c.agents.map(e=>{let s=c.costByAgent[e.id]??0;return(0,l.jsxs)("div",{className:"agent-card",children:[(0,l.jsx)(d.e,{name:e.name,color:e.color,size:32,health:e.health}),(0,l.jsxs)("div",{className:"ac-main",children:[(0,l.jsxs)("div",{className:"ac-top",children:[(0,l.jsx)("span",{className:"ac-name",children:e.name}),(0,l.jsx)(r.m,{status:e.status})]}),(0,l.jsxs)("div",{className:"ac-meta",children:[(0,l.jsx)("span",{className:"ac-model mono",children:e.model}),s>0&&(0,l.jsx)("span",{className:"ac-cost",children:$(s)})]}),(0,l.jsx)("div",{className:"ac-task",children:e.taskTitle??a("dash.ag."+e.status)}),(0,l.jsxs)("div",{className:"ac-hb",children:[(0,l.jsx)(t.I,{name:"pulse",size:10})," ",R(e.lastPulseMs)]})]})]},e.id)})})]}),(0,l.jsxs)("div",{className:"dash-card",style:{gridColumn:"span 5"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"bell",size:14})," ",a("dash.alerts")]}),0===c.alerts.length?(0,l.jsx)("div",{className:"home-empty",children:a("dash.nothingNeedsYou")}):c.alerts.map(e=>(0,l.jsxs)(i(),{href:"/inbox",className:"alert-group",children:[(0,l.jsx)("span",{className:"ag-badge p"+e.priority,children:e.count}),(0,l.jsxs)("span",{className:"ag-text",children:[a("dash.alert."+e.kind),e.agentName?` \xb7 ${e.agentName}`:""]}),(0,l.jsx)("span",{className:"ag-time",children:R(e.latestAtMs)})]},e.key))]})]}),c.problems.length>0&&(0,l.jsxs)("div",{className:"dash-card",children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"warn",size:14})," ",a("dash.problemsTitle")]}),c.problems.map(e=>(0,l.jsxs)("div",{className:"problem-row",children:[(0,l.jsx)("span",{className:"prob-sev "+e.severity,children:a("dash.sev."+e.severity)}),(0,l.jsxs)("div",{className:"pr-main",children:[(0,l.jsx)("div",{className:"pr-title",children:a(e.title)}),(0,l.jsx)("div",{className:"pr-impact",children:a(e.impact)})]}),(0,l.jsx)(i(),{className:"hi-act",href:e.href,children:a(S[e.action]??"dash.act.open")})]},e.key))]}),(0,l.jsxs)("div",{className:"dash-grid",children:[(0,l.jsxs)("div",{className:"dash-card",style:{gridColumn:"span 7"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"knowledge",size:14})," ",a("dash.kbTitle")]}),0===c.kb.chunks?(0,l.jsxs)("div",{className:"exec-blank",children:[(0,l.jsx)("span",{className:"exec-blank-ic",children:(0,l.jsx)(t.I,{name:"knowledge",size:22})}),(0,l.jsx)("div",{className:"exec-blank-t",children:a("dash.kb.empty")}),(0,l.jsxs)("div",{className:"exec-cta",children:[(0,l.jsxs)("button",{className:"btn-accent",disabled:!!B,onClick:()=>q("kb-seed",I.V),children:[(0,l.jsx)(t.I,{name:"add",size:13})," ",a("dash.kb.createBlocks")]}),(0,l.jsxs)(i(),{className:"btn-ghost",href:"/knowledge",children:[(0,l.jsx)(t.I,{name:"knowledge",size:13})," ",a("dash.kb.open")]})]})]}):(0,l.jsxs)("div",{className:"kb-body",children:[(0,l.jsxs)("div",{className:"kb-donut",children:[(0,l.jsx)(m,{segments:es,size:104,thickness:13,center:String(ea),sub:el}),(0,l.jsx)("div",{className:"kb-legend",children:ee?c.kbByType.slice(0,6).map((e,s)=>(0,l.jsxs)("span",{className:"kb-leg",children:[(0,l.jsx)("i",{className:"dotc",style:{background:h[s%h.length]}}),e.type," ",(0,l.jsx)("b",{children:e.total})]},e.type)):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("span",{className:"kb-leg",children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--sx-string)"}}),a("dash.kb.embeddings")," ",(0,l.jsx)("b",{children:c.kb.embeddings})]}),(0,l.jsxs)("span",{className:"kb-leg",children:[(0,l.jsx)("i",{className:"dotc",style:{background:"var(--bg-active)"}}),a("dash.kb.chunks")," ",(0,l.jsx)("b",{children:c.kb.chunks})]})]})})]}),(0,l.jsxs)("div",{className:"kb-right",children:[(0,l.jsxs)("div",{className:"kb-tiles",children:[(0,l.jsxs)("div",{className:"ks",children:[(0,l.jsx)("div",{className:"ks-v",children:c.kb.chunks}),(0,l.jsx)("div",{className:"ks-k",children:a("dash.kb.chunks")})]}),(0,l.jsxs)("div",{className:"ks",children:[(0,l.jsx)("div",{className:"ks-v",children:c.kb.embeddings}),(0,l.jsx)("div",{className:"ks-k",children:a("dash.kb.embeddings")})]}),(0,l.jsxs)("div",{className:"ks",children:[(0,l.jsx)("div",{className:"ks-v",children:c.kb.recentQueries}),(0,l.jsx)("div",{className:"ks-k",children:a("dash.kb.queries")})]}),(0,l.jsxs)("div",{className:"ks",children:[(0,l.jsx)("div",{className:"ks-v"+(c.kb.gaps?" warn":""),children:c.kb.gaps}),(0,l.jsx)("div",{className:"ks-k",children:a("dash.kb.gaps")})]}),(0,l.jsxs)("div",{className:"ks",children:[(0,l.jsx)("div",{className:"ks-v",children:R(c.kb.lastReindexMs)}),(0,l.jsx)("div",{className:"ks-k",children:a("dash.kb.lastReindex")})]}),(0,l.jsxs)("div",{className:"ks",children:[(0,l.jsx)("div",{className:"ks-v"+(c.kb.semantic?"":" warn"),children:c.kb.semantic?"●":"○"}),(0,l.jsx)("div",{className:"ks-k",children:a("dash.kb.semantic")})]})]}),(0,l.jsxs)("div",{className:"exec-cta",children:[(0,l.jsxs)(i(),{className:"btn-ghost",href:"/knowledge",children:[(0,l.jsx)(t.I,{name:"knowledge",size:13})," ",a("dash.kb.open")]}),(0,l.jsxs)("button",{className:"btn-ghost",disabled:!!B,onClick:()=>q("kb-reindex",y.f),children:[(0,l.jsx)(t.I,{name:"refresh",size:13})," ",a("dash.kb.reindex")]}),(0,l.jsxs)("button",{className:"btn-ghost",disabled:!!B,onClick:()=>q("kb-curate",w.O),children:[(0,l.jsx)(t.I,{name:"skill",size:13})," ",a("dash.kb.curate")]})]})]})]})]}),(0,l.jsxs)("div",{className:"dash-card",style:{gridColumn:"span 5"},children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"ext",size:14})," ",a("dash.integTitle")]}),(0,l.jsx)("div",{className:"integ-grid",children:c.integrations.map(e=>(0,l.jsxs)("div",{className:"integ-card",children:[(0,l.jsx)("span",{className:"ic-ic",children:(0,l.jsx)(t.I,{name:L[e.key]??"ext",size:14})}),(0,l.jsxs)("div",{className:"ic-main",children:[(0,l.jsx)("div",{className:"ic-name",children:a("dash.integ."+e.key)}),(0,l.jsx)("div",{className:"ic-detail",children:e.detail})]}),(0,l.jsx)("span",{className:"integ-chip "+e.status,children:a("dash.integStatus."+e.status)})]},e.key))})]})]}),c.locks.length>0&&(0,l.jsxs)("div",{className:"dash-card",children:[(0,l.jsxs)("h3",{children:[(0,l.jsx)(t.I,{name:"files",size:14})," ",a("dash.locksTitle")]}),c.locks.map(e=>(0,l.jsxs)("div",{className:"lock-row",children:[(0,l.jsx)(t.I,{name:"files",size:13}),(0,l.jsx)("span",{className:"lk-path mono",children:e.path}),(0,l.jsxs)("span",{className:"lk-by",children:["@",e.agentHandle]}),(0,l.jsx)("button",{className:"hi-act",disabled:!!B,onClick:()=>q("lock-"+e.path,()=>N(e.path)),children:a("dash.locks.release")})]},e.path))]})]})}},9491:(e,s,a)=>{"use strict";a.d(s,{m:()=>c});var l=a(4275);let n={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 c({status:e,label:s=!1,size:a=8}){let i=n[e]??n.idle;return(0,l.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5},title:i.label,children:[i.pulse?(0,l.jsx)("span",{className:"dotpulse"}):(0,l.jsx)("span",{style:{width:a,height:a,borderRadius:"50%",background:i.c,display:"inline-block",flex:`0 0 ${a}px`}}),s&&(0,l.jsx)("span",{style:{fontSize:11,color:i.c,fontWeight:600},children:i.label})]})}}},e=>{e.O(0,[928,171,8834,7218,2235,7066,7358],()=>e(e.s=6469)),_N_E=e.O()}]);
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[338],{5874:(e,t,a)=>{"use strict";a.d(t,{j:()=>n});var r=a(7797);let n=(0,r.createServerReference)("000197b130ec53acb1bf865af0bd6cf00016ba34f4",r.callServer,void 0,r.findSourceMapURL,"devServerStatusAction")},7564:(e,t,a)=>{"use strict";a.d(t,{K:()=>n});var r=a(7797);let n=(0,r.createServerReference)("40019c929b3f4d4dbb0df8da0a5f7b239141e4ed0a",r.callServer,void 0,r.findSourceMapURL,"previewFrameableAction")},7654:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,9746,23)),Promise.resolve().then(a.bind(a,8693)),Promise.resolve().then(a.bind(a,6032)),Promise.resolve().then(a.bind(a,8183)),Promise.resolve().then(a.bind(a,4822)),Promise.resolve().then(a.bind(a,24)),Promise.resolve().then(a.bind(a,2454)),Promise.resolve().then(a.bind(a,9508)),Promise.resolve().then(a.bind(a,3891))},7902:(e,t,a)=>{"use strict";a.d(t,{R:()=>n});var r=a(7797);let n=(0,r.createServerReference)("00930ce046f9bfbd1af19ed9f127d55e5366f84688",r.callServer,void 0,r.findSourceMapURL,"startDevServerAction")},8693:(e,t,a)=>{"use strict";a.d(t,{DesignClient:()=>ed});var r=a(4275),n=a(2899),s=a(6295),i=a(869),o=a(888),d=a(5904),l=a(3395),c=a(7492),p=a(7558),u=a(7797);let g=(0,u.createServerReference)("40bac470c1253b0cd0dc683537b3cf5462d92020bc",u.callServer,void 0,u.findSourceMapURL,"getDesignScreen"),m=(0,u.createServerReference)("4067307ce089b31d3e494ed9c0f93d9847b649e934",u.callServer,void 0,u.findSourceMapURL,"setTokens"),h=(0,u.createServerReference)("7080b27ff6dfc3db037e16c1bfcb0dbdd6e39da61a",u.callServer,void 0,u.findSourceMapURL,"askDesign"),x=(0,u.createServerReference)("40a8566bc9a80a001d82131f509bd374af991b76ff",u.callServer,void 0,u.findSourceMapURL,"listDesignComments"),b=(0,u.createServerReference)("008f3863abc603d341052a4bbab8ce9243ad029880",u.callServer,void 0,u.findSourceMapURL,"listDesignVersions"),f=(0,u.createServerReference)("000e9041aeb30b4c8ca71341990e208d68b7b21b7f",u.callServer,void 0,u.findSourceMapURL,"listDesignDocs"),v=(0,u.createServerReference)("40aa8544982f3077cdbc78e57a1bc7a1d078a5035f",u.callServer,void 0,u.findSourceMapURL,"readDesignDoc"),y=(0,u.createServerReference)("00a3c4b5a13e1dde6efab6d5421a9232dfd87a4689",u.callServer,void 0,u.findSourceMapURL,"scaffoldDesignFromBrief"),z=(0,u.createServerReference)("602d70d47f8248807f19f7af7595ad03cb510362f1",u.callServer,void 0,u.findSourceMapURL,"commitDesignScreen"),w=(0,u.createServerReference)("400df4e1324216021f528585fdf52bcbb465ae43c6",u.callServer,void 0,u.findSourceMapURL,"saveDesignCheckpoint"),k=(0,u.createServerReference)("700861576230a313df69af7bb3b2ad32c90963e9fe",u.callServer,void 0,u.findSourceMapURL,"applyDesignTextEdit"),j=(0,u.createServerReference)("40c1f693730c73d3ea25cb7fead89fbeddc38941bf",u.callServer,void 0,u.findSourceMapURL,"approveDesign"),N=(0,u.createServerReference)("007d2d9dd848b3415490b6f32875e692d898958ab6",u.callServer,void 0,u.findSourceMapURL,"handoffToExecution"),S=(0,u.createServerReference)("00881dc144c821d03ec1349f977507a79eb62c08b9",u.callServer,void 0,u.findSourceMapURL,"resumeDesignHandoff"),C=(0,u.createServerReference)("000775aa288b626c1a9d42728f9f4ff7d9d3d468d4",u.callServer,void 0,u.findSourceMapURL,"buildDesignProduction"),I=(0,u.createServerReference)("7092594720b30422789b60560e0e360acd53a13329",u.callServer,void 0,u.findSourceMapURL,"addDesignMarkup"),E=(0,u.createServerReference)("7cd67f9da791307c34e973ce5935ff3ebdb540ece0",u.callServer,void 0,u.findSourceMapURL,"addDesignComment"),M=(0,u.createServerReference)("40b8490ba2b7dd406f11ea61518ad8761bb15ca558",u.callServer,void 0,u.findSourceMapURL,"deleteDesignComment"),T=(0,u.createServerReference)("40103701dbb018905c3123a247995125d8a7bd4d7a",u.callServer,void 0,u.findSourceMapURL,"restoreDesignCheckpoint"),R=(0,u.createServerReference)("60e6e05368a96761ba5c0fb9a1542975b0e1812ac5",u.callServer,void 0,u.findSourceMapURL,"restoreDesignVersion");var D=a(8343),P=a(6054);let A=`(function(){
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[338],{358:(e,t,a)=>{"use strict";a.d(t,{j:()=>n});var r=a(7797);let n=(0,r.createServerReference)("00b498e03039c3b92608017ce7cca973d20d814eb9",r.callServer,void 0,r.findSourceMapURL,"devServerStatusAction")},1059:(e,t,a)=>{"use strict";a.d(t,{K:()=>n});var r=a(7797);let n=(0,r.createServerReference)("40e1d428a35224b686669e65eb8c74dc34e5ce1d04",r.callServer,void 0,r.findSourceMapURL,"previewFrameableAction")},2505:(e,t,a)=>{"use strict";a.d(t,{DesignClient:()=>ed});var r=a(4275),n=a(2899),s=a(6295),i=a(869),o=a(888),d=a(5904),l=a(1995),c=a(7674),p=a(3090),u=a(7797);let g=(0,u.createServerReference)("409118314a7a1407dced0019746ab3104f7f606cc9",u.callServer,void 0,u.findSourceMapURL,"getDesignScreen"),m=(0,u.createServerReference)("404d32bd38a894413e933deedd06e31bfa181a6524",u.callServer,void 0,u.findSourceMapURL,"setTokens"),h=(0,u.createServerReference)("704a45ad07676351351b4cca4b8ab85e3d36edc44b",u.callServer,void 0,u.findSourceMapURL,"askDesign"),x=(0,u.createServerReference)("4038ee006992bbe00c928c2a081d59d03db17e434a",u.callServer,void 0,u.findSourceMapURL,"listDesignComments"),b=(0,u.createServerReference)("001e0576d5722123766a79fcba07b464a665a26402",u.callServer,void 0,u.findSourceMapURL,"listDesignVersions"),f=(0,u.createServerReference)("0066100dc8904c58a270ededd9857f10c67f424e9a",u.callServer,void 0,u.findSourceMapURL,"listDesignDocs"),v=(0,u.createServerReference)("408e51a879a77d25604c2b85bb002e2373ab8c0ae1",u.callServer,void 0,u.findSourceMapURL,"readDesignDoc"),y=(0,u.createServerReference)("00f7e3bbdceff614c56d9c0618217f6a37237e9dad",u.callServer,void 0,u.findSourceMapURL,"scaffoldDesignFromBrief"),z=(0,u.createServerReference)("60a685a091cc086759e0a7d00c75403864402da012",u.callServer,void 0,u.findSourceMapURL,"commitDesignScreen"),w=(0,u.createServerReference)("40617eca80dbc17c4fc05884e3336cce12cb2fa80c",u.callServer,void 0,u.findSourceMapURL,"saveDesignCheckpoint"),k=(0,u.createServerReference)("7082813cc5d60c4c7e6099074897c0c6b957669cb1",u.callServer,void 0,u.findSourceMapURL,"applyDesignTextEdit"),j=(0,u.createServerReference)("40b3031c8c4279dc082ccfde198b7db577a038b4ab",u.callServer,void 0,u.findSourceMapURL,"approveDesign"),N=(0,u.createServerReference)("00efa77c9d731961785a5b1e7f07bb860469145e1c",u.callServer,void 0,u.findSourceMapURL,"handoffToExecution"),S=(0,u.createServerReference)("00fea79ea40487a21c226cf5b24f305d5e64f4526a",u.callServer,void 0,u.findSourceMapURL,"resumeDesignHandoff"),C=(0,u.createServerReference)("001425f60c0da2dd1d0eee8afc70c30f2d6d02d1d7",u.callServer,void 0,u.findSourceMapURL,"buildDesignProduction"),I=(0,u.createServerReference)("7030d12184597a6da83165a9b71b4d847ac22e61cc",u.callServer,void 0,u.findSourceMapURL,"addDesignMarkup"),E=(0,u.createServerReference)("7cda87ea6eaf270f89f1eabe473a45cb38fb38794a",u.callServer,void 0,u.findSourceMapURL,"addDesignComment"),M=(0,u.createServerReference)("404dd3ea890bd8d8c53efffa4c45fa5c32992979cf",u.callServer,void 0,u.findSourceMapURL,"deleteDesignComment"),T=(0,u.createServerReference)("4047586cae3d36c60610b8172dd5f77a78848f6cf2",u.callServer,void 0,u.findSourceMapURL,"restoreDesignCheckpoint"),R=(0,u.createServerReference)("60fc13c761fc83ddb2f356490bc36ff0752e8ee7a3",u.callServer,void 0,u.findSourceMapURL,"restoreDesignVersion");var D=a(8343),P=a(6054);let A=`(function(){
2
2
  var MODE = "select";
3
3
  var ZOOM = 1, ZOX = 0, ZOY = 0;
4
4
 
@@ -300,7 +300,7 @@
300
300
  post("canvas:ready", { interactive: INTERACTIVE });
301
301
  if(!INTERACTIVE) post("canvas:baseline", { html: serializeBody() }); // history/persist only for static screens
302
302
  setTimeout(emitTree, 80);
303
- })();`;var L=a(7280),O=a(6466),W=a(379),$=a(5874),H=a(7564),F=a(7902);let U=(0,u.createServerReference)("0011588f6fe8674c7176a940ff9feb94f0d7019cbf",u.callServer,void 0,u.findSourceMapURL,"stopLiveInspectAction"),B=(0,u.createServerReference)("00e5801971a984c426a1d1c4adcd9eaff741489733",u.callServer,void 0,u.findSourceMapURL,"startLiveInspectAction"),X=[{id:"desktop",w:"100%",label:"Desktop"},{id:"tablet",w:"768px",label:"Tablet"},{id:"mobile",w:"390px",label:"Mobile"}];function Y({onAskGrace:e,asking:t}){let[a,s]=(0,n.useState)({running:!1,status:"idle",logs:[]}),[i,d]=(0,n.useTransition)(),[l,c]=(0,n.useState)(""),[p,u]=(0,n.useState)(""),[g,m]=(0,n.useState)(0),[h,x]=(0,n.useState)("desktop"),[b,f]=(0,n.useState)(!0),[v,y]=(0,n.useState)(""),[z,w]=(0,n.useState)(!1),[k,j]=(0,n.useState)(""),[N,S]=(0,n.useTransition)(),[C,I]=(0,n.useState)(""),[E,M]=(0,n.useState)(null),T=(0,n.useRef)(null),R=a.url??"",D="running"===a.status&&!!R,P=X.find(e=>e.id===h)?.w??"100%",A=(z&&k?k:p)||R,L=(0,n.useRef)(a.status);return L.current=a.status,(0,n.useEffect)(()=>{let e=!0;(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{});let t=setInterval(()=>{"running"===L.current||"error"===L.current?clearInterval(t):(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{})},3e3);return()=>{e=!1,clearInterval(t)}},[]),(0,n.useEffect)(()=>{R?(c(e=>e||R),u(e=>e||R)):(c(""),u(""))},[R]),(0,n.useEffect)(()=>{if(!D||!p)return void f(!0);let e=!0;return(0,H.K)(p).then(t=>{e&&f(t.frameable)}).catch(()=>{}),()=>{e=!1}},[D,p,g]),(0,n.useEffect)(()=>{function e(e){if(e.source!==T.current?.contentWindow)return;let t=e.data;if(t&&t.__cstlaLive)if("live:ready"===t.type)try{T.current?.contentWindow?.postMessage({__cstlaLiveHost:1,type:"live:setMode",mode:z?"inspect":"off"},"*")}catch{}else"live:select"===t.type&&t.payload&&M(t.payload)}return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[z]),(0,r.jsxs)("div",{style:{position:"absolute",inset:0,zIndex:40,display:"flex",flexDirection:"column",background:"var(--bg-app)"},children:[(0,r.jsxs)("div",{className:"dz-live-bar",children:[(0,r.jsx)("span",{className:"dz-live-dot "+(D?"on":"error"===a.status?"err":"")}),(0,r.jsx)("button",{className:"dz-ico",title:"Reload",disabled:!D,onClick:()=>m(e=>e+1),children:(0,r.jsx)(o.I,{name:"refresh",size:14})}),(0,r.jsxs)("form",{className:"dz-live-addr",onSubmit:function(e){let t;e?.preventDefault();let a=(t=l.trim())?/^https?:\/\//i.test(t)?t:R.replace(/\/$/,"")+(t.startsWith("/")?t:"/"+t):R;u(a),c(a),m(e=>e+1)},children:[(0,r.jsx)(o.I,{name:D?"shield":"goto",size:12}),(0,r.jsx)("input",{value:l,placeholder:R||"the app isn't running yet",disabled:!D||z,onChange:e=>c(e.target.value),spellCheck:!1})]}),(0,r.jsx)("button",{className:"dz-ico"+(z?" on":""),title:z?"Inspecting — click an element to target it (click again to turn off)":"Inspect: click a real element to ask Grace to change it",disabled:!D||N,onClick:function(){if(I(""),z){w(!1),M(null),m(e=>e+1),U().catch(()=>{});return}S(async()=>{try{let e=await B();if(!e.ok||!e.url)return void I(e.error||"Couldn't start inspect.");j(e.url),w(!0),M(null),m(e=>e+1)}catch{I("Couldn't start inspect.")}})},children:(0,r.jsx)(o.I,{name:N?"refresh":"target",size:14,className:N?"sync-spin":""})}),(0,r.jsx)("div",{className:"dz-seg",children:X.map(e=>(0,r.jsx)("button",{className:h===e.id?"on":"",disabled:!D,onClick:()=>x(e.id),children:e.label},e.id))}),D&&(0,r.jsx)("a",{className:"dz-ico",title:"Open in a new tab",href:p,target:"_blank",rel:"noreferrer",children:(0,r.jsx)(o.I,{name:"goto",size:14})})]}),C&&(0,r.jsx)("div",{className:"dz-uperr",style:{margin:"0 10px"},children:C}),(0,r.jsx)("div",{className:"dz-live-stage",children:D&&!b?(0,r.jsxs)("div",{className:"dz-live-empty",children:[(0,r.jsx)(o.I,{name:"shield",size:26}),(0,r.jsx)("div",{className:"t",children:"The app blocks embedding"}),(0,r.jsx)("div",{className:"s",children:"It sends X-Frame-Options / CSP that prevents the preview frame."}),(0,r.jsxs)("a",{className:"btn-accent",style:{marginTop:10},href:p,target:"_blank",rel:"noreferrer",children:[(0,r.jsx)(o.I,{name:"goto",size:13})," Open in a new tab"]})]}):D?(0,r.jsx)("iframe",{ref:T,className:"dz-live-frame",src:A,style:{width:P,maxWidth:"100%"},title:"Live app preview",onLoad:()=>{try{T.current?.contentWindow?.postMessage({__cstlaLiveHost:1,type:"live:setMode",mode:z?"inspect":"off"},"*")}catch{}},sandbox:"allow-scripts allow-same-origin allow-forms allow-popups allow-modals allow-downloads"},A+":"+g):(0,r.jsxs)("div",{className:"dz-live-empty",children:[(0,r.jsx)("span",{className:i||"starting"===a.status?"sync-spin":"",children:(0,r.jsx)(o.I,{name:i||"starting"===a.status?"refresh":"play",size:26})}),(0,r.jsx)("div",{className:"t",children:"error"===a.status?"The dev server failed to start":i||"starting"===a.status?"Starting the dev server…":"Run the real app"}),(0,r.jsx)("div",{className:"s",children:"error"===a.status?"Check the project boots (Test Dev shows the logs).":"Boot the project's dev server to see the real running app here — any stack."}),"running"!==a.status&&"starting"!==a.status&&!i&&(0,r.jsxs)("button",{className:"btn-accent",style:{marginTop:10},onClick:function(){d(async()=>{try{let e=await (0,F.R)();s(e)}catch{}})},children:[(0,r.jsx)(o.I,{name:"play",size:13})," Start the app"]})]})}),E&&(0,r.jsxs)("div",{className:"dz-attach",style:{margin:"0 10px 6px"},children:[(0,r.jsx)("span",{className:"sw",style:{background:"#6366f1"}})," Editing ",(0,r.jsxs)("b",{style:{fontWeight:700},children:["<",E.tag,">",E.id?" #"+E.id:""]}),E.text?` \xb7 “${E.text.slice(0,40)}”`:"",(0,r.jsx)("span",{className:"x",onClick:()=>M(null),children:(0,r.jsx)(o.I,{name:"close",size:12})})]}),(0,r.jsxs)("form",{className:"dz-live-ask",onSubmit:function(a){a?.preventDefault();let r=v.trim();if(r&&!t){if(E){let t=[`<${E.tag}>`,E.id?`#${E.id}`:"",E.text?`text "${E.text}"`:"",E.landmark?`in "${E.landmark}"`:"",`selector \`${E.selector}\``,`on route ${E.path}`].filter(Boolean).join(" \xb7 ");e(`On the live app, change THIS element (${t}) — edit the real source, keep everything else intact: ${r}`)}else e(`On the live app: ${r}`);y(""),M(null)}},children:[(0,r.jsx)(o.I,{name:"skill",size:14}),(0,r.jsx)("input",{value:v,placeholder:E?"Describe the change to this element — Grace edits the real source…":"Ask Grace to change the live app — she edits the real source (HMR repaints it)…",onChange:e=>y(e.target.value),disabled:t}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:t||!v.trim(),type:"submit",children:[(0,r.jsx)(o.I,{name:t?"refresh":"send",size:13,className:t?"sync-spin":""})," Ask Grace"]})]})]})}let G=`
303
+ })();`;var L=a(6268),O=a(953),W=a(379),$=a(358),H=a(1059),F=a(6206);let U=(0,u.createServerReference)("00dcead2b0a30143fabfb7089cd18130a9e2493036",u.callServer,void 0,u.findSourceMapURL,"stopLiveInspectAction"),B=(0,u.createServerReference)("00cc6a4a8d7fbc1c44ae2272bd07ec8b2505315ca0",u.callServer,void 0,u.findSourceMapURL,"startLiveInspectAction"),X=[{id:"desktop",w:"100%",label:"Desktop"},{id:"tablet",w:"768px",label:"Tablet"},{id:"mobile",w:"390px",label:"Mobile"}];function Y({onAskGrace:e,asking:t}){let[a,s]=(0,n.useState)({running:!1,status:"idle",logs:[]}),[i,d]=(0,n.useTransition)(),[l,c]=(0,n.useState)(""),[p,u]=(0,n.useState)(""),[g,m]=(0,n.useState)(0),[h,x]=(0,n.useState)("desktop"),[b,f]=(0,n.useState)(!0),[v,y]=(0,n.useState)(""),[z,w]=(0,n.useState)(!1),[k,j]=(0,n.useState)(""),[N,S]=(0,n.useTransition)(),[C,I]=(0,n.useState)(""),[E,M]=(0,n.useState)(null),T=(0,n.useRef)(null),R=a.url??"",D="running"===a.status&&!!R,P=X.find(e=>e.id===h)?.w??"100%",A=(z&&k?k:p)||R,L=(0,n.useRef)(a.status);return L.current=a.status,(0,n.useEffect)(()=>{let e=!0;(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{});let t=setInterval(()=>{"running"===L.current||"error"===L.current?clearInterval(t):(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{})},3e3);return()=>{e=!1,clearInterval(t)}},[]),(0,n.useEffect)(()=>{R?(c(e=>e||R),u(e=>e||R)):(c(""),u(""))},[R]),(0,n.useEffect)(()=>{if(!D||!p)return void f(!0);let e=!0;return(0,H.K)(p).then(t=>{e&&f(t.frameable)}).catch(()=>{}),()=>{e=!1}},[D,p,g]),(0,n.useEffect)(()=>{function e(e){if(e.source!==T.current?.contentWindow)return;let t=e.data;if(t&&t.__cstlaLive)if("live:ready"===t.type)try{T.current?.contentWindow?.postMessage({__cstlaLiveHost:1,type:"live:setMode",mode:z?"inspect":"off"},"*")}catch{}else"live:select"===t.type&&t.payload&&M(t.payload)}return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[z]),(0,r.jsxs)("div",{style:{position:"absolute",inset:0,zIndex:40,display:"flex",flexDirection:"column",background:"var(--bg-app)"},children:[(0,r.jsxs)("div",{className:"dz-live-bar",children:[(0,r.jsx)("span",{className:"dz-live-dot "+(D?"on":"error"===a.status?"err":"")}),(0,r.jsx)("button",{className:"dz-ico",title:"Reload",disabled:!D,onClick:()=>m(e=>e+1),children:(0,r.jsx)(o.I,{name:"refresh",size:14})}),(0,r.jsxs)("form",{className:"dz-live-addr",onSubmit:function(e){let t;e?.preventDefault();let a=(t=l.trim())?/^https?:\/\//i.test(t)?t:R.replace(/\/$/,"")+(t.startsWith("/")?t:"/"+t):R;u(a),c(a),m(e=>e+1)},children:[(0,r.jsx)(o.I,{name:D?"shield":"goto",size:12}),(0,r.jsx)("input",{value:l,placeholder:R||"the app isn't running yet",disabled:!D||z,onChange:e=>c(e.target.value),spellCheck:!1})]}),(0,r.jsx)("button",{className:"dz-ico"+(z?" on":""),title:z?"Inspecting — click an element to target it (click again to turn off)":"Inspect: click a real element to ask Grace to change it",disabled:!D||N,onClick:function(){if(I(""),z){w(!1),M(null),m(e=>e+1),U().catch(()=>{});return}S(async()=>{try{let e=await B();if(!e.ok||!e.url)return void I(e.error||"Couldn't start inspect.");j(e.url),w(!0),M(null),m(e=>e+1)}catch{I("Couldn't start inspect.")}})},children:(0,r.jsx)(o.I,{name:N?"refresh":"target",size:14,className:N?"sync-spin":""})}),(0,r.jsx)("div",{className:"dz-seg",children:X.map(e=>(0,r.jsx)("button",{className:h===e.id?"on":"",disabled:!D,onClick:()=>x(e.id),children:e.label},e.id))}),D&&(0,r.jsx)("a",{className:"dz-ico",title:"Open in a new tab",href:p,target:"_blank",rel:"noreferrer",children:(0,r.jsx)(o.I,{name:"goto",size:14})})]}),C&&(0,r.jsx)("div",{className:"dz-uperr",style:{margin:"0 10px"},children:C}),(0,r.jsx)("div",{className:"dz-live-stage",children:D&&!b?(0,r.jsxs)("div",{className:"dz-live-empty",children:[(0,r.jsx)(o.I,{name:"shield",size:26}),(0,r.jsx)("div",{className:"t",children:"The app blocks embedding"}),(0,r.jsx)("div",{className:"s",children:"It sends X-Frame-Options / CSP that prevents the preview frame."}),(0,r.jsxs)("a",{className:"btn-accent",style:{marginTop:10},href:p,target:"_blank",rel:"noreferrer",children:[(0,r.jsx)(o.I,{name:"goto",size:13})," Open in a new tab"]})]}):D?(0,r.jsx)("iframe",{ref:T,className:"dz-live-frame",src:A,style:{width:P,maxWidth:"100%"},title:"Live app preview",onLoad:()=>{try{T.current?.contentWindow?.postMessage({__cstlaLiveHost:1,type:"live:setMode",mode:z?"inspect":"off"},"*")}catch{}},sandbox:"allow-scripts allow-same-origin allow-forms allow-popups allow-modals allow-downloads"},A+":"+g):(0,r.jsxs)("div",{className:"dz-live-empty",children:[(0,r.jsx)("span",{className:i||"starting"===a.status?"sync-spin":"",children:(0,r.jsx)(o.I,{name:i||"starting"===a.status?"refresh":"play",size:26})}),(0,r.jsx)("div",{className:"t",children:"error"===a.status?"The dev server failed to start":i||"starting"===a.status?"Starting the dev server…":"Run the real app"}),(0,r.jsx)("div",{className:"s",children:"error"===a.status?"Check the project boots (Test Dev shows the logs).":"Boot the project's dev server to see the real running app here — any stack."}),"running"!==a.status&&"starting"!==a.status&&!i&&(0,r.jsxs)("button",{className:"btn-accent",style:{marginTop:10},onClick:function(){d(async()=>{try{let e=await (0,F.R)();s(e)}catch{}})},children:[(0,r.jsx)(o.I,{name:"play",size:13})," Start the app"]})]})}),E&&(0,r.jsxs)("div",{className:"dz-attach",style:{margin:"0 10px 6px"},children:[(0,r.jsx)("span",{className:"sw",style:{background:"#6366f1"}})," Editing ",(0,r.jsxs)("b",{style:{fontWeight:700},children:["<",E.tag,">",E.id?" #"+E.id:""]}),E.text?` \xb7 “${E.text.slice(0,40)}”`:"",(0,r.jsx)("span",{className:"x",onClick:()=>M(null),children:(0,r.jsx)(o.I,{name:"close",size:12})})]}),(0,r.jsxs)("form",{className:"dz-live-ask",onSubmit:function(a){a?.preventDefault();let r=v.trim();if(r&&!t){if(E){let t=[`<${E.tag}>`,E.id?`#${E.id}`:"",E.text?`text "${E.text}"`:"",E.landmark?`in "${E.landmark}"`:"",`selector \`${E.selector}\``,`on route ${E.path}`].filter(Boolean).join(" \xb7 ");e(`On the live app, change THIS element (${t}) — edit the real source, keep everything else intact: ${r}`)}else e(`On the live app: ${r}`);y(""),M(null)}},children:[(0,r.jsx)(o.I,{name:"skill",size:14}),(0,r.jsx)("input",{value:v,placeholder:E?"Describe the change to this element — Grace edits the real source…":"Ask Grace to change the live app — she edits the real source (HMR repaints it)…",onChange:e=>y(e.target.value),disabled:t}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:t||!v.trim(),type:"submit",children:[(0,r.jsx)(o.I,{name:t?"refresh":"send",size:13,className:t?"sync-spin":""})," Ask Grace"]})]})]})}let G=`
304
304
  .dz-wrap{flex:1;min-height:480px;display:flex;background:var(--bg-app);position:relative;height:100%;}
305
305
  .dz-chat{width:312px;flex:0 0 312px;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border-subtle);background:var(--bg-panel);}
306
306
  .dz-chat-head{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-subtle);}
@@ -555,4 +555,4 @@
555
555
  .dz-seg-mini{display:flex;background:var(--bg-app);border:1px solid var(--border);border-radius:7px;padding:2px;gap:1px;}
556
556
  .dz-seg-mini button{flex:1;border:none;background:none;color:var(--text-dim);font-size:10.5px;font-weight:600;padding:4px 5px;border-radius:5px;cursor:pointer;display:grid;place-items:center;}
557
557
  .dz-seg-mini button.on{background:var(--accent);color:var(--accent-fg,#1a1205);}
558
- `,Z=[{name:"Indigo",c:"#6366f1"},{name:"Violet",c:"#8b5cf6"},{name:"Blue",c:"#3b82f6"},{name:"Sky",c:"#0ea5e9"},{name:"Cyan",c:"#06b6d4"},{name:"Teal",c:"#14b8a6"},{name:"Emerald",c:"#10b981"},{name:"Lime",c:"#84cc16"},{name:"Amber",c:"#f59e0b"},{name:"Orange",c:"#f97316"},{name:"Rose",c:"#f43f5e"},{name:"Pink",c:"#ec4899"}],_=[{n:"Inter",s:"'Inter',system-ui,sans-serif"},{n:"IBM Plex",s:"'IBM Plex Sans',sans-serif"},{n:"Geist",s:"'Geist','Inter',ui-sans-serif,sans-serif"},{n:"System",s:"system-ui,-apple-system,Segoe UI,sans-serif"},{n:"Serif",s:"Georgia,'Times New Roman',serif"},{n:"Mono",s:"ui-monospace,'SF Mono',Menlo,monospace"},{n:"Display",s:"'Poppins','Inter',system-ui,sans-serif"}],K=[{n:"Sharp",r:6},{n:"Soft",r:16},{n:"Round",r:26}],V=[{id:"select",ic:"target"},{id:"edit",ic:"newFile"},{id:"markup",ic:"skill"},{id:"comments",ic:"chat"},{id:"inspect",ic:"search"},{id:"preview",ic:"play"}];function q(e,t){let a=parseInt(e.replace("#",""),16);return`rgba(${a>>16&255},${a>>8&255},${255&a},${t})`}function J(e){return(e.split("/").pop()||e).replace(/\.html?$/i,"")}function Q(e){let t=(e||"").replace(/\\/g,"/"),a=t.toLowerCase().lastIndexOf("design-mock/");return a>=0?t.slice(a):null}let ee=/\b(remov(i|ido|eu|idos)|adicion(ei|ado|ou|ados)|cri(ei|ado|ou|ados)|corrig(i|ido|iu)|ajust(ei|ado|ou)|atualiz(ei|ado|ou)|mud(ei|ado|ou)|delet(ei|ado|ou)|limp(ei|ado|ou)|troqu(ei)|troc(ado|ou)|inseri|inserido|fiz|feit[oa]s?|pront[oa]s?|conclu(i|í|ido|ída)|finaliz(ei|ado|ou)|implement(ei|ado|ou)|ger(ei|ado|ou)|salv(ei|o|ado)|apliqu(ei)|aplic(ado|ou)|added|removed|deleted|created|fixed|updated|changed|cleaned|adjusted|renamed|moved|made|done|ready|here'?s|i'?ve|i\s+have|i\s+just|i\s+made)\b/i,et=[["design.sugg.adjustPalette","Adjust the color palette"],["design.sugg.improveSpacing","Improve the spacing"],["design.sugg.mobileVersion","Create a mobile version"],["design.sugg.darkTheme","Try a dark theme"],["design.sugg.addSection","Add a section"],["design.sugg.newScreen","Create a new screen"],["design.sugg.visualDocs","Generate the visual docs"],["design.sugg.askReview","Ask Grace for a review"],["design.sugg.approve","Approve design"],["design.sugg.sendExec","Send to execution"]],ea=[["design.sugg.firstScreen","Build the first screen"],["design.sugg.proposePalette","Propose a color palette"],["design.sugg.defineTypography","Define the typography"],["design.sugg.mainFlow","Design the main flow"],["design.sugg.heroSection","Add a hero section"],["design.sugg.mobileVersion","Create a mobile version"]],er={accent:"#6366f1",accentName:"Indigo",accentFg:"",secondary:"",surface:"",success:"",warning:"",danger:"",theme:"dark",font:_[0].s,fontName:"Inter",headingFont:_[0].s,headingFontName:"Inter",fontWeight:400,lineHeight:1.5,letterSpacing:0,fontScale:1,radius:16,borderWidth:1,borderColor:"",shadow:"md",density:12,containerWidth:1200,motionMs:200,ease:"ease"};function en(e){return!!(e.selection&&"object"==typeof e.selection&&"markup"===e.selection.kind)}function es(e){return e.selection.rect}function ei(e){let t=e.x+e.w/2,a=e.y+e.h/2;return`${a<33?"top":a<66?"middle":"bottom"}-${t<33?"left":t<66?"center":"right"} area, roughly ${Math.round(e.w)}%\xd7${Math.round(e.h)}% of the page`}function eo({grace:e,context:t,status:a,tokens:u}){var $;let H,F,U,B,X,ed=(0,s.useRouter)(),el=(0,i.k)(),[ec,ep]=(0,n.useState)("approved"===a||t.approved?"approved":"building"),[eu,eg]=(0,n.useState)(!1),[em,eh]=(0,n.useState)("screens"),[ex,eb]=(0,n.useState)(!0),[ef,ev]=(0,n.useState)(!0),[ey,ez]=(0,n.useState)("desktop"),[ew,ek]=(0,n.useState)(null),[ej,eN]=(0,n.useState)(!1),[eS,eC]=(0,n.useState)(100),[eI,eE]=(0,n.useState)("select"),[eM,eT]=(0,n.useState)({...er,...u??{}}),[eR,eD]=(0,n.useState)(""),[eP,eA]=(0,n.useState)(!1),[eL,eO]=(0,n.useState)(!1),[eW,e$]=(0,n.useState)(""),[eH,eF]=(0,n.useState)([]),[eU,eB]=(0,n.useState)(!1),[eX,eY]=(0,n.useState)(!1),[eG,eZ]=(0,n.useState)(""),e_=(0,n.useRef)(null),eK=(0,n.useRef)(!0),[eV,eq]=(0,n.useState)(""),[eJ,eQ]=(0,n.useState)(null),[e0,e1]=(0,n.useState)(""),[e2,e5]=(0,n.useState)([]),[e6,e4]=(0,n.useState)([]),[e8,e3]=(0,n.useState)(!0),[e7,e9]=(0,n.useState)(!1),te=(0,n.useRef)(0),tt=(0,n.useRef)(0),ta=(0,n.useRef)(null),[tr,tn]=(0,n.useState)([]),[ts,ti]=(0,n.useState)(null),[to,td]=(0,n.useState)(null),[tl,tc]=(0,n.useState)({scrollX:0,scrollY:0,viewportW:980,viewportH:560,docW:980,docH:560}),[tp,tu]=(0,n.useState)({w:1200,h:700}),[tg,tm]=(0,n.useState)([]),[th,tx]=(0,n.useState)(!1),tb=(0,n.useRef)(!1),[tf,tv]=(0,n.useState)(null),[ty,tz]=(0,n.useState)([]),tw=(0,n.useRef)([]),[tk,tj]=(0,n.useState)(!1),[tN,tS]=(0,n.useState)(null),[tC,tI]=(0,n.useState)(null),[tE,tM]=(0,n.useState)(null),[tT,tR]=(0,n.useState)(""),[tD,tP]=(0,n.useState)([]),[tA,tL]=(0,n.useState)([]),[tO,tW]=(0,n.useState)(null),[t$,tH]=(0,n.useState)(null),[tF,tU]=(0,n.useState)(!1),[tB,tX]=(0,n.useState)([]),[tY,tG]=(0,n.useState)(null),[tZ,t_]=(0,n.useState)(""),[tK,tV]=(0,n.useState)(0),[tq,tJ]=(0,n.useState)("idle"),tQ=(0,n.useRef)(!1),t0=(0,n.useRef)(""),t1=(0,n.useRef)(null),t2=(0,n.useRef)(new Map),[t5,t6]=(0,n.useState)(0),t4=(0,n.useRef)(null),t8=(0,n.useRef)(null),t3=(0,n.useRef)(""),t7=(0,n.useRef)(eI),t9=(0,n.useRef)(""),ae=(0,n.useRef)(eM),at=(0,n.useRef)([]),aa=(0,n.useRef)(null),ar=(0,n.useRef)(!1),an=(0,n.useRef)(!1),as=Array.from(new Set([...t.designMockFiles.filter(e=>/\.html?$/i.test(e)),...tr]));at.current=as;let ai=t.designMockFiles.filter(e=>e.startsWith("design-mock/components/")),ao="approved"===ec,ad=eV&&as.includes(eV)?eV:as[0]??"";t9.current=ad,ar.current=ao,an.current=e7,t7.current=eI,ae.current=eM;let al=as.length>0&&null!=eJ&&!e0,ac=eS/100,ap=null!=ew?{w:Math.max(320,Math.min(1920,ew)),h:Math.max(560,Math.round(1.5*Math.max(320,Math.min(1920,ew))))}:"tablet"===ey?{w:768,h:1024}:"mobile"===ey?{w:390,h:844}:null,au=null!=ap,ag=au?ap.w:Math.max(1,tp.w/ac),am=au?ap.h:Math.max(1,tp.h/ac),ah=Math.max(1,tl.docW||tl.viewportW||1),ax=Math.max(1,tl.docH||tl.viewportH||1),ab=e=>({left:e.x-tl.scrollX,top:e.y-tl.scrollY,width:e.w,height:e.h}),af=e=>({left:e.x/100*ah-tl.scrollX,top:e.y/100*ax-tl.scrollY,width:e.w/100*ah,height:e.h/100*ax}),av=(e,t)=>({left:e/100*ah-tl.scrollX,top:t/100*ax-tl.scrollY}),{canUndo:ay,canRedo:az}=(0,n.useMemo)(()=>{let e=t2.current.get(ad);return{canUndo:!!e&&e.pos>0,canRedo:!!e&&e.pos<e.stack.length-1}},[t5,ad]);(0,n.useEffect)(()=>{if(document.getElementById("dz-style"))return;let e=document.createElement("style");e.id="dz-style",e.textContent=G,document.head.appendChild(e)},[]),(0,n.useEffect)(()=>{try{"0"===localStorage.getItem("bx.dzChat")&&eb(!1),"0"===localStorage.getItem("bx.dzRail")&&ev(!1)}catch{}},[]),(0,n.useEffect)(()=>{try{localStorage.setItem("bx.dzChat",ex?"1":"0")}catch{}},[ex]),(0,n.useEffect)(()=>{try{localStorage.setItem("bx.dzRail",ef?"1":"0")}catch{}},[ef]),(0,n.useEffect)(()=>{let e=!1,t=e=>e.length>250?e.slice(-250):e;function a(){if(e||document.hidden||ta.current)return;let a=new EventSource(`/api/stream?channel=design&evCursor=${te.current}&msgCursor=${tt.current}`);ta.current=a,a.addEventListener("ev",e=>{let a=JSON.parse(e.data);a.seq>te.current&&(te.current=a.seq),e4(e=>e.some(e=>e.id===a.id)?e:t([...e,a]))}),a.addEventListener("msg",e=>{let a=JSON.parse(e.data),r=a.createdAt?new Date(a.createdAt).getTime():0;if(r>tt.current&&(tt.current=r),e5(e=>e.some(e=>e.id===a.id)?e:t([...e,a])),e4(e=>e.filter(e=>e.runId!==a.id||"text"!==e.kind)),"agent"===a.fromKind){e9(!1),tV(e=>e+1),ed.refresh();let e=t9.current;e&&setTimeout(()=>{tQ.current||(t2.current.delete(e),t6(e=>e+1),g(e).then(e=>{e.ok&&null!=e.html&&(eQ(e.html),e1(""))}))},300)}})}function r(){ta.current&&(ta.current.close(),ta.current=null)}(async function(){let[t,a]=await Promise.all([(0,c.V)("design"),(0,p.k)("design",0)]);e||(e5(t),e4(a),te.current=a.reduce((e,t)=>Math.max(e,t.seq),0),tt.current=t.reduce((e,t)=>Math.max(e,t.createdAt?new Date(t.createdAt).getTime():0),0))})().catch(()=>{}).finally(()=>{!e&&(e3(!1),document.hidden||a())});let n=()=>{document.hidden?r():a()};return document.addEventListener("visibilitychange",n),()=>{e=!0,document.removeEventListener("visibilitychange",n),r()}},[]),(0,n.useEffect)(()=>{if(aM(),eK.current){eK.current=!1;return}let e=setTimeout(()=>{m(eM)},500);return eg(!0),ar.current&&(aa.current&&clearTimeout(aa.current),aa.current=setTimeout(()=>{aa.current=null,function(){if(!ar.current||an.current)return;let e=ae.current;e9(!0),h(`I changed the design directly on the canvas via the Styles panel — the canvas is the source of truth now. RECONCILE the source to match it; do NOT ask, just do it: write the current tokens into design-mock/styles/global.css (:root) — accent ${e.accent}, secondary ${e.secondary}, surface ${e.surface}, body font ${e.font}, heading font ${e.headingFont}, radius ${e.radius}px, theme ${e.theme} — and update design-mock/design-system.md (palette / typography / tokens) plus any affected component docs to reflect it, keeping every screen VISUALLY IDENTICAL. Then briefly summarize what you synced.`).then(e=>{e.ok||e9(!1)}),aW("Grace is syncing your change into the source CSS + docs…")}()},9e3)),()=>clearTimeout(e)},[eM]),(0,n.useEffect)(()=>{if(!ad)return void eQ(null);if(tQ.current&&ad===t0.current)return;tQ.current&&(tQ.current=!1,t0.current="",tJ("idle")),tc(e=>({...e,scrollX:0,scrollY:0}));let e=!0;return e1(""),g(ad).then(t=>{e&&(t.ok&&null!=t.html?eQ(t.html):(eQ(null),e1(t.error||el("design.toast.screenLoadFail"))))}),()=>{e=!1}},[as.join("|"),ad]),(0,n.useEffect)(()=>{if(tQ.current)return;let e=new Set(e2.map(e=>e.id)),t=e6.filter(t=>{if("create"!==t.kind&&"edit"!==t.kind||e.has(t.runId))return!1;let a=Q(t.target||"");return null!=a&&/^design-mock\/screens\/[^/]+\.html?$/i.test(a)});if(!t.length)return;let a=t[t.length-1];if(a.id===t3.current)return;t3.current=a.id;let r=Q(a.target||"");tn(e=>e.includes(r)?e:[...e,r]),eq(r),t2.current.delete(r),t6(e=>e+1),setTimeout(()=>{g(r).then(e=>{e.ok&&null!=e.html&&(eQ(e.html),e1(""))})},550)},[e6,e2]),(0,n.useEffect)(()=>{let e=new Set(e2.map(e=>e.id));e6.some(t=>!e.has(t.runId))&&e9(!1)},[e6,e2]),(0,n.useEffect)(()=>{let e=!0;return Promise.all([x().catch(()=>({comments:[]})),b().catch(()=>({versions:[]})),f().catch(()=>({docs:[]}))]).then(([t,a,r])=>{e&&(tP(t.comments||[]),tL(a.versions||[]),tX(r.docs||[]))}),()=>{e=!1}},[tK]);let aw=async()=>{try{let e=await (0,L.p)("design");if(e.used>=e.max&&!tF){tU(!0);try{await (0,O.L)("design"),e=await (0,L.p)("design")}finally{tU(!1)}}tH(e)}catch{}};async function ak(){if(!tF){tU(!0);try{await (0,O.L)("design"),await aw()}finally{tU(!1)}}}function aj(e){tG(e),t_(""),v(e).then(e=>{e.ok&&null!=e.body?t_(e.body):t_(el("design.docs.readErr"))})}(0,n.useEffect)(()=>{ex&&aw()},[ex,e2.length]),(0,n.useEffect)(()=>{"docs"===em&&tB.length&&(tY&&tB.some(e=>e.path===tY)||aj(tB[0].path))},[em,tB]);let aN=(0,n.useRef)(!1);(0,n.useEffect)(()=>{!t.gatePending||t.gateScaffolded||aN.current||e7||(aN.current=!0,e9(!0),y().then(e=>{e.ok||(e9(!1),aN.current=!1)}))},[t.gatePending,t.gateScaffolded]),(0,n.useEffect)(()=>{function e(e){var t,a,r;let n=e.data;if(n&&n.__cstla&&t4.current&&e.source===t4.current.contentWindow)if("canvas:viewport"===n.type){let e=n.payload;tc({scrollX:Math.max(0,e.scrollX||0),scrollY:Math.max(0,e.scrollY||0),viewportW:Math.max(1,e.viewportW||1),viewportH:Math.max(1,e.viewportH||1),docW:Math.max(1,e.docW||e.viewportW||1),docH:Math.max(1,e.docH||e.viewportH||1)})}else if("canvas:ready"===n.type){aE(),aM();let e=!!n.payload?.interactive;tb.current=e,tx(e)}else if("canvas:hover"===n.type)ti(n.payload);else if("canvas:guides"===n.type)td(n.payload);else if("canvas:tree"===n.type)tm(n.payload?.items??[]);else if("canvas:nav"===n.type){let e,r,s,i=(t=String(n.payload?.href||""),a=at.current,r=((e=t.split("#")[0].split("?")[0].replace(/\/+$/,"")).split("/").pop()||e).replace(/\.html?$/i,"").toLowerCase(),(s=a.find(e=>(e.split("/").pop()||e).replace(/\.html?$/i,"").toLowerCase()===r))||""!==r&&"index"!==r&&"home"!==r||(s=a.find(e=>/(^|\/)(index|home)\.html?$/i.test(e))||a[0]),s||null);i&&(eq(i),tv(null),tz([]),tj(!1))}else if("canvas:select"===n.type){let e={...n.payload,pageId:t9.current};tv(e),tz([e]),tj("select"===t7.current||"edit"===t7.current)}else if("canvas:selectToggle"===n.type){let e={...n.payload,pageId:t9.current},t=tw.current,a=t.findIndex(t=>t.cstlaId===e.cstlaId),r=a>=0?t.filter((e,t)=>t!==a):[...t,e];tz(r),tv(r.length?r[r.length-1]:null),tj(!1)}else if("canvas:reselect"===n.type){let e={...n.payload,pageId:t9.current};tv(e),tz(t=>t.length?t.map(t=>t.cstlaId===e.cstlaId?e:t):[e])}else if("canvas:reselectMany"===n.type){let e=(n.payload||[]).map(e=>({...e,pageId:t9.current}));tz(e),tv(e.length?e[e.length-1]:null)}else if("canvas:removed"===n.type)tv(null),tz([]),tj(!1);else if("canvas:dirty"===n.type)tQ.current=!0,t0.current=t9.current,tJ("saving"),t1.current&&(clearTimeout(t1.current),t1.current=null);else if("canvas:editEnd"===n.type)tQ.current=!1,tJ("idle");else if("canvas:commit"===n.type)tb.current||aR(n.payload.html);else if("canvas:history"===n.type)tb.current?(tJ("idle"),aT()):(function(e,t){let a=t0.current||t9.current;if(!a)return;let r=t2.current.get(a);r||(r={stack:[],labels:[],pos:-1},t2.current.set(a,r)),r.pos>=0&&r.stack[r.pos]===e||(r.stack=r.stack.slice(0,r.pos+1),r.labels=r.labels.slice(0,r.pos+1),r.stack.push(e),r.labels.push(t||el("design.history.edited")),r.stack.length>60&&(r.stack.shift(),r.labels.shift()),r.pos=r.stack.length-1,t6(e=>e+1))}(n.payload.html,n.payload.label),aR(n.payload.html),eg(!0));else if("canvas:baseline"===n.type){let e;tb.current||(r=n.payload.html,!(e=t9.current)||t2.current.has(e)||(t2.current.set(e,{stack:[r],labels:[el("design.history.original")],pos:0}),t6(e=>e+1)))}else if("canvas:comment"===n.type)tM(n.payload);else if("canvas:markupDraw"===n.type)tI(n.payload);else if("canvas:markup"===n.type){let e=n.payload;tI(e),tM({xpPct:e.xPct,ypPct:e.yPct,markup:{x:e.xPct,y:e.yPct,w:e.wPct,h:e.hPct}})}else"canvas:edit"===n.type&&aO(n.payload.oldText,n.payload.newText)}return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[]),(0,n.useEffect)(()=>{aE(),td(null),"preview"===eI&&(ti(null),tj(!1))},[eI,ad]),(0,n.useEffect)(()=>{ti(null),td(null)},[eS,ad]),(0,n.useEffect)(()=>{let e=t8.current;if(!e)return;let t=()=>tu({w:Math.max(1,e.clientWidth),h:Math.max(1,e.clientHeight)});t();let a=new ResizeObserver(t);return a.observe(e),()=>a.disconnect()},[al]),(0,n.useEffect)(()=>{"layers"===em&&function(){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:requestTree"},"*")}catch{}}()},[em,ad,tK]),(0,n.useEffect)(()=>{let e=e=>{let t=document.activeElement;t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable)||((e.ctrlKey||e.metaKey)&&("z"===e.key||"Z"===e.key)?(e.preventDefault(),e.shiftKey?aA():aP()):(e.ctrlKey||e.metaKey)&&("y"===e.key||"Y"===e.key)?(e.preventDefault(),aA()):"Escape"===e.key&&(tz([]),tv(null),tj(!1)))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,n.useEffect)(()=>{tw.current=ty},[ty]);let aS=e=>eT(t=>({...t,...e}));function aC(e,t,a=""){let n=String(eM[t]??"");return(0,r.jsxs)("div",{className:"dz-trow",children:[(0,r.jsx)("label",{children:e}),(0,r.jsxs)("div",{className:"dz-colorrow",children:[(0,r.jsx)("input",{type:"color",value:n||a||"#888888",onChange:e=>aS({[t]:e.target.value})}),(0,r.jsx)("input",{type:"text",value:n,placeholder:a||el("design.styles.auto"),spellCheck:!1,onChange:e=>aS({[t]:e.target.value})})]})]},String(t))}function aI(e,t,a,n,s,i=""){let o=Number(eM[t]??0);return(0,r.jsxs)("div",{className:"dz-trow",children:[(0,r.jsxs)("label",{children:[e,(0,r.jsxs)("span",{className:"v",children:[o,i]})]}),(0,r.jsx)("input",{type:"range",min:a,max:n,step:s,value:o,onChange:e=>aS({[t]:Number(e.target.value)})})]},String(t))}function aE(){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:setMode",mode:t7.current},"*")}catch{}}function aM(){let e=ae.current;try{let t,a;t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:applyTokens",tokens:{accent:e.accent,accentFg:e.accentFg||(t=e.accent.replace("#",""),a=parseInt(3===t.length?t.split("").map(e=>e+e).join(""):t,16),(.299*(a>>16&255)+.587*(a>>8&255)+.114*(255&a))/255>.6?"#15171c":"#ffffff"),secondary:e.secondary,surface:e.surface,success:e.success,warning:e.warning,danger:e.danger,font:e.font,headingFont:e.headingFont,fontWeight:e.fontWeight,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,radius:e.radius,borderWidth:e.borderWidth,borderColor:e.borderColor,shadow:e.shadow,space:e.density,containerWidth:e.containerWidth,motionMs:e.motionMs,ease:e.ease,fontScale:e.fontScale,theme:e.theme}},"*")}catch{}}function aT(){t1.current&&clearTimeout(t1.current),t1.current=setTimeout(()=>{tQ.current=!1,t0.current="",tJ("idle"),t1.current=null},1400)}function aR(e){let t=t0.current||t9.current;t&&z(t,e).then(e=>{e.ok?(tJ("saved"),tV(e=>e+1)):(tJ("idle"),aW(e.error||el("design.toast.couldNotSaveEdit"))),aT()})}function aD(e,t){let a=t.stack[t.pos];tv(null),tj(!1),tQ.current=!0,t0.current=e,tJ("saving"),t1.current&&(clearTimeout(t1.current),t1.current=null);try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:setBody",html:a},"*")}catch{}z(e,a).then(()=>{tJ("saved"),tV(e=>e+1),aT()}),t6(e=>e+1)}function aP(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos<=0)&&(t.pos--,aD(e,t))}function aA(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos>=t.stack.length-1)&&(t.pos++,aD(e,t))}async function aL(){let e=t9.current;if(!e||!al)return;eA(!0);let t=await w(e);eA(!1),t.ok?(aW(el("design.toast.savedCheckpoint",{label:t.label??""})),tV(e=>e+1)):aW(t.error||el("design.toast.couldNotSaveCheckpoint"))}async function aO(e,t){let a=t9.current;if(a&&e!==t)if((await k(a,e,t)).ok){let e=await g(a);e.ok&&null!=e.html&&eQ(e.html),aW(el("design.toast.editApplied"))}else aW(el("design.toast.sendingEdit")),e9(!0),h(`On screen ${a}, change the text "${e}" to "${t}".`)}function aW(e){e$(e),setTimeout(()=>e$(t=>t===e?"":t),2400)}async function a$(e){if(!e)return;let t=Array.from(e).filter(e=>e instanceof File);if(!t.length)return;eZ("");let a=t.slice(0,Math.max(0,6-eH.length));if(!a.length)return void eZ(el("design.toast.upTo6"));let r=new FormData;for(let e of a)r.append("files",e);eY(!0);try{let e=await fetch("/api/upload",{method:"POST",body:r}),t=await e.json();if(!e.ok||!t.ok)return void eZ(t.error||el("design.toast.uploadFailed"));eF(e=>[...e,...t.attachments].slice(0,6))}catch{eZ(el("design.toast.uploadFailed"))}finally{eY(!1),e_.current&&(e_.current.value="")}}function aH(e){let t=(e??eR).trim();if(!t&&!eH.length&&!tN||e7)return;e9(!0);let a=eH.slice();eD(""),eF([]),eZ(""),tS(null),h(t||(tN?"Adjust this element.":"Use the attached image(s) as the visual reference."),a,tN??void 0).then(e=>{e.ok||(aW(e.error||el("design.toast.couldNotStart")),e9(!1))})}async function aF(){eA(!0);let e=await j();(eA(!1),e.ok)?(ep("approved"),aW(el("design.toast.designApproved")),ed.refresh()):aW(e.error||el("design.toast.approveFailed"))}async function aU(){eA(!0);let e=await N();(eA(!1),e.ok)?(ep("approved"),eg(!1),e9(!0),eh("docs"),aW(el("design.toast.sentToExec"))):aW(e.error||el("design.toast.couldNotSendExec"))}async function aB(){eA(!0);let e=await S();(eA(!1),e.ok)?(e9(!0),eh("docs"),aW("Resuming handoff — Grace is finishing the documentation, then Ada plans it.")):aW(e.error||"Couldn't resume the handoff.")}async function aX(){eA(!0);let e=await C();if(eA(!1),!e.ok)return void aW(e.error||el("design.toast.buildFailed"));let t=e.built.reduce((e,t)=>e+t.before,0),a=e.built.reduce((e,t)=>e+t.after,0),r=t?Math.round((1-a/t)*100):0,n=e.built.filter(e=>e.obfuscated).length;aW(el("design.toast.built",{count:e.built.length,plural:1===e.built.length?"":"s",pct:r,obf:n?el("design.toast.builtObf",{n:n}):""})),ed.refresh()}async function aY(e=!1){if(!tE){tM(null),tR(""),tI(null);return}if(tE.markup){let t=tT.trim(),a=tE.markup;if(await I(t9.current,a,t),tM(null),tR(""),tI(null),tV(e=>e+1),eh("comments"),e){e9(!0);let e=ei(a);h(`On screen ${t9.current}, I marked a region for review (${e}).${t?` My note: "${t}"`:" Please review and refine it."} Update the screen accordingly.`)}return}if(!tT.trim()){tM(null),tR("");return}let t=tE.selection??tf,a=t?{...t,pageId:t9.current}:void 0;await E(t9.current,tE.xpPct,tE.ypPct,tT.trim(),a),tM(null),tR(""),tV(e=>e+1),eh("comments")}let aG=[...e2].sort((e,t)=>(e.createdAt?new Date(e.createdAt).getTime():0)-(t.createdAt?new Date(t.createdAt).getTime():0)).at(-1),aZ=e7||0!==e2.length&&aG?.fromKind!=="agent"?[]:function(e,t,a){let r=[],n=e=>(e??"").replace(/\s+/g," ").replace(/^[-•*\s]+/,"").replace(/[.:;,!?]+$/,"").trim(),s=(e,t)=>{let a=n(e);a.length>=2&&a.length<=42&&!r.some(e=>e.label.toLowerCase()===a.toLowerCase())&&r.push({label:a?a.charAt(0).toUpperCase()+a.slice(1):a,prompt:t})},i=[...e].reverse().find(e=>"agent"===e.fromKind&&e.text);if(i?.text)for(let e of i.text.matchAll(/\*\*(.+?)\*\*/g)){let t=n(e[1]);if(t.length<2||t.length>42||ee.test(t)||(t.match(/\s+/g)||[]).length>6||s(t,t),r.length>=4)break}for(let[e,n]of t.designMockFiles.some(e=>/\.html?$/i.test(e))?et:ea)if(s(a(e),n),r.length>=4)break;return r.slice(0,4)}(e2,t,el),a_=e?{id:e.id,handle:e.handle,name:e.name,role:"Frontend",color:e.color,image:e.image??null,adapter:"claude",status:"idle",health:null}:null,aK=a_?[a_]:[],aV={};for(let e of e6)(aV[e.runId]??=[]).push(e);let aq=new Set(e2.map(e=>e.id)),aJ=Object.entries(aV).filter(([e])=>!aq.has(e)),aQ=e7||aJ.length>0,a0=tD.filter(e=>e.pageKey===ad&&!en(e)),a1=tD.filter(e=>e.pageKey===ad&&en(e)),a2=[];a2.push(["layers",el("design.tab.layers")],["screens",el("design.tab.screens")],["docs",el("design.tab.docs")],["styles",el("design.tab.styles")],["history",el("design.tab.history")],["comments",`${el("design.tab.comments")}${a0.length?" "+a0.length:""}`],["versions",`${el("design.tab.versions")}${tA.length?" "+tA.length:""}`]);let a5=a2.some(([e])=>e===em)?em:"screens",a6=ts?ab(ts):null,a4=tf?ab(tf.boundingBox):null;return(0,r.jsxs)("div",{className:"dz-wrap",children:[ex?(0,r.jsxs)("div",{className:"dz-chat",children:[(0,r.jsxs)("div",{className:"dz-chat-head",children:[(0,r.jsx)(d.e,{name:e?.name||"Grace",color:e?.color||"#84aef5",image:e?.image,size:28}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"dz-ch-t",children:[e?.name||"Grace"," \xb7 ",el("design.chat.role")]}),(0,r.jsx)("div",{className:"dz-ch-s",children:el("design.chat.subtitle")})]}),aQ&&(0,r.jsxs)("span",{className:"dz-live",children:[(0,r.jsx)("span",{className:"dot"})," ",el("design.chat.live")]}),(0,r.jsx)("button",{className:"dz-collapse-btn",title:el("design.chat.collapse"),onClick:()=>eb(!1),children:(0,r.jsx)(o.I,{name:"chevronLeft",size:15})})]}),t$&&(0,r.jsxs)("div",{className:"ctx-bar",children:[(0,r.jsx)(W.m,{stat:t$,onCompact:ak,compacting:tF}),(0,r.jsx)("span",{})]}),(0,r.jsx)(l.H8,{msgs:e2,typing:e7&&a_?[a_.handle]:[],agents:aK,byRun:aV,liveRuns:aJ,loading:e8,markdownAgent:!0,avatarSize:28,emptyHint:el("design.chat.emptyHint")}),(0,r.jsxs)("div",{className:"dz-composer"+(eU?" drag":""),onDragOver:e=>{e.preventDefault(),eB(!0)},onDragLeave:e=>{e.preventDefault(),eB(!1)},onDrop:e=>{e.preventDefault(),eB(!1),a$(e.dataTransfer.files)},children:[!ao&&aZ.length>0&&!tN&&(0,r.jsx)("div",{className:"dz-chips",children:aZ.map(e=>(0,r.jsx)("span",{className:"dz-chip",onClick:()=>aH(e.prompt),children:e.label},e.label))}),tN&&(0,r.jsxs)("div",{className:"dz-attach",children:[(0,r.jsx)("span",{className:"sw",style:{background:eM.accent}})," ",el("design.composer.elementLabel")," ",(0,r.jsx)("b",{style:{fontWeight:700},children:tN.componentName}),(0,r.jsx)("span",{className:"x",onClick:()=>tS(null),children:(0,r.jsx)(o.I,{name:"close",size:12})})]}),eG&&(0,r.jsx)("div",{className:"dz-uperr",children:eG}),eH.length>0&&(0,r.jsx)("div",{className:"dz-atts",children:eH.map((e,t)=>(0,r.jsxs)("span",{className:"dz-att",children:[e.type.startsWith("image/")&&(0,r.jsx)("img",{src:`/api/upload?path=${encodeURIComponent(e.path)}`,alt:""}),(0,r.jsx)("span",{className:"nm",children:e.name}),(0,r.jsx)("span",{className:"rm",title:el("design.composer.remove"),onClick:()=>eF(e=>e.filter((e,a)=>a!==t)),children:(0,r.jsx)(o.I,{name:"close",size:11})})]},e.path))}),(0,r.jsxs)("div",{className:"dz-input",children:[(0,r.jsx)("button",{className:"dz-clip",disabled:e7||eX,title:el("design.composer.attach"),onClick:()=>e_.current?.click(),children:(0,r.jsx)(o.I,{name:eX?"refresh":"add",size:15,className:eX?"sync-spin":""})}),(0,r.jsx)("input",{placeholder:tN?el("design.composer.changePlaceholder",{name:tN.componentName}):el("design.composer.placeholder"),value:eR,disabled:e7,onChange:e=>eD(e.target.value),onKeyDown:e=>{"Enter"===e.key&&aH()},onPaste:function(e){let t=Array.from(e.clipboardData?.items||[]).filter(e=>"file"===e.kind&&e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>!!e);t.length&&(e.preventDefault(),a$(t))}}),(0,r.jsx)("button",{className:"dz-send",disabled:e7||!eR.trim()&&!eH.length&&!tN,onClick:()=>aH(),children:(0,r.jsx)(o.I,{name:e7?"refresh":"send",size:15,className:e7?"sync-spin":""})})]}),(0,r.jsx)("input",{ref:e_,type:"file",accept:"image/*,.pdf",multiple:!0,style:{display:"none"},onChange:e=>a$(e.target.files)})]})]}):(0,r.jsxs)("div",{className:"dz-strip left",onClick:()=>eb(!0),title:el("design.chat.expand"),children:[(0,r.jsx)(o.I,{name:"chevronRight",size:16}),(0,r.jsx)(o.I,{name:"chat",size:16}),aQ&&(0,r.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:"var(--accent)"}})]}),(0,r.jsxs)("div",{className:"dz-center",children:[t.handoffPending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:"linear-gradient(90deg,rgba(224,164,78,.20),rgba(224,164,78,.03))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:"rgba(224,164,78,.22)",color:"var(--accent)"},children:(0,r.jsx)(o.I,{name:aQ?"refresh":"warn",size:17,className:aQ?"sync-spin":""})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:aQ?el("design.handoff.finishing"):el("design.handoff.interrupted")}),(0,r.jsx)("div",{className:"dz-ab-s",children:aQ?el("design.handoff.finishingSub"):el("design.handoff.interruptedSub")})]}),!aQ&&(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP,onClick:aB,children:[(0,r.jsx)(o.I,{name:eP?"refresh":"sync",size:13,className:eP?"sync-spin":""})," ",el("design.handoff.resume")]})})]}),t.handoffDone&&!t.handoffPending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:eu?"linear-gradient(90deg,rgba(224,164,78,.22),rgba(224,164,78,.03))":"linear-gradient(90deg,rgba(74,165,114,.20),rgba(74,165,114,.03))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:eu?"rgba(224,164,78,.22)":"rgba(74,165,114,.22)",color:eu?"var(--accent)":"#3fa971"},children:(0,r.jsx)(o.I,{name:eu?"edit":"goto",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:eu?"Design updated \xb7 send it to Ada":"Handed off to execution \xb7 Ada is building"}),(0,r.jsx)("div",{className:"dz-ab-s",children:eu?"You edited the design after the last hand-off — send the update so Ada applies it on top (backend wiring preserved).":"This design is the real frontend. Keep refining it with Grace — re-send to push an update (engineers&apos; backend wiring is preserved)."})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent"+(eu?" dz-pulse":""),disabled:eP,onClick:aU,children:[(0,r.jsx)(o.I,{name:eP?"refresh":eu?"goto":"sync",size:13,className:eP?"sync-spin":""})," ",eu?"Send update to execution":"Re-send update"]})})]}),ao&&!t.handoffPending&&!t.handoffDone&&(0,r.jsxs)("div",{className:"dz-approve-banner",children:[(0,r.jsx)("div",{className:"dz-ab-ic",children:(0,r.jsx)(o.I,{name:eu?"edit":"check",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:eu?"Design updated \xb7 ready to send":el("design.banner.approvedTitle")}),(0,r.jsx)("div",{className:"dz-ab-s",children:eu?"You edited the approved design — send it to execution to push the update.":el("design.banner.approvedSub")})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent"+(eu?" dz-pulse":""),disabled:eP,onClick:aU,children:[(0,r.jsx)(o.I,{name:eP?"refresh":"goto",size:13,className:eP?"sync-spin":""})," ",eu?"Send update to execution":el("design.banner.sendToExecution")]})})]}),!ao&&t.gatePending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:"linear-gradient(90deg,rgba(99,102,241,.16),rgba(99,102,241,.02))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:"rgba(99,102,241,.18)",color:"#6366f1"},children:(0,r.jsx)(o.I,{name:"bot",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:el("design.banner.adaWaitingTitle")}),(0,r.jsxs)("div",{className:"dz-ab-s",children:[el("design.banner.adaWaitingPre")," ",(0,r.jsx)("b",{children:el("design.banner.adaWaitingAction")})," ",el("design.banner.adaWaitingPost")," ",aQ?el("design.banner.gridSettingUp"):el("design.banner.gridStart")]})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn",disabled:e7,onClick:()=>{e9(!0),y().then(e=>{e.ok||e9(!1)})},children:[(0,r.jsx)(o.I,{name:e7?"refresh":"skill",size:13,className:e7?"sync-spin":""})," ",el("design.banner.setUpWithGrace")]})})]}),(0,r.jsxs)("div",{className:"dz-bar",children:[(0,r.jsx)("div",{className:"dz-modes",children:V.map(e=>(0,r.jsxs)("span",{className:"dz-mode "+(eI===e.id?"on":""),onClick:()=>eE(e.id),title:el("design.mode."+e.id),children:[(0,r.jsx)(o.I,{name:e.ic,size:13})," ",el("design.mode."+e.id)]},e.id))}),as.length>0&&(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{onClick:aP,disabled:!ay,title:el("design.toolbar.undo"),children:(0,r.jsx)(o.I,{name:"chevronLeft",size:13})}),(0,r.jsx)("button",{onClick:aA,disabled:!az,title:el("design.toolbar.redo"),children:(0,r.jsx)(o.I,{name:"chevronRight",size:13})}),(0,r.jsxs)("button",{onClick:function(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos<=0)&&(t.pos=0,aD(e,t),aW(el("design.toast.reset")))},disabled:!ay,title:el("design.toolbar.resetTitle"),children:[(0,r.jsx)(o.I,{name:"repeat",size:13})," ",el("design.toolbar.reset")]}),(0,r.jsxs)("button",{onClick:aL,disabled:eP||!al,title:el("design.toolbar.saveTitle"),children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",el("design.toolbar.save")]}),(0,r.jsxs)("button",{onClick:function(){let e=t9.current;e&&(e9(!0),h(`I manually edited the screen ${e} directly on the canvas — it now has inline-style overrides, transform:translate offsets and data-cstla-id/data-cstla-tx attributes added by the visual editor. Refactor it into CLEAN, token-driven, professional CSS per the CSS STANDARD: fold the inline styles into the <style> sheet under semantic BEM-ish classes, turn transform offsets into real layout (flex/grid/margins/gap), drop every data-cstla-* attribute, and keep the screen VISUALLY IDENTICAL. Then summarize what you cleaned up.`))},title:el("design.toolbar.cleanUpTitle"),children:[(0,r.jsx)(o.I,{name:"skill",size:13})," ",el("design.toolbar.cleanUp")]})]}),(0,r.jsx)("div",{className:"dz-spacer"}),(0,r.jsx)("div",{className:"dz-seg",children:[50,75,100].map(e=>(0,r.jsxs)("button",{className:eS===e?"on":"",onClick:()=>eC(e),title:el("design.toolbar.zoom",{pct:e}),children:[e,"%"]},e))}),(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{className:"desktop"===ey&&null==ew?"on":"",onClick:()=>{ez("desktop"),ek(null)},title:el("design.toolbar.desktop"),children:(0,r.jsx)(o.I,{name:"sidebarIcon",size:13})}),(0,r.jsx)("button",{className:"tablet"===ey&&null==ew?"on":"",onClick:()=>{ez("tablet"),ek(null)},title:el("design.toolbar.tabletTitle"),children:el("design.toolbar.tablet")}),(0,r.jsx)("button",{className:"mobile"===ey&&null==ew?"on":"",onClick:()=>{ez("mobile"),ek(null)},title:el("design.toolbar.mobileTitle"),children:el("design.toolbar.mobile")}),(0,r.jsx)("input",{className:"dz-bpw",type:"number",min:320,max:1920,placeholder:"px",value:ew??"",title:el("design.toolbar.customWidth"),onChange:e=>{let t=parseInt(e.target.value,10);ek(Number.isFinite(t)&&t>0?Math.max(320,Math.min(1920,t)):null)}})]}),(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{className:"dark"===eM.theme?"on":"",onClick:()=>eT(e=>({...e,theme:"dark"})),title:el("design.toolbar.dark"),children:(0,r.jsx)(o.I,{name:"moon",size:13})}),(0,r.jsx)("button",{className:"light"===eM.theme?"on":"",onClick:()=>eT(e=>({...e,theme:"light"})),title:el("design.toolbar.light"),children:(0,r.jsx)(o.I,{name:"sun",size:13})})]}),(0,r.jsxs)("div",{className:"dz-seg",title:el("design.mode2.tip"),children:[(0,r.jsxs)("button",{className:ej?"":"on",onClick:()=>eN(!1),children:[(0,r.jsx)(o.I,{name:"grid",size:13})," ",el("design.mode2.design")]}),(0,r.jsxs)("button",{className:ej?"on":"",onClick:()=>eN(!0),children:[(0,r.jsx)(o.I,{name:"play",size:13})," ",el("design.mode2.live")]})]}),th?(0,r.jsxs)("span",{className:"dz-save preview",title:el("design.toolbar.previewOnlyTitle"),children:[(0,r.jsx)(o.I,{name:"play",size:12})," ",el("design.toolbar.previewOnly")]}):"idle"!==tq&&(0,r.jsxs)("span",{className:"dz-save "+tq,title:"saving"===tq?el("design.toolbar.savingTitle"):el("design.toolbar.savedTitle"),children:[(0,r.jsx)(o.I,{name:"saving"===tq?"refresh":"check",size:12,className:"saving"===tq?"sync-spin":""})," ","saving"===tq?el("design.toolbar.saving"):el("design.toolbar.saved")]}),(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>eO(!0),children:[(0,r.jsx)(o.I,{name:"arrowDown",size:13})," ",el("design.toolbar.export")]}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP,onClick:aF,title:ao?"Re-approve the current design as the official reference":void 0,children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",ao?"Approve changes":el("design.toolbar.approve")]})]}),as.length>0&&(0,r.jsxs)("div",{className:"dz-pagestrip",children:[(0,r.jsx)("div",{className:"dz-ptabs",children:as.slice(0,8).map(e=>(0,r.jsxs)("span",{className:"dz-ptab "+(ad===e?"active":""),onClick:()=>{eq(e),tv(null),tj(!1)},children:[(0,r.jsx)(o.I,{name:"grid",size:13})," ",J(e)]},e))}),(0,r.jsxs)("span",{className:"dz-hint",children:[(0,r.jsx)(o.I,{name:V.find(e=>e.id===eI).ic,size:12})," ","edit"===eI?"Click to select \xb7 double-click to edit text (the design stays faithful to the mock — no move/resize/add)":"select"===eI?"Click to select an element \xb7 switch to Edit to edit its text":el("design.hint."+eI)]})]}),(0,r.jsxs)("div",{className:"dz-canvas"+(al?` has-screen ${au?"framed":"desktop"}`:""),ref:t8,children:[ej&&(0,r.jsx)(Y,{onAskGrace:e=>aH(e),asking:e7}),al?(0,r.jsxs)("div",{className:"dz-artwrap",style:{width:ag*ac,height:am*ac},children:[(0,r.jsxs)("div",{className:"dz-art","data-viewport":ey,style:{width:ag,height:am,transform:`scale(${ac})`,transformOrigin:"top left"},children:[(0,r.jsx)("iframe",{ref:t4,title:el("design.canvas.previewTitle"),sandbox:"allow-scripts",srcDoc:($=eJ??"",H=`<script data-cstla-instrument>${A}</script>`,/<\/body>/i.test($)?$.replace(/<\/body>/i,`${H}</body>`):$+H),onLoad:()=>{aE(),aM()},style:{width:"100%",height:"100%",border:"none",background:"#fff",display:"block"}}),(0,r.jsxs)("div",{className:"dz-ovl",children:[to&&"edit"===eI&&(0,r.jsxs)(r.Fragment,{children:[to.v.map((e,t)=>(0,r.jsx)("div",{className:"dz-guide v",style:{left:e-tl.scrollX}},"gv"+t)),to.h.map((e,t)=>(0,r.jsx)("div",{className:"dz-guide h",style:{top:e-tl.scrollY}},"gh"+t))]}),ts&&a6&&!tf&&"preview"!==eI&&"markup"!==eI&&"comments"!==eI&&(0,r.jsx)("div",{className:"dz-hl",style:a6,children:(0,r.jsx)("span",{className:"tag",children:ts.label})}),"preview"!==eI&&ty.map(e=>(0,r.jsx)("div",{className:"dz-selbox",style:ab(e.boundingBox)},e.cstlaId)),a1.map(e=>(0,r.jsx)("div",{className:"dz-mk",style:af(es(e))},e.id)),tC&&(0,r.jsx)("div",{className:"dz-mk",style:af({x:tC.xPct,y:tC.yPct,w:tC.wPct,h:tC.hPct})}),a0.map((e,t)=>(0,r.jsx)("div",{className:"dz-pin",style:av(e.xp,e.yp),onClick:e=>{e.stopPropagation(),eh("comments")},children:t+1},e.id))]})]}),tk&&tf&&a4&&"preview"!==eI&&ty.length<=1&&(0,r.jsxs)("div",{className:"dz-ctx",style:{left:Math.max(6,a4.left*ac),top:Math.max(4,a4.top*ac-40)},onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("button",{className:"ask",onClick:()=>{tS(tf),tj(!1),aW(el("design.toast.elementAttached"))},children:[(0,r.jsx)(o.I,{name:"bot",size:13})," ",el("design.ctx.askFront")]}),(0,r.jsx)("button",{onClick:()=>tj(!1),children:(0,r.jsx)(o.I,{name:"close",size:13})})]}),tE&&(0,r.jsxs)("div",{className:"dz-cpop",style:{left:Math.max(6,Math.min((F=av(tE.xpPct,tE.ypPct)).left*ac,Math.max(6,ag*ac-226))),top:Math.max(6,Math.min(F.top*ac,Math.max(6,am*ac-120)))},onClick:e=>e.stopPropagation(),children:[(0,r.jsx)("textarea",{rows:3,autoFocus:!0,placeholder:tE.markup?el("design.cmt.markupPlaceholder"):el("design.cmt.pointPlaceholder"),value:tT,onChange:e=>tR(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),aY())}}),tE.markup?(0,r.jsxs)("div",{className:"row",style:{flexDirection:"column",alignItems:"stretch"},children:[(0,r.jsxs)("button",{className:"dz-mini-btn accent",style:{justifyContent:"center"},onClick:()=>aY(!0),children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.cmt.markAskGrace")]}),(0,r.jsx)("button",{className:"dz-mini-btn",style:{justifyContent:"center"},onClick:()=>aY(!1),children:el("design.cmt.markRegion")}),(0,r.jsx)("button",{className:"dz-mini-btn",style:{justifyContent:"center"},onClick:()=>{tM(null),tR(""),tI(null)},children:el("design.cmt.cancel")})]}):(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>{tM(null),tR(""),tI(null)},children:el("design.cmt.cancel")}),(0,r.jsx)("button",{className:"dz-mini-btn accent",onClick:()=>aY(),children:el("design.cmt.comment")})]})]}),aQ&&(0,r.jsxs)("div",{className:"dz-build-bar",children:[(0,r.jsx)(o.I,{name:"skill",size:13})," ",el("design.canvas.working")," ",(0,r.jsx)("span",{className:"sh"})]})]}):(0,r.jsx)("div",{className:"dz-emptywrap",children:e0?(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"error",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.loadErrTitle")}),(0,r.jsx)("div",{className:"s",children:e0})]}):0===as.length&&ai.length>0?(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"doc",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.componentsTitle",{count:ai.length,plural:ai.length>1?"s":""})}),(0,r.jsx)("div",{className:"s",children:el("design.empty.componentsBody")})]}):(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"grid",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.noPrototypeTitle")}),(0,r.jsxs)("div",{className:"s",children:[el("design.empty.noPrototypePre")," ",(0,r.jsx)("span",{className:"mono",children:"design-mock/"}),". ",el("design.empty.noPrototypePost")]})]})})]})]}),ef?(0,r.jsxs)("div",{className:"dz-rail",children:[(0,r.jsxs)("div",{className:"dz-rail-tabs",children:[a2.map(([e,t])=>(0,r.jsx)("div",{className:"dz-rt "+(a5===e?"active":""),onClick:()=>eh(e),children:t},e)),(0,r.jsx)("button",{className:"dz-collapse-btn",title:el("design.rail.collapse"),onClick:()=>ev(!1),children:(0,r.jsx)(o.I,{name:"chevronRight",size:15})})]}),(0,r.jsxs)("div",{className:"dz-rail-body",children:["layers"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.layers.title")}),al?0===tg.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.layers.reading")}):tg.map(e=>(0,r.jsxs)("div",{className:"dz-layer"+(tf?.nodePath===e.path?" active":""),style:{paddingLeft:8+11*e.depth},onClick:()=>(function(e){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:selectByPath",path:e},"*")}catch{}})(e.path),title:`<${e.tag}>`,children:[(0,r.jsx)(o.I,{name:e.kids>0?"grid":"dot",size:10}),(0,r.jsx)("span",{className:"lt",children:e.label}),(0,r.jsxs)("span",{className:"lg",children:[e.tag,e.kids>0?` \xb7 ${e.kids}`:""]})]},e.path)):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.layers.openScreen")})]}),"screens"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.screens.title")}),0===as.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.screens.empty")}):as.map(e=>(0,r.jsxs)("div",{className:"dz-row "+(ad===e?"active":""),onClick:()=>{eq(e),tv(null),tj(!1)},children:[(0,r.jsx)("div",{className:"dz-r-ic",children:(0,r.jsx)(o.I,{name:"grid",size:14})}),(0,r.jsxs)("div",{style:{minWidth:0},children:[(0,r.jsx)("div",{className:"dz-r-t",children:J(e)}),(0,r.jsx)("div",{className:"dz-r-s",children:e.replace(/^design-mock\//,"")})]}),ad===e&&(0,r.jsx)("span",{className:"dz-r-meta",children:el("design.screens.active")})]},e)),(0,r.jsxs)("div",{className:"dz-addrow",onClick:()=>aH("Build a new screen for the prototype."),children:[(0,r.jsx)(o.I,{name:"add",size:13})," ",el("design.screens.newScreen")]}),ai.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:16},children:el("design.screens.components",{count:ai.length})}),(0,r.jsx)("div",{className:"dz-comp-grid",children:ai.slice(0,8).map((e,t)=>(0,r.jsxs)("div",{className:"dz-comp",children:[(0,r.jsx)("div",{style:{height:30,borderRadius:7,background:t%2?q(eM.accent,.16):"var(--bg-app)",border:"1px solid var(--border)",display:"grid",placeItems:"center",color:"var(--accent)",fontSize:12},children:"◧"}),(0,r.jsx)("div",{className:"nm",children:(e.split("/").pop()||e).replace(/\.[a-z]+$/i,"")})]},e))})]})]}),"docs"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.docs.title")}),0===tB.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.docs.empty")}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-docnav",children:tB.map(e=>(0,r.jsxs)("div",{className:"dz-doctab "+(tY===e.path?"active":""),onClick:()=>aj(e.path),title:e.label,children:[(0,r.jsx)(o.I,{name:/APPROVED/i.test(e.path)?"check":"doc",size:12}),(0,r.jsx)("span",{children:e.label})]},e.path))}),(0,r.jsx)("div",{className:"dz-docbody md",children:tZ?(0,r.jsx)(D.oz,{remarkPlugins:[P.A],children:tZ}):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)"},children:el("design.docs.reading")})})]})]}),"styles"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.styles.palette")}),(0,r.jsx)("div",{className:"dz-swatches",children:Z.map(e=>(0,r.jsx)("span",{title:e.name,className:"dz-sw "+(eM.accent===e.c?"on":""),style:{background:e.c},onClick:()=>aS({accent:e.c,accentName:e.name})},e.name))}),aC(el("design.styles.accentCustom"),"accent"),aC(el("design.styles.secondary"),"secondary"),aC(el("design.styles.surface"),"surface"),(0,r.jsxs)("details",{className:"dz-adv",children:[(0,r.jsx)("summary",{children:el("design.styles.semanticColors")}),aC(el("design.styles.success"),"success","#10b981"),aC(el("design.styles.warning"),"warning","#f59e0b"),aC(el("design.styles.danger"),"danger","#ef4444"),aC(el("design.styles.accentText"),"accentFg")]}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.typography")}),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.bodyFont")}),(0,r.jsx)("div",{className:"dz-opt",children:_.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.fontName===e.n?"on":""),onClick:()=>aS({font:e.s,fontName:e.n}),children:e.n},e.n))}),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.headingFont")}),(0,r.jsx)("div",{className:"dz-opt",children:_.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.headingFontName===e.n?"on":""),onClick:()=>aS({headingFont:e.s,headingFontName:e.n}),children:e.n},e.n))}),aI(el("design.styles.weight"),"fontWeight",300,800,100),aI(el("design.styles.lineHeight"),"lineHeight",1,2,.05),aI(el("design.styles.letterSpacing"),"letterSpacing",-1,4,.1,"px"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.textSize")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.sizeSmall"),.9],[el("design.styles.sizeDefault"),1],[el("design.styles.sizeLarge"),1.15]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.fontScale===t?"on":""),onClick:()=>aS({fontScale:t}),children:e},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.shapeDepth")}),(0,r.jsx)("div",{className:"dz-opt",children:K.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.radius===e.r?"on":""),onClick:()=>aS({radius:e.r}),children:el("design.styles.radius"+e.n)},e.n))}),aI(el("design.styles.radius"),"radius",0,32,1,"px"),aI(el("design.styles.borderWidth"),"borderWidth",0,4,1,"px"),aC(el("design.styles.borderColor"),"borderColor"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.shadow")}),(0,r.jsx)("div",{className:"dz-opt",children:["none","sm","md","lg"].map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.shadow===e?"on":""),onClick:()=>aS({shadow:e}),children:"none"===e?el("design.styles.shadowNone"):e.toUpperCase()},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.theme")}),(0,r.jsxs)("div",{className:"dz-opt",children:[(0,r.jsx)("span",{className:"dz-pill2 "+("dark"===eM.theme?"on":""),onClick:()=>aS({theme:"dark"}),children:el("design.styles.dark")}),(0,r.jsx)("span",{className:"dz-pill2 "+("light"===eM.theme?"on":""),onClick:()=>aS({theme:"light"}),children:el("design.styles.light")})]}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.spacingLayoutMotion")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.densityCompact"),8],[el("design.styles.densityCozy"),12],[el("design.styles.densityComfy"),16]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.density===t?"on":""),onClick:()=>aS({density:t}),children:e},e))}),aI(el("design.styles.density"),"density",4,28,1,"px"),aI(el("design.styles.containerWidth"),"containerWidth",880,1600,20,"px"),aI(el("design.styles.motionSpeed"),"motionMs",0,600,20,"ms"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.easing")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.easeEase"),"ease"],[el("design.styles.easeInOut"),"ease-in-out"],[el("design.styles.easeLinear"),"linear"],[el("design.styles.easeSmooth"),"cubic-bezier(.4,0,.2,1)"]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.ease===t?"on":""),onClick:()=>aS({ease:t}),children:e},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.spacingScale")}),(0,r.jsx)("div",{style:{display:"flex",gap:5,alignItems:"flex-end"},children:[.5,1,1.5,2,3,4].map(e=>{let t=Math.round(eM.density*e);return(0,r.jsxs)("div",{style:{textAlign:"center"},children:[(0,r.jsx)("div",{style:{width:20,height:Math.max(3,t),background:q(eM.accent,.5),borderRadius:3}}),(0,r.jsx)("div",{style:{fontSize:9,color:"var(--text-faint)",marginTop:3},children:t})]},e)})}),(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:16,gap:8},children:[(0,r.jsx)("span",{style:{fontSize:10.5,color:"var(--text-faint)"},children:el("design.styles.restyleNote")}),(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>aS(er),children:el("design.styles.reset")})]})]}),"comments"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.comments.title")}),0===a0.length&&(0,r.jsxs)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:[el("design.comments.emptyPre")," ",(0,r.jsx)("b",{children:el("design.comments.emptyTool")})," ",el("design.comments.emptyPost")]}),a0.map((e,t)=>(0,r.jsxs)("div",{className:"dz-cmt",children:[(0,r.jsxs)("div",{className:"h",children:[(0,r.jsx)("span",{className:"pin",children:t+1})," ",el("design.comments.comment")," ",(0,r.jsx)("span",{className:"x",onClick:()=>{M(e.id).then(()=>tV(e=>e+1))},children:(0,r.jsx)(o.I,{name:"trash",size:12})})]}),(0,r.jsx)("div",{className:"bd",children:e.body}),e.reply?(0,r.jsxs)("div",{className:"rep",children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",e.reply]}):(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>{e9(!0);let t=e.selection&&"object"==typeof e.selection&&e.selection.componentName?e.selection:void 0;h(`Apply this canvas comment on screen ${ad}${t?` (it is pinned on the ${t.componentName} element)`:""}: "${e.body}"`,void 0,t)},children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.comments.askGrace")]})]},e.id)),a1.length>0&&(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:14},children:el("design.comments.markedRegions",{count:a1.length})}),a1.map((e,t)=>{let a=e.body&&"(region marked for review)"!==e.body?e.body:"";return(0,r.jsxs)("div",{className:"dz-cmt",children:[(0,r.jsxs)("div",{className:"h",children:[(0,r.jsxs)("span",{className:"pin",children:["M",t+1]})," ",el("design.comments.region")," ",(0,r.jsx)("span",{className:"x",onClick:()=>{M(e.id).then(()=>tV(e=>e+1))},children:(0,r.jsx)(o.I,{name:"trash",size:12})})]}),a&&(0,r.jsx)("div",{className:"bd",children:a}),e.reply?(0,r.jsxs)("div",{className:"rep",children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",e.reply]}):(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>{e9(!0);let t=ei(es(e));h(`On screen ${ad}, I marked a region for review (${t}).${a?` My note: "${a}"`:" Please review and refine it."} Update the screen accordingly.`)},children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.comments.askGrace")]})]},e.id)})]}),"history"===a5&&(U=t2.current.get(ad),B=U?.pos??-1,X=U?U.labels.map((e,t)=>({lab:e,i:t})):[],(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:U&&U.stack.length>1?el("design.history.pos",{pos:B+1,total:U.stack.length}):el("design.history.title")}),al?X.length<=1?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.history.noEdits")}):(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:X.slice().reverse().map(({lab:e,i:t})=>(0,r.jsxs)("div",{onClick:()=>{let e,a;return e=t9.current,void((a=t2.current.get(e))&&!(t<0)&&!(t>=a.stack.length)&&t!==a.pos&&(a.pos=t,aD(e,a)))},style:{display:"flex",alignItems:"center",gap:8,padding:"7px 9px",borderRadius:8,cursor:"pointer",fontSize:12,background:t===B?"rgba(224,164,78,.12)":"transparent",color:t===B?"var(--accent)":"var(--text-dim)",border:"1px solid "+(t===B?"var(--accent)":"transparent")},children:[(0,r.jsx)("span",{style:{fontVariantNumeric:"tabular-nums",opacity:.6,minWidth:16,textAlign:"right"},children:0===t?"•":t}),(0,r.jsx)("span",{style:{flex:1,fontWeight:t===B?700:500},children:e||el("design.history.edited")}),t===B&&(0,r.jsx)("span",{style:{fontSize:10,fontWeight:700},children:el("design.history.current")})]},t))}):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)"},children:el("design.history.openScreen")})]})),"versions"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.versions.title")}),0===tA.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.versions.empty")}):tA.map(e=>(0,r.jsxs)("div",{className:"dz-vnode"+(tO===e.id?" active":""),onClick:()=>tW(tO===e.id?null:e.id),title:el("design.versions.revertHint"),children:[(0,r.jsxs)("div",{className:"vt",children:[e.label," ",(0,r.jsx)("span",{className:"dz-tag",children:el("design.versions.files",{count:e.files.length,plural:1===e.files.length?"":"s"})})]}),(0,r.jsx)("div",{className:"vs",children:e.note}),(0,r.jsx)("div",{className:"vtime",children:function(e,t){let a=Math.max(0,Math.round((new Date().getTime()-e)/1e3));if(a<60)return t("design.time.justNow");let r=Math.round(a/60);if(r<60)return t("design.time.minAgo",{n:r});let n=Math.round(r/60);return n<24?t("design.time.hAgo",{n:n}):t("design.time.dAgo",{n:Math.round(n/24)})}(e.createdAt,el)}),tO===e.id&&(0,r.jsxs)("div",{className:"dz-addrow",style:{marginTop:8,padding:"6px"},onClick:t=>{t.stopPropagation(),e.restorable?T(e.id).then(async t=>{if(!t.ok)return void aW(t.error||el("design.toast.restoreFailed"));let a=t9.current;tQ.current=!1,t0.current="",t2.current.delete(a),t6(e=>e+1);let r=await g(a);r.ok&&null!=r.html&&(eQ(r.html),tv(null)),aW(el("design.toast.restored",{label:e.label}))}):(e9(!0),R(e.label,e.note)),tW(null)},children:[(0,r.jsx)(o.I,{name:"refresh",size:12})," ",el("design.versions.revertTo",{label:e.label})]})]},e.id))]})]})]}):(0,r.jsxs)("div",{className:"dz-strip right",onClick:()=>ev(!0),title:el("design.rail.expand"),children:[(0,r.jsx)(o.I,{name:"chevronLeft",size:16}),(0,r.jsx)(o.I,{name:"sidebarIcon",size:16})]}),eL&&(0,r.jsx)("div",{className:"dz-modal-bg",onClick:()=>eO(!1),children:(0,r.jsxs)("div",{className:"dz-modal",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"dz-modal-h",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"arrowDown",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"t",children:el("design.export.title")}),(0,r.jsx)("div",{className:"s",children:el("design.export.sub")})]}),(0,r.jsx)("div",{className:"x",onClick:()=>eO(!1),children:(0,r.jsx)(o.I,{name:"close",size:16})})]}),(0,r.jsx)("div",{className:"dz-modal-b",children:[[el("design.export.row.screens"),String(as.length)],[el("design.export.row.comments"),String(tD.filter(e=>!en(e)).length)],[el("design.export.row.versions"),String(tA.length)],[el("design.export.row.tokens"),el("design.export.row.tokensVal")],[el("design.export.row.approvedMd"),""],[el("design.export.row.kbRag"),""],[el("design.export.row.adaNotified"),""],[el("design.export.row.planner"),""]].map(e=>(0,r.jsxs)("div",{className:"dz-dl",children:[(0,r.jsx)("span",{className:"ck",children:(0,r.jsx)(o.I,{name:"check",size:11})}),e[0],e[1]&&(0,r.jsx)("span",{className:"n",children:e[1]})]},e[0]))}),(0,r.jsxs)("div",{className:"dz-modal-f",children:[(0,r.jsx)("span",{className:"note",children:el("design.export.note")}),(0,r.jsx)("div",{className:"dz-spacer"}),(0,r.jsxs)("button",{className:"dz-mini-btn",disabled:eP,onClick:aX,children:[(0,r.jsx)(o.I,{name:"cpu",size:13})," ",el("design.export.buildProd")]}),(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>eO(!1),children:el("design.export.close")}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP||ao,onClick:()=>{eO(!1),aF()},children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",el("design.export.approveDesign")]})]})]})}),eW&&(0,r.jsx)("div",{className:"dz-flash",children:eW})]})}function ed(e){return(0,r.jsx)(eo,{grace:e.grace,context:e.context,status:e.status,tokens:e.tokens})}}},e=>{e.O(0,[928,5452,171,5523,7218,7621,2235,7066,7358],()=>e(e.s=7654)),_N_E=e.O()}]);
558
+ `,Z=[{name:"Indigo",c:"#6366f1"},{name:"Violet",c:"#8b5cf6"},{name:"Blue",c:"#3b82f6"},{name:"Sky",c:"#0ea5e9"},{name:"Cyan",c:"#06b6d4"},{name:"Teal",c:"#14b8a6"},{name:"Emerald",c:"#10b981"},{name:"Lime",c:"#84cc16"},{name:"Amber",c:"#f59e0b"},{name:"Orange",c:"#f97316"},{name:"Rose",c:"#f43f5e"},{name:"Pink",c:"#ec4899"}],_=[{n:"Inter",s:"'Inter',system-ui,sans-serif"},{n:"IBM Plex",s:"'IBM Plex Sans',sans-serif"},{n:"Geist",s:"'Geist','Inter',ui-sans-serif,sans-serif"},{n:"System",s:"system-ui,-apple-system,Segoe UI,sans-serif"},{n:"Serif",s:"Georgia,'Times New Roman',serif"},{n:"Mono",s:"ui-monospace,'SF Mono',Menlo,monospace"},{n:"Display",s:"'Poppins','Inter',system-ui,sans-serif"}],K=[{n:"Sharp",r:6},{n:"Soft",r:16},{n:"Round",r:26}],V=[{id:"select",ic:"target"},{id:"edit",ic:"newFile"},{id:"markup",ic:"skill"},{id:"comments",ic:"chat"},{id:"inspect",ic:"search"},{id:"preview",ic:"play"}];function q(e,t){let a=parseInt(e.replace("#",""),16);return`rgba(${a>>16&255},${a>>8&255},${255&a},${t})`}function J(e){return(e.split("/").pop()||e).replace(/\.html?$/i,"")}function Q(e){let t=(e||"").replace(/\\/g,"/"),a=t.toLowerCase().lastIndexOf("design-mock/");return a>=0?t.slice(a):null}let ee=/\b(remov(i|ido|eu|idos)|adicion(ei|ado|ou|ados)|cri(ei|ado|ou|ados)|corrig(i|ido|iu)|ajust(ei|ado|ou)|atualiz(ei|ado|ou)|mud(ei|ado|ou)|delet(ei|ado|ou)|limp(ei|ado|ou)|troqu(ei)|troc(ado|ou)|inseri|inserido|fiz|feit[oa]s?|pront[oa]s?|conclu(i|í|ido|ída)|finaliz(ei|ado|ou)|implement(ei|ado|ou)|ger(ei|ado|ou)|salv(ei|o|ado)|apliqu(ei)|aplic(ado|ou)|added|removed|deleted|created|fixed|updated|changed|cleaned|adjusted|renamed|moved|made|done|ready|here'?s|i'?ve|i\s+have|i\s+just|i\s+made)\b/i,et=[["design.sugg.adjustPalette","Adjust the color palette"],["design.sugg.improveSpacing","Improve the spacing"],["design.sugg.mobileVersion","Create a mobile version"],["design.sugg.darkTheme","Try a dark theme"],["design.sugg.addSection","Add a section"],["design.sugg.newScreen","Create a new screen"],["design.sugg.visualDocs","Generate the visual docs"],["design.sugg.askReview","Ask Grace for a review"],["design.sugg.approve","Approve design"],["design.sugg.sendExec","Send to execution"]],ea=[["design.sugg.firstScreen","Build the first screen"],["design.sugg.proposePalette","Propose a color palette"],["design.sugg.defineTypography","Define the typography"],["design.sugg.mainFlow","Design the main flow"],["design.sugg.heroSection","Add a hero section"],["design.sugg.mobileVersion","Create a mobile version"]],er={accent:"#6366f1",accentName:"Indigo",accentFg:"",secondary:"",surface:"",success:"",warning:"",danger:"",theme:"dark",font:_[0].s,fontName:"Inter",headingFont:_[0].s,headingFontName:"Inter",fontWeight:400,lineHeight:1.5,letterSpacing:0,fontScale:1,radius:16,borderWidth:1,borderColor:"",shadow:"md",density:12,containerWidth:1200,motionMs:200,ease:"ease"};function en(e){return!!(e.selection&&"object"==typeof e.selection&&"markup"===e.selection.kind)}function es(e){return e.selection.rect}function ei(e){let t=e.x+e.w/2,a=e.y+e.h/2;return`${a<33?"top":a<66?"middle":"bottom"}-${t<33?"left":t<66?"center":"right"} area, roughly ${Math.round(e.w)}%\xd7${Math.round(e.h)}% of the page`}function eo({grace:e,context:t,status:a,tokens:u}){var $;let H,F,U,B,X,ed=(0,s.useRouter)(),el=(0,i.k)(),[ec,ep]=(0,n.useState)("approved"===a||t.approved?"approved":"building"),[eu,eg]=(0,n.useState)(!1),[em,eh]=(0,n.useState)("screens"),[ex,eb]=(0,n.useState)(!0),[ef,ev]=(0,n.useState)(!0),[ey,ez]=(0,n.useState)("desktop"),[ew,ek]=(0,n.useState)(null),[ej,eN]=(0,n.useState)(!1),[eS,eC]=(0,n.useState)(100),[eI,eE]=(0,n.useState)("select"),[eM,eT]=(0,n.useState)({...er,...u??{}}),[eR,eD]=(0,n.useState)(""),[eP,eA]=(0,n.useState)(!1),[eL,eO]=(0,n.useState)(!1),[eW,e$]=(0,n.useState)(""),[eH,eF]=(0,n.useState)([]),[eU,eB]=(0,n.useState)(!1),[eX,eY]=(0,n.useState)(!1),[eG,eZ]=(0,n.useState)(""),e_=(0,n.useRef)(null),eK=(0,n.useRef)(!0),[eV,eq]=(0,n.useState)(""),[eJ,eQ]=(0,n.useState)(null),[e0,e1]=(0,n.useState)(""),[e2,e6]=(0,n.useState)([]),[e5,e4]=(0,n.useState)([]),[e8,e3]=(0,n.useState)(!0),[e7,e9]=(0,n.useState)(!1),te=(0,n.useRef)(0),tt=(0,n.useRef)(0),ta=(0,n.useRef)(null),[tr,tn]=(0,n.useState)([]),[ts,ti]=(0,n.useState)(null),[to,td]=(0,n.useState)(null),[tl,tc]=(0,n.useState)({scrollX:0,scrollY:0,viewportW:980,viewportH:560,docW:980,docH:560}),[tp,tu]=(0,n.useState)({w:1200,h:700}),[tg,tm]=(0,n.useState)([]),[th,tx]=(0,n.useState)(!1),tb=(0,n.useRef)(!1),[tf,tv]=(0,n.useState)(null),[ty,tz]=(0,n.useState)([]),tw=(0,n.useRef)([]),[tk,tj]=(0,n.useState)(!1),[tN,tS]=(0,n.useState)(null),[tC,tI]=(0,n.useState)(null),[tE,tM]=(0,n.useState)(null),[tT,tR]=(0,n.useState)(""),[tD,tP]=(0,n.useState)([]),[tA,tL]=(0,n.useState)([]),[tO,tW]=(0,n.useState)(null),[t$,tH]=(0,n.useState)(null),[tF,tU]=(0,n.useState)(!1),[tB,tX]=(0,n.useState)([]),[tY,tG]=(0,n.useState)(null),[tZ,t_]=(0,n.useState)(""),[tK,tV]=(0,n.useState)(0),[tq,tJ]=(0,n.useState)("idle"),tQ=(0,n.useRef)(!1),t0=(0,n.useRef)(""),t1=(0,n.useRef)(null),t2=(0,n.useRef)(new Map),[t6,t5]=(0,n.useState)(0),t4=(0,n.useRef)(null),t8=(0,n.useRef)(null),t3=(0,n.useRef)(""),t7=(0,n.useRef)(eI),t9=(0,n.useRef)(""),ae=(0,n.useRef)(eM),at=(0,n.useRef)([]),aa=(0,n.useRef)(null),ar=(0,n.useRef)(!1),an=(0,n.useRef)(!1),as=Array.from(new Set([...t.designMockFiles.filter(e=>/\.html?$/i.test(e)),...tr]));at.current=as;let ai=t.designMockFiles.filter(e=>e.startsWith("design-mock/components/")),ao="approved"===ec,ad=eV&&as.includes(eV)?eV:as[0]??"";t9.current=ad,ar.current=ao,an.current=e7,t7.current=eI,ae.current=eM;let al=as.length>0&&null!=eJ&&!e0,ac=eS/100,ap=null!=ew?{w:Math.max(320,Math.min(1920,ew)),h:Math.max(560,Math.round(1.5*Math.max(320,Math.min(1920,ew))))}:"tablet"===ey?{w:768,h:1024}:"mobile"===ey?{w:390,h:844}:null,au=null!=ap,ag=au?ap.w:Math.max(1,tp.w/ac),am=au?ap.h:Math.max(1,tp.h/ac),ah=Math.max(1,tl.docW||tl.viewportW||1),ax=Math.max(1,tl.docH||tl.viewportH||1),ab=e=>({left:e.x-tl.scrollX,top:e.y-tl.scrollY,width:e.w,height:e.h}),af=e=>({left:e.x/100*ah-tl.scrollX,top:e.y/100*ax-tl.scrollY,width:e.w/100*ah,height:e.h/100*ax}),av=(e,t)=>({left:e/100*ah-tl.scrollX,top:t/100*ax-tl.scrollY}),{canUndo:ay,canRedo:az}=(0,n.useMemo)(()=>{let e=t2.current.get(ad);return{canUndo:!!e&&e.pos>0,canRedo:!!e&&e.pos<e.stack.length-1}},[t6,ad]);(0,n.useEffect)(()=>{if(document.getElementById("dz-style"))return;let e=document.createElement("style");e.id="dz-style",e.textContent=G,document.head.appendChild(e)},[]),(0,n.useEffect)(()=>{try{"0"===localStorage.getItem("bx.dzChat")&&eb(!1),"0"===localStorage.getItem("bx.dzRail")&&ev(!1)}catch{}},[]),(0,n.useEffect)(()=>{try{localStorage.setItem("bx.dzChat",ex?"1":"0")}catch{}},[ex]),(0,n.useEffect)(()=>{try{localStorage.setItem("bx.dzRail",ef?"1":"0")}catch{}},[ef]),(0,n.useEffect)(()=>{let e=!1,t=e=>e.length>250?e.slice(-250):e;function a(){if(e||document.hidden||ta.current)return;let a=new EventSource(`/api/stream?channel=design&evCursor=${te.current}&msgCursor=${tt.current}`);ta.current=a,a.addEventListener("ev",e=>{let a=JSON.parse(e.data);a.seq>te.current&&(te.current=a.seq),e4(e=>e.some(e=>e.id===a.id)?e:t([...e,a]))}),a.addEventListener("msg",e=>{let a=JSON.parse(e.data),r=a.createdAt?new Date(a.createdAt).getTime():0;if(r>tt.current&&(tt.current=r),e6(e=>e.some(e=>e.id===a.id)?e:t([...e,a])),e4(e=>e.filter(e=>e.runId!==a.id||"text"!==e.kind)),"agent"===a.fromKind){e9(!1),tV(e=>e+1),ed.refresh();let e=t9.current;e&&setTimeout(()=>{tQ.current||(t2.current.delete(e),t5(e=>e+1),g(e).then(e=>{e.ok&&null!=e.html&&(eQ(e.html),e1(""))}))},300)}})}function r(){ta.current&&(ta.current.close(),ta.current=null)}(async function(){let[t,a]=await Promise.all([(0,c.V)("design"),(0,p.k)("design",0)]);e||(e6(t),e4(a),te.current=a.reduce((e,t)=>Math.max(e,t.seq),0),tt.current=t.reduce((e,t)=>Math.max(e,t.createdAt?new Date(t.createdAt).getTime():0),0))})().catch(()=>{}).finally(()=>{!e&&(e3(!1),document.hidden||a())});let n=()=>{document.hidden?r():a()};return document.addEventListener("visibilitychange",n),()=>{e=!0,document.removeEventListener("visibilitychange",n),r()}},[]),(0,n.useEffect)(()=>{if(aM(),eK.current){eK.current=!1;return}let e=setTimeout(()=>{m(eM)},500);return eg(!0),ar.current&&(aa.current&&clearTimeout(aa.current),aa.current=setTimeout(()=>{aa.current=null,function(){if(!ar.current||an.current)return;let e=ae.current;e9(!0),h(`I changed the design directly on the canvas via the Styles panel — the canvas is the source of truth now. RECONCILE the source to match it; do NOT ask, just do it: write the current tokens into design-mock/styles/global.css (:root) — accent ${e.accent}, secondary ${e.secondary}, surface ${e.surface}, body font ${e.font}, heading font ${e.headingFont}, radius ${e.radius}px, theme ${e.theme} — and update design-mock/design-system.md (palette / typography / tokens) plus any affected component docs to reflect it, keeping every screen VISUALLY IDENTICAL. Then briefly summarize what you synced.`).then(e=>{e.ok||e9(!1)}),aW("Grace is syncing your change into the source CSS + docs…")}()},9e3)),()=>clearTimeout(e)},[eM]),(0,n.useEffect)(()=>{if(!ad)return void eQ(null);if(tQ.current&&ad===t0.current)return;tQ.current&&(tQ.current=!1,t0.current="",tJ("idle")),tc(e=>({...e,scrollX:0,scrollY:0}));let e=!0;return e1(""),g(ad).then(t=>{e&&(t.ok&&null!=t.html?eQ(t.html):(eQ(null),e1(t.error||el("design.toast.screenLoadFail"))))}),()=>{e=!1}},[as.join("|"),ad]),(0,n.useEffect)(()=>{if(tQ.current)return;let e=new Set(e2.map(e=>e.id)),t=e5.filter(t=>{if("create"!==t.kind&&"edit"!==t.kind||e.has(t.runId))return!1;let a=Q(t.target||"");return null!=a&&/^design-mock\/screens\/[^/]+\.html?$/i.test(a)});if(!t.length)return;let a=t[t.length-1];if(a.id===t3.current)return;t3.current=a.id;let r=Q(a.target||"");tn(e=>e.includes(r)?e:[...e,r]),eq(r),t2.current.delete(r),t5(e=>e+1),setTimeout(()=>{g(r).then(e=>{e.ok&&null!=e.html&&(eQ(e.html),e1(""))})},550)},[e5,e2]),(0,n.useEffect)(()=>{let e=new Set(e2.map(e=>e.id));e5.some(t=>!e.has(t.runId))&&e9(!1)},[e5,e2]),(0,n.useEffect)(()=>{let e=!0;return Promise.all([x().catch(()=>({comments:[]})),b().catch(()=>({versions:[]})),f().catch(()=>({docs:[]}))]).then(([t,a,r])=>{e&&(tP(t.comments||[]),tL(a.versions||[]),tX(r.docs||[]))}),()=>{e=!1}},[tK]);let aw=async()=>{try{let e=await (0,L.p)("design");if(e.used>=e.max&&!tF){tU(!0);try{await (0,O.L)("design"),e=await (0,L.p)("design")}finally{tU(!1)}}tH(e)}catch{}};async function ak(){if(!tF){tU(!0);try{await (0,O.L)("design"),await aw()}finally{tU(!1)}}}function aj(e){tG(e),t_(""),v(e).then(e=>{e.ok&&null!=e.body?t_(e.body):t_(el("design.docs.readErr"))})}(0,n.useEffect)(()=>{ex&&aw()},[ex,e2.length]),(0,n.useEffect)(()=>{"docs"===em&&tB.length&&(tY&&tB.some(e=>e.path===tY)||aj(tB[0].path))},[em,tB]);let aN=(0,n.useRef)(!1);(0,n.useEffect)(()=>{!t.gatePending||t.gateScaffolded||aN.current||e7||(aN.current=!0,e9(!0),y().then(e=>{e.ok||(e9(!1),aN.current=!1)}))},[t.gatePending,t.gateScaffolded]),(0,n.useEffect)(()=>{function e(e){var t,a,r;let n=e.data;if(n&&n.__cstla&&t4.current&&e.source===t4.current.contentWindow)if("canvas:viewport"===n.type){let e=n.payload;tc({scrollX:Math.max(0,e.scrollX||0),scrollY:Math.max(0,e.scrollY||0),viewportW:Math.max(1,e.viewportW||1),viewportH:Math.max(1,e.viewportH||1),docW:Math.max(1,e.docW||e.viewportW||1),docH:Math.max(1,e.docH||e.viewportH||1)})}else if("canvas:ready"===n.type){aE(),aM();let e=!!n.payload?.interactive;tb.current=e,tx(e)}else if("canvas:hover"===n.type)ti(n.payload);else if("canvas:guides"===n.type)td(n.payload);else if("canvas:tree"===n.type)tm(n.payload?.items??[]);else if("canvas:nav"===n.type){let e,r,s,i=(t=String(n.payload?.href||""),a=at.current,r=((e=t.split("#")[0].split("?")[0].replace(/\/+$/,"")).split("/").pop()||e).replace(/\.html?$/i,"").toLowerCase(),(s=a.find(e=>(e.split("/").pop()||e).replace(/\.html?$/i,"").toLowerCase()===r))||""!==r&&"index"!==r&&"home"!==r||(s=a.find(e=>/(^|\/)(index|home)\.html?$/i.test(e))||a[0]),s||null);i&&(eq(i),tv(null),tz([]),tj(!1))}else if("canvas:select"===n.type){let e={...n.payload,pageId:t9.current};tv(e),tz([e]),tj("select"===t7.current||"edit"===t7.current)}else if("canvas:selectToggle"===n.type){let e={...n.payload,pageId:t9.current},t=tw.current,a=t.findIndex(t=>t.cstlaId===e.cstlaId),r=a>=0?t.filter((e,t)=>t!==a):[...t,e];tz(r),tv(r.length?r[r.length-1]:null),tj(!1)}else if("canvas:reselect"===n.type){let e={...n.payload,pageId:t9.current};tv(e),tz(t=>t.length?t.map(t=>t.cstlaId===e.cstlaId?e:t):[e])}else if("canvas:reselectMany"===n.type){let e=(n.payload||[]).map(e=>({...e,pageId:t9.current}));tz(e),tv(e.length?e[e.length-1]:null)}else if("canvas:removed"===n.type)tv(null),tz([]),tj(!1);else if("canvas:dirty"===n.type)tQ.current=!0,t0.current=t9.current,tJ("saving"),t1.current&&(clearTimeout(t1.current),t1.current=null);else if("canvas:editEnd"===n.type)tQ.current=!1,tJ("idle");else if("canvas:commit"===n.type)tb.current||aR(n.payload.html);else if("canvas:history"===n.type)tb.current?(tJ("idle"),aT()):(function(e,t){let a=t0.current||t9.current;if(!a)return;let r=t2.current.get(a);r||(r={stack:[],labels:[],pos:-1},t2.current.set(a,r)),r.pos>=0&&r.stack[r.pos]===e||(r.stack=r.stack.slice(0,r.pos+1),r.labels=r.labels.slice(0,r.pos+1),r.stack.push(e),r.labels.push(t||el("design.history.edited")),r.stack.length>60&&(r.stack.shift(),r.labels.shift()),r.pos=r.stack.length-1,t5(e=>e+1))}(n.payload.html,n.payload.label),aR(n.payload.html),eg(!0));else if("canvas:baseline"===n.type){let e;tb.current||(r=n.payload.html,!(e=t9.current)||t2.current.has(e)||(t2.current.set(e,{stack:[r],labels:[el("design.history.original")],pos:0}),t5(e=>e+1)))}else if("canvas:comment"===n.type)tM(n.payload);else if("canvas:markupDraw"===n.type)tI(n.payload);else if("canvas:markup"===n.type){let e=n.payload;tI(e),tM({xpPct:e.xPct,ypPct:e.yPct,markup:{x:e.xPct,y:e.yPct,w:e.wPct,h:e.hPct}})}else"canvas:edit"===n.type&&aO(n.payload.oldText,n.payload.newText)}return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[]),(0,n.useEffect)(()=>{aE(),td(null),"preview"===eI&&(ti(null),tj(!1))},[eI,ad]),(0,n.useEffect)(()=>{ti(null),td(null)},[eS,ad]),(0,n.useEffect)(()=>{let e=t8.current;if(!e)return;let t=()=>tu({w:Math.max(1,e.clientWidth),h:Math.max(1,e.clientHeight)});t();let a=new ResizeObserver(t);return a.observe(e),()=>a.disconnect()},[al]),(0,n.useEffect)(()=>{"layers"===em&&function(){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:requestTree"},"*")}catch{}}()},[em,ad,tK]),(0,n.useEffect)(()=>{let e=e=>{let t=document.activeElement;t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable)||((e.ctrlKey||e.metaKey)&&("z"===e.key||"Z"===e.key)?(e.preventDefault(),e.shiftKey?aA():aP()):(e.ctrlKey||e.metaKey)&&("y"===e.key||"Y"===e.key)?(e.preventDefault(),aA()):"Escape"===e.key&&(tz([]),tv(null),tj(!1)))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,n.useEffect)(()=>{tw.current=ty},[ty]);let aS=e=>eT(t=>({...t,...e}));function aC(e,t,a=""){let n=String(eM[t]??"");return(0,r.jsxs)("div",{className:"dz-trow",children:[(0,r.jsx)("label",{children:e}),(0,r.jsxs)("div",{className:"dz-colorrow",children:[(0,r.jsx)("input",{type:"color",value:n||a||"#888888",onChange:e=>aS({[t]:e.target.value})}),(0,r.jsx)("input",{type:"text",value:n,placeholder:a||el("design.styles.auto"),spellCheck:!1,onChange:e=>aS({[t]:e.target.value})})]})]},String(t))}function aI(e,t,a,n,s,i=""){let o=Number(eM[t]??0);return(0,r.jsxs)("div",{className:"dz-trow",children:[(0,r.jsxs)("label",{children:[e,(0,r.jsxs)("span",{className:"v",children:[o,i]})]}),(0,r.jsx)("input",{type:"range",min:a,max:n,step:s,value:o,onChange:e=>aS({[t]:Number(e.target.value)})})]},String(t))}function aE(){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:setMode",mode:t7.current},"*")}catch{}}function aM(){let e=ae.current;try{let t,a;t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:applyTokens",tokens:{accent:e.accent,accentFg:e.accentFg||(t=e.accent.replace("#",""),a=parseInt(3===t.length?t.split("").map(e=>e+e).join(""):t,16),(.299*(a>>16&255)+.587*(a>>8&255)+.114*(255&a))/255>.6?"#15171c":"#ffffff"),secondary:e.secondary,surface:e.surface,success:e.success,warning:e.warning,danger:e.danger,font:e.font,headingFont:e.headingFont,fontWeight:e.fontWeight,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,radius:e.radius,borderWidth:e.borderWidth,borderColor:e.borderColor,shadow:e.shadow,space:e.density,containerWidth:e.containerWidth,motionMs:e.motionMs,ease:e.ease,fontScale:e.fontScale,theme:e.theme}},"*")}catch{}}function aT(){t1.current&&clearTimeout(t1.current),t1.current=setTimeout(()=>{tQ.current=!1,t0.current="",tJ("idle"),t1.current=null},1400)}function aR(e){let t=t0.current||t9.current;t&&z(t,e).then(e=>{e.ok?(tJ("saved"),tV(e=>e+1)):(tJ("idle"),aW(e.error||el("design.toast.couldNotSaveEdit"))),aT()})}function aD(e,t){let a=t.stack[t.pos];tv(null),tj(!1),tQ.current=!0,t0.current=e,tJ("saving"),t1.current&&(clearTimeout(t1.current),t1.current=null);try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:setBody",html:a},"*")}catch{}z(e,a).then(()=>{tJ("saved"),tV(e=>e+1),aT()}),t5(e=>e+1)}function aP(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos<=0)&&(t.pos--,aD(e,t))}function aA(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos>=t.stack.length-1)&&(t.pos++,aD(e,t))}async function aL(){let e=t9.current;if(!e||!al)return;eA(!0);let t=await w(e);eA(!1),t.ok?(aW(el("design.toast.savedCheckpoint",{label:t.label??""})),tV(e=>e+1)):aW(t.error||el("design.toast.couldNotSaveCheckpoint"))}async function aO(e,t){let a=t9.current;if(a&&e!==t)if((await k(a,e,t)).ok){let e=await g(a);e.ok&&null!=e.html&&eQ(e.html),aW(el("design.toast.editApplied"))}else aW(el("design.toast.sendingEdit")),e9(!0),h(`On screen ${a}, change the text "${e}" to "${t}".`)}function aW(e){e$(e),setTimeout(()=>e$(t=>t===e?"":t),2400)}async function a$(e){if(!e)return;let t=Array.from(e).filter(e=>e instanceof File);if(!t.length)return;eZ("");let a=t.slice(0,Math.max(0,6-eH.length));if(!a.length)return void eZ(el("design.toast.upTo6"));let r=new FormData;for(let e of a)r.append("files",e);eY(!0);try{let e=await fetch("/api/upload",{method:"POST",body:r}),t=await e.json();if(!e.ok||!t.ok)return void eZ(t.error||el("design.toast.uploadFailed"));eF(e=>[...e,...t.attachments].slice(0,6))}catch{eZ(el("design.toast.uploadFailed"))}finally{eY(!1),e_.current&&(e_.current.value="")}}function aH(e){let t=(e??eR).trim();if(!t&&!eH.length&&!tN||e7)return;e9(!0);let a=eH.slice();eD(""),eF([]),eZ(""),tS(null),h(t||(tN?"Adjust this element.":"Use the attached image(s) as the visual reference."),a,tN??void 0).then(e=>{e.ok||(aW(e.error||el("design.toast.couldNotStart")),e9(!1))})}async function aF(){eA(!0);let e=await j();(eA(!1),e.ok)?(ep("approved"),aW(el("design.toast.designApproved")),ed.refresh()):aW(e.error||el("design.toast.approveFailed"))}async function aU(){eA(!0);let e=await N();(eA(!1),e.ok)?(ep("approved"),eg(!1),e9(!0),eh("docs"),aW(el("design.toast.sentToExec"))):aW(e.error||el("design.toast.couldNotSendExec"))}async function aB(){eA(!0);let e=await S();(eA(!1),e.ok)?(e9(!0),eh("docs"),aW("Resuming handoff — Grace is finishing the documentation, then Ada plans it.")):aW(e.error||"Couldn't resume the handoff.")}async function aX(){eA(!0);let e=await C();if(eA(!1),!e.ok)return void aW(e.error||el("design.toast.buildFailed"));let t=e.built.reduce((e,t)=>e+t.before,0),a=e.built.reduce((e,t)=>e+t.after,0),r=t?Math.round((1-a/t)*100):0,n=e.built.filter(e=>e.obfuscated).length;aW(el("design.toast.built",{count:e.built.length,plural:1===e.built.length?"":"s",pct:r,obf:n?el("design.toast.builtObf",{n:n}):""})),ed.refresh()}async function aY(e=!1){if(!tE){tM(null),tR(""),tI(null);return}if(tE.markup){let t=tT.trim(),a=tE.markup;if(await I(t9.current,a,t),tM(null),tR(""),tI(null),tV(e=>e+1),eh("comments"),e){e9(!0);let e=ei(a);h(`On screen ${t9.current}, I marked a region for review (${e}).${t?` My note: "${t}"`:" Please review and refine it."} Update the screen accordingly.`)}return}if(!tT.trim()){tM(null),tR("");return}let t=tE.selection??tf,a=t?{...t,pageId:t9.current}:void 0;await E(t9.current,tE.xpPct,tE.ypPct,tT.trim(),a),tM(null),tR(""),tV(e=>e+1),eh("comments")}let aG=[...e2].sort((e,t)=>(e.createdAt?new Date(e.createdAt).getTime():0)-(t.createdAt?new Date(t.createdAt).getTime():0)).at(-1),aZ=e7||0!==e2.length&&aG?.fromKind!=="agent"?[]:function(e,t,a){let r=[],n=e=>(e??"").replace(/\s+/g," ").replace(/^[-•*\s]+/,"").replace(/[.:;,!?]+$/,"").trim(),s=(e,t)=>{let a=n(e);a.length>=2&&a.length<=42&&!r.some(e=>e.label.toLowerCase()===a.toLowerCase())&&r.push({label:a?a.charAt(0).toUpperCase()+a.slice(1):a,prompt:t})},i=[...e].reverse().find(e=>"agent"===e.fromKind&&e.text);if(i?.text)for(let e of i.text.matchAll(/\*\*(.+?)\*\*/g)){let t=n(e[1]);if(t.length<2||t.length>42||ee.test(t)||(t.match(/\s+/g)||[]).length>6||s(t,t),r.length>=4)break}for(let[e,n]of t.designMockFiles.some(e=>/\.html?$/i.test(e))?et:ea)if(s(a(e),n),r.length>=4)break;return r.slice(0,4)}(e2,t,el),a_=e?{id:e.id,handle:e.handle,name:e.name,role:"Frontend",color:e.color,image:e.image??null,adapter:"claude",status:"idle",health:null}:null,aK=a_?[a_]:[],aV={};for(let e of e5)(aV[e.runId]??=[]).push(e);let aq=new Set(e2.map(e=>e.id)),aJ=Object.entries(aV).filter(([e])=>!aq.has(e)),aQ=e7||aJ.length>0,a0=tD.filter(e=>e.pageKey===ad&&!en(e)),a1=tD.filter(e=>e.pageKey===ad&&en(e)),a2=[];a2.push(["layers",el("design.tab.layers")],["screens",el("design.tab.screens")],["docs",el("design.tab.docs")],["styles",el("design.tab.styles")],["history",el("design.tab.history")],["comments",`${el("design.tab.comments")}${a0.length?" "+a0.length:""}`],["versions",`${el("design.tab.versions")}${tA.length?" "+tA.length:""}`]);let a6=a2.some(([e])=>e===em)?em:"screens",a5=ts?ab(ts):null,a4=tf?ab(tf.boundingBox):null;return(0,r.jsxs)("div",{className:"dz-wrap",children:[ex?(0,r.jsxs)("div",{className:"dz-chat",children:[(0,r.jsxs)("div",{className:"dz-chat-head",children:[(0,r.jsx)(d.e,{name:e?.name||"Grace",color:e?.color||"#84aef5",image:e?.image,size:28}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"dz-ch-t",children:[e?.name||"Grace"," \xb7 ",el("design.chat.role")]}),(0,r.jsx)("div",{className:"dz-ch-s",children:el("design.chat.subtitle")})]}),aQ&&(0,r.jsxs)("span",{className:"dz-live",children:[(0,r.jsx)("span",{className:"dot"})," ",el("design.chat.live")]}),(0,r.jsx)("button",{className:"dz-collapse-btn",title:el("design.chat.collapse"),onClick:()=>eb(!1),children:(0,r.jsx)(o.I,{name:"chevronLeft",size:15})})]}),t$&&(0,r.jsxs)("div",{className:"ctx-bar",children:[(0,r.jsx)(W.m,{stat:t$,onCompact:ak,compacting:tF}),(0,r.jsx)("span",{})]}),(0,r.jsx)(l.H8,{msgs:e2,typing:e7&&a_?[a_.handle]:[],agents:aK,byRun:aV,liveRuns:aJ,loading:e8,markdownAgent:!0,avatarSize:28,emptyHint:el("design.chat.emptyHint")}),(0,r.jsxs)("div",{className:"dz-composer"+(eU?" drag":""),onDragOver:e=>{e.preventDefault(),eB(!0)},onDragLeave:e=>{e.preventDefault(),eB(!1)},onDrop:e=>{e.preventDefault(),eB(!1),a$(e.dataTransfer.files)},children:[!ao&&aZ.length>0&&!tN&&(0,r.jsx)("div",{className:"dz-chips",children:aZ.map(e=>(0,r.jsx)("span",{className:"dz-chip",onClick:()=>aH(e.prompt),children:e.label},e.label))}),tN&&(0,r.jsxs)("div",{className:"dz-attach",children:[(0,r.jsx)("span",{className:"sw",style:{background:eM.accent}})," ",el("design.composer.elementLabel")," ",(0,r.jsx)("b",{style:{fontWeight:700},children:tN.componentName}),(0,r.jsx)("span",{className:"x",onClick:()=>tS(null),children:(0,r.jsx)(o.I,{name:"close",size:12})})]}),eG&&(0,r.jsx)("div",{className:"dz-uperr",children:eG}),eH.length>0&&(0,r.jsx)("div",{className:"dz-atts",children:eH.map((e,t)=>(0,r.jsxs)("span",{className:"dz-att",children:[e.type.startsWith("image/")&&(0,r.jsx)("img",{src:`/api/upload?path=${encodeURIComponent(e.path)}`,alt:""}),(0,r.jsx)("span",{className:"nm",children:e.name}),(0,r.jsx)("span",{className:"rm",title:el("design.composer.remove"),onClick:()=>eF(e=>e.filter((e,a)=>a!==t)),children:(0,r.jsx)(o.I,{name:"close",size:11})})]},e.path))}),(0,r.jsxs)("div",{className:"dz-input",children:[(0,r.jsx)("button",{className:"dz-clip",disabled:e7||eX,title:el("design.composer.attach"),onClick:()=>e_.current?.click(),children:(0,r.jsx)(o.I,{name:eX?"refresh":"add",size:15,className:eX?"sync-spin":""})}),(0,r.jsx)("input",{placeholder:tN?el("design.composer.changePlaceholder",{name:tN.componentName}):el("design.composer.placeholder"),value:eR,disabled:e7,onChange:e=>eD(e.target.value),onKeyDown:e=>{"Enter"===e.key&&aH()},onPaste:function(e){let t=Array.from(e.clipboardData?.items||[]).filter(e=>"file"===e.kind&&e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>!!e);t.length&&(e.preventDefault(),a$(t))}}),(0,r.jsx)("button",{className:"dz-send",disabled:e7||!eR.trim()&&!eH.length&&!tN,onClick:()=>aH(),children:(0,r.jsx)(o.I,{name:e7?"refresh":"send",size:15,className:e7?"sync-spin":""})})]}),(0,r.jsx)("input",{ref:e_,type:"file",accept:"image/*,.pdf",multiple:!0,style:{display:"none"},onChange:e=>a$(e.target.files)})]})]}):(0,r.jsxs)("div",{className:"dz-strip left",onClick:()=>eb(!0),title:el("design.chat.expand"),children:[(0,r.jsx)(o.I,{name:"chevronRight",size:16}),(0,r.jsx)(o.I,{name:"chat",size:16}),aQ&&(0,r.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:"var(--accent)"}})]}),(0,r.jsxs)("div",{className:"dz-center",children:[t.handoffPending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:"linear-gradient(90deg,rgba(224,164,78,.20),rgba(224,164,78,.03))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:"rgba(224,164,78,.22)",color:"var(--accent)"},children:(0,r.jsx)(o.I,{name:aQ?"refresh":"warn",size:17,className:aQ?"sync-spin":""})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:aQ?el("design.handoff.finishing"):el("design.handoff.interrupted")}),(0,r.jsx)("div",{className:"dz-ab-s",children:aQ?el("design.handoff.finishingSub"):el("design.handoff.interruptedSub")})]}),!aQ&&(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP,onClick:aB,children:[(0,r.jsx)(o.I,{name:eP?"refresh":"sync",size:13,className:eP?"sync-spin":""})," ",el("design.handoff.resume")]})})]}),t.handoffDone&&!t.handoffPending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:eu?"linear-gradient(90deg,rgba(224,164,78,.22),rgba(224,164,78,.03))":"linear-gradient(90deg,rgba(74,165,114,.20),rgba(74,165,114,.03))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:eu?"rgba(224,164,78,.22)":"rgba(74,165,114,.22)",color:eu?"var(--accent)":"#3fa971"},children:(0,r.jsx)(o.I,{name:eu?"edit":"goto",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:eu?"Design updated \xb7 send it to Ada":"Handed off to execution \xb7 Ada is building"}),(0,r.jsx)("div",{className:"dz-ab-s",children:eu?"You edited the design after the last hand-off — send the update so Ada applies it on top (backend wiring preserved).":"This design is the real frontend. Keep refining it with Grace — re-send to push an update (engineers&apos; backend wiring is preserved)."})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent"+(eu?" dz-pulse":""),disabled:eP,onClick:aU,children:[(0,r.jsx)(o.I,{name:eP?"refresh":eu?"goto":"sync",size:13,className:eP?"sync-spin":""})," ",eu?"Send update to execution":"Re-send update"]})})]}),ao&&!t.handoffPending&&!t.handoffDone&&(0,r.jsxs)("div",{className:"dz-approve-banner",children:[(0,r.jsx)("div",{className:"dz-ab-ic",children:(0,r.jsx)(o.I,{name:eu?"edit":"check",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:eu?"Design updated \xb7 ready to send":el("design.banner.approvedTitle")}),(0,r.jsx)("div",{className:"dz-ab-s",children:eu?"You edited the approved design — send it to execution to push the update.":el("design.banner.approvedSub")})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent"+(eu?" dz-pulse":""),disabled:eP,onClick:aU,children:[(0,r.jsx)(o.I,{name:eP?"refresh":"goto",size:13,className:eP?"sync-spin":""})," ",eu?"Send update to execution":el("design.banner.sendToExecution")]})})]}),!ao&&t.gatePending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:"linear-gradient(90deg,rgba(99,102,241,.16),rgba(99,102,241,.02))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:"rgba(99,102,241,.18)",color:"#6366f1"},children:(0,r.jsx)(o.I,{name:"bot",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:el("design.banner.adaWaitingTitle")}),(0,r.jsxs)("div",{className:"dz-ab-s",children:[el("design.banner.adaWaitingPre")," ",(0,r.jsx)("b",{children:el("design.banner.adaWaitingAction")})," ",el("design.banner.adaWaitingPost")," ",aQ?el("design.banner.gridSettingUp"):el("design.banner.gridStart")]})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn",disabled:e7,onClick:()=>{e9(!0),y().then(e=>{e.ok||e9(!1)})},children:[(0,r.jsx)(o.I,{name:e7?"refresh":"skill",size:13,className:e7?"sync-spin":""})," ",el("design.banner.setUpWithGrace")]})})]}),(0,r.jsxs)("div",{className:"dz-bar",children:[(0,r.jsx)("div",{className:"dz-modes",children:V.map(e=>(0,r.jsxs)("span",{className:"dz-mode "+(eI===e.id?"on":""),onClick:()=>eE(e.id),title:el("design.mode."+e.id),children:[(0,r.jsx)(o.I,{name:e.ic,size:13})," ",el("design.mode."+e.id)]},e.id))}),as.length>0&&(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{onClick:aP,disabled:!ay,title:el("design.toolbar.undo"),children:(0,r.jsx)(o.I,{name:"chevronLeft",size:13})}),(0,r.jsx)("button",{onClick:aA,disabled:!az,title:el("design.toolbar.redo"),children:(0,r.jsx)(o.I,{name:"chevronRight",size:13})}),(0,r.jsxs)("button",{onClick:function(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos<=0)&&(t.pos=0,aD(e,t),aW(el("design.toast.reset")))},disabled:!ay,title:el("design.toolbar.resetTitle"),children:[(0,r.jsx)(o.I,{name:"repeat",size:13})," ",el("design.toolbar.reset")]}),(0,r.jsxs)("button",{onClick:aL,disabled:eP||!al,title:el("design.toolbar.saveTitle"),children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",el("design.toolbar.save")]}),(0,r.jsxs)("button",{onClick:function(){let e=t9.current;e&&(e9(!0),h(`I manually edited the screen ${e} directly on the canvas — it now has inline-style overrides, transform:translate offsets and data-cstla-id/data-cstla-tx attributes added by the visual editor. Refactor it into CLEAN, token-driven, professional CSS per the CSS STANDARD: fold the inline styles into the <style> sheet under semantic BEM-ish classes, turn transform offsets into real layout (flex/grid/margins/gap), drop every data-cstla-* attribute, and keep the screen VISUALLY IDENTICAL. Then summarize what you cleaned up.`))},title:el("design.toolbar.cleanUpTitle"),children:[(0,r.jsx)(o.I,{name:"skill",size:13})," ",el("design.toolbar.cleanUp")]})]}),(0,r.jsx)("div",{className:"dz-spacer"}),(0,r.jsx)("div",{className:"dz-seg",children:[50,75,100].map(e=>(0,r.jsxs)("button",{className:eS===e?"on":"",onClick:()=>eC(e),title:el("design.toolbar.zoom",{pct:e}),children:[e,"%"]},e))}),(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{className:"desktop"===ey&&null==ew?"on":"",onClick:()=>{ez("desktop"),ek(null)},title:el("design.toolbar.desktop"),children:(0,r.jsx)(o.I,{name:"sidebarIcon",size:13})}),(0,r.jsx)("button",{className:"tablet"===ey&&null==ew?"on":"",onClick:()=>{ez("tablet"),ek(null)},title:el("design.toolbar.tabletTitle"),children:el("design.toolbar.tablet")}),(0,r.jsx)("button",{className:"mobile"===ey&&null==ew?"on":"",onClick:()=>{ez("mobile"),ek(null)},title:el("design.toolbar.mobileTitle"),children:el("design.toolbar.mobile")}),(0,r.jsx)("input",{className:"dz-bpw",type:"number",min:320,max:1920,placeholder:"px",value:ew??"",title:el("design.toolbar.customWidth"),onChange:e=>{let t=parseInt(e.target.value,10);ek(Number.isFinite(t)&&t>0?Math.max(320,Math.min(1920,t)):null)}})]}),(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{className:"dark"===eM.theme?"on":"",onClick:()=>eT(e=>({...e,theme:"dark"})),title:el("design.toolbar.dark"),children:(0,r.jsx)(o.I,{name:"moon",size:13})}),(0,r.jsx)("button",{className:"light"===eM.theme?"on":"",onClick:()=>eT(e=>({...e,theme:"light"})),title:el("design.toolbar.light"),children:(0,r.jsx)(o.I,{name:"sun",size:13})})]}),(0,r.jsxs)("div",{className:"dz-seg",title:el("design.mode2.tip"),children:[(0,r.jsxs)("button",{className:ej?"":"on",onClick:()=>eN(!1),children:[(0,r.jsx)(o.I,{name:"grid",size:13})," ",el("design.mode2.design")]}),(0,r.jsxs)("button",{className:ej?"on":"",onClick:()=>eN(!0),children:[(0,r.jsx)(o.I,{name:"play",size:13})," ",el("design.mode2.live")]})]}),th?(0,r.jsxs)("span",{className:"dz-save preview",title:el("design.toolbar.previewOnlyTitle"),children:[(0,r.jsx)(o.I,{name:"play",size:12})," ",el("design.toolbar.previewOnly")]}):"idle"!==tq&&(0,r.jsxs)("span",{className:"dz-save "+tq,title:"saving"===tq?el("design.toolbar.savingTitle"):el("design.toolbar.savedTitle"),children:[(0,r.jsx)(o.I,{name:"saving"===tq?"refresh":"check",size:12,className:"saving"===tq?"sync-spin":""})," ","saving"===tq?el("design.toolbar.saving"):el("design.toolbar.saved")]}),(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>eO(!0),children:[(0,r.jsx)(o.I,{name:"arrowDown",size:13})," ",el("design.toolbar.export")]}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP,onClick:aF,title:ao?"Re-approve the current design as the official reference":void 0,children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",ao?"Approve changes":el("design.toolbar.approve")]})]}),as.length>0&&(0,r.jsxs)("div",{className:"dz-pagestrip",children:[(0,r.jsx)("div",{className:"dz-ptabs",children:as.slice(0,8).map(e=>(0,r.jsxs)("span",{className:"dz-ptab "+(ad===e?"active":""),onClick:()=>{eq(e),tv(null),tj(!1)},children:[(0,r.jsx)(o.I,{name:"grid",size:13})," ",J(e)]},e))}),(0,r.jsxs)("span",{className:"dz-hint",children:[(0,r.jsx)(o.I,{name:V.find(e=>e.id===eI).ic,size:12})," ","edit"===eI?"Click to select \xb7 double-click to edit text (the design stays faithful to the mock — no move/resize/add)":"select"===eI?"Click to select an element \xb7 switch to Edit to edit its text":el("design.hint."+eI)]})]}),(0,r.jsxs)("div",{className:"dz-canvas"+(al?` has-screen ${au?"framed":"desktop"}`:""),ref:t8,children:[ej&&(0,r.jsx)(Y,{onAskGrace:e=>aH(e),asking:e7}),al?(0,r.jsxs)("div",{className:"dz-artwrap",style:{width:ag*ac,height:am*ac},children:[(0,r.jsxs)("div",{className:"dz-art","data-viewport":ey,style:{width:ag,height:am,transform:`scale(${ac})`,transformOrigin:"top left"},children:[(0,r.jsx)("iframe",{ref:t4,title:el("design.canvas.previewTitle"),sandbox:"allow-scripts",srcDoc:($=eJ??"",H=`<script data-cstla-instrument>${A}</script>`,/<\/body>/i.test($)?$.replace(/<\/body>/i,`${H}</body>`):$+H),onLoad:()=>{aE(),aM()},style:{width:"100%",height:"100%",border:"none",background:"#fff",display:"block"}}),(0,r.jsxs)("div",{className:"dz-ovl",children:[to&&"edit"===eI&&(0,r.jsxs)(r.Fragment,{children:[to.v.map((e,t)=>(0,r.jsx)("div",{className:"dz-guide v",style:{left:e-tl.scrollX}},"gv"+t)),to.h.map((e,t)=>(0,r.jsx)("div",{className:"dz-guide h",style:{top:e-tl.scrollY}},"gh"+t))]}),ts&&a5&&!tf&&"preview"!==eI&&"markup"!==eI&&"comments"!==eI&&(0,r.jsx)("div",{className:"dz-hl",style:a5,children:(0,r.jsx)("span",{className:"tag",children:ts.label})}),"preview"!==eI&&ty.map(e=>(0,r.jsx)("div",{className:"dz-selbox",style:ab(e.boundingBox)},e.cstlaId)),a1.map(e=>(0,r.jsx)("div",{className:"dz-mk",style:af(es(e))},e.id)),tC&&(0,r.jsx)("div",{className:"dz-mk",style:af({x:tC.xPct,y:tC.yPct,w:tC.wPct,h:tC.hPct})}),a0.map((e,t)=>(0,r.jsx)("div",{className:"dz-pin",style:av(e.xp,e.yp),onClick:e=>{e.stopPropagation(),eh("comments")},children:t+1},e.id))]})]}),tk&&tf&&a4&&"preview"!==eI&&ty.length<=1&&(0,r.jsxs)("div",{className:"dz-ctx",style:{left:Math.max(6,a4.left*ac),top:Math.max(4,a4.top*ac-40)},onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("button",{className:"ask",onClick:()=>{tS(tf),tj(!1),aW(el("design.toast.elementAttached"))},children:[(0,r.jsx)(o.I,{name:"bot",size:13})," ",el("design.ctx.askFront")]}),(0,r.jsx)("button",{onClick:()=>tj(!1),children:(0,r.jsx)(o.I,{name:"close",size:13})})]}),tE&&(0,r.jsxs)("div",{className:"dz-cpop",style:{left:Math.max(6,Math.min((F=av(tE.xpPct,tE.ypPct)).left*ac,Math.max(6,ag*ac-226))),top:Math.max(6,Math.min(F.top*ac,Math.max(6,am*ac-120)))},onClick:e=>e.stopPropagation(),children:[(0,r.jsx)("textarea",{rows:3,autoFocus:!0,placeholder:tE.markup?el("design.cmt.markupPlaceholder"):el("design.cmt.pointPlaceholder"),value:tT,onChange:e=>tR(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),aY())}}),tE.markup?(0,r.jsxs)("div",{className:"row",style:{flexDirection:"column",alignItems:"stretch"},children:[(0,r.jsxs)("button",{className:"dz-mini-btn accent",style:{justifyContent:"center"},onClick:()=>aY(!0),children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.cmt.markAskGrace")]}),(0,r.jsx)("button",{className:"dz-mini-btn",style:{justifyContent:"center"},onClick:()=>aY(!1),children:el("design.cmt.markRegion")}),(0,r.jsx)("button",{className:"dz-mini-btn",style:{justifyContent:"center"},onClick:()=>{tM(null),tR(""),tI(null)},children:el("design.cmt.cancel")})]}):(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>{tM(null),tR(""),tI(null)},children:el("design.cmt.cancel")}),(0,r.jsx)("button",{className:"dz-mini-btn accent",onClick:()=>aY(),children:el("design.cmt.comment")})]})]}),aQ&&(0,r.jsxs)("div",{className:"dz-build-bar",children:[(0,r.jsx)(o.I,{name:"skill",size:13})," ",el("design.canvas.working")," ",(0,r.jsx)("span",{className:"sh"})]})]}):(0,r.jsx)("div",{className:"dz-emptywrap",children:e0?(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"error",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.loadErrTitle")}),(0,r.jsx)("div",{className:"s",children:e0})]}):0===as.length&&ai.length>0?(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"doc",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.componentsTitle",{count:ai.length,plural:ai.length>1?"s":""})}),(0,r.jsx)("div",{className:"s",children:el("design.empty.componentsBody")})]}):(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"grid",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.noPrototypeTitle")}),(0,r.jsxs)("div",{className:"s",children:[el("design.empty.noPrototypePre")," ",(0,r.jsx)("span",{className:"mono",children:"design-mock/"}),". ",el("design.empty.noPrototypePost")]})]})})]})]}),ef?(0,r.jsxs)("div",{className:"dz-rail",children:[(0,r.jsxs)("div",{className:"dz-rail-tabs",children:[a2.map(([e,t])=>(0,r.jsx)("div",{className:"dz-rt "+(a6===e?"active":""),onClick:()=>eh(e),children:t},e)),(0,r.jsx)("button",{className:"dz-collapse-btn",title:el("design.rail.collapse"),onClick:()=>ev(!1),children:(0,r.jsx)(o.I,{name:"chevronRight",size:15})})]}),(0,r.jsxs)("div",{className:"dz-rail-body",children:["layers"===a6&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.layers.title")}),al?0===tg.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.layers.reading")}):tg.map(e=>(0,r.jsxs)("div",{className:"dz-layer"+(tf?.nodePath===e.path?" active":""),style:{paddingLeft:8+11*e.depth},onClick:()=>(function(e){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:selectByPath",path:e},"*")}catch{}})(e.path),title:`<${e.tag}>`,children:[(0,r.jsx)(o.I,{name:e.kids>0?"grid":"dot",size:10}),(0,r.jsx)("span",{className:"lt",children:e.label}),(0,r.jsxs)("span",{className:"lg",children:[e.tag,e.kids>0?` \xb7 ${e.kids}`:""]})]},e.path)):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.layers.openScreen")})]}),"screens"===a6&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.screens.title")}),0===as.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.screens.empty")}):as.map(e=>(0,r.jsxs)("div",{className:"dz-row "+(ad===e?"active":""),onClick:()=>{eq(e),tv(null),tj(!1)},children:[(0,r.jsx)("div",{className:"dz-r-ic",children:(0,r.jsx)(o.I,{name:"grid",size:14})}),(0,r.jsxs)("div",{style:{minWidth:0},children:[(0,r.jsx)("div",{className:"dz-r-t",children:J(e)}),(0,r.jsx)("div",{className:"dz-r-s",children:e.replace(/^design-mock\//,"")})]}),ad===e&&(0,r.jsx)("span",{className:"dz-r-meta",children:el("design.screens.active")})]},e)),(0,r.jsxs)("div",{className:"dz-addrow",onClick:()=>aH("Build a new screen for the prototype."),children:[(0,r.jsx)(o.I,{name:"add",size:13})," ",el("design.screens.newScreen")]}),ai.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:16},children:el("design.screens.components",{count:ai.length})}),(0,r.jsx)("div",{className:"dz-comp-grid",children:ai.slice(0,8).map((e,t)=>(0,r.jsxs)("div",{className:"dz-comp",children:[(0,r.jsx)("div",{style:{height:30,borderRadius:7,background:t%2?q(eM.accent,.16):"var(--bg-app)",border:"1px solid var(--border)",display:"grid",placeItems:"center",color:"var(--accent)",fontSize:12},children:"◧"}),(0,r.jsx)("div",{className:"nm",children:(e.split("/").pop()||e).replace(/\.[a-z]+$/i,"")})]},e))})]})]}),"docs"===a6&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.docs.title")}),0===tB.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.docs.empty")}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-docnav",children:tB.map(e=>(0,r.jsxs)("div",{className:"dz-doctab "+(tY===e.path?"active":""),onClick:()=>aj(e.path),title:e.label,children:[(0,r.jsx)(o.I,{name:/APPROVED/i.test(e.path)?"check":"doc",size:12}),(0,r.jsx)("span",{children:e.label})]},e.path))}),(0,r.jsx)("div",{className:"dz-docbody md",children:tZ?(0,r.jsx)(D.oz,{remarkPlugins:[P.A],children:tZ}):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)"},children:el("design.docs.reading")})})]})]}),"styles"===a6&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.styles.palette")}),(0,r.jsx)("div",{className:"dz-swatches",children:Z.map(e=>(0,r.jsx)("span",{title:e.name,className:"dz-sw "+(eM.accent===e.c?"on":""),style:{background:e.c},onClick:()=>aS({accent:e.c,accentName:e.name})},e.name))}),aC(el("design.styles.accentCustom"),"accent"),aC(el("design.styles.secondary"),"secondary"),aC(el("design.styles.surface"),"surface"),(0,r.jsxs)("details",{className:"dz-adv",children:[(0,r.jsx)("summary",{children:el("design.styles.semanticColors")}),aC(el("design.styles.success"),"success","#10b981"),aC(el("design.styles.warning"),"warning","#f59e0b"),aC(el("design.styles.danger"),"danger","#ef4444"),aC(el("design.styles.accentText"),"accentFg")]}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.typography")}),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.bodyFont")}),(0,r.jsx)("div",{className:"dz-opt",children:_.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.fontName===e.n?"on":""),onClick:()=>aS({font:e.s,fontName:e.n}),children:e.n},e.n))}),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.headingFont")}),(0,r.jsx)("div",{className:"dz-opt",children:_.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.headingFontName===e.n?"on":""),onClick:()=>aS({headingFont:e.s,headingFontName:e.n}),children:e.n},e.n))}),aI(el("design.styles.weight"),"fontWeight",300,800,100),aI(el("design.styles.lineHeight"),"lineHeight",1,2,.05),aI(el("design.styles.letterSpacing"),"letterSpacing",-1,4,.1,"px"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.textSize")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.sizeSmall"),.9],[el("design.styles.sizeDefault"),1],[el("design.styles.sizeLarge"),1.15]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.fontScale===t?"on":""),onClick:()=>aS({fontScale:t}),children:e},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.shapeDepth")}),(0,r.jsx)("div",{className:"dz-opt",children:K.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.radius===e.r?"on":""),onClick:()=>aS({radius:e.r}),children:el("design.styles.radius"+e.n)},e.n))}),aI(el("design.styles.radius"),"radius",0,32,1,"px"),aI(el("design.styles.borderWidth"),"borderWidth",0,4,1,"px"),aC(el("design.styles.borderColor"),"borderColor"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.shadow")}),(0,r.jsx)("div",{className:"dz-opt",children:["none","sm","md","lg"].map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.shadow===e?"on":""),onClick:()=>aS({shadow:e}),children:"none"===e?el("design.styles.shadowNone"):e.toUpperCase()},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.theme")}),(0,r.jsxs)("div",{className:"dz-opt",children:[(0,r.jsx)("span",{className:"dz-pill2 "+("dark"===eM.theme?"on":""),onClick:()=>aS({theme:"dark"}),children:el("design.styles.dark")}),(0,r.jsx)("span",{className:"dz-pill2 "+("light"===eM.theme?"on":""),onClick:()=>aS({theme:"light"}),children:el("design.styles.light")})]}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.spacingLayoutMotion")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.densityCompact"),8],[el("design.styles.densityCozy"),12],[el("design.styles.densityComfy"),16]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.density===t?"on":""),onClick:()=>aS({density:t}),children:e},e))}),aI(el("design.styles.density"),"density",4,28,1,"px"),aI(el("design.styles.containerWidth"),"containerWidth",880,1600,20,"px"),aI(el("design.styles.motionSpeed"),"motionMs",0,600,20,"ms"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.easing")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.easeEase"),"ease"],[el("design.styles.easeInOut"),"ease-in-out"],[el("design.styles.easeLinear"),"linear"],[el("design.styles.easeSmooth"),"cubic-bezier(.4,0,.2,1)"]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.ease===t?"on":""),onClick:()=>aS({ease:t}),children:e},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.spacingScale")}),(0,r.jsx)("div",{style:{display:"flex",gap:5,alignItems:"flex-end"},children:[.5,1,1.5,2,3,4].map(e=>{let t=Math.round(eM.density*e);return(0,r.jsxs)("div",{style:{textAlign:"center"},children:[(0,r.jsx)("div",{style:{width:20,height:Math.max(3,t),background:q(eM.accent,.5),borderRadius:3}}),(0,r.jsx)("div",{style:{fontSize:9,color:"var(--text-faint)",marginTop:3},children:t})]},e)})}),(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:16,gap:8},children:[(0,r.jsx)("span",{style:{fontSize:10.5,color:"var(--text-faint)"},children:el("design.styles.restyleNote")}),(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>aS(er),children:el("design.styles.reset")})]})]}),"comments"===a6&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.comments.title")}),0===a0.length&&(0,r.jsxs)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:[el("design.comments.emptyPre")," ",(0,r.jsx)("b",{children:el("design.comments.emptyTool")})," ",el("design.comments.emptyPost")]}),a0.map((e,t)=>(0,r.jsxs)("div",{className:"dz-cmt",children:[(0,r.jsxs)("div",{className:"h",children:[(0,r.jsx)("span",{className:"pin",children:t+1})," ",el("design.comments.comment")," ",(0,r.jsx)("span",{className:"x",onClick:()=>{M(e.id).then(()=>tV(e=>e+1))},children:(0,r.jsx)(o.I,{name:"trash",size:12})})]}),(0,r.jsx)("div",{className:"bd",children:e.body}),e.reply?(0,r.jsxs)("div",{className:"rep",children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",e.reply]}):(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>{e9(!0);let t=e.selection&&"object"==typeof e.selection&&e.selection.componentName?e.selection:void 0;h(`Apply this canvas comment on screen ${ad}${t?` (it is pinned on the ${t.componentName} element)`:""}: "${e.body}"`,void 0,t)},children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.comments.askGrace")]})]},e.id)),a1.length>0&&(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:14},children:el("design.comments.markedRegions",{count:a1.length})}),a1.map((e,t)=>{let a=e.body&&"(region marked for review)"!==e.body?e.body:"";return(0,r.jsxs)("div",{className:"dz-cmt",children:[(0,r.jsxs)("div",{className:"h",children:[(0,r.jsxs)("span",{className:"pin",children:["M",t+1]})," ",el("design.comments.region")," ",(0,r.jsx)("span",{className:"x",onClick:()=>{M(e.id).then(()=>tV(e=>e+1))},children:(0,r.jsx)(o.I,{name:"trash",size:12})})]}),a&&(0,r.jsx)("div",{className:"bd",children:a}),e.reply?(0,r.jsxs)("div",{className:"rep",children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",e.reply]}):(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>{e9(!0);let t=ei(es(e));h(`On screen ${ad}, I marked a region for review (${t}).${a?` My note: "${a}"`:" Please review and refine it."} Update the screen accordingly.`)},children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.comments.askGrace")]})]},e.id)})]}),"history"===a6&&(U=t2.current.get(ad),B=U?.pos??-1,X=U?U.labels.map((e,t)=>({lab:e,i:t})):[],(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:U&&U.stack.length>1?el("design.history.pos",{pos:B+1,total:U.stack.length}):el("design.history.title")}),al?X.length<=1?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.history.noEdits")}):(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:X.slice().reverse().map(({lab:e,i:t})=>(0,r.jsxs)("div",{onClick:()=>{let e,a;return e=t9.current,void((a=t2.current.get(e))&&!(t<0)&&!(t>=a.stack.length)&&t!==a.pos&&(a.pos=t,aD(e,a)))},style:{display:"flex",alignItems:"center",gap:8,padding:"7px 9px",borderRadius:8,cursor:"pointer",fontSize:12,background:t===B?"rgba(224,164,78,.12)":"transparent",color:t===B?"var(--accent)":"var(--text-dim)",border:"1px solid "+(t===B?"var(--accent)":"transparent")},children:[(0,r.jsx)("span",{style:{fontVariantNumeric:"tabular-nums",opacity:.6,minWidth:16,textAlign:"right"},children:0===t?"•":t}),(0,r.jsx)("span",{style:{flex:1,fontWeight:t===B?700:500},children:e||el("design.history.edited")}),t===B&&(0,r.jsx)("span",{style:{fontSize:10,fontWeight:700},children:el("design.history.current")})]},t))}):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)"},children:el("design.history.openScreen")})]})),"versions"===a6&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.versions.title")}),0===tA.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.versions.empty")}):tA.map(e=>(0,r.jsxs)("div",{className:"dz-vnode"+(tO===e.id?" active":""),onClick:()=>tW(tO===e.id?null:e.id),title:el("design.versions.revertHint"),children:[(0,r.jsxs)("div",{className:"vt",children:[e.label," ",(0,r.jsx)("span",{className:"dz-tag",children:el("design.versions.files",{count:e.files.length,plural:1===e.files.length?"":"s"})})]}),(0,r.jsx)("div",{className:"vs",children:e.note}),(0,r.jsx)("div",{className:"vtime",children:function(e,t){let a=Math.max(0,Math.round((new Date().getTime()-e)/1e3));if(a<60)return t("design.time.justNow");let r=Math.round(a/60);if(r<60)return t("design.time.minAgo",{n:r});let n=Math.round(r/60);return n<24?t("design.time.hAgo",{n:n}):t("design.time.dAgo",{n:Math.round(n/24)})}(e.createdAt,el)}),tO===e.id&&(0,r.jsxs)("div",{className:"dz-addrow",style:{marginTop:8,padding:"6px"},onClick:t=>{t.stopPropagation(),e.restorable?T(e.id).then(async t=>{if(!t.ok)return void aW(t.error||el("design.toast.restoreFailed"));let a=t9.current;tQ.current=!1,t0.current="",t2.current.delete(a),t5(e=>e+1);let r=await g(a);r.ok&&null!=r.html&&(eQ(r.html),tv(null)),aW(el("design.toast.restored",{label:e.label}))}):(e9(!0),R(e.label,e.note)),tW(null)},children:[(0,r.jsx)(o.I,{name:"refresh",size:12})," ",el("design.versions.revertTo",{label:e.label})]})]},e.id))]})]})]}):(0,r.jsxs)("div",{className:"dz-strip right",onClick:()=>ev(!0),title:el("design.rail.expand"),children:[(0,r.jsx)(o.I,{name:"chevronLeft",size:16}),(0,r.jsx)(o.I,{name:"sidebarIcon",size:16})]}),eL&&(0,r.jsx)("div",{className:"dz-modal-bg",onClick:()=>eO(!1),children:(0,r.jsxs)("div",{className:"dz-modal",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"dz-modal-h",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"arrowDown",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"t",children:el("design.export.title")}),(0,r.jsx)("div",{className:"s",children:el("design.export.sub")})]}),(0,r.jsx)("div",{className:"x",onClick:()=>eO(!1),children:(0,r.jsx)(o.I,{name:"close",size:16})})]}),(0,r.jsx)("div",{className:"dz-modal-b",children:[[el("design.export.row.screens"),String(as.length)],[el("design.export.row.comments"),String(tD.filter(e=>!en(e)).length)],[el("design.export.row.versions"),String(tA.length)],[el("design.export.row.tokens"),el("design.export.row.tokensVal")],[el("design.export.row.approvedMd"),""],[el("design.export.row.kbRag"),""],[el("design.export.row.adaNotified"),""],[el("design.export.row.planner"),""]].map(e=>(0,r.jsxs)("div",{className:"dz-dl",children:[(0,r.jsx)("span",{className:"ck",children:(0,r.jsx)(o.I,{name:"check",size:11})}),e[0],e[1]&&(0,r.jsx)("span",{className:"n",children:e[1]})]},e[0]))}),(0,r.jsxs)("div",{className:"dz-modal-f",children:[(0,r.jsx)("span",{className:"note",children:el("design.export.note")}),(0,r.jsx)("div",{className:"dz-spacer"}),(0,r.jsxs)("button",{className:"dz-mini-btn",disabled:eP,onClick:aX,children:[(0,r.jsx)(o.I,{name:"cpu",size:13})," ",el("design.export.buildProd")]}),(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>eO(!1),children:el("design.export.close")}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP||ao,onClick:()=>{eO(!1),aF()},children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",el("design.export.approveDesign")]})]})]})}),eW&&(0,r.jsx)("div",{className:"dz-flash",children:eW})]})}function ed(e){return(0,r.jsx)(eo,{grace:e.grace,context:e.context,status:e.status,tokens:e.tokens})}},6206:(e,t,a)=>{"use strict";a.d(t,{R:()=>n});var r=a(7797);let n=(0,r.createServerReference)("001c80e5c76a900238fcefc34ad7fb27d2674c43b3",r.callServer,void 0,r.findSourceMapURL,"startDevServerAction")},7654:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,9746,23)),Promise.resolve().then(a.bind(a,2505)),Promise.resolve().then(a.bind(a,8171)),Promise.resolve().then(a.bind(a,8183)),Promise.resolve().then(a.bind(a,4822)),Promise.resolve().then(a.bind(a,576)),Promise.resolve().then(a.bind(a,2454)),Promise.resolve().then(a.bind(a,9508)),Promise.resolve().then(a.bind(a,3891))}},e=>{e.O(0,[928,5452,171,8834,7218,1352,2235,7066,7358],()=>e(e.s=7654)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1387],{5206:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,9746,23)),Promise.resolve().then(n.bind(n,9394)),Promise.resolve().then(n.bind(n,8171)),Promise.resolve().then(n.bind(n,8183)),Promise.resolve().then(n.bind(n,4822)),Promise.resolve().then(n.bind(n,576)),Promise.resolve().then(n.bind(n,2454)),Promise.resolve().then(n.bind(n,9508)),Promise.resolve().then(n.bind(n,3891))},9394:(e,s,n)=>{"use strict";n.d(s,{DocEditor:()=>m});var t=n(4275),i=n(2899),a=n(8343),o=n(6054),r=n(888),l=n(7797);let c=(0,l.createServerReference)("60f77dc161e919b9940ca4de8aebe5509691b2a463",l.callServer,void 0,l.findSourceMapURL,"saveDoc");var d=n(869);function m({docId:e,path:s,initial:n}){let l=(0,d.k)(),[h,v]=(0,i.useState)(!1),[b,u]=(0,i.useState)(n),[x,j]=(0,i.useTransition)();return(0,t.jsxs)("div",{className:"card",style:{maxWidth:880},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",marginBottom:12},children:[h?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{className:"btn-accent",disabled:x,onClick:()=>j(async()=>{await c(e,b),v(!1)}),children:[(0,t.jsx)(r.I,{name:"check",size:13})," ",l(x?"common.saving":"docsedit.saveMd")]}),(0,t.jsx)("button",{className:"btn-ghost",onClick:()=>{u(n),v(!1)},children:l("common.cancel")})]}):(0,t.jsxs)("button",{className:"btn-ghost",onClick:()=>v(!0),children:[(0,t.jsx)(r.I,{name:"command",size:13})," ",l("common.edit")]}),(0,t.jsx)("span",{className:"mono",style:{marginLeft:"auto",fontSize:11,color:"var(--text-faint)"},children:s})]}),h?(0,t.jsx)("textarea",{className:"persona-ta mono",style:{minHeight:460,width:"100%"},value:b,onChange:e=>u(e.target.value)}):(0,t.jsx)("div",{className:"md",children:b.trim()?(0,t.jsx)(a.oz,{remarkPlugins:[o.A],children:b}):(0,t.jsx)("div",{className:"muted",children:l("docsedit.emptyFile")})})]})}}},e=>{e.O(0,[928,5452,171,8834,7218,2235,7066,7358],()=>e(e.s=5206)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1059],{2125:(e,s,n)=>{"use strict";n.d(s,{GenerateDocsButton:()=>l});var r=n(4275),i=n(2899),o=n(6295),t=n(888),a=n(7797);let c=(0,a.createServerReference)("00c51539098154d10f03d8884d60446dfe69a84e65",a.callServer,void 0,a.findSourceMapURL,"generateDocs");var d=n(869);function l(){let e=(0,d.k)(),[s,n]=(0,i.useTransition)(),a=(0,o.useRouter)();return(0,r.jsxs)("button",{className:"btn-accent",disabled:s,onClick:()=>n(async()=>{await c(),a.refresh()}),children:[(0,r.jsx)(t.I,{name:"doc",size:14,className:s?"sync-spin":""})," ",e(s?"docs.writing":"docs.generate")]})}},8492:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,9746,23)),Promise.resolve().then(n.bind(n,2125)),Promise.resolve().then(n.bind(n,8171)),Promise.resolve().then(n.bind(n,8183)),Promise.resolve().then(n.bind(n,4822)),Promise.resolve().then(n.bind(n,576)),Promise.resolve().then(n.bind(n,2454)),Promise.resolve().then(n.bind(n,9508)),Promise.resolve().then(n.bind(n,3891))}},e=>{e.O(0,[928,171,8834,7218,2235,7066,7358],()=>e(e.s=8492)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8191],{680:(e,s,t)=>{Promise.resolve().then(t.t.bind(t,9746,23)),Promise.resolve().then(t.bind(t,2610)),Promise.resolve().then(t.bind(t,8171)),Promise.resolve().then(t.bind(t,8183)),Promise.resolve().then(t.bind(t,4822)),Promise.resolve().then(t.bind(t,576)),Promise.resolve().then(t.bind(t,2454)),Promise.resolve().then(t.bind(t,9508)),Promise.resolve().then(t.bind(t,3891))},1260:(e,s,t)=>{"use strict";t.d(s,{R:()=>n});var i=t(4275);function n({name:e}){let s={ts:{t:"TS",c:"#3178c6"},tsx:{t:"TS",c:"#3178c6"},js:{t:"JS",c:"#f0c000"},jsx:{t:"JS",c:"#f0c000"},json:{t:"{}",c:"#cbab35"},md:{t:"M↓",c:"#7d8590"},css:{t:"#",c:"#42a5f5"}}[e.split(".").pop()??""]||{t:"\xb7",c:"#7d8590"};return(0,i.jsx)("span",{style:{fontSize:9,fontWeight:700,fontFamily:"var(--mono-font, monospace)",color:s.c,lineHeight:1,letterSpacing:"-.5px"},children:s.t})}},2610:(e,s,t)=>{"use strict";t.d(s,{GitHubFlow:()=>S});var i=t(4275),n=t(2899),a=t(6295),l=t(888),r=t(5904),o=t(1260),c=t(4375),d=t(7797);let h=(0,d.createServerReference)("0013ec24389666eb28dda0440473d485a7e94630be",d.callServer,void 0,d.findSourceMapURL,"listRepos"),m=(0,d.createServerReference)("40ffcbb5485a8db8cf708ba98396b3ba5338c4c501",d.callServer,void 0,d.findSourceMapURL,"setRepo"),g=(0,d.createServerReference)("40f9a4deec4889d00423087316075d5f2c7b5da972",d.callServer,void 0,d.findSourceMapURL,"createRepo"),u=(0,d.createServerReference)("0099ffdfa64218160bfaa3692ab850ae7b61b785d8",d.callServer,void 0,d.findSourceMapURL,"refreshGitStatus"),x=(0,d.createServerReference)("40737829fafee62da0b87434a3f449c8ed1901c877",d.callServer,void 0,d.findSourceMapURL,"connectGitHub"),b=(0,d.createServerReference)("00c2396890274a8419143a80ab10aacea55b5ad0fe",d.callServer,void 0,d.findSourceMapURL,"disconnectGitHub"),f=(0,d.createServerReference)("009807dd505497b68ddc36530b5391d72a32532157",d.callServer,void 0,d.findSourceMapURL,"draftCommitMessage"),p=(0,d.createServerReference)("4007145f34d83a250972724b439f9253bd203a94f1",d.callServer,void 0,d.findSourceMapURL,"commitPush"),v=(0,d.createServerReference)("0038d14e69a64d9413411ff0d96ec917229df8f8f6",d.callServer,void 0,d.findSourceMapURL,"scanWorkspace");var j=t(2943),y=t(869);function N({current:e}){let[s,t]=(0,n.useState)(!1),[r,o]=(0,n.useState)(null),[c,d]=(0,n.useState)(""),[u,x]=(0,n.useState)(""),[b,f]=(0,n.useState)(!0),[p,v]=(0,n.useState)(""),[j,k]=(0,n.useTransition)(),S=(0,a.useRouter)(),w=(0,y.k)(),z=(r??[]).filter(e=>!c.trim()||e.full.toLowerCase().includes(c.trim().toLowerCase()));return(0,i.jsxs)("div",{className:"card",style:{marginBottom:16},children:[(0,i.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,i.jsx)("div",{className:"detail-label",style:{margin:0,flex:1},children:w("github.repo.label")}),(0,i.jsxs)("button",{className:"link-btn",onClick:function(){t("pick"),v(""),o(null),k(async()=>{let e=await h();e.ok?o(e.repos.map(e=>({full:e.full,private:e.private}))):v(e.error??w("github.repo.listError"))})},disabled:j,children:[(0,i.jsx)(l.I,{name:"git",size:12})," ",e?w("github.repo.change"):w("common.select")]}),(0,i.jsxs)("button",{className:"link-btn",onClick:()=>{t("new"),v("")},disabled:j,children:[(0,i.jsx)(l.I,{name:"add",size:12})," ",w("github.repo.new")]})]}),(0,i.jsx)("div",{style:{fontFamily:"var(--mono-font)",fontSize:12.5,color:e?"var(--accent)":"var(--text-faint)",marginTop:4},children:e||w("github.repo.noOrigin")}),"pick"===s&&(0,i.jsxs)("div",{style:{marginTop:10},children:[(0,i.jsxs)("div",{className:"dm-search",style:{marginBottom:8},children:[(0,i.jsx)(l.I,{name:"search",size:13}),(0,i.jsx)("input",{placeholder:w("github.repo.filterPlaceholder"),value:c,onChange:e=>d(e.target.value),autoFocus:!0})]}),null===r&&(0,i.jsxs)("div",{className:"muted",style:{fontSize:12},children:[(0,i.jsx)("span",{className:"spin",children:(0,i.jsx)(l.I,{name:"refresh",size:12})})," ",w("github.repo.loading")]}),p&&(0,i.jsxs)("div",{className:"form-hint",style:{color:"var(--sx-number)"},children:[(0,i.jsx)(l.I,{name:"close",size:12})," ",p]}),(0,i.jsxs)("div",{className:"scroll",style:{maxHeight:220,overflowY:"auto"},children:[z.map(e=>(0,i.jsxs)("button",{className:"lrow",style:{width:"100%",cursor:"pointer"},disabled:j,onClick:()=>{var s;return s=e.full,void k(async()=>{let e=await m(s);e.ok?(t(!1),S.refresh()):v(e.error??"")})},children:[(0,i.jsx)(l.I,{name:"git",size:14,style:{color:"var(--text-faint)"}}),(0,i.jsx)("span",{className:"lr-main",children:(0,i.jsx)("span",{className:"lr-title",style:{fontFamily:"var(--mono-font)",fontSize:12.5},children:e.full})}),(0,i.jsx)("span",{className:"pill",style:{fontSize:10},children:e.private?w("github.repo.private"):w("github.repo.public")})]},e.full)),null!==r&&0===z.length&&(0,i.jsx)("div",{className:"muted",style:{fontSize:12,padding:8},children:w("github.repo.noRepos")})]})]}),"new"===s&&(0,i.jsxs)("div",{style:{marginTop:10},children:[(0,i.jsx)("input",{className:"form-input mono",placeholder:"new-repo-name",value:u,onChange:e=>x(e.target.value),autoFocus:!0}),(0,i.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,marginTop:8,fontSize:12.5,color:"var(--text-dim)"},children:[(0,i.jsx)("input",{type:"checkbox",checked:b,onChange:e=>f(e.target.checked)})," ",w("github.repo.privateRepo")]}),p&&(0,i.jsxs)("div",{className:"form-hint",style:{color:"var(--sx-number)"},children:[(0,i.jsx)(l.I,{name:"close",size:12})," ",p]}),(0,i.jsxs)("div",{style:{display:"flex",gap:8,marginTop:10},children:[(0,i.jsx)("button",{className:"btn-accent",onClick:function(){v(""),u.trim()&&k(async()=>{let e=await g({name:u,private:b});e.ok?(t(!1),x(""),S.refresh()):v(e.error??"")})},disabled:j||!u.trim(),children:j?w("github.repo.creating"):w("github.repo.createSetOrigin")}),(0,i.jsx)("button",{className:"btn-ghost",onClick:()=>t(!1),children:w("common.cancel")})]})]})]})}function k(){let[e,s]=(0,n.useTransition)(),t=(0,a.useRouter)(),r=(0,y.k)();return(0,i.jsxs)("button",{className:"link-btn",disabled:e,onClick:()=>s(async()=>{await u(),t.refresh()}),children:[e?(0,i.jsx)("span",{className:"spin",children:(0,i.jsx)(l.I,{name:"refresh",size:12})}):(0,i.jsx)(l.I,{name:"refresh",size:12})," ",r("github.refreshChanges")]})}function S({linked:e,repo:s,changes:t,deploys:a,assistant:d,oauthAvailable:h}){let m,g,u,w,z,[I,R]=(0,n.useState)(h?"oauth":"token"),[C,T]=(0,n.useState)(""),[M,F]=(0,n.useState)(""),[U,L]=(0,n.useState)(""),[P,$]=(0,n.useState)(!1),[H,O]=(0,n.useState)(!1),[_,B]=(0,n.useState)("idle"),[W,E]=(0,n.useState)(null),[G,J]=(0,n.useTransition)(),Y=(0,y.k)();function A(e,t=!1){O(e),B("committing"),J(async()=>{B("pushing");let i=await p({repo:s.full,branch:s.branch,message:U||"chore: sync workspace to remote",delegated:e,force:t});E(i),B("done"),i.blocked||setTimeout(()=>{B("idle"),L(""),O(!1),E(null)},3800)})}let[D,K]=(0,n.useState)(null),[q,Q]=(0,n.useState)(!0);return e?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("button",{className:"link-btn",style:{marginBottom:10},onClick:function(){J(async()=>{await b()})},disabled:G,children:[(0,i.jsx)(l.I,{name:"settings",size:12})," ",Y("github.disconnect")]}),(0,i.jsx)(N,{current:s.full}),(0,i.jsxs)("div",{className:"card",style:{marginBottom:16},children:[(0,i.jsx)("div",{className:"detail-label",children:Y("github.flow.title")}),(0,i.jsxs)("div",{className:"gh-flow",children:[(0,i.jsxs)("div",{className:"gf-node",children:[(0,i.jsx)("div",{className:"gf-t",children:Y("github.flow.workspace")}),(0,i.jsxs)("div",{className:"gf-s",children:[t.length," ",Y(1===t.length?"github.flow.change.one":"github.flow.change.other")]})]}),(0,i.jsx)("span",{className:"gf-arrow",children:(0,i.jsx)(l.I,{name:"chevronRight",size:18})}),(0,i.jsxs)("div",{className:"gf-node",children:[(0,i.jsx)("div",{className:"gf-t",children:Y("github.flow.commit")}),(0,i.jsx)("div",{className:"gf-s",children:s.branch})]}),(0,i.jsx)("span",{className:"gf-arrow",children:(0,i.jsx)(l.I,{name:"chevronRight",size:18})}),(0,i.jsxs)("div",{className:"gf-node",children:[(0,i.jsx)("div",{className:"gf-t",children:"origin"}),(0,i.jsx)("div",{className:"gf-s",children:"github.com"})]})]})]}),(0,i.jsxs)("div",{className:"card",style:{marginBottom:16},children:[(0,i.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[(0,i.jsxs)("button",{onClick:()=>Q(e=>!e),style:{flex:1,display:"flex",alignItems:"center",gap:7,background:"none",border:"none",padding:0,cursor:"pointer",textAlign:"left"},children:[(0,i.jsx)(l.I,{name:"chevronDown",size:13,style:{color:"var(--text-dim)",transform:q?"none":"rotate(-90deg)",transition:"transform .15s"}}),(0,i.jsx)("span",{className:"detail-label",style:{margin:0},children:Y("github.changes.title")}),t.length>0&&(0,i.jsx)("span",{className:"pill",style:{fontSize:10},children:t.length})]}),(0,i.jsx)(k,{})]}),q&&(0===t.length?(0,i.jsx)("div",{className:"muted",style:{fontSize:12.5,marginTop:6},children:Y("github.changes.clean")}):(0,i.jsx)("div",{className:"scroll",style:{maxHeight:340,marginTop:6,overflowY:"auto"},children:t.map(e=>(0,i.jsxs)("div",{className:"gh-stat",children:[(0,i.jsx)(o.R,{name:e.name}),(0,i.jsx)("span",{className:"gs-file",children:e.path}),(0,i.jsx)("span",{className:"gstat "+e.st,style:{fontFamily:"var(--mono-font)",fontWeight:700},children:e.st})]},e.path))}))]}),(0,i.jsxs)("div",{className:"card",children:[(0,i.jsx)("div",{className:"detail-label",children:Y("github.commit.message")}),(0,i.jsx)("textarea",{className:"persona-ta mono",rows:3,placeholder:Y("github.commit.placeholder"),value:U,onChange:e=>L(e.target.value)}),(0,i.jsxs)("button",{className:"assist-btn",onClick:function(){$(!0),J(async()=>{let e=await f();e.ok&&L(e.message),$(!1)})},disabled:P||0===t.length,style:{marginTop:8},children:[P?(0,i.jsx)("span",{className:"spin",children:(0,i.jsx)(l.I,{name:"refresh",size:13})}):(0,i.jsx)(l.I,{name:"skill",size:13}),P?Y("github.commit.drafting"):Y("github.commit.generate")]}),"idle"===_?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{style:{display:"flex",gap:8,marginTop:14},children:[(0,i.jsxs)("button",{className:"btn-accent",onClick:()=>A(!1),disabled:!U.trim()||0===t.length,children:[(0,i.jsx)(l.I,{name:"arrowUp",size:14})," ",Y("github.commit.commitPush")]}),(0,i.jsxs)("button",{className:"btn-ghost",onClick:function(){K(null),J(async()=>{let e=await v();K({findings:e.findings,scanned:e.scanned})})},disabled:0===t.length,children:[(0,i.jsx)(l.I,{name:"shield",size:13})," ",Y("github.commit.securityScan")]})]}),D&&(0,i.jsx)("div",{className:"card",style:{marginTop:10,borderColor:D.findings.length?"color-mix(in srgb, var(--sx-keyword) 45%, var(--border))":void 0},children:0===D.findings.length?(0,i.jsxs)("div",{style:{fontSize:12.5,color:"var(--sx-string)"},children:[(0,i.jsx)(l.I,{name:"check",size:13})," ",Y("github.scan.clean",{n:D.scanned})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{style:{fontSize:12.5,color:"var(--sx-keyword)",fontWeight:700,marginBottom:6},children:[(0,i.jsx)(l.I,{name:"shield",size:13})," ",Y("github.scan.risks",{n:D.findings.length})]}),D.findings.slice(0,30).map((e,s)=>(0,i.jsxs)("div",{style:{fontSize:11.5,fontFamily:"var(--mono-font)",color:"var(--text-dim)",display:"flex",gap:8},children:[(0,i.jsx)("span",{style:{color:"var(--sx-keyword)"},children:e.kind}),(0,i.jsxs)("span",{style:{flex:1},children:[e.file,e.line?":"+e.line:""]}),(0,i.jsx)("span",{style:{color:"var(--text-faint)"},children:e.preview})]},s))]})})]}):(0,i.jsxs)("div",{style:{marginTop:14},children:[(m=W?W.pushed?`${Y("github.progress.pushed",{branch:s.branch})}${W.prUrl?H?` \xb7 ${Y("github.progress.agentOpenedPr",{name:d?.name??Y("github.progress.agent")})}`:` \xb7 ${Y("github.progress.prOpened")}`:""}`:W.committed?`${Y("github.progress.committedLocal")}${W.sha?` (${W.sha})`:""}${Y("github.progress.notPushedSuffix")}`:W.nothing?Y("github.progress.nothing"):Y("github.progress.failed"):Y("github.progress.finishing"),g="done"===_&&null!=W&&!W.ok,u=[["committing",Y("github.progress.committing",{n:t.length})],["pushing",Y("github.progress.pushing",{branch:s.branch})],["done",m]],z=(w=["committing","pushing","done"]).indexOf(_),u.map(([e,s])=>{let t=w.indexOf(e),n=t<z||"done"===_&&"done"===e?"done":t===z?"on":"",a="done"===e&&g;return(0,i.jsxs)("div",{className:"gh-progress-step "+(a?"":n),children:[(0,i.jsx)("span",{className:"gp-ico",children:a?(0,i.jsx)(l.I,{name:"close",size:13}):"done"===n?(0,i.jsx)(l.I,{name:"check",size:14}):"on"===n?(0,i.jsx)("span",{className:"spin",children:(0,i.jsx)(l.I,{name:"refresh",size:13})}):(0,i.jsx)(l.I,{name:"dot",size:8})}),s]},e)})),W?.error&&(0,i.jsxs)("div",{className:"form-hint",style:{marginTop:8,color:"var(--sx-number)"},children:[(0,i.jsx)(l.I,{name:"shield",size:12})," ",W.error]}),W?.blocked&&W.secrets&&W.secrets.length>0&&(0,i.jsxs)("div",{className:"card",style:{marginTop:10,borderColor:"color-mix(in srgb, var(--sx-keyword) 45%, var(--border))"},children:[W.secrets.slice(0,30).map((e,s)=>(0,i.jsxs)("div",{style:{fontSize:11.5,fontFamily:"var(--mono-font)",color:"var(--text-dim)",display:"flex",gap:8},children:[(0,i.jsx)("span",{style:{color:"var(--sx-keyword)"},children:e.kind}),(0,i.jsxs)("span",{style:{flex:1},children:[e.file,e.line?":"+e.line:""]}),(0,i.jsx)("span",{style:{color:"var(--text-faint)"},children:e.preview})]},s)),(0,i.jsxs)("div",{style:{display:"flex",gap:8,marginTop:10},children:[(0,i.jsx)("button",{className:"btn-ghost",onClick:()=>{B("idle"),E(null)},children:Y("github.blocked.fixRetry")}),(0,i.jsx)("button",{className:"btn-accent",style:{background:"var(--sx-keyword)"},onClick:()=>{confirm(Y("github.blocked.confirm"))&&A(H,!0)},children:Y("github.blocked.commitAnyway")})]})]}),W?.blocked&&(!W.secrets||0===W.secrets.length)&&(0,i.jsx)("button",{className:"btn-ghost",style:{marginTop:8},onClick:()=>{B("idle"),E(null)},children:Y("github.blocked.ok")}),W?.prUrl&&(0,i.jsxs)("a",{className:"link-btn",href:W.prUrl,target:"_blank",rel:"noreferrer",style:{marginTop:8,display:"inline-flex"},children:[(0,i.jsx)(l.I,{name:"git",size:12})," ",Y("github.viewPr")]})]}),"idle"===_&&d&&(0,i.jsxs)("div",{className:"agent-do",children:[(0,i.jsx)(r.e,{name:d.name,color:d.color,size:30,health:d.health}),(0,i.jsxs)("div",{style:{flex:1},children:[(0,i.jsx)("div",{className:"sr-title",children:Y("github.delegate.title")}),(0,i.jsx)("div",{className:"sr-sub",children:Y("github.delegate.sub",{name:d.name})})]}),(0,i.jsxs)("button",{className:"btn-ghost",onClick:()=>{L(U||"chore: sync workspace to remote"),A(!0)},disabled:0===t.length,children:[(0,i.jsx)(l.I,{name:"bot",size:13})," ",Y("github.delegate.button")]})]})]}),a.length>0&&(0,i.jsxs)("div",{className:"card",style:{marginTop:16},children:[(0,i.jsx)("div",{className:"detail-label",children:Y("github.recentPushes")}),(0,i.jsx)("div",{className:"scroll",style:{maxHeight:260,overflowY:"auto"},children:a.map(e=>(0,i.jsxs)("div",{className:"gh-stat",children:[(0,i.jsx)(l.I,{name:"git",size:13,style:{color:"var(--text-faint)"}}),(0,i.jsx)("span",{className:"gs-file",style:{fontFamily:"var(--ui-font)"},children:e.text}),(0,i.jsx)("span",{style:{fontSize:11,color:"var(--text-faint)"},children:(0,c.f)(e.at)})]},e.id))})]})]}):(0,i.jsxs)("div",{className:"card",children:[(0,i.jsxs)("div",{className:"gh-auth-tabs",children:[(0,i.jsx)("button",{className:"seg-opt"+("oauth"===I?" on":""),onClick:()=>R("oauth"),style:{flex:"none",padding:"7px 14px"},children:Y("github.auth.githubLogin")}),(0,i.jsx)("button",{className:"seg-opt"+("token"===I?" on":""),onClick:()=>R("token"),style:{flex:"none",padding:"7px 14px"},children:Y("github.auth.personalToken")})]}),"oauth"===I?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("button",{className:"oauth-btn",disabled:!h||G,onClick:()=>h&&j.Jv.social({provider:"github",callbackURL:"/github"}),children:[(0,i.jsx)(l.I,{name:"git",size:15}),Y("github.auth.signInWithGithub")]}),(0,i.jsx)("div",{className:"form-hint",style:{marginTop:8},children:h?(0,i.jsx)(i.Fragment,{children:Y("github.auth.authorizeHint")}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(l.I,{name:"shield",size:12})," ",Y("github.auth.oauthNotConfigured")]})})]}):(0,i.jsxs)("div",{className:"form-field",children:[(0,i.jsx)("label",{className:"form-label",children:Y("github.auth.patLabel")}),(0,i.jsx)("input",{className:"form-input mono",type:"password",placeholder:"ghp_…",value:C,onChange:e=>{T(e.target.value),F("")}}),(0,i.jsxs)("div",{className:"form-hint",children:[(0,i.jsx)(l.I,{name:"shield",size:12})," ",Y("github.auth.patHint")]}),M&&(0,i.jsxs)("div",{className:"form-hint",style:{color:"var(--sx-number)"},children:[(0,i.jsx)(l.I,{name:"close",size:12})," ",M]}),(0,i.jsxs)("button",{className:"btn-accent",style:{marginTop:10},onClick:function(){C.length<7||(F(""),J(async()=>{let e=await x(C);e.ok||F(e.error??Y("github.connectError"))}))},disabled:C.length<7||G,children:[G?(0,i.jsx)("span",{className:"spin",children:(0,i.jsx)(l.I,{name:"refresh",size:13})}):(0,i.jsx)(l.I,{name:"git",size:13}),G?Y("github.auth.verifying"):Y("common.connect")]})]})]})}},2943:(e,s,t)=>{"use strict";t.d(s,{Jv:()=>l,yK:()=>a});var i=t(3571),n=t(4071);let a=(0,i.M)({baseURL:window.location.origin,plugins:[(0,n.N)()]}),{signIn:l,signUp:r,signOut:o,useSession:c,twoFactor:d}=a},4375:(e,s,t)=>{"use strict";function i(e){if(!e)return"";let s=Math.max(0,Math.floor((Date.now()-("number"==typeof e?e*(e<1e12?1e3:1):e.getTime()))/1e3));if(s<60)return"now";let t=Math.floor(s/60);if(t<60)return t+"m";let i=Math.floor(t/60);if(i<24)return i+"h";let n=Math.floor(i/24);return n<7?n+"d":Math.floor(n/7)+"w"}t.d(s,{f:()=>i})},5904:(e,s,t)=>{"use strict";t.d(s,{e:()=>n});var i=t(4275);function n({name:e,color:s,size:t=24,health:a,image:l}){let r=Math.max(6,Math.round(.3*t)),o=Math.round(.28*t),c=l?/^(data:|https?:|\/)/.test(l)?l:`/api/upload?path=${encodeURIComponent(l)}`:null;return(0,i.jsxs)("span",{style:{position:"relative",width:t,height:t,flex:`0 0 ${t}px`,display:"inline-block"},children:[c?(0,i.jsx)("img",{src:c,alt:e,width:t,height:t,style:{width:t,height:t,borderRadius:o,objectFit:"cover",display:"block"}}):(0,i.jsx)("span",{style:{width:t,height:t,borderRadius:o,background:s,color:"#fff",display:"grid",placeItems:"center",fontSize:Math.round(.42*t),fontWeight:700},children:(e[0]||"?").toUpperCase()}),a&&(0,i.jsx)("span",{style:{position:"absolute",right:-1,bottom:-1,width:r,height:r,borderRadius:"50%",background:"alive"===a?"var(--sx-string)":"stale"===a?"var(--sx-number)":"var(--text-faint)",border:"1.5px solid var(--bg-elevated)"}})]})}}},e=>{e.O(0,[928,717,171,8834,7218,2235,7066,7358],()=>e(e.s=680)),_N_E=e.O()}]);