openpond 0.2.1 → 0.2.2

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 (117) hide show
  1. package/dist/chunks/{actions-command-QP3NMDK4.js → actions-command-F55CBR2K.js} +1 -1
  2. package/dist/chunks/{app-layer-N7VFRVJ2.js → app-layer-GNYLOBCX.js} +1 -1
  3. package/dist/chunks/{app-server-runtime-OCLPUI7F.js → app-server-runtime-VAGY4LQS.js} +1 -1
  4. package/dist/chunks/{apps-AMG75TI4.js → apps-HZ5JGBDR.js} +1 -1
  5. package/dist/chunks/{chunk-5BBVEWG3.js → chunk-7D2LMRP7.js} +1 -1
  6. package/dist/chunks/{chunk-KV553EWX.js → chunk-A42DFLOR.js} +1 -1
  7. package/dist/chunks/{chunk-FY7OQ5RK.js → chunk-AF57BF75.js} +1 -1
  8. package/dist/chunks/{chunk-FGJ5LFPL.js → chunk-CCJG7GLE.js} +1 -1
  9. package/dist/chunks/chunk-EG3XB6M6.js +5 -0
  10. package/dist/chunks/{chunk-MGN6GLNZ.js → chunk-GEANXBLX.js} +1 -1
  11. package/dist/chunks/{chunk-F65NIZLM.js → chunk-GPZYIVFV.js} +11 -11
  12. package/dist/chunks/{chunk-C5LOZSVS.js → chunk-I7G35U7K.js} +1 -1
  13. package/dist/chunks/{chunk-PI36UHRA.js → chunk-J7WZSLHS.js} +1 -1
  14. package/dist/chunks/{chunk-5O7ZVCMV.js → chunk-K35OOAW2.js} +1 -1
  15. package/dist/chunks/{chunk-UKUVMXOW.js → chunk-KDXLNQNF.js} +4 -4
  16. package/dist/chunks/{chunk-KU7QOHFT.js → chunk-KJYNLFWD.js} +273 -273
  17. package/dist/chunks/{chunk-BBG546O6.js → chunk-KV2IXO2T.js} +1 -1
  18. package/dist/chunks/chunk-NVGMZ2IN.js +2 -0
  19. package/dist/chunks/{chunk-VCLCFK3O.js → chunk-RAKJWIYO.js} +1 -1
  20. package/dist/chunks/{chunk-XDHAGACI.js → chunk-T5XCPX4P.js} +2 -2
  21. package/dist/chunks/{chunk-OG5Q6NXK.js → chunk-XAYIETBO.js} +17 -17
  22. package/dist/chunks/{cli-M2FG7SSI.js → cli-UYTSZB4Y.js} +1 -1
  23. package/dist/chunks/{configuration-command-XBKBIZBO.js → configuration-command-HAPIYG25.js} +1 -1
  24. package/dist/chunks/{core-commands-LUZVWXQR.js → core-commands-N37UZEVE.js} +1 -1
  25. package/dist/chunks/{desktop-test-KGC4JVJ7.js → desktop-test-V7FBEG7U.js} +1 -1
  26. package/dist/chunks/{extension-NQ7N5LEY.js → extension-NEPOQ44P.js} +1 -1
  27. package/dist/chunks/{help-MWK66XZK.js → help-HC4N5ZQC.js} +1 -1
  28. package/dist/chunks/{opchat-XJZA3QKZ.js → opchat-C7XRN4ZW.js} +1 -1
  29. package/dist/chunks/{organizations-UECDFEYE.js → organizations-LQGRZJ2V.js} +1 -1
  30. package/dist/chunks/{profile-KUMIZURM.js → profile-UWM24A7R.js} +1 -1
  31. package/dist/chunks/{project-agent-NILMJHLV.js → project-agent-2ME52ZJW.js} +1 -1
  32. package/dist/chunks/{sandbox-command-QHH65OSE.js → sandbox-command-53L3ZICT.js} +1 -1
  33. package/dist/chunks/{sandbox-template-N7I63PNU.js → sandbox-template-55HUM5H7.js} +1 -1
  34. package/dist/chunks/{src-VTKTTKQO.js → src-EYJF2LWV.js} +70 -70
  35. package/dist/chunks/{src-724HF43W.js → src-VGW2UEMV.js} +1 -1
  36. package/dist/chunks/{teams-bot-UV4RU53M.js → teams-bot-FHD2HCHN.js} +1 -1
  37. package/dist/chunks/{workspaces-XXT4KUD3.js → workspaces-CQFVCR7T.js} +1 -1
  38. package/dist/cli.js +1 -1
  39. package/dist/index.js +1 -1
  40. package/dist/web/assets/{App-DxecRQUL.js → App-BoJQRfeu.js} +29 -29
  41. package/dist/web/assets/{AppDialog-B65Eo3gp.js → AppDialog-rdfmJsGF.js} +1 -1
  42. package/dist/web/assets/{AppTerminalPanel-B2EKQM7W.js → AppTerminalPanel-CLW0kxtg.js} +2 -2
  43. package/dist/web/assets/{AppsView-BBoVe7s2.js → AppsView-DxMXadnp.js} +1 -1
  44. package/dist/web/assets/{BrowserSidebar-CSM1atSJ.js → BrowserSidebar-BH_jl0JS.js} +1 -1
  45. package/dist/web/assets/{CartesianChart-CJKfXiEG.js → CartesianChart-oT_rMYpf.js} +1 -1
  46. package/dist/web/assets/{CollaborationTabs-BMZamWFC.js → CollaborationTabs-CukgFGE0.js} +1 -1
  47. package/dist/web/assets/{CommandMenu-B3U1z2eo.js → CommandMenu-2btBTgOF.js} +1 -1
  48. package/dist/web/assets/{CommunityView-CTyRUcfy.js → CommunityView-DMTREmN5.js} +1 -1
  49. package/dist/web/assets/{ComposerCreateImproveStrip-D7usvRtK.js → ComposerCreateImproveStrip-3tN55cg9.js} +1 -1
  50. package/dist/web/assets/{GetStartedView-Ibu7oKWJ.js → GetStartedView-CMHL24_w.js} +1 -1
  51. package/dist/web/assets/HostedModelLearningReview-CqkSelkC.js +1 -0
  52. package/dist/web/assets/HostedModelLearningSettings-xqd2lSW3.js +1 -0
  53. package/dist/web/assets/{LabModelVersionDetailPage-s9uUN6fV.js → LabModelVersionDetailPage-Bpnya5DM.js} +1 -1
  54. package/dist/web/assets/{LabSkillSidebar-BKYseMiJ.js → LabSkillSidebar-BKZjScr8.js} +1 -1
  55. package/dist/web/assets/LabsRoute-BhPFmA_Z.js +32 -0
  56. package/dist/web/assets/{MainChatThread-DvuyMcMB.js → MainChatThread-Bosxokt-.js} +2 -2
  57. package/dist/web/assets/{MainPane-BWwcxgHD.js → MainPane-Di-Rwe7x.js} +4 -4
  58. package/dist/web/assets/{MarkdownText-D8XC5UT_.js → MarkdownText-dK4SBPp_.js} +1 -1
  59. package/dist/web/assets/{Messages-e4A8JUjD.js → Messages-ftYRMKYa.js} +5 -5
  60. package/dist/web/assets/{NativeSkillSidebar-D2Joh8XB.js → NativeSkillSidebar-Cwo7JdB2.js} +1 -1
  61. package/dist/web/assets/{NewExperienceSwitcher-CzGebt2E.js → NewExperienceSwitcher-C1_JzTq2.js} +1 -1
  62. package/dist/web/assets/{NewProjectDialog-CdMTSxUE.js → NewProjectDialog-CxP6v6YW.js} +1 -1
  63. package/dist/web/assets/{OutputsPage-m7cSb8dW.js → OutputsPage-DL21_Alp.js} +1 -1
  64. package/dist/web/assets/{ProjectsPage-C9mz8W1g.js → ProjectsPage-BO9VyvMA.js} +1 -1
  65. package/dist/web/assets/{RightChatPanelStack-B4LEqKEj.js → RightChatPanelStack-DaqAnzdR.js} +1 -1
  66. package/dist/web/assets/{RightSidebarHomePanel-DOeUsH7h.js → RightSidebarHomePanel-PbUG12AO.js} +1 -1
  67. package/dist/web/assets/{ScheduledWorkPage-UXZSSWgA.js → ScheduledWorkPage-BhL-cXML.js} +1 -1
  68. package/dist/web/assets/{SettingsView-CQm1ai73.js → SettingsView-D6-s7G88.js} +3 -3
  69. package/dist/web/assets/{TeamChatView-C4haojB7.js → TeamChatView-DbS1N-fo.js} +1 -1
  70. package/dist/web/assets/{TerminalOverlay-p2GZsuyQ.js → TerminalOverlay-CphyBXJR.js} +1 -1
  71. package/dist/web/assets/{TrainingCreationPanel-BYJSlO8X.js → TrainingCreationPanel-Czsdraix.js} +1 -1
  72. package/dist/web/assets/{TrainingDraftPanel-DR5KlayH.js → TrainingDraftPanel-Bq3B5pUk.js} +1 -1
  73. package/dist/web/assets/{UsageSettingsSection-BQToNXE4.js → UsageSettingsSection-B74FNwaP.js} +1 -1
  74. package/dist/web/assets/{WorkSidebarPanel--EeytWeg.js → WorkSidebarPanel-BgaK4XSg.js} +1 -1
  75. package/dist/web/assets/{WorkspaceDiffPanel-BrovSYhn.js → WorkspaceDiffPanel-C3seHnVY.js} +3 -3
  76. package/dist/web/assets/{WorkspaceEnvironmentMenu-l-keRgvj.js → WorkspaceEnvironmentMenu-DPghQUdv.js} +1 -1
  77. package/dist/web/assets/{WorkspaceGitDialogs-aicWzaZu.js → WorkspaceGitDialogs-D8c6Okb_.js} +1 -1
  78. package/dist/web/assets/{WorkspaceMonacoEditor-CO_E74jM.js → WorkspaceMonacoEditor-2kjRFf4l.js} +3 -3
  79. package/dist/web/assets/{arrow-up-right-rwPXNfVn.js → arrow-up-right-C5X-29oa.js} +1 -1
  80. package/dist/web/assets/{chat-file-links-B3jDstSC.js → chat-file-links-Bmz9kVct.js} +1 -1
  81. package/dist/web/assets/chevron-up-NbP9vY4E.js +1 -0
  82. package/dist/web/assets/{clipboard-DwEExyU4.js → clipboard-fvHMXPWa.js} +1 -1
  83. package/dist/web/assets/{cloud-upload-D2he0-vQ.js → cloud-upload-BAycsdHL.js} +1 -1
  84. package/dist/web/assets/{cssMode-DS4k0NcI.js → cssMode-Yis679a5.js} +1 -1
  85. package/dist/web/assets/{folder-open-CAOLduKD.js → folder-open-bii4KUCv.js} +1 -1
  86. package/dist/web/assets/{folder-plus-D56MrxVT.js → folder-plus-B0B7mUCx.js} +1 -1
  87. package/dist/web/assets/{git-commit-horizontal-CeNM0oKJ.js → git-commit-horizontal-B6yTdtnB.js} +1 -1
  88. package/dist/web/assets/{htmlMode-Xkni5erh.js → htmlMode-DHeBSKVF.js} +1 -1
  89. package/dist/web/assets/{index-KwyAyscP.js → index-667pXXsu.js} +1 -1
  90. package/dist/web/assets/{info-CcrBaEE_.js → info-NCOESX3I.js} +1 -1
  91. package/dist/web/assets/{jsonMode-C4YPbQB7.js → jsonMode-C4oxy1cU.js} +1 -1
  92. package/dist/web/assets/{lspLanguageFeatures-CF5oMTz6.js → lspLanguageFeatures-CLj3WGZW.js} +1 -1
  93. package/dist/web/assets/{minimize-2-DzHQnInk.js → minimize-2-DtI1vgd7.js} +1 -1
  94. package/dist/web/assets/{monaco.contribution-CkPGKNd-.js → monaco.contribution-DZPgekIQ.js} +2 -2
  95. package/dist/web/assets/{monaco.contribution-0EN4mGCC.js → monaco.contribution-Ddw-TznO.js} +2 -2
  96. package/dist/web/assets/{monaco.contribution-B4qcTP0w.js → monaco.contribution-DhVPJ-oY.js} +2 -2
  97. package/dist/web/assets/{monaco.contribution-CJK_NrBm.js → monaco.contribution-DrW6DjWP.js} +2 -2
  98. package/dist/web/assets/{play-p3-AMTPL.js → play-DB3XFAnG.js} +1 -1
  99. package/dist/web/assets/{python-B0kpTxAZ.js → python-DLyUeEeL.js} +1 -1
  100. package/dist/web/assets/{refresh-cw-_jbTIzzr.js → refresh-cw-0zSLZtfp.js} +1 -1
  101. package/dist/web/assets/{save-Cy6hEotx.js → save-BCZlshOA.js} +1 -1
  102. package/dist/web/assets/{square-DKQkcrOH.js → square-CRytZWR_.js} +1 -1
  103. package/dist/web/assets/{toggleHighContrast-Bnk1VVVq.js → toggleHighContrast-TXg0rI_R.js} +1 -1
  104. package/dist/web/assets/{tsMode-BDrSVy7V.js → tsMode-Bj1019AY.js} +1 -1
  105. package/dist/web/assets/{upload-COn0my_O.js → upload-CnE9u7GB.js} +1 -1
  106. package/dist/web/assets/{useLocalAgentSchedules-iZNB4Oee.js → useLocalAgentSchedules-qI87RHVI.js} +1 -1
  107. package/dist/web/assets/{wifi-off-Cqt-ZLXY.js → wifi-off-CfuwRBx7.js} +1 -1
  108. package/dist/web/assets/{workers-hu0Ym93h.js → workers-CXdUI7wU.js} +1 -1
  109. package/dist/web/assets/{yaml-D-JLDGL6.js → yaml-AP8aiwLm.js} +1 -1
  110. package/dist/web/index.html +1 -1
  111. package/package.json +1 -1
  112. package/dist/chunks/chunk-SAE4OIPC.js +0 -2
  113. package/dist/chunks/chunk-ZF7TEGY5.js +0 -5
  114. package/dist/web/assets/HostedModelLearningReview-qnzIkT70.js +0 -1
  115. package/dist/web/assets/HostedModelLearningSettings--PKjpYsy.js +0 -1
  116. package/dist/web/assets/LabsRoute-DoRs0K6v.js +0 -32
  117. package/dist/web/assets/chevron-up-D089nvYQ.js +0 -1
@@ -1 +1 @@
1
- import{r as a,j as i}from"./index-KwyAyscP.js";import{F as ve}from"./folder-open-CAOLduKD.js";import{ds as we,dt as Re,du as Ie,dv as ye,a2 as je,a6 as Ce,aj as Pe,dw as Te,a7 as Ae,a8 as Se,ac as Me,a9 as Ne,X as Fe,P as Ee,aq as Be}from"./App-DxecRQUL.js";import{u as $e,a as De,T as Le,M as Oe}from"./Messages-e4A8JUjD.js";import{d as qe,u as Ue,s as ze,e as He,l as Ke,f as Ve,i as We,A as Qe,g as Ge}from"./MainPane-BWwcxgHD.js";import"./chevron-up-D089nvYQ.js";import"./MarkdownText-D8XC5UT_.js";import"./chat-file-links-B3jDstSC.js";import"./desktop-files-BQj1J-ob.js";import"./arrow-up-right-rwPXNfVn.js";import"./play-p3-AMTPL.js";import"./refresh-cw-_jbTIzzr.js";import"./cloud-upload-D2he0-vQ.js";import"./square-DKQkcrOH.js";function Xe({panel:t,runtimeEventStore:L,actionCatalog:y,createImproveActions:j,contextCompaction:C,steerActiveResponses:O,initialScrollState:g,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:P,connection:b,connectedAppMentions:z,mentionApps:H,codexPersonalSkills:K,profileSkills:V,profileTarget:T,projectTarget:W,providerSettings:Q,accountBaseUrl:G,billingOrganizationSlug:X,billingTeamId:_,showToast:J,workspaceTarget:Y,onCodexPermissionModeChange:Z,onCodexReasoningEffortChange:ee,onOpenPondCommandAccessModeChange:A,onModelChange:te,onOpenAttachmentInSidebar:se,onOpenFileInSidebar:ie,onOpenProfileSettings:oe,onOpenSession:ne,onProviderChange:ae,onProviderSetupOpen:re,onPromptChange:ce,onProfileTargetChange:de,onScrollStateChange:le,onProjectTargetChange:ue,onResolveApproval:me,onShowBrowserPanel:S,onStop:he,onSubmit:x,onWorkspaceTargetChange:fe}){const w=a.useRef(null),[v]=a.useState(()=>new qe),R=a.useRef(g?.stickyToBottom??!0),M=a.useRef(!1),N=Ue(L,t.runtimeSource==="live"?t.sessionId:null),s=a.useMemo(()=>{if(t.runtimeSource==="history"||!t.sessionId)return t;const o=N.events,l=we(o,[]);return{...t,messages:Ce(v.project(o),t.pendingUserMessage),createImproveRun:je({events:o}),contextWindowStatus:Ie({provider:t.provider,snapshot:ye(l,t.sessionId),preferences:C}),goalRuntime:Re(l,t.sessionId)}},[v,C,N,t]),u=s.running&&!s.pendingApproval&&ze(s.messages),f=a.useMemo(()=>s.createImproveRun?{...j,run:s.createImproveRun}:null,[s.createImproveRun,j]),F=a.useMemo(()=>He(s.messages,{showThinkingIndicator:u}),[s.messages,u]),E=$e(s.messages,s.sessionId??`draft:${s.id}`),p=s.messages.at(-1),I=a.useMemo(()=>Ke(s.messages),[s.messages]),B=De({connection:b,latestTurnId:p?.turnId??null,sessionId:s.sessionId,turnRunning:s.running}),$=[s.id,s.sessionId??"draft",F.length,p?.id??"",p?.content?.length??0,p?.timestamp??"",u?"thinking":""].join(":");a.useLayoutEffect(()=>{const o=w.current;!o||M.current||(M.current=!0,o.scrollTop=g?.stickyToBottom?o.scrollHeight:g?.scrollTop??0)},[g]),Ve({contentKey:$,onContentChange:o=>{R.current&&(o.scrollTop=o.scrollHeight)},threadRef:w});const c=a.useCallback((o,l)=>{const k=s.sessionId??`side-chat:${s.id}`;Pe({conversationId:k,href:o,explicitFile:l?.explicitFile,newTab:l?.newTab}).then(m=>{m&&S()})},[s.id,s.sessionId,S]),pe=a.useCallback(async(o,l)=>{const k=l.action==="answer"?l.text:"Dismiss this question";if(!await x([],null,null,{displayPrompt:k,promptOverride:k,turnMetadata:{userQuestionResolution:l}}))throw new Error("The question response could not be sent.")},[x]);return i.jsxs("section",{className:`right-chat-pane ${s.pendingApproval?"has-approval":""}`,id:`right-chat-panel-${s.id}`,role:"tabpanel","aria-labelledby":`right-chat-tab-${s.id}`,children:[i.jsx("div",{className:"chat-thread right-chat-thread",ref:w,onScroll:o=>{const l=o.currentTarget;R.current=l.scrollHeight-l.scrollTop-l.clientHeight<=72,le({scrollTop:l.scrollTop,stickyToBottom:R.current})},children:F.map(o=>o.type==="thinking"?i.jsx(Le,{},o.id):i.jsx(Oe,{activeWorkspaceAppId:s.activeWorkspaceAppId,accountBaseUrl:G,billingOrganizationSlug:X,billingTeamId:_,connection:b,animateInitialContent:o.message.role==="assistant"&&E.has(o.message.id),kvCacheSummary:We(o.message,I)&&o.message.turnId?B.get(o.message.turnId)??null:null,message:o.message,onOpenBrowserLink:c,onOpenAttachmentInSidebar:se,onOpenFileInSidebar:ie,onOpenProfileSettings:oe,onResolveUserQuestion:pe,onOpenSession:ne,userAttachmentDisplay:t.provider==="codex"?"compact":"full",workspaceRootPath:s.workspaceRootPath,showFooter:o.showFooter},o.id))}),i.jsxs("div",{className:`composer-stack dock right-chat-composer ${s.pendingApproval?"has-approval":""}`,children:[i.jsx(Qe,{approval:s.pendingApproval,onResolve:me}),i.jsx(Ge,{mode:"dock",prompt:t.prompt,mentionApps:H,connectedAppMentions:z,profileSkills:t.provider==="codex"?K:V,profileTarget:t.provider==="codex"?null:T,selectedMentionAppId:null,contextWindowStatus:s.contextWindowStatus,goalRuntime:s.goalRuntime,createImproveRuntime:f,busy:s.running,running:s.running,steerActiveResponses:O,submissionScopeKey:s.sessionId??s.id,showProjectFooter:!1,connection:b,providerSettings:Q,provider:t.provider,model:t.model,projectTarget:W,actionCatalog:y,workspaceTarget:Y,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:t.provider==="codex"?P:s.session?.openPondCommandAccessMode??P,onProviderChange:ae,onProviderSetupOpen:re,onProjectTargetChange:ue,onWorkspaceTargetChange:fe,onModelChange:te,onCodexPermissionModeChange:Z,onCodexReasoningEffortChange:ee,onOpenPondCommandAccessModeChange:A,onPromptChange:ce,onProfileTargetChange:de,onMentionAppSelect:void 0,showToast:J,onSubmit:x,onStop:he})]})]})}function lt({panels:t,runtimeEventStore:L,actionCatalog:y=[],createImproveActions:j,contextCompaction:C,steerActiveResponses:O,busy:g,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:P,connection:b,connectedAppMentions:z,mentionApps:H,codexPersonalSkills:K,profileSkills:V=[],profileLibrary:T={lastUsed:null,profiles:[]},extensionCatalog:W,projectTarget:Q,providerSettings:G,accountBaseUrl:X,billingOrganizationSlug:_,billingTeamId:J,showToast:Y,workspaceTarget:Z,onAddChat:ee,onActivatePanel:A,onClosePanel:te,onCodexPermissionModeChange:se,onCodexReasoningEffortChange:ie,onOpenPondCommandAccessModeChange:oe,onModelChange:ne,onOpenAttachmentInSidebar:ae,onOpenFileInSidebar:re,onOpenProfileSettings:ce,onOpenSession:de,onProviderChange:le,onProviderSetupOpen:ue,onPromptChange:me,onProfileTargetChange:S,onScrollStateChange:he,onProjectTargetChange:x,onResolveApproval:fe,onResizeStart:w,onSelectFiles:v,onShowBrowserPanel:R,onStop:M,onSubmit:N,onWorkspaceTargetChange:s}){const[u,f]=a.useState(!1),[F,E]=a.useState(()=>Te(t)?.id??null),p=a.useRef(null),I=a.useRef(new Map),B=a.useRef(new Set(t.map(e=>e.id))),$=a.useRef(new Map(t.map(e=>[e.id,e.activationVersion]))),c=t.find(e=>e.id===F)??t.at(-1)??null,pe=c?.session?.currentProfile??T.lastUsed,o=Ae(T,pe),l=o?Se(o,W):V,k=o?[...y.filter(e=>!Me(e)),...Ne(o)]:y;a.useEffect(()=>{const e=B.current,d=$.current;let r=null,h=null;for(const n of t)e.has(n.id)||(r=n),e.has(n.id)&&n.activationVersion>(d.get(n.id)??0)&&(h=n);B.current=new Set(t.map(n=>n.id)),$.current=new Map(t.map(n=>[n.id,n.activationVersion])),E(n=>h?h.id:r?r.id:n&&t.some(D=>D.id===n)?n:t.at(-1)?.id??null)},[t]),a.useEffect(()=>{if(!u)return;function e(r){p.current?.contains(r.target)||f(!1)}function d(r){r.key==="Escape"&&f(!1)}return document.addEventListener("pointerdown",e),document.addEventListener("keydown",d),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",d)}},[u]);const m=a.useCallback((e,d=!1)=>{E(e),A(e),d&&window.requestAnimationFrame(()=>I.current.get(e)?.focus())},[A]),ge=a.useCallback((e=!1)=>{v(),e&&window.requestAnimationFrame(()=>{document.getElementById("right-sidebar-files-tab")?.focus()})},[v]),ke=a.useCallback((e,d)=>{const r=t.findIndex(xe=>xe.id===d);if(r<0)return;const h=r+1;let n=null;if(e.key==="ArrowRight"&&(n=(h+1)%(t.length+1)),e.key==="ArrowLeft"&&(n=(h-1+t.length+1)%(t.length+1)),e.key==="Home"&&(n=0),e.key==="End"&&(n=t.length),n===null)return;if(e.preventDefault(),n===0){ge(!0);return}const D=t[n-1];D&&m(D.id,!0)},[t,ge,m]),be=a.useCallback(e=>{if(!["ArrowRight","ArrowLeft","Home","End"].includes(e.key)||(e.preventDefault(),e.key==="Home"))return;const d=e.key==="ArrowLeft"||e.key==="End"?t.at(-1):t[0];d&&m(d.id,!0)},[t,m]);return i.jsxs("aside",{className:"workspace-diff-panel right-chat-panel-stack","aria-label":"Side chats",children:[i.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize side chat panel",onPointerDown:w}),i.jsx("div",{className:"workspace-diff-topbar right-chat-topbar",children:i.jsxs("div",{className:"workspace-diff-tabs",role:"tablist","aria-label":"Right sidebar views",children:[i.jsxs("button",{type:"button",className:"workspace-diff-tab",role:"tab",id:"right-sidebar-files-tab","aria-controls":"right-sidebar-files-panel","aria-selected":!1,tabIndex:-1,onClick:()=>ge(!1),onKeyDown:be,children:[i.jsx(ve,{size:14}),i.jsx("span",{children:"Files"})]}),t.map(e=>{const d=e.id===c?.id;return i.jsxs("div",{className:`workspace-diff-tab right-chat-tab ${d?"active":""}`,children:[i.jsxs("button",{type:"button",className:"workspace-diff-tab-main",role:"tab",id:`right-chat-tab-${e.id}`,"aria-controls":`right-chat-panel-${e.id}`,"aria-selected":d,tabIndex:d?0:-1,title:e.title,ref:r=>{r?I.current.set(e.id,r):I.current.delete(e.id)},onClick:()=>m(e.id),onKeyDown:r=>ke(r,e.id),children:[e.running?i.jsx("span",{className:"right-chat-status-dot","aria-label":"Running"}):null,i.jsx("span",{children:e.title})]}),i.jsx("button",{type:"button",className:"workspace-diff-tab-close",title:`Close ${e.title}`,"aria-label":`Close ${e.title}`,onClick:r=>{r.stopPropagation(),te(e.id)},children:i.jsx(Fe,{size:12})})]},e.id)}),i.jsxs("div",{className:"workspace-diff-add-anchor",ref:p,children:[i.jsx("button",{type:"button",className:`workspace-diff-add-tab ${u?"active":""}`,title:"Add to right sidebar","aria-label":"Add to right sidebar","aria-haspopup":"menu","aria-expanded":u,onClick:()=>f(e=>!e),children:i.jsx(Ee,{size:15})}),u?i.jsxs("div",{className:"workspace-diff-add-menu right-chat-add-popover",role:"menu",children:[i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{f(!1),ee()},children:[i.jsx(Be,{size:13}),i.jsx("span",{children:"New task"})]}),i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{f(!1),v()},children:[i.jsx(ve,{size:13}),i.jsx("span",{children:"Files"})]})]}):null]})]})}),i.jsx("div",{className:"right-chat-stack-body panes-1",children:c?i.jsx(Xe,{busy:g,createImproveActions:j,contextCompaction:C,steerActiveResponses:O,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:P,connection:b,connectedAppMentions:z,actionCatalog:k,mentionApps:H,codexPersonalSkills:K,profileSkills:l,profileTarget:null,panel:c,runtimeEventStore:L,initialScrollState:{scrollTop:c.scrollTop,stickyToBottom:c.stickyToBottom},projectTarget:Q,providerSettings:G,accountBaseUrl:X,billingOrganizationSlug:_,billingTeamId:J,showToast:Y,workspaceTarget:Z,onCodexPermissionModeChange:se,onCodexReasoningEffortChange:ie,onOpenPondCommandAccessModeChange:e=>oe(e,c.session),onModelChange:e=>ne(c.id,e),onOpenAttachmentInSidebar:ae,onOpenFileInSidebar:re,onOpenProfileSettings:ce,onOpenSession:de,onProviderChange:e=>le(c.id,e),onProviderSetupOpen:ue,onPromptChange:e=>me(c.id,e),onProfileTargetChange:e=>S(c.sessionId,e),onScrollStateChange:e=>he(c.id,e),onProjectTargetChange:x,onResolveApproval:fe,onShowBrowserPanel:R,onStop:()=>M(c.sessionId),onSubmit:(e,d,r,h)=>N(c.id,e,d,r,h),onWorkspaceTargetChange:s},c.id):null})]})}export{lt as RightChatPanelStack};
1
+ import{r as a,j as i}from"./index-667pXXsu.js";import{F as ve}from"./folder-open-bii4KUCv.js";import{du as we,dv as Re,dw as ye,dx as Ie,a2 as je,a6 as Ce,aj as Pe,dy as Te,a7 as Ae,a8 as Se,ac as Me,a9 as Ne,X as Fe,P as Ee,aq as Be}from"./App-BoJQRfeu.js";import{u as $e,a as De,T as Le,M as Oe}from"./Messages-ftYRMKYa.js";import{d as qe,u as Ue,s as ze,e as He,l as Ke,f as Ve,i as We,A as Qe,g as Ge}from"./MainPane-Di-Rwe7x.js";import"./chevron-up-NbP9vY4E.js";import"./MarkdownText-dK4SBPp_.js";import"./chat-file-links-Bmz9kVct.js";import"./desktop-files-BQj1J-ob.js";import"./arrow-up-right-C5X-29oa.js";import"./play-DB3XFAnG.js";import"./refresh-cw-0zSLZtfp.js";import"./cloud-upload-BAycsdHL.js";import"./square-CRytZWR_.js";function Xe({panel:t,runtimeEventStore:L,actionCatalog:I,createImproveActions:j,contextCompaction:C,steerActiveResponses:O,initialScrollState:g,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:P,connection:b,connectedAppMentions:z,mentionApps:H,codexPersonalSkills:K,profileSkills:V,profileTarget:T,projectTarget:W,providerSettings:Q,accountBaseUrl:G,billingOrganizationSlug:X,billingTeamId:_,showToast:J,workspaceTarget:Y,onCodexPermissionModeChange:Z,onCodexReasoningEffortChange:ee,onOpenPondCommandAccessModeChange:A,onModelChange:te,onOpenAttachmentInSidebar:se,onOpenFileInSidebar:ie,onOpenProfileSettings:oe,onOpenSession:ne,onProviderChange:ae,onProviderSetupOpen:re,onPromptChange:ce,onProfileTargetChange:de,onScrollStateChange:le,onProjectTargetChange:ue,onResolveApproval:me,onShowBrowserPanel:S,onStop:he,onSubmit:x,onWorkspaceTargetChange:fe}){const w=a.useRef(null),[v]=a.useState(()=>new qe),R=a.useRef(g?.stickyToBottom??!0),M=a.useRef(!1),N=Ue(L,t.runtimeSource==="live"?t.sessionId:null),s=a.useMemo(()=>{if(t.runtimeSource==="history"||!t.sessionId)return t;const o=N.events,l=we(o,[]);return{...t,messages:Ce(v.project(o),t.pendingUserMessage),createImproveRun:je({events:o}),contextWindowStatus:ye({provider:t.provider,snapshot:Ie(l,t.sessionId),preferences:C}),goalRuntime:Re(l,t.sessionId)}},[v,C,N,t]),u=s.running&&!s.pendingApproval&&ze(s.messages),f=a.useMemo(()=>s.createImproveRun?{...j,run:s.createImproveRun}:null,[s.createImproveRun,j]),F=a.useMemo(()=>He(s.messages,{showThinkingIndicator:u}),[s.messages,u]),E=$e(s.messages,s.sessionId??`draft:${s.id}`),p=s.messages.at(-1),y=a.useMemo(()=>Ke(s.messages),[s.messages]),B=De({connection:b,latestTurnId:p?.turnId??null,sessionId:s.sessionId,turnRunning:s.running}),$=[s.id,s.sessionId??"draft",F.length,p?.id??"",p?.content?.length??0,p?.timestamp??"",u?"thinking":""].join(":");a.useLayoutEffect(()=>{const o=w.current;!o||M.current||(M.current=!0,o.scrollTop=g?.stickyToBottom?o.scrollHeight:g?.scrollTop??0)},[g]),Ve({contentKey:$,onContentChange:o=>{R.current&&(o.scrollTop=o.scrollHeight)},threadRef:w});const c=a.useCallback((o,l)=>{const k=s.sessionId??`side-chat:${s.id}`;Pe({conversationId:k,href:o,explicitFile:l?.explicitFile,newTab:l?.newTab}).then(m=>{m&&S()})},[s.id,s.sessionId,S]),pe=a.useCallback(async(o,l)=>{const k=l.action==="answer"?l.text:"Dismiss this question";if(!await x([],null,null,{displayPrompt:k,promptOverride:k,turnMetadata:{userQuestionResolution:l}}))throw new Error("The question response could not be sent.")},[x]);return i.jsxs("section",{className:`right-chat-pane ${s.pendingApproval?"has-approval":""}`,id:`right-chat-panel-${s.id}`,role:"tabpanel","aria-labelledby":`right-chat-tab-${s.id}`,children:[i.jsx("div",{className:"chat-thread right-chat-thread",ref:w,onScroll:o=>{const l=o.currentTarget;R.current=l.scrollHeight-l.scrollTop-l.clientHeight<=72,le({scrollTop:l.scrollTop,stickyToBottom:R.current})},children:F.map(o=>o.type==="thinking"?i.jsx(Le,{},o.id):i.jsx(Oe,{activeWorkspaceAppId:s.activeWorkspaceAppId,accountBaseUrl:G,billingOrganizationSlug:X,billingTeamId:_,connection:b,animateInitialContent:o.message.role==="assistant"&&E.has(o.message.id),kvCacheSummary:We(o.message,y)&&o.message.turnId?B.get(o.message.turnId)??null:null,message:o.message,onOpenBrowserLink:c,onOpenAttachmentInSidebar:se,onOpenFileInSidebar:ie,onOpenProfileSettings:oe,onResolveUserQuestion:pe,onOpenSession:ne,userAttachmentDisplay:t.provider==="codex"?"compact":"full",workspaceRootPath:s.workspaceRootPath,showFooter:o.showFooter},o.id))}),i.jsxs("div",{className:`composer-stack dock right-chat-composer ${s.pendingApproval?"has-approval":""}`,children:[i.jsx(Qe,{approval:s.pendingApproval,onResolve:me}),i.jsx(Ge,{mode:"dock",prompt:t.prompt,mentionApps:H,connectedAppMentions:z,profileSkills:t.provider==="codex"?K:V,profileTarget:t.provider==="codex"?null:T,selectedMentionAppId:null,contextWindowStatus:s.contextWindowStatus,goalRuntime:s.goalRuntime,createImproveRuntime:f,busy:s.running,running:s.running,steerActiveResponses:O,submissionScopeKey:s.sessionId??s.id,showProjectFooter:!1,connection:b,providerSettings:Q,provider:t.provider,model:t.model,projectTarget:W,actionCatalog:I,workspaceTarget:Y,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:t.provider==="codex"?P:s.session?.openPondCommandAccessMode??P,onProviderChange:ae,onProviderSetupOpen:re,onProjectTargetChange:ue,onWorkspaceTargetChange:fe,onModelChange:te,onCodexPermissionModeChange:Z,onCodexReasoningEffortChange:ee,onOpenPondCommandAccessModeChange:A,onPromptChange:ce,onProfileTargetChange:de,onMentionAppSelect:void 0,showToast:J,onSubmit:x,onStop:he})]})]})}function lt({panels:t,runtimeEventStore:L,actionCatalog:I=[],createImproveActions:j,contextCompaction:C,steerActiveResponses:O,busy:g,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:P,connection:b,connectedAppMentions:z,mentionApps:H,codexPersonalSkills:K,profileSkills:V=[],profileLibrary:T={lastUsed:null,profiles:[]},extensionCatalog:W,projectTarget:Q,providerSettings:G,accountBaseUrl:X,billingOrganizationSlug:_,billingTeamId:J,showToast:Y,workspaceTarget:Z,onAddChat:ee,onActivatePanel:A,onClosePanel:te,onCodexPermissionModeChange:se,onCodexReasoningEffortChange:ie,onOpenPondCommandAccessModeChange:oe,onModelChange:ne,onOpenAttachmentInSidebar:ae,onOpenFileInSidebar:re,onOpenProfileSettings:ce,onOpenSession:de,onProviderChange:le,onProviderSetupOpen:ue,onPromptChange:me,onProfileTargetChange:S,onScrollStateChange:he,onProjectTargetChange:x,onResolveApproval:fe,onResizeStart:w,onSelectFiles:v,onShowBrowserPanel:R,onStop:M,onSubmit:N,onWorkspaceTargetChange:s}){const[u,f]=a.useState(!1),[F,E]=a.useState(()=>Te(t)?.id??null),p=a.useRef(null),y=a.useRef(new Map),B=a.useRef(new Set(t.map(e=>e.id))),$=a.useRef(new Map(t.map(e=>[e.id,e.activationVersion]))),c=t.find(e=>e.id===F)??t.at(-1)??null,pe=c?.session?.currentProfile??T.lastUsed,o=Ae(T,pe),l=o?Se(o,W):V,k=o?[...I.filter(e=>!Me(e)),...Ne(o)]:I;a.useEffect(()=>{const e=B.current,d=$.current;let r=null,h=null;for(const n of t)e.has(n.id)||(r=n),e.has(n.id)&&n.activationVersion>(d.get(n.id)??0)&&(h=n);B.current=new Set(t.map(n=>n.id)),$.current=new Map(t.map(n=>[n.id,n.activationVersion])),E(n=>h?h.id:r?r.id:n&&t.some(D=>D.id===n)?n:t.at(-1)?.id??null)},[t]),a.useEffect(()=>{if(!u)return;function e(r){p.current?.contains(r.target)||f(!1)}function d(r){r.key==="Escape"&&f(!1)}return document.addEventListener("pointerdown",e),document.addEventListener("keydown",d),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",d)}},[u]);const m=a.useCallback((e,d=!1)=>{E(e),A(e),d&&window.requestAnimationFrame(()=>y.current.get(e)?.focus())},[A]),ge=a.useCallback((e=!1)=>{v(),e&&window.requestAnimationFrame(()=>{document.getElementById("right-sidebar-files-tab")?.focus()})},[v]),ke=a.useCallback((e,d)=>{const r=t.findIndex(xe=>xe.id===d);if(r<0)return;const h=r+1;let n=null;if(e.key==="ArrowRight"&&(n=(h+1)%(t.length+1)),e.key==="ArrowLeft"&&(n=(h-1+t.length+1)%(t.length+1)),e.key==="Home"&&(n=0),e.key==="End"&&(n=t.length),n===null)return;if(e.preventDefault(),n===0){ge(!0);return}const D=t[n-1];D&&m(D.id,!0)},[t,ge,m]),be=a.useCallback(e=>{if(!["ArrowRight","ArrowLeft","Home","End"].includes(e.key)||(e.preventDefault(),e.key==="Home"))return;const d=e.key==="ArrowLeft"||e.key==="End"?t.at(-1):t[0];d&&m(d.id,!0)},[t,m]);return i.jsxs("aside",{className:"workspace-diff-panel right-chat-panel-stack","aria-label":"Side chats",children:[i.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize side chat panel",onPointerDown:w}),i.jsx("div",{className:"workspace-diff-topbar right-chat-topbar",children:i.jsxs("div",{className:"workspace-diff-tabs",role:"tablist","aria-label":"Right sidebar views",children:[i.jsxs("button",{type:"button",className:"workspace-diff-tab",role:"tab",id:"right-sidebar-files-tab","aria-controls":"right-sidebar-files-panel","aria-selected":!1,tabIndex:-1,onClick:()=>ge(!1),onKeyDown:be,children:[i.jsx(ve,{size:14}),i.jsx("span",{children:"Files"})]}),t.map(e=>{const d=e.id===c?.id;return i.jsxs("div",{className:`workspace-diff-tab right-chat-tab ${d?"active":""}`,children:[i.jsxs("button",{type:"button",className:"workspace-diff-tab-main",role:"tab",id:`right-chat-tab-${e.id}`,"aria-controls":`right-chat-panel-${e.id}`,"aria-selected":d,tabIndex:d?0:-1,title:e.title,ref:r=>{r?y.current.set(e.id,r):y.current.delete(e.id)},onClick:()=>m(e.id),onKeyDown:r=>ke(r,e.id),children:[e.running?i.jsx("span",{className:"right-chat-status-dot","aria-label":"Running"}):null,i.jsx("span",{children:e.title})]}),i.jsx("button",{type:"button",className:"workspace-diff-tab-close",title:`Close ${e.title}`,"aria-label":`Close ${e.title}`,onClick:r=>{r.stopPropagation(),te(e.id)},children:i.jsx(Fe,{size:12})})]},e.id)}),i.jsxs("div",{className:"workspace-diff-add-anchor",ref:p,children:[i.jsx("button",{type:"button",className:`workspace-diff-add-tab ${u?"active":""}`,title:"Add to right sidebar","aria-label":"Add to right sidebar","aria-haspopup":"menu","aria-expanded":u,onClick:()=>f(e=>!e),children:i.jsx(Ee,{size:15})}),u?i.jsxs("div",{className:"workspace-diff-add-menu right-chat-add-popover",role:"menu",children:[i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{f(!1),ee()},children:[i.jsx(Be,{size:13}),i.jsx("span",{children:"New task"})]}),i.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{f(!1),v()},children:[i.jsx(ve,{size:13}),i.jsx("span",{children:"Files"})]})]}):null]})]})}),i.jsx("div",{className:"right-chat-stack-body panes-1",children:c?i.jsx(Xe,{busy:g,createImproveActions:j,contextCompaction:C,steerActiveResponses:O,codexPermissionMode:q,codexReasoningEffort:U,openPondCommandAccessMode:P,connection:b,connectedAppMentions:z,actionCatalog:k,mentionApps:H,codexPersonalSkills:K,profileSkills:l,profileTarget:null,panel:c,runtimeEventStore:L,initialScrollState:{scrollTop:c.scrollTop,stickyToBottom:c.stickyToBottom},projectTarget:Q,providerSettings:G,accountBaseUrl:X,billingOrganizationSlug:_,billingTeamId:J,showToast:Y,workspaceTarget:Z,onCodexPermissionModeChange:se,onCodexReasoningEffortChange:ie,onOpenPondCommandAccessModeChange:e=>oe(e,c.session),onModelChange:e=>ne(c.id,e),onOpenAttachmentInSidebar:ae,onOpenFileInSidebar:re,onOpenProfileSettings:ce,onOpenSession:de,onProviderChange:e=>le(c.id,e),onProviderSetupOpen:ue,onPromptChange:e=>me(c.id,e),onProfileTargetChange:e=>S(c.sessionId,e),onScrollStateChange:e=>he(c.id,e),onProjectTargetChange:x,onResolveApproval:fe,onShowBrowserPanel:R,onStop:()=>M(c.sessionId),onSubmit:(e,d,r,h)=>N(c.id,e,d,r,h),onWorkspaceTargetChange:s},c.id):null})]})}export{lt as RightChatPanelStack};
@@ -1 +1 @@
1
- import{j as e}from"./index-KwyAyscP.js";import{b5 as f,bg as x,aR as j,aq as u,aY as g,t as k}from"./App-DxecRQUL.js";import{C as w}from"./clipboard-DwEExyU4.js";import{F as S}from"./folder-open-CAOLduKD.js";import{M as v}from"./minimize-2-DzHQnInk.js";function D({expanded:i,terminalOpen:s,sideChatAvailable:r,onOpenBrowser:l,onOpenFiles:t,onOpenReview:o,onOpenSideChat:n,onOpenTrainingDraft:d,trainingDraftAvailable:c,onResizeStart:b,onToggleExpanded:m,onToggleTerminal:h}){const p=[{id:"review",label:"Review",meta:"Diffs",icon:w,onSelect:o},{id:"files",label:"Files",meta:"Workspace",icon:S,onSelect:t},{id:"browser",label:"Browser",meta:"Preview",icon:j,onSelect:l},{id:"side-chat",label:"Side chat",meta:"Context",icon:u,onSelect:n,disabled:!r},{id:"training-draft",label:"Task draft",meta:"Training",icon:g,onSelect:d,disabled:!c},{id:"terminal",label:s?"Hide terminal":"Terminal",meta:"Shell",icon:k,onSelect:h}];return e.jsxs("aside",{className:`workspace-diff-panel right-sidebar-home-panel ${i?"expanded":""}`,"aria-label":"Right sidebar",children:[i?null:e.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize right sidebar",onPointerDown:b}),e.jsxs("div",{className:"workspace-diff-topbar right-sidebar-home-topbar",children:[e.jsx("div",{className:"workspace-diff-tabs",role:"tablist","aria-label":"Right sidebar views",children:e.jsxs("button",{type:"button",className:"workspace-diff-tab active",role:"tab","aria-selected":!0,children:[e.jsx(f,{size:14}),e.jsx("span",{children:"Workspace"})]})}),e.jsx("div",{className:"workspace-diff-toolbar-actions",children:e.jsx("button",{type:"button",className:"diff-icon-button",title:i?"Dock sidebar":"Expand sidebar","aria-label":i?"Dock sidebar":"Expand sidebar",onClick:m,children:i?e.jsx(v,{size:14}):e.jsx(x,{size:14})})})]}),e.jsx("div",{className:"right-sidebar-home-body",children:e.jsx("div",{className:"right-sidebar-home-actions",role:"menu","aria-label":"Workspace actions",children:p.map(a=>e.jsxs("button",{type:"button",className:"right-sidebar-home-row",role:"menuitem",disabled:a.disabled,onClick:a.onSelect,children:[e.jsx(a.icon,{size:15}),e.jsx("span",{children:a.label}),a.meta?e.jsx("span",{className:"right-sidebar-home-chip",children:a.meta}):null]},a.id))})})]})}export{D as RightSidebarHomePanel};
1
+ import{j as e}from"./index-667pXXsu.js";import{b5 as f,bg as x,aR as j,aq as u,aY as g,t as k}from"./App-BoJQRfeu.js";import{C as w}from"./clipboard-fvHMXPWa.js";import{F as S}from"./folder-open-bii4KUCv.js";import{M as v}from"./minimize-2-DtI1vgd7.js";function D({expanded:i,terminalOpen:s,sideChatAvailable:r,onOpenBrowser:l,onOpenFiles:t,onOpenReview:o,onOpenSideChat:n,onOpenTrainingDraft:d,trainingDraftAvailable:c,onResizeStart:b,onToggleExpanded:m,onToggleTerminal:h}){const p=[{id:"review",label:"Review",meta:"Diffs",icon:w,onSelect:o},{id:"files",label:"Files",meta:"Workspace",icon:S,onSelect:t},{id:"browser",label:"Browser",meta:"Preview",icon:j,onSelect:l},{id:"side-chat",label:"Side chat",meta:"Context",icon:u,onSelect:n,disabled:!r},{id:"training-draft",label:"Task draft",meta:"Training",icon:g,onSelect:d,disabled:!c},{id:"terminal",label:s?"Hide terminal":"Terminal",meta:"Shell",icon:k,onSelect:h}];return e.jsxs("aside",{className:`workspace-diff-panel right-sidebar-home-panel ${i?"expanded":""}`,"aria-label":"Right sidebar",children:[i?null:e.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize right sidebar",onPointerDown:b}),e.jsxs("div",{className:"workspace-diff-topbar right-sidebar-home-topbar",children:[e.jsx("div",{className:"workspace-diff-tabs",role:"tablist","aria-label":"Right sidebar views",children:e.jsxs("button",{type:"button",className:"workspace-diff-tab active",role:"tab","aria-selected":!0,children:[e.jsx(f,{size:14}),e.jsx("span",{children:"Workspace"})]})}),e.jsx("div",{className:"workspace-diff-toolbar-actions",children:e.jsx("button",{type:"button",className:"diff-icon-button",title:i?"Dock sidebar":"Expand sidebar","aria-label":i?"Dock sidebar":"Expand sidebar",onClick:m,children:i?e.jsx(v,{size:14}):e.jsx(x,{size:14})})})]}),e.jsx("div",{className:"right-sidebar-home-body",children:e.jsx("div",{className:"right-sidebar-home-actions",role:"menu","aria-label":"Workspace actions",children:p.map(a=>e.jsxs("button",{type:"button",className:"right-sidebar-home-row",role:"menuitem",disabled:a.disabled,onClick:a.onSelect,children:[e.jsx(a.icon,{size:15}),e.jsx("span",{children:a.label}),a.meta?e.jsx("span",{className:"right-sidebar-home-chip",children:a.meta}):null]},a.id))})})]})}export{D as RightSidebarHomePanel};
@@ -1 +1 @@
1
- import{r as d,j as e}from"./index-KwyAyscP.js";import{o as C,p as je,aS as pe,dn as be,bg as ve,X as ye,aF as re,A as we,u as Ne,aw as U,dp as ge}from"./App-DxecRQUL.js";import{R as q,u as ke}from"./useLocalAgentSchedules-iZNB4Oee.js";import{a as Se,P as B,T as ie}from"./chat-file-links-B3jDstSC.js";import{P as G}from"./play-p3-AMTPL.js";import{R as Re}from"./refresh-cw-_jbTIzzr.js";import{S as Ce}from"./save-Cy6hEotx.js";import{M as Ae}from"./minimize-2-DzHQnInk.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(K(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(K(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(K(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 K(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 X({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 He(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 Ke({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:c,onToggle:f,onToggleDetailExpanded:u,pending:h,runs:a,workflow:r}){return e.jsxs(X,{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(G,{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(()=>Ge(g,r),[r,g]),D=d.useMemo(()=>Xe(a.schedules,r),[r,a.schedules]),M=d.useMemo(()=>He(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]),H=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:H,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(Ke,{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(X,{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(G,{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,H]=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(X,{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=>H(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(G,{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 Ge(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 Xe(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,Xe as filterAndSortLocalSchedules,Ge 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-667pXXsu.js";import{o as C,p as je,aS as pe,dq as be,bg as ve,X as ye,aF as re,A as we,u as Ne,aw as U,dr as ge}from"./App-BoJQRfeu.js";import{R as q,u as ke}from"./useLocalAgentSchedules-qI87RHVI.js";import{a as Se,P as B,T as ie}from"./chat-file-links-Bmz9kVct.js";import{P as G}from"./play-DB3XFAnG.js";import{R as Re}from"./refresh-cw-0zSLZtfp.js";import{S as Ce}from"./save-BCZlshOA.js";import{M as Ae}from"./minimize-2-DtI1vgd7.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(K(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(K(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(K(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 K(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 X({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 He(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 Ke({detailExpanded:s,onClose:t,onDelete:n,onDetailResizeStart:l,onRun:c,onToggle:f,onToggleDetailExpanded:u,pending:h,runs:a,workflow:r}){return e.jsxs(X,{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(G,{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(()=>Ge(g,r),[r,g]),D=d.useMemo(()=>Xe(a.schedules,r),[r,a.schedules]),M=d.useMemo(()=>He(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]),H=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:H,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(Ke,{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(X,{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(G,{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,H]=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(X,{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=>H(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(G,{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 Ge(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 Xe(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,Xe as filterAndSortLocalSchedules,Ge as filterAndSortSchedules,A as formatScheduledRunAt,le as hostedConversationUrl,fe as localScheduleCadence,es as scheduleCadence,Be as scheduledRows};