openpond 0.2.67 → 0.2.69

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 (573) hide show
  1. package/dist/app-server.d.ts +668 -1
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/account-context-V3KLSNKS.js +12 -0
  4. package/dist/chunks/{acp-NASAJV5E.js → acp-ER6CUXG2.js} +1 -1
  5. package/dist/chunks/{acp-agent-C3CRF6DT.js → acp-agent-AYJ5RPVF.js} +1 -1
  6. package/dist/chunks/actions-command-BBUS3HDK.js +2 -0
  7. package/dist/chunks/{app-layer-XIEZ6ALX.js → app-layer-JCEWGUDH.js} +1 -1
  8. package/dist/chunks/{app-server-connected-apps-IB6M35NS.js → app-server-connected-apps-ILXBFD3S.js} +1 -1
  9. package/dist/chunks/app-server-evaluations-RRLYWLPK.js +2 -0
  10. package/dist/chunks/app-server-harness-services-XXM336NU.js +2 -0
  11. package/dist/chunks/app-server-runtime-43MCH5SY.js +2 -0
  12. package/dist/chunks/apps-VNFGMQFG.js +2 -0
  13. package/dist/chunks/{chunk-W3ZILZUL.js → chunk-22RLEU3Q.js} +1 -1
  14. package/dist/chunks/chunk-2PXKSAG6.js +2 -0
  15. package/dist/chunks/{chunk-XEU4J4GJ.js → chunk-2TGHZXJE.js} +2 -2
  16. package/dist/chunks/{chunk-AXO6OHJB.js → chunk-3A2Y7UK3.js} +1 -1
  17. package/dist/chunks/chunk-3Z4VM2LF.js +4 -0
  18. package/dist/chunks/{chunk-V3T2OJBZ.js → chunk-4BUM6JEC.js} +2 -2
  19. package/dist/chunks/chunk-4G3GTEVS.js +23 -0
  20. package/dist/chunks/{chunk-43QYVOYA.js → chunk-4KNPCJR4.js} +1 -1
  21. package/dist/chunks/chunk-4KTGYHCE.js +2 -0
  22. package/dist/chunks/chunk-4PUOWSDE.js +13 -0
  23. package/dist/chunks/chunk-55YD4UTW.js +2 -0
  24. package/dist/chunks/chunk-5G7BQAUA.js +2 -0
  25. package/dist/chunks/chunk-65FJWWXG.js +2 -0
  26. package/dist/chunks/{chunk-4EZI4KCT.js → chunk-65WRWLUD.js} +1 -1
  27. package/dist/chunks/chunk-6D3FI2XT.js +2 -0
  28. package/dist/chunks/chunk-7EQLW2KM.js +12 -0
  29. package/dist/chunks/{chunk-5TPYBXWM.js → chunk-7NCM6GBN.js} +1 -1
  30. package/dist/chunks/chunk-7OFD6TFD.js +2 -0
  31. package/dist/chunks/chunk-7OKZCJHS.js +3 -0
  32. package/dist/chunks/{chunk-ADOCQA4D.js → chunk-7PKDJHT6.js} +1 -1
  33. package/dist/chunks/chunk-7RJOCGQ6.js +2 -0
  34. package/dist/chunks/{chunk-YR5URT73.js → chunk-7RSQOC5M.js} +3 -3
  35. package/dist/chunks/{chunk-FVK4W27G.js → chunk-AFH462DO.js} +1 -1
  36. package/dist/chunks/{chunk-GUG2SWRZ.js → chunk-AFKFN25T.js} +1 -1
  37. package/dist/chunks/chunk-AFYYIJ6K.js +2 -0
  38. package/dist/chunks/{chunk-U3MVH2YT.js → chunk-APKXXAUF.js} +1 -1
  39. package/dist/chunks/chunk-AQUZCWM3.js +2 -0
  40. package/dist/chunks/chunk-AUO5DCEU.js +2 -0
  41. package/dist/chunks/chunk-AYOMVI7J.js +2 -0
  42. package/dist/chunks/{chunk-RWRKUO5D.js → chunk-B66QCXH2.js} +1 -1
  43. package/dist/chunks/chunk-BDZDWHBJ.js +6 -0
  44. package/dist/chunks/chunk-BU6MW65V.js +10 -0
  45. package/dist/chunks/{chunk-P6NQYXN6.js → chunk-CCZ276IA.js} +1 -1
  46. package/dist/chunks/{chunk-YONDU5TN.js → chunk-CIZI6Z7D.js} +1 -1
  47. package/dist/chunks/{chunk-ATFV2NA4.js → chunk-CO23RRN7.js} +1 -1
  48. package/dist/chunks/{chunk-QAFXQHHG.js → chunk-D6L6UNUQ.js} +2 -2
  49. package/dist/chunks/chunk-DDOIPTOM.js +2 -0
  50. package/dist/chunks/{chunk-CSU7RDA5.js → chunk-DKOVZ6R2.js} +3 -3
  51. package/dist/chunks/chunk-DRLP7GIU.js +2 -0
  52. package/dist/chunks/{chunk-XDFXKRTI.js → chunk-DWF3FCY4.js} +1 -1
  53. package/dist/chunks/chunk-DXJC3QW7.js +2 -0
  54. package/dist/chunks/{chunk-IDILAYCW.js → chunk-E2JB5OCO.js} +1 -1
  55. package/dist/chunks/{chunk-GI7LTJV3.js → chunk-EDYCSW22.js} +1 -1
  56. package/dist/chunks/{chunk-4JYTFEND.js → chunk-EFP75UEX.js} +1 -1
  57. package/dist/chunks/{chunk-CX7HKSQ4.js → chunk-EGP6DF34.js} +2 -2
  58. package/dist/chunks/{chunk-D5OFN47Z.js → chunk-ESYPMD7Q.js} +1 -1
  59. package/dist/chunks/{chunk-36FNNR5N.js → chunk-EWDDDHJN.js} +1 -1
  60. package/dist/chunks/{chunk-PWKJ5KLZ.js → chunk-EXYSD45J.js} +1 -1
  61. package/dist/chunks/{chunk-R6VI7MX5.js → chunk-EYTTZ5H4.js} +1 -1
  62. package/dist/chunks/{chunk-WD6ANOLL.js → chunk-FNGZ4UDZ.js} +1 -1
  63. package/dist/chunks/{chunk-YKTJPCYZ.js → chunk-G4FRBT7G.js} +4 -4
  64. package/dist/chunks/{chunk-JFZ6USNQ.js → chunk-G7X73SBG.js} +1 -1
  65. package/dist/chunks/{chunk-ULJZ7NUF.js → chunk-GY7YSD6J.js} +1 -1
  66. package/dist/chunks/{chunk-CWAQOFLP.js → chunk-GYYJ47GX.js} +1 -1
  67. package/dist/chunks/chunk-HG2YFMVU.js +4 -0
  68. package/dist/chunks/{chunk-YQBL5P6R.js → chunk-HKVFU3B3.js} +1 -1
  69. package/dist/chunks/{chunk-VEXJV5H5.js → chunk-IIT66347.js} +4 -4
  70. package/dist/chunks/{chunk-B2K5WQZE.js → chunk-IO5DZUKL.js} +1 -1
  71. package/dist/chunks/chunk-J256AEEE.js +2 -0
  72. package/dist/chunks/{chunk-CRDKBFRN.js → chunk-JEMECEQH.js} +1 -1
  73. package/dist/chunks/{chunk-YMCF5GR2.js → chunk-JQOVC35K.js} +1 -1
  74. package/dist/chunks/{chunk-6LFTQBXP.js → chunk-JT5YQ52I.js} +1 -1
  75. package/dist/chunks/chunk-JVMSN7LH.js +2 -0
  76. package/dist/chunks/{chunk-HORMGT2Q.js → chunk-JXYJQT5Q.js} +1 -1
  77. package/dist/chunks/{chunk-WDKZMXIU.js → chunk-K7KBFM2T.js} +1 -1
  78. package/dist/chunks/{chunk-UBTP3QWI.js → chunk-KCLMA2IH.js} +1 -1
  79. package/dist/chunks/chunk-KDER7R45.js +2 -0
  80. package/dist/chunks/{chunk-R6MMWEH4.js → chunk-KP2MYTP5.js} +1 -1
  81. package/dist/chunks/{chunk-TV2LE2BD.js → chunk-KU4TPDPH.js} +2 -2
  82. package/dist/chunks/{chunk-WJSJXK2N.js → chunk-KUE46HTH.js} +1 -1
  83. package/dist/chunks/chunk-LSKMALD6.js +161 -0
  84. package/dist/chunks/chunk-LVXL7T5O.js +2 -0
  85. package/dist/chunks/{chunk-TSQ2I6XV.js → chunk-M4A7G4S5.js} +2 -2
  86. package/dist/chunks/{chunk-MX7KV5DA.js → chunk-M4ZHFDRJ.js} +1 -1
  87. package/dist/chunks/chunk-M5X7XKXY.js +12 -0
  88. package/dist/chunks/{chunk-XT5WUQGT.js → chunk-MIFVX5PK.js} +1 -1
  89. package/dist/chunks/{chunk-4VZJQRQI.js → chunk-MOXIGLN2.js} +1 -1
  90. package/dist/chunks/{chunk-UKSSFB4Q.js → chunk-N5EAVX4G.js} +1 -1
  91. package/dist/chunks/{chunk-4B7EGNYX.js → chunk-NMMHXYDJ.js} +1 -1
  92. package/dist/chunks/{chunk-EBOTNBUS.js → chunk-NRYC4NH6.js} +1 -1
  93. package/dist/chunks/chunk-NSSZ2ZIU.js +2 -0
  94. package/dist/chunks/chunk-NW6WGGSL.js +2 -0
  95. package/dist/chunks/{chunk-7P5SH3CI.js → chunk-NZDLL6JN.js} +1 -1
  96. package/dist/chunks/{chunk-4TTXNVCE.js → chunk-OFJPOTES.js} +1 -1
  97. package/dist/chunks/chunk-OUJ63LMU.js +2 -0
  98. package/dist/chunks/{chunk-SD2XDZQW.js → chunk-P4QM63L3.js} +1 -1
  99. package/dist/chunks/chunk-PACLKDTN.js +2 -0
  100. package/dist/chunks/{chunk-VPAEFG7X.js → chunk-PAYFJHPO.js} +1 -1
  101. package/dist/chunks/{chunk-OPTJYDZN.js → chunk-PHZZBXDO.js} +1 -1
  102. package/dist/chunks/{chunk-HPTEJBP4.js → chunk-PKJHN666.js} +1 -1
  103. package/dist/chunks/{chunk-HNDAGZCF.js → chunk-PLROXHG2.js} +1 -1
  104. package/dist/chunks/{chunk-UNE52L3Y.js → chunk-PNPV2LDE.js} +1 -1
  105. package/dist/chunks/{chunk-2RSGVLZT.js → chunk-PSY6IRJE.js} +8 -8
  106. package/dist/chunks/{chunk-SVNEPXU3.js → chunk-Q73RKX7I.js} +1 -1
  107. package/dist/chunks/{chunk-IF5A3XWP.js → chunk-Q7FBVLLB.js} +1 -1
  108. package/dist/chunks/{chunk-V5AOM5MZ.js → chunk-Q7P34B2O.js} +1 -1
  109. package/dist/chunks/{chunk-375PADDM.js → chunk-QLGP2OAQ.js} +1 -1
  110. package/dist/chunks/{chunk-QQLS5FB7.js → chunk-QUNQM2E3.js} +1 -1
  111. package/dist/chunks/chunk-R2FYCJL6.js +2 -0
  112. package/dist/chunks/{chunk-6HQUIKC5.js → chunk-R4EEGWXB.js} +1 -1
  113. package/dist/chunks/chunk-R6I623SZ.js +11 -0
  114. package/dist/chunks/chunk-RCQYEHHD.js +2 -0
  115. package/dist/chunks/{chunk-26ID6A5C.js → chunk-RCRZXHAI.js} +1 -1
  116. package/dist/chunks/{chunk-TGULVWPV.js → chunk-RFQD6B44.js} +1 -1
  117. package/dist/chunks/{chunk-3WJQ4IGK.js → chunk-RPM4FDRX.js} +1 -1
  118. package/dist/chunks/{chunk-MCBRB5D6.js → chunk-RY46UPBO.js} +4 -4
  119. package/dist/chunks/{chunk-K3LS5SK7.js → chunk-SDHG6CKU.js} +1 -1
  120. package/dist/chunks/{chunk-XKZ4PFMQ.js → chunk-SO4GMSNP.js} +1 -1
  121. package/dist/chunks/{chunk-O6ZYDHEJ.js → chunk-SSHE6B7Z.js} +1 -1
  122. package/dist/chunks/{chunk-SH7POUVX.js → chunk-SV7ZBEK2.js} +6 -6
  123. package/dist/chunks/{chunk-SODAOLAP.js → chunk-TB5P3FWM.js} +1 -1
  124. package/dist/chunks/{chunk-BJXPQIVD.js → chunk-U7D6Q744.js} +1 -1
  125. package/dist/chunks/chunk-U7X5ZLAL.js +2 -0
  126. package/dist/chunks/{chunk-N54CPLVD.js → chunk-UANH7U3Y.js} +1 -1
  127. package/dist/chunks/{chunk-BUZ7CBJC.js → chunk-UGFSAG4U.js} +1 -1
  128. package/dist/chunks/chunk-ULTV6INR.js +2 -0
  129. package/dist/chunks/{chunk-V3ILZQER.js → chunk-UMAVVMXL.js} +7 -7
  130. package/dist/chunks/chunk-V24VHT76.js +2 -0
  131. package/dist/chunks/chunk-VEBW7NKD.js +2 -0
  132. package/dist/chunks/chunk-VJR2GNRY.js +2 -0
  133. package/dist/chunks/{chunk-JD76ANPN.js → chunk-VJYOKU3C.js} +1 -1
  134. package/dist/chunks/{chunk-H2XG5N7D.js → chunk-VWWKWYSQ.js} +1 -1
  135. package/dist/chunks/chunk-WCNPGKST.js +2 -0
  136. package/dist/chunks/chunk-WD4KAKEX.js +2 -0
  137. package/dist/chunks/chunk-WGQ3FMRF.js +2 -0
  138. package/dist/chunks/{chunk-6C3CXME7.js → chunk-WNXUSELC.js} +1 -1
  139. package/dist/chunks/{chunk-RS526BG7.js → chunk-WZ35ICTE.js} +3 -3
  140. package/dist/chunks/chunk-XHACK2KR.js +2 -0
  141. package/dist/chunks/chunk-XOPHFUUY.js +2 -0
  142. package/dist/chunks/{chunk-ZVMQLIRA.js → chunk-XT4CSKHM.js} +1 -1
  143. package/dist/chunks/{chunk-KQD36SBJ.js → chunk-XY7HFXLH.js} +1 -1
  144. package/dist/chunks/{chunk-UXO33ST5.js → chunk-XYZV3FKD.js} +1 -1
  145. package/dist/chunks/{chunk-GC6RJBRZ.js → chunk-Y2WNZWT2.js} +1 -1
  146. package/dist/chunks/chunk-Y4I6CFZJ.js +2 -0
  147. package/dist/chunks/chunk-YDZBX4XQ.js +2 -0
  148. package/dist/chunks/chunk-YI6ME6PU.js +22 -0
  149. package/dist/chunks/{chunk-H42UW6IF.js → chunk-YXMYK5P7.js} +1 -1
  150. package/dist/chunks/{chunk-QFL2VQKX.js → chunk-Z33RVGP6.js} +1 -1
  151. package/dist/chunks/chunk-Z5CQXPIS.js +6 -0
  152. package/dist/chunks/{chunk-OY4B7Y3T.js → chunk-ZDEIVUUI.js} +1 -1
  153. package/dist/chunks/{chunk-XGJG2ZKE.js → chunk-ZIQJDTQB.js} +1 -1
  154. package/dist/chunks/{chunk-IR2Y2VQY.js → chunk-ZYLLPRPU.js} +1 -1
  155. package/dist/chunks/cli-R7TAP6Z2.js +2 -0
  156. package/dist/chunks/{command-NWOZXU57.js → command-LNOVZQSK.js} +3 -3
  157. package/dist/chunks/{configuration-command-ZEIBQKB3.js → configuration-command-C3QBDFND.js} +1 -1
  158. package/dist/chunks/connected-app-executor-LAEAQUJS.js +2 -0
  159. package/dist/chunks/connected-evidence-VKY6O2JW.js +2 -0
  160. package/dist/chunks/{connected-starting-assets-66Y46ZPM.js → connected-starting-assets-5LAJ7CZY.js} +1 -1
  161. package/dist/chunks/{connection-GDWPMHPC.js → connection-VMBXW5PD.js} +1 -1
  162. package/dist/chunks/{continual-TNPTWTKK.js → continual-FVOLGGOE.js} +1 -1
  163. package/dist/chunks/core-commands-5TNBVR72.js +2 -0
  164. package/dist/chunks/dataset-preparation-authoring-UUYFWWCT.js +4 -0
  165. package/dist/chunks/datasets-BIDZJYDC.js +2 -0
  166. package/dist/chunks/desktop-test-BY2MS3UL.js +3 -0
  167. package/dist/chunks/dist-2MKJC6HN.js +2 -0
  168. package/dist/chunks/{dist-GR56E3QK.js → dist-DKE7RJZN.js} +1 -1
  169. package/dist/chunks/evaluation-coordination-FXB4DXZA.js +2 -0
  170. package/dist/chunks/experiment-improvements-JPDLKZXD.js +2 -0
  171. package/dist/chunks/experiments-IEN7RXLX.js +2 -0
  172. package/dist/chunks/experiments-signal-L32D36NH.js +2 -0
  173. package/dist/chunks/{extension-UH34ZF7N.js → extension-3EKIT6BB.js} +1 -1
  174. package/dist/chunks/{help-O53DTZGN.js → help-PLQJOP4P.js} +1 -1
  175. package/dist/chunks/host-profile-evaluation-tools-UF4ATIUF.js +2 -0
  176. package/dist/chunks/host-profile-external-dataset-KSEPXY2S.js +2 -0
  177. package/dist/chunks/hosted-app-server-composition-GZES7QXJ.js +2 -0
  178. package/dist/chunks/hosted-experiment-improvement-VG2WE7XZ.js +3 -0
  179. package/dist/chunks/hosted-harness-runtime-MMTLCL23.js +2 -0
  180. package/dist/chunks/hosted-profile-candidate-PTGQLPZO.js +3 -0
  181. package/dist/chunks/hosted-profile-compiler-FS5R6CHJ.js +2 -0
  182. package/dist/chunks/hosted-profile-evaluation-control-UUEZEMXU.js +2 -0
  183. package/dist/chunks/hosted-profile-evaluation-inspection-4F7OEF4T.js +3 -0
  184. package/dist/chunks/hosted-profile-evaluation-preparation-LIJJZDHQ.js +3 -0
  185. package/dist/chunks/hosted-tasksets-V24IBVJX.js +2 -0
  186. package/dist/chunks/human-review-6V6EMNVN.js +2 -0
  187. package/dist/chunks/{import-OBAKUJPM.js → import-SI24Z7EF.js} +2 -2
  188. package/dist/chunks/{learning-CRR6NRPN.js → learning-LAXMGWSQ.js} +1 -1
  189. package/dist/chunks/learning-Y3UKNUGE.js +2 -0
  190. package/dist/chunks/local-harness-improvement-runtime-3YJQRYXC.js +2 -0
  191. package/dist/chunks/local-harness-taskset-review-XQHQ6JCR.js +2 -0
  192. package/dist/chunks/{model-projects-HP4DELCP.js → model-projects-6YWVD2TS.js} +1 -1
  193. package/dist/chunks/opchat-SV67HVMX.js +3 -0
  194. package/dist/chunks/opchat-bounded-chat-KLMIYSZZ.js +2 -0
  195. package/dist/chunks/organizations-OZZFX7RG.js +2 -0
  196. package/dist/chunks/{profile-3WZJ65CT.js → profile-TD5U3INY.js} +1 -1
  197. package/dist/chunks/project-action-payload-TK6G4VMC.js +2 -0
  198. package/dist/chunks/project-agent-FFXPNXCO.js +2 -0
  199. package/dist/chunks/published-experiment-source-SDXUVPE7.js +2 -0
  200. package/dist/chunks/refiner-profile-service-56VYLZQJ.js +2 -0
  201. package/dist/chunks/{runtime-XP4DEGR3.js → runtime-Q7JUJO4D.js} +2 -2
  202. package/dist/chunks/sandbox-command-4BCUDAED.js +2 -0
  203. package/dist/chunks/{sandbox-template-YFMHEMUQ.js → sandbox-template-GOY7QQUY.js} +1 -1
  204. package/dist/chunks/saved-work-M6PUHKCC.js +2 -0
  205. package/dist/chunks/{send-turn-D3GTSSHI.js → send-turn-YLY3YNEQ.js} +1 -1
  206. package/dist/chunks/setup-RMZ2BHLM.js +2 -0
  207. package/dist/chunks/{src-GQPWOPYA.js → src-C3ZUESMK.js} +1 -1
  208. package/dist/chunks/src-MT4B43TD.js +424 -0
  209. package/dist/chunks/standalone-experiment-turn-owner-TW5MTWIO.js +2 -0
  210. package/dist/chunks/store-chat-resources-IRHBW2EC.js +2 -0
  211. package/dist/chunks/{store-continual-support-reviews-VVRQO2JK.js → store-continual-support-reviews-3KK42L4I.js} +1 -1
  212. package/dist/chunks/store-conversation-serving-IVURK52V.js +2 -0
  213. package/dist/chunks/{store-create-improve-2XI36AET.js → store-create-improve-UTCLBXF2.js} +1 -1
  214. package/dist/chunks/{store-datasets-UFY422NG.js → store-datasets-4AQOVAQY.js} +1 -1
  215. package/dist/chunks/store-evaluation-results-PK2P3IMH.js +7 -0
  216. package/dist/chunks/{store-harness-workspaces-SGUEYDO2.js → store-harness-workspaces-YEXB4IRV.js} +1 -1
  217. package/dist/chunks/store-human-review-O4BVHP25.js +7 -0
  218. package/dist/chunks/store-learned-preference-migration-validation-44SVX6YB.js +2 -0
  219. package/dist/chunks/{store-learning-BFOT4QVT.js → store-learning-SIUQIY5C.js} +1 -1
  220. package/dist/chunks/{store-learning-credentials-DYTMWQTC.js → store-learning-credentials-BUHR7SN6.js} +1 -1
  221. package/dist/chunks/store-local-experiments-BHVTKPPE.js +97 -0
  222. package/dist/chunks/store-model-batch-review-RVAYUVK2.js +2 -0
  223. package/dist/chunks/{store-model-configuration-NJFWSYSA.js → store-model-configuration-6L3OYXF4.js} +1 -1
  224. package/dist/chunks/store-model-project-preparation-AAEKCF6V.js +2 -0
  225. package/dist/chunks/store-modification-recordings-LCPK6K2T.js +9 -0
  226. package/dist/chunks/{store-preference-comparison-MZAYONCK.js → store-preference-comparison-5YVIQNVB.js} +1 -1
  227. package/dist/chunks/{store-sidebar-file-bookmarks-J3JEVAYR.js → store-sidebar-file-bookmarks-WLMYDA4E.js} +1 -1
  228. package/dist/chunks/{store-sidebar-preferences-2JHTFXJK.js → store-sidebar-preferences-AFMYIDWT.js} +1 -1
  229. package/dist/chunks/{store-subagents-PUBQVWSU.js → store-subagents-KFPVSTRO.js} +1 -1
  230. package/dist/chunks/{store-task-inbox-3BREANOX.js → store-task-inbox-L6IQTY26.js} +1 -1
  231. package/dist/chunks/{store-task-inventory-5HRZCDUT.js → store-task-inventory-QWS2C656.js} +1 -1
  232. package/dist/chunks/store-taskset-drafts-FRFL6ITK.js +9 -0
  233. package/dist/chunks/{store-training-S3FXWLT6.js → store-training-FYXZU2FE.js} +1 -1
  234. package/dist/chunks/{store-training-jobs-2LCXPA7G.js → store-training-jobs-3N3VKPIY.js} +1 -1
  235. package/dist/chunks/{store-training-models-7AMKS7ZW.js → store-training-models-VOFVGPZR.js} +1 -1
  236. package/dist/chunks/{taskset-PLKWRT4X.js → taskset-UDDLFYKV.js} +1 -1
  237. package/dist/chunks/taskset-catalog-RZYEBCRQ.js +2 -0
  238. package/dist/chunks/taskset-packages-T6B6HYKZ.js +2 -0
  239. package/dist/chunks/taskset-packages-WMG5DUBN.js +2 -0
  240. package/dist/chunks/{teams-bot-VQXUA7U4.js → teams-bot-YCUTDDDC.js} +1 -1
  241. package/dist/chunks/tool-learning-ZQ6NSJ5K.js +2 -0
  242. package/dist/chunks/training-5NT2YB2L.js +2 -0
  243. package/dist/chunks/training-5UMT45UL.js +2 -0
  244. package/dist/chunks/training-UY6KRG4M.js +2 -0
  245. package/dist/chunks/{training-error-LQKCOQDJ.js → training-error-WF463UNZ.js} +1 -1
  246. package/dist/chunks/{training-hardware-ESXRWUIK.js → training-hardware-UWQCRDMV.js} +1 -1
  247. package/dist/chunks/training-hosted-CKSDRVL6.js +2 -0
  248. package/dist/chunks/training-hosted-alphaedit-HSMRDJTD.js +2 -0
  249. package/dist/chunks/training-hosted-decision-7JALOU6O.js +2 -0
  250. package/dist/chunks/training-hosted-engram-SXO75MFG.js +2 -0
  251. package/dist/chunks/{training-hosted-learning-WQ2IP5FP.js → training-hosted-learning-E2N32YU5.js} +1 -1
  252. package/dist/chunks/training-hosted-modification-comparison-TXFDJFTG.js +2 -0
  253. package/dist/chunks/training-hosted-neuron-training-J42WK4EH.js +2 -0
  254. package/dist/chunks/training-hosted-serving-report-BAEABGJH.js +2 -0
  255. package/dist/chunks/training-hosted-steering-T556BUBG.js +2 -0
  256. package/dist/chunks/training-model-start-P3PXDWNT.js +2 -0
  257. package/dist/chunks/web-search-ZEKJHZW4.js +2 -0
  258. package/dist/chunks/{workspaces-MCS2AQX6.js → workspaces-EK62ANTB.js} +1 -1
  259. package/dist/cli.js +1 -1
  260. package/dist/index.js +1 -1
  261. package/dist/sandbox/runtime-handle.d.ts +3 -5
  262. package/dist/sandbox/sandbox-instance-client.d.ts +11 -5
  263. package/dist/sandbox/types/billing.d.ts +140 -6
  264. package/dist/sandbox/types/io.d.ts +3 -0
  265. package/dist/sandbox/types/responses.d.ts +11 -1
  266. package/dist/sandbox/types/snapshots.d.ts +52 -3
  267. package/dist/sandbox-template/manifest.js +1 -1
  268. package/dist/skills/manifest.json +3 -3
  269. package/dist/skills/openpond-cli/references/experiments-and-training.md +461 -1
  270. package/dist/web/assets/App-CCuh99JW.js +54 -0
  271. package/dist/web/assets/{AppDialog-BvskhHE9.js → AppDialog-CxjDHVk9.js} +1 -1
  272. package/dist/web/assets/AppTerminalPanel-CKJIVpKa.js +2 -0
  273. package/dist/web/assets/{AppToastContext-D2788RqX.js → AppToastContext-EpiT1dHs.js} +1 -1
  274. package/dist/web/assets/AppsView-BsMyPX_3.js +1 -0
  275. package/dist/web/assets/{AttachmentTypeIcon-DVluUHuc.js → AttachmentTypeIcon-BXvZy5gB.js} +1 -1
  276. package/dist/web/assets/BrowserSidebar-BIIV4aq4.js +1 -0
  277. package/dist/web/assets/{CartesianChart-DdBZ69lI.js → CartesianChart-brqLBqnF.js} +1 -1
  278. package/dist/web/assets/ChatTimelineEntry-CwZbn16X.js +8 -0
  279. package/dist/web/assets/{CollaborationTabs-ba6WupeJ.js → CollaborationTabs-BU4uc4tZ.js} +1 -1
  280. package/dist/web/assets/{CommandMenu-D7wTaEgl.js → CommandMenu-DkWpXR55.js} +1 -1
  281. package/dist/web/assets/CommunityView-CsSxJZGn.js +1 -0
  282. package/dist/web/assets/{ComposerAttachments-aO90qXYz.js → ComposerAttachments-BdJGCYzI.js} +1 -1
  283. package/dist/web/assets/{ComposerCreateImproveStrip-BPUJBSyS.js → ComposerCreateImproveStrip-CWy0j1vv.js} +1 -1
  284. package/dist/web/assets/{ConversationImportsSettings-Bo836wKJ.js → ConversationImportsSettings-DCmiakbZ.js} +1 -1
  285. package/dist/web/assets/DatasetReviewImport-DEnF_pGu.js +1 -0
  286. package/dist/web/assets/ExperimentTrainingDataWorkspace-WhwQ0QBi.js +2 -0
  287. package/dist/web/assets/{FilePagePreview-C6wIp6uX.js → FilePagePreview-BRhhz99q.js} +2 -2
  288. package/dist/web/assets/{GetStartedView-CxMv8q-h.js → GetStartedView-CLVD-qEi.js} +1 -1
  289. package/dist/web/assets/{GettingStartedDialog-CEb0cS-o.js → GettingStartedDialog-CMxaAMg-.js} +1 -1
  290. package/dist/web/assets/HostedModelLearningReview-Cn-j-rDo.js +1 -0
  291. package/dist/web/assets/HostedModelLearningSettings-VNBvf38S.js +1 -0
  292. package/dist/web/assets/{HtmlVisual-CCuUkYT8.js → HtmlVisual-D5y2WG9L.js} +10 -10
  293. package/dist/web/assets/LabModelVersionDetailPage-BxRmYD6h.js +1 -0
  294. package/dist/web/assets/{TrainingRunLineage-PXzWR65d.css → LabModelWorkspace-DOrgCk9Z.css} +1 -1
  295. package/dist/web/assets/LabModelWorkspace-u2Ulm_z4.js +1 -0
  296. package/dist/web/assets/{LabSkillSidebar-CFROlATQ.js → LabSkillSidebar-C7IceJTJ.js} +1 -1
  297. package/dist/web/assets/LabsRoute-C9Y0GU34.css +1 -0
  298. package/dist/web/assets/LabsRoute-CbztQaEf.js +74 -0
  299. package/dist/web/assets/LearningBatchesPage-B1NZTBSv.css +1 -0
  300. package/dist/web/assets/LearningBatchesPage-CJqgZNvM.js +26 -0
  301. package/dist/web/assets/MainChatThread-DNMfrrRq.js +2 -0
  302. package/dist/web/assets/{MainPane-BOWkynGB.css → MainPane-BZlNLfTM.css} +1 -1
  303. package/dist/web/assets/MainPane-CQQxSDPS.js +13 -0
  304. package/dist/web/assets/ModelProjectPageHeader-Dge19aE1.js +1 -0
  305. package/dist/web/assets/NativeSetupTerminal-D4JnbpyD.js +2 -0
  306. package/dist/web/assets/{NativeSkillSidebar-MAJWS4mL.js → NativeSkillSidebar-Jzx1BeKV.js} +1 -1
  307. package/dist/web/assets/{NewProjectDialog-MQiUBVx3.js → NewProjectDialog-DcnGzEd9.js} +1 -1
  308. package/dist/web/assets/{OutputsPage-DpF-aRTu.js → OutputsPage-Cmk15Vt_.js} +1 -1
  309. package/dist/web/assets/{PageChrome-8gH2hyDb.js → PageChrome-Cz_fCqtn.js} +1 -1
  310. package/dist/web/assets/{ProjectsPage-BQ98oGyu.js → ProjectsPage-BZ3Eo3Mz.js} +1 -1
  311. package/dist/web/assets/RightChatPanelStack-C6H2vU9N.js +1 -0
  312. package/dist/web/assets/RightSidebarHomePanel-BfMMVkM1.js +1 -0
  313. package/dist/web/assets/{ScheduledWorkPage-CGCqZz_H.js → ScheduledWorkPage-CAkSwM0T.js} +1 -1
  314. package/dist/web/assets/{SettingsView-CqpMFLxy.js → SettingsView-DvQXGw3_.js} +3 -3
  315. package/dist/web/assets/{TasksetDraftEditorPrimitives-DJvIvzBb.js → TasksetDraftEditorPrimitives-JuU1k8vr.js} +1 -1
  316. package/dist/web/assets/TeamChatView-DmHjr8W9.js +1 -0
  317. package/dist/web/assets/{TerminalOverlay-D--M876l.js → TerminalOverlay-DlaM9d8F.js} +1 -1
  318. package/dist/web/assets/{TrainingCreationPanel-DDUoHQHU.js → TrainingCreationPanel-ClpylNsr.js} +1 -1
  319. package/dist/web/assets/{TrainingDraftPanel-CwLXn3Z7.js → TrainingDraftPanel-6tH2xSDj.js} +1 -1
  320. package/dist/web/assets/{UsageSettingsSection-CGwPregx.js → UsageSettingsSection-CzDqxOYM.js} +2 -2
  321. package/dist/web/assets/WorkSidebarPanel-CY-AHZ4-.js +1 -0
  322. package/dist/web/assets/WorkspaceDiffPanel-B4e0lyF7.js +11 -0
  323. package/dist/web/assets/WorkspaceEnvironmentMenu-D01ZkZZF.js +35 -0
  324. package/dist/web/assets/{WorkspaceFileLocation-D-ctFM4d.js → WorkspaceFileLocation-C5s_njZb.js} +1 -1
  325. package/dist/web/assets/{WorkspaceGitDialogs-CQ28j3R7.js → WorkspaceGitDialogs-DjPZ6KIh.js} +1 -1
  326. package/dist/web/assets/{WorkspaceMonacoEditor-BrZs6-EW.js → WorkspaceMonacoEditor-CC4sfOiU.js} +3 -3
  327. package/dist/web/assets/{WorkspacePdfPreview-CU6PSjjN.js → WorkspacePdfPreview-vszQqFa4.js} +2 -2
  328. package/dist/web/assets/{WorkspacePresentationPreview-IjXVXpIy.js → WorkspacePresentationPreview-DQTvhaRD.js} +1 -1
  329. package/dist/web/assets/api-client-DJRVOFzS.js +1 -0
  330. package/dist/web/assets/{app-models-CKXrDTEU.js → app-models-BUdzQbXo.js} +1 -1
  331. package/dist/web/assets/bot-Doyx3T4j.js +1 -0
  332. package/dist/web/assets/{browser-sidebar-links-D9v2cyJa.js → browser-sidebar-links-PVPCrsDJ.js} +1 -1
  333. package/dist/web/assets/chat-resources-Beh5lB36.js +1 -0
  334. package/dist/web/assets/chevron-down-DX1hzujj.js +1 -0
  335. package/dist/web/assets/chevron-right-DHN0y3KC.js +1 -0
  336. package/dist/web/assets/chevron-up-_QrW88NF.js +1 -0
  337. package/dist/web/assets/{chunk-TLSP5JKG-BrrVo5rJ.js → chunk-3BYFS4RO-ztZjcMmt.js} +1 -1
  338. package/dist/web/assets/chunk-AG6UJ3DI-D9KZjTYP.js +1 -0
  339. package/dist/web/assets/chunk-C3TS766N-ppRhs95p.js +1 -0
  340. package/dist/web/assets/chunk-GCUWJUUM-Dy6oUNJ6.js +9 -0
  341. package/dist/web/assets/chunk-GS5HEE4M-C0RLeIsy.js +1 -0
  342. package/dist/web/assets/{chunk-H3JZ3P5T-CzpTARDY.js → chunk-H3JZ3P5T-DolwEJXo.js} +2 -2
  343. package/dist/web/assets/chunk-Q4RGCEOI-Cr-dg4Nk.js +1 -0
  344. package/dist/web/assets/client-DwZ92xtu.js +1 -0
  345. package/dist/web/assets/{client-choice-storage-DUWsS4X0.js → client-choice-storage-DitqKiIT.js} +1 -1
  346. package/dist/web/assets/cloud-upload-HdzNTgr2.js +1 -0
  347. package/dist/web/assets/common-BWVSBnpX.js +1 -0
  348. package/dist/web/assets/copy-DTQhoBNg.js +1 -0
  349. package/dist/web/assets/create-pipeline-DsZzNkt9.js +1 -0
  350. package/dist/web/assets/{cssMode-SclUkqPt.js → cssMode-BRTtfXxU.js} +1 -1
  351. package/dist/web/assets/dataset-workspaces-BTPi71mz.js +1 -0
  352. package/dist/web/assets/external-link-H1629UU6.js +1 -0
  353. package/dist/web/assets/folder-open-CAGdWOrr.js +1 -0
  354. package/dist/web/assets/folder-plus-C14cs2mE.js +1 -0
  355. package/dist/web/assets/git-commit-horizontal-DFUfuVvF.js +1 -0
  356. package/dist/web/assets/{htmlMode-X3mQtOeh.js → htmlMode-BVaCcL76.js} +1 -1
  357. package/dist/web/assets/icons-Bk2b68aC.js +1 -0
  358. package/dist/web/assets/image-0DPVY6Ev.js +1 -0
  359. package/dist/web/assets/{index-LXNhSUEL.js → index-B6XX_0h3.js} +2 -2
  360. package/dist/web/assets/info-C8b_tafZ.js +1 -0
  361. package/dist/web/assets/{intake-contracts-wCkD2ErR.js → intake-contracts-B8JZKYwb.js} +1 -1
  362. package/dist/web/assets/{jsonMode-BoKiIdHd.js → jsonMode-BCKKQmmV.js} +1 -1
  363. package/dist/web/assets/loader-circle-y-SSPwpk.js +1 -0
  364. package/dist/web/assets/{lspLanguageFeatures-CO2mzpy1.js → lspLanguageFeatures-DozmNUOx.js} +1 -1
  365. package/dist/web/assets/maximize-2-CByk9-zN.js +1 -0
  366. package/dist/web/assets/message-square-C889vRqm.js +1 -0
  367. package/dist/web/assets/{monaco.contribution-wacA5FjV.js → monaco.contribution-B9q6qbbo.js} +2 -2
  368. package/dist/web/assets/{monaco.contribution-CVe3mWSY.js → monaco.contribution-BITdsRbn.js} +2 -2
  369. package/dist/web/assets/{monaco.contribution-hrusiaZi.js → monaco.contribution-BqA-XZ44.js} +2 -2
  370. package/dist/web/assets/{monaco.contribution-C7CAQIKF.js → monaco.contribution-DxAV1oS5.js} +2 -2
  371. package/dist/web/assets/monitor-BtxlcLuI.js +1 -0
  372. package/dist/web/assets/paperclip-BeIdaspf.js +1 -0
  373. package/dist/web/assets/{pdf-Ct3M2mVw.js → pdf-perlzwEB.js} +1 -1
  374. package/dist/web/assets/play-CHXXdkuO.js +1 -0
  375. package/dist/web/assets/plus-DFFWjhPw.js +1 -0
  376. package/dist/web/assets/{ponder-desktop-D-zB6X4L.js → ponder-desktop-Ca-9KggQ.js} +1 -1
  377. package/dist/web/assets/presentation-0bzvu6_u.js +1 -0
  378. package/dist/web/assets/{profile-ref-CCxrOCio.js → profile-ref-D8lxL7dW.js} +1 -1
  379. package/dist/web/assets/{python-C0-pUUAU.js → python-B9hOnkOI.js} +1 -1
  380. package/dist/web/assets/refresh-cw-D61-Ozk3.js +1 -0
  381. package/dist/web/assets/{requests-DjSt-duM.js → requests-DmeUYik4.js} +1 -1
  382. package/dist/web/assets/reward-checks-DJJZYgf8.js +7 -0
  383. package/dist/web/assets/save-iEMNZoPe.js +1 -0
  384. package/dist/web/assets/schemas-Brv9Vmnk.js +64 -0
  385. package/dist/web/assets/settings-BC-bzgk6.js +21 -0
  386. package/dist/web/assets/settings-lists-C84qxFmP.js +5 -0
  387. package/dist/web/assets/square-BE_4JMR3.js +1 -0
  388. package/dist/web/assets/square-terminal-Djpzo2Qs.js +1 -0
  389. package/dist/web/assets/{submit-issue-command-Gk3RKrY-.js → submit-issue-command-HfKzyxg5.js} +1 -1
  390. package/dist/web/assets/{toggleHighContrast-BnYUBgZB.js → toggleHighContrast-ClsXu39R.js} +1 -1
  391. package/dist/web/assets/training-DWfghwfZ.js +1 -0
  392. package/dist/web/assets/{training-model-data-CxR3xpmK.js → training-model-data-CIysl8wH.js} +4 -4
  393. package/dist/web/assets/{tsMode-BVNyOY8h.js → tsMode-nbmaMc-D.js} +1 -1
  394. package/dist/web/assets/upload-C6ug8RD-.js +1 -0
  395. package/dist/web/assets/{useAccountSettings-4_XfwJQi.js → useAccountSettings-Dr9h4Qz_.js} +1 -1
  396. package/dist/web/assets/{useAgentInventory-CVuamyT3.js → useAgentInventory-ByCk2JAv.js} +1 -1
  397. package/dist/web/assets/useChatContextSelection-C0eMm2g6.js +1 -0
  398. package/dist/web/assets/{useLocalAgentSchedules-CmwN4ohy.js → useLocalAgentSchedules-Do0y_leJ.js} +1 -1
  399. package/dist/web/assets/useQuery-D2MQ7e5U.js +1 -0
  400. package/dist/web/assets/wifi-off-Dr-CapyW.js +1 -0
  401. package/dist/web/assets/work-outputs-D_8TovAK.js +1 -0
  402. package/dist/web/assets/{workers-CjtQ2aBD.js → workers-DKvM2NdM.js} +1 -1
  403. package/dist/web/assets/x-Jx2jlP9u.js +1 -0
  404. package/dist/web/assets/{yaml-N1KUjBZ8.js → yaml-C02vq4ar.js} +1 -1
  405. package/dist/web/index.html +1 -1
  406. package/docs/command-reference.md +104 -3
  407. package/package.json +1 -1
  408. package/dist/chunks/account-context-TIJOM22A.js +0 -12
  409. package/dist/chunks/actions-command-BYPLSGZL.js +0 -2
  410. package/dist/chunks/app-server-evaluations-5YZUFXQ2.js +0 -2
  411. package/dist/chunks/app-server-harness-services-N5F5QVZI.js +0 -2
  412. package/dist/chunks/app-server-runtime-HJ2N57DL.js +0 -2
  413. package/dist/chunks/apps-WJTW64NW.js +0 -2
  414. package/dist/chunks/chunk-263WS3TB.js +0 -2
  415. package/dist/chunks/chunk-27JGS3KB.js +0 -12
  416. package/dist/chunks/chunk-2UZHLO2V.js +0 -23
  417. package/dist/chunks/chunk-2W22IXHB.js +0 -2
  418. package/dist/chunks/chunk-46RMTR2Z.js +0 -2
  419. package/dist/chunks/chunk-4JJ4RYIB.js +0 -6
  420. package/dist/chunks/chunk-4NN5OLKW.js +0 -161
  421. package/dist/chunks/chunk-543QHE3D.js +0 -2
  422. package/dist/chunks/chunk-5QOFUGYQ.js +0 -2
  423. package/dist/chunks/chunk-5ZNE43XC.js +0 -10
  424. package/dist/chunks/chunk-6IS5OLI5.js +0 -2
  425. package/dist/chunks/chunk-7HAGSE7L.js +0 -2
  426. package/dist/chunks/chunk-AXYAEWWA.js +0 -2
  427. package/dist/chunks/chunk-B7XJBP4U.js +0 -2
  428. package/dist/chunks/chunk-BBIA24GD.js +0 -10
  429. package/dist/chunks/chunk-CJDGLPNX.js +0 -4
  430. package/dist/chunks/chunk-DAEUVT2I.js +0 -6
  431. package/dist/chunks/chunk-FCXDPVGJ.js +0 -3
  432. package/dist/chunks/chunk-FE2ENE3U.js +0 -2
  433. package/dist/chunks/chunk-H6EUFJJK.js +0 -2
  434. package/dist/chunks/chunk-IOSBGCRT.js +0 -2
  435. package/dist/chunks/chunk-IXZ5ZGIL.js +0 -12
  436. package/dist/chunks/chunk-K6DB5QWG.js +0 -2
  437. package/dist/chunks/chunk-LI56PPCN.js +0 -2
  438. package/dist/chunks/chunk-OE2OOWEQ.js +0 -2
  439. package/dist/chunks/chunk-OYIFH2OM.js +0 -2
  440. package/dist/chunks/chunk-QOUOU7FE.js +0 -22
  441. package/dist/chunks/chunk-R5GRESW3.js +0 -2
  442. package/dist/chunks/chunk-TERKCK4I.js +0 -2
  443. package/dist/chunks/chunk-TS5HNRZB.js +0 -2
  444. package/dist/chunks/chunk-V3KEG6MI.js +0 -2
  445. package/dist/chunks/chunk-WGISITX6.js +0 -4
  446. package/dist/chunks/chunk-XD4ZIQZ2.js +0 -2
  447. package/dist/chunks/chunk-XHU4BZQY.js +0 -13
  448. package/dist/chunks/chunk-ZWEY66RT.js +0 -2
  449. package/dist/chunks/cli-HV32F7HD.js +0 -2
  450. package/dist/chunks/connected-app-executor-DFHWNMRM.js +0 -2
  451. package/dist/chunks/connected-evidence-WOM6N5HO.js +0 -2
  452. package/dist/chunks/core-commands-GWRHH53F.js +0 -2
  453. package/dist/chunks/dataset-preparation-authoring-WJ2XEUO7.js +0 -4
  454. package/dist/chunks/datasets-XIMF54QN.js +0 -2
  455. package/dist/chunks/desktop-test-HF42V2EP.js +0 -3
  456. package/dist/chunks/dist-T6ES2TSM.js +0 -2
  457. package/dist/chunks/evaluation-coordination-WZT6FDMS.js +0 -2
  458. package/dist/chunks/experiment-improvements-H35VS6XZ.js +0 -2
  459. package/dist/chunks/experiments-F54C32EE.js +0 -2
  460. package/dist/chunks/experiments-signal-ONIGTGYR.js +0 -2
  461. package/dist/chunks/host-profile-evaluation-tools-LMCJ3MDJ.js +0 -2
  462. package/dist/chunks/host-profile-external-dataset-4HOXANWK.js +0 -2
  463. package/dist/chunks/hosted-app-server-composition-Y64A2A2B.js +0 -2
  464. package/dist/chunks/hosted-experiment-improvement-B2V2WIUI.js +0 -3
  465. package/dist/chunks/hosted-harness-runtime-C7I4KSDK.js +0 -2
  466. package/dist/chunks/hosted-profile-candidate-CXPVEEYQ.js +0 -3
  467. package/dist/chunks/hosted-profile-compiler-FGCI2VRW.js +0 -2
  468. package/dist/chunks/hosted-profile-evaluation-control-INNUYMBD.js +0 -2
  469. package/dist/chunks/hosted-profile-evaluation-inspection-UPTBRYMS.js +0 -3
  470. package/dist/chunks/hosted-profile-evaluation-preparation-TIQSVKLQ.js +0 -3
  471. package/dist/chunks/hosted-tasksets-7VMYOTIO.js +0 -2
  472. package/dist/chunks/human-review-7XC77NQP.js +0 -2
  473. package/dist/chunks/learning-3XDGIYUL.js +0 -2
  474. package/dist/chunks/local-harness-improvement-runtime-UIKQSAMM.js +0 -2
  475. package/dist/chunks/local-harness-taskset-review-6KJN3EQL.js +0 -2
  476. package/dist/chunks/opchat-NWYWWIA7.js +0 -3
  477. package/dist/chunks/opchat-bounded-chat-ICURZM6R.js +0 -2
  478. package/dist/chunks/organizations-7DBQGCCV.js +0 -2
  479. package/dist/chunks/project-action-payload-7DRABTHY.js +0 -2
  480. package/dist/chunks/project-agent-AXJOWXRU.js +0 -2
  481. package/dist/chunks/published-experiment-source-YBBPLNF2.js +0 -2
  482. package/dist/chunks/refiner-profile-service-ATEFPF5O.js +0 -2
  483. package/dist/chunks/sandbox-command-CF2PJCFX.js +0 -2
  484. package/dist/chunks/saved-work-3OAVRBH3.js +0 -2
  485. package/dist/chunks/setup-RHIMFI2Y.js +0 -2
  486. package/dist/chunks/src-V236S6MV.js +0 -424
  487. package/dist/chunks/standalone-experiment-turn-owner-CDRMGLWW.js +0 -2
  488. package/dist/chunks/store-chat-resources-P4EKCLSY.js +0 -2
  489. package/dist/chunks/store-conversation-serving-YFEZYQD3.js +0 -2
  490. package/dist/chunks/store-evaluation-results-VBH4R2U7.js +0 -7
  491. package/dist/chunks/store-human-review-RFCVZ3HP.js +0 -7
  492. package/dist/chunks/store-learned-preference-migration-validation-FNBGGZU6.js +0 -2
  493. package/dist/chunks/store-local-experiments-XPXGYXNM.js +0 -97
  494. package/dist/chunks/store-model-batch-review-J2L5JQV2.js +0 -2
  495. package/dist/chunks/store-model-project-preparation-OCLIFKI2.js +0 -2
  496. package/dist/chunks/store-taskset-drafts-BNKUVHPA.js +0 -9
  497. package/dist/chunks/taskset-packages-SXBLYHSP.js +0 -2
  498. package/dist/chunks/taskset-packages-V5T4V7YN.js +0 -2
  499. package/dist/chunks/tool-learning-47XQKELE.js +0 -2
  500. package/dist/chunks/training-7VQNCOGH.js +0 -2
  501. package/dist/chunks/training-VKLPNCMC.js +0 -2
  502. package/dist/chunks/training-hosted-NNE6BP6S.js +0 -2
  503. package/dist/chunks/training-hosted-serving-report-VZ4SMLMG.js +0 -2
  504. package/dist/chunks/training-model-start-G7YDZ7ZG.js +0 -2
  505. package/dist/chunks/web-search-56QRZGPR.js +0 -2
  506. package/dist/web/assets/App-DmEA-Lia.js +0 -53
  507. package/dist/web/assets/AppTerminalPanel-ScQKJV4z.js +0 -2
  508. package/dist/web/assets/AppsView-B1uNg9IQ.js +0 -1
  509. package/dist/web/assets/BrowserSidebar-DfVQoJHn.js +0 -1
  510. package/dist/web/assets/ChatTimelineEntry-Bbc6HRks.js +0 -8
  511. package/dist/web/assets/CommunityView-mO58f2B0.js +0 -1
  512. package/dist/web/assets/HostedModelLearningReview-BQIS7hkd.js +0 -1
  513. package/dist/web/assets/HostedModelLearningSettings-BQ-YeFMT.js +0 -1
  514. package/dist/web/assets/LabModelVersionDetailPage-BkHeVbAx.js +0 -1
  515. package/dist/web/assets/LabsRoute-CE45yAXJ.css +0 -1
  516. package/dist/web/assets/LabsRoute-YA9YckKj.js +0 -101
  517. package/dist/web/assets/MainChatThread-DpyPgGKW.js +0 -2
  518. package/dist/web/assets/MainPane-WOeodByM.js +0 -10
  519. package/dist/web/assets/NativeSetupTerminal-fmG2c65K.js +0 -2
  520. package/dist/web/assets/RightChatPanelStack-Bs7A4dLs.js +0 -1
  521. package/dist/web/assets/RightSidebarHomePanel-C-D4kba2.js +0 -1
  522. package/dist/web/assets/TeamChatView-DjmIaLO1.js +0 -1
  523. package/dist/web/assets/TrainingRunLineage-CtYe1KGX.js +0 -1
  524. package/dist/web/assets/WorkSidebarPanel-C6wWuo7U.js +0 -1
  525. package/dist/web/assets/WorkspaceDiffPanel-JDOUmrC-.js +0 -11
  526. package/dist/web/assets/WorkspaceEnvironmentMenu-sfL5LZeB.js +0 -35
  527. package/dist/web/assets/api-client-Dgz-fOMl.js +0 -1
  528. package/dist/web/assets/bot-Cd761lRF.js +0 -1
  529. package/dist/web/assets/chat-resources-BUDXdoG0.js +0 -1
  530. package/dist/web/assets/chevron-down-DEbd6Ek-.js +0 -1
  531. package/dist/web/assets/chevron-right-DLYNg_Oq.js +0 -1
  532. package/dist/web/assets/chevron-up-DFJJccDl.js +0 -1
  533. package/dist/web/assets/chunk-GHPCQXG5-DKDBSd8H.js +0 -9
  534. package/dist/web/assets/chunk-GJRXJL6G-luaxRTYI.js +0 -1
  535. package/dist/web/assets/chunk-JDQVAG3R-C0-rh1aR.js +0 -1
  536. package/dist/web/assets/chunk-XMVSQIK4-BBU7r_NH.js +0 -1
  537. package/dist/web/assets/client-BNjO4Xi8.js +0 -1
  538. package/dist/web/assets/cloud-upload-CoM1FGeB.js +0 -1
  539. package/dist/web/assets/common-CFsO2ppZ.js +0 -1
  540. package/dist/web/assets/copy-BGOhV6Pk.js +0 -1
  541. package/dist/web/assets/create-pipeline-DRR0Qeec.js +0 -1
  542. package/dist/web/assets/createLucideIcon-Bv-_eGcE.js +0 -1
  543. package/dist/web/assets/external-link-CVXsNeO3.js +0 -1
  544. package/dist/web/assets/folder-open-MnOmh19D.js +0 -1
  545. package/dist/web/assets/folder-plus-BRddLBtO.js +0 -1
  546. package/dist/web/assets/git-commit-horizontal-Bm4rkXug.js +0 -1
  547. package/dist/web/assets/icons-CZxmQtZs.js +0 -1
  548. package/dist/web/assets/image-BViGUAiq.js +0 -1
  549. package/dist/web/assets/info-DYPIbKKD.js +0 -1
  550. package/dist/web/assets/loader-circle-JFgFNsP5.js +0 -1
  551. package/dist/web/assets/maximize-2-DXZCQO0b.js +0 -1
  552. package/dist/web/assets/message-square-cOCAL8J1.js +0 -1
  553. package/dist/web/assets/models-route-CWcJuOd0.js +0 -1
  554. package/dist/web/assets/monitor-B35XSAvn.js +0 -1
  555. package/dist/web/assets/paperclip-CKgDxioG.js +0 -1
  556. package/dist/web/assets/play-DzqLr7fM.js +0 -1
  557. package/dist/web/assets/plus-Ddp1vXnw.js +0 -1
  558. package/dist/web/assets/presentation-B0S9v7ib.js +0 -1
  559. package/dist/web/assets/refresh-cw-D45mW-vs.js +0 -1
  560. package/dist/web/assets/reward-checks-D139zwha.js +0 -7
  561. package/dist/web/assets/save-Gu4R_82E.js +0 -1
  562. package/dist/web/assets/schemas-C9IwV7NS.js +0 -64
  563. package/dist/web/assets/settings-DdonLCIN.js +0 -21
  564. package/dist/web/assets/settings-lists-CFHFtO0D.js +0 -5
  565. package/dist/web/assets/square-Dqduqyyu.js +0 -1
  566. package/dist/web/assets/square-terminal-DS3zwi6X.js +0 -1
  567. package/dist/web/assets/training-QBuGBGJd.js +0 -2
  568. package/dist/web/assets/upload-ABSJxuUM.js +0 -1
  569. package/dist/web/assets/useQuery-CCjwL8VI.js +0 -1
  570. package/dist/web/assets/wifi-off-DGJH7Pke.js +0 -1
  571. package/dist/web/assets/work-outputs-CnbRtTLg.js +0 -1
  572. package/dist/web/assets/x-B-_zJVOZ.js +0 -1
  573. /package/dist/chunks/{chunk-SFR32TMJ.js → chunk-JXLDEYRW.js} +0 -0
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{a as t,d as n,f as r,g as i,h as a,i as o,m as s,o as c,r as l,u}from"./index-LXNhSUEL.js";import{a as d,n as f}from"./client-choice-storage-DUWsS4X0.js";import"./icons-CZxmQtZs.js";import{V as p}from"./training-model-data-CxR3xpmK.js";import{t as m}from"./play-DzqLr7fM.js";import{t as h}from"./x-B-_zJVOZ.js";import{t as g}from"./AppDialog-BvskhHE9.js";import{vn as _}from"./App-DmEA-Lia.js";var v=e(i(),1),ee=a(),y=s();function te({badge:e,onPlay:t,titleElement:n=`h3`,video:r}){let[i,a]=(0,v.useState)(!1),o=(0,v.useRef)(null),s=n,c=`${r.id}-title`;function l(){if(t){t();return}(0,ee.flushSync)(()=>a(!0));let e=o.current;e&&(e.load(),e.play().catch(()=>void 0))}return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`article`,{className:`get-started-course-card`,"aria-labelledby":c,children:[(0,y.jsx)(`button`,{"aria-haspopup":`dialog`,"aria-label":`Play ${r.title}`,className:`get-started-course-open`,onClick:l,type:`button`}),(0,y.jsxs)(`div`,{className:`get-started-course-media`,children:[(0,y.jsx)(`img`,{alt:``,className:`get-started-course-poster`,decoding:`async`,src:r.posterUrl}),(0,y.jsx)(`span`,{className:`get-started-course-play-icon`,"aria-hidden":`true`,children:(0,y.jsx)(m,{fill:`currentColor`,size:19})}),e?(0,y.jsx)(`span`,{className:`get-started-course-badge`,"aria-hidden":`true`,children:e}):null]}),(0,y.jsxs)(`div`,{className:`get-started-course-copy`,children:[(0,y.jsx)(s,{id:c,children:r.title}),(0,y.jsxs)(`div`,{className:`get-started-course-meta`,"aria-label":`${r.title} details`,children:[(0,y.jsx)(`span`,{children:r.eyebrow}),(0,y.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,y.jsx)(`span`,{children:r.duration})]}),r.description?(0,y.jsx)(`p`,{children:r.description}):null]})]}),i&&!t?(0,y.jsx)(b,{onClose:()=>a(!1),video:r,videoRef:o}):null]})}function b({autoAdvance:e=!1,contained:t=!1,inertExclusionSelector:n,navigation:r,onEnded:i,onClose:a,onPause:o,onTimeUpdate:s,video:c,videoRef:l}){return(0,y.jsxs)(g,{ariaLabel:`${c.title} player`,backdropClassName:`get-started-course-player-backdrop`,className:`get-started-course-player`,contained:t,inertExclusionSelector:n,onClose:a,children:[(0,y.jsxs)(`header`,{className:`get-started-course-player-header`,children:[(0,y.jsxs)(`div`,{className:`get-started-course-player-copy`,children:[(0,y.jsx)(`strong`,{children:c.title}),(0,y.jsxs)(`span`,{children:[r?`Lesson ${r.currentIndex+1} of ${r.total}`:c.eyebrow,` · `,c.duration]})]}),(0,y.jsxs)(`div`,{className:`get-started-course-player-actions`,children:[r?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`button`,{"aria-label":`Previous lesson`,disabled:!r.onPrevious,onClick:r.onPrevious,title:`Previous lesson`,type:`button`,children:(0,y.jsx)(_,{size:17})}),(0,y.jsx)(`button`,{"aria-label":`Next lesson`,disabled:!r.onNext,onClick:r.onNext,title:`Next lesson`,type:`button`,children:(0,y.jsx)(p,{size:17})})]}):null,(0,y.jsx)(`button`,{"aria-label":`Close video player`,"data-autofocus":!0,onClick:a,title:`Close`,type:`button`,children:(0,y.jsx)(h,{size:18})})]})]}),(0,y.jsx)(`div`,{className:`get-started-course-player-body`,children:(0,y.jsx)(`div`,{className:`get-started-course-player-media`,children:(0,y.jsx)(`div`,{className:`get-started-course-player-stage`,children:(0,y.jsx)(`video`,{"aria-label":`${c.title} video`,className:`get-started-course-player-video`,controls:!0,"data-auto-advance":e?`true`:void 0,onEnded:e=>i?.(e.currentTarget),onPause:e=>o?.(e.currentTarget),onTimeUpdate:e=>s?.(e.currentTarget),playsInline:!0,poster:c.posterUrl,preload:`metadata`,ref:l,src:c.videoUrl,children:c.captionsUrl?(0,y.jsx)(`track`,{kind:`captions`,label:`English`,src:c.captionsUrl,srcLang:`en`}):null},c.id)})})})]})}var x={schemaVersion:`openpond.publicVideoManifest.v1`,playlists:[{id:`post-training-from-first-principles`,fullVideoId:`post-training-full-course`,status:`draft`,title:`Post-training from first principles`,videoIds:[`post-training-01-how-post-training-works`,`post-training-02-definitions`,`post-training-03-on-policy-off-policy`,`post-training-04-rewards-credit-assignment`,`post-training-05-verifiable-rewards-rlvr`,`post-training-06-ppo-grpo`,`post-training-07-distillation`,`post-training-08-opsd-sdft-sdpo`,`post-training-09-credible-experiments`,`post-training-10-technical-appendix`]},{id:`how-to-make-an-agent`,status:`published`,title:`Agents`,playAllVideoId:`make-agent-tutorial`,videoIds:[`make-agent-tutorial-create`,`make-agent-tutorial-use`,`make-agent-tutorial-improve`]}],videos:[{id:`post-training-01-how-post-training-works`,localPath:`courses/post-training/01-how-post-training-works.mp4`,objectKey:`media/videos/aeb54dfb42eb940672df6e41bae075ffa5e45e1609e173a91e485c808b61fd4a.mp4`,sha256:`aeb54dfb42eb940672df6e41bae075ffa5e45e1609e173a91e485c808b61fd4a`,sizeBytes:2114638,durationSeconds:64.967},{id:`post-training-02-definitions`,localPath:`courses/post-training/02-definitions.mp4`,objectKey:`media/videos/c57d021989cdf058c683b9d017eb91bd23075e6bd00d0cc055e1285b3ea119fc.mp4`,sha256:`c57d021989cdf058c683b9d017eb91bd23075e6bd00d0cc055e1285b3ea119fc`,sizeBytes:11956956,durationSeconds:374.367},{id:`post-training-03-on-policy-off-policy`,localPath:`courses/post-training/03-on-policy-off-policy.mp4`,objectKey:`media/videos/a807bd7d704f8603addc875623a3cfcc938e60e0170d555d47569394a1c31762.mp4`,sha256:`a807bd7d704f8603addc875623a3cfcc938e60e0170d555d47569394a1c31762`,sizeBytes:2291518,durationSeconds:66.367},{id:`post-training-04-rewards-credit-assignment`,localPath:`courses/post-training/04-rewards-credit-assignment.mp4`,objectKey:`media/videos/685f7ecff7fcea262dd2cf60568079633816e9116efd80c069d0e20a4959a87f.mp4`,sha256:`685f7ecff7fcea262dd2cf60568079633816e9116efd80c069d0e20a4959a87f`,sizeBytes:5677418,durationSeconds:179.834},{id:`post-training-05-verifiable-rewards-rlvr`,localPath:`courses/post-training/05-verifiable-rewards-rlvr.mp4`,objectKey:`media/videos/0633584b2036843edd1ff9c63f0858db4272ddf55b10b160ec2ef6f7650c7d3a.mp4`,sha256:`0633584b2036843edd1ff9c63f0858db4272ddf55b10b160ec2ef6f7650c7d3a`,sizeBytes:5666892,durationSeconds:172.534},{id:`post-training-06-ppo-grpo`,localPath:`courses/post-training/06-ppo-grpo.mp4`,objectKey:`media/videos/66760fec7508c413844adb06c3f3920c5f7e3a874b18dc244ba090c55f452ff3.mp4`,sha256:`66760fec7508c413844adb06c3f3920c5f7e3a874b18dc244ba090c55f452ff3`,sizeBytes:5519257,durationSeconds:173.6},{id:`post-training-07-distillation`,localPath:`courses/post-training/07-distillation.mp4`,objectKey:`media/videos/3590f94325c1986f2025b42d182f04957e9eff6d5c06b1effc28dc369651c466.mp4`,sha256:`3590f94325c1986f2025b42d182f04957e9eff6d5c06b1effc28dc369651c466`,sizeBytes:4687640,durationSeconds:161.667},{id:`post-training-08-opsd-sdft-sdpo`,localPath:`courses/post-training/08-opsd-sdft-sdpo.mp4`,objectKey:`media/videos/3c45d8c1df0a24132ec425762dc6a4274b1e5cac6dfd220a2994f8754f431031.mp4`,sha256:`3c45d8c1df0a24132ec425762dc6a4274b1e5cac6dfd220a2994f8754f431031`,sizeBytes:5439835,durationSeconds:163.134},{id:`post-training-09-credible-experiments`,localPath:`courses/post-training/09-credible-experiments.mp4`,objectKey:`media/videos/fc701a8ba4b42de53bcaec3dcf191e6ec66f1dc0c48480f0aff01c3849aff023.mp4`,sha256:`fc701a8ba4b42de53bcaec3dcf191e6ec66f1dc0c48480f0aff01c3849aff023`,sizeBytes:6909405,durationSeconds:211.934},{id:`post-training-10-technical-appendix`,localPath:`courses/post-training/10-technical-appendix.mp4`,objectKey:`media/videos/17e6b5ef161fcdc97678e5b63650bffdb4b4b0d510ba75725a2af8a5db0d7e21.mp4`,sha256:`17e6b5ef161fcdc97678e5b63650bffdb4b4b0d510ba75725a2af8a5db0d7e21`,sizeBytes:5481950,durationSeconds:191.767},{id:`post-training-full-course`,localPath:`courses/post-training/full-course.mp4`,objectKey:`media/videos/d3df6a3b2ffe6c696b9dc0774ceaec19a2b8a92b170476cacb9df8dbdb2a526f.mp4`,sha256:`d3df6a3b2ffe6c696b9dc0774ceaec19a2b8a92b170476cacb9df8dbdb2a526f`,sizeBytes:55740426,durationSeconds:1760.192},{id:`openpond-agent-overview`,localPath:`tutorials/what-is-an-openpond-agent.mp4`,objectKey:`media/videos/421160f56d82abd6515df0d5ccf144591749e0ab1d58d630805c4807913812c7.mp4`,sha256:`421160f56d82abd6515df0d5ccf144591749e0ab1d58d630805c4807913812c7`,sizeBytes:5259848,durationSeconds:77.467},{id:`make-agent-tutorial`,localPath:`tutorials/how-to-make-an-agent.mp4`,objectKey:`media/videos/252d2f27076c904d85c9854c2f4c494fe9e92b3cea7d2c58ffbaa0323c17f255.mp4`,sha256:`252d2f27076c904d85c9854c2f4c494fe9e92b3cea7d2c58ffbaa0323c17f255`,sizeBytes:17339101,durationSeconds:273.067},{id:`make-agent-tutorial-create`,localPath:`tutorials/how-to-make-an-agent-create.mp4`,objectKey:`media/videos/322c999225d4759c34334eee22edee25a737fb06c5c6d66ee1f84485bb586c44.mp4`,sha256:`322c999225d4759c34334eee22edee25a737fb06c5c6d66ee1f84485bb586c44`,sizeBytes:6050301,durationSeconds:100.4},{id:`make-agent-tutorial-use`,localPath:`tutorials/how-to-make-an-agent-use.mp4`,objectKey:`media/videos/6e28bb710f90de8968fa18f996973b869e6748797739dd93cce49d8fbba564c1.mp4`,sha256:`6e28bb710f90de8968fa18f996973b869e6748797739dd93cce49d8fbba564c1`,sizeBytes:5084394,durationSeconds:75.1},{id:`make-agent-tutorial-improve`,localPath:`tutorials/how-to-make-an-agent-improve.mp4`,objectKey:`media/videos/fe8b62bf6ed5f5b933b0023dfdd9a06e69b5b352d4c702b671ec7677b395d58d.mp4`,sha256:`fe8b62bf6ed5f5b933b0023dfdd9a06e69b5b352d4c702b671ec7677b395d58d`,sizeBytes:6255324,durationSeconds:108.634}]},S=`https://media.openpond.ai`,C=x,ne=new Map(C.playlists.map(e=>[e.id,e])),re=new Map(C.videos.map(e=>[e.id,e]));function w(e){let t=ne.get(e);if(!t)throw Error(`Public video manifest is missing playlist ${e}`);return t}function ie(e,t){return t?`${S}/${e.objectKey}`:r(e.localPath)}function T(e){let t=re.get(e);if(!t)throw Error(`Public video manifest is missing ${e}`);return ie(t,!0)}var ae=T(`make-agent-tutorial`),E=T(`openpond-agent-overview`);function oe(e){return T(`make-agent-tutorial-${e}`)}var D={schemaVersion:`openpond.tutorialFrames.v2`,tutorial:{title:`How to make an agent`,subtitle:`Create, run, improve, and verify an Account Health Agent.`,outroTitle:`Agent shared from the hosted Profile`,outroSubtitle:`Available to teammates and hosted sandboxes. · Synthetic tutorial data · AI-generated narration`,narration:{model:`gpt-4o-mini-tts-2025-12-15`,voice:`cedar`,speed:1.12,responseFormat:`wav`,instructions:`Warm, clear product tutorial narration. Speak at a calm conversational pace with practical emphasis on user choices, evidence, approvals, and results. Pronounce OpenPond as open pond, P1 as P one, CSV as C S V, JSON as jay son, and Taskset as task set. Finish each sentence cleanly. Avoid hype, sales cadence, dramatic delivery, or imitation of any real person.`,leadInSeconds:.55,tailSeconds:.7,audioTitle:`AI-generated narration`,audioCredit:`OpenAI Speech · Cedar voice`}},chapters:[{id:`create`,label:`Create`,title:`Create an Agent`,subtitle:`Turn a plain-language purpose into a working Account Health Agent.`,outroTitle:`Account Health Agent created`,outroSubtitle:`The agent is ready to use. · AI-generated narration`,cardDuration:1.5},{id:`use`,label:`Use`,title:`Use the Agent`,subtitle:`Chat with the Account Health Agent and run its actions with approval.`,outroTitle:`First agent run complete`,outroSubtitle:`The result and supporting evidence are ready to review. · AI-generated narration`,cardDuration:1.5},{id:`improve`,label:`Improve`,title:`Improve the Agent`,subtitle:`Use real run evidence and Evals to make the Account Health Agent better.`,outroTitle:`Account Health Agent improved`,outroSubtitle:`The updated agent passed its Evals. · AI-generated narration`,cardDuration:1.5}],transitionDuration:.33,frames:[{id:`C01`,file:`C01-account-agent-lab-create-menu.png`,chapter:`create`,label:`Start in Profile`,caption:`Open Profile, choose Agent, and start the guided creation flow.`,placement:`bottom-left`,narration:`Open Profile, choose Agent, and start the guided creation flow.`,focus:{x:.84,y:.06,width:.145,height:.31,zoom:1.55}},{id:`C02`,file:`C02-source-choice-wide.png`,chapter:`create`,label:`Start from a prompt or chats`,caption:`Choose From prompt to describe the Agent directly, or From chats to include examples of the work it should handle.`,placement:`bottom-left`,narration:`Choose From prompt to describe the Agent directly, or From chats to include examples of the work it should handle.`,focus:{x:.31,y:.34,width:.38,height:.31,zoom:1.42}},{id:`C04`,file:`C04-from-chats-wide.png`,chapter:`create`,label:`Add purpose and chats`,caption:`This synthetic example starts with three chats: Acme has renewal blockers, Northstar is expanding, and the team needs a weekly account review. Add them with the Agent purpose.`,placement:`top-left`,narration:`This synthetic example starts with three chats: Acme has renewal blockers, Northstar is expanding, and the team needs a weekly account review. Add them with the Agent purpose.`,focus:{x:.31,y:.2,width:.38,height:.6,zoom:1.32}},{id:`C06`,file:`C06-disclosure.png`,chapter:`create`,label:`See how chats build the plan`,caption:`Review the selected excerpts as examples. OpenPond turns their recurring goals, decisions, corrections, and answer patterns into the first Agent plan.`,placement:`bottom-left`,narration:`Review the selected excerpts as examples. OpenPond turns their recurring goals, decisions, corrections, and answer patterns into the first Agent plan.`,focus:{x:.31,y:.2,width:.38,height:.6,zoom:1.32}},{id:`C07`,file:`C07-agent-review.png`,chapter:`create`,label:`Review the Agent`,caption:`The draft converts those examples into the Agent's purpose, chat behavior, runnable actions, output formats, and Evals for your review.`,placement:`bottom-left`,narration:`The draft converts those examples into the Agent's purpose, chat behavior, runnable actions, output formats, and Evals for your review.`,focus:{x:.31,y:.04,width:.38,height:.76,zoom:1.27}},{id:`C08`,file:`C08-right-chat-question.png`,chapter:`create`,label:`Answer the planning question`,caption:`The right side panel asks how the Agent should prioritize conflicting account risks.`,placement:`top-left`,narration:`The right side panel asks how the Agent should prioritize conflicting account risks.`,focus:{x:.715,y:.19,width:.265,height:.72,zoom:1.42}},{id:`C09`,file:`C09-right-chat-plan.png`,chapter:`create`,label:`Confirm the plan`,caption:`Before creation, review the proposed name, chat endpoint, runnable actions, Evals, and output formats.`,placement:`top-left`,narration:`Before creation, review the proposed name, chat endpoint, runnable actions, Evals, and output formats.`,focus:{x:.715,y:.18,width:.265,height:.72,zoom:1.42}},{id:`C09A`,file:`C09A-edit-plan.png`,chapter:`create`,label:`Edit the plan`,caption:`If the plan misses a requirement, open Edit plan and describe the change in plain language before any Agent source is created.`,placement:`top-left`,narration:`If the plan misses a requirement, open Edit plan and describe the change in plain language before any Agent source is created.`,focus:{x:.73,y:.66,width:.24,height:.24,zoom:1.45}},{id:`C09B`,file:`C09B-revised-plan.png`,chapter:`create`,label:`Create from the revised plan`,caption:`Review the revised plan, then click Confirm plan to create the Agent and run its Evals.`,placement:`top-left`,narration:`Review the revised plan, then click Confirm plan to create the Agent and run its Evals.`,focus:{x:.72,y:.7,width:.25,height:.2,zoom:1.45}},{id:`C10`,file:`C10-candidate-evaluation.png`,chapter:`create`,label:`Review the Evals`,caption:`This is the creation result: OpenPond built the Agent and passed its behavior Evals against the Account Health examples.`,placement:`bottom-left`,narration:`This is the creation result: OpenPond built the Agent and passed its behavior Evals against the Account Health examples.`,focus:{x:.19,y:.18,width:.5,height:.22,zoom:1.36}},{id:`C11`,file:`C11-local-source-applied.png`,chapter:`create`,label:`Save the Agent`,caption:`After the Evals pass, the Agent is saved to your Profile and is ready to use.`,placement:`bottom-left`,narration:`After the Evals pass, the Agent is saved to your Profile and is ready to use.`,focus:{x:.19,y:.16,width:.5,height:.14,zoom:1.38}},{id:`C12`,file:`C12-ready-local-detail.png`,chapter:`create`,label:`Use the Agent`,caption:`The Agent page shows its purpose, chat entrypoint, and runnable account actions.`,placement:`bottom-left`,narration:`The Agent page shows its purpose, chat entrypoint, and runnable account actions.`,focus:{x:.19,y:.17,width:.5,height:.13,zoom:1.38}},{id:`C13Q`,file:`C13Q-chat-acme-prompt.png`,chapter:`use`,label:`Ask the chat endpoint`,caption:`Use opens a normal chat with the Agent attached. Type a natural-language question about Acme before sending it.`,placement:`top-left`,narration:`Use opens a normal chat with the Agent attached. Type a natural-language question about Acme before sending it.`,focus:{x:.245,y:.84,width:.39,height:.14,zoom:1.48}},{id:`C13`,file:`C13-chat-acme.png`,chapter:`use`,label:`Ask about Acme`,caption:`Acme is the at-risk example: the Agent answers in chat with renewal timing, usage decline, the disputed invoice, and the open P1 case.`,placement:`top-left`,narration:`Acme is the at-risk example: the Agent answers in chat with renewal timing, usage decline, the disputed invoice, and the open P1 case.`,focus:{x:.2,y:.08,width:.48,height:.32,zoom:1.34}},{id:`C14`,file:`C14-chat-follow-up.png`,chapter:`use`,label:`Ask a follow-up`,caption:`A follow-up keeps Acme context and assigns the first actions to Revenue Operations and Support instead of restarting the conversation.`,placement:`top-left`,narration:`A follow-up keeps Acme context and assigns the first actions to Revenue Operations and Support instead of restarting the conversation.`,focus:{x:.2,y:.08,width:.48,height:.36,zoom:1.32}},{id:`C15`,file:`C15-action-picker.png`,chapter:`use`,label:`Choose a direct action`,caption:`The action picker offers chat plus each runnable account action, so you can choose conversation or a focused task.`,placement:`top-left`,narration:`The action picker offers chat plus each runnable account action, so you can choose conversation or a focused task.`,focus:{x:.245,y:.84,width:.39,height:.14,zoom:1.48}},{id:`C16`,file:`C16-northstar-summary.png`,chapter:`use`,label:`Summarize Northstar`,caption:`Northstar is the healthy expansion example from the source chats. Its direct summary identifies rising usage and the request for twenty-five more seats.`,placement:`top-left`,narration:`Northstar is the healthy expansion example from the source chats. Its direct summary identifies rising usage and the request for twenty-five more seats.`,focus:{x:.2,y:.37,width:.48,height:.2,zoom:1.38}},{id:`C17`,file:`C17-acme-triage.png`,chapter:`use`,label:`Triage Acme`,caption:`Running renewal triage for Acme returns high risk, cites the billing and support blockers, and orders the next steps.`,placement:`top-left`,narration:`Running renewal triage for Acme returns high risk, cites the billing and support blockers, and orders the next steps.`,focus:{x:.2,y:.57,width:.48,height:.15,zoom:1.4}},{id:`C18`,file:`C18-weekly-review-artifacts.png`,chapter:`use`,label:`Build the weekly review`,caption:`The weekly review action combines the portfolio and returns visible Markdown, CSV, and JSON artifacts for downstream use.`,placement:`top-left`,narration:`The weekly review action combines the portfolio and returns visible Markdown, CSV, and JSON artifacts for downstream use.`,focus:{x:.2,y:.68,width:.48,height:.19,zoom:1.36}},{id:`C19`,file:`C19-after-restart.png`,chapter:`use`,label:`Verify persistence`,caption:`After restarting OpenPond, the same Agent, chat history, and actions remain available.`,placement:`bottom-left`,narration:`After restarting OpenPond, the same Agent, chat history, and actions remain available.`,focus:{x:.19,y:.16,width:.5,height:.15,zoom:1.38}},{id:`I00`,file:`I00-current-priority-gap.png`,chapter:`improve`,label:`Identify the behavior gap`,caption:`The current Agent finds the right facts, but buries the priority after the account summary. Improve will make the billing and P1 decision lead every high-risk result.`,placement:`top-left`,narration:`The current Agent finds the right facts, but buries the priority after the account summary. Improve will make the billing and P1 decision lead every high-risk result.`,focus:{x:.38,y:.06,width:.42,height:.18,zoom:1.4}},{id:`I01`,file:`I01-improve-source-choice.png`,chapter:`improve`,label:`Start Improve`,caption:`Open Improve agent on the existing Agent, then choose whether to describe the correction directly or include a chat that demonstrates it.`,placement:`bottom-left`,narration:`Open Improve agent on the existing Agent, then choose whether to describe the correction directly or include a chat that demonstrates it.`,focus:{x:.31,y:.34,width:.38,height:.31,zoom:1.42}},{id:`I02`,file:`I02-improve-from-chats.png`,chapter:`improve`,label:`Add the correction chat`,caption:`Choose From chats, ask every high-risk response to lead with the billing and P1 decision, and attach the correction conversation that demonstrates it.`,placement:`top-left`,narration:`Choose From chats, ask every high-risk response to lead with the billing and P1 decision, and attach the correction conversation that demonstrates it.`,focus:{x:.31,y:.2,width:.38,height:.6,zoom:1.32}},{id:`I03`,file:`I03-improve-review.png`,chapter:`improve`,label:`Review the improvement`,caption:`Review the new lead-with-priority behavior, the existing capabilities that must stay intact, and the Evals OpenPond will rerun.`,placement:`bottom-left`,narration:`Review the new lead-with-priority behavior, the existing capabilities that must stay intact, and the Evals OpenPond will rerun.`,focus:{x:.31,y:.04,width:.38,height:.76,zoom:1.27}},{id:`I04`,file:`I04-improve-right-chat-plan.png`,chapter:`improve`,label:`Confirm the Improve plan`,caption:`Review the planned change and confirm that it preserves citations and every existing action.`,placement:`top-left`,narration:`Review the planned change and confirm that it preserves citations and every existing action.`,focus:{x:.715,y:.18,width:.265,height:.72,zoom:1.42}},{id:`I05`,file:`I05-improve-comparison.png`,chapter:`improve`,label:`Compare the results`,caption:`The same locked Evals make the decision clear: the current Agent misses the new lead sentence, while the updated Agent passes every original and new Eval.`,placement:`bottom-left`,narration:`The same locked Evals make the decision clear: the current Agent misses the new lead sentence, while the updated Agent passes every original and new Eval.`,focus:{x:.745,y:.8,width:.22,height:.13,zoom:1.5}},{id:`I06`,file:`I06-improved-release.png`,chapter:`improve`,label:`Save the improvement`,caption:`Apply the update only after that comparison. The existing Agent updates in place, with the successful Evals recorded.`,placement:`bottom-left`,narration:`Apply the update only after that comparison. The existing Agent updates in place, with the successful Evals recorded.`,focus:{x:.71,y:.16,width:.28,height:.22,zoom:1.45}},{id:`I07`,file:`I07-improved-chat.png`,chapter:`improve`,label:`Verify improved chat`,caption:`The improved chat now places disputed billing and the open P1 case ahead of adoption decline while preserving source citations.`,placement:`top-left`,narration:`The improved chat now places disputed billing and the open P1 case ahead of adoption decline while preserving source citations.`,focus:{x:.2,y:.08,width:.48,height:.16,zoom:1.4}},{id:`I08`,file:`I08-improved-triage.png`,chapter:`improve`,label:`Verify improved triage`,caption:`The direct triage action repeats the billing-first result, proving the change works outside chat without breaking the existing workflow.`,placement:`top-left`,narration:`The direct triage action repeats the billing-first result, proving the change works outside chat without breaking the existing workflow.`,focus:{x:.2,y:.27,width:.48,height:.16,zoom:1.4}},{id:`I09`,file:`I09-profile-commit-dialog.png`,chapter:`improve`,label:`Commit the Profile source`,caption:`Commit the final Agent source with a clear Git message so the exact Profile version remains reviewable and shareable.`,placement:`bottom-left`,narration:`Commit the final Agent source with a clear Git message so the exact Profile version remains reviewable and shareable.`,focus:{x:.37,y:.36,width:.26,height:.29,zoom:1.45}},{id:`I10`,file:`I10-profile-sync-dialog.png`,chapter:`improve`,label:`Review the hosted sync`,caption:`Open Sync to review the committed Profile changes. Confirm sync publishes this version so teammates can use the Agent in chat and hosted sandboxes can attach the same source.`,placement:`bottom-left`,narration:`Open Sync to review the committed Profile changes. Confirm sync publishes this version so teammates can use the Agent in chat and hosted sandboxes can attach the same source.`,focus:{x:.5,y:.61,width:.11,height:.07,zoom:1.55}}],frameMinimumDuration:5.2,focusStyle:{borderColor:`#22d3ee`,borderWidth:5,dimOpacity:.32,zoomDelaySeconds:.8,zoomDurationSeconds:1.2}},se=w(`how-to-make-an-agent`),O=D.chapters,ce={create:`1:24`,use:`1:05`,improve:`1:10`},k=se.title,le=D.tutorial.title,A=`4:33`,j={captionsUrl:l,chapterIds:O.map(e=>e.id),description:`Create, use, and improve an Account Health Agent in one continuous walkthrough.`,duration:A,eyebrow:`Play all`,id:`make-agent-tutorial`,lessonNumber:null,posterUrl:o,title:le,videoId:`play-all`,videoUrl:ae},M=O.map((e,t)=>({captionsUrl:u(e.id),chapterIds:[e.id],description:e.subtitle,duration:ce[e.id],eyebrow:`Lesson ${t+1}`,id:`make-agent-tutorial-${e.id}`,lessonNumber:t+1,posterUrl:n(e.id),title:e.title,videoId:e.id,videoUrl:oe(e.id)})),ue=[j,...M];function N(e){return ue.find(t=>t.videoId===e)??j}function de(e){let t=M.findIndex(t=>t.videoId===e);return t<0?null:M[t+1]?.videoId??null}var fe=[2,1,0];function pe({activeVideoId:e=`play-all`,autoplay:t=!0,onClose:n,onOpen:r,onSelectVideo:i,open:a=!1,playRequestId:o=0}={}){let s=(0,v.useRef)(null),c=N(e);(0,v.useEffect)(()=>{if(!a)return;let e=s.current;e&&(e.load(),o>0&&e.play().catch(()=>void 0))},[c.id,a,o]);function l(){if(!t||!i)return;let n=de(e);n&&i(n)}return(0,y.jsxs)(`section`,{className:`get-started-series`,"aria-label":k,children:[(0,y.jsxs)(`article`,{className:`get-started-playlist-card`,"aria-labelledby":`make-agent-series-title`,children:[(0,y.jsx)(`button`,{"aria-haspopup":`dialog`,"aria-label":`Open ${k} playlist`,className:`get-started-playlist-open`,onClick:r,type:`button`}),(0,y.jsxs)(`div`,{className:`get-started-playlist-stack`,"aria-hidden":`true`,children:[fe.map((e,t)=>{let n=M[e];return(0,y.jsx)(`div`,{className:`get-started-playlist-poster layer-${t+1}`,children:(0,y.jsx)(`img`,{alt:``,decoding:`async`,src:n.posterUrl})},n.id)}),(0,y.jsx)(`span`,{className:`get-started-course-play-icon`,children:(0,y.jsx)(m,{fill:`currentColor`,size:19})}),(0,y.jsxs)(`span`,{className:`get-started-playlist-count`,children:[M.length,` lessons`]})]}),(0,y.jsxs)(`div`,{className:`get-started-playlist-copy`,children:[(0,y.jsx)(`h1`,{id:`make-agent-series-title`,children:k}),(0,y.jsxs)(`div`,{className:`get-started-course-meta`,children:[(0,y.jsx)(`span`,{children:`Walkthrough playlist`}),(0,y.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,y.jsx)(`span`,{children:A})]}),(0,y.jsx)(`p`,{children:`Create, use, and improve an Account Health Agent, or play the full walkthrough.`})]})]}),a&&n&&i?(0,y.jsx)(me,{activeVideoId:e,autoplay:t,contained:!0,inertExclusionSelector:`.get-started-learning-panel`,onClose:n,onEnded:l,onSelectVideo:i,videoRef:s}):null]})}function me({activeVideoId:e=`play-all`,autoplay:t=!0,contained:n=!1,inertExclusionSelector:r,onClose:i,onEnded:a,onSelectVideo:o=()=>void 0,videoRef:s}){let c=N(e),l=M.findIndex(t=>t.videoId===e),u=l>=0?M[l+1]?.videoId:void 0,d=l>0?M[l-1]?.videoId:void 0;return(0,y.jsx)(b,{autoAdvance:t&&l>=0,contained:n,inertExclusionSelector:r,navigation:l>=0?{currentIndex:l,onNext:u?()=>o(u):void 0,onPrevious:d?()=>o(d):void 0,total:M.length}:void 0,onClose:i,onEnded:a?()=>a():void 0,video:c,videoRef:s})}var P=w(`post-training-from-first-principles`),F=P.title,he=P.status;function I(e,t,n,i,a,o){let s=`courses/post-training/${t}`,c=`post-training-${t}`;return{captionsUrl:r(`${s}.vtt`),description:o,duration:a,eyebrow:i,id:c,lessonNumber:e,posterUrl:r(`${s}-poster.webp`),slug:t,title:n,videoUrl:T(c)}}var L=[I(1,`01-how-post-training-works`,`How post-training works`,`Start here`,`1:05`,`The choose, judge, and update loop behind every method in this series.`),I(2,`02-definitions`,`Definitions`,`Reference`,`6:14`,`Policy notation, softmax, rollouts, advantages, gradients, GRPO, and the acronyms used throughout the series.`),I(3,`03-on-policy-off-policy`,`On-policy and off-policy data`,`Data source`,`1:06`,`Why learner rollouts and teacher or stored data support different updates.`),I(4,`04-rewards-credit-assignment`,`Rewards and credit assignment`,`RL foundation`,`3:00`,`Follow a code-repair trajectory from actions and observations to advantage.`),I(5,`05-verifiable-rewards-rlvr`,`Verifiable rewards`,`RLVR`,`2:53`,`See how tests create scalable rewards—and how a model can exploit the checker.`),I(6,`06-ppo-grpo`,`PPO and GRPO`,`Policy updates`,`2:54`,`Compare PPO's learned critic with GRPO's sibling-response baseline.`),I(7,`07-distillation`,`Distillation`,`Teacher targets`,`2:42`,`Transfer a teacher's token distribution instead of copying one final answer.`),I(8,`08-opsd-sdft-sdpo`,`OPSD, SDFT, and SDPO`,`Teacher evidence`,`2:43`,`Compare trusted solutions, demonstrations, and failure feedback at one prefix.`),I(9,`09-credible-experiments`,`Credible experiments`,`Research design`,`3:32`,`Build versioned datasets, fair baselines, and claims that survive scrutiny.`),I(10,`10-technical-appendix`,`Technical appendix`,`Advanced details`,`3:12`,`Inspect GRPO normalization, compressed teacher logits, reported method results, and sample routing.`)],ge=`29 min`,R=P.fullVideoId;if(!R)throw Error(`Post-training playlist is missing its full video`);var z={captionsUrl:r(`courses/post-training/full-course.vtt`),description:`All ten lessons in one continuous video for watching, sharing, or uploading.`,duration:`29:20`,eyebrow:`Full course`,id:R,posterUrl:r(`courses/post-training/full-course-poster.webp`),title:F,videoUrl:T(R)};function B(e){let t=e+1;return t<L.length?t:null}var V=`Subject to change, lesson work in progress`;function _e(){let e=he===`draft`?`Draft`:`Published`;return(0,y.jsx)(`span`,{"aria-label":`${e}: ${V}`,className:`get-started-playlist-status app-tooltip`,"data-tooltip":V,tabIndex:0,children:e})}var H=`openpond.post-training-progress.v1`,U=Object.freeze({}),ve=1e3,W=new Set,G=null,K=null,q=!1;function J(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function ye(e){if(!e||typeof e!=`object`||Array.isArray(e))return U;let t={};for(let[n,r]of Object.entries(e)){if(!n||!r||typeof r!=`object`||Array.isArray(r))continue;let e=r,i=J(e.duration),a=J(e.currentTime),o=J(e.updatedAt);if(i===null||i<=0||a===null)continue;let s=e.completed===!0;t[n]={completed:s,currentTime:s?i:Math.min(i,Math.max(0,a)),duration:i,updatedAt:o===null?0:Math.max(0,o)}}return Object.keys(t).length>0?t:U}function be(e){if(!e)return U;try{return ye(JSON.parse(e))}catch{return U}}function Y(){if(typeof window>`u`)return U;try{return be(f.getItem(H))}catch{return U}}function X(){if(typeof window<`u`&&K!==null&&window.clearTimeout(K),K=null,typeof window<`u`&&G!==null)try{f.setItem(H,JSON.stringify(G))}catch{}}function xe(){typeof window<`u`&&K===null&&(K=window.setTimeout(X,ve))}function Se(){typeof window>`u`||q||(q=!0,window.addEventListener(`pagehide`,X),d(()=>{G=Y(),W.forEach(e=>e())}))}function Z(){return G===null&&(G=Y()),Se(),G}function Q({completed:e=!1,currentTime:t,duration:n,lessonId:r}){if(!r||!Number.isFinite(n)||n<=0||!Number.isFinite(t))return;let i=Z(),a=i[r],o=!!(a?.completed||e),s=o?n:Math.min(n,Math.max(0,t));a&&a.completed===o&&Math.abs(a.currentTime-s)<.25&&Math.abs(a.duration-n)<.25||(G={...i,[r]:{completed:o,currentTime:s,duration:n,updatedAt:Date.now()}},xe(),W.forEach(e=>e()))}function Ce(e){return!e||e.completed||e.currentTime<1?0:e.currentTime<e.duration-2?e.currentTime:0}var $=F,we=[2,1,0];function Te({activeLessonIndex:e,fullCourseSelected:t=!1,autoplay:n=!0,open:r,onClose:i,onOpen:a,onSelectLesson:o,playRequestId:s=0}){let c=(0,v.useRef)(null),l=(0,v.useRef)(null),u=L[e]??L[0],d=t?z:u;(0,v.useEffect)(()=>{if(!r)return;let e=c.current;if(!e)return;let t=!1;l.current=null,e.load();let n=()=>{if(t)return;let n=Ce(Z()[d.id]);n>0&&(e.currentTime=n),s>0&&e.play().catch(()=>void 0)};return e.readyState>=HTMLMediaElement.HAVE_METADATA?n():e.addEventListener(`loadedmetadata`,n,{once:!0}),()=>{t=!0,e.removeEventListener(`loadedmetadata`,n),Number.isFinite(e.duration)&&e.duration>0&&e.currentTime>0&&Q({completed:e.ended,currentTime:e.currentTime,duration:e.duration,lessonId:d.id})}},[d.id,r,s]);function f(e,t=!1){!Number.isFinite(e.duration)||e.duration<=0||Q({completed:t,currentTime:t?e.duration:e.currentTime,duration:e.duration,lessonId:d.id})}function p(e){if(!Number.isFinite(e.duration)||e.duration<=0)return;let t=Math.min(99,Math.floor(e.currentTime/e.duration*100)),n=l.current;(n?.lessonId!==d.id||n.percent!==t)&&(l.current={lessonId:d.id,percent:t},f(e))}function h(e){f(e,!0),n&&!t&&g()}function g(){let t=B(e);t!==null&&o(t)}return(0,y.jsxs)(`section`,{className:`get-started-series`,"aria-label":$,children:[(0,y.jsxs)(`article`,{className:`get-started-playlist-card`,"aria-labelledby":`post-training-series-title`,children:[(0,y.jsx)(`button`,{"aria-haspopup":`dialog`,"aria-label":`Open ${$} playlist`,className:`get-started-playlist-open`,onClick:a,type:`button`}),(0,y.jsxs)(`div`,{className:`get-started-playlist-stack`,"aria-hidden":`true`,children:[we.map((e,t)=>{let n=L[e];return(0,y.jsx)(`div`,{className:`get-started-playlist-poster layer-${t+1}`,children:(0,y.jsx)(`img`,{alt:``,decoding:`async`,src:n.posterUrl})},n.id)}),(0,y.jsx)(`span`,{className:`get-started-course-play-icon`,children:(0,y.jsx)(m,{fill:`currentColor`,size:19})}),(0,y.jsxs)(`span`,{className:`get-started-playlist-count`,children:[L.length,` lessons`]})]}),(0,y.jsxs)(`div`,{className:`get-started-playlist-copy`,children:[(0,y.jsxs)(`div`,{className:`get-started-playlist-title`,children:[(0,y.jsx)(`h1`,{id:`post-training-series-title`,children:$}),(0,y.jsx)(_e,{})]}),(0,y.jsxs)(`div`,{className:`get-started-course-meta`,children:[(0,y.jsx)(`span`,{children:`Learning series`}),(0,y.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,y.jsx)(`span`,{children:ge})]}),(0,y.jsx)(`p`,{children:`Rewards, GRPO, RLVR, distillation, experiments, and a technical appendix.`})]})]}),r?(0,y.jsx)(Ee,{activeLessonIndex:e,autoplay:n,fullCourseSelected:t,onClose:i,onEnded:h,onPause:f,onSelectLesson:o,onTimeUpdate:p,videoRef:c}):null]})}function Ee({activeLessonIndex:e,autoplay:t,fullCourseSelected:n,onClose:r,onEnded:i,onPause:a,onSelectLesson:o,onTimeUpdate:s,videoRef:c}){let l=L[e]??L[0],u=B(e),d=n?z:l;return(0,y.jsx)(b,{autoAdvance:t&&!n,contained:!0,inertExclusionSelector:`.get-started-learning-panel`,navigation:n?void 0:{currentIndex:e,onNext:u===null?void 0:()=>o(u),onPrevious:e>0?()=>o(e-1):void 0,total:L.length},onClose:r,onEnded:i,onPause:a,onTimeUpdate:s,video:d,videoRef:c})}var De={captionsUrl:t,description:`See how Profile Agents combine chat, direct actions, shared runtime surfaces, and Evals.`,duration:`1:16`,eyebrow:`Agent overview`,id:`openpond-agent-overview`,posterUrl:c,title:`What is an OpenPond Agent?`,videoUrl:E};function Oe(e={}){let[t,n]=(0,v.useState)(null),[r,i]=(0,v.useState)(null),a=e.makeAgentTutorial===void 0?t:e.makeAgentTutorial,o=e.postTrainingCourse===void 0?r:e.postTrainingCourse,s=!!(o||a);function c(){e.onOpenMakeAgentTutorial?e.onOpenMakeAgentTutorial():(i(null),n({autoplay:!0,playRequestId:0,videoId:`create`}))}function l(){e.onCloseMakeAgentTutorial?e.onCloseMakeAgentTutorial():n(null)}function u(t){e.onSelectMakeAgentTutorialVideo?e.onSelectMakeAgentTutorialVideo(t):n(e=>e&&{...e,playRequestId:e.playRequestId+1,videoId:t})}function d(){e.onOpenPostTrainingCourse?e.onOpenPostTrainingCourse():(n(null),i({autoplay:!0,fullCourseSelected:!1,lessonIndex:0,playRequestId:0}))}function f(){e.onClosePostTrainingCourse?e.onClosePostTrainingCourse():i(null)}function p(t){e.onSelectPostTrainingLesson?e.onSelectPostTrainingLesson(t):i(e=>e&&{...e,fullCourseSelected:!1,lessonIndex:t,playRequestId:e.playRequestId+1})}return(0,y.jsx)(`section`,{className:`get-started-view ${s?`course-player-open`:``}`,"aria-label":`Walkthroughs`,children:(0,y.jsxs)(`div`,{className:`get-started-shell`,children:[(0,y.jsxs)(`section`,{className:`get-started-start-here`,"aria-labelledby":`get-started-start-here-title`,children:[(0,y.jsx)(`header`,{className:`get-started-section-heading`,children:(0,y.jsx)(`h2`,{id:`get-started-start-here-title`,children:`Start here`})}),(0,y.jsx)(`div`,{className:`get-started-learning-grid`,children:(0,y.jsx)(te,{titleElement:`h1`,video:De})})]}),(0,y.jsxs)(`section`,{className:`get-started-walkthroughs`,"aria-labelledby":`get-started-walkthroughs-title`,children:[(0,y.jsx)(`header`,{className:`get-started-section-heading`,children:(0,y.jsx)(`h2`,{id:`get-started-walkthroughs-title`,children:`Walkthroughs`})}),(0,y.jsx)(`div`,{className:`get-started-learning-grid`,children:(0,y.jsx)(pe,{activeVideoId:a?.videoId??`create`,autoplay:a?.autoplay??!0,onClose:l,onOpen:c,onSelectVideo:u,open:!!a,playRequestId:a?.playRequestId??0})})]}),(0,y.jsxs)(`section`,{className:`get-started-learn`,"aria-labelledby":`get-started-learn-title`,children:[(0,y.jsx)(`header`,{className:`get-started-section-heading`,children:(0,y.jsx)(`h2`,{id:`get-started-learn-title`,children:`Learn deeper`})}),(0,y.jsx)(`div`,{className:`get-started-learning-grid`,children:(0,y.jsx)(Te,{activeLessonIndex:o?.lessonIndex??0,autoplay:o?.autoplay??!0,fullCourseSelected:o?.fullCourseSelected??!1,open:!!o,onClose:f,onOpen:d,onSelectLesson:p,playRequestId:o?.playRequestId??0})})]})]})})}export{Oe as GetStartedView};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{a as t,d as n,f as r,g as i,h as a,i as o,m as s,o as c,r as l,u}from"./index-B6XX_0h3.js";import{a as d,n as f}from"./client-choice-storage-DitqKiIT.js";import"./icons-Bk2b68aC.js";import{V as p}from"./training-model-data-CIysl8wH.js";import{t as m}from"./play-CHXXdkuO.js";import{t as h}from"./x-Jx2jlP9u.js";import{t as g}from"./AppDialog-CxjDHVk9.js";import{Cn as _}from"./App-CCuh99JW.js";var v=e(i(),1),ee=a(),y=s();function te({badge:e,onPlay:t,titleElement:n=`h3`,video:r}){let[i,a]=(0,v.useState)(!1),o=(0,v.useRef)(null),s=n,c=`${r.id}-title`;function l(){if(t){t();return}(0,ee.flushSync)(()=>a(!0));let e=o.current;e&&(e.load(),e.play().catch(()=>void 0))}return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`article`,{className:`get-started-course-card`,"aria-labelledby":c,children:[(0,y.jsx)(`button`,{"aria-haspopup":`dialog`,"aria-label":`Play ${r.title}`,className:`get-started-course-open`,onClick:l,type:`button`}),(0,y.jsxs)(`div`,{className:`get-started-course-media`,children:[(0,y.jsx)(`img`,{alt:``,className:`get-started-course-poster`,decoding:`async`,src:r.posterUrl}),(0,y.jsx)(`span`,{className:`get-started-course-play-icon`,"aria-hidden":`true`,children:(0,y.jsx)(m,{fill:`currentColor`,size:19})}),e?(0,y.jsx)(`span`,{className:`get-started-course-badge`,"aria-hidden":`true`,children:e}):null]}),(0,y.jsxs)(`div`,{className:`get-started-course-copy`,children:[(0,y.jsx)(s,{id:c,children:r.title}),(0,y.jsxs)(`div`,{className:`get-started-course-meta`,"aria-label":`${r.title} details`,children:[(0,y.jsx)(`span`,{children:r.eyebrow}),(0,y.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,y.jsx)(`span`,{children:r.duration})]}),r.description?(0,y.jsx)(`p`,{children:r.description}):null]})]}),i&&!t?(0,y.jsx)(b,{onClose:()=>a(!1),video:r,videoRef:o}):null]})}function b({autoAdvance:e=!1,contained:t=!1,inertExclusionSelector:n,navigation:r,onEnded:i,onClose:a,onPause:o,onTimeUpdate:s,video:c,videoRef:l}){return(0,y.jsxs)(g,{ariaLabel:`${c.title} player`,backdropClassName:`get-started-course-player-backdrop`,className:`get-started-course-player`,contained:t,inertExclusionSelector:n,onClose:a,children:[(0,y.jsxs)(`header`,{className:`get-started-course-player-header`,children:[(0,y.jsxs)(`div`,{className:`get-started-course-player-copy`,children:[(0,y.jsx)(`strong`,{children:c.title}),(0,y.jsxs)(`span`,{children:[r?`Lesson ${r.currentIndex+1} of ${r.total}`:c.eyebrow,` · `,c.duration]})]}),(0,y.jsxs)(`div`,{className:`get-started-course-player-actions`,children:[r?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`button`,{"aria-label":`Previous lesson`,disabled:!r.onPrevious,onClick:r.onPrevious,title:`Previous lesson`,type:`button`,children:(0,y.jsx)(_,{size:17})}),(0,y.jsx)(`button`,{"aria-label":`Next lesson`,disabled:!r.onNext,onClick:r.onNext,title:`Next lesson`,type:`button`,children:(0,y.jsx)(p,{size:17})})]}):null,(0,y.jsx)(`button`,{"aria-label":`Close video player`,"data-autofocus":!0,onClick:a,title:`Close`,type:`button`,children:(0,y.jsx)(h,{size:18})})]})]}),(0,y.jsx)(`div`,{className:`get-started-course-player-body`,children:(0,y.jsx)(`div`,{className:`get-started-course-player-media`,children:(0,y.jsx)(`div`,{className:`get-started-course-player-stage`,children:(0,y.jsx)(`video`,{"aria-label":`${c.title} video`,className:`get-started-course-player-video`,controls:!0,"data-auto-advance":e?`true`:void 0,onEnded:e=>i?.(e.currentTarget),onPause:e=>o?.(e.currentTarget),onTimeUpdate:e=>s?.(e.currentTarget),playsInline:!0,poster:c.posterUrl,preload:`metadata`,ref:l,src:c.videoUrl,children:c.captionsUrl?(0,y.jsx)(`track`,{kind:`captions`,label:`English`,src:c.captionsUrl,srcLang:`en`}):null},c.id)})})})]})}var x={schemaVersion:`openpond.publicVideoManifest.v1`,playlists:[{id:`post-training-from-first-principles`,fullVideoId:`post-training-full-course`,status:`draft`,title:`Post-training from first principles`,videoIds:[`post-training-01-how-post-training-works`,`post-training-02-definitions`,`post-training-03-on-policy-off-policy`,`post-training-04-rewards-credit-assignment`,`post-training-05-verifiable-rewards-rlvr`,`post-training-06-ppo-grpo`,`post-training-07-distillation`,`post-training-08-opsd-sdft-sdpo`,`post-training-09-credible-experiments`,`post-training-10-technical-appendix`]},{id:`how-to-make-an-agent`,status:`published`,title:`Agents`,playAllVideoId:`make-agent-tutorial`,videoIds:[`make-agent-tutorial-create`,`make-agent-tutorial-use`,`make-agent-tutorial-improve`]}],videos:[{id:`post-training-01-how-post-training-works`,localPath:`courses/post-training/01-how-post-training-works.mp4`,objectKey:`media/videos/aeb54dfb42eb940672df6e41bae075ffa5e45e1609e173a91e485c808b61fd4a.mp4`,sha256:`aeb54dfb42eb940672df6e41bae075ffa5e45e1609e173a91e485c808b61fd4a`,sizeBytes:2114638,durationSeconds:64.967},{id:`post-training-02-definitions`,localPath:`courses/post-training/02-definitions.mp4`,objectKey:`media/videos/c57d021989cdf058c683b9d017eb91bd23075e6bd00d0cc055e1285b3ea119fc.mp4`,sha256:`c57d021989cdf058c683b9d017eb91bd23075e6bd00d0cc055e1285b3ea119fc`,sizeBytes:11956956,durationSeconds:374.367},{id:`post-training-03-on-policy-off-policy`,localPath:`courses/post-training/03-on-policy-off-policy.mp4`,objectKey:`media/videos/a807bd7d704f8603addc875623a3cfcc938e60e0170d555d47569394a1c31762.mp4`,sha256:`a807bd7d704f8603addc875623a3cfcc938e60e0170d555d47569394a1c31762`,sizeBytes:2291518,durationSeconds:66.367},{id:`post-training-04-rewards-credit-assignment`,localPath:`courses/post-training/04-rewards-credit-assignment.mp4`,objectKey:`media/videos/685f7ecff7fcea262dd2cf60568079633816e9116efd80c069d0e20a4959a87f.mp4`,sha256:`685f7ecff7fcea262dd2cf60568079633816e9116efd80c069d0e20a4959a87f`,sizeBytes:5677418,durationSeconds:179.834},{id:`post-training-05-verifiable-rewards-rlvr`,localPath:`courses/post-training/05-verifiable-rewards-rlvr.mp4`,objectKey:`media/videos/0633584b2036843edd1ff9c63f0858db4272ddf55b10b160ec2ef6f7650c7d3a.mp4`,sha256:`0633584b2036843edd1ff9c63f0858db4272ddf55b10b160ec2ef6f7650c7d3a`,sizeBytes:5666892,durationSeconds:172.534},{id:`post-training-06-ppo-grpo`,localPath:`courses/post-training/06-ppo-grpo.mp4`,objectKey:`media/videos/66760fec7508c413844adb06c3f3920c5f7e3a874b18dc244ba090c55f452ff3.mp4`,sha256:`66760fec7508c413844adb06c3f3920c5f7e3a874b18dc244ba090c55f452ff3`,sizeBytes:5519257,durationSeconds:173.6},{id:`post-training-07-distillation`,localPath:`courses/post-training/07-distillation.mp4`,objectKey:`media/videos/3590f94325c1986f2025b42d182f04957e9eff6d5c06b1effc28dc369651c466.mp4`,sha256:`3590f94325c1986f2025b42d182f04957e9eff6d5c06b1effc28dc369651c466`,sizeBytes:4687640,durationSeconds:161.667},{id:`post-training-08-opsd-sdft-sdpo`,localPath:`courses/post-training/08-opsd-sdft-sdpo.mp4`,objectKey:`media/videos/3c45d8c1df0a24132ec425762dc6a4274b1e5cac6dfd220a2994f8754f431031.mp4`,sha256:`3c45d8c1df0a24132ec425762dc6a4274b1e5cac6dfd220a2994f8754f431031`,sizeBytes:5439835,durationSeconds:163.134},{id:`post-training-09-credible-experiments`,localPath:`courses/post-training/09-credible-experiments.mp4`,objectKey:`media/videos/fc701a8ba4b42de53bcaec3dcf191e6ec66f1dc0c48480f0aff01c3849aff023.mp4`,sha256:`fc701a8ba4b42de53bcaec3dcf191e6ec66f1dc0c48480f0aff01c3849aff023`,sizeBytes:6909405,durationSeconds:211.934},{id:`post-training-10-technical-appendix`,localPath:`courses/post-training/10-technical-appendix.mp4`,objectKey:`media/videos/17e6b5ef161fcdc97678e5b63650bffdb4b4b0d510ba75725a2af8a5db0d7e21.mp4`,sha256:`17e6b5ef161fcdc97678e5b63650bffdb4b4b0d510ba75725a2af8a5db0d7e21`,sizeBytes:5481950,durationSeconds:191.767},{id:`post-training-full-course`,localPath:`courses/post-training/full-course.mp4`,objectKey:`media/videos/d3df6a3b2ffe6c696b9dc0774ceaec19a2b8a92b170476cacb9df8dbdb2a526f.mp4`,sha256:`d3df6a3b2ffe6c696b9dc0774ceaec19a2b8a92b170476cacb9df8dbdb2a526f`,sizeBytes:55740426,durationSeconds:1760.192},{id:`openpond-agent-overview`,localPath:`tutorials/what-is-an-openpond-agent.mp4`,objectKey:`media/videos/421160f56d82abd6515df0d5ccf144591749e0ab1d58d630805c4807913812c7.mp4`,sha256:`421160f56d82abd6515df0d5ccf144591749e0ab1d58d630805c4807913812c7`,sizeBytes:5259848,durationSeconds:77.467},{id:`make-agent-tutorial`,localPath:`tutorials/how-to-make-an-agent.mp4`,objectKey:`media/videos/252d2f27076c904d85c9854c2f4c494fe9e92b3cea7d2c58ffbaa0323c17f255.mp4`,sha256:`252d2f27076c904d85c9854c2f4c494fe9e92b3cea7d2c58ffbaa0323c17f255`,sizeBytes:17339101,durationSeconds:273.067},{id:`make-agent-tutorial-create`,localPath:`tutorials/how-to-make-an-agent-create.mp4`,objectKey:`media/videos/322c999225d4759c34334eee22edee25a737fb06c5c6d66ee1f84485bb586c44.mp4`,sha256:`322c999225d4759c34334eee22edee25a737fb06c5c6d66ee1f84485bb586c44`,sizeBytes:6050301,durationSeconds:100.4},{id:`make-agent-tutorial-use`,localPath:`tutorials/how-to-make-an-agent-use.mp4`,objectKey:`media/videos/6e28bb710f90de8968fa18f996973b869e6748797739dd93cce49d8fbba564c1.mp4`,sha256:`6e28bb710f90de8968fa18f996973b869e6748797739dd93cce49d8fbba564c1`,sizeBytes:5084394,durationSeconds:75.1},{id:`make-agent-tutorial-improve`,localPath:`tutorials/how-to-make-an-agent-improve.mp4`,objectKey:`media/videos/fe8b62bf6ed5f5b933b0023dfdd9a06e69b5b352d4c702b671ec7677b395d58d.mp4`,sha256:`fe8b62bf6ed5f5b933b0023dfdd9a06e69b5b352d4c702b671ec7677b395d58d`,sizeBytes:6255324,durationSeconds:108.634}]},S=`https://media.openpond.ai`,C=x,ne=new Map(C.playlists.map(e=>[e.id,e])),re=new Map(C.videos.map(e=>[e.id,e]));function w(e){let t=ne.get(e);if(!t)throw Error(`Public video manifest is missing playlist ${e}`);return t}function ie(e,t){return t?`${S}/${e.objectKey}`:r(e.localPath)}function T(e){let t=re.get(e);if(!t)throw Error(`Public video manifest is missing ${e}`);return ie(t,!0)}var ae=T(`make-agent-tutorial`),E=T(`openpond-agent-overview`);function oe(e){return T(`make-agent-tutorial-${e}`)}var D={schemaVersion:`openpond.tutorialFrames.v2`,tutorial:{title:`How to make an agent`,subtitle:`Create, run, improve, and verify an Account Health Agent.`,outroTitle:`Agent shared from the hosted Profile`,outroSubtitle:`Available to teammates and hosted sandboxes. · Synthetic tutorial data · AI-generated narration`,narration:{model:`gpt-4o-mini-tts-2025-12-15`,voice:`cedar`,speed:1.12,responseFormat:`wav`,instructions:`Warm, clear product tutorial narration. Speak at a calm conversational pace with practical emphasis on user choices, evidence, approvals, and results. Pronounce OpenPond as open pond, P1 as P one, CSV as C S V, JSON as jay son, and Taskset as task set. Finish each sentence cleanly. Avoid hype, sales cadence, dramatic delivery, or imitation of any real person.`,leadInSeconds:.55,tailSeconds:.7,audioTitle:`AI-generated narration`,audioCredit:`OpenAI Speech · Cedar voice`}},chapters:[{id:`create`,label:`Create`,title:`Create an Agent`,subtitle:`Turn a plain-language purpose into a working Account Health Agent.`,outroTitle:`Account Health Agent created`,outroSubtitle:`The agent is ready to use. · AI-generated narration`,cardDuration:1.5},{id:`use`,label:`Use`,title:`Use the Agent`,subtitle:`Chat with the Account Health Agent and run its actions with approval.`,outroTitle:`First agent run complete`,outroSubtitle:`The result and supporting evidence are ready to review. · AI-generated narration`,cardDuration:1.5},{id:`improve`,label:`Improve`,title:`Improve the Agent`,subtitle:`Use real run evidence and Evals to make the Account Health Agent better.`,outroTitle:`Account Health Agent improved`,outroSubtitle:`The updated agent passed its Evals. · AI-generated narration`,cardDuration:1.5}],transitionDuration:.33,frames:[{id:`C01`,file:`C01-account-agent-lab-create-menu.png`,chapter:`create`,label:`Start in Profile`,caption:`Open Profile, choose Agent, and start the guided creation flow.`,placement:`bottom-left`,narration:`Open Profile, choose Agent, and start the guided creation flow.`,focus:{x:.84,y:.06,width:.145,height:.31,zoom:1.55}},{id:`C02`,file:`C02-source-choice-wide.png`,chapter:`create`,label:`Start from a prompt or chats`,caption:`Choose From prompt to describe the Agent directly, or From chats to include examples of the work it should handle.`,placement:`bottom-left`,narration:`Choose From prompt to describe the Agent directly, or From chats to include examples of the work it should handle.`,focus:{x:.31,y:.34,width:.38,height:.31,zoom:1.42}},{id:`C04`,file:`C04-from-chats-wide.png`,chapter:`create`,label:`Add purpose and chats`,caption:`This synthetic example starts with three chats: Acme has renewal blockers, Northstar is expanding, and the team needs a weekly account review. Add them with the Agent purpose.`,placement:`top-left`,narration:`This synthetic example starts with three chats: Acme has renewal blockers, Northstar is expanding, and the team needs a weekly account review. Add them with the Agent purpose.`,focus:{x:.31,y:.2,width:.38,height:.6,zoom:1.32}},{id:`C06`,file:`C06-disclosure.png`,chapter:`create`,label:`See how chats build the plan`,caption:`Review the selected excerpts as examples. OpenPond turns their recurring goals, decisions, corrections, and answer patterns into the first Agent plan.`,placement:`bottom-left`,narration:`Review the selected excerpts as examples. OpenPond turns their recurring goals, decisions, corrections, and answer patterns into the first Agent plan.`,focus:{x:.31,y:.2,width:.38,height:.6,zoom:1.32}},{id:`C07`,file:`C07-agent-review.png`,chapter:`create`,label:`Review the Agent`,caption:`The draft converts those examples into the Agent's purpose, chat behavior, runnable actions, output formats, and Evals for your review.`,placement:`bottom-left`,narration:`The draft converts those examples into the Agent's purpose, chat behavior, runnable actions, output formats, and Evals for your review.`,focus:{x:.31,y:.04,width:.38,height:.76,zoom:1.27}},{id:`C08`,file:`C08-right-chat-question.png`,chapter:`create`,label:`Answer the planning question`,caption:`The right side panel asks how the Agent should prioritize conflicting account risks.`,placement:`top-left`,narration:`The right side panel asks how the Agent should prioritize conflicting account risks.`,focus:{x:.715,y:.19,width:.265,height:.72,zoom:1.42}},{id:`C09`,file:`C09-right-chat-plan.png`,chapter:`create`,label:`Confirm the plan`,caption:`Before creation, review the proposed name, chat endpoint, runnable actions, Evals, and output formats.`,placement:`top-left`,narration:`Before creation, review the proposed name, chat endpoint, runnable actions, Evals, and output formats.`,focus:{x:.715,y:.18,width:.265,height:.72,zoom:1.42}},{id:`C09A`,file:`C09A-edit-plan.png`,chapter:`create`,label:`Edit the plan`,caption:`If the plan misses a requirement, open Edit plan and describe the change in plain language before any Agent source is created.`,placement:`top-left`,narration:`If the plan misses a requirement, open Edit plan and describe the change in plain language before any Agent source is created.`,focus:{x:.73,y:.66,width:.24,height:.24,zoom:1.45}},{id:`C09B`,file:`C09B-revised-plan.png`,chapter:`create`,label:`Create from the revised plan`,caption:`Review the revised plan, then click Confirm plan to create the Agent and run its Evals.`,placement:`top-left`,narration:`Review the revised plan, then click Confirm plan to create the Agent and run its Evals.`,focus:{x:.72,y:.7,width:.25,height:.2,zoom:1.45}},{id:`C10`,file:`C10-candidate-evaluation.png`,chapter:`create`,label:`Review the Evals`,caption:`This is the creation result: OpenPond built the Agent and passed its behavior Evals against the Account Health examples.`,placement:`bottom-left`,narration:`This is the creation result: OpenPond built the Agent and passed its behavior Evals against the Account Health examples.`,focus:{x:.19,y:.18,width:.5,height:.22,zoom:1.36}},{id:`C11`,file:`C11-local-source-applied.png`,chapter:`create`,label:`Save the Agent`,caption:`After the Evals pass, the Agent is saved to your Profile and is ready to use.`,placement:`bottom-left`,narration:`After the Evals pass, the Agent is saved to your Profile and is ready to use.`,focus:{x:.19,y:.16,width:.5,height:.14,zoom:1.38}},{id:`C12`,file:`C12-ready-local-detail.png`,chapter:`create`,label:`Use the Agent`,caption:`The Agent page shows its purpose, chat entrypoint, and runnable account actions.`,placement:`bottom-left`,narration:`The Agent page shows its purpose, chat entrypoint, and runnable account actions.`,focus:{x:.19,y:.17,width:.5,height:.13,zoom:1.38}},{id:`C13Q`,file:`C13Q-chat-acme-prompt.png`,chapter:`use`,label:`Ask the chat endpoint`,caption:`Use opens a normal chat with the Agent attached. Type a natural-language question about Acme before sending it.`,placement:`top-left`,narration:`Use opens a normal chat with the Agent attached. Type a natural-language question about Acme before sending it.`,focus:{x:.245,y:.84,width:.39,height:.14,zoom:1.48}},{id:`C13`,file:`C13-chat-acme.png`,chapter:`use`,label:`Ask about Acme`,caption:`Acme is the at-risk example: the Agent answers in chat with renewal timing, usage decline, the disputed invoice, and the open P1 case.`,placement:`top-left`,narration:`Acme is the at-risk example: the Agent answers in chat with renewal timing, usage decline, the disputed invoice, and the open P1 case.`,focus:{x:.2,y:.08,width:.48,height:.32,zoom:1.34}},{id:`C14`,file:`C14-chat-follow-up.png`,chapter:`use`,label:`Ask a follow-up`,caption:`A follow-up keeps Acme context and assigns the first actions to Revenue Operations and Support instead of restarting the conversation.`,placement:`top-left`,narration:`A follow-up keeps Acme context and assigns the first actions to Revenue Operations and Support instead of restarting the conversation.`,focus:{x:.2,y:.08,width:.48,height:.36,zoom:1.32}},{id:`C15`,file:`C15-action-picker.png`,chapter:`use`,label:`Choose a direct action`,caption:`The action picker offers chat plus each runnable account action, so you can choose conversation or a focused task.`,placement:`top-left`,narration:`The action picker offers chat plus each runnable account action, so you can choose conversation or a focused task.`,focus:{x:.245,y:.84,width:.39,height:.14,zoom:1.48}},{id:`C16`,file:`C16-northstar-summary.png`,chapter:`use`,label:`Summarize Northstar`,caption:`Northstar is the healthy expansion example from the source chats. Its direct summary identifies rising usage and the request for twenty-five more seats.`,placement:`top-left`,narration:`Northstar is the healthy expansion example from the source chats. Its direct summary identifies rising usage and the request for twenty-five more seats.`,focus:{x:.2,y:.37,width:.48,height:.2,zoom:1.38}},{id:`C17`,file:`C17-acme-triage.png`,chapter:`use`,label:`Triage Acme`,caption:`Running renewal triage for Acme returns high risk, cites the billing and support blockers, and orders the next steps.`,placement:`top-left`,narration:`Running renewal triage for Acme returns high risk, cites the billing and support blockers, and orders the next steps.`,focus:{x:.2,y:.57,width:.48,height:.15,zoom:1.4}},{id:`C18`,file:`C18-weekly-review-artifacts.png`,chapter:`use`,label:`Build the weekly review`,caption:`The weekly review action combines the portfolio and returns visible Markdown, CSV, and JSON artifacts for downstream use.`,placement:`top-left`,narration:`The weekly review action combines the portfolio and returns visible Markdown, CSV, and JSON artifacts for downstream use.`,focus:{x:.2,y:.68,width:.48,height:.19,zoom:1.36}},{id:`C19`,file:`C19-after-restart.png`,chapter:`use`,label:`Verify persistence`,caption:`After restarting OpenPond, the same Agent, chat history, and actions remain available.`,placement:`bottom-left`,narration:`After restarting OpenPond, the same Agent, chat history, and actions remain available.`,focus:{x:.19,y:.16,width:.5,height:.15,zoom:1.38}},{id:`I00`,file:`I00-current-priority-gap.png`,chapter:`improve`,label:`Identify the behavior gap`,caption:`The current Agent finds the right facts, but buries the priority after the account summary. Improve will make the billing and P1 decision lead every high-risk result.`,placement:`top-left`,narration:`The current Agent finds the right facts, but buries the priority after the account summary. Improve will make the billing and P1 decision lead every high-risk result.`,focus:{x:.38,y:.06,width:.42,height:.18,zoom:1.4}},{id:`I01`,file:`I01-improve-source-choice.png`,chapter:`improve`,label:`Start Improve`,caption:`Open Improve agent on the existing Agent, then choose whether to describe the correction directly or include a chat that demonstrates it.`,placement:`bottom-left`,narration:`Open Improve agent on the existing Agent, then choose whether to describe the correction directly or include a chat that demonstrates it.`,focus:{x:.31,y:.34,width:.38,height:.31,zoom:1.42}},{id:`I02`,file:`I02-improve-from-chats.png`,chapter:`improve`,label:`Add the correction chat`,caption:`Choose From chats, ask every high-risk response to lead with the billing and P1 decision, and attach the correction conversation that demonstrates it.`,placement:`top-left`,narration:`Choose From chats, ask every high-risk response to lead with the billing and P1 decision, and attach the correction conversation that demonstrates it.`,focus:{x:.31,y:.2,width:.38,height:.6,zoom:1.32}},{id:`I03`,file:`I03-improve-review.png`,chapter:`improve`,label:`Review the improvement`,caption:`Review the new lead-with-priority behavior, the existing capabilities that must stay intact, and the Evals OpenPond will rerun.`,placement:`bottom-left`,narration:`Review the new lead-with-priority behavior, the existing capabilities that must stay intact, and the Evals OpenPond will rerun.`,focus:{x:.31,y:.04,width:.38,height:.76,zoom:1.27}},{id:`I04`,file:`I04-improve-right-chat-plan.png`,chapter:`improve`,label:`Confirm the Improve plan`,caption:`Review the planned change and confirm that it preserves citations and every existing action.`,placement:`top-left`,narration:`Review the planned change and confirm that it preserves citations and every existing action.`,focus:{x:.715,y:.18,width:.265,height:.72,zoom:1.42}},{id:`I05`,file:`I05-improve-comparison.png`,chapter:`improve`,label:`Compare the results`,caption:`The same locked Evals make the decision clear: the current Agent misses the new lead sentence, while the updated Agent passes every original and new Eval.`,placement:`bottom-left`,narration:`The same locked Evals make the decision clear: the current Agent misses the new lead sentence, while the updated Agent passes every original and new Eval.`,focus:{x:.745,y:.8,width:.22,height:.13,zoom:1.5}},{id:`I06`,file:`I06-improved-release.png`,chapter:`improve`,label:`Save the improvement`,caption:`Apply the update only after that comparison. The existing Agent updates in place, with the successful Evals recorded.`,placement:`bottom-left`,narration:`Apply the update only after that comparison. The existing Agent updates in place, with the successful Evals recorded.`,focus:{x:.71,y:.16,width:.28,height:.22,zoom:1.45}},{id:`I07`,file:`I07-improved-chat.png`,chapter:`improve`,label:`Verify improved chat`,caption:`The improved chat now places disputed billing and the open P1 case ahead of adoption decline while preserving source citations.`,placement:`top-left`,narration:`The improved chat now places disputed billing and the open P1 case ahead of adoption decline while preserving source citations.`,focus:{x:.2,y:.08,width:.48,height:.16,zoom:1.4}},{id:`I08`,file:`I08-improved-triage.png`,chapter:`improve`,label:`Verify improved triage`,caption:`The direct triage action repeats the billing-first result, proving the change works outside chat without breaking the existing workflow.`,placement:`top-left`,narration:`The direct triage action repeats the billing-first result, proving the change works outside chat without breaking the existing workflow.`,focus:{x:.2,y:.27,width:.48,height:.16,zoom:1.4}},{id:`I09`,file:`I09-profile-commit-dialog.png`,chapter:`improve`,label:`Commit the Profile source`,caption:`Commit the final Agent source with a clear Git message so the exact Profile version remains reviewable and shareable.`,placement:`bottom-left`,narration:`Commit the final Agent source with a clear Git message so the exact Profile version remains reviewable and shareable.`,focus:{x:.37,y:.36,width:.26,height:.29,zoom:1.45}},{id:`I10`,file:`I10-profile-sync-dialog.png`,chapter:`improve`,label:`Review the hosted sync`,caption:`Open Sync to review the committed Profile changes. Confirm sync publishes this version so teammates can use the Agent in chat and hosted sandboxes can attach the same source.`,placement:`bottom-left`,narration:`Open Sync to review the committed Profile changes. Confirm sync publishes this version so teammates can use the Agent in chat and hosted sandboxes can attach the same source.`,focus:{x:.5,y:.61,width:.11,height:.07,zoom:1.55}}],frameMinimumDuration:5.2,focusStyle:{borderColor:`#22d3ee`,borderWidth:5,dimOpacity:.32,zoomDelaySeconds:.8,zoomDurationSeconds:1.2}},se=w(`how-to-make-an-agent`),O=D.chapters,ce={create:`1:24`,use:`1:05`,improve:`1:10`},k=se.title,le=D.tutorial.title,A=`4:33`,j={captionsUrl:l,chapterIds:O.map(e=>e.id),description:`Create, use, and improve an Account Health Agent in one continuous walkthrough.`,duration:A,eyebrow:`Play all`,id:`make-agent-tutorial`,lessonNumber:null,posterUrl:o,title:le,videoId:`play-all`,videoUrl:ae},M=O.map((e,t)=>({captionsUrl:u(e.id),chapterIds:[e.id],description:e.subtitle,duration:ce[e.id],eyebrow:`Lesson ${t+1}`,id:`make-agent-tutorial-${e.id}`,lessonNumber:t+1,posterUrl:n(e.id),title:e.title,videoId:e.id,videoUrl:oe(e.id)})),ue=[j,...M];function N(e){return ue.find(t=>t.videoId===e)??j}function de(e){let t=M.findIndex(t=>t.videoId===e);return t<0?null:M[t+1]?.videoId??null}var fe=[2,1,0];function pe({activeVideoId:e=`play-all`,autoplay:t=!0,onClose:n,onOpen:r,onSelectVideo:i,open:a=!1,playRequestId:o=0}={}){let s=(0,v.useRef)(null),c=N(e);(0,v.useEffect)(()=>{if(!a)return;let e=s.current;e&&(e.load(),o>0&&e.play().catch(()=>void 0))},[c.id,a,o]);function l(){if(!t||!i)return;let n=de(e);n&&i(n)}return(0,y.jsxs)(`section`,{className:`get-started-series`,"aria-label":k,children:[(0,y.jsxs)(`article`,{className:`get-started-playlist-card`,"aria-labelledby":`make-agent-series-title`,children:[(0,y.jsx)(`button`,{"aria-haspopup":`dialog`,"aria-label":`Open ${k} playlist`,className:`get-started-playlist-open`,onClick:r,type:`button`}),(0,y.jsxs)(`div`,{className:`get-started-playlist-stack`,"aria-hidden":`true`,children:[fe.map((e,t)=>{let n=M[e];return(0,y.jsx)(`div`,{className:`get-started-playlist-poster layer-${t+1}`,children:(0,y.jsx)(`img`,{alt:``,decoding:`async`,src:n.posterUrl})},n.id)}),(0,y.jsx)(`span`,{className:`get-started-course-play-icon`,children:(0,y.jsx)(m,{fill:`currentColor`,size:19})}),(0,y.jsxs)(`span`,{className:`get-started-playlist-count`,children:[M.length,` lessons`]})]}),(0,y.jsxs)(`div`,{className:`get-started-playlist-copy`,children:[(0,y.jsx)(`h1`,{id:`make-agent-series-title`,children:k}),(0,y.jsxs)(`div`,{className:`get-started-course-meta`,children:[(0,y.jsx)(`span`,{children:`Walkthrough playlist`}),(0,y.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,y.jsx)(`span`,{children:A})]}),(0,y.jsx)(`p`,{children:`Create, use, and improve an Account Health Agent, or play the full walkthrough.`})]})]}),a&&n&&i?(0,y.jsx)(me,{activeVideoId:e,autoplay:t,contained:!0,inertExclusionSelector:`.get-started-learning-panel`,onClose:n,onEnded:l,onSelectVideo:i,videoRef:s}):null]})}function me({activeVideoId:e=`play-all`,autoplay:t=!0,contained:n=!1,inertExclusionSelector:r,onClose:i,onEnded:a,onSelectVideo:o=()=>void 0,videoRef:s}){let c=N(e),l=M.findIndex(t=>t.videoId===e),u=l>=0?M[l+1]?.videoId:void 0,d=l>0?M[l-1]?.videoId:void 0;return(0,y.jsx)(b,{autoAdvance:t&&l>=0,contained:n,inertExclusionSelector:r,navigation:l>=0?{currentIndex:l,onNext:u?()=>o(u):void 0,onPrevious:d?()=>o(d):void 0,total:M.length}:void 0,onClose:i,onEnded:a?()=>a():void 0,video:c,videoRef:s})}var P=w(`post-training-from-first-principles`),F=P.title,he=P.status;function I(e,t,n,i,a,o){let s=`courses/post-training/${t}`,c=`post-training-${t}`;return{captionsUrl:r(`${s}.vtt`),description:o,duration:a,eyebrow:i,id:c,lessonNumber:e,posterUrl:r(`${s}-poster.webp`),slug:t,title:n,videoUrl:T(c)}}var L=[I(1,`01-how-post-training-works`,`How post-training works`,`Start here`,`1:05`,`The choose, judge, and update loop behind every method in this series.`),I(2,`02-definitions`,`Definitions`,`Reference`,`6:14`,`Policy notation, softmax, rollouts, advantages, gradients, GRPO, and the acronyms used throughout the series.`),I(3,`03-on-policy-off-policy`,`On-policy and off-policy data`,`Data source`,`1:06`,`Why learner rollouts and teacher or stored data support different updates.`),I(4,`04-rewards-credit-assignment`,`Rewards and credit assignment`,`RL foundation`,`3:00`,`Follow a code-repair trajectory from actions and observations to advantage.`),I(5,`05-verifiable-rewards-rlvr`,`Verifiable rewards`,`RLVR`,`2:53`,`See how tests create scalable rewards—and how a model can exploit the checker.`),I(6,`06-ppo-grpo`,`PPO and GRPO`,`Policy updates`,`2:54`,`Compare PPO's learned critic with GRPO's sibling-response baseline.`),I(7,`07-distillation`,`Distillation`,`Teacher targets`,`2:42`,`Transfer a teacher's token distribution instead of copying one final answer.`),I(8,`08-opsd-sdft-sdpo`,`OPSD, SDFT, and SDPO`,`Teacher evidence`,`2:43`,`Compare trusted solutions, demonstrations, and failure feedback at one prefix.`),I(9,`09-credible-experiments`,`Credible experiments`,`Research design`,`3:32`,`Build versioned datasets, fair baselines, and claims that survive scrutiny.`),I(10,`10-technical-appendix`,`Technical appendix`,`Advanced details`,`3:12`,`Inspect GRPO normalization, compressed teacher logits, reported method results, and sample routing.`)],ge=`29 min`,R=P.fullVideoId;if(!R)throw Error(`Post-training playlist is missing its full video`);var z={captionsUrl:r(`courses/post-training/full-course.vtt`),description:`All ten lessons in one continuous video for watching, sharing, or uploading.`,duration:`29:20`,eyebrow:`Full course`,id:R,posterUrl:r(`courses/post-training/full-course-poster.webp`),title:F,videoUrl:T(R)};function B(e){let t=e+1;return t<L.length?t:null}var V=`Subject to change, lesson work in progress`;function _e(){let e=he===`draft`?`Draft`:`Published`;return(0,y.jsx)(`span`,{"aria-label":`${e}: ${V}`,className:`get-started-playlist-status app-tooltip`,"data-tooltip":V,tabIndex:0,children:e})}var H=`openpond.post-training-progress.v1`,U=Object.freeze({}),ve=1e3,W=new Set,G=null,K=null,q=!1;function J(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function ye(e){if(!e||typeof e!=`object`||Array.isArray(e))return U;let t={};for(let[n,r]of Object.entries(e)){if(!n||!r||typeof r!=`object`||Array.isArray(r))continue;let e=r,i=J(e.duration),a=J(e.currentTime),o=J(e.updatedAt);if(i===null||i<=0||a===null)continue;let s=e.completed===!0;t[n]={completed:s,currentTime:s?i:Math.min(i,Math.max(0,a)),duration:i,updatedAt:o===null?0:Math.max(0,o)}}return Object.keys(t).length>0?t:U}function be(e){if(!e)return U;try{return ye(JSON.parse(e))}catch{return U}}function Y(){if(typeof window>`u`)return U;try{return be(f.getItem(H))}catch{return U}}function X(){if(typeof window<`u`&&K!==null&&window.clearTimeout(K),K=null,typeof window<`u`&&G!==null)try{f.setItem(H,JSON.stringify(G))}catch{}}function xe(){typeof window<`u`&&K===null&&(K=window.setTimeout(X,ve))}function Se(){typeof window>`u`||q||(q=!0,window.addEventListener(`pagehide`,X),d(()=>{G=Y(),W.forEach(e=>e())}))}function Z(){return G===null&&(G=Y()),Se(),G}function Q({completed:e=!1,currentTime:t,duration:n,lessonId:r}){if(!r||!Number.isFinite(n)||n<=0||!Number.isFinite(t))return;let i=Z(),a=i[r],o=!!(a?.completed||e),s=o?n:Math.min(n,Math.max(0,t));a&&a.completed===o&&Math.abs(a.currentTime-s)<.25&&Math.abs(a.duration-n)<.25||(G={...i,[r]:{completed:o,currentTime:s,duration:n,updatedAt:Date.now()}},xe(),W.forEach(e=>e()))}function Ce(e){return!e||e.completed||e.currentTime<1?0:e.currentTime<e.duration-2?e.currentTime:0}var $=F,we=[2,1,0];function Te({activeLessonIndex:e,fullCourseSelected:t=!1,autoplay:n=!0,open:r,onClose:i,onOpen:a,onSelectLesson:o,playRequestId:s=0}){let c=(0,v.useRef)(null),l=(0,v.useRef)(null),u=L[e]??L[0],d=t?z:u;(0,v.useEffect)(()=>{if(!r)return;let e=c.current;if(!e)return;let t=!1;l.current=null,e.load();let n=()=>{if(t)return;let n=Ce(Z()[d.id]);n>0&&(e.currentTime=n),s>0&&e.play().catch(()=>void 0)};return e.readyState>=HTMLMediaElement.HAVE_METADATA?n():e.addEventListener(`loadedmetadata`,n,{once:!0}),()=>{t=!0,e.removeEventListener(`loadedmetadata`,n),Number.isFinite(e.duration)&&e.duration>0&&e.currentTime>0&&Q({completed:e.ended,currentTime:e.currentTime,duration:e.duration,lessonId:d.id})}},[d.id,r,s]);function f(e,t=!1){!Number.isFinite(e.duration)||e.duration<=0||Q({completed:t,currentTime:t?e.duration:e.currentTime,duration:e.duration,lessonId:d.id})}function p(e){if(!Number.isFinite(e.duration)||e.duration<=0)return;let t=Math.min(99,Math.floor(e.currentTime/e.duration*100)),n=l.current;(n?.lessonId!==d.id||n.percent!==t)&&(l.current={lessonId:d.id,percent:t},f(e))}function h(e){f(e,!0),n&&!t&&g()}function g(){let t=B(e);t!==null&&o(t)}return(0,y.jsxs)(`section`,{className:`get-started-series`,"aria-label":$,children:[(0,y.jsxs)(`article`,{className:`get-started-playlist-card`,"aria-labelledby":`post-training-series-title`,children:[(0,y.jsx)(`button`,{"aria-haspopup":`dialog`,"aria-label":`Open ${$} playlist`,className:`get-started-playlist-open`,onClick:a,type:`button`}),(0,y.jsxs)(`div`,{className:`get-started-playlist-stack`,"aria-hidden":`true`,children:[we.map((e,t)=>{let n=L[e];return(0,y.jsx)(`div`,{className:`get-started-playlist-poster layer-${t+1}`,children:(0,y.jsx)(`img`,{alt:``,decoding:`async`,src:n.posterUrl})},n.id)}),(0,y.jsx)(`span`,{className:`get-started-course-play-icon`,children:(0,y.jsx)(m,{fill:`currentColor`,size:19})}),(0,y.jsxs)(`span`,{className:`get-started-playlist-count`,children:[L.length,` lessons`]})]}),(0,y.jsxs)(`div`,{className:`get-started-playlist-copy`,children:[(0,y.jsxs)(`div`,{className:`get-started-playlist-title`,children:[(0,y.jsx)(`h1`,{id:`post-training-series-title`,children:$}),(0,y.jsx)(_e,{})]}),(0,y.jsxs)(`div`,{className:`get-started-course-meta`,children:[(0,y.jsx)(`span`,{children:`Learning series`}),(0,y.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,y.jsx)(`span`,{children:ge})]}),(0,y.jsx)(`p`,{children:`Rewards, GRPO, RLVR, distillation, experiments, and a technical appendix.`})]})]}),r?(0,y.jsx)(Ee,{activeLessonIndex:e,autoplay:n,fullCourseSelected:t,onClose:i,onEnded:h,onPause:f,onSelectLesson:o,onTimeUpdate:p,videoRef:c}):null]})}function Ee({activeLessonIndex:e,autoplay:t,fullCourseSelected:n,onClose:r,onEnded:i,onPause:a,onSelectLesson:o,onTimeUpdate:s,videoRef:c}){let l=L[e]??L[0],u=B(e),d=n?z:l;return(0,y.jsx)(b,{autoAdvance:t&&!n,contained:!0,inertExclusionSelector:`.get-started-learning-panel`,navigation:n?void 0:{currentIndex:e,onNext:u===null?void 0:()=>o(u),onPrevious:e>0?()=>o(e-1):void 0,total:L.length},onClose:r,onEnded:i,onPause:a,onTimeUpdate:s,video:d,videoRef:c})}var De={captionsUrl:t,description:`See how Profile Agents combine chat, direct actions, shared runtime surfaces, and Evals.`,duration:`1:16`,eyebrow:`Agent overview`,id:`openpond-agent-overview`,posterUrl:c,title:`What is an OpenPond Agent?`,videoUrl:E};function Oe(e={}){let[t,n]=(0,v.useState)(null),[r,i]=(0,v.useState)(null),a=e.makeAgentTutorial===void 0?t:e.makeAgentTutorial,o=e.postTrainingCourse===void 0?r:e.postTrainingCourse,s=!!(o||a);function c(){e.onOpenMakeAgentTutorial?e.onOpenMakeAgentTutorial():(i(null),n({autoplay:!0,playRequestId:0,videoId:`create`}))}function l(){e.onCloseMakeAgentTutorial?e.onCloseMakeAgentTutorial():n(null)}function u(t){e.onSelectMakeAgentTutorialVideo?e.onSelectMakeAgentTutorialVideo(t):n(e=>e&&{...e,playRequestId:e.playRequestId+1,videoId:t})}function d(){e.onOpenPostTrainingCourse?e.onOpenPostTrainingCourse():(n(null),i({autoplay:!0,fullCourseSelected:!1,lessonIndex:0,playRequestId:0}))}function f(){e.onClosePostTrainingCourse?e.onClosePostTrainingCourse():i(null)}function p(t){e.onSelectPostTrainingLesson?e.onSelectPostTrainingLesson(t):i(e=>e&&{...e,fullCourseSelected:!1,lessonIndex:t,playRequestId:e.playRequestId+1})}return(0,y.jsx)(`section`,{className:`get-started-view ${s?`course-player-open`:``}`,"aria-label":`Walkthroughs`,children:(0,y.jsxs)(`div`,{className:`get-started-shell`,children:[(0,y.jsxs)(`section`,{className:`get-started-start-here`,"aria-labelledby":`get-started-start-here-title`,children:[(0,y.jsx)(`header`,{className:`get-started-section-heading`,children:(0,y.jsx)(`h2`,{id:`get-started-start-here-title`,children:`Start here`})}),(0,y.jsx)(`div`,{className:`get-started-learning-grid`,children:(0,y.jsx)(te,{titleElement:`h1`,video:De})})]}),(0,y.jsxs)(`section`,{className:`get-started-walkthroughs`,"aria-labelledby":`get-started-walkthroughs-title`,children:[(0,y.jsx)(`header`,{className:`get-started-section-heading`,children:(0,y.jsx)(`h2`,{id:`get-started-walkthroughs-title`,children:`Walkthroughs`})}),(0,y.jsx)(`div`,{className:`get-started-learning-grid`,children:(0,y.jsx)(pe,{activeVideoId:a?.videoId??`create`,autoplay:a?.autoplay??!0,onClose:l,onOpen:c,onSelectVideo:u,open:!!a,playRequestId:a?.playRequestId??0})})]}),(0,y.jsxs)(`section`,{className:`get-started-learn`,"aria-labelledby":`get-started-learn-title`,children:[(0,y.jsx)(`header`,{className:`get-started-section-heading`,children:(0,y.jsx)(`h2`,{id:`get-started-learn-title`,children:`Learn deeper`})}),(0,y.jsx)(`div`,{className:`get-started-learning-grid`,children:(0,y.jsx)(Te,{activeLessonIndex:o?.lessonIndex??0,autoplay:o?.autoplay??!0,fullCourseSelected:o?.fullCourseSelected??!1,open:!!o,onClose:f,onOpen:d,onSelectLesson:p,playRequestId:o?.playRequestId??0})})]})]})})}export{Oe as GetStartedView};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n,s as r}from"./index-LXNhSUEL.js";import{n as i}from"./api-client-Dgz-fOMl.js";import"./icons-CZxmQtZs.js";import{t as a}from"./external-link-CVXsNeO3.js";import{t as o}from"./loader-circle-JFgFNsP5.js";import{t as s}from"./plus-Ddp1vXnw.js";import{t as c}from"./x-B-_zJVOZ.js";import{t as l}from"./NativeSetupTerminal-fmG2c65K.js";import{t as u}from"./AppDialog-BvskhHE9.js";import{Bt as d,bn as f,dn as p,t as m}from"./App-DmEA-Lia.js";/* empty css */import{t as h}from"./useAccountSettings-4_XfwJQi.js";var g=e(t(),1),_=n(),v={codex:{name:`Codex`,installUrl:`https://developers.openai.com/codex/cli`},"claude-code":{name:`Claude`,installUrl:`https://code.claude.com/docs/en/setup`}};function y({providerId:e,connection:t,config:n,onProviders:r}){let c=v[e],u=m(),d=(0,g.useRef)(u.active);d.current=u.active;let[h,y]=(0,g.useState)(null),[b,x]=(0,g.useState)(!0),[S,C]=(0,g.useState)(null),[w,T]=(0,g.useState)(null),E=(0,g.useRef)(null),D=(0,g.useRef)(!1),O=(0,g.useRef)(r);O.current=r,(0,g.useEffect)(()=>(D.current=!0,()=>{D.current=!1}),[]);let k=(0,g.useCallback)(async()=>{E.current?.abort();let n=new AbortController;E.current=n;let r=setTimeout(()=>n.abort(Error(`Connection check timed out. Try again.`)),45e3);x(!0),C(null),y(null);try{let r=await i(t,`/v1/providers/${e}/native-setup`,{method:`POST`,body:JSON.stringify({action:`check`}),signal:n.signal});if(E.current!==n||n.signal.aborted)return;y(r),C(r.error),O.current(r.settings)}catch(e){E.current===n&&C(e instanceof Error?e.message:String(e))}finally{clearTimeout(r),E.current===n&&(E.current=null,x(!1))}},[t.serverUrl,t.token,e]);(0,g.useEffect)(()=>{!w&&!(e===`claude-code`&&d.current)&&k();function t(){!E.current&&!w&&!(e===`claude-code`&&d.current)&&k()}return window.addEventListener(`focus`,t),()=>{window.removeEventListener(`focus`,t);let e=E.current;E.current=null,e?.abort()}},[k,n?.binaryPath,n?.sourceHome,w,e]);async function A(){if(!b){x(!0),C(null);try{let n=await f.saveProviderSettings(t,{providers:{[e]:{enabled:!0}}});if(!D.current)return;O.current(n),await k()}catch(e){C(e instanceof Error?e.message:String(e)),x(!1)}}}async function j(){if(b)return;let r=new AbortController;E.current=r;let a=setTimeout(()=>r.abort(),1e4);x(!0),C(null);try{let a=await i(t,`/v1/providers/${e}/native-setup`,{method:`POST`,body:JSON.stringify({action:`login`}),signal:r.signal});if(E.current!==r||r.signal.aborted)return;if(!n?.enabled){let n=await f.saveProviderSettings(t,{providers:{[e]:{enabled:!0}}});if(E.current!==r||r.signal.aborted)return;O.current(n)}E.current===r&&!r.signal.aborted&&(e===`claude-code`?u.start(a):T(a))}catch(e){E.current===r&&C(e instanceof Error?e.message:String(e))}finally{clearTimeout(a),E.current===r&&(E.current=null,x(!1))}}(0,g.useEffect)(()=>{if(e!==`claude-code`||!u.result)return;let t=u.result.settings.providers[e];(t?.binaryPath||null)===(n?.binaryPath||null)&&(t?.sourceHome||null)===(n?.sourceHome||null)&&(x(!1),y(u.result),C(u.result.status===`unavailable`?u.result.error:null))},[u.result,e,n?.binaryPath,n?.sourceHome]);let M=!S&&h?.status===`ready`;return(0,_.jsxs)(`li`,{className:`getting-started-card`,children:[(0,_.jsx)(`img`,{className:`getting-started-provider-icon`,src:`/agent-sources/${e}.svg`,alt:``}),(0,_.jsx)(`h3`,{children:c.name}),(0,_.jsx)(`div`,{className:`getting-started-card-status`,role:`status`,"aria-live":`polite`,children:e===`claude-code`&&u.active?(0,_.jsx)(`button`,{type:`button`,onClick:u.resume,children:`Continue sign-in`}):b?(0,_.jsx)(o,{className:`settings-spin`,size:20,"aria-label":`Checking ${c.name}`}):M&&n?.enabled?(0,_.jsxs)(`span`,{children:[(0,_.jsx)(p,{size:16}),` Connected`]}):M?(0,_.jsxs)(`button`,{type:`button`,"aria-label":`Connect ${c.name}`,onClick:()=>void A(),children:[(0,_.jsx)(s,{size:14}),` Connect`]}):h?.status===`missing`?(0,_.jsxs)(`a`,{href:c.installUrl,target:`_blank`,rel:`noreferrer`,children:[`Install `,c.name,` `,(0,_.jsx)(a,{size:12})]}):h?.status===`needs_login`?(0,_.jsx)(`button`,{type:`button`,className:`getting-started-login`,"aria-label":`Log in to ${c.name}`,title:S??void 0,onClick:()=>void j(),children:`Log in`}):(0,_.jsx)(`button`,{type:`button`,"aria-label":`Retry ${c.name} connection`,title:S??`Check connection again`,onClick:()=>void k(),children:`Retry`})}),w?(0,_.jsx)(l,{modal:!0,connection:t,command:w.command,displayCommand:w.displayCommand,onComplete:()=>T(null),onClose:()=>T(null)}):null]})}var b=`https://www.openpond.ai/api-keys`;function x({connection:e,payload:t,onPayload:n,onClose:i}){let[o,s]=(0,g.useState)(!1),[l,f]=(0,g.useState)(``),[m,v]=(0,g.useState)(null),x=(0,g.useRef)(t);x.current=t;let S=h({connection:e,onPayload:n,onError:v});function C(e){n({...x.current,providers:e})}let w=t.account.state===`signed_in`;async function T(e){if(e.preventDefault(),l.trim()&&!S.saving)try{await S.saveAccount({apiKey:l,baseUrl:`https://www.openpond.ai`,apiBaseUrl:`https://api.openpond.ai`,environment:`production`}),f(``),s(!1)}catch{}}async function E(){v(null);try{let e=window.openpond?.browser;if(e?.openExternal){let t=await e.openExternal({conversationId:`openpond-get-started`,url:b});if(!t.ok)throw Error(t.error??`Could not open API keys in your browser.`)}else window.open(b,`_blank`,`noopener,noreferrer`)}catch(e){v(e instanceof Error?e.message:String(e))}}return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(u,{inertExclusionSelector:`.native-login-session`,ariaLabel:`Get started with OpenPond`,backdropClassName:`git-dialog-backdrop`,className:`git-dialog getting-started-dialog`,onClose:i,children:[(0,_.jsx)(`button`,{type:`button`,className:`git-dialog-close`,"aria-label":`Close get started`,title:`Close`,onClick:i,children:(0,_.jsx)(c,{size:16})}),(0,_.jsx)(`header`,{className:`getting-started-header`,children:(0,_.jsx)(`h2`,{children:`Get started with OpenPond`})}),(0,_.jsxs)(`ol`,{className:`getting-started-cards`,children:[(0,_.jsxs)(`li`,{className:`getting-started-card`,children:[(0,_.jsx)(`img`,{className:`getting-started-provider-icon`,src:r,alt:``}),(0,_.jsx)(`h3`,{children:`OpenPond account`}),(0,_.jsx)(`div`,{className:`getting-started-card-status`,role:`status`,children:w?(0,_.jsxs)(`span`,{children:[(0,_.jsx)(p,{size:16}),` Connected`]}):(0,_.jsx)(`a`,{href:b,onClick:e=>{e.preventDefault(),v(null),s(!0)},children:`Connect account`})})]}),(0,_.jsx)(y,{providerId:`codex`,connection:e,config:t.providers.providers.codex,onProviders:C}),(0,_.jsx)(y,{providerId:`claude-code`,connection:e,config:t.providers.providers[`claude-code`],onProviders:C})]})]}),o?(0,_.jsxs)(u,{ariaLabel:`Connect OpenPond account`,backdropClassName:`git-dialog-backdrop getting-started-account-backdrop`,className:`git-dialog getting-started-account-dialog`,onClose:()=>s(!1),dismissDisabled:S.saving,children:[(0,_.jsx)(`button`,{type:`button`,className:`git-dialog-close`,"aria-label":`Close account connection`,disabled:S.saving,onClick:()=>s(!1),children:(0,_.jsx)(c,{size:16})}),(0,_.jsx)(`h2`,{children:`Connect OpenPond`}),(0,_.jsxs)(`a`,{href:b,target:`_blank`,rel:`noreferrer`,className:`getting-started-key-link`,onClick:e=>{e.preventDefault(),E()},children:[`Create an API key `,(0,_.jsx)(a,{size:12})]}),(0,_.jsxs)(`form`,{onSubmit:e=>void T(e),children:[(0,_.jsxs)(`label`,{className:`git-dialog-field`,children:[(0,_.jsx)(`span`,{children:`OpenPond API key`}),(0,_.jsx)(`input`,{"data-autofocus":!0,type:`password`,autoComplete:`off`,spellCheck:!1,placeholder:`opk_…`,value:l,disabled:S.saving,onChange:e=>{f(e.target.value),v(null)}})]}),m?(0,_.jsx)(d,{error:m}):null,(0,_.jsx)(`button`,{className:`git-dialog-primary`,type:`submit`,disabled:S.saving||!l.trim(),children:S.saving?`Connecting…`:`Connect account`})]})]}):null]})}export{x as GettingStartedDialog};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n,s as r}from"./index-B6XX_0h3.js";import{n as i}from"./api-client-DJRVOFzS.js";import"./icons-Bk2b68aC.js";import{t as a}from"./external-link-H1629UU6.js";import{t as o}from"./loader-circle-y-SSPwpk.js";import{t as s}from"./plus-DFFWjhPw.js";import{t as c}from"./x-Jx2jlP9u.js";import{t as l}from"./NativeSetupTerminal-D4JnbpyD.js";import{t as u}from"./AppDialog-CxjDHVk9.js";import{Gt as d,Tn as f,gn as p,t as m}from"./App-CCuh99JW.js";/* empty css */import{t as h}from"./useAccountSettings-Dr9h4Qz_.js";var g=e(t(),1),_=n(),v={codex:{name:`Codex`,installUrl:`https://developers.openai.com/codex/cli`},"claude-code":{name:`Claude`,installUrl:`https://code.claude.com/docs/en/setup`}};function y({providerId:e,connection:t,config:n,onProviders:r}){let c=v[e],u=m(),d=(0,g.useRef)(u.active);d.current=u.active;let[h,y]=(0,g.useState)(null),[b,x]=(0,g.useState)(!0),[S,C]=(0,g.useState)(null),[w,T]=(0,g.useState)(null),E=(0,g.useRef)(null),D=(0,g.useRef)(!1),O=(0,g.useRef)(r);O.current=r,(0,g.useEffect)(()=>(D.current=!0,()=>{D.current=!1}),[]);let k=(0,g.useCallback)(async()=>{E.current?.abort();let n=new AbortController;E.current=n;let r=setTimeout(()=>n.abort(Error(`Connection check timed out. Try again.`)),45e3);x(!0),C(null),y(null);try{let r=await i(t,`/v1/providers/${e}/native-setup`,{method:`POST`,body:JSON.stringify({action:`check`}),signal:n.signal});if(E.current!==n||n.signal.aborted)return;y(r),C(r.error),O.current(r.settings)}catch(e){E.current===n&&C(e instanceof Error?e.message:String(e))}finally{clearTimeout(r),E.current===n&&(E.current=null,x(!1))}},[t.serverUrl,t.token,e]);(0,g.useEffect)(()=>{!w&&!(e===`claude-code`&&d.current)&&k();function t(){!E.current&&!w&&!(e===`claude-code`&&d.current)&&k()}return window.addEventListener(`focus`,t),()=>{window.removeEventListener(`focus`,t);let e=E.current;E.current=null,e?.abort()}},[k,n?.binaryPath,n?.sourceHome,w,e]);async function A(){if(!b){x(!0),C(null);try{let n=await f.saveProviderSettings(t,{providers:{[e]:{enabled:!0}}});if(!D.current)return;O.current(n),await k()}catch(e){C(e instanceof Error?e.message:String(e)),x(!1)}}}async function j(){if(b)return;let r=new AbortController;E.current=r;let a=setTimeout(()=>r.abort(),1e4);x(!0),C(null);try{let a=await i(t,`/v1/providers/${e}/native-setup`,{method:`POST`,body:JSON.stringify({action:`login`}),signal:r.signal});if(E.current!==r||r.signal.aborted)return;if(!n?.enabled){let n=await f.saveProviderSettings(t,{providers:{[e]:{enabled:!0}}});if(E.current!==r||r.signal.aborted)return;O.current(n)}E.current===r&&!r.signal.aborted&&(e===`claude-code`?u.start(a):T(a))}catch(e){E.current===r&&C(e instanceof Error?e.message:String(e))}finally{clearTimeout(a),E.current===r&&(E.current=null,x(!1))}}(0,g.useEffect)(()=>{if(e!==`claude-code`||!u.result)return;let t=u.result.settings.providers[e];(t?.binaryPath||null)===(n?.binaryPath||null)&&(t?.sourceHome||null)===(n?.sourceHome||null)&&(x(!1),y(u.result),C(u.result.status===`unavailable`?u.result.error:null))},[u.result,e,n?.binaryPath,n?.sourceHome]);let M=!S&&h?.status===`ready`;return(0,_.jsxs)(`li`,{className:`getting-started-card`,children:[(0,_.jsx)(`img`,{className:`getting-started-provider-icon`,src:`/agent-sources/${e}.svg`,alt:``}),(0,_.jsx)(`h3`,{children:c.name}),(0,_.jsx)(`div`,{className:`getting-started-card-status`,role:`status`,"aria-live":`polite`,children:e===`claude-code`&&u.active?(0,_.jsx)(`button`,{type:`button`,onClick:u.resume,children:`Continue sign-in`}):b?(0,_.jsx)(o,{className:`settings-spin`,size:20,"aria-label":`Checking ${c.name}`}):M&&n?.enabled?(0,_.jsxs)(`span`,{children:[(0,_.jsx)(p,{size:16}),` Connected`]}):M?(0,_.jsxs)(`button`,{type:`button`,"aria-label":`Connect ${c.name}`,onClick:()=>void A(),children:[(0,_.jsx)(s,{size:14}),` Connect`]}):h?.status===`missing`?(0,_.jsxs)(`a`,{href:c.installUrl,target:`_blank`,rel:`noreferrer`,children:[`Install `,c.name,` `,(0,_.jsx)(a,{size:12})]}):h?.status===`needs_login`?(0,_.jsx)(`button`,{type:`button`,className:`getting-started-login`,"aria-label":`Log in to ${c.name}`,title:S??void 0,onClick:()=>void j(),children:`Log in`}):(0,_.jsx)(`button`,{type:`button`,"aria-label":`Retry ${c.name} connection`,title:S??`Check connection again`,onClick:()=>void k(),children:`Retry`})}),w?(0,_.jsx)(l,{modal:!0,connection:t,command:w.command,displayCommand:w.displayCommand,onComplete:()=>T(null),onClose:()=>T(null)}):null]})}var b=`https://www.openpond.ai/api-keys`;function x({connection:e,payload:t,onPayload:n,onClose:i}){let[o,s]=(0,g.useState)(!1),[l,f]=(0,g.useState)(``),[m,v]=(0,g.useState)(null),x=(0,g.useRef)(t);x.current=t;let S=h({connection:e,onPayload:n,onError:v});function C(e){n({...x.current,providers:e})}let w=t.account.state===`signed_in`;async function T(e){if(e.preventDefault(),l.trim()&&!S.saving)try{await S.saveAccount({apiKey:l,baseUrl:`https://www.openpond.ai`,apiBaseUrl:`https://api.openpond.ai`,environment:`production`}),f(``),s(!1)}catch{}}async function E(){v(null);try{let e=window.openpond?.browser;if(e?.openExternal){let t=await e.openExternal({conversationId:`openpond-get-started`,url:b});if(!t.ok)throw Error(t.error??`Could not open API keys in your browser.`)}else window.open(b,`_blank`,`noopener,noreferrer`)}catch(e){v(e instanceof Error?e.message:String(e))}}return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(u,{inertExclusionSelector:`.native-login-session`,ariaLabel:`Get started with OpenPond`,backdropClassName:`git-dialog-backdrop`,className:`git-dialog getting-started-dialog`,onClose:i,children:[(0,_.jsx)(`button`,{type:`button`,className:`git-dialog-close`,"aria-label":`Close get started`,title:`Close`,onClick:i,children:(0,_.jsx)(c,{size:16})}),(0,_.jsx)(`header`,{className:`getting-started-header`,children:(0,_.jsx)(`h2`,{children:`Get started with OpenPond`})}),(0,_.jsxs)(`ol`,{className:`getting-started-cards`,children:[(0,_.jsxs)(`li`,{className:`getting-started-card`,children:[(0,_.jsx)(`img`,{className:`getting-started-provider-icon`,src:r,alt:``}),(0,_.jsx)(`h3`,{children:`OpenPond account`}),(0,_.jsx)(`div`,{className:`getting-started-card-status`,role:`status`,children:w?(0,_.jsxs)(`span`,{children:[(0,_.jsx)(p,{size:16}),` Connected`]}):(0,_.jsx)(`a`,{href:b,onClick:e=>{e.preventDefault(),v(null),s(!0)},children:`Connect account`})})]}),(0,_.jsx)(y,{providerId:`codex`,connection:e,config:t.providers.providers.codex,onProviders:C}),(0,_.jsx)(y,{providerId:`claude-code`,connection:e,config:t.providers.providers[`claude-code`],onProviders:C})]})]}),o?(0,_.jsxs)(u,{ariaLabel:`Connect OpenPond account`,backdropClassName:`git-dialog-backdrop getting-started-account-backdrop`,className:`git-dialog getting-started-account-dialog`,onClose:()=>s(!1),dismissDisabled:S.saving,children:[(0,_.jsx)(`button`,{type:`button`,className:`git-dialog-close`,"aria-label":`Close account connection`,disabled:S.saving,onClick:()=>s(!1),children:(0,_.jsx)(c,{size:16})}),(0,_.jsx)(`h2`,{children:`Connect OpenPond`}),(0,_.jsxs)(`a`,{href:b,target:`_blank`,rel:`noreferrer`,className:`getting-started-key-link`,onClick:e=>{e.preventDefault(),E()},children:[`Create an API key `,(0,_.jsx)(a,{size:12})]}),(0,_.jsxs)(`form`,{onSubmit:e=>void T(e),children:[(0,_.jsxs)(`label`,{className:`git-dialog-field`,children:[(0,_.jsx)(`span`,{children:`OpenPond API key`}),(0,_.jsx)(`input`,{"data-autofocus":!0,type:`password`,autoComplete:`off`,spellCheck:!1,placeholder:`opk_…`,value:l,disabled:S.saving,onChange:e=>{f(e.target.value),v(null)}})]}),m?(0,_.jsx)(d,{error:m}):null,(0,_.jsx)(`button`,{className:`git-dialog-primary`,type:`submit`,disabled:S.saving||!l.trim(),children:S.saving?`Connecting…`:`Connect account`})]})]}):null]})}export{x as GettingStartedDialog};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n}from"./index-B6XX_0h3.js";import{n as r}from"./LearningBatchesPage-CJqgZNvM.js";import{It as i}from"./App-CCuh99JW.js";var a=e(t(),1),o=n();function s({api:e,policyId:t,sourceId:n,onBack:s}){let c=(0,a.useMemo)(()=>e.reviewClient(t,n),[e,t,n]),[l,u]=(0,a.useState)(null),[d,f]=(0,a.useState)(null);return(0,o.jsxs)(`section`,{"aria-label":`Hosted example review`,children:[(0,o.jsx)(`button`,{type:`button`,className:`training-button secondary`,onClick:()=>{i(s)},children:`Back to continual learning`}),(0,o.jsx)(`p`,{children:`Reviewing hosted examples. Approved tasks become eligible for this policy's next training check.`}),(0,o.jsx)(r,{client:c,selectedId:l,after:d,sourceId:n,onSelect:e=>{i(()=>u(e))},onPage:f})]})}export{s as HostedModelLearningReview};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n}from"./index-B6XX_0h3.js";import{M as r,N as i}from"./chunk-H3JZ3P5T-DolwEJXo.js";import{T as a,f as o,m as s,w as c}from"./LearningBatchesPage-CJqgZNvM.js";import{t as l}from"./api-client-DJRVOFzS.js";import{t as u}from"./AppDialog-CxjDHVk9.js";import{W as d}from"./MainPane-CQQxSDPS.js";var f=e(t(),1),p=n();function m({client:e,project:t,policy:n,onClose:m}){let[h]=(0,f.useState)(()=>n?.id??`policy-${crypto.randomUUID()}`),[g]=(0,f.useState)(()=>a(t,n)),[_,v]=(0,f.useState)(g.enabled),[y,b]=(0,f.useState)(g.scheduled),[x,S]=(0,f.useState)(!n),[C,w]=(0,f.useState)(g.humanReviewRequired),[T,E]=(0,f.useState)(n?.sources??[]),[D,O]=(0,f.useState)(n?.taskDefinition??null),[k,A]=(0,f.useState)({interval:String(g.intervalSeconds/60),minimum:String(g.minimumApprovedExamples),batch:String(g.maxBatchExamples),spend:String(g.maxIterationSpendUsd),daily:String(g.maxDailySpendUsd),cooldown:String(g.cooldownSeconds/60),retries:String(g.maxRetries),backlog:String(g.maxBacklogExamples)}),[j,M]=(0,f.useState)(!1),[N,P]=(0,f.useState)(!1),[F,I]=(0,f.useState)(null),[L,R]=(0,f.useState)(),[z,B]=(0,f.useState)(null),[V,H]=(0,f.useState)(null),U=(0,f.useRef)(null),W=(0,f.useRef)(!1);(0,f.useEffect)(()=>{let t=!1;return e.sources(L).then(e=>{t||(B({after:L,data:e}),H(null))},e=>{t||H(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e,L]);let G=z&&z.after===L?z.data:null,K=x?t.trainingSetup.rewardBindingRef:n?.rewardBinding;function q(e){let t=T.some(t=>t.id===e.id);E(t?T.filter(t=>t.id!==e.id):[...T,r(e)]),O(t&&T.length===1?null:D??e.taskDefinition),M(!0)}async function J(){if(W.current)return!1;W.current=!0,P(!0),I(null);try{if(!U.current){if(!D||!T.length||!K)throw Error(`Select task sources and a Model Reward before saving.`);let e=c({project:t,previous:n,policyId:h,applyModelConfiguration:x,sources:T,taskDefinition:D,settings:{enabled:_,scheduled:y,humanReviewRequired:C,intervalSeconds:Number(k.interval)*60,minimumApprovedExamples:Number(k.minimum),maxBatchExamples:Number(k.batch),maxIterationSpendUsd:Number(k.spend),maxDailySpendUsd:Number(k.daily),cooldownSeconds:Number(k.cooldown)*60,maxRetries:Number(k.retries),maxBacklogExamples:Number(k.backlog)}});U.current={action:`publish`,kind:`policy`,operationId:crypto.randomUUID(),expectedRevision:n?.revision??0,content:e}}return await e.command(U.current),U.current=null,M(!1),!0}catch(e){return e instanceof l&&e.status>=400&&e.status<500&&![408,429].includes(e.status)&&(U.current=null),I(e instanceof Error?e.message:`Unable to save learning settings.`),!1}finally{W.current=!1,P(!1)}}let Y=d({name:`learning settings`,dirty:j,busy:N,save:J});return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(u,{ariaLabel:`Continual learning settings`,className:`labs-rename-dialog learning-workspace hosted-learning-settings`,backdropClassName:`labs-rename-backdrop`,dismissDisabled:N,onClose:()=>{Y.requestLeave(m)},children:[(0,p.jsx)(`h2`,{children:`Continual learning settings`}),(0,p.jsxs)(`p`,{children:[`Train `,t.name,` from approved tasks. Acceptance and serving remain separate decisions.`]}),(0,p.jsx)(o,{error:F??V}),(0,p.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),await J()&&(Y.allowNextNavigation(),m())},children:[(0,p.jsxs)(`fieldset`,{disabled:N||!!U.current,onChange:()=>M(!0),children:[(0,p.jsxs)(`label`,{children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:_,onChange:e=>v(e.target.checked)}),` Enable learning`]}),(0,p.jsxs)(`label`,{children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:C,disabled:C,onChange:()=>w(!0)}),` Human review required`]}),(0,p.jsx)(`p`,{children:`New policies require human review. Qualified automatic admission cannot be configured here yet.`}),n?(0,p.jsxs)(`label`,{children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:x,onChange:e=>S(e.target.checked)}),` Use the Model’s current training configuration`]}):null,(0,p.jsxs)(`fieldset`,{children:[(0,p.jsx)(`legend`,{children:`Task sources`}),!G&&!V?(0,p.jsx)(`p`,{children:`Loading sources…`}):null,G?.sources.items.map(e=>{let t=G.definitions.find(t=>i(r(t),e.taskDefinition)),n=!!(K&&t&&i(K,t.rewardBinding)&&(!D||i(D,e.taskDefinition))),a=T.find(t=>t.id===e.id);return(0,p.jsxs)(`label`,{children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:!!a,disabled:!a&&(!e.enabled||!n),onChange:()=>q(e)}),` `,e.name,a&&a.revision!==e.revision?(0,p.jsxs)(`small`,{children:[`Using saved revision `,a.revision,`; clear and reselect to update.`]}):n?null:(0,p.jsx)(`small`,{children:`Different task format or Reward.`})]},e.id)}),(0,p.jsxs)(`p`,{children:[T.length,` sources selected. `,(0,p.jsx)(`button`,{type:`button`,onClick:()=>{E([]),O(null),M(!0)},children:`Clear selection`})]}),(0,p.jsx)(s,{after:L,next:G?.sources.nextCursor,onPage:e=>R(e??void 0)})]}),(0,p.jsxs)(`label`,{children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:y,onChange:e=>b(e.target.checked)}),` Schedule training`]}),Object.keys(k).filter(e=>e!==`interval`||y).map(e=>(0,p.jsxs)(`label`,{children:[{interval:`Check interval (minutes)`,minimum:`Minimum approved examples`,batch:`Maximum examples per batch`,spend:`Maximum spend per iteration ($)`,daily:`Maximum daily spend ($)`,cooldown:`Cooldown (minutes)`,retries:`Automatic retries`,backlog:`Maximum backlog`}[e],(0,p.jsx)(`input`,{type:`number`,value:k[e],min:`0`,step:e===`spend`||e===`daily`?`0.01`:`1`,onChange:t=>A(n=>({...n,[e]:t.target.value}))})]},e))]}),(0,p.jsxs)(`div`,{className:`model-build-actions`,children:[(0,p.jsx)(`button`,{type:`submit`,className:`training-button`,disabled:N,children:N?`Saving…`:U.current?`Retry save`:`Save settings`}),(0,p.jsx)(`button`,{type:`button`,className:`training-button secondary`,disabled:N,onClick:()=>{Y.requestLeave(m)},children:`Cancel`})]})]})]}),Y.dialog]})}export{m as HostedModelLearningSettings};
@@ -1,15 +1,15 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n}from"./index-LXNhSUEL.js";import{m as r,p as i,r as a,v as o}from"./schemas-C9IwV7NS.js";import{i as s,n as c}from"./api-client-Dgz-fOMl.js";import"./icons-CZxmQtZs.js";import{t as l}from"./maximize-2-DXZCQO0b.js";import{Bt as u,F as d,M as f,N as p,j as m,on as ee,zt as h}from"./App-DmEA-Lia.js";import{B as g,z as _}from"./MainPane-WOeodByM.js";var v=e(t(),1);a([`page`,`node`]);var y=r({x:i().finite().nonnegative(),y:i().finite().nonnegative(),width:i().finite().positive().max(16e3),height:i().finite().positive().max(16e3)}).refine(e=>e.width*e.height<=4e7,`The snapshot is too large.`),b=r({rect:y,selector:o().max(500),html:o().max(6291456).optional(),source:o().max(64e3).optional()});function x(e,t){let n=!1,r=null,i=null;function a(e){return`${e.tagName.toLowerCase()}${e.id?`#${e.id}`:``}${[...e.classList].slice(0,3).map(e=>`.${e}`).join(``)}`.slice(0,500)}function o(e,t,n){let r=e instanceof SVGElement&&e.tagName.toLowerCase()!==`svg`?e.ownerSVGElement:null;for(;r?.ownerSVGElement;)r=r.ownerSVGElement;let i=r??e,a=i.cloneNode(!0),o=[i,...i.querySelectorAll(`*`)],s=[a,...a.querySelectorAll(`*`)];for(let e=0;e<o.length;e++){let t=o[e],n=s[e];if([`SCRIPT`,`IFRAME`,`OBJECT`,`EMBED`,`LINK`,`META`].includes(n.tagName)){n.remove();continue}let r=[...n.attributes];for(let e of r)/^on/i.test(e.name)&&n.removeAttribute(e.name);if(n instanceof HTMLElement||n instanceof SVGElement){let e=getComputedStyle(t);n.style.cssText=[...e].map(t=>`${t}:${e.getPropertyValue(t).replace(/url\((["']?)(.*?)\1\)/g,(e,t,n)=>{let r=n.indexOf(`#`);return r>0&&[document.baseURI.split(`#`)[0],document.URL.split(`#`)[0]].includes(n.slice(0,r))?`url("#${n.slice(r+1)}")`:e})};`).join(``),n.style.setProperty(`animation`,`none`),n.style.setProperty(`transition`,`none`)}if(t instanceof HTMLInputElement&&(n.setAttribute(`value`,t.value),t.checked?n.setAttribute(`checked`,``):n.removeAttribute(`checked`)),t instanceof HTMLTextAreaElement&&(n.textContent=t.value),t instanceof HTMLOptionElement&&(t.selected?n.setAttribute(`selected`,``):n.removeAttribute(`selected`)),t instanceof HTMLCanvasElement){let e=document.createElement(`img`);e.src=t.toDataURL(`image/png`),e.style.cssText=n.style.cssText,t===i?a=e:n.replaceWith(e)}if(t.shadowRoot)throw Error(`This element has a shadow root. Capture it from a native browser tab.`)}a.style.setProperty(`margin`,`0`),a.style.setProperty(`position`,`relative`),a.style.setProperty(`inset`,`auto`),a.style.setProperty(`width`,`${t}px`),a.style.setProperty(`max-width`,`none`);let c=document.createElement(`div`);c.style.width=`${t}px`,c.style.height=`${n}px`;for(let t=e;t;t=t.parentElement){let e=getComputedStyle(t).backgroundColor;if(e&&e!==`rgba(0, 0, 0, 0)`&&e!==`transparent`){c.style.backgroundColor=e;break}}if(r){let n=r.getBoundingClientRect(),i=e.getBoundingClientRect();Object.assign(c.style,{position:`relative`,overflow:`hidden`,width:`${t}px`,height:`${Math.ceil(i.height)}px`}),Object.assign(a.style,{position:`absolute`,left:`${n.left-i.left}px`,top:`${n.top-i.top}px`,width:`${n.width}px`,height:`${n.height}px`})}return c.append(a),c.outerHTML}function s(n,r){try{let i=n.getBoundingClientRect(),s=r?Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth):Math.ceil(i.width),c=r?Math.max(document.documentElement.scrollHeight,document.body.scrollHeight):Math.ceil(i.height);if(!s||!c)throw Error(`The selected element has no visible area.`);e({capture:{rect:{x:r?0:Math.max(0,i.left+scrollX),y:r?0:Math.max(0,i.top+scrollY),width:s,height:c},selector:r?`Full page`:a(n),source:n.outerHTML.slice(0,64e3),...t?{html:o(n,s,c)}:{}}})}catch(t){e({error:t instanceof Error?t.message:String(t)})}}function c(){n=!1,r=null,i?.remove(),i=null,document.removeEventListener(`pointermove`,l,!0),document.removeEventListener(`click`,u,!0),document.removeEventListener(`keydown`,f,!0),window.removeEventListener(`click`,u,!0);for(let e of[`pointerdown`,`pointerup`,`mousedown`,`mouseup`])window.removeEventListener(e,d,!0)}function l(e){if(!n||(r=e.composedPath().find(e=>e instanceof Element&&e!==i)??null,!r||!i))return;let t=r.getBoundingClientRect();Object.assign(i.style,{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`}),i.textContent=`${a(r)} · ${Math.ceil(t.width)} × ${Math.ceil(t.height)}`}function u(e){if(!n||!e.isTrusted)return;e.preventDefault(),e.stopImmediatePropagation();let t=e.composedPath().find(e=>e instanceof Element&&e!==i);c(),t&&s(t,!1)}function d(e){n&&(e.preventDefault(),e.stopImmediatePropagation())}function f(t){t.key===`Escape`&&t.isTrusted&&(t.preventDefault(),t.stopImmediatePropagation(),c(),e({canceled:!0}))}return{page(){c(),s(document.body,!0)},start(){c(),n=!0,i=document.createElement(`div`),i.setAttribute(`data-openpond-snapshot-overlay`,``),i.style.cssText=`position:fixed;pointer-events:none;z-index:2147483647;box-sizing:border-box;border:2px solid var(--blue,Highlight);background:transparent;color:var(--text,CanvasText);font:12px/1.3 monospace;text-shadow:0 0 3px var(--bg,Canvas);overflow:visible;`,document.documentElement.append(i),document.addEventListener(`pointermove`,l,!0),window.addEventListener(`click`,u,!0);for(let e of[`pointerdown`,`pointerup`,`mousedown`,`mouseup`])window.addEventListener(e,d,!0);document.addEventListener(`keydown`,f,!0)},cancel(){c(),e({canceled:!0})},dispose:c}}function S(){return`(${x.toString()})`}var C=`default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; connect-src 'none'; frame-src 'none'; child-src 'none'; worker-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'`,w=e=>JSON.stringify(e).replace(/</g,`\\u003c`).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`),T=e=>e.replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`);function E(e,t,n=f){let r=`(() => {
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n}from"./index-B6XX_0h3.js";import{m as r,p as i,r as a,v as o}from"./schemas-Brv9Vmnk.js";import{i as s,n as c}from"./api-client-DJRVOFzS.js";import"./icons-Bk2b68aC.js";import{t as l}from"./maximize-2-CByk9-zN.js";import{F as u,Gt as d,M as f,N as p,Wt as m,dn as h,j as g}from"./App-CCuh99JW.js";import{Ft as _,Pt as v}from"./MainPane-CQQxSDPS.js";var y=e(t(),1);a([`page`,`node`]);var b=r({x:i().finite().nonnegative(),y:i().finite().nonnegative(),width:i().finite().positive().max(16e3),height:i().finite().positive().max(16e3)}).refine(e=>e.width*e.height<=4e7,`The snapshot is too large.`),x=r({rect:b,selector:o().max(500),html:o().max(6291456).optional(),source:o().max(64e3).optional()});function S(e,t){let n=!1,r=null,i=null;function a(e){return`${e.tagName.toLowerCase()}${e.id?`#${e.id}`:``}${[...e.classList].slice(0,3).map(e=>`.${e}`).join(``)}`.slice(0,500)}function o(e,t,n){let r=e instanceof SVGElement&&e.tagName.toLowerCase()!==`svg`?e.ownerSVGElement:null;for(;r?.ownerSVGElement;)r=r.ownerSVGElement;let i=r??e,a=i.cloneNode(!0),o=[i,...i.querySelectorAll(`*`)],s=[a,...a.querySelectorAll(`*`)];for(let e=0;e<o.length;e++){let t=o[e],n=s[e];if([`SCRIPT`,`IFRAME`,`OBJECT`,`EMBED`,`LINK`,`META`].includes(n.tagName)){n.remove();continue}let r=[...n.attributes];for(let e of r)/^on/i.test(e.name)&&n.removeAttribute(e.name);if(n instanceof HTMLElement||n instanceof SVGElement){let e=getComputedStyle(t);n.style.cssText=[...e].map(t=>`${t}:${e.getPropertyValue(t).replace(/url\((["']?)(.*?)\1\)/g,(e,t,n)=>{let r=n.indexOf(`#`);return r>0&&[document.baseURI.split(`#`)[0],document.URL.split(`#`)[0]].includes(n.slice(0,r))?`url("#${n.slice(r+1)}")`:e})};`).join(``),n.style.setProperty(`animation`,`none`),n.style.setProperty(`transition`,`none`)}if(t instanceof HTMLInputElement&&(n.setAttribute(`value`,t.value),t.checked?n.setAttribute(`checked`,``):n.removeAttribute(`checked`)),t instanceof HTMLTextAreaElement&&(n.textContent=t.value),t instanceof HTMLOptionElement&&(t.selected?n.setAttribute(`selected`,``):n.removeAttribute(`selected`)),t instanceof HTMLCanvasElement){let e=document.createElement(`img`);e.src=t.toDataURL(`image/png`),e.style.cssText=n.style.cssText,t===i?a=e:n.replaceWith(e)}if(t.shadowRoot)throw Error(`This element has a shadow root. Capture it from a native browser tab.`)}a.style.setProperty(`margin`,`0`),a.style.setProperty(`position`,`relative`),a.style.setProperty(`inset`,`auto`),a.style.setProperty(`width`,`${t}px`),a.style.setProperty(`max-width`,`none`);let c=document.createElement(`div`);c.style.width=`${t}px`,c.style.height=`${n}px`;for(let t=e;t;t=t.parentElement){let e=getComputedStyle(t).backgroundColor;if(e&&e!==`rgba(0, 0, 0, 0)`&&e!==`transparent`){c.style.backgroundColor=e;break}}if(r){let n=r.getBoundingClientRect(),i=e.getBoundingClientRect();Object.assign(c.style,{position:`relative`,overflow:`hidden`,width:`${t}px`,height:`${Math.ceil(i.height)}px`}),Object.assign(a.style,{position:`absolute`,left:`${n.left-i.left}px`,top:`${n.top-i.top}px`,width:`${n.width}px`,height:`${n.height}px`})}return c.append(a),c.outerHTML}function s(n,r){try{let i=n.getBoundingClientRect(),s=r?Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth):Math.ceil(i.width),c=r?Math.max(document.documentElement.scrollHeight,document.body.scrollHeight):Math.ceil(i.height);if(!s||!c)throw Error(`The selected element has no visible area.`);e({capture:{rect:{x:r?0:Math.max(0,i.left+scrollX),y:r?0:Math.max(0,i.top+scrollY),width:s,height:c},selector:r?`Full page`:a(n),source:n.outerHTML.slice(0,64e3),...t?{html:o(n,s,c)}:{}}})}catch(t){e({error:t instanceof Error?t.message:String(t)})}}function c(){n=!1,r=null,i?.remove(),i=null,document.removeEventListener(`pointermove`,l,!0),document.removeEventListener(`click`,u,!0),document.removeEventListener(`keydown`,f,!0),window.removeEventListener(`click`,u,!0);for(let e of[`pointerdown`,`pointerup`,`mousedown`,`mouseup`])window.removeEventListener(e,d,!0)}function l(e){if(!n||(r=e.composedPath().find(e=>e instanceof Element&&e!==i)??null,!r||!i))return;let t=r.getBoundingClientRect();Object.assign(i.style,{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`}),i.textContent=`${a(r)} · ${Math.ceil(t.width)} × ${Math.ceil(t.height)}`}function u(e){if(!n||!e.isTrusted)return;e.preventDefault(),e.stopImmediatePropagation();let t=e.composedPath().find(e=>e instanceof Element&&e!==i);c(),t&&s(t,!1)}function d(e){n&&(e.preventDefault(),e.stopImmediatePropagation())}function f(t){t.key===`Escape`&&t.isTrusted&&(t.preventDefault(),t.stopImmediatePropagation(),c(),e({canceled:!0}))}return{page(){c(),s(document.body,!0)},start(){c(),n=!0,i=document.createElement(`div`),i.setAttribute(`data-openpond-snapshot-overlay`,``),i.style.cssText=`position:fixed;pointer-events:none;z-index:2147483647;box-sizing:border-box;border:2px solid var(--blue,Highlight);background:transparent;color:var(--text,CanvasText);font:12px/1.3 monospace;text-shadow:0 0 3px var(--bg,Canvas);overflow:visible;`,document.documentElement.append(i),document.addEventListener(`pointermove`,l,!0),window.addEventListener(`click`,u,!0);for(let e of[`pointerdown`,`pointerup`,`mousedown`,`mouseup`])window.addEventListener(e,d,!0);document.addEventListener(`keydown`,f,!0)},cancel(){c(),e({canceled:!0})},dispose:c}}function C(){return`(${S.toString()})`}var w=`default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; connect-src 'none'; frame-src 'none'; child-src 'none'; worker-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'`,T=e=>JSON.stringify(e).replace(/</g,`\\u003c`).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`),E=e=>e.replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`);function ee(e,t,n=f){let r=`(() => {
2
2
  const style = document.getElementById('openpond-theme');
3
- const keys = ${w(Object.keys(f))};
3
+ const keys = ${T(Object.keys(f))};
4
4
  function theme(values) { if (!values || typeof values !== 'object') return;
5
5
  style.textContent = ':root{' + keys.map(k => k+':'+String(values[k]||'').replace(/[;{}<>]/g,'')+';').join('') + '}'; }
6
- theme(${w(n)});
6
+ theme(${T(n)});
7
7
  addEventListener('message', e => { if(e.source === parent && e.data?.type === 'openpond-theme') theme(e.data.theme); });
8
- const send = data => parent.postMessage({ ...data, identity: ${w(t)} }, '*');
8
+ const send = data => parent.postMessage({ ...data, identity: ${T(t)} }, '*');
9
9
  const resourceToken=Array.from(crypto.getRandomValues(new Uint32Array(4))).join('-');
10
10
  send({type:'openpond-resource-ready',resourceToken});
11
11
  let snapshotRequest=null;
12
- const inspector=${S()}(result=>{
12
+ const inspector=${C()}(result=>{
13
13
  if(!snapshotRequest)return;
14
14
  send({type:'openpond-snapshot-result',resourceToken,requestId:snapshotRequest,...result});
15
15
  snapshotRequest=null;
@@ -57,8 +57,8 @@ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n}from"./i
57
57
  addEventListener('securitypolicyviolation', e => log('error',['Blocked resource: '+e.violatedDirective+' ('+e.blockedURI+')']));
58
58
  // Links are informational inside a self-contained visual, never navigation.
59
59
  document.addEventListener('click', e => { if(e.composedPath().some(n=>n?.tagName==='A'))e.preventDefault(); }, true);
60
- })();`,i=`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="${T(C)}"><meta name="viewport" content="width=device-width,initial-scale=1"><style id="openpond-theme"></style><style>html,body{color-scheme:var(--color-scheme);margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--font-web)}body{display:flow-root;overflow-wrap:anywhere}*{box-sizing:border-box}img,svg,canvas{max-width:100%}button,input,select{font:inherit}button{cursor:pointer}html{scrollbar-width:none}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}</style><script>${r}<\/script></head><body>${e}</body></html>`;return`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="${T(C)}"><meta name="viewport" content="width=device-width,initial-scale=1"><style>html,body{margin:0;background:transparent}iframe{display:block;border:0;width:100%;height:80px;color-scheme:normal}</style></head><body><iframe title="Interactive visual" sandbox="allow-scripts" referrerpolicy="no-referrer" allow="camera 'none'; microphone 'none'; geolocation 'none'; clipboard-read 'none'; clipboard-write 'none'"></iframe><script>(()=>{
61
- const frame=document.querySelector('iframe'); const identity=${w(t)};
60
+ })();`,i=`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="${E(w)}"><meta name="viewport" content="width=device-width,initial-scale=1"><style id="openpond-theme"></style><style>html,body{color-scheme:var(--color-scheme);margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--font-web)}body{display:flow-root;overflow-wrap:anywhere}*{box-sizing:border-box}img,svg,canvas{max-width:100%}button,input,select{font:inherit}button{cursor:pointer}html{scrollbar-width:none}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}</style><script>${r}<\/script></head><body>${e}</body></html>`;return`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="${E(w)}"><meta name="viewport" content="width=device-width,initial-scale=1"><style>html,body{margin:0;background:transparent}iframe{display:block;border:0;width:100%;height:80px;color-scheme:normal}</style></head><body><iframe title="Interactive visual" sandbox="allow-scripts" referrerpolicy="no-referrer" allow="camera 'none'; microphone 'none'; geolocation 'none'; clipboard-read 'none'; clipboard-write 'none'"></iframe><script>(()=>{
61
+ const frame=document.querySelector('iframe'); const identity=${T(t)};
62
62
  let resourceToken=null;
63
63
  const state=window.__openpondVisual={height:80,console:[],ready:false};
64
64
  addEventListener('message', e=>{
@@ -73,9 +73,9 @@ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n}from"./i
73
73
  if(d.type==='openpond-snapshot-ready' && resourceToken!==null && d.resourceToken===resourceToken && parent!==window)parent.postMessage({type:'openpond-visual-snapshot-ready',identity,requestId:d.requestId},'*');
74
74
  if(d.type==='openpond-console' && state.console.length<40 && ['log','warn','error'].includes(d.level) && typeof d.text==='string')state.console.push({level:d.level,text:d.text.slice(0,2000)});
75
75
  if(d.type==='openpond-size' && Number.isFinite(d.height)){
76
- const height=Math.max(80,Math.min(${m},Math.ceil(d.height)));state.height=height;if(d.ready===true)state.ready=true;
76
+ const height=Math.max(80,Math.min(${g},Math.ceil(d.height)));state.height=height;if(d.ready===true)state.ready=true;
77
77
  frame.style.height=state.height+'px';if(parent!==window)parent.postMessage({type:'openpond-visual-size',identity,height:state.height,ready:state.ready},'*');
78
78
  }
79
79
  });
80
- frame.srcdoc=${w(i)};
81
- })();<\/script></body></html>`}function D(e,t,n,r){let i=(0,v.useRef)(n);i.current=n;let a=(0,v.useRef)(null),o=(0,v.useCallback)(()=>{let n=a.current;n&&(a.current=null,clearTimeout(n.timeout),e.current?.contentWindow?.postMessage({type:`openpond-snapshot-command`,identity:t,requestId:n.id,action:`cancel`},`*`),n.reject(new DOMException(`Snapshot canceled.`,`AbortError`)))},[e,t]);return(0,v.useEffect)(()=>o,[o]),(0,v.useImperativeHandle)(r,()=>({cancel:o,capture:n=>!i.current||!e.current?.contentWindow?Promise.reject(Error(`Wait for the HTML page to finish loading.`)):(o(),new Promise((r,i)=>{let s=crypto.randomUUID();n===`node`&&e.current.focus(),a.current={id:s,resolve:r,reject:i,timeout:setTimeout(o,n===`node`?12e4:15e3)},e.current.contentWindow.postMessage({type:`openpond-snapshot-command`,identity:t,requestId:s,action:n},`*`)}))}),[o,e,t]),(0,v.useCallback)(e=>{let t=a.current;if(!t||t.id!==e.requestId)return;if(e.canceled){o();return}a.current=null,clearTimeout(t.timeout);let n=b.safeParse(e.capture);e.error||!n.success||!n.data.html?t.reject(Error(e.error??`The HTML snapshot could not be captured.`)):t.resolve(n.data)},[o])}var O=n();function k(){let e=getComputedStyle(document.querySelector(`.app-shell`)??document.documentElement);return Object.fromEntries(Object.entries(f).map(([t,n])=>[t,t===`--color-scheme`?document.documentElement.dataset.theme??`dark`:e.getPropertyValue(p[t]??t).trim()||n]))}function A({visual:e,connection:t,expanded:n=!1,snapshotRef:r}){let i=(0,v.useContext)(_),a=(0,v.useContext)(g),o=(0,v.useRef)(!1),f=(0,v.useRef)(null),p=(0,v.useRef)(null),[y,b]=(0,v.useState)(!1),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null),T=(0,v.useRef)(null),A=(0,v.useRef)(null),[j,M]=(0,v.useState)(null),[N,P]=(0,v.useState)(null),[F,I]=(0,v.useState)(null),[L,R]=(0,v.useState)(0),[z,B]=(0,v.useState)(n),[V,H]=(0,v.useState)(!1),[U,W]=(0,v.useState)(e.heights[0]?.height??320),G=`${e.publicationId}:${n?`expanded`:`inline`}:${L}`,K=D(A,G,V,r),q=`/v1/sessions/${encodeURIComponent(e.sessionId)}/visuals/${e.publicationId}`,J=t?.serverUrl,Y=t?.token,X=t?.platform,Z=!!(j&&/data-openpond-resource-(?:id|table)/.test(j));(0,v.useEffect)(()=>{let e=T.current;if(!e||z||n)return;let t=new IntersectionObserver(([e])=>{e?.isIntersecting&&B(!0)},{rootMargin:`160px`});return t.observe(e),()=>t.disconnect()},[n,z]),(0,v.useEffect)(()=>{if(!J||!Y||!(z||n))return;let e=new AbortController,t=null;return M(null),I(null),P(null),Promise.all([c({serverUrl:J,token:Y,platform:X??`web`},`${q}/document`,{signal:e.signal}),s({serverUrl:J,token:Y},`${q}/preview`,{signal:e.signal}).then(e=>{if(!e.ok)throw Error(`Preview unavailable`);return e.blob()})]).then(([n,r])=>{e.signal.aborted||(M(n.html),t=URL.createObjectURL(r),P(t))}).catch(t=>{e.signal.aborted||I(t instanceof Error?t.message:`Visual unavailable`)}),()=>{e.abort(),t&&URL.revokeObjectURL(t)}},[J,Y,X,q,L,z,n]),(0,v.useEffect)(()=>{if(!t||!(z||n)||!j?.includes(`data-openpond-resource-id`))return;let r=new AbortController;return h(t,`dataset`,{action:`context`,payload:{sessionId:e.sessionId}},r.signal).then(t=>{let n=Object.entries(t.focus.scopeContext?.selectionOperations??{}).filter(([,t])=>t.visualPublicationId===e.publicationId&&t.resource).sort((e,t)=>t[1].version-e[1].version)[0];if(!r.signal.aborted&&n&&!o.current){let e=n[1].resource;p.current={key:`${e.kind}:${e.id}:${e.revision}`,id:n[0]},w(`Selected ${e.kind}: ${e.name}${e.kind===`dataset`?` V${e.revision}`:``}.`)}}).catch(()=>{}),()=>r.abort()},[t,e.sessionId,e.publicationId,z,n,j]);async function Q(t){if(!a||o.current)return;o.current=!0,b(!0),S(null);let n=`${t.kind}:${t.id}:${t.revision}`;p.current?.key!==n&&(p.current={key:n,id:`visual-select-${crypto.randomUUID()}`});try{w(await a(e,t,p.current.id))}catch(e){S(e instanceof Error?e.message:`Resource selection failed.`)}finally{o.current=!1,b(!1)}}f.current=Q;let $=(0,v.useMemo)(()=>j===null?void 0:E(j,G,k()),[j,G]);return(0,v.useEffect)(()=>{if(H(!1),!$)return;let e=setTimeout(()=>I(`The visual did not finish loading.`),8e3),t=t=>{let n=t.data;if(t.source===A.current?.contentWindow&&n?.identity===G){if(n.type===`openpond-visual-snapshot`)K(n);else if(n.type===`openpond-visual-resource-select`){let e=d.safeParse(n.resource);e.success&&f.current?.(e.data)}else n.type===`openpond-visual-interaction`?T.current?.dispatchEvent(new Event(`openpond-visual-interaction`,{bubbles:!0})):n.type===`openpond-visual-size`&&Number.isFinite(n.height)&&(n.ready===!0&&(clearTimeout(e),H(!0)),W(Math.max(80,Math.min(m,Math.ceil(n.height)))))}},n=()=>A.current?.contentWindow?.postMessage({type:`openpond-theme`,identity:G,theme:k()},`*`);window.addEventListener(`message`,t);let r=new MutationObserver(n),i=[document.documentElement,document.querySelector(`.app-shell`)].filter(e=>e!==null);for(let e of i)r.observe(e,{attributes:!0,attributeFilter:[`class`,`style`,`data-theme`]});let a=matchMedia(`(prefers-color-scheme: dark)`);return a.addEventListener(`change`,n),()=>{clearTimeout(e),r.disconnect(),window.removeEventListener(`message`,t),a.removeEventListener(`change`,n)}},[G,$,K]),(0,O.jsxs)(`div`,{className:`html-visual`,ref:T,"data-visual-id":e.visualId,"data-publication-id":e.publicationId,children:[Z?null:(0,O.jsxs)(`div`,{className:`html-visual-toolbar`,children:[(0,O.jsxs)(`span`,{children:[e.output.title,e.output.revision>1?` · Revision ${e.output.revision}`:``]}),(0,O.jsx)(`button`,{type:`button`,disabled:j===null,onClick:()=>{if(j===null)return;let t=URL.createObjectURL(new Blob([j],{type:`text/html;charset=utf-8`})),n=document.createElement(`a`);n.href=t,n.download=`${e.output.title}.html`,n.click(),setTimeout(()=>URL.revokeObjectURL(t),1e3)},title:`Download HTML`,"aria-label":`Download HTML`,children:(0,O.jsx)(ee,{size:15,"aria-hidden":!0})}),!n&&i?(0,O.jsx)(`button`,{type:`button`,onClick:()=>i(e),title:`Open in browser panel`,"aria-label":`Expand visual`,children:(0,O.jsx)(l,{size:15,"aria-hidden":!0})}):null]}),C?(0,O.jsxs)(`div`,{className:`html-visual-selection-receipt`,children:[(0,O.jsx)(`span`,{children:C}),(0,O.jsx)(`button`,{type:`button`,onClick:()=>{w(null),S(null),p.current=null},children:`Change`})]}):null,y?(0,O.jsx)(`p`,{role:`status`,className:`html-visual-status`,children:`Selecting resource…`}):null,x?(0,O.jsx)(u,{error:x}):null,(0,O.jsx)(`div`,{className:`html-visual-content`,style:{minHeight:U},hidden:C!==null,children:t?F?(0,O.jsx)(u,{error:F,children:(0,O.jsx)(`button`,{type:`button`,onClick:()=>R(e=>e+1),children:`Retry`})}):(0,O.jsxs)(O.Fragment,{children:[$?(0,O.jsx)(`iframe`,{ref:A,title:e.output.title,sandbox:`allow-scripts`,referrerPolicy:`no-referrer`,allow:`camera 'none'; microphone 'none'; geolocation 'none'; clipboard-read 'none'; clipboard-write 'none'`,srcDoc:$,style:{height:U,opacity:+!!V}}):null,V?null:(0,O.jsx)(`div`,{className:`html-visual-placeholder`,children:N?(0,O.jsx)(`img`,{src:N,alt:`Saved preview of ${e.output.title}`,style:{maxHeight:U}}):(0,O.jsx)(`p`,{className:`html-visual-status`,role:`status`,children:`Loading visual…`})})]}):(0,O.jsx)(`p`,{className:`html-visual-status`,children:`Connect to view this visual.`})}),U===2400?(0,O.jsx)(`p`,{className:`html-visual-status`,children:`This visual reaches the height limit. Scroll inside it to see more.`}):null]})}export{A as t};
80
+ frame.srcdoc=${T(i)};
81
+ })();<\/script></body></html>`}function D(e,t,n,r){let i=(0,y.useRef)(n);i.current=n;let a=(0,y.useRef)(null),o=(0,y.useCallback)(()=>{let n=a.current;n&&(a.current=null,clearTimeout(n.timeout),e.current?.contentWindow?.postMessage({type:`openpond-snapshot-command`,identity:t,requestId:n.id,action:`cancel`},`*`),n.reject(new DOMException(`Snapshot canceled.`,`AbortError`)))},[e,t]);return(0,y.useEffect)(()=>o,[o]),(0,y.useImperativeHandle)(r,()=>({cancel:o,capture:n=>!i.current||!e.current?.contentWindow?Promise.reject(Error(`Wait for the HTML page to finish loading.`)):(o(),new Promise((r,i)=>{let s=crypto.randomUUID();n===`node`&&e.current.focus(),a.current={id:s,resolve:r,reject:i,timeout:setTimeout(o,n===`node`?12e4:15e3)},e.current.contentWindow.postMessage({type:`openpond-snapshot-command`,identity:t,requestId:s,action:n},`*`)}))}),[o,e,t]),(0,y.useCallback)(e=>{let t=a.current;if(!t||t.id!==e.requestId)return;if(e.canceled){o();return}a.current=null,clearTimeout(t.timeout);let n=x.safeParse(e.capture);e.error||!n.success||!n.data.html?t.reject(Error(e.error??`The HTML snapshot could not be captured.`)):t.resolve(n.data)},[o])}var O=n();function k(){let e=getComputedStyle(document.querySelector(`.app-shell`)??document.documentElement);return Object.fromEntries(Object.entries(f).map(([t,n])=>[t,t===`--color-scheme`?document.documentElement.dataset.theme??`dark`:e.getPropertyValue(p[t]??t).trim()||n]))}function A({visual:e,connection:t,expanded:n=!1,snapshotRef:r}){let i=(0,y.useContext)(v),a=(0,y.useContext)(_),o=(0,y.useRef)(!1),f=(0,y.useRef)(null),p=(0,y.useRef)(null),[b,x]=(0,y.useState)(!1),[S,C]=(0,y.useState)(null),[w,T]=(0,y.useState)(null),E=(0,y.useRef)(null),A=(0,y.useRef)(null),[j,M]=(0,y.useState)(null),[N,P]=(0,y.useState)(null),[F,I]=(0,y.useState)(null),[L,R]=(0,y.useState)(0),[z,B]=(0,y.useState)(n),[V,H]=(0,y.useState)(!1),[U,W]=(0,y.useState)(e.heights[0]?.height??320),G=`${e.publicationId}:${n?`expanded`:`inline`}:${L}`,K=D(A,G,V,r),q=`/v1/sessions/${encodeURIComponent(e.sessionId)}/visuals/${e.publicationId}`,J=t?.serverUrl,Y=t?.token,X=t?.platform,Z=!!(j&&/data-openpond-resource-(?:id|table)/.test(j));(0,y.useEffect)(()=>{let e=E.current;if(!e||z||n)return;let t=new IntersectionObserver(([e])=>{e?.isIntersecting&&B(!0)},{rootMargin:`160px`});return t.observe(e),()=>t.disconnect()},[n,z]),(0,y.useEffect)(()=>{if(!J||!Y||!(z||n))return;let e=new AbortController,t=null;return M(null),I(null),P(null),Promise.all([c({serverUrl:J,token:Y,platform:X??`web`},`${q}/document`,{signal:e.signal}),s({serverUrl:J,token:Y},`${q}/preview`,{signal:e.signal}).then(e=>{if(!e.ok)throw Error(`Preview unavailable`);return e.blob()})]).then(([n,r])=>{e.signal.aborted||(M(n.html),t=URL.createObjectURL(r),P(t))}).catch(t=>{e.signal.aborted||I(t instanceof Error?t.message:`Visual unavailable`)}),()=>{e.abort(),t&&URL.revokeObjectURL(t)}},[J,Y,X,q,L,z,n]),(0,y.useEffect)(()=>{if(!t||!(z||n)||!j?.includes(`data-openpond-resource-id`))return;let r=new AbortController;return m(t,`dataset`,{action:`context`,payload:{sessionId:e.sessionId}},r.signal).then(t=>{let n=Object.entries(t.focus.scopeContext?.selectionOperations??{}).filter(([,t])=>t.visualPublicationId===e.publicationId&&t.resource).sort((e,t)=>t[1].version-e[1].version)[0];if(!r.signal.aborted&&n&&!o.current){let e=n[1].resource;p.current={key:`${e.kind}:${e.id}:${e.revision}`,id:n[0]},T(`Selected ${e.kind}: ${e.name}${e.kind===`dataset`?` V${e.revision}`:``}.`)}}).catch(()=>{}),()=>r.abort()},[t,e.sessionId,e.publicationId,z,n,j]);async function Q(t){if(!a||o.current)return;o.current=!0,x(!0),C(null);let n=`${t.kind}:${t.id}:${t.revision}`;p.current?.key!==n&&(p.current={key:n,id:`visual-select-${crypto.randomUUID()}`});try{T(await a(e,t,p.current.id))}catch(e){C(e instanceof Error?e.message:`Resource selection failed.`)}finally{o.current=!1,x(!1)}}f.current=Q;let $=(0,y.useMemo)(()=>j===null?void 0:ee(j,G,k()),[j,G]);return(0,y.useEffect)(()=>{if(H(!1),!$)return;let e=setTimeout(()=>I(`The visual did not finish loading.`),8e3),t=t=>{let n=t.data;if(t.source===A.current?.contentWindow&&n?.identity===G){if(n.type===`openpond-visual-snapshot`)K(n);else if(n.type===`openpond-visual-resource-select`){let e=u.safeParse(n.resource);e.success&&f.current?.(e.data)}else n.type===`openpond-visual-interaction`?E.current?.dispatchEvent(new Event(`openpond-visual-interaction`,{bubbles:!0})):n.type===`openpond-visual-size`&&Number.isFinite(n.height)&&(n.ready===!0&&(clearTimeout(e),H(!0)),W(Math.max(80,Math.min(g,Math.ceil(n.height)))))}},n=()=>A.current?.contentWindow?.postMessage({type:`openpond-theme`,identity:G,theme:k()},`*`);window.addEventListener(`message`,t);let r=new MutationObserver(n),i=[document.documentElement,document.querySelector(`.app-shell`)].filter(e=>e!==null);for(let e of i)r.observe(e,{attributes:!0,attributeFilter:[`class`,`style`,`data-theme`]});let a=matchMedia(`(prefers-color-scheme: dark)`);return a.addEventListener(`change`,n),()=>{clearTimeout(e),r.disconnect(),window.removeEventListener(`message`,t),a.removeEventListener(`change`,n)}},[G,$,K]),(0,O.jsxs)(`div`,{className:`html-visual`,ref:E,"data-visual-id":e.visualId,"data-publication-id":e.publicationId,children:[Z?null:(0,O.jsxs)(`div`,{className:`html-visual-toolbar`,children:[(0,O.jsxs)(`span`,{children:[e.output.title,e.output.revision>1?` · Revision ${e.output.revision}`:``]}),(0,O.jsx)(`button`,{type:`button`,disabled:j===null,onClick:()=>{if(j===null)return;let t=URL.createObjectURL(new Blob([j],{type:`text/html;charset=utf-8`})),n=document.createElement(`a`);n.href=t,n.download=`${e.output.title}.html`,n.click(),setTimeout(()=>URL.revokeObjectURL(t),1e3)},title:`Download HTML`,"aria-label":`Download HTML`,children:(0,O.jsx)(h,{size:15,"aria-hidden":!0})}),!n&&i?(0,O.jsx)(`button`,{type:`button`,onClick:()=>i(e),title:`Open in browser panel`,"aria-label":`Expand visual`,children:(0,O.jsx)(l,{size:15,"aria-hidden":!0})}):null]}),w?(0,O.jsxs)(`div`,{className:`html-visual-selection-receipt`,children:[(0,O.jsx)(`span`,{children:w}),(0,O.jsx)(`button`,{type:`button`,onClick:()=>{T(null),C(null),p.current=null},children:`Change`})]}):null,b?(0,O.jsx)(`p`,{role:`status`,className:`html-visual-status`,children:`Selecting resource…`}):null,S?(0,O.jsx)(d,{error:S}):null,(0,O.jsx)(`div`,{className:`html-visual-content`,style:{minHeight:U},hidden:w!==null,children:t?F?(0,O.jsx)(d,{error:F,children:(0,O.jsx)(`button`,{type:`button`,onClick:()=>R(e=>e+1),children:`Retry`})}):(0,O.jsxs)(O.Fragment,{children:[$?(0,O.jsx)(`iframe`,{ref:A,title:e.output.title,sandbox:`allow-scripts`,referrerPolicy:`no-referrer`,allow:`camera 'none'; microphone 'none'; geolocation 'none'; clipboard-read 'none'; clipboard-write 'none'`,srcDoc:$,style:{height:U,opacity:+!!V}}):null,V?null:(0,O.jsx)(`div`,{className:`html-visual-placeholder`,children:N?(0,O.jsx)(`img`,{src:N,alt:`Saved preview of ${e.output.title}`,style:{maxHeight:U}}):(0,O.jsx)(`p`,{className:`html-visual-status`,role:`status`,children:`Loading visual…`})})]}):(0,O.jsx)(`p`,{className:`html-visual-status`,children:`Connect to view this visual.`})}),U===2400?(0,O.jsx)(`p`,{className:`html-visual-status`,children:`This visual reaches the height limit. Scroll inside it to see more.`}):null]})}export{A as t};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{g as t,m as n}from"./index-B6XX_0h3.js";import{t as r}from"./useQuery-D2MQ7e5U.js";import{C as i,O as a,_ as o,a as s,c,d as l,f as u,g as d,h as f,i as p,l as m,m as h,o as g,p as _,r as v,s as y,v as b,w as ee}from"./LabModelWorkspace-u2Ulm_z4.js";import{t as x}from"./query-scope-BRpcgljO.js";import"./icons-Bk2b68aC.js";import{c as S,l as te,n as C,o as w,r as T,t as ne}from"./training-model-data-CIysl8wH.js";import{t as E}from"./chevron-down-DX1hzujj.js";import{t as D}from"./chevron-right-DHN0y3KC.js";import{t as re}from"./loader-circle-y-SSPwpk.js";import{Fn as O,Gt as k,Tn as A,gn as j,rn as ie}from"./App-CCuh99JW.js";import{t as ae}from"./ModelProjectPageHeader-Dge19aE1.js";import{lt as oe}from"./MainPane-CQQxSDPS.js";import{t as se}from"./LabsRoute-CbztQaEf.js";function ce(e){if(!e)return[];let t=e.recipe;return t.method===`grpo`?[{label:`LoRA rank`,value:String(t.lora.rank)},{label:`Learning rate`,value:M(t.optimizer.learningRate)},{label:`Optimizer steps`,value:String(t.optimizer.maxSteps)},{label:`Rollouts per update`,value:String(t.rollout.groupSize)},{label:`Rollout concurrency`,value:String(t.rollout.concurrency)},{label:`Max output tokens`,value:t.rollout.maxOutputTokens.toLocaleString()},{label:`Temperature`,value:String(t.rollout.temperature)},{label:`Top P`,value:String(t.rollout.topP)}]:t.method===`sft`||t.method===`dpo`?[{label:`LoRA rank`,value:String(t.lora.rank)},{label:`Learning rate`,value:M(t.optimizer.learningRate)},{label:`Optimizer steps`,value:String(t.optimizer.maxSteps)}]:[]}function le(e,t){if(!e||!t)return[];if(t.parent.kind===`base_model`)return[{label:`Starting checkpoint`,value:`Frozen base · ${t.parent.revision}`},{label:`Optimizer`,value:`Fresh`}];let n=e.modelVersions.find(e=>e.id===t.parent.id);return[{label:`Starting checkpoint`,value:[e.comparisonSeriesEntries.find(e=>e.seriesId===t.seriesId&&e.modelVersionId===t.parent.id)?.label??null,n?`Version ${n.version}`:t.parent.id].filter(e=>!!e).join(` · `)},{label:`Optimizer`,value:`Fresh`}]}function ue(e,t){if(!e||!t||t.parent.kind===`base_model`)return`Frozen base`;let n=e.comparisonSeriesEntries.find(e=>e.seriesId===t.seriesId&&e.modelVersionId===t.parent.id),r=e.modelVersions.find(e=>e.id===t.parent.id);return[n?.label??`Prior checkpoint`,r?`Version ${r.version}`:null].filter(e=>!!e).join(` · `)}function M(e){return e===0?`0`:e.toExponential(2)}var N=e(t(),1),P=n();function de({events:e}){let t=e.filter(e=>e.type===`metric`&&e.payload.metricKind===`rollout_trajectory`);return t.length?(0,P.jsx)(`div`,{className:`training-rollout-receipts`,children:t.map((e,t)=>{let n=e.payload.rewardEligible===!0,r=I(e.payload.reward),i=typeof e.payload.failureClass==`string`?e.payload.failureClass:null,a=typeof e.payload.failureCode==`string`?e.payload.failureCode:null;return(0,P.jsxs)(`details`,{children:[(0,P.jsxs)(`summary`,{children:[(0,P.jsxs)(`span`,{children:[`Attempt `,t+1]}),(0,P.jsx)(`strong`,{children:n?`eligible`:`ineligible`}),(0,P.jsx)(`em`,{children:n&&r!=null?r.toFixed(3):a??i??`not reward eligible`})]}),(0,P.jsxs)(`dl`,{className:`training-configuration-list`,children:[(0,P.jsx)(F,{label:`Rollout`,value:L(e.payload.rolloutId)}),(0,P.jsx)(F,{label:`Group`,value:L(e.payload.rolloutGroupId)}),(0,P.jsx)(F,{label:`Policy`,value:`v${I(e.payload.policyVersion)??0}`}),(0,P.jsx)(F,{label:`Worker`,value:String((I(e.payload.workerSlot)??0)+1)}),(0,P.jsx)(F,{label:`Reward`,value:r==null?`Not eligible`:String(r)}),(0,P.jsx)(F,{label:`Failure class`,value:i??`None`}),(0,P.jsx)(F,{label:`Failure code`,value:a??`None`}),(0,P.jsx)(F,{label:`Components`,value:JSON.stringify(e.payload.rewardComponents??{})}),(0,P.jsx)(F,{label:`Tokens`,value:`${I(e.payload.inputTokens)??0} input · ${I(e.payload.outputTokens)??0} output`})]})]},e.id)})}):(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:`No managed attempts were recorded for this run.`})}function fe({receipts:e}){let[t,n]=(0,N.useState)(!1);if(!e.length)return(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:`No on-policy rollout receipts were recorded for this run.`});let r=[...e].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt)),i=t?r:r.slice(0,24);return(0,P.jsxs)(`div`,{className:`training-rollout-receipts`,children:[e.length>24?(0,P.jsxs)(`div`,{className:`training-rollout-receipt-controls`,children:[(0,P.jsx)(`span`,{children:t?`Showing all ${e.length} receipts`:`Showing latest ${i.length} of ${e.length} receipts`}),(0,P.jsx)(`button`,{className:`training-text-button`,type:`button`,onClick:()=>n(e=>!e),children:t?`Show latest 24`:`Show all ${e.length}`})]}):null,i.map(e=>(0,P.jsxs)(`details`,{children:[(0,P.jsxs)(`summary`,{children:[(0,P.jsx)(`span`,{children:pe(e.providerTrace.rolloutId)}),(0,P.jsx)(`strong`,{children:e.status}),(0,P.jsx)(`em`,{children:e.reward.eligible&&e.reward.raw!=null?e.reward.raw.toFixed(3):e.failureClass??`not reward eligible`})]}),(0,P.jsxs)(`dl`,{className:`training-configuration-list`,children:[(0,P.jsx)(F,{label:`Correlation`,value:e.correlationId}),(0,P.jsx)(F,{label:`Task`,value:e.taskId}),(0,P.jsx)(F,{label:`Policy`,value:e.policy.modelId}),(0,P.jsx)(F,{label:`Checkpoint`,value:e.policy.checkpointId??`Provider initial policy`}),(0,P.jsx)(F,{label:`Environment`,value:`${e.environment.id}@${e.environment.version}`}),(0,P.jsx)(F,{label:`World`,value:`${e.environment.worldId} · ${e.environment.worldHash}`}),(0,P.jsx)(F,{label:`Raw reward`,value:e.reward.raw==null?`Not eligible`:String(e.reward.raw)}),(0,P.jsx)(F,{label:`Components`,value:JSON.stringify(e.reward.components)}),(0,P.jsx)(F,{label:`Outcome`,value:e.verifier?.outcome??e.failureClass??`Pending`}),(0,P.jsx)(F,{label:`Trace`,value:`${e.providerTrace.experimentId}/${e.providerTrace.rolloutId}`})]})]},e.id))]})}function F({label:e,value:t}){return(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`dt`,{children:e}),(0,P.jsx)(`dd`,{children:t})]})}function I(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function L(e){return typeof e==`string`&&e?e:`Not recorded`}function pe(e){return e.replace(/^lineage_/,``).slice(0,18)}function me({detail:e,loading:t,pending:n=!1}){if(t&&!e)return(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:`Loading evaluation results…`});let r=e?.evaluation;return r?(0,P.jsxs)(`div`,{className:`training-run-evaluation`,children:[(0,P.jsxs)(`div`,{className:`training-metric-summary`,children:[(0,P.jsx)(R,{label:`Base score`,value:ge(r.base.meanScore)}),(0,P.jsx)(R,{label:`Trained score`,value:ge(r.trained.meanScore)}),(0,P.jsx)(R,{label:`Score change`,value:_e(r.meanScoreDelta)}),(0,P.jsx)(R,{label:`Trained pass rate`,value:z(r.trained.passRate)})]}),r.base.count===0?(0,P.jsx)(`p`,{className:`training-muted`,children:`Base-model scoring was not imported for this earlier run. New runs retain both base and trained evaluations.`}):null,r.trained.count>0&&r.trained.scoredCount===0?(0,P.jsx)(`p`,{className:`training-muted`,children:`Outputs were captured, but the grader was unavailable, so this run has no evaluation score.`}):null,(0,P.jsx)(`div`,{className:`training-table-wrap`,children:(0,P.jsxs)(`table`,{className:`training-data-table training-evaluation-table`,children:[(0,P.jsx)(`thead`,{children:(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`th`,{children:`Test example`}),(0,P.jsx)(`th`,{children:`Base`}),(0,P.jsx)(`th`,{children:`Trained`}),(0,P.jsx)(`th`,{children:`Result`})]})}),(0,P.jsx)(`tbody`,{children:r.examples.map(e=>(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`td`,{children:(0,P.jsxs)(`details`,{children:[(0,P.jsx)(`summary`,{children:e.taskId}),(0,P.jsx)(he,{input:e.input,baseOutput:e.baseOutput,trainedOutput:e.trainedOutput,baseGrade:e.baseGrade,trainedGrade:e.trainedGrade})]})}),(0,P.jsx)(`td`,{children:ve(e.baseGrade)}),(0,P.jsx)(`td`,{children:ve(e.trainedGrade)}),(0,P.jsx)(`td`,{children:ye(e.baseGrade,e.trainedGrade)})]},e.taskId))})]})})]}):(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:n?`Evaluation will appear here after the first eligible checkpoint is scored.`:`No scored evaluation results are available for this run.`})}function he({input:e,baseOutput:t,trainedOutput:n,baseGrade:r,trainedGrade:i}){let a=[...new Set([...r?.feedback??[],...i?.feedback??[]])];return(0,P.jsxs)(`div`,{className:`training-evaluation-output`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:`Input`}),(0,P.jsx)(`pre`,{children:JSON.stringify(e,null,2)})]}),t?(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:`Base output`}),(0,P.jsx)(`pre`,{children:JSON.stringify(t,null,2)})]}):null,n?(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:`Trained output`}),(0,P.jsx)(`pre`,{children:JSON.stringify(n,null,2)})]}):null,a.length?(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:`Grader feedback`}),(0,P.jsx)(`p`,{children:a.join(` `)})]}):null]})}function R({label:e,value:t}){return(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:e}),(0,P.jsx)(`strong`,{children:t})]})}function ge(e){return e==null?`Not recorded`:e.toFixed(3)}function z(e){return e==null?`Not recorded`:`${Math.round(e*100)}%`}function _e(e){return e==null?`Not comparable`:`${e>=0?`+`:``}${e.toFixed(3)}`}function ve(e){return e?.status===`unavailable`?`Unavailable`:e?.score==null?`Not scored`:e.score.toFixed(3)}function ye(e,t){if(!t)return`Not evaluated`;if(t.status===`unavailable`)return`Unavailable`;if(!e||e.score==null||t.score==null)return t.passed?`Passed`:`Failed`;let n=t.score-e.score;return Math.abs(n)<5e-4?`No change`:n>0?`Improved ${n.toFixed(3)}`:`Regressed ${Math.abs(n).toFixed(3)}`}function be({connection:e,lineageId:t,jobId:n,onSaved:r}){let i=n??t,a=n?`jobs`:`models`,[o,s]=(0,N.useState)(null),[c,l]=(0,N.useState)(0),[u,d]=(0,N.useState)(!0),[f,p]=(0,N.useState)(!1),[m,h]=(0,N.useState)(!1),[g,_]=(0,N.useState)(null),[v,y]=(0,N.useState)(null),[b,ee]=(0,N.useState)(``),[x,S]=(0,N.useState)(null),[te,C]=(0,N.useState)([]),[w,T]=(0,N.useState)(!1);(0,N.useEffect)(()=>{if(!e){d(!1),p(!1),_(`Connect to OpenPond to review this candidate.`);return}let t=!0;return d(!0),p(!1),_(null),C([]),(async()=>{try{if(a===`models`){let n=await A.candidateReview(e,i);t&&n&&s(n)}let n=await A.candidateReview(e,i,!0,a);t&&(s(n),p(!!n))}catch(e){t&&_(xe(e))}finally{t&&d(!1)}})(),()=>{t=!1}},[e,i,a,c]);function ne(e){y(e),ee(``),S(null)}async function E(){if(!e||!o||!v||!b.trim())return;let t=x&&x.reason===b.trim()&&x.decision===v?x:{schemaVersion:`openpond.trainingCandidateDecisionRequest.v1`,...o.target,decision:v,reason:b.trim(),idempotencyKey:crypto.randomUUID(),expectedDecision:o.decision?{id:o.decision.id,contentHash:o.decision.contentHash}:null};S(t),h(!0),_(null);try{s(await A.recordCandidateReview(e,i,t,a)),y(null),S(null),C([]),await r()}catch(e){_(xe(e))}finally{h(!1)}}let D=(te.at(-1)??o?.decision)?.request.expectedDecision;async function re(){if(e&&D){T(!0),_(null);try{let t=await A.candidateReviewHistory(e,i,D,a);C(e=>[...e,t])}catch(e){_(xe(e))}finally{T(!1)}}}let O=o?.decision;return(0,P.jsxs)(`section`,{className:`training-run-evaluation`,"aria-label":`Candidate review`,children:[(0,P.jsx)(`h3`,{children:`Candidate review`}),O?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`strong`,{children:O.request.decision===`accepted`?`Accepted`:`Rejected`}),(0,P.jsx)(`p`,{children:O.request.reason}),(0,P.jsxs)(`p`,{className:`training-muted`,children:[`Review `,O.revision,` · `,new Date(O.decidedAt).toLocaleString()]})]}):(0,P.jsx)(`p`,{className:`training-muted`,children:u?`Loading candidate review…`:o?`No candidate decision recorded.`:`Candidate review unavailable.`}),o?(0,P.jsxs)(`p`,{className:`training-muted`,children:[`Last synced `,new Date(o.syncedAt).toLocaleString(),`. Acceptance keeps this candidate for later use; serving is activated separately.`]}):null,g?(0,P.jsx)(k,{error:g}):null,(0,P.jsxs)(`div`,{className:`training-dialog-actions`,children:[(0,P.jsx)(`button`,{className:`training-button secondary`,type:`button`,disabled:u||m,onClick:()=>l(e=>e+1),children:`Refresh review`}),(0,P.jsx)(`button`,{className:`training-button`,type:`button`,disabled:!f||u||m||O?.request.decision===`accepted`,onClick:()=>ne(`accepted`),children:`Accept candidate`}),(0,P.jsx)(`button`,{className:`training-button danger`,type:`button`,disabled:!f||u||m||O?.request.decision===`rejected`,onClick:()=>ne(`rejected`),children:`Reject candidate`})]}),te.map(e=>(0,P.jsxs)(`details`,{className:`training-evidence`,children:[(0,P.jsxs)(`summary`,{children:[`Review `,e.revision,` · `,e.request.decision]}),(0,P.jsx)(`p`,{children:e.request.reason}),(0,P.jsx)(`p`,{children:new Date(e.decidedAt).toLocaleString()})]},e.id)),D?(0,P.jsx)(`button`,{className:`training-button secondary`,type:`button`,disabled:w||m,onClick:()=>void re(),children:w?`Loading…`:`Earlier review`}):null,v?(0,P.jsx)(`div`,{className:`training-dialog-backdrop`,role:`presentation`,onMouseDown:()=>!m&&y(null),children:(0,P.jsxs)(`section`,{className:`training-dialog training-promotion-dialog`,role:`dialog`,"aria-modal":`true`,"aria-label":`Review candidate`,onMouseDown:e=>e.stopPropagation(),children:[(0,P.jsx)(`div`,{className:`training-dialog-header`,children:(0,P.jsx)(`h2`,{children:v===`accepted`?`Accept this candidate?`:`Reject this candidate?`})}),(0,P.jsx)(`p`,{children:`The adapter and its recorded evaluation remain in the candidate’s history.`}),(0,P.jsxs)(`label`,{className:`training-promotion-reason`,children:[(0,P.jsx)(`span`,{children:`Reason`}),(0,P.jsx)(`textarea`,{autoFocus:!0,maxLength:5e3,value:b,onChange:e=>ee(e.target.value)})]}),g?(0,P.jsx)(k,{error:g}):null,(0,P.jsxs)(`div`,{className:`training-dialog-actions`,children:[(0,P.jsx)(`button`,{className:`training-button secondary`,type:`button`,disabled:m,onClick:()=>y(null),children:`Cancel`}),(0,P.jsx)(`button`,{className:`training-button ${v===`rejected`?`danger`:``}`,type:`button`,disabled:m||!b.trim(),onClick:()=>void E(),children:m?`Saving…`:x?`Retry save`:`Save decision`})]})]})}):null]})}function xe(e){return e instanceof Error?e.message:`Candidate review could not be loaded.`}function Se({connection:e,jobId:t,evaluations:n}){let[r,i]=(0,N.useState)(null),a=n.filter(e=>e.reference),o=a.find(e=>e.reference?.id===r)??a.filter(e=>e.kind===`candidate`).at(-1)??a[0];return!e||!o?.reference?null:(0,P.jsxs)(`section`,{className:`training-run-evaluation`,"aria-label":`Retained evaluation answers`,children:[(0,P.jsxs)(`label`,{className:`training-taskset-selector`,children:[(0,P.jsx)(`span`,{children:`Evaluation answers`}),(0,P.jsx)(`select`,{value:o.reference.id,onChange:e=>i(e.target.value),children:a.map(e=>(0,P.jsxs)(`option`,{value:e.reference.id,children:[e.kind===`baseline`?`Baseline`:`Candidate`,` · policy `,e.policyVersion]},e.reference.id))})]}),(0,P.jsx)(B,{connection:e,jobId:t,evaluation:o.reference},`${t}:${o.reference.id}:${o.reference.contentHash}`)]})}function B({connection:e,jobId:t,evaluation:n}){let[r,i]=(0,N.useState)(),[a,o]=(0,N.useState)([]),[s,c]=(0,N.useState)(null),[l,u]=(0,N.useState)(null),[d,f]=(0,N.useState)(!0),[p,m]=(0,N.useState)(0),{id:h,contentHash:g}=n;return(0,N.useEffect)(()=>{let n=!0;return f(!0),u(null),c(null),A.trainingEvaluationTasks(e,t,{id:h,contentHash:g},r).then(e=>{n&&c(e)}).catch(e=>{n&&u(e instanceof Error?e.message:String(e))}).finally(()=>{n&&f(!1)}),()=>{n=!1}},[e,t,h,g,r,p]),(0,P.jsxs)(`div`,{className:`training-run-evaluation`,"aria-busy":d,children:[d?(0,P.jsx)(`p`,{className:`training-muted`,children:`Loading recorded answers…`}):null,l?(0,P.jsx)(k,{error:l,children:(0,P.jsx)(`button`,{className:`training-button secondary`,type:`button`,onClick:()=>m(e=>e+1),children:`Retry answers`})}):null,s?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`p`,{className:`training-muted`,children:[`Tasks `,s.offset+1,`–`,s.offset+s.tasks.length,` of`,` `,s.total,`. Recorded outputs and scores are retained for this run.`]}),s.tasks.map((e,t)=>(0,P.jsxs)(`details`,{className:`training-evidence`,children:[(0,P.jsxs)(`summary`,{children:[`Example `,s.offset+t+1,` · score `,e.score.toFixed(3)]}),(0,P.jsxs)(`div`,{className:`training-evaluation-output`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:`Instruction`}),(0,P.jsx)(`pre`,{children:e.input.instruction})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:`Context`}),(0,P.jsx)(`pre`,{children:JSON.stringify(e.input.context,null,2)})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{children:`Recorded output`}),(0,P.jsx)(`pre`,{children:e.output})]})]})]},e.taskId))]}):null,(0,P.jsxs)(`div`,{className:`training-dialog-actions`,children:[(0,P.jsx)(`button`,{className:`training-button secondary`,type:`button`,disabled:d||!a.length,onClick:()=>{i(a.at(-1)),o(e=>e.slice(0,-1))},children:`Previous tasks`}),(0,P.jsx)(`button`,{className:`training-button secondary`,type:`button`,disabled:d||!s?.nextCursor,onClick:()=>{s?.nextCursor&&(o(e=>[...e,r]),i(s.nextCursor))},children:`Next tasks`})]})]})}var V=new Set([`queued`,`starting`,`running`,`cancelling`,`reconciling`]);function Ce(e,t,n,i=!1){let a=[`training-run-detail`,x(e),t,i],o=!!(e&&t),s=r({queryKey:[...a,`retained`],queryFn:({signal:n})=>A.trainingRunDetail(e,t,{includeEvaluation:i,refresh:!1,signal:n}),enabled:o,staleTime:3e4,gcTime:6e4}),c=r({queryKey:[...a,`hosted`],queryFn:({signal:n})=>A.trainingRunDetail(e,t,{includeEvaluation:i,signal:n}),enabled:o,staleTime:3e4,gcTime:6e4,refetchInterval:n&&V.has(n)?3e3:!1,refetchIntervalInBackground:!1}),l=c.data??s.data??null;return{detail:l,loading:o&&!l&&(s.isPending||c.isPending),error:c.error?.message??s.error?.message??null,refresh:async()=>(await c.refetch()).data??null}}function we({title:e,status:t,statusValue:n,versionStatus:r,method:i,baseModel:a,taskset:o,compute:s,duration:c,output:l,reward:u,telemetry:d,evidence:f,configuration:p,children:m,failure:h,onOpenTaskset:g,showHeader:_=!0}){let v=d?.cost.providerReportedUsd??d?.cost.estimatedUsd??f?.cost.totalUsd??null;return(0,P.jsxs)(`div`,{className:`labs-model-run-summary`,children:[_?(0,P.jsx)(`section`,{className:`labs-run-outcome-card`,children:(0,P.jsx)(`header`,{children:(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`labs-run-title-row`,children:[(0,P.jsx)(`h2`,{children:e}),(0,P.jsx)(b,{label:t,value:n})]}),(0,P.jsxs)(`p`,{children:[Te(i),` on `,a]})]})})}):null,m,(0,P.jsxs)(`section`,{className:`labs-run-summary-card`,children:[(0,P.jsx)(`header`,{children:(0,P.jsx)(`h3`,{children:`Run setup`})}),(0,P.jsxs)(`dl`,{className:`labs-run-detail-list`,children:[(0,P.jsx)(H,{label:`Training method`,value:i}),(0,P.jsx)(H,{label:`Base model`,value:a}),(0,P.jsx)(H,{label:`Compute`,value:s}),(0,P.jsx)(H,{label:`Output`,value:l}),r?(0,P.jsx)(H,{label:`Version status`,value:r}):null,(0,P.jsx)(H,{label:`Duration`,value:c}),(0,P.jsx)(H,{label:`Run cost`,value:v===null?`Not reported`:`$${v.toFixed(4)}`}),(0,P.jsx)(H,{label:y(n)?`Latest reward`:`Final reward`,value:u===null?`Not reported`:u.toFixed(4)}),p.map(e=>(0,P.jsx)(H,{label:e.label,value:e.value},e.label)),d||f?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(U,{label:`GPU`,value:W(d,f)}),(0,P.jsx)(U,{label:`Tokens`,value:`${G(d?.usage.promptTokens??f?.usage.inputTokens??null)} prompt · ${G(d?.usage.generatedTokens??f?.usage.outputTokens??null)} generated`}),(0,P.jsx)(U,{label:`Trajectories`,value:`${G(d?.usage.successfulTrajectories??f?.reward.eligibleTrajectoryCount??null)} succeeded · ${G(d?.usage.failedTrajectories??(f?f.reward.trajectoryCount-f.reward.eligibleTrajectoryCount:null))} failed`}),(0,P.jsx)(U,{label:`Optimizer updates`,value:G(d?.usage.optimizerSteps??f?.progress.committedOptimizerSteps??null)}),(0,P.jsx)(U,{label:`GPU time`,value:d?.usage.gpuSeconds==null?`Not reported`:`${d.usage.gpuSeconds.toFixed(1)} seconds`})]}):(0,P.jsx)(H,{label:`Resource usage`,value:`Not retained for this run`}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`dt`,{children:`Taskset`}),(0,P.jsx)(`dd`,{children:g?(0,P.jsxs)(`button`,{className:`labs-run-taskset-link`,type:`button`,onClick:g,children:[(0,P.jsx)(`span`,{children:o}),(0,P.jsx)(D,{"aria-hidden":`true`,size:14})]}):o})]})]})]}),h?(0,P.jsx)(`p`,{className:`labs-training-error`,children:h}):null]})}function H({label:e,value:t}){return(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`dt`,{children:e}),(0,P.jsx)(`dd`,{children:t})]})}function U({label:e,value:t}){return(0,P.jsx)(H,{label:e,value:t})}function W(e,t){let n=e?.resource.gpuCount??t?.resource.gpuCount??null,r=e?.resource.gpuType??t?.resource.gpuType??null;return n===null&&r===null?`Not reported`:`${n??`Unknown`} × ${r?Ee(r):`Unreported`}`}function G(e){return e===null?`Not reported`:e.toLocaleString()}function Te(e){return e===`RFT`?`Reinforcement fine-tuning`:`${e} training`}function Ee(e){return e.split(` · `).map(e=>e.replaceAll(`_`,` `).replace(/\b[a-z]/g,e=>e.toUpperCase())).join(` · `)}function K({receipt:e,onOpenConversation:t}){return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`section`,{className:`labs-run-summary-card`,children:[(0,P.jsx)(`header`,{children:(0,P.jsx)(`h3`,{children:`Inconclusive benchmark`})}),(0,P.jsx)(`p`,{className:`training-run-placeholder`,children:e.reason}),(0,P.jsxs)(`dl`,{className:`labs-run-detail-list`,children:[(0,P.jsx)(X,{label:`Held-out baseline tokens`,value:e.usage.baseline.totalTokens.toLocaleString()}),(0,P.jsx)(X,{label:`Adaptation baseline tokens`,value:e.usage.adaptation.totalTokens.toLocaleString()}),(0,P.jsx)(X,{label:`Refiner tokens`,value:e.usage.refiner.totalTokens.toLocaleString()}),(0,P.jsx)(X,{label:`Grader tokens`,value:e.usage.grader.totalTokens.toLocaleString()}),(0,P.jsx)(X,{label:`Observed / maximum spend`,value:`$${e.budget.observedSpendUsd.toFixed(4)} / $${e.budget.maximumSpendUsd.toFixed(2)}`}),(0,P.jsx)(X,{label:`Harness candidate`,value:e.stopReason===`candidate_harness_unchanged`?`Unchanged`:`Lineage invalid`}),(0,P.jsx)(X,{label:`Completed attempts`,value:e.attempts.length.toLocaleString()}),(0,P.jsx)(X,{label:`Candidate attempts`,value:`Skipped`})]})]}),e.attempts.length?(0,P.jsx)(Y,{receipt:e,onOpenConversation:t}):null]})}function De({run:e}){let t=[`baseline`,`adaptation`,`refiner`,`candidate_adaptation`,`candidate`,`comparison`],n={baseline:`Baseline`,adaptation:`Adaptation`,refiner:`Refiner`,candidate_adaptation:`Sequential adaptation`,candidate:`Candidate`,comparison:`Comparison`},r=Math.max(0,t.indexOf(e.evaluationProgress?.stage??`baseline`)),i=e.evaluationProgress?.completedAttempts??0,a=e.evaluationProgress?.totalAttempts??1;return(0,P.jsxs)(`div`,{className:`labs-benchmark-progress`,children:[(0,P.jsxs)(`header`,{children:[(0,P.jsx)(`h3`,{children:`Benchmark progress`}),(0,P.jsxs)(`strong`,{children:[i,` of `,a,` attempts`]})]}),(0,P.jsx)(`div`,{className:`labs-benchmark-progress-track`,"aria-hidden":`true`,children:(0,P.jsx)(`span`,{style:{width:`${Math.min(100,i/a*100)}%`}})}),(0,P.jsx)(`ol`,{children:t.map((e,t)=>(0,P.jsxs)(`li`,{className:t<r?`complete`:t===r?`active`:void 0,children:[(0,P.jsx)(`span`,{}),n[e]]},e))})]})}function q({receipt:e}){let t=o(e),n=t.pairs.filter(e=>e.cohort===`held_out`),r=t.pairs.filter(e=>e.cohort===`adaptation`),i=e=>e.length?e.reduce((e,t)=>e+t,0)/e.length:0;return(0,P.jsxs)(`div`,{className:`labs-benchmark-attempt-charts`,children:[(0,P.jsx)(J,{title:`Held-out tokens by task`,baseline:n.map(e=>e.baseline.totalTokens),candidate:n.map(e=>e.refined.totalTokens),format:e=>Math.round(e).toLocaleString()}),(0,P.jsx)(J,{title:`Adaptation tokens by task`,baseline:r.map(e=>e.baseline.totalTokens),candidate:r.map(e=>e.refined.totalTokens),format:e=>Math.round(e).toLocaleString()}),(0,P.jsx)(J,{title:`Held-out quality by task`,baseline:n.map(e=>e.baseline.score),candidate:n.map(e=>e.refined.score),format:e=>e.toFixed(2),summarize:i}),(0,P.jsx)(J,{title:`Adaptation quality by task`,baseline:r.map(e=>e.baseline.score),candidate:r.map(e=>e.refined.score),format:e=>e.toFixed(2),summarize:i})]})}function Oe({receipt:e,run:t,tasksetName:n,onOpenTaskset:r}){let i=o(e),a=i.comparedTaskCount>0,s=i.passed,c=i.tokenDeltaPercent===null?`—`:`${i.tokenDeltaPercent>0?`+`:``}${i.tokenDeltaPercent.toFixed(2)}%`,l=e=>{let t=i.cohorts[e];return`${t.passedTaskCount}/${t.comparedTaskCount} passed`};return(0,P.jsxs)(`section`,{className:`labs-run-summary-card`,children:[(0,P.jsx)(`header`,{children:(0,P.jsx)(`h3`,{children:`Token efficiency`})}),a?(0,P.jsxs)(`div`,{className:`labs-benchmark-efficiency-summary`,children:[(0,P.jsxs)(`strong`,{children:[i.passedTaskCount,` of `,i.comparedTaskCount,` tasks passed`]}),(0,P.jsxs)(`p`,{children:[`A task passes only when its refined token count is strictly lower than its own baseline. `,i.failedTaskCount,` failed this token-efficiency test; aggregate usage changed by `,c,`.`]})]}):(0,P.jsx)(`p`,{className:`training-run-placeholder`,children:`Paired task-level token evidence is unavailable for this run.`}),(0,P.jsxs)(`dl`,{className:`labs-run-detail-list`,children:[(0,P.jsx)(X,{label:`Execution`,value:w(t.status)}),(0,P.jsx)(X,{label:`Token-efficiency result`,value:s?`Passed`:`Failed`}),(0,P.jsx)(X,{label:`Efficiency passes`,value:`${i.passedTaskCount}/${i.comparedTaskCount}`}),(0,P.jsx)(X,{label:`Efficiency failures`,value:`${i.failedTaskCount}/${i.comparedTaskCount}`}),(0,P.jsx)(X,{label:`All-task foreground tokens`,value:`${i.baselineTokens.toLocaleString()} → ${i.refinedTokens.toLocaleString()}`}),(0,P.jsx)(X,{label:`Aggregate token change`,value:c}),(0,P.jsx)(X,{label:`Adaptation replay`,value:l(`adaptation`)}),(0,P.jsx)(X,{label:`Held-out replay`,value:l(`held_out`)}),(0,P.jsx)(X,{label:`Task quality`,value:`${i.baselinePassedCount}/${i.comparedTaskCount} → ${i.refinedPassedCount}/${i.comparedTaskCount}`}),(0,P.jsx)(X,{label:`Result lineage`,value:e.lineage.valid?`Valid`:`Invalid`}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`dt`,{children:`Taskset`}),(0,P.jsx)(`dd`,{children:r?(0,P.jsx)(`button`,{className:`labs-run-taskset-link`,type:`button`,onClick:r,children:n}):n})]})]})]})}function J({title:e,baseline:t,candidate:n,format:r,summarize:i=e=>e.reduce((e,t)=>e+t,0)}){let a=t.filter(e=>e!==null),o=n.filter(e=>e!==null),s=Math.max(1,...a,...o),c=Math.max(2,t.length,n.length),l=e=>{let t=[],n=[];return e.forEach((e,r)=>{if(e===null){n.length&&t.push(n.join(` `)),n=[];return}let i=6+r/(c-1)*88,a=44-e/s*36;n.push(`${i},${a}`)}),n.length&&t.push(n.join(` `)),t},u=e=>e.flatMap((e,t)=>e===null?[]:[{x:6+t/(c-1)*88,y:44-e/s*36}]);return(0,P.jsxs)(`section`,{className:`labs-benchmark-line-chart`,children:[(0,P.jsxs)(`header`,{children:[(0,P.jsx)(`h4`,{children:e}),(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`span`,{children:[`Baseline `,r(i(a))]}),(0,P.jsxs)(`span`,{children:[`Refined `,r(i(o))]})]})]}),(0,P.jsxs)(`svg`,{"aria-label":e,role:`img`,viewBox:`0 0 100 50`,preserveAspectRatio:`none`,children:[(0,P.jsx)(`line`,{x1:`6`,x2:`94`,y1:`44`,y2:`44`}),l(t).map((e,t)=>(0,P.jsx)(`polyline`,{className:`baseline`,points:e},`baseline-${t}`)),l(n).map((e,t)=>(0,P.jsx)(`polyline`,{className:`candidate`,points:e},`candidate-${t}`)),u(t).map((e,t)=>(0,P.jsx)(`circle`,{className:`baseline`,cx:e.x,cy:e.y,r:`1`},`baseline-point-${t}`)),u(n).map((e,t)=>(0,P.jsx)(`circle`,{className:`candidate`,cx:e.x,cy:e.y,r:`1`},`candidate-point-${t}`))]})]})}function Y({receipt:e,onOpenConversation:t}){let n=e.schemaVersion===`openpond.modelEvaluationReceipt.v1`?d(e.attempts??[]):e.attempts??[];return(0,P.jsxs)(`section`,{className:`labs-run-summary-card`,children:[(0,P.jsx)(`header`,{children:(0,P.jsx)(`h3`,{children:e.schemaVersion===`openpond.modelEvaluationReceipt.v1`?`Selected task results`:`Completed attempts`})}),(0,P.jsx)(`div`,{className:`training-table-wrap`,children:(0,P.jsxs)(`table`,{className:`training-data-table labs-benchmark-attempt-table`,children:[(0,P.jsx)(`thead`,{children:(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`th`,{children:`Task`}),(0,P.jsx)(`th`,{children:`Phase`}),(0,P.jsx)(`th`,{children:`Result`}),(0,P.jsx)(`th`,{children:`Score`}),(0,P.jsx)(`th`,{children:`Tokens`}),(0,P.jsx)(`th`,{children:`Work chat`})]})}),(0,P.jsx)(`tbody`,{children:n.map(e=>(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`td`,{children:ke(e.taskId)}),(0,P.jsx)(`td`,{children:e.phase}),(0,P.jsx)(`td`,{children:(0,P.jsx)(b,{label:e.passed?`Passed`:`Failed`,value:e.passed?`succeeded`:`failed`})}),(0,P.jsx)(`td`,{children:e.score===null?`—`:e.score.toFixed(2)}),(0,P.jsx)(`td`,{children:e.totalTokens.toLocaleString()}),(0,P.jsx)(`td`,{children:e.sessionId?(0,P.jsx)(`button`,{className:`labs-run-taskset-link`,type:`button`,onClick:()=>t(e.sessionId),children:`Open chat`}):`Not retained`})]},`${e.phase}:${e.attemptId}`))})]})})]})}function ke(e){return e.replace(/^(?:adaptation|frozen)-/,``).replaceAll(`-`,` `).replace(/^./,e=>e.toUpperCase())}function X({label:e,value:t}){return(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`dt`,{children:e}),(0,P.jsx)(`dd`,{children:t})]})}function Ae(e){let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(r===0?0:2)} ${t[r]}`}function je({error:e,events:t,loading:n,pending:r}){let[i,a]=(0,N.useState)(!1),[o,s]=(0,N.useState)({}),[c,l]=(0,N.useState)(!0),u=(0,N.useRef)(null),d=(0,N.useRef)(null),f=(0,N.useRef)(null),p=(0,N.useMemo)(()=>Me(t),[t]),m=(0,N.useMemo)(()=>t.filter(e=>o[Z(e)]??Ne(Z(e))),[t,o]),h=p.filter(e=>o[e.id]??Ne(e.id)).length,g=p.length>0&&h===p.length,_=h>0&&!g;return(0,N.useEffect)(()=>{f.current&&(f.current.indeterminate=_)},[_]),(0,N.useEffect)(()=>{if(!i)return;let e=e=>{d.current?.contains(e.target)||a(!1)},t=e=>{e.key===`Escape`&&a(!1)};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[i]),(0,N.useLayoutEffect)(()=>{let e=u.current;e&&c&&(e.scrollTop=e.scrollHeight)},[e,c,r,m]),n&&!t.length?(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:`Loading run events…`}):t.length?(0,P.jsxs)(`div`,{className:`training-event-log-shell`,children:[(0,P.jsxs)(`div`,{className:`training-event-log-toolbar`,children:[(0,P.jsx)(`div`,{children:(0,P.jsx)(`strong`,{children:`Activity log`})}),(0,P.jsxs)(`div`,{className:`training-event-filter`,ref:d,children:[(0,P.jsxs)(`button`,{"aria-expanded":i,"aria-haspopup":`menu`,className:`training-event-filter-trigger`,type:`button`,onClick:()=>a(e=>!e),children:[(0,P.jsx)(ie,{"aria-hidden":`true`,size:14}),`Event types`,(0,P.jsxs)(`span`,{children:[h,`/`,p.length]}),(0,P.jsx)(E,{"aria-hidden":`true`,size:13})]}),i?(0,P.jsxs)(`div`,{"aria-label":`Filter training activity by event type`,className:`training-event-filter-menu`,role:`menu`,children:[(0,P.jsxs)(`label`,{className:`training-event-filter-option select-all`,children:[(0,P.jsx)(`input`,{checked:g,ref:f,type:`checkbox`,onChange:e=>{let t=e.currentTarget.checked;s(Object.fromEntries(p.map(e=>[e.id,t])))}}),(0,P.jsx)(`span`,{className:`training-event-filter-check`,children:(0,P.jsx)(j,{"aria-hidden":`true`,size:12})}),`Select all`]}),(0,P.jsx)(`div`,{className:`training-event-filter-options`,children:p.map(e=>{let t=o[e.id]??Ne(e.id);return(0,P.jsxs)(`label`,{className:`training-event-filter-option`,children:[(0,P.jsx)(`input`,{checked:t,type:`checkbox`,onChange:t=>s(n=>({...n,[e.id]:t.currentTarget.checked}))}),(0,P.jsx)(`span`,{className:`training-event-filter-check`,children:(0,P.jsx)(j,{"aria-hidden":`true`,size:12})}),(0,P.jsx)(`span`,{children:e.label}),(0,P.jsx)(`small`,{children:e.count.toLocaleString()})]},e.id)})})]}):null]})]}),(0,P.jsxs)(`div`,{"aria-label":`Training activity log`,"aria-live":`polite`,className:`training-event-log`,ref:u,role:`log`,onScroll:e=>{let t=e.currentTarget,n=t.scrollHeight-t.scrollTop-t.clientHeight;l(n<=6)},children:[(0,P.jsxs)(`div`,{"aria-hidden":`true`,className:`training-event-log-header`,children:[(0,P.jsx)(`span`,{children:`Time`}),(0,P.jsx)(`span`,{children:`Event type`}),(0,P.jsx)(`span`,{children:`Details`})]}),m.map(e=>(0,P.jsxs)(`div`,{className:`training-event-log-line ${e.type}`,children:[(0,P.jsx)(`time`,{dateTime:e.timestamp,children:C(e.timestamp)}),(0,P.jsx)(`span`,{children:Pe(Z(e))}),(0,P.jsx)(`code`,{children:Fe(e)})]},e.id)),r&&!e?(0,P.jsxs)(`div`,{className:`training-event-log-loading`,role:`status`,children:[(0,P.jsx)(re,{"aria-hidden":`true`,className:`spin`,size:14}),(0,P.jsx)(`span`,{className:`sr-only`,children:`Waiting for new activity`})]}):null,m.length?null:(0,P.jsx)(`div`,{className:`training-event-log-empty`,children:`No events match the selected event types.`}),e?(0,P.jsxs)(`div`,{className:`training-event-log-line failure`,children:[(0,P.jsx)(`time`,{children:`—`}),(0,P.jsx)(`span`,{children:`Failure`}),(0,P.jsx)(`code`,{children:e})]}):null]})]}):(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:e??`No normalized run events were recorded.`})}function Z(e){return typeof e.payload.remoteEventType==`string`&&e.payload.remoteEventType.trim()?e.payload.remoteEventType:typeof e.payload.telemetryType==`string`&&e.payload.telemetryType.trim()?e.payload.telemetryType:e.type}function Me(e){let t=new Map;for(let n of e){let e=Z(n);t.set(e,(t.get(e)??0)+1)}return[...t.entries()].map(([e,t])=>({id:e,count:t,label:Pe(e)})).sort((e,t)=>e.label.localeCompare(t.label))}function Ne(e){return e!==`metric`&&!e.endsWith(`_metric`)}function Pe(e){return e.replaceAll(`_`,` `).replace(/^./,e=>e.toUpperCase())}function Fe(e){let t=e.payload,n=ze(t.step),r=ze(t.maxSteps);if(typeof t.telemetryType==`string`){let e=typeof t.message==`string`?t.message:null,r=typeof t.errorCode==`string`?t.errorCode:null,i=typeof t.telemetrySource==`string`?` · ${t.telemetrySource}`:``;return`${e??t.telemetryType.replaceAll(`_`,` `)}${n==null?``:` · step ${n}`}${i}${r?` · ${r}`:``}`}if(typeof t.remoteEventType==`string`){let e=Ie(t.remoteEventType),r=typeof t.remotePhase==`string`?Le(t.remotePhase):null,i=typeof t.errorCode==`string`&&t.errorCode.trim()?t.errorCode.trim():null;return[e,r,n==null?null:`step ${n}`,i?`error ${i}`:null].filter(e=>!!e).join(` · `)}if(e.type===`start`)return typeof t.device==`string`?`Worker started on ${t.device}.`:`Worker started.`;if(e.type===`progress`&&n!=null)return r==null?`Step ${n}.`:`Step ${n} of ${r}.`;if(e.type===`metric`){let e=typeof t.metricKind==`string`?t.metricKind.replaceAll(`_`,` `):`metric`,r=[Q(`loss`,t.loss),Q(`reward`,t.meanReward??t.reward),Q(`policy loss`,t.policyLoss),Q(`value loss`,t.valueLoss),Q(`preference accuracy`,t.preferenceAccuracy,Be)].filter(e=>!!e),i=typeof t.failureClass==`string`?t.failureClass:null,a=typeof t.failureCode==`string`?t.failureCode:null,o=typeof t.metricId==`string`&&typeof t.value==`number`?` · ${t.metricId}: ${t.value.toPrecision(4)}`:``;return`${e}${n==null?``:` · step ${n}`}${o}${i?` · ${i}`:``}${a?` · ${a}`:``}${r.length?` · ${r.join(` · `)}`:``}`}if(e.type===`checkpoint`){let e=ze(t.policyVersion),n=ze(t.sizeBytes),r=[e==null?null:`policy ${e}`,n==null?null:Ae(n),t.final===!0?`final`:null].filter(e=>!!e);return r.length?`Checkpoint committed · ${r.join(` · `)}.`:`Checkpoint committed.`}if(e.type===`complete`){let e=ze(t.artifactCount);return e==null?`Worker completed.`:`Worker completed with ${e} artifacts.`}return e.type===`failure`&&typeof t.message==`string`?t.message:Object.keys(t).length?JSON.stringify(t):`Recorded.`}function Ie(e){return{drain:`Rollout drain`,infer:`Model inference`,materialize_checkpoint:`Checkpoint materialization`,optimizer_metric:`Optimizer metric`,provision_gpu:`GPU provisioning`,rollout_metric:`Rollout trajectory`,score_reward_model:`Reward scoring`,start_inference:`Policy server`,train_step:`Optimizer update`,upload_checkpoint:`Checkpoint upload`}[e]??Re(e)}function Le(e){return{committed:`committed`,completed:`completed`,eligible:`recorded`,failed:`failed`,running:`running`,succeeded:`succeeded`}[e]??Re(e).toLocaleLowerCase()}function Re(e){return e.replaceAll(`_`,` `).replace(/^./,e=>e.toUpperCase())}function Q(e,t,n=e=>new Intl.NumberFormat(void 0,{maximumFractionDigits:4}).format(e)){let r=ze(t);return r==null?null:`${e} ${n(r)}`}function ze(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function Be(e){return`${(e*100).toFixed(1)}%`}function Ve({connection:e,detailTab:t,onDetailTabChange:n,selectedEntryKey:r,workproduct:o,runs:d,training:f,onOpenDataset:b,onOpenConversation:x,detailKind:C}){let E=f.payload,[D,re]=(0,N.useState)(null),k=(0,N.useMemo)(()=>l(o,d,E),[d,E,o]),A=(0,N.useMemo)(()=>h(o,d,E),[d,E,o]),j=(0,N.useMemo)(()=>m(o,E),[E,o]),ie=(0,N.useMemo)(()=>u(o,d,E),[d,E,o]),se=(0,N.useMemo)(()=>new Map(ie.map(e=>[e.id,e])),[ie]),M=(0,N.useMemo)(()=>s(k,A),[k,A]).find(e=>e.key===r)??null,F=r.startsWith(`model-run:`)?r.slice(10):null,I=F?j.find(e=>e.id===F)??null:M?.job?j.find(e=>e.id===M.job?.metadata.modelRunId)??null:null,L=M?.job??(I?E?.jobs.find(e=>e.id===I.id||e.metadata.modelRunId===I.id)??null:null),pe=E?.comparisonSeriesEntries.find(e=>e.modelRunId===I?.id||e.modelRunId===L?.metadata.modelRunId)??null,he=a.shape.recovery.safeParse(L?.metadata.hostedRecovery),R=he.success?he.data:void 0,ge=O.shape.continuation.safeParse(L?.metadata.hostedContinuation),z=ge.success?ge.data:void 0,_e=z?A.find(e=>e.lineage.jobId===z.sourceArtifact.jobId):void 0,ve=R?`Recovered checkpoint`:_e?`Version ${_e.number}`:z?`Checkpoint ${z.sourceArtifact.checkpointId}`:typeof L?.metadata.parentHostedArtifactId==`string`?`Prior hosted run`:ue(E,pe),ye=(0,N.useMemo)(()=>{let e=v(k,A,j);return p(e,I?.kind===`evaluation`?`evals`:`training`)},[k,j,I?.kind,A]),xe=ye.findIndex(e=>e.key===r||L!==null&&e.job?.id===L.id||I!==null&&e.lifecycleRun?.id===I.id),B=xe<0?null:ye.length-xe,V=M?.version??(I?.adapterArtifactLineageId?A.find(e=>e.lineage.id===I.adapterArtifactLineageId)??null:null),H=(I?E?.modelVersions.find(e=>e.id===I.modelVersionId)?.baseModel.modelId:null)??E?.modelVersions.filter(e=>e.modelId===o.id&&e.kind===`base_reference`).sort((e,t)=>t.version-e.version)[0]?.baseModel.modelId??(typeof L?.metadata.baseModelId==`string`?L.metadata.baseModelId:null),U=V?.lineage.frozenEvaluationArtifactId??null,W=V?.plan??(L?se.get(L.planId)??null:null),G=V?.taskset??_(E).find(e=>e.id===(I?.taskset.id??W?.tasksetId??L?.metadata.tasksetId))??null,Te=G?.name??(typeof L?.metadata.tasksetId==`string`?L.metadata.tasksetId:`Unavailable`),Ee=I?.method??W?.recipe.method??Ke(L?.metadata),K=Ce(e,L?.id??null,L?.status??null,t===`evaluation`),De=L?E?.rolloutReceipts.filter(e=>e.jobId===L.id)??[]:[],q=K.detail?.managedEvidence??null,Oe=K.detail?.events.some(e=>e.type===`metric`&&e.payload.metricKind===`rollout_trajectory`)??!1,J=c({lifecycleRun:I,job:K.detail?.job??L}),Y=y(J),ke=I?.status===`failed`&&L?.metadata.phase===`artifact_collection_failed`,X=Ee===`grpo`,Z=Ue(L?.metadata),Me=(W&&(W.recipe.method===`sft`||W.recipe.method===`dpo`||W.recipe.method===`grpo`)?W.recipe.optimizer.maxSteps:null)??q?.progress.targetOptimizerSteps??null,Ne=Me!==null&&typeof L?.metadata.progress==`number`&&Number.isFinite(L.metadata.progress)?Math.floor(Math.max(0,L.metadata.progress)*Me):0,Pe=Math.max(0,Z?.optimizerUpdatesApplied??0,Ne,K.detail?.policyMetrics.reduce((e,t)=>Math.max(e,t.step),0)??0,K.detail?.stepMetrics.reduce((e,t)=>Math.max(e,t.step),0)??0,q?.progress.committedOptimizerSteps??0),Fe=He(X&&Z?Z.groupsCompleted:Pe,X&&Z?Z.groupsTarget:Me),Ie=C===`run`?{id:`details`,label:`Details`}:{id:`overview`,label:`Overview`},Le=[...C===`run`&&L?[{id:`metrics`,label:`Metrics`}]:[],Ie,...C===`version`&&L?[{id:`metrics`,label:`Metrics`}]:[],{id:`evaluation`,label:`Evaluation`},...De.length||Oe?[{id:`rollouts`,label:`Rollouts`}]:[],{id:`artifacts`,label:`Artifacts`},...L?[{id:`activity`,label:`Activity`}]:[]],Re=t,Q=Le.some(e=>e.id===Re)?Re:Le[0].id;return!M&&!I&&f.loading?(0,P.jsxs)(`div`,{className:`labs-model-version-detail`,children:[(0,P.jsx)(ae,{title:`Run details`}),(0,P.jsx)(`p`,{role:`status`,children:`Loading training run…`})]}):!M&&!I?(0,P.jsx)(`div`,{className:`labs-model-version-detail`,children:(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:`This training attempt is no longer available.`})}):I?.kind===`evaluation`?(0,P.jsx)(We,{run:I,runNumber:B,tasksetName:G?.name??`Unavailable`,onOpenTaskset:G?()=>b(G.id):void 0,onOpenConversation:x}):(0,P.jsxs)(`div`,{className:`labs-model-version-detail`,children:[(0,P.jsx)(ae,{title:I||L?B?`Run ${B}`:`Run details`:V?`Version ${V.number}`:`Run details`,description:`${te(Ee)} on ${Ge(W,H)}`,status:(0,P.jsx)(g,{status:J}),actions:Y&&(I||L)?(0,P.jsx)(`button`,{type:`button`,className:`training-button secondary`,disabled:f.busyAction!==null||J===`cancelling`,onClick:async()=>{let e=I?.id??L.id,t=I?await f.actions.cancelModelRun(I.id):await f.actions.cancelJob(L.id);re({runId:e,message:t?`Cancellation requested. Waiting for the training service to confirm.`:`Cancellation could not be requested. Try again.`})},children:J===`cancelling`?`Cancelling…`:f.busyAction===`cancel-model-run`||f.busyAction===`cancel-job`?`Requesting cancellation…`:`Cancel run`}):ke&&I?(0,P.jsx)(`button`,{type:`button`,className:`training-button secondary`,disabled:f.busyAction!==null,onClick:async()=>{let e=await f.actions.retryModelRunCollection(I.id);re({runId:I.id,message:e?.state===`succeeded`?`Outputs collected from the completed training job.`:`Collection failed. The training job and its outputs are retained.`})},children:f.busyAction===`retry-model-run-collection`?`Collecting…`:`Retry collection`}):void 0,metrics:[{label:X&&Z?`Training groups`:`Training steps`,value:Fe.value},...R&&Z?[{label:`Optimizer updates`,value:`${Math.max(0,Z.optimizerUpdatesApplied-R.policyVersion)} new · ${R.policyVersion} reused`}]:[],{label:Y?`Latest reward`:`Final reward`,value:Je(I?.reward?.raw??q?.reward.finalMean??null)},{label:`Duration`,value:I?T(I.startedAt,S(I.status,I.completedAt,I.updatedAt)):L?T(L.startedAt,S(L.status,L.completedAt,L.updatedAt)):`Not recorded`},{label:`Output`,value:V?`Version ${V.number}`:`No version`},{label:`Based on`,value:ve},{label:`Taskset`,value:Te,onSelect:G?()=>b(G.id):void 0,ariaLabel:G?`Open Taskset ${G.name}`:void 0}]}),(0,P.jsx)(ee,{recovery:R}),z?(0,P.jsx)(i,{continuation:{sourceJobId:z.sourceArtifact.jobId,checkpointId:z.sourceArtifact.checkpointId}}):null,D&&D.runId===(I?.id??L?.id)?(0,P.jsx)(`p`,{role:`status`,children:D.message}):null,(0,P.jsxs)(`section`,{className:`labs-run-detail-tabs`,children:[(0,P.jsx)(`div`,{className:`training-detail-tabs`,role:`tablist`,"aria-label":`Run details`,children:Le.map(e=>(0,P.jsx)(`button`,{"aria-controls":`run-detail-panel-${e.id}`,"aria-selected":Q===e.id,className:Q===e.id?`active`:void 0,id:`run-detail-tab-${e.id}`,role:`tab`,type:`button`,onClick:()=>n(e.id),children:e.label},e.id))}),(0,P.jsxs)(`div`,{"aria-labelledby":`run-detail-tab-${Q}`,className:`labs-run-detail-tab-panel`,id:`run-detail-panel-${Q}`,role:`tabpanel`,children:[Q===Ie.id?(0,P.jsx)(we,{baseModel:Ge(W,H),compute:I?ne(I.destinationId??``):W?ne(W.destinationId):L?ne(L.destinationId):`Not recorded`,duration:I?T(I.startedAt,S(I.status,I.completedAt,I.updatedAt)):L?T(L.startedAt,S(L.status,L.completedAt,L.updatedAt)):`Not recorded`,failure:L?.error??I?.failure??null,configuration:[...z?[{label:`Starting checkpoint`,value:[_e?`Version ${_e.number}`:null,z.sourceArtifact.checkpointId].filter(Boolean).join(` · `)},{label:`Parent run`,value:z.sourceArtifact.jobId},{label:`Parent artifact`,value:z.sourceArtifact.artifactId},{label:`Optimizer`,value:z.optimizerMode===`reset`?`Reset`:`Continue`}]:le(E,pe),...ce(W)],evidence:q,method:te(Ee),output:V?`Version ${V.number}`:`No version created`,reward:I?.reward?.raw??q?.reward.finalMean??null,status:I?w(I.status):L?w(L.status):`Imported`,statusValue:I?.status??L?.status??`imported`,taskset:Te,telemetry:I?.receipt?.schemaVersion===`openpond.modelRunReceipt.v1`?I.receipt.telemetry:null,title:I||L?B?`Run ${B}`:`Run details`:V?`Version ${V.number}`:`Run details`,versionStatus:V?V.current?`Active`:`Available`:null,onOpenTaskset:G?()=>b(G.id):void 0,showHeader:!1}):null,Q===`metrics`&&L?(0,P.jsx)(oe,{detail:K.detail,error:K.error,loading:K.loading,taskset:G}):null,Q===`artifacts`?(0,P.jsxs)(`dl`,{className:`training-configuration-list`,children:[(0,P.jsx)($,{label:`Training attempt`,value:L?.id??`Provider import`}),(0,P.jsx)($,{label:`Taskset`,value:Te}),(0,P.jsx)($,{label:`Prepared data`,value:L?.bundleHash??`Provider managed`}),(0,P.jsx)($,{label:`Version ID`,value:V?.lineage.id??`No version created`}),q?.checkpoint?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)($,{label:`Checkpoint`,value:q.checkpoint.id}),(0,P.jsx)($,{label:`Checkpoint size`,value:q.checkpoint.sizeBytes==null?`Not reported`:Ae(q.checkpoint.sizeBytes)}),(0,P.jsx)($,{label:`Checkpoint hash`,value:q.checkpoint.sha256??`Not reported`})]}):null,q?.canonicalPublication.state?(0,P.jsx)($,{label:`Registry publication`,value:Ye(q.canonicalPublication.state)}):null]}):null,Q===`evaluation`?(0,P.jsxs)(`div`,{className:`training-run-evaluation`,children:[!q?.evaluations.length||K.detail?.evaluation?(0,P.jsx)(me,{detail:K.detail,loading:K.loading,pending:Y}):null,!K.detail?.evaluation&&q?.evaluations.length?(0,P.jsx)(`dl`,{className:`labs-inline-facts`,children:q.evaluations.map(e=>(0,P.jsxs)(N.Fragment,{children:[(0,P.jsx)($,{label:e.kind===`baseline`?`Baseline score`:`Candidate score`,value:e.score==null?`Not reported`:e.score.toFixed(6)}),(0,P.jsx)($,{label:e.kind===`baseline`?`Baseline coverage`:`Candidate coverage`,value:e.taskCount==null?`Not reported`:e.targetTaskCount==null?`${e.taskCount} ${e.taskCount===1?`task`:`tasks`} scored`:`${e.taskCount} of ${e.targetTaskCount} ${e.targetTaskCount===1?`task`:`tasks`} scored`})]},`${e.kind}:${e.policyVersion}`))}):null,V&&L?.destinationId===`openpond_managed`?(0,P.jsx)(be,{connection:e,lineageId:V.lineage.id,onSaved:f.refresh},V.lineage.id):null,!V&&L?.metadata.source===`hosted_model_project_import`&&L.status===`succeeded`?(0,P.jsx)(be,{connection:e,jobId:L.id,onSaved:f.refresh},`candidate:${L.id}`):null,L&&q?.evaluations.length?(0,P.jsx)(Se,{connection:e,jobId:L.id,evaluations:q.evaluations},L.id):null,U?(0,P.jsx)(`button`,{className:`training-button secondary`,type:`button`,onClick:()=>void f.actions.downloadArtifact(U),children:`Download evaluation receipt`}):null]}):null,Q===`rollouts`?De.length?(0,P.jsx)(fe,{receipts:De}):(0,P.jsx)(de,{events:K.detail?.events??[]}):null,Q===`activity`&&L?(0,P.jsx)(je,{error:L.error??K.error,events:K.detail?.events??[],loading:K.loading,pending:Y}):null]})]})]})}function He(e,t){let n=Math.max(0,Math.floor(e));if(t===null||!Number.isFinite(t)||t<=0)return{value:n.toLocaleString(),hint:n===1?`completed update`:`completed updates`};let r=Math.max(1,Math.floor(t));return{value:`${n.toLocaleString()} / ${r.toLocaleString()}`,hint:`completed / planned`}}function Ue(e){let t=e?.rolloutProgress;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t;return[`groupsCompleted`,`groupsTarget`,`optimizerUpdatesApplied`,`optimizerUpdatesSkipped`].some(e=>typeof n[e]!=`number`||!Number.isInteger(n[e])||n[e]<0)?null:{groupsCompleted:n.groupsCompleted,groupsTarget:n.groupsTarget,optimizerUpdatesApplied:n.optimizerUpdatesApplied,optimizerUpdatesSkipped:n.optimizerUpdatesSkipped}}function We({run:e,runNumber:t,tasksetName:n,onOpenTaskset:r,onOpenConversation:i}){let[a,s]=(0,N.useState)(`results`),c=e.receipt?.schemaVersion===`openpond.modelEvaluationReceipt.v1`?e.receipt:null,l=e.receipt?.schemaVersion===`openpond.modelEvaluationStopReceipt.v1`?e.receipt:null,u=c?f(c):null,d=c?o(c):null;return(0,P.jsxs)(`div`,{className:`labs-model-version-detail labs-model-evaluation-detail`,children:[(0,P.jsx)(ae,{title:t?`Eval ${t}`:`Evaluation run`,description:`Harness Refiner benchmark · ${n}`,status:(0,P.jsx)(b,{label:c?d?.comparedTaskCount?`${d.passedTaskCount}/${d.comparedTaskCount} passed`:`No paired result`:l?`Inconclusive`:w(e.status),value:c?d?.comparedTaskCount&&d.passed?`succeeded`:`neutral`:l?.terminalClassification??e.status}),metrics:[{label:`Baseline pass rate`,value:c?`${(c.quality.baselinePassRate*100).toFixed(1)}%`:`—`},{label:`Candidate pass rate`,value:c?`${(c.quality.candidatePassRate*100).toFixed(1)}%`:`—`},{label:`Scenarios`,value:c?.attempts?.length??0},{label:`Execution`,value:w(e.status)}]}),(0,P.jsx)(`div`,{className:`training-detail-tabs`,role:`tablist`,"aria-label":`Evaluation details`,children:[`results`,`scenarios`,`activity`].map(e=>(0,P.jsx)(`button`,{className:a===e?`active`:void 0,"aria-selected":a===e,role:`tab`,type:`button`,onClick:()=>s(e),children:e===`results`?`Results`:e===`scenarios`?`Scenarios`:`Activity`},e))}),a===`results`&&c?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(se,{series:[{id:`baseline`,label:`Held-out baseline`,inputTokens:u.baseline.inputTokens,outputTokens:u.baseline.outputTokens,tokens:u.baseline.totalTokens,passRate:c.quality.baselinePassRate,costUsd:u.baseline.costUsd},{id:`candidate`,label:`Held-out refined`,inputTokens:u.candidate.inputTokens,outputTokens:u.candidate.outputTokens,tokens:u.candidate.totalTokens,passRate:c.quality.candidatePassRate,costUsd:u.candidate.costUsd}]}),(0,P.jsx)(se,{series:[{id:`adaptation-baseline`,label:`Adaptation baseline`,inputTokens:u.adaptation.inputTokens,outputTokens:u.adaptation.outputTokens,tokens:u.adaptation.totalTokens,passRate:c.quality.adaptationBaselinePassRate,costUsd:u.adaptation.costUsd},{id:`adaptation-candidate`,label:`Adaptation replay`,inputTokens:u.candidate_adaptation.inputTokens,outputTokens:u.candidate_adaptation.outputTokens,tokens:u.candidate_adaptation.totalTokens,passRate:c.quality.adaptationCandidatePassRate,costUsd:u.candidate_adaptation.costUsd}]}),(0,P.jsx)(Oe,{receipt:c,run:e,tasksetName:n,onOpenTaskset:r})]}):a===`results`&&l?(0,P.jsx)(K,{receipt:l,onOpenConversation:i}):a===`results`?(0,P.jsx)(`section`,{className:`labs-run-summary-card`,children:e.failure?(0,P.jsx)(`p`,{className:`training-run-placeholder`,children:e.failure}):(0,P.jsx)(De,{run:e})}):null,a===`scenarios`&&c?(0,P.jsxs)(P.Fragment,{children:[(c.attempts??[]).length?(0,P.jsx)(q,{receipt:c}):null,(c.attempts??[]).length?(0,P.jsx)(Y,{receipt:c,onOpenConversation:i}):(0,P.jsx)(`div`,{className:`training-run-placeholder`,children:`No per-scenario attempts were retained.`})]}):null,a===`activity`?(0,P.jsxs)(`dl`,{className:`labs-inline-facts`,children:[(0,P.jsx)($,{label:`Run ID`,value:e.id}),(0,P.jsx)($,{label:`Status`,value:w(e.status)}),(0,P.jsx)($,{label:`Started`,value:e.startedAt?C(e.startedAt):`Not started`}),(0,P.jsx)($,{label:`Completed`,value:e.completedAt?C(e.completedAt):`In progress`})]}):null]})}function Ge(e,t=null){if(!e)return t?qe(t):`Not recorded`;let n=e.recipe.method===`sft`||e.recipe.method===`grpo`?e.recipe.baseModel:e.recipe.method===`dpo`?e.recipe.policyModel:e.recipe.method===`ppo`?e.recipe.policyOptimization.policyModel:null;return n?qe(n.id):`Not recorded`}function Ke(e){let t=e?.trainingMethod;return t===`sft`||t===`dpo`||t===`grpo`||t===`ppo`||t===`sdft`||t===`opd`||t===`opsd`||t===`sdpo`?t:null}function qe(e){return e.split(`/`).at(-1)??e}function Je(e){return e===null?`Not reported`:e.toFixed(4)}function $({label:e,value:t}){return(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`dt`,{children:e}),(0,P.jsx)(`dd`,{children:t})]})}function Ye(e){return e?e.replaceAll(`_`,` `).replace(/^./,e=>e.toUpperCase()):`Pending`}export{Ve as LabModelVersionDetailPage,Fe as eventSummary,He as formatTrainingProgress,Ue as managedRolloutProgress};
@@ -1 +1 @@
1
- .run-flow{width:100%;min-width:0}.run-flow-diagram{width:100%;height:auto;display:block;overflow:visible}.run-flow-box{fill:var(--surface-panel);stroke:var(--border-default);stroke-width:1px}.run-flow-loop{fill:none;stroke:var(--border-default);stroke-dasharray:4 5}.run-flow-loop.live{stroke:color-mix(in srgb, var(--accent-primary) 45%, transparent);animation:1.2s linear infinite run-flow-march}.run-flow-caption{fill:var(--text-muted);font-size:11px}.run-flow-label{fill:var(--text-primary);font-size:12px;font-weight:500}.run-flow-status{fill:var(--text-muted);font-size:11px}.run-flow-detail{fill:var(--accent-primary);font-variant-numeric:tabular-nums;font-size:11px}.run-flow-node.pending .run-flow-label,.run-flow-node.missing .run-flow-label,.run-flow-node.pending .run-flow-detail,.run-flow-node.missing .run-flow-detail{fill:var(--text-muted)}.run-flow-node.missing .run-flow-box{stroke-dasharray:3 3}.run-flow-node.failed .run-flow-box{stroke:var(--status-danger)}.run-flow-node.active .run-flow-box{stroke:var(--accent-primary)}.run-flow-node.done .run-flow-box{stroke:color-mix(in srgb, var(--accent-primary) 55%, transparent)}.run-flow-wire{fill:none;stroke:var(--border-default);stroke-width:1.25px}.run-flow-wire.done{stroke:color-mix(in srgb, var(--accent-primary) 60%, var(--border-default))}.run-flow-arrow{fill:none;stroke:var(--text-muted);stroke-width:1.25px}.run-flow-stream{fill:none;stroke:var(--accent-primary);stroke-width:1.5px;stroke-dasharray:3 9;animation:.6s linear infinite run-flow-stream}.run-flow-packet,.run-flow-fill,.run-flow-shimmer{fill:var(--accent-primary)}.run-flow-track{fill:var(--border-default)}.run-flow-halo{fill:none;stroke:var(--accent-primary);stroke-width:1px;animation:1.8s ease-in-out infinite run-flow-halo}.run-flow-check{fill:none;stroke:var(--accent-primary);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.console-run-flow{scrollbar-width:thin;width:100%;padding:8px 0;overflow-x:auto}.run-flow-badge{fill:var(--surface-panel)}.training-rollout-groups{color:var(--text-muted);margin:12px 0;font-size:11px}.training-rollout-groups header{flex-wrap:wrap;justify-content:space-between;gap:10px;margin-bottom:10px;display:flex}.training-rollout-groups ol{max-height:220px;margin:0;padding:0;list-style:none;overflow:auto}.training-rollout-groups li{grid-template-columns:65px minmax(0,1fr) 80px;align-items:center;gap:8px;margin:7px 0;display:grid}.training-rollout-groups li>div{flex-wrap:wrap;gap:5px;display:flex}.training-rollout-cell{border:1px solid var(--border-default);border-radius:3px;width:14px;height:14px}.training-rollout-cell.scored{background:var(--accent-primary-fill);border-color:#0000}.training-rollout-cell.active{background:var(--accent-primary-fill);border-color:var(--accent-primary);animation:1.4s ease-in-out infinite run-flow-halo}.training-rollout-cell.failed{background:var(--status-danger-fill);border-color:#0000}.training-rollout-cell.reused{color:var(--text-secondary);border-style:double;place-items:center;font-size:10px;line-height:1;display:inline-grid}@keyframes run-flow-stream{to{stroke-dashoffset:-12px}}@keyframes run-flow-march{to{stroke-dashoffset:-18px}}@keyframes run-flow-halo{0%,to{opacity:.15}50%{opacity:.6}}@media (prefers-reduced-motion:reduce){.run-flow-loop.live,.run-flow-stream,.run-flow-halo,.training-rollout-cell.active{animation:none}.run-flow-packet,.run-flow-shimmer{display:none}}.training-rollout-legend{flex-wrap:wrap;gap:12px;display:flex}.training-rollout-legend>span{align-items:center;gap:5px;display:flex}.training-rollout-legend i{display:inline-block}.compute-gpu{--compute-color:var(--compute-gpu)}.compute-cpu{--compute-color:var(--compute-cpu)}.run-flow-node:is(.compute-gpu,.compute-cpu) .run-flow-box{fill:color-mix(in srgb, var(--compute-color) 7%, var(--surface-panel));stroke:color-mix(in srgb, var(--compute-color) 55%, var(--border-default))}.run-flow-node:is(.compute-gpu,.compute-cpu).active .run-flow-box{stroke:var(--compute-color)}.run-flow-node:is(.compute-gpu,.compute-cpu) :is(.run-flow-detail,.run-flow-fill,.run-flow-shimmer){fill:var(--compute-color)}.run-flow-node:is(.compute-gpu,.compute-cpu) :is(.run-flow-check,.run-flow-halo){stroke:var(--compute-color)}.run-flow-compute-legend{color:var(--text-muted);justify-content:flex-end;gap:16px;font-size:11px;display:flex}.run-flow-compute-legend span{align-items:center;gap:6px;display:inline-flex}.run-flow-compute-legend span:before{content:"";background:var(--compute-color);border-radius:2px;width:8px;height:8px}.sidebar-run-flow{padding:12px 0;container-type:inline-size}.sidebar-run-flow .run-flow-compute-legend{margin-bottom:12px}.sidebar-run-path{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:20px;margin:0;padding:0;list-style:none;display:grid}.sidebar-run-cluster{min-width:0;position:relative}.sidebar-run-path>.sidebar-run-cluster:only-child,.sidebar-run-path>.sidebar-run-cluster:last-child:nth-child(odd){grid-column:1/-1}.sidebar-run-path>.sidebar-run-cluster:nth-child(2n):before{content:"→";color:var(--text-muted);font-size:12px;position:absolute;bottom:32px;left:-17px}.sidebar-run-loop .sidebar-run-cluster:last-child:nth-child(odd):not(:first-child):before{content:"↓";color:var(--text-muted);font-size:12px;position:absolute;top:-18px;left:calc(50% - 4px)}.sidebar-run-card{border:1px solid var(--border-default);background:var(--surface-panel);overflow-wrap:anywhere;border-radius:8px;flex-direction:column;gap:5px;min-width:0;min-height:72px;padding:10px;font-size:11px;line-height:1.4;display:flex;position:relative}.sidebar-run-card:is(.compute-gpu,.compute-cpu){background:color-mix(in srgb, var(--compute-color) 7%, var(--surface-panel));border-color:color-mix(in srgb, var(--compute-color) 45%, var(--border-default))}.sidebar-run-card-heading{color:var(--text-primary);justify-content:space-between;align-items:flex-start;gap:5px;display:flex}.sidebar-run-card-heading strong{font-size:12px;font-weight:500}.sidebar-run-card-heading>span{color:var(--text-muted);white-space:nowrap;flex-shrink:0;padding-top:2px;font-size:9px}.sidebar-run-card-heading>svg{color:var(--compute-color,var(--accent-primary));flex-shrink:0;margin-top:2px}.sidebar-run-status{color:var(--text-secondary)}.sidebar-run-detail{color:var(--compute-color,var(--text-secondary));font-variant-numeric:tabular-nums}.sidebar-run-card.pending .sidebar-run-card-heading{color:var(--text-secondary)}.sidebar-run-card.missing{border-style:dashed}.sidebar-run-card.active{border-color:var(--compute-color,var(--accent-primary))}.sidebar-run-card.failed{border-color:var(--status-danger)}.sidebar-run-branch,.sidebar-run-worker{justify-items:stretch;gap:5px;display:grid}.sidebar-run-branch{margin-bottom:5px}.sidebar-run-worker{margin-top:5px}.sidebar-run-branch>svg,.sidebar-run-worker>svg{color:var(--text-muted);justify-self:center}.sidebar-run-next{color:var(--text-muted);margin:10px auto;display:block}.sidebar-run-loop{border:1px dashed var(--border-default);border-radius:12px;padding:12px}.sidebar-run-loop.active{border-color:var(--accent-primary)}.sidebar-run-loop>header{color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-bottom:12px;font-size:11px;display:flex}.sidebar-run-return{color:var(--text-muted);border-top:1px dashed var(--border-default);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding-top:10px;font-size:11px;display:flex}.sidebar-run-loop.active .sidebar-run-return{color:var(--accent-primary)}.sidebar-run-progress{background:var(--border-default);border-radius:2px;height:2px;margin-top:auto;overflow:hidden}.sidebar-run-progress>span{background:var(--compute-color,var(--accent-primary));height:100%;display:block}.sidebar-run-progress.indeterminate>span{width:35%;animation:1.6s ease-in-out infinite sidebar-run-progress}.sidebar-run-error summary{cursor:pointer;color:var(--text-secondary)}.sidebar-run-error summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:2px}.sidebar-run-error p{white-space:pre-wrap;color:var(--text-secondary);margin:8px 0 0}.training-rollout-attempts{margin-top:12px}.training-rollout-attempts>summary{cursor:pointer;color:var(--text-secondary);margin-bottom:8px}.training-rollout-attempts>summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:2px}.training-rollout-pagination{justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}@keyframes sidebar-run-progress{0%{transform:translate(-100%)}to{transform:translate(390%)}}@container (width<=260px){.sidebar-run-path{grid-template-columns:minmax(0,1fr)}.sidebar-run-path>.sidebar-run-cluster:nth-child(2n):before{display:none}}@media (prefers-reduced-motion:reduce){.sidebar-run-progress.indeterminate>span{opacity:.5;width:100%;animation:none}}.training-run-lineage{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;margin-top:5px;font-size:11px;display:flex}.training-run-lineage-compact{margin-top:0}.training-run-lineage a{color:var(--accent-primary);text-underline-offset:3px;align-items:center;gap:4px;text-decoration:underline;display:inline-flex}.training-policy-label,.training-optimizer-reset{align-items:center;gap:5px;display:inline-flex}.training-continual-status{color:var(--text-muted);margin-top:4px;font-size:11px;display:block}.training-adapter-stack{margin:12px 0 14px;font-size:11px;position:relative}.training-adapter-stack>div{border:1px solid var(--border-default);background:var(--surface-panel);border-radius:8px;flex-direction:column;gap:4px;display:flex}.training-adapter-parent{margin:0 16px -12px 0;padding:10px 12px 22px}.training-adapter-current{margin-left:16px;padding:10px 12px;position:relative}.training-adapter-stack span,.training-adapter-stack small{color:var(--text-muted)}.training-adapter-stack strong{color:var(--text-primary);font-weight:500}.run-flow-adapter-stack .run-flow-box{fill:var(--surface-panel);stroke:var(--border-default)}.sidebar-run-inspect{cursor:pointer;border-radius:inherit;background:0 0;border:0;position:absolute;inset:0}.sidebar-run-inspect:focus-visible{outline:2px solid var(--accent-primary);outline-offset:3px}.sidebar-run-error{position:relative}.run-flow-node[role=button]{cursor:pointer}.run-flow-node[role=button]:focus-visible .run-flow-box{stroke:var(--accent-primary);stroke-width:2px}.training-rollout-group-link{color:var(--accent-primary);text-align:left;font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}button.training-rollout-cell{cursor:pointer;padding:0}button.training-rollout-cell:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.training-rollout-attempts pre{white-space:pre-wrap;overflow-wrap:anywhere;max-width:420px;font:inherit}.run-flow-recorded-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-top:5px;display:inline-block}.run-flow-recorded{fill:var(--text-muted)}.run-evidence-panel{min-width:0;margin-top:14px}.run-evidence-panel>header{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.run-evidence-panel dl>div{border-bottom:1px solid var(--border-default);padding:10px 0}.run-evidence-panel dt{color:var(--text-muted);font-size:11px}.run-evidence-panel dd{margin:5px 0 0}.run-evidence-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;font:inherit;margin:0;overflow:auto}.run-evidence-tooltip{z-index:1200;border:1px solid var(--border-default);background:var(--surface-floating);width:min(280px,100vw - 24px);color:var(--text-primary);overflow-wrap:anywhere;pointer-events:none;box-shadow:0 4px 16px var(--shadow-color);border-radius:8px;gap:5px;padding:10px 12px;font-size:11px;line-height:1.45;display:grid;position:fixed}.run-evidence-tooltip small{color:var(--text-muted)}.training-evidence-workspace{min-width:0;margin-top:18px}.training-evidence-workspace>nav{white-space:nowrap;overflow-x:auto}.training-evidence-workspace>nav button{flex-shrink:0}.training-evidence-workspace>nav button[aria-pressed=true]{border-bottom-color:var(--accent-primary);color:var(--text-primary)}.training-evidence-logs{max-height:320px;padding:0;list-style:none;overflow:auto}.training-evidence-logs li{border-bottom:1px solid var(--border-default);overflow-wrap:anywhere;gap:5px;padding:8px 0;font-size:11px;display:grid}.training-evidence-logs time{color:var(--text-muted)}.training-continual-badge{background:color-mix(in srgb, var(--accent-primary) 12%, transparent);color:var(--accent-primary);vertical-align:middle;border-radius:4px;align-items:center;gap:3px;padding:2px 5px;font-size:10px;display:inline-flex}.model-journey-title-row{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.sidebar-run-inspect:hover,.sidebar-run-inspect:active{box-shadow:none;background:0 0}.sidebar-run-inspect:focus:not(:focus-visible){box-shadow:none;outline:none}.run-flow-node:focus{outline:none}.training-rollout-cell.reused{width:auto;min-width:14px;font-size:10px}.training-continual-setting{color:var(--text-muted);align-items:center;gap:5px;font-size:11px;display:inline-flex}.training-continual-setting:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:3px}.training-continual-badge.off{color:var(--status-warning);background:color-mix(in srgb, var(--status-warning) 12%, transparent)}.training-continual-badge.pending{color:var(--text-muted);background:var(--surface-raised)}.training-recovery-lineage{color:var(--text-secondary);overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:14px 0 0;font-size:12px;line-height:1.5;display:flex}.training-recovery-lineage a{color:var(--accent-primary)}.training-recovery-lineage.compact{margin:0;display:inline-flex}
1
+ .run-flow{width:100%;min-width:0}.run-flow-diagram{width:100%;height:auto;display:block;overflow:visible}.run-flow-box{fill:var(--surface-panel);stroke:var(--border-default);stroke-width:1px}.run-flow-loop{fill:none;stroke:var(--border-default);stroke-dasharray:4 5}.run-flow-loop.live{stroke:color-mix(in srgb, var(--accent-primary) 45%, transparent);animation:1.2s linear infinite run-flow-march}.run-flow-caption{fill:var(--text-muted);font-size:11px}.run-flow-label{fill:var(--text-primary);font-size:12px;font-weight:500}.run-flow-status{fill:var(--text-muted);font-size:11px}.run-flow-detail{fill:var(--accent-primary);font-variant-numeric:tabular-nums;font-size:11px}.run-flow-node.pending .run-flow-label,.run-flow-node.missing .run-flow-label,.run-flow-node.pending .run-flow-detail,.run-flow-node.missing .run-flow-detail{fill:var(--text-muted)}.run-flow-node.missing .run-flow-box{stroke-dasharray:3 3}.run-flow-node.failed .run-flow-box{stroke:var(--status-danger)}.run-flow-node.active .run-flow-box{stroke:var(--accent-primary)}.run-flow-node.done .run-flow-box{stroke:color-mix(in srgb, var(--accent-primary) 55%, transparent)}.run-flow-wire{fill:none;stroke:var(--border-default);stroke-width:1.25px}.run-flow-wire.done{stroke:color-mix(in srgb, var(--accent-primary) 60%, var(--border-default))}.run-flow-arrow{fill:none;stroke:var(--text-muted);stroke-width:1.25px}.run-flow-stream{fill:none;stroke:var(--accent-primary);stroke-width:1.5px;stroke-dasharray:3 9;animation:.6s linear infinite run-flow-stream}.run-flow-packet,.run-flow-fill,.run-flow-shimmer{fill:var(--accent-primary)}.run-flow-track{fill:var(--border-default)}.run-flow-halo{fill:none;stroke:var(--accent-primary);stroke-width:1px;animation:1.8s ease-in-out infinite run-flow-halo}.run-flow-check{fill:none;stroke:var(--accent-primary);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.console-run-flow{scrollbar-width:thin;width:100%;padding:8px 0;overflow-x:auto}.run-flow-badge{fill:var(--surface-panel)}.training-rollout-groups{color:var(--text-muted);margin:12px 0;font-size:11px}.training-rollout-groups header{flex-wrap:wrap;justify-content:space-between;gap:10px;margin-bottom:10px;display:flex}.training-rollout-groups ol{max-height:220px;margin:0;padding:0;list-style:none;overflow:auto}.training-rollout-groups li{grid-template-columns:65px minmax(0,1fr) 80px;align-items:center;gap:8px;margin:7px 0;display:grid}.training-rollout-groups li>div{flex-wrap:wrap;gap:5px;display:flex}.training-rollout-cell{border:1px solid var(--border-default);border-radius:3px;width:14px;height:14px}.training-rollout-cell.scored{background:var(--accent-primary-fill);border-color:#0000}.training-rollout-cell.active{background:var(--accent-primary-fill);border-color:var(--accent-primary);animation:1.4s ease-in-out infinite run-flow-halo}.training-rollout-cell.failed{background:var(--status-danger-fill);border-color:#0000}.training-rollout-cell.reused{color:var(--text-secondary);border-style:double;place-items:center;font-size:10px;line-height:1;display:inline-grid}@keyframes run-flow-stream{to{stroke-dashoffset:-12px}}@keyframes run-flow-march{to{stroke-dashoffset:-18px}}@keyframes run-flow-halo{0%,to{opacity:.15}50%{opacity:.6}}@media (prefers-reduced-motion:reduce){.run-flow-loop.live,.run-flow-stream,.run-flow-halo,.training-rollout-cell.active{animation:none}.run-flow-packet,.run-flow-shimmer{display:none}}.training-rollout-legend{flex-wrap:wrap;gap:12px;display:flex}.training-rollout-legend>span{align-items:center;gap:5px;display:flex}.training-rollout-legend i{display:inline-block}.compute-gpu{--compute-color:var(--compute-gpu)}.compute-cpu{--compute-color:var(--compute-cpu)}.run-flow-node:is(.compute-gpu,.compute-cpu) .run-flow-box{fill:color-mix(in srgb, var(--compute-color) 7%, var(--surface-panel));stroke:color-mix(in srgb, var(--compute-color) 55%, var(--border-default))}.run-flow-node:is(.compute-gpu,.compute-cpu).active .run-flow-box{stroke:var(--compute-color)}.run-flow-node:is(.compute-gpu,.compute-cpu) :is(.run-flow-detail,.run-flow-fill,.run-flow-shimmer){fill:var(--compute-color)}.run-flow-node:is(.compute-gpu,.compute-cpu) :is(.run-flow-check,.run-flow-halo){stroke:var(--compute-color)}.run-flow-compute-legend{color:var(--text-muted);justify-content:flex-end;gap:16px;font-size:11px;display:flex}.run-flow-compute-legend span{align-items:center;gap:6px;display:inline-flex}.run-flow-compute-legend span:before{content:"";background:var(--compute-color);border-radius:2px;width:8px;height:8px}.sidebar-run-flow{padding:12px 0;container-type:inline-size}.sidebar-run-flow .run-flow-compute-legend{margin-bottom:12px}.sidebar-run-path{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:20px;margin:0;padding:0;list-style:none;display:grid}.sidebar-run-cluster{min-width:0;position:relative}.sidebar-run-path>.sidebar-run-cluster:only-child,.sidebar-run-path>.sidebar-run-cluster:last-child:nth-child(odd){grid-column:1/-1}.sidebar-run-path>.sidebar-run-cluster:nth-child(2n):before{content:"→";color:var(--text-muted);font-size:12px;position:absolute;bottom:32px;left:-17px}.sidebar-run-loop .sidebar-run-cluster:last-child:nth-child(odd):not(:first-child):before{content:"↓";color:var(--text-muted);font-size:12px;position:absolute;top:-18px;left:calc(50% - 4px)}.sidebar-run-card{border:1px solid var(--border-default);background:var(--surface-panel);overflow-wrap:anywhere;border-radius:8px;flex-direction:column;gap:5px;min-width:0;min-height:72px;padding:10px;font-size:11px;line-height:1.4;display:flex;position:relative}.sidebar-run-card:is(.compute-gpu,.compute-cpu){background:color-mix(in srgb, var(--compute-color) 7%, var(--surface-panel));border-color:color-mix(in srgb, var(--compute-color) 45%, var(--border-default))}.sidebar-run-card-heading{color:var(--text-primary);justify-content:space-between;align-items:flex-start;gap:5px;display:flex}.sidebar-run-card-heading strong{font-size:12px;font-weight:500}.sidebar-run-card-heading>span{color:var(--text-muted);white-space:nowrap;flex-shrink:0;padding-top:2px;font-size:9px}.sidebar-run-card-heading>svg{color:var(--compute-color,var(--accent-primary));flex-shrink:0;margin-top:2px}.sidebar-run-status{color:var(--text-secondary)}.sidebar-run-detail{color:var(--compute-color,var(--text-secondary));font-variant-numeric:tabular-nums}.sidebar-run-card.pending .sidebar-run-card-heading{color:var(--text-secondary)}.sidebar-run-card.missing{border-style:dashed}.sidebar-run-card.active{border-color:var(--compute-color,var(--accent-primary))}.sidebar-run-card.failed{border-color:var(--status-danger)}.sidebar-run-branch,.sidebar-run-worker{justify-items:stretch;gap:5px;display:grid}.sidebar-run-branch{margin-bottom:5px}.sidebar-run-worker{margin-top:5px}.sidebar-run-branch>svg,.sidebar-run-worker>svg{color:var(--text-muted);justify-self:center}.sidebar-run-next{color:var(--text-muted);margin:10px auto;display:block}.sidebar-run-loop{border:1px dashed var(--border-default);border-radius:12px;padding:12px}.sidebar-run-loop.active{border-color:var(--accent-primary)}.sidebar-run-loop>header{color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-bottom:12px;font-size:11px;display:flex}.sidebar-run-return{color:var(--text-muted);border-top:1px dashed var(--border-default);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding-top:10px;font-size:11px;display:flex}.sidebar-run-loop.active .sidebar-run-return{color:var(--accent-primary)}.sidebar-run-progress{background:var(--border-default);border-radius:2px;height:2px;margin-top:auto;overflow:hidden}.sidebar-run-progress>span{background:var(--compute-color,var(--accent-primary));height:100%;display:block}.sidebar-run-progress.indeterminate>span{width:35%;animation:1.6s ease-in-out infinite sidebar-run-progress}.sidebar-run-error summary{cursor:pointer;color:var(--text-secondary)}.sidebar-run-error summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:2px}.sidebar-run-error p{white-space:pre-wrap;color:var(--text-secondary);margin:8px 0 0}.training-rollout-attempts{margin-top:12px}.training-rollout-attempts>summary{cursor:pointer;color:var(--text-secondary);margin-bottom:8px}.training-rollout-attempts>summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:2px}.training-rollout-pagination{justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}@keyframes sidebar-run-progress{0%{transform:translate(-100%)}to{transform:translate(390%)}}@container (width<=260px){.sidebar-run-path{grid-template-columns:minmax(0,1fr)}.sidebar-run-path>.sidebar-run-cluster:nth-child(2n):before{display:none}}@media (prefers-reduced-motion:reduce){.sidebar-run-progress.indeterminate>span{opacity:.5;width:100%;animation:none}}.training-run-lineage{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;margin-top:5px;font-size:11px;display:flex}.training-run-lineage-compact{margin-top:0}.training-run-lineage a{color:var(--accent-primary);text-underline-offset:3px;align-items:center;gap:4px;text-decoration:underline;display:inline-flex}.training-policy-label,.training-optimizer-reset{align-items:center;gap:5px;display:inline-flex}.training-continual-status{color:var(--text-muted);margin-top:4px;font-size:11px;display:block}.training-adapter-stack{margin:12px 0 14px;font-size:11px;position:relative}.training-adapter-stack>div{border:1px solid var(--border-default);background:var(--surface-panel);border-radius:8px;flex-direction:column;gap:4px;display:flex}.training-adapter-parent{margin:0 16px -12px 0;padding:10px 12px 22px}.training-adapter-current{margin-left:16px;padding:10px 12px;position:relative}.training-adapter-stack span,.training-adapter-stack small{color:var(--text-muted)}.training-adapter-stack strong{color:var(--text-primary);font-weight:500}.run-flow-adapter-stack .run-flow-box{fill:var(--surface-panel);stroke:var(--border-default)}.sidebar-run-inspect{cursor:pointer;border-radius:inherit;background:0 0;border:0;position:absolute;inset:0}.sidebar-run-inspect:focus-visible{outline:2px solid var(--accent-primary);outline-offset:3px}.sidebar-run-error{position:relative}.run-flow-node[role=button]{cursor:pointer}.run-flow-node[role=button]:focus-visible .run-flow-box{stroke:var(--accent-primary);stroke-width:2px}.training-rollout-group-link{color:var(--accent-primary);text-align:left;font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}button.training-rollout-cell{cursor:pointer;padding:0}button.training-rollout-cell:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.training-rollout-attempts pre{white-space:pre-wrap;overflow-wrap:anywhere;max-width:420px;font:inherit}.run-flow-recorded-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-top:5px;display:inline-block}.run-flow-recorded{fill:var(--text-muted)}.run-evidence-panel{min-width:0;margin-top:14px}.run-evidence-panel>header{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.run-evidence-panel dl>div{border-bottom:1px solid var(--border-default);padding:10px 0}.run-evidence-panel dt{color:var(--text-muted);font-size:11px}.run-evidence-panel dd{margin:5px 0 0}.run-evidence-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;font:inherit;margin:0;overflow:auto}.run-evidence-tooltip{z-index:1200;border:1px solid var(--border-default);background:var(--surface-floating);width:min(280px,100vw - 24px);color:var(--text-primary);overflow-wrap:anywhere;pointer-events:none;box-shadow:0 4px 16px var(--shadow-color);border-radius:8px;gap:5px;padding:10px 12px;font-size:11px;line-height:1.45;display:grid;position:fixed}.run-evidence-tooltip small{color:var(--text-muted)}.training-evidence-workspace{min-width:0;margin-top:18px}.training-evidence-workspace>nav{white-space:nowrap;overflow-x:auto}.training-evidence-workspace>nav button{flex-shrink:0}.training-evidence-workspace>nav button[aria-pressed=true]{border-bottom-color:var(--accent-primary);color:var(--text-primary)}.training-evidence-logs{max-height:320px;padding:0;list-style:none;overflow:auto}.training-evidence-logs li{border-bottom:1px solid var(--border-default);overflow-wrap:anywhere;gap:5px;padding:8px 0;font-size:11px;display:grid}.training-evidence-logs time{color:var(--text-muted)}.training-continual-badge{background:color-mix(in srgb, var(--accent-primary) 12%, transparent);color:var(--accent-primary);vertical-align:middle;border-radius:4px;align-items:center;gap:3px;padding:2px 5px;font-size:10px;display:inline-flex}.model-journey-title-row{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.sidebar-run-inspect:hover,.sidebar-run-inspect:active{box-shadow:none;background:0 0}.sidebar-run-inspect:focus:not(:focus-visible){box-shadow:none;outline:none}.run-flow-node:focus{outline:none}.training-rollout-cell.reused{width:auto;min-width:14px;font-size:10px}.training-continual-setting{color:var(--text-muted);align-items:center;gap:5px;font-size:11px;display:inline-flex}.training-continual-setting:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:3px}.training-continual-badge.off{color:var(--status-warning);background:color-mix(in srgb, var(--status-warning) 12%, transparent)}.training-continual-badge.pending{color:var(--text-muted);background:var(--surface-raised)}.training-recovery-lineage{color:var(--text-secondary);overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:14px 0 0;font-size:12px;line-height:1.5;display:flex}.training-recovery-lineage a{color:var(--accent-primary)}.training-recovery-lineage.compact{margin:0;display:inline-flex}.labs-status-badge{width:max-content;color:var(--text-primary);white-space:nowrap;border-radius:999px;align-items:center;padding:3px 8px;font-size:10px;font-weight:600;line-height:1.25;display:inline-flex}.labs-status-badge.is-live{gap:6px;max-width:min(560px,60vw)}.labs-status-badge-label{text-overflow:ellipsis;overflow:hidden}.labs-status-live-dot{width:6px;height:6px;box-shadow:0 0 0 0 var(--shadow-color);background:currentColor;border-radius:999px;flex:none;animation:1.6s ease-out infinite labs-status-live-pulse}@keyframes labs-status-live-pulse{0%{box-shadow:0 0 0 0 var(--shadow-color)}70%,to{box-shadow:0 0 0 5px #0000}}@media (prefers-reduced-motion:reduce){.labs-status-live-dot{animation:none}}.labs-status-badge.positive{background:var(--status-success-fill);color:var(--text-on-accent)}.labs-status-badge.info{background:var(--status-info-fill);color:var(--text-on-accent)}.labs-status-badge.warning{background:var(--status-warning-fill);color:var(--text-on-accent)}.labs-status-badge.negative{background:var(--status-danger-fill);color:var(--text-on-accent)}.labs-status-badge.neutral{background:var(--state-hover)}