openpond 0.2.23 → 0.2.25

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 (148) hide show
  1. package/dist/app-server.js +1 -1
  2. package/dist/chunks/actions-command-S27YU6NW.js +2 -0
  3. package/dist/chunks/{app-layer-4CK6ZEKN.js → app-layer-57323XKJ.js} +1 -1
  4. package/dist/chunks/app-server-runtime-QIIJ3KQJ.js +2 -0
  5. package/dist/chunks/apps-U3TXSPU6.js +2 -0
  6. package/dist/chunks/{chunk-MD7IADMT.js → chunk-3YSCXFE6.js} +3 -3
  7. package/dist/chunks/chunk-4KDHMGKI.js +2 -0
  8. package/dist/chunks/{chunk-NS3VMSTX.js → chunk-5WFXFKLA.js} +2 -2
  9. package/dist/chunks/chunk-6LY7GYNK.js +2 -0
  10. package/dist/chunks/{chunk-BZMVB3GS.js → chunk-6XF4GI35.js} +1 -1
  11. package/dist/chunks/{chunk-73KFNV3D.js → chunk-7TV2VBSD.js} +1 -1
  12. package/dist/chunks/{chunk-CXDS2LSW.js → chunk-AC2M2HO3.js} +1 -1
  13. package/dist/chunks/{chunk-ZVOO7FKM.js → chunk-BSHAIAXY.js} +1 -1
  14. package/dist/chunks/{chunk-QWE3RHNY.js → chunk-C5OV4XWF.js} +1 -1
  15. package/dist/chunks/{chunk-WYHHDJEG.js → chunk-D6BBQHZM.js} +12 -12
  16. package/dist/chunks/{chunk-JS6MS2NR.js → chunk-F3VURV3Q.js} +2 -2
  17. package/dist/chunks/chunk-F4WS5QIT.js +54 -0
  18. package/dist/chunks/{chunk-V4ACXLID.js → chunk-GOQDMRUV.js} +1 -1
  19. package/dist/chunks/chunk-J3ZRHNGL.js +2 -0
  20. package/dist/chunks/{chunk-T3VPZRIX.js → chunk-JTX6QZEP.js} +1 -1
  21. package/dist/chunks/{chunk-H75VJFMZ.js → chunk-KLSLHUTO.js} +1 -1
  22. package/dist/chunks/{chunk-Q76GR2JM.js → chunk-M4CJXPMH.js} +1 -1
  23. package/dist/chunks/chunk-M4VGRNP6.js +2 -0
  24. package/dist/chunks/{chunk-XDVKDELR.js → chunk-RBQZVQQM.js} +1 -1
  25. package/dist/chunks/chunk-TJNIYJUH.js +2 -0
  26. package/dist/chunks/{chunk-CTC5EYSH.js → chunk-TR37PJIQ.js} +3 -3
  27. package/dist/chunks/{chunk-3XUBKIBN.js → chunk-UBHTZJEV.js} +1 -1
  28. package/dist/chunks/{chunk-V2BBMZ7I.js → chunk-WK5HTGXV.js} +1 -1
  29. package/dist/chunks/chunk-XRV4WLI7.js +2 -0
  30. package/dist/chunks/chunk-XWPC3AN4.js +1 -0
  31. package/dist/chunks/chunk-Y2NQXJ2Q.js +5 -0
  32. package/dist/chunks/{chunk-DWROB2J6.js → chunk-YNH6AUGE.js} +1 -1
  33. package/dist/chunks/cli-GGYPZNZC.js +2 -0
  34. package/dist/chunks/configuration-command-BASDSNVK.js +2 -0
  35. package/dist/chunks/{continual-OJYXVTIZ.js → continual-6EW2SLGL.js} +1 -1
  36. package/dist/chunks/core-commands-YQTVPPLJ.js +2 -0
  37. package/dist/chunks/desktop-test-JITAYXCK.js +3 -0
  38. package/dist/chunks/dist-5C6RYTQQ.js +2 -0
  39. package/dist/chunks/{extension-AZRG5IPK.js → extension-ZKWQ3ZPJ.js} +1 -1
  40. package/dist/chunks/{help-6IMGNP7A.js → help-SDEZHWZL.js} +1 -1
  41. package/dist/chunks/{opchat-OS7WAVZO.js → opchat-IOP37GN3.js} +1 -1
  42. package/dist/chunks/organizations-4LQEILYG.js +2 -0
  43. package/dist/chunks/{profile-A3YR3WVU.js → profile-MVLYUDLU.js} +1 -1
  44. package/dist/chunks/project-agent-DALYNEZ4.js +2 -0
  45. package/dist/chunks/sandbox-command-VHCKLKN5.js +2 -0
  46. package/dist/chunks/{sandbox-template-FK2TGQPK.js → sandbox-template-WY7XIMDK.js} +1 -1
  47. package/dist/chunks/{src-UIX7LWM7.js → src-22KEI2VU.js} +1 -1
  48. package/dist/chunks/{src-RZFKQSHW.js → src-R3FALV6F.js} +101 -101
  49. package/dist/chunks/taskset-YPKY3HUM.js +2 -0
  50. package/dist/chunks/{teams-bot-PASMNRFS.js → teams-bot-47H7LRFD.js} +1 -1
  51. package/dist/chunks/training-7PST5HZU.js +2 -0
  52. package/dist/chunks/{workspaces-YFAAPNVP.js → workspaces-RAHQXYWB.js} +1 -1
  53. package/dist/cli.js +1 -1
  54. package/dist/index.js +1 -1
  55. package/dist/web/assets/{App-CZo3tYaG.js → App-BzNZ7ycx.js} +28 -28
  56. package/dist/web/assets/{AppDialog-18Y9aU8z.js → AppDialog-C3H3HARP.js} +1 -1
  57. package/dist/web/assets/{AppTerminalPanel-9jAU4wYe.js → AppTerminalPanel-DIXARKfe.js} +2 -2
  58. package/dist/web/assets/{AppsView-BCYnY9mm.js → AppsView-D0xPDTPJ.js} +1 -1
  59. package/dist/web/assets/{BrowserSidebar-BVf3sUAG.js → BrowserSidebar-D5eE9O30.js} +1 -1
  60. package/dist/web/assets/{CartesianChart-iai9Dz1D.js → CartesianChart-KMVbiMJX.js} +1 -1
  61. package/dist/web/assets/{CollaborationTabs-D7bZIwFC.js → CollaborationTabs-C1LTvUbK.js} +1 -1
  62. package/dist/web/assets/{CommandMenu-diFDbKQl.js → CommandMenu-C9elnZaI.js} +1 -1
  63. package/dist/web/assets/{CommunityView-DaLkwOxW.js → CommunityView-BvXxVHmL.js} +1 -1
  64. package/dist/web/assets/{ComposerCreateImproveStrip-B59nTCE7.js → ComposerCreateImproveStrip-Cwu8EaCb.js} +1 -1
  65. package/dist/web/assets/{GetStartedView-BETryURK.js → GetStartedView-BI1j30-I.js} +1 -1
  66. package/dist/web/assets/HostedModelLearningReview-Bwkg3lyV.js +1 -0
  67. package/dist/web/assets/{HostedModelLearningSettings-FCly06RA.js → HostedModelLearningSettings-DhaT1bxX.js} +1 -1
  68. package/dist/web/assets/{LabModelVersionDetailPage-9MzQj6cy.js → LabModelVersionDetailPage-CeSm-sAq.js} +1 -1
  69. package/dist/web/assets/{LabSkillSidebar-BJHO5-J9.js → LabSkillSidebar-BzGs7EC8.js} +1 -1
  70. package/dist/web/assets/{LabsRoute-6jVWrbOO.js → LabsRoute-BQi8W0-2.js} +4 -4
  71. package/dist/web/assets/{MainChatThread-DAoPK8jG.js → MainChatThread-D3KXQ4Te.js} +2 -2
  72. package/dist/web/assets/{MainPane-LDPzuZSj.js → MainPane-J15DRf-n.js} +4 -4
  73. package/dist/web/assets/{MarkdownText-B8URwlq9.js → MarkdownText-BWIVACAt.js} +1 -1
  74. package/dist/web/assets/{Messages-Byk73D9T.js → Messages-BPbo8ih9.js} +1 -1
  75. package/dist/web/assets/{NativeSkillSidebar-BodHqCCH.js → NativeSkillSidebar-BeqI4dXF.js} +1 -1
  76. package/dist/web/assets/{NewExperienceSwitcher-BkUxxlOu.js → NewExperienceSwitcher-BggrQVIi.js} +1 -1
  77. package/dist/web/assets/{NewProjectDialog-BZr2wm-4.js → NewProjectDialog-B4PTFf78.js} +1 -1
  78. package/dist/web/assets/{OutputsPage-C8ZDtD1Y.js → OutputsPage-DChjcyaP.js} +1 -1
  79. package/dist/web/assets/{ProjectsPage-CgfjGsl2.js → ProjectsPage-BdUkyg6I.js} +1 -1
  80. package/dist/web/assets/{RightChatPanelStack-DV3csVka.js → RightChatPanelStack-CLCOzLVJ.js} +1 -1
  81. package/dist/web/assets/{RightSidebarHomePanel-DvLaHLBb.js → RightSidebarHomePanel-qs2Fa4JQ.js} +1 -1
  82. package/dist/web/assets/{ScheduledWorkPage-DtzxPTAL.js → ScheduledWorkPage-DzehKDhk.js} +1 -1
  83. package/dist/web/assets/{SettingsView-C3sVxgPc.js → SettingsView-DJiJKYWW.js} +3 -3
  84. package/dist/web/assets/{TeamChatView-B-w2nrWF.js → TeamChatView-uGwanVsA.js} +1 -1
  85. package/dist/web/assets/{TerminalOverlay-_X7WVAev.js → TerminalOverlay-DJNdErEp.js} +1 -1
  86. package/dist/web/assets/{TrainingCreationPanel-DaVppW1m.js → TrainingCreationPanel-CwyKMNwt.js} +1 -1
  87. package/dist/web/assets/{TrainingDraftPanel-CVj19T6L.js → TrainingDraftPanel-Rdusv4s_.js} +1 -1
  88. package/dist/web/assets/{UsageSettingsSection-fRTHVjhG.js → UsageSettingsSection-BkRalGcP.js} +1 -1
  89. package/dist/web/assets/{WorkSidebarPanel-CGOQwdIW.js → WorkSidebarPanel-d8PB-XNy.js} +1 -1
  90. package/dist/web/assets/{WorkspaceDiffPanel-D6hbMv14.js → WorkspaceDiffPanel-DfpyLroX.js} +3 -3
  91. package/dist/web/assets/{WorkspaceEnvironmentMenu-rWj1aDI4.js → WorkspaceEnvironmentMenu-DhUUB-lq.js} +1 -1
  92. package/dist/web/assets/{WorkspaceGitDialogs-DVU5SrD-.js → WorkspaceGitDialogs-0juVLtVy.js} +1 -1
  93. package/dist/web/assets/{WorkspaceMonacoEditor-D78JPviN.js → WorkspaceMonacoEditor-Blo5esSN.js} +3 -3
  94. package/dist/web/assets/{arrow-up-right-CnaPKXjg.js → arrow-up-right-BXeo-8KJ.js} +1 -1
  95. package/dist/web/assets/{chat-file-links-D1INEr8r.js → chat-file-links-BEbA_E33.js} +1 -1
  96. package/dist/web/assets/chevron-up-Dx5rir4H.js +1 -0
  97. package/dist/web/assets/{clipboard-B8GTg8tx.js → clipboard-17OIp5F-.js} +1 -1
  98. package/dist/web/assets/{cloud-upload-BlEc_10E.js → cloud-upload-D28o8URw.js} +1 -1
  99. package/dist/web/assets/{cssMode-BiYvezMD.js → cssMode-DDPYV_bh.js} +1 -1
  100. package/dist/web/assets/{folder-open-BaNdbDD5.js → folder-open-CqBlANkk.js} +1 -1
  101. package/dist/web/assets/{folder-plus-BQhz_VxM.js → folder-plus-DkUnvZhx.js} +1 -1
  102. package/dist/web/assets/{git-commit-horizontal-wv523Ooq.js → git-commit-horizontal-BEIomQj0.js} +1 -1
  103. package/dist/web/assets/{htmlMode-BaMdOCq4.js → htmlMode-gF-t3JxJ.js} +1 -1
  104. package/dist/web/assets/{index-DP8vqolj.js → index-Dg_FWrRZ.js} +2 -2
  105. package/dist/web/assets/{info-C0Ova1D9.js → info-n9PKmODI.js} +1 -1
  106. package/dist/web/assets/{jsonMode-BTt0GByK.js → jsonMode-B5DVQ7wE.js} +1 -1
  107. package/dist/web/assets/{lspLanguageFeatures-C-1acLbv.js → lspLanguageFeatures-FK4QlUnB.js} +1 -1
  108. package/dist/web/assets/{minimize-2-CW5KYp0W.js → minimize-2--J7-Zqg1.js} +1 -1
  109. package/dist/web/assets/{monaco.contribution-DoAhyjpn.js → monaco.contribution-CM_Srh4F.js} +2 -2
  110. package/dist/web/assets/{monaco.contribution-P9b5cZU2.js → monaco.contribution-CV2W_Ydj.js} +2 -2
  111. package/dist/web/assets/{monaco.contribution-DyKzYxR3.js → monaco.contribution-DCmsluF_.js} +2 -2
  112. package/dist/web/assets/{monaco.contribution-CpiBa8rP.js → monaco.contribution-DEkLSjvo.js} +2 -2
  113. package/dist/web/assets/{play-jV1i4pfe.js → play-CT6lFZDI.js} +1 -1
  114. package/dist/web/assets/{python-BQnnGrv3.js → python-DQHHAEpa.js} +1 -1
  115. package/dist/web/assets/{refresh-cw-REnkUGNy.js → refresh-cw-Cm-4hHSn.js} +1 -1
  116. package/dist/web/assets/{save-B2WTTCI_.js → save-CwgR_oyc.js} +1 -1
  117. package/dist/web/assets/{square-CRb2lKMC.js → square-DPrPBeHW.js} +1 -1
  118. package/dist/web/assets/{toggleHighContrast-BGsGhGW4.js → toggleHighContrast-C1QZjrPj.js} +1 -1
  119. package/dist/web/assets/{tsMode-BWtSmvFs.js → tsMode-DY4Ji1ac.js} +1 -1
  120. package/dist/web/assets/{upload-B_PICaZn.js → upload-DABGNAIq.js} +1 -1
  121. package/dist/web/assets/{useLocalAgentSchedules-zmmvBnwd.js → useLocalAgentSchedules-D5P28Jej.js} +1 -1
  122. package/dist/web/assets/{wifi-off-CjKTt0zE.js → wifi-off-CJOdJJRb.js} +1 -1
  123. package/dist/web/assets/{workers-CxglqyKV.js → workers-BLjr7D_D.js} +1 -1
  124. package/dist/web/assets/{yaml-DgyPsmb2.js → yaml-eXk00scV.js} +1 -1
  125. package/dist/web/index.html +1 -1
  126. package/package.json +1 -1
  127. package/dist/chunks/actions-command-CZD7U6CC.js +0 -2
  128. package/dist/chunks/app-server-runtime-5XZWU7JL.js +0 -2
  129. package/dist/chunks/apps-NIQBGOGH.js +0 -2
  130. package/dist/chunks/chunk-3YAGJU2X.js +0 -2
  131. package/dist/chunks/chunk-G2VYRU27.js +0 -5
  132. package/dist/chunks/chunk-HZP5U2AA.js +0 -3
  133. package/dist/chunks/chunk-J3WNPOLS.js +0 -2
  134. package/dist/chunks/chunk-NNLI4OWY.js +0 -53
  135. package/dist/chunks/chunk-SS3EG6S2.js +0 -2
  136. package/dist/chunks/chunk-Y7ZYJQGZ.js +0 -2
  137. package/dist/chunks/cli-GWKOPTLS.js +0 -2
  138. package/dist/chunks/configuration-command-OAZNWOFX.js +0 -2
  139. package/dist/chunks/core-commands-VGUAOSWS.js +0 -2
  140. package/dist/chunks/desktop-test-SPTFR43A.js +0 -3
  141. package/dist/chunks/dist-UA2RQUA4.js +0 -2
  142. package/dist/chunks/organizations-QPACFCMH.js +0 -2
  143. package/dist/chunks/project-agent-5H6VCDAY.js +0 -2
  144. package/dist/chunks/sandbox-command-RKUHXCZJ.js +0 -2
  145. package/dist/chunks/taskset-PISBOILQ.js +0 -2
  146. package/dist/chunks/training-2NDOWH5S.js +0 -2
  147. package/dist/web/assets/HostedModelLearningReview-D5JtAiLZ.js +0 -1
  148. package/dist/web/assets/chevron-up-Bx5d_Wmr.js +0 -1
@@ -1 +1 @@
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};
1
+ import{r as d,j as e}from"./index-Dg_FWrRZ.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-BzNZ7ycx.js";import{R as q,u as ke}from"./useLocalAgentSchedules-D5P28Jej.js";import{a as Se,P as B,T as ie}from"./chat-file-links-BEbA_E33.js";import{P as X}from"./play-CT6lFZDI.js";import{R as Re}from"./refresh-cw-Cm-4hHSn.js";import{S as Ce}from"./save-CwgR_oyc.js";import{M as Ae}from"./minimize-2--J7-Zqg1.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};