openpond 0.2.20 → 0.2.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/app-server.d.ts +2 -0
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{actions-command-33SJXJKC.js → actions-command-P62RTUD6.js} +1 -1
  4. package/dist/chunks/{app-layer-LMB3B4TY.js → app-layer-6SOR3QBT.js} +1 -1
  5. package/dist/chunks/app-server-runtime-7POHOWYT.js +2 -0
  6. package/dist/chunks/{apps-2MNOKPO2.js → apps-HFTYJ74Q.js} +1 -1
  7. package/dist/chunks/{chunk-7VRXJGFG.js → chunk-2ESK5DPT.js} +1 -1
  8. package/dist/chunks/chunk-DQNSR2Q7.js +28 -0
  9. package/dist/chunks/{chunk-P7EHGAOW.js → chunk-GGFXBQ3B.js} +1 -1
  10. package/dist/chunks/{chunk-FC4HHYDK.js → chunk-GKSPJZSF.js} +302 -302
  11. package/dist/chunks/{chunk-GZX5FDUN.js → chunk-GTV6J3M2.js} +1 -1
  12. package/dist/chunks/{chunk-UN3A7GEU.js → chunk-HPJFRC4R.js} +1 -1
  13. package/dist/chunks/{chunk-M3FDHTJ2.js → chunk-MCDTLTSV.js} +1 -1
  14. package/dist/chunks/chunk-MD7IADMT.js +5 -0
  15. package/dist/chunks/{chunk-Q7QAKAGF.js → chunk-ONMUSXZU.js} +14 -14
  16. package/dist/chunks/{chunk-TWA56GFU.js → chunk-QIQDNEFD.js} +1 -1
  17. package/dist/chunks/{chunk-QGHFQHLH.js → chunk-TDEMXZ3R.js} +1 -1
  18. package/dist/chunks/{chunk-E764DRA6.js → chunk-VNCJGHJC.js} +1 -1
  19. package/dist/chunks/{chunk-CUB5BQIQ.js → chunk-VU4NRDKZ.js} +2 -2
  20. package/dist/chunks/{chunk-IGRYR3PT.js → chunk-YH35HMNN.js} +1 -1
  21. package/dist/chunks/{cli-HSTHZVVW.js → cli-J5YD6UAN.js} +1 -1
  22. package/dist/chunks/{configuration-command-DSNTY5II.js → configuration-command-QIY6A4XZ.js} +1 -1
  23. package/dist/chunks/{core-commands-IDPOMDVM.js → core-commands-GDEELWSN.js} +1 -1
  24. package/dist/chunks/{desktop-test-VNGOXPKF.js → desktop-test-QIW5H3YZ.js} +1 -1
  25. package/dist/chunks/{extension-A5RB7I6T.js → extension-T5IOOMNR.js} +1 -1
  26. package/dist/chunks/{help-46NAZU6H.js → help-A2NLYYDQ.js} +1 -1
  27. package/dist/chunks/{opchat-2VPS674O.js → opchat-WMMKFVVB.js} +1 -1
  28. package/dist/chunks/{organizations-H4HZDRYM.js → organizations-RVMJ2UXS.js} +1 -1
  29. package/dist/chunks/{profile-TATWHJYY.js → profile-M5YD4P5E.js} +1 -1
  30. package/dist/chunks/{project-agent-3YOZKDEE.js → project-agent-6JUCQ4JO.js} +1 -1
  31. package/dist/chunks/{sandbox-command-RYX3KKMX.js → sandbox-command-KADUJT5Y.js} +1 -1
  32. package/dist/chunks/{sandbox-template-XYY5C3FD.js → sandbox-template-4SOHDYWY.js} +1 -1
  33. package/dist/chunks/{src-4R2FGHSH.js → src-GHTPFT4Q.js} +1 -1
  34. package/dist/chunks/{src-K54UA6AW.js → src-T3RRUIRF.js} +109 -109
  35. package/dist/chunks/{teams-bot-FUALFQMX.js → teams-bot-B2TEGEXF.js} +1 -1
  36. package/dist/chunks/{workspaces-ZUWEETYO.js → workspaces-66IE4AVY.js} +1 -1
  37. package/dist/cli.js +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/web/assets/{App-CmqvOgHr.js → App-CZo3tYaG.js} +36 -36
  40. package/dist/web/assets/{AppDialog-DdKmw4d6.js → AppDialog-18Y9aU8z.js} +1 -1
  41. package/dist/web/assets/{AppTerminalPanel-W2pjVUtg.js → AppTerminalPanel-9jAU4wYe.js} +2 -2
  42. package/dist/web/assets/{AppsView-RKIWikGP.js → AppsView-BCYnY9mm.js} +1 -1
  43. package/dist/web/assets/{BrowserSidebar-Dqo6nl7J.js → BrowserSidebar-BVf3sUAG.js} +1 -1
  44. package/dist/web/assets/{CartesianChart-DTZeIAQy.js → CartesianChart-iai9Dz1D.js} +1 -1
  45. package/dist/web/assets/{CollaborationTabs-h4UCjUB4.js → CollaborationTabs-D7bZIwFC.js} +1 -1
  46. package/dist/web/assets/{CommandMenu-B2SH7g8V.js → CommandMenu-diFDbKQl.js} +1 -1
  47. package/dist/web/assets/{CommunityView-BtI1_qwS.js → CommunityView-DaLkwOxW.js} +1 -1
  48. package/dist/web/assets/{ComposerCreateImproveStrip-BW8RhDkB.js → ComposerCreateImproveStrip-B59nTCE7.js} +1 -1
  49. package/dist/web/assets/{GetStartedView-Fqk2AYt7.js → GetStartedView-BETryURK.js} +1 -1
  50. package/dist/web/assets/HostedModelLearningReview-D5JtAiLZ.js +1 -0
  51. package/dist/web/assets/{HostedModelLearningSettings-CgS4Z4WT.js → HostedModelLearningSettings-FCly06RA.js} +1 -1
  52. package/dist/web/assets/{LabModelVersionDetailPage-Dpr2GpAR.js → LabModelVersionDetailPage-9MzQj6cy.js} +1 -1
  53. package/dist/web/assets/{LabSkillSidebar-BDmNaZ8f.js → LabSkillSidebar-BJHO5-J9.js} +1 -1
  54. package/dist/web/assets/{LabsRoute-CVWKsnzj.js → LabsRoute-6jVWrbOO.js} +4 -4
  55. package/dist/web/assets/{MainChatThread-Bq6f3AUB.js → MainChatThread-DAoPK8jG.js} +2 -2
  56. package/dist/web/assets/{MainPane-CGa9bSOr.js → MainPane-LDPzuZSj.js} +4 -4
  57. package/dist/web/assets/{MarkdownText-BORA69YO.js → MarkdownText-B8URwlq9.js} +1 -1
  58. package/dist/web/assets/{Messages-Bwyst8lC.js → Messages-Byk73D9T.js} +1 -1
  59. package/dist/web/assets/{NativeSkillSidebar-Dt4xs-gi.js → NativeSkillSidebar-BodHqCCH.js} +1 -1
  60. package/dist/web/assets/{NewExperienceSwitcher-C-T2my1F.js → NewExperienceSwitcher-BkUxxlOu.js} +1 -1
  61. package/dist/web/assets/{NewProjectDialog-Bd-8y1vE.js → NewProjectDialog-BZr2wm-4.js} +1 -1
  62. package/dist/web/assets/{OutputsPage-DYnvMsY-.js → OutputsPage-C8ZDtD1Y.js} +1 -1
  63. package/dist/web/assets/{ProjectsPage-BPytEvtz.js → ProjectsPage-CgfjGsl2.js} +1 -1
  64. package/dist/web/assets/{RightChatPanelStack-CJR0y6c5.js → RightChatPanelStack-DV3csVka.js} +1 -1
  65. package/dist/web/assets/{RightSidebarHomePanel-Cn0x7kgh.js → RightSidebarHomePanel-DvLaHLBb.js} +1 -1
  66. package/dist/web/assets/{ScheduledWorkPage-DaHVYiok.js → ScheduledWorkPage-DtzxPTAL.js} +1 -1
  67. package/dist/web/assets/{SettingsView-DwIdA2Qy.js → SettingsView-C3sVxgPc.js} +3 -3
  68. package/dist/web/assets/{TeamChatView-C1VmxtuK.js → TeamChatView-B-w2nrWF.js} +1 -1
  69. package/dist/web/assets/{TerminalOverlay-CPIWstqb.js → TerminalOverlay-_X7WVAev.js} +1 -1
  70. package/dist/web/assets/{TrainingCreationPanel-CjFkopVx.js → TrainingCreationPanel-DaVppW1m.js} +1 -1
  71. package/dist/web/assets/{TrainingDraftPanel-BbiN33_a.js → TrainingDraftPanel-CVj19T6L.js} +1 -1
  72. package/dist/web/assets/{UsageSettingsSection-BxT4ZptX.js → UsageSettingsSection-fRTHVjhG.js} +1 -1
  73. package/dist/web/assets/{WorkSidebarPanel-nb-GyANT.js → WorkSidebarPanel-CGOQwdIW.js} +1 -1
  74. package/dist/web/assets/{WorkspaceDiffPanel-DFi28DQv.js → WorkspaceDiffPanel-D6hbMv14.js} +3 -3
  75. package/dist/web/assets/{WorkspaceEnvironmentMenu-DW6IImGA.js → WorkspaceEnvironmentMenu-rWj1aDI4.js} +1 -1
  76. package/dist/web/assets/{WorkspaceGitDialogs-DvV8_9aF.js → WorkspaceGitDialogs-DVU5SrD-.js} +1 -1
  77. package/dist/web/assets/{WorkspaceMonacoEditor-BYqlTbx1.js → WorkspaceMonacoEditor-D78JPviN.js} +3 -3
  78. package/dist/web/assets/{arrow-up-right-BQGeuv2m.js → arrow-up-right-CnaPKXjg.js} +1 -1
  79. package/dist/web/assets/{chat-file-links-BjlG4ZTF.js → chat-file-links-D1INEr8r.js} +1 -1
  80. package/dist/web/assets/chevron-up-Bx5d_Wmr.js +1 -0
  81. package/dist/web/assets/{clipboard-CImDHdf4.js → clipboard-B8GTg8tx.js} +1 -1
  82. package/dist/web/assets/{cloud-upload-DSrjiFxa.js → cloud-upload-BlEc_10E.js} +1 -1
  83. package/dist/web/assets/{cssMode-CO6QKs7A.js → cssMode-BiYvezMD.js} +1 -1
  84. package/dist/web/assets/{folder-open-DWt_CiJ4.js → folder-open-BaNdbDD5.js} +1 -1
  85. package/dist/web/assets/{folder-plus-DZJsMZZS.js → folder-plus-BQhz_VxM.js} +1 -1
  86. package/dist/web/assets/{git-commit-horizontal-BmhX8D3M.js → git-commit-horizontal-wv523Ooq.js} +1 -1
  87. package/dist/web/assets/{htmlMode-BbhUfh60.js → htmlMode-BaMdOCq4.js} +1 -1
  88. package/dist/web/assets/{index-VrrkDcgt.js → index-DP8vqolj.js} +2 -2
  89. package/dist/web/assets/{info-C0HVDnJn.js → info-C0Ova1D9.js} +1 -1
  90. package/dist/web/assets/{jsonMode-qUE2PjNm.js → jsonMode-BTt0GByK.js} +1 -1
  91. package/dist/web/assets/{lspLanguageFeatures-CfX3VOob.js → lspLanguageFeatures-C-1acLbv.js} +1 -1
  92. package/dist/web/assets/{minimize-2-BPu3-DJH.js → minimize-2-CW5KYp0W.js} +1 -1
  93. package/dist/web/assets/{monaco.contribution-adURqSPk.js → monaco.contribution-CpiBa8rP.js} +2 -2
  94. package/dist/web/assets/{monaco.contribution-CKQpqdUm.js → monaco.contribution-DoAhyjpn.js} +2 -2
  95. package/dist/web/assets/{monaco.contribution-BtbXAYNA.js → monaco.contribution-DyKzYxR3.js} +2 -2
  96. package/dist/web/assets/{monaco.contribution-DBKGSgm8.js → monaco.contribution-P9b5cZU2.js} +2 -2
  97. package/dist/web/assets/{play-CUyIuBFF.js → play-jV1i4pfe.js} +1 -1
  98. package/dist/web/assets/{python-q4l4w80D.js → python-BQnnGrv3.js} +1 -1
  99. package/dist/web/assets/{refresh-cw-IMz7arkM.js → refresh-cw-REnkUGNy.js} +1 -1
  100. package/dist/web/assets/{save-Cj-5iVpt.js → save-B2WTTCI_.js} +1 -1
  101. package/dist/web/assets/{square-zOxRs5It.js → square-CRb2lKMC.js} +1 -1
  102. package/dist/web/assets/{toggleHighContrast-Dj-u2UZ6.js → toggleHighContrast-BGsGhGW4.js} +1 -1
  103. package/dist/web/assets/{tsMode-B-r-e3os.js → tsMode-BWtSmvFs.js} +1 -1
  104. package/dist/web/assets/{upload-BpElaH7O.js → upload-B_PICaZn.js} +1 -1
  105. package/dist/web/assets/{useLocalAgentSchedules-wyJ9JjmR.js → useLocalAgentSchedules-zmmvBnwd.js} +1 -1
  106. package/dist/web/assets/{wifi-off-DWRK-TPQ.js → wifi-off-CjKTt0zE.js} +1 -1
  107. package/dist/web/assets/{workers-Pk9mKuOt.js → workers-CxglqyKV.js} +1 -1
  108. package/dist/web/assets/{yaml-hbr5HzqB.js → yaml-DgyPsmb2.js} +1 -1
  109. package/dist/web/index.html +1 -1
  110. package/package.json +1 -1
  111. package/dist/chunks/app-server-runtime-WJVVQC3J.js +0 -2
  112. package/dist/chunks/chunk-A2PIGBPD.js +0 -28
  113. package/dist/chunks/chunk-FRWPAVCD.js +0 -5
  114. package/dist/web/assets/HostedModelLearningReview-mBYA71Zs.js +0 -1
  115. package/dist/web/assets/chevron-up-BbI7fj2g.js +0 -1
@@ -1 +1 @@
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};
1
+ import{r as d,j as e}from"./index-DP8vqolj.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-CZo3tYaG.js";import{R as q,u as ke}from"./useLocalAgentSchedules-zmmvBnwd.js";import{a as Se,P as B,T as ie}from"./chat-file-links-D1INEr8r.js";import{P as X}from"./play-jV1i4pfe.js";import{R as Re}from"./refresh-cw-REnkUGNy.js";import{S as Ce}from"./save-B2WTTCI_.js";import{M as Ae}from"./minimize-2-CW5KYp0W.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};