openpond 0.0.61 → 0.0.62
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/chunks/{actions-command-QVYIPEN5.js → actions-command-DZ6D7JTO.js} +2 -2
- package/dist/chunks/{app-layer-GCNXR4F3.js → app-layer-MSLVVYLM.js} +5 -5
- package/dist/chunks/{app-server-runtime-737DBOSH.js → app-server-runtime-BRG7A5VD.js} +7 -7
- package/dist/chunks/{apps-JB3POF6Z.js → apps-6PAXKTB5.js} +5 -5
- package/dist/chunks/{chunk-BQQS5RRI.js → chunk-4NHAH3MT.js} +92 -20
- package/dist/chunks/{chunk-ZAX7MLQJ.js → chunk-64LYEFLR.js} +1 -1
- package/dist/chunks/{chunk-5HMXXGWZ.js → chunk-6JT34APP.js} +2 -2
- package/dist/chunks/{chunk-32R4GQD3.js → chunk-BFAL2CV3.js} +2 -2
- package/dist/chunks/{chunk-6RMGHEFF.js → chunk-FYB6ELFM.js} +1 -1
- package/dist/chunks/{chunk-LBIVEX6V.js → chunk-GMX47RLP.js} +35 -33
- package/dist/chunks/{chunk-TOMMZN6V.js → chunk-IY2AW5F3.js} +12 -3
- package/dist/chunks/{chunk-XIUCBUUQ.js → chunk-J2REM7LE.js} +1 -1
- package/dist/chunks/{chunk-XSHMPOQV.js → chunk-JGOP4GCK.js} +6 -0
- package/dist/chunks/{chunk-IZ3XGRAG.js → chunk-K4JEWEJQ.js} +1 -1
- package/dist/chunks/{chunk-ZJPLJP2Q.js → chunk-KMBJLBQH.js} +2 -2
- package/dist/chunks/{chunk-NPEWMLRH.js → chunk-MBF44RYK.js} +1 -1
- package/dist/chunks/{chunk-B3WVCPXG.js → chunk-PLDCQVNW.js} +71 -6
- package/dist/chunks/{chunk-L5JTI6LQ.js → chunk-T4FMK5GN.js} +4 -2
- package/dist/chunks/{chunk-YSVY4O42.js → chunk-T55IL3GI.js} +1 -1
- package/dist/chunks/{cli-MFFCFH3P.js → cli-L25X2EZL.js} +6 -6
- package/dist/chunks/{core-commands-KCFU7U5Y.js → core-commands-STKFZZVR.js} +6 -6
- package/dist/chunks/{desktop-test-FEQVX4N4.js → desktop-test-ACKJN4UV.js} +5 -5
- package/dist/chunks/{extension-M4DH25KH.js → extension-MVWXKSAD.js} +1 -1
- package/dist/chunks/{help-ZUIE4EPY.js → help-4MQ4EOIS.js} +1 -1
- package/dist/chunks/{opchat-7KRZIFFD.js → opchat-DUIZT4G6.js} +5 -5
- package/dist/chunks/{organizations-ZWPFNM6K.js → organizations-ATM4CZII.js} +7 -7
- package/dist/chunks/{profile-GF57OWI6.js → profile-5H3GF252.js} +12 -7
- package/dist/chunks/{project-agent-65MXZHGM.js → project-agent-RSKSO5GT.js} +27 -7
- package/dist/chunks/{sandbox-command-WH2OQRHP.js → sandbox-command-MTYSZR6P.js} +6 -6
- package/dist/chunks/{sandbox-template-W5HU24TF.js → sandbox-template-RZ5AJ4KB.js} +7 -7
- package/dist/chunks/{src-YUIJKNIC.js → src-PW337SIJ.js} +4 -4
- package/dist/chunks/{src-O5QXOQ5H.js → src-WKH7EP7W.js} +60 -13
- package/dist/chunks/{teams-bot-5ATLXSHC.js → teams-bot-FF3LDAYL.js} +5 -5
- package/dist/chunks/{workspaces-4XJ3GXL4.js → workspaces-QKADU2A6.js} +2 -2
- package/dist/cli.js +13 -13
- package/dist/index.js +6 -0
- package/dist/sandbox/client-handles.d.ts +2 -1
- package/dist/sandbox/client.d.ts +3 -1
- package/dist/sandbox/types/org-project-agent.d.ts +13 -0
- package/dist/web/assets/{AppDialog-BvdkukM_.js → AppDialog-1RkKL2v6.js} +1 -1
- package/dist/web/assets/{AppsView-9h3-BQbk.js → AppsView-B6hDEt-h.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-C6WJ5wIu.js → BrowserSidebar-CkAMOgiq.js} +1 -1
- package/dist/web/assets/{CommandMenu-C7en9zgQ.js → CommandMenu-9oAkS4X3.js} +1 -1
- package/dist/web/assets/{CommunityView-CoqI6Dks.js → CommunityView-Dyuq5N28.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-DMq6A2Ba.js → ComposerCreateImproveStrip-D91cw5AT.js} +1 -1
- package/dist/web/assets/{GetStartedView-B-zgx1jI.js → GetStartedView-BZpcZgjB.js} +1 -1
- package/dist/web/assets/{LabModelVersionDetailPage-CkNOBygO.js → LabModelVersionDetailPage-C0jNkciw.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-CmRHuu78.js → LabSkillSidebar-JGCPqTB1.js} +1 -1
- package/dist/web/assets/{LabsRoute-DLPZqEev.js → LabsRoute-Dpv5Haqy.js} +3 -3
- package/dist/web/assets/{MainChatThread-CFGsODmc.js → MainChatThread-B4_iIn3g.js} +2 -2
- package/dist/web/assets/MainPane-o4HIxmNz.js +6 -0
- package/dist/web/assets/{MarkdownText-C4Ixpl-i.js → MarkdownText-DgS9KdyT.js} +1 -1
- package/dist/web/assets/{Messages-DmEk_BWS.js → Messages-DjMa9H1T.js} +8 -8
- package/dist/web/assets/{NativeSkillSidebar-Cn824hrX.js → NativeSkillSidebar-Q3fwLOiO.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-BFEDv4Ga.js → NewProjectDialog-CUb0umRT.js} +1 -1
- package/dist/web/assets/{OutputsPage-hfQyqQzx.js → OutputsPage-DD_1STRQ.js} +1 -1
- package/dist/web/assets/{RightChatPanelStack-CiPKX3Ea.js → RightChatPanelStack-2dFyjK7Z.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-CyoZsUCe.js → ScheduledWorkPage-DPjweWpP.js} +1 -1
- package/dist/web/assets/SettingsView-BS5m5vdt.css +1 -0
- package/dist/web/assets/SettingsView-DJGgGPL0.js +6 -0
- package/dist/web/assets/{TeamChatView-C4RWAO8c.js → TeamChatView-CZmbzRk7.js} +2 -2
- package/dist/web/assets/{TerminalOverlay-CpsPuPIM.js → TerminalOverlay-CpjrArXn.js} +1 -1
- package/dist/web/assets/{TrainingCreationPanel-DMLpUVbJ.js → TrainingCreationPanel-Tbj3qk8-.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-gAhpwkYs.js → TrainingDraftPanel-BhggD-hn.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-WBtxLhBx.js → UsageSettingsSection-CXM6LKim.js} +1 -1
- package/dist/web/assets/{WorkspaceDiffPanel-CUpwqvzZ.js → WorkspaceDiffPanel-CoMkI8dY.js} +5 -5
- package/dist/web/assets/{WorkspaceEnvironmentMenu-LIbOBT4f.js → WorkspaceEnvironmentMenu-CZyjk82C.js} +3 -3
- package/dist/web/assets/{WorkspaceGitDialogs-8y7rRSou.js → WorkspaceGitDialogs-DTj3DOsf.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-BpHmWrCD.js → WorkspaceMonacoEditor-DaNMLEnU.js} +3 -3
- package/dist/web/assets/{arrow-up-right-3TbyK1ec.js → arrow-up-right-wvL_rSwe.js} +1 -1
- package/dist/web/assets/{chevron-up-C4tTuxXs.js → chevron-up-BbyiUcq_.js} +1 -1
- package/dist/web/assets/{cloud-upload-ZGHLWEn3.js → cloud-upload-Bgv1fA6E.js} +1 -1
- package/dist/web/assets/{cssMode-kfZCOm_r.js → cssMode-BG9jdNNX.js} +1 -1
- package/dist/web/assets/{folder-open-C4WG_lDr.js → folder-open-CRAYp6pW.js} +1 -1
- package/dist/web/assets/{folder-plus-CKRaDeR3.js → folder-plus-BgsuJVU0.js} +1 -1
- package/dist/web/assets/{git-branch-yLi5tff8.js → git-branch-CicxCU5U.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-BPyGYak3.js → git-commit-horizontal-BRkwl6bp.js} +1 -1
- package/dist/web/assets/{htmlMode-DT--Et9k.js → htmlMode-B69EEM3s.js} +1 -1
- package/dist/web/assets/index-BGdmnwp7.js +1 -0
- package/dist/web/assets/{index-B_HvNtwl.css → index-Bt9mPk1q.css} +1 -1
- package/dist/web/assets/{index--lwjVZXT.js → index-Dcpm2LlR.js} +71 -71
- package/dist/web/assets/{info-CzzHwSUb.js → info-BxhCcEsF.js} +1 -1
- package/dist/web/assets/{jsonMode-CKg1GzqC.js → jsonMode-D0tzZkp2.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-B76Yo6xo.js → lspLanguageFeatures-DFpYfxMH.js} +1 -1
- package/dist/web/assets/{monaco.contribution-DqeexNAI.js → monaco.contribution-BFP-1c-A.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CS3H8RrD.js → monaco.contribution-BzGRrg8l.js} +2 -2
- package/dist/web/assets/{monaco.contribution-BRuQU-2A.js → monaco.contribution-K53jgqut.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CLpGfCSS.js → monaco.contribution-lS_l56Q7.js} +2 -2
- package/dist/web/assets/{play-EDFh3BPS.js → play-B8en8HVG.js} +1 -1
- package/dist/web/assets/{python-De_Vr_hD.js → python-DPtRb2z3.js} +1 -1
- package/dist/web/assets/{refresh-cw-DRJJ-X1U.js → refresh-cw-CRZeaNu7.js} +1 -1
- package/dist/web/assets/{save-BSxqIWP6.js → save-oO8erge1.js} +1 -1
- package/dist/web/assets/{square-BV-Vgh5a.js → square-CSULphDY.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-1Suz4cxo.js → toggleHighContrast-CmDdOtfT.js} +1 -1
- package/dist/web/assets/{tsMode-DMyzpvFI.js → tsMode-B0TCT940.js} +1 -1
- package/dist/web/assets/{upload-jVxCW0dO.js → upload-dz-oCLFE.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-DNpnOBA8.js → useLocalAgentSchedules-DPga1Kwi.js} +1 -1
- package/dist/web/assets/{wifi-off-IzGGiOX_.js → wifi-off-BZpON33U.js} +1 -1
- package/dist/web/assets/{workers-Crdnk6Zy.js → workers-DXVEq1Aw.js} +1 -1
- package/dist/web/assets/{yaml-CF3tmjgW.js → yaml-B8TBCEpi.js} +1 -1
- package/dist/web/index.html +2 -2
- package/docs/command-reference.md +2 -0
- package/package.json +1 -1
- package/dist/web/assets/MainPane-B2kcZpM0.js +0 -6
- package/dist/web/assets/SettingsView-BZkrIOc0.css +0 -1
- package/dist/web/assets/SettingsView-DWWs9gel.js +0 -6
- package/dist/web/assets/index-C9-OtZl8.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,p as $,j as e,aS as oe,c0 as ue,a0 as he,X as me,ba as G,A as xe,ay as _,c1 as fe}from"./index--lwjVZXT.js";import{u as je,R as X}from"./useLocalAgentSchedules-DNpnOBA8.js";import{M as pe,A as ye,T as be,P as J}from"./MarkdownText-C4Ixpl-i.js";import{P as Q}from"./play-EDFh3BPS.js";import{R as ve}from"./refresh-cw-DRJJ-X1U.js";import{S as ge}from"./save-BSxqIWP6.js";const we=3e4;function Ne(s){const[t,n]=i.useState([]),[l,d]=i.useState([]),[j,u]=i.useState(null),[o,a]=i.useState(!1),[r,f]=i.useState(null),[R,v]=i.useState(()=>new Set);async function N(c,p){p&&a(!0);try{const b=await $.hostedSavedWork(c);n(b.definitions),d(b.runs),u(b.webBaseUrl??null),f(null)}catch(b){f(U(b))}finally{p&&a(!1)}}i.useEffect(()=>{if(!s){n([]),d([]),u(null),f(null),a(!1);return}let c=!1;const p=async k=>{if(!c){k&&a(!0);try{const w=await $.hostedSavedWork(s);if(c)return;n(w.definitions),d(w.runs),u(w.webBaseUrl??null),f(null)}catch(w){c||f(U(w))}finally{!c&&k&&a(!1)}}};p(!0);const b=window.setInterval(()=>{p(!1)},we);return()=>{c=!0,window.clearInterval(b)}},[s]);async function y(){s&&await N(s,!0)}async function D(c){s&&(await $.createHostedSavedWork(s,c),await N(s,!1))}async function A(c,p){await x(c,async b=>{await $.updateHostedSavedWork(b,c,p)})}async function S(c){await x(c,async p=>{await $.deleteHostedSavedWork(p,c)})}async function E(c){await x(c,async p=>{await $.runHostedSavedWork(p,c,crypto.randomUUID())})}async function x(c,p){if(!(!s||R.has(c))){g(c,!0);try{await p(s),await N(s,!1)}catch(b){throw f(U(b)),b}finally{g(c,!1)}}}function g(c,p){v(b=>{const k=new Set(b);return p?k.add(c):k.delete(c),k})}return{create:D,definitions:t,error:r,loading:o,pendingScheduleIds:R,refresh:y,remove:S,run:E,runs:l,update:A,webBaseUrl:j}}function U(s){return s instanceof Error?s.message:String(s)}const ee="openpond.scheduled-work.view.v1";function Se(s=se()){try{return s?.getItem(ee)==="list"?"list":"calendar"}catch{return"calendar"}}function ke(s,t=se()){try{t?.setItem(ee,s)}catch{}}function se(){if(typeof window>"u")return null;try{return window.localStorage}catch{return null}}function M(s,t){if(!s)return"None";const n=new Date(s);if(!Number.isFinite(n.getTime()))return"None";try{return n.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",...t?{timeZone:t,timeZoneName:"short"}:{}})}catch{return n.toLocaleString()}}function te(s){return F(s.replaceAll("_"," "))}function F(s){return s.replace(/^./,t=>t.toUpperCase())}function Re({run:s}){const t=s.error||s.stderr||s.stdout;return e.jsxs("details",{className:"scheduled-run-row",children:[e.jsxs("summary",{children:[e.jsxs("span",{children:[e.jsx("strong",{children:te(s.status)}),e.jsx("small",{children:M(s.createdAt,null)})]}),e.jsx("span",{className:"scheduled-run-trigger",children:s.trigger==="manual"?"Manual":"Scheduled"})]}),t?e.jsx("pre",{children:t}):null]})}function De({onOpen:s,run:t}){return e.jsxs("button",{className:"scheduled-run-row hosted",onClick:s,type:"button",children:[e.jsxs("span",{children:[e.jsx("strong",{children:te(t.status)}),e.jsx("small",{children:M(t.createdAt,null)})]}),e.jsxs("span",{className:"scheduled-run-trigger",children:[F(t.triggerKind)," ",e.jsx(G,{size:11})]}),t.deliveryError?e.jsx("p",{children:t.deliveryError}):null]})}function ne({children:s,detailExpanded:t,label:n,onClose:l,onDetailResizeStart:d,onToggleDetailExpanded:j}){return e.jsxs("aside",{"aria-label":n,className:`workspace-diff-panel scheduled-detail${t?" expanded":""}`,children:[t?null:e.jsx("div",{"aria-label":"Resize schedule details","aria-orientation":"vertical",className:"workspace-diff-resize-handle",onPointerDown:d,role:"separator"}),e.jsxs("div",{className:"workspace-diff-topbar",children:[e.jsx("div",{className:"workspace-diff-tabs",role:"tablist","aria-label":"Schedule details",children:e.jsxs("button",{"aria-selected":"true",className:"workspace-diff-tab active",role:"tab",type:"button",children:[e.jsx(ue,{size:14}),e.jsx("span",{children:"Schedule"})]})}),e.jsxs("div",{className:"workspace-diff-toolbar-actions",children:[e.jsx("button",{"aria-label":t?"Dock schedule details":"Expand schedule details",className:"diff-icon-button",onClick:j,title:t?"Dock schedule details":"Expand schedule details",type:"button",children:t?e.jsx(pe,{size:14}):e.jsx(he,{size:14})}),e.jsx("button",{"aria-label":"Close schedule details",className:"diff-icon-button",onClick:l,title:"Close schedule details",type:"button",children:e.jsx(me,{size:14})})]})]}),e.jsx("div",{className:"scheduled-detail-body",children:s})]})}function T({children:s,title:t}){return e.jsxs("section",{className:"scheduled-detail-section",children:[e.jsx("div",{className:"scheduled-detail-section-heading",children:e.jsx("h3",{children:t})}),s]})}function C({label:s,value:t}){return e.jsxs("div",{children:[e.jsx("dt",{children:s}),e.jsx("dd",{children:t})]})}function O({children:s}){return e.jsx("p",{className:"scheduled-empty",children:s})}function le({label:s}){return e.jsxs("div",{className:"scheduled-loading",role:"status",children:[e.jsx(oe,{className:"scheduled-spin",size:16}),e.jsx("span",{children:s})]})}const Ae=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function Ce({items:s,onSelect:t,selectedKey:n}){const[l,d]=i.useState(()=>q(new Date)),j=i.useMemo(()=>$e(l),[l]),u=i.useMemo(()=>Me(s),[s]),o=new Intl.DateTimeFormat(void 0,{month:"long",year:"numeric"}).format(l),a=s.filter(r=>!ae(r.nextRunAt));return e.jsxs("div",{className:"scheduled-calendar",children:[e.jsxs("div",{className:"scheduled-calendar-toolbar",children:[e.jsx("strong",{children:o}),e.jsxs("div",{children:[e.jsx("button",{"aria-label":"Previous month",className:"scheduled-icon-button",onClick:()=>d(V(l,-1)),type:"button",children:e.jsx(xe,{size:15})}),e.jsx("button",{className:"scheduled-calendar-today",onClick:()=>d(q(new Date)),type:"button",children:"Today"}),e.jsx("button",{"aria-label":"Next month",className:"scheduled-icon-button",onClick:()=>d(V(l,1)),type:"button",children:e.jsx(ye,{size:15})})]})]}),e.jsxs("div",{className:"scheduled-calendar-grid",role:"grid","aria-label":o,children:[Ae.map(r=>e.jsx("div",{className:"scheduled-calendar-weekday",role:"columnheader",children:r},r)),j.map(r=>{const f=K(r),R=u.get(f)??[],v=r.getMonth()!==l.getMonth(),N=f===K(new Date);return e.jsxs("div",{className:`scheduled-calendar-day${v?" outside":""}${N?" today":""}`,role:"gridcell",children:[e.jsx("span",{className:"scheduled-calendar-day-number",children:r.getDate()}),e.jsx("div",{className:"scheduled-calendar-events",children:R.map(y=>e.jsxs("button",{"aria-current":n===y.key?"true":void 0,className:`scheduled-calendar-event${y.enabled?"":" paused"}`,onClick:()=>t(y.key),title:y.title,type:"button",children:[e.jsx("span",{children:Ee(y.nextRunAt)}),e.jsx("strong",{children:y.title})]},y.key))})]},f)})]}),a.length?e.jsxs("div",{className:"scheduled-calendar-unscheduled",children:[e.jsx("span",{children:"No upcoming run"}),e.jsx("div",{children:a.map(r=>e.jsx("button",{onClick:()=>t(r.key),type:"button",children:r.title},r.key))})]}):null]})}function $e(s){const t=new Date(s.getFullYear(),s.getMonth(),1),n=new Date(t);return n.setDate(t.getDate()-t.getDay()),Array.from({length:42},(l,d)=>{const j=new Date(n);return j.setDate(n.getDate()+d),j})}function Me(s){const t=new Map;for(const n of s){const l=ae(n.nextRunAt);if(!l)continue;const d=K(l);t.set(d,[...t.get(d)??[],n])}for(const n of t.values())n.sort((l,d)=>l.nextRunAt.localeCompare(d.nextRunAt));return t}function ae(s){if(!s)return null;const t=new Date(s);return Number.isNaN(t.getTime())?null:t}function K(s){return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function q(s){return new Date(s.getFullYear(),s.getMonth(),1)}function V(s,t){return new Date(s.getFullYear(),s.getMonth()+t,1)}function Ee(s){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(new Date(s))}function Te({cadence:s,onSelect:t,schedule:n,selected:l}){return e.jsxs("button",{"aria-current":l?"true":void 0,className:"scheduled-list-row",onClick:t,type:"button",children:[e.jsx("span",{className:`scheduled-status-dot ${n.enabled?"active":"paused"}`}),e.jsxs("span",{className:"scheduled-list-copy",children:[e.jsx("span",{className:"scheduled-list-title",children:e.jsx("strong",{children:n.scheduleName})}),e.jsx("span",{children:n.localProjectName}),e.jsxs("small",{children:[s,n.nextRunAt?` · Next ${M(n.nextRunAt,n.timezone)}`:" · No next run"]})]})]})}function Le({cadence:s,definition:t,onSelect:n,schedule:l,selected:d}){return e.jsxs("button",{"aria-current":d?"true":void 0,className:"scheduled-list-row",onClick:n,type:"button",children:[e.jsx("span",{className:`scheduled-status-dot ${l.enabled?"active":"paused"}`}),e.jsxs("span",{className:"scheduled-list-copy",children:[e.jsxs("span",{className:"scheduled-list-title",children:[e.jsx("strong",{children:t.name}),e.jsx("small",{className:"scheduled-environment-badge hosted",children:"Hosted"})]}),e.jsx("span",{children:t.prompt}),e.jsxs("small",{children:[s,l.nextRunAt?` · Next ${M(l.nextRunAt,l.timeZone)}`:" · No next run"]})]})]})}const ze=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function ts({connection:s,detailOpen:t,detailExpanded:n,onDetailOpenChange:l,onDetailResizeStart:d,onToggleDetailExpanded:j}){const u=Ne(s),o=je(s),[a,r]=i.useState("all"),[f,R]=i.useState(Se),[v,N]=i.useState(!1),[y,D]=i.useState(null),A=i.useMemo(()=>Pe(u.definitions),[u.definitions]),S=i.useMemo(()=>Fe(A,a),[a,A]),E=i.useMemo(()=>Ze(o.schedules,a),[a,o.schedules]),x=A.find(h=>I(h.schedule.id)===y)??null,g=o.schedules.find(h=>W(h.id)===y)??null,c=x?u.runs.filter(h=>h.scheduleId===x.schedule.id):[],p=i.useMemo(()=>Ue(E,S),[E,S]),b=i.useMemo(()=>p.map(Oe),[p]);_(u.error,{prefix:"Scheduled Work"}),_(o.error,{prefix:"Local schedules"}),i.useEffect(()=>{y&&!x&&!g&&D(null)},[x,g,y]),i.useEffect(()=>{!t&&y&&D(null)},[t,y]),i.useEffect(()=>()=>l(!1),[l]);function k(h){D(h),l(!0)}function w(){D(null),l(!1)}function P(h){R(h),ke(h)}async function z(){N(!0);try{await Promise.all([u.refresh(),o.refresh()])}finally{N(!1)}}return e.jsxs("section",{"aria-label":"Scheduled work",className:`scheduled-work-view${x||g?" detail-open":""}${n?" detail-expanded":""}`,children:[e.jsx("div",{className:"scheduled-work-scroll",children:e.jsxs("div",{className:"scheduled-work-content",children:[e.jsxs("header",{className:"scheduled-work-header",children:[e.jsxs("div",{"aria-label":"Scheduled view",className:"scheduled-view-tabs",role:"tablist",children:[e.jsx("button",{"aria-selected":f==="calendar",className:f==="calendar"?"active":void 0,onClick:()=>P("calendar"),role:"tab",type:"button",children:"Calendar"}),e.jsx("button",{"aria-selected":f==="list",className:f==="list"?"active":void 0,onClick:()=>P("list"),role:"tab",type:"button",children:"List"})]}),e.jsxs("div",{className:"scheduled-work-header-actions",children:[e.jsx("button",{"aria-label":"Refresh schedules",className:"scheduled-icon-button",disabled:!s||u.loading||o.loading,onClick:()=>{z()},title:"Refresh schedules",type:"button",children:e.jsx(ve,{className:v?"scheduled-spin":void 0,size:16})}),e.jsxs("label",{className:"scheduled-filter",children:[e.jsx(fe,{"aria-hidden":"true",size:16}),e.jsxs("select",{"aria-label":"Schedule filter",onChange:h=>r(h.target.value),value:a,children:[e.jsx("option",{value:"active",children:"Active"}),e.jsx("option",{value:"paused",children:"Paused"}),e.jsx("option",{value:"all",children:"All"})]})]})]})]}),e.jsx("section",{"aria-busy":u.loading||o.loading,className:"scheduled-list",children:s?(u.loading||o.loading)&&A.length===0&&o.schedules.length===0?e.jsx(le,{label:"Loading schedules"}):u.error&&o.error&&A.length===0&&o.schedules.length===0?e.jsx(O,{children:"Schedules are unavailable. Refresh to try again."}):p.length===0?e.jsx(O,{children:"Create a scheduled task here or ask for one in Work."}):f==="calendar"?e.jsx(Ce,{items:b,onSelect:k,selectedKey:y}):e.jsx("div",{className:"scheduled-list-rows",children:p.map(h=>h.kind==="local"?e.jsx(Te,{cadence:re(h.schedule),onSelect:()=>k(W(h.schedule.id)),schedule:h.schedule,selected:y===W(h.schedule.id)},W(h.schedule.id)):e.jsx(Le,{cadence:_e(h.row.schedule),definition:h.row.definition,onSelect:()=>k(I(h.row.schedule.id)),schedule:h.row.schedule,selected:y===I(h.row.schedule.id)},I(h.row.schedule.id)))}):e.jsx(O,{children:"Connect to OpenPond to view scheduled Work."})})]})}),x?e.jsx(Ie,{onClose:w,onDelete:async()=>{await u.remove(x.schedule.id),w()},onRun:()=>u.run(x.schedule.id),onSave:h=>u.update(x.schedule.id,h),onToggle:()=>u.update(x.schedule.id,{enabled:!x.schedule.enabled}),pending:u.pendingScheduleIds.has(x.schedule.id),row:x,runs:c,detailExpanded:n,onDetailResizeStart:d,onToggleDetailExpanded:j,webBaseUrl:u.webBaseUrl},`${x.schedule.id}:${x.definition.version}:${x.schedule.configurationVersion}`):g?e.jsx(We,{connection:s,onClose:w,onRun:()=>o.run(g),onToggle:()=>o.toggle(g),pending:o.pendingScheduleIds.has(g.id),schedule:g,detailExpanded:n,onDetailResizeStart:d,onToggleDetailExpanded:j},g.id):null]})}function We({connection:s,detailExpanded:t,onClose:n,onDetailResizeStart:l,onRun:d,onToggleDetailExpanded:j,onToggle:u,pending:o,schedule:a}){const r=qe(s,a.id);return _(r.error,{prefix:"Local schedule runs"}),e.jsxs(ne,{detailExpanded:t,label:`${a.scheduleName} details`,onClose:n,onDetailResizeStart:l,onToggleDetailExpanded:j,children:[e.jsx("div",{className:"scheduled-detail-header",children:e.jsxs("div",{children:[e.jsxs("div",{className:"scheduled-detail-title-row",children:[e.jsx("h2",{children:"Schedule details"}),e.jsx("span",{children:a.enabled?"Active":"Paused"})]}),e.jsx("p",{children:a.scheduleName})]})}),e.jsxs(T,{title:"Task",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(C,{label:"Environment",value:"Local"}),e.jsx(C,{label:"Project",value:a.localProjectName}),e.jsx(C,{label:"Agent",value:a.agentName}),e.jsx(C,{label:"Action",value:a.targetAction})]}),e.jsx("pre",{className:"scheduled-prompt",children:He(a)})]}),e.jsxs(T,{title:"Schedule",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(C,{label:"Cadence",value:re(a)}),e.jsx(C,{label:"Expression",value:a.scheduleExpression}),e.jsx(C,{label:"Timezone",value:a.timezone??"Local time"}),e.jsx(C,{label:"Next run",value:M(a.nextRunAt,a.timezone)}),e.jsx(C,{label:"Last run",value:M(a.lastRunAt,a.timezone)})]}),a.lastError?e.jsx("p",{className:"scheduled-detail-error",children:a.lastError}):null]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[e.jsxs("button",{disabled:o,onClick:()=>{d()},type:"button",children:[e.jsx(X,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:o,onClick:()=>{u()},type:"button",children:[a.enabled?e.jsx(J,{size:15}):e.jsx(Q,{size:15}),e.jsx("span",{children:a.enabled?"Pause":"Resume"})]})]}),e.jsx(T,{title:"Runs",children:r.loading&&r.runs.length===0?e.jsx(le,{label:"Loading runs"}):r.runs.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:r.runs.map(f=>e.jsx(Re,{run:f},f.id))})})]})}function Ie({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:d,onSave:j,onToggleDetailExpanded:u,onToggle:o,pending:a,row:r,runs:f,webBaseUrl:R}){const v=Ke(r.schedule),[N,y]=i.useState(r.definition.name),[D,A]=i.useState(r.definition.prompt),[S,E]=i.useState(v.kind),[x,g]=i.useState(v.timeZone),[c,p]=i.useState(v.startDate),[b,k]=i.useState(v.localTime),[w,P]=i.useState(v.weekdays?.[0]??"monday"),[z,h]=i.useState(v.dayOfMonth??1),H=f[0]?.conversationId??null,Z=R?Y(R,H):null,de=N!==r.definition.name||D!==r.definition.prompt||S!==v.kind||x!==v.timeZone||c!==v.startDate||b!==v.localTime||w!==(v.weekdays?.[0]??"monday")||z!==(v.dayOfMonth??1);async function ce(m){m.preventDefault(),await j({name:N,prompt:D,recurrence:{version:1,kind:S,timeZone:x,startDate:c,localTime:b,end:{kind:"never"},...S==="weekly"?{weekdays:[w]}:{},...S==="monthly"?{dayOfMonth:z}:{}}})}return e.jsx(ne,{detailExpanded:s,label:`${r.definition.name} details`,onClose:t,onDetailResizeStart:l,onToggleDetailExpanded:u,children:e.jsxs("form",{onSubmit:ce,children:[e.jsxs("div",{className:"scheduled-detail-header",children:[e.jsx("div",{children:e.jsxs("div",{className:"scheduled-detail-title-row",children:[e.jsx("h2",{children:"Schedule details"}),e.jsx("span",{children:r.schedule.enabled?"Active":"Paused"})]})}),e.jsx("div",{className:"scheduled-detail-header-controls",children:e.jsx("button",{"aria-label":"Delete schedule",className:"scheduled-icon-button",disabled:a,onClick:()=>{n()},title:"Delete schedule",type:"button",children:e.jsx(be,{size:16})})})]}),e.jsxs(T,{title:"Task",children:[e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{maxLength:180,onChange:m=>y(m.target.value),required:!0,value:N})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Prompt"}),e.jsx("textarea",{onChange:m=>A(m.target.value),required:!0,value:D})]})]}),e.jsxs(T,{title:"Schedule",children:[e.jsxs("div",{className:"scheduled-field-grid",children:[e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Repeat"}),e.jsxs("select",{onChange:m=>E(m.target.value),value:S,children:[e.jsx("option",{value:"once",children:"Once"}),e.jsx("option",{value:"daily",children:"Daily"}),e.jsx("option",{value:"weekdays",children:"Weekdays"}),e.jsx("option",{value:"weekly",children:"Weekly"}),e.jsx("option",{value:"monthly",children:"Monthly"})]})]}),S==="weekly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day"}),e.jsx("select",{onChange:m=>P(m.target.value),value:w,children:ze.map(m=>e.jsx("option",{value:m,children:F(m)},m))})]}):S==="monthly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day of month"}),e.jsx("input",{max:31,min:1,onChange:m=>h(Number(m.target.value)),type:"number",value:z})]}):null,e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Start date"}),e.jsx("input",{onChange:m=>p(m.target.value),required:!0,type:"date",value:c})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Time"}),e.jsx("input",{onChange:m=>k(m.target.value),required:!0,type:"time",value:b})]}),e.jsxs("label",{className:"scheduled-field scheduled-field-wide",children:[e.jsx("span",{children:"Timezone"}),e.jsx("input",{onChange:m=>g(m.target.value),required:!0,value:x})]})]}),e.jsxs("p",{className:"scheduled-next-run",children:["Next run: ",M(r.schedule.nextRunAt,v.timeZone)]})]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[de?e.jsxs("button",{disabled:a,type:"submit",children:[e.jsx(ge,{size:15}),e.jsx("span",{children:"Save"})]}):null,e.jsxs("button",{disabled:a,onClick:()=>{d()},type:"button",children:[e.jsx(X,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:a,onClick:()=>{o()},type:"button",children:[r.schedule.enabled?e.jsx(J,{size:15}):e.jsx(Q,{size:15}),e.jsx("span",{children:r.schedule.enabled?"Pause":"Resume"})]})]}),e.jsxs("button",{className:"scheduled-open-chat",disabled:a||!Z,onClick:()=>{Z&&B(Z,H)},type:"button",children:[e.jsx("span",{children:"Open hosted chat"}),e.jsx(G,{size:14})]}),e.jsx(T,{title:"Runs",children:f.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:f.map(m=>e.jsx(De,{onOpen:()=>{R&&B(Y(R,m.conversationId),m.conversationId)},run:m},m.id))})})]})})}function Pe(s){return s.flatMap(t=>t.schedules.map(n=>({definition:t,schedule:n})))}function Fe(s,t){return s.filter(n=>t==="active"?n.schedule.enabled:t==="paused"?!n.schedule.enabled:!0).sort((n,l)=>L(n.schedule.nextRunAt)-L(l.schedule.nextRunAt)||n.definition.name.localeCompare(l.definition.name))}function Ze(s,t){return s.filter(n=>t==="active"?n.enabled:t==="paused"?!n.enabled:!0).sort((n,l)=>L(n.nextRunAt)-L(l.nextRunAt)||n.scheduleName.localeCompare(l.scheduleName))}function Ue(s,t){return[...s.map(n=>({kind:"local",schedule:n})),...t.map(n=>({kind:"hosted",row:n}))].sort((n,l)=>{const d=L(n.kind==="local"?n.schedule.nextRunAt:n.row.schedule.nextRunAt),j=L(l.kind==="local"?l.schedule.nextRunAt:l.row.schedule.nextRunAt);if(d!==j)return d-j;const u=n.kind==="local"?n.schedule.scheduleName:n.row.definition.name,o=l.kind==="local"?l.schedule.scheduleName:l.row.definition.name;return u.localeCompare(o)})}function Oe(s){return s.kind==="local"?{enabled:s.schedule.enabled,key:W(s.schedule.id),nextRunAt:s.schedule.nextRunAt,title:s.schedule.scheduleName}:{enabled:s.row.schedule.enabled,key:I(s.row.schedule.id),nextRunAt:s.row.schedule.nextRunAt,title:s.row.definition.name}}function _e(s){const t=s.recurrence;if(!t)return s.expression??"Manual";const n=ie(t.localTime);return t.kind==="once"?`Once on ${t.startDate} at ${n} · ${t.timeZone}`:t.kind==="weekdays"?`Weekdays at ${n} · ${t.timeZone}`:t.kind==="weekly"?`${t.weekdays?.map(F).join(", ")??"Weekly"} at ${n} · ${t.timeZone}`:t.kind==="monthly"?`Monthly on day ${t.dayOfMonth??1} at ${n} · ${t.timeZone}`:`Daily at ${n} · ${t.timeZone}`}function re(s){const t=s.timezone?` · ${s.timezone}`:"";if(s.scheduleType==="rate")return`Every ${s.scheduleExpression}${t}`;const n=s.scheduleExpression.trim().split(/\s+/);if(n.length===5&&/^\d+$/.test(n[0])&&/^\d+$/.test(n[1])){const l=ie(`${n[1].padStart(2,"0")}:${n[0].padStart(2,"0")}`);if(n[2]==="*"&&n[3]==="*"&&n[4]==="*")return`Daily at ${l}${t}`;if(n[2]==="*"&&n[3]==="*"&&n[4]==="MON-FRI")return`Weekdays at ${l}${t}`}return`Cron ${s.scheduleExpression}${t}`}function Ke(s){return s.recurrence??{version:1,kind:"daily",timeZone:s.timeZone||Ye(),startDate:Ve(),localTime:"08:00",end:{kind:"never"}}}function He(s){const t=s.input.prompt;return typeof t=="string"&&t.trim()?t.trim():Object.keys(s.input).length>0?JSON.stringify(s.input,null,2):"No task input configured."}function qe(s,t){const[n,l]=i.useState([]),[d,j]=i.useState(!1),[u,o]=i.useState(null);return i.useEffect(()=>{if(!s){l([]),j(!1),o(null);return}let a=!1;return j(!0),$.localAgentScheduleRuns(s,t,{limit:20}).then(r=>{a||(l(r.runs),o(null))}).catch(r=>{a||o(Be(r))}).finally(()=>{a||j(!1)}),()=>{a=!0}},[s,t]),{error:u,loading:d,runs:n}}function W(s){return`local:${s}`}function I(s){return`hosted:${s}`}function Y(s,t){const n=new URL(s);return n.pathname=t?`/sandboxes/work/${encodeURIComponent(t)}`:"/sandboxes/work",n.search="",n.hash="",n.toString()}async function B(s,t){const n=window.openpond?.browser;n?.openExternal&&(await n.openExternal({conversationId:t??"hosted-scheduled-work",url:s})).ok||window.open(s,"_blank","noopener,noreferrer")}function ie(s){const[t="0",n="00"]=s.split(":");return new Date(2020,0,1,Number(t),Number(n)).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function L(s){if(!s)return Number.MAX_SAFE_INTEGER;const t=new Date(s).getTime();return Number.isFinite(t)?t:Number.MAX_SAFE_INTEGER}function Ve(){return new Date().toISOString().slice(0,10)}function Ye(){return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}function Be(s){return s instanceof Error?s.message:String(s)}export{ts as ScheduledWorkPage,Ue as combineScheduleRows,Ze as filterAndSortLocalSchedules,Fe as filterAndSortSchedules,M as formatScheduledRunAt,Y as hostedConversationUrl,re as localScheduleCadence,_e as scheduleCadence,Pe as scheduledRows};
|
|
1
|
+
import{r as i,p as $,j as e,aS as oe,c0 as ue,a0 as he,X as me,ba as G,A as xe,ay as _,c1 as fe}from"./index-Dcpm2LlR.js";import{u as je,R as X}from"./useLocalAgentSchedules-DPga1Kwi.js";import{M as pe,A as ye,T as be,P as J}from"./MarkdownText-DgS9KdyT.js";import{P as Q}from"./play-B8en8HVG.js";import{R as ve}from"./refresh-cw-CRZeaNu7.js";import{S as ge}from"./save-oO8erge1.js";const we=3e4;function Ne(s){const[t,n]=i.useState([]),[l,d]=i.useState([]),[j,u]=i.useState(null),[o,a]=i.useState(!1),[r,f]=i.useState(null),[R,v]=i.useState(()=>new Set);async function N(c,p){p&&a(!0);try{const b=await $.hostedSavedWork(c);n(b.definitions),d(b.runs),u(b.webBaseUrl??null),f(null)}catch(b){f(U(b))}finally{p&&a(!1)}}i.useEffect(()=>{if(!s){n([]),d([]),u(null),f(null),a(!1);return}let c=!1;const p=async k=>{if(!c){k&&a(!0);try{const w=await $.hostedSavedWork(s);if(c)return;n(w.definitions),d(w.runs),u(w.webBaseUrl??null),f(null)}catch(w){c||f(U(w))}finally{!c&&k&&a(!1)}}};p(!0);const b=window.setInterval(()=>{p(!1)},we);return()=>{c=!0,window.clearInterval(b)}},[s]);async function y(){s&&await N(s,!0)}async function D(c){s&&(await $.createHostedSavedWork(s,c),await N(s,!1))}async function A(c,p){await x(c,async b=>{await $.updateHostedSavedWork(b,c,p)})}async function S(c){await x(c,async p=>{await $.deleteHostedSavedWork(p,c)})}async function E(c){await x(c,async p=>{await $.runHostedSavedWork(p,c,crypto.randomUUID())})}async function x(c,p){if(!(!s||R.has(c))){g(c,!0);try{await p(s),await N(s,!1)}catch(b){throw f(U(b)),b}finally{g(c,!1)}}}function g(c,p){v(b=>{const k=new Set(b);return p?k.add(c):k.delete(c),k})}return{create:D,definitions:t,error:r,loading:o,pendingScheduleIds:R,refresh:y,remove:S,run:E,runs:l,update:A,webBaseUrl:j}}function U(s){return s instanceof Error?s.message:String(s)}const ee="openpond.scheduled-work.view.v1";function Se(s=se()){try{return s?.getItem(ee)==="list"?"list":"calendar"}catch{return"calendar"}}function ke(s,t=se()){try{t?.setItem(ee,s)}catch{}}function se(){if(typeof window>"u")return null;try{return window.localStorage}catch{return null}}function M(s,t){if(!s)return"None";const n=new Date(s);if(!Number.isFinite(n.getTime()))return"None";try{return n.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",...t?{timeZone:t,timeZoneName:"short"}:{}})}catch{return n.toLocaleString()}}function te(s){return F(s.replaceAll("_"," "))}function F(s){return s.replace(/^./,t=>t.toUpperCase())}function Re({run:s}){const t=s.error||s.stderr||s.stdout;return e.jsxs("details",{className:"scheduled-run-row",children:[e.jsxs("summary",{children:[e.jsxs("span",{children:[e.jsx("strong",{children:te(s.status)}),e.jsx("small",{children:M(s.createdAt,null)})]}),e.jsx("span",{className:"scheduled-run-trigger",children:s.trigger==="manual"?"Manual":"Scheduled"})]}),t?e.jsx("pre",{children:t}):null]})}function De({onOpen:s,run:t}){return e.jsxs("button",{className:"scheduled-run-row hosted",onClick:s,type:"button",children:[e.jsxs("span",{children:[e.jsx("strong",{children:te(t.status)}),e.jsx("small",{children:M(t.createdAt,null)})]}),e.jsxs("span",{className:"scheduled-run-trigger",children:[F(t.triggerKind)," ",e.jsx(G,{size:11})]}),t.deliveryError?e.jsx("p",{children:t.deliveryError}):null]})}function ne({children:s,detailExpanded:t,label:n,onClose:l,onDetailResizeStart:d,onToggleDetailExpanded:j}){return e.jsxs("aside",{"aria-label":n,className:`workspace-diff-panel scheduled-detail${t?" expanded":""}`,children:[t?null:e.jsx("div",{"aria-label":"Resize schedule details","aria-orientation":"vertical",className:"workspace-diff-resize-handle",onPointerDown:d,role:"separator"}),e.jsxs("div",{className:"workspace-diff-topbar",children:[e.jsx("div",{className:"workspace-diff-tabs",role:"tablist","aria-label":"Schedule details",children:e.jsxs("button",{"aria-selected":"true",className:"workspace-diff-tab active",role:"tab",type:"button",children:[e.jsx(ue,{size:14}),e.jsx("span",{children:"Schedule"})]})}),e.jsxs("div",{className:"workspace-diff-toolbar-actions",children:[e.jsx("button",{"aria-label":t?"Dock schedule details":"Expand schedule details",className:"diff-icon-button",onClick:j,title:t?"Dock schedule details":"Expand schedule details",type:"button",children:t?e.jsx(pe,{size:14}):e.jsx(he,{size:14})}),e.jsx("button",{"aria-label":"Close schedule details",className:"diff-icon-button",onClick:l,title:"Close schedule details",type:"button",children:e.jsx(me,{size:14})})]})]}),e.jsx("div",{className:"scheduled-detail-body",children:s})]})}function T({children:s,title:t}){return e.jsxs("section",{className:"scheduled-detail-section",children:[e.jsx("div",{className:"scheduled-detail-section-heading",children:e.jsx("h3",{children:t})}),s]})}function C({label:s,value:t}){return e.jsxs("div",{children:[e.jsx("dt",{children:s}),e.jsx("dd",{children:t})]})}function O({children:s}){return e.jsx("p",{className:"scheduled-empty",children:s})}function le({label:s}){return e.jsxs("div",{className:"scheduled-loading",role:"status",children:[e.jsx(oe,{className:"scheduled-spin",size:16}),e.jsx("span",{children:s})]})}const Ae=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function Ce({items:s,onSelect:t,selectedKey:n}){const[l,d]=i.useState(()=>q(new Date)),j=i.useMemo(()=>$e(l),[l]),u=i.useMemo(()=>Me(s),[s]),o=new Intl.DateTimeFormat(void 0,{month:"long",year:"numeric"}).format(l),a=s.filter(r=>!ae(r.nextRunAt));return e.jsxs("div",{className:"scheduled-calendar",children:[e.jsxs("div",{className:"scheduled-calendar-toolbar",children:[e.jsx("strong",{children:o}),e.jsxs("div",{children:[e.jsx("button",{"aria-label":"Previous month",className:"scheduled-icon-button",onClick:()=>d(V(l,-1)),type:"button",children:e.jsx(xe,{size:15})}),e.jsx("button",{className:"scheduled-calendar-today",onClick:()=>d(q(new Date)),type:"button",children:"Today"}),e.jsx("button",{"aria-label":"Next month",className:"scheduled-icon-button",onClick:()=>d(V(l,1)),type:"button",children:e.jsx(ye,{size:15})})]})]}),e.jsxs("div",{className:"scheduled-calendar-grid",role:"grid","aria-label":o,children:[Ae.map(r=>e.jsx("div",{className:"scheduled-calendar-weekday",role:"columnheader",children:r},r)),j.map(r=>{const f=K(r),R=u.get(f)??[],v=r.getMonth()!==l.getMonth(),N=f===K(new Date);return e.jsxs("div",{className:`scheduled-calendar-day${v?" outside":""}${N?" today":""}`,role:"gridcell",children:[e.jsx("span",{className:"scheduled-calendar-day-number",children:r.getDate()}),e.jsx("div",{className:"scheduled-calendar-events",children:R.map(y=>e.jsxs("button",{"aria-current":n===y.key?"true":void 0,className:`scheduled-calendar-event${y.enabled?"":" paused"}`,onClick:()=>t(y.key),title:y.title,type:"button",children:[e.jsx("span",{children:Ee(y.nextRunAt)}),e.jsx("strong",{children:y.title})]},y.key))})]},f)})]}),a.length?e.jsxs("div",{className:"scheduled-calendar-unscheduled",children:[e.jsx("span",{children:"No upcoming run"}),e.jsx("div",{children:a.map(r=>e.jsx("button",{onClick:()=>t(r.key),type:"button",children:r.title},r.key))})]}):null]})}function $e(s){const t=new Date(s.getFullYear(),s.getMonth(),1),n=new Date(t);return n.setDate(t.getDate()-t.getDay()),Array.from({length:42},(l,d)=>{const j=new Date(n);return j.setDate(n.getDate()+d),j})}function Me(s){const t=new Map;for(const n of s){const l=ae(n.nextRunAt);if(!l)continue;const d=K(l);t.set(d,[...t.get(d)??[],n])}for(const n of t.values())n.sort((l,d)=>l.nextRunAt.localeCompare(d.nextRunAt));return t}function ae(s){if(!s)return null;const t=new Date(s);return Number.isNaN(t.getTime())?null:t}function K(s){return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function q(s){return new Date(s.getFullYear(),s.getMonth(),1)}function V(s,t){return new Date(s.getFullYear(),s.getMonth()+t,1)}function Ee(s){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(new Date(s))}function Te({cadence:s,onSelect:t,schedule:n,selected:l}){return e.jsxs("button",{"aria-current":l?"true":void 0,className:"scheduled-list-row",onClick:t,type:"button",children:[e.jsx("span",{className:`scheduled-status-dot ${n.enabled?"active":"paused"}`}),e.jsxs("span",{className:"scheduled-list-copy",children:[e.jsx("span",{className:"scheduled-list-title",children:e.jsx("strong",{children:n.scheduleName})}),e.jsx("span",{children:n.localProjectName}),e.jsxs("small",{children:[s,n.nextRunAt?` · Next ${M(n.nextRunAt,n.timezone)}`:" · No next run"]})]})]})}function Le({cadence:s,definition:t,onSelect:n,schedule:l,selected:d}){return e.jsxs("button",{"aria-current":d?"true":void 0,className:"scheduled-list-row",onClick:n,type:"button",children:[e.jsx("span",{className:`scheduled-status-dot ${l.enabled?"active":"paused"}`}),e.jsxs("span",{className:"scheduled-list-copy",children:[e.jsxs("span",{className:"scheduled-list-title",children:[e.jsx("strong",{children:t.name}),e.jsx("small",{className:"scheduled-environment-badge hosted",children:"Hosted"})]}),e.jsx("span",{children:t.prompt}),e.jsxs("small",{children:[s,l.nextRunAt?` · Next ${M(l.nextRunAt,l.timeZone)}`:" · No next run"]})]})]})}const ze=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function ts({connection:s,detailOpen:t,detailExpanded:n,onDetailOpenChange:l,onDetailResizeStart:d,onToggleDetailExpanded:j}){const u=Ne(s),o=je(s),[a,r]=i.useState("all"),[f,R]=i.useState(Se),[v,N]=i.useState(!1),[y,D]=i.useState(null),A=i.useMemo(()=>Pe(u.definitions),[u.definitions]),S=i.useMemo(()=>Fe(A,a),[a,A]),E=i.useMemo(()=>Ze(o.schedules,a),[a,o.schedules]),x=A.find(h=>I(h.schedule.id)===y)??null,g=o.schedules.find(h=>W(h.id)===y)??null,c=x?u.runs.filter(h=>h.scheduleId===x.schedule.id):[],p=i.useMemo(()=>Ue(E,S),[E,S]),b=i.useMemo(()=>p.map(Oe),[p]);_(u.error,{prefix:"Scheduled Work"}),_(o.error,{prefix:"Local schedules"}),i.useEffect(()=>{y&&!x&&!g&&D(null)},[x,g,y]),i.useEffect(()=>{!t&&y&&D(null)},[t,y]),i.useEffect(()=>()=>l(!1),[l]);function k(h){D(h),l(!0)}function w(){D(null),l(!1)}function P(h){R(h),ke(h)}async function z(){N(!0);try{await Promise.all([u.refresh(),o.refresh()])}finally{N(!1)}}return e.jsxs("section",{"aria-label":"Scheduled work",className:`scheduled-work-view${x||g?" detail-open":""}${n?" detail-expanded":""}`,children:[e.jsx("div",{className:"scheduled-work-scroll",children:e.jsxs("div",{className:"scheduled-work-content",children:[e.jsxs("header",{className:"scheduled-work-header",children:[e.jsxs("div",{"aria-label":"Scheduled view",className:"scheduled-view-tabs",role:"tablist",children:[e.jsx("button",{"aria-selected":f==="calendar",className:f==="calendar"?"active":void 0,onClick:()=>P("calendar"),role:"tab",type:"button",children:"Calendar"}),e.jsx("button",{"aria-selected":f==="list",className:f==="list"?"active":void 0,onClick:()=>P("list"),role:"tab",type:"button",children:"List"})]}),e.jsxs("div",{className:"scheduled-work-header-actions",children:[e.jsx("button",{"aria-label":"Refresh schedules",className:"scheduled-icon-button",disabled:!s||u.loading||o.loading,onClick:()=>{z()},title:"Refresh schedules",type:"button",children:e.jsx(ve,{className:v?"scheduled-spin":void 0,size:16})}),e.jsxs("label",{className:"scheduled-filter",children:[e.jsx(fe,{"aria-hidden":"true",size:16}),e.jsxs("select",{"aria-label":"Schedule filter",onChange:h=>r(h.target.value),value:a,children:[e.jsx("option",{value:"active",children:"Active"}),e.jsx("option",{value:"paused",children:"Paused"}),e.jsx("option",{value:"all",children:"All"})]})]})]})]}),e.jsx("section",{"aria-busy":u.loading||o.loading,className:"scheduled-list",children:s?(u.loading||o.loading)&&A.length===0&&o.schedules.length===0?e.jsx(le,{label:"Loading schedules"}):u.error&&o.error&&A.length===0&&o.schedules.length===0?e.jsx(O,{children:"Schedules are unavailable. Refresh to try again."}):p.length===0?e.jsx(O,{children:"Create a scheduled task here or ask for one in Work."}):f==="calendar"?e.jsx(Ce,{items:b,onSelect:k,selectedKey:y}):e.jsx("div",{className:"scheduled-list-rows",children:p.map(h=>h.kind==="local"?e.jsx(Te,{cadence:re(h.schedule),onSelect:()=>k(W(h.schedule.id)),schedule:h.schedule,selected:y===W(h.schedule.id)},W(h.schedule.id)):e.jsx(Le,{cadence:_e(h.row.schedule),definition:h.row.definition,onSelect:()=>k(I(h.row.schedule.id)),schedule:h.row.schedule,selected:y===I(h.row.schedule.id)},I(h.row.schedule.id)))}):e.jsx(O,{children:"Connect to OpenPond to view scheduled Work."})})]})}),x?e.jsx(Ie,{onClose:w,onDelete:async()=>{await u.remove(x.schedule.id),w()},onRun:()=>u.run(x.schedule.id),onSave:h=>u.update(x.schedule.id,h),onToggle:()=>u.update(x.schedule.id,{enabled:!x.schedule.enabled}),pending:u.pendingScheduleIds.has(x.schedule.id),row:x,runs:c,detailExpanded:n,onDetailResizeStart:d,onToggleDetailExpanded:j,webBaseUrl:u.webBaseUrl},`${x.schedule.id}:${x.definition.version}:${x.schedule.configurationVersion}`):g?e.jsx(We,{connection:s,onClose:w,onRun:()=>o.run(g),onToggle:()=>o.toggle(g),pending:o.pendingScheduleIds.has(g.id),schedule:g,detailExpanded:n,onDetailResizeStart:d,onToggleDetailExpanded:j},g.id):null]})}function We({connection:s,detailExpanded:t,onClose:n,onDetailResizeStart:l,onRun:d,onToggleDetailExpanded:j,onToggle:u,pending:o,schedule:a}){const r=qe(s,a.id);return _(r.error,{prefix:"Local schedule runs"}),e.jsxs(ne,{detailExpanded:t,label:`${a.scheduleName} details`,onClose:n,onDetailResizeStart:l,onToggleDetailExpanded:j,children:[e.jsx("div",{className:"scheduled-detail-header",children:e.jsxs("div",{children:[e.jsxs("div",{className:"scheduled-detail-title-row",children:[e.jsx("h2",{children:"Schedule details"}),e.jsx("span",{children:a.enabled?"Active":"Paused"})]}),e.jsx("p",{children:a.scheduleName})]})}),e.jsxs(T,{title:"Task",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(C,{label:"Environment",value:"Local"}),e.jsx(C,{label:"Project",value:a.localProjectName}),e.jsx(C,{label:"Agent",value:a.agentName}),e.jsx(C,{label:"Action",value:a.targetAction})]}),e.jsx("pre",{className:"scheduled-prompt",children:He(a)})]}),e.jsxs(T,{title:"Schedule",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(C,{label:"Cadence",value:re(a)}),e.jsx(C,{label:"Expression",value:a.scheduleExpression}),e.jsx(C,{label:"Timezone",value:a.timezone??"Local time"}),e.jsx(C,{label:"Next run",value:M(a.nextRunAt,a.timezone)}),e.jsx(C,{label:"Last run",value:M(a.lastRunAt,a.timezone)})]}),a.lastError?e.jsx("p",{className:"scheduled-detail-error",children:a.lastError}):null]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[e.jsxs("button",{disabled:o,onClick:()=>{d()},type:"button",children:[e.jsx(X,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:o,onClick:()=>{u()},type:"button",children:[a.enabled?e.jsx(J,{size:15}):e.jsx(Q,{size:15}),e.jsx("span",{children:a.enabled?"Pause":"Resume"})]})]}),e.jsx(T,{title:"Runs",children:r.loading&&r.runs.length===0?e.jsx(le,{label:"Loading runs"}):r.runs.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:r.runs.map(f=>e.jsx(Re,{run:f},f.id))})})]})}function Ie({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:d,onSave:j,onToggleDetailExpanded:u,onToggle:o,pending:a,row:r,runs:f,webBaseUrl:R}){const v=Ke(r.schedule),[N,y]=i.useState(r.definition.name),[D,A]=i.useState(r.definition.prompt),[S,E]=i.useState(v.kind),[x,g]=i.useState(v.timeZone),[c,p]=i.useState(v.startDate),[b,k]=i.useState(v.localTime),[w,P]=i.useState(v.weekdays?.[0]??"monday"),[z,h]=i.useState(v.dayOfMonth??1),H=f[0]?.conversationId??null,Z=R?Y(R,H):null,de=N!==r.definition.name||D!==r.definition.prompt||S!==v.kind||x!==v.timeZone||c!==v.startDate||b!==v.localTime||w!==(v.weekdays?.[0]??"monday")||z!==(v.dayOfMonth??1);async function ce(m){m.preventDefault(),await j({name:N,prompt:D,recurrence:{version:1,kind:S,timeZone:x,startDate:c,localTime:b,end:{kind:"never"},...S==="weekly"?{weekdays:[w]}:{},...S==="monthly"?{dayOfMonth:z}:{}}})}return e.jsx(ne,{detailExpanded:s,label:`${r.definition.name} details`,onClose:t,onDetailResizeStart:l,onToggleDetailExpanded:u,children:e.jsxs("form",{onSubmit:ce,children:[e.jsxs("div",{className:"scheduled-detail-header",children:[e.jsx("div",{children:e.jsxs("div",{className:"scheduled-detail-title-row",children:[e.jsx("h2",{children:"Schedule details"}),e.jsx("span",{children:r.schedule.enabled?"Active":"Paused"})]})}),e.jsx("div",{className:"scheduled-detail-header-controls",children:e.jsx("button",{"aria-label":"Delete schedule",className:"scheduled-icon-button",disabled:a,onClick:()=>{n()},title:"Delete schedule",type:"button",children:e.jsx(be,{size:16})})})]}),e.jsxs(T,{title:"Task",children:[e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{maxLength:180,onChange:m=>y(m.target.value),required:!0,value:N})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Prompt"}),e.jsx("textarea",{onChange:m=>A(m.target.value),required:!0,value:D})]})]}),e.jsxs(T,{title:"Schedule",children:[e.jsxs("div",{className:"scheduled-field-grid",children:[e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Repeat"}),e.jsxs("select",{onChange:m=>E(m.target.value),value:S,children:[e.jsx("option",{value:"once",children:"Once"}),e.jsx("option",{value:"daily",children:"Daily"}),e.jsx("option",{value:"weekdays",children:"Weekdays"}),e.jsx("option",{value:"weekly",children:"Weekly"}),e.jsx("option",{value:"monthly",children:"Monthly"})]})]}),S==="weekly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day"}),e.jsx("select",{onChange:m=>P(m.target.value),value:w,children:ze.map(m=>e.jsx("option",{value:m,children:F(m)},m))})]}):S==="monthly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day of month"}),e.jsx("input",{max:31,min:1,onChange:m=>h(Number(m.target.value)),type:"number",value:z})]}):null,e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Start date"}),e.jsx("input",{onChange:m=>p(m.target.value),required:!0,type:"date",value:c})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Time"}),e.jsx("input",{onChange:m=>k(m.target.value),required:!0,type:"time",value:b})]}),e.jsxs("label",{className:"scheduled-field scheduled-field-wide",children:[e.jsx("span",{children:"Timezone"}),e.jsx("input",{onChange:m=>g(m.target.value),required:!0,value:x})]})]}),e.jsxs("p",{className:"scheduled-next-run",children:["Next run: ",M(r.schedule.nextRunAt,v.timeZone)]})]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[de?e.jsxs("button",{disabled:a,type:"submit",children:[e.jsx(ge,{size:15}),e.jsx("span",{children:"Save"})]}):null,e.jsxs("button",{disabled:a,onClick:()=>{d()},type:"button",children:[e.jsx(X,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:a,onClick:()=>{o()},type:"button",children:[r.schedule.enabled?e.jsx(J,{size:15}):e.jsx(Q,{size:15}),e.jsx("span",{children:r.schedule.enabled?"Pause":"Resume"})]})]}),e.jsxs("button",{className:"scheduled-open-chat",disabled:a||!Z,onClick:()=>{Z&&B(Z,H)},type:"button",children:[e.jsx("span",{children:"Open hosted chat"}),e.jsx(G,{size:14})]}),e.jsx(T,{title:"Runs",children:f.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:f.map(m=>e.jsx(De,{onOpen:()=>{R&&B(Y(R,m.conversationId),m.conversationId)},run:m},m.id))})})]})})}function Pe(s){return s.flatMap(t=>t.schedules.map(n=>({definition:t,schedule:n})))}function Fe(s,t){return s.filter(n=>t==="active"?n.schedule.enabled:t==="paused"?!n.schedule.enabled:!0).sort((n,l)=>L(n.schedule.nextRunAt)-L(l.schedule.nextRunAt)||n.definition.name.localeCompare(l.definition.name))}function Ze(s,t){return s.filter(n=>t==="active"?n.enabled:t==="paused"?!n.enabled:!0).sort((n,l)=>L(n.nextRunAt)-L(l.nextRunAt)||n.scheduleName.localeCompare(l.scheduleName))}function Ue(s,t){return[...s.map(n=>({kind:"local",schedule:n})),...t.map(n=>({kind:"hosted",row:n}))].sort((n,l)=>{const d=L(n.kind==="local"?n.schedule.nextRunAt:n.row.schedule.nextRunAt),j=L(l.kind==="local"?l.schedule.nextRunAt:l.row.schedule.nextRunAt);if(d!==j)return d-j;const u=n.kind==="local"?n.schedule.scheduleName:n.row.definition.name,o=l.kind==="local"?l.schedule.scheduleName:l.row.definition.name;return u.localeCompare(o)})}function Oe(s){return s.kind==="local"?{enabled:s.schedule.enabled,key:W(s.schedule.id),nextRunAt:s.schedule.nextRunAt,title:s.schedule.scheduleName}:{enabled:s.row.schedule.enabled,key:I(s.row.schedule.id),nextRunAt:s.row.schedule.nextRunAt,title:s.row.definition.name}}function _e(s){const t=s.recurrence;if(!t)return s.expression??"Manual";const n=ie(t.localTime);return t.kind==="once"?`Once on ${t.startDate} at ${n} · ${t.timeZone}`:t.kind==="weekdays"?`Weekdays at ${n} · ${t.timeZone}`:t.kind==="weekly"?`${t.weekdays?.map(F).join(", ")??"Weekly"} at ${n} · ${t.timeZone}`:t.kind==="monthly"?`Monthly on day ${t.dayOfMonth??1} at ${n} · ${t.timeZone}`:`Daily at ${n} · ${t.timeZone}`}function re(s){const t=s.timezone?` · ${s.timezone}`:"";if(s.scheduleType==="rate")return`Every ${s.scheduleExpression}${t}`;const n=s.scheduleExpression.trim().split(/\s+/);if(n.length===5&&/^\d+$/.test(n[0])&&/^\d+$/.test(n[1])){const l=ie(`${n[1].padStart(2,"0")}:${n[0].padStart(2,"0")}`);if(n[2]==="*"&&n[3]==="*"&&n[4]==="*")return`Daily at ${l}${t}`;if(n[2]==="*"&&n[3]==="*"&&n[4]==="MON-FRI")return`Weekdays at ${l}${t}`}return`Cron ${s.scheduleExpression}${t}`}function Ke(s){return s.recurrence??{version:1,kind:"daily",timeZone:s.timeZone||Ye(),startDate:Ve(),localTime:"08:00",end:{kind:"never"}}}function He(s){const t=s.input.prompt;return typeof t=="string"&&t.trim()?t.trim():Object.keys(s.input).length>0?JSON.stringify(s.input,null,2):"No task input configured."}function qe(s,t){const[n,l]=i.useState([]),[d,j]=i.useState(!1),[u,o]=i.useState(null);return i.useEffect(()=>{if(!s){l([]),j(!1),o(null);return}let a=!1;return j(!0),$.localAgentScheduleRuns(s,t,{limit:20}).then(r=>{a||(l(r.runs),o(null))}).catch(r=>{a||o(Be(r))}).finally(()=>{a||j(!1)}),()=>{a=!0}},[s,t]),{error:u,loading:d,runs:n}}function W(s){return`local:${s}`}function I(s){return`hosted:${s}`}function Y(s,t){const n=new URL(s);return n.pathname=t?`/sandboxes/work/${encodeURIComponent(t)}`:"/sandboxes/work",n.search="",n.hash="",n.toString()}async function B(s,t){const n=window.openpond?.browser;n?.openExternal&&(await n.openExternal({conversationId:t??"hosted-scheduled-work",url:s})).ok||window.open(s,"_blank","noopener,noreferrer")}function ie(s){const[t="0",n="00"]=s.split(":");return new Date(2020,0,1,Number(t),Number(n)).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function L(s){if(!s)return Number.MAX_SAFE_INTEGER;const t=new Date(s).getTime();return Number.isFinite(t)?t:Number.MAX_SAFE_INTEGER}function Ve(){return new Date().toISOString().slice(0,10)}function Ye(){return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}function Be(s){return s instanceof Error?s.message:String(s)}export{ts as ScheduledWorkPage,Ue as combineScheduleRows,Ze as filterAndSortLocalSchedules,Fe as filterAndSortSchedules,M as formatScheduledRunAt,Y as hostedConversationUrl,re as localScheduleCadence,_e as scheduleCadence,Pe as scheduledRows};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.settings-shell{position:relative;display:grid;grid-template-columns:300px minmax(0,1fr);height:100%;min-height:0;background:var(--bg)}.settings-shell.harness-diff-open{grid-template-columns:300px minmax(0,1fr) minmax(380px,max(380px,min(var(--diff-panel-width, 480px),48vw)))}.settings-shell>.workspace-diff-panel{z-index:3;grid-column:3;grid-row:1}.settings-shell.harness-diff-expanded{grid-template-columns:300px minmax(0,1fr)}.settings-shell.harness-diff-expanded>.settings-content{display:none}.settings-shell.harness-diff-expanded>.workspace-diff-panel{grid-column:2;border-left:0}.settings-window-controls{position:absolute;z-index:4;top:12px;right:12px;display:inline-flex;align-items:center;gap:8px;height:20px;-webkit-app-region:no-drag;app-region:no-drag}.settings-window-controls .topbar-diff-button:disabled{cursor:default;opacity:.4}.settings-drag-region{position:absolute;z-index:2;top:0;right:0;left:300px;height:43px;-webkit-app-region:drag;app-region:drag}.settings-sidebar{min-height:0;border-right:1px solid var(--border);background:#101010;padding:12px 7px 0}.settings-shell.platform-macos .settings-sidebar{padding-top:43px}.settings-back{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;width:100%;min-height:32px;border:0;border-radius:12px;background:transparent;color:#8e8e8e;padding:0 10px;text-align:left;font-size:13px}.settings-back span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-back:hover{color:var(--text);background:#ffffff0f}.settings-nav{display:grid;gap:3px;margin-top:10px}.settings-nav-group{display:grid;gap:3px}.settings-nav-group+.settings-nav-group{margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.06)}.settings-nav-heading{padding:3px 10px 5px;color:#8a8a8a;font-size:11px;font-weight:600}.settings-nav-item{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;min-height:29px;border:0;border-radius:10px;background:transparent;color:#f5f5f5;padding:0 10px;text-align:left;font-size:13px}.settings-nav-item.active{background:#2a2a2a}.settings-content{min-width:0;min-height:0;overflow:auto;padding:64px max(48px,12vw);scrollbar-width:none}.settings-content-wide{padding-inline:clamp(24px,5vw,72px)}.settings-content::-webkit-scrollbar{display:none}.account-settings{display:grid;gap:28px;max-width:760px}.profile-settings{container-name:profile-view;container-type:inline-size;width:min(1120px,100%);max-width:none;min-width:0;margin-inline:auto}.account-settings h1{margin:0 0 24px;color:#f7f7f7;font-size:22px;font-weight:500;letter-spacing:0}.account-settings-title{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:0 0 24px}.account-settings-title h1{margin:0}.account-settings-title-actions{display:flex;align-items:center;gap:6px;margin-left:auto}@media(max-width:980px){.settings-shell,.settings-shell.harness-diff-open,.settings-shell.harness-diff-expanded{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.settings-drag-region{left:0}.settings-sidebar,.settings-shell.platform-macos .settings-sidebar{display:flex;min-width:0;gap:8px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border);padding:44px 14px 10px;scrollbar-width:none}.settings-sidebar::-webkit-scrollbar{display:none}.settings-back{flex:0 0 auto;width:auto}.settings-back span,.settings-nav-heading{display:none}.settings-nav,.settings-nav-group{display:flex;flex:0 0 auto;gap:3px;margin:0}.settings-nav-group+.settings-nav-group{margin:0;padding:0 0 0 8px;border-top:0;border-left:1px solid rgba(255,255,255,.06)}.settings-nav-item{display:inline-flex;flex:0 0 auto;width:auto;padding-inline:10px}.settings-content,.settings-content-wide{grid-column:1;grid-row:2;padding:28px 18px}.settings-shell.harness-diff-expanded>.workspace-diff-panel{grid-column:1;grid-row:2}}.account-summary,.account-list,.provider-settings-form,.diagnostics-log-panel,.settings-footnote{border:1px solid var(--border);border-radius:16px;background:#181818}.account-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 18px}.account-summary-main>div{display:grid;gap:5px}.account-summary span,.account-summary small,.account-list-heading small,.account-details span,.product-row span,.settings-footnote span,.empty-account-list span{color:#9b9b9b;font-size:12px}.account-summary strong{color:#f7f7f7;font-size:15px}.account-summary-main{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:12px;min-width:0}.account-summary .account-summary-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.account-summary-main>div{min-width:0}.account-summary-main strong,.account-summary-main small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-summary-meta{display:flex;align-items:center;gap:8px;min-width:0}.account-summary-meta small{flex:0 1 auto;max-width:min(260px,44vw)}.account-summary-meta .account-summary-copy{max-width:min(520px,52vw);overflow:visible;text-overflow:clip;white-space:normal;line-height:1.35}.account-team-dropdown.compact{flex:0 1 auto;justify-self:auto;min-width:0}.account-team-dropdown.compact .dropdown-trigger{max-width:220px;height:24px;padding:0 6px}.account-team-dropdown .dropdown-menu{min-width:100%}.private-account-email{display:inline-block;filter:blur(4px);transition:filter .12s ease;-webkit-user-select:none;user-select:none}.private-account-email:hover,.private-account-email:focus-visible{filter:none;-webkit-user-select:text;user-select:text}.private-account-email:focus-visible{outline:1px solid rgba(58,163,255,.55);outline-offset:2px}.provider-settings-form{overflow:visible;position:relative;z-index:1}.provider-settings-form>.account-list-heading{border-bottom:0}.provider-state-pill{display:inline-flex;align-items:center;justify-content:center;min-height:24px;max-width:150px;border-radius:999px;padding:0 9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;background:#ffffff14;color:#bdbdbd}.provider-state-pill.muted{background:#ffffff14;color:#bdbdbd}.provider-row-status.muted{color:#bdbdbd}.provider-state-pill.ready{background:#50c87821;color:#8ddfa8}.provider-state-pill.configured{background:#3aa3ff21;color:#8fc8ff}.provider-state-pill.warning{background:#ff7a2f21;color:#ffad7d}.provider-manager-panel{border:1px solid var(--border);border-radius:16px;background:#181818;overflow:hidden}.provider-manager-scroll{display:grid;max-height:568px;overflow-y:auto;scrollbar-color:#343434 #161616;scrollbar-width:thin}.provider-manager-heading{align-items:center}.provider-manager-title-row{display:inline-flex;align-items:center;gap:12px;min-width:0}.settings-check-row.provider-subscription-filter{display:inline-flex;align-items:center;gap:6px;grid-template-columns:none;max-width:none;padding:0;color:#bdbdbd;font-size:12px;white-space:nowrap;cursor:pointer}.settings-check-row.provider-subscription-filter>span{display:block;min-width:0}.settings-check-row.provider-subscription-filter input[type=checkbox]{width:14px;height:14px;margin:0;border-radius:4px}.settings-check-row.provider-subscription-filter input[type=checkbox]:before{width:7px;height:4px}.provider-manager-empty{border:0;border-radius:0;background:transparent;padding:22px 16px}.provider-manager-scroll::-webkit-scrollbar,.provider-details-dialog::-webkit-scrollbar{width:10px}.provider-manager-scroll::-webkit-scrollbar-track,.provider-details-dialog::-webkit-scrollbar-track{background:#161616}.provider-manager-scroll::-webkit-scrollbar-thumb,.provider-details-dialog::-webkit-scrollbar-thumb{border:2px solid #161616;border-radius:999px;background:#343434}.provider-manager-scroll::-webkit-scrollbar-thumb:hover,.provider-details-dialog::-webkit-scrollbar-thumb:hover{background:#464646}.provider-manager-row{display:grid;grid-template-columns:44px minmax(160px,1fr) minmax(240px,.82fr) auto;align-items:center;gap:14px;min-height:48px;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.06)}.provider-manager-row:last-child{border-bottom:0}.provider-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:28px}.provider-toggle input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.provider-toggle input:disabled{cursor:default}.provider-toggle span{position:relative;width:34px;height:20px;border-radius:999px;background:#ffffff1f;transition:background .12s ease}.provider-toggle span:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#b8b8b8;transition:transform .12s ease,background .12s ease}.provider-toggle input:checked+span{background:#06b6d452}.provider-toggle input:checked+span:after{transform:translate(14px);background:var(--cyan)}.provider-toggle input:focus-visible+span{outline:1px solid rgba(6,182,212,.6);outline-offset:2px}.provider-toggle input:disabled+span{opacity:.48}.provider-row-main{min-width:0}.provider-row-main strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:#f2f2f2}.provider-row-status{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0;color:#bdbdbd;font-size:12px}.provider-row-status span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.provider-row-status.ready{color:var(--cyan)}.provider-row-status.configured{color:#8fc8ff}.provider-row-status.warning{color:#ffad7d}.provider-row-status .settings-spin{flex:0 0 auto}.provider-details-button{width:86px}.provider-dialog-backdrop{z-index:90}.provider-details-dialog{width:min(760px,calc(100vw - 36px));max-height:min(760px,calc(100vh - 52px));overflow:auto;scrollbar-color:#343434 #161616;scrollbar-width:thin}.provider-dialog-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;padding:20px 48px 16px 20px;border-bottom:1px solid rgba(255,255,255,.08)}.provider-dialog-header h2{margin:0;color:#f6f6f6;font-size:18px;font-weight:620}.provider-dialog-header span{color:#9b9b9b;font-size:12px}.provider-dialog-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:0;padding:8px 20px 14px}.provider-dialog-stats div{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:10px;min-height:32px}.provider-dialog-stats .provider-dialog-error{grid-column:1 / -1}.provider-dialog-stats dt{color:#9b9b9b;font-size:12px}.provider-dialog-stats dd{min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f2f2f2;font-size:13px}.provider-dialog-body{display:grid;gap:12px;padding-bottom:6px}.provider-card-form{display:grid;gap:12px;padding:0 20px 16px}.provider-card-form+.provider-card-form{padding-top:2px;border-top:1px solid rgba(255,255,255,.06)}.provider-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.provider-mode-tabs{justify-self:stretch;width:auto;margin:12px 20px 0}.provider-credential-panel,.provider-subscription-panel{display:grid;gap:12px;min-width:0}.credential-form .provider-dialog-note{margin:0}.provider-credential-panel .settings-button-row,.provider-subscription-panel .settings-button-row{padding:0}.provider-dialog-note{display:flex;align-items:center;gap:8px;margin:0 20px 20px;border:1px solid rgba(255,122,47,.22);border-radius:10px;background:#ff7a2f14;padding:10px 12px;color:#ffad7d;font-size:13px}.provider-dialog-note.xai-provider-note,.provider-dialog-note.subscription-provider-note{border-color:#3aa3ff33;background:#3aa3ff14;color:#9bd0ff}.provider-dialog-note code{border-radius:4px;background:#ffffff14;padding:1px 4px;color:#f2f2f2;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px}.codex-provider-actions{padding:0 20px 20px}.provider-validation-message strong{white-space:pre-line}.account-dialog-advanced-fields{display:grid;gap:12px}.provider-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px 16px 12px}.provider-settings-grid.single{grid-template-columns:minmax(0,1fr);max-width:380px}.settings-path-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;max-width:640px;padding:14px 16px 12px}.lsp-language-list{display:grid}.lsp-language-row{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(150px,.7fr) minmax(180px,1.2fr);align-items:end;gap:12px;min-width:0;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.06)}.lsp-language-row:last-child{border-bottom:0}.lsp-language-label{display:grid;gap:4px;min-width:0;padding-bottom:7px}.lsp-language-label strong{color:#f6f6f6;font-size:13px;font-weight:550}.lsp-language-label span{color:#9b9b9b;font-size:12px}.lsp-status-row{display:grid;grid-template-columns:minmax(0,1fr) auto}.lsp-status-pill{display:inline-flex;align-items:center;justify-content:center;min-height:24px;border-radius:999px;padding:0 9px;white-space:nowrap;font-size:12px;background:#242424;color:#bdbdbd}.lsp-status-pill.found{background:#50c87821;color:#8ddfa8}.lsp-status-pill.missing,.lsp-status-pill.error{background:#ff7a2f21;color:#ffad7d}.lsp-status-pill.disabled{background:#ffffff14;color:#a8a8a8}.settings-select-field{position:relative;display:grid;gap:6px;min-width:0}.settings-select-field span{color:#9b9b9b;font-size:12px}.settings-select-field small{min-width:0;color:#8f8f8f;font-size:11px;line-height:1.35}.settings-select-field input,.settings-select-field select{width:100%;min-width:0;height:36px;border:1px solid rgba(255,255,255,.08);border-radius:8px;outline:0;background:#101010;color:var(--text);padding:0 10px;font-size:13px}.settings-select-field select{appearance:none;background:linear-gradient(45deg,transparent 50%,#9b9b9b 50%) calc(100% - 16px) 50% / 5px 5px no-repeat,linear-gradient(135deg,#9b9b9b 50%,transparent 50%) calc(100% - 11px) 50% / 5px 5px no-repeat,#101010;padding-right:32px}.settings-select-field input:focus,.settings-select-field select:focus{border-color:#06b6d480}.settings-check-row{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:10px;max-width:560px;padding:2px 16px 16px;color:var(--text)}.settings-check-row input[type=checkbox]{-webkit-appearance:none;appearance:none;display:grid;place-content:center;width:16px;height:16px;margin:2px 0 0;border:1px solid rgba(255,255,255,.18);border-radius:5px;outline:0;background:#101010;cursor:pointer;transition:border-color .12s ease,background .12s ease,opacity .12s ease}.settings-check-row input[type=checkbox]:before{content:"";width:8px;height:5px;margin-top:-1px;border-bottom:2px solid #061317;border-left:2px solid #061317;transform:rotate(-45deg) scale(0);transition:transform .12s ease}.settings-check-row input[type=checkbox]:checked{border-color:#06b6d4e0;background:var(--cyan)}.settings-check-row input[type=checkbox]:checked:before{transform:rotate(-45deg) scale(1)}.settings-check-row input[type=checkbox]:focus-visible{outline:2px solid rgba(6,182,212,.35);outline-offset:2px}.settings-check-row input[type=checkbox]:disabled{cursor:not-allowed;opacity:.48}.settings-check-row span{display:grid;gap:4px;min-width:0}.settings-check-row strong{font-size:13px;font-weight:500}.settings-check-row small{color:#8d8d8d;font-size:12px;line-height:1.4}.settings-check-row.compact{padding:0}.settings-check-row.inline{max-width:none}.subagents-settings{max-width:980px}.subagent-settings-title-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;margin-bottom:0}.subagent-settings-title-row h1{margin:0}.subagent-settings-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.subagent-settings-form{display:grid;gap:18px;min-width:0}.subagent-settings-section{display:grid;gap:12px;min-width:0;padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.08)}.subagent-settings-card-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-width:0}.subagent-settings-card-header>div{min-width:0}.subagent-settings-card-header>div>span{min-width:0;overflow:hidden;color:#f2f2f2;font-size:14px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.subagent-settings-card-header>div>small{min-width:0;color:#9b9b9b;font-size:12px;line-height:1.35}.subagent-field-grid{display:grid;gap:12px;min-width:0}.subagent-field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.subagent-field-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.subagent-role-list{display:grid;min-width:0}.subagent-role-row{display:grid;gap:12px;min-width:0;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.08)}.subagent-role-row:first-child{padding-top:0}.subagent-role-row.disabled{opacity:.64}.subagent-role-header{grid-template-columns:minmax(0,1fr) auto}.subagent-role-title{display:grid;gap:3px;min-width:0}.subagent-role-title span,.subagent-role-title small{min-width:0;overflow:hidden;text-overflow:ellipsis}.subagent-role-title span{color:#f2f2f2;font-size:14px;font-weight:620;white-space:nowrap}.subagent-role-title small{color:#9b9b9b;font-size:12px;line-height:1.35}.subagent-role-controls{display:grid;grid-template-columns:minmax(220px,1.25fr) repeat(3,minmax(140px,.75fr));align-items:end;gap:12px;min-width:0}.subagent-role-budget-grid{display:grid;grid-template-columns:repeat(3,minmax(140px,1fr));align-items:end;gap:12px;min-width:0}.subagents-settings .provider-toggle{width:44px;height:30px}.subagents-settings .provider-toggle>span{width:40px;height:22px;border:1px solid rgba(255,255,255,.1);background:#ffffff1a}.subagents-settings .provider-toggle>span:after{top:2px;left:2px;width:16px;height:16px;background:#a9a9a9}.subagents-settings .provider-toggle input:checked+span{border-color:#06b6d46b;background:#06b6d442}.subagents-settings .provider-toggle input:checked+span:after{transform:translate(18px);background:var(--cyan)}@media(max-width:820px){.subagent-field-grid.two,.subagent-field-grid.four,.subagent-role-controls,.subagent-role-budget-grid{grid-template-columns:minmax(0,1fr)}}.settings-radio-group{display:grid;gap:10px;padding:0 16px 16px;max-width:640px}.settings-radio-row{display:flex;align-items:flex-start;gap:10px;min-width:0;color:var(--text)}.settings-radio-row input{margin-top:3px}.settings-radio-row span{display:grid;gap:4px;min-width:0}.settings-radio-row strong{font-size:13px;font-weight:500}.settings-radio-row small{color:#8d8d8d;font-size:12px;line-height:1.4}.personalization-editor{padding:0 16px 14px}.settings-select-field textarea{width:100%;min-width:0;min-height:210px;resize:vertical;border:1px solid rgba(255,255,255,.08);border-radius:8px;outline:0;background:#101010;color:var(--text);padding:11px 12px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.settings-select-field textarea:focus{border-color:#3aa3ff73}.settings-button-row{display:flex;flex-wrap:wrap;gap:10px;padding:0 16px 16px}@media(max-width:820px){.provider-status-grid,.provider-card-grid,.provider-deferred-grid{grid-template-columns:minmax(0,1fr)}.provider-state-pill{position:static;justify-self:start;margin:0 16px 10px}.provider-status-card>.account-list-heading{padding-right:16px}}.settings-button-row.compact{padding:0}.settings-heading-actions{display:inline-flex;align-items:center;gap:9px;min-width:0}.settings-heading-actions small{min-width:0}.settings-heading-input{width:min(240px,34vw);min-width:120px;height:32px;border:1px solid rgba(255,255,255,.08);border-radius:8px;outline:0;background:#101010;color:var(--text);padding:0 10px;font-size:13px}.settings-heading-input:focus{border-color:#3aa3ff73}.settings-primary,.settings-secondary,.settings-icon-button,.inline-action{display:inline-flex;align-items:center;justify-content:center;border:0;background:#2a2a2a;color:#f5f5f5}.settings-primary{gap:7px;height:34px;margin:0 16px 16px;border-radius:10px;padding:0 12px;font-size:13px}.settings-secondary{gap:7px;height:34px;border-radius:10px;padding:0 12px;font-size:13px}.settings-secondary.compact{height:28px;border-radius:8px;padding:0 9px;font-size:12px}.settings-icon-button{width:32px;height:32px;border-radius:8px;padding:0}.settings-icon-button.primary,.settings-icon-button.active{background:#353535;color:#fff}.settings-icon-button.ghost{background:transparent;color:#a8a8a8}.settings-button-row .settings-primary,.settings-button-row .settings-icon-button{margin:0}.settings-primary:hover:not(:disabled),.settings-secondary:hover:not(:disabled),.settings-icon-button:hover:not(:disabled),.inline-action:hover:not(:disabled){background:#363636}.settings-icon-button.ghost:hover:not(:disabled){background:#ffffff0f;color:#fff}.settings-primary:disabled,.settings-secondary:disabled,.settings-icon-button:disabled,.inline-action:disabled{opacity:.5}.subagent-save-button{margin:0}.subagent-save-button.dirty:not(:disabled){background:var(--cyan);color:#061317}.subagent-save-button.dirty:hover:not(:disabled){background:#22d3ee}.settings-spin{animation:settings-spin .9s linear infinite}@media(max-width:820px){.provider-manager-row{grid-template-columns:36px minmax(120px,1fr) minmax(120px,.8fr) auto;gap:10px}.provider-details-button{width:74px}.provider-card-grid,.provider-dialog-stats,.subagent-role-controls,.provider-dialog-header{grid-template-columns:minmax(0,1fr)}}@keyframes settings-spin{to{transform:rotate(360deg)}}.account-list{overflow:hidden}.account-list-heading{display:flex;justify-content:space-between;gap:16px;padding:14px 16px;border-bottom:1px solid var(--border);color:#f5f5f5;font-size:13px}.account-list-note{margin:0;padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.06);color:#9b9b9b;font-size:12px}.account-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:66px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.06)}.account-row:last-child{border-bottom:0}.profile-footline{color:#9b9b9b;font-size:11px}.profile-footline.warning{color:#ffad7d}.profile-control-panel{display:grid;gap:12px;padding:0}.profile-control-panel.inline{margin-top:10px;border:1px solid rgba(255,255,255,.07);border-radius:12px;background:#ffffff06;padding:14px 16px}.profile-control-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.profile-control-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-start;gap:8px}.profile-hosted-status{display:inline-flex;align-items:center;min-height:32px;gap:7px;border-left:1px solid var(--border);margin-left:2px;padding-left:12px;color:var(--muted);white-space:nowrap}.profile-hosted-status>span{font-size:11px}.profile-hosted-status>strong{max-width:180px;overflow:hidden;color:var(--text);font-size:12px;font-weight:560;text-overflow:ellipsis}.profile-local-status{min-width:0;max-width:min(520px,48vw);overflow:hidden;color:var(--muted);font-size:11px;line-height:1.4;text-align:right;text-overflow:ellipsis;white-space:nowrap}.profile-local-status.dirty,.profile-local-status.pending_commit{color:#d7ae59}.profile-local-status.error{color:#db7779}.profile-commit-dialog,.profile-path-dialog,.profile-sync-dialog{width:min(460px,calc(100vw - 34px))}.profile-sync-dialog{width:min(520px,calc(100vw - 34px))}.profile-sync-explainer{margin:0;color:#b8b8b8;font-size:12px;line-height:1.5}.profile-dialog-summary{display:grid;gap:4px;min-width:0;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:#ffffff09;padding:10px 12px}.profile-dialog-summary strong,.profile-dialog-summary span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-dialog-summary strong{color:#f6f6f6;font-size:13px;font-weight:620}.profile-dialog-summary span{color:#aaa;font-size:12px}.profile-dialog-diff-list{display:grid;gap:7px;max-height:min(260px,36vh);overflow:auto;scrollbar-color:#484848 transparent}.profile-dialog-diff-row{display:grid;gap:3px;min-width:0;border:1px solid rgba(255,255,255,.08);border-radius:9px;background:#ffffff06;padding:9px 10px}.profile-dialog-diff-row.warning{border-color:#ffc45738;background:#ffc45714}.profile-dialog-diff-row strong,.profile-dialog-diff-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-dialog-diff-row strong{color:#f4f4f4;font-size:12px;font-weight:620}.profile-dialog-diff-row span{color:#aaa;font-size:12px}.profile-dialog-warning{border:1px solid rgba(255,122,47,.28);border-radius:9px;background:#ff7a2f17;color:#ffad7d;padding:9px 10px;font-size:12px}.profile-commit-dialog .git-dialog-footer,.profile-path-dialog .git-dialog-footer,.profile-sync-dialog .git-dialog-footer{flex-wrap:wrap}.account-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:17px;background:#06b6d41f;color:var(--cyan);font-weight:650;overflow:hidden}.account-avatar img{width:100%;height:100%;object-fit:cover}.account-details{display:grid;gap:3px;min-width:0}.account-details strong,.account-details span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-details strong{color:#f6f6f6;font-size:14px;font-weight:550}.account-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.active-pill,.account-state{display:inline-flex;align-items:center;justify-content:center;min-height:24px;border-radius:12px;padding:0 9px;white-space:nowrap;font-size:12px}.active-pill{background:#3aa3ff24;color:#77bdff}.inline-action{gap:5px;min-height:24px;border-radius:12px;padding:0 10px;white-space:nowrap;font-size:12px}.inline-action.danger{background:#eb57571a;color:#ff9b9b}.inline-action.danger:hover:not(:disabled){background:#eb57572e;color:#ffc0c0}.account-remove-action{width:24px;padding:0}.account-state{background:#242424;color:#bdbdbd}.account-state.signed_in{background:#50c87821;color:#8ddfa8}.account-state.signed_out,.account-state.auth_error{background:#ff7a2f21;color:#ffad7d}.account-state.ready{background:#50c87821;color:#8ddfa8}.account-state.warning{background:#ffc45724;color:#ffd38a}.account-state.loading{background:#3aa3ff24;color:#77bdff}.account-state.disabled{background:#ffffff12;color:#858585}.empty-account-list{display:grid;gap:5px;padding:18px 16px}.empty-account-list strong{color:#f5f5f5;font-size:14px}.product-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.06)}.product-row:last-child{border-bottom:0}.product-row div{display:grid;gap:3px;min-width:0}.product-row strong,.product-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-row strong{color:#f6f6f6;font-size:13px;font-weight:550}.profile-agent-list{border:0;border-radius:0;background:transparent}.profile-agent-list-heading{border-bottom:0;padding:0 0 10px}.profile-table-frame{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:9px;background:var(--panel)}.profile-data-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.profile-agent-table{min-width:600px}.profile-agent-column{width:38%}.profile-action-column{width:18%}.profile-check-column{width:16%}.profile-sync-column{width:28%}.profile-data-table th,.profile-data-table td{min-width:0;border-right:1px solid rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.07);padding:12px 14px;text-align:left;vertical-align:middle}.profile-data-table th:last-child,.profile-data-table td:last-child{border-right:0}.profile-data-table tbody tr:last-child td{border-bottom:0}.profile-data-table th{padding-block:10px;background:var(--panel-soft);color:#858585;font-size:11px;font-weight:560}.profile-data-table strong,.profile-data-table span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-data-table strong{color:#f6f6f6;font-size:13px;font-weight:550}.profile-skill-list{border:0;border-radius:0;background:transparent}.profile-skill-heading-actions{display:inline-flex;align-items:center;gap:10px}.profile-skill-table{min-width:820px}.profile-skill-name-column{width:23%}.profile-skill-trigger-column{width:29%}.profile-skill-status-column{width:10%}.profile-skill-source-column{width:22%}.profile-skill-actions-column{width:16%}.profile-skill-description{overflow:hidden;color:#a9a9a9;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.profile-skill-source{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-skill-actions{display:inline-flex;align-items:center;gap:8px;min-width:0}.profile-agent-table .profile-schedule-actions{display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:center;justify-content:flex-end;gap:6px;min-width:0}.profile-schedule-expression{flex:1 1 auto;min-width:0;color:#a9a9a9;font-size:12px;text-align:right}.profile-agent-table .profile-schedule-controls{display:inline-flex;align-items:center;flex:0 0 auto;flex-wrap:nowrap;gap:6px;min-width:max-content;white-space:nowrap}.profile-schedule-button{width:28px;height:28px;flex:0 0 auto}.profile-agent-list-note{padding:8px 16px 12px}.profile-agent-identity{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:12px;min-width:0}.profile-agent-identity>div{display:grid;gap:3px;min-width:0}.profile-agent-action{min-width:0}.profile-agent-action span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#a9a9a9;font-size:12px}.profile-status-text{display:inline-flex;align-items:center;gap:6px;min-width:0;color:#bdbdbd;font-size:12px;white-space:nowrap}.profile-status-text:before{content:"";width:6px;height:6px;flex:0 0 auto;border-radius:50%;background:currentColor;opacity:.85}.profile-status-text.ready{color:#8ddfa8}.profile-status-text.warning{color:#ffd38a}.profile-status-text.loading{color:#77bdff}.profile-status-text.disabled{color:#858585}@container profile-view (max-width: 840px){.profile-control-toolbar{align-items:flex-start;flex-direction:column}.profile-local-status{max-width:100%;text-align:left}}.settings-footnote{display:flex;justify-content:space-between;gap:18px;min-width:0;max-width:100%;padding:12px 16px}.settings-footnote.warning{border-color:#ff7a2f3d}.settings-footnote strong{min-width:0;overflow-wrap:anywhere;white-space:normal;word-break:break-word;color:#d9d9d9;font-size:12px;font-weight:500}.account-error-footnote{align-items:flex-start}.account-error-footnote strong{flex:1 1 420px;max-width:min(620px,75%);color:#ffbd96;line-height:1.45;text-align:right}.diagnostics-log-panel{overflow:hidden}.diagnostics-log-actions{justify-content:flex-end;flex-wrap:wrap}.diagnostics-error-list{display:grid;align-content:start;max-height:min(34vh,340px);overflow:auto;scrollbar-color:#424242 transparent}.diagnostics-error-entry{display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;padding:12px 14px;border-top:1px solid rgba(255,255,255,.06);color:#ffb0a4;content-visibility:auto;contain-intrinsic-size:86px}.diagnostics-error-entry:first-child{border-top:0}.diagnostics-error-entry svg{margin-top:2px;color:#ff8f7d}.diagnostics-error-body{display:grid;gap:6px;min-width:0}.diagnostics-error-title{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;min-width:0}.diagnostics-error-title strong{min-width:0;color:#f4f4f4;font-size:13px;font-weight:650;line-height:1.35;overflow-wrap:anywhere}.diagnostics-error-title time,.diagnostics-error-meta{color:#9b9b9b;font-size:12px}.diagnostics-error-meta{display:flex;flex-wrap:wrap;gap:6px}.diagnostics-error-meta span{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diagnostics-error-detail{min-width:0}.diagnostics-error-detail summary{width:fit-content;cursor:pointer;color:#d8d8d8;font-size:12px}.diagnostics-error-detail pre{max-height:180px;margin:8px 0 0;overflow:auto;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:#0f0f0f;color:#dcdcdc;padding:9px 10px;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.diagnostics-error-empty{display:grid;place-items:center;min-height:120px;color:#8f8f8f;font-size:13px}.diagnostics-log-viewer{display:grid;align-content:start;max-height:min(46vh,420px);min-height:260px;overflow:auto;background:#0f0f0f;scrollbar-color:#424242 transparent}.diagnostics-log-entry{display:grid;grid-template-columns:118px minmax(0,1fr);gap:10px;min-width:max-content;padding:5px 12px;border-bottom:1px solid rgba(255,255,255,.045);content-visibility:auto;contain-intrinsic-size:26px}.diagnostics-log-source{color:#8f8f8f;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;white-space:nowrap}.diagnostics-log-entry code{color:#dcdcdc;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;white-space:pre}.diagnostics-log-empty{display:grid;place-items:center;min-height:260px;color:#8f8f8f;font-size:13px}.diagnostics-log-dir{display:flex;justify-content:space-between;gap:18px;padding:10px 14px;border-top:1px solid rgba(255,255,255,.06)}.diagnostics-log-dir span{color:#9b9b9b;font-size:12px}.diagnostics-log-dir strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d9d9d9;font-size:12px;font-weight:500}.remote-access-summary{align-items:flex-start}.remote-access-summary .account-summary-actions{flex-wrap:wrap}.remote-access-icon,.remote-access-peer-dot{display:grid;place-items:center;width:34px;height:34px;border-radius:17px;background:#ffffff12;color:#9d9d9d}.remote-access-icon.configured{background:#3aa3ff21;color:#77bdff}.remote-access-icon.online{background:#50c87821;color:#8ddfa8}.remote-access-link-heading{align-items:center}.remote-access-link-heading>div{display:grid;gap:3px;min-width:0}.remote-access-link-heading span,.remote-access-link-heading small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remote-access-value-row{align-items:flex-start}.remote-access-value-row div{gap:6px}.remote-access-value-row strong.flash{animation:remote-access-title-flash 1.5s ease-out}.remote-access-value-row code{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dcdcdc;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.remote-access-peer-row{grid-template-columns:38px minmax(0,1fr) auto auto}.remote-access-environment{display:grid}.remote-access-environment-row{display:grid;min-height:62px;border-bottom:1px solid rgba(255,255,255,.06)}.remote-access-environment-row:last-child{border-bottom:0}.remote-access-environment-row.three{grid-template-columns:repeat(3,minmax(0,1fr))}.remote-access-environment-row.two{grid-template-columns:repeat(2,minmax(0,1fr))}.remote-access-environment-cell{display:grid;align-content:center;gap:5px;min-width:0;padding:12px 16px;border-right:1px solid rgba(255,255,255,.06)}.remote-access-environment-cell:last-child{border-right:0}.remote-access-environment-cell strong,.remote-access-environment-cell span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remote-access-environment-cell strong{color:#f6f6f6;font-size:13px;font-weight:550}.remote-access-environment-cell span{color:#9b9b9b;font-size:12px}.remote-access-peer-dot{width:11px;height:11px;justify-self:center;border-radius:999px;background:#555}.remote-access-peer-dot.online{background:#58d68d;box-shadow:0 0 0 4px #58d68d1f}.remote-access-config{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:#181818}.remote-access-config pre{max-height:260px;margin:0;overflow:auto;background:#0f0f0f;color:#dcdcdc;padding:14px 16px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;white-space:pre}@keyframes remote-access-title-flash{0%,to{color:#f6f6f6;text-shadow:none}18%,55%{color:#ffbc8f;text-shadow:0 0 12px rgba(255,156,86,.35)}}@media(max-width:720px){.remote-access-environment-row.three,.remote-access-environment-row.two{grid-template-columns:1fr}.remote-access-environment-cell{min-height:56px;border-right:0;border-bottom:1px solid rgba(255,255,255,.06)}.remote-access-environment-cell:last-child{border-bottom:0}}.compute-settings{gap:16px}.compute-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.compute-title-row h1{margin:0}.dataset-storage-intro{max-width:680px;margin:7px 0 0;color:#999;font-size:13px;line-height:1.5}.dataset-storage-list{min-width:0}.dataset-storage-row small.dataset-storage-error{color:#df8e8e}.compute-summary-main{grid-template-columns:minmax(0,1fr)}.compute-section-heading{padding:4px 2px 0;border:0}.compute-device-default{padding-top:0}.model-storage-picker{display:grid;gap:6px;max-width:640px;padding:14px 16px 16px}.model-storage-label{color:#9b9b9b;font-size:12px;white-space:nowrap}.model-storage-control-row{display:grid;grid-template-columns:minmax(0,1fr) 36px;align-items:center;gap:8px}.model-storage-select{width:100%;min-width:0;height:36px;border:1px solid rgba(255,255,255,.08);border-radius:8px;outline:0;appearance:none;background:linear-gradient(45deg,transparent 50%,#9b9b9b 50%) calc(100% - 16px) 50% / 5px 5px no-repeat,linear-gradient(135deg,#9b9b9b 50%,transparent 50%) calc(100% - 11px) 50% / 5px 5px no-repeat,#101010;color:var(--text);padding:0 32px 0 10px;font-size:13px}.model-storage-select:focus{border-color:#06b6d480}.model-storage-add{width:36px;height:36px}.model-storage-dialog{width:min(520px,calc(100vw - 34px))}.model-storage-dialog-note{border:1px solid rgba(143,200,255,.16);border-radius:9px;background:#8fc8ff12;color:#b4cae0;padding:9px 10px;font-size:12px;line-height:1.45}.compute-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 16px;border-top:1px solid var(--border)}.compute-row:first-of-type{border-top:0}.compute-row>div{display:grid;gap:4px;min-width:0}.compute-row strong{color:#f1f1f1;font-size:13px;font-weight:570}.compute-row small{overflow-wrap:anywhere;color:#9b9b9b;font-size:12px}.compute-row>span{flex:0 0 auto;color:#b7b7b7;font-size:12px}.compute-diagnostics{border:1px solid var(--border);border-radius:12px;color:#b7b7b7;padding:12px 14px;font-size:12px}.compute-diagnostics summary{color:#dedede;cursor:pointer}.compute-diagnostics ul{margin:10px 0 0;padding-left:18px}.compute-heading-actions{display:flex;align-items:center;gap:8px}.compute-download-row{display:grid;gap:10px;padding:13px 16px;border-top:1px solid var(--border)}.compute-download-row>div{display:grid;gap:4px}.compute-download-row strong{color:#f1f1f1;font-size:13px}.compute-download-row small{overflow-wrap:anywhere;color:#9b9b9b;font-size:12px}.compute-download-row progress{width:100%;height:5px;accent-color:var(--cyan)}@media(max-width:720px){.compute-row{align-items:flex-start;flex-direction:column;gap:7px}}.notification-settings-card{overflow:hidden}.notification-mode-list{display:grid}.notification-mode-option{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:11px;min-height:66px;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.06);background:transparent;cursor:pointer}.notification-mode-option:last-child{border-bottom:0}.notification-mode-option:hover{background:#ffffff09}.notification-mode-option.selected{background:#3aa3ff13}.notification-mode-option input{width:15px;height:15px;margin:2px 0 0;accent-color:#3aa3ff}.notification-mode-option>span,.notification-thread-copy{display:grid;min-width:0;gap:4px}.notification-mode-option strong,.notification-thread-copy strong{color:#f4f4f4;font-size:13px;font-weight:560}.notification-mode-option small,.notification-thread-copy small{color:#9b9b9b;font-size:12px;line-height:1.4}.notification-thread-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:66px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.06)}.notification-thread-row:last-of-type{border-bottom:0}.notification-thread-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:#3aa3ff1c;color:#8fc8ff}.notification-thread-icon.muted{background:#ffffff0f;color:#929292}.notification-settings-error{padding:11px 16px;border-top:1px solid rgba(255,98,98,.2);background:#ff626212;color:#ffb0b0;font-size:12px}@media(max-width:760px){.notification-thread-row{grid-template-columns:32px minmax(0,1fr)}.notification-thread-row>.settings-secondary{grid-column:2;justify-self:start}}.harness-history-settings{width:min(1080px,100%);max-width:none;margin-inline:auto}.harness-history-settings .account-settings-title>div{display:grid;gap:7px}.harness-history-settings .account-settings-title p,.harness-section-heading p{margin:0;color:#999;font-size:12px;line-height:1.5}.harness-history-card time,.harness-route-card time,.harness-history-card footer,.harness-route-card small{color:#8f8f8f;font-size:11px}.harness-release-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:62px;padding:11px 16px;border-bottom:1px solid rgba(255,255,255,.06)}.harness-release-row:last-child{border-bottom:0}.harness-release-row>div{display:grid;gap:4px;min-width:0}.harness-release-row strong{color:#f2f2f2;font-size:13px;font-weight:600}.harness-release-row span{color:#929292;font-size:11px}.harness-inline-actions,.harness-review-actions,.harness-history-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.harness-current-pill,.harness-status,.harness-validation-status{display:inline-flex;align-items:center;width:max-content;border:1px solid rgba(255,255,255,.09);border-radius:999px;background:#ffffff0a;color:#bdbdbd;padding:3px 7px;font-size:10px;font-weight:650}.harness-current-pill,.harness-status-advanced,.harness-validation-status.passed{border-color:#70b98b40;background:#70b98b1a;color:#9ed3b1}.harness-status-conflict,.harness-validation-status.failed,.harness-validation-status.blocked{border-color:#da707040;background:#da70701a;color:#e8a0a0}.harness-history-section{display:grid;gap:10px}.harness-section-heading{display:flex;align-items:end;justify-content:space-between;gap:18px}.harness-section-heading>div{display:grid;gap:5px}.harness-section-heading h2{margin:0;color:#f3f3f3;font-size:15px;font-weight:600}.harness-section-heading>span{color:#888;font-size:12px}.harness-section-heading>.harness-section-actions{display:flex;flex:0 0 auto;align-items:center;gap:8px}.harness-section-actions .settings-primary,.harness-section-actions .settings-secondary{height:28px;margin:0;border-radius:8px;padding:0 9px;font-size:12px}.harness-history-card,.harness-route-card,.harness-empty{border:1px solid var(--border);border-radius:14px;background:#181818;padding:15px 16px}.harness-history-card{display:grid;gap:13px}.harness-history-card>header{display:flex;align-items:start;justify-content:space-between;gap:18px}.harness-history-card>header>div{display:grid;gap:7px;min-width:0}.harness-history-card h2{margin:0;color:#f1f1f1;font-size:14px;font-weight:600;line-height:1.4}.harness-history-card>p,.harness-route-card p{margin:0;color:#b5b5b5;font-size:12px;line-height:1.5}.harness-history-kicker{display:flex;align-items:center;gap:8px;color:#999;font-size:11px;text-transform:capitalize}.harness-history-release-flow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#878787;font-size:11px}.harness-history-release-flow code{color:#c8c8c8;font-size:11px}.harness-history-card footer{display:flex;justify-content:space-between;gap:12px;padding-top:2px}.harness-history-card footer code{color:#aaa;font-size:10px}.harness-learning-card{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:#181818;padding-block:4px}.harness-learning-setting{display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:center;gap:20px;min-height:68px;padding:12px 16px;cursor:pointer}.harness-learning-copy{display:grid;gap:4px;min-width:0}.harness-learning-copy strong{color:#ededed;font-size:13px;font-weight:600}.harness-learning-copy small{color:#8d8d8d;font-size:12px;line-height:1.4}.harness-learning-toggle{justify-self:end}.harness-learning-schedule{display:grid;grid-template-columns:minmax(180px,280px);padding:14px 16px}.harness-learning-run-times{display:flex;align-items:flex-start;gap:36px;margin:0;padding:12px 16px}.harness-learning-run-times>div{display:grid;gap:4px;min-width:150px}.harness-learning-run-times dt{color:#8f8f8f;font-size:11px}.harness-learning-run-times dd{margin:0;color:#d2d2d2;font-size:12px;font-weight:550}.harness-review-metrics{display:flex;flex-wrap:wrap;gap:8px 16px;color:#929292;font-size:11px}.harness-review-metrics strong{color:#d4d4d4;font-weight:600}.harness-review-lineage{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;border:1px solid rgba(255,255,255,.06);border-radius:10px}.harness-review-lineage>div{display:grid;gap:4px;padding:10px 11px;border-right:1px solid rgba(255,255,255,.06)}.harness-review-lineage>div:last-child{border-right:0}.harness-review-lineage span{color:#888;font-size:10px}.harness-review-lineage code{color:#bdbdbd;font-size:10px}.harness-review-lineage .linked code{color:#9ed3b1}.harness-qualification-card small{line-height:1.5}.harness-history-details{border-top:1px solid rgba(255,255,255,.06);padding-top:10px}.harness-history-details summary{cursor:pointer;color:#cfcfcf;font-size:12px}.harness-edit-list{display:grid;gap:9px;margin-top:10px}.harness-edit{overflow:hidden;border:1px solid rgba(255,255,255,.07);border-radius:10px;background:#111}.harness-edit>div{display:grid;gap:3px;padding:9px 11px}.harness-edit strong{color:#e7e7e7;font-size:11px;font-weight:600}.harness-edit span{color:#929292;font-size:11px}.harness-edit pre{max-height:340px;overflow:auto;margin:0;border-top:1px solid rgba(255,255,255,.06);padding:11px;color:#c9c9c9;font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;white-space:pre-wrap}.harness-edit>p{margin:0;padding:10px 11px;color:#999;font-size:11px}.harness-validation-list{display:grid;gap:6px}.harness-validation-list>div{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:8px;color:#999;font-size:11px}.harness-validation-list strong{color:#c8c8c8;font-size:11px;font-weight:600;text-transform:capitalize}.harness-route-card{display:grid;gap:8px}.harness-route-card>div{display:flex;align-items:center;gap:9px}.harness-route-card strong{color:#e7e7e7;font-size:12px;text-transform:capitalize}.harness-route-card time{margin-left:auto}.harness-empty{color:#989898;font-size:12px;line-height:1.5}.harness-release-diff-sidebar{z-index:3;grid-template-rows:41px 42px minmax(0,1fr)}.harness-release-diff-sidebar .workspace-diff-topbar{border-bottom:1px solid var(--border)}.harness-release-diff-meta{justify-content:space-between;gap:12px;padding:0 12px;color:#9b9b9b;font-size:11px}.harness-release-diff-meta>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.harness-release-diff-meta code{flex:0 0 auto;color:#c6c6c6;font-size:10px}.harness-release-diff-body{min-width:0;min-height:0;overflow:hidden}.harness-release-diff-body>.workspace-file-preview,.harness-release-diff-body>.workspace-diff-preview{height:100%}.harness-release-diff-files{height:100%;overflow:auto}.harness-release-diff-summary{display:flex;align-items:center;gap:9px;min-height:38px;border-bottom:1px solid rgba(255,255,255,.06);padding:0 14px;color:#a8a8a8;font-size:11px}.harness-release-diff-summary>span:first-child{margin-right:auto}.harness-release-diff-file{display:grid;grid-template-columns:22px minmax(0,1fr) auto auto;align-items:center;gap:9px;width:100%;min-height:38px;border:0;border-bottom:1px solid rgba(255,255,255,.055);background:transparent;color:#d1d1d1;padding:0 14px;text-align:left;font-size:11px}.harness-release-diff-file:hover,.harness-release-diff-file:focus-visible{background:#ffffff0e}.harness-release-diff-file>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.harness-release-diff-file small{font-size:10px}.harness-release-diff-status{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;background:#ffffff0f;color:#aaa;font-size:10px;font-weight:700}.harness-release-diff-status.added{color:#9ed3b1}.harness-release-diff-status.deleted{color:#e8a0a0}.harness-release-diff-status.modified{color:#d8c18c}@media(max-width:640px){.harness-history-card>header,.harness-section-heading{align-items:start;flex-direction:column}.harness-section-actions{width:100%}.harness-validation-list>div{grid-template-columns:auto minmax(0,1fr)}.harness-validation-list>div>span:last-child{grid-column:1 / -1}.harness-review-lineage{grid-template-columns:minmax(0,1fr)}.harness-learning-run-times{flex-direction:column;gap:12px}.harness-review-lineage>div{border-right:0;border-bottom:1px solid rgba(255,255,255,.06)}.harness-review-lineage>div:last-child{border-bottom:0}}@media(max-width:980px){.settings-shell.harness-diff-open>.workspace-diff-panel{position:fixed;inset:0;z-index:10;display:grid;width:100%;border-left:0}}.profile-catalog-list{border:0;border-radius:0;background:transparent}.profile-catalog-row{display:grid;grid-template-columns:minmax(180px,1.35fr) minmax(68px,.4fr) minmax(90px,.5fr) minmax(180px,1fr) auto;width:100%;border:0;border-bottom:1px solid rgba(255,255,255,.06);background:transparent;color:inherit;text-align:left;cursor:pointer}.profile-catalog-row:hover,.profile-catalog-row:focus-visible,.profile-catalog-row.selected{outline:0;background:#ffffff0b}.profile-catalog-row[aria-disabled=true]{cursor:wait;opacity:.6}.profile-catalog-source,.profile-catalog-summary{color:var(--muted);font-size:12px}.profile-remove-button{display:inline-flex;align-items:center;gap:6px}.profile-catalog-actions{display:inline-flex;align-items:center;gap:6px;overflow:visible}.profile-publication-dialog{width:min(720px,calc(100vw - 32px));max-height:min(880px,calc(100vh - 32px));overflow-y:auto}.profile-publication-fieldset{display:grid;gap:6px;margin:0;border:1px solid var(--border);border-radius:9px;padding:10px 12px 12px}.profile-publication-fieldset legend{padding:0 5px;color:var(--muted);font-size:12px;font-weight:600}.profile-publication-provider,.profile-publication-selection{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:9px;padding:6px;border-radius:7px}.profile-publication-selection{grid-template-columns:auto 1fr}.profile-publication-provider:hover,.profile-publication-selection:hover{background:#ffffff0a}.profile-publication-provider span,.profile-publication-selection span{display:grid;gap:2px;min-width:0}.profile-publication-provider small,.profile-publication-selection small,.profile-publication-empty{color:var(--muted);font-size:12px}.profile-publication-target-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.profile-add-source-options{display:flex;flex-wrap:wrap;gap:8px 16px}.profile-add-source-options label{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.profile-publication-preview{display:grid;gap:9px}.profile-publication-warning{border-radius:7px;background:#ffc65817;color:#ffd38a;padding:8px 10px;font-size:12px}.profile-publication-file-list{display:grid;max-height:360px;overflow:auto;border:1px solid var(--border);border-radius:8px}.profile-publication-file-list>div{display:flex;justify-content:space-between;gap:14px;padding:7px 9px;border-bottom:1px solid rgba(255,255,255,.055);font-family:var(--font-mono);font-size:11px}.profile-publication-file-list>div:last-child{border-bottom:0}.profile-publication-file-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-publication-file-list small{flex:0 0 auto;color:var(--muted)}.profile-publication-preview details code{display:block;padding:3px 0;color:var(--muted);font-size:11px}@container profile-view (max-width: 840px){.profile-catalog-row{grid-template-columns:1fr auto}.profile-catalog-source,.profile-catalog-summary{display:none}.profile-catalog-actions{grid-column:1 / -1;flex-wrap:wrap}}.skills-settings{max-width:980px}.skills-settings-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.skills-settings-header h1{margin-bottom:8px}.skills-settings-header p{max-width:680px;margin:0;color:var(--muted);font-size:13px;line-height:1.55}.github-extensions-heading{align-items:center}.github-extensions-heading-actions,.github-extension-row-actions{display:flex;align-items:center;gap:8px}.github-extension-add{display:grid;grid-template-columns:minmax(220px,1fr) minmax(180px,.75fr) minmax(150px,.55fr) auto;align-items:end;gap:12px;padding:16px;border-bottom:1px solid rgba(255,255,255,.06)}.github-extension-add-copy,.github-extension-add label,.github-extension-preview>div{display:grid;gap:5px}.github-extension-add-copy strong,.github-extension-preview strong{font-size:13px}.github-extension-add-copy span,.github-extension-add label>span,.github-extension-preview span{color:var(--muted);font-size:11px;line-height:1.45}.github-extension-add input{width:100%;height:34px;border:1px solid rgba(255,255,255,.1);border-radius:9px;background:#0000002e;color:var(--text);padding:0 10px;outline:none}.github-extension-add input:focus{border-color:#22d3ee73}.github-extension-message{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.06);font-size:12px}.github-extension-message.error{color:#fca5a5;background:#f871710f}.github-extension-preview{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(240px,1fr) auto;align-items:center;gap:16px;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.06);background:#22d3ee09}.github-extension-preview-skills{display:flex!important;flex-direction:row;flex-wrap:wrap;gap:6px!important}.github-extension-preview-skills>span{border-radius:999px;background:#ffffff0f;padding:4px 7px}.github-extension-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:76px;border-bottom:1px solid rgba(255,255,255,.06)}.github-extension-row:last-child{border-bottom:0}.github-extension-open{display:grid;grid-template-columns:34px minmax(220px,1.2fr) minmax(180px,.8fr) auto 16px;align-items:center;gap:12px;min-width:0;min-height:76px;border:0;background:transparent;color:var(--text);padding:12px 0 12px 16px;text-align:left}.github-extension-open:hover,.github-extension-open:focus-visible{background:#ffffff0b}.github-extension-open:focus-visible{outline:1px solid rgba(34,211,238,.46);outline-offset:-1px}.github-extension-open:disabled{cursor:default;opacity:.64}.github-extension-row-actions{padding-right:16px}.github-extension-row-actions .danger:hover:not(:disabled){color:#fca5a5;background:#f8717117}.native-skills-list{border:1px solid rgba(255,255,255,.08);border-radius:14px;background:#ffffff05}.personal-skill-row{cursor:default}.personal-skill-row:hover{background:transparent}.skills-settings-empty{padding:18px 16px;color:var(--muted);font-size:12px}.native-skill-row{display:grid;grid-template-columns:34px minmax(220px,1.2fr) minmax(180px,.8fr) auto 16px;align-items:center;gap:12px;width:100%;min-height:72px;border:0;border-bottom:1px solid rgba(255,255,255,.06);background:transparent;color:var(--text);padding:12px 16px;text-align:left}.native-skill-row:last-child{border-bottom:0}.native-skill-row:hover,.native-skill-row:focus-visible{background:#ffffff0b}.native-skill-row:focus-visible{outline:1px solid rgba(34,211,238,.46);outline-offset:-1px}.native-skill-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#22d3ee17;color:#67e8f9}.native-skill-identity,.native-skill-provider{display:grid;gap:4px;min-width:0}.native-skill-identity strong,.native-skill-provider strong,.native-skill-identity span,.native-skill-provider span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.native-skill-identity strong{font-size:13px;font-weight:620}.native-skill-identity span,.native-skill-provider span{color:var(--muted);font-size:11px}.native-skill-provider strong{color:#d8d8d8;font-size:12px;font-weight:560}.native-skill-provider span{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)}.native-skill-status{border-radius:999px;background:#4ade8017;color:#86efac;padding:5px 8px;font-size:10px;font-weight:650;white-space:nowrap}.native-skill-status.invalid{background:#f8717117;color:#fca5a5}.native-skill-row>svg{color:#737373}@media(max-width:760px){.skills-settings-header{flex-direction:column;gap:12px}.native-skill-row{grid-template-columns:34px minmax(0,1fr) 16px}.github-extension-add{grid-template-columns:1fr;align-items:stretch}.github-extension-preview{grid-template-columns:1fr}.github-extension-row{grid-template-columns:minmax(0,1fr) auto}.github-extension-open{grid-template-columns:34px minmax(0,1fr) 16px}.github-extension-open .native-skill-provider,.github-extension-open .native-skill-status,.native-skill-provider,.native-skill-status{display:none}}
|