@runfusion/fusion 0.73.0-beta.5 → 0.73.0-beta.6
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/dist/bin.js +16 -6
- package/dist/child-process-worker.js +16 -6
- package/dist/client/.vite/manifest.json +259 -259
- package/dist/client/assets/{AgentDetailView-BksUqG3-.js → AgentDetailView-jg-430Wv.js} +1 -1
- package/dist/client/assets/{AgentPermissionPolicyEditor-uXItB9Br.js → AgentPermissionPolicyEditor-0iybC0Dg.js} +1 -1
- package/dist/client/assets/{AgentsView-m8J2hu5I.js → AgentsView-DeVI7IJy.js} +3 -3
- package/dist/client/assets/ChatView-BWosYwf6.js +8 -0
- package/dist/client/assets/{CommandCenter-DHt4n__j.js → CommandCenter-CPpYSmxm.js} +1 -1
- package/dist/client/assets/{DevServerView-D7miVumP.js → DevServerView-C7Uib0ck.js} +1 -1
- package/dist/client/assets/{DirectoryPicker-C0jXctyL.js → DirectoryPicker-Ba9x3E72.js} +1 -1
- package/dist/client/assets/{DocumentsView-CghLIkD9.js → DocumentsView-DkuxxEAC.js} +1 -1
- package/dist/client/assets/{EvalsView-MIoF_8pc.js → EvalsView-DwRsXihY.js} +1 -1
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-Dz4H4H2a.js → ExperimentalAgentOnboardingModal-C2g8TiAY.js} +1 -1
- package/dist/client/assets/{GoalsView-yPwwGY-D.js → GoalsView-hQSajINq.js} +1 -1
- package/dist/client/assets/{InsightsView-DP4X2uEa.js → InsightsView-p7j5T5a8.js} +1 -1
- package/dist/client/assets/{MemoryView-m3ceUV-6.js → MemoryView-DoVBk38U.js} +1 -1
- package/dist/client/assets/{PiExtensionsManager-KuBkruy9.js → PiExtensionsManager-DzT94cPg.js} +1 -1
- package/dist/client/assets/{PluginManager-CaQ-dg5n.js → PluginManager-5DK-HUkf.js} +1 -1
- package/dist/client/assets/{PullRequestView-BPIlRW8u.js → PullRequestView-c8_Nl91A.js} +1 -1
- package/dist/client/assets/{ReportModal-DanKtCSD.js → ReportModal-BfNu73zb.js} +1 -1
- package/dist/client/assets/{ResearchView-Ch6GjDZD.js → ResearchView-Cc_DZq5v.js} +1 -1
- package/dist/client/assets/{SecretsView-DkxXeLAr.js → SecretsView-DMETxbnI.js} +1 -1
- package/dist/client/assets/{SessionTerminal-BxxAyQqQ.js → SessionTerminal-B4c2w5zb.js} +1 -1
- package/dist/client/assets/{SettingsModal-Cflm-bXE.js → SettingsModal-oTMDyzjF.js} +1 -1
- package/dist/client/assets/{SettingsModal-C2rdGmkE.js → SettingsModal-vpkxpahA.js} +3 -3
- package/dist/client/assets/{SettingsTextareaRow-DPet7lKz.js → SettingsTextareaRow-B63cJNsI.js} +1 -1
- package/dist/client/assets/{SetupWizardModal-Bf0WCI07.js → SetupWizardModal-BZnyRPT7.js} +2 -2
- package/dist/client/assets/{SkillsView-BDSG7mTv.js → SkillsView-DGwWIOqX.js} +1 -1
- package/dist/client/assets/{TodoView-5nnuGetx.js → TodoView-BoLH6qHP.js} +1 -1
- package/dist/client/assets/{WorkflowNodeEditor-BwCbQtIT.js → WorkflowNodeEditor-DHqpPcSv.js} +1 -1
- package/dist/client/assets/{WorkflowNodeEditor-BNgkFJ_P.css → WorkflowNodeEditor-nCx4nqoL.css} +1 -1
- package/dist/client/assets/{agent-import-generation-DtGkjYSm.js → agent-import-generation-Dl3UAfFr.js} +1 -1
- package/dist/client/assets/{app-DlxXzx0y.js → app-B4dURBVF.js} +1 -1
- package/dist/client/assets/{app-B5SToHBH.js → app-DLG7AA6O.js} +3 -3
- package/dist/client/assets/{app-C4OYRIp7.js → app-DfQxLcCr.js} +1 -1
- package/dist/client/assets/{app-Da8ENc4F.js → app-DxbSLeuH.js} +3 -3
- package/dist/client/assets/{app-yfHAC4cX.js → app-JOLkwq4O.js} +1 -1
- package/dist/client/assets/{app-B1lWYECC.js → app-R0cG-sq5.js} +3 -3
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-D1K8DpAy.js → architectureDiagram-3BPJPVTR-DRSMeXsR.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-CX1y35p9.js → blockDiagram-GPEHLZMM-xBxQf_Gy.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-BcbbCnmZ.js → c4Diagram-AAUBKEIU-CememwlP.js} +1 -1
- package/dist/client/assets/channel-DwxxVJWv.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-Wp3zyvV2.js → chunk-2J33WTMH-B62t8Ow1.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-BuVwTDYq.js → chunk-4BX2VUAB-CHzxnH6A.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CzvhQEXs.js → chunk-55IACEB6-BXJotoWf.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-D-MIVOud.js → chunk-727SXJPM-DGFhyp03.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-DbuidBn6.js → chunk-AQP2D5EJ-C-nRZZBE.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-uWKtFzDS.js → chunk-FMBD7UC4-CFS2iW51.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-CeSIlejj.js → chunk-ND2GUHAM-DFleK3tP.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BePmVND-.js → chunk-QZHKN3VN-E7rqTspj.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CU_MxE3u.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CU_MxE3u.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-De9Bj_SA.js → cose-bilkent-S5V4N54A-VYcUIreA.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-C5CmCySG.js → dagre-BM42HDAG-B4VeH0Nz.js} +1 -1
- package/dist/client/assets/{dashboard-view-CaUSpwyV.js → dashboard-view-BpeWPcmh.js} +1 -1
- package/dist/client/assets/{dashboard-view-DsfVW3-8.js → dashboard-view-DGcOsOey.js} +1 -1
- package/dist/client/assets/{dashboard-view-j5rWyrQJ.js → dashboard-view-DoNpCbHQ.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-DaZNoDA8.js → diagram-2AECGRRQ-BM8FU7fY.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-BLSbdVaK.js → diagram-5GNKFQAL-Do8IJG5T.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-BSzU_Az3.js → diagram-KO2AKTUF-C_-zygdh.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-RsRkbaSM.js → diagram-LMA3HP47-CSPiBke9.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-ChiWoR2j.js → diagram-OG6HWLK6-BVuoiZg-.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-tJJ6w1wS.js → erDiagram-TEJ5UH35-CIY48OYH.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-BswRtnqd.js → flowDiagram-I6XJVG4X-B6zav8SR.js} +1 -1
- package/dist/client/assets/{folder-open-DzTYX9Fp.js → folder-open-Dc23V8n6.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-QrrkFyh_.js → ganttDiagram-6RSMTGT7-_F49rUcG.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-4kdeySLk.js → gitGraphDiagram-PVQCEYII-Fk-V-buo.js} +1 -1
- package/dist/client/assets/index-D8TQBkB7.js +2661 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-B8jwktA0.js → infoDiagram-5YYISTIA-DvnBGHv4.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-uZUucrZK.js → ishikawaDiagram-YF4QCWOH-Df7TrITT.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-CtT0-QvG.js → journeyDiagram-JHISSGLW-CieUO8Cz.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-BHEP6Q_z.js → kanban-definition-UN3LZRKU-BBR_Cj7I.js} +1 -1
- package/dist/client/assets/{mermaid.core-CyUOdPCI.js → mermaid.core-whEVIkYk.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-BnKIdn6I.js → mindmap-definition-RKZ34NQL-utsoG884.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-CLlvgGA1.js → pieDiagram-4H26LBE5-B6_-ma_S.js} +1 -1
- package/dist/client/assets/{puzzle-Dz37Zb-E.js → puzzle-CY7o6u4N.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-D9JMXqPE.js → quadrantDiagram-W4KKPZXB-CCAEPNEU.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DlA5s0oV.js → requirementDiagram-4Y6WPE33-C0rKKe1e.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-jZ9qX2PX.js → sankeyDiagram-5OEKKPKP-DpeRsnkc.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-PtwRRZmQ.js → sequenceDiagram-3UESZ5HK-DWYg86A1.js} +1 -1
- package/dist/client/assets/{shield-alert-BjiTG99h.js → shield-alert-j_jHfoeI.js} +1 -1
- package/dist/client/assets/{standing-instructions-template-DJCF_18R.js → standing-instructions-template-CCI99V8d.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-CUxFPOtf.js → stateDiagram-AJRCARHV-CalOQ-6v.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-BZquUTBi.js → stateDiagram-v2-BHNVJYJU-Dd8RLebl.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-HZQcinlS.js → timeline-definition-PNZ67QCA-D1PZw-aB.js} +1 -1
- package/dist/client/assets/{upload-C3LesDmE.js → upload-CFL3ZlNN.js} +1 -1
- package/dist/client/assets/{users-DGiK8Vco.js → users-DGOPLxzy.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-DRSTmg6N.js → vennDiagram-CIIHVFJN-DKQAihMR.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-DXS5Hs7x.js → wardley-L42UT6IY-B_XzYoGe.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-CBPGDv2m.js → wardleyDiagram-YWT4CUSO-DBu7IvQK.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-Bflc25BH.js → xychartDiagram-2RQKCTM6-CKrqMXvh.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/client/version.json +1 -1
- package/dist/extension.js +16 -6
- package/package.json +1 -1
- package/dist/client/assets/ChatView-DsAg47W3.js +0 -8
- package/dist/client/assets/channel-DU48uM5V.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BunN9MnY.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BunN9MnY.js +0 -1
- package/dist/client/assets/index-DReijQe4.js +0 -2661
package/dist/client/assets/{SettingsTextareaRow-DPet7lKz.js → SettingsTextareaRow-B63cJNsI.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as h,j as e}from"./vendor-react-SZ_qB27O.js";import{u as j}from"./vendor-i18n-GF3RlKbq.js";import{d2 as S,a$ as E}from"./index-
|
|
1
|
+
import{r as h,j as e}from"./vendor-react-SZ_qB27O.js";import{u as j}from"./vendor-i18n-GF3RlKbq.js";import{d2 as S,a$ as E}from"./index-D8TQBkB7.js";const b="fusion:settings-help-open";function y({children:s,settingKey:l}){const{t:n}=j("app"),[c,o]=h.useState(!1),a=h.useRef(null),p=h.useId(),d=`settings-help-${l??p}`;h.useEffect(()=>{const t=i=>{i.detail!==d&&o(!1)};return document.addEventListener(b,t),()=>document.removeEventListener(b,t)},[d]);const u=()=>{o(t=>{const i=!t;return i&&document.dispatchEvent(new CustomEvent(b,{detail:d})),i})};return h.useEffect(()=>{if(!c)return;const t=r=>{a.current?.contains(r.target)||o(!1)},i=r=>{r.key==="Escape"&&(r.stopPropagation(),o(!1))};return document.addEventListener("pointerdown",t,!0),document.addEventListener("keydown",i,!0),()=>{document.removeEventListener("pointerdown",t,!0),document.removeEventListener("keydown",i,!0)}},[c]),e.jsxs("span",{className:"settings-help","data-open":c?"true":"false",ref:a,children:[e.jsx("button",{type:"button",className:"settings-help-trigger","aria-label":n("settings.help.show","Show help"),"aria-expanded":c,"aria-describedby":d,"data-testid":l?`settings-help-${l}`:void 0,onClick:u,children:e.jsx(S,{size:13,"aria-hidden":!0})}),e.jsx("span",{id:d,role:"note",className:"settings-help-bubble",children:s})]})}const N=h.createContext({highlightedKey:null});function L({highlightedKey:s,children:l}){const n=h.useMemo(()=>({highlightedKey:s}),[s]);return e.jsx(N.Provider,{value:n,children:l})}function k(s){const{highlightedKey:l}=h.useContext(N);return s!==void 0&&s===l}function m({htmlFor:s,label:l,help:n,error:c,scope:o,disabled:a,clearable:p,onClear:d,inlineControl:u,children:t}){const{t:i}=j("app"),r=k(s),g=e.jsxs("div",{className:"settings-field-row-control",children:[t,p&&e.jsx("button",{type:"button",className:"settings-field-row-clear","aria-label":i("settings.clearToDefault","Reset to default"),title:i("settings.clearToDefault","Reset to default"),disabled:a,onClick:d,children:e.jsx(E,{size:13,"aria-hidden":!0})})]}),f=e.jsxs(e.Fragment,{children:[e.jsx("label",{className:"settings-field-row-label",htmlFor:s,children:l}),o&&e.jsx("span",{className:`settings-field-row-scope settings-field-row-scope--${o}`,"data-testid":"settings-field-row-scope",children:o}),n&&e.jsx(y,{settingKey:s,children:n})]});return e.jsxs("div",{className:`settings-field-row${u?" settings-field-row--inline":""}${a?" is-disabled":""}${r?" is-search-match":""}`,"data-settings-key":s,children:[e.jsxs("div",{className:"settings-field-row-head",children:[u&&g,e.jsx("div",{className:"settings-field-row-labelgroup",children:f})]}),!u&&g,c&&e.jsx("p",{className:"settings-field-row-error",role:"alert",children:c})]})}function $({descriptor:s,value:l,onChange:n,error:c,clearable:o}){const{key:a,label:p,help:d,scope:u,disabled:t}=s;return e.jsx(m,{htmlFor:a,label:p,help:d,error:c,scope:u,disabled:t,clearable:o,onClear:()=>n(null),inlineControl:!0,children:e.jsx("label",{className:"settings-toggle",children:e.jsx("input",{id:a,type:"checkbox",checked:l===!0,disabled:t,onChange:i=>n(i.target.checked)})})})}function P({descriptor:s,value:l,onChange:n,error:c,clearable:o}){const{key:a,label:p,help:d,scope:u,disabled:t,options:i}=s;return e.jsx(m,{htmlFor:a,label:p,help:d,error:c,scope:u,disabled:t,clearable:o,onClear:()=>n(null),children:e.jsx("select",{id:a,className:"select settings-select",value:l??"",disabled:t,onChange:r=>n(r.target.value),children:i.map(r=>e.jsx("option",{value:r.value,children:r.label},r.value))})})}function H({descriptor:s,value:l,onChange:n,error:c,clearable:o}){const{key:a,label:p,help:d,scope:u,disabled:t,min:i,max:r,step:g,placeholder:f}=s;return e.jsx(m,{htmlFor:a,label:p,help:d,error:c,scope:u,disabled:t,clearable:o,onClear:()=>n(null),children:e.jsx("input",{id:a,className:"input settings-number",type:"number",value:l??"",min:i,max:r,step:g,placeholder:f,disabled:t,onChange:x=>{const v=x.target.value;if(v==="")return n(null);const w=Number(v);Number.isNaN(w)||n(w)}})})}function I({descriptor:s,value:l,onChange:n,error:c,clearable:o}){const{key:a,label:p,help:d,scope:u,disabled:t,placeholder:i,type:r,autoComplete:g}=s,f=g??(r==="password"?"off":void 0);return e.jsx(m,{htmlFor:a,label:p,help:d,error:c,scope:u,disabled:t,clearable:o,onClear:()=>n(null),children:e.jsx("input",{id:a,className:"input settings-text",type:r??"text",autoComplete:f,value:l??"",placeholder:i,disabled:t,onChange:x=>n(x.target.value)})})}function D({descriptor:s,value:l,onChange:n,error:c,clearable:o}){const{key:a,label:p,help:d,scope:u,disabled:t,placeholder:i}=s;return e.jsx(m,{htmlFor:a,label:p,help:d,error:c,scope:u,disabled:t,clearable:o,onClear:()=>n(null),children:e.jsx("textarea",{id:a,className:"input settings-textarea",value:l??"",placeholder:i,disabled:t,rows:3,onChange:r=>n(r.target.value)})})}export{m as S,I as a,D as b,P as c,H as d,$ as e,y as f,L as g};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ExperimentalAgentOnboardingModal-
|
|
2
|
-
import{aa as de,B as x,ab as R,ac as L,ad as pe,ae as ue,af as me,ag as G,ah as ge,ai as he,aj as xe,ak as fe,X as je,L as M,g as we,al as W,S as Ne,am as O,an as ye,a2 as be}from"./index-DReijQe4.js";import{r as o,j as e}from"./vendor-react-SZ_qB27O.js";import{D as ke}from"./DirectoryPicker-C0jXctyL.js";import{s as D}from"./projectDetection-G3XuxD2X.js";import{u as Ce}from"./vendor-i18n-GF3RlKbq.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-reactflow-9C3XTE7_.js";import"./vendor-xterm-BNq00GSj.js";import"./folder-open-DzTYX9Fp.js";function H(c){return c.filter(p=>p.type!=="local")}function ve(c){return H(c).length>0}function S(c){const p=c.replace(/[^a-zA-Z]/g,"").toUpperCase();return p.length>=2&&p.length<=4?p:p.length>4?p.slice(0,4):"FN"}const Pe=o.lazy(()=>be(()=>import("./ExperimentalAgentOnboardingModal-Dz4H4H2a.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(c=>({default:c.ExperimentalAgentOnboardingModal})));function Te({onProjectRegistered:c,onClose:p,agentOnboardingEnabled:F=!1,includeAgentStep:f=!0}){const{t:s}=Ce("app"),{confirmWithChoice:b}=de(),_="https://discord.gg/ksrfuy7WYR",k=o.useMemo(()=>R("ceo")??x[0],[]),[B,Y]=o.useState(!0),[t,n]=o.useState(()=>({step:"manual",manualMode:"existing",manualPath:"",manualCloneUrl:"",manualName:"",manualIsolationMode:"in-process",manualNodeId:"",manualTaskPrefix:"",detectedRepos:[],workspaceMode:!1,isDetectingWorkspace:!1,registeredProject:null,selectedPresetId:k.id,agentDraft:L(k),isCreatingAgent:!1,isRegistering:!1,error:null,agentError:null,agentOutcome:null})),[E,$]=o.useState(!1),[T,C]=o.useState(!1),U=o.useRef(null),{nodes:v,loading:q}=pe(),K=v.find(a=>a.type==="local")?.id,P=o.useCallback(()=>{Y(!1),p?.()},[p]),Z=o.useCallback(()=>{if(t.registeredProject){c(t.registeredProject);return}P()},[P,c,t.registeredProject]);o.useEffect(()=>{t.agentError&&U.current?.focus()},[t.agentError]);const j=o.useRef(0),w=o.useRef(!1),V=o.useCallback(a=>{if(n(i=>{const r={manualPath:a,detectedRepos:[],workspaceMode:!1,error:null};a&&(!i.manualName||i.manualName===D(i.manualPath))&&(r.manualName=D(a));const d=r.manualName??i.manualName;return d&&(!i.manualTaskPrefix||i.manualTaskPrefix===S(D(i.manualPath)))&&(r.manualTaskPrefix=S(d)),{...i,...r}}),t.manualMode==="existing"&&a.trim()&&a.trim()!=="/"){const i=++j.current;n(r=>({...r,isDetectingWorkspace:!0})),ue(a.trim()).then(r=>{i===j.current&&n(d=>({...d,isDetectingWorkspace:!1,detectedRepos:r.repos,workspaceMode:r.isWorkspace}))}).catch(()=>{i===j.current&&n(r=>({...r,isDetectingWorkspace:!1}))})}},[t.manualMode]),z=o.useCallback(a=>{n(i=>({...i,manualMode:a,manualCloneUrl:a==="clone"?i.manualCloneUrl:"",detectedRepos:a==="existing"?i.detectedRepos:[],workspaceMode:a==="existing"?i.workspaceMode:!1,isDetectingWorkspace:!1,error:null})),j.current+=1},[]),X=o.useCallback(async()=>{const a=t.manualPath.trim(),i=t.manualName.trim(),r=t.manualCloneUrl.trim();if(!a||!i||t.manualMode==="clone"&&!r||w.current||t.isRegistering)return;w.current=!0,n(l=>({...l,isRegistering:!0,error:null}));const d=()=>{w.current=!1,n(l=>({...l,isRegistering:!1}))};let m=!1;try{const{gitCli:l}=await me();if(l&&!l.available){if(t.manualMode==="clone"){await b({title:s("setup.gitMissingTitle","Git is not installed"),message:s("setup.gitMissingCloneMessage","Cloning a repository requires Git on the Fusion host, and Git was not found. Install Git, then try again — Fusion picks it up without a restart."),confirmLabel:s("setup.gitMissingOpenDownloads","Open Git downloads"),cancelLabel:s("setup.cancel","Cancel"),alwaysAsk:!0})==="primary"&&G(l.installUrl??"https://git-scm.com/downloads"),d();return}const g=await b({title:s("setup.gitMissingTitle","Git is not installed"),message:s("setup.gitMissingMessage","Git was not found on the Fusion host. Fusion projects normally live in a git repository so agents can branch, commit, and merge work. You can install Git first (Fusion picks it up without a restart), or create the project anyway without a git repository."),confirmLabel:s("setup.gitMissingCreateAnyway","Create anyway without Git"),tertiaryLabel:s("setup.gitMissingOpenDownloads","Open Git downloads"),cancelLabel:s("setup.cancel","Cancel"),alwaysAsk:!0});if(g==="tertiary"){G(l.installUrl??"https://git-scm.com/downloads"),d();return}if(g!=="primary"){d();return}m=!0}}catch{}try{const l={name:i,path:a,isolationMode:t.manualIsolationMode,nodeId:t.manualNodeId||void 0,gitSetupMode:t.manualMode,cloneUrl:t.manualMode==="clone"?r:void 0,workspaceMode:t.manualMode==="existing"?t.workspaceMode:!1,taskPrefix:t.manualTaskPrefix.trim()||void 0,skipGitInit:m||void 0},g=await ge(l);if(!f){n(y=>({...y,isRegistering:!1})),c(g);return}n(y=>({...y,step:"agent",registeredProject:g,isRegistering:!1}))}catch(l){n(g=>({...g,isRegistering:!1,error:l instanceof Error?l.message:"Failed to register project"}))}finally{w.current=!1}},[f,c,t.manualPath,t.manualName,t.manualCloneUrl,t.manualMode,t.manualIsolationMode,t.manualNodeId,t.workspaceMode,t.manualTaskPrefix,b,s]),I=o.useCallback(a=>{const i=R(a);i&&n(r=>({...r,selectedPresetId:i.id,agentDraft:L(i),agentError:null}))},[]),J=o.useCallback((a,i)=>{const r=x.findIndex(g=>g.id===i);if(r<0)return;const d=x.length-1;let m=null;if(a.key==="ArrowDown"||a.key==="ArrowRight"?m=r===d?0:r+1:a.key==="ArrowUp"||a.key==="ArrowLeft"?m=r===0?d:r-1:a.key==="Home"?m=0:a.key==="End"&&(m=d),m===null)return;a.preventDefault();const l=x[m];I(l.id),requestAnimationFrame(()=>{document.querySelector(`[data-agent-preset-id="${l.id}"]`)?.focus()})},[I]),Q=o.useCallback(a=>{n(i=>({...i,selectedPresetId:"",agentDraft:he(a),agentError:null}))},[]),ee=o.useCallback(async()=>{if(!(!t.registeredProject||!t.agentDraft.name.trim())){n(a=>({...a,isCreatingAgent:!0,agentError:null}));try{await xe(fe(t.agentDraft),t.registeredProject.id),n(a=>({...a,step:"complete",isCreatingAgent:!1,agentOutcome:"created"}))}catch(a){if(a instanceof Error&&/already exists/i.test(a.message)){n(i=>({...i,step:"complete",isCreatingAgent:!1,agentOutcome:"created"}));return}n(i=>({...i,isCreatingAgent:!1,agentError:a instanceof Error?a.message:s("setup.firstAgentCreateError","Failed to create agent")}))}}},[t.agentDraft,t.registeredProject,s]),te=o.useCallback(()=>{n(a=>({...a,step:"complete",agentError:null,agentOutcome:"skipped"}))},[]);if(!B)return null;const A=t.manualMode==="existing",h=t.manualMode==="init",u=t.manualMode==="clone",se=u?s("setup.cloneAndRegisterProject","Clone and Register Project"):h?s("setup.initializeAndRegisterProject","Initialize and Register Project"):s("setup.registerProject","Register Project"),ae=t.manualPath.trim().length>0,ie=t.manualName.trim().length>0,ne=t.manualCloneUrl.trim().length>0,re=t.isRegistering||!ae||!ie||u&&!ne,oe=t.selectedPresetId?R(t.selectedPresetId):void 0,N=t.isCreatingAgent,le=t.selectedPresetId||k.id,ce=`modal setup-wizard-modal${t.step==="agent"?" setup-wizard-modal--agent":""}`;return e.jsxs("div",{className:"modal-overlay open setup-wizard-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"wizard-title",children:[e.jsxs("div",{className:ce,children:[e.jsxs("div",{className:"setup-wizard-header",children:[e.jsxs("div",{className:"setup-wizard-heading",children:[e.jsxs("div",{className:"setup-wizard-brand","aria-label":s("setup.brandName","Fusion"),children:[e.jsxs("svg",{className:"setup-wizard-brand-logo",width:28,height:28,viewBox:"0 0 128 128",fill:"none","aria-label":s("setup.brandLogo","Fusion logo"),role:"img",children:[e.jsx("circle",{cx:"64",cy:"64",r:"52",stroke:"currentColor",strokeWidth:"8"}),e.jsx("path",{d:"M26 101C44 82 62 64 82 45C90 37 98 30 104 24C96 35 89 47 81 60C70 79 57 95 43 108C38 112 32 108 26 101Z",fill:"currentColor"})]}),e.jsx("span",{className:"setup-wizard-brand-name",children:s("setup.brandName","Fusion")})]}),!f&&t.step==="manual"&&e.jsx("span",{className:"setup-wizard-step-context",children:s("setup.projectStepContext","Step 3 of 5 — Project · Fusion setup")}),e.jsxs("h2",{id:"wizard-title",className:"setup-wizard-title",children:[t.step==="manual"&&(f?s("setup.welcomeToFusion","Welcome to Fusion"):s("setup.titleSetUpProject","Set Up Your Project")),t.step==="agent"&&s("setup.firstAgentTitle","Create your first agent"),t.step==="complete"&&s("setup.setupCompleteTitle","Setup Complete!")]})]}),t.step!=="complete"&&t.step!=="agent"&&e.jsx("button",{className:"modal-close",onClick:P,"aria-label":s("setup.closeWizard","Close wizard"),children:e.jsx(je,{size:20})})]}),e.jsxs("div",{className:"setup-wizard-content",children:[t.step==="manual"&&e.jsxs("div",{className:"setup-wizard-manual",children:[e.jsxs("section",{className:"setup-wizard-repository-section","aria-labelledby":"setup-repository-mode-title",children:[e.jsxs("div",{className:"setup-wizard-section-heading",children:[e.jsx("h3",{id:"setup-repository-mode-title",children:s("setup.repositorySetupTitle","Repository setup")}),e.jsx("p",{children:s("setup.repositorySetupDescription","Choose how Fusion should prepare the project directory before registration.")})]}),e.jsxs("fieldset",{className:"setup-wizard-mode-switch","aria-label":s("setup.projectSetupModeAriaLabel","Project setup mode"),children:[e.jsx("legend",{children:s("setup.setupMode","Setup Mode")}),e.jsxs("label",{className:`setup-wizard-mode-option${A?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"setup-mode",value:"existing","aria-label":s("setup.useExistingDirectory","Use Existing Directory"),checked:A,onChange:()=>z("existing")}),e.jsxs("span",{className:"setup-wizard-mode-option-copy",children:[e.jsx("strong",{children:s("setup.useExistingDirectory","Use Existing Directory")}),e.jsx("span",{children:s("setup.useExistingDirectoryHint","Register a folder that is already a git repository or workspace root.")})]})]}),e.jsxs("label",{className:`setup-wizard-mode-option${h?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"setup-mode",value:"init","aria-label":s("setup.initializeNewRepository","Initialize New Repository"),checked:h,onChange:()=>z("init")}),e.jsxs("span",{className:"setup-wizard-mode-option-copy",children:[e.jsx("strong",{children:s("setup.initializeNewRepository","Initialize New Repository")}),e.jsx("span",{children:s("setup.initializeNewRepositoryHint","Register a selected non-git folder and let Fusion run git init on the server.")})]})]}),e.jsxs("label",{className:`setup-wizard-mode-option${u?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"setup-mode",value:"clone","aria-label":s("setup.cloneGitRepository","Clone Git Repository"),checked:u,onChange:()=>z("clone")}),e.jsxs("span",{className:"setup-wizard-mode-option-copy",children:[e.jsx("strong",{children:s("setup.cloneGitRepository","Clone Git Repository")}),e.jsx("span",{children:s("setup.cloneGitRepositoryHint","Clone a remote repository into an empty or absent destination folder.")})]})]})]})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"project-path",children:u?s("setup.destinationDirectory","Destination Directory"):h?s("setup.newRepositoryDirectory","New Repository Directory"):s("setup.projectDirectory","Project Directory")}),e.jsx(ke,{value:t.manualPath,onChange:V,nodeId:t.manualNodeId||void 0,localNodeId:K,selectCreatedDirectory:!0,placeholder:u?s("setup.clonePathPlaceholder","/path/for/new-clone"):h?s("setup.initPathPlaceholder","/path/to/new-project"):s("setup.projectPathPlaceholder","/path/to/your/project")}),e.jsx("p",{className:"form-hint",children:u?s("setup.clonePathHint","Select or type an absolute destination path. Fusion will clone into this directory. The destination must be empty or absent."):h?s("setup.initPathHint","Select or type an absolute path to an empty or non-git folder. Fusion will run git init during registration."):s("setup.projectPathHint","Select or type the absolute path to an existing git repository or workspace root.")})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"project-name",children:s("setup.projectName","Project Name")}),e.jsx("input",{id:"project-name",type:"text",value:t.manualName,onChange:a=>n(i=>({...i,manualName:a.target.value})),placeholder:s("setup.projectNamePlaceholder","my-project")}),e.jsx("p",{className:"form-hint",children:u?s("setup.projectNameHintClone","By default this follows the destination folder name unless you edit it."):h?s("setup.projectNameHintInit","By default this follows the folder name Fusion will initialize unless you edit it."):s("setup.projectNameHintExisting","By default this follows the selected directory name unless you edit it.")})]}),u&&e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"project-clone-url",children:s("setup.repositoryUrl","Repository URL")}),e.jsx("input",{id:"project-clone-url",type:"text",value:t.manualCloneUrl,onChange:a=>n(i=>({...i,manualCloneUrl:a.target.value,error:null})),placeholder:s("setup.repositoryUrlPlaceholder","https://github.com/owner/repo.git")}),e.jsx("p",{className:"form-hint",children:s("setup.cloneGitHint","Fusion will run git clone into the destination directory, then register that cloned folder.")})]}),A&&t.manualPath.trim()&&e.jsxs("div",{className:"form-group",children:[e.jsxs("label",{htmlFor:"workspace-mode",className:"checkbox-label",children:[e.jsx("input",{id:"workspace-mode",type:"checkbox",checked:t.workspaceMode,onChange:a=>n(i=>({...i,workspaceMode:a.target.checked}))}),s("setup.workspaceMode","Workspace mode (multi-repo)")]}),t.isDetectingWorkspace&&e.jsxs("p",{className:"form-hint",children:[e.jsx(M,{size:12,className:"animate-spin setup-wizard-inline-spinner"}),s("setup.detectingWorkspace","Detecting sub-repositories...")]}),!t.isDetectingWorkspace&&t.detectedRepos.length>0&&e.jsxs("p",{className:"form-hint",children:[s("setup.detectedRepos","Found {{count}} repositories:",{count:t.detectedRepos.length})," ",t.detectedRepos.join(", ")]}),!t.isDetectingWorkspace&&t.detectedRepos.length===0&&t.workspaceMode===!1&&t.manualPath.trim()&&e.jsx("p",{className:"form-hint",children:s("setup.noSubReposDetected","No sub-repositories detected. Enable if this is a multi-repo workspace.")})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"task-prefix",children:s("setup.taskPrefix","Task Prefix")}),e.jsx("input",{id:"task-prefix",type:"text",value:t.manualTaskPrefix,onChange:a=>n(i=>({...i,manualTaskPrefix:a.target.value.toUpperCase()})),placeholder:S(t.manualName||"FN"),maxLength:5}),e.jsx("p",{className:"form-hint",children:s("setup.taskPrefixHint",'Used for task IDs (e.g. "{{prefix}}-1"). Derived from project name.',{prefix:t.manualTaskPrefix||"FN"})})]}),e.jsxs("div",{className:"setup-wizard-advanced",children:[e.jsxs("button",{type:"button",className:"setup-wizard-advanced-toggle","aria-expanded":E,onClick:()=>$(a=>!a),children:[e.jsx(we,{size:16,className:"setup-wizard-advanced-chevron"}),e.jsx("span",{children:s("setup.advancedSettings","Advanced settings")})]}),E&&e.jsxs("div",{className:"setup-wizard-advanced-panel",children:[ve(v)&&e.jsxs("div",{className:"form-group",children:[e.jsxs("div",{className:"project-node-selector",children:[e.jsx("span",{className:"project-node-selector__label",children:s("setup.runtimeNode","Runtime Node")}),e.jsxs("select",{value:t.manualNodeId,onChange:a=>n(i=>({...i,manualNodeId:a.target.value})),disabled:q||t.isRegistering,children:[e.jsx("option",{value:"",children:s("setup.localNode","Local node")}),H(v).map(a=>e.jsxs("option",{value:a.id,children:[a.name," (",a.type,")"]},a.id))]})]}),e.jsx("p",{className:"form-hint",children:s("setup.runtimeNodeHint",`A runtime node is the machine where this project's tasks run. "Local node" is this computer; pick a remote node to run tasks elsewhere.`)})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:s("setup.isolationMode","Isolation Mode")}),e.jsxs("div",{className:"setup-wizard-isolation-options",children:[e.jsxs("label",{className:`setup-wizard-isolation-option${t.manualIsolationMode==="in-process"?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"isolation-mode",value:"in-process",checked:t.manualIsolationMode==="in-process",onChange:()=>n(a=>({...a,manualIsolationMode:"in-process"}))}),e.jsxs("div",{className:"setup-wizard-isolation-option-content",children:[e.jsx("strong",{children:s("setup.inProcess","In-Process")}),e.jsx("span",{children:s("setup.inProcessDesc","Lower overhead, shared memory. Best for most projects.")}),e.jsx("span",{className:"wizard-option-recommended",children:s("setup.recommended","Recommended")})]})]}),e.jsxs("label",{className:`setup-wizard-isolation-option${t.manualIsolationMode==="child-process"?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"isolation-mode",value:"child-process",checked:t.manualIsolationMode==="child-process",onChange:()=>n(a=>({...a,manualIsolationMode:"child-process"}))}),e.jsxs("div",{className:"setup-wizard-isolation-option-content",children:[e.jsx("strong",{children:s("setup.childProcess","Child-Process")}),e.jsx("span",{children:s("setup.childProcessDesc","Isolated execution with crash containment.")})]})]})]})]})]})]}),t.error&&e.jsx("div",{className:"wizard-error",role:"alert",children:t.error})]}),t.step==="agent"&&e.jsxs("div",{className:"setup-wizard-agent-step",children:[e.jsx("p",{className:"setup-wizard-agent-intro",children:s("setup.firstAgentIntro","Agents are optional. Fusion can build tasks without one by starting temporary agents for planning, coding, review, and merge. Create an agent only if you want help coordinating tasks and direction.")}),e.jsxs("div",{className:"setup-wizard-agent-layout",children:[e.jsxs("section",{className:"setup-wizard-agent-presets","aria-labelledby":"setup-first-agent-presets-heading",children:[e.jsx("div",{className:"setup-wizard-agent-section-heading",id:"setup-first-agent-presets-heading",children:s("setup.firstAgentTemplates","Templates")}),e.jsx("div",{className:"setup-wizard-agent-preset-list",role:"radiogroup","aria-label":s("setup.firstAgentTemplates","Templates"),children:x.map(a=>{const i=t.selectedPresetId===a.id;return e.jsxs("button",{type:"button",className:`setup-wizard-agent-preset${i?" selected":""}`,role:"radio","aria-checked":i,"aria-label":i?s("setup.selectedAgentTemplate","{{name}} selected",{name:a.name}):a.name,tabIndex:a.id===le?0:-1,"data-agent-preset-id":a.id,disabled:N,onClick:()=>I(a.id),onKeyDown:r=>J(r,a.id),children:[e.jsx(W,{agent:{id:a.id,icon:a.icon,name:a.name},size:28}),e.jsxs("span",{className:"setup-wizard-agent-preset-copy",children:[e.jsxs("span",{className:"setup-wizard-agent-preset-name",children:[a.name,a.id==="ceo"&&e.jsx("span",{className:"wizard-option-recommended",children:s("setup.recommended","Recommended")})]}),e.jsx("span",{className:"setup-wizard-agent-preset-description",children:a.description})]})]},a.id)})})]}),e.jsxs("section",{className:"setup-wizard-agent-preview","aria-labelledby":"setup-first-agent-preview-heading",children:[e.jsx("div",{className:"setup-wizard-agent-section-heading",id:"setup-first-agent-preview-heading",children:s("setup.firstAgentPreview","Preview")}),e.jsxs("div",{className:"setup-wizard-agent-preview-card",children:[e.jsxs("div",{className:"setup-wizard-agent-preview-title-row",children:[e.jsx(W,{agent:{id:t.selectedPresetId||"draft",icon:t.agentDraft.icon,name:t.agentDraft.name},size:36}),e.jsxs("div",{children:[e.jsx("h3",{children:t.agentDraft.name||s("setup.firstAgentDraftName","Draft agent")}),e.jsx("p",{children:t.agentDraft.title||oe?.title||s("setup.firstAgentCustomDraft","Custom agent draft")})]})]}),e.jsxs("dl",{className:"setup-wizard-agent-preview-list",children:[e.jsxs("div",{children:[e.jsx("dt",{children:s("agents.fieldRole","Role")}),e.jsx("dd",{children:t.agentDraft.role})]}),e.jsxs("div",{children:[e.jsx("dt",{children:s("agents.fieldInstructionsText","Inline Instructions")}),e.jsx("dd",{children:t.agentDraft.instructionsText||s("setup.firstAgentNoInstructions","No inline instructions yet")})]})]}),F&&e.jsxs("button",{type:"button",className:"btn setup-wizard-agent-ai-btn",onClick:()=>C(!0),disabled:N,children:[e.jsx(Ne,{size:16}),e.jsx("span",{children:s("agents.aiInterview","AI Interview")})]})]})]})]}),t.agentError&&e.jsx("div",{className:"wizard-error",role:"alert",tabIndex:-1,ref:U,children:t.agentError})]}),t.step==="complete"&&e.jsxs("div",{className:"setup-wizard-complete",children:[e.jsxs("div",{className:"setup-wizard-success-streak","aria-hidden":"true",children:[e.jsx("div",{className:"setup-wizard-success-streak-core"}),e.jsx("div",{className:"setup-wizard-success-streak-glow"})]}),e.jsx(O,{size:64,className:"success-icon"}),e.jsx("h3",{children:s("setup.allSet","All Set!")}),e.jsx("p",{children:t.agentOutcome==="created"?s("setup.firstAgentCreatedSuccess","Your project is registered and your first agent is ready."):s("setup.projectRegisteredSuccess","Your project has been registered successfully.")}),e.jsx("p",{children:t.agentOutcome==="skipped"?s("setup.firstAgentSkippedHint","You can create agents later from the Agents view."):s("setup.addMoreProjectsHint","You can add more projects anytime from the project overview.")})]})]}),e.jsxs("div",{className:"setup-wizard-footer",children:[e.jsx("a",{className:"btn setup-wizard-help-link",href:_,target:"_blank",rel:"noopener noreferrer",children:s("setup.needHelp","Need help?")}),t.step==="manual"&&e.jsx("button",{className:"btn btn-primary",onClick:X,disabled:re,children:t.isRegistering?e.jsxs(e.Fragment,{children:[e.jsx(M,{size:16,className:"animate-spin"}),e.jsx("span",{children:s("setup.registering","Registering...")})]}):e.jsx("span",{children:se})}),t.step==="agent"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn",onClick:te,disabled:N,children:s("setup.skipFirstAgent","Skip for now")}),e.jsx("button",{className:"btn btn-primary",onClick:()=>void ee(),disabled:N||!t.agentDraft.name.trim(),"aria-busy":t.isCreatingAgent,children:t.isCreatingAgent?e.jsxs(e.Fragment,{children:[e.jsx(M,{size:16,className:"animate-spin"}),e.jsx("span",{children:s("setup.creatingFirstAgent","Creating agent...")})]}):e.jsx("span",{children:s("setup.createFirstAgent","Create Agent")})})]}),t.step==="complete"&&e.jsxs("button",{className:"btn btn-primary",onClick:Z,children:[e.jsx(O,{size:16}),e.jsx("span",{children:s("setup.getStarted","Get Started")})]})]})]}),F&&T&&e.jsx(ye,{level:"modal",fallback:e.jsxs("div",{className:"wizard-error setup-wizard-agent-interview-error",role:"alert",children:[e.jsx("span",{children:s("setup.firstAgentInterviewLoadError","AI interview could not load. You can still create an agent from a template or skip this step.")}),e.jsx("button",{type:"button",className:"btn",onClick:()=>C(!1),children:s("setup.firstAgentContinueWithTemplates","Continue with templates")})]}),children:e.jsx(o.Suspense,{fallback:e.jsx("div",{className:"wizard-error setup-wizard-agent-interview-error",role:"status",children:s("setup.firstAgentInterviewLoading","Loading AI Interview...")}),children:e.jsx(Pe,{isOpen:T,onClose:()=>C(!1),onUseDraft:Q,projectId:t.registeredProject?.id,existingAgents:[],mode:"create"})})})]})}export{Te as SetupWizardModal};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ExperimentalAgentOnboardingModal-C2g8TiAY.js","assets/vendor-react-SZ_qB27O.js","assets/index-D8TQBkB7.js","assets/vendor-i18n-GF3RlKbq.js","assets/vendor-codemirror-jBKmHyH0.js","assets/vendor-reactflow-9C3XTE7_.js","assets/vendor-reactflow-C5ap-Sga.css","assets/vendor-xterm-BNq00GSj.js","assets/vendor-xterm-LZoznX6r.css","assets/index-C77ORgtm.css","assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{aa as de,B as x,ab as R,ac as L,ad as pe,ae as ue,af as me,ag as G,ah as ge,ai as he,aj as xe,ak as fe,X as je,L as M,g as we,al as W,S as Ne,am as O,an as ye,a2 as be}from"./index-D8TQBkB7.js";import{r as o,j as e}from"./vendor-react-SZ_qB27O.js";import{D as ke}from"./DirectoryPicker-Ba9x3E72.js";import{s as D}from"./projectDetection-G3XuxD2X.js";import{u as Ce}from"./vendor-i18n-GF3RlKbq.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-reactflow-9C3XTE7_.js";import"./vendor-xterm-BNq00GSj.js";import"./folder-open-Dc23V8n6.js";function H(c){return c.filter(p=>p.type!=="local")}function ve(c){return H(c).length>0}function S(c){const p=c.replace(/[^a-zA-Z]/g,"").toUpperCase();return p.length>=2&&p.length<=4?p:p.length>4?p.slice(0,4):"FN"}const Pe=o.lazy(()=>be(()=>import("./ExperimentalAgentOnboardingModal-C2g8TiAY.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(c=>({default:c.ExperimentalAgentOnboardingModal})));function Te({onProjectRegistered:c,onClose:p,agentOnboardingEnabled:F=!1,includeAgentStep:f=!0}){const{t:s}=Ce("app"),{confirmWithChoice:b}=de(),_="https://discord.gg/ksrfuy7WYR",k=o.useMemo(()=>R("ceo")??x[0],[]),[B,Y]=o.useState(!0),[t,n]=o.useState(()=>({step:"manual",manualMode:"existing",manualPath:"",manualCloneUrl:"",manualName:"",manualIsolationMode:"in-process",manualNodeId:"",manualTaskPrefix:"",detectedRepos:[],workspaceMode:!1,isDetectingWorkspace:!1,registeredProject:null,selectedPresetId:k.id,agentDraft:L(k),isCreatingAgent:!1,isRegistering:!1,error:null,agentError:null,agentOutcome:null})),[E,$]=o.useState(!1),[T,C]=o.useState(!1),U=o.useRef(null),{nodes:v,loading:q}=pe(),K=v.find(a=>a.type==="local")?.id,P=o.useCallback(()=>{Y(!1),p?.()},[p]),Z=o.useCallback(()=>{if(t.registeredProject){c(t.registeredProject);return}P()},[P,c,t.registeredProject]);o.useEffect(()=>{t.agentError&&U.current?.focus()},[t.agentError]);const j=o.useRef(0),w=o.useRef(!1),V=o.useCallback(a=>{if(n(i=>{const r={manualPath:a,detectedRepos:[],workspaceMode:!1,error:null};a&&(!i.manualName||i.manualName===D(i.manualPath))&&(r.manualName=D(a));const d=r.manualName??i.manualName;return d&&(!i.manualTaskPrefix||i.manualTaskPrefix===S(D(i.manualPath)))&&(r.manualTaskPrefix=S(d)),{...i,...r}}),t.manualMode==="existing"&&a.trim()&&a.trim()!=="/"){const i=++j.current;n(r=>({...r,isDetectingWorkspace:!0})),ue(a.trim()).then(r=>{i===j.current&&n(d=>({...d,isDetectingWorkspace:!1,detectedRepos:r.repos,workspaceMode:r.isWorkspace}))}).catch(()=>{i===j.current&&n(r=>({...r,isDetectingWorkspace:!1}))})}},[t.manualMode]),z=o.useCallback(a=>{n(i=>({...i,manualMode:a,manualCloneUrl:a==="clone"?i.manualCloneUrl:"",detectedRepos:a==="existing"?i.detectedRepos:[],workspaceMode:a==="existing"?i.workspaceMode:!1,isDetectingWorkspace:!1,error:null})),j.current+=1},[]),X=o.useCallback(async()=>{const a=t.manualPath.trim(),i=t.manualName.trim(),r=t.manualCloneUrl.trim();if(!a||!i||t.manualMode==="clone"&&!r||w.current||t.isRegistering)return;w.current=!0,n(l=>({...l,isRegistering:!0,error:null}));const d=()=>{w.current=!1,n(l=>({...l,isRegistering:!1}))};let m=!1;try{const{gitCli:l}=await me();if(l&&!l.available){if(t.manualMode==="clone"){await b({title:s("setup.gitMissingTitle","Git is not installed"),message:s("setup.gitMissingCloneMessage","Cloning a repository requires Git on the Fusion host, and Git was not found. Install Git, then try again — Fusion picks it up without a restart."),confirmLabel:s("setup.gitMissingOpenDownloads","Open Git downloads"),cancelLabel:s("setup.cancel","Cancel"),alwaysAsk:!0})==="primary"&&G(l.installUrl??"https://git-scm.com/downloads"),d();return}const g=await b({title:s("setup.gitMissingTitle","Git is not installed"),message:s("setup.gitMissingMessage","Git was not found on the Fusion host. Fusion projects normally live in a git repository so agents can branch, commit, and merge work. You can install Git first (Fusion picks it up without a restart), or create the project anyway without a git repository."),confirmLabel:s("setup.gitMissingCreateAnyway","Create anyway without Git"),tertiaryLabel:s("setup.gitMissingOpenDownloads","Open Git downloads"),cancelLabel:s("setup.cancel","Cancel"),alwaysAsk:!0});if(g==="tertiary"){G(l.installUrl??"https://git-scm.com/downloads"),d();return}if(g!=="primary"){d();return}m=!0}}catch{}try{const l={name:i,path:a,isolationMode:t.manualIsolationMode,nodeId:t.manualNodeId||void 0,gitSetupMode:t.manualMode,cloneUrl:t.manualMode==="clone"?r:void 0,workspaceMode:t.manualMode==="existing"?t.workspaceMode:!1,taskPrefix:t.manualTaskPrefix.trim()||void 0,skipGitInit:m||void 0},g=await ge(l);if(!f){n(y=>({...y,isRegistering:!1})),c(g);return}n(y=>({...y,step:"agent",registeredProject:g,isRegistering:!1}))}catch(l){n(g=>({...g,isRegistering:!1,error:l instanceof Error?l.message:"Failed to register project"}))}finally{w.current=!1}},[f,c,t.manualPath,t.manualName,t.manualCloneUrl,t.manualMode,t.manualIsolationMode,t.manualNodeId,t.workspaceMode,t.manualTaskPrefix,b,s]),I=o.useCallback(a=>{const i=R(a);i&&n(r=>({...r,selectedPresetId:i.id,agentDraft:L(i),agentError:null}))},[]),J=o.useCallback((a,i)=>{const r=x.findIndex(g=>g.id===i);if(r<0)return;const d=x.length-1;let m=null;if(a.key==="ArrowDown"||a.key==="ArrowRight"?m=r===d?0:r+1:a.key==="ArrowUp"||a.key==="ArrowLeft"?m=r===0?d:r-1:a.key==="Home"?m=0:a.key==="End"&&(m=d),m===null)return;a.preventDefault();const l=x[m];I(l.id),requestAnimationFrame(()=>{document.querySelector(`[data-agent-preset-id="${l.id}"]`)?.focus()})},[I]),Q=o.useCallback(a=>{n(i=>({...i,selectedPresetId:"",agentDraft:he(a),agentError:null}))},[]),ee=o.useCallback(async()=>{if(!(!t.registeredProject||!t.agentDraft.name.trim())){n(a=>({...a,isCreatingAgent:!0,agentError:null}));try{await xe(fe(t.agentDraft),t.registeredProject.id),n(a=>({...a,step:"complete",isCreatingAgent:!1,agentOutcome:"created"}))}catch(a){if(a instanceof Error&&/already exists/i.test(a.message)){n(i=>({...i,step:"complete",isCreatingAgent:!1,agentOutcome:"created"}));return}n(i=>({...i,isCreatingAgent:!1,agentError:a instanceof Error?a.message:s("setup.firstAgentCreateError","Failed to create agent")}))}}},[t.agentDraft,t.registeredProject,s]),te=o.useCallback(()=>{n(a=>({...a,step:"complete",agentError:null,agentOutcome:"skipped"}))},[]);if(!B)return null;const A=t.manualMode==="existing",h=t.manualMode==="init",u=t.manualMode==="clone",se=u?s("setup.cloneAndRegisterProject","Clone and Register Project"):h?s("setup.initializeAndRegisterProject","Initialize and Register Project"):s("setup.registerProject","Register Project"),ae=t.manualPath.trim().length>0,ie=t.manualName.trim().length>0,ne=t.manualCloneUrl.trim().length>0,re=t.isRegistering||!ae||!ie||u&&!ne,oe=t.selectedPresetId?R(t.selectedPresetId):void 0,N=t.isCreatingAgent,le=t.selectedPresetId||k.id,ce=`modal setup-wizard-modal${t.step==="agent"?" setup-wizard-modal--agent":""}`;return e.jsxs("div",{className:"modal-overlay open setup-wizard-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"wizard-title",children:[e.jsxs("div",{className:ce,children:[e.jsxs("div",{className:"setup-wizard-header",children:[e.jsxs("div",{className:"setup-wizard-heading",children:[e.jsxs("div",{className:"setup-wizard-brand","aria-label":s("setup.brandName","Fusion"),children:[e.jsxs("svg",{className:"setup-wizard-brand-logo",width:28,height:28,viewBox:"0 0 128 128",fill:"none","aria-label":s("setup.brandLogo","Fusion logo"),role:"img",children:[e.jsx("circle",{cx:"64",cy:"64",r:"52",stroke:"currentColor",strokeWidth:"8"}),e.jsx("path",{d:"M26 101C44 82 62 64 82 45C90 37 98 30 104 24C96 35 89 47 81 60C70 79 57 95 43 108C38 112 32 108 26 101Z",fill:"currentColor"})]}),e.jsx("span",{className:"setup-wizard-brand-name",children:s("setup.brandName","Fusion")})]}),!f&&t.step==="manual"&&e.jsx("span",{className:"setup-wizard-step-context",children:s("setup.projectStepContext","Step 3 of 5 — Project · Fusion setup")}),e.jsxs("h2",{id:"wizard-title",className:"setup-wizard-title",children:[t.step==="manual"&&(f?s("setup.welcomeToFusion","Welcome to Fusion"):s("setup.titleSetUpProject","Set Up Your Project")),t.step==="agent"&&s("setup.firstAgentTitle","Create your first agent"),t.step==="complete"&&s("setup.setupCompleteTitle","Setup Complete!")]})]}),t.step!=="complete"&&t.step!=="agent"&&e.jsx("button",{className:"modal-close",onClick:P,"aria-label":s("setup.closeWizard","Close wizard"),children:e.jsx(je,{size:20})})]}),e.jsxs("div",{className:"setup-wizard-content",children:[t.step==="manual"&&e.jsxs("div",{className:"setup-wizard-manual",children:[e.jsxs("section",{className:"setup-wizard-repository-section","aria-labelledby":"setup-repository-mode-title",children:[e.jsxs("div",{className:"setup-wizard-section-heading",children:[e.jsx("h3",{id:"setup-repository-mode-title",children:s("setup.repositorySetupTitle","Repository setup")}),e.jsx("p",{children:s("setup.repositorySetupDescription","Choose how Fusion should prepare the project directory before registration.")})]}),e.jsxs("fieldset",{className:"setup-wizard-mode-switch","aria-label":s("setup.projectSetupModeAriaLabel","Project setup mode"),children:[e.jsx("legend",{children:s("setup.setupMode","Setup Mode")}),e.jsxs("label",{className:`setup-wizard-mode-option${A?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"setup-mode",value:"existing","aria-label":s("setup.useExistingDirectory","Use Existing Directory"),checked:A,onChange:()=>z("existing")}),e.jsxs("span",{className:"setup-wizard-mode-option-copy",children:[e.jsx("strong",{children:s("setup.useExistingDirectory","Use Existing Directory")}),e.jsx("span",{children:s("setup.useExistingDirectoryHint","Register a folder that is already a git repository or workspace root.")})]})]}),e.jsxs("label",{className:`setup-wizard-mode-option${h?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"setup-mode",value:"init","aria-label":s("setup.initializeNewRepository","Initialize New Repository"),checked:h,onChange:()=>z("init")}),e.jsxs("span",{className:"setup-wizard-mode-option-copy",children:[e.jsx("strong",{children:s("setup.initializeNewRepository","Initialize New Repository")}),e.jsx("span",{children:s("setup.initializeNewRepositoryHint","Register a selected non-git folder and let Fusion run git init on the server.")})]})]}),e.jsxs("label",{className:`setup-wizard-mode-option${u?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"setup-mode",value:"clone","aria-label":s("setup.cloneGitRepository","Clone Git Repository"),checked:u,onChange:()=>z("clone")}),e.jsxs("span",{className:"setup-wizard-mode-option-copy",children:[e.jsx("strong",{children:s("setup.cloneGitRepository","Clone Git Repository")}),e.jsx("span",{children:s("setup.cloneGitRepositoryHint","Clone a remote repository into an empty or absent destination folder.")})]})]})]})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"project-path",children:u?s("setup.destinationDirectory","Destination Directory"):h?s("setup.newRepositoryDirectory","New Repository Directory"):s("setup.projectDirectory","Project Directory")}),e.jsx(ke,{value:t.manualPath,onChange:V,nodeId:t.manualNodeId||void 0,localNodeId:K,selectCreatedDirectory:!0,placeholder:u?s("setup.clonePathPlaceholder","/path/for/new-clone"):h?s("setup.initPathPlaceholder","/path/to/new-project"):s("setup.projectPathPlaceholder","/path/to/your/project")}),e.jsx("p",{className:"form-hint",children:u?s("setup.clonePathHint","Select or type an absolute destination path. Fusion will clone into this directory. The destination must be empty or absent."):h?s("setup.initPathHint","Select or type an absolute path to an empty or non-git folder. Fusion will run git init during registration."):s("setup.projectPathHint","Select or type the absolute path to an existing git repository or workspace root.")})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"project-name",children:s("setup.projectName","Project Name")}),e.jsx("input",{id:"project-name",type:"text",value:t.manualName,onChange:a=>n(i=>({...i,manualName:a.target.value})),placeholder:s("setup.projectNamePlaceholder","my-project")}),e.jsx("p",{className:"form-hint",children:u?s("setup.projectNameHintClone","By default this follows the destination folder name unless you edit it."):h?s("setup.projectNameHintInit","By default this follows the folder name Fusion will initialize unless you edit it."):s("setup.projectNameHintExisting","By default this follows the selected directory name unless you edit it.")})]}),u&&e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"project-clone-url",children:s("setup.repositoryUrl","Repository URL")}),e.jsx("input",{id:"project-clone-url",type:"text",value:t.manualCloneUrl,onChange:a=>n(i=>({...i,manualCloneUrl:a.target.value,error:null})),placeholder:s("setup.repositoryUrlPlaceholder","https://github.com/owner/repo.git")}),e.jsx("p",{className:"form-hint",children:s("setup.cloneGitHint","Fusion will run git clone into the destination directory, then register that cloned folder.")})]}),A&&t.manualPath.trim()&&e.jsxs("div",{className:"form-group",children:[e.jsxs("label",{htmlFor:"workspace-mode",className:"checkbox-label",children:[e.jsx("input",{id:"workspace-mode",type:"checkbox",checked:t.workspaceMode,onChange:a=>n(i=>({...i,workspaceMode:a.target.checked}))}),s("setup.workspaceMode","Workspace mode (multi-repo)")]}),t.isDetectingWorkspace&&e.jsxs("p",{className:"form-hint",children:[e.jsx(M,{size:12,className:"animate-spin setup-wizard-inline-spinner"}),s("setup.detectingWorkspace","Detecting sub-repositories...")]}),!t.isDetectingWorkspace&&t.detectedRepos.length>0&&e.jsxs("p",{className:"form-hint",children:[s("setup.detectedRepos","Found {{count}} repositories:",{count:t.detectedRepos.length})," ",t.detectedRepos.join(", ")]}),!t.isDetectingWorkspace&&t.detectedRepos.length===0&&t.workspaceMode===!1&&t.manualPath.trim()&&e.jsx("p",{className:"form-hint",children:s("setup.noSubReposDetected","No sub-repositories detected. Enable if this is a multi-repo workspace.")})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"task-prefix",children:s("setup.taskPrefix","Task Prefix")}),e.jsx("input",{id:"task-prefix",type:"text",value:t.manualTaskPrefix,onChange:a=>n(i=>({...i,manualTaskPrefix:a.target.value.toUpperCase()})),placeholder:S(t.manualName||"FN"),maxLength:5}),e.jsx("p",{className:"form-hint",children:s("setup.taskPrefixHint",'Used for task IDs (e.g. "{{prefix}}-1"). Derived from project name.',{prefix:t.manualTaskPrefix||"FN"})})]}),e.jsxs("div",{className:"setup-wizard-advanced",children:[e.jsxs("button",{type:"button",className:"setup-wizard-advanced-toggle","aria-expanded":E,onClick:()=>$(a=>!a),children:[e.jsx(we,{size:16,className:"setup-wizard-advanced-chevron"}),e.jsx("span",{children:s("setup.advancedSettings","Advanced settings")})]}),E&&e.jsxs("div",{className:"setup-wizard-advanced-panel",children:[ve(v)&&e.jsxs("div",{className:"form-group",children:[e.jsxs("div",{className:"project-node-selector",children:[e.jsx("span",{className:"project-node-selector__label",children:s("setup.runtimeNode","Runtime Node")}),e.jsxs("select",{value:t.manualNodeId,onChange:a=>n(i=>({...i,manualNodeId:a.target.value})),disabled:q||t.isRegistering,children:[e.jsx("option",{value:"",children:s("setup.localNode","Local node")}),H(v).map(a=>e.jsxs("option",{value:a.id,children:[a.name," (",a.type,")"]},a.id))]})]}),e.jsx("p",{className:"form-hint",children:s("setup.runtimeNodeHint",`A runtime node is the machine where this project's tasks run. "Local node" is this computer; pick a remote node to run tasks elsewhere.`)})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:s("setup.isolationMode","Isolation Mode")}),e.jsxs("div",{className:"setup-wizard-isolation-options",children:[e.jsxs("label",{className:`setup-wizard-isolation-option${t.manualIsolationMode==="in-process"?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"isolation-mode",value:"in-process",checked:t.manualIsolationMode==="in-process",onChange:()=>n(a=>({...a,manualIsolationMode:"in-process"}))}),e.jsxs("div",{className:"setup-wizard-isolation-option-content",children:[e.jsx("strong",{children:s("setup.inProcess","In-Process")}),e.jsx("span",{children:s("setup.inProcessDesc","Lower overhead, shared memory. Best for most projects.")}),e.jsx("span",{className:"wizard-option-recommended",children:s("setup.recommended","Recommended")})]})]}),e.jsxs("label",{className:`setup-wizard-isolation-option${t.manualIsolationMode==="child-process"?" selected":""}`,children:[e.jsx("input",{type:"radio",name:"isolation-mode",value:"child-process",checked:t.manualIsolationMode==="child-process",onChange:()=>n(a=>({...a,manualIsolationMode:"child-process"}))}),e.jsxs("div",{className:"setup-wizard-isolation-option-content",children:[e.jsx("strong",{children:s("setup.childProcess","Child-Process")}),e.jsx("span",{children:s("setup.childProcessDesc","Isolated execution with crash containment.")})]})]})]})]})]})]}),t.error&&e.jsx("div",{className:"wizard-error",role:"alert",children:t.error})]}),t.step==="agent"&&e.jsxs("div",{className:"setup-wizard-agent-step",children:[e.jsx("p",{className:"setup-wizard-agent-intro",children:s("setup.firstAgentIntro","Agents are optional. Fusion can build tasks without one by starting temporary agents for planning, coding, review, and merge. Create an agent only if you want help coordinating tasks and direction.")}),e.jsxs("div",{className:"setup-wizard-agent-layout",children:[e.jsxs("section",{className:"setup-wizard-agent-presets","aria-labelledby":"setup-first-agent-presets-heading",children:[e.jsx("div",{className:"setup-wizard-agent-section-heading",id:"setup-first-agent-presets-heading",children:s("setup.firstAgentTemplates","Templates")}),e.jsx("div",{className:"setup-wizard-agent-preset-list",role:"radiogroup","aria-label":s("setup.firstAgentTemplates","Templates"),children:x.map(a=>{const i=t.selectedPresetId===a.id;return e.jsxs("button",{type:"button",className:`setup-wizard-agent-preset${i?" selected":""}`,role:"radio","aria-checked":i,"aria-label":i?s("setup.selectedAgentTemplate","{{name}} selected",{name:a.name}):a.name,tabIndex:a.id===le?0:-1,"data-agent-preset-id":a.id,disabled:N,onClick:()=>I(a.id),onKeyDown:r=>J(r,a.id),children:[e.jsx(W,{agent:{id:a.id,icon:a.icon,name:a.name},size:28}),e.jsxs("span",{className:"setup-wizard-agent-preset-copy",children:[e.jsxs("span",{className:"setup-wizard-agent-preset-name",children:[a.name,a.id==="ceo"&&e.jsx("span",{className:"wizard-option-recommended",children:s("setup.recommended","Recommended")})]}),e.jsx("span",{className:"setup-wizard-agent-preset-description",children:a.description})]})]},a.id)})})]}),e.jsxs("section",{className:"setup-wizard-agent-preview","aria-labelledby":"setup-first-agent-preview-heading",children:[e.jsx("div",{className:"setup-wizard-agent-section-heading",id:"setup-first-agent-preview-heading",children:s("setup.firstAgentPreview","Preview")}),e.jsxs("div",{className:"setup-wizard-agent-preview-card",children:[e.jsxs("div",{className:"setup-wizard-agent-preview-title-row",children:[e.jsx(W,{agent:{id:t.selectedPresetId||"draft",icon:t.agentDraft.icon,name:t.agentDraft.name},size:36}),e.jsxs("div",{children:[e.jsx("h3",{children:t.agentDraft.name||s("setup.firstAgentDraftName","Draft agent")}),e.jsx("p",{children:t.agentDraft.title||oe?.title||s("setup.firstAgentCustomDraft","Custom agent draft")})]})]}),e.jsxs("dl",{className:"setup-wizard-agent-preview-list",children:[e.jsxs("div",{children:[e.jsx("dt",{children:s("agents.fieldRole","Role")}),e.jsx("dd",{children:t.agentDraft.role})]}),e.jsxs("div",{children:[e.jsx("dt",{children:s("agents.fieldInstructionsText","Inline Instructions")}),e.jsx("dd",{children:t.agentDraft.instructionsText||s("setup.firstAgentNoInstructions","No inline instructions yet")})]})]}),F&&e.jsxs("button",{type:"button",className:"btn setup-wizard-agent-ai-btn",onClick:()=>C(!0),disabled:N,children:[e.jsx(Ne,{size:16}),e.jsx("span",{children:s("agents.aiInterview","AI Interview")})]})]})]})]}),t.agentError&&e.jsx("div",{className:"wizard-error",role:"alert",tabIndex:-1,ref:U,children:t.agentError})]}),t.step==="complete"&&e.jsxs("div",{className:"setup-wizard-complete",children:[e.jsxs("div",{className:"setup-wizard-success-streak","aria-hidden":"true",children:[e.jsx("div",{className:"setup-wizard-success-streak-core"}),e.jsx("div",{className:"setup-wizard-success-streak-glow"})]}),e.jsx(O,{size:64,className:"success-icon"}),e.jsx("h3",{children:s("setup.allSet","All Set!")}),e.jsx("p",{children:t.agentOutcome==="created"?s("setup.firstAgentCreatedSuccess","Your project is registered and your first agent is ready."):s("setup.projectRegisteredSuccess","Your project has been registered successfully.")}),e.jsx("p",{children:t.agentOutcome==="skipped"?s("setup.firstAgentSkippedHint","You can create agents later from the Agents view."):s("setup.addMoreProjectsHint","You can add more projects anytime from the project overview.")})]})]}),e.jsxs("div",{className:"setup-wizard-footer",children:[e.jsx("a",{className:"btn setup-wizard-help-link",href:_,target:"_blank",rel:"noopener noreferrer",children:s("setup.needHelp","Need help?")}),t.step==="manual"&&e.jsx("button",{className:"btn btn-primary",onClick:X,disabled:re,children:t.isRegistering?e.jsxs(e.Fragment,{children:[e.jsx(M,{size:16,className:"animate-spin"}),e.jsx("span",{children:s("setup.registering","Registering...")})]}):e.jsx("span",{children:se})}),t.step==="agent"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn",onClick:te,disabled:N,children:s("setup.skipFirstAgent","Skip for now")}),e.jsx("button",{className:"btn btn-primary",onClick:()=>void ee(),disabled:N||!t.agentDraft.name.trim(),"aria-busy":t.isCreatingAgent,children:t.isCreatingAgent?e.jsxs(e.Fragment,{children:[e.jsx(M,{size:16,className:"animate-spin"}),e.jsx("span",{children:s("setup.creatingFirstAgent","Creating agent...")})]}):e.jsx("span",{children:s("setup.createFirstAgent","Create Agent")})})]}),t.step==="complete"&&e.jsxs("button",{className:"btn btn-primary",onClick:Z,children:[e.jsx(O,{size:16}),e.jsx("span",{children:s("setup.getStarted","Get Started")})]})]})]}),F&&T&&e.jsx(ye,{level:"modal",fallback:e.jsxs("div",{className:"wizard-error setup-wizard-agent-interview-error",role:"alert",children:[e.jsx("span",{children:s("setup.firstAgentInterviewLoadError","AI interview could not load. You can still create an agent from a template or skip this step.")}),e.jsx("button",{type:"button",className:"btn",onClick:()=>C(!1),children:s("setup.firstAgentContinueWithTemplates","Continue with templates")})]}),children:e.jsx(o.Suspense,{fallback:e.jsx("div",{className:"wizard-error setup-wizard-agent-interview-error",role:"status",children:s("setup.firstAgentInterviewLoading","Loading AI Interview...")}),children:e.jsx(Pe,{isOpen:T,onClose:()=>C(!1),onUseDraft:Q,projectId:t.registeredProject?.id,existingAgents:[],mode:"create"})})})]})}export{Te as SetupWizardModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as a,j as s}from"./vendor-react-SZ_qB27O.js";import{f as ms,b as us,t as vs,i as hs,d as gs,e as bs,V as ws,Z as xs,X as H,R as fs,C as js,g as ps,L as A,A as q,h as G,M as J}from"./index-DReijQe4.js";import{u as Ns}from"./vendor-i18n-GF3RlKbq.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-reactflow-9C3XTE7_.js";import"./vendor-xterm-BNq00GSj.js";const Ss=new Set([".md",".markdown",".mdx"]);function Cs(r){const d=r.toLowerCase(),j=d.lastIndexOf(".");return j<0?!1:Ss.has(d.slice(j))}function zs({projectId:r,addToast:d,onClose:j}){const{t:e}=Ns("app"),[k,p]=a.useState([]),[F,T]=a.useState(!0),[Y,V]=a.useState(!1),[I,D]=a.useState(null),[_,ss]=a.useState([]),[g,ls]=a.useState(""),[M,B]=a.useState(null),[c,N]=a.useState(null),[b,S]=a.useState(null),[es,K]=a.useState(!1),[Q,C]=a.useState(null),[y,w]=a.useState(null),[u,v]=a.useState(null),[is,z]=a.useState(!1),[$,h]=a.useState(null),m=a.useRef(null),[P,as]=a.useState(""),O=g.trim()?k.filter(l=>l.name.toLowerCase().includes(g.toLowerCase())||l.relativePath.toLowerCase().includes(g.toLowerCase())):k,x=a.useCallback(async()=>{T(!0);try{const l=await ms(r);p(l)}catch(l){const t=l instanceof Error?l.message:e("skills.loadDiscoveredError","Failed to load discovered skills");d(t,"error")}finally{T(!1)}},[r,d]),f=a.useCallback(async l=>{const t=i=>{if(!i||typeof i!="object")return!1;const n=i;if(typeof n.status=="number"&&n.status>=500)return!0;if(n.details&&typeof n.details=="object"){const L=n.details;if(typeof L.code=="string"&&L.code.startsWith("upstream_"))return!0}const o=i;return typeof o.error=="string"&&typeof o.code=="string"};V(!0),D(null);try{const i=await us(l,20,r);ss(i.entries)}catch(i){if(t(i))D(e("skills.catalogUnavailable","Catalog is temporarily unavailable. Please try again later."));else{const n=i instanceof Error?i.message:e("skills.loadCatalogError","Failed to load catalog");D(n)}}finally{V(!1)}},[r]);a.useEffect(()=>{x(),f("")},[x,f]);const ts=a.useCallback(l=>{ls(l),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{as(l),m.current=null},300)},[]);a.useEffect(()=>()=>{m.current&&(clearTimeout(m.current),m.current=null)},[]),a.useEffect(()=>{f(P)},[P,f]);const ns=a.useCallback(async(l,t)=>{const i=!t;p(n=>n.map(o=>o.id===l?{...o,toggling:!0}:o));try{await vs(l,i,r),p(n=>n.map(o=>o.id===l?{...o,enabled:i,toggling:!1}:o)),d(e(`skills.${i?"enabled":"disabled"}`,i?"Skill enabled":"Skill disabled"),"success")}catch(n){p(L=>L.map(R=>R.id===l?{...R,toggling:!1}:R));const o=n instanceof Error?n.message:e("skills.toggleError","Failed to toggle skill");d(e("skills.toggleFailed","Failed to toggle skill: {{message}}",{message:o}),"error")}},[r,d]),cs=a.useCallback(async l=>{const t=l.repo?.trim();if(!(!t||M===l.id)){B(l.id);try{await hs(t,l.slug||l.name,r),d(e("skills.installSuccess","Installed {{name}}",{name:l.name}),"success"),await x()}catch(i){const n=i instanceof Error?i.message:e("skills.installError","Failed to install skill");d(e("skills.installFailed","Failed to install {{name}}: {{message}}",{name:l.name,message:n}),"error")}finally{B(i=>i===l.id?null:i)}}},[d,M,x,r]),E=a.useCallback(async l=>{K(!0),C(null),S(null),w(null),v(null),h(null);try{const t=await gs(l,r);S(t)}catch(t){const i=t instanceof Error?t.message:e("skills.loadContentError","Failed to load skill content");C(i)}finally{K(!1)}},[r]),U=a.useCallback((l,t)=>{if(!(t&&t.target.closest(".skills-view-item-toggle"))){if(c===l){N(null),S(null),C(null),w(null),v(null),h(null);return}N(l),E(l)}},[c,E]),os=a.useCallback(l=>{c!==l&&N(l),E(l)},[E,c]),W=a.useCallback(async(l,t)=>{w(t),v(null),h(null),z(!0);try{const i=await bs(l,t,r);v(i)}catch(i){const n=i instanceof Error?i.message:e("skills.loadFileError","Failed to load file");h(n)}finally{z(!1)}},[r]),rs=a.useCallback(()=>{w(null),v(null),h(null),z(!1)},[]),X=a.useCallback(()=>{N(null),S(null),C(null),w(null),v(null),h(null)},[]),ds=a.useMemo(()=>k.find(l=>l.id===c)??null,[k,c]),Z=()=>!b||b.files.length===0?null:s.jsxs("div",{className:"skills-view-detail-files","data-testid":"skill-files",children:[s.jsxs("span",{className:"skills-view-detail-files-label",children:[e("skills.filesLabel","Files"),":"]}),b.files.map(l=>{if(l.type==="directory")return s.jsxs("span",{className:"badge badge--sm skills-view-detail-file--dir",children:[l.name,"/"]},l.relativePath);const t=y===l.relativePath;return s.jsx("button",{type:"button","data-testid":"skill-file-item",className:`badge badge--sm skills-view-detail-file${t?" skills-view-detail-file--active":""}`,onClick:()=>c&&void W(c,l.relativePath),"aria-pressed":t,"aria-label":e("skills.viewFile","View {{name}}",{name:l.name}),children:l.name},l.relativePath)})]}),ks=()=>c?es?s.jsxs("div",{className:"skills-view-detail-loading",children:[s.jsx(A,{size:16,className:"spin"}),e("skills.loadingContent","Loading skill content...")]}):Q?s.jsxs("div",{className:"skills-view-detail-error",children:[s.jsx(G,{size:14}),s.jsx("span",{children:Q}),s.jsx("button",{className:"btn btn-sm",onClick:()=>os(c),children:e("common.retry","Retry")})]}):b?y!==null?s.jsxs("div",{className:"skills-view-file-viewer","data-testid":"skill-file-viewer",children:[s.jsxs("div",{className:"skills-view-file-viewer-bar",children:[s.jsxs("button",{type:"button",className:"btn btn-sm skills-view-file-back",onClick:rs,"data-testid":"skill-file-back","aria-label":e("skills.backToSkillMd","Back to SKILL.md"),children:[s.jsx(q,{size:14}),e("skills.backToSkillMd","Back to SKILL.md")]}),s.jsx("span",{className:"skills-view-file-viewer-name",children:y})]}),is?s.jsxs("div",{className:"skills-view-detail-loading",children:[s.jsx(A,{size:16,className:"spin"}),e("skills.loadingFile","Loading file...")]}):$?s.jsxs("div",{className:"skills-view-detail-error",children:[s.jsx(G,{size:14}),s.jsx("span",{children:$}),s.jsx("button",{className:"btn btn-sm",onClick:()=>c&&void W(c,y),children:e("common.retry","Retry")})]}):u&&!u.isText?s.jsx("div",{className:"skills-view-detail-empty",children:e("skills.fileNotPreviewable","This file cannot be previewed.")}):u?Cs(u.relativePath)?s.jsx(J,{content:u.content||e("skills.emptyFile","(Empty file)"),className:"skills-view-detail-markdown",testId:"skills-view-detail-markdown"}):s.jsx("pre",{className:"skills-view-detail-content",children:u.content||e("skills.emptyFile","(Empty file)")}):null,Z()]}):s.jsxs(s.Fragment,{children:[s.jsx(J,{content:b.skillMd||e("skills.noSkillMd","(No SKILL.md found)"),className:"skills-view-detail-markdown",testId:"skills-view-detail-markdown"}),Z()]}):null:s.jsx("div",{className:"skills-view-detail-placeholder","data-testid":"skills-detail-empty",children:e("skills.selectASkill","Select a skill to view its details")});return s.jsxs("div",{className:"skills-view","data-testid":"skills-view","data-selected":c?"true":"false",children:[s.jsx(ws,{icon:xs,title:e("skills.title","Skills"),actions:s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"skills-view-count","aria-label":e("skills.discoveredCount","{{count}} discovered skills",{count:k.length}),children:[k.length," ",e("skills.discovered","discovered")]}),s.jsx("button",{className:"btn-icon skills-view-close touch-target",onClick:j,"aria-label":e("skills.closeView","Close skills view"),children:s.jsx(H,{size:16})}),s.jsxs("button",{className:"btn btn-sm",onClick:()=>void x(),disabled:F,children:[s.jsx(fs,{size:14,className:F?"spin":""}),e("common.refresh","Refresh")]})]})}),s.jsxs("div",{className:"skills-view-body",children:[s.jsx("div",{className:"skills-view__list","data-testid":"skills-list",children:s.jsxs("div",{className:"skills-view-content",children:[s.jsx("div",{className:"skills-view-search",children:s.jsx("input",{type:"text",className:"form-input",placeholder:e("skills.searchPlaceholder","Search skills..."),value:g,onChange:l=>ts(l.target.value),"aria-label":e("skills.searchLabel","Search skills")})}),s.jsxs("section",{className:"skills-view-section","aria-labelledby":"discovered-skills-title",children:[s.jsx("h3",{id:"discovered-skills-title",className:"skills-view-section-title",children:e("skills.discoveredSection","Discovered Skills")}),F?s.jsxs("div",{className:"skills-view-loading",children:[s.jsx("span",{className:"spinner"}),e("skills.loadingDiscovered","Loading discovered skills...")]}):k.length===0?s.jsx("div",{className:"skills-view-empty",children:s.jsx("p",{children:e("skills.noDiscovered","No skills discovered in this project.")})}):O.length===0?s.jsx("div",{className:"skills-view-empty",children:s.jsx("p",{children:e("skills.noMatchingDiscovered","No discovered skills match your search.")})}):s.jsx("div",{className:"skills-view-list",children:O.map(l=>{const t=c===l.id;return s.jsx("div",{children:s.jsxs("div",{className:`skills-view-item${t?" skills-view-item--selected":""}`,onClick:i=>U(l.id,i),role:"button",tabIndex:0,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),U(l.id))},"aria-expanded":t,"aria-label":e("skills.viewDetails","View details for {{name}}",{name:l.name}),children:[s.jsxs("div",{className:"skills-view-item-info",children:[s.jsxs("span",{className:"skills-view-item-name",children:[t?s.jsx(js,{size:14}):s.jsx(ps,{size:14}),s.jsx("span",{className:"skills-view-item-name-text",children:l.name})]}),s.jsx("span",{className:"skills-view-item-path",children:l.relativePath}),s.jsx("span",{className:"skills-view-item-source",children:l.metadata.source})]}),s.jsxs("label",{className:"skills-view-item-toggle",onClick:i=>i.stopPropagation(),children:[s.jsx("input",{type:"checkbox",checked:l.enabled,disabled:l.toggling,onChange:()=>void ns(l.id,l.enabled),"aria-label":e(`skills.${l.enabled?"disable":"enable"}Skill`,l.enabled?"Disable {{name}}":"Enable {{name}}",{name:l.name})}),s.jsx("span",{className:"skills-view-toggle-slider"})]})]})},l.id)})})]}),s.jsxs("section",{className:"skills-view-section","aria-labelledby":"catalog-title",children:[s.jsx("h3",{id:"catalog-title",className:"skills-view-section-title",children:e("skills.catalogSection","Skills Catalog")}),I?s.jsxs("div",{className:"skills-view-error",children:[s.jsx("p",{children:I}),s.jsx("button",{className:"btn btn-sm",onClick:()=>void f(P),children:e("common.tryAgain","Try Again")})]}):Y?s.jsxs("div",{className:"skills-view-loading",children:[s.jsx("span",{className:"spinner"}),e("skills.loadingCatalog","Loading catalog...")]}):_.length===0?s.jsx("div",{className:"skills-view-empty",children:g?s.jsx("p",{children:e("skills.noMatchingSearch","No skills match your search.")}):s.jsx("p",{children:e("skills.noCatalogAvailable","No skills available in the catalog.")})}):s.jsx("div",{className:"skills-view-grid",children:_.map(l=>{const i=!!l.repo?.trim(),n=M===l.id;return s.jsxs("div",{className:"skills-view-card",children:[s.jsxs("div",{className:"skills-view-card-header",children:[s.jsx("h4",{className:"skills-view-card-title",children:l.name}),i?s.jsxs("button",{type:"button",className:"btn btn-sm skills-view-card-install",onClick:()=>void cs(l),disabled:n,"aria-label":e("skills.installSkill","Install {{name}}",{name:l.name}),children:[n?s.jsx(A,{size:14,className:"spin"}):null,n?e("skills.installing","Installing…"):e("skills.install","Install")]}):null]}),l.description&&s.jsx("p",{className:"skills-view-card-description",children:l.description}),l.tags&&l.tags.length>0&&s.jsx("div",{className:"skills-view-card-tags",children:l.tags.map(o=>s.jsx("span",{className:"badge badge--sm",children:o},o))}),l.installs!==void 0&&s.jsx("span",{className:"skills-view-card-installs",children:e("skills.installsCount","{{value}} installs",{value:l.installs.toLocaleString()})})]},l.id)})})]})]})}),s.jsxs("div",{className:"skills-view__detail","data-testid":"skill-detail",children:[s.jsxs("div",{className:"skills-view-detail-header",children:[s.jsx("button",{type:"button",className:"btn btn-sm btn-icon skills-view-detail-back",onClick:X,"aria-label":e("skills.backToList","Back to skills"),title:e("skills.backToList","Back to skills"),"data-testid":"skills-detail-back",children:s.jsx(q,{size:14})}),s.jsx("span",{className:"skills-view-detail-title",children:ds?.name??e("skills.detailTitle","Skill")}),s.jsxs("button",{className:"btn btn-sm skills-view-detail-close",onClick:X,disabled:!c,"aria-label":e("skills.closeDetail","Close skill detail"),children:[s.jsx(H,{size:14}),e("common.close","Close")]})]}),s.jsx("div",{className:"skills-view-detail-body",children:ks()})]})]})]})}export{zs as SkillsView};
|
|
1
|
+
import{r as a,j as s}from"./vendor-react-SZ_qB27O.js";import{f as ms,b as us,t as vs,i as hs,d as gs,e as bs,V as ws,Z as xs,X as H,R as fs,C as js,g as ps,L as A,A as q,h as G,M as J}from"./index-D8TQBkB7.js";import{u as Ns}from"./vendor-i18n-GF3RlKbq.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-reactflow-9C3XTE7_.js";import"./vendor-xterm-BNq00GSj.js";const Ss=new Set([".md",".markdown",".mdx"]);function Cs(r){const d=r.toLowerCase(),j=d.lastIndexOf(".");return j<0?!1:Ss.has(d.slice(j))}function zs({projectId:r,addToast:d,onClose:j}){const{t:e}=Ns("app"),[k,p]=a.useState([]),[F,T]=a.useState(!0),[Y,V]=a.useState(!1),[I,D]=a.useState(null),[_,ss]=a.useState([]),[g,ls]=a.useState(""),[M,B]=a.useState(null),[c,N]=a.useState(null),[b,S]=a.useState(null),[es,K]=a.useState(!1),[Q,C]=a.useState(null),[y,w]=a.useState(null),[u,v]=a.useState(null),[is,z]=a.useState(!1),[$,h]=a.useState(null),m=a.useRef(null),[P,as]=a.useState(""),O=g.trim()?k.filter(l=>l.name.toLowerCase().includes(g.toLowerCase())||l.relativePath.toLowerCase().includes(g.toLowerCase())):k,x=a.useCallback(async()=>{T(!0);try{const l=await ms(r);p(l)}catch(l){const t=l instanceof Error?l.message:e("skills.loadDiscoveredError","Failed to load discovered skills");d(t,"error")}finally{T(!1)}},[r,d]),f=a.useCallback(async l=>{const t=i=>{if(!i||typeof i!="object")return!1;const n=i;if(typeof n.status=="number"&&n.status>=500)return!0;if(n.details&&typeof n.details=="object"){const L=n.details;if(typeof L.code=="string"&&L.code.startsWith("upstream_"))return!0}const o=i;return typeof o.error=="string"&&typeof o.code=="string"};V(!0),D(null);try{const i=await us(l,20,r);ss(i.entries)}catch(i){if(t(i))D(e("skills.catalogUnavailable","Catalog is temporarily unavailable. Please try again later."));else{const n=i instanceof Error?i.message:e("skills.loadCatalogError","Failed to load catalog");D(n)}}finally{V(!1)}},[r]);a.useEffect(()=>{x(),f("")},[x,f]);const ts=a.useCallback(l=>{ls(l),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{as(l),m.current=null},300)},[]);a.useEffect(()=>()=>{m.current&&(clearTimeout(m.current),m.current=null)},[]),a.useEffect(()=>{f(P)},[P,f]);const ns=a.useCallback(async(l,t)=>{const i=!t;p(n=>n.map(o=>o.id===l?{...o,toggling:!0}:o));try{await vs(l,i,r),p(n=>n.map(o=>o.id===l?{...o,enabled:i,toggling:!1}:o)),d(e(`skills.${i?"enabled":"disabled"}`,i?"Skill enabled":"Skill disabled"),"success")}catch(n){p(L=>L.map(R=>R.id===l?{...R,toggling:!1}:R));const o=n instanceof Error?n.message:e("skills.toggleError","Failed to toggle skill");d(e("skills.toggleFailed","Failed to toggle skill: {{message}}",{message:o}),"error")}},[r,d]),cs=a.useCallback(async l=>{const t=l.repo?.trim();if(!(!t||M===l.id)){B(l.id);try{await hs(t,l.slug||l.name,r),d(e("skills.installSuccess","Installed {{name}}",{name:l.name}),"success"),await x()}catch(i){const n=i instanceof Error?i.message:e("skills.installError","Failed to install skill");d(e("skills.installFailed","Failed to install {{name}}: {{message}}",{name:l.name,message:n}),"error")}finally{B(i=>i===l.id?null:i)}}},[d,M,x,r]),E=a.useCallback(async l=>{K(!0),C(null),S(null),w(null),v(null),h(null);try{const t=await gs(l,r);S(t)}catch(t){const i=t instanceof Error?t.message:e("skills.loadContentError","Failed to load skill content");C(i)}finally{K(!1)}},[r]),U=a.useCallback((l,t)=>{if(!(t&&t.target.closest(".skills-view-item-toggle"))){if(c===l){N(null),S(null),C(null),w(null),v(null),h(null);return}N(l),E(l)}},[c,E]),os=a.useCallback(l=>{c!==l&&N(l),E(l)},[E,c]),W=a.useCallback(async(l,t)=>{w(t),v(null),h(null),z(!0);try{const i=await bs(l,t,r);v(i)}catch(i){const n=i instanceof Error?i.message:e("skills.loadFileError","Failed to load file");h(n)}finally{z(!1)}},[r]),rs=a.useCallback(()=>{w(null),v(null),h(null),z(!1)},[]),X=a.useCallback(()=>{N(null),S(null),C(null),w(null),v(null),h(null)},[]),ds=a.useMemo(()=>k.find(l=>l.id===c)??null,[k,c]),Z=()=>!b||b.files.length===0?null:s.jsxs("div",{className:"skills-view-detail-files","data-testid":"skill-files",children:[s.jsxs("span",{className:"skills-view-detail-files-label",children:[e("skills.filesLabel","Files"),":"]}),b.files.map(l=>{if(l.type==="directory")return s.jsxs("span",{className:"badge badge--sm skills-view-detail-file--dir",children:[l.name,"/"]},l.relativePath);const t=y===l.relativePath;return s.jsx("button",{type:"button","data-testid":"skill-file-item",className:`badge badge--sm skills-view-detail-file${t?" skills-view-detail-file--active":""}`,onClick:()=>c&&void W(c,l.relativePath),"aria-pressed":t,"aria-label":e("skills.viewFile","View {{name}}",{name:l.name}),children:l.name},l.relativePath)})]}),ks=()=>c?es?s.jsxs("div",{className:"skills-view-detail-loading",children:[s.jsx(A,{size:16,className:"spin"}),e("skills.loadingContent","Loading skill content...")]}):Q?s.jsxs("div",{className:"skills-view-detail-error",children:[s.jsx(G,{size:14}),s.jsx("span",{children:Q}),s.jsx("button",{className:"btn btn-sm",onClick:()=>os(c),children:e("common.retry","Retry")})]}):b?y!==null?s.jsxs("div",{className:"skills-view-file-viewer","data-testid":"skill-file-viewer",children:[s.jsxs("div",{className:"skills-view-file-viewer-bar",children:[s.jsxs("button",{type:"button",className:"btn btn-sm skills-view-file-back",onClick:rs,"data-testid":"skill-file-back","aria-label":e("skills.backToSkillMd","Back to SKILL.md"),children:[s.jsx(q,{size:14}),e("skills.backToSkillMd","Back to SKILL.md")]}),s.jsx("span",{className:"skills-view-file-viewer-name",children:y})]}),is?s.jsxs("div",{className:"skills-view-detail-loading",children:[s.jsx(A,{size:16,className:"spin"}),e("skills.loadingFile","Loading file...")]}):$?s.jsxs("div",{className:"skills-view-detail-error",children:[s.jsx(G,{size:14}),s.jsx("span",{children:$}),s.jsx("button",{className:"btn btn-sm",onClick:()=>c&&void W(c,y),children:e("common.retry","Retry")})]}):u&&!u.isText?s.jsx("div",{className:"skills-view-detail-empty",children:e("skills.fileNotPreviewable","This file cannot be previewed.")}):u?Cs(u.relativePath)?s.jsx(J,{content:u.content||e("skills.emptyFile","(Empty file)"),className:"skills-view-detail-markdown",testId:"skills-view-detail-markdown"}):s.jsx("pre",{className:"skills-view-detail-content",children:u.content||e("skills.emptyFile","(Empty file)")}):null,Z()]}):s.jsxs(s.Fragment,{children:[s.jsx(J,{content:b.skillMd||e("skills.noSkillMd","(No SKILL.md found)"),className:"skills-view-detail-markdown",testId:"skills-view-detail-markdown"}),Z()]}):null:s.jsx("div",{className:"skills-view-detail-placeholder","data-testid":"skills-detail-empty",children:e("skills.selectASkill","Select a skill to view its details")});return s.jsxs("div",{className:"skills-view","data-testid":"skills-view","data-selected":c?"true":"false",children:[s.jsx(ws,{icon:xs,title:e("skills.title","Skills"),actions:s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"skills-view-count","aria-label":e("skills.discoveredCount","{{count}} discovered skills",{count:k.length}),children:[k.length," ",e("skills.discovered","discovered")]}),s.jsx("button",{className:"btn-icon skills-view-close touch-target",onClick:j,"aria-label":e("skills.closeView","Close skills view"),children:s.jsx(H,{size:16})}),s.jsxs("button",{className:"btn btn-sm",onClick:()=>void x(),disabled:F,children:[s.jsx(fs,{size:14,className:F?"spin":""}),e("common.refresh","Refresh")]})]})}),s.jsxs("div",{className:"skills-view-body",children:[s.jsx("div",{className:"skills-view__list","data-testid":"skills-list",children:s.jsxs("div",{className:"skills-view-content",children:[s.jsx("div",{className:"skills-view-search",children:s.jsx("input",{type:"text",className:"form-input",placeholder:e("skills.searchPlaceholder","Search skills..."),value:g,onChange:l=>ts(l.target.value),"aria-label":e("skills.searchLabel","Search skills")})}),s.jsxs("section",{className:"skills-view-section","aria-labelledby":"discovered-skills-title",children:[s.jsx("h3",{id:"discovered-skills-title",className:"skills-view-section-title",children:e("skills.discoveredSection","Discovered Skills")}),F?s.jsxs("div",{className:"skills-view-loading",children:[s.jsx("span",{className:"spinner"}),e("skills.loadingDiscovered","Loading discovered skills...")]}):k.length===0?s.jsx("div",{className:"skills-view-empty",children:s.jsx("p",{children:e("skills.noDiscovered","No skills discovered in this project.")})}):O.length===0?s.jsx("div",{className:"skills-view-empty",children:s.jsx("p",{children:e("skills.noMatchingDiscovered","No discovered skills match your search.")})}):s.jsx("div",{className:"skills-view-list",children:O.map(l=>{const t=c===l.id;return s.jsx("div",{children:s.jsxs("div",{className:`skills-view-item${t?" skills-view-item--selected":""}`,onClick:i=>U(l.id,i),role:"button",tabIndex:0,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),U(l.id))},"aria-expanded":t,"aria-label":e("skills.viewDetails","View details for {{name}}",{name:l.name}),children:[s.jsxs("div",{className:"skills-view-item-info",children:[s.jsxs("span",{className:"skills-view-item-name",children:[t?s.jsx(js,{size:14}):s.jsx(ps,{size:14}),s.jsx("span",{className:"skills-view-item-name-text",children:l.name})]}),s.jsx("span",{className:"skills-view-item-path",children:l.relativePath}),s.jsx("span",{className:"skills-view-item-source",children:l.metadata.source})]}),s.jsxs("label",{className:"skills-view-item-toggle",onClick:i=>i.stopPropagation(),children:[s.jsx("input",{type:"checkbox",checked:l.enabled,disabled:l.toggling,onChange:()=>void ns(l.id,l.enabled),"aria-label":e(`skills.${l.enabled?"disable":"enable"}Skill`,l.enabled?"Disable {{name}}":"Enable {{name}}",{name:l.name})}),s.jsx("span",{className:"skills-view-toggle-slider"})]})]})},l.id)})})]}),s.jsxs("section",{className:"skills-view-section","aria-labelledby":"catalog-title",children:[s.jsx("h3",{id:"catalog-title",className:"skills-view-section-title",children:e("skills.catalogSection","Skills Catalog")}),I?s.jsxs("div",{className:"skills-view-error",children:[s.jsx("p",{children:I}),s.jsx("button",{className:"btn btn-sm",onClick:()=>void f(P),children:e("common.tryAgain","Try Again")})]}):Y?s.jsxs("div",{className:"skills-view-loading",children:[s.jsx("span",{className:"spinner"}),e("skills.loadingCatalog","Loading catalog...")]}):_.length===0?s.jsx("div",{className:"skills-view-empty",children:g?s.jsx("p",{children:e("skills.noMatchingSearch","No skills match your search.")}):s.jsx("p",{children:e("skills.noCatalogAvailable","No skills available in the catalog.")})}):s.jsx("div",{className:"skills-view-grid",children:_.map(l=>{const i=!!l.repo?.trim(),n=M===l.id;return s.jsxs("div",{className:"skills-view-card",children:[s.jsxs("div",{className:"skills-view-card-header",children:[s.jsx("h4",{className:"skills-view-card-title",children:l.name}),i?s.jsxs("button",{type:"button",className:"btn btn-sm skills-view-card-install",onClick:()=>void cs(l),disabled:n,"aria-label":e("skills.installSkill","Install {{name}}",{name:l.name}),children:[n?s.jsx(A,{size:14,className:"spin"}):null,n?e("skills.installing","Installing…"):e("skills.install","Install")]}):null]}),l.description&&s.jsx("p",{className:"skills-view-card-description",children:l.description}),l.tags&&l.tags.length>0&&s.jsx("div",{className:"skills-view-card-tags",children:l.tags.map(o=>s.jsx("span",{className:"badge badge--sm",children:o},o))}),l.installs!==void 0&&s.jsx("span",{className:"skills-view-card-installs",children:e("skills.installsCount","{{value}} installs",{value:l.installs.toLocaleString()})})]},l.id)})})]})]})}),s.jsxs("div",{className:"skills-view__detail","data-testid":"skill-detail",children:[s.jsxs("div",{className:"skills-view-detail-header",children:[s.jsx("button",{type:"button",className:"btn btn-sm btn-icon skills-view-detail-back",onClick:X,"aria-label":e("skills.backToList","Back to skills"),title:e("skills.backToList","Back to skills"),"data-testid":"skills-detail-back",children:s.jsx(q,{size:14})}),s.jsx("span",{className:"skills-view-detail-title",children:ds?.name??e("skills.detailTitle","Skill")}),s.jsxs("button",{className:"btn btn-sm skills-view-detail-close",onClick:X,disabled:!c,"aria-label":e("skills.closeDetail","Close skill detail"),children:[s.jsx(H,{size:14}),e("common.close","Close")]})]}),s.jsx("div",{className:"skills-view-detail-body",children:ks()})]})]})]})}export{zs as SkillsView};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as l,j as e}from"./vendor-react-SZ_qB27O.js";import{c as Jt,a as U,w as _,ao as It,ap as jt,aq as Bt,au as Vt,aa as qt,bo as Xt,bp as at,bq as Wt,br as Ct,L as zt,P as kt,q as dt,X as rt,bs as wt,v as Nt,x as St,bt as Gt,p as Yt,E as Qt,a9 as Zt,C as te,bu as ee,bv as At,aI as oe,bw as se}from"./index-
|
|
1
|
+
import{r as l,j as e}from"./vendor-react-SZ_qB27O.js";import{c as Jt,a as U,w as _,ao as It,ap as jt,aq as Bt,au as Vt,aa as qt,bo as Xt,bp as at,bq as Wt,br as Ct,L as zt,P as kt,q as dt,X as rt,bs as wt,v as Nt,x as St,bt as Gt,p as Yt,E as Qt,a9 as Zt,C as te,bu as ee,bv as At,aI as oe,bw as se}from"./index-D8TQBkB7.js";import{u as Tt}from"./vendor-i18n-GF3RlKbq.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-reactflow-9C3XTE7_.js";import"./vendor-xterm-BNq00GSj.js";/**
|
|
2
2
|
* @license lucide-react v1.7.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
package/dist/client/assets/{WorkflowNodeEditor-BwCbQtIT.js → WorkflowNodeEditor-DHqpPcSv.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as a,j as e,b as Za}from"./vendor-react-SZ_qB27O.js";import{R as Bn,d as Gn,B as qn,e as ei,C as Vn,P as ti,g as oi,f as si,E as ni,H as nt,h as at,u as Hn,j as ai,k as ii,l as li,m as ri,M as di}from"./vendor-reactflow-9C3XTE7_.js";import{c as ci,
|
|
1
|
+
import{r as a,j as e,b as Za}from"./vendor-react-SZ_qB27O.js";import{R as Bn,d as Gn,B as qn,e as ei,C as Vn,P as ti,g as oi,f as si,E as ni,H as nt,h as at,u as Hn,j as ai,k as ii,l as li,m as ri,M as di}from"./vendor-reactflow-9C3XTE7_.js";import{c as ci,e2 as ui,e3 as Jt,e4 as qo,e5 as ge,e6 as Un,e7 as pi,e8 as fi,e9 as oo,ea as It,eb as At,ec as it,ed as Pt,ee as Ke,ef as Kn,eg as Yn,eh as Xn,ei as Jn,ej as Qn,ek as mi,P as ye,el as Zn,d2 as Xo,em as ea,en as ta,bs as Jo,eo as oa,ep as Qo,eq as Ft,er as sa,es as na,et as aa,b0 as ia,bd as Zo,W as la,b1 as es,eu as wi,c2 as hi,aZ as Le,ev as gi,ew as ra,X as ts,aH as bi,ex as da,bp as re,bo as Qt,bv as ki,a9 as xi,C as Me,x as Se,ey as vi,bH as Zt,ez as qs,bB as ca,eA as eo,aI as Ni,g as $e,a$ as ji,bL as Vo,v as yi,eB as Ci,eC as Si,c7 as Vs,eD as Ei,eE as Ii,dw as Ai,$ as Hs,aa as Pi,eF as Ho,eG as Fi,eH as Mi,eI as Ri,eJ as Oi,eK as Li,eL as Ti,bc as Di,eM as zi,eN as $i,eO as Us,eP as Ks,eQ as Ys,eR as Xs,eS as Js,eT as Wi,eU as _i,eV as Bi,eW as Gi,eX as Qs,eY as qi,eZ as Zs,e_ as en,e$ as tn,f0 as Vi,f1 as Mo,f2 as Hi,f3 as on,dp as sn,f4 as Ui,f as nn,aV as Ki,cY as an,f5 as Ro,bt as ln,L as Fe,f6 as Ye,f7 as Oo,f8 as Lo,aR as Xt,S as We,f9 as Yi,cZ as rn,fa as dn,fb as Xi,fc as Ji,c$ as Qi,fd as Zi,fe as el}from"./index-D8TQBkB7.js";import{u as ke}from"./vendor-i18n-GF3RlKbq.js";import{P as To}from"./puzzle-CY7o6u4N.js";import{S as tl,a as ol,b as sl,c as cn,d as nl,e as al}from"./SettingsTextareaRow-B63cJNsI.js";import{U as il}from"./upload-CFL3ZlNN.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-xterm-BNq00GSj.js";/**
|
|
2
2
|
* @license lucide-react v1.7.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
package/dist/client/assets/{WorkflowNodeEditor-BNgkFJ_P.css → WorkflowNodeEditor-nCx4nqoL.css}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
.wf-editor-modal{--wf-editor-touch-target: calc(var(--space-xl) + var(--space-lg) + var(--space-xs));display:flex;flex-direction:column;width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;resize:none;overflow:hidden;background:var(--bg);border:none;border-radius:inherit}.floating-window--workflow-editor .floating-window__body{overflow:hidden}.floating-window--workflow-editor .wf-editor-header{cursor:grab;user-select:none;touch-action:none}.floating-window--workflow-editor .wf-editor-header:active{cursor:grabbing}.workflow-editor-embedded{display:flex;width:100%;height:100%;min-height:0}.wf-editor-modal--embedded{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;position:static;resize:none;box-shadow:none;border:none;border-radius:0}.wf-create-modal{--wf-editor-touch-target: calc(var(--space-xl) + var(--space-lg) + var(--space-xs))}.wf-editor-header{box-sizing:border-box;display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:var(--space-sm);min-height:var(--view-header-min-height);padding:var(--space-lg) var(--space-xl);background:var(--surface);border-bottom:none}.wf-editor-header h2{display:flex;align-items:center;gap:var(--space-sm);min-width:0;margin:0;font-size:1.125rem;font-weight:600;color:var(--text)}.wf-editor-header h2 svg{flex-shrink:0;color:var(--todo)}.wf-editor-header h2 span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-editor-close{display:inline-flex;align-items:center;background:transparent;border:none;color:var(--text-muted);cursor:pointer}.wf-editor-close:hover{color:var(--text)}.wf-editor-body{display:flex;flex:1;min-width:0;min-height:0}.wf-editor-sidebar{display:flex;flex-direction:column;gap:var(--space-xs);width:300px;min-width:0;padding:var(--space-sm);border-right:1px solid var(--border);overflow-x:hidden;overflow-y:auto}.wf-editor-body--sidebar-collapsed .wf-editor-sidebar{display:none}.wf-editor-sidebar-head{display:flex;align-items:center;gap:var(--space-xs);min-width:0}.wf-editor-sidebar-head .wf-editor-new{flex:1 1 auto;justify-content:center}.wf-sidebar-shell-toggle,.wf-sidebar-shell-restore{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:30px;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);box-shadow:var(--shadow-sm);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.wf-sidebar-shell-toggle{flex:0 0 auto;width:30px;padding-inline:0}.wf-sidebar-shell-restore{flex:0 0 auto;width:30px;padding-inline:0;white-space:nowrap}.wf-sidebar-shell-toggle:hover,.wf-sidebar-shell-restore:hover{border-color:var(--accent);background:var(--surface-hover);color:var(--accent)}.wf-sidebar-shell-toggle:focus-visible,.wf-sidebar-shell-restore:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-sidebar-panels{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0;margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--border)}.wf-sidebar-section{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.wf-sidebar-section-toggle{display:flex;align-items:center;gap:var(--space-xs);width:100%;min-width:0;padding:var(--space-xs) var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;cursor:pointer}.wf-sidebar-section-toggle:hover{background:var(--bg-secondary)}.wf-sidebar-section .wf-column-panel,.wf-sidebar-section .wf-fields-panel{width:auto;min-width:0;padding:0 var(--space-xs) var(--space-xs);border-left:none;overflow-y:visible}.wf-sidebar-section .wf-column-panel-header h3,.wf-sidebar-section .wf-fields-panel-header h3{display:none}.wf-sidebar-section .wf-column-panel-header,.wf-sidebar-section .wf-fields-panel-header{justify-content:flex-end}.wf-editor-new{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.wf-editor-new:hover{background:var(--bg-tertiary)}.wf-editor-import{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.wf-editor-import:hover{background:var(--bg-tertiary)}.wf-editor-import:disabled{opacity:.6;cursor:default}.wf-editor-import-error{padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-error) 8%,var(--bg-secondary));border:1px solid var(--ws-error);border-radius:var(--radius-sm);color:var(--ws-error);font-size:.8rem}.wf-editor-import-warnings{padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-warning) 8%,var(--bg-secondary));border:1px solid var(--ws-warning);border-radius:var(--radius-sm);color:var(--ws-warning);font-size:.8rem}.wf-editor-import-warning{margin:0}.wf-editor-import-warning+.wf-editor-import-warning{margin-top:var(--space-xs)}.wf-editor-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;min-width:0}.wf-editor-list li{min-width:0}.wf-editor-list-item{width:100%;min-width:0;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:var(--space-xs) var(--space-sm);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.wf-editor-list-item:hover{background:var(--bg-secondary)}.wf-editor-list-item.active{background:var(--bg-tertiary);border-color:var(--border)}.wf-editor-empty{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-md);color:var(--text-muted);font-size:.85rem}.wf-editor-select-note{padding:var(--space-sm) var(--space-md);background:color-mix(in srgb,var(--ws-info) 8%,var(--bg-secondary));border:1px solid var(--ws-info);border-radius:var(--radius-sm);color:var(--text);font-size:.85rem}.wf-editor-canvas-wrap{display:flex;flex-direction:column;flex:1;min-width:0;position:relative}.wf-editor-mobile-back{display:none}.wf-editor-canvas-empty{flex:1;justify-content:center}.wf-editor-onboard{flex-direction:column;text-align:center;gap:var(--space-sm);padding:var(--space-lg)}.wf-editor-onboard-icon{color:var(--text-muted)}.wf-editor-onboard-title{margin:0;font-size:1rem;color:var(--text)}.wf-editor-onboard-text{margin:0;max-width:36ch;color:var(--text-muted)}.wf-editor-onboard-cta{margin-top:var(--space-xs)}.wf-trivial-hint{position:absolute;top:var(--space-sm);left:50%;transform:translate(-50%);z-index:5;pointer-events:none;max-width:min(90%,42ch);padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-info) 8%,var(--bg-secondary));border:1px solid var(--ws-info);border-radius:var(--radius-sm);color:var(--ws-info);font-size:.8rem;text-align:center}.wf-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);border-bottom:1px solid var(--border);flex-wrap:wrap}.wf-editor-palette{display:flex;gap:var(--space-xs);flex-wrap:wrap;min-width:0}.wf-palette-btn,.wf-editor-action,.wf-editor-delete,.wf-editor-save{display:inline-flex;align-items:center;gap:var(--space-xs);min-width:0;padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;overflow-wrap:anywhere;transition:background var(--transition-fast)}.wf-palette-btn:hover,.wf-editor-action:hover,.wf-editor-delete:hover{background:var(--bg-tertiary)}.wf-editor-action:disabled{opacity:.6;cursor:default}.wf-editor-actions{display:flex;align-items:center;gap:var(--space-xs)}.wf-editor-toolbar .wf-editor-action,.wf-editor-toolbar .wf-editor-delete,.wf-editor-toolbar .wf-editor-save,.wf-editor-readonly-banner .wf-editor-action,.wf-editor-readonly-banner .wf-editor-save{white-space:nowrap;overflow-wrap:normal}.wf-editor-readonly-note{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:.75rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.wf-templates{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);border-bottom:1px solid var(--border)}.wf-templates-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.wf-templates-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text);font-weight:600;cursor:pointer}.wf-templates-toggle:hover{background:var(--bg-tertiary)}.wf-templates-filter{flex:0 1 220px;padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.8rem}.wf-templates-body{display:flex;flex-direction:column;gap:var(--space-sm)}.wf-templates-conflict{padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-error) 8%,var(--bg-secondary));border:1px solid var(--ws-error);border-radius:var(--radius-sm);color:var(--ws-error);font-size:.8rem}.wf-templates-group{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-templates-group-title{margin:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.wf-templates-entries{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wf-templates-entry{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.8rem;cursor:pointer;transition:background var(--transition-fast)}.wf-templates-entry:hover{background:var(--bg-tertiary)}.wf-templates-entry:disabled{opacity:.6;cursor:default}.wf-templates-badge{padding:0 var(--space-xs);background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:var(--radius-sm);color:var(--text-muted);font-size:.7rem}.wf-inspector-fields{display:contents;border:none;margin:0;padding:0;min-inline-size:0}.wf-editor-save{background:var(--todo);border-color:var(--todo);color:var(--bg)}.wf-editor-save:disabled{opacity:.6;cursor:default}.wf-editor-delete{color:var(--ws-error)}.wf-inspector-delete{margin-top:var(--space-sm);justify-content:center}.wf-editor-banner{padding:var(--space-sm) var(--space-md);background:var(--bg-secondary);border-bottom:1px solid var(--ws-warning);color:var(--ws-warning);font-size:.85rem}.wf-editor-banner--info{border-bottom-color:var(--ws-info);color:var(--ws-info);background:color-mix(in srgb,var(--ws-info) 6%,var(--bg-secondary))}.wf-editor-canvas{flex:1;width:100%;min-width:0;min-height:0;overflow:hidden;position:relative}.wf-editor-canvas .react-flow__controls{background:var(--surface);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);color:var(--text);overflow:hidden}.wf-editor-canvas .react-flow__controls-button{background:var(--surface);border:0;border-bottom:var(--btn-border-width) solid var(--border);color:var(--text);fill:currentColor}.wf-editor-canvas .react-flow__controls-button:hover{background:var(--surface-hover);color:var(--text)}.wf-editor-canvas .react-flow__controls-button svg{fill:currentColor;stroke:currentColor}.wf-editor-canvas .react-flow__minimap{background:var(--surface);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.wf-editor-canvas .react-flow__minimap-node{stroke:var(--border-strong, var(--border))}.wf-editor-canvas .react-flow__minimap-mask{fill:color-mix(in srgb,var(--surface) 70%,transparent)}.wf-minimap-toggle{position:absolute;right:calc(200px + var(--space-sm));bottom:var(--space-sm);z-index:6;display:inline-flex;align-items:center;gap:var(--space-xs);min-height:28px;padding:var(--space-xs) var(--space-sm);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.wf-minimap-toggle:hover{border-color:var(--accent);background:var(--surface-hover);color:var(--accent)}.wf-minimap-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-minimap-toggle--collapsed{right:var(--space-sm)}.wf-mobile-shell{display:none}.wf-view-mode-toggle,.wf-mobile-graph-style-toggle{display:inline-flex;align-items:center;width:fit-content;padding:2px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-secondary)}.wf-mobile-graph-style-toggle{margin:var(--space-sm) var(--space-md) 0}.wf-view-mode-option{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:26px;padding:var(--space-xs) 10px;border:none;border-radius:var(--radius-pill);background:transparent;color:var(--text-muted);font:inherit;font-size:.78rem;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.wf-view-mode-option:hover{color:var(--text)}.wf-view-mode-option--active{background:var(--surface-emphasis);color:var(--text);box-shadow:var(--shadow-sm)}.wf-view-mode-option:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.wf-editor-toolbar--simple{justify-content:space-between}.wf-editor-toolbar--simple .wf-simple-toolbar-add{border-color:color-mix(in srgb,var(--todo) 45%,var(--border));color:var(--text)}.wf-editor-toolbar--simple .wf-simple-toolbar-add:hover{border-color:var(--todo);background:color-mix(in srgb,var(--todo) 12%,var(--surface))}.wf-mobile-simple-canvas{position:relative;flex:1 1 auto;min-height:max(340px,55dvh);margin:var(--space-sm) var(--space-md) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.wf-editor-inspector--simple{width:320px;padding:var(--space-lg);gap:var(--space-md);background:var(--surface)}.wf-editor-inspector--simple h3{font-size:1rem}.wf-editor-inspector--simple .wf-inspector-fields{padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-subtle)}.wf-editor-body--simple-layout :where(.wf-editor-readonly-banner),.wf-editor-body--simple-layout :where(.wf-editor-toolbar),.wf-editor-body--simple-layout :where(.wf-templates),.wf-editor-body--simple-layout :where(.wf-editor-canvas){display:none}.wf-editor-body--simple-layout .wf-mobile-shell{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;border-top:1px solid var(--border);overflow:hidden}.wf-mobile-tabs{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;inline-size:100%;max-width:100%;max-inline-size:100%;min-width:0;min-inline-size:0;gap:var(--space-xs);padding:var(--space-sm);overflow-x:auto;overflow-y:hidden;overflow-inline:auto;overflow-block:hidden;overscroll-behavior-inline:contain;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--border)}.wf-mobile-tab{box-sizing:border-box;flex:0 0 auto;min-width:max-content;min-inline-size:max-content;white-space:nowrap;touch-action:pan-x pan-y;min-height:var(--wf-editor-touch-target);padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.wf-mobile-tab--active{border-color:var(--accent, var(--ws-info));background:var(--bg-tertiary)}.wf-mobile-tab:hover{background:var(--bg-tertiary)}.wf-mobile-tab:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.wf-mobile-tab:active{transform:scale(.97)}.wf-mobile-panel{flex:1 1 auto;min-height:0;overflow-y:auto}.wf-mobile-add,.wf-mobile-actions,.wf-mobile-destination{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm)}.wf-mobile-add-section{display:flex;flex-direction:column;gap:var(--space-sm)}.wf-mobile-add-section h3,.wf-mobile-template-group h4{margin:0;color:var(--text);font-size:.85rem}.wf-mobile-add-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs)}.wf-mobile-add-option,.wf-mobile-template-option{display:inline-flex;align-items:center;justify-content:flex-start;gap:var(--space-xs);min-width:0;min-height:var(--wf-editor-touch-target);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);cursor:pointer;text-align:left;overflow-wrap:anywhere;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.wf-mobile-add-option:hover,.wf-mobile-template-option:hover{background:var(--bg-tertiary)}.wf-mobile-add-option:focus-visible,.wf-mobile-template-option:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.wf-mobile-add-option:active,.wf-mobile-template-option:active{transform:scale(.97)}.wf-mobile-template-filter{width:100%}.wf-mobile-template-group{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-mobile-actions .wf-editor-action,.wf-mobile-actions .wf-editor-delete,.wf-mobile-actions .wf-editor-save{justify-content:center;min-height:var(--wf-editor-touch-target)}.wf-mobile-ai-panel{position:static;inset:auto;width:100%;box-shadow:none}.wf-editor-inspector{display:flex;flex-direction:column;gap:var(--space-sm);width:280px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto}.wf-editor-inspector h3{margin:0;font-size:.9rem;color:var(--text)}.wf-inspector-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.wf-inspector-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);font:inherit;cursor:pointer}.wf-inspector-toggle:hover{background:var(--bg-tertiary)}.wf-inspector-toggle--collapsed{position:absolute;right:var(--space-sm);bottom:var(--space-sm);z-index:5;box-shadow:var(--shadow-sm)}.wf-field{display:flex;flex-direction:column;gap:var(--space-xs);font-size:.8rem;color:var(--text-muted)}.wf-field input,.wf-field textarea,.wf-field select{padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:inherit}.wf-field input:focus,.wf-field textarea:focus,.wf-field select:focus{outline:none;box-shadow:var(--focus-ring)}.wf-prompt-editor{position:relative}.wf-prompt-editor--fullscreen{position:fixed;inset:0;z-index:10000;background:var(--surface);padding:max(var(--space-lg),env(safe-area-inset-top,0)) max(var(--space-lg),env(safe-area-inset-right,0)) max(var(--space-lg),env(safe-area-inset-bottom,0)) max(var(--space-lg),env(safe-area-inset-left,0));display:flex;flex-direction:column}.wf-prompt-editor--fullscreen .wf-field{flex:1;display:flex;flex-direction:column}.wf-prompt-editor--fullscreen textarea{flex:1;min-height:unset;resize:none;border-radius:var(--radius-md);font-size:.9375rem;line-height:1.6}.wf-prompt-fullscreen-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md);font-size:.8125rem;font-weight:600;color:var(--text-muted)}.wf-prompt-expand-btn{display:inline-flex;align-items:center;gap:var(--space-xs)}.wf-prompt-expand-btn--inline{position:absolute;top:calc(var(--space-xs) + 1.2em + var(--space-xs));right:var(--space-xs);z-index:2;color:var(--text-muted);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:calc(var(--space-xs) / 2) var(--space-xs)}.wf-prompt-expand-btn--inline:hover{background:var(--bg-tertiary);color:var(--text)}.wf-prompt-editor:not(.wf-prompt-editor--fullscreen) textarea{padding-right:calc(var(--space-xl) + var(--space-md))}.wf-prompt-override-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-sm);padding-right:calc(var(--space-xl) + var(--space-md))}.wf-prompt-override-actions--fullscreen{justify-content:space-between;padding-right:0}.wf-prompt-override-badge{display:inline-flex;align-items:center;border:1px solid var(--color-warning);border-radius:var(--radius-pill);color:var(--color-warning);padding:calc(var(--space-xs) / 2) var(--space-sm);font-size:.75rem;font-weight:600}.wf-inspector-note{margin:0;font-size:.78rem;color:var(--text-dim)}.wf-inspector-note--info{color:var(--ws-warning)}.wf-inspector-note--with-icon{display:inline-flex;align-items:center;gap:var(--space-xs)}.wf-inspector-help{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary)}.wf-inspector-help-summary{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-size:.78rem;color:var(--text);cursor:pointer;list-style:none;user-select:none}.wf-inspector-help-summary::-webkit-details-marker{display:none}.wf-inspector-help-summary:hover{background:var(--bg-tertiary);border-radius:var(--radius-sm)}.wf-inspector-help-badge{margin-left:auto;padding:1px var(--space-xs);font-size:.66rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius-sm)}.wf-inspector-help-body{display:flex;flex-direction:column;gap:var(--space-xs);padding:0 var(--space-sm) var(--space-sm);font-size:.76rem;color:var(--text-muted)}.wf-inspector-help-summary-text{margin:0;color:var(--text)}.wf-inspector-help-dl{display:grid;grid-template-columns:max-content 1fr;gap:2px var(--space-sm);margin:0}.wf-inspector-help-dl dt{font-weight:600;color:var(--text-dim)}.wf-inspector-help-dl dd{margin:0;color:var(--text-muted)}.wf-field--checkbox{flex-direction:row;align-items:center;gap:var(--space-sm);cursor:pointer}.wf-field--checkbox input[type=checkbox]{width:auto;padding:0;margin:0;background:none;border:none;accent-color:var(--todo);cursor:pointer}.wf-node{display:flex;flex-direction:column;gap:2px;box-sizing:border-box;width:200px;max-width:240px;padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.8rem}.wf-node-header{display:flex;align-items:center;gap:var(--space-xs);min-width:0}.wf-node-summary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;color:var(--text-muted)}.wf-node-start{border-left-color:var(--ws-success)}.wf-node-end{border-left-color:var(--text-muted)}.wf-node-prompt{border-left-color:var(--accent, var(--todo));background:color-mix(in srgb,var(--accent, var(--todo)) 5%,var(--bg-secondary))}.wf-node-script{border-left-color:var(--text-muted);font-family:var(--font-mono, monospace)}.wf-node-gate{border-left-color:var(--ws-warning);background:color-mix(in srgb,var(--ws-warning) 6%,var(--bg-secondary))}.wf-node-hold{border-left-color:var(--ws-warning)}.wf-node-split,.wf-node-join{border-left-color:var(--accent, var(--ws-info))}.wf-node-merge{border-left-color:var(--ws-info);border-style:dashed}.wf-node-step-execute{border-left-color:var(--accent, var(--ws-info));background:color-mix(in srgb,var(--accent, var(--ws-info)) 5%,var(--bg-secondary))}.wf-node-step-review{border-left-color:var(--ws-info);background:color-mix(in srgb,var(--ws-info) 6%,var(--bg-secondary))}.wf-node-parse-steps{border-left-color:var(--ws-info)}.wf-node-code{border-left-color:var(--text-muted);font-family:var(--font-mono, monospace)}.wf-foreach-group{width:100%;height:100%;box-sizing:border-box;border:1px dashed var(--accent, var(--ws-info));border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent, var(--ws-info)) 6%,transparent);padding:var(--space-xs)}.wf-foreach-group.wf-node--error{border-color:var(--ws-error)}.wf-foreach-header{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:.8rem;color:var(--text)}.wf-foreach-empty{margin-top:var(--space-sm);padding:var(--space-sm);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:.7rem;color:var(--text-muted);text-align:center}.wf-edge-rework .react-flow__edge-path{stroke:var(--accent, var(--ws-info));stroke-dasharray:5 4;stroke-width:2}.react-flow__edge.wf-edge-failure .react-flow__edge-path{stroke:var(--ws-error);stroke-dasharray:2 4;stroke-width:2}.wf-code-source{font-family:var(--font-mono, monospace);font-size:.72rem;white-space:pre;overflow-x:auto}.wf-editor-sidebar .wf-code-source{overflow-x:hidden;overflow-wrap:anywhere;white-space:pre-wrap}.wf-node-icon{display:inline-flex;flex-shrink:0;color:var(--text-muted)}.wf-node-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-node-badge{flex-shrink:0;font-size:.65rem;text-transform:uppercase;padding:1px var(--space-xs);border-radius:var(--radius-sm);background:var(--ws-warning);color:var(--bg)}.wf-spin{animation:wf-spin 1s linear infinite}@keyframes wf-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.wf-column-band{border:1px dashed var(--border);background:color-mix(in srgb,var(--bg-secondary) 65%,transparent);border-radius:var(--radius-md);pointer-events:none}.wf-node--error{border-color:var(--ws-error);border-left-color:var(--ws-error)}.wf-node-error-badge{display:inline-flex;align-items:center;gap:var(--space-xs);flex-shrink:0;font-size:.65rem;padding:1px var(--space-xs);border-radius:var(--radius-sm);background:var(--ws-error);color:var(--bg)}.wf-editor-readonly-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);border-bottom:1px solid var(--border)}.wf-editor-duplicate-primary{font-weight:600}.wf-editor-banner--warn{background:var(--ws-warning);color:var(--bg)}.wf-name-strip{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--border);flex-wrap:wrap}.wf-lifecycle-warnings{display:grid;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-bottom:1px solid color-mix(in srgb,var(--ws-warning) 45%,var(--border));background:color-mix(in srgb,var(--ws-warning) 8%,var(--bg-secondary));color:var(--text)}.wf-lifecycle-warnings-title{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:.78rem;font-weight:650;color:var(--ws-warning);cursor:pointer;list-style:none;user-select:none}.wf-lifecycle-warnings-title::-webkit-details-marker{display:none}.wf-lifecycle-warnings-title:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.wf-lifecycle-warnings-chevron{transition:transform var(--transition-fast);opacity:.75}.wf-lifecycle-warnings[open] .wf-lifecycle-warnings-chevron{transform:rotate(180deg)}.wf-lifecycle-warnings[open] ul{margin-top:var(--space-xs)}.wf-lifecycle-fix{display:inline-flex;align-items:center;padding:1px 9px;border:1px solid color-mix(in srgb,var(--ws-warning) 55%,var(--border));border-radius:var(--radius-pill);background:transparent;color:var(--ws-warning);font:inherit;font-size:.7rem;font-weight:600;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.wf-lifecycle-fix:hover{background:color-mix(in srgb,var(--ws-warning) 15%,transparent)}.wf-lifecycle-fix:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.wf-lifecycle-fix--all{margin-left:var(--space-xs)}.wf-lifecycle-warnings ul{display:grid;gap:4px;margin:0;padding:0;list-style:none}.wf-lifecycle-warnings li{display:flex;align-items:baseline;gap:var(--space-xs);flex-wrap:wrap;font-size:.78rem;line-height:1.35}.wf-lifecycle-warning-code,.wf-lifecycle-warning-node{padding:1px 5px;border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-muted);font-size:.7rem;font-family:var(--font-mono, monospace)}.wf-workflow-name,.wf-workflow-name--readonly{font-size:.95rem;font-weight:600;color:var(--text);background:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:2px var(--space-xs);cursor:pointer;text-align:left}.wf-workflow-name:hover{background:var(--bg-tertiary)}.wf-workflow-name--readonly{cursor:default}.wf-workflow-name-input{font-size:.95rem;font-weight:600;color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px var(--space-xs)}.wf-workflow-icon-input{width:calc(var(--space-xl) + var(--space-md));color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px var(--space-xs);text-align:center}.wf-workflow-description,.wf-workflow-description--readonly{font-size:.78rem;color:var(--text-dim);background:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:2px var(--space-xs);cursor:pointer;text-align:left}.wf-workflow-description:hover{background:var(--bg-tertiary)}.wf-workflow-description--readonly{cursor:default}.wf-workflow-description-input{font-size:.78rem;color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px var(--space-xs);min-width:220px}.wf-template-list{display:flex;flex-direction:column;gap:var(--space-xs);max-height:220px;overflow-y:auto;padding:var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary)}.wf-template-section{margin:var(--space-xs) 0 var(--space-xs);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.wf-template-section--icon{display:inline-flex;align-items:center;gap:var(--space-xs)}.wf-template-option{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--text)}.wf-template-option:hover{background:var(--surface-hover)}.wf-template-option.selected{border-color:var(--accent);background:var(--surface-hover-strong)}.wf-template-option:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-template-option-heading{display:inline-flex;align-items:center;gap:var(--space-xs);min-width:0}.wf-template-option-name{font-size:.85rem;font-weight:600}.wf-template-option-desc{font-size:.78rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-template-option-count{font-size:.72rem;color:var(--text-dim)}.wf-create-error{margin:var(--space-xs) 0 0;font-size:.8rem;color:var(--ws-error)}.wf-column-panel{display:flex;flex-direction:column;gap:var(--space-sm);width:280px;min-width:260px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto}.wf-column-panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.wf-column-add,.wf-column-move,.wf-column-remove{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),opacity var(--transition-fast)}.wf-column-add{flex:0 0 auto;padding:var(--space-xs) var(--space-sm);font-size:.72rem;font-weight:600;color:var(--accent)}.wf-column-move,.wf-column-remove{width:1.75rem;min-width:1.75rem;height:1.75rem;padding:0}.wf-column-add:hover:not(:disabled),.wf-column-move:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover);color:var(--accent)}.wf-column-remove:hover:not(:disabled){border-color:var(--ws-error);background:color-mix(in srgb,var(--ws-error) 12%,transparent);color:var(--ws-error)}.wf-column-add:focus-visible,.wf-column-move:focus-visible,.wf-column-remove:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-column-add:disabled,.wf-column-move:disabled,.wf-column-remove:disabled{cursor:not-allowed;border-color:var(--border);background:var(--bg-tertiary);color:var(--text-dim)}.wf-column-panel-empty{font-size:.75rem;color:var(--text-muted);margin:0}.wf-column-panel-errors{display:flex;flex-direction:column;gap:var(--space-xs);margin:0;padding:var(--space-sm);border:1px solid var(--ws-error);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ws-error) 10%,transparent)}.wf-column-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.wf-column-item{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.wf-column-item--error{border-color:var(--ws-error)}.wf-column-item-head{display:flex;align-items:center;gap:var(--space-xs)}.wf-column-name{flex:1;min-width:0;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:.78rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.wf-column-name:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover)}.wf-column-name:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.wf-column-name:disabled{background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-column-description-field{display:flex;flex-direction:column;gap:var(--space-xs);color:var(--text-secondary);font-size:.75rem}.wf-column-description{box-sizing:border-box;width:100%;min-width:0;min-height:calc(var(--wf-editor-touch-target) * 2);padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:.78rem;resize:vertical}.wf-column-description:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover)}.wf-column-description:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.wf-column-description:disabled{background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-column-item-actions{display:flex;gap:2px}.wf-column-violation{display:flex;align-items:center;gap:var(--space-xs);font-size:.7rem;color:var(--ws-error);margin:0}.wf-column-traits,.wf-column-agent{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-column-trait-options{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wf-column-trait{display:inline-flex;align-items:center;gap:2px;font-size:.7rem;color:var(--text-muted)}.wf-column-trait input[type=checkbox]{accent-color:var(--todo)}.wf-column-trait input[type=checkbox],.wf-column-agent-mode-option input[type=radio]{margin:0;accent-color:var(--todo)}.wf-column-trait input[type=checkbox]:disabled,.wf-column-agent-mode-option input[type=radio]:disabled{cursor:not-allowed}.wf-column-traits-label,.wf-column-agent-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.wf-column-agent-select{width:100%;min-width:0;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:.72rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.wf-column-agent-select:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover)}.wf-column-agent-select:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.wf-column-agent-select:disabled{background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-column-agent-badge{display:inline-flex;align-items:center;gap:var(--space-xs);flex:0 1 auto;min-width:0;max-width:100%;padding:1px var(--space-xs);border:1px solid color-mix(in srgb,var(--accent) 45%,var(--border));border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-size:.65rem;font-weight:600}.wf-column-agent-badge--stale{border-color:color-mix(in srgb,var(--ws-warning) 55%,var(--border));background:color-mix(in srgb,var(--ws-warning) 12%,transparent);color:var(--ws-warning)}.wf-column-agent-error,.wf-column-agent-stale{display:flex;align-items:center;gap:var(--space-xs);margin:0;font-size:.68rem}.wf-column-agent-error{color:var(--ws-error)}.wf-column-agent-stale{color:var(--ws-warning)}.wf-column-agent-mode{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wf-column-agent-mode-option{display:inline-flex;align-items:center;gap:var(--space-xs);padding:1px var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-muted);font-size:.68rem}.wf-column-agent-mode-option:has(input:checked){border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--text)}.wf-column-agent-mode-option:has(input:disabled){background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-ai-create{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary)}.wf-ai-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);align-self:flex-start;padding:var(--space-xs) var(--space-xs);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--accent);font-size:.82rem;font-weight:600;cursor:pointer}.wf-ai-toggle:hover{background:var(--surface-hover)}.wf-ai-create-body{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-ai-prompt{width:100%;resize:vertical;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-size:.85rem}.wf-ai-prompt:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-ai-actions{display:flex;gap:var(--space-xs)}.wf-ai-edit-wrap{position:relative}.wf-ai-panel{position:absolute;top:calc(100% + var(--space-xs));right:0;z-index:20;width:320px;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-md)}@media(max-width:768px){.wf-prompt-editor--fullscreen{padding:var(--space-sm)}.wf-prompt-override-actions{align-items:stretch;flex-direction:column;padding-right:0}.modal-overlay:has(.wf-create-modal){padding-top:0;align-items:stretch;justify-content:stretch}.floating-window--workflow-editor{inset:0!important;width:100vw!important;min-width:0!important;max-width:100vw!important;height:100vh!important;height:100dvh!important;min-height:0!important;max-height:100dvh!important;border:none;border-radius:0;box-shadow:none}.floating-window--workflow-editor .floating-window__resize-handle{display:none}.wf-editor-modal:not(.wf-editor-modal--embedded),.wf-create-modal{width:100vw;min-width:0;max-width:100vw;height:100vh;height:100dvh;min-height:0;max-height:100dvh;margin:0;border:none;border-radius:0;resize:none;flex:1 1 auto}.wf-editor-header,.wf-editor-readonly-banner{flex-wrap:wrap}.wf-editor-readonly-banner{gap:var(--space-sm)}.wf-editor-body{flex-direction:column;width:100%;min-width:0;overflow-x:hidden}.wf-editor-body--list-stage .wf-editor-sidebar{display:flex;width:100%;min-width:0;flex:1 1 auto;max-height:none;border-right:none;border-bottom:none;overflow-x:hidden;overflow-y:auto}.wf-editor-body--list-stage .wf-editor-canvas-wrap,.wf-editor-body--list-stage .wf-editor-inspector,.wf-editor-body--editor-stage .wf-editor-sidebar{display:none}.wf-editor-body--editor-stage .wf-editor-canvas-wrap{display:flex;flex:0 1 auto;width:100%;min-width:0;min-height:0;overflow:hidden}.wf-editor-body--editor-stage .wf-editor-canvas{flex:1 1 auto;min-height:0}.wf-editor-body--editor-stage .wf-editor-inspector{width:100%;min-width:0;max-height:none;flex:1 1 auto;min-height:0;border-left:none;border-top:1px solid var(--border);overflow-y:auto}.wf-editor-mobile-back{display:inline-flex;align-items:center;align-self:flex-start;gap:var(--space-xs);min-height:var(--wf-editor-touch-target);margin:var(--space-sm) var(--space-sm) 0;padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:.8rem;cursor:pointer}.wf-editor-sidebar .wf-column-panel{width:100%;min-width:0;border-left:none;border-top:1px solid var(--border)}.wf-editor-body .wf-settings-panel{width:100%;min-width:0;max-height:50vh;border-left:none;border-top:1px solid var(--border);overflow-y:auto}.wf-editor-canvas-wrap{flex:1 1 auto;width:100%;min-width:0;min-height:0}.wf-editor-canvas{width:100%;min-width:0;max-width:100%;overflow:hidden}.wf-editor-body--editor-stage :where(.wf-editor-readonly-banner),.wf-editor-body--editor-stage :where(.wf-editor-toolbar),.wf-editor-body--editor-stage :where(.wf-templates),.wf-editor-body--editor-stage :where(.wf-editor-canvas){display:none}.wf-mobile-shell{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;border-top:1px solid var(--border);overflow:hidden}.wf-editor-canvas .react-flow,.wf-editor-canvas .react-flow__renderer,.wf-editor-canvas .react-flow__pane,.wf-editor-canvas .react-flow__viewport{width:100%;min-width:0;max-width:100%;height:100%}.wf-editor-list-item,.wf-editor-new,.wf-editor-import,.wf-sidebar-section-toggle,.wf-palette-btn,.wf-editor-action,.wf-editor-delete,.wf-editor-save,.wf-templates-toggle,.wf-templates-entry,.wf-template-option,.wf-ai-toggle,.wf-workflow-name,.wf-workflow-name-input,.wf-column-panel button,.wf-fields-panel button,.wf-settings-panel button{min-height:var(--wf-editor-touch-target)}.wf-editor-list-item,.wf-editor-new,.wf-editor-import,.wf-palette-btn,.wf-editor-action,.wf-editor-delete,.wf-editor-save,.wf-templates-toggle,.wf-templates-entry,.wf-ai-toggle{padding:var(--space-sm) var(--space-md)}.wf-field input,.wf-field textarea,.wf-field select,.wf-column-name,.wf-column-description,.wf-column-agent-select,.wf-templates-filter,.wf-ai-prompt{min-height:var(--wf-editor-touch-target);padding:var(--space-sm) var(--space-md)}.wf-template-list{max-height:40vh}.wf-editor-toolbar{flex-wrap:nowrap;overflow-x:auto}.wf-editor-palette,.wf-editor-actions{flex:0 0 auto;flex-wrap:nowrap}.wf-templates{flex:0 0 auto}.wf-templates-header{flex-wrap:nowrap}.wf-templates-toggle{flex:0 0 auto}.wf-inspector-toggle{min-height:var(--wf-editor-touch-target);padding:var(--space-sm) var(--space-md)}.wf-ai-panel{position:fixed;inset:var(--space-sm);top:auto;right:auto;z-index:30;width:auto}.wf-editor-inspector{width:100%;max-height:40vh;border-left:none;border-top:1px solid var(--border);overflow-y:auto}.wf-editor-body--mobile-node-detail .wf-editor-canvas-wrap{display:none;min-height:0}.wf-editor-body--mobile-node-detail .wf-editor-inspector{display:flex;flex:1 1 auto;width:100%;min-width:0;min-height:0;max-height:none;border-left:none;border-top:none;overflow-y:auto}.wf-editor-body--mobile-edge-detail .wf-editor-canvas-wrap{display:none;min-height:0}.wf-editor-body--mobile-edge-detail .wf-editor-inspector{display:flex;flex:1 1 auto;width:100%;min-width:0;min-height:0;max-height:none;border-left:none;border-top:none;overflow-y:auto}}.wf-simple-canvas{position:absolute;inset:0}.wf-simple-canvas .react-flow{background:var(--bg)}.wf-simple-canvas-bg{color:color-mix(in srgb,var(--text-dim) 55%,transparent)}.wf-simple-node{display:flex;align-items:flex-start;gap:10px;width:260px;min-height:64px;box-sizing:border-box;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--card);box-shadow:var(--shadow-sm);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.wf-simple-node:hover{background:var(--card-hover);border-color:var(--border-strong)}.wf-simple-node--selected,.wf-simple-node--selected:hover{border-color:var(--todo);box-shadow:0 0 0 2px color-mix(in srgb,var(--todo) 35%,transparent),var(--shadow-md)}.wf-simple-node--error{border-color:var(--color-error)}.wf-simple-node-chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);color:var(--workflow-chip-foreground)}.wf-simple-node--agent .wf-simple-node-chip{background:color-mix(in srgb,var(--ws-quality) 85%,var(--bg))}.wf-simple-node--automation .wf-simple-node-chip{background:color-mix(in srgb,var(--ws-teal) 85%,var(--bg))}.wf-simple-node--flow .wf-simple-node-chip,.wf-simple-node-chip--flow{background:color-mix(in srgb,var(--color-merged) 85%,var(--bg))}.wf-simple-node--merge .wf-simple-node-chip{background:color-mix(in srgb,var(--ws-success) 80%,var(--bg))}.wf-simple-node-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.wf-simple-node-title-row{display:flex;align-items:center;gap:6px;min-width:0}.wf-simple-node-label{font-size:.85rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-simple-node-badge{flex:0 0 auto;font-size:.62rem;line-height:1;padding:3px 6px;border-radius:var(--radius-pill);background:var(--surface-emphasis);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.wf-simple-node-summary{font-size:.72rem;color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.wf-simple-node-column{align-self:flex-start;font-size:.64rem;padding:2px 7px;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:var(--surface-subtle);color:var(--text-muted)}.wf-simple-node-error{flex:0 0 auto;color:var(--color-error);display:inline-flex;align-items:center}.wf-simple-terminal{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface-emphasis);color:var(--text-muted);font-size:.78rem;font-weight:600}.wf-simple-terminal--start{border-color:color-mix(in srgb,var(--ws-success) 45%,var(--border));color:var(--ws-success)}.wf-simple-terminal--end{border-color:color-mix(in srgb,var(--done) 45%,var(--border))}.wf-simple-terminal.wf-simple-node--selected{border-color:var(--todo);box-shadow:0 0 0 2px color-mix(in srgb,var(--todo) 35%,transparent)}.wf-simple-container{width:100%;height:100%;box-sizing:border-box;border-radius:var(--radius-xl);border:1.5px dashed color-mix(in srgb,var(--color-merged) 55%,var(--border));background:color-mix(in srgb,var(--color-merged) 6%,transparent);padding:10px 12px;cursor:pointer}.wf-simple-container.wf-simple-node--selected{border-color:var(--todo);box-shadow:0 0 0 2px color-mix(in srgb,var(--todo) 30%,transparent)}.wf-simple-container-header{display:flex;align-items:center;gap:8px}.wf-simple-container-header .wf-simple-node-chip{width:26px;height:26px}.wf-simple-container-empty{margin-top:14px;text-align:center;font-size:.75rem;color:var(--text-dim)}.wf-simple-handle{opacity:0;width:6px;height:6px;pointer-events:none}.wf-simple-edge-path{stroke:var(--border-strong);stroke-width:1.75}.wf-simple-edge-path--selected{stroke:var(--todo);stroke-width:2.25}.wf-simple-edge-path--failure{stroke:color-mix(in srgb,var(--color-error) 70%,var(--border));stroke-dasharray:6 4}.wf-simple-edge-path--rework{stroke:color-mix(in srgb,var(--accent, #7c5cbf) 75%,var(--border));stroke-dasharray:4 4}.wf-simple-edge-label{position:absolute;display:flex;align-items:center;gap:6px;pointer-events:all;z-index:5}.wf-simple-edge-chip{font-size:.66rem;line-height:1;padding:4px 8px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-muted);white-space:nowrap}.wf-simple-edge-chip--failure{border-color:color-mix(in srgb,var(--color-error) 50%,var(--border));color:var(--color-error)}.wf-simple-edge-chip--rework{border-color:color-mix(in srgb,var(--accent, #7c5cbf) 50%,var(--border));color:var(--accent, #7c5cbf)}.wf-simple-edge-insert{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;opacity:.55;transition:opacity var(--transition-fast),transform var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.wf-simple-edge-insert:focus-visible{opacity:1}.wf-simple-edge-insert:hover{opacity:1;transform:scale(1.05);border-color:var(--todo);color:var(--todo);box-shadow:var(--focus-ring)}@media(pointer:coarse){.wf-simple-edge-insert{opacity:1;width:32px;height:32px}}.wf-simple-controls.react-flow__controls{border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-md)}.wf-simple-controls .react-flow__controls-button{background:var(--surface);border-bottom:1px solid var(--border-subtle);color:var(--text-muted);width:28px;height:28px}.wf-simple-controls .react-flow__controls-button:hover{background:var(--surface-hover);color:var(--text)}.wf-simple-controls .react-flow__controls-button svg{fill:currentcolor}.wf-simple-add-panel{margin-bottom:18px}.wf-simple-add-step{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--todo) 45%,var(--border));background:color-mix(in srgb,var(--todo) 14%,var(--surface));color:var(--text);font-size:.82rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-md);transition:background var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.wf-simple-add-step:hover{background:color-mix(in srgb,var(--todo) 24%,var(--surface));border-color:var(--todo);box-shadow:var(--focus-ring),var(--shadow-md)}@media(max-width:768px),(max-height:480px){.wf-simple-node{width:240px}.wf-simple-add-step{padding:11px 20px}}.wf-add-step-overlay{position:fixed;inset:0;z-index:1300;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg) 62%,transparent);backdrop-filter:blur(2px)}.wf-add-step-dialog{display:flex;flex-direction:column;width:min(680px,calc(100vw - 32px));max-height:min(72vh,640px);border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-lg);overflow:hidden}.wf-add-step-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px}.wf-add-step-header h3{margin:0;font-size:.95rem;color:var(--text)}.wf-add-step-search{display:flex;align-items:center;gap:8px;margin:0 16px 12px;padding:8px 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg);color:var(--text-muted)}.wf-add-step-search:focus-within{border-color:var(--todo);box-shadow:var(--focus-ring)}.wf-add-step-search-input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font-size:.85rem}.wf-add-step-conflict{margin:0 16px 10px;padding:8px 10px;border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--color-error) 45%,var(--border));background:var(--status-error-bg);color:var(--color-error);font-size:.75rem}.wf-add-step-body{flex:1;overflow-y:auto;padding:0 16px 16px;display:flex;flex-direction:column;gap:14px}.wf-add-step-section h4{margin:0 0 8px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.wf-add-step-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px}.wf-add-step-option{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px;border-radius:var(--radius-lg);border:1px solid var(--border-subtle);background:var(--surface-subtle);color:var(--text);text-align:left;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.wf-add-step-option:hover{background:var(--surface-hover);border-color:var(--border-strong)}.wf-add-step-option:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring)}.wf-add-step-option-chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-md);color:var(--workflow-chip-foreground);background:var(--surface-emphasis)}.wf-add-step-option--agent .wf-add-step-option-chip{background:color-mix(in srgb,var(--ws-quality) 85%,var(--bg))}.wf-add-step-option--automation .wf-add-step-option-chip{background:color-mix(in srgb,var(--ws-teal) 85%,var(--bg))}.wf-add-step-option--flow .wf-add-step-option-chip{background:color-mix(in srgb,var(--color-merged) 85%,var(--bg))}.wf-add-step-option--template .wf-add-step-option-chip{background:color-mix(in srgb,var(--triage) 80%,var(--bg))}.wf-add-step-option-text{display:flex;flex-direction:column;gap:2px;min-width:0}.wf-add-step-option-label{font-size:.82rem;font-weight:600}.wf-add-step-option-desc{font-size:.7rem;color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.wf-add-step-template-row{display:flex;flex-direction:column;gap:4px}.wf-add-step-optional{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;margin-left:40px;padding:3px 9px;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:transparent;color:var(--text-muted);font-size:.68rem;cursor:pointer}.wf-add-step-optional:hover{border-color:var(--border-strong);color:var(--text)}.wf-add-step-empty{margin:6px 2px;font-size:.8rem;color:var(--text-muted)}@media(max-width:768px),(max-height:480px){.wf-add-step-overlay{align-items:flex-end}.wf-add-step-dialog{width:100vw;max-height:82dvh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;border-bottom:none}.wf-add-step-grid{grid-template-columns:1fr}}.wf-fields-panel{display:flex;flex-direction:column;gap:var(--space-sm);width:300px;min-width:280px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto}.wf-fields-panel-header{display:flex;align-items:center;justify-content:space-between}.wf-fields-add{display:inline-flex;align-items:center;gap:4px}.wf-fields-panel-empty{font-size:.75rem;color:var(--text-muted);margin:0}.wf-fields-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.wf-field-item{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.wf-field-item-head{display:flex;align-items:center;gap:var(--space-xs)}.wf-field-name{flex:1;min-width:0}.wf-field-id-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs)}.wf-field-id-static{font-family:var(--font-mono, monospace);font-size:.7rem;color:var(--text-dim);background:var(--surface-2, color-mix(in srgb, #ffffff 4%, transparent));padding:1px 6px;border-radius:var(--radius-sm)}.wf-field-id-edit{font-size:.65rem;background:none;border:none;color:var(--accent, #4f7cff);cursor:pointer;padding:0}.wf-field-id-warn{display:flex;align-items:center;gap:4px;width:100%;margin:0;font-size:.65rem;color:var(--ws-warning, #f59e0b)}.wf-field-row{display:flex;align-items:flex-end;gap:var(--space-sm)}.wf-field-sub{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;font-size:.7rem;color:var(--text-muted)}.wf-field-sub>span{font-size:.65rem;text-transform:uppercase;color:var(--text-dim)}.wf-field--checkbox{display:inline-flex;align-items:center;gap:4px;font-size:.7rem;color:var(--text-muted)}.wf-field--checkbox input[type=checkbox]{accent-color:var(--todo)}.wf-field-required{flex:0 0 auto;white-space:nowrap}.wf-field-options{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-field-options-label{font-size:.65rem;text-transform:uppercase;color:var(--text-dim)}.wf-field-option-row{display:flex;align-items:center;gap:4px}.wf-field-option-value,.wf-field-option-label{flex:1;min-width:0}.wf-field-option-colors{display:inline-flex;gap:2px}.wf-field-color-swatch{width:14px;height:14px;border-radius:50%;border:1px solid var(--border);padding:0;cursor:pointer}.wf-field-color-swatch.is-active{outline:2px solid var(--text);outline-offset:1px}.wf-field-option-add{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;font-size:.7rem}.wf-field-render{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-field-preview{padding-top:var(--space-xs)}@media(max-width:768px){.wf-fields-panel{width:100%;min-width:0;padding:var(--space-sm);border-left:none;border-top:1px solid var(--border)}.wf-field-row,.wf-field-option-row{flex-wrap:wrap}}.settings-section{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) 0;border-bottom:1px solid var(--border);scroll-margin-block:var(--space-xl)}.settings-section:last-child{border-bottom:none}.settings-section-head{display:flex;flex-direction:column;gap:var(--space-xs)}.settings-section-title{margin:0;font-size:var(--font-size-base);font-weight:600;line-height:var(--line-height-tight);color:var(--text)}.settings-section-desc{margin:0;font-size:var(--font-size-xs);line-height:1.5;max-width:78ch;text-wrap:pretty;color:var(--text-muted)}.settings-section-body{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-settings-panel-wrap{display:flex;min-height:0}.wf-settings-panel{display:flex;flex-direction:column;gap:var(--space-sm);width:320px;min-width:300px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto;color:var(--text)}.wf-settings-panel-header{display:flex;align-items:center;justify-content:space-between}.wf-settings-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border)}.wf-settings-tab{flex:1;padding:6px 8px;font-size:var(--font-size-xs);background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}.wf-settings-tab.is-active{color:var(--text);border-bottom-color:var(--accent, #4f7cff)}.wf-settings-tabpanel{display:flex;flex-direction:column;gap:var(--space-sm)}.wf-settings-tabpanel-head{display:flex;align-items:center;justify-content:flex-end}.wf-settings-add,.wf-settings-save-values,.wf-settings-option-add{display:inline-flex;align-items:center;gap:4px}.wf-settings-empty{font-size:var(--font-size-xs);color:var(--text-muted);margin:0}.wf-settings-note{display:flex;align-items:center;gap:4px;margin:0;font-size:var(--font-size-2xs)}.wf-settings-note--info,.wf-settings-note--muted{color:var(--text-muted)}.wf-settings-note--warn{color:var(--ws-warning, #f59e0b)}.wf-settings-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.wf-setting-item{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.wf-setting-item-head{display:flex;align-items:center;gap:var(--space-xs)}.wf-setting-name{flex:1;min-width:0}.wf-setting-id-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs)}.wf-setting-id-static{font-family:var(--font-mono, monospace);font-size:var(--font-size-2xs);color:var(--text-muted);background:var(--surface-2, color-mix(in srgb, #ffffff 4%, transparent));padding:1px 6px;border-radius:var(--radius-sm)}.wf-setting-id-edit{font-size:var(--font-size-2xs);background:none;border:none;color:var(--accent, #4f7cff);cursor:pointer;padding:0}.wf-setting-id-warn{display:flex;align-items:center;gap:4px;width:100%;margin:0;font-size:var(--font-size-2xs);color:var(--ws-warning, #f59e0b)}.wf-setting-row{display:flex;align-items:flex-end;gap:var(--space-sm)}.wf-setting-sub{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-setting-sub>span{font-size:var(--font-size-2xs);text-transform:uppercase;color:var(--text-muted)}.wf-setting--checkbox{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-setting--checkbox input[type=checkbox]{accent-color:var(--todo)}.wf-setting-options{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-setting-options-label{font-size:var(--font-size-2xs);text-transform:uppercase;color:var(--text-muted)}.wf-setting-option-row{display:flex;align-items:center;gap:4px}.wf-setting-option-value,.wf-setting-option-label{flex:1;min-width:0}.wf-setting-option-colors{display:inline-flex;gap:2px}.wf-setting-color-swatch{width:14px;height:14px;border-radius:50%;border:1px solid var(--border);padding:0;cursor:pointer}.wf-setting-color-swatch.is-active{outline:2px solid var(--text);outline-offset:1px}.wf-settings-values-head{display:flex;align-items:center;justify-content:flex-end}.wf-settings-values-list{display:flex;flex-direction:column;gap:var(--space-md)}.wf-settings-value-group{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-settings-value-group-title{margin:0;font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:0}.wf-settings-value-item{position:relative;display:flex;flex-direction:column;gap:2px}.wf-settings-customized{align-self:flex-start;font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.04em;color:var(--accent, #4f7cff)}.wf-settings-reset-hint{display:flex;align-items:center;gap:4px;margin:0;font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-settings-orphaned{border-top:1px dashed var(--border);padding-top:var(--space-xs)}.wf-settings-orphaned-toggle{display:inline-flex;align-items:center;gap:4px;background:none;border:none;color:var(--text-muted);font-size:var(--font-size-xs);cursor:pointer;padding:0}.wf-settings-orphaned-body{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs)}.wf-settings-orphaned-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.wf-settings-orphaned-row{display:flex;align-items:center;gap:var(--space-xs)}.wf-settings-orphan-id{font-family:var(--font-mono, monospace);font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-settings-orphan-value{flex:1;min-width:0;font-size:var(--font-size-2xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-settings-orphan-delete{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0}@media(max-width:768px){.wf-settings-panel-wrap{flex-direction:column}.wf-settings-panel{width:100%;min-width:0;padding:var(--space-sm);border-left:none;border-top:1px solid var(--border)}.wf-setting-row,.wf-setting-option-row,.wf-settings-orphaned-row{flex-wrap:wrap}}.mobile-wf-graph{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm);overflow-y:auto}.mobile-wf-node-group{display:flex;flex-direction:column;gap:var(--space-xs)}.mobile-wf-node-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-xs);padding-left:calc(var(--mobile-wf-depth, 0) * var(--space-md))}.mobile-wf-node-actions{display:inline-flex;align-items:stretch;gap:var(--space-xs)}.mobile-wf-node-actions--connect{justify-content:flex-end;padding-left:calc((var(--mobile-wf-depth, 0) * var(--space-md)) + var(--space-xs))}.mobile-wf-node-main{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);min-width:0;min-height:var(--wf-editor-touch-target);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);text-align:left;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.mobile-wf-node-main:hover{background:var(--bg-tertiary)}.mobile-wf-node-main:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.mobile-wf-node-main:active{transform:scale(.97)}.mobile-wf-node-row--selected .mobile-wf-node-main{border-color:var(--accent, var(--ws-info));box-shadow:var(--focus-ring)}.mobile-wf-node-kind{min-width:4.5rem;max-width:6rem;padding:calc(var(--space-xs) / 2) var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:.7rem;text-align:center;overflow-wrap:anywhere}.mobile-wf-node-text{display:flex;flex-direction:column;min-width:0;gap:calc(var(--space-xs) / 2)}.mobile-wf-node-title,.mobile-wf-node-summary,.mobile-wf-edge-target{min-width:0;overflow-wrap:anywhere}.mobile-wf-node-title{color:var(--text);font-size:.9rem;font-weight:600}.mobile-wf-node-summary{color:var(--text-muted);font-size:.78rem}.mobile-wf-node-expand,.mobile-wf-node-move,.mobile-wf-connect-button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--wf-editor-touch-target);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.mobile-wf-node-expand,.mobile-wf-node-move{width:var(--wf-editor-touch-target)}.mobile-wf-node-move:disabled{cursor:not-allowed;opacity:var(--opacity-disabled, .5);transform:none}.mobile-wf-connect-button{gap:var(--space-xs);padding:var(--space-xs) var(--space-sm)}.mobile-wf-node-expand:hover,.mobile-wf-node-move:not(:disabled):hover,.mobile-wf-connect-button:hover{background:var(--bg-tertiary)}.mobile-wf-node-expand:focus-visible,.mobile-wf-node-move:focus-visible,.mobile-wf-connect-button:focus-visible,.mobile-wf-connect-select:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.mobile-wf-node-expand:active,.mobile-wf-node-move:not(:disabled):active,.mobile-wf-connect-button:active{transform:scale(.97)}.mobile-wf-connect-picker{display:grid;gap:var(--space-xs);padding-left:calc((var(--mobile-wf-depth, 0) * var(--space-md)) + var(--space-xs))}.mobile-wf-connect-label{color:var(--text-muted);font-size:.875rem}.mobile-wf-connect-select{width:100%}@media(max-width:768px){.mobile-wf-node-row{grid-template-columns:minmax(0,1fr)}.mobile-wf-node-actions{justify-content:flex-end}.mobile-wf-connect-button{flex:1}}.mobile-wf-node-meta{display:flex;flex-wrap:wrap;gap:var(--space-xs);padding-left:calc((var(--mobile-wf-depth, 0) * var(--space-md)) + var(--space-xs))}.mobile-wf-column-chip,.mobile-wf-edge-chip{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:34px;max-width:100%;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-muted);font-size:.75rem}.mobile-wf-edge-chip{color:var(--text);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.mobile-wf-edge-chip:hover{background:var(--bg-secondary)}.mobile-wf-edge-chip:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.mobile-wf-edge-chip:active{transform:scale(.97)}.mobile-wf-edge-chip--selected{border-color:var(--accent, var(--ws-info))}.mobile-wf-edge-target{color:var(--text-muted)}.mobile-wf-node-children{display:flex;flex-direction:column;gap:var(--space-sm)}.mobile-wf-graph-empty{padding:var(--space-lg);color:var(--text-muted);text-align:center}
|
|
1
|
+
.wf-editor-modal{--wf-editor-touch-target: calc(var(--space-xl) + var(--space-lg) + var(--space-xs));display:flex;flex-direction:column;width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;resize:none;overflow:hidden;background:var(--bg);border:none;border-radius:inherit}.floating-window--workflow-editor .floating-window__body{overflow:hidden}.floating-window--workflow-editor .wf-editor-header{cursor:grab;user-select:none;touch-action:none}.floating-window--workflow-editor .wf-editor-header:active{cursor:grabbing}.workflow-editor-embedded{display:flex;width:100%;height:100%;min-height:0}.wf-editor-modal--embedded{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;position:static;resize:none;box-shadow:none;border:none;border-radius:0}.wf-create-modal{--wf-editor-touch-target: calc(var(--space-xl) + var(--space-lg) + var(--space-xs))}.wf-editor-header{box-sizing:border-box;display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:var(--space-sm);min-height:var(--view-header-min-height);padding:var(--space-lg) var(--space-xl);background:var(--surface);border-bottom:none}.wf-editor-header h2{display:flex;align-items:center;gap:var(--space-sm);min-width:0;margin:0;font-size:1.125rem;font-weight:600;color:var(--text)}.wf-editor-header h2 svg{flex-shrink:0;color:var(--todo)}.wf-editor-header h2 span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-editor-close{display:inline-flex;align-items:center;background:transparent;border:none;color:var(--text-muted);cursor:pointer}.wf-editor-close:hover{color:var(--text)}.wf-editor-body{display:flex;flex:1;min-width:0;min-height:0}.wf-editor-sidebar{display:flex;flex-direction:column;gap:var(--space-xs);width:300px;min-width:0;padding:var(--space-sm);border-right:1px solid var(--border);overflow-x:hidden;overflow-y:auto}.wf-editor-body--sidebar-collapsed .wf-editor-sidebar{display:none}.wf-editor-sidebar-head{display:flex;align-items:center;gap:var(--space-xs);min-width:0}.wf-editor-sidebar-head .wf-editor-new{flex:1 1 auto;justify-content:center}.wf-sidebar-shell-toggle,.wf-sidebar-shell-restore{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:30px;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);box-shadow:var(--shadow-sm);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.wf-sidebar-shell-toggle{flex:0 0 auto;width:30px;padding-inline:0}.wf-sidebar-shell-restore{flex:0 0 auto;width:30px;padding-inline:0;white-space:nowrap}.wf-sidebar-shell-toggle:hover,.wf-sidebar-shell-restore:hover{border-color:var(--accent);background:var(--surface-hover);color:var(--accent)}.wf-sidebar-shell-toggle:focus-visible,.wf-sidebar-shell-restore:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-sidebar-panels{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0;margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--border)}.wf-sidebar-section{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.wf-sidebar-section-toggle{display:flex;align-items:center;gap:var(--space-xs);width:100%;min-width:0;padding:var(--space-xs) var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;cursor:pointer}.wf-sidebar-section-toggle:hover{background:var(--bg-secondary)}.wf-sidebar-section .wf-column-panel,.wf-sidebar-section .wf-fields-panel{width:auto;min-width:0;padding:0 var(--space-xs) var(--space-xs);border-left:none;overflow-y:visible}.wf-sidebar-section .wf-column-panel-header h3,.wf-sidebar-section .wf-fields-panel-header h3{display:none}.wf-sidebar-section .wf-column-panel-header,.wf-sidebar-section .wf-fields-panel-header{justify-content:flex-end}.wf-editor-new{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.wf-editor-new:hover{background:var(--bg-tertiary)}.wf-editor-import{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.wf-editor-import:hover{background:var(--bg-tertiary)}.wf-editor-import:disabled{opacity:.6;cursor:default}.wf-editor-import-error{padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-error) 8%,var(--bg-secondary));border:1px solid var(--ws-error);border-radius:var(--radius-sm);color:var(--ws-error);font-size:.8rem}.wf-editor-import-warnings{padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-warning) 8%,var(--bg-secondary));border:1px solid var(--ws-warning);border-radius:var(--radius-sm);color:var(--ws-warning);font-size:.8rem}.wf-editor-import-warning{margin:0}.wf-editor-import-warning+.wf-editor-import-warning{margin-top:var(--space-xs)}.wf-editor-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;min-width:0}.wf-editor-list li{min-width:0}.wf-editor-list-item{width:100%;min-width:0;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:var(--space-xs) var(--space-sm);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.wf-editor-list-item:hover{background:var(--bg-secondary)}.wf-editor-list-item.active{background:var(--bg-tertiary);border-color:var(--border)}.wf-editor-empty{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-md);color:var(--text-muted);font-size:.85rem}.wf-editor-select-note{padding:var(--space-sm) var(--space-md);background:color-mix(in srgb,var(--ws-info) 8%,var(--bg-secondary));border:1px solid var(--ws-info);border-radius:var(--radius-sm);color:var(--text);font-size:.85rem}.wf-editor-canvas-wrap{display:flex;flex-direction:column;flex:1;min-width:0;position:relative}.wf-editor-mobile-back{display:none}.wf-editor-canvas-empty{flex:1;justify-content:center}.wf-editor-onboard{flex-direction:column;text-align:center;gap:var(--space-sm);padding:var(--space-lg)}.wf-editor-onboard-icon{color:var(--text-muted)}.wf-editor-onboard-title{margin:0;font-size:1rem;color:var(--text)}.wf-editor-onboard-text{margin:0;max-width:36ch;color:var(--text-muted)}.wf-editor-onboard-cta{margin-top:var(--space-xs)}.wf-trivial-hint{position:absolute;top:var(--space-sm);left:50%;transform:translate(-50%);z-index:5;pointer-events:none;max-width:min(90%,42ch);padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-info) 8%,var(--bg-secondary));border:1px solid var(--ws-info);border-radius:var(--radius-sm);color:var(--ws-info);font-size:.8rem;text-align:center}.wf-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);border-bottom:1px solid var(--border);flex-wrap:wrap}.wf-editor-palette{display:flex;gap:var(--space-xs);flex-wrap:wrap;min-width:0}.wf-palette-btn,.wf-editor-action,.wf-editor-delete,.wf-editor-save{display:inline-flex;align-items:center;gap:var(--space-xs);min-width:0;padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;overflow-wrap:anywhere;transition:background var(--transition-fast)}.wf-palette-btn:hover,.wf-editor-action:hover,.wf-editor-delete:hover{background:var(--bg-tertiary)}.wf-editor-action:disabled{opacity:.6;cursor:default}.wf-editor-actions{display:flex;align-items:center;gap:var(--space-xs)}.wf-editor-toolbar .wf-editor-action,.wf-editor-toolbar .wf-editor-delete,.wf-editor-toolbar .wf-editor-save,.wf-editor-readonly-banner .wf-editor-action,.wf-editor-readonly-banner .wf-editor-save{white-space:nowrap;overflow-wrap:normal}.wf-editor-readonly-note{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:.75rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.wf-templates{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);border-bottom:1px solid var(--border)}.wf-templates-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.wf-templates-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text);font-weight:600;cursor:pointer}.wf-templates-toggle:hover{background:var(--bg-tertiary)}.wf-templates-filter{flex:0 1 220px;padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.8rem}.wf-templates-body{display:flex;flex-direction:column;gap:var(--space-sm)}.wf-templates-conflict{padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--ws-error) 8%,var(--bg-secondary));border:1px solid var(--ws-error);border-radius:var(--radius-sm);color:var(--ws-error);font-size:.8rem}.wf-templates-group{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-templates-group-title{margin:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.wf-templates-entries{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wf-templates-entry{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.8rem;cursor:pointer;transition:background var(--transition-fast)}.wf-templates-entry:hover{background:var(--bg-tertiary)}.wf-templates-entry:disabled{opacity:.6;cursor:default}.wf-templates-badge{padding:0 var(--space-xs);background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:var(--radius-sm);color:var(--text-muted);font-size:.7rem}.wf-inspector-fields{display:contents;border:none;margin:0;padding:0;min-inline-size:0}.wf-editor-save{background:var(--todo);border-color:var(--todo);color:var(--bg)}.wf-editor-save:disabled{opacity:.6;cursor:default}.wf-editor-delete{color:var(--ws-error)}.wf-inspector-delete{margin-top:var(--space-sm);justify-content:center}.wf-editor-banner{padding:var(--space-sm) var(--space-md);background:var(--bg-secondary);border-bottom:1px solid var(--ws-warning);color:var(--ws-warning);font-size:.85rem}.wf-editor-banner--info{border-bottom-color:var(--ws-info);color:var(--ws-info);background:color-mix(in srgb,var(--ws-info) 6%,var(--bg-secondary))}.wf-editor-canvas{flex:1;width:100%;min-width:0;min-height:0;overflow:hidden;position:relative}.wf-editor-canvas .react-flow__controls{background:var(--surface);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);color:var(--text);overflow:hidden}.wf-editor-canvas .react-flow__controls-button{background:var(--surface);border:0;border-bottom:var(--btn-border-width) solid var(--border);color:var(--text);fill:currentColor}.wf-editor-canvas .react-flow__controls-button:hover{background:var(--surface-hover);color:var(--text)}.wf-editor-canvas .react-flow__controls-button svg{fill:currentColor;stroke:currentColor}.wf-editor-canvas .react-flow__minimap{background:var(--surface);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.wf-editor-canvas .react-flow__minimap-node{stroke:var(--border-strong, var(--border))}.wf-editor-canvas .react-flow__minimap-mask{fill:color-mix(in srgb,var(--surface) 70%,transparent)}.wf-minimap-toggle{position:absolute;right:calc(200px + var(--space-sm));bottom:var(--space-sm);z-index:6;display:inline-flex;align-items:center;gap:var(--space-xs);min-height:28px;padding:var(--space-xs) var(--space-sm);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.wf-minimap-toggle:hover{border-color:var(--accent);background:var(--surface-hover);color:var(--accent)}.wf-minimap-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-minimap-toggle--collapsed{right:var(--space-sm)}.wf-mobile-shell{display:none}.wf-view-mode-toggle,.wf-mobile-graph-style-toggle{display:inline-flex;align-items:center;width:fit-content;padding:2px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-secondary)}.wf-mobile-graph-style-toggle{margin:var(--space-sm) var(--space-md) 0}.wf-view-mode-option{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:26px;padding:var(--space-xs) 10px;border:none;border-radius:var(--radius-pill);background:transparent;color:var(--text-muted);font:inherit;font-size:.78rem;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.wf-view-mode-option:hover{color:var(--text)}.wf-view-mode-option--active{background:var(--surface-emphasis);color:var(--text);box-shadow:var(--shadow-sm)}.wf-view-mode-option:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.wf-editor-toolbar--simple{justify-content:space-between}.wf-editor-toolbar--simple .wf-simple-toolbar-add{border-color:color-mix(in srgb,var(--todo) 45%,var(--border));color:var(--text)}.wf-editor-toolbar--simple .wf-simple-toolbar-add:hover{border-color:var(--todo);background:color-mix(in srgb,var(--todo) 12%,var(--surface))}.wf-mobile-simple-canvas{position:relative;flex:1 1 auto;min-height:max(340px,55dvh);margin:var(--space-sm) var(--space-md) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.wf-editor-inspector--simple{width:320px;padding:var(--space-lg);gap:var(--space-md);background:var(--surface)}.wf-editor-inspector--simple h3{font-size:1rem}.wf-editor-inspector--simple .wf-inspector-fields{padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-subtle)}.wf-editor-body--simple-layout :where(.wf-editor-readonly-banner),.wf-editor-body--simple-layout :where(.wf-editor-toolbar),.wf-editor-body--simple-layout :where(.wf-templates),.wf-editor-body--simple-layout :where(.wf-editor-canvas){display:none}.wf-editor-body--simple-layout .wf-mobile-shell{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;border-top:1px solid var(--border);overflow:hidden}.wf-mobile-tabs{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;inline-size:100%;max-width:100%;max-inline-size:100%;min-width:0;min-inline-size:0;gap:var(--space-xs);padding:var(--space-sm);overflow-x:auto;overflow-y:hidden;overflow-inline:auto;overflow-block:hidden;overscroll-behavior-inline:contain;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--border)}.wf-mobile-tab{box-sizing:border-box;flex:0 0 auto;min-width:max-content;min-inline-size:max-content;white-space:nowrap;touch-action:pan-x pan-y;min-height:var(--wf-editor-touch-target);padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.wf-mobile-tab--active{border-color:var(--accent, var(--ws-info));background:var(--bg-tertiary)}.wf-mobile-tab:hover{background:var(--bg-tertiary)}.wf-mobile-tab:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.wf-mobile-tab:active{transform:scale(.97)}.wf-mobile-panel{flex:1 1 auto;min-height:0;overflow-y:auto}.wf-mobile-add,.wf-mobile-actions,.wf-mobile-destination{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm)}.wf-mobile-add-section{display:flex;flex-direction:column;gap:var(--space-sm)}.wf-mobile-add-section h3,.wf-mobile-template-group h4{margin:0;color:var(--text);font-size:.85rem}.wf-mobile-add-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs)}.wf-mobile-add-option,.wf-mobile-template-option{display:inline-flex;align-items:center;justify-content:flex-start;gap:var(--space-xs);min-width:0;min-height:var(--wf-editor-touch-target);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);cursor:pointer;text-align:left;overflow-wrap:anywhere;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.wf-mobile-add-option:hover,.wf-mobile-template-option:hover{background:var(--bg-tertiary)}.wf-mobile-add-option:focus-visible,.wf-mobile-template-option:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.wf-mobile-add-option:active,.wf-mobile-template-option:active{transform:scale(.97)}.wf-mobile-template-filter{width:100%}.wf-mobile-template-group{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-mobile-actions .wf-editor-action,.wf-mobile-actions .wf-editor-delete,.wf-mobile-actions .wf-editor-save{justify-content:center;min-height:var(--wf-editor-touch-target)}.wf-mobile-ai-panel{position:static;inset:auto;width:100%;box-shadow:none}.wf-editor-inspector{display:flex;flex-direction:column;gap:var(--space-sm);width:280px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto}.wf-editor-inspector h3{margin:0;font-size:.9rem;color:var(--text)}.wf-inspector-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.wf-inspector-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);font:inherit;cursor:pointer}.wf-inspector-toggle:hover{background:var(--bg-tertiary)}.wf-inspector-toggle--collapsed{position:absolute;right:var(--space-sm);bottom:var(--space-sm);z-index:5;box-shadow:var(--shadow-sm)}.wf-field{display:flex;flex-direction:column;gap:var(--space-xs);font-size:.8rem;color:var(--text-muted)}.wf-field input,.wf-field textarea,.wf-field select{padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:inherit}.wf-field input:focus,.wf-field textarea:focus,.wf-field select:focus{outline:none;box-shadow:var(--focus-ring)}.wf-prompt-editor{position:relative}.wf-prompt-editor--fullscreen{position:fixed;inset:0;z-index:10000;background:var(--surface);padding:max(var(--space-lg),env(safe-area-inset-top,0)) max(var(--space-lg),env(safe-area-inset-right,0)) max(var(--space-lg),env(safe-area-inset-bottom,0)) max(var(--space-lg),env(safe-area-inset-left,0));display:flex;flex-direction:column}.wf-prompt-editor--fullscreen .wf-field{flex:1;display:flex;flex-direction:column}.wf-prompt-editor--fullscreen textarea{flex:1;min-height:unset;resize:none;border-radius:var(--radius-md);font-size:.9375rem;line-height:1.6}.wf-prompt-fullscreen-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md);font-size:.8125rem;font-weight:600;color:var(--text-muted)}.wf-prompt-expand-btn{display:inline-flex;align-items:center;gap:var(--space-xs)}.wf-prompt-expand-btn--inline{position:absolute;top:calc(var(--space-xs) + 1.2em + var(--space-xs));right:var(--space-xs);z-index:2;color:var(--text-muted);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:calc(var(--space-xs) / 2) var(--space-xs)}.wf-prompt-expand-btn--inline:hover{background:var(--bg-tertiary);color:var(--text)}.wf-prompt-editor:not(.wf-prompt-editor--fullscreen) textarea{padding-right:calc(var(--space-xl) + var(--space-md))}.wf-prompt-override-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-sm);padding-right:calc(var(--space-xl) + var(--space-md))}.wf-prompt-override-actions--fullscreen{justify-content:space-between;padding-right:0}.wf-prompt-override-badge{display:inline-flex;align-items:center;border:1px solid var(--color-warning);border-radius:var(--radius-pill);color:var(--color-warning);padding:calc(var(--space-xs) / 2) var(--space-sm);font-size:.75rem;font-weight:600}.wf-inspector-note{margin:0;font-size:.78rem;color:var(--text-dim)}.wf-inspector-note--info{color:var(--ws-warning)}.wf-inspector-note--with-icon{display:inline-flex;align-items:center;gap:var(--space-xs)}.wf-inspector-help{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary)}.wf-inspector-help-summary{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-size:.78rem;color:var(--text);cursor:pointer;list-style:none;user-select:none}.wf-inspector-help-summary::-webkit-details-marker{display:none}.wf-inspector-help-summary:hover{background:var(--bg-tertiary);border-radius:var(--radius-sm)}.wf-inspector-help-badge{margin-left:auto;padding:1px var(--space-xs);font-size:.66rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius-sm)}.wf-inspector-help-body{display:flex;flex-direction:column;gap:var(--space-xs);padding:0 var(--space-sm) var(--space-sm);font-size:.76rem;color:var(--text-muted)}.wf-inspector-help-summary-text{margin:0;color:var(--text)}.wf-inspector-help-dl{display:grid;grid-template-columns:max-content 1fr;gap:2px var(--space-sm);margin:0}.wf-inspector-help-dl dt{font-weight:600;color:var(--text-dim)}.wf-inspector-help-dl dd{margin:0;color:var(--text-muted)}.wf-field--checkbox{flex-direction:row;align-items:center;gap:var(--space-sm);cursor:pointer}.wf-field--checkbox input[type=checkbox]{width:auto;padding:0;margin:0;background:none;border:none;accent-color:var(--todo);cursor:pointer}.wf-node{display:flex;flex-direction:column;gap:2px;box-sizing:border-box;width:200px;max-width:240px;padding:var(--space-xs) var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.8rem}.wf-node-header{display:flex;align-items:center;gap:var(--space-xs);min-width:0}.wf-node-summary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;color:var(--text-muted)}.wf-node-start{border-left-color:var(--ws-success)}.wf-node-end{border-left-color:var(--text-muted)}.wf-node-prompt{border-left-color:var(--accent, var(--todo));background:color-mix(in srgb,var(--accent, var(--todo)) 5%,var(--bg-secondary))}.wf-node-script{border-left-color:var(--text-muted);font-family:var(--font-mono, monospace)}.wf-node-gate{border-left-color:var(--ws-warning);background:color-mix(in srgb,var(--ws-warning) 6%,var(--bg-secondary))}.wf-node-hold{border-left-color:var(--ws-warning)}.wf-node-split,.wf-node-join{border-left-color:var(--accent, var(--ws-info))}.wf-node-merge{border-left-color:var(--ws-info);border-style:dashed}.wf-node-step-execute{border-left-color:var(--accent, var(--ws-info));background:color-mix(in srgb,var(--accent, var(--ws-info)) 5%,var(--bg-secondary))}.wf-node-step-review{border-left-color:var(--ws-info);background:color-mix(in srgb,var(--ws-info) 6%,var(--bg-secondary))}.wf-node-parse-steps{border-left-color:var(--ws-info)}.wf-node-code{border-left-color:var(--text-muted);font-family:var(--font-mono, monospace)}.wf-foreach-group{width:100%;height:100%;box-sizing:border-box;border:1px dashed var(--accent, var(--ws-info));border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent, var(--ws-info)) 6%,transparent);padding:var(--space-xs)}.wf-foreach-group.wf-node--error{border-color:var(--ws-error)}.wf-foreach-header{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:.8rem;color:var(--text)}.wf-foreach-empty{margin-top:var(--space-sm);padding:var(--space-sm);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:.7rem;color:var(--text-muted);text-align:center}.wf-edge-rework .react-flow__edge-path{stroke:var(--accent, var(--ws-info));stroke-dasharray:5 4;stroke-width:2}.react-flow__edge.wf-edge-failure .react-flow__edge-path{stroke:var(--ws-error);stroke-dasharray:2 4;stroke-width:2}.wf-code-source{font-family:var(--font-mono, monospace);font-size:.72rem;white-space:pre;overflow-x:auto}.wf-editor-sidebar .wf-code-source{overflow-x:hidden;overflow-wrap:anywhere;white-space:pre-wrap}.wf-node-icon{display:inline-flex;flex-shrink:0;color:var(--text-muted)}.wf-node-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-node-badge{flex-shrink:0;font-size:.65rem;text-transform:uppercase;padding:1px var(--space-xs);border-radius:var(--radius-sm);background:var(--ws-warning);color:var(--bg)}.wf-spin{animation:wf-spin 1s linear infinite}@keyframes wf-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.wf-column-band{border:1px dashed var(--border);background:color-mix(in srgb,var(--bg-secondary) 65%,transparent);border-radius:var(--radius-md);pointer-events:none}.wf-node--error{border-color:var(--ws-error);border-left-color:var(--ws-error)}.wf-node-error-badge{display:inline-flex;align-items:center;gap:var(--space-xs);flex-shrink:0;font-size:.65rem;padding:1px var(--space-xs);border-radius:var(--radius-sm);background:var(--ws-error);color:var(--bg)}.wf-editor-readonly-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);border-bottom:1px solid var(--border)}.wf-editor-duplicate-primary{font-weight:600}.wf-editor-banner--warn{background:var(--ws-warning);color:var(--bg)}.wf-name-strip{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--border);flex-wrap:wrap}.wf-lifecycle-warnings{display:grid;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-bottom:1px solid color-mix(in srgb,var(--ws-warning) 45%,var(--border));background:color-mix(in srgb,var(--ws-warning) 8%,var(--bg-secondary));color:var(--text)}.wf-lifecycle-warnings-title{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:.78rem;font-weight:650;color:var(--ws-warning);cursor:pointer;list-style:none;user-select:none}.wf-lifecycle-warnings-title::-webkit-details-marker{display:none}.wf-lifecycle-warnings-title:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.wf-lifecycle-warnings-chevron{transition:transform var(--transition-fast);opacity:.75}.wf-lifecycle-warnings[open] .wf-lifecycle-warnings-chevron{transform:rotate(180deg)}.wf-lifecycle-warnings[open] ul{margin-top:var(--space-xs)}.wf-lifecycle-fix{display:inline-flex;align-items:center;padding:1px 9px;border:1px solid color-mix(in srgb,var(--ws-warning) 55%,var(--border));border-radius:var(--radius-pill);background:transparent;color:var(--ws-warning);font:inherit;font-size:.7rem;font-weight:600;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.wf-lifecycle-fix:hover{background:color-mix(in srgb,var(--ws-warning) 15%,transparent)}.wf-lifecycle-fix:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.wf-lifecycle-fix--all{margin-left:var(--space-xs)}.wf-lifecycle-warnings ul{display:grid;gap:4px;margin:0;padding:0;list-style:none}.wf-lifecycle-warnings li{display:flex;align-items:baseline;gap:var(--space-xs);flex-wrap:wrap;font-size:.78rem;line-height:1.35}.wf-lifecycle-warning-code,.wf-lifecycle-warning-node{padding:1px 5px;border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-muted);font-size:.7rem;font-family:var(--font-mono, monospace)}.wf-workflow-name,.wf-workflow-name--readonly{font-size:.95rem;font-weight:600;color:var(--text);background:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:2px var(--space-xs);cursor:pointer;text-align:left}.wf-workflow-name:hover{background:var(--bg-tertiary)}.wf-workflow-name--readonly{cursor:default}.wf-workflow-name-input{font-size:.95rem;font-weight:600;color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px var(--space-xs)}.wf-workflow-icon-input{width:calc(var(--space-xl) + var(--space-md));color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px var(--space-xs);text-align:center}.wf-workflow-description,.wf-workflow-description--readonly{font-size:.78rem;color:var(--text-dim);background:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:2px var(--space-xs);cursor:pointer;text-align:left}.wf-workflow-description:hover{background:var(--bg-tertiary)}.wf-workflow-description--readonly{cursor:default}.wf-workflow-description-input{font-size:.78rem;color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px var(--space-xs);min-width:220px}.wf-template-list{display:flex;flex-direction:column;gap:var(--space-xs);max-height:220px;overflow-y:auto;padding:var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary)}.wf-template-section{margin:var(--space-xs) 0 var(--space-xs);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.wf-template-section--icon{display:inline-flex;align-items:center;gap:var(--space-xs)}.wf-template-option{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--text)}.wf-template-option:hover{background:var(--surface-hover)}.wf-template-option.selected{border-color:var(--accent);background:var(--surface-hover-strong)}.wf-template-option:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-template-option-heading{display:inline-flex;align-items:center;gap:var(--space-xs);min-width:0}.wf-template-option-name{font-size:.85rem;font-weight:600}.wf-template-option-desc{font-size:.78rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-template-option-count{font-size:.72rem;color:var(--text-dim)}.wf-create-error{margin:var(--space-xs) 0 0;font-size:.8rem;color:var(--ws-error)}.wf-column-panel{display:flex;flex-direction:column;gap:var(--space-sm);width:280px;min-width:260px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto}.wf-column-panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.wf-column-add,.wf-column-move,.wf-column-remove{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),opacity var(--transition-fast)}.wf-column-add{flex:0 0 auto;padding:var(--space-xs) var(--space-sm);font-size:.72rem;font-weight:600;color:var(--accent)}.wf-column-move,.wf-column-remove{width:1.75rem;min-width:1.75rem;height:1.75rem;padding:0}.wf-column-add:hover:not(:disabled),.wf-column-move:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover);color:var(--accent)}.wf-column-remove:hover:not(:disabled){border-color:var(--ws-error);background:color-mix(in srgb,var(--ws-error) 12%,transparent);color:var(--ws-error)}.wf-column-add:focus-visible,.wf-column-move:focus-visible,.wf-column-remove:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-column-add:disabled,.wf-column-move:disabled,.wf-column-remove:disabled{cursor:not-allowed;border-color:var(--border);background:var(--bg-tertiary);color:var(--text-dim)}.wf-column-panel-empty{font-size:.75rem;color:var(--text-muted);margin:0}.wf-column-panel-errors{display:flex;flex-direction:column;gap:var(--space-xs);margin:0;padding:var(--space-sm);border:1px solid var(--ws-error);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ws-error) 10%,transparent)}.wf-column-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.wf-column-item{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.wf-column-item--error{border-color:var(--ws-error)}.wf-column-item-head{display:flex;align-items:center;gap:var(--space-xs)}.wf-column-name{flex:1;min-width:0;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:.78rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.wf-column-name:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover)}.wf-column-name:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.wf-column-name:disabled{background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-column-description-field{display:flex;flex-direction:column;gap:var(--space-xs);color:var(--text-muted);font-size:.75rem}.wf-column-description{box-sizing:border-box;width:100%;min-width:0;min-height:calc(var(--wf-editor-touch-target) * 2);padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:.78rem;resize:vertical}.wf-column-description:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover)}.wf-column-description:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.wf-column-description:disabled{background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-column-item-actions{display:flex;gap:2px}.wf-column-violation{display:flex;align-items:center;gap:var(--space-xs);font-size:.7rem;color:var(--ws-error);margin:0}.wf-column-traits,.wf-column-agent{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-column-trait-options{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wf-column-trait{display:inline-flex;align-items:center;gap:2px;font-size:.7rem;color:var(--text-muted)}.wf-column-trait input[type=checkbox]{accent-color:var(--todo)}.wf-column-trait input[type=checkbox],.wf-column-agent-mode-option input[type=radio]{margin:0;accent-color:var(--todo)}.wf-column-trait input[type=checkbox]:disabled,.wf-column-agent-mode-option input[type=radio]:disabled{cursor:not-allowed}.wf-column-traits-label,.wf-column-agent-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.wf-column-agent-select{width:100%;min-width:0;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:.72rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.wf-column-agent-select:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover)}.wf-column-agent-select:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.wf-column-agent-select:disabled{background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-column-agent-badge{display:inline-flex;align-items:center;gap:var(--space-xs);flex:0 1 auto;min-width:0;max-width:100%;padding:1px var(--space-xs);border:1px solid color-mix(in srgb,var(--accent) 45%,var(--border));border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-size:.65rem;font-weight:600}.wf-column-agent-badge--stale{border-color:color-mix(in srgb,var(--ws-warning) 55%,var(--border));background:color-mix(in srgb,var(--ws-warning) 12%,transparent);color:var(--ws-warning)}.wf-column-agent-error,.wf-column-agent-stale{display:flex;align-items:center;gap:var(--space-xs);margin:0;font-size:.68rem}.wf-column-agent-error{color:var(--ws-error)}.wf-column-agent-stale{color:var(--ws-warning)}.wf-column-agent-mode{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.wf-column-agent-mode-option{display:inline-flex;align-items:center;gap:var(--space-xs);padding:1px var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-muted);font-size:.68rem}.wf-column-agent-mode-option:has(input:checked){border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--text)}.wf-column-agent-mode-option:has(input:disabled){background:var(--bg-tertiary);color:var(--text-dim);cursor:not-allowed}.wf-ai-create{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary)}.wf-ai-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);align-self:flex-start;padding:var(--space-xs) var(--space-xs);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--accent);font-size:.82rem;font-weight:600;cursor:pointer}.wf-ai-toggle:hover{background:var(--surface-hover)}.wf-ai-create-body{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-ai-prompt{width:100%;resize:vertical;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-size:.85rem}.wf-ai-prompt:focus-visible{outline:none;box-shadow:var(--focus-ring)}.wf-ai-actions{display:flex;gap:var(--space-xs)}.wf-ai-edit-wrap{position:relative}.wf-ai-panel{position:absolute;top:calc(100% + var(--space-xs));right:0;z-index:20;width:320px;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-md)}@media(max-width:768px){.wf-prompt-editor--fullscreen{padding:var(--space-sm)}.wf-prompt-override-actions{align-items:stretch;flex-direction:column;padding-right:0}.modal-overlay:has(.wf-create-modal){padding-top:0;align-items:stretch;justify-content:stretch}.floating-window--workflow-editor{inset:0!important;width:100vw!important;min-width:0!important;max-width:100vw!important;height:100vh!important;height:100dvh!important;min-height:0!important;max-height:100dvh!important;border:none;border-radius:0;box-shadow:none}.floating-window--workflow-editor .floating-window__resize-handle{display:none}.wf-editor-modal:not(.wf-editor-modal--embedded),.wf-create-modal{width:100vw;min-width:0;max-width:100vw;height:100vh;height:100dvh;min-height:0;max-height:100dvh;margin:0;border:none;border-radius:0;resize:none;flex:1 1 auto}.wf-editor-header,.wf-editor-readonly-banner{flex-wrap:wrap}.wf-editor-readonly-banner{gap:var(--space-sm)}.wf-editor-body{flex-direction:column;width:100%;min-width:0;overflow-x:hidden}.wf-editor-body--list-stage .wf-editor-sidebar{display:flex;width:100%;min-width:0;flex:1 1 auto;max-height:none;border-right:none;border-bottom:none;overflow-x:hidden;overflow-y:auto}.wf-editor-body--list-stage .wf-editor-canvas-wrap,.wf-editor-body--list-stage .wf-editor-inspector,.wf-editor-body--editor-stage .wf-editor-sidebar{display:none}.wf-editor-body--editor-stage .wf-editor-canvas-wrap{display:flex;flex:0 1 auto;width:100%;min-width:0;min-height:0;overflow:hidden}.wf-editor-body--editor-stage .wf-editor-canvas{flex:1 1 auto;min-height:0}.wf-editor-body--editor-stage .wf-editor-inspector{width:100%;min-width:0;max-height:none;flex:1 1 auto;min-height:0;border-left:none;border-top:1px solid var(--border);overflow-y:auto}.wf-editor-mobile-back{display:inline-flex;align-items:center;align-self:flex-start;gap:var(--space-xs);min-height:var(--wf-editor-touch-target);margin:var(--space-sm) var(--space-sm) 0;padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:.8rem;cursor:pointer}.wf-editor-sidebar .wf-column-panel{width:100%;min-width:0;border-left:none;border-top:1px solid var(--border)}.wf-editor-body .wf-settings-panel{width:100%;min-width:0;max-height:50vh;border-left:none;border-top:1px solid var(--border);overflow-y:auto}.wf-editor-canvas-wrap{flex:1 1 auto;width:100%;min-width:0;min-height:0}.wf-editor-canvas{width:100%;min-width:0;max-width:100%;overflow:hidden}.wf-editor-body--editor-stage :where(.wf-editor-readonly-banner),.wf-editor-body--editor-stage :where(.wf-editor-toolbar),.wf-editor-body--editor-stage :where(.wf-templates),.wf-editor-body--editor-stage :where(.wf-editor-canvas){display:none}.wf-mobile-shell{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;border-top:1px solid var(--border);overflow:hidden}.wf-editor-canvas .react-flow,.wf-editor-canvas .react-flow__renderer,.wf-editor-canvas .react-flow__pane,.wf-editor-canvas .react-flow__viewport{width:100%;min-width:0;max-width:100%;height:100%}.wf-editor-list-item,.wf-editor-new,.wf-editor-import,.wf-sidebar-section-toggle,.wf-palette-btn,.wf-editor-action,.wf-editor-delete,.wf-editor-save,.wf-templates-toggle,.wf-templates-entry,.wf-template-option,.wf-ai-toggle,.wf-workflow-name,.wf-workflow-name-input,.wf-column-panel button,.wf-fields-panel button,.wf-settings-panel button{min-height:var(--wf-editor-touch-target)}.wf-editor-list-item,.wf-editor-new,.wf-editor-import,.wf-palette-btn,.wf-editor-action,.wf-editor-delete,.wf-editor-save,.wf-templates-toggle,.wf-templates-entry,.wf-ai-toggle{padding:var(--space-sm) var(--space-md)}.wf-field input,.wf-field textarea,.wf-field select,.wf-column-name,.wf-column-description,.wf-column-agent-select,.wf-templates-filter,.wf-ai-prompt{min-height:var(--wf-editor-touch-target);padding:var(--space-sm) var(--space-md)}.wf-template-list{max-height:40vh}.wf-editor-toolbar{flex-wrap:nowrap;overflow-x:auto}.wf-editor-palette,.wf-editor-actions{flex:0 0 auto;flex-wrap:nowrap}.wf-templates{flex:0 0 auto}.wf-templates-header{flex-wrap:nowrap}.wf-templates-toggle{flex:0 0 auto}.wf-inspector-toggle{min-height:var(--wf-editor-touch-target);padding:var(--space-sm) var(--space-md)}.wf-ai-panel{position:fixed;inset:var(--space-sm);top:auto;right:auto;z-index:30;width:auto}.wf-editor-inspector{width:100%;max-height:40vh;border-left:none;border-top:1px solid var(--border);overflow-y:auto}.wf-editor-body--mobile-node-detail .wf-editor-canvas-wrap{display:none;min-height:0}.wf-editor-body--mobile-node-detail .wf-editor-inspector{display:flex;flex:1 1 auto;width:100%;min-width:0;min-height:0;max-height:none;border-left:none;border-top:none;overflow-y:auto}.wf-editor-body--mobile-edge-detail .wf-editor-canvas-wrap{display:none;min-height:0}.wf-editor-body--mobile-edge-detail .wf-editor-inspector{display:flex;flex:1 1 auto;width:100%;min-width:0;min-height:0;max-height:none;border-left:none;border-top:none;overflow-y:auto}}.wf-simple-canvas{position:absolute;inset:0}.wf-simple-canvas .react-flow{background:var(--bg)}.wf-simple-canvas-bg{color:color-mix(in srgb,var(--text-dim) 55%,transparent)}.wf-simple-node{display:flex;align-items:flex-start;gap:10px;width:260px;min-height:64px;box-sizing:border-box;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--card);box-shadow:var(--shadow-sm);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.wf-simple-node:hover{background:var(--card-hover);border-color:var(--border-strong)}.wf-simple-node--selected,.wf-simple-node--selected:hover{border-color:var(--todo);box-shadow:0 0 0 2px color-mix(in srgb,var(--todo) 35%,transparent),var(--shadow-md)}.wf-simple-node--error{border-color:var(--color-error)}.wf-simple-node-chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);color:var(--workflow-chip-foreground)}.wf-simple-node--agent .wf-simple-node-chip{background:color-mix(in srgb,var(--ws-quality) 85%,var(--bg))}.wf-simple-node--automation .wf-simple-node-chip{background:color-mix(in srgb,var(--ws-teal) 85%,var(--bg))}.wf-simple-node--flow .wf-simple-node-chip,.wf-simple-node-chip--flow{background:color-mix(in srgb,var(--color-merged) 85%,var(--bg))}.wf-simple-node--merge .wf-simple-node-chip{background:color-mix(in srgb,var(--ws-success) 80%,var(--bg))}.wf-simple-node-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.wf-simple-node-title-row{display:flex;align-items:center;gap:6px;min-width:0}.wf-simple-node-label{font-size:.85rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-simple-node-badge{flex:0 0 auto;font-size:.62rem;line-height:1;padding:3px 6px;border-radius:var(--radius-pill);background:var(--surface-emphasis);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.wf-simple-node-summary{font-size:.72rem;color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.wf-simple-node-column{align-self:flex-start;font-size:.64rem;padding:2px 7px;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:var(--surface-subtle);color:var(--text-muted)}.wf-simple-node-error{flex:0 0 auto;color:var(--color-error);display:inline-flex;align-items:center}.wf-simple-terminal{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface-emphasis);color:var(--text-muted);font-size:.78rem;font-weight:600}.wf-simple-terminal--start{border-color:color-mix(in srgb,var(--ws-success) 45%,var(--border));color:var(--ws-success)}.wf-simple-terminal--end{border-color:color-mix(in srgb,var(--done) 45%,var(--border))}.wf-simple-terminal.wf-simple-node--selected{border-color:var(--todo);box-shadow:0 0 0 2px color-mix(in srgb,var(--todo) 35%,transparent)}.wf-simple-container{width:100%;height:100%;box-sizing:border-box;border-radius:var(--radius-xl);border:1.5px dashed color-mix(in srgb,var(--color-merged) 55%,var(--border));background:color-mix(in srgb,var(--color-merged) 6%,transparent);padding:10px 12px;cursor:pointer}.wf-simple-container.wf-simple-node--selected{border-color:var(--todo);box-shadow:0 0 0 2px color-mix(in srgb,var(--todo) 30%,transparent)}.wf-simple-container-header{display:flex;align-items:center;gap:8px}.wf-simple-container-header .wf-simple-node-chip{width:26px;height:26px}.wf-simple-container-empty{margin-top:14px;text-align:center;font-size:.75rem;color:var(--text-dim)}.wf-simple-handle{opacity:0;width:6px;height:6px;pointer-events:none}.wf-simple-edge-path{stroke:var(--border-strong);stroke-width:1.75}.wf-simple-edge-path--selected{stroke:var(--todo);stroke-width:2.25}.wf-simple-edge-path--failure{stroke:color-mix(in srgb,var(--color-error) 70%,var(--border));stroke-dasharray:6 4}.wf-simple-edge-path--rework{stroke:color-mix(in srgb,var(--accent, #7c5cbf) 75%,var(--border));stroke-dasharray:4 4}.wf-simple-edge-label{position:absolute;display:flex;align-items:center;gap:6px;pointer-events:all;z-index:5}.wf-simple-edge-chip{font-size:.66rem;line-height:1;padding:4px 8px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-muted);white-space:nowrap}.wf-simple-edge-chip--failure{border-color:color-mix(in srgb,var(--color-error) 50%,var(--border));color:var(--color-error)}.wf-simple-edge-chip--rework{border-color:color-mix(in srgb,var(--accent, #7c5cbf) 50%,var(--border));color:var(--accent, #7c5cbf)}.wf-simple-edge-insert{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;opacity:.55;transition:opacity var(--transition-fast),transform var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.wf-simple-edge-insert:focus-visible{opacity:1}.wf-simple-edge-insert:hover{opacity:1;transform:scale(1.05);border-color:var(--todo);color:var(--todo);box-shadow:var(--focus-ring)}@media(pointer:coarse){.wf-simple-edge-insert{opacity:1;width:32px;height:32px}}.wf-simple-controls.react-flow__controls{border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-md)}.wf-simple-controls .react-flow__controls-button{background:var(--surface);border-bottom:1px solid var(--border-subtle);color:var(--text-muted);width:28px;height:28px}.wf-simple-controls .react-flow__controls-button:hover{background:var(--surface-hover);color:var(--text)}.wf-simple-controls .react-flow__controls-button svg{fill:currentcolor}.wf-simple-add-panel{margin-bottom:18px}.wf-simple-add-step{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--todo) 45%,var(--border));background:color-mix(in srgb,var(--todo) 14%,var(--surface));color:var(--text);font-size:.82rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-md);transition:background var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.wf-simple-add-step:hover{background:color-mix(in srgb,var(--todo) 24%,var(--surface));border-color:var(--todo);box-shadow:var(--focus-ring),var(--shadow-md)}@media(max-width:768px),(max-height:480px){.wf-simple-node{width:240px}.wf-simple-add-step{padding:11px 20px}}.wf-add-step-overlay{position:fixed;inset:0;z-index:1300;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg) 62%,transparent);backdrop-filter:blur(2px)}.wf-add-step-dialog{display:flex;flex-direction:column;width:min(680px,calc(100vw - 32px));max-height:min(72vh,640px);border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-lg);overflow:hidden}.wf-add-step-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px}.wf-add-step-header h3{margin:0;font-size:.95rem;color:var(--text)}.wf-add-step-search{display:flex;align-items:center;gap:8px;margin:0 16px 12px;padding:8px 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg);color:var(--text-muted)}.wf-add-step-search:focus-within{border-color:var(--todo);box-shadow:var(--focus-ring)}.wf-add-step-search-input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font-size:.85rem}.wf-add-step-conflict{margin:0 16px 10px;padding:8px 10px;border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--color-error) 45%,var(--border));background:var(--status-error-bg);color:var(--color-error);font-size:.75rem}.wf-add-step-body{flex:1;overflow-y:auto;padding:0 16px 16px;display:flex;flex-direction:column;gap:14px}.wf-add-step-section h4{margin:0 0 8px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.wf-add-step-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px}.wf-add-step-option{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px;border-radius:var(--radius-lg);border:1px solid var(--border-subtle);background:var(--surface-subtle);color:var(--text);text-align:left;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.wf-add-step-option:hover{background:var(--surface-hover);border-color:var(--border-strong)}.wf-add-step-option:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring)}.wf-add-step-option-chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-md);color:var(--workflow-chip-foreground);background:var(--surface-emphasis)}.wf-add-step-option--agent .wf-add-step-option-chip{background:color-mix(in srgb,var(--ws-quality) 85%,var(--bg))}.wf-add-step-option--automation .wf-add-step-option-chip{background:color-mix(in srgb,var(--ws-teal) 85%,var(--bg))}.wf-add-step-option--flow .wf-add-step-option-chip{background:color-mix(in srgb,var(--color-merged) 85%,var(--bg))}.wf-add-step-option--template .wf-add-step-option-chip{background:color-mix(in srgb,var(--triage) 80%,var(--bg))}.wf-add-step-option-text{display:flex;flex-direction:column;gap:2px;min-width:0}.wf-add-step-option-label{font-size:.82rem;font-weight:600}.wf-add-step-option-desc{font-size:.7rem;color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.wf-add-step-template-row{display:flex;flex-direction:column;gap:4px}.wf-add-step-optional{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;margin-left:40px;padding:3px 9px;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:transparent;color:var(--text-muted);font-size:.68rem;cursor:pointer}.wf-add-step-optional:hover{border-color:var(--border-strong);color:var(--text)}.wf-add-step-empty{margin:6px 2px;font-size:.8rem;color:var(--text-muted)}@media(max-width:768px),(max-height:480px){.wf-add-step-overlay{align-items:flex-end}.wf-add-step-dialog{width:100vw;max-height:82dvh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;border-bottom:none}.wf-add-step-grid{grid-template-columns:1fr}}.wf-fields-panel{display:flex;flex-direction:column;gap:var(--space-sm);width:300px;min-width:280px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto}.wf-fields-panel-header{display:flex;align-items:center;justify-content:space-between}.wf-fields-add{display:inline-flex;align-items:center;gap:4px}.wf-fields-panel-empty{font-size:.75rem;color:var(--text-muted);margin:0}.wf-fields-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.wf-field-item{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.wf-field-item-head{display:flex;align-items:center;gap:var(--space-xs)}.wf-field-name{flex:1;min-width:0}.wf-field-id-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs)}.wf-field-id-static{font-family:var(--font-mono, monospace);font-size:.7rem;color:var(--text-dim);background:var(--surface-2, color-mix(in srgb, #ffffff 4%, transparent));padding:1px 6px;border-radius:var(--radius-sm)}.wf-field-id-edit{font-size:.65rem;background:none;border:none;color:var(--accent, #4f7cff);cursor:pointer;padding:0}.wf-field-id-warn{display:flex;align-items:center;gap:4px;width:100%;margin:0;font-size:.65rem;color:var(--ws-warning, #f59e0b)}.wf-field-row{display:flex;align-items:flex-end;gap:var(--space-sm)}.wf-field-sub{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;font-size:.7rem;color:var(--text-muted)}.wf-field-sub>span{font-size:.65rem;text-transform:uppercase;color:var(--text-dim)}.wf-field--checkbox{display:inline-flex;align-items:center;gap:4px;font-size:.7rem;color:var(--text-muted)}.wf-field--checkbox input[type=checkbox]{accent-color:var(--todo)}.wf-field-required{flex:0 0 auto;white-space:nowrap}.wf-field-options{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-field-options-label{font-size:.65rem;text-transform:uppercase;color:var(--text-dim)}.wf-field-option-row{display:flex;align-items:center;gap:4px}.wf-field-option-value,.wf-field-option-label{flex:1;min-width:0}.wf-field-option-colors{display:inline-flex;gap:2px}.wf-field-color-swatch{width:14px;height:14px;border-radius:50%;border:1px solid var(--border);padding:0;cursor:pointer}.wf-field-color-swatch.is-active{outline:2px solid var(--text);outline-offset:1px}.wf-field-option-add{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;font-size:.7rem}.wf-field-render{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-field-preview{padding-top:var(--space-xs)}@media(max-width:768px){.wf-fields-panel{width:100%;min-width:0;padding:var(--space-sm);border-left:none;border-top:1px solid var(--border)}.wf-field-row,.wf-field-option-row{flex-wrap:wrap}}.settings-section{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) 0;border-bottom:1px solid var(--border);scroll-margin-block:var(--space-xl)}.settings-section:last-child{border-bottom:none}.settings-section-head{display:flex;flex-direction:column;gap:var(--space-xs)}.settings-section-title{margin:0;font-size:var(--font-size-base);font-weight:600;line-height:var(--line-height-tight);color:var(--text)}.settings-section-desc{margin:0;font-size:var(--font-size-xs);line-height:1.5;max-width:78ch;text-wrap:pretty;color:var(--text-muted)}.settings-section-body{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-settings-panel-wrap{display:flex;min-height:0}.wf-settings-panel{display:flex;flex-direction:column;gap:var(--space-sm);width:320px;min-width:300px;padding:var(--space-md);border-left:1px solid var(--border);overflow-y:auto;color:var(--text)}.wf-settings-panel-header{display:flex;align-items:center;justify-content:space-between}.wf-settings-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border)}.wf-settings-tab{flex:1;padding:6px 8px;font-size:var(--font-size-xs);background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}.wf-settings-tab.is-active{color:var(--text);border-bottom-color:var(--accent, #4f7cff)}.wf-settings-tabpanel{display:flex;flex-direction:column;gap:var(--space-sm)}.wf-settings-tabpanel-head{display:flex;align-items:center;justify-content:flex-end}.wf-settings-add,.wf-settings-save-values,.wf-settings-option-add{display:inline-flex;align-items:center;gap:4px}.wf-settings-empty{font-size:var(--font-size-xs);color:var(--text-muted);margin:0}.wf-settings-note{display:flex;align-items:center;gap:4px;margin:0;font-size:var(--font-size-2xs)}.wf-settings-note--info,.wf-settings-note--muted{color:var(--text-muted)}.wf-settings-note--warn{color:var(--ws-warning, #f59e0b)}.wf-settings-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.wf-setting-item{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.wf-setting-item-head{display:flex;align-items:center;gap:var(--space-xs)}.wf-setting-name{flex:1;min-width:0}.wf-setting-id-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs)}.wf-setting-id-static{font-family:var(--font-mono, monospace);font-size:var(--font-size-2xs);color:var(--text-muted);background:var(--surface-2, color-mix(in srgb, #ffffff 4%, transparent));padding:1px 6px;border-radius:var(--radius-sm)}.wf-setting-id-edit{font-size:var(--font-size-2xs);background:none;border:none;color:var(--accent, #4f7cff);cursor:pointer;padding:0}.wf-setting-id-warn{display:flex;align-items:center;gap:4px;width:100%;margin:0;font-size:var(--font-size-2xs);color:var(--ws-warning, #f59e0b)}.wf-setting-row{display:flex;align-items:flex-end;gap:var(--space-sm)}.wf-setting-sub{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-setting-sub>span{font-size:var(--font-size-2xs);text-transform:uppercase;color:var(--text-muted)}.wf-setting--checkbox{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-setting--checkbox input[type=checkbox]{accent-color:var(--todo)}.wf-setting-options{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border)}.wf-setting-options-label{font-size:var(--font-size-2xs);text-transform:uppercase;color:var(--text-muted)}.wf-setting-option-row{display:flex;align-items:center;gap:4px}.wf-setting-option-value,.wf-setting-option-label{flex:1;min-width:0}.wf-setting-option-colors{display:inline-flex;gap:2px}.wf-setting-color-swatch{width:14px;height:14px;border-radius:50%;border:1px solid var(--border);padding:0;cursor:pointer}.wf-setting-color-swatch.is-active{outline:2px solid var(--text);outline-offset:1px}.wf-settings-values-head{display:flex;align-items:center;justify-content:flex-end}.wf-settings-values-list{display:flex;flex-direction:column;gap:var(--space-md)}.wf-settings-value-group{display:flex;flex-direction:column;gap:var(--space-xs)}.wf-settings-value-group-title{margin:0;font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:0}.wf-settings-value-item{position:relative;display:flex;flex-direction:column;gap:2px}.wf-settings-customized{align-self:flex-start;font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.04em;color:var(--accent, #4f7cff)}.wf-settings-reset-hint{display:flex;align-items:center;gap:4px;margin:0;font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-settings-orphaned{border-top:1px dashed var(--border);padding-top:var(--space-xs)}.wf-settings-orphaned-toggle{display:inline-flex;align-items:center;gap:4px;background:none;border:none;color:var(--text-muted);font-size:var(--font-size-xs);cursor:pointer;padding:0}.wf-settings-orphaned-body{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs)}.wf-settings-orphaned-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.wf-settings-orphaned-row{display:flex;align-items:center;gap:var(--space-xs)}.wf-settings-orphan-id{font-family:var(--font-mono, monospace);font-size:var(--font-size-2xs);color:var(--text-muted)}.wf-settings-orphan-value{flex:1;min-width:0;font-size:var(--font-size-2xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-settings-orphan-delete{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0}@media(max-width:768px){.wf-settings-panel-wrap{flex-direction:column}.wf-settings-panel{width:100%;min-width:0;padding:var(--space-sm);border-left:none;border-top:1px solid var(--border)}.wf-setting-row,.wf-setting-option-row,.wf-settings-orphaned-row{flex-wrap:wrap}}.mobile-wf-graph{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm);overflow-y:auto}.mobile-wf-node-group{display:flex;flex-direction:column;gap:var(--space-xs)}.mobile-wf-node-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-xs);padding-left:calc(var(--mobile-wf-depth, 0) * var(--space-md))}.mobile-wf-node-actions{display:inline-flex;align-items:stretch;gap:var(--space-xs)}.mobile-wf-node-actions--connect{justify-content:flex-end;padding-left:calc((var(--mobile-wf-depth, 0) * var(--space-md)) + var(--space-xs))}.mobile-wf-node-main{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);min-width:0;min-height:var(--wf-editor-touch-target);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);text-align:left;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.mobile-wf-node-main:hover{background:var(--bg-tertiary)}.mobile-wf-node-main:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.mobile-wf-node-main:active{transform:scale(.97)}.mobile-wf-node-row--selected .mobile-wf-node-main{border-color:var(--accent, var(--ws-info));box-shadow:var(--focus-ring)}.mobile-wf-node-kind{min-width:4.5rem;max-width:6rem;padding:calc(var(--space-xs) / 2) var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:.7rem;text-align:center;overflow-wrap:anywhere}.mobile-wf-node-text{display:flex;flex-direction:column;min-width:0;gap:calc(var(--space-xs) / 2)}.mobile-wf-node-title,.mobile-wf-node-summary,.mobile-wf-edge-target{min-width:0;overflow-wrap:anywhere}.mobile-wf-node-title{color:var(--text);font-size:.9rem;font-weight:600}.mobile-wf-node-summary{color:var(--text-muted);font-size:.78rem}.mobile-wf-node-expand,.mobile-wf-node-move,.mobile-wf-connect-button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--wf-editor-touch-target);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.mobile-wf-node-expand,.mobile-wf-node-move{width:var(--wf-editor-touch-target)}.mobile-wf-node-move:disabled{cursor:not-allowed;opacity:var(--opacity-disabled, .5);transform:none}.mobile-wf-connect-button{gap:var(--space-xs);padding:var(--space-xs) var(--space-sm)}.mobile-wf-node-expand:hover,.mobile-wf-node-move:not(:disabled):hover,.mobile-wf-connect-button:hover{background:var(--bg-tertiary)}.mobile-wf-node-expand:focus-visible,.mobile-wf-node-move:focus-visible,.mobile-wf-connect-button:focus-visible,.mobile-wf-connect-select:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.mobile-wf-node-expand:active,.mobile-wf-node-move:not(:disabled):active,.mobile-wf-connect-button:active{transform:scale(.97)}.mobile-wf-connect-picker{display:grid;gap:var(--space-xs);padding-left:calc((var(--mobile-wf-depth, 0) * var(--space-md)) + var(--space-xs))}.mobile-wf-connect-label{color:var(--text-muted);font-size:.875rem}.mobile-wf-connect-select{width:100%}@media(max-width:768px){.mobile-wf-node-row{grid-template-columns:minmax(0,1fr)}.mobile-wf-node-actions{justify-content:flex-end}.mobile-wf-connect-button{flex:1}}.mobile-wf-node-meta{display:flex;flex-wrap:wrap;gap:var(--space-xs);padding-left:calc((var(--mobile-wf-depth, 0) * var(--space-md)) + var(--space-xs))}.mobile-wf-column-chip,.mobile-wf-edge-chip{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:34px;max-width:100%;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-muted);font-size:.75rem}.mobile-wf-edge-chip{color:var(--text);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.mobile-wf-edge-chip:hover{background:var(--bg-secondary)}.mobile-wf-edge-chip:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.mobile-wf-edge-chip:active{transform:scale(.97)}.mobile-wf-edge-chip--selected{border-color:var(--accent, var(--ws-info))}.mobile-wf-edge-target{color:var(--text-muted)}.mobile-wf-node-children{display:flex;flex-direction:column;gap:var(--space-sm)}.mobile-wf-graph-empty{padding:var(--space-lg);color:var(--text-muted);text-align:center}
|