openpond 0.0.38 → 0.0.39

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 (212) hide show
  1. package/README.md +3 -4
  2. package/dist/api/core.d.ts +6 -0
  3. package/dist/api/vercel-protection.d.ts +1 -0
  4. package/dist/chunks/{app-layer-DPUJRNO2.js → app-layer-LTBWNA2F.js} +32 -10
  5. package/dist/chunks/app-server-runtime-VYYJ2AWX.js +18 -0
  6. package/dist/chunks/{apps-AKBI6AS7.js → apps-CZAJBGE3.js} +6 -4
  7. package/dist/chunks/{chunk-LZZM3IHS.js → chunk-2SF6HLT7.js} +5899 -5939
  8. package/dist/chunks/{chunk-XCATKTK3.js → chunk-3CDPPVLE.js} +108 -66
  9. package/dist/chunks/{chunk-JWF37O5E.js → chunk-3HW6OSHP.js} +1 -3
  10. package/dist/chunks/{chunk-43YI36NA.js → chunk-3KLQ52B2.js} +228 -5
  11. package/dist/chunks/chunk-4HIWFIMN.js +37172 -0
  12. package/dist/chunks/{chunk-AHPQTEIJ.js → chunk-4N6E3OVF.js} +4 -4
  13. package/dist/chunks/{chunk-YTJL6XPU.js → chunk-6V7MJVRO.js} +56 -11
  14. package/dist/chunks/{chunk-QRM7XMAO.js → chunk-BQQZNGI6.js} +152 -161
  15. package/dist/chunks/chunk-DBHSOTYZ.js +1552 -0
  16. package/dist/chunks/{chunk-275WCETC.js → chunk-FCVVOMIP.js} +145 -5
  17. package/dist/chunks/{chunk-GB6VUZUA.js → chunk-JIEUB6OS.js} +1 -1
  18. package/dist/chunks/{chunk-HS2AGRDV.js → chunk-JJPAMKXZ.js} +1 -1
  19. package/dist/chunks/{chunk-GDZYDLEL.js → chunk-JRROTGQT.js} +1 -110
  20. package/dist/chunks/chunk-KHNHUA2H.js +1737 -0
  21. package/dist/chunks/{chunk-AHNFNWUN.js → chunk-L6XH4ZGZ.js} +1 -1
  22. package/dist/chunks/chunk-M2NXTLH2.js +4054 -0
  23. package/dist/chunks/{chunk-SLMP353Q.js → chunk-MIZHCABO.js} +2 -195
  24. package/dist/chunks/chunk-SMNFI2FU.js +113 -0
  25. package/dist/chunks/chunk-VCVQLECH.js +675 -0
  26. package/dist/chunks/{chunk-V35STJF4.js → chunk-ZJBJQCQZ.js} +179 -52
  27. package/dist/chunks/{cli-7BKDWFNU.js → cli-JS76LCW2.js} +9 -5
  28. package/dist/chunks/{core-commands-YN4RMWA3.js → core-commands-4MRJQZJV.js} +7 -5
  29. package/dist/chunks/{harness-BHQRMXJR.js → desktop-test-RNMWLOVU.js} +15 -14
  30. package/dist/chunks/{chunk-XERQHYBO.js → extension-GDRW22N3.js} +5868 -3580
  31. package/dist/chunks/{help-VREQNA4I.js → help-LWNREJ7U.js} +1 -1
  32. package/dist/chunks/{opchat-D63YTNSX.js → opchat-2K2JIGK3.js} +9 -10
  33. package/dist/chunks/{organizations-I46KG7TC.js → organizations-Z5HVD2E7.js} +11 -9
  34. package/dist/chunks/{profile-WKZJHEPG.js → profile-QNECVVGN.js} +12 -38
  35. package/dist/chunks/{project-agent-ZUC3YMCT.js → project-agent-W3V75WBR.js} +9 -411
  36. package/dist/chunks/{sandbox-command-AAOPFTI5.js → sandbox-command-X3FO74NX.js} +7 -5
  37. package/dist/chunks/{sandbox-template-GKNVR4C5.js → sandbox-template-5B4T4BGU.js} +8 -6
  38. package/dist/chunks/{src-RPW5TOPI.js → src-ESAILPUH.js} +32 -30
  39. package/dist/chunks/src-IC5RX4L6.js +63517 -0
  40. package/dist/chunks/{teams-bot-PSL3ZO6Z.js → teams-bot-NTQ6VFFL.js} +6 -4
  41. package/dist/chunks/training-BR5A7SPU.js +320 -0
  42. package/dist/chunks/{workspaces-BPXC2DHT.js → workspaces-XC3QBD2Y.js} +2 -2
  43. package/dist/cli.js +24 -12
  44. package/dist/config.d.ts +9 -3
  45. package/dist/index.js +1300 -1045
  46. package/dist/profile/local-profile-types.d.ts +16 -0
  47. package/dist/profile/local-profile.d.ts +50 -4
  48. package/dist/sandbox/client-handles.d.ts +33 -46
  49. package/dist/sandbox/client.d.ts +4 -26
  50. package/dist/sandbox/sandbox-instance-client.d.ts +5 -5
  51. package/dist/sandbox/types/client.d.ts +1 -2
  52. package/dist/sandbox/types/core.d.ts +0 -1
  53. package/dist/sandbox/types/org-project-agent.d.ts +3 -89
  54. package/dist/sandbox/types/record.d.ts +1 -2
  55. package/dist/sandbox/types/runtime-profiles.d.ts +2 -2
  56. package/dist/sandbox-template/manifest.d.ts +1 -1
  57. package/dist/skills/openpond-agent-authoring/SKILL.md +40 -0
  58. package/dist/skills/openpond-agent-authoring/references/action-and-chat-design.md +13 -0
  59. package/dist/skills/openpond-agent-authoring/references/integrations-and-setup.md +13 -0
  60. package/dist/skills/openpond-agent-authoring/references/profile-layout.md +29 -0
  61. package/dist/skills/openpond-agent-authoring/references/validation-and-repair.md +14 -0
  62. package/dist/skills/openpond-desktop-harness/SKILL.md +1 -1
  63. package/dist/skills/openpond-skill-authoring/SKILL.md +44 -0
  64. package/dist/skills/openpond-skill-authoring/references/copying-and-adaptation.md +16 -0
  65. package/dist/skills/openpond-skill-authoring/references/skill-package-layout.md +38 -0
  66. package/dist/skills/openpond-skill-authoring/references/validation-and-repair.md +24 -0
  67. package/dist/skills/openpond-skill-authoring/scripts/validate-skill.mjs +102 -0
  68. package/dist/skills/openpond-taskset-authoring/SKILL.md +64 -22
  69. package/dist/skills/openpond-taskset-authoring/artifact.json +39 -0
  70. package/dist/skills/openpond-taskset-authoring/references/graders-and-rewards.md +3 -0
  71. package/dist/skills/openpond-taskset-authoring/references/method-selection.md +1 -1
  72. package/dist/skills/openpond-taskset-authoring/references/privacy-and-provenance.md +2 -0
  73. package/dist/skills/openpond-taskset-authoring/references/task-design.md +32 -0
  74. package/dist/web/assets/{AppDialog-DrwJb_wG.js → AppDialog-Bua3f-6v.js} +1 -1
  75. package/dist/web/assets/{AppsView-DPagLMsc.js → AppsView-DrJkHeSO.js} +1 -1
  76. package/dist/web/assets/BrowserSidebar-Bf-4Vozm.js +1 -0
  77. package/dist/web/assets/CommandMenu-DDZlGQiB.js +1 -0
  78. package/dist/web/assets/CommunityView-BtcCrba7.js +1 -0
  79. package/dist/web/assets/ComposerCreateImproveStrip-DOe5Otg6.js +1 -0
  80. package/dist/web/assets/GetStartedView-CG4z0Dtw.js +1 -0
  81. package/dist/web/assets/GetStartedView-yVmnGZPw.css +1 -0
  82. package/dist/web/assets/LabModelVersionDetailPage-BEkmSKuv.js +1 -0
  83. package/dist/web/assets/LabSkillSidebar-BIotN_RB.js +1 -0
  84. package/dist/web/assets/LabsRoute-CfOe0Zt5.js +3 -0
  85. package/dist/web/assets/LabsRoute-CoSPO4HR.css +1 -0
  86. package/dist/web/assets/MainChatThread-C0-l1mHt.js +2 -0
  87. package/dist/web/assets/MainPane-Bky_Rqcx.css +1 -0
  88. package/dist/web/assets/MainPane-aOVlVyRK.js +6 -0
  89. package/dist/web/assets/MarkdownText-D7DT1k1k.js +9 -0
  90. package/dist/web/assets/Messages-CBIXruA9.js +9 -0
  91. package/dist/web/assets/NativeSkillSidebar-C4t69Y7B.js +1 -0
  92. package/dist/web/assets/NewProjectDialog-Bat65tYD.js +1 -0
  93. package/dist/web/assets/OutputsPage-C58n39Db.js +1 -0
  94. package/dist/web/assets/RightChatPanelStack-Bp7nZxQ0.js +1 -0
  95. package/dist/web/assets/ScheduledWorkPage-BXP0j_c_.js +1 -0
  96. package/dist/web/assets/SettingsView-CtWK_aQ0.css +1 -0
  97. package/dist/web/assets/SettingsView-DOOfhO9a.js +6 -0
  98. package/dist/web/assets/TeamChatView-Cgxm-pKA.css +1 -0
  99. package/dist/web/assets/TeamChatView-De2wdqyY.js +3 -0
  100. package/dist/web/assets/{TerminalOverlay-BKl0p8pa.js → TerminalOverlay-BsuCH3NX.js} +1 -1
  101. package/dist/web/assets/TrainingCreationPanel-D2OFWyQ-.js +1 -0
  102. package/dist/web/assets/TrainingDraftPanel-DBpulXTz.js +1 -0
  103. package/dist/web/assets/{UsageSettingsSection-zDAwzTGl.js → UsageSettingsSection-DzMLUXAO.js} +37 -37
  104. package/dist/web/assets/WorkspaceDiffPanel-B7yIhjNF.js +14 -0
  105. package/dist/web/assets/WorkspaceEnvironmentMenu-B6jXM9xG.js +32 -0
  106. package/dist/web/assets/WorkspaceGitDialogs-CQ0fl9Qk.js +1 -0
  107. package/dist/web/assets/{WorkspaceMonacoEditor-DPGcG8fy.js → WorkspaceMonacoEditor-C2ctzITz.js} +3 -3
  108. package/dist/web/assets/arrow-up-right-ecwcx3xt.js +1 -0
  109. package/dist/web/assets/chevron-up-DP8PPfWd.js +1 -0
  110. package/dist/web/assets/circle-alert-envg1D6O.js +1 -0
  111. package/dist/web/assets/cloud-upload-5MGPLnaA.js +1 -0
  112. package/dist/web/assets/{cssMode-CKN9CcfG.js → cssMode-CFifcEfw.js} +1 -1
  113. package/dist/web/assets/folder-open-Dq3ZjeEP.js +1 -0
  114. package/dist/web/assets/folder-plus-EiZ5wbv_.js +1 -0
  115. package/dist/web/assets/git-branch-w29jmQ-X.js +1 -0
  116. package/dist/web/assets/{git-commit-horizontal-Bxi8YPep.js → git-commit-horizontal-CGZM0PZo.js} +1 -1
  117. package/dist/web/assets/{htmlMode-CeUcNhBZ.js → htmlMode-Ct1P-_lf.js} +1 -1
  118. package/dist/web/assets/index-ByIQyiUl.js +178 -0
  119. package/dist/web/assets/index-D4uCeiep.js +1 -0
  120. package/dist/web/assets/index-D9jTe16Q.css +1 -0
  121. package/dist/web/assets/info-Cd2HkIeb.js +1 -0
  122. package/dist/web/assets/{jsonMode-97z0Yz9u.js → jsonMode-BAUNCNAX.js} +1 -1
  123. package/dist/web/assets/{lspLanguageFeatures-D4Tp-JmI.js → lspLanguageFeatures-fucFYI1A.js} +1 -1
  124. package/dist/web/assets/monaco.contribution-Ce4v5kei.js +2 -0
  125. package/dist/web/assets/monaco.contribution-DLLMi4cB.js +2 -0
  126. package/dist/web/assets/monaco.contribution-g9QiIm1d.js +2 -0
  127. package/dist/web/assets/monaco.contribution-nG-5Cyjz.js +2 -0
  128. package/dist/web/assets/monitor-DgHCnCKl.js +1 -0
  129. package/dist/web/assets/{play-C-37dnR1.js → play-Be0XDHBu.js} +1 -1
  130. package/dist/web/assets/{python-CGpDXY7_.js → python-CEhEiPo7.js} +1 -1
  131. package/dist/web/assets/{refresh-cw-BAaaPCXl.js → refresh-cw-DH0KLbdD.js} +1 -1
  132. package/dist/web/assets/reply-D1TK2yV8.js +1 -0
  133. package/dist/web/assets/{save-Cvxs3XyC.js → save-C1MSeBnQ.js} +1 -1
  134. package/dist/web/assets/square-CemI-0g5.js +1 -0
  135. package/dist/web/assets/square-pen-CqfsvR_n.js +1 -0
  136. package/dist/web/assets/{toggleHighContrast-CD42jH4g.js → toggleHighContrast-DrdQN3Rl.js} +1 -1
  137. package/dist/web/assets/training-BQVNUTZA.css +1 -0
  138. package/dist/web/assets/training-model-data-B7-1Bxil.js +1 -0
  139. package/dist/web/assets/{tsMode-ZROIxEjv.js → tsMode-CKB5oOUU.js} +1 -1
  140. package/dist/web/assets/{upload-DvCSGERK.js → upload-t751LLqP.js} +1 -1
  141. package/dist/web/assets/useLocalAgentSchedules-CzC3wfIP.js +1 -0
  142. package/dist/web/assets/{wifi-off-BIb94PkS.js → wifi-off-CxTHH3JU.js} +1 -1
  143. package/dist/web/assets/{workers-oYqbrVYG.js → workers-CqYddzCd.js} +1 -1
  144. package/dist/web/assets/{yaml-WqBjNgOO.js → yaml-e5wBkc-C.js} +1 -1
  145. package/dist/web/index.html +2 -2
  146. package/docs/command-reference.md +75 -40
  147. package/package.json +3 -1
  148. package/dist/chunks/chunk-FWLOFUPU.js +0 -864
  149. package/dist/chunks/chunk-HLCTINEP.js +0 -224
  150. package/dist/chunks/chunk-MPGSHXGF.js +0 -3896
  151. package/dist/chunks/chunk-T4QXKU5Y.js +0 -1
  152. package/dist/chunks/chunk-XEJ7XXUQ.js +0 -1301
  153. package/dist/chunks/chunk-ZI4GDAUB.js +0 -3522
  154. package/dist/chunks/cli-2KBVNDRY.js +0 -23
  155. package/dist/chunks/extend-REGNTBK3.js +0 -89
  156. package/dist/chunks/extension-7K77DAVL.js +0 -121
  157. package/dist/chunks/fileFromPath-DHCRY3BD.js +0 -2151
  158. package/dist/chunks/src-MWDIK56B.js +0 -105881
  159. package/dist/web/assets/BrowserSidebar-DMn2V8RV.js +0 -1
  160. package/dist/web/assets/CloudWorkView-Cl_7mM3c.js +0 -1
  161. package/dist/web/assets/CloudWorkView-DNoPIlMj.css +0 -1
  162. package/dist/web/assets/CommandMenu-CHMQLez_.js +0 -1
  163. package/dist/web/assets/CommunityView-DcHVDUk0.js +0 -1
  164. package/dist/web/assets/ComposerCreateImproveStrip-BZ3Dgzmo.js +0 -1
  165. package/dist/web/assets/GetStartedView-DBLdduwr.css +0 -1
  166. package/dist/web/assets/GetStartedView-DTRotFqz.js +0 -1
  167. package/dist/web/assets/LabSkillSidebar-D-PqFe1T.js +0 -1
  168. package/dist/web/assets/LabsRoute-BrJkBNig.css +0 -1
  169. package/dist/web/assets/LabsRoute-Dew1BwK5.js +0 -3
  170. package/dist/web/assets/MainChatThread-BaPxxzrw.js +0 -2
  171. package/dist/web/assets/MakeAgentTutorialLearningPanel-CBsfnONQ.js +0 -2
  172. package/dist/web/assets/MarkdownText-DGLfAM_Z.js +0 -7
  173. package/dist/web/assets/Messages-CIX9uTjX.js +0 -10
  174. package/dist/web/assets/NativeSkillSidebar-AP_uHn6g.js +0 -1
  175. package/dist/web/assets/NewProjectDialog-C6lHkafU.js +0 -1
  176. package/dist/web/assets/PostTrainingLearningPanel-CZEgPc8O.js +0 -2
  177. package/dist/web/assets/PostTrainingStatusPill-CeEpwUDB.js +0 -1
  178. package/dist/web/assets/ProfileSettingsSection-Cg4tKO-C.css +0 -1
  179. package/dist/web/assets/ProfileSettingsSection-EumMLlEp.js +0 -1
  180. package/dist/web/assets/RightChatPanelStack-MXBcx3zO.js +0 -1
  181. package/dist/web/assets/SettingsView-Caljbns2.css +0 -1
  182. package/dist/web/assets/SettingsView-DyURG_Uh.js +0 -6
  183. package/dist/web/assets/TeamChatView-Bx44q3WV.css +0 -1
  184. package/dist/web/assets/TeamChatView-D3v6aqJ3.js +0 -3
  185. package/dist/web/assets/TrainingCreationPanel-CfZQTuT5.js +0 -1
  186. package/dist/web/assets/TrainingDraftPanel-DslRPSDW.js +0 -1
  187. package/dist/web/assets/WorkspaceDiffPanel-C_MZPPlL.js +0 -14
  188. package/dist/web/assets/WorkspaceEnvironmentMenu-BUAnn80j.js +0 -32
  189. package/dist/web/assets/WorkspaceGitDialogs-Drbf4ujA.js +0 -1
  190. package/dist/web/assets/activity-Dnr3jqb3.js +0 -1
  191. package/dist/web/assets/boxes-BinC8UPn.js +0 -1
  192. package/dist/web/assets/chevron-up-Bjp_-_Cb.js +0 -1
  193. package/dist/web/assets/circle-x-ubnvEYuE.js +0 -1
  194. package/dist/web/assets/copy-B_ZCCUMz.js +0 -1
  195. package/dist/web/assets/create-pipeline-request-D6uLUxe9.js +0 -4
  196. package/dist/web/assets/file-8HAMlTmQ.js +0 -1
  197. package/dist/web/assets/git-branch-l2Zih3Bv.js +0 -1
  198. package/dist/web/assets/index-BMFyOFRU.css +0 -1
  199. package/dist/web/assets/index-BzwcDzbT.js +0 -1
  200. package/dist/web/assets/index-KoQSSt_f.js +0 -177
  201. package/dist/web/assets/info-JTbDQxHx.js +0 -1
  202. package/dist/web/assets/make-agent-tutorial-D6nBCgv-.js +0 -2
  203. package/dist/web/assets/monaco.contribution-B3j6oown.js +0 -2
  204. package/dist/web/assets/monaco.contribution-BXHxPPWL.js +0 -2
  205. package/dist/web/assets/monaco.contribution-C2P5zIzh.js +0 -2
  206. package/dist/web/assets/monaco.contribution-C8c6OtGi.js +0 -2
  207. package/dist/web/assets/monitor-kzHtxHnA.js +0 -1
  208. package/dist/web/assets/reply-9rehU13k.js +0 -1
  209. package/dist/web/assets/rotate-cw-C1Z_Xs23.js +0 -1
  210. package/dist/web/assets/training-BN8CALIc.css +0 -1
  211. package/dist/web/assets/training-model-data-BXUCzS0p.js +0 -1
  212. package/docs/agent-edit-check-status-json.md +0 -132
@@ -1,14 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./WorkspaceMonacoEditor-DPGcG8fy.js","./index-KoQSSt_f.js","./index-BMFyOFRU.css","./WorkspaceMonacoEditor-BwKcXIZw.css"])))=>i.map(i=>d[i]);
2
- import{d as Be,j as e,Z as st,aB as Es,v as Ks,r as l,u as Ce,n as W,aC as yt,a4 as St,O as We,U as ea,aD as ta,aE as sa,P as na,aF as aa,B as ia,t as gt,F as ra,aG as la,_ as qs,aH as oa,aI as ca,N as da,X as As,k as ua,M as fa,S as pa,aJ as ha,at as ma,au as xa,aK as ba,T as Ps,aL as ga,aM as Zt,aN as ja,aO as Xs,aP as va,a2 as ka,af as wa,aQ as Gt,aR as ya,aS as Qt,aT as we,aU as Sa,aV as Ls,aW as Na,aX as Ca,aY as Ds,aZ as Ra,a_ as $a}from"./index-KoQSSt_f.js";import{M as Fa,u as Ts,I as Ea}from"./MarkdownText-DGLfAM_Z.js";import{R as Yt}from"./refresh-cw-BAaaPCXl.js";import{t as Aa,a as Pa,m as La,s as Da,d as Ta,f as _a,b as Ma}from"./training-model-data-BXUCzS0p.js";import{F as za}from"./file-8HAMlTmQ.js";import{I as _s}from"./info-JTbDQxHx.js";import{S as Wa}from"./save-Cvxs3XyC.js";import{C as Ia}from"./chevron-up-Bjp_-_Cb.js";const Ba=[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M17 19H3",key:"z6ezky"}]],Oa=Be("text-align-start",Ba);const Ua=[["path",{d:"m17 11-5-5-5 5",key:"e8nh98"}],["path",{d:"m17 18-5-5-5 5",key:"2avn1x"}]],Ha=Be("chevrons-up",Ua);const Va=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]],Ga=Be("columns-2",Va);const Ka=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}]],qa=Be("panel-top",Ka);const Xa=[["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"}]],Za=Be("redo-2",Xa);const Qa=[["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"}]],Ya=Be("undo-2",Qa);function Ja({createRuntime:t,goalRuntime:s,subagentRuntime:n=null,onRunSubagentLifecycleAction:a}){const i=t?"Create/Improve Details":"Goal Details",d=t?X(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(st,{size:15,"aria-hidden":"true"}),e.jsx("span",{children:i})]}),e.jsx("span",{className:`goal-details-state ${gi(t?.run.state??null)}`,children:d})]}),e.jsx("div",{className:"goal-details-body",children:t?e.jsx(ei,{runtime:t}):s||n?e.jsx(si,{goalRuntime:s,subagentRuntime:n,onRunSubagentLifecycleAction:a}):e.jsx(bi,{})})]})}function ei({runtime:t}){const s=t.run,n=s.plan,a=Es(n?.metadata)??Es(s.metadata),i=s.questions,d=i.filter(o=>o.status==="pending"),c=s.sourceRefs,u=s.checkRefs,p=s.state,h=s.target.kind==="agent"?s.target.defaultActionKey:null;return e.jsxs(e.Fragment,{children:[e.jsx(H,{title:"Current Work",children:e.jsx(et,{rows:[["State",X(p)],["Operation",s.operation],["Target",X(s.target.kind)],["Name",s.target.displayName??s.target.id??"Pending"],["Target ID",s.target.id??"Pending"],["Default action",h??n?.defaultChatAction.key??"Pending"],["Adapter",X(s.adapter.kind)],["Run",s.id],["Revision",String(s.revision)]]})}),e.jsx(H,{title:"Plan",children:n?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"goal-details-summary",children:n.summary}),e.jsx(et,{rows:[["Objective",n.objective],["Context",n.capturedContextSummary],["Status",X(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(H,{title:"Action Shape",children:[e.jsx(et,{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(H,{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:X(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(x=>x.label).join(", ")]}):null]},o.id))})}):null,n?.requirements.length?e.jsx(H,{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:X(o.status)})]}),e.jsxs("small",{children:[X(o.kind),o.detail?`: ${o.detail}`:""]})]},`${o.kind}:${o.name}`))})}):null,n?.sourcePlan.length?e.jsx(H,{title:"Source Plan",children:e.jsx(bt,{refs:n.sourcePlan.map(o=>({id:`${o.operation}:${o.path}`,primary:o.path,secondary:`${X(o.operation)}: ${o.reason}`}))})}):null,n?.checks.length?e.jsx(H,{title:"Checks",children:e.jsx(bt,{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(H,{title:"Run Refs",children:e.jsx(bt,{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(ti,{run:s}),s.blockedReason?e.jsx(H,{title:"Blocked",children:e.jsxs("div",{className:"goal-details-alert",children:[e.jsx(Ks,{size:15}),e.jsx("span",{children:s.blockedReason})]})}):null,e.jsx(H,{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 ti({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(H,{title:"Context",children:e.jsx(bt,{refs:[...s,...a]})})}function si({goalRuntime:t,subagentRuntime:s,onRunSubagentLifecycleAction:n}){return e.jsxs(e.Fragment,{children:[t?e.jsxs(H,{title:"Goal",children:[e.jsx("p",{className:"goal-details-summary",children:t.objective}),e.jsx(et,{rows:[["Status",t.actionLabel],["Runtime",t.timeLabel],["Detail",t.detail]]})]}):null,s?e.jsx(ni,{runtime:s,onRunSubagentLifecycleAction:n}):null,e.jsx(H,{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);Ce(i);const c=async(u,p)=>{if(!s)return;const h=`${u}:${p}`;a(h),d(null);try{await s({runId:u,action:p})}catch(o){d(o instanceof Error?o.message:String(o))}finally{a(o=>o===h?null:o)}};return e.jsxs(e.Fragment,{children:[e.jsxs(H,{title:"Subagents",children:[e.jsx(et,{rows:[["Latest update",di(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",ui(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:jt(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:jt(u.roleId)}),e.jsx("p",{children:u.objective}),u.report?.summary?e.jsx("small",{children:u.report.summary}):null,s?e.jsx(ii,{pendingAction:n,run:u,onRun:c}):null]})]},u.id))})]}),t.finalResults.length>0?e.jsx(ai,{results:t.finalResults}):null]})}function ai({results:t}){return e.jsx(H,{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:jt(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?`${X(s.confidence)} confidence`:"Confidence unknown"})]}),s.findings.length>0?e.jsxs("small",{children:["Findings: ",ye(s.findings,3)]}):null,s.changedFiles.length>0?e.jsxs("small",{children:["Files: ",ye(s.changedFiles,4)]}):null,s.testsRun.length>0?e.jsxs("small",{children:["Tests: ",ye(s.testsRun,3)]}):null,s.validationAttempts.length>0?e.jsxs("small",{children:["Validation: ",ye(s.validationAttempts,2)]}):null,s.refs.length>0?e.jsxs("small",{children:["Refs: ",ye(s.refs.map(fi),4)]}):null,s.blockers.length>0?e.jsxs("small",{children:["Blockers: ",ye(s.blockers,3)]}):null,s.workspaceRetention?e.jsxs("small",{children:["Workspace: ",hi(s.workspaceRetention)]}):null,s.importantMessages.length>0?e.jsxs("small",{children:["Messages: ",ye(s.importantMessages.map(pi),2)]}):null]},s.runId))})})}function ii({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...":li(i)},i)})})}function ri(t){const s=[],n=oi(t),a=ci(t);return n&&s.push("cleanup"),a&&s.push("archive"),s}function li(t){return t==="cleanup"?"Clean":t==="archive"?"Archive":"Clean + archive"}function oi(t){if(!Zs(t))return!1;const s=tt(t.metadata);if(!s?.subagentWorkspace&&!s?.workspaceHandoff)return!1;const n=tt(s.lifecycleCleanup),a=tt(n?.workspaceCleanup),i=Qs(a?.status);return i!=="removed"&&i!=="deleted"&&i!=="retained"&&i!=="skipped"}function ci(t){if(!t.childSessionId||!Zs(t))return!1;const s=tt(tt(t.metadata)?.childSessionArchive),n=Qs(s?.status);return n!=="archived"&&n!=="already_archived"}function Zs(t){return t.status==="completed"||t.status==="failed"||t.status==="cancelled"}function di(t){const s=t.latestMeaningfulUpdate;return s?`${jt(s.roleId)} ${s.status}: ${s.message}`:"No structured update"}function ui(t,s){if(t<=0&&s<=0)return"0 tokens";const n=`${s} ${s===1?"request":"requests"}`;return`${mi(t)} tokens · ${n}`}function jt(t){return t.slice(0,1).toUpperCase()+t.slice(1).replace(/[-_]+/g," ")}function fi(t){return`${t.kind}: ${t.label}`}function pi(t){return`${X(t.kind)}: ${t.body}`}function hi(t){const s=t.expiresAt?`until ${xi(t.expiresAt)}`:"for inspection",n=t.trigger?` · ${X(t.trigger)}`:"";return`retained ${s}${n}`}function ye(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`${Ms(n,n<10?2:1)}M`}const s=t/1e3;return`${Ms(s,s<10?1:0)}k`}function xi(t){const s=new Date(t);return Number.isNaN(s.getTime())?t:s.toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function Ms(t,s){return t.toFixed(s).replace(/\.0+$/,"").replace(/(\.\d*?)0+$/,"$1")}function bi(){return e.jsxs("div",{className:"goal-details-empty",children:[e.jsx(st,{size:18}),e.jsx("span",{children:"No active Goal or Create workflow."})]})}function H({children:t,title:s}){return e.jsxs("section",{className:"goal-details-section",children:[e.jsx("h2",{children:s}),t]})}function et({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 bt({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 tt(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function Qs(t){return typeof t=="string"&&t.trim()?t.trim():null}function X(t){return t.split(/[_-]/g).filter(Boolean).map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}function gi(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 ji({sandboxId:t,connection:s}){const[n,a]=l.useState(null),[i,d]=l.useState([]),[c,u]=l.useState(null),[p,h]=l.useState(null),[o,x]=l.useState(null),[w,v]=l.useState(null);Ce(o,{prefix:"Sandbox"}),Ce(w,{prefix:"Sandbox integrations"});const N=n?.integrationLeases??[],E=l.useMemo(()=>i.filter(b=>b.status==="active"),[i]),T=l.useMemo(()=>ki(n),[n]),I=l.useCallback(async()=>{if(!s){x("OpenPond App server is not connected.");return}if(!t){a(null),d([]),x(null);return}u("summary"),x(null);try{const b=await W.sandbox(s,t),C=await W.integrationConnections(s,zs(b.sandbox));a(b.sandbox),d(C.connections),v(null)}catch(b){x(b instanceof Error?b.message:String(b))}finally{u(null)}},[s,t]),V=l.useCallback(async()=>{if(!(!s||!n)){h("load"),v(null);try{const[b,C]=await Promise.all([W.integrationConnections(s,zs(n)),W.sandboxIntegrationLeases(s,n.id)]);d(b.connections),a(C.sandbox)}catch(b){v(b instanceof Error?b.message:String(b))}finally{h(null)}}},[s,n]),G=l.useCallback(async b=>{if(!s||!n)return;const C=yt(b.provider),_=C?St(C):null,M=_?.leasePolicy.allowedCapabilityIds??[];if(!C||!_?.leasePolicy.leaseable||M.length===0){v(`${ne(b.provider)} cannot be attached to this sandbox.`);return}h(`attach:${b.id}`),v(null);try{const A=await W.attachSandboxIntegrationConnection(s,n.id,{connectionId:b.id,provider:b.provider,capabilities:M,...b.scopes.length>0?{scopes:b.scopes}:{},..._.leasePolicy.defaultTtlSeconds?{ttlSeconds:_.leasePolicy.defaultTtlSeconds}:{},required:!1});a(A.sandbox)}catch(A){v(A instanceof Error?A.message:String(A))}finally{h(null)}},[s,n]),B=l.useCallback(async b=>{if(!(!s||!n)){h(`remove:${b}`),v(null);try{const C=await W.removeSandboxIntegrationLease(s,n.id,b);a(C.sandbox)}catch(C){v(C instanceof Error?C.message:String(C))}finally{h(null)}}},[s,n]);return l.useEffect(()=>{I()},[I]),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:()=>{I()},children:c==="summary"?e.jsx(We,{className:"spinning",size:14}):e.jsx(Yt,{size:14})})]})]}),n?e.jsxs("dl",{className:"sandbox-workspace-kv",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Sandbox"}),e.jsx("dd",{children:Ws(n.id)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Runtime"}),e.jsx("dd",{children:n.runtimeDriver})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Spend"}),e.jsxs("dd",{children:[Kt(n.reservation.capturedUsd)," / ",Kt(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:Ys(n.updatedAt)})]}),T?e.jsxs("div",{children:[e.jsx("dt",{children:"Receipt"}),e.jsxs("dd",{children:[Ws(T.id)," / ",Kt(T.totalUsd)]})]}):null]}):e.jsxs("div",{className:"sandbox-workspace-loading",children:[c==="summary"?e.jsx(We,{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:p!==null||!n,onClick:()=>{V()},children:p==="load"?e.jsx(We,{className:"spinning",size:14}):e.jsx(Yt,{size:14})})]})]}),N.length>0?e.jsx("div",{className:"sandbox-workspace-integration-list",children:N.map(b=>e.jsxs("div",{className:"sandbox-workspace-integration-row",children:[e.jsxs("div",{className:"sandbox-workspace-integration-main",children:[e.jsx("span",{children:ne(b.provider)}),e.jsxs("small",{children:[b.required?"required":"optional"," / ",Si(b)," / ",vi(b)]})]}),e.jsx("button",{type:"button",className:"diff-icon-button",title:`Revoke ${ne(b.provider)} lease`,"aria-label":`Revoke ${ne(b.provider)} lease`,disabled:p!==null,onClick:()=>{B(b.leaseId)},children:p===`remove:${b.leaseId}`?e.jsx(We,{className:"spinning",size:14}):e.jsx(ea,{size:14})}),e.jsxs("div",{className:"sandbox-workspace-chip-row",children:[b.capabilities.slice(0,5).map(C=>e.jsx("span",{children:yi(b.provider,C)},C)),b.capabilities.length>5?e.jsxs("span",{children:["+",b.capabilities.length-5]}):null]})]},b.leaseId))}):e.jsx("p",{className:"sandbox-workspace-empty",children:"No active integration leases."}),E.length>0?e.jsx("div",{className:"sandbox-workspace-integration-list",children:E.map(b=>{const C=N.some(A=>A.provider===b.provider),M=wi(b)?.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:Ni(b)}),e.jsx("small",{children:Ci(b,M)})]}),e.jsx("button",{type:"button",className:"diff-icon-button",title:C?`${ne(b.provider)} already attached`:`Attach ${ne(b.provider)}`,"aria-label":C?`${ne(b.provider)} already attached`:`Attach ${ne(b.provider)}`,disabled:C||p!==null||M===0,onClick:()=>{G(b)},children:p===`attach:${b.id}`?e.jsx(We,{className:"spinning",size:14}):e.jsx(ta,{size:14})})]},b.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 zs(t){return{status:"active"}}function vi(t){return t.proxyUrl?"runtime proxy available":"metadata only, no runtime proxy"}function ki(t){return t?.receipts?.at(-1)??null}function wi(t){const s=yt(t.provider);return s?St(s):null}function ne(t){const s=yt(t),n=s?St(s):null;return n?n.label:t==="microsoft_teams"?"Microsoft Teams":t?t.replace(/_/g," "):"Integration"}function yi(t,s){const n=yt(t);return(n?St(n):null)?.capabilities.find(i=>i.id===s)?.label??s}function Si(t){return t.expiresAt?`expires ${Ys(t.expiresAt)}`:"active"}function Ni(t){const s=t.providerAccountName?.trim();return s?`${ne(t.provider)} / ${s}`:ne(t.provider)}function Ci(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 Ws(t){return t.length>10?`${t.slice(0,8)}...`:t}function Ys(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 Kt(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 Ri({summary:t}){const s=Aa(t.taskset),n=t.taskset.learningSignals.demonstrations.filter(c=>c.approved).length,a=t.taskset.tasks.filter(c=>c.split==="frozen_eval").length,i=t.plan?.recipe.method==="sft"||t.plan?.recipe.method==="grpo"?t.plan.recipe:null,d=Pa(t.taskset,t.plan);return e.jsxs("div",{className:"training-sidebar-summary",children:[e.jsxs("header",{children:[e.jsx("h2",{children:La(t.taskset.name)}),e.jsx("span",{children:t.job?Da(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(O,{label:"Primary recommendation",value:s.toUpperCase()}),e.jsx(O,{label:"Training stage",value:d}),e.jsx(O,{label:"Base model",value:i?.baseModel.id??"Not selected"}),e.jsx(O,{label:"Compute",value:t.plan?Ta(t.plan.destinationId):"Not selected"}),e.jsx(O,{label:"Started",value:_a(t.job?.startedAt??null)}),e.jsx(O,{label:"Duration",value:Ma(t.job?.startedAt??null,t.job?.completedAt??null)})]})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Data"}),e.jsxs("dl",{children:[e.jsx(O,{label:"Training examples",value:String(n)}),e.jsx(O,{label:"Test examples",value:String(a)}),e.jsx(O,{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(O,{label:"RL loss",value:i.loss.method==="gspo-token"?"GSPO-token":i.loss.method.toUpperCase()}):null,e.jsx(O,{label:"LoRA rank",value:String(i.lora.rank)}),e.jsx(O,{label:"Learning rate",value:String(i.optimizer.learningRate)}),e.jsx(O,{label:"Optimizer steps",value:String(i.optimizer.maxSteps)}),e.jsx(O,{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(O,{label:"Adapter",value:t.lineage?`${d} ready`:"Not created"}),e.jsx(O,{label:"Evaluation",value:t.lineage?.frozenEvaluationArtifactId?"Completed":"Not completed"}),e.jsx(O,{label:"Artifacts",value:String(t.artifacts.length)})]})]})]})}function O({label:t,value:s}){return e.jsxs("div",{children:[e.jsx("dt",{children:t}),e.jsx("dd",{children:s})]})}function $i(t){const s=Is("","","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 p=i[u];c=c?`${c}/${p}`:p;const h=!a&&u===i.length-1?"file":"folder",o=`${h}:${p}`;let x=d.childMap.get(o);x||(x=Is(p,c,h),d.childMap.set(o,x),d.children.push(x)),d=x}}return Js(s.children)}function Is(t,s,n){return{name:t,path:s,type:n,children:[],childMap:new Map}}function Js(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:Js(s.children)}))}function Jt({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(sa,{size:14}):e.jsx(na,{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(aa,{size:14}):e.jsx(ia,{size:14})})]})}function Fi({changedByPath:t,expandedFolderPaths:s,rootPath:n,repoFiles:a,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:p}){const h=l.useMemo(()=>$i(a),[a]);return e.jsxs("div",{className:"workspace-file-tree-view",children:[e.jsxs("div",{className:"workspace-file-tree-header",children:[e.jsx(gt,{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:h.map(o=>e.jsx(en,{changedByPath:t,expandedFolderPaths:s,node:o,rootPath:n,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:p},`${o.type}:${o.path}`))})]})}function en({changedByPath:t,depth:s=0,expandedFolderPaths:n,node:a,rootPath:i,selectedPath:d,getFileBookmarkStatus:c,onOpenFile:u,onSetFileBookmarkStatus:p,onToggleFolder:h}){const o=i?`${i}/${a.path}`:a.path,x=a.type==="folder"&&n.has(o),w=t.get(o),v=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":x,style:{paddingLeft:v},onClick:()=>h(o),children:[x?e.jsx(gt,{size:14}):e.jsx(ra,{size:14}),e.jsx("span",{children:a.name})]}),x&&a.children.map(N=>e.jsx(en,{changedByPath:t,depth:s+1,expandedFolderPaths:n,node:N,rootPath:i,selectedPath:d,getFileBookmarkStatus:c,onOpenFile:u,onSetFileBookmarkStatus:p,onToggleFolder:h},`${N.type}:${N.path}`))]}):e.jsxs("div",{className:`workspace-file-tree-row file ${w?"changed":""} ${d===o?"selected":""}`,style:{paddingLeft:v},children:[e.jsxs("button",{type:"button",className:"workspace-file-tree-row-main",title:o,onClick:()=>u(o),children:[e.jsx(za,{size:13}),e.jsx("span",{children:a.name}),w&&e.jsxs("small",{children:[e.jsxs("span",{className:"diff-addition",children:["+",w.additions]}),e.jsxs("span",{className:"diff-deletion",children:["-",w.deletions]})]})]}),p?e.jsx(Jt,{className:"workspace-file-tree-bookmark-actions",currentStatus:c?.(o)??null,onSetStatus:N=>p(o,N)}):null]})}function Bs({diff:t,expandedFolderPaths:s,rootPath:n,repoFiles:a,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:p}){const h=t?.files??[],o=l.useMemo(()=>new Map(h.map(v=>[v.path,v])),[h]),x=n?.replace(/^\/+|\/+$/g,"")||null,w=l.useMemo(()=>{if(!x)return a;const v=`${x}/`;return a.filter(N=>N.startsWith(v)).map(N=>N.slice(v.length)).filter(Boolean)},[x,a]);return e.jsx("div",{className:"workspace-diff-files-view",children:e.jsx(Fi,{changedByPath:o,expandedFolderPaths:s,rootPath:x,repoFiles:w,selectedPath:i,getFileBookmarkStatus:d,onOpenFile:c,onSetFileBookmarkStatus:u,onToggleFolder:p})})}function Ei({collapsed:t,editorControlsVisible:s,hideWhiteSpace:n,loadFullFiles:a,renderMarkdown:i,wordDiffs:d,wordWrap:c,onClose:u,onCopyGitApply:p,onRefresh:h,onToggleCollapsed:o,onToggleEditorControlsVisible:x,onToggleHideWhiteSpace:w,onToggleLoadFullFiles:v,onToggleRenderMarkdown:N,onToggleWordDiffs:E,onToggleWordWrap:T}){return e.jsxs("div",{className:"workspace-diff-options-menu",role:"menu",children:[e.jsx(ce,{icon:e.jsx(Yt,{size:14}),label:"Refresh",onClick:h,onClose:u}),e.jsx(ce,{checked:c,icon:e.jsx(la,{size:14}),label:"Enable word wrap",onClick:T,onClose:u}),e.jsx(ce,{checked:t,icon:e.jsx(Ha,{size:14}),label:"Collapse all diffs",onClick:o,onClose:u}),e.jsx("div",{className:"workspace-diff-menu-divider"}),e.jsx(ce,{checked:s,icon:e.jsx(qa,{size:14}),label:"Show editor controls",onClick:x,onClose:u}),e.jsx(ce,{checked:i,icon:e.jsx(qs,{size:14}),label:"Render Markdown",onClick:N,onClose:u}),e.jsx(ce,{checked:!a,icon:e.jsx(st,{size:14}),label:"Show diffs first",onClick:v,onClose:u}),e.jsx(ce,{checked:d,icon:e.jsx(Oa,{size:14}),label:"Enable word diffs",onClick:E,onClose:u}),e.jsx(ce,{checked:n,icon:e.jsx(oa,{size:14}),label:"Hide white space",onClick:w,onClose:u}),e.jsx(ce,{icon:e.jsx(ca,{size:14}),label:"Copy git apply command",onClick:p,onClose:u})]})}function ce({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(da,{size:14})]})}function Ai({addMenuOpen:t,expanded:s,filteredFiles:n,dirtyFilePaths:a,openFiles:i,goalDetailsAvailable:d,searchOpen:c,searchQuery:u,selectedPath:p,sideChatTabs:h=[],summaryAvailable:o,sourceStatus:x,sourceSwitcher:w,visibleTab:v,getFileBookmarkStatus:N,onCloseFileTab:E,onCloseSideChat:T,onCloseSearch:I,onOpenFile:V,onOpenBrowser:G,onOpenSearch:B,onOpenSideChat:b,onSearchQueryChange:C,onSetFileBookmarkStatus:_,onSelectFile:M,onSelectFiles:A,onSelectGoal:Z,onSelectSummary:q,onSelectSideChat:z,onToggleAddMenu:U,onToggleExpanded:ie}){const re=l.useRef(null);l.useEffect(()=>{if(!t&&!c)return;function k(){t&&U(),c&&I()}function F(de){re.current?.contains(de.target)||k()}function D(de){de.key==="Escape"&&k()}return document.addEventListener("pointerdown",F),document.addEventListener("keydown",D),()=>{document.removeEventListener("pointerdown",F),document.removeEventListener("keydown",D)}},[t,I,U,c]);function Q(k){if(k.key==="Escape"){I();return}k.key==="Enter"&&n[0]&&V(n[0])}function Y(k){if(!["ArrowRight","ArrowLeft","Home","End"].includes(k.key))return;const F=k.target;if(!(F instanceof HTMLButtonElement)||F.getAttribute("role")!=="tab")return;const D=Array.from(k.currentTarget.querySelectorAll('button[role="tab"]')),de=D.indexOf(F);if(de<0||D.length===0)return;k.preventDefault();const Nt=ga(de,D.length,k.key),Re=D[Nt];if(!Re)return;Re.focus(),Re.click();const J=Re.id;J&&window.requestAnimationFrame(()=>document.getElementById(J)?.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:Y,children:[d?e.jsxs("button",{type:"button",className:`workspace-diff-tab ${v==="goal"?"active":""}`,role:"tab","aria-selected":v==="goal",onClick:Z,children:[e.jsx(st,{size:14}),e.jsx("span",{children:"Goal"})]}):null,o&&q?e.jsxs("button",{type:"button",className:`workspace-diff-tab ${v==="summary"?"active":""}`,role:"tab","aria-selected":v==="summary",onClick:q,children:[e.jsx(_s,{size:14}),e.jsx("span",{children:"Summary"})]}):null,e.jsxs("button",{type:"button",className:`workspace-diff-tab ${v==="files"?"active":""}`,role:"tab",id:"right-sidebar-files-tab","aria-controls":"right-sidebar-files-panel","aria-selected":v==="files",tabIndex:v==="files"?0:-1,onClick:A,children:[e.jsx(gt,{size:14}),e.jsx("span",{children:"Files"})]}),i.map(k=>e.jsxs("div",{className:`workspace-diff-tab file ${v==="file"&&p===k.path?"active":""}`,children:[e.jsxs("button",{type:"button",className:"workspace-diff-tab-main",role:"tab","aria-selected":v==="file"&&p===k.path,title:k.path,onClick:()=>M(k.path),children:[e.jsx(st,{className:"workspace-diff-tab-icon",size:13}),a.has(k.path)&&e.jsx("span",{className:"workspace-diff-tab-dirty","aria-hidden":"true"}),e.jsx("span",{children:k.path.split("/").pop()})]}),_?e.jsx(Jt,{className:"workspace-diff-tab-bookmark-actions",currentStatus:N?.(k.path)??null,onSetStatus:F=>_(k.path,F)}):null,e.jsx("button",{type:"button",className:"workspace-diff-tab-close",title:`Close ${k.path}`,onClick:F=>E(k.path,F),children:e.jsx(As,{size:12})})]},k.path)),h.map(k=>e.jsxs("div",{className:"workspace-diff-tab right-chat-tab",children:[e.jsx("button",{type:"button",className:"workspace-diff-tab-main",role:"tab",id:`right-chat-tab-${k.id}`,"aria-controls":`right-chat-panel-${k.id}`,"aria-selected":!1,tabIndex:-1,title:k.title,onClick:()=>z?.(k.id),children:e.jsx("span",{children:k.title})}),T?e.jsx("button",{type:"button",className:"workspace-diff-tab-close",title:`Close ${k.title}`,"aria-label":`Close ${k.title}`,onClick:F=>{F.stopPropagation(),T(k.id)},children:e.jsx(As,{size:12})}):null]},k.id)),e.jsxs("div",{className:"workspace-diff-add-anchor",ref:re,children:[e.jsx("button",{type:"button",className:`workspace-diff-add-tab ${t||c?"active":""}`,title:"Add","aria-label":"Add to right sidebar",onClick:U,children:e.jsx(ua,{size:15})}),t&&e.jsxs("div",{className:"workspace-diff-add-menu",role:"menu",children:[b?e.jsxs("button",{type:"button",role:"menuitem",onClick:b,children:[e.jsx(fa,{size:14}),e.jsx("span",{children:"New task"}),e.jsx("kbd",{})]}):null,e.jsxs("button",{type:"button",role:"menuitem",onClick:A,children:[e.jsx(gt,{size:14}),e.jsx("span",{children:"Files"}),e.jsx("kbd",{})]}),o&&q?e.jsxs("button",{type:"button",role:"menuitem",onClick:q,children:[e.jsx(_s,{size:14}),e.jsx("span",{children:"Summary"}),e.jsx("kbd",{})]}):null,e.jsxs("button",{type:"button",role:"menuitem",onClick:B,children:[e.jsx(pa,{size:14}),e.jsx("span",{children:"Open file"}),e.jsx("kbd",{children:"Ctrl+P"})]}),e.jsxs("button",{type:"button",role:"menuitem",onClick:G,children:[e.jsx(ha,{size:14}),e.jsx("span",{children:"Browser"}),e.jsx("kbd",{children:"Ctrl+I"})]})]}),c&&e.jsxs("div",{className:"workspace-file-search-popover",children:[e.jsx("input",{autoFocus:!0,placeholder:"Search files",value:u,onChange:k=>C(k.target.value),onKeyDown:Q}),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(k=>e.jsx("button",{type:"button",onClick:()=>V(k),children:k},k))})]})]})]}),w||x?e.jsxs("div",{className:"workspace-diff-source-bar","aria-label":"Workspace source",children:[w?e.jsx("div",{className:"workspace-diff-source-toggle",role:"group","aria-label":"File source",children:w.options.map(k=>e.jsx("button",{type:"button",className:w.value===k.value?"active":"","aria-pressed":w.value===k.value,onClick:()=>w.onChange(k.value),children:k.label},k.value))}):null,x?e.jsx("span",{className:`workspace-diff-source-status ${x.tone}`,children:x.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:ie,children:s?e.jsx(ma,{size:14}):e.jsx(xa,{size:14})})]})}function Pi({canCheckActiveFile:t,canSaveActiveFile:s,collapsed:n,editorControlsVisible:a,editorDiagnosticStatus:i,editorDiagnosticsChecking:d,hideWhiteSpace:c,loadFullFiles:u,menuOpen:p,renderMarkdown:h,showEditorCommandBar:o,showRenderMarkdownToggle:x,splitView:w,wordDiffs:v,wordWrap:N,onCopyGitApply:E,onEditorCheck:T,onEditorRedo:I,onEditorSave:V,onEditorUndo:G,onRefresh:B,onToggleCollapsed:b,onToggleEditorControlsVisible:C,onToggleHideWhiteSpace:_,onToggleLoadFullFiles:M,onToggleMenu:A,onToggleRenderMarkdown:Z,onToggleSplitView:q,onToggleWordDiffs:z,onToggleWordWrap:U}){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":p,onClick:()=>A(),children:e.jsx(ba,{size:15})}),p&&e.jsx(Ei,{collapsed:n,editorControlsVisible:a,hideWhiteSpace:c,loadFullFiles:u,renderMarkdown:h,wordDiffs:v,wordWrap:N,onClose:()=>A(!1),onCopyGitApply:E,onRefresh:B,onToggleCollapsed:b,onToggleEditorControlsVisible:C,onToggleHideWhiteSpace:_,onToggleLoadFullFiles:M,onToggleRenderMarkdown:Z,onToggleWordDiffs:z,onToggleWordWrap:U})]}),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:V,children:e.jsx(Wa,{size:14})}),e.jsx("button",{type:"button",className:"diff-icon-button",title:"Undo","aria-label":"Undo",onClick:G,children:e.jsx(Ya,{size:14})}),e.jsx("button",{type:"button",className:"diff-icon-button",title:"Redo","aria-label":"Redo",onClick:I,children:e.jsx(Za,{size:14})}),e.jsx("button",{type:"button",className:"diff-icon-button",title:"Check file","aria-label":"Check file",disabled:!t,onClick:T,children:d?e.jsx(We,{className:"spinning",size:14}):e.jsx(Ps,{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(Ks,{size:13}):e.jsx(Ps,{size:13}),e.jsx("span",{children:i.label})]})]}),x&&e.jsx("button",{type:"button",className:`diff-icon-button ${h?"active":""}`,title:h?"Show Markdown source":"Render Markdown","aria-label":h?"Show Markdown source":"Render Markdown","aria-pressed":h,onClick:Z,children:e.jsx(qs,{size:14})}),e.jsx("button",{type:"button",className:`diff-icon-button ${w?"active":""}`,title:w?"Show unified diff":"Show split diff","aria-label":w?"Show unified diff":"Show split diff","aria-pressed":w,onClick:q,children:e.jsx(Ga,{size:14})})]})})}const Li={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 es(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 Li[n]??"text"}function Di(t,s){return t?s==="markdown"?Ti(t):s==="json"?Ne(t,/("(?:\\.|[^"\\])*"(?=\s*:)|"(?:\\.|[^"\\])*"|[-]?\b\d+(?:\.\d+)?\b|\btrue\b|\bfalse\b|\bnull\b|[{}[\]:,])/g):s==="css"?Ne(t,/(\/\*.*?\*\/|#[\da-fA-F]{3,8}\b|--[\w-]+|[.#]?[\w-]+(?=\s*:)|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\b\d+(?:\.\d+)?(?:px|rem|em|%|vh|vw)?\b|[{}():;,])/g):s==="html"?Ne(t,/(<!--.*?-->|<\/?[\w-]+|[\w:-]+(?==)|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[<>/=])/g):s==="shell"?Ne(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"?Ne(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):Ne(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 Ti(t){return/^\s{0,3}#{1,6}\s/.test(t)?[{text:t,kind:"keyword"}]:/^\s*[-*+]\s/.test(t)?[{text:t,kind:"property"}]:Ne(t,/(`[^`]+`|\*\*[^*]+\*\*|\[[^\]]+\]\([^)]+\)|https?:\/\/\S+)/g)}function _i(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 Ne(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:_i(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 vt({language:t,text:s}){return e.jsx(e.Fragment,{children:Di(s,t).map((n,a)=>e.jsx("span",{className:`syntax-token ${n.kind}`,children:n.text},`${a}-${n.text}`))})}const Mi=`
3
-
4
- [file truncated]`,zi=l.lazy(()=>wa(()=>import("./WorkspaceMonacoEditor-DPGcG8fy.js").then(t=>t.jc),__vite__mapDeps([0,1,2,3]),import.meta.url)),qt=6,Wi=18,Se=22,Os=44,Ii=160,Us=12;function kt({path:t,workspaceName:s,workspaceRootPath:n,onSelectPath:a}){const i=Xs(t,n),d=va(i),c=d?Bi(i):s?.trim()||"Workspace",p=(d&&c!=="/"&&i.startsWith(`${c}/`)?i.slice(c.length+1):i).split("/").filter(Boolean),h=!!(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}),p.map((o,x)=>{const w=x===p.length-1,v=p.slice(0,x+1).join("/");return e.jsxs("span",{className:"workspace-file-breadcrumb-segment",children:[e.jsx(ka,{size:13}),a&&h&&!w?e.jsx("button",{type:"button",onClick:()=>a(v),children:o}):e.jsx("span",{children:o})]},`${x}-${o}`)})]})}function Bi(t){const s=/^[A-Za-z]:\//.exec(t);return s?s[0].slice(0,-1):"/"}function Oi({collapsed:t=!1,diagnostics:s=[],draftContent:n,editable:a=!1,editorRef:i,error:d,file:c,hideWhiteSpace:u=!1,headerActions:p,imageSrc:h,loading:o,loadFullFiles:x,onOpenImage:w,onSelectBreadcrumbPath:v,onDraftContentChange:N,onLspAction:E,onSave:T,renderMarkdown:I,saveError:V,saving:G=!1,splitView:B=!1,wordDiffs:b=!1,wordWrap:C,workspaceName:_,workspaceRootPath:M}){Ce(d,{prefix:"File preview"}),Ce(V,{prefix:"Save failed"});const A=n??c.content??"",Z=l.useMemo(()=>A.split(`
5
- `).slice(0,800),[A]),q=es(c.path),z=n!=null||c.content!=null,U=A.endsWith(Mi),ie=I&&z&&Zt(c.path),re=z&&ja(c.path)&&Ki(A);return h?e.jsxs("div",{className:"workspace-file-preview",children:[e.jsxs("div",{className:"workspace-diff-file-heading",children:[e.jsxs("div",{children:[e.jsx(kt,{path:c.path,workspaceName:_,workspaceRootPath:M,onSelectPath:v}),e.jsxs("span",{className:"diff-addition",children:["+",c.additions]}),e.jsxs("span",{className:"diff-deletion",children:["-",c.deletions]})]}),p]}),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:w,children:e.jsx("img",{alt:c.path,decoding:"async",src:h})})})]}):!x&&c.patch||!z&&c.patch?B?e.jsx(Hi,{collapsed:t,file:c,hideWhiteSpace:u,onSelectBreadcrumbPath:v,wordDiffs:b,wordWrap:C,headerActions:p,workspaceName:_,workspaceRootPath:M}):e.jsx(Ui,{collapsed:t,file:c,hideWhiteSpace:u,wordWrap:C,workspaceName:_,workspaceRootPath:M,onSelectBreadcrumbPath:v,headerActions:p}):e.jsxs("div",{className:`workspace-file-preview ${C?"wrap":""}`,children:[e.jsxs("div",{className:"workspace-diff-file-heading",children:[e.jsxs("div",{children:[e.jsx(kt,{path:c.path,workspaceName:_,workspaceRootPath:M,onSelectPath:v}),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:[G?e.jsx("span",{className:"workspace-file-save-state",children:"Saving"}):null,p]})]}),z?ie?e.jsx("div",{className:"workspace-markdown-preview",children:e.jsx(Fa,{content:A})}):re?e.jsx(Vi,{file:c,contentBase64:A}):a&&!U?e.jsx(l.Suspense,{fallback:e.jsx("div",{className:"workspace-diff-code-empty",children:"Loading editor"}),children:e.jsx(zi,{diagnostics:s,filePath:c.path,onChange:Q=>N?.(Q),onLspAction:E,onSave:()=>T?.(),ref:i,value:A,wordWrap:C})}):e.jsx("div",{className:"workspace-file-code",children:Z.map((Q,Y)=>e.jsxs("div",{className:"workspace-file-code-row",children:[e.jsx("span",{children:Y+1}),e.jsx("code",{children:e.jsx(vt,{language:q,text:Q||" "})})]},`${Y}-${Q}`))}):e.jsx("div",{className:"workspace-diff-code-empty",children:o?"Loading file content":"No file content available."})]})}function Ui({collapsed:t=!1,file:s,hideWhiteSpace:n=!1,wordWrap:a,workspaceName:i,workspaceRootPath:d,onSelectBreadcrumbPath:c,headerActions:u}){const p=l.useMemo(()=>sn(s.patch,n),[s.patch,n]),h=es(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(kt,{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(tn,{ariaLabel:`${s.path} diff`,className:"workspace-diff-code",emptyMessage:"No patch available.",rows:p,renderRow:(o,x)=>o.kind==="spacer"?e.jsx("div",{className:"workspace-diff-spacer",role:"row",children:o.label},`${o.label}-${x}`):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(vt,{language:h,text:o.newContent||o.oldContent||" "})})]},`${o.oldLine}-${o.newLine}-${x}`),wordWrap:a})]})}function Hi({collapsed:t,file:s,hideWhiteSpace:n,wordDiffs:a,wordWrap:i,workspaceName:d,workspaceRootPath:c,onSelectBreadcrumbPath:u,headerActions:p}){const h=l.useMemo(()=>sn(s.patch,n),[s.patch,n]),o=es(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(kt,{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:[p,e.jsx(Ia,{size:14})]})]}),t?e.jsx("div",{className:"workspace-diff-code-empty",children:"Diff collapsed"}):e.jsx(tn,{ariaLabel:`${s.path} split diff`,className:"workspace-split-code",emptyMessage:"No patch available.",rows:h,renderRow:(x,w)=>x.kind==="spacer"?e.jsx("div",{className:"workspace-diff-spacer split",role:"row",children:x.label},`${x.label}-${w}`):e.jsxs("div",{className:`workspace-split-row ${x.kind}`,role:"row",children:[e.jsx("span",{className:"workspace-diff-line-number old",role:"cell",children:x.oldLine}),e.jsx("code",{className:"old",role:"cell",children:e.jsx(vt,{language:o,text:x.oldContent||" "})}),e.jsx("span",{className:"workspace-diff-line-number new",role:"cell",children:x.newLine}),e.jsx("code",{className:"new",role:"cell",children:e.jsx(vt,{language:o,text:x.newContent||" "})})]},`${x.oldLine}-${x.newLine}-${w}`),wordWrap:i})]})}function Vi({file:t,contentBase64:s}){const n=l.useMemo(()=>{const a=qi(s);if(!a)return null;const i=new Blob([new Uint8Array(a)],{type:Gi(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:"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 Gi(t){return/\.docx$/i.test(t)?"application/vnd.openxmlformats-officedocument.wordprocessingml.document":"application/msword"}function Ki(t){return t.length>0&&/^[A-Za-z0-9+/=\s]+$/.test(t)}function qi(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 tn({ariaLabel:t,className:s,emptyMessage:n,rows:a,renderRow:i,wordWrap:d}){const c=!d&&a.length>Ii,{endIndex:u,offsetTop:p,scrollRef:h,startIndex:o,totalHeight:x}=Xi(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:h,role:"table","aria-label":t,"aria-rowcount":a.length,children:e.jsx("div",{className:"workspace-diff-virtual-spacer",style:{height:x},children:e.jsx("div",{className:"workspace-diff-virtual-window",style:{transform:`translateY(${p}px)`},children:a.slice(o,u).map((w,v)=>i(w,o+v))})})}):e.jsx("div",{className:s,role:"table","aria-label":t,children:a.map(i)})}function Xi(t,s){const n=l.useRef(null),[a,i]=l.useState({height:Se*Os,scrollTop:0}),d=l.useCallback(()=>{const h=n.current;h&&i({height:h.clientHeight||Se*Os,scrollTop:h.scrollTop})},[]);if(l.useEffect(()=>{if(!s)return;const h=n.current;if(!h)return;d();let o=0;const x=()=>{if(typeof window>"u"){d();return}window.cancelAnimationFrame(o),o=window.requestAnimationFrame(d)};h.addEventListener("scroll",x,{passive:!0});const w=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>x());return w?.observe(h),()=>{h.removeEventListener("scroll",x),w?.disconnect(),typeof window<"u"&&window.cancelAnimationFrame(o)}},[s,d]),!s)return{endIndex:t,offsetTop:0,scrollRef:n,startIndex:0,totalHeight:t*Se};const c=Math.ceil(a.height/Se),u=Math.max(0,Math.floor(a.scrollTop/Se)-Us);return{endIndex:Math.min(t,u+c+Us*2),offsetTop:u*Se,scrollRef:n,startIndex:u,totalHeight:t*Se}}function sn(t,s){if(!t.trim())return[];const n=[];let a=0,i=0,d=null,c=null,u=!1,p=[];function h(){n.push(...Zi(p)),p=[]}function o(){u&&(h(),d=a,c=i,u=!1)}for(const x of t.split(`
6
- `)){const w=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(x);if(w){o();const E=Number(w[1]),T=Number(w[2]);if(d!==null&&c!==null){const I=Math.max(E-d,T-c,0);I>0&&n.push({kind:"spacer",label:nn(I)})}a=E,i=T,u=!0;continue}if(x.startsWith("diff --git")||x.startsWith("index ")||x.startsWith("--- ")||x.startsWith("+++ ")||!u||x.startsWith("\\ No newline"))continue;const v=x.slice(1)||" ";if(s&&!v.trim())continue;if(x.startsWith("+")){h(),n.push({kind:"addition",oldLine:"",newLine:String(i||""),oldContent:"",newContent:v}),i+=1;continue}if(x.startsWith("-")){h(),n.push({kind:"deletion",oldLine:String(a||""),newLine:"",oldContent:v,newContent:""}),a+=1;continue}const N=x.startsWith(" ")?x.slice(1)||" ":x||" ";s&&!N.trim()||(p.push({kind:"context",oldLine:String(a||""),newLine:String(i||""),oldContent:N,newContent:N}),a+=1,i+=1)}return o(),n}function Zi(t){if(t.length<Wi)return t;const s=t.length-qt*2;return s<=0?t:[...t.slice(0,qt),{kind:"spacer",label:nn(s)},...t.slice(-qt)]}function nn(t){return`${t} unmodified ${t===1?"line":"lines"}`}const wt=`
7
-
8
- [file truncated]`,Qi="openpond.sandboxSourceReadback.v1";async function Yi(t,s,n,a=[]){let i;try{i=await W.sandboxDownloadFile(t,s,n,{maxBytes:256*1024})}catch(c){const u=c instanceof Error?c.message:String(c);if(!Ji(u))throw c;const p=sr(a,s,n);if(p)return p;const h=!!ts(a,s)?.artifact,o=await W.sandbox(t,s).catch(()=>null);throw new Error(er(n,o?.sandbox??null,u,{hasReadbackArtifact:h}))}const d=i.file.isBinary?i.file.contentsBase64||null:`${i.contents}${i.file.truncated?wt:""}`;return{path:i.file.path,status:"",additions:0,deletions:0,patch:"",content:d}}function Ji(t){return t.includes("sandbox_not_ready")&&t.includes("placement_stale")||t.includes("sandbox_not_running")}function er(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 tr(t,s){if(!s)return null;const n=ts(t,s);if(!n)return null;const a=rn(n.artifact),i=new Map;for(const u of ss(a))i.set(u.path,u);for(const u of ln(n.artifact)){const p=an(n.artifact,u.path);p&&i.set(u.path,p)}const d=[...i.values()].sort((u,p)=>u.path.localeCompare(p.path)),c=[...new Set(d.map(u=>u.path))].sort((u,p)=>u.localeCompare(p));return{appId:s,repoPath:"",initialized:!0,dirty:!1,filesChanged:d.length,additions:d.reduce((u,p)=>u+p.additions,0),deletions:d.reduce((u,p)=>u+p.deletions,0),repoFiles:c,files:d,error:null,updatedAt:Ie(ae(n.artifact)?.createdAt)??n.event.timestamp}}function sr(t,s,n){if(!s)return null;const a=ts(t,s);return a?an(a.artifact,n):null}function ts(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=ae(a.data),d=ae(i?.sourcePreservation),c=ae(d?.sourceReadbackArtifact);if(c&&c.schemaVersion===Qi&&c.sandboxId===s)return{artifact:c,event:a}}return null}function an(t,s){const n=ss(rn(t)).find(d=>d.path===s),a=ln(t).find(d=>d.path===s);if(!n&&!a)return null;const i=typeof a?.content=="string"?`${a.content}${a.truncated?wt:""}`: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 rn(t){const s=ae(t.patch);return typeof s?.text=="string"?s.text:""}function ln(t){return(Array.isArray(t.files)?t.files:[]).map(n=>{const a=ae(n),i=Ie(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=ae(t.metadata)??{},n=ae(s.sourcePreservation)??ae(s.sourcePreserve),a=ae(s.sourceChangeDetection),i=Ie(n?.preservedSha)??Ie(a?.preservedSha)??null,d=Ie(n?.sourceRef)??Ie(a?.sourceRef)??(typeof t.repoRef=="string"?t.repoRef:null);return!i&&!d?null:{preservedSha:i,sourceRef:d}}function ae(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function Ie(t){return typeof t=="string"&&t.trim()?t.trim():null}async function ar(t,s,n,a){const i=await W.sandboxUploadFile(t,s,{path:n,contents:a});return await W.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 ir(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 ss(t?.diff??""))n.set(a.path,a);for(const a of lr(s?.porcelain??""))n.has(a.path)||n.set(a.path,a);return[...n.values()].sort((a,i)=>a.path.localeCompare(i.path))}function ss(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:cr(i)??"changed-file",status:"M",additions:0,deletions:0,patchLines:[i]};continue}if(n){if(n.patchLines.push(i),i.startsWith("+++ ")){const d=Hs(i.slice(4));d&&(n.path=d);continue}if(i.startsWith("--- ")){const d=Hs(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 lr(t){const s=[];for(const n of t.split(`
11
- `)){if(!n.trim())continue;const a=or(n);a&&s.push({path:a,status:n.slice(0,2).trim()||"M",additions:0,deletions:0,patch:"",content:null})}return s}function or(t){const s=t.slice(3).trim();return s?s.split(" -> ").pop()?.trim()||s:null}function cr(t){const s=/^diff --git a\/(.+) b\/(.+)$/.exec(t.trim());return s?.[2]??s?.[1]??null}function Hs(t){const s=t.trim();return!s||s==="/dev/null"?null:s.startsWith("a/")||s.startsWith("b/")?s.slice(2):s}const on="openpond.workspace.editorControlsVisible";function dr(){try{return window.localStorage.getItem(on)==="true"}catch{return!1}}function ur(t){try{window.localStorage.setItem(on,String(t))}catch{}}function fr({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(h=>h.severity==="error").length;if(d>0)return{label:`${d} error${d===1?"":"s"}`,severity:"error"};const c=t.filter(h=>h.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 p=s.find(h=>h.status!=="connected");return p?{label:p.id==="none"?"No LSP":`${p.id} unavailable`,severity:"unavailable"}:{label:"No issues",severity:"none"}}const Vs=3e3,pr=2e3,Gs=[],hr=[];function $r({appId:t,workspaceId:s,workspaceKind:n,connection:a,runtimeEvents:i,diff:d,editorPreferences:c,loading:u,workspaceName:p,workspaceInitialized:h,workspaceError:o,expanded:x,fileRootPath:w,filesWithPreview:v=!1,openFileRequest:N,readOnly:E=!1,sideChatTabs:T,sourceSwitcher:I,tabRequest:V,viewState:G,onRefresh:B,onResizeStart:b,onToggleExpanded:C,onOpenBrowser:_,onViewStateChange:M,onCloseSideChat:A,onOpenSideChat:Z,onSelectSideChat:q,goalDetails:z,sandboxFileSource:U,trainingSummary:ie,sidebarFileBookmarks:re=[],sidebarFileSourceSessionId:Q=null,onSetSidebarFileStatus:Y}){return e.jsx(jr,{appId:t,workspaceId:s,workspaceKind:n,connection:a,runtimeEvents:i??[],diff:d,editorPreferences:c??null,loading:u,workspaceName:p,workspaceInitialized:h,workspaceError:o,expanded:x,fileRootPath:w??null,filesWithPreview:v,openFileRequest:N,readOnly:E,sideChatTabs:T??[],sourceSwitcher:I??null,tabRequest:V??null,viewState:G??null,onRefresh:B,onResizeStart:b,onToggleExpanded:C,onOpenBrowser:_,onViewStateChange:M,onCloseSideChat:A,onOpenSideChat:Z,onSelectSideChat:q,goalDetails:z??null,sandboxFileSource:U??null,trainingSummary:ie??null,sidebarFileBookmarks:re,sidebarFileSourceSessionId:Q,onSetSidebarFileStatus:Y})}function mr(t,s,n,a){return t&&s?.content!=null?{...t,content:s.content}:s&&!t&&Xt(s)?s:t&&Xt(t)?t:s&&Xt(s)?s:t??s??n??Qt(a)}function Xt(t){return!!(t.patch||t.content!=null)}function xr({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 p=Math.max(1,t),h=p===1?"change":"changes";return{label:c?`${p} unpreserved ${h}`:`${p} local ${h}`,tone:"dirty"}}return{label:c?"sandbox clean":"local clean",tone:"clean"}}function br(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 gr(t){const s=t.split("/").filter(Boolean);return s.map((n,a)=>s.slice(0,a+1).join("/"))}function jr({appId:t,workspaceId:s,workspaceKind:n,connection:a,runtimeEvents:i,diff:d,editorPreferences:c,loading:u,workspaceName:p,workspaceInitialized:h,workspaceError:o,expanded:x,fileRootPath:w,filesWithPreview:v,openFileRequest:N,readOnly:E,sideChatTabs:T,sourceSwitcher:I,tabRequest:V,viewState:G,onRefresh:B,onResizeStart:b,onToggleExpanded:C,onOpenBrowser:_,onViewStateChange:M,onCloseSideChat:A,onOpenSideChat:Z,onSelectSideChat:q,goalDetails:z,sandboxFileSource:U,trainingSummary:ie,sidebarFileBookmarks:re,sidebarFileSourceSessionId:Q,onSetSidebarFileStatus:Y}){const k=G??$a(),[F,D]=l.useState(k.activeTab),[de,Nt]=l.useState(!1),[Re,J]=l.useState(!1),[cn,le]=l.useState(!1),[Ct,ns]=l.useState(""),[ee,nt]=l.useState(()=>[...k.openFilePaths]),[g,$e]=l.useState(k.selectedPath),[as,dn]=l.useState(!1),[is,un]=l.useState(!1),[Fe,fn]=l.useState(!1),[Rt,pn]=l.useState(!0),[rs,hn]=l.useState(dr),[ls,mn]=l.useState(!1),[os,xn]=l.useState(!1),[cs,bn]=l.useState(!1),[se,at]=l.useState({}),[ue,Oe]=l.useState({}),[ds,$t]=l.useState(()=>new Set),[Ue,He]=l.useState(null),[gn,Ft]=l.useState(!1),[us,Ve]=l.useState(null),[fs,Et]=l.useState({}),[jn,At]=l.useState({}),[vn,Pt]=l.useState(null),[kn,Ee]=l.useState(null),[wn,Ae]=l.useState(null);Ce(o,{prefix:"Workspace"}),Ce(us,{prefix:"Sandbox files"});const[Lt,Dt]=l.useState(null),[yn,Ge]=l.useState({}),[it,Tt]=l.useState(null),[rt,lt]=l.useState(null),[ot,ct]=l.useState(null),te=c??Ca.editor,ps=l.useRef(se),_t=l.useRef(Gt(k)),Mt=l.useRef(Gt(k)),hs=l.useRef(null),zt=l.useRef(B),oe=l.useRef(!1),Ke=l.useRef(null),qe=l.useRef(0),fe=l.useRef(null),Xe=l.useRef(null),P=U?.sandboxId?.trim()||null,S=!!U,Pe=!!ie||S&&!!P,dt=S?`sandbox:${P??"pending"}`:`workspace:${t??"none"}`,ms=S?!!P:!!t,xs=l.useRef(dt),pe=!!(z?.createRuntime||z?.goalRuntime||z?.subagentRuntime),Le=l.useCallback(async(r={})=>{if(S){if(!a){He(null),Ve("OpenPond App server is not connected.");return}if(!P){He(null),Ve(null);return}r.silent||Ft(!0);try{const[f,m,y]=await Promise.allSettled([W.sandboxFiles(a,P,{recursive:!0,maxEntries:pr}),W.sandboxGitStatus(a,P),W.sandboxGitDiff(a,P,{})]);if(f.status==="rejected")throw f.reason;const R=ir(f.value.files),j=m.status==="fulfilled"?m.value.status:null,$=y.status==="fulfilled"?y.value.diff:null,L=rr($,j),Je=L.reduce((Ht,Vt)=>Ht+Vt.additions,0),Jn=L.reduce((Ht,Vt)=>Ht+Vt.deletions,0);He({appId:P,repoPath:"",initialized:!0,dirty:j?!j.clean:L.length>0,filesChanged:L.length,additions:Je,deletions:Jn,repoFiles:R,files:L,error:null,updatedAt:new Date().toISOString()}),Ve(null)}catch(f){He(null),Ve(f instanceof Error?f.message:String(f))}finally{r.silent||Ft(!1)}}},[a,P,S]),bs=l.useMemo(()=>tr(i,P),[i,P]),gs=!!(Ue&&((Ue.files?.length??0)>0||(Ue.repoFiles?.length??0)>0)),Sn=S&&!gs&&!!bs,he=S?gs?Ue:bs??Ue:d,ut=he?.repoPath??null,Nn=l.useMemo(()=>br(i,P),[i,P]),De=he?.files??Gs,js=he?.files??Gs,be=l.useMemo(()=>new Map(js.map(r=>[r.path,r])),[js]),ge=l.useMemo(()=>new Map(De.map(r=>[r.path,r])),[De]),Te=he?.repoFiles??(De.length>0?De.map(r=>r.path):hr),_e=l.useMemo(()=>De.filter(r=>!ya(r,Te)),[Te,De]),je=l.useMemo(()=>ot&&!Te.includes(ot)?[ot,...Te]:Te,[Te,ot]),vs=l.useMemo(()=>ee.map(r=>be.get(r)??se[r]??ge.get(r)??Qt(r)),[be,ge,se,ee]),ft=l.useMemo(()=>{const r={};for(const f of ee){if(we(f))continue;const m=be.get(f)??se[f]??ge.get(f)??Qt(f);m.content!=null&&(r[f]=m.content)}return r},[be,ge,se,ee]),Me=l.useMemo(()=>{const r=new Set;for(const[f,m]of Object.entries(ue))m.content!==m.savedContent&&r.add(f);return r},[ue]),Cn=l.useMemo(()=>{const r=Ct.trim().toLowerCase(),f=je;return r?f.filter(m=>m.toLowerCase().includes(r)):f},[je,Ct]),Wt=l.useMemo(()=>({activeTab:F,openFilePaths:ee,selectedPath:g}),[F,ee,g]);l.useEffect(()=>{ps.current=se},[se]),l.useEffect(()=>{Ke.current=it},[it]),l.useEffect(()=>{Oe(r=>{let f=!1;const m={...r},y=new Set(ee),R=d?.updatedAt?Date.parse(d.updatedAt):null;for(const[j,$]of Object.entries(m))y.has(j)||$.content!==$.savedContent||(delete m[j],f=!0);for(const[j,$]of Object.entries(ft)){const L=m[j];if(!L){m[j]={content:$,savedContent:$},f=!0;continue}if(L.content===L.savedContent&&L.savedContent!==$){if(L.savedAt&&(R===null||R<L.savedAt))continue;m[j]={content:$,savedContent:$},f=!0}}return f?m:r})},[d?.updatedAt,ft,ee]),l.useEffect(()=>{zt.current=B},[B]),l.useEffect(()=>{if(!G)return;const r=Sa(G,ut);Ls(_t.current,r)||(_t.current=r,Mt.current=r,D(r.activeTab),nt(r.openFilePaths),$e(r.selectedPath))},[G,ut]),l.useEffect(()=>{if(Ls(Mt.current,Wt))return;const r=Gt(Wt);Mt.current=r,_t.current=r,M?.(r)},[Wt,M]),l.useEffect(()=>{E||S||!a||!t||!h||d||o||oe.current||(oe.current=!0,Promise.resolve(zt.current({silent:!0})).catch(()=>{}).finally(()=>{oe.current=!1}))},[t,a,d,E,S,o,h]),l.useEffect(()=>(xs.current!==dt&&(xs.current=dt,fe.current?.abort(new Error("lsp_diagnostics_source_changed")),fe.current=null,nt([]),$e(null),at({}),Oe({}),$t(new Set),He(null),Ve(null),Ft(!1),Et({}),At({}),Pt(null),Ee(null),Ae(null),Dt(null),Ge({}),Tt(null),lt(null),ct(null)),()=>{fe.current?.abort(new Error("lsp_diagnostics_unmounted")),fe.current=null}),[dt]),l.useEffect(()=>{!N||hs.current===N.id||ms&&(hs.current=N.id,pt(N.path))},[ms,N]),l.useEffect(()=>{if(!S||(Le(),!a||!P))return;let r=!1;async function f(){if(!(r||oe.current)&&!(typeof document<"u"&&document.visibilityState==="hidden")){oe.current=!0;try{await Le({silent:!0})}finally{oe.current=!1}}}const m=window.setInterval(()=>{f()},Vs),y=()=>{f()};return window.addEventListener("focus",y),()=>{r=!0,window.clearInterval(m),window.removeEventListener("focus",y)}},[a,Le,P,S]),l.useEffect(()=>{if(E||S||!a||!t||!h)return;let r=!1;async function f(){if(!(r||oe.current)&&!(typeof document<"u"&&document.visibilityState==="hidden")){oe.current=!0;try{await zt.current({silent:!0})}catch{}finally{oe.current=!1}}}const m=window.setInterval(()=>{f()},Vs),y=()=>{f()};return window.addEventListener("focus",y),()=>{r=!0,window.clearInterval(m),window.removeEventListener("focus",y)}},[t,a,E,S,h]),l.useEffect(()=>{if(S||!a||!t||n==="local_project"){ct(null);return}let r=!1;return W.workspaceTemplateConfig(a,t).then(f=>{r||ct(f.exists?f.configPath??Na:null)}).catch(()=>{r||ct(null)}),()=>{r=!0}},[t,a,S,n]),l.useEffect(()=>{!g||je.includes(g)||ee.includes(g)||$e(_e[0]?.path??null)},[_e,ee,je,g]),l.useEffect(()=>{z?.active&&pe&&D("goal")},[z?.active,pe]),l.useEffect(()=>{V&&D(V.tab)},[V]),l.useEffect(()=>{!pe&&F==="goal"&&D("files")},[F,pe]),l.useEffect(()=>{!Pe&&F==="summary"&&D("files")},[F,Pe]);const K=F==="file"||v&&F==="files"?g:null;l.useEffect(()=>{if(!a||!K)return;if(we(K)){Ae(null),Ee(j=>j===K?null:j);return}const r=Lt?.path===K,f=Ze(K);if(E&&(f?.content!=null||f?.patch)){Ae(null),Ee(j=>j===K?null:j);return}if(!r&&(f?.content!=null||f?.patch&&!Fe)){Ae(null),Ee(j=>j===K?null:j);return}let m=!1;const y=ps.current[K];return y?.content==null&&(Fe||!y?.patch)&&Ee(K),Ae(null),(S?P?Yi(a,P,K,i):Promise.reject(new Error(U?.emptyMessage??"No sandbox filesystem is available.")):t?W.workspaceFile(a,t,K):Promise.reject(new Error("Workspace files are unavailable."))).then(j=>{m||at($=>{const L=$[j.path];return L?.content===j.content&&L.patch===j.patch&&L.status===j.status?$:{...$,[j.path]:j}})}).catch(j=>{m||Ae(j instanceof Error?j.message:String(j))}).finally(()=>{m||(Ee(j=>j===K?null:j),Dt(j=>j&&j.id===Lt?.id&&j.path===K?null:j))}),()=>{m=!0}},[F,t,a,Lt,Fe,E,i,U?.emptyMessage,P,S,K]);function pt(r){const f=Xs(r,ut);f&&(at(m=>{if(!(f in m))return m;const y={...m};return delete y[f],y}),Dt({id:Date.now(),path:f}),v||nt(m=>m.includes(f)?m:[...m,f]),$e(f),D(v?"files":"file"),!S&&a&&t&&we(f)&&lt(f),J(!1),le(!1),ns(""))}const Rn=l.useCallback(()=>{hn(r=>{const f=!r;return ur(f),f})},[]),Ze=r=>mr(be.get(r),se[r],ge.get(r),r),$n=l.useCallback((r,f)=>{Oe(m=>{const y=m[r],R=y?.savedContent??ft[r]??Ze(r).content??"";return{...m,[r]:{content:f,savedContent:R,savedAt:y?.savedAt}}}),Ge(m=>{if(!(r in m))return m;const y={...m};return delete y[r],y})},[be,ge,se,ft]),ze=l.useCallback(async(r,f={})=>{if(S||!a||!t||we(r))return;const m=Ze(r),y=f.content??ue[r]?.content??m.content??void 0;if(y?.endsWith(wt))return;const R=qe.current+1;qe.current=R,fe.current?.abort(new Error("lsp_diagnostics_superseded"));const j=new AbortController;fe.current=j,Pt(r);try{const $=await W.workspaceLspTouch(a,t,{path:r,content:y,waitForDiagnostics:f.waitForDiagnostics??!0},{signal:j.signal});if(R!==qe.current)return;Et(L=>({...L,[$.path]:$.diagnostics})),At(L=>({...L,[$.path]:$.servers}))}catch($){if(j.signal.aborted||R!==qe.current)return;const L=$ instanceof Error?$.message:String($);Et(Je=>({...Je,[r]:[]})),At(Je=>({...Je,[r]:[{id:"lsp",root:"",status:"error",message:L}]}))}finally{if(fe.current===j&&(fe.current=null),j.signal.aborted)return;R===qe.current&&Pt($=>$===r?null:$)}},[t,a,be,ge,ue,se,S]),Fn=l.useCallback(async r=>{if(S||!a||!t)throw new Error("Workspace LSP is unavailable.");return W.workspaceLspAction(a,t,r)},[t,a,S]),Qe=l.useCallback(async r=>{if(!a||!t&&!P||Ke.current===r)return;const f=ue[r];if(!f||f.content===f.savedContent)return;const m=f.content,y=Date.now();Ke.current=r,Tt(r),Ge(R=>{if(!(r in R))return R;const j={...R};return delete j[r],j});try{const R=S?await ar(a,P,r,m):await W.saveWorkspaceFile(a,t,{path:r,content:m});at(j=>({...j,[R.path]:R})),Oe(j=>{const $=j[r];return $?{...j,[r]:{content:$.content,savedContent:m,savedAt:y}}:j}),te.languageServers!=="off"&&te.checkOnSave&&await ze(r,{content:m,waitForDiagnostics:!0}),S?await Le({silent:!0}):await B({silent:!0})}catch(R){Ge(j=>({...j,[r]:R instanceof Error?R.message:String(R)}))}finally{Ke.current===r&&(Ke.current=null),Tt(R=>R===r?null:R)}},[te.checkOnSave,te.languageServers,t,a,ue,B,ze,Le,P,S]),ks=g?Ze(g):null,ve=g?ue[g]?.content??ks?.content??null:null,En=!!(ks?.patch&&!Fe),It=!!(!E&&F==="file"&&!En&&g&&ve!=null&&!we(g)&&!(Rt&&Zt(g))&&!ve.endsWith(wt));l.useEffect(()=>{if(te.languageServers==="off"||!te.diagnosticsWhileEditing||!g||!It||ve==null)return;const r=window.setTimeout(()=>{ze(g,{content:ve,waitForDiagnostics:!0})},700);return()=>window.clearTimeout(r)},[te.diagnosticsWhileEditing,te.languageServers,ze,ve,It,g]),l.useEffect(()=>{function r(f){!(f.ctrlKey||f.metaKey)||f.key.toLowerCase()!=="s"||F!=="file"||!g||(f.preventDefault(),Me.has(g)&&Qe(g))}return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[F,Me,Qe,g]);const An=l.useCallback(()=>{g&&(Xe.current?Xe.current.save():Qe(g))},[Qe,g]),Pn=l.useCallback(()=>{Xe.current?.undo()},[]),Ln=l.useCallback(()=>{Xe.current?.redo()},[]),Dn=l.useCallback(()=>{g&&te.languageServers!=="off"&&ze(g,{content:ve??void 0,waitForDiagnostics:!0})},[te.languageServers,ze,ve,g]);function Tn(r,f){if(f.stopPropagation(),!(Me.has(r)&&!window.confirm(`Discard unsaved changes to ${r}?`))&&(Me.has(r)&&(Oe(m=>{if(!(r in m))return m;const y={...m};return delete y[r],y}),Ge(m=>{if(!(r in m))return m;const y={...m};return delete y[r],y})),nt(m=>m.filter(y=>y!==r)),g===r)){const m=vs.find(y=>y.path!==r)??null;$e(m?.path??_e[0]?.path??null),m||D("files")}}function _n(){D("files"),J(!1),le(!1)}function ws(r){$t(f=>{const m=new Set(f);return m.has(r)?m.delete(r):m.add(r),m})}function Mn(r){r&&$t(f=>{const m=new Set(f);for(const y of gr(r))m.add(y);return m}),D("files"),J(!1),le(!1)}function zn(){const f=`git apply <<'PATCH'
12
- ${_e.map(m=>m.patch).filter(Boolean).join(`
13
- `)}
14
- PATCH`;navigator.clipboard?.writeText(f)}const Wn=_e.length>0,In=je.length>0,Bn=ee.length>0,On=pe||Pe||Wn||In||Bn,me=F==="goal"&&pe?"goal":F==="summary"&&Pe?"summary":F==="file"&&g?"file":"files",Un=me==="files"?"No files to show":"No local changes",Hn=n==="local_project"&&!h&&!o,ys=S?gn:u,Ss=S?us:o,Vn=xr({changedFiles:he?.filesChanged??_e.length,checkpointStatus:Nn,dirty:!!he?.dirty,error:Ss,loading:ys,preservedReadback:Sn,sandboxMode:S,sourcePending:S&&!P}),Gn=ys?"Loading workspace files":Ss?"Workspace files are unavailable":S&&!P?U?.emptyMessage??"No sandbox filesystem is available.":Hn?"Loading workspace files":h?Un:"No local files to show",Kn=!S&&g&&we(g)?g:null,qn=!S&&rt&&we(rt)?rt:null,Bt=Ts(a,t,Kn),Ns=Ts(a,t,qn),Cs=me==="file"||v&&me==="files"?g:null,Xn=!!(Cs&&Zt(Cs)),Rs=g?fs[g]??[]:[],$s=g?jn[g]??null:null,Ot=!!(g&&vn===g),Ut=rs&&It,Ye=!E&&!S&&te.languageServers!=="off",Zn=l.useMemo(()=>fr({activeDiagnostics:Rs,activeServers:$s,editorDiagnosticsChecking:Ot,editorLspEnabled:Ye,showEditorCommandBar:Ut}),[Rs,$s,Ot,Ye,Ut]),Qn=l.useCallback(async r=>{if(!a)throw new Error("OpenPond server connection is unavailable.");await W.runSubagentLifecycleAction(a,r.runId,{action:r.action,reason:"User requested from Goal details."}),await B({silent:!0})},[a,B]),xe=S?"sandbox":n==="local_project"?"local":null,ht=l.useMemo(()=>{const r=new Map;if(!xe||!s)return r;for(const f of re)f.workspaceKind!==xe||f.workspaceId!==s||r.set(f.path,f);return r},[re,xe,s]),mt=l.useCallback(r=>{try{return ht.get(Ds(r))?.status??null}catch{return null}},[ht]),xt=l.useCallback((r,f)=>{if(!xe||!s||!p||!Y)return;let m;try{m=Ds(r)}catch{return}const y=ht.get(m),R=new Date().toISOString(),j=y??{id:Ra({workspaceKind:xe,workspaceId:s,path:m}),workspaceKind:xe,workspaceId:s,workspaceName:p,path:m,status:"pinned",order:null,sourceSessionId:Q,available:!0,createdAt:R,updatedAt:R};Y(j,f)},[Y,ht,Q,xe,s,p]),ke=!!(xe&&s&&p&&Y),Yn=g&&ke?e.jsx(Jt,{currentStatus:mt(g),onSetStatus:r=>xt(g,r)}):null,Fs=g?e.jsx(Oi,{diagnostics:Ye?fs[g]??[]:[],draftContent:ue[g]?.content,editorRef:Xe,editable:!E&&!Bt,error:wn,file:Ze(g),collapsed:is,hideWhiteSpace:os,headerActions:Yn,imageSrc:Bt,loading:kn===g,loadFullFiles:Fe,saveError:yn[g]??null,saving:it===g,onOpenImage:()=>{Bt&&lt(g)},onDraftContentChange:r=>$n(g,r),onLspAction:Ye?Fn:void 0,onSave:()=>{Qe(g)},onSelectBreadcrumbPath:Mn,renderMarkdown:Rt,splitView:cs,wordDiffs:ls,wordWrap:as,workspaceName:p,workspaceRootPath:ut}):null;return e.jsxs(e.Fragment,{children:[e.jsxs("aside",{className:`workspace-diff-panel ${x?"expanded":""}`,id:"right-sidebar-files-panel",role:"tabpanel","aria-label":"Workspace diffs",children:[!x&&e.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize diff panel",onPointerDown:b}),e.jsx(Ai,{addMenuOpen:Re,expanded:x,filteredFiles:Cn,openFiles:vs,dirtyFilePaths:Me,goalDetailsAvailable:pe,searchOpen:cn,searchQuery:Ct,selectedPath:g,sideChatTabs:T,summaryAvailable:Pe,sourceStatus:Vn,sourceSwitcher:I,visibleTab:me,getFileBookmarkStatus:ke?mt:void 0,onCloseFileTab:Tn,onCloseSideChat:A,onCloseSearch:()=>le(!1),onOpenFile:pt,onOpenBrowser:()=>{J(!1),le(!1),_()},onOpenSearch:()=>{J(!1),le(!0)},onOpenSideChat:Z?()=>{J(!1),le(!1),Z()}:void 0,onSearchQueryChange:ns,onSetFileBookmarkStatus:ke?xt:void 0,onSelectFile:r=>{$e(r),D("file")},onSelectFiles:_n,onSelectGoal:()=>D("goal"),onSelectSummary:()=>{D("summary"),J(!1),le(!1)},onSelectSideChat:q,onToggleAddMenu:()=>{J(r=>!r),le(!1)},onToggleExpanded:C}),me==="goal"&&pe?e.jsx(Ja,{createRuntime:z?.createRuntime??null,goalRuntime:z?.goalRuntime??null,subagentRuntime:z?.subagentRuntime??null,onRunSubagentLifecycleAction:a?Qn:void 0}):me==="summary"&&Pe?ie?e.jsx(Ri,{summary:ie}):e.jsx(ji,{sandboxId:P,connection:a}):On?e.jsxs(e.Fragment,{children:[e.jsx(Pi,{canSaveActiveFile:!!(!E&&g&&Me.has(g)&&it!==g),canCheckActiveFile:Ye,collapsed:is,editorControlsVisible:rs,editorDiagnosticStatus:Zn,editorDiagnosticsChecking:Ot,hideWhiteSpace:os,loadFullFiles:Fe,menuOpen:de,renderMarkdown:Rt,showEditorCommandBar:Ut,showRenderMarkdownToggle:Xn,splitView:cs,wordDiffs:ls,wordWrap:as,onCopyGitApply:zn,onEditorCheck:Dn,onEditorRedo:Ln,onEditorSave:An,onEditorUndo:Pn,onRefresh:()=>{S?Le():B()},onToggleCollapsed:()=>un(r=>!r),onToggleEditorControlsVisible:Rn,onToggleHideWhiteSpace:()=>xn(r=>!r),onToggleLoadFullFiles:()=>fn(r=>!r),onToggleMenu:r=>Nt(f=>r??!f),onToggleRenderMarkdown:()=>pn(r=>!r),onToggleSplitView:()=>bn(r=>!r),onToggleWordDiffs:()=>mn(r=>!r),onToggleWordWrap:()=>dn(r=>!r)}),me==="files"&&(v?e.jsxs("div",{className:"workspace-diff-files-preview-layout",children:[e.jsx(Bs,{diff:he,expandedFolderPaths:ds,rootPath:w,repoFiles:je,selectedPath:g,getFileBookmarkStatus:ke?mt:void 0,onOpenFile:pt,onSetFileBookmarkStatus:ke?xt:void 0,onToggleFolder:ws}),Fs??e.jsx("div",{className:"workspace-diff-files-preview-empty",children:"Select a file to review its changes."})]}):e.jsx(Bs,{diff:he,expandedFolderPaths:ds,rootPath:w,repoFiles:je,selectedPath:g,getFileBookmarkStatus:ke?mt:void 0,onOpenFile:pt,onSetFileBookmarkStatus:ke?xt:void 0,onToggleFolder:ws})),me==="file"&&g&&Fs]}):e.jsx("div",{className:"workspace-diff-empty",children:e.jsx("span",{children:Gn})})]}),e.jsx(Ea,{open:!!Ns,src:Ns,title:rt??"",onClose:()=>lt(null)})]})}export{$r as WorkspaceDiffPanel};
@@ -1,32 +0,0 @@
1
- import{d as qt,ah as Ye,r as m,ai as Mt,aj as Ut,j as t,X as ut,E as Lt,ak as Ne,al as Ot,a1 as Ft,T as at,am as Bt,w as Dt,an as Gt,u as Tt,ao as kt,ap as st,n as O,q as Ht,aq as Vt,ar as Xt,as as Jt,S as Kt,N as Qt}from"./index-KoQSSt_f.js";import{B as we}from"./boxes-BinC8UPn.js";import{G as Je}from"./git-branch-l2Zih3Bv.js";import{I as Zt}from"./info-JTbDQxHx.js";import{M as Yt}from"./monitor-kzHtxHnA.js";import{P as $e}from"./play-C-37dnR1.js";import{A as Wt}from"./activity-Dnr3jqb3.js";import{G as en}from"./git-commit-horizontal-Bxi8YPep.js";import{R as Ke}from"./refresh-cw-BAaaPCXl.js";import{U as rt}from"./upload-DvCSGERK.js";const tn=[["path",{d:"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9",key:"1hayfq"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"15ts47"}]],nn=qt("hammer",tn);function an(e){const n=te(e?.data),a=te(n.preview);return(typeof a.url=="string"?a.url.trim():"")||null}function sn(){const e=window.open("","_blank");return e?(e.document.write('<!doctype html><title>Opening sandbox preview</title><body style="margin:0;background:#05070a;color:#f5f5f4;font:14px system-ui,sans-serif;display:grid;place-items:center;height:100vh;">Opening sandbox preview...</body>'),e.document.close(),e):null}function ye(e,n){if(!n){e?.close();return}if(e){e.opener=null,e.location.href=n;return}window.open(n,"_blank","noopener,noreferrer")}function mt(e){const n=rn(e),a=ln(te(e?.resources)),i=te(te(e?.inputs).schema),g=te(i.properties),u=new Set(ft(i.required)),l=[],x=[];for(const[p,N]of Object.entries(g)){const c=te(N),U=te(c["x-openpond-upload"]??c.xOpenPondUpload),I=typeof c.type=="string"?c.type:"string",H=te(c.items),z=pn(c,U),v=c.format==="file"||U.enabled===!0||I==="array"&&H.format==="file",q=typeof c.title=="string"&&c.title.trim()?c.title.trim():xn(p);if(v){x.push({name:p,label:q,required:u.has(p),multiple:I==="array"||U.multiple===!0,accept:gn(U,c),targetPath:fn(U,p),targetNames:z});continue}(I==="string"||I==="number"||I==="integer"||I==="boolean")&&l.push({name:p,label:q,required:u.has(p),type:I,defaultValue:typeof c.default=="string"||typeof c.default=="number"||typeof c.default=="boolean"?String(c.default):"",targetNames:z})}return{entrypoints:n,scalarInputs:l,fileInputs:x,envInputs:cn(e),resources:a,volumes:on(e,x),schedules:dn(e)}}function Fe(e,n){const a=n.trim();return e.filter(i=>!i.targetNames||i.targetNames.length===0?!0:i.targetNames.includes(a))}function rn(e){return e?Ye(e).flatMap(n=>{if(n.kind==="action")return[];const a=n.name.trim(),i=n.command.trim(),g=Be(n.timeoutSeconds),u=n.ports.flatMap(l=>{const x=Be(l.port);return x?[{port:x,label:typeof l.label=="string"&&l.label.trim()?l.label.trim():"web",access:l.access==="public"?"public":"private",path:typeof l.path=="string"&&l.path.trim()?l.path.trim():"/"}]:[]});return a&&i?[{name:a,command:i,timeoutSeconds:g,ports:u}]:[]}):[]}function ln(e){return{cpu:Qe(e.cpu)??1,memoryGb:Qe(e.memoryGb)??1,diskGb:Qe(e.diskGb)??8}}function on(e,n){const a=Array.isArray(e?.volumes)?e.volumes:[];if(a.length>0)return a.map((u,l)=>{const x=l===0?"volume":`volume-${l+1}`,p=typeof u.name=="string"&&u.name.trim()?u.name.trim():x;return{name:p,mountPath:typeof u.mountPath=="string"&&u.mountPath.trim()?u.mountPath.trim():`/workspace/volumes/${p}`,...Be(u.storageGb)?{storageGb:Be(u.storageGb)??void 0}:{},deleteOnSandboxDelete:u.deleteOnSandboxDelete===!0}});const i=n.find(u=>u.targetPath.startsWith("volumes/"));if(!i)return[];const[,g="volume"]=i.targetPath.split("/");return[{name:g,mountPath:`/workspace/volumes/${g}`,storageGb:8,deleteOnSandboxDelete:!1}]}function cn(e){return(Array.isArray(e?.inputs.env)?e.inputs.env:[]).flatMap(a=>{const i=typeof a.name=="string"?a.name.trim():"";return i?[{name:i,required:a.required===!0,secret:a.secret!==!1,description:typeof a.description=="string"?a.description.trim():""}]:[]})}function dn(e){return e?.schedules?.length?e.schedules.flatMap(n=>{const a=typeof n.name=="string"?n.name.trim():"",i=un(n);if(!a||!i.scheduleExpression)return[];try{return[{name:a,...typeof n.description=="string"&&n.description.trim()?{description:n.description.trim()}:{},enabled:!1,...i,...typeof n.timezone=="string"&&n.timezone.trim()?{timezone:n.timezone.trim()}:{},...typeof n.startAt=="string"&&n.startAt.trim()?{startAt:n.startAt.trim()}:{},...typeof n.endAt=="string"&&n.endAt.trim()?{endAt:n.endAt.trim()}:{},...typeof n.maxRuns=="number"&&Number.isInteger(n.maxRuns)&&n.maxRuns>0?{maxRuns:n.maxRuns}:{},runtimePolicy:n.runtimePolicy,target:mn(e,n),...n.budget?{budget:n.budget}:{},...n.resources?{resources:n.resources}:{},...n.quotas?{quotas:n.quotas}:{},...n.lifecycle?{lifecycle:n.lifecycle}:{},...n.retentionPolicy?{retentionPolicy:n.retentionPolicy}:{},...n.env?{env:n.env}:{},...n.integrationLeases?{integrationLeases:n.integrationLeases}:{},metadata:{...te(n.metadata),manifestScheduleName:a,source:"openpond-app-sandbox-template-start"}}]}catch{return[]}}):[]}function un(e){return e.scheduleExpression?{scheduleType:e.scheduleType??"cron",scheduleExpression:e.scheduleExpression}:e.rate?{scheduleType:"rate",scheduleExpression:/^rate\(/i.test(e.rate)?e.rate:`rate(${e.rate})`}:e.once?{scheduleType:"once",scheduleExpression:/^at\(/i.test(e.once)?e.once:`at(${e.once})`}:{scheduleType:"cron",scheduleExpression:e.cron??""}}function mn(e,n){const a=n.command??n.target?.command??null;if(a)return{kind:"command",command:a,requiresStart:n.requiresStart??n.target?.requiresStart??!1};const i=n.target?.kind??"action";if(i==="start")return{kind:"command",command:e.start.command,requiresStart:n.requiresStart??n.target?.requiresStart??e.start.requiresStart??!1};if(i==="service"){const l=n.target?.name??"",x=e.services.find(p=>p.name===l);if(!x)throw new Error("schedule_service_target_missing");return{kind:"command",command:x.command,requiresStart:n.requiresStart??n.target?.requiresStart??x.requiresStart??!1}}const g=n.actionName??n.action??n.target?.actionName??(n.target?.kind==="action"?n.target?.name:void 0),u=e.actions.find(l=>l.name===g);if(!u)throw new Error("schedule_action_target_missing");return{kind:"command",command:u.command,requiresStart:n.requiresStart??n.target?.requiresStart??u.requiresStart??!1}}function pt(e,n){return e.flatMap(a=>{const i=(n[a.name]??"").trim();return i?[{name:a.name,secretRef:i}]:[]})}function gt(e,n){const a={};for(const i of e){const g=n[i.name]??"";if(!(!g.trim()&&!i.required))if(i.type==="boolean")a[i.name]=g==="true";else if(i.type==="number"||i.type==="integer"){const u=Number(g);Number.isFinite(u)&&(a[i.name]=i.type==="integer"?Math.trunc(u):u)}else a[i.name]=g}return a}function pn(e,n){const a=e["x-openpond-targets"]??e.xOpenPondTargets??n.targets??n.actions,i=ft(a).map(g=>g.trim()).filter(Boolean);return i.length>0?[...new Set(i)]:null}function gn(e,n){return typeof e.accept=="string"?e.accept.trim():Array.isArray(e.accept)?e.accept.filter(a=>typeof a=="string").join(","):typeof n.accept=="string"?n.accept.trim():""}function fn(e,n){return(typeof e.targetPath=="string"&&e.targetPath.trim()?e.targetPath.trim():typeof e.path=="string"&&e.path.trim()?e.path.trim():`uploads/${n}`).replace(/^\/+/,"").replace(/^workspace\//,"").replace(/\/+$/,"")}function Qe(e){const n=Number(e);return Number.isFinite(n)&&n>0?n:null}function Be(e){const n=Number(e);return Number.isInteger(n)&&n>0?n:null}function bn(e,n){return[n,...e.slice(1)]}function ft(e){return Array.isArray(e)?e.filter(n=>typeof n=="string"):[]}function xn(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").replace(/\b\w/g,n=>n.toUpperCase())}function te(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function hn({busy:e,defaultRepoUrl:n,projectName:a,commitBeforeCreate:i,templateManifest:g,uploadBeforeCreate:u,onClose:l,onSubmit:x}){const p=m.useMemo(()=>mt(g),[g]),N=p.entrypoints[0]??null,[c,U]=m.useState(n),[I,H]=m.useState(N?.name??""),[z,v]=m.useState(N?.command??""),[q,V]=m.useState(N?.timeoutSeconds?String(N.timeoutSeconds):""),[X,f]=m.useState(`Update ${a}`),[j,w]=m.useState("0.05"),[_,F]=m.useState(()=>Object.fromEntries(p.scalarInputs.map(r=>[r.name,r.defaultValue]))),[B,ae]=m.useState(()=>Object.fromEntries(p.envInputs.map(r=>[r.name,""]))),[Z,be]=m.useState({}),K=p.volumes[0]??null,[Y,o]=m.useState(p.volumes.length>0||p.fileInputs.length>0),[P,A]=m.useState(K?.name??"volume"),[R,$]=m.useState(K?.mountPath??"/workspace/volumes/volume"),[J,ce]=m.useState(String(K?.storageGb??8)),[Pe,de]=m.useState(!(K?.deleteOnSandboxDelete??!1)),[M,ze]=m.useState(p.schedules),qe=p.entrypoints.find(r=>r.name===I)??N,se=qe?.ports??[],re=se[0]??null,[ue,xe]=m.useState(!!re),[Ce,me]=m.useState(re?String(re.port):""),D=Number(Ce),he=Number(j),ie=Number(J),le=Number(q),ke=!q.trim()||Number.isInteger(le)&&le>0&&le<=86400,oe=!ue||Number.isInteger(D)&&D>=Mt&&D<=Ut&&se.some(r=>r.port===D),Ie=Number.isFinite(he)&&he>0,ne=!Y||Number.isInteger(ie)&&ie>0,G=M.every(r=>!r.enabled||!!r.scheduleExpression.trim()),W=Fe(p.scalarInputs,I),je=Fe(p.fileInputs,I),Me=p.envInputs.every(r=>!r.required||!!(B[r.name]??"").trim()),ve=p.envInputs.filter(r=>r.required&&!(B[r.name]??"").trim()),Re=(u||!!c.trim())&&!!z.trim()&&Ie&&ke&&ne&&W.every(r=>!r.required||!!(_[r.name]??"").trim())&&je.every(r=>!r.required||(Z[r.name]?.length??0)>0)&&Me&&G&&oe;function He(r){H(r);const b=p.entrypoints.find(E=>E.name===r);if(!b)return;v(b.command),V(b.timeoutSeconds?String(b.timeoutSeconds):"");const y=b.ports[0]??null;me(y?String(y.port):""),xe(!!y)}function _e(r,b){F(y=>({...y,[r]:b}))}function pe(r,b){ae(y=>({...y,[r]:b}))}function Ve(r,b){const y=Array.from(b.target.files??[]);be(E=>({...E,[r.name]:r.multiple?y:y.slice(0,1)}))}function ee(r,b){ze(y=>y.map((E,ge)=>ge===r?{...E,...b}:E))}function Ee(r){r.preventDefault(),!(!Re||e)&&x({repoUrl:c.trim(),command:z.trim(),entrypointName:I,commitMessage:X.trim(),budgetUsd:j.trim(),params:gt(W,_),env:pt(p.envInputs,B),timeoutSeconds:q.trim()&&Number.isInteger(le)?le:qe?.timeoutSeconds??null,uploads:je.flatMap(b=>{const y=Z[b.name]??[];return y.length>0?[{inputName:b.name,label:b.label,targetPath:b.targetPath,multiple:b.multiple,files:y}]:[]}),resources:p.resources,volumes:Y?bn(p.volumes,{...P.trim()?{name:P.trim()}:{},...R.trim()?{mountPath:R.trim()}:{},...Number.isInteger(ie)&&ie>0?{storageGb:ie}:{},deleteOnSandboxDelete:!Pe}):[],schedules:M.filter(b=>b.enabled),openPreview:ue,previewPort:ue?D:null,previewLabel:se.find(b=>b.port===D)?.label??"web",previewAccess:se.find(b=>b.port===D)?.access??"private"})}return t.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:t.jsxs("form",{className:"git-dialog run-once-dialog sandbox-start-dialog",role:"dialog","aria-modal":"true","aria-label":"Start sandbox",onSubmit:Ee,children:[t.jsx("button",{className:"git-dialog-close",disabled:e,type:"button",title:"Close","aria-label":"Close",onClick:l,children:t.jsx(ut,{size:15})}),t.jsxs("div",{className:"sandbox-start-dialog-heading",children:[t.jsx("div",{className:"git-dialog-icon",children:t.jsx(we,{size:18})}),t.jsx("h2",{children:"Start sandbox"}),t.jsxs("div",{className:"git-dialog-row",children:[t.jsx("span",{children:"Project"}),t.jsx("strong",{children:a})]})]}),t.jsxs("div",{className:"sandbox-start-dialog-body",children:[u?null:t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Repository"}),t.jsx("input",{disabled:e,value:c,onChange:r=>U(r.target.value)})]}),i?t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Commit message"}),t.jsx("input",{disabled:e,value:X,onChange:r=>f(r.target.value)})]}):null,p.entrypoints.length>0?t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Run target"}),t.jsx("select",{disabled:e,value:I,onChange:r=>He(r.target.value),children:p.entrypoints.map(r=>t.jsx("option",{value:r.name,children:r.name},r.name))})]}):null,t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Shell command"}),t.jsx("input",{disabled:e,value:z,onChange:r=>v(r.target.value)})]}),t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Timeout seconds"}),t.jsx("input",{disabled:e,inputMode:"numeric",value:q,onChange:r=>V(r.target.value)})]}),W.map(r=>r.type==="boolean"?t.jsxs("label",{className:"git-dialog-toggle",children:[t.jsx("input",{checked:(_[r.name]??"")==="true",disabled:e,type:"checkbox",onChange:b=>_e(r.name,b.target.checked?"true":"false")}),t.jsx("span",{}),r.label]},r.name):t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:r.label}),t.jsx("input",{disabled:e,inputMode:r.type==="number"||r.type==="integer"?"decimal":void 0,value:_[r.name]??"",onChange:b=>_e(r.name,b.target.value)})]},r.name)),je.map(r=>t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:r.label}),t.jsx("input",{accept:r.accept||void 0,disabled:e,multiple:r.multiple,type:"file",onChange:b=>Ve(r,b)})]},r.name)),p.envInputs.length>0?t.jsxs("div",{className:"sandbox-start-env-section",children:[t.jsx("div",{className:"sandbox-start-section-title",children:"Environment"}),ve.length>0?t.jsxs("p",{className:"sandbox-start-env-warning",role:"status",children:["Required sandbox secret ref missing: ",ve.map(r=>r.name).join(", ")]}):null,p.envInputs.map(r=>{const b=B[r.name]??"",y=r.required&&!b.trim(),E=`sandbox-env-${r.name}-description`;return t.jsxs("label",{className:"git-dialog-field",children:[t.jsxs("span",{children:[r.name,r.required?" *":""]}),t.jsx("input",{"aria-describedby":E,"aria-invalid":y,disabled:e,placeholder:"openpond://secret/...",value:b,onChange:ge=>pe(r.name,ge.target.value)}),t.jsx("small",{id:E,children:y?"Add a sandbox secret ref before starting.":r.description||"Sandbox secret ref only."})]},r.name)})]}):null,je.length>0||p.volumes.length>0?t.jsxs(t.Fragment,{children:[t.jsxs("label",{className:"git-dialog-toggle",children:[t.jsx("input",{checked:Y,disabled:e,type:"checkbox",onChange:r=>o(r.target.checked)}),t.jsx("span",{}),"Mount volume"]}),Y?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"run-once-dialog-grid",children:[t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Volume"}),t.jsx("input",{disabled:e,value:P,onChange:r=>A(r.target.value)})]}),t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Storage GiB"}),t.jsx("input",{disabled:e,inputMode:"numeric",value:J,onChange:r=>ce(r.target.value)})]})]}),t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Mount path"}),t.jsx("input",{disabled:e,value:R,onChange:r=>$(r.target.value)})]}),t.jsxs("label",{className:"git-dialog-toggle",children:[t.jsx("input",{checked:Pe,disabled:e,type:"checkbox",onChange:r=>de(r.target.checked)}),t.jsx("span",{}),"Keep volume"]})]}):null]}):null,M.length>0?t.jsxs("div",{className:"sandbox-start-schedules",children:[t.jsx("div",{className:"sandbox-start-section-title",children:"Schedules"}),M.map((r,b)=>t.jsxs("div",{className:"sandbox-start-schedule-row",children:[t.jsxs("label",{className:"git-dialog-toggle",children:[t.jsx("input",{checked:r.enabled,disabled:e,type:"checkbox",onChange:y=>ee(b,{enabled:y.target.checked})}),t.jsx("span",{}),r.name]}),t.jsxs("div",{className:"run-once-dialog-grid",children:[t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Type"}),t.jsxs("select",{disabled:e||!r.enabled,value:r.scheduleType,onChange:y=>ee(b,{scheduleType:y.target.value}),children:[t.jsx("option",{value:"rate",children:"Rate"}),t.jsx("option",{value:"cron",children:"Cron"}),t.jsx("option",{value:"once",children:"Once"})]})]}),t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Max runs"}),t.jsx("input",{disabled:e||!r.enabled,inputMode:"numeric",value:r.maxRuns??"",onChange:y=>{const E=Number(y.target.value);ee(b,{maxRuns:Number.isInteger(E)&&E>0?E:null})}})]})]}),t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Expression"}),t.jsx("input",{disabled:e||!r.enabled,value:r.scheduleExpression,onChange:y=>ee(b,{scheduleExpression:y.target.value})})]})]},r.name))]}):null,t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Budget"}),t.jsx("input",{disabled:e,inputMode:"decimal",value:j,onChange:r=>w(r.target.value)})]}),se.length>0?t.jsxs(t.Fragment,{children:[t.jsxs("label",{className:"git-dialog-toggle",children:[t.jsx("input",{checked:ue,disabled:e,type:"checkbox",onChange:r=>xe(r.target.checked)}),t.jsx("span",{}),"Open preview"]}),t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Preview port"}),t.jsx("select",{disabled:e||!ue,value:Ce,onChange:r=>me(r.target.value),children:se.map(r=>t.jsx("option",{value:r.port,children:r.label?`${r.label} (${r.port})`:r.port},r.port))})]})]}):null]}),t.jsxs("div",{className:"git-dialog-footer sandbox-start-dialog-footer",children:[t.jsx("button",{className:"git-dialog-secondary",disabled:e,type:"button",onClick:l,children:"Cancel"}),t.jsxs("button",{className:"git-dialog-primary",disabled:e||!Re,title:Me?void 0:"Required sandbox secret refs are missing.",type:"submit",children:[t.jsx(Lt,{size:14}),"Start"]})]})]})})}function jn({busy:e,projectName:n,templateManifest:a,onClose:i,onSubmit:g}){const u=m.useMemo(()=>mt(a),[a]),l=m.useMemo(()=>a?Ye(a).filter(o=>o.kind==="action"):[],[a]),x=l[0]??null,[p,N]=m.useState("sandbox"),[c,U]=m.useState(x?.name??""),[I,H]=m.useState(()=>Object.fromEntries(u.scalarInputs.map(o=>[o.name,o.defaultValue]))),[z,v]=m.useState(()=>Object.fromEntries(u.envInputs.map(o=>[o.name,""]))),[q,V]=m.useState({}),X=Fe(u.scalarInputs,c),f=Fe(u.fileInputs,c),j=p==="sandbox"?u.envInputs:[],w=X.every(o=>!o.required||!!(I[o.name]??"").trim()),_=f.every(o=>!o.required||(q[o.name]?.length??0)>0),F=j.every(o=>!o.required||!!(z[o.name]??"").trim()),B=j.filter(o=>o.required&&!(z[o.name]??"").trim()),ae=!!c&&w&&_&&F;function Z(o,P){H(A=>({...A,[o]:P}))}function be(o,P){v(A=>({...A,[o]:P}))}function K(o,P,A){const R=Array.from(A.target.files??[]);V($=>({...$,[o]:P?R:R.slice(0,1)}))}function Y(o){o.preventDefault(),!(!ae||e)&&g({mode:p,target:c,params:gt(X,I),env:p==="sandbox"?pt(j,z):[],uploads:f.flatMap(P=>{const A=q[P.name]??[];return A.length>0?[{inputName:P.name,label:P.label,targetPath:P.targetPath,multiple:P.multiple,files:A}]:[]})})}return t.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:t.jsxs("form",{className:"git-dialog run-once-dialog sandbox-start-dialog",role:"dialog","aria-modal":"true","aria-label":"Run sandbox action",onSubmit:Y,children:[t.jsx("button",{className:"git-dialog-close",disabled:e,type:"button",title:"Close","aria-label":"Close",onClick:i,children:t.jsx(ut,{size:15})}),t.jsxs("div",{className:"sandbox-start-dialog-heading",children:[t.jsx("div",{className:"git-dialog-icon",children:t.jsx($e,{size:18})}),t.jsx("h2",{children:"Run action"}),t.jsxs("div",{className:"git-dialog-row",children:[t.jsx("span",{children:"Project"}),t.jsx("strong",{children:n})]})]}),t.jsxs("div",{className:"sandbox-start-dialog-body",children:[t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Action"}),t.jsx("select",{disabled:e||l.length===0,value:c,onChange:o=>U(o.target.value),children:l.map(o=>t.jsx("option",{value:o.name,children:o.name},o.name))})]}),t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:"Run on"}),t.jsxs("select",{disabled:e,value:p,onChange:o=>N(o.target.value==="local"?"local":"sandbox"),children:[t.jsx("option",{value:"sandbox",children:"Hosted sandbox (start/update)"}),t.jsx("option",{value:"local",children:"Local machine"})]})]}),X.map(o=>o.type==="boolean"?t.jsxs("label",{className:"git-dialog-toggle",children:[t.jsx("input",{checked:(I[o.name]??"")==="true",disabled:e,type:"checkbox",onChange:P=>Z(o.name,P.target.checked?"true":"false")}),t.jsx("span",{}),o.label]},o.name):t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:o.label}),t.jsx("input",{disabled:e,inputMode:o.type==="number"||o.type==="integer"?"decimal":void 0,value:I[o.name]??"",onChange:P=>Z(o.name,P.target.value)})]},o.name)),f.map(o=>t.jsxs("label",{className:"git-dialog-field",children:[t.jsx("span",{children:o.label}),t.jsx("input",{accept:o.accept||void 0,disabled:e,multiple:o.multiple,type:"file",onChange:P=>K(o.name,o.multiple,P)})]},o.name)),j.length>0?t.jsxs("div",{className:"sandbox-start-env-section",children:[t.jsx("div",{className:"sandbox-start-section-title",children:"Environment"}),B.length>0?t.jsxs("p",{className:"sandbox-start-env-warning",role:"status",children:["Required sandbox secret ref missing: ",B.map(o=>o.name).join(", ")]}):null,j.map(o=>{const P=z[o.name]??"",A=o.required&&!P.trim(),R=`sandbox-action-env-${o.name}-description`;return t.jsxs("label",{className:"git-dialog-field",children:[t.jsxs("span",{children:[o.name,o.required?" *":""]}),t.jsx("input",{"aria-describedby":R,"aria-invalid":A,disabled:e,placeholder:"openpond://secret/...",value:P,onChange:$=>be(o.name,$.target.value)}),t.jsx("small",{id:R,children:A?"Add a sandbox secret ref before running.":o.description||"Sandbox secret ref only."})]},o.name)})]}):null]}),t.jsxs("div",{className:"git-dialog-footer sandbox-start-dialog-footer",children:[t.jsx("button",{className:"git-dialog-secondary",disabled:e,type:"button",onClick:i,children:"Cancel"}),t.jsxs("button",{className:"git-dialog-primary",disabled:e||!ae,title:F?void 0:"Required sandbox secret refs are missing.",type:"submit",children:[t.jsx($e,{size:14}),"Run"]})]})]})})}function bt(e,n){const a=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"agent";return n==="cron"?`name: ${a}
2
- version: 0.1.0
3
- useCase: scheduled_report
4
- start:
5
- command: pnpm report
6
- schedules:
7
- - name: daily-report
8
- command: pnpm report
9
- cron: "0 9 * * *"`:n==="background"?`name: ${a}
10
- version: 0.1.0
11
- useCase: background_worker
12
- start:
13
- command: pnpm worker
14
- services:
15
- - name: worker
16
- command: pnpm worker`:n==="resources"?`name: ${a}
17
- version: 0.1.0
18
- useCase: resource_profile
19
- resources:
20
- cpu: 1
21
- memoryGb: 2
22
- diskGb: 16
23
- start:
24
- command: pnpm start`:`name: ${a}
25
- version: 0.1.0
26
- useCase: action
27
- start:
28
- command: pnpm start
29
- actions:
30
- - name: hello
31
- command: pnpm hello`}function vn(e,n){return n||(e==="missing_config"?`${Ne} missing`:e==="needs_project"?"Local config is ready":e==="needs_sync"?"Project needs manifest sync":e==="needs_agent"?"Project is synced":e==="ready"?"Agent is ready":"Setup unavailable")}function Sn(e){return e?.source==="openpond"?"OpenPond Git":e?.source==="github"?"GitHub":e?.source==="local_git"?"Local Git":e?.source==="local_folder"?"Local folder":"Workspace"}function yn(e){const n=De(e.data),a=De(n.remote);return(typeof a.remoteUrl=="string"?a.remoteUrl.trim():"")||null}function Nn(e){const n=De(e.data),a=De(n.sandbox);return(typeof a.id=="string"?a.id.trim():"")||null}function it(e){return e?typeof e.metadata?.name=="string"&&e.metadata.name.trim()?e.metadata.name.trim():e.projectId?`Project sandbox ${Ze(e.id)}`:e.agentId?`Agent sandbox ${Ze(e.id)}`:`Sandbox ${Ze(e.id)}`:null}function Pn(e,n){return{sourceSandboxId:n,name:e.name,...e.description?{description:e.description}:{},scheduleType:e.scheduleType,scheduleExpression:e.scheduleExpression,enabled:!0,...e.timezone?{timezone:e.timezone}:{},...e.startAt?{startAt:e.startAt}:{},...e.endAt?{endAt:e.endAt}:{},...e.maxRuns!==void 0?{maxRuns:e.maxRuns}:{},...e.runtimePolicy?{runtimePolicy:e.runtimePolicy}:{},target:e.target,...e.budget?{budget:e.budget}:{},...e.resources?{resources:e.resources}:{},...e.quotas?{quotas:e.quotas}:{},...e.lifecycle?{lifecycle:e.lifecycle}:{},...e.retentionPolicy?{retentionPolicy:e.retentionPolicy}:{},...e.env?{env:e.env}:{},...e.integrationLeases?{integrationLeases:e.integrationLeases}:{},metadata:e.metadata??{},managementSource:"openpond.yaml",manifestPath:Ne}}function Cn(e){const n=e?.gitOwner?.trim()??"",a=e?.gitRepo?.trim()??"",i=e?.gitHost?.trim()??"";if(!n||!a||!i)return null;const g=a.endsWith(".git")?a:`${a}.git`;return/^https?:\/\//i.test(i)?`${i.replace(/\/+$/,"")}/${n}/${g}`:`https://${i.replace(/\/+$/,"")}/${n}/${g}`}function In(e,n){const a=n.trim();if(e==="github_repo"){const i=a.replace(/^https:\/\/github\.com\//i,"").replace(/^git@github\.com:/i,"").replace(/\.git$/i,""),[g,u]=i.split("/").filter(Boolean);return{gitHost:"github.com",gitOwner:g??null,gitRepo:u??null,internalRepoPath:null,templateRepoUrl:null}}return e==="internal_repo"?{gitHost:"openpond.ai",gitOwner:null,gitRepo:a.split("/").filter(Boolean).at(-1)??null,internalRepoPath:a||null,templateRepoUrl:null}:e==="template"?{gitHost:null,gitOwner:null,gitRepo:null,internalRepoPath:null,templateRepoUrl:a||null}:{gitHost:null,gitOwner:null,gitRepo:null,internalRepoPath:null,templateRepoUrl:null}}function lt(e,n){const a=e.trim().replace(/^\/+/,"").replace(/^workspace\//,"").replace(/\/+$/,""),i=n.trim().replace(/[/\\]+/g,"-").replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"upload";return`${a||"uploads"}/${i}`}function Rn(e,n){return`OPENPOND_REPLAY_PARAMS_BASE64='${En({input:n})}' ${e}`}function _n(e,n,a){return["cd",ot(e),"&&","openpond","sandbox-template",n,"--file",Ne,"--target",ot(a)].join(" ")}function ot(e){return`'${e.replace(/'/g,"'\\''")}'`}function ct(e){return new Promise((n,a)=>{const i=new FileReader;i.onload=()=>{const g=typeof i.result=="string"?i.result:"",[,u=""]=g.split(",",2);n(u)},i.onerror=()=>a(i.error??new Error("Failed to read file")),i.readAsDataURL(e)})}function En(e){const n=JSON.stringify(e),a=new TextEncoder().encode(n);let i="";for(const g of a)i+=String.fromCharCode(g);return window.btoa(i)}function De(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function fe(e){return e instanceof Error?e.message:String(e)}function Ze(e){return e.length<=10?e:`${e.slice(0,6)}...${e.slice(-4)}`}async function An(e){e&&(await e("sandbox_preserve_source"),await e("sandbox_stop"))}function wn(e){return{...e.teamId?{teamId:e.teamId}:{},...e.projectId?{projectId:e.projectId}:{},runtime:{runtimeId:e.runtimeId},visibility:"team",budget:{maxUsd:"0.05"},quotas:{idleTimeoutSeconds:900,maxSpendUsd:"0.05"},metadata:{source:"openpond-app-environment-menu-sandbox-resume",resumeSandboxId:e.id,previousState:e.state}}}function $n({canCreateSandboxProject:e,canInitGit:n,defaultSandboxRepoUrl:a,gitWorkspace:i,hasRemote:g,isProjectWorkspace:u,isSandboxWorkspace:l,managed:x,onOpenCommitDialog:p,onRunTerminalCommand:N,onWorkspaceToolAction:c,projectSandboxTemplate:U,projectSandboxTemplateValid:I,sandboxTemplateActionTargetCount:H,sandboxTemplateServiceTargets:z,sandboxResumeTarget:v,selectedApp:q,selectedProject:V,setSandboxCreateDialogOpen:X,setSandboxRunActionDialogOpen:f,workspaceBusyValue:j,workspaceReady:w,workspaceState:_}){const F=[{icon:t.jsx(Ot,{size:14}),label:"Initialize Git",disabled:x||!n||j||!w||!c,onSelect:()=>c?.("git_init")},{icon:t.jsx(en,{size:14}),label:"Commit changes",disabled:x||!i||j||!w||!_?.dirty||!p,onSelect:()=>p?.("commit")},{icon:t.jsx(rt,{size:14}),label:"Push branch",disabled:x||!i||j||!w||!g||!c,onSelect:()=>c?.("git_push")},{icon:t.jsx(Ke,{size:14}),label:"Fetch remote",disabled:x||!i||j||!w||!g||!c,onSelect:()=>c?.("git_fetch")},{icon:t.jsx(Ft,{size:14}),label:"Create PR",disabled:!0,onSelect:()=>{}}],B=[...U?[]:[{icon:t.jsx(we,{size:14}),label:"Create sandbox template",disabled:x||j||!w||!c,onSelect:()=>c?.("create_sandbox_template_scaffold")}],{icon:t.jsx(at,{size:14}),label:`Validate ${Ne}`,disabled:x||j||!w||!c,onSelect:()=>c?.("validate_sandbox_template")},{icon:t.jsx(nn,{size:14}),label:"Build template",disabled:x||j||!w||!c,onSelect:()=>c?.("build_sandbox_template")},{icon:t.jsx($e,{size:14}),label:"Run start locally",disabled:x||j||!w||!c,onSelect:()=>c?.("run_sandbox_template",{mode:"local",target:"start"})},{icon:t.jsx($e,{size:14}),label:"Run action",disabled:x||j||!w||!I||H===0,onSelect:()=>f(!0)},...z.map(K=>({icon:t.jsx(Bt,{size:14}),label:`Dev ${K.name} locally`,disabled:x||j||!w||!I||!V?.sandboxTemplate?.rootPath||!N,onSelect:()=>N?.(_n(V?.sandboxTemplate?.rootPath??"","dev",K.name))})),{icon:t.jsx(we,{size:14}),label:"Start sandbox",disabled:x||j||!w||!e,onSelect:()=>X(!0)}],ae=[{icon:t.jsx(Ke,{size:14}),label:"Sandbox status",disabled:j||!c,onSelect:()=>c?.("sandbox_status")},{icon:t.jsx($e,{size:14}),label:"Resume sandbox",disabled:j||!c||!v?.runtimeId||v.state==="running"||v.state==="creating",onSelect:()=>v?.runtimeId?c?.("sandbox_create",wn(v)):void 0},{icon:t.jsx(Wt,{size:14}),label:"Sandbox logs",disabled:j||!c,onSelect:()=>c?.("sandbox_logs")},{icon:t.jsx(at,{size:14}),label:"Receipts",disabled:j||!c,onSelect:()=>c?.("sandbox_receipts")},{icon:t.jsx(Dt,{size:14}),label:"Export patch",disabled:j||!c,onSelect:()=>c?.("sandbox_git_export_patch")},{icon:t.jsx(rt,{size:14}),label:"Apply locally",disabled:j||!c,onSelect:()=>c?.("sandbox_git_apply_patch_local")},{icon:t.jsx(Gt,{size:14}),label:"Checkpoint and stop",disabled:j||!c,onSelect:()=>An(c)}];return{gitActionItems:F,sandboxActionItems:l?ae:u?B:[{icon:t.jsx(we,{size:14}),label:a?"Create sandbox from repo":"Create sandbox",disabled:j||!c,onSelect:()=>c?.("sandbox_create",{...a?{repo:a}:{},visibility:"team",budget:{maxUsd:"0.05"},quotas:{maxSpendUsd:"0.05"},metadata:{source:"openpond-app-environment-menu-sandbox",...q?.name?{appName:q.name}:{}}})},{icon:t.jsx(Ke,{size:14}),label:"List templates",disabled:j||!c,onSelect:()=>c?.("sandbox_templates")}]}}function zn({busy:e,error:n,projectName:a,onClose:i,onSubmit:g}){const[u,l]=m.useState("action"),[x,p]=m.useState(Ne),N=a.trim()||"local-agent";return t.jsxs(Ge,{title:"Add Agent config",busy:e,error:n,onClose:i,children:[t.jsxs("label",{children:[t.jsx("span",{children:"Template preset"}),t.jsxs("select",{value:u,onChange:c=>l(c.target.value),disabled:e,children:[t.jsx("option",{value:"action",children:"Action"}),t.jsx("option",{value:"cron",children:"Cron"}),t.jsx("option",{value:"background",children:"Background worker"}),t.jsx("option",{value:"resources",children:"Resource profile"})]})]}),t.jsxs("label",{children:[t.jsx("span",{children:"Manifest path"}),t.jsx("input",{value:x,onChange:c=>p(c.target.value),disabled:e})]}),t.jsx("pre",{children:bt(N,u)}),t.jsx(Te,{busy:e,actionLabel:"Write config",canSubmit:!!x.trim(),onClose:i,onSubmit:()=>g({name:N,preset:u,manifestPath:x.trim()})})]})}function qn({busy:e,defaultBranch:n,defaultTeamId:a,error:i,projectName:g,sourceIdentity:u,onClose:l,onSubmit:x}){const p=a,[N,c]=m.useState(g),[U,I]=m.useState(/github\.com[:/]/i.test(u)?"github_repo":"manual"),[H,z]=m.useState(u),[v,q]=m.useState(n||"main"),[V,X]=m.useState(!0);return t.jsxs(Ge,{title:"Connect Project",busy:e,error:i,onClose:l,children:[t.jsxs("label",{children:[t.jsx("span",{children:"Project name"}),t.jsx("input",{value:N,onChange:f=>c(f.target.value),disabled:e})]}),t.jsxs("div",{className:"agent-setup-two-col",children:[t.jsxs("label",{children:[t.jsx("span",{children:"Source type"}),t.jsxs("select",{value:U,onChange:f=>I(f.target.value),disabled:e,children:[t.jsx("option",{value:"manual",children:"Manual"}),t.jsx("option",{value:"github_repo",children:"GitHub repo"}),t.jsx("option",{value:"internal_repo",children:"Internal repo"}),t.jsx("option",{value:"template",children:"Template"})]})]}),t.jsxs("label",{children:[t.jsx("span",{children:"Default branch"}),t.jsx("input",{value:v,onChange:f=>q(f.target.value),disabled:e})]})]}),t.jsxs("label",{children:[t.jsx("span",{children:"Source identity"}),t.jsx("input",{value:H,onChange:f=>z(f.target.value),disabled:e})]}),t.jsxs("label",{className:"agent-setup-check",children:[t.jsx("input",{type:"checkbox",checked:V,onChange:f=>X(f.target.checked),disabled:e}),t.jsx("span",{children:"Sync now"})]}),t.jsx(Te,{busy:e,actionLabel:V?"Connect and sync":"Connect Project",canSubmit:!!(N.trim()&&p),onClose:l,onSubmit:()=>x({teamId:p,projectName:N.trim(),sourceType:U,sourceIdentity:H.trim(),defaultBranch:v.trim(),syncNow:V})})]})}function Mn({busy:e,defaultName:n,error:a,onClose:i,onSubmit:g}){const[u,l]=m.useState(n),[x,p]=m.useState(!0);return t.jsxs(Ge,{title:"Create Agent",busy:e,error:a,onClose:i,children:[t.jsxs("label",{children:[t.jsx("span",{children:"Agent name"}),t.jsx("input",{value:u,onChange:N=>l(N.target.value),disabled:e})]}),t.jsx("div",{className:"agent-setup-summary",children:"Entire manifest · Manual trigger · Package defaults"}),t.jsxs("label",{className:"agent-setup-check",children:[t.jsx("input",{type:"checkbox",checked:x,onChange:N=>p(N.target.checked),disabled:e}),t.jsx("span",{children:"Create and test run"})]}),t.jsx(Te,{busy:e,actionLabel:"Create Agent",canSubmit:!!u.trim(),onClose:i,onSubmit:()=>g({agentName:u.trim(),createTestRun:x})})]})}function dt({actionLabel:e,busy:n,error:a,summary:i,title:g,onClose:u,onSubmit:l}){return t.jsxs(Ge,{title:g,busy:n,error:a,onClose:u,children:[t.jsx("div",{className:"agent-setup-summary",children:i}),t.jsx(Te,{busy:n,actionLabel:e,canSubmit:!0,onClose:u,onSubmit:l})]})}function Ge({busy:e,children:n,error:a,title:i,onClose:g}){return Tt(a),t.jsx("div",{className:"agent-setup-dialog-backdrop",role:"presentation",onMouseDown:g,children:t.jsxs("section",{className:"agent-setup-dialog",role:"dialog","aria-modal":"true","aria-label":i,onMouseDown:u=>u.stopPropagation(),children:[t.jsxs("header",{children:[t.jsx("h3",{children:i}),t.jsx("button",{type:"button",disabled:e,onClick:g,children:"Close"})]}),t.jsx("div",{className:"agent-setup-fields",children:n})]})})}function Te({actionLabel:e,busy:n,canSubmit:a,onClose:i,onSubmit:g}){return t.jsxs("div",{className:"agent-setup-dialog-actions",children:[t.jsx("button",{type:"button",disabled:n,onClick:i,children:"Cancel"}),t.jsx("button",{type:"button",disabled:n||!a,onClick:g,children:n?"Working":e})]})}function Un(e){return e.split(`
32
- `).filter(n=>n.trim()).length}function Ln(e){return e.status==="loading"?"Checking sandbox changes":e.status==="error"?"Sandbox status unavailable":e.status!=="ready"?"Sandbox changes unknown":e.changedFiles===0?"Sandbox clean":`${e.changedFiles} sandbox changed ${e.changedFiles===1?"file":"files"}`}function On(e){return e>0&&e%3600===0?`${e/3600} hr`:e>0&&e%60===0?`${e/60} min`:`${e} sec`}function Oe(e){const n=e?.trim();if(!n)return null;if(n.startsWith("$"))return n;const a=Number(n);if(!Number.isFinite(a))return`$${n}`;if(a===0)return"$0";const i=a>=1?2:4;return`$${a.toFixed(i).replace(/0+$/,"").replace(/\.$/,"")}`}function Fn(e){return e.receipts.slice().sort((n,a)=>Date.parse(a.createdAt)-Date.parse(n.createdAt))[0]??null}function Bn(e){const n=Fn(e);if(n){const a=Oe(n.totalUsd);if(n.reason==="idle_timeout")return a?`stopped by idle timeout · charged ${a}`:"stopped by idle timeout";if(n.reason==="budget_exhausted")return a?`budget exhausted · charged ${a}`:"budget exhausted";if(e.state!=="running")return a?`receipt ${n.status} · charged ${a}`:`receipt ${n.status}`}if(e.reservation.status==="reserved"){const a=Oe(e.reservation.reservedUsd);return a?`reservation active ${a}`:"reservation active"}if(e.reservation.status==="captured"){const a=Oe(e.reservation.capturedUsd);return a?`captured ${a}`:"captured"}return e.reservation.status==="released"?"reservation released":null}function Dn(e){if(!e)return"Loading sandbox policy";const n=typeof e.quotas?.idleTimeoutSeconds=="number"&&e.quotas.idleTimeoutSeconds>0?e.quotas.idleTimeoutSeconds:null,a=Oe(e.quotas?.maxSpendUsd??e.budget.maxUsd),i=[n?`Auto-stop after ${On(n)} idle`:"Auto-stop policy unavailable"];a&&i.push(`cap ${a}`);const g=Bn(e);return g&&i.push(g),i.join(" · ")}function ea({mode:e,busy:n,workspaceState:a,workspaceId:i,workspaceKind:g,selectedApp:u,selectedProject:l,workspaceBusy:x,defaultTeamId:p,workspaceDiff:N,managedWorkspace:c,showDiffControls:U,diffPanelOpen:I,onToggleDiffPanel:H,onRunTerminalCommand:z,onWorkspaceToolAction:v,onOpenCommitDialog:q,onWorkspaceBranchChange:V,onWorkspaceBranchCreate:X,connection:f,onBootstrap:j,onOpenSandboxWorkspace:w}){const[_,F]=m.useState(!1),[B,ae]=m.useState(!1),[Z,be]=m.useState(""),[K,Y]=m.useState(!1),[o,P]=m.useState(!1),[A,R]=m.useState(null),[$,J]=m.useState(!1),[ce,Pe]=m.useState(!1),[de,M]=m.useState(null),[ze,qe]=m.useState([]),[se,re]=m.useState([]),[ue,xe]=m.useState([]),[Ce,me]=m.useState({status:"idle",changedFiles:0,error:null}),[D,he]=m.useState(null),ie=m.useRef(null),le=m.useRef(null),ke=!!a?.initialized,oe=!!x,Ie=!!c,ne=g==="local_project"||!!l,G=g==="sandbox"||g==="sandbox_template",W=G&&i?.trim()||null,je=G?0:N?.additions??0,Me=G?0:N?.deletions??0,ve=G?Ce.changedFiles:N?.filesChanged??a?.changedFilesCount??0,Re=ve>0,He=G?Ln(Ce):Re?`${ve} changed ${ve===1?"file":"files"}`:"No changes",_e=G?Dn(D):"",pe=a?.source!=="local_folder",Ve=ne&&a?.source==="local_folder",ee=!!a?.remoteUrl,Ee=a?.remoteUrl?.trim()??"",r=Cn(u??null),b=!!l?.sandboxTemplate?.detected,y=!!(l?.sandboxTemplate?.valid&&l.sandboxTemplate.normalizedManifest),E=l?.sandboxTemplate?.normalizedManifest??null,ge=E?Ye(E):[],xt=ge.filter(s=>s.kind==="action"),ht=ge.filter(s=>s.kind==="service"),jt=!!l?.linkedOpenPondApp?.appId,C=kt({localProject:l,organizations:ze,projects:se,agents:ue,defaultTeamId:p}),Xe=st(ze,p),Ue=ne&&b&&!jt,vt=ne&&b&&y&&(Ue||!!Ee),Le=a?Array.from(new Set([a.currentBranch,...a.branches].filter(s=>!!s))):[],St=a?.initialized?a.currentBranch??Le[0]??"No branch":"Not synced",yt=Sn(a),We=m.useMemo(()=>{const s=Z.trim().toLowerCase();return s?Le.filter(d=>d.toLowerCase().includes(s)):Le},[Le,Z]);m.useEffect(()=>{if(!_)return;function s(h){ie.current?.contains(h.target)||F(!1)}function d(h){h.key==="Escape"&&F(!1)}return document.addEventListener("pointerdown",s),document.addEventListener("keydown",d),()=>{document.removeEventListener("pointerdown",s),document.removeEventListener("keydown",d)}},[_]),m.useEffect(()=>{_&&B&&le.current?.focus()},[B,_]),m.useEffect(()=>{if(!f||!_||!ne)return;let s=!1;return Pe(!0),M(null),O.organizations(f).then(async d=>{if(s)return;const h=d.organizations.map(Ht).filter(L=>!!L).filter(L=>L.status==="active");qe(h);const S=st(h,p);if(!S)return;const[T,Q]=await Promise.all([O.listSandboxProjects(f,{teamId:S.teamId}),O.listSandboxAgents(f,{teamId:S.teamId})]);s||(re(T.projects),xe(Q.agents))}).catch(d=>{s||M(fe(d))}).finally(()=>{s||Pe(!1)}),()=>{s=!0}},[f,p,ne,_]),m.useEffect(()=>{if(!_||!G||!f||!W){me({status:"idle",changedFiles:0,error:null});return}let s=!1;return me(d=>({status:"loading",changedFiles:d.changedFiles,error:null})),O.sandboxGitStatus(f,W).then(d=>{s||me({status:"ready",changedFiles:Un(d.status?.porcelain??""),error:null})}).catch(d=>{s||me({status:"error",changedFiles:0,error:fe(d)})}),()=>{s=!0}},[f,G,_,W]),m.useEffect(()=>{if(!_||!G||!f||!W){he(null);return}let s=!1;return O.sandbox(f,W).then(d=>{s||he(d.sandbox)}).catch(()=>{s||he(null)}),()=>{s=!0}},[f,G,_,W]);async function Nt(s){if(!v)return;const d=s.openPreview?sn():null;let h=s.repoUrl||Ee;if(Ue){if(ee&&!window.confirm("Replace the current origin remote with a new OpenPond repo before starting the sandbox?")){ye(d,null);return}const k=await v("publish_openpond_repo",{replaceOrigin:ee,...a?.dirty?{commitDirty:!0,commitMessage:s.commitMessage}:{}});if(!k?.ok){ye(d,null);return}h=yn(k)??h}else if(pe&&ee){if(a?.dirty&&!(await v("git_commit",{message:s.commitMessage,includeUnstaged:!0,runChecks:!1}))?.ok){ye(d,null);return}if(!(await v("git_push",{runChecks:!1}))?.ok){ye(d,null);return}}if(!h){ye(d,null);return}const S=await v("sandbox_create",{repo:h,visibility:"team",resources:s.resources,budget:{maxUsd:s.budgetUsd},quotas:{idleTimeoutSeconds:900,maxSpendUsd:s.budgetUsd},...s.env.length>0?{env:s.env}:{},...s.volumes.length>0?{volumes:s.volumes}:{},metadata:{source:"openpond-app-local-sandbox-template-start",...s.entrypointName?{entrypointName:s.entrypointName}:{},...l?.id?{localProjectId:l.id}:{},...l?.name?{projectName:l.name}:{},...E?{templateName:E.name,templateVersion:E.version,templateUseCase:E.useCase,templateTargets:ge.map(k=>({name:k.name,kind:k.kind}))}:{}},...s.openPreview&&s.previewPort?{previewPort:s.previewPort,previewLabel:s.previewLabel,previewAccess:s.previewAccess,previewAutoStart:!0}:{}}),T=an(S);if(s.openPreview&&ye(d,T),!S?.ok)return;const Q=Nn(S);for(const k of E?.setup.commands??[])if(!(await v("sandbox_exec",{command:k,timeoutSeconds:900}))?.ok)return;const L={};for(const k of s.uploads){const Se=[];for(const tt of k.files){const nt=lt(k.targetPath,tt.name),zt=await ct(tt);if(!(await v("sandbox_upload_file",{path:nt,contentsBase64:zt}))?.ok)return;Se.push(nt)}L[k.inputName]=k.multiple?Se:Se[0]??""}const Ae=Rn(s.command,{...s.params,...L});if((await v("sandbox_exec",{command:Ae,timeoutSeconds:s.timeoutSeconds??900}))?.ok){if(Q){for(const k of s.schedules)if(!(await v("sandbox_schedule_create",Pn(k,Q)))?.ok)return}Y(!1)}}async function Pt(s){if(!v)return;const d={},h=[];for(const S of s.uploads){const T=[];for(const Q of S.files){const L=lt(S.targetPath,Q.name),Ae=await ct(Q);h.push({path:L,contentsBase64:Ae}),T.push(L)}d[S.inputName]=S.multiple?T:T[0]??""}P(!1),await v("run_sandbox_template",{mode:s.mode,target:s.target,params:{...s.params,...d},...s.env.length>0?{env:s.env}:{},...h.length>0?{uploads:h}:{}})}async function Ct(s=Xe?.teamId){if(!f||!s)return;const[d,h]=await Promise.all([O.listSandboxProjects(f,{teamId:s}),O.listSandboxAgents(f,{teamId:s})]);re(d.projects),xe(h.agents)}async function It(s){if(!(!v||!l)){J(!0),M(null);try{if(!(await v("create_sandbox_template_scaffold",{manifestOnly:!0,manifestContent:bt(s.name,s.preset),name:s.name,preset:s.preset,manifestPath:s.manifestPath}))?.ok)return;R(null)}catch(d){M(fe(d))}finally{J(!1)}}}async function Rt(s){if(!f||!l||!j)return;const d=s.teamId;J(!0),M(null);try{const h=In(s.sourceType,s.sourceIdentity);let S=(await O.upsertSandboxProject(f,{teamId:d,name:s.projectName,sourceType:s.sourceType,normalizedSourceIdentity:s.sourceIdentity||s.projectName,defaultBranch:s.defaultBranch||null,gitProvider:s.sourceType==="github_repo"?"github":null,gitHost:h.gitHost,gitOwner:h.gitOwner,gitRepo:h.gitRepo,internalRepoPath:h.internalRepoPath,templateRepoUrl:h.templateRepoUrl,sourceConfig:{sourceType:s.sourceType,sourceValue:s.sourceIdentity||s.projectName},metadata:{source:"openpond-app-local-project-agent-setup"}})).project;s.syncNow&&(S=(await O.syncSandboxProject(f,S.id,{teamId:d})).project);const T=await O.updateLocalProjectAgentSetup(f,l.id,{linkedSandboxProject:{teamId:d,projectId:S.id,projectSlug:S.slug,projectName:S.name,sourceRepoUrl:s.sourceIdentity||null,defaultBranch:S.defaultBranch,lastUploadedCommit:null,lastUploadTransport:null,manifestPath:S.sandboxManifestPath,manifestHash:S.sandboxManifestHash,syncedAt:S.sandboxManifestSyncedAt,linkedAt:new Date().toISOString()}});j(T.bootstrap),re(Q=>[S,...Q.filter(L=>L.id!==S.id)]),R(null)}catch(h){M(fe(h))}finally{J(!1)}}async function _t(){if(!f||!l||!C.project||!j)return;const s=C.project;J(!0),M(null);try{const d=(await O.syncSandboxProject(f,s.id,{teamId:s.teamId})).project,h=await O.updateLocalProjectAgentSetup(f,l.id,{linkedSandboxProject:{teamId:d.teamId,projectId:d.id,projectSlug:d.slug,projectName:d.name,sourceRepoUrl:a?.remoteUrl??l.linkedSandboxProject?.sourceRepoUrl??null,defaultBranch:d.defaultBranch,lastUploadedCommit:l.linkedSandboxProject?.lastUploadedCommit??null,lastUploadTransport:l.linkedSandboxProject?.lastUploadTransport??null,manifestPath:d.sandboxManifestPath,manifestHash:d.sandboxManifestHash,syncedAt:d.sandboxManifestSyncedAt,linkedAt:l.linkedSandboxProject?.linkedAt??new Date().toISOString()}});j(h.bootstrap),re(S=>[d,...S.filter(T=>T.id!==d.id)]),R(null)}catch(d){M(fe(d))}finally{J(!1)}}async function Et(s){if(!f||!l||!C.project||!j)return;const d=C.project;J(!0),M(null);try{const h=(await O.upsertSandboxAgent(f,{teamId:d.teamId,projectId:d.id,name:s.agentName,selectedEntrypoint:{scope:"entire_manifest",name:null},triggerType:"manual",backgroundTaskPolicy:{},defaultWorkflowMode:"attempt",defaultResourcePolicy:{},metadata:{source:"openpond-app-local-project-agent-setup"}})).agent;let S=null,T=null;if(s.createTestRun){const L=await O.runSandboxAgent(f,h.id,{teamId:d.teamId,triggerType:"manual",metadata:{source:"openpond-app-local-project-agent-setup"}});S=L.sandbox??null,T=S?.id??L.run.sandboxId??null}const Q=await O.updateLocalProjectAgentSetup(f,l.id,{preferredSandboxAgentId:h.id});j(Q.bootstrap),xe(L=>[h,...L.filter(Ae=>Ae.id!==h.id)]),R(null),T&&await w?.({sandboxId:T,name:it(S)??`${h.name} sandbox`})}catch(h){M(fe(h))}finally{J(!1)}}async function At(){if(!(!f||!C.agent)){J(!0),M(null);try{const s=await O.runSandboxAgent(f,C.agent.id,{teamId:C.agent.teamId,triggerType:"manual",metadata:{source:"openpond-app-local-project-agent-setup"}});await Ct(C.agent.teamId),R(null);const d=s.sandbox?.id??s.run.sandboxId;d&&await w?.({sandboxId:d,name:it(s.sandbox??null)??`${C.agent.name} sandbox`})}catch(s){M(fe(s))}finally{J(!1)}}}const{gitActionItems:wt,sandboxActionItems:$t}=$n({canCreateSandboxProject:vt,canInitGit:Ve,defaultSandboxRepoUrl:r??"",gitWorkspace:pe,hasRemote:ee,isProjectWorkspace:ne,isSandboxWorkspace:G,managed:Ie,onOpenCommitDialog:q,onRunTerminalCommand:z,onWorkspaceToolAction:v,projectSandboxTemplate:b,projectSandboxTemplateValid:y,sandboxTemplateActionTargetCount:xt.length,sandboxTemplateServiceTargets:ht,sandboxResumeTarget:D?{id:D.id,runtimeId:D.runtimeId??null,teamId:D.teamId??null,projectId:D.projectId??null,state:D.state??null}:null,selectedApp:u,selectedProject:l,setSandboxCreateDialogOpen:Y,setSandboxRunActionDialogOpen:P,workspaceBusyValue:oe,workspaceReady:ke,workspaceState:a});if(!a)return null;function et(s){F(!1),s.onSelect()}return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:`workspace-environment-menu ${e==="dock"?"open-up":""} ${e==="topbar"?"topbar":""}`,ref:ie,children:[t.jsx("button",{type:"button",className:`environment-info-button ${e==="topbar"?"titlebar-icon":"composer-icon"} ${_?"active":""}`,title:"Environment","data-tooltip":"Environment","aria-label":"Environment","aria-haspopup":"menu","aria-expanded":_,onClick:()=>F(s=>!s),children:t.jsx(Zt,{size:16})}),_&&t.jsxs("div",{className:"environment-popover",role:"menu","aria-label":"Environment",children:[t.jsx("div",{className:"environment-popover-header",children:t.jsx("span",{children:"Environment"})}),ne&&l?t.jsxs("button",{type:"button",className:"environment-row",disabled:ce||!C.canAct||$,title:ce?"Loading Agent setup state":C.reason??"Set up this project as an Agent",onClick:()=>{ce||!C.canAct||(C.state==="missing_config"&&R("config"),C.state==="needs_project"&&R("connect"),C.state==="needs_sync"&&R("sync"),C.state==="needs_agent"&&R("agent"),C.state==="ready"&&R("run"),F(!1))},children:[t.jsx(we,{size:15}),t.jsxs("span",{children:[t.jsx("strong",{children:"Agent setup"}),t.jsx("small",{children:ce?"Loading setup state":vn(C.state,C.reason)})]}),t.jsx("span",{className:"environment-row-action",children:$?"Working":ce?"Loading":C.actionLabel})]}):null,t.jsxs("button",{type:"button",className:`environment-row ${I?"active":""}`,disabled:!U||!H,onClick:()=>{F(!1),H?.()},children:[t.jsx(Vt,{size:15}),t.jsxs("span",{children:[t.jsx("strong",{children:"Changes"}),t.jsx("small",{children:He})]}),!G&&(Re||N)&&t.jsxs("span",{className:"environment-change-counts",children:[t.jsxs("span",{className:"diff-addition",children:["+",je]}),t.jsxs("span",{className:"diff-deletion",children:["-",Me]})]})]}),t.jsxs("div",{className:"environment-row static",children:[t.jsx(Yt,{size:15}),t.jsxs("span",{children:[t.jsx("strong",{children:yt}),t.jsx("small",{children:a.repoPath||a.workspacePath})]})]}),G?t.jsxs("div",{className:"environment-row static",title:_e,children:[t.jsx(Xt,{size:15}),t.jsxs("span",{children:[t.jsx("strong",{children:"Idle cleanup"}),t.jsx("small",{children:_e})]})]}):null,t.jsxs("button",{type:"button",className:`environment-row ${B?"active":""}`,disabled:Ie||!pe||n||oe||!a.initialized,"aria-expanded":B,onClick:()=>ae(s=>!s),children:[t.jsx(Je,{size:15}),t.jsxs("span",{children:[t.jsx("strong",{children:St}),t.jsx("small",{children:Ie?"Managed workspace":pe?"Branch":"Git not initialized"})]}),t.jsx(Jt,{size:13})]}),B&&t.jsxs("div",{className:"environment-branch-panel",children:[t.jsxs("label",{className:"environment-branch-search",children:[t.jsx(Kt,{size:13}),t.jsx("input",{ref:le,value:Z,placeholder:"Search branches",onChange:s=>be(s.target.value)})]}),t.jsxs("div",{className:"environment-branch-list",children:[We.map(s=>{const d=s===a.currentBranch,h=n||a.dirty&&!d;return t.jsxs("button",{type:"button",className:d?"selected":"",disabled:h,role:"menuitemradio","aria-checked":d,title:h&&!d?"Commit or discard local changes before switching branches.":s,onClick:()=>{F(!1),d||V?.(s)},children:[t.jsx(Je,{size:13}),t.jsxs("span",{children:[t.jsx("strong",{children:s}),d&&a.dirty&&t.jsxs("small",{children:["Uncommitted: ",a.changedFilesCount," ",a.changedFilesCount===1?"file":"files"]})]}),d&&t.jsx(Qt,{size:14})]},s)}),We.length===0&&t.jsx("div",{className:"environment-branch-empty",children:"No branches found"})]}),t.jsxs("button",{type:"button",className:"environment-branch-create",disabled:n||!a.initialized||!X,onClick:()=>{F(!1),X?.()},children:[t.jsx(Je,{size:14}),t.jsx("span",{children:"Create branch"})]})]}),t.jsx("div",{className:"environment-section-title",children:"Git"}),wt.map(s=>t.jsxs("button",{type:"button",className:"environment-action",disabled:s.disabled,onClick:()=>et(s),children:[s.icon,t.jsx("span",{children:s.label})]},s.label)),t.jsx("div",{className:"environment-section-title",children:"Sandbox"}),$t.map(s=>t.jsxs("button",{type:"button",className:"environment-action",disabled:s.disabled,onClick:()=>et(s),children:[s.icon,t.jsx("span",{children:s.label})]},s.label))]})]}),K&&t.jsx(hn,{busy:oe,commitBeforeCreate:(Ue||pe&&ee)&&!!a?.dirty,defaultRepoUrl:Ee,projectName:l?.name??"sandbox template",templateManifest:l?.sandboxTemplate?.normalizedManifest??null,uploadBeforeCreate:Ue,onClose:()=>{oe||Y(!1)},onSubmit:s=>{Nt(s)}}),o&&t.jsx(jn,{busy:oe,projectName:l?.name??"sandbox template",templateManifest:l?.sandboxTemplate?.normalizedManifest??null,onClose:()=>{oe||P(!1)},onSubmit:s=>{Pt(s)}}),A==="config"&&l?t.jsx(zn,{busy:$,error:de,projectName:l.name,onClose:()=>!$&&R(null),onSubmit:s=>{It(s)}}):null,A==="connect"&&l&&Xe?t.jsx(qn,{busy:$,error:de,defaultTeamId:Xe.teamId,projectName:l.name,sourceIdentity:a?.remoteUrl??"",defaultBranch:a?.currentBranch??"main",onClose:()=>!$&&R(null),onSubmit:s=>{Rt(s)}}):null,A==="sync"&&C.project?t.jsx(dt,{busy:$,error:de,title:"Sync Project",actionLabel:"Sync Project",summary:`${C.project.name} · ${C.project.sandboxManifestPath??Ne}`,onClose:()=>!$&&R(null),onSubmit:()=>{_t()}}):null,A==="agent"&&C.project?t.jsx(Mn,{busy:$,error:de,defaultName:`${l?.name??C.project.name} Agent`,onClose:()=>!$&&R(null),onSubmit:s=>{Et(s)}}):null,A==="run"&&C.agent?t.jsx(dt,{busy:$,error:de,title:"Run Agent",actionLabel:"Run Agent",summary:C.agent.name,onClose:()=>!$&&R(null),onSubmit:()=>{At()}}):null]})}export{ea as WorkspaceEnvironmentMenu,On as formatIdleTimeout,Ln as sandboxChangeLabel,Un as sandboxChangedFileCount,Dn as sandboxRuntimePolicyLabel};
@@ -1 +0,0 @@
1
- import{j as e,ag as z,a1 as _,X as D}from"./index-KoQSSt_f.js";/* empty css */import{G as j}from"./git-branch-l2Zih3Bv.js";import{G as h}from"./git-commit-horizontal-Bxi8YPep.js";import{U as B}from"./upload-DvCSGERK.js";function E({open:s,branch:l,filesChanged:i,additions:c,deletions:n,message:m,includeUnstaged:g,nextStep:a,draft:p,busy:t,canPush:u,canPublish:b,onMessageChange:f,onIncludeUnstagedChange:N,onNextStepChange:r,onDraftChange:C,onClose:v,onSubmit:k}){return s?e.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:e.jsxs("form",{className:"git-dialog commit-dialog","aria-label":"Commit changes",onSubmit:o=>{o.preventDefault(),k()},children:[e.jsx(x,{disabled:t,onClose:v}),e.jsx("div",{className:"git-dialog-icon",children:e.jsx(h,{size:18})}),e.jsx("h2",{children:"Commit your changes"}),e.jsxs("div",{className:"git-dialog-row",children:[e.jsx("span",{children:"Branch"}),e.jsxs("strong",{children:[e.jsx(j,{size:14}),l??"No branch"]})]}),e.jsxs("div",{className:"git-dialog-row",children:[e.jsx("span",{children:"Changes"}),e.jsxs("strong",{children:[i," ",i===1?"file":"files",e.jsxs("span",{className:"git-dialog-additions",children:["+",c]}),e.jsxs("span",{className:"git-dialog-deletions",children:["-",n]})]})]}),e.jsxs("label",{className:"git-dialog-toggle",children:[e.jsx("input",{checked:g,disabled:t,type:"checkbox",onChange:o=>N(o.target.checked)}),e.jsx("span",{}),"Include unstaged"]}),e.jsxs("label",{className:"git-dialog-field",children:[e.jsxs("span",{children:["Commit message",e.jsx("small",{children:"Leave blank to use an autogenerated message"})]}),e.jsx("textarea",{value:m,disabled:t,placeholder:"Update workspace",onChange:o=>f(o.target.value)})]}),e.jsxs("fieldset",{className:"git-dialog-next",children:[e.jsx("legend",{children:"Next steps"}),e.jsx(d,{active:a==="commit",icon:e.jsx(h,{size:14}),label:"Commit",disabled:t,onSelect:()=>r("commit")}),e.jsx(d,{active:a==="commit_push",icon:e.jsx(B,{size:14}),label:"Commit & push",disabled:t||!u,onSelect:()=>r("commit_push")}),b&&e.jsx(d,{active:a==="commit_publish",icon:e.jsx(z,{size:14}),label:"Commit & publish",disabled:t,onSelect:()=>r("commit_publish")}),e.jsx(d,{active:a==="commit_pr",icon:e.jsx(_,{size:14}),label:"Commit & create PR",disabled:!0,onSelect:()=>r("commit_pr")})]}),e.jsxs("div",{className:"git-dialog-footer",children:[e.jsxs("label",{className:"git-dialog-toggle draft-toggle",children:[e.jsx("input",{checked:p,disabled:t||a!=="commit_pr",type:"checkbox",onChange:o=>C(o.target.checked)}),e.jsx("span",{}),"Draft"]}),e.jsx("button",{className:"git-dialog-primary",disabled:t||i===0,type:"submit",children:"Continue"})]})]})}):null}function F({open:s,branchName:l,busy:i,onBranchNameChange:c,onSetPrefix:n,onClose:m,onSubmit:g}){return s?e.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:e.jsxs("form",{className:"git-dialog branch-dialog","aria-label":"Create branch",onSubmit:a=>{a.preventDefault(),g()},children:[e.jsx(x,{disabled:i,onClose:m}),e.jsx("div",{className:"git-dialog-icon",children:e.jsx(j,{size:18})}),e.jsx("h2",{children:"Work here"}),e.jsx("p",{children:"Create a branch to commit changes, push, and create a PR from this worktree."}),e.jsxs("label",{className:"git-dialog-field",children:[e.jsxs("span",{children:["Branch name",e.jsx("button",{className:"git-dialog-inline-action",disabled:i,type:"button",onClick:n,children:"Set prefix"})]}),e.jsx("input",{autoFocus:!0,disabled:i,value:l,onChange:a=>c(a.target.value)})]}),e.jsx("button",{className:"git-dialog-primary full",disabled:i||!l.trim(),type:"submit",children:"Create"})]})}):null}function d({active:s,icon:l,label:i,disabled:c,onSelect:n}){return e.jsxs("button",{"aria-pressed":s,className:s?"active":"",disabled:c,type:"button",onClick:n,children:[l,e.jsx("span",{children:i}),s&&e.jsx("span",{className:"git-dialog-check",children:"✓"})]})}function x({disabled:s,onClose:l}){return e.jsx("button",{className:"git-dialog-close",disabled:s,type:"button",onClick:l,children:e.jsx(D,{size:16})})}export{F as BranchDialog,E as CommitDialog};
@@ -1 +0,0 @@
1
- import{d as t}from"./index-KoQSSt_f.js";const a=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],o=t("activity",a);export{o as A};
@@ -1 +0,0 @@
1
- import{d as a}from"./index-KoQSSt_f.js";const e=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],t=a("boxes",e);export{t as B};
@@ -1 +0,0 @@
1
- import{d as o}from"./index-KoQSSt_f.js";const e=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],n=o("chevron-up",e);export{n as C};
@@ -1 +0,0 @@
1
- import{d as a}from"./index-KoQSSt_f.js";const e=[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0",key:"5ilxe3"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0",key:"11zvb9"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7",key:"1iw5b2"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8",key:"c0bmvh"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69",key:"1ruxm7"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8",key:"qkgqxc"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69",key:"1mcia2"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7",key:"1fvljs"}]],t=a("circle-dashed",e);const c=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],h=a("circle-x",c);export{h as C,t as a};
@@ -1 +0,0 @@
1
- import{d as c}from"./index-KoQSSt_f.js";const e=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],t=c("copy",e);export{t as C};
@@ -1,4 +0,0 @@
1
- import{bY as d,bZ as v,b_ as I,aB as h,b$ as R,c0 as b}from"./index-KoQSSt_f.js";const w=1200;function T(e){if(e.parsed.command!=="create"&&e.parsed.command!=="edit")return null;const t=e.parsed.command==="edit"?$(e.parsed.args):null,o=t?.objective||e.parsed.args||e.prompt.trim();if(!o)return null;const a=e.payload?.profile??null,r=e.parsed.command==="create"?"/create":"/edit",s=C(e.messages??[]),c=s.length>0,n=e.parsed.command==="create"?c?"context_backed_create":"direct_prompt_create":c?"context_backed_improve":"direct_prompt_improve",i=e.parsed.command==="edit"?t?.agentId??e.session?.appId??null:m(o);return e.parsed.command==="edit"&&!i?null:p({operation:e.parsed.command==="create"?"create":"improve",surface:n,command:r,objective:o,profile:{id:a?.activeProfile??"default",local:a?.mode==="local",repoPath:a?.repoPath??null,sourcePath:a?.sourcePath??null,localHead:a?.git?.head??null,hostedSourceRef:a?.hosted?.sourceRef??null,hostedSourceCommit:a?.hosted?.sourceCommitSha??null},hosted:{teamId:e.session?.cloudTeamId??e.payload?.preferences.defaultTeamId??null,projectId:e.session?.cloudProjectId??null,workItemId:null},actor:{id:e.payload?.account.activeProfile?.handle??null,label:e.payload?.account.label??null},session:e.session,workItemId:null,targetAgentId:i,targetAgentName:e.parsed.command==="edit"?t?.agentId??e.session?.appName??null:null,context:{messageIds:s.map(u=>u.messageId).filter(u=>!!u),conversationExcerpts:s,attachments:x(e.attachments??[]),apps:y(e.apps??[],e.session),tools:S(e.messages??[]),evalRefs:t?.evalRefs??[],targetRepoAssumptions:e.session?.cwd?[`workspace: ${e.session.cwd}`]:[]},metadata:{source:"web_composer_slash",selectedCommand:r,capturedMessageCount:s.length}})}function A(e){const t=e.objective.trim();if(!t)return null;const o=e.payload?.profile??null,a=m(t);return p({operation:"create",surface:"lab_create",command:"lab_create",objective:t,profile:{id:o?.activeProfile??"default",local:o?.mode==="local",repoPath:o?.repoPath??null,sourcePath:o?.sourcePath??null,localHead:o?.git?.head??null,hostedSourceRef:o?.hosted?.sourceRef??null,hostedSourceCommit:o?.hosted?.sourceCommitSha??null},hosted:{teamId:e.session.cloudTeamId??e.payload?.preferences.defaultTeamId??null,projectId:e.session.cloudProjectId??null,workItemId:null},actor:{id:e.payload?.account.activeProfile?.handle??null,label:e.payload?.account.label??null},session:e.session,workItemId:null,targetAgentId:a,targetAgentName:null,context:{messageIds:[],conversationExcerpts:[],attachments:[],apps:[],tools:[],evalRefs:[],targetRepoAssumptions:e.session.cwd?[`workspace: ${e.session.cwd}`]:[]},metadata:{source:"lab_agent_create",selectedCommand:"lab_create",capturedMessageCount:0,hiddenExecutionSession:!0}})}function k(e){const t=e.objective.trim(),o=f(e.agentId);if(!t||!o)return null;const a=e.payload?.profile??null;return p({operation:"improve",surface:"lab_improve",command:"lab_improve",objective:t,profile:{id:a?.activeProfile??"default",local:a?.mode==="local",repoPath:a?.repoPath??null,sourcePath:a?.sourcePath??null,localHead:a?.git?.head??null,hostedSourceRef:a?.hosted?.sourceRef??null,hostedSourceCommit:a?.hosted?.sourceCommitSha??null},hosted:{teamId:e.session.cloudTeamId??e.payload?.preferences.defaultTeamId??null,projectId:e.session.cloudProjectId??null,workItemId:null},actor:{id:e.payload?.account.activeProfile?.handle??null,label:e.payload?.account.label??null},session:e.session,workItemId:null,targetAgentId:o,targetAgentName:e.agentName?.trim()||o,context:{messageIds:[],conversationExcerpts:[],attachments:[],apps:[],tools:[],evalRefs:[],targetRepoAssumptions:e.session.cwd?[`workspace: ${e.session.cwd}`]:[]},metadata:{source:"lab_agent_improve",selectedCommand:"lab_improve",capturedMessageCount:0,hiddenExecutionSession:!0}})}function D(e){if(!e.authoringRun.tasksetRef||e.authoringRun.state!=="ready")throw new Error("Approve the shared Taskset before starting Agent authoring.");const t=e.operation==="create"?A({objective:e.objective,payload:e.payload,session:e.session}):k({agentId:e.agentId??"",agentName:e.agentName,objective:e.objective,payload:e.payload,session:e.session});if(!t)throw new Error("The Agent target and objective are required.");return d(e.authoringRun,{operation:t.operation,surface:t.surface,command:t.command,objective:t.objective,state:"planning",adapter:t.adapter,actor:t.actor,scope:t.scope,context:{...t.context,signalRefs:[...new Set([...e.authoringRun.context.signalRefs,...t.context.signalRefs])],evalRefs:[...new Set([...e.authoringRun.context.evalRefs,...t.context.evalRefs])]},target:t.target,targetSelection:{status:"confirmed",preselectedKind:e.authoringRun.targetSelection?.preselectedKind??"agent",confirmedKind:"agent"},plan:null,workflowCapture:null,approvalIds:[],questionIds:[],questions:[],candidates:[],evaluationReceipts:[],checkRefs:[],sourceRefs:[...new Set([...e.authoringRun.sourceRefs,...t.sourceRefs,e.authoringRun.tasksetRef.id])],externalExecutionRefs:[],blockedReason:null,metadata:{...e.authoringRun.metadata,...t.metadata,sharedAuthoringRun:!0,tasksetRevision:e.authoringRun.tasksetRef.revision,tasksetHash:e.authoringRun.tasksetRef.contentHash},updatedAt:new Date().toISOString()})}function N(e){const t=e.objective.trim();if(!t)return null;const o=e.command==="edit"?e.workItem?.assignedAgentId??null:m(t);if(e.command==="edit"&&!o)return null;const a=e.payload?.profile??null;return p({operation:e.command==="create"?"create":"improve",surface:e.command==="create"?"hosted_create":"hosted_improve",command:e.command==="create"?"/create":"/edit",objective:t,profile:{id:a?.activeProfile??"default",local:!1,repoPath:null,sourcePath:null,localHead:null,hostedSourceRef:a?.hosted?.sourceRef??e.project.defaultBranch??null,hostedSourceCommit:a?.hosted?.sourceCommitSha??null},hosted:{teamId:e.project.teamId,projectId:e.project.id,workItemId:e.workItem?.id??null},actor:{id:e.payload?.account.activeProfile?.handle??null,label:e.payload?.account.label??null},session:null,conversationId:e.workItem?.conversationId??null,project:e.project,workItemId:e.workItem?.id??null,targetAgentId:o,targetAgentName:e.command==="edit"?e.workItem?.title??null:null,context:{messageIds:[],conversationExcerpts:e.workItem?[{messageId:null,role:"user",excerpt:e.workItem.title,reason:"Cloud work item context"}]:[],attachments:[],apps:[],tools:[],targetRepoAssumptions:[`cloud project: ${e.project.sourceLabel??e.project.name}`]},metadata:{source:e.source,targetProjectId:e.project.id,targetProjectName:e.project.name}})}function U(e){if(e.plan||e.state!=="planning")return e;const t=new Date().toISOString(),o=e.target.kind==="agent"?e.target.id??m(e.objective):e.target.id,a=e.target.kind==="agent"?{...e.target,id:o,defaultActionKey:e.target.defaultActionKey??`${o}.chat`}:e.target,r=a.kind==="agent"?e.operation==="improve"&&a.id?[{path:g(a.id),operation:"update",reason:e.objective},{path:"settings/profile.yaml",operation:"update",reason:"Preserve the active Profile routing."}]:[{path:g(a.id??"created-agent"),operation:"create",reason:e.objective},{path:"settings/profile.yaml",operation:"update",reason:"Register the generated Agent in the active Profile."}]:[],s=j(e,t),c=v({...e,target:a}),n=I.parse({schemaVersion:"openpond.createImprove.plan.v1",id:`create_improve_plan_${crypto.randomUUID()}`,runId:e.id,status:"pending_approval",objective:e.objective,summary:`${e.operation==="improve"?"Improve":"Create"} ${a.displayName??a.kind} for: ${e.objective}`,capturedContextSummary:_(e),defaultChatAction:{key:a.kind==="agent"?a.defaultActionKey??"chat":"chat",label:a.displayName??"Chat",required:!0},sourcePlan:r,requirements:P(e),checks:a.kind==="agent"?[{name:"inspect",command:"pnpm agent:inspect",required:!0},{name:"build",command:"pnpm build",required:!0},{name:"validate",command:"pnpm agent:validate",required:!0},{name:"eval",command:"pnpm agent:eval",required:!0}]:[],approvalId:`approval_${crypto.randomUUID()}`,approvedAt:null,editedFromPlanId:null,metadata:{source:e.metadata.source??"create_improve",actionShape:c,actionShapeDecisionSource:h(e.metadata)?"request_metadata":"default_chat_fallback"},createdAt:t,updatedAt:t});return d(e,{state:"awaiting_plan_approval",target:a,plan:n,workflowCapture:s,approvalIds:n.approvalId?[n.approvalId]:[],questionIds:e.questions.map(i=>i.id),blockedReason:null,metadata:{...e.metadata,source:e.metadata.source??"create_improve"},updatedAt:t})}function H(e,t,o){const a=new Date().toISOString(),r=e.questions.find(n=>n.id===t);if(!r||r.status!=="pending")return e;const s=r.options.find(n=>n.value===o),c=e.questions.map(n=>n.id===t?{...n,status:"answered",answer:{value:o,label:s?.label??null,detail:null,answeredAt:a,metadata:{}}}:n);return d(e,{state:c.some(n=>n.required&&n.status==="pending")?"awaiting_questions":"planning",questions:c,updatedAt:a},`cloud-answer:${t}:${crypto.randomUUID()}`)}function M(e){if(!e.plan)throw new Error("Create/Improve plan is not ready to approve yet.");const t=new Date().toISOString();return d(e,{state:e.target.kind==="model"?"evaluating":"applying_source",plan:{...e.plan,status:"approved",approvedAt:e.plan.approvedAt??t,updatedAt:t},blockedReason:null,updatedAt:t},`cloud-approve:${crypto.randomUUID()}`)}function O(e,t=null){const o=new Date().toISOString(),a=t?.trim()||"Cancelled before source mutation.";return d(e,{state:"cancelled",plan:e.plan?{...e.plan,status:"cancelled",approvedAt:null,metadata:{...e.plan.metadata,cancellationReason:a},updatedAt:o}:null,blockedReason:a,metadata:{...e.metadata,cancellationReason:a},updatedAt:o},`cloud-cancel:${crypto.randomUUID()}`)}function F(e,t){const o=t.trim();if(!o||!e.plan||e.state!=="awaiting_plan_approval")return e;const a=new Date().toISOString(),r=e.plan;return d(e,{state:"awaiting_plan_approval",plan:{...r,id:`create_improve_plan_${crypto.randomUUID()}`,status:"pending_approval",summary:`${r.summary}
2
-
3
- Revision requested: ${o}`,sourcePlan:r.sourcePlan.map(s=>({...s,reason:`${s.reason} Revision requested: ${o}`})),approvedAt:null,editedFromPlanId:r.id,metadata:{...r.metadata,revision:o,supersedesPlanId:r.id},createdAt:a,updatedAt:a},metadata:{...e.metadata,previousPlanId:r.id},updatedAt:a},`cloud-revise:${crypto.randomUUID()}`)}function m(e){return f(e.toLowerCase().replace(/['"]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"created-agent")}function g(e){return e==="default"?"agent":`agents/${e}`}function p(e){const t=new Date().toISOString(),o=e.project?.id??e.session?.cloudProjectId??e.session?.localProjectId??e.hosted.projectId;return R.parse({schemaVersion:"openpond.createImprove.run.v1",id:`create_improve_${crypto.randomUUID()}`,revision:0,operation:e.operation,surface:e.surface,command:e.command,objective:e.objective,state:"planning",adapter:e.profile.local?{kind:"local",sourceAuthority:"local_profile",activeProfile:e.profile.id,repoPath:e.profile.repoPath,sourcePath:e.profile.sourcePath,localHead:e.profile.localHead,confirmationPolicy:"always_require_plan_approval"}:{kind:"hosted",sourceAuthority:"hosted_profile",teamId:e.hosted.teamId,projectId:e.hosted.projectId,activeProfile:e.profile.id,sourceRef:e.profile.hostedSourceRef,baseSha:e.profile.hostedSourceCommit,workItemId:e.hosted.workItemId,confirmationPolicy:"always_require_plan_approval"},actor:{id:e.actor.id,kind:"user",label:e.actor.label},scope:{profileId:e.profile.id,conversationId:e.conversationId??e.session?.id??null,originTurnId:null,workItemId:e.workItemId,projectId:o,targetProject:e.project?{id:e.project.id,name:e.project.name,workspacePath:null,sourceRef:e.project.defaultBranch??null,baseSha:null}:e.session?.workspaceId?{id:e.session.workspaceId,name:e.session.workspaceName,workspacePath:e.session.cwd,sourceRef:null,baseSha:null}:null},context:{...e.context,signalRefs:[],evalRefs:e.context.evalRefs??[]},target:{kind:"agent",id:e.targetAgentId,displayName:e.targetAgentName,defaultActionKey:e.targetAgentId?`${e.targetAgentId}.chat`:"chat"},plan:null,workflowCapture:null,executionPolicy:{mode:"background",pauseAllowed:!0,cancellationAllowed:!0},iterationPolicy:{mode:"single",maximumAttempts:1,currentAttempt:0},approvalIds:[],questionIds:[],questions:[],candidates:[],evaluationReceipts:[],checkRefs:[],sourceRefs:[],externalExecutionRefs:[],localProfileCommit:e.profile.localHead,hostedSourceCommit:e.profile.hostedSourceCommit,hostedSourceRef:e.profile.hostedSourceRef,releaseOutcome:{status:"not_requested",profileCommit:null,profileTag:null,releaseReceiptRef:null,updatedAt:null},blockedReason:null,appliedActionIds:[],metadata:e.metadata,createdAt:t,updatedAt:t})}function j(e,t){const o=l(e.context.tools.flatMap(a=>a.artifactRefs));return b.parse({schemaVersion:"openpond.createImprove.workflowCapture.v1",id:`workflow_capture_${crypto.randomUUID()}`,runId:e.id,command:e.command,objective:e.objective,conversationExcerpts:e.context.conversationExcerpts,attachments:e.context.attachments,apps:e.context.apps,tools:e.context.tools,sideEffects:l(e.context.tools.flatMap(a=>a.sideEffects)),profileActions:l(e.context.tools.map(a=>a.name)),externalProviders:l([...e.context.apps.map(a=>a.name),...e.context.tools.map(a=>q(a.name))]),environmentVariables:[],files:l(e.context.attachments.map(a=>a.ref?`${a.name} (${a.ref})`:a.name)),schedules:[],webhooks:[],channelTargets:["openpond_chat"],outputArtifacts:o,targetRepoAssumptions:e.context.targetRepoAssumptions,traceRefs:o.filter(a=>/\btrace\b|trace[:/-]/i.test(a)),metadata:{source:e.metadata.source??"create_improve",conversationId:e.scope.conversationId,workItemId:e.scope.workItemId,projectId:e.scope.projectId},createdAt:t})}function P(e){const t=e.scope.targetProject?.id?[{kind:"target_project",name:e.scope.targetProject.name??e.scope.targetProject.id,status:"declared",detail:e.scope.targetProject.sourceRef?`source ref ${e.scope.targetProject.sourceRef}`:null,metadata:{projectId:e.scope.targetProject.id}}]:[],o=e.context.apps.map(a=>({kind:"integration",name:a.name,status:a.required?"required":"declared",detail:a.connectionId?`connection ${a.connectionId}`:"Connection availability must be checked before publish.",metadata:{appId:a.id,connectionId:a.connectionId}}));return[...t,...o]}function _(e){return e.context.conversationExcerpts.length>0?e.context.conversationExcerpts.map(t=>t.excerpt).join(`
4
- `):e.context.targetRepoAssumptions.length>0?e.context.targetRepoAssumptions.join("; "):"Direct Create/Improve request with no prior chat context."}function y(e,t){const o=new Map;for(const a of e)o.set(a.id,{id:a.id,name:a.name,connectionId:null,required:!0});return t?.appId&&t.appName&&o.set(t.appId,{id:t.appId,name:t.appName,connectionId:null,required:!0}),[...o.values()]}function x(e){return e.map(t=>({id:t.id,name:t.name,mediaType:t.mediaType,ref:`chat-attachment:${t.id}`}))}function C(e){return e.filter(t=>t.role==="user"||t.role==="assistant").filter(t=>!!t.content?.trim()).slice(-6).map(t=>({messageId:t.id,role:t.role,excerpt:t.content.trim().slice(0,w),reason:"Recent conversation context"}))}function S(e){return e.filter(t=>!!t.actionRun).slice(-6).map(t=>({name:t.actionRun.actionName,inputSummary:t.actionRun.title,outputSummary:t.actionRun.responseText,artifactRefs:t.actionRun.refs.map(o=>o.target),sideEffects:t.actionRun.status==="completed"?["action completed"]:[]}))}function f(e){return e.trim().toLowerCase().replace(/['"]/g,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"created-agent"}function $(e){const t=/^--agent\s+([a-z0-9._-]+)\s*([\s\S]*)$/i.exec(e.trim());if(!t?.[1])return null;let o=t[2]?.trim()??"";const a=[];for(;o.startsWith("--eval");){const r=/^--eval\s+(?:"([^"]+)"|'([^']+)'|(\S+))\s*([\s\S]*)$/i.exec(o),s=r?.[1]??r?.[2]??r?.[3]??null;if(!r||!s)break;a.push(s),o=r[4]?.trim()??""}return{agentId:f(t[1]),objective:o||`Improve ${t[1]}.`,evalRefs:l(a)}}function q(e){const[t]=e.split(".");return t?.trim()||e}function l(e){return Array.from(new Set(e.map(t=>t?.trim()??"").filter(Boolean)))}function B(e){return Object.fromEntries(e.filter(t=>t.answer).map(t=>[t.id,t.answer]))}export{H as answerCreateImproveQuestionRun,M as approveCreateImproveRun,T as buildComposerCreateImproveRun,N as buildHostedCloudWorkCreateImproveRun,U as buildInitialCreateImproveRun,A as buildLabAgentCreateImproveRun,k as buildLabAgentImproveRun,O as cancelCreateImproveRun,D as continueLabAgentRunFromTaskset,m as createPipelineAgentIdFromObjective,g as createPipelineSourceRootPathForAgent,B as createQuestionAnswerMetadata,F as reviseCreateImproveRun};
@@ -1 +0,0 @@
1
- import{d as a}from"./index-KoQSSt_f.js";const e=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]],t=a("file",e);export{t as F};
@@ -1 +0,0 @@
1
- import{d as c}from"./index-KoQSSt_f.js";const e=[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]],y=c("git-branch",e);export{y as G};