ima2-gen 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/bin/commands/gen.js +7 -5
- package/bin/commands/multimode.js +7 -5
- package/bin/commands/node.js +2 -1
- package/config.js +8 -1
- package/docs/API.md +5 -4
- package/docs/CLI.md +4 -4
- package/docs/FAQ.ko.md +1 -1
- package/docs/FAQ.md +1 -1
- package/docs/migration/runtime-test-inventory.md +11 -1
- package/lib/agentCommandParser.js +10 -6
- package/lib/agentGenerationPlanner.js +96 -19
- package/lib/agentImageVideoGen.js +26 -6
- package/lib/agentPlannerModel.js +172 -0
- package/lib/agentQuestionResponder.js +9 -3
- package/lib/agentQueueStore.js +42 -0
- package/lib/agentQueueWorker.js +57 -7
- package/lib/agentRuntime.js +96 -12
- package/lib/agentSettings.js +9 -6
- package/lib/agentToolManifest.js +90 -0
- package/lib/agentTypes.js +1 -0
- package/lib/agyCli.js +31 -0
- package/lib/agyImageAdapter.js +73 -8
- package/lib/capabilities.js +7 -5
- package/lib/configKeys.js +6 -0
- package/lib/geminiApiImageAdapter.js +11 -4
- package/lib/generationRequestLog.js +25 -0
- package/lib/grokImageAdapter.js +27 -34
- package/lib/grokMultimodeAdapter.js +2 -1
- package/lib/grokVideoAdapter.js +3 -2
- package/lib/grokVideoPlannerPrompt.js +18 -25
- package/lib/inflight.js +1 -1
- package/lib/multimodeHelpers.js +3 -2
- package/lib/oauthProxy/generators.js +6 -5
- package/lib/oauthProxy/prompts.js +41 -16
- package/lib/oauthProxy/streams.js +1 -1
- package/lib/promptSafetyPolicy.js +1 -1
- package/lib/responsesDoctor.js +3 -3
- package/lib/responsesFallback.js +27 -14
- package/lib/responsesImageAdapter.js +11 -7
- package/node_modules/qs/CHANGELOG.md +10 -0
- package/node_modules/qs/README.md +1 -1
- package/node_modules/qs/dist/qs.js +15 -15
- package/node_modules/qs/eslint.config.mjs +1 -0
- package/node_modules/qs/lib/parse.js +52 -22
- package/node_modules/qs/lib/stringify.js +11 -4
- package/node_modules/qs/package.json +2 -2
- package/node_modules/qs/test/parse.js +49 -0
- package/node_modules/qs/test/stringify.js +129 -0
- package/package.json +1 -1
- package/routes/agent.js +19 -2
- package/routes/agy.js +5 -1
- package/routes/generate.js +12 -1
- package/routes/generationRequestLog.js +16 -0
- package/routes/index.js +2 -0
- package/routes/keys.js +22 -2
- package/routes/multimode.js +1 -1
- package/routes/nodes.js +5 -5
- package/ui/dist/.vite/manifest.json +22 -12
- package/ui/dist/assets/AgentWorkspace-qEMrATBP.js +3 -0
- package/ui/dist/assets/{CardNewsWorkspace-Dav3K5CT.js → CardNewsWorkspace-DoJnVHmn.js} +1 -1
- package/ui/dist/assets/GenerationRequestLogPanel-BDWRRLNV.js +1 -0
- package/ui/dist/assets/{NodeCanvas-C4ifFzB1.js → NodeCanvas-DIMo45sp.js} +3 -3
- package/ui/dist/assets/{PromptBuilderPanel-CEcyU9PL.js → PromptBuilderPanel-BF3lcSJD.js} +2 -2
- package/ui/dist/assets/{PromptImportDialog-CgQ94Gth.js → PromptImportDialog-Cy6ZymKG.js} +2 -2
- package/ui/dist/assets/{PromptImportDiscoverySection-CuzyzbNI.js → PromptImportDiscoverySection-CzuW-8P2.js} +1 -1
- package/ui/dist/assets/PromptImportFolderSection-DP5ywnsv.js +1 -0
- package/ui/dist/assets/{PromptLibraryPanel-BOe18we8.js → PromptLibraryPanel-CAsKr7CV.js} +2 -2
- package/ui/dist/assets/SettingsWorkspace-_PdPVsxi.js +1 -0
- package/ui/dist/assets/index-BUinlX2n.js +4 -0
- package/ui/dist/assets/index-CX3fge8X.css +1 -0
- package/ui/dist/assets/index-ygo6nfqx.js +23 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/AgentWorkspace-Dth6YijN.js +0 -3
- package/ui/dist/assets/PromptImportFolderSection-DHLGlO6l.js +0 -1
- package/ui/dist/assets/SettingsWorkspace-Cdgnm4Wa.js +0 -1
- package/ui/dist/assets/index-C5PSahkr.js +0 -1
- package/ui/dist/assets/index-Dn2AhL6d.css +0 -1
- package/ui/dist/assets/index-Tjqx6wUV.js +0 -23
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"index.html": {
|
|
3
|
-
"file": "assets/index-
|
|
3
|
+
"file": "assets/index-ygo6nfqx.js",
|
|
4
4
|
"name": "index",
|
|
5
5
|
"src": "index.html",
|
|
6
6
|
"isEntry": true,
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"src/components/canvas-mode/index.ts",
|
|
9
9
|
"src/components/PromptLibraryPanel.tsx",
|
|
10
10
|
"src/components/prompt-builder/PromptBuilderPanel.tsx",
|
|
11
|
+
"src/components/GenerationRequestLogPanel.tsx",
|
|
11
12
|
"src/components/PromptLibraryPanel.tsx",
|
|
12
13
|
"src/components/NodeCanvas.tsx",
|
|
13
14
|
"src/components/SettingsWorkspace.tsx",
|
|
@@ -16,11 +17,20 @@
|
|
|
16
17
|
"src/components/PromptLibraryPanel.tsx"
|
|
17
18
|
],
|
|
18
19
|
"css": [
|
|
19
|
-
"assets/index-
|
|
20
|
+
"assets/index-CX3fge8X.css"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"src/components/GenerationRequestLogPanel.tsx": {
|
|
24
|
+
"file": "assets/GenerationRequestLogPanel-BDWRRLNV.js",
|
|
25
|
+
"name": "GenerationRequestLogPanel",
|
|
26
|
+
"src": "src/components/GenerationRequestLogPanel.tsx",
|
|
27
|
+
"isDynamicEntry": true,
|
|
28
|
+
"imports": [
|
|
29
|
+
"index.html"
|
|
20
30
|
]
|
|
21
31
|
},
|
|
22
32
|
"src/components/NodeCanvas.tsx": {
|
|
23
|
-
"file": "assets/NodeCanvas-
|
|
33
|
+
"file": "assets/NodeCanvas-DIMo45sp.js",
|
|
24
34
|
"name": "NodeCanvas",
|
|
25
35
|
"src": "src/components/NodeCanvas.tsx",
|
|
26
36
|
"isDynamicEntry": true,
|
|
@@ -32,7 +42,7 @@
|
|
|
32
42
|
]
|
|
33
43
|
},
|
|
34
44
|
"src/components/PromptImportDialog.tsx": {
|
|
35
|
-
"file": "assets/PromptImportDialog-
|
|
45
|
+
"file": "assets/PromptImportDialog-Cy6ZymKG.js",
|
|
36
46
|
"name": "PromptImportDialog",
|
|
37
47
|
"src": "src/components/PromptImportDialog.tsx",
|
|
38
48
|
"isDynamicEntry": true,
|
|
@@ -45,7 +55,7 @@
|
|
|
45
55
|
]
|
|
46
56
|
},
|
|
47
57
|
"src/components/PromptImportDiscoverySection.tsx": {
|
|
48
|
-
"file": "assets/PromptImportDiscoverySection-
|
|
58
|
+
"file": "assets/PromptImportDiscoverySection-CzuW-8P2.js",
|
|
49
59
|
"name": "PromptImportDiscoverySection",
|
|
50
60
|
"src": "src/components/PromptImportDiscoverySection.tsx",
|
|
51
61
|
"isDynamicEntry": true,
|
|
@@ -54,7 +64,7 @@
|
|
|
54
64
|
]
|
|
55
65
|
},
|
|
56
66
|
"src/components/PromptImportFolderSection.tsx": {
|
|
57
|
-
"file": "assets/PromptImportFolderSection-
|
|
67
|
+
"file": "assets/PromptImportFolderSection-DP5ywnsv.js",
|
|
58
68
|
"name": "PromptImportFolderSection",
|
|
59
69
|
"src": "src/components/PromptImportFolderSection.tsx",
|
|
60
70
|
"isDynamicEntry": true,
|
|
@@ -63,7 +73,7 @@
|
|
|
63
73
|
]
|
|
64
74
|
},
|
|
65
75
|
"src/components/PromptLibraryPanel.tsx": {
|
|
66
|
-
"file": "assets/PromptLibraryPanel-
|
|
76
|
+
"file": "assets/PromptLibraryPanel-CAsKr7CV.js",
|
|
67
77
|
"name": "PromptLibraryPanel",
|
|
68
78
|
"src": "src/components/PromptLibraryPanel.tsx",
|
|
69
79
|
"isDynamicEntry": true,
|
|
@@ -75,7 +85,7 @@
|
|
|
75
85
|
]
|
|
76
86
|
},
|
|
77
87
|
"src/components/SettingsWorkspace.tsx": {
|
|
78
|
-
"file": "assets/SettingsWorkspace-
|
|
88
|
+
"file": "assets/SettingsWorkspace-_PdPVsxi.js",
|
|
79
89
|
"name": "SettingsWorkspace",
|
|
80
90
|
"src": "src/components/SettingsWorkspace.tsx",
|
|
81
91
|
"isDynamicEntry": true,
|
|
@@ -84,7 +94,7 @@
|
|
|
84
94
|
]
|
|
85
95
|
},
|
|
86
96
|
"src/components/agent/AgentWorkspace.tsx": {
|
|
87
|
-
"file": "assets/AgentWorkspace-
|
|
97
|
+
"file": "assets/AgentWorkspace-qEMrATBP.js",
|
|
88
98
|
"name": "AgentWorkspace",
|
|
89
99
|
"src": "src/components/agent/AgentWorkspace.tsx",
|
|
90
100
|
"isDynamicEntry": true,
|
|
@@ -93,7 +103,7 @@
|
|
|
93
103
|
]
|
|
94
104
|
},
|
|
95
105
|
"src/components/canvas-mode/index.ts": {
|
|
96
|
-
"file": "assets/index-
|
|
106
|
+
"file": "assets/index-BUinlX2n.js",
|
|
97
107
|
"name": "index",
|
|
98
108
|
"src": "src/components/canvas-mode/index.ts",
|
|
99
109
|
"isDynamicEntry": true,
|
|
@@ -102,7 +112,7 @@
|
|
|
102
112
|
]
|
|
103
113
|
},
|
|
104
114
|
"src/components/card-news/CardNewsWorkspace.tsx": {
|
|
105
|
-
"file": "assets/CardNewsWorkspace-
|
|
115
|
+
"file": "assets/CardNewsWorkspace-DoJnVHmn.js",
|
|
106
116
|
"name": "CardNewsWorkspace",
|
|
107
117
|
"src": "src/components/card-news/CardNewsWorkspace.tsx",
|
|
108
118
|
"isDynamicEntry": true,
|
|
@@ -111,7 +121,7 @@
|
|
|
111
121
|
]
|
|
112
122
|
},
|
|
113
123
|
"src/components/prompt-builder/PromptBuilderPanel.tsx": {
|
|
114
|
-
"file": "assets/PromptBuilderPanel-
|
|
124
|
+
"file": "assets/PromptBuilderPanel-BF3lcSJD.js",
|
|
115
125
|
"name": "PromptBuilderPanel",
|
|
116
126
|
"src": "src/components/prompt-builder/PromptBuilderPanel.tsx",
|
|
117
127
|
"isDynamicEntry": true,
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{M as _e,a as m,j as e,u as j,i as Je,t as Ye,o as te,A as Ze,b as D,v as en,e as nn}from"./index-ygo6nfqx.js";async function B(n,s){const t=await fetch(n,s);if(!t.ok){const a=await t.json().catch(()=>({})),i=a.error,l=typeof i=="string"?i:i?.message??`Request failed: ${t.status}`,r=new Error(l);throw r.status=t.status,r.code=typeof i=="object"?i?.code:a.code,r}return await t.json()}function tn(n){return n.filename?`/generated/${n.filename}`:typeof n.url=="string"&&n.url?n.url:typeof n.thumb=="string"&&n.thumb?n.thumb:null}function we(n){const s=tn(n);if(!s)return null;const t=n.filename??n.canvasEditableFilename??"current-image.png";return{id:`current-${t}`,filename:t,url:s,thumbUrl:n.thumb??s,prompt:n.prompt??n.userPrompt??null,revisedPrompt:n.revisedPrompt??null,createdAt:n.createdAt??Date.now()}}async function pe(n){const s=n?`?selectedSessionId=${encodeURIComponent(n)}`:"";return B(`/api/agent/sessions${s}`)}async function fe(n){const s=n.currentImage?we(n.currentImage):null;return B("/api/agent/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:n.title,currentImage:s,webSearchEnabled:n.webSearchEnabled??!0})})}async function Q(n,s){return B(`/api/agent/sessions/${encodeURIComponent(n)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})}async function sn(n){return B(`/api/agent/sessions/${encodeURIComponent(n)}`,{method:"DELETE"})}async function an(n,s,t){return B(`/api/agent/sessions/${encodeURIComponent(n)}/queue`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:s,options:t})})}async function rn(n){return B(`/api/agent/queue/${encodeURIComponent(n)}/cancel`,{method:"POST"})}async function ln(n){return B(`/api/agent/queue/${encodeURIComponent(n)}/retry`,{method:"POST"})}const ae=_e,on=_e,cn={provider:"oauth",model:"gpt-5.4-mini",quality:"medium",size:"1024x1024",format:"png",moderation:"low",reasoningEffort:"none",webSearchEnabled:!0,generationStrategy:"auto",variants:1,maxAutoVariants:ae,parallelism:2};function xe(n){return{...cn,...n??{}}}function je(n){const{width:s,height:t}=n;return t<560&&s<1280?"mobile-chat-image-sheet":s>=1280?"desktop-three-pane":s>=960&&t>=560?"desktop-rail":s>=768&&t>=700?"tablet-stacked":"mobile-chat-image-sheet"}function un(){return typeof window>"u"?1440:window.innerWidth}function be(){return typeof window>"u"?900:window.innerHeight}function dn(){if(typeof window>"u"||typeof document>"u")return 1440;const n=document.querySelector('.app[data-ui-mode="agent"] .sidebar');if(!n)return window.innerWidth;const s=window.getComputedStyle(n);if(s.display==="none"||s.visibility==="hidden")return window.innerWidth;const t=n.getBoundingClientRect().width;return Math.max(0,window.innerWidth-t)}function gn(){const[n,s]=m.useState(()=>je({width:un(),height:be()}));return m.useEffect(()=>{const t=()=>s(je({width:dn(),height:be()}));return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),n}function C({size:n=16,children:s}){return e.jsx("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:s})}function Ne(n){return e.jsxs(C,{...n,children:[e.jsx("path",{d:"M12 5v14"}),e.jsx("path",{d:"M5 12h14"})]})}function Ce(n){return e.jsxs(C,{...n,children:[e.jsx("circle",{cx:"11",cy:"11",r:"7"}),e.jsx("path",{d:"M21 21l-4.3-4.3"})]})}function H(n){return e.jsxs(C,{...n,children:[e.jsx("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),e.jsx("circle",{cx:"8",cy:"10",r:"1.5"}),e.jsx("path",{d:"M21 16l-5-5L5 19"})]})}function Ie(n){return e.jsxs(C,{...n,children:[e.jsx("path",{d:"M18 6L6 18"}),e.jsx("path",{d:"M6 6l12 12"})]})}function mn(n){return e.jsxs(C,{...n,children:[e.jsx("path",{d:"M22 2L11 13"}),e.jsx("path",{d:"M22 2l-7 20-4-9-9-4 20-7z"})]})}function hn(n){return e.jsx(C,{...n,children:e.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 pn(n){return e.jsxs(C,{...n,children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("path",{d:"M2 12h20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 0 20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 0 0 20"})]})}function fn(n){return e.jsxs(C,{...n,children:[e.jsx("path",{d:"M4 6h16"}),e.jsx("path",{d:"M4 12h16"}),e.jsx("path",{d:"M4 18h16"})]})}function xn(n){return e.jsxs(C,{...n,children:[e.jsx("path",{d:"M3 6h18"}),e.jsx("path",{d:"M8 6V4h8v2"}),e.jsx("path",{d:"M19 6l-1 14H6L5 6"})]})}function jn(n){return e.jsxs(C,{...n,children:[e.jsx("path",{d:"M12 20h9"}),e.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 Ae(n){return e.jsx(C,{...n,children:e.jsx("path",{d:"M6 9l6 6 6-6"})})}function ke(n){return e.jsx(C,{...n,children:e.jsx("path",{d:"M9 6l6 6-6 6"})})}const ye=[{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 Ee(n){const s=n.toLowerCase();return s?ye.filter(t=>t.aliases.some(a=>a.startsWith(s))):ye}function bn({listboxId:n,query:s,highlightIndex:t,onSelect:a,onHighlightChange:i}){const{t:l}=j(),r=Ee(s);return r.length===0?null:e.jsx("ul",{id:n,className:"slash-command-menu",role:"listbox","aria-label":l("agent.slashCommands"),children:r.map((c,o)=>e.jsxs("li",{id:`${n}-opt-${o}`,role:"option","aria-selected":o===t,className:`slash-command-menu__item${o===t?" is-highlighted":""}`,onMouseDown:g=>g.preventDefault(),onClick:()=>a(c),onMouseEnter:()=>i(o),children:[e.jsx("span",{className:"slash-command-menu__name",children:c.display}),e.jsx("span",{className:"slash-command-menu__desc",children:l(c.descriptionKey)})]},c.name))})}function yn(n){return Array.from(n).filter(s=>s.type.startsWith("image/"))}function Sn(n){return Array.from(n.clipboardData?.items??[]).filter(s=>s.kind==="file"&&s.type.startsWith("image/")).map(s=>s.getAsFile()).filter(s=>!!s)}function vn({webSearchEnabled:n,insertedPrompt:s,onWebSearchChange:t,onAttachFiles:a,onSend:i}){const{t:l}=j(),[r,c]=m.useState(""),[o,g]=m.useState(0),[u,h]=m.useState(!1),p=m.useRef(null),f=m.useRef(null),S=m.useId(),k=r.trim().length>0,E=r.trimStart().match(/^\/([a-z]*)$/i),q=E!==null,X=q&&!u,P=E?.[1]??"",A=Ee(P),L=X&&A.length>0,M=A.length>0?Math.min(o,A.length-1):0,F=L?`${S}-opt-${M}`:void 0;m.useEffect(()=>{g(0),h(!1)},[P]),m.useEffect(()=>{q&&h(!1)},[q]),m.useEffect(()=>{s?.text&&c(x=>x.trim()?`${x.trim()}
|
|
2
|
+
|
|
3
|
+
${s.text}`:s.text)},[s]);const U=()=>{const x=r.trim();x&&(i(x),c(""))},I=x=>{c(`/${x.name} `),p.current?.focus()},w=x=>{const R=Sn(x);R.length!==0&&(x.preventDefault(),a(R))};return e.jsxs("div",{className:"agent-composer",children:[L&&e.jsx(bn,{listboxId:S,query:P,highlightIndex:M,onSelect:I,onHighlightChange:g}),e.jsx("textarea",{ref:p,value:r,"aria-autocomplete":"list","aria-haspopup":"listbox","aria-label":l("agent.composerPlaceholder"),...L?{"aria-controls":S}:{},"aria-activedescendant":F,autoCapitalize:"off",autoCorrect:"off",placeholder:l("agent.composerPlaceholder"),onChange:x=>c(x.target.value),onPaste:w,onKeyDown:x=>{if(x.key==="Enter"&&(x.metaKey||x.ctrlKey)){x.preventDefault(),U();return}if(L)switch(x.key){case"Tab":{x.preventDefault(),I(A[M]);return}case"ArrowDown":{x.preventDefault(),g((M+1)%A.length);return}case"ArrowUp":{x.preventDefault(),g((M-1+A.length)%A.length);return}case"Enter":{x.preventDefault(),I(A[M]);return}case"Escape":{x.preventDefault(),h(!0);return}}}}),e.jsx("input",{ref:f,type:"file",accept:"image/png,image/jpeg,image/webp",multiple:!0,hidden:!0,onChange:x=>{const R=yn(x.target.files??[]);R.length>0&&a(R),x.target.value=""}}),e.jsxs("div",{className:"agent-composer__actions",children:[e.jsx("button",{type:"button",onClick:()=>f.current?.click(),"aria-label":l("agent.attachReference"),title:l("agent.attachReference"),children:e.jsx(hn,{size:16})}),e.jsx("button",{type:"button",className:n?"is-active":"","aria-pressed":n,onClick:()=>t(!n),"aria-label":l("agent.webSearch"),title:l("agent.webSearch"),children:e.jsx(pn,{size:16})}),e.jsxs("button",{type:"button",className:"agent-composer__send",onClick:U,disabled:!k,"aria-label":l("agent.send"),children:[e.jsx(mn,{size:16}),e.jsx("span",{children:l("agent.send")})]})]})]})}function V({src:n,alt:s,className:t,fallbackClassName:a,iconSize:i=18}){const[l,r]=m.useState(!1);return!n||l?e.jsx("span",{className:a??"agent-image-fallback","aria-label":s,role:"img",children:e.jsx(H,{size:i})}):Je(n)?e.jsx("video",{className:t,src:n,controls:!0,loop:!0,playsInline:!0,muted:!0}):e.jsx("img",{className:t,src:n,alt:s,onError:()=>r(!0)})}const W=m.forwardRef(function({image:s,selected:t=!1,compact:a=!1,onSelect:i},l){const{t:r}=j(),c=`${r("agent.selectImage")}: ${s.prompt??s.filename}`,o=`${a?"agent-result-thumb agent-result-thumb--compact":"agent-result-thumb"}${t?" is-selected":""}`;return e.jsx("button",{ref:l,type:"button",className:o,"aria-label":c,"aria-current":t?"true":void 0,onClick:()=>i(s.id),title:r("agent.selectImage"),children:e.jsx(V,{src:s.thumbUrl??s.url,alt:s.prompt??r("agent.imageAlt"),iconSize:a?14:18})})});function _n({turn:n,imagesById:s,currentImageId:t,onImageSelect:a}){const{t:i}=j(),l=n.role==="user"?i("agent.user"):n.status==="error"?i("agent.errorRole"):i("agent.assistant"),r=n.imageIds??[],c=n.status==="streaming"?" is-streaming":n.status==="error"?" is-error":"",o=`agent-message agent-message--${n.role}${c}`;return e.jsxs("article",{className:o,"aria-busy":n.status==="streaming"?"true":void 0,children:[e.jsx("div",{className:"agent-message__role",children:l}),e.jsx("p",{children:n.text}),r.length>0?e.jsx("div",{className:"agent-message__images",children:r.map(g=>{const u=s[g];return u?e.jsx(W,{image:u,selected:g===t,compact:!1,onSelect:a},g):null})}):null]})}const wn=["ima2.get_image_context","ima2.web_search","ima2.generate_image","ima2.generate_video","ima2.get_generation_errors"];function Nn(n){return n.replace(/\s+/g," ").trim()||"tool"}function Cn(n){if(n.toolCalls?.length)return n.toolCalls;const s=Nn(n.text);return wn.filter(t=>s.includes(t)).map((t,a)=>({id:`${n.id}-fallback-${a}`,name:t,status:n.status==="error"?"error":n.status==="streaming"?"running":"complete",outputSummary:s,imageIds:t==="ima2.generate_image"||t==="ima2.generate_video"?n.imageIds??[]:[],webFindingIds:t==="ima2.web_search"?n.webFindingIds??[]:[]}))}function Te(n){return!n||n<0?null:n<1e3?`${n}ms`:`${(n/1e3).toFixed(1)}s`}function In({call:n,imagesById:s,currentImageId:t,onImageSelect:a}){const{t:i}=j(),l=n.imageIds??[],r=Te(n.durationMs);return e.jsxs("div",{className:"agent-tool-call-details",children:[e.jsxs("dl",{children:[e.jsxs("div",{children:[e.jsx("dt",{children:i("agent.toolInput")}),e.jsx("dd",{children:n.inputSummary??"-"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:i("agent.toolOutput")}),e.jsx("dd",{children:n.errorMessage??n.outputSummary??"-"})]}),n.requestId?e.jsxs("div",{children:[e.jsx("dt",{children:i("agent.requestId")}),e.jsx("dd",{children:n.requestId})]}):null,r?e.jsxs("div",{children:[e.jsx("dt",{children:i("agent.duration")}),e.jsx("dd",{children:r})]}):null]}),l.length>0?e.jsx("div",{className:"agent-tool-call-details__artifacts","aria-label":i("agent.toolArtifacts"),children:l.map(c=>{const o=s[c];return o?e.jsx(W,{image:o,selected:c===t,compact:!0,onSelect:a},c):null})}):null]})}function An({call:n,imagesById:s,currentImageId:t,onImageSelect:a}){const{t:i}=j(),l=m.useId(),[r,c]=m.useState(!1),o=Te(n.durationMs);return e.jsxs("li",{className:`agent-tool-call-row agent-tool-call-row--${n.status}`,children:[e.jsxs("button",{type:"button",className:"agent-tool-call-row__toggle","aria-expanded":r,"aria-controls":l,"aria-busy":n.status==="running"?"true":void 0,onClick:()=>c(g=>!g),children:[e.jsx("span",{className:"agent-tool-call-row__status","aria-label":i(`agent.toolStatus.${n.status}`)}),e.jsx("span",{className:"agent-tool-call-row__name",children:n.name}),n.imageIds?.length?e.jsx("span",{className:"agent-tool-call-row__meta",children:i("agent.toolImageCount",{count:n.imageIds.length})}):null,o?e.jsx("span",{className:"agent-tool-call-row__meta",children:o}):null,r?e.jsx(Ae,{size:13}):e.jsx(ke,{size:13})]}),e.jsx("div",{id:l,hidden:!r,children:e.jsx(In,{call:n,imagesById:s,currentImageId:t,onImageSelect:a})})]})}function kn(n){const s=[],t=new Set;let a=!1;const i=[];for(const l of n){const r=Cn(l);s.push(...r);for(const c of l.imageIds??[])t.add(c);for(const c of r)for(const o of c.imageIds??[])t.add(o);l.status==="streaming"&&(a=!0);for(const c of r)i.includes(c.name)||i.push(c.name)}return{toolCalls:s,imageIds:[...t],isStreaming:a,label:i.join(" + ")||"tool"}}function En({turns:n,imagesById:s,currentImageId:t,onImageSelect:a}){const{t:i}=j(),l=m.useId(),[r,c]=m.useState(!1),{toolCalls:o,imageIds:g,isStreaming:u,label:h}=m.useMemo(()=>kn(n),[n]),p=i(r?"agent.toolCollapse":"agent.toolExpand");return e.jsxs("article",{className:`agent-message agent-message--tool is-collapsible${u?" is-streaming":""}`,"aria-busy":u?"true":void 0,children:[e.jsx("div",{className:"agent-message__tool-summary",children:e.jsx("button",{type:"button",className:"agent-message__tool-toggle","aria-expanded":r,"aria-controls":l,"aria-label":`${p}: ${h}`,onClick:()=>c(f=>!f),children:e.jsxs("span",{className:"agent-message__tool-summary-line",children:[e.jsx("span",{className:"agent-message__tool-dot","aria-hidden":"true"}),e.jsx("span",{className:"agent-message__role",children:i("agent.toolGroup")}),g.length>0?e.jsx("span",{className:"agent-message__tool-count",children:i("agent.toolImageCount",{count:g.length})}):null,o.length>0?e.jsx("span",{className:"agent-message__tool-count",children:i("agent.toolCallCount",{count:o.length})}):null,r?e.jsx(Ae,{size:14}):e.jsx(ke,{size:14})]})})}),e.jsxs("div",{id:l,className:"agent-message__tool-details",hidden:!r,children:[e.jsx("div",{className:"agent-message__tool-label",children:h}),o.length>0?e.jsx("ul",{className:"agent-tool-call-list",children:o.map(f=>e.jsx(An,{call:f,imagesById:s,currentImageId:t,onImageSelect:a},f.id))}):null,g.length>0?e.jsx("div",{className:"agent-message__tool-thumbs",children:g.map(f=>{const S=s[f];return S?e.jsx(W,{image:S,selected:f===t,compact:!0,onSelect:a},f):null})}):null]})]})}function Tn(n){return n.role!=="tool"&&(n.text.trim().length>0||(n.imageIds?.length??0)>0)}function Ln({turns:n,imagesById:s,currentImageId:t,onImageSelect:a}){const{t:i}=j(),l=n.filter(h=>h.role==="tool"),r=n.filter(Tn),c=n.some(h=>h.status==="streaming"),o=n.some(h=>h.status==="error"),g=c?" is-streaming":o?" is-error":"",u=i(o?"agent.errorRole":"agent.assistant");return e.jsxs("article",{className:`agent-message agent-message--assistant-run${g}`,"aria-busy":c?"true":void 0,children:[e.jsxs("div",{className:"agent-run__header",children:[e.jsx("div",{className:"agent-message__role",children:u}),l.length>0?e.jsx("div",{className:"agent-run__header-tool",children:e.jsx(En,{turns:l,imagesById:s,currentImageId:t,onImageSelect:a})}):null]}),r.length>0?e.jsx("ol",{className:"agent-run__steps","aria-label":u,children:r.map(h=>{const p=h.imageIds??[],f=h.status==="streaming"?" is-streaming":h.status==="error"?" is-error":"";return e.jsxs("li",{className:`agent-run__step${f}`,children:[e.jsx("span",{className:"agent-run__step-marker","aria-hidden":"true"}),e.jsxs("div",{className:"agent-run__step-body",children:[h.text.trim().length>0?e.jsx("p",{children:h.text}):null,p.length>0?e.jsx("div",{className:"agent-message__images",children:p.map(S=>{const k=s[S];return k?e.jsx(W,{image:k,selected:S===t,compact:!1,onSelect:a},S):null})}):null]})]},h.id)})}):null]})}function Mn(n){const s=[];let t=[];const a=()=>{t.length!==0&&(s.push({kind:"run",turns:t,key:t.map(i=>i.id).join("+")}),t=[])};for(const i of n)i.role==="user"?(a(),s.push({kind:"single",turn:i})):t.push(i);return a(),s}function qn({turns:n,imagesById:s,currentImageId:t,onImageSelect:a}){const{t:i}=j(),l=m.useRef(null),r=m.useMemo(()=>Mn(n),[n]);return m.useEffect(()=>{const c=l.current;c&&(c.scrollTop=c.scrollHeight)},[n.length]),e.jsxs("div",{ref:l,className:"agent-message-list","aria-live":"polite",children:[n.length===0?e.jsx("div",{className:"agent-message-list__empty",children:i("agent.emptyChat")}):null,r.map(c=>c.kind==="run"?e.jsx(Ln,{turns:c.turns,imagesById:s,currentImageId:t,onImageSelect:a},c.key):e.jsx(_n,{turn:c.turn,imagesById:s,currentImageId:t,onImageSelect:a},c.turn.id))]})}function Le({settings:n,onChange:s}){const{t}=j(),[a,i]=m.useState(!1),l=m.useRef(null),r=Ye(n),c=te.find(o=>o.value===n.reasoningEffort)??te[0];return m.useEffect(()=>{if(!a)return;const o=u=>{l.current?.contains(u.target)||i(!1)},g=u=>{u.key==="Escape"&&i(!1)};return window.addEventListener("pointerdown",o),window.addEventListener("keydown",g),()=>{window.removeEventListener("pointerdown",o),window.removeEventListener("keydown",g)}},[a]),e.jsxs("div",{ref:l,className:"image-model-select image-model-select--sidebar agent-model-select",children:[e.jsxs("button",{type:"button",className:"image-model-select__trigger image-model-select__trigger--pill","aria-haspopup":"menu","aria-expanded":a,"aria-label":t("sidebar.quickSettingsAria",{model:r.shortLabel,effort:c.shortLabel}),onClick:()=>i(o=>!o),children:[e.jsxs("span",{className:"image-model-select__trigger-top",children:[e.jsx("span",{className:"image-model-select__trigger-model",children:r.shortLabel}),e.jsx("span",{className:"image-model-select__trigger-chevron","aria-hidden":"true",children:"▾"})]}),e.jsx("span",{className:"image-model-select__trigger-effort",children:c.shortLabel})]}),a?e.jsxs("div",{className:"image-model-select__menu agent-model-select__menu",role:"menu","aria-label":t("sidebar.quickSettingsMenu"),children:[e.jsxs("div",{className:"image-model-select__section",role:"group","aria-label":t("agent.model"),children:[e.jsx("div",{className:"image-model-select__section-title",children:t("agent.model")}),Ze.map(o=>e.jsxs("button",{type:"button",className:`image-model-select__item${o.value===r.value?" is-active":""}`,role:"menuitemradio","aria-checked":o.value===r.value,onClick:()=>{s({model:o.value,provider:o.provider}),i(!1)},children:[e.jsx("span",{children:o.shortLabel}),e.jsx("small",{children:o.fullLabel})]},o.value))]}),e.jsxs("div",{className:"image-model-select__section",role:"group","aria-label":t("sidebar.reasoningLabel"),children:[e.jsx("div",{className:"image-model-select__section-title",children:t("sidebar.reasoningLabel")}),te.map(o=>e.jsxs("button",{type:"button",className:`image-model-select__item${o.value===n.reasoningEffort?" is-active":""}`,role:"menuitemradio","aria-checked":o.value===n.reasoningEffort,onClick:()=>{s({reasoningEffort:o.value}),i(!1)},children:[e.jsx("span",{children:o.shortLabel}),e.jsx("small",{children:t(o.fullLabelKey)})]},o.value))]})]}):null]})}function Rn({progress:n}){const{t:s}=j();if(!n?.active)return null;const t=[n.runningCount>0?`${n.runningCount} ${s("agent.runningShort")}`:null,n.queuedCount>0?`${n.queuedCount} ${s("agent.queuedShort")}`:null].filter(Boolean).join(" · ");return e.jsxs("div",{className:`agent-run-status agent-run-status--${n.status}`,role:"status","aria-live":"polite",children:[e.jsx("span",{className:"agent-run-status__spinner","aria-hidden":"true"}),e.jsx("span",{className:"agent-run-status__label",children:s(`agent.${n.labelKey}`)}),t?e.jsx("span",{className:"agent-run-status__meta",children:t}):null,n.status==="error"&&n.lastError?e.jsx("span",{className:"agent-run-status__meta",children:n.lastError}):null]})}function $n({status:n,compacted:s=!1}){const{t}=j(),a=t(n==="generating"?"agent.statusGenerating":n==="reconnecting"?"agent.statusReconnecting":"agent.statusReady");return e.jsxs("span",{className:`agent-status agent-status--${n}`,"aria-live":n==="ready"?void 0:"polite",children:[n==="generating"?e.jsx("span",{className:"agent-status__dot","aria-hidden":"true"}):null,e.jsx("span",{children:a}),s?e.jsx("em",{children:t("agent.compacted")}):null]})}function Dn({session:n,turns:s,imagesById:t,currentImageId:a,runtimeStatus:i,runProgress:l,settings:r,insertedPrompt:c,onSettingsChange:o,onWebSearchChange:g,onAttachFiles:u,onImageSelect:h,onSend:p}){const{t:f}=j();return e.jsxs("section",{className:"agent-chat","aria-label":f("agent.chat"),children:[e.jsxs("header",{className:"agent-pane-header",children:[e.jsxs("div",{className:"agent-pane-header__title",children:[e.jsx("span",{children:f("agent.chat")}),e.jsx("strong",{children:n?.title??f("agent.newSession")})]}),e.jsxs("div",{className:"agent-pane-header__actions",children:[r&&o?e.jsx(Le,{settings:r,onChange:o}):null,e.jsx($n,{status:i,compacted:n?.compacted})]})]}),e.jsx(qn,{turns:s,imagesById:t,currentImageId:a,onImageSelect:h}),e.jsx(Rn,{progress:l}),e.jsx(vn,{webSearchEnabled:n?.webSearchEnabled??!1,insertedPrompt:c,onWebSearchChange:g,onAttachFiles:u,onSend:p})]})}const Bn=["image","refs","web","memory"];function Pn({activeTab:n,onChange:s}){const{t}=j(),a={image:t("agent.imageTab"),refs:t("agent.refsTab"),web:t("agent.webTab"),memory:t("agent.memoryTab")};return e.jsx("div",{className:"agent-context-tabs",role:"tablist","aria-label":t("agent.contextTabs"),children:Bn.map(i=>e.jsx("button",{type:"button",role:"tab","aria-selected":n===i,className:n===i?"active":"",onClick:()=>s(i),children:a[i]},i))})}function On({activeTab:n,currentImage:s}){const{t}=j();return n==="refs"?e.jsx("div",{className:"agent-tab-empty",children:t("agent.noRefs")}):n==="web"?e.jsx("div",{className:"agent-tab-empty",children:t("agent.noWeb")}):n==="memory"?e.jsxs("ul",{className:"agent-memory-list",children:[e.jsx("li",{children:t("agent.memoryItemStyle")}),e.jsx("li",{children:t("agent.memoryItemSubject")})]}):e.jsxs("dl",{className:"agent-image-meta",children:[e.jsxs("div",{children:[e.jsx("dt",{children:t("agent.filename")}),e.jsx("dd",{children:s?.filename??"-"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:t("agent.prompt")}),e.jsx("dd",{children:s?.prompt??s?.revisedPrompt??"-"})]})]})}function Me({currentImage:n,images:s,activeTab:t,onTabChange:a,onImageSelect:i,headerAction:l}){const{t:r}=j(),c=m.useRef({}),o=m.useMemo(()=>s.findIndex(h=>h.id===n?.id),[n?.id,s]);m.useEffect(()=>{n?.id&&c.current[n.id]?.scrollIntoView({block:"nearest",inline:"nearest"})},[n?.id]);const g=m.useCallback(h=>{const p=s[h];p&&i(p.id)},[s,i]),u=m.useCallback(h=>{if(s.length===0)return;const p=o>=0?o:0;let f=null;(h.key==="ArrowLeft"||h.key==="ArrowUp")&&(f=Math.max(0,p-1)),(h.key==="ArrowRight"||h.key==="ArrowDown")&&(f=Math.min(s.length-1,p+1)),h.key==="Home"&&(f=0),h.key==="End"&&(f=s.length-1),!(f===null||f===p)&&(h.preventDefault(),g(f))},[o,s.length,g]);return e.jsxs("section",{className:"agent-image","aria-label":r("agent.imagePane"),children:[e.jsxs("header",{className:"agent-pane-header",children:[e.jsxs("div",{className:"agent-pane-header__title",children:[e.jsx("span",{children:r("agent.imagePane")}),e.jsx("strong",{children:r("agent.currentImage")})]}),l]}),e.jsx("div",{className:"agent-image__preview",tabIndex:s.length>1?0:void 0,onKeyDown:u,"aria-label":s.length>1?r("agent.variants"):void 0,children:n?e.jsx(V,{src:n.url,alt:n.prompt??r("agent.imageAlt"),fallbackClassName:"agent-image__empty",iconSize:34}):e.jsxs("div",{className:"agent-image__empty",children:[e.jsx(H,{size:34}),e.jsx("span",{children:r("agent.noImage")})]})}),e.jsx("div",{className:"agent-image__variants","aria-label":r("agent.variants"),onKeyDown:u,children:s.map(h=>e.jsx(W,{ref:p=>{c.current[h.id]=p},image:h,selected:h.id===n?.id,onSelect:i},h.id))}),e.jsx(Pn,{activeTab:t,onChange:a}),e.jsx(On,{activeTab:t,currentImage:n})]})}const Se='button, [href], input, textarea, select, [tabindex]:not([tabindex="-1"])';function qe(n,s){const t=m.useRef(null),a=m.useRef(null);return m.useEffect(()=>{if(!n)return;a.current=document.activeElement;const i=window.setTimeout(()=>{t.current?.querySelector(Se)?.focus()},0),l=r=>{if(r.key==="Escape"){r.preventDefault(),s();return}if(r.key!=="Tab")return;const c=Array.from(t.current?.querySelectorAll(Se)??[]);if(c.length===0)return;const o=c[0],g=c[c.length-1];r.shiftKey&&document.activeElement===o?(r.preventDefault(),g.focus()):!r.shiftKey&&document.activeElement===g&&(r.preventDefault(),o.focus())};return document.addEventListener("keydown",l),()=>{window.clearTimeout(i),document.removeEventListener("keydown",l),a.current?.focus()}},[s,n]),t}function zn({open:n,currentImage:s,images:t,activeTab:a,onTabChange:i,onImageSelect:l,onClose:r}){const{t:c}=j(),o=m.useCallback(()=>r(),[r]),g=qe(n,o);return n?e.jsxs("div",{className:"agent-dialog agent-dialog--image",role:"presentation",children:[e.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:r,"aria-label":c("agent.closeImage")}),e.jsx("section",{ref:g,className:"agent-image-sheet",role:"dialog","aria-modal":"true","aria-label":c("agent.imagePane"),children:e.jsx(Me,{currentImage:s,images:t,activeTab:a,onTabChange:i,onImageSelect:l,headerAction:e.jsx("button",{type:"button",onClick:r,"aria-label":c("agent.closeImage"),children:e.jsx(Ie,{size:17})})})})]}):null}function Re({mode:n,onInsert:s}){const{t}=j(),a=D(g=>g.promptLibrary),i=D(g=>g.promptLibraryLoading),l=D(g=>g.loadPromptLibrary),[r,c]=m.useState("");m.useEffect(()=>{l()},[l]);const o=m.useMemo(()=>{const g=r.trim().toLowerCase();return a.prompts.filter(u=>{const h=u.tags.map(p=>p.toLowerCase());return n==="forms"&&!h.includes("agent:form")?!1:g?u.name.toLowerCase().includes(g)||u.text.toLowerCase().includes(g)||h.some(p=>p.includes(g)):!0})},[a.prompts,n,r]);return e.jsxs("section",{className:"agent-sidebar-section","aria-label":t(n==="forms"?"agent.forms":"agent.promptLibrary"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:t(n==="forms"?"agent.forms":"agent.promptLibrary")}),e.jsx("strong",{children:o.length})]})}),e.jsxs("label",{className:"agent-sidebar-search",children:[e.jsx("span",{children:t("promptLibrary.search")}),e.jsx("input",{value:r,onChange:g=>c(g.target.value),placeholder:t("promptLibrary.search")})]}),e.jsxs("div",{className:"agent-prompt-library-list",children:[i?e.jsx("div",{className:"agent-tab-empty",children:t("common.loading")}):null,!i&&o.length===0?e.jsx("div",{className:"agent-tab-empty",children:t(n==="forms"?"agent.noForms":"promptLibrary.empty")}):null,o.map(g=>e.jsxs("article",{className:"agent-prompt-library-row",children:[e.jsx("strong",{children:g.name||t("promptLibrary.untitled")}),e.jsx("p",{children:g.text}),e.jsx("button",{type:"button",onClick:()=>s(g.text),children:t("agent.insertPrompt")})]},g.id))]})]})}function Wn({onInsert:n}){return e.jsx(Re,{mode:"forms",onInsert:n})}function Fn({settings:n,onChange:s}){const{t}=j();return e.jsxs("section",{className:"agent-settings-grid","aria-label":t("agent.quality"),children:[e.jsxs("label",{children:[e.jsx("span",{children:t("agent.generationStrategy")}),e.jsxs("select",{value:n.generationStrategy,onChange:a=>s({generationStrategy:a.target.value}),children:[e.jsx("option",{value:"auto",children:t("agent.generationStrategyAuto")}),e.jsx("option",{value:"manual",children:t("agent.generationStrategyManual")})]})]}),e.jsxs("label",{children:[e.jsx("span",{children:t("agent.quality")}),e.jsxs("select",{value:n.quality,onChange:a=>s({quality:a.target.value}),children:[e.jsx("option",{value:"low",children:"low"}),e.jsx("option",{value:"medium",children:"medium"}),e.jsx("option",{value:"high",children:"high"})]})]}),e.jsxs("label",{children:[e.jsx("span",{children:t("agent.size")}),e.jsxs("select",{value:n.size,onChange:a=>s({size:a.target.value}),children:[e.jsx("option",{value:"1024x1024",children:"1024x1024"}),e.jsx("option",{value:"1536x1024",children:"1536x1024"}),e.jsx("option",{value:"1024x1536",children:"1024x1536"}),e.jsx("option",{value:"2048x2048",children:"2048x2048"})]})]}),e.jsxs("label",{children:[e.jsx("span",{children:t("agent.format")}),e.jsxs("select",{value:n.format,onChange:a=>s({format:a.target.value}),children:[e.jsx("option",{value:"png",children:"png"}),e.jsx("option",{value:"jpeg",children:"jpeg"}),e.jsx("option",{value:"webp",children:"webp"})]})]}),e.jsxs("label",{children:[e.jsx("span",{children:t("agent.moderation")}),e.jsxs("select",{value:n.moderation,onChange:a=>s({moderation:a.target.value}),children:[e.jsx("option",{value:"low",children:"low"}),e.jsx("option",{value:"auto",children:"auto"})]})]}),n.generationStrategy==="manual"?e.jsxs("label",{children:[e.jsx("span",{children:t("agent.variantsCount")}),e.jsx("input",{type:"number",min:1,max:ae,value:n.variants,onChange:a=>s({variants:Number(a.target.value)})})]}):e.jsxs("label",{children:[e.jsx("span",{children:t("agent.maxAutoVariants")}),e.jsx("input",{type:"number",min:1,max:ae,value:n.maxAutoVariants,onChange:a=>s({maxAutoVariants:Number(a.target.value)})})]}),e.jsxs("label",{children:[e.jsx("span",{children:t("agent.parallelism")}),e.jsx("input",{type:"number",min:1,max:on,value:n.parallelism,onChange:a=>s({parallelism:Number(a.target.value)})})]})]})}function Un(n){return n.status==="queued"?`#${n.position}`:n.status==="running"?"running":n.status==="succeeded"?`${n.resultImageIds.length} img`:n.status==="failed"?n.errorCode??"failed":"canceled"}function Kn(n){if(!n)return"-";const s=Math.max(1,Math.round((Date.now()-n)/1e3));if(s<60)return`${s}s ago`;const t=Math.round(s/60);return t<60?`${t}m ago`:`${Math.round(t/60)}h ago`}function Gn({item:n,onCancel:s,onRetry:t}){const{t:a}=j(),i=n.status==="queued",l=n.status==="failed"||n.status==="canceled",r=`${n.plan.plannedVariants||n.plan.prompts.length||1}v/${n.plan.plannedParallelism||n.options.parallelism}p · ${n.plan.source}`;return e.jsxs("div",{className:`agent-queue-row agent-queue-row--${n.status}`,children:[e.jsxs("div",{className:"agent-queue-row__main",children:[e.jsx("strong",{children:n.prompt}),e.jsxs("span",{children:[a(`agent.queueStatus.${n.status}`)," · ",Un(n)," · ",r," · ",Kn(n.createdAt)]}),n.plan.reason?e.jsx("small",{children:n.plan.reason}):null,n.errorMessage?e.jsx("small",{children:n.errorMessage}):null]}),e.jsxs("div",{className:"agent-queue-row__actions",children:[i?e.jsx("button",{type:"button",onClick:()=>s(n.id),children:a("agent.cancelQueue")}):null,l?e.jsx("button",{type:"button",onClick:()=>t(n.id),children:a("agent.retryQueue")}):null]})]})}function Qn({items:n,summary:s,onCancel:t,onRetry:a}){const{t:i}=j();return e.jsxs("section",{className:"agent-sidebar-section","aria-label":i("agent.queue"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:i("agent.queue")}),e.jsxs("strong",{children:[s?.runningCount??0," ",i("agent.runningShort")," · ",s?.queuedCount??0," ",i("agent.queuedShort")]})]})}),e.jsx("div",{className:"agent-queue-list",children:n.length===0?e.jsx("div",{className:"agent-tab-empty",children:i("agent.queueEmpty")}):n.map(l=>e.jsx(Gn,{item:l,onCancel:t,onRetry:a},l.id))})]})}const Hn=["image","library","forms","quality","model","queue"];function Vn({activeTab:n,onChange:s}){const{t}=j();return e.jsx("div",{className:"agent-sidebar-tabs",role:"tablist","aria-label":t("agent.rightSidebar"),children:Hn.map(a=>e.jsx("button",{type:"button",role:"tab",className:n===a?"active":"","aria-selected":n===a,onClick:()=>s(a),children:t(`agent.sidebarTabs.${a}`)},a))})}function Xn({currentImage:n,images:s,contextTab:t,sidebarTab:a,queueItems:i,runSummary:l,settings:r,onContextTabChange:c,onSidebarTabChange:o,onImageSelect:g,onSettingsChange:u,onInsertPrompt:h,onCancelQueue:p,onRetryQueue:f}){const{t:S}=j();return e.jsxs("aside",{className:"agent-right-sidebar",children:[e.jsx(Vn,{activeTab:a,onChange:o}),a==="image"?e.jsx(Me,{currentImage:n,images:s,activeTab:t,onTabChange:c,onImageSelect:g}):null,a==="library"?e.jsx(Re,{mode:"library",onInsert:h}):null,a==="forms"?e.jsx(Wn,{onInsert:h}):null,a==="quality"?e.jsxs("section",{className:"agent-sidebar-section","aria-label":S("agent.quality"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:S("agent.quality")}),e.jsx("strong",{children:r.generationStrategy==="auto"?S("agent.generationStrategyAuto"):S("agent.generationStrategyManual")})]})}),e.jsx(Fn,{settings:r,onChange:u})]}):null,a==="model"?e.jsxs("section",{className:"agent-sidebar-section","aria-label":S("agent.modelSettings"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:S("agent.modelSettings")}),e.jsx("strong",{children:r.model})]})}),e.jsx(Le,{settings:r,onChange:u})]}):null,a==="queue"?e.jsx(Qn,{items:i,summary:l,onCancel:p,onRetry:f}):null]})}function Jn({summary:n}){const{t:s}=j();if(!n||n.status==="idle")return null;const t=n.status==="running"?s("agent.sessionRunning"):n.status==="queued"?s("agent.sessionQueued",{count:n.queuedCount}):s("agent.sessionError");return e.jsxs("span",{className:`agent-session-spinner agent-session-spinner--${n.status}`,"aria-label":t,title:t,children:[e.jsx("span",{"aria-hidden":"true"}),n.queuedCount>0?e.jsx("em",{children:n.queuedCount}):null]})}function Yn(n){const s=Math.max(1,Math.round((Date.now()-n)/6e4));if(s<60)return`${s}m`;const t=Math.round(s/60);return t<24?`${t}h`:`${Math.round(t/24)}d`}function $e({sessions:n,selectedId:s,imagesById:t,runSummaryBySession:a={},onSelect:i,onRename:l,onDelete:r}){const{t:c}=j();return e.jsx("div",{className:"agent-session-list",children:n.map(o=>{const g=o.lastImageId?t[o.lastImageId]:null;return e.jsxs("div",{className:`agent-session-row${o.id===s?" is-active":""}`,children:[e.jsxs("button",{type:"button","aria-current":o.id===s?"page":void 0,onClick:()=>i(o.id),children:[e.jsx("span",{className:"agent-session-row__thumb",children:g?e.jsx(V,{src:g.thumbUrl??g.url,alt:"",iconSize:17}):e.jsx(H,{size:17})}),e.jsxs("span",{className:"agent-session-row__body",children:[e.jsx("strong",{children:o.title}),e.jsxs("span",{children:[c("agent.imageCount",{count:o.imageCount})," · ",Yn(o.updatedAt)]})]}),e.jsxs("span",{className:"agent-session-row__badges",children:[e.jsx(Jn,{summary:a[o.id]}),o.webSearchEnabled?e.jsx("em",{title:c("agent.web"),children:"W"}):null,o.compacted?e.jsx("em",{title:c("agent.compacted"),children:"C"}):null]})]}),e.jsxs("div",{className:"agent-session-row__actions",children:[e.jsx("button",{type:"button",onClick:()=>l(o.id),"aria-label":c("agent.renameSession"),title:c("agent.renameSession"),children:e.jsx(jn,{size:14})}),e.jsx("button",{type:"button",onClick:()=>r(o.id),"aria-label":c("agent.deleteSession"),title:c("agent.deleteSession"),children:e.jsx(xn,{size:14})})]})]},o.id)})})}function Zn({open:n,sessions:s,selectedId:t,imagesById:a,runSummaryBySession:i,onClose:l,onCreate:r,onSelect:c,onRename:o,onDelete:g}){const{t:u}=j(),[h,p]=m.useState(""),f=m.useCallback(()=>l(),[l]),S=qe(n,f),k=m.useMemo(()=>{const E=h.trim().toLowerCase();return E?s.filter(q=>q.title.toLowerCase().includes(E)):s},[h,s]);return n?e.jsxs("div",{className:"agent-dialog agent-dialog--drawer",role:"presentation",children:[e.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:l,"aria-label":u("agent.closeSessions")}),e.jsxs("section",{ref:S,className:"agent-session-drawer",role:"dialog","aria-modal":"true","aria-label":u("agent.sessions"),children:[e.jsxs("header",{children:[e.jsx("strong",{children:u("agent.sessions")}),e.jsx("button",{type:"button",onClick:l,"aria-label":u("agent.closeSessions"),children:e.jsx(Ie,{size:17})})]}),e.jsxs("button",{type:"button",className:"agent-sessions__create",onClick:r,children:[e.jsx(Ne,{size:16}),e.jsx("span",{children:u("agent.newSession")})]}),e.jsxs("label",{className:"agent-sessions__search",children:[e.jsx(Ce,{size:15}),e.jsx("input",{value:h,onChange:E=>p(E.target.value),placeholder:u("agent.sessionSearch")})]}),e.jsx($e,{sessions:k,selectedId:t,imagesById:a,runSummaryBySession:i,onSelect:c,onRename:o,onDelete:g})]})]}):null}function et(n){const{t:s}=j(),[t,a]=m.useState(""),i=m.useMemo(()=>{const l=t.trim().toLowerCase();return l?n.sessions.filter(r=>r.title.toLowerCase().includes(l)):n.sessions},[n.sessions,t]);return e.jsx("aside",{className:"sidebar agent-session-sidebar","aria-label":s("agent.sessions"),children:e.jsxs("div",{className:"sidebar__scroll",children:[e.jsx(en,{agentSettings:n.settings,onAgentSettingsChange:n.onSettingsChange}),e.jsxs("section",{className:"agent-sessions","aria-label":s("agent.sessions"),children:[e.jsxs("button",{type:"button",className:"agent-sessions__create",onClick:n.onCreate,children:[e.jsx(Ne,{size:16}),e.jsx("span",{children:s("agent.newSession")})]}),e.jsxs("label",{className:"agent-sessions__search",children:[e.jsx(Ce,{size:15}),e.jsx("input",{value:t,onChange:l=>a(l.target.value),placeholder:s("agent.sessionSearch")})]}),e.jsx($e,{...n,sessions:i})]})]})})}function nt({layoutMode:n,session:s,currentImage:t,onOpenSessions:a,onOpenImage:i}){const{t:l}=j(),r=n==="mobile-chat-image-sheet";return e.jsxs("header",{className:"agent-topbar",children:[e.jsx("button",{type:"button",className:"agent-topbar__icon",onClick:a,"aria-label":l("agent.openSessions"),title:l("agent.openSessions"),children:e.jsx(fn,{size:18})}),e.jsxs("div",{className:"agent-topbar__title",children:[e.jsx("span",{children:l("agent.title")}),e.jsx("strong",{children:s?.title??l("agent.newSession")})]}),r?e.jsx("button",{type:"button",className:"agent-topbar__image",onClick:i,"aria-label":l("agent.openImage"),title:l("agent.openImage"),children:t?e.jsx(V,{src:t.thumbUrl??t.url,alt:"",iconSize:18}):e.jsx(H,{size:18})}):null]})}async function tt({sessionId:n,files:s,importLocalImageToHistory:t,applyWorkspace:a}){for(const i of s){const l=await t(i),r=l?we(l):null;if(!r)continue;const c=await Q(n,{currentImage:r});a(c)}}const re="agent-local-",st=`${re}pending-`;let ve=0;function ie(n){return ve+=1,`${re}${n}-${Date.now()}-${ve}`}function De(n){return n.id.startsWith(re)}function G(n){return n.id.startsWith(st)}function at(n,s){return{id:ie("user"),role:"user",text:n,imageIds:[],webFindingIds:[],status:"complete",createdAt:s}}function rt(n,s){return{id:ie("pending"),role:"assistant",text:n,imageIds:[],webFindingIds:[],status:"streaming",createdAt:s}}function it(n){return{id:ie("error"),role:"assistant",text:n,imageIds:[],webFindingIds:[],status:"error",createdAt:Date.now()}}function lt({turns:n,queueItems:s,runSummary:t,localPendingCount:a}){if(t?.status==="error"&&t.lastError)return{active:!0,status:"error",labelKey:"runError",queuedCount:t.queuedCount,runningCount:t.runningCount,lastError:t.lastError};if(t?.status==="queued")return{active:!0,status:"queued",labelKey:"pendingQueued",queuedCount:t.queuedCount,runningCount:t.runningCount};if(t?.status==="running"){const i=ot(s),l=n.some(r=>!De(r)&&r.role==="tool"&&(!i||(r.createdAt??0)>=i));return{active:!0,status:l?"running":"planning",labelKey:l?"pendingGenerating":"pendingPlanning",queuedCount:t.queuedCount,runningCount:t.runningCount}}return a>0?{active:!0,status:"planning",labelKey:"pendingPlanning",queuedCount:t?.queuedCount??0,runningCount:t?.runningCount??0}:null}function ot(n){const s=n.filter(t=>t.status==="running").sort((t,a)=>(t.startedAt??t.createdAt)-(a.startedAt??a.createdAt))[0];return s?s.startedAt??s.createdAt??null:null}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 ct(n){const s=n.filename.endsWith(".mp4");return{image:n.url,url:n.url,filename:n.filename,thumb:n.thumbUrl??void 0,prompt:n.prompt??void 0,revisedPrompt:n.revisedPrompt??null,createdAt:n.createdAt,mediaType:s?"video":"image",kind:"agent"}}function ut(n,s,t){return{...n,turnsBySession:{...n.turnsBySession,[s]:[...n.turnsBySession[s]??[],...t]}}}function dt(n,s,t,a){const i=n.turnsBySession[s]??[];return{...n,turnsBySession:{...n.turnsBySession,[s]:[...i.filter(l=>l.id!==t),it(a)]}}}function gt(n,s,t){const a={...s.turnsBySession};for(const[i,l]of Object.entries(n.turnsBySession)){const r=a[i]??[],c=new Set(r.map(u=>u.id)),o=Math.max(0,...r.map(u=>u.createdAt??0)),g=l.filter(u=>t.has(u.id)||c.has(u.id)?!1:De(u)||u.status==="streaming"?!0:(u.createdAt??0)>=o);g.length>0&&(a[i]=[...r,...g])}return{...s,turnsBySession:a}}function ht(){const{t:n}=j(),s=gn(),t=nn(),a=D(d=>d.currentImage),i=D(d=>d.importLocalImageToHistory),l=D(d=>d.addHistoryItem),r=D(d=>d.selectHistory),c=m.useRef(!1),o=m.useRef(0),g=m.useRef(null),[u,h]=m.useState(()=>se()),[p,f]=m.useState(null),[S,k]=m.useState("image"),[E,q]=m.useState("image"),[X,P]=m.useState(null),[A,L]=m.useState(!1),[M,F]=m.useState(!1),[U,I]=m.useState("reconnecting"),w=m.useCallback(d=>{h({...se(),...d}),f(d.selectedSessionId??null)},[]),x=m.useCallback((d,b)=>{const y={...se(),...d};h(v=>gt(v,y,b)),f(d.selectedSessionId??null)},[]),R=()=>{o.current+=1,I("generating")},Be=()=>{o.current=Math.max(0,o.current-1),o.current===0&&I("ready")},J=m.useCallback(async d=>{I("reconnecting");const b=await pe(d);if(b.sessions.length>0){w(b),I("ready");return}const y=await fe({title:n("agent.newSession"),currentImage:a});w(y),I("ready")},[w,a,n]),le=m.useCallback(async d=>{const b=await pe(d);x(b,new Set),I("ready")},[x]);m.useEffect(()=>{c.current||(c.current=!0,J().catch(d=>{console.error(d),I("ready")}))},[J]);const O=u.sessions.find(d=>d.id===p)??null,Y=u.currentImageId?u.imagesById[u.currentImageId]??null:null,oe=p?(u.imageIdsBySession[p]??[]).map(d=>u.imagesById[d]).filter(d=>!!d):[],Z=O?u.turnsBySession[O.id]??[]:[],Pe=Z.filter(G).length,Oe=Z.filter(d=>!G(d)),ce=p?u.queueBySession[p]??[]:[],T=p?u.runSummaryBySession[p]:void 0,ze=lt({turns:Z,queueItems:ce,runSummary:T,localPendingCount:Pe}),z=xe(O?.generationSettings),We=U==="reconnecting"?"reconnecting":o.current>0||T?.status==="queued"||T?.status==="running"?"generating":"ready",Fe=s!=="mobile-chat-image-sheet",Ue=t&&s!=="desktop-three-pane";m.useEffect(()=>{const d=Object.keys(u.imagesById);if(!g.current){(d.length>0||u.sessions.length>0)&&(g.current=new Set(d));return}const b=g.current,y=d.filter(_=>!b.has(_)).map(_=>u.imagesById[_]).filter(_=>!!_);if(y.length===0)return;for(const _ of d)b.add(_);const v=y.map(ct);for(const _ of v)l(_);const $=v.reduce((_,N)=>(N.createdAt??0)>(_.createdAt??0)?N:_);r($)},[u.imagesById,u.sessions.length,l,r]),m.useEffect(()=>{h(d=>{if(o.current>0)return d;let b=!1;const y={...d.turnsBySession};for(const[v,$]of Object.entries(y)){if($.filter(G).length===0)continue;const N=d.runSummaryBySession[v];N?.status==="queued"||N?.status==="running"||(y[v]=$.filter(ne=>!G(ne)),b=!0)}return b?{...d,turnsBySession:y}:d})},[u.turnsBySession,u.runSummaryBySession]),m.useEffect(()=>{if(!p||T?.status!=="queued"&&T?.status!=="running")return;const d=window.setInterval(()=>{le(p).catch(console.error)},600);return()=>window.clearInterval(d)},[le,p,T?.queuedCount,T?.runningCount,T?.status]);const ue=d=>{L(!1),J(d).catch(console.error)},de=()=>{fe({title:n("agent.newSession"),currentImage:null}).then(w).catch(console.error)},ge=d=>{const b=u.sessions.find(v=>v.id===d),y=window.prompt(n("agent.renameSession"),b?.title??"");y?.trim()&&Q(d,{title:y.trim()}).then(w).catch(console.error)},me=d=>{const b=u.sessions.find(y=>y.id===d);!b||!window.confirm(n("agent.deleteConfirm",{title:b.title}))||sn(d).then(w).catch(console.error)},K=d=>{if(!p)return;const b=xe({...z,...d});h(y=>({...y,sessions:y.sessions.map(v=>v.id===p?{...v,generationSettings:b,webSearchEnabled:b.webSearchEnabled}:v)})),Q(p,{generationSettings:d}).then(w).catch(console.error)},Ke=d=>{K({webSearchEnabled:d})},ee=d=>{if(!p||u.currentImageId===d)return;const b=p;h(y=>({...y,currentImageId:d})),Q(b,{currentImageId:d}).then(w).catch(console.error)},Ge=d=>{P({id:Date.now(),text:d})},Qe=d=>{rn(d).then(w).catch(console.error)},He=d=>{ln(d).then(w).catch(console.error)},Ve=d=>{!p||d.length===0||tt({sessionId:p,files:d,importLocalImageToHistory:i,applyWorkspace:w}).catch(console.error)},Xe=d=>{if(!p)return;const b=p,y=Date.now(),v=at(d,y),$=rt(n("agent.pending"),y+1),_=new Set([v.id]);R(),h(N=>ut(N,b,[v,$])),an(b,d,z).then(N=>x(N.workspace,_)).catch(N=>{const he=N instanceof Error?N.message:String(N);h(ne=>dt(ne,b,$.id,he))}).finally(Be)};return e.jsxs("main",{className:`agent-workspace agent-workspace--${s}`,"data-layout":s,"aria-label":n("agent.workspace"),children:[e.jsx(et,{sessions:u.sessions,selectedId:p??"",imagesById:u.imagesById,runSummaryBySession:u.runSummaryBySession,settings:z,onCreate:de,onSelect:ue,onRename:ge,onDelete:me,onSettingsChange:K}),Ue?e.jsx(nt,{layoutMode:s,session:O,currentImage:Y,onOpenSessions:()=>L(!0),onOpenImage:()=>F(!0)}):null,e.jsxs("div",{className:"agent-workspace__body",children:[e.jsx(Dn,{session:O,turns:Oe,imagesById:u.imagesById,currentImageId:u.currentImageId,runtimeStatus:We,runProgress:ze,settings:z,insertedPrompt:X,onSettingsChange:K,onWebSearchChange:Ke,onAttachFiles:Ve,onImageSelect:ee,onSend:Xe}),Fe?e.jsx(Xn,{currentImage:Y,images:oe,contextTab:S,sidebarTab:E,queueItems:ce,runSummary:T,settings:z,onContextTabChange:k,onSidebarTabChange:q,onImageSelect:ee,onSettingsChange:K,onInsertPrompt:Ge,onCancelQueue:Qe,onRetryQueue:He}):null]}),e.jsx(Zn,{open:A,sessions:u.sessions,selectedId:p??"",imagesById:u.imagesById,runSummaryBySession:u.runSummaryBySession,onClose:()=>L(!1),onCreate:de,onSelect:ue,onRename:ge,onDelete:me}),e.jsx(zn,{open:M,currentImage:Y,images:oe,activeTab:S,onTabChange:k,onImageSelect:ee,onClose:()=>F(!1)})]})}export{ht as AgentWorkspace};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u,q as l,j as e,s as v,a as N,e as y}from"./index-
|
|
1
|
+
import{u,q as l,j as e,s as v,a as N,e as y}from"./index-ygo6nfqx.js";function f(s){const r=s.slots.filter(c=>c.kind==="text"||c.textKind).length,d=s.slots.filter(c=>c.kind==="image").length;return`${r} text / ${d} image`}function _(){const{t:s}=u(),r=l(t=>t.templates),d=l(t=>t.imageTemplateId),c=l(t=>t.setImageTemplate);return e.jsxs("section",{className:"card-news-panel",children:[e.jsxs("div",{className:"card-news-panel__head",children:[e.jsx("span",{children:s("cardNews.imageTemplate")}),e.jsx("button",{type:"button",disabled:!0,title:s("cardNews.newTemplateLater"),children:"+"})]}),e.jsx("div",{className:"card-news-template-grid",children:r.map(t=>e.jsxs("button",{type:"button",className:`card-news-template${d===t.id?" selected":""}`,onClick:()=>c(t.id),children:[e.jsx("img",{src:t.previewUrl,alt:""}),e.jsxs("span",{className:"card-news-template__body",children:[e.jsx("span",{className:"card-news-template__name",children:t.name}),e.jsx("span",{className:"card-news-template__meta",children:f(t)}),e.jsx("span",{className:"card-news-template__sizes",children:t.recommendedOutputSizes.join(" · ")})]})]},t.id))})]})}function k(){const{t:s}=u(),r=l(t=>t.roleTemplates),d=l(t=>t.roleTemplateId),c=l(t=>t.setRoleTemplate);return e.jsxs("section",{className:"card-news-panel",children:[e.jsx("div",{className:"card-news-panel__head",children:e.jsx("span",{children:s("cardNews.roleTemplate")})}),e.jsx("div",{className:"card-news-role-row",children:r.map(t=>e.jsx("button",{type:"button",className:d===t.id?"selected":"",onClick:()=>c(t.id),children:t.name},t.id))})]})}function C({status:s,locked:r}){const{t:d}=u(),c=r?"locked":s,t=c==="queued"||c==="generating";return e.jsxs("span",{className:`card-news-status-badge card-news-status-badge--${c}`,children:[t?e.jsx("span",{className:"card-news-spinner","aria-hidden":"true"}):null,d(`cardNews.status.${c}`)]})}function T(s,r){const d=`cardNews.roles.${s}`,c=r(d);return c===d?s:c}function F(){const{t:s}=u(),r=l(t=>t.activePlan),d=l(t=>t.selectedCardId),c=l(t=>t.selectCard);return r?e.jsx("div",{className:"card-news-deck","aria-label":"Card deck",onWheel:v,children:r.cards.map(t=>e.jsxs("button",{type:"button",className:`card-news-deck-card${d===t.id?" selected":""}`,onClick:()=>c(t.id),children:[e.jsx("span",{children:String(t.order).padStart(2,"0")}),t.url?e.jsx("img",{src:t.url,alt:"",className:"card-news-deck-card__thumb"}):null,e.jsx("strong",{children:T(t.role,s)}),e.jsx("small",{children:t.headline||t.textFields.find(m=>m.renderMode==="in-image")?.text}),e.jsx(C,{status:t.status,locked:t.locked})]},t.id))}):null}const I=[];function S(){const{t:s}=u(),r=l(t=>t.activePlan?.cards??I),d=l(t=>t.generating),c={total:r.length,done:r.filter(t=>t.status==="generated").length,queued:r.filter(t=>t.status==="queued").length,errors:r.filter(t=>t.status==="error").length,skipped:r.filter(t=>t.locked||t.status==="skipped").length};return c.total?e.jsxs("div",{className:"card-news-batch-bar","aria-live":"polite",children:[e.jsx("span",{children:d?s("cardNews.progress.generating",{done:c.done,total:c.total}):s("cardNews.progress.summary",{done:c.done,total:c.total})}),e.jsx("span",{children:s("cardNews.progress.detail",{queued:c.queued,errors:c.errors,skipped:c.skipped})})]}):null}function $({meta:s}){const{t:r}=u();if(!s)return null;const d=s.mode==="structured-output"?r("cardNews.planner.structured"):s.mode==="json-mode"?r("cardNews.planner.jsonMode"):r("cardNews.planner.fallback");return e.jsxs("span",{className:"card-news-planner-badge",children:[d," · ",s.model,s.repaired?` · ${r("cardNews.planner.repaired")}`:""]})}function M(s){const r=s.textFields.filter(d=>d.renderMode==="in-image"&&d.text).map(d=>`[${d.placement}] ${d.text}`);return[s.headline,...r].filter(Boolean).join(`
|
|
2
2
|
`)}function E(s,r){const d=s.slotId?r?.slots.find(c=>c.id===s.slotId):null;return d?{left:`${d.x/20.48}%`,top:`${d.y/20.48}%`,width:`${d.w/20.48}%`,minHeight:`${d.h/20.48}%`}:P(s)}const w={"top-left":{left:"10%",top:"10%",width:"34%"},"top-center":{left:"50%",top:"10%",width:"42%",transform:"translateX(-50%)"},"top-right":{right:"10%",top:"10%",width:"34%"},"center-left":{left:"10%",top:"50%",width:"34%",transform:"translateY(-50%)"},center:{left:"50%",top:"50%",width:"44%",transform:"translate(-50%, -50%)"},"center-right":{right:"10%",top:"50%",width:"34%",transform:"translateY(-50%)"},"bottom-left":{left:"10%",bottom:"10%",width:"34%"},"bottom-center":{left:"50%",bottom:"10%",width:"42%",transform:"translateX(-50%)"},"bottom-right":{right:"10%",bottom:"10%",width:"34%"},free:{left:"50%",top:"50%",width:"44%",transform:"translate(-50%, -50%)"}};function P(s){return w[s.placement]||w.center}function L(){const{t:s}=u(),r=l(a=>a.activePlan),d=l(a=>a.selectedCardId),c=l(a=>a.selectedTextFieldId),t=l(a=>a.templates),m=l(a=>a.plannerMeta),o=l(a=>a.retryCard),p=l(a=>a.selectTextField),i=r?.cards.find(a=>a.id===d)||r?.cards[0],x=r?t.find(a=>a.id===r.imageTemplateId):void 0,n=i?.textFields.filter(a=>a.renderMode==="in-image")||[];return!r||!i?e.jsxs("section",{className:"card-news-empty",children:[e.jsxs("div",{className:"card-news-empty__deck","aria-hidden":"true",children:[e.jsx("div",{className:"card-news-empty__card card-news-empty__card--back"}),e.jsx("div",{className:"card-news-empty__card card-news-empty__card--mid"}),e.jsxs("div",{className:"card-news-empty__card",children:[e.jsx("span",{}),e.jsx("strong",{}),e.jsx("em",{})]})]}),e.jsxs("div",{className:"card-news-empty__copy",children:[e.jsx("span",{children:s("uiMode.cardNews")}),e.jsx("h2",{children:s("cardNews.emptyTitle")}),e.jsx("p",{children:s("cardNews.emptyBody")})]})]}):e.jsxs("section",{className:"card-news-stage",children:[e.jsxs("div",{className:"card-news-stage__header",children:[e.jsxs("div",{children:[e.jsx("h2",{children:r.title}),e.jsx("p",{children:r.generationStrategy}),e.jsx($,{meta:m})]}),e.jsxs("span",{children:[i.order," / ",r.cards.length]})]}),e.jsx(S,{}),e.jsxs("div",{className:"card-news-preview",children:[i.status==="queued"||i.status==="generating"?e.jsx("div",{className:"card-news-preview__loading",children:s("cardNews.progress.cardGenerating")}):i.status==="error"?e.jsxs("div",{className:"card-news-preview__error",children:[e.jsx("span",{children:i.error||s("cardNews.error")}),i.locked?null:e.jsx("button",{type:"button",onClick:()=>{o(i.id)},children:s("cardNews.retryCard")})]}):i.url?e.jsx("img",{src:i.url,alt:i.headline}):e.jsx("div",{className:"card-news-preview__slot"}),n.length?e.jsx("div",{className:"card-news-stage-overlay",children:n.map(a=>e.jsx("button",{type:"button",className:`card-news-stage-overlay__field card-news-stage-overlay__field--${a.placement}${c===a.id?" selected":""}`,style:E(a,x),onClick:()=>p(a.id),"aria-label":s("cardNews.selectTextField",{text:a.text||a.kind}),children:e.jsx("span",{children:a.text||a.kind})},a.id))}):null]}),i.url?e.jsxs("div",{className:"card-news-result-actions",children:[e.jsx("button",{type:"button",onClick:()=>navigator.clipboard?.writeText(i.visualPrompt),children:s("cardNews.actions.copyPrompt")}),e.jsx("button",{type:"button",onClick:()=>navigator.clipboard?.writeText(M(i)),children:s("cardNews.actions.copyCopy")}),e.jsx("a",{href:i.url,target:"_blank",rel:"noreferrer",children:s("cardNews.actions.openImage")}),e.jsx("a",{href:i.url,download:!0,children:s("cardNews.actions.downloadCard")})]}):null]})}function g(s,r){const d=`cardNews.placements.${s}`,c=r(d);return c===d?s:c}function R({placement:s}){const{t:r}=u();return e.jsx("span",{className:"card-news-placement-chip",children:g(s,r)})}const B=["headline","body","caption","cta","badge","number"],D=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right","free"],q=["in-image","ui-only"],K=["primary","secondary","supporting"];function h(s,r,d){const c=`cardNews.${s}.${r}`,t=d(c);return t===c?r:t}function A({field:s,locked:r,selected:d=!1,onSelect:c,onChange:t,onRemove:m}){const{t:o}=u(),p=s.text.length,i=typeof s.maxChars=="number"&&p>s.maxChars,x=s.maxChars===null||s.maxChars>80;return e.jsxs("div",{className:`card-news-text-field-card${d?" selected":""}`,onClick:c,children:[e.jsxs("div",{className:"card-news-text-field-card__header",children:[e.jsx("span",{children:h("textKinds",s.kind,o)}),e.jsx(R,{placement:s.placement})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:o("cardNews.textFieldText")}),x?e.jsx("textarea",{value:s.text,disabled:r,onChange:n=>t({text:n.target.value,source:"user"})}):e.jsx("input",{value:s.text,disabled:r,onChange:n=>t({text:n.target.value,source:"user"})})]}),e.jsxs("div",{className:"card-news-text-field-card__grid",children:[e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:o("cardNews.textKind")}),e.jsx("select",{value:s.kind,disabled:r,onChange:n=>t({kind:n.target.value,source:"user"}),children:B.map(n=>e.jsx("option",{value:n,children:h("textKinds",n,o)},n))})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:o("cardNews.placement")}),e.jsx("select",{value:s.placement,disabled:r,onChange:n=>t({placement:n.target.value,source:"user"}),children:D.map(n=>e.jsx("option",{value:n,children:g(n,o)},n))})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:o("cardNews.renderMode")}),e.jsx("select",{value:s.renderMode,disabled:r,onChange:n=>t({renderMode:n.target.value,source:"user"}),children:q.map(n=>e.jsx("option",{value:n,children:h("renderModes",n,o)},n))})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:o("cardNews.hierarchyLabel")}),e.jsx("select",{value:s.hierarchy,disabled:r,onChange:n=>t({hierarchy:n.target.value,source:"user"}),children:K.map(n=>e.jsx("option",{value:n,children:h("hierarchy",n,o)},n))})]})]}),e.jsxs("div",{className:`card-news-text-field-card__meta${i?" over":""}`,children:[e.jsx("span",{children:s.maxChars===null?p:`${p}/${s.maxChars}`}),i?e.jsx("span",{children:o("cardNews.textTooLong")}):null,m?e.jsx("button",{type:"button",disabled:r,onClick:m,children:o("cardNews.removeTextField")}):null]})]})}function H(){return{id:`tf_${Date.now().toString(36)}`,kind:"body",text:"",renderMode:"in-image",placement:"center",slotId:null,hierarchy:"supporting",maxChars:null,language:null,source:"user"}}function Y(){const{t:s}=u(),r=l(a=>a.activePlan),d=l(a=>a.selectedCardId),c=l(a=>a.selectedTextFieldId),t=l(a=>a.updateCard),m=l(a=>a.updateTextField),o=l(a=>a.addTextField),p=l(a=>a.removeTextField),i=l(a=>a.selectTextField),x=l(a=>a.retryCard),n=r?.cards.find(a=>a.id===d)||r?.cards[0];return n?e.jsxs("aside",{className:"card-news-inspector",children:[e.jsx("div",{className:"section-title",children:s("cardNews.inspector")}),e.jsxs("div",{className:"card-news-inspector-group",children:[e.jsx("span",{className:"card-news-inspector-label",children:s("cardNews.cardTitle")}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:s("cardNews.headline")}),e.jsx("input",{value:n.headline,disabled:n.locked,onChange:a=>t(n.id,{headline:a.target.value})})]})]}),e.jsxs("div",{className:"card-news-inspector-group",children:[e.jsxs("div",{className:"card-news-inspector-row",children:[e.jsx("span",{className:"card-news-inspector-label",children:s("cardNews.textFields")}),e.jsx("button",{type:"button",className:"secondary-btn",disabled:n.locked,onClick:()=>o(n.id,H()),children:s("cardNews.addTextField")})]}),n.textFields.length?n.textFields.map(a=>e.jsx(A,{field:a,locked:n.locked,selected:c===a.id,onSelect:()=>i(a.id),onChange:b=>m(n.id,a.id,b),onRemove:()=>p(n.id,a.id)},a.id)):e.jsx("p",{className:"card-news-muted",children:s("cardNews.noTextFields")})]}),e.jsxs("details",{className:"card-news-inspector-group card-news-advanced-prompt",children:[e.jsx("summary",{children:s("cardNews.designPrompt")}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:s("cardNews.visualPrompt")}),e.jsx("textarea",{value:n.visualPrompt,disabled:n.locked,onChange:a=>t(n.id,{visualPrompt:a.target.value})})]})]}),n.imageFilename?e.jsxs("div",{className:"card-news-generated-meta",children:[e.jsx("span",{children:s("cardNews.generatedMeta")}),e.jsx("code",{children:n.imageFilename}),e.jsx("span",{children:n.status})]}):null,n.locked?e.jsx("p",{className:"card-news-locked-help",children:s("cardNews.lockedHelp")}):null,e.jsx("button",{type:"button",className:`secondary-btn${n.locked?" active":""}`,onClick:()=>t(n.id,{locked:!n.locked}),children:n.locked?s("cardNews.locked"):s("cardNews.unlocked")}),e.jsx("button",{type:"button",className:"secondary-btn",disabled:n.locked||!["draft","error"].includes(n.status),onClick:()=>{x(n.id)},children:s("cardNews.retryCard")})]}):e.jsxs("aside",{className:"card-news-inspector card-news-inspector-empty",children:[e.jsx("div",{className:"section-title",children:s("cardNews.inspector")}),e.jsxs("div",{className:"card-news-inspector-empty__mock","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("strong",{}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsx("p",{children:s("cardNews.noCard")})]})}const j="ima2:cardNewsMobileNoticeShown";function z(){const{t:s}=u(),r=y(),[d,c]=N.useState(()=>{if(typeof window>"u")return!0;try{return localStorage.getItem(j)==="1"}catch{return!1}});if(!r||d)return null;const t=()=>{try{localStorage.setItem(j,"1")}catch{}c(!0)};return e.jsxs("div",{className:"card-news-mobile-notice",role:"status",children:[e.jsx("span",{children:s("mobile.cardNewsBanner")}),e.jsx("button",{type:"button",onClick:t,children:s("mobile.dismiss")})]})}function W(){const{t:s}=u(),r=l(c=>c.hydrate),d=l(c=>c.error);return N.useEffect(()=>{r()},[r]),e.jsxs("main",{className:"card-news-workspace","aria-label":s("cardNews.workspace"),children:[e.jsx(z,{}),e.jsxs("div",{className:"card-news-setup",children:[e.jsx(_,{}),e.jsx(k,{})]}),e.jsxs("div",{className:"card-news-main",children:[d?e.jsx("div",{className:"card-news-error",role:"alert",children:d}):null,e.jsx(L,{}),e.jsx(F,{})]}),e.jsx(Y,{})]})}export{W as CardNewsWorkspace};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{N as g,u as m,b as c,a as n,j as s}from"./index-ygo6nfqx.js";async function y(){return g("/api/generation-requests")}async function x(o){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(o);return}const t=document.createElement("textarea");t.value=o,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")}finally{document.body.removeChild(t)}}function f(){const{t:o}=m(),t=c(e=>e.showToast),i=c(e=>e.activeGenerations),[a,l]=n.useState([]),[u,d]=n.useState(!0),r=n.useCallback(async()=>{try{const e=await y();l(e.items)}finally{d(!1)}},[]);n.useEffect(()=>{r()},[r,i]);const p=async e=>{try{await x(e.prompt),t(o("generationLog.copied"))}catch{t(o("toast.copyFailed"),!0)}};return u?s.jsx("div",{className:"generation-request-log__empty",children:o("common.loading")}):s.jsx("div",{className:"generation-request-log",role:"list",children:a.length===0?s.jsx("div",{className:"generation-request-log__empty",children:o("generationLog.empty")}):a.map(e=>s.jsxs("button",{type:"button",role:"listitem",className:"generation-request-log__item",onClick:()=>{p(e)},title:e.succeeded===0&&e.error?e.error:o("generationLog.copy"),children:[s.jsx("span",{className:"generation-request-log__prompt",children:e.prompt}),s.jsxs("span",{className:`generation-request-log__count${e.succeeded===0?" is-error":" is-success"}`,children:[e.succeeded,"/",e.requested]})]},e.id))})}export{f as GenerationRequestLogPanel};
|