openpond 0.2.53 → 0.2.55

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 (254) hide show
  1. package/dist/app-server.d.ts +1514 -100
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/actions-command-WTFZA7LF.js +2 -0
  4. package/dist/chunks/{app-layer-I7MZYVLL.js → app-layer-Y2UERCPY.js} +1 -1
  5. package/dist/chunks/app-server-runtime-2RM3N4I6.js +2 -0
  6. package/dist/chunks/apps-KDNWYO3G.js +2 -0
  7. package/dist/chunks/chunk-2DFR7PJ4.js +2460 -0
  8. package/dist/chunks/chunk-4CRM2ADK.js +2 -0
  9. package/dist/chunks/{chunk-7ZG3IT7C.js → chunk-4WEUCGJ3.js} +6 -6
  10. package/dist/chunks/chunk-55G6B54U.js +6 -0
  11. package/dist/chunks/chunk-73G5UYBB.js +12 -0
  12. package/dist/chunks/{chunk-DALJMSJG.js → chunk-ARQEJOEK.js} +24 -24
  13. package/dist/chunks/chunk-B7QDZPNX.js +2 -0
  14. package/dist/chunks/chunk-BFKYRQMA.js +2 -0
  15. package/dist/chunks/{chunk-AH22RHPS.js → chunk-BQAF5P7K.js} +2 -2
  16. package/dist/chunks/{chunk-YJ4PNAST.js → chunk-BTI4N7YO.js} +1 -1
  17. package/dist/chunks/chunk-C6D4WAYN.js +6 -0
  18. package/dist/chunks/chunk-CGBI2VYJ.js +2 -0
  19. package/dist/chunks/chunk-DLVPSCTB.js +2 -0
  20. package/dist/chunks/{chunk-UJ5EFSEC.js → chunk-G6JMQGX7.js} +1 -1
  21. package/dist/chunks/chunk-GGIG3XU7.js +3 -0
  22. package/dist/chunks/chunk-IODUCRBA.js +58 -0
  23. package/dist/chunks/chunk-JIMU3KDA.js +24 -0
  24. package/dist/chunks/chunk-JUJSA7KI.js +22 -0
  25. package/dist/chunks/chunk-K5SBVO3B.js +195 -0
  26. package/dist/chunks/chunk-KD3QVRIJ.js +21 -0
  27. package/dist/chunks/chunk-KGNCKIFP.js +3 -0
  28. package/dist/chunks/chunk-L4235TRQ.js +140 -0
  29. package/dist/chunks/{chunk-N5QNXMIS.js → chunk-MH3LHSGX.js} +1 -1
  30. package/dist/chunks/chunk-MVF3F5QS.js +2 -0
  31. package/dist/chunks/{chunk-N3DEA6PG.js → chunk-NNIRIUSY.js} +1 -1
  32. package/dist/chunks/{chunk-WITSXYEW.js → chunk-NOTXPD2T.js} +1 -1
  33. package/dist/chunks/{chunk-T5LE6R5S.js → chunk-OSIO7PLX.js} +1 -1
  34. package/dist/chunks/chunk-OULAKUIN.js +2 -0
  35. package/dist/chunks/chunk-OWNLDB2O.js +2 -0
  36. package/dist/chunks/{chunk-NAZ26IZL.js → chunk-Q7AXHFZV.js} +1 -1
  37. package/dist/chunks/chunk-QDHMP5FS.js +2 -0
  38. package/dist/chunks/chunk-QKD5OMDI.js +2 -0
  39. package/dist/chunks/{chunk-YD55Z5H3.js → chunk-QRAKXZOC.js} +10 -10
  40. package/dist/chunks/{chunk-JDLAHVAJ.js → chunk-R27YGT77.js} +1 -1
  41. package/dist/chunks/chunk-R2BSIRYL.js +3 -0
  42. package/dist/chunks/chunk-SHQOIROR.js +42 -0
  43. package/dist/chunks/chunk-STDMBJOQ.js +9 -0
  44. package/dist/chunks/chunk-T4QGDQHP.js +4 -0
  45. package/dist/chunks/{chunk-R3XFY7VL.js → chunk-TERVLCRG.js} +1 -1
  46. package/dist/chunks/{chunk-PA7XP42P.js → chunk-U2YMBCX7.js} +1 -1
  47. package/dist/chunks/{chunk-GXSTZBM6.js → chunk-UA5DA5I2.js} +1 -1
  48. package/dist/chunks/chunk-VJEZPDBS.js +5 -0
  49. package/dist/chunks/chunk-WDFLCNRC.js +8 -0
  50. package/dist/chunks/chunk-WZYRAR7X.js +16 -0
  51. package/dist/chunks/chunk-YDT7L3VZ.js +24 -0
  52. package/dist/chunks/chunk-YR5ID2SS.js +2 -0
  53. package/dist/chunks/chunk-YUPBAWBJ.js +554 -0
  54. package/dist/chunks/cli-465VC2WP.js +2 -0
  55. package/dist/chunks/{configuration-command-MATM4XR5.js → configuration-command-LAAP2EXT.js} +1 -1
  56. package/dist/chunks/connected-evidence-XM626247.js +2 -0
  57. package/dist/chunks/{continual-PKK2BOTB.js → continual-TTGJ6YTR.js} +1 -1
  58. package/dist/chunks/core-commands-W7EK552V.js +2 -0
  59. package/dist/chunks/datasets-QJWYTTQL.js +2 -0
  60. package/dist/chunks/desktop-test-3B2D34NF.js +3 -0
  61. package/dist/chunks/dist-FAJX2UBW.js +2 -0
  62. package/dist/chunks/{dist-4HV2W6V4.js → dist-HUAE2KFZ.js} +1 -1
  63. package/dist/chunks/{chunk-6VF3Q6QJ.js → dist-SKYG5LZO.js} +2 -4
  64. package/dist/chunks/evaluation-coordination-2MONR4AX.js +2 -0
  65. package/dist/chunks/experiment-improvements-WVQ5FK46.js +2 -0
  66. package/dist/chunks/experiments-S5UQ32QB.js +2 -0
  67. package/dist/chunks/extension-DWMY6D2R.js +4 -0
  68. package/dist/chunks/{help-WLKSACLZ.js → help-A72QDRNG.js} +1 -1
  69. package/dist/chunks/hosted-experiment-improvement-2OWOQLHC.js +3 -0
  70. package/dist/chunks/hosted-harness-runtime-TGFMAV7W.js +2 -0
  71. package/dist/chunks/hosted-profile-candidate-WQSI6HZO.js +3 -0
  72. package/dist/chunks/hosted-profile-compiler-Z2A4TEA6.js +2 -0
  73. package/dist/chunks/hosted-profile-evaluation-control-FKGARUEE.js +2 -0
  74. package/dist/chunks/hosted-profile-evaluation-inspection-QOY2JKV4.js +3 -0
  75. package/dist/chunks/hosted-profile-evaluation-preparation-WVP6CALP.js +3 -0
  76. package/dist/chunks/human-review-TGHQKXFZ.js +2 -0
  77. package/dist/chunks/{import-V3HUGRHR.js → import-4UE5XNSG.js} +1 -1
  78. package/dist/chunks/javascript-isolate-process-source-ZPQKKLR4.js +2 -0
  79. package/dist/chunks/javascript-verifier-worker-source-F3LSGPOY.js +2 -0
  80. package/dist/chunks/learning-R2XBMMEM.js +2 -0
  81. package/dist/chunks/opchat-WULL6CUP.js +3 -0
  82. package/dist/chunks/organizations-I37HISVX.js +2 -0
  83. package/dist/chunks/profile-NOZ6TVXL.js +3 -0
  84. package/dist/chunks/project-agent-T6XKC54C.js +2 -0
  85. package/dist/chunks/sandbox-command-STB47FRY.js +2 -0
  86. package/dist/chunks/{sandbox-template-BBGGPJMI.js → sandbox-template-LKGBDVJ4.js} +1 -1
  87. package/dist/chunks/sql-execution-process-source-B4HQM6ZV.js +2 -0
  88. package/dist/chunks/src-T3KWWCAH.js +322 -0
  89. package/dist/chunks/{src-CR6UZYTX.js → src-ZWJ5IO7A.js} +1 -1
  90. package/dist/chunks/{taskset-LUG3ZU6J.js → taskset-RNYDR4GS.js} +1 -1
  91. package/dist/chunks/{teams-bot-7I4BAUVO.js → teams-bot-H7XT23XB.js} +1 -1
  92. package/dist/chunks/{training-XHE6FVII.js → training-M6FAPRSJ.js} +1 -1
  93. package/dist/cli.js +1 -1
  94. package/dist/index.js +1 -1
  95. package/dist/web/assets/App-CLFfy_Av.js +154 -0
  96. package/dist/web/assets/App-CTlAPuCY.css +1 -0
  97. package/dist/web/assets/{AppDialog-BdusXgU0.js → AppDialog-CPHTPqrx.js} +1 -1
  98. package/dist/web/assets/{AppTerminalPanel-C4uRpnBz.js → AppTerminalPanel-BVj5Tj93.js} +2 -2
  99. package/dist/web/assets/AppsView-O69zEBY3.js +1 -0
  100. package/dist/web/assets/{BrowserSidebar-Bl7V6YO2.js → BrowserSidebar-Pr_Kpe8p.js} +1 -1
  101. package/dist/web/assets/{CartesianChart-BstFbsdn.js → CartesianChart-JPqo6YOf.js} +1 -1
  102. package/dist/web/assets/{CollaborationTabs-B8YAf0c1.js → CollaborationTabs-CAJcQFn2.js} +1 -1
  103. package/dist/web/assets/{CommandMenu-DZct7zUJ.js → CommandMenu-B-w53n9A.js} +1 -1
  104. package/dist/web/assets/{CommunityView-CR0-W-uG.js → CommunityView-DbZKK8_P.js} +1 -1
  105. package/dist/web/assets/{ComposerCreateImproveStrip-DR-Qo7b4.js → ComposerCreateImproveStrip-3_083PF4.js} +1 -1
  106. package/dist/web/assets/{GetStartedView-xqQoMMei.js → GetStartedView-D7JGm_6c.js} +1 -1
  107. package/dist/web/assets/HostedModelLearningReview-DwgMfZ7_.js +1 -0
  108. package/dist/web/assets/{HostedModelLearningSettings-De3i9wF4.js → HostedModelLearningSettings-JRfQadRl.js} +1 -1
  109. package/dist/web/assets/{LabModelVersionDetailPage-DAY1MmqP.js → LabModelVersionDetailPage-BUYflJY_.js} +1 -1
  110. package/dist/web/assets/{LabSkillSidebar-DLnIgnry.js → LabSkillSidebar-BBiqk7Rf.js} +1 -1
  111. package/dist/web/assets/LabsRoute-Ci6vUnSd.js +99 -0
  112. package/dist/web/assets/MainChatThread-BQK3oI2N.js +2 -0
  113. package/dist/web/assets/MainPane-D3ojiN-p.js +18 -0
  114. package/dist/web/assets/{MarkdownText-gJMuefaJ.js → MarkdownText-DOdOVFXL.js} +25 -25
  115. package/dist/web/assets/{NativeSkillSidebar-Dlxb8iOC.js → NativeSkillSidebar-CRI_ri8z.js} +1 -1
  116. package/dist/web/assets/{NewExperienceSwitcher-DM-cqJ-K.js → NewExperienceSwitcher-DhYtfE68.js} +1 -1
  117. package/dist/web/assets/{NewProjectDialog-Cu1q75gq.js → NewProjectDialog-D8sy1gOz.js} +1 -1
  118. package/dist/web/assets/{OutputsPage-DiXMkasl.js → OutputsPage-CbWgrhXA.js} +1 -1
  119. package/dist/web/assets/{ProjectsPage-DqiBHiCB.js → ProjectsPage-DLB67lyA.js} +1 -1
  120. package/dist/web/assets/RightChatPanelStack-ozSKnDyX.js +1 -0
  121. package/dist/web/assets/{RightSidebarHomePanel-CeSFJM5s.js → RightSidebarHomePanel-CKs3OwhD.js} +1 -1
  122. package/dist/web/assets/ScheduledWorkPage-Cafv_QnR.js +1 -0
  123. package/dist/web/assets/SettingsView-T1vYDPjh.js +5 -0
  124. package/dist/web/assets/{TeamChatView-DM0adMtj.js → TeamChatView-vIrmXOY_.js} +2 -2
  125. package/dist/web/assets/{TerminalOverlay-CFlH51DD.js → TerminalOverlay-CAmF__Dq.js} +1 -1
  126. package/dist/web/assets/{TrainingCreationPanel-CgIBVGha.js → TrainingCreationPanel-D75K0yk5.js} +1 -1
  127. package/dist/web/assets/{TrainingDraftPanel-Bbo3RRie.js → TrainingDraftPanel-D7XZePAk.js} +1 -1
  128. package/dist/web/assets/{UsageSettingsSection-CSRjJUSa.js → UsageSettingsSection-CYTmp7PG.js} +1 -1
  129. package/dist/web/assets/WorkSidebarPanel-CODMjVHY.js +1 -0
  130. package/dist/web/assets/WorkspaceDiffPanel-DQGoIjH9.js +14 -0
  131. package/dist/web/assets/WorkspaceEnvironmentMenu-c1pHDskn.js +63 -0
  132. package/dist/web/assets/{WorkspaceGitDialogs-Dgmg-6XG.js → WorkspaceGitDialogs-DrVtapQQ.js} +1 -1
  133. package/dist/web/assets/{WorkspaceMonacoEditor-BR4qxMgU.js → WorkspaceMonacoEditor-BCKzvSj2.js} +3 -3
  134. package/dist/web/assets/arrow-up-right-CP4hZdrJ.js +1 -0
  135. package/dist/web/assets/chunk-NOJECMB7-Bhcms-w5.js +1 -0
  136. package/dist/web/assets/{clipboard-BZzZ82Bk.js → clipboard-BgrXorn-.js} +1 -1
  137. package/dist/web/assets/{cloud-upload-CJPYPVl8.js → cloud-upload-B_zYztb6.js} +1 -1
  138. package/dist/web/assets/{cssMode-WC4Rg1l-.js → cssMode-DanjGgA8.js} +1 -1
  139. package/dist/web/assets/{folder-open-sLZJxLQy.js → folder-open-CdVKbtGq.js} +1 -1
  140. package/dist/web/assets/folder-plus-Cc5KElB6.js +1 -0
  141. package/dist/web/assets/{git-commit-horizontal-Cotm7KEC.js → git-commit-horizontal-CjGIIgRi.js} +1 -1
  142. package/dist/web/assets/{htmlMode-C6oZGeaB.js → htmlMode-DRGDF_UL.js} +1 -1
  143. package/dist/web/assets/index-B5re-RJy.css +1 -0
  144. package/dist/web/assets/{index-BxWTVKtn.js → index-BE-wXZ5R.js} +2 -2
  145. package/dist/web/assets/info-BLj0RvhA.js +1 -0
  146. package/dist/web/assets/{jsonMode-BET4LQIn.js → jsonMode-CCu0j2GD.js} +1 -1
  147. package/dist/web/assets/{lspLanguageFeatures-BPxA_-Kg.js → lspLanguageFeatures-s_Lhm7P6.js} +1 -1
  148. package/dist/web/assets/minimize-2-Cyg_zD9z.js +1 -0
  149. package/dist/web/assets/{monaco.contribution-DXzyQfVi.js → monaco.contribution-CAzXvYkn.js} +2 -2
  150. package/dist/web/assets/{monaco.contribution-DFzEyaHi.js → monaco.contribution-CY7mRgOB.js} +2 -2
  151. package/dist/web/assets/{monaco.contribution-7AUuf2NS.js → monaco.contribution-aUeLcBEg.js} +2 -2
  152. package/dist/web/assets/{monaco.contribution-BH6kkO4b.js → monaco.contribution-mUPNK9ra.js} +2 -2
  153. package/dist/web/assets/monitor-DZvOs_wC.js +1 -0
  154. package/dist/web/assets/play-BJPzemuY.js +1 -0
  155. package/dist/web/assets/{python-PzBkTjWx.js → python-B_qnnVaG.js} +1 -1
  156. package/dist/web/assets/{save-DpezrtH2.js → save-BDy9tA3E.js} +1 -1
  157. package/dist/web/assets/square-Cb2c5td4.js +1 -0
  158. package/dist/web/assets/{toggleHighContrast-Cto-fOXm.js → toggleHighContrast-MhO1JLyR.js} +1 -1
  159. package/dist/web/assets/{tsMode-BYA4LNc6.js → tsMode-DfBXJb9V.js} +1 -1
  160. package/dist/web/assets/{upload-C5YFNgtS.js → upload-D56kThRh.js} +1 -1
  161. package/dist/web/assets/{useLocalAgentSchedules-CnyTsqlf.js → useLocalAgentSchedules-DMnGfswi.js} +1 -1
  162. package/dist/web/assets/useProviderSettings-Bv5B9eNk.js +5 -0
  163. package/dist/web/assets/{useSessionTurnCache-DICuJSJW.js → useSessionTurnCache-ClAY8gze.js} +1 -1
  164. package/dist/web/assets/{wifi-off-nzHj7JXp.js → wifi-off-C9lWJmVm.js} +1 -1
  165. package/dist/web/assets/{workers-Dboaw6f_.js → workers-BYzrH8by.js} +1 -1
  166. package/dist/web/assets/{yaml-uuY5JmO8.js → yaml-D3T8UkT3.js} +1 -1
  167. package/dist/web/index.html +2 -2
  168. package/package.json +3 -3
  169. package/dist/chunks/actions-command-DSO6YOEE.js +0 -2
  170. package/dist/chunks/app-server-runtime-KZP2LB5X.js +0 -2
  171. package/dist/chunks/apps-TM74FFQB.js +0 -2
  172. package/dist/chunks/chunk-2JO2KWT3.js +0 -5
  173. package/dist/chunks/chunk-2SPZYBDN.js +0 -16
  174. package/dist/chunks/chunk-3LX6RU3C.js +0 -3
  175. package/dist/chunks/chunk-4SHKI3BH.js +0 -2
  176. package/dist/chunks/chunk-4TZHH5FC.js +0 -2409
  177. package/dist/chunks/chunk-5TNDPNS3.js +0 -2
  178. package/dist/chunks/chunk-6JAN4RMN.js +0 -42
  179. package/dist/chunks/chunk-7QEE4PBI.js +0 -8
  180. package/dist/chunks/chunk-AFUDIT36.js +0 -2
  181. package/dist/chunks/chunk-BX4J2VDU.js +0 -2
  182. package/dist/chunks/chunk-EMKZVP7Z.js +0 -2
  183. package/dist/chunks/chunk-FPUUZQUP.js +0 -6
  184. package/dist/chunks/chunk-GCOUYYHG.js +0 -5
  185. package/dist/chunks/chunk-GS2NKNKG.js +0 -4
  186. package/dist/chunks/chunk-H2VT22JK.js +0 -2
  187. package/dist/chunks/chunk-HA7EFTPF.js +0 -23
  188. package/dist/chunks/chunk-IKWDL3RB.js +0 -17
  189. package/dist/chunks/chunk-L3KS6MOV.js +0 -2
  190. package/dist/chunks/chunk-NHFGEVVH.js +0 -518
  191. package/dist/chunks/chunk-NNF6KCHD.js +0 -3
  192. package/dist/chunks/chunk-PJM2G7SG.js +0 -21
  193. package/dist/chunks/chunk-PQHTZ5CP.js +0 -2
  194. package/dist/chunks/chunk-PYABBF53.js +0 -53
  195. package/dist/chunks/chunk-QRWPEW3Z.js +0 -24
  196. package/dist/chunks/chunk-QXVIIM4T.js +0 -2
  197. package/dist/chunks/chunk-SDEDAHV6.js +0 -160
  198. package/dist/chunks/chunk-TGIB24K4.js +0 -22
  199. package/dist/chunks/chunk-USKE34VR.js +0 -9
  200. package/dist/chunks/chunk-WV2APYWG.js +0 -2
  201. package/dist/chunks/chunk-XGE2XI6M.js +0 -191
  202. package/dist/chunks/chunk-XM26DGML.js +0 -3
  203. package/dist/chunks/chunk-YIB3J4RC.js +0 -2
  204. package/dist/chunks/chunk-YL6VFJ4P.js +0 -2
  205. package/dist/chunks/chunk-Z3D4C7BG.js +0 -12
  206. package/dist/chunks/cli-JVB345H2.js +0 -2
  207. package/dist/chunks/connected-evidence-YDPGNHLP.js +0 -2
  208. package/dist/chunks/core-commands-MTV4EKXY.js +0 -2
  209. package/dist/chunks/datasets-CP3IT47T.js +0 -2
  210. package/dist/chunks/desktop-test-IAZC5MAH.js +0 -3
  211. package/dist/chunks/dist-SAABJU5F.js +0 -2
  212. package/dist/chunks/evaluation-coordination-EPHLZXYM.js +0 -2
  213. package/dist/chunks/experiment-improvements-6JTOPA74.js +0 -2
  214. package/dist/chunks/experiments-XHPFGECH.js +0 -2
  215. package/dist/chunks/extension-GX7DLW2X.js +0 -4
  216. package/dist/chunks/hosted-experiment-improvement-HAB3UE6A.js +0 -3
  217. package/dist/chunks/hosted-harness-runtime-YM23QNDK.js +0 -2
  218. package/dist/chunks/hosted-profile-candidate-EOBGKQAS.js +0 -3
  219. package/dist/chunks/hosted-profile-compiler-OZAOZ2ES.js +0 -2
  220. package/dist/chunks/hosted-profile-evaluation-control-RJ6XJZCS.js +0 -2
  221. package/dist/chunks/hosted-profile-evaluation-inspection-SJIDXPHI.js +0 -3
  222. package/dist/chunks/hosted-profile-evaluation-preparation-26EI5LJR.js +0 -3
  223. package/dist/chunks/human-review-AAVMISBF.js +0 -2
  224. package/dist/chunks/learning-FNBEIAY6.js +0 -2
  225. package/dist/chunks/opchat-QK43DXTY.js +0 -3
  226. package/dist/chunks/organizations-SRPAWKC7.js +0 -2
  227. package/dist/chunks/profile-C6CQNVYE.js +0 -3
  228. package/dist/chunks/project-agent-GZV5HNYI.js +0 -2
  229. package/dist/chunks/sandbox-command-4TJXQTKT.js +0 -2
  230. package/dist/chunks/src-P3VYLFLI.js +0 -329
  231. package/dist/web/assets/App-CO2F717V.css +0 -1
  232. package/dist/web/assets/App-CuhaCsfb.js +0 -235
  233. package/dist/web/assets/AppsView-BS1czXUP.js +0 -1
  234. package/dist/web/assets/HostedModelLearningReview-CHxxf_Lu.js +0 -1
  235. package/dist/web/assets/LabsRoute-CXJRJMhr.js +0 -99
  236. package/dist/web/assets/MainChatThread-BwAla81W.js +0 -2
  237. package/dist/web/assets/MainPane-CakOBCHw.js +0 -19
  238. package/dist/web/assets/RightChatPanelStack-VaOOmxwd.js +0 -1
  239. package/dist/web/assets/ScheduledWorkPage-D1jRQxFs.js +0 -1
  240. package/dist/web/assets/SettingsView-RA9OXgcu.js +0 -5
  241. package/dist/web/assets/WorkSidebarPanel-DwlEMEoG.js +0 -1
  242. package/dist/web/assets/WorkspaceDiffPanel-pGVezNMw.js +0 -14
  243. package/dist/web/assets/WorkspaceEnvironmentMenu-Byjngd9V.js +0 -32
  244. package/dist/web/assets/arrow-up-right-H0pvnH2s.js +0 -1
  245. package/dist/web/assets/chunk-UHVJOMWN-BqXRe639.js +0 -1
  246. package/dist/web/assets/folder-plus-C84wrpt_.js +0 -1
  247. package/dist/web/assets/index-dSmk3FLJ.css +0 -1
  248. package/dist/web/assets/info-Dc81lEfw.js +0 -1
  249. package/dist/web/assets/minimize-2-Bs7MVN3C.js +0 -1
  250. package/dist/web/assets/monitor-DXL019Wf.js +0 -1
  251. package/dist/web/assets/play-CXkxUZeU.js +0 -1
  252. package/dist/web/assets/square-oy7f5Ce6.js +0 -1
  253. package/dist/web/assets/useProviderSettings-B_KeQjE5.js +0 -5
  254. /package/dist/chunks/{chunk-OGPHXXCD.js → chunk-BT5YNE5U.js} +0 -0
@@ -0,0 +1 @@
1
+ .sidebar-task-menu{position:fixed;z-index:1000;width:192px;max-height:calc(100vh - 16px);overflow-y:auto;padding:4px;border:0;border-radius:8px;background:var(--panel);color:var(--text);box-shadow:0 8px 24px #0006}.sidebar-task-menu button{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:inherit;font:inherit;font-size:12px;text-align:left;cursor:pointer}.sidebar-task-menu button:hover,.sidebar-task-menu button:focus-visible{background:#000;outline:none}.sidebar-task-menu .task-menu-done{border-top:1px solid var(--border);margin-top:4px}.sidebar-task-menu-trigger.is-open{opacity:1;pointer-events:auto}.sidebar-row.sidebar-task-row.has-running-dot .row-meta{align-self:center;margin-top:0}@media(hover:none){.sidebar-task-menu-trigger{opacity:1;pointer-events:auto}}.sidebar-row-actions.sidebar-task-menu-trigger{background:transparent;padding:0}.sidebar-task-row:hover .sidebar-task-menu-trigger .sidebar-row-action,.sidebar-task-row:focus-within .sidebar-task-menu-trigger .sidebar-row-action,.sidebar-task-menu-trigger.is-open .sidebar-row-action{background:var(--panel)}.sidebar .sidebar-row.sidebar-task-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto;min-width:0;max-width:100%;gap:8px;border:1px solid var(--border);margin:4px 6px;width:calc(100% - 12px);border-radius:8px}.sidebar .sidebar-pinned-section,.sidebar .sidebar-projects-section,.sidebar .sidebar-ordinary-section{padding-inline:6px}.sidebar-pinned-section>.section-header,.sidebar-projects-section>.section-header,.sidebar-ordinary-section>.section-header{margin-inline:8px}.sidebar :is(.sidebar-pinned-section,.sidebar-projects-section,.sidebar-ordinary-section) .sidebar-task-row{width:100%;margin-inline:0}.sidebar .sidebar-task-row .row-meta{position:static;display:flex;align-items:center;align-self:center;gap:2px;min-width:0;width:auto;height:auto}.sidebar .sidebar-task-row .row-meta-status{flex:0 0 auto}.sidebar .sidebar-task-row .sidebar-task-menu-trigger{position:static;transform:none;flex:0 0 auto}.sidebar-title-slot{display:flex;min-width:0;max-width:100%;align-items:center;gap:3px;overflow:hidden}.sidebar-source-slot,.conversation-source-icon{width:24px;flex:0 0 24px;display:inline-flex;align-items:center;justify-content:center}.conversation-source-icon{height:24px}.conversation-source-icon img{width:16px;height:16px;object-fit:contain}.conversation-source-icon{font-size:17px;color:var(--muted)}.sidebar .sidebar-task-row .row-label-shell{display:flex;flex-direction:column;align-items:flex-start;flex:1 1 0;min-width:0;max-width:100%;overflow:hidden}.sidebar .sidebar-task-row .sidebar-session-title-line,.sidebar .sidebar-task-row .sidebar-task-title{min-width:0;max-width:100%;overflow:hidden}.sidebar .sidebar-task-row .sidebar-task-title-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .sidebar-child-toggle{position:static;flex:0 0 15px;width:15px}.sidebar-inbox-row{min-height:54px;padding-top:8px;padding-bottom:8px}.sidebar-inbox-project{display:flex;align-items:center;gap:5px;min-width:0;min-height:18px;max-width:100%;text-align:left;overflow:hidden;white-space:nowrap;color:var(--muted);font-size:11px;line-height:18px}.sidebar-inbox-project-name{overflow:hidden;text-overflow:ellipsis}.sidebar-inbox-project time{flex:0 0 auto}.sidebar-inbox-done{display:inline-grid;place-items:center;width:30px;height:30px;flex:0 0 auto;border:0;background:transparent;color:var(--muted);border-radius:7px}.sidebar-inbox-done:hover,.sidebar-inbox-done:focus-visible{background:#80808033;color:var(--text)}.sidebar-threads-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:10px 12px 5px;font-size:12px;color:var(--muted)}.sidebar-threads-header-actions{display:flex;gap:4px;align-items:center}.sidebar-threads-header .sidebar-icon.active{color:var(--text);background:#8080802e}.sidebar-thread-inbox .section-actions{opacity:1}.sidebar-inbox-date{margin:16px 12px 6px;font-size:12px;font-weight:500;color:var(--muted)}.sidebar-threads-header-actions{margin-left:auto}.native-setup-terminal{position:fixed;inset:auto 0 0;height:min(420px,70vh);z-index:120}.native-setup-terminal .guake-terminal-overlay{height:100%}.provider-plan-usage{display:grid;gap:12px;padding-top:12px;border-top:1px solid var(--border);font-size:12px}.plan-usage-heading,.plan-usage-window>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.plan-usage-heading{justify-content:flex-end;color:var(--muted)}.plan-usage-refresh{display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:4px;padding:5px;cursor:pointer}.plan-usage-refresh:hover{color:var(--text);background:var(--hover)}.plan-usage-refresh:disabled{opacity:.5;cursor:default}.plan-usage-window{display:grid;gap:5px}.plan-usage-window strong{font-weight:500;font-variant-numeric:tabular-nums}.plan-usage-window meter{width:100%;height:6px;border:0;border-radius:6px;overflow:hidden;background:#353535}.plan-usage-window meter::-webkit-meter-bar{background:#353535;border:0;border-radius:6px}.plan-usage-window meter::-webkit-meter-optimum-value{background:#8ccdaa}.plan-usage-window meter::-webkit-meter-suboptimum-value{background:#e3ba79}.plan-usage-window meter::-webkit-meter-even-less-good-value{background:#e28b84}.plan-usage-window meter::-moz-meter-bar{background:#8ccdaa}.provider-plan-usage small,.provider-plan-usage p{color:var(--muted);line-height:1.5;font-size:11px;margin:0}.plan-usage-note{opacity:.8}.user-auth-plan-usage{padding:6px;border-top:1px solid var(--border)}.plan-usage-compact{display:flex;align-items:center;justify-content:space-between;width:100%;gap:18px;border:0;border-radius:5px;padding:7px 8px;background:transparent;color:inherit;font-size:12px;text-align:left;cursor:pointer}.plan-usage-compact:hover,.plan-usage-compact:focus-visible{background:#ffffff0f}.plan-usage-compact-values{display:flex;align-items:baseline;justify-content:flex-end;flex-wrap:wrap;gap:6px 12px}.plan-usage-compact-value{display:flex;align-items:baseline;gap:5px;white-space:nowrap}.plan-usage-compact-values strong{font-weight:500;font-variant-numeric:tabular-nums}.plan-usage-compact-value small{font-size:10px;color:var(--muted)}.app-shell:has(>.desktop-navigation-rail){grid-template-columns:52px var(--sidebar-width) minmax(0,1fr)}.app-shell.sidebar-closed:has(>.desktop-navigation-rail){grid-template-columns:52px 0 minmax(0,1fr)}.app-shell .content-shell{grid-column:3}.desktop-navigation-rail{grid-column:1;grid-row:1;z-index:25;min-height:0;display:flex;flex-direction:column;align-items:center;gap:18px;padding:10px 6px;background:var(--shell-navigation-bg)}.app-shell>.sidebar{grid-column:2;grid-row:1}.app-shell:has(>.desktop-navigation-rail)>.sidebar-resize-handle{grid-column:2 / 3}.desktop-rail-destinations{display:flex;flex-direction:column;align-items:center;gap:7px;width:36px;flex:0 0 auto}.desktop-rail-button{width:36px;height:36px;border:0;border-radius:9px;display:grid;place-items:center;color:var(--muted);background:transparent}.desktop-rail-button:hover,.desktop-rail-button.active{background:#80808029;color:var(--text)}.desktop-rail-button:focus-visible{outline:2px solid var(--text);outline-offset:2px}.desktop-navigation-rail [data-rail-tooltip]{position:relative}.desktop-navigation-rail [data-rail-tooltip]:after{content:attr(data-rail-tooltip);position:absolute;z-index:60;left:calc(100% + 12px);top:50%;transform:translateY(-50%);padding:7px 10px;border:1px solid var(--border);border-radius:7px;background:var(--panel);color:var(--text);box-shadow:0 4px 16px #00000040;font-size:12px;font-weight:500;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .1s ease,visibility .1s ease}.desktop-navigation-rail [data-rail-tooltip]:hover:after,.desktop-navigation-rail [data-rail-tooltip]:focus-visible:after{opacity:1;visibility:visible}.desktop-rail-account{margin-top:auto;width:36px}.desktop-rail-account .user-auth-trigger{width:36px;height:36px;padding:0;grid-template-columns:1fr;gap:0;place-items:center}.desktop-rail-account .user-auth-name{display:none}.desktop-rail-account .user-auth-menu{position:fixed;left:52px;bottom:12px;max-width:calc(100vw - 64px)}@media(max-width:980px){.app-shell.sidebar-open:has(>.desktop-navigation-rail),.app-shell.sidebar-closed:has(>.desktop-navigation-rail){grid-template-columns:52px 0 minmax(0,1fr)}.app-shell>.sidebar{position:absolute;grid-column:1 / -1;left:52px;top:0;bottom:0;max-width:calc(100vw - 52px)}.app-shell:has(>.desktop-navigation-rail)>.sidebar-resize-handle{grid-column:1 / -1;left:calc(52px + min(var(--sidebar-width),86vw,calc(100vw - 52px)))}}.human-review-inbox-control{position:relative;display:inline-grid;place-items:center;flex:0 0 32px;min-width:32px;overflow:visible}.human-review-inbox-control svg{flex-shrink:0}.human-review-inbox-count{position:absolute;top:-3px;right:-6px;min-width:15px;padding:1px 3px;border-radius:8px;background:var(--text);color:var(--bg);font-size:9px;line-height:12px;text-align:center}.desktop-rail-button.desktop-training-entry,.desktop-rail-button.desktop-training-entry:hover,.desktop-rail-button.desktop-training-entry.active{color:#74d4df}
@@ -1 +1 @@
1
- import{r as s,j as h}from"./index-BxWTVKtn.js";import{fs as D}from"./App-CuhaCsfb.js";const p=[],m=new WeakMap,j=["button:not([disabled])","[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","summary","[tabindex]:not([tabindex='-1'])","[contenteditable='true']"].join(",");function B({ariaLabel:o,backdropClassName:a="training-dialog-backdrop",children:i,className:u,contained:t=!1,dismissDisabled:n=!1,initialFocusKey:e,inertExclusionSelector:f,onClose:g}){const l=s.useRef(null),R=s.useRef(Symbol("app-dialog")),b=s.useRef(null),E=s.useRef(n),y=s.useRef(g);E.current=n,y.current=g,s.useEffect(()=>{const r=R.current;b.current=document.activeElement instanceof HTMLElement?document.activeElement:null,p.push(r);const d=t?l.current?.closest(".main-pane")??null:null,w=L(l.current,d,f);function x(c){if(p.at(-1)===r){if(c.key==="Escape"){c.preventDefault(),c.stopPropagation(),E.current||y.current();return}c.key!=="Tab"||t||I(c,l.current)}}return document.addEventListener("keydown",x,!0),()=>{document.removeEventListener("keydown",x,!0);const c=p.lastIndexOf(r);c>=0&&p.splice(c,1),w();const A=b.current;A?.isConnected&&A.focus()}},[t,f]),s.useEffect(()=>{const r=window.requestAnimationFrame(()=>{const d=l.current;(d?.querySelector("[data-autofocus]")??d)?.focus()});return()=>window.cancelAnimationFrame(r)},[e]);function k(r){r.target===r.currentTarget&&!n&&g()}function v(r){r.key==="Escape"&&r.stopPropagation()}return h.jsx("div",{className:a,role:"presentation",onMouseDown:k,children:h.jsx("section",{ref:l,"aria-busy":n||void 0,"aria-label":o,"aria-modal":t?void 0:"true",className:u,role:"dialog",tabIndex:-1,onKeyDown:v,onMouseDown:r=>r.stopPropagation(),children:h.jsx(D,{children:i})})})}function F(o){return o?Array.from(o.querySelectorAll(j)).filter(a=>!a.hidden&&a.getAttribute("aria-hidden")!=="true"&&a.getClientRects().length>0):[]}function I(o,a){if(!a)return;const i=F(a);if(i.length===0){o.preventDefault(),a.focus();return}const u=i.indexOf(document.activeElement),t=o.shiftKey?u<=0?i.length-1:u-1:u<0||u===i.length-1?0:u+1;o.preventDefault(),i[t]?.focus()}function L(o,a=null,i){if(!o)return()=>{};const u=[];let t=o.parentElement??o;for(;t.parentElement&&t!==document.body;){const n=t.parentElement;for(const e of Array.from(n.children)){if(e===t||!(e instanceof HTMLElement)||i&&e.matches(i))continue;const f=m.get(e)??{count:0,ariaHidden:e.getAttribute("aria-hidden"),inert:e.inert};f.count+=1,m.set(e,f),u.push(e),e.inert=!0,e.setAttribute("aria-hidden","true")}if(t=n,a&&t===a)break}return()=>{for(const n of u.reverse()){const e=m.get(n);!e||--e.count>0||(m.delete(n),n.inert=e.inert,e.ariaHidden===null?n.removeAttribute("aria-hidden"):n.setAttribute("aria-hidden",e.ariaHidden))}}}export{B as A};
1
+ import{r as s,j as h}from"./index-BE-wXZ5R.js";import{fc as D}from"./App-CLFfy_Av.js";const p=[],m=new WeakMap,j=["button:not([disabled])","[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","summary","[tabindex]:not([tabindex='-1'])","[contenteditable='true']"].join(",");function B({ariaLabel:o,backdropClassName:a="training-dialog-backdrop",children:i,className:u,contained:t=!1,dismissDisabled:n=!1,initialFocusKey:e,inertExclusionSelector:f,onClose:g}){const l=s.useRef(null),R=s.useRef(Symbol("app-dialog")),b=s.useRef(null),E=s.useRef(n),y=s.useRef(g);E.current=n,y.current=g,s.useEffect(()=>{const r=R.current;b.current=document.activeElement instanceof HTMLElement?document.activeElement:null,p.push(r);const d=t?l.current?.closest(".main-pane")??null:null,w=L(l.current,d,f);function x(c){if(p.at(-1)===r){if(c.key==="Escape"){c.preventDefault(),c.stopPropagation(),E.current||y.current();return}c.key!=="Tab"||t||I(c,l.current)}}return document.addEventListener("keydown",x,!0),()=>{document.removeEventListener("keydown",x,!0);const c=p.lastIndexOf(r);c>=0&&p.splice(c,1),w();const A=b.current;A?.isConnected&&A.focus()}},[t,f]),s.useEffect(()=>{const r=window.requestAnimationFrame(()=>{const d=l.current;(d?.querySelector("[data-autofocus]")??d)?.focus()});return()=>window.cancelAnimationFrame(r)},[e]);function k(r){r.target===r.currentTarget&&!n&&g()}function v(r){r.key==="Escape"&&r.stopPropagation()}return h.jsx("div",{className:a,role:"presentation",onMouseDown:k,children:h.jsx("section",{ref:l,"aria-busy":n||void 0,"aria-label":o,"aria-modal":t?void 0:"true",className:u,role:"dialog",tabIndex:-1,onKeyDown:v,onMouseDown:r=>r.stopPropagation(),children:h.jsx(D,{children:i})})})}function F(o){return o?Array.from(o.querySelectorAll(j)).filter(a=>!a.hidden&&a.getAttribute("aria-hidden")!=="true"&&a.getClientRects().length>0):[]}function I(o,a){if(!a)return;const i=F(a);if(i.length===0){o.preventDefault(),a.focus();return}const u=i.indexOf(document.activeElement),t=o.shiftKey?u<=0?i.length-1:u-1:u<0||u===i.length-1?0:u+1;o.preventDefault(),i[t]?.focus()}function L(o,a=null,i){if(!o)return()=>{};const u=[];let t=o.parentElement??o;for(;t.parentElement&&t!==document.body;){const n=t.parentElement;for(const e of Array.from(n.children)){if(e===t||!(e instanceof HTMLElement)||i&&e.matches(i))continue;const f=m.get(e)??{count:0,ariaHidden:e.getAttribute("aria-hidden"),inert:e.inert};f.count+=1,m.set(e,f),u.push(e),e.inert=!0,e.setAttribute("aria-hidden","true")}if(t=n,a&&t===a)break}return()=>{for(const n of u.reverse()){const e=m.get(n);!e||--e.count>0||(m.delete(n),n.inert=e.inert,e.ariaHidden===null?n.removeAttribute("aria-hidden"):n.setAttribute("aria-hidden",e.ariaHidden))}}}export{B as A};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TerminalOverlay-CFlH51DD.js","assets/index-BxWTVKtn.js","assets/index-dSmk3FLJ.css","assets/App-CuhaCsfb.js","assets/App-CO2F717V.css","assets/TerminalOverlay-DwBiZLwk.css"])))=>i.map(i=>d[i]);
2
- import{r,j as t,_ as m}from"./index-BxWTVKtn.js";const p=r.lazy(()=>m(()=>import("./TerminalOverlay-CFlH51DD.js"),__vite__mapDeps([0,1,2,3,4,5])).then(e=>({default:e.TerminalOverlay})));function E({open:e,connection:a,scope:l,tabs:s,onTabsChange:n,cwd:i,appId:u,workspaceName:o,queuedCommand:f,onClose:d}){const[_,c]=r.useState(!1);return r.useEffect(()=>{e&&c(!0)},[e]),_?t.jsx(r.Suspense,{fallback:null,children:t.jsx(p,{open:e,connection:a,scope:l,tabs:s,onTabsChange:n,cwd:i,appId:u,workspaceName:o,queuedCommand:f,onClose:d})}):null}export{E as AppTerminalPanel};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TerminalOverlay-CAmF__Dq.js","assets/index-BE-wXZ5R.js","assets/index-B5re-RJy.css","assets/App-CLFfy_Av.js","assets/App-CTlAPuCY.css","assets/TerminalOverlay-DwBiZLwk.css"])))=>i.map(i=>d[i]);
2
+ import{r,j as t,_ as m}from"./index-BE-wXZ5R.js";const p=r.lazy(()=>m(()=>import("./TerminalOverlay-CAmF__Dq.js"),__vite__mapDeps([0,1,2,3,4,5])).then(e=>({default:e.TerminalOverlay})));function E({open:e,connection:a,scope:l,tabs:s,onTabsChange:n,cwd:i,appId:u,workspaceName:o,queuedCommand:f,onClose:d}){const[_,c]=r.useState(!1);return r.useEffect(()=>{e&&c(!0)},[e]),_?t.jsx(r.Suspense,{fallback:null,children:t.jsx(p,{open:e,connection:a,scope:l,tabs:s,onTabsChange:n,cwd:i,appId:u,workspaceName:o,queuedCommand:f,onClose:d})}):null}export{E as AppTerminalPanel};
@@ -0,0 +1 @@
1
+ import{j as e,r as h}from"./index-BE-wXZ5R.js";import{O as je,X as te,bD as Ne,M as Z,o as D,bH as X,s as q,n as be,_ as J,cg as fe,ce as Pe,bI as se,ch as me,ci as Ee,cj as oe,b as ye,ck as Se,cl as Ae,cm as Re,h as _e,j as Le,aX as Te,ax as Oe,p as Ue,cn as re,R as Fe,aF as $e,q as Me,av as De,aL as He,co as ze,B as Ke}from"./App-CLFfy_Av.js";import{a as de,u as Be,b as Je}from"./useProviderSettings-Bv5B9eNk.js";import{a as qe,s as Ge}from"./MainPane-D3ojiN-p.js";import"./save-BDy9tA3E.js";import"./MarkdownText-DOdOVFXL.js";import"./cloud-upload-B_zYztb6.js";import"./arrow-up-right-CP4hZdrJ.js";import"./square-Cb2c5td4.js";import"./folder-open-CdVKbtGq.js";import"./play-BJPzemuY.js";const ae=[{id:"openpond_chat",name:"Ponder Pal",icon:je},{id:"codex",name:"Codex",icon:"/agent-sources/codex.svg",provider:"codex"},{id:"claude_code",name:"Claude Code",icon:"/agent-sources/claude-code.svg",provider:"claude-code"},{id:"opencode",name:"OpenCode",icon:"/agent-sources/opencode.svg",provider:"opencode"},{id:"grok_build",name:"Grok Build",icon:"/agent-sources/grok-build.svg",provider:"grok-build"},{id:"hermes",name:"Hermes",icon:"/agent-sources/hermes.png"},{id:"pi",name:"Pi",icon:"/agent-sources/pi.svg"},{id:"openclaw",name:"OpenClaw",icon:"/agent-sources/openclaw.svg"},{id:"oh_my_pi",name:"Oh My Pi",icon:"/agent-sources/oh-my-pi.svg"}];function ke(n,a){return n.state==="disconnected"?"Disconnected":n.state==="paused"?"Paused":n.error?"Needs attention":a.running?n.backfill.stage!=="complete"?"Importing history":n.queued?"Uploading updates":"Watching for conversations":a.desiredState==="stopped"?"Importer stopped":"Importer offline"}function We({agent:n,account:a,native:t,inventory:s,projects:l,teamId:g,learningControl:o,connected:i,onHide:p,onManage:c}){const d=s?.collector.connections.filter(u=>u.source===n.id)??[],v=s?.sources.some(u=>u.source===n.id&&u.available&&u.capabilities.history);return e.jsxs("article",{className:"agent-connection-card","aria-label":n.name,children:[e.jsxs("div",{className:"agent-card-title",children:[e.jsx("img",{src:n.icon,alt:""}),e.jsx("span",{children:n.name}),e.jsx("button",{type:"button",className:"agent-hide","aria-label":`Hide ${n.name}`,onClick:p,children:e.jsx(te,{size:14})})]}),n.id==="openpond_chat"?e.jsxs(e.Fragment,{children:[e.jsx("small",{children:a?.state==="signed_in"?"Connected to OpenPond":"Sign in to OpenPond"}),e.jsx("p",{children:"Use Ponder Pal from the sidebar."}),e.jsx("button",{type:"button",className:"agent-account-link",onClick:()=>{Ne({kind:"settings",section:"account"})},children:"Account setup"})]}):e.jsxs(e.Fragment,{children:[e.jsx("small",{children:t?t.available?t.enabled?"Ready to chat":"Installed · chat disabled":t.lastError??"Check installation":"Conversation import"}),e.jsx("button",{type:"button",className:"agent-connect-button",disabled:!i,onClick:c,children:t?.available||d.length?"Manage":"Connect"}),e.jsx("div",{className:"agent-card-sync",children:d.length?d.map(u=>e.jsxs("div",{children:[e.jsx("span",{children:ke(u,s.collector)}),e.jsxs("small",{children:[l.find(_=>_.id===u.projectId&&u.teamId===g)?.content.name??u.projectId," ","· ",u.admitted," tasks"]}),u.teamId!==g?e.jsxs("small",{children:["Team: ",u.teamId]}):null,u.queued?e.jsxs("small",{children:[u.queued," updates queued"]}):null,u.lastAdmissionAt?e.jsxs("small",{children:["Last sync: ",new Date(u.lastAdmissionAt).toLocaleString()]}):null,u.error?e.jsx("small",{role:"alert",children:u.error}):null]},u.id)):e.jsx("small",{children:s?v?"History available · sync not connected":"No local history found":"Reading local setup…"})})]}),o]})}function Ve(n,a,t,s){const l=h.useRef({providers:a,onProvider:t});l.current={providers:a,onProvider:t};const g=JSON.stringify(["claude-code","opencode","grok-build"].map(o=>{const i=a?.providers[o];return[o,i?.binaryPath,i?.sourceHome,i?.enabled]}));h.useEffect(()=>{if(!n||!l.current.providers)return;let o=!1;const i=["claude-code","opencode","grok-build"].map(p=>{const c=l.current.providers?.providers[p],d=new AbortController,v=s>0?{promise:Z(n,`/v1/providers/${p}/native-setup`,{method:"POST",body:JSON.stringify({action:"check"}),signal:d.signal}),release:()=>d.abort()}:qe(n,p,l.current.providers?.providers[p]);return v.promise.then(u=>{o||(s>0&&u.session&&!u.error&&Ge(n,p,u,c),l.current.onProvider(p,u.settings))},()=>{}),v});return()=>{o=!0,i.forEach(p=>p.release())}},[n,g,s])}var F=q().trim().min(1).max(240),we=be().int().positive(),Qe=J(["dataset","evaluator","model","training_configuration","training_run","harness","environment","experiment","learning_policy","deployment"]),Xe=D({kind:Qe,resourceId:F,release:fe.nullable(),role:J(["training","validation","holdout","target","reward","evaluation","serving","source"])}).strict(),Ze=Pe("kind",[D({kind:se("model"),providerId:F,modelId:F,artifact:fe.nullable(),messages:X(D({role:J(["system","user","assistant"]),content:q().max(1e5)}).strict()).max(100)}).strict(),D({kind:se("harness"),profileRepositoryId:F,source:me}).strict(),D({kind:se("agent"),source:Ee}).strict(),D({kind:se("suite"),profileRepositoryId:F,suiteId:F,sources:X(me).min(1).max(1e3)}).strict().superRefine((n,a)=>{const t=n.sources[0],s=new Set;for(const[l,g]of n.sources.entries())s.has(g.definitionId)&&a.addIssue({code:"custom",path:["sources",l],message:"Suite definitions must be unique."}),s.add(g.definitionId),(g.profileId!==t.profileId||g.sourceRevision!==t.sourceRevision||g.catalogHash!==t.catalogHash||oe(g.harnessRelease)!==oe(t.harnessRelease))&&a.addIssue({code:"custom",path:["sources",l],message:"Suite checks must belong to the same pinned Profile source and Harness release."})})]),Ie=D({name:q().trim().min(1).max(200),description:q().max(1e4),targets:X(D({id:F,name:q().trim().min(1).max(200),target:Ze}).strict()).max(100),defaultTargetId:F.nullable(),resources:X(Xe).max(1e3)}).strict().superRefine((n,a)=>{new Set(n.targets.map(t=>t.id)).size!==n.targets.length&&a.addIssue({code:"custom",path:["targets"],message:"Target identities must be unique."}),n.defaultTargetId&&!n.targets.some(t=>t.id===n.defaultTargetId)&&a.addIssue({code:"custom",path:["defaultTargetId"],message:"Default target must belong to this Project."}),new Set(n.resources.map(t=>oe(t))).size!==n.resources.length&&a.addIssue({code:"custom",path:["resources"],message:"Resource links must be unique."})}),Ye=D({schemaVersion:se("openpond.trainingProject.v1"),id:F,teamId:F,creatorUserId:F,ownerScope:J(["workspace","personal"]).optional(),revision:we,content:Ie,archived:ye(),createdAt:q().datetime(),updatedAt:q().datetime()}).strict();D({operationId:F,id:F,expectedRevision:be().int().nonnegative(),content:Ie,ownerScope:J(["workspace","personal"]).optional()}).strict();D({operationId:F,expectedRevision:we,archived:ye()}).strict();var en=D({teamId:F,projects:X(Ye).max(100),nextCursor:F.nullable()}).strict();D({operation:J(["evaluate","train","enable_learning","accept_candidate","serve"]),support:J(["supported","unsupported"]),state:J(["ready","needs_setup","blocked"]),reasons:X(D({code:F,message:q().min(1).max(2e3),field:q().nullable(),action:J(["choose_target","choose_data","choose_evaluator","configure_runtime","request_access","configure_budget","wait","review_evidence"]).nullable()}).strict()).max(100)}).strict().superRefine((n,a)=>{n.state==="ready"&&(n.support!=="supported"||n.reasons.length)&&a.addIssue({code:"custom",message:"Ready operations must be supported with no blockers."}),n.state!=="ready"&&!n.reasons.length&&a.addIssue({code:"custom",message:"Unavailable operations must explain the next step."})});const ne=new WeakMap;function nn(n,a,t){const s=JSON.stringify([a?.activeProfile,a?.profile?.id,t]),l=n?ne.get(n)?.get(s):void 0,[g,o]=h.useState(null),[i,p]=h.useState(null),[c,d]=h.useState(!1),[v,u]=h.useState(0),_=a?.state==="signed_in"?g?.key===s&&g.connection===n?g.value:l:void 0;h.useEffect(()=>{if(!n||!t||a?.state!=="signed_in")return;const w=new AbortController;d(!0),p(null);async function S(){const C=[],P=new Set;let j;do{const f=en.parse(await Z(n,"/v1/training/evaluation-workspace",{method:"POST",body:JSON.stringify({teamId:t,operation:"projects",value:{cursor:j}}),signal:w.signal}));if(f.teamId!==t)throw new Error("The hosted project workspace changed. Refresh connections.");if(C.push(...f.projects.filter(A=>!A.archived)),j=f.nextCursor??void 0,j&&P.has(j))throw new Error("Project pagination stalled. Refresh connections.");j&&P.add(j)}while(j&&!w.signal.aborted);if(w.signal.aborted)return;let k=ne.get(n);k||(k=new Map,ne.set(n,k));const T=k.get(s)?.selected,N=T&&C.some(f=>f.id===T)?T:C.length===1?C[0].id:"",x={projects:C,selected:N};k.set(s,x),o({key:s,connection:n,value:x})}return S().catch(C=>{w.signal.aborted||p(C instanceof Error?C.message:"Unable to list hosted projects.")}).finally(()=>{w.signal.aborted||d(!1)}),()=>w.abort()},[n,s,t,a?.state,v]);const L=h.useCallback(w=>{if(!n)return;const S=ne.get(n)?.get(s);if(!S||!S.projects.some(P=>P.id===w))return;const C={...S,selected:w};ne.get(n).set(s,C),o({key:s,connection:n,value:C})},[n,s]);return{projects:_?.projects??[],projectId:_?.selected??"",select:L,error:i,loading:c,refresh:()=>u(w=>w+1)}}const ge=new WeakMap;function sn(n){const[a,t]=h.useState(null),[s,l]=h.useState(null),[g,o]=h.useState(!1),i=h.useRef(0),p=h.useRef(null),c=h.useCallback(async()=>{if(!n||p.current)return;const d=new AbortController;p.current=d;const v=i.current;o(!0);try{const u=await Z(n,"/v1/native-history/collector",{method:"POST",body:JSON.stringify({command:"inventory"}),signal:d.signal});if(v!==i.current||d.signal.aborted)return;ge.set(n,u),t({connection:n,value:u}),l(null)}catch(u){v===i.current&&!d.signal.aborted&&l(u instanceof Error?u.message:"Unable to read agent connections.")}finally{p.current===d&&(p.current=null),v===i.current&&o(!1)}},[n]);return h.useEffect(()=>{i.current++,l(null),c();const d=window.setInterval(()=>{document.hidden||c()},1e4),v=()=>{c()};return window.addEventListener("focus",v),()=>{i.current++,p.current?.abort(),p.current=null,window.clearInterval(d),window.removeEventListener("focus",v)}},[c]),{inventory:a?.connection===n?a.value:n?ge.get(n)??null:null,loading:g,error:s,refresh:c}}Se.extend(Re);function tn({agent:n,inventory:a,connection:t,account:s,teamId:l,projects:g,projectId:o,onRefresh:i,learningUrl:p}){const c=a?.sources.filter(r=>r.source===n.id)??[],[d,v]=h.useState(c.length===1?c[0].instanceId:""),[u,_]=h.useState(o),[L,w]=h.useState("week"),[S,C]=h.useState(!0),[P,j]=h.useState(null),[k,T]=h.useState(!1),[N,x]=h.useState(null),f=c.find(r=>r.instanceId===d)??(!d&&c.length===1?c[0]:void 0),A=a?.collector.connections.filter(r=>r.source===n.id)??[],K=s?.baseUrl??s?.activeProfile?.baseUrl,z=s?.apiBaseUrl;async function H(r,I){if(!(!t||k||P)){T(!0),x(null);try{const O=await Z(t,"/v1/native-history/collector",{method:"POST",body:JSON.stringify({command:r,...I?{connectionId:I}:{},...r==="connect"?{setup:{sourceInstanceId:f?.instanceId,teamId:l,projectId:u,accountBaseUrl:K,apiBaseUrl:z,range:L,keepSyncing:S}}:{}})});O.command?j(O.command):await i()}catch(O){x(O instanceof Error?O.message:"Unable to update this connection.")}finally{T(!1)}}}const m=k||P!==null;return e.jsxs("div",{className:"agent-conversation-setup provider-dialog-body",children:[e.jsxs("p",{children:["Sync saved ",n.name," conversations to an existing OpenPond project. Setup uses the OpenPond CLI and browser authorization."]}),A.map(r=>e.jsxs("section",{className:"agent-retained-connection","aria-label":`${n.name} sync connection`,children:[e.jsx("strong",{children:ke(r,a.collector)}),e.jsxs("span",{children:["Project:"," ",r.teamId===l?g.find(I=>I.id===r.projectId)?.content.name??r.projectId:r.projectId," ","· Team: ",r.teamId]}),e.jsx("small",{children:r.accountBaseUrl??"Hosted destination"}),e.jsx("small",{className:"agent-source-path",children:r.sourceRoot}),e.jsxs("span",{children:[r.admitted," tasks imported · ",r.queued," updates queued"]}),r.backfill.total>0&&r.backfill.stage!=="complete"?e.jsxs(e.Fragment,{children:[e.jsx("progress",{"aria-label":"History import progress",value:r.backfill.admitted+r.backfill.skipped,max:r.backfill.total}),e.jsxs("small",{children:[r.backfill.admitted+r.backfill.skipped," of"," ",r.backfill.total," conversations processed"]})]}):null,e.jsx("small",{children:r.lastAdmissionAt?`Last synced ${Se(r.lastAdmissionAt).fromNow()}`:"No uploads acknowledged yet"}),r.error?e.jsx("p",{role:"alert",children:r.error}):null,e.jsxs("div",{className:"settings-button-row",children:[r.state==="disconnected"?e.jsx("button",{type:"button",disabled:m,onClick:()=>{H("reconnect",r.id)},children:"Reconnect"}):e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",disabled:m,onClick:()=>{H(r.state==="paused"?"resume":"pause",r.id)},children:r.state==="paused"?"Resume":"Pause"}),e.jsx("button",{type:"button",disabled:m,onClick:()=>{window.confirm("Disconnect this conversation source? Imported data stays in its project.")&&H("disconnect",r.id)},children:"Disconnect"})]}),r.destinationLinks.tasks?e.jsx("a",{href:r.destinationLinks.tasks,target:"_blank",rel:"noreferrer",children:"View tasks"}):null,r.destinationLinks.conversations?e.jsx("a",{href:r.destinationLinks.conversations,target:"_blank",rel:"noreferrer",children:"View conversations"}):null]})]},r.id)),e.jsxs("form",{onSubmit:r=>{r.preventDefault(),H("connect")},className:"agent-sync-form",children:[e.jsx("h3",{children:A.length?"Add another connection":"Connect conversations"}),e.jsxs("label",{className:"agent-source-field",children:["Source installation",e.jsxs("select",{"aria-label":"Source installation",value:f?.instanceId??"",disabled:m,onChange:r=>v(r.target.value),children:[e.jsx("option",{value:"",children:"Select installation"}),c.map(r=>e.jsxs("option",{value:r.instanceId,disabled:!r.available||!r.capabilities.history,children:[r.root,r.available&&r.capabilities.history?"":" (unavailable)"]},r.instanceId))]})]}),f?.reason?e.jsx("small",{children:f.reason}):null,c.some(r=>r.available&&r.capabilities.history)?null:e.jsxs("small",{children:["No readable conversation history found."," ",n.provider?"Use Agent setup to check the installation, or create a conversation in this agent first.":"Open this agent and create a conversation, then refresh connections."]}),e.jsxs("label",{children:["Project",e.jsxs("select",{"aria-label":"Project",value:u,disabled:m||!l,onChange:r=>_(r.target.value),children:[e.jsx("option",{value:"",children:"Select project"}),g.map(r=>e.jsx("option",{value:r.id,children:r.content.name},r.id))]})]}),e.jsxs("label",{children:["Import history",e.jsxs("select",{"aria-label":"Import history",value:L,disabled:m,onChange:r=>w(r.target.value),children:[e.jsx("option",{value:"day",children:"Last day"}),e.jsx("option",{value:"week",children:"Last week"}),e.jsx("option",{value:"all",children:"All history"})]})]}),e.jsxs("label",{className:"agent-sync-checkbox",children:[e.jsx("input",{type:"checkbox",checked:S,disabled:m,onChange:r=>C(r.target.checked)}),"Keep syncing new conversations"]}),s?.state!=="signed_in"||!l?e.jsx("small",{children:"Sign in and select a default team in Account settings to choose a hosted project."}):null,e.jsx("button",{type:"submit",className:"agent-connect-button",disabled:m||!f?.available||!f.capabilities.history||!g.some(r=>r.id===u)||!l||!K||!z||s?.state!=="signed_in",children:k?"Opening setup…":"Connect conversations"})]}),p?e.jsx("a",{className:"agent-learning-link",href:p,target:"_blank",rel:"noreferrer",children:"Configure continual learning in Console"}):null,a?e.jsxs("details",{children:[e.jsx("summary",{children:"CLI setup"}),e.jsxs("small",{className:"agent-source-path",children:["Importer directory: ",a.directory]}),e.jsx("code",{children:a.statusCommand})]}):null,N?e.jsx("p",{role:"alert",children:N}):null,P&&t?e.jsx(Ae,{connection:t,command:P,onComplete:()=>{j(null),i()},onClose:()=>{j(null),i()}}):null]})}const U=n=>JSON.stringify([n.origin,n.sourceInstanceId]),xe=n=>({id:n.id,revision:n.revision,contentHash:n.contentHash});function Q(n,a,t,s,l){return Z(n,`/v1/conversation-learning/${t}?${new URLSearchParams({teamId:a})}`,{method:s===void 0?"GET":"POST",...s===void 0?{}:{body:JSON.stringify(s)},signal:l})}function an(n,a,t,s){const l=_e(),g=["native-conversation-learning",n?.serverUrl,t,a];return{...Le({queryKey:g,enabled:!!(n&&a&&s),queryFn:({signal:i})=>Q(n,a,"options",void 0,i),staleTime:15e3,refetchInterval:3e4}),refresh:()=>l.invalidateQueries({queryKey:g})}}function Ce(n,a,t,s,l){return Q(n,a,"policies",{...t?{id:t.id}:{},expectedRevision:t?.revision??0,configuration:s,enabled:l})}function le(n,a,t=[]){const s=a?.configuration;return{projectId:n,name:s?.name??"Continual learning",mode:s?.mode??"activate",definition:s?.definition??null,configurationId:s?.configuration?.id??"",trainingPolicyId:s?.learningPolicy?.id??"",graderIds:[],sourceKeys:[...new Set([...s?.sources.filter(l=>l.enabled).map(U)??[],...t.map(U)])],adapter:s?.adapter??{kind:"complete_text",qualitativeOnly:!0},generator:s?.generator??null,graderSelection:s?.graderSelection??(a?{mode:"manual"}:{mode:"auto",modelId:"gpt-6-luna",sampleSize:8,maximumOutputTokens:2048,maximumSpendUsd:1}),schedule:s?.schedule??{timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,hour:2,minute:0,endHour:6,endMinute:0},limits:s?.limits??{perCycleUsd:5,dailyUsd:5,monthlyUsd:25,gradeUsd:.2,maximumTasks:10,minimumExamples:5,maxGpuSeconds:10800,maximumAttempts:2,lookbackDays:30},exceptions:s?.exceptions??"block",minimumScore:s?.minimumScore??.8,selection:s?.selection??{maximumSourceShare:1,maximumFailureShare:1,maximumLengthShare:1,replayFraction:.2,auditFraction:.1},acceptance:s?.acceptance??{minimumCasesPerCheck:20,minimumImprovement:.05,windowCasesPerCheck:20},failurePolicy:s?.failurePolicy??{pauseAfterConsecutiveFailures:3},...s?.serving?{serving:s.serving}:{serving:{targetId:"",canarySeconds:120,rollbackOnRuntimeFailure:!0}}}}function ce(n,a){const t=n?.configurations.find(s=>s.id===a);return n?.trainingPolicies.filter(s=>s.modelProjectId===t?.portableProjectId&&s.training.recipe.id===`model-recipe-${t?.etag}`&&!s.id.startsWith("conversation-training-"))??[]}async function rn(n,a,t,s,l,g){const o=s.configurations.find(j=>j.id===t.configurationId),i=ce(s,t.configurationId).find(j=>j.id===t.trainingPolicyId);if(!t.name.trim())throw new Error("Enter a policy name.");if(!s.projects.some(j=>j.id===t.projectId))throw new Error("This owned Project is unavailable for continual learning.");if(t.configurationId&&(!o||!s.projects.find(j=>j.id===t.projectId)?.configurationIds.includes(o.id)))throw new Error("Choose a model configuration attached to this Project.");if(t.mode!=="evaluate"&&(!o||!i))throw new Error("Choose an owned model and its reviewed training setup.");if(t.limits.perCycleUsd>t.limits.dailyUsd||t.limits.dailyUsd>t.limits.monthlyUsd)throw new Error("Daily and monthly spending limits must cover the run limit.");if(t.limits.minimumExamples>t.limits.maximumTasks-Math.floor(t.limits.maximumTasks*(t.selection?.replayFraction??0)))throw new Error("Leave capacity for the minimum new examples after replay.");const p=s.sources.filter(j=>j.projectId===t.projectId&&t.sourceKeys.includes(U(j)));if(!p.length)throw new Error("Select a source agent for this Project.");const c=[...(l?.configuration.sources??[]).filter(j=>!p.some(k=>U(k)===U(j))).map(j=>({...j,enabled:!1})),...p.map(j=>({origin:j.origin,sourceInstanceId:j.sourceInstanceId,enabled:!0}))];let d=t.definition;if(o&&(l?.configuration.configuration?.id!==o.id||l.configuration.configuration.expectedEtag!==o.etag))d=await Q(n,a,"definitions",{projectId:t.projectId,configuration:{id:o.id,expectedRevision:o.revision,expectedEtag:o.etag}});else if(t.graderIds.length){const j=s.graders.flatMap(k=>k&&t.graderIds.includes(k.id)?[xe(k)]:[]);d=await Q(n,a,"definitions",{projectId:t.projectId,graders:j})}if(!d)throw new Error("Select evaluation rubrics or an existing task definition.");let v=t.serving;const u=s.servingTargets.find(j=>j.id===v?.targetId);if(t.mode==="activate"&&v?.targetId&&(!u||!u.enabled||u.projectId!==t.projectId))throw new Error("Select an available serving target in this Project.");if(t.mode==="activate"&&(!v?.targetId||u?.hostedPonder)&&(v={targetId:(await Q(n,a,"serving-targets",{action:"ensure_hosted_ponder",projectId:t.projectId,bindingId:s.ponderBindingId})).id,canarySeconds:v?.canarySeconds??120,rollbackOnRuntimeFailure:!0}),t.mode==="activate"&&!v?.targetId)throw new Error("Choose a serving target, or enable the policy to register hosted Ponder.");const{sourceKeys:_,configurationId:L,trainingPolicyId:w,graderIds:S,...C}=t,P={...C,name:t.name.trim(),definition:d,sources:c,configuration:o?{id:o.id,expectedRevision:o.revision,expectedEtag:o.etag}:null,learningPolicy:i?xe(i):null,...t.mode==="activate"?{serving:v}:{}};return t.mode!=="activate"&&delete P.serving,t.mode==="evaluate"&&delete P.acceptance,Ce(n,a,l,P,g)}function ln({draft:n,options:a,loading:t,onChange:s}){const l=a?.sources.filter(c=>c.projectId===n.projectId)??[],g=l.filter(c=>["active","paused"].includes(c.state)),o=g.length>0&&g.every(c=>n.sourceKeys.includes(U(c))),i=c=>s({...n,sourceKeys:c}),p=a?.graders.flatMap(c=>c?[c]:[])??[];return e.jsxs(e.Fragment,{children:[e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Source agents"}),e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:o,disabled:!g.length,ref:c=>{c&&(c.indeterminate=!o&&g.some(d=>n.sourceKeys.includes(U(d))))},onChange:c=>i(c.target.checked?[...new Set([...n.sourceKeys,...g.map(U)])]:n.sourceKeys.filter(d=>!g.some(v=>U(v)===d)))}),"Select all"," ",e.jsxs("small",{children:["(",l.filter(c=>n.sourceKeys.includes(U(c))).length," selected)"]})]}),e.jsxs("div",{className:"agent-learning-options","aria-label":"Source agents",children:[l.map(c=>{const d=U(c),v=n.sourceKeys.includes(d),u=ae.find(L=>L.id===(c.origin.startsWith("native_")?"openpond_chat":c.origin)),_=c.origin==="native_chat"?"Ponder Pal Chat":c.origin==="native_work"?"Ponder Pal Work":u?.name??c.name;return e.jsxs("label",{className:"agent-learning-option",children:[e.jsx("input",{type:"checkbox",checked:v,disabled:!v&&!["active","paused"].includes(c.state),onChange:L=>i(L.target.checked?[...new Set([...n.sourceKeys,d])]:n.sourceKeys.filter(w=>w!==d))}),u?e.jsx("img",{src:u.icon,alt:""}):null,e.jsxs("span",{children:[_,e.jsx("small",{children:c.sourceInstanceId?c.name===c.origin?"Local connection":c.name:c.origin.startsWith("native_")?"Hosted conversations":"Uploaded history"})]}),e.jsx("small",{children:c.state})]},d)}),l.length?null:e.jsx("p",{role:"status",children:t?"Fetching source agents…":"Connect or import an agent into this Project first."})]}),e.jsx("p",{children:"Paused agents can use uploaded conversations. Selecting them leaves collection paused."})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Evaluation rubrics"}),n.configurationId?e.jsx("p",{children:"The training configuration pins the task definition and its rubrics. Choose grader selection in Preparation."}):e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",disabled:!p.length,checked:p.length>0&&p.every(c=>n.graderIds.includes(c.id)),onChange:c=>s({...n,graderIds:c.target.checked?p.map(d=>d.id):[]})}),"Select all ",e.jsxs("small",{children:["(",n.graderIds.length," selected)"]})]}),e.jsxs("div",{className:"agent-learning-options","aria-label":"Evaluation rubrics",children:[p.map(c=>e.jsxs("label",{className:"agent-learning-option",children:[e.jsx("input",{type:"checkbox",checked:n.graderIds.includes(c.id),onChange:d=>s({...n,graderIds:d.target.checked?[...n.graderIds,c.id]:n.graderIds.filter(v=>v!==c.id)})}),e.jsxs("span",{children:[c.name,e.jsxs("small",{children:["Version ",c.revision]})]})]},`${c.id}:${c.revision}`)),p.length?null:e.jsx("p",{role:"status",children:t?"Fetching evaluation rubrics…":"No owned evaluation rubrics are available."})]}),n.definition&&!n.graderIds.length?e.jsx("p",{children:"The saved task definition and rubrics remain unchanged."}):null,e.jsxs("label",{children:["Existing task definition",e.jsxs("select",{value:n.definition?.id??"",onChange:c=>{const d=a?.definitions.find(v=>v.id===c.target.value);s({...n,definition:d?{id:d.id,revision:d.revision,contentHash:d.contentHash}:null,graderIds:[]})},children:[e.jsx("option",{value:"",children:"Select a definition or choose rubrics above"}),n.definition&&!a?.definitions.some(c=>c.id===n.definition?.id)?e.jsx("option",{value:n.definition.id,children:"Saved task definition"}):null,a?.definitions.map(c=>e.jsxs("option",{value:c.id,children:[c.name," (version ",c.revision,")"]},c.id))]})]})]}),e.jsxs("label",{children:["Minimum verified score",e.jsx("input",{type:"number",min:0,max:1,step:.01,value:n.minimumScore,onChange:c=>s({...n,minimumScore:Number(c.target.value)})})]})]})]})}function on({draft:n,options:a,loading:t,onChange:s}){const l=a?.projects.find(i=>i.id===n.projectId)?.configurationIds??[],g=ce(a,n.configurationId),o=n.graderSelection??{mode:"manual"};return e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Mode",e.jsxs("select",{value:n.mode,onChange:i=>s({...n,mode:i.target.value}),children:[e.jsx("option",{value:"evaluate",children:"Evaluate only"}),e.jsx("option",{value:"train",children:"Train automatically, approve candidate"}),e.jsx("option",{value:"activate",children:"Train and activate automatically"})]})]}),e.jsxs("label",{children:["Model to train",e.jsxs("select",{value:n.configurationId,onChange:i=>{const p=i.target.value,c=ce(a,p);s({...n,configurationId:p,trainingPolicyId:c.length===1?c[0].id:"",adapter:p?{kind:"reference_text",inputPointer:"/prompt",match:"contained"}:{kind:"complete_text",qualitativeOnly:!0}})},children:[e.jsx("option",{value:"",children:t?"Fetching configurations…":"Select configuration"}),a?.configurations.filter(i=>l.includes(i.id)).map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),n.mode!=="evaluate"?e.jsxs("label",{children:["Reviewed training setup",e.jsxs("select",{value:n.trainingPolicyId,onChange:i=>s({...n,trainingPolicyId:i.target.value}),children:[e.jsx("option",{value:"",children:"Select reviewed setup"}),g.map(i=>e.jsxs("option",{value:i.id,children:["Reviewed setup (version ",i.revision,")"]},i.id))]})]}):null,n.configurationId?e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Task construction",e.jsxs("select",{value:n.adapter.kind,onChange:i=>s({...n,adapter:i.target.value==="reference_text"?{kind:"reference_text",inputPointer:"/prompt",match:"contained"}:{kind:"complete_text",qualitativeOnly:!0}}),children:[e.jsx("option",{value:"reference_text",children:"Match a published executable task"}),e.jsx("option",{value:"complete_text",children:"Complete text context and calibrated judges"})]})]}),n.adapter.kind==="reference_text"?e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["Public task input field",e.jsx("input",{value:n.adapter.inputPointer,onChange:i=>s({...n,adapter:{kind:"reference_text",inputPointer:i.target.value,match:n.adapter.kind==="reference_text"?n.adapter.match:"contained"}})})]}),e.jsxs("label",{children:["Reference matching",e.jsxs("select",{value:n.adapter.match,onChange:i=>s({...n,adapter:{kind:"reference_text",inputPointer:n.adapter.kind==="reference_text"?n.adapter.inputPointer:"/prompt",match:i.target.value}}),children:[e.jsx("option",{value:"contained",children:"Contained"}),e.jsx("option",{value:"exact",children:"Exact"})]})]})]}):null,e.jsxs("label",{children:["Grader selection",e.jsxs("select",{value:o.mode,onChange:i=>s({...n,graderSelection:i.target.value==="auto"?{mode:"auto",modelId:"gpt-6-luna",sampleSize:8,maximumOutputTokens:2048,maximumSpendUsd:1}:{mode:"manual"}}),children:[e.jsx("option",{value:"auto",children:"Choose compatible rubrics automatically"}),e.jsx("option",{value:"manual",children:"Use the pinned rubrics"})]})]}),o.mode==="auto"?e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Selection model",e.jsxs("select",{value:o.modelId,onChange:i=>s({...n,graderSelection:{...o,modelId:i.target.value}}),children:[a?.generators.some(i=>i.id===o.modelId)?null:e.jsx("option",{value:o.modelId,children:o.modelId}),a?.generators.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),e.jsx("div",{className:"agent-learning-columns",children:[["sampleSize","Sample examples",1,30],["maximumOutputTokens","Output token limit",256,4096],["maximumSpendUsd","Selection spending limit ($)",.01,1e5]].map(([i,p,c,d])=>e.jsxs("label",{children:[p,e.jsx("input",{type:"number",min:c,max:d,step:i==="maximumSpendUsd"?.01:1,value:o[i],onChange:v=>s({...n,graderSelection:{...o,[i]:Number(v.target.value)}})})]},i))})]}):null]}):null,e.jsxs("label",{children:["Answer improvement model",e.jsxs("select",{value:n.generator?.modelId??"",onChange:i=>s({...n,generator:i.target.value?{modelId:i.target.value,maximumOutputTokens:n.generator?.maximumOutputTokens??2048,maximumSpendUsd:n.generator?.maximumSpendUsd??.1}:null}),children:[e.jsx("option",{value:"",children:"Use recorded answers only"}),a?.generators.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),n.generator?e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["Per improved answer limit ($)",e.jsx("input",{type:"number",min:.01,step:.01,value:n.generator.maximumSpendUsd,onChange:i=>s({...n,generator:{...n.generator,maximumSpendUsd:Number(i.target.value)}})})]}),e.jsxs("label",{children:["Output token limit",e.jsx("input",{type:"number",min:256,max:16384,value:n.generator.maximumOutputTokens,onChange:i=>s({...n,generator:{...n.generator,maximumOutputTokens:Number(i.target.value)}})})]})]}):null,n.mode==="activate"?e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Serving authorization"}),e.jsxs("label",{children:["Serving target",e.jsxs("select",{value:n.serving?.targetId??"",onChange:i=>s({...n,serving:{targetId:i.target.value,canarySeconds:n.serving?.canarySeconds??120,rollbackOnRuntimeFailure:!0}}),children:[e.jsx("option",{value:"",children:"Ponder in this Project"}),a?.servingTargets.filter(i=>i.projectId===n.projectId&&i.enabled).map(i=>e.jsx("option",{value:i.id,children:i.hostedPonder?"Hosted Ponder":`${i.role} / ${i.roleTargetId}`},i.id))]})]}),e.jsxs("label",{children:["Runtime canary (seconds)",e.jsx("input",{type:"number",min:30,max:600,value:n.serving?.canarySeconds??120,onChange:i=>s({...n,serving:{targetId:n.serving?.targetId??"",canarySeconds:Number(i.target.value),rollbackOnRuntimeFailure:!0}})})]}),e.jsx("p",{children:"Saving authorizes the selected target. Failed runtime checks restore its prior model. Training runs only within the saved policy's schedule and limits."})]}):null]})}const ve=(n,a)=>n===void 0||a===void 0?"":`${String(n).padStart(2,"0")}:${String(a).padStart(2,"0")}`;function cn({draft:n,onChange:a}){const t=(s,l)=>a({...n,limits:{...n.limits,[s]:l}});return e.jsxs(e.Fragment,{children:[e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Run window"}),e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["From",e.jsx("input",{type:"time",required:!0,value:ve(n.schedule.hour,n.schedule.minute),onChange:s=>{const[l,g]=s.target.value.split(":").map(Number);a({...n,schedule:{...n.schedule,hour:l,minute:g}})}})]}),e.jsxs("label",{children:["Until",e.jsx("input",{type:"time",value:ve(n.schedule.endHour,n.schedule.endMinute),onChange:s=>{const[l,g]=s.target.value.split(":").map(Number),{endHour:o,endMinute:i,...p}=n.schedule;a({...n,schedule:s.target.value?{...p,endHour:l,endMinute:g}:p})}})]})]}),e.jsxs("label",{children:["Timezone",e.jsx("input",{required:!0,value:n.schedule.timezone,onChange:s=>a({...n,schedule:{...n.schedule,timezone:s.target.value}})})]}),e.jsx("p",{children:"Queued learning starts within this window. A run already started may finish afterward."})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Maximum spending"}),e.jsx("p",{children:"These are limits, not prices. Evaluation, answer improvements and training count toward them."}),e.jsx("div",{className:"agent-learning-columns",children:[["perCycleUsd","Per run ($)"],["dailyUsd","Per day ($)"],["monthlyUsd","Per month ($)"]].map(([s,l])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",required:!0,min:.01,max:1e5,step:.01,value:n.limits[s],onChange:g=>t(s,Number(g.target.value))})]},s))})]}),e.jsxs("details",{children:[e.jsx("summary",{children:"Advanced limits"}),e.jsxs("div",{className:"agent-learning-columns",children:[[["gradeUsd","Per evaluation ceiling ($)",0,1e3,.01],["maximumTasks","Maximum tasks",1,200,1],["minimumExamples","Minimum training examples",1,200,1],["maximumAttempts","Maximum correction attempts",1,5,1],["lookbackDays","Uploaded history window (days)",1,30,1]].map(([s,l,g,o,i])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",required:!0,min:g,max:o,step:i,value:n.limits[s],onChange:p=>t(s,Number(p.target.value))})]},s)),e.jsxs("label",{children:["Maximum GPU session (hours)",e.jsx("input",{type:"number",required:!0,min:.01,max:3,step:.01,value:n.limits.maxGpuSeconds/3600,onChange:s=>t("maxGpuSeconds",Math.round(Number(s.target.value)*3600))})]}),e.jsxs("label",{children:["Pause after failed cycles",e.jsx("input",{type:"number",required:!0,min:1,max:20,value:n.failurePolicy?.pauseAfterConsecutiveFailures??3,onChange:s=>a({...n,failurePolicy:{pauseAfterConsecutiveFailures:Number(s.target.value)}})})]})]}),e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:n.exceptions==="eligible_remainder",onChange:s=>a({...n,exceptions:s.target.checked?"eligible_remainder":"block"})}),"Use the independently verified remainder when exceptions occur"]})]}),e.jsxs("details",{children:[e.jsx("summary",{children:"Training data balance"}),e.jsx("div",{className:"agent-learning-columns",children:[["maximumSourceShare","Maximum from one agent",100],["maximumFailureShare","Maximum from one error type",100],["maximumLengthShare","Maximum from one conversation length",100],["replayFraction","Previously learned examples",50],["auditFraction","Examples checked for quality",100]].map(([s,l,g])=>e.jsxs("label",{children:[l," (%)",e.jsx("input",{type:"number",min:s.startsWith("maximum")?1:0,max:g,value:Math.round((n.selection?.[s]??0)*100),onChange:o=>a({...n,selection:{maximumSourceShare:1,maximumFailureShare:1,maximumLengthShare:1,replayFraction:.2,auditFraction:.1,...n.selection,[s]:Number(o.target.value)/100}})})]},s))})]}),n.mode!=="evaluate"?e.jsxs("details",{children:[e.jsx("summary",{children:"Checks before using the trained model"}),e.jsx("div",{className:"agent-learning-columns",children:[["windowCasesPerCheck","New examples per quality check",2,1e4],["minimumCasesPerCheck","Minimum paired examples",2,1e4],["minimumImprovement","Required improvement",1e-4,1]].map(([s,l,g,o])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",min:g,max:o,step:s==="minimumImprovement"?.01:1,value:n.acceptance?.[s]??g,onChange:i=>a({...n,acceptance:{minimumCasesPerCheck:20,windowCasesPerCheck:20,minimumImprovement:.05,...n.acceptance,[s]:Number(i.target.value)}})})]},s))}),e.jsx("p",{children:"Current and trained models use the same unseen examples. Insufficient evidence keeps the current model active."})]}):null]})}function dn({connection:n,teamId:a,projectId:t,projectName:s,initialPolicy:l,bindings:g,query:o,onClose:i}){const[p,c]=h.useState(l),[d,v]=h.useState(()=>le(t,l,l?[]:g)),[u,_]=h.useState(!!o.data),[L,w]=h.useState(!1),[S,C]=h.useState(!1),[P,j]=h.useState(null),[k,T]=h.useState(l?.status==="enabled"||!l),[N,x]=h.useState("sources"),[f,A]=h.useState(!1),[K,z]=h.useState(null),H=h.useRef(u);H.current=u;const m=o.data?.policies.filter(y=>y.configuration.projectId===t)??[];h.useEffect(()=>{if(!o.data||H.current)return;const y=o.data.policies.find(M=>M.configuration.projectId===t&&M.status==="enabled")??o.data.policies.find(M=>M.configuration.projectId===t);c(y),v(le(t,y,y?[]:g)),T(y?.status==="enabled"||!y),_(!0)},[o.data,t,g]);const r=()=>{S||(L?A(!0):i())},I=de(r);function O(y){const M=m.find(B=>B.id===y);M&&(c(M),v(le(t,M)),T(M.status==="enabled"),w(!1),z(null),A(!1),j(null))}function R(y){v(y),w(!0)}async function G(){if(!(!o.data||!u||S||o.isError)){C(!0),j(null);try{await rn(n,a,d,o.data,p,k),await o.refresh(),w(!1),i()}catch(y){j(y instanceof Error?y.message:"Unable to save continual learning.")}finally{C(!1)}}}const W={draft:d,options:o.data,loading:o.isPending,onChange:R};return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:r,children:e.jsxs("section",{ref:I,className:"git-dialog provider-details-dialog agent-learning-dialog",role:"dialog","aria-modal":"true","aria-label":"Continual learning",onMouseDown:y=>y.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close","aria-label":"Close continual learning",disabled:S,onClick:r,children:e.jsx(te,{size:16})}),e.jsx("div",{className:"provider-dialog-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:"Continual learning"}),e.jsx("span",{children:s})]})}),f?e.jsxs("div",{className:"agent-learning-discard",role:"alert",children:[e.jsx("p",{children:"Discard unsaved policy changes?"}),e.jsxs("div",{className:"settings-button-row",children:[e.jsx("button",{type:"button",onClick:()=>{A(!1),z(null)},children:"Keep editing"}),e.jsx("button",{type:"button",onClick:()=>K?O(K):i(),children:"Discard changes"})]})]}):null,m.length>1?e.jsxs("label",{className:"agent-learning-policy-picker",children:["Learning policy",e.jsx("select",{disabled:S,value:p?.id??"",onChange:y=>{L?(z(y.target.value),A(!0)):O(y.target.value)},children:m.map(y=>e.jsxs("option",{value:y.id,children:[y.configuration.name," (",y.status,")"]},y.id))})]}):null,e.jsx("div",{className:"surface-tabs provider-agent-tabs",role:"tablist","aria-label":"Continual learning settings",children:[["sources","Sources & rubrics"],["preparation","Preparation"],["schedule","Run window & budget"]].map(([y,M])=>e.jsx("button",{type:"button",id:`learning-tab-${y}`,role:"tab","aria-selected":N===y,"aria-controls":`learning-panel-${y}`,tabIndex:N===y?0:-1,onClick:()=>x(y),onKeyDown:B=>{const Y=["sources","preparation","schedule"],V=Y.indexOf(y);if(["ArrowLeft","ArrowRight","Home","End"].includes(B.key)){B.preventDefault();const ee=Y[B.key==="Home"?0:B.key==="End"?2:(V+(B.key==="ArrowRight"?1:2))%3];x(ee),document.getElementById(`learning-tab-${ee}`)?.focus()}},children:M},y))}),e.jsxs("form",{className:"agent-learning-form",onSubmit:y=>{y.preventDefault(),G()},children:[e.jsx("fieldset",{disabled:!u||S,children:e.jsxs("label",{children:["Policy name",e.jsx("input",{required:!0,maxLength:200,value:d.name,onChange:y=>R({...d,name:y.target.value})})]})}),e.jsx("div",{id:`learning-panel-${N}`,role:"tabpanel","aria-labelledby":`learning-tab-${N}`,children:e.jsx("fieldset",{disabled:!u||S,children:N==="sources"?e.jsx(ln,{...W}):N==="preparation"?e.jsx(on,{...W}):e.jsx(cn,{...W})})}),o.isPending?e.jsx("p",{role:"status",children:"Fetching available sources, rubrics and models…"}):null,o.isError?e.jsxs("p",{role:"alert",children:[o.error.message," ",e.jsx("button",{type:"button",onClick:()=>{o.refetch()},children:"Retry settings"})]}):null,P?e.jsx("p",{role:"alert",children:P}):null,e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:k,disabled:!u||S,onChange:y=>{T(y.target.checked),w(!0)}}),"Enable this policy after saving"]}),e.jsx("p",{children:"Saving enables only the reviewed sources, schedule and limits. No training is dispatched by opening this dialog."}),e.jsxs("div",{className:"settings-button-row agent-learning-footer",children:[e.jsx("button",{type:"button",disabled:S,onClick:r,children:"Cancel"}),e.jsx("button",{type:"submit",className:"primary",disabled:!u||!o.data||o.isError||S||!d.sourceKeys.length,children:S?"Saving…":k?"Save and enable":"Save paused"})]})]})]})})}function un({agent:n,inventory:a,connection:t,teamId:s,projectId:l,projectName:g,query:o,signedIn:i}){const[p,c]=h.useState(!1),[d,v]=h.useState(null),[u,_]=h.useState(!1),[L,w]=h.useState(null),[S,C]=h.useState(""),P=h.useMemo(()=>new Set(a?.collector.connections.filter(m=>m.source===n.id&&m.teamId===s&&m.projectId===l&&m.state!=="disconnected").map(m=>m.sourceInstanceId)??[]),[a,n.id,s,l]),j=o.data?.sources.filter(m=>m.projectId===l&&(n.id==="openpond_chat"?["native_chat","native_work"].includes(m.origin)&&m.sourceInstanceId===null:m.origin===n.id&&m.sourceInstanceId!==null&&P.has(m.sourceInstanceId)))??[],k=[...new Set(j.flatMap(m=>m.sourceInstanceId?[m.sourceInstanceId]:[]))],T=k.includes(S)?S:k[0],N=j.filter(m=>m.sourceInstanceId===null||m.sourceInstanceId===T).map(m=>({origin:m.origin,sourceInstanceId:m.sourceInstanceId,enabled:!0})),x=o.data?.policies.filter(m=>m.configuration.projectId===l)??[],f=x.filter(m=>m.status==="enabled"&&m.configuration.sources.some(r=>r.enabled&&N.some(I=>U(I)===U(r)))),A=f[0]??x.find(m=>m.status==="enabled")??x[0],K=!!(t&&s&&l&&i&&o.data?.projects.some(m=>m.id===l));async function z(m,r){if(!t||!s||!o.data)return;let I={...m.configuration,sources:m.configuration.sources.map(R=>N.some(G=>U(G)===U(R))?{...R,enabled:r}:R)};if(r)for(const R of N)I.sources.some(G=>U(G)===U(R))||I.sources.push(R);const O=o.data.servingTargets.find(R=>R.id===I.serving?.targetId);if(r&&I.mode==="activate"&&I.serving?.targetId&&(!O||!O.enabled||O.projectId!==l))throw new Error("Review the policy's serving target before adding a source.");if(r&&I.mode==="activate"&&(!I.serving?.targetId||O?.hostedPonder)){const R=await Q(t,s,"serving-targets",{action:"ensure_hosted_ponder",projectId:l,bindingId:o.data.ponderBindingId});I={...I,serving:{targetId:R.id,canarySeconds:I.serving?.canarySeconds??120,rollbackOnRuntimeFailure:!0}}}return Ce(t,s,m,I,I.sources.some(R=>R.enabled))}async function H(m){if(!u){_(!0),w(null);try{if(m){const r=x.find(I=>I.id===d);if(!r)throw new Error("Refresh the learning policy before joining.");await z(r,!0),v(null)}else for(const r of f)await z(r,!1);await o.refresh()}catch(r){w(r instanceof Error?r.message:"Unable to update this learning source."),await o.refresh()}finally{_(!1)}}}return e.jsxs("div",{className:"agent-learning-control",children:[k.length>1?e.jsxs("label",{children:["Learning connection",e.jsx("select",{"aria-label":`${n.name} learning connection`,value:T,disabled:u,onChange:m=>C(m.target.value),children:k.map(m=>e.jsx("option",{value:m,children:j.find(r=>r.sourceInstanceId===m)?.name??"Local connection"},m))})]}):null,e.jsxs("div",{className:"agent-learning-control-row",children:[e.jsxs("label",{className:"provider-toggle",children:[e.jsx("input",{type:"checkbox","aria-label":`${n.name} continual learning`,checked:f.length>0,disabled:!K||!N.length||o.isPending||o.isError||u,onChange:m=>{if(m.target.checked){const r=x.find(I=>I.status==="enabled");r?v(r.id):c(!0)}else H(!1)}}),e.jsx("span",{"aria-hidden":"true"})]}),e.jsx("button",{type:"button",className:"agent-learning-settings",disabled:!t||!s||!l||!i||u,onClick:()=>c(!0),children:"Continual learning"}),e.jsx("small",{children:o.isError?"Needs attention":o.isPending?"Loading…":f.length?"On schedule":x.length?"Paused":"Off"})]}),l&&!N.length&&o.data?e.jsx("small",{children:"Sync this agent to the selected Project to use its local connection."}):null,L?e.jsx("small",{role:"alert",children:L}):null,p&&t&&s?e.jsx(dn,{connection:t,teamId:s,projectId:l,projectName:g,initialPolicy:A,bindings:N,query:o,onClose:()=>c(!1)},l):null,d?e.jsx(pn,{policies:x.filter(m=>m.status==="enabled"),policyId:d,agentName:n.name,busy:u,error:L,onChoose:v,onClose:()=>{u||v(null)},onJoin:()=>{H(!0)}}):null]})}function pn({policies:n,policyId:a,agentName:t,busy:s,error:l,onChoose:g,onClose:o,onJoin:i}){const p=de(o),c=n.find(d=>d.id===a);return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:o,children:e.jsxs("section",{ref:p,className:"git-dialog agent-learning-join",role:"dialog","aria-modal":"true","aria-label":"Add learning source",onMouseDown:d=>d.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close",disabled:s,"aria-label":"Cancel",onClick:o,children:e.jsx(te,{size:16})}),e.jsxs("h2",{children:["Add ",t," to ",c?.configuration.name??"continual learning","?"]}),e.jsx("p",{children:"This agent will contribute conversations to the existing model, schedule and spending limits. Collection settings stay unchanged."}),n.length>1?e.jsxs("label",{children:["Existing policy",e.jsx("select",{value:a,disabled:s,onChange:d=>g(d.target.value),children:n.map(d=>e.jsx("option",{value:d.id,children:d.configuration.name},d.id))})]}):null,l?e.jsx("p",{role:"alert",children:l}):null,e.jsxs("div",{className:"settings-button-row",children:[e.jsx("button",{type:"button",disabled:s,onClick:o,children:"Cancel"}),e.jsx("button",{type:"button",className:"primary",disabled:s||!c,onClick:i,children:s?"Adding…":"Add agent"})]})]})})}function hn({connection:n,payload:a,onPayload:t,onToast:s}){const{inventory:l,error:g,loading:o,refresh:i}=sn(n),[p,c]=h.useState(null),[d,v]=h.useState(null),[u,_]=h.useState(!1),[L,w]=h.useState(0),S=`openpond-agent-cards:${JSON.stringify(a?.account.activeProfile??null)}`,[C,P]=h.useState(()=>{try{const b=JSON.parse(localStorage.getItem(S)??"null");return Array.isArray(b)?b.filter(E=>typeof E=="string"&&ae.some($=>$.id===E)):["oh_my_pi"]}catch{return["oh_my_pi"]}});h.useEffect(()=>{try{localStorage.setItem(S,JSON.stringify(C))}catch{}},[S,C]);const[j,k]=h.useState(!1),T=h.useRef(null);h.useEffect(()=>{if(!j)return;const b=$=>{T.current?.contains($.target)||k(!1)},E=$=>{$.key==="Escape"&&(k(!1),T.current?.querySelector("button")?.focus())};return document.addEventListener("pointerdown",b),document.addEventListener("keydown",E),()=>{document.removeEventListener("pointerdown",b),document.removeEventListener("keydown",E)}},[j]);const N=h.useRef({payload:a,onPayload:t});N.current={payload:a,onPayload:t};const x=h.useRef(!0);h.useEffect(()=>(x.current=!0,()=>{x.current=!1}),[]);const f=a?.account??null,A=a?.preferences.defaultTeamId??f?.accounts.find(b=>b.isActive)?.apiKeyAccess?.teamId??null,K=h.useCallback(b=>v(b),[]),z=h.useCallback(b=>{const E=N.current;x.current&&E.payload&&E.onPayload({...E.payload,providers:b})},[]),H=h.useCallback((b,E)=>{const $=N.current;if(!x.current||!$.payload)return;const ie=$.payload.providers,he={...$.payload,providers:{...ie,statuses:{...ie.statuses,[b]:E.statuses[b]},modelCaches:{...ie.modelCaches,[b]:E.modelCaches[b]}}};N.current={...$,payload:he},$.onPayload(he)},[]);Ve(n,a?.providers,H,L);const m=h.useCallback(b=>{const E=N.current;E.payload&&E.onPayload({...E.payload,preferences:b.preferences})},[]),r=Be({connection:n,onError:K,onPayload:t,onPreferences:m,onProviders:z,preferences:Te(a?.preferences),providers:a?.providers}),I=nn(n,f,A),{projects:O,projectId:R,loading:G,error:W}=I,y=an(n,A,JSON.stringify([f?.activeProfile??null,f?.profile?.id??null]),f?.state==="signed_in"),M=f?.baseUrl??f?.activeProfile?.baseUrl,B=M&&A?`${M.replace(/\/$/u,"")}/console/connections?${new URLSearchParams({teamId:A,...R?{project:R}:{}})}`:null;async function Y(b){if(!(!n||u)){_(!0),v(null);try{await Z(n,"/v1/native-history/collector",{method:"POST",body:JSON.stringify({command:b})}),await i()}catch(E){const $=E instanceof Error?E.message:"Importer action failed.";v($),s?.($,"error")}finally{_(!1)}}}const V=p?.provider,ee=V?a?.providers.statuses[V]:null,pe=p?e.jsx(tn,{agent:p,inventory:l,connection:n,account:f,teamId:A,projects:O,projectId:R,onRefresh:i,learningUrl:B},p.id):null;return e.jsxs("section",{className:"connected-agents-view","aria-label":"Connected agents",children:[e.jsxs("div",{className:"agent-connections-heading",children:[e.jsxs("div",{children:[e.jsx("h2",{children:"Connected agents"}),e.jsx("p",{children:"Use your installed agents and sync conversations with OpenPond."})]}),e.jsxs("div",{className:"agent-connections-actions",children:[e.jsx("button",{type:"button",disabled:o||!n,"aria-label":"Refresh agent connections",onClick:()=>{i(),I.refresh(),w(b=>b+1)},children:e.jsx(Oe,{size:15})}),e.jsxs("div",{className:"agent-more",ref:T,children:[e.jsx("button",{type:"button","aria-expanded":j,onClick:()=>k(b=>!b),children:"More agents"}),j?e.jsxs("div",{className:"agent-more-menu",children:[ae.filter(b=>C.includes(b.id)).map(b=>e.jsxs("button",{type:"button",onClick:()=>{P(E=>E.filter($=>$!==b.id)),k(!1)},children:[e.jsx(Ue,{size:14}),e.jsx("span",{children:b.name})]},b.id)),C.length===0?e.jsx("span",{children:"All agents shown"}):null]}):null]})]})]}),e.jsxs("label",{className:"agent-project-scope",children:["Project",e.jsxs("select",{"aria-label":"Connections project",value:R,disabled:!O.length,onChange:b=>I.select(b.target.value),children:[e.jsx("option",{value:"",children:G&&!O.length?"Fetching projects…":"Select project"}),O.map(b=>e.jsx("option",{value:b.id,children:b.content.name},b.id))]})]}),W?e.jsx("p",{role:"alert",children:W}):null,g?e.jsx("p",{role:"alert",children:g}):null,d?e.jsx("p",{role:"alert",children:d}):null,e.jsx("div",{className:"agent-connections-grid",children:ae.filter(b=>!C.includes(b.id)).map(b=>e.jsx(We,{agent:b,account:f,native:b.provider?a?.providers.statuses[b.provider]:null,inventory:l,projects:O,teamId:A,learningControl:e.jsx(un,{agent:b,inventory:l,connection:n,teamId:A,projectId:R,projectName:O.find(E=>E.id===R)?.content.name??"Selected Project",query:y,signedIn:f?.state==="signed_in"}),connected:!!n,onHide:()=>P(E=>[...E,b.id]),onManage:()=>c(b)},`${JSON.stringify([f?.activeProfile,f?.profile?.id])}:${A}:${R}:${b.id}`))}),l?e.jsxs("div",{className:"agent-importer-footer",children:[e.jsx("span",{children:l.collector.desiredState==="stopped"?"Importer stopped":l.collector.running?"Importer running":"Importer offline"}),e.jsx("button",{type:"button",disabled:u||!l.collector.running,onClick:()=>{Y("sync")},children:"Sync now"}),e.jsxs("button",{type:"button",disabled:u,onClick:()=>{Y(l.collector.running?"stop":"start")},children:[l.collector.running?"Stop":"Start"," importer"]}),e.jsxs("details",{children:[e.jsx("summary",{children:"CLI state"}),e.jsx("code",{children:l.statusCommand})]})]}):null,p&&V&&ee&&a?e.jsx(Je,{checkNativeProvider:r.checkNativeProvider,connection:n,account:f,codex:a.codex,providerId:V,providerBusy:r.providerBusy,settings:a.providers,status:ee,onClose:()=>c(null),onDeleteCredential:r.deleteProviderCredential,onRefreshModels:r.refreshProviderModels,onSaveConfig:r.saveProviderConfig,onSaveCredential:r.saveProviderCredential,onStartOpenAiSubscriptionAuth:r.startOpenAiSubscriptionAuth,onValidate:r.validateProvider,conversationPanel:pe}):p?e.jsx(mn,{agent:p,onClose:()=>c(null),children:pe}):null]})}function mn({agent:n,onClose:a,children:t}){const s=de(a);return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:a,children:e.jsxs("section",{ref:s,className:"git-dialog provider-details-dialog agent-setup-dialog",role:"dialog","aria-modal":"true","aria-label":`${n.name} connection`,onMouseDown:l=>l.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close","aria-label":"Close",onClick:a,children:e.jsx(te,{size:16})}),e.jsx("div",{className:"provider-dialog-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:n.name}),e.jsx("span",{children:"Conversation syncing"})]})}),t]})})}const gn=["For agents","Featured","Productivity","Developer tools"],xn=new Set(["slack","google","github","mcp"]);function Un({account:n,connection:a,defaultTeamId:t,onToast:s,payload:l,onPayload:g}){const[o,i]=h.useState("agents"),p=h.useId(),[c,d]=h.useState(null),[v,u]=h.useState(""),[_,L]=h.useState("For agents"),[w,S]=h.useState(()=>re()),[C,P]=h.useState(null),j=n?.baseUrl??n?.activeProfile?.baseUrl??null,k=vn(t,C),T=h.useMemo(()=>w.filter(x=>fn(x,_)).filter(x=>yn(x,v)),[_,v,w]);h.useEffect(()=>{let x=!0;return!a||o!=="apps"?(S(re()),P(null),()=>{x=!1}):(Fe.connectedAppStatus(a,{status:"all"}).then(f=>{x&&(S(f.apps),P(f.teamId?.trim()||null))}).catch(f=>{x&&(console.warn("Unable to load connected app status.",f),S(re()),P(null))}),()=>{x=!1})},[a,o]);function N(x){const f=ze({appId:x.id,baseUrl:j,teamId:k});kn(f).catch(A=>{s?.(A instanceof Error?A.message:String(A),"error")})}return e.jsxs("div",{className:"apps-workspace-view",children:[e.jsx("div",{className:"apps-page-tabs",role:"tablist","aria-label":"Apps pages",onKeyDown:x=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(x.key))return;x.preventDefault();const f=x.key==="Home"?"agents":x.key==="End"||o==="agents"?"apps":"agents";i(f),x.currentTarget.querySelector(`#${CSS.escape(`${p}-${f}`)}`)?.focus()},children:[{value:"agents",label:"Connections"},{value:"apps",label:"Apps"}].map(x=>e.jsx("button",{type:"button",role:"tab",id:`${p}-${x.value}`,"aria-controls":`${p}-${x.value}-panel`,tabIndex:o===x.value?0:-1,"aria-selected":o===x.value,onClick:()=>i(x.value),children:x.label},x.value))}),e.jsx("div",{role:"tabpanel",id:`${p}-${o}-panel`,"aria-labelledby":`${p}-${o}`,children:o==="agents"?e.jsx(hn,{connection:a,payload:l,onPayload:g,onToast:s},JSON.stringify([n?.activeProfile,t])):e.jsxs("section",{className:"connected-apps-view","aria-label":"Apps",children:[e.jsxs("div",{className:"connected-apps-header",children:[e.jsxs("div",{children:[e.jsx("h1",{children:"Apps"}),e.jsx("p",{children:"Connect apps that agents can use for chat, knowledge, files, and workflow actions."})]}),e.jsxs("label",{className:"connected-apps-search",children:[e.jsx($e,{size:15}),e.jsx("input",{"aria-label":"Search apps",onChange:x=>u(x.target.value),placeholder:"Search apps",type:"search",value:v})]})]}),e.jsxs("section",{className:"connected-apps-hero","aria-label":"App context",children:[e.jsxs("div",{className:"connected-apps-hero-copy",children:[e.jsx("span",{className:"connected-apps-hero-icon",children:e.jsx(ue,{appId:"github"})}),e.jsx("h2",{children:"Work with your apps"}),e.jsx("p",{children:"Bring repositories, documents, chat, calendars, and custom MCP tools into OpenPond."})]}),e.jsxs("div",{className:"connected-apps-context-card","aria-hidden":"true",children:[e.jsx("strong",{children:"Agent context"}),e.jsxs("div",{children:[e.jsx("span",{className:"files",children:"Files"}),e.jsx("span",{className:"chat",children:"Chat"}),e.jsx("span",{className:"oauth",children:"OAuth"}),e.jsx("span",{className:"mcp",children:"MCP"})]})]})]}),e.jsx("div",{className:"connected-apps-filters",role:"tablist","aria-label":"App categories",children:gn.map(x=>e.jsx("button",{"aria-selected":_===x,className:_===x?"active":"",onClick:()=>L(x),role:"tab",type:"button",children:x},x))}),e.jsxs("div",{className:"connected-apps-list",children:[T.map(x=>e.jsx(jn,{app:x,onSelect:()=>d(x)},x.id)),T.length===0?e.jsx("div",{className:"connected-apps-empty",children:"No apps match the current search."}):null]}),c?e.jsx(bn,{app:c,onClose:()=>d(null),onInstall:()=>N(c)}):null]})})]})}function vn(n,a){const t=n?.trim();return t||a?.trim()||null}function jn({app:n,onSelect:a}){return e.jsxs("button",{className:"connected-app-row",onClick:a,type:"button",children:[e.jsxs("span",{className:"connected-app-row-main",children:[e.jsx(ue,{appId:n.id}),e.jsxs("span",{className:"connected-app-copy",children:[e.jsxs("span",{className:"connected-app-title",children:[e.jsx("strong",{children:n.label}),e.jsxs("span",{children:[n.shortLabel!==n.label?n.shortLabel:n.category," / ",n.setupSurfaceLabel]})]}),e.jsx("span",{children:n.description}),e.jsxs("span",{className:"connected-app-capability-row",children:[n.capabilityLabels.slice(0,2).map(t=>e.jsx("span",{children:t},t)),n.capabilityLabels.length>2?e.jsxs("span",{children:["+",n.capabilityLabels.length-2]}):null]})]})]}),e.jsx("span",{className:`connected-app-status-pill ${n.status}`,children:n.statusLabel}),e.jsx(Me,{size:16})]})}function bn({app:n,onClose:a,onInstall:t}){const s=n.connections.filter(l=>l.status==="active");return e.jsx("div",{className:"connected-app-dialog-backdrop",role:"presentation",onMouseDown:l=>{l.target===l.currentTarget&&a()},children:e.jsxs("section",{className:"connected-app-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"connected-app-dialog-title",children:[e.jsx("button",{className:"connected-app-dialog-close",type:"button","aria-label":"Close app details",onClick:a,children:e.jsx(te,{size:17})}),e.jsxs("div",{className:"connected-app-dialog-identity",children:[e.jsx("span",{className:"openpond-mark",children:e.jsx("img",{alt:"",src:je})}),e.jsxs("span",{className:"connection-dots","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsx(ue,{appId:n.id})]}),e.jsxs("h2",{id:"connected-app-dialog-title",children:["Connect ",n.label]}),e.jsxs("div",{className:"connected-app-approval",children:[e.jsx(De,{size:16}),e.jsx("span",{children:n.statusLabel})]}),e.jsxs("div",{className:"connected-app-dialog-body",children:[e.jsxs("section",{children:[e.jsx("h3",{children:n.setupSurfaceLabel}),e.jsx("p",{children:"The web flow shows the provider account, workspace, and requested access before anything is connected."})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Connected account"}),e.jsx("p",{children:wn(s)})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Available capabilities"}),e.jsx("div",{className:"connected-app-dialog-capabilities",children:n.capabilities.map(l=>e.jsx("span",{children:l.label},l.id))})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Sandbox lease policy"}),e.jsx("p",{children:n.leasePolicy.leaseable?`Leaseable for ${n.leasePolicy.defaultTtlSeconds??0} seconds with scoped proxy access.`:"Managed as setup or tool discovery; no OAuth lease is required."})]})]}),e.jsxs("button",{className:"connected-app-dialog-primary",type:"button",onClick:t,children:[e.jsx("span",{children:n.installLabel}),e.jsx(He,{size:15})]})]})})}function ue({appId:n}){return e.jsx("span",{className:`connected-app-icon app-${n}`,children:e.jsx("img",{alt:"",src:Sn(n)})})}function fn(n,a){return a==="For agents"?!0:a==="Featured"?xn.has(n.id):a==="Productivity"?n.category==="Productivity"||n.category==="Chat":n.category==="Developer tools"||n.id==="mcp"}function yn(n,a){const t=a.trim().toLowerCase();return t?[n.id,n.label,n.shortLabel,n.category,n.description,n.providerFamily,n.setupSurface].some(s=>s.toLowerCase().includes(t)):!0}function Sn(n){return Ke(n)}async function kn(n){const a=window.openpond?.browser;if(a){const t=await a.openExternal({conversationId:"connected-apps",url:n});if(!t.ok)throw new Error(t.error??"Unable to open app setup.");return}window.open(n,"_blank","noopener,noreferrer")}function wn(n){return n.length===0?"No active OAuth connection for this setup surface.":n.map(a=>{const t=a.accountLabel??"Connected account";return a.workspaceLabel?`${t} / ${a.workspaceLabel}`:t}).join(", ")}export{Un as AppsView,jn as ConnectedAppRow,vn as connectedAppSetupTeamId};
@@ -1 +1 @@
1
- import{r as c,j as a}from"./index-BxWTVKtn.js";import{fv as v,aw as f,X as k,P as j,h as B,an as C,aB as g,bU as y}from"./App-CuhaCsfb.js";import{a as N}from"./MarkdownText-gJMuefaJ.js";import{S as T}from"./square-oy7f5Ce6.js";const x=[];function P(r){const e=window.openpond?.browser,[b,l]=c.useState(()=>({conversationId:r,activeTabId:null,tabs:x}));c.useEffect(()=>{if(l({conversationId:r,activeTabId:null,tabs:x}),!e)return;let s=!1;e.getState({conversationId:r}).then(o=>{s||l(o)});const i=e.onState(o=>{o.conversationId===r&&l(o)});return()=>{s=!0,i()}},[e,r]);const u=c.useMemo(()=>b.tabs.find(s=>s.id===b.activeTabId)??null,[b.activeTabId,b.tabs]),t=c.useCallback(async(s,i={})=>{if(!e)return!1;const o=v(s,{explicitFile:i.explicitFile});return o?(i.newTab?await e.newTab({conversationId:r,url:o,explicitFile:i.explicitFile}):await e.open({conversationId:r,url:o,explicitFile:i.explicitFile}),!0):!1},[e,r]),n=u?{conversationId:r,tabId:u.id}:null;return{activeTab:u,available:!!e,bridge:e,state:b,back:()=>e&&n?e.back(n):Promise.resolve({ok:!1}),clearData:()=>e?e.clearData({conversationId:r}):Promise.resolve({ok:!1}),closeTab:s=>e?e.closeTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),forward:()=>e&&n?e.forward(n):Promise.resolve({ok:!1}),newTab:s=>e?e.newTab({conversationId:r,url:s}):Promise.resolve({ok:!1}),open:t,openExternal:()=>e&&n?e.openExternal(n):Promise.resolve({ok:!1}),reload:()=>e&&n?e.reload(n):Promise.resolve({ok:!1}),snapshot:(s={})=>e?e.snapshot({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),moveCursor:s=>e?e.moveCursor({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),click:s=>e?e.click({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),typeText:s=>e?e.typeText({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),key:s=>e?e.key({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),scroll:s=>e?e.scroll({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),selectTab:s=>e?e.selectTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),setBounds:s=>e?e.setBounds({conversationId:r,bounds:s}):Promise.resolve({ok:!1}),stop:()=>e&&n?e.stop(n):Promise.resolve({ok:!1})}}function E({activeTabId:r,tabs:e,onCloseTab:b,onNewTab:l,onSelectTab:u}){return a.jsxs("div",{className:"browser-tabs",role:"tablist","aria-label":"Browser tabs",children:[e.map(t=>a.jsxs("div",{className:`browser-tab ${t.id===r?"active":""}`,children:[a.jsx("span",{className:"browser-tab-favicon","aria-hidden":"true",children:t.faviconUrl?a.jsx("img",{alt:"",referrerPolicy:"no-referrer",src:t.faviconUrl}):a.jsx(f,{size:13})}),a.jsx("button",{type:"button",className:"browser-tab-main",role:"tab","aria-selected":t.id===r,title:t.url,onClick:()=>u(t.id),children:R(t)}),a.jsx("button",{type:"button",className:"browser-tab-close",title:"Close tab","aria-label":"Close tab",onClick:()=>b(t.id),children:a.jsx(k,{size:12})})]},t.id)),a.jsx("button",{type:"button",className:"browser-tab-add",title:"New tab","aria-label":"New tab",onClick:l,children:a.jsx(j,{size:14})})]})}function R(r){if(r.title?.trim())return r.title.trim();try{return new URL(r.url).host||r.url}catch{return r.url||"New tab"}}function z({activeTab:r,available:e,onBack:b,onClearData:l,onForward:u,onNavigate:t,onOpenExternal:n,onReload:s,onStop:i}){const[o,d]=c.useState(""),[p,m]=c.useState(!1);c.useEffect(()=>{d(r?.url??"")},[r?.url]);function h(w){w.preventDefault(),t(o)}return a.jsxs("div",{className:"browser-toolbar",children:[a.jsxs("div",{className:"browser-nav-actions",children:[a.jsx("button",{type:"button",title:"Back","aria-label":"Back",disabled:!r?.canGoBack,onClick:b,children:a.jsx(B,{size:15})}),a.jsx("button",{type:"button",title:"Forward","aria-label":"Forward",disabled:!r?.canGoForward,onClick:u,children:a.jsx(N,{size:15})}),a.jsx("button",{type:"button",title:r?.loading?"Stop":"Reload","aria-label":r?.loading?"Stop":"Reload",disabled:!r,onClick:r?.loading?i:s,children:r?.loading?a.jsx(T,{size:13}):a.jsx(C,{size:14})})]}),a.jsx("form",{className:"browser-address-form",onSubmit:h,children:a.jsx("input",{"aria-label":"Browser address",disabled:!e,placeholder:e?"Search or enter address":"Desktop browser unavailable",spellCheck:!1,value:o,onChange:w=>d(w.target.value)})}),a.jsxs("div",{className:"browser-panel-actions",children:[a.jsx("button",{type:"button",title:"Open external","aria-label":"Open external",disabled:!r,onClick:n,children:a.jsx(g,{size:14})}),a.jsxs("div",{className:"browser-menu-anchor",children:[a.jsx("button",{type:"button",title:"Browser actions","aria-label":"Browser actions",onClick:()=>m(w=>!w),children:a.jsx(y,{size:15})}),p&&a.jsx("div",{className:"browser-options-menu",role:"menu",children:a.jsx("button",{type:"button",role:"menuitem",onClick:()=>{m(!1),l()},children:"Clear Browser Data..."})})]})]})]})}function D({active:r,onBounds:e}){const b=c.useRef(null),l=c.useRef(null),u=c.useRef(null),t=c.useCallback(i=>{const o=i?`${i.x}:${i.y}:${i.width}:${i.height}`:"null";l.current!==o&&(l.current=o,e(i))},[e]),n=c.useCallback(()=>{const i=b.current;if(!r||!i){t(null);return}const o=i.getBoundingClientRect(),d=Math.max(0,Math.round(o.width)),p=Math.max(0,Math.round(o.height));if(d===0||p===0){t(null);return}t({x:Math.round(o.left),y:Math.round(o.top),width:d,height:p})},[r,t]),s=c.useCallback(()=>{u.current===null&&(u.current=window.requestAnimationFrame(()=>{u.current=null,n()}))},[n]);return c.useLayoutEffect(()=>{l.current=null,n();const i=b.current;if(!r||!i)return t(null),()=>t(null);const o=new ResizeObserver(s);return o.observe(i),window.addEventListener("resize",s),window.addEventListener("scroll",s,!0),()=>{u.current!==null&&(window.cancelAnimationFrame(u.current),u.current=null),o.disconnect(),window.removeEventListener("resize",s),window.removeEventListener("scroll",s,!0),t(null)}},[r,t,n,s]),a.jsx("div",{className:"browser-viewport",ref:b})}function U({conversationId:r,expanded:e,onResizeStart:b}){const l=P(r),u=c.useCallback(s=>{window.openpond?.browser?.setBounds({conversationId:r,bounds:s})},[r]),t=c.useCallback(s=>{l.open(s,{explicitFile:!0})},[l]),n=c.useCallback(()=>{window.confirm("Clear browser data for this conversation? Tabs, cookies, cache, and local storage for this conversation will be removed.")&&l.clearData()},[l]);return a.jsxs("aside",{className:`workspace-diff-panel browser-sidebar-panel ${e?"expanded":""}`,"aria-label":"Browser",children:[!e&&a.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize browser panel",onPointerDown:b}),a.jsx(E,{activeTabId:l.state.activeTabId,tabs:l.state.tabs,onCloseTab:s=>{l.closeTab(s)},onNewTab:()=>{l.newTab()},onSelectTab:s=>{l.selectTab(s)}}),a.jsx(z,{activeTab:l.activeTab,available:l.available,onBack:()=>{l.back()},onClearData:n,onForward:()=>{l.forward()},onNavigate:t,onOpenExternal:()=>{l.openExternal()},onReload:()=>{l.reload()},onStop:()=>{l.stop()}}),a.jsxs("div",{className:"browser-content",children:[l.available?l.state.tabs.length===0?a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Enter a URL to open a browser tab for this conversation."})]}):null:a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Desktop browser bridge unavailable."})]}),a.jsx(D,{active:l.available&&l.state.tabs.length>0,onBounds:u})]})]})}export{U as BrowserSidebar};
1
+ import{r as c,j as a}from"./index-BE-wXZ5R.js";import{ff as v,aG as f,X as k,p as j,r as C,ax as g,aL as B,c0 as y}from"./App-CLFfy_Av.js";import{a as N}from"./MarkdownText-DOdOVFXL.js";import{S as T}from"./square-Cb2c5td4.js";const x=[];function P(r){const e=window.openpond?.browser,[b,l]=c.useState(()=>({conversationId:r,activeTabId:null,tabs:x}));c.useEffect(()=>{if(l({conversationId:r,activeTabId:null,tabs:x}),!e)return;let s=!1;e.getState({conversationId:r}).then(o=>{s||l(o)});const i=e.onState(o=>{o.conversationId===r&&l(o)});return()=>{s=!0,i()}},[e,r]);const u=c.useMemo(()=>b.tabs.find(s=>s.id===b.activeTabId)??null,[b.activeTabId,b.tabs]),t=c.useCallback(async(s,i={})=>{if(!e)return!1;const o=v(s,{explicitFile:i.explicitFile});return o?(i.newTab?await e.newTab({conversationId:r,url:o,explicitFile:i.explicitFile}):await e.open({conversationId:r,url:o,explicitFile:i.explicitFile}),!0):!1},[e,r]),n=u?{conversationId:r,tabId:u.id}:null;return{activeTab:u,available:!!e,bridge:e,state:b,back:()=>e&&n?e.back(n):Promise.resolve({ok:!1}),clearData:()=>e?e.clearData({conversationId:r}):Promise.resolve({ok:!1}),closeTab:s=>e?e.closeTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),forward:()=>e&&n?e.forward(n):Promise.resolve({ok:!1}),newTab:s=>e?e.newTab({conversationId:r,url:s}):Promise.resolve({ok:!1}),open:t,openExternal:()=>e&&n?e.openExternal(n):Promise.resolve({ok:!1}),reload:()=>e&&n?e.reload(n):Promise.resolve({ok:!1}),snapshot:(s={})=>e?e.snapshot({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),moveCursor:s=>e?e.moveCursor({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),click:s=>e?e.click({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),typeText:s=>e?e.typeText({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),key:s=>e?e.key({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),scroll:s=>e?e.scroll({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),selectTab:s=>e?e.selectTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),setBounds:s=>e?e.setBounds({conversationId:r,bounds:s}):Promise.resolve({ok:!1}),stop:()=>e&&n?e.stop(n):Promise.resolve({ok:!1})}}function E({activeTabId:r,tabs:e,onCloseTab:b,onNewTab:l,onSelectTab:u}){return a.jsxs("div",{className:"browser-tabs",role:"tablist","aria-label":"Browser tabs",children:[e.map(t=>a.jsxs("div",{className:`browser-tab ${t.id===r?"active":""}`,children:[a.jsx("span",{className:"browser-tab-favicon","aria-hidden":"true",children:t.faviconUrl?a.jsx("img",{alt:"",referrerPolicy:"no-referrer",src:t.faviconUrl}):a.jsx(f,{size:13})}),a.jsx("button",{type:"button",className:"browser-tab-main",role:"tab","aria-selected":t.id===r,title:t.url,onClick:()=>u(t.id),children:R(t)}),a.jsx("button",{type:"button",className:"browser-tab-close",title:"Close tab","aria-label":"Close tab",onClick:()=>b(t.id),children:a.jsx(k,{size:12})})]},t.id)),a.jsx("button",{type:"button",className:"browser-tab-add",title:"New tab","aria-label":"New tab",onClick:l,children:a.jsx(j,{size:14})})]})}function R(r){if(r.title?.trim())return r.title.trim();try{return new URL(r.url).host||r.url}catch{return r.url||"New tab"}}function z({activeTab:r,available:e,onBack:b,onClearData:l,onForward:u,onNavigate:t,onOpenExternal:n,onReload:s,onStop:i}){const[o,d]=c.useState(""),[p,m]=c.useState(!1);c.useEffect(()=>{d(r?.url??"")},[r?.url]);function h(w){w.preventDefault(),t(o)}return a.jsxs("div",{className:"browser-toolbar",children:[a.jsxs("div",{className:"browser-nav-actions",children:[a.jsx("button",{type:"button",title:"Back","aria-label":"Back",disabled:!r?.canGoBack,onClick:b,children:a.jsx(C,{size:15})}),a.jsx("button",{type:"button",title:"Forward","aria-label":"Forward",disabled:!r?.canGoForward,onClick:u,children:a.jsx(N,{size:15})}),a.jsx("button",{type:"button",title:r?.loading?"Stop":"Reload","aria-label":r?.loading?"Stop":"Reload",disabled:!r,onClick:r?.loading?i:s,children:r?.loading?a.jsx(T,{size:13}):a.jsx(g,{size:14})})]}),a.jsx("form",{className:"browser-address-form",onSubmit:h,children:a.jsx("input",{"aria-label":"Browser address",disabled:!e,placeholder:e?"Search or enter address":"Desktop browser unavailable",spellCheck:!1,value:o,onChange:w=>d(w.target.value)})}),a.jsxs("div",{className:"browser-panel-actions",children:[a.jsx("button",{type:"button",title:"Open external","aria-label":"Open external",disabled:!r,onClick:n,children:a.jsx(B,{size:14})}),a.jsxs("div",{className:"browser-menu-anchor",children:[a.jsx("button",{type:"button",title:"Browser actions","aria-label":"Browser actions",onClick:()=>m(w=>!w),children:a.jsx(y,{size:15})}),p&&a.jsx("div",{className:"browser-options-menu",role:"menu",children:a.jsx("button",{type:"button",role:"menuitem",onClick:()=>{m(!1),l()},children:"Clear Browser Data..."})})]})]})]})}function D({active:r,onBounds:e}){const b=c.useRef(null),l=c.useRef(null),u=c.useRef(null),t=c.useCallback(i=>{const o=i?`${i.x}:${i.y}:${i.width}:${i.height}`:"null";l.current!==o&&(l.current=o,e(i))},[e]),n=c.useCallback(()=>{const i=b.current;if(!r||!i){t(null);return}const o=i.getBoundingClientRect(),d=Math.max(0,Math.round(o.width)),p=Math.max(0,Math.round(o.height));if(d===0||p===0){t(null);return}t({x:Math.round(o.left),y:Math.round(o.top),width:d,height:p})},[r,t]),s=c.useCallback(()=>{u.current===null&&(u.current=window.requestAnimationFrame(()=>{u.current=null,n()}))},[n]);return c.useLayoutEffect(()=>{l.current=null,n();const i=b.current;if(!r||!i)return t(null),()=>t(null);const o=new ResizeObserver(s);return o.observe(i),window.addEventListener("resize",s),window.addEventListener("scroll",s,!0),()=>{u.current!==null&&(window.cancelAnimationFrame(u.current),u.current=null),o.disconnect(),window.removeEventListener("resize",s),window.removeEventListener("scroll",s,!0),t(null)}},[r,t,n,s]),a.jsx("div",{className:"browser-viewport",ref:b})}function U({conversationId:r,expanded:e,onResizeStart:b}){const l=P(r),u=c.useCallback(s=>{window.openpond?.browser?.setBounds({conversationId:r,bounds:s})},[r]),t=c.useCallback(s=>{l.open(s,{explicitFile:!0})},[l]),n=c.useCallback(()=>{window.confirm("Clear browser data for this conversation? Tabs, cookies, cache, and local storage for this conversation will be removed.")&&l.clearData()},[l]);return a.jsxs("aside",{className:`workspace-diff-panel browser-sidebar-panel ${e?"expanded":""}`,"aria-label":"Browser",children:[!e&&a.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize browser panel",onPointerDown:b}),a.jsx(E,{activeTabId:l.state.activeTabId,tabs:l.state.tabs,onCloseTab:s=>{l.closeTab(s)},onNewTab:()=>{l.newTab()},onSelectTab:s=>{l.selectTab(s)}}),a.jsx(z,{activeTab:l.activeTab,available:l.available,onBack:()=>{l.back()},onClearData:n,onForward:()=>{l.forward()},onNavigate:t,onOpenExternal:()=>{l.openExternal()},onReload:()=>{l.reload()},onStop:()=>{l.stop()}}),a.jsxs("div",{className:"browser-content",children:[l.available?l.state.tabs.length===0?a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Enter a URL to open a browser tab for this conversation."})]}):null:a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Desktop browser bridge unavailable."})]}),a.jsx(D,{active:l.available&&l.state.tabs.length>0,onBounds:u})]})]})}export{U as BrowserSidebar};