openpond 0.2.45 → 0.2.46
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.
- package/RELEASE.md +16 -13
- package/dist/app-server.d.ts +10474 -10090
- package/dist/app-server.js +1 -1
- package/dist/chunks/actions-command-I3NI75P2.js +2 -0
- package/dist/chunks/{app-layer-MDJFV3HZ.js → app-layer-B3SMVO4B.js} +1 -1
- package/dist/chunks/app-server-runtime-FL2CHQU2.js +2 -0
- package/dist/chunks/apps-OA2VX34V.js +2 -0
- package/dist/chunks/{chunk-4EGDKOYP.js → chunk-33AO3P6X.js} +1 -1
- package/dist/chunks/chunk-4UTIEH5H.js +16 -0
- package/dist/chunks/{chunk-J65BMG5Q.js → chunk-4VKNBADF.js} +1 -1
- package/dist/chunks/{chunk-B6LYKEMU.js → chunk-5OGRWWEH.js} +1 -1
- package/dist/chunks/chunk-5ZZM3TUN.js +24 -0
- package/dist/chunks/chunk-6JBWHR6T.js +5 -0
- package/dist/chunks/{chunk-DXAZUJPA.js → chunk-6SJZXZNA.js} +1 -1
- package/dist/chunks/{chunk-TVQE3JMI.js → chunk-6WLJWRMF.js} +1 -1
- package/dist/chunks/chunk-BKMGBIBT.js +2 -0
- package/dist/chunks/chunk-BQNK2NMB.js +21 -0
- package/dist/chunks/{chunk-VESOG2SS.js → chunk-BUFQKDAW.js} +1 -1
- package/dist/chunks/{chunk-DWGB536R.js → chunk-D6E7JBBQ.js} +7 -7
- package/dist/chunks/chunk-D6MQTNJ3.js +9 -0
- package/dist/chunks/chunk-DNXKIIV7.js +3 -0
- package/dist/chunks/{chunk-EG55BFQ4.js → chunk-EWS7MXTM.js} +1 -1
- package/dist/chunks/{chunk-GEDEVI4Y.js → chunk-F2AG46CV.js} +1 -1
- package/dist/chunks/{chunk-CR6CDOKS.js → chunk-F5DUN73H.js} +2 -2
- package/dist/chunks/chunk-FKCWOASO.js +49 -0
- package/dist/chunks/chunk-FOEUDMME.js +2678 -0
- package/dist/chunks/chunk-H6W55CQG.js +2 -0
- package/dist/chunks/chunk-HK3WGUKK.js +17 -0
- package/dist/chunks/{chunk-25GCTLAZ.js → chunk-HO5L2FUU.js} +1 -1
- package/dist/chunks/{chunk-XPB6NY7L.js → chunk-HP2D3W2B.js} +3 -3
- package/dist/chunks/chunk-ICZEOMPO.js +2 -0
- package/dist/chunks/{chunk-IYRHG54Q.js → chunk-IV7F74JJ.js} +1 -1
- package/dist/chunks/{chunk-U6SFIFDM.js → chunk-JBHAU7PH.js} +39 -39
- package/dist/chunks/chunk-JO7GRBOG.js +2 -0
- package/dist/chunks/{chunk-KPDWQCF6.js → chunk-KE5RH6JA.js} +1 -1
- package/dist/chunks/chunk-KUKOZJIR.js +2 -0
- package/dist/chunks/chunk-L4BYPZ4U.js +22 -0
- package/dist/chunks/{chunk-Z2BYC6TP.js → chunk-LZSY5IM3.js} +1 -1
- package/dist/chunks/{chunk-TNXILYI6.js → chunk-M7PBDRKC.js} +1 -1
- package/dist/chunks/{chunk-OJVIH7J6.js → chunk-MCRA6ZGJ.js} +1 -1
- package/dist/chunks/{chunk-YWX7FKLM.js → chunk-OGXSE57Z.js} +1 -1
- package/dist/chunks/{chunk-HZP5U2AA.js → chunk-P653BXMY.js} +1 -1
- package/dist/chunks/chunk-PMZH2TKS.js +4 -0
- package/dist/chunks/chunk-TYWBEJOA.js +3 -0
- package/dist/chunks/chunk-USWZ3KUC.js +2 -0
- package/dist/chunks/chunk-UWO34HP6.js +33 -0
- package/dist/chunks/{chunk-5ZFEQLRI.js → chunk-VW7D3DRM.js} +1 -1
- package/dist/chunks/chunk-W4IL6TWB.js +186 -0
- package/dist/chunks/chunk-WVNN3RB2.js +2 -0
- package/dist/chunks/{chunk-VVV5I22A.js → chunk-WWABOVRW.js} +2 -2
- package/dist/chunks/{chunk-B3O2GAQH.js → chunk-XLDW5NN3.js} +1 -1
- package/dist/chunks/chunk-YSYXIJ46.js +8 -0
- package/dist/chunks/{chunk-V62BHD5G.js → chunk-ZC57DX6D.js} +1 -1
- package/dist/chunks/{chunk-FXIUKYUR.js → chunk-ZJY2L43W.js} +3 -3
- package/dist/chunks/cli-5QR7QNQJ.js +2 -0
- package/dist/chunks/{configuration-command-75ZCMZ6X.js → configuration-command-MVZS625X.js} +1 -1
- package/dist/chunks/connected-evidence-7LHUZ2UI.js +2 -0
- package/dist/chunks/{continual-WWPXK2LO.js → continual-K5JNHNQH.js} +3 -3
- package/dist/chunks/core-commands-J2SJM5I5.js +2 -0
- package/dist/chunks/datasets-KDN2EXHE.js +2 -0
- package/dist/chunks/desktop-test-WIOEKMPR.js +3 -0
- package/dist/chunks/dist-3MTJ7VM6.js +2 -0
- package/dist/chunks/{dist-ELWB75PL.js → dist-JBE7DPFZ.js} +1 -1
- package/dist/chunks/evaluation-coordination-NGYHL7HG.js +2 -0
- package/dist/chunks/experiment-improvements-2M7GRGWS.js +2 -0
- package/dist/chunks/experiments-B6CRZ3GI.js +2 -0
- package/dist/chunks/{extension-3M2CSWZB.js → extension-RZTMK3ON.js} +1 -1
- package/dist/chunks/{help-RLRU33WN.js → help-EISFHH2F.js} +1 -1
- package/dist/chunks/hosted-experiment-improvement-6CHH65DX.js +3 -0
- package/dist/chunks/hosted-harness-runtime-PAYMAXH7.js +2 -0
- package/dist/chunks/hosted-profile-candidate-HYEISIAC.js +3 -0
- package/dist/chunks/hosted-profile-compiler-KQREWJA5.js +2 -0
- package/dist/chunks/hosted-profile-evaluation-control-LV6YXOG7.js +2 -0
- package/dist/chunks/hosted-profile-evaluation-inspection-A62UYFEP.js +3 -0
- package/dist/chunks/hosted-profile-evaluation-preparation-OR4OLYEX.js +3 -0
- package/dist/chunks/human-review-J6JGNRBR.js +2 -0
- package/dist/chunks/import-YHSX6SBZ.js +4 -0
- package/dist/chunks/learning-REL6GGNA.js +2 -0
- package/dist/chunks/opchat-CUZUU2WM.js +3 -0
- package/dist/chunks/organizations-VT27V4B2.js +2 -0
- package/dist/chunks/{profile-DC4UEVVG.js → profile-N2E5ASHQ.js} +1 -1
- package/dist/chunks/project-agent-XMXOBJSC.js +2 -0
- package/dist/chunks/sandbox-command-NC665ZZ5.js +2 -0
- package/dist/chunks/{sandbox-template-DFHWHCIQ.js → sandbox-template-OTP6S3RU.js} +1 -1
- package/dist/chunks/src-TNWF3IC5.js +329 -0
- package/dist/chunks/{src-CREVQF7M.js → src-WM35IF4W.js} +5 -5
- package/dist/chunks/{taskset-TB2ICAZU.js → taskset-COAPMTT3.js} +1 -1
- package/dist/chunks/{teams-bot-BNBL57S5.js → teams-bot-ACWJ7PJP.js} +1 -1
- package/dist/chunks/{training-FW5FOGR3.js → training-4JUK7YQV.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/dist/web/assets/App-CdDQ-lXE.css +1 -0
- package/dist/web/assets/App-D2f8_mGk.js +235 -0
- package/dist/web/assets/{AppDialog-Cgn_fTGR.js → AppDialog-CaxeNfsu.js} +1 -1
- package/dist/web/assets/{AppTerminalPanel-cNYkSvM2.js → AppTerminalPanel-dtK0ZPer.js} +2 -2
- package/dist/web/assets/{AppsView-9zpKBSLv.js → AppsView-DwK1UBJP.js} +1 -1
- package/dist/web/assets/BrowserSidebar-Cj9VnkgU.js +1 -0
- package/dist/web/assets/{CartesianChart-Bg3Lm5mZ.js → CartesianChart-Drfk6jTn.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-BIfgIy5X.js → CollaborationTabs-Czh2noeb.js} +1 -1
- package/dist/web/assets/{CommandMenu-D9BimyPx.js → CommandMenu-D-M-xomh.js} +1 -1
- package/dist/web/assets/CommunityView-BrdxUI5Z.js +1 -0
- package/dist/web/assets/ComposerCreateImproveStrip-CJ8nkYJf.js +1 -0
- package/dist/web/assets/GetStartedView-u7Jw7YA1.js +1 -0
- package/dist/web/assets/HostedModelLearningReview-D0a2nwse.js +1 -0
- package/dist/web/assets/HostedModelLearningSettings-CQQGyjxi.js +1 -0
- package/dist/web/assets/LabModelVersionDetailPage-Cxlc4sSC.js +1 -0
- package/dist/web/assets/LabSkillSidebar-BnJkDb0c.js +1 -0
- package/dist/web/assets/LabsRoute-hHwZNbqN.js +99 -0
- package/dist/web/assets/MainChatThread-r_TYiTnW.js +2 -0
- package/dist/web/assets/MainPane-DJcd4tPk.js +19 -0
- package/dist/web/assets/MainPane-DOWsSew1.css +1 -0
- package/dist/web/assets/{MarkdownText-De0WzrEw.js → MarkdownText-BxPHz4je.js} +1 -1
- package/dist/web/assets/{NativeSkillSidebar-B4jtf5RO.js → NativeSkillSidebar-CCHK6kMG.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-Bg1DVr96.js → NewExperienceSwitcher-CuKWTDZj.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-i_wvIBw-.js → NewProjectDialog-CS6sw2oD.js} +1 -1
- package/dist/web/assets/OutputsPage-JDM5bfLJ.js +1 -0
- package/dist/web/assets/{ProjectsPage-BD0eml0M.js → ProjectsPage-B3zTBHOA.js} +1 -1
- package/dist/web/assets/RightChatPanelStack-L8S3yj1u.js +1 -0
- package/dist/web/assets/{RightSidebarHomePanel-BTpU5wGh.js → RightSidebarHomePanel-BWJQKFUp.js} +1 -1
- package/dist/web/assets/ScheduledWorkPage-qX12p4B0.js +1 -0
- package/dist/web/assets/SettingsView-0KMs-r2I.js +9 -0
- package/dist/web/assets/SettingsView-CVsuQeCZ.css +1 -0
- package/dist/web/assets/{TeamChatView-5LjuRNd6.js → TeamChatView-DakXCNQE.js} +2 -2
- package/dist/web/assets/{TerminalOverlay-BCWBSotQ.js → TerminalOverlay-DaonK5C0.js} +12 -12
- package/dist/web/assets/{TrainingCreationPanel-hvOHRVJx.js → TrainingCreationPanel-CUvSsSwp.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-CGEHGljE.js → TrainingDraftPanel-DNivtVwd.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-B8nbqhag.js → UsageSettingsSection-rbmuoPoE.js} +1 -1
- package/dist/web/assets/WorkSidebarPanel-DrYt9xzv.js +1 -0
- package/dist/web/assets/WorkspaceDiffPanel-CThoTqe4.js +14 -0
- package/dist/web/assets/WorkspaceEnvironmentMenu-DeODKxvW.js +32 -0
- package/dist/web/assets/{WorkspaceGitDialogs-Dyx4Rbiy.js → WorkspaceGitDialogs-CBarJYF-.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-B1dKexHo.js → WorkspaceMonacoEditor-Hmu5m_sO.js} +3 -3
- package/dist/web/assets/{arrow-up-right-CCj7SOGp.js → arrow-up-right-BV2IHfb9.js} +1 -1
- package/dist/web/assets/chunk-YTGRET2L-PKzEfYnf.js +1 -0
- package/dist/web/assets/{clipboard-BY6ELc9Z.js → clipboard-DDIvAWKp.js} +1 -1
- package/dist/web/assets/{cloud-upload-BOka5EKK.js → cloud-upload-Dv6kFnfC.js} +1 -1
- package/dist/web/assets/{cssMode-C34j8ti5.js → cssMode-BK0jFqWW.js} +1 -1
- package/dist/web/assets/{folder-open-CX2jidFj.js → folder-open-B9ixJQJX.js} +1 -1
- package/dist/web/assets/{folder-plus-Dh2Q9LP3.js → folder-plus-DqSKvtNB.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-CfevriuT.js → git-commit-horizontal-C1lQvfxe.js} +1 -1
- package/dist/web/assets/{htmlMode-BORwVkZg.js → htmlMode-CCV301b6.js} +1 -1
- package/dist/web/assets/index-1cMIFBxZ.css +1 -0
- package/dist/web/assets/{index-BBjRfC--.js → index-DIaKfM8a.js} +2 -2
- package/dist/web/assets/{info-Bv3dbs3G.js → info-BEvaynAD.js} +1 -1
- package/dist/web/assets/{jsonMode-BYWtZ6AK.js → jsonMode-Co4pyN4F.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-CEAdFSpU.js → lspLanguageFeatures-CSU0G5da.js} +1 -1
- package/dist/web/assets/{minimize-2-MhorZwY5.js → minimize-2-DT8t8wwP.js} +1 -1
- package/dist/web/assets/{monaco.contribution-CDhPpbIo.js → monaco.contribution-CBwGIQY1.js} +2 -2
- package/dist/web/assets/{monaco.contribution-ZUUVx_3M.js → monaco.contribution-Cr0AaHCD.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CN7AWJNd.js → monaco.contribution-DSBAb_PC.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DHA7FuJX.js → monaco.contribution-DUZrs1D-.js} +2 -2
- package/dist/web/assets/{monitor-DLcrkfM5.js → monitor-DGqnfsK9.js} +1 -1
- package/dist/web/assets/play-C1XWyKh6.js +1 -0
- package/dist/web/assets/{python-CXwvPmc4.js → python-Z1foxLdf.js} +1 -1
- package/dist/web/assets/{save-DaN65kMq.js → save-CX2kF74j.js} +1 -1
- package/dist/web/assets/{square-zRgIUdSv.js → square-DMkXeYeV.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-DWeRZFzr.js → toggleHighContrast-CRMVp779.js} +1 -1
- package/dist/web/assets/{tsMode-nLBhKngY.js → tsMode-Czu8YAqh.js} +1 -1
- package/dist/web/assets/{upload-BfUu4Eu1.js → upload-giKOPnl1.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-BCITWhg2.js → useLocalAgentSchedules-BHxWmOeC.js} +1 -1
- package/dist/web/assets/{useSessionTurnCache-BQMWfV8u.js → useSessionTurnCache-CUYFsu_W.js} +1 -1
- package/dist/web/assets/{wifi-off-bdka5es5.js → wifi-off-DbDXaV1N.js} +1 -1
- package/dist/web/assets/{workers-z7XHFFNs.js → workers-Cno4XklJ.js} +1 -1
- package/dist/web/assets/{yaml-BTr4i4DD.js → yaml-C28t_C6h.js} +1 -1
- package/dist/web/index.html +2 -2
- package/docs/command-reference.md +22 -0
- package/package.json +1 -2
- package/dist/chunks/actions-command-CRDLSPFA.js +0 -2
- package/dist/chunks/app-server-runtime-PJONTCCO.js +0 -2
- package/dist/chunks/apps-MD2DKEDW.js +0 -2
- package/dist/chunks/chunk-3BJ4P5LI.js +0 -520
- package/dist/chunks/chunk-3SRIPOJQ.js +0 -2
- package/dist/chunks/chunk-65BW2QXY.js +0 -2
- package/dist/chunks/chunk-6BL2ZIAP.js +0 -184
- package/dist/chunks/chunk-6QUICEQA.js +0 -5
- package/dist/chunks/chunk-7D2WMUWK.js +0 -3
- package/dist/chunks/chunk-7KIBRK3A.js +0 -4
- package/dist/chunks/chunk-ALZRXBEC.js +0 -33
- package/dist/chunks/chunk-CXS3WXL3.js +0 -2
- package/dist/chunks/chunk-ELNJUG64.js +0 -17
- package/dist/chunks/chunk-H3C4ZYEA.js +0 -16
- package/dist/chunks/chunk-HUBI3RUK.js +0 -2
- package/dist/chunks/chunk-KOR2AZVB.js +0 -24
- package/dist/chunks/chunk-M2YXYBSP.js +0 -2
- package/dist/chunks/chunk-MTJNKRXL.js +0 -22
- package/dist/chunks/chunk-NXUCGKY2.js +0 -5
- package/dist/chunks/chunk-PDIT2QS7.js +0 -8
- package/dist/chunks/chunk-QVRNOGAU.js +0 -21
- package/dist/chunks/chunk-V6WBSW5Q.js +0 -3
- package/dist/chunks/chunk-VFTUP5NQ.js +0 -2
- package/dist/chunks/chunk-XWLI7WJH.js +0 -2160
- package/dist/chunks/cli-BKBH6FZY.js +0 -2
- package/dist/chunks/connected-evidence-UPUVVQ6P.js +0 -2
- package/dist/chunks/core-commands-SS2GV7WU.js +0 -2
- package/dist/chunks/datasets-TCLXV34N.js +0 -2
- package/dist/chunks/desktop-test-7ZHZHUB6.js +0 -3
- package/dist/chunks/dist-VDN6E54A.js +0 -2
- package/dist/chunks/evaluation-coordination-ZX5GLMRC.js +0 -2
- package/dist/chunks/experiment-improvements-O6DCQXCX.js +0 -2
- package/dist/chunks/experiments-JOQOBQXY.js +0 -2
- package/dist/chunks/hosted-experiment-improvement-IKO677PI.js +0 -3
- package/dist/chunks/hosted-harness-runtime-H2Q2SNZT.js +0 -2
- package/dist/chunks/hosted-profile-candidate-FHHSLJNO.js +0 -3
- package/dist/chunks/hosted-profile-compiler-5B256VV3.js +0 -2
- package/dist/chunks/hosted-profile-evaluation-control-Z25TZOW4.js +0 -2
- package/dist/chunks/hosted-profile-evaluation-inspection-MFYPLTZQ.js +0 -3
- package/dist/chunks/hosted-profile-evaluation-preparation-MAB2PSCC.js +0 -3
- package/dist/chunks/human-review-6H3BW7OZ.js +0 -2
- package/dist/chunks/learning-Y6WNDVQW.js +0 -2
- package/dist/chunks/opchat-3E4FH3DC.js +0 -3
- package/dist/chunks/organizations-PRVCUPMN.js +0 -2
- package/dist/chunks/project-agent-ZX3CELKI.js +0 -2
- package/dist/chunks/sandbox-command-HHQMZK3G.js +0 -2
- package/dist/chunks/src-MAZ7OBVY.js +0 -327
- package/dist/web/assets/App-BgeSqoRS.css +0 -1
- package/dist/web/assets/App-C6EWFrLP.js +0 -227
- package/dist/web/assets/BrowserSidebar-Xo21N1ej.js +0 -1
- package/dist/web/assets/CommunityView-BoW-yLju.js +0 -1
- package/dist/web/assets/ComposerCreateImproveStrip-BIKVEgr1.js +0 -1
- package/dist/web/assets/GetStartedView-B99v4-hh.js +0 -1
- package/dist/web/assets/HostedModelLearningReview-DEScpX2Z.js +0 -1
- package/dist/web/assets/HostedModelLearningSettings-4HT5eEiL.js +0 -1
- package/dist/web/assets/LabModelVersionDetailPage-DkYdI7gr.js +0 -1
- package/dist/web/assets/LabSkillSidebar-Bp5XYipm.js +0 -1
- package/dist/web/assets/LabsRoute-VopO7n34.js +0 -105
- package/dist/web/assets/MainChatThread-3Gg0oDZT.js +0 -2
- package/dist/web/assets/MainPane-CUqMVG9-.js +0 -19
- package/dist/web/assets/OutputsPage-CZiPxLyN.js +0 -1
- package/dist/web/assets/RightChatPanelStack-CEBFPHKP.js +0 -1
- package/dist/web/assets/ScheduledWorkPage-Y6XGoh-X.js +0 -1
- package/dist/web/assets/SettingsView-C7av3zwv.css +0 -1
- package/dist/web/assets/SettingsView-Kh14f463.js +0 -9
- package/dist/web/assets/WorkSidebarPanel-B6hlPEIs.js +0 -1
- package/dist/web/assets/WorkspaceDiffPanel-q8A15-0x.js +0 -14
- package/dist/web/assets/WorkspaceEnvironmentMenu-BiFTPWtC.js +0 -32
- package/dist/web/assets/chunk-DJWHN7NU-1eQoMoKO.js +0 -1
- package/dist/web/assets/index-B9VSiz_z.css +0 -1
- package/dist/web/assets/refresh-cw-BTfIxHb3.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as Gt}from"./chunk-GEDEVI4Y.js";import{d as ne}from"./chunk-PGKEDR3S.js";import{T as Xn}from"./chunk-FXIUKYUR.js";import{a as Vt,b as J,c as is,f as bn}from"./chunk-PDIT2QS7.js";import{Cb as Wt,I as Ve,Ib as Qr,Jb as ja,Kb as Zr,L as Tt,Lb as es,Lc as yt,Mb as Tn,Rb as Ba,Sb as ts,Sc as Jt,Tc as qa,Uc as zt,Wb as Yt,Xc as as,Y as cn,Zc as Qe,_b as xe,_c as rs,dc as _e,ed as Wa,fc as ft,fd as Ya,gc as _t,hd as Xe,ic as ht,lc as Ge,ld as _n,md as hn,nc as gt,nd as gn,od as Ze,qc as $t,rc as Kt,sc as En,uc as fn,vd as yn,x as Vr,yb as qt,z as dn,zb as Gr}from"./chunk-6QUICEQA.js";import{T as mn,a as Bi,d as Yi,e as tn,f as an,g as Jr,h as rn}from"./chunk-ELNJUG64.js";import{$ as Ce,A as $,Ba as Bt,Bc as In,Cc as On,Dc as Rt,Ea as zi,Ec as ss,Fc as Ln,G as Ca,Gc as An,J as Ht,K as Br,L as qr,M as be,O as $i,Oa as Kr,P as Je,Q as ut,Qa as P,R as Wr,S as Ft,T as Yr,Ta as ie,U as $r,V as ze,Va as pe,W as mt,Wa as Vi,Xa as Gi,Za as Qi,_a as Zi,aa as Ma,c as Dr,ca as Ki,d as Ur,da as Ji,e as Aa,h as Hr,i as Fr,jb as en,k,kb as Ua,lb as Ha,m as Z,mc as Et,n as jr,nc as Fa,o as ba,p as Ke,pc as Pe,qc as ln,r as F,ra as jt,rc as pn,s as Ii,sc as un,tc as Rn,uc as wn,v as Mt,vc as Nn,w as Oi,wc as Me,xc as Sn,y as Ae,yc as kn,za as Da,zc as vn}from"./chunk-KOR2AZVB.js";import{B as Ui,C as Hi,D as Fi,E as ji,X as xa,Y as qi,aa as Xa,ba as Wi,c as Dt,d as Pa,e as Li,f as Ai,g as bi,j as Ci,k as Pi,m as Ut,p as xi,s as Xi,v as Mi,w as Di}from"./chunk-XWLI7WJH.js";import{e as ns,f as Pn}from"./chunk-ALZRXBEC.js";import{B as sn,H as nn,K as on,y as zr}from"./chunk-MTJNKRXL.js";import{Jb as gi,L as We,Lb as La,R as fe,S as ui,Sc as ae,Ua as Mr,Uc as yi,Xa as _i,Y as mi,Z as Ti,aa as Ei,ad as Ri,da as Ye,e as pi,ed as wi,gd as Ni,ha as Xr,hd as Si,id as pt,jd as ki,k as ct,kd as vi,l as Oa,la as $e,m as xr,na as Xt,ra as fi,rb as O,sa as lt,sb as H,tb as Q,ub as Re,wb as hi,yb as we}from"./chunk-QVRNOGAU.js";import{$ as va,A as ka,B as ni,Ba as ci,C as oi,Ca as Ia,D as di,La as li,_ as qe,aa as xt,c as ei,i as ot,l as dt,m as ti,n as ai,o as le,q as Be,r as Na,s as ri,t as Sa,u as si,v as Cr,z as ii}from"./chunk-5ZFEQLRI.js";import{a as Ct,b as je,c as br,d as Pt,e as Le,g as Zs,j as q,k as nt,l as h,m as ye,n as Pr}from"./chunk-HZP5U2AA.js";import{b as u}from"./chunk-ES2ISFJC.js";import{c as Cn,n as xn}from"./chunk-H7IWJN7L.js";import{a as d}from"./chunk-FTQLQJQV.js";var De=u.object({schemaVersion:u.literal("openpond.localHarnessReleaseRecord.v1"),workspaceId:u.string().trim().min(1).max(240),sourceRevision:u.string().trim().min(1).max(500),agentSnapshot:ot,harnessRelease:dt,bundlePath:u.string().trim().min(1).max(8192),createdAt:u.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{promises as x}from"node:fs";import v from"node:path";var Kd=fe.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}]}),Jd=Object.freeze({"fixtures/adaptation-board-launch.md":`# Northstar launch decision packet
|
|
2
|
+
import{a as Gt}from"./chunk-F2AG46CV.js";import{d as ne}from"./chunk-PGKEDR3S.js";import{T as Xn}from"./chunk-ZJY2L43W.js";import{a as Vt,b as J,c as ns,f as xn}from"./chunk-YSYXIJ46.js";import{Cb as Wt,I as Ve,Ib as Zr,Jb as ja,Kb as es,L as Tt,Lb as ts,Lc as yt,Mb as _n,Rb as Ba,Sb as as,Sc as Jt,Tc as qa,Uc as zt,Wb as Yt,Xc as rs,Y as un,Zc as Qe,_b as xe,_c as ss,dc as _e,ed as Wa,fc as ft,fd as Ya,gc as _t,hd as Xe,ic as ht,lc as Ge,ld as yn,md as Rn,nc as gt,nd as wn,od as Ze,qc as $t,rc as Kt,sc as hn,uc as gn,vd as Nn,x as Gr,yb as qt,z as pn,zb as Qr}from"./chunk-6JBWHR6T.js";import{T as fn,a as Fi,d as qi,e as dn,f as cn,g as Vr,h as ln}from"./chunk-HK3WGUKK.js";import{$ as Ma,A as $,Bc as An,Ca as Ce,Cc as bn,Da,Dc as Rt,Ec as is,Fa as en,Fc as Cn,G as Xa,Ga as tn,Gc as Pn,Oa as zr,Qa as P,T as Ht,Ta as ie,Va as pe,Wa as an,Xa as rn,Za as sn,_a as nn,ba as Ft,c as Hr,d as Fr,e as Pa,ea as Qi,h as jr,i as Br,jb as on,k,ka as jt,kb as Ua,la as Wr,lb as Ha,m as Z,ma as Yr,mc as Et,n as qr,na as be,nc as Fa,o as xa,p as Ke,pa as Zi,pc as Pe,qa as Je,qc as mn,r as F,ra as ut,rc as Tn,s as Vi,sa as $r,sc as En,ta as Bt,tc as Sn,ua as Kr,uc as kn,v as Ut,va as Jr,vc as vn,w as Gi,wa as ze,wc as Me,xa as mt,xc as In,y as Ae,yc as On,zc as Ln}from"./chunk-5ZZM3TUN.js";import{$ as Hi,G as Ai,H as bi,J as Dt,M as Ci,P as Pi,S as xi,T as Xi,Y as Mi,Z as Di,_ as Ui,ja as ba,k as Mt,ka as ji,l as La,m as hi,n as gi,o as yi,oa as Ca,pa as Bi}from"./chunk-JO7GRBOG.js";import{$ as $e,$a as Ri,Jb as wi,Lb as Aa,Q as Ye,Sc as ae,Uc as Ni,W as fe,X as ui,Ya as Mr,a as We,ad as Si,b as ct,ba as Xt,c as Oa,d as xr,ed as ki,fa as mi,ga as lt,gd as vi,h as Xr,hd as Ii,id as pt,ja as Ti,jd as Oi,kd as Li,la as Re,m as pi,ra as Ei,sa as fi,va as _i,vb as O,wb as H,xb as Q,yb as we}from"./chunk-BQNK2NMB.js";import{$ as va,A as ka,B as ni,Ba as ci,C as oi,Ca as Ia,D as di,La as li,_ as qe,aa as xt,c as ei,i as ot,l as dt,m as ti,n as ai,o as le,q as Be,r as Na,s as ri,t as Sa,u as si,v as Cr,z as ii}from"./chunk-VW7D3DRM.js";import{e as Dr,f as Yi}from"./chunk-UWO34HP6.js";import{B as $i,H as Ki,K as Ji,y as Ur}from"./chunk-L4BYPZ4U.js";import{a as Ct,b as je,c as br,d as Pt,e as Le,g as Zs,j as q,k as nt,l as h,m as ye,n as Pr}from"./chunk-P653BXMY.js";import{b as u}from"./chunk-ES2ISFJC.js";import{c as Wi,n as zi}from"./chunk-H7IWJN7L.js";import{a as d}from"./chunk-FTQLQJQV.js";var De=u.object({schemaVersion:u.literal("openpond.localHarnessReleaseRecord.v1"),workspaceId:u.string().trim().min(1).max(240),sourceRevision:u.string().trim().min(1).max(500),agentSnapshot:ot,harnessRelease:dt,bundlePath:u.string().trim().min(1).max(8192),createdAt:u.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{promises as x}from"node:fs";import v from"node:path";var Kd=fe.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}]}),Jd=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.
|
|
@@ -181,14 +181,14 @@ privileged expected outcome.
|
|
|
181
181
|
failures,
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
|
-
`});var Mn=u.enum(["foreground_tokens","success_rate","latency_ms","cost_usd"]),Dn=u.enum(["baseline","candidate"]),zd=u.object({split:We,taskIds:u.array(Ct).min(1).max(1e5),seeds:u.array(u.string().trim().min(1).max(500)).min(1).max(100),repetitions:u.number().int().positive().max(20),runtimeTargetHash:je,environmentHash:je,toolContractHash:je,limitsHash:je}).strict(),Vd=u.object({schemaVersion:u.literal("openpond.benchmarkDefinition.v1"),id:Ct,title:u.string().trim().min(1).max(500),description:u.string().trim().min(1).max(5e3),tasksetRelease:Le,adaptationSplit:We,evaluationSplit:We,primaryMetric:Mn,qualityGate:u.enum(["none","non_regression","all_pass"]),caseCounts:u.object({adaptation:u.number().int().nonnegative(),evaluation:u.number().int().positive()}).strict(),metadata:Pt}).strict(),Ql=u.object({schemaVersion:u.literal("openpond.benchmarkRunRequest.v1"),phase:Dn,model:Pr,reasoningEffort:u.string().trim().min(1).max(100).nullable(),split:We,seeds:u.array(u.string().trim().min(1).max(500)).min(1).max(100),repetitions:u.number().int().positive().max(20),metadata:Pt}).strict(),Gd=u.object({inputTokens:u.number().int().nonnegative(),outputTokens:u.number().int().nonnegative(),totalTokens:u.number().int().nonnegative()}).strict(),Un=u.object({schemaVersion:u.literal("openpond.benchmarkRunSummary.v1"),id:Ct,phase:Dn,tasksetRelease:Le,harnessRelease:Le,evaluationResult:Le,model:Pr,reasoningEffort:u.string().trim().min(1).max(100).nullable(),protocol:zd,attemptCount:u.number().int().positive(),passedCount:u.number().int().nonnegative(),terminalCount:u.number().int().nonnegative(),usage:Gd,costUsd:u.number().nonnegative().nullable(),latencyMs:u.number().int().nonnegative(),createdAt:br,metadata:Pt}).strict(),$a=Un.extend({contentHash:je}).strict(),Hn=u.object({schemaVersion:u.literal("openpond.benchmarkComparison.v1"),id:Ct,baseline:Le,candidate:Le,tasksetRelease:Le,primaryMetric:Mn,qualityPassed:u.boolean(),baselinePassRate:u.number().min(0).max(1),candidatePassRate:u.number().min(0).max(1),foregroundTokenDelta:u.number().int(),foregroundTokenDeltaPercent:u.number().finite().nullable(),improved:u.boolean(),createdAt:br,metadata:Pt}).strict(),Ka=Hn.extend({contentHash:je}).strict();function Zl(a){return Vd.parse(a)}d(Zl,"createBenchmarkDefinition");function ep(a){if(a.receipts.length!==a.evaluation.attemptCount)throw new Error("Benchmark receipt count does not match its Evaluation result.");let e=a.receipts.reduce((s,i)=>Fn(s,Qd(i.metadata.usage)),ds()),t=a.receipts.flatMap(s=>typeof s.costUsd=="number"?[s.costUsd]:[]),r=Un.parse({schemaVersion:"openpond.benchmarkRunSummary.v1",id:a.id,phase:a.phase,tasksetRelease:a.evaluation.tasksetRelease,harnessRelease:a.evaluation.harnessRelease,evaluationResult:{id:a.evaluation.id,contentHash:a.evaluation.contentHash},model:a.evaluation.model,reasoningEffort:a.reasoningEffort,protocol:a.protocol,attemptCount:a.evaluation.attemptCount,passedCount:a.receipts.filter(s=>s.metadata.passed===!0).length,terminalCount:a.evaluation.terminalCount,usage:e,costUsd:t.length?t.reduce((s,i)=>s+i,0):null,latencyMs:a.receipts.reduce((s,i)=>s+i.latencyMs,0),createdAt:a.createdAt,metadata:a.metadata??{}});return $a.parse({...r,contentHash:h(r)})}d(ep,"createBenchmarkRunSummary");function tp(a){let{baseline:e,candidate:t}=a;if(e.tasksetRelease.contentHash!==t.tasksetRelease.contentHash||e.model.provider!==t.model.provider||e.model.model!==t.model.model||e.reasoningEffort!==t.reasoningEffort||h(e.protocol)!==h(t.protocol))throw new Error("Benchmark runs are not comparable under the pinned protocol.");let r=e.passedCount/e.attemptCount,s=t.passedCount/t.attemptCount,n=e.terminalCount===e.attemptCount&&t.terminalCount===t.attemptCount&&(a.qualityGate==="none"||(a.qualityGate==="all_pass"?s===1:(e.passedCount>0||t.passedCount>0)&&s>=r)),o=t.usage.totalTokens-e.usage.totalTokens,c=e.usage.totalTokens>0?o/e.usage.totalTokens*100:null,p=a.primaryMetric==="foreground_tokens"?o<0:a.primaryMetric==="success_rate"?s>r:a.primaryMetric==="latency_ms"?t.latencyMs<e.latencyMs:t.costUsd!==null&&e.costUsd!==null&&t.costUsd<e.costUsd,l=Hn.parse({schemaVersion:"openpond.benchmarkComparison.v1",id:a.id,baseline:{id:e.id,contentHash:e.contentHash},candidate:{id:t.id,contentHash:t.contentHash},tasksetRelease:e.tasksetRelease,primaryMetric:a.primaryMetric,qualityPassed:n,baselinePassRate:r,candidatePassRate:s,foregroundTokenDelta:o,foregroundTokenDeltaPercent:c,improved:n&&p,createdAt:a.createdAt,metadata:a.metadata??{}});return Ka.parse({...l,contentHash:h(l)})}d(tp,"compareBenchmarkRuns");function Qd(a){return(Array.isArray(a)?a:a?[a]:[]).reduce((t,r)=>Fn(t,Zd(r)),ds())}d(Qd,"providerUsage");function Zd(a){if(!a||typeof a!="object"||Array.isArray(a))return ds();let e=a,t=os(e,["inputTokens","input_tokens","promptTokens","prompt_tokens"]),r=os(e,["outputTokens","output_tokens","completionTokens","completion_tokens"]),s=os(e,["totalTokens","total_tokens"]);return{inputTokens:t,outputTokens:r,totalTokens:s||t+r}}d(Zd,"usageRecord");function os(a,e){for(let t of e){let r=a[t];if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return Math.trunc(r)}return 0}d(os,"token");function ds(){return{inputTokens:0,outputTokens:0,totalTokens:0}}d(ds,"emptyUsage");function Fn(a,e){return{inputTokens:a.inputTokens+e.inputTokens,outputTokens:a.outputTokens+e.outputTokens,totalTokens:a.totalTokens+e.totalTokens}}d(Fn,"addUsage");function jn(a){let e=new Map;for(let s of a.collectedArtifacts){let i=e.get(s.path)??[];i.push(s),e.set(s.path,i)}let t=new Set,r=a.requiredOutputs.map(s=>{let i=e.get(s.path)??[];if(i.length===0)return Ut.parse({requiredOutputPath:s.path,collectedPath:null,declaredMediaType:s.mediaType,detectedMediaType:null,artifact:null,status:"missing",parseStatus:"not_requested",schemaStatus:"not_requested",errorCode:"required_output_missing",failureOwner:"policy",evidenceRefs:[],metadata:{maxBytes:s.maxBytes,schemaRef:s.schemaRef}});if(i.length>1){for(let o of i)t.add(o);return Ut.parse({requiredOutputPath:s.path,collectedPath:s.path,declaredMediaType:s.mediaType,detectedMediaType:null,artifact:null,status:"failed",parseStatus:"not_requested",schemaStatus:"not_requested",errorCode:"artifact_collection_ambiguous",failureOwner:"collector",evidenceRefs:i.flatMap(o=>o.evidenceRefs??[]),metadata:{duplicateCount:i.length}})}let[n]=i;return t.add(n),ec(s,n)});for(let s of a.collectedArtifacts)t.has(s)||r.push(Ut.parse({requiredOutputPath:null,collectedPath:s.path,declaredMediaType:null,detectedMediaType:s.detectedMediaType,artifact:s.artifact,status:s.status,parseStatus:s.parseStatus??"not_requested",schemaStatus:s.schemaStatus??"not_requested",errorCode:s.errorCode??null,failureOwner:s.failureOwner??null,evidenceRefs:s.evidenceRefs??[],metadata:s.metadata??{}}));return Xi({schemaVersion:"openpond.artifactManifest.v1",id:a.id,attemptRef:a.attemptRef,entries:r,createdAt:a.createdAt,metadata:a.metadata??{}})}d(jn,"buildArtifactManifest");function Bn(a){return a.requiredOutputs.map(e=>{let t=a.manifest.entries.find(s=>s.requiredOutputPath===e.path);if(!t||t.status==="missing")return cs(e,t??null,{status:"scored",score:0,passed:!1,rewardEligible:!0,failureOwner:"policy",feedback:`Required output ${e.path} was not collected.`});if(t.status==="failed"&&t.failureOwner!=="policy")return cs(e,t,{status:"unscorable",score:null,passed:!1,rewardEligible:!1,failureOwner:t.failureOwner??"collector",feedback:`Required output ${e.path} could not be collected reliably.`});let r=tc(e,t);return cs(e,t,{status:"scored",score:r.length===0?1:0,passed:r.length===0,rewardEligible:!0,failureOwner:r.length===0?null:"policy",feedback:r.length===0?`Required output ${e.path} passed structural verification.`:r.join(" ")})})}d(Bn,"verifyRequiredOutputs");function ec(a,e){return Ut.parse({requiredOutputPath:a.path,collectedPath:e.path,declaredMediaType:a.mediaType,detectedMediaType:e.detectedMediaType,artifact:e.artifact,status:e.status,parseStatus:e.parseStatus??"not_requested",schemaStatus:e.schemaStatus??"not_requested",errorCode:e.errorCode??null,failureOwner:e.failureOwner??null,evidenceRefs:e.evidenceRefs??[],metadata:{...e.metadata,maxBytes:a.maxBytes,schemaRef:a.schemaRef}})}d(ec,"manifestEntry");function tc(a,e){let t=[];return e.artifact||t.push(`Required output ${a.path} has no immutable artifact reference.`),e.detectedMediaType!==a.mediaType&&t.push(`Required output ${a.path} has media type ${e.detectedMediaType??"unknown"}; expected ${a.mediaType}.`),a.maxBytes!==null&&e.artifact?.sizeBytes!==null&&e.artifact&&e.artifact.sizeBytes>a.maxBytes&&t.push(`Required output ${a.path} exceeds ${a.maxBytes} bytes.`),e.parseStatus==="failed"&&t.push(`Required output ${a.path} could not be parsed.`),e.schemaStatus==="failed"&&t.push(`Required output ${a.path} failed schema validation.`),t}d(tc,"structuralFailures");function cs(a,e,t){let r=[...e?.evidenceRefs??[],...e?.artifact?[e.artifact]:[]];return xi.parse({verifierId:`required-output:${a.path}`,verifierVersion:"1",status:t.status,rawScore:t.score,normalizedScore:t.score,weight:1,passed:t.passed,hardGate:!0,rewardEligible:t.rewardEligible,rewardContribution:t.rewardEligible?t.score:null,failureOwner:t.failureOwner,feedback:[t.feedback],visibleEvidenceRefs:r,privilegedEvidenceRefs:[],metadata:{requiredOutputPath:a.path}})}d(cs,"requiredOutputComponent");import ea from"node:path";import{constants as ac,promises as Ue}from"node:fs";import re from"node:path";async function qn(a){let e=await Ue.lstat(a);if(e.isSymbolicLink())throw new Error(`Profile source cannot be a symlink: ${a}`);if(e.isFile())return[re.basename(a)];if(!e.isDirectory())throw new Error(`Profile source is not a file or directory: ${a}`);return He(a)}d(qn,"sourceFilesForImport");function Wn(a){for(let e of["agent.ts","index.ts","agent/agent.ts","agent.yaml","agent.yml","agent.json"])if(a.includes(e))return e;return a[0]}d(Wn,"selectAgentPrimaryFile");async function Yn(a,e){let t=await Ue.lstat(a);if(!t.isFile()||t.isSymbolicLink())throw new Error(`Harness import source must be a regular non-symlink file: ${a}`);await Ue.mkdir(re.dirname(e),{recursive:!0}),await Ue.copyFile(a,e,ac.COPYFILE_EXCL)}d(Yn,"copyRegularFile");function Qt(a){let e=re.extname(a).toLowerCase();return[".md",".txt"].includes(e)?e===".md"?"text/markdown":"text/plain":[".json"].includes(e)?"application/json":[".yaml",".yml"].includes(e)?"application/yaml":[".ts",".tsx",".js",".mjs",".cjs"].includes(e)?"text/javascript":e===".py"?"text/x-python":"application/octet-stream"}d(Qt,"mediaTypeForPath");async function Zt(a,e){let t=re.resolve(a,...e.split("/")),r=re.relative(a,t);if(!r||r.startsWith("..")||re.isAbsolute(r))throw new Error(`Harness source path escapes its root: ${e}`);let s=await Ue.lstat(t);if(!s.isFile()||s.isSymbolicLink())throw new Error(`Harness source path must be a regular non-symlink file: ${e}`);let i=await Ue.realpath(t),n=re.relative(await Ue.realpath(a),i);if(n.startsWith("..")||re.isAbsolute(n))throw new Error(`Harness source path resolves outside its root: ${e}`);return t}d(Zt,"resolveContainedRegularFile");async function He(a,e=a){let t=await Ue.readdir(e,{withFileTypes:!0}),r=[];for(let s of t){if(["node_modules",".git",".openpond"].includes(s.name)||s.name.startsWith(".env"))continue;let i=re.join(e,s.name);if(s.isSymbolicLink())throw new Error(`Harness source cannot contain symlinks: ${re.relative(a,i)}`);if(s.isDirectory())r.push(...await He(a,i));else if(s.isFile())r.push(re.relative(a,i).split(re.sep).join("/"));else throw new Error(`Harness source contains an unsupported entry: ${re.relative(a,i)}`)}return r.sort()}d(He,"listRegularFiles");function oe(a){return a.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"harness"}d(oe,"safeSegment");function $n(a,e){let t=[];return{async copy(r,s){await Yn(r,s);let i=ea.relative(a,r),n=ea.relative(e,s);i&&!i.startsWith("..")&&!ea.isAbsolute(i)&&t.push({releasedPath:n.split(ea.sep).join("/"),profileRelativePath:i.split(ea.sep).join("/")})},add(r,s){t.push({releasedPath:r,profileRelativePath:s})},policy(r){return t.filter(s=>r.some(i=>i.path===s.releasedPath&&i.visibility==="policy"))}}}d($n,"createProfileSourceBindings");var Kn=d(a=>a==="evals/catalog.json"||/^evals\/(definitions|suites|tasksets)\//.test(a)||/^workflows\/[^/]+\/evals\//.test(a),"isProfilePrivateEvaluationPath");import{execFile as rc}from"node:child_process";import{promises as Ne}from"node:fs";import wt from"node:path";import{promisify as sc}from"node:util";var ic=sc(rc);async function wp(a){let e=wt.join(a.runPath,"package.json"),t=await Ne.lstat(e).catch(()=>null);if(t&&(!t.isFile()||t.isSymbolicLink()))throw new Error("Released Profile Agent package manifest must be a regular file.");t||await Ne.writeFile(e,`{"type":"module"}
|
|
185
|
-
`,{flag:"wx"});let r=await ls(a.runPath);if(r){let i=r==="npm"?["ci","--omit=dev","--ignore-scripts","--no-audit","--no-fund"]:["install","--prod","--frozen-lockfile","--ignore-scripts","--config.node-linker=hoisted"];await(a.install??nc)(r,i,a.runPath)}let s=wt.join(a.runPath,"node_modules","openpond-agent-sdk");if(!await Ne.lstat(s).catch(()=>null)){let i=JSON.parse(await Ne.readFile(e,"utf8"));if({...Ja(i.dependencies),...Ja(i.optionalDependencies)}["openpond-agent-sdk"])throw new Error("Released Profile Agent declared an SDK dependency that the locked installation did not provide.");let o=await Xn();await Ne.mkdir(wt.dirname(s),{recursive:!0}),await Ne.symlink(o,s,"dir")}}d(wp,"prepareReleasedProfileActionDependencies");async function ls(a){let e=wt.join(a,"package.json"),t=await Ne.lstat(e).catch(()=>null);if(!t)return null;if(!t.isFile()||t.isSymbolicLink())throw new Error("Released Profile Agent package manifest must be a regular file.");let r=JSON.parse(await Ne.readFile(e,"utf8")),s={...Ja(r.dependencies),...Ja(r.optionalDependencies)};if(Object.keys(s).length){for(let[o,c]of Object.entries(s))if(/^(?:file:|link:|workspace:|git\+|https?:)/i.test(c))throw new Error(`Released Profile Agent dependency ${o} must use a portable registry version.`);let i=await Jn(wt.join(a,"package-lock.json")),n=await Jn(wt.join(a,"pnpm-lock.yaml"));if(i===n)throw new Error("Released Profile Agent with third-party dependencies requires exactly one npm or pnpm lockfile.");return i?"npm":"pnpm"}return null}d(ls,"inspectReleasedProfileActionDependencies");function Ja(a){if(a===void 0)return{};if(!a||typeof a!="object"||Array.isArray(a))throw new Error("Released Profile Agent dependencies must be a package map.");let e=Object.entries(a);if(e.some(([t,r])=>!t||typeof r!="string"||!r.trim()))throw new Error("Released Profile Agent dependencies must name portable versions.");return Object.fromEntries(e)}d(Ja,"dependencyMap");async function Jn(a){let e=await Ne.lstat(a).catch(()=>null);if(e&&(!e.isFile()||e.isSymbolicLink()))throw new Error("Released Profile Agent lockfile must be a regular file.");return!!e}d(Jn,"regularFile");async function nc(a,e,t){try{let r=process.platform==="win32"?`${a}.cmd`:a;await ic(r,e,{cwd:t,timeout:3e5,maxBuffer:1e6,...process.platform==="win32"?{shell:!0}:{}})}catch{throw new Error(`Released Profile Agent locked ${a} dependency installation failed.`)}}d(nc,"installLockedDependencies");var zn="harness.json";async function ps(a,e,t,r,s){let i=v.resolve(t.sourcePath),n=[],o=$n(i,a),c=o.copy,p=new Set((await He(i)).filter(Kn)),l=new Set,m=d(g=>{let A=g.id;l.has(A)&&(A=`${A}-${h(g.path).slice(0,8)}`),l.add(A);let j={...g,id:A};return n.push(j),j},"addDeclaration");await x.mkdir(a,{recursive:!0});let T=v.join(i,"instructions","system.md"),f=await x.lstat(T).catch(g=>{if(g.code==="ENOENT")return null;throw g});if(f){if(!f.isFile()||f.isSymbolicLink())throw new Error("Profile instructions require an actual regular source file.");await c(T,v.join(a,"instructions","system.md")),m({id:"instruction-system",kind:"instruction",path:"instructions/system.md",parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"})}for(let g of t.skills.filter(A=>A.enabled)){if(g.validationStatus!=="valid")throw new Error(`Cannot import invalid Profile Skill ${g.name}: ${g.validationMessages.join(" ")}`);let A=v.dirname(v.join(i,g.path)),j=`skills/${oe(g.name)}/SKILL.md`;await c(v.join(A,"SKILL.md"),v.join(a,...j.split("/")));let K=m({id:`skill-${oe(g.name)}`,kind:"skill",path:j,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"});for(let L of g.resourceFiles){let z=`skills/${oe(g.name)}/${L.split(v.sep).join("/")}`;await c(v.join(A,L),v.join(a,...z.split("/"))),m({id:`skill-resource-${oe(g.name)}-${h(L).slice(0,12)}`,kind:"skill_resource",path:z,parentId:K.id,mediaType:Qt(z),visibility:"policy",portability:"portable"})}}for(let g of t.agents.filter(A=>A.enabled)){let A=v.resolve(i,g.path),j=await x.realpath(A),K=await x.realpath(i),L=v.relative(K,j);if(L.startsWith("..")||v.isAbsolute(L))throw new Error("Profile Agent source escapes its admitted Profile root.");let z=await x.lstat(A),Fe=(await qn(A)).filter(W=>{let G=z.isDirectory()?v.join(j,...W.split("/")):j;return!p.has(v.relative(K,G).split(v.sep).join("/"))});if(Fe.length===0)throw new Error(`Profile Agent ${g.id} has no source files.`);let U=Wn(Fe);for(let W of Fe){let G=`agents/${oe(g.id)}/${W}`,Oe=(await x.stat(A)).isDirectory()?v.join(A,...W.split("/")):A;await c(Oe,v.join(a,...G.split("/"))),m({id:W===U?`agent-${oe(g.id)}`:`agent-asset-${oe(g.id)}-${h(W).slice(0,12)}`,kind:W===U?"agent":"asset",path:G,parentId:null,mediaType:Qt(G),visibility:"policy",portability:"portable"})}await ls(v.join(a,"agents",oe(g.id)))}let _=new Set,I=new Set(t.agents.filter(g=>g.enabled).map(g=>g.id)),N=t.actionCatalog.filter(g=>g.agentId&&I.has(g.agentId)).map(g=>({id:g.id,agentId:oe(g.agentId),sourceActionId:g.sourceActionId??g.id,inputSchema:typeof g.inputSchema=="object"&&g.inputSchema!==null?g.inputSchema:{type:"object",additionalProperties:!0}})),w=new Set(N.map(g=>g.id)),S=v.join(i,"workflows","catalog.json"),R=await x.lstat(S).catch(()=>null),E=(await He(i)).filter(g=>g.startsWith("workflows/")),y=E.some(g=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(g));if(y&&R)throw new Error("Authored Workflow packages and legacy workflows/catalog.json cannot coexist; migrate the catalog first.");if(R||y||N.length){if(R&&(!R.isFile()||R.isSymbolicLink()))throw new Error("Profile workflow catalog must be a regular file.");let g=y?li({files:new Map(await Promise.all(E.map(async L=>[L,await x.readFile(await Zt(i,L),"utf8")]))),skillPaths:new Set(n.filter(L=>L.kind==="skill").map(L=>L.path)),actionIds:w}):null,A=g?Buffer.from(q(g.catalog)):R?await x.readFile(S):Buffer.from(q({schemaVersion:"openpond.profileWorkflows.v1",workflows:[]}));R&&o.add("workflows/catalog.json","workflows/catalog.json");let j=Ia({catalog:JSON.parse(A.toString("utf8")),sourcePaths:new Set(n.filter(L=>L.kind==="skill").map(L=>L.path)),actionIds:new Set(N.map(L=>L.id))});for(let L of j.workflows)_.add(L.id);us(j);let K="workflows/catalog.json";await x.mkdir(v.join(a,"workflows"),{recursive:!0}),await x.writeFile(v.join(a,"workflows","catalog.json"),A,{flag:"wx"});for(let L of g?.referencedPaths??[])await c(v.join(i,...L.split("/")),v.join(a,...L.split("/"))),m({id:`profile-workflow-source-${h(L).slice(0,16)}`,kind:"asset",path:L,parentId:null,mediaType:Qt(L),visibility:"policy",portability:"portable"});m({id:"profile-workflows",kind:"workflow",path:K,parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"})}(R||y||N.length)&&(await x.writeFile(v.join(a,"workflows","actions.json"),q({schemaVersion:"openpond.profileWorkflowActions.v1",actions:N}),{flag:"wx"}),m({id:"profile-workflow-actions",kind:"asset",path:"workflows/actions.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}));let M=v.join(i,"evals","catalog.json"),B=await x.lstat(M).catch(()=>null),te=(await He(i)).filter(g=>/^workflows\/[^/]+\/evals\/[^/]+\.json$/.test(g)||/^evals\/(definitions|suites)\/[^/]+\.json$/.test(g));if(B&&te.length)throw new Error("Authored evaluation definitions and legacy evals/catalog.json cannot coexist; migrate the catalog first.");if(B||te.length){if(B&&(!B.isFile()||B.isSymbolicLink()))throw new Error("Profile evaluation catalog must be a regular file.");let g=[],A=[];for(let U of te){let W=JSON.parse(await x.readFile(await Zt(i,U),"utf8"));if(U.startsWith("evals/suites/"))A.push(Ti.parse(W));else{let G=mi.parse(W),Oe=/^workflows\/([^/]+)\/evals\//.exec(U)?.[1];if(Oe&&(G.target.kind!=="workflow"||G.target.workflowId!==Oe))throw new Error(`Profile evaluation ${G.id} must target its containing Workflow ${Oe}.`);g.push(G)}}let j=te.length?Buffer.from(q({schemaVersion:"openpond.profileEvaluations.v1",definitions:g.sort((U,W)=>U.id.localeCompare(W.id)),suites:A.sort((U,W)=>U.id.localeCompare(W.id))})):await x.readFile(M),{catalog:K}=Ei({catalog:JSON.parse(j.toString("utf8")),workflowIds:_,skillPaths:new Set(n.filter(U=>U.kind==="skill").map(U=>U.path)),actionIds:w});await x.mkdir(v.join(a,"evals"),{recursive:!0}),await x.writeFile(v.join(a,"evals","catalog.json"),j,{flag:"wx"});for(let U of te)await c(v.join(i,...U.split("/")),v.join(a,...U.split("/"))),m({id:`profile-evaluation-source-${h(U).slice(0,16)}`,kind:"asset",path:U,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});m({id:"profile-evaluations",kind:"asset",path:"evals/catalog.json",parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});let L=new Set(K.definitions.map(U=>U.tasksetRelease.contentHash)),z=v.join(i,"evals","tasksets"),Fe=await x.lstat(z).catch(()=>null);if(Fe&&(!Fe.isDirectory()||Fe.isSymbolicLink()))throw new Error("Profile evaluation Taskset directory must be a regular directory.");for(let U of L){let W=v.join(z,`${U}.json`),G=await x.lstat(W).catch(()=>null);if(!G)throw new Error(`Profile evaluation Taskset package ${U} is missing.`);if(!G.isFile()||G.isSymbolicLink())throw new Error("Profile evaluation Taskset package must be a regular file.");let Oe=Ce(JSON.parse(await x.readFile(W,"utf8")));if(Oe.taskset.contentHash!==U||!K.definitions.some(Qs=>Qs.tasksetRelease.contentHash===U&&Qs.tasksetRelease.id===Oe.taskset.id))throw new Error("Profile evaluation Taskset package differs from its catalog reference.");let Gs=`evals/tasksets/${U}.json`;await c(W,v.join(a,...Gs.split("/"))),m({id:`profile-evaluation-taskset-${U.slice(0,16)}`,kind:"asset",path:Gs,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"})}}let Ee=await oc(t,r),D=`dependency-lock/${Ee.name}`;await x.mkdir(v.join(a,"dependency-lock"),{recursive:!0}),Ee.sourcePath?await c(Ee.sourcePath,v.join(a,...D.split("/"))):await x.writeFile(v.join(a,...D.split("/")),q(Ee.generated),{flag:"wx"}),m({id:"dependency-lock",kind:"dependency_lock",path:D,parentId:null,mediaType:Qt(D),visibility:"policy",portability:"portable"}),await x.writeFile(v.join(a,"program.json"),q({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),m({id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"});let b=Ze.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,profileSourceBindings:o.policy(n),profileInstructionSourcePath:"instructions/system.md",excludedEvalCount:t.evals.length,actionConversionPending:t.actionCatalog.length>0}});await x.writeFile(v.join(a,zn),q(b),{flag:"wx"}),await za(a,e)}d(ps,"writeImportedProfileSource");function us(a){for(let e of a.workflows){let t=Oa(e.inputSchema);if(!t.valid)throw new Error(`Profile workflow ${e.id} has an invalid input schema: ${t.issues[0]?.message??"schema mismatch"}`)}}d(us,"assertProfileWorkflowInputSchemas");async function za(a,e){let t=v.join(a,zn),r=Ze.parse(JSON.parse(await x.readFile(t,"utf8")));if(r.files.some(c=>c.kind==="instruction"))return;let s="instructions/system.md";await x.mkdir(v.join(a,"instructions"),{recursive:!0}),await x.writeFile(v.join(a,...s.split("/")),`# ${e}
|
|
184
|
+
`});var Mn=u.enum(["foreground_tokens","success_rate","latency_ms","cost_usd"]),Dn=u.enum(["baseline","candidate"]),zd=u.object({split:Ye,taskIds:u.array(Ct).min(1).max(1e5),seeds:u.array(u.string().trim().min(1).max(500)).min(1).max(100),repetitions:u.number().int().positive().max(20),runtimeTargetHash:je,environmentHash:je,toolContractHash:je,limitsHash:je}).strict(),Vd=u.object({schemaVersion:u.literal("openpond.benchmarkDefinition.v1"),id:Ct,title:u.string().trim().min(1).max(500),description:u.string().trim().min(1).max(5e3),tasksetRelease:Le,adaptationSplit:Ye,evaluationSplit:Ye,primaryMetric:Mn,qualityGate:u.enum(["none","non_regression","all_pass"]),caseCounts:u.object({adaptation:u.number().int().nonnegative(),evaluation:u.number().int().positive()}).strict(),metadata:Pt}).strict(),Ql=u.object({schemaVersion:u.literal("openpond.benchmarkRunRequest.v1"),phase:Dn,model:Pr,reasoningEffort:u.string().trim().min(1).max(100).nullable(),split:Ye,seeds:u.array(u.string().trim().min(1).max(500)).min(1).max(100),repetitions:u.number().int().positive().max(20),metadata:Pt}).strict(),Gd=u.object({inputTokens:u.number().int().nonnegative(),outputTokens:u.number().int().nonnegative(),totalTokens:u.number().int().nonnegative()}).strict(),Un=u.object({schemaVersion:u.literal("openpond.benchmarkRunSummary.v1"),id:Ct,phase:Dn,tasksetRelease:Le,harnessRelease:Le,evaluationResult:Le,model:Pr,reasoningEffort:u.string().trim().min(1).max(100).nullable(),protocol:zd,attemptCount:u.number().int().positive(),passedCount:u.number().int().nonnegative(),terminalCount:u.number().int().nonnegative(),usage:Gd,costUsd:u.number().nonnegative().nullable(),latencyMs:u.number().int().nonnegative(),createdAt:br,metadata:Pt}).strict(),$a=Un.extend({contentHash:je}).strict(),Hn=u.object({schemaVersion:u.literal("openpond.benchmarkComparison.v1"),id:Ct,baseline:Le,candidate:Le,tasksetRelease:Le,primaryMetric:Mn,qualityPassed:u.boolean(),baselinePassRate:u.number().min(0).max(1),candidatePassRate:u.number().min(0).max(1),foregroundTokenDelta:u.number().int(),foregroundTokenDeltaPercent:u.number().finite().nullable(),improved:u.boolean(),createdAt:br,metadata:Pt}).strict(),Ka=Hn.extend({contentHash:je}).strict();function Zl(a){return Vd.parse(a)}d(Zl,"createBenchmarkDefinition");function ep(a){if(a.receipts.length!==a.evaluation.attemptCount)throw new Error("Benchmark receipt count does not match its Evaluation result.");let e=a.receipts.reduce((s,i)=>Fn(s,Qd(i.metadata.usage)),ds()),t=a.receipts.flatMap(s=>typeof s.costUsd=="number"?[s.costUsd]:[]),r=Un.parse({schemaVersion:"openpond.benchmarkRunSummary.v1",id:a.id,phase:a.phase,tasksetRelease:a.evaluation.tasksetRelease,harnessRelease:a.evaluation.harnessRelease,evaluationResult:{id:a.evaluation.id,contentHash:a.evaluation.contentHash},model:a.evaluation.model,reasoningEffort:a.reasoningEffort,protocol:a.protocol,attemptCount:a.evaluation.attemptCount,passedCount:a.receipts.filter(s=>s.metadata.passed===!0).length,terminalCount:a.evaluation.terminalCount,usage:e,costUsd:t.length?t.reduce((s,i)=>s+i,0):null,latencyMs:a.receipts.reduce((s,i)=>s+i.latencyMs,0),createdAt:a.createdAt,metadata:a.metadata??{}});return $a.parse({...r,contentHash:h(r)})}d(ep,"createBenchmarkRunSummary");function tp(a){let{baseline:e,candidate:t}=a;if(e.tasksetRelease.contentHash!==t.tasksetRelease.contentHash||e.model.provider!==t.model.provider||e.model.model!==t.model.model||e.reasoningEffort!==t.reasoningEffort||h(e.protocol)!==h(t.protocol))throw new Error("Benchmark runs are not comparable under the pinned protocol.");let r=e.passedCount/e.attemptCount,s=t.passedCount/t.attemptCount,n=e.terminalCount===e.attemptCount&&t.terminalCount===t.attemptCount&&(a.qualityGate==="none"||(a.qualityGate==="all_pass"?s===1:(e.passedCount>0||t.passedCount>0)&&s>=r)),o=t.usage.totalTokens-e.usage.totalTokens,c=e.usage.totalTokens>0?o/e.usage.totalTokens*100:null,p=a.primaryMetric==="foreground_tokens"?o<0:a.primaryMetric==="success_rate"?s>r:a.primaryMetric==="latency_ms"?t.latencyMs<e.latencyMs:t.costUsd!==null&&e.costUsd!==null&&t.costUsd<e.costUsd,l=Hn.parse({schemaVersion:"openpond.benchmarkComparison.v1",id:a.id,baseline:{id:e.id,contentHash:e.contentHash},candidate:{id:t.id,contentHash:t.contentHash},tasksetRelease:e.tasksetRelease,primaryMetric:a.primaryMetric,qualityPassed:n,baselinePassRate:r,candidatePassRate:s,foregroundTokenDelta:o,foregroundTokenDeltaPercent:c,improved:n&&p,createdAt:a.createdAt,metadata:a.metadata??{}});return Ka.parse({...l,contentHash:h(l)})}d(tp,"compareBenchmarkRuns");function Qd(a){return(Array.isArray(a)?a:a?[a]:[]).reduce((t,r)=>Fn(t,Zd(r)),ds())}d(Qd,"providerUsage");function Zd(a){if(!a||typeof a!="object"||Array.isArray(a))return ds();let e=a,t=os(e,["inputTokens","input_tokens","promptTokens","prompt_tokens"]),r=os(e,["outputTokens","output_tokens","completionTokens","completion_tokens"]),s=os(e,["totalTokens","total_tokens"]);return{inputTokens:t,outputTokens:r,totalTokens:s||t+r}}d(Zd,"usageRecord");function os(a,e){for(let t of e){let r=a[t];if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return Math.trunc(r)}return 0}d(os,"token");function ds(){return{inputTokens:0,outputTokens:0,totalTokens:0}}d(ds,"emptyUsage");function Fn(a,e){return{inputTokens:a.inputTokens+e.inputTokens,outputTokens:a.outputTokens+e.outputTokens,totalTokens:a.totalTokens+e.totalTokens}}d(Fn,"addUsage");function jn(a){let e=new Map;for(let s of a.collectedArtifacts){let i=e.get(s.path)??[];i.push(s),e.set(s.path,i)}let t=new Set,r=a.requiredOutputs.map(s=>{let i=e.get(s.path)??[];if(i.length===0)return Dt.parse({requiredOutputPath:s.path,collectedPath:null,declaredMediaType:s.mediaType,detectedMediaType:null,artifact:null,status:"missing",parseStatus:"not_requested",schemaStatus:"not_requested",errorCode:"required_output_missing",failureOwner:"policy",evidenceRefs:[],metadata:{maxBytes:s.maxBytes,schemaRef:s.schemaRef}});if(i.length>1){for(let o of i)t.add(o);return Dt.parse({requiredOutputPath:s.path,collectedPath:s.path,declaredMediaType:s.mediaType,detectedMediaType:null,artifact:null,status:"failed",parseStatus:"not_requested",schemaStatus:"not_requested",errorCode:"artifact_collection_ambiguous",failureOwner:"collector",evidenceRefs:i.flatMap(o=>o.evidenceRefs??[]),metadata:{duplicateCount:i.length}})}let[n]=i;return t.add(n),ec(s,n)});for(let s of a.collectedArtifacts)t.has(s)||r.push(Dt.parse({requiredOutputPath:null,collectedPath:s.path,declaredMediaType:null,detectedMediaType:s.detectedMediaType,artifact:s.artifact,status:s.status,parseStatus:s.parseStatus??"not_requested",schemaStatus:s.schemaStatus??"not_requested",errorCode:s.errorCode??null,failureOwner:s.failureOwner??null,evidenceRefs:s.evidenceRefs??[],metadata:s.metadata??{}}));return Pi({schemaVersion:"openpond.artifactManifest.v1",id:a.id,attemptRef:a.attemptRef,entries:r,createdAt:a.createdAt,metadata:a.metadata??{}})}d(jn,"buildArtifactManifest");function Bn(a){return a.requiredOutputs.map(e=>{let t=a.manifest.entries.find(s=>s.requiredOutputPath===e.path);if(!t||t.status==="missing")return cs(e,t??null,{status:"scored",score:0,passed:!1,rewardEligible:!0,failureOwner:"policy",feedback:`Required output ${e.path} was not collected.`});if(t.status==="failed"&&t.failureOwner!=="policy")return cs(e,t,{status:"unscorable",score:null,passed:!1,rewardEligible:!1,failureOwner:t.failureOwner??"collector",feedback:`Required output ${e.path} could not be collected reliably.`});let r=tc(e,t);return cs(e,t,{status:"scored",score:r.length===0?1:0,passed:r.length===0,rewardEligible:!0,failureOwner:r.length===0?null:"policy",feedback:r.length===0?`Required output ${e.path} passed structural verification.`:r.join(" ")})})}d(Bn,"verifyRequiredOutputs");function ec(a,e){return Dt.parse({requiredOutputPath:a.path,collectedPath:e.path,declaredMediaType:a.mediaType,detectedMediaType:e.detectedMediaType,artifact:e.artifact,status:e.status,parseStatus:e.parseStatus??"not_requested",schemaStatus:e.schemaStatus??"not_requested",errorCode:e.errorCode??null,failureOwner:e.failureOwner??null,evidenceRefs:e.evidenceRefs??[],metadata:{...e.metadata,maxBytes:a.maxBytes,schemaRef:a.schemaRef}})}d(ec,"manifestEntry");function tc(a,e){let t=[];return e.artifact||t.push(`Required output ${a.path} has no immutable artifact reference.`),e.detectedMediaType!==a.mediaType&&t.push(`Required output ${a.path} has media type ${e.detectedMediaType??"unknown"}; expected ${a.mediaType}.`),a.maxBytes!==null&&e.artifact?.sizeBytes!==null&&e.artifact&&e.artifact.sizeBytes>a.maxBytes&&t.push(`Required output ${a.path} exceeds ${a.maxBytes} bytes.`),e.parseStatus==="failed"&&t.push(`Required output ${a.path} could not be parsed.`),e.schemaStatus==="failed"&&t.push(`Required output ${a.path} failed schema validation.`),t}d(tc,"structuralFailures");function cs(a,e,t){let r=[...e?.evidenceRefs??[],...e?.artifact?[e.artifact]:[]];return Ci.parse({verifierId:`required-output:${a.path}`,verifierVersion:"1",status:t.status,rawScore:t.score,normalizedScore:t.score,weight:1,passed:t.passed,hardGate:!0,rewardEligible:t.rewardEligible,rewardContribution:t.rewardEligible?t.score:null,failureOwner:t.failureOwner,feedback:[t.feedback],visibleEvidenceRefs:r,privilegedEvidenceRefs:[],metadata:{requiredOutputPath:a.path}})}d(cs,"requiredOutputComponent");import ea from"node:path";import{constants as ac,promises as Ue}from"node:fs";import re from"node:path";async function qn(a){let e=await Ue.lstat(a);if(e.isSymbolicLink())throw new Error(`Profile source cannot be a symlink: ${a}`);if(e.isFile())return[re.basename(a)];if(!e.isDirectory())throw new Error(`Profile source is not a file or directory: ${a}`);return He(a)}d(qn,"sourceFilesForImport");function Wn(a){for(let e of["agent.ts","index.ts","agent/agent.ts","agent.yaml","agent.yml","agent.json"])if(a.includes(e))return e;return a[0]}d(Wn,"selectAgentPrimaryFile");async function Yn(a,e){let t=await Ue.lstat(a);if(!t.isFile()||t.isSymbolicLink())throw new Error(`Harness import source must be a regular non-symlink file: ${a}`);await Ue.mkdir(re.dirname(e),{recursive:!0}),await Ue.copyFile(a,e,ac.COPYFILE_EXCL)}d(Yn,"copyRegularFile");function Qt(a){let e=re.extname(a).toLowerCase();return[".md",".txt"].includes(e)?e===".md"?"text/markdown":"text/plain":[".json"].includes(e)?"application/json":[".yaml",".yml"].includes(e)?"application/yaml":[".ts",".tsx",".js",".mjs",".cjs"].includes(e)?"text/javascript":e===".py"?"text/x-python":"application/octet-stream"}d(Qt,"mediaTypeForPath");async function Zt(a,e){let t=re.resolve(a,...e.split("/")),r=re.relative(a,t);if(!r||r.startsWith("..")||re.isAbsolute(r))throw new Error(`Harness source path escapes its root: ${e}`);let s=await Ue.lstat(t);if(!s.isFile()||s.isSymbolicLink())throw new Error(`Harness source path must be a regular non-symlink file: ${e}`);let i=await Ue.realpath(t),n=re.relative(await Ue.realpath(a),i);if(n.startsWith("..")||re.isAbsolute(n))throw new Error(`Harness source path resolves outside its root: ${e}`);return t}d(Zt,"resolveContainedRegularFile");async function He(a,e=a){let t=await Ue.readdir(e,{withFileTypes:!0}),r=[];for(let s of t){if(["node_modules",".git",".openpond"].includes(s.name)||s.name.startsWith(".env"))continue;let i=re.join(e,s.name);if(s.isSymbolicLink())throw new Error(`Harness source cannot contain symlinks: ${re.relative(a,i)}`);if(s.isDirectory())r.push(...await He(a,i));else if(s.isFile())r.push(re.relative(a,i).split(re.sep).join("/"));else throw new Error(`Harness source contains an unsupported entry: ${re.relative(a,i)}`)}return r.sort()}d(He,"listRegularFiles");function oe(a){return a.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"harness"}d(oe,"safeSegment");function $n(a,e){let t=[];return{async copy(r,s){await Yn(r,s);let i=ea.relative(a,r),n=ea.relative(e,s);i&&!i.startsWith("..")&&!ea.isAbsolute(i)&&t.push({releasedPath:n.split(ea.sep).join("/"),profileRelativePath:i.split(ea.sep).join("/")})},add(r,s){t.push({releasedPath:r,profileRelativePath:s})},policy(r){return t.filter(s=>r.some(i=>i.path===s.releasedPath&&i.visibility==="policy"))}}}d($n,"createProfileSourceBindings");var Kn=d(a=>a==="evals/catalog.json"||/^evals\/(definitions|suites|tasksets)\//.test(a)||/^workflows\/[^/]+\/evals\//.test(a),"isProfilePrivateEvaluationPath");import{execFile as rc}from"node:child_process";import{promises as Ne}from"node:fs";import wt from"node:path";import{promisify as sc}from"node:util";var ic=sc(rc);async function wp(a){let e=wt.join(a.runPath,"package.json"),t=await Ne.lstat(e).catch(()=>null);if(t&&(!t.isFile()||t.isSymbolicLink()))throw new Error("Released Profile Agent package manifest must be a regular file.");t||await Ne.writeFile(e,`{"type":"module"}
|
|
185
|
+
`,{flag:"wx"});let r=await ls(a.runPath);if(r){let i=r==="npm"?["ci","--omit=dev","--ignore-scripts","--no-audit","--no-fund"]:["install","--prod","--frozen-lockfile","--ignore-scripts","--config.node-linker=hoisted"];await(a.install??nc)(r,i,a.runPath)}let s=wt.join(a.runPath,"node_modules","openpond-agent-sdk");if(!await Ne.lstat(s).catch(()=>null)){let i=JSON.parse(await Ne.readFile(e,"utf8"));if({...Ja(i.dependencies),...Ja(i.optionalDependencies)}["openpond-agent-sdk"])throw new Error("Released Profile Agent declared an SDK dependency that the locked installation did not provide.");let o=await Xn();await Ne.mkdir(wt.dirname(s),{recursive:!0}),await Ne.symlink(o,s,"dir")}}d(wp,"prepareReleasedProfileActionDependencies");async function ls(a){let e=wt.join(a,"package.json"),t=await Ne.lstat(e).catch(()=>null);if(!t)return null;if(!t.isFile()||t.isSymbolicLink())throw new Error("Released Profile Agent package manifest must be a regular file.");let r=JSON.parse(await Ne.readFile(e,"utf8")),s={...Ja(r.dependencies),...Ja(r.optionalDependencies)};if(Object.keys(s).length){for(let[o,c]of Object.entries(s))if(/^(?:file:|link:|workspace:|git\+|https?:)/i.test(c))throw new Error(`Released Profile Agent dependency ${o} must use a portable registry version.`);let i=await Jn(wt.join(a,"package-lock.json")),n=await Jn(wt.join(a,"pnpm-lock.yaml"));if(i===n)throw new Error("Released Profile Agent with third-party dependencies requires exactly one npm or pnpm lockfile.");return i?"npm":"pnpm"}return null}d(ls,"inspectReleasedProfileActionDependencies");function Ja(a){if(a===void 0)return{};if(!a||typeof a!="object"||Array.isArray(a))throw new Error("Released Profile Agent dependencies must be a package map.");let e=Object.entries(a);if(e.some(([t,r])=>!t||typeof r!="string"||!r.trim()))throw new Error("Released Profile Agent dependencies must name portable versions.");return Object.fromEntries(e)}d(Ja,"dependencyMap");async function Jn(a){let e=await Ne.lstat(a).catch(()=>null);if(e&&(!e.isFile()||e.isSymbolicLink()))throw new Error("Released Profile Agent lockfile must be a regular file.");return!!e}d(Jn,"regularFile");async function nc(a,e,t){try{let r=process.platform==="win32"?`${a}.cmd`:a;await ic(r,e,{cwd:t,timeout:3e5,maxBuffer:1e6,...process.platform==="win32"?{shell:!0}:{}})}catch{throw new Error(`Released Profile Agent locked ${a} dependency installation failed.`)}}d(nc,"installLockedDependencies");var zn="harness.json";async function ps(a,e,t,r,s){let i=v.resolve(t.sourcePath),n=[],o=$n(i,a),c=o.copy,p=new Set((await He(i)).filter(Kn)),l=new Set,m=d(g=>{let A=g.id;l.has(A)&&(A=`${A}-${h(g.path).slice(0,8)}`),l.add(A);let j={...g,id:A};return n.push(j),j},"addDeclaration");await x.mkdir(a,{recursive:!0});let T=v.join(i,"instructions","system.md"),f=await x.lstat(T).catch(g=>{if(g.code==="ENOENT")return null;throw g});if(f){if(!f.isFile()||f.isSymbolicLink())throw new Error("Profile instructions require an actual regular source file.");await c(T,v.join(a,"instructions","system.md")),m({id:"instruction-system",kind:"instruction",path:"instructions/system.md",parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"})}for(let g of t.skills.filter(A=>A.enabled)){if(g.validationStatus!=="valid")throw new Error(`Cannot import invalid Profile Skill ${g.name}: ${g.validationMessages.join(" ")}`);let A=v.dirname(v.join(i,g.path)),j=`skills/${oe(g.name)}/SKILL.md`;await c(v.join(A,"SKILL.md"),v.join(a,...j.split("/")));let K=m({id:`skill-${oe(g.name)}`,kind:"skill",path:j,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"});for(let L of g.resourceFiles){let z=`skills/${oe(g.name)}/${L.split(v.sep).join("/")}`;await c(v.join(A,L),v.join(a,...z.split("/"))),m({id:`skill-resource-${oe(g.name)}-${h(L).slice(0,12)}`,kind:"skill_resource",path:z,parentId:K.id,mediaType:Qt(z),visibility:"policy",portability:"portable"})}}for(let g of t.agents.filter(A=>A.enabled)){let A=v.resolve(i,g.path),j=await x.realpath(A),K=await x.realpath(i),L=v.relative(K,j);if(L.startsWith("..")||v.isAbsolute(L))throw new Error("Profile Agent source escapes its admitted Profile root.");let z=await x.lstat(A),Fe=(await qn(A)).filter(W=>{let G=z.isDirectory()?v.join(j,...W.split("/")):j;return!p.has(v.relative(K,G).split(v.sep).join("/"))});if(Fe.length===0)throw new Error(`Profile Agent ${g.id} has no source files.`);let U=Wn(Fe);for(let W of Fe){let G=`agents/${oe(g.id)}/${W}`,Oe=(await x.stat(A)).isDirectory()?v.join(A,...W.split("/")):A;await c(Oe,v.join(a,...G.split("/"))),m({id:W===U?`agent-${oe(g.id)}`:`agent-asset-${oe(g.id)}-${h(W).slice(0,12)}`,kind:W===U?"agent":"asset",path:G,parentId:null,mediaType:Qt(G),visibility:"policy",portability:"portable"})}await ls(v.join(a,"agents",oe(g.id)))}let _=new Set,I=new Set(t.agents.filter(g=>g.enabled).map(g=>g.id)),N=t.actionCatalog.filter(g=>g.agentId&&I.has(g.agentId)).map(g=>({id:g.id,agentId:oe(g.agentId),sourceActionId:g.sourceActionId??g.id,inputSchema:typeof g.inputSchema=="object"&&g.inputSchema!==null?g.inputSchema:{type:"object",additionalProperties:!0}})),w=new Set(N.map(g=>g.id)),S=v.join(i,"workflows","catalog.json"),R=await x.lstat(S).catch(()=>null),E=(await He(i)).filter(g=>g.startsWith("workflows/")),y=E.some(g=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(g));if(y&&R)throw new Error("Authored Workflow packages and legacy workflows/catalog.json cannot coexist; migrate the catalog first.");if(R||y||N.length){if(R&&(!R.isFile()||R.isSymbolicLink()))throw new Error("Profile workflow catalog must be a regular file.");let g=y?li({files:new Map(await Promise.all(E.map(async L=>[L,await x.readFile(await Zt(i,L),"utf8")]))),skillPaths:new Set(n.filter(L=>L.kind==="skill").map(L=>L.path)),actionIds:w}):null,A=g?Buffer.from(q(g.catalog)):R?await x.readFile(S):Buffer.from(q({schemaVersion:"openpond.profileWorkflows.v1",workflows:[]}));R&&o.add("workflows/catalog.json","workflows/catalog.json");let j=Ia({catalog:JSON.parse(A.toString("utf8")),sourcePaths:new Set(n.filter(L=>L.kind==="skill").map(L=>L.path)),actionIds:new Set(N.map(L=>L.id))});for(let L of j.workflows)_.add(L.id);us(j);let K="workflows/catalog.json";await x.mkdir(v.join(a,"workflows"),{recursive:!0}),await x.writeFile(v.join(a,"workflows","catalog.json"),A,{flag:"wx"});for(let L of g?.referencedPaths??[])await c(v.join(i,...L.split("/")),v.join(a,...L.split("/"))),m({id:`profile-workflow-source-${h(L).slice(0,16)}`,kind:"asset",path:L,parentId:null,mediaType:Qt(L),visibility:"policy",portability:"portable"});m({id:"profile-workflows",kind:"workflow",path:K,parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"})}(R||y||N.length)&&(await x.writeFile(v.join(a,"workflows","actions.json"),q({schemaVersion:"openpond.profileWorkflowActions.v1",actions:N}),{flag:"wx"}),m({id:"profile-workflow-actions",kind:"asset",path:"workflows/actions.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}));let M=v.join(i,"evals","catalog.json"),B=await x.lstat(M).catch(()=>null),te=(await He(i)).filter(g=>/^workflows\/[^/]+\/evals\/[^/]+\.json$/.test(g)||/^evals\/(definitions|suites)\/[^/]+\.json$/.test(g));if(B&&te.length)throw new Error("Authored evaluation definitions and legacy evals/catalog.json cannot coexist; migrate the catalog first.");if(B||te.length){if(B&&(!B.isFile()||B.isSymbolicLink()))throw new Error("Profile evaluation catalog must be a regular file.");let g=[],A=[];for(let U of te){let W=JSON.parse(await x.readFile(await Zt(i,U),"utf8"));if(U.startsWith("evals/suites/"))A.push(fi.parse(W));else{let G=Ei.parse(W),Oe=/^workflows\/([^/]+)\/evals\//.exec(U)?.[1];if(Oe&&(G.target.kind!=="workflow"||G.target.workflowId!==Oe))throw new Error(`Profile evaluation ${G.id} must target its containing Workflow ${Oe}.`);g.push(G)}}let j=te.length?Buffer.from(q({schemaVersion:"openpond.profileEvaluations.v1",definitions:g.sort((U,W)=>U.id.localeCompare(W.id)),suites:A.sort((U,W)=>U.id.localeCompare(W.id))})):await x.readFile(M),{catalog:K}=_i({catalog:JSON.parse(j.toString("utf8")),workflowIds:_,skillPaths:new Set(n.filter(U=>U.kind==="skill").map(U=>U.path)),actionIds:w});await x.mkdir(v.join(a,"evals"),{recursive:!0}),await x.writeFile(v.join(a,"evals","catalog.json"),j,{flag:"wx"});for(let U of te)await c(v.join(i,...U.split("/")),v.join(a,...U.split("/"))),m({id:`profile-evaluation-source-${h(U).slice(0,16)}`,kind:"asset",path:U,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});m({id:"profile-evaluations",kind:"asset",path:"evals/catalog.json",parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});let L=new Set(K.definitions.map(U=>U.tasksetRelease.contentHash)),z=v.join(i,"evals","tasksets"),Fe=await x.lstat(z).catch(()=>null);if(Fe&&(!Fe.isDirectory()||Fe.isSymbolicLink()))throw new Error("Profile evaluation Taskset directory must be a regular directory.");for(let U of L){let W=v.join(z,`${U}.json`),G=await x.lstat(W).catch(()=>null);if(!G)throw new Error(`Profile evaluation Taskset package ${U} is missing.`);if(!G.isFile()||G.isSymbolicLink())throw new Error("Profile evaluation Taskset package must be a regular file.");let Oe=Ce(JSON.parse(await x.readFile(W,"utf8")));if(Oe.taskset.contentHash!==U||!K.definitions.some(Qs=>Qs.tasksetRelease.contentHash===U&&Qs.tasksetRelease.id===Oe.taskset.id))throw new Error("Profile evaluation Taskset package differs from its catalog reference.");let Gs=`evals/tasksets/${U}.json`;await c(W,v.join(a,...Gs.split("/"))),m({id:`profile-evaluation-taskset-${U.slice(0,16)}`,kind:"asset",path:Gs,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"})}}let Ee=await oc(t,r),D=`dependency-lock/${Ee.name}`;await x.mkdir(v.join(a,"dependency-lock"),{recursive:!0}),Ee.sourcePath?await c(Ee.sourcePath,v.join(a,...D.split("/"))):await x.writeFile(v.join(a,...D.split("/")),q(Ee.generated),{flag:"wx"}),m({id:"dependency-lock",kind:"dependency_lock",path:D,parentId:null,mediaType:Qt(D),visibility:"policy",portability:"portable"}),await x.writeFile(v.join(a,"program.json"),q({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),m({id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"});let b=Ze.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,profileSourceBindings:o.policy(n),profileInstructionSourcePath:"instructions/system.md",excludedEvalCount:t.evals.length,actionConversionPending:t.actionCatalog.length>0}});await x.writeFile(v.join(a,zn),q(b),{flag:"wx"}),await za(a,e)}d(ps,"writeImportedProfileSource");function us(a){for(let e of a.workflows){let t=Oa(e.inputSchema);if(!t.valid)throw new Error(`Profile workflow ${e.id} has an invalid input schema: ${t.issues[0]?.message??"schema mismatch"}`)}}d(us,"assertProfileWorkflowInputSchemas");async function za(a,e){let t=v.join(a,zn),r=Ze.parse(JSON.parse(await x.readFile(t,"utf8")));if(r.files.some(c=>c.kind==="instruction"))return;let s="instructions/system.md";await x.mkdir(v.join(a,"instructions"),{recursive:!0}),await x.writeFile(v.join(a,...s.split("/")),`# ${e}
|
|
186
186
|
|
|
187
187
|
Keep reusable, provider-neutral execution guidance for this Harness here.
|
|
188
188
|
`,{flag:"wx"});let n=new Set(r.files.map(c=>c.id)).has("instruction-system")?`instruction-system-${h(s).slice(0,8)}`:"instruction-system",o=Ze.parse({...r,name:e,files:[...r.files,{id:n,kind:"instruction",path:s,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"}]});await x.writeFile(t,q(o),{flag:"w"})}d(za,"ensureHarnessInstructionSurface");async function oc(a,e){let t=a.repoPath?v.resolve(a.repoPath):null;if(t)for(let r of["pnpm-lock.yaml","package-lock.json","yarn.lock"]){let s=v.join(t,r),i=await x.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}}}d(oc,"importedDependencyLock");import{randomUUID as zs}from"node:crypto";import{promises as C}from"node:fs";import X from"node:path";var dc=new Set(["contentsBase64","contentBase64","fileBase64","bodyBase64"]),cc=new Set(["command.output","tool.completed","workspace_action_result"]);function Va(a){return ms(lc(a),0,"")}d(Va,"sanitizeRuntimeEvent");function lc(a){if(!cc.has(a.name)||typeof a.output!="string"||Tc(a.data)||a.output.length<=32e3)return a;let e=a.output.length,t=a.output.slice(0,2e4),r=a.output.slice(-12e3),s=e-t.length-r.length,i=`
|
|
189
189
|
[openpond event output compacted: ${s} chars omitted from ${e} chars]
|
|
190
190
|
`,n=`${t}${i}${r}`,o={schemaVersion:"openpond.runtimeEventOutputCompaction.v1",reason:"large_output",originalChars:e,retainedChars:n.length,omittedChars:s,headChars:t.length,tailChars:r.length};return{...a,output:n,data:pc(a.data,o)}}d(lc,"compactLargeRuntimeEventOutput");function pc(a,e){return a===void 0?{outputCompaction:e}:Ts(a)?{...a,outputCompaction:e}:a}d(pc,"compactedEventData");function ms(a,e,t){if(typeof a=="string")return uc(a,t);if(!a||typeof a!="object")return a;if(e>=8)return Array.isArray(a)?`[array:${a.length}]`:"[object]";if(Array.isArray(a)){let r=a.slice(0,100).map(s=>ms(s,e+1,t));return a.length>100&&r.push(`[${a.length-100} items truncated]`),r}return Object.fromEntries(Object.entries(a).slice(0,120).map(([r,s])=>[r,ms(s,e+1,r)]))}d(ms,"sanitizeEventValue");function uc(a,e){return dc.has(e)?`[redacted base64 content: ${mc(a)} bytes]`:a.length<=12e4?a:`${a.slice(0,12e4)}
|
|
191
|
-
[event string truncated: ${a.length-12e4} chars omitted]`}d(uc,"sanitizeEventString");function mc(a){let e=a.endsWith("==")?2:a.endsWith("=")?1:0;return Math.max(0,Math.floor(a.length*3/4)-e)}d(mc,"estimatedBase64Bytes");function Ts(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}d(Ts,"isPlainRecord");function Tc(a){if(!Ts(a))return!1;let e=a.outputCompaction;return Ts(e)&&e.schemaVersion==="openpond.runtimeEventOutputCompaction.v1"}d(Tc,"hasOutputCompaction");async function Ga(a,e){return(await a.allPayloadRows(`SELECT payload FROM ${e} ORDER BY sort_index ASC`)).map(r=>JSON.parse(r.payload))}d(Ga,"readStorePayloads");function ta(a){let e=a,t=on.safeParse(e.openPondCommandAccessMode);return{...e,experience:Ec(e),openPondCommandAccessMode:t.success?t.data:nn,currentProfile:e.currentProfile??null}}d(ta,"normalizeSessionPayload");function Ec(a){let e=dn.safeParse(a.experience);return e.success?e.data:!!(a.provider==="codex"||a.codexThreadId||a.systemKind||a.parentSessionId||a.subagentRunId||a.appId||a.workspaceKind||a.workspaceId||a.localProjectId||a.cloudProjectId)?"development":"chat"}d(Ec,"storedSessionExperience");async function Vn(a){return{sessions:(await Ga(a,"sessions")).map(ta),turns:await Ga(a,"turns"),events:(await Ga(a,"events")).map(Va),approvals:await Ga(a,"approvals")}}d(Vn,"readStoreData");async function Gn(a,e){let t=ne();await e.exec("BEGIN IMMEDIATE");try{await e.exec("DELETE FROM approvals; DELETE FROM events; DELETE FROM turns; DELETE FROM sessions;");for(let[r,s]of a.sessions.entries())await e.run("INSERT INTO sessions (id, sort_index, payload, updated_at) VALUES (?, ?, ?, ?)",[s.id,r,JSON.stringify(s),s.updatedAt]);for(let[r,s]of a.turns.entries())await e.run("INSERT INTO turns (id, session_id, provider_turn_id, status, sort_index, payload, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[s.id,s.sessionId,s.providerTurnId,s.status,r,JSON.stringify(s),s.completedAt??s.startedAt]);for(let[r,s]of a.events.entries()){let i=r+1;await e.run("INSERT INTO events (id, session_id, turn_id, name, timestamp, sequence, sort_index, payload) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.sessionId??null,s.turnId??null,s.name,s.timestamp,i,r,JSON.stringify(s)])}for(let[r,s]of a.approvals.entries())await e.run("INSERT INTO approvals (id, session_id, status, sort_index, payload, updated_at) VALUES (?, ?, ?, ?, ?, ?)",[s.id,s.sessionId,s.status,r,JSON.stringify(s),t]);await e.exec("COMMIT")}catch(r){throw await e.exec("ROLLBACK"),r}}d(Gn,"persistStoreData");var aa=u.object({schemaVersion:u.literal("openpond.trainingActivityAuthority.v1"),teamId:u.string().min(1),actorId:u.string().min(1),projectId:u.string().min(1).nullable()}).strict(),Qn=new WeakMap;function Yp(a,e){Qn.set(a,aa.parse(e))}d(Yp,"bindTrainingActivityAuthority");function $p(a){return Qn.get(a)??null}d($p,"boundTrainingActivityAuthority");import Cl from"node:path";import{randomUUID as yl}from"node:crypto";import{cp as Rl,mkdir as wl,readdir as Nl,rename as Hs,rm as Ld,stat as Sl}from"node:fs/promises";import fa from"node:path";var de=u.string().trim().min(1).max(500),Nt=u.iso.datetime({offset:!0}),ra=u.object({schemaVersion:u.literal("openpond.preferenceComparisonReleaseRecord.v1"),id:de,tasksetId:de,tasksetRelease:fe,release:Ui,publishedBy:de,sourceConsent:u.enum(["authorized","revoked"]),retentionUntil:Nt.nullable(),createdAt:Nt}).strict(),et=u.object({schemaVersion:u.literal("openpond.preferenceComparisonAssignmentRecord.v1"),id:de,tasksetId:de,assignment:Hi,state:u.enum(["queued","in_review","submitted","unreviewable","revoked"]),reviewerKey:de.nullable(),unreviewableReason:u.string().trim().min(1).max(2e3).nullable(),createdAt:Nt,updatedAt:Nt}).strict().superRefine((a,e)=>{a.state==="unreviewable"&&!a.unreviewableReason&&e.addIssue({code:"custom",path:["unreviewableReason"],message:"Unreviewable assignments require a reason."}),a.state!=="unreviewable"&&a.unreviewableReason&&e.addIssue({code:"custom",path:["unreviewableReason"],message:"Only unreviewable assignments may retain a reason."})}),sa=u.object({schemaVersion:u.literal("openpond.preferenceComparisonSubmissionRecord.v1"),id:de,tasksetId:de,assignmentId:de,reviewerKey:de,receipt:Fi,submittedAt:Nt}).strict(),Es=u.object({schemaVersion:u.literal("openpond.preferenceComparisonCalibrationRecord.v1"),id:de,tasksetId:de,report:ji,createdAt:Nt}).strict();function Zn(a,e,t){let r=yn.safeParse(t.metadata.portableExecutionRef);return a.kind!=="training"||a.status!=="failed"||a.receipt!==null||e.status!=="succeeded"||e.receipt?.schemaVersion!=="openpond.modelRunReceipt.v1"||e.failure!==null||t.status!=="failed"||t.metadata.phase!=="artifact_collection_failed"||t.metadata.modelRunId!==a.id||!r.success||e.receipt.providerRunId!==(r.data.providerJobId??r.data.runId)||e.receipt.assignmentHash!==t.metadata.harnessRunManifestHash?!1:JSON.stringify({...a,status:e.status,receipt:e.receipt,adapterArtifactLineageId:e.adapterArtifactLineageId,failure:null,completedAt:e.completedAt,updatedAt:e.updatedAt})===JSON.stringify(e)}d(Zn,"isArtifactCollectionRecoveryTransition");function fs(a,e){if(a.kind!=="evaluation"||!["failed","cancelled"].includes(a.status)||e.status!=="running"||e.receipt!==null||e.failure!==null||e.completedAt!==null||!a.evaluation)return!1;let t=a.evaluation.attemptPlan.filter(o=>o.stage==="baseline"||o.stage==="adaptation").reduce((o,c)=>o+c.attemptCount,0),r=a.evaluation.attemptPlan.reduce((o,c)=>o+c.attemptCount,0),s=a.evaluation.attemptPlan.find(o=>o.stage==="candidate_adaptation"),i=t+(s?.attemptCount??0);return!(a.evaluationProgress?.stage==="refiner"&&a.evaluationProgress.completedAttempts===t||a.evaluationProgress?.stage==="candidate_adaptation"&&a.evaluationProgress.completedAttempts>=t&&a.evaluationProgress.completedAttempts<=i||["candidate_adaptation","candidate","comparison"].includes(a.evaluationProgress?.stage??"")&&a.evaluationProgress?.completedAttempts===r)||!a.evaluationProgress?.accounting?!1:JSON.stringify({...a,status:"running",receipt:null,failure:null,completedAt:null,updatedAt:e.updatedAt})===JSON.stringify(e)}d(fs,"isCheckpointResumeTransition");var ue=u.object({id:$,scope:$,sourceId:$,name:u.string().trim().min(1).max(100),keyPrefix:u.string().min(1).max(100),createdAt:u.iso.datetime(),expiresAt:u.iso.datetime(),revokedAt:u.iso.datetime().nullable()}).strict(),_s=u.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/),Qa=u.discriminatedUnion("action",[u.object({action:u.literal("create"),scope:$,sourceId:$,name:u.string().trim().min(1).max(100),expiresAt:u.iso.datetime(),operationId:$,apiKey:_s}).strict(),u.object({action:u.literal("list"),scope:$,sourceId:$,afterId:$.optional(),limit:u.number().int().min(1).max(100).default(30)}).strict(),u.object({action:u.literal("revoke"),scope:$,sourceId:$,id:$}).strict()]),eo=u.object({credential:ue,apiKey:_s}).strict(),to=u.object({items:u.array(ue).max(100),nextCursor:$.nullable()}).strict(),ao=u.object({scope:$,sourceId:$}).strict(),ro=u.object({scope:$,source:Mr,taskDefinition:Mr,enabled:u.boolean(),allowedSplits:u.array(We).min(1).max(4)}).strict();function fc(a,e){let t=Date.parse(u.iso.datetime().parse(a));if(t<=e.getTime()||t>e.getTime()+2160*60*60*1e3)throw new Error("Source credentials must expire within 90 days.")}d(fc,"assertLearningCredentialExpiry");var so=u.object({batchId:u.string().trim().min(1).max(500),modelProjectId:u.string().trim().min(1).max(500)}).strict(),io=u.object({batchId:u.string().min(1),projectId:u.string().min(1),tasksetId:u.string().min(1),releaseId:u.string().min(1),revision:u.number().int().positive(),contentHash:u.string().regex(/^[a-f0-9]{64}$/)}).strict(),ee=class extends Error{static{d(this,"OpenPondLearningError")}constructor(a,e,t,r){super(t),this.status=a,this.code=e,this.details=r,this.name="OpenPondLearningError"}status;code;details},_c=class{static{d(this,"OpenPondLearningClient")}#e;constructor(a){if(!a.apiKey.trim()||!a.scope.trim())throw new Error("Learning API key and scope are required.");let e=new URL(a.baseUrl);if(!["http:","https:"].includes(e.protocol)||e.username||e.password||e.search||e.hash)throw new Error("Learning base URL must be an HTTP(S) endpoint without credentials, query, or fragment.");this.#e={...a,baseUrl:e.toString().replace(/\/+$/,"")}}async command(a,e={}){Ni(a);let t=Si.parse({scope:this.#e.scope,command:a}),r=vi.parse(await this.#t("commands",t,e));if(r.operationId!==a.operationId)throw new ee(502,"operation_identity_mismatch","Learning response did not match the submitted operation.",null);return r}submitExample(a,e={}){return this.command({action:"submit_example",operationId:a.idempotencyKey,example:a},e)}submitFeedback(a,e={}){return this.command({action:"submit_feedback",operationId:a.idempotencyKey,feedback:a},e)}async get(a,e,t,r={}){let s=pt.parse({action:"get",scope:this.#e.scope,kind:a,id:e,...t===void 0?{}:{revision:t}});return ae[a].parse(await this.#t("read",s,r))}async inspectEvidence(a,e={}){let t=pt.parse({action:"inspect_evidence",scope:this.#e.scope,evidence:a}),r=ki.parse(await this.#t("read",t,e));if(!H(r.evidence,a))throw new ee(502,"evidence_identity_mismatch","Inspection did not match the requested evidence release.",null);return r}async inspectTaskQueue(a=null,e={}){let t=pt.parse({action:"inspect_task_queue",scope:this.#e.scope,modelProjectId:a}),r=wi.parse(await this.#t("read",t,e));if(r.modelProjectId!==a)throw new ee(502,"model_identity_mismatch","Task queue did not match the requested Model.",null);return r}async inspectPolicy(a,e={}){let t=pt.parse({action:"inspect_policy",scope:this.#e.scope,policy:a}),r=Ri.parse(await this.#t("read",t,e));if(!H(r.policy,a))throw new ee(502,"policy_identity_mismatch","Inspection did not match the requested policy release.",null);return r}async createSourceCredential(a,e={}){let t=Qa.parse({...a,action:"create",scope:this.#e.scope}),r=eo.parse(await this.#t("credentials",t,e));if(this.#a(r.credential,a.sourceId),r.apiKey!==a.apiKey||!a.apiKey.startsWith(`${r.credential.keyPrefix}_`))throw new ee(502,"credential_identity_mismatch","Credential response did not match the prepared credential.",null);return r}async listSourceCredentials(a,e={},t={}){let r=Qa.parse({...e,action:"list",scope:this.#e.scope,sourceId:a}),s=to.parse(await this.#t("credentials",r,t));if(s.items.length>(e.limit??30))throw new ee(502,"credential_page_invalid","Credential response exceeded the requested page size.",null);for(let i of s.items)this.#a(i,a);return s}async revokeSourceCredential(a,e,t={}){let r=Qa.parse({action:"revoke",scope:this.#e.scope,sourceId:a,id:e}),s=ue.parse(await this.#t("credentials",r,t));if(this.#a(s,a),s.id!==e||s.revokedAt===null)throw new ee(502,"credential_revocation_mismatch","Credential revocation did not match the requested credential.",null);return s}async sourceConfiguration(a,e={}){let t=ao.parse({scope:this.#e.scope,sourceId:a}),r=ro.parse(await this.#t("source-config",t,e));if(r.scope!==this.#e.scope||r.source.id!==a)throw new ee(502,"source_identity_mismatch","Source configuration did not match the requested source.",null);return r}#a(a,e){if(a.scope!==this.#e.scope||a.sourceId!==e)throw new ee(502,"credential_scope_mismatch","Credential response did not match the requested source.",null)}async list(a,e={},t={}){let r=pt.parse({action:"list",scope:this.#e.scope,kind:a,...e});return u.object({items:u.array(ae[a]).max(100),nextCursor:u.string().nullable()}).strict().parse(await this.#t("read",r,t))}async publishBatch(a,e={}){let t=so.parse(a),r=io.parse(await this.#t("publish-batch",{...t,scope:this.#e.scope},e));if(r.batchId!==t.batchId)throw new ee(502,"batch_identity_mismatch","Published batch response did not match the requested batch.",null);return r}async#t(a,e,t){ct(e,16777216);let r=await(this.#e.fetch??globalThis.fetch)(`${this.#e.baseUrl}/v1/learning/${a}`,{method:"POST",headers:{Authorization:`Bearer ${this.#e.apiKey}`,"Content-Type":"application/json",Accept:"application/json","X-OpenPond-Team-Id":this.#e.scope},body:JSON.stringify(e),signal:t.signal,redirect:"error"}),s=await hc(r);if(!r.ok){let i=u.object({code:u.string().optional(),error:u.string().optional()}).passthrough().safeParse(s);throw new ee(r.status,i.success?i.data.code??"learning_request_failed":"learning_request_failed",i.success?i.data.error??`Learning request failed (${r.status}).`:`Learning request failed (${r.status}).`,s)}return s}};async function hc(a){let t=a.body?.getReader();if(!t)throw new ee(a.status,"empty_response","Learning response was empty.",null);let r=new TextDecoder,s=0,i="";try{for(;;){let o=await t.read();if(o.done)break;if(s+=o.value.byteLength,s>16777216)throw new ee(a.status,"response_too_large","Learning response exceeded 16 MiB; request a smaller page.",null);i+=r.decode(o.value,{stream:!0})}i+=r.decode();let n=JSON.parse(i);return ct(n,16777216),n}finally{await t.cancel(),t.releaseLock()}}d(hc,"readBoundedLearningResponse");var se=u.string().trim().min(1).max(240),gc=u.object({projectId:se.optional(),search:u.string().max(300).optional(),kind:u.string().max(100).optional(),sort:u.enum(["name","type","version","projects","datasets","runs"]).optional(),direction:u.enum(["asc","desc"]).optional(),after:u.string().max(3e3).optional(),limit:u.number().int().min(1).max(100).default(30)}).strict(),yc=u.object({teamId:se,items:u.array(u.object({reward:$e,projects:u.number().int().nonnegative(),datasets:u.number().int().nonnegative(),runs:u.number().int().nonnegative()}).strict()).max(100),nextCursor:u.string().nullable()}).strict(),Rc=u.object({teamId:se,id:se,items:u.array($e).max(100),nextRevision:u.number().int().positive().nullable()}).strict(),no=u.object({section:u.enum(["projects","datasets","runs"]),after:se.optional(),limit:u.number().int().min(1).max(100).default(25)}).strict(),wc=u.object({teamId:se,id:se,section:no.shape.section,items:u.array(u.union([u.object({id:se,name:u.string(),graderRevisions:u.array(u.number().int().positive()),archived:u.boolean()}).strict(),u.object({id:se,name:u.string(),revision:u.number().int().positive(),graderRevisions:u.array(u.number().int().positive())}).strict(),u.object({id:se,name:u.string(),status:u.string()}).strict()])).max(100),nextCursor:se.nullable()}).strict(),yu=class{static{d(this,"OpenPondGraderInspectionClient")}constructor(a){this.options=a;let e=new URL(a.baseUrl);if(!["http:","https:"].includes(e.protocol)||e.username||e.password||e.search||e.hash||!a.apiKey.trim()||!a.teamId.trim())throw new Error("A clean API origin and workspace credentials are required.");this.baseUrl=e.toString().replace(/\/+$/,"")}options;baseUrl;async catalog(a={},e){let t=gc.parse(a),r=yc.parse(await this.read("",t,e));if(r.teamId!==this.options.teamId||r.items.length>t.limit||new Set(r.items.map(s=>s.reward.id)).size!==r.items.length)throw new Error("Grader catalog differs from its requested workspace or bounds.");return r}async versions(a,e={},t){let r=u.object({beforeRevision:u.number().int().positive().optional(),limit:u.number().int().min(1).max(100).default(25)}).strict().parse(e),s=Rc.parse(await this.read(`/${encodeURIComponent(se.parse(a))}/versions`,r,t));if(s.teamId!==this.options.teamId||s.id!==a||s.items.length>r.limit||s.items.some((i,n)=>i.id!==a||r.beforeRevision&&i.revision>=r.beforeRevision||n>0&&i.revision>=s.items[n-1].revision))throw new Error("Grader versions differ from their requested identity or revision order.");return s}async usage(a,e,t){let r=no.parse(e),s=wc.parse(await this.read(`/${encodeURIComponent(se.parse(a))}/usage`,r,t));if(s.teamId!==this.options.teamId||s.id!==a||s.section!==r.section||s.items.length>r.limit)throw new Error("Grader usage differs from its requested workspace, identity or bounds.");return s}async read(a,e,t){let r=new URLSearchParams(Object.entries(e).filter(([,n])=>n!==void 0).map(([n,o])=>[n,String(o)])),s=await(this.options.fetch??fetch)(`${this.baseUrl}/v1/learning/read/graders${a}?${r}`,{signal:t,redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,Accept:"application/json"}}),i=await s.json();if(!s.ok)throw new Error(u.object({error:u.string()}).parse(i).error);return i}};import{backup as bc}from"node:sqlite";import{promises as ks}from"node:fs";import na from"node:path";var oo=`
|
|
191
|
+
[event string truncated: ${a.length-12e4} chars omitted]`}d(uc,"sanitizeEventString");function mc(a){let e=a.endsWith("==")?2:a.endsWith("=")?1:0;return Math.max(0,Math.floor(a.length*3/4)-e)}d(mc,"estimatedBase64Bytes");function Ts(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}d(Ts,"isPlainRecord");function Tc(a){if(!Ts(a))return!1;let e=a.outputCompaction;return Ts(e)&&e.schemaVersion==="openpond.runtimeEventOutputCompaction.v1"}d(Tc,"hasOutputCompaction");async function Ga(a,e){return(await a.allPayloadRows(`SELECT payload FROM ${e} ORDER BY sort_index ASC`)).map(r=>JSON.parse(r.payload))}d(Ga,"readStorePayloads");function ta(a){let e=a,t=Ji.safeParse(e.openPondCommandAccessMode);return{...e,experience:Ec(e),openPondCommandAccessMode:t.success?t.data:Ki,currentProfile:e.currentProfile??null}}d(ta,"normalizeSessionPayload");function Ec(a){let e=pn.safeParse(a.experience);return e.success?e.data:!!(a.provider==="codex"||a.codexThreadId||a.systemKind||a.parentSessionId||a.subagentRunId||a.appId||a.workspaceKind||a.workspaceId||a.localProjectId||a.cloudProjectId)?"development":"chat"}d(Ec,"storedSessionExperience");async function Vn(a){return{sessions:(await Ga(a,"sessions")).map(ta),turns:await Ga(a,"turns"),events:(await Ga(a,"events")).map(Va),approvals:await Ga(a,"approvals")}}d(Vn,"readStoreData");async function Gn(a,e){let t=ne();await e.exec("BEGIN IMMEDIATE");try{await e.exec("DELETE FROM approvals; DELETE FROM events; DELETE FROM turns; DELETE FROM sessions;");for(let[r,s]of a.sessions.entries())await e.run("INSERT INTO sessions (id, sort_index, payload, updated_at) VALUES (?, ?, ?, ?)",[s.id,r,JSON.stringify(s),s.updatedAt]);for(let[r,s]of a.turns.entries())await e.run("INSERT INTO turns (id, session_id, provider_turn_id, status, sort_index, payload, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[s.id,s.sessionId,s.providerTurnId,s.status,r,JSON.stringify(s),s.completedAt??s.startedAt]);for(let[r,s]of a.events.entries()){let i=r+1;await e.run("INSERT INTO events (id, session_id, turn_id, name, timestamp, sequence, sort_index, payload) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.sessionId??null,s.turnId??null,s.name,s.timestamp,i,r,JSON.stringify(s)])}for(let[r,s]of a.approvals.entries())await e.run("INSERT INTO approvals (id, session_id, status, sort_index, payload, updated_at) VALUES (?, ?, ?, ?, ?, ?)",[s.id,s.sessionId,s.status,r,JSON.stringify(s),t]);await e.exec("COMMIT")}catch(r){throw await e.exec("ROLLBACK"),r}}d(Gn,"persistStoreData");var aa=u.object({schemaVersion:u.literal("openpond.trainingActivityAuthority.v1"),teamId:u.string().min(1),actorId:u.string().min(1),projectId:u.string().min(1).nullable()}).strict(),Qn=new WeakMap;function Yp(a,e){Qn.set(a,aa.parse(e))}d(Yp,"bindTrainingActivityAuthority");function $p(a){return Qn.get(a)??null}d($p,"boundTrainingActivityAuthority");import Cl from"node:path";import{randomUUID as yl}from"node:crypto";import{cp as Rl,mkdir as wl,readdir as Nl,rename as Hs,rm as Ld,stat as Sl}from"node:fs/promises";import fa from"node:path";var de=u.string().trim().min(1).max(500),Nt=u.iso.datetime({offset:!0}),ra=u.object({schemaVersion:u.literal("openpond.preferenceComparisonReleaseRecord.v1"),id:de,tasksetId:de,tasksetRelease:fe,release:Mi,publishedBy:de,sourceConsent:u.enum(["authorized","revoked"]),retentionUntil:Nt.nullable(),createdAt:Nt}).strict(),et=u.object({schemaVersion:u.literal("openpond.preferenceComparisonAssignmentRecord.v1"),id:de,tasksetId:de,assignment:Di,state:u.enum(["queued","in_review","submitted","unreviewable","revoked"]),reviewerKey:de.nullable(),unreviewableReason:u.string().trim().min(1).max(2e3).nullable(),createdAt:Nt,updatedAt:Nt}).strict().superRefine((a,e)=>{a.state==="unreviewable"&&!a.unreviewableReason&&e.addIssue({code:"custom",path:["unreviewableReason"],message:"Unreviewable assignments require a reason."}),a.state!=="unreviewable"&&a.unreviewableReason&&e.addIssue({code:"custom",path:["unreviewableReason"],message:"Only unreviewable assignments may retain a reason."})}),sa=u.object({schemaVersion:u.literal("openpond.preferenceComparisonSubmissionRecord.v1"),id:de,tasksetId:de,assignmentId:de,reviewerKey:de,receipt:Ui,submittedAt:Nt}).strict(),Es=u.object({schemaVersion:u.literal("openpond.preferenceComparisonCalibrationRecord.v1"),id:de,tasksetId:de,report:Hi,createdAt:Nt}).strict();function Zn(a,e,t){let r=Nn.safeParse(t.metadata.portableExecutionRef);return a.kind!=="training"||a.status!=="failed"||a.receipt!==null||e.status!=="succeeded"||e.receipt?.schemaVersion!=="openpond.modelRunReceipt.v1"||e.failure!==null||t.status!=="failed"||t.metadata.phase!=="artifact_collection_failed"||t.metadata.modelRunId!==a.id||!r.success||e.receipt.providerRunId!==(r.data.providerJobId??r.data.runId)||e.receipt.assignmentHash!==t.metadata.harnessRunManifestHash?!1:JSON.stringify({...a,status:e.status,receipt:e.receipt,adapterArtifactLineageId:e.adapterArtifactLineageId,failure:null,completedAt:e.completedAt,updatedAt:e.updatedAt})===JSON.stringify(e)}d(Zn,"isArtifactCollectionRecoveryTransition");function fs(a,e){if(a.kind!=="evaluation"||!["failed","cancelled"].includes(a.status)||e.status!=="running"||e.receipt!==null||e.failure!==null||e.completedAt!==null||!a.evaluation)return!1;let t=a.evaluation.attemptPlan.filter(o=>o.stage==="baseline"||o.stage==="adaptation").reduce((o,c)=>o+c.attemptCount,0),r=a.evaluation.attemptPlan.reduce((o,c)=>o+c.attemptCount,0),s=a.evaluation.attemptPlan.find(o=>o.stage==="candidate_adaptation"),i=t+(s?.attemptCount??0);return!(a.evaluationProgress?.stage==="refiner"&&a.evaluationProgress.completedAttempts===t||a.evaluationProgress?.stage==="candidate_adaptation"&&a.evaluationProgress.completedAttempts>=t&&a.evaluationProgress.completedAttempts<=i||["candidate_adaptation","candidate","comparison"].includes(a.evaluationProgress?.stage??"")&&a.evaluationProgress?.completedAttempts===r)||!a.evaluationProgress?.accounting?!1:JSON.stringify({...a,status:"running",receipt:null,failure:null,completedAt:null,updatedAt:e.updatedAt})===JSON.stringify(e)}d(fs,"isCheckpointResumeTransition");var ue=u.object({id:$,scope:$,sourceId:$,name:u.string().trim().min(1).max(100),keyPrefix:u.string().min(1).max(100),createdAt:u.iso.datetime(),expiresAt:u.iso.datetime(),revokedAt:u.iso.datetime().nullable()}).strict(),_s=u.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/),Qa=u.discriminatedUnion("action",[u.object({action:u.literal("create"),scope:$,sourceId:$,name:u.string().trim().min(1).max(100),expiresAt:u.iso.datetime(),operationId:$,apiKey:_s}).strict(),u.object({action:u.literal("list"),scope:$,sourceId:$,afterId:$.optional(),limit:u.number().int().min(1).max(100).default(30)}).strict(),u.object({action:u.literal("revoke"),scope:$,sourceId:$,id:$}).strict()]),eo=u.object({credential:ue,apiKey:_s}).strict(),to=u.object({items:u.array(ue).max(100),nextCursor:$.nullable()}).strict(),ao=u.object({scope:$,sourceId:$}).strict(),ro=u.object({scope:$,source:Mr,taskDefinition:Mr,enabled:u.boolean(),allowedSplits:u.array(Ye).min(1).max(4)}).strict();function fc(a,e){let t=Date.parse(u.iso.datetime().parse(a));if(t<=e.getTime()||t>e.getTime()+2160*60*60*1e3)throw new Error("Source credentials must expire within 90 days.")}d(fc,"assertLearningCredentialExpiry");var so=u.object({batchId:u.string().trim().min(1).max(500),modelProjectId:u.string().trim().min(1).max(500)}).strict(),io=u.object({batchId:u.string().min(1),projectId:u.string().min(1),tasksetId:u.string().min(1),releaseId:u.string().min(1),revision:u.number().int().positive(),contentHash:u.string().regex(/^[a-f0-9]{64}$/)}).strict(),ee=class extends Error{static{d(this,"OpenPondLearningError")}constructor(a,e,t,r){super(t),this.status=a,this.code=e,this.details=r,this.name="OpenPondLearningError"}status;code;details},_c=class{static{d(this,"OpenPondLearningClient")}#e;constructor(a){if(!a.apiKey.trim()||!a.scope.trim())throw new Error("Learning API key and scope are required.");let e=new URL(a.baseUrl);if(!["http:","https:"].includes(e.protocol)||e.username||e.password||e.search||e.hash)throw new Error("Learning base URL must be an HTTP(S) endpoint without credentials, query, or fragment.");this.#e={...a,baseUrl:e.toString().replace(/\/+$/,"")}}async command(a,e={}){vi(a);let t=Ii.parse({scope:this.#e.scope,command:a}),r=Li.parse(await this.#t("commands",t,e));if(r.operationId!==a.operationId)throw new ee(502,"operation_identity_mismatch","Learning response did not match the submitted operation.",null);return r}submitExample(a,e={}){return this.command({action:"submit_example",operationId:a.idempotencyKey,example:a},e)}submitFeedback(a,e={}){return this.command({action:"submit_feedback",operationId:a.idempotencyKey,feedback:a},e)}async get(a,e,t,r={}){let s=pt.parse({action:"get",scope:this.#e.scope,kind:a,id:e,...t===void 0?{}:{revision:t}});return ae[a].parse(await this.#t("read",s,r))}async inspectEvidence(a,e={}){let t=pt.parse({action:"inspect_evidence",scope:this.#e.scope,evidence:a}),r=Oi.parse(await this.#t("read",t,e));if(!H(r.evidence,a))throw new ee(502,"evidence_identity_mismatch","Inspection did not match the requested evidence release.",null);return r}async inspectTaskQueue(a=null,e={}){let t=pt.parse({action:"inspect_task_queue",scope:this.#e.scope,modelProjectId:a}),r=ki.parse(await this.#t("read",t,e));if(r.modelProjectId!==a)throw new ee(502,"model_identity_mismatch","Task queue did not match the requested Model.",null);return r}async inspectPolicy(a,e={}){let t=pt.parse({action:"inspect_policy",scope:this.#e.scope,policy:a}),r=Si.parse(await this.#t("read",t,e));if(!H(r.policy,a))throw new ee(502,"policy_identity_mismatch","Inspection did not match the requested policy release.",null);return r}async createSourceCredential(a,e={}){let t=Qa.parse({...a,action:"create",scope:this.#e.scope}),r=eo.parse(await this.#t("credentials",t,e));if(this.#a(r.credential,a.sourceId),r.apiKey!==a.apiKey||!a.apiKey.startsWith(`${r.credential.keyPrefix}_`))throw new ee(502,"credential_identity_mismatch","Credential response did not match the prepared credential.",null);return r}async listSourceCredentials(a,e={},t={}){let r=Qa.parse({...e,action:"list",scope:this.#e.scope,sourceId:a}),s=to.parse(await this.#t("credentials",r,t));if(s.items.length>(e.limit??30))throw new ee(502,"credential_page_invalid","Credential response exceeded the requested page size.",null);for(let i of s.items)this.#a(i,a);return s}async revokeSourceCredential(a,e,t={}){let r=Qa.parse({action:"revoke",scope:this.#e.scope,sourceId:a,id:e}),s=ue.parse(await this.#t("credentials",r,t));if(this.#a(s,a),s.id!==e||s.revokedAt===null)throw new ee(502,"credential_revocation_mismatch","Credential revocation did not match the requested credential.",null);return s}async sourceConfiguration(a,e={}){let t=ao.parse({scope:this.#e.scope,sourceId:a}),r=ro.parse(await this.#t("source-config",t,e));if(r.scope!==this.#e.scope||r.source.id!==a)throw new ee(502,"source_identity_mismatch","Source configuration did not match the requested source.",null);return r}#a(a,e){if(a.scope!==this.#e.scope||a.sourceId!==e)throw new ee(502,"credential_scope_mismatch","Credential response did not match the requested source.",null)}async list(a,e={},t={}){let r=pt.parse({action:"list",scope:this.#e.scope,kind:a,...e});return u.object({items:u.array(ae[a]).max(100),nextCursor:u.string().nullable()}).strict().parse(await this.#t("read",r,t))}async publishBatch(a,e={}){let t=so.parse(a),r=io.parse(await this.#t("publish-batch",{...t,scope:this.#e.scope},e));if(r.batchId!==t.batchId)throw new ee(502,"batch_identity_mismatch","Published batch response did not match the requested batch.",null);return r}async#t(a,e,t){ct(e,16777216);let r=await(this.#e.fetch??globalThis.fetch)(`${this.#e.baseUrl}/v1/learning/${a}`,{method:"POST",headers:{Authorization:`Bearer ${this.#e.apiKey}`,"Content-Type":"application/json",Accept:"application/json","X-OpenPond-Team-Id":this.#e.scope},body:JSON.stringify(e),signal:t.signal,redirect:"error"}),s=await hc(r);if(!r.ok){let i=u.object({code:u.string().optional(),error:u.string().optional()}).passthrough().safeParse(s);throw new ee(r.status,i.success?i.data.code??"learning_request_failed":"learning_request_failed",i.success?i.data.error??`Learning request failed (${r.status}).`:`Learning request failed (${r.status}).`,s)}return s}};async function hc(a){let t=a.body?.getReader();if(!t)throw new ee(a.status,"empty_response","Learning response was empty.",null);let r=new TextDecoder,s=0,i="";try{for(;;){let o=await t.read();if(o.done)break;if(s+=o.value.byteLength,s>16777216)throw new ee(a.status,"response_too_large","Learning response exceeded 16 MiB; request a smaller page.",null);i+=r.decode(o.value,{stream:!0})}i+=r.decode();let n=JSON.parse(i);return ct(n,16777216),n}finally{await t.cancel(),t.releaseLock()}}d(hc,"readBoundedLearningResponse");var se=u.string().trim().min(1).max(240),gc=u.object({projectId:se.optional(),search:u.string().max(300).optional(),kind:u.string().max(100).optional(),sort:u.enum(["name","type","version","projects","datasets","runs"]).optional(),direction:u.enum(["asc","desc"]).optional(),after:u.string().max(3e3).optional(),limit:u.number().int().min(1).max(100).default(30)}).strict(),yc=u.object({teamId:se,items:u.array(u.object({reward:$e,projects:u.number().int().nonnegative(),datasets:u.number().int().nonnegative(),runs:u.number().int().nonnegative()}).strict()).max(100),nextCursor:u.string().nullable()}).strict(),Rc=u.object({teamId:se,id:se,items:u.array($e).max(100),nextRevision:u.number().int().positive().nullable()}).strict(),no=u.object({section:u.enum(["projects","datasets","runs"]),after:se.optional(),limit:u.number().int().min(1).max(100).default(25)}).strict(),wc=u.object({teamId:se,id:se,section:no.shape.section,items:u.array(u.union([u.object({id:se,name:u.string(),graderRevisions:u.array(u.number().int().positive()),archived:u.boolean()}).strict(),u.object({id:se,name:u.string(),revision:u.number().int().positive(),graderRevisions:u.array(u.number().int().positive())}).strict(),u.object({id:se,name:u.string(),status:u.string()}).strict()])).max(100),nextCursor:se.nullable()}).strict(),yu=class{static{d(this,"OpenPondGraderInspectionClient")}constructor(a){this.options=a;let e=new URL(a.baseUrl);if(!["http:","https:"].includes(e.protocol)||e.username||e.password||e.search||e.hash||!a.apiKey.trim()||!a.teamId.trim())throw new Error("A clean API origin and workspace credentials are required.");this.baseUrl=e.toString().replace(/\/+$/,"")}options;baseUrl;async catalog(a={},e){let t=gc.parse(a),r=yc.parse(await this.read("",t,e));if(r.teamId!==this.options.teamId||r.items.length>t.limit||new Set(r.items.map(s=>s.reward.id)).size!==r.items.length)throw new Error("Grader catalog differs from its requested workspace or bounds.");return r}async versions(a,e={},t){let r=u.object({beforeRevision:u.number().int().positive().optional(),limit:u.number().int().min(1).max(100).default(25)}).strict().parse(e),s=Rc.parse(await this.read(`/${encodeURIComponent(se.parse(a))}/versions`,r,t));if(s.teamId!==this.options.teamId||s.id!==a||s.items.length>r.limit||s.items.some((i,n)=>i.id!==a||r.beforeRevision&&i.revision>=r.beforeRevision||n>0&&i.revision>=s.items[n-1].revision))throw new Error("Grader versions differ from their requested identity or revision order.");return s}async usage(a,e,t){let r=no.parse(e),s=wc.parse(await this.read(`/${encodeURIComponent(se.parse(a))}/usage`,r,t));if(s.teamId!==this.options.teamId||s.id!==a||s.section!==r.section||s.items.length>r.limit)throw new Error("Grader usage differs from its requested workspace, identity or bounds.");return s}async read(a,e,t){let r=new URLSearchParams(Object.entries(e).filter(([,n])=>n!==void 0).map(([n,o])=>[n,String(o)])),s=await(this.options.fetch??fetch)(`${this.baseUrl}/v1/learning/read/graders${a}?${r}`,{signal:t,redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,Accept:"application/json"}}),i=await s.json();if(!s.ok)throw new Error(u.object({error:u.string()}).parse(i).error);return i}};import{backup as bc}from"node:sqlite";import{promises as ks}from"node:fs";import na from"node:path";var oo=`
|
|
192
192
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
193
193
|
id TEXT PRIMARY KEY,
|
|
194
194
|
sort_index INTEGER NOT NULL,
|
|
@@ -1309,7 +1309,7 @@ Keep reusable, provider-neutral execution guidance for this Harness here.
|
|
|
1309
1309
|
|
|
1310
1310
|
CREATE INDEX IF NOT EXISTS harness_memory_revisions_workspace_created_idx
|
|
1311
1311
|
ON harness_memory_revisions(workspace_id, created_at DESC);
|
|
1312
|
-
`)}d(go,"createHarnessWorkspaceTables");import{DatabaseSync as kc}from"node:sqlite";function yo(a=process.versions.node){let e=/^(\d+)\.(\d+)\.(\d+)/.exec(a),t=e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3])}:null;if(!t||t.major!==24||t.minor<18)throw new Error(`OpenPond requires Node.js 24.18.0 or newer within the Node 24 release line; received ${a}.`);return t}d(yo,"assertSupportedNodeSqliteRuntime");function Za(a=[]){return a.map(Nc)}d(Za,"normalizeSqliteParameters");function Ro(a){return a.map(e=>hs(e))}d(Ro,"normalizeSqliteRows");function hs(a){return Object.fromEntries(Object.entries(a).map(([e,t])=>[e,Sc(t)]))}d(hs,"normalizeSqliteRow");function Nc(a){if(a==null)return null;if(typeof a=="boolean")return a?1:0;if(typeof a=="string"||typeof a=="number"||typeof a=="bigint"||ArrayBuffer.isView(a))return a;throw new TypeError(`Unsupported SQLite parameter type: ${typeof a}`)}d(Nc,"normalizeSqliteParameter");function Sc(a){return a instanceof Uint8Array&&!Buffer.isBuffer(a)?Buffer.from(a):a}d(Sc,"normalizeSqliteOutput");var vc=1e3,gs=class{static{d(this,"NodeSqliteConnection")}#e;constructor(e){yo(),this.#e=new kc(e,{allowBareNamedParameters:!0,allowUnknownNamedParameters:!1,enableDoubleQuotedStringLiterals:!1,enableForeignKeyConstraints:!0,readBigInts:!1,returnArrays:!1,timeout:vc})}exec(e){this.#e.exec(e)}run(e,t=[]){this.#e.prepare(e).run(...Za(t))}all(e,t=[]){let r=this.#e.prepare(e).all(...Za(t));return Ro(r)}get(e,t=[]){let r=this.#e.prepare(e).get(...Za(t));return r?hs(r):null}close(){this.#e.close()}};function wo(a){return new gs(a)}d(wo,"openNodeSqliteConnection");var Ic=[50,100,200,400,800],ia=class extends Error{static{d(this,"SqliteIntegrityError")}constructor(e){super(e),this.name="SqliteIntegrityError"}};function No(a){if(a instanceof ia)return!0;let e=ko(a);if(e==="SQLITE_CORRUPT"||e==="SQLITE_NOTADB")return!0;let t=vo(a);return t.includes("database disk image is malformed")||t.includes("file is not a database")||t.includes("file is encrypted or is not a database")}d(No,"isConfirmedSqliteCorruption");async function So(a){for(let e=0;;e+=1)try{await a.check();return}catch(t){let r=Ic[e];if(!Oc(t)||r===void 0)throw t;a.onRetry?.({attempt:e+1,retryDelayMs:r,error:t}),await new Promise(s=>setTimeout(s,r))}}d(So,"retrySqliteHealthCheck");function ko(a){return!a||typeof a!="object"||!("code"in a)?null:typeof a.code=="string"?a.code.toUpperCase():null}d(ko,"sqliteErrorCode");function vo(a){return a instanceof Error?a.message.toLowerCase():String(a).toLowerCase()}d(vo,"sqliteErrorMessage");function Oc(a){let e=ko(a);if(e==="SQLITE_BUSY"||e==="SQLITE_LOCKED")return!0;let t=vo(a);return t.includes("database is locked")||t.includes("database is busy")}d(Oc,"isTransientSqliteAvailabilityError");function Qu(a){return JSON.parse(a.payload)}d(Qu,"localAgentScheduleFromRow");function Zu(a){return
|
|
1312
|
+
`)}d(go,"createHarnessWorkspaceTables");import{DatabaseSync as kc}from"node:sqlite";function yo(a=process.versions.node){let e=/^(\d+)\.(\d+)\.(\d+)/.exec(a),t=e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3])}:null;if(!t||t.major!==24||t.minor<18)throw new Error(`OpenPond requires Node.js 24.18.0 or newer within the Node 24 release line; received ${a}.`);return t}d(yo,"assertSupportedNodeSqliteRuntime");function Za(a=[]){return a.map(Nc)}d(Za,"normalizeSqliteParameters");function Ro(a){return a.map(e=>hs(e))}d(Ro,"normalizeSqliteRows");function hs(a){return Object.fromEntries(Object.entries(a).map(([e,t])=>[e,Sc(t)]))}d(hs,"normalizeSqliteRow");function Nc(a){if(a==null)return null;if(typeof a=="boolean")return a?1:0;if(typeof a=="string"||typeof a=="number"||typeof a=="bigint"||ArrayBuffer.isView(a))return a;throw new TypeError(`Unsupported SQLite parameter type: ${typeof a}`)}d(Nc,"normalizeSqliteParameter");function Sc(a){return a instanceof Uint8Array&&!Buffer.isBuffer(a)?Buffer.from(a):a}d(Sc,"normalizeSqliteOutput");var vc=1e3,gs=class{static{d(this,"NodeSqliteConnection")}#e;constructor(e){yo(),this.#e=new kc(e,{allowBareNamedParameters:!0,allowUnknownNamedParameters:!1,enableDoubleQuotedStringLiterals:!1,enableForeignKeyConstraints:!0,readBigInts:!1,returnArrays:!1,timeout:vc})}exec(e){this.#e.exec(e)}run(e,t=[]){this.#e.prepare(e).run(...Za(t))}all(e,t=[]){let r=this.#e.prepare(e).all(...Za(t));return Ro(r)}get(e,t=[]){let r=this.#e.prepare(e).get(...Za(t));return r?hs(r):null}close(){this.#e.close()}};function wo(a){return new gs(a)}d(wo,"openNodeSqliteConnection");var Ic=[50,100,200,400,800],ia=class extends Error{static{d(this,"SqliteIntegrityError")}constructor(e){super(e),this.name="SqliteIntegrityError"}};function No(a){if(a instanceof ia)return!0;let e=ko(a);if(e==="SQLITE_CORRUPT"||e==="SQLITE_NOTADB")return!0;let t=vo(a);return t.includes("database disk image is malformed")||t.includes("file is not a database")||t.includes("file is encrypted or is not a database")}d(No,"isConfirmedSqliteCorruption");async function So(a){for(let e=0;;e+=1)try{await a.check();return}catch(t){let r=Ic[e];if(!Oc(t)||r===void 0)throw t;a.onRetry?.({attempt:e+1,retryDelayMs:r,error:t}),await new Promise(s=>setTimeout(s,r))}}d(So,"retrySqliteHealthCheck");function ko(a){return!a||typeof a!="object"||!("code"in a)?null:typeof a.code=="string"?a.code.toUpperCase():null}d(ko,"sqliteErrorCode");function vo(a){return a instanceof Error?a.message.toLowerCase():String(a).toLowerCase()}d(vo,"sqliteErrorMessage");function Oc(a){let e=ko(a);if(e==="SQLITE_BUSY"||e==="SQLITE_LOCKED")return!0;let t=vo(a);return t.includes("database is locked")||t.includes("database is busy")}d(Oc,"isTransientSqliteAvailabilityError");function Qu(a){return JSON.parse(a.payload)}d(Qu,"localAgentScheduleFromRow");function Zu(a){return Ur.parse({...JSON.parse(a.payload),updatedAt:a.updated_at})}d(Zu,"subagentRunFromRow");function em(a,e){let t=Ur.parse({...a,updatedAt:e});return[t.id,t.parentSessionId,t.parentTurnId,t.childSessionId,t.roleId,t.status,JSON.stringify(t),t.createdAt,e]}d(em,"subagentRunParams");function tm(a){return $i.parse(JSON.parse(a.payload))}d(tm,"subagentMessageFromRow");function am(a){return[a.id,a.fromRunId,a.toRunId,a.toRole,a.kind,JSON.stringify(a),a.createdAt]}d(am,"subagentMessageParams");function rm(a){return[a.id,a.localProjectId,a.scheduleName,a.enabled?1:0,a.nextRunAt,JSON.stringify(a),a.createdAt,a.updatedAt]}d(rm,"localAgentScheduleParams");function sm(a){return JSON.parse(a.payload)}d(sm,"localAgentScheduleRunFromRow");function im(a){return[a.id,a.scheduleId,a.localProjectId,a.scheduleName,a.scheduledFor,a.trigger,a.status,JSON.stringify(a),a.createdAt,a.updatedAt]}d(im,"localAgentScheduleRunParams");function nm(a){return un.parse({id:a.id,requestId:a.request_id,requestOrdinal:a.request_ordinal,sessionId:a.session_id,turnId:a.turn_id,provider:a.provider,model:a.model,route:a.route,source:a.source,requestKind:a.request_kind,visibility:a.visibility,status:a.status,startedAt:a.started_at,completedAt:a.completed_at,durationMs:a.duration_ms,firstTokenMs:a.first_token_ms,promptTokens:a.prompt_tokens,cachedPromptTokens:a.cached_prompt_tokens,uncachedPromptTokens:a.uncached_prompt_tokens,cacheWritePromptTokens:a.cache_write_prompt_tokens,cacheTelemetrySource:a.cache_telemetry_source,completionTokens:a.completion_tokens,totalTokens:a.total_tokens,errorType:a.error_type,errorMessage:a.error_message,attribution:JSON.parse(a.attribution_json)})}d(nm,"modelUsageRecordFromRow");function om(a){return[a.id,a.requestId,a.requestOrdinal,a.sessionId,a.turnId,a.provider,a.model,a.route,a.source,a.requestKind,a.visibility,a.status,a.startedAt,a.completedAt,a.durationMs,a.firstTokenMs,a.promptTokens,a.cachedPromptTokens,a.uncachedPromptTokens,a.cacheWritePromptTokens,a.cacheTelemetrySource,a.completionTokens,a.totalTokens,a.errorType,a.errorMessage,JSON.stringify(a.attribution)]}d(om,"modelUsageRecordParams");function Io(){return new Date().toISOString().replace(/\D/g,"").slice(0,14)}d(Io,"timestampForPath");function dm(a,e){return{...Va(JSON.parse(a)),sequence:e}}d(dm,"runtimeEventWithSequence");function Oo(a){return er({sessionId:a.session_id,eventCount:a.event_count,latestEventSequence:a.latest_event_sequence,latestEventAt:a.latest_event_at,latestTurnId:a.latest_turn_id,latestTurnStatus:a.latest_turn_status,pendingApprovalCount:a.pending_approval_count,updatedAt:a.updated_at})}d(Oo,"threadDetailProjectionFromRow");function er(a){return{sessionId:a.sessionId,eventCount:a.eventCount,latestEventSequence:a.latestEventSequence,latestEventAt:a.latestEventAt,latestTurnId:a.latestTurnId,latestTurnStatus:a.latestTurnStatus,pendingApprovalCount:a.pendingApprovalCount,updatedAt:a.updatedAt}}d(er,"threadDetailProjectionPayload");var Lo=[{version:1,run:d(a=>a.createSchema(),"run")},{version:2,run:d(a=>a.createHotQueryIndexes(),"run")},{version:3,run:d(a=>a.createReadModelTables(),"run")},{version:4,run:d(async()=>{},"run")},{version:5,run:d(async()=>{},"run")},{version:6,run:d(async()=>{},"run")},{version:7,run:d(a=>a.createModelUsageTables(),"run")},{version:8,run:d(a=>a.createLocalAgentScheduleTables(),"run")},{version:9,run:d(a=>a.createSubagentTables(),"run")},{version:10,run:d(async()=>{},"run")},{version:11,run:d(a=>a.createTrainingTables(),"run")},{version:12,run:d(a=>a.createTaskCreationProjectionTables(),"run")},{version:13,run:d(a=>a.createGraderAuditTables(),"run")},{version:14,run:d(a=>a.createTaskAttemptArtifactTables(),"run")},{version:15,run:d(a=>a.createTrainingChatSearchTables(),"run")},{version:16,run:d(a=>a.resetTrainingChatSearchForProgressiveIndexing(),"run")},{version:17,run:d(a=>a.createTaskMinerRunTables(),"run")},{version:19,run:d(a=>a.createCreateImproveRunTables(),"run")},{version:20,run:d(a=>a.createTrainingReceiptAndModelBindingTables(),"run")},{version:21,run:d(a=>a.createTasksetRevisionTables(),"run")},{version:24,run:d(a=>a.resetLegacySubagentTransportState(),"run")},{version:25,run:d(a=>a.resetLegacySubagentRuntimeEvents(),"run")},{version:26,run:d(a=>a.createDatasetImportTables(),"run")},{version:28,run:d(a=>a.createSidebarFileBookmarkTables(),"run")},{version:29,run:d(a=>a.createModelBuildDraftTables(),"run")},{version:30,run:d(a=>a.createModelProjectTables(),"run")},{version:31,run:d(a=>a.createModelLifecycleTables(),"run")},{version:32,run:d(a=>a.createTrainingTables(),"run")},{version:33,run:d(a=>a.retireGoalAndInsightsStorage(),"run")},{version:34,run:d(async()=>{},"run")},{version:35,run:d(a=>a.createWorkEvidenceTables(),"run")},{version:36,run:d(a=>a.createHarnessWorkspaceTables(),"run")},{version:37,run:d(a=>a.createHarnessWorkspaceTables(),"run")},{version:38,run:d(a=>a.createHarnessWorkspaceTables(),"run")},{version:39,run:d(a=>a.createHarnessWorkspaceTables(),"run")},{version:40,run:d(a=>a.createHarnessWorkspaceTables(),"run")},{version:41,run:d(a=>a.createTrainingTables(),"run")},{version:43,run:d(a=>a.createHarnessWorkspaceTables(),"run")},{version:44,run:d(a=>a.createModelUsageTables(),"run")},{version:45,run:d(a=>a.createPreferenceComparisonTables(),"run")},{version:46,run:d(a=>a.createTasksetDraftTables(),"run")},{version:47,run:d(a=>a.createTrainingTables(),"run")},{version:48,run:d(a=>a.createTrainingTables(),"run")},{version:49,run:d(a=>a.consolidateModelProjectTrainingSetup(),"run")},{version:50,run:d(a=>a.repairUnverifiableLearnedPreferenceBindings(),"run")},{version:51,run:d(a=>a.createTrainingTables(),"run")},{version:52,run:d(a=>a.allowModelRunsWithoutVersion(),"run")},{version:53,run:d(a=>a.createTrainingTables(),"run")},{version:54,run:d(a=>a.createTrainingTables(),"run")},{version:55,run:d(a=>a.createTrainingTables(),"run")},{version:56,run:d(a=>a.createChatWorkflowTables(),"run")},{version:57,run:d(a=>a.createLearningTables(),"run")},{version:58,run:d(a=>a.createModelProjectAuthoringTables(),"run")},{version:59,run:d(a=>a.createLearningTables(),"run")},{version:60,run:d(a=>a.createModelProjectAuthoringTables(),"run")},{version:61,run:d(a=>a.createModelProjectAuthoringTables(),"run")},{version:62,run:d(a=>a.createModelProjectAuthoringTables(),"run")},{version:63,run:d(a=>a.createModelProjectAuthoringTables(),"run")},{version:64,run:d(a=>a.createTaskInboxTables(),"run")},{version:65,run:d(a=>a.createTrainingTables(),"run")},{version:66,run:d(a=>a.createTrainingTables(),"run")}];async function Ao(a){await a(`
|
|
1313
1313
|
DELETE FROM subagent_messages;
|
|
1314
1314
|
DELETE FROM subagent_runs;
|
|
1315
1315
|
`)}d(Ao,"resetLegacySubagentTransportState");async function bo(a,e){await a("DELETE FROM events WHERE name LIKE 'subagent.%'",[]),await e()}d(bo,"resetLegacySubagentRuntimeEvents");async function Co(a){await a.exec(`
|
|
@@ -1356,7 +1356,7 @@ Keep reusable, provider-neutral execution guidance for this Harness here.
|
|
|
1356
1356
|
DROP INDEX IF EXISTS model_run_drafts_profile_updated_idx;
|
|
1357
1357
|
DROP INDEX IF EXISTS model_run_drafts_model_idx;
|
|
1358
1358
|
DROP TABLE IF EXISTS model_run_drafts;
|
|
1359
|
-
`)}d(xo,"consolidateModelProjectTrainingSetup");function tr(a){if(Array.isArray(a)){let r=!1,s=a.map(i=>{let n=tr(i);return r||=n.changed,n.value});return{value:r?s:a,changed:r}}if(!Rs(a))return{value:a,changed:!1};let e=!1,t={};for(let[r,s]of Object.entries(a)){if(r==="learnedPreference"&&s!==null){let n=Rs(s)?Object.fromEntries(Object.entries(s).filter(([c])=>c!=="qualificationKind")):s,o=
|
|
1359
|
+
`)}d(xo,"consolidateModelProjectTrainingSetup");function tr(a){if(Array.isArray(a)){let r=!1,s=a.map(i=>{let n=tr(i);return r||=n.changed,n.value});return{value:r?s:a,changed:r}}if(!Rs(a))return{value:a,changed:!1};let e=!1,t={};for(let[r,s]of Object.entries(a)){if(r==="learnedPreference"&&s!==null){let n=Rs(s)?Object.fromEntries(Object.entries(s).filter(([c])=>c!=="qualificationKind")):s,o=hn.safeParse(n);t[r]=o.success?o.data:null,e||=!o.success||n!==s;continue}let i=tr(s);t[r]=i.value,e||=i.changed}return{value:e?t:a,changed:e}}d(tr,"sanitizeUnverifiableLearnedPreferenceBindings");async function Xo(a){for(let e of["model_projects","model_runs","training_plans"]){if((await a.all("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",[e])).length===0)continue;let r=await a.all(`SELECT id, payload FROM ${e} WHERE payload LIKE '%learnedPreference%'`);for(let s of r){let i=tr(JSON.parse(s.payload));i.changed&&await a.run(`UPDATE ${e} SET payload = ? WHERE id = ?`,[JSON.stringify(i.value),s.id])}}}d(Xo,"repairUnverifiableLearnedPreferenceBindings");function Rs(a){return!!(a&&typeof a=="object"&&!Array.isArray(a))}d(Rs,"isRecord");async function Mo(a){await a.exec(`
|
|
1360
1360
|
CREATE TABLE IF NOT EXISTS model_versions (
|
|
1361
1361
|
id TEXT PRIMARY KEY,
|
|
1362
1362
|
model_id TEXT NOT NULL,
|
|
@@ -1657,7 +1657,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
|
|
|
1657
1657
|
PRAGMA journal_mode = WAL;
|
|
1658
1658
|
PRAGMA foreign_keys = ON;
|
|
1659
1659
|
PRAGMA synchronous = FULL;
|
|
1660
|
-
`)}async assertHealthyDatabase(){let t=(await this.all("PRAGMA quick_check")).map(r=>r.quick_check).filter(r=>r!=="ok");if(t.length>0)throw new ia(`SQLite quick_check failed: ${t.join("; ")}`)}async assertHealthyDatabaseWithRetry(){await So({check:d(()=>this.assertHealthyDatabase(),"check"),onRetry:d(({attempt:e,retryDelayMs:t,error:r})=>{this.logger?.warn("sqlite health check temporarily unavailable; retrying",{storePath:this.storePath,attempt:e,retryDelayMs:t,error:r})},"onRetry")})}async runMigrations(e,t){let r=await this.userVersion();if(r>66)throw new Error(`SQLite schema version ${r} is newer than this app supports (${66})`);if(r!==66){t&&await this.backupDatabaseFiles(e,`before-v${r+1}`);for(let s of Lo.filter(i=>i.version>r)){await this.exec("BEGIN IMMEDIATE");try{await s.run(this),await this.exec(`PRAGMA user_version = ${s.version}`),await this.exec("COMMIT"),this.logger?.info("sqlite migration completed",{version:s.version,storePath:this.storePath})}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),this.logger?.error("sqlite migration failed",{version:s.version,error:i}),i}}}}async userVersion(){return(await this.get("PRAGMA user_version",[]))?.user_version??0}async openDatabaseWithRecovery(){try{this.db=await this.openDatabaseWithRetry(),await this.configureDatabase(),await this.assertHealthyDatabaseWithRetry()}catch(e){throw await this.closeDatabaseHandle(),No(e)?new
|
|
1660
|
+
`)}async assertHealthyDatabase(){let t=(await this.all("PRAGMA quick_check")).map(r=>r.quick_check).filter(r=>r!=="ok");if(t.length>0)throw new ia(`SQLite quick_check failed: ${t.join("; ")}`)}async assertHealthyDatabaseWithRetry(){await So({check:d(()=>this.assertHealthyDatabase(),"check"),onRetry:d(({attempt:e,retryDelayMs:t,error:r})=>{this.logger?.warn("sqlite health check temporarily unavailable; retrying",{storePath:this.storePath,attempt:e,retryDelayMs:t,error:r})},"onRetry")})}async runMigrations(e,t){let r=await this.userVersion();if(r>66)throw new Error(`SQLite schema version ${r} is newer than this app supports (${66})`);if(r!==66){t&&await this.backupDatabaseFiles(e,`before-v${r+1}`);for(let s of Lo.filter(i=>i.version>r)){await this.exec("BEGIN IMMEDIATE");try{await s.run(this),await this.exec(`PRAGMA user_version = ${s.version}`),await this.exec("COMMIT"),this.logger?.info("sqlite migration completed",{version:s.version,storePath:this.storePath})}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),this.logger?.error("sqlite migration failed",{version:s.version,error:i}),i}}}}async userVersion(){return(await this.get("PRAGMA user_version",[]))?.user_version??0}async openDatabaseWithRecovery(){try{this.db=await this.openDatabaseWithRetry(),await this.configureDatabase(),await this.assertHealthyDatabaseWithRetry()}catch(e){throw await this.closeDatabaseHandle(),No(e)?new Wi({code:"DATABASE_RECOVERY_REQUIRED",path:this.storePath,message:"The authoritative database failed its integrity check.",action:"Restore a verified backup into a separate home. Existing history has been preserved."},{cause:e}):e}}async openDatabaseWithRetry(){let e=null;for(let t of qo){t>0&&await new Promise(r=>setTimeout(r,t));try{return await this.openDatabase(this.storePath)}catch(r){e=r}}throw this.logger?.error("sqlite open failed; preserving database files",{storePath:this.storePath,attempts:qo.length,error:e}),e}async backupDatabaseFiles(e,t){let r=na.join(e,"backups",`state-${Io()}-${t}`);await ks.mkdir(r,{recursive:!0,mode:448});let s=zi(this.storePath,!0);try{await bc(s,na.join(r,"state.sqlite"))}finally{s.close()}this.logger?.info("sqlite backup created",{backupDir:r,copied:1})}databaseFiles(){return[this.storePath,`${this.storePath}-wal`,`${this.storePath}-shm`]}async fileExists(e){try{return await ks.access(e),!0}catch{return!1}}async createSchema(){await this.exec(oo)}async createWorkEvidenceTables(){await this.exec(`
|
|
1661
1661
|
CREATE TABLE IF NOT EXISTS work_evidence_receipts (
|
|
1662
1662
|
id TEXT PRIMARY KEY,
|
|
1663
1663
|
source_revision_hash TEXT NOT NULL UNIQUE,
|
|
@@ -1981,7 +1981,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
|
|
|
1981
1981
|
DELETE FROM projection_approvals;
|
|
1982
1982
|
DELETE FROM projection_thread_details;
|
|
1983
1983
|
DELETE FROM projection_session_shells;
|
|
1984
|
-
`);let e=await this.all("SELECT sort_index, payload FROM sessions ORDER BY sort_index ASC"),t=new Set;for(let n of e){let o=ta(JSON.parse(n.payload));t.add(o.id),await this.upsertSessionShellProjection(o,n.sort_index)}let r=await this.all("SELECT sort_index, payload FROM approvals ORDER BY sort_index ASC");for(let n of r){let o=JSON.parse(n.payload);t.add(o.sessionId),await this.upsertApprovalProjection(o,n.sort_index)}let s=await this.all("SELECT DISTINCT session_id FROM turns",[]),i=await this.all("SELECT DISTINCT session_id FROM events WHERE session_id IS NOT NULL",[]);for(let n of s)t.add(n.session_id);for(let n of i)n.session_id&&t.add(n.session_id);for(let n of t)await this.rebuildLatestTurnProjectionForSession(n),await this.rebuildThreadDetailProjectionForSession(n)}async persist(){await Gn(this.data,{exec:d(e=>this.exec(e),"exec"),run:d((e,t)=>this.run(e,t),"run")})}async close(){await this.ready,await this.writeQueue,await this.closeDatabaseHandle()}async closeDatabaseHandle(){let e=this.db;this.db=null,e&&e.close()}async openDatabase(e){return wo(e)}async exec(e){this.database.exec(e)}async run(e,t){this.database.run(e,t)}async all(e,t=[]){return this.database.all(e,t)}async get(e,t){return this.database.get(e,t)}get database(){if(!this.db)throw new Error("SQLite store is not ready");return this.db}};var rr=class extends ar{static{d(this,"SqliteLearningCredentialStore")}async credentialTransaction(e){await this.ready;let t=this.writeQueue.then(()=>{let r=this.database;r.exec("BEGIN IMMEDIATE");try{let s=e(r);return r.exec("COMMIT"),s}catch(s){throw r.exec("ROLLBACK"),s}});return this.writeQueue=t.then(()=>{},()=>{}),t}async createLearningSourceCredential(e,t,r){let s=ue.parse(e);return this.credentialTransaction(i=>{let n=i.get("SELECT payload, request_hash FROM learning_source_credentials WHERE id = ?",[s.id]);if(n){if(n.request_hash!==r)throw new
|
|
1984
|
+
`);let e=await this.all("SELECT sort_index, payload FROM sessions ORDER BY sort_index ASC"),t=new Set;for(let n of e){let o=ta(JSON.parse(n.payload));t.add(o.id),await this.upsertSessionShellProjection(o,n.sort_index)}let r=await this.all("SELECT sort_index, payload FROM approvals ORDER BY sort_index ASC");for(let n of r){let o=JSON.parse(n.payload);t.add(o.sessionId),await this.upsertApprovalProjection(o,n.sort_index)}let s=await this.all("SELECT DISTINCT session_id FROM turns",[]),i=await this.all("SELECT DISTINCT session_id FROM events WHERE session_id IS NOT NULL",[]);for(let n of s)t.add(n.session_id);for(let n of i)n.session_id&&t.add(n.session_id);for(let n of t)await this.rebuildLatestTurnProjectionForSession(n),await this.rebuildThreadDetailProjectionForSession(n)}async persist(){await Gn(this.data,{exec:d(e=>this.exec(e),"exec"),run:d((e,t)=>this.run(e,t),"run")})}async close(){await this.ready,await this.writeQueue,await this.closeDatabaseHandle()}async closeDatabaseHandle(){let e=this.db;this.db=null,e&&e.close()}async openDatabase(e){return wo(e)}async exec(e){this.database.exec(e)}async run(e,t){this.database.run(e,t)}async all(e,t=[]){return this.database.all(e,t)}async get(e,t){return this.database.get(e,t)}get database(){if(!this.db)throw new Error("SQLite store is not ready");return this.db}};var rr=class extends ar{static{d(this,"SqliteLearningCredentialStore")}async credentialTransaction(e){await this.ready;let t=this.writeQueue.then(()=>{let r=this.database;r.exec("BEGIN IMMEDIATE");try{let s=e(r);return r.exec("COMMIT"),s}catch(s){throw r.exec("ROLLBACK"),s}});return this.writeQueue=t.then(()=>{},()=>{}),t}async createLearningSourceCredential(e,t,r){let s=ue.parse(e);return this.credentialTransaction(i=>{let n=i.get("SELECT payload, request_hash FROM learning_source_credentials WHERE id = ?",[s.id]);if(n){if(n.request_hash!==r)throw new We("learning_credential_operation_conflict",409);return ue.parse(JSON.parse(n.payload))}if(i.get("SELECT id FROM learning_source_credentials WHERE key_hash = ?",[t]))throw new We("learning_credential_secret_reused",409);return i.run("INSERT INTO learning_source_credentials (id, scope, source_id, key_hash, request_hash, payload) VALUES (?, ?, ?, ?, ?, ?)",[s.id,s.scope,s.sourceId,t,r,JSON.stringify(s)]),s})}async findLearningSourceCredential(e){await this.ready,await this.writeQueue;let t=this.database.get("SELECT payload FROM learning_source_credentials WHERE key_hash = ?",[e]);return t?ue.parse(JSON.parse(t.payload)):null}async listLearningSourceCredentials(e,t,r,s){if(!Number.isInteger(r)||r<1||r>100)throw new Error("learning_credential_page_invalid");await this.ready,await this.writeQueue;let i=this.database.all("SELECT payload FROM learning_source_credentials WHERE scope = ? AND source_id = ? AND id > ? ORDER BY id LIMIT ?",[e,t,s??"",r+1]),n=i.slice(0,r).map(o=>ue.parse(JSON.parse(o.payload)));return{items:n,nextCursor:i.length>r?n.at(-1).id:null}}async revokeLearningSourceCredential(e,t,r,s){return this.credentialTransaction(i=>{let n=i.get("SELECT payload FROM learning_source_credentials WHERE scope = ? AND source_id = ? AND id = ?",[e,t,r]);if(!n)return null;let o=ue.parse(JSON.parse(n.payload));if(o.revokedAt!==null)return o;let c=ue.parse({...o,revokedAt:s});return i.run("UPDATE learning_source_credentials SET payload = ? WHERE scope = ? AND source_id = ? AND id = ?",[JSON.stringify(c),e,t,r]),c})}};var sr=class extends rr{static{d(this,"SqliteLearningStore")}async listLearningScopes(){return await this.ready,await this.writeQueue,(await this.all("SELECT DISTINCT scope FROM learning_resources ORDER BY scope",[])).map(e=>e.scope)}learningRepository(){return{transaction:d(async(e,t)=>{if(!e.trim())throw new Error("learning_scope_required");await this.ready;let r=this.writeQueue.then(async()=>{let s=this.db;if(!s)throw new Error("learning_store_closed");s.exec("BEGIN IMMEDIATE");let i=!0,n=vs(s,e,()=>{if(!i)throw new Error("learning_transaction_closed")});try{let o=await t(n);return s.exec("COMMIT"),o}catch(o){throw s.exec("ROLLBACK"),o}finally{i=!1}});return this.writeQueue=r.then(()=>{},()=>{}),r},"transaction")}}};function vs(a,e,t){let r=d((s,i)=>ae[s].parse(JSON.parse(i.payload)),"parse");return{async get(s,i,n){t();let o=n===void 0?a.get(`SELECT history.payload FROM learning_resources current
|
|
1985
1985
|
JOIN learning_revisions history USING (scope, kind, id, revision)
|
|
1986
1986
|
WHERE current.scope = ? AND current.kind = ? AND current.id = ?`,[e,s,i]):a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,s,i,n]);return o?r(s,o):null},async put(s,i,n,o){t(),Cc(a,e,s,i,n,o)},async list(s,i){t();let n=Math.max(1,Math.min(100,Math.trunc(i.limit)));if(!Number.isFinite(n))throw new Error("learning_query_limit_invalid");let o=["current.scope = ?","current.kind = ?"],c=[e,s];if(i.reviewState!==void 0){if(s!=="evidence")throw new Error("learning_review_filter_requires_evidence");let m=`EXISTS (SELECT 1 FROM learning_resources decision
|
|
1987
1987
|
JOIN learning_revisions decision_history USING (scope, kind, id, revision)
|
|
@@ -1989,7 +1989,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
|
|
|
1989
1989
|
AND decision.parent_id = current.id AND decision.status IN ('approved', 'rejected')
|
|
1990
1990
|
AND json_extract(decision_history.payload, '$.evidence.contentHash') = json_extract(history.payload, '$.contentHash'))`;o.push(i.reviewState==="reviewed"?m:`NOT ${m}`)}for(let[m,T]of[["parent_id",i.parentId],["status",i.status]])T!==void 0&&(o.push(`current.${m} = ?`),c.push(T));i.afterId!==void 0&&(o.push("current.id > ?"),c.push(i.afterId));let p=a.all(`SELECT history.payload FROM learning_resources current
|
|
1991
1991
|
JOIN learning_revisions history USING (scope, kind, id, revision)
|
|
1992
|
-
WHERE ${o.join(" AND ")} ORDER BY current.id LIMIT ?`,[...c,n+1]),l=p.slice(0,n).map(m=>r(s,m));return{items:l,nextCursor:p.length>n?l.at(-1).id:null}},async operation(s){t();let i=a.get("SELECT payload FROM learning_operations WHERE scope = ? AND id = ?",[e,s]);return i?JSON.parse(i.payload):null},async saveOperation(s,i){t(),a.run("INSERT INTO learning_operations (scope, id, payload) VALUES (?, ?, ?)",[e,s,JSON.stringify(i)])},async familySplit(s,i,n){return t(),a.get("SELECT split FROM learning_family_splits WHERE scope = ? AND namespace = ? AND kind = ? AND key = ?",[e,s,i,n])?.split??null},async reserveFamilySplit(s,i,n,o){t();let c=a.get("SELECT split FROM learning_family_splits WHERE scope = ? AND namespace = ? AND kind = ? AND key = ?",[e,s,i,n]);if(c&&c.split!==o)throw new Error("task_family_split_conflict");c||a.run("INSERT INTO learning_family_splits (scope, namespace, kind, key, split) VALUES (?, ?, ?, ?, ?)",[e,s,i,n,o])}}}d(vs,"createLearningTransaction");function Cc(a,e,t,r,s,i){let n=ae[t].parse(r),o=a.get("SELECT revision FROM learning_resources WHERE scope = ? AND kind = ? AND id = ?",[e,t,n.id]);if((o?.revision??0)!==s)throw new
|
|
1992
|
+
WHERE ${o.join(" AND ")} ORDER BY current.id LIMIT ?`,[...c,n+1]),l=p.slice(0,n).map(m=>r(s,m));return{items:l,nextCursor:p.length>n?l.at(-1).id:null}},async operation(s){t();let i=a.get("SELECT payload FROM learning_operations WHERE scope = ? AND id = ?",[e,s]);return i?JSON.parse(i.payload):null},async saveOperation(s,i){t(),a.run("INSERT INTO learning_operations (scope, id, payload) VALUES (?, ?, ?)",[e,s,JSON.stringify(i)])},async familySplit(s,i,n){return t(),a.get("SELECT split FROM learning_family_splits WHERE scope = ? AND namespace = ? AND kind = ? AND key = ?",[e,s,i,n])?.split??null},async reserveFamilySplit(s,i,n,o){t();let c=a.get("SELECT split FROM learning_family_splits WHERE scope = ? AND namespace = ? AND kind = ? AND key = ?",[e,s,i,n]);if(c&&c.split!==o)throw new Error("task_family_split_conflict");c||a.run("INSERT INTO learning_family_splits (scope, namespace, kind, key, split) VALUES (?, ?, ?, ?, ?)",[e,s,i,n,o])}}}d(vs,"createLearningTransaction");function Cc(a,e,t,r,s,i){let n=ae[t].parse(r),o=a.get("SELECT revision FROM learning_resources WHERE scope = ? AND kind = ? AND id = ?",[e,t,n.id]);if((o?.revision??0)!==s)throw new Ni(t,n.id,s,o?.revision??0);if(n.revision!==s+1)throw new Error("learning_resource_revision_invalid");a.run("INSERT INTO learning_revisions (scope, kind, id, revision, payload) VALUES (?, ?, ?, ?, ?)",[e,t,n.id,n.revision,JSON.stringify(n)]),a.run(`INSERT INTO learning_resources (scope, kind, id, revision, parent_id, status) VALUES (?, ?, ?, ?, ?, ?)
|
|
1993
1993
|
ON CONFLICT (scope, kind, id) DO UPDATE SET revision = excluded.revision, parent_id = excluded.parent_id, status = excluded.status`,[e,t,n.id,n.revision,i?.parentId??null,i?.status??null])}d(Cc,"putLearningResourceInTransaction");var ir=class extends sr{static{d(this,"SqliteTrainingModelStore")}async saveModelCurrencySnapshot(e){let t=gt.parse(e),r=await this.getModelCurrencySnapshot(t.id);if(r){if(r.contentHash===t.contentHash&&JSON.stringify(r)===JSON.stringify(t))return r;throw new Error("An immutable Model Currency Snapshot cannot be replaced.")}return await this.upsertPayload(`INSERT INTO model_currency_snapshots
|
|
1994
1994
|
(id, series_id, entry_id, evidence_state, content_hash, payload, created_at)
|
|
1995
1995
|
VALUES (?, ?, ?, ?, ?, ?, ?)`,[t.id,t.seriesId,t.entryId,t.evidenceState,t.contentHash,JSON.stringify(t),t.projectedAt]),t}async getModelCurrencySnapshot(e){return this.getParsedPayload("SELECT payload FROM model_currency_snapshots WHERE id = ?",[e],gt.parse)}async listModelCurrencySnapshots(e={}){return e.entryId?this.listParsedPayloads("SELECT payload FROM model_currency_snapshots WHERE entry_id = ? ORDER BY created_at DESC",[e.entryId],gt.parse):e.seriesId?this.listParsedPayloads("SELECT payload FROM model_currency_snapshots WHERE series_id = ? ORDER BY created_at DESC",[e.seriesId],gt.parse):this.listParsedPayloads("SELECT payload FROM model_currency_snapshots ORDER BY created_at DESC",[],gt.parse)}async saveModelComparisonSeries(e){let t=xe.parse(e),r=await this.getModelComparisonSeries(t.id);if(r&&(r.profileId!==t.profileId||r.modelProjectId!==t.modelProjectId||r.createdAt!==t.createdAt))throw new Error("A Model Comparison Series cannot change its immutable ownership.");if(r&&t.revision!==r.revision+1){if(JSON.stringify(r)===JSON.stringify(t))return r;throw new Error("A Model Comparison Series update requires the next revision.")}if(r?.scheduleSealedAt&&!Wo(r,t))throw new Error("A sealed Model Comparison Series definition is immutable.");return await this.upsertPayload(`INSERT INTO model_comparison_series
|
|
@@ -2086,7 +2086,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
|
|
|
2086
2086
|
updated_at
|
|
2087
2087
|
FROM tasksets
|
|
2088
2088
|
WHERE profile_id = ?
|
|
2089
|
-
ORDER BY updated_at DESC`,[e])).map(r=>({tasksetId:r.taskset_id,tasksetRevision:r.taskset_revision,artifactId:r.artifact_id,name:r.name,status:r.status,storageKind:r.storage_kind,rowCount:r.row_count,splitCounts:{train:r.train_count,validation:r.validation_count,test:r.test_count,frozen_eval:r.frozen_eval_count},createdAt:r.created_at,updatedAt:r.updated_at}))}async listExternalDatasetSources(e){return await this.ready,await this.writeQueue,(await this.all("SELECT payload FROM training_sources WHERE profile_id = ? AND source_kind <> 'conversation' ORDER BY updated_at DESC",[e])).map(r=>
|
|
2089
|
+
ORDER BY updated_at DESC`,[e])).map(r=>({tasksetId:r.taskset_id,tasksetRevision:r.taskset_revision,artifactId:r.artifact_id,name:r.name,status:r.status,storageKind:r.storage_kind,rowCount:r.row_count,splitCounts:{train:r.train_count,validation:r.validation_count,test:r.test_count,frozen_eval:r.frozen_eval_count},createdAt:r.created_at,updatedAt:r.updated_at}))}async listExternalDatasetSources(e){return await this.ready,await this.writeQueue,(await this.all("SELECT payload FROM training_sources WHERE profile_id = ? AND source_kind <> 'conversation' ORDER BY updated_at DESC",[e])).map(r=>Ma.parse(JSON.parse(r.payload)))}async getExternalDatasetSource(e){await this.ready,await this.writeQueue;let t=await this.get("SELECT payload FROM training_sources WHERE id = ? AND source_kind <> 'conversation'",[e]);return t?Ma.parse(JSON.parse(t.payload)):null}async upsertExternalDatasetSource(e){let t=Ma.parse(e);await this.ready;let r=ne(),s=t.kind==="huggingface"?t.repositoryId:null,i=t.kind==="huggingface"?t.revision:null,n=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
|
|
2090
2090
|
id, profile_id, source_kind, session_id, source_hash,
|
|
2091
2091
|
repository_id, revision, payload, created_at, updated_at
|
|
2092
2092
|
)
|
|
@@ -2112,7 +2112,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
|
|
|
2112
2112
|
revision = excluded.revision,
|
|
2113
2113
|
taskset_id = excluded.taskset_id,
|
|
2114
2114
|
payload = excluded.payload,
|
|
2115
|
-
updated_at = excluded.updated_at`,[t.id,t.profileId,t.sourceKind,t.status,r,s,t.tasksetId,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async listDatasetArtifactRegistryEntries(e){return this.listParsedPayloads("SELECT payload FROM dataset_artifacts WHERE profile_id = ? ORDER BY updated_at DESC",[e],
|
|
2115
|
+
updated_at = excluded.updated_at`,[t.id,t.profileId,t.sourceKind,t.status,r,s,t.tasksetId,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async listDatasetArtifactRegistryEntries(e){return this.listParsedPayloads("SELECT payload FROM dataset_artifacts WHERE profile_id = ? ORDER BY updated_at DESC",[e],Ht.parse)}async getDatasetArtifactRegistryEntry(e){return this.getParsedPayload("SELECT payload FROM dataset_artifacts WHERE id = ?",[e],Ht.parse)}async getDatasetArtifactForTaskset(e,t){let r=t?[e,t]:[e],s=t?"SELECT payload FROM dataset_artifacts WHERE taskset_id = ? AND taskset_revision = ?":"SELECT payload FROM dataset_artifacts WHERE taskset_id = ? ORDER BY taskset_revision DESC LIMIT 1";return this.getParsedPayload(s,r,Ht.parse)}async upsertDatasetArtifactRegistryEntry(e){let t=Ht.parse(e),r=t.manifest;return await this.upsertPayload(`INSERT INTO dataset_artifacts (
|
|
2116
2116
|
id, profile_id, taskset_id, taskset_revision, content_hash,
|
|
2117
2117
|
format, row_count, storage_root, payload, created_at, updated_at
|
|
2118
2118
|
)
|
|
@@ -2126,23 +2126,23 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
|
|
|
2126
2126
|
row_count = excluded.row_count,
|
|
2127
2127
|
storage_root = excluded.storage_root,
|
|
2128
2128
|
payload = excluded.payload,
|
|
2129
|
-
updated_at = excluded.updated_at`,[r.id,t.profileId,r.tasksetId,r.tasksetRevision,r.contentHash,r.format,r.rowCount,t.storageRoot,JSON.stringify(t),t.createdAt,t.updatedAt]),t}};var dr=class extends or{static{d(this,"SqliteEvaluationResultStore")}async saveProfileEvaluationGrade(e){let t=Xr.parse(e);ye(t,"Profile evaluation grade");let r=await this.getProfileEvaluationGrade(t.contentHash);return r||(await this.upsertPayload("INSERT INTO profile_evaluation_grades (content_hash, payload) VALUES (?, ?) ON CONFLICT(content_hash) DO NOTHING",[t.contentHash,JSON.stringify(t)]),t)}async getProfileEvaluationGrade(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_grades WHERE content_hash = ?",[e],Xr.parse)}async saveProfileEvaluationReceipt(e){let t=
|
|
2129
|
+
updated_at = excluded.updated_at`,[r.id,t.profileId,r.tasksetId,r.tasksetRevision,r.contentHash,r.format,r.rowCount,t.storageRoot,JSON.stringify(t),t.createdAt,t.updatedAt]),t}};var dr=class extends or{static{d(this,"SqliteEvaluationResultStore")}async saveProfileEvaluationGrade(e){let t=Xr.parse(e);ye(t,"Profile evaluation grade");let r=await this.getProfileEvaluationGrade(t.contentHash);return r||(await this.upsertPayload("INSERT INTO profile_evaluation_grades (content_hash, payload) VALUES (?, ?) ON CONFLICT(content_hash) DO NOTHING",[t.contentHash,JSON.stringify(t)]),t)}async getProfileEvaluationGrade(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_grades WHERE content_hash = ?",[e],Xr.parse)}async saveProfileEvaluationReceipt(e){let t=Mt.parse(e);yi(t);let r=await this.getProfileEvaluationReceipt(t.id);if(r){if(r.contentHash!==t.contentHash)throw new Error(`Profile evaluation receipt ${t.id} is immutable.`);return r}return await this.upsertPayload("INSERT INTO profile_evaluation_receipts (id, run_id, payload) VALUES (?, ?, ?)",[t.id,t.runManifest.id,JSON.stringify(t)]),t}async getProfileEvaluationReceipt(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_receipts WHERE id = ?",[e],Mt.parse)}async saveProfileEvaluationRun(e){let t=Gt.parse(e);ye(t,"Profile evaluation run"),ye(t.manifest,"Profile evaluation run manifest"),pi(t.metric);let r=t.manifest.profileEvaluation;if(!r||r.profileId!==t.profileRef.profileId||t.metric.runManifest.id!==t.manifest.id||t.metric.runManifest.contentHash!==t.manifest.contentHash||h(t.receiptRefs)!==h(t.metric.receiptRefs))throw new Error("Profile evaluation run differs from its manifest or metric receipts.");if(t.receiptRefs.length!==t.manifest.population.length||t.gradeRefs.length!==t.receiptRefs.length)throw new Error("Profile evaluation run has an incomplete receipt or grade population.");for(let[i,n]of t.manifest.population.entries()){let o=t.receiptRefs[i],c=await this.getProfileEvaluationReceipt(o.id);if(!c||c.contentHash!==o.contentHash||c.runManifest.id!==t.manifest.id||c.runManifest.contentHash!==t.manifest.contentHash||c.id!==n.receiptId||c.taskId!==n.taskId||c.seed!==n.seed)throw new Error("Profile evaluation run references a missing or mismatched receipt.");let p=t.gradeRefs[i],l=await this.getProfileEvaluationGrade(p.contentHash);if(!l||l.contentHash!==p.contentHash||!c.graderEvidenceRefs.some(m=>m.id===p.id&&m.contentHash===p.contentHash))throw new Error("Profile evaluation run references a missing or mismatched grade.")}let s=await this.getProfileEvaluationRun(t.manifest.id);if(s){if(s.contentHash!==t.contentHash)throw new Error(`Profile evaluation run ${t.manifest.id} is immutable.`);return s}return await this.upsertPayload("INSERT INTO profile_evaluation_runs (id, profile_key, taskset_id, payload, created_at) VALUES (?, ?, ?, ?, ?)",[t.manifest.id,h(t.profileRef),t.manifest.tasksetRelease.id,JSON.stringify(t),t.completedAt]),t}async getProfileEvaluationRun(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_runs WHERE id = ?",[e],Gt.parse)}async listProfileEvaluationRuns(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_runs WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[h(Tt.parse(e))],Gt.parse)}async saveProfileEvaluationComparison(e,t){let r=Tt.parse(e),s=ba.parse(t);ye(s,"Profile evaluation comparison");let i=[];for(let o of s.members){let c=await this.getProfileEvaluationRun(o.runManifest.id);if(!c||h(c.profileRef)!==h(r)||c.manifest.contentHash!==o.runManifest.contentHash||c.metric.contentHash!==o.metricResultHash)throw new Error("Profile evaluation comparison references a missing or mismatched run.");i.push({manifest:c.manifest,result:c.metric})}if(ji({id:s.id,members:i,createdAt:s.createdAt}).contentHash!==s.contentHash)throw new Error("Profile evaluation comparison differs from retained run evidence.");let n=await this.getProfileEvaluationComparison(s.id);if(n){if(n.contentHash!==s.contentHash)throw new Error(`Profile evaluation comparison ${s.id} is immutable.`);return n}return await this.upsertPayload("INSERT INTO profile_evaluation_comparisons (id, profile_key, payload, created_at) VALUES (?, ?, ?, ?)",[s.id,h(r),JSON.stringify(s),s.createdAt]),s}async getProfileEvaluationComparison(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_comparisons WHERE id = ?",[e],ba.parse)}async listProfileEvaluationComparisons(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_comparisons WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[h(Tt.parse(e))],ba.parse)}async saveProfileEvaluationSuiteRun(e,t,r){let s=Tt.parse(e),i=Ca.parse(r);ye(i,"Profile evaluation suite run");let n=[];for(let p of i.members){let l=await this.getProfileEvaluationRun(p.runManifest.id);if(!l||h(l.profileRef)!==h(s)||l.manifest.contentHash!==p.runManifest.contentHash||l.contentHash!==p.runHash||l.passed!==p.passed||l.metric.value!==p.score)throw new Error("Profile evaluation suite references a missing or mismatched run.");n.push({definitionId:p.definitionId,manifest:l.manifest,runHash:l.contentHash,passed:l.passed,score:l.metric.value})}if(Bi({id:i.id,suiteId:i.suiteId,catalog:t,members:n,createdAt:i.createdAt,completedAt:i.completedAt}).contentHash!==i.contentHash)throw new Error("Profile evaluation suite differs from retained run evidence.");let c=await this.getProfileEvaluationSuiteRun(i.id);if(c){if(c.contentHash!==i.contentHash)throw new Error(`Profile evaluation suite run ${i.id} is immutable.`);return c}return await this.upsertPayload("INSERT INTO profile_evaluation_suite_runs (id, profile_key, payload, created_at) VALUES (?, ?, ?, ?)",[i.id,h(s),JSON.stringify(i),i.createdAt]),i}async getProfileEvaluationSuiteRun(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_suite_runs WHERE id = ?",[e],Ca.parse)}async listProfileEvaluationSuiteRuns(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_suite_runs WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[h(Tt.parse(e))],Ca.parse)}async saveBenchmarkRun(e){let t=$a.parse(e.run);return ye(t,"Benchmark run"),await this.upsertPayload(`INSERT INTO benchmark_runs (id, taskset_id, phase, payload, created_at)
|
|
2130
2130
|
VALUES (?, ?, ?, ?, ?)
|
|
2131
2131
|
ON CONFLICT(id) DO NOTHING`,[t.id,e.tasksetId,t.phase,JSON.stringify(t),t.createdAt]),t}async listBenchmarkRuns(e){return this.listParsedPayloads("SELECT payload FROM benchmark_runs WHERE taskset_id = ? ORDER BY created_at DESC, id ASC",[e],$a.parse)}async saveBenchmarkComparison(e){let t=Ka.parse(e.comparison);return ye(t,"Benchmark comparison"),await this.upsertPayload(`INSERT INTO benchmark_comparisons (id, taskset_id, payload, created_at)
|
|
2132
2132
|
VALUES (?, ?, ?, ?)
|
|
2133
|
-
ON CONFLICT(id) DO NOTHING`,[t.id,e.tasksetId,JSON.stringify(t),t.createdAt]),t}async listBenchmarkComparisons(e){return this.listParsedPayloads("SELECT payload FROM benchmark_comparisons WHERE taskset_id = ? ORDER BY created_at DESC, id ASC",[e],Ka.parse)}async saveEvaluationResult(e){let t=
|
|
2134
|
-
VALUES (?, ?, ?, ?, ?)`,[t.id,e.tasksetId,e.kind,JSON.stringify(t),e.createdAt]),t}async getEvaluationResult(e){return this.getParsedPayload("SELECT payload FROM evaluation_results WHERE id = ?",[e],
|
|
2133
|
+
ON CONFLICT(id) DO NOTHING`,[t.id,e.tasksetId,JSON.stringify(t),t.createdAt]),t}async listBenchmarkComparisons(e){return this.listParsedPayloads("SELECT payload FROM benchmark_comparisons WHERE taskset_id = ? ORDER BY created_at DESC, id ASC",[e],Ka.parse)}async saveEvaluationResult(e){let t=La.parse(e.result);if(ye(t,"Evaluation result"),t.metadata.sourceTasksetId!==e.tasksetId)throw new Error("Evaluation result does not match the supplied Taskset identity.");let r=await this.getEvaluationResult(t.id);if(r){if(r.contentHash!==t.contentHash)throw new Error(`Evaluation result ${t.id} is immutable and already has another content hash.`);return r}return await this.upsertPayload(`INSERT INTO evaluation_results (id, taskset_id, kind, payload, created_at)
|
|
2134
|
+
VALUES (?, ?, ?, ?, ?)`,[t.id,e.tasksetId,e.kind,JSON.stringify(t),e.createdAt]),t}async getEvaluationResult(e){return this.getParsedPayload("SELECT payload FROM evaluation_results WHERE id = ?",[e],La.parse)}async listEvaluationResults(e,t){return this.listParsedPayloads(t?"SELECT payload FROM evaluation_results WHERE taskset_id = ? AND kind = ? ORDER BY created_at DESC, id ASC":"SELECT payload FROM evaluation_results WHERE taskset_id = ? ORDER BY created_at DESC, id ASC",t?[e,t]:[e],La.parse)}};var cr=class extends dr{static{d(this,"SqlitePreferenceComparisonStore")}async savePreferenceComparisonRelease(e){let t=ra.parse(e);if(t.id!==t.release.id)throw new Error("Preference comparison release record ID must match its portable release ID.");let r=await this.getPreferenceComparisonRelease(t.id);if(r){if(r.tasksetId!==t.tasksetId||r.release.contentHash!==t.release.contentHash)throw new Error("A preference comparison release ID is immutable.");if(r.sourceConsent==="revoked"&&t.sourceConsent!=="revoked")throw new Error("Revoked preference-comparison source consent cannot be restored through a release write.")}return await this.upsertPayload(`INSERT INTO preference_comparison_releases (id, taskset_id, content_hash, source_consent, payload, created_at)
|
|
2135
2135
|
VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET source_consent = excluded.source_consent, payload = excluded.payload`,[t.id,t.tasksetId,t.release.contentHash,t.sourceConsent,JSON.stringify(t),t.createdAt]),t}async getPreferenceComparisonRelease(e){return this.getParsedPayload("SELECT payload FROM preference_comparison_releases WHERE id = ?",[e],ra.parse)}async listPreferenceComparisonReleases(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_releases WHERE taskset_id = ? ORDER BY created_at DESC",[e],ra.parse)}async revokePreferenceComparisonRelease(e){let t=await this.getPreferenceComparisonRelease(e.id);if(!t)throw new Error("Preference comparison release was not found.");return this.savePreferenceComparisonRelease({...t,sourceConsent:"revoked",retentionUntil:e.retentionUntil})}async savePreferenceComparisonAssignment(e){let t=et.parse(e);if(t.id!==t.assignment.id)throw new Error("Preference comparison assignment record ID must match its portable assignment ID.");let r=await this.getPreferenceComparisonRelease(t.assignment.comparisonRelease.id);if(!r||r.tasksetId!==t.tasksetId)throw new Error("Preference comparison assignment references an unavailable Taskset release.");if(r.sourceConsent!=="authorized")throw new Error("Preference comparison assignments cannot be created from revoked source consent.");if(r.release.contentHash!==t.assignment.comparisonRelease.contentHash)throw new Error("Preference comparison assignment does not reference the persisted immutable release.");let s=await this.getPreferenceComparisonAssignment(t.id);if(s){if(s.tasksetId!==t.tasksetId||s.assignment.contentHash!==t.assignment.contentHash)throw new Error("A preference comparison assignment is immutable.");if(!xc(s.state,t.state))throw new Error("Invalid preference comparison assignment state transition.")}return await this.upsertPayload(`INSERT INTO preference_comparison_assignments (id, taskset_id, release_id, purpose, state, reviewer_key, payload, created_at, updated_at)
|
|
2136
2136
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET state = excluded.state, reviewer_key = excluded.reviewer_key, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.tasksetId,t.assignment.comparisonRelease.id,t.assignment.purpose,t.state,t.reviewerKey,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getPreferenceComparisonAssignment(e){return this.getParsedPayload("SELECT payload FROM preference_comparison_assignments WHERE id = ?",[e],et.parse)}async listPreferenceComparisonAssignments(e){let t=e.states?.length?e.states:null,r=t?` AND state IN (${t.map(()=>"?").join(", ")})`:"",s=e.reviewerKey?" AND (reviewer_key IS NULL OR reviewer_key = ?)":"";return this.listParsedPayloads(`SELECT payload FROM preference_comparison_assignments WHERE taskset_id = ?${s}${r} ORDER BY created_at ASC`,[e.tasksetId,...e.reviewerKey?[e.reviewerKey]:[],...t??[]],et.parse)}async claimPreferenceComparisonAssignment(e){let t=await this.claimPreferenceComparisonAssignmentRecord(e);if(!t)throw new Error("Preference comparison assignment is unavailable for this reviewer.");return t}async claimNextPreferenceComparisonAssignment(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{let s=await this.get(`SELECT payload FROM preference_comparison_assignments WHERE taskset_id = ? AND (state = 'queued' OR (state = 'in_review' AND reviewer_key = ?))
|
|
2137
2137
|
ORDER BY CASE state WHEN 'in_review' THEN 0 ELSE 1 END, created_at ASC LIMIT 1`,[e.tasksetId,e.reviewerKey]);s&&(t=await this.claimPreferenceComparisonAssignmentRecordInWrite({current:et.parse(JSON.parse(s.payload)),reviewerKey:e.reviewerKey,updatedAt:e.updatedAt}))});return this.writeQueue=r.catch(()=>{}),await r,t}async markPreferenceComparisonUnreviewable(e){let t=await this.claimPreferenceComparisonAssignment(e);return this.savePreferenceComparisonAssignment({...t,state:"unreviewable",reviewerKey:e.reviewerKey,unreviewableReason:e.reason,updatedAt:e.updatedAt})}async savePreferenceComparisonSubmission(e){let t=sa.parse(e);await this.ready;let r=null,s=this.writeQueue.then(async()=>{let i=await this.get("SELECT payload FROM preference_comparison_assignments WHERE id = ?",[t.assignmentId]);if(!i)throw new Error("Preference comparison assignment was not found.");let n=et.parse(JSON.parse(i.payload)),o=await this.get("SELECT payload FROM preference_comparison_releases WHERE id = ?",[n.assignment.comparisonRelease.id]);if(!o)throw new Error("Preference comparison release was not found.");if(ra.parse(JSON.parse(o.payload)).sourceConsent!=="authorized")throw new Error("Preference comparison submissions cannot use revoked source consent.");if(n.tasksetId!==t.tasksetId)throw new Error("Preference comparison submission Taskset does not match its assignment.");if(t.receipt.assignmentRef.id!==n.assignment.id||t.receipt.assignmentRef.contentHash!==n.assignment.contentHash)throw new Error("Preference comparison receipt does not belong to its assignment.");let c=await this.get("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? AND reviewer_key = ?",[t.assignmentId,t.reviewerKey]);if(c){let p=sa.parse(JSON.parse(c.payload));if(p.receipt.contentHash!==t.receipt.contentHash)throw new Error("Preference comparison submission is already recorded for this reviewer and assignment.");r=p;return}if(n.state!=="submitted"&&!await this.claimPreferenceComparisonAssignmentRecordInWrite({current:n,reviewerKey:t.reviewerKey,updatedAt:t.submittedAt}))throw new Error("Preference comparison assignment is unavailable for this reviewer.");await this.run("INSERT INTO preference_comparison_submissions (id, taskset_id, assignment_id, reviewer_key, receipt_hash, payload, submitted_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[t.id,t.tasksetId,t.assignmentId,t.reviewerKey,t.receipt.contentHash,JSON.stringify(t),t.submittedAt]),n.state!=="submitted"&&await this.writePreferenceComparisonAssignmentInWrite({...n,state:"submitted",reviewerKey:t.reviewerKey,updatedAt:t.submittedAt}),r=t});if(this.writeQueue=s.catch(()=>{}),await s,!r)throw new Error("Preference comparison submission was not saved.");return r}async getPreferenceComparisonSubmission(e){return this.getParsedPayload("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? AND reviewer_key = ?",[e.assignmentId,e.reviewerKey],sa.parse)}async listPreferenceComparisonSubmissions(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? ORDER BY submitted_at ASC",[e],sa.parse)}async savePreferenceComparisonCalibration(e){let t=Es.parse(e),r=await this.getPreferenceComparisonRelease(t.report.comparisonRelease.id);if(!r||r.tasksetId!==t.tasksetId)throw new Error("Preference calibration report references an unavailable Taskset release.");if(r.release.contentHash!==t.report.comparisonRelease.contentHash)throw new Error("Preference calibration report does not reference the persisted immutable release.");return await this.upsertPayload(`INSERT INTO preference_comparison_calibrations (id, taskset_id, release_id, report_hash, passed, payload, created_at)
|
|
2138
|
-
VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET payload = excluded.payload`,[t.id,t.tasksetId,t.report.comparisonRelease.id,t.report.contentHash,t.report.passed?1:0,JSON.stringify(t),t.createdAt]),t}async listPreferenceComparisonCalibrations(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_calibrations WHERE taskset_id = ? ORDER BY created_at DESC",[e],Es.parse)}async claimPreferenceComparisonAssignmentRecord(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{let s=await this.get("SELECT payload FROM preference_comparison_assignments WHERE id = ?",[e.id]);if(!s)throw new Error("Preference comparison assignment was not found.");t=await this.claimPreferenceComparisonAssignmentRecordInWrite({current:et.parse(JSON.parse(s.payload)),reviewerKey:e.reviewerKey,updatedAt:e.updatedAt})});return this.writeQueue=r.catch(()=>{}),await r,t}async claimPreferenceComparisonAssignmentRecordInWrite(e){if(e.current.state==="in_review"&&e.current.reviewerKey===e.reviewerKey)return e.current;if(e.current.state!=="queued")return null;let t={...e.current,state:"in_review",reviewerKey:e.reviewerKey,updatedAt:e.updatedAt};return await this.writePreferenceComparisonAssignmentInWrite(t),t}async writePreferenceComparisonAssignmentInWrite(e){await this.run("UPDATE preference_comparison_assignments SET state = ?, reviewer_key = ?, payload = ?, updated_at = ? WHERE id = ?",[e.state,e.reviewerKey,JSON.stringify(e),e.updatedAt,e.id])}};function xc(a,e){return a===e?!0:a==="queued"?e==="in_review"||e==="unreviewable"||e==="revoked":a==="in_review"?e==="submitted"||e==="unreviewable"||e==="revoked":!1}d(xc,"isPreferenceAssignmentTransition");import{cp as Xc,lstat as Ls,mkdir as Mc,mkdtemp as Dc,readFile as Yo,readdir as $o,rename as Uc,rm as Hc}from"node:fs/promises";import Se from"node:path";async function tt(a,e,t,r={}){return Fc(Se.join(a,"training","tasksets"),e,t,r)}d(tt,"materializeImmutableTasksetPackage");async function Fc(a,e,t,r={}){if(!/^[a-z0-9][a-z0-9-]{1,239}$/.test(t))throw new Error("Taskset package identity is not a safe directory name.");await Mc(a,{recursive:!0});let s=await Dc(Se.join(a,".starter-")),i=Se.join(a,t);try{if(r.source){let o=await Ls(r.source.directory);if(!o.isDirectory()||o.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");await oa(r.source.directory);for(let c of await $o(r.source.directory))await Xc(Se.join(r.source.directory,c),Se.join(s,c),{recursive:!0,force:!1,errorOnExist:!0});if(await oa(s),await J(s)!==r.source.packageHash)throw new Error("Taskset draft files changed during publication. Refresh before publishing.")}await bn(e.taskset,s,{generatedFiles:e.generatedFiles}),await r.verify?.(s);let n=(await oa(s)).sort();try{await Uc(s,i)}catch(o){if(!["EEXIST","ENOTEMPTY"].includes(o.code??""))throw o;let c=await Ls(i);if(!c.isDirectory()||c.isSymbolicLink())throw new Error("Starter package destination is not a regular directory.");let p=await oa(i);if(JSON.stringify(p.sort())!==JSON.stringify(n))throw new Error("Existing starter package has a different file inventory.");for(let l of n){let m=Se.join(i,l),T=await Ls(m);if(!T.isFile()||T.isSymbolicLink()||!(await Yo(m)).equals(await Yo(Se.join(s,l))))throw new Error("Existing starter package differs from the pinned creation attempt.")}}return i}finally{await Hc(s,{recursive:!0,force:!0})}}d(Fc,"materializeImmutableTasksetPackageAtRoot");async function oa(a,e=""){let t=[];for(let r of await $o(Se.join(a,e),{withFileTypes:!0})){let s=Se.join(e,r.name);if(r.isSymbolicLink())throw new Error("Starter packages cannot contain symbolic links.");if(r.isDirectory())t.push(...await oa(a,s));else if(r.isFile())t.push(s);else throw new Error("Starter packages must contain regular files and directories.")}return t}d(oa,"regularFiles");import{lstat as Vo,readFile as Go}from"node:fs/promises";import kt from"node:path";import{constants as As}from"node:fs";import{lstat as Kc,open as Jc,readdir as zc}from"node:fs/promises";import bs from"node:path";function eE(a){let e=pn(a.taskset),{agentSnapshot:t,harnessRelease:r}=a.releasedHarness?{agentSnapshot:ot.parse(a.releasedHarness.agentSnapshot),harnessRelease:dt.parse(a.releasedHarness.harnessRelease)}:jc(a.taskset,a.profile);if(r.agentSnapshot.id!==t.id||r.agentSnapshot.contentHash!==t.contentHash)throw new Error("Released Harness does not bind the supplied Agent snapshot.");let s=ln(a.taskset),i=a.taskset.tasks.length?a.taskset.tasks:a.selectedTask?[a.selectedTask]:[];if(!i.length)throw new Error("A portable Taskset release requires at least one resolved task.");let{environmentRelease:n,verifierSetRelease:o,tasksetRelease:c}=Pe({taskset:a.taskset,selectedTasks:i,adapterId:a.adapterId??he(a.taskset),admittedTasksetRelease:a.tasksetRelease,rewardExecution:a.rewardExecution}),p=a.now??(()=>new Date().toISOString()),l=Li({schemaVersion:"openpond.runManifest.v1",id:`run-manifest-${h([r.contentHash,c.contentHash,a.model]).slice(0,24)}`,harnessRelease:{id:r.id,contentHash:r.contentHash},tasksetRelease:{id:c.id,contentHash:c.contentHash},model:{provider:a.model.providerId,model:a.model.modelId,revision:null,artifactHash:null,tokenizerRevision:null,chatTemplateHash:null},runtimeTarget:{adapterId:a.adapterId??he(a.taskset),placement:"local",runtimeVersion:"desktop-v1",capabilityReceipt:h({environment:s,tools:e,capabilities:a.taskset.capabilities})},limits:{maxTurns:128,timeoutMs:a.taskset.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:null},approval:null,createdAt:p(),metadata:{sourceTasksetId:a.taskset.id,sourceTasksetRevision:a.taskset.revision,reasoningEffort:a.reasoningEffort??null}});return{agentSnapshot:t,harnessRelease:r,environmentRelease:n,verifierSetRelease:o,tasksetRelease:c,runManifest:l}}d(eE,"compileDesktopHarnessContext");function jc(a,e){let t=a.profileRelease?{id:a.profileRelease.id,contentHash:St(a.profileRelease.contentHash)}:e?.git?.head?{id:`source-${at(e.git.head)}`,contentHash:St(e.git.head)}:null;return mn({sourceRelease:t,profileHead:e?.git?.head??null,skills:Yc(e),agents:$c(e)})}d(jc,"compileTemporaryProfileHarness");function Bc(a){let e=a.artifacts.map(lr),t=a.artifacts.find(i=>i.kind==="environment_state")??a.artifacts.find(i=>i.kind==="runtime_trace")??a.artifacts.find(i=>i.kind==="raw_model_response"),r=Jo(a.attempt,a.grade),s=a.grade.components.map(i=>({id:`grader-${at(i.graderId)}-${a.grade.id}`,contentHash:h(i),mediaType:"application/vnd.openpond.grader-evidence+json",sizeBytes:Buffer.byteLength(q(i))}));return Dt.parse(Ai({schemaVersion:"openpond.attemptReceipt.v1",id:`receipt-${h([a.manifest.contentHash,a.attempt.id,a.grade.id]).slice(0,24)}`,runManifest:{id:a.manifest.id,contentHash:a.manifest.contentHash},taskId:a.attempt.taskId,seed:String(a.attempt.seed),terminal:!["infrastructure_failure","timeout","cancelled"].includes(r??""),failureClass:r,outputHash:a.attempt.infrastructureError?null:h(a.attempt.output),traceHash:t?St(t.sha256):h({attemptId:a.attempt.id,output:a.attempt.output,runtimeEventRefs:a.attempt.runtimeEventRefs,artifactRefs:a.attempt.artifactRefs,metadata:a.attempt.metadata}),artifactRefs:e,graderEvidenceRefs:s,startedAt:a.attempt.startedAt,completedAt:a.attempt.completedAt,latencyMs:a.attempt.latencyMs,costUsd:a.attempt.costUsd,legacyAttemptRef:a.attempt.id,metadata:{legacyGradeRef:a.grade.id,rewardEligible:a.grade.rewardEligible,score:a.grade.score,passed:a.grade.passed,usage:a.attempt.metadata.usage??[]}}))}d(Bc,"projectDesktopAttemptReceipt");function tE(a){let e=Bc({manifest:a.context.runManifest,attempt:a.attempt,grade:a.grade,artifacts:a.artifacts}),t=a.context.tasksetRelease.tasks.find(f=>f.id===a.attempt.taskId);if(!t)throw new Error(`Task ${a.attempt.taskId} is absent from the admitted Taskset Release.`);let r=t.requiredOutputs??[],s=a.artifacts.filter(f=>f.kind==="output_artifact").map(f=>({path:typeof f.metadata.requiredOutputPath=="string"?f.metadata.requiredOutputPath:f.path,artifact:lr(f),detectedMediaType:f.mediaType??null,status:"collected",parseStatus:Ko(f.metadata.parseStatus),schemaStatus:Ko(f.metadata.schemaStatus),evidenceRefs:[lr(f)],metadata:{sourceArtifactId:f.id}})),i=jn({id:`artifact-manifest-${e.id}`,attemptRef:{id:e.id,contentHash:e.contentHash},requiredOutputs:r,collectedArtifacts:s,createdAt:a.attempt.completedAt,metadata:{legacyAttemptRef:a.attempt.id}}),n=a.grade.components.map((f,_)=>qc({component:f,grader:a.context.verifierSetRelease.graders.find(I=>I.id===f.graderId),evidenceRef:e.graderEvidenceRefs[_]??null,gradeScored:a.grade.score!==null,boundResult:a.grade.rewardComposition?.results.find(I=>I.graderId===f.graderId)})),o=Bn({requiredOutputs:r,manifest:i}),c=Wc(a.attempt,a.grade),p=o.some(f=>f.status==="unscorable"&&f.failureOwner==="collector"),l=o.some(f=>f.status==="scored"&&!f.passed),m=c.outcomeClass==="completed"&&p?{outcomeClass:"collector_failure",failureOwner:"collector"}:c.outcomeClass==="completed"&&l?{outcomeClass:"incomplete_output",failureOwner:"policy"}:c,T=Di({id:`reward-${h([e.contentHash,a.context.verifierSetRelease.contentHash,i.contentHash,a.grade.id]).slice(0,24)}`,attemptRef:{id:e.id,contentHash:e.contentHash},verifierSet:a.context.verifierSetRelease,artifactManifest:i,...m,components:[...n,...o],createdAt:a.grade.createdAt,metadata:{legacyGradeRef:a.grade.id,legacyAttemptRef:a.attempt.id,...a.grade.rewardComposition?{rewardComposition:a.grade.rewardComposition}:{}}});return{attemptReceipt:e,artifactManifest:i,rewardReceipt:T}}d(tE,"projectDesktopCanonicalReceipts");function aE(a){let e=a.artifacts.find(i=>i.kind==="runtime_trace")??a.artifacts.find(i=>i.kind==="raw_model_response"),t=e?lr(e):{id:`trace-${a.canonical.attemptReceipt.id}`,contentHash:a.canonical.attemptReceipt.traceHash,mediaType:"application/vnd.openpond.attempt-trace+json",sizeBytes:null},r=a.canonical.rewardReceipt.outcomeClass==="task_deadline"||a.canonical.rewardReceipt.outcomeClass==="infrastructure_timeout",s=a.canonical.rewardReceipt.outcomeClass==="cancelled";return Yi({id:`rollout-${h([a.canonical.attemptReceipt.contentHash,a.canonical.rewardReceipt.contentHash,t.contentHash]).slice(0,24)}`,attemptReceipt:a.canonical.attemptReceipt,rewardReceipt:a.canonical.rewardReceipt,artifactManifestRef:{id:a.canonical.artifactManifest.id,contentHash:a.canonical.artifactManifest.contentHash},tasksetRelease:{id:a.context.tasksetRelease.id,contentHash:a.context.tasksetRelease.contentHash},environmentRelease:{id:a.context.environmentRelease.id,contentHash:a.context.environmentRelease.contentHash},harnessRelease:{id:a.context.harnessRelease.id,contentHash:a.context.harnessRelease.contentHash},taskId:a.attempt.taskId,split:a.attempt.split,model:a.context.runManifest.model,seed:String(a.attempt.seed),traceRef:t,optimizerSample:a.optimizerSample??null,environmentExecutions:[{id:`environment-execution-${a.attempt.id}`,environmentRelease:{id:a.context.environmentRelease.id,contentHash:a.context.environmentRelease.contentHash},status:s?"cancelled":r?"timed_out":a.canonical.rewardReceipt.status==="scored"?"completed":"failed",startedAt:a.attempt.startedAt,completedAt:a.attempt.completedAt,traceRefs:[t],metadata:{legacyAttemptRef:a.attempt.id,runtimeEventCount:a.attempt.runtimeEventRefs.length}}],startedAt:a.attempt.startedAt,completedAt:a.attempt.completedAt,metadata:{source:"openpond.desktop-local-runtime",optimizerSamplePresent:!!a.optimizerSample}})}d(aE,"projectDesktopCanonicalRollout");function qc(a){if(!a.grader)throw new Error(`Grade component ${a.component.graderId} has no admitted Verifier definition.`);let e=(a.boundResult?a.boundResult.status==="scored":a.gradeScored)?"scored":"unscorable",t=e==="scored"&&a.component.rewardEligible,r=a.evidenceRef?[a.evidenceRef]:[];return{verifierId:a.component.graderId,verifierVersion:a.component.graderVersion,status:e,rawScore:e==="scored"?a.boundResult?.rawScore??a.component.score:null,normalizedScore:e==="scored"?a.boundResult?.normalizedScore??a.component.score:null,weight:a.grader.weight,passed:a.component.passed,hardGate:a.component.hardGate,rewardEligible:t,rewardContribution:t?a.component.score:null,failureOwner:a.component.passed?null:e==="scored"?"policy":"verifier",feedback:a.component.feedback?[a.component.feedback]:[],visibleEvidenceRefs:a.grader.privileged?[]:r,privilegedEvidenceRefs:a.grader.privileged?r:[],metadata:{judge:a.component.judge??null,calibrationStatus:a.component.calibrationStatus,legacyEvidenceRefs:a.component.evidenceRefs}}}d(qc,"portableRewardComponent");function Wc(a,e){let t=Pi.safeParse(a.metadata.outcomeClass);if(t.success){let s=a.metadata.failureOwner===null?null:Ci.safeParse(a.metadata.failureOwner);if(s!==null&&!s.success)throw new Error("Attempt has an invalid explicit failure owner.");return{outcomeClass:t.data,failureOwner:s===null?null:s.data}}let r=Jo(a,e);return r?Mi({failureClass:r,timeoutKind:a.metadata.timeoutKind==="task_deadline"?"task_deadline":"infrastructure_timeout"}):e.score===null?{outcomeClass:"verifier_failure",failureOwner:"verifier"}:e.passed?{outcomeClass:"completed",failureOwner:null}:{outcomeClass:"policy_failure",failureOwner:"policy"}}d(Wc,"canonicalOutcome");function Ko(a){return a==="passed"||a==="failed"?a:"not_requested"}d(Ko,"artifactValidationStatus");function Yc(a){return(a?.skills??[]).filter(e=>e.enabled).map(e=>({id:`skill-${at(e.name)}`,path:`skills/${at(e.name)}/SKILL.md`,contentHash:St(e.sourceHash),sizeBytes:Math.max(0,e.charCount),mediaType:"text/markdown",visibility:"policy"}))}d(Yc,"portableSkills");function $c(a){let e=new Map;for(let t of a?.agents??[])t.enabled&&e.set(t.id,h({name:t.name,path:t.path}));return[...e].map(([t,r])=>({id:`agent-${at(t)}`,path:`agents/${at(t)}/release.json`,contentHash:St(r),sizeBytes:0,mediaType:"application/vnd.openpond.agent-release+json",visibility:"policy"}))}d($c,"portableAgents");function he(a){let e=a.environment.metadata.runtimeAdapterId;if(typeof e=="string"&&e.trim())return e.trim();let t=a.environment.metadata.benchmark;if(t&&typeof t=="object"&&!Array.isArray(t)){let r=Reflect.get(t,"id");if(typeof r=="string"&&r.trim())return`conformance:${r.trim()}`}return a.environment.kind==="work"?"openpond:desktop-work":a.environment.kind==="chat"?"openpond:desktop-text":`openpond:${at(a.environment.entrypoint)}`}d(he,"desktopTasksetRuntimeAdapterId");function lr(a){return{id:a.id,contentHash:St(a.sha256),mediaType:a.mediaType??null,sizeBytes:a.sizeBytes}}d(lr,"portableArtifact");function Jo(a,e){if(a.infrastructureError)return"infrastructure_failure";if(e.failureClass)return e.failureClass;let t=a.metadata.failureClass;return t==="policy_failure"||t==="grader_failure"||t==="environment_failure"||t==="infrastructure_failure"||t==="timeout"||t==="cancelled"?t:null}d(Jo,"attemptFailureClass");function St(a){return/^[a-f0-9]{64}$/.test(a)?a:h(a)}d(St,"hash");function at(a){return a.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"asset"}d(at,"segment");async function zo(a,e){if(a.metadata.taskDefinition!==void 0||a.metadata.rewardBinding!==void 0)return{taskset:a,generatedFiles:[]};let t=await Kc(e);if(!t.isDirectory()||t.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");let r=new Map,s=0;async function i(n=""){for(let o of await zc(bs.join(e,n),{withFileTypes:!0})){let c=bs.posix.join(n,o.name);if(o.isSymbolicLink())throw new Error("Taskset files cannot contain symbolic links.");if(o.name.startsWith(".env"))throw new Error("Environment files cannot be included in a Taskset package.");if(o.isDirectory()){await i(c);continue}if(!o.isFile())throw new Error("Taskset packages require regular files.");if(Sn(c))continue;if(r.size>=1e4)throw new Error("Taskset source exceeds the file inventory limit.");let p=await Jc(bs.join(e,c),As.O_RDONLY|As.O_NOFOLLOW|As.O_NONBLOCK);try{let l=await p.stat();if(s+=l.size,!l.isFile()||s>ze*3/4)throw new Error("Taskset source exceeds the package byte limit.");let m=Buffer.alloc(l.size),T=0;for(;T<m.length;){let f=await p.read(m,T,m.length-T,T);if(!f.bytesRead)throw new Error("Taskset source changed during capture.");T+=f.bytesRead}if((await p.read(Buffer.alloc(1),0,1,T)).bytesRead)throw new Error("Taskset source changed during capture.");r.set(c,m)}finally{await p.close()}}}return d(i,"visit"),await i(),kn(a,r,he(a))}d(zo,"prepareAuthoredTasksetFiles");async function vt(a,e){for(let r of Me.parse(e.metadata.portableFileInventory??[])){let s=kt.resolve(a,r.sourcePath);if(!s.startsWith(`${kt.resolve(a)}${kt.sep}`))throw new Error("Taskset inventory file escapes its package.");let i=await Vo(s);if(!i.isFile()||i.isSymbolicLink())throw new Error("Taskset inventory requires regular files.");let n=await Go(s);if(n.length!==r.asset.sizeBytes||nt(n)!==r.asset.contentHash)throw new Error(`Taskset file differs from its immutable inventory: ${r.asset.id}.`)}let t=kt.resolve(a,"assets");for(let r of e.tasks)for(let s of r.assets??[]){let i=kt.resolve(a,s.artifactRef);if(i===t||!i.startsWith(`${t}${kt.sep}`))throw new Error(`Taskset asset ${s.id} escapes the package assets directory.`);let n=await Vo(i);if(!n.isFile()||n.isSymbolicLink())throw new Error(`Taskset asset ${s.id} is not a regular file.`);let o=await Go(i);if(o.byteLength!==s.sizeBytes||nt(o)!==s.sha256)throw new Error(`Taskset asset ${s.id} does not match its immutable manifest.`)}}d(vt,"verifyPublishedTasksetAssets");function pr(a,e,t){a.exec("BEGIN IMMEDIATE");try{let r=a.get("SELECT content_hash, profile_id FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[e.id,e.revision]);if(r&&r.content_hash!==e.contentHash)throw new Error(`Taskset ${e.id}@${e.revision} is immutable and already has another content hash.`);let s=a.get("SELECT payload FROM tasksets WHERE id = ?",[e.id]),i=s?P.parse(JSON.parse(s.payload)):null;if(r&&r.profile_id!==e.profileId||i&&i.profileId!==e.profileId)throw new Error(`Taskset ${e.id} belongs to another Profile.`);let n=JSON.stringify(e);a.run(`INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at)
|
|
2138
|
+
VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET payload = excluded.payload`,[t.id,t.tasksetId,t.report.comparisonRelease.id,t.report.contentHash,t.report.passed?1:0,JSON.stringify(t),t.createdAt]),t}async listPreferenceComparisonCalibrations(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_calibrations WHERE taskset_id = ? ORDER BY created_at DESC",[e],Es.parse)}async claimPreferenceComparisonAssignmentRecord(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{let s=await this.get("SELECT payload FROM preference_comparison_assignments WHERE id = ?",[e.id]);if(!s)throw new Error("Preference comparison assignment was not found.");t=await this.claimPreferenceComparisonAssignmentRecordInWrite({current:et.parse(JSON.parse(s.payload)),reviewerKey:e.reviewerKey,updatedAt:e.updatedAt})});return this.writeQueue=r.catch(()=>{}),await r,t}async claimPreferenceComparisonAssignmentRecordInWrite(e){if(e.current.state==="in_review"&&e.current.reviewerKey===e.reviewerKey)return e.current;if(e.current.state!=="queued")return null;let t={...e.current,state:"in_review",reviewerKey:e.reviewerKey,updatedAt:e.updatedAt};return await this.writePreferenceComparisonAssignmentInWrite(t),t}async writePreferenceComparisonAssignmentInWrite(e){await this.run("UPDATE preference_comparison_assignments SET state = ?, reviewer_key = ?, payload = ?, updated_at = ? WHERE id = ?",[e.state,e.reviewerKey,JSON.stringify(e),e.updatedAt,e.id])}};function xc(a,e){return a===e?!0:a==="queued"?e==="in_review"||e==="unreviewable"||e==="revoked":a==="in_review"?e==="submitted"||e==="unreviewable"||e==="revoked":!1}d(xc,"isPreferenceAssignmentTransition");import{cp as Xc,lstat as Ls,mkdir as Mc,mkdtemp as Dc,readFile as Yo,readdir as $o,rename as Uc,rm as Hc}from"node:fs/promises";import Se from"node:path";async function tt(a,e,t,r={}){return Fc(Se.join(a,"training","tasksets"),e,t,r)}d(tt,"materializeImmutableTasksetPackage");async function Fc(a,e,t,r={}){if(!/^[a-z0-9][a-z0-9-]{1,239}$/.test(t))throw new Error("Taskset package identity is not a safe directory name.");await Mc(a,{recursive:!0});let s=await Dc(Se.join(a,".starter-")),i=Se.join(a,t);try{if(r.source){let o=await Ls(r.source.directory);if(!o.isDirectory()||o.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");await oa(r.source.directory);for(let c of await $o(r.source.directory))await Xc(Se.join(r.source.directory,c),Se.join(s,c),{recursive:!0,force:!1,errorOnExist:!0});if(await oa(s),await J(s)!==r.source.packageHash)throw new Error("Taskset draft files changed during publication. Refresh before publishing.")}await xn(e.taskset,s,{generatedFiles:e.generatedFiles}),await r.verify?.(s);let n=(await oa(s)).sort();try{await Uc(s,i)}catch(o){if(!["EEXIST","ENOTEMPTY"].includes(o.code??""))throw o;let c=await Ls(i);if(!c.isDirectory()||c.isSymbolicLink())throw new Error("Starter package destination is not a regular directory.");let p=await oa(i);if(JSON.stringify(p.sort())!==JSON.stringify(n))throw new Error("Existing starter package has a different file inventory.");for(let l of n){let m=Se.join(i,l),T=await Ls(m);if(!T.isFile()||T.isSymbolicLink()||!(await Yo(m)).equals(await Yo(Se.join(s,l))))throw new Error("Existing starter package differs from the pinned creation attempt.")}}return i}finally{await Hc(s,{recursive:!0,force:!0})}}d(Fc,"materializeImmutableTasksetPackageAtRoot");async function oa(a,e=""){let t=[];for(let r of await $o(Se.join(a,e),{withFileTypes:!0})){let s=Se.join(e,r.name);if(r.isSymbolicLink())throw new Error("Starter packages cannot contain symbolic links.");if(r.isDirectory())t.push(...await oa(a,s));else if(r.isFile())t.push(s);else throw new Error("Starter packages must contain regular files and directories.")}return t}d(oa,"regularFiles");import{lstat as Vo,readFile as Go}from"node:fs/promises";import kt from"node:path";import{constants as As}from"node:fs";import{lstat as Kc,open as Jc,readdir as zc}from"node:fs/promises";import bs from"node:path";function eE(a){let e=Tn(a.taskset),{agentSnapshot:t,harnessRelease:r}=a.releasedHarness?{agentSnapshot:ot.parse(a.releasedHarness.agentSnapshot),harnessRelease:dt.parse(a.releasedHarness.harnessRelease)}:jc(a.taskset,a.profile);if(r.agentSnapshot.id!==t.id||r.agentSnapshot.contentHash!==t.contentHash)throw new Error("Released Harness does not bind the supplied Agent snapshot.");let s=mn(a.taskset),i=a.taskset.tasks.length?a.taskset.tasks:a.selectedTask?[a.selectedTask]:[];if(!i.length)throw new Error("A portable Taskset release requires at least one resolved task.");let{environmentRelease:n,verifierSetRelease:o,tasksetRelease:c}=Pe({taskset:a.taskset,selectedTasks:i,adapterId:a.adapterId??he(a.taskset),admittedTasksetRelease:a.tasksetRelease,rewardExecution:a.rewardExecution}),p=a.now??(()=>new Date().toISOString()),l=hi({schemaVersion:"openpond.runManifest.v1",id:`run-manifest-${h([r.contentHash,c.contentHash,a.model]).slice(0,24)}`,harnessRelease:{id:r.id,contentHash:r.contentHash},tasksetRelease:{id:c.id,contentHash:c.contentHash},model:{provider:a.model.providerId,model:a.model.modelId,revision:null,artifactHash:null,tokenizerRevision:null,chatTemplateHash:null},runtimeTarget:{adapterId:a.adapterId??he(a.taskset),placement:"local",runtimeVersion:"desktop-v1",capabilityReceipt:h({environment:s,tools:e,capabilities:a.taskset.capabilities})},limits:{maxTurns:128,timeoutMs:a.taskset.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:null},approval:null,createdAt:p(),metadata:{sourceTasksetId:a.taskset.id,sourceTasksetRevision:a.taskset.revision,reasoningEffort:a.reasoningEffort??null}});return{agentSnapshot:t,harnessRelease:r,environmentRelease:n,verifierSetRelease:o,tasksetRelease:c,runManifest:l}}d(eE,"compileDesktopHarnessContext");function jc(a,e){let t=a.profileRelease?{id:a.profileRelease.id,contentHash:St(a.profileRelease.contentHash)}:e?.git?.head?{id:`source-${at(e.git.head)}`,contentHash:St(e.git.head)}:null;return fn({sourceRelease:t,profileHead:e?.git?.head??null,skills:Yc(e),agents:$c(e)})}d(jc,"compileTemporaryProfileHarness");function Bc(a){let e=a.artifacts.map(lr),t=a.artifacts.find(i=>i.kind==="environment_state")??a.artifacts.find(i=>i.kind==="runtime_trace")??a.artifacts.find(i=>i.kind==="raw_model_response"),r=Jo(a.attempt,a.grade),s=a.grade.components.map(i=>({id:`grader-${at(i.graderId)}-${a.grade.id}`,contentHash:h(i),mediaType:"application/vnd.openpond.grader-evidence+json",sizeBytes:Buffer.byteLength(q(i))}));return Mt.parse(gi({schemaVersion:"openpond.attemptReceipt.v1",id:`receipt-${h([a.manifest.contentHash,a.attempt.id,a.grade.id]).slice(0,24)}`,runManifest:{id:a.manifest.id,contentHash:a.manifest.contentHash},taskId:a.attempt.taskId,seed:String(a.attempt.seed),terminal:!["infrastructure_failure","timeout","cancelled"].includes(r??""),failureClass:r,outputHash:a.attempt.infrastructureError?null:h(a.attempt.output),traceHash:t?St(t.sha256):h({attemptId:a.attempt.id,output:a.attempt.output,runtimeEventRefs:a.attempt.runtimeEventRefs,artifactRefs:a.attempt.artifactRefs,metadata:a.attempt.metadata}),artifactRefs:e,graderEvidenceRefs:s,startedAt:a.attempt.startedAt,completedAt:a.attempt.completedAt,latencyMs:a.attempt.latencyMs,costUsd:a.attempt.costUsd,legacyAttemptRef:a.attempt.id,metadata:{legacyGradeRef:a.grade.id,rewardEligible:a.grade.rewardEligible,score:a.grade.score,passed:a.grade.passed,usage:a.attempt.metadata.usage??[]}}))}d(Bc,"projectDesktopAttemptReceipt");function tE(a){let e=Bc({manifest:a.context.runManifest,attempt:a.attempt,grade:a.grade,artifacts:a.artifacts}),t=a.context.tasksetRelease.tasks.find(f=>f.id===a.attempt.taskId);if(!t)throw new Error(`Task ${a.attempt.taskId} is absent from the admitted Taskset Release.`);let r=t.requiredOutputs??[],s=a.artifacts.filter(f=>f.kind==="output_artifact").map(f=>({path:typeof f.metadata.requiredOutputPath=="string"?f.metadata.requiredOutputPath:f.path,artifact:lr(f),detectedMediaType:f.mediaType??null,status:"collected",parseStatus:Ko(f.metadata.parseStatus),schemaStatus:Ko(f.metadata.schemaStatus),evidenceRefs:[lr(f)],metadata:{sourceArtifactId:f.id}})),i=jn({id:`artifact-manifest-${e.id}`,attemptRef:{id:e.id,contentHash:e.contentHash},requiredOutputs:r,collectedArtifacts:s,createdAt:a.attempt.completedAt,metadata:{legacyAttemptRef:a.attempt.id}}),n=a.grade.components.map((f,_)=>qc({component:f,grader:a.context.verifierSetRelease.graders.find(I=>I.id===f.graderId),evidenceRef:e.graderEvidenceRefs[_]??null,gradeScored:a.grade.score!==null,boundResult:a.grade.rewardComposition?.results.find(I=>I.graderId===f.graderId)})),o=Bn({requiredOutputs:r,manifest:i}),c=Wc(a.attempt,a.grade),p=o.some(f=>f.status==="unscorable"&&f.failureOwner==="collector"),l=o.some(f=>f.status==="scored"&&!f.passed),m=c.outcomeClass==="completed"&&p?{outcomeClass:"collector_failure",failureOwner:"collector"}:c.outcomeClass==="completed"&&l?{outcomeClass:"incomplete_output",failureOwner:"policy"}:c,T=Xi({id:`reward-${h([e.contentHash,a.context.verifierSetRelease.contentHash,i.contentHash,a.grade.id]).slice(0,24)}`,attemptRef:{id:e.id,contentHash:e.contentHash},verifierSet:a.context.verifierSetRelease,artifactManifest:i,...m,components:[...n,...o],createdAt:a.grade.createdAt,metadata:{legacyGradeRef:a.grade.id,legacyAttemptRef:a.attempt.id,...a.grade.rewardComposition?{rewardComposition:a.grade.rewardComposition}:{}}});return{attemptReceipt:e,artifactManifest:i,rewardReceipt:T}}d(tE,"projectDesktopCanonicalReceipts");function aE(a){let e=a.artifacts.find(i=>i.kind==="runtime_trace")??a.artifacts.find(i=>i.kind==="raw_model_response"),t=e?lr(e):{id:`trace-${a.canonical.attemptReceipt.id}`,contentHash:a.canonical.attemptReceipt.traceHash,mediaType:"application/vnd.openpond.attempt-trace+json",sizeBytes:null},r=a.canonical.rewardReceipt.outcomeClass==="task_deadline"||a.canonical.rewardReceipt.outcomeClass==="infrastructure_timeout",s=a.canonical.rewardReceipt.outcomeClass==="cancelled";return qi({id:`rollout-${h([a.canonical.attemptReceipt.contentHash,a.canonical.rewardReceipt.contentHash,t.contentHash]).slice(0,24)}`,attemptReceipt:a.canonical.attemptReceipt,rewardReceipt:a.canonical.rewardReceipt,artifactManifestRef:{id:a.canonical.artifactManifest.id,contentHash:a.canonical.artifactManifest.contentHash},tasksetRelease:{id:a.context.tasksetRelease.id,contentHash:a.context.tasksetRelease.contentHash},environmentRelease:{id:a.context.environmentRelease.id,contentHash:a.context.environmentRelease.contentHash},harnessRelease:{id:a.context.harnessRelease.id,contentHash:a.context.harnessRelease.contentHash},taskId:a.attempt.taskId,split:a.attempt.split,model:a.context.runManifest.model,seed:String(a.attempt.seed),traceRef:t,optimizerSample:a.optimizerSample??null,environmentExecutions:[{id:`environment-execution-${a.attempt.id}`,environmentRelease:{id:a.context.environmentRelease.id,contentHash:a.context.environmentRelease.contentHash},status:s?"cancelled":r?"timed_out":a.canonical.rewardReceipt.status==="scored"?"completed":"failed",startedAt:a.attempt.startedAt,completedAt:a.attempt.completedAt,traceRefs:[t],metadata:{legacyAttemptRef:a.attempt.id,runtimeEventCount:a.attempt.runtimeEventRefs.length}}],startedAt:a.attempt.startedAt,completedAt:a.attempt.completedAt,metadata:{source:"openpond.desktop-local-runtime",optimizerSamplePresent:!!a.optimizerSample}})}d(aE,"projectDesktopCanonicalRollout");function qc(a){if(!a.grader)throw new Error(`Grade component ${a.component.graderId} has no admitted Verifier definition.`);let e=(a.boundResult?a.boundResult.status==="scored":a.gradeScored)?"scored":"unscorable",t=e==="scored"&&a.component.rewardEligible,r=a.evidenceRef?[a.evidenceRef]:[];return{verifierId:a.component.graderId,verifierVersion:a.component.graderVersion,status:e,rawScore:e==="scored"?a.boundResult?.rawScore??a.component.score:null,normalizedScore:e==="scored"?a.boundResult?.normalizedScore??a.component.score:null,weight:a.grader.weight,passed:a.component.passed,hardGate:a.component.hardGate,rewardEligible:t,rewardContribution:t?a.component.score:null,failureOwner:a.component.passed?null:e==="scored"?"policy":"verifier",feedback:a.component.feedback?[a.component.feedback]:[],visibleEvidenceRefs:a.grader.privileged?[]:r,privilegedEvidenceRefs:a.grader.privileged?r:[],metadata:{judge:a.component.judge??null,calibrationStatus:a.component.calibrationStatus,legacyEvidenceRefs:a.component.evidenceRefs}}}d(qc,"portableRewardComponent");function Wc(a,e){let t=bi.safeParse(a.metadata.outcomeClass);if(t.success){let s=a.metadata.failureOwner===null?null:Ai.safeParse(a.metadata.failureOwner);if(s!==null&&!s.success)throw new Error("Attempt has an invalid explicit failure owner.");return{outcomeClass:t.data,failureOwner:s===null?null:s.data}}let r=Jo(a,e);return r?xi({failureClass:r,timeoutKind:a.metadata.timeoutKind==="task_deadline"?"task_deadline":"infrastructure_timeout"}):e.score===null?{outcomeClass:"verifier_failure",failureOwner:"verifier"}:e.passed?{outcomeClass:"completed",failureOwner:null}:{outcomeClass:"policy_failure",failureOwner:"policy"}}d(Wc,"canonicalOutcome");function Ko(a){return a==="passed"||a==="failed"?a:"not_requested"}d(Ko,"artifactValidationStatus");function Yc(a){return(a?.skills??[]).filter(e=>e.enabled).map(e=>({id:`skill-${at(e.name)}`,path:`skills/${at(e.name)}/SKILL.md`,contentHash:St(e.sourceHash),sizeBytes:Math.max(0,e.charCount),mediaType:"text/markdown",visibility:"policy"}))}d(Yc,"portableSkills");function $c(a){let e=new Map;for(let t of a?.agents??[])t.enabled&&e.set(t.id,h({name:t.name,path:t.path}));return[...e].map(([t,r])=>({id:`agent-${at(t)}`,path:`agents/${at(t)}/release.json`,contentHash:St(r),sizeBytes:0,mediaType:"application/vnd.openpond.agent-release+json",visibility:"policy"}))}d($c,"portableAgents");function he(a){let e=a.environment.metadata.runtimeAdapterId;if(typeof e=="string"&&e.trim())return e.trim();let t=a.environment.metadata.benchmark;if(t&&typeof t=="object"&&!Array.isArray(t)){let r=Reflect.get(t,"id");if(typeof r=="string"&&r.trim())return`conformance:${r.trim()}`}return a.environment.kind==="work"?"openpond:desktop-work":a.environment.kind==="chat"?"openpond:desktop-text":`openpond:${at(a.environment.entrypoint)}`}d(he,"desktopTasksetRuntimeAdapterId");function lr(a){return{id:a.id,contentHash:St(a.sha256),mediaType:a.mediaType??null,sizeBytes:a.sizeBytes}}d(lr,"portableArtifact");function Jo(a,e){if(a.infrastructureError)return"infrastructure_failure";if(e.failureClass)return e.failureClass;let t=a.metadata.failureClass;return t==="policy_failure"||t==="grader_failure"||t==="environment_failure"||t==="infrastructure_failure"||t==="timeout"||t==="cancelled"?t:null}d(Jo,"attemptFailureClass");function St(a){return/^[a-f0-9]{64}$/.test(a)?a:h(a)}d(St,"hash");function at(a){return a.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"asset"}d(at,"segment");async function zo(a,e){if(a.metadata.taskDefinition!==void 0||a.metadata.rewardBinding!==void 0)return{taskset:a,generatedFiles:[]};let t=await Kc(e);if(!t.isDirectory()||t.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");let r=new Map,s=0;async function i(n=""){for(let o of await zc(bs.join(e,n),{withFileTypes:!0})){let c=bs.posix.join(n,o.name);if(o.isSymbolicLink())throw new Error("Taskset files cannot contain symbolic links.");if(o.name.startsWith(".env"))throw new Error("Environment files cannot be included in a Taskset package.");if(o.isDirectory()){await i(c);continue}if(!o.isFile())throw new Error("Taskset packages require regular files.");if(In(c))continue;if(r.size>=1e4)throw new Error("Taskset source exceeds the file inventory limit.");let p=await Jc(bs.join(e,c),As.O_RDONLY|As.O_NOFOLLOW|As.O_NONBLOCK);try{let l=await p.stat();if(s+=l.size,!l.isFile()||s>ze*3/4)throw new Error("Taskset source exceeds the package byte limit.");let m=Buffer.alloc(l.size),T=0;for(;T<m.length;){let f=await p.read(m,T,m.length-T,T);if(!f.bytesRead)throw new Error("Taskset source changed during capture.");T+=f.bytesRead}if((await p.read(Buffer.alloc(1),0,1,T)).bytesRead)throw new Error("Taskset source changed during capture.");r.set(c,m)}finally{await p.close()}}}return d(i,"visit"),await i(),On(a,r,he(a))}d(zo,"prepareAuthoredTasksetFiles");async function vt(a,e){for(let r of Me.parse(e.metadata.portableFileInventory??[])){let s=kt.resolve(a,r.sourcePath);if(!s.startsWith(`${kt.resolve(a)}${kt.sep}`))throw new Error("Taskset inventory file escapes its package.");let i=await Vo(s);if(!i.isFile()||i.isSymbolicLink())throw new Error("Taskset inventory requires regular files.");let n=await Go(s);if(n.length!==r.asset.sizeBytes||nt(n)!==r.asset.contentHash)throw new Error(`Taskset file differs from its immutable inventory: ${r.asset.id}.`)}let t=kt.resolve(a,"assets");for(let r of e.tasks)for(let s of r.assets??[]){let i=kt.resolve(a,s.artifactRef);if(i===t||!i.startsWith(`${t}${kt.sep}`))throw new Error(`Taskset asset ${s.id} escapes the package assets directory.`);let n=await Vo(i);if(!n.isFile()||n.isSymbolicLink())throw new Error(`Taskset asset ${s.id} is not a regular file.`);let o=await Go(i);if(o.byteLength!==s.sizeBytes||nt(o)!==s.sha256)throw new Error(`Taskset asset ${s.id} does not match its immutable manifest.`)}}d(vt,"verifyPublishedTasksetAssets");function pr(a,e,t){a.exec("BEGIN IMMEDIATE");try{let r=a.get("SELECT content_hash, profile_id FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[e.id,e.revision]);if(r&&r.content_hash!==e.contentHash)throw new Error(`Taskset ${e.id}@${e.revision} is immutable and already has another content hash.`);let s=a.get("SELECT payload FROM tasksets WHERE id = ?",[e.id]),i=s?P.parse(JSON.parse(s.payload)):null;if(r&&r.profile_id!==e.profileId||i&&i.profileId!==e.profileId)throw new Error(`Taskset ${e.id} belongs to another Profile.`);let n=JSON.stringify(e);a.run(`INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at)
|
|
2139
2139
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
2140
2140
|
ON CONFLICT(taskset_id, revision) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[e.id,e.revision,e.contentHash,e.profileId,e.status,n,e.createdAt,e.updatedAt]),(!i||i.revision<=e.revision)&&a.run(`INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at)
|
|
2141
2141
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
2142
|
-
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}}d(pr,"saveTasksetRevision");import{createHash as dd}from"node:crypto";function ca(a){let e=Ke.parse(a.setup),t=typeof a.package=="object"&&a.package!==null&&"schemaVersion"in a.package&&a.package.schemaVersion==="openpond.tasksetPackage.v1"?Ce(a.package):null,r=t?null:
|
|
2142
|
+
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}}d(pr,"saveTasksetRevision");import{createHash as dd}from"node:crypto";function ca(a){let e=Ke.parse(a.setup),t=typeof a.package=="object"&&a.package!==null&&"schemaVersion"in a.package&&a.package.schemaVersion==="openpond.tasksetPackage.v1"?Ce(a.package):null,r=t?null:Kr(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(_=>_.split==="frozen_eval"||_.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 c=s.taskset.tasks.filter(_=>_.split==="train"),p=t?t.taskset.graders:lt(r.rewardBinding,r.rewards),l=p.find(_=>_.rewardEligible&&_.weight>0),m=t?.environment??r?.executionResources?.environment??r?.execution?.environment;if(!c.length||!l||!m)return e;let T=8,f=8;return Ke.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(_=>_.split==="frozen_eval")?"frozen_eval":"validation",maxPromptTokens:4096,maxExamples:Math.min(1e3,c.length),selectionStrategy:"stable_hash_top_n"},lora:{rank:2},rollout:{groupSize:T,concurrency:4,maxTurns:s.taskset.environment.kind==="text"?1:15,maxOutputTokens:1024,temperature:.8,topP:.95,seed:17},optimizer:{learningRate:1e-4,maxSteps:f,clipRange:.2,iterations:2,microbatchSize:1,gradientAccumulationSteps:T,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:Xa(p),environmentId:m.id,environmentVersion:String(m.revision),toolContractHash:Xa(s.taskset.tools),learnedPreference:null},resourceLimits:{wallTimeMs:3960*1e3,maxRollouts:f*T,maxPayloadBytes:1e6},policyOptimization:null}})}d(ca,"prepareModelTrainingDefaults");var da=u.string().trim().min(1).max(500),me=Z,Qo=u.object({schemaVersion:u.literal("openpond.modelStarter.v1"),id:da,revision:u.number().int().positive(),name:u.string().trim().min(1).max(200),description:u.string().trim().min(1).max(2e3),category:u.enum(["extraction","support","operations","knowledge","coding","writing","classification"]),taskset:me,taskDefinition:me,rewardBinding:me,rewards:u.array(me).min(1).max(100),assets:u.array(me).max(1e3),previewTaskIds:u.array(da).min(1).max(8),startingModel:qr,supportedMethods:u.array(xa).min(1).max(8),defaultMethod:xa,provenance:u.object({author:u.string().min(1).max(200),license:u.string().min(1).max(200),sourceDescription:u.string().min(1).max(2e3)}).strict(),evidence:u.object({verifierFixtures:me.nullable(),baseline:me.nullable(),training:me.nullable(),evaluation:me.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."})}),Zo=Qo.safeExtend({contentHash:u.string().regex(/^[a-f0-9]{64}$/)}),ed=u.object({starter:Zo,taskset:fe,taskDefinition:Ri,rewardBinding:Xt,rewards:u.array($e).min(1).max(100),assets:u.array(Ti).max(1e3),execution:jt.optional()}).strict(),td=u.object({schemaVersion:u.literal("openpond.modelStarterPrivacyReview.v1"),disposition:u.literal("synthetic_only"),reviewedBy:u.string().trim().min(1).max(500),reviewedAt:u.iso.datetime(),reviewedContentHash:u.string().regex(/^[a-f0-9]{64}$/),note:u.string().trim().min(1).max(2e3)}).strict();function ad(a){let{contentHash:e,...t}=a.starter,{contentHash:r,...s}=a.taskset,{contentHash:i,...n}=t.taskset,o={...s.metadata},c=o.starterAuthoring;if(c&&typeof c=="object"&&!Array.isArray(c)){let{privacyReview:p,...l}=c;o.starterAuthoring=l}return Q({...a,starter:{...t,taskset:n},taskset:{...s,metadata:o}}).contentHash}d(ad,"modelStarterPrivacyContentHash");var rd=u.object({profileId:da,modelId:da,name:u.string().trim().min(1).max(200),starter:me,startingModel:qr,method:xa,rewardBindingRef:me.nullable().optional(),learning:Br.optional()}).strict(),sd=rd.extend({schemaVersion:u.literal("openpond.modelStarterCreation.v1"),operationId:da}).strict();function la(a){return ct(a,64*1024),sd.parse(a)}d(la,"parseModelStarterCreationRequest");function pa(a,e){let t=la(a),r=ua(e);if(!H(t.starter,O(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}}d(pa,"validateModelStarterCreation");function Vc(a){let{starter:e,taskset:t,taskDefinition:r,rewardBinding:s,rewards:i}=ua(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(c=>H(n.reward,O(c)));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(c=>c.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}}}d(Vc,"previewModelStarter");function ua(a){ct(a,16*1024*1024);let e=ed.parse(a),{starter:t,taskset:r,taskDefinition:s,rewardBinding:i,rewards:n,assets:o}=e,c=r.metadata.starterAuthoring;if(c&&typeof c=="object"&&!Array.isArray(c)&&"privacyReview"in c&&td.parse(c.privacyReview).reviewedContentHash!==ad(e))throw new Error("Starter privacy review differs from the published contents.");let p=[t,r,s,i,...n,...o];for(let R of p){let{contentHash:E,...y}=R;if(Q(y).contentHash!==E)throw new Error(`Starter resource integrity failed: ${R.id}.`)}ui(r),Zi(e.execution,r,o);function l(R,E){if(!H(R,O(E)))throw new Error(`Starter dependency mismatch: ${R.id}.`)}if(d(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:m,environment:T,environmentRelease:f,tools:_,capabilities:I,verifierSetRelease:N}=r,w={policy:m,environment:T,...f?{environmentRelease:f}:{},tools:_,capabilities:I,...N?{verifierSetRelease:N}:{}};if(Q(w).contentHash!==Q(s.execution).contentHash)throw new Error("Starter execution context differs from its task format.");if(Q({graders:r.graders}).contentHash!==Q({graders:lt(i,n)}).contentHash)throw new Error("Starter executable graders differ from its Reward binding.");for(let[R,E]of[[t.rewards,n],[t.assets,o]]){if(R.length!==E.length||new Set(E.map(y=>y.id)).size!==E.length)throw new Error("Starter dependency inventory mismatch.");for(let y of R){let M=E.find(B=>B.id===y.id);if(!M)throw new Error(`Starter dependency is missing: ${y.id}.`);l(y,M)}}for(let R of i.sources){let E=n.find(y=>y.id===R.reward.id);if(!E)throw new Error(`Starter Reward is missing: ${R.reward.id}.`);l(R.reward,E)}for(let R of n){let E=R.implementation,y=[...R.assets,..."verifierRef"in E?[E.verifierRef]:[],..."rubricRef"in E?[E.rubricRef]:[],..."inputContract"in E?[E.inputContract]:[]];for(let M of y){let B=o.find(te=>te.id===M.id);if(!B||Q(B.asset).contentHash!==Q(M).contentHash)throw new Error(`Starter Reward source is missing or changed: ${M.id}.`);if(M.visibility==="policy")throw new Error(`Starter Reward source must remain private to its evaluator: ${M.id}.`)}}if(new Set(r.tasks.map(R=>R.id)).size!==r.tasks.length)throw new Error("Starter task identities must be unique.");let S=new Map;for(let R of r.tasks){if(R.policyVisibleContext.instructions!==s.instructions)throw new Error(`Starter task does not carry its declared model instructions: ${R.id}.`);let E=Q({input:R.input,context:R.policyVisibleContext}).contentHash,y=S.get(E);if(y&&y!==R.split)throw new Error("Starter policy input appears in multiple splits.");if(S.set(E,R.split),!xr(s.inputSchema,R.input).valid)throw new Error(`Starter task input does not match its format: ${R.id}.`);if(R.expectedOutput!==null&&!xr(s.outputSchema,R.expectedOutput).valid)throw new Error(`Starter expected output does not match its format: ${R.id}.`)}for(let R of t.previewTaskIds){let E=r.tasks.find(y=>y.id===R);if(!E||E.split==="frozen_eval")throw new Error(`Starter preview task is unavailable: ${R}.`)}return e}d(ua,"validateResolvedModelStarter");import{createHash as Gc}from"node:crypto";function Y(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(k(JSON.parse(i.payload))!==k(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 (?, ?, ?, ?)
|
|
2143
2143
|
ON CONFLICT (scope, kind, id) DO UPDATE SET revision = excluded.revision
|
|
2144
|
-
WHERE learning_resources.revision < excluded.revision`,[e,t,s.id,s.revision])}d(Y,"importStarterReleaseInTransaction");function id(a,e,t){function r(o,c){let p=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,o,c.id,c.revision]);p||rt(404,"model_reward_unavailable",`The exact ${o} resource is unavailable in this Profile.`);let l=ae[o].parse(JSON.parse(p.payload));return Re(l),c.contentHash&&l.contentHash!==c.contentHash&&rt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),l}d(r,"read");let s=r("binding",t),i=[...new Map(s.sources.map(o=>[k(o.reward),r("reward",o.reward)])).values()],n=new Map;for(let o of i){let c=o.implementation;for(let p of[...o.assets,..."verifierRef"in c?[c.verifierRef]:[],..."rubricRef"in c?[c.rubricRef]:[],..."inputContract"in c?[c.inputContract]:[]])n.has(p.id)||n.set(p.id,r("asset",{id:p.id,revision:1})),we(n.get(p.id),p)}return{rewardBinding:s,rewards:i,assets:[...n.values()]}}d(id,"readSelectedModelReward");function ur(a,e,t,r){let s=Z.parse(e.metadata.rewardBinding),i=d((w,S)=>{let R=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.profileId,w,S.id,S.revision]);R||rt(404,"model_reward_unavailable",`The exact ${w} resource is unavailable in this Profile.`);let E=ae[w].parse(JSON.parse(R.payload));return Re(E),S.contentHash&&E.contentHash!==S.contentHash&&rt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),E},"read"),n=i("definition",Z.parse(e.metadata.taskDefinition));(k(e.policy)!==k(n.execution.policy)||k(e.environment.metadata.portableEnvironment)!==k(n.execution.environment)||k(e.environment.metadata.portableTools)!==k(n.execution.tools))&&rt(409,"model_taskset_context_changed","Taskset context differs from its immutable task definition.");let o=i("binding",s),c=[...new Map(o.sources.map(w=>[k(w.reward),i("reward",w.reward)])).values()];e.metadata.rewardExecution!==void 0&&k(e.metadata.rewardExecution)!==k({binding:o,rewards:c})&&rt(409,"model_taskset_rewards_changed","Taskset embedded Rewards differ from their immutable binding.");let p=i("binding",t),l=[...new Map(p.sources.map(w=>[k(w.reward),i("reward",w.reward)])).values()],m=new Map((r?.modelResources?.assets??[]).map(w=>[w.id,w])),T=d(w=>{m.has(w)||m.set(w,i("asset",{id:w,revision:1}))},"addAsset");for(let w of[...c,...l]){let S=w.implementation;for(let R of[...w.assets,..."verifierRef"in S?[S.verifierRef]:[],..."rubricRef"in S?[S.rubricRef]:[],..."inputContract"in S?[S.inputContract]:[]])T(R.id)}let f,_=Wr.shape.executionResources.parse(e.environment.metadata.portableExecutionResources);if(n.execution.environment.entrypoint==="openpond.javascript-environment.v1"){let w=i("asset",{id:qr(n.execution),revision:1});f=Ht.parse(JSON.parse(we(w,w.asset)));for(let S of[f.javascript.module,f.environment.actionSchemaRef,f.environment.observationSchemaRef,f.environment.stateSchemaRef])S&&T(S.id)}for(let w of e.tasks)w.privilegedContextRef&&T(w.privilegedContextRef);k(e.graders)!==k(Et(o,c,[...m.values()]))&&rt(409,"model_taskset_graders_changed","Taskset graders differ from their immutable Reward binding.");let I=fe.parse(Q({schemaVersion:"openpond.tasksetRelease.v2",id:e.id,revision:e.revision,...n.execution,graders:lt(o,c),...e.metrics?{metrics:e.metrics}:{},tasks:e.tasks.map(w=>{let S=un(w);return w.requiredOutputs===void 0&&w.metadata.portableTaskRecord===void 0&&delete S.requiredOutputs,S}),metadata:e.metadata.derivedPortableMetadata??{localSource:O(e),starter:{taskDefinition:O(n),rewardBinding:s}}}));return{sourcePackage:r?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:{taskset:I,taskDefinition:n,rewardBinding:o,rewards:c,assets:[...m.values()],..._?{executionResources:_}:{},...f?{execution:f}:{}},selectedBinding:p,selectedRewards:l,assets:m}}d(ur,"readModelTasksetSource");function rt(a,e,t){throw new Ae(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}d(rt,"fail");function Cs(a){if(a?.metadata.learning===void 0)return null;let e=gi.parse(a.metadata.learning);return Re(e.definition),fi(e.binding,e.rewards),H(e.definition.rewardBinding,O(e.binding))||ke(409,"model_batch_binding_changed","Reviewed task definition and Reward binding do not match."),e.binding}d(Cs,"reviewedTasksetRewardBinding");function Ps(a,e,t=!0,r){let s=Mt(e),{project:i}=s,n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?F.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&ke(404,"model_not_found","Model is not available in this Profile."),(o?.revision??0)!==s.expectedRevision&&ke(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let c=i.trainingSetup.tasksetRef;if(!c||!i.trainingSetup.rewardBindingRef)return null;let p=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[c.id,c.revision]),l=p?P.parse(JSON.parse(p.payload)):null;(!l||l.profileId!==i.profileId)&&ke(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),(l.contentHash!==c.contentHash||ie(l)!==l.contentHash)&&ke(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash.");let m=Cs(l);if(m)return H(O(m),i.trainingSetup.rewardBindingRef)||ke(422,"model_batch_reward_review_required","Changing a reviewed batch's Reward requires regrading and a new reviewed batch."),null;let T=l.metadata.rewardBinding===void 0?null:Z.parse(l.metadata.rewardBinding);if(T&&H(T,i.trainingSetup.rewardBindingRef))return null;if(!T&&r&&!r.modelResources&&!r.learningResources){let b=id(a,i.profileId,i.trainingSetup.rewardBindingRef),g=vn({owner:{scopeId:i.profileId,modelId:i.id},source:r,...b}),A=nd(a,s,t),j=Rt({package:g,profileId:i.profileId,name:l.name,createdAt:A.created_at}),K={...g.modelResources,taskset:g.taskset,executionResources:{environment:g.environment,verifierSet:g.verifierSet}};return{taskset:j.taskset,generatedFiles:j.generatedFiles,directoryId:String(j.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:null,derived:K,imported:j}}T||ke(422,"model_taskset_derivation_unavailable","This Taskset needs an authored task definition and Reward binding before its Reward can be changed.");let{sourcePackage:f,selectedBinding:_,selectedRewards:I,assets:N}=ur(a,l,i.trainingSetup.rewardBindingRef,r),w=ut.safeParse(f.taskset.metadata.modelTasksetDerivation),R=o?.hosted?.apiOrigin&&o.hosted.tasksets.some(b=>{if(!w.success||b.localTasksetId!==l.id||!b.packageHash||!b.localTasksetHash)return!1;let g=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND content_hash = ? AND profile_id = ?",[l.id,b.localTasksetHash,i.profileId]),A=g?P.parse(JSON.parse(g.payload)):null;if(!A||A.contentHash!==b.localTasksetHash)return!1;let j=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = 'package' AND id = ? AND revision = ?",[i.profileId,b.releaseId,b.releaseRevision]),K=j?fe.parse(JSON.parse(j.payload)):null,L=ut.safeParse(K?.metadata.modelTasksetDerivation);return K?.contentHash===b.releaseHash&&L.success&&k(L.data.owner)===k(w.data.owner)&&H(L.data.root,w.data.root)})&&w.success&&w.data.owner.modelId===i.id?w.data.owner:{scopeId:i.profileId,modelId:i.id},E=Ft({owner:R,source:f,rewardBinding:_,rewards:I,assets:[...N.values()]}),y=nd(a,s,t);if(r){let b=new Map(r.files.map(z=>[z.asset.id,z]));for(let z of E.assets)b.set(z.id,{asset:z.asset,base64:Buffer.from(z.text).toString("base64")});let{taskset:g,executionResources:A,...j}=E;if(!A)throw new Error("Derived imported package is missing execution resources.");let K=Ma({schemaVersion:"openpond.tasksetPackage.v1",taskset:g,...A,modelResources:j,files:[...b.values()]}),L=Rt({package:K,profileId:i.profileId,name:l.name,createdAt:y.created_at});return{taskset:L.taskset,generatedFiles:L.generatedFiles,directoryId:String(L.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:f,derived:E,imported:L}}let M=`${E.taskset.id}-r${E.taskset.revision}-${Q({packageHash:E.taskset.contentHash,preparedAt:y.created_at}).contentHash}`,B=Ua(l,y.created_at),te=new Map(E.taskset.tasks.map(b=>[b.id,b])),Ee=[];for(let b of E.taskset.graders)if(b.kind==="custom_verifier"){let g=Fa(b.verifierRef.contentHash);Ee.some(A=>A.path===g)||Ee.push({path:g,role:"verifier",content:we(N.get(b.verifierRef.id),b.verifierRef)})}let D=Ha({tasksetId:E.taskset.id,now:y.created_at,sourcePackageHash:E.taskset.contentHash,draft:{...B,policy:E.taskset.policy,tasks:B.tasks.map(b=>({...b,metadata:{...b.metadata,portableTaskRecord:te.get(b.id)}})),environment:{...B.environment,metadata:{...B.environment.metadata,runtimeSourceTasksetId:M,portableExecutionResources:E.executionResources}},graders:Et(_,I,[...N.values()]),learningSignals:{...B.learningSignals,rewards:B.learningSignals.rewards.map(b=>({...b,rules:[{id:_.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],artifactRef:_.id,metadata:{...b.metadata,rewardBinding:O(_)}}))},metadata:{...B.metadata,portableCapabilities:E.taskset.capabilities,taskDefinition:O(E.taskDefinition),rewardBinding:O(_),rewardExecution:{binding:_,rewards:I},derivedPortableMetadata:E.taskset.metadata,modelTasksetDerivation:E.taskset.metadata.modelTasksetDerivation}}});if(D.metrics=E.taskset.metrics,D.contentHash=ie(D),D.revision!==E.taskset.revision)throw new Error("Derived local and portable Taskset revisions differ.");return{taskset:D,generatedFiles:Ee,directoryId:M,source:l,sourcePackage:f,derived:E}}d(Ps,"prepareModelTasksetSave");function od(a,e,t){let r=e.project.profileId;for(let o of[t.sourcePackage,t.derived]){if(!o)continue;for(let p of o.assets)Y(a,r,"asset",p);for(let p of o.rewards)Y(a,r,"reward",p);Y(a,r,"binding",o.rewardBinding),Y(a,r,"package",o.taskset),Y(a,r,"definition",o.taskDefinition);let c=o.executionResources??o.execution;c&&Y(a,r,"asset",Je(c)),o.execution&&Y(a,r,"asset",be(o.execution))}let s=t.taskset;a.get("SELECT content_hash FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[s.id,s.revision])&&ke(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])}d(od,"commitPreparedModelTaskset");function nd(a,e,t){let r=Gc("sha256").update(k(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&&ke(409,"model_operation_conflict","This save operation was already used with different Model configuration."),i}d(nd,"recordModelTasksetPreparation");function ke(a,e,t){throw new Ae(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}d(ke,"fail");function mr(a,e){let t=Mt(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=dd("sha256").update(k(t)).digest("hex");return r.request_hash!==s&&Te(409,"model_operation_conflict","This save operation was already used with different Model configuration."),F.parse(JSON.parse(r.payload))}d(mr,"findModelProjectSave");function cd(a,e,t,r){a.exec("BEGIN IMMEDIATE");try{let s=ma(a,e,t,r);return a.exec("COMMIT"),s}catch(s){throw a.exec("ROLLBACK"),s}}d(cd,"commitModelProjectSave");function ma(a,e,t,r){let s=Mt(e);s.learning&&Te(422,"model_learning_hosted_required","Create this Model in a hosted workspace to enable continual learning.");let i=dd("sha256").update(k(s)).digest("hex"),{project:n,operationId:o,expectedRevision:c}=s,p=mr(a,s);if(p)return p;let l=a.get("SELECT payload FROM model_projects WHERE id = ?",[n.id]),m=l?F.parse(JSON.parse(l.payload)):null;m&&m.profileId!==n.profileId&&Te(404,"model_not_found","Model is not available in this Profile."),(m?.revision??0)!==c&&Te(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let T=Qc(a,s),f=Cs(T);f||Zc(a,s);let _=f?O(f):T?.metadata.rewardBinding===void 0?null:Z.parse(T.metadata.rewardBinding);T&&n.trainingSetup.rewardBindingRef&&(!_||!H(_,n.trainingSetup.rewardBindingRef))&&!t&&Te(409,"model_taskset_preparation_required","Changing this Reward requires publishing its model-owned Taskset revision."),t&&((!n.trainingSetup.tasksetRef||!H(n.trainingSetup.tasksetRef,O(t.source))||!n.trainingSetup.rewardBindingRef||!H(n.trainingSetup.rewardBindingRef,O(t.derived.rewardBinding)))&&Te(409,"model_taskset_preparation_changed","The prepared Taskset differs from the selected configuration."),od(a,s,t));let I=new Date().toISOString(),N=Ke.parse({...n.trainingSetup,baseModel:n.trainingSetup.baseModel??n.defaultBaseModel,method:n.trainingSetup.method??(T?.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":T?.authoringProvenance.buildIntent==="demonstrations"?"sft":null),..._?{rewardBindingRef:_}:{},...t?{rewardBindingRef:O(t.derived.rewardBinding),tasksetRef:O(t.taskset),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&H(n.trainingSetup.evaluationTasksetRef,O(t.source))?{evaluationTasksetRef:O(t.taskset)}:{}}:{}}),w=t?.derived??r??(T&&!f&&N.rewardBindingRef&&T.metadata.taskDefinition!==void 0&&T.metadata.rewardBinding!==void 0?ur(a,T,N.rewardBindingRef).sourcePackage:void 0),S=F.parse({...m,...n,trainingSetup:w?ca({setup:N,package:w}):N,schemaVersion:"openpond.modelProject.v2",revision:c+1,hosted:m?.hosted??null,tasksetSyncs:m?.tasksetSyncs??[],createdAt:m?.createdAt??I,updatedAt:I});return a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
|
|
2145
|
-
ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[S.id,S.profileId,JSON.stringify(S),S.createdAt,S.updatedAt]),a.run("INSERT INTO model_project_save_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[S.profileId,o,i,JSON.stringify(S)]),S}d(ma,"saveModelProjectInTransaction");function Qc(a,e){let t=e.project.trainingSetup.tasksetRef;if(!t){e.project.trainingSetup.tasksetRelease&&Te(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?P.parse(JSON.parse(r.payload)):null;return(!s||s.profileId!==e.project.profileId)&&Te(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),s.contentHash!==t.contentHash&&Te(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash."),s}d(Qc,"assertTaskset");function Zc(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||Te(404,"model_reward_unavailable","The exact Reward configuration is unavailable in this Profile.");let c=(i==="binding"?Xt:$e).parse(JSON.parse(o.payload));return c.contentHash!==n.contentHash&&Te(409,"model_reward_changed","The selected Reward does not match its immutable content hash."),Re(c),c}d(r,"read");let s=Xt.parse(r("binding",t));for(let i of s.sources)r("reward",i.reward)}d(Zc,"assertReward");function Te(a,e,t){throw new Ae(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}d(Te,"fail");function ld(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=F.parse(JSON.parse(i.payload)),o={id:t.id,revision:t.revision,contentHash:t.contentHash};return ma(a,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${h({draftId:e.id,revision:e.revision,scope:s,tasksetRef:o})}`,expectedRevision:s.expectedModelRevision,project:Ii.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&&H(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)}d(ld,"selectTasksetDraftModel");import{createHash as nl,randomUUID as ol}from"node:crypto";import{lstat as fd,mkdir as Ed,readdir as dl,readFile as cl,rename as ll,rm as pl,writeFile as ul}from"node:fs/promises";import It from"node:path";import{constants as xs}from"node:fs";import{link as el,lstat as tl,mkdir as Xs,mkdtemp as pd,open as al,readFile as rl,readdir as sl,rename as il,rm as ud,writeFile as md}from"node:fs/promises";import V from"node:path";async function n_(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 ge(a,t);if(!r.learningResources||r.taskset.id!==e.id||r.taskset.revision!==e.revision||h(La(r.taskset))!==h(e.metadata.learning))throw new Error("Imported batch differs from its pinned package.");return r}d(n_,"readImportedLearningTasksetPackage");async function st(a,e){let t=Ce(e),r=V.join(a,"training","portable-packages");await Xs(r,{recursive:!0});let s=V.join(r,`${t.contentHash}.json`),i=await pd(V.join(r,".package-"));try{let n=V.join(i,"package.json");await md(n,JSON.stringify(t),{flag:"wx",mode:384});try{await el(n,s)}catch(o){if(o.code!=="EEXIST")throw o;await ge(a,t.contentHash)}}finally{await ud(i,{recursive:!0,force:!0})}}d(st,"cacheTasksetPackage");async function ge(a,e){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid Taskset package cache identity.");let t=V.join(a,"training","portable-packages",`${e}.json`),r=await al(t,xs.O_RDONLY|xs.O_NOFOLLOW|xs.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>ze)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 c=await r.read(i,n,i.length-n,n);if(!c.bytesRead)throw new Error("Taskset package cache changed during read.");n+=c.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset package cache changed during read.");let o=Ce(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()}}d(ge,"readCachedTasksetPackage");async function Ta(a){let e=Ce(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=d((c,p)=>{if(V.isAbsolute(c)||c.includes("\\")||c.split("/").some(m=>!m||m==="."||m===".."))throw new Error("Taskset package file requires a safe relative path.");let l=r.get(c);if(l&&!Buffer.from(l).equals(Buffer.from(p)))throw new Error(`Taskset package files collide at ${c}.`);r.set(c,p)},"add");for(let c of e.files)s(c.asset.path,mt(c));for(let c of a.generatedFiles)s(c.path,Buffer.from(c.content,"utf8"));s("taskset.json",Buffer.from(JSON.stringify(a.taskset),"utf8"));let i=V.join(a.home,"training","tasksets");await Xs(i,{recursive:!0});let n=await pd(V.join(i,".package-import-")),o=V.join(i,t);try{for(let[c,p]of r)await Xs(V.dirname(V.join(n,c)),{recursive:!0}),await md(V.join(n,c),p,{flag:"wx",mode:384});try{await il(n,o)}catch(c){if(!["EEXIST","ENOTEMPTY"].includes(c.code??""))throw c;let p=await tl(o);if(!p.isDirectory()||p.isSymbolicLink())throw new Error("Imported Taskset destination must be a regular directory.");let l=await Td(o);if(JSON.stringify(l.sort())!==JSON.stringify([...r.keys()].sort()))throw new Error("Imported Taskset file inventory changed.");for(let[m,T]of r)if(!(await rl(V.join(o,m))).equals(Buffer.from(T)))throw new Error("Imported Taskset files differ from the pinned package.")}await st(a.home,e)}finally{await ud(n,{recursive:!0,force:!0})}}d(Ta,"materializeImportedTasksetPackage");async function Td(a,e=""){let t=[];for(let r of await sl(V.join(a,e),{withFileTypes:!0})){let s=V.posix.join(e,r.name);if(r.isSymbolicLink())throw new Error("Imported Taskset directories cannot contain symbolic links.");if(r.isDirectory())t.push(...await Td(a,s));else if(r.isFile())t.push(s);else throw new Error("Imported Taskset packages require regular files.")}return t}d(Td,"regularFiles");var Ot=Ln.extend({workspaceHash:u.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function _d(a){let{db:e,profileId:t}=a,r=Ur.parse(a.request),s=d(()=>{let y=e.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[r.modelId,t]);if(!y)throw new Error("Taskset draft Model was not found in this Profile.");return F.parse(JSON.parse(y.payload))},"requireModel"),i=s(),n=h(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 Ot.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 c=i.trainingSetup.tasksetRef,p=c?e.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[c.id,c.revision,t]):null,l=p?P.parse(JSON.parse(p.payload)):null;if(!l||!c||l.contentHash!==c.contentHash)throw new Error("The selected source Taskset is unavailable.");let m=a.source,T=i.hosted?.apiOrigin?i.hosted.tasksets.find(y=>y.localTasksetId===l.id&&y.localTasksetHash===l.contentHash&&y.packageHash===m.contentHash&&y.releaseId===m.taskset.id&&y.releaseRevision===m.taskset.revision&&y.releaseHash===m.taskset.contentHash):null,f=typeof l.metadata.importedPackageHash=="string"?l.metadata.importedPackageHash:T?.packageHash;if(f?f!==m.contentHash:!H(O(Pe({taskset:l,adapterId:he(l)}).tasksetRelease),O(m.taskset)))throw new Error("Taskset draft package differs from its selected source.");let _=m.modelResources?ut.safeParse(m.taskset.metadata.modelTasksetDerivation):Dr.safeParse(m.taskset.metadata.modelTasksetAuthoring),I=T&&_.success&&_.data.owner.modelId===i.id?_.data.owner:{scopeId:t,modelId:i.id},N=wn({request:r,owner:I,source:m}),w=An({sourceDraft:Ua(l),source:m,preparation:N,expectedModelRevision:r.expectedModelRevision});await st(a.home,m);let S=Ot.parse({...w,workspaceHash:null}),R=S.draft;e.exec("BEGIN IMMEDIATE");try{let y=e.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(y&&y.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(!y&&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,R.id,JSON.stringify(S)]),e.exec("COMMIT")}catch(y){throw e.exec("ROLLBACK"),y}let E=e.get("SELECT request_hash, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(!E||E.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");return Ot.parse(JSON.parse(E.payload))}d(_d,"prepareDraftInitialization");async function hd(a){let{initialized:e,workspacePath:t}=a;if(a.completed())return;if(e.workspaceHash)try{if(await fd(t),a.completed())return;if(await Ms(t),await J(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-${ol()}`;await Ed(It.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 ge(a.home,s.sourcePackageHash),n=new Map;for(let c of e.filePaths){let p=i.files.find(l=>l.asset.id===c.assetId);if(!p)throw new Error("Taskset draft source asset is missing.");for(let l of c.paths){if(l.includes("\\")||It.posix.isAbsolute(l)||l.split("/").some(f=>!f||f==="."||f===".."||f.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let m=n.get(l);if(m&&m!==p.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(m)continue;let T=It.join(r,l);await Ed(It.dirname(T),{recursive:!0}),await ul(T,mt(p),{flag:"wx"}),n.set(l,p.asset.contentHash)}}await Vt(e.draft,r);for(let[c,p]of n)if(nl("sha256").update(await cl(It.join(r,c))).digest("hex")!==p)throw new Error(`Taskset draft source asset conflicts with authoring file ${c}.`);let o=await J(r);if(a.retainHash({...e,workspaceHash:o}),a.completed())return;try{await ll(r,t)}catch(c){if(!["EEXIST","ENOTEMPTY"].includes(c.code??""))throw c;if(a.completed())return;if(await Ms(t),await J(t)!==o)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await pl(r,{recursive:!0,force:!0})}}d(hd,"materializeDraftInitialization");async function Ms(a){let e=await fd(a);if(!e.isDirectory()||e.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let t of await dl(a,{withFileTypes:!0})){if(t.name.startsWith(".env")||t.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(t.isDirectory())await Ms(It.join(a,t.name));else if(!t.isFile())throw new Error("Taskset draft source must contain regular files.")}}d(Ms,"assertRegularTree");import Tl from"node:path";import{constants as Ds}from"node:fs";import{open as ml,realpath as gd}from"node:fs/promises";import Ea from"node:path";function yd(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?$r(a.learningResources).map(t=>t.asset.id):[]])}d(yd,"tasksetPackageInlineAssetIds");async function Lt(a){let e=a.sources.length?await gd(a.root):Ea.resolve(a.root),t=[],r=new Set,s=0,i=d((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>ze)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=Zs.parse(n.asset);if(!n.sourcePath||Ea.isAbsolute(n.sourcePath))throw new Error(`Taskset asset ${o.id} requires a relative source path.`);let c=Ea.resolve(e,n.sourcePath);if(!c.startsWith(`${e}${Ea.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);if(!(await gd(c)).startsWith(`${e}${Ea.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);let l=await ml(c,Ds.O_RDONLY|Ds.O_NOFOLLOW|Ds.O_NONBLOCK);try{let m=await l.stat();if(!m.isFile()||m.size!==o.sizeBytes)throw new Error(`Taskset asset ${o.id} differs from its immutable file size.`);if(4*Math.ceil(m.size/3)+s>ze)throw new Error("Local Taskset files exceed the package envelope.");let T=Buffer.alloc(m.size),f=0;for(;f<T.length;){let I=await l.read(T,f,T.length-f,f);if(!I.bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);f+=I.bytesRead}if((await l.read(Buffer.alloc(1),0,1,f)).bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);i(o,T)}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(we(n,n.asset),"utf8"));if(a.content.learningResources)for(let n of $r(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,c)=>[o,c]));t.sort((o,c)=>n.get(o.asset.id)-n.get(c.asset.id))}return Ma({...a.content,files:t})}d(Lt,"captureLocalTasksetPackage");async function Rd(a){let e=Pe({taskset:a.taskset,adapterId:he(a.taskset)}),t=await Lt({root:a.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:e.tasksetRelease,environment:e.environmentRelease,verifierSet:e.verifierSetRelease},sources:Me.parse(a.taskset.metadata.portableFileInventory??[])}),r=a.preparation.authoringGraph==="bound"?await ge(a.home,a.preparation.sourcePackageHash):void 0,s=Nn({preparation:a.preparation,edited:t,source:r});if(s.modelResources){let T=Rt({package:s,profileId:a.taskset.profileId,name:a.taskset.name,createdAt:a.taskset.createdAt}),f=P.parse({...T.taskset,authoringProvenance:a.taskset.authoringProvenance,metadata:{...T.taskset.metadata,sourcePackageHash:a.taskset.metadata.sourcePackageHash}}),_=P.parse({...f,contentHash:ie(f)});return await Ta({home:a.home,...T,taskset:_}),{taskset:_,directory:Tl.join(a.home,"training","tasksets",String(_.environment.metadata.runtimeSourceTasksetId))}}let i=Me.parse(a.taskset.metadata.portableFileInventory??[]),n=s.files.map(T=>({asset:T.asset,sourcePath:i.find(f=>f.asset.id===T.asset.id)?.sourcePath??T.asset.path})),o=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(T=>T.asset.path==="environment/execution.json"):void 0,c=`model-draft-${h({packageHash:s.contentHash,taskset:a.taskset})}`,p=P.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:c,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),l=P.parse({...p,contentHash:ie(p)}),m=await tt(a.home,{taskset:l,generatedFiles:o?[{path:o.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(mt(o))}]:[]},c,{source:{directory:a.directory,packageHash:await J(a.directory)},verify:d(T=>vt(T,l),"verify")});return await st(a.home,s),{directory:m,taskset:l}}d(Rd,"materializeModelTasksetDraftPublication");import{constants as Us}from"node:fs";import{createHash as El}from"node:crypto";import{lstat as Nd,mkdir as fl,open as _l,readdir as hl,rm as wd}from"node:fs/promises";import Tr from"node:path";var it=d((a,e)=>Pn(Tr.join(a,"state","taskset-draft-writes"),e),"withTasksetDraftLock"),Sd=Gi,gl=d(a=>El("sha256").update(a).digest("hex"),"digest");async function Er(a,e,t=!1){Aa.parse(e);let r=a;for(let s of["",...e.split("/").slice(0,-1)]){s&&(r=Tr.join(r,s)),t&&await fl(r,{recursive:!1}).catch(n=>{if(n.code!=="EEXIST")throw n});let i=await Nd(r);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return Tr.join(a,e)}d(Er,"regularPath");async function kd(a,e){let t=await Er(a,e),r=await _l(t,Us.O_RDONLY|Us.O_NOFOLLOW|Us.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Vi)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()}}d(kd,"readBytes");async function vd(a,e){let t=await kd(a,e);return Qi(e,t)}d(vd,"readTasksetDraftFile");async function Id(a){let e=[];async function t(r=""){for(let s of await hl(Tr.join(a,r),{withFileTypes:!0})){let i=r?`${r}/${s.name}`:s.name;if(Aa.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 Nd(await Er(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:Sd(i)})}}return d(t,"visit"),await Er(a,"taskset.json"),await t(),e.sort((r,s)=>r.path.localeCompare(s.path))}d(Id,"listTasksetDraftFiles");async function Od(a,e,t){if(!Sd(e.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let r=null;try{r=await kd(a,e.path)}catch(n){if(n.code!=="ENOENT")throw n}if((r?gl(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?Zi(e.content):null,i=await Er(a,e.path,!0);s?await ns(i,s):await wd(i);try{return await t()}catch(n){throw r?await ns(i,r):await wd(i,{force:!0}),n}}d(Od,"mutateTasksetDraftFile");function fr(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&&k(P.parse(JSON.parse(i.payload)))!==k(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?P.parse(JSON.parse(n.payload)):null;if(o&&o.profileId!==s)throw new Error("Imported Taskset belongs to another Profile.");Y(a,s,"package",r.taskset);let c=r.modelResources;if(c){Y(a,s,"definition",c.taskDefinition),Y(a,s,"binding",c.rewardBinding);for(let l of c.rewards)Y(a,s,"reward",l);for(let l of c.assets)Y(a,s,"asset",l);Y(a,s,"asset",Je({environment:r.environment,verifierSet:r.verifierSet})),c.execution&&Y(a,s,"asset",be(c.execution))}let p=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,p,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,p,t.createdAt,t.updatedAt])}d(fr,"importTasksetPackageInTransaction");var ce=u.object({schemaVersion:u.literal("openpond.tasksetDraftPointer.v1"),id:u.string().trim().min(1),profileId:u.string().trim().min(1),modelScope:pe.shape.modelScope,status:u.enum(["draft","validating","needs_review","published"]),revision:u.number().int().positive(),workspacePath:u.string().trim().min(1),packageHash:u.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:u.object({id:u.string().trim().min(1),revision:u.number().int().positive(),contentHash:u.string().trim().min(8)}).nullable(),createdAt:u.string().trim().min(1),updatedAt:u.string().trim().min(1)}),_r=class extends cr{static{d(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 _d({db:i,home:this.home,profileId:e,request:t,source:r});if(!n)return null;let o=d(()=>{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 m=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);if(!m){if(l?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let T=ce.parse(JSON.parse(m.payload));if(T.profileId!==e||T.modelScope?.source?.requestHash!==n.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),c=this.workspacePath(n.draft.id);await hd({home:this.home,initialized:n,workspacePath:c,completed:o,retainHash:d(l=>{let m=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),T=Ot.parse(JSON.parse(m.payload));if(T.workspaceHash&&T.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]),m=Ot.parse(JSON.parse(l.payload)),T=m.draft,f=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:T.id,profileId:e,modelScope:T.modelScope,status:T.status,revision:T.revision,workspacePath:c,packageHash:m.workspaceHash,publishedTasksetRef:T.publishedTasksetRef,createdAt:T.createdAt,updatedAt:T.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[T.id,e,T.status,T.revision,JSON.stringify(f),T.createdAt,T.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 p=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);return this.draftFromStoredPayload(JSON.parse(p.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(e,t,r={}){let s=pe.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(h(o.data.modelScope?{...o.data.modelScope,expectedModelRevision:0}:null)!==h(s.modelScope?{...s.modelScope,expectedModelRevision:0}:null)||!r.refreshModelRevision&&h(o.data.modelScope)!==h(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 T=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!T)throw new Error("Taskset draft Model was not found in this Profile.");if(F.parse(JSON.parse(T.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let c=this.workspacePath(s.id),l=(await Vt(s,c)).draft,m=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:l.id,profileId:l.profileId,modelScope:l.modelScope,status:l.status,revision:l.revision,workspacePath:c,packageHash:await J(c),publishedTasksetRef:l.publishedTasksetRef,createdAt:l.createdAt,updatedAt:l.updatedAt});return await this.savePointer(m,!0),l}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(e){let t=fa.resolve(e.packagePath),s=(await Sl(t)).isDirectory()?t:fa.dirname(t);await Ad(s);let i=await J(s),n=await is(s),o=await this.getTasksetDraft(n.id);if(o){let T=o.metadata.importedTasksetPackage;if(T&&typeof T=="object"&&!Array.isArray(T)&&T.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 c=pe.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()}),p=this.workspacePath(c.id),l=`${p}.import-${process.pid}-${Date.now()}`;await wl(fa.dirname(p),{recursive:!0});try{await Rl(s,l,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await Vt(c,l),await Hs(l,p)}catch(T){throw await Ld(l,{recursive:!0,force:!0}),T}let m=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:c.id,profileId:c.profileId,status:c.status,revision:c.revision,workspacePath:p,packageHash:await J(p),publishedTasksetRef:c.publishedTasksetRef,createdAt:c.createdAt,updatedAt:c.updatedAt});return await this.savePointer(m),this.draftFromStoredPayload(m)}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-${h({taskset:e.taskset,packageHash:t.packageHash})}`,s=await zo(e.taskset,t.workspacePath),i=P.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:t.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:r}}}),n=P.parse({...i,contentHash:ie(i)}),o=await tt(this.home,{taskset:n,generatedFiles:s.generatedFiles},r,{source:{directory:t.workspacePath,packageHash:t.packageHash},verify:d(p=>vt(p,n),"verify")}),c=await this.getTasksetDraft(e.draftId);return c?.modelScope?.source?Rd({home:this.home,directory:o,taskset:n,preparation:c.modelScope.source}):{directory:o,taskset:n}}async finalizeTasksetDraftPublication(e){await this.ready;let t=pe.parse(e.draft),r=P.parse(e.taskset),s=t.modelScope?.source?.authoringGraph==="bound"&&typeof r.metadata.importedPackageHash=="string"?await ge(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(h(o.modelScope)!==h(t.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.status==="published"&&o.publishedTasksetRef){let T=o.publishedTasksetRef,f=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[T.id,T.revision,T.contentHash]);if(!f)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:pe.parse({...t,status:o.status,revision:o.revision,publishedTasksetRef:T,updatedAt:o.updatedAt}),taskset:P.parse(JSON.parse(f.payload))}}if(o.revision!==t.revision||r.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let c=o.modelScope?.source,p=c?.authoringGraph==="bound"&&r.metadata.modelTasksetDerivation&&typeof r.metadata.modelTasksetDerivation=="object"?{...r.metadata.modelTasksetDerivation,schemaVersion:c.lineage.schemaVersion}:r.metadata.modelTasksetAuthoring;if(c&&(r.id!==c.tasksetId||r.revision!==c.tasksetRevision||h(p)!==h(c.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let l=pe.parse({...t,status:"published",revision:t.revision+1,publishedTasksetRef:{id:r.id,revision:r.revision,contentHash:r.contentHash},updatedAt:new Date().toISOString()}),m=ce.parse({...o,status:l.status,revision:l.revision,publishedTasksetRef:l.publishedTasksetRef,updatedAt:l.updatedAt});return pr(this.database,r,()=>{if(s&&fr(this.database,{package:s,taskset:r,generatedFiles:[]}),ld(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 = ?",[m.status,m.revision,JSON.stringify(m),m.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 readHumanPublishedTasksetDraft(e,t){let r=(await this.listTasksetDrafts(e)).filter(n=>n.status==="published"&&n.modelScope===null&&h(n.publishedTasksetRef)===h(t));if(r.length!==1)return null;let s=r[0],i=await this.getTasksetDraftWorkspace(s.id);return i?{draft:s,workspace:i}:null}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 J(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-${yl()}`,i=!1;try{await Hs(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 Hs(s,r).catch(()=>{}),n}i&&await Ld(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 vd(i.workspacePath,r);return{draftRevision:i.revision,file:{...o,writable:o.writable&&i.status!=="published"}}}let n=await Id(i.workspacePath);return{draftRevision:i.revision,files:n.map(o=>({...o,writable:o.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(e,t){let r=Hr.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 Od(n.workspacePath,r,async()=>{let o=ce.parse({...n,revision:n.revision+1,packageHash:await J(n.workspacePath),updatedAt:new Date().toISOString()}),c=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(p){throw this.database.exec("ROLLBACK"),p}return c})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(e){let t=h(e).slice(0,24);return fa.join(this.home,"workspaces","tasksets",`taskset-${t}`)}async draftFromStoredPayload(e){let t=await this.pointerFromStoredPayload(e),r=await is(t.workspacePath);return pe.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=pe.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)
|
|
2144
|
+
WHERE learning_resources.revision < excluded.revision`,[e,t,s.id,s.revision])}d(Y,"importStarterReleaseInTransaction");function id(a,e,t){function r(o,c){let p=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,o,c.id,c.revision]);p||rt(404,"model_reward_unavailable",`The exact ${o} resource is unavailable in this Profile.`);let l=ae[o].parse(JSON.parse(p.payload));return we(l),c.contentHash&&l.contentHash!==c.contentHash&&rt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),l}d(r,"read");let s=r("binding",t),i=[...new Map(s.sources.map(o=>[k(o.reward),r("reward",o.reward)])).values()],n=new Map;for(let o of i){let c=o.implementation;for(let p of[...o.assets,..."verifierRef"in c?[c.verifierRef]:[],..."rubricRef"in c?[c.rubricRef]:[],..."inputContract"in c?[c.inputContract]:[]])n.has(p.id)||n.set(p.id,r("asset",{id:p.id,revision:1})),Re(n.get(p.id),p)}return{rewardBinding:s,rewards:i,assets:[...n.values()]}}d(id,"readSelectedModelReward");function ur(a,e,t,r){let s=Z.parse(e.metadata.rewardBinding),i=d((w,S)=>{let R=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.profileId,w,S.id,S.revision]);R||rt(404,"model_reward_unavailable",`The exact ${w} resource is unavailable in this Profile.`);let E=ae[w].parse(JSON.parse(R.payload));return we(E),S.contentHash&&E.contentHash!==S.contentHash&&rt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),E},"read"),n=i("definition",Z.parse(e.metadata.taskDefinition));(k(e.policy)!==k(n.execution.policy)||k(e.environment.metadata.portableEnvironment)!==k(n.execution.environment)||k(e.environment.metadata.portableTools)!==k(n.execution.tools))&&rt(409,"model_taskset_context_changed","Taskset context differs from its immutable task definition.");let o=i("binding",s),c=[...new Map(o.sources.map(w=>[k(w.reward),i("reward",w.reward)])).values()];e.metadata.rewardExecution!==void 0&&k(e.metadata.rewardExecution)!==k({binding:o,rewards:c})&&rt(409,"model_taskset_rewards_changed","Taskset embedded Rewards differ from their immutable binding.");let p=i("binding",t),l=[...new Map(p.sources.map(w=>[k(w.reward),i("reward",w.reward)])).values()],m=new Map((r?.modelResources?.assets??[]).map(w=>[w.id,w])),T=d(w=>{m.has(w)||m.set(w,i("asset",{id:w,revision:1}))},"addAsset");for(let w of[...c,...l]){let S=w.implementation;for(let R of[...w.assets,..."verifierRef"in S?[S.verifierRef]:[],..."rubricRef"in S?[S.rubricRef]:[],..."inputContract"in S?[S.inputContract]:[]])T(R.id)}let f,_=$r.shape.executionResources.parse(e.environment.metadata.portableExecutionResources);if(n.execution.environment.entrypoint==="openpond.javascript-environment.v1"){let w=i("asset",{id:Yr(n.execution),revision:1});f=jt.parse(JSON.parse(Re(w,w.asset)));for(let S of[f.javascript.module,f.environment.actionSchemaRef,f.environment.observationSchemaRef,f.environment.stateSchemaRef])S&&T(S.id)}for(let w of e.tasks)w.privilegedContextRef&&T(w.privilegedContextRef);k(e.graders)!==k(Et(o,c,[...m.values()]))&&rt(409,"model_taskset_graders_changed","Taskset graders differ from their immutable Reward binding.");let I=fe.parse(Q({schemaVersion:"openpond.tasksetRelease.v2",id:e.id,revision:e.revision,...n.execution,graders:lt(o,c),...e.metrics?{metrics:e.metrics}:{},tasks:e.tasks.map(w=>{let S=En(w);return w.requiredOutputs===void 0&&w.metadata.portableTaskRecord===void 0&&delete S.requiredOutputs,S}),metadata:e.metadata.derivedPortableMetadata??{localSource:O(e),starter:{taskDefinition:O(n),rewardBinding:s}}}));return{sourcePackage:r?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:{taskset:I,taskDefinition:n,rewardBinding:o,rewards:c,assets:[...m.values()],..._?{executionResources:_}:{},...f?{execution:f}:{}},selectedBinding:p,selectedRewards:l,assets:m}}d(ur,"readModelTasksetSource");function rt(a,e,t){throw new Ae(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}d(rt,"fail");function Cs(a){if(a?.metadata.learning===void 0)return null;let e=wi.parse(a.metadata.learning);return we(e.definition),mi(e.binding,e.rewards),H(e.definition.rewardBinding,O(e.binding))||ke(409,"model_batch_binding_changed","Reviewed task definition and Reward binding do not match."),e.binding}d(Cs,"reviewedTasksetRewardBinding");function Ps(a,e,t=!0,r){let s=Ut(e),{project:i}=s,n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?F.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&ke(404,"model_not_found","Model is not available in this Profile."),(o?.revision??0)!==s.expectedRevision&&ke(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let c=i.trainingSetup.tasksetRef;if(!c||!i.trainingSetup.rewardBindingRef)return null;let p=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[c.id,c.revision]),l=p?P.parse(JSON.parse(p.payload)):null;(!l||l.profileId!==i.profileId)&&ke(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),(l.contentHash!==c.contentHash||ie(l)!==l.contentHash)&&ke(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash.");let m=Cs(l);if(m)return H(O(m),i.trainingSetup.rewardBindingRef)||ke(422,"model_batch_reward_review_required","Changing a reviewed batch's Reward requires regrading and a new reviewed batch."),null;let T=l.metadata.rewardBinding===void 0?null:Z.parse(l.metadata.rewardBinding);if(T&&H(T,i.trainingSetup.rewardBindingRef))return null;if(!T&&r&&!r.modelResources&&!r.learningResources){let b=id(a,i.profileId,i.trainingSetup.rewardBindingRef),g=Ln({owner:{scopeId:i.profileId,modelId:i.id},source:r,...b}),A=nd(a,s,t),j=Rt({package:g,profileId:i.profileId,name:l.name,createdAt:A.created_at}),K={...g.modelResources,taskset:g.taskset,executionResources:{environment:g.environment,verifierSet:g.verifierSet}};return{taskset:j.taskset,generatedFiles:j.generatedFiles,directoryId:String(j.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:null,derived:K,imported:j}}T||ke(422,"model_taskset_derivation_unavailable","This Taskset needs an authored task definition and Reward binding before its Reward can be changed.");let{sourcePackage:f,selectedBinding:_,selectedRewards:I,assets:N}=ur(a,l,i.trainingSetup.rewardBindingRef,r),w=ut.safeParse(f.taskset.metadata.modelTasksetDerivation),R=o?.hosted?.apiOrigin&&o.hosted.tasksets.some(b=>{if(!w.success||b.localTasksetId!==l.id||!b.packageHash||!b.localTasksetHash)return!1;let g=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND content_hash = ? AND profile_id = ?",[l.id,b.localTasksetHash,i.profileId]),A=g?P.parse(JSON.parse(g.payload)):null;if(!A||A.contentHash!==b.localTasksetHash)return!1;let j=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = 'package' AND id = ? AND revision = ?",[i.profileId,b.releaseId,b.releaseRevision]),K=j?fe.parse(JSON.parse(j.payload)):null,L=ut.safeParse(K?.metadata.modelTasksetDerivation);return K?.contentHash===b.releaseHash&&L.success&&k(L.data.owner)===k(w.data.owner)&&H(L.data.root,w.data.root)})&&w.success&&w.data.owner.modelId===i.id?w.data.owner:{scopeId:i.profileId,modelId:i.id},E=Bt({owner:R,source:f,rewardBinding:_,rewards:I,assets:[...N.values()]}),y=nd(a,s,t);if(r){let b=new Map(r.files.map(z=>[z.asset.id,z]));for(let z of E.assets)b.set(z.id,{asset:z.asset,base64:Buffer.from(z.text).toString("base64")});let{taskset:g,executionResources:A,...j}=E;if(!A)throw new Error("Derived imported package is missing execution resources.");let K=Da({schemaVersion:"openpond.tasksetPackage.v1",taskset:g,...A,modelResources:j,files:[...b.values()]}),L=Rt({package:K,profileId:i.profileId,name:l.name,createdAt:y.created_at});return{taskset:L.taskset,generatedFiles:L.generatedFiles,directoryId:String(L.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:f,derived:E,imported:L}}let M=`${E.taskset.id}-r${E.taskset.revision}-${Q({packageHash:E.taskset.contentHash,preparedAt:y.created_at}).contentHash}`,B=Ua(l,y.created_at),te=new Map(E.taskset.tasks.map(b=>[b.id,b])),Ee=[];for(let b of E.taskset.graders)if(b.kind==="custom_verifier"){let g=Fa(b.verifierRef.contentHash);Ee.some(A=>A.path===g)||Ee.push({path:g,role:"verifier",content:Re(N.get(b.verifierRef.id),b.verifierRef)})}let D=Ha({tasksetId:E.taskset.id,now:y.created_at,sourcePackageHash:E.taskset.contentHash,draft:{...B,policy:E.taskset.policy,tasks:B.tasks.map(b=>({...b,metadata:{...b.metadata,portableTaskRecord:te.get(b.id)}})),environment:{...B.environment,metadata:{...B.environment.metadata,runtimeSourceTasksetId:M,portableExecutionResources:E.executionResources}},graders:Et(_,I,[...N.values()]),learningSignals:{...B.learningSignals,rewards:B.learningSignals.rewards.map(b=>({...b,rules:[{id:_.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],artifactRef:_.id,metadata:{...b.metadata,rewardBinding:O(_)}}))},metadata:{...B.metadata,portableCapabilities:E.taskset.capabilities,taskDefinition:O(E.taskDefinition),rewardBinding:O(_),rewardExecution:{binding:_,rewards:I},derivedPortableMetadata:E.taskset.metadata,modelTasksetDerivation:E.taskset.metadata.modelTasksetDerivation}}});if(D.metrics=E.taskset.metrics,D.contentHash=ie(D),D.revision!==E.taskset.revision)throw new Error("Derived local and portable Taskset revisions differ.");return{taskset:D,generatedFiles:Ee,directoryId:M,source:l,sourcePackage:f,derived:E}}d(Ps,"prepareModelTasksetSave");function od(a,e,t){let r=e.project.profileId;for(let o of[t.sourcePackage,t.derived]){if(!o)continue;for(let p of o.assets)Y(a,r,"asset",p);for(let p of o.rewards)Y(a,r,"reward",p);Y(a,r,"binding",o.rewardBinding),Y(a,r,"package",o.taskset),Y(a,r,"definition",o.taskDefinition);let c=o.executionResources??o.execution;c&&Y(a,r,"asset",Je(c)),o.execution&&Y(a,r,"asset",be(o.execution))}let s=t.taskset;a.get("SELECT content_hash FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[s.id,s.revision])&&ke(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])}d(od,"commitPreparedModelTaskset");function nd(a,e,t){let r=Gc("sha256").update(k(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&&ke(409,"model_operation_conflict","This save operation was already used with different Model configuration."),i}d(nd,"recordModelTasksetPreparation");function ke(a,e,t){throw new Ae(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}d(ke,"fail");function mr(a,e){let t=Ut(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=dd("sha256").update(k(t)).digest("hex");return r.request_hash!==s&&Te(409,"model_operation_conflict","This save operation was already used with different Model configuration."),F.parse(JSON.parse(r.payload))}d(mr,"findModelProjectSave");function cd(a,e,t,r){a.exec("BEGIN IMMEDIATE");try{let s=ma(a,e,t,r);return a.exec("COMMIT"),s}catch(s){throw a.exec("ROLLBACK"),s}}d(cd,"commitModelProjectSave");function ma(a,e,t,r){let s=Ut(e);s.learning&&Te(422,"model_learning_hosted_required","Create this Model in a hosted workspace to enable continual learning.");let i=dd("sha256").update(k(s)).digest("hex"),{project:n,operationId:o,expectedRevision:c}=s,p=mr(a,s);if(p)return p;let l=a.get("SELECT payload FROM model_projects WHERE id = ?",[n.id]),m=l?F.parse(JSON.parse(l.payload)):null;m&&m.profileId!==n.profileId&&Te(404,"model_not_found","Model is not available in this Profile."),(m?.revision??0)!==c&&Te(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let T=Qc(a,s),f=Cs(T);f||Zc(a,s);let _=f?O(f):T?.metadata.rewardBinding===void 0?null:Z.parse(T.metadata.rewardBinding);T&&n.trainingSetup.rewardBindingRef&&(!_||!H(_,n.trainingSetup.rewardBindingRef))&&!t&&Te(409,"model_taskset_preparation_required","Changing this Reward requires publishing its model-owned Taskset revision."),t&&((!n.trainingSetup.tasksetRef||!H(n.trainingSetup.tasksetRef,O(t.source))||!n.trainingSetup.rewardBindingRef||!H(n.trainingSetup.rewardBindingRef,O(t.derived.rewardBinding)))&&Te(409,"model_taskset_preparation_changed","The prepared Taskset differs from the selected configuration."),od(a,s,t));let I=new Date().toISOString(),N=Ke.parse({...n.trainingSetup,baseModel:n.trainingSetup.baseModel??n.defaultBaseModel,method:n.trainingSetup.method??(T?.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":T?.authoringProvenance.buildIntent==="demonstrations"?"sft":null),..._?{rewardBindingRef:_}:{},...t?{rewardBindingRef:O(t.derived.rewardBinding),tasksetRef:O(t.taskset),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&H(n.trainingSetup.evaluationTasksetRef,O(t.source))?{evaluationTasksetRef:O(t.taskset)}:{}}:{}}),w=t?.derived??r??(T&&!f&&N.rewardBindingRef&&T.metadata.taskDefinition!==void 0&&T.metadata.rewardBinding!==void 0?ur(a,T,N.rewardBindingRef).sourcePackage:void 0),S=F.parse({...m,...n,trainingSetup:w?ca({setup:N,package:w}):N,schemaVersion:"openpond.modelProject.v2",revision:c+1,hosted:m?.hosted??null,tasksetSyncs:m?.tasksetSyncs??[],createdAt:m?.createdAt??I,updatedAt:I});return a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
|
|
2145
|
+
ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[S.id,S.profileId,JSON.stringify(S),S.createdAt,S.updatedAt]),a.run("INSERT INTO model_project_save_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[S.profileId,o,i,JSON.stringify(S)]),S}d(ma,"saveModelProjectInTransaction");function Qc(a,e){let t=e.project.trainingSetup.tasksetRef;if(!t){e.project.trainingSetup.tasksetRelease&&Te(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?P.parse(JSON.parse(r.payload)):null;return(!s||s.profileId!==e.project.profileId)&&Te(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),s.contentHash!==t.contentHash&&Te(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash."),s}d(Qc,"assertTaskset");function Zc(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||Te(404,"model_reward_unavailable","The exact Reward configuration is unavailable in this Profile.");let c=(i==="binding"?Xt:$e).parse(JSON.parse(o.payload));return c.contentHash!==n.contentHash&&Te(409,"model_reward_changed","The selected Reward does not match its immutable content hash."),we(c),c}d(r,"read");let s=Xt.parse(r("binding",t));for(let i of s.sources)r("reward",i.reward)}d(Zc,"assertReward");function Te(a,e,t){throw new Ae(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}d(Te,"fail");function ld(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=F.parse(JSON.parse(i.payload)),o={id:t.id,revision:t.revision,contentHash:t.contentHash};return ma(a,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${h({draftId:e.id,revision:e.revision,scope:s,tasksetRef:o})}`,expectedRevision:s.expectedModelRevision,project:Vi.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&&H(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)}d(ld,"selectTasksetDraftModel");import{createHash as nl,randomUUID as ol}from"node:crypto";import{lstat as fd,mkdir as Ed,readdir as dl,readFile as cl,rename as ll,rm as pl,writeFile as ul}from"node:fs/promises";import It from"node:path";import{constants as xs}from"node:fs";import{link as el,lstat as tl,mkdir as Xs,mkdtemp as pd,open as al,readFile as rl,readdir as sl,rename as il,rm as ud,writeFile as md}from"node:fs/promises";import V from"node:path";async function n_(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 ge(a,t);if(!r.learningResources||r.taskset.id!==e.id||r.taskset.revision!==e.revision||h(Aa(r.taskset))!==h(e.metadata.learning))throw new Error("Imported batch differs from its pinned package.");return r}d(n_,"readImportedLearningTasksetPackage");async function st(a,e){let t=Ce(e),r=V.join(a,"training","portable-packages");await Xs(r,{recursive:!0});let s=V.join(r,`${t.contentHash}.json`),i=await pd(V.join(r,".package-"));try{let n=V.join(i,"package.json");await md(n,JSON.stringify(t),{flag:"wx",mode:384});try{await el(n,s)}catch(o){if(o.code!=="EEXIST")throw o;await ge(a,t.contentHash)}}finally{await ud(i,{recursive:!0,force:!0})}}d(st,"cacheTasksetPackage");async function ge(a,e){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid Taskset package cache identity.");let t=V.join(a,"training","portable-packages",`${e}.json`),r=await al(t,xs.O_RDONLY|xs.O_NOFOLLOW|xs.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>ze)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 c=await r.read(i,n,i.length-n,n);if(!c.bytesRead)throw new Error("Taskset package cache changed during read.");n+=c.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset package cache changed during read.");let o=Ce(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()}}d(ge,"readCachedTasksetPackage");async function Ta(a){let e=Ce(a.package),t=is(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=d((c,p)=>{if(V.isAbsolute(c)||c.includes("\\")||c.split("/").some(m=>!m||m==="."||m===".."))throw new Error("Taskset package file requires a safe relative path.");let l=r.get(c);if(l&&!Buffer.from(l).equals(Buffer.from(p)))throw new Error(`Taskset package files collide at ${c}.`);r.set(c,p)},"add");for(let c of e.files)s(c.asset.path,mt(c));for(let c of a.generatedFiles)s(c.path,Buffer.from(c.content,"utf8"));s("taskset.json",Buffer.from(JSON.stringify(a.taskset),"utf8"));let i=V.join(a.home,"training","tasksets");await Xs(i,{recursive:!0});let n=await pd(V.join(i,".package-import-")),o=V.join(i,t);try{for(let[c,p]of r)await Xs(V.dirname(V.join(n,c)),{recursive:!0}),await md(V.join(n,c),p,{flag:"wx",mode:384});try{await il(n,o)}catch(c){if(!["EEXIST","ENOTEMPTY"].includes(c.code??""))throw c;let p=await tl(o);if(!p.isDirectory()||p.isSymbolicLink())throw new Error("Imported Taskset destination must be a regular directory.");let l=await Td(o);if(JSON.stringify(l.sort())!==JSON.stringify([...r.keys()].sort()))throw new Error("Imported Taskset file inventory changed.");for(let[m,T]of r)if(!(await rl(V.join(o,m))).equals(Buffer.from(T)))throw new Error("Imported Taskset files differ from the pinned package.")}await st(a.home,e)}finally{await ud(n,{recursive:!0,force:!0})}}d(Ta,"materializeImportedTasksetPackage");async function Td(a,e=""){let t=[];for(let r of await sl(V.join(a,e),{withFileTypes:!0})){let s=V.posix.join(e,r.name);if(r.isSymbolicLink())throw new Error("Imported Taskset directories cannot contain symbolic links.");if(r.isDirectory())t.push(...await Td(a,s));else if(r.isFile())t.push(s);else throw new Error("Imported Taskset packages require regular files.")}return t}d(Td,"regularFiles");var Ot=Cn.extend({workspaceHash:u.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function _d(a){let{db:e,profileId:t}=a,r=Fr.parse(a.request),s=d(()=>{let y=e.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[r.modelId,t]);if(!y)throw new Error("Taskset draft Model was not found in this Profile.");return F.parse(JSON.parse(y.payload))},"requireModel"),i=s(),n=h(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 Ot.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 c=i.trainingSetup.tasksetRef,p=c?e.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[c.id,c.revision,t]):null,l=p?P.parse(JSON.parse(p.payload)):null;if(!l||!c||l.contentHash!==c.contentHash)throw new Error("The selected source Taskset is unavailable.");let m=a.source,T=i.hosted?.apiOrigin?i.hosted.tasksets.find(y=>y.localTasksetId===l.id&&y.localTasksetHash===l.contentHash&&y.packageHash===m.contentHash&&y.releaseId===m.taskset.id&&y.releaseRevision===m.taskset.revision&&y.releaseHash===m.taskset.contentHash):null,f=typeof l.metadata.importedPackageHash=="string"?l.metadata.importedPackageHash:T?.packageHash;if(f?f!==m.contentHash:!H(O(Pe({taskset:l,adapterId:he(l)}).tasksetRelease),O(m.taskset)))throw new Error("Taskset draft package differs from its selected source.");let _=m.modelResources?ut.safeParse(m.taskset.metadata.modelTasksetDerivation):Hr.safeParse(m.taskset.metadata.modelTasksetAuthoring),I=T&&_.success&&_.data.owner.modelId===i.id?_.data.owner:{scopeId:t,modelId:i.id},N=kn({request:r,owner:I,source:m}),w=Pn({sourceDraft:Ua(l),source:m,preparation:N,expectedModelRevision:r.expectedModelRevision});await st(a.home,m);let S=Ot.parse({...w,workspaceHash:null}),R=S.draft;e.exec("BEGIN IMMEDIATE");try{let y=e.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(y&&y.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(!y&&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,R.id,JSON.stringify(S)]),e.exec("COMMIT")}catch(y){throw e.exec("ROLLBACK"),y}let E=e.get("SELECT request_hash, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(!E||E.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");return Ot.parse(JSON.parse(E.payload))}d(_d,"prepareDraftInitialization");async function hd(a){let{initialized:e,workspacePath:t}=a;if(a.completed())return;if(e.workspaceHash)try{if(await fd(t),a.completed())return;if(await Ms(t),await J(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-${ol()}`;await Ed(It.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 ge(a.home,s.sourcePackageHash),n=new Map;for(let c of e.filePaths){let p=i.files.find(l=>l.asset.id===c.assetId);if(!p)throw new Error("Taskset draft source asset is missing.");for(let l of c.paths){if(l.includes("\\")||It.posix.isAbsolute(l)||l.split("/").some(f=>!f||f==="."||f===".."||f.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let m=n.get(l);if(m&&m!==p.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(m)continue;let T=It.join(r,l);await Ed(It.dirname(T),{recursive:!0}),await ul(T,mt(p),{flag:"wx"}),n.set(l,p.asset.contentHash)}}await Vt(e.draft,r);for(let[c,p]of n)if(nl("sha256").update(await cl(It.join(r,c))).digest("hex")!==p)throw new Error(`Taskset draft source asset conflicts with authoring file ${c}.`);let o=await J(r);if(a.retainHash({...e,workspaceHash:o}),a.completed())return;try{await ll(r,t)}catch(c){if(!["EEXIST","ENOTEMPTY"].includes(c.code??""))throw c;if(a.completed())return;if(await Ms(t),await J(t)!==o)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await pl(r,{recursive:!0,force:!0})}}d(hd,"materializeDraftInitialization");async function Ms(a){let e=await fd(a);if(!e.isDirectory()||e.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let t of await dl(a,{withFileTypes:!0})){if(t.name.startsWith(".env")||t.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(t.isDirectory())await Ms(It.join(a,t.name));else if(!t.isFile())throw new Error("Taskset draft source must contain regular files.")}}d(Ms,"assertRegularTree");import Tl from"node:path";import{constants as Ds}from"node:fs";import{open as ml,realpath as gd}from"node:fs/promises";import Ea from"node:path";function yd(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?Jr(a.learningResources).map(t=>t.asset.id):[]])}d(yd,"tasksetPackageInlineAssetIds");async function Lt(a){let e=a.sources.length?await gd(a.root):Ea.resolve(a.root),t=[],r=new Set,s=0,i=d((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>ze)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=Zs.parse(n.asset);if(!n.sourcePath||Ea.isAbsolute(n.sourcePath))throw new Error(`Taskset asset ${o.id} requires a relative source path.`);let c=Ea.resolve(e,n.sourcePath);if(!c.startsWith(`${e}${Ea.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);if(!(await gd(c)).startsWith(`${e}${Ea.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);let l=await ml(c,Ds.O_RDONLY|Ds.O_NOFOLLOW|Ds.O_NONBLOCK);try{let m=await l.stat();if(!m.isFile()||m.size!==o.sizeBytes)throw new Error(`Taskset asset ${o.id} differs from its immutable file size.`);if(4*Math.ceil(m.size/3)+s>ze)throw new Error("Local Taskset files exceed the package envelope.");let T=Buffer.alloc(m.size),f=0;for(;f<T.length;){let I=await l.read(T,f,T.length-f,f);if(!I.bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);f+=I.bytesRead}if((await l.read(Buffer.alloc(1),0,1,f)).bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);i(o,T)}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(Re(n,n.asset),"utf8"));if(a.content.learningResources)for(let n of Jr(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,c)=>[o,c]));t.sort((o,c)=>n.get(o.asset.id)-n.get(c.asset.id))}return Da({...a.content,files:t})}d(Lt,"captureLocalTasksetPackage");async function Rd(a){let e=Pe({taskset:a.taskset,adapterId:he(a.taskset)}),t=await Lt({root:a.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:e.tasksetRelease,environment:e.environmentRelease,verifierSet:e.verifierSetRelease},sources:Me.parse(a.taskset.metadata.portableFileInventory??[])}),r=a.preparation.authoringGraph==="bound"?await ge(a.home,a.preparation.sourcePackageHash):void 0,s=vn({preparation:a.preparation,edited:t,source:r});if(s.modelResources){let T=Rt({package:s,profileId:a.taskset.profileId,name:a.taskset.name,createdAt:a.taskset.createdAt}),f=P.parse({...T.taskset,authoringProvenance:a.taskset.authoringProvenance,metadata:{...T.taskset.metadata,sourcePackageHash:a.taskset.metadata.sourcePackageHash}}),_=P.parse({...f,contentHash:ie(f)});return await Ta({home:a.home,...T,taskset:_}),{taskset:_,directory:Tl.join(a.home,"training","tasksets",String(_.environment.metadata.runtimeSourceTasksetId))}}let i=Me.parse(a.taskset.metadata.portableFileInventory??[]),n=s.files.map(T=>({asset:T.asset,sourcePath:i.find(f=>f.asset.id===T.asset.id)?.sourcePath??T.asset.path})),o=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(T=>T.asset.path==="environment/execution.json"):void 0,c=`model-draft-${h({packageHash:s.contentHash,taskset:a.taskset})}`,p=P.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:c,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),l=P.parse({...p,contentHash:ie(p)}),m=await tt(a.home,{taskset:l,generatedFiles:o?[{path:o.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(mt(o))}]:[]},c,{source:{directory:a.directory,packageHash:await J(a.directory)},verify:d(T=>vt(T,l),"verify")});return await st(a.home,s),{directory:m,taskset:l}}d(Rd,"materializeModelTasksetDraftPublication");import{constants as Us}from"node:fs";import{createHash as El}from"node:crypto";import{lstat as Nd,mkdir as fl,open as _l,readdir as hl,rm as wd}from"node:fs/promises";import Tr from"node:path";var it=d((a,e)=>Yi(Tr.join(a,"state","taskset-draft-writes"),e),"withTasksetDraftLock"),Sd=rn,gl=d(a=>El("sha256").update(a).digest("hex"),"digest");async function Er(a,e,t=!1){Pa.parse(e);let r=a;for(let s of["",...e.split("/").slice(0,-1)]){s&&(r=Tr.join(r,s)),t&&await fl(r,{recursive:!1}).catch(n=>{if(n.code!=="EEXIST")throw n});let i=await Nd(r);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return Tr.join(a,e)}d(Er,"regularPath");async function kd(a,e){let t=await Er(a,e),r=await _l(t,Us.O_RDONLY|Us.O_NOFOLLOW|Us.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>an)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()}}d(kd,"readBytes");async function vd(a,e){let t=await kd(a,e);return sn(e,t)}d(vd,"readTasksetDraftFile");async function Id(a){let e=[];async function t(r=""){for(let s of await hl(Tr.join(a,r),{withFileTypes:!0})){let i=r?`${r}/${s.name}`:s.name;if(Pa.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 Nd(await Er(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:Sd(i)})}}return d(t,"visit"),await Er(a,"taskset.json"),await t(),e.sort((r,s)=>r.path.localeCompare(s.path))}d(Id,"listTasksetDraftFiles");async function Od(a,e,t){if(!Sd(e.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let r=null;try{r=await kd(a,e.path)}catch(n){if(n.code!=="ENOENT")throw n}if((r?gl(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?nn(e.content):null,i=await Er(a,e.path,!0);s?await Dr(i,s):await wd(i);try{return await t()}catch(n){throw r?await Dr(i,r):await wd(i,{force:!0}),n}}d(Od,"mutateTasksetDraftFile");function fr(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&&k(P.parse(JSON.parse(i.payload)))!==k(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?P.parse(JSON.parse(n.payload)):null;if(o&&o.profileId!==s)throw new Error("Imported Taskset belongs to another Profile.");Y(a,s,"package",r.taskset);let c=r.modelResources;if(c){Y(a,s,"definition",c.taskDefinition),Y(a,s,"binding",c.rewardBinding);for(let l of c.rewards)Y(a,s,"reward",l);for(let l of c.assets)Y(a,s,"asset",l);Y(a,s,"asset",Je({environment:r.environment,verifierSet:r.verifierSet})),c.execution&&Y(a,s,"asset",be(c.execution))}let p=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,p,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,p,t.createdAt,t.updatedAt])}d(fr,"importTasksetPackageInTransaction");var ce=u.object({schemaVersion:u.literal("openpond.tasksetDraftPointer.v1"),id:u.string().trim().min(1),profileId:u.string().trim().min(1),modelScope:pe.shape.modelScope,status:u.enum(["draft","validating","needs_review","published"]),revision:u.number().int().positive(),workspacePath:u.string().trim().min(1),packageHash:u.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:u.object({id:u.string().trim().min(1),revision:u.number().int().positive(),contentHash:u.string().trim().min(8)}).nullable(),createdAt:u.string().trim().min(1),updatedAt:u.string().trim().min(1)}),_r=class extends cr{static{d(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 _d({db:i,home:this.home,profileId:e,request:t,source:r});if(!n)return null;let o=d(()=>{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 m=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);if(!m){if(l?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let T=ce.parse(JSON.parse(m.payload));if(T.profileId!==e||T.modelScope?.source?.requestHash!==n.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),c=this.workspacePath(n.draft.id);await hd({home:this.home,initialized:n,workspacePath:c,completed:o,retainHash:d(l=>{let m=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),T=Ot.parse(JSON.parse(m.payload));if(T.workspaceHash&&T.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]),m=Ot.parse(JSON.parse(l.payload)),T=m.draft,f=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:T.id,profileId:e,modelScope:T.modelScope,status:T.status,revision:T.revision,workspacePath:c,packageHash:m.workspaceHash,publishedTasksetRef:T.publishedTasksetRef,createdAt:T.createdAt,updatedAt:T.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[T.id,e,T.status,T.revision,JSON.stringify(f),T.createdAt,T.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 p=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);return this.draftFromStoredPayload(JSON.parse(p.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(e,t,r={}){let s=pe.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(h(o.data.modelScope?{...o.data.modelScope,expectedModelRevision:0}:null)!==h(s.modelScope?{...s.modelScope,expectedModelRevision:0}:null)||!r.refreshModelRevision&&h(o.data.modelScope)!==h(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 T=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!T)throw new Error("Taskset draft Model was not found in this Profile.");if(F.parse(JSON.parse(T.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let c=this.workspacePath(s.id),l=(await Vt(s,c)).draft,m=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:l.id,profileId:l.profileId,modelScope:l.modelScope,status:l.status,revision:l.revision,workspacePath:c,packageHash:await J(c),publishedTasksetRef:l.publishedTasksetRef,createdAt:l.createdAt,updatedAt:l.updatedAt});return await this.savePointer(m,!0),l}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(e){let t=fa.resolve(e.packagePath),s=(await Sl(t)).isDirectory()?t:fa.dirname(t);await Ad(s);let i=await J(s),n=await ns(s),o=await this.getTasksetDraft(n.id);if(o){let T=o.metadata.importedTasksetPackage;if(T&&typeof T=="object"&&!Array.isArray(T)&&T.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 c=pe.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()}),p=this.workspacePath(c.id),l=`${p}.import-${process.pid}-${Date.now()}`;await wl(fa.dirname(p),{recursive:!0});try{await Rl(s,l,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await Vt(c,l),await Hs(l,p)}catch(T){throw await Ld(l,{recursive:!0,force:!0}),T}let m=ce.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:c.id,profileId:c.profileId,status:c.status,revision:c.revision,workspacePath:p,packageHash:await J(p),publishedTasksetRef:c.publishedTasksetRef,createdAt:c.createdAt,updatedAt:c.updatedAt});return await this.savePointer(m),this.draftFromStoredPayload(m)}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-${h({taskset:e.taskset,packageHash:t.packageHash})}`,s=await zo(e.taskset,t.workspacePath),i=P.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:t.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:r}}}),n=P.parse({...i,contentHash:ie(i)}),o=await tt(this.home,{taskset:n,generatedFiles:s.generatedFiles},r,{source:{directory:t.workspacePath,packageHash:t.packageHash},verify:d(p=>vt(p,n),"verify")}),c=await this.getTasksetDraft(e.draftId);return c?.modelScope?.source?Rd({home:this.home,directory:o,taskset:n,preparation:c.modelScope.source}):{directory:o,taskset:n}}async finalizeTasksetDraftPublication(e){await this.ready;let t=pe.parse(e.draft),r=P.parse(e.taskset),s=t.modelScope?.source?.authoringGraph==="bound"&&typeof r.metadata.importedPackageHash=="string"?await ge(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(h(o.modelScope)!==h(t.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.status==="published"&&o.publishedTasksetRef){let T=o.publishedTasksetRef,f=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[T.id,T.revision,T.contentHash]);if(!f)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:pe.parse({...t,status:o.status,revision:o.revision,publishedTasksetRef:T,updatedAt:o.updatedAt}),taskset:P.parse(JSON.parse(f.payload))}}if(o.revision!==t.revision||r.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let c=o.modelScope?.source,p=c?.authoringGraph==="bound"&&r.metadata.modelTasksetDerivation&&typeof r.metadata.modelTasksetDerivation=="object"?{...r.metadata.modelTasksetDerivation,schemaVersion:c.lineage.schemaVersion}:r.metadata.modelTasksetAuthoring;if(c&&(r.id!==c.tasksetId||r.revision!==c.tasksetRevision||h(p)!==h(c.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let l=pe.parse({...t,status:"published",revision:t.revision+1,publishedTasksetRef:{id:r.id,revision:r.revision,contentHash:r.contentHash},updatedAt:new Date().toISOString()}),m=ce.parse({...o,status:l.status,revision:l.revision,publishedTasksetRef:l.publishedTasksetRef,updatedAt:l.updatedAt});return pr(this.database,r,()=>{if(s&&fr(this.database,{package:s,taskset:r,generatedFiles:[]}),ld(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 = ?",[m.status,m.revision,JSON.stringify(m),m.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 readHumanPublishedTasksetDraft(e,t){let r=(await this.listTasksetDrafts(e)).filter(n=>n.status==="published"&&n.modelScope===null&&h(n.publishedTasksetRef)===h(t));if(r.length!==1)return null;let s=r[0],i=await this.getTasksetDraftWorkspace(s.id);return i?{draft:s,workspace:i}:null}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 J(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-${yl()}`,i=!1;try{await Hs(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 Hs(s,r).catch(()=>{}),n}i&&await Ld(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 vd(i.workspacePath,r);return{draftRevision:i.revision,file:{...o,writable:o.writable&&i.status!=="published"}}}let n=await Id(i.workspacePath);return{draftRevision:i.revision,files:n.map(o=>({...o,writable:o.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(e,t){let r=jr.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 Od(n.workspacePath,r,async()=>{let o=ce.parse({...n,revision:n.revision+1,packageHash:await J(n.workspacePath),updatedAt:new Date().toISOString()}),c=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(p){throw this.database.exec("ROLLBACK"),p}return c})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(e){let t=h(e).slice(0,24);return fa.join(this.home,"workspaces","tasksets",`taskset-${t}`)}async draftFromStoredPayload(e){let t=await this.pointerFromStoredPayload(e),r=await ns(t.workspacePath);return pe.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=pe.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)
|
|
2146
2146
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
2147
2147
|
ON CONFLICT(id) DO UPDATE SET
|
|
2148
2148
|
profile_id = excluded.profile_id,
|
|
@@ -2154,28 +2154,28 @@ CREATE TABLE IF NOT EXISTS task_inventory_sources (source_key TEXT NOT NULL, pro
|
|
|
2154
2154
|
CREATE TABLE IF NOT EXISTS task_inventory_rows (profile_id TEXT NOT NULL, source_key TEXT NOT NULL, source_hash TEXT NOT NULL, task_id TEXT NOT NULL, ordinal INTEGER NOT NULL, title TEXT NOT NULL, description TEXT NOT NULL, split TEXT NOT NULL, payload TEXT NOT NULL, PRIMARY KEY(profile_id, source_key, source_hash, ordinal));
|
|
2155
2155
|
CREATE UNIQUE INDEX IF NOT EXISTS task_inventory_task_identity ON task_inventory_rows(profile_id, source_key, source_hash, task_id);
|
|
2156
2156
|
CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id, source_key, source_hash, split, ordinal);
|
|
2157
|
-
`,hr=class extends _r{static{d(this,"SqliteTaskInventoryStore")}async inventoryReady(){await this.ready,await this.writeQueue,this.database.exec(vl)}async taskInventorySources(e,t){await this.inventoryReady();let r=null;if(t){let n=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[t,e]);if(!n)throw new Error("Model not found in this Profile.");let o=Jt.parse(JSON.parse(n.payload));r=new Set(o.tasksetSyncs.map(c=>c.localTasksetId)),o.trainingSetup.tasksetRef&&r.add(o.trainingSetup.tasksetRef.id)}let s=this.database.all("SELECT id, json_extract(payload, '$.contentHash') AS hash, json_extract(payload, '$.revision') AS revision FROM tasksets WHERE profile_id = ? ORDER BY id",[e]),i=this.database.all("SELECT id, json_extract(payload, '$.packageHash') AS hash, revision, json_extract(payload, '$.modelScope.modelId') AS modelId FROM taskset_drafts WHERE profile_id = ? AND status != 'published' ORDER BY id",[e]);return this.database.run("DELETE FROM task_inventory_rows WHERE profile_id=? AND source_key NOT IN (SELECT 'release:' || id FROM tasksets WHERE profile_id=? UNION SELECT 'draft:' || id FROM taskset_drafts WHERE profile_id=? AND status != 'published')",[e,e,e]),this.database.run("DELETE FROM task_inventory_sources WHERE profile_id=? AND source_key NOT IN (SELECT 'release:' || id FROM tasksets WHERE profile_id=? UNION SELECT 'draft:' || id FROM taskset_drafts WHERE profile_id=? AND status != 'published')",[e,e,e]),[...s.filter(n=>!r||r.has(n.id)).map(n=>({...n,profileId:e,draft:!1,modelId:t??null})),...i.filter(n=>!t||n.modelId===t).map(n=>({...n,profileId:e,draft:!0}))].sort((n,o)=>ve(n).localeCompare(ve(o)))}async taskInventorySourceIndexed(e){return await this.inventoryReady(),this.database.get("SELECT source_hash FROM task_inventory_sources WHERE profile_id = ? AND source_key = ?",[e.profileId,ve(e)])?.source_hash===e.hash}async appendTaskInventoryRows(e,t,r){await this.inventoryReady();let s=this.writeQueue.then(()=>{this.database.exec("BEGIN IMMEDIATE");try{for(let[i,n]of t.entries()){let o=
|
|
2157
|
+
`,hr=class extends _r{static{d(this,"SqliteTaskInventoryStore")}async inventoryReady(){await this.ready,await this.writeQueue,this.database.exec(vl)}async taskInventorySources(e,t){await this.inventoryReady();let r=null;if(t){let n=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[t,e]);if(!n)throw new Error("Model not found in this Profile.");let o=Jt.parse(JSON.parse(n.payload));r=new Set(o.tasksetSyncs.map(c=>c.localTasksetId)),o.trainingSetup.tasksetRef&&r.add(o.trainingSetup.tasksetRef.id)}let s=this.database.all("SELECT id, json_extract(payload, '$.contentHash') AS hash, json_extract(payload, '$.revision') AS revision FROM tasksets WHERE profile_id = ? ORDER BY id",[e]),i=this.database.all("SELECT id, json_extract(payload, '$.packageHash') AS hash, revision, json_extract(payload, '$.modelScope.modelId') AS modelId FROM taskset_drafts WHERE profile_id = ? AND status != 'published' ORDER BY id",[e]);return this.database.run("DELETE FROM task_inventory_rows WHERE profile_id=? AND source_key NOT IN (SELECT 'release:' || id FROM tasksets WHERE profile_id=? UNION SELECT 'draft:' || id FROM taskset_drafts WHERE profile_id=? AND status != 'published')",[e,e,e]),this.database.run("DELETE FROM task_inventory_sources WHERE profile_id=? AND source_key NOT IN (SELECT 'release:' || id FROM tasksets WHERE profile_id=? UNION SELECT 'draft:' || id FROM taskset_drafts WHERE profile_id=? AND status != 'published')",[e,e,e]),[...s.filter(n=>!r||r.has(n.id)).map(n=>({...n,profileId:e,draft:!1,modelId:t??null})),...i.filter(n=>!t||n.modelId===t).map(n=>({...n,profileId:e,draft:!0}))].sort((n,o)=>ve(n).localeCompare(ve(o)))}async taskInventorySourceIndexed(e){return await this.inventoryReady(),this.database.get("SELECT source_hash FROM task_inventory_sources WHERE profile_id = ? AND source_key = ?",[e.profileId,ve(e)])?.source_hash===e.hash}async appendTaskInventoryRows(e,t,r){await this.inventoryReady();let s=this.writeQueue.then(()=>{this.database.exec("BEGIN IMMEDIATE");try{for(let[i,n]of t.entries()){let o=ln(n.input,n.id);this.database.run("INSERT INTO task_inventory_rows (profile_id, source_key, source_hash, task_id, ordinal, title, description, split, payload) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(profile_id, source_key, source_hash, ordinal) DO UPDATE SET task_id=excluded.task_id, title=excluded.title, description=excluded.description, split=excluded.split, payload=excluded.payload",[e.profileId,ve(e),e.hash,n.id,r+i,o.title,o.description,n.split,JSON.stringify(n)])}this.database.exec("COMMIT")}catch(i){throw this.database.exec("ROLLBACK"),i}});return this.writeQueue=s.then(()=>{},()=>{}),s}async finishTaskInventorySource(e,t){await this.inventoryReady();let r=this.writeQueue.then(()=>{this.database.exec("BEGIN IMMEDIATE");try{if(this.database.get(e.draft?"SELECT json_extract(payload, '$.packageHash') AS hash FROM taskset_drafts WHERE id = ? AND profile_id = ? AND status != 'published'":"SELECT json_extract(payload, '$.contentHash') AS hash FROM tasksets WHERE id = ? AND profile_id = ?",[e.id,e.profileId])?.hash!==e.hash)throw new Error("Tasks changed while indexing. Reload the task list.");this.database.run("INSERT INTO task_inventory_sources (profile_id, source_key, source_hash, metadata) VALUES (?, ?, ?, ?) ON CONFLICT(profile_id, source_key) DO UPDATE SET source_hash=excluded.source_hash, metadata=excluded.metadata",[e.profileId,ve(e),e.hash,JSON.stringify(t)]),this.database.run("DELETE FROM task_inventory_rows WHERE profile_id = ? AND source_key = ? AND source_hash != ?",[e.profileId,ve(e),e.hash]),this.database.exec("COMMIT")}catch(s){throw this.database.exec("ROLLBACK"),s}});return this.writeQueue=r.then(()=>{},()=>{}),r}async readTaskInventoryPage(e,t,r){await this.inventoryReady();let s=dn.parse(t),i=h({profileId:e,...s,after:void 0,limit:void 0,sources:r.map(_=>[ve(_),_.hash])}),n=s.after?kl.parse(JSON.parse(Buffer.from(s.after,"base64url").toString("utf8"))):null;if(n&&n.scope!==i)throw new Error("Task cursor is stale or belongs to another view.");let o=r.filter(_=>(!s.tasksetId||_.id===s.tasksetId)&&(!s.draftId||_.draft&&_.id===s.draftId)),c=new Map(o.map(_=>[ve(_),_]));if(!c.size)return Vr.parse({items:[],nextCursor:null});let p=[...c.keys()],l=`%${s.query.replaceAll("\\","\\\\").replaceAll("%","\\%").replaceAll("_","\\_")}%`,m=this.database.all(`SELECT r.source_key, r.source_hash, r.task_id, r.ordinal, r.title, r.description, r.split, s.metadata 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
|
|
2158
2158
|
WHERE r.profile_id=? AND r.source_key IN (${p.map(()=>"?").join(",")})
|
|
2159
2159
|
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 '\\')
|
|
2160
|
-
AND (? IS NULL OR r.source_key > ? OR (r.source_key = ? AND r.ordinal > ?)) ORDER BY r.source_key, r.ordinal LIMIT ?`,[e,...p,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]),T=m.slice(0,s.limit),f=T.at(-1);return Jr.parse({items:T.map(_=>{let I=c.get(_.source_key);if(I.hash!==_.source_hash)throw new Error("Task inventory changed. Reload the task list.");return an.parse({...JSON.parse(_.metadata),tasksetId:I.id,tasksetRevision:I.revision,tasksetHash:I.hash,taskId:_.task_id,ordinal:_.ordinal,title:_.title,description:_.description,split:_.split,draftId:I.draft?I.id:null,modelId:I.modelId})}),nextCursor:m.length>s.limit&&f?Buffer.from(JSON.stringify({scope:i,key:f.source_key,ordinal:f.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,ve(e),e.hash,t]);if(!r)throw new Error("Task not found in this collection.");return zi.parse(JSON.parse(r.payload))}};function ve(a){return`${a.draft?"draft":"release"}:${a.id}`}d(ve,"sourceKey");var gr=class extends hr{static{d(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=Rn.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,c=vs(n,e,()=>{if(!o)throw new Error("Model review transaction is closed.")});try{let p=n.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e]);if(!p)throw new Ye("model_not_found",404);let l=F.parse(JSON.parse(p.payload)),m=await In(c,s);if(m||!r)return n.exec("COMMIT"),m;if(l.revision!==s.expectedModelRevision||!l.trainingSetup.tasksetRef||!H(l.trainingSetup.tasksetRef,s.tasksetRef))throw new Ye("model_revision_conflict",409);let T=n.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[s.tasksetRef.id,s.tasksetRef.revision,e]),f=T?P.parse(JSON.parse(T.payload)):null;if(!f||f.contentHash!==s.tasksetRef.contentHash||h(f.metadata.learning)!==h(La(r.taskset)))throw new Ye("model_review_package_mismatch",409);let _=await On(c,{scope:e,request:s,package:r,now:new Date().toISOString()});return n.exec("COMMIT"),_}catch(p){throw n.exec("ROLLBACK"),p}finally{o=!1}});return this.writeQueue=i.then(()=>{},()=>{}),i}};import{createHash as Il}from"node:crypto";function _a(a){let{request:e,resolved:t}=pa(a.request,a.package),{starter:r,...s}=t,i=e.rewardBindingRef&&!H(e.rewardBindingRef,O(t.rewardBinding));if(i&&(!a.rewardSelection||!H(e.rewardBindingRef,O(a.rewardSelection.rewardBinding))))throw new Error("The selected starter Reward is unavailable for package preparation.");let n=Ft({owner:{scopeId:e.profileId,modelId:e.modelId},source:s,...i?a.rewardSelection:{rewardBinding:s.rewardBinding,rewards:s.rewards,assets:s.assets}}),{taskset:o,taskDefinition:c,rewardBinding:p,rewards:l,assets:m}=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 T=n.execution!==void 0,f=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)||c.harness||!f&&!T||o.tasks.some(E=>E.artifactRefs.length)||o.graders.some(E=>E.kind==="model_judge"&&(!E.model||E.calibrationStatus!=="passed")))throw new Error("This starter requires an additional training or environment adapter before preparation.");let _=new Set(a.approvedTrainingTaskIds);if(_.size!==a.approvedTrainingTaskIds.length)throw new Error("Starter training approvals must be unique.");for(let E of _){let y=o.tasks.find(M=>M.id===E);if(!y||y.split!=="train")throw new Error(`Starter approval must reference a training task: ${E}.`);if(e.method==="sft"&&y.expectedOutput===null)throw new Error(`SFT starter approval requires a reviewed target: ${E}.`)}if(e.method==="grpo"&&o.tasks.some(E=>E.split==="train"&&!_.has(E.id)))throw new Error("GRPO starter preparation requires approval of every training task.");for(let E of a.fixtures){if(!o.tasks.some(y=>y.id===E.taskId))throw new Error(`Starter fixture references an unknown task: ${E.taskId}.`);T&&!E.infrastructureError&&Br.parse(E.metadata.toolScript)}let I=o.id,N=en({profileId:e.profileId,id:`${I}-draft`,name:r.name,now:a.createdAt}),w=[];for(let E of o.graders){if(E.kind!=="custom_verifier")continue;let y=m.find(B=>B.id===E.verifierRef.id);if(!y)throw new Error(`Starter verifier asset is missing: ${E.id}.`);let M=Fa(E.verifierRef.contentHash);w.some(B=>B.path===M)||w.push({path:M,role:"verifier",content:we(y,E.verifierRef)})}let S=pe.parse({...N,objective:c.instructions,metrics:o.metrics??N.metrics,sourceRefs:[a.source],policy:o.policy,environment:{...N.environment,kind:T?"agent":"chat",entrypoint:o.environment.entrypoint,stateful:o.environment.stateful,toolNames:o.tools.map(E=>E.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:c.outputSchema,renderer:null},capabilities:{...N.capabilities,taskKind:T?"single_agent":"chat",requiresTools:T,requiresState:T,supportedSignals:e.method==="grpo"?["reward"]:["demonstration"],compatibleMethods:[e.method],rewardKinds:[...new Set(o.graders.map(E=>E.kind==="human"?"human":E.kind==="model_judge"?"model_judge":"deterministic"))],requiresPrivilegedGrading:!0,environmentPlacements:["local","remote"]},tasks:o.tasks.map(({artifactRefs:E,...y})=>({...y,schemaVersion:"openpond.taskData.v1",sourceRefs:[a.source.id],metadata:{exampleOrigin:"curated_starter",starter:O(r),portableTaskRecord:{...y,artifactRefs:[]}}})),graders:Et(p,l,m),graderFixtures:a.fixtures,learningSignals:{...N.learningSignals,rewards:e.method==="grpo"?o.tasks.filter(E=>_.has(E.id)).map(E=>({kind:"reward",id:`starter-reward-${E.id}`,taskId:E.id,task:c.instructions,rules:[{id:p.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:p.id,metadata:{starter:O(r),rewardBinding:O(p),approvalOrigin:"catalog_publication"}})):[],demonstrations:e.method==="sft"?o.tasks.filter(E=>_.has(E.id)).map(E=>({kind:"demonstration",id:`starter-target-${E.id}`,taskId:E.id,sourceRefs:[a.source.id],artifactRef:o.id,approved:!0,confidence:1,prompt:null,response:JSON.stringify(E.expectedOutput),metadata:{starter:O(r),approvalOrigin:"catalog_publication"}})):[]},metadata:{starter:O(r),starterTasksetRelease:O(o),taskDefinition:O(c),rewardBinding:O(p),rewardExecution:{binding:p,rewards:l},portableCapabilities:o.capabilities,derivedPortableMetadata:o.metadata,modelTasksetDerivation:o.metadata.modelTasksetDerivation}}),R=Ha({draft:S,now:a.createdAt,tasksetId:I,sourcePackageHash:o.contentHash});return R.metrics=o.metrics,R.contentHash=ie(R),{draft:S,taskset:R,generatedFiles:w,resources:n}}d(_a,"prepareModelStarterTaskset");function ha(a,e){let t=la(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!==Cd(t))throw new Error("Starter creation operation was already used with different configuration.");return F.parse(JSON.parse(r.payload))}d(ha,"findModelStarterCreation");async function bd(a,e){let t=la(e.request);if(t.learning)throw new Error("Create this Model in a hosted workspace to enable continual learning.");let r=ha(a,t);if(r)return r;let{taskset:s,resources:i}=_a(e),n=ua(e.package),o=await Oi({id:t.modelId,profileId:t.profileId,name:t.name,objective:n.taskDefinition.instructions,defaultBaseModel:t.startingModel,defaultDestinationId:null,trainingSetup:ca({package:i,setup:Ke.parse({tasksetRef:O(s),rewardBindingRef:O(i.rewardBinding),baseModel:t.startingModel,method:t.method,managedRolloutPlacement:"remote"})})},0);a.exec("BEGIN IMMEDIATE");try{let c=ha(a,t);if(c)return a.exec("COMMIT"),c;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 p=[...i.executionResources??i.execution?[{kind:"asset",resource:Je(i.executionResources??i.execution)}]:[],...n.execution?[{kind:"asset",resource:be(n.execution)}]:[],...n.assets.map(T=>({kind:"asset",resource:T})),...n.rewards.map(T=>({kind:"reward",resource:T})),{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:be(i.execution)}]:[]]];for(let{kind:T,resource:f}of p)Y(a,t.profileId,T,f);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 m=ma(a,o);return a.run("INSERT INTO model_starter_creation_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[t.profileId,t.operationId,Cd(t),JSON.stringify(m)]),a.exec("COMMIT"),m}catch(c){throw a.exec("ROLLBACK"),c}}d(bd,"commitModelStarterCreation");function Cd(a){return Il("sha256").update(k(a)).digest("hex")}d(Cd,"requestHash");function yr(a,e,t,r,s){let i=F.parse(t);a.exec("BEGIN IMMEDIATE");try{let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?F.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&At("Model ownership changed during hosted synchronization.");let c;if(r)k(o)!==k(e)&&At("Model changed while its hosted configuration was loading. Refresh before applying it."),c=i;else{(!o||!e||e.id!==i.id||e.profileId!==i.profileId)&&At("Model is no longer available for hosted synchronization."),o.hosted?.teamId!==e.hosted?.teamId&&o.hosted?.teamId!==i.hosted?.teamId&&At("Model hosting team changed during synchronization.");let p=i.hosted,l=o.hosted,m=l;if(p){l?.apiOrigin&&l.apiOrigin!==p.apiOrigin&&At("Model hosting API changed during synchronization.");let T=l?.apiOrigin===p.apiOrigin&&l?.teamId===p.teamId&&l.projectId===p.projectId;T&&l.revision===p.revision&&l.etag!==p.etag&&At("Hosted Model receipts disagree about the same revision."),m={...T&&l.revision>p.revision?l:p,tasksets:T?Pd(l.tasksets,p.tasksets,_=>`${_.localTasksetId}:${_.releaseHash}`,_=>_.syncedAt):p.tasksets}}c=F.parse({...o,hosted:m,tasksetSyncs:Pd(o.tasksetSyncs,i.tasksetSyncs,T=>T.localTasksetId,T=>T.lastAttemptAt)})}return s?.(),a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
|
|
2161
|
-
ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[c.id,c.profileId,JSON.stringify(c),c.createdAt,c.updatedAt]),a.exec("COMMIT"),c}catch(n){throw a.exec("ROLLBACK"),n}}d(yr,"commitModelProjectHosting");function Pd(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()]}d(Pd,"mergeLatest");function At(a){throw new Ae(409,{schemaVersion:"openpond.modelProjectApiError.v2",code:"model_hosting_conflict",message:a,retryable:!1,requestId:null,details:{}})}d(At,"conflict");function Fs(a,e){let{request:t,resolved:r}=pa(e.request,e.package),s=t.rewardBindingRef;if(!s||H(s,O(r.rewardBinding)))return e;function i(p,l){let m=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[t.profileId,p,l.id,l.revision]);if(!m)throw new Error(`The selected starter ${p} is unavailable in this Profile.`);let T=ae[p].parse(JSON.parse(m.payload));if(Re(T),l.contentHash&&l.contentHash!==T.contentHash)throw new Error("The selected starter Reward differs from its immutable reference.");return T}d(i,"read");let n=i("binding",s),o=[...new Map(n.sources.map(p=>[k(p.reward),i("reward",p.reward)])).values()],c=new Map(r.assets.map(p=>[p.id,p]));for(let p of o){let l=p.implementation;for(let m of[...p.assets,..."verifierRef"in l?[l.verifierRef]:[],..."rubricRef"in l?[l.rubricRef]:[],..."inputContract"in l?[l.inputContract]:[]])c.has(m.id)||c.set(m.id,i("asset",{id:m.id,revision:1}))}return{...e,rewardSelection:{rewardBinding:n,rewards:o,assets:[...c.values()]}}}d(Fs,"resolveModelStarterSelection");import Ol from"node:path";function bt(a){let e=a.environment.metadata.runtimeSourceTasksetId,t=e===void 0?a.id:e;if(typeof t!="string"||!t||t==="."||t===".."||Ol.basename(t)!==t||t.includes("\\"))throw new Error(`Taskset ${a.id} has an invalid package directory identity.`);return t}d(bt,"tasksetPackageDirectoryId");import Al from"node:path";import Ll from"node:path";async function xd(a){let{taskset:e}=a,{taskset:t,modelResources:r,learningResources:s}=a.content,i=new Set([...r?.assets??[],...s?.assets??[]].map(c=>c.id)),n=new Map,o=d((c,p=c.path)=>{if(i.has(c.id))return;let l=n.get(c.id);if(l&&(h(l.asset)!==h(c)||l.sourcePath!==p))throw new Error(`Conflicting local Taskset file reference: ${c.id}.`);n.set(c.id,{asset:c,sourcePath:p})},"add");for(let c of Me.parse(e.metadata.portableFileInventory??[]))o(c.asset,c.sourcePath);for(let c of t.tasks){let p=e.tasks.find(l=>l.id===c.id);for(let l of c.artifactRefs)o(l,p?.assets?.find(m=>m.id===l.id)?.artifactRef??l.path);for(let l of c.requiredOutputs??[])l.schemaRef&&o(l.schemaRef)}for(let c of t.graders){let p=e.graders.find(l=>l.id===c.id);"verifierRef"in c&&o(c.verifierRef,p?.kind==="custom_verifier"?p.module:c.verifierRef.path),"rubricRef"in c&&o(c.rubricRef)}return Lt({root:Ll.join(a.storeDir,"training","tasksets",bt(e)),content:a.content,sources:[...n.values()]})}d(xd,"captureAuthoredModelTasksetPackage");async function js(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=P.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?F.parse(JSON.parse(n.payload)):null;if(o&&(o.profileId!==t.project.profileId||o.revision!==t.expectedRevision))return;let c=o?.hosted?.tasksets.find(N=>N.localTasksetId===i.id&&N.localTasksetHash===i.contentHash),p=typeof i.metadata.importedPackageHash=="string"?i.metadata.importedPackageHash:c?.packageHash;if(!p){if(i.metadata.learning!==void 0||i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return;let N=t.project.trainingSetup,w=N.baseModel??t.project.defaultBaseModel,S=N.method??(i.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":null);if(!N.rewardBindingRef&&(S!=="grpo"||N.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 R=Pe({taskset:i,adapterId:he(i)});return xd({storeDir:e,taskset:i,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:R.tasksetRelease,environment:R.environmentRelease,verifierSet:R.verifierSetRelease}})}let l=await ge(e,p);if(l.taskset.id!==(c?.releaseId??r.id)||l.taskset.revision!==(c?.releaseRevision??r.revision))throw new Error("Cached package differs from its selected Taskset revision.");let{files:m,contentHash:T,...f}=l,_=yd(l,typeof i.metadata.importedPackageHash=="string"),I=await Lt({root:Al.join(e,"training","tasksets",bt(i)),content:f,sources:m.filter(N=>!_.has(N.asset.id)).map(N=>({asset:N.asset,sourcePath:i.tasks.flatMap(w=>w.assets??[]).find(w=>w.id===N.asset.id)?.artifactRef??N.asset.path})),fileOrder:m.map(N=>N.asset.id)});if(I.contentHash!==l.contentHash)throw new Error("Imported package bytes changed before the Reward edit.");return I}d(js,"loadModelTasksetPackage");var{package:Vg,evaluationPackage:Gg,...bl}=Ki.shape,Rr=u.object({apiOrigin:u.string().url().refine(a=>new URL(a).origin===a),teamId:u.string().min(1),project:F,localTaskset:Z,localEvaluation:Z.optional(),evaluationPackageHash:u.string().regex(/^[a-f0-9]{64}$/).optional(),packageHash:u.string().regex(/^[a-f0-9]{64}$/),request:u.object(bl).strict()}).strict().refine(a=>!!a.localEvaluation==!!a.evaluationPackageHash,"Evaluation bytes and local identity must be captured together.");function Bs(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?Rr.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}d(Bs,"pendingModelPackageOperation");function Xd(a,e){let t=Rr.parse(e);a.exec("BEGIN IMMEDIATE");try{let r=Bs(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?F.parse(JSON.parse(s.payload)):null;if(k(i)!==k(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=Rr.parse(JSON.parse(n.payload));if(k({...o,project:t.project})!==k(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}}d(Xd,"prepareModelPackageOperation");function Md(a,e,t){let r=Ji.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=Rr.parse(JSON.parse(s.payload));if(s.receipt&&k(JSON.parse(s.receipt))!==k(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||k(r.evaluation.taskset)!==k(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 c=new Date().toISOString(),p=F.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:c,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:c},...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:c}]:[]]},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:c,syncedAt:c,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:c,syncedAt:c,lastError:null}]:[]]});return yr(a,n,p,!1,()=>{a.run("UPDATE model_project_package_operations SET state = 'committed', receipt = ? WHERE operation_id = ?",[JSON.stringify(r),e])})}d(Md,"completeModelPackageOperation");var wr=class extends gr{static{d(this,"SqliteModelConfigurationStore")}async pendingModelPackagePush(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Package push store is closed.");return Bs(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 Xd(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 Md(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 mr(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=mr(this.db,e);if(r)return r;let s=await js(this.db,this.home,e),i=Ps(this.db,e,!0,s);if(i?.imported)await Ta({home:this.home,...i.imported});else if(i){let n=Cl.join(this.home,"training","tasksets",bt(i.source));await tt(this.home,i,i.directoryId,{source:{directory:n,packageHash:await J(n)},verify:d(o=>vt(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 cd(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 Ps(this.db,e,!1,await js(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 ha(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=ha(this.db,e.request);if(r)return r;let s=Fs(this.db,e),i=_a(s);return await tt(this.home,i,i.taskset.id),bd(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 _a(Fs(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 Ta({home:this.home,...n})}return yr(this.db,e,t,r,()=>{for(let n of s)fr(this.db,n)})});return this.writeQueue=i.then(()=>{},()=>{}),i}};var ga="('openpond_managed')",Nr=class extends wr{static{d(this,"SqliteTrainingJobsStore")}async saveModelProject(e){let t=Jt.parse(e);return await this.upsertPayload(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
|
|
2160
|
+
AND (? IS NULL OR r.source_key > ? OR (r.source_key = ? AND r.ordinal > ?)) ORDER BY r.source_key, r.ordinal LIMIT ?`,[e,...p,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]),T=m.slice(0,s.limit),f=T.at(-1);return Vr.parse({items:T.map(_=>{let I=c.get(_.source_key);if(I.hash!==_.source_hash)throw new Error("Task inventory changed. Reload the task list.");return cn.parse({...JSON.parse(_.metadata),tasksetId:I.id,tasksetRevision:I.revision,tasksetHash:I.hash,taskId:_.task_id,ordinal:_.ordinal,title:_.title,description:_.description,split:_.split,draftId:I.draft?I.id:null,modelId:I.modelId})}),nextCursor:m.length>s.limit&&f?Buffer.from(JSON.stringify({scope:i,key:f.source_key,ordinal:f.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,ve(e),e.hash,t]);if(!r)throw new Error("Task not found in this collection.");return Qi.parse(JSON.parse(r.payload))}};function ve(a){return`${a.draft?"draft":"release"}:${a.id}`}d(ve,"sourceKey");var gr=class extends hr{static{d(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=Sn.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,c=vs(n,e,()=>{if(!o)throw new Error("Model review transaction is closed.")});try{let p=n.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e]);if(!p)throw new We("model_not_found",404);let l=F.parse(JSON.parse(p.payload)),m=await An(c,s);if(m||!r)return n.exec("COMMIT"),m;if(l.revision!==s.expectedModelRevision||!l.trainingSetup.tasksetRef||!H(l.trainingSetup.tasksetRef,s.tasksetRef))throw new We("model_revision_conflict",409);let T=n.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[s.tasksetRef.id,s.tasksetRef.revision,e]),f=T?P.parse(JSON.parse(T.payload)):null;if(!f||f.contentHash!==s.tasksetRef.contentHash||h(f.metadata.learning)!==h(Aa(r.taskset)))throw new We("model_review_package_mismatch",409);let _=await bn(c,{scope:e,request:s,package:r,now:new Date().toISOString()});return n.exec("COMMIT"),_}catch(p){throw n.exec("ROLLBACK"),p}finally{o=!1}});return this.writeQueue=i.then(()=>{},()=>{}),i}};import{createHash as Il}from"node:crypto";function _a(a){let{request:e,resolved:t}=pa(a.request,a.package),{starter:r,...s}=t,i=e.rewardBindingRef&&!H(e.rewardBindingRef,O(t.rewardBinding));if(i&&(!a.rewardSelection||!H(e.rewardBindingRef,O(a.rewardSelection.rewardBinding))))throw new Error("The selected starter Reward is unavailable for package preparation.");let n=Bt({owner:{scopeId:e.profileId,modelId:e.modelId},source:s,...i?a.rewardSelection:{rewardBinding:s.rewardBinding,rewards:s.rewards,assets:s.assets}}),{taskset:o,taskDefinition:c,rewardBinding:p,rewards:l,assets:m}=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 T=n.execution!==void 0,f=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)||c.harness||!f&&!T||o.tasks.some(E=>E.artifactRefs.length)||o.graders.some(E=>E.kind==="model_judge"&&(!E.model||E.calibrationStatus!=="passed")))throw new Error("This starter requires an additional training or environment adapter before preparation.");let _=new Set(a.approvedTrainingTaskIds);if(_.size!==a.approvedTrainingTaskIds.length)throw new Error("Starter training approvals must be unique.");for(let E of _){let y=o.tasks.find(M=>M.id===E);if(!y||y.split!=="train")throw new Error(`Starter approval must reference a training task: ${E}.`);if(e.method==="sft"&&y.expectedOutput===null)throw new Error(`SFT starter approval requires a reviewed target: ${E}.`)}if(e.method==="grpo"&&o.tasks.some(E=>E.split==="train"&&!_.has(E.id)))throw new Error("GRPO starter preparation requires approval of every training task.");for(let E of a.fixtures){if(!o.tasks.some(y=>y.id===E.taskId))throw new Error(`Starter fixture references an unknown task: ${E.taskId}.`);T&&!E.infrastructureError&&Wr.parse(E.metadata.toolScript)}let I=o.id,N=on({profileId:e.profileId,id:`${I}-draft`,name:r.name,now:a.createdAt}),w=[];for(let E of o.graders){if(E.kind!=="custom_verifier")continue;let y=m.find(B=>B.id===E.verifierRef.id);if(!y)throw new Error(`Starter verifier asset is missing: ${E.id}.`);let M=Fa(E.verifierRef.contentHash);w.some(B=>B.path===M)||w.push({path:M,role:"verifier",content:Re(y,E.verifierRef)})}let S=pe.parse({...N,objective:c.instructions,metrics:o.metrics??N.metrics,sourceRefs:[a.source],policy:o.policy,environment:{...N.environment,kind:T?"agent":"chat",entrypoint:o.environment.entrypoint,stateful:o.environment.stateful,toolNames:o.tools.map(E=>E.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:c.outputSchema,renderer:null},capabilities:{...N.capabilities,taskKind:T?"single_agent":"chat",requiresTools:T,requiresState:T,supportedSignals:e.method==="grpo"?["reward"]:["demonstration"],compatibleMethods:[e.method],rewardKinds:[...new Set(o.graders.map(E=>E.kind==="human"?"human":E.kind==="model_judge"?"model_judge":"deterministic"))],requiresPrivilegedGrading:!0,environmentPlacements:["local","remote"]},tasks:o.tasks.map(({artifactRefs:E,...y})=>({...y,schemaVersion:"openpond.taskData.v1",sourceRefs:[a.source.id],metadata:{exampleOrigin:"curated_starter",starter:O(r),portableTaskRecord:{...y,artifactRefs:[]}}})),graders:Et(p,l,m),graderFixtures:a.fixtures,learningSignals:{...N.learningSignals,rewards:e.method==="grpo"?o.tasks.filter(E=>_.has(E.id)).map(E=>({kind:"reward",id:`starter-reward-${E.id}`,taskId:E.id,task:c.instructions,rules:[{id:p.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:p.id,metadata:{starter:O(r),rewardBinding:O(p),approvalOrigin:"catalog_publication"}})):[],demonstrations:e.method==="sft"?o.tasks.filter(E=>_.has(E.id)).map(E=>({kind:"demonstration",id:`starter-target-${E.id}`,taskId:E.id,sourceRefs:[a.source.id],artifactRef:o.id,approved:!0,confidence:1,prompt:null,response:JSON.stringify(E.expectedOutput),metadata:{starter:O(r),approvalOrigin:"catalog_publication"}})):[]},metadata:{starter:O(r),starterTasksetRelease:O(o),taskDefinition:O(c),rewardBinding:O(p),rewardExecution:{binding:p,rewards:l},portableCapabilities:o.capabilities,derivedPortableMetadata:o.metadata,modelTasksetDerivation:o.metadata.modelTasksetDerivation}}),R=Ha({draft:S,now:a.createdAt,tasksetId:I,sourcePackageHash:o.contentHash});return R.metrics=o.metrics,R.contentHash=ie(R),{draft:S,taskset:R,generatedFiles:w,resources:n}}d(_a,"prepareModelStarterTaskset");function ha(a,e){let t=la(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!==Cd(t))throw new Error("Starter creation operation was already used with different configuration.");return F.parse(JSON.parse(r.payload))}d(ha,"findModelStarterCreation");async function bd(a,e){let t=la(e.request);if(t.learning)throw new Error("Create this Model in a hosted workspace to enable continual learning.");let r=ha(a,t);if(r)return r;let{taskset:s,resources:i}=_a(e),n=ua(e.package),o=await Gi({id:t.modelId,profileId:t.profileId,name:t.name,objective:n.taskDefinition.instructions,defaultBaseModel:t.startingModel,defaultDestinationId:null,trainingSetup:ca({package:i,setup:Ke.parse({tasksetRef:O(s),rewardBindingRef:O(i.rewardBinding),baseModel:t.startingModel,method:t.method,managedRolloutPlacement:"remote"})})},0);a.exec("BEGIN IMMEDIATE");try{let c=ha(a,t);if(c)return a.exec("COMMIT"),c;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 p=[...i.executionResources??i.execution?[{kind:"asset",resource:Je(i.executionResources??i.execution)}]:[],...n.execution?[{kind:"asset",resource:be(n.execution)}]:[],...n.assets.map(T=>({kind:"asset",resource:T})),...n.rewards.map(T=>({kind:"reward",resource:T})),{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:be(i.execution)}]:[]]];for(let{kind:T,resource:f}of p)Y(a,t.profileId,T,f);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 m=ma(a,o);return a.run("INSERT INTO model_starter_creation_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[t.profileId,t.operationId,Cd(t),JSON.stringify(m)]),a.exec("COMMIT"),m}catch(c){throw a.exec("ROLLBACK"),c}}d(bd,"commitModelStarterCreation");function Cd(a){return Il("sha256").update(k(a)).digest("hex")}d(Cd,"requestHash");function yr(a,e,t,r,s){let i=F.parse(t);a.exec("BEGIN IMMEDIATE");try{let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?F.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&At("Model ownership changed during hosted synchronization.");let c;if(r)k(o)!==k(e)&&At("Model changed while its hosted configuration was loading. Refresh before applying it."),c=i;else{(!o||!e||e.id!==i.id||e.profileId!==i.profileId)&&At("Model is no longer available for hosted synchronization."),o.hosted?.teamId!==e.hosted?.teamId&&o.hosted?.teamId!==i.hosted?.teamId&&At("Model hosting team changed during synchronization.");let p=i.hosted,l=o.hosted,m=l;if(p){l?.apiOrigin&&l.apiOrigin!==p.apiOrigin&&At("Model hosting API changed during synchronization.");let T=l?.apiOrigin===p.apiOrigin&&l?.teamId===p.teamId&&l.projectId===p.projectId;T&&l.revision===p.revision&&l.etag!==p.etag&&At("Hosted Model receipts disagree about the same revision."),m={...T&&l.revision>p.revision?l:p,tasksets:T?Pd(l.tasksets,p.tasksets,_=>`${_.localTasksetId}:${_.releaseHash}`,_=>_.syncedAt):p.tasksets}}c=F.parse({...o,hosted:m,tasksetSyncs:Pd(o.tasksetSyncs,i.tasksetSyncs,T=>T.localTasksetId,T=>T.lastAttemptAt)})}return s?.(),a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
|
|
2161
|
+
ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[c.id,c.profileId,JSON.stringify(c),c.createdAt,c.updatedAt]),a.exec("COMMIT"),c}catch(n){throw a.exec("ROLLBACK"),n}}d(yr,"commitModelProjectHosting");function Pd(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()]}d(Pd,"mergeLatest");function At(a){throw new Ae(409,{schemaVersion:"openpond.modelProjectApiError.v2",code:"model_hosting_conflict",message:a,retryable:!1,requestId:null,details:{}})}d(At,"conflict");function Fs(a,e){let{request:t,resolved:r}=pa(e.request,e.package),s=t.rewardBindingRef;if(!s||H(s,O(r.rewardBinding)))return e;function i(p,l){let m=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[t.profileId,p,l.id,l.revision]);if(!m)throw new Error(`The selected starter ${p} is unavailable in this Profile.`);let T=ae[p].parse(JSON.parse(m.payload));if(we(T),l.contentHash&&l.contentHash!==T.contentHash)throw new Error("The selected starter Reward differs from its immutable reference.");return T}d(i,"read");let n=i("binding",s),o=[...new Map(n.sources.map(p=>[k(p.reward),i("reward",p.reward)])).values()],c=new Map(r.assets.map(p=>[p.id,p]));for(let p of o){let l=p.implementation;for(let m of[...p.assets,..."verifierRef"in l?[l.verifierRef]:[],..."rubricRef"in l?[l.rubricRef]:[],..."inputContract"in l?[l.inputContract]:[]])c.has(m.id)||c.set(m.id,i("asset",{id:m.id,revision:1}))}return{...e,rewardSelection:{rewardBinding:n,rewards:o,assets:[...c.values()]}}}d(Fs,"resolveModelStarterSelection");import Ol from"node:path";function bt(a){let e=a.environment.metadata.runtimeSourceTasksetId,t=e===void 0?a.id:e;if(typeof t!="string"||!t||t==="."||t===".."||Ol.basename(t)!==t||t.includes("\\"))throw new Error(`Taskset ${a.id} has an invalid package directory identity.`);return t}d(bt,"tasksetPackageDirectoryId");import Al from"node:path";import Ll from"node:path";async function xd(a){let{taskset:e}=a,{taskset:t,modelResources:r,learningResources:s}=a.content,i=new Set([...r?.assets??[],...s?.assets??[]].map(c=>c.id)),n=new Map,o=d((c,p=c.path)=>{if(i.has(c.id))return;let l=n.get(c.id);if(l&&(h(l.asset)!==h(c)||l.sourcePath!==p))throw new Error(`Conflicting local Taskset file reference: ${c.id}.`);n.set(c.id,{asset:c,sourcePath:p})},"add");for(let c of Me.parse(e.metadata.portableFileInventory??[]))o(c.asset,c.sourcePath);for(let c of t.tasks){let p=e.tasks.find(l=>l.id===c.id);for(let l of c.artifactRefs)o(l,p?.assets?.find(m=>m.id===l.id)?.artifactRef??l.path);for(let l of c.requiredOutputs??[])l.schemaRef&&o(l.schemaRef)}for(let c of t.graders){let p=e.graders.find(l=>l.id===c.id);"verifierRef"in c&&o(c.verifierRef,p?.kind==="custom_verifier"?p.module:c.verifierRef.path),"rubricRef"in c&&o(c.rubricRef)}return Lt({root:Ll.join(a.storeDir,"training","tasksets",bt(e)),content:a.content,sources:[...n.values()]})}d(xd,"captureAuthoredModelTasksetPackage");async function js(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=P.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?F.parse(JSON.parse(n.payload)):null;if(o&&(o.profileId!==t.project.profileId||o.revision!==t.expectedRevision))return;let c=o?.hosted?.tasksets.find(N=>N.localTasksetId===i.id&&N.localTasksetHash===i.contentHash),p=typeof i.metadata.importedPackageHash=="string"?i.metadata.importedPackageHash:c?.packageHash;if(!p){if(i.metadata.learning!==void 0||i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return;let N=t.project.trainingSetup,w=N.baseModel??t.project.defaultBaseModel,S=N.method??(i.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":null);if(!N.rewardBindingRef&&(S!=="grpo"||N.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 R=Pe({taskset:i,adapterId:he(i)});return xd({storeDir:e,taskset:i,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:R.tasksetRelease,environment:R.environmentRelease,verifierSet:R.verifierSetRelease}})}let l=await ge(e,p);if(l.taskset.id!==(c?.releaseId??r.id)||l.taskset.revision!==(c?.releaseRevision??r.revision))throw new Error("Cached package differs from its selected Taskset revision.");let{files:m,contentHash:T,...f}=l,_=yd(l,typeof i.metadata.importedPackageHash=="string"),I=await Lt({root:Al.join(e,"training","tasksets",bt(i)),content:f,sources:m.filter(N=>!_.has(N.asset.id)).map(N=>({asset:N.asset,sourcePath:i.tasks.flatMap(w=>w.assets??[]).find(w=>w.id===N.asset.id)?.artifactRef??N.asset.path})),fileOrder:m.map(N=>N.asset.id)});if(I.contentHash!==l.contentHash)throw new Error("Imported package bytes changed before the Reward edit.");return I}d(js,"loadModelTasksetPackage");var{package:Vg,evaluationPackage:Gg,...bl}=en.shape,Rr=u.object({apiOrigin:u.string().url().refine(a=>new URL(a).origin===a),teamId:u.string().min(1),project:F,localTaskset:Z,localEvaluation:Z.optional(),evaluationPackageHash:u.string().regex(/^[a-f0-9]{64}$/).optional(),packageHash:u.string().regex(/^[a-f0-9]{64}$/),request:u.object(bl).strict()}).strict().refine(a=>!!a.localEvaluation==!!a.evaluationPackageHash,"Evaluation bytes and local identity must be captured together.");function Bs(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?Rr.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}d(Bs,"pendingModelPackageOperation");function Xd(a,e){let t=Rr.parse(e);a.exec("BEGIN IMMEDIATE");try{let r=Bs(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?F.parse(JSON.parse(s.payload)):null;if(k(i)!==k(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=Rr.parse(JSON.parse(n.payload));if(k({...o,project:t.project})!==k(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}}d(Xd,"prepareModelPackageOperation");function Md(a,e,t){let r=tn.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=Rr.parse(JSON.parse(s.payload));if(s.receipt&&k(JSON.parse(s.receipt))!==k(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||k(r.evaluation.taskset)!==k(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 c=new Date().toISOString(),p=F.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:c,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:c},...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:c}]:[]]},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:c,syncedAt:c,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:c,syncedAt:c,lastError:null}]:[]]});return yr(a,n,p,!1,()=>{a.run("UPDATE model_project_package_operations SET state = 'committed', receipt = ? WHERE operation_id = ?",[JSON.stringify(r),e])})}d(Md,"completeModelPackageOperation");var wr=class extends gr{static{d(this,"SqliteModelConfigurationStore")}async pendingModelPackagePush(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Package push store is closed.");return Bs(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 Xd(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 Md(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 mr(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=mr(this.db,e);if(r)return r;let s=await js(this.db,this.home,e),i=Ps(this.db,e,!0,s);if(i?.imported)await Ta({home:this.home,...i.imported});else if(i){let n=Cl.join(this.home,"training","tasksets",bt(i.source));await tt(this.home,i,i.directoryId,{source:{directory:n,packageHash:await J(n)},verify:d(o=>vt(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 cd(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 Ps(this.db,e,!1,await js(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 ha(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=ha(this.db,e.request);if(r)return r;let s=Fs(this.db,e),i=_a(s);return await tt(this.home,i,i.taskset.id),bd(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 _a(Fs(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 Ta({home:this.home,...n})}return yr(this.db,e,t,r,()=>{for(let n of s)fr(this.db,n)})});return this.writeQueue=i.then(()=>{},()=>{}),i}};var ga="('openpond_managed')",Nr=class extends wr{static{d(this,"SqliteTrainingJobsStore")}async saveModelProject(e){let t=Jt.parse(e);return await this.upsertPayload(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
|
|
2162
2162
|
ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.profileId,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getModelProject(e){return this.getParsedPayload("SELECT payload FROM model_projects WHERE id = ?",[e],Dd)}async listModelProjects(e){return this.listParsedPayloads(e?"SELECT payload FROM model_projects WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM model_projects ORDER BY updated_at DESC",e?[e]:[],Dd)}async saveTrainingPlan(e){let t=qa.parse(e),r=await this.getTrainingPlan(t.id);if(r&&r.contentHash!==t.contentHash)throw new Error(`Training Plan ${t.id} is immutable and already has different content.`);return await this.upsertPayload(`INSERT INTO training_plans (id, taskset_id, destination_id, payload, created_at) VALUES (?, ?, ?, ?, ?)
|
|
2163
2163
|
ON CONFLICT(id) DO UPDATE SET taskset_id = excluded.taskset_id, destination_id = excluded.destination_id, payload = excluded.payload`,[t.id,t.tasksetId,t.destinationId,JSON.stringify(t),t.createdAt]),t}async listTrainingPlans(e){return this.listParsedPayloads(e?`SELECT payload FROM training_plans WHERE taskset_id = ? AND destination_id IN ${ga} ORDER BY created_at DESC`:`SELECT payload FROM training_plans WHERE destination_id IN ${ga} ORDER BY created_at DESC`,e?[e]:[],qa.parse)}async getTrainingPlan(e){return this.getParsedPayload(`SELECT payload FROM training_plans WHERE id = ? AND destination_id IN ${ga}`,[e],qa.parse)}async saveTrainingBundle(e){let t=zt.parse(e);return await this.upsertPayload(`INSERT INTO training_bundles (id, plan_id, content_hash, payload, created_at) VALUES (?, ?, ?, ?, ?)
|
|
2164
2164
|
ON CONFLICT(id) DO UPDATE SET plan_id = excluded.plan_id, content_hash = excluded.content_hash, payload = excluded.payload`,[t.id,t.planId,t.contentHash,JSON.stringify(t),t.createdAt]),t}async getTrainingBundle(e){return this.getParsedPayload("SELECT payload FROM training_bundles WHERE id = ?",[e],zt.parse)}async listTrainingBundles(e){return this.listParsedPayloads(e?"SELECT payload FROM training_bundles WHERE plan_id = ? ORDER BY created_at DESC":"SELECT payload FROM training_bundles ORDER BY created_at DESC",e?[e]:[],zt.parse)}async findTrainingBundleByPlanAndHash(e,t){return this.getParsedPayload("SELECT payload FROM training_bundles WHERE plan_id = ? AND content_hash = ?",[e,t],zt.parse)}async saveTrainingJob(e){let t=Qe.parse(e),r=await this.getTrainingJob(t.id),s=r?.metadata.activityAuthority,i=t.metadata.activityAuthority;if(s!==void 0){let o=aa.parse(s);if(i!==void 0&&JSON.stringify(aa.parse(i))!==JSON.stringify(o))throw new Error("Training activity ownership cannot change during reconciliation.");t={...t,metadata:{...t.metadata,activityAuthority:o}}}else if(i!==void 0){if(r)throw new Error("Historical training activity cannot be assigned a guessed owner.");t={...t,metadata:{...t.metadata,activityAuthority:aa.parse(i)}}}await this.upsertPayload(`INSERT INTO training_jobs (id, plan_id, destination_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
2165
2165
|
ON CONFLICT(id) DO UPDATE SET plan_id = excluded.plan_id, destination_id = excluded.destination_id, status = excluded.status,
|
|
2166
2166
|
payload = CASE WHEN json_extract(training_jobs.payload,'$.metadata.activityAuthority') IS NOT NULL THEN json_set(excluded.payload,'$.metadata.activityAuthority',json_extract(training_jobs.payload,'$.metadata.activityAuthority')) ELSE excluded.payload END,
|
|
2167
2167
|
updated_at = excluded.updated_at
|
|
2168
|
-
WHERE json_extract(excluded.payload,'$.metadata.activityAuthority') IS NULL OR json_extract(training_jobs.payload,'$.metadata.activityAuthority') = json_extract(excluded.payload,'$.metadata.activityAuthority')`,[t.id,t.planId,t.destinationId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]);let n=await this.getTrainingJob(t.id);if(!n)throw new Error("Training job was not retained.");if(t.metadata.activityAuthority!==void 0&&JSON.stringify(n.metadata.activityAuthority)!==JSON.stringify(t.metadata.activityAuthority))throw new Error("Training activity ownership changed during admission.");return n}async saveTrainingApproval(e){let t=
|
|
2169
|
-
ON CONFLICT(id) DO UPDATE SET plan_id = excluded.plan_id, bundle_hash = excluded.bundle_hash, payload = excluded.payload`,[t.id,t.planId,t.bundleHash,JSON.stringify(t),t.approvedAt]),t}async getTrainingApproval(e){return this.getParsedPayload("SELECT payload FROM training_approvals WHERE id = ?",[e],
|
|
2168
|
+
WHERE json_extract(excluded.payload,'$.metadata.activityAuthority') IS NULL OR json_extract(training_jobs.payload,'$.metadata.activityAuthority') = json_extract(excluded.payload,'$.metadata.activityAuthority')`,[t.id,t.planId,t.destinationId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]);let n=await this.getTrainingJob(t.id);if(!n)throw new Error("Training job was not retained.");if(t.metadata.activityAuthority!==void 0&&JSON.stringify(n.metadata.activityAuthority)!==JSON.stringify(t.metadata.activityAuthority))throw new Error("Training activity ownership changed during admission.");return n}async saveTrainingApproval(e){let t=rs.parse(e);return await this.upsertPayload(`INSERT INTO training_approvals (id, plan_id, bundle_hash, payload, created_at) VALUES (?, ?, ?, ?, ?)
|
|
2169
|
+
ON CONFLICT(id) DO UPDATE SET plan_id = excluded.plan_id, bundle_hash = excluded.bundle_hash, payload = excluded.payload`,[t.id,t.planId,t.bundleHash,JSON.stringify(t),t.approvedAt]),t}async getTrainingApproval(e){return this.getParsedPayload("SELECT payload FROM training_approvals WHERE id = ?",[e],rs.parse)}async getTrainingJob(e){return this.getParsedPayload(`SELECT payload FROM training_jobs WHERE id = ? AND destination_id IN ${ga}`,[e],Qe.parse)}async readTrainingExecutionActivity(e){let t=await this.all(`SELECT id,payload,count(*) OVER () AS total FROM training_jobs
|
|
2170
2170
|
WHERE json_extract(payload,'$.metadata.activityAuthority.schemaVersion')='openpond.trainingActivityAuthority.v1'
|
|
2171
2171
|
AND json_extract(payload,'$.metadata.activityAuthority.teamId')=? AND json_extract(payload,'$.metadata.activityAuthority.actorId')=?
|
|
2172
2172
|
AND status IN ('queued','starting','running','cancelling','reconciling')
|
|
2173
2173
|
AND destination_id != 'openpond_managed'
|
|
2174
2174
|
${e.projectId?"AND json_extract(payload,'$.metadata.activityAuthority.projectId')=?":""}
|
|
2175
|
-
ORDER BY updated_at DESC,id DESC LIMIT ?`,[e.teamId,e.actorId,...e.projectId?[e.projectId]:[],Math.min(100,Math.max(1,e.limit??100))]);return{count:Number(t[0]?.total??0),items:t.map(r=>{let s=Qe.parse(JSON.parse(r.payload)),i=typeof s.metadata.modelProjectId=="string"?s.metadata.modelProjectId:null;if(!i)throw new Error("This qualified local training job has no retained model route.");return{kind:"training",location:"local",id:s.id,name:s.id,phase:typeof s.metadata.phase=="string"?s.metadata.phase:s.status,updatedAt:s.updatedAt,href:`/models/${encodeURIComponent(i)}/runs/${encodeURIComponent(`job:${s.id}`)}`}})}}async listTrainingJobs(){return this.listParsedPayloads(`SELECT payload FROM training_jobs WHERE destination_id IN ${ga} ORDER BY updated_at DESC`,[],Qe.parse)}async saveTrainingJobEvent(e){let t=
|
|
2176
|
-
ON CONFLICT(id) DO UPDATE SET job_id = excluded.job_id, sequence = excluded.sequence, payload = excluded.payload`,[t.id,t.jobId,t.sequence,JSON.stringify(t),t.timestamp]),t}async listTrainingJobEvents(e){return this.listParsedPayloads("SELECT payload FROM training_job_events WHERE job_id = ? ORDER BY sequence ASC",[e],
|
|
2175
|
+
ORDER BY updated_at DESC,id DESC LIMIT ?`,[e.teamId,e.actorId,...e.projectId?[e.projectId]:[],Math.min(100,Math.max(1,e.limit??100))]);return{count:Number(t[0]?.total??0),items:t.map(r=>{let s=Qe.parse(JSON.parse(r.payload)),i=typeof s.metadata.modelProjectId=="string"?s.metadata.modelProjectId:null;if(!i)throw new Error("This qualified local training job has no retained model route.");return{kind:"training",location:"local",id:s.id,name:s.id,phase:typeof s.metadata.phase=="string"?s.metadata.phase:s.status,updatedAt:s.updatedAt,href:`/models/${encodeURIComponent(i)}/runs/${encodeURIComponent(`job:${s.id}`)}`}})}}async listTrainingJobs(){return this.listParsedPayloads(`SELECT payload FROM training_jobs WHERE destination_id IN ${ga} ORDER BY updated_at DESC`,[],Qe.parse)}async saveTrainingJobEvent(e){let t=ss.parse(e);return await this.upsertPayload(`INSERT INTO training_job_events (id, job_id, sequence, payload, created_at) VALUES (?, ?, ?, ?, ?)
|
|
2176
|
+
ON CONFLICT(id) DO UPDATE SET job_id = excluded.job_id, sequence = excluded.sequence, payload = excluded.payload`,[t.id,t.jobId,t.sequence,JSON.stringify(t),t.timestamp]),t}async listTrainingJobEvents(e){return this.listParsedPayloads("SELECT payload FROM training_job_events WHERE job_id = ? ORDER BY sequence ASC",[e],ss.parse)}async saveTrainingArtifact(e){let t=Wa.parse(e);return await this.upsertPayload(`INSERT INTO training_artifacts (id, job_id, kind, payload, created_at) VALUES (?, ?, ?, ?, ?)
|
|
2177
2177
|
ON CONFLICT(id) DO UPDATE SET job_id = excluded.job_id, kind = excluded.kind, payload = excluded.payload`,[t.id,t.jobId,t.kind,JSON.stringify(t),t.createdAt]),t}async listTrainingArtifacts(e){return this.listParsedPayloads(e?"SELECT payload FROM training_artifacts WHERE job_id = ? ORDER BY created_at DESC":"SELECT payload FROM training_artifacts ORDER BY created_at DESC",e?[e]:[],Wa.parse)}async getTrainingArtifact(e){return this.getParsedPayload("SELECT payload FROM training_artifacts WHERE id = ?",[e],Wa.parse)}async saveModelArtifactLineage(e){let t=Ya.parse(e);return await this.upsertPayload(`INSERT INTO model_artifact_lineage (id, artifact_id, taskset_id, payload, created_at) VALUES (?, ?, ?, ?, ?)
|
|
2178
|
-
ON CONFLICT(id) DO UPDATE SET artifact_id = excluded.artifact_id, taskset_id = excluded.taskset_id, payload = excluded.payload`,[t.id,t.artifactId,t.tasksetId,JSON.stringify(t),t.importedAt]),t}async updateModelArtifactLineageServing(e,t){let r=t===null?null:
|
|
2178
|
+
ON CONFLICT(id) DO UPDATE SET artifact_id = excluded.artifact_id, taskset_id = excluded.taskset_id, payload = excluded.payload`,[t.id,t.artifactId,t.tasksetId,JSON.stringify(t),t.importedAt]),t}async updateModelArtifactLineageServing(e,t){let r=t===null?null:gn.parse(t);await this.upsertPayload("UPDATE model_artifact_lineage SET payload = json_set(payload, '$.managedServing', json(?)) WHERE id = ?",[JSON.stringify(r),e])}async updateModelArtifactLineageReview(e,t){let r=Ya.pick({status:!0,rejectedAt:!0,rejectionReason:!0,frozenEvaluationArtifactId:!0}).parse(t);await this.upsertPayload("UPDATE model_artifact_lineage SET payload = json_set(payload, '$.status', ?, '$.rejectedAt', ?, '$.rejectionReason', ?, '$.frozenEvaluationArtifactId', ?) WHERE id = ?",[r.status,r.rejectedAt,r.rejectionReason,r.frozenEvaluationArtifactId,e])}async listModelArtifactLineage(e){return this.listParsedPayloads(e?"SELECT payload FROM model_artifact_lineage WHERE taskset_id = ? ORDER BY created_at DESC":"SELECT payload FROM model_artifact_lineage ORDER BY created_at DESC",e?[e]:[],Ud)}async getModelArtifactLineage(e){return this.getParsedPayload("SELECT payload FROM model_artifact_lineage WHERE id = ?",[e],Ud)}};function Dd(a){return Jt.parse(Pl(a))}d(Dd,"parseStoredModelProject");function Pl(a){return!qs(a)||typeof a.defaultDestinationId!="string"||a.defaultDestinationId==="openpond_managed"?a:{...a,defaultDestinationId:null}}d(Pl,"normalizeStoredModelProjectDestination");function Ud(a){return Ya.parse(xl(a))}d(Ud,"parseStoredModelArtifactLineage");function xl(a){if(!qs(a)||!qs(a.managedServing))return a;let e=a.managedServing.source;return e!=="openpond_fireworks"&&e!=="openpond_training"?a:{...a,managedServing:null}}d(xl,"normalizeStoredManagedServingProjection");function qs(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}d(qs,"isRecord");function ya(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}))}}d(ya,"trainingChatSearchResult");function Hd(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}d(Hd,"trainingChatFtsQuery");function Ws(a,e,t){let r=a.get(e)??[];r.push(t),a.set(e,r)}d(Ws,"appendTrainingChatSearchText");var Sr=class extends Nr{static{d(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
|
|
2179
2179
|
WHERE name = 'assistant.delta' AND session_id IN (${r})
|
|
2180
2180
|
ORDER BY sequence ASC`,t)]),o=new Map;for(let c of i){let p=JSON.parse(c.payload);p.prompt.trim()&&Ws(o,c.session_id,p.prompt)}for(let c of n){let p=JSON.parse(c.payload);p.output?.trim()&&Ws(o,c.session_id,p.output)}return s.map(c=>{let p=ta(JSON.parse(c.payload));return{session:p,body:o.get(p.id)?.join(`
|
|
2181
2181
|
`)??""}})}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)
|
|
@@ -2214,7 +2214,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
|
|
|
2214
2214
|
WHERE training_chat_search_fts MATCH ? AND documents.eligible = 1
|
|
2215
2215
|
AND documents.session_id IN (${n})
|
|
2216
2216
|
ORDER BY bm25(training_chat_search_fts, 0.0, 8.0, 1.0), documents.updated_at DESC
|
|
2217
|
-
LIMIT ? OFFSET ?`,[l,...i,s,r]);return ya(t,r,s,m?.count??0,T,c,p)}async listTrainingSources(e){return await this.ready,await this.writeQueue,(await this.all("SELECT payload FROM training_sources WHERE profile_id = ? AND source_kind = 'conversation' ORDER BY updated_at DESC",[e])).map(r=>
|
|
2217
|
+
LIMIT ? OFFSET ?`,[l,...i,s,r]);return ya(t,r,s,m?.count??0,T,c,p)}async listTrainingSources(e){return await this.ready,await this.writeQueue,(await this.all("SELECT payload FROM training_sources WHERE profile_id = ? AND source_kind = 'conversation' ORDER BY updated_at DESC",[e])).map(r=>Ft.parse(JSON.parse(r.payload)))}async getTrainingSource(e){await this.ready,await this.writeQueue;let t=await this.get("SELECT payload FROM training_sources WHERE id = ? AND source_kind = 'conversation'",[e]);return t?Ft.parse(JSON.parse(t.payload)):null}async getTrainingSourceForSession(e){await this.ready,await this.writeQueue;let t=await this.get(`SELECT payload FROM training_sources
|
|
2218
2218
|
WHERE profile_id = ? AND session_id = ?
|
|
2219
2219
|
AND source_kind = 'conversation'
|
|
2220
2220
|
AND json_extract(payload, '$.sourceHash') = ?
|
|
@@ -2223,7 +2223,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
|
|
|
2223
2223
|
WHEN json_type(payload, '$.metadata.crossSystemOperations') IS NOT NULL THEN 0
|
|
2224
2224
|
ELSE 1
|
|
2225
2225
|
END, updated_at DESC
|
|
2226
|
-
LIMIT 1`,[e.profileId,e.sessionId,e.sourceHash]);return t?
|
|
2226
|
+
LIMIT 1`,[e.profileId,e.sessionId,e.sourceHash]);return t?Ft.parse(JSON.parse(t.payload)):null}async upsertTrainingSource(e){let t=Ft.parse(e);await this.ready;let r=ne(),s=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
|
|
2227
2227
|
id, profile_id, source_kind, session_id, source_hash,
|
|
2228
2228
|
repository_id, revision, payload, created_at, updated_at
|
|
2229
2229
|
)
|
|
@@ -2236,14 +2236,14 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
|
|
|
2236
2236
|
repository_id = NULL,
|
|
2237
2237
|
revision = NULL,
|
|
2238
2238
|
payload = excluded.payload,
|
|
2239
|
-
updated_at = excluded.updated_at`,[t.id,t.profileId,t.sessionId,t.sourceHash,JSON.stringify(t),r,r]));return this.writeQueue=s.catch(()=>{}),await s,t}async deleteTrainingSource(e){await this.ready;let t=this.writeQueue.then(()=>this.run("DELETE FROM training_sources WHERE id = ?",[e]));this.writeQueue=t.catch(()=>{}),await t}async listTaskCreationSnapshots(e){await this.ready,await this.writeQueue;let t=await this.all("SELECT payload FROM task_creation_snapshots WHERE profile_id = ? ORDER BY updated_at DESC",[e]),r=[];for(let s of t){let i=JSON.parse(s.payload),n=Ba.safeParse(i);if(n.success){r.push(n.data);continue}let o=Fd(i);if(o){this.logger?.warn("retired task creation snapshot ignored",{snapshotId:jd(i),specificationKind:o});continue}throw n.error}return r}async getTaskCreationSnapshot(e){await this.ready,await this.writeQueue;let t=await this.get("SELECT payload FROM task_creation_snapshots WHERE id = ?",[e]);if(!t)return null;let r=JSON.parse(t.payload),s=Ba.safeParse(r);if(s.success)return s.data;let i=Fd(r);if(i)return this.logger?.warn("retired task creation snapshot ignored",{snapshotId:jd(r),specificationKind:i}),null;throw s.error}async upsertTaskCreationSnapshot(e){let t=Ba.parse(e),r=
|
|
2239
|
+
updated_at = excluded.updated_at`,[t.id,t.profileId,t.sessionId,t.sourceHash,JSON.stringify(t),r,r]));return this.writeQueue=s.catch(()=>{}),await s,t}async deleteTrainingSource(e){await this.ready;let t=this.writeQueue.then(()=>this.run("DELETE FROM training_sources WHERE id = ?",[e]));this.writeQueue=t.catch(()=>{}),await t}async listTaskCreationSnapshots(e){await this.ready,await this.writeQueue;let t=await this.all("SELECT payload FROM task_creation_snapshots WHERE profile_id = ? ORDER BY updated_at DESC",[e]),r=[];for(let s of t){let i=JSON.parse(s.payload),n=Ba.safeParse(i);if(n.success){r.push(n.data);continue}let o=Fd(i);if(o){this.logger?.warn("retired task creation snapshot ignored",{snapshotId:jd(i),specificationKind:o});continue}throw n.error}return r}async getTaskCreationSnapshot(e){await this.ready,await this.writeQueue;let t=await this.get("SELECT payload FROM task_creation_snapshots WHERE id = ?",[e]);if(!t)return null;let r=JSON.parse(t.payload),s=Ba.safeParse(r);if(s.success)return s.data;let i=Fd(r);if(i)return this.logger?.warn("retired task creation snapshot ignored",{snapshotId:jd(r),specificationKind:i}),null;throw s.error}async upsertTaskCreationSnapshot(e){let t=Ba.parse(e),r=as.parse({schemaVersion:"openpond.taskCreationTranscript.v1",creationId:t.id,profileId:t.request.profileId,messages:t.transcript,updatedAt:t.updatedAt});await this.ready;let s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{await this.run("INSERT INTO task_creation_snapshots (id, profile_id, state, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, state = excluded.state, payload = excluded.payload, updated_at = excluded.updated_at",[t.id,t.request.profileId,t.state,JSON.stringify(t),t.createdAt,t.updatedAt]),await this.run("INSERT INTO task_creation_transcripts (creation_id, profile_id, payload, updated_at) VALUES (?, ?, ?, ?) ON CONFLICT(creation_id) DO UPDATE SET profile_id = excluded.profile_id, payload = excluded.payload, updated_at = excluded.updated_at",[t.id,t.request.profileId,JSON.stringify(r),t.updatedAt]),t.proposal?await this.run("INSERT INTO task_design_proposals (creation_id, proposal_id, profile_id, state, payload, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(creation_id) DO UPDATE SET proposal_id = excluded.proposal_id, profile_id = excluded.profile_id, state = excluded.state, payload = excluded.payload, updated_at = excluded.updated_at",[t.id,t.proposal.id,t.request.profileId,t.state,JSON.stringify(t.proposal),t.updatedAt]):await this.run("DELETE FROM task_design_proposals WHERE creation_id = ?",[t.id]),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=s.catch(()=>{}),await s,t}async getTaskCreationTranscript(e){return this.getParsedPayload("SELECT payload FROM task_creation_transcripts WHERE creation_id = ?",[e],as.parse)}async getTaskDesignProposal(e){return this.getParsedPayload("SELECT payload FROM task_design_proposals WHERE creation_id = ?",[e],_n.parse)}async listTasksets(e){return this.listParsedPayloads(e?"SELECT payload FROM tasksets WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM tasksets ORDER BY updated_at DESC",e?[e]:[],Ra)}async listTasksetRevisions(e){return this.listParsedPayloads("SELECT payload FROM taskset_revisions WHERE json_extract(payload, '$.profileId') = ? ORDER BY taskset_id, revision DESC",[e],Ra)}async getTaskset(e){return this.getParsedPayload("SELECT payload FROM tasksets WHERE id = ?",[e],Ra)}async getTasksetRevision(e,t,r){let s=await this.getParsedPayload("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[e,t],Ra);if(s&&r&&s.contentHash!==r)throw new Error(`Taskset ${e}@${t} does not match the requested immutable content hash.`);return s}async getTasksetByHash(e,t){return this.getParsedPayload("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND content_hash = ?",[e,t],Ra)}async upsertTaskset(e){let t=P.parse(e);await this.ready;let r=this.writeQueue.then(()=>pr(this.database,t));return this.writeQueue=r.catch(()=>{}),await r,t}async deleteTasksetData(e){await this.ready;let t=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{await this.run("DELETE FROM grade_results WHERE attempt_id IN (SELECT id FROM task_attempts WHERE taskset_id = ?)",[e]),await this.run("DELETE FROM evaluation_results WHERE taskset_id = ?",[e]),await this.run("DELETE FROM benchmark_runs WHERE taskset_id = ?",[e]),await this.run("DELETE FROM benchmark_comparisons WHERE taskset_id = ?",[e]),await this.run("DELETE FROM task_attempt_artifacts WHERE taskset_id = ?",[e]),await this.run("DELETE FROM preference_comparison_submissions WHERE taskset_id = ?",[e]),await this.run("DELETE FROM preference_comparison_assignments WHERE taskset_id = ?",[e]),await this.run("DELETE FROM preference_comparison_calibrations WHERE taskset_id = ?",[e]),await this.run("DELETE FROM preference_comparison_releases WHERE taskset_id = ?",[e]),await this.run("DELETE FROM task_attempts WHERE taskset_id = ?",[e]),await this.run("DELETE FROM grader_audit_reports WHERE taskset_id = ?",[e]),await this.run("DELETE FROM readiness_reports WHERE taskset_id = ?",[e]),await this.run("DELETE FROM training_artifacts WHERE job_id IN (SELECT id FROM training_jobs WHERE plan_id IN (SELECT id FROM training_plans WHERE taskset_id = ?))",[e]),await this.run("DELETE FROM training_rollout_receipts WHERE taskset_id = ?",[e]),await this.run("DELETE FROM model_bindings WHERE model_artifact_lineage_id IN (SELECT id FROM model_artifact_lineage WHERE taskset_id = ?)",[e]),await this.run("DELETE FROM training_job_events WHERE job_id IN (SELECT id FROM training_jobs WHERE plan_id IN (SELECT id FROM training_plans WHERE taskset_id = ?))",[e]),await this.run("DELETE FROM training_jobs WHERE plan_id IN (SELECT id FROM training_plans WHERE taskset_id = ?)",[e]),await this.run("DELETE FROM training_approvals WHERE plan_id IN (SELECT id FROM training_plans WHERE taskset_id = ?)",[e]),await this.run("DELETE FROM training_bundles WHERE plan_id IN (SELECT id FROM training_plans WHERE taskset_id = ?)",[e]),await this.run("DELETE FROM model_artifact_lineage WHERE taskset_id = ?",[e]),await this.run("DELETE FROM training_plans WHERE taskset_id = ?",[e]),await this.run("DELETE FROM task_design_proposals WHERE creation_id IN (SELECT id FROM task_creation_snapshots WHERE json_extract(payload, '$.materializedTasksetId') = ?)",[e]),await this.run("DELETE FROM task_creation_transcripts WHERE creation_id IN (SELECT id FROM task_creation_snapshots WHERE json_extract(payload, '$.materializedTasksetId') = ?)",[e]),await this.run("DELETE FROM task_creation_snapshots WHERE json_extract(payload, '$.materializedTasksetId') = ?",[e]),await this.run("DELETE FROM dataset_artifacts WHERE taskset_id = ?",[e]),await this.run("DELETE FROM tasksets WHERE id = ?",[e]),await this.run("DELETE FROM taskset_revisions WHERE taskset_id = ?",[e]),await this.exec("COMMIT")}catch(r){throw await this.exec("ROLLBACK").catch(()=>{}),r}});this.writeQueue=t.catch(()=>{}),await t}async listTaskCandidates(e,t){let r=t&&t!=="all"?"SELECT payload FROM task_candidates WHERE profile_id = ? AND status = ? ORDER BY updated_at DESC":"SELECT payload FROM task_candidates WHERE profile_id = ? ORDER BY updated_at DESC";return this.listParsedPayloads(r,t&&t!=="all"?[e,t]:[e],qt.parse)}async getTaskCandidate(e){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE id = ?",[e],qt.parse)}async findTaskCandidateByFingerprint(e,t){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE profile_id = ? AND fingerprint = ?",[e,t],qt.parse)}async upsertTaskCandidate(e){let t=qt.parse(e);return await this.upsertPayload(`INSERT INTO task_candidates (id, profile_id, status, fingerprint, payload, created_at, updated_at)
|
|
2240
2240
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
2241
|
-
ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, status = excluded.status, fingerprint = excluded.fingerprint, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.profileId,t.status,t.fingerprint,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async saveTaskAttempt(e){let t=
|
|
2242
|
-
ON CONFLICT(id) DO UPDATE SET taskset_id = excluded.taskset_id, split = excluded.split, payload = excluded.payload`,[t.id,t.tasksetId,t.split,JSON.stringify(t),t.completedAt]),t}async listTaskAttempts(e){return this.listParsedPayloads("SELECT payload FROM task_attempts WHERE taskset_id = ? ORDER BY created_at ASC",[e],
|
|
2243
|
-
ON CONFLICT(id) DO UPDATE SET attempt_id = excluded.attempt_id, payload = excluded.payload`,[t.id,t.attemptId,JSON.stringify(t),t.createdAt]),t}async deleteGradeResultsForAttempt(e){await this.run("DELETE FROM grade_results WHERE attempt_id = ?",[e])}async listGradeResultsForTaskset(e){return this.listParsedPayloads("SELECT grades.payload FROM grade_results grades JOIN task_attempts attempts ON attempts.id = grades.attempt_id WHERE attempts.taskset_id = ? ORDER BY grades.created_at ASC",[e],
|
|
2244
|
-
ON CONFLICT(taskset_id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[t.tasksetId,JSON.stringify(t),t.generatedAt]),t}async getReadinessReport(e){return this.getParsedPayload("SELECT payload FROM readiness_reports WHERE taskset_id = ?",[e],Xl)}async saveTaskMinerConfig(e,t){let r=
|
|
2245
|
-
ON CONFLICT(profile_id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[e,JSON.stringify(r),ne()]),r}async getTaskMinerConfig(e){return this.getParsedPayload("SELECT payload FROM task_miner_configs WHERE profile_id = ?",[e],
|
|
2246
|
-
ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.profileId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getTaskMinerRun(e){return this.getParsedPayload("SELECT payload FROM task_miner_runs WHERE id = ?",[e],Wt.parse)}async listTaskMinerRuns(e){return e?this.listParsedPayloads("SELECT payload FROM task_miner_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e],Wt.parse):this.listParsedPayloads("SELECT payload FROM task_miner_runs ORDER BY updated_at DESC",[],Wt.parse)}};function Fd(a){return!Ie(a)||!Ie(a.request)||!Ie(a.request.buildSpecification)?null:a.request.buildSpecification.kind==="agent_benchmark"?"agent_benchmark":null}d(Fd,"retiredTaskCreationSpecificationKind");function Ra(a){return P.parse(Ml(Bd(a)))}d(Ra,"parseStoredTaskset");function Xl(a){return
|
|
2241
|
+
ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, status = excluded.status, fingerprint = excluded.fingerprint, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.profileId,t.status,t.fingerprint,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async saveTaskAttempt(e){let t=Zr.parse(e);return await this.upsertPayload(`INSERT INTO task_attempts (id, taskset_id, split, payload, created_at) VALUES (?, ?, ?, ?, ?)
|
|
2242
|
+
ON CONFLICT(id) DO UPDATE SET taskset_id = excluded.taskset_id, split = excluded.split, payload = excluded.payload`,[t.id,t.tasksetId,t.split,JSON.stringify(t),t.completedAt]),t}async listTaskAttempts(e){return this.listParsedPayloads("SELECT payload FROM task_attempts WHERE taskset_id = ? ORDER BY created_at ASC",[e],Zr.parse)}async saveTaskAttemptArtifact(e){let t=ja.parse(e);return await this.upsertPayload("INSERT INTO task_attempt_artifacts (id, taskset_id, attempt_id, kind, payload, created_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET taskset_id = excluded.taskset_id, attempt_id = excluded.attempt_id, kind = excluded.kind, payload = excluded.payload",[t.id,t.tasksetId,t.attemptId,t.kind,JSON.stringify(t),t.createdAt]),t}async listTaskAttemptArtifacts(e){return e.attemptId?this.listParsedPayloads("SELECT payload FROM task_attempt_artifacts WHERE attempt_id = ? ORDER BY created_at",[e.attemptId],ja.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM task_attempt_artifacts WHERE taskset_id = ? ORDER BY created_at",[e.tasksetId],ja.parse):[]}async saveGradeResult(e){let t=es.parse(e);return await this.upsertPayload(`INSERT INTO grade_results (id, attempt_id, payload, created_at) VALUES (?, ?, ?, ?)
|
|
2243
|
+
ON CONFLICT(id) DO UPDATE SET attempt_id = excluded.attempt_id, payload = excluded.payload`,[t.id,t.attemptId,JSON.stringify(t),t.createdAt]),t}async deleteGradeResultsForAttempt(e){await this.run("DELETE FROM grade_results WHERE attempt_id = ?",[e])}async listGradeResultsForTaskset(e){return this.listParsedPayloads("SELECT grades.payload FROM grade_results grades JOIN task_attempts attempts ON attempts.id = grades.attempt_id WHERE attempts.taskset_id = ? ORDER BY grades.created_at ASC",[e],es.parse)}async saveGraderAuditReport(e){let t=ts.parse(e);return await this.upsertPayload("INSERT INTO grader_audit_reports (id, taskset_id, payload, created_at) VALUES (?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET taskset_id = excluded.taskset_id, payload = excluded.payload",[t.id,t.tasksetId,JSON.stringify(t),t.createdAt]),t}async listGraderAuditReports(e){return this.listParsedPayloads("SELECT payload FROM grader_audit_reports WHERE taskset_id = ? ORDER BY created_at DESC",[e],ts.parse)}async saveReadinessReport(e){let t=zr.parse(e);return await this.upsertPayload(`INSERT INTO readiness_reports (taskset_id, payload, updated_at) VALUES (?, ?, ?)
|
|
2244
|
+
ON CONFLICT(taskset_id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[t.tasksetId,JSON.stringify(t),t.generatedAt]),t}async getReadinessReport(e){return this.getParsedPayload("SELECT payload FROM readiness_reports WHERE taskset_id = ?",[e],Xl)}async saveTaskMinerConfig(e,t){let r=Qr.parse(t);return await this.upsertPayload(`INSERT INTO task_miner_configs (profile_id, payload, updated_at) VALUES (?, ?, ?)
|
|
2245
|
+
ON CONFLICT(profile_id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[e,JSON.stringify(r),ne()]),r}async getTaskMinerConfig(e){return this.getParsedPayload("SELECT payload FROM task_miner_configs WHERE profile_id = ?",[e],Qr.parse)}async saveTaskMinerRun(e){let t=Wt.parse(e);return await this.upsertPayload(`INSERT INTO task_miner_runs (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)
|
|
2246
|
+
ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.profileId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getTaskMinerRun(e){return this.getParsedPayload("SELECT payload FROM task_miner_runs WHERE id = ?",[e],Wt.parse)}async listTaskMinerRuns(e){return e?this.listParsedPayloads("SELECT payload FROM task_miner_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e],Wt.parse):this.listParsedPayloads("SELECT payload FROM task_miner_runs ORDER BY updated_at DESC",[],Wt.parse)}};function Fd(a){return!Ie(a)||!Ie(a.request)||!Ie(a.request.buildSpecification)?null:a.request.buildSpecification.kind==="agent_benchmark"?"agent_benchmark":null}d(Fd,"retiredTaskCreationSpecificationKind");function Ra(a){return P.parse(Ml(Bd(a)))}d(Ra,"parseStoredTaskset");function Xl(a){return zr.parse(Bd(a))}d(Xl,"parseStoredReadinessReport");function Bd(a){if(!Ie(a))return a;let e=Ie(a.readiness)?a.readiness:a;if(!Array.isArray(e.compatibleDestinationClasses))return a;let t=new Set(["export","custom","hosted_managed"]),r=e.compatibleDestinationClasses.filter(i=>typeof i=="string"&&t.has(i));if(r.length===e.compatibleDestinationClasses.length)return a;let s={...e,compatibleDestinationClasses:r};return e===a?s:{...a,readiness:s}}d(Bd,"normalizeStoredReadinessDestinationClasses");function Ml(a){if(!Ie(a)||!Ie(a.authoringProvenance))return a;let e=a.authoringProvenance.buildSpecification;return!Ie(e)||e.kind!=="agent_benchmark"?a:{...a,authoringProvenance:{...a.authoringProvenance,buildSpecification:null}}}d(Ml,"normalizeStoredTasksetAuthoringProvenance");function jd(a){return Ie(a)&&typeof a.id=="string"?a.id:null}d(jd,"storedPayloadId");function Ie(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}d(Ie,"isRecord");var kr=class extends Sr{static{d(this,"SqliteCreateImproveStore")}async getCreateImproveRun(e){await this.ready,await this.writeQueue;let t=await this.get("SELECT payload FROM create_improve_runs WHERE id = ?",[e]);return t?Ve.parse(JSON.parse(t.payload)):null}async listCreateImproveRuns(e={}){await this.ready,await this.writeQueue;let t=[],r=[];e.profileId&&(t.push("profile_id = ?"),r.push(e.profileId)),e.conversationId&&(t.push("conversation_id = ?"),r.push(e.conversationId)),e.targetKind&&(t.push("target_kind = ?"),r.push(e.targetKind)),e.targetId&&(t.push("target_id = ?"),r.push(e.targetId));let s=Array.isArray(e.state)?e.state:e.state?[e.state]:[];s.length>0&&(t.push(`state IN (${s.map(()=>"?").join(", ")})`),r.push(...s));let i=Math.max(1,Math.min(1e3,Math.trunc(e.limit??250)));return r.push(i),(await this.all(`SELECT payload
|
|
2247
2247
|
FROM create_improve_runs
|
|
2248
2248
|
${t.length>0?`WHERE ${t.join(" AND ")}`:""}
|
|
2249
2249
|
ORDER BY updated_at DESC
|
|
@@ -2285,7 +2285,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
|
|
|
2285
2285
|
source_session_id, created_at, updated_at
|
|
2286
2286
|
FROM sidebar_file_bookmarks
|
|
2287
2287
|
WHERE scope = ?
|
|
2288
|
-
ORDER BY CASE WHEN sort_order IS NULL THEN 1 ELSE 0 END, sort_order, updated_at DESC`,[e])).map(r=>{let s=r.workspace_kind==="sandbox"?"sandbox":"local",i=r.status==="saved_for_later"?"saved_for_later":"pinned";return{id:
|
|
2288
|
+
ORDER BY CASE WHEN sort_order IS NULL THEN 1 ELSE 0 END, sort_order, updated_at DESC`,[e])).map(r=>{let s=r.workspace_kind==="sandbox"?"sandbox":"local",i=r.status==="saved_for_later"?"saved_for_later":"pinned";return{id:Gr({workspaceKind:s,workspaceId:r.workspace_id,path:r.file_path}),workspaceKind:s,workspaceId:r.workspace_id,workspaceName:r.workspace_name,path:r.file_path,status:i,order:r.sort_order,sourceSessionId:r.source_session_id,available:!0,createdAt:r.created_at,updatedAt:r.updated_at}})}async patchSidebarFileBookmark(e,t){if(await this.ready,t.status==="none"){let n=this.writeQueue.then(()=>this.run(`DELETE FROM sidebar_file_bookmarks
|
|
2289
2289
|
WHERE scope = ? AND workspace_kind = ? AND workspace_id = ? AND file_path = ?`,[e,t.workspaceKind,t.workspaceId,t.path]));return this.writeQueue=n.then(()=>{},()=>{}),await n,null}let r=t.status,s=null,i=this.writeQueue.then(async()=>{let n=ne(),c=(await this.get(`SELECT created_at FROM sidebar_file_bookmarks
|
|
2290
2290
|
WHERE scope = ? AND workspace_kind = ? AND workspace_id = ? AND file_path = ?`,[e,t.workspaceKind,t.workspaceId,t.path]))?.created_at??n;await this.run(`INSERT INTO sidebar_file_bookmarks (
|
|
2291
2291
|
scope, workspace_kind, workspace_id, workspace_name, file_path, status,
|
|
@@ -2297,7 +2297,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
|
|
|
2297
2297
|
status = excluded.status,
|
|
2298
2298
|
sort_order = excluded.sort_order,
|
|
2299
2299
|
source_session_id = COALESCE(excluded.source_session_id, sidebar_file_bookmarks.source_session_id),
|
|
2300
|
-
updated_at = excluded.updated_at`,[e,t.workspaceKind,t.workspaceId,t.workspaceName,t.path,r,t.order??null,t.sourceSessionId??null,c,n]),s={id:
|
|
2300
|
+
updated_at = excluded.updated_at`,[e,t.workspaceKind,t.workspaceId,t.workspaceName,t.path,r,t.order??null,t.sourceSessionId??null,c,n]),s={id:Gr(t),workspaceKind:t.workspaceKind,workspaceId:t.workspaceId,workspaceName:t.workspaceName,path:t.path,status:r,order:t.order??null,sourceSessionId:t.sourceSessionId??null,available:!0,createdAt:c,updatedAt:n}});return this.writeQueue=i.catch(()=>{}),await i,s}};var Ir=class extends vr{static{d(this,"SqliteHarnessMemoryStore")}async listHarnessMemories(e,t={}){await this.ready,await this.writeQueue;let s=(await this.all(`SELECT revisions.payload
|
|
2301
2301
|
FROM harness_memory_revisions revisions
|
|
2302
2302
|
INNER JOIN (
|
|
2303
2303
|
SELECT key, MAX(revision) AS revision
|
|
@@ -2358,7 +2358,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
|
|
|
2358
2358
|
admitted_release_hash, content_hash, payload, created_at
|
|
2359
2359
|
) VALUES (?, ?, ?, ?, ?, ?, ?)`,[t.deduplicationKey,e.workspaceId,t.candidate.id,t.admittedHarness.contentHash,t.contentHash,JSON.stringify(t),t.createdAt]),r={request:t,created:!0}),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});if(this.writeQueue=s.catch(()=>{}),await s,!r)throw new Error("Cross-run refinement request was not persisted.");return r}async requireCandidateWorkspace(e){let t=await this.get("SELECT payload FROM harness_workspaces WHERE id = ?",[e]);if(!t)throw new Error(`Harness workspace ${e} does not exist.`);return le.parse(JSON.parse(t.payload))}async insertCandidateArtifact(e,t,r){let s=JSON.stringify(r),i=await this.get("SELECT payload FROM harness_improvement_artifacts WHERE content_hash = ?",[r.contentHash]);if(i){if(i.payload!==s)throw new Error("An immutable Harness improvement artifact hash already has different content.");return}if(t!=="refinement_candidate"&&await this.get("SELECT payload FROM harness_improvement_artifacts WHERE id = ? AND kind = ?",[r.id,t]))throw new Error("An immutable Harness improvement artifact id already has different content.");await this.run(`INSERT INTO harness_improvement_artifacts (
|
|
2360
2360
|
content_hash, id, workspace_id, kind, payload, created_at
|
|
2361
|
-
) VALUES (?, ?, ?, ?, ?, ?)`,[r.contentHash,r.id,e,t,s,r.createdAt])}};var Ys={run_overlay:Be,evaluation_review:ei,refinement_candidate:qe,refinement_candidate_lifecycle:va,cross_run_refinement_request:xt,training_qualification:
|
|
2361
|
+
) VALUES (?, ?, ?, ?, ?, ?)`,[r.contentHash,r.id,e,t,s,r.createdAt])}};var Ys={run_overlay:Be,evaluation_review:ei,refinement_candidate:qe,refinement_candidate_lifecycle:va,cross_run_refinement_request:xt,training_qualification:Fi,proposal:Na,targeted_validation:ri,merge_receipt:si,observation:ii,trigger_decision:ka,route_decision:ni,apply_receipt:di,refiner_outcome:oi};function $s(a){return[a.id,a.ownerScope.kind,a.ownerScope.id,a.location,a.revision,a.sourceRevision,a.currentChannel.revision,a.currentChannel.release?.contentHash??null,JSON.stringify(a),a.createdAt,a.updatedAt]}d($s,"harnessWorkspaceParams");function Ks(a){let{createdAt:e,...t}=a;return t}d(Ks,"immutableHarnessReleaseRecord");var qd=class extends Lr{static{d(this,"SqliteHarnessWorkspaceStore")}async createHarnessWorkspace(e){let t=le.parse(e);await this.ready;let r=this.writeQueue.then(()=>this.run(`INSERT INTO harness_workspaces (
|
|
2362
2362
|
id, owner_kind, owner_id, location, revision, source_revision,
|
|
2363
2363
|
channel_revision, current_release_hash, payload, created_at, updated_at
|
|
2364
2364
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,$s(t)));return this.writeQueue=r.catch(()=>{}),await r,t}async createHarnessWorkspaceWithRelease(e){let t=le.parse(e.workspace),r=De.parse(e.release);if(r.workspaceId!==t.id||t.currentChannel.release?.id!==r.harnessRelease.id||t.currentChannel.release.contentHash!==r.harnessRelease.contentHash||t.sourceRevision!==r.sourceRevision)throw new Error("Initial Harness workspace and release record are not bound to the same source and release.");await this.ready;let s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{await this.run(`INSERT INTO harness_workspaces (
|
|
@@ -2392,7 +2392,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
|
|
|
2392
2392
|
created_at, updated_at
|
|
2393
2393
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,[t.runId,t.id,s.id,t.revision,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),await this.insertHarnessImprovementArtifact(s.id,"run_overlay",t),await this.exec("COMMIT")}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});return this.writeQueue=r.catch(()=>{}),await r,t}async getHarnessRunOverlay(e){return await this.ready,await this.writeQueue,this.readHarnessRunOverlay(e)}async appendHarnessRunOverlayEditsAtomically(e){return this.transitionHarnessRunOverlayAtomically({runId:e.runId,expectedRevision:e.expectedRevision,operation:"append",edits:e.edits,updatedAt:e.updatedAt})}async freezeHarnessRunOverlayAtomically(e){return this.transitionHarnessRunOverlayAtomically({...e,operation:"freeze",edits:[]})}async abandonHarnessRunOverlayAtomically(e){return this.transitionHarnessRunOverlayAtomically({...e,operation:"abandon",edits:[]})}async restoreHarnessRunOverlayAtomically(e){return this.transitionHarnessRunOverlayAtomically({runId:e.runId,expectedRevision:e.expectedRevision,operation:"restore",edits:[],restoreRevision:e.restoreRevision,updatedAt:e.updatedAt})}async freezeHarnessRunOverlayWithProposalAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.readHarnessRunOverlay(e.runId);if(!s)throw new Error(`Harness run overlay ${e.runId} does not exist.`);if(s.revision!==e.expectedRevision)throw new Error(`Harness run overlay revision conflict: expected ${e.expectedRevision}, current ${s.revision}.`);if(s.status!=="active")throw new Error("Only an active Harness run overlay can accept a Refiner proposal.");let i=e.edits.map(T=>T.id).filter((T,f,_)=>_.indexOf(T)!==f);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(T=>T.id)),o=e.edits.find(T=>n.has(T.id));if(o)throw new Error(`Harness overlay edit id already exists: ${o.id}.`);let{contentHash:c,...p}=s,l=Cr({...p,revision:s.revision+1,status:"frozen",edits:[...s.edits,...e.edits],updatedAt:e.updatedAt}),m=Na.parse(e.buildProposal(l));if(m.overlay.id!==l.id||m.overlay.revision!==l.revision||m.overlay.contentHash!==l.contentHash)throw new Error("Refiner proposal is not bound to the atomically frozen overlay.");if(!Js(m.baseHarnessRelease,l.baseHarnessRelease)){let T=m.metadata.rebasedFromHarnessRelease,f=await this.readHarnessWorkspace(s.workspace.workspaceId);if(!f||!Fl(T)||!Js(T,l.baseHarnessRelease)||!f.currentChannel.release||!Js(f.currentChannel.release,m.baseHarnessRelease)||m.expectedWorkspace.workspaceId!==f.id||m.expectedWorkspace.revision!==f.revision||m.expectedWorkspace.sourceRevision!==f.sourceRevision||m.expectedWorkspace.channelRevision!==f.currentChannel.revision)throw new Error("Refiner proposal base release differs from both the run overlay and the atomically verified current workspace.")}if(JSON.stringify(m.edits)!==JSON.stringify(e.edits))throw new Error("Refiner proposal edits differ from the atomically applied edits.");await this.run(`UPDATE harness_run_overlays SET
|
|
2394
2394
|
revision = ?, status = ?, payload = ?, updated_at = ?
|
|
2395
|
-
WHERE run_id = ? AND revision = ?`,[l.revision,l.status,JSON.stringify(l),l.updatedAt,s.runId,s.revision]),await this.insertHarnessImprovementArtifact(s.workspace.workspaceId,"run_overlay",l),await this.insertHarnessImprovementArtifact(s.workspace.workspaceId,"proposal",m),await this.exec("COMMIT"),t={overlay:l,proposal:m}}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Atomic Harness Refiner proposal did not produce a result.");return t}async advanceHarnessWorkspaceAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.readHarnessAdvanceReceipt(e.receiptId);if(s){t={workspace:await this.requireHarnessWorkspace(e.workspaceId),receipt:s},await this.exec("COMMIT");return}let i=await this.requireHarnessWorkspace(e.workspaceId),n=await this.readHarnessReleaseRecord(e.nextRelease.contentHash);if(!n||n.harnessRelease.id!==e.nextRelease.id||n.workspaceId!==e.workspaceId)throw new Error("Candidate Harness release is not present in this workspace registry.");t=
|
|
2395
|
+
WHERE run_id = ? AND revision = ?`,[l.revision,l.status,JSON.stringify(l),l.updatedAt,s.runId,s.revision]),await this.insertHarnessImprovementArtifact(s.workspace.workspaceId,"run_overlay",l),await this.insertHarnessImprovementArtifact(s.workspace.workspaceId,"proposal",m),await this.exec("COMMIT"),t={overlay:l,proposal:m}}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Atomic Harness Refiner proposal did not produce a result.");return t}async advanceHarnessWorkspaceAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.readHarnessAdvanceReceipt(e.receiptId);if(s){t={workspace:await this.requireHarnessWorkspace(e.workspaceId),receipt:s},await this.exec("COMMIT");return}let i=await this.requireHarnessWorkspace(e.workspaceId),n=await this.readHarnessReleaseRecord(e.nextRelease.contentHash);if(!n||n.harnessRelease.id!==e.nextRelease.id||n.workspaceId!==e.workspaceId)throw new Error("Candidate Harness release is not present in this workspace registry.");t=yn({...e,workspace:i}),t.receipt.decision==="advanced"&&await this.updateHarnessWorkspace(t.workspace),await this.insertHarnessAdvanceReceipt(t.receipt),await this.exec("COMMIT")}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Harness workspace advancement did not produce a result.");return t}async rollbackHarnessWorkspaceAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.readHarnessAdvanceReceipt(e.receiptId);if(s){t={workspace:await this.requireHarnessWorkspace(e.workspaceId),receipt:s},await this.exec("COMMIT");return}let i=await this.requireHarnessWorkspace(e.workspaceId),n=await this.readHarnessReleaseRecord(e.targetRelease.contentHash);if(!n||n.harnessRelease.id!==e.targetRelease.id)throw new Error("Rollback target is not present in the local Harness registry.");t=Rn({...e,workspace:i}),t.receipt.decision==="rolled_back"&&await this.updateHarnessWorkspace(t.workspace),await this.insertHarnessAdvanceReceipt(t.receipt),await this.exec("COMMIT")}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Harness workspace rollback did not produce a result.");return t}async advanceReviewedHarnessWorkspaceAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.readHarnessAdvanceReceipt(e.receiptId);if(s){t={workspace:await this.requireHarnessWorkspace(e.workspaceId),receipt:s},await this.exec("COMMIT");return}let i=await this.requireHarnessWorkspace(e.workspaceId),n=await this.readHarnessReleaseRecord(e.nextRelease.contentHash);if(!n||n.harnessRelease.id!==e.nextRelease.id||n.workspaceId!==e.workspaceId)throw new Error("Reviewed Harness release is not present in this workspace registry.");t=wn({...e,workspace:i}),t.receipt.decision==="advanced"&&await this.updateHarnessWorkspace(t.workspace),await this.insertHarnessAdvanceReceipt(t.receipt),await this.exec("COMMIT")}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Reviewed Harness advancement did not produce a result.");return t}async listHarnessAdvanceReceipts(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT payload FROM harness_advance_receipts
|
|
2396
2396
|
WHERE workspace_id = ? ORDER BY created_at ASC, id ASC`,[e])).map(r=>Sa.parse(JSON.parse(r.payload)))}async transitionHarnessRunOverlayAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.readHarnessRunOverlay(e.runId);if(!s)throw new Error(`Harness run overlay ${e.runId} does not exist.`);if(s.revision!==e.expectedRevision)throw new Error(`Harness run overlay revision conflict: expected ${e.expectedRevision}, current ${s.revision}.`);if(s.status==="abandoned")throw new Error("An abandoned Harness run overlay cannot be changed.");if(e.operation==="append"&&s.status!=="active")throw new Error("Only an active Harness run overlay accepts edits.");if(e.operation==="freeze"&&s.status!=="active")throw new Error("Only an active Harness run overlay can be frozen.");let i=e.edits.map(f=>f.id).filter((f,_,I)=>I.indexOf(f)!==_);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(f=>f.id)),o=e.edits.find(f=>n.has(f.id));if(o)throw new Error(`Harness overlay edit id already exists: ${o.id}.`);let c=[...s.edits,...e.edits],p=s.status,l={...s.metadata};if(e.operation==="freeze"&&(p="frozen"),e.operation==="abandon"&&(p="abandoned"),e.operation==="restore"){if(e.restoreRevision===void 0)throw new Error("Harness overlay restore requires a source revision.");let f=await this.readHarnessRunOverlayRevision(s.id,e.restoreRevision);if(!f||f.runId!==s.runId||f.baseHarnessRelease.id!==s.baseHarnessRelease.id||f.baseHarnessRelease.contentHash!==s.baseHarnessRelease.contentHash)throw new Error("Harness overlay restore revision is unavailable or incompatible.");c=f.edits,p="active",l.restoredFromRevision=f.revision}let{contentHash:m,...T}=s;t=Cr({...T,revision:s.revision+1,status:p,edits:c,updatedAt:e.updatedAt,metadata:l}),await this.run(`UPDATE harness_run_overlays SET
|
|
2397
2397
|
revision = ?, status = ?, payload = ?, updated_at = ?
|
|
2398
2398
|
WHERE run_id = ? AND revision = ?`,[t.revision,t.status,JSON.stringify(t),t.updatedAt,s.runId,s.revision]),await this.insertHarnessImprovementArtifact(s.workspace.workspaceId,"run_overlay",t),await this.exec("COMMIT")}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Harness run overlay transition did not produce a result.");return t}async readHarnessRunOverlay(e){let t=await this.get("SELECT payload FROM harness_run_overlays WHERE run_id = ?",[e]);return t?Be.parse(JSON.parse(t.payload)):null}async readHarnessRunOverlayRevision(e,t){let r=await this.get(`SELECT payload FROM harness_improvement_artifacts
|