@truefoundry/trueforge 0.1.4 → 0.2.0-rc.1

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 (252) hide show
  1. package/README.md +1 -1
  2. package/dist/_frontend/assets/AgentCodeSnippets-NZOFJE57-Bn94i1Ie.js +1 -0
  3. package/dist/_frontend/assets/AgentCodeSnippets-NZOFJE57-Bn94i1Ie.js.br +0 -0
  4. package/dist/_frontend/assets/AgentCodeSnippets-NZOFJE57-Bn94i1Ie.js.gz +0 -0
  5. package/dist/_frontend/assets/AgentMetricChart-JPU3MFQ2-pn-oatgo.js +1 -0
  6. package/dist/_frontend/assets/AgentMetricChart-JPU3MFQ2-pn-oatgo.js.br +0 -0
  7. package/dist/_frontend/assets/AgentMetricChart-JPU3MFQ2-pn-oatgo.js.gz +0 -0
  8. package/dist/_frontend/assets/AgentOverview-EEBHJC32-Bn4qidnv.js +1 -0
  9. package/dist/_frontend/assets/AgentOverview-EEBHJC32-Bn4qidnv.js.br +0 -0
  10. package/dist/_frontend/assets/AgentOverview-EEBHJC32-Bn4qidnv.js.gz +0 -0
  11. package/dist/_frontend/assets/AgentSessionEventTimeline-26Z6IB3B-D_yCZz1m.js +1 -0
  12. package/dist/_frontend/assets/AgentSessionEventTimeline-26Z6IB3B-D_yCZz1m.js.br +0 -0
  13. package/dist/_frontend/assets/AgentSessionEventTimeline-26Z6IB3B-D_yCZz1m.js.gz +0 -0
  14. package/dist/_frontend/assets/AgentSessionEventTimelineChart-CGCU7WBK-JGwv6e5T.js +1 -0
  15. package/dist/_frontend/assets/AgentSessionEventTimelineChart-CGCU7WBK-JGwv6e5T.js.br +0 -0
  16. package/dist/_frontend/assets/AgentSessionEventTimelineChart-CGCU7WBK-JGwv6e5T.js.gz +0 -0
  17. package/dist/_frontend/assets/AgentSessions-3MPDZASK-Dp6vYfGN.js +1 -0
  18. package/dist/_frontend/assets/AgentSessions-3MPDZASK-Dp6vYfGN.js.br +0 -0
  19. package/dist/_frontend/assets/AgentSessions-3MPDZASK-Dp6vYfGN.js.gz +0 -0
  20. package/dist/_frontend/assets/ConnectorSettings-MXFRWWR6-BEwXZbPM.js +1 -0
  21. package/dist/_frontend/assets/ConnectorSettings-MXFRWWR6-BEwXZbPM.js.br +0 -0
  22. package/dist/_frontend/assets/ConnectorSettings-MXFRWWR6-BEwXZbPM.js.gz +0 -0
  23. package/dist/_frontend/assets/{DockLayout-2RWDSUKE-eKoTN8R3.js → DockLayout-LM4AFMFY-DoBwJ3-e.js} +1 -1
  24. package/dist/_frontend/assets/DrawerLayout-JR3O6RRB-BZ9sffvm.js +2 -0
  25. package/dist/_frontend/assets/DrawerLayout-JR3O6RRB-BZ9sffvm.js.br +0 -0
  26. package/dist/_frontend/assets/DrawerLayout-JR3O6RRB-BZ9sffvm.js.gz +0 -0
  27. package/dist/_frontend/assets/ModelSettings-G7IFNC2Y-DxVYHG2m.js +1 -0
  28. package/dist/_frontend/assets/ModelSettings-G7IFNC2Y-DxVYHG2m.js.br +0 -0
  29. package/dist/_frontend/assets/ModelSettings-G7IFNC2Y-DxVYHG2m.js.gz +0 -0
  30. package/dist/_frontend/assets/SandboxSettings-NXAANMAX-DhC28qE6.js +1 -0
  31. package/dist/_frontend/assets/SandboxSettings-NXAANMAX-DhC28qE6.js.br +0 -0
  32. package/dist/_frontend/assets/SandboxSettings-NXAANMAX-DhC28qE6.js.gz +0 -0
  33. package/dist/_frontend/assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js +1 -0
  34. package/dist/_frontend/assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js.br +0 -0
  35. package/dist/_frontend/assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js.gz +0 -0
  36. package/dist/_frontend/assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js +2 -0
  37. package/dist/_frontend/assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js.br +0 -0
  38. package/dist/_frontend/assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js.gz +0 -0
  39. package/dist/_frontend/assets/ShellRouteSync-CEBETGEJ-C4NOyyck.js +1 -0
  40. package/dist/_frontend/assets/ShellRouteSync-CEBETGEJ-C4NOyyck.js.br +0 -0
  41. package/dist/_frontend/assets/ShellRouteSync-CEBETGEJ-C4NOyyck.js.gz +0 -0
  42. package/dist/_frontend/assets/SidebarLayout-A2HJPPHS-kusjDx4J.js +2 -0
  43. package/dist/_frontend/assets/SidebarLayout-A2HJPPHS-kusjDx4J.js.br +0 -0
  44. package/dist/_frontend/assets/SidebarLayout-A2HJPPHS-kusjDx4J.js.gz +0 -0
  45. package/dist/_frontend/assets/SkillSettings-FGGMSUNO-CjrGBX5J.js +1 -0
  46. package/dist/_frontend/assets/SkillSettings-FGGMSUNO-CjrGBX5J.js.br +0 -0
  47. package/dist/_frontend/assets/SkillSettings-FGGMSUNO-CjrGBX5J.js.gz +0 -0
  48. package/dist/_frontend/assets/TrueForgeUIWithRouter-MZVJWJMB-CZ8BOF1k.js +1 -0
  49. package/dist/_frontend/assets/WidgetLayout-6QM45OQQ-Bp0tde9v.js +1 -0
  50. package/dist/_frontend/assets/WidgetLayout-6QM45OQQ-Bp0tde9v.js.br +0 -0
  51. package/dist/_frontend/assets/WidgetLayout-6QM45OQQ-Bp0tde9v.js.gz +0 -0
  52. package/dist/_frontend/assets/chunk-62JRHF6Z-BLb_tkPU.js +12 -0
  53. package/dist/_frontend/assets/chunk-62JRHF6Z-BLb_tkPU.js.br +0 -0
  54. package/dist/_frontend/assets/chunk-62JRHF6Z-BLb_tkPU.js.gz +0 -0
  55. package/dist/_frontend/assets/chunk-DMMZSZTN-BBNhHida.js +1 -0
  56. package/dist/_frontend/assets/chunk-DMMZSZTN-BBNhHida.js.br +0 -0
  57. package/dist/_frontend/assets/chunk-DMMZSZTN-BBNhHida.js.gz +0 -0
  58. package/dist/_frontend/assets/chunk-FJW36PD7-R_XSoO50.js +2 -0
  59. package/dist/_frontend/assets/chunk-FJW36PD7-R_XSoO50.js.br +0 -0
  60. package/dist/_frontend/assets/chunk-FJW36PD7-R_XSoO50.js.gz +0 -0
  61. package/dist/_frontend/assets/chunk-WVE3F724-CL71bP7s.js +1 -0
  62. package/dist/_frontend/assets/chunk-WVE3F724-CL71bP7s.js.br +0 -0
  63. package/dist/_frontend/assets/chunk-WVE3F724-CL71bP7s.js.gz +0 -0
  64. package/dist/_frontend/assets/{cssMode-CvKwYh_L.js → cssMode-CVefs5W-.js} +1 -1
  65. package/dist/_frontend/assets/cssMode-CVefs5W-.js.br +0 -0
  66. package/dist/_frontend/assets/cssMode-CVefs5W-.js.gz +0 -0
  67. package/dist/_frontend/assets/{freemarker2-Bb2yOpT3.js → freemarker2-mt8l8QVE.js} +1 -1
  68. package/dist/_frontend/assets/freemarker2-mt8l8QVE.js.br +0 -0
  69. package/dist/_frontend/assets/freemarker2-mt8l8QVE.js.gz +0 -0
  70. package/dist/_frontend/assets/{handlebars-FL3wsxe0.js → handlebars-C97jT8Zn.js} +1 -1
  71. package/dist/_frontend/assets/handlebars-C97jT8Zn.js.br +0 -0
  72. package/dist/_frontend/assets/handlebars-C97jT8Zn.js.gz +0 -0
  73. package/dist/_frontend/assets/{html-Cb3v_ZRD.js → html-DKtvlaWU.js} +1 -1
  74. package/dist/_frontend/assets/html-DKtvlaWU.js.br +0 -0
  75. package/dist/_frontend/assets/html-DKtvlaWU.js.gz +0 -0
  76. package/dist/_frontend/assets/{htmlMode-JQDvK0Qf.js → htmlMode-BHsrcqlc.js} +1 -1
  77. package/dist/_frontend/assets/htmlMode-BHsrcqlc.js.br +0 -0
  78. package/dist/_frontend/assets/htmlMode-BHsrcqlc.js.gz +0 -0
  79. package/dist/_frontend/assets/{index-DRjgykCE.js → index-BW-oaxAt.js} +3 -3
  80. package/dist/_frontend/assets/index-BW-oaxAt.js.br +0 -0
  81. package/dist/_frontend/assets/index-BW-oaxAt.js.gz +0 -0
  82. package/dist/_frontend/assets/{index-DEKCw40W.css → index-D8eVAzN5.css} +1 -1
  83. package/dist/_frontend/assets/index-D8eVAzN5.css.br +0 -0
  84. package/dist/_frontend/assets/index-D8eVAzN5.css.gz +0 -0
  85. package/dist/_frontend/assets/index-DVCxCjDg.js +923 -0
  86. package/dist/_frontend/assets/index-DVCxCjDg.js.br +0 -0
  87. package/dist/_frontend/assets/index-DVCxCjDg.js.gz +0 -0
  88. package/dist/_frontend/assets/index-DuKoX4ct.js +18 -0
  89. package/dist/_frontend/assets/index-DuKoX4ct.js.br +0 -0
  90. package/dist/_frontend/assets/index-DuKoX4ct.js.gz +0 -0
  91. package/dist/_frontend/assets/{javascript-2WsgEpYV.js → javascript-Cs0N3w-s.js} +1 -1
  92. package/dist/_frontend/assets/{jsonMode-DnbseMlM.js → jsonMode-CqrfFSVA.js} +1 -1
  93. package/dist/_frontend/assets/jsonMode-CqrfFSVA.js.br +0 -0
  94. package/dist/_frontend/assets/jsonMode-CqrfFSVA.js.gz +0 -0
  95. package/dist/_frontend/assets/{liquid-DeE37I1e.js → liquid-C11lKF6J.js} +1 -1
  96. package/dist/_frontend/assets/liquid-C11lKF6J.js.br +0 -0
  97. package/dist/_frontend/assets/liquid-C11lKF6J.js.gz +0 -0
  98. package/dist/_frontend/assets/{lspLanguageFeatures-Bty8j9di.js → lspLanguageFeatures-DBZtnSMo.js} +1 -1
  99. package/dist/_frontend/assets/lspLanguageFeatures-DBZtnSMo.js.br +0 -0
  100. package/dist/_frontend/assets/lspLanguageFeatures-DBZtnSMo.js.gz +0 -0
  101. package/dist/_frontend/assets/{mdx-DfKPZX1Z.js → mdx-CCo4oKJJ.js} +1 -1
  102. package/dist/_frontend/assets/mdx-CCo4oKJJ.js.br +0 -0
  103. package/dist/_frontend/assets/mdx-CCo4oKJJ.js.gz +0 -0
  104. package/dist/_frontend/assets/{python-2i3Kiv75.js → python-627g_SSG.js} +1 -1
  105. package/dist/_frontend/assets/python-627g_SSG.js.br +0 -0
  106. package/dist/_frontend/assets/python-627g_SSG.js.gz +0 -0
  107. package/dist/_frontend/assets/{razor-B0N4vZnc.js → razor-BGDxoA7p.js} +1 -1
  108. package/dist/_frontend/assets/razor-BGDxoA7p.js.br +0 -0
  109. package/dist/_frontend/assets/razor-BGDxoA7p.js.gz +0 -0
  110. package/dist/_frontend/assets/{tsMode-D1Y8xh-o.js → tsMode-gPT7Bbjh.js} +1 -1
  111. package/dist/_frontend/assets/tsMode-gPT7Bbjh.js.br +0 -0
  112. package/dist/_frontend/assets/tsMode-gPT7Bbjh.js.gz +0 -0
  113. package/dist/_frontend/assets/{typescript-2nhip0PT.js → typescript-Cb0PzreF.js} +1 -1
  114. package/dist/_frontend/assets/typescript-Cb0PzreF.js.br +0 -0
  115. package/dist/_frontend/assets/typescript-Cb0PzreF.js.gz +0 -0
  116. package/dist/_frontend/assets/{workers-DSmTvA39.js → workers-BAgwFgJ0.js} +1 -1
  117. package/dist/_frontend/assets/workers-BAgwFgJ0.js.br +0 -0
  118. package/dist/_frontend/assets/workers-BAgwFgJ0.js.gz +0 -0
  119. package/dist/_frontend/assets/{xml-CA4M6Pks.js → xml-BpvCCHF9.js} +1 -1
  120. package/dist/_frontend/assets/xml-BpvCCHF9.js.br +0 -0
  121. package/dist/_frontend/assets/xml-BpvCCHF9.js.gz +0 -0
  122. package/dist/_frontend/assets/{yaml-D5KNk7Ji.js → yaml-f3XKmHoH.js} +1 -1
  123. package/dist/_frontend/assets/yaml-f3XKmHoH.js.br +0 -0
  124. package/dist/_frontend/assets/yaml-f3XKmHoH.js.gz +0 -0
  125. package/dist/_frontend/index.html +2 -31
  126. package/dist/controller-main.js +1259 -0
  127. package/dist/controller-main.js.map +1 -0
  128. package/dist/main.js +10419 -5343
  129. package/dist/main.js.map +1 -1
  130. package/dist/postgres/migrations/20260821_000001_agent_compaction.js +63 -0
  131. package/dist/postgres/migrations/20260821_000001_agent_compaction.js.map +1 -0
  132. package/dist/postgres/migrations/20260827_000001_schedule.js +40 -0
  133. package/dist/postgres/migrations/20260827_000001_schedule.js.map +1 -0
  134. package/dist/postgres/migrations/20260827_000001_session_metrics.js +25 -0
  135. package/dist/postgres/migrations/20260827_000001_session_metrics.js.map +1 -0
  136. package/dist/postgres/migrations/20260828_000001_schedule_name_uq.js +15 -0
  137. package/dist/postgres/migrations/20260828_000001_schedule_name_uq.js.map +1 -0
  138. package/dist/postgres/migrations/20260831_000001_session_external_id.js +26 -0
  139. package/dist/postgres/migrations/20260831_000001_session_external_id.js.map +1 -0
  140. package/dist/postgres/migrations/20260901_000001_agent_metadata.js +18 -0
  141. package/dist/postgres/migrations/20260901_000001_agent_metadata.js.map +1 -0
  142. package/dist/postgres/migrations/20260902_000001_session_metadata.js +15 -0
  143. package/dist/postgres/migrations/20260902_000001_session_metadata.js.map +1 -0
  144. package/dist/postgres/migrations/20260902_000002_agent_external_id.js +26 -0
  145. package/dist/postgres/migrations/20260902_000002_agent_external_id.js.map +1 -0
  146. package/dist/postgres/migrations/20260903_000001_drop_agent_metadata.js +18 -0
  147. package/dist/postgres/migrations/20260903_000001_drop_agent_metadata.js.map +1 -0
  148. package/dist/postgres/migrations/20260903_000002_created_by_subject.js +110 -0
  149. package/dist/postgres/migrations/20260903_000002_created_by_subject.js.map +1 -0
  150. package/dist/postgres/migrations/20260904_000001_schedule_agent_id.js +48 -0
  151. package/dist/postgres/migrations/20260904_000001_schedule_agent_id.js.map +1 -0
  152. package/dist/sqlite/migrations/20260821_000001_agent_compaction.js +69 -0
  153. package/dist/sqlite/migrations/20260821_000001_agent_compaction.js.map +1 -0
  154. package/dist/sqlite/migrations/20260827_000001_schedule.js +69 -0
  155. package/dist/sqlite/migrations/20260827_000001_schedule.js.map +1 -0
  156. package/dist/sqlite/migrations/20260827_000001_session_metrics.js +165 -0
  157. package/dist/sqlite/migrations/20260827_000001_session_metrics.js.map +1 -0
  158. package/dist/sqlite/migrations/20260828_000001_schedule_name_uq.js +20 -0
  159. package/dist/sqlite/migrations/20260828_000001_schedule_name_uq.js.map +1 -0
  160. package/dist/sqlite/migrations/20260831_000001_session_external_id.js +28 -0
  161. package/dist/sqlite/migrations/20260831_000001_session_external_id.js.map +1 -0
  162. package/dist/sqlite/migrations/20260901_000001_agent_metadata.js +92 -0
  163. package/dist/sqlite/migrations/20260901_000001_agent_metadata.js.map +1 -0
  164. package/dist/sqlite/migrations/20260902_000001_session_metadata.js +197 -0
  165. package/dist/sqlite/migrations/20260902_000001_session_metadata.js.map +1 -0
  166. package/dist/sqlite/migrations/20260902_000002_agent_external_id.js +28 -0
  167. package/dist/sqlite/migrations/20260902_000002_agent_external_id.js.map +1 -0
  168. package/dist/sqlite/migrations/20260903_000001_drop_agent_metadata.js +114 -0
  169. package/dist/sqlite/migrations/20260903_000001_drop_agent_metadata.js.map +1 -0
  170. package/dist/sqlite/migrations/20260903_000002_created_by_subject.js +496 -0
  171. package/dist/sqlite/migrations/20260903_000002_created_by_subject.js.map +1 -0
  172. package/dist/sqlite/migrations/20260904_000001_schedule_agent_id.js +131 -0
  173. package/dist/sqlite/migrations/20260904_000001_schedule_agent_id.js.map +1 -0
  174. package/package.json +31 -24
  175. package/dist/_frontend/assets/ConnectorSettings-ODC3LVHN-CAU9MgGN.js +0 -1
  176. package/dist/_frontend/assets/ConnectorSettings-ODC3LVHN-CAU9MgGN.js.br +0 -0
  177. package/dist/_frontend/assets/ConnectorSettings-ODC3LVHN-CAU9MgGN.js.gz +0 -0
  178. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-DWPAdLZz.js +0 -2
  179. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-DWPAdLZz.js.br +0 -0
  180. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-DWPAdLZz.js.gz +0 -0
  181. package/dist/_frontend/assets/ModelSettings-CKQ5CVAC-UBz_ch6T.js +0 -1
  182. package/dist/_frontend/assets/ModelSettings-CKQ5CVAC-UBz_ch6T.js.br +0 -0
  183. package/dist/_frontend/assets/ModelSettings-CKQ5CVAC-UBz_ch6T.js.gz +0 -0
  184. package/dist/_frontend/assets/SandboxSettings-HSCPYUOC-Csl-nC9h.js +0 -1
  185. package/dist/_frontend/assets/SandboxSettings-HSCPYUOC-Csl-nC9h.js.br +0 -0
  186. package/dist/_frontend/assets/SandboxSettings-HSCPYUOC-Csl-nC9h.js.gz +0 -0
  187. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-Ce3OWfa1.js +0 -2
  188. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-Ce3OWfa1.js.br +0 -0
  189. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-Ce3OWfa1.js.gz +0 -0
  190. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-B5lyCu4o.js +0 -1
  191. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-B5lyCu4o.js.br +0 -0
  192. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-B5lyCu4o.js.gz +0 -0
  193. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-CIx5jQIC.js +0 -2
  194. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-CIx5jQIC.js.br +0 -0
  195. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-CIx5jQIC.js.gz +0 -0
  196. package/dist/_frontend/assets/SkillSettings-ECH6SHZ7-CKWEzdO_.js +0 -1
  197. package/dist/_frontend/assets/SkillSettings-ECH6SHZ7-CKWEzdO_.js.br +0 -0
  198. package/dist/_frontend/assets/SkillSettings-ECH6SHZ7-CKWEzdO_.js.gz +0 -0
  199. package/dist/_frontend/assets/TrueForgeUIWithRouter-RKZ2E7PV-CoVbEgto.js +0 -1
  200. package/dist/_frontend/assets/WidgetLayout-NWWB2SXI-cUmY1p2v.js +0 -1
  201. package/dist/_frontend/assets/WidgetLayout-NWWB2SXI-cUmY1p2v.js.br +0 -0
  202. package/dist/_frontend/assets/WidgetLayout-NWWB2SXI-cUmY1p2v.js.gz +0 -0
  203. package/dist/_frontend/assets/chunk-62JRHF6Z-BftTGWZl.js +0 -12
  204. package/dist/_frontend/assets/chunk-62JRHF6Z-BftTGWZl.js.br +0 -0
  205. package/dist/_frontend/assets/chunk-62JRHF6Z-BftTGWZl.js.gz +0 -0
  206. package/dist/_frontend/assets/chunk-OZTNBS6V-CLmmFX7d.js +0 -4
  207. package/dist/_frontend/assets/chunk-OZTNBS6V-CLmmFX7d.js.br +0 -0
  208. package/dist/_frontend/assets/chunk-OZTNBS6V-CLmmFX7d.js.gz +0 -0
  209. package/dist/_frontend/assets/chunk-TCAVLWYL-DVhtkE3q.js +0 -2
  210. package/dist/_frontend/assets/chunk-TCAVLWYL-DVhtkE3q.js.br +0 -0
  211. package/dist/_frontend/assets/chunk-TCAVLWYL-DVhtkE3q.js.gz +0 -0
  212. package/dist/_frontend/assets/cssMode-CvKwYh_L.js.br +0 -0
  213. package/dist/_frontend/assets/cssMode-CvKwYh_L.js.gz +0 -0
  214. package/dist/_frontend/assets/freemarker2-Bb2yOpT3.js.br +0 -0
  215. package/dist/_frontend/assets/freemarker2-Bb2yOpT3.js.gz +0 -0
  216. package/dist/_frontend/assets/handlebars-FL3wsxe0.js.br +0 -0
  217. package/dist/_frontend/assets/handlebars-FL3wsxe0.js.gz +0 -0
  218. package/dist/_frontend/assets/html-Cb3v_ZRD.js.br +0 -0
  219. package/dist/_frontend/assets/html-Cb3v_ZRD.js.gz +0 -0
  220. package/dist/_frontend/assets/htmlMode-JQDvK0Qf.js.br +0 -0
  221. package/dist/_frontend/assets/htmlMode-JQDvK0Qf.js.gz +0 -0
  222. package/dist/_frontend/assets/index-DEKCw40W.css.br +0 -0
  223. package/dist/_frontend/assets/index-DEKCw40W.css.gz +0 -0
  224. package/dist/_frontend/assets/index-DJ1uWGdt.js +0 -859
  225. package/dist/_frontend/assets/index-DJ1uWGdt.js.br +0 -0
  226. package/dist/_frontend/assets/index-DJ1uWGdt.js.gz +0 -0
  227. package/dist/_frontend/assets/index-DRjgykCE.js.br +0 -0
  228. package/dist/_frontend/assets/index-DRjgykCE.js.gz +0 -0
  229. package/dist/_frontend/assets/jsonMode-DnbseMlM.js.br +0 -0
  230. package/dist/_frontend/assets/jsonMode-DnbseMlM.js.gz +0 -0
  231. package/dist/_frontend/assets/liquid-DeE37I1e.js.br +0 -0
  232. package/dist/_frontend/assets/liquid-DeE37I1e.js.gz +0 -0
  233. package/dist/_frontend/assets/lspLanguageFeatures-Bty8j9di.js.br +0 -0
  234. package/dist/_frontend/assets/lspLanguageFeatures-Bty8j9di.js.gz +0 -0
  235. package/dist/_frontend/assets/mdx-DfKPZX1Z.js.br +0 -0
  236. package/dist/_frontend/assets/mdx-DfKPZX1Z.js.gz +0 -0
  237. package/dist/_frontend/assets/python-2i3Kiv75.js.br +0 -0
  238. package/dist/_frontend/assets/python-2i3Kiv75.js.gz +0 -0
  239. package/dist/_frontend/assets/razor-B0N4vZnc.js.br +0 -0
  240. package/dist/_frontend/assets/razor-B0N4vZnc.js.gz +0 -0
  241. package/dist/_frontend/assets/tsMode-D1Y8xh-o.js.br +0 -0
  242. package/dist/_frontend/assets/tsMode-D1Y8xh-o.js.gz +0 -0
  243. package/dist/_frontend/assets/typescript-2nhip0PT.js.br +0 -0
  244. package/dist/_frontend/assets/typescript-2nhip0PT.js.gz +0 -0
  245. package/dist/_frontend/assets/workers-DSmTvA39.js.br +0 -0
  246. package/dist/_frontend/assets/workers-DSmTvA39.js.gz +0 -0
  247. package/dist/_frontend/assets/xml-CA4M6Pks.js.br +0 -0
  248. package/dist/_frontend/assets/xml-CA4M6Pks.js.gz +0 -0
  249. package/dist/_frontend/assets/yaml-D5KNk7Ji.js.br +0 -0
  250. package/dist/_frontend/assets/yaml-D5KNk7Ji.js.gz +0 -0
  251. package/dist/_frontend/index.html.br +0 -0
  252. package/dist/_frontend/index.html.gz +0 -0
package/README.md CHANGED
@@ -8,7 +8,7 @@ TrueForge runs the agent loop (model calls, MCP tools, skills, sandboxing, appro
8
8
 
9
9
  ## Quick start
10
10
 
11
- Requires [Node.js](https://nodejs.org) 22+.
11
+ Requires [Node.js](https://nodejs.org) 22.14+.
12
12
 
13
13
  ```bash
14
14
  npx @truefoundry/trueforge
@@ -0,0 +1 @@
1
+ import{b as i,r as o,j as a,I as u,d}from"./index-DVCxCjDg.js";function b({snippets:t}){var c;const m=i("AgentCodeBlock"),[g,n]=o.useState((c=t[0])==null?void 0:c.language),[s,l]=o.useState("stream");o.useEffect(()=>{var e;n((e=t[0])==null?void 0:e.language),l("stream")},[t]);const r=t.find(e=>e.language===g)??t[0];return r===void 0?a.jsx("div",{className:"flex h-full min-h-64 items-center justify-center px-6 text-sm text-text-secondary",children:"No code samples for this agent."}):a.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-3 p-3 md:flex-row",children:[a.jsx("nav",{"aria-label":"Code sample languages",className:"flex shrink-0 gap-1 overflow-auto md:w-44 md:flex-col",children:t.map(e=>a.jsxs("button",{type:"button","aria-current":r.language===e.language?"page":void 0,className:d("flex h-9 shrink-0 cursor-pointer items-center gap-2 rounded-md px-2.5 text-left text-xs text-text-secondary","hover:bg-ghost-button-hover hover:text-text-primary",r.language===e.language&&"bg-primary-button-bg/10 font-medium text-primary-button-bg"),onClick:()=>n(e.language),children:[e.icon?a.jsx("img",{src:e.icon,alt:"",className:"size-4 shrink-0 object-contain"}):a.jsx(u,{name:"code",className:"size-4 shrink-0"}),e.labelName]},e.language))}),a.jsxs("section",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card-bg",children:[a.jsx("div",{className:"flex h-10 shrink-0 items-end gap-1 border-b border-border px-3",children:[["stream","Stream"],["nonStream","Non-stream"]].map(([e,x])=>a.jsx("button",{type:"button",className:d("relative h-10 cursor-pointer px-3 text-xs font-medium text-text-secondary",s===e&&"text-primary-button-bg after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:bg-primary-button-bg"),onClick:()=>l(e),children:x},e))}),a.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:a.jsx(m,{code:r.sampleCode[s],language:r.language})})]})]})}export{b as default};
@@ -0,0 +1 @@
1
+ import{x as L,r as d,j as a,U as j,R as C}from"./index-DVCxCjDg.js";import{b as k,C as R,c as M,L as T,d as w,P as D,e as S,p as $}from"./index-DuKoX4ct.js";R.register(M,T,w,D,S,$);var p=["#2563eb","#16a34a","#9333ea","#ea580c","#0891b2"],F=["#60a5fa","#4ade80","#c084fc","#fb923c","#22d3ee"],A=new Intl.NumberFormat(void 0,{maximumFractionDigits:4}),E=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function b(e,t){return t==="$"?j(e):t==="ms"?C(e):`${A.format(e)}${t==="count"||t.length===0?"":` ${t}`}`}function O(e){const t=new Date(e);return Number.isNaN(t.getTime())?e:E.format(t)}function I({graph:e,definition:t,error:u}){const l=L(),r=l==="dark"?F:p,n=l==="dark"?"#a1a1aa":"#71717a",m=l==="dark"?"#27272a":"#e4e4e7",c=d.useMemo(()=>e==null?[]:[...new Set(e.graphLines.flatMap(s=>s.values.map(o=>o.timestamp)))].sort(),[e]),f=d.useMemo(()=>({labels:c.map(O),datasets:(e==null?void 0:e.graphLines.map((s,o)=>{const N=new Map(s.values.map(i=>[i.timestamp,i.value])),x=r[o%r.length];return{label:s.name,data:c.map(i=>N.get(i)??null),borderColor:x,backgroundColor:x,pointRadius:2,pointHoverRadius:4,borderWidth:2,tension:.25,spanGaps:!0}}))??[]}),[r,e,c]),v=d.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,animation:!1,interaction:{intersect:!1,mode:"index"},plugins:{legend:{display:((e==null?void 0:e.graphLines.length)??0)>1,labels:{color:n,boxWidth:10,boxHeight:2}},tooltip:{callbacks:{label:s=>{const o=s.parsed.y;return`${s.dataset.label??""}: ${o==null?"—":b(o,(e==null?void 0:e.unit)??"")}`}}}},scales:{x:{grid:{display:!1},border:{color:m},ticks:{color:n,maxRotation:0,autoSkip:!0,maxTicksLimit:8}},y:{beginAtZero:!0,grid:{color:m},border:{display:!1},ticks:{color:n,callback:s=>b(Number(s),(e==null?void 0:e.unit)??"")}}}}),[n,e,m]),y=(e==null?void 0:e.graphLines.some(s=>s.values.length>0))===!0;return a.jsxs("section",{className:"min-w-0 rounded-lg border border-border bg-card-bg p-4","data-slot":"agent-metric-chart",children:[a.jsx("h3",{className:"text-sm font-semibold text-text-primary",children:(e==null?void 0:e.displayName)??t.displayName}),a.jsx("p",{className:"mt-1 text-xs text-text-secondary",children:(e==null?void 0:e.description)??t.description}),a.jsx("div",{className:"mt-4 h-64",children:u!=null?a.jsx("div",{className:"flex h-full items-center justify-center text-sm text-failure-bg",children:u}):y?a.jsx(k,{data:f,options:v}):a.jsx("div",{className:"flex h-full items-center justify-center text-sm text-text-secondary",children:"No data"})})]})}export{I as AgentMetricChart};
@@ -0,0 +1 @@
1
+ import{b as R,r as _,j as e,I as O,d as D}from"./index-DVCxCjDg.js";var i="text-right font-mono text-primary-button-bg";function p(t){return typeof t=="object"&&t!=null}function u(t){return!("name"in t)||typeof t.name!="string"?null:t.name}function x(t,...a){for(const l of a){const c=t==null?void 0:t[l];if(c!==void 0)return c}}function U(t){if(!p(t))return!1;const a=x(t,"enableTools","enable_tools");return a===void 0||Array.isArray(a)&&a.includes("@all")}function V(t){const a=t.lastIndexOf("/");return a>=0?t.slice(a+1):t}function L({detail:t}){var C,S,A,I,M,E,T,$;const a=R("Markdown"),l=R("AgentOverviewCard"),[c,F]=_.useState("markdown"),[h,g]=_.useState(!1),n=t.agentSpec,f=n.skills??[],b=n.mcpServers??[],j=p(n.model.params)?n.model.params:null,y=x(j,"maxTokens","max_tokens"),N=x(j,"temperature"),o=p(n.config)?n.config:null,m=p(o==null?void 0:o.sandbox)?o.sandbox:null,d=(C=n.instructions)!=null&&C.trim()?n.instructions:null,v=[["Sandbox",typeof(m==null?void 0:m.enabled)=="boolean"?m.enabled?"Enabled":"Disabled":void 0],["Iteration limit",x(o,"iterationLimit","iteration_limit")],["Response format",x(o,"responseFormat","response_format")]].filter(s=>typeof s[1]=="string"||typeof s[1]=="number"),w=[["Generative UI",(A=(S=n.config)==null?void 0:S.generativeUi)==null?void 0:A.enabled],["Dynamic sub-agents",(M=(I=n.config)==null?void 0:I.dynamicSubAgents)==null?void 0:M.enabled],["Ask user questions",(T=(E=n.config)==null?void 0:E.askUserQuestions)==null?void 0:T.enabled]].filter(s=>typeof s[1]=="boolean"),k=c==="markdown"?"Raw":"Markdown";return e.jsxs("div",{className:"grid min-h-0 flex-1 gap-3 overflow-auto p-4 md:grid-cols-[minmax(0,1fr)_18rem] md:overflow-hidden",children:[e.jsxs("section",{className:"flex min-h-64 flex-col rounded-lg border border-border bg-card-bg p-4 text-text-primary",children:[e.jsxs("div",{className:"mb-3 flex shrink-0 items-center justify-between gap-2",children:[e.jsxs("h2",{className:"flex items-center gap-1.5 text-sm font-semibold text-text-primary",children:[e.jsx(O,{name:"book-open",className:"size-4 text-text-secondary"}),"Instructions"]}),d?e.jsxs("div",{className:"inline-flex h-7 items-stretch overflow-hidden rounded-md border border-border bg-primary-bg text-xs font-medium text-text-secondary",role:"group","aria-label":"Instructions actions",children:[e.jsx("button",{type:"button","aria-label":`Show ${k}`,onClick:()=>F(s=>s==="markdown"?"raw":"markdown"),className:"cursor-pointer px-2.5 transition-colors hover:bg-ghost-button-hover hover:text-text-primary",children:k}),e.jsx("span",{className:"w-px self-stretch bg-border","aria-hidden":!0}),e.jsx("button",{type:"button",title:h?"Copied!":"Copy","aria-label":h?"Copied!":"Copy",onClick:()=>{navigator.clipboard.writeText(d).then(()=>{g(!0),setTimeout(()=>g(!1),2e3)})},className:"inline-flex cursor-pointer items-center justify-center px-2 transition-colors hover:bg-ghost-button-hover hover:text-text-primary",children:e.jsx(O,{name:h?"check":"copy",size:12})})]}):null]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:d?c==="markdown"?e.jsx(a,{content:d,readOnly:!0,className:"text-sm"}):e.jsx("pre",{className:"whitespace-pre-wrap break-words font-mono text-sm text-text-primary",children:d}):e.jsx("p",{className:"text-sm text-text-secondary",children:"No instructions for this agent."})})]}),e.jsxs("aside",{className:"flex min-h-0 min-w-0 flex-col gap-3 md:overflow-auto",children:[e.jsx(l,{title:"Model Configuration",icon:"cpu",children:e.jsxs("dl",{className:"grid grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-1 text-xs",children:[e.jsx("dt",{className:"text-text-secondary",children:"Model"}),e.jsx("dd",{className:D(i,"truncate"),title:n.model.name,children:V(n.model.name)}),typeof y=="number"?e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-text-secondary",children:"Max tokens"}),e.jsx("dd",{className:i,children:y})]}):null,(($=n.model.params)==null?void 0:$.reasoningEffort)!==void 0?e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-text-secondary",children:"Reasoning"}),e.jsx("dd",{className:i,children:n.model.params.reasoningEffort})]}):null,typeof N=="number"?e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-text-secondary",children:"Temperature"}),e.jsx("dd",{className:i,children:N})]}):null]})}),e.jsx(l,{title:"MCP Servers",icon:"plug",count:b.length,children:b.length===0?e.jsx("p",{className:"text-xs text-text-secondary",children:"No connectors attached."}):e.jsx("ul",{className:"space-y-1.5",children:b.map((s,r)=>e.jsx("li",{className:"rounded-md bg-secondary-bg px-2 py-1.5 text-xs",children:e.jsxs("span",{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{className:"truncate",children:u(s)??`Connector ${r+1}`}),U(s)?e.jsx("span",{className:"shrink-0 rounded-full bg-primary-button-bg/10 px-1.5 py-0.5 text-[10px] text-primary-button-bg",children:"All tools"}):null]})},`${u(s)??"connector"}-${r}`))})}),e.jsx(l,{title:"Attached Skills",icon:"lightbulb",count:f.length,children:f.length===0?e.jsx("p",{className:"text-xs text-text-secondary",children:"No skills attached."}):e.jsx("ul",{className:"space-y-1.5",children:f.map((s,r)=>e.jsx("li",{className:"rounded-md bg-secondary-bg px-2 py-1.5 text-xs",children:u(s)??`Skill ${r+1}`},`${u(s)??"skill"}-${r}`))})}),v.length>0?e.jsx(l,{title:"Execution",icon:"terminal",children:e.jsx("dl",{className:"space-y-1 text-xs",children:v.map(([s,r])=>e.jsxs("div",{className:"flex justify-between gap-3",children:[e.jsx("dt",{className:"text-text-secondary",children:s}),e.jsx("dd",{className:i,children:r})]},s))})}):null,w.length>0?e.jsx(l,{title:"Capabilities",icon:"cube",children:e.jsx("dl",{className:"space-y-1 text-xs",children:w.map(([s,r])=>e.jsxs("div",{className:"flex justify-between gap-3",children:[e.jsx("dt",{className:"text-text-secondary",children:s}),e.jsx("dd",{className:i,children:r?"Enabled":"Disabled"})]},s))})}):null]})]})}export{L as default};
@@ -0,0 +1 @@
1
+ import{b as m,r,v as u,j as t,d as b}from"./index-DVCxCjDg.js";function h({turns:i,segments:a,onSelectTurn:o}){const d=m("AgentSessionEventTimelineChart"),[l,c]=r.useState(()=>new Set),x=r.useMemo(()=>{const e=new Set(a.map(s=>s.type));return u.filter(s=>e.has(s.id))},[a]),p=r.useCallback(e=>{c(s=>{const n=new Set(s);return n.has(e)?n.delete(e):n.add(e),n})},[]);return a.length===0?null:t.jsxs("div",{className:"w-full","data-slot":"agent-session-event-timeline",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-b border-border px-3 py-2","data-slot":"agent-session-event-types",children:[t.jsx("span",{className:"text-xs font-medium uppercase text-text-secondary",children:"Event types"}),t.jsx("div",{className:"flex flex-wrap items-center gap-1",children:x.map(e=>{const s=!l.has(e.id);return t.jsxs("button",{type:"button","aria-pressed":s,className:b("flex items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium",s?"border-border text-text-primary":"border-transparent text-text-secondary opacity-80"),onClick:()=>p(e.id),children:[t.jsx("span",{className:"size-2 rounded-sm",style:{backgroundColor:e.color}}),e.label]},e.id)})})]}),t.jsx("div",{className:"w-full py-2",children:t.jsx(d,{turns:i,segments:a,hiddenTypes:l,onSelectTurn:o})})]})}export{h as AgentSessionEventTimeline};
@@ -0,0 +1 @@
1
+ import{x as ge,r,y as ke,z as Te,A as Ae,B as Se,M as Ee,D as Ce,E as p,F as V,G as D,H as de,J as y,K as _e,L as Ie,N as Re,j as s,O as Le,Q as Pe,R as De,U as Oe,V as Be,W as Ge,X as $e}from"./index-DVCxCjDg.js";import{B as He,C as Xe,L as Ue,a as We,p as ze}from"./index-DuKoX4ct.js";function Ve(n){return n.type!=="system"||n.description.trim().length>0}function Fe({segment:n,subAgentLabel:a}){const c=!n.isMarker&&!Ge.has(n.type),i=n.description.trim();return n.type==="system"?i.length===0?null:s.jsx("p",{className:"max-w-[25rem] whitespace-normal break-words text-xs font-medium text-text-primary",children:i}):s.jsxs("div",{className:"max-h-72 max-w-[25rem] overflow-auto whitespace-normal break-words text-xs",children:[a!=null?s.jsx("div",{className:"border-b border-border py-1.5 text-text-secondary",children:`Sub-Agent: ${a}`}):null,s.jsxs("div",{className:"flex items-center justify-between gap-3 pt-1",children:[s.jsx("span",{className:n.type==="error"?"font-medium text-failure-bg":"font-medium text-text-secondary",children:$e(n.type)}),c?s.jsx("span",{className:"tabular-nums text-text-secondary",children:y(n.endMs-n.startMs)}):null]}),i.length>0?s.jsx("p",{className:"mt-1.5 line-clamp-6 font-medium text-text-primary",children:i}):null]})}function Ke({turn:n,turnNumber:a,durationMs:c,segments:i}){return s.jsxs("div",{className:"max-h-72 w-72 max-w-full overflow-auto text-xs text-text-primary",children:[s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("span",{className:"font-semibold",children:`Turn ${a}`}),s.jsx("span",{className:"tabular-nums text-text-secondary",children:De(c)})]}),s.jsxs("div",{className:"mt-1 flex flex-col text-text-secondary",children:[n.totalCostInUsd!=null?s.jsx("span",{children:`Cost: ${Oe(n.totalCostInUsd)}`}):null,n.totalTokens!=null?s.jsx("span",{children:`Tokens: ${Be(n.totalTokens)}`}):null]}),s.jsx("div",{className:"mt-2 border-t border-border pt-2",children:i.map(u=>{const v=u.type==="tool_call"||u.type==="sub_agent"?u.description:u.title;return s.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[s.jsx("span",{className:"size-1.5 shrink-0 rounded-full",style:{backgroundColor:D(u.type)}}),s.jsx("span",{className:"min-w-0 flex-1 truncate",children:v}),u.isMarker?null:s.jsx("span",{className:"ml-auto shrink-0 tabular-nums text-text-secondary",children:y(u.endMs-u.startMs)})]},u.id)})})]})}function Je({group:n}){return s.jsxs("div",{className:"max-h-72 w-80 max-w-full overflow-auto text-xs",children:[s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("span",{className:"font-medium text-text-secondary",children:"Tool calls"}),s.jsx("span",{className:"tabular-nums text-text-secondary",children:y(n.endMs-n.startMs)})]}),s.jsx("div",{className:"mt-1.5 border-t border-border pt-1.5",children:n.segments.map(a=>s.jsxs("div",{className:"flex items-center justify-between gap-2 py-0.5",children:[s.jsx("span",{className:"min-w-0 truncate font-medium text-text-primary",children:a.description||a.title}),s.jsx("span",{className:"shrink-0 tabular-nums text-text-secondary",children:y(a.endMs-a.startMs)})]},a.id))})]})}function Qe({group:n}){return s.jsxs("div",{className:"max-h-72 w-80 max-w-full overflow-auto text-xs",children:[s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("span",{className:"font-medium text-text-secondary",children:"Sub-agents"}),s.jsx("span",{className:"tabular-nums text-text-secondary",children:y(n.endMs-n.startMs)})]}),s.jsx("div",{className:"mt-1.5 border-t border-border pt-1.5",children:n.segments.map((a,c)=>s.jsxs("div",{className:"flex items-center justify-between gap-2 py-0.5",children:[s.jsx("span",{className:"min-w-0 truncate font-medium text-text-primary",children:`Sub-agent ${c+1}: ${a.description||a.title}`}),s.jsx("span",{className:"shrink-0 tabular-nums text-text-secondary",children:y(a.endMs-a.startMs)})]},a.id))})]})}Xe.register(Ue,We,ze);var F=4,pe=12,me=12,Ye=2,qe=8,Ze=30;function et(n,a){const c=[];let i=0;for(const u of n)c.push(i+u/2),i+=u+a;return{centers:c,band:Math.max(0,i-a)}}function K(n){return n==="sub_agent"?0:n==="model"?2:1}function tt(n){if(!("x"in n)||!("y"in n)||!("base"in n))return null;const{x:a,y:c,base:i}=n;return typeof a!="number"||typeof c!="number"||typeof i!="number"?null:{x:(a+i)/2,y:c}}function rt({turns:n,segments:a,hiddenTypes:c,onSelectTurn:i}){var ce;const v=ge()==="dark",T=v?"#8c8c92":"#71717a",O=v?"#27272a":"#e4e4e7",J=v?"#3f3f46":"#e4e4e7",Q=v?"#52525b":"#d4d4d8",B=r.useRef(null),[Y,xe]=r.useState(0),[q,fe]=r.useState(Ze),[o,Z]=r.useState(null),[he,G]=r.useState(null),$=r.useRef(""),H=r.useRef(null);r.useEffect(()=>{const e=B.current;if(e==null)return;const t=()=>xe(e.clientWidth);t();const l=new ResizeObserver(t);return l.observe(e),()=>l.disconnect()},[]);const x=r.useCallback(()=>{const e=B.current,t=H.current;e==null||t==null||G({left:t,top:e.getBoundingClientRect().bottom})},[]),be=r.useCallback(()=>{$.current="",H.current=null,Z(null),G(null)},[]);r.useEffect(()=>{if(o!=null)return x(),window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",x)}},[x,o]);const ee=Math.max(1,...a.map(e=>e.endMs)),{turnStartsMs:X,turnOrdinals:te,turnRanges:U}=r.useMemo(()=>ke(a),[a]),se=Math.max(0,X.length-1),ye=Math.max(Y/2,Y-pe*se-me),M=ee/Math.max(1,ye),f=pe*M,A=ee+se*f,S=A+me*M,ne=r.useMemo(()=>X.slice(1).map((e,t)=>({startMs:e+t*f,endMs:e+(t+1)*f})),[f,X]),w=r.useMemo(()=>a.flatMap(e=>{if(c.has(e.type))return[];const t=(te.get(e.turnIndex)??0)*f;return[{...e,startMs:e.startMs+t,endMs:e.endMs+t}]}),[c,a,f,te]),b=r.useMemo(()=>U.length<2?[]:U.map(e=>({...e,id:`turn-${e.turnIndex}`,durationMs:e.endMs-e.startMs,startMs:e.startMs+e.ordinal*f,endMs:e.endMs+e.ordinal*f+F*M})),[M,f,U]),j=r.useMemo(()=>w.filter(e=>e.type==="sub_agent"),[w]),E=r.useMemo(()=>Te(j),[j]),re=r.useMemo(()=>Ae({bars:E,subAgentSegments:j}),[E,j]),N=r.useMemo(()=>Se({subAgentSegments:j,threadSegments:w,minWidthMs:F*M}),[M,j,w]),C=r.useMemo(()=>{const e=new Set(E.map(t=>t.id));return w.filter(t=>t.threadId===Ee||t.type==="sub_agent"&&e.has(t.id))},[E,w]),g=r.useMemo(()=>Ce(C.filter(e=>e.type==="tool_call")).filter(e=>e.segments.length>1),[C]),ae=r.useMemo(()=>new Set(g.flatMap(e=>e.segments.map(t=>t.id))),[g]),_=r.useMemo(()=>C.filter(e=>!ae.has(e.id)),[ae,C]),oe=N.reduce((e,t)=>Math.max(e,t.lane+1),0),W=b.length>0,I=W?1:0,{centers:k,band:R}=r.useMemo(()=>et([...W?[16]:[],28,...Array.from({length:oe},()=>12)],qe),[W,oe]),z=r.useMemo(()=>[...b.map(e=>({type:p.turn,bar:e})),...N.flatMap(e=>e.segments.map(t=>({type:p.event,segment:t}))),..._.map(e=>{if(e.type!=="sub_agent")return{type:p.event,segment:e};const t=re.find(l=>l.barId===e.id);return t==null?{type:p.event,segment:e}:{type:p.subAgentGroup,group:t}}),...g.map(e=>({type:p.toolCallGroup,group:e}))],[_,re,N,g,b]),L=({label:e,range:t,y:l,color:d,hover:m,thickness:h,order:P=1,inflateAmount:ue})=>({label:e,data:[{x:Pe(t),y:l}],backgroundColor:d,hoverBackgroundColor:m,hoverBorderColor:m,borderWidth:0,borderSkipped:!1,borderRadius:Ye,minBarLength:F,barThickness:h,grouped:!1,order:P,...ue==null?{}:{inflateAmount:ue}}),ve=r.useMemo(()=>({datasets:[...b.map(e=>L({label:`Turn ${e.ordinal+1}`,range:e,y:k[0]??0,color:J,hover:Q,thickness:16})),...N.flatMap(e=>e.segments.map(t=>L({label:`${de(t.type)}: ${t.title}`,range:t,y:k[I+1+e.lane]??0,color:D(t.type),hover:V(t.type),thickness:12,order:K(t.type),inflateAmount:.5}))),..._.map(e=>L({label:`${de(e.type)}: ${e.title}`,range:e,y:k[I]??0,color:D(e.type),hover:V(e.type),thickness:28,order:K(e.type),inflateAmount:.5})),...g.map(e=>L({label:"Parallel tool calls",range:e,y:k[I]??0,color:D("tool_call"),hover:V("tool_call"),thickness:28,order:K("tool_call"),inflateAmount:.5}))]}),[k,I,_,N,g,b,J,Q]),Me=r.useMemo(()=>({id:"turnLabels",afterDatasetsDraw(e){const{ctx:t}=e;t.save(),t.fillStyle=T,t.font="500 10px sans-serif",t.textAlign="center",t.textBaseline="middle",b.forEach((l,d)=>{const m=e.getDatasetMeta(d).data[0];if(m==null)return;const h=tt(m);h&&t.fillText(`T${l.ordinal+1}`,h.x,h.y)}),t.restore()}}),[T,b]),we=r.useMemo(()=>({id:"timelineOverhead",afterLayout(e){const t=Math.round(e.height-e.chartArea.height);fe(l=>l===t?l:t)}}),[]),je=r.useMemo(()=>({indexAxis:"y",animation:!1,responsive:!0,maintainAspectRatio:!1,onClick:(e,t)=>{var d;const l=z[((d=t[0])==null?void 0:d.datasetIndex)??-1];(l==null?void 0:l.type)===p.turn&&(i==null||i(l.bar.turnIndex))},onHover:(e,t)=>{var P;const l=(P=t[0])==null?void 0:P.datasetIndex,d=l==null?null:z[l]??null,m=e.native;if((m==null?void 0:m.target)instanceof HTMLElement&&(m.target.style.cursor=(d==null?void 0:d.type)===p.turn?"pointer":"default"),m instanceof MouseEvent&&(H.current=m.clientX,x()),l==null)return;const h=Re(d);if($.current!==h){if($.current=h,Z(d),d==null){G(null);return}x()}},plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{type:"linear",position:"top",min:0,max:S,grid:{color:O},border:{color:O},afterBuildTicks:e=>{e.ticks=Ie({ticks:e.ticks,totalMs:A,timelineMaxMs:S})},ticks:{color:T,autoSkip:!1,includeBounds:!0,maxTicksLimit:9,stepSize:S/8,callback:e=>{const t=Number(e);return t<=A?y(_e(t,ne)):""}}},y:{type:"linear",display:!1,reverse:!0,offset:!1,min:0,max:R,grid:{display:!1}}}}),[T,R,z,O,i,x,ne,S,A]),le=(o==null?void 0:o.type)===p.turn?n[o.bar.turnIndex]:void 0,Ne=r.useMemo(()=>({height:R+q}),[R,q]),ie=(o==null?void 0:o.type)===p.turn&&le!=null?s.jsx(Ke,{turn:le,turnNumber:o.bar.ordinal+1,durationMs:o.bar.durationMs,segments:a.filter(e=>e.turnIndex===o.bar.turnIndex)}):(o==null?void 0:o.type)===p.event&&Ve(o.segment)?s.jsx(Fe,{segment:o.segment,subAgentLabel:o.segment.type==="sub_agent"||(ce=N.find(e=>e.threadId===o.segment.threadId))==null?void 0:ce.track.description}):(o==null?void 0:o.type)===p.toolCallGroup?s.jsx(Je,{group:o.group}):(o==null?void 0:o.type)===p.subAgentGroup?s.jsx(Qe,{group:o.group}):null;return s.jsx("div",{ref:B,className:"w-full","data-slot":"agent-session-event-timeline-chart",children:s.jsx(Le,{title:ie,side:"bottom",triggerClassName:"block w-full",followCursor:!0,open:o!=null&&ie!=null,className:"max-w-[min(25rem,calc(100vw-1rem))] whitespace-normal",anchor:he,children:s.jsx("div",{className:"w-full",style:Ne,onMouseLeave:be,children:s.jsx(He,{data:ve,options:je,plugins:[Me,we]})})})})}export{rt as AgentSessionEventTimelineChart};
@@ -0,0 +1 @@
1
+ var je=e=>{throw TypeError(e)};var Ae=(e,t,n)=>t.has(e)||je("Cannot "+n);var fe=(e,t,n)=>(Ae(e,t,"read from private field"),n?n.call(e):t.get(e)),Fe=(e,t,n)=>t.has(e)?je("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Oe=(e,t,n,o)=>(Ae(e,t,"write to private field"),o?o.call(e,n):t.set(e,n),n);import{a as xt}from"./chunk-WVE3F724-CL71bP7s.js";import{r as z,j as R,b9 as zt,a1 as wt,u as Ct,ba as Lt,bb as Pt,b as xe,bc as Rt,p as Ge,ab as Et,aa as Be,I as kt,d as Mt,bd as Dt}from"./index-DVCxCjDg.js";function It(e,t){const n=getComputedStyle(e),o=parseFloat(n.fontSize);return t*o}function Nt(e,t){const n=getComputedStyle(e.ownerDocument.documentElement),o=parseFloat(n.fontSize);return t*o}function Tt(e){return e/100*window.innerHeight}function jt(e){return e/100*window.innerWidth}function At(e){switch(typeof e){case"number":return[e,"px"];case"string":{const t=parseFloat(e);return e.endsWith("%")?[t,"%"]:e.endsWith("px")?[t,"px"]:e.endsWith("rem")?[t,"rem"]:e.endsWith("em")?[t,"em"]:e.endsWith("vh")?[t,"vh"]:e.endsWith("vw")?[t,"vw"]:[t,"%"]}}}function pe({groupSize:e,panelElement:t,styleProp:n}){let o;const[r,s]=At(n);switch(s){case"%":{o=r/100*e;break}case"px":{o=r;break}case"rem":{o=Nt(t,r);break}case"em":{o=It(t,r);break}case"vh":{o=Tt(r);break}case"vw":{o=jt(r);break}}return o}function G(e){return parseFloat(e.toFixed(3))}function ue({group:e}){const{orientation:t,panels:n}=e;return n.reduce((o,r)=>(o+=t==="horizontal"?r.element.offsetWidth:r.element.offsetHeight,o),0)}function Ce(e){const{panels:t}=e,n=ue({group:e});return n===0?t.map(o=>({groupResizeBehavior:o.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:o.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:o.panelConstraints.disabled,minSize:0,maxSize:100,panelId:o.id})):t.map(o=>{const{element:r,panelConstraints:s}=o;let u=0;if(s.collapsedSize!==void 0){const c=pe({groupSize:n,panelElement:r,styleProp:s.collapsedSize});u=G(c/n*100)}let a;if(s.defaultSize!==void 0){const c=pe({groupSize:n,panelElement:r,styleProp:s.defaultSize});a=G(c/n*100)}let i=0;if(s.minSize!==void 0){const c=pe({groupSize:n,panelElement:r,styleProp:s.minSize});i=G(c/n*100)}let l=100;if(s.maxSize!==void 0){const c=pe({groupSize:n,panelElement:r,styleProp:s.maxSize});l=G(c/n*100)}return{groupResizeBehavior:s.groupResizeBehavior,collapsedSize:u,collapsible:s.collapsible===!0,defaultSize:a,disabled:s.disabled,minSize:i,maxSize:l,panelId:o.id}})}function M(e,t="Assertion error"){if(!e)throw Error(t)}function Le(e,t){return Array.from(t).sort(e==="horizontal"?Ft:Ot)}function Ft(e,t){const n=e.element.offsetLeft-t.element.offsetLeft;return n!==0?n:e.element.offsetWidth-t.element.offsetWidth}function Ot(e,t){const n=e.element.offsetTop-t.element.offsetTop;return n!==0?n:e.element.offsetHeight-t.element.offsetHeight}function rt(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function it(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function Gt({orientation:e,rects:t,targetRect:n}){const o={x:n.x+n.width/2,y:n.y+n.height/2};let r,s=Number.MAX_VALUE;for(const u of t){const{x:a,y:i}=it(o,u),l=e==="horizontal"?a:i;l<s&&(s=l,r=u)}return M(r,"No rect found"),r}let be;function Bt(){return be===void 0&&(typeof matchMedia=="function"?be=!!matchMedia("(pointer:coarse)").matches:be=!1),be}function st(e){const{element:t,orientation:n,panels:o,separators:r}=e,s=Le(n,Array.from(t.children).filter(rt).map(v=>({element:v}))).map(({element:v})=>v),u=[];let a=!1,i=!1,l=-1,c=-1,h=0,f,x=[];{let v=-1;for(const d of s)d.hasAttribute("data-panel")&&(v++,d.hasAttribute("data-disabled")||(h++,l===-1&&(l=v),c=v))}if(h>1){let v=-1;for(const d of s)if(d.hasAttribute("data-panel")){v++;const g=o.find(p=>p.element===d);if(g){if(f){const p=f.element.getBoundingClientRect(),b=d.getBoundingClientRect();let S;if(i){const y=n==="horizontal"?new DOMRect(p.right,p.top,0,p.height):new DOMRect(p.left,p.bottom,p.width,0),m=n==="horizontal"?new DOMRect(b.left,b.top,0,b.height):new DOMRect(b.left,b.top,b.width,0);switch(x.length){case 0:{S=[y,m];break}case 1:{const k=x[0],C=Gt({orientation:n,rects:[p,b],targetRect:k.element.getBoundingClientRect()});S=[k,C===p?m:y];break}default:{S=x;break}}}else x.length?S=x:S=[n==="horizontal"?new DOMRect(p.right,b.top,b.left-p.right,b.height):new DOMRect(b.left,p.bottom,b.width,b.top-p.bottom)];for(const y of S){let m="width"in y?y:y.element.getBoundingClientRect();const k=Bt()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(m.width<k){const N=k-m.width;m=new DOMRect(m.x-N/2,m.y,m.width+N,m.height)}if(m.height<k){const N=k-m.height;m=new DOMRect(m.x,m.y-N/2,m.width,m.height+N)}const C=v<=l||v>c;!a&&!C&&u.push({group:e,groupSize:ue({group:e}),panels:[f,g],separator:"width"in y?void 0:y,rect:m}),a=!1}}i=!1,f=g,x=[]}}else if(d.hasAttribute("data-separator")){d.ariaDisabled!==null&&(a=!0);const g=r.find(p=>p.element===d);g?x.push(g):(f=void 0,x=[])}else i=!0}return u}var Y;class at{constructor(){Fe(this,Y,{})}addListener(t,n){const o=fe(this,Y)[t];return o===void 0?fe(this,Y)[t]=[n]:o.includes(n)||o.push(n),()=>{this.removeListener(t,n)}}emit(t,n){const o=fe(this,Y)[t];if(o!==void 0)if(o.length===1)o[0].call(null,n);else{let r=!1,s=null;const u=Array.from(o);for(let a=0;a<u.length;a++){const i=u[a];try{i.call(null,n)}catch(l){s===null&&(r=!0,s=l)}}if(r)throw s}}removeAllListeners(){Oe(this,Y,{})}removeListener(t,n){const o=fe(this,Y)[t];if(o!==void 0){const r=o.indexOf(n);r>=0&&o.splice(r,1)}}}Y=new WeakMap;let ae={cursorFlags:0,state:"inactive"};const Re=new at;function Z(){return ae}function $t(e){return Re.addListener("change",e)}function Ht(e){const t=ae,n={...ae};n.cursorFlags=e,ae=n,Re.emit("change",{prev:t,next:n})}function le(e){const t=ae;ae=e,Re.emit("change",{prev:t,next:e})}const Wt=e=>e,ze=()=>{},lt=1,ut=2,ct=4,dt=8,$e=3,He=12;let ye;function We(){return ye===void 0&&(ye=!1,typeof window<"u"&&(window.navigator.userAgent.includes("Chrome")||window.navigator.userAgent.includes("Firefox"))&&(ye=!0)),ye}function Ut({cursorFlags:e,groups:t,state:n}){let o=0,r=0;switch(n){case"active":case"hover":t.forEach(s=>{if(!s.mutableState.disableCursor)switch(s.orientation){case"horizontal":{o++;break}case"vertical":{r++;break}}})}if(!(o===0&&r===0)){switch(n){case"active":{if(e&&We()){const s=(e&lt)!==0,u=(e&ut)!==0,a=(e&ct)!==0,i=(e&dt)!==0;if(s)return a?"se-resize":i?"ne-resize":"e-resize";if(u)return a?"sw-resize":i?"nw-resize":"w-resize";if(a)return"s-resize";if(i)return"n-resize"}break}}return We()?o>0&&r>0?"move":o>0?"ew-resize":"ns-resize":o>0&&r>0?"grab":o>0?"col-resize":"row-resize"}}const Ue=new WeakMap;function Ee(e){if(!e.defaultView||!e.adoptedStyleSheets)return;let{prevStyle:t,styleSheet:n}=Ue.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));const o=Z();switch(o.state){case"active":case"hover":{const r=Ut({cursorFlags:o.cursorFlags,groups:o.hitRegions.map(u=>u.group),state:o.state}),s=`*, *:hover {cursor: ${r} !important; }`;if(t===s)return;t=s,r?n.cssRules.length===0?n.insertRule(s):n.replaceSync(s):n.cssRules.length===1&&n.deleteRule(0);break}case"inactive":{t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}}Ue.set(e,{prevStyle:t,styleSheet:n})}let W=new Map;const ft=new at;function Vt(e){W=new Map(W),W.delete(e)}function Ve(e,t){for(const[n]of W)if(n.id===e)return n}function q(e,t){for(const[n,o]of W)if(n.id===e)return o;if(t)throw Error(`Could not find data for Group with id ${e}`)}function X(){return W}function ke(e,t){return ft.addListener("groupChange",n=>{n.group.id===e&&t(n)})}function U(e,t,n){const o=W.get(e);W=new Map(W),W.set(e,t),ft.emit("groupChange",{group:e,isUserInteraction:(n==null?void 0:n.isUserInteraction)===!0,prev:o,next:t})}function pt(e){const t=Z(),n=X();let o=!1;switch(t.state){case"active":le({cursorFlags:0,state:"inactive"}),t.hitRegions.length>0&&(Ee(e),o=!0,t.hitRegions.forEach(r=>{if(!n.has(r.group))return;const s=q(r.group.id,!0);U(r.group,s,{isUserInteraction:!0})}))}return o}function Ye(e){e.defaultPrevented||pt(e.currentTarget)}function Yt(e,t,n){let o,r={x:1/0,y:1/0};for(const s of t){const u=it(n,s.rect);switch(e){case"horizontal":{u.x<=r.x&&(o=s,r=u);break}case"vertical":{u.y<=r.y&&(o=s,r=u);break}}}return o?{distance:r,hitRegion:o}:void 0}function qt(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function Xt(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:_e(e),b:_e(t)};let o;for(;n.a.at(-1)===n.b.at(-1);)o=n.a.pop(),n.b.pop();M(o,"Stacking order can only be calculated for elements with a common ancestor");const r={a:Xe(qe(n.a)),b:Xe(qe(n.b))};if(r.a===r.b){const s=o.childNodes,u={a:n.a.at(-1),b:n.b.at(-1)};let a=s.length;for(;a--;){const i=s[a];if(i===u.a)return 1;if(i===u.b)return-1}}return Math.sign(r.a-r.b)}const _t=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Jt(e){const t=getComputedStyle(ht(e)??e).display;return t==="flex"||t==="inline-flex"}function Kt(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||Jt(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||_t.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function qe(e){let t=e.length;for(;t--;){const n=e[t];if(M(n,"Missing node"),Kt(n))return n}return null}function Xe(e){return e&&Number(getComputedStyle(e).zIndex)||0}function _e(e){const t=[];for(;e;)t.push(e),e=ht(e);return t}function ht(e){const{parentNode:t}=e;return qt(t)?t.host:t}function Zt(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Qt({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!rt(n)||n.contains(e)||e.contains(n))return!0;if(Xt(n,e)>0){let o=n;for(;o;){if(o.contains(e))return!0;if(Zt(o.getBoundingClientRect(),t))return!1;o=o.parentElement}}return!0}function Me(e,t){const n=[];return t.forEach((o,r)=>{if(r.disabled)return;const s=st(r),u=Yt(r.orientation,s,{x:e.clientX,y:e.clientY});u&&u.distance.x<=0&&u.distance.y<=0&&Qt({groupElement:r.element,hitRegion:u.hitRegion.rect,pointerEventTarget:e.target})&&n.push(u.hitRegion)}),n}function en(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function O(e,t,n=0){return Math.abs(G(e)-G(t))<=n}function H(e,t){return O(e,t)?0:e>t?1:-1}function se({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:o}){const{collapsedSize:r=0,collapsible:s,disabled:u,maxSize:a=100,minSize:i=0}=t;if(u&&!e)return n;if(H(o,i)<0)if(s){const l=(r+i)/2;H(o,l)<0?o=r:o=i}else o=i;return o=Math.min(a,o),o=G(o),o}function ge({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:o,prevLayout:r,trigger:s}){if(O(e,0))return t;const u=s==="imperative-api",a=Object.values(t),i=Object.values(r),l=[...a],[c,h]=o;M(c!=null,"Invalid first pivot index"),M(h!=null,"Invalid second pivot index");let f=0;switch(s){case"keyboard":{{const d=e<0?h:c,g=n[d];M(g,`Panel constraints not found for index ${d}`);const{collapsedSize:p=0,collapsible:b,minSize:S=0}=g;if(b){const y=a[d];if(M(y!=null,`Previous layout not found for panel index ${d}`),O(y,p)){const m=S-y;H(m,Math.abs(e))>0&&(e=e<0?0-m:m)}}}{const d=e<0?c:h,g=n[d];M(g,`No panel constraints found for index ${d}`);const{collapsedSize:p=0,collapsible:b,minSize:S=0}=g;if(b){const y=a[d];if(M(y!=null,`Previous layout not found for panel index ${d}`),O(y,S)){const m=y-p;H(m,Math.abs(e))>0&&(e=e<0?0-m:m)}}}break}default:{const d=e<0?h:c,g=n[d];M(g,`Panel constraints not found for index ${d}`);const p=a[d],{collapsible:b,collapsedSize:S,minSize:y}=g;if(b&&H(p,y)<0)if(e>0){const m=y-S,k=m/2,C=p+e;H(C,y)<0&&(e=H(e,k)<=0?0:m)}else{const m=y-S,k=100-m/2,C=p-e;H(C,y)<0&&(e=H(100+e,k)>0?0:-m)}break}}{const d=e<0?1:-1;let g=e<0?h:c,p=0;for(;;){const S=a[g];M(S!=null,`Previous layout not found for panel index ${g}`);const y=se({overrideDisabledPanels:u,panelConstraints:n[g],prevSize:S,size:100})-S;if(p+=y,g+=d,g<0||g>=n.length)break}const b=Math.min(Math.abs(e),Math.abs(p));e=e<0?0-b:b}{let d=e<0?c:h;for(;d>=0&&d<n.length;){const g=Math.abs(e)-Math.abs(f),p=a[d];M(p!=null,`Previous layout not found for panel index ${d}`);const b=p-g,S=se({overrideDisabledPanels:u,panelConstraints:n[d],prevSize:p,size:b});if(!O(p,S)&&(f+=p-S,l[d]=S,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?d--:d++}}if(en(i,l))return r;{const d=e<0?h:c,g=a[d];M(g!=null,`Previous layout not found for panel index ${d}`);const p=g+f,b=se({overrideDisabledPanels:u,panelConstraints:n[d],prevSize:g,size:p});if(l[d]=b,!O(b,p)){let S=p-b,y=e<0?h:c;for(;y>=0&&y<n.length;){const m=l[y];M(m!=null,`Previous layout not found for panel index ${y}`);const k=m+S,C=se({overrideDisabledPanels:u,panelConstraints:n[y],prevSize:m,size:k});if(O(m,C)||(S-=C-m,l[y]=C),O(S,0))break;e>0?y--:y++}}}const x=Object.values(l).reduce((d,g)=>g+d,0);if(!O(x,100,.1))return r;const v=Object.keys(r);return l.reduce((d,g,p)=>(d[v[p]]=g,d),{})}function Q(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(t[n]===void 0||H(e[n],t[n])!==0)return!1;return!0}function ee({layout:e,panelConstraints:t}){const n=Object.values(e),o=[...n],r=o.reduce((a,i)=>a+i,0);if(o.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${o.map(a=>`${a}%`).join(", ")}`);if(!O(r,100)&&o.length>0)for(let a=0;a<t.length;a++){const i=o[a];M(i!=null,`No layout data found for index ${a}`);const l=100/r*i;o[a]=l}let s=0;for(let a=0;a<t.length;a++){const i=n[a];M(i!=null,`No layout data found for index ${a}`);const l=o[a];M(l!=null,`No layout data found for index ${a}`);const c=se({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:i,size:l});l!=c&&(s+=l-c,o[a]=c)}if(!O(s,0))for(let a=0;a<t.length;a++){const i=o[a];M(i!=null,`No layout data found for index ${a}`);const l=i+s,c=se({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:i,size:l});if(i!==c&&(s-=c-i,o[a]=c,O(s,0)))break}const u=Object.keys(e);return o.reduce((a,i,l)=>(a[u[l]]=i,a),{})}function gt({groupId:e,panelId:t}){const n=()=>{const i=X();for(const[l,{defaultLayoutDeferred:c,derivedPanelConstraints:h,layout:f,groupSize:x,separatorToPanels:v}]of i)if(l.id===e)return{defaultLayoutDeferred:c,derivedPanelConstraints:h,group:l,groupSize:x,layout:f,separatorToPanels:v};throw Error(`Group ${e} not found`)},o=()=>{const i=n().derivedPanelConstraints.find(l=>l.panelId===t);if(i!==void 0)return i;throw Error(`Panel constraints not found for Panel ${t}`)},r=()=>{const i=n().group.panels.find(l=>l.id===t);if(i!==void 0)return i;throw Error(`Layout not found for Panel ${t}`)},s=()=>{const i=n().layout[t];if(i!==void 0)return i;throw Error(`Layout not found for Panel ${t}`)},u=({nextSize:i,panels:l,prevLayout:c,derivedPanelConstraints:h})=>{const f=s(),x=l.findIndex(g=>g.id===t),v=x===0,d=x===l.length-1;if(d&&i<f&&(v||l.slice(0,x).every((g,p)=>{const b=h[p];return(b==null?void 0:b.collapsible)&&O(b.collapsedSize,c[b.panelId])}))){const g=l.slice(0,x).reduce((p,b)=>p+c[b.id],0);return{...c,[t]:G(100-g)}}return ge({delta:d?f-i:i-f,initialLayout:c,panelConstraints:h,pivotIndices:d?[x-1,x]:[x,x+1],prevLayout:c,trigger:"imperative-api"})},a=i=>{const l=s();if(i===l)return;const{defaultLayoutDeferred:c,derivedPanelConstraints:h,group:f,groupSize:x,layout:v,separatorToPanels:d}=n(),g=u({nextSize:i,panels:f.panels,prevLayout:v,derivedPanelConstraints:h}),p=ee({layout:g,panelConstraints:h});Q(v,p)||U(f,{defaultLayoutDeferred:c,derivedPanelConstraints:h,groupSize:x,layout:p,separatorToPanels:d})};return{collapse:()=>{const{collapsible:i,collapsedSize:l}=o(),{mutableValues:c}=r(),h=s();i&&h!==l&&(c.expandToSize=h,a(l))},expand:()=>{const{collapsible:i,collapsedSize:l,minSize:c}=o(),{mutableValues:h}=r(),f=s();if(i&&f===l){let x=h.expandToSize??c;x===0&&(x=1),a(x)}},getSize:()=>{const{group:i}=n(),l=s(),{element:c}=r(),h=i.orientation==="horizontal"?c.offsetWidth:c.offsetHeight;return{asPercentage:l,inPixels:h}},isCollapsed:()=>{const{collapsible:i,collapsedSize:l}=o(),c=s();return i&&O(l,c)},resize:i=>{const{group:l}=n(),{element:c}=r(),h=ue({group:l}),f=pe({groupSize:h,panelElement:c,styleProp:i}),x=G(f/h*100);a(x)}}}function Je(e){if(e.defaultPrevented)return;const t=X();Me(e,t).forEach(n=>{if(n.separator&&!n.separator.disableDoubleClick){const o=n.panels.find(r=>r.panelConstraints.defaultSize!==void 0);if(o){const r=o.panelConstraints.defaultSize,s=gt({groupId:n.group.id,panelId:o.id});s&&r!==void 0&&(s.resize(r),e.preventDefault())}}})}function Se(e){const t=X();for(const[n]of t)if(n.separators.some(o=>o.element===e))return n;throw Error("Could not find parent Group for separator element")}function mt({groupId:e}){const t=()=>{const n=X();for(const[o,r]of n)if(o.id===e)return{group:o,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){const{defaultLayoutDeferred:n,layout:o}=t();return n?{}:o},setLayout(n){const{defaultLayoutDeferred:o,derivedPanelConstraints:r,group:s,groupSize:u,layout:a,separatorToPanels:i}=t(),l=ee({layout:n,panelConstraints:r});return o?a:(Q(a,l)||U(s,{defaultLayoutDeferred:o,derivedPanelConstraints:r,groupSize:u,layout:l,separatorToPanels:i}),l)}}}function K(e,t){const n=Se(e),o=q(n.id,!0),r=n.separators.find(c=>c.element===e);M(r,"Matching separator not found");const s=o.separatorToPanels.get(r);M(s,"Matching panels not found");const u=s.map(c=>n.panels.indexOf(c)),a=mt({groupId:n.id}).getLayout(),i=ge({delta:t,initialLayout:a,panelConstraints:o.derivedPanelConstraints,pivotIndices:u,prevLayout:a,trigger:"keyboard"}),l=ee({layout:i,panelConstraints:o.derivedPanelConstraints});Q(a,l)||U(n,{defaultLayoutDeferred:o.defaultLayoutDeferred,derivedPanelConstraints:o.derivedPanelConstraints,groupSize:o.groupSize,layout:l,separatorToPanels:o.separatorToPanels},{isUserInteraction:!0})}function Ke(e){if(e.defaultPrevented)return;const t=e.currentTarget,n=Se(t);if(!n.disabled)switch(e.key){case"ArrowDown":{e.preventDefault(),n.orientation==="vertical"&&K(t,5);break}case"ArrowLeft":{e.preventDefault(),n.orientation==="horizontal"&&K(t,-5);break}case"ArrowRight":{e.preventDefault(),n.orientation==="horizontal"&&K(t,5);break}case"ArrowUp":{e.preventDefault(),n.orientation==="vertical"&&K(t,-5);break}case"End":{e.preventDefault(),K(t,100);break}case"Enter":{e.preventDefault();const o=Se(t),r=q(o.id,!0),{derivedPanelConstraints:s,layout:u,separatorToPanels:a}=r,i=o.separators.find(f=>f.element===t);M(i,"Matching separator not found");const l=a.get(i);M(l,"Matching panels not found");const c=l[0],h=s.find(f=>f.panelId===c.id);if(M(h,"Panel metadata not found"),h.collapsible){const f=u[c.id],x=h.collapsedSize===f?o.mutableState.expandedPanelSizes[c.id]??h.minSize:h.collapsedSize;K(t,x-f)}break}case"F6":{e.preventDefault();const o=Se(t).separators.map(u=>u.element),r=Array.from(o).findIndex(u=>u===e.currentTarget);M(r!==null,"Index not found");const s=e.shiftKey?r>0?r-1:o.length-1:r+1<o.length?r+1:0;o[s].focus({preventScroll:!0});break}case"Home":{e.preventDefault(),K(t,-100);break}}}function Ze(e){if(e.defaultPrevented||e.pointerType==="mouse"&&e.button>0)return;const t=X(),n=Me(e,t),o=new Map;let r=!1;n.forEach(s=>{s.separator&&(r||(r=!0,s.separator.element.focus({focusVisible:!1,preventScroll:!0})));const u=t.get(s.group);u&&o.set(s.group,u.layout)}),le({cursorFlags:0,hitRegions:n,initialLayoutMap:o,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:"active"}),n.length&&e.preventDefault()}function vt({document:e,event:t,hitRegions:n,initialLayoutMap:o,mountedGroups:r,pointerDownAtPoint:s,prevCursorFlags:u}){let a=0;n.forEach(l=>{const{group:c,groupSize:h}=l,{orientation:f,panels:x}=c,{disableCursor:v}=c.mutableState;let d=0;s?f==="horizontal"?d=(t.clientX-s.x)/h*100:d=(t.clientY-s.y)/h*100:f==="horizontal"?d=t.clientX<0?-100:100:d=t.clientY<0?-100:100;const g=o.get(c),p=r.get(c);if(!g||!p)return;const{defaultLayoutDeferred:b,derivedPanelConstraints:S,groupSize:y,layout:m,separatorToPanels:k}=p;if(S&&m&&k){const C=ge({delta:d,initialLayout:g,panelConstraints:S,pivotIndices:l.panels.map(N=>x.indexOf(N)),prevLayout:m,trigger:"mouse-or-touch"});if(Q(C,m)){if(d!==0&&!v)switch(f){case"horizontal":{a|=d<0?lt:ut;break}case"vertical":{a|=d<0?ct:dt;break}}}else U(l.group,{defaultLayoutDeferred:b,derivedPanelConstraints:S,groupSize:y,layout:C,separatorToPanels:k})}});let i=0;t.movementX===0?i|=u&$e:i|=a&$e,t.movementY===0?i|=u&He:i|=a&He,Ht(i),Ee(e)}function Qe(e){const t=X(),n=Z();switch(n.state){case"active":vt({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function et(e){var o,r;if(e.defaultPrevented)return;const t=Z(),n=X();switch(t.state){case"active":{if(e.buttons===0){le({cursorFlags:0,state:"inactive"}),t.hitRegions.forEach(s=>{if(!n.has(s.group))return;const u=q(s.group.id,!0);U(s.group,u,{isUserInteraction:!0})});return}for(const s of t.hitRegions)if(s.separator){const{element:u}=s.separator;(o=u.hasPointerCapture)!=null&&o.call(u,e.pointerId)||((r=u.setPointerCapture)==null||r.call(u,e.pointerId))}vt({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break}default:{const s=Me(e,n);s.length===0?t.state!=="inactive"&&le({cursorFlags:0,state:"inactive"}):le({cursorFlags:0,hitRegions:s,state:"hover"}),Ee(e.currentTarget);break}}}function tt(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(Z().state){case"hover":le({cursorFlags:0,state:"inactive"})}}function nt(e){e.defaultPrevented||e.pointerType==="mouse"&&e.button>0||pt(e.currentTarget)&&e.preventDefault()}function ot(e){let t=0,n=0;const o={};for(const s of e)if(s.defaultSize!==void 0){t++;const u=G(s.defaultSize);n+=u,o[s.panelId]=u}else o[s.panelId]=void 0;const r=e.length-t;if(r!==0){const s=G((100-n)/r);for(const u of e)u.defaultSize===void 0&&(o[u.panelId]=s)}return o}function tn(e,t,n){if(!n[0])return;const o=e.panels.find(i=>i.element===t);if(!o||!o.onResize)return;const r=ue({group:e}),s=e.orientation==="horizontal"?o.element.offsetWidth:o.element.offsetHeight,u=o.mutableValues.prevSize,a={asPercentage:G(s/r*100),inPixels:s};o.mutableValues.prevSize=a,o.onResize(a,o.id,u)}function nn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0}function on(e,t){return e.length!==t.length?!1:e.every((n,o)=>nn(n,t[o]))}function rn({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:o}){if(n<=0||t<=0||n===t)return o;let r=0,s=0,u=!1;const a=new Map,i=[];for(const h of e.panels){const f=o[h.id]??0;switch(h.panelConstraints.groupResizeBehavior){case"preserve-pixel-size":{u=!0;const x=f/100*n,v=G(x/t*100);a.set(h.id,v),r+=v;break}case"preserve-relative-size":default:{i.push(h.id),s+=f;break}}}if(!u||i.length===0)return o;const l=100-r,c={...o};if(a.forEach((h,f)=>{c[f]=h}),s>0)for(const h of i){const f=o[h]??0;c[h]=G(f/s*l)}else{const h=G(l/i.length);for(const f of i)c[f]=h}return c}function sn(e,t){const n=e.map(r=>r.id),o=Object.keys(t);if(n.length!==o.length)return!1;for(const r of n)if(!o.includes(r))return!1;return!0}const ie=new Map;function an(e){let t=!0;M(e.element.ownerDocument.defaultView,"Cannot register an unmounted Group");const n=e.element.ownerDocument.defaultView.ResizeObserver,o=new Set,r=new Set,s=new n(v=>{for(const d of v){const{borderBoxSize:g,target:p}=d;if(p===e.element){if(t){const b=ue({group:e});if(b===0)return;const S=q(e.id);if(!S)return;const y=Ce(e),m=S.defaultLayoutDeferred?ot(y):S.layout,k=rn({group:e,nextGroupSize:b,prevGroupSize:S.groupSize,prevLayout:m}),C=ee({layout:k,panelConstraints:y});if(!S.defaultLayoutDeferred&&Q(S.layout,C)&&on(S.derivedPanelConstraints,y)&&S.groupSize===b)continue;U(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:y,groupSize:b,layout:C,separatorToPanels:S.separatorToPanels})}}else tn(e,p,g)}});s.observe(e.element),e.panels.forEach(v=>{M(!o.has(v.id),`Panel ids must be unique; id "${v.id}" was used more than once`),o.add(v.id),v.onResize&&s.observe(v.element)});const u=ue({group:e}),a=Ce(e),i=e.panels.map(({id:v})=>v).join(",");let l=e.mutableState.defaultLayout;l&&(sn(e.panels,l)||(l=void 0));const c=e.mutableState.layouts[i]??l??ot(a),h=ee({layout:c,panelConstraints:a}),f=e.element.ownerDocument;ie.set(f,(ie.get(f)??0)+1);const x=new Map;return st(e).forEach(v=>{v.separator&&x.set(v.separator,v.panels)}),U(e,{defaultLayoutDeferred:u===0,derivedPanelConstraints:a,groupSize:u,layout:h,separatorToPanels:x}),e.separators.forEach(v=>{M(!r.has(v.id),`Separator ids must be unique; id "${v.id}" was used more than once`),r.add(v.id),v.element.addEventListener("keydown",Ke)}),ie.get(f)===1&&(f.addEventListener("contextmenu",Ye,!0),f.addEventListener("dblclick",Je,!0),f.addEventListener("pointerdown",Ze,!0),f.addEventListener("pointerleave",Qe),f.addEventListener("pointermove",et),f.addEventListener("pointerout",tt),f.addEventListener("pointerup",nt,!0)),function(){t=!1,ie.set(f,Math.max(0,(ie.get(f)??0)-1)),Vt(e),e.separators.forEach(v=>{v.element.removeEventListener("keydown",Ke)}),ie.get(f)||(f.removeEventListener("contextmenu",Ye,!0),f.removeEventListener("dblclick",Je,!0),f.removeEventListener("pointerdown",Ze,!0),f.removeEventListener("pointerleave",Qe),f.removeEventListener("pointermove",et),f.removeEventListener("pointerout",tt),f.removeEventListener("pointerup",nt,!0)),s.disconnect()}}function ln(){const[e,t]=z.useState({}),n=z.useCallback(()=>t({}),[]);return[e,n]}function De(e){const t=z.useId();return`${e??t}`}const te=typeof window<"u"?z.useLayoutEffect:z.useEffect;function he(e){const t=z.useRef(e);return te(()=>{t.current=e},[e]),z.useCallback((...n)=>{var o;return(o=t.current)==null?void 0:o.call(t,...n)},[t])}function Ie(...e){return he(t=>{e.forEach(n=>{if(n)switch(typeof n){case"function":{n(t);break}case"object":{n.current=t;break}}})})}function Ne(e){const t=z.useRef({...e});return te(()=>{for(const n in e)t.current[n]=e[n]},[e]),t.current}const bt=z.createContext(null);function un(e,t){const n=z.useRef({getLayout:()=>({}),setLayout:Wt});z.useImperativeHandle(t,()=>n.current,[]),te(()=>{Object.assign(n.current,mt({groupId:e}))})}function yt({children:e,className:t,defaultLayout:n,disableCursor:o,disabled:r,elementRef:s,groupRef:u,id:a,onLayoutChange:i,onLayoutChanged:l,orientation:c="horizontal",resizeTargetMinimumSize:h={coarse:20,fine:10},style:f,...x}){const v=z.useRef({onLayoutChange:{},onLayoutChanged:{}}),d=he(w=>{Q(v.current.onLayoutChange,w)||(v.current.onLayoutChange=w,i==null||i(w))}),g=he((w,L)=>{Q(v.current.onLayoutChanged,w)||(v.current.onLayoutChanged=w,l==null||l(w,{isUserInteraction:L}))}),p=De(a),b=z.useRef(null),[S,y]=ln(),m=z.useRef({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:h,separators:[]}),k=Ie(b,s);un(p,u);const C=he((w,L)=>{const D=Z(),E=Ve(w),j=q(w);if(j){let A=!1;switch(D.state){case"active":{A=D.hitRegions.some(_=>_.group===E);break}}return{flexGrow:j.layout[L]??1,pointerEvents:A?"none":void 0}}if(n!=null&&n[L])return{flexGrow:n==null?void 0:n[L]}}),N=Ne({defaultLayout:n,disableCursor:o}),B=z.useMemo(()=>({get disableCursor(){return!!N.disableCursor},getPanelStyles:C,id:p,orientation:c,registerPanel:w=>{const L=m.current;return L.panels=Le(c,[...L.panels,w]),y(),()=>{L.panels=L.panels.filter(D=>D!==w),y()}},registerSeparator:w=>{const L=m.current;return L.separators=Le(c,[...L.separators,w]),y(),()=>{L.separators=L.separators.filter(D=>D!==w),y()}},updatePanelProps:(w,{disabled:L})=>{const D=m.current.panels.find(A=>A.id===w);D&&(D.panelConstraints.disabled=L);const E=Ve(p),j=q(p);E&&j&&U(E,{...j,derivedPanelConstraints:Ce(E)})},updateSeparatorProps:(w,{disabled:L,disableDoubleClick:D})=>{const E=m.current.separators.find(j=>j.id===w);E&&(E.disabled=L,E.disableDoubleClick=D)}}),[C,p,y,c,N]),T=z.useRef(null);return te(()=>{const w=b.current;if(w===null)return;const L=m.current;let D;if(N.defaultLayout!==void 0&&Object.keys(N.defaultLayout).length===L.panels.length){D={};for(const I of L.panels){const V=N.defaultLayout[I.id];V!==void 0&&(D[I.id]=V)}}const E={disabled:!!r,element:w,id:p,mutableState:{defaultLayout:D,disableCursor:!!N.disableCursor,expandedPanelSizes:m.current.lastExpandedPanelSizes,layouts:m.current.layouts},orientation:c,panels:L.panels,resizeTargetMinimumSize:L.resizeTargetMinimumSize,separators:L.separators};T.current=E;const j=an(E),{defaultLayoutDeferred:A,derivedPanelConstraints:_,layout:ne}=q(E.id,!0);!A&&_.length>0&&(d(ne),g(ne,!1));const J=ke(p,I=>{const{defaultLayoutDeferred:V,derivedPanelConstraints:ce,layout:oe}=I.next;if(V||ce.length===0)return;const me=E.panels.map(({id:$})=>$).join(",");E.mutableState.layouts[me]=oe,ce.forEach($=>{if($.collapsible){const{layout:de}=I.prev??{};if(de){const P=O($.collapsedSize,oe[$.panelId]),F=O($.collapsedSize,de[$.panelId]);P&&!F&&(E.mutableState.expandedPanelSizes[$.panelId]=de[$.panelId])}}});const ve=Z().state!=="active";d(oe),ve&&g(oe,I.isUserInteraction)});return()=>{T.current=null,j(),J()}},[r,p,g,d,c,S,N]),z.useEffect(()=>{const w=T.current;w&&(w.mutableState.defaultLayout=n,w.mutableState.disableCursor=!!o)}),R.jsx(bt.Provider,{value:B,children:R.jsx("div",{...x,className:t,"data-group":!0,"data-testid":p,id:p,ref:k,style:{height:"100%",width:"100%",overflow:"hidden",...f,display:"flex",flexDirection:c==="horizontal"?"row":"column",flexWrap:"nowrap",touchAction:c==="horizontal"?"pan-y":"pan-x"},children:e})})}yt.displayName="Group";function Te(){const e=z.useContext(bt);return M(e,"Group Context not found; did you render a Panel or Separator outside of a Group?"),e}function cn(e,t){const{id:n}=Te(),o=z.useRef({collapse:ze,expand:ze,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:ze});z.useImperativeHandle(t,()=>o.current,[]),te(()=>{Object.assign(o.current,gt({groupId:n,panelId:e}))})}function Pe({children:e,className:t,collapsedSize:n="0%",collapsible:o=!1,defaultSize:r,disabled:s,elementRef:u,groupResizeBehavior:a="preserve-relative-size",id:i,maxSize:l="100%",minSize:c="0%",onResize:h,panelRef:f,style:x,...v}){const d=!!i,g=De(i),p=Ne({disabled:s}),b=z.useRef(null),S=Ie(b,u),{getPanelStyles:y,id:m,orientation:k,registerPanel:C,updatePanelProps:N}=Te(),B=h!==null,T=he((E,j,A)=>{h==null||h(E,i,A)});te(()=>{const E=b.current;if(E!==null){const j={element:E,id:g,idIsStable:d,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:B?T:void 0,panelConstraints:{groupResizeBehavior:a,collapsedSize:n,collapsible:o,defaultSize:r,disabled:p.disabled,maxSize:l,minSize:c}};return C(j)}},[a,n,o,r,B,g,d,l,c,T,C,p]),z.useEffect(()=>{N(g,{disabled:s})},[s,g,N]),cn(g,f);const w=()=>{const E=y(m,g);if(E)return JSON.stringify(E)},L=z.useSyncExternalStore(E=>ke(m,E),w,w);let D;return L?D=JSON.parse(L):r!==void 0?D={flexGrow:void 0,flexShrink:void 0,flexBasis:r}:D={flexGrow:1},R.jsx("div",{...v,"data-disabled":s||void 0,"data-panel":!0,"data-testid":g,id:g,ref:S,style:{...dn,display:"flex",flexBasis:0,flexShrink:1,overflow:"visible",...D},children:R.jsx("div",{className:t,style:{maxHeight:"100%",maxWidth:"100%",flexGrow:1,overflow:"auto",...x,touchAction:k==="horizontal"?"pan-y":"pan-x"},children:e})})}Pe.displayName="Panel";const dn={minHeight:0,maxHeight:"100%",height:"auto",minWidth:0,maxWidth:"100%",width:"auto",border:"none",borderWidth:0,padding:0,margin:0};function fn({layout:e,panelConstraints:t,panelId:n,panelIndex:o}){let r,s;const u=e[n],a=t.find(i=>i.panelId===n);if(a){const i=a.maxSize,l=a.collapsible?a.collapsedSize:a.minSize,c=[o,o+1];s=ee({layout:ge({delta:l-u,initialLayout:e,panelConstraints:t,pivotIndices:c,prevLayout:e}),panelConstraints:t})[n],r=ee({layout:ge({delta:i-u,initialLayout:e,panelConstraints:t,pivotIndices:c,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:r,valueMin:s,valueNow:u}}function St({children:e,className:t,disabled:n,disableDoubleClick:o,elementRef:r,id:s,style:u,...a}){const i=De(s),l=Ne({disabled:n,disableDoubleClick:o}),[c,h]=z.useState({}),[f,x]=z.useState("inactive"),[v,d]=z.useState(!1),g=z.useRef(null),p=Ie(g,r),{disableCursor:b,id:S,orientation:y,registerSeparator:m,updateSeparatorProps:k}=Te(),C=y==="horizontal"?"vertical":"horizontal";te(()=>{const T=g.current;if(T!==null){const w={disabled:l.disabled,disableDoubleClick:l.disableDoubleClick,element:T,id:i},L=m(w),D=$t(j=>{x(j.next.state!=="inactive"&&j.next.hitRegions.some(A=>A.separator===w)?j.next.state:"inactive")}),E=ke(S,j=>{const{derivedPanelConstraints:A,layout:_,separatorToPanels:ne}=j.next,J=ne.get(w);if(J){const I=J[0],V=J.indexOf(I);h(fn({layout:_,panelConstraints:A,panelId:I.id,panelIndex:V}))}});return()=>{D(),E(),L()}}},[S,i,m,l]),z.useEffect(()=>{k(i,{disabled:n,disableDoubleClick:o})},[n,o,i,k]);let N;n&&!b&&(N="not-allowed");let B;if(n)B="disabled";else switch(f){case"active":{B="active";break}default:v?B="focus":B=f}return R.jsx("div",{...a,"aria-controls":c.valueControls,"aria-disabled":n||void 0,"aria-orientation":C,"aria-valuemax":c.valueMax,"aria-valuemin":c.valueMin,"aria-valuenow":c.valueNow,children:e,className:t,"data-separator":B,"data-testid":i,id:i,onBlur:()=>d(!1),onFocus:()=>d(!0),ref:p,role:"separator",style:{flexBasis:"auto",cursor:N,...u,flexGrow:0,flexShrink:0,touchAction:"none"},tabIndex:n?void 0:0})}St.displayName="Separator";function we(e){var n;const t=(n=e.title)==null?void 0:n.trim();return t!=null&&t.length>0?t:"Untitled session"}function pn(e){return"isMutable"in e&&typeof Reflect.get(e,"isMutable")=="boolean"?Reflect.get(e,"isMutable")===!0:e.agentName==null}function vn({agentId:e,startTimestamp:t,endTimestamp:n,shareView:o}){const r=zt(),s=wt(),u=Ct(),a=Lt(),{sessionId:i,updateShareSearch:l}=Pt(),c=xe("AgentSessionListRow"),h=xe("AgentSessionDetailHeader"),f=xe("AgentSessionTimelineContainer"),[x,v]=z.useState([]),[d,g]=z.useState(),[p,b]=z.useState(!0),[S,y]=z.useState(!1),[m,k]=z.useState(!1),C=z.useRef(0),[N,B]=z.useState(),[T,w]=z.useState(),[L,D]=z.useState(!1),[E,j]=z.useState(!1),A=z.useMemo(()=>({order:"desc",limit:20,...e==null||e.length===0?{}:{agentId:e},...t==null?{}:{startTimestamp:t},...n==null?{}:{endTimestamp:n}}),[e,n,t]);z.useEffect(()=>{const P=++C.current;let F=!1;return b(!0),y(!1),k(!1),r.listSessions(A).then(re=>{F||C.current!==P||(v(re.data),g(re.nextPageToken))}).catch(()=>{F||C.current!==P||(v([]),g(void 0),k(!0))}).finally(()=>{!F&&C.current===P&&b(!1)}),()=>{F=!0}},[A,r]);const _=z.useCallback(async()=>{if(d==null||S)return;const P=C.current;y(!0);try{const F=await r.listSessions({...A,pageToken:d});if(C.current!==P)return;v(re=>[...re,...F.data]),g(F.nextPageToken)}catch{}finally{C.current===P&&y(!1)}},[S,A,d,r]);z.useEffect(()=>{if(i==null||i.length===0){B(void 0),w(void 0),j(!1),D(!1);return}let P=!1;return D(!0),j(!1),B(void 0),w(void 0),Promise.all([Rt({fetchPage:F=>r.listSessionEvents({sessionId:i,limit:100,...F==null?{}:{pageToken:F}})}),s.getSession({sessionId:i}).catch(()=>{})]).then(([F,re])=>{P||(B([...F].reverse()),w(re))}).catch(()=>{P||j(!0)}).finally(()=>{P||D(!1)}),()=>{P=!0}},[s,i,r]);const ne=P=>{const F=o==="sessions"?Dt(P.createdAt):null;l({sessionId:P.id,...o==="sessions"?{view:"sessions",...F==null?{}:{timeRange:F}}:{agentId:e??null,tab:"sessions",view:null,timeRange:null}})},J=()=>{i!=null&&l({sessionId:null})},I=x.find(P=>P.id===i),V=T!=null?we(T):I!=null?we(I):i??"Untitled session",ce=T!=null?Ge(T):I!=null?Ge(I):!1,oe=T!=null?T.isMutable:I!=null?pn(I):!0,me=ce?"Resume Agent building":"Resume Chat",ve=i!=null&&a!=null?xt({sessionId:i,routes:a}):null,$=()=>{if(i==null||u==null)return;const P=(T==null?void 0:T.agentName)??(I==null?void 0:I.agentName);u.openHistorySession({sessionId:i,isMutable:oe,isCreateAgent:ce,...P!=null&&P.length>0?{agentName:P}:{}})},de=ve!=null?{resumeHref:ve,resumeLabel:me}:u!=null?{onResume:$,resumeLabel:me}:{};return!p&&!m&&x.length===0&&(i==null||i.length===0)?R.jsx(Et,{title:"No Sessions Found",description:"There are no sessions available at the moment.",className:"bg-primary-bg"}):R.jsxs(yt,{id:"agent-sessions-split",orientation:"horizontal",className:"h-full min-h-0 w-full",resizeTargetMinimumSize:{coarse:24,fine:11},children:[R.jsx(Pe,{id:"agent-sessions-list",defaultSize:"35%",minSize:"20%",maxSize:"50%",children:R.jsxs("aside",{className:"flex h-full min-h-0 w-full flex-col bg-sidebar-bg",children:[R.jsx("div",{className:"scrollbar-none min-h-0 flex-1 overflow-y-auto",children:p?R.jsx("div",{className:"space-y-2 p-3",role:"status","aria-label":"Loading sessions",children:["a","b","c"].map(P=>R.jsx(Be,{className:"h-16 rounded-md"},P))}):m?R.jsx("p",{className:"px-3 py-6 text-center text-xs text-text-secondary",children:"Sessions could not be loaded."}):x.map(P=>R.jsx(c,{title:we(P),agentName:P.agentName??void 0,lastActivityAt:P.lastActivityAt,metrics:P.metrics,active:P.id===i,onSelect:()=>ne(P)},P.id))}),d!=null&&!p?R.jsx("div",{className:"shrink-0 border-t border-border p-3",children:R.jsx("button",{type:"button",disabled:S,onClick:()=>void _(),className:"h-8 w-full rounded-md border border-border text-xs font-medium text-text-primary hover:bg-ghost-button-hover disabled:opacity-60",children:S?"Loading…":"Load more"})}):null]})}),R.jsxs(St,{id:"agent-sessions-resizer","aria-label":"Resize session list",className:"group/resizer relative z-10 w-0 cursor-col-resize focus-visible:outline-none",children:[R.jsx("div",{"aria-hidden":!0,className:"absolute inset-y-0 -left-1.25 w-2.75"}),R.jsx("div",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-px bg-border transition-colors"}),R.jsx("div",{"aria-hidden":!0,className:Mt("absolute top-1/2 left-0 z-10 flex h-4 w-2 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-xs shadow-sm transition-colors","bg-secondary-button-bg text-text-secondary","group-hover/resizer:bg-primary-button-bg group-hover/resizer:text-primary-button-text","group-active/resizer:bg-primary-button-bg group-active/resizer:text-primary-button-text","group-focus-visible/resizer:bg-primary-button-bg group-focus-visible/resizer:text-primary-button-text"),children:R.jsx(kt,{name:"grip-vertical",size:10})})]}),R.jsx(Pe,{id:"agent-session-detail",defaultSize:"65%",minSize:"30%",children:R.jsx("section",{className:"flex h-full min-w-0 flex-col bg-primary-bg",children:i==null?R.jsx("div",{className:"flex flex-1 items-center justify-center px-6 text-sm text-text-secondary",children:"Select a session to view details"}):E?R.jsx("div",{className:"flex flex-1 items-center justify-center px-6 text-sm text-text-secondary",children:"Session details could not be loaded."}):R.jsxs(R.Fragment,{children:[R.jsx(h,{title:V,sessionId:i,agentId:e,createdAt:(T==null?void 0:T.createdAt)??(I==null?void 0:I.createdAt),view:o,onClose:J,...de}),L||N===void 0?R.jsx("div",{className:"flex flex-1 flex-col p-4",role:"status","aria-label":"Loading session details",children:R.jsx(Be,{className:"min-h-64 flex-1 rounded-lg"})}):R.jsx(f,{sessionId:i,events:N,listMetrics:I==null?void 0:I.metrics})]})})})]})}export{vn as AgentSessions};
@@ -0,0 +1 @@
1
+ import{ax as J,a2 as de,r,ay as H,j as e,a7 as oe,a9 as z,I as w,aA as X,av as Q,aE as ce,d as B,az as G}from"./index-DVCxCjDg.js";var me=[{value:"dcr",label:"OAuth"},{value:"none",label:"None"},{value:"header",label:"API Key"}],$=Q("h-11 shadow-sm"),P=()=>e.jsx("span",{className:"ml-0.5 text-failure-bg","aria-hidden":!0,children:"*"}),ue=({open:n,onOpenChange:u,onAdd:m,busy:j=!1,error:o})=>{const[f,y]=r.useState(""),[h,x]=r.useState(""),[p,S]=r.useState(""),[i,b]=r.useState("dcr"),[v,M]=r.useState(""),[k,F]=r.useState(""),A=()=>{y(""),x(""),S(""),b("dcr"),M(""),F("")},a=l=>{l||A(),u(l)},N=!!f.trim()&&!!p.trim()&&!!h.trim()&&(i!=="header"||!!v.trim()),E=async l=>{if(l.preventDefault(),!N||j)return;const I=i==="header"?{type:"header",apiKey:v.trim(),...k.trim()?{headerName:k.trim()}:{}}:{type:i};try{await m({name:f.trim(),url:h.trim(),description:p.trim(),auth:I}),A(),u(!1)}catch{}};return e.jsx(X,{open:n,onOpenChange:a,title:"Add MCP server",description:"Point at a remote MCP endpoint. It then behaves like any other connector.",contentSized:!0,headerIcon:e.jsx("span",{className:"flex size-11 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:e.jsx(w,{name:"mcp-server",className:"size-6"})}),children:e.jsxs("form",{className:"flex flex-col overflow-y-auto p-5 md:p-6",onSubmit:l=>void E(l),children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"mcp-server-name",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["Name",e.jsx(P,{})]}),e.jsx("input",{id:"mcp-server-name",type:"text",required:!0,value:f,onChange:l=>{y(l.target.value)},placeholder:"analytics-postgres-mcp",autoFocus:!0,className:$})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"mcp-server-description",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["Description",e.jsx(P,{})]}),e.jsx("textarea",{id:"mcp-server-description",value:p,onChange:l=>{S(l.target.value)},placeholder:"Query analytics from Postgres",required:!0,rows:3,className:Q("resize-y py-2.5 shadow-sm")})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"mcp-server-url",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["URL",e.jsx(P,{})]}),e.jsx("input",{id:"mcp-server-url",type:"url",required:!0,value:h,onChange:l=>{x(l.target.value)},placeholder:"https://mcp.example.com/mcp",className:$})]}),e.jsxs("fieldset",{children:[e.jsxs("legend",{className:"mb-1.5 text-sm font-medium text-text-primary",children:["Auth type",e.jsx(P,{})]}),e.jsx("div",{className:"flex w-full flex-row rounded-md border border-border bg-secondary-bg/40 p-1",children:me.map(l=>e.jsxs("label",{className:`flex h-8 flex-1 cursor-pointer items-center justify-center rounded-sm text-sm font-medium transition-colors ${i===l.value?"bg-dropdown-selected-item-bg text-dropdown-selected-item-text shadow-sm":"text-text-secondary hover:text-text-primary"}`,children:[e.jsx("input",{type:"radio",name:"mcp-auth-type",value:l.value,checked:i===l.value,onChange:()=>{b(l.value)},className:"sr-only"}),l.label]},l.value))})]}),i==="dcr"?e.jsxs("div",{className:"flex gap-1.5 bg-secondary-bg/40 p-2 rounded-md",children:[e.jsx(w,{name:"info",className:"size-3.5 mt-1 text-text-secondary"}),e.jsx("div",{className:"text-xs text-text-secondary leading-5.5",children:"Sign-in only — the server must support dynamic client registration. Manual OAuth (client ID / secret) isn't supported yet."})]}):null,i==="header"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"mcp-server-api-key",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["API key",e.jsx(P,{})]}),e.jsx("input",{id:"mcp-server-api-key",type:"password",required:!0,value:v,onChange:l=>{M(l.target.value)},placeholder:"Paste the server token",className:$})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"mcp-server-header-name",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["Header name ",e.jsx("span",{className:"font-normal text-text-secondary",children:"(optional)"})]}),e.jsx("input",{id:"mcp-server-header-name",type:"text",value:k,onChange:l=>{F(l.target.value)},placeholder:"Authorization",className:$})]})]}):null]}),e.jsxs("div",{className:"mt-6 space-y-3",children:[o?e.jsx("p",{className:"text-failure-bg text-sm",children:o}):null,e.jsx(z,{type:"submit",size:"lg",disabled:!N||j,className:"w-full shrink-0",children:"Add"})]})]})})},xe=ue,_={dcr:"OAuth2",header:"API Key",none:"No Auth"};function he({text:n}){const u=r.useRef(null),[m,j]=r.useState(!1),[o,f]=r.useState(!1),[y,h]=r.useState(16);return r.useLayoutEffect(()=>{j(!1),h(16)},[n]),r.useLayoutEffect(()=>{const x=u.current;if(!x)return;if(!m){h(16),f(x.scrollWidth>x.clientWidth+1);return}h(16);const p=requestAnimationFrame(()=>{h(x.scrollHeight)});return()=>cancelAnimationFrame(p)},[n,m]),n?e.jsxs("div",{className:"relative min-w-0",children:[e.jsxs("p",{ref:u,style:{maxHeight:y},className:B("mt-0.5 overflow-hidden font-mono text-xs leading-4 text-text-secondary transition-[max-height] duration-300 ease-in-out",!m&&"whitespace-nowrap",!m&&o&&"pr-[5.75rem]"),children:[n,m&&o?e.jsxs(e.Fragment,{children:[" ",e.jsx("button",{type:"button",className:"cursor-pointer font-mono text-xs font-medium text-text-primary/80 hover:text-text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring","aria-expanded":!0,onClick:()=>j(!1),children:"Show less"})]}):null]}),!m&&o?e.jsxs("button",{type:"button",className:"absolute top-0.5 right-0 cursor-pointer bg-card-bg pl-1.5 font-mono text-xs font-medium leading-4 text-text-primary/80 hover:text-text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring","aria-expanded":!1,onClick:()=>j(!0),children:[e.jsx("span",{"aria-hidden":!0,className:"text-text-secondary",children:"…"}),e.jsx("span",{className:"ml-1",children:"Read more"})]}):null]}):null}var pe=({connector:n,onBack:u,onConnectorRefreshed:m,onDisconnect:j,busy:o=!1})=>{const{connectorCatalog:f}=J(),{handleAuthorize:y,isOAuthLoading:h}=ce(),[x,p]=r.useState([]),[S,i]=r.useState(!0),[b,v]=r.useState(null),[M,k]=r.useState(!1);r.useEffect(()=>{let a=!1;return p([]),v(null),i(!0),f.getToolsByConnectorId({id:n.id}).then(N=>{a||p(N)}).catch(N=>{a||v(H(N,"Failed to load connector tools"))}).finally(()=>{a||i(!1)}),()=>{a=!0}},[n.authenticated,n.id,f]);const F=async()=>{k(!0),v(null);try{const a=await f.getConnector({id:n.id});m(a)}catch(a){v(H(a,"Failed to refresh connector details"))}finally{k(!1)}},A=h||M;return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:u,className:"mb-3 inline-flex w-fit items-center gap-1 rounded-md py-1 pr-2 text-sm text-text-secondary hover:text-text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring",children:[e.jsx(w,{name:"chevron-left",className:"size-3.5"}),"Connectors"]}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-y-auto pb-1",children:[e.jsxs("header",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-border bg-secondary-bg","aria-hidden":!0,children:e.jsx(w,{name:"mcp-server",className:"size-5 text-text-primary"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"text-lg font-semibold text-text-primary",children:n.name}),e.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm",children:[e.jsxs("span",{className:B("flex items-center gap-1.5 text-xs font-medium",n.authenticated?"text-success-bg":"text-text-primary"),children:[e.jsx("span",{className:B("h-1.5 w-1.5 rounded-full",n.authenticated?"bg-success-bg":"bg-primary-button-bg")}),n.authenticated?"Connected":"Not authenticated"]}),e.jsxs("span",{className:"text-text-secondary",children:["· ",n.description]})]}),e.jsx("span",{className:"mt-2 inline-flex items-center rounded-full border border-border bg-secondary-bg/40 px-2 py-0.5 text-xs font-medium text-text-secondary",children:_[n.auth.type]??_.none})]}),n.auth.type==="dcr"&&!n.authenticated?e.jsx(z,{variant:"outline",size:"sm",type:"button",disabled:o||A,onClick:()=>{y(n.id,a=>{a&&F()})},children:A?"Connecting…":"Connect"}):n.auth.type==="dcr"&&!n.requiresAuth?e.jsx(z,{variant:"outline",size:"sm",type:"button",disabled:o,onClick:j,children:"Disconnect"}):null]}),e.jsx("section",{className:"mt-6","aria-labelledby":"connector-tools-heading",children:S?e.jsx("div",{className:"rounded-xl border border-dashed border-border p-6 text-center text-sm text-text-secondary",children:"Loading tools…"}):b?e.jsxs("div",{className:"rounded-xl border border-failure-bg/30 bg-failure-bg/10 p-6 text-center text-sm text-failure-bg",children:[b,n.auth.type==="dcr"&&!n.authenticated&&e.jsx("div",{className:"font-bold mt-1",children:"Click Connect and authenticate successfully to view tools."})]}):x.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("h5",{id:"connector-tools-heading",className:"mb-2 text-[0.8125rem] font-semibold text-text-primary",children:["Tools ",e.jsxs("span",{className:"font-normal text-text-secondary",children:["· ",x.length]})]}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:x.map(a=>e.jsx("article",{className:"flex min-h-12 items-start gap-3 border-b border-border px-3 py-2 last:border-b-0",children:e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h6",{className:"text-sm font-medium text-text-primary",children:a.name}),e.jsx(he,{text:a.description})]})},a.id))})]}):e.jsx("div",{className:"rounded-xl border border-dashed border-border p-6 text-center text-sm text-text-secondary",children:"No tools reported for this connector."})})]})]})},fe=pe,be=()=>{const{connectorCatalog:n}=J(),u=de(),[m,j]=r.useState(""),[o,f]=r.useState({ordered:[],authStatusById:new Map}),[y,h]=r.useState(!0),[x,p]=r.useState(null),[S,i]=r.useState(null),[b,v]=r.useState(!1),[M,k]=r.useState([]),[F,A]=r.useState(!1),[a,N]=r.useState(null),[E,l]=r.useState(null),[I,R]=r.useState(""),W=r.useMemo(()=>(M??[]).reduce((t,s)=>(t[s.name]=s.logo??"",t),{}),[M]),K=r.useCallback(async()=>{h(!0),p(null);try{const[t,s]=await Promise.all([n.listConnectors(),n.getConnectorCatalog()]);k(s);const d=t??[],g=new Set(d.map(c=>c.id)),C=[...d.map(c=>({connector:c,isConfigured:!0})),...s.filter(c=>!g.has(c.id)).map(c=>({connector:c,isConfigured:!1}))];f({ordered:C,authStatusById:new Map(C.map(c=>[c.connector.id,c.isConfigured?c.connector.authenticated:!1]))}),l(c=>c?t.find(ie=>ie.id===c.id)??null:null)}catch(t){p(H(t,"Failed to load connectors"))}finally{h(!1)}},[n]);r.useEffect(()=>{K()},[K]);const L=m.trim().toLowerCase(),T=r.useMemo(()=>L?o.ordered.filter(({connector:t})=>{var s;return t.name.toLowerCase().includes(L)||(((s=t.description)==null?void 0:s.toLowerCase().includes(L))??!1)||t.url.toLowerCase().includes(L)}):o.ordered,[o.ordered,L]),D=r.useMemo(()=>{const t=[];for(const s of T)if(s.isConfigured){const d=o.authStatusById.get(s.connector.id)??s.connector.authenticated;t.push(d===s.connector.authenticated?s.connector:{...s.connector,authenticated:d})}return t},[o.authStatusById,T]),O=r.useMemo(()=>{const t=[];for(const s of T)s.isConfigured||t.push(s.connector);return t},[T]),q=async(t,s=p)=>{v(!0),p(null);try{await t(),await K()}catch(d){throw s(H(d,"Request failed")),d}finally{v(!1)}},U=()=>{N(null),R(""),i(null)},V=async(t,s)=>{const d=s??(t.auth.type==="header"?{type:"header",...t.auth.headerName?{headerName:t.auth.headerName}:{}}:t.auth.type==="dcr"?{type:"dcr"}:{type:"none"});await n.createConnector({name:t.name,description:t.description??t.url,url:t.url,auth:d})},Z=t=>{if(t.auth.type==="header"){R(""),i(null),N(t);return}q(async()=>{await V(t)}).catch(()=>{})},ee=t=>{if(t.preventDefault(),!a||!I.trim())return;const s=a;i(null),q(async()=>{const d={type:"header",apiKey:I.trim(),...s.auth.type==="header"&&s.auth.headerName?{headerName:s.auth.headerName}:{}},g=o.ordered.find(({connector:c})=>c.id===s.id),C=g!=null&&g.isConfigured?g.connector:void 0;C?await n.updateConnector({id:C.id,name:C.name,description:C.description,url:C.url,auth:d}):await V(s,d),U(),setTimeout(()=>{u==null||u.showSuccess({title:`${s.name} ${C?"updated":"connected"}`})},100)},i).catch(()=>{})},te=async t=>{i(null),await q(async()=>{await n.createConnector({...t})},i),setTimeout(()=>{u==null||u.showSuccess({title:`${t.name} added`})},0)},se=t=>{q(async()=>{await n.disconnectConnector({id:t.id}),l(null)}).catch(()=>{})},ae=t=>{l(s=>(s==null?void 0:s.id)===t.id?t:s),f(s=>{const d=new Map(s.authStatusById);return d.set(t.id,t.authenticated),{ordered:s.ordered.map(g=>g.isConfigured&&g.connector.id===t.id?{connector:t,isConfigured:!0}:g),authStatusById:d}})},re=(t,s)=>{const d=W[t.name],g=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-border bg-secondary-bg","aria-hidden":!0,children:d?e.jsx(G,{src:d,alt:t.name,className:"size-4.5"}):e.jsx(w,{name:"mcp-server",className:"size-4.5 text-text-primary"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h5",{className:"truncate text-sm font-medium text-text-primary",children:t.name}),e.jsx("p",{className:"mt-0.5 line-clamp-2 text-sm text-text-secondary sm:truncate",children:t.description})]})]});return e.jsxs("article",{className:"flex min-h-16 w-full items-center gap-3 border-b border-border p-3 text-left last:border-b-0 cursor-pointer transition-colors hover:bg-ghost-button-hover/60",onClick:()=>{l(t)},children:[e.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:g}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs("span",{className:B("flex items-center gap-1.5 rounded-full border border-border bg-secondary-bg/40 px-2 py-0.5 text-xs font-medium",t.authenticated?"text-success-bg":"text-text-primary"),children:[e.jsx("span",{className:B("h-1.5 w-1.5 rounded-full",t.authenticated?"bg-success-bg":"bg-primary-button-bg")}),t.authenticated?"Connected":"Added"]})}),t.auth.type==="header"?e.jsxs(z,{variant:"secondary",size:"sm",type:"button",disabled:b,onClick:c=>{c.stopPropagation(),R(""),N(t)},children:[e.jsx(w,{name:"wrench",className:"size-3"}),"Replace Key"]}):null,e.jsx(w,{name:"chevron-right",className:"size-4"})]})]},t.id)},ne=t=>{const s=W[t.name];return e.jsxs("article",{className:"flex min-h-16 w-full items-center gap-3 border-b border-border p-3 text-left last:border-b-0",children:[e.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-border bg-secondary-bg","aria-hidden":!0,children:s?e.jsx(G,{src:s,alt:t.name,className:"size-4.5"}):e.jsx(w,{name:"mcp-server",className:"size-4.5 text-text-primary"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h5",{className:"truncate text-sm font-medium text-text-primary",children:t.name}),e.jsx("p",{className:"mt-0.5 line-clamp-2 text-sm text-text-secondary sm:truncate",children:t.description??t.url})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[e.jsx("span",{className:"hidden text-xs text-text-secondary sm:inline",children:_[t.auth.type]??_.none}),e.jsx(z,{variant:"secondary",size:"sm",type:"button",disabled:b,onClick:()=>{Z(t)},children:t.auth.type==="dcr"?"Add":"Connect"})]})]},t.id)},Y=r.useMemo(()=>a!==null&&o.ordered.some(t=>t.isConfigured&&t.connector.id===a.id),[a,o.ordered]);if(E)return e.jsx(fe,{connector:E,busy:b,onBack:()=>{l(null)},onConnectorRefreshed:ae,onDisconnect:()=>{se(E)}});const le=D.length>0||O.length>0;return e.jsxs(e.Fragment,{children:[e.jsx("h3",{className:"text-xl font-semibold tracking-tight text-text-primary",children:"Connectors"}),e.jsx("p",{className:"mt-1 text-sm text-text-secondary",children:"Connect tools your agents can use."}),x?e.jsx("p",{className:"mt-3 rounded-md border border-failure-bg/30 bg-failure-bg/10 px-3 py-2 text-sm text-failure-bg",children:x}):null,e.jsx("div",{className:"mt-4 flex-1 overflow-y-hidden",children:e.jsxs("div",{className:"flex h-full flex-col gap-3",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1",children:e.jsx(oe,{query:m,setQuery:j,placeholder:"Search connectors"})}),e.jsxs(z,{variant:"secondary",type:"button",onClick:()=>{i(null),A(!0)},children:[e.jsx(w,{name:"plus",size:"1rem",className:"mr-1"}),"Add MCP Server"]})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-5 overflow-y-auto pb-1",children:[y?e.jsx("p",{className:"py-8 text-center text-sm text-text-secondary",children:"Loading…"}):null,!y&&D.length>0?e.jsxs("section",{"aria-labelledby":"connected-connectors-heading",children:[e.jsxs("h4",{id:"connected-connectors-heading",className:"mb-2 text-[0.8125rem] font-semibold uppercase text-text-secondary",children:["Configured · ",D.length]}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:D.map(t=>re(t))})]}):null,!y&&O.length>0?e.jsxs("section",{"aria-labelledby":"available-connectors-heading",children:[e.jsxs("h4",{id:"available-connectors-heading",className:"mb-2 text-[0.8125rem] font-semibold uppercase text-text-secondary",children:["Available · ",O.length]}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:O.map(t=>ne(t))})]}):null,!y&&!le?e.jsx("div",{className:"flex flex-1 items-center justify-center rounded-xl border border-dashed border-border p-8 text-center text-sm text-text-secondary",children:m.trim()?`No connectors match “${m.trim()}”.`:"No connectors yet."}):null]}),e.jsx(X,{open:a!==null,onOpenChange:t=>{t||U()},title:`${Y?"Replace key for":"Connect"} ${(a==null?void 0:a.name)??"connector"}`,description:a==null?void 0:a.url,contentSized:!0,className:"md:max-w-xl",children:e.jsxs("form",{onSubmit:ee,children:[e.jsxs("div",{className:"space-y-5 px-5 py-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"flex size-12 shrink-0 items-center justify-center overflow-hidden rounded-xl border border-border bg-secondary-bg","aria-hidden":!0,children:e.jsx(w,{name:"mcp-server",className:"size-6 text-text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-medium text-text-primary",children:a==null?void 0:a.name}),e.jsx("p",{className:"truncate text-sm text-text-secondary",children:a==null?void 0:a.description})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"connector-api-key",className:"mb-2 block text-xs font-semibold uppercase tracking-wide text-text-secondary",children:"API key / token"}),e.jsx("input",{id:"connector-api-key",type:"password",value:I,onChange:t=>{R(t.target.value)},placeholder:`Paste the token from ${(a==null?void 0:a.name)??"the provider"}`,autoFocus:!0,required:!0,className:Q("h-11")})]}),S?e.jsx("p",{className:"text-failure-bg text-sm",children:S}):null]}),e.jsxs("footer",{className:"flex justify-end gap-2 border-t border-border px-5 py-4",children:[e.jsx(z,{variant:"ghost",type:"button",onClick:U,disabled:b,children:"Cancel"}),e.jsx(z,{type:"submit",disabled:!I.trim()||b,children:Y?"Replace Key":"Connect"})]})]})}),e.jsx(xe,{open:F,onOpenChange:t=>{A(t),t||i(null)},onAdd:te,busy:b,error:S})]})})]})},ye=be;export{ye as default};
@@ -1 +1 @@
1
- import{S as a}from"./chunk-TCAVLWYL-DVhtkE3q.js";import{j as o,C as t,e as l}from"./index-DJ1uWGdt.js";import"./chunk-OZTNBS6V-CLmmFX7d.js";function n({className:r}){return o.jsx(t,{children:o.jsx("div",{"data-aui-compact-layout":!0,className:l("ml-auto flex h-full w-full max-w-[min(400px,100%)] min-h-0 min-w-0 flex-col border-l border-border bg-primary-bg shadow-[-4px_0_24px_color-mix(in_oklab,var(--shadow-color)_6%,transparent)]",r),children:o.jsx(a,{})})})}export{n as DockLayout};
1
+ import{S as a}from"./chunk-FJW36PD7-R_XSoO50.js";import{j as o,C as t,d as l}from"./index-DVCxCjDg.js";import"./chunk-DMMZSZTN-BBNhHida.js";function n({className:r}){return o.jsx(t,{children:o.jsx("div",{"data-aui-compact-layout":!0,className:l("ml-auto flex h-full w-full max-w-[min(400px,100%)] min-h-0 min-w-0 flex-col border-l border-border bg-primary-bg shadow-[-4px_0_24px_color-mix(in_oklab,var(--shadow-color)_6%,transparent)]",r),children:o.jsx(a,{})})})}export{n as DockLayout};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js","assets/index-DVCxCjDg.js","assets/index-D8eVAzN5.css","assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js"])))=>i.map(i=>d[i]);
2
+ import{h as _,u as E,a as P,b as t,r as a,s as I,j as s,P as L,I as l,e as c,S as g,d as z,_ as p}from"./index-DVCxCjDg.js";import{A as B,S as k,N as D,T}from"./chunk-DMMZSZTN-BBNhHida.js";var R=a.lazy(()=>p(()=>import("./SettingsBuilder-L34IQ56S-BQuxGH5w.js"),__vite__mapDeps([0,1,2]))),F=a.lazy(()=>p(()=>import("./SchedulesPage-KKLUDO6B-CWdrd7KY.js"),__vite__mapDeps([3,1,2])).then(r=>({default:r.SchedulesPage})));function V({className:r}){const f=_(),e=E(),d=P(),b=t("ClearChatButton"),j=t("AgentDetailsPage"),y=t("AgentsLibrary"),A=t("SessionsPage"),w=t("SaveAgentButton"),N=t("SelectAgentEmptyState"),S=a.useRef(null),h=(e==null?void 0:e.mode.status)==="idle",u=(e==null?void 0:e.settingsOpen)===!0,n=(e==null?void 0:e.libraryOpen)===!0,m=(e==null?void 0:e.sessionsOpen)===!0,o=(e==null?void 0:e.schedulesOpen)===!0,i=u||n||m||o,v=e!=null&&I(e.mode)&&!i&&(!d||e.agentConfigOpen),x=(e==null?void 0:e.isNewChatEnabled)!==!1,C=()=>{if(e==null||e.setLibraryOpen(!1),e==null||e.setSessionsOpen(!1),e!=null&&e.isComposerEnabled){e.openDraft();return}e==null||e.setSettingsOpen(!1),e==null||e.setSchedulesOpen(!1),Promise.resolve(f.threads().switchToNewThread()).catch(()=>{})},O=()=>{e==null||e.setLibraryOpen(!1),e==null||e.setSessionsOpen(!1),e!=null&&e.isComposerEnabled&&e.openAgentBuilder()};return s.jsxs("div",{className:z("relative flex h-full min-h-0 w-full bg-primary-bg",r),children:[v?s.jsx("aside",{role:"dialog","aria-label":"Agent Config",className:"absolute inset-y-0 left-0 z-20 w-full max-w-sm border-r border-border shadow-xl md:static md:z-auto md:w-88 md:max-w-none md:shrink-0 md:shadow-none",children:s.jsx(B,{showClose:d})}):null,s.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col",children:[s.jsx(L,{className:"bg-topbar-bg",title:i?n||o?s.jsxs("button",{type:"button",className:c({variant:"ghost",size:"sm"}),onClick:()=>{e==null||e.setLibraryOpen(!1),e==null||e.setSchedulesOpen(!1)},children:[s.jsx(l,{name:"arrow-left"}),"Back to chat"]}):null:s.jsx(D,{}),end:s.jsxs(s.Fragment,{children:[i?null:s.jsxs(s.Fragment,{children:[s.jsx(b,{}),s.jsx(w,{})]}),s.jsx(k,{},"shell-actions"),i?null:s.jsxs(s.Fragment,{children:[x?s.jsx("button",{type:"button","aria-label":"New Chat",title:"New Chat",className:c({variant:"ghost",size:"icon"}),onClick:C,children:s.jsx(l,{name:"square-pen"})}):null,x&&(e!=null&&e.isComposerEnabled)?s.jsx("button",{type:"button","aria-label":"New Agent",title:"New Agent",className:c({variant:"ghost",size:"icon"}),onClick:O,children:s.jsx(l,{name:"agent-2"})}):null]})]})}),s.jsx("div",{ref:S,className:"min-h-0 min-w-0 flex-1",children:u?s.jsx(a.Suspense,{fallback:s.jsxs("div",{className:"flex h-full items-center justify-center",role:"status","aria-live":"polite","aria-busy":"true",children:[s.jsx(g,{size:28,className:"text-text-primary"}),s.jsx("span",{className:"sr-only",children:"Loading"})]}),children:s.jsx(R,{})}):m?s.jsx(A,{}):n&&(e==null?void 0:e.libraryAgentId)!=null?s.jsx(j,{agentId:e.libraryAgentId},e.libraryAgentId):n?s.jsx(y,{}):o?s.jsx(a.Suspense,{fallback:s.jsxs("div",{className:"flex h-full items-center justify-center",role:"status","aria-live":"polite","aria-busy":"true",children:[s.jsx(g,{size:28,className:"text-text-primary"}),s.jsx("span",{className:"sr-only",children:"Loading"})]}),children:s.jsx(F,{})}):h?s.jsx(N,{}):s.jsx(T,{})})]})]})}export{V as DrawerLayout};
@@ -0,0 +1 @@
1
+ import{ax as be,a2 as fe,r as o,ay as Y,j as e,a7 as ge,a9 as B,I as P,az as ie,aA as xe,aB as ye,aC as ve,d as L,aD as je,av as Ne}from"./index-DVCxCjDg.js";var me=Ne("h-11 shadow-sm"),we=({open:n,onOpenChange:l,onSave:b,title:k,description:p,initialBaseUrl:E="",baseUrlPlaceholder:d="https://api.openai.com/v1",requireApiKey:c=!0,submitLabel:S="Save",busy:O=!1,error:F})=>{const[M,$]=o.useState(""),[y,x]=o.useState(""),[w,A]=o.useState(!1),U=()=>{$(""),x(""),A(!1)};o.useEffect(()=>{n&&($(""),x(E),A(!1))},[n,E]);const X=i=>{i||U(),l(i)},T=M.trim(),G=!c||!!T,v=async i=>{if(i.preventDefault(),!(!G||O))try{await b({apiKey:T,baseUrl:y.trim()}),U(),l(!1)}catch{}};return e.jsx(xe,{open:n,onOpenChange:X,title:k,description:p,contentSized:!0,children:e.jsxs("form",{className:"flex flex-col overflow-y-auto p-5 md:p-6",onSubmit:v,children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"model-provider-api-key",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["API key",c?null:e.jsx("span",{className:"font-normal text-text-secondary",children:" (optional)"})]}),e.jsx("input",{id:"model-provider-api-key",type:"password",required:c,value:M,onChange:i=>{$(i.target.value)},placeholder:c?"Enter API key":"Enter a new key",autoFocus:!0,className:me}),c?null:e.jsx("p",{className:"mt-1.5 text-xs text-text-secondary",children:"Leave blank to keep the current key; enter a new one to replace it."})]}),e.jsxs(ye,{expanded:w,onChange:(i,K)=>A(K),className:"rounded-md border border-border",children:[e.jsx(ve,{className:"px-3 py-2.5",children:e.jsxs("span",{className:"flex w-full items-center justify-between text-sm font-medium text-text-primary",children:["Advanced · custom endpoint",e.jsx(P,{name:"chevron-down",className:L("size-4 shrink-0 text-text-secondary transition-transform duration-200",w?"rotate-0":"-rotate-90")})]})}),e.jsxs(je,{className:"space-y-1.5 border-t border-border px-3 pb-3 pt-4",children:[e.jsx("label",{htmlFor:"model-provider-base-url",className:"block text-sm font-medium text-text-primary",children:"Base URL"}),e.jsx("input",{id:"model-provider-base-url",type:"url",value:y,onChange:i=>{x(i.target.value)},placeholder:d,className:me}),e.jsx("p",{className:"text-xs text-text-secondary",children:"Leave blank unless you use a regional or proxy endpoint."})]})]})]}),e.jsxs("div",{className:"mt-6 space-y-3",children:[F?e.jsx("p",{className:"text-failure-bg text-sm",children:F}):null,e.jsx(B,{type:"submit",size:"lg",disabled:!G||O,className:"w-full shrink-0",children:S})]})]})})},Ce=we,ke="128000",Ee="4096",pe=()=>({id:"",name:"",advancedExpanded:!0,contextLength:"",maxOutputTokens:""}),ue=n=>(n==null?void 0:n.models.map(l=>{var b,k,p,E,d;return{id:l.id,name:l.name,advancedExpanded:!0,reasoningEfforts:(b=l.properties)==null?void 0:b.reasoningEfforts,contextLength:((p=(k=l.properties)==null?void 0:k.contextLength)==null?void 0:p.toString())??"",maxOutputTokens:((d=(E=l.properties)==null?void 0:E.maxOutputTokens)==null?void 0:d.toString())??"",nameDirty:!0}}))??[pe()],Q="h-11 w-full rounded-md border border-border/70 bg-secondary-bg px-3 text-sm text-text-primary outline-none transition-colors placeholder:text-text-secondary/70 focus-visible:border-focus-ring focus-visible:ring-2 focus-visible:ring-focus-ring/50",V="border-failure-bg focus-visible:border-failure-bg focus-visible:ring-failure-bg";function ce(n){const l=n.trim();if(l==="")return null;const b=Number(l);return Number.isInteger(b)&&b>0?b:null}function Se(n){return n.replace(/([a-zA-Z])(\d)/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^[^a-z]+/,"").slice(0,64).replace(/-+$/g,"")}var re=()=>e.jsx("span",{className:"ml-0.5 text-failure-bg","aria-hidden":!0,children:"*"}),ee=({children:n})=>e.jsx("p",{className:"mt-1 text-xs text-failure-bg",children:n}),ne=({children:n})=>e.jsx("p",{className:"mt-1 text-xs text-text-secondary",children:n}),Me=({open:n,onOpenChange:l,onSubmit:b,reasoningEffortOptions:k,busy:p=!1,error:E,isEditMode:d=!1,initialValues:c})=>{const[S,O]=o.useState((c==null?void 0:c.name)??""),[F,M]=o.useState((c==null?void 0:c.baseUrl)??""),[$,y]=o.useState(""),[x,w]=o.useState(()=>ue(c)),[A,U]=o.useState(!1),[X,T]=o.useState(!1),G=()=>{O((c==null?void 0:c.name)??""),M((c==null?void 0:c.baseUrl)??""),y(""),w(ue(c)),U(!1),T(!1)},v=s=>{s||G(),l(s)},i=(s,r)=>{w(g=>g.map((u,j)=>j===s?{...u,...r}:u))},K=()=>{U(!0),T(!0),w(s=>s.map(r=>({...r,idTouched:!0,contextTouched:!0,maxTouched:!0})))},f=S.trim(),D=f?null:"Name is required.",_=F.trim();let h=null;if(!_)h="Base URL is required.";else try{new URL(_)}catch{h="Enter a valid URL."}const W=s=>s.id.trim()?null:"Model ID is required.",te=s=>s.name.trim()?null:"Model name is required.",q=s=>ce(s.contextLength)==null?"Set the model's context window.":null,Z=s=>ce(s.maxOutputTokens)==null?"Set the max output tokens.":null,oe=!D&&!h&&x.every(s=>!W(s)&&!te(s)),se=A&&D,H=X&&h,I=async()=>{if(K(),!oe||p)return;const s=x.findIndex(r=>q(r)||Z(r));if(s!==-1){i(s,{advancedExpanded:!0});const r=x[s],g=r&&q(r)?"context-length":"max-output-tokens";setTimeout(()=>{var j;const u=document.getElementById(`custom-provider-model-${s}-${g}`);(j=u==null?void 0:u.scrollIntoView)==null||j.call(u,{block:"center",behavior:"smooth"}),u==null||u.focus()},0);return}try{await b({name:f,baseUrl:_,apiKey:$.trim(),models:x.map(r=>{var R;const g={};(R=r.reasoningEfforts)!=null&&R.length&&(g.reasoningEfforts=r.reasoningEfforts);const u=ce(r.contextLength);u!=null&&(g.contextLength=u);const j=ce(r.maxOutputTokens);return j!=null&&(g.maxOutputTokens=j),{id:r.id.trim(),name:r.name.trim(),...Object.keys(g).length>0?{properties:g}:{}}})}),v(!1)}catch{}};return e.jsx(xe,{open:n,onOpenChange:v,title:d?`Edit ${(c==null?void 0:c.name)??S}`:"Add custom provider",description:d?"Update the endpoint, credentials, and models for this provider.":"Connect any OpenAI-compatible endpoint, whether it's a local model, a proxy, or your own hosted service.",contentSized:!0,children:e.jsxs("form",{className:"flex min-h-0 flex-1 flex-col",onSubmit:s=>{s.preventDefault(),I()},children:[e.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto px-5 pt-4 pb-8",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"custom-provider-name",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["Name",e.jsx(re,{})]}),e.jsx("input",{id:"custom-provider-name",type:"text",value:S,onChange:s=>O(s.target.value),onBlur:()=>U(!0),placeholder:"local-llama",autoFocus:!d,readOnly:d,"aria-readonly":d,"aria-invalid":se?!0:void 0,className:L(Q,d&&"cursor-not-allowed bg-secondary-bg/60 text-text-secondary",se&&V)}),d?e.jsx(ne,{children:"Provider names cannot be changed after creation."}):null,se?e.jsx(ee,{children:D}):null]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"custom-provider-base-url",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["Base URL",e.jsx(re,{})]}),e.jsx("input",{id:"custom-provider-base-url",type:"text",value:F,onChange:s=>M(s.target.value),onBlur:()=>T(!0),placeholder:"http://localhost:11434/v1",autoFocus:d,"aria-invalid":H?!0:void 0,className:L(Q,H&&V)}),H?e.jsx(ee,{children:h}):_?null:e.jsx(ne,{children:"OpenAI-compatible endpoint, usually ending in /v1."})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"custom-provider-api-key",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["API key",e.jsx("span",{className:"font-normal text-text-secondary",children:" (optional)"})]}),e.jsx("input",{id:"custom-provider-api-key",type:"password",value:$,onChange:s=>y(s.target.value),placeholder:"sk-…",className:Q}),e.jsx(ne,{children:d?"Leave blank to keep the saved key, or enter a new key to replace it.":"Leave blank if your endpoint needs no key (e.g. a local model)."})]}),e.jsxs("fieldset",{className:"m-0 min-w-0 border-0 p-0",children:[e.jsxs("legend",{className:"float-left mb-2 w-full p-0 text-sm font-medium text-text-primary",children:["Models",e.jsx(re,{})]}),e.jsx("div",{className:"clear-both",children:x.map((s,r)=>{const g=W(s),u=s.idTouched&&g,j=te(s),R=!!j&&s.nameDirty,le=q(s),C=Z(s),z=s.contextTouched&&le,ae=s.maxTouched&&C;return e.jsxs("div",{className:L("pb-6",r>0?"border-t border-border pt-6":"pt-1"),style:r>0?{borderTopWidth:"0.5px"}:void 0,children:[e.jsxs("div",{className:"grid grid-cols-[1fr_1fr_2rem] items-end gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("label",{htmlFor:`custom-provider-model-${r}-id`,className:"mb-1 block text-xs font-normal text-text-secondary",children:"Model ID"}),e.jsx("input",{id:`custom-provider-model-${r}-id`,type:"text",value:s.id,onChange:t=>{const a=t.target.value;i(r,{id:a,...s.nameDirty?{}:{name:Se(a)}})},onBlur:()=>i(r,{idTouched:!0}),placeholder:"llama3.1:70b","aria-invalid":u?!0:void 0,className:L(Q,"font-mono",u&&V)})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("label",{htmlFor:`custom-provider-model-${r}-name`,className:"mb-1 block text-xs font-normal text-text-secondary",children:"Model name"}),e.jsx("input",{id:`custom-provider-model-${r}-name`,type:"text",value:s.name,onChange:t=>i(r,{name:t.target.value,nameDirty:!0}),placeholder:"llama-3-1-70b","aria-invalid":R?!0:void 0,className:L(Q,R&&V)})]}),e.jsx("button",{type:"button","aria-label":`Remove model ${r+1}`,disabled:x.length===1||p,className:"mb-0.5 flex size-9 items-center justify-center rounded-md text-text-secondary transition-colors hover:text-text-primary disabled:opacity-40",onClick:()=>w(t=>t.filter((a,m)=>m!==r)),children:e.jsx(P,{name:"trash",className:"size-4"})})]}),u?e.jsx(ee,{children:g}):null,R?e.jsx(ee,{children:j}):null,e.jsxs("div",{className:"mt-2",children:[e.jsxs("button",{type:"button","aria-expanded":s.advancedExpanded,"aria-controls":`custom-provider-model-${r}-advanced`,className:"flex cursor-pointer items-center gap-1.5 text-sm font-medium text-text-primary",onClick:()=>i(r,{advancedExpanded:!s.advancedExpanded}),children:[e.jsx(P,{name:"chevron-down",className:L("size-4 text-text-secondary transition-transform",s.advancedExpanded?"":"-rotate-90")}),"Advanced"]}),s.advancedExpanded?e.jsxs("div",{id:`custom-provider-model-${r}-advanced`,className:"mt-3 space-y-4 pl-6",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:`custom-provider-model-${r}-context-length`,className:"mb-1.5 block text-xs font-medium text-text-secondary",children:["Context length",e.jsx(re,{})]}),e.jsx("input",{id:`custom-provider-model-${r}-context-length`,type:"number",min:1,inputMode:"numeric",value:s.contextLength,onChange:t=>i(r,{contextLength:t.target.value}),onBlur:()=>i(r,{contextTouched:!0}),placeholder:ke,"aria-invalid":z?!0:void 0,className:L(Q,z&&V)}),z?e.jsx(ee,{children:le}):s.contextLength.trim()===""?e.jsx(ne,{children:"Model's total token window."}):null]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:`custom-provider-model-${r}-max-output-tokens`,className:"mb-1.5 block text-xs font-medium text-text-secondary",children:["Max output tokens",e.jsx(re,{})]}),e.jsx("input",{id:`custom-provider-model-${r}-max-output-tokens`,type:"number",min:1,inputMode:"numeric",value:s.maxOutputTokens,onChange:t=>i(r,{maxOutputTokens:t.target.value}),onBlur:()=>i(r,{maxTouched:!0}),placeholder:Ee,"aria-invalid":ae?!0:void 0,className:L(Q,ae&&V)}),ae?e.jsx(ee,{children:C}):s.maxOutputTokens.trim()===""?e.jsx(ne,{children:"Longest reply the model allows — use its real limit."}):null]}),k&&k.length>0?e.jsxs("div",{children:[e.jsxs("label",{className:"flex w-fit cursor-pointer items-center gap-2 select-none",children:[e.jsx("input",{type:"checkbox",className:"size-4 shrink-0 cursor-pointer accent-primary-button-bg disabled:cursor-not-allowed disabled:opacity-50",checked:s.reasoningEfforts!==void 0,"aria-label":`Enable reasoning effort for model ${r+1}`,disabled:p,onChange:t=>i(r,{reasoningEfforts:t.target.checked?[]:void 0})}),e.jsx("span",{className:"text-text-secondary text-xs font-medium",children:"Reasoning effort"})]}),s.reasoningEfforts!==void 0?e.jsx("div",{role:"group","aria-label":`Supported reasoning efforts for model ${r+1}`,className:"mt-2 flex flex-wrap gap-2",children:k.map(t=>{var m;const a=((m=s.reasoningEfforts)==null?void 0:m.includes(t))??!1;return e.jsx("button",{type:"button","aria-pressed":a,disabled:p,className:L("rounded-full border px-3 py-1 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring/40 disabled:opacity-50",a?"border-primary-button-bg bg-primary-button-bg text-primary-button-text":"border-border text-text-secondary hover:bg-ghost-button-hover"),onClick:()=>{var J;return i(r,{reasoningEfforts:a?(J=s.reasoningEfforts)==null?void 0:J.filter(de=>de!==t):[...s.reasoningEfforts??[],t]})},children:t},t)})}):null]}):null]}):null]})]},r)})}),e.jsxs(B,{variant:"secondary",size:"sm",type:"button",className:"mt-4 w-fit",onClick:()=>w(s=>[...s,pe()]),children:[e.jsx(P,{name:"plus",className:"size-3.5"}),"Add model"]})]})]}),e.jsxs("div",{className:"shrink-0 space-y-3 border-t border-border px-5 py-4",children:[E?e.jsx("p",{className:"text-failure-bg text-sm",children:E}):null,e.jsx(B,{type:"submit",size:"lg",disabled:!oe||p,className:"w-full",children:d?"Save changes":"Add provider"})]})]})})},Ue=Me;function Te(n){return"baseUrl"in n&&typeof n.baseUrl=="string"?n.baseUrl:""}var Le=()=>{const{modelCatalog:n}=be(),l=fe(),[b,k]=o.useState(""),[p,E]=o.useState([]),[d,c]=o.useState([]),[S,O]=o.useState(!0),[F,M]=o.useState(null),[$,y]=o.useState(null),[x,w]=o.useState(!1),[A,U]=o.useState(null),[X,T]=o.useState(null),[G,v]=o.useState(null),[i,K]=o.useState(!1),[f,D]=o.useState(null),_=o.useMemo(()=>(d??[]).reduce((t,a)=>(t[a.name]=a.logo??"",t),{}),[d]),h=b.trim().toLowerCase(),W=o.useCallback(async()=>{O(!0),M(null);try{const[t,a]=await Promise.all([n.listModelProviders(),n.getModelProviderCatalog()]);E(t),c(a)}catch(t){M(Y(t,"Failed to load model providers"))}finally{O(!1)}},[n]);o.useEffect(()=>{W()},[W]);const te=o.useMemo(()=>new Set(p.map(t=>t.type)),[p]),q=o.useMemo(()=>p.filter(t=>{var a;return((a=t.name)==null?void 0:a.toLowerCase().includes(h))||t.models.some(m=>m.name.toLowerCase().includes(h)||m.id.toLowerCase().includes(h))}),[p,h]),Z=o.useMemo(()=>d.filter(t=>t.type!=="custom"&&!te.has(t.type)&&(t.name.toLowerCase().includes(h)||t.models.some(a=>a.name.toLowerCase().includes(h)||a.id.toLowerCase().includes(h)))),[d,te,h]),oe=o.useMemo(()=>{var t;return(t=d.find(a=>a.type==="custom"))==null?void 0:t.supportedReasoningEfforts},[d]),se=o.useMemo(()=>{const t=new Map;for(const a of d)t.set(a.type,a.models);return t},[d]),H=()=>{U(null),T(null),v(null)},I=async(t,a)=>{w(!0),M(null);try{await t(),await W(),H()}catch(m){throw a?a(m):l==null?M(Y(m,"Request failed")):l.showError(m),m}finally{w(!1)}},s=async(t,a)=>{v(null),await I(async()=>{await n.createModelProvider({type:t.type,name:t.name,...a.baseUrl?{baseUrl:a.baseUrl}:{},apiKey:a.apiKey,models:t.models})},m=>v(Y(m,"Request failed")))},r=async(t,a)=>{v(null),await I(async()=>{await n.updateModelProvider({id:t.id,type:t.type,name:t.name,...a.baseUrl?{baseUrl:a.baseUrl}:{},apiKey:a.apiKey,models:t.models})},m=>v(Y(m,"Request failed"))),l==null||l.showSuccess({title:`${t.name} updated`})},g=t=>{n.deleteModelProvider&&I(async()=>{await n.deleteModelProvider({id:t.id})}).catch(()=>{})},u=(t,a)=>{I(async()=>{await n.updateModelProvider({id:t.id,type:t.type,name:t.name,...t.baseUrl?{baseUrl:t.baseUrl}:{},apiKey:"",models:a})}).catch(()=>{})},j=async t=>{y(null),await I(async()=>{await n.createModelProvider({type:"custom",name:t.name,baseUrl:t.baseUrl,apiKey:t.apiKey,models:t.models})},a=>y(Y(a,"Request failed"))),setTimeout(()=>{l==null||l.showSuccess({title:`${t.name} added`})},0)},R=async t=>{if(!f)return;const a=f;y(null),await I(async()=>{await n.updateModelProvider({id:a.id,type:a.type,name:a.name,baseUrl:t.baseUrl,apiKey:t.apiKey,models:t.models})},m=>y(Y(m,"Request failed"))),setTimeout(()=>{l==null||l.showSuccess({title:"Model provider updated",description:`${a.name} was updated successfully.`})},0)},le=f?{name:f.name,baseUrl:f.baseUrl??"",models:f.models}:void 0,C=A!=null?p.find(t=>t.id===A)??null:null,z=X!=null?d.find(t=>t.type===X)??null:null,ae=C!=null||z!=null;return e.jsxs(e.Fragment,{children:[e.jsx("h3",{className:"text-xl font-semibold tracking-tight text-text-primary",children:"Models"}),e.jsx("p",{className:"mt-1 text-sm text-text-secondary",children:"Connect providers and choose which models are available."}),F?e.jsx("p",{className:"mt-3 rounded-md border border-failure-bg/30 bg-failure-bg/10 px-3 py-2 text-sm text-failure-bg",children:F}):null,e.jsx("div",{className:"mt-4 flex-1 overflow-y-hidden",children:e.jsxs("div",{className:"flex h-full flex-col gap-3",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1",children:e.jsx(ge,{query:b,setQuery:k,placeholder:"Search providers and models"})}),e.jsxs(B,{variant:"secondary",type:"button",onClick:()=>{y(null),D(null),K(!0)},children:[e.jsx(P,{name:"plus",size:"1rem",className:"mr-1"}),"Add Custom Provider"]})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-2 overflow-y-auto",children:[S?e.jsx("p",{className:"py-8 text-center text-sm text-text-secondary",children:"Loading…"}):null,!S&&q.length>0?e.jsxs("section",{"aria-labelledby":"configured-providers-heading",children:[e.jsx("div",{id:"configured-providers-heading",className:"mb-2 text-[0.8125rem] font-semibold uppercase text-text-secondary",children:"Configured"}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:q.map(t=>{const a=se.get(t.type)??[],m=new Set(t.models.map(N=>N.id)),J=a.filter(N=>!m.has(N.id)),de=_[t.name];return e.jsxs("article",{className:"border-b border-border p-3 last:border-b-0",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[e.jsx("div",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:de?e.jsx(ie,{src:de,alt:t.name,className:"size-4.5"}):e.jsx(P,{name:"cpu",className:"size-4.5"})}),e.jsx("h5",{className:"truncate text-base font-medium text-text-primary",children:t.name})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2.5 sm:justify-end",children:[e.jsxs("span",{className:"flex items-center gap-1.5 rounded-full border border-border bg-secondary-bg/40 px-2 py-0.5 text-xs font-medium text-success-bg",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-success-bg"}),"Connected"]}),e.jsxs(B,{variant:"secondary",size:"sm",className:"text-[0.8125rem]",type:"button","aria-label":`Edit ${t.name}`,title:`Edit ${t.name}`,disabled:x,onClick:()=>{t.type==="custom"?(H(),y(null),D(t),K(!0)):(v(null),T(null),U(t.id))},children:[e.jsx(P,{name:"wrench",className:"size-3.5"}),"Edit"]}),n.deleteModelProvider?e.jsx(B,{variant:"outline",size:"sm",className:"transition-colors hover:bg-failure-bg/10 hover:text-failure-bg",type:"button",disabled:x,onClick:()=>{g(t)},children:"Remove"}):null]})]}),e.jsxs("div",{className:"mt-3 overflow-hidden rounded-lg border border-border bg-secondary-bg/30",children:[t.models.map(N=>e.jsxs("div",{className:"flex min-h-10 items-center gap-3 border-b border-border px-3 py-2 text-sm text-text-primary last:border-b-0",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate",children:N.name}),e.jsx("button",{type:"button","aria-label":`Remove ${N.name}`,disabled:x,className:"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-text-secondary hover:bg-ghost-button-hover hover:text-ghost-button-text focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring disabled:opacity-50",onClick:()=>{u(t,t.models.filter(he=>he.id!==N.id))},children:e.jsx(P,{name:"trash",className:"size-3.5"})})]},N.id)),J.length>0?e.jsxs("section",{children:[e.jsxs("div",{className:"border-b border-border bg-secondary-bg/40 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-text-secondary",children:["Available to add · ",J.length]}),J.map(N=>e.jsxs("div",{className:"flex min-h-12 items-center gap-3 border-b border-border px-3 py-2 text-sm text-text-primary last:border-b-0",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate",children:N.name}),e.jsx(B,{variant:"outline",size:"sm",type:"button",disabled:x,onClick:()=>{u(t,[...t.models,N])},children:"Add"})]},N.id))]}):null]})]},t.id)})})]}):null,!S&&Z.length>0?e.jsxs("section",{"aria-labelledby":"available-providers-heading",className:"mt-2",children:[e.jsx("div",{id:"available-providers-heading",className:"mb-2 text-[0.8125rem] font-semibold uppercase text-text-secondary",children:"Available"}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:Z.map(t=>{const a=_[t.name];return e.jsx("article",{className:"border-b border-border p-3 last:border-b-0",children:e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[e.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:a?e.jsx(ie,{src:a,alt:t.name,className:"size-4.5"}):e.jsx(P,{name:"cpu",className:"size-4.5"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h5",{className:"truncate text-base font-medium text-text-primary",children:t.name}),e.jsx("p",{className:"truncate text-sm text-text-secondary",children:t.models.map(m=>m.name).join(" · ")})]})]}),e.jsxs(B,{variant:"secondary",type:"button",disabled:x,onClick:()=>{v(null),U(null),T(t.type)},children:[e.jsx(P,{name:"wrench",className:"size-4"}),"Configure"]})]})},t.type)})})]}):null,!S&&q.length===0&&Z.length===0?e.jsx("div",{className:"flex flex-1 items-center justify-center rounded-xl border border-dashed border-border p-8 text-center text-sm text-text-secondary",children:h?`No providers match “${b.trim()}”.`:"No model providers yet."}):null]}),e.jsx(Ce,{open:ae,onOpenChange:t=>{t||H()},onSave:t=>{if(C)return r(C,t);if(z)return s(z,t)},title:C?"Edit Provider Details":"Configure Provider Details",initialBaseUrl:C?C.baseUrl??"":z?Te(z):"",requireApiKey:C==null,submitLabel:C?"Save":"Create",busy:x,error:G}),e.jsx(Ue,{open:i,onOpenChange:t=>{K(t),t||(y(null),D(null))},isEditMode:f!==null,initialValues:le,onSubmit:f?R:j,reasoningEffortOptions:oe,busy:x,error:$},(f==null?void 0:f.id)??"add-custom-provider")]})})]})},ze=Le;export{ze as default};
@@ -0,0 +1 @@
1
+ import{ax as G,a2 as H,r,ay as q,j as e,S as Y,I as N,as as J,a9 as O,aA as Q,aB as W,aC as X,d as Z,aD as ee,av as te}from"./index-DVCxCjDg.js";var ae={execTimeoutMs:3e5,autoStopIntervalInMinutes:15,autoArchiveIntervalInMinutes:10080,autoDeleteIntervalInMinutes:43200},F=te("h-11 shadow-sm");function U(a){if(a.trim()==="")return null;const l=Number(a);return!Number.isFinite(l)||l<0?null:l}var se=({open:a,onOpenChange:l,onSave:d,title:g,description:I,initialConfig:R=null,requireApiKey:y=!0,busy:w=!1,error:C})=>{const[m,k]=r.useState(""),[u,x]=r.useState(""),[M,i]=r.useState(""),[p,o]=r.useState(""),[b,f]=r.useState(""),[A,v]=r.useState(!1),S=()=>{k(""),x(""),i(""),o(""),f(""),v(!1)};r.useEffect(()=>{if(!a)return;const s=R??ae;k(String(s.execTimeoutMs)),x(String(s.autoStopIntervalInMinutes)),i(String(s.autoArchiveIntervalInMinutes)),o(String(s.autoDeleteIntervalInMinutes)),f(""),v(!1)},[a,R]);const B=s=>{s||S(),l(s)},h=U(m),P=U(u),T=U(M),z=U(p),_=b.trim(),K=(!y||!!_)&&h!=null&&P!=null&&T!=null&&z!=null,E=async s=>{if(s.preventDefault(),!(!K||w||h==null||P==null||T==null||z==null))try{await d({execTimeoutMs:h,autoStopIntervalInMinutes:P,autoArchiveIntervalInMinutes:T,autoDeleteIntervalInMinutes:z,apiKey:_}),S(),l(!1)}catch{}};return e.jsx(Q,{open:a,onOpenChange:B,title:g,description:I,contentSized:!0,headerIcon:e.jsx("span",{className:"flex size-11 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:e.jsx(N,{name:"cube",className:"size-6"})}),children:e.jsxs("form",{className:"flex flex-col overflow-y-auto p-5 md:p-6",onSubmit:E,children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"sandbox-api-key",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["API key",y?null:e.jsx("span",{className:"font-normal text-text-secondary",children:" (optional)"})]}),e.jsx("input",{id:"sandbox-api-key",type:"password",required:y,value:b,onChange:s=>{f(s.target.value)},placeholder:y?"dtn_...":"Leave blank to keep existing",autoFocus:!0,className:F})]}),e.jsxs(W,{expanded:A,onChange:(s,t)=>v(t),className:"rounded-md border border-border",children:[e.jsx(X,{className:"px-3 py-2.5",children:e.jsxs("span",{className:"flex w-full items-center justify-between text-sm font-medium text-text-primary",children:["Advanced settings",e.jsx(N,{name:"chevron-down",className:Z("size-4 shrink-0 text-text-secondary transition-transform duration-200",A?"rotate-0":"-rotate-90")})]})}),e.jsxs(ee,{className:"space-y-4 border-t border-border px-3 pb-3 pt-4",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"sandbox-exec-timeout",className:"mb-1.5 block text-sm font-medium text-text-primary",children:"Exec timeout (ms)"}),e.jsx("input",{id:"sandbox-exec-timeout",type:"number",min:0,required:!0,value:m,onChange:s=>{k(s.target.value)},placeholder:"300000",className:F})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"sandbox-auto-stop",className:"mb-1.5 block text-sm font-medium text-text-primary",children:"Auto-stop interval (minutes)"}),e.jsx("input",{id:"sandbox-auto-stop",type:"number",min:0,required:!0,value:u,onChange:s=>{x(s.target.value)},placeholder:"15",className:F})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"sandbox-auto-archive",className:"mb-1.5 block text-sm font-medium text-text-primary",children:"Auto-archive interval (minutes)"}),e.jsx("input",{id:"sandbox-auto-archive",type:"number",min:0,required:!0,value:M,onChange:s=>{i(s.target.value)},placeholder:"10080",className:F})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"sandbox-auto-delete",className:"mb-1.5 block text-sm font-medium text-text-primary",children:"Auto-delete interval (minutes)"}),e.jsx("input",{id:"sandbox-auto-delete",type:"number",min:0,required:!0,value:p,onChange:s=>{o(s.target.value)},placeholder:"43200",className:F})]})]})]})]}),e.jsxs("div",{className:"mt-6 space-y-3",children:[C?e.jsx("p",{className:"text-failure-bg text-sm",children:C}):null,e.jsx(O,{type:"submit",size:"lg",disabled:!K||w,className:"w-full shrink-0",children:"Save"})]})]})})},ne=se,re=1e4,D=({execTimeoutMs:a,autoStopIntervalInMinutes:l,autoArchiveIntervalInMinutes:d,autoDeleteIntervalInMinutes:g})=>({execTimeoutMs:a,autoStopIntervalInMinutes:l,autoArchiveIntervalInMinutes:d,autoDeleteIntervalInMinutes:g}),le=a=>{switch(a){case"pending":return{label:"Syncing image...",className:"text-warning-bg"};case"ready":return{label:"Connected",className:"text-success-bg"};case"failed":return{label:"Sync failed",className:"text-failure-bg"};default:return{label:a,className:"text-text-secondary"}}},ie=()=>{const{sandboxCatalog:a}=G(),l=H(),[d,g]=r.useState([]),[I,R]=r.useState([]),[y,w]=r.useState(!0),[C,m]=r.useState(null),[k,u]=r.useState(null),[x,M]=r.useState(!1),[i,p]=r.useState(null),[o,b]=r.useState(null),f=r.useCallback(async({quiet:t=!1}={})=>{if(a){t||w(!0),m(null);try{const[n,c]=await Promise.all([a.listSandboxProviders(),a.getSandboxProviderCatalog()]);g(n),R(c)}catch(n){m(q(n,"Failed to load sandbox providers"))}finally{t||w(!1)}}},[a]);r.useEffect(()=>{f()},[f]);const A=d.some(t=>t.snapshotSyncStatus.status==="pending");r.useEffect(()=>{if(!a||!A)return;const t=a;let n=!1,c;function j(){c=window.setTimeout(()=>{$()},re)}async function $(){try{const L=await t.listSandboxProviders();if(n)return;g(L),m(null),L.some(V=>V.snapshotSyncStatus.status==="pending")&&j()}catch(L){if(n)return;m(q(L,"Failed to refresh sandbox providers")),j()}}return j(),()=>{n=!0,c!==void 0&&window.clearTimeout(c)}},[a,A]);const v=d.length>0,S=r.useMemo(()=>{if(v)return[];const t=new Set(d.map(n=>n.data.catalogId));return I.filter(n=>!t.has(n.id))},[I,d,v]),B=r.useMemo(()=>o?D(o):i?D(i):null,[o,i]);if(!a)return e.jsx("p",{className:"text-sm text-text-secondary",children:"Sandbox provider catalog is not available."});const h=async(t,n=m)=>{M(!0),m(null);try{await t(),await f({quiet:!0})}catch(c){throw n(q(c,"Request failed")),c}finally{M(!1)}},P=async t=>{i&&(u(null),await h(async()=>{await a.createSandboxProvider({catalogId:i.id,name:i.name,type:i.type,...D(t),apiKey:t.apiKey})},u),p(null),setTimeout(()=>{l==null||l.showSuccess({title:`${i.name} configured`})},0))},T=async t=>{o&&(u(null),await h(async()=>{await a.updateSandboxProvider({id:o.id,...D(t),...t.apiKey?{apiKey:t.apiKey}:{}})},u),b(null),setTimeout(()=>{l==null||l.showSuccess({title:`${o.name} updated`})},0))},z=t=>{h(async()=>{await a.updateSandboxProvider({id:t.id,...D(t)})}).catch(()=>{})},_=t=>{const n=a.deleteSandboxProvider;n&&h(async()=>{await n({id:t.id})}).catch(()=>{})},K=i!=null||o!=null,E=o!=null,s=o?`Update ${o.name}`:i?`Configure ${i.name}`:"Configure sandbox provider";return e.jsxs(e.Fragment,{children:[e.jsx("h3",{className:"text-xl font-semibold tracking-tight text-text-primary",children:"Sandbox providers"}),e.jsx("p",{className:"mt-1 text-sm text-text-secondary",children:"Choose a provider that runs sandboxes for code, files and shell commands. Only one can be active at a time."}),C?e.jsx("p",{className:"mt-3 rounded-md border border-failure-bg/30 bg-failure-bg/10 px-3 py-2 text-sm text-failure-bg",children:C}):null,e.jsx("div",{className:"mt-4 flex-1 overflow-y-auto",children:y?e.jsx("p",{className:"text-sm text-text-secondary",children:"Loading sandbox providers…"}):e.jsxs("div",{className:"space-y-6",children:[d.length>0?e.jsxs("section",{children:[e.jsxs("h4",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-text-secondary",children:["Configured · ",d.length]}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:d.map(t=>{const n=t.data,c=le(t.snapshotSyncStatus.status),j=t.snapshotSyncStatus.statusReason,$=e.jsxs("span",{className:`inline-flex items-center gap-1.5 text-sm font-medium ${c.className}`,children:[t.snapshotSyncStatus.status==="pending"?e.jsx(Y,{size:16,"aria-label":"Syncing snapshot image"}):t.snapshotSyncStatus.status==="ready"?e.jsx("span",{className:"size-2 rounded-full bg-success-bg","aria-hidden":!0}):t.snapshotSyncStatus.status==="failed"?e.jsx(N,{name:"triangle-exclamation",className:"size-4"}):null,c.label]});return e.jsxs("article",{className:"flex flex-col gap-3 border-b border-border p-3 last:border-b-0 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[e.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:e.jsx(N,{name:"cube",className:"size-4.5"})}),e.jsx("div",{className:"min-w-0",children:e.jsx("h5",{className:"truncate text-sm font-medium text-text-primary",children:n.name})})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2.5 sm:justify-end",children:[$,j?e.jsx(J,{content:j,children:e.jsx("button",{type:"button","aria-label":"Snapshot sync status details",className:"inline-flex text-text-secondary transition-colors hover:text-text-primary",children:e.jsx(N,{name:"info",className:"size-4"})})}):null,t.snapshotSyncStatus.status==="failed"?e.jsx(O,{variant:"ghost",size:"sm",type:"button",disabled:x,onClick:()=>{z(n)},children:"Retry"}):null,e.jsx(O,{variant:"secondary",size:"sm",type:"button",disabled:x,onClick:()=>{u(null),p(null),b(n)},children:"Update"}),a.deleteSandboxProvider?e.jsx(O,{variant:"ghost",size:"sm",className:"text-text-secondary",type:"button",disabled:x,onClick:()=>{_(n)},children:"Remove"}):null]})]},n.id)})})]}):null,v?null:e.jsxs("section",{children:[e.jsxs("h4",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-text-secondary",children:["Available · ",S.length]}),S.length===0?e.jsx("p",{className:"text-sm text-text-secondary",children:I.length>0?"All catalog providers are configured.":"No sandbox providers in the catalog."}):e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:S.map(t=>e.jsxs("article",{className:"flex flex-col gap-3 border-b border-border p-3 last:border-b-0 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[e.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:e.jsx(N,{name:"cube",className:"size-4.5"})}),e.jsx("div",{className:"min-w-0",children:e.jsx("h5",{className:"truncate text-sm font-medium text-text-primary",children:t.name})})]}),e.jsx(O,{variant:"secondary",type:"button",disabled:x,onClick:()=>{u(null),b(null),p(t)},children:"Configure"})]},t.id))})]})]})}),e.jsx(ne,{open:K,onOpenChange:t=>{t||(u(null),p(null),b(null))},onSave:E?T:P,title:s,description:E?"Update this sandbox provider. Leave API key blank to keep the existing key.":"Configure this sandbox provider. API key is never stored in the catalog.",initialConfig:B,requireApiKey:!E,busy:x,error:k})]})},de=ie;export{de as default};
@@ -0,0 +1 @@
1
+ import{a0 as xe,a1 as ze,a2 as he,r as i,a3 as pe,a4 as Ee,a5 as Re,a6 as ce,j as e,P as Ue,a7 as He,a8 as Q,a9 as Z,I as E,aa as Ve,ab as Ne,ac as je,ad as qe,ae as We,af as ye,ag as Y,ah as Qe,ai as J,aj as Ze,ak as Ge,al as Ke,am as Ye,an as Je,ao as Xe,d as H,e as de,ap as et,aq as oe,ar as tt,as as at,at as st,au as nt,Z as rt,av as ve,m as lt,aw as it}from"./index-DVCxCjDg.js";var ke=[{value:"America/New_York",label:"America/New_York (ET)"},{value:"America/Chicago",label:"America/Chicago (CT)"},{value:"America/Denver",label:"America/Denver (MT)"},{value:"America/Los_Angeles",label:"America/Los_Angeles (PT)"},{value:"UTC",label:"UTC"},{value:"Europe/London",label:"Europe/London (GMT/BST)"},{value:"Europe/Berlin",label:"Europe/Berlin (CET)"},{value:"Asia/Kolkata",label:"Asia/Kolkata (IST)"},{value:"Asia/Tokyo",label:"Asia/Tokyo (JST)"}];function Ae(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch{return"UTC"}}function ot(t){const s=Ae(),r=new Set(ke.map(u=>u.value));return[...[s,t].flatMap(u=>u==null||u.length===0||r.has(u)?[]:(r.add(u),[{value:u,label:u===s?`${u} (Local)`:u}])),...ke]}var Ie=[{value:1,label:"Mon"},{value:2,label:"Tue"},{value:3,label:"Wed"},{value:4,label:"Thu"},{value:5,label:"Fri"},{value:6,label:"Sat"},{value:0,label:"Sun"}],ct={"America/New_York":"ET","America/Chicago":"CT","America/Denver":"MT","America/Los_Angeles":"PT",UTC:"UTC","Europe/London":"GMT","Europe/Berlin":"CET","Asia/Kolkata":"IST","Asia/Tokyo":"JST"};function ie(){return{name:"",task:"",recurrence:"daily",hour:9,minute:0,weekdays:[1],customCron:"0 9 * * *",timezone:Ae()}}function dt(t){return ct[t]??t.split("/").pop()??t}function Pe(t){return t.toString().padStart(2,"0")}function ne({hour:t,minute:s}){const r=t>=12?"PM":"AM",l=t%12===0?12:t%12;return`${String(l)}:${Pe(s)} ${r}`}function ue(t){const s=t.minute,r=t.hour;switch(t.recurrence){case"hourly":return`${String(s)} * * * *`;case"daily":return`${String(s)} ${String(r)} * * *`;case"weekly":{const l=[...t.weekdays].sort((d,f)=>d-f),u=l.length>0?l.join(","):"*";return`${String(s)} ${String(r)} * * ${u}`}case"custom":return t.customCron.trim()}}function ae(t){const s=dt(t.timezone),r=t.cron.trim().split(/\s+/);if(r.length!==5)return t.cron;const[l,u,d,f,g]=r;if(d!=="*"||f!=="*")return t.cron;const m=Number(l),o=Number(u);if(u==="*"&&g==="*"&&l!==void 0&&!Number.isNaN(m))return`Hourly at :${Pe(m)} ${s}`;if(g==="*"&&u!==void 0&&l!==void 0&&!Number.isNaN(o)&&!Number.isNaN(m))return`Daily ${ne({hour:o,minute:m})} ${s}`;if(g==="1-5"&&u!==void 0&&l!==void 0&&!Number.isNaN(o)&&!Number.isNaN(m))return`Weekdays ${ne({hour:o,minute:m})} ${s}`;if(g!=null&&/^\d(?:,\d)*$/.test(g)&&u!==void 0&&l!==void 0&&!Number.isNaN(o)&&!Number.isNaN(m)){const N=g.split(",").map(n=>{var b;return((b=Ie.find(j=>j.value===Number(n)))==null?void 0:b.label)??n});return N.length===1?`Every ${N[0]==="Mon"?"Monday":N[0]} ${ne({hour:o,minute:m})} ${s}`:`${N.join(", ")} ${ne({hour:o,minute:m})} ${s}`}return t.cron}function Se(t){const s=ie(),r=t.cron.trim().split(/\s+/);if(r.length!==5)return{...s,name:t.name,task:t.task,timezone:t.timezone,recurrence:"custom",customCron:t.cron};const[l,u,d,f,g]=r,m=Number(l),o=Number(u);return d!=="*"||f!=="*"?{...s,name:t.name,task:t.task,timezone:t.timezone,recurrence:"custom",customCron:t.cron}:u==="*"&&g==="*"&&!Number.isNaN(m)?{...s,name:t.name,task:t.task,timezone:t.timezone,recurrence:"hourly",minute:m,customCron:t.cron}:g==="*"&&!Number.isNaN(o)&&!Number.isNaN(m)?{...s,name:t.name,task:t.task,timezone:t.timezone,recurrence:"daily",hour:o,minute:m,customCron:t.cron}:g!=null&&/^\d(?:,\d)*$/.test(g)&&!Number.isNaN(o)&&!Number.isNaN(m)?{...s,name:t.name,task:t.task,timezone:t.timezone,recurrence:"weekly",hour:o,minute:m,weekdays:g.split(",").map(Number),customCron:t.cron}:{...s,name:t.name,task:t.task,timezone:t.timezone,recurrence:"custom",customCron:t.cron,hour:Number.isNaN(o)?s.hour:o,minute:Number.isNaN(m)?s.minute:m}}function ut(t,s=Date.now()){if(t==null)return"Never";const r=Date.parse(t);if(Number.isNaN(r))return"Never";const l=Math.round((s-r)/1e3);if(l<60)return"just now";const u=Math.round(l/60);if(u<60)return`${String(u)} min ago`;const d=Math.round(u/60);if(d<48)return`${String(d)} hour${d===1?"":"s"} ago`;const f=Math.round(d/24);return`${String(f)} day${f===1?"":"s"} ago`}var mt=[{value:"hourly",label:"Hourly"},{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"}],xt=Array.from({length:24},(t,s)=>({value:String(s),label:s.toString().padStart(2,"0")})),we=[0,15,30,45].map(t=>({value:String(t),label:`:${t.toString().padStart(2,"0")}`}));function ht({values:t,onChange:s,agentId:r,onAgentIdChange:l,agentOptions:u,agentPickerDisabled:d=!1}){const f=ue(t),g=ae({cron:f,timezone:t.timezone}),m=ot(t.timezone),o=(n,b)=>{s({...t,[n]:b})},N=n=>{const j=t.weekdays.includes(n)?t.weekdays.filter($=>$!==n):[...t.weekdays,n];s({...t,weekdays:j.length>0?j:[n]})};return e.jsxs("div",{className:"flex flex-col gap-4 px-5 py-4",children:[e.jsxs("div",{className:"block",children:[e.jsx("span",{className:"mb-1.5 block text-sm font-medium",children:"Agent"}),e.jsx(Q,{"aria-label":"Agent",placeholder:"Select an agent",value:r,options:u.map(n=>({value:n.agentId,label:n.name})),onValueChange:n=>l==null?void 0:l(n),disabled:d||l==null})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"mb-1.5 block text-sm font-medium",children:"Name"}),e.jsx("input",{value:t.name,onChange:n=>o("name",n.target.value),placeholder:"harness-daily-digest",className:ve("h-9"),required:!0})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"mb-1.5 block text-sm font-medium",children:"Task"}),e.jsx("textarea",{value:t.task,onChange:n=>o("task",n.target.value),rows:3,placeholder:"Summarise yesterday's harness runs and post the digest…",className:ve("resize-y py-2"),required:!0})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{className:"mb-1.5 text-sm font-medium",children:"Recurrence"}),e.jsx("div",{className:"grid grid-cols-3 gap-1 rounded-lg border border-border p-1",children:mt.map(n=>{const b=t.recurrence===n.value;return e.jsx("button",{type:"button",className:H("rounded-md px-2 py-1.5 text-xs font-medium transition-colors",b?"border border-primary-button-bg/40 bg-primary-button-bg/10 text-primary-button-bg":"text-text-secondary hover:bg-ghost-button-hover border border-transparent"),"aria-pressed":b,onClick:()=>o("recurrence",n.value),children:n.label},n.value)})})]}),t.recurrence==="hourly"?e.jsxs("div",{className:"block max-w-[8rem]",children:[e.jsx("span",{className:"mb-1.5 block text-sm font-medium",children:"Minute"}),e.jsx(Q,{"aria-label":"Minute",value:String(t.minute),options:we,onValueChange:n=>o("minute",Number(n))})]}):null,t.recurrence==="daily"||t.recurrence==="weekly"?e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("div",{className:"block min-w-[7rem] flex-1",children:[e.jsx("span",{className:"mb-1.5 block text-sm font-medium",children:"Hour"}),e.jsx(Q,{"aria-label":"Hour",value:String(t.hour),options:xt,onValueChange:n=>o("hour",Number(n))})]}),e.jsxs("div",{className:"block min-w-[7rem] flex-1",children:[e.jsx("span",{className:"mb-1.5 block text-sm font-medium",children:"Minute"}),e.jsx(Q,{"aria-label":"Minute",value:String(t.minute),options:we,onValueChange:n=>o("minute",Number(n))})]})]}):null,t.recurrence==="weekly"?e.jsxs("fieldset",{children:[e.jsx("legend",{className:"mb-1.5 text-sm font-medium",children:"Days"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ie.map(n=>{const b=t.weekdays.includes(n.value);return e.jsx("button",{type:"button",className:H("rounded-md border px-2.5 py-1 text-xs font-medium",b?"border-primary-button-bg/40 bg-primary-button-bg/10 text-primary-button-bg":"border-border text-text-secondary hover:bg-ghost-button-hover"),"aria-pressed":b,onClick:()=>N(n.value),children:n.label},n.value)})})]}):null,t.recurrence==="custom"?e.jsxs("div",{className:"rounded-md border border-border bg-secondary-bg/40 px-3 py-2",children:[e.jsx("span",{className:"text-text-secondary block text-xs",children:"Existing custom schedule"}),e.jsx("code",{className:"text-text-primary mt-1 block font-mono text-sm",children:t.customCron}),e.jsx("span",{className:"text-text-secondary mt-1 block text-xs",children:"Select Hourly, Daily, or Weekly to replace this schedule."})]}):null,e.jsxs("div",{className:"block",children:[e.jsx("span",{className:"mb-1.5 block text-sm font-medium",children:"Timezone"}),e.jsx(Q,{"aria-label":"Timezone",value:t.timezone,options:m,onValueChange:n=>o("timezone",n),menuPlacement:"top"})]}),e.jsxs("div",{className:"rounded-lg border border-border bg-secondary-bg/40 px-3 py-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsx("span",{className:"text-text-secondary text-[10px] font-semibold tracking-wide uppercase",children:"Frequency"}),e.jsx("code",{className:"text-text-secondary font-mono text-xs",children:f||"—"})]}),e.jsx("p",{className:"text-text-primary mt-1 text-sm font-semibold",children:g||"—"})]})]})}function ft(t){return t.startsWith("manual-")}function gt(t){return t==="failed"?"failed":"success"}function De(t){return t==="failed"?"Failed":t==="triggered"?"Triggered":"Scheduled"}function Fe(t){return ft(t)?"Manual test":"Cron"}function bt(t,s=5){return t.filter(l=>l.status!=="scheduled").slice(0,s).reverse()}function me(t){if(t==null)return"—";const s=new Date(t);return Number.isNaN(s.getTime())?"—":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0}).format(s)}function pt({run:t}){return e.jsxs("div",{className:"flex flex-col gap-1 text-left text-xs",children:[e.jsx("p",{className:"text-text-primary font-medium",children:De(t.status)}),e.jsx("p",{className:"text-text-secondary",children:Fe(t.name)}),e.jsxs("p",{className:"text-text-secondary",children:["Scheduled for: ",me(t.scheduledFor)]}),t.triggeredAt!=null?e.jsxs("p",{className:"text-text-secondary",children:["Triggered at: ",me(t.triggeredAt)]}):null,e.jsxs("p",{className:"text-text-secondary",children:["Triggered by: ",t.triggeredBy]})]})}var Nt={success:"border-emerald-600/30 bg-emerald-500/10 text-emerald-700 dark:border-emerald-400/35 dark:bg-emerald-500/15 dark:text-emerald-300",failed:"border-red-600/30 bg-red-500/10 text-red-700 dark:border-red-400/35 dark:bg-red-500/15 dark:text-red-300"};function Me({run:t}){const s=gt(t.status),r=me(t.triggeredAt??t.scheduledFor);return e.jsx(at,{content:e.jsx(pt,{run:t}),side:"top",children:e.jsx("span",{className:H("inline-flex size-6 shrink-0 items-center justify-center rounded-md border",Nt[s]),"aria-label":`${De(t.status)} run at ${r}`,children:e.jsx(E,{name:s==="failed"?"triangle-exclamation":"check",className:"size-3.5"})})})}function $e({status:t}){const s=t==="active";return e.jsxs("span",{className:H("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-xs font-medium",s?"border-emerald-600/30 bg-emerald-500/10 text-emerald-700 dark:border-emerald-400/35 dark:bg-emerald-500/15 dark:text-emerald-300":"border-border bg-secondary-bg text-text-secondary"),children:[e.jsx("span",{className:H("size-1.5 shrink-0 rounded-full",s?"bg-emerald-600 dark:bg-emerald-400":"bg-text-secondary"),"aria-hidden":!0}),s?"Active":"Paused"]})}function jt(t,s){return t.find(r=>r.name===s||r.id===s)??null}function yt({connector:t,onConnected:s}){return lt()==null?null:e.jsx(it,{connector:t,onConnected:s})}function te({label:t,children:s}){return e.jsxs("div",{className:"flex items-start justify-between gap-3 border-b border-border px-3 py-2.5 last:border-b-0",children:[e.jsx("span",{className:"text-text-secondary shrink-0 text-[10px] font-semibold tracking-wide uppercase",children:t}),e.jsx("div",{className:"min-w-0 text-right text-sm text-text-primary",children:s})]})}function vt({schedule:t,agentName:s,mcpMounts:r,onEditConfiguration:l}){const u=xe(),d=he(),{connectors:f,ensureLoaded:g,refreshConnectors:m,loading:o,error:N}=rt(),[n,b]=i.useState(!1),[j,$]=i.useState(null),h=ae({cron:t.cron,timezone:t.timezone}),R=async()=>{b(!0);try{const y=await u.createScheduleRun({scheduleId:t.id});$(y),d==null||d.showSuccess({title:"Test run started"})}catch(y){d==null||d.showError(y)}finally{b(!1)}};return i.useEffect(()=>{g()},[g]),i.useEffect(()=>{N!=null&&(d==null||d.showError(N))},[N,d]),e.jsxs("div",{className:"flex flex-col gap-4 px-5 py-4",children:[e.jsxs("section",{className:"overflow-hidden rounded-lg border border-border bg-card-bg",children:[e.jsx(te,{label:"Agent",children:s}),e.jsx(te,{label:"Name",children:t.name}),e.jsx(te,{label:"Task",children:e.jsx("span",{className:"whitespace-pre-wrap break-words",children:t.task})}),e.jsx(te,{label:"Cadence",children:e.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-1.5",children:[e.jsx("span",{children:h}),e.jsx("code",{className:"text-text-secondary font-mono text-xs",children:t.cron})]})}),e.jsx(te,{label:"Status",children:e.jsx($e,{status:t.status})}),e.jsx("div",{className:"flex justify-end px-3 py-2.5",children:e.jsxs(Z,{type:"button",variant:"outline",size:"sm",onClick:l,children:[e.jsx(E,{name:"pencil",className:"size-3.5"}),"Edit Configuration"]})})]}),e.jsxs("section",{className:"overflow-hidden rounded-lg border border-border bg-card-bg",children:[e.jsx("div",{className:"border-b border-border px-3 py-2",children:e.jsx("h3",{className:"text-text-secondary text-[10px] font-semibold tracking-wide uppercase",children:"Tool Authorization"})}),r.length===0?e.jsx("p",{className:"text-text-secondary px-3 py-3 text-sm",children:"No MCP connectors configured for this agent."}):e.jsx("ul",{className:"divide-y divide-border",children:r.map(y=>{const S=jt(f,y.name),w=(S==null?void 0:S.authenticated)===!0,L=S==null&&!o;return e.jsxs("li",{className:"flex items-center gap-2 px-3 py-2.5",children:[e.jsx("span",{className:H("inline-flex size-4 shrink-0 items-center justify-center rounded-full border",w?"border-emerald-600/40 bg-emerald-500/15 text-emerald-700 dark:text-emerald-300":"border-border text-transparent"),"aria-hidden":!0,children:w?e.jsx(E,{name:"check",className:"size-3"}):null}),e.jsx("span",{className:"text-text-primary min-w-0 flex-1 truncate text-sm",children:y.name}),w?e.jsx("span",{className:"text-success-bg text-xs font-medium",children:"Connected"}):L?e.jsx("span",{className:"text-text-secondary text-xs",children:"Unavailable"}):S!=null&&S.authenticated===!1?e.jsx(yt,{connector:S,onConnected:m}):o?e.jsx("span",{className:"text-text-secondary text-xs",children:"Loading…"}):null]},y.name)})})]}),e.jsxs("section",{className:"overflow-hidden rounded-lg border border-border bg-card-bg",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-border px-3 py-2",children:[e.jsx("h3",{className:"text-text-secondary text-[10px] font-semibold tracking-wide uppercase",children:"Test Run"}),e.jsxs("button",{type:"button",disabled:n,onClick:()=>void R(),className:de({variant:"default",size:"sm"}),children:[e.jsx(E,{name:n?"loader":"play",className:H("size-3.5",n&&"animate-spin")}),"Run Test"]})]}),j==null?e.jsx("p",{className:"text-text-secondary px-3 py-3 text-sm",children:"Run a one-off test using the schedule task. This does not change the cron pending run."}):e.jsxs("div",{className:"flex items-center gap-3 px-3 py-3",children:[e.jsx(Me,{run:j}),e.jsxs("div",{className:"min-w-0 text-sm",children:[e.jsx("p",{className:"text-text-primary font-medium",children:Fe(j.name)}),e.jsx("p",{className:"text-text-secondary",children:ut(j.triggeredAt??j.scheduledFor)})]})]})]})]})}function kt({open:t,onOpenChange:s,mode:r,schedule:l,initialAgentId:u="",onSaved:d}){var ee;const f=xe(),g=ze(),m=he(),[o,N]=i.useState(ie),[n,b]=i.useState(u),[j,$]=i.useState([]),[h,R]=i.useState({kind:"form"}),[y,S]=i.useState(!1),[w,L]=i.useState(!1),[v,D]=i.useState(null),O=h.kind==="form"?h.saved:h.schedule,T=r==="edit"&&h.kind==="form"&&h.saved==null&&l!=null,A=h.kind==="form"&&h.saved!=null;i.useEffect(()=>{if(!t)return;let x=!1;return Re(g).then(C=>{x||$(C)}).catch(()=>{}),()=>{x=!0}},[t,g]),i.useEffect(()=>{if(!t){N(ie()),b(u),D(null),R({kind:"form"}),L(!1);return}if(r==="edit"&&l!=null){N(Se({name:l.name,task:l.task,cron:l.cron,timezone:l.timezone})),b(l.agentId),R({kind:"form"});return}N(ie()),b(u),R({kind:"form"})},[t,r,l,u]);const V=i.useMemo(()=>j.map(x=>({agentId:ce(x),name:x.name})),[j]),k=i.useMemo(()=>j.find(x=>ce(x)===n)??null,[j,n]),X=(k==null?void 0:k.name)??(O==null?void 0:O.agentName)??(l==null?void 0:l.agentName)??((ee=V.find(x=>x.agentId===n))==null?void 0:ee.name)??n,q=i.useMemo(()=>{var C;return(((C=k==null?void 0:k.agentSpec)==null?void 0:C.mcpServers)??[]).map(st).filter(z=>z!=null).map(z=>({name:z}))},[k]),I=i.useMemo(()=>{const x=ue(o);return o.name.trim().length>0&&o.task.trim().length>0&&x.length>0&&n.length>0},[o,n]),_=x=>{R({kind:"test",schedule:x}),N(Se({name:x.name,task:x.task,cron:x.cron,timezone:x.timezone})),b(x.agentId)},se=async x=>{if(x.preventDefault(),!I)return;const C=ue(o);S(!0),D(null);try{if(T&&l!=null){await f.updateSchedule({id:l.id,name:o.name.trim(),task:o.task.trim(),cron:C,timezone:o.timezone,status:l.status}),d==null||d(),s(!1);return}if(A&&h.kind==="form"&&h.saved!=null){const P=await f.updateSchedule({id:h.saved.id,name:o.name.trim(),task:o.task.trim(),cron:C,timezone:o.timezone,status:"paused"});d==null||d(),_(P),m==null||m.showSuccess({title:"Schedule saved as paused",description:ae({cron:P.cron,timezone:P.timezone})});return}const z=await f.createSchedule({agentId:n,name:o.name.trim(),task:o.task.trim(),cron:C,timezone:o.timezone,status:"paused"});d==null||d(),_(z),m==null||m.showSuccess({title:"Schedule saved as paused",description:ae({cron:z.cron,timezone:z.timezone})})}catch(z){const P=z instanceof Error?z.message:"Failed to save schedule";D(P)}finally{S(!1)}},W=async()=>{if(h.kind==="test"){L(!0),D(null);try{await f.updateSchedule({id:h.schedule.id,name:h.schedule.name,task:h.schedule.task,cron:h.schedule.cron,timezone:h.schedule.timezone,status:"active"}),d==null||d(),m==null||m.showSuccess({title:"Schedule activated"}),s(!1)}catch(x){const C=x instanceof Error?x.message:"Failed to activate schedule";D(C),m==null||m.showError(x)}finally{L(!1)}}},F=h.kind==="test"?"Test Schedule":T||A?"Edit Schedule":"New Schedule",M=h.kind==="test"?`Recurring unattended runs of ${X}.`:T||A?"Update cadence and task for this schedule.":"Create a recurring unattended run for an agent.";let G;return h.kind==="test"?G=e.jsxs("div",{className:"flex flex-col gap-2",children:[v!=null?e.jsx("p",{className:"text-failure-bg text-sm",children:v}):null,e.jsx(Z,{type:"button",variant:"secondary",className:"w-full",disabled:w,onClick:()=>void W(),children:"Activate Anyway"})]}):G=e.jsxs("div",{className:"flex flex-col gap-2",children:[v!=null?e.jsx("p",{className:"text-failure-bg text-sm",children:v}):null,e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(Z,{type:"button",variant:"outline",onClick:()=>s(!1),disabled:y,children:"Cancel"}),e.jsx(Z,{type:"submit",form:"schedule-form",disabled:!I||y,children:"Save"})]})]}),e.jsx(nt,{open:t,onOpenChange:s,title:F,description:M,anchor:"right",size:"lg",headerIcon:e.jsx("span",{className:"text-primary-button-bg inline-flex size-8 items-center justify-center",children:e.jsx(E,{name:h.kind==="test"||T||A?"calendar":"calendar-plus",className:"size-5"})}),footer:G,children:h.kind==="test"?e.jsx(vt,{schedule:h.schedule,agentName:X,mcpMounts:q,onEditConfiguration:()=>{D(null),R({kind:"form",saved:h.schedule})}}):e.jsx("form",{id:"schedule-form",onSubmit:x=>void se(x),children:e.jsx(ht,{values:o,onChange:N,agentId:n,onAgentIdChange:T||A?void 0:b,agentOptions:V,agentPickerDisabled:T||A})})})}function Te(t){return e.jsx(tt,{children:e.jsx(kt,{...t})})}function St({runs:t}){const s=bt(t);return s.length===0?e.jsx("span",{className:"text-text-secondary text-sm",children:"—"}):e.jsx("div",{className:"flex items-center gap-1",children:s.map(r=>e.jsx(Me,{run:r},r.id))})}var wt=[{value:"all",label:"All statuses"},{value:"active",label:"Active"},{value:"paused",label:"Paused"}],Ce=[10,25];function re(t){return Math.min(Math.max(t,1),25)}function le(t){const s=Ee(t);return{nameQuery:s.q??"",statusFilter:s.status??"all",agentFilter:s.agent??"all"}}function Tt({schedule:t,running:s,onRunNow:r,onEdit:l,onTogglePause:u,onDelete:d}){return e.jsxs("div",{className:"inline-flex items-center justify-end gap-1.5",children:[e.jsxs("button",{type:"button",disabled:s,"aria-label":`Run now ${t.name}`,className:de({variant:"outline",size:"sm"}),onClick:r,children:[e.jsx(E,{name:s?"loader":"play",className:H("size-3.5",s&&"animate-spin")}),"Run now"]}),e.jsxs(et,{align:"end",trigger:e.jsx("button",{type:"button",className:de({variant:"ghost",size:"icon"}),"aria-label":`Actions for ${t.name}`,children:e.jsx(E,{name:"ellipsis",className:"size-4"})}),children:[e.jsxs(oe,{onClick:l,children:[e.jsx(E,{name:"pencil",className:"size-3.5"}),"Edit"]}),e.jsxs(oe,{onClick:u,children:[e.jsx(E,{name:t.status==="active"?"pause":"play",className:"size-3.5"}),t.status==="active"?"Pause":"Resume"]}),e.jsxs(oe,{className:"text-failure-bg focus:text-failure-bg",onClick:d,children:[e.jsx(E,{name:"trash",className:"size-3.5"}),"Delete"]})]})]})}function zt(){const t=xe(),s=ze(),r=he(),[l,u]=i.useState([]),[d,f]=i.useState({}),[g,m]=i.useState(!1),[o,N]=i.useState(()=>new Set),[n,b]=i.useState([]),[j,$]=i.useState(!0),[h,R]=i.useState(null),[y,S]=i.useState(()=>le(window.location.search).nameQuery),[w,L]=i.useState(()=>le(window.location.search).statusFilter),[v,D]=i.useState(()=>le(window.location.search).agentFilter),[O,T]=i.useState({kind:"closed"}),[A,V]=i.useState(null),[k,X]=i.useState(()=>re(Xe)),[q,I]=i.useState(void 0),[_,se]=i.useState(void 0),[W,F]=i.useState([]),M=i.useRef(0),G=i.useRef(!1),ee=i.useCallback(async({rows:a,gen:c})=>{if(a.length===0){c===M.current&&f({});return}m(!0);try{const p=await Promise.allSettled(a.map(B=>t.listScheduleRuns({scheduleId:B.id})));if(c!==M.current)return;f(Object.fromEntries(a.map((B,U)=>{const K=p[U],Be=(K==null?void 0:K.status)==="fulfilled"?K.value:[];return[B.id,Be]})))}finally{c===M.current&&m(!1)}},[t]),x=i.useCallback(async({token:a,size:c,agentId:p})=>{const B=++M.current;$(!0),R(null);try{const U=await t.listSchedules({limit:re(c),...a===void 0||a===""?{}:{pageToken:a},...p==="all"?{}:{agentIds:[p]}});if(B!==M.current)return;u(U.data),se(U.nextPageToken),ee({rows:U.data,gen:B})}catch(U){if(B!==M.current)return;const K=U instanceof Error?U.message:"Failed to load schedules";R(K),u([]),f({}),se(void 0)}finally{B===M.current&&$(!1)}},[t,ee]),C=i.useCallback(a=>{const c=(a==null?void 0:a.size)??k,p=(a==null?void 0:a.agentId)??v;I(void 0),F([]),x({token:void 0,size:c,agentId:p})},[v,x,k]);i.useEffect(()=>{pe({agent:v==="all"?null:v,status:w==="all"?null:w,q:y.trim().length===0?null:y})},[v,w,y]),i.useEffect(()=>{if(G.current)return;const a=Ee(window.location.search);a.isNew&&(G.current=!0,T({kind:"create",...a.agent!=null?{agentId:a.agent}:{}}),pe({isNew:null}))},[]),i.useEffect(()=>{const a=()=>{const c=le(window.location.search);S(c.nameQuery),L(c.statusFilter),D(p=>p===c.agentFilter?p:(I(void 0),F([]),c.agentFilter))};return window.addEventListener("popstate",a),()=>{window.removeEventListener("popstate",a)}},[]),i.useEffect(()=>{x({token:q,size:k,agentId:v})},[v,k,q,x]),i.useEffect(()=>{let a=!1;return Re(s).then(c=>{a||b(c.map(p=>({agentId:ce(p),name:p.name})))}).catch(()=>{}),()=>{a=!0}},[s]);const z=i.useMemo(()=>{const a=new Map;for(const c of n)a.set(c.agentId,c.name);return a},[n]),P=i.useMemo(()=>{const a=y.trim().toLowerCase();return l.filter(c=>!(w!=="all"&&c.status!==w||a.length>0&&!c.name.toLowerCase().includes(a)))},[l,y,w]),fe=W.length>0||_!=null,Le=async a=>{const c=a.status==="active"?"paused":"active";try{await t.updateSchedule({...a,status:c}),await x({token:q,size:k,agentId:v})}catch(p){r==null||r.showError(p)}},Oe=async a=>{N(c=>new Set(c).add(a.id));try{await t.createScheduleRun({scheduleId:a.id}),r==null||r.showSuccess({title:"Run started"});const c=await t.listScheduleRuns({scheduleId:a.id});f(p=>({...p,[a.id]:c}))}catch(c){r==null||r.showError(c)}finally{N(c=>{const p=new Set(c);return p.delete(a.id),p})}},_e=async a=>{V(null);try{await t.deleteSchedule({id:a.id}),C()}catch(c){r==null||r.showError(c)}},ge=()=>{_!=null&&(F(a=>[...a,q??""]),I(_))},be=()=>{if(W.length===0)return;const a=[...W],c=a.pop();F(a),I(c===""?void 0:c)};return e.jsxs("div",{className:"flex h-full min-h-0 flex-col bg-primary-bg",children:[e.jsx(Ue,{title:"Scheduled Agents",end:e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-full sm:w-56",children:e.jsx(He,{query:y,setQuery:S,placeholder:"Search schedules by name"})}),e.jsx(Q,{value:w,onValueChange:L,options:wt,className:"sm:w-40","aria-label":"Filter by status"}),e.jsx(Q,{value:v,onValueChange:a=>{D(a),I(void 0),F([])},options:[{value:"all",label:"All agents"},...n.map(a=>({value:a.agentId,label:a.name}))],className:"sm:w-40","aria-label":"Filter by agent"}),e.jsxs(Z,{type:"button",onClick:()=>T({kind:"create",agentId:v!=="all"?v:void 0}),children:[e.jsx(E,{name:"plus",className:"size-3.5"}),"Create Schedule"]})]})}),e.jsx("div",{className:"min-h-0 flex-1 overflow-auto px-4 py-4 md:px-6",children:j?e.jsx("div",{className:"flex flex-col gap-2",role:"status","aria-label":"Loading schedules",children:Array.from({length:5},(a,c)=>e.jsx(Ve,{className:"h-12 w-full rounded-md"},c))}):h!=null?e.jsx("p",{className:"text-failure-bg px-3 py-8 text-center text-sm",children:h}):l.length===0?e.jsx(Ne,{title:"No Schedules Found",description:"Create one to get started.",className:"min-h-full"}):P.length===0?e.jsxs("div",{className:"flex min-h-full flex-col",children:[e.jsx(Ne,{title:"No Schedules Found",description:"No schedules match your filters.",className:"flex-1"}),fe?e.jsx(je,{pageSize:k,rowCount:0,canPrev:W.length>0,canNext:_!=null,onPrev:be,onNext:ge,pageSizeOptions:Ce,onPageSizeChange:a=>{const c=re(a);X(c),I(void 0),F([])}}):null]}):e.jsxs("div",{className:"rounded-lg border border-border",children:[e.jsxs(qe,{className:"min-w-[48rem]",children:[e.jsx(We,{children:e.jsxs(ye,{className:"hover:bg-transparent",children:[e.jsx(Y,{children:"Name"}),e.jsx(Y,{children:"Agent"}),e.jsx(Y,{children:"Cadence"}),e.jsx(Y,{children:"Status"}),e.jsx(Y,{children:"Last 5 runs"}),e.jsx(Y,{children:e.jsx("span",{className:"sr-only",children:"Actions"})})]})}),e.jsx(Qe,{children:P.map(a=>{const c=ae({cron:a.cron,timezone:a.timezone}),p=a.agentName??z.get(a.agentId)??a.agentId;return e.jsxs(ye,{children:[e.jsx(J,{className:"text-text-primary font-medium",children:e.jsx("button",{type:"button",className:"text-primary-button-bg hover:underline text-left",onClick:()=>T({kind:"edit",schedule:a}),children:a.name})}),e.jsx(J,{children:p}),e.jsx(J,{children:c}),e.jsx(J,{children:e.jsx($e,{status:a.status})}),e.jsx(J,{children:g?e.jsx("span",{className:"text-text-secondary text-sm",children:"…"}):e.jsx(St,{runs:d[a.id]??[]})}),e.jsx(J,{className:"text-right",children:e.jsx(Tt,{schedule:a,running:o.has(a.id),onRunNow:()=>void Oe(a),onEdit:()=>T({kind:"edit",schedule:a}),onTogglePause:()=>void Le(a),onDelete:()=>V(a)})})]},a.id)})})]}),(P.length>0||fe)&&e.jsx(je,{pageSize:k,rowCount:P.length,canPrev:W.length>0,canNext:_!=null,onPrev:be,onNext:ge,pageSizeOptions:Ce,onPageSizeChange:a=>{const c=re(a);X(c),I(void 0),F([])}})]})}),O.kind==="create"?e.jsx(Te,{open:!0,mode:"create",initialAgentId:O.agentId??"",onOpenChange:a=>{a||T({kind:"closed"})},onSaved:()=>C()}):null,O.kind==="edit"?e.jsx(Te,{open:!0,mode:"edit",schedule:O.schedule,onOpenChange:a=>{a||T({kind:"closed"})},onSaved:()=>void x({token:q,size:k,agentId:v})}):null,A!=null?e.jsxs(Ze,{open:!0,onOpenChange:a=>{a||V(null)},"aria-label":"Delete schedule",className:"max-w-md",children:[e.jsx(Ge,{children:e.jsxs(Ke,{children:[e.jsx(Ye,{children:"Delete schedule"}),e.jsxs("p",{className:"text-text-secondary text-sm",children:["“",A.name,"” will stop running. This cannot be undone."]})]})}),e.jsxs(Je,{children:[e.jsx(Z,{type:"button",variant:"secondary",onClick:()=>V(null),children:"Cancel"}),e.jsx(Z,{type:"button",variant:"destructive",onClick:()=>void _e(A),children:"Delete"})]})]}):null]})}export{zt as SchedulesPage};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ModelSettings-G7IFNC2Y-DxVYHG2m.js","assets/index-DVCxCjDg.js","assets/index-D8eVAzN5.css","assets/ConnectorSettings-MXFRWWR6-BEwXZbPM.js","assets/SkillSettings-FGGMSUNO-CjrGBX5J.js","assets/SandboxSettings-NXAANMAX-DhC28qE6.js"])))=>i.map(i=>d[i]);
2
+ import{k as h,m as v,Y as y,Z as j,$ as S,r as t,j as e,P as _,I as p,e as k,d as f,_ as d,S as w}from"./index-DVCxCjDg.js";var E=t.lazy(()=>d(()=>import("./ModelSettings-G7IFNC2Y-DxVYHG2m.js"),__vite__mapDeps([0,1,2]))),C=t.lazy(()=>d(()=>import("./ConnectorSettings-MXFRWWR6-BEwXZbPM.js"),__vite__mapDeps([3,1,2]))),N=t.lazy(()=>d(()=>import("./SkillSettings-FGGMSUNO-CjrGBX5J.js"),__vite__mapDeps([4,1,2]))),L=t.lazy(()=>d(()=>import("./SandboxSettings-NXAANMAX-DhC28qE6.js"),__vite__mapDeps([5,1,2])));function O(){return e.jsxs("div",{className:"flex flex-1 items-center justify-center py-8",role:"status","aria-live":"polite","aria-busy":"true",children:[e.jsx(w,{size:20,className:"text-text-secondary"}),e.jsx("span",{className:"sr-only",children:"Loading"})]})}var P=()=>{const{settingsOpen:n,settingsSection:l,setSettingsOpen:r}=h(),a=v(),u=y(),{refresh:m}=j(),i=S(),o=(a==null?void 0:a.skillCatalog)!=null,c=(a==null?void 0:a.sandboxCatalog)!=null,x=t.useCallback(()=>{r(!1)},[r]);t.useEffect(()=>{if(n)return()=>{m(),u==null||u()}},[n,m,u]),t.useEffect(()=>{!o&&l==="skills"&&r(n,"models"),!c&&l==="sandbox"&&r(n,"models")},[o,c,l,n,r]),t.useEffect(()=>{if(!n)return;const s=b=>{b.key==="Escape"&&(b.stopImmediatePropagation(),x())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[x,n]);const g=t.useMemo(()=>{const s=[{id:"models",label:"Models",icon:"cpu"},{id:"connectors",label:"Connectors",icon:"plug"}];return o&&s.push({id:"skills",label:"Skills",icon:"lightbulb"}),c&&s.push({id:"sandbox",label:"Sandbox providers",icon:"cube"}),s},[o,c]);return!n||!a?null:e.jsxs("div",{className:"flex h-full min-h-0 w-full flex-col bg-primary-bg",children:[e.jsx(_,{title:"Settings",start:e.jsx("button",{type:"button","aria-label":"Back",title:"Back",className:k({variant:"ghost",size:"icon"}),onClick:x,children:e.jsx(p,{name:"arrow-left"})})}),e.jsxs("div",{className:f("flex min-h-0 flex-1 flex-col",!i&&"md:flex-row"),children:[e.jsx("nav",{"aria-label":"Settings sections",className:f("flex w-full gap-1 border-b border-border bg-secondary-bg/40 p-2",i?"min-w-0":"justify-center md:w-48 md:flex-col md:justify-start md:border-b-0 md:border-r"),children:g.map(s=>e.jsxs("button",{type:"button","aria-current":l===s.id?"page":void 0,...i?{title:s.label}:{},className:f("flex min-h-9 items-center gap-2 rounded-md px-3 text-sm font-medium transition-colors","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring",i?"min-w-0 flex-1 justify-center gap-1.5 px-1.5":"shrink-0",l===s.id?"bg-primary-button-bg text-primary-button-text":"text-text-secondary hover:bg-ghost-button-hover/60 hover:text-text-primary"),onClick:()=>{r(!0,s.id)},children:[e.jsx(p,{name:s.icon,className:"h-4 w-4 shrink-0"}),i?e.jsx("span",{className:"truncate",children:s.label}):s.label]},s.id))}),e.jsx("section",{className:"flex flex-col h-full flex-1 overflow-y-hidden px-6 py-4",children:e.jsx("div",{className:"w-full max-w-210 h-full min-h-0 flex flex-col mx-auto",children:e.jsxs(t.Suspense,{fallback:e.jsx(O,{}),children:[l==="models"?e.jsx(E,{}):null,l==="connectors"?e.jsx(C,{}):null,l==="skills"&&o?e.jsx(N,{}):null,l==="sandbox"&&c?e.jsx(L,{}):null]})})})]})]})},I=P;export{I as default};
@@ -0,0 +1 @@
1
+ import{m as w,p as k,b as I,s as C}from"./chunk-WVE3F724-CL71bP7s.js";import{k as q,l as x,m as W,n as $,o as z,r,p as D}from"./index-DVCxCjDg.js";import{u as F,a as J}from"./chunk-62JRHF6Z-BLb_tkPU.js";function M(s){const o=s.activeRemoteId??s.pendingSessionId;if(o!=null)return{type:"session",sessionId:o};const{mode:u,agentConfigMode:e}=s;if(u.status==="active"&&!u.isMutable&&e!=="SingleAgent"){const p=u.agentName??u.agentId;if(p!=null)return{type:"agent",agentName:p}}return{type:"root"}}function K(s){return s.settingsOpen?{type:"settings"}:s.schedulesOpen?{type:"schedules"}:s.sessionsOpen?{type:"sessionsBrowser"}:s.libraryOpen&&s.libraryAgentId!=null?{type:"libraryAgent",agentId:s.libraryAgentId}:s.libraryOpen?{type:"library"}:M(s)}function T({routes:s,activeRemoteId:o,initialSettingsOpen:u}){const e=q(),p=x(),N=W(),E=$(),m=F(),n=J(),f=z({catalog:N,capabilities:E}),i=r.useMemo(()=>f?s:{...s,settings:null},[s,f]),L={settingsOpen:e.settingsOpen,libraryOpen:e.libraryOpen,sessionsOpen:e.sessionsOpen,libraryAgentId:e.libraryAgentId,schedulesOpen:e.schedulesOpen,pendingSessionId:e.pendingSessionId,activeRemoteId:o,mode:e.mode,agentConfigMode:e.agentConfigMode},h=K(L),B=JSON.stringify(h),g=r.useRef(null),S=r.useRef(null),d=r.useRef(!1),O=r.useRef(null),P=r.useRef(!1),v=r.useRef(!1),R=r.useCallback(t=>{if(O.current=t,p==null){e.openHistorySession({sessionId:t});return}p.getSession({sessionId:t}).then(a=>{O.current===t&&e.openHistorySession({sessionId:t,isMutable:a.isMutable,isCreateAgent:D(a),...a.agentName!=null?{agentName:a.agentName}:{}})}).catch(()=>{O.current===t&&e.openHistorySession({sessionId:t})})},[p,e]),A=r.useCallback(t=>{switch(t.type){case"settings":e.setSettingsOpen(!0);return;case"library":e.setLibraryOpen(!0);return;case"sessionsBrowser":e.setSessionsOpen(!0);return;case"libraryAgent":e.openLibraryAgent(t.agentId);return;case"schedules":e.setSchedulesOpen(!0);return;case"session":if(e.setLibraryOpen(!1),e.pendingSessionId===t.sessionId||o===t.sessionId)return;R(t.sessionId);return;case"agent":e.setLibraryOpen(!1),e.selectLibraryAgent({isMutable:!1,agentName:t.agentName});return;case"root":switch(e.setSettingsOpen(!1),e.setLibraryOpen(!1),e.setSchedulesOpen(!1),e.agentConfigMode){case"AgentLibrary":e.openLibraryHome();return;case"AgentComposer":case"AgentLibraryWithComposer":e.openDraft();return;case"SingleAgent":e.clearChat();return}}},[e,o,R]);return r.useEffect(()=>{if(d.current)return;d.current=!0;const t=w({pathname:n.pathname,search:n.search,routes:i})??{type:"root"},a=f&&(u||t.type==="settings");if(t.type==="settings")f&&e.setSettingsOpen(!0);else if(t.type==="library")e.setLibraryOpen(!0);else if(t.type==="sessionsBrowser")e.setSessionsOpen(!0);else if(t.type==="libraryAgent")e.openLibraryAgent(t.agentId);else if(t.type==="schedules")e.setSchedulesOpen(!0);else{const b=M(L);k(b,t)||A(t),a&&e.setSettingsOpen(!0)}const c=a?{type:"settings"}:t,l=I(c,i),y=C(c,n.search);S.current=c,l!=null&&(l!==n.pathname||y!==n.search)&&(g.current=l!==n.pathname?l:null,m({pathname:l,search:y,hash:n.hash},{replace:!0}))},[]),r.useEffect(()=>{if(!d.current)return;if(!P.current){P.current=!0;return}const t=I(h,i);if(t==null)return;const c=`${i.basename.endsWith("/")?i.basename.slice(0,-1):i.basename}${n.pathname}`||"/",l=window.location.pathname===c?window.location.search:n.search,y=C(h,l),b=S.current;if(S.current=h,t===n.pathname&&y===n.search)return;const H=h.type==="session"&&e.pendingSessionId==null&&b!=null&&b.type!=="session";g.current=t!==n.pathname?t:null,m({pathname:t,search:y,hash:n.hash},{replace:H})},[B,f]),r.useEffect(()=>{if(!d.current)return;if(!v.current){v.current=!0;return}if(g.current===n.pathname){g.current=null;return}const t=w({pathname:n.pathname,search:n.search,routes:i});if(t==null){const a=i.root,c=C({type:"root"},n.search);g.current=a,m({pathname:a,search:c,hash:n.hash},{replace:!0}),A({type:"root"});return}t.type!=="settings"&&e.settingsOpen&&e.setSettingsOpen(!1),t.type!=="library"&&t.type!=="libraryAgent"&&e.libraryOpen&&e.setLibraryOpen(!1),t.type!=="sessionsBrowser"&&e.sessionsOpen&&e.setSessionsOpen(!1),t.type!=="schedules"&&e.schedulesOpen&&e.setSchedulesOpen(!1),A(t)},[n.pathname]),null}export{T as ShellRouteSync};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js","assets/index-DVCxCjDg.js","assets/index-D8eVAzN5.css","assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js"])))=>i.map(i=>d[i]);
2
+ import{u as P,a as M,b as a,r as n,s as R,c as H,j as t,P as V,I as y,d as x,e as N,S as L,f as F,g as q,_ as z,h as K}from"./index-DVCxCjDg.js";import{A as W,N as G,T as J,S as Q}from"./chunk-DMMZSZTN-BBNhHida.js";var U=n.lazy(()=>z(()=>import("./SettingsBuilder-L34IQ56S-BQuxGH5w.js"),__vite__mapDeps([0,1,2]))),X=n.lazy(()=>z(()=>import("./SchedulesPage-KKLUDO6B-CWdrd7KY.js"),__vite__mapDeps([3,1,2])).then(i=>({default:i.SchedulesPage}))),Y="h-5 w-5 max-w-40 shrink-0 object-contain",Z="w-18",k="h-auto w-full flex-col gap-1.5 whitespace-normal px-1 py-3 text-[0.625rem] leading-tight !justify-center text-text-primary shadow-none hover:bg-secondary-button-hover hover:text-ghost-button-text",_="bg-primary-button-bg text-primary-button-text hover:bg-primary-button-hover hover:text-primary-button-text";function $(){const i=K(),e=P(),u=a("AgentsLibraryButton"),f=a("SessionsBrowserButton"),b=a("SchedulesButton"),d=(e==null?void 0:e.isNewChatEnabled)!==!1,m=(e==null?void 0:e.settingsOpen)===!0||(e==null?void 0:e.libraryOpen)===!0||(e==null?void 0:e.sessionsOpen)===!0||(e==null?void 0:e.schedulesOpen)===!0,s=e==null?void 0:e.mode,o=!m&&(s==null?void 0:s.status)==="active"&&s.isMutable&&!s.isCreateAgent,r=!m&&s!=null&&R(s),l=()=>{if(e==null||e.setLibraryOpen(!1),e==null||e.setSessionsOpen(!1),e!=null&&e.isComposerEnabled){e.openDraft();return}e==null||e.setSettingsOpen(!1),e==null||e.setSchedulesOpen(!1),Promise.resolve(i.threads().switchToNewThread()).catch(()=>{})},p=()=>{e==null||e.setLibraryOpen(!1),e==null||e.setSessionsOpen(!1),e!=null&&e.isComposerEnabled&&e.openAgentBuilder()};return t.jsxs("nav",{className:"flex min-h-0 flex-1 flex-col items-center gap-1 p-1","aria-label":"Sidebar",children:[d?t.jsxs("button",{type:"button","aria-label":"Start new chat",title:"New chat","aria-current":o?"page":void 0,className:N({variant:"ghost",className:x(k,o&&_)}),onClick:l,children:[t.jsx(y,{name:"square-pen",size:16}),t.jsx("span",{className:"text-center",children:"New Chat"})]}):null,d&&(e!=null&&e.isComposerEnabled)?t.jsxs("button",{type:"button","aria-label":"Start new agent",title:"New Agent","aria-current":r?"page":void 0,className:N({variant:"ghost",className:x(k,r&&_)}),onClick:p,children:[t.jsx(y,{name:"agent-2",size:16}),t.jsx("span",{className:"text-center",children:"New Agent"})]}):null,t.jsx(u,{compact:!0}),t.jsx(f,{compact:!0}),t.jsx(b,{compact:!0})]})}function I({onNavigate:i,className:e,railRef:u,...f}){const b=F(),d=q(b),m=a("BrandLogo");return t.jsxs("aside",{ref:u,className:x(Z,"flex min-h-0 shrink-0 flex-col border-r border-border bg-sidebar-bg",e),onClick:s=>{if(i==null)return;const o=s.target;o instanceof Element&&o.closest("button")!=null&&i()},...f,children:[t.jsx("div",{className:"flex h-14 w-full shrink-0 items-center justify-center text-text-primary",children:t.jsx(m,{variant:d.collapsedVariant,className:Y})}),t.jsx($,{}),t.jsx("footer",{className:"flex shrink-0 flex-col items-center border-border p-2",children:t.jsx(Q,{labeled:!0,className:"flex-col"})})]})}function se({className:i}){const e=P(),u=M(),f=a("AgentDetailsPage"),b=a("AgentsLibrary"),d=a("SessionsPage"),m=a("ClearChatButton"),s=a("SaveAgentButton"),o=a("SelectAgentEmptyState"),[r,l]=n.useState(!1),p=n.useRef(null),w=n.useRef(null),S=n.useRef(null),j=n.useRef(!1),C=(e==null?void 0:e.mode.status)==="idle",A=(e==null?void 0:e.settingsOpen)===!0,v=(e==null?void 0:e.libraryOpen)===!0,O=(e==null?void 0:e.sessionsOpen)===!0,B=(e==null?void 0:e.schedulesOpen)===!0,g=A||v||O||B,D=e!=null&&R(e.mode)&&!g&&(!u||e.agentConfigOpen),T=H();return n.useEffect(()=>{if(!r)return;const c=h=>{h.key==="Escape"&&l(!1)};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[r]),n.useEffect(()=>{var h,E;const c=S.current;if(r){j.current=!0,c&&(c.inert=!0),(h=w.current)==null||h.focus();return}j.current&&(c&&(c.inert=!1),(E=p.current)==null||E.focus(),j.current=!1)},[r]),t.jsxs("div",{className:x("relative flex h-full min-h-0 w-full min-w-0",i),children:[t.jsx(I,{className:"hidden md:flex"}),D?t.jsx("aside",{role:"dialog","aria-label":"Agent Config",className:"absolute inset-y-0 left-0 z-20 w-full max-w-sm border-r border-border shadow-xl md:static md:z-auto md:w-88 md:max-w-none md:shrink-0 md:shadow-none",children:t.jsx(W,{showClose:u})}):null,t.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col bg-primary-bg",children:[t.jsx(V,{className:x("bg-topbar-bg",(g||C||!T)&&"md:hidden"),start:g?null:t.jsx("button",{ref:p,type:"button","aria-label":"Navigation","aria-expanded":r,className:x(N({variant:"ghost",size:"icon"}),"md:hidden"),onClick:()=>l(!0),children:t.jsx(y,{name:"bars"})}),title:g?null:t.jsx(G,{}),end:g?null:t.jsxs(t.Fragment,{children:[t.jsx(m,{}),t.jsx(s,{})]})}),t.jsx("div",{ref:S,className:"min-h-0 min-w-0 flex-1",children:A?t.jsx(n.Suspense,{fallback:t.jsxs("div",{className:"flex h-full items-center justify-center",role:"status","aria-live":"polite","aria-busy":"true",children:[t.jsx(L,{size:28,className:"text-text-primary"}),t.jsx("span",{className:"sr-only",children:"Loading"})]}),children:t.jsx(U,{})}):O?t.jsx(d,{}):v&&(e==null?void 0:e.libraryAgentId)!=null?t.jsx(f,{agentId:e.libraryAgentId},e.libraryAgentId):v?t.jsx(b,{onSelectAgent:()=>l(!1)}):B?t.jsx(n.Suspense,{fallback:t.jsxs("div",{className:"flex h-full items-center justify-center",role:"status","aria-live":"polite","aria-busy":"true",children:[t.jsx(L,{size:28,className:"text-text-primary"}),t.jsx("span",{className:"sr-only",children:"Loading"})]}),children:t.jsx(X,{})}):C?t.jsx(o,{}):t.jsx(J,{})})]}),r?t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button","aria-label":"Close navigation",className:"absolute inset-0 z-[9] cursor-pointer bg-[var(--overlay)] md:hidden",onClick:()=>l(!1)}),t.jsx(I,{railRef:w,role:"dialog","aria-label":"Navigation",tabIndex:-1,onNavigate:()=>l(!1),className:"absolute inset-y-0 left-0 z-10 shadow-lg outline-none md:hidden"})]}):null]})}export{se as SidebarLayout};