openpond 0.2.52 → 0.2.53

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 (136) hide show
  1. package/dist/app-server.d.ts +1 -0
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{app-layer-RRFI27N4.js → app-layer-I7MZYVLL.js} +1 -1
  4. package/dist/chunks/{app-server-runtime-NITNSHYS.js → app-server-runtime-KZP2LB5X.js} +1 -1
  5. package/dist/chunks/{apps-NELJL377.js → apps-TM74FFQB.js} +1 -1
  6. package/dist/chunks/{chunk-CFLMKFOE.js → chunk-3LX6RU3C.js} +2 -2
  7. package/dist/chunks/{chunk-7YR6CBNU.js → chunk-4SHKI3BH.js} +1 -1
  8. package/dist/chunks/{chunk-7MXZJQS7.js → chunk-4TZHH5FC.js} +1 -1
  9. package/dist/chunks/{chunk-T5T7NCHJ.js → chunk-5TNDPNS3.js} +1 -1
  10. package/dist/chunks/{chunk-AV3WI7JZ.js → chunk-6JAN4RMN.js} +1 -1
  11. package/dist/chunks/{chunk-OE2VF6KU.js → chunk-6VF3Q6QJ.js} +1 -1
  12. package/dist/chunks/{chunk-PVSUQGWK.js → chunk-7ZG3IT7C.js} +1 -1
  13. package/dist/chunks/{chunk-EPY7M5XS.js → chunk-AFUDIT36.js} +1 -1
  14. package/dist/chunks/{chunk-Q4H3NUVW.js → chunk-AH22RHPS.js} +2 -2
  15. package/dist/chunks/{chunk-DLZP22WV.js → chunk-FPUUZQUP.js} +1 -1
  16. package/dist/chunks/{chunk-ZBZBV5TB.js → chunk-GCOUYYHG.js} +1 -1
  17. package/dist/chunks/{chunk-MASJQWA2.js → chunk-GXSTZBM6.js} +1 -1
  18. package/dist/chunks/{chunk-IOQUF34U.js → chunk-H2VT22JK.js} +1 -1
  19. package/dist/chunks/{chunk-L3V4QKRV.js → chunk-NHFGEVVH.js} +1 -1
  20. package/dist/chunks/{chunk-HJEY5LBD.js → chunk-PQHTZ5CP.js} +1 -1
  21. package/dist/chunks/{chunk-QJRXTIOC.js → chunk-USKE34VR.js} +1 -1
  22. package/dist/chunks/{chunk-XC7AHL57.js → chunk-XGE2XI6M.js} +44 -44
  23. package/dist/chunks/{chunk-FQZFLNLY.js → chunk-YD55Z5H3.js} +1 -1
  24. package/dist/chunks/{chunk-RLZPX4YP.js → chunk-YJ4PNAST.js} +1 -1
  25. package/dist/chunks/{cli-ZYFSCHZK.js → cli-JVB345H2.js} +1 -1
  26. package/dist/chunks/{configuration-command-SA56RV5B.js → configuration-command-MATM4XR5.js} +1 -1
  27. package/dist/chunks/{connected-evidence-IVSQZYIB.js → connected-evidence-YDPGNHLP.js} +1 -1
  28. package/dist/chunks/{core-commands-W5IGIITV.js → core-commands-MTV4EKXY.js} +1 -1
  29. package/dist/chunks/{datasets-KSO2UG6R.js → datasets-CP3IT47T.js} +1 -1
  30. package/dist/chunks/{desktop-test-6HXFM7PO.js → desktop-test-IAZC5MAH.js} +1 -1
  31. package/dist/chunks/{dist-5VFPYEIV.js → dist-SAABJU5F.js} +1 -1
  32. package/dist/chunks/{evaluation-coordination-MOFBXRXN.js → evaluation-coordination-EPHLZXYM.js} +1 -1
  33. package/dist/chunks/{experiment-improvements-TDHM6NEA.js → experiment-improvements-6JTOPA74.js} +1 -1
  34. package/dist/chunks/{experiments-HFPDFD4I.js → experiments-XHPFGECH.js} +1 -1
  35. package/dist/chunks/{extension-R373LYIB.js → extension-GX7DLW2X.js} +1 -1
  36. package/dist/chunks/{help-PEFQDDTA.js → help-WLKSACLZ.js} +1 -1
  37. package/dist/chunks/{hosted-experiment-improvement-MGBPXXW2.js → hosted-experiment-improvement-HAB3UE6A.js} +1 -1
  38. package/dist/chunks/{hosted-harness-runtime-WOLADXXP.js → hosted-harness-runtime-YM23QNDK.js} +1 -1
  39. package/dist/chunks/{hosted-profile-candidate-LVNKOTKJ.js → hosted-profile-candidate-EOBGKQAS.js} +1 -1
  40. package/dist/chunks/{hosted-profile-compiler-NBMUCZVS.js → hosted-profile-compiler-OZAOZ2ES.js} +1 -1
  41. package/dist/chunks/{hosted-profile-evaluation-control-7B3RAZU2.js → hosted-profile-evaluation-control-RJ6XJZCS.js} +1 -1
  42. package/dist/chunks/{hosted-profile-evaluation-inspection-FPCV42DD.js → hosted-profile-evaluation-inspection-SJIDXPHI.js} +1 -1
  43. package/dist/chunks/{hosted-profile-evaluation-preparation-I6H6RFT6.js → hosted-profile-evaluation-preparation-26EI5LJR.js} +1 -1
  44. package/dist/chunks/{human-review-HRGGACEM.js → human-review-AAVMISBF.js} +1 -1
  45. package/dist/chunks/{import-RSAQ44GG.js → import-V3HUGRHR.js} +1 -1
  46. package/dist/chunks/{opchat-I7ZWJ5XK.js → opchat-QK43DXTY.js} +1 -1
  47. package/dist/chunks/{organizations-LFCZIH7E.js → organizations-SRPAWKC7.js} +1 -1
  48. package/dist/chunks/{profile-EPIX5QVK.js → profile-C6CQNVYE.js} +1 -1
  49. package/dist/chunks/{project-agent-DGOPMECP.js → project-agent-GZV5HNYI.js} +1 -1
  50. package/dist/chunks/{sandbox-command-Q5F6VUOS.js → sandbox-command-4TJXQTKT.js} +1 -1
  51. package/dist/chunks/{sandbox-template-7GICPIKJ.js → sandbox-template-BBGGPJMI.js} +1 -1
  52. package/dist/chunks/{src-DH5AQ4Z7.js → src-CR6UZYTX.js} +1 -1
  53. package/dist/chunks/{src-MGP3OYHL.js → src-P3VYLFLI.js} +109 -109
  54. package/dist/chunks/{teams-bot-Z6RJGHME.js → teams-bot-7I4BAUVO.js} +1 -1
  55. package/dist/cli.js +1 -1
  56. package/dist/web/assets/App-CO2F717V.css +1 -0
  57. package/dist/web/assets/{App-Dg6mZIQk.js → App-CuhaCsfb.js} +65 -64
  58. package/dist/web/assets/{AppDialog-gcj3rrTZ.js → AppDialog-BdusXgU0.js} +1 -1
  59. package/dist/web/assets/{AppTerminalPanel-Be-E4qZF.js → AppTerminalPanel-C4uRpnBz.js} +2 -2
  60. package/dist/web/assets/{AppsView-BdyPNSpT.js → AppsView-BS1czXUP.js} +1 -1
  61. package/dist/web/assets/{BrowserSidebar-CcQxU0uO.js → BrowserSidebar-Bl7V6YO2.js} +1 -1
  62. package/dist/web/assets/{CartesianChart-CN5hB6rV.js → CartesianChart-BstFbsdn.js} +1 -1
  63. package/dist/web/assets/{CollaborationTabs-BiDPHgXG.js → CollaborationTabs-B8YAf0c1.js} +1 -1
  64. package/dist/web/assets/{CommandMenu-B2qJCgWH.js → CommandMenu-DZct7zUJ.js} +1 -1
  65. package/dist/web/assets/{CommunityView-D1aOQKfS.js → CommunityView-CR0-W-uG.js} +1 -1
  66. package/dist/web/assets/{ComposerCreateImproveStrip-f1tdD0QS.js → ComposerCreateImproveStrip-DR-Qo7b4.js} +1 -1
  67. package/dist/web/assets/{GetStartedView-CPYs0fYN.js → GetStartedView-xqQoMMei.js} +1 -1
  68. package/dist/web/assets/HostedModelLearningReview-CHxxf_Lu.js +1 -0
  69. package/dist/web/assets/{HostedModelLearningSettings-IEKRXOkG.js → HostedModelLearningSettings-De3i9wF4.js} +1 -1
  70. package/dist/web/assets/{LabModelVersionDetailPage-DkIa0oG_.js → LabModelVersionDetailPage-DAY1MmqP.js} +1 -1
  71. package/dist/web/assets/{LabSkillSidebar-BUlU1Ti-.js → LabSkillSidebar-DLnIgnry.js} +1 -1
  72. package/dist/web/assets/{LabsRoute-8cKFNq19.js → LabsRoute-CXJRJMhr.js} +4 -4
  73. package/dist/web/assets/{MainChatThread-C5GwaIl_.js → MainChatThread-BwAla81W.js} +2 -2
  74. package/dist/web/assets/{MainPane-SMqq5YAM.js → MainPane-CakOBCHw.js} +4 -4
  75. package/dist/web/assets/{MarkdownText-CLnvdLVg.js → MarkdownText-gJMuefaJ.js} +1 -1
  76. package/dist/web/assets/{NativeSkillSidebar-B9bVb00x.js → NativeSkillSidebar-Dlxb8iOC.js} +1 -1
  77. package/dist/web/assets/{NewExperienceSwitcher-CelgG7Ua.js → NewExperienceSwitcher-DM-cqJ-K.js} +1 -1
  78. package/dist/web/assets/{NewProjectDialog-eEnsg9s2.js → NewProjectDialog-Cu1q75gq.js} +1 -1
  79. package/dist/web/assets/{OutputsPage-ByvsTUW-.js → OutputsPage-DiXMkasl.js} +1 -1
  80. package/dist/web/assets/{ProjectsPage-Cl2zFh8X.js → ProjectsPage-DqiBHiCB.js} +1 -1
  81. package/dist/web/assets/{RightChatPanelStack-MnGscF87.js → RightChatPanelStack-VaOOmxwd.js} +1 -1
  82. package/dist/web/assets/{RightSidebarHomePanel-C6NXMYuy.js → RightSidebarHomePanel-CeSFJM5s.js} +1 -1
  83. package/dist/web/assets/{ScheduledWorkPage-DCb6d7Lg.js → ScheduledWorkPage-D1jRQxFs.js} +1 -1
  84. package/dist/web/assets/{SettingsView-BMFfrxmo.js → SettingsView-RA9OXgcu.js} +3 -3
  85. package/dist/web/assets/{TeamChatView-DW_v2B9E.js → TeamChatView-DM0adMtj.js} +1 -1
  86. package/dist/web/assets/{TerminalOverlay-BJ7qsr9F.js → TerminalOverlay-CFlH51DD.js} +1 -1
  87. package/dist/web/assets/{TrainingCreationPanel-GSIwP6f1.js → TrainingCreationPanel-CgIBVGha.js} +1 -1
  88. package/dist/web/assets/{TrainingDraftPanel-DorY6I29.js → TrainingDraftPanel-Bbo3RRie.js} +1 -1
  89. package/dist/web/assets/{UsageSettingsSection-DmzStI9q.js → UsageSettingsSection-CSRjJUSa.js} +1 -1
  90. package/dist/web/assets/{WorkSidebarPanel-zsJrGaaL.js → WorkSidebarPanel-DwlEMEoG.js} +1 -1
  91. package/dist/web/assets/WorkspaceDiffPanel-pGVezNMw.js +14 -0
  92. package/dist/web/assets/{WorkspaceEnvironmentMenu-vJw9hE0y.js → WorkspaceEnvironmentMenu-Byjngd9V.js} +1 -1
  93. package/dist/web/assets/{WorkspaceGitDialogs-BpL-xtRX.js → WorkspaceGitDialogs-Dgmg-6XG.js} +1 -1
  94. package/dist/web/assets/{WorkspaceMonacoEditor-CJ3x0GHH.js → WorkspaceMonacoEditor-BR4qxMgU.js} +3 -3
  95. package/dist/web/assets/{arrow-up-right-C60QSULo.js → arrow-up-right-H0pvnH2s.js} +1 -1
  96. package/dist/web/assets/{chunk-UHVJOMWN-BxgPi0yP.js → chunk-UHVJOMWN-BqXRe639.js} +1 -1
  97. package/dist/web/assets/{clipboard-QIy0Jd_K.js → clipboard-BZzZ82Bk.js} +1 -1
  98. package/dist/web/assets/{cloud-upload-B9L-_gy0.js → cloud-upload-CJPYPVl8.js} +1 -1
  99. package/dist/web/assets/{cssMode-ffPyPUW9.js → cssMode-WC4Rg1l-.js} +1 -1
  100. package/dist/web/assets/{folder-open-BFy7KXWm.js → folder-open-sLZJxLQy.js} +1 -1
  101. package/dist/web/assets/{folder-plus-C3iGtUOI.js → folder-plus-C84wrpt_.js} +1 -1
  102. package/dist/web/assets/{git-commit-horizontal-DsTniKvi.js → git-commit-horizontal-Cotm7KEC.js} +1 -1
  103. package/dist/web/assets/{htmlMode-7ytlsiyK.js → htmlMode-C6oZGeaB.js} +1 -1
  104. package/dist/web/assets/{index-BK8GmZmB.js → index-BxWTVKtn.js} +2 -2
  105. package/dist/web/assets/index-dSmk3FLJ.css +1 -0
  106. package/dist/web/assets/{info-C8mwoaIJ.js → info-Dc81lEfw.js} +1 -1
  107. package/dist/web/assets/{jsonMode-BT35NJi4.js → jsonMode-BET4LQIn.js} +1 -1
  108. package/dist/web/assets/{lspLanguageFeatures-BKAwIewO.js → lspLanguageFeatures-BPxA_-Kg.js} +1 -1
  109. package/dist/web/assets/{minimize-2-34MApatV.js → minimize-2-Bs7MVN3C.js} +1 -1
  110. package/dist/web/assets/{monaco.contribution-CxtX0z-m.js → monaco.contribution-7AUuf2NS.js} +2 -2
  111. package/dist/web/assets/{monaco.contribution-9diduNNi.js → monaco.contribution-BH6kkO4b.js} +2 -2
  112. package/dist/web/assets/{monaco.contribution-DVnPUDsR.js → monaco.contribution-DFzEyaHi.js} +2 -2
  113. package/dist/web/assets/{monaco.contribution-Dj4R5U8Z.js → monaco.contribution-DXzyQfVi.js} +2 -2
  114. package/dist/web/assets/{monitor-4JxqJ7wz.js → monitor-DXL019Wf.js} +1 -1
  115. package/dist/web/assets/{play-C4PtpamL.js → play-CXkxUZeU.js} +1 -1
  116. package/dist/web/assets/{python-0GVncePC.js → python-PzBkTjWx.js} +1 -1
  117. package/dist/web/assets/{save-DjB16eou.js → save-DpezrtH2.js} +1 -1
  118. package/dist/web/assets/{square-Coz7UQqd.js → square-oy7f5Ce6.js} +1 -1
  119. package/dist/web/assets/{toggleHighContrast-D-3108_3.js → toggleHighContrast-Cto-fOXm.js} +1 -1
  120. package/dist/web/assets/{tsMode-CV4ktqqR.js → tsMode-BYA4LNc6.js} +1 -1
  121. package/dist/web/assets/{upload-D007T9Hm.js → upload-C5YFNgtS.js} +1 -1
  122. package/dist/web/assets/{useLocalAgentSchedules-BXjFbAVS.js → useLocalAgentSchedules-CnyTsqlf.js} +1 -1
  123. package/dist/web/assets/useProviderSettings-B_KeQjE5.js +5 -0
  124. package/dist/web/assets/{useSessionTurnCache-Bee6zbC_.js → useSessionTurnCache-DICuJSJW.js} +1 -1
  125. package/dist/web/assets/{wifi-off-BbNZc0za.js → wifi-off-nzHj7JXp.js} +1 -1
  126. package/dist/web/assets/{workers-DNQ5ne3z.js → workers-Dboaw6f_.js} +1 -1
  127. package/dist/web/assets/{yaml-BfAho-gB.js → yaml-uuY5JmO8.js} +1 -1
  128. package/dist/web/index.html +2 -2
  129. package/package.json +1 -1
  130. package/dist/web/assets/App-DkH8CeoI.css +0 -1
  131. package/dist/web/assets/HostedModelLearningReview-DVfJyUW_.js +0 -1
  132. package/dist/web/assets/WorkspaceDiffPanel-CiFsZjMm.js +0 -14
  133. package/dist/web/assets/index-C0H85uUI.css +0 -1
  134. package/dist/web/assets/useProviderSettings-SY7mp-5B.js +0 -5
  135. /package/dist/chunks/{chunk-XDMUD4FW.js → chunk-2JO2KWT3.js} +0 -0
  136. /package/dist/chunks/{chunk-XBCIBAXD.js → chunk-GS2NKNKG.js} +0 -0
@@ -1 +1 @@
1
- import{r as i}from"./index-BK8GmZmB.js";import{G as s}from"./App-Dg6mZIQk.js";const m=5e3;function _(t){const[h,n]=i.useState([]),[y,r]=i.useState(!1),[p,l]=i.useState(null),[o,w]=i.useState(()=>new Set);i.useEffect(()=>{if(!t){n([]),l(null),r(!1);return}const e=t;let a=!1;async function d(S){if(!a){S&&r(!0);try{const g=await s.localAgentSchedules(e);if(a)return;n(g.schedules),l(null)}catch(g){a||l(f(g))}finally{!a&&S&&r(!1)}}}d(!0);const u=window.setInterval(()=>{d(!1)},m);return()=>{a=!0,window.clearInterval(u)}},[t]);async function A(){if(t){r(!0);try{const e=await s.syncLocalAgentSchedules(t);n(e.schedules),l(null)}catch(e){l(f(e))}finally{r(!1)}}}async function E(e){if(!(!t||o.has(e.id))){c(e.id,!0);try{await s.runLocalAgentSchedule(t,e.id);const a=await s.localAgentSchedules(t);n(a.schedules),l(null)}catch(a){l(f(a))}finally{c(e.id,!1)}}}async function L(e){if(!(!t||o.has(e.id))){c(e.id,!0);try{await s.patchLocalAgentSchedule(t,e.id,{enabled:!e.enabled});const a=await s.localAgentSchedules(t);n(a.schedules),l(null)}catch(a){l(f(a))}finally{c(e.id,!1)}}}function c(e,a){w(d=>{const u=new Set(d);return a?u.add(e):u.delete(e),u})}return{error:p,loading:y,pendingScheduleIds:o,refresh:A,run:E,schedules:h,toggle:L}}function f(t){return t instanceof Error?t.message:String(t)}export{_ as u};
1
+ import{r as i}from"./index-BxWTVKtn.js";import{G as s}from"./App-CuhaCsfb.js";const m=5e3;function _(t){const[h,n]=i.useState([]),[y,r]=i.useState(!1),[p,l]=i.useState(null),[o,w]=i.useState(()=>new Set);i.useEffect(()=>{if(!t){n([]),l(null),r(!1);return}const e=t;let a=!1;async function d(S){if(!a){S&&r(!0);try{const g=await s.localAgentSchedules(e);if(a)return;n(g.schedules),l(null)}catch(g){a||l(f(g))}finally{!a&&S&&r(!1)}}}d(!0);const u=window.setInterval(()=>{d(!1)},m);return()=>{a=!0,window.clearInterval(u)}},[t]);async function A(){if(t){r(!0);try{const e=await s.syncLocalAgentSchedules(t);n(e.schedules),l(null)}catch(e){l(f(e))}finally{r(!1)}}}async function E(e){if(!(!t||o.has(e.id))){c(e.id,!0);try{await s.runLocalAgentSchedule(t,e.id);const a=await s.localAgentSchedules(t);n(a.schedules),l(null)}catch(a){l(f(a))}finally{c(e.id,!1)}}}async function L(e){if(!(!t||o.has(e.id))){c(e.id,!0);try{await s.patchLocalAgentSchedule(t,e.id,{enabled:!e.enabled});const a=await s.localAgentSchedules(t);n(a.schedules),l(null)}catch(a){l(f(a))}finally{c(e.id,!1)}}}function c(e,a){w(d=>{const u=new Set(d);return a?u.add(e):u.delete(e),u})}return{error:p,loading:y,pendingScheduleIds:o,refresh:A,run:E,schedules:h,toggle:L}}function f(t){return t instanceof Error?t.message:String(t)}export{_ as u};
@@ -0,0 +1,5 @@
1
+ import{r as d,j as e}from"./index-BxWTVKtn.js";import{c as Ne,l as Pe,bl as G,al as oe,as as ce,an as de,ck as ke,z as ue,bs as Se,co as we,cp as Z,bo as Ee,X as Me,m as Ae,D as Oe,G as B,$ as se}from"./App-CuhaCsfb.js";import{S as De}from"./save-DpezrtH2.js";import{T as te}from"./MarkdownText-gJMuefaJ.js";const Re=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],F=Ne("key-round",Re);function $e(n){const i=d.useRef(null),f=d.useRef(n);return f.current=n,d.useEffect(()=>{const a=document.activeElement instanceof HTMLElement?document.activeElement:null,s=()=>[...i.current?.querySelectorAll('button:not(:disabled), input:not(:disabled), select:not(:disabled), a[href], [tabindex="0"]')??[]].filter(u=>u.getClientRects().length>0);s()[0]?.focus();const b=u=>{if(document.querySelector(".native-setup-terminal")||(u.key==="Escape"&&(u.preventDefault(),u.stopPropagation(),f.current()),u.key!=="Tab"))return;const l=s(),N=l[0],O=l.at(-1);u.shiftKey&&document.activeElement===N?(u.preventDefault(),O?.focus()):!u.shiftKey&&document.activeElement===O&&(u.preventDefault(),N?.focus())};return document.addEventListener("keydown",b),()=>{document.removeEventListener("keydown",b),a?.isConnected&&a.focus()}},[]),i}const K=["codex","claude-code","grok-build","opencode"];function V(n){return["claude-code","grok-build","opencode"].includes(n)}const Te={codex:{executable:"codex",install:"https://developers.openai.com/codex/cli"},"claude-code":{executable:"claude",install:"https://code.claude.com/docs/en/setup"},"grok-build":{executable:"grok",install:"https://docs.x.ai/build/cli"},opencode:{executable:"opencode",install:"https://opencode.ai/docs"}},J=(n,i)=>JSON.stringify([n||"",i||""]);function le({connection:n,providerId:i,config:f,status:a,cachedModels:s,busy:b,onCheck:u}){const[l,N]=d.useState(null),[O,E]=d.useState(null),[x,_]=d.useState(null),[v,P]=d.useState(!1),[k,M]=d.useState(f.binaryPath??""),[j,D]=d.useState(f.sourceHome??""),t=d.useRef(null),p=d.useRef(null),y=d.useRef(u);y.current=u;const R=Te[i],S=J(f.binaryPath,f.sourceHome),A=J(k.trim(),j.trim())!==S,g=b||v||l!==null,w=d.useCallback(async c=>{t.current?.abort();const h=new AbortController;t.current=h;const $=setTimeout(()=>h.abort(new Error("Connection check timed out. Retry when the agent is available.")),45e3);P(!0),E(null);try{const z=await y.current(i,h.signal,c);t.current===h&&!h.signal.aborted&&_(z)}catch(z){t.current===h&&E(z instanceof Error?z.message:"Could not check the agent.")}finally{clearTimeout($),t.current===h&&(t.current=null,P(!1))}},[i]);d.useEffect(()=>{if(M(f.binaryPath??""),D(f.sourceHome??""),p.current===S){p.current=null;return}N(null),_(null),w()},[w,S,f.binaryPath,f.sourceHome,n?.serverUrl,n?.token]),d.useEffect(()=>()=>{const c=t.current;t.current=null,c?.abort()},[]);async function L(c){c.preventDefault(),!(!A||g)&&(p.current=J(k.trim(),j.trim()),await w({binaryPath:k.trim()||null,sourceHome:j.trim()||null}),p.current=null)}async function T(){if(!n||x?.status!=="needs_login")return;const c=new AbortController,h=setTimeout(()=>c.abort(),1e4);t.current?.abort(),t.current=c,P(!0),E(null);try{const $=await ue(n,`/v1/providers/${i}/native-setup`,{method:"POST",body:JSON.stringify({action:"login"}),signal:c.signal});t.current===c&&!c.signal.aborted&&N($.command)}catch($){t.current===c&&E($ instanceof Error?$.message:"Could not open native login.")}finally{clearTimeout(h),t.current===c&&(t.current=null,P(!1))}}const o=x?.settings.modelCaches[i]?.models??s,r=[...new Set(o.map(c=>Pe(c.displayName||c.id)))],m=O??x?.error;return e.jsxs("div",{className:"provider-dialog-body native-agent-setup",children:[e.jsxs("p",{children:["Uses your existing ",a.displayName," installation and login."]}),e.jsxs("div",{className:"native-connection-status",children:[e.jsx("div",{role:"status","aria-live":"polite",children:v?e.jsxs(e.Fragment,{children:[e.jsx(G,{size:16,className:"settings-spin"}),e.jsx("span",{children:"Checking connection…"})]}):x?.status==="ready"?e.jsxs(e.Fragment,{children:[e.jsx(oe,{size:16}),e.jsx("span",{children:f.enabled?"Connected":"Connected, disabled for chat"})]}):e.jsxs(e.Fragment,{children:[e.jsx(ce,{size:16}),e.jsx("span",{children:x?.status==="missing"?"Installation not found":x?.status==="needs_login"?"Sign in required":"Connection needs attention"})]})}),e.jsxs("button",{type:"button",className:"settings-secondary",disabled:g||!n,onClick:()=>{w()},title:"Refresh connection","aria-label":"Refresh connection",children:[e.jsx(de,{size:14})," Refresh"]})]}),m?e.jsx("p",{role:"alert",children:m}):null,r.length?e.jsxs("section",{className:"native-model-section","aria-label":"Available models",children:[e.jsxs("div",{className:"native-model-heading",children:[e.jsx("h3",{children:"Models"}),e.jsxs("small",{children:[r.length," available"]})]}),e.jsx("div",{className:"native-model-list",tabIndex:0,"aria-label":"Models",role:"list",children:r.map(c=>e.jsx("span",{role:"listitem",children:c},c))}),e.jsx("small",{children:"Choose a model when starting a chat."})]}):null,x?.version?e.jsx("small",{className:"native-agent-version",children:x.version}):null,x?.status==="needs_login"?e.jsx("button",{type:"button",className:"settings-secondary",disabled:g||A||!n,title:A?"Save changes before signing in to a different installation":void 0,onClick:()=>{T()},children:"Sign in"}):null,x?.status==="missing"?e.jsxs("p",{children:[e.jsxs("a",{href:R.install,target:"_blank",rel:"noreferrer",children:["Install ",a.displayName]}),", then refresh this connection."]}):null,(O||x?.status==="unavailable")&&!v?e.jsx("button",{type:"button",className:"settings-secondary",disabled:g||!n,onClick:()=>{w()},children:"Retry"}):null,l&&n?e.jsx(ke,{connection:n,command:l,onComplete:()=>{N(null),w()},onClose:()=>{N(null),w()}}):null,V(i)?e.jsxs("details",{children:[e.jsx("summary",{children:"Advanced"}),e.jsxs("form",{className:"provider-card-form",onSubmit:c=>{L(c)},children:[e.jsxs("label",{className:"settings-select-field",children:[e.jsx("span",{children:"Executable"}),e.jsx("input",{value:k,placeholder:`${R.executable} from PATH, or an absolute path`,disabled:g,onChange:c=>M(c.currentTarget.value)})]}),e.jsxs("label",{className:"settings-select-field",children:[e.jsx("span",{children:"Source home"}),e.jsx("input",{value:j,placeholder:"Use the agent's existing home",disabled:g,onChange:c=>D(c.currentTarget.value)})]}),A?e.jsx("button",{className:"settings-secondary",disabled:g||!n,children:"Save changes"}):null]})]}):null]})}const _e=[{value:"local_secret",label:"Saved key",description:"Encrypted on this machine"},{value:"env",label:"Environment variable",description:"Read by the local server"}],ze=120,Ue=new Set(["openai","xai","zai"]),Le=new Set(["chatgpt-subscription"]),Be="https://api.z.ai/api/coding/paas/v4";function ae(n){return n.split(/[\n,]/).map(i=>i.trim()).filter(Boolean)}function he(n){return n?n.available?"Ready":n.credential.connected?"Configured":n.credential.lastError||n.lastError?"Needs attention":n.id==="codex"?"Needs Codex login":V(n.id)?"Check connection":n.routing.localByok?"Needs key":n.enabled?"Enabled":"Off":"Unknown"}function pe(n){return n?n.available?"ready":n.credential.connected?"configured":n.credential.lastError||n.lastError||n.id==="codex"?"warning":"muted":"unknown"}function ie(n){return n.credential.connected?n.credential.redacted?n.credential.redacted:n.credential.source==="native_agent_login"?"Native login":n.credential.source==="chatgpt_subscription"?"ChatGPT subscription":n.credential.source:n.credential.lastError??"Not connected"}function Ge(n){return n?.trim().replace(/\/+$/,"")??""}function me(n,i){return n.id==="zai"&&Ge(i.providers.zai?.baseUrl)===Be}function Fe(n,i){return!n.credential.connected||!n.routing.localByok?"":n.credential.source==="native_agent_login"?"Native login":n.credential.source==="chatgpt_subscription"?"Subscription":me(n,i)?"Coding Plan key":"API key"}function Ve(n,i){const f=i.modelCaches[n.id];if(n.routing.localByok&&n.enabled&&!n.credential.connected||!n.enabled&&n.id!=="openpond")return"";const a=Math.max(f?.models.length??0,n.modelIds.length),s=n.defaultModel?Ee(n.defaultModel,i,n.id):"",b=a===1?"1 model":`${a} models`;return[Fe(n,i),f?b:"",s].filter(Boolean).join(" · ")}function He(n){return n!=="openpond"&&Z(n)}function fe(n){return n?Ue.has(n.id)||n.credentialModes.some(i=>Le.has(i)):!1}function Ke(n){return fe(n)?["api","subscription"]:["api"]}function re(n,i){return!n||!i||!fe(n)?"api":n.credential.source==="chatgpt_subscription"||me(n,i)?"subscription":"api"}function qe(n){if(!n)return"Never";const i=new Date(n);return Number.isNaN(i.getTime())?n:i.toLocaleString()}function Je(n,i,f=ze){const a=[],s=new Set,b=new Set(i.map(l=>l.trim()).filter(Boolean)),u=l=>{s.has(l.value)||a.length>=f||(s.add(l.value),a.push(l))};for(const l of n)b.has(l.value)&&u(l);for(const l of n)u(l);return a}function nn({checkNativeProvider:n,connection:i,account:f,codex:a,providers:s,providerBusy:b,validationMessage:u,deleteProviderCredential:l,loadProviderModels:N,refreshProviderModels:O,saveProviderConfig:E,saveProviderCredential:x,startOpenAiSubscriptionAuth:_,validateProvider:v}){const[P,k]=d.useState(null),M=K.filter(t=>s?.statuses[t]),j=P?s?.statuses[P]??null:null;function D(t,p){k(t),p&&N(t)}return e.jsxs("section",{className:"account-settings provider-connections-settings",children:[e.jsx("h1",{children:"Providers"}),e.jsxs("div",{className:"provider-connections-intro",children:[e.jsx("p",{children:"Manage your installed agents and login. Sync their conversations from Connections."}),e.jsx("button",{type:"button",className:"settings-secondary",onClick:()=>{Se({kind:"view",view:"apps"})},children:"Connections & apps"})]}),s?e.jsx("div",{className:"provider-connections-panel",children:M.length>0?e.jsx("div",{className:"provider-connections-grid",role:"list",children:M.map(t=>{const p=s.statuses[t],y=s.modelCaches[t],R=p.modelIds.length>0&&(y?.models.length??0)<p.modelIds.length,S=b?.startsWith(`${t}:`)??!1,A=He(t),g=t==="openpond"||!!s.providers[t]?.enabled;return e.jsxs("div",{className:"provider-connection-card",role:"listitem",children:[e.jsxs("div",{className:"provider-connection-identity",children:[e.jsx("strong",{children:p.displayName}),e.jsxs("label",{className:"provider-toggle","aria-label":`Enable ${p.displayName}`,children:[e.jsx("input",{type:"checkbox",checked:g,disabled:!A||S,onChange:w=>{E(t,{enabled:w.currentTarget.checked})}}),e.jsx("span",{})]})]}),e.jsxs("div",{className:`provider-connection-status ${pe(p)}`,children:[S?e.jsx(G,{size:13,className:"settings-spin"}):null,e.jsx("span",{children:he(p)})]}),e.jsx("p",{children:Ve(p,s)||(p.enabled?"Check your installation and sign in to use this agent.":"Enable this agent to use it in chats.")}),t==="codex"||t==="claude-code"?e.jsx(we,{connection:i,provider:t}):null,e.jsx("button",{type:"button",className:"settings-secondary",onClick:()=>{D(t,R)},children:"Manage"})]},t)})}):e.jsx("div",{className:"empty-account-list provider-manager-empty",children:e.jsx("strong",{children:"No agent providers available"})})}):null,u?e.jsxs("div",{className:"settings-footnote provider-validation-message",children:[e.jsx("span",{children:"Last validation"}),e.jsx("strong",{children:u})]}):null,P&&j&&s?e.jsx(Ze,{checkNativeProvider:n,connection:i,account:f,codex:a,providerId:P,providerBusy:b,settings:s,status:j,onClose:()=>k(null),onDeleteCredential:l,onRefreshModels:O,onSaveConfig:E,onSaveCredential:x,onStartOpenAiSubscriptionAuth:_,onValidate:v}):null]})}function Ze({checkNativeProvider:n,connection:i,account:f,codex:a,providerId:s,providerBusy:b,settings:u,status:l,onClose:N,onDeleteCredential:O,onRefreshModels:E,onSaveConfig:x,onSaveCredential:_,onStartOpenAiSubscriptionAuth:v,onValidate:P,conversationPanel:k}){const M=$e(N),[j,D]=d.useState("setup"),t=d.useId(),p=u.providers[s],y=u.modelCaches[s],R=d.useId(),S=d.useRef(s),A=Math.max(y?.models.length??0,l.modelIds.length),g=l.routing.localByok&&Z(s)&&s!=="codex"&&!V(s),w=d.useMemo(()=>g?Ke(l):[],[g,l]),L=w.includes("subscription"),[T,o]=d.useState(()=>re(l,u)),r=g&&T==="subscription"&&L,m=h=>`${R}-${h}-panel`,c=s==="codex"?"Codex app server":p?.baseUrl??(s==="openpond"?f?.chatApiBaseUrl:null)??"Not set";return d.useEffect(()=>{if(S.current!==s){S.current=s,o(re(l,u));return}g&&!w.includes(T)&&o("api")},[T,w,g,s,u,l]),e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",role:"presentation",onMouseDown:N,children:e.jsxs("section",{ref:M,className:`git-dialog provider-details-dialog${k?" agent-setup-dialog":""}`,role:"dialog","aria-modal":"true","aria-label":`${l.displayName} provider details`,onMouseDown:h=>h.stopPropagation(),children:[e.jsx("button",{className:"git-dialog-close",type:"button",title:"Close","aria-label":"Close",onClick:N,children:e.jsx(Me,{size:16})}),e.jsxs("div",{className:"provider-dialog-header",children:[e.jsxs("div",{children:[e.jsx("h2",{children:l.displayName}),e.jsx("span",{children:K.includes(s)?"Installation and login":"API and subscription settings"})]}),e.jsx("div",{className:`provider-state-pill ${pe(l)}`,children:he(l)})]}),K.includes(s)&&p?e.jsxs("label",{className:"provider-chat-toggle",children:[e.jsxs("span",{className:"provider-toggle",children:[e.jsx("input",{type:"checkbox","aria-label":`Enable ${l.displayName} for chat`,checked:p.enabled,disabled:b!==null,onChange:h=>{x(s,{enabled:h.target.checked})}}),e.jsx("span",{"aria-hidden":"true"})]}),e.jsxs("span",{children:["Use ",l.displayName," for chats"]})]}):null,k?e.jsxs("div",{className:"surface-tabs provider-agent-tabs",role:"tablist","aria-label":"Agent settings",onKeyDown:h=>{if(h.key!=="ArrowLeft"&&h.key!=="ArrowRight")return;h.preventDefault();const $=j==="setup"?"sync":"setup";D($),h.currentTarget.querySelector(`#${CSS.escape(`${t}-${$}`)}`)?.focus()},children:[e.jsx("button",{type:"button",role:"tab",id:`${t}-setup`,"aria-controls":`${t}-setup-panel`,"aria-selected":j==="setup",tabIndex:j==="setup"?0:-1,onClick:()=>D("setup"),children:"Agent setup"}),e.jsx("button",{type:"button",role:"tab",id:`${t}-sync`,"aria-controls":`${t}-sync-panel`,"aria-selected":j==="sync",tabIndex:j==="sync"?0:-1,onClick:()=>D("sync"),children:"Conversation sync"})]}):null,e.jsxs("div",{hidden:j!=="setup",id:`${t}-setup-panel`,role:k?"tabpanel":void 0,"aria-labelledby":k?`${t}-setup`:void 0,children:[g?e.jsx("div",{className:"surface-tabs provider-mode-tabs",role:"tablist","aria-label":`${l.displayName} mode`,children:w.map(h=>e.jsx("button",{type:"button",role:"tab",id:`${R}-${h}`,className:T===h?"active":void 0,"aria-selected":T===h,"aria-controls":m(h),onClick:()=>o(h),children:h==="api"?"API":"Subscription"},h))}):null,K.includes(s)?null:e.jsxs("dl",{className:"provider-dialog-stats",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Credential"}),e.jsx("dd",{title:ie(l),children:ie(l)})]}),r?null:e.jsxs(e.Fragment,{children:[V(s)?null:e.jsxs("div",{children:[e.jsx("dt",{children:"Base URL"}),e.jsx("dd",{title:c,children:c})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Model"}),e.jsx("dd",{title:p?.defaultModel??l.defaultModel??void 0,children:p?.defaultModel??l.defaultModel??"Not set"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Models"}),e.jsxs("dd",{title:y?.lastError??void 0,children:[A," cached, ",qe(y?.fetchedAt)]})]})]}),s==="codex"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Account"}),e.jsx("dd",{title:a?.account?.email??void 0,children:a?.account?.label??a?.account?.email??"Not signed in"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Binary"}),e.jsx("dd",{title:a?.binaryPath??void 0,children:a?.binaryPath??"Not found"})]})]}):null,l.credential.lastError||y?.lastError||l.lastError?e.jsxs("div",{className:"provider-dialog-error",children:[e.jsx("dt",{children:"Error"}),e.jsx("dd",{title:l.credential.lastError??y?.lastError??l.lastError??void 0,children:l.credential.lastError??y?.lastError??l.lastError})]}):null]}),s==="codex"?e.jsxs(e.Fragment,{children:[p?e.jsx(le,{connection:i,providerId:s,config:p,status:l,cachedModels:y?.models??[],busy:b!==null,onCheck:n},s):null,e.jsxs("div",{className:"provider-dialog-body",children:[e.jsx("h3",{children:"ChatGPT with the OpenPond harness"}),e.jsx("p",{children:"Native Codex and the OpenPond harness keep their own connections. Choose the execution path in the model picker."}),e.jsx("p",{children:u.statuses.openai?.credential.connected?"OpenPond harness connected":"OpenPond harness not connected"}),e.jsx("button",{type:"button",className:"settings-secondary",disabled:b!==null,onClick:()=>{v("browser")},children:"Connect ChatGPT for OpenPond"}),e.jsxs("button",{type:"button",className:"settings-secondary",disabled:b!==null,onClick:()=>{x("openai",{enabled:!u.providers.openai?.enabled})},children:[u.providers.openai?.enabled?"Disable":"Enable"," OpenPond harness route"]})]})]}):V(s)&&p?e.jsx(le,{connection:i,providerId:s,config:p,status:l,cachedModels:y?.models??[],busy:b!==null,onCheck:n},s):g&&p&&y?e.jsx(We,{credentialTab:T,credentialTabsId:R,hasSubscriptionTab:L,providerId:s,providerBusy:b,settings:u,status:l,onDeleteCredential:O,onRefreshModels:E,onSaveConfig:x,onSaveCredential:_,onStartOpenAiSubscriptionAuth:v,onValidate:P}):l.routing.localByok&&!Z(s)?e.jsxs("div",{className:"provider-dialog-note",children:[e.jsx(ce,{size:15}),e.jsx("span",{children:"Adapter pending"})]}):null]}),j==="sync"?e.jsx("div",{role:"tabpanel",id:`${t}-sync-panel`,"aria-labelledby":`${t}-sync`,children:k}):null]})})}function We({credentialTab:n,credentialTabsId:i,hasSubscriptionTab:f,providerId:a,providerBusy:s,settings:b,status:u,onDeleteCredential:l,onRefreshModels:N,onSaveConfig:O,onSaveCredential:E,onStartOpenAiSubscriptionAuth:x,onValidate:_}){const v=b.providers[a],P=d.useMemo(()=>Ae(a,b),[a,b]),k=`provider-models-${a}`,M=d.useRef(a),[j,D]=d.useState(v.baseUrl??""),[t,p]=d.useState(v.defaultModel??""),[y,R]=d.useState(v.modelOverrides.join(`
2
+ `)),[S,A]=d.useState({baseUrl:!1,defaultModel:!1,modelOverrides:!1}),[g,w]=d.useState("local_secret"),[L,T]=d.useState(""),[o,r]=d.useState(""),m=s===`${a}:config`,c=s===`${a}:credential`,h=s===`${a}:validate`,$=s===`${a}:models`,z=s==="openai:credential",be=a==="openai",ge=a==="xai",W=a==="zai",H=(C=>`${i}-${C}-panel`)(n),X=n==="subscription"&&f,q=n==="subscription"&&W?"coding-plan":"api",Y=q==="coding-plan"?"Coding Plan key":"API key",ve=u.credential.connected?q==="coding-plan"?"Replace saved plan key":"Replace saved key":Y,xe=q==="coding-plan"?"Save plan key":"Save key",Q=d.useMemo(()=>Je(P,[t,...ae(y)]),[t,P,y]),I=Math.max(0,P.length-Q.length);d.useEffect(()=>{if(M.current!==a){M.current=a,A({baseUrl:!1,defaultModel:!1,modelOverrides:!1}),D(v.baseUrl??""),p(v.defaultModel??""),R(v.modelOverrides.join(`
3
+ `));return}S.baseUrl||D(v.baseUrl??""),S.defaultModel||p(v.defaultModel??""),S.modelOverrides||R(v.modelOverrides.join(`
4
+ `))},[v.baseUrl,v.defaultModel,v.modelOverrides,S.baseUrl,S.defaultModel,S.modelOverrides,a]);const ee=g==="env"?!!o.trim():!!L.trim();async function je(C){C.preventDefault(),await O(a,{enabled:!0,baseUrl:j.trim()||null,defaultModel:t.trim()||null,modelOverrides:ae(y)}),A({baseUrl:!1,defaultModel:!1,modelOverrides:!1})}async function ye(C){if(C.preventDefault(),!!ee){if(g==="env"){await E(a,{source:"env",envVar:o.trim()});return}await E(a,{source:"local_secret",value:L}),T("")}}function ne({panel:C=!0}={}){return e.jsxs("form",{className:"provider-credential-panel",id:C?H:void 0,role:C?"tabpanel":void 0,"aria-labelledby":C?`${i}-${n}`:void 0,onSubmit:U=>{ye(U)},children:[e.jsxs("div",{className:"provider-card-grid credential-grid",children:[e.jsxs("div",{className:"settings-select-field",children:[e.jsx("span",{children:"Credential source"}),e.jsx(Oe,{value:g,disabled:c,label:"Credential source",options:_e,onChange:U=>w(U)})]}),g==="env"?e.jsxs("label",{className:"settings-select-field",children:[e.jsx("span",{children:"Environment variable"}),e.jsx("input",{value:o,disabled:c,placeholder:"PROVIDER_API_KEY",onChange:U=>r(U.currentTarget.value)})]}):e.jsxs("label",{className:"settings-select-field",children:[e.jsx("span",{children:Y}),e.jsx("input",{type:"password",value:L,disabled:c,placeholder:ve,autoComplete:"off",onChange:U=>T(U.currentTarget.value)})]})]}),e.jsxs("div",{className:"settings-button-row",children:[e.jsxs("button",{className:"settings-secondary",disabled:c||!ee,children:[c?e.jsx(G,{size:14,className:"settings-spin"}):e.jsx(F,{size:14}),e.jsx("span",{children:c?"Saving":xe})]}),e.jsx("button",{type:"button",className:"settings-icon-button ghost","aria-label":`Delete ${u.displayName} credential`,disabled:c||!u.credential.connected,onClick:()=>{l(a)},children:e.jsx(te,{size:15})})]})]})}function Ce(){return be?e.jsxs("div",{className:"provider-subscription-panel",id:H,role:"tabpanel","aria-labelledby":`${i}-subscription`,children:[e.jsxs("div",{className:"provider-dialog-note codex-provider-note",children:[e.jsx(F,{size:15}),e.jsx("span",{children:"ChatGPT subscription auth opens OpenAI login and stores a refresh token locally. API keys remain available under the API tab for raw Platform billing."})]}),e.jsxs("div",{className:"settings-button-row",children:[e.jsxs("button",{type:"button",className:"settings-secondary",disabled:z,onClick:()=>{x("browser")},children:[z?e.jsx(G,{size:14,className:"settings-spin"}):e.jsx(F,{size:14}),e.jsx("span",{children:z?"Opening":"Connect ChatGPT"})]}),e.jsxs("button",{type:"button",className:"settings-secondary",disabled:z,onClick:()=>{x("device")},children:[z?e.jsx(G,{size:14,className:"settings-spin"}):e.jsx(F,{size:14}),e.jsx("span",{children:"Device code"})]}),e.jsx("button",{type:"button",className:"settings-icon-button ghost","aria-label":`Delete ${u.displayName} credential`,disabled:z||!u.credential.connected,onClick:()=>{l(a)},children:e.jsx(te,{size:15})})]})]}):ge?e.jsx("div",{className:"provider-subscription-panel",id:H,role:"tabpanel","aria-labelledby":`${i}-subscription`,children:e.jsxs("div",{className:"provider-dialog-note xai-provider-note",children:[e.jsx(F,{size:15}),e.jsx("span",{children:"SuperGrok includes Grok app and Grok Build access. xAI API calls here still use an xAI Console API key with API credits or invoiced billing, so there is no separate Connect SuperGrok step yet."})]})}):W?e.jsxs("div",{className:"provider-subscription-panel",id:H,role:"tabpanel","aria-labelledby":`${i}-subscription`,children:[e.jsxs("div",{className:"provider-dialog-note subscription-provider-note",children:[e.jsx(F,{size:15}),e.jsx("span",{children:"GLM Coding Plan uses a plan API key with the dedicated Coding endpoint. General Z.ai API keys and balances are separate."})]}),ne({panel:!1})]}):null}return e.jsxs("div",{className:"provider-dialog-body",children:[X?null:e.jsxs("form",{className:"provider-card-form",onSubmit:C=>{je(C)},children:[e.jsxs("div",{className:"provider-card-grid",children:[e.jsxs("label",{className:"settings-select-field",children:[e.jsx("span",{children:"Base URL"}),e.jsx("input",{value:j,disabled:m,placeholder:"https://api.example.com/v1",onChange:C=>{A(U=>({...U,baseUrl:!0})),D(C.currentTarget.value)}})]}),e.jsxs("label",{className:"settings-select-field",children:[e.jsx("span",{children:"Default model"}),e.jsx("input",{list:k,value:t,disabled:m,placeholder:"Model id",onChange:C=>{A(U=>({...U,defaultModel:!0})),p(C.currentTarget.value)}}),e.jsx("datalist",{id:k,children:Q.map(C=>e.jsx("option",{value:C.value,children:C.label},C.value))}),I>0?e.jsxs("small",{children:[I," more cached models hidden from suggestions"]}):null]})]}),e.jsxs("div",{className:"settings-button-row",children:[e.jsxs("button",{className:"settings-secondary",disabled:m,children:[m?e.jsx(G,{size:14,className:"settings-spin"}):e.jsx(De,{size:14}),e.jsx("span",{children:m?"Saving":"Save config"})]}),e.jsxs("button",{type:"button",className:"settings-secondary",disabled:$,onClick:()=>{N(a)},children:[$?e.jsx(G,{size:14,className:"settings-spin"}):e.jsx(de,{size:14}),e.jsx("span",{children:$?"Refreshing":"Refresh models"})]}),e.jsxs("button",{type:"button",className:"settings-secondary",disabled:h||!t.trim(),onClick:()=>{_(a,{baseUrl:j.trim()||void 0,modelId:t.trim()||void 0})},children:[h?e.jsx(G,{size:14,className:"settings-spin"}):e.jsx(oe,{size:14}),e.jsx("span",{children:h?"Testing":"Test"})]})]})]}),e.jsx("div",{className:"provider-card-form credential-form",children:X?Ce():ne()})]})}function sn({connection:n,onError:i,onPreferences:f,onProviders:a,preferences:s,providers:b}){const u=d.useRef(n);u.current=n;const[l,N]=d.useState(s.defaultChatProvider),[O,E]=d.useState(s.defaultChatModel),[x,_]=d.useState(!1),[v,P]=d.useState(null),[k,M]=d.useState(null);d.useEffect(()=>{N(s.defaultChatProvider),E(s.defaultChatModel)},[s.defaultChatProvider,s.defaultChatModel]);async function j(o){if(o.preventDefault(),!!n){_(!0),i(null);try{f(await B.savePreferences(n,{defaultChatProvider:l,defaultChatModel:se(l,O,b)}))}catch(r){i(r instanceof Error?r.message:String(r))}finally{_(!1)}}}function D(o){N(o),E(r=>se(o,r,b))}async function t(o,r,m){if(!n)return null;P(`${o}:${r}`),M(null),i(null);try{return await m()}catch(c){return i(c instanceof Error?c.message:String(c)),null}finally{P(null)}}async function p(o,r){await t(o,"config",async()=>{const m=await B.saveProviderSettings(n,{providers:{[o]:r}});return a(m),m})}async function y(o,r){await t(o,"credential",async()=>{const m=await B.saveProviderCredential(n,o,r);return a(m),m})}async function R(o){await t(o,"credential",async()=>{const r=await B.deleteProviderCredential(n,o,{});return a(r),r})}async function S(o){return t("openai","credential",async()=>{const r=await B.startOpenAiSubscriptionAuth(n,{method:o});return r.method==="browser"?(window.open(r.url,"_blank","noopener,noreferrer"),M("OpenAI ChatGPT login opened in your browser. Return here after authorization.")):(window.open(r.url,"_blank","noopener,noreferrer"),M(`OpenAI device login started. Enter code ${r.userCode}.`)),A(r.expiresAt),r})}async function A(o){if(n)for(;Date.now()<o;){await new Promise(r=>setTimeout(r,2500));try{const r=await B.providerSettings(n);a(r);const m=r.statuses.openai?.credential;if(m?.connected&&m.source==="chatgpt_subscription"){M("OpenAI ChatGPT subscription connected.");return}}catch{}}}async function g(o){await t(o,"models",async()=>{const r=await B.refreshProviderModels(n,o,{force:!0});return a(r.providers),r})}async function w(o){await t(o,"models",async()=>{const r=await B.loadProviderModels(n,o,{limit:500});return a(r.providers),r})}async function L(o,r={}){await t(o,"validate",async()=>{const m=await B.validateProviderCredential(n,o,r);return M(m.ok?`${o} validated${m.modelId?` with ${m.modelId}`:""}.`:m.errors.join(`
5
+ `)||`${o} validation failed.`),a(m.providers),m})}return{checkNativeProvider:async(o,r,m)=>{if(!n)throw new Error("Connect to the local OpenPond server first.");r.throwIfAborted(),m&&await B.saveProviderSettings(n,{providers:{[o]:m}}),r.throwIfAborted();const c=await ue(n,`/v1/providers/${o}/native-setup`,{method:"POST",body:JSON.stringify({action:"check"}),signal:r});if(r.throwIfAborted(),u.current?.serverUrl!==n.serverUrl||u.current?.token!==n.token)throw new DOMException("Connection changed","AbortError");return a(c.settings),c},defaultModel:O,defaultProvider:l,providerBusy:v,saving:x,validationMessage:k,changeDefaultProvider:D,deleteProviderCredential:R,loadProviderModels:w,refreshProviderModels:g,saveProviderConfig:p,saveProviderCredential:y,saveProviders:j,setDefaultModel:E,startOpenAiSubscriptionAuth:S,validateProvider:L}}export{F as K,nn as P,$e as a,Ze as b,sn as u};
@@ -1 +1 @@
1
- import{r as f}from"./index-BK8GmZmB.js";import{G as C}from"./App-Dg6mZIQk.js";function S(n,e,t){return new Set(n.filter(i=>{if(e.has(i.id))return!1;if(t===void 0)return!0;if(typeof i.timestamp!="string")return!1;const a=Date.parse(i.timestamp);return Number.isFinite(a)&&a>=t}).map(i=>i.id))}function v(n){let e=null;for(const t of n){if(typeof t.timestamp!="string")continue;const i=Date.parse(t.timestamp);Number.isFinite(i)&&(e=e===null?i:Math.max(e,i))}return e}function E(n,e){const t=f.useRef({scopeKey:e,ids:new Set(n.map(r=>r.id)),initialized:!1,liveCutoff:null}),i=t.current.scopeKey===e,d=i&&t.current.initialized?S(n,t.current.ids,t.current.liveCutoff??void 0):new Set;return f.useLayoutEffect(()=>{const r=t.current,s=r.scopeKey!==e,u=Date.now();t.current={scopeKey:e,ids:new Set(n.map(l=>l.id)),initialized:!s,liveCutoff:s?Math.max(u,v(n)??0):r.liveCutoff??Math.max(u,v(n)??0)}},[n,i,e]),d}const w=new Map,M=[200,600,1500];function x({connection:n,latestTurnId:e,sessionId:t,turnRunning:i}){const[a,d]=f.useState(()=>({sessionId:null,summaries:w}));return f.useEffect(()=>{if(!n||!t)return;let r=!1,s=null;const u=i?null:e,l=o=>{const c=M[o];c===void 0||r||(s=setTimeout(()=>{m(o+1)},c))},m=async o=>{try{const c=await C.usageTurnCache(n,t);if(r)return;const p=new Map(c.turns.map(h=>[h.turnId,h]));d({sessionId:t,summaries:p}),u&&!p.has(u)&&l(o)}catch{l(o)}};return m(0),()=>{r=!0,s!==null&&clearTimeout(s)}},[n,e,t,i]),a.sessionId===t?a.summaries:w}export{x as a,E as u};
1
+ import{r as f}from"./index-BxWTVKtn.js";import{G as C}from"./App-CuhaCsfb.js";function S(n,e,t){return new Set(n.filter(i=>{if(e.has(i.id))return!1;if(t===void 0)return!0;if(typeof i.timestamp!="string")return!1;const a=Date.parse(i.timestamp);return Number.isFinite(a)&&a>=t}).map(i=>i.id))}function v(n){let e=null;for(const t of n){if(typeof t.timestamp!="string")continue;const i=Date.parse(t.timestamp);Number.isFinite(i)&&(e=e===null?i:Math.max(e,i))}return e}function E(n,e){const t=f.useRef({scopeKey:e,ids:new Set(n.map(r=>r.id)),initialized:!1,liveCutoff:null}),i=t.current.scopeKey===e,d=i&&t.current.initialized?S(n,t.current.ids,t.current.liveCutoff??void 0):new Set;return f.useLayoutEffect(()=>{const r=t.current,s=r.scopeKey!==e,u=Date.now();t.current={scopeKey:e,ids:new Set(n.map(l=>l.id)),initialized:!s,liveCutoff:s?Math.max(u,v(n)??0):r.liveCutoff??Math.max(u,v(n)??0)}},[n,i,e]),d}const w=new Map,M=[200,600,1500];function x({connection:n,latestTurnId:e,sessionId:t,turnRunning:i}){const[a,d]=f.useState(()=>({sessionId:null,summaries:w}));return f.useEffect(()=>{if(!n||!t)return;let r=!1,s=null;const u=i?null:e,l=o=>{const c=M[o];c===void 0||r||(s=setTimeout(()=>{m(o+1)},c))},m=async o=>{try{const c=await C.usageTurnCache(n,t);if(r)return;const p=new Map(c.turns.map(h=>[h.turnId,h]));d({sessionId:t,summaries:p}),u&&!p.has(u)&&l(o)}catch{l(o)}};return m(0),()=>{r=!0,s!==null&&clearTimeout(s)}},[n,e,t,i]),a.sessionId===t?a.summaries:w}export{x as a,E as u};
@@ -1 +1 @@
1
- import{c as a}from"./App-Dg6mZIQk.js";const e=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],y=a("bell",e);const t=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]],c=a("bell-off",t);const o=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],k=a("scroll-text",o);const h=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],p=a("wifi-off",h);export{c as B,k as S,p as W,y as a};
1
+ import{c as a}from"./App-CuhaCsfb.js";const e=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],y=a("bell",e);const t=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]],c=a("bell-off",t);const o=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],k=a("scroll-text",o);const h=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],p=a("wifi-off",h);export{c as B,k as S,p as W,y as a};
@@ -1 +1 @@
1
- import{j7 as c}from"./WorkspaceMonacoEditor-CJ3x0GHH.js";import"./toggleHighContrast-D-3108_3.js";function a(e,o){const r=globalThis.MonacoEnvironment;if(r?.createTrustedTypesPolicy)try{return r.createTrustedTypesPolicy(e,o)}catch(t){console.error(t);return}try{return globalThis.trustedTypes?.createPolicy(e,o)}catch(t){console.error(t);return}}let n;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?n=globalThis.workerttPolicy:n=a("defaultWorkerFactory",{createScriptURL:e=>e});function l(e){const o=e.label,r=globalThis.MonacoEnvironment;if(r){if(typeof r.getWorker=="function")return r.getWorker("workerMain.js",o);if(typeof r.getWorkerUrl=="function"){const t=r.getWorkerUrl("workerMain.js",o);return new Worker(n?n.createScriptURL(t):t,{name:o,type:"module"})}}if(e.createWorker)return e.createWorker();throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function u(e){const o=Promise.resolve(l({label:e.label??"monaco-editor-worker",moduleId:e.moduleId,createWorker:e.createWorker})).then(r=>(r.postMessage("ignore"),r.postMessage(e.createData),r));return c.createWebWorker({worker:o,host:e.host,keepIdleModels:e.keepIdleModels})}export{u as c};
1
+ import{j7 as c}from"./WorkspaceMonacoEditor-BR4qxMgU.js";import"./toggleHighContrast-Cto-fOXm.js";function a(e,o){const r=globalThis.MonacoEnvironment;if(r?.createTrustedTypesPolicy)try{return r.createTrustedTypesPolicy(e,o)}catch(t){console.error(t);return}try{return globalThis.trustedTypes?.createPolicy(e,o)}catch(t){console.error(t);return}}let n;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?n=globalThis.workerttPolicy:n=a("defaultWorkerFactory",{createScriptURL:e=>e});function l(e){const o=e.label,r=globalThis.MonacoEnvironment;if(r){if(typeof r.getWorker=="function")return r.getWorker("workerMain.js",o);if(typeof r.getWorkerUrl=="function"){const t=r.getWorkerUrl("workerMain.js",o);return new Worker(n?n.createScriptURL(t):t,{name:o,type:"module"})}}if(e.createWorker)return e.createWorker();throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function u(e){const o=Promise.resolve(l({label:e.label??"monaco-editor-worker",moduleId:e.moduleId,createWorker:e.createWorker})).then(r=>(r.postMessage("ignore"),r.postMessage(e.createData),r));return c.createWebWorker({worker:o,host:e.host,keepIdleModels:e.keepIdleModels})}export{u as c};
@@ -1 +1 @@
1
- import{l as e}from"./WorkspaceMonacoEditor-CJ3x0GHH.js";import"./toggleHighContrast-D-3108_3.js";import"./index-BK8GmZmB.js";const r={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},l={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{r as conf,l as language};
1
+ import{l as e}from"./WorkspaceMonacoEditor-BR4qxMgU.js";import"./toggleHighContrast-Cto-fOXm.js";import"./index-BxWTVKtn.js";const r={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},l={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{r as conf,l as language};
@@ -7,8 +7,8 @@
7
7
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
8
8
  <link rel="apple-touch-icon" href="/openpond-icon.png" />
9
9
  <title>OpenPond App</title>
10
- <script type="module" crossorigin src="/assets/index-BK8GmZmB.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-C0H85uUI.css">
10
+ <script type="module" crossorigin src="/assets/index-BxWTVKtn.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-dSmk3FLJ.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openpond",
3
- "version": "0.2.52",
3
+ "version": "0.2.53",
4
4
  "license": "MIT",
5
5
  "description": "OpenPond CLI and local harness",
6
6
  "main": "dist/index.js",
@@ -1 +0,0 @@
1
- .sidebar-task-menu{position:fixed;z-index:1000;width:192px;max-height:calc(100vh - 16px);overflow-y:auto;padding:4px;border:0;border-radius:8px;background:var(--panel);color:var(--text);box-shadow:0 8px 24px #0006}.sidebar-task-menu button{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:inherit;font:inherit;font-size:12px;text-align:left;cursor:pointer}.sidebar-task-menu button:hover,.sidebar-task-menu button:focus-visible{background:#000;outline:none}.sidebar-task-menu .task-menu-done{border-top:1px solid var(--border);margin-top:4px}.sidebar-task-menu-trigger.is-open{opacity:1;pointer-events:auto}.sidebar-row.sidebar-task-row.has-running-dot .row-meta{align-self:center;margin-top:0}@media(hover:none){.sidebar-task-menu-trigger{opacity:1;pointer-events:auto}}.sidebar-row-actions.sidebar-task-menu-trigger{background:transparent;padding:0}.sidebar-task-row:hover .sidebar-task-menu-trigger .sidebar-row-action,.sidebar-task-row:focus-within .sidebar-task-menu-trigger .sidebar-row-action,.sidebar-task-menu-trigger.is-open .sidebar-row-action{background:var(--panel)}.sidebar .sidebar-row.sidebar-task-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto;min-width:0;max-width:100%;gap:8px;border:1px solid var(--border);margin:4px 6px;width:calc(100% - 12px);border-radius:8px}.sidebar .sidebar-task-row .row-meta{position:static;display:flex;align-items:center;align-self:center;gap:2px;min-width:0;width:auto;height:auto}.sidebar .sidebar-task-row .row-meta-status{flex:0 0 auto}.sidebar .sidebar-task-row .sidebar-task-menu-trigger{position:static;transform:none;flex:0 0 auto}.sidebar-title-slot{display:flex;min-width:0;max-width:100%;align-items:center;gap:3px;overflow:hidden}.sidebar-source-slot,.conversation-source-icon{width:24px;flex:0 0 24px;display:inline-flex;align-items:center;justify-content:center}.conversation-source-icon{height:24px}.conversation-source-icon img{width:16px;height:16px;object-fit:contain}.conversation-source-icon{font-size:17px;color:var(--muted)}.sidebar .sidebar-task-row .row-label-shell{display:flex;flex-direction:column;align-items:flex-start;flex:1 1 0;min-width:0;max-width:100%;overflow:hidden}.sidebar .sidebar-task-row .sidebar-session-title-line,.sidebar .sidebar-task-row .sidebar-task-title{min-width:0;max-width:100%;overflow:hidden}.sidebar .sidebar-task-row .sidebar-task-title-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .sidebar-child-toggle{position:static;flex:0 0 15px;width:15px}.sidebar-inbox-row{min-height:54px;padding-top:8px;padding-bottom:8px}.sidebar-inbox-project{display:flex;align-items:center;gap:5px;min-width:0;min-height:18px;max-width:100%;text-align:left;overflow:hidden;white-space:nowrap;color:var(--muted);font-size:11px;line-height:18px}.sidebar-inbox-project-name{overflow:hidden;text-overflow:ellipsis}.sidebar-inbox-project time{flex:0 0 auto}.sidebar-inbox-done{display:inline-grid;place-items:center;width:30px;height:30px;flex:0 0 auto;border:0;background:transparent;color:var(--muted);border-radius:7px}.sidebar-inbox-done:hover,.sidebar-inbox-done:focus-visible{background:#80808033;color:var(--text)}.sidebar-threads-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:10px 12px 5px;font-size:12px;color:var(--muted)}.sidebar-threads-header-actions{display:flex;gap:4px;align-items:center}.sidebar-threads-header .sidebar-icon.active{color:var(--text);background:#8080802e}.sidebar-thread-inbox .section-actions{opacity:1}.sidebar-inbox-date{margin:16px 12px 6px;font-size:12px;font-weight:500;color:var(--muted)}.sidebar-threads-header-actions{margin-left:auto}.native-setup-terminal{position:fixed;inset:auto 0 0;height:min(420px,70vh);z-index:120}.native-setup-terminal .guake-terminal-overlay{height:100%}.app-shell:has(>.desktop-navigation-rail){grid-template-columns:52px var(--sidebar-width) minmax(0,1fr)}.app-shell.sidebar-closed:has(>.desktop-navigation-rail){grid-template-columns:52px 0 minmax(0,1fr)}.app-shell .content-shell{grid-column:3}.desktop-navigation-rail{grid-column:1;grid-row:1;z-index:25;min-height:0;display:flex;flex-direction:column;align-items:center;gap:18px;padding:10px 6px;background:var(--shell-navigation-bg)}.app-shell>.sidebar{grid-column:2;grid-row:1}.app-shell:has(>.desktop-navigation-rail)>.sidebar-resize-handle{grid-column:2 / 3}.desktop-rail-destinations{display:flex;flex-direction:column;align-items:center;gap:7px;width:36px;flex:0 0 auto}.desktop-rail-button{width:36px;height:36px;border:0;border-radius:9px;display:grid;place-items:center;color:var(--muted);background:transparent}.desktop-rail-button:hover,.desktop-rail-button.active{background:#80808029;color:var(--text)}.desktop-rail-button:focus-visible{outline:2px solid var(--text);outline-offset:2px}.desktop-navigation-rail [data-rail-tooltip]{position:relative}.desktop-navigation-rail [data-rail-tooltip]:after{content:attr(data-rail-tooltip);position:absolute;z-index:60;left:calc(100% + 12px);top:50%;transform:translateY(-50%);padding:7px 10px;border:1px solid var(--border);border-radius:7px;background:var(--panel);color:var(--text);box-shadow:0 4px 16px #00000040;font-size:12px;font-weight:500;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .1s ease,visibility .1s ease}.desktop-navigation-rail [data-rail-tooltip]:hover:after,.desktop-navigation-rail [data-rail-tooltip]:focus-visible:after{opacity:1;visibility:visible}.desktop-rail-account{margin-top:auto;width:36px}.desktop-rail-account .user-auth-trigger{width:36px;height:36px;padding:0;grid-template-columns:1fr;gap:0;place-items:center}.desktop-rail-account .user-auth-name{display:none}.desktop-rail-account .user-auth-menu{position:fixed;left:52px;bottom:12px;max-width:calc(100vw - 64px)}@media(max-width:980px){.app-shell.sidebar-open:has(>.desktop-navigation-rail),.app-shell.sidebar-closed:has(>.desktop-navigation-rail){grid-template-columns:52px 0 minmax(0,1fr)}.app-shell>.sidebar{position:absolute;grid-column:1 / -1;left:52px;top:0;bottom:0;max-width:calc(100vw - 52px)}.app-shell:has(>.desktop-navigation-rail)>.sidebar-resize-handle{grid-column:1 / -1;left:calc(52px + min(var(--sidebar-width),86vw,calc(100vw - 52px)))}}.human-review-inbox-control{position:relative;display:inline-grid;place-items:center;flex:0 0 32px;min-width:32px;overflow:visible}.human-review-inbox-control svg{flex-shrink:0}.human-review-inbox-count{position:absolute;top:-3px;right:-6px;min-width:15px;padding:1px 3px;border-radius:8px;background:var(--text);color:var(--bg);font-size:9px;line-height:12px;text-align:center}
@@ -1 +0,0 @@
1
- import{r as i,j as e}from"./index-BK8GmZmB.js";import{s as u}from"./LabsRoute-8cKFNq19.js";import{dA as n}from"./App-Dg6mZIQk.js";import"./chunk-UHVJOMWN-BxgPi0yP.js";import"./AppDialog-gcj3rrTZ.js";import"./cloud-upload-B9L-_gy0.js";import"./MainPane-SMqq5YAM.js";import"./MarkdownText-CLnvdLVg.js";import"./arrow-up-right-C60QSULo.js";import"./square-Coz7UQqd.js";import"./folder-open-BFy7KXWm.js";import"./play-C4PtpamL.js";import"./training-model-data-CKOkpBBL.js";import"./info-C8mwoaIJ.js";/* empty css */import"./ComposerCreateImproveStrip-f1tdD0QS.js";function L({api:o,policyId:r,sourceId:t,onBack:s}){const a=i.useMemo(()=>o.reviewClient(r,t),[o,r,t]),[m,p]=i.useState(null),[l,c]=i.useState(null);return e.jsxs("section",{"aria-label":"Hosted example review",children:[e.jsx("button",{type:"button",className:"training-button secondary",onClick:()=>{n(s)},children:"Back to continual learning"}),e.jsx("p",{children:"Reviewing hosted examples. Approved tasks become eligible for this policy's next training check."}),e.jsx(u,{client:a,selectedId:m,after:l,sourceId:t,onSelect:d=>{n(()=>p(d))},onPage:c})]})}export{L as HostedModelLearningReview};
@@ -1,14 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/WorkspaceMonacoEditor-CJ3x0GHH.js","assets/index-BK8GmZmB.js","assets/index-C0H85uUI.css","assets/WorkspaceMonacoEditor-BwKcXIZw.css"])))=>i.map(i=>d[i]);
2
- import{j as e,r as l,_ as xa}from"./index-BK8GmZmB.js";import{T as ba,F as ga,a as ja,M as va,f as ka,i as Os,h as wa,j as ya,e as Us,I as Sa}from"./MarkdownText-CLnvdLVg.js";import{c as be,q as lt,ax as Hs,as as on,a$ as Ee,G as z,bR as Ft,bn as Et,bl as Oe,an as ns,bS as Na,aU as Ca,bT as $a,aV as Ra,F as Fa,p as cn,i as Ea,X as Vs,P as Pa,aW as Aa,av as La,aw as Da,bK as Ta,bU as _a,al as Gs,bV as Ma,bW as as,bX as za,bY as is,bZ as Wa,g as Ia,H as dn,E as Ba,b_ as Jt,b$ as Oa,c0 as rs,bu as Ce,c1 as Ua,c2 as Ks,c3 as Ha,c4 as Va,c5 as qs,c6 as Ga,c7 as Ka}from"./App-Dg6mZIQk.js";import{t as qa,a as Xa,b as Za,m as Qa,s as Ya,d as Ja,f as ei,c as ti}from"./training-model-data-CKOkpBBL.js";import{F as St}from"./folder-open-BFy7KXWm.js";import{I as Xs}from"./info-C8mwoaIJ.js";import{M as si}from"./minimize-2-34MApatV.js";import{S as ni}from"./save-DjB16eou.js";import{C as ai}from"./clipboard-QIy0Jd_K.js";const ii=[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M17 19H3",key:"z6ezky"}]],ri=be("text-align-start",ii);const li=[["path",{d:"m17 11-5-5-5 5",key:"e8nh98"}],["path",{d:"m17 18-5-5-5 5",key:"2avn1x"}]],oi=be("chevrons-up",li);const ci=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]],di=be("columns-2",ci);const ui=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],fi=be("eye-off",ui);const pi=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}]],hi=be("panel-top",pi);const mi=[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]],xi=be("plug",mi);const bi=[["path",{d:"m15 14 5-5-5-5",key:"12vg1m"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",key:"6uklza"}]],gi=be("redo-2",bi);const ji=[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]],vi=be("undo-2",ji);function ki({createRuntime:t,goalRuntime:s,subagentRuntime:n=null,onRunSubagentLifecycleAction:a}){const i=t?"Create/Improve Details":"Goal Details",d=t?Z(t.run.state):n?.activeCount?n.label:s?.actionLabel??"No active goal";return e.jsxs("div",{className:"goal-details-view","aria-label":i,children:[e.jsxs("div",{className:"goal-details-header",children:[e.jsxs("div",{className:"goal-details-title",children:[e.jsx(lt,{size:15,"aria-hidden":"true"}),e.jsx("span",{children:i})]}),e.jsx("span",{className:`goal-details-state ${Ii(t?.run.state??null)}`,children:d})]}),e.jsx("div",{className:"goal-details-body",children:t?e.jsx(wi,{runtime:t}):s||n?e.jsx(Si,{goalRuntime:s,subagentRuntime:n,onRunSubagentLifecycleAction:a}):e.jsx(Wi,{})})]})}function wi({runtime:t}){const s=t.run,n=s.plan,a=Hs(n?.metadata)??Hs(s.metadata),i=s.questions,d=i.filter(o=>o.status==="pending"),c=s.sourceRefs,u=s.checkRefs,h=s.state,x=s.target.kind==="agent"?s.target.defaultActionKey:null;return e.jsxs(e.Fragment,{children:[e.jsx(V,{title:"Current Work",children:e.jsx(it,{rows:[["State",Z(h)],["Operation",s.operation],["Target",Z(s.target.kind)],["Name",s.target.displayName??s.target.id??"Pending"],["Target ID",s.target.id??"Pending"],["Default action",x??n?.defaultChatAction.key??"Pending"],["Adapter",Z(s.adapter.kind)],["Run",s.id],["Revision",String(s.revision)]]})}),e.jsx(V,{title:"Plan",children:n?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"goal-details-summary",children:n.summary}),e.jsx(it,{rows:[["Objective",n.objective],["Context",n.capturedContextSummary],["Status",Z(n.status)],["Plan ID",n.id],["Run ID",n.runId],["Approval",n.approvalId??"Pending"],["Approved",n.approvedAt??"Not approved"]]})]}):d.length?e.jsx("p",{className:"goal-details-summary",children:"Waiting for answers before the model finalizes the Create plan."}):e.jsx("p",{className:"goal-details-summary",children:"The model is preparing the Create plan."})}),a?e.jsxs(V,{title:"Action Shape",children:[e.jsx(it,{rows:[["Mode",a.label],["Default action",a.defaultActionKey??"None"],["Direct action",a.directActionHint??"None planned"],["Artifacts",a.artifactPolicy]]}),e.jsx("p",{className:"goal-details-note",children:a.detail})]}):null,i.length?e.jsx(V,{title:"Questions",children:e.jsx("div",{className:"goal-details-list",children:i.map(o=>e.jsxs("article",{className:"goal-details-list-item",children:[e.jsxs("div",{children:[e.jsx("strong",{children:o.title}),e.jsx("span",{className:`goal-details-inline-state ${o.status}`,children:Z(o.status)})]}),e.jsx("p",{children:o.prompt}),o.answer?e.jsxs("small",{children:["Answer: ",o.answer.label??o.answer.value]}):o.options.length?e.jsxs("small",{children:["Options: ",o.options.map(b=>b.label).join(", ")]}):null]},o.id))})}):null,n?.requirements.length?e.jsx(V,{title:"Setup Requirements",children:e.jsx("div",{className:"goal-details-list",children:n.requirements.map(o=>e.jsxs("article",{className:"goal-details-list-item",children:[e.jsxs("div",{children:[e.jsx("strong",{children:o.name}),e.jsx("span",{className:`goal-details-inline-state ${o.status}`,children:Z(o.status)})]}),e.jsxs("small",{children:[Z(o.kind),o.detail?`: ${o.detail}`:""]})]},`${o.kind}:${o.name}`))})}):null,n?.sourcePlan.length?e.jsx(V,{title:"Source Plan",children:e.jsx(yt,{refs:n.sourcePlan.map(o=>({id:`${o.operation}:${o.path}`,primary:o.path,secondary:`${Z(o.operation)}: ${o.reason}`}))})}):null,n?.checks.length?e.jsx(V,{title:"Checks",children:e.jsx(yt,{refs:n.checks.map(o=>({id:o.name,primary:o.name,secondary:`${o.required?"Required":"Optional"}: ${o.command}`}))})}):null,c.length||u.length?e.jsx(V,{title:"Run Refs",children:e.jsx(yt,{refs:[...c.map(o=>({id:`source:${o}`,primary:o,secondary:"Source ref"})),...u.map(o=>({id:`check:${o}`,primary:o,secondary:"Check ref"}))]})}):null,e.jsx(yi,{run:s}),s.blockedReason?e.jsx(V,{title:"Blocked",children:e.jsxs("div",{className:"goal-details-alert",children:[e.jsx(on,{size:15}),e.jsx("span",{children:s.blockedReason})]})}):null,e.jsx(V,{title:"Raw State",children:e.jsxs("details",{className:"goal-details-raw",children:[e.jsx("summary",{children:"Show structured payload"}),e.jsx("pre",{children:JSON.stringify(s,null,2)})]})})]})}function yi({run:t}){const s=[...t.context.attachments.map(i=>({id:`attachment:${i.id??i.name}`,primary:i.name,secondary:i.ref??i.mediaType??"Attachment"})),...t.context.apps.map(i=>({id:`app:${i.id}`,primary:i.name,secondary:i.required?"Required app context":"Optional app context"})),...t.context.tools.map(i=>({id:`tool:${i.name}`,primary:i.name,secondary:i.outputSummary??i.inputSummary??"Tool context"})),...t.context.targetRepoAssumptions.map(i=>({id:`target:${i}`,primary:i,secondary:"Target assumption"}))],n=t.workflowCapture,a=n?[...n.files.map(i=>({id:`workflow-file:${i}`,primary:i,secondary:"Captured file"})),...n.outputArtifacts.map(i=>({id:`workflow-artifact:${i}`,primary:i,secondary:"Output artifact"})),...n.traceRefs.map(i=>({id:`workflow-trace:${i}`,primary:i,secondary:"Trace"}))]:[];return!s.length&&!a.length?null:e.jsx(V,{title:"Context",children:e.jsx(yt,{refs:[...s,...a]})})}function Si({goalRuntime:t,subagentRuntime:s,onRunSubagentLifecycleAction:n}){return e.jsxs(e.Fragment,{children:[t?e.jsxs(V,{title:"Goal",children:[e.jsx("p",{className:"goal-details-summary",children:t.objective}),e.jsx(it,{rows:[["Status",t.actionLabel],["Runtime",t.timeLabel],["Detail",t.detail]]})]}):null,s?e.jsx(Ni,{runtime:s,onRunSubagentLifecycleAction:n}):null,e.jsx(V,{title:"Raw State",children:e.jsxs("details",{className:"goal-details-raw",children:[e.jsx("summary",{children:"Show structured payload"}),e.jsx("pre",{children:JSON.stringify({goalRuntime:t,subagentRuntime:s},null,2)})]})})]})}function Ni({runtime:t,onRunSubagentLifecycleAction:s}){const[n,a]=l.useState(null),[i,d]=l.useState(null);Ee(i);const c=async(u,h)=>{if(!s)return;const x=`${u}:${h}`;a(x),d(null);try{await s({runId:u,action:h})}catch(o){d(o instanceof Error?o.message:String(o))}finally{a(o=>o===x?null:o)}};return e.jsxs(e.Fragment,{children:[e.jsxs(V,{title:"Subagents",children:[e.jsx(it,{rows:[["Latest update",Ai(t)],["Active",String(t.activeCount)],["Completed",String(t.completedCount)],["Failed",String(t.failedCount)],["Cancelled",String(t.cancelledCount)],["Paused",String(t.needsResumeCount)],["Terminal",String(t.terminalCount)],["Usage",Li(t.usage.totalTokens,t.usage.requestCount)],["Evidence",String(t.evidenceRefs.length)],["Checks",String(t.testsRunCount)]]}),t.blockers.length>0?e.jsx("ul",{className:"goal-details-list compact",children:t.blockers.slice(0,4).map(u=>e.jsxs("li",{className:"goal-details-list-item",children:[e.jsx("span",{className:`goal-details-inline-state ${u.status}`,children:u.status}),e.jsxs("div",{children:[e.jsx("strong",{children:Nt(u.roleId)}),e.jsx("p",{children:u.message})]})]},`${u.runId}:${u.message}`))}):null,e.jsx("ul",{className:"goal-details-list",children:t.runs.slice(0,8).map(u=>e.jsxs("li",{className:"goal-details-list-item",children:[e.jsx("span",{className:`goal-details-inline-state ${u.status}`,children:u.status}),e.jsxs("div",{children:[e.jsx("strong",{children:Nt(u.roleId)}),e.jsx("p",{children:u.objective}),u.report?.summary?e.jsx("small",{children:u.report.summary}):null,s?e.jsx($i,{pendingAction:n,run:u,onRun:c}):null]})]},u.id))})]}),t.finalResults.length>0?e.jsx(Ci,{results:t.finalResults}):null]})}function Ci({results:t}){return e.jsx(V,{title:"Child Results",children:e.jsx("ol",{className:"goal-details-task-graph",children:t.slice(0,6).map(s=>e.jsxs("li",{className:"goal-details-task-node",children:[e.jsxs("div",{className:"goal-details-task-node-header",children:[e.jsx("span",{className:`goal-details-inline-state ${s.status}`,children:s.status}),e.jsxs("div",{children:[e.jsx("strong",{children:Nt(s.roleId)}),e.jsx("small",{children:s.objective})]})]}),e.jsx("p",{children:s.summary}),e.jsxs("div",{className:"goal-details-task-node-meta",children:[e.jsxs("span",{children:[s.refs.length," refs"]}),e.jsxs("span",{children:[s.testsRun.length+s.validationAttempts.length," checks"]}),e.jsxs("span",{children:[s.blockers.length," blockers"]}),e.jsx("span",{children:s.confidence?`${Z(s.confidence)} confidence`:"Confidence unknown"})]}),s.findings.length>0?e.jsxs("small",{children:["Findings: ",$e(s.findings,3)]}):null,s.changedFiles.length>0?e.jsxs("small",{children:["Files: ",$e(s.changedFiles,4)]}):null,s.testsRun.length>0?e.jsxs("small",{children:["Tests: ",$e(s.testsRun,3)]}):null,s.validationAttempts.length>0?e.jsxs("small",{children:["Validation: ",$e(s.validationAttempts,2)]}):null,s.refs.length>0?e.jsxs("small",{children:["Refs: ",$e(s.refs.map(Di),4)]}):null,s.blockers.length>0?e.jsxs("small",{children:["Blockers: ",$e(s.blockers,3)]}):null,s.workspaceRetention?e.jsxs("small",{children:["Workspace: ",_i(s.workspaceRetention)]}):null,s.importantMessages.length>0?e.jsxs("small",{children:["Messages: ",$e(s.importantMessages.map(Ti),2)]}):null]},s.runId))})})}function $i({pendingAction:t,run:s,onRun:n}){const a=Ri(s);return a.length===0?null:e.jsx("div",{className:"goal-details-actions",children:a.map(i=>{const d=`${s.id}:${i}`,c=t===d;return e.jsx("button",{type:"button",disabled:!!t,onClick:()=>{n(s.id,i)},children:c?"Working...":Fi(i)},i)})})}function Ri(t){const s=[],n=Ei(t),a=Pi(t);return n&&s.push("cleanup"),a&&s.push("archive"),s}function Fi(t){return t==="cleanup"?"Clean":t==="archive"?"Archive":"Clean + archive"}function Ei(t){if(!un(t))return!1;const s=rt(t.metadata);if(!s?.subagentWorkspace&&!s?.workspaceHandoff)return!1;const n=rt(s.lifecycleCleanup),a=rt(n?.workspaceCleanup),i=fn(a?.status);return i!=="removed"&&i!=="deleted"&&i!=="retained"&&i!=="skipped"}function Pi(t){if(!t.childSessionId||!un(t))return!1;const s=rt(rt(t.metadata)?.childSessionArchive),n=fn(s?.status);return n!=="archived"&&n!=="already_archived"}function un(t){return t.status==="completed"||t.status==="failed"||t.status==="cancelled"}function Ai(t){const s=t.latestMeaningfulUpdate;return s?`${Nt(s.roleId)} ${s.status}: ${s.message}`:"No structured update"}function Li(t,s){if(t<=0&&s<=0)return"0 tokens";const n=`${s} ${s===1?"request":"requests"}`;return`${Mi(t)} tokens · ${n}`}function Nt(t){return t.slice(0,1).toUpperCase()+t.slice(1).replace(/[-_]+/g," ")}function Di(t){return`${t.kind}: ${t.label}`}function Ti(t){return`${Z(t.kind)}: ${t.body}`}function _i(t){const s=t.expiresAt?`until ${zi(t.expiresAt)}`:"for inspection",n=t.trigger?` · ${Z(t.trigger)}`:"";return`retained ${s}${n}`}function $e(t,s){const n=t.slice(0,s),a=t.length-n.length;return a>0?`${n.join(", ")} +${a}`:n.join(", ")}function Mi(t){if(t<1e3)return String(t);if(t>=1e6){const n=t/1e6;return`${Zs(n,n<10?2:1)}M`}const s=t/1e3;return`${Zs(s,s<10?1:0)}k`}function zi(t){const s=new Date(t);return Number.isNaN(s.getTime())?t:s.toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function Zs(t,s){return t.toFixed(s).replace(/\.0+$/,"").replace(/(\.\d*?)0+$/,"$1")}function Wi(){return e.jsxs("div",{className:"goal-details-empty",children:[e.jsx(lt,{size:18}),e.jsx("span",{children:"No active Goal or Create workflow."})]})}function V({children:t,title:s}){return e.jsxs("section",{className:"goal-details-section",children:[e.jsx("h2",{children:s}),t]})}function it({rows:t}){return e.jsx("dl",{className:"goal-details-grid",children:t.map(([s,n])=>e.jsxs("div",{children:[e.jsx("dt",{children:s}),e.jsx("dd",{children:n})]},s))})}function yt({refs:t}){return e.jsx("ul",{className:"goal-details-ref-list",children:t.map(s=>e.jsxs("li",{children:[e.jsx("code",{title:s.primary,children:s.primary}),e.jsx("span",{children:s.secondary})]},s.id))})}function rt(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function fn(t){return typeof t=="string"&&t.trim()?t.trim():null}function Z(t){return t.split(/[_-]/g).filter(Boolean).map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}function Ii(t){return t==="ready_local"||t==="published_hosted"?"success":t==="blocked"||t==="failed"||t==="cancelled"?"danger":t==="awaiting_questions"||t==="awaiting_plan_approval"?"warning":"active"}function Bi({sandboxId:t,connection:s}){const[n,a]=l.useState(null),[i,d]=l.useState([]),[c,u]=l.useState(null),[h,x]=l.useState(null),[o,b]=l.useState(null),[S,k]=l.useState(null);Ee(o,{prefix:"Sandbox"}),Ee(S,{prefix:"Sandbox integrations"});const N=n?.integrationLeases??[],F=l.useMemo(()=>i.filter(v=>v.status==="active"),[i]),_=l.useMemo(()=>Ui(n),[n]),W=l.useCallback(async()=>{if(!s){b("OpenPond App server is not connected.");return}if(!t){a(null),d([]),b(null);return}u("summary"),b(null);try{const v=await z.sandbox(s,t),R=await z.integrationConnections(s,Qs(v.sandbox));a(v.sandbox),d(R.connections),k(null)}catch(v){b(v instanceof Error?v.message:String(v))}finally{u(null)}},[s,t]),G=l.useCallback(async()=>{if(!(!s||!n)){x("load"),k(null);try{const[v,R]=await Promise.all([z.integrationConnections(s,Qs(n)),z.sandboxIntegrationLeases(s,n.id)]);d(v.connections),a(R.sandbox)}catch(v){k(v instanceof Error?v.message:String(v))}finally{x(null)}}},[s,n]),H=l.useCallback(async v=>{if(!s||!n)return;const R=Ft(v.provider),D=R?Et(R):null,M=D?.leasePolicy.allowedCapabilityIds??[];if(!R||!D?.leasePolicy.leaseable||M.length===0){k(`${ie(v.provider)} cannot be attached to this sandbox.`);return}x(`attach:${v.id}`),k(null);try{const E=await z.attachSandboxIntegrationConnection(s,n.id,{connectionId:v.id,provider:v.provider,capabilities:M,...v.scopes.length>0?{scopes:v.scopes}:{},...D.leasePolicy.defaultTtlSeconds?{ttlSeconds:D.leasePolicy.defaultTtlSeconds}:{},required:!1});a(E.sandbox)}catch(E){k(E instanceof Error?E.message:String(E))}finally{x(null)}},[s,n]),I=l.useCallback(async v=>{if(!(!s||!n)){x(`remove:${v}`),k(null);try{const R=await z.removeSandboxIntegrationLease(s,n.id,v);a(R.sandbox)}catch(R){k(R instanceof Error?R.message:String(R))}finally{x(null)}}},[s,n]);return l.useEffect(()=>{W()},[W]),t?e.jsxs("div",{className:"sandbox-summary-tab",children:[e.jsxs("section",{className:"sandbox-workspace-section",children:[e.jsxs("div",{className:"sandbox-workspace-heading",children:[e.jsx("h3",{children:"Sandbox"}),e.jsxs("div",{className:"sandbox-workspace-heading-actions",children:[n?e.jsx("span",{children:n.state}):null,e.jsx("button",{type:"button",className:"diff-icon-button",title:"Refresh summary","aria-label":"Refresh summary",disabled:c!==null,onClick:()=>{W()},children:c==="summary"?e.jsx(Oe,{className:"spinning",size:14}):e.jsx(ns,{size:14})})]})]}),n?e.jsxs("dl",{className:"sandbox-workspace-kv",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Sandbox"}),e.jsx("dd",{children:Ys(n.id)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Spend"}),e.jsxs("dd",{children:[es(n.reservation.capturedUsd)," / ",es(n.budget.maxUsd)]})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Reservation"}),e.jsx("dd",{children:n.reservation.status})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Idle cleanup"}),e.jsx("dd",{children:n.quotas?.idleTimeoutSeconds?`${Math.round(n.quotas.idleTimeoutSeconds/60)} min`:"-"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Updated"}),e.jsx("dd",{children:pn(n.updatedAt)})]}),_?e.jsxs("div",{children:[e.jsx("dt",{children:"Receipt"}),e.jsxs("dd",{children:[Ys(_.id)," / ",es(_.totalUsd)]})]}):null]}):e.jsxs("div",{className:"sandbox-workspace-loading",children:[c==="summary"?e.jsx(Oe,{className:"spinning",size:16}):null,e.jsx("span",{children:c==="summary"?"Loading sandbox":"Sandbox unavailable"})]})]}),e.jsxs("section",{className:"sandbox-workspace-section",children:[e.jsxs("div",{className:"sandbox-workspace-heading",children:[e.jsx("h3",{children:"Integrations"}),e.jsxs("div",{className:"sandbox-workspace-heading-actions",children:[e.jsx("span",{children:N.length}),e.jsx("button",{type:"button",className:"diff-icon-button",title:"Refresh integrations","aria-label":"Refresh integrations",disabled:h!==null||!n,onClick:()=>{G()},children:h==="load"?e.jsx(Oe,{className:"spinning",size:14}):e.jsx(ns,{size:14})})]})]}),N.length>0?e.jsx("div",{className:"sandbox-workspace-integration-list",children:N.map(v=>e.jsxs("div",{className:"sandbox-workspace-integration-row",children:[e.jsxs("div",{className:"sandbox-workspace-integration-main",children:[e.jsx("span",{children:ie(v.provider)}),e.jsxs("small",{children:[v.required?"required":"optional"," / ",Gi(v)," / ",Oi(v)]})]}),e.jsx("button",{type:"button",className:"diff-icon-button",title:`Revoke ${ie(v.provider)} lease`,"aria-label":`Revoke ${ie(v.provider)} lease`,disabled:h!==null,onClick:()=>{I(v.leaseId)},children:h===`remove:${v.leaseId}`?e.jsx(Oe,{className:"spinning",size:14}):e.jsx(ba,{size:14})}),e.jsxs("div",{className:"sandbox-workspace-chip-row",children:[v.capabilities.slice(0,5).map(R=>e.jsx("span",{children:Vi(v.provider,R)},R)),v.capabilities.length>5?e.jsxs("span",{children:["+",v.capabilities.length-5]}):null]})]},v.leaseId))}):e.jsx("p",{className:"sandbox-workspace-empty",children:"No active integration leases."}),F.length>0?e.jsx("div",{className:"sandbox-workspace-integration-list",children:F.map(v=>{const R=N.some(E=>E.provider===v.provider),M=Hi(v)?.leasePolicy.allowedCapabilityIds.length??0;return e.jsxs("div",{className:"sandbox-workspace-integration-row compact",children:[e.jsxs("div",{className:"sandbox-workspace-integration-main",children:[e.jsx("span",{children:Ki(v)}),e.jsx("small",{children:qi(v,M)})]}),e.jsx("button",{type:"button",className:"diff-icon-button",title:R?`${ie(v.provider)} already attached`:`Attach ${ie(v.provider)}`,"aria-label":R?`${ie(v.provider)} already attached`:`Attach ${ie(v.provider)}`,disabled:R||h!==null||M===0,onClick:()=>{H(v)},children:h===`attach:${v.id}`?e.jsx(Oe,{className:"spinning",size:14}):e.jsx(xi,{size:14})})]},v.id)})}):e.jsx("p",{className:"sandbox-workspace-empty",children:"No connected accounts available."})]})]}):e.jsx("div",{className:"sandbox-summary-tab",children:e.jsx("p",{className:"sandbox-workspace-empty",children:"No sandbox is attached yet."})})}function Qs(t){return{status:"active"}}function Oi(t){return t.proxyUrl?"runtime proxy available":"metadata only, no runtime proxy"}function Ui(t){return t?.receipts?.at(-1)??null}function Hi(t){const s=Ft(t.provider);return s?Et(s):null}function ie(t){const s=Ft(t),n=s?Et(s):null;return n?n.label:t==="microsoft_teams"?"Microsoft Teams":t?t.replace(/_/g," "):"Integration"}function Vi(t,s){const n=Ft(t);return(n?Et(n):null)?.capabilities.find(i=>i.id===s)?.label??s}function Gi(t){return t.expiresAt?`expires ${pn(t.expiresAt)}`:"active"}function Ki(t){const s=t.providerAccountName?.trim();return s?`${ie(t.provider)} / ${s}`:ie(t.provider)}function qi(t,s){const n=[];return t.providerWorkspaceName&&n.push(t.providerWorkspaceName),n.push(`${s} lease ${s===1?"capability":"capabilities"}`),t.scopes.length>0&&n.push(`${t.scopes.length} ${t.scopes.length===1?"scope":"scopes"}`),n.join(" / ")}function Ys(t){return t.length>10?`${t.slice(0,8)}...`:t}function pn(t){if(!t)return"-";const s=new Date(t);return Number.isNaN(s.valueOf())?"-":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(s)}function es(t){const s=Number(t??0);return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:s>=10?2:4}).format(Number.isFinite(s)?s:0)}function Xi({summary:t}){const s=qa(t.taskset),n=t.taskset.learningSignals.demonstrations.filter(u=>u.approved).length,a=t.taskset.tasks.filter(u=>u.split==="frozen_eval").length,i=t.plan?.recipe.method==="sft"||t.plan?.recipe.method==="grpo"?t.plan.recipe:null,d=Xa(t.taskset,t.plan),c=t.job?Za(t.job.status,t.job.completedAt,t.job.updatedAt):null;return e.jsxs("div",{className:"training-sidebar-summary",children:[e.jsxs("header",{children:[e.jsx("h2",{children:Qa(t.taskset.name)}),e.jsx("span",{children:t.job?Ya(t.job.status):t.taskset.readiness?.ready?"Ready to train":"Needs review"})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Run"}),e.jsxs("dl",{children:[e.jsx(U,{label:"Primary recommendation",value:s.toUpperCase()}),e.jsx(U,{label:"Training stage",value:d}),e.jsx(U,{label:"Base model",value:i?.baseModel.id??"Not selected"}),e.jsx(U,{label:"Compute",value:t.plan?Ja(t.plan.destinationId):"Not selected"}),e.jsx(U,{label:"Started",value:ei(t.job?.startedAt??null)}),e.jsx(U,{label:"Duration",value:ti(t.job?.startedAt??null,c)})]})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Data"}),e.jsxs("dl",{children:[e.jsx(U,{label:"Training examples",value:String(n)}),e.jsx(U,{label:"Test examples",value:String(a)}),e.jsx(U,{label:"Dataset sources",value:String(t.taskset.sourceRefs.length)})]})]}),i?e.jsxs("section",{children:[e.jsx("h3",{children:"Recipe"}),e.jsxs("dl",{children:[i.method==="grpo"?e.jsx(U,{label:"RL loss",value:i.loss.method==="gspo-token"?"GSPO-token":i.loss.method.toUpperCase()}):null,e.jsx(U,{label:"LoRA rank",value:String(i.lora.rank)}),e.jsx(U,{label:"Learning rate",value:String(i.optimizer.learningRate)}),e.jsx(U,{label:"Optimizer steps",value:String(i.optimizer.maxSteps)}),e.jsx(U,{label:i.method==="grpo"?"Prompt length":"Sequence length",value:String(i.method==="grpo"?i.dataset.maxPromptTokens:i.dataset.maxSequenceLength)})]})]}):null,e.jsxs("section",{children:[e.jsx("h3",{children:"Result"}),e.jsxs("dl",{children:[e.jsx(U,{label:"Adapter",value:t.lineage?`${d} ready`:"Not created"}),e.jsx(U,{label:"Evaluation",value:t.lineage?.frozenEvaluationArtifactId?"Completed":"Not completed"}),e.jsx(U,{label:"Artifacts",value:String(t.artifacts.length)})]})]})]})}function U({label:t,value:s}){return e.jsxs("div",{children:[e.jsx("dt",{children:t}),e.jsx("dd",{children:s})]})}function Zi(t){const s=Js("","","folder");for(const n of t){const a=n.endsWith("/"),i=n.split("/").filter(Boolean);if(i.length===0)continue;let d=s,c="";for(let u=0;u<i.length;u+=1){const h=i[u];c=c?`${c}/${h}`:h;const x=!a&&u===i.length-1?"file":"folder",o=`${x}:${h}`;let b=d.childMap.get(o);b||(b=Js(h,c,x),d.childMap.set(o,b),d.children.push(b)),d=b}}return hn(s.children)}function Js(t,s,n){return{name:t,path:s,type:n,children:[],childMap:new Map}}function hn(t){return t.sort((s,n)=>s.type!==n.type?s.type==="folder"?-1:1:s.name.localeCompare(n.name)).map(s=>({name:s.name,path:s.path,type:s.type,children:hn(s.children)}))}function ls({className:t,currentStatus:s,onSetStatus:n}){const a=s==="pinned",i=s==="saved_for_later";return e.jsxs("span",{className:`workspace-file-bookmark-actions ${t??"workspace-file-heading-actions"}`,children:[e.jsx("button",{type:"button",className:a?"active":void 0,"data-tooltip":a?"Unpin file":"Pin file","aria-label":a?"Unpin file":"Pin file","aria-pressed":a,onClick:()=>n(a?"none":"pinned"),children:a?e.jsx(Na,{size:14}):e.jsx(Ca,{size:14})}),e.jsx("button",{type:"button",className:i?"active":void 0,"data-tooltip":i?"Remove from Save for later":"Save file for later","aria-label":i?"Remove from Save for later":"Save file for later","aria-pressed":i,onClick:()=>n(i?"none":"saved_for_later"),children:i?e.jsx($a,{size:14}):e.jsx(Ra,{size:14})})]})}function Qi({changedByPath:t,expandedFolderPaths:s,rootPath:n,repoFiles:a,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:h}){const x=l.useMemo(()=>Zi(a),[a]);return e.jsxs("div",{className:"workspace-file-tree-view",children:[e.jsxs("div",{className:"workspace-file-tree-header",children:[e.jsx(St,{size:14}),e.jsx("strong",{title:n??void 0,children:n?n.split("/").at(-1):"Files"}),e.jsx("span",{children:a.length})]}),e.jsx("div",{className:"workspace-file-tree",children:x.map(o=>e.jsx(mn,{changedByPath:t,expandedFolderPaths:s,node:o,rootPath:n,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:h},`${o.type}:${o.path}`))})]})}function mn({changedByPath:t,depth:s=0,expandedFolderPaths:n,node:a,rootPath:i,selectedPath:d,getFileBookmarkStatus:c,onOpenFile:u,onSetFileBookmarkStatus:h,onToggleFolder:x}){const o=i?`${i}/${a.path}`:a.path,b=a.type==="folder"&&n.has(o),S=t.get(o),k=2+s*11;return a.type==="folder"?e.jsxs("div",{className:"workspace-file-tree-node",children:[e.jsxs("button",{type:"button",className:"workspace-file-tree-row folder","aria-expanded":b,style:{paddingLeft:k},onClick:()=>x(o),children:[b?e.jsx(St,{size:14}):e.jsx(Fa,{size:14}),e.jsx("span",{children:a.name})]}),b&&a.children.map(N=>e.jsx(mn,{changedByPath:t,depth:s+1,expandedFolderPaths:n,node:N,rootPath:i,selectedPath:d,getFileBookmarkStatus:c,onOpenFile:u,onSetFileBookmarkStatus:h,onToggleFolder:x},`${N.type}:${N.path}`))]}):e.jsxs("div",{className:`workspace-file-tree-row file ${S?"changed":""} ${d===o?"selected":""}`,style:{paddingLeft:k},children:[e.jsxs("button",{type:"button",className:"workspace-file-tree-row-main",title:o,onClick:()=>u(o),children:[e.jsx(ga,{size:13}),e.jsx("span",{children:a.name}),S&&e.jsxs("small",{children:[e.jsxs("span",{className:"diff-addition",children:["+",S.additions]}),e.jsxs("span",{className:"diff-deletion",children:["-",S.deletions]})]})]}),/\.html?$/i.test(o)&&e.jsx("button",{type:"button",className:"workspace-file-tree-bookmark-actions",title:"View source","aria-label":`View source for ${a.name}`,onClick:()=>u(o,{source:!0}),children:"</>"}),h?e.jsx(ls,{className:"workspace-file-tree-bookmark-actions",currentStatus:c?.(o)??null,onSetStatus:N=>h(o,N)}):null]})}function en({diff:t,expandedFolderPaths:s,rootPath:n,repoFiles:a,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:h}){const x=t?.files??[],o=l.useMemo(()=>new Map(x.map(k=>[k.path,k])),[x]),b=n?.replace(/^\/+|\/+$/g,"")||null,S=l.useMemo(()=>{if(!b)return a;const k=`${b}/`;return a.filter(N=>N.startsWith(k)).map(N=>N.slice(k.length)).filter(Boolean)},[b,a]);return e.jsx("div",{className:"workspace-diff-files-view",children:e.jsx(Qi,{changedByPath:o,expandedFolderPaths:s,rootPath:b,repoFiles:S,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:h})})}function Yi({collapsed:t,editorControlsVisible:s,hideWhiteSpace:n,loadFullFiles:a,renderMarkdown:i,wordDiffs:d,wordWrap:c,onClose:u,onCopyGitApply:h,onRefresh:x,onToggleCollapsed:o,onToggleEditorControlsVisible:b,onToggleHideWhiteSpace:S,onToggleLoadFullFiles:k,onToggleRenderMarkdown:N,onToggleWordDiffs:F,onToggleWordWrap:_}){return e.jsxs("div",{className:"workspace-diff-options-menu",role:"menu",children:[e.jsx(de,{icon:e.jsx(ns,{size:14}),label:"Refresh",onClick:x,onClose:u}),e.jsx(de,{checked:c,icon:e.jsx(ja,{size:14}),label:"Enable word wrap",onClick:_,onClose:u}),e.jsx(de,{checked:t,icon:e.jsx(oi,{size:14}),label:"Collapse all diffs",onClick:o,onClose:u}),e.jsx("div",{className:"workspace-diff-menu-divider"}),e.jsx(de,{checked:s,icon:e.jsx(hi,{size:14}),label:"Show editor controls",onClick:b,onClose:u}),e.jsx(de,{checked:i,icon:e.jsx(cn,{size:14}),label:"Render Markdown",onClick:N,onClose:u}),e.jsx(de,{checked:!a,icon:e.jsx(lt,{size:14}),label:"Show diffs first",onClick:k,onClose:u}),e.jsx(de,{checked:d,icon:e.jsx(ri,{size:14}),label:"Enable word diffs",onClick:F,onClose:u}),e.jsx(de,{checked:n,icon:e.jsx(fi,{size:14}),label:"Hide white space",onClick:S,onClose:u}),e.jsx(de,{icon:e.jsx(ai,{size:14}),label:"Copy git apply command",onClick:h,onClose:u})]})}function de({checked:t,icon:s,label:n,onClick:a,onClose:i}){return e.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{a?.(),i()},children:[s,e.jsx("span",{children:n}),t&&e.jsx(Ea,{size:14})]})}function Ji({addMenuOpen:t,expanded:s,filteredFiles:n,dirtyFilePaths:a,openFiles:i,goalDetailsAvailable:d,searchOpen:c,searchQuery:u,selectedPath:h,sideChatTabs:x=[],summaryAvailable:o,sourceStatus:b,sourceSwitcher:S,visibleTab:k,getFileBookmarkStatus:N,onCloseFileTab:F,onCloseSideChat:_,onCloseSearch:W,onOpenFile:G,onOpenBrowser:H,onOpenSearch:I,onOpenSideChat:v,onSearchQueryChange:R,onSetFileBookmarkStatus:D,onSelectFile:M,onSelectFiles:E,onSelectGoal:te,onSelectSummary:q,onSelectSideChat:X,onToggleAddMenu:B,onToggleExpanded:Q}){const se=l.useRef(null);l.useEffect(()=>{if(!t&&!c)return;function w(){t&&B(),c&&W()}function O(T){se.current?.contains(T.target)||w()}function A(T){T.key==="Escape"&&w()}return document.addEventListener("pointerdown",O),document.addEventListener("keydown",A),()=>{document.removeEventListener("pointerdown",O),document.removeEventListener("keydown",A)}},[t,W,B,c]);function Y(w){if(w.key==="Escape"){W();return}w.key==="Enter"&&n[0]&&G(n[0])}function le(w){if(!["ArrowRight","ArrowLeft","Home","End"].includes(w.key))return;const O=w.target;if(!(O instanceof HTMLButtonElement)||O.getAttribute("role")!=="tab")return;const A=Array.from(w.currentTarget.querySelectorAll('button[role="tab"]')),T=A.indexOf(O);if(T<0||A.length===0)return;w.preventDefault();const Pt=Ma(T,A.length,w.key),Pe=A[Pt];if(!Pe)return;Pe.focus(),Pe.click();const ot=Pe.id;ot&&window.requestAnimationFrame(()=>document.getElementById(ot)?.focus())}return e.jsxs("div",{className:"workspace-diff-topbar",children:[e.jsxs("div",{className:"workspace-diff-tabs",role:"tablist","aria-label":"Right sidebar views",onKeyDown:le,children:[d?e.jsxs("button",{type:"button",className:`workspace-diff-tab ${k==="goal"?"active":""}`,role:"tab","aria-selected":k==="goal",onClick:te,children:[e.jsx(lt,{size:14}),e.jsx("span",{children:"Goal"})]}):null,o&&q?e.jsxs("button",{type:"button",className:`workspace-diff-tab ${k==="summary"?"active":""}`,role:"tab","aria-selected":k==="summary",onClick:q,children:[e.jsx(Xs,{size:14}),e.jsx("span",{children:"Summary"})]}):null,e.jsxs("button",{type:"button",className:`workspace-diff-tab ${k==="files"?"active":""}`,role:"tab",id:"right-sidebar-files-tab","aria-controls":"right-sidebar-files-panel","aria-selected":k==="files",tabIndex:k==="files"?0:-1,onClick:E,children:[e.jsx(St,{size:14}),e.jsx("span",{children:"Files"})]}),i.map(w=>e.jsxs("div",{className:`workspace-diff-tab file ${k==="file"&&h===w.path?"active":""}`,children:[e.jsxs("button",{type:"button",className:"workspace-diff-tab-main",role:"tab","aria-selected":k==="file"&&h===w.path,title:w.path,onClick:()=>M(w.path),children:[e.jsx(lt,{className:"workspace-diff-tab-icon",size:13}),a.has(w.path)&&e.jsx("span",{className:"workspace-diff-tab-dirty","aria-hidden":"true"}),e.jsx("span",{children:w.path.split("/").pop()})]}),D?e.jsx(ls,{className:"workspace-diff-tab-bookmark-actions",currentStatus:N?.(w.path)??null,onSetStatus:O=>D(w.path,O)}):null,e.jsx("button",{type:"button",className:"workspace-diff-tab-close",title:`Close ${w.path}`,onClick:O=>F(w.path,O),children:e.jsx(Vs,{size:12})})]},w.path)),x.map(w=>e.jsxs("div",{className:"workspace-diff-tab right-chat-tab",children:[e.jsxs("button",{type:"button",className:"workspace-diff-tab-main",role:"tab",id:`right-chat-tab-${w.id}`,"aria-controls":`right-chat-panel-${w.id}`,"aria-selected":!1,tabIndex:-1,title:w.title,onClick:()=>X?.(w.id),children:[w.running?e.jsx("span",{className:"right-chat-status-dot","aria-label":"Running"}):null,e.jsx("span",{children:w.title})]}),_?e.jsx("button",{type:"button",className:"workspace-diff-tab-close",title:`Close ${w.title}`,"aria-label":`Close ${w.title}`,onClick:O=>{O.stopPropagation(),_(w.id)},children:e.jsx(Vs,{size:12})}):null]},w.id)),e.jsxs("div",{className:"workspace-diff-add-anchor",ref:se,children:[e.jsx("button",{type:"button",className:`workspace-diff-add-tab ${t||c?"active":""}`,title:"Add","aria-label":"Add to right sidebar",onClick:B,children:e.jsx(Pa,{size:15})}),t&&e.jsxs("div",{className:"workspace-diff-add-menu",role:"menu",children:[v?e.jsxs("button",{type:"button",role:"menuitem",onClick:v,children:[e.jsx(Aa,{size:14}),e.jsx("span",{children:"New task"}),e.jsx("kbd",{})]}):null,e.jsxs("button",{type:"button",role:"menuitem",onClick:E,children:[e.jsx(St,{size:14}),e.jsx("span",{children:"Files"}),e.jsx("kbd",{})]}),o&&q?e.jsxs("button",{type:"button",role:"menuitem",onClick:q,children:[e.jsx(Xs,{size:14}),e.jsx("span",{children:"Summary"}),e.jsx("kbd",{})]}):null,e.jsxs("button",{type:"button",role:"menuitem",onClick:I,children:[e.jsx(La,{size:14}),e.jsx("span",{children:"Open file"}),e.jsx("kbd",{children:"Ctrl+P"})]}),H?e.jsxs("button",{type:"button",role:"menuitem",onClick:H,children:[e.jsx(Da,{size:14}),e.jsx("span",{children:"Browser"}),e.jsx("kbd",{children:"Ctrl+I"})]}):null]}),c&&e.jsxs("div",{className:"workspace-file-search-popover",children:[e.jsx("input",{autoFocus:!0,placeholder:"Search files",value:u,onChange:w=>R(w.target.value),onKeyDown:Y}),e.jsx("span",{children:"Files"}),e.jsx("div",{className:"workspace-file-search-results",children:n.length===0?e.jsx("small",{children:"Type to search for files"}):n.map(w=>e.jsx("button",{type:"button",onClick:()=>G(w),children:w},w))})]})]})]}),S||b?e.jsxs("div",{className:"workspace-diff-source-bar","aria-label":"Workspace source",children:[S?e.jsx("div",{className:"workspace-diff-source-toggle",role:"group","aria-label":"File source",children:S.options.map(w=>e.jsx("button",{type:"button",className:S.value===w.value?"active":"","aria-pressed":S.value===w.value,onClick:()=>S.onChange(w.value),children:w.label},w.value))}):null,b?e.jsx("span",{className:`workspace-diff-source-status ${b.tone}`,children:b.label}):null]}):null,e.jsx("button",{type:"button",className:"diff-icon-button",title:s?"Restore files panel":"Expand files panel","aria-label":s?"Restore files panel":"Expand files panel",onClick:Q,children:s?e.jsx(si,{size:14}):e.jsx(Ta,{size:14})})]})}function er({canCheckActiveFile:t,canSaveActiveFile:s,collapsed:n,editorControlsVisible:a,editorDiagnosticStatus:i,editorDiagnosticsChecking:d,hideWhiteSpace:c,loadFullFiles:u,menuOpen:h,renderMarkdown:x,showEditorCommandBar:o,showRenderMarkdownToggle:b,splitView:S,wordDiffs:k,wordWrap:N,onCopyGitApply:F,onEditorCheck:_,onEditorRedo:W,onEditorSave:G,onEditorUndo:H,onRefresh:I,onToggleCollapsed:v,onToggleEditorControlsVisible:R,onToggleHideWhiteSpace:D,onToggleLoadFullFiles:M,onToggleMenu:E,onToggleRenderMarkdown:te,onToggleSplitView:q,onToggleWordDiffs:X,onToggleWordWrap:B}){return e.jsx("div",{className:"workspace-diff-toolbar",children:e.jsxs("div",{className:"workspace-diff-toolbar-actions",children:[e.jsxs("div",{className:"workspace-diff-menu-anchor",children:[e.jsx("button",{type:"button",className:"diff-icon-button",title:"Diff options","aria-haspopup":"menu","aria-expanded":h,onClick:()=>E(),children:e.jsx(_a,{size:15})}),h&&e.jsx(Yi,{collapsed:n,editorControlsVisible:a,hideWhiteSpace:c,loadFullFiles:u,renderMarkdown:x,wordDiffs:k,wordWrap:N,onClose:()=>E(!1),onCopyGitApply:F,onRefresh:I,onToggleCollapsed:v,onToggleEditorControlsVisible:R,onToggleHideWhiteSpace:D,onToggleLoadFullFiles:M,onToggleRenderMarkdown:te,onToggleWordDiffs:X,onToggleWordWrap:B})]}),o&&e.jsxs("div",{className:"workspace-editor-command-bar","aria-label":"Editor controls",children:[e.jsx("button",{type:"button",className:"diff-icon-button",title:"Save file","aria-label":"Save file",disabled:!s,onClick:G,children:e.jsx(ni,{size:14})}),e.jsx("button",{type:"button",className:"diff-icon-button",title:"Undo","aria-label":"Undo",onClick:H,children:e.jsx(vi,{size:14})}),e.jsx("button",{type:"button",className:"diff-icon-button",title:"Redo","aria-label":"Redo",onClick:W,children:e.jsx(gi,{size:14})}),e.jsx("button",{type:"button",className:"diff-icon-button",title:"Check file","aria-label":"Check file",disabled:!t,onClick:_,children:d?e.jsx(Oe,{className:"spinning",size:14}):e.jsx(Gs,{size:14})}),i&&e.jsxs("span",{className:`workspace-editor-diagnostic-chip ${i.severity}`,children:[i.severity==="error"||i.severity==="warning"||i.severity==="unavailable"?e.jsx(on,{size:13}):e.jsx(Gs,{size:13}),e.jsx("span",{children:i.label})]})]}),b&&e.jsx("button",{type:"button",className:`diff-icon-button ${x?"active":""}`,title:x?"Show Markdown source":"Render Markdown","aria-label":x?"Show Markdown source":"Render Markdown","aria-pressed":x,onClick:te,children:e.jsx(cn,{size:14})}),e.jsx("button",{type:"button",className:`diff-icon-button ${S?"active":""}`,title:S?"Show unified diff":"Show split diff","aria-label":S?"Show unified diff":"Show split diff","aria-pressed":S,onClick:q,children:e.jsx(di,{size:14})})]})})}const tr={cjs:"typescript",css:"css",html:"html",js:"typescript",json:"json",jsx:"typescript",md:"markdown",mjs:"typescript",py:"python",sh:"shell",ts:"typescript",tsx:"typescript",yaml:"yaml",yml:"yaml"};function os(t){const s=t.split("/").pop()?.toLowerCase()??"";if(s==="dockerfile")return"shell";if(s==="readme"||s==="readme.md")return"markdown";const n=s.includes(".")?s.split(".").pop()??"":"";return tr[n]??"text"}function sr(t,s){return t?s==="markdown"?nr(t):s==="json"?Fe(t,/("(?:\\.|[^"\\])*"(?=\s*:)|"(?:\\.|[^"\\])*"|[-]?\b\d+(?:\.\d+)?\b|\btrue\b|\bfalse\b|\bnull\b|[{}[\]:,])/g):s==="css"?Fe(t,/(\/\*.*?\*\/|#[\da-fA-F]{3,8}\b|--[\w-]+|[.#]?[\w-]+(?=\s*:)|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\b\d+(?:\.\d+)?(?:px|rem|em|%|vh|vw)?\b|[{}():;,])/g):s==="html"?Fe(t,/(<!--.*?-->|<\/?[\w-]+|[\w:-]+(?==)|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[<>/=])/g):s==="shell"?Fe(t,/(#.*$|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\b(?:cd|cp|export|git|npm|pnpm|bun|yarn|rm|mkdir|test|if|then|fi|for|do|done|echo)\b|\$[\w_]+|&&|\|\||[|&;=])/g):s==="python"?Fe(t,/(#.*$|"""[\s\S]*?"""|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\b(?:class|def|return|if|elif|else|for|while|try|except|finally|with|as|import|from|None|True|False|async|await|lambda|yield)\b|\b[A-Z][\w]*\b|\b\d+(?:\.\d+)?\b|[+\-*/%=<>!&|.:,()[\]{}]+)/g):Fe(t,/(\/\/.*$|\/\*.*?\*\/|`(?:\\.|[^`\\])*`|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\b(?:abstract|as|async|await|boolean|break|case|catch|class|const|continue|default|else|enum|export|extends|false|finally|for|from|function|if|import|in|interface|let|new|null|number|of|return|string|switch|throw|true|try|type|undefined|void|while)\b|\b[A-Z][\w]*\b|\b\d+(?:\.\d+)?\b|[+\-*/%=<>!&|?:.,()[\]{}]+)/g):[{text:" ",kind:"plain"}]}function nr(t){return/^\s{0,3}#{1,6}\s/.test(t)?[{text:t,kind:"keyword"}]:/^\s*[-*+]\s/.test(t)?[{text:t,kind:"property"}]:Fe(t,/(`[^`]+`|\*\*[^*]+\*\*|\[[^\]]+\]\([^)]+\)|https?:\/\/\S+)/g)}function ar(t){return/^(\/\/|#|\/\*|<!--)/.test(t)?"comment":/^["'`]/.test(t)?"string":/^[-]?\d/.test(t)||/^#[\da-fA-F]{3,8}\b/.test(t)?"number":/^\b[A-Z]/.test(t)?"type":/^[.#]?[\w-]+$/.test(t)&&t.includes("-")?"property":/^(?:[{}()[\],.:;<>/=+\-*&|!?%]+)$/.test(t)?"operator":/^(?:--|\$)/.test(t)?"property":"keyword"}function Fe(t,s){const n=[];let a=0;for(const i of t.matchAll(s)){const d=i.index??0;d>a&&n.push({text:t.slice(a,d),kind:"plain"});const c=i[0];if(n.push({text:c,kind:ar(c)}),a=d+c.length,/^(\/\/|#|<!--)/.test(c))break}return a<t.length&&n.push({text:t.slice(a),kind:"plain"}),n.length>0?n:[{text:t,kind:"plain"}]}function Ct({language:t,text:s}){return e.jsx(e.Fragment,{children:sr(s,t).map((n,a)=>e.jsx("span",{className:`syntax-token ${n.kind}`,children:n.text},`${a}-${n.text}`))})}const ir=`
3
-
4
- [file truncated]`,rr=l.lazy(()=>xa(()=>import("./WorkspaceMonacoEditor-CJ3x0GHH.js").then(t=>t.jc),__vite__mapDeps([0,1,2,3]))),ts=6,lr=18,Re=22,tn=44,or=160,sn=12;function $t({path:t,workspaceName:s,workspaceRootPath:n,onSelectPath:a}){const i=is(t,n),d=Wa(i),c=d?cr(i):s?.trim()||"Workspace",h=(d&&c!=="/"&&i.startsWith(`${c}/`)?i.slice(c.length+1):i).split("/").filter(Boolean),x=!!(a&&!d);return e.jsxs("span",{className:"workspace-file-breadcrumbs",title:d?i:`${c} > ${i}`,children:[a&&!d?e.jsx("button",{type:"button",onClick:()=>a(null),children:c}):e.jsx("span",{children:c}),h.map((o,b)=>{const S=b===h.length-1,k=h.slice(0,b+1).join("/");return e.jsxs("span",{className:"workspace-file-breadcrumb-segment",children:[e.jsx(Ia,{size:13}),a&&x&&!S?e.jsx("button",{type:"button",onClick:()=>a(k),children:o}):e.jsx("span",{children:o})]},`${b}-${o}`)})]})}function cr(t){const s=/^[A-Za-z]:\//.exec(t);return s?s[0].slice(0,-1):"/"}function dr({collapsed:t=!1,diagnostics:s=[],draftContent:n,editable:a=!1,editorRef:i,error:d,file:c,hideWhiteSpace:u=!1,headerActions:h,imageSrc:x,loading:o,loadFullFiles:b,onOpenImage:S,onSelectBreadcrumbPath:k,onDraftContentChange:N,onLspAction:F,onSave:_,renderMarkdown:W,saveError:G,saving:H=!1,splitView:I=!1,wordDiffs:v=!1,wordWrap:R,workspaceName:D,workspaceRootPath:M}){Ee(d,{prefix:"File preview"}),Ee(G,{prefix:"Save failed"});const E=n??c.content??"",te=l.useMemo(()=>E.split(`
5
- `).slice(0,800),[E]),q=os(c.path),X=n!=null||c.content!=null,B=E.endsWith(ir),Q=W&&X&&as(c.path),se=X&&za(c.path)&&mr(E);return x?e.jsxs("div",{className:"workspace-file-preview",children:[e.jsxs("div",{className:"workspace-diff-file-heading",children:[e.jsxs("div",{children:[e.jsx($t,{path:c.path,workspaceName:D,workspaceRootPath:M,onSelectPath:k}),e.jsxs("span",{className:"diff-addition",children:["+",c.additions]}),e.jsxs("span",{className:"diff-deletion",children:["-",c.deletions]})]}),h]}),e.jsx("div",{className:"workspace-file-image-stage",children:e.jsx("button",{type:"button",className:"workspace-file-image-button","aria-label":`Open image preview for ${c.path}`,onClick:S,children:e.jsx("img",{alt:c.path,decoding:"async",src:x})})})]}):!b&&c.patch||!X&&c.patch?I?e.jsx(fr,{collapsed:t,file:c,hideWhiteSpace:u,onSelectBreadcrumbPath:k,wordDiffs:v,wordWrap:R,headerActions:h,workspaceName:D,workspaceRootPath:M}):e.jsx(ur,{collapsed:t,file:c,hideWhiteSpace:u,wordWrap:R,workspaceName:D,workspaceRootPath:M,onSelectBreadcrumbPath:k,headerActions:h}):e.jsxs("div",{className:`workspace-file-preview ${R?"wrap":""}`,children:[e.jsxs("div",{className:"workspace-diff-file-heading",children:[e.jsxs("div",{children:[e.jsx($t,{path:c.path,workspaceName:D,workspaceRootPath:M,onSelectPath:k}),e.jsxs("span",{className:"diff-addition",children:["+",c.additions]}),e.jsxs("span",{className:"diff-deletion",children:["-",c.deletions]})]}),e.jsxs("span",{className:"workspace-file-heading-end",children:[H?e.jsx("span",{className:"workspace-file-save-state",children:"Saving"}):null,h]})]}),X?Q?e.jsx("div",{className:"workspace-markdown-preview",children:e.jsx(va,{content:E})}):se?e.jsx(pr,{file:c,contentBase64:E}):a&&!B?e.jsx(l.Suspense,{fallback:e.jsx("div",{className:"workspace-diff-code-empty",children:"Loading editor"}),children:e.jsx(rr,{diagnostics:s,filePath:c.path,onChange:Y=>N?.(Y),onLspAction:F,onSave:()=>_?.(),ref:i,value:E,wordWrap:R})}):e.jsx("div",{className:"workspace-file-code",children:te.map((Y,le)=>e.jsxs("div",{className:"workspace-file-code-row",children:[e.jsx("span",{children:le+1}),e.jsx("code",{children:e.jsx(Ct,{language:q,text:Y||" "})})]},`${le}-${Y}`))}):e.jsx("div",{className:"workspace-diff-code-empty",children:o?"Loading file content":"No file content available."})]})}function ur({collapsed:t=!1,file:s,hideWhiteSpace:n=!1,wordWrap:a,workspaceName:i,workspaceRootPath:d,onSelectBreadcrumbPath:c,headerActions:u}){const h=l.useMemo(()=>bn(s.patch,n),[s.patch,n]),x=os(s.path);return e.jsxs("div",{className:`workspace-diff-preview ${a?"wrap":""}`,children:[e.jsxs("div",{className:"workspace-diff-file-heading",children:[e.jsxs("div",{children:[e.jsx($t,{path:s.path,workspaceName:i??null,workspaceRootPath:d,onSelectPath:c}),e.jsxs("span",{className:"diff-addition",children:["+",s.additions]}),e.jsxs("span",{className:"diff-deletion",children:["-",s.deletions]})]}),u]}),t?e.jsx("div",{className:"workspace-diff-code-empty",children:"Diff collapsed"}):e.jsx(xn,{ariaLabel:`${s.path} diff`,className:"workspace-diff-code",emptyMessage:"No patch available.",rows:h,renderRow:(o,b)=>o.kind==="spacer"?e.jsx("div",{className:"workspace-diff-spacer",role:"row",children:o.label},`${o.label}-${b}`):e.jsxs("div",{className:`workspace-diff-code-row ${o.kind}`,role:"row",children:[e.jsx("span",{className:"workspace-diff-line-number",role:"cell",children:o.newLine||o.oldLine}),e.jsx("code",{role:"cell",children:e.jsx(Ct,{language:x,text:o.newContent||o.oldContent||" "})})]},`${o.oldLine}-${o.newLine}-${b}`),wordWrap:a})]})}function fr({collapsed:t,file:s,hideWhiteSpace:n,wordDiffs:a,wordWrap:i,workspaceName:d,workspaceRootPath:c,onSelectBreadcrumbPath:u,headerActions:h}){const x=l.useMemo(()=>bn(s.patch,n),[s.patch,n]),o=os(s.path);return e.jsxs("div",{className:`workspace-diff-preview split ${i?"wrap":""} ${a?"word-diffs":""}`,children:[e.jsxs("div",{className:"workspace-diff-file-heading",children:[e.jsxs("div",{children:[e.jsx($t,{path:s.path,workspaceName:d,workspaceRootPath:c,onSelectPath:u}),e.jsxs("span",{className:"diff-addition",children:["+",s.additions]}),e.jsxs("span",{className:"diff-deletion",children:["-",s.deletions]})]}),e.jsxs("span",{className:"workspace-file-heading-end",children:[h,e.jsx(ka,{size:14})]})]}),t?e.jsx("div",{className:"workspace-diff-code-empty",children:"Diff collapsed"}):e.jsx(xn,{ariaLabel:`${s.path} split diff`,className:"workspace-split-code",emptyMessage:"No patch available.",rows:x,renderRow:(b,S)=>b.kind==="spacer"?e.jsx("div",{className:"workspace-diff-spacer split",role:"row",children:b.label},`${b.label}-${S}`):e.jsxs("div",{className:`workspace-split-row ${b.kind}`,role:"row",children:[e.jsx("span",{className:"workspace-diff-line-number old",role:"cell",children:b.oldLine}),e.jsx("code",{className:"old",role:"cell",children:e.jsx(Ct,{language:o,text:b.oldContent||" "})}),e.jsx("span",{className:"workspace-diff-line-number new",role:"cell",children:b.newLine}),e.jsx("code",{className:"new",role:"cell",children:e.jsx(Ct,{language:o,text:b.newContent||" "})})]},`${b.oldLine}-${b.newLine}-${S}`),wordWrap:i})]})}function pr({file:t,contentBase64:s}){const n=l.useMemo(()=>{const a=xr(s);if(!a)return null;const i=new Blob([new Uint8Array(a)],{type:hr(t.path)});return URL.createObjectURL(i)},[s,t.path]);return l.useEffect(()=>()=>{n&&URL.revokeObjectURL(n)},[n]),n?e.jsxs("div",{className:"workspace-document-preview",children:[e.jsxs("div",{className:"workspace-document-preview-card",children:[e.jsx("strong",{children:t.path.split("/").pop()}),e.jsx("span",{children:/\.pdf$/i.test(t.path)?"PDF document":"Word document"}),e.jsx("a",{href:n,download:t.path.split("/").pop()||"document",children:"Download document"})]}),e.jsx("iframe",{src:n,title:`${t.path} preview`})]}):e.jsx("div",{className:"workspace-diff-code-empty",children:"Document preview unavailable."})}function hr(t){return/\.pdf$/i.test(t)?"application/pdf":/\.docx$/i.test(t)?"application/vnd.openxmlformats-officedocument.wordprocessingml.document":"application/msword"}function mr(t){return t.length>0&&/^[A-Za-z0-9+/=\s]+$/.test(t)}function xr(t){try{const s=atob(t.replace(/\s/g,"")),n=new Uint8Array(s.length);for(let a=0;a<s.length;a+=1)n[a]=s.charCodeAt(a);return n}catch{return null}}function xn({ariaLabel:t,className:s,emptyMessage:n,rows:a,renderRow:i,wordWrap:d}){const c=!d&&a.length>or,{endIndex:u,offsetTop:h,scrollRef:x,startIndex:o,totalHeight:b}=br(a.length,c);return a.length===0?e.jsx("div",{className:s,role:"table","aria-label":t,children:e.jsx("div",{className:"workspace-diff-code-empty",children:n})}):c?e.jsx("div",{className:`${s} virtualized`,ref:x,role:"table","aria-label":t,"aria-rowcount":a.length,children:e.jsx("div",{className:"workspace-diff-virtual-spacer",style:{height:b},children:e.jsx("div",{className:"workspace-diff-virtual-window",style:{transform:`translateY(${h}px)`},children:a.slice(o,u).map((S,k)=>i(S,o+k))})})}):e.jsx("div",{className:s,role:"table","aria-label":t,children:a.map(i)})}function br(t,s){const n=l.useRef(null),[a,i]=l.useState({height:Re*tn,scrollTop:0}),d=l.useCallback(()=>{const x=n.current;x&&i({height:x.clientHeight||Re*tn,scrollTop:x.scrollTop})},[]);if(l.useEffect(()=>{if(!s)return;const x=n.current;if(!x)return;d();let o=0;const b=()=>{if(typeof window>"u"){d();return}window.cancelAnimationFrame(o),o=window.requestAnimationFrame(d)};x.addEventListener("scroll",b,{passive:!0});const S=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>b());return S?.observe(x),()=>{x.removeEventListener("scroll",b),S?.disconnect(),typeof window<"u"&&window.cancelAnimationFrame(o)}},[s,d]),!s)return{endIndex:t,offsetTop:0,scrollRef:n,startIndex:0,totalHeight:t*Re};const c=Math.ceil(a.height/Re),u=Math.max(0,Math.floor(a.scrollTop/Re)-sn);return{endIndex:Math.min(t,u+c+sn*2),offsetTop:u*Re,scrollRef:n,startIndex:u,totalHeight:t*Re}}function bn(t,s){if(!t.trim())return[];const n=[];let a=0,i=0,d=null,c=null,u=!1,h=[];function x(){n.push(...gr(h)),h=[]}function o(){u&&(x(),d=a,c=i,u=!1)}for(const b of t.split(`
6
- `)){const S=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(b);if(S){o();const F=Number(S[1]),_=Number(S[2]);if(d!==null&&c!==null){const W=Math.max(F-d,_-c,0);W>0&&n.push({kind:"spacer",label:gn(W)})}a=F,i=_,u=!0;continue}if(b.startsWith("diff --git")||b.startsWith("index ")||b.startsWith("--- ")||b.startsWith("+++ ")||!u||b.startsWith("\\ No newline"))continue;const k=b.slice(1)||" ";if(s&&!k.trim())continue;if(b.startsWith("+")){x(),n.push({kind:"addition",oldLine:"",newLine:String(i||""),oldContent:"",newContent:k}),i+=1;continue}if(b.startsWith("-")){x(),n.push({kind:"deletion",oldLine:String(a||""),newLine:"",oldContent:k,newContent:""}),a+=1;continue}const N=b.startsWith(" ")?b.slice(1)||" ":b||" ";s&&!N.trim()||(h.push({kind:"context",oldLine:String(a||""),newLine:String(i||""),oldContent:N,newContent:N}),a+=1,i+=1)}return o(),n}function gr(t){if(t.length<lr)return t;const s=t.length-ts*2;return s<=0?t:[...t.slice(0,ts),{kind:"spacer",label:gn(s)},...t.slice(-ts)]}function gn(t){return`${t} unmodified ${t===1?"line":"lines"}`}const Rt=`
7
-
8
- [file truncated]`,jr="openpond.sandboxSourceReadback.v1";async function vr(t,s,n,a=[]){let i;try{i=await z.sandboxDownloadFile(t,s,n,{maxBytes:256*1024})}catch(c){const u=c instanceof Error?c.message:String(c);if(!kr(u))throw c;const h=Sr(a,s,n);if(h)return h;const x=!!cs(a,s)?.artifact,o=await z.sandbox(t,s).catch(()=>null);throw new Error(wr(n,o?.sandbox??null,u,{hasReadbackArtifact:x}))}const d=i.file.isBinary?i.file.contentsBase64||null:`${i.contents}${i.file.truncated?Rt:""}`;return{path:i.file.path,status:"",additions:0,deletions:0,patch:"",content:d}}function kr(t){return t.includes("sandbox_not_ready")&&t.includes("placement_stale")||t.includes("sandbox_not_running")}function wr(t,s,n="sandbox_not_ready:placement_stale",a={}){const i=s?Nr(s):null,d=t||"this file";if(a.hasReadbackArtifact)return`Sandbox file content is unavailable because the stopped runtime placement is stale. The latest source checkpoint has a saved readback artifact, but ${d} was not captured as text. Resume the sandbox to inspect it. ${n}`;if(!i)return`Sandbox file content is unavailable because the stopped runtime placement is stale. Resume the sandbox to inspect ${d}. ${n}`;const c=i.preservedSha?i.preservedSha.slice(0,12):null,u=i.sourceRef?` (${i.sourceRef})`:"";return`Sandbox file content is unavailable because the stopped runtime placement is stale. The latest source checkpoint is saved${c?` at ${c}`:""}${u}, but this Desktop app cannot read file bodies from preserved source refs yet. Resume the sandbox to inspect ${d}.`}function yr(t,s){if(!s)return null;const n=cs(t,s);if(!n)return null;const a=vn(n.artifact),i=new Map;for(const u of ds(a))i.set(u.path,u);for(const u of kn(n.artifact)){const h=jn(n.artifact,u.path);h&&i.set(u.path,h)}const d=[...i.values()].sort((u,h)=>u.path.localeCompare(h.path)),c=[...new Set(d.map(u=>u.path))].sort((u,h)=>u.localeCompare(h));return{appId:s,repoPath:"",initialized:!0,dirty:!1,filesChanged:d.length,additions:d.reduce((u,h)=>u+h.additions,0),deletions:d.reduce((u,h)=>u+h.deletions,0),repoFiles:c,files:d,error:null,updatedAt:Ue(re(n.artifact)?.createdAt)??n.event.timestamp}}function Sr(t,s,n){if(!s)return null;const a=cs(t,s);return a?jn(a.artifact,n):null}function cs(t,s){for(let n=t.length-1;n>=0;n-=1){const a=t[n];if(a?.name!=="workspace_action_result")continue;const i=re(a.data),d=re(i?.sourcePreservation),c=re(d?.sourceReadbackArtifact);if(c&&c.schemaVersion===jr&&c.sandboxId===s)return{artifact:c,event:a}}return null}function jn(t,s){const n=ds(vn(t)).find(d=>d.path===s),a=kn(t).find(d=>d.path===s);if(!n&&!a)return null;const i=typeof a?.content=="string"?`${a.content}${a.truncated?Rt:""}`:null;return{path:a?.path??n?.path??s,status:n?.status??"M",additions:n?.additions??0,deletions:n?.deletions??0,patch:n?.patch??"",content:i}}function vn(t){const s=re(t.patch);return typeof s?.text=="string"?s.text:""}function kn(t){return(Array.isArray(t.files)?t.files:[]).map(n=>{const a=re(n),i=Ue(a?.path);return i?{path:i,...typeof a?.content=="string"?{content:a.content}:{},...a?.truncated===!0?{truncated:!0}:{}}:null}).filter(n=>!!n)}function Nr(t){const s=re(t.metadata)??{},n=re(s.sourcePreservation)??re(s.sourcePreserve),a=re(s.sourceChangeDetection),i=Ue(n?.preservedSha)??Ue(a?.preservedSha)??null,d=Ue(n?.sourceRef)??Ue(a?.sourceRef)??(typeof t.repoRef=="string"?t.repoRef:null);return!i&&!d?null:{preservedSha:i,sourceRef:d}}function re(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function Ue(t){return typeof t=="string"&&t.trim()?t.trim():null}async function Cr(t,s,n,a){const i=await z.sandboxUploadFile(t,s,{path:n,contents:a});return await z.preserveSandboxSource(t,s,{message:"Auto-preserve source after right sidebar save"}),{path:i.file.path,status:"M",additions:0,deletions:0,patch:"",content:a}}function $r(t){return t.filter(s=>s.type==="file").map(s=>s.path).sort((s,n)=>s.localeCompare(n))}function Rr(t,s){const n=new Map;for(const a of ds(t?.diff??""))n.set(a.path,a);for(const a of Fr(s?.porcelain??""))n.has(a.path)||n.set(a.path,a);return[...n.values()].sort((a,i)=>a.path.localeCompare(i.path))}function ds(t){const s=[];let n=null;const a=()=>{n&&(s.push({path:n.path,status:n.status,additions:n.additions,deletions:n.deletions,patch:n.patchLines.join(`
9
- `),content:null}),n=null)};for(const i of t.split(`
10
- `)){if(i.startsWith("diff --git ")){a(),n={path:Pr(i)??"changed-file",status:"M",additions:0,deletions:0,patchLines:[i]};continue}if(n){if(n.patchLines.push(i),i.startsWith("+++ ")){const d=nn(i.slice(4));d&&(n.path=d);continue}if(i.startsWith("--- ")){const d=nn(i.slice(4));d&&n.path==="changed-file"&&(n.path=d);continue}i.startsWith("new file mode ")&&(n.status="A"),i.startsWith("deleted file mode ")&&(n.status="D"),i.startsWith("rename to ")&&(n.status="R",n.path=i.slice(10).trim()||n.path),i.startsWith("+")&&!i.startsWith("+++")&&(n.additions+=1),i.startsWith("-")&&!i.startsWith("---")&&(n.deletions+=1)}}return a(),s}function Fr(t){const s=[];for(const n of t.split(`
11
- `)){if(!n.trim())continue;const a=Er(n);a&&s.push({path:a,status:n.slice(0,2).trim()||"M",additions:0,deletions:0,patch:"",content:null})}return s}function Er(t){const s=t.slice(3).trim();return s?s.split(" -> ").pop()?.trim()||s:null}function Pr(t){const s=/^diff --git a\/(.+) b\/(.+)$/.exec(t.trim());return s?.[2]??s?.[1]??null}function nn(t){const s=t.trim();return!s||s==="/dev/null"?null:s.startsWith("a/")||s.startsWith("b/")?s.slice(2):s}const wn="openpond.workspace.editorControlsVisible";function an(){try{return dn.getItem(wn)==="true"}catch{return!1}}function Ar(t){try{dn.setItem(wn,String(t))}catch{}}function Lr({activeDiagnostics:t,activeServers:s,editorDiagnosticsChecking:n,editorLspEnabled:a,showEditorCommandBar:i}){if(!i)return null;if(!a)return{label:"LSP off",severity:"unavailable"};if(n)return{label:"Checking",severity:"info"};const d=t.filter(x=>x.severity==="error").length;if(d>0)return{label:`${d} error${d===1?"":"s"}`,severity:"error"};const c=t.filter(x=>x.severity==="warning").length;if(c>0)return{label:`${c} warning${c===1?"":"s"}`,severity:"warning"};const u=t.length;if(u>0)return{label:`${u} note${u===1?"":"s"}`,severity:"info"};if(!s)return null;const h=s.find(x=>x.status!=="connected");return h?{label:h.id==="none"?"No LSP":`${h.id} unavailable`,severity:"unavailable"}:{label:"No issues",severity:"none"}}const rn=3e3,Dr=2e3,ln=[],Tr=[];function _r({appId:t,workspaceId:s,workspaceKind:n,connection:a,runtimeEvents:i,diff:d,editorPreferences:c,loading:u,workspaceName:h,workspaceInitialized:x,workspaceError:o,expanded:b,fileRootPath:S,filesWithPreview:k=!1,openFileRequest:N,readOnly:F=!1,sideChatTabs:_,sourceSwitcher:W,tabRequest:G,viewState:H,onRefresh:I,onResizeStart:v,onToggleExpanded:R,onOpenBrowser:D,onOpenBrowserUrl:M,onViewStateChange:E,onCloseSideChat:te,onOpenSideChat:q,onSelectSideChat:X,goalDetails:B,sandboxFileSource:Q,trainingSummary:se,sidebarFileBookmarks:Y=[],sidebarFileSourceSessionId:le=null,onSetSidebarFileStatus:w}){return e.jsx(Br,{appId:t,workspaceId:s,workspaceKind:n,connection:a,runtimeEvents:i??[],diff:d,editorPreferences:c??null,loading:u,workspaceName:h,workspaceInitialized:x,workspaceError:o,expanded:b,fileRootPath:S??null,filesWithPreview:k,openFileRequest:N,readOnly:F,sideChatTabs:_??[],sourceSwitcher:W??null,tabRequest:G??null,viewState:H??null,onRefresh:I,onResizeStart:v,onToggleExpanded:R,onOpenBrowser:D,onOpenBrowserUrl:M,onViewStateChange:E,onCloseSideChat:te,onOpenSideChat:q,onSelectSideChat:X,goalDetails:B??null,sandboxFileSource:Q??null,trainingSummary:se??null,sidebarFileBookmarks:Y,sidebarFileSourceSessionId:le,onSetSidebarFileStatus:w})}function Mr(t,s,n,a){return t&&s?.content!=null?{...t,content:s.content}:s&&!t&&ss(s)?s:t&&ss(t)?t:s&&ss(s)?s:t??s??n??rs(a)}function ss(t){return!!(t.patch||t.content!=null)}function zr({changedFiles:t,checkpointStatus:s,dirty:n,error:a,loading:i,preservedReadback:d,sandboxMode:c,sourcePending:u}){if(u)return{label:"sandbox pending",tone:"loading"};if(i)return{label:"refreshing",tone:"loading"};if(c&&d&&s)return s;if(a)return{label:"status unavailable",tone:"error"};if(c&&s?.tone==="error"||c&&s&&!n&&t===0)return s;if(n||t>0){const h=Math.max(1,t),x=h===1?"change":"changes";return{label:c?`${h} unpreserved ${x}`:`${h} local ${x}`,tone:"dirty"}}return{label:c?"sandbox clean":"local clean",tone:"clean"}}function Wr(t,s){if(!s)return null;for(let n=t.length-1;n>=0;n-=1){const a=t[n];if(a?.name!=="workspace_action_result")continue;const i=a.data&&typeof a.data=="object"&&!Array.isArray(a.data)?a.data:null,d=i?.sourcePreservation&&typeof i.sourcePreservation=="object"&&!Array.isArray(i.sourcePreservation)?i.sourcePreservation:null;if(d?.attempted===!0&&d.sandboxId===s)return d.ok!==!0?{label:"checkpoint failed",tone:"error"}:d.preserved===!0?{label:"checkpoint saved",tone:"clean"}:{label:"checkpoint clean",tone:"clean"}}return null}function Ir(t){const s=t.split("/").filter(Boolean);return s.map((n,a)=>s.slice(0,a+1).join("/"))}function Br({appId:t,workspaceId:s,workspaceKind:n,connection:a,runtimeEvents:i,diff:d,editorPreferences:c,loading:u,workspaceName:h,workspaceInitialized:x,workspaceError:o,expanded:b,fileRootPath:S,filesWithPreview:k,openFileRequest:N,readOnly:F,sideChatTabs:_,sourceSwitcher:W,tabRequest:G,viewState:H,onRefresh:I,onResizeStart:v,onToggleExpanded:R,onOpenBrowser:D,onOpenBrowserUrl:M,onViewStateChange:E,onCloseSideChat:te,onOpenSideChat:q,onSelectSideChat:X,goalDetails:B,sandboxFileSource:Q,trainingSummary:se,sidebarFileBookmarks:Y,sidebarFileSourceSessionId:le,onSetSidebarFileStatus:w}){const O=H??Ka(),[A,T]=l.useState(O.activeTab),[Pt,Pe]=l.useState(!1),[ot,oe]=l.useState(!1),[yn,ne]=l.useState(!1),[At,Lt]=l.useState(""),[J,He]=l.useState(()=>[...O.openFilePaths]),[j,ge]=l.useState(O.selectedPath),[us,Sn]=l.useState(!1),[fs,Nn]=l.useState(!1),[Ae,Cn]=l.useState(!1),[Dt,$n]=l.useState(!0),[ps,hs]=l.useState(an);Ba(()=>hs(an()));const[ms,Rn]=l.useState(!1),[xs,Fn]=l.useState(!1),[bs,En]=l.useState(!1),[ae,Le]=l.useState({}),[ct,dt]=l.useState(()=>new Set),[gs,ut]=l.useState({}),[ue,Ve]=l.useState({}),[js,Tt]=l.useState(()=>new Set),[Ge,Ke]=l.useState(null),[Pn,_t]=l.useState(!1),[vs,qe]=l.useState(null),[ks,Mt]=l.useState({}),[An,zt]=l.useState({}),[Ln,Wt]=l.useState(null),[Dn,je]=l.useState(null),[ws,It]=l.useState(null),[Tn,ve]=l.useState(null);Ee(o,{prefix:"Workspace"}),Ee(vs,{prefix:"Sandbox files"});const[Bt,ft]=l.useState(null),[_n,Xe]=l.useState({}),[pt,Ot]=l.useState(null),[De,ht]=l.useState(null),[mt,xt]=l.useState(null),ee=c??Va.editor,ys=l.useRef(ae),Ut=l.useRef(Jt(O)),Ht=l.useRef(Jt(O)),Ss=l.useRef(null),Vt=l.useRef(I),ce=l.useRef(!1),Ze=l.useRef(null),Qe=l.useRef(0),fe=l.useRef(null),Ye=l.useRef(null),P=Q?.sandboxId?.trim()||null,C=!!Q,Te=!!se||C&&!!P,bt=C?`sandbox:${P??"pending"}`:`workspace:${t??"none"}`,Ns=C?!!P:!!t,Cs=l.useRef(bt),pe=!!(B?.createRuntime||B?.goalRuntime||B?.subagentRuntime),_e=l.useCallback(async(r={})=>{if(C){if(!a){Ke(null),qe("OpenPond App server is not connected.");return}if(!P){Ke(null),qe(null);return}r.silent||_t(!0);try{const[m,f,g]=await Promise.allSettled([z.sandboxFiles(a,P,{recursive:!0,maxEntries:Dr}),z.sandboxGitStatus(a,P),z.sandboxGitDiff(a,P,{})]);if(m.status==="rejected")throw m.reason;const y=$r(m.value.files),p=f.status==="fulfilled"?f.value.status:null,$=g.status==="fulfilled"?g.value.diff:null,L=Rr($,p),at=L.reduce((Qt,Yt)=>Qt+Yt.additions,0),ma=L.reduce((Qt,Yt)=>Qt+Yt.deletions,0);Ke({appId:P,repoPath:"",initialized:!0,dirty:p?!p.clean:L.length>0,filesChanged:L.length,additions:at,deletions:ma,repoFiles:y,files:L,error:null,updatedAt:new Date().toISOString()}),qe(null)}catch(m){Ke(null),qe(m instanceof Error?m.message:String(m))}finally{r.silent||_t(!1)}}},[a,P,C]),$s=l.useMemo(()=>yr(i,P),[i,P]),Rs=!!(Ge&&((Ge.files?.length??0)>0||(Ge.repoFiles?.length??0)>0)),Mn=C&&!Rs&&!!$s,he=C?Rs?Ge:$s??Ge:d,Je=he?.repoPath??null,zn=l.useMemo(()=>Wr(i,P),[i,P]),Me=he?.files??ln,Fs=he?.files??ln,ke=l.useMemo(()=>new Map(Fs.map(r=>[r.path,r])),[Fs]),we=l.useMemo(()=>new Map(Me.map(r=>[r.path,r])),[Me]),ze=he?.repoFiles??(Me.length>0?Me.map(r=>r.path):Tr),We=l.useMemo(()=>Me.filter(r=>!Oa(r,ze)),[ze,Me]),ye=l.useMemo(()=>mt&&!ze.includes(mt)?[mt,...ze]:ze,[ze,mt]),Es=l.useMemo(()=>J.map(r=>ke.get(r)??ae[r]??we.get(r)??rs(r)),[ke,we,ae,J]),gt=l.useMemo(()=>{const r={};for(const m of J){if(Ce(m))continue;const f=ke.get(m)??ae[m]??we.get(m)??rs(m);f.content!=null&&(r[m]=f.content)}return r},[ke,we,ae,J]),Ie=l.useMemo(()=>{const r=new Set;for(const[m,f]of Object.entries(ue))f.content!==f.savedContent&&r.add(m);return r},[ue]),Wn=l.useMemo(()=>{const r=At.trim().toLowerCase(),m=ye;return r?m.filter(f=>f.toLowerCase().includes(r)):m},[ye,At]),Gt=l.useMemo(()=>({activeTab:A,openFilePaths:J,selectedPath:j}),[A,J,j]);l.useEffect(()=>{ys.current=ae},[ae]),l.useEffect(()=>{Ze.current=pt},[pt]),l.useEffect(()=>{Ve(r=>{let m=!1;const f={...r},g=new Set(J),y=d?.updatedAt?Date.parse(d.updatedAt):null;for(const[p,$]of Object.entries(f))g.has(p)||$.content!==$.savedContent||(delete f[p],m=!0);for(const[p,$]of Object.entries(gt)){const L=f[p];if(!L){f[p]={content:$,savedContent:$},m=!0;continue}if(L.content===L.savedContent&&L.savedContent!==$){if(L.savedAt&&(y===null||y<L.savedAt))continue;f[p]={content:$,savedContent:$},m=!0}}return m?f:r})},[d?.updatedAt,gt,J]),l.useEffect(()=>{Vt.current=I},[I]),l.useEffect(()=>{if(!H)return;const r=Ua(H,Je);Ks(Ut.current,r)||(Ut.current=r,Ht.current=r,T(r.activeTab),He(r.openFilePaths),ge(r.selectedPath))},[H,Je]),l.useEffect(()=>{if(ct.size>0||Ks(Ht.current,Gt))return;const r=Jt(Gt);Ht.current=r,Ut.current=r,E?.(r)},[Gt,E,ct]),l.useEffect(()=>{F||C||!a||!t||!x||d||o||ce.current||(ce.current=!0,Promise.resolve(Vt.current({silent:!0})).catch(()=>{}).finally(()=>{ce.current=!1}))},[t,a,d,F,C,o,x]),l.useEffect(()=>(Cs.current!==bt&&(Cs.current=bt,fe.current?.abort(new Error("lsp_diagnostics_source_changed")),fe.current=null,He([]),ge(null),Le({}),dt(new Set),ut({}),Ve({}),Tt(new Set),Ke(null),qe(null),_t(!1),Mt({}),zt({}),Wt(null),je(null),ve(null),ft(null),Xe({}),Ot(null),ht(null),xt(null)),()=>{fe.current?.abort(new Error("lsp_diagnostics_unmounted")),fe.current=null}),[bt]),l.useEffect(()=>{if(!(!N||Ss.current===N.id)&&!(!N.file&&!Ns)){if(Ss.current=N.id,N.file){In(N.file,N.imageUrl,N.source);return}jt(N.path,{source:N.source})}},[Ns,N]),l.useEffect(()=>{if(!C||(_e(),!a||!P))return;let r=!1;async function m(){if(!(r||ce.current)&&!(typeof document<"u"&&document.visibilityState==="hidden")){ce.current=!0;try{await _e({silent:!0})}finally{ce.current=!1}}}const f=window.setInterval(()=>{m()},rn),g=()=>{m()};return window.addEventListener("focus",g),()=>{r=!0,window.clearInterval(f),window.removeEventListener("focus",g)}},[a,_e,P,C]),l.useEffect(()=>{if(F||C||!a||!t||!x)return;let r=!1;async function m(){if(!(r||ce.current)&&!(typeof document<"u"&&document.visibilityState==="hidden")){ce.current=!0;try{await Vt.current({silent:!0})}catch{}finally{ce.current=!1}}}const f=window.setInterval(()=>{m()},rn),g=()=>{m()};return window.addEventListener("focus",g),()=>{r=!0,window.clearInterval(f),window.removeEventListener("focus",g)}},[t,a,F,C,x]),l.useEffect(()=>{if(C||!a||!t||n==="local_project"){xt(null);return}let r=!1;return z.workspaceTemplateConfig(a,t).then(m=>{r||xt(m.exists?m.configPath??Ha:null)}).catch(()=>{r||xt(null)}),()=>{r=!0}},[t,a,C,n]),l.useEffect(()=>{!j||ye.includes(j)||J.includes(j)||ge(We[0]?.path??null)},[We,J,ye,j]),l.useEffect(()=>{B?.active&&pe&&T("goal")},[B?.active,pe]),l.useEffect(()=>{G&&T(G.tab)},[G]),l.useEffect(()=>{!pe&&A==="goal"&&T("files")},[A,pe]),l.useEffect(()=>{!Te&&A==="summary"&&T("files")},[A,Te]);const K=A==="file"||k&&A==="files"?j:null;l.useEffect(()=>{if(!a||!K)return;if(Ce(K)){ve(null),je(p=>p===K?null:p);return}const r=Bt?.path===K,m=et(K);if(F&&(m?.content!=null||m?.patch)){ve(null),je(p=>p===K?null:p);return}if(!r&&(m?.content!=null||m?.patch&&!Ae)){ve(null),je(p=>p===K?null:p);return}let f=!1;const g=ys.current[K];return g?.content==null&&(Ae||!g?.patch)&&je(K),ve(null),(C?P?vr(a,P,K,i):Promise.reject(new Error(Q?.emptyMessage??"No sandbox filesystem is available.")):t?z.workspaceFile(a,t,K):Promise.reject(new Error("Workspace files are unavailable."))).then(p=>{f||Le($=>{const L=$[p.path];return L?.content===p.content&&L.patch===p.patch&&L.status===p.status?$:{...$,[p.path]:p}})}).catch(p=>{f||ve(p instanceof Error?p.message:String(p))}).finally(()=>{f||(je(p=>p===K?null:p),ft(p=>p&&p.id===Bt?.id&&p.path===K?null:p))}),()=>{f=!0}},[A,t,a,Bt,Ae,F,i,Q?.emptyMessage,P,C,K]);function jt(r,m){It(null);const f=C?P:t;if(Os(r)&&!m?.source&&a&&f){wa(a,f,r,C?"sandbox":"local").then(M).catch(y=>It(y instanceof Error?y.message:"Could not open HTML preview."));return}const g=is(r,Je);g&&(dt(y=>{if(!y.has(g))return y;const p=new Set(y);return p.delete(g),p}),Le(y=>{if(!(g in y))return y;const p={...y};return delete p[g],p}),ut(y=>{if(!(g in y))return y;const p={...y};return delete p[g],p}),ft({id:Date.now(),path:g}),k||He(y=>y.includes(g)?y:[...y,g]),ge(g),T(k?"files":"file"),!C&&a&&t&&Ce(g)&&ht(g),oe(!1),ne(!1),Lt(""))}function In(r,m,f=!1){if(Os(r.path)&&r.content!=null&&!f&&a){ya(a,r.path,r.content).then(M).catch(p=>It(p instanceof Error?p.message:"Could not open HTML preview."));return}const g=is(r.path,Je);if(!g)return;const y={...r,path:g};Le(p=>({...p,[g]:y})),dt(p=>{const $=new Set(p);return $.add(g),$}),ut(p=>{if(!m){if(!(g in p))return p;const $={...p};return delete $[g],$}return p[g]===m?p:{...p,[g]:m}}),ft(null),ve(null),je(null),k||He(p=>p.includes(g)?p:[...p,g]),ge(g),T(k?"files":"file"),oe(!1),ne(!1),Lt("")}const Bn=l.useCallback(()=>{hs(r=>{const m=!r;return Ar(m),m})},[]),et=r=>Mr(ke.get(r),ae[r],we.get(r),r),On=l.useCallback((r,m)=>{Ve(f=>{const g=f[r],y=g?.savedContent??gt[r]??et(r).content??"";return{...f,[r]:{content:m,savedContent:y,savedAt:g?.savedAt}}}),Xe(f=>{if(!(r in f))return f;const g={...f};return delete g[r],g})},[ke,we,ae,gt]),Be=l.useCallback(async(r,m={})=>{if(C||!a||!t||Ce(r))return;const f=et(r),g=m.content??ue[r]?.content??f.content??void 0;if(g?.endsWith(Rt))return;const y=Qe.current+1;Qe.current=y,fe.current?.abort(new Error("lsp_diagnostics_superseded"));const p=new AbortController;fe.current=p,Wt(r);try{const $=await z.workspaceLspTouch(a,t,{path:r,content:g,waitForDiagnostics:m.waitForDiagnostics??!0},{signal:p.signal});if(y!==Qe.current)return;Mt(L=>({...L,[$.path]:$.diagnostics})),zt(L=>({...L,[$.path]:$.servers}))}catch($){if(p.signal.aborted||y!==Qe.current)return;const L=$ instanceof Error?$.message:String($);Mt(at=>({...at,[r]:[]})),zt(at=>({...at,[r]:[{id:"lsp",root:"",status:"error",message:L}]}))}finally{if(fe.current===p&&(fe.current=null),p.signal.aborted)return;y===Qe.current&&Wt($=>$===r?null:$)}},[t,a,ke,we,ue,ae,C]),Un=l.useCallback(async r=>{if(C||!a||!t)throw new Error("Workspace LSP is unavailable.");return z.workspaceLspAction(a,t,r)},[t,a,C]),tt=l.useCallback(async r=>{if(!a||!t&&!P||Ze.current===r)return;const m=ue[r];if(!m||m.content===m.savedContent)return;const f=m.content,g=Date.now();Ze.current=r,Ot(r),Xe(y=>{if(!(r in y))return y;const p={...y};return delete p[r],p});try{const y=C?await Cr(a,P,r,f):await z.saveWorkspaceFile(a,t,{path:r,content:f});Le(p=>({...p,[y.path]:y})),Ve(p=>{const $=p[r];return $?{...p,[r]:{content:$.content,savedContent:f,savedAt:g}}:p}),ee.languageServers!=="off"&&ee.checkOnSave&&await Be(r,{content:f,waitForDiagnostics:!0}),C?await _e({silent:!0}):await I({silent:!0})}catch(y){Xe(p=>({...p,[r]:y instanceof Error?y.message:String(y)}))}finally{Ze.current===r&&(Ze.current=null),Ot(y=>y===r?null:y)}},[ee.checkOnSave,ee.languageServers,t,a,ue,I,Be,_e,P,C]),Ps=j?et(j):null,st=!!(j&&ct.has(j)),Se=j?ue[j]?.content??Ps?.content??null:null,Hn=!!(Ps?.patch&&!Ae),Kt=!!(!F&&!st&&A==="file"&&!Hn&&j&&Se!=null&&!Ce(j)&&!(Dt&&as(j))&&!Se.endsWith(Rt));l.useEffect(()=>{if(ee.languageServers==="off"||!ee.diagnosticsWhileEditing||!j||!Kt||Se==null)return;const r=window.setTimeout(()=>{Be(j,{content:Se,waitForDiagnostics:!0})},700);return()=>window.clearTimeout(r)},[ee.diagnosticsWhileEditing,ee.languageServers,Be,Se,Kt,j]),l.useEffect(()=>{function r(m){!(m.ctrlKey||m.metaKey)||m.key.toLowerCase()!=="s"||A!=="file"||!j||(m.preventDefault(),Ie.has(j)&&tt(j))}return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[A,Ie,tt,j]);const Vn=l.useCallback(()=>{j&&(Ye.current?Ye.current.save():tt(j))},[tt,j]),Gn=l.useCallback(()=>{Ye.current?.undo()},[]),Kn=l.useCallback(()=>{Ye.current?.redo()},[]),qn=l.useCallback(()=>{j&&ee.languageServers!=="off"&&Be(j,{content:Se??void 0,waitForDiagnostics:!0})},[ee.languageServers,Be,Se,j]);function Xn(r,m){if(m.stopPropagation(),!(Ie.has(r)&&!window.confirm(`Discard unsaved changes to ${r}?`))&&(Ie.has(r)&&(Ve(f=>{if(!(r in f))return f;const g={...f};return delete g[r],g}),Xe(f=>{if(!(r in f))return f;const g={...f};return delete g[r],g})),He(f=>f.filter(g=>g!==r)),ct.has(r)&&Le(f=>{if(!(r in f))return f;const g={...f};return delete g[r],g}),ut(f=>{if(!(r in f))return f;const g={...f};return delete g[r],g}),dt(f=>{if(!f.has(r))return f;const g=new Set(f);return g.delete(r),g}),j===r)){const f=Es.find(g=>g.path!==r)??null;ge(f?.path??We[0]?.path??null),f||T("files")}}function Zn(){T("files"),oe(!1),ne(!1)}function As(r){Tt(m=>{const f=new Set(m);return f.has(r)?f.delete(r):f.add(r),f})}function Qn(r){r&&Tt(m=>{const f=new Set(m);for(const g of Ir(r))f.add(g);return f}),T("files"),oe(!1),ne(!1)}function Yn(){const m=`git apply <<'PATCH'
12
- ${We.map(f=>f.patch).filter(Boolean).join(`
13
- `)}
14
- PATCH`;navigator.clipboard?.writeText(m)}const Jn=We.length>0,ea=ye.length>0,ta=J.length>0,sa=pe||Te||Jn||ea||ta,me=A==="goal"&&pe?"goal":A==="summary"&&Te?"summary":A==="file"&&j?"file":"files",na=me==="files"?"No files to show":"No local changes",aa=n==="local_project"&&!x&&!o,Ls=C?Pn:u,Ds=C?vs:o,ia=zr({changedFiles:he?.filesChanged??We.length,checkpointStatus:zn,dirty:!!he?.dirty,error:Ds,loading:Ls,preservedReadback:Mn,sandboxMode:C,sourcePending:C&&!P}),ra=Ls?"Loading workspace files":Ds?"Workspace files are unavailable":C&&!P?Q?.emptyMessage??"No sandbox filesystem is available.":aa?"Loading workspace files":x?na:"No local files to show",Ts=j?gs[j]??null:null,la=!Ts&&!C&&j&&Ce(j)?j:null,_s=De?gs[De]??null:null,oa=!_s&&!C&&De&&Ce(De)?De:null,ca=Us(a,t,la),da=Us(a,t,oa),qt=Ts??ca,Ms=_s??da,zs=me==="file"||k&&me==="files"?j:null,ua=!!(zs&&as(zs)),Ws=j?ks[j]??[]:[],Is=j?An[j]??null:null,Xt=!!(j&&Ln===j),Zt=ps&&Kt,nt=!F&&!st&&!C&&ee.languageServers!=="off",fa=l.useMemo(()=>Lr({activeDiagnostics:Ws,activeServers:Is,editorDiagnosticsChecking:Xt,editorLspEnabled:nt,showEditorCommandBar:Zt}),[Ws,Is,Xt,nt,Zt]),pa=l.useCallback(async r=>{if(!a)throw new Error("OpenPond server connection is unavailable.");await z.runSubagentLifecycleAction(a,r.runId,{action:r.action,reason:"User requested from Goal details."}),await I({silent:!0})},[a,I]),xe=C?"sandbox":n==="local_project"?"local":null,vt=l.useMemo(()=>{const r=new Map;if(!xe||!s)return r;for(const m of Y)m.workspaceKind!==xe||m.workspaceId!==s||r.set(m.path,m);return r},[Y,xe,s]),kt=l.useCallback(r=>{try{return vt.get(qs(r))?.status??null}catch{return null}},[vt]),wt=l.useCallback((r,m)=>{if(!xe||!s||!h||!w)return;let f;try{f=qs(r)}catch{return}const g=vt.get(f),y=new Date().toISOString(),p=g??{id:Ga({workspaceKind:xe,workspaceId:s,path:f}),workspaceKind:xe,workspaceId:s,workspaceName:h,path:f,status:"pinned",order:null,sourceSessionId:le,available:!0,createdAt:y,updatedAt:y};w(p,m)},[w,vt,le,xe,s,h]),Ne=!!(xe&&s&&h&&w),ha=j&&Ne&&!st?e.jsx(ls,{currentStatus:kt(j),onSetStatus:r=>wt(j,r)}):null,Bs=j?e.jsx(dr,{diagnostics:nt?ks[j]??[]:[],draftContent:ue[j]?.content,editorRef:Ye,editable:!F&&!st&&!qt,error:Tn,file:et(j),collapsed:fs,hideWhiteSpace:xs,headerActions:ha,imageSrc:qt,loading:Dn===j,loadFullFiles:Ae,saveError:_n[j]??null,saving:pt===j,onOpenImage:()=>{qt&&ht(j)},onDraftContentChange:r=>On(j,r),onLspAction:nt?Un:void 0,onSave:()=>{tt(j)},onSelectBreadcrumbPath:Qn,renderMarkdown:Dt,splitView:bs,wordDiffs:ms,wordWrap:us,workspaceName:h,workspaceRootPath:Je}):null;return e.jsxs(e.Fragment,{children:[e.jsxs("aside",{className:`workspace-diff-panel ${b?"expanded":""}`,id:"right-sidebar-files-panel",role:"tabpanel","aria-label":"Workspace diffs",children:[!b&&e.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize diff panel",onPointerDown:v}),e.jsx(Ji,{addMenuOpen:ot,expanded:b,filteredFiles:Wn,openFiles:Es,dirtyFilePaths:Ie,goalDetailsAvailable:pe,searchOpen:yn,searchQuery:At,selectedPath:j,sideChatTabs:_,summaryAvailable:Te,sourceStatus:ia,sourceSwitcher:W,visibleTab:me,getFileBookmarkStatus:Ne?kt:void 0,onCloseFileTab:Xn,onCloseSideChat:te,onCloseSearch:()=>ne(!1),onOpenFile:jt,onOpenBrowser:D?()=>{oe(!1),ne(!1),D()}:void 0,onOpenSearch:()=>{oe(!1),ne(!0)},onOpenSideChat:q?()=>{oe(!1),ne(!1),q()}:void 0,onSearchQueryChange:Lt,onSetFileBookmarkStatus:Ne?wt:void 0,onSelectFile:r=>{ge(r),T("file")},onSelectFiles:Zn,onSelectGoal:()=>T("goal"),onSelectSummary:()=>{T("summary"),oe(!1),ne(!1)},onSelectSideChat:X,onToggleAddMenu:()=>{oe(r=>!r),ne(!1)},onToggleExpanded:R}),ws&&e.jsx("div",{className:"workspace-diff-empty",role:"alert",children:ws}),me==="goal"&&pe?e.jsx(ki,{createRuntime:B?.createRuntime??null,goalRuntime:B?.goalRuntime??null,subagentRuntime:B?.subagentRuntime??null,onRunSubagentLifecycleAction:a?pa:void 0}):me==="summary"&&Te?se?e.jsx(Xi,{summary:se}):e.jsx(Bi,{sandboxId:P,connection:a}):sa?e.jsxs(e.Fragment,{children:[e.jsx(er,{canSaveActiveFile:!!(!F&&!st&&j&&Ie.has(j)&&pt!==j),canCheckActiveFile:nt,collapsed:fs,editorControlsVisible:ps,editorDiagnosticStatus:fa,editorDiagnosticsChecking:Xt,hideWhiteSpace:xs,loadFullFiles:Ae,menuOpen:Pt,renderMarkdown:Dt,showEditorCommandBar:Zt,showRenderMarkdownToggle:ua,splitView:bs,wordDiffs:ms,wordWrap:us,onCopyGitApply:Yn,onEditorCheck:qn,onEditorRedo:Kn,onEditorSave:Vn,onEditorUndo:Gn,onRefresh:()=>{C?_e():I()},onToggleCollapsed:()=>Nn(r=>!r),onToggleEditorControlsVisible:Bn,onToggleHideWhiteSpace:()=>Fn(r=>!r),onToggleLoadFullFiles:()=>Cn(r=>!r),onToggleMenu:r=>Pe(m=>r??!m),onToggleRenderMarkdown:()=>$n(r=>!r),onToggleSplitView:()=>En(r=>!r),onToggleWordDiffs:()=>Rn(r=>!r),onToggleWordWrap:()=>Sn(r=>!r)}),me==="files"&&(k?e.jsxs("div",{className:"workspace-diff-files-preview-layout",children:[e.jsx(en,{diff:he,expandedFolderPaths:js,rootPath:S,repoFiles:ye,selectedPath:j,getFileBookmarkStatus:Ne?kt:void 0,onOpenFile:jt,onSetFileBookmarkStatus:Ne?wt:void 0,onToggleFolder:As}),Bs??e.jsx("div",{className:"workspace-diff-files-preview-empty",children:"Select a file to review its changes."})]}):e.jsx(en,{diff:he,expandedFolderPaths:js,rootPath:S,repoFiles:ye,selectedPath:j,getFileBookmarkStatus:Ne?kt:void 0,onOpenFile:jt,onSetFileBookmarkStatus:Ne?wt:void 0,onToggleFolder:As})),me==="file"&&j&&Bs]}):e.jsx("div",{className:"workspace-diff-empty",children:e.jsx("span",{children:ra})})]}),e.jsx(Sa,{open:!!Ms,src:Ms,title:De??"",onClose:()=>ht(null)})]})}const Qr=Object.freeze(Object.defineProperty({__proto__:null,WorkspaceDiffPanel:_r},Symbol.toStringTag,{value:"Module"}));export{di as C,_r as W,Qr as a};