constellai 0.3.3 → 0.3.4

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 (240) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/(app)/activity/page.js +2 -2
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/agents/[handle]/page.js +3 -3
  9. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
  10. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/(app)/code/page.js +2 -2
  12. package/.next/server/app/(app)/code/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/config/page.js +2 -2
  15. package/.next/server/app/(app)/config/page.js.nft.json +1 -1
  16. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/(app)/costs/page.js +2 -2
  18. package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
  19. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/(app)/cron/page.js +2 -2
  21. package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
  22. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(app)/dashboard/page.js +2 -2
  24. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
  25. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/(app)/design/page.js +3 -3
  27. package/.next/server/app/(app)/design/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/docs/[id]/page.js +2 -2
  30. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
  31. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/(app)/docs/page.js +2 -2
  33. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  34. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/(app)/github/page.js +2 -2
  36. package/.next/server/app/(app)/github/page.js.nft.json +1 -1
  37. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/(app)/goals/page.js +2 -2
  39. package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
  40. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/(app)/inbox/page.js +2 -2
  42. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
  43. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/(app)/knowledge/page.js +3 -3
  45. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
  46. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/(app)/models/page.js +2 -2
  48. package/.next/server/app/(app)/models/page.js.nft.json +1 -1
  49. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
  50. package/.next/server/app/(app)/notifications/page.js +2 -2
  51. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
  52. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/(app)/org/page.js +4 -4
  54. package/.next/server/app/(app)/org/page.js.nft.json +1 -1
  55. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/(app)/organizations/page.js +2 -2
  57. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
  58. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/(app)/page.js +3 -3
  60. package/.next/server/app/(app)/page.js.nft.json +1 -1
  61. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/(app)/planner/page.js +2 -2
  63. package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
  64. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/(app)/plugins/page.js +2 -2
  66. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
  67. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/(app)/pm/page.js +2 -2
  69. package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
  70. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/(app)/prepare-deploy/page.js +2 -2
  72. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
  73. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/(app)/profile/page.js +2 -2
  75. package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
  76. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/(app)/pulse/page.js +2 -2
  78. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
  79. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
  80. package/.next/server/app/(app)/reports/[id]/page.js +2 -2
  81. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
  82. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/(app)/reports/page.js +3 -3
  84. package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
  85. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
  86. package/.next/server/app/(app)/routines/page.js +2 -2
  87. package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
  88. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
  89. package/.next/server/app/(app)/search/page.js +2 -2
  90. package/.next/server/app/(app)/search/page.js.nft.json +1 -1
  91. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
  92. package/.next/server/app/(app)/security/page.js +2 -2
  93. package/.next/server/app/(app)/security/page.js.nft.json +1 -1
  94. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/(app)/skills/page.js +3 -3
  96. package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
  97. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
  98. package/.next/server/app/(app)/tasks/page.js +2 -2
  99. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
  100. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/(app)/test-dev/page.js +2 -2
  102. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
  103. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/(app)/update/page.js +3 -3
  105. package/.next/server/app/(app)/update/page.js.nft.json +1 -1
  106. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app/(auth)/login/page.js +2 -2
  108. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/(auth)/onboarding/page.js +2 -2
  110. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/_global-error.html +1 -1
  113. package/.next/server/app/_global-error.rsc +1 -1
  114. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  116. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  117. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  118. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  119. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  120. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/cron/tick/route.js +2 -2
  122. package/.next/server/app/api/sync/file/route.js +1 -1
  123. package/.next/server/app/api/telegram/poll/route.js +3 -3
  124. package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
  125. package/.next/server/app-paths-manifest.json +1 -1
  126. package/.next/server/chunks/1249.js +7 -7
  127. package/.next/server/chunks/259.js +1 -1
  128. package/.next/server/chunks/2867.js +1 -1
  129. package/.next/server/chunks/2960.js +1 -1
  130. package/.next/server/chunks/319.js +1 -0
  131. package/.next/server/chunks/3234.js +1 -1
  132. package/.next/server/chunks/4828.js +1 -0
  133. package/.next/server/chunks/4979.js +2 -2
  134. package/.next/server/chunks/5697.js +1 -0
  135. package/.next/server/chunks/6151.js +12 -0
  136. package/.next/server/chunks/6431.js +1 -1
  137. package/.next/server/chunks/{8195.js → 6798.js} +3 -3
  138. package/.next/server/chunks/{5086.js → 6903.js} +13 -13
  139. package/.next/server/chunks/7589.js +1 -1
  140. package/.next/server/chunks/7989.js +1 -1
  141. package/.next/server/chunks/8486.js +4 -0
  142. package/.next/server/chunks/8561.js +1 -1
  143. package/.next/server/chunks/8823.js +1 -1
  144. package/.next/server/chunks/9783.js +1 -1
  145. package/.next/server/middleware-build-manifest.js +1 -1
  146. package/.next/server/pages/500.html +1 -1
  147. package/.next/server/server-reference-manifest.js +1 -1
  148. package/.next/server/server-reference-manifest.json +1 -1
  149. package/.next/static/chunks/4353-12629098ed83e468.js +1 -0
  150. package/.next/static/chunks/4398-e798770ae782576f.js +1 -0
  151. package/.next/static/chunks/4428-09f7d473d9e33d59.js +1 -0
  152. package/.next/static/chunks/7457-c37382c6f4e115f8.js +4 -0
  153. package/.next/static/chunks/8370-6da6aa10d687b8ae.js +12 -0
  154. package/.next/static/chunks/9690-00ad96a74abac075.js +1 -0
  155. package/.next/static/chunks/app/(app)/activity/{page-0f51a22d4f2207b2.js → page-09bc1c776962737c.js} +1 -1
  156. package/.next/static/chunks/app/(app)/agents/[handle]/page-b11e5f8f25fb2f88.js +1 -0
  157. package/.next/static/chunks/app/(app)/code/page-ff6925db6e10e3cc.js +1 -0
  158. package/.next/static/chunks/app/(app)/config/page-4df2facd9c81adb5.js +1 -0
  159. package/.next/static/chunks/app/(app)/costs/{page-969eba498344314d.js → page-c0a07c0283731a8c.js} +1 -1
  160. package/.next/static/chunks/app/(app)/cron/{page-ab35783e4341f6b7.js → page-662e6e1a25b14025.js} +1 -1
  161. package/.next/static/chunks/app/(app)/dashboard/page-e6f62eaecc0f9926.js +1 -0
  162. package/.next/static/chunks/app/(app)/design/{page-fcee2dfd5c7e3a4b.js → page-d457cdfa525acb85.js} +3 -3
  163. package/.next/static/chunks/app/(app)/docs/[id]/{page-b3451b21d7d2127b.js → page-4a1be0c9bd6ca402.js} +1 -1
  164. package/.next/static/chunks/app/(app)/docs/page-e6db758a14f57ec8.js +1 -0
  165. package/.next/static/chunks/app/(app)/github/page-57bb812627d083a1.js +1 -0
  166. package/.next/static/chunks/app/(app)/goals/page-81e1af515f78e13b.js +1 -0
  167. package/.next/static/chunks/app/(app)/inbox/page-0baef1b01009c832.js +12 -0
  168. package/.next/static/chunks/app/(app)/knowledge/page-eb1317bf385e31ed.js +1 -0
  169. package/.next/static/chunks/app/(app)/layout-dcd4f30b53cb140f.js +1 -0
  170. package/.next/static/chunks/app/(app)/models/page-d73965ae6ca317e8.js +1 -0
  171. package/.next/static/chunks/app/(app)/notifications/page-b3ff14483cb6694e.js +12 -0
  172. package/.next/static/chunks/app/(app)/org/page-3075b218dbc681ce.js +12 -0
  173. package/.next/static/chunks/app/(app)/organizations/page-a6d35dbb21a61b7c.js +1 -0
  174. package/.next/static/chunks/app/(app)/page-c9e4fc0616a0083e.js +1 -0
  175. package/.next/static/chunks/app/(app)/planner/page-809dd3edda4ada93.js +1 -0
  176. package/.next/static/chunks/app/(app)/plugins/{page-e75d982132825b07.js → page-7e2aad1b702b5c88.js} +1 -1
  177. package/.next/static/chunks/app/(app)/pm/{page-773626398c10fdb7.js → page-709f9ac68ac98693.js} +1 -1
  178. package/.next/static/chunks/app/(app)/prepare-deploy/{page-01f767248e7fa2a7.js → page-f9609626153c2483.js} +1 -1
  179. package/.next/static/chunks/app/(app)/profile/page-6d22c7bd0adb7a52.js +1 -0
  180. package/.next/static/chunks/app/(app)/pulse/{page-1a63c4ed76db48f5.js → page-f529917828ff4884.js} +1 -1
  181. package/.next/static/chunks/app/(app)/reports/[id]/{page-ab35783e4341f6b7.js → page-662e6e1a25b14025.js} +1 -1
  182. package/.next/static/chunks/app/(app)/reports/page-5248735b18767054.js +1 -0
  183. package/.next/static/chunks/app/(app)/routines/page-cf4e597389865ae8.js +1 -0
  184. package/.next/static/chunks/app/(app)/search/{page-d30f1c44c95e14a3.js → page-4d1e07c4c43a7489.js} +1 -1
  185. package/.next/static/chunks/app/(app)/security/page-db7b8840d9cc6b72.js +1 -0
  186. package/.next/static/chunks/app/(app)/skills/page-a98da9e415efc310.js +1 -0
  187. package/.next/static/chunks/app/(app)/tasks/page-ab33402626a50c88.js +1 -0
  188. package/.next/static/chunks/app/(app)/test-dev/page-34612a4b47ec9aa2.js +1 -0
  189. package/.next/static/chunks/app/(app)/update/page-99d63495bfdd56a9.js +1 -0
  190. package/.next/static/chunks/app/(auth)/login/page-c7b372a5053512f0.js +1 -0
  191. package/.next/static/chunks/app/(auth)/onboarding/{page-0cd7cd9fa146a927.js → page-450bfc87fb942f9b.js} +1 -1
  192. package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
  193. package/.next/trace-build +1 -1
  194. package/CHANGELOG.md +32 -3
  195. package/README.md +1 -1
  196. package/README.pt-BR.md +1 -1
  197. package/bin/constella-update.mjs +44 -0
  198. package/docs/UPDATE.md +31 -6
  199. package/package.json +1 -1
  200. package/scripts/vps-install.sh +22 -0
  201. package/scripts/vps-update.sh +22 -0
  202. package/.next/server/chunks/3174.js +0 -12
  203. package/.next/server/chunks/3334.js +0 -1
  204. package/.next/server/chunks/3439.js +0 -4
  205. package/.next/server/chunks/478.js +0 -1
  206. package/.next/server/chunks/8244.js +0 -1
  207. package/.next/static/chunks/386-0f2b8d23016cf4d0.js +0 -1
  208. package/.next/static/chunks/4909-9f16a714c78ed30d.js +0 -4
  209. package/.next/static/chunks/5332-84d9a65aa5d16106.js +0 -1
  210. package/.next/static/chunks/5664-3cb5735f1b5bbde1.js +0 -1
  211. package/.next/static/chunks/8370-7ec9e9bf414f8f2d.js +0 -12
  212. package/.next/static/chunks/9690-53d5222618cbeddb.js +0 -1
  213. package/.next/static/chunks/app/(app)/agents/[handle]/page-14805dd54a1333e8.js +0 -1
  214. package/.next/static/chunks/app/(app)/code/page-7ebd6923ac440103.js +0 -1
  215. package/.next/static/chunks/app/(app)/config/page-47b5b62b73050673.js +0 -1
  216. package/.next/static/chunks/app/(app)/dashboard/page-59521ad116c60a88.js +0 -1
  217. package/.next/static/chunks/app/(app)/docs/page-3a34eec67591ce3e.js +0 -1
  218. package/.next/static/chunks/app/(app)/github/page-a0117637dc143821.js +0 -1
  219. package/.next/static/chunks/app/(app)/goals/page-d1cb2552625ccadb.js +0 -1
  220. package/.next/static/chunks/app/(app)/inbox/page-dbfc885cd61f9b9f.js +0 -12
  221. package/.next/static/chunks/app/(app)/knowledge/page-29df476a9c2f930c.js +0 -1
  222. package/.next/static/chunks/app/(app)/layout-2b6b23e82fbf0211.js +0 -1
  223. package/.next/static/chunks/app/(app)/models/page-ea54a5d167cd3cc2.js +0 -1
  224. package/.next/static/chunks/app/(app)/notifications/page-ef1ac55efadb2a1a.js +0 -12
  225. package/.next/static/chunks/app/(app)/org/page-a7c734b8d86f7641.js +0 -12
  226. package/.next/static/chunks/app/(app)/organizations/page-4bcec3010a9d9119.js +0 -1
  227. package/.next/static/chunks/app/(app)/page-54a99a54295a40be.js +0 -1
  228. package/.next/static/chunks/app/(app)/planner/page-adfd05afc6ddcbef.js +0 -1
  229. package/.next/static/chunks/app/(app)/profile/page-cb2450679785db1a.js +0 -1
  230. package/.next/static/chunks/app/(app)/reports/page-b0bcc85ad4afecf5.js +0 -1
  231. package/.next/static/chunks/app/(app)/routines/page-c0ce223d128a9010.js +0 -1
  232. package/.next/static/chunks/app/(app)/security/page-4640d72a0b360f05.js +0 -1
  233. package/.next/static/chunks/app/(app)/skills/page-87a71bd0a6b0f262.js +0 -1
  234. package/.next/static/chunks/app/(app)/tasks/page-a34a5658aff509ec.js +0 -1
  235. package/.next/static/chunks/app/(app)/test-dev/page-842f8771d36e964b.js +0 -1
  236. package/.next/static/chunks/app/(app)/update/page-64467fa6d8ed737e.js +0 -1
  237. package/.next/static/chunks/app/(auth)/login/page-82964b720ff11bab.js +0 -1
  238. package/.next/static/chunks/app/_not-found/page-489c316e4356f1b7.js +0 -1
  239. /package/.next/static/{Fx06n4huXV42eQUI-Lty0 → mOVW9EdxrQ1xPT7vDdRdK}/_buildManifest.js +0 -0
  240. /package/.next/static/{Fx06n4huXV42eQUI-Lty0 → mOVW9EdxrQ1xPT7vDdRdK}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9530],{2454:(e,s,a)=>{"use strict";a.d(s,{AgentRuntimeSettings:()=>d,EditorSettings:()=>o});var n=a(5076),i=a(8488);a(8576);var r=a(5629),c=a(7814);let l=(0,c.createServerReference)("4060e1cc42d15bfdf2a121a49052874b8729de1e33",c.callServer,void 0,c.findSourceMapURL,"setEditorSettings"),t=(0,c.createServerReference)("406a10af21bd56955cd3c10cbcd306837ff7344b24",c.callServer,void 0,c.findSourceMapURL,"setAgentRuntime");function o({editor:e}){let s=(0,r.k)(),[a,c]=(0,i.useState)({tabSize:e?.tabSize??2,formatOnSave:e?.formatOnSave??!0,wordWrap:e?.wordWrap??!0,minimap:e?.minimap??!0}),[,t]=(0,i.useTransition)();function d(e){c(s=>({...s,...e})),t(()=>l(e))}let m=(e,s)=>(0,n.jsxs)("div",{className:"set-row",children:[(0,n.jsx)("div",{className:"sr-main",children:(0,n.jsx)("div",{className:"sr-title",children:s})}),(0,n.jsx)("div",{className:"toggle"+(a[e]?" on":""),onClick:()=>d({[e]:!a[e]})})]});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"set-row",style:{paddingTop:0},children:[(0,n.jsx)("div",{className:"sr-main",children:(0,n.jsx)("div",{className:"sr-title",children:s("config.editor.tabSize")})}),(0,n.jsx)("div",{style:{display:"flex",gap:6},children:[2,4,8].map(e=>(0,n.jsx)("button",{className:"chip-sm",style:a.tabSize===e?{background:"var(--accent)",color:"var(--accent-fg)"}:void 0,onClick:()=>d({tabSize:e}),children:e},e))})]}),m("formatOnSave",s("config.editor.formatOnSave")),m("wordWrap",s("config.editor.wordWrap")),m("minimap",s("config.editor.minimap"))]})}function d({agents:e}){let s=(0,r.k)(),[a,c]=(0,i.useState)(e?.maxConcurrent??1),[l,o]=(0,i.useState)(!!e?.fileLocks),[m,v]=(0,i.useState)(e?.webResearch??!0),[,p]=(0,i.useTransition)();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"set-row",style:{paddingTop:0},children:[(0,n.jsxs)("div",{className:"sr-main",children:[(0,n.jsx)("div",{className:"sr-title",children:s("config.agents.parallel")}),(0,n.jsx)("div",{className:"sr-sub",children:s("config.agents.parallelDesc")})]}),(0,n.jsx)("div",{style:{display:"flex",gap:6},children:[1,2,3,4,5].map(e=>(0,n.jsx)("button",{className:"chip-sm",style:a===e?{background:"var(--accent)",color:"var(--accent-fg)"}:void 0,onClick:()=>{c(e),p(()=>t({maxConcurrent:e}))},children:e},e))})]}),(0,n.jsxs)("div",{className:"set-row",children:[(0,n.jsxs)("div",{className:"sr-main",children:[(0,n.jsx)("div",{className:"sr-title",children:s("config.agents.fileLock")}),(0,n.jsx)("div",{className:"sr-sub",children:s("config.agents.fileLockDesc")})]}),(0,n.jsx)("div",{className:"toggle"+(l?" on":""),onClick:()=>{let e=!l;o(e),p(()=>t({fileLocks:e}))}})]}),a>1&&!l&&(0,n.jsxs)("div",{className:"sr-sub",style:{color:"#e8a14e",paddingBottom:6},children:["⚠ ",s("config.agents.lockWarn",{n:a})]}),(0,n.jsxs)("div",{className:"set-row",children:[(0,n.jsxs)("div",{className:"sr-main",children:[(0,n.jsx)("div",{className:"sr-title",children:s("config.agents.webResearch")}),(0,n.jsx)("div",{className:"sr-sub",children:s("config.agents.webResearchDesc")})]}),(0,n.jsx)("div",{className:"toggle"+(m?" on":""),onClick:()=>{let e=!m;v(e),p(()=>t({webResearch:e}))}})]})]})}},4625:(e,s,a)=>{Promise.resolve().then(a.t.bind(a,3283,23)),Promise.resolve().then(a.bind(a,2454)),Promise.resolve().then(a.bind(a,6213)),Promise.resolve().then(a.bind(a,5786)),Promise.resolve().then(a.bind(a,8669)),Promise.resolve().then(a.bind(a,6588)),Promise.resolve().then(a.bind(a,4414)),Promise.resolve().then(a.bind(a,1344)),Promise.resolve().then(a.bind(a,4942)),Promise.resolve().then(a.bind(a,2444)),Promise.resolve().then(a.bind(a,5787))},5786:(e,s,a)=>{"use strict";a.d(s,{StackEditor:()=>m});var n=a(5076),i=a(8488),r=a(3730),c=a(7814);let l=(0,c.createServerReference)("408ebe3c75c8f47e1a33ca1ac0e850c6a92692ec67",c.callServer,void 0,c.findSourceMapURL,"setWorkspaceStack");var t=a(9562),o=a(973),d=a(8576);function m({stack:e}){let[s,a]=(0,i.useState)(()=>(0,t.T1)(e).stack),[c,v]=(0,i.useTransition)(),[p,f]=(0,i.useState)(!1),[g,h]=(0,i.useState)("");return(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(240px, 1fr))",gap:"12px 16px"},children:r.z.map(e=>{let i=e.opts.includes("None")?e.opts:[...e.opts,"None"],r=(0,o.jX)(s[e.key]).filter(e=>"None"!==e);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,n.jsxs)("span",{style:{fontSize:11.5,color:"var(--text-dim)",fontWeight:600},children:[e.label,r.length>1&&(0,n.jsxs)("span",{style:{color:"var(--text-faint)",fontWeight:400},children:[" \xb7 ",r.length]})]}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:5},children:i.map(i=>{let c=(0,t.YL)(s,e.key,i),l="None"===i?0===r.length:(0,o.Hn)(s[e.key],i);return(0,n.jsx)("button",{type:"button",disabled:!!c&&!l,onClick:()=>{var n;let r;(!c||l)&&(n=e.key,a((r=(0,t.T1)({...s,[n]:(0,o.P_)(s[n],i)})).stack),h(r.removed.map(e=>`${e.opt} was unselected automatically — ${e.reason}.`).join(" ")),f(!1))},title:c||i,style:{fontSize:12,padding:"4px 9px",borderRadius:999,cursor:c&&!l?"not-allowed":"pointer",border:"1px solid "+(l?"var(--accent)":"var(--border)"),background:l?"var(--accent)":"transparent",color:l?"#1a1206":c?"var(--text-faint)":"var(--text-dim)",opacity:c&&!l?.5:1},children:i},i)})})]},e.key)})}),g&&(0,n.jsxs)("div",{style:{fontSize:12,color:"var(--sx-number)",marginTop:10,display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)(d.I,{name:"warn",size:12})," ",g]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:12},children:[(0,n.jsx)("button",{className:"btn-accent",disabled:c,onClick:function(){v(async()=>{await l(s),f(!0)})},children:c?"Saving…":"Save stack & reload skills"}),p&&(0,n.jsxs)("span",{style:{fontSize:12,color:"var(--sx-string)",display:"inline-flex",alignItems:"center",gap:5},children:[(0,n.jsx)(d.I,{name:"check",size:12})," Saved — agents re-linked to the new stack."]})]})]})}},6213:(e,s,a)=>{"use strict";a.d(s,{ProjectSource:()=>o});var n=a(5076),i=a(8488),r=a(8576),c=a(7814);let l=(0,c.createServerReference)("00b060dc80c428722edc419184f73cd5924b2ac642",c.callServer,void 0,c.findSourceMapURL,"reanalyzeProject");var t=a(5629);function o({source:e}){let s=(0,t.k)(),[a,c]=(0,i.useTransition)(),[d,m]=(0,i.useState)(!1),v=e??{},p=v.type??"new",f="local"===p?s("config.source.local",{name:v.localPath??"—",n:v.fileCount??0}):"github"===p?s("config.source.github",{repo:v.repo??"—",n:v.fileCount??0}):s("mock"===p?"config.source.mock":"config.source.new");return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"kv",children:[(0,n.jsx)("span",{className:"k",children:s("config.source.active")}),(0,n.jsx)("span",{className:"v",children:f})]}),(0,n.jsxs)("div",{className:"kv",children:[(0,n.jsx)("span",{className:"k",children:s("config.source.dir")}),(0,n.jsx)("span",{className:"v lr-mono",style:{fontFamily:"var(--mono-font)",fontSize:11.5},children:"~/.constella/organizations/<org>/workspace"})]}),("local"===p||"github"===p||"mock"===p)&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"kv",children:[(0,n.jsx)("span",{className:"k",children:s("config.source.analysis")}),(0,n.jsx)("span",{className:"v",children:s(v.analyzed?"config.source.analyzed":"config.source.notAnalyzed")})]}),(0,n.jsxs)("button",{className:"btn-ghost",disabled:a||d,style:{marginTop:8},onClick:()=>c(async()=>{m((await l()).ok)}),children:[(0,n.jsx)("span",{className:a?"sync-spin":"",style:{display:"inline-flex"},children:(0,n.jsx)(r.I,{name:"refresh",size:13})})," ",s(d?"config.source.reanalyzeQueued":"config.source.reanalyze")]})]})]})}}},e=>{e.O(0,[9219,3219,4428,8370,9562,6646,6834,7358],()=>e(e.s=4625)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9598],{2124:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3283,23)),Promise.resolve().then(n.bind(n,4766)),Promise.resolve().then(n.bind(n,6425)),Promise.resolve().then(n.bind(n,6588)),Promise.resolve().then(n.bind(n,4414)),Promise.resolve().then(n.bind(n,4268)),Promise.resolve().then(n.bind(n,4942)),Promise.resolve().then(n.bind(n,2444)),Promise.resolve().then(n.bind(n,5787))},4766:(e,s,n)=>{"use strict";n.d(s,{CapEditor:()=>d});var t=n(5076),i=n(8488),r=n(7814);let o=(0,r.createServerReference)("4074cfc884bb517debf85601300768625df1643b11",r.callServer,void 0,r.findSourceMapURL,"setMonthlyCap");var a=n(8576),l=n(5629);function d({cap:e}){let s=(0,l.k)(),[n,r]=(0,i.useState)(e),[c,h]=(0,i.useState)(!1),[m,v]=(0,i.useTransition)();function p(){n!==e&&v(async()=>{await o(n),h(!0),setTimeout(()=>h(!1),1400)})}return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&(0,t.jsxs)("span",{className:"oauth-ok",style:{padding:"3px 8px",fontSize:11},children:[(0,t.jsx)(a.I,{name:"check",size:11})," ",s("common.saved")]}),(0,t.jsx)("span",{style:{fontSize:12,color:"var(--text-dim)"},children:s("skills.cap.label")}),(0,t.jsx)("input",{className:"form-input mono",style:{width:120},value:"$"+n,disabled:m,onChange:e=>r(Math.max(0,parseFloat(e.target.value.replace(/[^0-9.]/g,""))||0)),onBlur:p,onKeyDown:e=>{"Enter"===e.key&&p()}})]})}}},e=>{e.O(0,[9219,3219,5332,8370,6646,6834,7358],()=>e(e.s=2124)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9598],{2124:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3283,23)),Promise.resolve().then(n.bind(n,3797)),Promise.resolve().then(n.bind(n,8669)),Promise.resolve().then(n.bind(n,6588)),Promise.resolve().then(n.bind(n,4414)),Promise.resolve().then(n.bind(n,1344)),Promise.resolve().then(n.bind(n,4942)),Promise.resolve().then(n.bind(n,2444)),Promise.resolve().then(n.bind(n,5787))},3797:(e,s,n)=>{"use strict";n.d(s,{CapEditor:()=>d});var t=n(5076),i=n(8488),r=n(7814);let a=(0,r.createServerReference)("40d152d454d11dd9005aafbb5c898538e7c3ddc99d",r.callServer,void 0,r.findSourceMapURL,"setMonthlyCap");var o=n(8576),l=n(5629);function d({cap:e}){let s=(0,l.k)(),[n,r]=(0,i.useState)(e),[c,h]=(0,i.useState)(!1),[m,v]=(0,i.useTransition)();function p(){n!==e&&v(async()=>{await a(n),h(!0),setTimeout(()=>h(!1),1400)})}return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&(0,t.jsxs)("span",{className:"oauth-ok",style:{padding:"3px 8px",fontSize:11},children:[(0,t.jsx)(o.I,{name:"check",size:11})," ",s("common.saved")]}),(0,t.jsx)("span",{style:{fontSize:12,color:"var(--text-dim)"},children:s("skills.cap.label")}),(0,t.jsx)("input",{className:"form-input mono",style:{width:120},value:"$"+n,disabled:m,onChange:e=>r(Math.max(0,parseFloat(e.target.value.replace(/[^0-9.]/g,""))||0)),onBlur:p,onKeyDown:e=>{"Enter"===e.key&&p()}})]})}}},e=>{e.O(0,[9219,3219,4428,8370,6646,6834,7358],()=>e(e.s=2124)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,3719],{5403:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3283,23)),Promise.resolve().then(n.bind(n,6425)),Promise.resolve().then(n.bind(n,6588)),Promise.resolve().then(n.bind(n,4414)),Promise.resolve().then(n.bind(n,4268)),Promise.resolve().then(n.bind(n,4942)),Promise.resolve().then(n.bind(n,2444)),Promise.resolve().then(n.bind(n,5787))}},e=>{e.O(0,[9219,3219,5332,8370,6646,6834,7358],()=>e(e.s=5403)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,3719],{5403:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3283,23)),Promise.resolve().then(n.bind(n,8669)),Promise.resolve().then(n.bind(n,6588)),Promise.resolve().then(n.bind(n,4414)),Promise.resolve().then(n.bind(n,1344)),Promise.resolve().then(n.bind(n,4942)),Promise.resolve().then(n.bind(n,2444)),Promise.resolve().then(n.bind(n,5787))}},e=>{e.O(0,[9219,3219,4428,8370,6646,6834,7358],()=>e(e.s=5403)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1536],{891:(e,s,a)=>{"use strict";a.d(s,{m:()=>c});var l=a(5076);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})]})}},3728:(e,s,a)=>{"use strict";a.d(s,{m:()=>d});var l=a(5076),n=a(8488),c=a(8576),i=a(9265),t=a(5629);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))]})]})}},4552:(e,s,a)=>{"use strict";a.d(s,{e:()=>n});var l=a(5076);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)"}})]})}},4796:(e,s,a)=>{"use strict";a.d(s,{D:()=>n});var l=a(7814);let n=(0,l.createServerReference)("401b43fc7b171ab4f339d8b50f0126ae09197482ce",l.callServer,void 0,l.findSourceMapURL,"setRunMode")},7327:(e,s,a)=>{Promise.resolve().then(a.t.bind(a,3283,23)),Promise.resolve().then(a.bind(a,8018)),Promise.resolve().then(a.bind(a,8669)),Promise.resolve().then(a.bind(a,6588)),Promise.resolve().then(a.bind(a,4414)),Promise.resolve().then(a.bind(a,1344)),Promise.resolve().then(a.bind(a,4942)),Promise.resolve().then(a.bind(a,2444)),Promise.resolve().then(a.bind(a,5787))},8018:(e,s,a)=>{"use strict";a.d(s,{Dashboard:()=>P});var l=a(5076),n=a(8488),c=a(3283),i=a.n(c),t=a(8576),d=a(4552),r=a(891),o=a(3728);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(5629),j=a(7814);let b=(0,j.createServerReference)("40bac826c3bc76111ea2f78482a8e61ee6ee5ded5e",j.callServer,void 0,j.findSourceMapURL,"getDashboardSnapshot"),k=(0,j.createServerReference)("00139d4bd1ac1a2faf832437a60e31c69d5f8ffed5",j.callServer,void 0,j.findSourceMapURL,"startDevServer"),N=(0,j.createServerReference)("407deee4e54e049540080f6bdee43cdea7840fa149",j.callServer,void 0,j.findSourceMapURL,"releaseStaleLock");var f=a(4796),y=a(9217),w=a(8882),I=a(8566);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))]})]})}},8566:(e,s,a)=>{"use strict";a.d(s,{V:()=>n});var l=a(7814);let n=(0,l.createServerReference)("001b3f03a4be8dae997cef3766f261a8abe4f1f85a",l.callServer,void 0,l.findSourceMapURL,"seedDefaultBlocksAction")},8882:(e,s,a)=>{"use strict";a.d(s,{O:()=>n});var l=a(7814);let n=(0,l.createServerReference)("00cc51162e050f1938c1f15d597fdd4ebe929aa049",l.callServer,void 0,l.findSourceMapURL,"curateKbAction")},9217:(e,s,a)=>{"use strict";a.d(s,{f:()=>n});var l=a(7814);let n=(0,l.createServerReference)("00a15e709e3207ab4c46e487231119285bf1ecb00d",l.callServer,void 0,l.findSourceMapURL,"reindexKbAction")},9265:(e,s,a)=>{"use strict";a.d(s,{W:()=>t});var l=a(5076),n=a(8488);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})}}},e=>{e.O(0,[9219,3219,4428,8370,6646,6834,7358],()=>e(e.s=7327)),_N_E=e.O()}]);
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[338],{1445:(e,t,a)=>{"use strict";a.d(t,{j:()=>n});var r=a(7814);let n=(0,r.createServerReference)("004af15ff1cf035f1c0e21a27b10662bd8571441d7",r.callServer,void 0,r.findSourceMapURL,"devServerStatusAction")},4631:(e,t,a)=>{"use strict";a.d(t,{DesignClient:()=>ed});var r=a(5076),n=a(8488),s=a(9860),i=a(5629),o=a(8576),d=a(4552),l=a(5571),c=a(9947),p=a(4733),u=a(7814);let g=(0,u.createServerReference)("40af5dbd3aa35380e77900d419d87a5476ee59d61f",u.callServer,void 0,u.findSourceMapURL,"getDesignScreen"),m=(0,u.createServerReference)("40e66a004301dc99f15f2608fac3a6560de975f851",u.callServer,void 0,u.findSourceMapURL,"setTokens"),h=(0,u.createServerReference)("700f964a4b50becaacdd88e7650b66718f5cd8dc7b",u.callServer,void 0,u.findSourceMapURL,"askDesign"),x=(0,u.createServerReference)("40fb2f95350f09e70822a896e6c4d2e813adb423f9",u.callServer,void 0,u.findSourceMapURL,"listDesignComments"),b=(0,u.createServerReference)("00c5d56da7decbec8096882f7d50264b3ae26069b7",u.callServer,void 0,u.findSourceMapURL,"listDesignVersions"),f=(0,u.createServerReference)("0037eb6e1f803a7499d013ecaab6117032935d1b72",u.callServer,void 0,u.findSourceMapURL,"listDesignDocs"),v=(0,u.createServerReference)("4085d74d131ad9bf899770cb28b2a74b5e4fb3b400",u.callServer,void 0,u.findSourceMapURL,"readDesignDoc"),y=(0,u.createServerReference)("00b6085e87c60d69c98335e7ef04a5574220b4f025",u.callServer,void 0,u.findSourceMapURL,"scaffoldDesignFromBrief"),z=(0,u.createServerReference)("60022aad2416c9dfe4508966ca25588590c11049dd",u.callServer,void 0,u.findSourceMapURL,"commitDesignScreen"),w=(0,u.createServerReference)("40a365881044a266aad4ddc3f3542bdbd40ea80976",u.callServer,void 0,u.findSourceMapURL,"saveDesignCheckpoint"),k=(0,u.createServerReference)("70fa9b591b64643dc3e52f6796aa779c5130236060",u.callServer,void 0,u.findSourceMapURL,"applyDesignTextEdit"),j=(0,u.createServerReference)("40104e3f5d98ea464ee672c32c0300f24fbfb7956f",u.callServer,void 0,u.findSourceMapURL,"approveDesign"),N=(0,u.createServerReference)("0070ebdbc96d2494dec393065dc20d3e1428946b54",u.callServer,void 0,u.findSourceMapURL,"handoffToExecution"),S=(0,u.createServerReference)("003426238e2afd09e1ff683df65d7cf57f365f0962",u.callServer,void 0,u.findSourceMapURL,"resumeDesignHandoff"),C=(0,u.createServerReference)("00b0424273db45fdd1ed9819fbf3a0261297582ed7",u.callServer,void 0,u.findSourceMapURL,"buildDesignProduction"),I=(0,u.createServerReference)("70f2d351d4b0f68980846fd1cd3eb10734aaf8baa9",u.callServer,void 0,u.findSourceMapURL,"addDesignMarkup"),E=(0,u.createServerReference)("7c037277c7fba4ca0e413ee86c0199e0ee063957b3",u.callServer,void 0,u.findSourceMapURL,"addDesignComment"),M=(0,u.createServerReference)("40dcf3ab7a2818d71a2bce6c8764a1ea4a4c8f9117",u.callServer,void 0,u.findSourceMapURL,"deleteDesignComment"),T=(0,u.createServerReference)("401537863fc299cde8711d47d73c711da22420fd28",u.callServer,void 0,u.findSourceMapURL,"restoreDesignCheckpoint"),R=(0,u.createServerReference)("6099335f5d628ec80a08eea59ddc024ae4003b6cf3",u.callServer,void 0,u.findSourceMapURL,"restoreDesignVersion");var D=a(4302),P=a(5393);let A=`(function(){
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[338],{502:(e,t,a)=>{"use strict";a.d(t,{j:()=>n});var r=a(7814);let n=(0,r.createServerReference)("001f7b38a3f729f9228f00bee7e2a5304a041ae35b",r.callServer,void 0,r.findSourceMapURL,"devServerStatusAction")},1319:(e,t,a)=>{"use strict";a.d(t,{DesignClient:()=>ed});var r=a(5076),n=a(8488),s=a(9860),i=a(5629),o=a(8576),d=a(4552),l=a(8894),c=a(7799),p=a(4327),u=a(7814);let g=(0,u.createServerReference)("40ef9327df3c76aeec61e899723f3a4fce0f04e0f4",u.callServer,void 0,u.findSourceMapURL,"getDesignScreen"),m=(0,u.createServerReference)("4017a2e91aac0e44c71e7dc8bdc64b91c86af6966e",u.callServer,void 0,u.findSourceMapURL,"setTokens"),h=(0,u.createServerReference)("702318f1552859b902907168b6bbd6d46cbb1cd8bd",u.callServer,void 0,u.findSourceMapURL,"askDesign"),x=(0,u.createServerReference)("4042d732975c30e998b1b417f244d02bc240771b42",u.callServer,void 0,u.findSourceMapURL,"listDesignComments"),f=(0,u.createServerReference)("00f53bdd7c80bb26d6c234682ff09d42c9fa8d285c",u.callServer,void 0,u.findSourceMapURL,"listDesignVersions"),b=(0,u.createServerReference)("002dfc0678550fd7b554d7d8b3301ed4c835ae2a9f",u.callServer,void 0,u.findSourceMapURL,"listDesignDocs"),v=(0,u.createServerReference)("406e30e8c1f70608478aa34a2cfc9f472c06c1ade1",u.callServer,void 0,u.findSourceMapURL,"readDesignDoc"),y=(0,u.createServerReference)("009e146b7742c650ca216beeed8e617243a4a5c103",u.callServer,void 0,u.findSourceMapURL,"scaffoldDesignFromBrief"),z=(0,u.createServerReference)("60dbb220db735685b4802d9264fe095d42ffd507fa",u.callServer,void 0,u.findSourceMapURL,"commitDesignScreen"),w=(0,u.createServerReference)("400105d268e50cf405554ad50d07b6cf74ab3dfdfb",u.callServer,void 0,u.findSourceMapURL,"saveDesignCheckpoint"),k=(0,u.createServerReference)("70de449374fe32fcef6ed2f670f9dd29539a04eff1",u.callServer,void 0,u.findSourceMapURL,"applyDesignTextEdit"),j=(0,u.createServerReference)("40a2ed61c41d82e88df9f715926555d4751d7925b2",u.callServer,void 0,u.findSourceMapURL,"approveDesign"),N=(0,u.createServerReference)("00c6849ba47e6e7fea083ff67d4e2a602a90900e03",u.callServer,void 0,u.findSourceMapURL,"handoffToExecution"),S=(0,u.createServerReference)("00041d8182167f36657652fa5117a86f04ad9fdac4",u.callServer,void 0,u.findSourceMapURL,"resumeDesignHandoff"),C=(0,u.createServerReference)("0053a9e20f5c5328aa2a2502d518180bfd6eed8f2f",u.callServer,void 0,u.findSourceMapURL,"buildDesignProduction"),I=(0,u.createServerReference)("7084c40999976496a9f63bf8a44a4c05630a91605b",u.callServer,void 0,u.findSourceMapURL,"addDesignMarkup"),E=(0,u.createServerReference)("7ca088c8458079633b65380437dffa61b3a503e9d8",u.callServer,void 0,u.findSourceMapURL,"addDesignComment"),M=(0,u.createServerReference)("40205db6b6772e5190d6280f495fecc4c49bb1880c",u.callServer,void 0,u.findSourceMapURL,"deleteDesignComment"),T=(0,u.createServerReference)("4036941845402c95b0a364055242692180e15d59a1",u.callServer,void 0,u.findSourceMapURL,"restoreDesignCheckpoint"),R=(0,u.createServerReference)("602c949d6b4f90259a9dd0bf28582677f4f84cdc82",u.callServer,void 0,u.findSourceMapURL,"restoreDesignVersion");var D=a(4302),P=a(5393);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(6991),O=a(9836),W=a(8163),$=a(1445),H=a(7517),F=a(8943);let U=(0,u.createServerReference)("00be8943dab1766b904c0c16a25b9e2e79bf9afe51",u.callServer,void 0,u.findSourceMapURL,"stopLiveInspectAction"),B=(0,u.createServerReference)("003c3093236434c008d9f8a38311aa4df5671743d9",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;return(0,n.useEffect)(()=>{let e=!0;(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{});let t=setInterval(()=>{"running"!==a.status&&"error"!==a.status&&(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{})},3e3);return()=>{e=!1,clearInterval(t)}},[a.status]),(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){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(3368),O=a(7063),W=a(8163),$=a(502),H=a(2814),F=a(6974);let U=(0,u.createServerReference)("006d073b0c6542ef6eb5bdce823ce839aa00eb00ce",u.callServer,void 0,u.findSourceMapURL,"stopLiveInspectAction"),B=(0,u.createServerReference)("000b3acc60b4d2b8a70e8d2d829b9aacc71ab61f76",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"),[f,b]=(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;return(0,n.useEffect)(()=>{let e=!0;(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{});let t=setInterval(()=>{"running"!==a.status&&"error"!==a.status&&(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{})},3e3);return()=>{e=!1,clearInterval(t)}},[a.status]),(0,n.useEffect)(()=>{R?(c(e=>e||R),u(e=>e||R)):(c(""),u(""))},[R]),(0,n.useEffect)(()=>{if(!D||!p)return void b(!0);let e=!0;return(0,H.K)(p).then(t=>{e&&b(t.frameable)}).catch(()=>{}),()=>{e=!1}},[D,p,g]),(0,n.useEffect)(()=>{function e(e){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&&!f?(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,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),ao&&(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})}},5052:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,3283,23)),Promise.resolve().then(a.bind(a,4631)),Promise.resolve().then(a.bind(a,6425)),Promise.resolve().then(a.bind(a,6588)),Promise.resolve().then(a.bind(a,4414)),Promise.resolve().then(a.bind(a,4268)),Promise.resolve().then(a.bind(a,4942)),Promise.resolve().then(a.bind(a,2444)),Promise.resolve().then(a.bind(a,5787))},7517:(e,t,a)=>{"use strict";a.d(t,{K:()=>n});var r=a(7814);let n=(0,r.createServerReference)("40ee0cd18de3eed6d815d3af1060bc0ae2260d80c2",r.callServer,void 0,r.findSourceMapURL,"previewFrameableAction")},8943:(e,t,a)=>{"use strict";a.d(t,{R:()=>n});var r=a(7814);let n=(0,r.createServerReference)("0026963d7b1d7539e886a62262874716cecd5c07de",r.callServer,void 0,r.findSourceMapURL,"startDevServerAction")}},e=>{e.O(0,[9219,9690,3219,5332,8370,4909,6646,6834,7358],()=>e(e.s=5052)),_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,ef]=(0,n.useState)(!0),[eb,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),tf=(0,n.useRef)(!1),[tb,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),af=e=>({left:e.x-tl.scrollX,top:e.y-tl.scrollY,width:e.w,height:e.h}),ab=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")&&ef(!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",eb?"1":"0")}catch{}},[eb]),(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),ao&&(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:[]})),f().catch(()=>({versions:[]})),b().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;tf.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)tf.current||aR(n.payload.html);else if("canvas:history"===n.type)tf.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;tf.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??tb,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?af(ts):null,a4=tb?af(tb.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:()=>ef(!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:()=>ef(!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&&!tb&&"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:af(e.boundingBox)},e.cstlaId)),a1.map(e=>(0,r.jsx)("div",{className:"dz-mk",style:ab(es(e))},e.id)),tC&&(0,r.jsx)("div",{className:"dz-mk",style:ab({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&&tb&&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(tb),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")]})]})})]})]}),eb?(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"+(tb?.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})}},2814:(e,t,a)=>{"use strict";a.d(t,{K:()=>n});var r=a(7814);let n=(0,r.createServerReference)("40a38caeec3ba27df94e136db8976ff46f62348474",r.callServer,void 0,r.findSourceMapURL,"previewFrameableAction")},5052:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,3283,23)),Promise.resolve().then(a.bind(a,1319)),Promise.resolve().then(a.bind(a,8669)),Promise.resolve().then(a.bind(a,6588)),Promise.resolve().then(a.bind(a,4414)),Promise.resolve().then(a.bind(a,1344)),Promise.resolve().then(a.bind(a,4942)),Promise.resolve().then(a.bind(a,2444)),Promise.resolve().then(a.bind(a,5787))},6974:(e,t,a)=>{"use strict";a.d(t,{R:()=>n});var r=a(7814);let n=(0,r.createServerReference)("0052f8e2104f8633ca5df1d85c292d80b538d270cc",r.callServer,void 0,r.findSourceMapURL,"startDevServerAction")}},e=>{e.O(0,[9219,9690,3219,4428,8370,7457,6646,6834,7358],()=>e(e.s=5052)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1387],{404:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3283,23)),Promise.resolve().then(n.bind(n,6386)),Promise.resolve().then(n.bind(n,6425)),Promise.resolve().then(n.bind(n,6588)),Promise.resolve().then(n.bind(n,4414)),Promise.resolve().then(n.bind(n,4268)),Promise.resolve().then(n.bind(n,4942)),Promise.resolve().then(n.bind(n,2444)),Promise.resolve().then(n.bind(n,5787))},6386:(e,s,n)=>{"use strict";n.d(s,{DocEditor:()=>m});var t=n(5076),i=n(8488),a=n(4302),o=n(5393),r=n(8576),l=n(7814);let c=(0,l.createServerReference)("605fb9579c5e59345b326dd2f38a16e32a052fa418",l.callServer,void 0,l.findSourceMapURL,"saveDoc");var d=n(5629);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,[9219,9690,3219,5332,8370,6646,6834,7358],()=>e(e.s=404)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1387],{404:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3283,23)),Promise.resolve().then(n.bind(n,5196)),Promise.resolve().then(n.bind(n,8669)),Promise.resolve().then(n.bind(n,6588)),Promise.resolve().then(n.bind(n,4414)),Promise.resolve().then(n.bind(n,1344)),Promise.resolve().then(n.bind(n,4942)),Promise.resolve().then(n.bind(n,2444)),Promise.resolve().then(n.bind(n,5787))},5196:(e,s,n)=>{"use strict";n.d(s,{DocEditor:()=>m});var t=n(5076),i=n(8488),a=n(4302),o=n(5393),r=n(8576),c=n(7814);let l=(0,c.createServerReference)("6091058dd94cbb7f4eb9b3e8cc669195849fd68cfd",c.callServer,void 0,c.findSourceMapURL,"saveDoc");var d=n(5629);function m({docId:e,path:s,initial:n}){let c=(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 l(e,b),v(!1)}),children:[(0,t.jsx)(r.I,{name:"check",size:13})," ",c(x?"common.saving":"docsedit.saveMd")]}),(0,t.jsx)("button",{className:"btn-ghost",onClick:()=>{u(n),v(!1)},children:c("common.cancel")})]}):(0,t.jsxs)("button",{className:"btn-ghost",onClick:()=>v(!0),children:[(0,t.jsx)(r.I,{name:"command",size:13})," ",c("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:c("docsedit.emptyFile")})})]})}}},e=>{e.O(0,[9219,9690,3219,4428,8370,6646,6834,7358],()=>e(e.s=404)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1059],{3438:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3283,23)),Promise.resolve().then(n.bind(n,9991)),Promise.resolve().then(n.bind(n,8669)),Promise.resolve().then(n.bind(n,6588)),Promise.resolve().then(n.bind(n,4414)),Promise.resolve().then(n.bind(n,1344)),Promise.resolve().then(n.bind(n,4942)),Promise.resolve().then(n.bind(n,2444)),Promise.resolve().then(n.bind(n,5787))},9991:(e,s,n)=>{"use strict";n.d(s,{GenerateDocsButton:()=>l});var r=n(5076),i=n(8488),o=n(9860),t=n(8576),c=n(7814);let d=(0,c.createServerReference)("002903c3650d294cf4b5bf4e3f57cb6d5dc09de056",c.callServer,void 0,c.findSourceMapURL,"generateDocs");var a=n(5629);function l(){let e=(0,a.k)(),[s,n]=(0,i.useTransition)(),c=(0,o.useRouter)();return(0,r.jsxs)("button",{className:"btn-accent",disabled:s,onClick:()=>n(async()=>{await d(),c.refresh()}),children:[(0,r.jsx)(t.I,{name:"doc",size:14,className:s?"sync-spin":""})," ",e(s?"docs.writing":"docs.generate")]})}}},e=>{e.O(0,[9219,3219,4428,8370,6646,6834,7358],()=>e(e.s=3438)),_N_E=e.O()}]);