openpond 0.2.43 → 0.2.44

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 (173) hide show
  1. package/dist/app-server.d.ts +4452 -652
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/actions-command-5IEZEP6W.js +2 -0
  4. package/dist/chunks/{app-layer-OV7RVSQW.js → app-layer-7SPLENWD.js} +1 -1
  5. package/dist/chunks/app-server-runtime-NQ2BYPGK.js +2 -0
  6. package/dist/chunks/apps-XQ7PHJTD.js +2 -0
  7. package/dist/chunks/{chunk-LLNCHGE4.js → chunk-2CXJK2M3.js} +1 -1
  8. package/dist/chunks/{chunk-MDE3HHLH.js → chunk-36RCXSEJ.js} +1 -1
  9. package/dist/chunks/chunk-3QC2DDQ5.js +2 -0
  10. package/dist/chunks/chunk-3XDFNA7W.js +2 -0
  11. package/dist/chunks/chunk-4S4WH65X.js +3 -0
  12. package/dist/chunks/chunk-4TMC5F2P.js +5 -0
  13. package/dist/chunks/{chunk-ROJX6IYW.js → chunk-65QCNUGE.js} +281 -200
  14. package/dist/chunks/{chunk-O277DPTX.js → chunk-ANVOHBUV.js} +1 -1
  15. package/dist/chunks/chunk-ARJUNUH6.js +5 -0
  16. package/dist/chunks/{chunk-V44RF57H.js → chunk-CEEZ7Y2J.js} +1 -1
  17. package/dist/chunks/{chunk-ZG7QX66E.js → chunk-CR6CDOKS.js} +8 -8
  18. package/dist/chunks/{chunk-W3NG7YLC.js → chunk-DZVVGU6K.js} +1 -1
  19. package/dist/chunks/chunk-HY2Q7EDK.js +4 -0
  20. package/dist/chunks/chunk-IT4AT6LB.js +42 -0
  21. package/dist/chunks/{chunk-7KC5LWCU.js → chunk-L6HCBIAU.js} +1 -1
  22. package/dist/chunks/chunk-LNEOLOK2.js +13 -0
  23. package/dist/chunks/chunk-NM2GYDPA.js +19 -0
  24. package/dist/chunks/{chunk-6UPCR6EL.js → chunk-OI2N2636.js} +1 -1
  25. package/dist/chunks/{chunk-VG7XO6PR.js → chunk-OMM4ZO7E.js} +7 -7
  26. package/dist/chunks/{chunk-KDOS6YMH.js → chunk-OQPFFKU6.js} +1 -1
  27. package/dist/chunks/{chunk-7EDOA6KD.js → chunk-PEYA2Q7Q.js} +1 -1
  28. package/dist/chunks/{chunk-EWQZASG4.js → chunk-QID62K65.js} +5 -5
  29. package/dist/chunks/{chunk-G2WJC6DE.js → chunk-RAWEO7SJ.js} +2 -2
  30. package/dist/chunks/{chunk-HI7W3IVO.js → chunk-W5NQ2DI7.js} +12 -12
  31. package/dist/chunks/{chunk-IE2WZ3I3.js → chunk-X2B4MN6W.js} +1 -1
  32. package/dist/chunks/{chunk-T7MJBBHE.js → chunk-YF6IDYTS.js} +1 -1
  33. package/dist/chunks/{chunk-E6WT4HWF.js → chunk-YOOPTMQK.js} +1 -1
  34. package/dist/chunks/{chunk-QUNRWDVO.js → chunk-Z6ZR5O3J.js} +3 -3
  35. package/dist/chunks/{chunk-T5QA4W2H.js → chunk-ZEVARU6J.js} +5 -5
  36. package/dist/chunks/cli-OJU6NQSA.js +2 -0
  37. package/dist/chunks/{configuration-command-ANYM5UYG.js → configuration-command-LDPUCHVH.js} +1 -1
  38. package/dist/chunks/core-commands-UZL5RF2M.js +2 -0
  39. package/dist/chunks/{datasets-FM3UBK4R.js → datasets-42AZHVSV.js} +3 -3
  40. package/dist/chunks/desktop-test-DI76HKS7.js +3 -0
  41. package/dist/chunks/{dist-GC7DXKTI.js → dist-6YP37XI5.js} +1 -1
  42. package/dist/chunks/experiments-Z3S35BYN.js +2 -0
  43. package/dist/chunks/{extension-5LQRULQP.js → extension-JEUZZJ5X.js} +1 -1
  44. package/dist/chunks/{help-NTSTG6RR.js → help-4F4QGL4C.js} +1 -1
  45. package/dist/chunks/hosted-harness-runtime-VZNYNQ6T.js +2 -0
  46. package/dist/chunks/hosted-profile-compiler-JXLPR7SX.js +2 -0
  47. package/dist/chunks/{hosted-profile-evaluation-control-IK4Y2EQZ.js → hosted-profile-evaluation-control-Q54YXXIM.js} +1 -1
  48. package/dist/chunks/{hosted-profile-evaluation-inspection-YWKUB7RT.js → hosted-profile-evaluation-inspection-7WESM3ZH.js} +1 -1
  49. package/dist/chunks/hosted-profile-evaluation-preparation-QP24PYBL.js +3 -0
  50. package/dist/chunks/opchat-UFWWVJL6.js +3 -0
  51. package/dist/chunks/organizations-SBBIOF6O.js +2 -0
  52. package/dist/chunks/{profile-HVLH672B.js → profile-ESULTWDN.js} +1 -1
  53. package/dist/chunks/project-agent-IBHUQ3JX.js +2 -0
  54. package/dist/chunks/sandbox-command-PAJAIMWM.js +2 -0
  55. package/dist/chunks/{sandbox-template-QMB6DSTS.js → sandbox-template-7WHGNVM6.js} +1 -1
  56. package/dist/chunks/src-5MJSO3UD.js +326 -0
  57. package/dist/chunks/{src-N447LUPO.js → src-A3OVZOSV.js} +1 -1
  58. package/dist/chunks/{teams-bot-RNHQMPQA.js → teams-bot-YMCDLBGT.js} +1 -1
  59. package/dist/chunks/{workspaces-V5YTXJLV.js → workspaces-ZZ7R5BUL.js} +1 -1
  60. package/dist/cli.js +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/profile/local-profile.d.ts +2 -0
  63. package/dist/web/assets/App-6AQXN2SM.js +226 -0
  64. package/dist/web/assets/{AppDialog-v-BfV1lA.js → AppDialog-CV3ddujB.js} +1 -1
  65. package/dist/web/assets/AppTerminalPanel-dhbGOO_K.js +2 -0
  66. package/dist/web/assets/{AppsView-Dl-37F0w.js → AppsView-Bxa-9BF2.js} +1 -1
  67. package/dist/web/assets/{BrowserSidebar-DltF217k.js → BrowserSidebar-BLwL2FOG.js} +1 -1
  68. package/dist/web/assets/{CartesianChart-gK-Ll3kX.js → CartesianChart-BOxN-Su1.js} +1 -1
  69. package/dist/web/assets/{CollaborationTabs-BuWquQYn.js → CollaborationTabs-DTmJvNJx.js} +1 -1
  70. package/dist/web/assets/{CommandMenu-Cs5S8t-Q.js → CommandMenu-DggN2ygj.js} +1 -1
  71. package/dist/web/assets/{CommunityView-BJBkQEMV.js → CommunityView-CuDrYOIf.js} +1 -1
  72. package/dist/web/assets/{ComposerCreateImproveStrip-C36fKc-v.js → ComposerCreateImproveStrip-BrduENlL.js} +1 -1
  73. package/dist/web/assets/{GetStartedView-9A49MgYA.js → GetStartedView-Db1IEWzv.js} +1 -1
  74. package/dist/web/assets/HostedModelLearningReview-kofNdPAe.js +1 -0
  75. package/dist/web/assets/{HostedModelLearningSettings-CH7CsAhw.js → HostedModelLearningSettings-6ij3nwWD.js} +1 -1
  76. package/dist/web/assets/{LabModelVersionDetailPage-N2qcy1Yv.js → LabModelVersionDetailPage-C7Maqcit.js} +1 -1
  77. package/dist/web/assets/{LabSkillSidebar-BAKym5GY.js → LabSkillSidebar-Bz0U-Nmw.js} +1 -1
  78. package/dist/web/assets/LabsRoute-Ch1N-e2S.js +52 -0
  79. package/dist/web/assets/LabsRoute-Dw6-12kt.css +1 -0
  80. package/dist/web/assets/MainChatThread-BJbhZOvs.js +2 -0
  81. package/dist/web/assets/{MainPane-gPkr0OWu.js → MainPane-Cs2Kng_k.js} +4 -4
  82. package/dist/web/assets/{MarkdownText-B-au2zEv.js → MarkdownText-BhzHRq1J.js} +1 -1
  83. package/dist/web/assets/{NativeSkillSidebar-DHFKZ7P1.js → NativeSkillSidebar-LU-PhEhW.js} +1 -1
  84. package/dist/web/assets/{NewExperienceSwitcher-Dhbf5KJT.js → NewExperienceSwitcher-Bi_gpHLG.js} +1 -1
  85. package/dist/web/assets/{NewProjectDialog-hlAzFK2Y.js → NewProjectDialog-B8pWvSkq.js} +1 -1
  86. package/dist/web/assets/{OutputsPage-C0N2rOxE.js → OutputsPage-BkGI0kHp.js} +1 -1
  87. package/dist/web/assets/{ProjectsPage-CkHBgLPx.js → ProjectsPage-Ca8_iEWu.js} +1 -1
  88. package/dist/web/assets/{RightChatPanelStack-BiW6ZzPN.js → RightChatPanelStack-DjEdxsq8.js} +1 -1
  89. package/dist/web/assets/{RightSidebarHomePanel-BS9YSdYB.js → RightSidebarHomePanel-6pygznxX.js} +1 -1
  90. package/dist/web/assets/{ScheduledWorkPage-819sQcDR.js → ScheduledWorkPage-BSiOxxAH.js} +1 -1
  91. package/dist/web/assets/{SettingsView-BZrOUPZb.js → SettingsView-1XN7KLBl.js} +3 -3
  92. package/dist/web/assets/{TeamChatView-CUNcbSa7.js → TeamChatView-BGLCPTen.js} +2 -2
  93. package/dist/web/assets/{TerminalOverlay-MIlGPpXe.js → TerminalOverlay-DHkS2cVJ.js} +1 -1
  94. package/dist/web/assets/{TrainingCreationPanel-BNcyNoa8.js → TrainingCreationPanel-Dneamjzh.js} +1 -1
  95. package/dist/web/assets/{TrainingDraftPanel-CKV16LNC.js → TrainingDraftPanel-Cfh59jLZ.js} +1 -1
  96. package/dist/web/assets/{UsageSettingsSection-SVgUHnUL.js → UsageSettingsSection-C9l1KY-O.js} +1 -1
  97. package/dist/web/assets/{WorkSidebarPanel-CfkaaFHA.js → WorkSidebarPanel-CEnO-Txp.js} +1 -1
  98. package/dist/web/assets/{WorkspaceDiffPanel-CQhqlqg5.js → WorkspaceDiffPanel-BiuQBflC.js} +3 -3
  99. package/dist/web/assets/{WorkspaceEnvironmentMenu-CJB-z2tS.js → WorkspaceEnvironmentMenu-Dr-E0c1j.js} +1 -1
  100. package/dist/web/assets/{WorkspaceGitDialogs-B3xtasTt.js → WorkspaceGitDialogs-mE3Og6Zo.js} +1 -1
  101. package/dist/web/assets/{WorkspaceMonacoEditor-DVfyICNZ.js → WorkspaceMonacoEditor-DPZ0n0G9.js} +60 -60
  102. package/dist/web/assets/{arrow-up-right-CYG4Vm07.js → arrow-up-right-DU2KsZD-.js} +1 -1
  103. package/dist/web/assets/{clipboard-DGSnfljX.js → clipboard-g2b4_k81.js} +1 -1
  104. package/dist/web/assets/{cloud-upload-Bw_zrS2y.js → cloud-upload-P2bDOPsQ.js} +1 -1
  105. package/dist/web/assets/cssMode-CPbPVAUt.js +1 -0
  106. package/dist/web/assets/{folder-open-CcGOldH7.js → folder-open-BmsONNsr.js} +1 -1
  107. package/dist/web/assets/{folder-plus-DEIDaX2B.js → folder-plus-B18NgUxy.js} +1 -1
  108. package/dist/web/assets/{git-commit-horizontal-B-Ao6y--.js → git-commit-horizontal-enxGCV_e.js} +1 -1
  109. package/dist/web/assets/htmlMode-DiV88uQv.js +1 -0
  110. package/dist/web/assets/index-B9VSiz_z.css +1 -0
  111. package/dist/web/assets/{index-C8_8-lW7.js → index-vfpCN9zy.js} +6 -6
  112. package/dist/web/assets/{info-DwOXHkN_.js → info-DmuSBIYe.js} +1 -1
  113. package/dist/web/assets/{jsonMode-txmGM7K6.js → jsonMode-BaeOjuKU.js} +4 -4
  114. package/dist/web/assets/{lspLanguageFeatures-D59Drc_9.js → lspLanguageFeatures-D8To0CQA.js} +1 -1
  115. package/dist/web/assets/{minimize-2-C5UCV16_.js → minimize-2-C2xnEzCe.js} +1 -1
  116. package/dist/web/assets/monaco.contribution-DbrACt99.js +2 -0
  117. package/dist/web/assets/{monaco.contribution-5HcktwaM.js → monaco.contribution-DgTFvG2Q.js} +2 -2
  118. package/dist/web/assets/{monaco.contribution-BOmcYK8k.js → monaco.contribution-JW3MxX6k.js} +2 -2
  119. package/dist/web/assets/{monaco.contribution-CbK7796k.js → monaco.contribution-bytkwn0O.js} +2 -2
  120. package/dist/web/assets/{monitor-D4hpNTai.js → monitor-mtHVW7gU.js} +1 -1
  121. package/dist/web/assets/{python-Cie4Ghu8.js → python-DAPe0Urm.js} +1 -1
  122. package/dist/web/assets/{refresh-cw-CIOzrJnj.js → refresh-cw-Dvm_Pq3U.js} +1 -1
  123. package/dist/web/assets/{save-D7EtdMHG.js → save-B2eVAjW6.js} +1 -1
  124. package/dist/web/assets/{square-JpDfrqp_.js → square-16bX2k2i.js} +1 -1
  125. package/dist/web/assets/toggleHighContrast-BgpFWRpS.css +1 -0
  126. package/dist/web/assets/{toggleHighContrast-DdGkc-Be.js → toggleHighContrast-Ce0YhEQg.js} +1 -1
  127. package/dist/web/assets/{tsMode-DwgEL7oI.js → tsMode-CnvMmHz6.js} +1 -1
  128. package/dist/web/assets/{upload-BkwOzqS-.js → upload-COPbAaD-.js} +1 -1
  129. package/dist/web/assets/{useLocalAgentSchedules-bO0Qycih.js → useLocalAgentSchedules-C-Wjm5HK.js} +1 -1
  130. package/dist/web/assets/{useSessionTurnCache-DxUh5scW.js → useSessionTurnCache-BfVbncMB.js} +1 -1
  131. package/dist/web/assets/{wifi-off-D6Keejtn.js → wifi-off-C9iLbCC-.js} +1 -1
  132. package/dist/web/assets/{workers-BgG66q0n.js → workers-BXh_u8Fr.js} +1 -1
  133. package/dist/web/assets/{yaml-COMRGPWg.js → yaml-CRSr9x6_.js} +1 -1
  134. package/dist/web/index.html +5 -5
  135. package/docs/command-reference.md +8 -1
  136. package/package.json +4 -2
  137. package/dist/chunks/actions-command-DWQ3VGGP.js +0 -2
  138. package/dist/chunks/app-server-runtime-JVLXE5LF.js +0 -2
  139. package/dist/chunks/apps-5DQAYDNI.js +0 -2
  140. package/dist/chunks/chunk-3D4QN4NM.js +0 -19
  141. package/dist/chunks/chunk-45UOD2DA.js +0 -2
  142. package/dist/chunks/chunk-5IN3HQJU.js +0 -2
  143. package/dist/chunks/chunk-6KKQXETR.js +0 -5
  144. package/dist/chunks/chunk-7R7O2XXP.js +0 -2
  145. package/dist/chunks/chunk-DGD52VZC.js +0 -13
  146. package/dist/chunks/chunk-IFI24VF6.js +0 -5
  147. package/dist/chunks/chunk-P45OSKQL.js +0 -4
  148. package/dist/chunks/chunk-SXN3QOW4.js +0 -3
  149. package/dist/chunks/chunk-VJJ3UXOI.js +0 -42
  150. package/dist/chunks/chunk-XMKAMR7M.js +0 -2
  151. package/dist/chunks/cli-7D7CYCIY.js +0 -2
  152. package/dist/chunks/core-commands-TYWE3TNW.js +0 -2
  153. package/dist/chunks/desktop-test-Z5IKJU3P.js +0 -3
  154. package/dist/chunks/experiments-IWBRIDQE.js +0 -2
  155. package/dist/chunks/hosted-harness-runtime-S75BLD57.js +0 -2
  156. package/dist/chunks/hosted-profile-compiler-JNNYWLC7.js +0 -2
  157. package/dist/chunks/hosted-profile-evaluation-preparation-JXOF73BB.js +0 -3
  158. package/dist/chunks/opchat-77PRAQ5W.js +0 -3
  159. package/dist/chunks/organizations-2KWTYIPU.js +0 -2
  160. package/dist/chunks/project-agent-7NLKJMAM.js +0 -2
  161. package/dist/chunks/sandbox-command-FNS4JBVC.js +0 -2
  162. package/dist/chunks/src-TZBL6NA7.js +0 -325
  163. package/dist/web/assets/App-BEQmrTGQ.js +0 -226
  164. package/dist/web/assets/AppTerminalPanel-CnKcllS2.js +0 -2
  165. package/dist/web/assets/HostedModelLearningReview-JgxDUDio.js +0 -1
  166. package/dist/web/assets/LabsRoute-DooCmsN8.css +0 -1
  167. package/dist/web/assets/LabsRoute-Y992kQoQ.js +0 -52
  168. package/dist/web/assets/MainChatThread-CPhREQso.js +0 -2
  169. package/dist/web/assets/cssMode-CSpYOKj-.js +0 -1
  170. package/dist/web/assets/htmlMode-DstkgJXG.js +0 -1
  171. package/dist/web/assets/index-DUIWDN8o.css +0 -1
  172. package/dist/web/assets/monaco.contribution-BomZ1gys.js +0 -2
  173. package/dist/web/assets/toggleHighContrast-B7NOMXDY.css +0 -1
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{d as ne}from"./chunk-T7MJBBHE.js";import{a as za,b as Pn,c as Ga,d as xn}from"./chunk-MDE3HHLH.js";import{a as oa}from"./chunk-KDOS6YMH.js";import{S as So}from"./chunk-HI7W3IVO.js";import{a as na,b as G,c as Ns,f as Ro}from"./chunk-W3NG7YLC.js";import{Cb as ea,I as Qe,Ib as hs,Jb as rr,Kb as gs,L as ht,Lb as ws,Lc as Nt,Mb as ro,Rb as sr,Sb as Rs,Sc as sa,Tc as ir,Uc as ia,Wb as ta,Xc as ys,Y as Qn,Zc as St,_b as He,_c as ks,dc as Re,ed as nr,fc as wt,fd as or,gc as Rt,hd as Ue,ic as yt,lc as Ze,ld as no,md as oo,nc as kt,nd as co,od as vt,qc as aa,rc as ra,sc as so,uc as io,vd as lo,x as Es,yb as Zt,z as Gn,zb as _s}from"./chunk-6KKQXETR.js";import{a as po,b as uo,c as mo,d as Fe,e as To,f as fo,g as Eo,i as _o,j as ho,k as It,l as Ss,m as go,n as wo}from"./chunk-XMKAMR7M.js";import{U as ao,a as mn,b as Cn,e as Xn,f as Yn,g as Kn,h as Ts,i as $n}from"./chunk-3D4QN4NM.js";import{$ as Nn,$a as Dn,Ac as ar,B as xe,Cc as De,D as z,Da as Vt,Dc as Zn,Ea as ds,Ec as eo,Fa as cs,Fc as to,Ga as Xe,Ia as Mn,Ja as ze,Ka as Et,Kb as ms,L as Ja,La as ls,Ma as zt,Mb as F,O as gn,Oa as ps,P as wn,Pa as us,Pb as ie,Qa as Ge,R as Jt,Ra as _t,Rb as Te,Sb as Fn,Tb as jn,U as Rn,Vb as Bn,Wb as qn,X as yn,Ya as Me,Za as Qa,_ as kn,ab as Hn,e as rs,ea as On,f as ss,fa as Ln,fc as Wn,ga as bn,gc as er,h as Ka,ha as An,hc as tr,k as is,l as ns,mb as Gt,n as X,p as Z,q as os,r as $a,s as Ve,u as B,ub as Za,v as Tn,wb as Qt,y as Kt,z as fn,zb as Un,zc as gt}from"./chunk-VG7XO6PR.js";import{A as nn,B as on,C as dn,D as cn,E as ln,F as Pe,G as pn,H as un,a as ja,b as Yi,c as Ba,d as Ki,e as $i,f as Ji,g as Vi,h as Se,i as ft,j as zi,k as Wa,l as ae,m as me,n as x,o as M,p as Ce,q as Gi,r as Ya,s as Yt,t as Qi,u as Zi,v as en,w as tn,x as an,y as rn,z as sn}from"./chunk-7R7O2XXP.js";import{B as qt,Ba as qa,C as Pi,E as xa,F as Xa,G as xi,H as pt,Ia as as,J as Xi,L as Mi,Ma as $t,N as Di,Na as Va,Oa as En,P as ut,Pa as _n,Qa as hn,R as mt,T as Ma,Ta as Sn,U as Hi,Ua as vn,V as Zr,W as es,Xa as In,Y as Wt,Z as Ui,_ as Fi,a as v,b as ge,ba as ts,c as Gr,d as lt,da as Tt,ea as Ae,fa as I,ga as C,h as Qr,ha as U,ia as ue,ka as Da,l as Ai,la as ji,m as $e,ma as V,na as Ha,oa as Bi,ra as qi,s as we,sa as Ua,t as Ci,va as Wi,xa as Fa,y as Je}from"./chunk-DGD52VZC.js";import{$ as Pa,A as Ca,B as vi,C as Ii,D as Oi,Ha as bi,_ as Ke,aa as Bt,c as wi,i as dt,l as ct,m as Ri,n as yi,o as pe,q as Ye,r as ba,s as ki,t as Aa,u as Ni,v as Jr,xa as Li,ya as zr,z as Si}from"./chunk-QUNRWDVO.js";import{e as vs,f as ko}from"./chunk-ALZRXBEC.js";import{B as Jn,H as Vn,K as zn,y as fs}from"./chunk-MTJNKRXL.js";import{a as Ft,b as We,c as $r,d as jt,e as be,g as gi,j as Y,k as ot,l as y,m as Ne,n as Vr}from"./chunk-HZP5U2AA.js";import{b as E}from"./chunk-ES2ISFJC.js";import{c as yo,n as No}from"./chunk-H7IWJN7L.js";import{a as c}from"./chunk-FTQLQJQV.js";var je=E.object({schemaVersion:E.literal("openpond.localHarnessReleaseRecord.v1"),workspaceId:E.string().trim().min(1).max(240),sourceRevision:E.string().trim().min(1).max(500),agentSnapshot:dt,harnessRelease:ct,bundlePath:E.string().trim().min(1).max(8192),createdAt:E.string().datetime({offset:!0})}).strict().superRefine((a,e)=>{(a.harnessRelease.agentSnapshot.id!==a.agentSnapshot.id||a.harnessRelease.agentSnapshot.contentHash!==a.agentSnapshot.contentHash)&&e.addIssue({code:"custom",message:"Harness release must bind the stored Agent snapshot",path:["harnessRelease","agentSnapshot"]})});import{randomUUID as Ti}from"node:crypto";import{promises as b}from"node:fs";import L from"node:path";async function dr(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new me("iteration",r.id,e.expectedRevision,r.revision);let s=await x(a,"reservation",r.id);if(r.status==="cancelled")return[{kind:"iteration",id:r.id,revision:r.revision}];if(r.trainingJob||r.evaluationJob||!["ready","waiting_for_data","waiting_for_review"].includes(r.status))throw new v("learning_execution_cancellation_required",409);let i=Tt.parse({...r,revision:r.revision+1,status:"cancelled",updatedAt:t}),n=Ba.parse({...s,revision:s.revision+1,budget:{...s.budget,reservedSpendUsd:0,settledSpendUsd:0,settledAt:t},updatedAt:t});await a.put("iteration",i,r.revision,{parentId:s.chainId,status:i.status}),await a.put("reservation",n,s.revision,{parentId:s.chainId,status:s.outcome});let o=await x(a,"chain",s.chainId);return o.activeIterationId===r.id&&await a.put("chain",ja.parse({...o,revision:o.revision+1,activeIterationId:null,updatedAt:t}),o.revision,{parentId:o.modelProjectId}),[{kind:"iteration",id:i.id,revision:i.revision},{kind:"reservation",id:n.id,revision:n.revision}]}c(dr,"cancelLearningIterationReservation");async function vo(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new me("iteration",r.id,e.expectedRevision,r.revision);let s=await a.get("dispatch",r.dispatchId);if(e.action==="cancel_iteration"&&!s)return dr(a,{...e,action:"cancel_iteration_reservation"},t);if(!s)throw new v("learning_dispatch_not_started",409);if(s.state==="settled")throw new v("learning_execution_already_terminal",409);if(e.action==="retry_iteration_dispatch"&&s.state!=="blocked")throw new v("learning_dispatch_not_blocked",409);let i=e.action==="cancel_iteration"||!!s.cancelRequestedAt,n=Tt.parse({...r,revision:r.revision+1,status:i?"cancelling":r.status,failure:null,updatedAt:t}),o=$i.parse({...s,revision:s.revision+1,state:s.execution?"submitted":s.submission?"prepared":"preparing",cancelRequestedAt:i?s.cancelRequestedAt??t:null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,updatedAt:t});return await a.put("dispatch",o,s.revision,{parentId:r.id,status:o.state}),await a.put("iteration",n,r.revision,{parentId:s.chainId,status:n.status}),[{kind:"iteration",id:n.id,revision:n.revision},{kind:"dispatch",id:o.id,revision:o.revision}]}c(vo,"commandLearningIterationDispatch");async function Io(a,e,t,r){let s=await M(a,"policy",e.policy),i=Qi(s.modelProjectId),n=e.trigger.kind==="schedule"?{...e.trigger,scheduledAt:new Date(e.trigger.scheduledAt).toISOString()}:e.trigger.kind==="approved_count"?{...e.trigger,checkedAt:new Date(e.trigger.checkedAt).toISOString()}:e.trigger,o=y([e.policy.id,n]),d=`iteration-${y([i,o])}`,m=y({policy:e.policy,trigger:n}),l=await a.get("reservation",d);if(l){if(l.requestHash!==m)throw new v("learning_trigger_identity_conflict",409);return[{kind:"iteration",id:d,revision:(await x(a,"iteration",d)).revision},{kind:"reservation",id:d,revision:l.revision}]}let f=await x(a,"policy",s.id);if(!C(I(f),e.policy))throw new v("learning_policy_revision_stale",409);if(!s.enabled)throw new v("learning_policy_paused",409);if(s.automation.accept||s.automation.serve)throw new v("learning_automatic_acceptance_not_available",422);if(e.trigger.kind==="schedule"){if(!["schedule","nightly"].includes(s.trigger.kind)||!s.automation.train)throw new v("learning_schedule_not_enabled",409);if(Date.parse(e.trigger.scheduledAt)>Date.parse(r))throw new v("learning_schedule_not_due",409)}if(e.trigger.kind==="approved_count"){if(s.trigger.kind!=="approved_count"||!s.automation.train)throw new v("learning_count_trigger_not_enabled",409);if(Date.parse(e.trigger.checkedAt)>Date.parse(r))throw new v("learning_count_trigger_not_due",409)}let p=await a.get("chain",i);if(p?.activeIterationId)throw new v("learning_iteration_active",409,p.activeIterationId);if(p?.lastReservedAt&&Date.parse(r)-Date.parse(p.lastReservedAt)<s.limits.cooldownSeconds*1e3)throw new v("learning_iteration_cooldown",409);let u=await en(a,s),T=u.counts.eligible>=s.admission.minimumApprovedExamples;if(e.trigger.kind==="approved_count"&&!T)throw new v("learning_count_threshold_not_met",409);let h=T?"ready":u.counts.awaitingReview>0?"waiting_for_review":"waiting_for_data",g=[],w=await an(a,i,!0),R=await rn(a,s,w),N=null;if(T){await Yc(a,i,r,s.limits.maxIterationSpendUsd,s.limits.maxDailySpendUsd);let S=await Ya(a,{action:"seal_batch",operationId:e.operationId,batchId:`batch-${y(d)}`,taskDefinition:s.taskDefinition,purpose:u.purpose,evidence:u.selected.map(P=>I(P.evidence)),decisions:u.selected.map(P=>I(P.decision))},t,r);g.push(...S),N=I(await x(a,"batch",S[0].id));for(let P of u.selected){let j=Yi.parse({schemaVersion:"openpond.learningConsumption.v1",id:Zi(i,P.evidence),revision:1,chainId:i,iterationId:d,evidence:I(P.evidence),decision:I(P.decision),reservedAt:r});await a.put("consumption",j,0,{parentId:i})}}let _=Tt.parse({schemaVersion:"openpond.learningIteration.v1",id:d,revision:1,policy:e.policy,status:h,triggerIdentity:o,batch:N,sourceWatermarks:{},...R,teacher:s.teacher,upstreamEvent:null,trainingJob:null,evaluationJob:null,candidateVersion:null,dispatchId:`dispatch-${y(d)}`,retryCount:0,spendUsd:0,failure:null,createdAt:r,updatedAt:r}),k=Ba.parse({schemaVersion:"openpond.learningIterationReservation.v1",id:d,revision:1,chainId:i,iterationId:d,policy:e.policy,trigger:n,requestHash:m,outcome:T?"reserved":h,counts:u.counts,budget:{maximumSpendUsd:T?s.limits.maxIterationSpendUsd:0,reservedSpendUsd:T?s.limits.maxIterationSpendUsd:0,settledSpendUsd:0,settledAt:T?null:r},createdAt:r,updatedAt:r}),A=ja.parse({schemaVersion:"openpond.learningChain.v1",id:i,revision:(p?.revision??0)+1,modelProjectId:s.modelProjectId,activeIterationId:T?d:null,latestIterationId:d,acceptedParent:w,lastReservedAt:T?r:p?.lastReservedAt??null,updatedAt:r});return await a.put("iteration",_,0,{parentId:i,status:h}),await a.put("reservation",k,0,{parentId:i,status:k.outcome}),await a.put("chain",A,p?.revision??0,{parentId:s.modelProjectId}),[{kind:"iteration",id:d,revision:1},{kind:"reservation",id:d,revision:1},...g]}c(Io,"reserveLearningIteration");async function Yc(a,e,t,r,s){if((await tn(a,e,t)).committedSpendUsd+r>s)throw new v("learning_daily_budget_exhausted",409)}c(Yc,"assertAvailableBudget");function Kc(a){return`schedule-${y(a)}`}c(Kc,"learningScheduleId");async function Oo(a,e,t){ue(e);let r=await x(a,"policy",e.id);if(!C(I(r),I(e)))throw new v("learning_policy_revision_stale",409);let s=Kc(e.id),i=await a.get("schedule",s);if(i&&C(i.policy,I(e)))return i;let n=e.trigger.kind==="schedule"?e.trigger.intervalSeconds:e.trigger.kind==="approved_count"?60:null,o=e.trigger.kind==="nightly"?{localTime:e.trigger.localTime,timeZone:e.trigger.timeZone}:null,d=e.enabled&&e.automation.train&&(n!==null||o!==null),m=i?await M(a,"policy",i.policy):null,l=i?.nextRunAt&&i.intervalSeconds===n&&JSON.stringify(i.calendar)===JSON.stringify(o)&&m?.trigger.kind===e.trigger.kind&&i.executionOwner===e.executionOwner,f=Ji.parse({schemaVersion:"openpond.learningSchedule.v1",id:s,revision:(i?.revision??0)+1,policy:I(e),modelProjectId:e.modelProjectId,executionOwner:e.executionOwner,state:d?"scheduled":"disabled",intervalSeconds:n,calendar:o,nextRunAt:d?l?i.nextRunAt:o?Di(o,t):new Date(Date.parse(t)+n*1e3).toISOString():null,lastFire:i?.lastFire??null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,createdAt:i?.createdAt??t,updatedAt:t});return await a.put("schedule",f,i?.revision??0,{parentId:e.modelProjectId,status:f.state}),f}c(Oo,"synchronizeLearningSchedule");async function Lo(a,e,t){ge(e.draft,131072);let r=await a.get("draft",e.draft.id);if(r&&(r.status!=="draft"||r.targetId!==e.draft.targetId||r.targetKind!==e.draft.targetKind||(r.baseRelease===null?e.draft.baseRelease!==null:e.draft.baseRelease===null||!C(r.baseRelease,e.draft.baseRelease))))throw new v("authoring_draft_identity_conflict",409);if(e.draft.baseRelease){if(e.draft.baseRelease.id!==e.draft.targetId)throw new v("authoring_draft_base_mismatch",422);await M(a,e.draft.targetKind,e.draft.baseRelease)}if(e.draft.targetKind==="reward")for(let i of e.draft.fields.fixtures??[]){if(!i.sourceLabel)continue;let{evidence:n,feedback:o}=i.sourceLabel;await M(a,"evidence",n);let d=await x(a,"feedback",o.id,o.revision);if(!d.evidence||!C(d.evidence,n))throw new v("reward_fixture_label_mismatch",422)}let s=qa.parse(U({...e.draft,schemaVersion:"openpond.authoringDraft.v1",revision:e.expectedRevision+1,status:"draft",publishedRelease:null,createdAt:r?.createdAt??t,updatedAt:t}));return await a.put("draft",s,e.expectedRevision,{parentId:s.targetKind,status:s.status}),{kind:"draft",id:s.id,revision:s.revision}}c(Lo,"saveAuthoringDraft");async function bo(a,e,t){let r=await Ot(a,e),{contentHash:s,...i}=r,n=qa.parse(U({...i,revision:r.revision+1,status:"archived",updatedAt:t}));return await a.put("draft",n,r.revision,{parentId:r.targetKind,status:n.status}),{kind:"draft",id:n.id,revision:n.revision}}c(bo,"archiveAuthoringDraft");async function Is(a,e,t,r){let s=e.finalizeDraft;if(!s)return null;let i=await Ot(a,s.draft);if(i.targetKind!==s.targetKind||i.targetId!==s.release.id||s.release.revision!==(i.baseRelease?.revision??0)+1||!t.some(m=>m.kind===s.targetKind&&m.id===s.release.id&&m.revision===s.release.revision))throw new v("authoring_draft_publication_mismatch",422);await M(a,s.targetKind,s.release);let{contentHash:n,...o}=i,d=qa.parse(U({...o,revision:i.revision+1,status:"published",publishedRelease:s.release,updatedAt:r}));return await a.put("draft",d,i.revision,{parentId:i.targetKind,status:d.status}),{kind:"draft",id:d.id,revision:d.revision}}c(Is,"finalizeAuthoringDraft");async function Ot(a,e){let t=await M(a,"draft",e),r=await a.get("draft",e.id);if(!r||!C(I(r),e))throw new v("authoring_draft_revision_stale",409);if(t.status!=="draft")throw new v("authoring_draft_closed",409);return t}c(Ot,"currentDraft");function Os(a,e,t){let r=ft(a,e),s=r.reward.implementation;if(s.kind!=="model_judge"||!s.model)throw new v("reward_calibration_model_required",422);if(!C(t.draft,I(a))||!C(t.reward,I(r.reward))||t.snapshotHash!==r.snapshotHash||y(t.fixtureRefs)!==y(r.fixtureRefs))throw new v("reward_calibration_snapshot_mismatch",422);if(t.status!=="completed"||!t.runtime||t.matchesExpectations!==!0||t.failure||t.results.length!==r.fixtures.length)throw new v("reward_calibration_check_incomplete",422);if(!r.fixtures.some(o=>o.expected.status==="scored"&&o.expected.passed===!0)||!r.fixtures.some(o=>o.expected.status==="scored"&&o.expected.passed===!1))throw new v("reward_calibration_coverage_required",422,"Check both a passing and a failing example before publishing a calibrated judge.");for(let o of r.fixtures){let d=t.results.filter(p=>p.fixture.id===o.id),m=d[0];if(d.length!==1||!m||m.fixture.contentHash!==y(o)||!C(m.result.reward,t.reward)||!Wa(o,m.result).matchesExpectation)throw new v("reward_calibration_fixture_mismatch",422);if(o.expected.status!=="scored")continue;let l=m.result.graderEvidence?.modelJudgeReceipt,f=t.judgeCalls?.find(p=>p.id===`fixture-${y([o,r.reward.contentHash])}`);if(!l||l.providerId!==s.model.providerId||l.modelId!==s.model.modelId||s.model.revision!==null&&l.modelRevision!==s.model.revision||f?.status!=="settled"||!f.response||f.requestHash!==l.requestHash||y(f.response)!==l.responseHash)throw new v("reward_calibration_provider_receipt_mismatch",422)}let{contentHash:i,...n}=r.reward;return{...r,reward:xa({...n,implementation:{...s,calibrationStatus:"passed"},calibrationCheckRef:{id:t.id,revision:t.revision,contentHash:y(t)}})}}c(Os,"qualifyRewardCheck");async function Ao(a,e){if(e.implementation.kind!=="model_judge"||e.implementation.calibrationStatus!=="passed"){if(e.calibrationCheckRef)throw new v("reward_calibration_reference_invalid",422);return}let t=e.calibrationCheckRef;if(!t)throw new v("reward_calibration_check_required",422);let r=await x(a,"reward_check",t.id,t.revision);if(y(r)!==t.contentHash)throw new v("reward_calibration_check_changed",422);let s=await M(a,"draft",r.draft);if(s.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let i=s.baseRelease?await M(a,"reward",s.baseRelease):null,n=Os(s,i,r).reward,o=c(d=>y([d.implementation,d.rawScore,d.assets,d.fixtureSetRef??null]),"scoring");if(e.id!==n.id||o(e)!==o(n))throw new v("reward_calibration_configuration_changed",422)}c(Ao,"assertRewardCalibration");async function Co(a,e,t,r,s){let i=await Ot(a,e.draft);if(i.targetKind!=="reward")throw new v("reward_check_draft_kind_invalid",422);let n=i.baseRelease?await M(a,"reward",i.baseRelease):null,o=ft(i,n),d=Se.parse({schemaVersion:"openpond.rewardCheckRun.v1",id:`reward-check-${t}`,revision:1,draft:I(i),reward:I(o.reward),snapshotHash:o.snapshotHash,fixtureRefs:o.fixtureRefs,status:"queued",runtime:null,results:[],matchesExpectations:null,timeoutMs:e.timeoutMs,maximumSpendUsd:e.maximumSpendUsd,requestedBy:s,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,failure:null,createdAt:r,updatedAt:r});return await a.put("reward_check",d,0,{parentId:i.targetId,status:d.status}),{kind:"reward_check",id:d.id,revision:d.revision}}c(Co,"queueRewardCheck");async function Po(a,e,t){let r=await x(a,"reward_check",e.checkId);if(r.revision!==e.expectedRevision)throw new me("reward_check",r.id,e.expectedRevision,r.revision);if(["completed","failed","cancelled"].includes(r.status))return{kind:"reward_check",id:r.id,revision:r.revision};let s=Se.parse({...r,revision:r.revision+1,status:r.status==="queued"?"cancelled":"cancelling",updatedAt:t});return await a.put("reward_check",s,r.revision,{parentId:r.reward.id,status:s.status}),{kind:"reward_check",id:s.id,revision:s.revision}}c(Po,"cancelRewardCheck");async function xo(a,e,t,r){let s=mn(e);if(s.contentHash!==e.expectedPreviewHash)throw new v("task_intake_preview_changed",409);if(new Set(e.recordIds).size!==e.recordIds.length)throw new v("task_intake_duplicate_selection",422);let i=e.recordIds.map(l=>{let f=s.records.find(p=>p.id===l);if(!f)throw new v("task_intake_record_missing",422,"Choose only valid records from the current preview.");return f}),n=`intake-${s.contentHash}`,o=[];for(let l of e.files){let f=0,p=0;do{let u=Math.min(f+131072,l.text.length);u<l.text.length&&l.text.charCodeAt(u-1)>=55296&&l.text.charCodeAt(u-1)<=56319&&u--;let T=ji({text:l.text.slice(f,u),path:`${n}/${l.path}.part-${String(p++).padStart(4,"0")}`,mediaType:"text/plain",visibility:"host_private"}),h=await a.get("asset",T.id,1);h?V(h,T.asset):await a.put("asset",T,0),o.push(T.asset),f=u}while(f<l.text.length)}let d=await a.get("source",n);if(!d){let l=Xa({schemaVersion:"openpond.rewardBinding.v1",id:`${n}-binding`,revision:1,sources:[],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[]),f=mt.parse(U({schemaVersion:"openpond.taskDefinition.v1",id:`${n}-definition`,revision:1,name:e.name,description:`Imported ${e.format} records. Labels and task admission remain separate.`,instructions:"Respond to the retained request using its supplied context.",category:"custom",familyNamespace:`intake-${e.format}`,inputSchema:{type:"object"},outputSchema:{type:"object"},rewardBinding:I(l),harness:null,contextRequirements:s.records.some(p=>p.needsContext)?["Review the imported history and configure its reusable input, tools and runtime before admitting tasks."]:[],execution:{policy:{policyVisibleFields:["input"],privilegedFields:["expectedOutput","evaluatorContext"],hiddenGraderRefs:[],connectedAppScopes:[]},environment:{protocolVersion:"openpond.environment.v1",kind:"text",entrypoint:"openpond.text.v1",stateful:!1,deterministicSeeds:!0,lifecycle:["create","reset","step","collect","destroy"],networkPolicy:"none",defaultTimeoutMs:3e4},tools:[],capabilities:[]}}));d=Ma.parse(U({schemaVersion:"openpond.learningSource.v1",id:n,revision:1,name:e.name,kind:"direct",taskDefinition:I(f),enabled:!0,allowedSplits:["train","validation","test","frozen_eval"],mapping:null,adapterVersion:`openpond.intake.${e.format}.v1`})),await a.put("binding",l,0),await a.put("definition",f,0),await a.put("source",d,0)}let m=[{kind:"source",id:d.id,revision:d.revision}];for(let l of i){let f=as("attempt",[l.id,l.sourceHash]),p=await a.get("evidence",Ce(d.id,l.id,f),1);m.push(await r(a,{action:"submit_example",operationId:e.operationId,example:Hi.parse({schemaVersion:"openpond.taskExample.v1",sourceId:d.id,idempotencyKey:as("record",[s.contentHash,l.id]),taskDefinition:d.taskDefinition,exampleId:l.id,attemptId:f,occurredAt:l.occurredAt??p?.submission.occurredAt??t,familyKey:l.familyKey,split:l.split,input:l.input,observedOutput:l.observedOutput,expected:l.expected,evaluatorContext:{intake:{format:s.format,uploadHash:s.contentHash,sourceHash:l.sourceHash,needsContext:l.needsContext,warnings:l.warnings,timestampOrigin:l.occurredAt?"source":"import_time",metadata:l.metadata}},assets:o,provenance:{sourceRecordRef:l.sourceId,mappingHash:null}})}))}return m}c(xo,"importTaskIntake");function vm(a,e={}){let t=e.now??(()=>new Date().toISOString());async function r(p,u){ge(u,16777216);let T=Ki.parse(u);$c(p,T);let h=T.action==="submit_example"?T.example:T.action==="submit_feedback"?T.feedback:null,g=h?y([T.action,h.sourceId,h.idempotencyKey]):Gi(p.actor.id,T.operationId),w=y(h?{action:T.action,value:h}:T);return a.transaction(p.scope,async R=>{let N=await R.operation(g);if(N){if(N.requestHash!==w)throw new v("learning_idempotency_conflict",409);return{operationId:T.operationId,resources:await Promise.all(N.resources.map(k=>x(R,k.kind,k.id,k.revision)))}}let _;switch(T.action){case"publish_checked_reward":{let k=await Ot(R,T.draft);if(k.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let A=k.baseRelease?await M(R,"reward",k.baseRelease):null,S=await x(R,"reward_check",T.checkId,T.checkRevision),P=Os(k,A,S),{contentHash:j,...H}=P.reward,O={action:"publish_resources",operationId:T.operationId,finalizeDraft:{draft:T.draft,targetKind:"reward",release:I(P.reward)},resources:[...P.assets.map(({contentHash:W,...D})=>({kind:"asset",expectedRevision:0,content:D})),{kind:"reward",expectedRevision:A?.revision??0,content:H}]};_=[];for(let W of O.resources)_.push(await s(R,{...W,action:"publish",operationId:T.operationId}));let q=await Is(R,O,_,t());q&&_.push(q);break}case"import_intake":_=await xo(R,T,t(),i);break;case"cancel_iteration":case"retry_iteration_dispatch":_=await vo(R,T,t());break;case"cancel_iteration_reservation":_=await dr(R,T,t());break;case"reserve_iteration":_=await Io(R,T,p.actor.id,t());break;case"queue_reward_check":_=[await Co(R,T,g,t(),p.actor.id)];break;case"cancel_reward_check":_=[await Po(R,T,t())];break;case"save_draft":_=[await Lo(R,T,t())];break;case"archive_draft":_=[await bo(R,T.draft,t())];break;case"publish":_=[await s(R,T)];break;case"publish_resources":{_=[];for(let k of T.resources)_.push(await s(R,{...k,action:"publish",operationId:T.operationId}));break}case"submit_example":_=[await i(R,T)];break;case"submit_feedback":_=[await n(R,T,p.actor)];break;case"apply_correction":_=await o(R,T,p.actor.id);break;case"resolve_feedback":_=[await d(R,T,p.actor.id)];break;case"queue_grade":_=[await m(R,T,g,p.actor.id)];break;case"cancel_grade":_=[await l(R,T)];break;case"review":_=[await f(R,T,p.actor.id)];break;case"seal_batch":_=await Ya(R,T,p.actor.id,t());break}if(T.action==="publish"||T.action==="publish_resources"){let k=await Is(R,T,_,t());k&&_.push(k)}return await R.saveOperation(g,{requestHash:w,resources:_}),{operationId:T.operationId,resources:await Promise.all(_.map(k=>x(R,k.kind,k.id,k.revision)))}})}c(r,"command");async function s(p,u){if(u.content.revision!==u.expectedRevision+1)throw new v("learning_publication_revision_invalid",422);let T;switch(u.kind){case"asset":{T=Da.parse(U(u.content));let h=await p.get("asset",T.id,1);if(h?.contentHash===T.contentHash)return oe("asset",h);break}case"reward":{T=xa(u.content),await Ao(p,T);let h=u.content.implementation,g=[...u.content.assets,..."verifierRef"in h?[h.verifierRef]:[],..."rubricRef"in h?[h.rubricRef]:[],..."inputContract"in h?[h.inputContract]:[]];for(let w of g){let R=await x(p,"asset",w.id,1);if(V(R,w),w.visibility==="policy")throw new v("reward_asset_visibility_invalid",422,"Reward source and rubrics must be private to the evaluator.")}break}case"binding":{u.content.recipeRef&&await M(p,"binding",u.content.recipeRef);let h=await Promise.all(u.content.sources.map(g=>M(p,"reward",g.reward)));T=Xa(u.content,h);break}case"definition":{await M(p,"binding",u.content.rewardBinding),T=mt.parse(U(u.content));break}case"source":{await M(p,"definition",u.content.taskDefinition),T=Ma.parse(U(u.content));break}case"policy":{let h=await M(p,"definition",u.content.taskDefinition);if(!C(h.rewardBinding,u.content.rewardBinding))throw new v("learning_policy_binding_mismatch",422);for(let g of u.content.sources){let w=await M(p,"source",g);if(!C(w.taskDefinition,u.content.taskDefinition))throw new v("learning_policy_source_definition_mismatch",422)}T=ts.parse(U(u.content));break}}return await p.put(u.kind,T,u.expectedRevision,u.kind==="policy"?{parentId:u.content.modelProjectId}:void 0),u.kind==="policy"&&await Oo(p,ts.parse(T),t()),oe(u.kind,T)}c(s,"publish");async function i(p,u){let T=await x(p,"source",u.example.sourceId),h=Bi(T,u.example);await M(p,"definition",h.taskDefinition);let g=Ce(h.sourceId,h.exampleId,h.attemptId),w=await p.get("evidence",g,1);if(w){let{idempotencyKey:_,...k}=w.submission,{idempotencyKey:A,...S}=h;if(y(k)!==y(S))throw new v("task_evidence_identity_conflict",409);return oe("evidence",w)}let R=es.parse(U(Zr.parse({schemaVersion:"openpond.taskEvidence.v1",id:g,revision:1,source:I(T),submission:h,supersedes:null,correctionFeedbackId:null,receivedAt:t()})));await p.put("evidence",R,0,{parentId:T.id});let N;do{let _=await p.list("feedback",{parentId:R.id,status:"pending_example",limit:100,...N?{afterId:N}:{}});for(let k of _.items){let A=Wt.parse({...k,revision:k.revision+1,status:"pending_review",evidence:I(R)});await p.put("feedback",A,k.revision,{parentId:R.id,status:A.status})}N=_.nextCursor??void 0}while(N);return oe("evidence",R)}c(i,"submit");async function n(p,u,T){let h=await x(p,"source",u.feedback.sourceId);if(!h.enabled)throw new v("learning_source_disabled",409);let g=Ce(h.id,u.feedback.exampleId,u.feedback.attemptId),w=await p.get("evidence",g);if(u.feedback.value.schemaVersion==="openpond.taskRating.v1"&&(!w||w.contentHash!==u.feedback.expectedEvidenceHash||!w.submission.observedOutput))throw new v("task_rating_evidence_stale",409,"Open the current observed response before submitting a rating.");let R=Wt.parse({schemaVersion:"openpond.taskFeedbackRecord.v1",id:`feedback-${y([h.id,u.feedback.idempotencyKey])}`,submission:u.feedback,status:w?"pending_review":"pending_example",evidence:w?I(w):null,createdAt:t(),revision:1,submittedBy:{id:T.id,role:T.role,sourceId:T.sourceId??null}});return await p.put("feedback",R,0,{parentId:g,status:R.status}),oe("feedback",R)}c(n,"feedback");async function o(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);let g=await Yt(p,u.evidence);if(Ce(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==g.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==g.contentHash)throw new v("task_feedback_evidence_mismatch",409);let R=await M(p,"definition",g.submission.taskDefinition),N={...g.submission},{kind:_,value:k}=h.submission;if(_==="ground_truth_correction"){if(!lt(R.outputSchema,k).valid)throw new v("task_corrected_expected_schema_invalid",422);N.expected=k}else if(_==="input_correction"){if(!lt(R.inputSchema,k).valid)throw new v("task_corrected_input_schema_invalid",422);N.input=k}else if(_==="family_resolution"){if(typeof k.familyKey!="string"||!k.familyKey.trim())throw new v("task_family_resolution_invalid",422);N.familyKey=k.familyKey}else throw new v("task_feedback_requires_target_review",422);let{contentHash:A,...S}=g,P=es.parse(U(Zr.parse({...S,revision:g.revision+1,submission:N,supersedes:I(g),correctionFeedbackId:h.id,receivedAt:t()}))),j=Wt.parse({...h,revision:h.revision+1,status:"applied",evidence:I(P),review:{actorId:T,decision:null,note:"Applied as a corrected evidence revision.",resolvedAt:t()}});return await p.put("evidence",P,g.revision,{parentId:N.sourceId}),await p.put("feedback",j,h.revision,{parentId:g.id,status:j.status}),[oe("evidence",P),oe("feedback",j)]}c(o,"correct");async function d(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(h.revision!==u.expectedRevision)throw new me("feedback",h.id,u.expectedRevision,h.revision);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);if(u.disposition==="applied"&&!u.decision)throw new v("task_feedback_decision_required");if(u.decision){let w=await M(p,"decision",u.decision),R=await x(p,"decision",w.id);if(!C(I(R),u.decision))throw new v("task_admission_revision_stale",409);let N=await Yt(p,w.evidence);if(Ce(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==N.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==N.contentHash)throw new v("task_feedback_evidence_mismatch",409);if(u.disposition==="applied"){if(w.taskAdmissibility==="pending")throw new v("task_feedback_decision_pending");if(h.submission.kind==="target_correction"){if(w.targetApproval!=="approved"||y(w.approvedTarget)!==y(h.submission.value))throw new v("task_feedback_target_not_approved")}else if(h.submission.kind!=="outcome")throw new v("task_feedback_requires_evidence_correction")}}let g=Wt.parse({...h,revision:h.revision+1,status:u.disposition,review:{actorId:T,decision:u.decision,note:u.note,resolvedAt:t()}});return await p.put("feedback",g,h.revision,{parentId:Ce(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId),status:g.status}),oe("feedback",g)}c(d,"resolveFeedback");async function m(p,u,T,h){let g=await Yt(p,u.evidence),w=await M(p,"definition",g.submission.taskDefinition);if(!Ha(g,w).taskReady)throw new v("task_evidence_not_ready",422);let R=u.target==="observed"?g.submission.observedOutput:u.proposedTarget;if(R===null)throw new v("task_grade_output_required",422);if(u.target==="observed"&&u.proposedTarget!==null)throw new v("observed_grade_cannot_replace_output",422);let N=Ae.parse({schemaVersion:"openpond.taskGradeRun.v1",id:`grade-${T}`,revision:1,evidence:I(g),binding:w.rewardBinding,target:u.target,output:R,status:"queued",composition:null,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,timeoutMs:u.timeoutMs,maximumSpendUsd:u.maximumSpendUsd,requestedBy:h,failure:null,createdAt:t(),updatedAt:t()});return await p.put("grade",N,0,{parentId:g.id,status:N.status}),oe("grade",N)}c(m,"queueGrade");async function l(p,u){let T=await x(p,"grade",u.gradeId);if(T.revision!==u.expectedRevision)throw new me("grade",T.id,u.expectedRevision,T.revision);if(["completed","failed","cancelled"].includes(T.status))return oe("grade",T);let h=Ae.parse({...T,revision:T.revision+1,status:T.status==="queued"?"cancelled":"cancelling",updatedAt:t()});return await p.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),oe("grade",h)}c(l,"cancelGrade");async function f(p,u,T){let h=await Yt(p,u.evidence),g=await M(p,"definition",h.submission.taskDefinition),w=Ha(h,g),R=`decision-${h.id}`,N=await p.get("decision",R),_=await Xo(p,u.observedGradeId,h,"observed"),k=await Xo(p,u.targetGradeId,h,"proposed_target"),A=_?.training.status==="scored"?_.training:_?.evaluation,S=Fi.parse(U(Ui.parse({schemaVersion:"openpond.taskAdmissionDecision.v1",id:R,revision:u.expectedRevision+1,evidence:I(h),supersedes:N?I(N):null,actor:{kind:"human",id:T,policy:null},evidenceValidity:w.evidenceValidity,taskAdmissibility:u.disposition,observedQuality:A?.status==="scored"?A.passed?"passed":"failed":_?"unavailable":"unscored",targetApproval:u.targetApproval,approvedTarget:u.approvedTarget,grade:_,targetGrade:k,note:u.note,decidedAt:t()})));return u.disposition==="approved"&&qi({decision:S,evidence:h,definition:g,purpose:u.targetApproval==="approved"?"supervised_training":"reward_training"}),await p.put("decision",S,u.expectedRevision,{parentId:h.id,status:S.taskAdmissibility}),oe("decision",S)}return c(f,"review"),{command:r,async inspectTaskQueue(p,u=null){da(p);let T=Pe.parse({action:"inspect_task_queue",scope:p.scope,modelProjectId:u});if(T.action!=="inspect_task_queue")throw new v("learning_request_invalid",400);return a.transaction(p.scope,h=>dn(h,T.modelProjectId,t()))},async inspectPolicy(p,u){da(p);let T=ut.parse(u);return a.transaction(p.scope,h=>nn(h,T,p.actor.id,t()))},async inspectEvidence(p,u){da(p);let T=ut.parse(u);return a.transaction(p.scope,async h=>{let g=await M(h,"evidence",T),w=await M(h,"definition",g.submission.taskDefinition);return{evidence:I(g),definition:I(w),inspection:Ha(g,w)}})},async get(p,u,T,h){return da(p),a.transaction(p.scope,g=>x(g,u,T,h))},async list(p,u,T={}){if(da(p),T.reviewState!==void 0&&(u!=="evidence"||!["inbox","reviewed"].includes(T.reviewState)))throw new v("learning_review_filter_invalid",400);let h=Math.max(1,Math.min(100,Math.trunc(T.limit??50)));return a.transaction(p.scope,g=>g.list(u,{...T,limit:h}))}}}c(vm,"createLearningService");async function Xo(a,e,t,r){if(e===null)return null;let s=await x(a,"grade",e);if(s.status!=="completed"||!s.composition||s.target!==r||!C(s.evidence,I(t)))throw new v("task_grade_not_applicable",422);let i=await M(a,"definition",t.submission.taskDefinition);return Ua(s.composition,t,i,s.output),s.composition}c(Xo,"gradeResult");function oe(a,e){return{kind:a,id:e.id,revision:e.revision}}c(oe,"pointer");function da(a){if(!a.scope.trim()||!a.actor.id.trim()||a.actor.role==="source")throw new v("learning_read_not_authorized",403)}c(da,"authorizeRead");function $c(a,e){if(!a.scope.trim()||!a.actor.id.trim())throw new v("learning_scope_required",400);let t=e.action==="publish"?[e]:e.action==="publish_resources"?e.resources:[];if(a.actor.role!=="reviewer"&&t.some(r=>r.kind==="policy"&&r.content.enabled&&r.content.automation.train&&r.content.trigger.kind!=="manual"))throw new v("learning_review_not_authorized",403);if(a.actor.role==="source"){let r=e.action==="submit_example"?e.example.sourceId:e.action==="submit_feedback"?e.feedback.sourceId:null;if(!r||r!==a.actor.sourceId)throw new v("learning_source_not_authorized",403)}if(["review","apply_correction","resolve_feedback","seal_batch","reserve_iteration","cancel_iteration_reservation","cancel_iteration","retry_iteration_dispatch"].includes(e.action)&&a.actor.role!=="reviewer")throw new v("learning_review_not_authorized",403)}c($c,"authorize");function xm(a,e,t){let r=t.now??(()=>new Date().toISOString()),s=new Map,i=c((d,m)=>JSON.stringify([d,m]),"key");async function n(d,m){let l=await a.transaction(d,async u=>{let T=await x(u,"grade",m);if(["completed","failed","cancelled"].includes(T.status))return{acquired:!1,run:T};if(T.leaseExpiresAt!==null&&Date.parse(T.leaseExpiresAt)>Date.parse(r()))return{acquired:!1,run:T};let h=Ae.parse({...T,revision:T.revision+1,status:T.status==="cancelling"?"cancelling":"running",leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(r())+T.timeoutMs+3e4).toISOString(),attemptCount:T.attemptCount+1,updatedAt:r()});return await u.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),{acquired:!0,run:h}});if(!l.acquired)return l.run;if(l.run.status==="cancelling"){let u=await e.cancel({scope:d,run:l.run});return o(d,l.run,u?{status:"cancelled",composition:null,failure:null}:{status:"cancelling",composition:null,failure:null})}let f=new AbortController;s.set(i(d,m),f);let p=setTimeout(()=>f.abort(new Error("task_grade_timeout")),l.run.timeoutMs);try{let u=await a.transaction(d,async h=>{let g=await M(h,"evidence",l.run.evidence),w=await M(h,"definition",g.submission.taskDefinition),R=await M(h,"binding",l.run.binding),N=await Promise.all(R.sources.map(_=>M(h,"reward",_.reward)));return{evidence:g,definition:w,binding:R,rewards:N}});f.signal.throwIfAborted();let T=await e.execute({scope:d,run:l.run,...u,signal:f.signal});return f.signal.throwIfAborted(),Ua(T,u.evidence,u.definition,l.run.output),await o(d,l.run,{status:"completed",composition:T,failure:null})}catch(u){if(f.signal.aborted){if(!await e.cancel({scope:d,run:l.run}))return o(d,l.run,{status:"cancelling",composition:null,failure:"Execution cancellation is awaiting owner confirmation."});if(f.signal.reason instanceof Error&&f.signal.reason.message==="task_grade_cancel_requested")return o(d,l.run,{status:"cancelled",composition:null,failure:null})}return await o(d,l.run,{status:"failed",composition:null,failure:u instanceof Error?u.message:"Task grading failed."})}finally{clearTimeout(p),s.delete(i(d,m))}}c(n,"run");async function o(d,m,l){return a.transaction(d,async f=>{let p=await x(f,"grade",m.id);if(p.leaseOwner!==t.workerId||p.attemptCount!==m.attemptCount||["completed","failed","cancelled"].includes(p.status))return p;let u=l.status,T=Ae.parse({...p,...l,status:u,composition:u==="completed"?l.composition:null,revision:p.revision+1,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(r())+5e3).toISOString():null,updatedAt:r()});return await f.put("grade",T,p.revision,{parentId:p.evidence.id,status:T.status}),T})}return c(o,"finish"),{run:n,requestCancellation(d,m){s.get(i(d,m))?.abort(new Error("task_grade_cancel_requested"))},async drain(d,m=20){let l=await a.transaction(d,async p=>{let u=[];for(let T of["queued","running","cancelling"])u.push(...(await p.list("grade",{status:T,limit:Math.max(1,Math.min(100,m))})).items);return u}),f=[];for(let p of l)f.push(await n(d,p.id));return f}}}c(xm,"createTaskGradeWorker");function Mo(a){let e=a.now??(()=>new Date().toISOString());return{transaction(t,r){return a.repository.transaction(a.scope,async s=>{let i=await x(s,"reward_check",a.run.id);if(i.snapshotHash!==a.run.snapshotHash)throw new Error("model_judge_budget_snapshot_changed");if(t==="dispatch"&&(i.status!=="running"||!i.leaseOwner||i.leaseOwner!==a.run.leaseOwner||i.attemptCount!==a.run.attemptCount||!i.leaseExpiresAt||Date.parse(i.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let n=i.judgeCalls??[],o=r({maximumSpendUsd:i.maximumSpendUsd,calls:n});if(y(o.calls)!==y(n)){let d=Se.parse({...i,revision:i.revision+1,judgeCalls:o.calls,updatedAt:e()});await s.put("reward_check",d,i.revision,{parentId:i.reward.id,status:i.status})}return o.result})}}}c(Mo,"createRewardCheckJudgeBudgetStore");function Ym(a){let e=a.now??(()=>new Date().toISOString()),t=c(r=>y([r.evidence,r.binding,r.target,r.output]),"identity");return{transaction(r,s){return a.repository.transaction(a.scope,async i=>{let n=await x(i,"grade",a.run.id);if(t(n)!==t(a.run))throw new Error("model_judge_budget_snapshot_changed");if(r==="dispatch"&&(n.status!=="running"||!n.leaseOwner||n.leaseOwner!==a.run.leaseOwner||n.attemptCount!==a.run.attemptCount||!n.leaseExpiresAt||Date.parse(n.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let o=n.judgeCalls??[],d=s({maximumSpendUsd:n.maximumSpendUsd,calls:o});if(y(d.calls)!==y(o)){let m=Ae.parse({...n,revision:n.revision+1,judgeCalls:d.calls,updatedAt:e()});await i.put("grade",m,n.revision,{parentId:n.evidence.id,status:n.status})}return d.result})}}}c(Ym,"createTaskGradeJudgeBudgetStore");function Do(a){return{runtime:a.runtime,async execute(e){return zi({reward:e.reward,fixture:e.fixture,signal:e.signal,modelJudge:e.reward.implementation.kind==="model_judge"?await a.createModelJudge?.(e):void 0,customVerifier:c(async({grader:t,task:r,evidence:s})=>{let i=e.assets.find(d=>d.id===t.verifierRef.id);if(!i)throw new Error("reward_check_source_missing");let n=V(i,t.verifierRef),o=await a.executeJavaScript({source:n,exportName:t.exportName,runtime:t.runtime,signal:e.signal,timeoutMs:Math.min(t.timeoutMs,e.run.timeoutMs),value:{task:r,attempt:s,input:r.input,output:s.output,expectedOutput:r.expectedOutput,evaluatorContext:e.fixture.evaluatorContext,infrastructureError:s.infrastructureError??null}});return{score:o.score,passed:o.passed,rewardEligible:t.rewardEligible,failureClass:null,feedback:[o.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:o.evidenceRefs}},"customVerifier")})},async cancel(e){return a.createModelJudge?a.cancelModelJudge?.(e)??!1:!0}}}c(Do,"createIsolatedRewardFixtureExecutor");function iT(a){return Do({runtime:a.runtime,executeJavaScript:a.executeJavaScript,async cancelModelJudge(e){let t=await a.repository.transaction(e.scope,r=>x(r,"reward_check",e.run.id));return t.judgeCalls?.some(r=>r.status==="reserved")?!1:a.provider.cancel({...e,run:t})},async createModelJudge(e){let t=Mo({repository:a.repository,scope:e.scope,run:e.run});return Xi({async readRubric(r){let s=e.assets.find(i=>i.id===r.id);if(!s)throw new Error("reward_check_rubric_missing");return V(s,r)},async executeBudgeted(r,s){let i=await a.provider.prepare(r,{scope:e.scope,run:e.run});return Mi({store:t,maximumCharge:c(()=>i.maximumChargeUsd,"maximumCharge"),dispatch:c((o,d)=>i.dispatch(d),"dispatch")})(`fixture-${y([e.fixture,e.reward.contentHash])}`,r,s)}})}})}c(iT,"createBudgetedRewardFixtureExecutor");function mT(a,e,t){let r=Vi.parse(e.runtime),s=t.now??(()=>new Date().toISOString()),i=new Map,n=c((f,p)=>JSON.stringify([f,p]),"key"),o=c(f=>["completed","failed","cancelled"].includes(f.status),"terminal");async function d(f,p){let u=await a.transaction(f,async g=>{let w=await x(g,"reward_check",p);if(o(w)||w.leaseExpiresAt&&Date.parse(w.leaseExpiresAt)>Date.parse(s()))return{acquired:!1,run:w};let R=Se.parse({...w,revision:w.revision+1,status:w.status==="cancelling"?"cancelling":"running",runtime:w.status==="cancelling"?w.runtime:r,leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(s())+w.timeoutMs+3e4).toISOString(),attemptCount:w.attemptCount+1,results:w.results,matchesExpectations:null,failure:null,updatedAt:s()});return await g.put("reward_check",R,w.revision,{parentId:R.reward.id,status:R.status}),{acquired:!0,run:R}});if(!u.acquired)return u.run;if(u.run.status==="cancelling"){let g=await e.cancel({scope:f,run:u.run});return l(f,u.run,g?"cancelled":"cancelling",null)}let T=new AbortController;i.set(n(f,p),T);let h=setTimeout(()=>T.abort(new Error("reward_check_timeout")),u.run.timeoutMs);try{let g=await a.transaction(f,async w=>{let R=await M(w,"draft",u.run.draft);if(R.targetKind!=="reward")throw new Error("reward_check_draft_kind_invalid");let N=R.baseRelease?await M(w,"reward",R.baseRelease):null,_=ft(R,N);if(_.snapshotHash!==u.run.snapshotHash||!C(I(_.reward),u.run.reward)||y(_.fixtureRefs)!==y(u.run.fixtureRefs))throw new Error("reward_check_snapshot_mismatch");return _});for(let w of g.fixtures){T.signal.throwIfAborted();let R=u.run.results.find(k=>k.fixture.id===w.id);if(R){if(R.fixture.contentHash!==y(w)||!C(R.result.reward,u.run.reward)||R.result.graderId!==g.reward.id||R.result.role!=="evaluation")throw new Error("reward_check_retained_fixture_mismatch");continue}let N=Pi.parse(await e.execute({...g,scope:f,run:u.run,fixture:w,signal:T.signal}));if(N.graderId!==g.reward.id||!C(N.reward,u.run.reward)||N.role!=="evaluation")throw new Error("reward_check_result_identity_mismatch");let _=await a.transaction(f,async k=>{let A=await x(k,"reward_check",p);if(!m(A,u.run)||o(A))return A;let S=Se.parse({...A,revision:A.revision+1,results:[...A.results,Wa(w,N)],updatedAt:s()});return await k.put("reward_check",S,A.revision,{parentId:A.reward.id,status:A.status}),S});if(!m(_,u.run)||o(_))return _;_.status==="cancelling"&&T.abort(new Error("reward_check_cancel_requested"))}return T.signal.throwIfAborted(),await l(f,u.run,"completed",null)}catch(g){if(T.signal.aborted){if(!await e.cancel({scope:f,run:u.run}))return l(f,u.run,"cancelling","Execution cleanup is awaiting owner confirmation.");if(T.signal.reason instanceof Error&&T.signal.reason.message==="reward_check_cancel_requested")return l(f,u.run,"cancelled",null)}return await l(f,u.run,"failed",g instanceof Error?g.message:"Reward checks failed.")}finally{clearTimeout(h),i.delete(n(f,p))}}c(d,"run");function m(f,p){return f.leaseOwner===t.workerId&&f.attemptCount===p.attemptCount}c(m,"owns");async function l(f,p,u,T){return a.transaction(f,async h=>{let g=await x(h,"reward_check",p.id);if(!m(g,p)||o(g))return g;if(u==="completed"&&g.results.length!==g.fixtureRefs.length)throw new Error("reward_check_results_incomplete");let w=Se.parse({...g,revision:g.revision+1,status:u,failure:T,matchesExpectations:u==="completed"?g.results.every(R=>R.matchesExpectation):null,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(s())+5e3).toISOString():null,updatedAt:s()});return await h.put("reward_check",w,g.revision,{parentId:g.reward.id,status:w.status}),w})}return c(l,"finish"),{run:d,requestCancellation(f,p){i.get(n(f,p))?.abort(new Error("reward_check_cancel_requested"))},async drain(f,p=20){let u=await a.transaction(f,async h=>{let g=[];for(let w of["queued","running","cancelling"])g.push(...(await h.list("reward_check",{status:w,limit:Math.max(1,Math.min(100,p))})).items);return g}),T=[];for(let h of u)T.push(await d(f,h.id));return T}}}c(mT,"createRewardCheckWorker");var Jc=we.parse({capabilities:[{id:"filesystem.workspace",portability:"host_adapter",required:!0,scopes:["inputs:read","work:read-write","outputs:write"]},{id:"network.web-read",portability:"host_adapter",required:!0,scopes:["search","fetch"]},{id:"artifact.pdf",portability:"host_adapter",required:!0,scopes:["create","render","inspect"]},{id:"artifact.spreadsheet",portability:"host_adapter",required:!0,scopes:["create","calculate","inspect"]}],contentHash:"20e247cec268ecb6380bc7af204abc9056f7eaa90e1e85aa5e11544f2506888d",environment:{defaultTimeoutMs:9e5,deterministicSeeds:!1,entrypoint:"openpond-work-v1",kind:"work",lifecycle:["create","reset","step","collect","destroy"],networkPolicy:"declared_read_only",protocolVersion:"openpond.environment.v1",stateful:!0},graders:[{hardGate:!0,id:"task-output-contract",kind:"custom_verifier",networkPolicy:"none",privileged:!0,rewardEligible:!0,timeoutMs:3e4,verifierRef:{contentHash:"31cda791adf4e55131ee49651431432b429f1404dbc4fa610a3fe1466574f270",id:"verifiers-taskset-output-verifier-mjs",mediaType:"text/javascript",path:"verifiers/taskset-output-verifier.mjs",sizeBytes:2994,visibility:"verifier"},version:"1",weight:1}],id:"harness-refiner-20260818-v2",metadata:{adaptationSplit:"validation",benchmark:"harness-refiner",frozenEvaluationSplit:"frozen_eval",modelJudgeRole:"supplementary_uncalibrated_not_executed",orderSeed:"harness-refiner-20260818-order-v1",primaryMetric:"paired_verified_reward",protocolVersion:"3",qualityPolicy:"complete_frozen_cohort",refinementMode:"sequential_product_lifecycle",resultSchemaVersion:"openpond.harnessRefinerPublicResult.v2",secondaryMetrics:["paired_foreground_provider_tokens"],supplementaryModelJudge:{calibrationStatus:"pending",executable:!1,id:"task-quality-judge",rewardEligible:!1,rubricRef:{contentHash:"455b3697c0617333a34b6521f167760fb8ae7e286059fa2ec327a5c97e66a2b3",id:"rubrics-task-quality-md",mediaType:"text/markdown",path:"rubrics/task-quality.md",sizeBytes:1496,visibility:"verifier"},version:"1"},toolDeclarationSource:"openpond-production-model-tool-definitions",trainingSideEffect:!1},policy:{connectedAppScopes:[],hiddenGraderRefs:["rubrics-task-quality-md","verifiers-taskset-output-verifier-mjs"],policyVisibleFields:["input"],privilegedFields:["expectedOutput"]},revision:2,schemaVersion:"openpond.tasksetRelease.v2",tasks:[{artifactRefs:[{contentHash:"8879f8e31a916f165724a3c3e3e57db5baa858cd170ac6799064aa49bc623aa4",id:"fixtures-adaptation-board-launch-md",mediaType:"text/markdown",path:"fixtures/adaptation-board-launch.md",sizeBytes:642,visibility:"policy"}],clusterKey:"northstar-launch-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["three decision options","owners and dates","confirmed facts","open legal and finance gates"],mustNot:["present an open gate as approved","invent a recommended decision"],validation:["structural","visual"]},id:"adaptation-board-launch-brief",input:{attachments:["adaptation-board-launch.md"],prompt:"Please turn the attached Northstar launch packet into a polished two-page PDF decision brief for the executive meeting. Make the three options, owners, dates, confirmed facts, open gates, and risks easy to scan. The source records no final choice, so do not select, recommend, or imply a preferred option. Visually check the finished PDF before you send it back."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-adaptation-board-launch-brief",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"adaptation-board-launch-brief.pdf",schemaRef:null}],split:"validation",tags:["artifact-verification","decision-brief","adaptation"]},{artifactRefs:[{contentHash:"a3d44bb123a242d78d0f60d4d8ad352e499bef677eaf816a19d07359a172743f",id:"fixtures-adaptation-latency-incident-md",mediaType:"text/markdown",path:"fixtures/adaptation-latency-incident.md",sizeBytes:733,visibility:"policy"}],clusterKey:"checkout-latency-incident-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["incident window","confirmed impact","recovery","hypotheses labeled as hypotheses","unknowns","follow-up owners"],mustNot:["state either hypothesis as root cause","claim unresolved carts were recovered"],validation:["structural","visual"]},id:"adaptation-latency-incident-review",input:{attachments:["adaptation-latency-incident.md"],prompt:"Create a concise PDF incident review from the attached checkout latency packet. Clearly separate confirmed observations, recovery actions, hypotheses, unknowns, customer impact, and follow-up owners. Check that the rendered PDF is readable and complete."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-adaptation-latency-incident-review",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"adaptation-latency-incident-review.pdf",schemaRef:null}],split:"validation",tags:["artifact-verification","incident-review","adaptation"]},{artifactRefs:[{contentHash:"63bca96753ae1491a45ba13e1a06cfb48973cfbe4f392e8f181e7b9648fd9db4",id:"fixtures-adaptation-program-budget-md",mediaType:"text/markdown",path:"fixtures/adaptation-program-budget.md",sizeBytes:649,visibility:"policy"}],clusterKey:"harbor-program-budget-packet",expectedOutput:{deliverable:"spreadsheet",deterministicContract:{},mustInclude:["summary sheet","detail sheet","formula-driven full-year forecast","formula-driven variance","owner column","overrun flag"],mustNot:["replace formulas with typed totals","reverse the variance sign"],validation:["structural","test"]},id:"adaptation-program-budget-workbook",input:{attachments:["adaptation-program-budget.md"],prompt:"Build an Excel workbook from the attached Harbor youth program budget. Include a one-page summary and a detail sheet with formulas for full-year forecast and variance, clearly flag forecast overruns, preserve the listed owners, and verify the calculations before returning it."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-adaptation-program-budget-workbook",requiredOutputs:[{maxBytes:1e7,mediaType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",metadata:{validationKinds:["structural","test"]},path:"adaptation-program-budget-workbook.xlsx",schemaRef:null}],split:"validation",tags:["artifact-verification","spreadsheet","adaptation"]},{artifactRefs:[],clusterKey:"northwind-invoice-correction-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["intentional error","deliberate error"],maxWords:130,requiredAny:[["no payment","not due"]],requiredText:["inv-1842","120","102","august 14","accounts@example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","INV-1842","120 seats instead of 102","August 14","no payment due until corrected","accounts@example.com"],mustNot:["suggest the error was intentional","exceed 130 words","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-invoice-correction-email",input:{attachments:[],prompt:"Draft a courteous email to Northwind Labs explaining that invoice INV-1842 incorrectly lists 120 seats instead of 102. A corrected invoice will arrive by August 14, no payment is due until it arrives, and billing questions should go to accounts@example.com. Keep it under 130 words and do not suggest the error was intentional."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-invoice-correction-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[],clusterKey:"nextjs-security-current-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["affected"],["fixed","patched"],["checked","as of"],["version and configuration","version or configuration","exact version"]]},mustInclude:["official advisory links","affected and fixed versions","date checked","limits on exposure inference"],mustNot:["declare exposure without project version and configuration","use an uncited vulnerability list"],validation:[]},id:"adaptation-nextjs-security-audit",input:{attachments:[],prompt:"Audit the currently supported Next.js release lines for security advisories published in the last twelve months. Use primary sources, explain which versions are affected and fixed, avoid inferring that a project is vulnerable without its exact version and configuration, and give me a concise linked report with the date checked."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-nextjs-security-audit",requiredOutputs:[],split:"validation",tags:["research-efficiency","primary-sources","security","adaptation"]},{artifactRefs:[],clusterKey:"juniper-workshop-reschedule-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["venue caused","venue's fault"],maxWords:120,requiredAny:[["facilitator","presenter"],["registration","registrations"]],requiredText:["september 10","2:00","et","recording","events@example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","September 10","2:00 p.m. ET","facilitator unavailable","registrations carry over","recording","events@example.com"],mustNot:["blame the venue","exceed 120 words","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-workshop-reschedule-email",input:{attachments:[],prompt:"Draft a warm email to Juniper workshop registrants explaining that the September 3 session is moving to September 10 at 2:00 p.m. ET because the facilitator is unavailable. Existing registrations carry over, a recording will be shared, and questions should go to events@example.com. Keep it under 120 words and do not imply the venue caused the change."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-workshop-reschedule-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[],clusterKey:"boston-dc-accessibility-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["wheelchair","accessible","accessibility"],["outbound"],["return"],["disruption","service alert"],["checked","as of"],["confirm","confirmation"]],requiredText:["september 17","september 19"]},mustInclude:["official operator sources","outbound and return plan","accessibility details","disruption check","time checked","items needing confirmation"],mustNot:["guarantee availability not confirmed by booking","hide access limitations"],validation:[]},id:"adaptation-accessible-boston-dc-plan",input:{attachments:[],prompt:"Plan a wheelchair-accessible train trip from Boston to Washington, DC for September 17, 2026, returning September 19. Verify accessibility and disruption information from official sources, distinguish facts from anything that still needs confirmation, include direct links and the time checked, and keep the answer practical and concise."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-accessible-boston-dc-plan",requiredOutputs:[],split:"validation",tags:["research-efficiency","current-information","travel","adaptation"]},{artifactRefs:[],clusterKey:"chatgpt-x-reddit-public-sample",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["positive"],["negative"],["anecdote","anecdotal"],["pattern","recurring"],["sampling","sample"],["limitation","access"]]},mustInclude:["links to public examples","dates","positive experiences","negative experiences","pattern versus anecdote","sampling limitations"],mustNot:["post or interact","represent a convenience sample as representative sentiment"],validation:[]},id:"adaptation-chatgpt-public-experiences",input:{attachments:[],prompt:"Research what people have publicly said about using ChatGPT on X and Reddit during the last thirty days. Give me a concise, linked summary of recurring positive and negative experiences, separate patterns from anecdotes, include dates, and explain any platform-access or sampling limitations. Do not post or interact with anyone."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-chatgpt-public-experiences",requiredOutputs:[],split:"validation",tags:["research-efficiency","current-information","social-research","adaptation"]},{artifactRefs:[],clusterKey:"acme-launch-delay-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["testing failed","test failed","compensation"],maxWords:140,requiredAny:[["accessibility testing","accessibility test"],["pilot access"]],requiredText:["august 27","august 22","pilot-support@example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","August 27","accessibility testing incomplete","August 22 expectation","pilot access remains","support email"],mustNot:["say testing failed","exceed 140 words","invent compensation","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-launch-delay-email",input:{attachments:[],prompt:"Draft a calm email to the Acme pilot customers explaining that the August 20 launch is moving to August 27 because final accessibility testing is not complete. Testing is expected to finish August 22, existing pilot access remains available, and questions should go to pilot-support@example.com. Keep it under 140 words and do not imply the test has failed."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-launch-delay-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[],clusterKey:"cirrus-service-window-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["zero interruption","no interruption"],maxWords:125,requiredAny:[["read-only","read only"],["alerts"],["no data loss"]],requiredText:["august 18","1:00","2:00","utc","status.example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","August 18","1:00 to 2:00 UTC","dashboard read-only","alerts continue","no data loss expected","status.example.com"],mustNot:["promise zero interruption","exceed 125 words","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-service-window-email",input:{attachments:[],prompt:"Draft a calm email to Cirrus customers about planned maintenance on August 18 from 1:00 to 2:00 UTC. The dashboard will be read-only, alerts will continue, no data loss is expected, and updates will appear at status.example.com. Keep it under 125 words and do not promise that there will be zero interruption."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-service-window-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[{contentHash:"cb3aec594b140129ebd872c427053ba63a303cc36d160448afc9ed1a0289d3ca",id:"fixtures-frozen-clinic-relocation-md",mediaType:"text/markdown",path:"fixtures/frozen-clinic-relocation.md",sizeBytes:652,visibility:"policy"}],clusterKey:"riverside-clinic-relocation-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["three opening options","owners and dates","confirmed facts","permit and parking gates","delivery risk"],mustNot:["present either approval as complete","invent a chosen opening option"],validation:["structural","visual"]},id:"frozen-clinic-relocation-brief",input:{attachments:["frozen-clinic-relocation.md"],prompt:"Please turn the attached Riverside clinic relocation packet into a polished two-page PDF decision brief. Make the opening options, owners, dates, confirmed facts, unresolved approvals, and delivery risk easy to scan, and visually check the finished PDF before returning it."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-frozen-clinic-relocation-brief",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"frozen-clinic-relocation-brief.pdf",schemaRef:null}],split:"frozen_eval",tags:["artifact-verification","decision-brief","frozen-eval"]},{artifactRefs:[{contentHash:"80aad04ac67682165f098884fd1a86e9fb3ef15d2da3124401308dd23884b612",id:"fixtures-frozen-payment-incident-md",mediaType:"text/markdown",path:"fixtures/frozen-payment-incident.md",sizeBytes:672,visibility:"policy"}],clusterKey:"subscription-renewal-incident-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["incident window","attempt and timeout counts","recovery","hypothesis label","33 unresolved accounts","follow-up owners"],mustNot:["state the certificate hypothesis as confirmed","claim all accounts resolved"],validation:["structural","visual"]},id:"frozen-payment-incident-review",input:{attachments:["frozen-payment-incident.md"],prompt:"Create a concise PDF incident review from the attached subscription renewal incident packet. Separate confirmed impact and recovery from the root-cause hypothesis and unresolved customer accounts, preserve the owners, and check the rendered PDF for readability and completeness."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-frozen-payment-incident-review",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"frozen-payment-incident-review.pdf",schemaRef:null}],split:"frozen_eval",tags:["artifact-verification","incident-review","frozen-eval"]},{artifactRefs:[{contentHash:"c58b740d57b031cfe22d475d30b39a1a49a43820f1840a1d8054731cef58c8e8",id:"fixtures-frozen-grant-budget-md",mediaType:"text/markdown",path:"fixtures/frozen-grant-budget.md",sizeBytes:661,visibility:"policy"}],clusterKey:"greenway-grant-budget-packet",expectedOutput:{deliverable:"spreadsheet",deterministicContract:{},mustInclude:["summary sheet","detail sheet","formula-driven full-year forecast","formula-driven variance","owner column","overrun flag"],mustNot:["replace formulas with typed totals","reverse the variance sign"],validation:["structural","test"]},id:"frozen-grant-budget-workbook",input:{attachments:["frozen-grant-budget.md"],prompt:"Build an Excel workbook from the attached Greenway community grant budget. Include a one-page summary and detail sheet with formulas for full-year forecast and variance, flag forecast overruns, preserve owners, and verify all calculations before returning it."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-frozen-grant-budget-workbook",requiredOutputs:[{maxBytes:1e7,mediaType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",metadata:{validationKinds:["structural","test"]},path:"frozen-grant-budget-workbook.xlsx",schemaRef:null}],split:"frozen_eval",tags:["artifact-verification","spreadsheet","frozen-eval"]},{artifactRefs:[],clusterKey:"beacon-shipping-delay-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["equipment is lost","shipment is lost"],maxWords:90,requiredAny:[["transfer window"],["installation","crew"]],requiredText:["august 21","august 22","morgan","logistics"],requireMessageBody:!0},mustInclude:["complete ready-to-post message copy","August 21","carrier missed transfer window","August 22 installation","Morgan","logistics channel"],mustNot:["say the equipment is lost","exceed 90 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-shipping-delay-chat-message",input:{attachments:[],prompt:"Write a concise team chat message explaining that the Beacon equipment shipment is now expected August 21 instead of August 19 because the carrier missed its transfer window. The installation crew remains booked for August 22, Morgan owns the carrier follow-up, and the team should flag conflicts in the logistics channel. Keep it under 90 words and do not say the equipment is lost."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-shipping-delay-chat-message",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]},{artifactRefs:[],clusterKey:"python-requests-security-current-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["affected"],["fixed","patched"],["checked","as of"],["dependency graph","exact dependency","usage"]]},mustInclude:["primary advisory links","affected and fixed versions","date checked","dependency and usage caveat"],mustNot:["declare deployment exposure without evidence","use an uncited vulnerability list"],validation:[]},id:"frozen-python-requests-security-audit",input:{attachments:[],prompt:"Audit the supported Python Requests release lines for security advisories published in the last eighteen months. Use primary sources, identify affected and fixed versions, avoid claiming a specific deployment is exposed without its exact dependency graph and usage, and provide a concise linked report with the date checked."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-python-requests-security-audit",requiredOutputs:[],split:"frozen_eval",tags:["research-efficiency","primary-sources","security","frozen-eval"]},{artifactRefs:[],clusterKey:"cobalt-refund-support-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["refund is approved","refund has been approved"],maxWords:110,requiredAny:[["original payment method"],["duplicate","charge"]],requiredText:["$48","august 16","five business days","cb-7714"],requireMessageBody:!0},mustInclude:["complete send-ready reply copy","$48 duplicate charge","August 16","original payment method","five business days","CB-7714"],mustNot:["state the refund is already approved","exceed 110 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-refund-support-reply",input:{attachments:[],prompt:"Write a helpful support reply to a Cobalt customer whose duplicate $48 charge is being reviewed. The review should finish by August 16, any confirmed duplicate will be refunded to the original payment method within five business days, and the case number is CB-7714. Keep it under 110 words and do not state that the refund has already been approved."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-refund-support-reply",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]},{artifactRefs:[],clusterKey:"chicago-stl-accessibility-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["wheelchair","accessible","accessibility"],["outbound"],["return"],["disruption","service alert"],["checked","as of"],["confirm","confirmation"]],requiredText:["october 8","october 10"]},mustInclude:["official operator sources","outbound and return plan","accessibility details","disruption check","time checked","items needing confirmation"],mustNot:["guarantee unconfirmed availability","hide access limitations"],validation:[]},id:"frozen-accessible-chicago-stl-plan",input:{attachments:[],prompt:"Plan a wheelchair-accessible train trip from Chicago to St. Louis for October 8, 2026, returning October 10. Verify accessibility and disruption information from official sources, distinguish confirmed facts from anything requiring booking confirmation, include direct links and the time checked, and keep it practical."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-accessible-chicago-stl-plan",requiredOutputs:[],split:"frozen_eval",tags:["research-efficiency","current-information","travel","frozen-eval"]},{artifactRefs:[],clusterKey:"new-jersey-youth-grant-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["new jersey","nj"],["eligibility","eligible"],["deadline","due"],["checked","as of"]]},mustInclude:["authoritative source links","eligibility evidence","deadlines","date checked","only realistic matches"],mustNot:["include closed grants","include grants without verified nonprofit and program eligibility","pad the list"],validation:[]},id:"frozen-new-jersey-youth-grants",input:{attachments:[],prompt:"Find currently open grants that a New Jersey nonprofit running after-school programs could realistically apply for, with deadlines between now and December 31, 2026. Use authoritative sources, link each opportunity, verify eligibility and deadline, omit weak matches instead of padding the list, and state when you checked."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-new-jersey-youth-grants",requiredOutputs:[],split:"frozen_eval",tags:["research-efficiency","current-information","funding","frozen-eval"]},{artifactRefs:[],clusterKey:"maple-maintenance-followup-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["sue","lawsuit","legal action"],maxWords:130,requiredAny:[["repair date","repair schedule"]],requiredText:["july 28","august 1","security","two business days"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","July 28","August 1 inspection","security concern","repair date within two business days"],mustNot:["make a legal threat","claim facts not supplied","exceed 130 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-maintenance-followup-email",input:{attachments:[],prompt:"Draft a firm but courteous email to Maple Property Management following up on a bedroom window that has not closed securely since July 28. Maintenance inspected it August 1 but did not repair it. Ask for a repair date within two business days, mention the security concern, and keep the email under 130 words without making legal threats."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-maintenance-followup-email",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]},{artifactRefs:[],clusterKey:"meridian-vendor-document-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["cancel the contract","contract cancellation"],maxWords:120,requiredAny:[["onboarding","cannot finish","blocked"]],requiredText:["insurance certificate","august 7","rosa","august 12"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","insurance certificate","August 7","onboarding blocked","Rosa","August 12"],mustNot:["threaten contract cancellation","exceed 120 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-vendor-document-followup-email",input:{attachments:[],prompt:"Draft a firm but professional email to Meridian Freight following up on the insurance certificate promised for August 7. It has not arrived, carrier onboarding cannot finish without it, and Rosa needs the document or a confirmed delivery date by August 12. Keep it under 120 words and do not threaten to cancel the contract."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-vendor-document-followup-email",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]}],tools:[{description:"Start Work compute only when it is needed, then return live sandbox status and the stable /workspace/inputs, /workspace/work, and /workspace/outputs layout.",inputSchema:{additionalProperties:!1,properties:{},type:"object"},inputSchemaHash:"042b35e50dd5dd505f0228e829f17a8aeaae50e49d865c4754cf9ba1edba9bd0",name:"work_environment",sideEffect:"write",timeoutMs:12e4},{description:"List files in the Work scratch, input, or completed-output area. This lazily starts Work compute.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["inputs","work","outputs"],type:"string"},path:{description:"Optional relative path inside the selected area.",type:"string"},recursive:{type:"boolean"}},required:["area"],type:"object"},inputSchemaHash:"a3a68e8aeb4f23710aa21fe95d4a361a14c08bcbb61a2a959a60b7b00c82807f",name:"work_list_files",sideEffect:"read",timeoutMs:12e4},{description:"Read a bounded file from Work inputs, scratch space, or completed-output candidates.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["inputs","work","outputs"],type:"string"},maxBytes:{maximum:1e6,minimum:1,type:"integer"},path:{minLength:1,type:"string"}},required:["area","path"],type:"object"},inputSchemaHash:"deb9cd248f2734751286054c381ac9572b248370181970ced6563a73c905a4f0",name:"work_read_file",sideEffect:"read",timeoutMs:12e4},{description:"Write a UTF-8 Work scratch file or completed-output candidate. Use area=outputs only for a finished result that is ready to validate and save.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["work","outputs"],type:"string"},content:{type:"string"},path:{minLength:1,type:"string"}},required:["area","path","content"],type:"object"},inputSchemaHash:"6a19df98686e99a324564006b0b92082f185ac4b430e9285829f781251dd145b",name:"work_write_file",sideEffect:"write",timeoutMs:12e4},{description:"Edit a Work scratch file or output candidate by exact text replacement after reading it.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["work","outputs"],type:"string"},newText:{type:"string"},oldText:{minLength:1,type:"string"},path:{minLength:1,type:"string"},replaceAll:{type:"boolean"}},required:["area","path","oldText","newText"],type:"object"},inputSchemaHash:"f507d9d9abbd8cf1556f6e925c159234295c3fa01800c5556767f96be8b011db",name:"work_edit_file",sideEffect:"write",timeoutMs:12e4},{description:"Run a bounded shell command from /workspace/work. Write finished deliverables to ../outputs and inspect them; the runtime preserves output files automatically when the turn ends.",inputSchema:{additionalProperties:!1,properties:{command:{minLength:1,type:"string"},timeoutSeconds:{maximum:3600,minimum:1,type:"integer"}},required:["command"],type:"object"},inputSchemaHash:"5ba3a52cddb3f575218bed855020e91eef14092d75922c963a24c6bc97fadeda",name:"work_exec",sideEffect:"write",timeoutMs:3e5},{description:"Explicitly copy one completed file from /workspace/outputs to durable OpenPond output storage before turn completion. Normal Work turns preserve output files automatically.",inputSchema:{additionalProperties:!1,properties:{path:{description:"Path relative to /workspace/outputs, for example report.md.",minLength:1,type:"string"},suggestedName:{maxLength:180,minLength:1,type:"string"},validation:{items:{additionalProperties:!1,properties:{detail:{maxLength:4e3,type:"string"},kind:{enum:["structural","visual","test","user_review"],type:"string"},label:{maxLength:240,minLength:1,type:"string"},ref:{maxLength:4096,type:"string"},status:{enum:["passed","failed","not_run"],type:"string"}},required:["kind","status","label"],type:"object"},maxItems:32,type:"array"}},required:["path"],type:"object"},inputSchemaHash:"ca853f64b300c74441b522db03facbcc9c5bb89c86189dae24182bab39510a83",name:"work_save_output",sideEffect:"write",timeoutMs:12e4},{description:"Stop Work compute after durable outputs have been saved. Saved OutputRefs remain available.",inputSchema:{additionalProperties:!1,properties:{},type:"object"},inputSchemaHash:"042b35e50dd5dd505f0228e829f17a8aeaae50e49d865c4754cf9ba1edba9bd0",name:"work_stop",sideEffect:"write",timeoutMs:12e4},{description:"Search the web for current or external information. The app renders clickable source pills automatically. Cite by source title or source name in prose by default; when the user explicitly requests URLs or linked evidence, use the result URLs in clickable Markdown links.",inputSchema:{additionalProperties:!1,properties:{domains:{description:"Optional domain filters.",items:{type:"string"},maxItems:10,type:"array"},limit:{description:"Maximum number of results to return.",maximum:10,minimum:1,type:"integer"},query:{description:"Search query.",minLength:1,type:"string"},recencyDays:{description:"Only return results from this many recent days when supported.",minimum:0,type:"integer"}},required:["query"],type:"object"},inputSchemaHash:"2a138bf9b526a624ac2442669fccb277fac2ba818821b3a2da1dd27d62954056",name:"web_search",sideEffect:"read",timeoutMs:12e4},{description:"Fetch and extract readable text from a known HTTP(S) URL. Use this when the user provides a URL or a search result has an exact page to inspect; use web_search when discovering unknown pages by query.",inputSchema:{additionalProperties:!1,properties:{maxBytes:{description:"Maximum UTF-8 bytes of extracted text to return. Defaults to 20000.",maximum:1e5,minimum:1,type:"integer"},url:{description:"HTTP or HTTPS URL to fetch.",minLength:1,type:"string"}},required:["url"],type:"object"},inputSchemaHash:"0afe31d8dbe05643e4a19ca0897c606e379f37d741b4f61816ad8ba4d48b61b3",name:"web_fetch",sideEffect:"read",timeoutMs:12e4}]}),Vc=Object.freeze({"fixtures/adaptation-board-launch.md":`# Northstar launch decision packet
2
+ import{d as ne}from"./chunk-YF6IDYTS.js";import{a as za,b as Pn,c as Ga,d as xn}from"./chunk-36RCXSEJ.js";import{a as oa}from"./chunk-OQPFFKU6.js";import{T as So}from"./chunk-W5NQ2DI7.js";import{a as na,b as G,c as Ss,f as Ro}from"./chunk-DZVVGU6K.js";import{Cb as ea,I as Qe,Ib as hs,Jb as rr,Kb as gs,L as ht,Lb as ws,Lc as Nt,Mb as ro,Rb as sr,Sb as Rs,Sc as sa,Tc as ir,Uc as ia,Wb as ta,Xc as ys,Y as Qn,Zc as St,_b as He,_c as ks,dc as Re,ed as nr,fc as wt,fd as or,gc as Rt,hd as Ue,ic as yt,lc as Ze,ld as no,md as oo,nc as kt,nd as co,od as vt,qc as aa,rc as ra,sc as so,uc as io,vd as lo,x as Es,yb as Zt,z as Gn,zb as _s}from"./chunk-4TMC5F2P.js";import{U as ao,a as mn,b as Cn,e as Xn,f as Yn,g as Kn,h as Ts,i as $n}from"./chunk-NM2GYDPA.js";import{$b as er,Aa as Vt,Ac as mo,B as z,Ba as ds,Bc as Fe,Ca as cs,Cc as To,Da as Xe,Db as ms,Dc as fo,Ec as Eo,Fa as Mn,Fb as F,Ga as ze,Gc as _o,Ha as Et,Hc as ho,I as Ja,Ia as ls,Ib as ie,Ic as It,Ja as zt,Jc as Ns,Ka as ps,Kb as Te,Kc as go,L as gn,La as us,Lb as Fn,Lc as wo,M as wn,Ma as Ge,Mb as jn,Na as _t,O as Jt,Ob as Bn,Pb as qn,R as Rn,Sa as Me,Ta as Qa,U as yn,Va as Dn,Wa as Hn,X as kn,Y as Nn,_b as Wn,ac as tr,ba as On,ca as Ln,d as rs,da as bn,e as ss,ea as An,f as Ka,gb as Gt,i as is,j as ns,l as X,n as Z,o as os,ob as Za,p as $a,q as Ve,qb as Qt,rc as gt,s as B,sc as ar,t as Tn,tb as Un,uc as De,vc as Zn,w as Kt,wc as eo,x as fn,xc as to,yc as po,z as xe,zc as uo}from"./chunk-OMM4ZO7E.js";import{a as Ki,b as Ya,c as Yt,d as Qi,e as Zi,f as en,g as tn,h as an,i as rn,j as sn,k as nn,l as on,m as dn,n as cn,o as ln,p as Pe,q as pn,r as un}from"./chunk-3QC2DDQ5.js";import{$a as Gi,B as qt,Ba as Yi,C as Pi,Ca as Ba,E as xa,F as Xa,Fa as qa,G as xi,H as pt,J as Xi,L as Mi,Ma as as,N as Di,Oa as $i,P as ut,Pa as Ji,Qa as Vi,R as mt,Ra as Se,Sa as ft,T as Ma,Ta as zi,U as Hi,Ua as Wa,V as Zr,Va as ae,W as es,Xa as me,Y as Wt,Ya as x,Z as Ui,Za as M,_ as Fi,_a as Ce,a as v,b as ge,ba as ts,c as Gr,cb as $t,d as lt,da as Tt,db as Va,ea as Ae,eb as En,fa as I,fb as _n,ga as C,gb as hn,h as Qr,ha as U,ia as ue,jb as Sn,ka as Da,kb as vn,l as Ai,la as ji,m as $e,ma as V,na as Ha,nb as In,oa as Bi,ra as qi,s as we,sa as Ua,t as Ci,va as Wi,xa as Fa,y as Je,za as ja}from"./chunk-LNEOLOK2.js";import{$ as Pa,A as Ca,Aa as zr,B as vi,C as Ii,D as Oi,Ja as bi,_ as Ke,aa as Bt,c as wi,i as dt,l as ct,m as Ri,n as yi,o as pe,q as Ye,r as ba,s as ki,t as Aa,u as Ni,v as Jr,z as Si,za as Li}from"./chunk-Z6ZR5O3J.js";import{e as vs,f as ko}from"./chunk-ALZRXBEC.js";import{B as Jn,H as Vn,K as zn,y as fs}from"./chunk-MTJNKRXL.js";import{a as Ft,b as We,c as $r,d as jt,e as be,g as gi,j as Y,k as ot,l as y,m as Ne,n as Vr}from"./chunk-HZP5U2AA.js";import{b as E}from"./chunk-ES2ISFJC.js";import{c as yo,n as No}from"./chunk-H7IWJN7L.js";import{a as c}from"./chunk-FTQLQJQV.js";var je=E.object({schemaVersion:E.literal("openpond.localHarnessReleaseRecord.v1"),workspaceId:E.string().trim().min(1).max(240),sourceRevision:E.string().trim().min(1).max(500),agentSnapshot:dt,harnessRelease:ct,bundlePath:E.string().trim().min(1).max(8192),createdAt:E.string().datetime({offset:!0})}).strict().superRefine((a,e)=>{(a.harnessRelease.agentSnapshot.id!==a.agentSnapshot.id||a.harnessRelease.agentSnapshot.contentHash!==a.agentSnapshot.contentHash)&&e.addIssue({code:"custom",message:"Harness release must bind the stored Agent snapshot",path:["harnessRelease","agentSnapshot"]})});import{randomUUID as Ti}from"node:crypto";import{promises as b}from"node:fs";import L from"node:path";async function dr(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new me("iteration",r.id,e.expectedRevision,r.revision);let s=await x(a,"reservation",r.id);if(r.status==="cancelled")return[{kind:"iteration",id:r.id,revision:r.revision}];if(r.trainingJob||r.evaluationJob||!["ready","waiting_for_data","waiting_for_review"].includes(r.status))throw new v("learning_execution_cancellation_required",409);let i=Tt.parse({...r,revision:r.revision+1,status:"cancelled",updatedAt:t}),n=Ba.parse({...s,revision:s.revision+1,budget:{...s.budget,reservedSpendUsd:0,settledSpendUsd:0,settledAt:t},updatedAt:t});await a.put("iteration",i,r.revision,{parentId:s.chainId,status:i.status}),await a.put("reservation",n,s.revision,{parentId:s.chainId,status:s.outcome});let o=await x(a,"chain",s.chainId);return o.activeIterationId===r.id&&await a.put("chain",ja.parse({...o,revision:o.revision+1,activeIterationId:null,updatedAt:t}),o.revision,{parentId:o.modelProjectId}),[{kind:"iteration",id:i.id,revision:i.revision},{kind:"reservation",id:n.id,revision:n.revision}]}c(dr,"cancelLearningIterationReservation");async function vo(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new me("iteration",r.id,e.expectedRevision,r.revision);let s=await a.get("dispatch",r.dispatchId);if(e.action==="cancel_iteration"&&!s)return dr(a,{...e,action:"cancel_iteration_reservation"},t);if(!s)throw new v("learning_dispatch_not_started",409);if(s.state==="settled")throw new v("learning_execution_already_terminal",409);if(e.action==="retry_iteration_dispatch"&&s.state!=="blocked")throw new v("learning_dispatch_not_blocked",409);let i=e.action==="cancel_iteration"||!!s.cancelRequestedAt,n=Tt.parse({...r,revision:r.revision+1,status:i?"cancelling":r.status,failure:null,updatedAt:t}),o=$i.parse({...s,revision:s.revision+1,state:s.execution?"submitted":s.submission?"prepared":"preparing",cancelRequestedAt:i?s.cancelRequestedAt??t:null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,updatedAt:t});return await a.put("dispatch",o,s.revision,{parentId:r.id,status:o.state}),await a.put("iteration",n,r.revision,{parentId:s.chainId,status:n.status}),[{kind:"iteration",id:n.id,revision:n.revision},{kind:"dispatch",id:o.id,revision:o.revision}]}c(vo,"commandLearningIterationDispatch");async function Io(a,e,t,r){let s=await M(a,"policy",e.policy),i=Qi(s.modelProjectId),n=e.trigger.kind==="schedule"?{...e.trigger,scheduledAt:new Date(e.trigger.scheduledAt).toISOString()}:e.trigger.kind==="approved_count"?{...e.trigger,checkedAt:new Date(e.trigger.checkedAt).toISOString()}:e.trigger,o=y([e.policy.id,n]),d=`iteration-${y([i,o])}`,m=y({policy:e.policy,trigger:n}),l=await a.get("reservation",d);if(l){if(l.requestHash!==m)throw new v("learning_trigger_identity_conflict",409);return[{kind:"iteration",id:d,revision:(await x(a,"iteration",d)).revision},{kind:"reservation",id:d,revision:l.revision}]}let f=await x(a,"policy",s.id);if(!C(I(f),e.policy))throw new v("learning_policy_revision_stale",409);if(!s.enabled)throw new v("learning_policy_paused",409);if(s.automation.accept||s.automation.serve)throw new v("learning_automatic_acceptance_not_available",422);if(e.trigger.kind==="schedule"){if(!["schedule","nightly"].includes(s.trigger.kind)||!s.automation.train)throw new v("learning_schedule_not_enabled",409);if(Date.parse(e.trigger.scheduledAt)>Date.parse(r))throw new v("learning_schedule_not_due",409)}if(e.trigger.kind==="approved_count"){if(s.trigger.kind!=="approved_count"||!s.automation.train)throw new v("learning_count_trigger_not_enabled",409);if(Date.parse(e.trigger.checkedAt)>Date.parse(r))throw new v("learning_count_trigger_not_due",409)}let p=await a.get("chain",i);if(p?.activeIterationId)throw new v("learning_iteration_active",409,p.activeIterationId);if(p?.lastReservedAt&&Date.parse(r)-Date.parse(p.lastReservedAt)<s.limits.cooldownSeconds*1e3)throw new v("learning_iteration_cooldown",409);let u=await en(a,s),T=u.counts.eligible>=s.admission.minimumApprovedExamples;if(e.trigger.kind==="approved_count"&&!T)throw new v("learning_count_threshold_not_met",409);let h=T?"ready":u.counts.awaitingReview>0?"waiting_for_review":"waiting_for_data",g=[],w=await an(a,i,!0),R=await rn(a,s,w),N=null;if(T){await Yc(a,i,r,s.limits.maxIterationSpendUsd,s.limits.maxDailySpendUsd);let S=await Ya(a,{action:"seal_batch",operationId:e.operationId,batchId:`batch-${y(d)}`,taskDefinition:s.taskDefinition,purpose:u.purpose,evidence:u.selected.map(P=>I(P.evidence)),decisions:u.selected.map(P=>I(P.decision))},t,r);g.push(...S),N=I(await x(a,"batch",S[0].id));for(let P of u.selected){let j=Yi.parse({schemaVersion:"openpond.learningConsumption.v1",id:Zi(i,P.evidence),revision:1,chainId:i,iterationId:d,evidence:I(P.evidence),decision:I(P.decision),reservedAt:r});await a.put("consumption",j,0,{parentId:i})}}let _=Tt.parse({schemaVersion:"openpond.learningIteration.v1",id:d,revision:1,policy:e.policy,status:h,triggerIdentity:o,batch:N,sourceWatermarks:{},...R,teacher:s.teacher,upstreamEvent:null,trainingJob:null,evaluationJob:null,candidateVersion:null,dispatchId:`dispatch-${y(d)}`,retryCount:0,spendUsd:0,failure:null,createdAt:r,updatedAt:r}),k=Ba.parse({schemaVersion:"openpond.learningIterationReservation.v1",id:d,revision:1,chainId:i,iterationId:d,policy:e.policy,trigger:n,requestHash:m,outcome:T?"reserved":h,counts:u.counts,budget:{maximumSpendUsd:T?s.limits.maxIterationSpendUsd:0,reservedSpendUsd:T?s.limits.maxIterationSpendUsd:0,settledSpendUsd:0,settledAt:T?null:r},createdAt:r,updatedAt:r}),A=ja.parse({schemaVersion:"openpond.learningChain.v1",id:i,revision:(p?.revision??0)+1,modelProjectId:s.modelProjectId,activeIterationId:T?d:null,latestIterationId:d,acceptedParent:w,lastReservedAt:T?r:p?.lastReservedAt??null,updatedAt:r});return await a.put("iteration",_,0,{parentId:i,status:h}),await a.put("reservation",k,0,{parentId:i,status:k.outcome}),await a.put("chain",A,p?.revision??0,{parentId:s.modelProjectId}),[{kind:"iteration",id:d,revision:1},{kind:"reservation",id:d,revision:1},...g]}c(Io,"reserveLearningIteration");async function Yc(a,e,t,r,s){if((await tn(a,e,t)).committedSpendUsd+r>s)throw new v("learning_daily_budget_exhausted",409)}c(Yc,"assertAvailableBudget");function Kc(a){return`schedule-${y(a)}`}c(Kc,"learningScheduleId");async function Oo(a,e,t){ue(e);let r=await x(a,"policy",e.id);if(!C(I(r),I(e)))throw new v("learning_policy_revision_stale",409);let s=Kc(e.id),i=await a.get("schedule",s);if(i&&C(i.policy,I(e)))return i;let n=e.trigger.kind==="schedule"?e.trigger.intervalSeconds:e.trigger.kind==="approved_count"?60:null,o=e.trigger.kind==="nightly"?{localTime:e.trigger.localTime,timeZone:e.trigger.timeZone}:null,d=e.enabled&&e.automation.train&&(n!==null||o!==null),m=i?await M(a,"policy",i.policy):null,l=i?.nextRunAt&&i.intervalSeconds===n&&JSON.stringify(i.calendar)===JSON.stringify(o)&&m?.trigger.kind===e.trigger.kind&&i.executionOwner===e.executionOwner,f=Ji.parse({schemaVersion:"openpond.learningSchedule.v1",id:s,revision:(i?.revision??0)+1,policy:I(e),modelProjectId:e.modelProjectId,executionOwner:e.executionOwner,state:d?"scheduled":"disabled",intervalSeconds:n,calendar:o,nextRunAt:d?l?i.nextRunAt:o?Di(o,t):new Date(Date.parse(t)+n*1e3).toISOString():null,lastFire:i?.lastFire??null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,createdAt:i?.createdAt??t,updatedAt:t});return await a.put("schedule",f,i?.revision??0,{parentId:e.modelProjectId,status:f.state}),f}c(Oo,"synchronizeLearningSchedule");async function Lo(a,e,t){ge(e.draft,131072);let r=await a.get("draft",e.draft.id);if(r&&(r.status!=="draft"||r.targetId!==e.draft.targetId||r.targetKind!==e.draft.targetKind||(r.baseRelease===null?e.draft.baseRelease!==null:e.draft.baseRelease===null||!C(r.baseRelease,e.draft.baseRelease))))throw new v("authoring_draft_identity_conflict",409);if(e.draft.baseRelease){if(e.draft.baseRelease.id!==e.draft.targetId)throw new v("authoring_draft_base_mismatch",422);await M(a,e.draft.targetKind,e.draft.baseRelease)}if(e.draft.targetKind==="reward")for(let i of e.draft.fields.fixtures??[]){if(!i.sourceLabel)continue;let{evidence:n,feedback:o}=i.sourceLabel;await M(a,"evidence",n);let d=await x(a,"feedback",o.id,o.revision);if(!d.evidence||!C(d.evidence,n))throw new v("reward_fixture_label_mismatch",422)}let s=qa.parse(U({...e.draft,schemaVersion:"openpond.authoringDraft.v1",revision:e.expectedRevision+1,status:"draft",publishedRelease:null,createdAt:r?.createdAt??t,updatedAt:t}));return await a.put("draft",s,e.expectedRevision,{parentId:s.targetKind,status:s.status}),{kind:"draft",id:s.id,revision:s.revision}}c(Lo,"saveAuthoringDraft");async function bo(a,e,t){let r=await Ot(a,e),{contentHash:s,...i}=r,n=qa.parse(U({...i,revision:r.revision+1,status:"archived",updatedAt:t}));return await a.put("draft",n,r.revision,{parentId:r.targetKind,status:n.status}),{kind:"draft",id:n.id,revision:n.revision}}c(bo,"archiveAuthoringDraft");async function Is(a,e,t,r){let s=e.finalizeDraft;if(!s)return null;let i=await Ot(a,s.draft);if(i.targetKind!==s.targetKind||i.targetId!==s.release.id||s.release.revision!==(i.baseRelease?.revision??0)+1||!t.some(m=>m.kind===s.targetKind&&m.id===s.release.id&&m.revision===s.release.revision))throw new v("authoring_draft_publication_mismatch",422);await M(a,s.targetKind,s.release);let{contentHash:n,...o}=i,d=qa.parse(U({...o,revision:i.revision+1,status:"published",publishedRelease:s.release,updatedAt:r}));return await a.put("draft",d,i.revision,{parentId:i.targetKind,status:d.status}),{kind:"draft",id:d.id,revision:d.revision}}c(Is,"finalizeAuthoringDraft");async function Ot(a,e){let t=await M(a,"draft",e),r=await a.get("draft",e.id);if(!r||!C(I(r),e))throw new v("authoring_draft_revision_stale",409);if(t.status!=="draft")throw new v("authoring_draft_closed",409);return t}c(Ot,"currentDraft");function Os(a,e,t){let r=ft(a,e),s=r.reward.implementation;if(s.kind!=="model_judge"||!s.model)throw new v("reward_calibration_model_required",422);if(!C(t.draft,I(a))||!C(t.reward,I(r.reward))||t.snapshotHash!==r.snapshotHash||y(t.fixtureRefs)!==y(r.fixtureRefs))throw new v("reward_calibration_snapshot_mismatch",422);if(t.status!=="completed"||!t.runtime||t.matchesExpectations!==!0||t.failure||t.results.length!==r.fixtures.length)throw new v("reward_calibration_check_incomplete",422);if(!r.fixtures.some(o=>o.expected.status==="scored"&&o.expected.passed===!0)||!r.fixtures.some(o=>o.expected.status==="scored"&&o.expected.passed===!1))throw new v("reward_calibration_coverage_required",422,"Check both a passing and a failing example before publishing a calibrated judge.");for(let o of r.fixtures){let d=t.results.filter(p=>p.fixture.id===o.id),m=d[0];if(d.length!==1||!m||m.fixture.contentHash!==y(o)||!C(m.result.reward,t.reward)||!Wa(o,m.result).matchesExpectation)throw new v("reward_calibration_fixture_mismatch",422);if(o.expected.status!=="scored")continue;let l=m.result.graderEvidence?.modelJudgeReceipt,f=t.judgeCalls?.find(p=>p.id===`fixture-${y([o,r.reward.contentHash])}`);if(!l||l.providerId!==s.model.providerId||l.modelId!==s.model.modelId||s.model.revision!==null&&l.modelRevision!==s.model.revision||f?.status!=="settled"||!f.response||f.requestHash!==l.requestHash||y(f.response)!==l.responseHash)throw new v("reward_calibration_provider_receipt_mismatch",422)}let{contentHash:i,...n}=r.reward;return{...r,reward:xa({...n,implementation:{...s,calibrationStatus:"passed"},calibrationCheckRef:{id:t.id,revision:t.revision,contentHash:y(t)}})}}c(Os,"qualifyRewardCheck");async function Ao(a,e){if(e.implementation.kind!=="model_judge"||e.implementation.calibrationStatus!=="passed"){if(e.calibrationCheckRef)throw new v("reward_calibration_reference_invalid",422);return}let t=e.calibrationCheckRef;if(!t)throw new v("reward_calibration_check_required",422);let r=await x(a,"reward_check",t.id,t.revision);if(y(r)!==t.contentHash)throw new v("reward_calibration_check_changed",422);let s=await M(a,"draft",r.draft);if(s.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let i=s.baseRelease?await M(a,"reward",s.baseRelease):null,n=Os(s,i,r).reward,o=c(d=>y([d.implementation,d.rawScore,d.assets,d.fixtureSetRef??null]),"scoring");if(e.id!==n.id||o(e)!==o(n))throw new v("reward_calibration_configuration_changed",422)}c(Ao,"assertRewardCalibration");async function Co(a,e,t,r,s){let i=await Ot(a,e.draft);if(i.targetKind!=="reward")throw new v("reward_check_draft_kind_invalid",422);let n=i.baseRelease?await M(a,"reward",i.baseRelease):null,o=ft(i,n),d=Se.parse({schemaVersion:"openpond.rewardCheckRun.v1",id:`reward-check-${t}`,revision:1,draft:I(i),reward:I(o.reward),snapshotHash:o.snapshotHash,fixtureRefs:o.fixtureRefs,status:"queued",runtime:null,results:[],matchesExpectations:null,timeoutMs:e.timeoutMs,maximumSpendUsd:e.maximumSpendUsd,requestedBy:s,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,failure:null,createdAt:r,updatedAt:r});return await a.put("reward_check",d,0,{parentId:i.targetId,status:d.status}),{kind:"reward_check",id:d.id,revision:d.revision}}c(Co,"queueRewardCheck");async function Po(a,e,t){let r=await x(a,"reward_check",e.checkId);if(r.revision!==e.expectedRevision)throw new me("reward_check",r.id,e.expectedRevision,r.revision);if(["completed","failed","cancelled"].includes(r.status))return{kind:"reward_check",id:r.id,revision:r.revision};let s=Se.parse({...r,revision:r.revision+1,status:r.status==="queued"?"cancelled":"cancelling",updatedAt:t});return await a.put("reward_check",s,r.revision,{parentId:r.reward.id,status:s.status}),{kind:"reward_check",id:s.id,revision:s.revision}}c(Po,"cancelRewardCheck");async function xo(a,e,t,r){let s=mn(e);if(s.contentHash!==e.expectedPreviewHash)throw new v("task_intake_preview_changed",409);if(new Set(e.recordIds).size!==e.recordIds.length)throw new v("task_intake_duplicate_selection",422);let i=e.recordIds.map(l=>{let f=s.records.find(p=>p.id===l);if(!f)throw new v("task_intake_record_missing",422,"Choose only valid records from the current preview.");return f}),n=`intake-${s.contentHash}`,o=[];for(let l of e.files){let f=0,p=0;do{let u=Math.min(f+131072,l.text.length);u<l.text.length&&l.text.charCodeAt(u-1)>=55296&&l.text.charCodeAt(u-1)<=56319&&u--;let T=ji({text:l.text.slice(f,u),path:`${n}/${l.path}.part-${String(p++).padStart(4,"0")}`,mediaType:"text/plain",visibility:"host_private"}),h=await a.get("asset",T.id,1);h?V(h,T.asset):await a.put("asset",T,0),o.push(T.asset),f=u}while(f<l.text.length)}let d=await a.get("source",n);if(!d){let l=Xa({schemaVersion:"openpond.rewardBinding.v1",id:`${n}-binding`,revision:1,sources:[],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[]),f=mt.parse(U({schemaVersion:"openpond.taskDefinition.v1",id:`${n}-definition`,revision:1,name:e.name,description:`Imported ${e.format} records. Labels and task admission remain separate.`,instructions:"Respond to the retained request using its supplied context.",category:"custom",familyNamespace:`intake-${e.format}`,inputSchema:{type:"object"},outputSchema:{type:"object"},rewardBinding:I(l),harness:null,contextRequirements:s.records.some(p=>p.needsContext)?["Review the imported history and configure its reusable input, tools and runtime before admitting tasks."]:[],execution:{policy:{policyVisibleFields:["input"],privilegedFields:["expectedOutput","evaluatorContext"],hiddenGraderRefs:[],connectedAppScopes:[]},environment:{protocolVersion:"openpond.environment.v1",kind:"text",entrypoint:"openpond.text.v1",stateful:!1,deterministicSeeds:!0,lifecycle:["create","reset","step","collect","destroy"],networkPolicy:"none",defaultTimeoutMs:3e4},tools:[],capabilities:[]}}));d=Ma.parse(U({schemaVersion:"openpond.learningSource.v1",id:n,revision:1,name:e.name,kind:"direct",taskDefinition:I(f),enabled:!0,allowedSplits:["train","validation","test","frozen_eval"],mapping:null,adapterVersion:`openpond.intake.${e.format}.v1`})),await a.put("binding",l,0),await a.put("definition",f,0),await a.put("source",d,0)}let m=[{kind:"source",id:d.id,revision:d.revision}];for(let l of i){let f=as("attempt",[l.id,l.sourceHash]),p=await a.get("evidence",Ce(d.id,l.id,f),1);m.push(await r(a,{action:"submit_example",operationId:e.operationId,example:Hi.parse({schemaVersion:"openpond.taskExample.v1",sourceId:d.id,idempotencyKey:as("record",[s.contentHash,l.id]),taskDefinition:d.taskDefinition,exampleId:l.id,attemptId:f,occurredAt:l.occurredAt??p?.submission.occurredAt??t,familyKey:l.familyKey,split:l.split,input:l.input,observedOutput:l.observedOutput,expected:l.expected,evaluatorContext:{intake:{format:s.format,uploadHash:s.contentHash,sourceHash:l.sourceHash,needsContext:l.needsContext,warnings:l.warnings,timestampOrigin:l.occurredAt?"source":"import_time",metadata:l.metadata}},assets:o,provenance:{sourceRecordRef:l.sourceId,mappingHash:null}})}))}return m}c(xo,"importTaskIntake");function vm(a,e={}){let t=e.now??(()=>new Date().toISOString());async function r(p,u){ge(u,16777216);let T=Ki.parse(u);$c(p,T);let h=T.action==="submit_example"?T.example:T.action==="submit_feedback"?T.feedback:null,g=h?y([T.action,h.sourceId,h.idempotencyKey]):Gi(p.actor.id,T.operationId),w=y(h?{action:T.action,value:h}:T);return a.transaction(p.scope,async R=>{let N=await R.operation(g);if(N){if(N.requestHash!==w)throw new v("learning_idempotency_conflict",409);return{operationId:T.operationId,resources:await Promise.all(N.resources.map(k=>x(R,k.kind,k.id,k.revision)))}}let _;switch(T.action){case"publish_checked_reward":{let k=await Ot(R,T.draft);if(k.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let A=k.baseRelease?await M(R,"reward",k.baseRelease):null,S=await x(R,"reward_check",T.checkId,T.checkRevision),P=Os(k,A,S),{contentHash:j,...H}=P.reward,O={action:"publish_resources",operationId:T.operationId,finalizeDraft:{draft:T.draft,targetKind:"reward",release:I(P.reward)},resources:[...P.assets.map(({contentHash:W,...D})=>({kind:"asset",expectedRevision:0,content:D})),{kind:"reward",expectedRevision:A?.revision??0,content:H}]};_=[];for(let W of O.resources)_.push(await s(R,{...W,action:"publish",operationId:T.operationId}));let q=await Is(R,O,_,t());q&&_.push(q);break}case"import_intake":_=await xo(R,T,t(),i);break;case"cancel_iteration":case"retry_iteration_dispatch":_=await vo(R,T,t());break;case"cancel_iteration_reservation":_=await dr(R,T,t());break;case"reserve_iteration":_=await Io(R,T,p.actor.id,t());break;case"queue_reward_check":_=[await Co(R,T,g,t(),p.actor.id)];break;case"cancel_reward_check":_=[await Po(R,T,t())];break;case"save_draft":_=[await Lo(R,T,t())];break;case"archive_draft":_=[await bo(R,T.draft,t())];break;case"publish":_=[await s(R,T)];break;case"publish_resources":{_=[];for(let k of T.resources)_.push(await s(R,{...k,action:"publish",operationId:T.operationId}));break}case"submit_example":_=[await i(R,T)];break;case"submit_feedback":_=[await n(R,T,p.actor)];break;case"apply_correction":_=await o(R,T,p.actor.id);break;case"resolve_feedback":_=[await d(R,T,p.actor.id)];break;case"queue_grade":_=[await m(R,T,g,p.actor.id)];break;case"cancel_grade":_=[await l(R,T)];break;case"review":_=[await f(R,T,p.actor.id)];break;case"seal_batch":_=await Ya(R,T,p.actor.id,t());break}if(T.action==="publish"||T.action==="publish_resources"){let k=await Is(R,T,_,t());k&&_.push(k)}return await R.saveOperation(g,{requestHash:w,resources:_}),{operationId:T.operationId,resources:await Promise.all(_.map(k=>x(R,k.kind,k.id,k.revision)))}})}c(r,"command");async function s(p,u){if(u.content.revision!==u.expectedRevision+1)throw new v("learning_publication_revision_invalid",422);let T;switch(u.kind){case"asset":{T=Da.parse(U(u.content));let h=await p.get("asset",T.id,1);if(h?.contentHash===T.contentHash)return oe("asset",h);break}case"reward":{T=xa(u.content),await Ao(p,T);let h=u.content.implementation,g=[...u.content.assets,..."verifierRef"in h?[h.verifierRef]:[],..."rubricRef"in h?[h.rubricRef]:[],..."inputContract"in h?[h.inputContract]:[]];for(let w of g){let R=await x(p,"asset",w.id,1);if(V(R,w),w.visibility==="policy")throw new v("reward_asset_visibility_invalid",422,"Reward source and rubrics must be private to the evaluator.")}break}case"binding":{u.content.recipeRef&&await M(p,"binding",u.content.recipeRef);let h=await Promise.all(u.content.sources.map(g=>M(p,"reward",g.reward)));T=Xa(u.content,h);break}case"definition":{await M(p,"binding",u.content.rewardBinding),T=mt.parse(U(u.content));break}case"source":{await M(p,"definition",u.content.taskDefinition),T=Ma.parse(U(u.content));break}case"policy":{let h=await M(p,"definition",u.content.taskDefinition);if(!C(h.rewardBinding,u.content.rewardBinding))throw new v("learning_policy_binding_mismatch",422);for(let g of u.content.sources){let w=await M(p,"source",g);if(!C(w.taskDefinition,u.content.taskDefinition))throw new v("learning_policy_source_definition_mismatch",422)}T=ts.parse(U(u.content));break}}return await p.put(u.kind,T,u.expectedRevision,u.kind==="policy"?{parentId:u.content.modelProjectId}:void 0),u.kind==="policy"&&await Oo(p,ts.parse(T),t()),oe(u.kind,T)}c(s,"publish");async function i(p,u){let T=await x(p,"source",u.example.sourceId),h=Bi(T,u.example);await M(p,"definition",h.taskDefinition);let g=Ce(h.sourceId,h.exampleId,h.attemptId),w=await p.get("evidence",g,1);if(w){let{idempotencyKey:_,...k}=w.submission,{idempotencyKey:A,...S}=h;if(y(k)!==y(S))throw new v("task_evidence_identity_conflict",409);return oe("evidence",w)}let R=es.parse(U(Zr.parse({schemaVersion:"openpond.taskEvidence.v1",id:g,revision:1,source:I(T),submission:h,supersedes:null,correctionFeedbackId:null,receivedAt:t()})));await p.put("evidence",R,0,{parentId:T.id});let N;do{let _=await p.list("feedback",{parentId:R.id,status:"pending_example",limit:100,...N?{afterId:N}:{}});for(let k of _.items){let A=Wt.parse({...k,revision:k.revision+1,status:"pending_review",evidence:I(R)});await p.put("feedback",A,k.revision,{parentId:R.id,status:A.status})}N=_.nextCursor??void 0}while(N);return oe("evidence",R)}c(i,"submit");async function n(p,u,T){let h=await x(p,"source",u.feedback.sourceId);if(!h.enabled)throw new v("learning_source_disabled",409);let g=Ce(h.id,u.feedback.exampleId,u.feedback.attemptId),w=await p.get("evidence",g);if(u.feedback.value.schemaVersion==="openpond.taskRating.v1"&&(!w||w.contentHash!==u.feedback.expectedEvidenceHash||!w.submission.observedOutput))throw new v("task_rating_evidence_stale",409,"Open the current observed response before submitting a rating.");let R=Wt.parse({schemaVersion:"openpond.taskFeedbackRecord.v1",id:`feedback-${y([h.id,u.feedback.idempotencyKey])}`,submission:u.feedback,status:w?"pending_review":"pending_example",evidence:w?I(w):null,createdAt:t(),revision:1,submittedBy:{id:T.id,role:T.role,sourceId:T.sourceId??null}});return await p.put("feedback",R,0,{parentId:g,status:R.status}),oe("feedback",R)}c(n,"feedback");async function o(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);let g=await Yt(p,u.evidence);if(Ce(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==g.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==g.contentHash)throw new v("task_feedback_evidence_mismatch",409);let R=await M(p,"definition",g.submission.taskDefinition),N={...g.submission},{kind:_,value:k}=h.submission;if(_==="ground_truth_correction"){if(!lt(R.outputSchema,k).valid)throw new v("task_corrected_expected_schema_invalid",422);N.expected=k}else if(_==="input_correction"){if(!lt(R.inputSchema,k).valid)throw new v("task_corrected_input_schema_invalid",422);N.input=k}else if(_==="family_resolution"){if(typeof k.familyKey!="string"||!k.familyKey.trim())throw new v("task_family_resolution_invalid",422);N.familyKey=k.familyKey}else throw new v("task_feedback_requires_target_review",422);let{contentHash:A,...S}=g,P=es.parse(U(Zr.parse({...S,revision:g.revision+1,submission:N,supersedes:I(g),correctionFeedbackId:h.id,receivedAt:t()}))),j=Wt.parse({...h,revision:h.revision+1,status:"applied",evidence:I(P),review:{actorId:T,decision:null,note:"Applied as a corrected evidence revision.",resolvedAt:t()}});return await p.put("evidence",P,g.revision,{parentId:N.sourceId}),await p.put("feedback",j,h.revision,{parentId:g.id,status:j.status}),[oe("evidence",P),oe("feedback",j)]}c(o,"correct");async function d(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(h.revision!==u.expectedRevision)throw new me("feedback",h.id,u.expectedRevision,h.revision);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);if(u.disposition==="applied"&&!u.decision)throw new v("task_feedback_decision_required");if(u.decision){let w=await M(p,"decision",u.decision),R=await x(p,"decision",w.id);if(!C(I(R),u.decision))throw new v("task_admission_revision_stale",409);let N=await Yt(p,w.evidence);if(Ce(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==N.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==N.contentHash)throw new v("task_feedback_evidence_mismatch",409);if(u.disposition==="applied"){if(w.taskAdmissibility==="pending")throw new v("task_feedback_decision_pending");if(h.submission.kind==="target_correction"){if(w.targetApproval!=="approved"||y(w.approvedTarget)!==y(h.submission.value))throw new v("task_feedback_target_not_approved")}else if(h.submission.kind!=="outcome")throw new v("task_feedback_requires_evidence_correction")}}let g=Wt.parse({...h,revision:h.revision+1,status:u.disposition,review:{actorId:T,decision:u.decision,note:u.note,resolvedAt:t()}});return await p.put("feedback",g,h.revision,{parentId:Ce(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId),status:g.status}),oe("feedback",g)}c(d,"resolveFeedback");async function m(p,u,T,h){let g=await Yt(p,u.evidence),w=await M(p,"definition",g.submission.taskDefinition);if(!Ha(g,w).taskReady)throw new v("task_evidence_not_ready",422);let R=u.target==="observed"?g.submission.observedOutput:u.proposedTarget;if(R===null)throw new v("task_grade_output_required",422);if(u.target==="observed"&&u.proposedTarget!==null)throw new v("observed_grade_cannot_replace_output",422);let N=Ae.parse({schemaVersion:"openpond.taskGradeRun.v1",id:`grade-${T}`,revision:1,evidence:I(g),binding:w.rewardBinding,target:u.target,output:R,status:"queued",composition:null,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,timeoutMs:u.timeoutMs,maximumSpendUsd:u.maximumSpendUsd,requestedBy:h,failure:null,createdAt:t(),updatedAt:t()});return await p.put("grade",N,0,{parentId:g.id,status:N.status}),oe("grade",N)}c(m,"queueGrade");async function l(p,u){let T=await x(p,"grade",u.gradeId);if(T.revision!==u.expectedRevision)throw new me("grade",T.id,u.expectedRevision,T.revision);if(["completed","failed","cancelled"].includes(T.status))return oe("grade",T);let h=Ae.parse({...T,revision:T.revision+1,status:T.status==="queued"?"cancelled":"cancelling",updatedAt:t()});return await p.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),oe("grade",h)}c(l,"cancelGrade");async function f(p,u,T){let h=await Yt(p,u.evidence),g=await M(p,"definition",h.submission.taskDefinition),w=Ha(h,g),R=`decision-${h.id}`,N=await p.get("decision",R),_=await Xo(p,u.observedGradeId,h,"observed"),k=await Xo(p,u.targetGradeId,h,"proposed_target"),A=_?.training.status==="scored"?_.training:_?.evaluation,S=Fi.parse(U(Ui.parse({schemaVersion:"openpond.taskAdmissionDecision.v1",id:R,revision:u.expectedRevision+1,evidence:I(h),supersedes:N?I(N):null,actor:{kind:"human",id:T,policy:null},evidenceValidity:w.evidenceValidity,taskAdmissibility:u.disposition,observedQuality:A?.status==="scored"?A.passed?"passed":"failed":_?"unavailable":"unscored",targetApproval:u.targetApproval,approvedTarget:u.approvedTarget,grade:_,targetGrade:k,note:u.note,decidedAt:t()})));return u.disposition==="approved"&&qi({decision:S,evidence:h,definition:g,purpose:u.targetApproval==="approved"?"supervised_training":"reward_training"}),await p.put("decision",S,u.expectedRevision,{parentId:h.id,status:S.taskAdmissibility}),oe("decision",S)}return c(f,"review"),{command:r,async inspectTaskQueue(p,u=null){da(p);let T=Pe.parse({action:"inspect_task_queue",scope:p.scope,modelProjectId:u});if(T.action!=="inspect_task_queue")throw new v("learning_request_invalid",400);return a.transaction(p.scope,h=>dn(h,T.modelProjectId,t()))},async inspectPolicy(p,u){da(p);let T=ut.parse(u);return a.transaction(p.scope,h=>nn(h,T,p.actor.id,t()))},async inspectEvidence(p,u){da(p);let T=ut.parse(u);return a.transaction(p.scope,async h=>{let g=await M(h,"evidence",T),w=await M(h,"definition",g.submission.taskDefinition);return{evidence:I(g),definition:I(w),inspection:Ha(g,w)}})},async get(p,u,T,h){return da(p),a.transaction(p.scope,g=>x(g,u,T,h))},async list(p,u,T={}){if(da(p),T.reviewState!==void 0&&(u!=="evidence"||!["inbox","reviewed"].includes(T.reviewState)))throw new v("learning_review_filter_invalid",400);let h=Math.max(1,Math.min(100,Math.trunc(T.limit??50)));return a.transaction(p.scope,g=>g.list(u,{...T,limit:h}))}}}c(vm,"createLearningService");async function Xo(a,e,t,r){if(e===null)return null;let s=await x(a,"grade",e);if(s.status!=="completed"||!s.composition||s.target!==r||!C(s.evidence,I(t)))throw new v("task_grade_not_applicable",422);let i=await M(a,"definition",t.submission.taskDefinition);return Ua(s.composition,t,i,s.output),s.composition}c(Xo,"gradeResult");function oe(a,e){return{kind:a,id:e.id,revision:e.revision}}c(oe,"pointer");function da(a){if(!a.scope.trim()||!a.actor.id.trim()||a.actor.role==="source")throw new v("learning_read_not_authorized",403)}c(da,"authorizeRead");function $c(a,e){if(!a.scope.trim()||!a.actor.id.trim())throw new v("learning_scope_required",400);let t=e.action==="publish"?[e]:e.action==="publish_resources"?e.resources:[];if(a.actor.role!=="reviewer"&&t.some(r=>r.kind==="policy"&&r.content.enabled&&r.content.automation.train&&r.content.trigger.kind!=="manual"))throw new v("learning_review_not_authorized",403);if(a.actor.role==="source"){let r=e.action==="submit_example"?e.example.sourceId:e.action==="submit_feedback"?e.feedback.sourceId:null;if(!r||r!==a.actor.sourceId)throw new v("learning_source_not_authorized",403)}if(["review","apply_correction","resolve_feedback","seal_batch","reserve_iteration","cancel_iteration_reservation","cancel_iteration","retry_iteration_dispatch"].includes(e.action)&&a.actor.role!=="reviewer")throw new v("learning_review_not_authorized",403)}c($c,"authorize");function xm(a,e,t){let r=t.now??(()=>new Date().toISOString()),s=new Map,i=c((d,m)=>JSON.stringify([d,m]),"key");async function n(d,m){let l=await a.transaction(d,async u=>{let T=await x(u,"grade",m);if(["completed","failed","cancelled"].includes(T.status))return{acquired:!1,run:T};if(T.leaseExpiresAt!==null&&Date.parse(T.leaseExpiresAt)>Date.parse(r()))return{acquired:!1,run:T};let h=Ae.parse({...T,revision:T.revision+1,status:T.status==="cancelling"?"cancelling":"running",leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(r())+T.timeoutMs+3e4).toISOString(),attemptCount:T.attemptCount+1,updatedAt:r()});return await u.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),{acquired:!0,run:h}});if(!l.acquired)return l.run;if(l.run.status==="cancelling"){let u=await e.cancel({scope:d,run:l.run});return o(d,l.run,u?{status:"cancelled",composition:null,failure:null}:{status:"cancelling",composition:null,failure:null})}let f=new AbortController;s.set(i(d,m),f);let p=setTimeout(()=>f.abort(new Error("task_grade_timeout")),l.run.timeoutMs);try{let u=await a.transaction(d,async h=>{let g=await M(h,"evidence",l.run.evidence),w=await M(h,"definition",g.submission.taskDefinition),R=await M(h,"binding",l.run.binding),N=await Promise.all(R.sources.map(_=>M(h,"reward",_.reward)));return{evidence:g,definition:w,binding:R,rewards:N}});f.signal.throwIfAborted();let T=await e.execute({scope:d,run:l.run,...u,signal:f.signal});return f.signal.throwIfAborted(),Ua(T,u.evidence,u.definition,l.run.output),await o(d,l.run,{status:"completed",composition:T,failure:null})}catch(u){if(f.signal.aborted){if(!await e.cancel({scope:d,run:l.run}))return o(d,l.run,{status:"cancelling",composition:null,failure:"Execution cancellation is awaiting owner confirmation."});if(f.signal.reason instanceof Error&&f.signal.reason.message==="task_grade_cancel_requested")return o(d,l.run,{status:"cancelled",composition:null,failure:null})}return await o(d,l.run,{status:"failed",composition:null,failure:u instanceof Error?u.message:"Task grading failed."})}finally{clearTimeout(p),s.delete(i(d,m))}}c(n,"run");async function o(d,m,l){return a.transaction(d,async f=>{let p=await x(f,"grade",m.id);if(p.leaseOwner!==t.workerId||p.attemptCount!==m.attemptCount||["completed","failed","cancelled"].includes(p.status))return p;let u=l.status,T=Ae.parse({...p,...l,status:u,composition:u==="completed"?l.composition:null,revision:p.revision+1,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(r())+5e3).toISOString():null,updatedAt:r()});return await f.put("grade",T,p.revision,{parentId:p.evidence.id,status:T.status}),T})}return c(o,"finish"),{run:n,requestCancellation(d,m){s.get(i(d,m))?.abort(new Error("task_grade_cancel_requested"))},async drain(d,m=20){let l=await a.transaction(d,async p=>{let u=[];for(let T of["queued","running","cancelling"])u.push(...(await p.list("grade",{status:T,limit:Math.max(1,Math.min(100,m))})).items);return u}),f=[];for(let p of l)f.push(await n(d,p.id));return f}}}c(xm,"createTaskGradeWorker");function Mo(a){let e=a.now??(()=>new Date().toISOString());return{transaction(t,r){return a.repository.transaction(a.scope,async s=>{let i=await x(s,"reward_check",a.run.id);if(i.snapshotHash!==a.run.snapshotHash)throw new Error("model_judge_budget_snapshot_changed");if(t==="dispatch"&&(i.status!=="running"||!i.leaseOwner||i.leaseOwner!==a.run.leaseOwner||i.attemptCount!==a.run.attemptCount||!i.leaseExpiresAt||Date.parse(i.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let n=i.judgeCalls??[],o=r({maximumSpendUsd:i.maximumSpendUsd,calls:n});if(y(o.calls)!==y(n)){let d=Se.parse({...i,revision:i.revision+1,judgeCalls:o.calls,updatedAt:e()});await s.put("reward_check",d,i.revision,{parentId:i.reward.id,status:i.status})}return o.result})}}}c(Mo,"createRewardCheckJudgeBudgetStore");function Ym(a){let e=a.now??(()=>new Date().toISOString()),t=c(r=>y([r.evidence,r.binding,r.target,r.output]),"identity");return{transaction(r,s){return a.repository.transaction(a.scope,async i=>{let n=await x(i,"grade",a.run.id);if(t(n)!==t(a.run))throw new Error("model_judge_budget_snapshot_changed");if(r==="dispatch"&&(n.status!=="running"||!n.leaseOwner||n.leaseOwner!==a.run.leaseOwner||n.attemptCount!==a.run.attemptCount||!n.leaseExpiresAt||Date.parse(n.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let o=n.judgeCalls??[],d=s({maximumSpendUsd:n.maximumSpendUsd,calls:o});if(y(d.calls)!==y(o)){let m=Ae.parse({...n,revision:n.revision+1,judgeCalls:d.calls,updatedAt:e()});await i.put("grade",m,n.revision,{parentId:n.evidence.id,status:n.status})}return d.result})}}}c(Ym,"createTaskGradeJudgeBudgetStore");function Do(a){return{runtime:a.runtime,async execute(e){return zi({reward:e.reward,fixture:e.fixture,signal:e.signal,modelJudge:e.reward.implementation.kind==="model_judge"?await a.createModelJudge?.(e):void 0,customVerifier:c(async({grader:t,task:r,evidence:s})=>{let i=e.assets.find(d=>d.id===t.verifierRef.id);if(!i)throw new Error("reward_check_source_missing");let n=V(i,t.verifierRef),o=await a.executeJavaScript({source:n,exportName:t.exportName,runtime:t.runtime,signal:e.signal,timeoutMs:Math.min(t.timeoutMs,e.run.timeoutMs),value:{task:r,attempt:s,input:r.input,output:s.output,expectedOutput:r.expectedOutput,evaluatorContext:e.fixture.evaluatorContext,infrastructureError:s.infrastructureError??null}});return{score:o.score,passed:o.passed,rewardEligible:t.rewardEligible,failureClass:null,feedback:[o.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:o.evidenceRefs}},"customVerifier")})},async cancel(e){return a.createModelJudge?a.cancelModelJudge?.(e)??!1:!0}}}c(Do,"createIsolatedRewardFixtureExecutor");function iT(a){return Do({runtime:a.runtime,executeJavaScript:a.executeJavaScript,async cancelModelJudge(e){let t=await a.repository.transaction(e.scope,r=>x(r,"reward_check",e.run.id));return t.judgeCalls?.some(r=>r.status==="reserved")?!1:a.provider.cancel({...e,run:t})},async createModelJudge(e){let t=Mo({repository:a.repository,scope:e.scope,run:e.run});return Xi({async readRubric(r){let s=e.assets.find(i=>i.id===r.id);if(!s)throw new Error("reward_check_rubric_missing");return V(s,r)},async executeBudgeted(r,s){let i=await a.provider.prepare(r,{scope:e.scope,run:e.run});return Mi({store:t,maximumCharge:c(()=>i.maximumChargeUsd,"maximumCharge"),dispatch:c((o,d)=>i.dispatch(d),"dispatch")})(`fixture-${y([e.fixture,e.reward.contentHash])}`,r,s)}})}})}c(iT,"createBudgetedRewardFixtureExecutor");function mT(a,e,t){let r=Vi.parse(e.runtime),s=t.now??(()=>new Date().toISOString()),i=new Map,n=c((f,p)=>JSON.stringify([f,p]),"key"),o=c(f=>["completed","failed","cancelled"].includes(f.status),"terminal");async function d(f,p){let u=await a.transaction(f,async g=>{let w=await x(g,"reward_check",p);if(o(w)||w.leaseExpiresAt&&Date.parse(w.leaseExpiresAt)>Date.parse(s()))return{acquired:!1,run:w};let R=Se.parse({...w,revision:w.revision+1,status:w.status==="cancelling"?"cancelling":"running",runtime:w.status==="cancelling"?w.runtime:r,leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(s())+w.timeoutMs+3e4).toISOString(),attemptCount:w.attemptCount+1,results:w.results,matchesExpectations:null,failure:null,updatedAt:s()});return await g.put("reward_check",R,w.revision,{parentId:R.reward.id,status:R.status}),{acquired:!0,run:R}});if(!u.acquired)return u.run;if(u.run.status==="cancelling"){let g=await e.cancel({scope:f,run:u.run});return l(f,u.run,g?"cancelled":"cancelling",null)}let T=new AbortController;i.set(n(f,p),T);let h=setTimeout(()=>T.abort(new Error("reward_check_timeout")),u.run.timeoutMs);try{let g=await a.transaction(f,async w=>{let R=await M(w,"draft",u.run.draft);if(R.targetKind!=="reward")throw new Error("reward_check_draft_kind_invalid");let N=R.baseRelease?await M(w,"reward",R.baseRelease):null,_=ft(R,N);if(_.snapshotHash!==u.run.snapshotHash||!C(I(_.reward),u.run.reward)||y(_.fixtureRefs)!==y(u.run.fixtureRefs))throw new Error("reward_check_snapshot_mismatch");return _});for(let w of g.fixtures){T.signal.throwIfAborted();let R=u.run.results.find(k=>k.fixture.id===w.id);if(R){if(R.fixture.contentHash!==y(w)||!C(R.result.reward,u.run.reward)||R.result.graderId!==g.reward.id||R.result.role!=="evaluation")throw new Error("reward_check_retained_fixture_mismatch");continue}let N=Pi.parse(await e.execute({...g,scope:f,run:u.run,fixture:w,signal:T.signal}));if(N.graderId!==g.reward.id||!C(N.reward,u.run.reward)||N.role!=="evaluation")throw new Error("reward_check_result_identity_mismatch");let _=await a.transaction(f,async k=>{let A=await x(k,"reward_check",p);if(!m(A,u.run)||o(A))return A;let S=Se.parse({...A,revision:A.revision+1,results:[...A.results,Wa(w,N)],updatedAt:s()});return await k.put("reward_check",S,A.revision,{parentId:A.reward.id,status:A.status}),S});if(!m(_,u.run)||o(_))return _;_.status==="cancelling"&&T.abort(new Error("reward_check_cancel_requested"))}return T.signal.throwIfAborted(),await l(f,u.run,"completed",null)}catch(g){if(T.signal.aborted){if(!await e.cancel({scope:f,run:u.run}))return l(f,u.run,"cancelling","Execution cleanup is awaiting owner confirmation.");if(T.signal.reason instanceof Error&&T.signal.reason.message==="reward_check_cancel_requested")return l(f,u.run,"cancelled",null)}return await l(f,u.run,"failed",g instanceof Error?g.message:"Reward checks failed.")}finally{clearTimeout(h),i.delete(n(f,p))}}c(d,"run");function m(f,p){return f.leaseOwner===t.workerId&&f.attemptCount===p.attemptCount}c(m,"owns");async function l(f,p,u,T){return a.transaction(f,async h=>{let g=await x(h,"reward_check",p.id);if(!m(g,p)||o(g))return g;if(u==="completed"&&g.results.length!==g.fixtureRefs.length)throw new Error("reward_check_results_incomplete");let w=Se.parse({...g,revision:g.revision+1,status:u,failure:T,matchesExpectations:u==="completed"?g.results.every(R=>R.matchesExpectation):null,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(s())+5e3).toISOString():null,updatedAt:s()});return await h.put("reward_check",w,g.revision,{parentId:g.reward.id,status:w.status}),w})}return c(l,"finish"),{run:d,requestCancellation(f,p){i.get(n(f,p))?.abort(new Error("reward_check_cancel_requested"))},async drain(f,p=20){let u=await a.transaction(f,async h=>{let g=[];for(let w of["queued","running","cancelling"])g.push(...(await h.list("reward_check",{status:w,limit:Math.max(1,Math.min(100,p))})).items);return g}),T=[];for(let h of u)T.push(await d(f,h.id));return T}}}c(mT,"createRewardCheckWorker");var Jc=we.parse({capabilities:[{id:"filesystem.workspace",portability:"host_adapter",required:!0,scopes:["inputs:read","work:read-write","outputs:write"]},{id:"network.web-read",portability:"host_adapter",required:!0,scopes:["search","fetch"]},{id:"artifact.pdf",portability:"host_adapter",required:!0,scopes:["create","render","inspect"]},{id:"artifact.spreadsheet",portability:"host_adapter",required:!0,scopes:["create","calculate","inspect"]}],contentHash:"20e247cec268ecb6380bc7af204abc9056f7eaa90e1e85aa5e11544f2506888d",environment:{defaultTimeoutMs:9e5,deterministicSeeds:!1,entrypoint:"openpond-work-v1",kind:"work",lifecycle:["create","reset","step","collect","destroy"],networkPolicy:"declared_read_only",protocolVersion:"openpond.environment.v1",stateful:!0},graders:[{hardGate:!0,id:"task-output-contract",kind:"custom_verifier",networkPolicy:"none",privileged:!0,rewardEligible:!0,timeoutMs:3e4,verifierRef:{contentHash:"31cda791adf4e55131ee49651431432b429f1404dbc4fa610a3fe1466574f270",id:"verifiers-taskset-output-verifier-mjs",mediaType:"text/javascript",path:"verifiers/taskset-output-verifier.mjs",sizeBytes:2994,visibility:"verifier"},version:"1",weight:1}],id:"harness-refiner-20260818-v2",metadata:{adaptationSplit:"validation",benchmark:"harness-refiner",frozenEvaluationSplit:"frozen_eval",modelJudgeRole:"supplementary_uncalibrated_not_executed",orderSeed:"harness-refiner-20260818-order-v1",primaryMetric:"paired_verified_reward",protocolVersion:"3",qualityPolicy:"complete_frozen_cohort",refinementMode:"sequential_product_lifecycle",resultSchemaVersion:"openpond.harnessRefinerPublicResult.v2",secondaryMetrics:["paired_foreground_provider_tokens"],supplementaryModelJudge:{calibrationStatus:"pending",executable:!1,id:"task-quality-judge",rewardEligible:!1,rubricRef:{contentHash:"455b3697c0617333a34b6521f167760fb8ae7e286059fa2ec327a5c97e66a2b3",id:"rubrics-task-quality-md",mediaType:"text/markdown",path:"rubrics/task-quality.md",sizeBytes:1496,visibility:"verifier"},version:"1"},toolDeclarationSource:"openpond-production-model-tool-definitions",trainingSideEffect:!1},policy:{connectedAppScopes:[],hiddenGraderRefs:["rubrics-task-quality-md","verifiers-taskset-output-verifier-mjs"],policyVisibleFields:["input"],privilegedFields:["expectedOutput"]},revision:2,schemaVersion:"openpond.tasksetRelease.v2",tasks:[{artifactRefs:[{contentHash:"8879f8e31a916f165724a3c3e3e57db5baa858cd170ac6799064aa49bc623aa4",id:"fixtures-adaptation-board-launch-md",mediaType:"text/markdown",path:"fixtures/adaptation-board-launch.md",sizeBytes:642,visibility:"policy"}],clusterKey:"northstar-launch-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["three decision options","owners and dates","confirmed facts","open legal and finance gates"],mustNot:["present an open gate as approved","invent a recommended decision"],validation:["structural","visual"]},id:"adaptation-board-launch-brief",input:{attachments:["adaptation-board-launch.md"],prompt:"Please turn the attached Northstar launch packet into a polished two-page PDF decision brief for the executive meeting. Make the three options, owners, dates, confirmed facts, open gates, and risks easy to scan. The source records no final choice, so do not select, recommend, or imply a preferred option. Visually check the finished PDF before you send it back."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-adaptation-board-launch-brief",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"adaptation-board-launch-brief.pdf",schemaRef:null}],split:"validation",tags:["artifact-verification","decision-brief","adaptation"]},{artifactRefs:[{contentHash:"a3d44bb123a242d78d0f60d4d8ad352e499bef677eaf816a19d07359a172743f",id:"fixtures-adaptation-latency-incident-md",mediaType:"text/markdown",path:"fixtures/adaptation-latency-incident.md",sizeBytes:733,visibility:"policy"}],clusterKey:"checkout-latency-incident-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["incident window","confirmed impact","recovery","hypotheses labeled as hypotheses","unknowns","follow-up owners"],mustNot:["state either hypothesis as root cause","claim unresolved carts were recovered"],validation:["structural","visual"]},id:"adaptation-latency-incident-review",input:{attachments:["adaptation-latency-incident.md"],prompt:"Create a concise PDF incident review from the attached checkout latency packet. Clearly separate confirmed observations, recovery actions, hypotheses, unknowns, customer impact, and follow-up owners. Check that the rendered PDF is readable and complete."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-adaptation-latency-incident-review",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"adaptation-latency-incident-review.pdf",schemaRef:null}],split:"validation",tags:["artifact-verification","incident-review","adaptation"]},{artifactRefs:[{contentHash:"63bca96753ae1491a45ba13e1a06cfb48973cfbe4f392e8f181e7b9648fd9db4",id:"fixtures-adaptation-program-budget-md",mediaType:"text/markdown",path:"fixtures/adaptation-program-budget.md",sizeBytes:649,visibility:"policy"}],clusterKey:"harbor-program-budget-packet",expectedOutput:{deliverable:"spreadsheet",deterministicContract:{},mustInclude:["summary sheet","detail sheet","formula-driven full-year forecast","formula-driven variance","owner column","overrun flag"],mustNot:["replace formulas with typed totals","reverse the variance sign"],validation:["structural","test"]},id:"adaptation-program-budget-workbook",input:{attachments:["adaptation-program-budget.md"],prompt:"Build an Excel workbook from the attached Harbor youth program budget. Include a one-page summary and a detail sheet with formulas for full-year forecast and variance, clearly flag forecast overruns, preserve the listed owners, and verify the calculations before returning it."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-adaptation-program-budget-workbook",requiredOutputs:[{maxBytes:1e7,mediaType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",metadata:{validationKinds:["structural","test"]},path:"adaptation-program-budget-workbook.xlsx",schemaRef:null}],split:"validation",tags:["artifact-verification","spreadsheet","adaptation"]},{artifactRefs:[],clusterKey:"northwind-invoice-correction-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["intentional error","deliberate error"],maxWords:130,requiredAny:[["no payment","not due"]],requiredText:["inv-1842","120","102","august 14","accounts@example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","INV-1842","120 seats instead of 102","August 14","no payment due until corrected","accounts@example.com"],mustNot:["suggest the error was intentional","exceed 130 words","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-invoice-correction-email",input:{attachments:[],prompt:"Draft a courteous email to Northwind Labs explaining that invoice INV-1842 incorrectly lists 120 seats instead of 102. A corrected invoice will arrive by August 14, no payment is due until it arrives, and billing questions should go to accounts@example.com. Keep it under 130 words and do not suggest the error was intentional."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-invoice-correction-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[],clusterKey:"nextjs-security-current-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["affected"],["fixed","patched"],["checked","as of"],["version and configuration","version or configuration","exact version"]]},mustInclude:["official advisory links","affected and fixed versions","date checked","limits on exposure inference"],mustNot:["declare exposure without project version and configuration","use an uncited vulnerability list"],validation:[]},id:"adaptation-nextjs-security-audit",input:{attachments:[],prompt:"Audit the currently supported Next.js release lines for security advisories published in the last twelve months. Use primary sources, explain which versions are affected and fixed, avoid inferring that a project is vulnerable without its exact version and configuration, and give me a concise linked report with the date checked."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-nextjs-security-audit",requiredOutputs:[],split:"validation",tags:["research-efficiency","primary-sources","security","adaptation"]},{artifactRefs:[],clusterKey:"juniper-workshop-reschedule-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["venue caused","venue's fault"],maxWords:120,requiredAny:[["facilitator","presenter"],["registration","registrations"]],requiredText:["september 10","2:00","et","recording","events@example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","September 10","2:00 p.m. ET","facilitator unavailable","registrations carry over","recording","events@example.com"],mustNot:["blame the venue","exceed 120 words","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-workshop-reschedule-email",input:{attachments:[],prompt:"Draft a warm email to Juniper workshop registrants explaining that the September 3 session is moving to September 10 at 2:00 p.m. ET because the facilitator is unavailable. Existing registrations carry over, a recording will be shared, and questions should go to events@example.com. Keep it under 120 words and do not imply the venue caused the change."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-workshop-reschedule-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[],clusterKey:"boston-dc-accessibility-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["wheelchair","accessible","accessibility"],["outbound"],["return"],["disruption","service alert"],["checked","as of"],["confirm","confirmation"]],requiredText:["september 17","september 19"]},mustInclude:["official operator sources","outbound and return plan","accessibility details","disruption check","time checked","items needing confirmation"],mustNot:["guarantee availability not confirmed by booking","hide access limitations"],validation:[]},id:"adaptation-accessible-boston-dc-plan",input:{attachments:[],prompt:"Plan a wheelchair-accessible train trip from Boston to Washington, DC for September 17, 2026, returning September 19. Verify accessibility and disruption information from official sources, distinguish facts from anything that still needs confirmation, include direct links and the time checked, and keep the answer practical and concise."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-accessible-boston-dc-plan",requiredOutputs:[],split:"validation",tags:["research-efficiency","current-information","travel","adaptation"]},{artifactRefs:[],clusterKey:"chatgpt-x-reddit-public-sample",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["positive"],["negative"],["anecdote","anecdotal"],["pattern","recurring"],["sampling","sample"],["limitation","access"]]},mustInclude:["links to public examples","dates","positive experiences","negative experiences","pattern versus anecdote","sampling limitations"],mustNot:["post or interact","represent a convenience sample as representative sentiment"],validation:[]},id:"adaptation-chatgpt-public-experiences",input:{attachments:[],prompt:"Research what people have publicly said about using ChatGPT on X and Reddit during the last thirty days. Give me a concise, linked summary of recurring positive and negative experiences, separate patterns from anecdotes, include dates, and explain any platform-access or sampling limitations. Do not post or interact with anyone."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-chatgpt-public-experiences",requiredOutputs:[],split:"validation",tags:["research-efficiency","current-information","social-research","adaptation"]},{artifactRefs:[],clusterKey:"acme-launch-delay-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["testing failed","test failed","compensation"],maxWords:140,requiredAny:[["accessibility testing","accessibility test"],["pilot access"]],requiredText:["august 27","august 22","pilot-support@example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","August 27","accessibility testing incomplete","August 22 expectation","pilot access remains","support email"],mustNot:["say testing failed","exceed 140 words","invent compensation","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-launch-delay-email",input:{attachments:[],prompt:"Draft a calm email to the Acme pilot customers explaining that the August 20 launch is moving to August 27 because final accessibility testing is not complete. Testing is expected to finish August 22, existing pilot access remains available, and questions should go to pilot-support@example.com. Keep it under 140 words and do not imply the test has failed."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-launch-delay-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[],clusterKey:"cirrus-service-window-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["zero interruption","no interruption"],maxWords:125,requiredAny:[["read-only","read only"],["alerts"],["no data loss"]],requiredText:["august 18","1:00","2:00","utc","status.example.com"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","August 18","1:00 to 2:00 UTC","dashboard read-only","alerts continue","no data loss expected","status.example.com"],mustNot:["promise zero interruption","exceed 125 words","return only a checklist or file path instead of the message"],validation:[]},id:"adaptation-service-window-email",input:{attachments:[],prompt:"Draft a calm email to Cirrus customers about planned maintenance on August 18 from 1:00 to 2:00 UTC. The dashboard will be read-only, alerts will continue, no data loss is expected, and updates will appear at status.example.com. Keep it under 125 words and do not promise that there will be zero interruption."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-adaptation-service-window-email",requiredOutputs:[],split:"validation",tags:["constraint-following","direct-deliverable","communication","adaptation"]},{artifactRefs:[{contentHash:"cb3aec594b140129ebd872c427053ba63a303cc36d160448afc9ed1a0289d3ca",id:"fixtures-frozen-clinic-relocation-md",mediaType:"text/markdown",path:"fixtures/frozen-clinic-relocation.md",sizeBytes:652,visibility:"policy"}],clusterKey:"riverside-clinic-relocation-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["three opening options","owners and dates","confirmed facts","permit and parking gates","delivery risk"],mustNot:["present either approval as complete","invent a chosen opening option"],validation:["structural","visual"]},id:"frozen-clinic-relocation-brief",input:{attachments:["frozen-clinic-relocation.md"],prompt:"Please turn the attached Riverside clinic relocation packet into a polished two-page PDF decision brief. Make the opening options, owners, dates, confirmed facts, unresolved approvals, and delivery risk easy to scan, and visually check the finished PDF before returning it."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-frozen-clinic-relocation-brief",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"frozen-clinic-relocation-brief.pdf",schemaRef:null}],split:"frozen_eval",tags:["artifact-verification","decision-brief","frozen-eval"]},{artifactRefs:[{contentHash:"80aad04ac67682165f098884fd1a86e9fb3ef15d2da3124401308dd23884b612",id:"fixtures-frozen-payment-incident-md",mediaType:"text/markdown",path:"fixtures/frozen-payment-incident.md",sizeBytes:672,visibility:"policy"}],clusterKey:"subscription-renewal-incident-packet",expectedOutput:{deliverable:"pdf",deterministicContract:{},mustInclude:["incident window","attempt and timeout counts","recovery","hypothesis label","33 unresolved accounts","follow-up owners"],mustNot:["state the certificate hypothesis as confirmed","claim all accounts resolved"],validation:["structural","visual"]},id:"frozen-payment-incident-review",input:{attachments:["frozen-payment-incident.md"],prompt:"Create a concise PDF incident review from the attached subscription renewal incident packet. Separate confirmed impact and recovery from the root-cause hypothesis and unresolved customer accounts, preserve the owners, and check the rendered PDF for readability and completeness."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-frozen-payment-incident-review",requiredOutputs:[{maxBytes:1e7,mediaType:"application/pdf",metadata:{validationKinds:["structural","visual"]},path:"frozen-payment-incident-review.pdf",schemaRef:null}],split:"frozen_eval",tags:["artifact-verification","incident-review","frozen-eval"]},{artifactRefs:[{contentHash:"c58b740d57b031cfe22d475d30b39a1a49a43820f1840a1d8054731cef58c8e8",id:"fixtures-frozen-grant-budget-md",mediaType:"text/markdown",path:"fixtures/frozen-grant-budget.md",sizeBytes:661,visibility:"policy"}],clusterKey:"greenway-grant-budget-packet",expectedOutput:{deliverable:"spreadsheet",deterministicContract:{},mustInclude:["summary sheet","detail sheet","formula-driven full-year forecast","formula-driven variance","owner column","overrun flag"],mustNot:["replace formulas with typed totals","reverse the variance sign"],validation:["structural","test"]},id:"frozen-grant-budget-workbook",input:{attachments:["frozen-grant-budget.md"],prompt:"Build an Excel workbook from the attached Greenway community grant budget. Include a one-page summary and detail sheet with formulas for full-year forecast and variance, flag forecast overruns, preserve owners, and verify all calculations before returning it."},policyVisibleContext:{attachmentCount:1},privilegedContextRef:"expected-frozen-grant-budget-workbook",requiredOutputs:[{maxBytes:1e7,mediaType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",metadata:{validationKinds:["structural","test"]},path:"frozen-grant-budget-workbook.xlsx",schemaRef:null}],split:"frozen_eval",tags:["artifact-verification","spreadsheet","frozen-eval"]},{artifactRefs:[],clusterKey:"beacon-shipping-delay-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["equipment is lost","shipment is lost"],maxWords:90,requiredAny:[["transfer window"],["installation","crew"]],requiredText:["august 21","august 22","morgan","logistics"],requireMessageBody:!0},mustInclude:["complete ready-to-post message copy","August 21","carrier missed transfer window","August 22 installation","Morgan","logistics channel"],mustNot:["say the equipment is lost","exceed 90 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-shipping-delay-chat-message",input:{attachments:[],prompt:"Write a concise team chat message explaining that the Beacon equipment shipment is now expected August 21 instead of August 19 because the carrier missed its transfer window. The installation crew remains booked for August 22, Morgan owns the carrier follow-up, and the team should flag conflicts in the logistics channel. Keep it under 90 words and do not say the equipment is lost."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-shipping-delay-chat-message",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]},{artifactRefs:[],clusterKey:"python-requests-security-current-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["affected"],["fixed","patched"],["checked","as of"],["dependency graph","exact dependency","usage"]]},mustInclude:["primary advisory links","affected and fixed versions","date checked","dependency and usage caveat"],mustNot:["declare deployment exposure without evidence","use an uncited vulnerability list"],validation:[]},id:"frozen-python-requests-security-audit",input:{attachments:[],prompt:"Audit the supported Python Requests release lines for security advisories published in the last eighteen months. Use primary sources, identify affected and fixed versions, avoid claiming a specific deployment is exposed without its exact dependency graph and usage, and provide a concise linked report with the date checked."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-python-requests-security-audit",requiredOutputs:[],split:"frozen_eval",tags:["research-efficiency","primary-sources","security","frozen-eval"]},{artifactRefs:[],clusterKey:"cobalt-refund-support-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["refund is approved","refund has been approved"],maxWords:110,requiredAny:[["original payment method"],["duplicate","charge"]],requiredText:["$48","august 16","five business days","cb-7714"],requireMessageBody:!0},mustInclude:["complete send-ready reply copy","$48 duplicate charge","August 16","original payment method","five business days","CB-7714"],mustNot:["state the refund is already approved","exceed 110 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-refund-support-reply",input:{attachments:[],prompt:"Write a helpful support reply to a Cobalt customer whose duplicate $48 charge is being reviewed. The review should finish by August 16, any confirmed duplicate will be refunded to the original payment method within five business days, and the case number is CB-7714. Keep it under 110 words and do not state that the refund has already been approved."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-refund-support-reply",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]},{artifactRefs:[],clusterKey:"chicago-stl-accessibility-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["wheelchair","accessible","accessibility"],["outbound"],["return"],["disruption","service alert"],["checked","as of"],["confirm","confirmation"]],requiredText:["october 8","october 10"]},mustInclude:["official operator sources","outbound and return plan","accessibility details","disruption check","time checked","items needing confirmation"],mustNot:["guarantee unconfirmed availability","hide access limitations"],validation:[]},id:"frozen-accessible-chicago-stl-plan",input:{attachments:[],prompt:"Plan a wheelchair-accessible train trip from Chicago to St. Louis for October 8, 2026, returning October 10. Verify accessibility and disruption information from official sources, distinguish confirmed facts from anything requiring booking confirmation, include direct links and the time checked, and keep it practical."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-accessible-chicago-stl-plan",requiredOutputs:[],split:"frozen_eval",tags:["research-efficiency","current-information","travel","frozen-eval"]},{artifactRefs:[],clusterKey:"new-jersey-youth-grant-sources",expectedOutput:{deliverable:"report",deterministicContract:{minLinks:1,requiredAny:[["new jersey","nj"],["eligibility","eligible"],["deadline","due"],["checked","as of"]]},mustInclude:["authoritative source links","eligibility evidence","deadlines","date checked","only realistic matches"],mustNot:["include closed grants","include grants without verified nonprofit and program eligibility","pad the list"],validation:[]},id:"frozen-new-jersey-youth-grants",input:{attachments:[],prompt:"Find currently open grants that a New Jersey nonprofit running after-school programs could realistically apply for, with deadlines between now and December 31, 2026. Use authoritative sources, link each opportunity, verify eligibility and deadline, omit weak matches instead of padding the list, and state when you checked."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-new-jersey-youth-grants",requiredOutputs:[],split:"frozen_eval",tags:["research-efficiency","current-information","funding","frozen-eval"]},{artifactRefs:[],clusterKey:"maple-maintenance-followup-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["sue","lawsuit","legal action"],maxWords:130,requiredAny:[["repair date","repair schedule"]],requiredText:["july 28","august 1","security","two business days"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","July 28","August 1 inspection","security concern","repair date within two business days"],mustNot:["make a legal threat","claim facts not supplied","exceed 130 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-maintenance-followup-email",input:{attachments:[],prompt:"Draft a firm but courteous email to Maple Property Management following up on a bedroom window that has not closed securely since July 28. Maintenance inspected it August 1 but did not repair it. Ask for a repair date within two business days, mention the security concern, and keep the email under 130 words without making legal threats."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-maintenance-followup-email",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]},{artifactRefs:[],clusterKey:"meridian-vendor-document-message",expectedOutput:{deliverable:"message",deterministicContract:{forbiddenText:["cancel the contract","contract cancellation"],maxWords:120,requiredAny:[["onboarding","cannot finish","blocked"]],requiredText:["insurance certificate","august 7","rosa","august 12"],requireMessageBody:!0},mustInclude:["complete send-ready message copy","insurance certificate","August 7","onboarding blocked","Rosa","August 12"],mustNot:["threaten contract cancellation","exceed 120 words","return only a checklist or file path instead of the message"],validation:[]},id:"frozen-vendor-document-followup-email",input:{attachments:[],prompt:"Draft a firm but professional email to Meridian Freight following up on the insurance certificate promised for August 7. It has not arrived, carrier onboarding cannot finish without it, and Rosa needs the document or a confirmed delivery date by August 12. Keep it under 120 words and do not threaten to cancel the contract."},policyVisibleContext:{attachmentCount:0},privilegedContextRef:"expected-frozen-vendor-document-followup-email",requiredOutputs:[],split:"frozen_eval",tags:["constraint-following","direct-deliverable","communication","frozen-eval"]}],tools:[{description:"Start Work compute only when it is needed, then return live sandbox status and the stable /workspace/inputs, /workspace/work, and /workspace/outputs layout.",inputSchema:{additionalProperties:!1,properties:{},type:"object"},inputSchemaHash:"042b35e50dd5dd505f0228e829f17a8aeaae50e49d865c4754cf9ba1edba9bd0",name:"work_environment",sideEffect:"write",timeoutMs:12e4},{description:"List files in the Work scratch, input, or completed-output area. This lazily starts Work compute.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["inputs","work","outputs"],type:"string"},path:{description:"Optional relative path inside the selected area.",type:"string"},recursive:{type:"boolean"}},required:["area"],type:"object"},inputSchemaHash:"a3a68e8aeb4f23710aa21fe95d4a361a14c08bcbb61a2a959a60b7b00c82807f",name:"work_list_files",sideEffect:"read",timeoutMs:12e4},{description:"Read a bounded file from Work inputs, scratch space, or completed-output candidates.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["inputs","work","outputs"],type:"string"},maxBytes:{maximum:1e6,minimum:1,type:"integer"},path:{minLength:1,type:"string"}},required:["area","path"],type:"object"},inputSchemaHash:"deb9cd248f2734751286054c381ac9572b248370181970ced6563a73c905a4f0",name:"work_read_file",sideEffect:"read",timeoutMs:12e4},{description:"Write a UTF-8 Work scratch file or completed-output candidate. Use area=outputs only for a finished result that is ready to validate and save.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["work","outputs"],type:"string"},content:{type:"string"},path:{minLength:1,type:"string"}},required:["area","path","content"],type:"object"},inputSchemaHash:"6a19df98686e99a324564006b0b92082f185ac4b430e9285829f781251dd145b",name:"work_write_file",sideEffect:"write",timeoutMs:12e4},{description:"Edit a Work scratch file or output candidate by exact text replacement after reading it.",inputSchema:{additionalProperties:!1,properties:{area:{enum:["work","outputs"],type:"string"},newText:{type:"string"},oldText:{minLength:1,type:"string"},path:{minLength:1,type:"string"},replaceAll:{type:"boolean"}},required:["area","path","oldText","newText"],type:"object"},inputSchemaHash:"f507d9d9abbd8cf1556f6e925c159234295c3fa01800c5556767f96be8b011db",name:"work_edit_file",sideEffect:"write",timeoutMs:12e4},{description:"Run a bounded shell command from /workspace/work. Write finished deliverables to ../outputs and inspect them; the runtime preserves output files automatically when the turn ends.",inputSchema:{additionalProperties:!1,properties:{command:{minLength:1,type:"string"},timeoutSeconds:{maximum:3600,minimum:1,type:"integer"}},required:["command"],type:"object"},inputSchemaHash:"5ba3a52cddb3f575218bed855020e91eef14092d75922c963a24c6bc97fadeda",name:"work_exec",sideEffect:"write",timeoutMs:3e5},{description:"Explicitly copy one completed file from /workspace/outputs to durable OpenPond output storage before turn completion. Normal Work turns preserve output files automatically.",inputSchema:{additionalProperties:!1,properties:{path:{description:"Path relative to /workspace/outputs, for example report.md.",minLength:1,type:"string"},suggestedName:{maxLength:180,minLength:1,type:"string"},validation:{items:{additionalProperties:!1,properties:{detail:{maxLength:4e3,type:"string"},kind:{enum:["structural","visual","test","user_review"],type:"string"},label:{maxLength:240,minLength:1,type:"string"},ref:{maxLength:4096,type:"string"},status:{enum:["passed","failed","not_run"],type:"string"}},required:["kind","status","label"],type:"object"},maxItems:32,type:"array"}},required:["path"],type:"object"},inputSchemaHash:"ca853f64b300c74441b522db03facbcc9c5bb89c86189dae24182bab39510a83",name:"work_save_output",sideEffect:"write",timeoutMs:12e4},{description:"Stop Work compute after durable outputs have been saved. Saved OutputRefs remain available.",inputSchema:{additionalProperties:!1,properties:{},type:"object"},inputSchemaHash:"042b35e50dd5dd505f0228e829f17a8aeaae50e49d865c4754cf9ba1edba9bd0",name:"work_stop",sideEffect:"write",timeoutMs:12e4},{description:"Search the web for current or external information. The app renders clickable source pills automatically. Cite by source title or source name in prose by default; when the user explicitly requests URLs or linked evidence, use the result URLs in clickable Markdown links.",inputSchema:{additionalProperties:!1,properties:{domains:{description:"Optional domain filters.",items:{type:"string"},maxItems:10,type:"array"},limit:{description:"Maximum number of results to return.",maximum:10,minimum:1,type:"integer"},query:{description:"Search query.",minLength:1,type:"string"},recencyDays:{description:"Only return results from this many recent days when supported.",minimum:0,type:"integer"}},required:["query"],type:"object"},inputSchemaHash:"2a138bf9b526a624ac2442669fccb277fac2ba818821b3a2da1dd27d62954056",name:"web_search",sideEffect:"read",timeoutMs:12e4},{description:"Fetch and extract readable text from a known HTTP(S) URL. Use this when the user provides a URL or a search result has an exact page to inspect; use web_search when discovering unknown pages by query.",inputSchema:{additionalProperties:!1,properties:{maxBytes:{description:"Maximum UTF-8 bytes of extracted text to return. Defaults to 20000.",maximum:1e5,minimum:1,type:"integer"},url:{description:"HTTP or HTTPS URL to fetch.",minLength:1,type:"string"}},required:["url"],type:"object"},inputSchemaHash:"0afe31d8dbe05643e4a19ca0897c606e379f37d741b4f61816ad8ba4d48b61b3",name:"web_fetch",sideEffect:"read",timeoutMs:12e4}]}),Vc=Object.freeze({"fixtures/adaptation-board-launch.md":`# Northstar launch decision packet
3
3
 
4
4
  - Decision meeting: August 18, 2026 at 2:00 PM America/New_York.
5
5
  - Proposed launch: September 14, 2026.
@@ -2139,7 +2139,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
2139
2139
  ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[e.id,e.profileId,e.status,n,e.createdAt,e.updatedAt]),t?.(),a.exec("COMMIT")}catch(r){throw a.exec("ROLLBACK"),r}}c(Or,"saveTasksetRevision");import{createHash as sc}from"node:crypto";function _a(a){let e=Ve.parse(a.setup),t=typeof a.package=="object"&&a.package!==null&&"schemaVersion"in a.package&&a.package.schemaVersion==="openpond.tasksetPackage.v1"?Me(a.package):null,r=t?null:ps(a.package),s=t??r,i=e.tasksetRef;if(!(i&&i.revision===s.taskset.revision&&(t?i.id===t.taskset.id&&i.contentHash===t.taskset.contentHash||i.id===t.taskset.metadata.sourceTasksetId&&i.contentHash===t.taskset.metadata.sourceTasksetHash:i.id===s.taskset.id)))return e;!e.evaluationTasksetRef&&s.taskset.tasks.some(T=>T.split==="frozen_eval"||T.split==="validation")&&(e.evaluationTasksetRef=e.tasksetRef);let o=e.baseModel;if(e.method!=="grpo"||e.recipe||!o?.revision||!o.tokenizerRevision||!o.chatTemplateHash)return e;let d=s.taskset.tasks.filter(T=>T.split==="train"),m=t?t.taskset.graders:pt(r.rewardBinding,r.rewards),l=m.find(T=>T.rewardEligible&&T.weight>0),f=t?.environment??r?.executionResources?.environment??r?.execution?.environment;if(!d.length||!l||!f)return e;let p=8,u=8;return Ve.parse({...e,recipe:{schemaVersion:"openpond.rftRecipe.v1",method:"grpo",parameterization:"lora",baseModel:{id:o.modelId,revision:o.revision,tokenizerRevision:o.tokenizerRevision,chatTemplateHash:o.chatTemplateHash},dataset:{trainSplit:"train",validationSplit:s.taskset.tasks.some(T=>T.split==="frozen_eval")?"frozen_eval":"validation",maxPromptTokens:4096,maxExamples:Math.min(1e3,d.length),selectionStrategy:"stable_hash_top_n"},lora:{rank:2},rollout:{groupSize:p,concurrency:4,maxTurns:s.taskset.environment.kind==="text"?1:15,maxOutputTokens:1024,temperature:.8,topP:.95,seed:17},optimizer:{learningRate:1e-4,maxSteps:u,clipRange:.2,iterations:2,microbatchSize:1,gradientAccumulationSteps:p,advantageEpsilon:1e-8,adamw:{name:"adamw",weightDecay:0,beta1:.9,beta2:.999,epsilon:1e-8}},loss:{method:"grpo",klBeta:.01},reward:{graderId:l.id,graderHash:Ja(m),environmentId:f.id,environmentVersion:String(f.revision),toolContractHash:Ja(s.taskset.tools),learnedPreference:null},resourceLimits:{wallTimeMs:3960*1e3,maxRollouts:u*p,maxPayloadBytes:1e6},policyOptimization:null}})}c(_a,"prepareModelTrainingDefaults");var Ea=E.string().trim().min(1).max(500),_e=Z,Jd=E.object({schemaVersion:E.literal("openpond.modelStarter.v1"),id:Ea,revision:E.number().int().positive(),name:E.string().trim().min(1).max(200),description:E.string().trim().min(1).max(2e3),category:E.enum(["extraction","support","operations","knowledge","coding","writing","classification"]),taskset:_e,taskDefinition:_e,rewardBinding:_e,rewards:E.array(_e).min(1).max(100),assets:E.array(_e).max(1e3),previewTaskIds:E.array(Ea).min(1).max(8),startingModel:os,supportedMethods:E.array($a).min(1).max(8),defaultMethod:$a,provenance:E.object({author:E.string().min(1).max(200),license:E.string().min(1).max(200),sourceDescription:E.string().min(1).max(2e3)}).strict(),evidence:E.object({verifierFixtures:_e.nullable(),baseline:_e.nullable(),training:_e.nullable(),evaluation:_e.nullable()}).strict()}).strict().superRefine((a,e)=>{a.supportedMethods.includes(a.defaultMethod)||e.addIssue({code:"custom",path:["defaultMethod"],message:"The default method must be supported by the package."});for(let t of["rewards","assets"])new Set(a[t].map(r=>r.id)).size!==a[t].length&&e.addIssue({code:"custom",path:[t],message:"Dependency identities must be unique."});new Set(a.previewTaskIds).size!==a.previewTaskIds.length&&e.addIssue({code:"custom",path:["previewTaskIds"],message:"Preview tasks must be unique."})}),Vd=Jd.safeExtend({contentHash:E.string().regex(/^[a-f0-9]{64}$/)}),zd=E.object({starter:Vd,taskset:we,taskDefinition:mt,rewardBinding:qt,rewards:E.array(Je).min(1).max(100),assets:E.array(Da).max(1e3),execution:Vt.optional()}).strict(),Gd=E.object({schemaVersion:E.literal("openpond.modelStarterPrivacyReview.v1"),disposition:E.literal("synthetic_only"),reviewedBy:E.string().trim().min(1).max(500),reviewedAt:E.iso.datetime(),reviewedContentHash:E.string().regex(/^[a-f0-9]{64}$/),note:E.string().trim().min(1).max(2e3)}).strict();function Qd(a){let{contentHash:e,...t}=a.starter,{contentHash:r,...s}=a.taskset,{contentHash:i,...n}=t.taskset,o={...s.metadata},d=o.starterAuthoring;if(d&&typeof d=="object"&&!Array.isArray(d)){let{privacyReview:m,...l}=d;o.starterAuthoring=l}return U({...a,starter:{...t,taskset:n},taskset:{...s,metadata:o}}).contentHash}c(Qd,"modelStarterPrivacyContentHash");var Zd=E.object({profileId:Ea,modelId:Ea,name:E.string().trim().min(1).max(200),starter:_e,startingModel:os,method:$a,rewardBindingRef:_e.nullable().optional(),learning:ns.optional()}).strict(),ec=Zd.extend({schemaVersion:E.literal("openpond.modelStarterCreation.v1"),operationId:Ea}).strict();function ha(a){return ge(a,64*1024),ec.parse(a)}c(ha,"parseModelStarterCreationRequest");function ga(a,e){let t=ha(a),r=wa(e);if(!C(t.starter,I(r.starter)))throw new Error("Starter creation references a different package revision.");if(!r.starter.supportedMethods.includes(t.method))throw new Error("The selected training method is not supported by this starter.");return{request:t,resolved:r}}c(ga,"validateModelStarterCreation");function zl(a){let{starter:e,taskset:t,taskDefinition:r,rewardBinding:s,rewards:i}=wa(a);return{starter:e,inputSchema:r.inputSchema,outputSchema:r.outputSchema,reward:{name:s.name,description:s.description,checks:s.sources.map(n=>{let o=i.find(d=>C(n.reward,I(d)));return{name:o.name,description:o.description,kind:o.implementation.kind,role:n.role,weight:n.weight,required:n.required,hardGate:n.hardGate}})},tasks:e.previewTaskIds.map(n=>{let o=t.tasks.find(d=>d.id===n);return{id:o.id,input:o.input,policyVisibleContext:o.policyVisibleContext}}),counts:{train:t.tasks.filter(n=>n.split==="train").length,validation:t.tasks.filter(n=>n.split==="validation").length,frozenEvaluation:t.tasks.filter(n=>n.split==="frozen_eval").length}}}c(zl,"previewModelStarter");function wa(a){ge(a,16*1024*1024);let e=zd.parse(a),{starter:t,taskset:r,taskDefinition:s,rewardBinding:i,rewards:n,assets:o}=e,d=r.metadata.starterAuthoring;if(d&&typeof d=="object"&&!Array.isArray(d)&&"privacyReview"in d&&Gd.parse(d.privacyReview).reviewedContentHash!==Qd(e))throw new Error("Starter privacy review differs from the published contents.");let m=[t,r,s,i,...n,...o];for(let N of m){let{contentHash:_,...k}=N;if(U(k).contentHash!==_)throw new Error(`Starter resource integrity failed: ${N.id}.`)}Ci(r),Mn(e.execution,r,o);function l(N,_){if(!C(N,I(_)))throw new Error(`Starter dependency mismatch: ${N.id}.`)}if(c(l,"exact"),l(t.taskset,r),l(t.taskDefinition,s),l(t.rewardBinding,i),l(s.rewardBinding,i),i.recipeRef)throw new Error("Starter binding recipes must be resolved into a standalone binding before publication.");let{policy:f,environment:p,environmentRelease:u,tools:T,capabilities:h,verifierSetRelease:g}=r,w={policy:f,environment:p,...u?{environmentRelease:u}:{},tools:T,capabilities:h,...g?{verifierSetRelease:g}:{}};if(U(w).contentHash!==U(s.execution).contentHash)throw new Error("Starter execution context differs from its task format.");if(U({graders:r.graders}).contentHash!==U({graders:pt(i,n)}).contentHash)throw new Error("Starter executable graders differ from its Reward binding.");for(let[N,_]of[[t.rewards,n],[t.assets,o]]){if(N.length!==_.length||new Set(_.map(k=>k.id)).size!==_.length)throw new Error("Starter dependency inventory mismatch.");for(let k of N){let A=_.find(S=>S.id===k.id);if(!A)throw new Error(`Starter dependency is missing: ${k.id}.`);l(k,A)}}for(let N of i.sources){let _=n.find(k=>k.id===N.reward.id);if(!_)throw new Error(`Starter Reward is missing: ${N.reward.id}.`);l(N.reward,_)}for(let N of n){let _=N.implementation,k=[...N.assets,..."verifierRef"in _?[_.verifierRef]:[],..."rubricRef"in _?[_.rubricRef]:[],..."inputContract"in _?[_.inputContract]:[]];for(let A of k){let S=o.find(P=>P.id===A.id);if(!S||U(S.asset).contentHash!==U(A).contentHash)throw new Error(`Starter Reward source is missing or changed: ${A.id}.`);if(A.visibility==="policy")throw new Error(`Starter Reward source must remain private to its evaluator: ${A.id}.`)}}if(new Set(r.tasks.map(N=>N.id)).size!==r.tasks.length)throw new Error("Starter task identities must be unique.");let R=new Map;for(let N of r.tasks){if(N.policyVisibleContext.instructions!==s.instructions)throw new Error(`Starter task does not carry its declared model instructions: ${N.id}.`);let _=U({input:N.input,context:N.policyVisibleContext}).contentHash,k=R.get(_);if(k&&k!==N.split)throw new Error("Starter policy input appears in multiple splits.");if(R.set(_,N.split),!lt(s.inputSchema,N.input).valid)throw new Error(`Starter task input does not match its format: ${N.id}.`);if(N.expectedOutput!==null&&!lt(s.outputSchema,N.expectedOutput).valid)throw new Error(`Starter expected output does not match its format: ${N.id}.`)}for(let N of t.previewTaskIds){let _=r.tasks.find(k=>k.id===N);if(!_||_.split==="frozen_eval")throw new Error(`Starter preview task is unavailable: ${N}.`)}return e}c(wa,"validateResolvedModelStarter");import{createHash as Gl}from"node:crypto";function K(a,e,t,r){let s=ae[t].parse(r),i=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,t,s.id,s.revision]);if(i){if(X(JSON.parse(i.payload))!==X(s))throw new Error(`Starter dependency conflicts with an existing revision: ${s.id}.`);return}a.run("INSERT INTO learning_revisions (scope, kind, id, revision, payload) VALUES (?, ?, ?, ?, ?)",[e,t,s.id,s.revision,JSON.stringify(s)]),a.run(`INSERT INTO learning_resources (scope, kind, id, revision) VALUES (?, ?, ?, ?)
2140
2140
  ON CONFLICT (scope, kind, id) DO UPDATE SET revision = excluded.revision
2141
2141
  WHERE learning_resources.revision < excluded.revision`,[e,t,s.id,s.revision])}c(K,"importStarterReleaseInTransaction");function tc(a,e,t){function r(o,d){let m=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,o,d.id,d.revision]);m||rt(404,"model_reward_unavailable",`The exact ${o} resource is unavailable in this Profile.`);let l=ae[o].parse(JSON.parse(m.payload));return ue(l),d.contentHash&&l.contentHash!==d.contentHash&&rt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),l}c(r,"read");let s=r("binding",t),i=[...new Map(s.sources.map(o=>[X(o.reward),r("reward",o.reward)])).values()],n=new Map;for(let o of i){let d=o.implementation;for(let m of[...o.assets,..."verifierRef"in d?[d.verifierRef]:[],..."rubricRef"in d?[d.rubricRef]:[],..."inputContract"in d?[d.inputContract]:[]])n.has(m.id)||n.set(m.id,r("asset",{id:m.id,revision:1})),V(n.get(m.id),m)}return{rewardBinding:s,rewards:i,assets:[...n.values()]}}c(tc,"readSelectedModelReward");function Lr(a,e,t,r){let s=Z.parse(e.metadata.rewardBinding),i=c((w,R)=>{let N=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.profileId,w,R.id,R.revision]);N||rt(404,"model_reward_unavailable",`The exact ${w} resource is unavailable in this Profile.`);let _=ae[w].parse(JSON.parse(N.payload));return ue(_),R.contentHash&&_.contentHash!==R.contentHash&&rt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),_},"read"),n=i("definition",Z.parse(e.metadata.taskDefinition));(X(e.policy)!==X(n.execution.policy)||X(e.environment.metadata.portableEnvironment)!==X(n.execution.environment)||X(e.environment.metadata.portableTools)!==X(n.execution.tools))&&rt(409,"model_taskset_context_changed","Taskset context differs from its immutable task definition.");let o=i("binding",s),d=[...new Map(o.sources.map(w=>[X(w.reward),i("reward",w.reward)])).values()];e.metadata.rewardExecution!==void 0&&X(e.metadata.rewardExecution)!==X({binding:o,rewards:d})&&rt(409,"model_taskset_rewards_changed","Taskset embedded Rewards differ from their immutable binding.");let m=i("binding",t),l=[...new Map(m.sources.map(w=>[X(w.reward),i("reward",w.reward)])).values()],f=new Map((r?.modelResources?.assets??[]).map(w=>[w.id,w])),p=c(w=>{f.has(w)||f.set(w,i("asset",{id:w,revision:1}))},"addAsset");for(let w of[...d,...l]){let R=w.implementation;for(let N of[...w.assets,..."verifierRef"in R?[R.verifierRef]:[],..."rubricRef"in R?[R.rubricRef]:[],..."inputContract"in R?[R.inputContract]:[]])p(N.id)}let u,T=ls.shape.executionResources.parse(e.environment.metadata.portableExecutionResources);if(n.execution.environment.entrypoint==="openpond.javascript-environment.v1"){let w=i("asset",{id:cs(n.execution),revision:1});u=Vt.parse(JSON.parse(V(w,w.asset)));for(let R of[u.javascript.module,u.environment.actionSchemaRef,u.environment.observationSchemaRef,u.environment.stateSchemaRef])R&&p(R.id)}for(let w of e.tasks)w.privilegedContextRef&&p(w.privilegedContextRef);X(e.graders)!==X(gt(o,d,[...f.values()]))&&rt(409,"model_taskset_graders_changed","Taskset graders differ from their immutable Reward binding.");let h=we.parse(U({schemaVersion:"openpond.tasksetRelease.v2",id:e.id,revision:e.revision,...n.execution,graders:pt(o,d),...e.metrics?{metrics:e.metrics}:{},tasks:e.tasks.map(w=>{let R=to(w);return w.requiredOutputs===void 0&&w.metadata.portableTaskRecord===void 0&&delete R.requiredOutputs,R}),metadata:e.metadata.derivedPortableMetadata??{localSource:I(e),starter:{taskDefinition:I(n),rewardBinding:s}}}));return{sourcePackage:r?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:{taskset:h,taskDefinition:n,rewardBinding:o,rewards:d,assets:[...f.values()],...T?{executionResources:T}:{},...u?{execution:u}:{}},selectedBinding:m,selectedRewards:l,assets:f}}c(Lr,"readModelTasksetSource");function rt(a,e,t){throw new xe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(rt,"fail");function Qs(a){if(a?.metadata.learning===void 0)return null;let e=Wi.parse(a.metadata.learning);return ue(e.definition),xi(e.binding,e.rewards),C(e.definition.rewardBinding,I(e.binding))||Oe(409,"model_batch_binding_changed","Reviewed task definition and Reward binding do not match."),e.binding}c(Qs,"reviewedTasksetRewardBinding");function Zs(a,e,t=!0,r){let s=Kt(e),{project:i}=s,n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?B.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&Oe(404,"model_not_found","Model is not available in this Profile."),(o?.revision??0)!==s.expectedRevision&&Oe(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let d=i.trainingSetup.tasksetRef;if(!d||!i.trainingSetup.rewardBindingRef)return null;let m=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[d.id,d.revision]),l=m?F.parse(JSON.parse(m.payload)):null;(!l||l.profileId!==i.profileId)&&Oe(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),(l.contentHash!==d.contentHash||ie(l)!==l.contentHash)&&Oe(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash.");let f=Qs(l);if(f)return C(I(f),i.trainingSetup.rewardBindingRef)||Oe(422,"model_batch_reward_review_required","Changing a reviewed batch's Reward requires regrading and a new reviewed batch."),null;let p=l.metadata.rewardBinding===void 0?null:Z.parse(l.metadata.rewardBinding);if(p&&C(p,i.trainingSetup.rewardBindingRef))return null;if(!p&&r&&!r.modelResources&&!r.learningResources){let O=tc(a,i.profileId,i.trainingSetup.rewardBindingRef),q=Eo({owner:{scopeId:i.profileId,modelId:i.id},source:r,...O}),W=ac(a,s,t),D=It({package:q,profileId:i.profileId,name:l.name,createdAt:W.created_at}),$={...q.modelResources,taskset:q.taskset,executionResources:{environment:q.environment,verifierSet:q.verifierSet}};return{taskset:D.taskset,generatedFiles:D.generatedFiles,directoryId:String(D.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:null,derived:$,imported:D}}p||Oe(422,"model_taskset_derivation_unavailable","This Taskset needs an authored task definition and Reward binding before its Reward can be changed.");let{sourcePackage:u,selectedBinding:T,selectedRewards:h,assets:g}=Lr(a,l,i.trainingSetup.rewardBindingRef,r),w=Et.safeParse(u.taskset.metadata.modelTasksetDerivation),N=o?.hosted?.apiOrigin&&o.hosted.tasksets.some(O=>{if(!w.success||O.localTasksetId!==l.id||!O.packageHash||!O.localTasksetHash)return!1;let q=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND content_hash = ? AND profile_id = ?",[l.id,O.localTasksetHash,i.profileId]),W=q?F.parse(JSON.parse(q.payload)):null;if(!W||W.contentHash!==O.localTasksetHash)return!1;let D=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = 'package' AND id = ? AND revision = ?",[i.profileId,O.releaseId,O.releaseRevision]),$=D?we.parse(JSON.parse(D.payload)):null,J=Et.safeParse($?.metadata.modelTasksetDerivation);return $?.contentHash===O.releaseHash&&J.success&&X(J.data.owner)===X(w.data.owner)&&C(J.data.root,w.data.root)})&&w.success&&w.data.owner.modelId===i.id?w.data.owner:{scopeId:i.profileId,modelId:i.id},_=zt({owner:N,source:u,rewardBinding:T,rewards:h,assets:[...g.values()]}),k=ac(a,s,t);if(r){let O=new Map(r.files.map(te=>[te.asset.id,te]));for(let te of _.assets)O.set(te.id,{asset:te.asset,base64:Buffer.from(te.text).toString("base64")});let{taskset:q,executionResources:W,...D}=_;if(!W)throw new Error("Derived imported package is missing execution resources.");let $=Qa({schemaVersion:"openpond.tasksetPackage.v1",taskset:q,...W,modelResources:D,files:[...O.values()]}),J=It({package:$,profileId:i.profileId,name:l.name,createdAt:k.created_at});return{taskset:J.taskset,generatedFiles:J.generatedFiles,directoryId:String(J.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:u,derived:_,imported:J}}let A=`${_.taskset.id}-r${_.taskset.revision}-${U({packageHash:_.taskset.contentHash,preparedAt:k.created_at}).contentHash}`,S=er(l,k.created_at),P=new Map(_.taskset.tasks.map(O=>[O.id,O])),j=[];for(let O of _.taskset.graders)if(O.kind==="custom_verifier"){let q=ar(O.verifierRef.contentHash);j.some(W=>W.path===q)||j.push({path:q,role:"verifier",content:V(g.get(O.verifierRef.id),O.verifierRef)})}let H=tr({tasksetId:_.taskset.id,now:k.created_at,sourcePackageHash:_.taskset.contentHash,draft:{...S,policy:_.taskset.policy,tasks:S.tasks.map(O=>({...O,metadata:{...O.metadata,portableTaskRecord:P.get(O.id)}})),environment:{...S.environment,metadata:{...S.environment.metadata,runtimeSourceTasksetId:A,portableExecutionResources:_.executionResources}},graders:gt(T,h,[...g.values()]),learningSignals:{...S.learningSignals,rewards:S.learningSignals.rewards.map(O=>({...O,rules:[{id:T.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],artifactRef:T.id,metadata:{...O.metadata,rewardBinding:I(T)}}))},metadata:{...S.metadata,portableCapabilities:_.taskset.capabilities,taskDefinition:I(_.taskDefinition),rewardBinding:I(T),rewardExecution:{binding:T,rewards:h},derivedPortableMetadata:_.taskset.metadata,modelTasksetDerivation:_.taskset.metadata.modelTasksetDerivation}}});if(H.metrics=_.taskset.metrics,H.contentHash=ie(H),H.revision!==_.taskset.revision)throw new Error("Derived local and portable Taskset revisions differ.");return{taskset:H,generatedFiles:j,directoryId:A,source:l,sourcePackage:u,derived:_}}c(Zs,"prepareModelTasksetSave");function rc(a,e,t){let r=e.project.profileId;for(let o of[t.sourcePackage,t.derived]){if(!o)continue;for(let m of o.assets)K(a,r,"asset",m);for(let m of o.rewards)K(a,r,"reward",m);K(a,r,"binding",o.rewardBinding),K(a,r,"package",o.taskset),K(a,r,"definition",o.taskDefinition);let d=o.executionResources??o.execution;d&&K(a,r,"asset",ze(d)),o.execution&&K(a,r,"asset",Xe(o.execution))}let s=t.taskset;a.get("SELECT content_hash FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[s.id,s.revision])&&Oe(409,"model_taskset_revision_conflict","The derived Taskset revision was already published. Refresh before saving.");let n=JSON.stringify(s);a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at",[s.id,r,s.status,n,s.createdAt,s.updatedAt]),a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.revision,s.contentHash,r,s.status,n,s.createdAt,s.updatedAt]),a.run("UPDATE model_project_taskset_preparations SET state = 'committed' WHERE profile_id = ? AND operation_id = ?",[r,e.operationId])}c(rc,"commitPreparedModelTaskset");function ac(a,e,t){let r=Gl("sha256").update(X(e)).digest("hex"),s=e.project.profileId;t&&a.run("INSERT OR IGNORE INTO model_project_taskset_preparations (profile_id, operation_id, request_hash, created_at, state) VALUES (?, ?, ?, ?, 'preparing')",[s,e.operationId,r,new Date().toISOString()]);let i=a.get("SELECT request_hash, created_at FROM model_project_taskset_preparations WHERE profile_id = ? AND operation_id = ?",[s,e.operationId])??{request_hash:r,created_at:new Date().toISOString()};return i.request_hash!==r&&Oe(409,"model_operation_conflict","This save operation was already used with different Model configuration."),i}c(ac,"recordModelTasksetPreparation");function Oe(a,e,t){throw new xe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(Oe,"fail");function br(a,e){let t=Kt(e),r=a.get("SELECT request_hash, payload FROM model_project_save_operations WHERE profile_id = ? AND operation_id = ?",[t.project.profileId,t.operationId]);if(!r)return null;let s=sc("sha256").update(X(t)).digest("hex");return r.request_hash!==s&&he(409,"model_operation_conflict","This save operation was already used with different Model configuration."),B.parse(JSON.parse(r.payload))}c(br,"findModelProjectSave");function ic(a,e,t,r){a.exec("BEGIN IMMEDIATE");try{let s=Ra(a,e,t,r);return a.exec("COMMIT"),s}catch(s){throw a.exec("ROLLBACK"),s}}c(ic,"commitModelProjectSave");function Ra(a,e,t,r){let s=Kt(e);s.learning&&he(422,"model_learning_hosted_required","Create this Model in a hosted workspace to enable continual learning.");let i=sc("sha256").update(X(s)).digest("hex"),{project:n,operationId:o,expectedRevision:d}=s,m=br(a,s);if(m)return m;let l=a.get("SELECT payload FROM model_projects WHERE id = ?",[n.id]),f=l?B.parse(JSON.parse(l.payload)):null;f&&f.profileId!==n.profileId&&he(404,"model_not_found","Model is not available in this Profile."),(f?.revision??0)!==d&&he(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let p=Ql(a,s),u=Qs(p);u||Zl(a,s);let T=u?I(u):p?.metadata.rewardBinding===void 0?null:Z.parse(p.metadata.rewardBinding);p&&n.trainingSetup.rewardBindingRef&&(!T||!C(T,n.trainingSetup.rewardBindingRef))&&!t&&he(409,"model_taskset_preparation_required","Changing this Reward requires publishing its model-owned Taskset revision."),t&&((!n.trainingSetup.tasksetRef||!C(n.trainingSetup.tasksetRef,I(t.source))||!n.trainingSetup.rewardBindingRef||!C(n.trainingSetup.rewardBindingRef,I(t.derived.rewardBinding)))&&he(409,"model_taskset_preparation_changed","The prepared Taskset differs from the selected configuration."),rc(a,s,t));let h=new Date().toISOString(),g=Ve.parse({...n.trainingSetup,baseModel:n.trainingSetup.baseModel??n.defaultBaseModel,method:n.trainingSetup.method??(p?.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":p?.authoringProvenance.buildIntent==="demonstrations"?"sft":null),...T?{rewardBindingRef:T}:{},...t?{rewardBindingRef:I(t.derived.rewardBinding),tasksetRef:I(t.taskset),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&C(n.trainingSetup.evaluationTasksetRef,I(t.source))?{evaluationTasksetRef:I(t.taskset)}:{}}:{}}),w=t?.derived??r??(p&&!u&&g.rewardBindingRef&&p.metadata.taskDefinition!==void 0&&p.metadata.rewardBinding!==void 0?Lr(a,p,g.rewardBindingRef).sourcePackage:void 0),R=B.parse({...f,...n,trainingSetup:w?_a({setup:g,package:w}):g,schemaVersion:"openpond.modelProject.v2",revision:d+1,hosted:f?.hosted??null,tasksetSyncs:f?.tasksetSyncs??[],createdAt:f?.createdAt??h,updatedAt:h});return a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2142
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[R.id,R.profileId,JSON.stringify(R),R.createdAt,R.updatedAt]),a.run("INSERT INTO model_project_save_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[R.profileId,o,i,JSON.stringify(R)]),R}c(Ra,"saveModelProjectInTransaction");function Ql(a,e){let t=e.project.trainingSetup.tasksetRef;if(!t){e.project.trainingSetup.tasksetRelease&&he(400,"model_taskset_required","Choose the Taskset corresponding to this release.");return}let r=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[t.id,t.revision]),s=r?F.parse(JSON.parse(r.payload)):null;return(!s||s.profileId!==e.project.profileId)&&he(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),s.contentHash!==t.contentHash&&he(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash."),s}c(Ql,"assertTaskset");function Zl(a,e){let t=e.project.trainingSetup.rewardBindingRef;if(!t)return;function r(i,n){let o=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.project.profileId,i,n.id,n.revision]);o||he(404,"model_reward_unavailable","The exact Reward configuration is unavailable in this Profile.");let d=(i==="binding"?qt:Je).parse(JSON.parse(o.payload));return d.contentHash!==n.contentHash&&he(409,"model_reward_changed","The selected Reward does not match its immutable content hash."),ue(d),d}c(r,"read");let s=qt.parse(r("binding",t));for(let i of s.sources)r("reward",i.reward)}c(Zl,"assertReward");function he(a,e,t){throw new xe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(he,"fail");function nc(a,e,t,r){let s=e.modelScope;if(!s)return;let i=a.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e.profileId]);if(!i)throw new Error("Taskset draft Model was not found in this Profile.");let n=B.parse(JSON.parse(i.payload)),o={id:t.id,revision:t.revision,contentHash:t.contentHash};return Ra(a,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${y({draftId:e.id,revision:e.revision,scope:s,tasksetRef:o})}`,expectedRevision:s.expectedModelRevision,project:Tn.strip().parse({...n,trainingSetup:{...n.trainingSetup,tasksetRef:o,rewardBindingRef:t.metadata.rewardBinding===void 0?null:Z.parse(t.metadata.rewardBinding),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&n.trainingSetup.tasksetRef&&C(n.trainingSetup.evaluationTasksetRef,n.trainingSetup.tasksetRef)?{evaluationTasksetRef:o}:{}}})},null,r?.modelResources?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:r??void 0)}c(nc,"selectTasksetDraftModel");import{createHash as np,randomUUID as op}from"node:crypto";import{lstat as uc,mkdir as pc,readdir as dp,readFile as cp,rename as lp,rm as pp,writeFile as up}from"node:fs/promises";import Xt from"node:path";import{constants as ei}from"node:fs";import{link as ep,lstat as tp,mkdir as ti,mkdtemp as oc,open as ap,readFile as rp,readdir as sp,rename as ip,rm as dc,writeFile as cc}from"node:fs/promises";import Q from"node:path";async function tw(a,e){let t=e.metadata.importedPackageHash;if(t===void 0)return;if(typeof t!="string"||!a)throw new Error("Imported batch requires its package storage directory.");let r=await ke(a,t);if(!r.learningResources||r.taskset.id!==e.id||r.taskset.revision!==e.revision||y(Fa(r.taskset))!==y(e.metadata.learning))throw new Error("Imported batch differs from its pinned package.");return r}c(tw,"readImportedLearningTasksetPackage");async function st(a,e){let t=Me(e),r=Q.join(a,"training","portable-packages");await ti(r,{recursive:!0});let s=Q.join(r,`${t.contentHash}.json`),i=await oc(Q.join(r,".package-"));try{let n=Q.join(i,"package.json");await cc(n,JSON.stringify(t),{flag:"wx",mode:384});try{await ep(n,s)}catch(o){if(o.code!=="EEXIST")throw o;await ke(a,t.contentHash)}}finally{await dc(i,{recursive:!0,force:!0})}}c(st,"cacheTasksetPackage");async function ke(a,e){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid Taskset package cache identity.");let t=Q.join(a,"training","portable-packages",`${e}.json`),r=await ap(t,ei.O_RDONLY|ei.O_NOFOLLOW|ei.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Ge)throw new Error("Taskset package cache must be a bounded regular file.");let i=Buffer.alloc(s.size),n=0;for(;n<i.length;){let d=await r.read(i,n,i.length-n,n);if(!d.bytesRead)throw new Error("Taskset package cache changed during read.");n+=d.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset package cache changed during read.");let o=Me(JSON.parse(i.toString("utf8")));if(o.contentHash!==e)throw new Error("Cached Taskset package differs from its saved receipt.");return o}finally{await r.close()}}c(ke,"readCachedTasksetPackage");async function ya(a){let e=Me(a.package),t=Ss(a.taskset.profileId,e.contentHash);if(a.taskset.environment.metadata.runtimeSourceTasksetId!==t)throw new Error("Imported Taskset directory differs from its package identity.");let r=new Map,s=c((d,m)=>{if(Q.isAbsolute(d)||d.includes("\\")||d.split("/").some(f=>!f||f==="."||f===".."))throw new Error("Taskset package file requires a safe relative path.");let l=r.get(d);if(l&&!Buffer.from(l).equals(Buffer.from(m)))throw new Error(`Taskset package files collide at ${d}.`);r.set(d,m)},"add");for(let d of e.files)s(d.asset.path,_t(d));for(let d of a.generatedFiles)s(d.path,Buffer.from(d.content,"utf8"));s("taskset.json",Buffer.from(JSON.stringify(a.taskset),"utf8"));let i=Q.join(a.home,"training","tasksets");await ti(i,{recursive:!0});let n=await oc(Q.join(i,".package-import-")),o=Q.join(i,t);try{for(let[d,m]of r)await ti(Q.dirname(Q.join(n,d)),{recursive:!0}),await cc(Q.join(n,d),m,{flag:"wx",mode:384});try{await ip(n,o)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;let m=await tp(o);if(!m.isDirectory()||m.isSymbolicLink())throw new Error("Imported Taskset destination must be a regular directory.");let l=await lc(o);if(JSON.stringify(l.sort())!==JSON.stringify([...r.keys()].sort()))throw new Error("Imported Taskset file inventory changed.");for(let[f,p]of r)if(!(await rp(Q.join(o,f))).equals(Buffer.from(p)))throw new Error("Imported Taskset files differ from the pinned package.")}await st(a.home,e)}finally{await dc(n,{recursive:!0,force:!0})}}c(ya,"materializeImportedTasksetPackage");async function lc(a,e=""){let t=[];for(let r of await sp(Q.join(a,e),{withFileTypes:!0})){let s=Q.posix.join(e,r.name);if(r.isSymbolicLink())throw new Error("Imported Taskset directories cannot contain symbolic links.");if(r.isDirectory())t.push(...await lc(a,s));else if(r.isFile())t.push(s);else throw new Error("Imported Taskset packages require regular files.")}return t}c(lc,"regularFiles");var Mt=go.extend({workspaceHash:E.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function mc(a){let{db:e,profileId:t}=a,r=ss.parse(a.request),s=c(()=>{let k=e.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[r.modelId,t]);if(!k)throw new Error("Taskset draft Model was not found in this Profile.");return B.parse(JSON.parse(k.payload))},"requireModel"),i=s(),n=y(r),o=e.get("SELECT request_hash, state, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(o){if(o.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(o.state==="deleted")throw new Error("This Taskset draft was deleted.");return Mt.parse(JSON.parse(o.payload))}if(!a.source)return null;if(i.revision!==r.expectedModelRevision)throw new Error("Model changed before draft initialization. Refresh before editing.");let d=i.trainingSetup.tasksetRef,m=d?e.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[d.id,d.revision,t]):null,l=m?F.parse(JSON.parse(m.payload)):null;if(!l||!d||l.contentHash!==d.contentHash)throw new Error("The selected source Taskset is unavailable.");let f=a.source,p=i.hosted?.apiOrigin?i.hosted.tasksets.find(k=>k.localTasksetId===l.id&&k.localTasksetHash===l.contentHash&&k.packageHash===f.contentHash&&k.releaseId===f.taskset.id&&k.releaseRevision===f.taskset.revision&&k.releaseHash===f.taskset.contentHash):null,u=typeof l.metadata.importedPackageHash=="string"?l.metadata.importedPackageHash:p?.packageHash;if(u?u!==f.contentHash:!C(I(De({taskset:l,adapterId:ye(l)}).tasksetRelease),I(f.taskset)))throw new Error("Taskset draft package differs from its selected source.");let T=f.modelResources?Et.safeParse(f.taskset.metadata.modelTasksetDerivation):rs.safeParse(f.taskset.metadata.modelTasksetAuthoring),h=p&&T.success&&T.data.owner.modelId===i.id?T.data.owner:{scopeId:t,modelId:i.id},g=uo({request:r,owner:h,source:f}),w=wo({sourceDraft:er(l),source:f,preparation:g,expectedModelRevision:r.expectedModelRevision});await st(a.home,f);let R=Mt.parse({...w,workspaceHash:null}),N=R.draft;e.exec("BEGIN IMMEDIATE");try{let k=e.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(k&&k.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(!k&&s().revision!==r.expectedModelRevision)throw new Error("Model changed during draft initialization. Refresh before editing.");e.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",[t,r.operationId,n,N.id,JSON.stringify(R)]),e.exec("COMMIT")}catch(k){throw e.exec("ROLLBACK"),k}let _=e.get("SELECT request_hash, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(!_||_.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");return Mt.parse(JSON.parse(_.payload))}c(mc,"prepareDraftInitialization");async function Tc(a){let{initialized:e,workspacePath:t}=a;if(a.completed())return;if(e.workspaceHash)try{if(await uc(t),a.completed())return;if(await ai(t),await G(t)!==e.workspaceHash)throw new Error("Prepared Taskset draft files changed before initialization completed.");return}catch(s){if(s.code!=="ENOENT")throw s}let r=`${t}.initializing-${op()}`;await pc(Xt.dirname(t),{recursive:!0});try{let s=e.draft.modelScope?.source;if(!s)throw new Error("Taskset draft lost its source preparation.");let i=await ke(a.home,s.sourcePackageHash),n=new Map;for(let d of e.filePaths){let m=i.files.find(l=>l.asset.id===d.assetId);if(!m)throw new Error("Taskset draft source asset is missing.");for(let l of d.paths){if(l.includes("\\")||Xt.posix.isAbsolute(l)||l.split("/").some(u=>!u||u==="."||u===".."||u.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let f=n.get(l);if(f&&f!==m.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(f)continue;let p=Xt.join(r,l);await pc(Xt.dirname(p),{recursive:!0}),await up(p,_t(m),{flag:"wx"}),n.set(l,m.asset.contentHash)}}await na(e.draft,r);for(let[d,m]of n)if(np("sha256").update(await cp(Xt.join(r,d))).digest("hex")!==m)throw new Error(`Taskset draft source asset conflicts with authoring file ${d}.`);let o=await G(r);if(a.retainHash({...e,workspaceHash:o}),a.completed())return;try{await lp(r,t)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;if(a.completed())return;if(await ai(t),await G(t)!==o)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await pp(r,{recursive:!0,force:!0})}}c(Tc,"materializeDraftInitialization");async function ai(a){let e=await uc(a);if(!e.isDirectory()||e.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let t of await dp(a,{withFileTypes:!0})){if(t.name.startsWith(".env")||t.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(t.isDirectory())await ai(Xt.join(a,t.name));else if(!t.isFile())throw new Error("Taskset draft source must contain regular files.")}}c(ai,"assertRegularTree");import Tp from"node:path";import{constants as ri}from"node:fs";import{open as mp,realpath as fc}from"node:fs/promises";import ka from"node:path";function Ec(a,e){return e?new Set:new Set([...(a.modelResources?.assets??[]).map(t=>t.asset.id),...(a.learningResources?.assets??[]).map(t=>t.asset.id),...a.learningResources?us(a.learningResources).map(t=>t.asset.id):[]])}c(Ec,"tasksetPackageInlineAssetIds");async function Dt(a){let e=a.sources.length?await fc(a.root):ka.resolve(a.root),t=[],r=new Set,s=0,i=c((n,o)=>{if(r.has(n.id))throw new Error(`Duplicate local Taskset asset: ${n.id}.`);if(r.add(n.id),s+=4*Math.ceil(o.byteLength/3),s>Ge)throw new Error("Local Taskset files exceed the package envelope.");t.push({asset:n,base64:Buffer.from(o).toString("base64")})},"append");for(let n of a.sources){let o=gi.parse(n.asset);if(!n.sourcePath||ka.isAbsolute(n.sourcePath))throw new Error(`Taskset asset ${o.id} requires a relative source path.`);let d=ka.resolve(e,n.sourcePath);if(!d.startsWith(`${e}${ka.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);if(!(await fc(d)).startsWith(`${e}${ka.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);let l=await mp(d,ri.O_RDONLY|ri.O_NOFOLLOW|ri.O_NONBLOCK);try{let f=await l.stat();if(!f.isFile()||f.size!==o.sizeBytes)throw new Error(`Taskset asset ${o.id} differs from its immutable file size.`);if(4*Math.ceil(f.size/3)+s>Ge)throw new Error("Local Taskset files exceed the package envelope.");let p=Buffer.alloc(f.size),u=0;for(;u<p.length;){let h=await l.read(p,u,p.length-u,u);if(!h.bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);u+=h.bytesRead}if((await l.read(Buffer.alloc(1),0,1,u)).bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);i(o,p)}finally{await l.close()}}for(let n of[...a.content.modelResources?.assets??[],...a.content.learningResources?.assets??[]])r.has(n.asset.id)||i(n.asset,Buffer.from(V(n,n.asset),"utf8"));if(a.content.learningResources)for(let n of us(a.content.learningResources))r.has(n.asset.id)||i(n.asset,Buffer.from(n.base64,"base64"));if(a.fileOrder){if(new Set(a.fileOrder).size!==t.length||a.fileOrder.length!==t.length||a.fileOrder.some(o=>!r.has(o)))throw new Error("Saved package file order differs from its inventory.");let n=new Map(a.fileOrder.map((o,d)=>[o,d]));t.sort((o,d)=>n.get(o.asset.id)-n.get(d.asset.id))}return Qa({...a.content,files:t})}c(Dt,"captureLocalTasksetPackage");async function _c(a){let e=De({taskset:a.taskset,adapterId:ye(a.taskset)}),t=await Dt({root:a.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:e.tasksetRelease,environment:e.environmentRelease,verifierSet:e.verifierSetRelease},sources:Fe.parse(a.taskset.metadata.portableFileInventory??[])}),r=a.preparation.authoringGraph==="bound"?await ke(a.home,a.preparation.sourcePackageHash):void 0,s=mo({preparation:a.preparation,edited:t,source:r});if(s.modelResources){let p=It({package:s,profileId:a.taskset.profileId,name:a.taskset.name,createdAt:a.taskset.createdAt}),u=F.parse({...p.taskset,authoringProvenance:a.taskset.authoringProvenance,metadata:{...p.taskset.metadata,sourcePackageHash:a.taskset.metadata.sourcePackageHash}}),T=F.parse({...u,contentHash:ie(u)});return await ya({home:a.home,...p,taskset:T}),{taskset:T,directory:Tp.join(a.home,"training","tasksets",String(T.environment.metadata.runtimeSourceTasksetId))}}let i=Fe.parse(a.taskset.metadata.portableFileInventory??[]),n=s.files.map(p=>({asset:p.asset,sourcePath:i.find(u=>u.asset.id===p.asset.id)?.sourcePath??p.asset.path})),o=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(p=>p.asset.path==="environment/execution.json"):void 0,d=`model-draft-${y({packageHash:s.contentHash,taskset:a.taskset})}`,m=F.parse({...a.taskset,id:s.taskset.id,revision:s.taskset.revision,metadata:{...a.taskset.metadata,portableFileInventory:n,importedPackageHash:s.contentHash,derivedPortableMetadata:s.taskset.metadata},environment:{...a.taskset.environment,metadata:{...a.taskset.environment.metadata,runtimeSourceTasksetId:d,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),l=F.parse({...m,contentHash:ie(m)}),f=await tt(a.home,{taskset:l,generatedFiles:o?[{path:o.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(_t(o))}]:[]},d,{source:{directory:a.directory,packageHash:await G(a.directory)},verify:c(p=>xt(p,l),"verify")});return await st(a.home,s),{directory:f,taskset:l}}c(_c,"materializeModelTasksetDraftPublication");import{constants as si}from"node:fs";import{createHash as fp}from"node:crypto";import{lstat as gc,mkdir as Ep,open as _p,readdir as hp,rm as hc}from"node:fs/promises";import Ar from"node:path";var it=c((a,e)=>ko(Ar.join(a,"state","taskset-draft-writes"),e),"withTasksetDraftLock"),wc=jn,gp=c(a=>fp("sha256").update(a).digest("hex"),"digest");async function Cr(a,e,t=!1){Ka.parse(e);let r=a;for(let s of["",...e.split("/").slice(0,-1)]){s&&(r=Ar.join(r,s)),t&&await Ep(r,{recursive:!1}).catch(n=>{if(n.code!=="EEXIST")throw n});let i=await gc(r);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return Ar.join(a,e)}c(Cr,"regularPath");async function Rc(a,e){let t=await Cr(a,e),r=await _p(t,si.O_RDONLY|si.O_NOFOLLOW|si.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Fn)throw new Error("Taskset draft file must be a regular file within the 6 MB editing limit.");let i=Buffer.alloc(s.size),n=0;for(;n<i.length;){let o=await r.read(i,n,i.length-n,n);if(!o.bytesRead)throw new Error("Taskset draft file changed during reading.");n+=o.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset draft file changed during reading.");return i}finally{await r.close()}}c(Rc,"readBytes");async function yc(a,e){let t=await Rc(a,e);return Bn(e,t)}c(yc,"readTasksetDraftFile");async function kc(a){let e=[];async function t(r=""){for(let s of await hp(Ar.join(a,r),{withFileTypes:!0})){let i=r?`${r}/${s.name}`:s.name;if(Ka.parse(i),s.isSymbolicLink())throw new Error("Taskset draft files cannot contain symbolic links.");if(s.isDirectory()){await t(i);continue}if(!s.isFile())throw new Error("Taskset draft files must be regular files.");if(e.length>=1e4)throw new Error("Taskset draft file inventory exceeds its limit.");let n=await gc(await Cr(a,i));if(!n.isFile()||n.isSymbolicLink())throw new Error("Taskset draft files must be regular files.");e.push({path:i,sizeBytes:n.size,writable:wc(i)})}}return c(t,"visit"),await Cr(a,"taskset.json"),await t(),e.sort((r,s)=>r.path.localeCompare(s.path))}c(kc,"listTasksetDraftFiles");async function Nc(a,e,t){if(!wc(e.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let r=null;try{r=await Rc(a,e.path)}catch(n){if(n.code!=="ENOENT")throw n}if((r?gp(r):null)!==e.expectedFileHash)throw new Error("Taskset draft file changed. Reload it before saving.");if(!r&&e.content===null)throw new Error("Taskset draft file does not exist.");let s=e.content?qn(e.content):null,i=await Cr(a,e.path,!0);s?await vs(i,s):await hc(i);try{return await t()}catch(n){throw r?await vs(i,r):await hc(i,{force:!0}),n}}c(Nc,"mutateTasksetDraftFile");function Pr(a,e){let{taskset:t,package:r}=e,s=t.profileId,i=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[t.id,t.revision]);if(i&&X(F.parse(JSON.parse(i.payload)))!==X(t))throw new Error("Imported Taskset revision conflicts with an existing immutable local revision.");let n=a.get("SELECT payload FROM tasksets WHERE id = ?",[t.id]),o=n?F.parse(JSON.parse(n.payload)):null;if(o&&o.profileId!==s)throw new Error("Imported Taskset belongs to another Profile.");K(a,s,"package",r.taskset);let d=r.modelResources;if(d){K(a,s,"definition",d.taskDefinition),K(a,s,"binding",d.rewardBinding);for(let l of d.rewards)K(a,s,"reward",l);for(let l of d.assets)K(a,s,"asset",l);K(a,s,"asset",ze({environment:r.environment,verifierSet:r.verifierSet})),d.execution&&K(a,s,"asset",Xe(d.execution))}let m=JSON.stringify(t);i||a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[t.id,t.revision,t.contentHash,s,t.status,m,t.createdAt,t.updatedAt]),(!o||o.revision<t.revision)&&a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at",[t.id,s,t.status,m,t.createdAt,t.updatedAt])}c(Pr,"importTasksetPackageInTransaction");var ce=E.object({schemaVersion:E.literal("openpond.tasksetDraftPointer.v1"),id:E.string().trim().min(1),profileId:E.string().trim().min(1),modelScope:Te.shape.modelScope,status:E.enum(["draft","validating","needs_review","published"]),revision:E.number().int().positive(),workspacePath:E.string().trim().min(1),packageHash:E.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:E.object({id:E.string().trim().min(1),revision:E.number().int().positive(),contentHash:E.string().trim().min(8)}).nullable(),createdAt:E.string().trim().min(1),updatedAt:E.string().trim().min(1)}),xr=class extends vr{static{c(this,"SqliteTasksetDraftStore")}async initializeModelTasksetDraft(e,t,r){await this.ready;let s=this.writeQueue.then(()=>it(this.home,async()=>{let i=this.database,n=await mc({db:i,home:this.home,profileId:e,request:t,source:r});if(!n)return null;let o=c(()=>{let l=i.get("SELECT state FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]);if(l?.state==="deleted")throw new Error("This Taskset draft was deleted.");let f=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);if(!f){if(l?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let p=ce.parse(JSON.parse(f.payload));if(p.profileId!==e||p.modelScope?.source?.requestHash!==n.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),d=this.workspacePath(n.draft.id);await Tc({home:this.home,initialized:n,workspacePath:d,completed:o,retainHash:c(l=>{let f=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),p=Mt.parse(JSON.parse(f.payload));if(p.workspaceHash&&p.workspaceHash!==l.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(l),e,t.operationId])},"retainHash")}),i.exec("BEGIN IMMEDIATE");try{if(!o()){let l=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),f=Mt.parse(JSON.parse(l.payload)),p=f.draft,u=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:p.id,profileId:e,modelScope:p.modelScope,status:p.status,revision:p.revision,workspacePath:d,packageHash:f.workspaceHash,publishedTasksetRef:p.publishedTasksetRef,createdAt:p.createdAt,updatedAt:p.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[p.id,e,p.status,p.revision,JSON.stringify(u),p.createdAt,p.updatedAt]),i.run("UPDATE model_taskset_draft_operations SET state = 'ready' WHERE profile_id = ? AND operation_id = ?",[e,t.operationId])}i.exec("COMMIT")}catch(l){throw i.exec("ROLLBACK"),l}let m=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);return this.draftFromStoredPayload(JSON.parse(m.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(e,t,r={}){let s=Te.parse(e);await this.ready;let i=this.writeQueue.then(()=>it(this.home,async()=>{let n=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[s.id]),o=n?ce.safeParse(JSON.parse(n.payload)):null;if(o?.success){if(o.data.profileId!==s.profileId)throw new Error("Taskset draft profile cannot change.");if(y(o.data.modelScope?{...o.data.modelScope,expectedModelRevision:0}:null)!==y(s.modelScope?{...s.modelScope,expectedModelRevision:0}:null)||!r.refreshModelRevision&&y(o.data.modelScope)!==y(s.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.data.status==="published")throw new Error("Published Taskset drafts are immutable. Initialize a new draft to revise the Taskset.");if(s.revision<o.data.revision||t!==void 0&&o.data.revision!==t)throw new Error("Taskset draft changed before saving. Refresh before saving.")}else if(t!==void 0)throw new Error("Taskset draft is unavailable for saving.");if((!o?.success||r.refreshModelRevision)&&s.modelScope){let p=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!p)throw new Error("Taskset draft Model was not found in this Profile.");if(B.parse(JSON.parse(p.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let d=this.workspacePath(s.id),l=(await na(s,d)).draft,f=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:l.id,profileId:l.profileId,modelScope:l.modelScope,status:l.status,revision:l.revision,workspacePath:d,packageHash:await G(d),publishedTasksetRef:l.publishedTasksetRef,createdAt:l.createdAt,updatedAt:l.updatedAt});return await this.savePointer(f,!0),l}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(e){let t=Na.resolve(e.packagePath),s=(await Np(t)).isDirectory()?t:Na.dirname(t);await vc(s);let i=await G(s),n=await Ns(s),o=await this.getTasksetDraft(n.id);if(o){let p=o.metadata.importedTasksetPackage;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.packageHash===i&&o.profileId===e.profileId)return o;throw new Error(`Taskset draft ${n.id} already exists. Import a package with a distinct Taskset id.`)}let d=Te.parse({...n,profileId:e.profileId,modelScope:null,status:"draft",revision:1,publishedTasksetRef:null,metadata:{...n.metadata,importedTasksetPackage:{packageHash:i,importedAt:new Date().toISOString()}},updatedAt:new Date().toISOString()}),m=this.workspacePath(d.id),l=`${m}.import-${process.pid}-${Date.now()}`;await yp(Na.dirname(m),{recursive:!0});try{await Rp(s,l,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await na(d,l),await ii(l,m)}catch(p){throw await Sc(l,{recursive:!0,force:!0}),p}let f=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:d.id,profileId:d.profileId,status:d.status,revision:d.revision,workspacePath:m,packageHash:await G(m),publishedTasksetRef:d.publishedTasksetRef,createdAt:d.createdAt,updatedAt:d.updatedAt});return await this.savePointer(f),this.draftFromStoredPayload(f)}async materializePublishedTasksetPackage(e){let t=await this.getTasksetDraftWorkspace(e.draftId);if(!t)throw new Error(`Taskset draft ${e.draftId} workspace was not found.`);if(e.taskset.metadata.sourcePackageHash!==void 0&&e.taskset.metadata.sourcePackageHash!==t.packageHash)throw new Error("Taskset draft files changed before publication. Refresh before publishing.");let r=`draft-${y({taskset:e.taskset,packageHash:t.packageHash})}`,s=await Yd(e.taskset,t.workspacePath),i=F.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:t.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:r}}}),n=F.parse({...i,contentHash:ie(i)}),o=await tt(this.home,{taskset:n,generatedFiles:s.generatedFiles},r,{source:{directory:t.workspacePath,packageHash:t.packageHash},verify:c(m=>xt(m,n),"verify")}),d=await this.getTasksetDraft(e.draftId);return d?.modelScope?.source?_c({home:this.home,directory:o,taskset:n,preparation:d.modelScope.source}):{directory:o,taskset:n}}async finalizeTasksetDraftPublication(e){await this.ready;let t=Te.parse(e.draft),r=F.parse(e.taskset),s=t.modelScope?.source?.authoringGraph==="bound"&&typeof r.metadata.importedPackageHash=="string"?await ke(this.home,r.metadata.importedPackageHash):null,i=this.writeQueue.then(()=>it(this.home,async()=>{let n=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[t.id]);if(!n)throw new Error("Taskset draft was deleted before publication.");let o=ce.parse(JSON.parse(n.payload));if(o.profileId!==t.profileId||r.profileId!==t.profileId)throw new Error("Taskset publication belongs to another Profile.");if(y(o.modelScope)!==y(t.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.status==="published"&&o.publishedTasksetRef){let p=o.publishedTasksetRef,u=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[p.id,p.revision,p.contentHash]);if(!u)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:Te.parse({...t,status:o.status,revision:o.revision,publishedTasksetRef:p,updatedAt:o.updatedAt}),taskset:F.parse(JSON.parse(u.payload))}}if(o.revision!==t.revision||r.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let d=o.modelScope?.source,m=d?.authoringGraph==="bound"&&r.metadata.modelTasksetDerivation&&typeof r.metadata.modelTasksetDerivation=="object"?{...r.metadata.modelTasksetDerivation,schemaVersion:d.lineage.schemaVersion}:r.metadata.modelTasksetAuthoring;if(d&&(r.id!==d.tasksetId||r.revision!==d.tasksetRevision||y(m)!==y(d.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let l=Te.parse({...t,status:"published",revision:t.revision+1,publishedTasksetRef:{id:r.id,revision:r.revision,contentHash:r.contentHash},updatedAt:new Date().toISOString()}),f=ce.parse({...o,status:l.status,revision:l.revision,publishedTasksetRef:l.publishedTasksetRef,updatedAt:l.updatedAt});return Or(this.database,r,()=>{if(s&&Pr(this.database,{package:s,taskset:r,generatedFiles:[]}),nc(this.database,t,r,s),this.database.get("SELECT revision FROM taskset_drafts WHERE id = ?",[t.id])?.revision!==t.revision)throw new Error("Taskset draft changed during publication.");this.database.run("UPDATE taskset_drafts SET status = ?, revision = ?, payload = ?, updated_at = ? WHERE id = ?",[f.status,f.revision,JSON.stringify(f),f.updatedAt,t.id])}),{draft:l,taskset:r}}));return this.writeQueue=i.then(()=>{},()=>{}),i}async getTasksetDraft(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],r=>r);return t===null?null:this.draftFromStoredPayload(t)}async listTasksetDrafts(e){await this.ready,await this.writeQueue;let t=await this.all(e?"SELECT payload FROM taskset_drafts WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM taskset_drafts ORDER BY updated_at DESC",e?[e]:[]);return Promise.all(t.map(r=>this.draftFromStoredPayload(JSON.parse(r.payload))))}async getTasksetDraftWorkspace(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],s=>s);if(t===null)return null;let r=await this.pointerFromStoredPayload(t);return{draftId:r.id,workspacePath:r.workspacePath,packageHash:await G(r.workspacePath)}}async deleteTasksetDraft(e){await this.ready;let t=this.writeQueue.then(()=>it(this.home,async()=>{let r=this.workspacePath(e),s=`${r}.delete-${wp()}`,i=!1;try{await ii(r,s),i=!0}catch(n){if(n.code!=="ENOENT")throw n}try{this.database.exec("BEGIN IMMEDIATE");try{this.database.run("DELETE FROM taskset_drafts WHERE id = ?",[e]),this.database.run("UPDATE model_taskset_draft_operations SET state = 'deleted' WHERE draft_id = ?",[e]),this.database.exec("COMMIT")}catch(n){throw this.database.exec("ROLLBACK"),n}}catch(n){throw i&&await ii(s,r).catch(()=>{}),n}i&&await Sc(s,{recursive:!0,force:!0})}));this.writeQueue=t.catch(()=>{}),await t}async tasksetDraftFiles(e,t,r){return await this.ready,it(this.home,async()=>{let s=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ? AND profile_id = ?",[t,e]);if(!s)throw new Error("Taskset draft was not found in this Profile.");let i=ce.parse(JSON.parse(s.payload));if(r!==void 0){let o=await yc(i.workspacePath,r);return{draftRevision:i.revision,file:{...o,writable:o.writable&&i.status!=="published"}}}let n=await kc(i.workspacePath);return{draftRevision:i.revision,files:n.map(o=>({...o,writable:o.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(e,t){let r=is.parse(t);await this.ready;let s=this.writeQueue.then(()=>it(this.home,async()=>{let i=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ? AND profile_id = ?",[r.draftId,e]);if(!i)throw new Error("Taskset draft was not found in this Profile.");let n=ce.parse(JSON.parse(i.payload));if(n.status==="published")throw new Error("Published Taskset drafts are immutable.");if(n.revision!==r.expectedDraftRevision)throw new Error("Taskset draft changed. Reload before saving a file.");return Nc(n.workspacePath,r,async()=>{let o=ce.parse({...n,revision:n.revision+1,packageHash:await G(n.workspacePath),updatedAt:new Date().toISOString()}),d=await this.draftFromStoredPayload(o);this.database.exec("BEGIN IMMEDIATE");try{if(this.database.get("SELECT revision FROM taskset_drafts WHERE id = ? AND profile_id = ?",[r.draftId,e])?.revision!==n.revision)throw new Error("Taskset draft changed during file saving.");this.database.run("UPDATE taskset_drafts SET revision = ?, payload = ?, updated_at = ? WHERE id = ?",[o.revision,JSON.stringify(o),o.updatedAt,o.id]),this.database.exec("COMMIT")}catch(m){throw this.database.exec("ROLLBACK"),m}return d})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(e){let t=y(e).slice(0,24);return Na.join(this.home,"workspaces","tasksets",`taskset-${t}`)}async draftFromStoredPayload(e){let t=await this.pointerFromStoredPayload(e),r=await Ns(t.workspacePath);return Te.parse({...r,id:t.id,profileId:t.profileId,modelScope:t.modelScope,status:t.status,revision:t.revision,publishedTasksetRef:t.publishedTasksetRef,createdAt:t.createdAt,updatedAt:t.updatedAt})}async pointerFromStoredPayload(e){let t=ce.safeParse(e);if(t.success)return t.data;let r=Te.parse(e);await this.saveTasksetDraft(r);let s=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[r.id],ce.parse);if(!s)throw new Error(`Taskset draft ${r.id} migration failed.`);return s}async savePointer(e,t=!1){await(t?this.run.bind(this):this.upsertPayload.bind(this))(`INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at)
2142
+ ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[R.id,R.profileId,JSON.stringify(R),R.createdAt,R.updatedAt]),a.run("INSERT INTO model_project_save_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[R.profileId,o,i,JSON.stringify(R)]),R}c(Ra,"saveModelProjectInTransaction");function Ql(a,e){let t=e.project.trainingSetup.tasksetRef;if(!t){e.project.trainingSetup.tasksetRelease&&he(400,"model_taskset_required","Choose the Taskset corresponding to this release.");return}let r=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[t.id,t.revision]),s=r?F.parse(JSON.parse(r.payload)):null;return(!s||s.profileId!==e.project.profileId)&&he(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),s.contentHash!==t.contentHash&&he(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash."),s}c(Ql,"assertTaskset");function Zl(a,e){let t=e.project.trainingSetup.rewardBindingRef;if(!t)return;function r(i,n){let o=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.project.profileId,i,n.id,n.revision]);o||he(404,"model_reward_unavailable","The exact Reward configuration is unavailable in this Profile.");let d=(i==="binding"?qt:Je).parse(JSON.parse(o.payload));return d.contentHash!==n.contentHash&&he(409,"model_reward_changed","The selected Reward does not match its immutable content hash."),ue(d),d}c(r,"read");let s=qt.parse(r("binding",t));for(let i of s.sources)r("reward",i.reward)}c(Zl,"assertReward");function he(a,e,t){throw new xe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(he,"fail");function nc(a,e,t,r){let s=e.modelScope;if(!s)return;let i=a.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e.profileId]);if(!i)throw new Error("Taskset draft Model was not found in this Profile.");let n=B.parse(JSON.parse(i.payload)),o={id:t.id,revision:t.revision,contentHash:t.contentHash};return Ra(a,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${y({draftId:e.id,revision:e.revision,scope:s,tasksetRef:o})}`,expectedRevision:s.expectedModelRevision,project:Tn.strip().parse({...n,trainingSetup:{...n.trainingSetup,tasksetRef:o,rewardBindingRef:t.metadata.rewardBinding===void 0?null:Z.parse(t.metadata.rewardBinding),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&n.trainingSetup.tasksetRef&&C(n.trainingSetup.evaluationTasksetRef,n.trainingSetup.tasksetRef)?{evaluationTasksetRef:o}:{}}})},null,r?.modelResources?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:r??void 0)}c(nc,"selectTasksetDraftModel");import{createHash as np,randomUUID as op}from"node:crypto";import{lstat as uc,mkdir as pc,readdir as dp,readFile as cp,rename as lp,rm as pp,writeFile as up}from"node:fs/promises";import Xt from"node:path";import{constants as ei}from"node:fs";import{link as ep,lstat as tp,mkdir as ti,mkdtemp as oc,open as ap,readFile as rp,readdir as sp,rename as ip,rm as dc,writeFile as cc}from"node:fs/promises";import Q from"node:path";async function rw(a,e){let t=e.metadata.importedPackageHash;if(t===void 0)return;if(typeof t!="string"||!a)throw new Error("Imported batch requires its package storage directory.");let r=await ke(a,t);if(!r.learningResources||r.taskset.id!==e.id||r.taskset.revision!==e.revision||y(Fa(r.taskset))!==y(e.metadata.learning))throw new Error("Imported batch differs from its pinned package.");return r}c(rw,"readImportedLearningTasksetPackage");async function st(a,e){let t=Me(e),r=Q.join(a,"training","portable-packages");await ti(r,{recursive:!0});let s=Q.join(r,`${t.contentHash}.json`),i=await oc(Q.join(r,".package-"));try{let n=Q.join(i,"package.json");await cc(n,JSON.stringify(t),{flag:"wx",mode:384});try{await ep(n,s)}catch(o){if(o.code!=="EEXIST")throw o;await ke(a,t.contentHash)}}finally{await dc(i,{recursive:!0,force:!0})}}c(st,"cacheTasksetPackage");async function ke(a,e){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid Taskset package cache identity.");let t=Q.join(a,"training","portable-packages",`${e}.json`),r=await ap(t,ei.O_RDONLY|ei.O_NOFOLLOW|ei.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Ge)throw new Error("Taskset package cache must be a bounded regular file.");let i=Buffer.alloc(s.size),n=0;for(;n<i.length;){let d=await r.read(i,n,i.length-n,n);if(!d.bytesRead)throw new Error("Taskset package cache changed during read.");n+=d.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset package cache changed during read.");let o=Me(JSON.parse(i.toString("utf8")));if(o.contentHash!==e)throw new Error("Cached Taskset package differs from its saved receipt.");return o}finally{await r.close()}}c(ke,"readCachedTasksetPackage");async function ya(a){let e=Me(a.package),t=Ns(a.taskset.profileId,e.contentHash);if(a.taskset.environment.metadata.runtimeSourceTasksetId!==t)throw new Error("Imported Taskset directory differs from its package identity.");let r=new Map,s=c((d,m)=>{if(Q.isAbsolute(d)||d.includes("\\")||d.split("/").some(f=>!f||f==="."||f===".."))throw new Error("Taskset package file requires a safe relative path.");let l=r.get(d);if(l&&!Buffer.from(l).equals(Buffer.from(m)))throw new Error(`Taskset package files collide at ${d}.`);r.set(d,m)},"add");for(let d of e.files)s(d.asset.path,_t(d));for(let d of a.generatedFiles)s(d.path,Buffer.from(d.content,"utf8"));s("taskset.json",Buffer.from(JSON.stringify(a.taskset),"utf8"));let i=Q.join(a.home,"training","tasksets");await ti(i,{recursive:!0});let n=await oc(Q.join(i,".package-import-")),o=Q.join(i,t);try{for(let[d,m]of r)await ti(Q.dirname(Q.join(n,d)),{recursive:!0}),await cc(Q.join(n,d),m,{flag:"wx",mode:384});try{await ip(n,o)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;let m=await tp(o);if(!m.isDirectory()||m.isSymbolicLink())throw new Error("Imported Taskset destination must be a regular directory.");let l=await lc(o);if(JSON.stringify(l.sort())!==JSON.stringify([...r.keys()].sort()))throw new Error("Imported Taskset file inventory changed.");for(let[f,p]of r)if(!(await rp(Q.join(o,f))).equals(Buffer.from(p)))throw new Error("Imported Taskset files differ from the pinned package.")}await st(a.home,e)}finally{await dc(n,{recursive:!0,force:!0})}}c(ya,"materializeImportedTasksetPackage");async function lc(a,e=""){let t=[];for(let r of await sp(Q.join(a,e),{withFileTypes:!0})){let s=Q.posix.join(e,r.name);if(r.isSymbolicLink())throw new Error("Imported Taskset directories cannot contain symbolic links.");if(r.isDirectory())t.push(...await lc(a,s));else if(r.isFile())t.push(s);else throw new Error("Imported Taskset packages require regular files.")}return t}c(lc,"regularFiles");var Mt=go.extend({workspaceHash:E.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function mc(a){let{db:e,profileId:t}=a,r=ss.parse(a.request),s=c(()=>{let k=e.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[r.modelId,t]);if(!k)throw new Error("Taskset draft Model was not found in this Profile.");return B.parse(JSON.parse(k.payload))},"requireModel"),i=s(),n=y(r),o=e.get("SELECT request_hash, state, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(o){if(o.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(o.state==="deleted")throw new Error("This Taskset draft was deleted.");return Mt.parse(JSON.parse(o.payload))}if(!a.source)return null;if(i.revision!==r.expectedModelRevision)throw new Error("Model changed before draft initialization. Refresh before editing.");let d=i.trainingSetup.tasksetRef,m=d?e.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[d.id,d.revision,t]):null,l=m?F.parse(JSON.parse(m.payload)):null;if(!l||!d||l.contentHash!==d.contentHash)throw new Error("The selected source Taskset is unavailable.");let f=a.source,p=i.hosted?.apiOrigin?i.hosted.tasksets.find(k=>k.localTasksetId===l.id&&k.localTasksetHash===l.contentHash&&k.packageHash===f.contentHash&&k.releaseId===f.taskset.id&&k.releaseRevision===f.taskset.revision&&k.releaseHash===f.taskset.contentHash):null,u=typeof l.metadata.importedPackageHash=="string"?l.metadata.importedPackageHash:p?.packageHash;if(u?u!==f.contentHash:!C(I(De({taskset:l,adapterId:ye(l)}).tasksetRelease),I(f.taskset)))throw new Error("Taskset draft package differs from its selected source.");let T=f.modelResources?Et.safeParse(f.taskset.metadata.modelTasksetDerivation):rs.safeParse(f.taskset.metadata.modelTasksetAuthoring),h=p&&T.success&&T.data.owner.modelId===i.id?T.data.owner:{scopeId:t,modelId:i.id},g=uo({request:r,owner:h,source:f}),w=wo({sourceDraft:er(l),source:f,preparation:g,expectedModelRevision:r.expectedModelRevision});await st(a.home,f);let R=Mt.parse({...w,workspaceHash:null}),N=R.draft;e.exec("BEGIN IMMEDIATE");try{let k=e.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(k&&k.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(!k&&s().revision!==r.expectedModelRevision)throw new Error("Model changed during draft initialization. Refresh before editing.");e.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",[t,r.operationId,n,N.id,JSON.stringify(R)]),e.exec("COMMIT")}catch(k){throw e.exec("ROLLBACK"),k}let _=e.get("SELECT request_hash, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(!_||_.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");return Mt.parse(JSON.parse(_.payload))}c(mc,"prepareDraftInitialization");async function Tc(a){let{initialized:e,workspacePath:t}=a;if(a.completed())return;if(e.workspaceHash)try{if(await uc(t),a.completed())return;if(await ai(t),await G(t)!==e.workspaceHash)throw new Error("Prepared Taskset draft files changed before initialization completed.");return}catch(s){if(s.code!=="ENOENT")throw s}let r=`${t}.initializing-${op()}`;await pc(Xt.dirname(t),{recursive:!0});try{let s=e.draft.modelScope?.source;if(!s)throw new Error("Taskset draft lost its source preparation.");let i=await ke(a.home,s.sourcePackageHash),n=new Map;for(let d of e.filePaths){let m=i.files.find(l=>l.asset.id===d.assetId);if(!m)throw new Error("Taskset draft source asset is missing.");for(let l of d.paths){if(l.includes("\\")||Xt.posix.isAbsolute(l)||l.split("/").some(u=>!u||u==="."||u===".."||u.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let f=n.get(l);if(f&&f!==m.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(f)continue;let p=Xt.join(r,l);await pc(Xt.dirname(p),{recursive:!0}),await up(p,_t(m),{flag:"wx"}),n.set(l,m.asset.contentHash)}}await na(e.draft,r);for(let[d,m]of n)if(np("sha256").update(await cp(Xt.join(r,d))).digest("hex")!==m)throw new Error(`Taskset draft source asset conflicts with authoring file ${d}.`);let o=await G(r);if(a.retainHash({...e,workspaceHash:o}),a.completed())return;try{await lp(r,t)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;if(a.completed())return;if(await ai(t),await G(t)!==o)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await pp(r,{recursive:!0,force:!0})}}c(Tc,"materializeDraftInitialization");async function ai(a){let e=await uc(a);if(!e.isDirectory()||e.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let t of await dp(a,{withFileTypes:!0})){if(t.name.startsWith(".env")||t.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(t.isDirectory())await ai(Xt.join(a,t.name));else if(!t.isFile())throw new Error("Taskset draft source must contain regular files.")}}c(ai,"assertRegularTree");import Tp from"node:path";import{constants as ri}from"node:fs";import{open as mp,realpath as fc}from"node:fs/promises";import ka from"node:path";function Ec(a,e){return e?new Set:new Set([...(a.modelResources?.assets??[]).map(t=>t.asset.id),...(a.learningResources?.assets??[]).map(t=>t.asset.id),...a.learningResources?us(a.learningResources).map(t=>t.asset.id):[]])}c(Ec,"tasksetPackageInlineAssetIds");async function Dt(a){let e=a.sources.length?await fc(a.root):ka.resolve(a.root),t=[],r=new Set,s=0,i=c((n,o)=>{if(r.has(n.id))throw new Error(`Duplicate local Taskset asset: ${n.id}.`);if(r.add(n.id),s+=4*Math.ceil(o.byteLength/3),s>Ge)throw new Error("Local Taskset files exceed the package envelope.");t.push({asset:n,base64:Buffer.from(o).toString("base64")})},"append");for(let n of a.sources){let o=gi.parse(n.asset);if(!n.sourcePath||ka.isAbsolute(n.sourcePath))throw new Error(`Taskset asset ${o.id} requires a relative source path.`);let d=ka.resolve(e,n.sourcePath);if(!d.startsWith(`${e}${ka.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);if(!(await fc(d)).startsWith(`${e}${ka.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);let l=await mp(d,ri.O_RDONLY|ri.O_NOFOLLOW|ri.O_NONBLOCK);try{let f=await l.stat();if(!f.isFile()||f.size!==o.sizeBytes)throw new Error(`Taskset asset ${o.id} differs from its immutable file size.`);if(4*Math.ceil(f.size/3)+s>Ge)throw new Error("Local Taskset files exceed the package envelope.");let p=Buffer.alloc(f.size),u=0;for(;u<p.length;){let h=await l.read(p,u,p.length-u,u);if(!h.bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);u+=h.bytesRead}if((await l.read(Buffer.alloc(1),0,1,u)).bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);i(o,p)}finally{await l.close()}}for(let n of[...a.content.modelResources?.assets??[],...a.content.learningResources?.assets??[]])r.has(n.asset.id)||i(n.asset,Buffer.from(V(n,n.asset),"utf8"));if(a.content.learningResources)for(let n of us(a.content.learningResources))r.has(n.asset.id)||i(n.asset,Buffer.from(n.base64,"base64"));if(a.fileOrder){if(new Set(a.fileOrder).size!==t.length||a.fileOrder.length!==t.length||a.fileOrder.some(o=>!r.has(o)))throw new Error("Saved package file order differs from its inventory.");let n=new Map(a.fileOrder.map((o,d)=>[o,d]));t.sort((o,d)=>n.get(o.asset.id)-n.get(d.asset.id))}return Qa({...a.content,files:t})}c(Dt,"captureLocalTasksetPackage");async function _c(a){let e=De({taskset:a.taskset,adapterId:ye(a.taskset)}),t=await Dt({root:a.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:e.tasksetRelease,environment:e.environmentRelease,verifierSet:e.verifierSetRelease},sources:Fe.parse(a.taskset.metadata.portableFileInventory??[])}),r=a.preparation.authoringGraph==="bound"?await ke(a.home,a.preparation.sourcePackageHash):void 0,s=mo({preparation:a.preparation,edited:t,source:r});if(s.modelResources){let p=It({package:s,profileId:a.taskset.profileId,name:a.taskset.name,createdAt:a.taskset.createdAt}),u=F.parse({...p.taskset,authoringProvenance:a.taskset.authoringProvenance,metadata:{...p.taskset.metadata,sourcePackageHash:a.taskset.metadata.sourcePackageHash}}),T=F.parse({...u,contentHash:ie(u)});return await ya({home:a.home,...p,taskset:T}),{taskset:T,directory:Tp.join(a.home,"training","tasksets",String(T.environment.metadata.runtimeSourceTasksetId))}}let i=Fe.parse(a.taskset.metadata.portableFileInventory??[]),n=s.files.map(p=>({asset:p.asset,sourcePath:i.find(u=>u.asset.id===p.asset.id)?.sourcePath??p.asset.path})),o=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(p=>p.asset.path==="environment/execution.json"):void 0,d=`model-draft-${y({packageHash:s.contentHash,taskset:a.taskset})}`,m=F.parse({...a.taskset,id:s.taskset.id,revision:s.taskset.revision,metadata:{...a.taskset.metadata,portableFileInventory:n,importedPackageHash:s.contentHash,derivedPortableMetadata:s.taskset.metadata},environment:{...a.taskset.environment,metadata:{...a.taskset.environment.metadata,runtimeSourceTasksetId:d,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),l=F.parse({...m,contentHash:ie(m)}),f=await tt(a.home,{taskset:l,generatedFiles:o?[{path:o.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(_t(o))}]:[]},d,{source:{directory:a.directory,packageHash:await G(a.directory)},verify:c(p=>xt(p,l),"verify")});return await st(a.home,s),{directory:f,taskset:l}}c(_c,"materializeModelTasksetDraftPublication");import{constants as si}from"node:fs";import{createHash as fp}from"node:crypto";import{lstat as gc,mkdir as Ep,open as _p,readdir as hp,rm as hc}from"node:fs/promises";import Ar from"node:path";var it=c((a,e)=>ko(Ar.join(a,"state","taskset-draft-writes"),e),"withTasksetDraftLock"),wc=jn,gp=c(a=>fp("sha256").update(a).digest("hex"),"digest");async function Cr(a,e,t=!1){Ka.parse(e);let r=a;for(let s of["",...e.split("/").slice(0,-1)]){s&&(r=Ar.join(r,s)),t&&await Ep(r,{recursive:!1}).catch(n=>{if(n.code!=="EEXIST")throw n});let i=await gc(r);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return Ar.join(a,e)}c(Cr,"regularPath");async function Rc(a,e){let t=await Cr(a,e),r=await _p(t,si.O_RDONLY|si.O_NOFOLLOW|si.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Fn)throw new Error("Taskset draft file must be a regular file within the 6 MB editing limit.");let i=Buffer.alloc(s.size),n=0;for(;n<i.length;){let o=await r.read(i,n,i.length-n,n);if(!o.bytesRead)throw new Error("Taskset draft file changed during reading.");n+=o.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset draft file changed during reading.");return i}finally{await r.close()}}c(Rc,"readBytes");async function yc(a,e){let t=await Rc(a,e);return Bn(e,t)}c(yc,"readTasksetDraftFile");async function kc(a){let e=[];async function t(r=""){for(let s of await hp(Ar.join(a,r),{withFileTypes:!0})){let i=r?`${r}/${s.name}`:s.name;if(Ka.parse(i),s.isSymbolicLink())throw new Error("Taskset draft files cannot contain symbolic links.");if(s.isDirectory()){await t(i);continue}if(!s.isFile())throw new Error("Taskset draft files must be regular files.");if(e.length>=1e4)throw new Error("Taskset draft file inventory exceeds its limit.");let n=await gc(await Cr(a,i));if(!n.isFile()||n.isSymbolicLink())throw new Error("Taskset draft files must be regular files.");e.push({path:i,sizeBytes:n.size,writable:wc(i)})}}return c(t,"visit"),await Cr(a,"taskset.json"),await t(),e.sort((r,s)=>r.path.localeCompare(s.path))}c(kc,"listTasksetDraftFiles");async function Nc(a,e,t){if(!wc(e.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let r=null;try{r=await Rc(a,e.path)}catch(n){if(n.code!=="ENOENT")throw n}if((r?gp(r):null)!==e.expectedFileHash)throw new Error("Taskset draft file changed. Reload it before saving.");if(!r&&e.content===null)throw new Error("Taskset draft file does not exist.");let s=e.content?qn(e.content):null,i=await Cr(a,e.path,!0);s?await vs(i,s):await hc(i);try{return await t()}catch(n){throw r?await vs(i,r):await hc(i,{force:!0}),n}}c(Nc,"mutateTasksetDraftFile");function Pr(a,e){let{taskset:t,package:r}=e,s=t.profileId,i=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[t.id,t.revision]);if(i&&X(F.parse(JSON.parse(i.payload)))!==X(t))throw new Error("Imported Taskset revision conflicts with an existing immutable local revision.");let n=a.get("SELECT payload FROM tasksets WHERE id = ?",[t.id]),o=n?F.parse(JSON.parse(n.payload)):null;if(o&&o.profileId!==s)throw new Error("Imported Taskset belongs to another Profile.");K(a,s,"package",r.taskset);let d=r.modelResources;if(d){K(a,s,"definition",d.taskDefinition),K(a,s,"binding",d.rewardBinding);for(let l of d.rewards)K(a,s,"reward",l);for(let l of d.assets)K(a,s,"asset",l);K(a,s,"asset",ze({environment:r.environment,verifierSet:r.verifierSet})),d.execution&&K(a,s,"asset",Xe(d.execution))}let m=JSON.stringify(t);i||a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[t.id,t.revision,t.contentHash,s,t.status,m,t.createdAt,t.updatedAt]),(!o||o.revision<t.revision)&&a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at",[t.id,s,t.status,m,t.createdAt,t.updatedAt])}c(Pr,"importTasksetPackageInTransaction");var ce=E.object({schemaVersion:E.literal("openpond.tasksetDraftPointer.v1"),id:E.string().trim().min(1),profileId:E.string().trim().min(1),modelScope:Te.shape.modelScope,status:E.enum(["draft","validating","needs_review","published"]),revision:E.number().int().positive(),workspacePath:E.string().trim().min(1),packageHash:E.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:E.object({id:E.string().trim().min(1),revision:E.number().int().positive(),contentHash:E.string().trim().min(8)}).nullable(),createdAt:E.string().trim().min(1),updatedAt:E.string().trim().min(1)}),xr=class extends vr{static{c(this,"SqliteTasksetDraftStore")}async initializeModelTasksetDraft(e,t,r){await this.ready;let s=this.writeQueue.then(()=>it(this.home,async()=>{let i=this.database,n=await mc({db:i,home:this.home,profileId:e,request:t,source:r});if(!n)return null;let o=c(()=>{let l=i.get("SELECT state FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]);if(l?.state==="deleted")throw new Error("This Taskset draft was deleted.");let f=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);if(!f){if(l?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let p=ce.parse(JSON.parse(f.payload));if(p.profileId!==e||p.modelScope?.source?.requestHash!==n.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),d=this.workspacePath(n.draft.id);await Tc({home:this.home,initialized:n,workspacePath:d,completed:o,retainHash:c(l=>{let f=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),p=Mt.parse(JSON.parse(f.payload));if(p.workspaceHash&&p.workspaceHash!==l.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(l),e,t.operationId])},"retainHash")}),i.exec("BEGIN IMMEDIATE");try{if(!o()){let l=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),f=Mt.parse(JSON.parse(l.payload)),p=f.draft,u=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:p.id,profileId:e,modelScope:p.modelScope,status:p.status,revision:p.revision,workspacePath:d,packageHash:f.workspaceHash,publishedTasksetRef:p.publishedTasksetRef,createdAt:p.createdAt,updatedAt:p.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[p.id,e,p.status,p.revision,JSON.stringify(u),p.createdAt,p.updatedAt]),i.run("UPDATE model_taskset_draft_operations SET state = 'ready' WHERE profile_id = ? AND operation_id = ?",[e,t.operationId])}i.exec("COMMIT")}catch(l){throw i.exec("ROLLBACK"),l}let m=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);return this.draftFromStoredPayload(JSON.parse(m.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(e,t,r={}){let s=Te.parse(e);await this.ready;let i=this.writeQueue.then(()=>it(this.home,async()=>{let n=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[s.id]),o=n?ce.safeParse(JSON.parse(n.payload)):null;if(o?.success){if(o.data.profileId!==s.profileId)throw new Error("Taskset draft profile cannot change.");if(y(o.data.modelScope?{...o.data.modelScope,expectedModelRevision:0}:null)!==y(s.modelScope?{...s.modelScope,expectedModelRevision:0}:null)||!r.refreshModelRevision&&y(o.data.modelScope)!==y(s.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.data.status==="published")throw new Error("Published Taskset drafts are immutable. Initialize a new draft to revise the Taskset.");if(s.revision<o.data.revision||t!==void 0&&o.data.revision!==t)throw new Error("Taskset draft changed before saving. Refresh before saving.")}else if(t!==void 0)throw new Error("Taskset draft is unavailable for saving.");if((!o?.success||r.refreshModelRevision)&&s.modelScope){let p=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!p)throw new Error("Taskset draft Model was not found in this Profile.");if(B.parse(JSON.parse(p.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let d=this.workspacePath(s.id),l=(await na(s,d)).draft,f=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:l.id,profileId:l.profileId,modelScope:l.modelScope,status:l.status,revision:l.revision,workspacePath:d,packageHash:await G(d),publishedTasksetRef:l.publishedTasksetRef,createdAt:l.createdAt,updatedAt:l.updatedAt});return await this.savePointer(f,!0),l}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(e){let t=Na.resolve(e.packagePath),s=(await Np(t)).isDirectory()?t:Na.dirname(t);await vc(s);let i=await G(s),n=await Ss(s),o=await this.getTasksetDraft(n.id);if(o){let p=o.metadata.importedTasksetPackage;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.packageHash===i&&o.profileId===e.profileId)return o;throw new Error(`Taskset draft ${n.id} already exists. Import a package with a distinct Taskset id.`)}let d=Te.parse({...n,profileId:e.profileId,modelScope:null,status:"draft",revision:1,publishedTasksetRef:null,metadata:{...n.metadata,importedTasksetPackage:{packageHash:i,importedAt:new Date().toISOString()}},updatedAt:new Date().toISOString()}),m=this.workspacePath(d.id),l=`${m}.import-${process.pid}-${Date.now()}`;await yp(Na.dirname(m),{recursive:!0});try{await Rp(s,l,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await na(d,l),await ii(l,m)}catch(p){throw await Sc(l,{recursive:!0,force:!0}),p}let f=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:d.id,profileId:d.profileId,status:d.status,revision:d.revision,workspacePath:m,packageHash:await G(m),publishedTasksetRef:d.publishedTasksetRef,createdAt:d.createdAt,updatedAt:d.updatedAt});return await this.savePointer(f),this.draftFromStoredPayload(f)}async materializePublishedTasksetPackage(e){let t=await this.getTasksetDraftWorkspace(e.draftId);if(!t)throw new Error(`Taskset draft ${e.draftId} workspace was not found.`);if(e.taskset.metadata.sourcePackageHash!==void 0&&e.taskset.metadata.sourcePackageHash!==t.packageHash)throw new Error("Taskset draft files changed before publication. Refresh before publishing.");let r=`draft-${y({taskset:e.taskset,packageHash:t.packageHash})}`,s=await Yd(e.taskset,t.workspacePath),i=F.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:t.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:r}}}),n=F.parse({...i,contentHash:ie(i)}),o=await tt(this.home,{taskset:n,generatedFiles:s.generatedFiles},r,{source:{directory:t.workspacePath,packageHash:t.packageHash},verify:c(m=>xt(m,n),"verify")}),d=await this.getTasksetDraft(e.draftId);return d?.modelScope?.source?_c({home:this.home,directory:o,taskset:n,preparation:d.modelScope.source}):{directory:o,taskset:n}}async finalizeTasksetDraftPublication(e){await this.ready;let t=Te.parse(e.draft),r=F.parse(e.taskset),s=t.modelScope?.source?.authoringGraph==="bound"&&typeof r.metadata.importedPackageHash=="string"?await ke(this.home,r.metadata.importedPackageHash):null,i=this.writeQueue.then(()=>it(this.home,async()=>{let n=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[t.id]);if(!n)throw new Error("Taskset draft was deleted before publication.");let o=ce.parse(JSON.parse(n.payload));if(o.profileId!==t.profileId||r.profileId!==t.profileId)throw new Error("Taskset publication belongs to another Profile.");if(y(o.modelScope)!==y(t.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.status==="published"&&o.publishedTasksetRef){let p=o.publishedTasksetRef,u=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[p.id,p.revision,p.contentHash]);if(!u)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:Te.parse({...t,status:o.status,revision:o.revision,publishedTasksetRef:p,updatedAt:o.updatedAt}),taskset:F.parse(JSON.parse(u.payload))}}if(o.revision!==t.revision||r.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let d=o.modelScope?.source,m=d?.authoringGraph==="bound"&&r.metadata.modelTasksetDerivation&&typeof r.metadata.modelTasksetDerivation=="object"?{...r.metadata.modelTasksetDerivation,schemaVersion:d.lineage.schemaVersion}:r.metadata.modelTasksetAuthoring;if(d&&(r.id!==d.tasksetId||r.revision!==d.tasksetRevision||y(m)!==y(d.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let l=Te.parse({...t,status:"published",revision:t.revision+1,publishedTasksetRef:{id:r.id,revision:r.revision,contentHash:r.contentHash},updatedAt:new Date().toISOString()}),f=ce.parse({...o,status:l.status,revision:l.revision,publishedTasksetRef:l.publishedTasksetRef,updatedAt:l.updatedAt});return Or(this.database,r,()=>{if(s&&Pr(this.database,{package:s,taskset:r,generatedFiles:[]}),nc(this.database,t,r,s),this.database.get("SELECT revision FROM taskset_drafts WHERE id = ?",[t.id])?.revision!==t.revision)throw new Error("Taskset draft changed during publication.");this.database.run("UPDATE taskset_drafts SET status = ?, revision = ?, payload = ?, updated_at = ? WHERE id = ?",[f.status,f.revision,JSON.stringify(f),f.updatedAt,t.id])}),{draft:l,taskset:r}}));return this.writeQueue=i.then(()=>{},()=>{}),i}async getTasksetDraft(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],r=>r);return t===null?null:this.draftFromStoredPayload(t)}async listTasksetDrafts(e){await this.ready,await this.writeQueue;let t=await this.all(e?"SELECT payload FROM taskset_drafts WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM taskset_drafts ORDER BY updated_at DESC",e?[e]:[]);return Promise.all(t.map(r=>this.draftFromStoredPayload(JSON.parse(r.payload))))}async getTasksetDraftWorkspace(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],s=>s);if(t===null)return null;let r=await this.pointerFromStoredPayload(t);return{draftId:r.id,workspacePath:r.workspacePath,packageHash:await G(r.workspacePath)}}async deleteTasksetDraft(e){await this.ready;let t=this.writeQueue.then(()=>it(this.home,async()=>{let r=this.workspacePath(e),s=`${r}.delete-${wp()}`,i=!1;try{await ii(r,s),i=!0}catch(n){if(n.code!=="ENOENT")throw n}try{this.database.exec("BEGIN IMMEDIATE");try{this.database.run("DELETE FROM taskset_drafts WHERE id = ?",[e]),this.database.run("UPDATE model_taskset_draft_operations SET state = 'deleted' WHERE draft_id = ?",[e]),this.database.exec("COMMIT")}catch(n){throw this.database.exec("ROLLBACK"),n}}catch(n){throw i&&await ii(s,r).catch(()=>{}),n}i&&await Sc(s,{recursive:!0,force:!0})}));this.writeQueue=t.catch(()=>{}),await t}async tasksetDraftFiles(e,t,r){return await this.ready,it(this.home,async()=>{let s=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ? AND profile_id = ?",[t,e]);if(!s)throw new Error("Taskset draft was not found in this Profile.");let i=ce.parse(JSON.parse(s.payload));if(r!==void 0){let o=await yc(i.workspacePath,r);return{draftRevision:i.revision,file:{...o,writable:o.writable&&i.status!=="published"}}}let n=await kc(i.workspacePath);return{draftRevision:i.revision,files:n.map(o=>({...o,writable:o.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(e,t){let r=is.parse(t);await this.ready;let s=this.writeQueue.then(()=>it(this.home,async()=>{let i=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ? AND profile_id = ?",[r.draftId,e]);if(!i)throw new Error("Taskset draft was not found in this Profile.");let n=ce.parse(JSON.parse(i.payload));if(n.status==="published")throw new Error("Published Taskset drafts are immutable.");if(n.revision!==r.expectedDraftRevision)throw new Error("Taskset draft changed. Reload before saving a file.");return Nc(n.workspacePath,r,async()=>{let o=ce.parse({...n,revision:n.revision+1,packageHash:await G(n.workspacePath),updatedAt:new Date().toISOString()}),d=await this.draftFromStoredPayload(o);this.database.exec("BEGIN IMMEDIATE");try{if(this.database.get("SELECT revision FROM taskset_drafts WHERE id = ? AND profile_id = ?",[r.draftId,e])?.revision!==n.revision)throw new Error("Taskset draft changed during file saving.");this.database.run("UPDATE taskset_drafts SET revision = ?, payload = ?, updated_at = ? WHERE id = ?",[o.revision,JSON.stringify(o),o.updatedAt,o.id]),this.database.exec("COMMIT")}catch(m){throw this.database.exec("ROLLBACK"),m}return d})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(e){let t=y(e).slice(0,24);return Na.join(this.home,"workspaces","tasksets",`taskset-${t}`)}async draftFromStoredPayload(e){let t=await this.pointerFromStoredPayload(e),r=await Ss(t.workspacePath);return Te.parse({...r,id:t.id,profileId:t.profileId,modelScope:t.modelScope,status:t.status,revision:t.revision,publishedTasksetRef:t.publishedTasksetRef,createdAt:t.createdAt,updatedAt:t.updatedAt})}async pointerFromStoredPayload(e){let t=ce.safeParse(e);if(t.success)return t.data;let r=Te.parse(e);await this.saveTasksetDraft(r);let s=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[r.id],ce.parse);if(!s)throw new Error(`Taskset draft ${r.id} migration failed.`);return s}async savePointer(e,t=!1){await(t?this.run.bind(this):this.upsertPayload.bind(this))(`INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at)
2143
2143
  VALUES (?, ?, ?, ?, ?, ?, ?)
2144
2144
  ON CONFLICT(id) DO UPDATE SET
2145
2145
  profile_id = excluded.profile_id,
@@ -2155,7 +2155,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2155
2155
  WHERE r.profile_id=? AND r.source_key IN (${m.map(()=>"?").join(",")})
2156
2156
  AND (? IS NULL OR r.split=?) AND (? IS NULL OR r.task_id=?) AND (r.title LIKE ? ESCAPE '\\' OR r.description LIKE ? ESCAPE '\\' OR r.task_id LIKE ? ESCAPE '\\')
2157
2157
  AND (? IS NULL OR r.source_key > ? OR (r.source_key = ? AND r.ordinal > ?)) ORDER BY r.source_key, r.ordinal LIMIT ?`,[e,...m,s.split??null,s.split??null,s.taskId??null,s.taskId??null,l,l,l,n?.key??null,n?.key??null,n?.key??null,n?.ordinal??-1,s.limit+1]),p=f.slice(0,s.limit),u=p.at(-1);return Ts.parse({items:p.map(T=>{let h=d.get(T.source_key);if(h.hash!==T.source_hash)throw new Error("Task inventory changed. Reload the task list.");return Kn.parse({...JSON.parse(T.metadata),tasksetId:h.id,tasksetRevision:h.revision,tasksetHash:h.hash,taskId:T.task_id,ordinal:T.ordinal,title:T.title,description:T.description,split:T.split,draftId:h.draft?h.id:null,modelId:h.modelId})}),nextCursor:f.length>s.limit&&u?Buffer.from(JSON.stringify({scope:i,key:u.source_key,ordinal:u.ordinal})).toString("base64url"):null})}async readTaskInventoryTask(e,t){await this.inventoryReady();let r=this.database.get("SELECT r.payload FROM task_inventory_rows r JOIN task_inventory_sources s ON s.profile_id=r.profile_id AND s.source_key=r.source_key AND s.source_hash=r.source_hash WHERE r.profile_id=? AND r.source_key=? AND r.source_hash=? AND r.task_id=?",[e.profileId,Le(e),e.hash,t]);if(!r)throw new Error("Task not found in this collection.");return Un.parse(JSON.parse(r.payload))}};function Le(a){return`${a.draft?"draft":"release"}:${a.id}`}c(Le,"sourceKey");var Mr=class extends Xr{static{c(this,"SqliteModelBatchReviewStore")}async findModelBatchReview(e,t){return this.modelBatchReviewTransaction(e,t)}async beginModelBatchReview(e,t,r){let s=await this.modelBatchReviewTransaction(e,t,r);if(!s)throw new Error("Model batch review was not created.");return s}async modelBatchReviewTransaction(e,t,r){let s=po.parse(t);await this.ready;let i=this.writeQueue.then(async()=>{let n=this.db;if(!n)throw new Error("Model review store is closed.");n.exec("BEGIN IMMEDIATE");let o=!0,d=Ks(n,e,()=>{if(!o)throw new Error("Model review transaction is closed.")});try{let m=n.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e]);if(!m)throw new v("model_not_found",404);let l=B.parse(JSON.parse(m.payload)),f=await _o(d,s);if(f||!r)return n.exec("COMMIT"),f;if(l.revision!==s.expectedModelRevision||!l.trainingSetup.tasksetRef||!C(l.trainingSetup.tasksetRef,s.tasksetRef))throw new v("model_revision_conflict",409);let p=n.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[s.tasksetRef.id,s.tasksetRef.revision,e]),u=p?F.parse(JSON.parse(p.payload)):null;if(!u||u.contentHash!==s.tasksetRef.contentHash||y(u.metadata.learning)!==y(Fa(r.taskset)))throw new v("model_review_package_mismatch",409);let T=await ho(d,{scope:e,request:s,package:r,now:new Date().toISOString()});return n.exec("COMMIT"),T}catch(m){throw n.exec("ROLLBACK"),m}finally{o=!1}});return this.writeQueue=i.then(()=>{},()=>{}),i}};import{createHash as Ip}from"node:crypto";function Sa(a){let{request:e,resolved:t}=ga(a.request,a.package),{starter:r,...s}=t,i=e.rewardBindingRef&&!C(e.rewardBindingRef,I(t.rewardBinding));if(i&&(!a.rewardSelection||!C(e.rewardBindingRef,I(a.rewardSelection.rewardBinding))))throw new Error("The selected starter Reward is unavailable for package preparation.");let n=zt({owner:{scopeId:e.profileId,modelId:e.modelId},source:s,...i?a.rewardSelection:{rewardBinding:s.rewardBinding,rewards:s.rewards,assets:s.assets}}),{taskset:o,taskDefinition:d,rewardBinding:m,rewards:l,assets:f}=n;if(a.source.profileId!==e.profileId||a.source.sourceHash!==r.contentHash)throw new Error("Starter source must belong to this Profile and pin the catalog package.");let p=n.execution!==void 0,u=o.environment.kind==="text"&&o.environment.entrypoint==="openpond.text.v1"&&!o.environment.stateful&&(!o.environmentRelease&&!o.verifierSetRelease||n.executionResources!==void 0)&&!o.capabilities.length&&!o.tools.length;if(!["sft","grpo"].includes(e.method)||d.harness||!u&&!p||o.tasks.some(_=>_.artifactRefs.length)||o.graders.some(_=>_.kind==="model_judge"&&(!_.model||_.calibrationStatus!=="passed")))throw new Error("This starter requires an additional training or environment adapter before preparation.");let T=new Set(a.approvedTrainingTaskIds);if(T.size!==a.approvedTrainingTaskIds.length)throw new Error("Starter training approvals must be unique.");for(let _ of T){let k=o.tasks.find(A=>A.id===_);if(!k||k.split!=="train")throw new Error(`Starter approval must reference a training task: ${_}.`);if(e.method==="sft"&&k.expectedOutput===null)throw new Error(`SFT starter approval requires a reviewed target: ${_}.`)}if(e.method==="grpo"&&o.tasks.some(_=>_.split==="train"&&!T.has(_.id)))throw new Error("GRPO starter preparation requires approval of every training task.");for(let _ of a.fixtures){if(!o.tasks.some(k=>k.id===_.taskId))throw new Error(`Starter fixture references an unknown task: ${_.taskId}.`);p&&!_.infrastructureError&&ds.parse(_.metadata.toolScript)}let h=o.id,g=Wn({profileId:e.profileId,id:`${h}-draft`,name:r.name,now:a.createdAt}),w=[];for(let _ of o.graders){if(_.kind!=="custom_verifier")continue;let k=f.find(S=>S.id===_.verifierRef.id);if(!k)throw new Error(`Starter verifier asset is missing: ${_.id}.`);let A=ar(_.verifierRef.contentHash);w.some(S=>S.path===A)||w.push({path:A,role:"verifier",content:V(k,_.verifierRef)})}let R=Te.parse({...g,objective:d.instructions,metrics:o.metrics??g.metrics,sourceRefs:[a.source],policy:o.policy,environment:{...g.environment,kind:p?"agent":"chat",entrypoint:o.environment.entrypoint,stateful:o.environment.stateful,toolNames:o.tools.map(_=>_.name),deterministicSeeds:o.environment.deterministicSeeds,defaultTimeoutMs:o.environment.defaultTimeoutMs,networkPolicy:o.environment.networkPolicy,metadata:{portableEnvironment:o.environment,portableTools:o.tools,...n.executionResources?{portableExecutionResources:n.executionResources}:n.execution?{portableExecutionResources:{environment:n.execution.environment,verifierSet:n.execution.verifierSet}}:{}}},output:{mode:"structured_json",jsonSchema:d.outputSchema,renderer:null},capabilities:{...g.capabilities,taskKind:p?"single_agent":"chat",requiresTools:p,requiresState:p,supportedSignals:e.method==="grpo"?["reward"]:["demonstration"],compatibleMethods:[e.method],rewardKinds:[...new Set(o.graders.map(_=>_.kind==="human"?"human":_.kind==="model_judge"?"model_judge":"deterministic"))],requiresPrivilegedGrading:!0,environmentPlacements:["local","remote"]},tasks:o.tasks.map(({artifactRefs:_,...k})=>({...k,schemaVersion:"openpond.taskData.v1",sourceRefs:[a.source.id],metadata:{exampleOrigin:"curated_starter",starter:I(r),portableTaskRecord:{...k,artifactRefs:[]}}})),graders:gt(m,l,f),graderFixtures:a.fixtures,learningSignals:{...g.learningSignals,rewards:e.method==="grpo"?o.tasks.filter(_=>T.has(_.id)).map(_=>({kind:"reward",id:`starter-reward-${_.id}`,taskId:_.id,task:d.instructions,rules:[{id:m.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],otherwisePoints:0,executable:!0,approved:!0,confidence:1,sourceRefs:[a.source.id],artifactRef:m.id,metadata:{starter:I(r),rewardBinding:I(m),approvalOrigin:"catalog_publication"}})):[],demonstrations:e.method==="sft"?o.tasks.filter(_=>T.has(_.id)).map(_=>({kind:"demonstration",id:`starter-target-${_.id}`,taskId:_.id,sourceRefs:[a.source.id],artifactRef:o.id,approved:!0,confidence:1,prompt:null,response:JSON.stringify(_.expectedOutput),metadata:{starter:I(r),approvalOrigin:"catalog_publication"}})):[]},metadata:{starter:I(r),starterTasksetRelease:I(o),taskDefinition:I(d),rewardBinding:I(m),rewardExecution:{binding:m,rewards:l},portableCapabilities:o.capabilities,derivedPortableMetadata:o.metadata,modelTasksetDerivation:o.metadata.modelTasksetDerivation}}),N=tr({draft:R,now:a.createdAt,tasksetId:h,sourcePackageHash:o.contentHash});return N.metrics=o.metrics,N.contentHash=ie(N),{draft:R,taskset:N,generatedFiles:w,resources:n}}c(Sa,"prepareModelStarterTaskset");function va(a,e){let t=ha(e),r=a.get("SELECT request_hash, payload FROM model_starter_creation_operations WHERE profile_id = ? AND operation_id = ?",[t.profileId,t.operationId]);if(!r)return null;if(r.request_hash!==Oc(t))throw new Error("Starter creation operation was already used with different configuration.");return B.parse(JSON.parse(r.payload))}c(va,"findModelStarterCreation");async function Ic(a,e){let t=ha(e.request);if(t.learning)throw new Error("Create this Model in a hosted workspace to enable continual learning.");let r=va(a,t);if(r)return r;let{taskset:s,resources:i}=Sa(e),n=wa(e.package),o=await fn({id:t.modelId,profileId:t.profileId,name:t.name,objective:n.taskDefinition.instructions,defaultBaseModel:t.startingModel,defaultDestinationId:null,trainingSetup:_a({package:i,setup:Ve.parse({tasksetRef:I(s),rewardBindingRef:I(i.rewardBinding),baseModel:t.startingModel,method:t.method,managedRolloutPlacement:"remote"})})},0);a.exec("BEGIN IMMEDIATE");try{let d=va(a,t);if(d)return a.exec("COMMIT"),d;if(a.get("SELECT id FROM tasksets WHERE id = ?",[s.id])||a.get("SELECT id FROM model_projects WHERE id = ?",[t.modelId]))throw new Error("Starter creation requires a new Model and Taskset identity.");let m=[...i.executionResources??i.execution?[{kind:"asset",resource:ze(i.executionResources??i.execution)}]:[],...n.execution?[{kind:"asset",resource:Xe(n.execution)}]:[],...n.assets.map(p=>({kind:"asset",resource:p})),...n.rewards.map(p=>({kind:"reward",resource:p})),{kind:"binding",resource:n.rewardBinding},{kind:"definition",resource:n.taskDefinition},{kind:"package",resource:n.taskset},...i.taskset.contentHash===n.taskset.contentHash?[]:[{kind:"definition",resource:i.taskDefinition},{kind:"package",resource:i.taskset},...i.execution?[{kind:"asset",resource:Xe(i.execution)}]:[]]];for(let{kind:p,resource:u}of m)K(a,t.profileId,p,u);let l=JSON.stringify(s);a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)",[s.id,s.profileId,s.status,l,s.createdAt,s.updatedAt]),a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.revision,s.contentHash,s.profileId,s.status,l,s.createdAt,s.updatedAt]);let f=Ra(a,o);return a.run("INSERT INTO model_starter_creation_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[t.profileId,t.operationId,Oc(t),JSON.stringify(f)]),a.exec("COMMIT"),f}catch(d){throw a.exec("ROLLBACK"),d}}c(Ic,"commitModelStarterCreation");function Oc(a){return Ip("sha256").update(X(a)).digest("hex")}c(Oc,"requestHash");function Dr(a,e,t,r,s){let i=B.parse(t);a.exec("BEGIN IMMEDIATE");try{let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?B.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&Ht("Model ownership changed during hosted synchronization.");let d;if(r)X(o)!==X(e)&&Ht("Model changed while its hosted configuration was loading. Refresh before applying it."),d=i;else{(!o||!e||e.id!==i.id||e.profileId!==i.profileId)&&Ht("Model is no longer available for hosted synchronization."),o.hosted?.teamId!==e.hosted?.teamId&&o.hosted?.teamId!==i.hosted?.teamId&&Ht("Model hosting team changed during synchronization.");let m=i.hosted,l=o.hosted,f=l;if(m){l?.apiOrigin&&l.apiOrigin!==m.apiOrigin&&Ht("Model hosting API changed during synchronization.");let p=l?.apiOrigin===m.apiOrigin&&l?.teamId===m.teamId&&l.projectId===m.projectId;p&&l.revision===m.revision&&l.etag!==m.etag&&Ht("Hosted Model receipts disagree about the same revision."),f={...p&&l.revision>m.revision?l:m,tasksets:p?Lc(l.tasksets,m.tasksets,T=>`${T.localTasksetId}:${T.releaseHash}`,T=>T.syncedAt):m.tasksets}}d=B.parse({...o,hosted:f,tasksetSyncs:Lc(o.tasksetSyncs,i.tasksetSyncs,p=>p.localTasksetId,p=>p.lastAttemptAt)})}return s?.(),a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2158
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[d.id,d.profileId,JSON.stringify(d),d.createdAt,d.updatedAt]),a.exec("COMMIT"),d}catch(n){throw a.exec("ROLLBACK"),n}}c(Dr,"commitModelProjectHosting");function Lc(a,e,t,r){let s=new Map(a.map(i=>[t(i),i]));for(let i of e){let n=s.get(t(i));(!n||Date.parse(r(i))>=Date.parse(r(n)))&&s.set(t(i),i)}return[...s.values()]}c(Lc,"mergeLatest");function Ht(a){throw new xe(409,{schemaVersion:"openpond.modelProjectApiError.v2",code:"model_hosting_conflict",message:a,retryable:!1,requestId:null,details:{}})}c(Ht,"conflict");function ni(a,e){let{request:t,resolved:r}=ga(e.request,e.package),s=t.rewardBindingRef;if(!s||C(s,I(r.rewardBinding)))return e;function i(m,l){let f=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[t.profileId,m,l.id,l.revision]);if(!f)throw new Error(`The selected starter ${m} is unavailable in this Profile.`);let p=ae[m].parse(JSON.parse(f.payload));if(ue(p),l.contentHash&&l.contentHash!==p.contentHash)throw new Error("The selected starter Reward differs from its immutable reference.");return p}c(i,"read");let n=i("binding",s),o=[...new Map(n.sources.map(m=>[X(m.reward),i("reward",m.reward)])).values()],d=new Map(r.assets.map(m=>[m.id,m]));for(let m of o){let l=m.implementation;for(let f of[...m.assets,..."verifierRef"in l?[l.verifierRef]:[],..."rubricRef"in l?[l.rubricRef]:[],..."inputContract"in l?[l.inputContract]:[]])d.has(f.id)||d.set(f.id,i("asset",{id:f.id,revision:1}))}return{...e,rewardSelection:{rewardBinding:n,rewards:o,assets:[...d.values()]}}}c(ni,"resolveModelStarterSelection");import Op from"node:path";function Ut(a){let e=a.environment.metadata.runtimeSourceTasksetId,t=e===void 0?a.id:e;if(typeof t!="string"||!t||t==="."||t===".."||Op.basename(t)!==t||t.includes("\\"))throw new Error(`Taskset ${a.id} has an invalid package directory identity.`);return t}c(Ut,"tasksetPackageDirectoryId");import bp from"node:path";import Lp from"node:path";async function bc(a){let{taskset:e}=a,{taskset:t,modelResources:r,learningResources:s}=a.content,i=new Set([...r?.assets??[],...s?.assets??[]].map(d=>d.id)),n=new Map,o=c((d,m=d.path)=>{if(i.has(d.id))return;let l=n.get(d.id);if(l&&(y(l.asset)!==y(d)||l.sourcePath!==m))throw new Error(`Conflicting local Taskset file reference: ${d.id}.`);n.set(d.id,{asset:d,sourcePath:m})},"add");for(let d of Fe.parse(e.metadata.portableFileInventory??[]))o(d.asset,d.sourcePath);for(let d of t.tasks){let m=e.tasks.find(l=>l.id===d.id);for(let l of d.artifactRefs)o(l,m?.assets?.find(f=>f.id===l.id)?.artifactRef??l.path);for(let l of d.requiredOutputs??[])l.schemaRef&&o(l.schemaRef)}for(let d of t.graders){let m=e.graders.find(l=>l.id===d.id);"verifierRef"in d&&o(d.verifierRef,m?.kind==="custom_verifier"?m.module:d.verifierRef.path),"rubricRef"in d&&o(d.rubricRef)}return Dt({root:Lp.join(a.storeDir,"training","tasksets",Ut(e)),content:a.content,sources:[...n.values()]})}c(bc,"captureAuthoredModelTasksetPackage");async function oi(a,e,t){let r=t.project.trainingSetup.tasksetRef;if(!r)return;let s=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[r.id,r.revision]);if(!s)return;let i=F.parse(JSON.parse(s.payload));if(i.profileId!==t.project.profileId||i.contentHash!==r.contentHash)return;let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),o=n?B.parse(JSON.parse(n.payload)):null;if(o&&(o.profileId!==t.project.profileId||o.revision!==t.expectedRevision))return;let d=o?.hosted?.tasksets.find(g=>g.localTasksetId===i.id&&g.localTasksetHash===i.contentHash),m=typeof i.metadata.importedPackageHash=="string"?i.metadata.importedPackageHash:d?.packageHash;if(!m){if(i.metadata.learning!==void 0||i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return;let g=t.project.trainingSetup,w=g.baseModel??t.project.defaultBaseModel,R=g.method??(i.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":null);if(!g.rewardBindingRef&&(R!=="grpo"||g.recipe||!w?.revision||!w.tokenizerRevision||!w.chatTemplateHash))return;if(ie(i)!==r.contentHash)throw new Error("Selected Taskset differs from its immutable content hash.");let N=De({taskset:i,adapterId:ye(i)});return bc({storeDir:e,taskset:i,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:N.tasksetRelease,environment:N.environmentRelease,verifierSet:N.verifierSetRelease}})}let l=await ke(e,m);if(l.taskset.id!==(d?.releaseId??r.id)||l.taskset.revision!==(d?.releaseRevision??r.revision))throw new Error("Cached package differs from its selected Taskset revision.");let{files:f,contentHash:p,...u}=l,T=Ec(l,typeof i.metadata.importedPackageHash=="string"),h=await Dt({root:bp.join(e,"training","tasksets",Ut(i)),content:u,sources:f.filter(g=>!T.has(g.asset.id)).map(g=>({asset:g.asset,sourcePath:i.tasks.flatMap(w=>w.assets??[]).find(w=>w.id===g.asset.id)?.artifactRef??g.asset.path})),fileOrder:f.map(g=>g.asset.id)});if(h.contentHash!==l.contentHash)throw new Error("Imported package bytes changed before the Reward edit.");return h}c(oi,"loadModelTasksetPackage");var{package:Yy,evaluationPackage:Ky,...Ap}=Dn.shape,Hr=E.object({apiOrigin:E.string().url().refine(a=>new URL(a).origin===a),teamId:E.string().min(1),project:B,localTaskset:Z,localEvaluation:Z.optional(),evaluationPackageHash:E.string().regex(/^[a-f0-9]{64}$/).optional(),packageHash:E.string().regex(/^[a-f0-9]{64}$/),request:E.object(Ap).strict()}).strict().refine(a=>!!a.localEvaluation==!!a.evaluationPackageHash,"Evaluation bytes and local identity must be captured together.");function di(a,e){let t=a.get("SELECT payload FROM model_project_package_operations WHERE profile_id = ? AND model_id = ? AND state = 'pending'",[e.profileId,e.modelId]),r=t?Hr.parse(JSON.parse(t.payload)):null;if(r&&(r.apiOrigin!==e.apiOrigin||r.teamId!==e.teamId))throw new Error("Finish the pending package publication in its original API and workspace before changing hosting.");return r}c(di,"pendingModelPackageOperation");function Ac(a,e){let t=Hr.parse(e);a.exec("BEGIN IMMEDIATE");try{let r=di(a,{profileId:t.project.profileId,modelId:t.project.id,apiOrigin:t.apiOrigin,teamId:t.teamId});if(r)return a.exec("COMMIT"),r;let s=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),i=s?B.parse(JSON.parse(s.payload)):null;if(X(i)!==X(t.project))throw new Error("Model changed while its package was being prepared. Retry the push.");let n=a.get("SELECT payload, state FROM model_project_package_operations WHERE operation_id = ?",[t.request.operationId]);if(n){let o=Hr.parse(JSON.parse(n.payload));if(X({...o,project:t.project})!==X(t))throw new Error("Package operation identity was reused with different publication content.");if(n.state==="committed")return a.exec("COMMIT"),o;a.run("UPDATE model_project_package_operations SET state = 'pending', payload = ? WHERE operation_id = ? AND state = 'rejected'",[JSON.stringify(t),t.request.operationId])}else a.run("INSERT INTO model_project_package_operations (operation_id, profile_id, model_id, api_origin, team_id, state, payload, created_at) VALUES (?, ?, ?, ?, ?, 'pending', ?, ?)",[t.request.operationId,t.project.profileId,t.project.id,t.apiOrigin,t.teamId,JSON.stringify(t),new Date().toISOString()]);return a.exec("COMMIT"),t}catch(r){throw a.exec("ROLLBACK"),r}}c(Ac,"prepareModelPackageOperation");function Cc(a,e,t){let r=Hn.parse(t),s=a.get("SELECT payload, receipt FROM model_project_package_operations WHERE operation_id = ?",[e]);if(!s)throw new Error("Package push has no durable local intent.");let i=Hr.parse(JSON.parse(s.payload));if(s.receipt&&X(JSON.parse(s.receipt))!==X(r))throw new Error("Package push retry returned a different receipt.");if(r.operationId!==e||r.teamId!==i.teamId||r.packageHash!==i.packageHash||r.modelProjectId!==i.request.modelProjectId)throw new Error("Package push receipt differs from its local intent.");if(i.evaluationPackageHash&&(!r.evaluation||r.evaluation.packageHash!==i.evaluationPackageHash||X(r.evaluation.taskset)!==X(i.request.modelConfiguration?.trainingSetup.evaluationTasksetRef)))throw new Error("Evaluation package receipt differs from its local intent.");let n=i.project,o=r.project;if(i.request.selection==="select"&&!o)throw new Error("Selected package receipt is missing Model configuration.");if(!o&&!n.hosted)throw new Error("Historical package receipt has no existing hosted Model.");let d=new Date().toISOString(),m=B.parse({...n,hosted:{schemaVersion:"openpond.hostedModelProjectLink.v1",apiOrigin:i.apiOrigin,teamId:i.teamId,projectId:o?.id??n.hosted.projectId,portableProjectId:n.id,revision:o?.revision??n.hosted.revision,etag:r.projectEtag,syncedSourceRevision:i.request.selection==="select"?n.revision:n.hosted.syncedSourceRevision,syncedAt:d,tasksets:[...(n.hosted?.tasksets??[]).filter(l=>l.releaseHash!==r.taskset.contentHash&&l.releaseHash!==r.evaluation?.taskset.contentHash),{localTasksetId:i.localTaskset.id,localTasksetHash:i.localTaskset.contentHash,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,packageHash:r.packageHash,hostedTasksetId:r.hostedTasksetId,syncedAt:d},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,localTasksetHash:i.localEvaluation.contentHash,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,packageHash:r.evaluation.packageHash,hostedTasksetId:r.evaluation.hostedTasksetId,syncedAt:d}]:[]]},tasksetSyncs:[...n.tasksetSyncs.filter(l=>l.localTasksetId!==i.localTaskset.id&&l.localTasksetId!==i.localEvaluation?.id),{localTasksetId:i.localTaskset.id,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,state:"synced",hostedTasksetId:r.hostedTasksetId,lastAttemptAt:d,syncedAt:d,lastError:null},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,state:"synced",hostedTasksetId:r.evaluation.hostedTasksetId,lastAttemptAt:d,syncedAt:d,lastError:null}]:[]]});return Dr(a,n,m,!1,()=>{a.run("UPDATE model_project_package_operations SET state = 'committed', receipt = ? WHERE operation_id = ?",[JSON.stringify(r),e])})}c(Cc,"completeModelPackageOperation");var Ur=class extends Mr{static{c(this,"SqliteModelConfigurationStore")}async pendingModelPackagePush(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Package push store is closed.");return di(this.db,e)}async prepareModelPackagePush(e){await this.ready;let t=this.writeQueue.then(()=>{if(!this.db)throw new Error("Package push store is closed.");return Ac(this.db,e)});return this.writeQueue=t.then(()=>{},()=>{}),t}async completeModelPackagePush(e,t){await this.ready;let r=this.writeQueue.then(()=>{if(!this.db)throw new Error("Package push store is closed.");return Cc(this.db,e,t)});return this.writeQueue=r.then(()=>{},()=>{}),r}async rejectModelPackagePush(e){await this.ready;let t=this.writeQueue.then(()=>{if(!this.db)throw new Error("Package push store is closed.");this.db.run("UPDATE model_project_package_operations SET state = 'rejected' WHERE operation_id = ? AND state = 'pending'",[e])});return this.writeQueue=t.then(()=>{},()=>{}),t}async findModelProjectConfigurationSave(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Model check failed because the local store is closed.");return br(this.db,e)}async saveModelProjectConfiguration(e){await this.ready;let t=this.writeQueue.then(async()=>{if(!this.db)throw new Error("Model save failed because the local store is closed.");let r=br(this.db,e);if(r)return r;let s=await oi(this.db,this.home,e),i=Zs(this.db,e,!0,s);if(i?.imported)await ya({home:this.home,...i.imported});else if(i){let n=Cp.join(this.home,"training","tasksets",Ut(i.source));await tt(this.home,i,i.directoryId,{source:{directory:n,packageHash:await G(n)},verify:c(o=>xt(o,i.taskset),"verify")}),this.db.run("UPDATE model_project_taskset_preparations SET state = 'materialized' WHERE profile_id = ? AND operation_id = ?",[e.project.profileId,e.operationId])}return ic(this.db,e,i,s?.modelResources?{...s.modelResources,taskset:s.taskset,executionResources:{environment:s.environment,verifierSet:s.verifierSet}}:s)});return this.writeQueue=t.then(()=>{},()=>{}),t}async previewModelProjectTasksetSave(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Model check failed because the local store is closed.");return Zs(this.db,e,!1,await oi(this.db,this.home,e))?.taskset??null}async findModelStarterCreation(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Starter lookup failed because the local store is closed.");return va(this.db,e)}async saveModelStarterCreation(e){await this.ready;let t=this.writeQueue.then(async()=>{if(!this.db)throw new Error("Starter creation failed because the local store is closed.");let r=va(this.db,e.request);if(r)return r;let s=ni(this.db,e),i=Sa(s);return await tt(this.home,i,i.taskset.id),Ic(this.db,s)});return this.writeQueue=t.then(()=>{},()=>{}),t}async prepareModelStarterCreation(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Starter check failed because the local store is closed.");return Sa(ni(this.db,e))}async saveModelProjectHosting(e,t,r=!1,s=[]){await this.ready;let i=this.writeQueue.then(async()=>{if(!this.db)throw new Error("Model synchronization failed because the local store is closed.");if(s.length&&!r)throw new Error("Package import requires an atomic Model replacement.");for(let n of s){if(n.taskset.profileId!==t.profileId)throw new Error("Imported package belongs to another Profile.");n.reuseExisting?await st(this.home,n.package):await ya({home:this.home,...n})}return Dr(this.db,e,t,r,()=>{for(let n of s)Pr(this.db,n)})});return this.writeQueue=i.then(()=>{},()=>{}),i}};function Ia(a,e,t,r,s,i,n){return{schemaVersion:"openpond.trainingChatSearchResult.v1",query:a,offset:e,limit:t,total:r,hasMore:e+s.length<r,indexedChats:i,totalChats:n,indexing:i<n,entries:s.map(o=>({sessionId:o.session_id,title:o.title,updatedAt:o.updated_at,snippet:o.snippet?.trim()||null}))}}c(Ia,"trainingChatSearchResult");function Pc(a){let e=a.normalize("NFKC").match(/[\p{L}\p{N}_]+/gu)?.slice(0,24)??[];return e.length?e.map(t=>`"${t.replaceAll('"','""')}"*`).join(" AND "):null}c(Pc,"trainingChatFtsQuery");function ci(a,e,t){let r=a.get(e)??[];r.push(t),a.set(e,r)}c(ci,"appendTrainingChatSearchText");var Oa="('openpond_managed')",Fr=class extends Ur{static{c(this,"SqliteTrainingStore")}async trainingChatSearchSignatures(e){await this.ready,await this.writeQueue;let t=await this.all("SELECT session_id, signature FROM training_chat_search_documents WHERE source = ?",[e]);return new Map(t.map(r=>[r.session_id,r.signature]))}async openPondTrainingChatSearchEvidence(e){await this.ready,await this.writeQueue;let t=[...new Set(e)].slice(0,500);if(!t.length)return[];let r=t.map(()=>"?").join(", "),[s,i,n]=await Promise.all([this.all(`SELECT payload FROM projection_session_shells WHERE id IN (${r})`,t),this.all(`SELECT session_id, payload FROM turns WHERE session_id IN (${r}) ORDER BY sort_index ASC`,t),this.all(`SELECT session_id, payload FROM events
2158
+ ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[d.id,d.profileId,JSON.stringify(d),d.createdAt,d.updatedAt]),a.exec("COMMIT"),d}catch(n){throw a.exec("ROLLBACK"),n}}c(Dr,"commitModelProjectHosting");function Lc(a,e,t,r){let s=new Map(a.map(i=>[t(i),i]));for(let i of e){let n=s.get(t(i));(!n||Date.parse(r(i))>=Date.parse(r(n)))&&s.set(t(i),i)}return[...s.values()]}c(Lc,"mergeLatest");function Ht(a){throw new xe(409,{schemaVersion:"openpond.modelProjectApiError.v2",code:"model_hosting_conflict",message:a,retryable:!1,requestId:null,details:{}})}c(Ht,"conflict");function ni(a,e){let{request:t,resolved:r}=ga(e.request,e.package),s=t.rewardBindingRef;if(!s||C(s,I(r.rewardBinding)))return e;function i(m,l){let f=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[t.profileId,m,l.id,l.revision]);if(!f)throw new Error(`The selected starter ${m} is unavailable in this Profile.`);let p=ae[m].parse(JSON.parse(f.payload));if(ue(p),l.contentHash&&l.contentHash!==p.contentHash)throw new Error("The selected starter Reward differs from its immutable reference.");return p}c(i,"read");let n=i("binding",s),o=[...new Map(n.sources.map(m=>[X(m.reward),i("reward",m.reward)])).values()],d=new Map(r.assets.map(m=>[m.id,m]));for(let m of o){let l=m.implementation;for(let f of[...m.assets,..."verifierRef"in l?[l.verifierRef]:[],..."rubricRef"in l?[l.rubricRef]:[],..."inputContract"in l?[l.inputContract]:[]])d.has(f.id)||d.set(f.id,i("asset",{id:f.id,revision:1}))}return{...e,rewardSelection:{rewardBinding:n,rewards:o,assets:[...d.values()]}}}c(ni,"resolveModelStarterSelection");import Op from"node:path";function Ut(a){let e=a.environment.metadata.runtimeSourceTasksetId,t=e===void 0?a.id:e;if(typeof t!="string"||!t||t==="."||t===".."||Op.basename(t)!==t||t.includes("\\"))throw new Error(`Taskset ${a.id} has an invalid package directory identity.`);return t}c(Ut,"tasksetPackageDirectoryId");import bp from"node:path";import Lp from"node:path";async function bc(a){let{taskset:e}=a,{taskset:t,modelResources:r,learningResources:s}=a.content,i=new Set([...r?.assets??[],...s?.assets??[]].map(d=>d.id)),n=new Map,o=c((d,m=d.path)=>{if(i.has(d.id))return;let l=n.get(d.id);if(l&&(y(l.asset)!==y(d)||l.sourcePath!==m))throw new Error(`Conflicting local Taskset file reference: ${d.id}.`);n.set(d.id,{asset:d,sourcePath:m})},"add");for(let d of Fe.parse(e.metadata.portableFileInventory??[]))o(d.asset,d.sourcePath);for(let d of t.tasks){let m=e.tasks.find(l=>l.id===d.id);for(let l of d.artifactRefs)o(l,m?.assets?.find(f=>f.id===l.id)?.artifactRef??l.path);for(let l of d.requiredOutputs??[])l.schemaRef&&o(l.schemaRef)}for(let d of t.graders){let m=e.graders.find(l=>l.id===d.id);"verifierRef"in d&&o(d.verifierRef,m?.kind==="custom_verifier"?m.module:d.verifierRef.path),"rubricRef"in d&&o(d.rubricRef)}return Dt({root:Lp.join(a.storeDir,"training","tasksets",Ut(e)),content:a.content,sources:[...n.values()]})}c(bc,"captureAuthoredModelTasksetPackage");async function oi(a,e,t){let r=t.project.trainingSetup.tasksetRef;if(!r)return;let s=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[r.id,r.revision]);if(!s)return;let i=F.parse(JSON.parse(s.payload));if(i.profileId!==t.project.profileId||i.contentHash!==r.contentHash)return;let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),o=n?B.parse(JSON.parse(n.payload)):null;if(o&&(o.profileId!==t.project.profileId||o.revision!==t.expectedRevision))return;let d=o?.hosted?.tasksets.find(g=>g.localTasksetId===i.id&&g.localTasksetHash===i.contentHash),m=typeof i.metadata.importedPackageHash=="string"?i.metadata.importedPackageHash:d?.packageHash;if(!m){if(i.metadata.learning!==void 0||i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return;let g=t.project.trainingSetup,w=g.baseModel??t.project.defaultBaseModel,R=g.method??(i.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":null);if(!g.rewardBindingRef&&(R!=="grpo"||g.recipe||!w?.revision||!w.tokenizerRevision||!w.chatTemplateHash))return;if(ie(i)!==r.contentHash)throw new Error("Selected Taskset differs from its immutable content hash.");let N=De({taskset:i,adapterId:ye(i)});return bc({storeDir:e,taskset:i,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:N.tasksetRelease,environment:N.environmentRelease,verifierSet:N.verifierSetRelease}})}let l=await ke(e,m);if(l.taskset.id!==(d?.releaseId??r.id)||l.taskset.revision!==(d?.releaseRevision??r.revision))throw new Error("Cached package differs from its selected Taskset revision.");let{files:f,contentHash:p,...u}=l,T=Ec(l,typeof i.metadata.importedPackageHash=="string"),h=await Dt({root:bp.join(e,"training","tasksets",Ut(i)),content:u,sources:f.filter(g=>!T.has(g.asset.id)).map(g=>({asset:g.asset,sourcePath:i.tasks.flatMap(w=>w.assets??[]).find(w=>w.id===g.asset.id)?.artifactRef??g.asset.path})),fileOrder:f.map(g=>g.asset.id)});if(h.contentHash!==l.contentHash)throw new Error("Imported package bytes changed before the Reward edit.");return h}c(oi,"loadModelTasksetPackage");var{package:$y,evaluationPackage:Jy,...Ap}=Dn.shape,Hr=E.object({apiOrigin:E.string().url().refine(a=>new URL(a).origin===a),teamId:E.string().min(1),project:B,localTaskset:Z,localEvaluation:Z.optional(),evaluationPackageHash:E.string().regex(/^[a-f0-9]{64}$/).optional(),packageHash:E.string().regex(/^[a-f0-9]{64}$/),request:E.object(Ap).strict()}).strict().refine(a=>!!a.localEvaluation==!!a.evaluationPackageHash,"Evaluation bytes and local identity must be captured together.");function di(a,e){let t=a.get("SELECT payload FROM model_project_package_operations WHERE profile_id = ? AND model_id = ? AND state = 'pending'",[e.profileId,e.modelId]),r=t?Hr.parse(JSON.parse(t.payload)):null;if(r&&(r.apiOrigin!==e.apiOrigin||r.teamId!==e.teamId))throw new Error("Finish the pending package publication in its original API and workspace before changing hosting.");return r}c(di,"pendingModelPackageOperation");function Ac(a,e){let t=Hr.parse(e);a.exec("BEGIN IMMEDIATE");try{let r=di(a,{profileId:t.project.profileId,modelId:t.project.id,apiOrigin:t.apiOrigin,teamId:t.teamId});if(r)return a.exec("COMMIT"),r;let s=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),i=s?B.parse(JSON.parse(s.payload)):null;if(X(i)!==X(t.project))throw new Error("Model changed while its package was being prepared. Retry the push.");let n=a.get("SELECT payload, state FROM model_project_package_operations WHERE operation_id = ?",[t.request.operationId]);if(n){let o=Hr.parse(JSON.parse(n.payload));if(X({...o,project:t.project})!==X(t))throw new Error("Package operation identity was reused with different publication content.");if(n.state==="committed")return a.exec("COMMIT"),o;a.run("UPDATE model_project_package_operations SET state = 'pending', payload = ? WHERE operation_id = ? AND state = 'rejected'",[JSON.stringify(t),t.request.operationId])}else a.run("INSERT INTO model_project_package_operations (operation_id, profile_id, model_id, api_origin, team_id, state, payload, created_at) VALUES (?, ?, ?, ?, ?, 'pending', ?, ?)",[t.request.operationId,t.project.profileId,t.project.id,t.apiOrigin,t.teamId,JSON.stringify(t),new Date().toISOString()]);return a.exec("COMMIT"),t}catch(r){throw a.exec("ROLLBACK"),r}}c(Ac,"prepareModelPackageOperation");function Cc(a,e,t){let r=Hn.parse(t),s=a.get("SELECT payload, receipt FROM model_project_package_operations WHERE operation_id = ?",[e]);if(!s)throw new Error("Package push has no durable local intent.");let i=Hr.parse(JSON.parse(s.payload));if(s.receipt&&X(JSON.parse(s.receipt))!==X(r))throw new Error("Package push retry returned a different receipt.");if(r.operationId!==e||r.teamId!==i.teamId||r.packageHash!==i.packageHash||r.modelProjectId!==i.request.modelProjectId)throw new Error("Package push receipt differs from its local intent.");if(i.evaluationPackageHash&&(!r.evaluation||r.evaluation.packageHash!==i.evaluationPackageHash||X(r.evaluation.taskset)!==X(i.request.modelConfiguration?.trainingSetup.evaluationTasksetRef)))throw new Error("Evaluation package receipt differs from its local intent.");let n=i.project,o=r.project;if(i.request.selection==="select"&&!o)throw new Error("Selected package receipt is missing Model configuration.");if(!o&&!n.hosted)throw new Error("Historical package receipt has no existing hosted Model.");let d=new Date().toISOString(),m=B.parse({...n,hosted:{schemaVersion:"openpond.hostedModelProjectLink.v1",apiOrigin:i.apiOrigin,teamId:i.teamId,projectId:o?.id??n.hosted.projectId,portableProjectId:n.id,revision:o?.revision??n.hosted.revision,etag:r.projectEtag,syncedSourceRevision:i.request.selection==="select"?n.revision:n.hosted.syncedSourceRevision,syncedAt:d,tasksets:[...(n.hosted?.tasksets??[]).filter(l=>l.releaseHash!==r.taskset.contentHash&&l.releaseHash!==r.evaluation?.taskset.contentHash),{localTasksetId:i.localTaskset.id,localTasksetHash:i.localTaskset.contentHash,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,packageHash:r.packageHash,hostedTasksetId:r.hostedTasksetId,syncedAt:d},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,localTasksetHash:i.localEvaluation.contentHash,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,packageHash:r.evaluation.packageHash,hostedTasksetId:r.evaluation.hostedTasksetId,syncedAt:d}]:[]]},tasksetSyncs:[...n.tasksetSyncs.filter(l=>l.localTasksetId!==i.localTaskset.id&&l.localTasksetId!==i.localEvaluation?.id),{localTasksetId:i.localTaskset.id,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,state:"synced",hostedTasksetId:r.hostedTasksetId,lastAttemptAt:d,syncedAt:d,lastError:null},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,state:"synced",hostedTasksetId:r.evaluation.hostedTasksetId,lastAttemptAt:d,syncedAt:d,lastError:null}]:[]]});return Dr(a,n,m,!1,()=>{a.run("UPDATE model_project_package_operations SET state = 'committed', receipt = ? WHERE operation_id = ?",[JSON.stringify(r),e])})}c(Cc,"completeModelPackageOperation");var Ur=class extends Mr{static{c(this,"SqliteModelConfigurationStore")}async pendingModelPackagePush(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Package push store is closed.");return di(this.db,e)}async prepareModelPackagePush(e){await this.ready;let t=this.writeQueue.then(()=>{if(!this.db)throw new Error("Package push store is closed.");return Ac(this.db,e)});return this.writeQueue=t.then(()=>{},()=>{}),t}async completeModelPackagePush(e,t){await this.ready;let r=this.writeQueue.then(()=>{if(!this.db)throw new Error("Package push store is closed.");return Cc(this.db,e,t)});return this.writeQueue=r.then(()=>{},()=>{}),r}async rejectModelPackagePush(e){await this.ready;let t=this.writeQueue.then(()=>{if(!this.db)throw new Error("Package push store is closed.");this.db.run("UPDATE model_project_package_operations SET state = 'rejected' WHERE operation_id = ? AND state = 'pending'",[e])});return this.writeQueue=t.then(()=>{},()=>{}),t}async findModelProjectConfigurationSave(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Model check failed because the local store is closed.");return br(this.db,e)}async saveModelProjectConfiguration(e){await this.ready;let t=this.writeQueue.then(async()=>{if(!this.db)throw new Error("Model save failed because the local store is closed.");let r=br(this.db,e);if(r)return r;let s=await oi(this.db,this.home,e),i=Zs(this.db,e,!0,s);if(i?.imported)await ya({home:this.home,...i.imported});else if(i){let n=Cp.join(this.home,"training","tasksets",Ut(i.source));await tt(this.home,i,i.directoryId,{source:{directory:n,packageHash:await G(n)},verify:c(o=>xt(o,i.taskset),"verify")}),this.db.run("UPDATE model_project_taskset_preparations SET state = 'materialized' WHERE profile_id = ? AND operation_id = ?",[e.project.profileId,e.operationId])}return ic(this.db,e,i,s?.modelResources?{...s.modelResources,taskset:s.taskset,executionResources:{environment:s.environment,verifierSet:s.verifierSet}}:s)});return this.writeQueue=t.then(()=>{},()=>{}),t}async previewModelProjectTasksetSave(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Model check failed because the local store is closed.");return Zs(this.db,e,!1,await oi(this.db,this.home,e))?.taskset??null}async findModelStarterCreation(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Starter lookup failed because the local store is closed.");return va(this.db,e)}async saveModelStarterCreation(e){await this.ready;let t=this.writeQueue.then(async()=>{if(!this.db)throw new Error("Starter creation failed because the local store is closed.");let r=va(this.db,e.request);if(r)return r;let s=ni(this.db,e),i=Sa(s);return await tt(this.home,i,i.taskset.id),Ic(this.db,s)});return this.writeQueue=t.then(()=>{},()=>{}),t}async prepareModelStarterCreation(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Starter check failed because the local store is closed.");return Sa(ni(this.db,e))}async saveModelProjectHosting(e,t,r=!1,s=[]){await this.ready;let i=this.writeQueue.then(async()=>{if(!this.db)throw new Error("Model synchronization failed because the local store is closed.");if(s.length&&!r)throw new Error("Package import requires an atomic Model replacement.");for(let n of s){if(n.taskset.profileId!==t.profileId)throw new Error("Imported package belongs to another Profile.");n.reuseExisting?await st(this.home,n.package):await ya({home:this.home,...n})}return Dr(this.db,e,t,r,()=>{for(let n of s)Pr(this.db,n)})});return this.writeQueue=i.then(()=>{},()=>{}),i}};function Ia(a,e,t,r,s,i,n){return{schemaVersion:"openpond.trainingChatSearchResult.v1",query:a,offset:e,limit:t,total:r,hasMore:e+s.length<r,indexedChats:i,totalChats:n,indexing:i<n,entries:s.map(o=>({sessionId:o.session_id,title:o.title,updatedAt:o.updated_at,snippet:o.snippet?.trim()||null}))}}c(Ia,"trainingChatSearchResult");function Pc(a){let e=a.normalize("NFKC").match(/[\p{L}\p{N}_]+/gu)?.slice(0,24)??[];return e.length?e.map(t=>`"${t.replaceAll('"','""')}"*`).join(" AND "):null}c(Pc,"trainingChatFtsQuery");function ci(a,e,t){let r=a.get(e)??[];r.push(t),a.set(e,r)}c(ci,"appendTrainingChatSearchText");var Oa="('openpond_managed')",Fr=class extends Ur{static{c(this,"SqliteTrainingStore")}async trainingChatSearchSignatures(e){await this.ready,await this.writeQueue;let t=await this.all("SELECT session_id, signature FROM training_chat_search_documents WHERE source = ?",[e]);return new Map(t.map(r=>[r.session_id,r.signature]))}async openPondTrainingChatSearchEvidence(e){await this.ready,await this.writeQueue;let t=[...new Set(e)].slice(0,500);if(!t.length)return[];let r=t.map(()=>"?").join(", "),[s,i,n]=await Promise.all([this.all(`SELECT payload FROM projection_session_shells WHERE id IN (${r})`,t),this.all(`SELECT session_id, payload FROM turns WHERE session_id IN (${r}) ORDER BY sort_index ASC`,t),this.all(`SELECT session_id, payload FROM events
2159
2159
  WHERE name = 'assistant.delta' AND session_id IN (${r})
2160
2160
  ORDER BY sequence ASC`,t)]),o=new Map;for(let d of i){let m=JSON.parse(d.payload);m.prompt.trim()&&ci(o,d.session_id,m.prompt)}for(let d of n){let m=JSON.parse(d.payload);m.output?.trim()&&ci(o,d.session_id,m.output)}return s.map(d=>{let m=la(JSON.parse(d.payload));return{session:m,body:o.get(m.id)?.join(`
2161
2161
  `)??""}})}async syncTrainingChatSearchDocuments(e,t){await this.ready;let r=this.writeQueue.then(async()=>{let s=await this.all("SELECT session_id, signature FROM training_chat_search_documents WHERE source = ?",[e]),i=new Map(s.map(o=>[o.session_id,o.signature])),n=new Set(t.map(o=>o.sessionId));await this.exec("BEGIN IMMEDIATE");try{for(let o of i.keys())n.has(o)||(await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[o]),await this.run("DELETE FROM training_chat_search_documents WHERE session_id = ?",[o]));for(let o of t)i.get(o.sessionId)!==o.signature&&(await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[o.sessionId]),await this.run(`INSERT INTO training_chat_search_documents (session_id, source, signature, title, updated_at, eligible, body_indexed)
@@ -2394,7 +2394,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2394
2394
  channel_revision = ?, current_release_hash = ?, payload = ?, updated_at = ?
2395
2395
  WHERE id = ?`,[t.ownerScope.kind,t.ownerScope.id,t.location,t.revision,t.sourceRevision,t.currentChannel.revision,t.currentChannel.release?.contentHash??null,JSON.stringify(t),t.updatedAt,t.id])}async readHarnessReleaseRecord(e){let t=await this.get("SELECT payload FROM harness_release_records WHERE content_hash = ?",[e]);return t?je.parse(JSON.parse(t.payload)):null}async readHarnessAdvanceReceipt(e){let t=await this.get("SELECT payload FROM harness_advance_receipts WHERE id = ?",[e]);return t?Aa.parse(JSON.parse(t.payload)):null}async insertHarnessAdvanceReceipt(e){let t=Aa.parse(e);await this.run(`INSERT INTO harness_advance_receipts (
2396
2396
  content_hash, id, workspace_id, decision, payload, created_at
2397
- ) VALUES (?, ?, ?, ?, ?, ?)`,[t.contentHash,t.id,t.workspaceId,t.decision,JSON.stringify(t),t.createdAt])}};function Fp(a){if(!a||typeof a!="object")return!1;let e=a;return typeof e.id=="string"&&typeof e.contentHash=="string"}c(Fp,"isReleaseRef");function mi(a,e){return a.id===e.id&&a.contentHash===e.contentHash}c(mi,"sameReleaseRef");var nt="harness.json",Fc=25e7;function jp(a,e){let t=`${fe(e)}-${y(e).slice(0,16)}`,r=L.join(a,"library","harnesses","workspaces",t);return{root:r,source:L.join(r,"source")}}c(jp,"localHarnessWorkspacePaths");async function pN(a){return Kr({...a,initializeSource:c(e=>qp(e,a.name),"initializeSource")})}c(pN,"createLocalHarnessWorkspace");async function uN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded local Profile with a source path can be imported.");return Kr({...a,compilationWorkspaceId:a.repositoryId?Bc(a.repositoryId,a.name):a.id,initializeSource:c(e=>qc(e,a.name,a.profile,a.sourceRevision,a.repositoryId),"initializeSource")})}c(uN,"importProfileIntoLocalHarnessWorkspace");function Bc(a,e){return`profile-source-${y([a,e]).slice(0,24)}`}c(Bc,"profileCompilationWorkspaceId");async function mN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded Profile source can be compiled.");let e=L.join(a.storeDir,"library","harnesses","profile-previews");await b.mkdir(e,{recursive:!0});let t=L.join(e,Ti());try{await qc(t,a.name,a.profile,a.sourceRevision,a.repositoryId);let r=a.repositoryId?Bc(a.repositoryId,a.name):a.workspaceId;return await fi({workspaceId:r,sourceDir:t})}finally{await b.rm(t,{recursive:!0,force:!0})}}c(mN,"compileProfileHarnessSource");async function TN(a){let e=await fi({workspaceId:a.id,sourceDir:a.sourceDir}),t=await a.store.getHarnessWorkspace(a.id);if(t){let r=t.currentChannel.release?await a.store.getHarnessReleaseRecord(t.currentChannel.release.contentHash):null;if(t.ownerScope.id!==a.ownerId||t.sourceRevision!==e.sourceRevision||r?.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Configured Harness source changed; use a new workspace ID for the new release.");return}await Kr({...a,initializeSource:c(async r=>{await b.mkdir(r,{recursive:!0}),await b.writeFile(L.join(r,nt),Y(e.manifest));for(let s of e.sourceFiles){let i=L.join(r,s.path);await b.mkdir(L.dirname(i),{recursive:!0}),await b.writeFile(i,s.bytes)}},"initializeSource")})}c(TN,"importLocalHarnessWorkspaceSource");async function fN(a){let e=await a.store.getHarnessReleaseRecord(a.sourceRelease.contentHash);if(!e||e.harnessRelease.id!==a.sourceRelease.id)throw new Error("Harness workspace fork source release is unavailable.");return Kr({...a,initializeSource:c(async t=>{await b.cp(L.join(e.bundlePath,"source"),t,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1}),await Ei(t,a.name)},"initializeSource")})}c(fN,"forkLocalHarnessWorkspaceFromRelease");async function Kr(a){let e=a.now??(()=>new Date().toISOString()),t=jp(a.storeDir,a.id),r=L.dirname(t.root);await b.mkdir(r,{recursive:!0});let s=L.join(r,`.${L.basename(t.root)}.creating-${Ti()}`),i=L.join(s,"source");try{await a.initializeSource(i),await b.rename(s,t.root)}catch(n){throw await b.rm(s,{recursive:!0,force:!0}).catch(()=>{}),n}try{let n=await fi({workspaceId:a.compilationWorkspaceId??a.id,sourceDir:t.source}),o=await Bp({storeDir:a.storeDir,workspaceId:a.id,compiled:n,createdAt:e()}),d=e(),m=pe.parse({schemaVersion:"openpond.harnessWorkspace.v1",id:a.id,ownerScope:{kind:"personal",id:a.ownerId},name:a.name,location:"local",sourceRevision:n.sourceRevision,revision:0,dirty:!1,currentChannel:{name:"personal",release:{id:n.harnessRelease.id,contentHash:n.harnessRelease.contentHash},revision:1},createdAt:d,updatedAt:d,metadata:{sourceLayout:"openpond.harnessSourceManifest.v1",...a.selectionEligible===!1?{selectionEligible:!1}:{}}});return await a.store.createHarnessWorkspaceWithRelease({workspace:m,release:o})}catch(n){throw await b.rm(t.root,{recursive:!0,force:!0}).catch(()=>{}),n}}c(Kr,"createLocalHarnessWorkspaceFromInitializer");async function fi(a){let e=L.resolve(a.sourceDir),t=L.join(e,nt),r=vt.parse(JSON.parse(await b.readFile(t,"utf8"))),s=new Set(r.files.map(_=>_.path)),i=(await bt(e)).filter(_=>_!==nt),n=i.filter(_=>!s.has(_)),o=[...s].filter(_=>!i.includes(_));if(n.length||o.length)throw new Error(`Harness source manifest mismatch. Unlisted: ${n.join(", ")||"none"}; missing: ${o.join(", ")||"none"}.`);let d=[];for(let _ of r.files){let k=await ur(e,_.path),A=await b.readFile(k);if(A.byteLength>Fc)throw new Error(`Harness source file ${_.path} exceeds ${Fc} bytes.`);d.push({path:_.path,bytes:A,asset:{id:_.id,path:_.path,contentHash:ot(A),sizeBytes:A.byteLength,mediaType:_.mediaType,visibility:_.visibility}})}let m=d.find(({path:_})=>_==="workflows/catalog.json");if(m){let _=r.files.find(H=>H.path===m.path);if(_?.kind!=="workflow"||_.visibility!=="policy")throw new Error("Profile workflow catalog requires a policy-visible workflow declaration.");let k=d.find(({path:H})=>H==="workflows/actions.json"),A=r.files.find(H=>H.path==="workflows/actions.json");if(!k||A?.visibility!=="policy")throw new Error("Profile workflow catalog requires a released action inventory.");let S=Li.parse(JSON.parse(new TextDecoder().decode(k.bytes))).actions,P=new Set;for(let H of S){if(P.has(H.id))throw new Error(`Duplicate Profile workflow action ${H.id}.`);if(P.add(H.id),!Gr(H.inputSchema).valid)throw new Error(`Profile workflow action ${H.id} has an invalid input schema.`);if(!r.files.some(O=>O.path.startsWith(`agents/${H.agentId}/`)))throw new Error(`Profile workflow action ${H.id} lacks its Agent source.`)}let j=zr({catalog:JSON.parse(new TextDecoder().decode(m.bytes)),sourcePaths:new Set(r.files.filter(H=>H.kind==="skill").map(H=>H.path)),actionIds:P});Wc(j)}let l=y({manifest:r,files:d.map(({path:_,asset:k})=>({path:_,contentHash:k.contentHash,sizeBytes:k.sizeBytes}))}),f=c(_=>d.filter(({path:k})=>r.files.find(A=>A.path===k)?.kind===_).map(({asset:k})=>k),"byKind"),p=f("dependency_lock")[0],u=f("program")[0],T=r.files.filter(_=>_.portability==="local_only").map(_=>_.id),h=r.files.filter(_=>_.visibility==="host_private").map(_=>_.id),g=[...T.map(_=>`Asset ${_} is local-only.`),...h.map(_=>`Asset ${_} is host-private.`)],w={id:`harness-source-${l.slice(0,24)}`,contentHash:l},R=Ri({schemaVersion:"openpond.agentSnapshot.v2",id:`agent-snapshot-${y([l,r.toolDeclarations]).slice(0,24)}`,sourceRelease:w,instructions:f("instruction"),skills:f("skill"),agents:f("agent"),toolDeclarations:r.toolDeclarations,capabilityRequirements:r.capabilityRequirements,dependencyLock:p,portability:{portable:g.length===0,blockers:g,localOnlyAssetRefs:T,hostPrivateAssetRefs:h},metadata:{workspaceId:a.workspaceId,sourceRevision:l,sourceLayout:r.schemaVersion}}),N=yi({schemaVersion:"openpond.harnessRelease.v2",id:`harness-${y([R.contentHash,u.contentHash,r.lifecycle]).slice(0,24)}`,agentSnapshot:{id:R.id,contentHash:R.contentHash},program:u,tools:r.toolDeclarations,lifecycle:r.lifecycle,graderInterface:r.graderInterface,files:d.map(({asset:_})=>_),metadata:{runtimeProtocol:r.runtimeProtocol,sourceRevision:l,sourceLayout:r.schemaVersion,...r.metadata.importedFrom==="openpond.profile"?{profile:{id:r.metadata.profileId,sourceRevision:r.metadata.profileGitHead??l,...r.metadata.profileRepositoryId?{repositoryId:r.metadata.profileRepositoryId}:{}}}:{}}});return{manifest:r,sourceRevision:l,agentSnapshot:R,harnessRelease:N,sourceFiles:d}}c(fi,"compileLocalHarnessSource");async function Bp(a){let e=L.join(a.storeDir,"library","harnesses","releases"),t=L.join(e,a.compiled.harnessRelease.contentHash);await b.mkdir(e,{recursive:!0});let r=L.join(e,`.${a.compiled.harnessRelease.contentHash}.materializing-${Ti()}`);try{await b.mkdir(L.join(r,"source"),{recursive:!0});for(let s of a.compiled.sourceFiles){let i=L.join(r,"source",...s.path.split("/"));await b.mkdir(L.dirname(i),{recursive:!0}),await b.writeFile(i,s.bytes,{flag:"wx"})}await b.writeFile(L.join(r,"source",nt),Y(a.compiled.manifest),{flag:"wx"}),await b.writeFile(L.join(r,"agent-snapshot.json"),Y(a.compiled.agentSnapshot),{flag:"wx"}),await b.writeFile(L.join(r,"harness-release.json"),Y(a.compiled.harnessRelease),{flag:"wx"});try{await b.rename(r,t)}catch(s){if(s.code!=="EEXIST"&&s.code!=="ENOTEMPTY")throw s;await jc(t,a.compiled),await b.rm(r,{recursive:!0,force:!0})}await jc(t,a.compiled)}catch(s){throw await b.rm(r,{recursive:!0,force:!0}).catch(()=>{}),s}return je.parse({schemaVersion:"openpond.localHarnessReleaseRecord.v1",workspaceId:a.workspaceId,sourceRevision:a.compiled.sourceRevision,agentSnapshot:a.compiled.agentSnapshot,harnessRelease:a.compiled.harnessRelease,bundlePath:t,createdAt:a.createdAt})}c(Bp,"materializeLocalHarnessRelease");async function qp(a,e){let t=vt.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:[{id:"dependency-lock",kind:"dependency_lock",path:"dependency-lock.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"},{id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}],toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{}});await b.mkdir(a,{recursive:!0}),await b.writeFile(L.join(a,"dependency-lock.json"),Y({dependencies:{}}),{flag:"wx"}),await b.writeFile(L.join(a,"program.json"),Y({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),await b.writeFile(L.join(a,nt),Y(t),{flag:"wx"}),await Ei(a,e)}c(qp,"writeDefaultHarnessSource");async function qc(a,e,t,r,s){let i=L.resolve(t.sourcePath),n=[],o=new Set,d=c(S=>{let P=S.id;o.has(P)&&(P=`${P}-${y(S.path).slice(0,8)}`),o.add(P);let j={...S,id:P};return n.push(j),j},"addDeclaration");await b.mkdir(a,{recursive:!0});for(let S of t.skills.filter(P=>P.enabled)){if(S.validationStatus!=="valid")throw new Error(`Cannot import invalid Profile Skill ${S.name}: ${S.validationMessages.join(" ")}`);let P=L.dirname(L.join(i,S.path)),j=`skills/${fe(S.name)}/SKILL.md`;await qe(L.join(P,"SKILL.md"),L.join(a,...j.split("/")));let H=d({id:`skill-${fe(S.name)}`,kind:"skill",path:j,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"});for(let O of S.resourceFiles){let q=`skills/${fe(S.name)}/${O.split(L.sep).join("/")}`;await qe(L.join(P,O),L.join(a,...q.split("/"))),d({id:`skill-resource-${fe(S.name)}-${y(O).slice(0,12)}`,kind:"skill_resource",path:q,parentId:H.id,mediaType:ca(q),visibility:"policy",portability:"portable"})}}for(let S of t.agents.filter(P=>P.enabled)){let P=L.resolve(i,S.path),j=await Ko(P);if(j.length===0)throw new Error(`Profile Agent ${S.id} has no source files.`);let H=$o(j);for(let O of j){let q=`agents/${fe(S.id)}/${O}`,W=(await b.stat(P)).isDirectory()?L.join(P,...O.split("/")):P;await qe(W,L.join(a,...q.split("/"))),d({id:O===H?`agent-${fe(S.id)}`:`agent-asset-${fe(S.id)}-${y(O).slice(0,12)}`,kind:O===H?"agent":"asset",path:q,parentId:null,mediaType:ca(q),visibility:"policy",portability:"portable"})}await Cs(L.join(a,"agents",fe(S.id)))}let m=new Set,l=new Set(t.agents.filter(S=>S.enabled).map(S=>S.id)),f=t.actionCatalog.filter(S=>S.agentId&&l.has(S.agentId)).map(S=>({id:S.id,agentId:fe(S.agentId),sourceActionId:S.sourceActionId??S.id,inputSchema:typeof S.inputSchema=="object"&&S.inputSchema!==null?S.inputSchema:{type:"object",additionalProperties:!0}})),p=new Set(f.map(S=>S.id)),u=L.join(i,"workflows","catalog.json"),T=await b.lstat(u).catch(()=>null),h=(await bt(i)).filter(S=>S.startsWith("workflows/")),g=h.some(S=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(S));if(g&&T)throw new Error("Authored Workflow packages and legacy workflows/catalog.json cannot coexist; migrate the catalog first.");if(T||g||f.length){if(T&&(!T.isFile()||T.isSymbolicLink()))throw new Error("Profile workflow catalog must be a regular file.");let S=g?bi({files:new Map(await Promise.all(h.map(async O=>[O,await b.readFile(await ur(i,O),"utf8")]))),skillPaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:p}):null,P=S?Buffer.from(Y(S.catalog)):T?await b.readFile(u):Buffer.from(Y({schemaVersion:"openpond.profileWorkflows.v1",workflows:[]})),j=zr({catalog:JSON.parse(P.toString("utf8")),sourcePaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:new Set(f.map(O=>O.id))});for(let O of j.workflows)m.add(O.id);Wc(j);let H="workflows/catalog.json";await b.mkdir(L.join(a,"workflows"),{recursive:!0}),await b.writeFile(L.join(a,"workflows","catalog.json"),P,{flag:"wx"});for(let O of S?.referencedPaths??[])await qe(L.join(i,...O.split("/")),L.join(a,...O.split("/"))),d({id:`profile-workflow-source-${y(O).slice(0,16)}`,kind:"asset",path:O,parentId:null,mediaType:ca(O),visibility:"policy",portability:"portable"});d({id:"profile-workflows",kind:"workflow",path:H,parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"})}(T||g||f.length)&&(await b.writeFile(L.join(a,"workflows","actions.json"),Y({schemaVersion:"openpond.profileWorkflowActions.v1",actions:f}),{flag:"wx"}),d({id:"profile-workflow-actions",kind:"asset",path:"workflows/actions.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}));let w=L.join(i,"evals","catalog.json"),R=await b.lstat(w).catch(()=>null),N=(await bt(i)).filter(S=>/^workflows\/[^/]+\/evals\/[^/]+\.json$/.test(S)||/^evals\/(definitions|suites)\/[^/]+\.json$/.test(S));if(R&&N.length)throw new Error("Authored evaluation definitions and legacy evals/catalog.json cannot coexist; migrate the catalog first.");if(R||N.length){if(R&&(!R.isFile()||R.isSymbolicLink()))throw new Error("Profile evaluation catalog must be a regular file.");let S=[],P=[];for(let D of N){let $=JSON.parse(await b.readFile(await ur(i,D),"utf8"));if(D.startsWith("evals/suites/"))P.push(vn.parse($));else{let J=Sn.parse($),te=/^workflows\/([^/]+)\/evals\//.exec(D)?.[1];if(te&&(J.target.kind!=="workflow"||J.target.workflowId!==te))throw new Error(`Profile evaluation ${J.id} must target its containing Workflow ${te}.`);S.push(J)}}let j=N.length?Buffer.from(Y({schemaVersion:"openpond.profileEvaluations.v1",definitions:S.sort((D,$)=>D.id.localeCompare($.id)),suites:P.sort((D,$)=>D.id.localeCompare($.id))})):await b.readFile(w),{catalog:H}=In({catalog:JSON.parse(j.toString("utf8")),workflowIds:m,skillPaths:new Set(n.filter(D=>D.kind==="skill").map(D=>D.path)),actionIds:p});await b.mkdir(L.join(a,"evals"),{recursive:!0}),await b.writeFile(L.join(a,"evals","catalog.json"),j,{flag:"wx"});for(let D of N)await qe(L.join(i,...D.split("/")),L.join(a,...D.split("/"))),d({id:`profile-evaluation-source-${y(D).slice(0,16)}`,kind:"asset",path:D,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});d({id:"profile-evaluations",kind:"asset",path:"evals/catalog.json",parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});let O=new Set(H.definitions.map(D=>D.tasksetRelease.contentHash)),q=L.join(i,"evals","tasksets"),W=await b.lstat(q).catch(()=>null);if(W&&(!W.isDirectory()||W.isSymbolicLink()))throw new Error("Profile evaluation Taskset directory must be a regular directory.");for(let D of O){let $=L.join(q,`${D}.json`),J=await b.lstat($).catch(()=>null);if(!J)throw new Error(`Profile evaluation Taskset package ${D} is missing.`);if(!J.isFile()||J.isSymbolicLink())throw new Error("Profile evaluation Taskset package must be a regular file.");let te=Me(JSON.parse(await b.readFile($,"utf8")));if(te.taskset.contentHash!==D||!H.definitions.some(hi=>hi.tasksetRelease.contentHash===D&&hi.tasksetRelease.id===te.taskset.id))throw new Error("Profile evaluation Taskset package differs from its catalog reference.");let _i=`evals/tasksets/${D}.json`;await qe($,L.join(a,..._i.split("/"))),d({id:`profile-evaluation-taskset-${D.slice(0,16)}`,kind:"asset",path:_i,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"})}}let _=await Wp(t,r),k=`dependency-lock/${_.name}`;await b.mkdir(L.join(a,"dependency-lock"),{recursive:!0}),_.sourcePath?await qe(_.sourcePath,L.join(a,...k.split("/"))):await b.writeFile(L.join(a,...k.split("/")),Y(_.generated),{flag:"wx"}),d({id:"dependency-lock",kind:"dependency_lock",path:k,parentId:null,mediaType:ca(k),visibility:"policy",portability:"portable"}),await b.writeFile(L.join(a,"program.json"),Y({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),d({id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"});let A=vt.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:n,toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{importedFrom:"openpond.profile",profileId:t.activeProfile,...s?{profileRepositoryId:s}:{},profileGitHead:r??t.git?.head??null,excludedEvalCount:t.evals.length,actionConversionPending:t.actionCatalog.length>0}});await b.writeFile(L.join(a,nt),Y(A),{flag:"wx"}),await Ei(a,e)}c(qc,"writeImportedProfileSource");function Wc(a){for(let e of a.workflows){let t=Gr(e.inputSchema);if(!t.valid)throw new Error(`Profile workflow ${e.id} has an invalid input schema: ${t.issues[0]?.message??"schema mismatch"}`)}}c(Wc,"assertProfileWorkflowInputSchemas");async function Ei(a,e){let t=L.join(a,nt),r=vt.parse(JSON.parse(await b.readFile(t,"utf8")));if(r.files.some(d=>d.kind==="instruction"))return;let s="instructions/system.md";await b.mkdir(L.join(a,"instructions"),{recursive:!0}),await b.writeFile(L.join(a,...s.split("/")),`# ${e}
2397
+ ) VALUES (?, ?, ?, ?, ?, ?)`,[t.contentHash,t.id,t.workspaceId,t.decision,JSON.stringify(t),t.createdAt])}};function Fp(a){if(!a||typeof a!="object")return!1;let e=a;return typeof e.id=="string"&&typeof e.contentHash=="string"}c(Fp,"isReleaseRef");function mi(a,e){return a.id===e.id&&a.contentHash===e.contentHash}c(mi,"sameReleaseRef");var nt="harness.json",Fc=25e7;function jp(a,e){let t=`${fe(e)}-${y(e).slice(0,16)}`,r=L.join(a,"library","harnesses","workspaces",t);return{root:r,source:L.join(r,"source")}}c(jp,"localHarnessWorkspacePaths");async function mN(a){return Kr({...a,initializeSource:c(e=>qp(e,a.name),"initializeSource")})}c(mN,"createLocalHarnessWorkspace");async function TN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded local Profile with a source path can be imported.");return Kr({...a,compilationWorkspaceId:a.repositoryId?Bc(a.repositoryId,a.name):a.id,initializeSource:c(e=>qc(e,a.name,a.profile,a.sourceRevision,a.repositoryId),"initializeSource")})}c(TN,"importProfileIntoLocalHarnessWorkspace");function Bc(a,e){return`profile-source-${y([a,e]).slice(0,24)}`}c(Bc,"profileCompilationWorkspaceId");async function fN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded Profile source can be compiled.");let e=L.join(a.storeDir,"library","harnesses","profile-previews");await b.mkdir(e,{recursive:!0});let t=L.join(e,Ti());try{await qc(t,a.name,a.profile,a.sourceRevision,a.repositoryId);let r=a.repositoryId?Bc(a.repositoryId,a.name):a.workspaceId;return await fi({workspaceId:r,sourceDir:t})}finally{await b.rm(t,{recursive:!0,force:!0})}}c(fN,"compileProfileHarnessSource");async function EN(a){let e=await fi({workspaceId:a.id,sourceDir:a.sourceDir}),t=await a.store.getHarnessWorkspace(a.id);if(t){let r=t.currentChannel.release?await a.store.getHarnessReleaseRecord(t.currentChannel.release.contentHash):null;if(t.ownerScope.id!==a.ownerId||t.sourceRevision!==e.sourceRevision||r?.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Configured Harness source changed; use a new workspace ID for the new release.");return}await Kr({...a,initializeSource:c(async r=>{await b.mkdir(r,{recursive:!0}),await b.writeFile(L.join(r,nt),Y(e.manifest));for(let s of e.sourceFiles){let i=L.join(r,s.path);await b.mkdir(L.dirname(i),{recursive:!0}),await b.writeFile(i,s.bytes)}},"initializeSource")})}c(EN,"importLocalHarnessWorkspaceSource");async function _N(a){let e=await a.store.getHarnessReleaseRecord(a.sourceRelease.contentHash);if(!e||e.harnessRelease.id!==a.sourceRelease.id)throw new Error("Harness workspace fork source release is unavailable.");return Kr({...a,initializeSource:c(async t=>{await b.cp(L.join(e.bundlePath,"source"),t,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1}),await Ei(t,a.name)},"initializeSource")})}c(_N,"forkLocalHarnessWorkspaceFromRelease");async function Kr(a){let e=a.now??(()=>new Date().toISOString()),t=jp(a.storeDir,a.id),r=L.dirname(t.root);await b.mkdir(r,{recursive:!0});let s=L.join(r,`.${L.basename(t.root)}.creating-${Ti()}`),i=L.join(s,"source");try{await a.initializeSource(i),await b.rename(s,t.root)}catch(n){throw await b.rm(s,{recursive:!0,force:!0}).catch(()=>{}),n}try{let n=await fi({workspaceId:a.compilationWorkspaceId??a.id,sourceDir:t.source}),o=await Bp({storeDir:a.storeDir,workspaceId:a.id,compiled:n,createdAt:e()}),d=e(),m=pe.parse({schemaVersion:"openpond.harnessWorkspace.v1",id:a.id,ownerScope:a.originOwnerScope??{kind:"personal",id:a.ownerId},name:a.name,location:"local",sourceRevision:n.sourceRevision,revision:0,dirty:!1,currentChannel:{name:"personal",release:{id:n.harnessRelease.id,contentHash:n.harnessRelease.contentHash},revision:1},createdAt:d,updatedAt:d,metadata:{...a.originMetadata,sourceLayout:"openpond.harnessSourceManifest.v1",...a.selectionEligible===!1?{selectionEligible:!1}:{}}});return await a.store.createHarnessWorkspaceWithRelease({workspace:m,release:o})}catch(n){throw await b.rm(t.root,{recursive:!0,force:!0}).catch(()=>{}),n}}c(Kr,"createLocalHarnessWorkspaceFromInitializer");async function fi(a){let e=L.resolve(a.sourceDir),t=L.join(e,nt),r=vt.parse(JSON.parse(await b.readFile(t,"utf8"))),s=new Set(r.files.map(_=>_.path)),i=(await bt(e)).filter(_=>_!==nt),n=i.filter(_=>!s.has(_)),o=[...s].filter(_=>!i.includes(_));if(n.length||o.length)throw new Error(`Harness source manifest mismatch. Unlisted: ${n.join(", ")||"none"}; missing: ${o.join(", ")||"none"}.`);let d=[];for(let _ of r.files){let k=await ur(e,_.path),A=await b.readFile(k);if(A.byteLength>Fc)throw new Error(`Harness source file ${_.path} exceeds ${Fc} bytes.`);d.push({path:_.path,bytes:A,asset:{id:_.id,path:_.path,contentHash:ot(A),sizeBytes:A.byteLength,mediaType:_.mediaType,visibility:_.visibility}})}let m=d.find(({path:_})=>_==="workflows/catalog.json");if(m){let _=r.files.find(H=>H.path===m.path);if(_?.kind!=="workflow"||_.visibility!=="policy")throw new Error("Profile workflow catalog requires a policy-visible workflow declaration.");let k=d.find(({path:H})=>H==="workflows/actions.json"),A=r.files.find(H=>H.path==="workflows/actions.json");if(!k||A?.visibility!=="policy")throw new Error("Profile workflow catalog requires a released action inventory.");let S=Li.parse(JSON.parse(new TextDecoder().decode(k.bytes))).actions,P=new Set;for(let H of S){if(P.has(H.id))throw new Error(`Duplicate Profile workflow action ${H.id}.`);if(P.add(H.id),!Gr(H.inputSchema).valid)throw new Error(`Profile workflow action ${H.id} has an invalid input schema.`);if(!r.files.some(O=>O.path.startsWith(`agents/${H.agentId}/`)))throw new Error(`Profile workflow action ${H.id} lacks its Agent source.`)}let j=zr({catalog:JSON.parse(new TextDecoder().decode(m.bytes)),sourcePaths:new Set(r.files.filter(H=>H.kind==="skill").map(H=>H.path)),actionIds:P});Wc(j)}let l=y({manifest:r,files:d.map(({path:_,asset:k})=>({path:_,contentHash:k.contentHash,sizeBytes:k.sizeBytes}))}),f=c(_=>d.filter(({path:k})=>r.files.find(A=>A.path===k)?.kind===_).map(({asset:k})=>k),"byKind"),p=f("dependency_lock")[0],u=f("program")[0],T=r.files.filter(_=>_.portability==="local_only").map(_=>_.id),h=r.files.filter(_=>_.visibility==="host_private").map(_=>_.id),g=[...T.map(_=>`Asset ${_} is local-only.`),...h.map(_=>`Asset ${_} is host-private.`)],w={id:`harness-source-${l.slice(0,24)}`,contentHash:l},R=Ri({schemaVersion:"openpond.agentSnapshot.v2",id:`agent-snapshot-${y([l,r.toolDeclarations]).slice(0,24)}`,sourceRelease:w,instructions:f("instruction"),skills:f("skill"),agents:f("agent"),toolDeclarations:r.toolDeclarations,capabilityRequirements:r.capabilityRequirements,dependencyLock:p,portability:{portable:g.length===0,blockers:g,localOnlyAssetRefs:T,hostPrivateAssetRefs:h},metadata:{workspaceId:a.workspaceId,sourceRevision:l,sourceLayout:r.schemaVersion}}),N=yi({schemaVersion:"openpond.harnessRelease.v2",id:`harness-${y([R.contentHash,u.contentHash,r.lifecycle]).slice(0,24)}`,agentSnapshot:{id:R.id,contentHash:R.contentHash},program:u,tools:r.toolDeclarations,lifecycle:r.lifecycle,graderInterface:r.graderInterface,files:d.map(({asset:_})=>_),metadata:{runtimeProtocol:r.runtimeProtocol,sourceRevision:l,sourceLayout:r.schemaVersion,...r.metadata.importedFrom==="openpond.profile"?{profile:{id:r.metadata.profileId,sourceRevision:r.metadata.profileGitHead??l,...r.metadata.profileRepositoryId?{repositoryId:r.metadata.profileRepositoryId}:{}}}:{}}});return{manifest:r,sourceRevision:l,agentSnapshot:R,harnessRelease:N,sourceFiles:d}}c(fi,"compileLocalHarnessSource");async function Bp(a){let e=L.join(a.storeDir,"library","harnesses","releases"),t=L.join(e,a.compiled.harnessRelease.contentHash);await b.mkdir(e,{recursive:!0});let r=L.join(e,`.${a.compiled.harnessRelease.contentHash}.materializing-${Ti()}`);try{await b.mkdir(L.join(r,"source"),{recursive:!0});for(let s of a.compiled.sourceFiles){let i=L.join(r,"source",...s.path.split("/"));await b.mkdir(L.dirname(i),{recursive:!0}),await b.writeFile(i,s.bytes,{flag:"wx"})}await b.writeFile(L.join(r,"source",nt),Y(a.compiled.manifest),{flag:"wx"}),await b.writeFile(L.join(r,"agent-snapshot.json"),Y(a.compiled.agentSnapshot),{flag:"wx"}),await b.writeFile(L.join(r,"harness-release.json"),Y(a.compiled.harnessRelease),{flag:"wx"});try{await b.rename(r,t)}catch(s){if(s.code!=="EEXIST"&&s.code!=="ENOTEMPTY")throw s;await jc(t,a.compiled),await b.rm(r,{recursive:!0,force:!0})}await jc(t,a.compiled)}catch(s){throw await b.rm(r,{recursive:!0,force:!0}).catch(()=>{}),s}return je.parse({schemaVersion:"openpond.localHarnessReleaseRecord.v1",workspaceId:a.workspaceId,sourceRevision:a.compiled.sourceRevision,agentSnapshot:a.compiled.agentSnapshot,harnessRelease:a.compiled.harnessRelease,bundlePath:t,createdAt:a.createdAt})}c(Bp,"materializeLocalHarnessRelease");async function qp(a,e){let t=vt.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:[{id:"dependency-lock",kind:"dependency_lock",path:"dependency-lock.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"},{id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}],toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{}});await b.mkdir(a,{recursive:!0}),await b.writeFile(L.join(a,"dependency-lock.json"),Y({dependencies:{}}),{flag:"wx"}),await b.writeFile(L.join(a,"program.json"),Y({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),await b.writeFile(L.join(a,nt),Y(t),{flag:"wx"}),await Ei(a,e)}c(qp,"writeDefaultHarnessSource");async function qc(a,e,t,r,s){let i=L.resolve(t.sourcePath),n=[],o=new Set,d=c(S=>{let P=S.id;o.has(P)&&(P=`${P}-${y(S.path).slice(0,8)}`),o.add(P);let j={...S,id:P};return n.push(j),j},"addDeclaration");await b.mkdir(a,{recursive:!0});for(let S of t.skills.filter(P=>P.enabled)){if(S.validationStatus!=="valid")throw new Error(`Cannot import invalid Profile Skill ${S.name}: ${S.validationMessages.join(" ")}`);let P=L.dirname(L.join(i,S.path)),j=`skills/${fe(S.name)}/SKILL.md`;await qe(L.join(P,"SKILL.md"),L.join(a,...j.split("/")));let H=d({id:`skill-${fe(S.name)}`,kind:"skill",path:j,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"});for(let O of S.resourceFiles){let q=`skills/${fe(S.name)}/${O.split(L.sep).join("/")}`;await qe(L.join(P,O),L.join(a,...q.split("/"))),d({id:`skill-resource-${fe(S.name)}-${y(O).slice(0,12)}`,kind:"skill_resource",path:q,parentId:H.id,mediaType:ca(q),visibility:"policy",portability:"portable"})}}for(let S of t.agents.filter(P=>P.enabled)){let P=L.resolve(i,S.path),j=await Ko(P);if(j.length===0)throw new Error(`Profile Agent ${S.id} has no source files.`);let H=$o(j);for(let O of j){let q=`agents/${fe(S.id)}/${O}`,W=(await b.stat(P)).isDirectory()?L.join(P,...O.split("/")):P;await qe(W,L.join(a,...q.split("/"))),d({id:O===H?`agent-${fe(S.id)}`:`agent-asset-${fe(S.id)}-${y(O).slice(0,12)}`,kind:O===H?"agent":"asset",path:q,parentId:null,mediaType:ca(q),visibility:"policy",portability:"portable"})}await Cs(L.join(a,"agents",fe(S.id)))}let m=new Set,l=new Set(t.agents.filter(S=>S.enabled).map(S=>S.id)),f=t.actionCatalog.filter(S=>S.agentId&&l.has(S.agentId)).map(S=>({id:S.id,agentId:fe(S.agentId),sourceActionId:S.sourceActionId??S.id,inputSchema:typeof S.inputSchema=="object"&&S.inputSchema!==null?S.inputSchema:{type:"object",additionalProperties:!0}})),p=new Set(f.map(S=>S.id)),u=L.join(i,"workflows","catalog.json"),T=await b.lstat(u).catch(()=>null),h=(await bt(i)).filter(S=>S.startsWith("workflows/")),g=h.some(S=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(S));if(g&&T)throw new Error("Authored Workflow packages and legacy workflows/catalog.json cannot coexist; migrate the catalog first.");if(T||g||f.length){if(T&&(!T.isFile()||T.isSymbolicLink()))throw new Error("Profile workflow catalog must be a regular file.");let S=g?bi({files:new Map(await Promise.all(h.map(async O=>[O,await b.readFile(await ur(i,O),"utf8")]))),skillPaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:p}):null,P=S?Buffer.from(Y(S.catalog)):T?await b.readFile(u):Buffer.from(Y({schemaVersion:"openpond.profileWorkflows.v1",workflows:[]})),j=zr({catalog:JSON.parse(P.toString("utf8")),sourcePaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:new Set(f.map(O=>O.id))});for(let O of j.workflows)m.add(O.id);Wc(j);let H="workflows/catalog.json";await b.mkdir(L.join(a,"workflows"),{recursive:!0}),await b.writeFile(L.join(a,"workflows","catalog.json"),P,{flag:"wx"});for(let O of S?.referencedPaths??[])await qe(L.join(i,...O.split("/")),L.join(a,...O.split("/"))),d({id:`profile-workflow-source-${y(O).slice(0,16)}`,kind:"asset",path:O,parentId:null,mediaType:ca(O),visibility:"policy",portability:"portable"});d({id:"profile-workflows",kind:"workflow",path:H,parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"})}(T||g||f.length)&&(await b.writeFile(L.join(a,"workflows","actions.json"),Y({schemaVersion:"openpond.profileWorkflowActions.v1",actions:f}),{flag:"wx"}),d({id:"profile-workflow-actions",kind:"asset",path:"workflows/actions.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}));let w=L.join(i,"evals","catalog.json"),R=await b.lstat(w).catch(()=>null),N=(await bt(i)).filter(S=>/^workflows\/[^/]+\/evals\/[^/]+\.json$/.test(S)||/^evals\/(definitions|suites)\/[^/]+\.json$/.test(S));if(R&&N.length)throw new Error("Authored evaluation definitions and legacy evals/catalog.json cannot coexist; migrate the catalog first.");if(R||N.length){if(R&&(!R.isFile()||R.isSymbolicLink()))throw new Error("Profile evaluation catalog must be a regular file.");let S=[],P=[];for(let D of N){let $=JSON.parse(await b.readFile(await ur(i,D),"utf8"));if(D.startsWith("evals/suites/"))P.push(vn.parse($));else{let J=Sn.parse($),te=/^workflows\/([^/]+)\/evals\//.exec(D)?.[1];if(te&&(J.target.kind!=="workflow"||J.target.workflowId!==te))throw new Error(`Profile evaluation ${J.id} must target its containing Workflow ${te}.`);S.push(J)}}let j=N.length?Buffer.from(Y({schemaVersion:"openpond.profileEvaluations.v1",definitions:S.sort((D,$)=>D.id.localeCompare($.id)),suites:P.sort((D,$)=>D.id.localeCompare($.id))})):await b.readFile(w),{catalog:H}=In({catalog:JSON.parse(j.toString("utf8")),workflowIds:m,skillPaths:new Set(n.filter(D=>D.kind==="skill").map(D=>D.path)),actionIds:p});await b.mkdir(L.join(a,"evals"),{recursive:!0}),await b.writeFile(L.join(a,"evals","catalog.json"),j,{flag:"wx"});for(let D of N)await qe(L.join(i,...D.split("/")),L.join(a,...D.split("/"))),d({id:`profile-evaluation-source-${y(D).slice(0,16)}`,kind:"asset",path:D,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});d({id:"profile-evaluations",kind:"asset",path:"evals/catalog.json",parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});let O=new Set(H.definitions.map(D=>D.tasksetRelease.contentHash)),q=L.join(i,"evals","tasksets"),W=await b.lstat(q).catch(()=>null);if(W&&(!W.isDirectory()||W.isSymbolicLink()))throw new Error("Profile evaluation Taskset directory must be a regular directory.");for(let D of O){let $=L.join(q,`${D}.json`),J=await b.lstat($).catch(()=>null);if(!J)throw new Error(`Profile evaluation Taskset package ${D} is missing.`);if(!J.isFile()||J.isSymbolicLink())throw new Error("Profile evaluation Taskset package must be a regular file.");let te=Me(JSON.parse(await b.readFile($,"utf8")));if(te.taskset.contentHash!==D||!H.definitions.some(hi=>hi.tasksetRelease.contentHash===D&&hi.tasksetRelease.id===te.taskset.id))throw new Error("Profile evaluation Taskset package differs from its catalog reference.");let _i=`evals/tasksets/${D}.json`;await qe($,L.join(a,..._i.split("/"))),d({id:`profile-evaluation-taskset-${D.slice(0,16)}`,kind:"asset",path:_i,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"})}}let _=await Wp(t,r),k=`dependency-lock/${_.name}`;await b.mkdir(L.join(a,"dependency-lock"),{recursive:!0}),_.sourcePath?await qe(_.sourcePath,L.join(a,...k.split("/"))):await b.writeFile(L.join(a,...k.split("/")),Y(_.generated),{flag:"wx"}),d({id:"dependency-lock",kind:"dependency_lock",path:k,parentId:null,mediaType:ca(k),visibility:"policy",portability:"portable"}),await b.writeFile(L.join(a,"program.json"),Y({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),d({id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"});let A=vt.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:n,toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{importedFrom:"openpond.profile",profileId:t.activeProfile,...s?{profileRepositoryId:s}:{},profileGitHead:r??t.git?.head??null,excludedEvalCount:t.evals.length,actionConversionPending:t.actionCatalog.length>0}});await b.writeFile(L.join(a,nt),Y(A),{flag:"wx"}),await Ei(a,e)}c(qc,"writeImportedProfileSource");function Wc(a){for(let e of a.workflows){let t=Gr(e.inputSchema);if(!t.valid)throw new Error(`Profile workflow ${e.id} has an invalid input schema: ${t.issues[0]?.message??"schema mismatch"}`)}}c(Wc,"assertProfileWorkflowInputSchemas");async function Ei(a,e){let t=L.join(a,nt),r=vt.parse(JSON.parse(await b.readFile(t,"utf8")));if(r.files.some(d=>d.kind==="instruction"))return;let s="instructions/system.md";await b.mkdir(L.join(a,"instructions"),{recursive:!0}),await b.writeFile(L.join(a,...s.split("/")),`# ${e}
2398
2398
 
2399
2399
  Keep reusable, provider-neutral execution guidance for this Harness here.
2400
- `,{flag:"wx"});let n=new Set(r.files.map(d=>d.id)).has("instruction-system")?`instruction-system-${y(s).slice(0,8)}`:"instruction-system",o=vt.parse({...r,name:e,files:[...r.files,{id:n,kind:"instruction",path:s,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"}]});await b.writeFile(t,Y(o),{flag:"w"})}c(Ei,"ensureHarnessInstructionSurface");async function Wp(a,e){let t=a.repoPath?L.resolve(a.repoPath):null;if(t)for(let r of["pnpm-lock.yaml","package-lock.json","yarn.lock"]){let s=L.join(t,r),i=await b.lstat(s).catch(()=>null);if(i?.isFile()&&!i.isSymbolicLink())return{name:r,sourcePath:s}}return{name:"profile-import.json",sourcePath:null,generated:{source:"openpond.profile",profileId:a.activeProfile,profileGitHead:e??a.git?.head??null,dependenciesResolved:!1}}}c(Wp,"importedDependencyLock");async function jc(a,e){let t=dt.parse(JSON.parse(await b.readFile(L.join(a,"agent-snapshot.json"),"utf8"))),r=ct.parse(JSON.parse(await b.readFile(L.join(a,"harness-release.json"),"utf8")));if(t.contentHash!==e.agentSnapshot.contentHash||r.contentHash!==e.harnessRelease.contentHash)throw new Error("Materialized Harness release does not match the compiled immutable objects.");for(let s of e.sourceFiles){let i=await b.readFile(L.join(a,"source",...s.path.split("/")));if(ot(i)!==s.asset.contentHash)throw new Error(`Materialized Harness asset ${s.path} failed hash verification.`)}}c(jc,"verifyMaterializedRelease");export{Kc as a,vm as b,xm as c,Ym as d,iT as e,mT as f,Jc as g,Vc as h,Gc as i,yT as j,kT as k,NT as l,DT as m,mr as n,la as o,Ds as p,fr as q,Zo as r,ed as s,El as t,ee as u,_l as v,gl as w,rd as x,kf as y,hd as z,tE as A,aE as B,rE as C,sE as D,iE as E,nE as F,oE as G,dE as H,cE as I,lE as J,pE as K,Nd as L,Fl as M,rh as N,sh as O,ih as P,ye as Q,Yd as R,xt as S,Vd as T,Gd as U,ha as V,zl as W,wa as X,tw as Y,st as Z,ke as _,Ec as $,Dt as aa,Ut as ba,bc as ca,je as da,li as ea,Uc as fa,jp as ga,pN as ha,uN as ia,mN as ja,TN as ka,fN as la,fi as ma,Bp as na};
2400
+ `,{flag:"wx"});let n=new Set(r.files.map(d=>d.id)).has("instruction-system")?`instruction-system-${y(s).slice(0,8)}`:"instruction-system",o=vt.parse({...r,name:e,files:[...r.files,{id:n,kind:"instruction",path:s,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"}]});await b.writeFile(t,Y(o),{flag:"w"})}c(Ei,"ensureHarnessInstructionSurface");async function Wp(a,e){let t=a.repoPath?L.resolve(a.repoPath):null;if(t)for(let r of["pnpm-lock.yaml","package-lock.json","yarn.lock"]){let s=L.join(t,r),i=await b.lstat(s).catch(()=>null);if(i?.isFile()&&!i.isSymbolicLink())return{name:r,sourcePath:s}}return{name:"profile-import.json",sourcePath:null,generated:{source:"openpond.profile",profileId:a.activeProfile,profileGitHead:e??a.git?.head??null,dependenciesResolved:!1}}}c(Wp,"importedDependencyLock");async function jc(a,e){let t=dt.parse(JSON.parse(await b.readFile(L.join(a,"agent-snapshot.json"),"utf8"))),r=ct.parse(JSON.parse(await b.readFile(L.join(a,"harness-release.json"),"utf8")));if(t.contentHash!==e.agentSnapshot.contentHash||r.contentHash!==e.harnessRelease.contentHash)throw new Error("Materialized Harness release does not match the compiled immutable objects.");for(let s of e.sourceFiles){let i=await b.readFile(L.join(a,"source",...s.path.split("/")));if(ot(i)!==s.asset.contentHash)throw new Error(`Materialized Harness asset ${s.path} failed hash verification.`)}}c(jc,"verifyMaterializedRelease");export{Kc as a,vm as b,xm as c,Ym as d,iT as e,mT as f,Jc as g,Vc as h,Gc as i,yT as j,kT as k,NT as l,DT as m,mr as n,la as o,Ds as p,fr as q,Zo as r,ed as s,El as t,ee as u,_l as v,gl as w,rd as x,kf as y,hd as z,tE as A,aE as B,rE as C,sE as D,iE as E,nE as F,oE as G,dE as H,cE as I,lE as J,pE as K,Nd as L,Fl as M,rh as N,sh as O,ih as P,ye as Q,Yd as R,xt as S,Vd as T,Gd as U,ha as V,zl as W,wa as X,rw as Y,st as Z,ke as _,Ec as $,Dt as aa,Ut as ba,bc as ca,je as da,li as ea,Uc as fa,jp as ga,mN as ha,TN as ia,fN as ja,EN as ka,_N as la,fi as ma,Bp as na};