openpond 0.2.61 → 0.2.62

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 (420) hide show
  1. package/dist/app-server.d.ts +3264 -18
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{acp-FUAWCKBH.js → acp-DYRBDJRU.js} +1 -1
  4. package/dist/chunks/{acp-agent-XBSJ27KI.js → acp-agent-UTLP7C3I.js} +1 -1
  5. package/dist/chunks/{actions-command-LOHNQUWP.js → actions-command-6LF4Z4WK.js} +1 -1
  6. package/dist/chunks/{app-layer-4BFMOMKM.js → app-layer-N2H3RBEN.js} +1 -1
  7. package/dist/chunks/{app-server-connected-apps-Q2VWWJNX.js → app-server-connected-apps-3T546FE7.js} +1 -1
  8. package/dist/chunks/app-server-evaluations-TXD747QA.js +2 -0
  9. package/dist/chunks/{app-server-harness-services-2PSZBT7U.js → app-server-harness-services-BBCDV5P3.js} +1 -1
  10. package/dist/chunks/app-server-runtime-VEJPDAFP.js +2 -0
  11. package/dist/chunks/{apps-7PIBF32Q.js → apps-CTT2XYRR.js} +1 -1
  12. package/dist/chunks/{chunk-KK626T3Z.js → chunk-2EPR4HLF.js} +1 -1
  13. package/dist/chunks/{chunk-5VPU7OS7.js → chunk-2IIBCCOK.js} +1 -1
  14. package/dist/chunks/{chunk-ZISYLRH6.js → chunk-2UDAKLJ4.js} +1 -1
  15. package/dist/chunks/{chunk-BDCTN4PU.js → chunk-2V4LPUBH.js} +1 -1
  16. package/dist/chunks/{chunk-I3X6M6ZO.js → chunk-3R4MSE2S.js} +1 -1
  17. package/dist/chunks/{chunk-OFVUN4KI.js → chunk-47AXSBPV.js} +1 -1
  18. package/dist/chunks/{chunk-BFKYRQMA.js → chunk-4N4EH3RJ.js} +1 -1
  19. package/dist/chunks/chunk-4PZWGNX4.js +86 -0
  20. package/dist/chunks/{chunk-VFLSBDNZ.js → chunk-4RZBGKT7.js} +1 -1
  21. package/dist/chunks/{chunk-VBW2X42G.js → chunk-4TM75R7V.js} +1 -1
  22. package/dist/chunks/chunk-4U2FNXQW.js +2 -0
  23. package/dist/chunks/{chunk-SCCYSPQ5.js → chunk-4ZBOYWQ3.js} +1 -1
  24. package/dist/chunks/{chunk-VWJ5IYQP.js → chunk-547AUVKN.js} +1 -1
  25. package/dist/chunks/{chunk-FJ3HMHT6.js → chunk-557XSPVS.js} +1 -1
  26. package/dist/chunks/{chunk-ZHFH2TZN.js → chunk-557YG77L.js} +1 -1
  27. package/dist/chunks/{chunk-MF35MALN.js → chunk-5A6ER3M2.js} +1 -1
  28. package/dist/chunks/{chunk-U4HZD2GM.js → chunk-5OSM75X5.js} +1 -1
  29. package/dist/chunks/{chunk-TH6Y4K5Z.js → chunk-6SH4B7DV.js} +1 -1
  30. package/dist/chunks/chunk-6XSSM4WT.js +3 -0
  31. package/dist/chunks/{chunk-HN2ZK6EV.js → chunk-7JBB4PXS.js} +1 -1
  32. package/dist/chunks/{chunk-SID4X3YN.js → chunk-7JXZNCBC.js} +1 -1
  33. package/dist/chunks/chunk-7KTARW23.js +2 -0
  34. package/dist/chunks/{chunk-M6JRS5PA.js → chunk-ABF3W2MO.js} +1 -1
  35. package/dist/chunks/{chunk-CGAL7IHZ.js → chunk-AKZPMKWP.js} +1 -1
  36. package/dist/chunks/{chunk-SIV5P6JO.js → chunk-AMO5DVKM.js} +2 -2
  37. package/dist/chunks/chunk-AZ7BL5FL.js +2 -0
  38. package/dist/chunks/{chunk-4RHM4WN2.js → chunk-B42QQUZY.js} +1 -1
  39. package/dist/chunks/{chunk-3DVWJCOA.js → chunk-B4RKHHF7.js} +1 -1
  40. package/dist/chunks/{chunk-CQF6QZEL.js → chunk-BEI4YULC.js} +1 -1
  41. package/dist/chunks/chunk-BKEDG3A4.js +22 -0
  42. package/dist/chunks/{chunk-GEXKTGLY.js → chunk-C7M2WBWZ.js} +14 -14
  43. package/dist/chunks/{chunk-ELYRVTTG.js → chunk-CJUVHE4U.js} +1 -1
  44. package/dist/chunks/{chunk-ZUNG6YDO.js → chunk-EIX2V2KU.js} +1 -1
  45. package/dist/chunks/{chunk-AWPYTDH4.js → chunk-EWOTDVDJ.js} +1 -1
  46. package/dist/chunks/{chunk-B47JMAVW.js → chunk-F4TJ7WQV.js} +1 -1
  47. package/dist/chunks/{chunk-TXBIZDXG.js → chunk-F7D4BMTO.js} +1 -1
  48. package/dist/chunks/{chunk-BWY4D3BN.js → chunk-FFWOTZQM.js} +1 -1
  49. package/dist/chunks/{chunk-6RVF2J47.js → chunk-FUSCTBJI.js} +1 -1
  50. package/dist/chunks/{chunk-BN5AVRUG.js → chunk-GAQLXFOT.js} +1 -1
  51. package/dist/chunks/{chunk-LHENAWLH.js → chunk-GEKORCMN.js} +1 -1
  52. package/dist/chunks/{chunk-ORLJJGZZ.js → chunk-GNCEZ3UP.js} +1 -1
  53. package/dist/chunks/{chunk-WRQEYW3V.js → chunk-GOIKLFXK.js} +1 -1
  54. package/dist/chunks/{chunk-65SM7Y2G.js → chunk-GQGLPKU4.js} +1 -1
  55. package/dist/chunks/{chunk-LBBXVOVR.js → chunk-GSWBNJGZ.js} +1 -1
  56. package/dist/chunks/{chunk-7EAWLYYB.js → chunk-GV3LFSMI.js} +1 -1
  57. package/dist/chunks/{chunk-GQUS7MCH.js → chunk-GW5SE3FM.js} +1 -1
  58. package/dist/chunks/{chunk-I3W27VK4.js → chunk-HBLN4OLY.js} +1 -1
  59. package/dist/chunks/{chunk-SGK4GR44.js → chunk-HFJUXKT5.js} +1 -1
  60. package/dist/chunks/{chunk-4P3X2RXA.js → chunk-HKV7RX5E.js} +1 -1
  61. package/dist/chunks/{chunk-QDBYLJGH.js → chunk-HXZXDDKW.js} +1 -1
  62. package/dist/chunks/{chunk-LNRFRAV5.js → chunk-INO67SEN.js} +1 -1
  63. package/dist/chunks/{chunk-E67M5WGY.js → chunk-IWK3RTLR.js} +1 -1
  64. package/dist/chunks/{chunk-U447MS3Y.js → chunk-J3B2GM4A.js} +1 -1
  65. package/dist/chunks/chunk-JCLTFDVW.js +2 -0
  66. package/dist/chunks/{chunk-25RDE7DV.js → chunk-JEISPWWM.js} +1 -1
  67. package/dist/chunks/{chunk-D4JZALZ4.js → chunk-JIFUGA3U.js} +1 -1
  68. package/dist/chunks/{chunk-H2AUR7OT.js → chunk-JQRMDFF3.js} +1 -1
  69. package/dist/chunks/{chunk-FWIPHEVA.js → chunk-JX6OX6XE.js} +1 -1
  70. package/dist/chunks/{chunk-D5ADDBS5.js → chunk-JY3YSI54.js} +1 -1
  71. package/dist/chunks/{chunk-CM5USMXN.js → chunk-KOKX7PBS.js} +1 -1
  72. package/dist/chunks/{chunk-3ZWLRBYZ.js → chunk-KUPJNBWG.js} +1 -1
  73. package/dist/chunks/chunk-LILXHGIA.js +2 -0
  74. package/dist/chunks/{chunk-MCIIGQT7.js → chunk-LJDBR3RN.js} +1 -1
  75. package/dist/chunks/{chunk-3TYCIYW6.js → chunk-LJPO3TEL.js} +1 -1
  76. package/dist/chunks/{chunk-MHYI7ATG.js → chunk-LRRBYIGH.js} +2 -2
  77. package/dist/chunks/{chunk-P4XM7LUT.js → chunk-M5IX6VUA.js} +1 -1
  78. package/dist/chunks/chunk-MEK7DLX3.js +2 -0
  79. package/dist/chunks/{chunk-TYHCBVQT.js → chunk-MILEWROZ.js} +1 -1
  80. package/dist/chunks/{chunk-ZBBVRYU3.js → chunk-MNFW5WLD.js} +1 -1
  81. package/dist/chunks/{chunk-2VXL6AU3.js → chunk-MNXNZDDW.js} +1 -1
  82. package/dist/chunks/chunk-N5GPINVP.js +2 -0
  83. package/dist/chunks/{chunk-TSAW2QVU.js → chunk-NBE74GLF.js} +1 -1
  84. package/dist/chunks/{chunk-VZXZ6CHS.js → chunk-NE4ESZPT.js} +1 -1
  85. package/dist/chunks/{chunk-CO3OJFPU.js → chunk-NKZNPTLA.js} +1 -1
  86. package/dist/chunks/{chunk-WFVOG5PU.js → chunk-NLQ2UPN2.js} +1 -1
  87. package/dist/chunks/chunk-NOSBNHGC.js +18 -0
  88. package/dist/chunks/{chunk-TTN63EAM.js → chunk-NWOK6NLE.js} +1 -1
  89. package/dist/chunks/{chunk-6MWT6BVU.js → chunk-NWQL6FNF.js} +1 -1
  90. package/dist/chunks/chunk-O3MHHGC5.js +151 -0
  91. package/dist/chunks/{chunk-IUGK6BBY.js → chunk-OCC43RSJ.js} +1 -1
  92. package/dist/chunks/{chunk-BQUWZRWU.js → chunk-P74RR2GB.js} +1 -1
  93. package/dist/chunks/{chunk-PAZDQRYU.js → chunk-PAE3PQEC.js} +1 -1
  94. package/dist/chunks/{chunk-M4ZRCRJM.js → chunk-PGO4FRHU.js} +2 -2
  95. package/dist/chunks/chunk-Q34IF4PW.js +2 -0
  96. package/dist/chunks/{chunk-Q324ZA5M.js → chunk-QAVQJZCM.js} +1 -1
  97. package/dist/chunks/{chunk-EIIGTADO.js → chunk-RBDUMASL.js} +1 -1
  98. package/dist/chunks/{chunk-TMMFF6DO.js → chunk-RH43WLBX.js} +1 -1
  99. package/dist/chunks/{chunk-RPOD6I64.js → chunk-RTJCELRR.js} +1 -1
  100. package/dist/chunks/{chunk-L3GA2CQI.js → chunk-SD64CLJX.js} +1 -1
  101. package/dist/chunks/{chunk-TNHDD3LO.js → chunk-SXMR6E2W.js} +1 -1
  102. package/dist/chunks/{chunk-MLTKB5G3.js → chunk-SZKFNKWO.js} +1 -1
  103. package/dist/chunks/chunk-T4QXKU5Y.js +1 -0
  104. package/dist/chunks/{chunk-PE7UKJXK.js → chunk-T6C5BNXK.js} +1 -1
  105. package/dist/chunks/{chunk-OMICIPPY.js → chunk-T6JN4PND.js} +1 -1
  106. package/dist/chunks/{chunk-OQUKSRU3.js → chunk-TGEGXTPR.js} +1 -1
  107. package/dist/chunks/chunk-TM4VEMNN.js +2 -0
  108. package/dist/chunks/chunk-TUCKED4T.js +4 -0
  109. package/dist/chunks/chunk-TVTFEGTU.js +2 -0
  110. package/dist/chunks/{chunk-HZLV773Y.js → chunk-TW3SRBLU.js} +1 -1
  111. package/dist/chunks/{chunk-BNZTJPK7.js → chunk-U456UP3N.js} +1 -1
  112. package/dist/chunks/chunk-UC3FXTDL.js +9 -0
  113. package/dist/chunks/{chunk-XLULTQLZ.js → chunk-UT6F6AIB.js} +1 -1
  114. package/dist/chunks/{chunk-OJFDI7VM.js → chunk-UTNGEMW5.js} +1 -1
  115. package/dist/chunks/{chunk-DW3GJRY3.js → chunk-VAJSRUAB.js} +1 -1
  116. package/dist/chunks/chunk-VE6ZIGUQ.js +2 -0
  117. package/dist/chunks/{chunk-GLVR74PX.js → chunk-VI32G77S.js} +1 -1
  118. package/dist/chunks/{chunk-ROE24PN5.js → chunk-VK4TPZTA.js} +1 -1
  119. package/dist/chunks/{chunk-Q66LWQGF.js → chunk-VSQXDS6H.js} +1 -1
  120. package/dist/chunks/{chunk-4GZ2FPB5.js → chunk-VWRTE64Y.js} +1 -1
  121. package/dist/chunks/{chunk-QRJPLZF7.js → chunk-W5W4IODW.js} +1 -1
  122. package/dist/chunks/{chunk-57RY3LSR.js → chunk-WGLVSGFA.js} +1 -1
  123. package/dist/chunks/{chunk-I7JCARVH.js → chunk-WQMXEZVE.js} +3 -3
  124. package/dist/chunks/chunk-X4ZT22SG.js +2 -0
  125. package/dist/chunks/{chunk-DGPGOBYZ.js → chunk-XSB3T4JZ.js} +1 -1
  126. package/dist/chunks/{chunk-ZZWAQBA2.js → chunk-XWDFXM3S.js} +1 -1
  127. package/dist/chunks/{chunk-4LZLO4OW.js → chunk-Y2KPHVZK.js} +1 -1
  128. package/dist/chunks/chunk-ZQHPGEYT.js +2 -0
  129. package/dist/chunks/{chunk-T4LLJC5N.js → chunk-ZXT7V64X.js} +1 -1
  130. package/dist/chunks/cli-GCSO2OAI.js +2 -0
  131. package/dist/chunks/{configuration-command-ONGI2BJD.js → configuration-command-BU2RPG33.js} +1 -1
  132. package/dist/chunks/connected-app-executor-UDE7U4KG.js +2 -0
  133. package/dist/chunks/{connected-evidence-4J3YXU4O.js → connected-evidence-GXIY2L7C.js} +1 -1
  134. package/dist/chunks/{connected-starting-assets-OXLT7S4O.js → connected-starting-assets-V5QXRK5Q.js} +1 -1
  135. package/dist/chunks/{connection-HJWE6SEW.js → connection-XMAAGMXJ.js} +1 -1
  136. package/dist/chunks/{continual-CJUZM5ZQ.js → continual-FLW6DAJK.js} +1 -1
  137. package/dist/chunks/{core-commands-JGXU6B4C.js → core-commands-NJ6TGND4.js} +1 -1
  138. package/dist/chunks/{dataset-preparation-authoring-DFGJBMVF.js → dataset-preparation-authoring-IUXUQK3L.js} +1 -1
  139. package/dist/chunks/{datasets-MNHZAZIB.js → datasets-AH56DKLZ.js} +1 -1
  140. package/dist/chunks/{desktop-test-P23MHAIG.js → desktop-test-PYUTEOWO.js} +1 -1
  141. package/dist/chunks/{dist-IIFTZWNR.js → dist-5267UT3V.js} +1 -1
  142. package/dist/chunks/{dist-X64FC6NA.js → dist-HSC43RG4.js} +1 -1
  143. package/dist/chunks/{evaluation-coordination-6NQEH5WU.js → evaluation-coordination-3AUICOC5.js} +1 -1
  144. package/dist/chunks/{experiment-improvements-M27Z5OF4.js → experiment-improvements-YS7GGPDW.js} +1 -1
  145. package/dist/chunks/experiments-EJZK7FPT.js +2 -0
  146. package/dist/chunks/{experiments-signal-R3NNH7WR.js → experiments-signal-NKUIJCIY.js} +1 -1
  147. package/dist/chunks/{extension-C33NUFDL.js → extension-ZM6NI5O5.js} +1 -1
  148. package/dist/chunks/{help-M2VQGPVC.js → help-PXUUREHZ.js} +1 -1
  149. package/dist/chunks/host-profile-evaluation-tools-CTC5JQPD.js +2 -0
  150. package/dist/chunks/host-profile-external-dataset-GJWDY3YT.js +2 -0
  151. package/dist/chunks/hosted-app-server-composition-TLJSKMJT.js +2 -0
  152. package/dist/chunks/hosted-experiment-improvement-TIVXXRPG.js +3 -0
  153. package/dist/chunks/hosted-harness-runtime-SFLJEZFI.js +2 -0
  154. package/dist/chunks/{hosted-profile-candidate-37ZFY2LH.js → hosted-profile-candidate-DKEMVIYG.js} +1 -1
  155. package/dist/chunks/hosted-profile-compiler-V6YR6EHO.js +2 -0
  156. package/dist/chunks/{hosted-profile-evaluation-control-UQBMML6K.js → hosted-profile-evaluation-control-ERCXAPZD.js} +1 -1
  157. package/dist/chunks/{hosted-profile-evaluation-inspection-YASS4T6L.js → hosted-profile-evaluation-inspection-Q3AIIIB6.js} +1 -1
  158. package/dist/chunks/hosted-profile-evaluation-preparation-ELLGH44Z.js +3 -0
  159. package/dist/chunks/{hosted-tasksets-CVUP7MS6.js → hosted-tasksets-X2YCFYEJ.js} +1 -1
  160. package/dist/chunks/{human-review-IJETDOWB.js → human-review-5WM6MSON.js} +1 -1
  161. package/dist/chunks/{import-WLLUIDS6.js → import-JWZSZCE4.js} +1 -1
  162. package/dist/chunks/local-harness-improvement-runtime-IGIKM6GJ.js +2 -0
  163. package/dist/chunks/local-harness-taskset-review-DR2ZIDOH.js +2 -0
  164. package/dist/chunks/{model-projects-AVBQDNYG.js → model-projects-H22KENI4.js} +1 -1
  165. package/dist/chunks/opchat-3S6TSDZO.js +3 -0
  166. package/dist/chunks/opchat-bounded-chat-B7LPCD4U.js +2 -0
  167. package/dist/chunks/{organizations-DJRJWC5I.js → organizations-62YNTZTO.js} +1 -1
  168. package/dist/chunks/{profile-JRS3JNRC.js → profile-ELE2D7HU.js} +1 -1
  169. package/dist/chunks/project-action-payload-32F4X2BB.js +2 -0
  170. package/dist/chunks/{project-agent-2KNJFNZI.js → project-agent-O4REKO6T.js} +1 -1
  171. package/dist/chunks/{published-experiment-source-LFYHKFAO.js → published-experiment-source-DAOTJLIN.js} +1 -1
  172. package/dist/chunks/refiner-profile-service-DYMZ7J3X.js +2 -0
  173. package/dist/chunks/{runtime-CBJF5GMB.js → runtime-776NUSE7.js} +2 -2
  174. package/dist/chunks/{sandbox-command-IIGTPYN3.js → sandbox-command-UQ26NDIX.js} +1 -1
  175. package/dist/chunks/{sandbox-template-FTANKQIA.js → sandbox-template-WP6YCGBK.js} +1 -1
  176. package/dist/chunks/saved-work-PG52WCRQ.js +2 -0
  177. package/dist/chunks/{send-turn-5UB7ZBJV.js → send-turn-RPB65PME.js} +1 -1
  178. package/dist/chunks/{src-4YZF6L6H.js → src-2R4CMCJ5.js} +1 -1
  179. package/dist/chunks/src-AU6LG7E6.js +421 -0
  180. package/dist/chunks/standalone-experiment-turn-owner-SD3SUTKX.js +2 -0
  181. package/dist/chunks/{store-chat-resources-CGW7PDCG.js → store-chat-resources-T4LR7K25.js} +1 -1
  182. package/dist/chunks/{store-continual-support-reviews-GWI2FRII.js → store-continual-support-reviews-R62D2HD6.js} +1 -1
  183. package/dist/chunks/{store-conversation-serving-637AHKBP.js → store-conversation-serving-25O7BAR2.js} +1 -1
  184. package/dist/chunks/{store-create-improve-ZG653Z63.js → store-create-improve-T5E2GUKK.js} +1 -1
  185. package/dist/chunks/{store-datasets-IW6F2QZM.js → store-datasets-5Y4U5L3R.js} +1 -1
  186. package/dist/chunks/{store-evaluation-results-V5J6L4NV.js → store-evaluation-results-WUVJWCFU.js} +1 -1
  187. package/dist/chunks/{store-harness-workspaces-HHMM6GNK.js → store-harness-workspaces-IFEFY5CK.js} +1 -1
  188. package/dist/chunks/{store-human-review-V5H4QDHR.js → store-human-review-ZQNLZRGG.js} +1 -1
  189. package/dist/chunks/store-learned-preference-migration-validation-UH6MJQSH.js +2 -0
  190. package/dist/chunks/{store-local-experiments-A2UWYPVQ.js → store-local-experiments-LOH4F4TF.js} +1 -1
  191. package/dist/chunks/{store-model-batch-review-KMYPYWJR.js → store-model-batch-review-QO4VVKWC.js} +1 -1
  192. package/dist/chunks/{store-model-configuration-UXNC4PGY.js → store-model-configuration-C3HSOFD5.js} +1 -1
  193. package/dist/chunks/store-model-project-preparation-RQ2YTC2Y.js +2 -0
  194. package/dist/chunks/{store-preference-comparison-HTOXLWKF.js → store-preference-comparison-RNIFLJRW.js} +1 -1
  195. package/dist/chunks/{store-schedules-QVWT7AEB.js → store-schedules-DVQ2PP4F.js} +1 -1
  196. package/dist/chunks/{store-sidebar-file-bookmarks-G5Z6NZWL.js → store-sidebar-file-bookmarks-LXWFFYCZ.js} +1 -1
  197. package/dist/chunks/{store-sidebar-preferences-27FFMUWU.js → store-sidebar-preferences-4HH7LX6N.js} +1 -1
  198. package/dist/chunks/{store-subagents-PK7ZWLPR.js → store-subagents-JLW4GD4Q.js} +1 -1
  199. package/dist/chunks/{store-task-inbox-LNDCZOYE.js → store-task-inbox-DL5RYFPO.js} +1 -1
  200. package/dist/chunks/{store-task-inventory-IG6HGWSQ.js → store-task-inventory-NJXRXFLC.js} +1 -1
  201. package/dist/chunks/store-taskset-drafts-UFGN4SGF.js +9 -0
  202. package/dist/chunks/{store-training-NQRRPKEZ.js → store-training-VRLU6NFX.js} +1 -1
  203. package/dist/chunks/{store-training-jobs-F6Y2ZTXP.js → store-training-jobs-3ZHG4LGI.js} +1 -1
  204. package/dist/chunks/{store-training-models-NRSLSBEW.js → store-training-models-KWQD5PRP.js} +1 -1
  205. package/dist/chunks/{store-usage-GFHQYT34.js → store-usage-ZRS3ILF2.js} +1 -1
  206. package/dist/chunks/{taskset-NYLUYX6K.js → taskset-QDMCQQDJ.js} +1 -1
  207. package/dist/chunks/{taskset-packages-I7I5KBFP.js → taskset-packages-CBLJFWDQ.js} +1 -1
  208. package/dist/chunks/{teams-bot-FMAEDGSD.js → teams-bot-GF272RGC.js} +1 -1
  209. package/dist/chunks/{training-UBX6E7SK.js → training-DF5UEPY3.js} +1 -1
  210. package/dist/chunks/{training-error-AYOGHHL2.js → training-error-L5V5IBX3.js} +1 -1
  211. package/dist/chunks/training-hosted-I2NDBYGS.js +2 -0
  212. package/dist/chunks/training-hosted-report-4F25RZZ4.js +2 -0
  213. package/dist/chunks/training-hosted-serving-QAV7ZGGV.js +2 -0
  214. package/dist/chunks/training-project-preparation-XWGRY5ME.js +3 -0
  215. package/dist/chunks/{web-search-Q4OQVUNH.js → web-search-5RUXYIOF.js} +1 -1
  216. package/dist/chunks/{workspaces-XREEVSTS.js → workspaces-JRY2IE7H.js} +1 -1
  217. package/dist/cli.js +2 -2
  218. package/dist/hosted-chat.d.ts +28 -0
  219. package/dist/index.js +1 -1
  220. package/dist/skills/openpond-cli/SKILL.md +15 -2
  221. package/dist/skills/openpond-cli/references/compact-resource-tables.md +3 -3
  222. package/dist/skills/openpond-cli/references/diagnose-and-improve.md +4 -2
  223. package/dist/skills/openpond-cli/references/experiments-and-training.md +155 -10
  224. package/dist/skills/openpond-taskset-authoring/SKILL.md +5 -4
  225. package/dist/skills/openpond-taskset-authoring/artifact.json +7 -7
  226. package/dist/skills/openpond-taskset-authoring/references/failure-diagnosis.md +52 -1
  227. package/dist/web/assets/App-DHJVXTI2.js +54 -0
  228. package/dist/web/assets/App-DpFKLxuA.css +1 -0
  229. package/dist/web/assets/AppDialog-BurL61qE.js +1 -0
  230. package/dist/web/assets/AppTerminalPanel-RjFlF-a4.js +2 -0
  231. package/dist/web/assets/{AppToastContext-BB_2hRfw.js → AppToastContext-DZLErwj0.js} +1 -1
  232. package/dist/web/assets/AppsView-ttlr9ckQ.js +1 -0
  233. package/dist/web/assets/{AttachmentTypeIcon-DOAsVQjt.js → AttachmentTypeIcon-CpMSfHCK.js} +1 -1
  234. package/dist/web/assets/BrowserSidebar-Cp2l0kg0.js +1 -0
  235. package/dist/web/assets/{CartesianChart-DO76yfJb.js → CartesianChart-CEbM980A.js} +1 -1
  236. package/dist/web/assets/{ChatTimelineEntry-IKzZsHoI.js → ChatTimelineEntry-BITv20Ze.js} +1 -1
  237. package/dist/web/assets/{CollaborationTabs-DNoknVMD.js → CollaborationTabs-DrKJmJZK.js} +1 -1
  238. package/dist/web/assets/{CommandMenu-CBY2AJxV.js → CommandMenu-6oj8FUr6.js} +1 -1
  239. package/dist/web/assets/CommunityView-BzpIq1lD.js +1 -0
  240. package/dist/web/assets/ComposerAttachments-6en7m_ov.js +2 -0
  241. package/dist/web/assets/ComposerCreateImproveStrip-ChplO9YP.js +1 -0
  242. package/dist/web/assets/ConversationImportsSettings-DRHgc7j_.js +1 -0
  243. package/dist/web/assets/FilePagePreview-CW4J_1u7.js +2 -0
  244. package/dist/web/assets/GetStartedView-CaBk_mX6.js +1 -0
  245. package/dist/web/assets/GettingStartedDialog-EsH-8Diz.css +1 -0
  246. package/dist/web/assets/GettingStartedDialog-JtFLyU3F.js +1 -0
  247. package/dist/web/assets/{HostedModelLearningReview-B0rbIVvn.js → HostedModelLearningReview-hhcjDifK.js} +1 -1
  248. package/dist/web/assets/HostedModelLearningSettings-CY8198Y1.js +1 -0
  249. package/dist/web/assets/LabModelVersionDetailPage-f0tHT-Sn.js +1 -0
  250. package/dist/web/assets/LabSkillSidebar-HibUEEko.js +1 -0
  251. package/dist/web/assets/{LabsRoute-DOnw39du.js → LabsRoute-B61l1b8P.js} +8 -8
  252. package/dist/web/assets/MainChatThread-egKi0gLk.js +2 -0
  253. package/dist/web/assets/MainPane-2dj6Dg4l.js +95 -0
  254. package/dist/web/assets/{MainPane-CuBUBA9F.css → MainPane-BwHw3UYp.css} +1 -1
  255. package/dist/web/assets/NativeSetupTerminal-3eR9D_R3.css +1 -0
  256. package/dist/web/assets/NativeSetupTerminal-CNHTByLo.js +2 -0
  257. package/dist/web/assets/NativeSkillSidebar-DCdMbSfe.js +1 -0
  258. package/dist/web/assets/NewProjectDialog-t9Imnb__.js +1 -0
  259. package/dist/web/assets/OutputsPage-CeGq_F1S.js +1 -0
  260. package/dist/web/assets/{PageChrome-BBnWAENV.js → PageChrome-VHME5V8j.js} +1 -1
  261. package/dist/web/assets/ProjectsPage-2TMZoEPB.js +1 -0
  262. package/dist/web/assets/RightChatPanelStack-B3mBViGC.js +1 -0
  263. package/dist/web/assets/RightSidebarHomePanel-CxDYSyyx.js +1 -0
  264. package/dist/web/assets/ScheduledWorkPage-Dh47iH11.js +1 -0
  265. package/dist/web/assets/SettingsView-D2bu3tK_.js +5 -0
  266. package/dist/web/assets/TeamChatView-CN17AsgA.js +1 -0
  267. package/dist/web/assets/TerminalOverlay-DlhRpi-X.js +16 -0
  268. package/dist/web/assets/TrainingCreationPanel-DJKzaNFj.js +1 -0
  269. package/dist/web/assets/{TrainingDraftPanel-HznyNCJ4.js → TrainingDraftPanel-BhhZPPuY.js} +1 -1
  270. package/dist/web/assets/{TrainingMetricWorkbench-BmzHLwIP.js → TrainingMetricWorkbench-DBy8F1xp.js} +1 -1
  271. package/dist/web/assets/{UsageSettingsSection-C3oZ1UEP.js → UsageSettingsSection-DTZslBeW.js} +2 -2
  272. package/dist/web/assets/WorkSidebarPanel-Ds-eTQLs.js +1 -0
  273. package/dist/web/assets/WorkspaceDiffPanel-D_iyg2D4.js +11 -0
  274. package/dist/web/assets/WorkspaceEnvironmentMenu-Fn-NlfMQ.js +35 -0
  275. package/dist/web/assets/WorkspaceFileLocation-ChEeZffU.js +1 -0
  276. package/dist/web/assets/WorkspaceGitDialogs-D_RUXhTi.js +1 -0
  277. package/dist/web/assets/{WorkspaceMonacoEditor-DfsL1WIi.js → WorkspaceMonacoEditor-BJxaiDrj.js} +3 -3
  278. package/dist/web/assets/{WorkspacePresentationPreview-WuS_B45u.js → WorkspacePresentationPreview-A28Poeca.js} +1 -1
  279. package/dist/web/assets/{chat-resources-CItQ4mZD.js → chat-resources-3SvnVeKv.js} +1 -1
  280. package/dist/web/assets/{chevron-down-Bnma8EMP.js → chevron-down-dYn0pd4Q.js} +1 -1
  281. package/dist/web/assets/chevron-right-sFx2xRvT.js +1 -0
  282. package/dist/web/assets/{chunk-24N6A6SF-BUjzKvRC.js → chunk-BYNVSWIQ-DWh9SmdB.js} +1 -1
  283. package/dist/web/assets/{chunk-GAIDBPFY-BLuHpurI.js → chunk-ZFYI4P6C-BmsNtSkR.js} +1 -1
  284. package/dist/web/assets/{client-choice-storage-BuNdhYSV.js → client-choice-storage-DTTLbrYt.js} +1 -1
  285. package/dist/web/assets/{cloud-upload-DOftANif.js → cloud-upload-CRMPCFnq.js} +1 -1
  286. package/dist/web/assets/connected-app-mentions-D3wRZLwI.js +1 -0
  287. package/dist/web/assets/copy-DR4ielPn.js +1 -0
  288. package/dist/web/assets/{createLucideIcon-C4b2afqG.js → createLucideIcon-DmttVQ_a.js} +1 -1
  289. package/dist/web/assets/{cssMode-0Hn7tCrE.js → cssMode-d-2GuNvW.js} +1 -1
  290. package/dist/web/assets/external-link-B4rPiZEp.js +1 -0
  291. package/dist/web/assets/{folder-open-wJwCoIDs.js → folder-open-BrIUcUk_.js} +1 -1
  292. package/dist/web/assets/{folder-plus-DnTN6mcP.js → folder-plus-DwImGEt-.js} +1 -1
  293. package/dist/web/assets/{git-commit-horizontal-98y7PP6G.js → git-commit-horizontal-Ds1mkrlW.js} +1 -1
  294. package/dist/web/assets/{htmlMode-JO_QluNH.js → htmlMode-s15GR0Fn.js} +1 -1
  295. package/dist/web/assets/icons-CK5-nxVC.js +1 -0
  296. package/dist/web/assets/{image-C7HVlg3X.js → image-CY-sHbfQ.js} +1 -1
  297. package/dist/web/assets/{index-BsPUniZy.js → index-DYrLeSyY.js} +2 -2
  298. package/dist/web/assets/index-Dezj4Z2p.css +1 -0
  299. package/dist/web/assets/{info-BLWDShaz.js → info-aSvM8YlJ.js} +1 -1
  300. package/dist/web/assets/{jsonMode-BfTXJted.js → jsonMode-vos9H2hz.js} +1 -1
  301. package/dist/web/assets/loader-circle-cyf35w3i.js +1 -0
  302. package/dist/web/assets/{lspLanguageFeatures-68cAgnuv.js → lspLanguageFeatures-pQmEaoMt.js} +1 -1
  303. package/dist/web/assets/{maximize-2-DUWvLap6.js → maximize-2-DgF6ZVOM.js} +1 -1
  304. package/dist/web/assets/{monaco.contribution-_3aU1TTb.js → monaco.contribution-BPwsKvRB.js} +2 -2
  305. package/dist/web/assets/{monaco.contribution-h8U8HXFT.js → monaco.contribution-BbMpa0_-.js} +2 -2
  306. package/dist/web/assets/{monaco.contribution-CWeY6ia1.js → monaco.contribution-CJlccVX3.js} +2 -2
  307. package/dist/web/assets/{monaco.contribution-DOiiDDen.js → monaco.contribution-pWurLXbm.js} +2 -2
  308. package/dist/web/assets/{monitor-B6OuAu13.js → monitor-DlEV241C.js} +1 -1
  309. package/dist/web/assets/{paperclip-DSHxP9CY.js → paperclip-fnRZSIRc.js} +1 -1
  310. package/dist/web/assets/{pdf-RXlFwNte.js → pdf-CT3zVKCE.js} +1 -1
  311. package/dist/web/assets/play-wI_3FLr4.js +1 -0
  312. package/dist/web/assets/plus-DoJe4fLj.js +1 -0
  313. package/dist/web/assets/{presentation-C9WnPDVr.js → presentation-Bb8ecExR.js} +1 -1
  314. package/dist/web/assets/profile-agent-labels-Duh96b8x.js +1 -0
  315. package/dist/web/assets/{python-BQXo7wMt.js → python-DXA1xp0A.js} +1 -1
  316. package/dist/web/assets/{refresh-cw-NXOER_CD.js → refresh-cw-B53QjxMO.js} +1 -1
  317. package/dist/web/assets/{save-BxXc21N6.js → save-V1Q4Fcqa.js} +1 -1
  318. package/dist/web/assets/settings-lists-CtH1A57b.js +5 -0
  319. package/dist/web/assets/square-BqSK-hv9.js +1 -0
  320. package/dist/web/assets/square-terminal-Dmgkm5zY.js +1 -0
  321. package/dist/web/assets/submit-issue-command-DRgUboVW.js +3 -0
  322. package/dist/web/assets/{toggleHighContrast-Di1cRuQ4.js → toggleHighContrast-B-BD2K2Q.js} +1 -1
  323. package/dist/web/assets/{training-managed-adapter-81RrdT1k.js → training-managed-adapter-BXNwgd3P.js} +1 -1
  324. package/dist/web/assets/{training-model-data-CmVo80ZR.js → training-model-data-14942K_Z.js} +5 -5
  325. package/dist/web/assets/{tsMode-PxisJRYB.js → tsMode-DdgIcxK3.js} +1 -1
  326. package/dist/web/assets/ui-theme.generated-D-mc26qt.js +144 -0
  327. package/dist/web/assets/{upload-NXasN1wU.js → upload-82Y6RjLi.js} +1 -1
  328. package/dist/web/assets/{useAccountSettings-Dqqt1vUY.js → useAccountSettings-BgHXNpq_.js} +1 -1
  329. package/dist/web/assets/{useAgentInventory-BV4CUWzJ.js → useAgentInventory-B-LNn3up.js} +1 -1
  330. package/dist/web/assets/{useLocalAgentSchedules-Cc0M_qax.js → useLocalAgentSchedules-CsKv22Hs.js} +1 -1
  331. package/dist/web/assets/{useQuery-ByaRC9SK.js → useQuery-CPC2wsWm.js} +1 -1
  332. package/dist/web/assets/{wifi-off-aVJ3AvT_.js → wifi-off-DXOoDN9l.js} +1 -1
  333. package/dist/web/assets/{workers-u92Boudu.js → workers-Clf4hKt5.js} +1 -1
  334. package/dist/web/assets/x-IPhrr4ju.js +1 -0
  335. package/dist/web/assets/{yaml-BxQUS0ew.js → yaml-I1tf8Uxx.js} +1 -1
  336. package/dist/web/index.html +12 -3
  337. package/docs/command-reference.md +28 -2
  338. package/package.json +2 -1
  339. package/dist/chunks/app-server-evaluations-HAAYVEXB.js +0 -2
  340. package/dist/chunks/app-server-runtime-B6BAJA6L.js +0 -2
  341. package/dist/chunks/chunk-4N3UF3U5.js +0 -2
  342. package/dist/chunks/chunk-6DCXAXVD.js +0 -22
  343. package/dist/chunks/chunk-BLKTUFGB.js +0 -2
  344. package/dist/chunks/chunk-E3EKBPCB.js +0 -2
  345. package/dist/chunks/chunk-F5JDBDYL.js +0 -2
  346. package/dist/chunks/chunk-JEVA7YQL.js +0 -3
  347. package/dist/chunks/chunk-KC7I6E6W.js +0 -2
  348. package/dist/chunks/chunk-OJSK4NSW.js +0 -151
  349. package/dist/chunks/chunk-UBCLPZSQ.js +0 -4
  350. package/dist/chunks/chunk-UJBEWIR3.js +0 -8
  351. package/dist/chunks/chunk-V67IFV26.js +0 -86
  352. package/dist/chunks/chunk-VSUHJ46L.js +0 -18
  353. package/dist/chunks/chunk-X3WEQL3O.js +0 -2
  354. package/dist/chunks/chunk-XK7SPL63.js +0 -2
  355. package/dist/chunks/chunk-YR5ID2SS.js +0 -2
  356. package/dist/chunks/cli-WC45SI7E.js +0 -2
  357. package/dist/chunks/connected-app-executor-TZJB25UZ.js +0 -2
  358. package/dist/chunks/experiments-IWSCFDBB.js +0 -2
  359. package/dist/chunks/host-profile-evaluation-tools-EFB2YIK2.js +0 -2
  360. package/dist/chunks/host-profile-external-dataset-KSNREH3Q.js +0 -2
  361. package/dist/chunks/hosted-app-server-composition-VV545TYL.js +0 -2
  362. package/dist/chunks/hosted-experiment-improvement-NYLADI7S.js +0 -3
  363. package/dist/chunks/hosted-harness-runtime-Z54E5MD7.js +0 -2
  364. package/dist/chunks/hosted-profile-compiler-SW2RWTDZ.js +0 -2
  365. package/dist/chunks/hosted-profile-evaluation-preparation-ZAOGDQXO.js +0 -3
  366. package/dist/chunks/local-harness-improvement-runtime-KB4OP3SM.js +0 -2
  367. package/dist/chunks/local-harness-taskset-review-SUDEUGUU.js +0 -2
  368. package/dist/chunks/opchat-KSOJEL4W.js +0 -3
  369. package/dist/chunks/project-action-payload-SQ5BSQHY.js +0 -2
  370. package/dist/chunks/refiner-profile-service-UWI4NAZ3.js +0 -2
  371. package/dist/chunks/saved-work-QA46KCME.js +0 -2
  372. package/dist/chunks/src-E7NWAN5B.js +0 -420
  373. package/dist/chunks/standalone-experiment-turn-owner-SQJ5HXDZ.js +0 -2
  374. package/dist/chunks/store-learned-preference-migration-validation-KOCW5NOZ.js +0 -2
  375. package/dist/chunks/store-taskset-drafts-TA6X245D.js +0 -9
  376. package/dist/chunks/training-hosted-4R4QTSAN.js +0 -2
  377. package/dist/chunks/training-hosted-report-UQVK6FTG.js +0 -2
  378. package/dist/web/assets/App-Df7uYQGj.css +0 -1
  379. package/dist/web/assets/App-Yy3l2sdD.js +0 -56
  380. package/dist/web/assets/AppTerminalPanel-Dqr6VS3I.js +0 -2
  381. package/dist/web/assets/AppsView-27Fl_-49.js +0 -1
  382. package/dist/web/assets/BrowserSidebar-bnI3sSZO.js +0 -1
  383. package/dist/web/assets/CommunityView-CFKM7FTY.js +0 -1
  384. package/dist/web/assets/ComposerAttachments-BdjBddKf.js +0 -2
  385. package/dist/web/assets/ComposerCreateImproveStrip-ViJ5E0We.js +0 -1
  386. package/dist/web/assets/ConversationImportsSettings-xLl-7G9R.js +0 -1
  387. package/dist/web/assets/FilePagePreview-CTHuPzJt.js +0 -2
  388. package/dist/web/assets/GetStartedView-DvV_RMgM.js +0 -1
  389. package/dist/web/assets/GettingStartedDialog-B1jFmfgd.js +0 -1
  390. package/dist/web/assets/GettingStartedDialog-C73Bdcz2.css +0 -1
  391. package/dist/web/assets/HostedModelLearningSettings-DzAiutjq.js +0 -1
  392. package/dist/web/assets/LabModelVersionDetailPage-CF8FkRUY.js +0 -1
  393. package/dist/web/assets/LabSkillSidebar-gjbl9Nlv.js +0 -1
  394. package/dist/web/assets/MainChatThread-BUKup-JB.js +0 -2
  395. package/dist/web/assets/MainPane-BpE7AKXu.js +0 -92
  396. package/dist/web/assets/NativeSkillSidebar-Br5Lk6iU.js +0 -1
  397. package/dist/web/assets/NewProjectDialog-DyuKPOvF.js +0 -1
  398. package/dist/web/assets/OutputsPage-Dl63CVrw.js +0 -1
  399. package/dist/web/assets/ProjectsPage-BNF1TiyR.js +0 -1
  400. package/dist/web/assets/RightChatPanelStack-CxVAAbp-.js +0 -1
  401. package/dist/web/assets/RightSidebarHomePanel-D46ktZg-.js +0 -1
  402. package/dist/web/assets/ScheduledWorkPage-Cp0Hf-hs.js +0 -1
  403. package/dist/web/assets/SettingsView-BT57Q5Wx.js +0 -5
  404. package/dist/web/assets/TeamChatView-BmxTJ9E5.js +0 -1
  405. package/dist/web/assets/TerminalOverlay-D-Yq8av_.js +0 -16
  406. package/dist/web/assets/TrainingCreationPanel-CwfNPj_G.js +0 -1
  407. package/dist/web/assets/WorkSidebarPanel-myTA9tsh.js +0 -1
  408. package/dist/web/assets/WorkspaceDiffPanel-D0dzFgzW.js +0 -11
  409. package/dist/web/assets/WorkspaceEnvironmentMenu-AUzME1eX.js +0 -35
  410. package/dist/web/assets/WorkspaceFileLocation-Ai8Tz2Mz.js +0 -1
  411. package/dist/web/assets/WorkspaceGitDialogs-D-UCCckC.js +0 -1
  412. package/dist/web/assets/chevron-right-Cxv_xBz5.js +0 -1
  413. package/dist/web/assets/git-dialogs-C631EFyO.css +0 -1
  414. package/dist/web/assets/icons-kaq6k88m.js +0 -1
  415. package/dist/web/assets/index-DUMDOdB2.css +0 -1
  416. package/dist/web/assets/play-BPPQoqMl.js +0 -1
  417. package/dist/web/assets/plus-D18vYzHF.js +0 -1
  418. package/dist/web/assets/settings-lists-DMNPkGYk.js +0 -5
  419. package/dist/web/assets/square-Da8RuqW4.js +0 -1
  420. package/dist/web/assets/ui-theme.generated-R0MY_Jy0.js +0 -136
@@ -1,2 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{b as a}from"./chunk-I3X6M6ZO.js";import"./chunk-6PKXJEJM.js";import"./chunk-PAZDQRYU.js";import"./chunk-4NXEYPPX.js";import"./chunk-TTN63EAM.js";import"./chunk-TH6Y4K5Z.js";import"./chunk-MHYI7ATG.js";import"./chunk-3DVWJCOA.js";import"./chunk-MWXW2CA6.js";import"./chunk-L3KS6MOV.js";import"./chunk-4LZLO4OW.js";import"./chunk-IZ56L2ZK.js";import"./chunk-KCJVFLBB.js";import"./chunk-WBUK73ST.js";import"./chunk-CN5OXQ7A.js";import"./chunk-NR5VASQB.js";import"./chunk-OZ6LRNRE.js";import"./chunk-SGK4GR44.js";import"./chunk-XGY4OQLC.js";import"./chunk-E67M5WGY.js";import"./chunk-M4ZRCRJM.js";import"./chunk-VNJAAYNQ.js";import"./chunk-XK7SPL63.js";import"./chunk-NVHZRKXB.js";import"./chunk-MTP3B2SU.js";import"./chunk-UWHIU24L.js";import"./chunk-LV3CQ72P.js";import"./chunk-M6JRS5PA.js";import"./chunk-KCV5VN4X.js";import"./chunk-RV7PUSI2.js";import"./chunk-6FA3GG5B.js";import"./chunk-KK626T3Z.js";import"./chunk-6DCXAXVD.js";import"./chunk-OE22TAXP.js";import"./chunk-UGOK7VTC.js";import"./chunk-4M3YW3EQ.js";import"./chunk-PBZCXPPC.js";import"./chunk-NJLULBTM.js";import"./chunk-VVNV4NNW.js";import"./chunk-PF56N7ZY.js";import"./chunk-FTQLQJQV.js";export{a as createStandaloneExperimentTurnOwner};
@@ -1,2 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import"./chunk-UBCLPZSQ.js";import"./chunk-OQPJ7FJF.js";import"./chunk-WBUK73ST.js";import"./chunk-P7HRF4FM.js";import{H as d}from"./chunk-LNRFRAV5.js";import"./chunk-2ITZW2CN.js";import"./chunk-CQF6QZEL.js";import"./chunk-D5ADDBS5.js";import"./chunk-QRJPLZF7.js";import"./chunk-PWK5Z5S3.js";import"./chunk-CN5OXQ7A.js";import"./chunk-NR5VASQB.js";import"./chunk-OZ6LRNRE.js";import"./chunk-IDOGNIMV.js";import"./chunk-W45RKGM6.js";import"./chunk-W45RKGM6.js";import"./chunk-TMMFF6DO.js";import"./chunk-BQUWZRWU.js";import"./chunk-5ZBLCWEJ.js";import"./chunk-CM5USMXN.js";import"./chunk-WFVOG5PU.js";import"./chunk-XGY4OQLC.js";import"./chunk-VWJ5IYQP.js";import"./chunk-E67M5WGY.js";import"./chunk-PCB65K4G.js";import"./chunk-4N3UF3U5.js";import"./chunk-HZLV773Y.js";import"./chunk-M4ZRCRJM.js";import"./chunk-VNJAAYNQ.js";import"./chunk-XK7SPL63.js";import"./chunk-NVHZRKXB.js";import"./chunk-MTP3B2SU.js";import"./chunk-LAOLJDVB.js";import"./chunk-UWHIU24L.js";import"./chunk-LV3CQ72P.js";import"./chunk-M6JRS5PA.js";import"./chunk-KCV5VN4X.js";import"./chunk-RV7PUSI2.js";import"./chunk-6FA3GG5B.js";import"./chunk-6DCXAXVD.js";import"./chunk-OE22TAXP.js";import"./chunk-4M3YW3EQ.js";import"./chunk-PBZCXPPC.js";import"./chunk-NJLULBTM.js";import"./chunk-VVNV4NNW.js";import"./chunk-PF56N7ZY.js";import{a as s}from"./chunk-FTQLQJQV.js";function f(e){if(Array.isArray(e)){let r=!1,n=e.map(c=>{let t=f(c);return r||=t.changed,t.value});return{value:r?n:e,changed:r}}if(!u(e))return{value:e,changed:!1};let o=!1,i={};for(let[r,n]of Object.entries(e)){if(r==="learnedPreference"&&n!==null){let t=u(n)?Object.fromEntries(Object.entries(n).filter(([l])=>l!=="qualificationKind")):n,a=d.safeParse(t);i[r]=a.success?a.data:null,o||=!a.success||t!==n;continue}let c=f(n);i[r]=c.value,o||=c.changed}return{value:o?i:e,changed:o}}s(f,"sanitizeUnverifiableLearnedPreferenceBindings");function u(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}s(u,"isRecord");export{f as sanitizeUnverifiableLearnedPreferenceBindings};
@@ -1,9 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import"./chunk-W45RKGM6.js";import{a as ke}from"./chunk-TXBIZDXG.js";import{b as ue,f as we,g as Ee}from"./chunk-DGPGOBYZ.js";import"./chunk-GLDYJM7O.js";import{h as N,k as L}from"./chunk-X3WEQL3O.js";import{d as x,e as Te,g as C,h as D,i as ge,k as ye}from"./chunk-E3EKBPCB.js";import{a as M,b as g,c as q}from"./chunk-GQUS7MCH.js";import{a as me}from"./chunk-KCJVFLBB.js";import"./chunk-UBCLPZSQ.js";import"./chunk-OQPJ7FJF.js";import"./chunk-WBUK73ST.js";import"./chunk-P7HRF4FM.js";import"./chunk-LNRFRAV5.js";import"./chunk-2ITZW2CN.js";import"./chunk-CQF6QZEL.js";import"./chunk-D5ADDBS5.js";import"./chunk-QRJPLZF7.js";import"./chunk-PWK5Z5S3.js";import"./chunk-CN5OXQ7A.js";import"./chunk-NR5VASQB.js";import"./chunk-OZ6LRNRE.js";import"./chunk-IDOGNIMV.js";import"./chunk-W45RKGM6.js";import"./chunk-W45RKGM6.js";import"./chunk-TMMFF6DO.js";import"./chunk-BQUWZRWU.js";import"./chunk-5ZBLCWEJ.js";import"./chunk-CM5USMXN.js";import"./chunk-WFVOG5PU.js";import"./chunk-XGY4OQLC.js";import"./chunk-VWJ5IYQP.js";import"./chunk-E67M5WGY.js";import"./chunk-PCB65K4G.js";import{d as ce,e as fe,f as U,o as le,p as pe}from"./chunk-4N3UF3U5.js";import{A as de,j as re,k as ie,m as oe,n as ne}from"./chunk-HZLV773Y.js";import{Jb as F,Q as se,Qb as he,_ as A,b as X,c as Z,e as $,i as ee,la as y,ta as T,za as H}from"./chunk-M4ZRCRJM.js";import"./chunk-VNJAAYNQ.js";import{n as te,x as S,y as ae}from"./chunk-XK7SPL63.js";import"./chunk-NVHZRKXB.js";import"./chunk-MTP3B2SU.js";import"./chunk-LAOLJDVB.js";import"./chunk-UWHIU24L.js";import"./chunk-LV3CQ72P.js";import"./chunk-M6JRS5PA.js";import"./chunk-KCV5VN4X.js";import"./chunk-RV7PUSI2.js";import"./chunk-6FA3GG5B.js";import{e as J,f as Y}from"./chunk-KK626T3Z.js";import"./chunk-6DCXAXVD.js";import"./chunk-OE22TAXP.js";import"./chunk-UGOK7VTC.js";import{N as B,O as I}from"./chunk-4M3YW3EQ.js";import"./chunk-PBZCXPPC.js";import"./chunk-NJLULBTM.js";import{n as m}from"./chunk-VVNV4NNW.js";import{A as u}from"./chunk-PF56N7ZY.js";import{a as h}from"./chunk-FTQLQJQV.js";import{randomUUID as et}from"node:crypto";import{cp as tt,mkdir as at,readdir as st,rename as G,rm as Ne,stat as rt}from"node:fs/promises";import O from"node:path";function ve(o,t,e,a){let s=t.modelScope;if(!s)return;let i=o.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,t.profileId]);if(!i)throw new Error("Taskset draft Model was not found in this Profile.");let r=S.parse(JSON.parse(i.payload)),n={id:e.id,revision:e.revision,contentHash:e.contentHash},f=e.metadata.rewardBinding===void 0?null:te.parse(e.metadata.rewardBinding),p=s.source?.authoringGraph==="bound"&&f&&r.trainingSetup.rewardBindingRef&&I(f,r.trainingSetup.rewardBindingRef);return we(o,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${m({draftId:t.id,revision:t.revision,scope:s,tasksetRef:n})}`,expectedRevision:s.expectedModelRevision,project:ae.strip().parse({...r,trainingSetup:{...r.trainingSetup,tasksetRef:n,rewardBindingRef:f,tasksetRelease:null,recipe:p?r.trainingSetup.recipe:null,...r.trainingSetup.evaluationTasksetRef&&r.trainingSetup.tasksetRef&&I(r.trainingSetup.evaluationTasksetRef,r.trainingSetup.tasksetRef)?{evaluationTasksetRef:n}:{}}})},null,a?.modelResources?{...a.modelResources,taskset:a.taskset,executionResources:{environment:a.environment,verifierSet:a.verifierSet}}:a??void 0)}h(ve,"selectTasksetDraftModel");import{createHash as je,randomUUID as Je}from"node:crypto";import{lstat as Se,mkdir as Pe,readdir as Be,readFile as $e,rename as qe,rm as Ue,writeFile as Ve}from"node:fs/promises";import R from"node:path";var b=le.extend({workspaceHash:u.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function De(o){let{db:t,profileId:e}=o,a=Z.parse(o.request),s=h(()=>{let w=t.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[a.modelId,e]);if(!w)throw new Error("Taskset draft Model was not found in this Profile.");return S.parse(JSON.parse(w.payload))},"requireModel"),i=s(),r=m(a),n=t.get("SELECT request_hash, state, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,a.operationId]);if(n){if(n.request_hash!==r)throw new Error("Taskset draft operation was reused with different input.");if(n.state==="deleted")throw new Error("This Taskset draft was deleted.");return b.parse(JSON.parse(n.payload))}if(!o.source)return null;if(i.revision!==a.expectedModelRevision)throw new Error("Model changed before draft initialization. Refresh before editing.");let f=i.trainingSetup.tasksetRef,p=f?t.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[f.id,f.revision,e]):null,d=p?T.parse(JSON.parse(p.payload)):null;if(!d||!f||d.contentHash!==f.contentHash)throw new Error("The selected source Taskset is unavailable.");let l=o.source,c=i.hosted?.apiOrigin?i.hosted.tasksets.find(w=>w.localTasksetId===d.id&&w.localTasksetHash===d.contentHash&&w.packageHash===l.contentHash&&w.releaseId===l.taskset.id&&w.releaseRevision===l.taskset.revision&&w.releaseHash===l.taskset.contentHash):null,k=typeof d.metadata.importedPackageHash=="string"?d.metadata.importedPackageHash:c?.packageHash;if(k?k!==l.contentHash:!I(B(F({taskset:d,adapterId:x(d)}).tasksetRelease),B(l.taskset)))throw new Error("Taskset draft package differs from its selected source.");let P=l.modelResources?se.safeParse(l.taskset.metadata.modelTasksetDerivation):X.safeParse(l.taskset.metadata.modelTasksetAuthoring),_=c&&P.success&&P.data.owner.modelId===i.id?P.data.owner:{scopeId:e,modelId:i.id},Ce=ce({request:a,owner:_,source:l}),ze=pe({sourceDraft:de(d),source:l,preparation:Ce,expectedModelRevision:a.expectedModelRevision});await C(o.home,l);let K=b.parse({...ze,workspaceHash:null}),We=K.draft;t.exec("BEGIN IMMEDIATE");try{let w=t.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,a.operationId]);if(w&&w.request_hash!==r)throw new Error("Taskset draft operation was reused with different input.");if(!w&&s().revision!==a.expectedModelRevision)throw new Error("Model changed during draft initialization. Refresh before editing.");t.run("INSERT INTO model_taskset_draft_operations (profile_id, operation_id, request_hash, draft_id, state, payload) VALUES (?, ?, ?, ?, 'prepared', ?) ON CONFLICT(profile_id, operation_id) DO NOTHING",[e,a.operationId,r,We.id,JSON.stringify(K)]),t.exec("COMMIT")}catch(w){throw t.exec("ROLLBACK"),w}let j=t.get("SELECT request_hash, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,a.operationId]);if(!j||j.request_hash!==r)throw new Error("Taskset draft operation was reused with different input.");return b.parse(JSON.parse(j.payload))}h(De,"prepareDraftInitialization");async function Re(o){let{initialized:t,workspacePath:e}=o;if(o.completed())return;if(t.workspaceHash)try{if(await Se(e),o.completed())return;if(await V(e),await g(e)!==t.workspaceHash)throw new Error("Prepared Taskset draft files changed before initialization completed.");return}catch(s){if(s.code!=="ENOENT")throw s}let a=`${e}.initializing-${Je()}`;await Pe(R.dirname(e),{recursive:!0});try{let s=t.draft.modelScope?.source;if(!s)throw new Error("Taskset draft lost its source preparation.");let i=await D(o.home,s.sourcePackageHash),r=new Map;for(let f of t.filePaths){let p=i.files.find(d=>d.asset.id===f.assetId);if(!p)throw new Error("Taskset draft source asset is missing.");for(let d of f.paths){if(d.includes("\\")||R.posix.isAbsolute(d)||d.split("/").some(k=>!k||k==="."||k===".."||k.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let l=r.get(d);if(l&&l!==p.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(l)continue;let c=R.join(a,d);await Pe(R.dirname(c),{recursive:!0}),await Ve(c,A(p),{flag:"wx"}),r.set(d,p.asset.contentHash)}}await M(t.draft,a);for(let[f,p]of r)if(je("sha256").update(await $e(R.join(a,f))).digest("hex")!==p)throw new Error(`Taskset draft source asset conflicts with authoring file ${f}.`);let n=await g(a);if(o.retainHash({...t,workspaceHash:n}),o.completed())return;try{await qe(a,e)}catch(f){if(!["EEXIST","ENOTEMPTY"].includes(f.code??""))throw f;if(o.completed())return;if(await V(e),await g(e)!==n)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await Ue(a,{recursive:!0,force:!0})}}h(Re,"materializeDraftInitialization");async function V(o){let t=await Se(o);if(!t.isDirectory()||t.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let e of await Be(o,{withFileTypes:!0})){if(e.name.startsWith(".env")||e.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(e.isDirectory())await V(R.join(o,e.name));else if(!e.isFile())throw new Error("Taskset draft source must contain regular files.")}}h(V,"assertRegularTree");import Qe from"node:path";async function be(o){let t=F({taskset:o.taskset,adapterId:x(o.taskset)}),e=await ye({root:o.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:t.tasksetRelease,environment:t.environmentRelease,verifierSet:t.verifierSetRelease},sources:U.parse(o.taskset.metadata.portableFileInventory??[])}),a=o.preparation.authoringGraph==="bound"?await D(o.home,o.preparation.sourcePackageHash):void 0,s=fe({preparation:o.preparation,edited:e,source:a});if(s.modelResources){let c=he({package:s,profileId:o.taskset.profileId,name:o.taskset.name,createdAt:o.taskset.createdAt}),k=ue(c.taskset,o.taskset),P=T.parse({...k,authoringProvenance:o.taskset.authoringProvenance,metadata:{...k.metadata,sourcePackageHash:o.taskset.metadata.sourcePackageHash}}),_=T.parse({...P,contentHash:H(P)});return await ge({home:o.home,...c,taskset:_}),{taskset:_,directory:Qe.join(o.home,"training","tasksets",String(_.environment.metadata.runtimeSourceTasksetId))}}let i=U.parse(o.taskset.metadata.portableFileInventory??[]),r=s.files.map(c=>({asset:c.asset,sourcePath:i.find(k=>k.asset.id===c.asset.id)?.sourcePath??c.asset.path})),n=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(c=>c.asset.path==="environment/execution.json"):void 0,f=`model-draft-${m({packageHash:s.contentHash,taskset:o.taskset})}`,p=T.parse({...o.taskset,id:s.taskset.id,revision:s.taskset.revision,metadata:{...o.taskset.metadata,portableFileInventory:r,importedPackageHash:s.contentHash,derivedPortableMetadata:s.taskset.metadata},environment:{...o.taskset.environment,metadata:{...o.taskset.environment.metadata,runtimeSourceTasksetId:f,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),d=T.parse({...p,contentHash:H(p)}),l=await N(o.home,{taskset:d,generatedFiles:n?[{path:n.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(A(n))}]:[]},f,{source:{directory:o.directory,packageHash:await g(o.directory)},verify:h(c=>L(c,d),"verify")});return await C(o.home,s),{directory:l,taskset:d}}h(be,"materializeModelTasksetDraftPublication");import{constants as Q}from"node:fs";import{createHash as Ge}from"node:crypto";import{lstat as Ie,mkdir as Ke,open as Ye,readdir as Xe,rm as _e}from"node:fs/promises";import z from"node:path";var v=h((o,t)=>Y(z.join(o,"state","taskset-draft-writes"),t),"withTasksetDraftLock"),He=ie,Ze=h(o=>Ge("sha256").update(o).digest("hex"),"digest");async function W(o,t,e=!1){$.parse(t);let a=o;for(let s of["",...t.split("/").slice(0,-1)]){s&&(a=z.join(a,s)),e&&await Ke(a,{recursive:!1}).catch(r=>{if(r.code!=="EEXIST")throw r});let i=await Ie(a);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return z.join(o,t)}h(W,"regularPath");async function Me(o,t){let e=await W(o,t),a=await Ye(e,Q.O_RDONLY|Q.O_NOFOLLOW|Q.O_NONBLOCK);try{let s=await a.stat();if(!s.isFile()||s.size>re)throw new Error("Taskset draft file must be a regular file within the 6 MB editing limit.");let i=Buffer.alloc(s.size),r=0;for(;r<i.length;){let n=await a.read(i,r,i.length-r,r);if(!n.bytesRead)throw new Error("Taskset draft file changed during reading.");r+=n.bytesRead}if((await a.read(Buffer.alloc(1),0,1,r)).bytesRead)throw new Error("Taskset draft file changed during reading.");return i}finally{await a.close()}}h(Me,"readBytes");async function Oe(o,t){let e=await Me(o,t);return oe(t,e)}h(Oe,"readTasksetDraftFile");async function Ae(o){let t=[];async function e(a=""){for(let s of await Xe(z.join(o,a),{withFileTypes:!0})){let i=a?`${a}/${s.name}`:s.name;if($.parse(i),s.isSymbolicLink())throw new Error("Taskset draft files cannot contain symbolic links.");if(s.isDirectory()){await e(i);continue}if(!s.isFile())throw new Error("Taskset draft files must be regular files.");if(t.length>=1e4)throw new Error("Taskset draft file inventory exceeds its limit.");let r=await Ie(await W(o,i));if(!r.isFile()||r.isSymbolicLink())throw new Error("Taskset draft files must be regular files.");t.push({path:i,sizeBytes:r.size,writable:He(i)})}}return h(e,"visit"),await W(o,"taskset.json"),await e(),t.sort((a,s)=>a.path.localeCompare(s.path))}h(Ae,"listTasksetDraftFiles");async function Fe(o,t,e){if(!He(t.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let a=null;try{a=await Me(o,t.path)}catch(r){if(r.code!=="ENOENT")throw r}if((a?Ze(a):null)!==t.expectedFileHash)throw new Error("Taskset draft file changed. Reload it before saving.");if(!a&&t.content===null)throw new Error("Taskset draft file does not exist.");let s=t.content?ne(t.content):null,i=await W(o,t.path,!0);s?await J(i,s):await _e(i);try{return await e()}catch(r){throw a?await J(i,a):await _e(i,{force:!0}),r}}h(Fe,"mutateTasksetDraftFile");var E=u.object({schemaVersion:u.literal("openpond.tasksetDraftPointer.v1"),id:u.string().trim().min(1),profileId:u.string().trim().min(1),modelScope:y.shape.modelScope,status:u.enum(["draft","validating","needs_review","published"]),revision:u.number().int().positive(),workspacePath:u.string().trim().min(1),packageHash:u.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:u.object({id:u.string().trim().min(1),revision:u.number().int().positive(),contentHash:u.string().trim().min(8)}).nullable(),createdAt:u.string().trim().min(1),updatedAt:u.string().trim().min(1)}),xe=class extends me{static{h(this,"SqliteTasksetDraftStore")}async initializeModelTasksetDraft(t,e,a){await this.ready;let s=this.writeQueue.then(()=>v(this.home,async()=>{let i=this.database,r=await De({db:i,home:this.home,profileId:t,request:e,source:a});if(!r)return null;let n=h(()=>{let d=i.get("SELECT state FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,e.operationId]);if(d?.state==="deleted")throw new Error("This Taskset draft was deleted.");let l=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[r.draft.id]);if(!l){if(d?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let c=E.parse(JSON.parse(l.payload));if(c.profileId!==t||c.modelScope?.source?.requestHash!==r.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),f=this.workspacePath(r.draft.id);await Re({home:this.home,initialized:r,workspacePath:f,completed:n,retainHash:h(d=>{let l=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,e.operationId]),c=b.parse(JSON.parse(l.payload));if(c.workspaceHash&&c.workspaceHash!==d.workspaceHash)throw new Error("Taskset draft initialization produced different files on retry.");i.run("UPDATE model_taskset_draft_operations SET payload = ? WHERE profile_id = ? AND operation_id = ? AND state = 'prepared'",[JSON.stringify(d),t,e.operationId])},"retainHash")}),i.exec("BEGIN IMMEDIATE");try{if(!n()){let d=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,e.operationId]),l=b.parse(JSON.parse(d.payload)),c=l.draft,k=E.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:c.id,profileId:t,modelScope:c.modelScope,status:c.status,revision:c.revision,workspacePath:f,packageHash:l.workspaceHash,publishedTasksetRef:c.publishedTasksetRef,createdAt:c.createdAt,updatedAt:c.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[c.id,t,c.status,c.revision,JSON.stringify(k),c.createdAt,c.updatedAt]),i.run("UPDATE model_taskset_draft_operations SET state = 'ready' WHERE profile_id = ? AND operation_id = ?",[t,e.operationId])}i.exec("COMMIT")}catch(d){throw i.exec("ROLLBACK"),d}let p=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[r.draft.id]);return this.draftFromStoredPayload(JSON.parse(p.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(t,e,a={}){let s=y.parse(t);await this.ready;let i=this.writeQueue.then(()=>v(this.home,async()=>{let r=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[s.id]),n=r?E.safeParse(JSON.parse(r.payload)):null;if(n?.success){if(n.data.profileId!==s.profileId)throw new Error("Taskset draft profile cannot change.");if(m(n.data.modelScope?{...n.data.modelScope,expectedModelRevision:0}:null)!==m(s.modelScope?{...s.modelScope,expectedModelRevision:0}:null)||!a.refreshModelRevision&&m(n.data.modelScope)!==m(s.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(n.data.status==="published")throw new Error("Published Taskset drafts are immutable. Initialize a new draft to revise the Taskset.");if(s.revision<n.data.revision||e!==void 0&&n.data.revision!==e)throw new Error("Taskset draft changed before saving. Refresh before saving.")}else if(e!==void 0)throw new Error("Taskset draft is unavailable for saving.");if((!n?.success||a.refreshModelRevision)&&s.modelScope){let c=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!c)throw new Error("Taskset draft Model was not found in this Profile.");if(S.parse(JSON.parse(c.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let f=this.workspacePath(s.id),d=(await M(s,f)).draft,l=E.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:d.id,profileId:d.profileId,modelScope:d.modelScope,status:d.status,revision:d.revision,workspacePath:f,packageHash:await g(f),publishedTasksetRef:d.publishedTasksetRef,createdAt:d.createdAt,updatedAt:d.updatedAt});return await this.savePointer(l,!0),d}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(t){let e=O.resolve(t.packagePath),s=(await rt(e)).isDirectory()?e:O.dirname(e);await Le(s);let i=await g(s),r=await q(s),n=await this.getTasksetDraft(r.id);if(n){let c=n.metadata.importedTasksetPackage;if(c&&typeof c=="object"&&!Array.isArray(c)&&c.packageHash===i&&n.profileId===t.profileId)return n;throw new Error(`Taskset draft ${r.id} already exists. Import a package with a distinct Taskset id.`)}let f=y.parse({...r,profileId:t.profileId,modelScope:null,status:"draft",revision:1,publishedTasksetRef:null,metadata:{...r.metadata,importedTasksetPackage:{packageHash:i,importedAt:new Date().toISOString()}},updatedAt:new Date().toISOString()}),p=this.workspacePath(f.id),d=`${p}.import-${process.pid}-${Date.now()}`;await at(O.dirname(p),{recursive:!0});try{await tt(s,d,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await M(f,d),await G(d,p)}catch(c){throw await Ne(d,{recursive:!0,force:!0}),c}let l=E.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:f.id,profileId:f.profileId,status:f.status,revision:f.revision,workspacePath:p,packageHash:await g(p),publishedTasksetRef:f.publishedTasksetRef,createdAt:f.createdAt,updatedAt:f.updatedAt});return await this.savePointer(l),this.draftFromStoredPayload(l)}async materializePublishedTasksetPackage(t){let e=await this.getTasksetDraftWorkspace(t.draftId);if(!e)throw new Error(`Taskset draft ${t.draftId} workspace was not found.`);if(t.taskset.metadata.sourcePackageHash!==void 0&&t.taskset.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft files changed before publication. Refresh before publishing.");let a=`draft-${m({taskset:t.taskset,packageHash:e.packageHash})}`,s=await Te(t.taskset,e.workspacePath),i=T.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:e.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:a}}}),r=T.parse({...i,contentHash:H(i)}),n=await N(this.home,{taskset:r,generatedFiles:s.generatedFiles},a,{source:{directory:e.workspacePath,packageHash:e.packageHash},verify:h(p=>L(p,r),"verify")}),f=await this.getTasksetDraft(t.draftId);return f?.modelScope?.source?be({home:this.home,directory:n,taskset:r,preparation:f.modelScope.source}):{directory:n,taskset:r}}async finalizeTasksetDraftPublication(t){await this.ready;let e=y.parse(t.draft),a=T.parse(t.taskset),s=e.modelScope?.source?.authoringGraph==="bound"&&typeof a.metadata.importedPackageHash=="string"?await D(this.home,a.metadata.importedPackageHash):null,i=this.writeQueue.then(()=>v(this.home,async()=>{let r=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[e.id]);if(!r)throw new Error("Taskset draft was deleted before publication.");let n=E.parse(JSON.parse(r.payload));if(n.profileId!==e.profileId||a.profileId!==e.profileId)throw new Error("Taskset publication belongs to another Profile.");if(m(n.modelScope)!==m(e.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(n.status==="published"&&n.publishedTasksetRef){let c=n.publishedTasksetRef,k=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[c.id,c.revision,c.contentHash]);if(!k)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:y.parse({...e,status:n.status,revision:n.revision,publishedTasksetRef:c,updatedAt:n.updatedAt}),taskset:T.parse(JSON.parse(k.payload))}}if(n.revision!==e.revision||a.metadata.sourcePackageHash!==t.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let f=n.modelScope?.source,p=f?.authoringGraph==="bound"&&a.metadata.modelTasksetDerivation&&typeof a.metadata.modelTasksetDerivation=="object"?{...a.metadata.modelTasksetDerivation,schemaVersion:f.lineage.schemaVersion}:a.metadata.modelTasksetAuthoring;if(f&&(a.id!==f.tasksetId||a.revision!==f.tasksetRevision||m(p)!==m(f.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let d=y.parse({...e,status:"published",revision:e.revision+1,publishedTasksetRef:{id:a.id,revision:a.revision,contentHash:a.contentHash},updatedAt:new Date().toISOString()}),l=E.parse({...n,status:d.status,revision:d.revision,publishedTasksetRef:d.publishedTasksetRef,updatedAt:d.updatedAt});return ke(this.database,a,()=>{if(s&&Ee(this.database,{package:s,taskset:a,generatedFiles:[]}),ve(this.database,e,a,s),this.database.get("SELECT revision FROM taskset_drafts WHERE id = ?",[e.id])?.revision!==e.revision)throw new Error("Taskset draft changed during publication.");this.database.run("UPDATE taskset_drafts SET status = ?, revision = ?, payload = ?, updated_at = ? WHERE id = ?",[l.status,l.revision,JSON.stringify(l),l.updatedAt,e.id])}),{draft:d,taskset:a}}));return this.writeQueue=i.then(()=>{},()=>{}),i}async getTasksetDraft(t){let e=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[t],a=>a);return e===null?null:this.draftFromStoredPayload(e)}async listTasksetDrafts(t){await this.ready,await this.writeQueue;let e=await this.all(t?"SELECT payload FROM taskset_drafts WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM taskset_drafts ORDER BY updated_at DESC",t?[t]:[]);return Promise.all(e.map(a=>this.draftFromStoredPayload(JSON.parse(a.payload))))}async readHumanPublishedTasksetDraft(t,e){let a=(await this.listTasksetDrafts(t)).filter(r=>r.status==="published"&&r.modelScope===null&&m(r.publishedTasksetRef)===m(e));if(a.length!==1)return null;let s=a[0],i=await this.getTasksetDraftWorkspace(s.id);return i?{draft:s,workspace:i}:null}async getTasksetDraftWorkspace(t){let e=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[t],s=>s);if(e===null)return null;let a=await this.pointerFromStoredPayload(e);return{draftId:a.id,workspacePath:a.workspacePath,packageHash:await g(a.workspacePath)}}async deleteTasksetDraft(t){await this.ready;let e=this.writeQueue.then(()=>v(this.home,async()=>{let a=this.workspacePath(t),s=`${a}.delete-${et()}`,i=!1;try{await G(a,s),i=!0}catch(r){if(r.code!=="ENOENT")throw r}try{this.database.exec("BEGIN IMMEDIATE");try{this.database.run("DELETE FROM taskset_drafts WHERE id = ?",[t]),this.database.run("UPDATE model_taskset_draft_operations SET state = 'deleted' WHERE draft_id = ?",[t]),this.database.exec("COMMIT")}catch(r){throw this.database.exec("ROLLBACK"),r}}catch(r){throw i&&await G(s,a).catch(()=>{}),r}i&&await Ne(s,{recursive:!0,force:!0})}));this.writeQueue=e.catch(()=>{}),await e}async tasksetDraftFiles(t,e,a){return await this.ready,v(this.home,async()=>{let s=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ? AND profile_id = ?",[e,t]);if(!s)throw new Error("Taskset draft was not found in this Profile.");let i=E.parse(JSON.parse(s.payload));if(a!==void 0){let n=await Oe(i.workspacePath,a);return{draftRevision:i.revision,file:{...n,writable:n.writable&&i.status!=="published"}}}let r=await Ae(i.workspacePath);return{draftRevision:i.revision,files:r.map(n=>({...n,writable:n.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(t,e){let a=ee.parse(e);await this.ready;let s=this.writeQueue.then(()=>v(this.home,async()=>{let i=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ? AND profile_id = ?",[a.draftId,t]);if(!i)throw new Error("Taskset draft was not found in this Profile.");let r=E.parse(JSON.parse(i.payload));if(r.status==="published")throw new Error("Published Taskset drafts are immutable.");if(r.revision!==a.expectedDraftRevision)throw new Error("Taskset draft changed. Reload before saving a file.");return Fe(r.workspacePath,a,async()=>{let n=E.parse({...r,revision:r.revision+1,packageHash:await g(r.workspacePath),updatedAt:new Date().toISOString()}),f=await this.draftFromStoredPayload(n);this.database.exec("BEGIN IMMEDIATE");try{if(this.database.get("SELECT revision FROM taskset_drafts WHERE id = ? AND profile_id = ?",[a.draftId,t])?.revision!==r.revision)throw new Error("Taskset draft changed during file saving.");this.database.run("UPDATE taskset_drafts SET revision = ?, payload = ?, updated_at = ? WHERE id = ?",[n.revision,JSON.stringify(n),n.updatedAt,n.id]),this.database.exec("COMMIT")}catch(p){throw this.database.exec("ROLLBACK"),p}return f})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(t){let e=m(t).slice(0,24);return O.join(this.home,"workspaces","tasksets",`taskset-${e}`)}async draftFromStoredPayload(t){let e=await this.pointerFromStoredPayload(t),a=await q(e.workspacePath);return y.parse({...a,id:e.id,profileId:e.profileId,modelScope:e.modelScope,status:e.status,revision:e.revision,publishedTasksetRef:e.publishedTasksetRef,createdAt:e.createdAt,updatedAt:e.updatedAt})}async pointerFromStoredPayload(t){let e=E.safeParse(t);if(e.success)return e.data;let a=y.parse(t);await this.saveTasksetDraft(a);let s=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[a.id],E.parse);if(!s)throw new Error(`Taskset draft ${a.id} migration failed.`);return s}async savePointer(t,e=!1){await(e?this.run.bind(this):this.upsertPayload.bind(this))(`INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at)
3
- VALUES (?, ?, ?, ?, ?, ?, ?)
4
- ON CONFLICT(id) DO UPDATE SET
5
- profile_id = excluded.profile_id,
6
- status = excluded.status,
7
- revision = excluded.revision,
8
- payload = excluded.payload,
9
- updated_at = excluded.updated_at`,[t.id,t.profileId,t.status,t.revision,JSON.stringify(t),t.createdAt,t.updatedAt])}};async function Le(o){let t=await st(o,{withFileTypes:!0});for(let e of t){let a=O.join(o,e.name);if(e.isSymbolicLink())throw new Error(`Taskset packages cannot contain symbolic links: ${a}`);if(e.isDirectory()){await Le(a);continue}if(!e.isFile())throw new Error(`Taskset packages may contain only files and directories: ${a}`)}}h(Le,"assertRegularPackageTree");export{xe as SqliteTasksetDraftStore};
@@ -1,2 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as S}from"./chunk-6MWT6BVU.js";import{c as J}from"./chunk-BSHAIAXY.js";import"./chunk-XWPC3AN4.js";import{c as v,f as E,h as A}from"./chunk-3M53YXEI.js";import"./chunk-BFKYRQMA.js";import"./chunk-SGK4GR44.js";import"./chunk-5ZBLCWEJ.js";import{a as x}from"./chunk-QCSLEMZF.js";import{l as _,m as M,n as P,o as C,p as O,q as R}from"./chunk-4RHM4WN2.js";import{m as j,o as T}from"./chunk-BLKTUFGB.js";import"./chunk-GLUWATL5.js";import"./chunk-YR5ID2SS.js";import"./chunk-M6JRS5PA.js";import"./chunk-KCV5VN4X.js";import"./chunk-RV7PUSI2.js";import"./chunk-6FA3GG5B.js";import"./chunk-KK626T3Z.js";import"./chunk-6DCXAXVD.js";import"./chunk-OE22TAXP.js";import"./chunk-UGOK7VTC.js";import"./chunk-4M3YW3EQ.js";import"./chunk-PBZCXPPC.js";import"./chunk-NJLULBTM.js";import"./chunk-VVNV4NNW.js";import"./chunk-PF56N7ZY.js";import{a as p}from"./chunk-FTQLQJQV.js";async function U(n,s={}){let e=process.env.OPENPOND_CHAT_INVOCATION;if(e)try{let t=process.env.OPENPOND_LOCAL_API_URL;if(!t)throw new Error("The chat executor did not supply its local API URL.");let i=new URL(t);if(i.protocol!=="http:"||!["127.0.0.1","localhost","[::1]"].includes(i.hostname)||i.username||i.password)throw new Error("Chat attachment requires the app's loopback API origin.");let u=await(s.request??await(await import("./training-UBX6E7SK.js")).createLocalAuthenticatedRequest(t,{timeoutMs:15e3}))(new URL("/v1/chat-experiments",i),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"attach_training",invocationToken:e,payload:{location:"cloud",...n}}),signal:AbortSignal.timeout(15e3),redirect:"error"});if(!u.ok)throw new Error(`Chat attachment returned HTTP ${u.status}.`)}catch(t){(s.warn??console.error)(`Hosted operation succeeded, but chat attachment failed: ${t instanceof Error?t.message:String(t)}. Inspect the saved job to retry attachment; do not submit it again.`)}}p(U,"attachHostedTrainingToChat");import{readFile as W}from"node:fs/promises";var H=new Set(["succeeded","failed","cancelled"]);function $(n){let s=A(n.intervalMs,"interval-ms")??1e4,e=A(n.cleanupTimeoutMs,"cleanup-timeout-ms")??18e4,t=A(n.cleanupReserveMs,"cleanup-reserve-ms")??18e4;if([s,e,t].some(u=>!Number.isSafeInteger(u)||u>2147483647))throw new Error("Watch intervals and cleanup bounds must fit a positive 32-bit millisecond timer.");if(s<250)throw new Error("--interval-ms must be at least 250.");if(e<1e3||t<1e3)throw new Error("Cleanup timeout and reserve must be at least 1000 ms.");let i=v(n,"deadlineAt");if(!i&&n.cleanupReserveMs!==void 0)throw new Error("--cleanup-reserve-ms requires --deadline-at.");let c=i?Date.parse(i):null;if(i&&(!/T.*(?:Z|[+-]\d{2}:\d{2})$/.test(i)||!Number.isFinite(c)))throw new Error("--deadline-at requires an ISO timestamp with an explicit timezone.");if(c!==null&&c-t<=Date.now())throw new Error("--deadline-at must leave time for execution and the cleanup reserve.");return{intervalMs:s,deadlineAt:c,cancelAt:c===null?null:c-t,waitForCleanup:c!==null||E(n.waitForCleanup)||E(n.cancelOnInfrastructureError),cleanupTimeoutMs:e,cancelOnInfrastructureError:E(n.cancelOnInfrastructureError)}}p($,"parseHostedWatchOptions");async function q(n,s,e){for(let t=0;t<4;t++){let i=await n.getJob(s);if(k(i,s,e),H.has(i.state)||i.state==="cancelling")return i;try{let c=await n.cancelJob(s,i.version);return k(c,s,e,i.submissionHash),c}catch(c){if(!(c instanceof O)||c.status!==409||c.code!=="stale_version"||t===3)throw c}}throw new Error("Hosted cancellation could not reconcile the current Job version.")}p(q,"cancelHostedTrainingJob");async function B(n){let{client:s,options:e,jobId:t,teamId:i}=n,c=null,u,h=!1;for(;;){let l=Math.min(e.deadlineAt??1/0,c??1/0);if(n.requestBound.deadlineAt=Number.isFinite(l)?l:null,Date.now()>=l)throw D(t);try{let o=e.cancelAt!==null&&Date.now()>=e.cancelAt&&!h?await q(s,t,i):await s.getJob(t);if(k(o,t,i,u),u=o.submissionHash,e.cancelOnInfrastructureError&&!h&&!H.has(o.state)&&o.state!=="cancelling"){let d=await s.events(t);if(d.some(m=>m.jobId!==t))throw new Error("Hosted event does not match the watched Job.");let f=d.find(m=>m.type==="rollout_metric"&&m.data.terminalClass==="infrastructure"&&m.data.rewardEligible===!1);f&&(n.print({jobId:t,event:"hosted_watch_infrastructure_failure",trajectoryEventId:f.id,data:f.data}),o=await q(s,t,i),k(o,t,i,u),c??=Date.now()+e.cleanupTimeoutMs)}if(h||=o.state==="cancelling"||H.has(o.state),n.print(o),H.has(o.state)){let d=o.executionMode==="qualification"&&o.state==="succeeded";if(!e.waitForCleanup&&!d)return;c??=Date.now()+e.cleanupTimeoutMs,n.requestBound.deadlineAt=Math.min(e.deadlineAt??1/0,c);let{receipt:f,outputs:m}=await s.outputs(t);if(f){if(f.jobId!==t||f.teamId!==i||f.submissionHash!==u)throw new Error("Hosted cleanup receipt does not match the watched Job and submission.");if(f.cleanupComplete){d&&await C(f,{submissionHash:u,outputs:m}),n.print({jobId:t,cleanup:{scope:"job",complete:!0,receipt:f}});return}}}}catch(o){if(n.requestBound.deadlineAt!==null&&Date.now()>=n.requestBound.deadlineAt)throw D(t);if(e.deadlineAt===null&&c===null||!N(o))throw o;console.error(JSON.stringify({jobId:t,event:"hosted_watch_retry",code:o instanceof O?o.code:"transport_unavailable"}))}let g=Math.min(n.requestBound.deadlineAt??1/0,!h&&e.cancelAt!==null&&Date.now()<e.cancelAt?e.cancelAt:1/0);await new Promise(o=>setTimeout(o,Math.max(0,Math.min(e.intervalMs,g-Date.now()))))}}p(B,"watchHostedTrainingJob");function k(n,s,e,t){if(n.id!==s||n.teamId!==e||t!==void 0&&n.submissionHash!==t)throw new Error("Hosted response does not match the requested Job, workspace, and submission.")}p(k,"assertJobIdentity");function N(n){return n instanceof O?n.status===429||n.status>=500:n instanceof TypeError||n instanceof Error&&["TimeoutError","AbortError"].includes(n.name)}p(N,"isTransient");function D(n){return new Error(`Hosted watch deadline reached for ${n}; completed job cleanup is unverified. Inspect hosted-status, hosted-artifacts, and provider retirement before treating resources as released.`)}p(D,"cleanupDeadlineError");var w=p(n=>console.log(JSON.stringify(n,null,2)),"print");async function st(n,s){let e=s[0],t=s[1],i=e==="hosted-watch"?$(n):null,c={deadlineAt:i?.deadlineAt??null},u=await z(n);if(!u.token)throw new Error("Sign in to an OpenPond account before using hosted training.");let h=J(n)??u.apiBaseUrl;if(new URL(h).origin!==new URL(u.apiBaseUrl).origin)throw new Error("The hosted API URL must match the signed-in account\u2019s API origin.");let l=v(n,"teamId");if(!l)throw new Error("Hosted training requires --team-id <workspace-id>.");let g=new Headers({"x-openpond-team-id":l});u.token.startsWith("opk_")?(g.set("Authorization",`ApiKey ${u.token}`),g.set("openpond-api-key",u.token)):g.set("Authorization",`Bearer ${u.token}`);let o=p((r,a)=>{let b=c.deadlineAt===null?1/0:c.deadlineAt-Date.now();if(b<=0)throw new DOMException("Hosted watch deadline reached","TimeoutError");let y=AbortSignal.timeout(Math.max(1,Math.min(i?1e4:18e4,b)));return fetch(r,{...a,redirect:"error",signal:a?.signal?AbortSignal.any([a.signal,y]):y})},"request"),d=R({baseUrl:h,headers:g,fetch:o}),f=p(r=>U({jobId:r,teamId:l,apiOrigin:new URL(h).origin}),"attach"),m=p(async(r,a)=>{w(r),await f(a)},"printAttached"),I=p(async()=>{if(!t)throw new Error(`${e} requires an input JSON file.`);let r=await W(t);if(r.byteLength>64*1024*1024)throw new Error("Hosted training input exceeds 64 MiB.");return JSON.parse(r.toString("utf8"))},"readInput");if(s.length>2)throw new Error(`${e} accepts at most one identifier or input file.`);if(e==="hosted-provider"||e==="hosted-quotes"){if(t)throw new Error(`${e} does not accept an identifier.`);let r=e==="hosted-provider"?"/v1/managed-rl/provider-inventory":"/v1/managed-rl/quotes",a=await o(new URL(r,h),{headers:g}),b=await a.json();if(!a.ok)throw new Error(`Hosted capacity read failed (${a.status}).`);w(b);return}if(e==="hosted-workers"||e==="hosted-worker"||e?.startsWith("hosted-worker-")){w(await(await import("./training-hosted-workers-KI767T4Y.js")).runHostedWorkerCommand({action:e,target:t,baseUrl:h,headers:g,request:o,readInput:I,confirmed:E(n.yes)}));return}if(e==="hosted-models"){w(await T({baseUrl:h,headers:g,fetch:o}).list());return}if(e==="hosted-model"){if(!t)throw new Error("hosted-model requires a Model Project ID.");w(await T({baseUrl:h,headers:g,fetch:o}).get(t));return}if(e==="hosted-sync-model"){let r=j.parse(await I());w(await T({baseUrl:h,headers:g,fetch:o}).upsert(r));return}if(e==="hosted-capabilities"){w(await d.capabilities());return}if(e==="hosted-batches"){let r=new x({baseUrl:h,apiKey:u.token,scope:l,fetch:o});w(await r.list("batch",{limit:100}));return}if(e==="hosted-preparations"){w(await d.listPreparations(l));return}if(e==="hosted-jobs"){w(await d.listJobs({limit:100}));return}if(e==="hosted-prepare"){let r=_.parse(await I());if(r.teamId!==l)throw new Error("Preparation input belongs to a different workspace.");w(await d.prepareRun(r));return}if(e==="hosted-start"){let r=await M(await I());if(r.plan.request.teamId!==l)throw new Error("Preparation belongs to a different workspace.");if(!E(n.yes))throw new Error("Starting paid hosted training requires --yes.");let a=await d.startPreparation(r.plan.id,{teamId:l,planHash:r.plan.contentHash,expectedRevision:r.revision});w(a),a.jobId&&await f(a.jobId);return}if(e==="hosted-stage"){w(await d.stageArtifact(await I()));return}if(e==="hosted-submit"||e==="hosted-qualify"){let r=await P(await I());if(e==="hosted-qualify"&&(r.job.kind!=="policy_optimize"||r.job.executionMode!=="qualification"))throw new Error("hosted-qualify requires an immutable policy_optimize submission with executionMode=qualification.");if(!E(n.yes))throw new Error("Submitting paid hosted training requires --yes.");if(r.job.kind==="policy_optimize"&&r.job.executionMode==="qualification"&&!(await d.capabilities()).executionModes?.includes("qualification"))throw new Error("This hosted runtime does not advertise original-learner qualification support.");let a=await d.createJob(r);if(a.teamId!==l||a.submissionHash!==r.contentHash||a.kind!==r.job.kind||r.job.kind==="policy_optimize"&&a.executionMode!==r.job.executionMode)throw new Error(`Hosted submission response identity or execution mode mismatch; inspect hosted-status ${a.id} before attempting another submission.`);await m(a,a.id);return}if(!t)throw new Error(`${e} requires a hosted job ID.`);if(e==="hosted-status"){await m(await d.getJob(t),t);return}if(e==="hosted-report"){let r=await d.getJob(t),[a,b]=await Promise.all([d.events(t),d.outputs(t)]),y=await d.getJob(t);if(y.id!==t||y.teamId!==l||r.id!==t||r.teamId!==l)throw new Error("Hosted report status identity mismatch.");let{buildHostedTrainingReport:L}=await import("./training-hosted-report-UQVK6FTG.js");await m(L({job:y,events:a,outputs:b,versionBeforeRead:r.version,generatedAt:new Date().toISOString()}),t);return}if(e==="hosted-evaluation-tasks"){let r=v(n,"evaluationId");if(!r)throw new Error("hosted-evaluation-tasks requires --evaluation-id from hosted-artifacts.");let b=(await d.outputs(t)).outputs.find(y=>y.kind==="evaluation"&&y.id===r);if(!b)throw new Error("Evaluation does not belong to this job's retained outputs.");w(await d.evaluationTasks(t,{id:b.id,contentHash:b.contentHash},{cursor:v(n,"cursor")||void 0}));return}if(e==="hosted-trajectory"){let r=v(n,"trajectoryId");if(!r)throw new Error("hosted-trajectory requires --trajectory-id <receipt-id> from hosted-inspect.");let a=await o(new URL(`/v1/managed-rl/jobs/${encodeURIComponent(t)}/trajectories/${encodeURIComponent(r)}`,h),{headers:g});if(!a.ok)throw new Error(`Hosted trajectory read failed (${a.status}).`);w(await a.json());return}if(e==="hosted-inspect"){let r=await o(new URL(`/v1/managed-rl/jobs/${encodeURIComponent(t)}`,h),{headers:g});if(!r.ok)throw new Error(`Hosted job inspection failed (${r.status}).`);w(await r.json());return}if(e==="hosted-cancel"){await m(await q(d,t,l),t);return}if(e==="hosted-artifacts"){await m(await d.outputs(t),t);return}if(e==="hosted-logs"){await m(await d.logs(t),t);return}if(e==="hosted-events"){await m(await d.events(t),t);return}if(e==="hosted-watch"&&i){await f(t),await B({client:d,jobId:t,teamId:l,options:i,print:w,requestBound:c});return}throw new Error(`Unknown hosted training command: ${e}`)}p(st,"runHostedTrainingCommand");async function z(n){for(let s=0;;s++)try{return await S(v(n,"account"))}catch(e){if(e.issue?.code!=="STORAGE_BUSY"||s>=29)throw e;await new Promise(i=>setTimeout(i,1e3))}}p(z,"accountContext");export{st as runHostedTrainingCommand};
@@ -1,2 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as c}from"./chunk-FTQLQJQV.js";function h(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)?n:{}}c(h,"record");function b(n){return typeof n=="number"&&Number.isFinite(n)?n:null}c(b,"finite");function l(n){let t=b(n);return t!==null&&t>=0?t:null}c(l,"nonnegative");function s(n){let t=n.filter(r=>r!==null).sort((r,a)=>r-a),o=t.length?t.reduce((r,a)=>r+a,0):null,d=c(r=>t.length?t[Math.max(0,Math.ceil(t.length*r)-1)]:null,"quantile");return{observations:t.length,missing:n.length-t.length,total:o,mean:o===null?null:o/t.length,min:t[0]??null,max:t.at(-1)??null,p50:d(.5),p95:d(.95)}}c(s,"statistics");function T(n,t){return Object.fromEntries(t.map(o=>[o,s(n.map(d=>l(d[o])))]))}c(T,"timingStatistics");function q(n,t){return Object.fromEntries(t.map(o=>{let{total:d,...r}=s(n.map(a=>l(a[o])));return[o,r]}))}c(q,"distributionStatistics");function O(n){if(!n.length)return null;let t=n.reduce((o,d)=>o+d,0)/n.length;return Math.sqrt(n.reduce((o,d)=>o+(d-t)**2,0)/n.length)}c(O,"populationStd");function g(n){return typeof n=="string"&&/^[a-zA-Z0-9_.:-]{1,200}$/.test(n)?n:null}c(g,"code");function v(n){let t=new Map;for(let o of n)o!==null&&t.set(o,(t.get(o)??0)+1);return Object.fromEntries([...t].sort(([o],[d])=>o.localeCompare(d)))}c(v,"counts");var D=["commandTotalSeconds","requestPreparationSeconds","vllmRequestSeconds","vllmQueueSeconds","vllmPrefillSeconds","vllmDecodeSeconds","vllmTimeToFirstTokenSeconds","vllmInferenceSeconds","tokenizationSeconds","workerQueueSeconds","workerBatchWaitSeconds"],L=["inputPreparationSeconds","parameterHashSeconds","residentLoadSeconds","oldAndReferenceForwardSeconds","optimizerForwardBackwardSeconds","postUpdateForwardSeconds","checkpointSaveSeconds","adapterSerializationSeconds","adapterCompositionSeconds","serializedAdapterVerificationSeconds","optimizerStateSerializationSeconds","deferredDiagnosticsSerializationSeconds","totalTrainStepSeconds"];function $(n){let{job:t,outputs:o}=n;if(n.events.length>1e5)throw new Error("Hosted report exceeds 100,000 events.");if(n.events.some(e=>e.jobId!==t.id)||o.outputs.some(e=>e.jobId!==t.id)||o.receipt&&(o.receipt.jobId!==t.id||o.receipt.teamId!==t.teamId))throw new Error("Hosted report evidence belongs to a different job or workspace.");let d=new Map;for(let e of n.events){let i=d.get(e.id);if(i&&i.sequence===e.sequence&&JSON.stringify(i)!==JSON.stringify(e))throw new Error("Hosted report contains conflicting event snapshots.");(!i||e.sequence>=i.sequence)&&d.set(e.id,e)}let r=[...d.values()],a=r.filter(e=>e.data.metricKind==="rollout_trajectory"),m=a.filter(e=>e.data.rewardEligible===!0),y=a.filter(e=>e.data.rewardEligible===!1),S=m.filter(e=>b(e.data.reward)!==null),z=r.filter(e=>e.data.metricKind==="inference_command"),f=r.filter(e=>e.data.metricKind==="policy_optimization"),k=r.filter(e=>e.type==="optimizer_skipped_no_signal"),B=r.filter(e=>e.data.metricKind==="gpu_allocation"),F=r.filter(e=>e.data.metricKind==="physical_gpu_worker"),x=[],p=c((e,i)=>x.push({code:e,message:i}),"add"),U=n.versionBeforeRead===t.version;U||p("job_changed_during_read","The job changed during these reads; rerun for a stable snapshot."),a.length||p("no_recorded_trajectories","No trajectory evidence is present; this report cannot assess model quality or learning."),y.length&&p("ineligible_trajectories","Infrastructure-ineligible trajectories are excluded from reward statistics."),m.length!==S.length&&p("eligible_rewards_pending","Some eligible trajectories have no finite grade yet."),k.length&&p("no_signal_groups","Recorded groups produced zero standardized advantage and skipped optimization; inspect reward/task quality before increasing the budget.");let M=t.executionMode==="qualification";M&&p("qualification_only","This run collects original-model evidence; optimizer updates were not requested."),t.terminalReason&&p("terminal_reason_present","The job has a terminal reason; inspect official status/logs for its details."),o.receipt||p("execution_receipt_unavailable","No final execution receipt is available; cleanup and reconciled execution evidence remain unverified here."),o.receipt&&!o.receipt.cleanupComplete&&p("cleanup_incomplete","The execution receipt does not attest completed cleanup.");let A=new Map;for(let e of m){let i=g(e.data.rolloutGroupId);if(!i)continue;let u=A.get(i)??[];u.push(e),A.set(i,u)}let J=[...A].map(([e,i])=>{let u=i.map(_=>b(_.data.reward)).filter(_=>_!==null),N=O(u);return{groupId:e,recordedEligible:i.length,recordedScored:u.length,rewardMean:s(u).mean,rewardStd:N,allRecordedRewardsEqual:u.length>=2&&N===0,optimizerSkippedNoSignal:k.some(_=>_.data.rolloutGroupId===e)}}),G=new Set(S.flatMap(e=>Object.keys(h(e.data.rewardComponents)).filter(i=>g(i)))),H=Object.fromEntries([...G].sort().map(e=>[e,s(S.map(i=>b(h(i.data.rewardComponents)[e])))])),R=z.map(e=>h(e.data.timings)),W=f.map(e=>h(e.data.timings));z.length&&R.some(e=>l(e.vllmRequestSeconds)===null)&&p("inference_timing_incomplete","Some inference commands lack request timing; missing measurements are not zero durations."),f.length<t.rolloutProgress.optimizerUpdatesApplied&&p("optimizer_event_coverage_incomplete","Fewer optimizer events were returned than applied updates; report evidence may be incomplete."),k.length<t.rolloutProgress.optimizerUpdatesSkipped&&p("no_signal_event_coverage_incomplete","Fewer no-signal events were returned than skipped updates; group details may be incomplete.");let I=Date.parse(t.completedAt??n.generatedAt);if(!Number.isFinite(I)||!Number.isFinite(Date.parse(n.generatedAt)))throw new Error("Hosted report timestamp is invalid.");let w=Math.max(0,(I-Date.parse(t.createdAt))/1e3),j=c(e=>w>0?e*3600/w:null,"hourlyRate"),E=s(a.map(e=>l(e.data.outputTokens))),P=new Map;for(let e of B.sort((i,u)=>i.sequence-u.sequence)){let i=g(e.data.allocationId);i&&P.set(i,e)}let C=new Map;for(let e of F.sort((i,u)=>i.sequence-u.sequence)){let i=g(e.data.physicalWorkerId);i&&C.set(i,e)}let K=t.completedAt!==null;return{schemaVersion:"openpond.trainingRunReport.v1",generatedAt:n.generatedAt,job:{id:t.id,teamId:t.teamId,submissionHash:t.submissionHash,kind:t.kind,executionMode:M?"qualification":"training",state:t.state,phase:t.phase,version:t.version,terminalReasonPresent:t.terminalReason!==null,createdAt:t.createdAt,completedAt:t.completedAt},evidence:{jobRevisionStableDuringRead:U,versionBeforeRead:n.versionBeforeRead,versionAfterRead:t.version,readModel:"independent_authenticated_reads_not_an_atomic_snapshot",returnedEvents:n.events.length,uniqueEvents:r.length,scope:"returned_public_event_snapshot",terminal:K,completeness:"Only recorded events are summarized; absent instrumentation is not proof of no work."},progress:t.rolloutProgress,wall:{elapsedSeconds:w,inferenceCommands:z.length,optimizerEvents:f.length},throughput:{recordedTrajectoriesPerWallHour:j(a.length),recordedEligibleTrajectoriesPerWallHour:j(m.length),appliedUpdatesPerWallHour:j(t.rolloutProgress.optimizerUpdatesApplied),recordedOutputTokensPerWallSecond:w>0&&E.total!==null?E.total/w:null,note:"Whole-job throughput includes startup, waits and cleanup; this is not engine decode tokens/second."},trajectories:{recorded:a.length,eligible:m.length,ineligible:y.length,eligibilityUnknown:a.length-m.length-y.length,scoredEligible:S.length,pendingEligibleGrades:m.length-S.length,inputTokens:s(a.map(e=>l(e.data.inputTokens))),outputTokens:E,eligibleRewards:s(m.map(e=>b(e.data.reward))),rewardComponents:H,terminalClasses:v(a.map(e=>g(e.data.terminalClass))),ineligibleTerminalClasses:v(y.map(e=>g(e.data.terminalClass))),groups:J,groupCoverageNote:"Within-group statistics cover recorded eligible scores only; equal partial scores do not establish a completed no-signal group."},failures:{commandErrorCodes:v(r.map(e=>g(e.data.errorCode))),outboxErrorCodes:v(r.map(e=>g(e.data.lastErrorCode))),providerFailureCodes:v([...C.values()].map(e=>g(e.data.failureCode)))},learning:{noSignalGroupsRecorded:k.length,samplingLogprobMae:s(f.map(e=>l(e.data.samplingLogprobMae))),entropy:s(f.map(e=>l(e.data.entropy))),gradientNorm:s(f.map(e=>l(e.data.gradientNorm))),behaviorPolicyKlPreUpdate:s(f.map(e=>l(e.data.behaviorPolicyKlPreUpdate))),baseOrReferenceKl:s(f.map(e=>l(e.data.kl)))},timings:{environmentSeconds:T(a.map(e=>h(e.data.executionTiming)),["initializationSeconds","policySeconds","environmentSeconds","cleanupSeconds","totalRolloutSeconds"]),toolCalls:s(a.map(e=>l(h(e.data.executionTiming).toolCalls))),toolFailures:s(a.map(e=>l(h(e.data.executionTiming).toolFailures))),inferenceSeconds:T(R,D),optimizerSeconds:T(W,L),cachedPromptTokens:s(R.map(e=>l(e.vllmCachedPromptTokens))),note:"Totals are sums of recorded work. Nested timings and concurrent requests overlap; do not sum these into wall time or infer idle time from them."},gpuActivity:{inference:q(R,["gpuActivitySampleCount","gpuUtilizationMeanPercent","gpuUtilizationMaxPercent","gpuMemoryBusUtilizationMeanPercent","gpuActivityWindowSeconds","gpuActivityObservedSpanSeconds","gpuInterRequestGapSeconds","gpuInterRequestSampleCount","gpuInterRequestUtilizationMeanPercent"]),optimizer:q(f.map(e=>h(e.data.hardware)),["gpuActivitySampleCount","gpuUtilizationMeanPercent","gpuUtilizationMaxPercent","gpuMemoryBusUtilizationMeanPercent","gpuActivityWindowSeconds","gpuActivityObservedSpanSeconds"]),note:"Device-wide one-second samples can include other co-resident work. Between-request activity is worker-wide, not attributed tool or idle time. Per-window statistics are not time-weighted whole-job utilization; short windows may have no samples."},costs:{accountingBasis:"job_accrued_meter_not_final_provider_invoice",jobAccruedSpendUsd:t.accruedSpendUsd,executionReceiptSpendUsd:o.receipt?.spendUsd??null,perRecordedEligibleTrajectoryUsd:m.length?t.accruedSpendUsd/m.length:null,perAppliedUpdateUsd:t.rolloutProgress.optimizerUpdatesApplied?t.accruedSpendUsd/t.rolloutProgress.optimizerUpdatesApplied:null,allocationGpuUsd:s([...P.values()].map(e=>l(e.data.accruedGpuUsd))),allocationGpuSeconds:s([...P.values()].map(e=>l(e.data.accruedGpuSeconds))),physicalInvoiceTotalUsd:null,note:"Job, receipt and allocation amounts are overlapping accounting views, not additive charges. Physical startup/idle/storage and provider settlement are not established by this report."},cleanup:{executionReceiptAvailable:o.receipt!==null,complete:o.receipt?.cleanupComplete??null},findings:x}}c($,"buildHostedTrainingReport");export{$ as buildHostedTrainingReport};
@@ -1 +0,0 @@
1
- .sidebar-task-menu{z-index:1000;background:var(--surface-panel);width:192px;max-height:calc(100vh - 16px);color:var(--text-primary);box-shadow:0 8px 24px var(--shadow-color);border:0;border-radius:8px;padding:4px;position:fixed;overflow-y:auto}.sidebar-task-menu button{width:100%;min-height:32px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.sidebar-task-menu button:hover,.sidebar-task-menu button:focus-visible{background:var(--state-hover);outline:none}.sidebar-task-menu .task-menu-done{border-top:1px solid var(--border-default);margin-top:4px}.sidebar-task-menu-trigger.is-open{opacity:1;pointer-events:auto}.sidebar-row.sidebar-task-row.has-running-dot .row-meta{align-self:center;margin-top:0}@media (hover:none){.sidebar-task-menu-trigger{opacity:1;pointer-events:auto}}.sidebar-row-actions.sidebar-task-menu-trigger{background:0 0;padding:0}.sidebar-task-menu-trigger .sidebar-row-action{color:var(--text-muted)}.sidebar-task-menu-trigger .sidebar-row-action:hover,.sidebar-task-menu-trigger .sidebar-row-action:focus-visible,.sidebar-task-menu-trigger.is-open .sidebar-row-action{background:var(--state-hover);color:var(--text-primary)}.sidebar .sidebar-row.sidebar-task-row{border:1px solid var(--border-default);border-radius:8px;grid-template-columns:24px minmax(0,1fr) auto;gap:8px;width:calc(100% - 12px);min-width:0;max-width:100%;margin:4px 6px;display:grid}.sidebar .sidebar-projects-section,.sidebar .sidebar-ordinary-section{padding-inline:6px}.sidebar-projects-section>.section-header,.sidebar-ordinary-section>.section-header{margin-inline:8px}.sidebar :is(.sidebar-projects-section,.sidebar-ordinary-section) .sidebar-task-row{width:100%;margin-inline:0}.sidebar .sidebar-task-row .row-meta{align-self:center;align-items:center;gap:2px;width:auto;min-width:0;height:auto;display:flex;position:static}.sidebar .sidebar-task-row .row-meta-status{flex:none}.sidebar .sidebar-task-row .sidebar-task-menu-trigger{flex:none;position:static;transform:none}.sidebar-title-slot{align-items:center;gap:3px;min-width:0;max-width:100%;display:flex;overflow:hidden}.sidebar-source-slot,.conversation-source-icon{flex:0 0 24px;justify-content:center;align-items:center;width:24px;display:inline-flex}.conversation-source-icon{height:24px}.conversation-source-icon img{object-fit:contain;width:16px;height:16px}.conversation-source-icon{color:var(--text-muted);font-size:17px}.sidebar .sidebar-task-row .row-label-shell{flex-direction:column;flex:1 1 0;align-items:flex-start;min-width:0;max-width:100%;display:flex;overflow:hidden}.sidebar .sidebar-task-row .sidebar-session-title-line,.sidebar .sidebar-task-row .sidebar-task-title{min-width:0;max-width:100%;overflow:hidden}.sidebar .sidebar-task-row .sidebar-task-title-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sidebar .sidebar-child-toggle{flex:0 0 15px;width:15px;position:static}.sidebar-inbox-row{min-height:54px;padding-top:8px;padding-bottom:8px}.sidebar-inbox-project{text-align:left;white-space:nowrap;min-width:0;max-width:100%;min-height:18px;color:var(--text-muted);align-items:center;gap:5px;font-size:11px;line-height:18px;display:flex;overflow:hidden}.sidebar-inbox-project-name{text-overflow:ellipsis;overflow:hidden}.sidebar-inbox-project time{flex:none}.sidebar-inbox-done,.sidebar-thread-pin{width:30px;height:30px;color:var(--text-muted);background:0 0;border:0;border-radius:7px;flex:none;place-items:center;display:inline-grid}.sidebar-inbox-done:hover,.sidebar-inbox-done:focus-visible,.sidebar-thread-pin:hover,.sidebar-thread-pin:focus-visible{background:var(--state-hover);color:var(--text-primary)}.sidebar-threads-header{color:var(--text-muted);justify-content:space-between;align-items:center;gap:6px;padding:10px 12px 5px;font-size:12px;display:flex}.sidebar-threads-header-actions{align-items:center;gap:4px;display:flex}.sidebar-threads-header .sidebar-icon.active{color:var(--text-primary);background:var(--state-selected)}.sidebar-thread-inbox .section-actions{opacity:1}.sidebar-inbox-date{color:var(--text-muted);margin:16px 12px 6px;font-size:12px;font-weight:500}.sidebar-threads-header-actions{margin-left:auto}.sidebar-pinned-rows>.sidebar-project-row-shell,.sidebar-pinned-rows>.sidebar-file-row{width:calc(100% - 12px);margin-inline:6px}.sidebar-thread-pin{color:var(--text-primary)}.sidebar-task-list-controls .section-menu-separator{border-top:1px solid var(--border-default);margin:4px 5px}.sidebar-task-list-controls .section-menu-popover button[role=menuitemcheckbox]{padding-block:5px}.sidebar-team-avatars{flex:none}.sidebar-threads-header{container:thread-header/inline-size}.sidebar-team-avatars.dropdown-select.compact .dropdown-trigger{border-radius:7px;height:28px;padding:0 3px}.sidebar-team-avatars.dropdown-select.compact .dropdown-trigger:hover:not(:disabled),.sidebar-team-avatars.dropdown-select.compact .dropdown-trigger.active{background:0 0;border-color:#0000}.sidebar-team-avatars .dropdown-trigger:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.sidebar-team-avatars .dropdown-menu{overscroll-behavior:contain}.sidebar-team-avatars .dropdown-menu>button{box-sizing:border-box;height:44px;min-height:44px}.sidebar-team-avatars .dropdown-menu>button small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sidebar-team-avatars .sidebar-team-avatar-stack{align-items:center;padding:1px;display:inline-flex;overflow:visible}.sidebar-team-avatars .sidebar-team-avatar,.sidebar-team-avatars .sidebar-team-avatar-more{border:2px solid var(--surface-panel);background:color-mix(in srgb, var(--accent-info) 12%, var(--surface-panel));width:24px;height:24px;color:var(--accent-info);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:9px;font-weight:600;line-height:1;display:inline-flex}.sidebar-team-avatar+.sidebar-team-avatar{margin-left:-8px}.sidebar-team-avatar:nth-child(2){background:var(--state-hover);color:var(--chart-2)}.sidebar-team-avatar:nth-child(3){background:var(--state-hover);color:var(--status-success)}.sidebar-team-avatar img{object-fit:cover;width:100%;height:100%}.sidebar-team-avatars .sidebar-team-avatar-more{background:var(--surface-panel);width:auto;min-width:24px;color:var(--text-secondary);margin-left:-5px;padding:0 4px;font-size:10px}@container thread-header (width<=270px){.sidebar-team-avatars.dropdown-select.compact .dropdown-trigger{padding-inline:0}.sidebar-team-avatars .sidebar-team-avatar{width:20px;height:20px;font-size:8px}.sidebar-team-avatar+.sidebar-team-avatar{margin-left:-9px}.sidebar-threads-header-actions:has(.sidebar-team-avatars){gap:2px}.sidebar-threads-header-actions:has(.sidebar-team-avatars) .sidebar-task-list-controls{gap:4px}}.native-setup-terminal{z-index:120;height:min(420px,70vh);position:fixed;inset:auto 0 0}.native-setup-terminal .guake-terminal-overlay{height:100%}.native-setup-modal-backdrop{z-index:120;background:var(--backdrop);position:fixed;inset:0}.provider-plan-usage{border-top:1px solid var(--border-default);gap:12px;padding-top:12px;font-size:12px;display:grid}.plan-usage-window>div{justify-content:space-between;align-items:center;gap:12px;display:flex}.plan-usage-refresh{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;padding:5px;display:grid}.plan-usage-refresh:hover{color:var(--text-primary);background:var(--state-hover)}.plan-usage-refresh:disabled{opacity:.5;cursor:default}.plan-usage-window{gap:5px;display:grid}.plan-usage-window strong{font-variant-numeric:tabular-nums;font-weight:500}.plan-usage-window meter{background:var(--state-hover);border:0;border-radius:6px;width:100%;height:6px;overflow:hidden}.plan-usage-window meter::-webkit-meter-bar{background:var(--state-hover);border:0;border-radius:6px}.plan-usage-window meter::-webkit-meter-optimum-value{background:var(--status-success)}.plan-usage-window meter::-webkit-meter-suboptimum-value{background:var(--status-warning)}.plan-usage-window meter::-webkit-meter-even-less-good-value{background:var(--status-danger)}.plan-usage-window meter::-moz-meter-bar{background:var(--status-success)}.provider-plan-usage small,.provider-plan-usage p{color:var(--text-muted);margin:0;font-size:11px;line-height:1.5}.user-auth-plan-usage{border-top:1px solid var(--border-default);padding:6px}.plan-usage-compact{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;padding:7px 8px;font-size:12px;display:flex}.plan-usage-compact:hover,.plan-usage-compact:focus-visible{background:var(--state-hover)}.plan-usage-compact-values{flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:4px 8px;display:flex}.plan-usage-compact-value{white-space:nowrap;align-items:baseline;gap:5px;display:flex}.plan-usage-compact-values strong{font-variant-numeric:tabular-nums;font-weight:500}.plan-usage-compact-value small{color:var(--text-muted);font-size:10px}.plan-usage-compact-provider{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.plan-usage-compact-provider img{object-fit:contain;flex:none;width:15px;height:15px}.plan-usage-compact-values{margin-left:auto}.app-shell:has(>.desktop-navigation-rail){grid-template-columns:52px var(--sidebar-width) minmax(0, 1fr)}.app-shell.sidebar-closed:has(>.desktop-navigation-rail){grid-template-columns:52px 0 minmax(0,1fr)}.app-shell .content-shell{grid-column:3}.desktop-navigation-rail{z-index:25;background:var(--surface-navigation);flex-direction:column;grid-area:1/1;align-items:center;gap:18px;min-height:0;padding:10px 6px;display:flex}.platform-macos>.desktop-navigation-rail{padding-top:53px}.app-shell>.sidebar{grid-area:1/2}.app-shell:has(>.desktop-navigation-rail)>.sidebar-resize-handle{grid-column:2/3}.desktop-rail-destinations{flex-direction:column;flex:none;align-items:center;gap:7px;width:36px;display:flex}.desktop-rail-button{width:36px;height:36px;color:var(--text-muted);background:0 0;border:0;border-radius:9px;place-items:center;display:grid}.desktop-rail-button:hover,.desktop-rail-button.active{background:var(--state-hover);color:var(--text-primary)}.desktop-rail-button:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}.desktop-navigation-rail [data-rail-tooltip]{position:relative}.desktop-navigation-rail [data-rail-tooltip]:after{content:attr(data-rail-tooltip);z-index:60;border:1px solid var(--border-default);background:var(--surface-panel);color:var(--text-primary);box-shadow:0 4px 16px var(--shadow-color);white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;border-radius:7px;padding:7px 10px;font-size:12px;font-weight:500;line-height:1.3;transition:opacity .1s,visibility .1s;position:absolute;top:50%;left:calc(100% + 12px);transform:translateY(-50%)}.desktop-navigation-rail [data-rail-tooltip]:hover:after,.desktop-navigation-rail [data-rail-tooltip]:focus-visible:after{opacity:1;visibility:visible}.desktop-rail-account{width:36px;margin-top:auto}.desktop-rail-button.desktop-connection-error{color:var(--status-danger);margin-bottom:7px}.desktop-rail-account .user-auth-trigger{grid-template-columns:1fr;place-items:center;gap:0;width:36px;height:36px;padding:0}.desktop-rail-account .user-auth-name{display:none}.desktop-rail-account .user-auth-menu{max-width:calc(100vw - 64px);position:fixed;bottom:12px;left:52px}@media (width<=980px){:is(.app-shell.sidebar-open:has(>.desktop-navigation-rail),.app-shell.sidebar-closed:has(>.desktop-navigation-rail)){grid-template-columns:52px 0 minmax(0,1fr)}.app-shell>.sidebar{grid-column:1/-1;max-width:calc(100vw - 52px);position:absolute;top:0;bottom:0;left:52px}.app-shell:has(>.desktop-navigation-rail)>.sidebar-resize-handle{left:calc(52px + min(var(--sidebar-width), 86vw, calc(100vw - 52px)));grid-column:1/-1}}.human-review-inbox-control{flex:0 0 32px;place-items:center;min-width:32px;display:inline-grid;position:relative;overflow:visible}.human-review-inbox-control svg{flex-shrink:0}.human-review-inbox-count{background:var(--text-primary);min-width:15px;color:var(--surface-page);text-align:center;border-radius:8px;padding:1px 3px;font-size:9px;line-height:12px;position:absolute;top:-3px;right:-6px}@media (width>=700px) and (width<=980px){.app-shell.sidebar-open:has(>.desktop-navigation-rail){grid-template-columns:52px min(var(--sidebar-width), 32vw) minmax(0, 1fr)}.app-shell.sidebar-open:has(>.desktop-navigation-rail)>.sidebar{width:min(var(--sidebar-width), 32vw);grid-column:2;position:relative;left:0}.app-shell.sidebar-open:has(>.desktop-navigation-rail)>.sidebar-resize-handle{grid-column:2/3;left:auto}}.desktop-rail-button.desktop-training-entry,.desktop-rail-button.desktop-training-entry:hover,.desktop-rail-button.desktop-training-entry.active{color:var(--accent-primary)}.desktop-rail-brand img{object-fit:contain;width:25px;height:25px}