ima2-gen 3.12.1 → 3.12.2

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 (42) hide show
  1. package/docs/migration/runtime-test-inventory.md +9 -1
  2. package/package.json +5 -4
  3. package/ui/dist/.vite/manifest.json +37 -37
  4. package/ui/dist/assets/AgentWorkspace-CW1x4uOl.js +3 -0
  5. package/ui/dist/assets/AssetGenWorkspace-B7tTK0Sx.css +1 -0
  6. package/ui/dist/assets/AssetGenWorkspace-BQkdilsH.js +2 -0
  7. package/ui/dist/assets/AssetsWorkspace-BdptASFf.css +1 -0
  8. package/ui/dist/assets/AssetsWorkspace-CYSkmYU-.js +1 -0
  9. package/ui/dist/assets/{CardNewsWorkspace-DGOw6UH_.js → CardNewsWorkspace-nBKX5TXr.js} +2 -2
  10. package/ui/dist/assets/GenerationRequestLogPanel-CWqbfNis.js +1 -0
  11. package/ui/dist/assets/{HomeWorkspace-CuJY4Jr6.js → HomeWorkspace-CxqIGhb9.js} +1 -1
  12. package/ui/dist/assets/KeyingPanel-CtGvO6-u.js +1 -0
  13. package/ui/dist/assets/NodeCanvas-m41ECrFJ.js +7 -0
  14. package/ui/dist/assets/{PromptBuilderPanel-Dt4gO_Rb.js → PromptBuilderPanel-ChOoMAVA.js} +1 -1
  15. package/ui/dist/assets/PromptImportDialog-8hDG8MeK.js +2 -0
  16. package/ui/dist/assets/{PromptImportDiscoverySection-Bmyt_NVl.js → PromptImportDiscoverySection-D2_TAuLm.js} +1 -1
  17. package/ui/dist/assets/{PromptImportFolderSection-DGqoTx-h.js → PromptImportFolderSection-qv0qhTwq.js} +1 -1
  18. package/ui/dist/assets/PromptLibraryPanel-BPOD61FZ.js +2 -0
  19. package/ui/dist/assets/SettingsWorkspace-BKgXN2l9.js +1 -0
  20. package/ui/dist/assets/SpriteRecipeWorkspace-D8gHgnt8.js +1 -0
  21. package/ui/dist/assets/index-Bzt4YWub.js +5 -0
  22. package/ui/dist/assets/index-DB9EfKr6.css +1 -0
  23. package/ui/dist/assets/index-DTEhasVd.js +30 -0
  24. package/ui/dist/assets/{pptxgen.es-Cza43xx3.js → pptxgen.es-BEVsR2-i.js} +1 -1
  25. package/ui/dist/assets/useAgentDialogFocus-Dyj_bA5Q.js +1 -0
  26. package/ui/dist/index.html +2 -2
  27. package/ui/dist/assets/AgentWorkspace-CKAWZD7U.js +0 -3
  28. package/ui/dist/assets/AssetGenWorkspace-Dkr80l12.css +0 -1
  29. package/ui/dist/assets/AssetGenWorkspace-wsNksO-Q.js +0 -2
  30. package/ui/dist/assets/AssetsWorkspace-Bgk5sj1a.js +0 -1
  31. package/ui/dist/assets/AssetsWorkspace-BkUjPPKU.css +0 -1
  32. package/ui/dist/assets/GenerationRequestLogPanel-BGatd8qE.js +0 -1
  33. package/ui/dist/assets/KeyingPanel-DYJN_oNF.js +0 -1
  34. package/ui/dist/assets/NodeCanvas-fil6cXN8.js +0 -7
  35. package/ui/dist/assets/PromptImportDialog-uyJdrdTs.js +0 -2
  36. package/ui/dist/assets/PromptLibraryPanel-BIi5_Rvq.js +0 -2
  37. package/ui/dist/assets/SettingsWorkspace-CVying69.js +0 -1
  38. package/ui/dist/assets/SpriteRecipeWorkspace-ztdiDwSf.js +0 -1
  39. package/ui/dist/assets/index-BPKt0DUF.css +0 -1
  40. package/ui/dist/assets/index-CumGbxai.js +0 -5
  41. package/ui/dist/assets/index-TU0_IXQH.js +0 -30
  42. package/ui/dist/assets/useAgentDialogFocus-D741d8_6.js +0 -1
@@ -4,7 +4,7 @@ Generated by `npm run test:inventory` (script: `scripts/classify-tests.mjs`).
4
4
 
5
5
  _Tests considered "runtime-importing" if they import from `../lib/`, `../routes/`, `../bin/`, `../server`, or `../config`._
6
6
 
7
- Total: 399 (runtime: 188, contract: 211)
7
+ Total: 407 (runtime: 188, contract: 219)
8
8
 
9
9
  ## Runtime-importing tests
10
10
  - `tests/agent-mode-auto-planner-contract.test.ts`
@@ -199,10 +199,13 @@ Total: 399 (runtime: 188, contract: 211)
199
199
  ## Contract-only tests
200
200
  - `tests/a11y-modal-contract.test.ts`
201
201
  - `tests/a11y-touch-target-contract.test.ts`
202
+ - `tests/action-pin-contract.test.ts`
202
203
  - `tests/agent-mode-frontend-contract.test.js`
203
204
  - `tests/agent-mode-layout-contract.test.js`
204
205
  - `tests/agent-mode-right-sidebar-contract.test.js`
205
206
  - `tests/agent-mode-run-progress-contract.test.ts`
207
+ - `tests/agent-mode-streaming-a11y-contract.test.js`
208
+ - `tests/agent-mode-tool-call-rendering-contract.test.js`
206
209
  - `tests/agent-mode-tool-folding-contract.test.js`
207
210
  - `tests/api-docs-contract.test.js`
208
211
  - `tests/app-weight-splitting-contract.test.js`
@@ -396,8 +399,13 @@ Total: 399 (runtime: 188, contract: 211)
396
399
  - `tests/toast-stack-contract.test.js`
397
400
  - `tests/tools-cli-contract.test.ts`
398
401
  - `tests/transparent-background-ui-contract.test.js`
402
+ - `tests/ui-color-token-contract.test.ts`
399
403
  - `tests/ui-error-code-contract.test.js`
400
404
  - `tests/ui-glyph-policy.test.ts`
405
+ - `tests/ui-gradient-manifest-contract.test.ts`
406
+ - `tests/ui-radius-scale-contract.test.ts`
407
+ - `tests/ui-touch-target-contract.test.ts`
408
+ - `tests/ui-typography-rules-contract.test.ts`
401
409
  - `tests/video-continuity-ui-contract.test.js`
402
410
  - `tests/video-defaults-persistence-contract.test.js`
403
411
  - `tests/video-extend-ui-contract.test.js`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ima2-gen",
3
- "version": "3.12.1",
3
+ "version": "3.12.2",
4
4
  "packageManager": "npm@11.18.0",
5
5
  "description": "Local-first visual generation runtime and studio for people and coding agents, with reproducible image and video workflows across multiple providers.",
6
6
  "type": "module",
@@ -89,7 +89,7 @@
89
89
  },
90
90
  "dependencies": {
91
91
  "@modelcontextprotocol/sdk": "1.30.0",
92
- "@openai/codex": "0.147.0",
92
+ "@openai/codex": "0.149.1",
93
93
  "better-sqlite3": "^13.0.3",
94
94
  "dotenv": "^17.4.2",
95
95
  "express": "^5.1.0",
@@ -117,7 +117,8 @@
117
117
  "@types/express": "^5.0.6",
118
118
  "@types/node": "^22.20.1",
119
119
  "tsx": "^4.23.12",
120
- "typescript": "^5.9.3"
120
+ "typescript": "^5.9.3",
121
+ "yaml": "2.9.0"
121
122
  },
122
- "gitHead": "ae45711d42383755697b66ff0b4a7e49beab8076"
123
+ "gitHead": "7f7a581901cc4e91b6387e1dbc4e757d4b0f700f"
123
124
  }
@@ -1,29 +1,29 @@
1
1
  {
2
- "_AssetGenWorkspace-Dkr80l12.css": {
3
- "file": "assets/AssetGenWorkspace-Dkr80l12.css",
4
- "src": "_AssetGenWorkspace-Dkr80l12.css"
2
+ "_AssetGenWorkspace-B7tTK0Sx.css": {
3
+ "file": "assets/AssetGenWorkspace-B7tTK0Sx.css",
4
+ "src": "_AssetGenWorkspace-B7tTK0Sx.css"
5
5
  },
6
- "_AssetGenWorkspace-wsNksO-Q.js": {
7
- "file": "assets/AssetGenWorkspace-wsNksO-Q.js",
6
+ "_AssetGenWorkspace-BQkdilsH.js": {
7
+ "file": "assets/AssetGenWorkspace-BQkdilsH.js",
8
8
  "name": "AssetGenWorkspace",
9
9
  "isDynamicEntry": true,
10
10
  "imports": [
11
11
  "index.html",
12
- "_KeyingPanel-DYJN_oNF.js"
12
+ "_KeyingPanel-CtGvO6-u.js"
13
13
  ],
14
14
  "dynamicImports": [
15
15
  "src/components/assetgen/SpriteRecipeWorkspace.tsx"
16
16
  ],
17
17
  "css": [
18
- "assets/AssetGenWorkspace-Dkr80l12.css"
18
+ "assets/AssetGenWorkspace-B7tTK0Sx.css"
19
19
  ]
20
20
  },
21
- "_KeyingPanel-DYJN_oNF.js": {
22
- "file": "assets/KeyingPanel-DYJN_oNF.js",
21
+ "_KeyingPanel-CtGvO6-u.js": {
22
+ "file": "assets/KeyingPanel-CtGvO6-u.js",
23
23
  "name": "KeyingPanel",
24
24
  "imports": [
25
25
  "index.html",
26
- "_useAgentDialogFocus-D741d8_6.js"
26
+ "_useAgentDialogFocus-Dyj_bA5Q.js"
27
27
  ]
28
28
  },
29
29
  "__vite-browser-external": {
@@ -32,15 +32,15 @@
32
32
  "src": "__vite-browser-external",
33
33
  "isDynamicEntry": true
34
34
  },
35
- "_useAgentDialogFocus-D741d8_6.js": {
36
- "file": "assets/useAgentDialogFocus-D741d8_6.js",
35
+ "_useAgentDialogFocus-Dyj_bA5Q.js": {
36
+ "file": "assets/useAgentDialogFocus-Dyj_bA5Q.js",
37
37
  "name": "useAgentDialogFocus",
38
38
  "imports": [
39
39
  "index.html"
40
40
  ]
41
41
  },
42
42
  "index.html": {
43
- "file": "assets/index-TU0_IXQH.js",
43
+ "file": "assets/index-DTEhasVd.js",
44
44
  "name": "index",
45
45
  "src": "index.html",
46
46
  "isEntry": true,
@@ -55,16 +55,16 @@
55
55
  "src/components/card-news/CardNewsWorkspace.tsx",
56
56
  "src/components/agent/AgentWorkspace.tsx",
57
57
  "src/components/assets/AssetsWorkspace.tsx",
58
- "_AssetGenWorkspace-wsNksO-Q.js",
58
+ "_AssetGenWorkspace-BQkdilsH.js",
59
59
  "src/components/home/HomeWorkspace.tsx",
60
60
  "src/components/PromptLibraryPanel.tsx"
61
61
  ],
62
62
  "css": [
63
- "assets/index-BPKt0DUF.css"
63
+ "assets/index-DB9EfKr6.css"
64
64
  ]
65
65
  },
66
66
  "node_modules/pptxgenjs/dist/pptxgen.es.js": {
67
- "file": "assets/pptxgen.es-Cza43xx3.js",
67
+ "file": "assets/pptxgen.es-BEVsR2-i.js",
68
68
  "name": "pptxgen.es",
69
69
  "src": "node_modules/pptxgenjs/dist/pptxgen.es.js",
70
70
  "isDynamicEntry": true,
@@ -78,7 +78,7 @@
78
78
  ]
79
79
  },
80
80
  "src/components/GenerationRequestLogPanel.tsx": {
81
- "file": "assets/GenerationRequestLogPanel-BGatd8qE.js",
81
+ "file": "assets/GenerationRequestLogPanel-CWqbfNis.js",
82
82
  "name": "GenerationRequestLogPanel",
83
83
  "src": "src/components/GenerationRequestLogPanel.tsx",
84
84
  "isDynamicEntry": true,
@@ -87,7 +87,7 @@
87
87
  ]
88
88
  },
89
89
  "src/components/NodeCanvas.tsx": {
90
- "file": "assets/NodeCanvas-fil6cXN8.js",
90
+ "file": "assets/NodeCanvas-m41ECrFJ.js",
91
91
  "name": "NodeCanvas",
92
92
  "src": "src/components/NodeCanvas.tsx",
93
93
  "isDynamicEntry": true,
@@ -99,7 +99,7 @@
99
99
  ]
100
100
  },
101
101
  "src/components/PromptImportDialog.tsx": {
102
- "file": "assets/PromptImportDialog-uyJdrdTs.js",
102
+ "file": "assets/PromptImportDialog-8hDG8MeK.js",
103
103
  "name": "PromptImportDialog",
104
104
  "src": "src/components/PromptImportDialog.tsx",
105
105
  "isDynamicEntry": true,
@@ -112,7 +112,7 @@
112
112
  ]
113
113
  },
114
114
  "src/components/PromptImportDiscoverySection.tsx": {
115
- "file": "assets/PromptImportDiscoverySection-Bmyt_NVl.js",
115
+ "file": "assets/PromptImportDiscoverySection-D2_TAuLm.js",
116
116
  "name": "PromptImportDiscoverySection",
117
117
  "src": "src/components/PromptImportDiscoverySection.tsx",
118
118
  "isDynamicEntry": true,
@@ -121,7 +121,7 @@
121
121
  ]
122
122
  },
123
123
  "src/components/PromptImportFolderSection.tsx": {
124
- "file": "assets/PromptImportFolderSection-DGqoTx-h.js",
124
+ "file": "assets/PromptImportFolderSection-qv0qhTwq.js",
125
125
  "name": "PromptImportFolderSection",
126
126
  "src": "src/components/PromptImportFolderSection.tsx",
127
127
  "isDynamicEntry": true,
@@ -130,7 +130,7 @@
130
130
  ]
131
131
  },
132
132
  "src/components/PromptLibraryPanel.tsx": {
133
- "file": "assets/PromptLibraryPanel-BIi5_Rvq.js",
133
+ "file": "assets/PromptLibraryPanel-BPOD61FZ.js",
134
134
  "name": "PromptLibraryPanel",
135
135
  "src": "src/components/PromptLibraryPanel.tsx",
136
136
  "isDynamicEntry": true,
@@ -142,7 +142,7 @@
142
142
  ]
143
143
  },
144
144
  "src/components/SettingsWorkspace.tsx": {
145
- "file": "assets/SettingsWorkspace-CVying69.js",
145
+ "file": "assets/SettingsWorkspace-BKgXN2l9.js",
146
146
  "name": "SettingsWorkspace",
147
147
  "src": "src/components/SettingsWorkspace.tsx",
148
148
  "isDynamicEntry": true,
@@ -151,43 +151,43 @@
151
151
  ]
152
152
  },
153
153
  "src/components/agent/AgentWorkspace.tsx": {
154
- "file": "assets/AgentWorkspace-CKAWZD7U.js",
154
+ "file": "assets/AgentWorkspace-CW1x4uOl.js",
155
155
  "name": "AgentWorkspace",
156
156
  "src": "src/components/agent/AgentWorkspace.tsx",
157
157
  "isDynamicEntry": true,
158
158
  "imports": [
159
159
  "index.html",
160
- "_useAgentDialogFocus-D741d8_6.js"
160
+ "_useAgentDialogFocus-Dyj_bA5Q.js"
161
161
  ]
162
162
  },
163
163
  "src/components/assetgen/SpriteRecipeWorkspace.tsx": {
164
- "file": "assets/SpriteRecipeWorkspace-ztdiDwSf.js",
164
+ "file": "assets/SpriteRecipeWorkspace-D8gHgnt8.js",
165
165
  "name": "SpriteRecipeWorkspace",
166
166
  "src": "src/components/assetgen/SpriteRecipeWorkspace.tsx",
167
167
  "isDynamicEntry": true,
168
168
  "imports": [
169
169
  "index.html",
170
- "_AssetGenWorkspace-wsNksO-Q.js",
171
- "_KeyingPanel-DYJN_oNF.js",
172
- "_useAgentDialogFocus-D741d8_6.js"
170
+ "_AssetGenWorkspace-BQkdilsH.js",
171
+ "_KeyingPanel-CtGvO6-u.js",
172
+ "_useAgentDialogFocus-Dyj_bA5Q.js"
173
173
  ]
174
174
  },
175
175
  "src/components/assets/AssetsWorkspace.tsx": {
176
- "file": "assets/AssetsWorkspace-Bgk5sj1a.js",
176
+ "file": "assets/AssetsWorkspace-CYSkmYU-.js",
177
177
  "name": "AssetsWorkspace",
178
178
  "src": "src/components/assets/AssetsWorkspace.tsx",
179
179
  "isDynamicEntry": true,
180
180
  "imports": [
181
181
  "index.html",
182
- "_KeyingPanel-DYJN_oNF.js",
183
- "_useAgentDialogFocus-D741d8_6.js"
182
+ "_KeyingPanel-CtGvO6-u.js",
183
+ "_useAgentDialogFocus-Dyj_bA5Q.js"
184
184
  ],
185
185
  "css": [
186
- "assets/AssetsWorkspace-BkUjPPKU.css"
186
+ "assets/AssetsWorkspace-BdptASFf.css"
187
187
  ]
188
188
  },
189
189
  "src/components/canvas-mode/index.ts": {
190
- "file": "assets/index-CumGbxai.js",
190
+ "file": "assets/index-Bzt4YWub.js",
191
191
  "name": "index",
192
192
  "src": "src/components/canvas-mode/index.ts",
193
193
  "isDynamicEntry": true,
@@ -199,7 +199,7 @@
199
199
  ]
200
200
  },
201
201
  "src/components/card-news/CardNewsWorkspace.tsx": {
202
- "file": "assets/CardNewsWorkspace-DGOw6UH_.js",
202
+ "file": "assets/CardNewsWorkspace-nBKX5TXr.js",
203
203
  "name": "CardNewsWorkspace",
204
204
  "src": "src/components/card-news/CardNewsWorkspace.tsx",
205
205
  "isDynamicEntry": true,
@@ -208,7 +208,7 @@
208
208
  ]
209
209
  },
210
210
  "src/components/home/HomeWorkspace.tsx": {
211
- "file": "assets/HomeWorkspace-CuJY4Jr6.js",
211
+ "file": "assets/HomeWorkspace-CxqIGhb9.js",
212
212
  "name": "HomeWorkspace",
213
213
  "src": "src/components/home/HomeWorkspace.tsx",
214
214
  "isDynamicEntry": true,
@@ -217,7 +217,7 @@
217
217
  ]
218
218
  },
219
219
  "src/components/prompt-builder/PromptBuilderPanel.tsx": {
220
- "file": "assets/PromptBuilderPanel-Dt4gO_Rb.js",
220
+ "file": "assets/PromptBuilderPanel-ChOoMAVA.js",
221
221
  "name": "PromptBuilderPanel",
222
222
  "src": "src/components/prompt-builder/PromptBuilderPanel.tsx",
223
223
  "isDynamicEntry": true,
@@ -0,0 +1,3 @@
1
+ import{$ as Fe,a as m,j as t,u as x,i as we,B as ye,a0 as Nt,b as E}from"./index-DTEhasVd.js";import{u as de}from"./useAgentDialogFocus-Dyj_bA5Q.js";async function B(e,n){const a=await fetch(e,n);if(!a.ok){const s=await a.json().catch(()=>({})),r=s.error,l=typeof r=="string"?r:r?.message??`Request failed: ${a.status}`,o=new Error(l);throw o.status=a.status,o.code=typeof r=="object"?r?.code:s.code,o}return await a.json()}function Ct(e){return e.filename?`/generated/${e.filename}`:typeof e.url=="string"&&e.url?e.url:typeof e.thumb=="string"&&e.thumb?e.thumb:null}function Ge(e){const n=Ct(e);if(!n)return null;const a=e.filename??e.canvasEditableFilename??"current-image.png";return{id:`current-${a}`,filename:a,url:n,thumbUrl:e.thumb??n,prompt:e.prompt??e.userPrompt??null,revisedPrompt:e.revisedPrompt??null,createdAt:e.createdAt??Date.now()}}async function Re(e){const n=e?`?selectedSessionId=${encodeURIComponent(e)}`:"";return B(`/api/agent/sessions${n}`)}async function $e(e){const n=e.currentImage?Ge(e.currentImage):null;return B("/api/agent/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:e.title,currentImage:n,webSearchEnabled:e.webSearchEnabled??!0})})}async function ce(e,n){return B(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}async function kt(e){return B(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:"DELETE"})}async function It(e,n,a){return B(`/api/agent/sessions/${encodeURIComponent(e)}/queue`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:n,options:a})})}async function At(e){return B(`/api/agent/queue/${encodeURIComponent(e)}/cancel`,{method:"POST"})}async function Lt(e){return B(`/api/agent/queue/${encodeURIComponent(e)}/retry`,{method:"POST"})}const _e=Fe,Tt=Fe,Mt={provider:"oauth",model:"gpt-5.6-luna",quality:"medium",size:"1024x1024",format:"png",moderation:"low",reasoningEffort:"none",webSearchEnabled:!0,generationStrategy:"auto",variants:1,maxAutoVariants:_e,parallelism:2};function Pe(e){return{...Mt,...e??{}}}function De(e){const{width:n,height:a}=e;return n>=1280?"desktop-three-pane":a<560&&n<1280?n>=768?"tablet-stacked":"mobile-chat-image-sheet":n>=960&&a>=560?"desktop-rail":n>=768&&a>=700?"tablet-stacked":"mobile-chat-image-sheet"}function Et(){return typeof window>"u"?1440:window.innerWidth}function Be(){return typeof window>"u"?900:window.innerHeight}function qt(){if(typeof window>"u"||typeof document>"u")return 1440;const e=document.querySelector('.app[data-ui-mode="agent"] .sidebar');if(!e)return window.innerWidth;const n=window.getComputedStyle(e);if(n.display==="none"||n.visibility==="hidden")return window.innerWidth;const a=e.getBoundingClientRect().width;return Math.max(0,window.innerWidth-a)}function Rt(){const[e,n]=m.useState(()=>De({width:Et(),height:Be()}));return m.useEffect(()=>{const a=()=>n(De({width:qt(),height:Be()}));return a(),window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[]),e}function C({size:e=16,children:n}){return t.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:n})}function Ue(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M12 5v14"}),t.jsx("path",{d:"M5 12h14"})]})}function $t(e){return t.jsxs(C,{...e,children:[t.jsx("circle",{cx:"11",cy:"11",r:"7"}),t.jsx("path",{d:"M21 21l-4.3-4.3"})]})}function O(e){return t.jsxs(C,{...e,children:[t.jsx("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),t.jsx("circle",{cx:"8",cy:"10",r:"1.5"}),t.jsx("path",{d:"M21 16l-5-5L5 19"})]})}function ge(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M18 6L6 18"}),t.jsx("path",{d:"M6 6l12 12"})]})}function Pt(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M22 2L11 13"}),t.jsx("path",{d:"M22 2l-7 20-4-9-9-4 20-7z"})]})}function Dt(e){return t.jsx(C,{...e,children:t.jsx("path",{d:"M21.4 11.1l-9.2 9.1a6 6 0 0 1-8.5-8.5l9.2-9.2a4 4 0 0 1 5.7 5.7l-9.2 9.2a2 2 0 0 1-2.8-2.8l8.5-8.5"})})}function Bt(e){return t.jsxs(C,{...e,children:[t.jsx("circle",{cx:"12",cy:"12",r:"10"}),t.jsx("path",{d:"M2 12h20"}),t.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 0 20"}),t.jsx("path",{d:"M12 2a15.3 15.3 0 0 0 0 20"})]})}function He(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M4 6h16"}),t.jsx("path",{d:"M4 12h16"}),t.jsx("path",{d:"M4 18h16"})]})}function Ot(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M19 12H5"}),t.jsx("path",{d:"M12 19l-7-7 7-7"})]})}function zt(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M8 6h13"}),t.jsx("path",{d:"M8 12h13"}),t.jsx("path",{d:"M8 18h13"}),t.jsx("circle",{cx:"3",cy:"6",r:"1"}),t.jsx("circle",{cx:"3",cy:"12",r:"1"}),t.jsx("circle",{cx:"3",cy:"18",r:"1"})]})}function Wt(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M3 6h18"}),t.jsx("path",{d:"M8 6V4h8v2"}),t.jsx("path",{d:"M19 6l-1 14H6L5 6"})]})}function Kt(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M12 20h9"}),t.jsx("path",{d:"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z"})]})}function Ve(e){return t.jsx(C,{...e,children:t.jsx("path",{d:"M6 9l6 6 6-6"})})}function Ne(e){return t.jsx(C,{...e,children:t.jsx("path",{d:"M9 6l6 6-6 6"})})}function Qt(e){return t.jsxs(C,{...e,children:[t.jsx("path",{d:"M4 8h16"}),t.jsx("circle",{cx:"9",cy:"8",r:"2.5"}),t.jsx("path",{d:"M4 16h16"}),t.jsx("circle",{cx:"15",cy:"16",r:"2.5"})]})}const Oe=[{name:"question",display:"/question",aliases:["question","ask","q"],descriptionKey:"agent.slashDesc_question"},{name:"variants",display:"/variants <N>",aliases:["variants","variant","v","n"],descriptionKey:"agent.slashDesc_variants",hasValue:!0},{name:"generate",display:"/generate <N>",aliases:["generate","gen","g"],descriptionKey:"agent.slashDesc_generate",hasValue:!0},{name:"parallelism",display:"/parallelism <N>",aliases:["parallelism","parallel","p"],descriptionKey:"agent.slashDesc_parallelism",hasValue:!0},{name:"help",display:"/help",aliases:["help","h"],descriptionKey:"agent.slashDesc_help"}];function Je(e){const n=e.toLowerCase();return n?Oe.filter(a=>a.aliases.some(s=>s.startsWith(n))):Oe}function Ft({listboxId:e,query:n,highlightIndex:a,onSelect:s,onHighlightChange:r}){const{t:l}=x(),o=Je(n);return o.length===0?null:t.jsx("ul",{id:e,className:"slash-command-menu",role:"listbox","aria-label":l("agent.slashCommands"),children:o.map((d,c)=>t.jsxs("li",{id:`${e}-opt-${c}`,role:"option","aria-selected":c===a,className:`slash-command-menu__item${c===a?" is-highlighted":""}`,onMouseDown:i=>i.preventDefault(),onClick:()=>s(d),onMouseEnter:()=>r(c),children:[t.jsx("span",{className:"slash-command-menu__name",children:d.display}),t.jsx("span",{className:"slash-command-menu__desc",children:l(d.descriptionKey)})]},d.name))})}function Gt(e){return Array.from(e).filter(n=>n.type.startsWith("image/"))}function Ut(e){return Array.from(e.clipboardData?.items??[]).filter(n=>n.kind==="file"&&n.type.startsWith("image/")).map(n=>n.getAsFile()).filter(n=>!!n)}function Ht({webSearchEnabled:e,insertedPrompt:n,onWebSearchChange:a,onAttachFiles:s,onSend:r}){const{t:l}=x(),[o,d]=m.useState(""),[c,i]=m.useState(0),[g,u]=m.useState(!1),p=m.useRef(null),f=m.useRef(null),b=m.useId(),v=o.trim().length>0,w=o.trimStart().match(/^\/([a-z]*)$/i),q=w!==null,G=q&&!g,U=w?.[1]??"",L=Je(U),z=G&&L.length>0,A=L.length>0?Math.min(c,L.length-1):0,he=z?`${b}-opt-${A}`:void 0;m.useEffect(()=>{i(0),u(!1)},[U]),m.useEffect(()=>{q&&u(!1)},[q]),m.useEffect(()=>{n?.text&&d(j=>j.trim()?`${j.trim()}
2
+
3
+ ${n.text}`:n.text)},[n]);const H=()=>{const j=o.trim();j&&(r(j),d(""))},V=j=>{d(`/${j.name} `),p.current?.focus()},J=j=>{const M=Ut(j);M.length!==0&&(j.preventDefault(),s(M))};return t.jsxs("div",{className:"agent-composer",children:[z&&t.jsx(Ft,{listboxId:b,query:U,highlightIndex:A,onSelect:V,onHighlightChange:i}),t.jsx("textarea",{ref:p,value:o,"aria-autocomplete":"list","aria-haspopup":"listbox","aria-label":l("agent.composerPlaceholder"),...z?{"aria-controls":b}:{},"aria-activedescendant":he,autoCapitalize:"off",autoCorrect:"off",placeholder:l("agent.composerPlaceholder"),onChange:j=>d(j.target.value),onPaste:J,onKeyDown:j=>{if(j.key==="Enter"&&(j.metaKey||j.ctrlKey)){j.preventDefault(),H();return}if(z)switch(j.key){case"Tab":{j.preventDefault(),V(L[A]);return}case"ArrowDown":{j.preventDefault(),i((A+1)%L.length);return}case"ArrowUp":{j.preventDefault(),i((A-1+L.length)%L.length);return}case"Enter":{j.preventDefault(),V(L[A]);return}case"Escape":{j.preventDefault(),u(!0);return}}}}),t.jsx("input",{ref:f,type:"file",accept:"image/png,image/jpeg,image/webp",multiple:!0,hidden:!0,onChange:j=>{const M=Gt(j.target.files??[]);M.length>0&&s(M),j.target.value=""}}),t.jsxs("div",{className:"agent-composer__actions",children:[t.jsx("button",{type:"button",onClick:()=>f.current?.click(),"aria-label":l("agent.attachReference"),title:l("agent.attachReference"),children:t.jsx(Dt,{size:16})}),t.jsx("button",{type:"button",className:e?"is-active":"","aria-pressed":e,onClick:()=>a(!e),"aria-label":l("agent.webSearch"),title:l("agent.webSearch"),children:t.jsx(Bt,{size:16})}),t.jsxs("button",{type:"button",className:"agent-composer__send",onClick:H,disabled:!v,"aria-label":l("agent.send"),children:[t.jsx(Pt,{size:16}),t.jsx("span",{children:l("agent.send")})]})]})]})}function Q({src:e,alt:n,className:a,fallbackClassName:s,iconSize:r=18}){const[l,o]=m.useState(!1);return!e||l?t.jsx("span",{className:s??"agent-image-fallback","aria-label":n,role:"img",children:t.jsx(O,{size:r})}):we(e)?t.jsx("video",{className:a,src:e,preload:"metadata",playsInline:!0,muted:!0,onError:()=>o(!0),"aria-label":n}):t.jsx("img",{className:a,src:e,alt:n,onError:()=>o(!0)})}const F=m.forwardRef(function({image:n,selected:a=!1,compact:s=!1,onSelect:r},l){const{t:o}=x(),d=`${o("agent.mediaSelect")}: ${n.prompt??n.filename}`,c=`${s?"agent-result-thumb agent-result-thumb--compact":"agent-result-thumb"}${a?" is-selected":""}`;return t.jsx("button",{ref:l,type:"button",className:c,"aria-label":d,"aria-current":a?"true":void 0,onClick:()=>r(n.id),title:o("agent.mediaSelect"),children:t.jsx(Q,{src:n.thumbUrl??n.url,alt:n.prompt??o("agent.imageAlt"),iconSize:s?14:18})})});function Vt({turn:e,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),l=e.role==="user"?r("agent.user"):e.status==="error"?r("agent.errorRole"):r("agent.assistant"),o=e.imageIds??[],d=e.status==="streaming"?" is-streaming":e.status==="error"?" is-error":"",c=`agent-message agent-message--${e.role}${d}`;return t.jsxs("article",{className:c,"aria-busy":e.status==="streaming"?"true":void 0,children:[t.jsx("div",{className:"agent-message__role",children:l}),t.jsx("p",{children:e.text}),o.length>0?t.jsx("div",{className:"agent-message__images",children:o.map(i=>{const g=n[i];return g?t.jsx(F,{image:g,selected:i===a,compact:!1,onSelect:s},i):null})}):null]})}const Jt=["ima2.get_image_context","ima2.web_search","ima2.generate_image","ima2.generate_video","ima2.get_generation_errors"];function Xt(e){return e.replace(/\s+/g," ").trim()||"tool"}function Yt(e){if(e.toolCalls?.length)return e.toolCalls;const n=Xt(e.text);return Jt.filter(a=>n.includes(a)).map((a,s)=>({id:`${e.id}-fallback-${s}`,name:a,status:e.status==="error"?"error":e.status==="streaming"?"running":"complete",outputSummary:n,imageIds:a==="ima2.generate_image"||a==="ima2.generate_video"?e.imageIds??[]:[],webFindingIds:a==="ima2.web_search"?e.webFindingIds??[]:[]}))}function Xe(e){return!e||e<0?null:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}const Zt={"ima2.get_image_context":"agent.toolLabel.getImageContext","ima2.web_search":"agent.toolLabel.webSearch","ima2.generate_image":"agent.toolLabel.generateImage","ima2.generate_video":"agent.toolLabel.generateVideo","ima2.get_generation_errors":"agent.toolLabel.getGenerationErrors"};function Ye(e){return Zt[e]??null}const en=72;function tn(e,n=en){const a=(e??"").replace(/\s+/g," ").trim();if(!a)return null;if(a.length<=n)return a;const s=a.slice(0,n),r=s.lastIndexOf(" ");return`${(r>n*.6?s.slice(0,r):s).trimEnd()}…`}function nn({call:e,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),l=e.imageIds??[],o=Xe(e.durationMs),[d,c]=m.useState({input:!1,output:!1}),i=(g,u)=>t.jsxs("dd",{className:d[g]?"is-expanded":void 0,children:[t.jsx("span",{children:u}),t.jsx("button",{type:"button",onClick:()=>c(p=>({...p,[g]:!p[g]})),children:r(d[g]?"agent.toolsShowLess":"agent.toolsShowMore")})]});return t.jsxs("div",{className:"agent-tool-call-details",children:[t.jsxs("dl",{children:[t.jsxs("div",{children:[t.jsx("dt",{children:r("agent.toolInput")}),i("input",e.inputSummary??"-")]}),t.jsxs("div",{children:[t.jsx("dt",{children:r("agent.toolOutput")}),i("output",e.errorMessage??e.outputSummary??"-")]}),e.requestId?t.jsxs("div",{children:[t.jsx("dt",{children:r("agent.requestId")}),t.jsx("dd",{children:e.requestId})]}):null,o?t.jsxs("div",{children:[t.jsx("dt",{children:r("agent.duration")}),t.jsx("dd",{children:o})]}):null]}),l.length>0?t.jsx("div",{className:"agent-tool-call-details__artifacts","aria-label":r("agent.toolArtifacts"),children:l.map(g=>{const u=n[g];return u?t.jsx(F,{image:u,selected:g===a,compact:!0,onSelect:s},g):null})}):null]})}function an({call:e,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),l=m.useId(),[o,d]=m.useState(!1),c=Xe(e.durationMs),i=Ye(e.name),g=i?r(i):e.name,u=tn(e.status==="error"?e.errorMessage??e.inputSummary:e.inputSummary),p=r(`agent.toolStatus.${e.status}`);return t.jsxs("li",{className:`agent-tool-call-row agent-tool-call-row--${e.status}`,children:[t.jsxs("button",{type:"button",className:"agent-tool-call-row__toggle","aria-expanded":o,"aria-controls":l,"aria-busy":e.status==="running"?"true":void 0,onClick:()=>d(f=>!f),children:[t.jsx("span",{className:"agent-tool-call-row__status","aria-hidden":"true"}),t.jsx("span",{className:"agent-tool-call-row__name",children:g}),t.jsx("span",{className:"agent-sr-only",children:p}),e.imageIds?.length?t.jsx("span",{className:"agent-tool-call-row__meta",children:r("agent.toolImageCount",{count:e.imageIds.length})}):null,c?t.jsx("span",{className:"agent-tool-call-row__meta agent-tool-call-row__meta--duration",children:c}):null,o?t.jsx(Ve,{size:13}):t.jsx(Ne,{size:13}),u?t.jsx("span",{className:"agent-tool-call-row__preview",title:u,children:u}):null]}),t.jsx("div",{id:l,hidden:!o,children:t.jsx(nn,{call:e,imagesById:n,currentImageId:a,onImageSelect:s})})]})}function sn(e){const n=[],a=new Set;let s=!1;const r=[];for(const l of e){const o=Yt(l);n.push(...o);for(const d of l.imageIds??[])a.add(d);for(const d of o)for(const c of d.imageIds??[])a.add(c);l.status==="streaming"&&(s=!0);for(const d of o)r.includes(d.name)||r.push(d.name)}return{toolCalls:n,imageIds:[...a],isStreaming:s,names:r}}function rn({turns:e,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),l=m.useId(),[o,d]=m.useState(!1),{toolCalls:c,imageIds:i,isStreaming:g,names:u}=m.useMemo(()=>sn(e),[e]),p=r(o?"agent.toolCollapse":"agent.toolExpand"),f=m.useMemo(()=>u.map(v=>{const w=Ye(v);return w?r(w):v}).join(" · ")||r("agent.toolGroup"),[u,r]);return t.jsxs("article",{className:`agent-message agent-message--tool is-collapsible${g?" is-streaming":""}`,"aria-busy":g?"true":void 0,children:[t.jsx("div",{className:"agent-message__tool-summary",children:t.jsx("button",{type:"button",className:"agent-message__tool-toggle","aria-expanded":o,"aria-controls":l,"aria-label":`${p}: ${f}`,onClick:()=>d(b=>!b),children:t.jsxs("span",{className:"agent-message__tool-summary-line",children:[t.jsx("span",{className:"agent-message__tool-dot","aria-hidden":"true"}),t.jsx("span",{className:"agent-message__role",children:r("agent.toolGroup")}),t.jsx("span",{className:"agent-message__tool-label",children:f}),i.length>0?t.jsx("span",{className:"agent-message__tool-count",children:r("agent.toolImageCount",{count:i.length})}):null,c.length>0?t.jsx("span",{className:"agent-message__tool-count",children:r("agent.toolCallCount",{count:c.length})}):null,o?t.jsx(Ve,{size:14}):t.jsx(Ne,{size:14})]})})}),t.jsxs("div",{id:l,className:"agent-message__tool-details",hidden:!o,children:[c.length>0?t.jsx("ul",{className:"agent-tool-call-list",children:c.map(b=>t.jsx(an,{call:b,imagesById:n,currentImageId:a,onImageSelect:s},b.id))}):null,i.length>0?t.jsx("div",{className:"agent-message__tool-thumbs",children:i.map(b=>{const v=n[b];return v?t.jsx(F,{image:v,selected:b===a,compact:!0,onSelect:s},b):null})}):null]})]})}function ln(e){return e.role!=="tool"&&(e.text.trim().length>0||(e.imageIds?.length??0)>0)}function on({turns:e,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),l=e.filter(u=>u.role==="tool"),o=e.filter(ln),d=e.some(u=>u.status==="streaming"),c=e.some(u=>u.status==="error"),i=d?" is-streaming":c?" is-error":"",g=r(c?"agent.errorRole":"agent.assistant");return t.jsxs("article",{className:`agent-message agent-message--assistant-run${i}`,"aria-busy":d?"true":void 0,children:[t.jsxs("div",{className:"agent-run__header",children:[t.jsx("div",{className:"agent-message__role",children:g}),l.length>0?t.jsx("div",{className:"agent-run__header-tool",children:t.jsx(rn,{turns:l,imagesById:n,currentImageId:a,onImageSelect:s})}):null]}),o.length>0?t.jsx("ol",{className:"agent-run__steps","aria-label":g,children:o.map(u=>{const p=u.imageIds??[],f=u.status==="streaming"?" is-streaming":u.status==="error"?" is-error":"";return t.jsxs("li",{className:`agent-run__step${f}`,children:[t.jsx("span",{className:"agent-run__step-marker","aria-hidden":"true"}),t.jsxs("div",{className:"agent-run__step-body",children:[u.text.trim().length>0?t.jsx("p",{children:u.text}):null,p.length>0?t.jsx("div",{className:"agent-message__images",children:p.map(b=>{const v=n[b];return v?t.jsx(F,{image:v,selected:b===a,compact:!1,onSelect:s},b):null})}):null]})]},u.id)})}):null]})}function cn(e){const n=[];let a=[];const s=()=>{a.length!==0&&(n.push({kind:"run",turns:a,key:`run-${a[0].id}`}),a=[])};for(const r of e)r.role==="user"?(s(),n.push({kind:"single",turn:r})):a.push(r);return s(),n}function un({turns:e,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),l=m.useRef(null),o=m.useRef(!0),[d,c]=m.useState(!1),i=m.useMemo(()=>cn(e),[e]),g=m.useCallback(()=>{const p=l.current;p&&(o.current=p.scrollHeight-p.scrollTop-p.clientHeight<=120,o.current&&c(!1))},[]),u=m.useCallback(()=>{const p=l.current;p&&(p.scrollTo({top:p.scrollHeight,behavior:"smooth"}),o.current=!0,c(!1))},[]);return m.useEffect(()=>{const p=l.current;p&&(o.current?p.scrollTop=p.scrollHeight:c(!0))},[e.length]),t.jsxs("div",{className:"agent-message-list-wrap",children:[t.jsxs("div",{ref:l,className:"agent-message-list",role:"log","aria-label":r("agent.workspace"),onScroll:g,children:[e.length===0?t.jsx("div",{className:"agent-message-list__empty",children:r("agent.emptyChat")}):null,i.map(p=>p.kind==="run"?t.jsx(on,{turns:p.turns,imagesById:n,currentImageId:a,onImageSelect:s},p.key):t.jsx(Vt,{turn:p.turn,imagesById:n,currentImageId:a,onImageSelect:s},p.turn.id))]}),d?t.jsx("button",{type:"button",className:"agent-message-list__jump",onClick:u,children:r("agent.emptyJumpLatest")}):null]})}const ue=[{value:"gpt-5.6-luna",shortLabel:"5.6l",fullLabel:"GPT-5.6 Luna",provider:"oauth"},{value:"gpt-5.6-terra",shortLabel:"5.6t",fullLabel:"GPT-5.6 Terra",provider:"oauth"},{value:"gpt-5.6-sol",shortLabel:"5.6s",fullLabel:"GPT-5.6 Sol",provider:"oauth"},{value:"gpt-5.5",shortLabel:"5.5",fullLabel:"GPT-5.5",provider:"oauth"},{value:"gpt-5.4",shortLabel:"5.4",fullLabel:"GPT-5.4",provider:"oauth"},{value:"gpt-5.4-mini",shortLabel:"5.4m",fullLabel:"GPT-5.4 mini",provider:"oauth"},{value:"grok-4.6",shortLabel:"4.6",fullLabel:"Grok 4.6",provider:"grok"},{value:"grok-4.5",shortLabel:"4.5",fullLabel:"Grok 4.5",provider:"grok"},{value:"grok-4.3",shortLabel:"4.3",fullLabel:"Grok 4.3",provider:"grok"}];function dn(e){return ue.find(n=>n.value===e.model)??ue.find(n=>n.provider===e.provider)??ue[0]}function Ze({settings:e,onChange:n,onOpenModelTab:a}){const{t:s}=x(),[r,l]=m.useState(!1),o=m.useRef(null),d=dn(e),c=ye.find(i=>i.value===e.reasoningEffort)??ye[0];return m.useEffect(()=>{if(!r)return;const i=u=>{o.current?.contains(u.target)||l(!1)},g=u=>{u.key==="Escape"&&l(!1)};return window.addEventListener("pointerdown",i),window.addEventListener("keydown",g),()=>{window.removeEventListener("pointerdown",i),window.removeEventListener("keydown",g)}},[r]),t.jsxs("div",{ref:o,className:"image-model-select image-model-select--sidebar agent-model-select",children:[t.jsxs("button",{type:"button",className:"image-model-select__trigger image-model-select__trigger--pill","aria-haspopup":"menu","aria-expanded":r,"aria-label":s("sidebar.quickSettingsAria",{model:d.shortLabel,effort:c.shortLabel}),onClick:()=>l(i=>!i),children:[t.jsxs("span",{className:"image-model-select__trigger-top",children:[t.jsx("span",{className:"image-model-select__trigger-model",children:d.shortLabel}),t.jsx("span",{className:"image-model-select__trigger-chevron","aria-hidden":"true",children:"▾"})]}),t.jsx("span",{className:"image-model-select__trigger-effort",children:c.shortLabel})]}),a?t.jsx("button",{type:"button",className:"agent-model-select__open-tab",onClick:a,"aria-label":s("agent.modelTabView"),title:s("agent.modelTabView"),children:t.jsx(Ne,{size:13})}):null,r?t.jsxs("div",{className:"image-model-select__menu agent-model-select__menu",role:"menu","aria-label":s("sidebar.quickSettingsMenu"),children:[t.jsxs("div",{className:"image-model-select__section",role:"group","aria-label":s("agent.model"),children:[t.jsx("div",{className:"image-model-select__section-title",children:s("agent.model")}),ue.map(i=>t.jsxs("button",{type:"button",className:`image-model-select__item${i.value===d.value?" is-active":""}`,role:"menuitemradio","aria-checked":i.value===d.value,onClick:()=>{n({model:i.value,provider:i.provider}),l(!1)},children:[t.jsx("span",{children:i.shortLabel}),t.jsx("small",{children:i.fullLabel})]},i.value))]}),t.jsxs("div",{className:"image-model-select__section",role:"group","aria-label":s("sidebar.reasoningLabel"),children:[t.jsx("div",{className:"image-model-select__section-title",children:s("sidebar.reasoningLabel")}),ye.map(i=>t.jsxs("button",{type:"button",className:`image-model-select__item${i.value===e.reasoningEffort?" is-active":""}`,role:"menuitemradio","aria-checked":i.value===e.reasoningEffort,onClick:()=>{n({reasoningEffort:i.value}),l(!1)},children:[t.jsx("span",{children:i.shortLabel}),t.jsx("small",{children:s(i.fullLabelKey)})]},i.value))]})]}):null]})}function gn(e,n){if(!e)return null;const a=Math.max(0,Math.floor((n-e)/1e3));return`${String(Math.floor(a/60)).padStart(2,"0")}:${String(a%60).padStart(2,"0")}`}function hn({progress:e,queueSummary:n,onQueueOpen:a,onRetry:s}){const{t:r}=x(),[l,o]=m.useState(Date.now());m.useEffect(()=>{if(!e?.startedAt)return;o(Date.now());const p=window.setInterval(()=>o(Date.now()),1e3);return()=>window.clearInterval(p)},[e?.startedAt]);const d=n?.activeCount??(e?.queuedCount??0)+(e?.runningCount??0),c=n?.failedCount??e?.failedCount??0;if(!e?.active&&!n)return null;const i=e?.status==="queued"?"agent.progressQueued":e?.progressStage==="downloading"?"agent.progressDownloading":e?.status==="running"||e?.progressStage==="requesting"||e?.progressStage==="polling"?"agent.progressGenerating":e?.status==="error"?"agent.progressFailed":"agent.progressPlanning",g=gn(e?.startedAt,l),u=e?.jobKind?r("agent.progressJob",{kind:r(`agent.mediaKind.${e.jobKind}`),count:e.variantCount??1}):null;return t.jsxs("div",{className:`agent-run-status agent-run-status--${e?.status??"idle"}`,role:"status","aria-live":"polite",children:[e?.active?t.jsx("span",{className:"agent-run-status__indicator","aria-hidden":"true"}):null,e?.active?t.jsx("span",{className:"agent-run-status__label",children:r(i)}):null,u?t.jsx("span",{className:"agent-run-status__meta",children:u}):null,g?t.jsx("time",{className:"agent-run-status__elapsed",dateTime:`PT${Math.floor((l-(e?.startedAt??l))/1e3)}S`,children:g}):null,e?.status==="error"&&e.lastError?t.jsx("span",{className:"agent-run-status__meta",children:e.lastError}):null,e?.status==="error"&&s?t.jsx("button",{type:"button",className:"agent-run-status__retry",onClick:s,children:r("agent.retryQueue")}):null,t.jsx("button",{type:"button",className:"agent-run-status__queue",onClick:a,disabled:!a,children:r("agent.queueSummary",{active:d,failed:c})})]})}function mn({status:e,compacted:n=!1}){const{t:a}=x(),s=a(e==="generating"?"agent.statusGenerating":e==="reconnecting"?"agent.statusReconnecting":"agent.statusReady");return t.jsxs("span",{className:`agent-status agent-status--${e}`,"aria-live":e==="ready"?void 0:"polite",children:[e==="generating"?t.jsx("span",{className:"agent-status__dot","aria-hidden":"true"}):null,t.jsx("span",{children:s}),n?t.jsx("em",{children:a("agent.compacted")}):null]})}function pn({session:e,turns:n,imagesById:a,currentImageId:s,runtimeStatus:r,runProgress:l,settings:o,insertedPrompt:d,onSettingsChange:c,onOpenModelTab:i,onWebSearchChange:g,onAttachFiles:u,onImageSelect:p,onSend:f,onRetryRun:b}){const{t:v}=x();return t.jsxs("section",{className:"agent-chat","aria-label":v("agent.chat"),children:[t.jsxs("header",{className:"agent-pane-header",children:[t.jsxs("div",{className:"agent-pane-header__title",children:[t.jsx("span",{children:v("agent.chat")}),t.jsx("strong",{children:e?.title??v("agent.newSession")})]}),t.jsxs("div",{className:"agent-pane-header__actions",children:[o&&c?t.jsx(Ze,{settings:o,onChange:c,onOpenModelTab:i}):null,t.jsx(mn,{status:r,compacted:e?.compacted})]})]}),t.jsx(un,{turns:n,imagesById:a,currentImageId:s,onImageSelect:p}),t.jsx(hn,{progress:l,onRetry:b}),t.jsx(Ht,{webSearchEnabled:e?.webSearchEnabled??!1,insertedPrompt:d,onWebSearchChange:g,onAttachFiles:u,onSend:f})]})}const fn=["image","refs","web","memory"];function xn({activeTab:e,onChange:n}){const{t:a}=x(),s={image:a("agent.imageTab"),refs:a("agent.refsTab"),web:a("agent.webTab"),memory:a("agent.memoryTab")};return t.jsx("div",{className:"agent-context-tabs",role:"tablist","aria-label":a("agent.contextTabs"),children:fn.map(r=>t.jsx("button",{type:"button",role:"tab","aria-selected":e===r,className:e===r?"active":"",onClick:()=>n(r),children:s[r]},r))})}function bn({activeTab:e,currentImage:n}){const{t:a}=x();return e==="refs"?t.jsx("div",{className:"agent-tab-empty",children:a("agent.noRefs")}):e==="web"?t.jsx("div",{className:"agent-tab-empty",children:a("agent.noWeb")}):e==="memory"?t.jsxs("ul",{className:"agent-memory-list",children:[t.jsx("li",{children:a("agent.memoryItemStyle")}),t.jsx("li",{children:a("agent.memoryItemSubject")})]}):t.jsxs("dl",{className:"agent-image-meta",children:[t.jsxs("div",{children:[t.jsx("dt",{children:a("agent.filename")}),t.jsx("dd",{children:n?.filename??"-"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:a("agent.prompt")}),t.jsx("dd",{children:n?.prompt??n?.revisedPrompt??"-"})]})]})}function jn(e){const n=Math.max(0,Math.round(e));return`${Math.floor(n/60)}:${String(n%60).padStart(2,"0")}`}function et({image:e}){const{t:n}=x(),[a,s]=m.useState("loading"),[r,l]=m.useState(null),[o,d]=m.useState(0),c=g=>{const u=g.currentTarget.duration;l(Number.isFinite(u)?u:null),s("ready")},i=()=>{s("loading"),l(null),d(g=>g+1)};return t.jsxs("div",{className:"agent-video-preview",children:[a==="loading"?t.jsx("div",{className:"agent-video-preview__skeleton",role:"status",children:n("agent.mediaLoading")}):null,a==="error"?t.jsxs("div",{className:"agent-video-preview__error",role:"alert",children:[t.jsx(O,{size:34}),t.jsx("span",{children:n("agent.mediaLoadFailed")}),t.jsx("button",{type:"button",onClick:i,children:n("agent.mediaRetry")})]}):t.jsx("video",{src:e.url,controls:!0,playsInline:!0,preload:"metadata","aria-label":e.prompt??n("agent.mediaVideoLabel"),onLoadedMetadata:c,onError:()=>s("error")},o),t.jsxs("div",{className:"agent-video-preview__toolbar",children:[t.jsx("span",{children:r==null?n("agent.mediaDurationUnknown"):n("agent.mediaDuration",{duration:jn(r)})}),t.jsx("a",{href:e.url,download:e.filename,children:n("agent.mediaDownload")})]})]})}function tt({currentImage:e,images:n,activeTab:a,onTabChange:s,onImageSelect:r,headerAction:l}){const{t:o}=x(),d=m.useRef({}),c=m.useMemo(()=>n.findIndex(u=>u.id===e?.id),[e?.id,n]);m.useEffect(()=>{e?.id&&d.current[e.id]?.scrollIntoView({block:"nearest",inline:"nearest"})},[e?.id]);const i=m.useCallback(u=>{const p=n[u];p&&r(p.id)},[n,r]),g=m.useCallback(u=>{if(n.length===0)return;const p=c>=0?c:0;let f=null;(u.key==="ArrowLeft"||u.key==="ArrowUp")&&(f=Math.max(0,p-1)),(u.key==="ArrowRight"||u.key==="ArrowDown")&&(f=Math.min(n.length-1,p+1)),u.key==="Home"&&(f=0),u.key==="End"&&(f=n.length-1),!(f===null||f===p)&&(u.preventDefault(),i(f))},[c,n.length,i]);return t.jsxs("section",{className:"agent-image","aria-label":o("agent.imagePane"),children:[t.jsxs("header",{className:"agent-pane-header",children:[t.jsxs("div",{className:"agent-pane-header__title",children:[t.jsx("span",{children:o("agent.imagePane")}),t.jsx("strong",{children:o("agent.currentImage")})]}),l]}),t.jsx("div",{className:"agent-image__preview",tabIndex:n.length>1?0:void 0,onKeyDown:g,"aria-label":n.length>1?o("agent.variants"):void 0,children:e?we(e.url)?t.jsx(et,{image:e},e.id):t.jsx(Q,{src:e.url,alt:e.prompt??o("agent.imageAlt"),fallbackClassName:"agent-image__empty",iconSize:34}):t.jsxs("div",{className:"agent-image__empty",children:[t.jsx(O,{size:34}),t.jsx("span",{children:o("agent.noImage")})]})}),t.jsx("div",{className:"agent-image__variants","aria-label":o("agent.variants"),onKeyDown:g,children:n.map(u=>t.jsx(F,{ref:p=>{d.current[u.id]=p},image:u,selected:u.id===e?.id,onSelect:r},u.id))}),t.jsx(xn,{activeTab:a,onChange:s}),t.jsx(bn,{activeTab:a,currentImage:e})]})}function yn({open:e,currentImage:n,images:a,activeTab:s,onTabChange:r,onImageSelect:l,onClose:o}){const{t:d}=x(),c=m.useCallback(()=>o(),[o]),i=de(e,c);return e?t.jsxs("div",{className:"agent-dialog agent-dialog--image",role:"presentation",children:[t.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:o,"aria-label":d("agent.closeImage")}),t.jsx("section",{ref:i,className:"agent-image-sheet",role:"dialog","aria-modal":"true","aria-label":d("agent.imagePane"),children:t.jsx(tt,{currentImage:n,images:a,activeTab:s,onTabChange:r,onImageSelect:l,headerAction:t.jsx("button",{type:"button",onClick:o,"aria-label":d("agent.closeImage"),children:t.jsx(ge,{size:17})})})})]}):null}function vn(e){return e.status==="queued"?`#${e.position}`:e.status==="succeeded"?String(e.resultImageIds.length):""}function Sn(e,n){if(!e)return"-";const a=Math.max(1,Math.round((Date.now()-e)/1e3));if(a<60)return n(a,"second");const s=Math.round(a/60);return s<60?n(s,"minute"):n(Math.round(s/60),"hour")}function _n(e){return!e.errorCode&&!e.errorClass&&!e.errorMessage?null:Nt({code:e.errorCode,errorClass:e.errorClass,message:e.errorMessage})}function wn(e,n){return e?.errorClass?e.spec.cardKey?n(`${e.spec.cardKey}.title`):e.spec.toastKey?n(e.spec.toastKey):null:null}function Nn({item:e,onCancel:n,onRetry:a}){const{t:s}=x(),r=e.status==="queued"||e.status==="running",l=e.status==="failed"||e.status==="canceled",o=e.plan.plannedVariants||e.plan.prompts.length||1,d=e.plan.plannedParallelism||e.options.parallelism,c=vn(e),i=Sn(e.createdAt,(u,p)=>s("agent.queueTimeAgo",{value:u,unit:s(`agent.queueTimeUnit.${p}`)})),g=wn(_n(e),s);return t.jsxs("div",{className:`agent-queue-row agent-queue-row--${e.status}`,children:[t.jsxs("div",{className:"agent-queue-row__main",children:[t.jsx("strong",{children:e.prompt}),t.jsx("span",{className:`agent-queue-row__badge agent-queue-row__badge--${e.status}`,children:s(`agent.queueStatus.${e.status}`)}),t.jsx("span",{children:[c,g,s("agent.queuePlanSummary",{variants:o,parallel:d}),i].filter(Boolean).join(" · ")}),e.plan.reason||e.errorCode||e.errorMessage?t.jsxs("details",{className:"agent-queue-row__details",children:[t.jsx("summary",{children:s("agent.queueDetails")}),e.plan.reason?t.jsx("small",{children:e.plan.reason}):null,e.errorCode?t.jsx("small",{children:e.errorCode}):null,e.errorMessage?t.jsx("small",{children:e.errorMessage}):null]}):null]}),t.jsxs("div",{className:"agent-queue-row__actions",children:[r?t.jsx("button",{type:"button",onClick:()=>n(e.id),children:s("agent.cancelQueue")}):null,l?t.jsx("button",{type:"button",onClick:()=>a(e.id),children:s("agent.retryQueue")}):null]})]})}function nt({items:e,summary:n,onCancel:a,onRetry:s}){const{t:r}=x(),l=r("agent.queueAnnouncement",{running:n?.runningCount??0,queued:n?.queuedCount??0,failed:e.filter(o=>o.status==="failed").length});return t.jsxs("section",{className:"agent-sidebar-section","aria-label":r("agent.queue"),children:[t.jsx("header",{children:t.jsxs("div",{children:[t.jsx("span",{children:r("agent.queue")}),t.jsxs("strong",{children:[n?.runningCount??0," ",r("agent.runningShort")," · ",n?.queuedCount??0," ",r("agent.queuedShort")]})]})}),t.jsxs("div",{className:"agent-queue-list",children:[t.jsx("span",{className:"agent-sr-only","aria-live":"polite","aria-atomic":"true",children:l}),e.length===0?t.jsx("div",{className:"agent-tab-empty",children:r("agent.queueEmpty")}):e.map(o=>t.jsx(Nn,{item:o,onCancel:a,onRetry:s},o.id))]})]})}function Cn({open:e,items:n,summary:a,onCancel:s,onRetry:r,onClose:l}){const{t:o}=x(),d=m.useCallback(()=>l(),[l]),c=de(e,d);return e?t.jsxs("div",{className:"agent-dialog agent-dialog--queue",role:"presentation",children:[t.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:l,"aria-label":o("agent.topbarCloseQueue")}),t.jsxs("section",{ref:c,className:"agent-queue-sheet",role:"dialog","aria-modal":"true","aria-label":o("agent.topbarQueueSheet"),children:[t.jsxs("header",{children:[t.jsx("strong",{children:o("agent.topbarQueueSheet")}),t.jsx("button",{type:"button",onClick:l,"aria-label":o("agent.topbarCloseQueue"),children:t.jsx(ge,{size:17})})]}),t.jsx(nt,{items:n,summary:a,onCancel:s,onRetry:r})]})]}):null}function at({mode:e,onInsert:n}){const{t:a}=x(),s=E(i=>i.promptLibrary),r=E(i=>i.promptLibraryLoading),l=E(i=>i.loadPromptLibrary),[o,d]=m.useState("");m.useEffect(()=>{l()},[l]);const c=m.useMemo(()=>{const i=o.trim().toLowerCase();return s.prompts.filter(g=>{const u=g.tags.map(p=>p.toLowerCase());return e==="forms"&&!u.includes("agent:form")?!1:i?g.name.toLowerCase().includes(i)||g.text.toLowerCase().includes(i)||u.some(p=>p.includes(i)):!0})},[s.prompts,e,o]);return t.jsxs("section",{className:"agent-sidebar-section","aria-label":a(e==="forms"?"agent.forms":"agent.promptLibrary"),children:[t.jsx("header",{children:t.jsxs("div",{children:[t.jsx("span",{children:a(e==="forms"?"agent.forms":"agent.promptLibrary")}),t.jsx("strong",{children:c.length})]})}),t.jsxs("label",{className:"agent-sidebar-search",children:[t.jsx("span",{children:a("promptLibrary.search")}),t.jsx("input",{value:o,onChange:i=>d(i.target.value),placeholder:a("promptLibrary.search")})]}),t.jsxs("div",{className:"agent-prompt-library-list",children:[r?t.jsx("div",{className:"agent-tab-empty",children:a("common.loading")}):null,!r&&c.length===0?t.jsx("div",{className:"agent-tab-empty",children:a(e==="forms"?"agent.noForms":"promptLibrary.empty")}):null,c.map(i=>t.jsxs("article",{className:"agent-prompt-library-row",children:[t.jsx("strong",{children:i.name||a("promptLibrary.untitled")}),t.jsx("p",{children:i.text}),t.jsx("button",{type:"button",onClick:()=>n(i.text),children:a("agent.insertPrompt")})]},i.id))]})]})}function kn({onInsert:e}){return t.jsx(at,{mode:"forms",onInsert:e})}function ne({label:e,value:n,options:a,onChange:s}){return t.jsxs("div",{className:"agent-settings-grid__field",children:[t.jsx("span",{children:e}),t.jsx("div",{className:"agent-segment-control",role:"group","aria-label":e,children:a.map(r=>t.jsx("button",{type:"button","aria-pressed":r.value===n,onClick:()=>s(r.value),children:r.label},r.value))})]})}function ve({label:e,value:n,max:a,onChange:s}){return t.jsxs("div",{className:"agent-settings-grid__field",children:[t.jsx("span",{children:e}),t.jsxs("div",{className:"agent-stepper",role:"group","aria-label":e,children:[t.jsx("button",{type:"button","aria-label":`${e} -`,disabled:n<=1,onClick:()=>s(Math.max(1,n-1)),children:"-"}),t.jsx("output",{"aria-live":"polite",children:n}),t.jsx("button",{type:"button","aria-label":`${e} +`,disabled:n>=a,onClick:()=>s(Math.min(a,n+1)),children:"+"})]})]})}function In({settings:e,onChange:n}){const{t:a}=x();return t.jsxs("section",{className:"agent-settings-grid","aria-label":a("agent.quality"),children:[t.jsx(ne,{label:a("agent.generationStrategy"),value:e.generationStrategy,options:[{value:"auto",label:a("agent.generationStrategyAuto")},{value:"manual",label:a("agent.generationStrategyManual")}],onChange:s=>n({generationStrategy:s})}),t.jsx(ne,{label:a("agent.quality"),value:e.quality,options:[{value:"low",label:"low"},{value:"medium",label:"medium"},{value:"high",label:"high"}],onChange:s=>n({quality:s})}),t.jsx(ne,{label:a("agent.size"),value:e.size,options:[{value:"1024x1024",label:"1:1"},{value:"1536x1024",label:"3:2"},{value:"1024x1536",label:"2:3"},{value:"2048x2048",label:"2K"}],onChange:s=>n({size:s})}),t.jsx(ne,{label:a("agent.format"),value:e.format,options:[{value:"png",label:"PNG"},{value:"jpeg",label:"JPEG"},{value:"webp",label:"WebP"}],onChange:s=>n({format:s})}),t.jsx(ne,{label:a("agent.moderation"),value:e.moderation,options:[{value:"auto",label:"auto"},{value:"low",label:"low"}],onChange:s=>n({moderation:s})}),e.generationStrategy==="manual"?t.jsx(ve,{label:a("agent.variantsCount"),value:e.variants,max:_e,onChange:s=>n({variants:s})}):t.jsx(ve,{label:a("agent.maxAutoVariants"),value:e.maxAutoVariants,max:_e,onChange:s=>n({maxAutoVariants:s})}),t.jsx(ve,{label:a("agent.parallelism"),value:e.parallelism,max:Tt,onChange:s=>n({parallelism:s})})]})}const D=["image","library","forms","quality","model","queue"];function An({activeTab:e,onChange:n}){const{t:a}=x(),s=m.useRef({}),r=m.useCallback(l=>{const o=D.indexOf(e),d=o>=0?o:0;let c=null;if((l.key==="ArrowRight"||l.key==="ArrowDown")&&(c=(d+1)%D.length),(l.key==="ArrowLeft"||l.key==="ArrowUp")&&(c=(d-1+D.length)%D.length),l.key==="Home"&&(c=0),l.key==="End"&&(c=D.length-1),c===null)return;l.preventDefault();const i=D[c];n(i),s.current[i]?.focus()},[e,n]);return t.jsx("div",{className:"agent-sidebar-tabs",role:"tablist","aria-label":a("agent.rightSidebar"),children:D.map(l=>t.jsx("button",{type:"button",role:"tab",id:`agent-sidebar-tab-${l}`,ref:o=>{s.current[l]=o},"aria-controls":`agent-sidebar-panel-${l}`,className:e===l?"active":"","aria-selected":e===l,tabIndex:e===l?0:-1,onKeyDown:r,onClick:()=>n(l),children:a(`agent.sidebarTabs.${l}`)},l))})}function ze({currentImage:e,images:n,contextTab:a,sidebarTab:s,queueItems:r,runSummary:l,settings:o,onContextTabChange:d,onSidebarTabChange:c,onImageSelect:i,onSettingsChange:g,onInsertPrompt:u,onCancelQueue:p,onRetryQueue:f}){const{t:b}=x(),v=w=>({id:`agent-sidebar-panel-${w}`,role:"tabpanel","aria-labelledby":`agent-sidebar-tab-${w}`});return t.jsxs(t.Fragment,{children:[t.jsx(An,{activeTab:s,onChange:c}),s==="image"?t.jsx("div",{...v("image"),className:"agent-sidebar-panel",children:t.jsx(tt,{currentImage:e,images:n,activeTab:a,onTabChange:d,onImageSelect:i})}):null,s==="library"?t.jsx("div",{...v("library"),className:"agent-sidebar-panel",children:t.jsx(at,{mode:"library",onInsert:u})}):null,s==="forms"?t.jsx("div",{...v("forms"),className:"agent-sidebar-panel",children:t.jsx(kn,{onInsert:u})}):null,s==="quality"?t.jsxs("section",{...v("quality"),className:"agent-sidebar-panel agent-sidebar-section","aria-label":b("agent.quality"),children:[t.jsx("header",{children:t.jsxs("div",{children:[t.jsx("span",{children:b("agent.quality")}),t.jsx("strong",{children:o.generationStrategy==="auto"?b("agent.generationStrategyAuto"):b("agent.generationStrategyManual")})]})}),t.jsx(In,{settings:o,onChange:g})]}):null,s==="model"?t.jsxs("section",{...v("model"),className:"agent-sidebar-panel agent-sidebar-section","aria-label":b("agent.modelSettings"),children:[t.jsx("header",{children:t.jsxs("div",{children:[t.jsx("span",{children:b("agent.modelSettings")}),t.jsx("strong",{children:o.model})]})}),t.jsx(Ze,{settings:o,onChange:g})]}):null,s==="queue"?t.jsx("div",{...v("queue"),className:"agent-sidebar-panel",children:t.jsx(nt,{items:r,summary:l,onCancel:p,onRetry:f})}):null]})}const Ln=()=>{};function We({overlay:e,onClose:n,...a}){const{t:s}=x(),r=de(e===!0,n??Ln,{modal:!1});return e?t.jsxs("section",{ref:r,id:"agent-tools-panel",className:"agent-right-sidebar agent-right-sidebar--overlay",role:"dialog","aria-labelledby":"agent-tools-panel-title",children:[t.jsxs("header",{className:"agent-right-sidebar__overlay-header",children:[t.jsx("h2",{id:"agent-tools-panel-title",tabIndex:-1,"data-autofocus":!0,children:s("agent.toolsPanel")}),t.jsx("button",{type:"button",onClick:n,"aria-label":s("agent.closeTools"),children:t.jsx(ge,{size:17})})]}),t.jsx(ze,{...a})]}):t.jsx("aside",{className:"agent-right-sidebar",children:t.jsx(ze,{...a})})}function st({summary:e}){const{t:n}=x();if(!e||e.status==="idle")return null;const a=e.status==="running"?n("agent.sessionRunning"):e.status==="queued"?n("agent.sessionQueued",{count:e.queuedCount}):n("agent.sessionError");return t.jsxs("span",{className:`agent-session-spinner agent-session-spinner--${e.status}`,"data-motion-essential":!0,"aria-label":a,title:a,children:[t.jsx("span",{"aria-hidden":"true"}),e.queuedCount>0?t.jsx("em",{children:e.queuedCount}):null]})}function Tn(e){const n=Math.max(1,Math.round((Date.now()-e)/6e4));if(n<60)return`${n}m`;const a=Math.round(n/60);return a<24?`${a}h`:`${Math.round(a/24)}d`}function Mn({sessions:e,selectedId:n,imagesById:a,runSummaryBySession:s={},onSelect:r,onRename:l,onDelete:o}){const{t:d}=x();return t.jsx("div",{className:"agent-session-list",children:e.map(c=>{const i=c.lastImageId?a[c.lastImageId]:null;return t.jsxs("div",{className:`agent-session-row${c.id===n?" is-active":""}`,children:[t.jsxs("button",{type:"button","aria-current":c.id===n?"page":void 0,onClick:()=>r(c.id),children:[t.jsx("span",{className:"agent-session-row__thumb",children:i?t.jsx(Q,{src:i.thumbUrl??i.url,alt:"",iconSize:17}):t.jsx(O,{size:17})}),t.jsxs("span",{className:"agent-session-row__body",children:[t.jsx("strong",{children:c.title}),t.jsxs("span",{children:[d("agent.imageCount",{count:c.imageCount})," · ",Tn(c.updatedAt)]})]}),t.jsxs("span",{className:"agent-session-row__badges",children:[t.jsx(st,{summary:s[c.id]}),c.webSearchEnabled?t.jsx("em",{title:d("agent.web"),children:"W"}):null,c.compacted?t.jsx("em",{title:d("agent.compacted"),children:"C"}):null]})]}),t.jsxs("div",{className:"agent-session-row__actions",children:[t.jsx("button",{type:"button",onClick:()=>l(c.id),"aria-label":d("agent.renameSession"),title:d("agent.renameSession"),children:t.jsx(Kt,{size:14})}),t.jsx("button",{type:"button",onClick:()=>o(c.id),"aria-label":d("agent.deleteSession"),title:d("agent.deleteSession"),children:t.jsx(Wt,{size:14})})]})]},c.id)})})}function En({open:e,sessions:n,selectedId:a,imagesById:s,runSummaryBySession:r,onClose:l,onCreate:o,onSelect:d,onRename:c,onDelete:i}){const{t:g}=x(),[u,p]=m.useState(""),f=m.useCallback(()=>l(),[l]),b=de(e,f),v=m.useMemo(()=>{const w=u.trim().toLowerCase();return w?n.filter(q=>q.title.toLowerCase().includes(w)):n},[u,n]);return e?t.jsxs("div",{className:"agent-dialog agent-dialog--drawer",role:"presentation",children:[t.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:l,"aria-label":g("agent.closeSessions")}),t.jsxs("section",{ref:b,className:"agent-session-drawer",role:"dialog","aria-modal":"true","aria-label":g("agent.sessions"),children:[t.jsxs("header",{children:[t.jsx("strong",{children:g("agent.sessions")}),t.jsx("button",{type:"button",onClick:l,"aria-label":g("agent.closeSessions"),children:t.jsx(ge,{size:17})})]}),t.jsxs("button",{type:"button",className:"agent-sessions__create",onClick:o,children:[t.jsx(Ue,{size:16}),t.jsx("span",{children:g("agent.newSession")})]}),t.jsxs("label",{className:"agent-sessions__search",children:[t.jsx($t,{size:15}),t.jsx("input",{value:u,onChange:w=>p(w.target.value),placeholder:g("agent.sessionSearch")})]}),t.jsx(Mn,{sessions:v,selectedId:a,imagesById:s,runSummaryBySession:r,onSelect:d,onRename:c,onDelete:i})]})]}):null}function qn({sessions:e,selectedId:n,imagesById:a,runSummaryBySession:s={},onCreate:r,onSelect:l,onOpenDrawer:o}){const{t:d}=x();return t.jsxs("aside",{className:"agent-rail","aria-label":d("agent.sessions"),children:[t.jsx("button",{type:"button",onClick:o,"aria-label":d("agent.openSessions"),title:d("agent.openSessions"),children:t.jsx(He,{size:17})}),t.jsx("button",{type:"button",onClick:r,"aria-label":d("agent.newSession"),title:d("agent.newSession"),children:t.jsx(Ue,{size:17})}),t.jsx("div",{className:"agent-rail__sessions",children:e.map(c=>{const i=c.lastImageId?a[c.lastImageId]:null,g=`${c.title} — ${d("agent.imageCount",{count:c.imageCount})}`;return t.jsxs("button",{type:"button",className:c.id===n?"is-active":"",onClick:()=>l(c.id),title:g,"aria-label":g,"aria-current":c.id===n?"true":void 0,children:[i?t.jsx(Q,{src:i.thumbUrl??i.url,alt:"",iconSize:17}):t.jsx(O,{size:17}),t.jsx(st,{summary:s[c.id]}),c.compacted?t.jsx("span",{"aria-label":d("agent.compacted")}):null]},c.id)})})]})}function Rn({currentImage:e,images:n,onImageSelect:a,onOpenPanel:s,toolsPanelOpen:r}){const{t:l}=x(),o=m.useRef({}),d=m.useMemo(()=>n.findIndex(g=>g.id===e?.id),[e?.id,n]);m.useEffect(()=>{e?.id&&o.current[e.id]?.scrollIntoView({block:"nearest",inline:"nearest"})},[e?.id]);const c=m.useCallback(g=>{const u=n[g];u&&a(u.id)},[n,a]),i=m.useCallback(g=>{if(n.length===0)return;const u=d>=0?d:0;let p=null;(g.key==="ArrowLeft"||g.key==="ArrowUp")&&(p=Math.max(0,u-1)),(g.key==="ArrowRight"||g.key==="ArrowDown")&&(p=Math.min(n.length-1,u+1)),g.key==="Home"&&(p=0),g.key==="End"&&(p=n.length-1),!(p===null||p===u)&&(g.preventDefault(),c(p))},[d,n.length,c]);return t.jsxs("section",{className:"agent-stage","aria-label":l("agent.imagePane"),children:[t.jsxs("header",{className:"agent-pane-header",children:[t.jsxs("div",{className:"agent-pane-header__title",children:[t.jsx("span",{children:l("agent.imagePane")}),t.jsx("strong",{children:l("agent.currentImage")})]}),t.jsx("button",{type:"button",className:"agent-stage__tools",onClick:s,"aria-expanded":r===!0,"aria-controls":"agent-tools-panel","aria-label":l(r?"agent.closeTools":"agent.openTools"),title:l(r?"agent.closeTools":"agent.openTools"),children:t.jsx(Qt,{size:16})})]}),t.jsx("div",{className:"agent-stage__viewport",tabIndex:n.length>1?0:void 0,onKeyDown:i,"aria-label":n.length>1?l("agent.variants"):void 0,children:e?we(e.url)?t.jsx(et,{image:e},e.id):t.jsx(Q,{src:e.url,alt:e.prompt??l("agent.imageAlt"),fallbackClassName:"agent-stage__empty",iconSize:34}):t.jsxs("div",{className:"agent-stage__empty",children:[t.jsx(O,{size:34}),t.jsx("span",{children:l("agent.noImage")}),t.jsx("small",{children:l("agent.stageEmptyHint")})]})}),t.jsxs("div",{className:"agent-stage__caption",children:[t.jsx("strong",{children:e?.filename??"-"}),t.jsx("span",{children:e?.prompt??e?.revisedPrompt??""})]}),t.jsx("div",{className:"agent-stage__filmstrip","aria-label":l("agent.variants"),onKeyDown:i,children:n.map(g=>t.jsx(F,{ref:u=>{o.current[g.id]=u},image:g,selected:g.id===e?.id,onSelect:a},g.id))})]})}function Ke({layoutMode:e,session:n,currentImage:a,activeJobCount:s,onOpenSessions:r,onOpenImage:l,onOpenQueue:o}){const{t:d}=x(),c=E(g=>g.setUIMode),i=e==="mobile-chat-image-sheet";return t.jsxs("header",{className:"agent-topbar",children:[t.jsxs("button",{type:"button",className:"agent-topbar__back",onClick:()=>c("classic"),"aria-label":d("agent.topbarBackToStudio"),title:d("agent.topbarBackToStudio"),children:[t.jsx(Ot,{size:18}),t.jsx("span",{children:d("agent.topbarStudio")})]}),t.jsx("button",{type:"button",className:"agent-topbar__icon",onClick:r,"aria-label":d("agent.openSessions"),title:d("agent.openSessions"),children:t.jsx(He,{size:18})}),t.jsxs("div",{className:"agent-topbar__title",children:[t.jsx("span",{children:d("agent.title")}),t.jsx("strong",{children:n?.title??d("agent.newSession")})]}),i?t.jsxs("div",{className:"agent-topbar__actions",children:[t.jsxs("button",{type:"button",className:"agent-topbar__queue",onClick:o,"aria-label":d("agent.topbarOpenQueue",{count:s}),title:d("agent.topbarOpenQueue",{count:s}),children:[t.jsx(zt,{size:17}),t.jsx("span",{children:s})]}),t.jsx("button",{type:"button",className:"agent-topbar__image",onClick:l,"aria-label":d("agent.openImage"),title:d("agent.openImage"),children:a?t.jsx(Q,{src:a.thumbUrl??a.url,alt:"",iconSize:18}):t.jsx(O,{size:18})})]}):null]})}async function $n({sessionId:e,files:n,importLocalImageToHistory:a,applyWorkspace:s}){for(const r of n){const l=await a(r),o=l?Ge(l):null;if(!o)continue;const d=await ce(e,{currentImage:o});s(d)}}const Ce="agent-local-",Pn=`${Ce}pending-`;let Qe=0;function ke(e){return Qe+=1,`${Ce}${e}-${Date.now()}-${Qe}`}function rt(e){return e.id.startsWith(Ce)}function ie(e){return e.id.startsWith(Pn)}function Dn(e,n){return{id:ke("user"),role:"user",text:e,imageIds:[],webFindingIds:[],status:"complete",createdAt:n}}function Bn(e,n){return{id:ke("pending"),role:"assistant",text:e,imageIds:[],webFindingIds:[],status:"streaming",createdAt:n}}function On(e){return{id:ke("error"),role:"assistant",text:e,imageIds:[],webFindingIds:[],status:"error",createdAt:Date.now()}}function zn({turns:e,queueItems:n,runSummary:a,localPendingCount:s}){const r=n.filter(d=>d.status==="failed").length,l=Wn(n),o=l?Kn(l):{};if(a?.status==="error"&&a.lastError)return{active:!0,status:"error",labelKey:"runError",queuedCount:a.queuedCount,runningCount:a.runningCount,failedCount:r,lastError:a.lastError};if(a?.status==="queued")return{active:!0,status:"queued",labelKey:"pendingQueued",queuedCount:a.queuedCount,runningCount:a.runningCount,failedCount:r,...o};if(a?.status==="running"){const d=l?.startedAt??l?.createdAt??null,c=e.some(i=>!rt(i)&&i.role==="tool"&&(!d||(i.createdAt??0)>=d));return{active:!0,status:c?"running":"planning",labelKey:c?"pendingGenerating":"pendingPlanning",queuedCount:a.queuedCount,runningCount:a.runningCount,failedCount:r,...o}}return s>0?{active:!0,status:"planning",labelKey:"pendingPlanning",queuedCount:a?.queuedCount??0,runningCount:a?.runningCount??0,failedCount:r}:null}function Wn(e){return[...e].filter(n=>n.status==="running"||n.status==="queued").sort((n,a)=>n.status!==a.status?n.status==="running"?-1:1:(n.startedAt??n.createdAt)-(a.startedAt??a.createdAt))[0]??null}function Kn(e){return{startedAt:e.startedAt??null,progressStage:e.progressStage??null,jobKind:e.plan.mode==="video"||e.plan.videoParams?"video":"image",variantCount:e.plan.plannedVariants||e.plan.prompts.length||1}}function Se(){return{sessions:[],turnsBySession:{},imagesById:{},imageIdsBySession:{},selectedSessionId:null,currentImageId:null,allowedTools:["ima2.get_image_context","ima2.web_search","ima2.generate_image","ima2.generate_video","ima2.get_generation_errors"],manifest:null,queueBySession:{},runSummaryBySession:{}}}function Qn(e){const n=e.filename.endsWith(".mp4");return{image:e.url,url:e.url,filename:e.filename,thumb:e.thumbUrl??void 0,prompt:e.prompt??void 0,revisedPrompt:e.revisedPrompt??null,createdAt:e.createdAt,mediaType:n?"video":"image",kind:"agent"}}function Fn(e,n,a){return{...e,turnsBySession:{...e.turnsBySession,[n]:[...e.turnsBySession[n]??[],...a]}}}function Gn(e,n,a,s){const r=e.turnsBySession[n]??[];return{...e,turnsBySession:{...e.turnsBySession,[n]:[...r.filter(l=>l.id!==a),On(s)]}}}function Un(e,n,a){const s={...n.turnsBySession};for(const[r,l]of Object.entries(e.turnsBySession)){const o=s[r]??[],d=new Set(o.map(g=>g.id)),c=Math.max(0,...o.map(g=>g.createdAt??0)),i=l.filter(g=>a.has(g.id)||d.has(g.id)?!1:rt(g)||g.status==="streaming"?!0:(g.createdAt??0)>=c);i.length>0&&(s[r]=[...o,...i])}return{...n,turnsBySession:s}}function Jn(){const{t:e}=x(),n=Rt(),a=E(h=>h.currentImage),s=E(h=>h.importLocalImageToHistory),r=E(h=>h.addHistoryItem),l=E(h=>h.selectHistory),o=E(h=>h.showToast),d=m.useRef(!1),c=m.useRef(0),i=m.useRef(0),g=m.useRef(null),[u,p]=m.useState(()=>Se()),[f,b]=m.useState(null),[v,w]=m.useState("image"),[q,G]=m.useState("image"),[U,L]=m.useState(null),[z,A]=m.useState(!1),[he,H]=m.useState(!1),[V,J]=m.useState(!1),[j,M]=m.useState(!1),[lt,R]=m.useState("reconnecting"),[me,pe]=m.useState(null),W=m.useCallback(h=>h instanceof Error?h.message:String(h),[]),ot=m.useCallback(()=>M(!1),[]),it=m.useCallback(()=>M(h=>!h),[]),T=m.useCallback(h=>{o(e("agent.workspaceActionFailed",{reason:W(h)}),!0)},[W,o,e]),X=m.useCallback(h=>{p({...Se(),...h}),b(h.selectedSessionId??null)},[]),ae=m.useCallback((h,y)=>{const S={...Se(),...h};p(_=>Un(_,S,y)),b(h.selectedSessionId??null)},[]),$=m.useCallback(h=>{c.current+=1,X(h)},[X]),ct=m.useCallback((h,y)=>{c.current+=1,ae(h,y)},[ae]),ut=()=>{i.current+=1,R("generating")},dt=()=>{i.current=Math.max(0,i.current-1),i.current===0&&R("ready")},se=m.useCallback(async h=>{const y=++c.current;R("reconnecting"),pe(null);const S=await Re(h);if(y!==c.current)return;if(S.sessions.length>0){X(S),R("ready");return}const _=await $e({title:e("agent.newSession"),currentImage:a});y===c.current&&(X(_),R("ready"))},[X,a,e]),Ie=m.useCallback(async h=>{const y=++c.current,S=await Re(h);y===c.current&&(ae(S,new Set),R("ready"))},[ae]);m.useEffect(()=>{d.current||(d.current=!0,se().catch(h=>{pe(W(h)),R("reconnecting")}))},[W,se]);const Y=u.sessions.find(h=>h.id===f)??null,Z=u.currentImageId?u.imagesById[u.currentImageId]??null:null,re=f?(u.imageIdsBySession[f]??[]).map(h=>u.imagesById[h]).filter(h=>!!h):[],fe=Y?u.turnsBySession[Y.id]??[]:[],gt=fe.filter(ie).length,ht=fe.filter(h=>!ie(h)),K=f?u.queueBySession[f]??[]:[],k=f?u.runSummaryBySession[f]:void 0,mt=K.filter(h=>h.status==="queued"||h.status==="running").length,pt=zn({turns:fe,queueItems:K,runSummary:k,localPendingCount:gt}),ee=Pe(Y?.generationSettings),ft=lt==="reconnecting"?"reconnecting":i.current>0||k?.status==="queued"||k?.status==="running"?"generating":"ready",xt=n!=="mobile-chat-image-sheet",xe=n==="desktop-three-pane"||n==="desktop-rail",Ae=n==="tablet-stacked"||n==="mobile-chat-image-sheet",bt=n==="desktop-three-pane"||n==="desktop-rail";m.useEffect(()=>{const h=Object.keys(u.imagesById);if(!g.current){(h.length>0||u.sessions.length>0)&&(g.current=new Set(h));return}const y=g.current,S=h.filter(N=>!y.has(N)).map(N=>u.imagesById[N]).filter(N=>!!N);if(S.length===0)return;for(const N of h)y.add(N);const _=S.map(Qn);for(const N of _)r(N);const P=_.reduce((N,I)=>(I.createdAt??0)>(N.createdAt??0)?I:N);l(P)},[u.imagesById,u.sessions.length,r,l]),m.useEffect(()=>{p(h=>{if(i.current>0)return h;let y=!1;const S={...h.turnsBySession};for(const[_,P]of Object.entries(S)){if(P.filter(ie).length===0)continue;const I=h.runSummaryBySession[_];I?.status==="queued"||I?.status==="running"||(S[_]=P.filter(je=>!ie(je)),y=!0)}return y?{...h,turnsBySession:S}:h})},[u.turnsBySession,u.runSummaryBySession]),m.useEffect(()=>{if(!f)return;const h=k?.status==="queued"||k?.status==="running",y=window.setInterval(()=>{Ie(f).catch(()=>R("reconnecting"))},h?1500:4e3);return()=>window.clearInterval(y)},[Ie,f,k?.queuedCount,k?.runningCount,k?.status]);const Le=h=>{A(!1),J(!1),se(h).catch(T)},Te=()=>{$e({title:e("agent.newSession"),currentImage:null}).then($).catch(T)},jt=h=>{const y=u.sessions.find(_=>_.id===h),S=window.prompt(e("agent.renameSession"),y?.title??"");S?.trim()&&ce(h,{title:S.trim()}).then($).catch(T)},yt=h=>{const y=u.sessions.find(S=>S.id===h);!y||!window.confirm(e("agent.deleteConfirm",{title:y.title}))||kt(h).then($).catch(T)},le=h=>{if(!f)return;const y=Pe({...ee,...h});p(S=>({...S,sessions:S.sessions.map(_=>_.id===f?{..._,generationSettings:y,webSearchEnabled:y.webSearchEnabled}:_)})),ce(f,{generationSettings:h}).then($).catch(T)},vt=h=>{le({webSearchEnabled:h})},te=h=>{if(!f||u.currentImageId===h)return;const y=f;p(S=>({...S,currentImageId:h})),ce(y,{currentImageId:h}).then($).catch(T)},Me=h=>{L({id:Date.now(),text:h})},be=h=>{At(h).then($).catch(T)},oe=h=>{Lt(h).then($).catch(T)},Ee=k?.status==="error"?K.find(h=>h.status==="failed")?.id:void 0,St=Ee?()=>oe(Ee):void 0,_t=h=>{!f||h.length===0||$n({sessionId:f,files:h,importLocalImageToHistory:s,applyWorkspace:$}).catch(T)},wt=h=>{if(!f)return;const y=f,S=Date.now(),_=Dn(h,S),P=Bn(e("agent.pending"),S+1),N=new Set([_.id]);ut(),p(I=>Fn(I,y,[_,P])),It(y,h,ee).then(I=>ct(I.workspace,N)).catch(I=>{const qe=W(I);p(je=>Gn(je,y,P.id,qe)),T(I)}).finally(dt)};return me?t.jsxs("main",{className:`agent-workspace agent-workspace--${n} agent-workspace--boot-error`,"data-layout":n,"aria-label":e("agent.workspace"),children:[Ae?t.jsx(Ke,{layoutMode:n,session:null,currentImage:null,activeJobCount:0,onOpenSessions:()=>{},onOpenImage:()=>{},onOpenQueue:()=>{}}):null,t.jsxs("section",{className:"agent-workspace__boot-error",role:"alert",children:[t.jsx("strong",{children:e("agent.bootFailed")}),t.jsx("span",{title:me,children:me}),t.jsx("button",{type:"button",onClick:()=>{se().catch(h=>pe(W(h)))},children:e("agent.bootRetry")})]})]}):t.jsxs("main",{className:`agent-workspace agent-workspace--${n}${xe&&j?" agent-workspace--tools-docked":""}`,"data-layout":n,"aria-label":e("agent.workspace"),children:[bt?t.jsx("div",{className:"agent-session-rail-wrap",children:t.jsx(qn,{sessions:u.sessions,selectedId:f??"",imagesById:u.imagesById,runSummaryBySession:u.runSummaryBySession,onCreate:Te,onSelect:Le,onOpenDrawer:()=>A(!0)})}):null,Ae?t.jsx(Ke,{layoutMode:n,session:Y,currentImage:Z,activeJobCount:mt,onOpenSessions:()=>A(!0),onOpenImage:()=>H(!0),onOpenQueue:()=>J(!0)}):null,t.jsxs("div",{className:"agent-workspace__body",children:[t.jsx(pn,{session:Y,turns:ht,imagesById:u.imagesById,currentImageId:u.currentImageId,runtimeStatus:ft,runProgress:pt,settings:ee,insertedPrompt:U,onSettingsChange:le,onOpenModelTab:()=>{G("model"),M(!0)},onWebSearchChange:vt,onAttachFiles:_t,onImageSelect:te,onSend:wt,onRetryRun:St}),xe?t.jsx(Rn,{currentImage:Z,images:re,onImageSelect:te,onOpenPanel:it,toolsPanelOpen:j}):xt?t.jsx(We,{currentImage:Z,images:re,contextTab:v,sidebarTab:q,queueItems:K,runSummary:k,settings:ee,onContextTabChange:w,onSidebarTabChange:G,onImageSelect:te,onSettingsChange:le,onInsertPrompt:Me,onCancelQueue:be,onRetryQueue:oe}):null,xe&&j?t.jsx(We,{overlay:!0,onClose:ot,currentImage:Z,images:re,contextTab:v,sidebarTab:q,queueItems:K,runSummary:k,settings:ee,onContextTabChange:w,onSidebarTabChange:G,onImageSelect:te,onSettingsChange:le,onInsertPrompt:Me,onCancelQueue:be,onRetryQueue:oe}):null]}),t.jsx(En,{open:z,sessions:u.sessions,selectedId:f??"",imagesById:u.imagesById,runSummaryBySession:u.runSummaryBySession,onClose:()=>A(!1),onCreate:Te,onSelect:Le,onRename:jt,onDelete:yt}),t.jsx(yn,{open:he,currentImage:Z,images:re,activeTab:v,onTabChange:w,onImageSelect:te,onClose:()=>H(!1)}),t.jsx(Cn,{open:V,items:K,summary:k,onCancel:be,onRetry:oe,onClose:()=>J(!1)})]})}export{Jn as AgentWorkspace};
@@ -0,0 +1 @@
1
+ .assetgen-workflow-tabs{display:inline-flex;align-items:center;gap:6px;width:fit-content;max-width:100%;margin:12px 0;padding:3px;border:1px solid var(--hairline-soft);border-radius:var(--r-md);background:var(--control-bg)}.assetgen-workflow-tabs button,.sprite-recipe-workspace button{min-height:44px}.assetgen-workflow-tabs button{min-width:0;padding:8px 12px;border:1px solid transparent;border-radius:var(--r-xs);background:transparent;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assetgen-workflow-tabs button[aria-selected=true]{border-color:var(--border-strong);background:var(--surface-2);color:var(--text)}.assetgen-workflow-tabs button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.sprite-recipe-workspace{display:grid;grid-template-columns:minmax(280px,380px) 1fr;gap:24px;padding:20px}.sprite-recipe-form{display:grid;gap:12px}.sprite-recipe-form label,.sprite-recipe-form fieldset{display:grid;gap:6px}.sprite-state{display:grid;grid-template-columns:1fr 80px auto;gap:8px}.sprite-anchor-gate img,.sprite-row-list img{max-width:100%;max-height:320px;object-fit:contain}.sprite-anchor-dialog{position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);z-index:40;max-width:440px;padding:24px;background:var(--surface);border:1px solid var(--border);box-shadow:0 18px 50px #0000004d}.sprite-row-list article{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--border)}@media(max-width:760px){.sprite-recipe-workspace{grid-template-columns:1fr;padding:12px}.sprite-state{grid-template-columns:1fr}.sprite-anchor-dialog{width:calc(100% - 32px)}}@media(max-width:480px){.assetgen-workflow-tabs{width:100%}.assetgen-workflow-tabs button{flex:1 1 0;padding-inline:6px}}
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SpriteRecipeWorkspace-D8gHgnt8.js","assets/index-DTEhasVd.js","assets/index-DB9EfKr6.css","assets/KeyingPanel-CtGvO6-u.js","assets/useAgentDialogFocus-Dyj_bA5Q.js"])))=>i.map(i=>d[i]);
2
+ import{u as G,b as n,a as p,ad as z,j as e,ae as U,ac as Q,p as Z,af as J,ag as X,ah as Y}from"./index-DTEhasVd.js";import{K as ee,A as se}from"./KeyingPanel-CtGvO6-u.js";const te=48;function ae({selectedAssetId:t,onPreview:g,onAssetsLoaded:c}){const{t:r}=G(),l=n(d=>d.selectedProjectId),i=n(d=>d.assetGenItems.length),[m,h]=p.useState([]),[v,u]=p.useState(!1);return p.useEffect(()=>{let d=!1;return z({kind:null,folderId:l,tag:null,q:"",limit:te}).then(b=>{if(d)return;const o=b.assets.filter(j=>j.filePath&&(j.kind==="image"||j.kind==="video"));h(o),c?.(o.length),u(!1)}).catch(()=>{d||u(!0)}),()=>{d=!0}},[l,i]),e.jsxs("aside",{className:"assetgen-rail","aria-label":r("assetGen.railTitle"),children:[e.jsx("h2",{className:"assetgen-rail__title",children:r("assetGen.railTitle")}),v?e.jsx("p",{className:"assetgen-rail__empty",children:r("assetGen.railError")}):m.length===0?e.jsx("p",{className:"assetgen-rail__empty",children:r("assetGen.railEmpty")}):e.jsx("div",{className:"assetgen-rail__list",role:"listbox","aria-label":r("assetGen.railTitle"),children:(()=>{const d=new Map;for(const o of m)d.set(o.name,(d.get(o.name)??0)+1);const b=new Map;return m.map(o=>{const j=o.filePath?U(o.filePath):null;if(!j)return null;const a=t===o.id,k=d.get(o.name)??1,x=(b.get(o.name)??0)+1;b.set(o.name,x);const f=k>1?`#${x} ${o.name}`:o.name;return e.jsxs("button",{type:"button",role:"option","aria-selected":a,className:`assetgen-rail__tile${a?" is-selected":""}`,title:f,onClick:()=>g(Q(o),o.id),children:[o.kind==="video"?e.jsx("video",{src:j,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):e.jsx("img",{src:j,alt:"",loading:"lazy",decoding:"async"}),e.jsx("span",{className:"assetgen-rail__name",children:f})]},o.id)})})()})]})}const ne=[{value:"chroma-green",swatch:"#00c853",labelKey:"assetGen.bgChroma"},{value:"white",swatch:"#ffffff",labelKey:"assetGen.bgWhite"},{value:"black",swatch:"#111111",labelKey:"assetGen.bgBlack"},{value:"transparent",swatch:null,labelKey:"assetGen.bgTransparent"}];function le(){const{t}=G(),g=n(i=>i.assetGenBackground),c=n(i=>i.setAssetGenBackground),r=n(i=>i.assetGenProvider),l=r!=="grok"&&r!=="grok-api";return e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-bg-label",children:t("assetGen.background")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-bg-label",children:ne.map(i=>{const m=i.value==="transparent"&&!l;return e.jsxs("button",{type:"button",className:g===i.value?"is-active":"","aria-pressed":g===i.value,disabled:m,...m?{title:t("assetGen.bgTransparentGptOnly")}:{},onClick:()=>c(i.value),children:[e.jsx("span",{className:i.swatch===null?"assetgen-bg-picker__swatch assetgen-bg-picker__swatch--alpha":"assetgen-bg-picker__swatch",...i.swatch===null?{}:{style:{background:i.swatch}},"aria-hidden":"true"}),t(i.labelKey)]},i.value)})}),e.jsx("p",{className:"assetgen-field__hint",children:t(l?g==="transparent"?"assetGen.backgroundHintTransparent":"assetGen.backgroundHint":"assetGen.bgTransparentGptOnly")})]})}const re=[{value:"oauth",labelKey:"assetGen.modelGpt"},{value:"grok",labelKey:"assetGen.modelGrok"}];function ie(){const{t}=G(),g=n(l=>l.assetGenProvider),c=n(l=>l.setAssetGenProvider),r=g==="grok"||g==="grok-api"?"grok":"oauth";return e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-model-label",children:t("assetGen.model")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-model-label",children:re.map(l=>e.jsx("button",{type:"button",className:r===l.value?"is-active":"","aria-pressed":r===l.value,onClick:()=>c(l.value),children:t(l.labelKey)},l.value))})]})}function oe({onClose:t,onSelect:g}){const{t:c}=G(),r=n(u=>u.assetsFolders),[l,i]=p.useState(""),m=p.useRef(null),h=Z(!0,t),v=p.useMemo(()=>{const u=r.filter(b=>b.parentId===null),d=l.trim().toLowerCase();return d?u.filter(b=>b.name.toLowerCase().includes(d)):u},[r,l]);return e.jsx("div",{className:"assetgen-popup-backdrop",onClick:t,children:e.jsxs("div",{ref:h,className:"assetgen-popup",role:"dialog","aria-modal":"true","aria-label":c("project.search"),onClick:u=>u.stopPropagation(),children:[e.jsx("input",{ref:m,type:"search",value:l,placeholder:c("project.searchPlaceholder"),"aria-label":c("project.search"),onChange:u=>i(u.target.value)}),e.jsxs("ul",{role:"listbox","aria-label":c("project.select"),children:[e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{g(null),t()},children:c("project.unassigned")})}),v.map(u=>e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{g(u.id),t()},children:u.name})},u.id)),v.length===0&&l.trim()?e.jsx("li",{className:"assetgen-popup__empty",children:c("project.searchEmpty")}):null]}),e.jsx("button",{type:"button",className:"assetgen-popup__close",onClick:t,children:c("project.close")})]})})}function ce(){return e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"})})}function de(){const{t}=G(),g=n(a=>a.assetsFolders),c=n(a=>a.selectedProjectId),r=n(a=>a.setSelectedProject),l=n(a=>a.loadAssetFolders),i=n(a=>a.createAssetFolder),[m,h]=p.useState(!1),[v,u]=p.useState(!1),d=p.useRef(null);p.useEffect(()=>{l()},[l]),p.useEffect(()=>{c&&g.length>0&&!g.some(a=>a.id===c)&&r(null)},[g,c,r]),p.useEffect(()=>{if(!m)return;const a=x=>{d.current&&!d.current.contains(x.target)&&h(!1)},k=x=>{x.key==="Escape"&&h(!1)};return window.addEventListener("mousedown",a),window.addEventListener("keydown",k),()=>{window.removeEventListener("mousedown",a),window.removeEventListener("keydown",k)}},[m]);const b=g.filter(a=>a.parentId===null),o=b.find(a=>a.id===c),j=async()=>{const a=window.prompt(t("project.newPrompt"));if(!a||!a.trim())return;if(await i(a.trim(),null)){await l();const x=n.getState().assetsFolders.find(f=>f.parentId===null&&f.name===a.trim());x&&r(x.id)}h(!1)};return e.jsxs("div",{className:"assetgen-field assetgen-project",ref:d,children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-project-label",children:t("project.select")}),e.jsxs("button",{type:"button",className:"assetgen-project__trigger","aria-haspopup":"listbox","aria-expanded":m,"aria-labelledby":"assetgen-project-label",onClick:()=>h(a=>!a),children:[e.jsx(ce,{}),o?o.name:t("project.unassigned"),e.jsx("span",{className:"assetgen-project__caret","aria-hidden":"true",children:"▾"})]}),m?e.jsxs("ul",{className:"assetgen-project__menu",role:"listbox","aria-labelledby":"assetgen-project-label",children:[e.jsx("li",{children:e.jsx("button",{type:"button","aria-selected":c===null,onClick:()=>{r(null),h(!1)},children:t("project.unassigned")})}),b.map(a=>e.jsx("li",{children:e.jsx("button",{type:"button","aria-selected":c===a.id,onClick:()=>{r(a.id),h(!1)},children:a.name})},a.id)),e.jsx("li",{className:"assetgen-project__menu-divider","aria-hidden":"true"}),e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{j()},children:t("project.new")})}),e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{h(!1),u(!0)},children:t("project.search")})})]}):null,v?e.jsx(oe,{onClose:()=>u(!1),onSelect:a=>r(a)}):null]})}const ue=p.lazy(()=>Y(()=>import("./SpriteRecipeWorkspace-D8gHgnt8.js"),__vite__mapDeps([0,1,2,3,4])).then(t=>({default:t.SpriteRecipeWorkspace})));function pe(){const{t}=G(),g=n(s=>s.assetGenPrompt),c=n(s=>s.setAssetGenPrompt),r=n(s=>s.assetGenKind),l=n(s=>s.setAssetGenKind),i=n(s=>s.assetGenProvider),m=n(s=>s.assetGenVideoDuration),h=n(s=>s.setAssetGenVideoDuration),v=n(s=>s.assetGenVideoResolution),u=n(s=>s.setAssetGenVideoResolution),d=n(s=>s.assetGenVideoAspect),b=n(s=>s.setAssetGenVideoAspect),o=n(s=>s.activeGenerations),j=n(s=>s.assetGenItems),a=n(s=>s.generateAssetGen),k=n(s=>s.assetGenSaveFailures),x=n(s=>s.retryAssetGenSave),f=n(s=>s.setKeyingTarget),A=n(s=>s.assetGenLastError),F=n(s=>s.setAssetGenLastError),I=n(s=>s.setUIMode),_=n(s=>s.assetGenWorkflow),S=n(s=>s.setAssetGenWorkflow),V=J(),[E,C]=p.useState(null),[M,T]=p.useState(null),[O,D]=p.useState(0),W=p.useCallback(()=>{C(null),T(null)},[]),B=p.useCallback((s,y)=>{T(y),C(s)},[]),H=p.useCallback(()=>{document.getElementById("assetgen-prompt")?.focus()},[]),w=i==="grok"||i==="grok-api",N=r==="video"&&!w?"image":r,K=g.trim().length>0,L=e.jsxs("div",{className:"assetgen-workflow-tabs",role:"tablist","aria-label":t("sprite.tabs.label"),onKeyDown:V,children:[e.jsx("button",{type:"button",role:"tab","aria-selected":_==="generate",tabIndex:_==="generate"?0:-1,onClick:()=>S("generate"),children:t("sprite.tabs.generate")}),e.jsx("button",{type:"button",role:"tab","aria-selected":_==="sprite",tabIndex:_==="sprite"?0:-1,onClick:()=>S("sprite"),children:t("sprite.tabs.sprite")})]});return _==="sprite"?e.jsxs("section",{className:"assetgen-workspace","aria-labelledby":"assetgen-title",children:[e.jsxs("aside",{className:"assetgen-form",children:[e.jsx("h1",{id:"assetgen-title",children:t("sprite.title")}),e.jsx("p",{className:"assetgen-form__lede",children:t("sprite.lede")}),L]}),e.jsx("main",{className:"assetgen-results",children:e.jsx(p.Suspense,{fallback:e.jsx("p",{role:"status",children:t("sprite.loading")}),children:e.jsx(ue,{})})})]}):e.jsxs("section",{className:"assetgen-workspace","aria-labelledby":"assetgen-title",children:[e.jsxs("aside",{className:"assetgen-form",children:[e.jsx("h1",{id:"assetgen-title",children:t("assetGen.title")}),e.jsx("p",{className:"assetgen-form__lede",children:t("assetGen.lede")}),L,e.jsx(de,{}),e.jsxs("div",{className:"assetgen-field",children:[e.jsx("label",{className:"assetgen-field__label",htmlFor:"assetgen-prompt",children:t("assetGen.prompt")}),e.jsx("textarea",{id:"assetgen-prompt",value:g,rows:4,placeholder:t("assetGen.promptPlaceholder"),onChange:s=>c(s.target.value)})]}),e.jsx(le,{}),e.jsx(ie,{}),e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-kind-label",children:t("assetGen.kind")}),e.jsxs("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-kind-label",children:[e.jsx("button",{type:"button",className:N==="image"?"is-active":"","aria-pressed":N==="image",onClick:()=>l("image"),children:t("assetGen.kindImage")}),e.jsx("button",{type:"button",className:N==="video"?"is-active":"","aria-pressed":N==="video",disabled:!w,title:w?void 0:t("assetGen.videoGrokOnly"),onClick:()=>l("video"),children:t("assetGen.kindVideo")})]}),w?null:e.jsx("p",{className:"assetgen-field__hint",children:t("assetGen.videoGrokOnly")})]}),N==="video"?e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-video-label",children:t("assetGen.videoOptions")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoDuration"),children:[3,5,8].map(s=>e.jsxs("button",{type:"button",className:m===s?"is-active":"","aria-pressed":m===s,onClick:()=>h(s),children:[s,"s"]},s))}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoResolution"),children:["480p","720p"].map(s=>e.jsx("button",{type:"button",className:v===s?"is-active":"","aria-pressed":v===s,onClick:()=>u(s),children:s},s))}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoAspect"),children:["1:1","16:9","9:16"].map(s=>e.jsx("button",{type:"button",className:d===s?"is-active":"","aria-pressed":d===s,onClick:()=>b(s),children:s},s))})]}):null,e.jsx("button",{type:"button",className:"assetgen-generate",disabled:!K,onClick:()=>{a()},children:o>0?t("assetGen.generating"):t("assetGen.generate")}),K?null:e.jsx("p",{className:"assetgen-generate__hint",children:t("assetGen.generateHint")}),e.jsx(X,{})]}),e.jsxs("main",{className:"assetgen-results",children:[e.jsxs("div",{className:"assetgen-results__main",children:[A?e.jsxs("div",{className:"assetgen-error",role:"alert",children:[e.jsxs("div",{className:"assetgen-error__text",children:[e.jsx("strong",{children:t("assetGen.errorTitle")}),e.jsx("span",{children:A}),e.jsx("span",{className:"assetgen-error__hint",children:t("assetGen.errorHint")})]}),e.jsx("button",{type:"button",className:"assetgen-error__dismiss",onClick:()=>F(null),children:t("assetGen.errorDismiss")})]}):null,j.length===0?e.jsx("div",{className:"assetgen-empty",children:O>0?e.jsxs(e.Fragment,{children:[e.jsx("h2",{children:t("assetGen.emptySessionTitle")}),e.jsx("p",{children:t("assetGen.emptySessionBody")}),e.jsx("button",{type:"button",className:"assetgen-empty__cta",onClick:()=>I("assets"),children:t("assetGen.emptySessionCta")})]}):e.jsxs(e.Fragment,{children:[e.jsx("h2",{children:t("assetGen.emptyTitle")}),e.jsx("p",{children:t("assetGen.emptyBody")}),e.jsx("button",{type:"button",className:"assetgen-empty__cta",onClick:H,children:t("assetGen.emptyCta")})]})}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"assetgen-saved-hint",children:[t("assetGen.savedHint")," ",e.jsx("button",{type:"button",className:"assetgen-saved-hint__link",onClick:()=>I("assets"),children:t("assetGen.savedLink")})]}),e.jsx("div",{className:"assetgen-grid",children:j.map(s=>{const y=s.kind==="edit",R=s.backgroundPreset==="transparent",P=s.mediaType==="video",$=t(P?"assetGen.videoFallback":"assetGen.imageFallback"),q=t(P?"assetGen.previewVideo":"assetGen.previewImage",{prompt:s.prompt?.trim()||$});return e.jsxs("figure",{className:`assetgen-tile${y?" is-keyed":""}${R?" is-alpha":""}`,children:[y?e.jsx("span",{className:"assetgen-tile__badge",children:t("keying.resultBadge")}):null,e.jsxs("button",{type:"button",className:"assetgen-tile__media","aria-label":q,onClick:()=>C(s),children:[P?e.jsx("video",{src:s.url||s.image,poster:s.thumb||void 0,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):e.jsx("img",{src:s.url||s.image,alt:"",loading:"lazy"}),e.jsx("span",{className:"assetgen-tile__open-hint","aria-hidden":"true",children:t(P?"assetGen.openHintVideo":"assetGen.openHintImage")})]}),e.jsx("figcaption",{title:s.prompt,children:s.prompt}),!y&&!R?e.jsx("button",{type:"button",className:"assetgen-tile__key",onClick:()=>f(s),children:t("keying.open")}):null,!y&&s.requestId&&k.includes(s.requestId)?e.jsx("button",{type:"button",className:"assetgen-tile__retry",onClick:()=>{x(s.requestId)},children:t("project.saveRetry")}):null]},`${s.requestId}-${s.filename??s.createdAt}`)})})]})]}),e.jsx(ae,{selectedAssetId:M,onPreview:B,onAssetsLoaded:D})]}),e.jsx(ee,{}),E?e.jsx(se,{item:E,onClose:W}):null]})}const be=Object.freeze(Object.defineProperty({__proto__:null,AssetGenWorkspace:pe},Symbol.toStringTag,{value:"Module"}));export{be as A,de as P};
@@ -0,0 +1 @@
1
+ .element-detail{min-width:300px;max-width:420px;padding:18px;border-left:1px solid var(--hairline-soft);background:color-mix(in srgb,var(--surface) 90%,transparent);color:var(--text);overflow:auto}.element-detail__header,.element-detail__section-heading,.element-detail__actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.element-detail__header{margin-bottom:18px}.element-detail__header span,.element-detail__section-heading p,.element-detail__kind-help,.element-ref-grid__undo{color:var(--text-dim);font-size:12px}.element-detail__header h2{margin-top:3px;font-size:19px}.element-detail__status{padding:3px 6px;border-radius:var(--r-xs);background:var(--surface-2)}.element-detail__field,.element-detail__section{display:grid;gap:7px;margin-top:16px;font-size:12px;font-weight:650}.element-detail input,.element-detail textarea{width:100%;border:1px solid var(--border);border-radius:var(--r-md);background:var(--control-bg);color:var(--text);font:inherit}.element-detail__field input{height:36px;padding:0 10px}.element-detail textarea{padding:9px 10px;resize:vertical;line-height:1.45}.element-detail__kind-help{margin:6px 0 0;line-height:1.45}.element-detail__section-heading h3,.element-ref-grid h3{font-size:13px}.element-detail__section-heading p{margin-top:3px;font-weight:400;line-height:1.4}.element-detail__section-heading>span,.element-detail output{flex:none;color:var(--text-muted);font:500 11px/1 var(--mono)}.element-detail__note-preview{padding:8px;border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-dim);font-weight:400;line-height:1.4;white-space:pre-wrap}.element-detail__strength{accent-color:var(--accent)}.element-detail__reset{justify-self:start;border:0;background:transparent;color:var(--text-dim);font:500 11px/1 var(--mono);cursor:pointer}.element-detail__error{margin-top:14px;color:var(--red);font-size:12px}.element-detail__actions{flex-wrap:wrap;margin-top:18px}.element-detail__actions button,.element-ref-card button,.element-ref-grid__undo button{min-height:32px;padding:0 9px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text);font:500 11px/1 var(--mono);cursor:pointer}.element-detail__actions .element-detail__save{background:var(--accent);color:var(--accent-ink)}.element-detail button:disabled{cursor:not-allowed;opacity:.45}.element-detail .is-danger{color:var(--red)}.element-ref-grid{display:grid;gap:9px;margin-top:18px}.element-ref-grid__items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.element-ref-card{min-width:0;padding:6px;border:1px solid var(--hairline-soft);border-radius:var(--r-md);background:var(--surface-2)}.element-ref-card.is-dragging{opacity:.5}.element-ref-card.is-duplicate{border-color:var(--red);box-shadow:0 0 0 2px color-mix(in srgb,var(--red) 22%,transparent)}.element-ref-card__image{position:relative;aspect-ratio:1;overflow:hidden;border-radius:var(--r-xs);background:var(--bg)}.element-ref-card__image img{width:100%;height:100%;object-fit:cover}.element-ref-card__image span{position:absolute;top:5px;left:5px;padding:3px 5px;border-radius:var(--r-xs);background:color-mix(in srgb,var(--bg) 82%,transparent);font-size:10px}.element-ref-card__controls{display:grid;gap:6px;margin-top:7px}.element-ref-card__controls label{display:grid;gap:4px;color:var(--text-dim);font-size:10px}.element-ref-card__controls input{height:27px;padding:0 6px;font-size:11px}.element-ref-card__controls>div{display:flex;gap:4px}.element-ref-card button{min-height:25px;padding:0 6px;font-size:10px}.element-ref-grid__undo{display:flex;align-items:center;justify-content:space-between;padding:8px;border-radius:var(--r-sm);background:var(--accent-soft)}.element-ref-grid__undo button{min-height:25px}.element-detail input:focus-visible,.element-detail textarea:focus-visible,.element-detail button:focus-visible,.element-ref-card:focus-within{outline:2px solid var(--focus-ring);outline-offset:2px}@media(max-width:800px){.element-detail{max-width:none;border-top:1px solid var(--hairline-soft);border-left:0}.element-ref-grid__items{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:480px){.element-ref-grid__items{grid-template-columns:repeat(2,minmax(0,1fr))}}
@@ -0,0 +1 @@
1
+ import{u as I,b as v,a as d,j as s,a1 as Q,a2 as q,m as de,a3 as ce,a4 as ue,a5 as me,a6 as he,o as pe,a7 as fe,a8 as ge,a9 as xe,aa as be,J as ve,t as je,q as ye,v as _e,ab as we,ac as ke,p as Ne}from"./index-DTEhasVd.js";import{K as Ae,A as Se}from"./KeyingPanel-CtGvO6-u.js";import"./useAgentDialogFocus-Dyj_bA5Q.js";function Ie({folder:e,depth:a}){const{t:r}=I(),l=v(t=>t.assetsFilters.folderId),p=v(t=>t.setAssetsFilters),f=v(t=>t.renameAssetFolder),j=v(t=>t.deleteAssetFolder),o=v(t=>t.showToast),[i,g]=d.useState(!1),[_,h]=d.useState(e.name),[x,b]=d.useState(!1),k=l===e.id;async function m(){const t=_.trim();if(!t||t===e.name){h(e.name),g(!1);return}await f(e.id,t)||o(r("assets.actionFailed"),!0),g(!1)}async function u(){if(!x){b(!0);return}await j(e.id)||o(r("assets.actionFailed"),!0),b(!1)}return s.jsxs("div",{className:"assets-folder-row",style:{"--folder-depth":a},children:[i?s.jsx("input",{className:"assets-folder-input",value:_,autoFocus:!0,"aria-label":r("assets.renameFolder"),onChange:t=>h(t.target.value),onBlur:()=>{m()},onKeyDown:t=>{t.key==="Enter"&&m(),t.key==="Escape"&&(h(e.name),g(!1))}}):s.jsx("button",{type:"button",className:`assets-folder-row__name${k?" is-active":""}`,"aria-current":k?"page":void 0,onClick:()=>p({folderId:e.id,kind:null}),children:e.name}),!i&&s.jsxs("span",{className:"assets-folder-row__actions",children:[s.jsx("button",{type:"button","aria-label":r("assets.renameFolder"),onClick:()=>g(!0),children:s.jsx(Q,{})}),s.jsx("button",{type:"button","aria-label":r(x?"assets.confirmDelete":"assets.deleteFolder"),className:x?"is-danger is-armed":"",onClick:()=>{u()},children:x?r("assets.confirmDelete"):"×"})]})]})}function Ce(){const{t:e}=I(),a=v(m=>m.assetsFolders),r=v(m=>m.assetsFilters.folderId),l=v(m=>m.assetsFilters.kind),p=v(m=>m.setAssetsFilters),f=v(m=>m.createAssetFolder),j=v(m=>m.showToast),[o,i]=d.useState(!1),[g,_]=d.useState(""),h=r===null&&l!=="element",x=r===null&&l==="element",b=d.useMemo(()=>{const m=[],u=(t,c)=>a.filter(y=>y.parentId===t).forEach(y=>{m.push({folder:y,depth:c}),u(y.id,c+1)});return u(null,0),m},[a]);async function k(){const m=g.trim();if(!m){i(!1);return}await f(m,r)||j(e("assets.actionFailed"),!0),_(""),i(!1)}return s.jsxs("aside",{className:"assets-folders","aria-label":e("assets.rootFolder"),children:[s.jsxs("div",{className:"assets-folders__heading",children:[s.jsx("span",{children:e("assets.rootFolder")}),s.jsx("button",{type:"button","aria-label":e("assets.newFolder"),onClick:()=>i(!0),children:"+"})]}),s.jsxs("div",{className:"assets-folders__rows",children:[s.jsx("button",{type:"button",className:`assets-folder-all${h?" is-active":""}`,"aria-current":h?"page":void 0,onClick:()=>p({folderId:null,kind:null}),children:e("assets.allAssets")}),s.jsxs("button",{type:"button",className:`assets-folder-all assets-folder-elements${x?" is-active":""}`,"aria-current":x?"page":void 0,onClick:()=>p({folderId:null,kind:"element"}),children:[s.jsx("span",{className:"assets-folder-elements__glyph","aria-hidden":"true",children:"@"}),e("assets.elementLibrary")]}),b.map(({folder:m,depth:u})=>s.jsx(Ie,{folder:m,depth:u},m.id)),o&&s.jsx("input",{className:"assets-folder-input assets-folder-input--new",value:g,autoFocus:!0,"aria-label":e("assets.newFolder"),placeholder:e("assets.newFolder"),onChange:m=>_(m.target.value),onBlur:()=>{g.trim()||i(!1)},onKeyDown:m=>{m.key==="Enter"&&k(),m.key==="Escape"&&(_(""),i(!1))}})]})]})}let T={status:"idle",elements:[]},P=null;const G=new Set;function M(e){T=e,G.forEach(a=>a())}function Fe(e){return G.add(e),()=>G.delete(e)}function O(e=!1){return!e&&T.status==="ready"?Promise.resolve(!0):P||(M({...T,status:"loading"}),P=de().then(a=>(M({status:"ready",elements:a}),!0)).catch(a=>(console.error("[ElementMembership] load failed",a),M({...T,status:"error"}),!1)).finally(()=>{P=null}),P)}function Te(e){const a=[e,...T.elements.filter(r=>r.id!==e.id)];M({status:"ready",elements:a})}function Y(e){M({status:"ready",elements:T.elements.filter(a=>a.id!==e)})}function Ee(e){e.stopPropagation()}function De(e){e.stopPropagation()}function Pe(e){(e.key==="Enter"||e.key===" ")&&e.stopPropagation()}async function Me(e,a){if(a){await ce(a.id),Y(a.id);return}const{asset:r}=await ue({result:{filePath:e.filePath??void 0},sourceAssetId:e.id,elementKind:"character",name:e.name,notes:e.notes??void 0,folderId:e.folderId,tags:[me(e.id)]});Te(r)}function z({active:e,busy:a,label:r,onToggle:l}){return s.jsx("button",{type:"button",className:`asset-element-toggle${e?" is-active":""}`,title:r,"aria-label":r,"aria-pressed":e,"aria-busy":a||void 0,disabled:a,onPointerDown:Ee,onDoubleClick:De,onKeyDown:Pe,onClick:p=>{p.stopPropagation(),l()},children:s.jsx("span",{className:"asset-element-toggle__glyph","aria-hidden":"true",children:"@"})})}function Re({item:e}){const{t:a}=I(),r=v(b=>b.showToast),l=v(b=>b.deleteAssetItem),[p,f]=d.useState(!1),j=e.kind==="element",o=j||(e.kind==="image"||e.kind==="video")&&!!e.filePath,i=a("assets.elementLibrary"),g=d.useSyncExternalStore(Fe,()=>T,()=>T),_=!j&&o?q(g.elements,e.id):null,h=p||g.status==="loading"||g.status==="idle";if(d.useEffect(()=>{o&&!j&&O()},[o,j]),j){const b=async()=>{if(!p){f(!0);try{await l(e.id)?Y(e.id):r(a("assets.actionFailed"),!0)}finally{f(!1)}}};return s.jsx(z,{active:!0,busy:p,label:a("assets.removeFromElements"),onToggle:()=>{b()}})}if(!o)return null;async function x(){if(p||g.status==="loading")return;if(g.status!=="ready"&&!await O(!0)){r(a("assets.actionFailed"),!0);return}const b=q(T.elements,e.id);f(!0);try{await Me(e,b)}catch(k){console.error("[ElementMembership] toggle failed",k),r(a("assets.actionFailed"),!0)}finally{f(!1)}}return s.jsx(z,{active:!!_,busy:h,label:i,onToggle:()=>{x()}})}const L=12,V=180;function $e(e){return`/generated/${e.split("/").map(encodeURIComponent).join("/")}`}function Be({item:e,selected:a,onSelect:r,onPreview:l}){const{t:p}=I(),f=v(w=>w.deleteAssetItem),j=v(w=>w.updateAssetItem),o=v(w=>w.showToast),[i,g]=d.useState(!1),[_,h]=d.useState(!1),[x,b]=d.useState(!1),k=d.useRef(null);d.useEffect(()=>{const w=k.current;if(!w||e.kind!=="video"||typeof IntersectionObserver>"u"){b(!0);return}const R=new IntersectionObserver(([D])=>{D?.isIntersecting&&b(!0)},{rootMargin:"300px"});return R.observe(w),()=>R.disconnect()},[e.kind]);const m=e.kind==="element"&&!e.filePath?pe(e):e.filePath,u=m?$e(m):null,t=e.kind==="video",c=p(t?"assetGen.videoFallback":"assetGen.imageFallback"),y=p(t?"assetGen.previewVideo":"assetGen.previewImage",{prompt:e.name.trim()||c});async function A(){if(!i){g(!0);return}await f(e.id)||o(p("assets.actionFailed"),!0),g(!1)}const N=e.tags.includes("starred");async function S(){if(!_){h(!0);try{const w=ge(e.tags,N);await j(e.id,{tags:w})||o(p("assets.actionFailed"),!0)}finally{h(!1)}}}return s.jsxs("article",{ref:k,className:`assets-tile${a?" is-selected":""}`,tabIndex:0,"aria-selected":a,onClick:()=>r?.(e.id),onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&r&&(w.preventDefault(),r(e.id))},children:[s.jsxs("div",{className:"assets-tile__media",children:[u?s.jsxs("button",{type:"button",className:"assets-tile__preview","aria-label":y,onClick:w=>{w.stopPropagation(),r?.(e.id),l?.(e)},onKeyDown:w=>w.stopPropagation(),children:[t?x?s.jsx("video",{src:u,preload:"metadata",muted:!0,playsInline:!0,"aria-hidden":"true"}):null:s.jsx("img",{src:u,alt:"",loading:"lazy",decoding:"async"}),s.jsx("span",{className:"assets-tile__preview-hint","aria-hidden":"true",children:p(t?"assetGen.openHintVideo":"assetGen.openHintImage")})]}):s.jsx("span",{className:"assets-tile__glyph","aria-hidden":"true",children:e.kind.slice(0,1).toUpperCase()}),s.jsx(fe,{variant:"asset",active:N,busy:_,label:p(N?"assets.unstarAsset":"assets.starAsset"),onToggle:S}),s.jsx(Re,{item:e}),s.jsx("button",{type:"button",className:`assets-tile__delete${i?" is-danger":""}`,"aria-label":p(i?"assets.confirmDelete":"assets.deleteAsset"),onClick:w=>{w.stopPropagation(),A()},children:i?p("assets.confirmDelete"):"×"})]}),s.jsxs("div",{className:"assets-tile__meta",children:[s.jsxs("div",{className:"assets-tile__title",children:[s.jsx("strong",{title:e.name,children:e.name}),s.jsx("span",{children:e.kind})]}),e.tags.length>0&&s.jsxs("div",{className:"assets-tile__tags",children:[e.tags.slice(0,2).map(w=>s.jsx("span",{children:w},w)),e.tags.length>2&&s.jsxs("span",{children:["+",e.tags.length-2]})]})]})]})}function Le({onSelectAsset:e,onPreviewAsset:a,selectedId:r}){const{t:l}=I(),p=v(c=>c.assets),f=v(c=>c.assetsLoading),j=v(c=>c.assetsCursor),o=v(c=>c.loadMoreAssets),i=d.useRef(null),[g,_]=d.useState(960),h=Math.max(1,Math.floor((g+L)/(V+L))),x=d.useMemo(()=>Array.from({length:Math.ceil(p.length/h)},(c,y)=>p.slice(y*h,(y+1)*h)),[p,h]);d.useEffect(()=>{const c=i.current;if(!c)return;const y=()=>{const N=getComputedStyle(c),S=(parseFloat(N.paddingLeft)||0)+(parseFloat(N.paddingRight)||0);_(Math.max(0,c.clientWidth-S))};y();const A=new ResizeObserver(y);return A.observe(c),()=>A.disconnect()},[]);const b=Math.max(V,(g-L*(h-1))/h)+70+L,k=he({count:x.length,getScrollElement:()=>i.current,estimateSize:()=>b,overscan:4}),m=k.getVirtualItems(),u=m.at(-1)?.index,t=d.useCallback(()=>{j&&!f&&o()},[j,f,o]);return d.useEffect(()=>{u===x.length-1&&t()},[u,t,x.length]),s.jsxs("div",{ref:i,className:"assets-grid-scroll",children:[s.jsx("div",{className:"assets-grid-virtual",style:{height:k.getTotalSize()},children:m.map(c=>s.jsx("div",{className:"assets-grid-row",style:{transform:`translateY(${c.start}px)`,gridTemplateColumns:`repeat(${h}, minmax(0, 1fr))`},children:x[c.index]?.map(y=>s.jsx(Be,{item:y,selected:y.id===r,onSelect:e,onPreview:a},y.id))},c.key))}),j&&s.jsx("button",{type:"button",className:"assets-load-more",disabled:f,onClick:t,children:l("assets.loadMore")})]})}const Ue=5e3;function Ke({refs:e,onChange:a,maxRefs:r=6}){const{t:l}=I(),[p,f]=d.useState(null),[j,o]=d.useState(null),[i,g]=d.useState(null),_=d.useRef(null);d.useEffect(()=>()=>{_.current&&window.clearTimeout(_.current)},[]);const h=(u,t)=>{if(t<0||t>=e.length||u===t)return;const c=[...e],[y]=c.splice(u,1);c.splice(t,0,y),a(c)},x=u=>{if(e.length<=1)return;const t=e[u];a(e.filter((c,y)=>y!==u)),g({ref:t,index:u}),_.current&&window.clearTimeout(_.current),_.current=window.setTimeout(()=>g(null),Ue)},b=()=>{if(!i||e.some(t=>t.path===i.ref.path))return;const u=[...e];u.splice(Math.min(i.index,u.length),0,i.ref),a(u.slice(0,r)),g(null)},k=(u,t)=>{u.preventDefault();const c=u.dataTransfer.getData("application/ima2-element-ref")||p,y=e.findIndex(S=>S.id===c);if(f(null),y<0||y===t)return;const A=e[y],N=e.find((S,w)=>w!==y&&S.path===A.path);if(N){o(N.id),window.setTimeout(()=>o(null),1200);return}h(y,t)},m=(u,t)=>a(e.map((c,y)=>y===u?{...c,alt:t}:c));return s.jsxs("section",{className:"element-ref-grid","aria-labelledby":"element-refs-title",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{id:"element-refs-title",children:l("element.refsTitle")}),s.jsx("p",{children:l("element.refsHelp")})]}),s.jsxs("span",{children:[e.length," / ",r]})]}),s.jsx("div",{className:"element-ref-grid__items",children:e.map((u,t)=>s.jsxs("div",{className:`element-ref-card${p===u.id?" is-dragging":""}${j===u.id?" is-duplicate":""}`,draggable:!0,onDragStart:c=>{f(u.id),c.dataTransfer.setData("application/ima2-element-ref",u.id),c.dataTransfer.effectAllowed="move"},onDragEnd:()=>f(null),onDragOver:c=>c.preventDefault(),onDrop:c=>k(c,t),children:[s.jsxs("div",{className:"element-ref-card__image",children:[s.jsx("img",{src:u.previewUrl||u.path,alt:u.alt||l("element.refAlt",{n:t+1})}),t===0?s.jsx("span",{children:l("element.refPrimary")}):null]}),s.jsxs("div",{className:"element-ref-card__controls",children:[s.jsxs("label",{children:[l("element.refLabel"),s.jsx("input",{value:u.alt,maxLength:80,placeholder:l("element.refLabelPlaceholder"),onChange:c=>m(t,c.target.value)})]}),s.jsxs("div",{children:[s.jsx("button",{type:"button",disabled:t===0,onClick:()=>h(t,t-1),"aria-label":l("element.refMoveUp",{n:t+1}),children:"↑"}),s.jsx("button",{type:"button",disabled:t===e.length-1,onClick:()=>h(t,t+1),"aria-label":l("element.refMoveDown",{n:t+1}),children:"↓"}),s.jsx("button",{type:"button",className:"is-danger",disabled:e.length<=1,onClick:()=>x(t),"aria-label":l("element.refRemove"),children:l("element.refRemove")})]})]})]},u.id))}),i?s.jsxs("div",{className:"element-ref-grid__undo",role:"status",children:[s.jsx("span",{children:l("element.refRemoved")}),s.jsx("button",{type:"button",onClick:b,children:l("element.refUndo")})]}):null]})}const Ge=/^[A-Za-z0-9_-]{1,32}$/;function He({bindings:e,refs:a,onSave:r}){const{t:l}=I(),p=e.find(b=>b.provider==="runway"),f=e.find(b=>b.provider==="higgsfield"),[j,o]=d.useState(p?.tag??""),[i,g]=d.useState(!1),[_,h]=d.useState(null),x=async()=>{const b=j.trim();if(b&&!Ge.test(b)){h(l("assets.bindingTagInvalid"));return}h(null),g(!0);try{const k=[{provider:"runway",mode:"stateless-refs",...b?{tag:b}:{}},...f?[f]:[]];await r(k)||h(l("assets.actionFailed"))}finally{g(!1)}};return s.jsxs("section",{className:"element-detail__section","data-testid":"character-bindings-card",children:[s.jsx("div",{className:"element-detail__section-heading",children:s.jsxs("div",{children:[s.jsx("h3",{children:l("assets.bindingsTitle")}),s.jsx("p",{children:l("assets.bindingsHelp")})]})}),s.jsxs("div",{className:"character-binding-row",children:[s.jsx("span",{className:"character-binding-row__provider",children:"Runway"}),s.jsx("span",{className:"character-binding-row__mode",children:l("assets.bindingStateless")}),s.jsx("input",{value:j,maxLength:32,placeholder:l("assets.bindingTagPlaceholder"),"aria-label":l("assets.bindingTagPlaceholder"),onChange:b=>o(b.target.value)}),s.jsx("button",{type:"button",disabled:i,onClick:()=>{x()},children:l(i?"assets.bindingSaving":"assets.bindingSave")})]}),xe(a)?s.jsx("p",{className:"element-detail__error",role:"alert",children:l("assets.bindingCapWarning",{count:a.length})}):null,s.jsxs("div",{className:"character-binding-row character-binding-row--locked",children:[s.jsx("span",{className:"character-binding-row__provider",children:"Higgsfield"}),f?.status?s.jsx("span",{className:"character-binding-row__status",children:f.status}):null,s.jsx("button",{type:"button",disabled:!0,title:l("assets.bindingTrainLockedHint"),children:l("assets.bindingTrain")}),s.jsx("span",{className:"character-binding-row__badge",children:l("assets.bindingPaidPlan")})]}),f&&be(a,f)?s.jsx("p",{className:"element-detail__error",role:"alert",children:l("assets.bindingDriftWarning")}):null,_?s.jsx("p",{className:"element-detail__error",role:"alert",children:_}):null]})}const qe=["character","product","style","scene"],W=e=>e[0].toUpperCase()+e.slice(1);function J(e){return{id:e?.id,name:e?.name??"",kind:e?.kind??"character",refs:(e?.refs??[]).filter(a=>typeof a=="string"&&a.length>0).map((a,r)=>({id:`${e?.id??"new"}-${r}-${a}`,path:a,previewUrl:`/generated/${a.split("/").map(encodeURIComponent).join("/")}`,alt:""})),notes:e?.notes??"",defaultStrength:e?.defaultStrength??.75}}function Oe({element:e,saving:a,testing:r,onSave:l,onDelete:p,onRunTestSheet:f,onSaveBindings:j}){const{t:o}=I(),[i,g]=d.useState(()=>J(e)),[_,h]=d.useState(null);d.useEffect(()=>{g(J(e)),h(null)},[e]);const x=800-i.notes.length,b=d.useMemo(()=>i.notes.trim()?`[Element: ${i.name.trim()||"Untitled"}] ${i.notes.trim()}`:null,[i.name,i.notes]),k=(t,c)=>g(y=>({...y,[t]:c})),m=async()=>{if(!i.name.trim())return h(o("element.errorName"));if(!i.refs.length)return h(o("element.errorRefs"));h(null),await l({...i,name:i.name.trim(),notes:i.notes.trim()?i.notes:""})},u=qe.map(t=>({value:t,label:o(`element.kind${W(t)}`)}));return s.jsxs("aside",{className:"element-detail","aria-label":o("element.ariaLabel"),children:[s.jsxs("header",{className:"element-detail__header",children:[s.jsxs("div",{children:[s.jsx("span",{children:o("element.title")}),s.jsx("h2",{children:o(e?"element.titleEdit":"element.titleNew")})]}),e?s.jsx("span",{className:"element-detail__status",children:o("element.saved")}):null]}),s.jsxs("label",{className:"element-detail__field",children:[o("element.name"),s.jsx("input",{value:i.name,maxLength:120,placeholder:o("element.namePlaceholder"),onChange:t=>k("name",t.target.value)})]}),s.jsx(ve,{title:o("element.kind"),items:u,value:i.kind,onChange:t=>k("kind",t)}),s.jsx("p",{className:"element-detail__kind-help",children:o(`element.help${W(i.kind)}`)}),s.jsx(Ke,{refs:i.refs,onChange:t=>k("refs",t),maxRefs:6}),e&&i.kind==="character"&&j?s.jsx(He,{bindings:e.characterBindings??[],refs:e.refs,onSave:t=>j(e.id,t)}):null,s.jsxs("section",{className:"element-detail__section",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{children:o("element.notes")}),s.jsx("p",{children:o("element.notesHelp")})]}),x<=100?s.jsx("span",{children:o("element.remaining",{n:x})}):null]}),s.jsx("textarea",{value:i.notes,maxLength:800,rows:6,placeholder:o("element.notesPlaceholder"),onChange:t=>k("notes",t.target.value)}),b?s.jsx("p",{className:"element-detail__note-preview",children:b}):null]}),s.jsxs("section",{className:"element-detail__section",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{children:o("element.strength")}),s.jsx("p",{children:o("element.strengthHelp")})]}),s.jsx("output",{children:i.defaultStrength.toFixed(2)})]}),s.jsx("input",{className:"element-detail__strength",type:"range",min:"0",max:"1",step:"0.05",value:i.defaultStrength,onChange:t=>k("defaultStrength",Number(t.target.value))}),s.jsx("button",{type:"button",className:"element-detail__reset",onClick:()=>k("defaultStrength",.75),children:o("element.resetDefault")})]}),_?s.jsx("p",{className:"element-detail__error",role:"alert",children:_}):null,s.jsxs("footer",{className:"element-detail__actions",children:[s.jsx("button",{type:"button",className:"element-detail__save",disabled:a,onClick:()=>{m()},children:o(a?"element.saving":"element.save")}),s.jsx("button",{type:"button",disabled:!e||r,onClick:()=>e&&void f(e.id),children:o(r?"element.testing":"element.runTest")}),e&&p?s.jsx("button",{type:"button",className:"is-danger",onClick:()=>{p(e.id)},children:o("element.delete")}):null]})]})}const ze=["image","video","element","preset","template"];function Ve(e,a){return Ne(e,a)}function Xe(){const{t:e}=I(),a=v(n=>n.assets),r=v(n=>n.assetsTags),l=v(n=>n.assetsFilters),p=v(n=>n.assetsLoading),f=v(n=>n.assetsLoadError),j=v(n=>n.loadAssets),o=v(n=>n.setUIMode),i=v(n=>n.setAssetsFilters),g=v(n=>n.updateAssetItem),_=v(n=>n.deleteAssetItem),h=v(n=>n.showToast),[x,b]=d.useState(l.q),[k,m]=d.useState(null),[u,t]=d.useState(null),[c,y]=d.useState(null),A=je(),N=v(n=>n.keyingTarget),S=v(n=>n.pendingAssetDetailId);d.useEffect(()=>{if(!S)return;const n=S;v.setState({pendingAssetDetailId:null});const E=v.getState().assets.find(F=>F.id===n)??null;y(E),i({kind:null,folderId:null,tag:null,q:""}),b(""),m(n),E||ye(n).then(({asset:F})=>{v.setState(K=>({assets:[F,...K.assets.filter(B=>B.id!==F.id)]})),y(F)}).catch(()=>{})},[S,i]);const w=d.useRef(!1);d.useEffect(()=>{if(N){w.current=!0;return}w.current&&(w.current=!1,j(!0))},[N,j]);const R=d.useMemo(()=>[{value:"",label:e("assets.kindAll")},...ze.map(n=>({value:n,label:e(`assets.kind${n[0].toUpperCase()}${n.slice(1)}`)}))],[e]);d.useEffect(()=>{j(!0)},[j]),d.useEffect(()=>{const n=window.setTimeout(()=>i({q:x}),300);return()=>window.clearTimeout(n)},[x,i]);const D=!!(l.q||l.kind||l.tag),Z=a.length===0&&!p,U=l.kind==="element"&&!l.folderId&&!l.q&&!l.tag,X=U?"assets.emptyElementsTitle":l.folderId?"assets.emptyFolderTitle":D?"assets.emptySearchTitle":"assets.emptyTitle",ee=U?"assets.emptyElementsBody":l.folderId?"assets.emptyFolderBody":D?"assets.emptySearchBody":"assets.emptyBody",C=a.find(n=>n.id===k)??(c?.id===k?c:null),H=C?.kind==="element"?Je(C):null,$=d.useCallback(()=>m(null),[]),se=Ve(!!(C&&A),$),te=d.useCallback(()=>t(null),[]),ae=async n=>{(!n.id||!await g(n.id,{name:n.name,notes:n.notes}))&&h(e("assets.actionFailed"),!0)},ne=async(n,E)=>{const K={...a.find(oe=>oe.id===n)?.metadata??{},characterBindings:E},B=await g(n,{metadata:K});return B||h(e("assets.actionFailed"),!0),B},le=async(n,E)=>{const F=await g(n,{name:E});return F||h(e("assets.actionFailed"),!0),F},ie=async n=>{await _(n)?$():h(e("assets.actionFailed"),!0)},re=async()=>h(e("assets.testSheetsUnavailable"),!0);return s.jsxs("section",{className:`assets-workspace${C?" assets-workspace--detail-open":""}`,"aria-labelledby":"assets-title",children:[s.jsx(Ce,{}),s.jsxs("main",{className:"assets-workspace__main",children:[s.jsxs("header",{className:"assets-toolbar",children:[s.jsxs("div",{className:"assets-toolbar__title",children:[s.jsx("h1",{id:"assets-title",children:e("assets.title")}),s.jsx("span",{children:e("assets.itemCount",{count:a.length})})]}),s.jsxs("div",{className:"assets-toolbar__controls",children:[s.jsx("input",{type:"search",value:x,placeholder:e("assets.searchPlaceholder"),"aria-label":e("assets.searchPlaceholder"),onChange:n=>b(n.target.value)}),s.jsx(_e,{items:R,value:l.kind??"",onChange:n=>i({kind:n||null}),ariaLabel:e("assets.kindAll")}),a.length>0&&s.jsx("button",{type:"button",className:"assets-clear-btn",onClick:async()=>{confirm(e("assets.clearConfirm"))&&(await we(),j(!0))},children:e("assets.clearAll")})]}),r.length>0&&s.jsx("div",{className:"assets-tag-filter",children:r.map(n=>s.jsx("button",{type:"button",className:l.tag===n?"is-active":"",onClick:()=>i({tag:l.tag===n?null:n}),children:n},n))})]}),f&&a.length===0?s.jsxs("div",{className:"assets-empty",role:"alert",children:[s.jsx("h2",{children:e("assets.loadErrorTitle")}),s.jsx("p",{children:e("assets.loadErrorBody")}),s.jsx("button",{type:"button",className:"assets-empty__cta",onClick:()=>{j(!0)},children:e("assets.retry")})]}):Z?s.jsxs("div",{className:"assets-empty",children:[s.jsx("h2",{children:e(X)}),s.jsx("p",{children:e(ee)}),U||!D&&!l.folderId?s.jsx("button",{type:"button",className:"assets-empty__cta",onClick:()=>o("classic"),children:e("nav.create")}):null]}):s.jsx(Le,{selectedId:k??void 0,onSelectAsset:m,onPreviewAsset:n=>t(ke(n))})]}),C&&A?s.jsx("button",{type:"button",className:"assets-workspace__detail-backdrop","aria-label":e("assets.detailClose"),onClick:$}):null,C&&s.jsxs("aside",{ref:se,className:"assets-workspace__detail",role:A?"dialog":void 0,"aria-modal":A?!0:void 0,"aria-label":e("assets.detailAria",{name:C.name}),children:[s.jsx("button",{type:"button",className:"assets-workspace__detail-close",onClick:$,"aria-label":e("assets.detailClose"),children:"×"}),H?s.jsx(Oe,{element:H,saving:!1,testing:!1,onSave:ae,onSaveBindings:ne,onDelete:ie,onRunTestSheet:re}):s.jsx(We,{asset:C,onRename:n=>le(C.id,n)})]}),s.jsx(Ae,{}),u?s.jsx(Se,{item:u,onClose:te}):null]})}function We({asset:e,onRename:a}){const{t:r,locale:l}=I(),[p,f]=d.useState(!1),[j,o]=d.useState(e.name),i=d.useRef(!1),g=typeof e.metadata?.prompt=="string"?e.metadata.prompt:null,_=typeof e.metadata?.provider=="string"?e.metadata.provider:null;d.useEffect(()=>{o(e.name),f(!1)},[e.id,e.name]);async function h(){if(i.current)return;const x=j.trim();if(!x||x===e.name){o(e.name),f(!1);return}i.current=!0;try{await a(x)||o(e.name)}finally{i.current=!1,f(!1)}}return s.jsxs("div",{className:"assets-workspace__detail-meta",children:[s.jsx("div",{className:"assets-workspace__detail-title",children:p?s.jsx("input",{className:"assets-folder-input assets-workspace__detail-name-input",value:j,autoFocus:!0,"aria-label":r("assets.renameAsset"),onChange:x=>o(x.target.value),onBlur:()=>{h()},onKeyDown:x=>{x.key==="Enter"&&h(),x.key==="Escape"&&(o(e.name),f(!1))}}):s.jsxs(s.Fragment,{children:[s.jsx("h2",{children:e.name}),s.jsx("button",{type:"button",className:"assets-workspace__detail-rename","aria-label":r("assets.renameAsset"),title:r("assets.renameAsset"),onClick:()=>f(!0),children:s.jsx(Q,{})})]})}),s.jsxs("dl",{children:[s.jsx("dt",{children:r("assets.detailKind")}),s.jsx("dd",{children:r(`assets.kind${e.kind[0].toUpperCase()}${e.kind.slice(1)}`)}),s.jsx("dt",{children:r("assets.detailCreated")}),s.jsx("dd",{children:new Intl.DateTimeFormat(l,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e.createdAt))}),_?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailProvider")}),s.jsx("dd",{children:_})]}):null,g?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailPrompt")}),s.jsx("dd",{className:"assets-workspace__detail-prompt",children:g})]}):null,e.tags.length>0?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailTags")}),s.jsx("dd",{children:e.tags.join(", ")})]}):null]})]})}function Je(e){const a=e.metadata??{},r=a.elementKind,l=a.refs,p=Array.isArray(a.characterBindings)?a.characterBindings:void 0;return{id:e.id,name:e.name,kind:r==="product"||r==="style"||r==="scene"?r:"character",refs:Array.isArray(l)?l.filter(f=>typeof f=="string"):e.filePath?[e.filePath]:[],notes:e.notes??void 0,defaultStrength:typeof a.defaultStrength=="number"?a.defaultStrength:void 0,characterBindings:p}}export{Xe as AssetsWorkspace};