openpond 0.2.17 → 0.2.19
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/app-server.d.ts +2 -0
- package/dist/app-server.js +1 -1
- package/dist/chunks/{app-layer-CFIW5CWC.js → app-layer-LMB3B4TY.js} +1 -1
- package/dist/chunks/{app-server-runtime-Q7NJ6PXF.js → app-server-runtime-IILK75PB.js} +1 -1
- package/dist/chunks/{apps-67PSSK6Q.js → apps-2MNOKPO2.js} +1 -1
- package/dist/chunks/{chunk-VL3RGI55.js → chunk-CUB5BQIQ.js} +2 -2
- package/dist/chunks/{chunk-MACBJI6D.js → chunk-E764DRA6.js} +1 -1
- package/dist/chunks/chunk-FRWPAVCD.js +5 -0
- package/dist/chunks/{chunk-G54T4IWQ.js → chunk-GWDPEBFV.js} +1 -1
- package/dist/chunks/{chunk-BE35DIOI.js → chunk-HKYGCUA6.js} +1 -1
- package/dist/chunks/{chunk-SKKAWYCQ.js → chunk-IGRYR3PT.js} +1 -1
- package/dist/chunks/{chunk-CULWDNK3.js → chunk-L32JRSK7.js} +314 -313
- package/dist/chunks/{chunk-PRA6LX2G.js → chunk-M3FDHTJ2.js} +1 -1
- package/dist/chunks/{chunk-N3KS3AJK.js → chunk-P7EHGAOW.js} +1 -1
- package/dist/chunks/{chunk-GHKJKXDF.js → chunk-U2AWYZZC.js} +1 -1
- package/dist/chunks/{cli-BCBRWI2M.js → cli-EQJBPK7F.js} +1 -1
- package/dist/chunks/{configuration-command-D66B4TXT.js → configuration-command-DSNTY5II.js} +1 -1
- package/dist/chunks/{core-commands-D6OHIVUG.js → core-commands-IDPOMDVM.js} +1 -1
- package/dist/chunks/{desktop-test-RBRWSLEM.js → desktop-test-VNGOXPKF.js} +1 -1
- package/dist/chunks/{extension-MP3XCX56.js → extension-A5RB7I6T.js} +1 -1
- package/dist/chunks/{help-XVBIPQHN.js → help-46NAZU6H.js} +1 -1
- package/dist/chunks/{opchat-NYSALH7B.js → opchat-2VPS674O.js} +1 -1
- package/dist/chunks/{organizations-ZCQX3SY3.js → organizations-H4HZDRYM.js} +1 -1
- package/dist/chunks/{profile-PFR6PWNE.js → profile-TATWHJYY.js} +1 -1
- package/dist/chunks/{project-agent-KSMTTZYC.js → project-agent-3YOZKDEE.js} +1 -1
- package/dist/chunks/{sandbox-command-MVBSIKB6.js → sandbox-command-RYX3KKMX.js} +1 -1
- package/dist/chunks/{sandbox-template-2OWCTKBP.js → sandbox-template-XYY5C3FD.js} +1 -1
- package/dist/chunks/{src-7TTHR4DL.js → src-4R2FGHSH.js} +1 -1
- package/dist/chunks/src-OQTW7BBY.js +319 -0
- package/dist/chunks/{teams-bot-IUE3CWSW.js → teams-bot-FUALFQMX.js} +1 -1
- package/dist/chunks/{workspaces-WI56RXUN.js → workspaces-EBBXI77I.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/web/assets/{App-DQfdLgyV.js → App-CmqvOgHr.js} +4 -4
- package/dist/web/assets/{AppDialog-BnldMLvF.js → AppDialog-DdKmw4d6.js} +1 -1
- package/dist/web/assets/{AppTerminalPanel-DR5SeX9y.js → AppTerminalPanel-W2pjVUtg.js} +2 -2
- package/dist/web/assets/{AppsView-Bu_XEgkd.js → AppsView-RKIWikGP.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-BdKPWbN8.js → BrowserSidebar-Dqo6nl7J.js} +1 -1
- package/dist/web/assets/{CartesianChart-CSkLcF_5.js → CartesianChart-DTZeIAQy.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-C9cRq5ob.js → CollaborationTabs-h4UCjUB4.js} +1 -1
- package/dist/web/assets/{CommandMenu-Deqzk3u9.js → CommandMenu-B2SH7g8V.js} +1 -1
- package/dist/web/assets/{CommunityView-B5dKYacH.js → CommunityView-BtI1_qwS.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-5LPlQFN4.js → ComposerCreateImproveStrip-BW8RhDkB.js} +1 -1
- package/dist/web/assets/{GetStartedView-DmuGykfx.js → GetStartedView-Fqk2AYt7.js} +1 -1
- package/dist/web/assets/HostedModelLearningReview-mBYA71Zs.js +1 -0
- package/dist/web/assets/{HostedModelLearningSettings-BsdX-CkH.js → HostedModelLearningSettings-CgS4Z4WT.js} +1 -1
- package/dist/web/assets/{LabModelVersionDetailPage-BUO5cpDh.js → LabModelVersionDetailPage-Dpr2GpAR.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-mTpdM-G8.js → LabSkillSidebar-BDmNaZ8f.js} +1 -1
- package/dist/web/assets/{LabsRoute-BhfxBg5_.js → LabsRoute-CVWKsnzj.js} +4 -4
- package/dist/web/assets/{MainChatThread-BAxA18lN.js → MainChatThread-Bq6f3AUB.js} +2 -2
- package/dist/web/assets/{MainPane-Dv5USGqR.js → MainPane-CGa9bSOr.js} +4 -4
- package/dist/web/assets/{MarkdownText-DWGLUbdE.js → MarkdownText-BORA69YO.js} +1 -1
- package/dist/web/assets/{Messages-CuhCtaya.js → Messages-Bwyst8lC.js} +1 -1
- package/dist/web/assets/{NativeSkillSidebar-B8OMVpPT.js → NativeSkillSidebar-Dt4xs-gi.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-kIKV8_Wd.js → NewExperienceSwitcher-C-T2my1F.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-B-7dHoT6.js → NewProjectDialog-Bd-8y1vE.js} +1 -1
- package/dist/web/assets/{OutputsPage-C4DRT8pF.js → OutputsPage-DYnvMsY-.js} +1 -1
- package/dist/web/assets/{ProjectsPage-CLjW6Kc3.js → ProjectsPage-BPytEvtz.js} +1 -1
- package/dist/web/assets/{RightChatPanelStack-C4-4VLb-.js → RightChatPanelStack-CJR0y6c5.js} +1 -1
- package/dist/web/assets/{RightSidebarHomePanel-CVbfOg2p.js → RightSidebarHomePanel-Cn0x7kgh.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-CWzwbOOZ.js → ScheduledWorkPage-DaHVYiok.js} +1 -1
- package/dist/web/assets/SettingsView-DwIdA2Qy.js +9 -0
- package/dist/web/assets/{TeamChatView-miR9w_53.js → TeamChatView-C1VmxtuK.js} +1 -1
- package/dist/web/assets/{TerminalOverlay-BOmx_hJX.js → TerminalOverlay-CPIWstqb.js} +1 -1
- package/dist/web/assets/{TrainingCreationPanel-DSRejaYV.js → TrainingCreationPanel-CjFkopVx.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-XBH6Uh0_.js → TrainingDraftPanel-BbiN33_a.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-DROtDdak.js → UsageSettingsSection-BxT4ZptX.js} +1 -1
- package/dist/web/assets/{WorkSidebarPanel-CHwObGs6.js → WorkSidebarPanel-nb-GyANT.js} +1 -1
- package/dist/web/assets/{WorkspaceDiffPanel-BoB_1R8w.js → WorkspaceDiffPanel-DFi28DQv.js} +3 -3
- package/dist/web/assets/{WorkspaceEnvironmentMenu-Dvqy2NJP.js → WorkspaceEnvironmentMenu-DW6IImGA.js} +1 -1
- package/dist/web/assets/{WorkspaceGitDialogs-BC45mifk.js → WorkspaceGitDialogs-DvV8_9aF.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-cDO3Elh0.js → WorkspaceMonacoEditor-BYqlTbx1.js} +3 -3
- package/dist/web/assets/{arrow-up-right-Dv3nebbh.js → arrow-up-right-BQGeuv2m.js} +1 -1
- package/dist/web/assets/{chat-file-links-DQYtkwit.js → chat-file-links-BjlG4ZTF.js} +1 -1
- package/dist/web/assets/chevron-up-BbI7fj2g.js +1 -0
- package/dist/web/assets/{clipboard-CnNPmg50.js → clipboard-CImDHdf4.js} +1 -1
- package/dist/web/assets/{cloud-upload-DisZOwXE.js → cloud-upload-DSrjiFxa.js} +1 -1
- package/dist/web/assets/{cssMode-Bd8sFlb5.js → cssMode-CO6QKs7A.js} +1 -1
- package/dist/web/assets/{folder-open-D0PIN0Cj.js → folder-open-DWt_CiJ4.js} +1 -1
- package/dist/web/assets/{folder-plus-DTNZNwa9.js → folder-plus-DZJsMZZS.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-C0QdA7uv.js → git-commit-horizontal-BmhX8D3M.js} +1 -1
- package/dist/web/assets/{htmlMode-Cu-nKV7Z.js → htmlMode-BbhUfh60.js} +1 -1
- package/dist/web/assets/{index-De4k_YMo.js → index-VrrkDcgt.js} +2 -2
- package/dist/web/assets/{info-B-n_omgE.js → info-C0HVDnJn.js} +1 -1
- package/dist/web/assets/{jsonMode-B377iBCv.js → jsonMode-qUE2PjNm.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-BBHfVtV0.js → lspLanguageFeatures-CfX3VOob.js} +1 -1
- package/dist/web/assets/{minimize-2-C6JQGKgk.js → minimize-2-BPu3-DJH.js} +1 -1
- package/dist/web/assets/{monaco.contribution-CCSCAu65.js → monaco.contribution-BtbXAYNA.js} +2 -2
- package/dist/web/assets/{monaco.contribution-BDLeUQLG.js → monaco.contribution-CKQpqdUm.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CIq6sYw4.js → monaco.contribution-DBKGSgm8.js} +2 -2
- package/dist/web/assets/{monaco.contribution-B0l6Oe3a.js → monaco.contribution-adURqSPk.js} +2 -2
- package/dist/web/assets/{play-B5O4Hz_W.js → play-CUyIuBFF.js} +1 -1
- package/dist/web/assets/{python-BQkq0gZA.js → python-q4l4w80D.js} +1 -1
- package/dist/web/assets/{refresh-cw-D2E-pp4H.js → refresh-cw-IMz7arkM.js} +1 -1
- package/dist/web/assets/{save-CPNNuWwp.js → save-Cj-5iVpt.js} +1 -1
- package/dist/web/assets/{square-DUgXVoF0.js → square-zOxRs5It.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-BbQBtO9I.js → toggleHighContrast-Dj-u2UZ6.js} +1 -1
- package/dist/web/assets/{tsMode-CsVhouTE.js → tsMode-B-r-e3os.js} +1 -1
- package/dist/web/assets/{upload-t7xHt3GY.js → upload-BpElaH7O.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-D4lJelHt.js → useLocalAgentSchedules-wyJ9JjmR.js} +1 -1
- package/dist/web/assets/{wifi-off-B_QPKtA-.js → wifi-off-DWRK-TPQ.js} +1 -1
- package/dist/web/assets/{workers-p7TrE4Qa.js → workers-Pk9mKuOt.js} +1 -1
- package/dist/web/assets/{yaml-C8adeAyH.js → yaml-hbr5HzqB.js} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/chunks/chunk-RB7BWSFJ.js +0 -5
- package/dist/chunks/src-ITECV3AD.js +0 -319
- package/dist/web/assets/HostedModelLearningReview-BRPSFNza.js +0 -1
- package/dist/web/assets/SettingsView-BIwO8elm.js +0 -9
- package/dist/web/assets/chevron-up-BUOpWd2a.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as d,j as e}from"./index-De4k_YMo.js";import{v as C,w as je,aX as pe,dr as be,bl as ve,X as ye,aK as re,g as we,t as Ne,aB as U,ds as ge}from"./App-DQfdLgyV.js";import{R as q,u as ke}from"./useLocalAgentSchedules-D4lJelHt.js";import{a as Se,P as B,T as ie}from"./chat-file-links-DQYtkwit.js";import{P as X}from"./play-B5O4Hz_W.js";import{R as Re}from"./refresh-cw-D2E-pp4H.js";import{S as Ce}from"./save-CPNNuWwp.js";import{M as Ae}from"./minimize-2-C6JQGKgk.js";const De=3e4;function $e(s){const[t,n]=d.useState([]),[l,c]=d.useState([]),[f,u]=d.useState(null),[h,a]=d.useState(!1),[r,j]=d.useState(null),[N,w]=d.useState(()=>new Set);async function m(i,p){p&&a(!0);try{const x=await C.hostedSavedWork(i);n(x.definitions),c(x.runs),u(x.webBaseUrl??null),j(null)}catch(x){j(H(x))}finally{p&&a(!1)}}d.useEffect(()=>{if(!s){n([]),c([]),u(null),j(null),a(!1);return}let i=!1;const p=async $=>{if(!i){$&&a(!0);try{const k=await C.hostedSavedWork(s);if(i)return;n(k.definitions),c(k.runs),u(k.webBaseUrl??null),j(null)}catch(k){i||j(H(k))}finally{!i&&$&&a(!1)}}};p(!0);const x=window.setInterval(()=>{p(!1)},De);return()=>{i=!0,window.clearInterval(x)}},[s]);async function y(){s&&await m(s,!0)}async function b(i){s&&(await C.createHostedSavedWork(s,i),await m(s,!1))}async function R(i,p){await D(i,async x=>{await C.updateHostedSavedWork(x,i,p)})}async function g(i){await D(i,async p=>{await C.deleteHostedSavedWork(p,i)})}async function W(i){await D(i,async p=>{await C.runHostedSavedWork(p,i,crypto.randomUUID())})}async function D(i,p){if(!(!s||N.has(i))){M(i,!0);try{await p(s),await m(s,!1)}catch(x){throw j(H(x)),x}finally{M(i,!1)}}}function M(i,p){w(x=>{const $=new Set(x);return p?$.add(i):$.delete(i),$})}return{create:b,definitions:t,error:r,loading:h,pendingScheduleIds:N,refresh:y,remove:g,run:W,runs:l,update:R,webBaseUrl:f}}function H(s){return s instanceof Error?s.message:String(s)}const Ee=3e4;function Te(s){const[t,n]=d.useState([]),[l,c]=d.useState([]),[f,u]=d.useState(!1),[h,a]=d.useState(null),[r,j]=d.useState(()=>new Set),N=d.useCallback(async m=>{if(s){m&&u(!0);try{const y=await C.chatWorkflows(s);n(y.workflows),c(y.runs),a(null)}catch(y){a(y instanceof Error?y.message:String(y))}finally{m&&u(!1)}}},[s]);d.useEffect(()=>{if(!s){n([]),c([]),a(null),u(!1);return}N(!0);const m=window.setInterval(()=>{N(!1)},Ee);return()=>window.clearInterval(m)},[s,N]);async function w(m,y){if(!r.has(m)){j(b=>new Set(b).add(m));try{await y(),await N(!1)}catch(b){throw a(b instanceof Error?b.message:String(b)),b}finally{j(b=>{const R=new Set(b);return R.delete(m),R})}}}return{workflows:t,runs:l,loading:f,error:h,pendingIds:r,refresh:()=>N(!0),update:(m,y)=>w(m,()=>C.updateChatWorkflow(s,m,y)),remove:m=>w(m,()=>C.deleteChatWorkflow(s,m)),run:m=>w(m,()=>C.runChatWorkflow(s,m))}}const de="openpond.scheduled-work.view.v1";function Q(s=ce()){try{return s?.getItem(de)==="list"?"list":"calendar"}catch{return"calendar"}}function Me(s,t=ce()){try{t?.setItem(de,s)}catch{}}function ce(){if(typeof window>"u")return null;try{return je}catch{return null}}function A(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 oe(s){return O(s.replaceAll("_"," "))}function O(s){return s.replace(/^./,t=>t.toUpperCase())}function ue(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 Ie({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:oe(s.status)}),e.jsx("small",{children:A(s.createdAt,null)})]}),e.jsx("span",{className:"scheduled-run-trigger",children:s.trigger==="manual"?"Manual":"Scheduled"})]}),t?e.jsx("pre",{children:t}):null]})}function We({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:oe(t.status)}),e.jsx("small",{children:A(t.createdAt,null)})]}),e.jsxs("span",{className:"scheduled-run-trigger",children:[O(t.triggerKind)," ",e.jsx(re,{size:11})]}),t.deliveryError?e.jsx("p",{children:t.deliveryError}):null]})}function G({children:s,detailExpanded:t,label:n,onClose:l,onDetailResizeStart:c,onToggleDetailExpanded:f}){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:c,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(be,{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:f,title:t?"Dock schedule details":"Expand schedule details",type:"button",children:t?e.jsx(Ae,{size:14}):e.jsx(ve,{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(ye,{size:14})})]})]}),e.jsx("div",{className:"scheduled-detail-body",children:s})]})}function E({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 S({label:s,value:t}){return e.jsxs("div",{children:[e.jsx("dt",{children:s}),e.jsx("dd",{children:t})]})}function V({children:s}){return e.jsx("p",{className:"scheduled-empty",children:s})}function he({label:s}){return e.jsxs("div",{className:"scheduled-loading",role:"status",children:[e.jsx(pe,{className:"scheduled-spin",size:16}),e.jsx("span",{children:s})]})}const Le=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function ze({items:s,onSelect:t,selectedKey:n}){const[l,c]=d.useState(()=>ee(new Date)),f=d.useMemo(()=>Pe(l),[l]),u=d.useMemo(()=>Fe(s),[s]),h=new Intl.DateTimeFormat(void 0,{month:"long",year:"numeric"}).format(l),a=s.filter(r=>!xe(r.nextRunAt));return e.jsxs("div",{className:"scheduled-calendar",children:[e.jsxs("div",{className:"scheduled-calendar-toolbar",children:[e.jsx("strong",{children:h}),e.jsxs("div",{children:[e.jsx("button",{"aria-label":"Previous month",className:"scheduled-icon-button",onClick:()=>c(se(l,-1)),type:"button",children:e.jsx(we,{size:15})}),e.jsx("button",{className:"scheduled-calendar-today",onClick:()=>c(ee(new Date)),type:"button",children:"Today"}),e.jsx("button",{"aria-label":"Next month",className:"scheduled-icon-button",onClick:()=>c(se(l,1)),type:"button",children:e.jsx(Se,{size:15})})]})]}),e.jsxs("div",{className:"scheduled-calendar-grid",role:"grid","aria-label":h,children:[Le.map(r=>e.jsx("div",{className:"scheduled-calendar-weekday",role:"columnheader",children:r},r)),f.map(r=>{const j=Y(r),N=u.get(j)??[],w=r.getMonth()!==l.getMonth(),m=j===Y(new Date);return e.jsxs("div",{className:`scheduled-calendar-day${w?" outside":""}${m?" today":""}`,role:"gridcell",children:[e.jsx("span",{className:"scheduled-calendar-day-number",children:r.getDate()}),e.jsx("div",{className:"scheduled-calendar-events",children:N.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:Ze(y.nextRunAt)}),e.jsx("strong",{children:y.title})]},y.key))})]},j)})]}),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 Pe(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,c)=>{const f=new Date(n);return f.setDate(n.getDate()+c),f})}function Fe(s){const t=new Map;for(const n of s){const l=xe(n.nextRunAt);if(!l)continue;const c=Y(l);t.set(c,[...t.get(c)??[],n])}for(const n of t.values())n.sort((l,c)=>l.nextRunAt.localeCompare(c.nextRunAt));return t}function xe(s){if(!s)return null;const t=new Date(s);return Number.isNaN(t.getTime())?null:t}function Y(s){return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function ee(s){return new Date(s.getFullYear(),s.getMonth(),1)}function se(s,t){return new Date(s.getFullYear(),s.getMonth()+t,1)}function Ze(s){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(new Date(s))}function _e({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 ${A(n.nextRunAt,n.timezone)}`:" · No next run"]})]})]})}function Oe({cadence:s,definition:t,onSelect:n,schedule:l,selected:c}){return e.jsxs("button",{"aria-current":c?"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 ${A(l.nextRunAt,l.timeZone)}`:" · No next run"]})]})]})}function Ue({cadence:s,onSelect:t,selected:n,workflow:l}){return e.jsxs("button",{"aria-current":n?"true":void 0,className:"scheduled-list-row",onClick:t,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:l.name}),e.jsx("small",{className:"scheduled-environment-badge",children:"Chat"})]}),e.jsx("span",{children:l.prompt}),e.jsxs("small",{children:["Runs in ",l.sessionTitle," · ",s,l.nextRunAt?` · Next ${A(l.nextRunAt,l.recurrence.timeZone)}`:" · No next run"]})]})]})}function Ke(s,t){return s.filter(n=>t==="active"?n.enabled:t==="paused"?!n.enabled:!0).sort((n,l)=>{const c=n.nextRunAt?new Date(n.nextRunAt).getTime():Number.POSITIVE_INFINITY,f=l.nextRunAt?new Date(l.nextRunAt).getTime():Number.POSITIVE_INFINITY;return c-f||n.name.localeCompare(l.name)})}function J(s){const t=ue(s.localTime);return s.kind==="once"?`Once on ${s.startDate} at ${t} · ${s.timeZone}`:s.kind==="weekdays"?`Weekdays at ${t} · ${s.timeZone}`:s.kind==="weekly"?`${s.weekdays?.map(O).join(", ")??"Weekly"} at ${t} · ${s.timeZone}`:s.kind==="monthly"?`Monthly on day ${s.dayOfMonth??1} at ${t} · ${s.timeZone}`:`Daily at ${t} · ${s.timeZone}`}function He({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:c,onToggle:f,onToggleDetailExpanded:u,pending:h,runs:a,workflow:r}){return e.jsxs(G,{detailExpanded:s,label:`${r.name} details`,onClose:t,onDetailResizeStart:l,onToggleDetailExpanded:u,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:"Workflow details"}),e.jsx("span",{children:r.enabled?"Active":"Paused"})]}),e.jsx("p",{children:r.name})]})}),e.jsx(E,{title:"Prompt",children:e.jsx("pre",{className:"scheduled-prompt",children:r.prompt})}),e.jsxs(E,{title:"Delivery",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(S,{label:"Runs in",value:r.sessionTitle}),e.jsx(S,{label:"Cadence",value:J(r.recurrence)}),e.jsx(S,{label:"Next run",value:A(r.nextRunAt,r.recurrence.timeZone)}),e.jsx(S,{label:"Last run",value:A(r.lastRunAt,r.recurrence.timeZone)})]}),r.lastError?e.jsx("p",{className:"scheduled-detail-error",children:r.lastError}):null]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[e.jsxs("button",{disabled:h,onClick:()=>{c()},type:"button",children:[e.jsx(q,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:h,onClick:()=>{f()},type:"button",children:[r.enabled?e.jsx(B,{size:15}):e.jsx(X,{size:15}),e.jsx("span",{children:r.enabled?"Pause":"Resume"})]}),e.jsxs("button",{disabled:h,onClick:()=>{n()},type:"button",children:[e.jsx(ie,{size:15}),e.jsx("span",{children:"Delete"})]})]}),e.jsx(E,{title:"Runs",children:a.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:a.map(j=>e.jsxs("div",{className:"scheduled-run-row",children:[e.jsx("span",{children:O(j.status)}),e.jsx("small",{children:A(j.createdAt,r.recurrence.timeZone)}),j.error?e.jsx("p",{children:j.error}):null]},j.id))})})]})}const Ve=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function ms({connection:s,detailOpen:t,detailExpanded:n,onDetailOpenChange:l,onDetailResizeStart:c,onToggleDetailExpanded:f}){const u=$e(s),h=Te(s),a=ke(s),[r,j]=d.useState("all"),[N,w]=d.useState(Q);Ne(()=>w(Q()));const[m,y]=d.useState(!1),[b,R]=d.useState(null),g=d.useMemo(()=>Be(u.definitions),[u.definitions]),W=d.useMemo(()=>Xe(g,r),[r,g]),D=d.useMemo(()=>Ge(a.schedules,r),[r,a.schedules]),M=d.useMemo(()=>Ke(h.workflows,r),[h.workflows,r]),i=g.find(o=>_(o.schedule.id)===b)??null,p=a.schedules.find(o=>F(o.id)===b)??null,x=h.workflows.find(o=>Z(o.id)===b)??null,$=i?u.runs.filter(o=>o.scheduleId===i.schedule.id):[],k=d.useMemo(()=>Je(M,D,W),[M,D,W]),K=d.useMemo(()=>k.map(Qe),[k]);U(u.error,{prefix:"Workflows"}),U(a.error,{prefix:"Local schedules"}),U(h.error,{prefix:"Chat workflows"}),d.useEffect(()=>{b&&!i&&!p&&!x&&R(null)},[x,i,p,b]),d.useEffect(()=>{!t&&b&&R(null)},[t,b]),d.useEffect(()=>()=>l(!1),[l]);function T(o){R(o),l(!0)}function I(){R(null),l(!1)}function z(o){w(o),Me(o)}async function P(){y(!0);try{await Promise.all([u.refresh(),a.refresh(),h.refresh()])}finally{y(!1)}}return e.jsxs("section",{"aria-label":"Workflows",className:`scheduled-work-view${i||p||x?" 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":"Workflow view",className:"scheduled-view-tabs",role:"tablist",children:[e.jsx("button",{"aria-selected":N==="calendar",className:N==="calendar"?"active":void 0,onClick:()=>z("calendar"),role:"tab",type:"button",children:"Calendar"}),e.jsx("button",{"aria-selected":N==="list",className:N==="list"?"active":void 0,onClick:()=>z("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||a.loading||h.loading,onClick:()=>{P()},title:"Refresh schedules",type:"button",children:e.jsx(Re,{className:m?"scheduled-spin":void 0,size:16})}),e.jsxs("label",{className:"scheduled-filter",children:[e.jsx(ge,{"aria-hidden":"true",size:16}),e.jsxs("select",{"aria-label":"Schedule filter",onChange:o=>j(o.target.value),value:r,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||a.loading||h.loading,className:"scheduled-list",children:s?(u.loading||a.loading||h.loading)&&g.length===0&&a.schedules.length===0&&h.workflows.length===0?e.jsx(he,{label:"Loading schedules"}):u.error&&a.error&&g.length===0&&a.schedules.length===0?e.jsx(V,{children:"Schedules are unavailable. Refresh to try again."}):k.length===0?e.jsx(V,{children:"Create a scheduled task here or ask for one in Work."}):N==="calendar"?e.jsx(ze,{items:K,onSelect:T,selectedKey:b}):e.jsx("div",{className:"scheduled-list-rows",children:k.map(o=>o.kind==="chat"?e.jsx(Ue,{cadence:J(o.workflow.recurrence),onSelect:()=>T(Z(o.workflow.id)),selected:b===Z(o.workflow.id),workflow:o.workflow},Z(o.workflow.id)):o.kind==="local"?e.jsx(_e,{cadence:fe(o.schedule),onSelect:()=>T(F(o.schedule.id)),schedule:o.schedule,selected:b===F(o.schedule.id)},F(o.schedule.id)):e.jsx(Oe,{cadence:es(o.row.schedule),definition:o.row.definition,onSelect:()=>T(_(o.row.schedule.id)),schedule:o.row.schedule,selected:b===_(o.row.schedule.id)},_(o.row.schedule.id)))}):e.jsx(V,{children:"Connect to OpenPond to view scheduled Work."})})]})}),i?e.jsx(qe,{onClose:I,onDelete:async()=>{await u.remove(i.schedule.id),I()},onRun:()=>u.run(i.schedule.id),onSave:o=>u.update(i.schedule.id,o),onToggle:()=>u.update(i.schedule.id,{enabled:!i.schedule.enabled}),pending:u.pendingScheduleIds.has(i.schedule.id),row:i,runs:$,detailExpanded:n,onDetailResizeStart:c,onToggleDetailExpanded:f,webBaseUrl:u.webBaseUrl},`${i.schedule.id}:${i.definition.version}:${i.schedule.configurationVersion}`):x?e.jsx(He,{detailExpanded:n,onClose:I,onDelete:async()=>{await h.remove(x.id),I()},onDetailResizeStart:c,onRun:()=>h.run(x.id),onToggle:()=>h.update(x.id,{enabled:!x.enabled}),onToggleDetailExpanded:f,pending:h.pendingIds.has(x.id),runs:h.runs.filter(o=>o.workflowId===x.id),workflow:x},x.id):p?e.jsx(Ye,{connection:s,onClose:I,onRun:()=>a.run(p),onToggle:()=>a.toggle(p),pending:a.pendingScheduleIds.has(p.id),schedule:p,detailExpanded:n,onDetailResizeStart:c,onToggleDetailExpanded:f},p.id):null]})}function Ye({connection:s,detailExpanded:t,onClose:n,onDetailResizeStart:l,onRun:c,onToggleDetailExpanded:f,onToggle:u,pending:h,schedule:a}){const r=ns(s,a.id);return U(r.error,{prefix:"Local schedule runs"}),e.jsxs(G,{detailExpanded:t,label:`${a.scheduleName} details`,onClose:n,onDetailResizeStart:l,onToggleDetailExpanded:f,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(E,{title:"Task",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(S,{label:"Environment",value:"Local"}),e.jsx(S,{label:"Project",value:a.localProjectName}),e.jsx(S,{label:"Agent",value:a.agentName}),e.jsx(S,{label:"Action",value:a.targetAction})]}),e.jsx("pre",{className:"scheduled-prompt",children:ts(a)})]}),e.jsxs(E,{title:"Schedule",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(S,{label:"Cadence",value:fe(a)}),e.jsx(S,{label:"Expression",value:a.scheduleExpression}),e.jsx(S,{label:"Timezone",value:a.timezone??"Local time"}),e.jsx(S,{label:"Next run",value:A(a.nextRunAt,a.timezone)}),e.jsx(S,{label:"Last run",value:A(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:h,onClick:()=>{c()},type:"button",children:[e.jsx(q,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:h,onClick:()=>{u()},type:"button",children:[a.enabled?e.jsx(B,{size:15}):e.jsx(X,{size:15}),e.jsx("span",{children:a.enabled?"Pause":"Resume"})]})]}),e.jsx(E,{title:"Runs",children:r.loading&&r.runs.length===0?e.jsx(he,{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(j=>e.jsx(Ie,{run:j},j.id))})})]})}function qe({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:c,onSave:f,onToggleDetailExpanded:u,onToggle:h,pending:a,row:r,runs:j,webBaseUrl:N}){const w=ss(r.schedule),[m,y]=d.useState(r.definition.name),[b,R]=d.useState(r.definition.prompt),[g,W]=d.useState(w.kind),[D,M]=d.useState(w.timeZone),[i,p]=d.useState(w.startDate),[x,$]=d.useState(w.localTime),[k,K]=d.useState(w.weekdays?.[0]??"monday"),[T,I]=d.useState(w.dayOfMonth??1),z=j[0]?.conversationId??null,P=N?le(N,z):null,o=m!==r.definition.name||b!==r.definition.prompt||g!==w.kind||D!==w.timeZone||i!==w.startDate||x!==w.localTime||k!==(w.weekdays?.[0]??"monday")||T!==(w.dayOfMonth??1);async function me(v){v.preventDefault(),await f({name:m,prompt:b,recurrence:{version:1,kind:g,timeZone:D,startDate:i,localTime:x,end:{kind:"never"},...g==="weekly"?{weekdays:[k]}:{},...g==="monthly"?{dayOfMonth:T}:{}}})}return e.jsx(G,{detailExpanded:s,label:`${r.definition.name} details`,onClose:t,onDetailResizeStart:l,onToggleDetailExpanded:u,children:e.jsxs("form",{onSubmit:me,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(ie,{size:16})})})]}),e.jsxs(E,{title:"Task",children:[e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{maxLength:180,onChange:v=>y(v.target.value),required:!0,value:m})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Prompt"}),e.jsx("textarea",{onChange:v=>R(v.target.value),required:!0,value:b})]})]}),e.jsxs(E,{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:v=>W(v.target.value),value:g,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"})]})]}),g==="weekly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day"}),e.jsx("select",{onChange:v=>K(v.target.value),value:k,children:Ve.map(v=>e.jsx("option",{value:v,children:O(v)},v))})]}):g==="monthly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day of month"}),e.jsx("input",{max:31,min:1,onChange:v=>I(Number(v.target.value)),type:"number",value:T})]}):null,e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Start date"}),e.jsx("input",{onChange:v=>p(v.target.value),required:!0,type:"date",value:i})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Time"}),e.jsx("input",{onChange:v=>$(v.target.value),required:!0,type:"time",value:x})]}),e.jsxs("label",{className:"scheduled-field scheduled-field-wide",children:[e.jsx("span",{children:"Timezone"}),e.jsx("input",{onChange:v=>M(v.target.value),required:!0,value:D})]})]}),e.jsxs("p",{className:"scheduled-next-run",children:["Next run: ",A(r.schedule.nextRunAt,w.timeZone)]})]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[o?e.jsxs("button",{disabled:a,type:"submit",children:[e.jsx(Ce,{size:15}),e.jsx("span",{children:"Save"})]}):null,e.jsxs("button",{disabled:a,onClick:()=>{c()},type:"button",children:[e.jsx(q,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:a,onClick:()=>{h()},type:"button",children:[r.schedule.enabled?e.jsx(B,{size:15}):e.jsx(X,{size:15}),e.jsx("span",{children:r.schedule.enabled?"Pause":"Resume"})]})]}),e.jsxs("button",{className:"scheduled-open-chat",disabled:a||!P,onClick:()=>{P&&ae(P,z)},type:"button",children:[e.jsx("span",{children:"Open hosted chat"}),e.jsx(re,{size:14})]}),e.jsx(E,{title:"Runs",children:j.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:j.map(v=>e.jsx(We,{onOpen:()=>{N&&ae(le(N,v.conversationId),v.conversationId)},run:v},v.id))})})]})})}function Be(s){return s.flatMap(t=>t.schedules.map(n=>({definition:t,schedule:n})))}function Xe(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 Ge(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 Je(s,t,n){return[...s.map(l=>({kind:"chat",workflow:l})),...t.map(l=>({kind:"local",schedule:l})),...n.map(l=>({kind:"hosted",row:l}))].sort((l,c)=>{const f=L(te(l)),u=L(te(c));if(f!==u)return f-u;const h=ne(l),a=ne(c);return h.localeCompare(a)})}function Qe(s){return s.kind==="chat"?{enabled:s.workflow.enabled,key:Z(s.workflow.id),nextRunAt:s.workflow.nextRunAt,title:s.workflow.name}:s.kind==="local"?{enabled:s.schedule.enabled,key:F(s.schedule.id),nextRunAt:s.schedule.nextRunAt,title:s.schedule.scheduleName}:{enabled:s.row.schedule.enabled,key:_(s.row.schedule.id),nextRunAt:s.row.schedule.nextRunAt,title:s.row.definition.name}}function es(s){const t=s.recurrence;return t?J(t):s.expression??"Manual"}function te(s){return s.kind==="chat"?s.workflow.nextRunAt:s.kind==="local"?s.schedule.nextRunAt:s.row.schedule.nextRunAt}function ne(s){return s.kind==="chat"?s.workflow.name:s.kind==="local"?s.schedule.scheduleName:s.row.definition.name}function fe(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=ue(`${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 ss(s){return s.recurrence??{version:1,kind:"daily",timeZone:s.timeZone||as(),startDate:ls(),localTime:"08:00",end:{kind:"never"}}}function ts(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 ns(s,t){const[n,l]=d.useState([]),[c,f]=d.useState(!1),[u,h]=d.useState(null);return d.useEffect(()=>{if(!s){l([]),f(!1),h(null);return}let a=!1;return f(!0),C.localAgentScheduleRuns(s,t,{limit:20}).then(r=>{a||(l(r.runs),h(null))}).catch(r=>{a||h(rs(r))}).finally(()=>{a||f(!1)}),()=>{a=!0}},[s,t]),{error:u,loading:c,runs:n}}function F(s){return`local:${s}`}function Z(s){return`chat:${s}`}function _(s){return`hosted:${s}`}function le(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 ae(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 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 ls(){return new Date().toISOString().slice(0,10)}function as(){return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}function rs(s){return s instanceof Error?s.message:String(s)}export{ms as ScheduledWorkPage,Je as combineScheduleRows,Ge as filterAndSortLocalSchedules,Xe as filterAndSortSchedules,A as formatScheduledRunAt,le as hostedConversationUrl,fe as localScheduleCadence,es as scheduleCadence,Be as scheduledRows};
|
|
1
|
+
import{r as d,j as e}from"./index-VrrkDcgt.js";import{v as C,w as je,aX as pe,dr as be,bl as ve,X as ye,aK as re,g as we,t as Ne,aB as U,ds as ge}from"./App-CmqvOgHr.js";import{R as q,u as ke}from"./useLocalAgentSchedules-wyJ9JjmR.js";import{a as Se,P as B,T as ie}from"./chat-file-links-BjlG4ZTF.js";import{P as X}from"./play-CUyIuBFF.js";import{R as Re}from"./refresh-cw-IMz7arkM.js";import{S as Ce}from"./save-Cj-5iVpt.js";import{M as Ae}from"./minimize-2-BPu3-DJH.js";const De=3e4;function $e(s){const[t,n]=d.useState([]),[l,c]=d.useState([]),[f,u]=d.useState(null),[h,a]=d.useState(!1),[r,j]=d.useState(null),[N,w]=d.useState(()=>new Set);async function m(i,p){p&&a(!0);try{const x=await C.hostedSavedWork(i);n(x.definitions),c(x.runs),u(x.webBaseUrl??null),j(null)}catch(x){j(H(x))}finally{p&&a(!1)}}d.useEffect(()=>{if(!s){n([]),c([]),u(null),j(null),a(!1);return}let i=!1;const p=async $=>{if(!i){$&&a(!0);try{const k=await C.hostedSavedWork(s);if(i)return;n(k.definitions),c(k.runs),u(k.webBaseUrl??null),j(null)}catch(k){i||j(H(k))}finally{!i&&$&&a(!1)}}};p(!0);const x=window.setInterval(()=>{p(!1)},De);return()=>{i=!0,window.clearInterval(x)}},[s]);async function y(){s&&await m(s,!0)}async function b(i){s&&(await C.createHostedSavedWork(s,i),await m(s,!1))}async function R(i,p){await D(i,async x=>{await C.updateHostedSavedWork(x,i,p)})}async function g(i){await D(i,async p=>{await C.deleteHostedSavedWork(p,i)})}async function W(i){await D(i,async p=>{await C.runHostedSavedWork(p,i,crypto.randomUUID())})}async function D(i,p){if(!(!s||N.has(i))){M(i,!0);try{await p(s),await m(s,!1)}catch(x){throw j(H(x)),x}finally{M(i,!1)}}}function M(i,p){w(x=>{const $=new Set(x);return p?$.add(i):$.delete(i),$})}return{create:b,definitions:t,error:r,loading:h,pendingScheduleIds:N,refresh:y,remove:g,run:W,runs:l,update:R,webBaseUrl:f}}function H(s){return s instanceof Error?s.message:String(s)}const Ee=3e4;function Te(s){const[t,n]=d.useState([]),[l,c]=d.useState([]),[f,u]=d.useState(!1),[h,a]=d.useState(null),[r,j]=d.useState(()=>new Set),N=d.useCallback(async m=>{if(s){m&&u(!0);try{const y=await C.chatWorkflows(s);n(y.workflows),c(y.runs),a(null)}catch(y){a(y instanceof Error?y.message:String(y))}finally{m&&u(!1)}}},[s]);d.useEffect(()=>{if(!s){n([]),c([]),a(null),u(!1);return}N(!0);const m=window.setInterval(()=>{N(!1)},Ee);return()=>window.clearInterval(m)},[s,N]);async function w(m,y){if(!r.has(m)){j(b=>new Set(b).add(m));try{await y(),await N(!1)}catch(b){throw a(b instanceof Error?b.message:String(b)),b}finally{j(b=>{const R=new Set(b);return R.delete(m),R})}}}return{workflows:t,runs:l,loading:f,error:h,pendingIds:r,refresh:()=>N(!0),update:(m,y)=>w(m,()=>C.updateChatWorkflow(s,m,y)),remove:m=>w(m,()=>C.deleteChatWorkflow(s,m)),run:m=>w(m,()=>C.runChatWorkflow(s,m))}}const de="openpond.scheduled-work.view.v1";function Q(s=ce()){try{return s?.getItem(de)==="list"?"list":"calendar"}catch{return"calendar"}}function Me(s,t=ce()){try{t?.setItem(de,s)}catch{}}function ce(){if(typeof window>"u")return null;try{return je}catch{return null}}function A(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 oe(s){return O(s.replaceAll("_"," "))}function O(s){return s.replace(/^./,t=>t.toUpperCase())}function ue(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 Ie({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:oe(s.status)}),e.jsx("small",{children:A(s.createdAt,null)})]}),e.jsx("span",{className:"scheduled-run-trigger",children:s.trigger==="manual"?"Manual":"Scheduled"})]}),t?e.jsx("pre",{children:t}):null]})}function We({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:oe(t.status)}),e.jsx("small",{children:A(t.createdAt,null)})]}),e.jsxs("span",{className:"scheduled-run-trigger",children:[O(t.triggerKind)," ",e.jsx(re,{size:11})]}),t.deliveryError?e.jsx("p",{children:t.deliveryError}):null]})}function G({children:s,detailExpanded:t,label:n,onClose:l,onDetailResizeStart:c,onToggleDetailExpanded:f}){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:c,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(be,{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:f,title:t?"Dock schedule details":"Expand schedule details",type:"button",children:t?e.jsx(Ae,{size:14}):e.jsx(ve,{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(ye,{size:14})})]})]}),e.jsx("div",{className:"scheduled-detail-body",children:s})]})}function E({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 S({label:s,value:t}){return e.jsxs("div",{children:[e.jsx("dt",{children:s}),e.jsx("dd",{children:t})]})}function V({children:s}){return e.jsx("p",{className:"scheduled-empty",children:s})}function he({label:s}){return e.jsxs("div",{className:"scheduled-loading",role:"status",children:[e.jsx(pe,{className:"scheduled-spin",size:16}),e.jsx("span",{children:s})]})}const Le=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function ze({items:s,onSelect:t,selectedKey:n}){const[l,c]=d.useState(()=>ee(new Date)),f=d.useMemo(()=>Pe(l),[l]),u=d.useMemo(()=>Fe(s),[s]),h=new Intl.DateTimeFormat(void 0,{month:"long",year:"numeric"}).format(l),a=s.filter(r=>!xe(r.nextRunAt));return e.jsxs("div",{className:"scheduled-calendar",children:[e.jsxs("div",{className:"scheduled-calendar-toolbar",children:[e.jsx("strong",{children:h}),e.jsxs("div",{children:[e.jsx("button",{"aria-label":"Previous month",className:"scheduled-icon-button",onClick:()=>c(se(l,-1)),type:"button",children:e.jsx(we,{size:15})}),e.jsx("button",{className:"scheduled-calendar-today",onClick:()=>c(ee(new Date)),type:"button",children:"Today"}),e.jsx("button",{"aria-label":"Next month",className:"scheduled-icon-button",onClick:()=>c(se(l,1)),type:"button",children:e.jsx(Se,{size:15})})]})]}),e.jsxs("div",{className:"scheduled-calendar-grid",role:"grid","aria-label":h,children:[Le.map(r=>e.jsx("div",{className:"scheduled-calendar-weekday",role:"columnheader",children:r},r)),f.map(r=>{const j=Y(r),N=u.get(j)??[],w=r.getMonth()!==l.getMonth(),m=j===Y(new Date);return e.jsxs("div",{className:`scheduled-calendar-day${w?" outside":""}${m?" today":""}`,role:"gridcell",children:[e.jsx("span",{className:"scheduled-calendar-day-number",children:r.getDate()}),e.jsx("div",{className:"scheduled-calendar-events",children:N.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:Ze(y.nextRunAt)}),e.jsx("strong",{children:y.title})]},y.key))})]},j)})]}),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 Pe(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,c)=>{const f=new Date(n);return f.setDate(n.getDate()+c),f})}function Fe(s){const t=new Map;for(const n of s){const l=xe(n.nextRunAt);if(!l)continue;const c=Y(l);t.set(c,[...t.get(c)??[],n])}for(const n of t.values())n.sort((l,c)=>l.nextRunAt.localeCompare(c.nextRunAt));return t}function xe(s){if(!s)return null;const t=new Date(s);return Number.isNaN(t.getTime())?null:t}function Y(s){return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function ee(s){return new Date(s.getFullYear(),s.getMonth(),1)}function se(s,t){return new Date(s.getFullYear(),s.getMonth()+t,1)}function Ze(s){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(new Date(s))}function _e({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 ${A(n.nextRunAt,n.timezone)}`:" · No next run"]})]})]})}function Oe({cadence:s,definition:t,onSelect:n,schedule:l,selected:c}){return e.jsxs("button",{"aria-current":c?"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 ${A(l.nextRunAt,l.timeZone)}`:" · No next run"]})]})]})}function Ue({cadence:s,onSelect:t,selected:n,workflow:l}){return e.jsxs("button",{"aria-current":n?"true":void 0,className:"scheduled-list-row",onClick:t,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:l.name}),e.jsx("small",{className:"scheduled-environment-badge",children:"Chat"})]}),e.jsx("span",{children:l.prompt}),e.jsxs("small",{children:["Runs in ",l.sessionTitle," · ",s,l.nextRunAt?` · Next ${A(l.nextRunAt,l.recurrence.timeZone)}`:" · No next run"]})]})]})}function Ke(s,t){return s.filter(n=>t==="active"?n.enabled:t==="paused"?!n.enabled:!0).sort((n,l)=>{const c=n.nextRunAt?new Date(n.nextRunAt).getTime():Number.POSITIVE_INFINITY,f=l.nextRunAt?new Date(l.nextRunAt).getTime():Number.POSITIVE_INFINITY;return c-f||n.name.localeCompare(l.name)})}function J(s){const t=ue(s.localTime);return s.kind==="once"?`Once on ${s.startDate} at ${t} · ${s.timeZone}`:s.kind==="weekdays"?`Weekdays at ${t} · ${s.timeZone}`:s.kind==="weekly"?`${s.weekdays?.map(O).join(", ")??"Weekly"} at ${t} · ${s.timeZone}`:s.kind==="monthly"?`Monthly on day ${s.dayOfMonth??1} at ${t} · ${s.timeZone}`:`Daily at ${t} · ${s.timeZone}`}function He({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:c,onToggle:f,onToggleDetailExpanded:u,pending:h,runs:a,workflow:r}){return e.jsxs(G,{detailExpanded:s,label:`${r.name} details`,onClose:t,onDetailResizeStart:l,onToggleDetailExpanded:u,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:"Workflow details"}),e.jsx("span",{children:r.enabled?"Active":"Paused"})]}),e.jsx("p",{children:r.name})]})}),e.jsx(E,{title:"Prompt",children:e.jsx("pre",{className:"scheduled-prompt",children:r.prompt})}),e.jsxs(E,{title:"Delivery",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(S,{label:"Runs in",value:r.sessionTitle}),e.jsx(S,{label:"Cadence",value:J(r.recurrence)}),e.jsx(S,{label:"Next run",value:A(r.nextRunAt,r.recurrence.timeZone)}),e.jsx(S,{label:"Last run",value:A(r.lastRunAt,r.recurrence.timeZone)})]}),r.lastError?e.jsx("p",{className:"scheduled-detail-error",children:r.lastError}):null]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[e.jsxs("button",{disabled:h,onClick:()=>{c()},type:"button",children:[e.jsx(q,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:h,onClick:()=>{f()},type:"button",children:[r.enabled?e.jsx(B,{size:15}):e.jsx(X,{size:15}),e.jsx("span",{children:r.enabled?"Pause":"Resume"})]}),e.jsxs("button",{disabled:h,onClick:()=>{n()},type:"button",children:[e.jsx(ie,{size:15}),e.jsx("span",{children:"Delete"})]})]}),e.jsx(E,{title:"Runs",children:a.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:a.map(j=>e.jsxs("div",{className:"scheduled-run-row",children:[e.jsx("span",{children:O(j.status)}),e.jsx("small",{children:A(j.createdAt,r.recurrence.timeZone)}),j.error?e.jsx("p",{children:j.error}):null]},j.id))})})]})}const Ve=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function ms({connection:s,detailOpen:t,detailExpanded:n,onDetailOpenChange:l,onDetailResizeStart:c,onToggleDetailExpanded:f}){const u=$e(s),h=Te(s),a=ke(s),[r,j]=d.useState("all"),[N,w]=d.useState(Q);Ne(()=>w(Q()));const[m,y]=d.useState(!1),[b,R]=d.useState(null),g=d.useMemo(()=>Be(u.definitions),[u.definitions]),W=d.useMemo(()=>Xe(g,r),[r,g]),D=d.useMemo(()=>Ge(a.schedules,r),[r,a.schedules]),M=d.useMemo(()=>Ke(h.workflows,r),[h.workflows,r]),i=g.find(o=>_(o.schedule.id)===b)??null,p=a.schedules.find(o=>F(o.id)===b)??null,x=h.workflows.find(o=>Z(o.id)===b)??null,$=i?u.runs.filter(o=>o.scheduleId===i.schedule.id):[],k=d.useMemo(()=>Je(M,D,W),[M,D,W]),K=d.useMemo(()=>k.map(Qe),[k]);U(u.error,{prefix:"Workflows"}),U(a.error,{prefix:"Local schedules"}),U(h.error,{prefix:"Chat workflows"}),d.useEffect(()=>{b&&!i&&!p&&!x&&R(null)},[x,i,p,b]),d.useEffect(()=>{!t&&b&&R(null)},[t,b]),d.useEffect(()=>()=>l(!1),[l]);function T(o){R(o),l(!0)}function I(){R(null),l(!1)}function z(o){w(o),Me(o)}async function P(){y(!0);try{await Promise.all([u.refresh(),a.refresh(),h.refresh()])}finally{y(!1)}}return e.jsxs("section",{"aria-label":"Workflows",className:`scheduled-work-view${i||p||x?" 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":"Workflow view",className:"scheduled-view-tabs",role:"tablist",children:[e.jsx("button",{"aria-selected":N==="calendar",className:N==="calendar"?"active":void 0,onClick:()=>z("calendar"),role:"tab",type:"button",children:"Calendar"}),e.jsx("button",{"aria-selected":N==="list",className:N==="list"?"active":void 0,onClick:()=>z("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||a.loading||h.loading,onClick:()=>{P()},title:"Refresh schedules",type:"button",children:e.jsx(Re,{className:m?"scheduled-spin":void 0,size:16})}),e.jsxs("label",{className:"scheduled-filter",children:[e.jsx(ge,{"aria-hidden":"true",size:16}),e.jsxs("select",{"aria-label":"Schedule filter",onChange:o=>j(o.target.value),value:r,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||a.loading||h.loading,className:"scheduled-list",children:s?(u.loading||a.loading||h.loading)&&g.length===0&&a.schedules.length===0&&h.workflows.length===0?e.jsx(he,{label:"Loading schedules"}):u.error&&a.error&&g.length===0&&a.schedules.length===0?e.jsx(V,{children:"Schedules are unavailable. Refresh to try again."}):k.length===0?e.jsx(V,{children:"Create a scheduled task here or ask for one in Work."}):N==="calendar"?e.jsx(ze,{items:K,onSelect:T,selectedKey:b}):e.jsx("div",{className:"scheduled-list-rows",children:k.map(o=>o.kind==="chat"?e.jsx(Ue,{cadence:J(o.workflow.recurrence),onSelect:()=>T(Z(o.workflow.id)),selected:b===Z(o.workflow.id),workflow:o.workflow},Z(o.workflow.id)):o.kind==="local"?e.jsx(_e,{cadence:fe(o.schedule),onSelect:()=>T(F(o.schedule.id)),schedule:o.schedule,selected:b===F(o.schedule.id)},F(o.schedule.id)):e.jsx(Oe,{cadence:es(o.row.schedule),definition:o.row.definition,onSelect:()=>T(_(o.row.schedule.id)),schedule:o.row.schedule,selected:b===_(o.row.schedule.id)},_(o.row.schedule.id)))}):e.jsx(V,{children:"Connect to OpenPond to view scheduled Work."})})]})}),i?e.jsx(qe,{onClose:I,onDelete:async()=>{await u.remove(i.schedule.id),I()},onRun:()=>u.run(i.schedule.id),onSave:o=>u.update(i.schedule.id,o),onToggle:()=>u.update(i.schedule.id,{enabled:!i.schedule.enabled}),pending:u.pendingScheduleIds.has(i.schedule.id),row:i,runs:$,detailExpanded:n,onDetailResizeStart:c,onToggleDetailExpanded:f,webBaseUrl:u.webBaseUrl},`${i.schedule.id}:${i.definition.version}:${i.schedule.configurationVersion}`):x?e.jsx(He,{detailExpanded:n,onClose:I,onDelete:async()=>{await h.remove(x.id),I()},onDetailResizeStart:c,onRun:()=>h.run(x.id),onToggle:()=>h.update(x.id,{enabled:!x.enabled}),onToggleDetailExpanded:f,pending:h.pendingIds.has(x.id),runs:h.runs.filter(o=>o.workflowId===x.id),workflow:x},x.id):p?e.jsx(Ye,{connection:s,onClose:I,onRun:()=>a.run(p),onToggle:()=>a.toggle(p),pending:a.pendingScheduleIds.has(p.id),schedule:p,detailExpanded:n,onDetailResizeStart:c,onToggleDetailExpanded:f},p.id):null]})}function Ye({connection:s,detailExpanded:t,onClose:n,onDetailResizeStart:l,onRun:c,onToggleDetailExpanded:f,onToggle:u,pending:h,schedule:a}){const r=ns(s,a.id);return U(r.error,{prefix:"Local schedule runs"}),e.jsxs(G,{detailExpanded:t,label:`${a.scheduleName} details`,onClose:n,onDetailResizeStart:l,onToggleDetailExpanded:f,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(E,{title:"Task",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(S,{label:"Environment",value:"Local"}),e.jsx(S,{label:"Project",value:a.localProjectName}),e.jsx(S,{label:"Agent",value:a.agentName}),e.jsx(S,{label:"Action",value:a.targetAction})]}),e.jsx("pre",{className:"scheduled-prompt",children:ts(a)})]}),e.jsxs(E,{title:"Schedule",children:[e.jsxs("dl",{className:"scheduled-detail-fields",children:[e.jsx(S,{label:"Cadence",value:fe(a)}),e.jsx(S,{label:"Expression",value:a.scheduleExpression}),e.jsx(S,{label:"Timezone",value:a.timezone??"Local time"}),e.jsx(S,{label:"Next run",value:A(a.nextRunAt,a.timezone)}),e.jsx(S,{label:"Last run",value:A(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:h,onClick:()=>{c()},type:"button",children:[e.jsx(q,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:h,onClick:()=>{u()},type:"button",children:[a.enabled?e.jsx(B,{size:15}):e.jsx(X,{size:15}),e.jsx("span",{children:a.enabled?"Pause":"Resume"})]})]}),e.jsx(E,{title:"Runs",children:r.loading&&r.runs.length===0?e.jsx(he,{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(j=>e.jsx(Ie,{run:j},j.id))})})]})}function qe({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:c,onSave:f,onToggleDetailExpanded:u,onToggle:h,pending:a,row:r,runs:j,webBaseUrl:N}){const w=ss(r.schedule),[m,y]=d.useState(r.definition.name),[b,R]=d.useState(r.definition.prompt),[g,W]=d.useState(w.kind),[D,M]=d.useState(w.timeZone),[i,p]=d.useState(w.startDate),[x,$]=d.useState(w.localTime),[k,K]=d.useState(w.weekdays?.[0]??"monday"),[T,I]=d.useState(w.dayOfMonth??1),z=j[0]?.conversationId??null,P=N?le(N,z):null,o=m!==r.definition.name||b!==r.definition.prompt||g!==w.kind||D!==w.timeZone||i!==w.startDate||x!==w.localTime||k!==(w.weekdays?.[0]??"monday")||T!==(w.dayOfMonth??1);async function me(v){v.preventDefault(),await f({name:m,prompt:b,recurrence:{version:1,kind:g,timeZone:D,startDate:i,localTime:x,end:{kind:"never"},...g==="weekly"?{weekdays:[k]}:{},...g==="monthly"?{dayOfMonth:T}:{}}})}return e.jsx(G,{detailExpanded:s,label:`${r.definition.name} details`,onClose:t,onDetailResizeStart:l,onToggleDetailExpanded:u,children:e.jsxs("form",{onSubmit:me,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(ie,{size:16})})})]}),e.jsxs(E,{title:"Task",children:[e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{maxLength:180,onChange:v=>y(v.target.value),required:!0,value:m})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Prompt"}),e.jsx("textarea",{onChange:v=>R(v.target.value),required:!0,value:b})]})]}),e.jsxs(E,{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:v=>W(v.target.value),value:g,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"})]})]}),g==="weekly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day"}),e.jsx("select",{onChange:v=>K(v.target.value),value:k,children:Ve.map(v=>e.jsx("option",{value:v,children:O(v)},v))})]}):g==="monthly"?e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Day of month"}),e.jsx("input",{max:31,min:1,onChange:v=>I(Number(v.target.value)),type:"number",value:T})]}):null,e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Start date"}),e.jsx("input",{onChange:v=>p(v.target.value),required:!0,type:"date",value:i})]}),e.jsxs("label",{className:"scheduled-field",children:[e.jsx("span",{children:"Time"}),e.jsx("input",{onChange:v=>$(v.target.value),required:!0,type:"time",value:x})]}),e.jsxs("label",{className:"scheduled-field scheduled-field-wide",children:[e.jsx("span",{children:"Timezone"}),e.jsx("input",{onChange:v=>M(v.target.value),required:!0,value:D})]})]}),e.jsxs("p",{className:"scheduled-next-run",children:["Next run: ",A(r.schedule.nextRunAt,w.timeZone)]})]}),e.jsxs("div",{className:"scheduled-detail-actions",children:[o?e.jsxs("button",{disabled:a,type:"submit",children:[e.jsx(Ce,{size:15}),e.jsx("span",{children:"Save"})]}):null,e.jsxs("button",{disabled:a,onClick:()=>{c()},type:"button",children:[e.jsx(q,{size:15}),e.jsx("span",{children:"Run now"})]}),e.jsxs("button",{disabled:a,onClick:()=>{h()},type:"button",children:[r.schedule.enabled?e.jsx(B,{size:15}):e.jsx(X,{size:15}),e.jsx("span",{children:r.schedule.enabled?"Pause":"Resume"})]})]}),e.jsxs("button",{className:"scheduled-open-chat",disabled:a||!P,onClick:()=>{P&&ae(P,z)},type:"button",children:[e.jsx("span",{children:"Open hosted chat"}),e.jsx(re,{size:14})]}),e.jsx(E,{title:"Runs",children:j.length===0?e.jsx("p",{className:"scheduled-no-runs",children:"No runs yet."}):e.jsx("div",{className:"scheduled-run-list",children:j.map(v=>e.jsx(We,{onOpen:()=>{N&&ae(le(N,v.conversationId),v.conversationId)},run:v},v.id))})})]})})}function Be(s){return s.flatMap(t=>t.schedules.map(n=>({definition:t,schedule:n})))}function Xe(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 Ge(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 Je(s,t,n){return[...s.map(l=>({kind:"chat",workflow:l})),...t.map(l=>({kind:"local",schedule:l})),...n.map(l=>({kind:"hosted",row:l}))].sort((l,c)=>{const f=L(te(l)),u=L(te(c));if(f!==u)return f-u;const h=ne(l),a=ne(c);return h.localeCompare(a)})}function Qe(s){return s.kind==="chat"?{enabled:s.workflow.enabled,key:Z(s.workflow.id),nextRunAt:s.workflow.nextRunAt,title:s.workflow.name}:s.kind==="local"?{enabled:s.schedule.enabled,key:F(s.schedule.id),nextRunAt:s.schedule.nextRunAt,title:s.schedule.scheduleName}:{enabled:s.row.schedule.enabled,key:_(s.row.schedule.id),nextRunAt:s.row.schedule.nextRunAt,title:s.row.definition.name}}function es(s){const t=s.recurrence;return t?J(t):s.expression??"Manual"}function te(s){return s.kind==="chat"?s.workflow.nextRunAt:s.kind==="local"?s.schedule.nextRunAt:s.row.schedule.nextRunAt}function ne(s){return s.kind==="chat"?s.workflow.name:s.kind==="local"?s.schedule.scheduleName:s.row.definition.name}function fe(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=ue(`${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 ss(s){return s.recurrence??{version:1,kind:"daily",timeZone:s.timeZone||as(),startDate:ls(),localTime:"08:00",end:{kind:"never"}}}function ts(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 ns(s,t){const[n,l]=d.useState([]),[c,f]=d.useState(!1),[u,h]=d.useState(null);return d.useEffect(()=>{if(!s){l([]),f(!1),h(null);return}let a=!1;return f(!0),C.localAgentScheduleRuns(s,t,{limit:20}).then(r=>{a||(l(r.runs),h(null))}).catch(r=>{a||h(rs(r))}).finally(()=>{a||f(!1)}),()=>{a=!0}},[s,t]),{error:u,loading:c,runs:n}}function F(s){return`local:${s}`}function Z(s){return`chat:${s}`}function _(s){return`hosted:${s}`}function le(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 ae(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 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 ls(){return new Date().toISOString().slice(0,10)}function as(){return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}function rs(s){return s instanceof Error?s.message:String(s)}export{ms as ScheduledWorkPage,Je as combineScheduleRows,Ge as filterAndSortLocalSchedules,Xe as filterAndSortSchedules,A as formatScheduledRunAt,le as hostedConversationUrl,fe as localScheduleCadence,es as scheduleCadence,Be as scheduledRows};
|