openpond 0.2.40 → 0.2.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/app-server.d.ts +5 -1
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/actions-command-JPJLAR44.js +2 -0
  4. package/dist/chunks/{app-layer-W2M7SM2L.js → app-layer-ENO5MMPX.js} +1 -1
  5. package/dist/chunks/app-server-runtime-LACOVSKH.js +2 -0
  6. package/dist/chunks/apps-VFXTNQ25.js +2 -0
  7. package/dist/chunks/{chunk-ALYT2HWV.js → chunk-2Z6H32OC.js} +1 -1
  8. package/dist/chunks/chunk-3FXZW4G7.js +3 -0
  9. package/dist/chunks/{chunk-DWY6YCBI.js → chunk-452UKUIB.js} +200 -201
  10. package/dist/chunks/{chunk-3HQEEZPO.js → chunk-65BW2QXY.js} +1 -1
  11. package/dist/chunks/{chunk-4QURHV3Q.js → chunk-6C5XPL6E.js} +1 -1
  12. package/dist/chunks/{chunk-J4S7AVGF.js → chunk-6UGTLC7Z.js} +1 -1
  13. package/dist/chunks/chunk-ALZRXBEC.js +33 -0
  14. package/dist/chunks/chunk-AO753YWB.js +5 -0
  15. package/dist/chunks/chunk-AT6XYNQ5.js +2 -0
  16. package/dist/chunks/chunk-DLQW5X6F.js +2 -0
  17. package/dist/chunks/chunk-DXAZUJPA.js +2 -0
  18. package/dist/chunks/chunk-ERFHALGF.js +4 -0
  19. package/dist/chunks/chunk-FLWIBAHG.js +2 -0
  20. package/dist/chunks/{chunk-ASRSYRE3.js → chunk-GKP2ZPKM.js} +1 -1
  21. package/dist/chunks/{chunk-H7YH35JO.js → chunk-H7JB25HO.js} +1 -1
  22. package/dist/chunks/{chunk-JIG7KQOX.js → chunk-HLNJKX3S.js} +2 -2
  23. package/dist/chunks/{chunk-YHBIGFFA.js → chunk-JLZ2TEKK.js} +1 -1
  24. package/dist/chunks/chunk-JXD5PNF7.js +9 -0
  25. package/dist/chunks/{chunk-FFTVDR3E.js → chunk-JXGLH7OR.js} +139 -139
  26. package/dist/chunks/chunk-KCENW4ME.js +2 -0
  27. package/dist/chunks/{chunk-T7Y5OYO2.js → chunk-KIGN4FI6.js} +1 -1
  28. package/dist/chunks/{chunk-GTG2ODOV.js → chunk-KRC36KV2.js} +1 -1
  29. package/dist/chunks/{chunk-XRI3HLZ3.js → chunk-KVJF3H4N.js} +2 -2
  30. package/dist/chunks/{chunk-FUFIZ37W.js → chunk-LRGLV6JX.js} +1 -1
  31. package/dist/chunks/chunk-MOMDY22U.js +2 -0
  32. package/dist/chunks/chunk-MTJNKRXL.js +22 -0
  33. package/dist/chunks/{chunk-ELUCM7CG.js → chunk-NVPKY3KE.js} +1 -1
  34. package/dist/chunks/chunk-POWZXZJ2.js +2 -0
  35. package/dist/chunks/{chunk-WWCU4ETR.js → chunk-PU2JM765.js} +1 -1
  36. package/dist/chunks/{chunk-CYZOPDTW.js → chunk-QJX7UASW.js} +1 -1
  37. package/dist/chunks/chunk-R6YJY7F2.js +3 -0
  38. package/dist/chunks/{chunk-3QXPXBVG.js → chunk-RT6YPMWF.js} +1 -1
  39. package/dist/chunks/{chunk-TU5ITNMX.js → chunk-TPOW52DO.js} +3 -3
  40. package/dist/chunks/chunk-V62BHD5G.js +2 -0
  41. package/dist/chunks/{chunk-IYWNO4RB.js → chunk-VB2S5HV4.js} +2 -2
  42. package/dist/chunks/{chunk-3UQU3KOS.js → chunk-VKGVC26K.js} +1 -1
  43. package/dist/chunks/{chunk-ZCFX6HQO.js → chunk-VQG25QBJ.js} +1 -1
  44. package/dist/chunks/{chunk-JARGGWF5.js → chunk-XMXGITQE.js} +1 -1
  45. package/dist/chunks/chunk-Z2BYC6TP.js +2 -0
  46. package/dist/chunks/{chunk-562Q5UVS.js → chunk-ZG7QX66E.js} +1 -1
  47. package/dist/chunks/cli-QW2BELOE.js +2 -0
  48. package/dist/chunks/configuration-command-VXCGFVAP.js +2 -0
  49. package/dist/chunks/core-commands-XEPFY3PQ.js +2 -0
  50. package/dist/chunks/{datasets-W24QTQL7.js → datasets-6PTDCZQ7.js} +1 -1
  51. package/dist/chunks/desktop-test-JGSH4T5Z.js +3 -0
  52. package/dist/chunks/dist-ELWB75PL.js +2 -0
  53. package/dist/chunks/experiments-WKRYHZDK.js +2 -0
  54. package/dist/chunks/{extension-3P3JNRYN.js → extension-S2UIZH46.js} +1 -1
  55. package/dist/chunks/{help-23QDOMG7.js → help-ZVAGMF3C.js} +1 -1
  56. package/dist/chunks/hosted-harness-runtime-F4UPHTTT.js +2 -0
  57. package/dist/chunks/hosted-profile-compiler-4LKIBC75.js +2 -0
  58. package/dist/chunks/hosted-profile-evaluation-control-WPRPL4YW.js +2 -0
  59. package/dist/chunks/hosted-profile-evaluation-inspection-ULRRZDS2.js +3 -0
  60. package/dist/chunks/hosted-profile-evaluation-preparation-NWR4PRHS.js +3 -0
  61. package/dist/chunks/opchat-EOQ4PPE7.js +3 -0
  62. package/dist/chunks/organizations-4IGFWOYA.js +2 -0
  63. package/dist/chunks/{profile-NJMKPS6Z.js → profile-KJS7WQ3F.js} +1 -1
  64. package/dist/chunks/project-agent-6WNHPBXA.js +2 -0
  65. package/dist/chunks/sandbox-command-NCRIL6NH.js +2 -0
  66. package/dist/chunks/{sandbox-template-RCDR2FXX.js → sandbox-template-AAOUNWTL.js} +1 -1
  67. package/dist/chunks/{src-H7VE4J62.js → src-HLLPHEW4.js} +1 -1
  68. package/dist/chunks/{src-JVSP6UKT.js → src-PERIQ7VT.js} +91 -91
  69. package/dist/chunks/{teams-bot-KCKZTM3N.js → teams-bot-LKIOF3B5.js} +1 -1
  70. package/dist/chunks/{workspaces-J5QQUR53.js → workspaces-S3NXR6VJ.js} +1 -1
  71. package/dist/cli.js +3 -3
  72. package/dist/index.js +1 -1
  73. package/package.json +1 -1
  74. package/dist/chunks/actions-command-X2ERGYMA.js +0 -2
  75. package/dist/chunks/app-server-runtime-IO3FDF37.js +0 -2
  76. package/dist/chunks/apps-IBVU56HR.js +0 -2
  77. package/dist/chunks/chunk-5OA57RW4.js +0 -2
  78. package/dist/chunks/chunk-62H5KUOS.js +0 -12
  79. package/dist/chunks/chunk-AOBTILU5.js +0 -2
  80. package/dist/chunks/chunk-DDHUSA3I.js +0 -2
  81. package/dist/chunks/chunk-QCLVO56H.js +0 -4
  82. package/dist/chunks/chunk-QK2GLRCY.js +0 -53
  83. package/dist/chunks/chunk-SHCKK3SU.js +0 -2
  84. package/dist/chunks/chunk-ZCPIVNCS.js +0 -2
  85. package/dist/chunks/cli-QXO6OHZJ.js +0 -2
  86. package/dist/chunks/configuration-command-6VJUXQNZ.js +0 -2
  87. package/dist/chunks/core-commands-J6OY62PE.js +0 -2
  88. package/dist/chunks/desktop-test-SHS2VUYP.js +0 -3
  89. package/dist/chunks/dist-4OUZANXR.js +0 -2
  90. package/dist/chunks/experiments-O7WTSICN.js +0 -2
  91. package/dist/chunks/hosted-harness-runtime-U7JV7Z5T.js +0 -2
  92. package/dist/chunks/hosted-profile-compiler-ZCVMUTFA.js +0 -3
  93. package/dist/chunks/opchat-OI2YFNNY.js +0 -3
  94. package/dist/chunks/organizations-LB5QXKWT.js +0 -2
  95. package/dist/chunks/project-agent-SZLUVG3U.js +0 -2
  96. package/dist/chunks/sandbox-command-FQBOFZGM.js +0 -2
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{d as ce}from"./chunk-H7YH35JO.js";import{S as vo}from"./chunk-4QURHV3Q.js";import{a as na,b as Z,c as Ss,f as yo}from"./chunk-YHBIGFFA.js";import{Cb as ea,I as et,Ib as gs,Jb as ir,Kb as ws,L as Ue,Lb as Rs,Lc as St,Mb as so,Rb as nr,Sb as ys,Sc as sa,Tc as or,Uc as ia,Wb as ta,Xc as ks,Y as Zn,Zc as vt,_b as je,_c as Ns,dc as Ne,ed as dr,fc as Rt,fd as cr,gc as yt,hd as Be,ic as kt,lc as tt,ld as oo,md as co,nc as Nt,nd as lo,od as It,qc as aa,rc as ra,sc as io,uc as no,vd as po,x as _s,yb as Zt,z as Qn,zb as hs}from"./chunk-JIG7KQOX.js";import{a as uo,b as mo,c as To,d as qe,e as fo,f as Eo,g as _o,i as ho,j as go,k as Ot,l as vs,m as wo,n as Ro}from"./chunk-CYZOPDTW.js";import{U as ro,a as Tn,b as Mn,e as Xn,f as Kn,g as $n,h as fs,i as Jn}from"./chunk-3QXPXBVG.js";import{$a as Un,$b as ar,A as Xe,C as Q,Ca as Vt,Da as cs,Ea as ls,Fa as De,Ha as Dn,Ia as Qe,Ja as ht,Jb as Ts,K as Qa,Ka as ps,La as zt,Lb as F,N as wn,Na as us,O as Rn,Oa as ms,Ob as de,Pa as Ze,Q as Jt,Qa as gt,Qb as _e,Rb as jn,Sb as Bn,T as yn,Ub as qn,Vb as Wn,W as kn,Xa as He,Ya as er,Z as Nn,_ as Sn,_a as Hn,_b as Yn,ac as rr,d as ss,da as An,e as is,ea as Cn,fa as Pn,g as za,ga as xn,j as ns,k as os,lb as Gt,m as M,o as te,p as ds,q as Ga,r as ze,sc as wt,t as B,tb as tr,tc as sr,u as fn,vb as Qt,vc as Fe,wc as eo,x as Kt,xc as to,y as En,yb as Fn,yc as ao}from"./chunk-ELUCM7CG.js";import{A as on,B as dn,C as cn,D as ln,E as pn,F as Me,G as un,H as mn,a as Ya,b as Ki,c as Ka,d as $i,e as Ji,f as Vi,g as zi,h as Ie,i as _t,j as Gi,k as Ja,l as ie,m as Ee,n as x,o as X,p as xe,q as Qi,r as Va,s as Yt,t as Zi,u as en,v as tn,w as an,x as rn,y as sn,z as nn}from"./chunk-ALYT2HWV.js";import{$a as Ge,B as qt,Ba as $a,C as xi,E as Ha,F as Ua,G as Mi,H as mt,Ia as rs,J as Xi,L as Di,Ma as $t,N as Hi,Na as Za,Oa as _n,P as Tt,Pa as hn,Qa as gn,R as ft,T as Fa,Ta as vn,U as Ui,Ua as In,V as es,Va as On,W as ts,Wa as Ln,Xa as bn,Y as Wt,Z as Fi,_ as ji,a as v,b as ye,ba as as,c as Qr,d as ut,da as Et,ea as Pe,fa as I,ga as C,h as Zr,ha as U,ia as fe,k as Ci,ka as ja,l as Xa,la as Bi,m as Ve,ma as G,na as Ba,oa as qi,ra as Wi,s as ke,sa as qa,t as Pi,va as Yi,xa as Wa,y as Da}from"./chunk-TU5ITNMX.js";import{$ as Ma,A as xa,B as Ii,C as Oi,D as Li,Ha as Ai,_ as Je,aa as Bt,c as Ri,i as lt,l as pt,m as yi,n as ki,o as Te,q as $e,r as Ca,s as Ni,t as Pa,u as Si,v as Vr,xa as bi,ya as Gr,z as vi}from"./chunk-QUNRWDVO.js";import{$ as No,D as zn,G as Gn,_ as Is,v as Es,y as Vn}from"./chunk-QK2GLRCY.js";import{a as oe,b as W,c as Ce,d as jt,e as z,g as wi,j as K,k as ct,l as R,m as se,n as zr}from"./chunk-HZP5U2AA.js";import{b as _}from"./chunk-ES2ISFJC.js";import{c as ko,n as So}from"./chunk-H7IWJN7L.js";import{a as c}from"./chunk-FTQLQJQV.js";var We=_.object({schemaVersion:_.literal("openpond.localHarnessReleaseRecord.v1"),workspaceId:_.string().trim().min(1).max(240),sourceRevision:_.string().trim().min(1).max(500),agentSnapshot:lt,harnessRelease:pt,bundlePath:_.string().trim().min(1).max(8192),createdAt:_.string().datetime({offset:!0})}).strict().superRefine((a,e)=>{(a.harnessRelease.agentSnapshot.id!==a.agentSnapshot.id||a.harnessRelease.agentSnapshot.contentHash!==a.agentSnapshot.contentHash)&&e.addIssue({code:"custom",message:"Harness release must bind the stored Agent snapshot",path:["harnessRelease","agentSnapshot"]})});import{randomUUID as fi}from"node:crypto";import{promises as b}from"node:fs";import L from"node:path";async function lr(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new Ee("iteration",r.id,e.expectedRevision,r.revision);let s=await x(a,"reservation",r.id);if(r.status==="cancelled")return[{kind:"iteration",id:r.id,revision:r.revision}];if(r.trainingJob||r.evaluationJob||!["ready","waiting_for_data","waiting_for_review"].includes(r.status))throw new v("learning_execution_cancellation_required",409);let i=Et.parse({...r,revision:r.revision+1,status:"cancelled",updatedAt:t}),n=Ka.parse({...s,revision:s.revision+1,budget:{...s.budget,reservedSpendUsd:0,settledSpendUsd:0,settledAt:t},updatedAt:t});await a.put("iteration",i,r.revision,{parentId:s.chainId,status:i.status}),await a.put("reservation",n,s.revision,{parentId:s.chainId,status:s.outcome});let d=await x(a,"chain",s.chainId);return d.activeIterationId===r.id&&await a.put("chain",Ya.parse({...d,revision:d.revision+1,activeIterationId:null,updatedAt:t}),d.revision,{parentId:d.modelProjectId}),[{kind:"iteration",id:i.id,revision:i.revision},{kind:"reservation",id:n.id,revision:n.revision}]}c(lr,"cancelLearningIterationReservation");async function Io(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new Ee("iteration",r.id,e.expectedRevision,r.revision);let s=await a.get("dispatch",r.dispatchId);if(e.action==="cancel_iteration"&&!s)return lr(a,{...e,action:"cancel_iteration_reservation"},t);if(!s)throw new v("learning_dispatch_not_started",409);if(s.state==="settled")throw new v("learning_execution_already_terminal",409);if(e.action==="retry_iteration_dispatch"&&s.state!=="blocked")throw new v("learning_dispatch_not_blocked",409);let i=e.action==="cancel_iteration"||!!s.cancelRequestedAt,n=Et.parse({...r,revision:r.revision+1,status:i?"cancelling":r.status,failure:null,updatedAt:t}),d=Ji.parse({...s,revision:s.revision+1,state:s.execution?"submitted":s.submission?"prepared":"preparing",cancelRequestedAt:i?s.cancelRequestedAt??t:null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,updatedAt:t});return await a.put("dispatch",d,s.revision,{parentId:r.id,status:d.state}),await a.put("iteration",n,r.revision,{parentId:s.chainId,status:n.status}),[{kind:"iteration",id:n.id,revision:n.revision},{kind:"dispatch",id:d.id,revision:d.revision}]}c(Io,"commandLearningIterationDispatch");async function Oo(a,e,t,r){let s=await X(a,"policy",e.policy),i=Zi(s.modelProjectId),n=e.trigger.kind==="schedule"?{...e.trigger,scheduledAt:new Date(e.trigger.scheduledAt).toISOString()}:e.trigger.kind==="approved_count"?{...e.trigger,checkedAt:new Date(e.trigger.checkedAt).toISOString()}:e.trigger,d=R([e.policy.id,n]),o=`iteration-${R([i,d])}`,m=R({policy:e.policy,trigger:n}),l=await a.get("reservation",o);if(l){if(l.requestHash!==m)throw new v("learning_trigger_identity_conflict",409);return[{kind:"iteration",id:o,revision:(await x(a,"iteration",o)).revision},{kind:"reservation",id:o,revision:l.revision}]}let f=await x(a,"policy",s.id);if(!C(I(f),e.policy))throw new v("learning_policy_revision_stale",409);if(!s.enabled)throw new v("learning_policy_paused",409);if(s.automation.accept||s.automation.serve)throw new v("learning_automatic_acceptance_not_available",422);if(e.trigger.kind==="schedule"){if(!["schedule","nightly"].includes(s.trigger.kind)||!s.automation.train)throw new v("learning_schedule_not_enabled",409);if(Date.parse(e.trigger.scheduledAt)>Date.parse(r))throw new v("learning_schedule_not_due",409)}if(e.trigger.kind==="approved_count"){if(s.trigger.kind!=="approved_count"||!s.automation.train)throw new v("learning_count_trigger_not_enabled",409);if(Date.parse(e.trigger.checkedAt)>Date.parse(r))throw new v("learning_count_trigger_not_due",409)}let p=await a.get("chain",i);if(p?.activeIterationId)throw new v("learning_iteration_active",409,p.activeIterationId);if(p?.lastReservedAt&&Date.parse(r)-Date.parse(p.lastReservedAt)<s.limits.cooldownSeconds*1e3)throw new v("learning_iteration_cooldown",409);let u=await tn(a,s),T=u.counts.eligible>=s.admission.minimumApprovedExamples;if(e.trigger.kind==="approved_count"&&!T)throw new v("learning_count_threshold_not_met",409);let h=T?"ready":u.counts.awaitingReview>0?"waiting_for_review":"waiting_for_data",g=[],w=await rn(a,i,!0),y=await sn(a,s,w),N=null;if(T){await Vc(a,i,r,s.limits.maxIterationSpendUsd,s.limits.maxDailySpendUsd);let S=await Va(a,{action:"seal_batch",operationId:e.operationId,batchId:`batch-${R(o)}`,taskDefinition:s.taskDefinition,purpose:u.purpose,evidence:u.selected.map(P=>I(P.evidence)),decisions:u.selected.map(P=>I(P.decision))},t,r);g.push(...S),N=I(await x(a,"batch",S[0].id));for(let P of u.selected){let j=Ki.parse({schemaVersion:"openpond.learningConsumption.v1",id:en(i,P.evidence),revision:1,chainId:i,iterationId:o,evidence:I(P.evidence),decision:I(P.decision),reservedAt:r});await a.put("consumption",j,0,{parentId:i})}}let E=Et.parse({schemaVersion:"openpond.learningIteration.v1",id:o,revision:1,policy:e.policy,status:h,triggerIdentity:d,batch:N,sourceWatermarks:{},...y,teacher:s.teacher,upstreamEvent:null,trainingJob:null,evaluationJob:null,candidateVersion:null,dispatchId:`dispatch-${R(o)}`,retryCount:0,spendUsd:0,failure:null,createdAt:r,updatedAt:r}),k=Ka.parse({schemaVersion:"openpond.learningIterationReservation.v1",id:o,revision:1,chainId:i,iterationId:o,policy:e.policy,trigger:n,requestHash:m,outcome:T?"reserved":h,counts:u.counts,budget:{maximumSpendUsd:T?s.limits.maxIterationSpendUsd:0,reservedSpendUsd:T?s.limits.maxIterationSpendUsd:0,settledSpendUsd:0,settledAt:T?null:r},createdAt:r,updatedAt:r}),A=Ya.parse({schemaVersion:"openpond.learningChain.v1",id:i,revision:(p?.revision??0)+1,modelProjectId:s.modelProjectId,activeIterationId:T?o:null,latestIterationId:o,acceptedParent:w,lastReservedAt:T?r:p?.lastReservedAt??null,updatedAt:r});return await a.put("iteration",E,0,{parentId:i,status:h}),await a.put("reservation",k,0,{parentId:i,status:k.outcome}),await a.put("chain",A,p?.revision??0,{parentId:s.modelProjectId}),[{kind:"iteration",id:o,revision:1},{kind:"reservation",id:o,revision:1},...g]}c(Oo,"reserveLearningIteration");async function Vc(a,e,t,r,s){if((await an(a,e,t)).committedSpendUsd+r>s)throw new v("learning_daily_budget_exhausted",409)}c(Vc,"assertAvailableBudget");function zc(a){return`schedule-${R(a)}`}c(zc,"learningScheduleId");async function Lo(a,e,t){fe(e);let r=await x(a,"policy",e.id);if(!C(I(r),I(e)))throw new v("learning_policy_revision_stale",409);let s=zc(e.id),i=await a.get("schedule",s);if(i&&C(i.policy,I(e)))return i;let n=e.trigger.kind==="schedule"?e.trigger.intervalSeconds:e.trigger.kind==="approved_count"?60:null,d=e.trigger.kind==="nightly"?{localTime:e.trigger.localTime,timeZone:e.trigger.timeZone}:null,o=e.enabled&&e.automation.train&&(n!==null||d!==null),m=i?await X(a,"policy",i.policy):null,l=i?.nextRunAt&&i.intervalSeconds===n&&JSON.stringify(i.calendar)===JSON.stringify(d)&&m?.trigger.kind===e.trigger.kind&&i.executionOwner===e.executionOwner,f=Vi.parse({schemaVersion:"openpond.learningSchedule.v1",id:s,revision:(i?.revision??0)+1,policy:I(e),modelProjectId:e.modelProjectId,executionOwner:e.executionOwner,state:o?"scheduled":"disabled",intervalSeconds:n,calendar:d,nextRunAt:o?l?i.nextRunAt:d?Hi(d,t):new Date(Date.parse(t)+n*1e3).toISOString():null,lastFire:i?.lastFire??null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,createdAt:i?.createdAt??t,updatedAt:t});return await a.put("schedule",f,i?.revision??0,{parentId:e.modelProjectId,status:f.state}),f}c(Lo,"synchronizeLearningSchedule");async function bo(a,e,t){ye(e.draft,131072);let r=await a.get("draft",e.draft.id);if(r&&(r.status!=="draft"||r.targetId!==e.draft.targetId||r.targetKind!==e.draft.targetKind||(r.baseRelease===null?e.draft.baseRelease!==null:e.draft.baseRelease===null||!C(r.baseRelease,e.draft.baseRelease))))throw new v("authoring_draft_identity_conflict",409);if(e.draft.baseRelease){if(e.draft.baseRelease.id!==e.draft.targetId)throw new v("authoring_draft_base_mismatch",422);await X(a,e.draft.targetKind,e.draft.baseRelease)}if(e.draft.targetKind==="reward")for(let i of e.draft.fields.fixtures??[]){if(!i.sourceLabel)continue;let{evidence:n,feedback:d}=i.sourceLabel;await X(a,"evidence",n);let o=await x(a,"feedback",d.id,d.revision);if(!o.evidence||!C(o.evidence,n))throw new v("reward_fixture_label_mismatch",422)}let s=$a.parse(U({...e.draft,schemaVersion:"openpond.authoringDraft.v1",revision:e.expectedRevision+1,status:"draft",publishedRelease:null,createdAt:r?.createdAt??t,updatedAt:t}));return await a.put("draft",s,e.expectedRevision,{parentId:s.targetKind,status:s.status}),{kind:"draft",id:s.id,revision:s.revision}}c(bo,"saveAuthoringDraft");async function Ao(a,e,t){let r=await Lt(a,e),{contentHash:s,...i}=r,n=$a.parse(U({...i,revision:r.revision+1,status:"archived",updatedAt:t}));return await a.put("draft",n,r.revision,{parentId:r.targetKind,status:n.status}),{kind:"draft",id:n.id,revision:n.revision}}c(Ao,"archiveAuthoringDraft");async function Os(a,e,t,r){let s=e.finalizeDraft;if(!s)return null;let i=await Lt(a,s.draft);if(i.targetKind!==s.targetKind||i.targetId!==s.release.id||s.release.revision!==(i.baseRelease?.revision??0)+1||!t.some(m=>m.kind===s.targetKind&&m.id===s.release.id&&m.revision===s.release.revision))throw new v("authoring_draft_publication_mismatch",422);await X(a,s.targetKind,s.release);let{contentHash:n,...d}=i,o=$a.parse(U({...d,revision:i.revision+1,status:"published",publishedRelease:s.release,updatedAt:r}));return await a.put("draft",o,i.revision,{parentId:i.targetKind,status:o.status}),{kind:"draft",id:o.id,revision:o.revision}}c(Os,"finalizeAuthoringDraft");async function Lt(a,e){let t=await X(a,"draft",e),r=await a.get("draft",e.id);if(!r||!C(I(r),e))throw new v("authoring_draft_revision_stale",409);if(t.status!=="draft")throw new v("authoring_draft_closed",409);return t}c(Lt,"currentDraft");function Ls(a,e,t){let r=_t(a,e),s=r.reward.implementation;if(s.kind!=="model_judge"||!s.model)throw new v("reward_calibration_model_required",422);if(!C(t.draft,I(a))||!C(t.reward,I(r.reward))||t.snapshotHash!==r.snapshotHash||R(t.fixtureRefs)!==R(r.fixtureRefs))throw new v("reward_calibration_snapshot_mismatch",422);if(t.status!=="completed"||!t.runtime||t.matchesExpectations!==!0||t.failure||t.results.length!==r.fixtures.length)throw new v("reward_calibration_check_incomplete",422);if(!r.fixtures.some(d=>d.expected.status==="scored"&&d.expected.passed===!0)||!r.fixtures.some(d=>d.expected.status==="scored"&&d.expected.passed===!1))throw new v("reward_calibration_coverage_required",422,"Check both a passing and a failing example before publishing a calibrated judge.");for(let d of r.fixtures){let o=t.results.filter(p=>p.fixture.id===d.id),m=o[0];if(o.length!==1||!m||m.fixture.contentHash!==R(d)||!C(m.result.reward,t.reward)||!Ja(d,m.result).matchesExpectation)throw new v("reward_calibration_fixture_mismatch",422);if(d.expected.status!=="scored")continue;let l=m.result.graderEvidence?.modelJudgeReceipt,f=t.judgeCalls?.find(p=>p.id===`fixture-${R([d,r.reward.contentHash])}`);if(!l||l.providerId!==s.model.providerId||l.modelId!==s.model.modelId||s.model.revision!==null&&l.modelRevision!==s.model.revision||f?.status!=="settled"||!f.response||f.requestHash!==l.requestHash||R(f.response)!==l.responseHash)throw new v("reward_calibration_provider_receipt_mismatch",422)}let{contentHash:i,...n}=r.reward;return{...r,reward:Ha({...n,implementation:{...s,calibrationStatus:"passed"},calibrationCheckRef:{id:t.id,revision:t.revision,contentHash:R(t)}})}}c(Ls,"qualifyRewardCheck");async function Co(a,e){if(e.implementation.kind!=="model_judge"||e.implementation.calibrationStatus!=="passed"){if(e.calibrationCheckRef)throw new v("reward_calibration_reference_invalid",422);return}let t=e.calibrationCheckRef;if(!t)throw new v("reward_calibration_check_required",422);let r=await x(a,"reward_check",t.id,t.revision);if(R(r)!==t.contentHash)throw new v("reward_calibration_check_changed",422);let s=await X(a,"draft",r.draft);if(s.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let i=s.baseRelease?await X(a,"reward",s.baseRelease):null,n=Ls(s,i,r).reward,d=c(o=>R([o.implementation,o.rawScore,o.assets,o.fixtureSetRef??null]),"scoring");if(e.id!==n.id||d(e)!==d(n))throw new v("reward_calibration_configuration_changed",422)}c(Co,"assertRewardCalibration");async function Po(a,e,t,r,s){let i=await Lt(a,e.draft);if(i.targetKind!=="reward")throw new v("reward_check_draft_kind_invalid",422);let n=i.baseRelease?await X(a,"reward",i.baseRelease):null,d=_t(i,n),o=Ie.parse({schemaVersion:"openpond.rewardCheckRun.v1",id:`reward-check-${t}`,revision:1,draft:I(i),reward:I(d.reward),snapshotHash:d.snapshotHash,fixtureRefs:d.fixtureRefs,status:"queued",runtime:null,results:[],matchesExpectations:null,timeoutMs:e.timeoutMs,maximumSpendUsd:e.maximumSpendUsd,requestedBy:s,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,failure:null,createdAt:r,updatedAt:r});return await a.put("reward_check",o,0,{parentId:i.targetId,status:o.status}),{kind:"reward_check",id:o.id,revision:o.revision}}c(Po,"queueRewardCheck");async function xo(a,e,t){let r=await x(a,"reward_check",e.checkId);if(r.revision!==e.expectedRevision)throw new Ee("reward_check",r.id,e.expectedRevision,r.revision);if(["completed","failed","cancelled"].includes(r.status))return{kind:"reward_check",id:r.id,revision:r.revision};let s=Ie.parse({...r,revision:r.revision+1,status:r.status==="queued"?"cancelled":"cancelling",updatedAt:t});return await a.put("reward_check",s,r.revision,{parentId:r.reward.id,status:s.status}),{kind:"reward_check",id:s.id,revision:s.revision}}c(xo,"cancelRewardCheck");async function Mo(a,e,t,r){let s=Tn(e);if(s.contentHash!==e.expectedPreviewHash)throw new v("task_intake_preview_changed",409);if(new Set(e.recordIds).size!==e.recordIds.length)throw new v("task_intake_duplicate_selection",422);let i=e.recordIds.map(l=>{let f=s.records.find(p=>p.id===l);if(!f)throw new v("task_intake_record_missing",422,"Choose only valid records from the current preview.");return f}),n=`intake-${s.contentHash}`,d=[];for(let l of e.files){let f=0,p=0;do{let u=Math.min(f+131072,l.text.length);u<l.text.length&&l.text.charCodeAt(u-1)>=55296&&l.text.charCodeAt(u-1)<=56319&&u--;let T=Bi({text:l.text.slice(f,u),path:`${n}/${l.path}.part-${String(p++).padStart(4,"0")}`,mediaType:"text/plain",visibility:"host_private"}),h=await a.get("asset",T.id,1);h?G(h,T.asset):await a.put("asset",T,0),d.push(T.asset),f=u}while(f<l.text.length)}let o=await a.get("source",n);if(!o){let l=Ua({schemaVersion:"openpond.rewardBinding.v1",id:`${n}-binding`,revision:1,sources:[],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[]),f=ft.parse(U({schemaVersion:"openpond.taskDefinition.v1",id:`${n}-definition`,revision:1,name:e.name,description:`Imported ${e.format} records. Labels and task admission remain separate.`,instructions:"Respond to the retained request using its supplied context.",category:"custom",familyNamespace:`intake-${e.format}`,inputSchema:{type:"object"},outputSchema:{type:"object"},rewardBinding:I(l),harness:null,contextRequirements:s.records.some(p=>p.needsContext)?["Review the imported history and configure its reusable input, tools and runtime before admitting tasks."]:[],execution:{policy:{policyVisibleFields:["input"],privilegedFields:["expectedOutput","evaluatorContext"],hiddenGraderRefs:[],connectedAppScopes:[]},environment:{protocolVersion:"openpond.environment.v1",kind:"text",entrypoint:"openpond.text.v1",stateful:!1,deterministicSeeds:!0,lifecycle:["create","reset","step","collect","destroy"],networkPolicy:"none",defaultTimeoutMs:3e4},tools:[],capabilities:[]}}));o=Fa.parse(U({schemaVersion:"openpond.learningSource.v1",id:n,revision:1,name:e.name,kind:"direct",taskDefinition:I(f),enabled:!0,allowedSplits:["train","validation","test","frozen_eval"],mapping:null,adapterVersion:`openpond.intake.${e.format}.v1`})),await a.put("binding",l,0),await a.put("definition",f,0),await a.put("source",o,0)}let m=[{kind:"source",id:o.id,revision:o.revision}];for(let l of i){let f=rs("attempt",[l.id,l.sourceHash]),p=await a.get("evidence",xe(o.id,l.id,f),1);m.push(await r(a,{action:"submit_example",operationId:e.operationId,example:Ui.parse({schemaVersion:"openpond.taskExample.v1",sourceId:o.id,idempotencyKey:rs("record",[s.contentHash,l.id]),taskDefinition:o.taskDefinition,exampleId:l.id,attemptId:f,occurredAt:l.occurredAt??p?.submission.occurredAt??t,familyKey:l.familyKey,split:l.split,input:l.input,observedOutput:l.observedOutput,expected:l.expected,evaluatorContext:{intake:{format:s.format,uploadHash:s.contentHash,sourceHash:l.sourceHash,needsContext:l.needsContext,warnings:l.warnings,timestampOrigin:l.occurredAt?"source":"import_time",metadata:l.metadata}},assets:d,provenance:{sourceRecordRef:l.sourceId,mappingHash:null}})}))}return m}c(Mo,"importTaskIntake");function vm(a,e={}){let t=e.now??(()=>new Date().toISOString());async function r(p,u){ye(u,16777216);let T=$i.parse(u);Gc(p,T);let h=T.action==="submit_example"?T.example:T.action==="submit_feedback"?T.feedback:null,g=h?R([T.action,h.sourceId,h.idempotencyKey]):Qi(p.actor.id,T.operationId),w=R(h?{action:T.action,value:h}:T);return a.transaction(p.scope,async y=>{let N=await y.operation(g);if(N){if(N.requestHash!==w)throw new v("learning_idempotency_conflict",409);return{operationId:T.operationId,resources:await Promise.all(N.resources.map(k=>x(y,k.kind,k.id,k.revision)))}}let E;switch(T.action){case"publish_checked_reward":{let k=await Lt(y,T.draft);if(k.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let A=k.baseRelease?await X(y,"reward",k.baseRelease):null,S=await x(y,"reward_check",T.checkId,T.checkRevision),P=Ls(k,A,S),{contentHash:j,...H}=P.reward,O={action:"publish_resources",operationId:T.operationId,finalizeDraft:{draft:T.draft,targetKind:"reward",release:I(P.reward)},resources:[...P.assets.map(({contentHash:Y,...D})=>({kind:"asset",expectedRevision:0,content:D})),{kind:"reward",expectedRevision:A?.revision??0,content:H}]};E=[];for(let Y of O.resources)E.push(await s(y,{...Y,action:"publish",operationId:T.operationId}));let q=await Os(y,O,E,t());q&&E.push(q);break}case"import_intake":E=await Mo(y,T,t(),i);break;case"cancel_iteration":case"retry_iteration_dispatch":E=await Io(y,T,t());break;case"cancel_iteration_reservation":E=await lr(y,T,t());break;case"reserve_iteration":E=await Oo(y,T,p.actor.id,t());break;case"queue_reward_check":E=[await Po(y,T,g,t(),p.actor.id)];break;case"cancel_reward_check":E=[await xo(y,T,t())];break;case"save_draft":E=[await bo(y,T,t())];break;case"archive_draft":E=[await Ao(y,T.draft,t())];break;case"publish":E=[await s(y,T)];break;case"publish_resources":{E=[];for(let k of T.resources)E.push(await s(y,{...k,action:"publish",operationId:T.operationId}));break}case"submit_example":E=[await i(y,T)];break;case"submit_feedback":E=[await n(y,T,p.actor)];break;case"apply_correction":E=await d(y,T,p.actor.id);break;case"resolve_feedback":E=[await o(y,T,p.actor.id)];break;case"queue_grade":E=[await m(y,T,g,p.actor.id)];break;case"cancel_grade":E=[await l(y,T)];break;case"review":E=[await f(y,T,p.actor.id)];break;case"seal_batch":E=await Va(y,T,p.actor.id,t());break}if(T.action==="publish"||T.action==="publish_resources"){let k=await Os(y,T,E,t());k&&E.push(k)}return await y.saveOperation(g,{requestHash:w,resources:E}),{operationId:T.operationId,resources:await Promise.all(E.map(k=>x(y,k.kind,k.id,k.revision)))}})}c(r,"command");async function s(p,u){if(u.content.revision!==u.expectedRevision+1)throw new v("learning_publication_revision_invalid",422);let T;switch(u.kind){case"asset":{T=ja.parse(U(u.content));let h=await p.get("asset",T.id,1);if(h?.contentHash===T.contentHash)return le("asset",h);break}case"reward":{T=Ha(u.content),await Co(p,T);let h=u.content.implementation,g=[...u.content.assets,..."verifierRef"in h?[h.verifierRef]:[],..."rubricRef"in h?[h.rubricRef]:[],..."inputContract"in h?[h.inputContract]:[]];for(let w of g){let y=await x(p,"asset",w.id,1);if(G(y,w),w.visibility==="policy")throw new v("reward_asset_visibility_invalid",422,"Reward source and rubrics must be private to the evaluator.")}break}case"binding":{u.content.recipeRef&&await X(p,"binding",u.content.recipeRef);let h=await Promise.all(u.content.sources.map(g=>X(p,"reward",g.reward)));T=Ua(u.content,h);break}case"definition":{await X(p,"binding",u.content.rewardBinding),T=ft.parse(U(u.content));break}case"source":{await X(p,"definition",u.content.taskDefinition),T=Fa.parse(U(u.content));break}case"policy":{let h=await X(p,"definition",u.content.taskDefinition);if(!C(h.rewardBinding,u.content.rewardBinding))throw new v("learning_policy_binding_mismatch",422);for(let g of u.content.sources){let w=await X(p,"source",g);if(!C(w.taskDefinition,u.content.taskDefinition))throw new v("learning_policy_source_definition_mismatch",422)}T=as.parse(U(u.content));break}}return await p.put(u.kind,T,u.expectedRevision,u.kind==="policy"?{parentId:u.content.modelProjectId}:void 0),u.kind==="policy"&&await Lo(p,as.parse(T),t()),le(u.kind,T)}c(s,"publish");async function i(p,u){let T=await x(p,"source",u.example.sourceId),h=qi(T,u.example);await X(p,"definition",h.taskDefinition);let g=xe(h.sourceId,h.exampleId,h.attemptId),w=await p.get("evidence",g,1);if(w){let{idempotencyKey:E,...k}=w.submission,{idempotencyKey:A,...S}=h;if(R(k)!==R(S))throw new v("task_evidence_identity_conflict",409);return le("evidence",w)}let y=ts.parse(U(es.parse({schemaVersion:"openpond.taskEvidence.v1",id:g,revision:1,source:I(T),submission:h,supersedes:null,correctionFeedbackId:null,receivedAt:t()})));await p.put("evidence",y,0,{parentId:T.id});let N;do{let E=await p.list("feedback",{parentId:y.id,status:"pending_example",limit:100,...N?{afterId:N}:{}});for(let k of E.items){let A=Wt.parse({...k,revision:k.revision+1,status:"pending_review",evidence:I(y)});await p.put("feedback",A,k.revision,{parentId:y.id,status:A.status})}N=E.nextCursor??void 0}while(N);return le("evidence",y)}c(i,"submit");async function n(p,u,T){let h=await x(p,"source",u.feedback.sourceId);if(!h.enabled)throw new v("learning_source_disabled",409);let g=xe(h.id,u.feedback.exampleId,u.feedback.attemptId),w=await p.get("evidence",g);if(u.feedback.value.schemaVersion==="openpond.taskRating.v1"&&(!w||w.contentHash!==u.feedback.expectedEvidenceHash||!w.submission.observedOutput))throw new v("task_rating_evidence_stale",409,"Open the current observed response before submitting a rating.");let y=Wt.parse({schemaVersion:"openpond.taskFeedbackRecord.v1",id:`feedback-${R([h.id,u.feedback.idempotencyKey])}`,submission:u.feedback,status:w?"pending_review":"pending_example",evidence:w?I(w):null,createdAt:t(),revision:1,submittedBy:{id:T.id,role:T.role,sourceId:T.sourceId??null}});return await p.put("feedback",y,0,{parentId:g,status:y.status}),le("feedback",y)}c(n,"feedback");async function d(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);let g=await Yt(p,u.evidence);if(xe(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==g.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==g.contentHash)throw new v("task_feedback_evidence_mismatch",409);let y=await X(p,"definition",g.submission.taskDefinition),N={...g.submission},{kind:E,value:k}=h.submission;if(E==="ground_truth_correction"){if(!ut(y.outputSchema,k).valid)throw new v("task_corrected_expected_schema_invalid",422);N.expected=k}else if(E==="input_correction"){if(!ut(y.inputSchema,k).valid)throw new v("task_corrected_input_schema_invalid",422);N.input=k}else if(E==="family_resolution"){if(typeof k.familyKey!="string"||!k.familyKey.trim())throw new v("task_family_resolution_invalid",422);N.familyKey=k.familyKey}else throw new v("task_feedback_requires_target_review",422);let{contentHash:A,...S}=g,P=ts.parse(U(es.parse({...S,revision:g.revision+1,submission:N,supersedes:I(g),correctionFeedbackId:h.id,receivedAt:t()}))),j=Wt.parse({...h,revision:h.revision+1,status:"applied",evidence:I(P),review:{actorId:T,decision:null,note:"Applied as a corrected evidence revision.",resolvedAt:t()}});return await p.put("evidence",P,g.revision,{parentId:N.sourceId}),await p.put("feedback",j,h.revision,{parentId:g.id,status:j.status}),[le("evidence",P),le("feedback",j)]}c(d,"correct");async function o(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(h.revision!==u.expectedRevision)throw new Ee("feedback",h.id,u.expectedRevision,h.revision);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);if(u.disposition==="applied"&&!u.decision)throw new v("task_feedback_decision_required");if(u.decision){let w=await X(p,"decision",u.decision),y=await x(p,"decision",w.id);if(!C(I(y),u.decision))throw new v("task_admission_revision_stale",409);let N=await Yt(p,w.evidence);if(xe(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==N.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==N.contentHash)throw new v("task_feedback_evidence_mismatch",409);if(u.disposition==="applied"){if(w.taskAdmissibility==="pending")throw new v("task_feedback_decision_pending");if(h.submission.kind==="target_correction"){if(w.targetApproval!=="approved"||R(w.approvedTarget)!==R(h.submission.value))throw new v("task_feedback_target_not_approved")}else if(h.submission.kind!=="outcome")throw new v("task_feedback_requires_evidence_correction")}}let g=Wt.parse({...h,revision:h.revision+1,status:u.disposition,review:{actorId:T,decision:u.decision,note:u.note,resolvedAt:t()}});return await p.put("feedback",g,h.revision,{parentId:xe(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId),status:g.status}),le("feedback",g)}c(o,"resolveFeedback");async function m(p,u,T,h){let g=await Yt(p,u.evidence),w=await X(p,"definition",g.submission.taskDefinition);if(!Ba(g,w).taskReady)throw new v("task_evidence_not_ready",422);let y=u.target==="observed"?g.submission.observedOutput:u.proposedTarget;if(y===null)throw new v("task_grade_output_required",422);if(u.target==="observed"&&u.proposedTarget!==null)throw new v("observed_grade_cannot_replace_output",422);let N=Pe.parse({schemaVersion:"openpond.taskGradeRun.v1",id:`grade-${T}`,revision:1,evidence:I(g),binding:w.rewardBinding,target:u.target,output:y,status:"queued",composition:null,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,timeoutMs:u.timeoutMs,maximumSpendUsd:u.maximumSpendUsd,requestedBy:h,failure:null,createdAt:t(),updatedAt:t()});return await p.put("grade",N,0,{parentId:g.id,status:N.status}),le("grade",N)}c(m,"queueGrade");async function l(p,u){let T=await x(p,"grade",u.gradeId);if(T.revision!==u.expectedRevision)throw new Ee("grade",T.id,u.expectedRevision,T.revision);if(["completed","failed","cancelled"].includes(T.status))return le("grade",T);let h=Pe.parse({...T,revision:T.revision+1,status:T.status==="queued"?"cancelled":"cancelling",updatedAt:t()});return await p.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),le("grade",h)}c(l,"cancelGrade");async function f(p,u,T){let h=await Yt(p,u.evidence),g=await X(p,"definition",h.submission.taskDefinition),w=Ba(h,g),y=`decision-${h.id}`,N=await p.get("decision",y),E=await Xo(p,u.observedGradeId,h,"observed"),k=await Xo(p,u.targetGradeId,h,"proposed_target"),A=E?.training.status==="scored"?E.training:E?.evaluation,S=ji.parse(U(Fi.parse({schemaVersion:"openpond.taskAdmissionDecision.v1",id:y,revision:u.expectedRevision+1,evidence:I(h),supersedes:N?I(N):null,actor:{kind:"human",id:T,policy:null},evidenceValidity:w.evidenceValidity,taskAdmissibility:u.disposition,observedQuality:A?.status==="scored"?A.passed?"passed":"failed":E?"unavailable":"unscored",targetApproval:u.targetApproval,approvedTarget:u.approvedTarget,grade:E,targetGrade:k,note:u.note,decidedAt:t()})));return u.disposition==="approved"&&Wi({decision:S,evidence:h,definition:g,purpose:u.targetApproval==="approved"?"supervised_training":"reward_training"}),await p.put("decision",S,u.expectedRevision,{parentId:h.id,status:S.taskAdmissibility}),le("decision",S)}return c(f,"review"),{command:r,async inspectTaskQueue(p,u=null){oa(p);let T=Me.parse({action:"inspect_task_queue",scope:p.scope,modelProjectId:u});if(T.action!=="inspect_task_queue")throw new v("learning_request_invalid",400);return a.transaction(p.scope,h=>cn(h,T.modelProjectId,t()))},async inspectPolicy(p,u){oa(p);let T=Tt.parse(u);return a.transaction(p.scope,h=>on(h,T,p.actor.id,t()))},async inspectEvidence(p,u){oa(p);let T=Tt.parse(u);return a.transaction(p.scope,async h=>{let g=await X(h,"evidence",T),w=await X(h,"definition",g.submission.taskDefinition);return{evidence:I(g),definition:I(w),inspection:Ba(g,w)}})},async get(p,u,T,h){return oa(p),a.transaction(p.scope,g=>x(g,u,T,h))},async list(p,u,T={}){if(oa(p),T.reviewState!==void 0&&(u!=="evidence"||!["inbox","reviewed"].includes(T.reviewState)))throw new v("learning_review_filter_invalid",400);let h=Math.max(1,Math.min(100,Math.trunc(T.limit??50)));return a.transaction(p.scope,g=>g.list(u,{...T,limit:h}))}}}c(vm,"createLearningService");async function Xo(a,e,t,r){if(e===null)return null;let s=await x(a,"grade",e);if(s.status!=="completed"||!s.composition||s.target!==r||!C(s.evidence,I(t)))throw new v("task_grade_not_applicable",422);let i=await X(a,"definition",t.submission.taskDefinition);return qa(s.composition,t,i,s.output),s.composition}c(Xo,"gradeResult");function le(a,e){return{kind:a,id:e.id,revision:e.revision}}c(le,"pointer");function oa(a){if(!a.scope.trim()||!a.actor.id.trim()||a.actor.role==="source")throw new v("learning_read_not_authorized",403)}c(oa,"authorizeRead");function Gc(a,e){if(!a.scope.trim()||!a.actor.id.trim())throw new v("learning_scope_required",400);let t=e.action==="publish"?[e]:e.action==="publish_resources"?e.resources:[];if(a.actor.role!=="reviewer"&&t.some(r=>r.kind==="policy"&&r.content.enabled&&r.content.automation.train&&r.content.trigger.kind!=="manual"))throw new v("learning_review_not_authorized",403);if(a.actor.role==="source"){let r=e.action==="submit_example"?e.example.sourceId:e.action==="submit_feedback"?e.feedback.sourceId:null;if(!r||r!==a.actor.sourceId)throw new v("learning_source_not_authorized",403)}if(["review","apply_correction","resolve_feedback","seal_batch","reserve_iteration","cancel_iteration_reservation","cancel_iteration","retry_iteration_dispatch"].includes(e.action)&&a.actor.role!=="reviewer")throw new v("learning_review_not_authorized",403)}c(Gc,"authorize");function xm(a,e,t){let r=t.now??(()=>new Date().toISOString()),s=new Map,i=c((o,m)=>JSON.stringify([o,m]),"key");async function n(o,m){let l=await a.transaction(o,async u=>{let T=await x(u,"grade",m);if(["completed","failed","cancelled"].includes(T.status))return{acquired:!1,run:T};if(T.leaseExpiresAt!==null&&Date.parse(T.leaseExpiresAt)>Date.parse(r()))return{acquired:!1,run:T};let h=Pe.parse({...T,revision:T.revision+1,status:T.status==="cancelling"?"cancelling":"running",leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(r())+T.timeoutMs+3e4).toISOString(),attemptCount:T.attemptCount+1,updatedAt:r()});return await u.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),{acquired:!0,run:h}});if(!l.acquired)return l.run;if(l.run.status==="cancelling"){let u=await e.cancel({scope:o,run:l.run});return d(o,l.run,u?{status:"cancelled",composition:null,failure:null}:{status:"cancelling",composition:null,failure:null})}let f=new AbortController;s.set(i(o,m),f);let p=setTimeout(()=>f.abort(new Error("task_grade_timeout")),l.run.timeoutMs);try{let u=await a.transaction(o,async h=>{let g=await X(h,"evidence",l.run.evidence),w=await X(h,"definition",g.submission.taskDefinition),y=await X(h,"binding",l.run.binding),N=await Promise.all(y.sources.map(E=>X(h,"reward",E.reward)));return{evidence:g,definition:w,binding:y,rewards:N}});f.signal.throwIfAborted();let T=await e.execute({scope:o,run:l.run,...u,signal:f.signal});return f.signal.throwIfAborted(),qa(T,u.evidence,u.definition,l.run.output),await d(o,l.run,{status:"completed",composition:T,failure:null})}catch(u){if(f.signal.aborted){if(!await e.cancel({scope:o,run:l.run}))return d(o,l.run,{status:"cancelling",composition:null,failure:"Execution cancellation is awaiting owner confirmation."});if(f.signal.reason instanceof Error&&f.signal.reason.message==="task_grade_cancel_requested")return d(o,l.run,{status:"cancelled",composition:null,failure:null})}return await d(o,l.run,{status:"failed",composition:null,failure:u instanceof Error?u.message:"Task grading failed."})}finally{clearTimeout(p),s.delete(i(o,m))}}c(n,"run");async function d(o,m,l){return a.transaction(o,async f=>{let p=await x(f,"grade",m.id);if(p.leaseOwner!==t.workerId||p.attemptCount!==m.attemptCount||["completed","failed","cancelled"].includes(p.status))return p;let u=l.status,T=Pe.parse({...p,...l,status:u,composition:u==="completed"?l.composition:null,revision:p.revision+1,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(r())+5e3).toISOString():null,updatedAt:r()});return await f.put("grade",T,p.revision,{parentId:p.evidence.id,status:T.status}),T})}return c(d,"finish"),{run:n,requestCancellation(o,m){s.get(i(o,m))?.abort(new Error("task_grade_cancel_requested"))},async drain(o,m=20){let l=await a.transaction(o,async p=>{let u=[];for(let T of["queued","running","cancelling"])u.push(...(await p.list("grade",{status:T,limit:Math.max(1,Math.min(100,m))})).items);return u}),f=[];for(let p of l)f.push(await n(o,p.id));return f}}}c(xm,"createTaskGradeWorker");function Do(a){let e=a.now??(()=>new Date().toISOString());return{transaction(t,r){return a.repository.transaction(a.scope,async s=>{let i=await x(s,"reward_check",a.run.id);if(i.snapshotHash!==a.run.snapshotHash)throw new Error("model_judge_budget_snapshot_changed");if(t==="dispatch"&&(i.status!=="running"||!i.leaseOwner||i.leaseOwner!==a.run.leaseOwner||i.attemptCount!==a.run.attemptCount||!i.leaseExpiresAt||Date.parse(i.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let n=i.judgeCalls??[],d=r({maximumSpendUsd:i.maximumSpendUsd,calls:n});if(R(d.calls)!==R(n)){let o=Ie.parse({...i,revision:i.revision+1,judgeCalls:d.calls,updatedAt:e()});await s.put("reward_check",o,i.revision,{parentId:i.reward.id,status:i.status})}return d.result})}}}c(Do,"createRewardCheckJudgeBudgetStore");function Ym(a){let e=a.now??(()=>new Date().toISOString()),t=c(r=>R([r.evidence,r.binding,r.target,r.output]),"identity");return{transaction(r,s){return a.repository.transaction(a.scope,async i=>{let n=await x(i,"grade",a.run.id);if(t(n)!==t(a.run))throw new Error("model_judge_budget_snapshot_changed");if(r==="dispatch"&&(n.status!=="running"||!n.leaseOwner||n.leaseOwner!==a.run.leaseOwner||n.attemptCount!==a.run.attemptCount||!n.leaseExpiresAt||Date.parse(n.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let d=n.judgeCalls??[],o=s({maximumSpendUsd:n.maximumSpendUsd,calls:d});if(R(o.calls)!==R(d)){let m=Pe.parse({...n,revision:n.revision+1,judgeCalls:o.calls,updatedAt:e()});await i.put("grade",m,n.revision,{parentId:n.evidence.id,status:n.status})}return o.result})}}}c(Ym,"createTaskGradeJudgeBudgetStore");function Ho(a){return{runtime:a.runtime,async execute(e){return Gi({reward:e.reward,fixture:e.fixture,signal:e.signal,modelJudge:e.reward.implementation.kind==="model_judge"?await a.createModelJudge?.(e):void 0,customVerifier:c(async({grader:t,task:r,evidence:s})=>{let i=e.assets.find(o=>o.id===t.verifierRef.id);if(!i)throw new Error("reward_check_source_missing");let n=G(i,t.verifierRef),d=await a.executeJavaScript({source:n,exportName:t.exportName,runtime:t.runtime,signal:e.signal,timeoutMs:Math.min(t.timeoutMs,e.run.timeoutMs),value:{task:r,attempt:s,input:r.input,output:s.output,expectedOutput:r.expectedOutput,evaluatorContext:e.fixture.evaluatorContext,infrastructureError:s.infrastructureError??null}});return{score:d.score,passed:d.passed,rewardEligible:t.rewardEligible,failureClass:null,feedback:[d.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:d.evidenceRefs}},"customVerifier")})},async cancel(e){return a.createModelJudge?a.cancelModelJudge?.(e)??!1:!0}}}c(Ho,"createIsolatedRewardFixtureExecutor");function iT(a){return Ho({runtime:a.runtime,executeJavaScript:a.executeJavaScript,async cancelModelJudge(e){let t=await a.repository.transaction(e.scope,r=>x(r,"reward_check",e.run.id));return t.judgeCalls?.some(r=>r.status==="reserved")?!1:a.provider.cancel({...e,run:t})},async createModelJudge(e){let t=Do({repository:a.repository,scope:e.scope,run:e.run});return Xi({async readRubric(r){let s=e.assets.find(i=>i.id===r.id);if(!s)throw new Error("reward_check_rubric_missing");return G(s,r)},async executeBudgeted(r,s){let i=await a.provider.prepare(r,{scope:e.scope,run:e.run});return Di({store:t,maximumCharge:c(()=>i.maximumChargeUsd,"maximumCharge"),dispatch:c((d,o)=>i.dispatch(o),"dispatch")})(`fixture-${R([e.fixture,e.reward.contentHash])}`,r,s)}})}})}c(iT,"createBudgetedRewardFixtureExecutor");function mT(a,e,t){let r=zi.parse(e.runtime),s=t.now??(()=>new Date().toISOString()),i=new Map,n=c((f,p)=>JSON.stringify([f,p]),"key"),d=c(f=>["completed","failed","cancelled"].includes(f.status),"terminal");async function o(f,p){let u=await a.transaction(f,async g=>{let w=await x(g,"reward_check",p);if(d(w)||w.leaseExpiresAt&&Date.parse(w.leaseExpiresAt)>Date.parse(s()))return{acquired:!1,run:w};let y=Ie.parse({...w,revision:w.revision+1,status:w.status==="cancelling"?"cancelling":"running",runtime:w.status==="cancelling"?w.runtime:r,leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(s())+w.timeoutMs+3e4).toISOString(),attemptCount:w.attemptCount+1,results:w.results,matchesExpectations:null,failure:null,updatedAt:s()});return await g.put("reward_check",y,w.revision,{parentId:y.reward.id,status:y.status}),{acquired:!0,run:y}});if(!u.acquired)return u.run;if(u.run.status==="cancelling"){let g=await e.cancel({scope:f,run:u.run});return l(f,u.run,g?"cancelled":"cancelling",null)}let T=new AbortController;i.set(n(f,p),T);let h=setTimeout(()=>T.abort(new Error("reward_check_timeout")),u.run.timeoutMs);try{let g=await a.transaction(f,async w=>{let y=await X(w,"draft",u.run.draft);if(y.targetKind!=="reward")throw new Error("reward_check_draft_kind_invalid");let N=y.baseRelease?await X(w,"reward",y.baseRelease):null,E=_t(y,N);if(E.snapshotHash!==u.run.snapshotHash||!C(I(E.reward),u.run.reward)||R(E.fixtureRefs)!==R(u.run.fixtureRefs))throw new Error("reward_check_snapshot_mismatch");return E});for(let w of g.fixtures){T.signal.throwIfAborted();let y=u.run.results.find(k=>k.fixture.id===w.id);if(y){if(y.fixture.contentHash!==R(w)||!C(y.result.reward,u.run.reward)||y.result.graderId!==g.reward.id||y.result.role!=="evaluation")throw new Error("reward_check_retained_fixture_mismatch");continue}let N=xi.parse(await e.execute({...g,scope:f,run:u.run,fixture:w,signal:T.signal}));if(N.graderId!==g.reward.id||!C(N.reward,u.run.reward)||N.role!=="evaluation")throw new Error("reward_check_result_identity_mismatch");let E=await a.transaction(f,async k=>{let A=await x(k,"reward_check",p);if(!m(A,u.run)||d(A))return A;let S=Ie.parse({...A,revision:A.revision+1,results:[...A.results,Ja(w,N)],updatedAt:s()});return await k.put("reward_check",S,A.revision,{parentId:A.reward.id,status:A.status}),S});if(!m(E,u.run)||d(E))return E;E.status==="cancelling"&&T.abort(new Error("reward_check_cancel_requested"))}return T.signal.throwIfAborted(),await l(f,u.run,"completed",null)}catch(g){if(T.signal.aborted){if(!await e.cancel({scope:f,run:u.run}))return l(f,u.run,"cancelling","Execution cleanup is awaiting owner confirmation.");if(T.signal.reason instanceof Error&&T.signal.reason.message==="reward_check_cancel_requested")return l(f,u.run,"cancelled",null)}return await l(f,u.run,"failed",g instanceof Error?g.message:"Reward checks failed.")}finally{clearTimeout(h),i.delete(n(f,p))}}c(o,"run");function m(f,p){return f.leaseOwner===t.workerId&&f.attemptCount===p.attemptCount}c(m,"owns");async function l(f,p,u,T){return a.transaction(f,async h=>{let g=await x(h,"reward_check",p.id);if(!m(g,p)||d(g))return g;if(u==="completed"&&g.results.length!==g.fixtureRefs.length)throw new Error("reward_check_results_incomplete");let w=Ie.parse({...g,revision:g.revision+1,status:u,failure:T,matchesExpectations:u==="completed"?g.results.every(y=>y.matchesExpectation):null,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(s())+5e3).toISOString():null,updatedAt:s()});return await h.put("reward_check",w,g.revision,{parentId:g.reward.id,status:w.status}),w})}return c(l,"finish"),{run:o,requestCancellation(f,p){i.get(n(f,p))?.abort(new Error("reward_check_cancel_requested"))},async drain(f,p=20){let u=await a.transaction(f,async h=>{let g=[];for(let w of["queued","running","cancelling"])g.push(...(await h.list("reward_check",{status:w,limit:Math.max(1,Math.min(100,p))})).items);return g}),T=[];for(let h of u)T.push(await o(f,h.id));return T}}}c(mT,"createRewardCheckWorker");var Qc=ke.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}]}),Zc=Object.freeze({"fixtures/adaptation-board-launch.md":`# Northstar launch decision packet
2
+ import{d as ie}from"./chunk-H7JB25HO.js";import{a as Va,b as Cn,c as za,d as Pn}from"./chunk-MOMDY22U.js";import{a as ia}from"./chunk-POWZXZJ2.js";import{S as No}from"./chunk-6C5XPL6E.js";import{a as sa,b as G,c as ks,f as wo}from"./chunk-JLZ2TEKK.js";import{Cb as Qt,I as ze,Ib as _s,Jb as ar,Kb as hs,L as ft,Lb as gs,Lc as yt,Mb as ao,Rb as rr,Sb as ws,Sc as aa,Tc as sr,Uc as ra,Wb as Zt,Xc as Rs,Y as Gn,Zc as kt,_b as De,_c as ys,dc as we,ed as ir,fc as ht,fd as nr,gc as gt,hd as He,ic as wt,lc as Ge,ld as io,md as no,nc as Rt,nd as oo,od as Nt,qc as ea,rc as ta,sc as ro,uc as so,vd as co,x as Es,yb as Gt,z as zn,zb as fs}from"./chunk-HLNJKX3S.js";import{a as lo,b as po,c as uo,d as Ue,e as mo,f as To,g as Eo,i as fo,j as _o,k as St,l as Ns,m as ho,n as go}from"./chunk-QJX7UASW.js";import{U as to,a as un,b as bn,e as xn,f as Wn,g as Yn,h as ms,i as Kn}from"./chunk-RT6YPMWF.js";import{$a as Dn,$b as Za,A as Pe,C as z,Ca as $t,Da as os,Ea as ds,Fa as xe,Ha as Xn,Ia as Je,Ja as Tt,Jb as us,K as $a,Ka as cs,La as Jt,Lb as F,N as hn,Na as ls,O as gn,Oa as ps,Ob as se,Pa as Ve,Q as Kt,Qa as Et,Qb as me,Rb as Un,Sb as Fn,T as wn,Ub as jn,Vb as Bn,W as Rn,Xa as Xe,Ya as Ga,Z as yn,_ as kn,_a as Mn,_b as qn,ac as er,d as as,da as In,e as rs,ea as On,fa as Ln,g as Ya,ga as An,j as ss,k as is,lb as Vt,m as X,o as Z,p as ns,q as Ka,r as $e,sc as _t,t as B,tb as Qa,tc as tr,u as mn,vb as zt,vc as Me,wc as Qn,x as Wt,xc as Zn,y as Tn,yb as Hn,yc as eo}from"./chunk-NVPKY3KE.js";import{A as sn,B as nn,C as on,D as dn,E as cn,F as Ce,G as ln,H as pn,a as Fa,b as Wi,c as ja,d as Yi,e as Ki,f as $i,g as Ji,h as Ne,i as mt,j as Vi,k as qa,l as ae,m as ue,n as x,o as M,p as be,q as zi,r as Wa,s as qt,t as Gi,u as Qi,v as Zi,w as en,x as tn,y as an,z as rn}from"./chunk-2Z6H32OC.js";import{B as jt,Ba,C as Ci,E as Pa,F as xa,G as Pi,H as ct,Ia as ts,J as xi,L as Xi,Ma as Yt,N as Mi,Na as Ja,Oa as En,P as lt,Pa as fn,Qa as _n,R as pt,T as Xa,Ta as Nn,U as Di,Ua as Sn,V as Qr,W as Zr,Xa as vn,Y as Bt,Z as Hi,_ as Ui,a as v,b as he,ba as es,c as zr,d as dt,da as ut,ea as Ae,fa as I,ga as C,h as Gr,ha as U,ia as pe,ka as Ma,l as Ai,la as Fi,m as Ke,ma as V,na as Da,oa as ji,ra as Bi,s as ge,sa as Ha,t as bi,va as qi,xa as Ua,y as Ca}from"./chunk-TPOW52DO.js";import{$ as ba,A as Aa,B as Si,C as vi,D as Ii,Ha as Li,_ as Ye,aa as Ft,c as gi,i as nt,l as ot,m as wi,n as Ri,o as le,q as We,r as Oa,s as yi,t as La,u as ki,v as $r,xa as Oi,ya as Vr,z as Ni}from"./chunk-QUNRWDVO.js";import{e as Ss,f as yo}from"./chunk-ALZRXBEC.js";import{B as $n,H as Jn,K as Vn,y as Ts}from"./chunk-MTJNKRXL.js";import{a as Ht,b as qe,c as Kr,d as Ut,e as Le,g as hi,j as Y,k as it,l as y,m as ke,n as Jr}from"./chunk-HZP5U2AA.js";import{b as _}from"./chunk-ES2ISFJC.js";import{c as Ro,n as ko}from"./chunk-H7IWJN7L.js";import{a as c}from"./chunk-FTQLQJQV.js";var Fe=_.object({schemaVersion:_.literal("openpond.localHarnessReleaseRecord.v1"),workspaceId:_.string().trim().min(1).max(240),sourceRevision:_.string().trim().min(1).max(500),agentSnapshot:nt,harnessRelease:ot,bundlePath:_.string().trim().min(1).max(8192),createdAt:_.string().datetime({offset:!0})}).strict().superRefine((a,e)=>{(a.harnessRelease.agentSnapshot.id!==a.agentSnapshot.id||a.harnessRelease.agentSnapshot.contentHash!==a.agentSnapshot.contentHash)&&e.addIssue({code:"custom",message:"Harness release must bind the stored Agent snapshot",path:["harnessRelease","agentSnapshot"]})});import{randomUUID as mi}from"node:crypto";import{promises as A}from"node:fs";import L from"node:path";async function or(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new ue("iteration",r.id,e.expectedRevision,r.revision);let s=await x(a,"reservation",r.id);if(r.status==="cancelled")return[{kind:"iteration",id:r.id,revision:r.revision}];if(r.trainingJob||r.evaluationJob||!["ready","waiting_for_data","waiting_for_review"].includes(r.status))throw new v("learning_execution_cancellation_required",409);let i=ut.parse({...r,revision:r.revision+1,status:"cancelled",updatedAt:t}),n=ja.parse({...s,revision:s.revision+1,budget:{...s.budget,reservedSpendUsd:0,settledSpendUsd:0,settledAt:t},updatedAt:t});await a.put("iteration",i,r.revision,{parentId:s.chainId,status:i.status}),await a.put("reservation",n,s.revision,{parentId:s.chainId,status:s.outcome});let o=await x(a,"chain",s.chainId);return o.activeIterationId===r.id&&await a.put("chain",Fa.parse({...o,revision:o.revision+1,activeIterationId:null,updatedAt:t}),o.revision,{parentId:o.modelProjectId}),[{kind:"iteration",id:i.id,revision:i.revision},{kind:"reservation",id:n.id,revision:n.revision}]}c(or,"cancelLearningIterationReservation");async function So(a,e,t){let r=await x(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new ue("iteration",r.id,e.expectedRevision,r.revision);let s=await a.get("dispatch",r.dispatchId);if(e.action==="cancel_iteration"&&!s)return or(a,{...e,action:"cancel_iteration_reservation"},t);if(!s)throw new v("learning_dispatch_not_started",409);if(s.state==="settled")throw new v("learning_execution_already_terminal",409);if(e.action==="retry_iteration_dispatch"&&s.state!=="blocked")throw new v("learning_dispatch_not_blocked",409);let i=e.action==="cancel_iteration"||!!s.cancelRequestedAt,n=ut.parse({...r,revision:r.revision+1,status:i?"cancelling":r.status,failure:null,updatedAt:t}),o=Ki.parse({...s,revision:s.revision+1,state:s.execution?"submitted":s.submission?"prepared":"preparing",cancelRequestedAt:i?s.cancelRequestedAt??t:null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,updatedAt:t});return await a.put("dispatch",o,s.revision,{parentId:r.id,status:o.state}),await a.put("iteration",n,r.revision,{parentId:s.chainId,status:n.status}),[{kind:"iteration",id:n.id,revision:n.revision},{kind:"dispatch",id:o.id,revision:o.revision}]}c(So,"commandLearningIterationDispatch");async function vo(a,e,t,r){let s=await M(a,"policy",e.policy),i=Gi(s.modelProjectId),n=e.trigger.kind==="schedule"?{...e.trigger,scheduledAt:new Date(e.trigger.scheduledAt).toISOString()}:e.trigger.kind==="approved_count"?{...e.trigger,checkedAt:new Date(e.trigger.checkedAt).toISOString()}:e.trigger,o=y([e.policy.id,n]),d=`iteration-${y([i,o])}`,m=y({policy:e.policy,trigger:n}),l=await a.get("reservation",d);if(l){if(l.requestHash!==m)throw new v("learning_trigger_identity_conflict",409);return[{kind:"iteration",id:d,revision:(await x(a,"iteration",d)).revision},{kind:"reservation",id:d,revision:l.revision}]}let E=await x(a,"policy",s.id);if(!C(I(E),e.policy))throw new v("learning_policy_revision_stale",409);if(!s.enabled)throw new v("learning_policy_paused",409);if(s.automation.accept||s.automation.serve)throw new v("learning_automatic_acceptance_not_available",422);if(e.trigger.kind==="schedule"){if(!["schedule","nightly"].includes(s.trigger.kind)||!s.automation.train)throw new v("learning_schedule_not_enabled",409);if(Date.parse(e.trigger.scheduledAt)>Date.parse(r))throw new v("learning_schedule_not_due",409)}if(e.trigger.kind==="approved_count"){if(s.trigger.kind!=="approved_count"||!s.automation.train)throw new v("learning_count_trigger_not_enabled",409);if(Date.parse(e.trigger.checkedAt)>Date.parse(r))throw new v("learning_count_trigger_not_due",409)}let p=await a.get("chain",i);if(p?.activeIterationId)throw new v("learning_iteration_active",409,p.activeIterationId);if(p?.lastReservedAt&&Date.parse(r)-Date.parse(p.lastReservedAt)<s.limits.cooldownSeconds*1e3)throw new v("learning_iteration_cooldown",409);let u=await Zi(a,s),T=u.counts.eligible>=s.admission.minimumApprovedExamples;if(e.trigger.kind==="approved_count"&&!T)throw new v("learning_count_threshold_not_met",409);let h=T?"ready":u.counts.awaitingReview>0?"waiting_for_review":"waiting_for_data",g=[],w=await tn(a,i,!0),R=await an(a,s,w),N=null;if(T){await qc(a,i,r,s.limits.maxIterationSpendUsd,s.limits.maxDailySpendUsd);let S=await Wa(a,{action:"seal_batch",operationId:e.operationId,batchId:`batch-${y(d)}`,taskDefinition:s.taskDefinition,purpose:u.purpose,evidence:u.selected.map(P=>I(P.evidence)),decisions:u.selected.map(P=>I(P.decision))},t,r);g.push(...S),N=I(await x(a,"batch",S[0].id));for(let P of u.selected){let j=Wi.parse({schemaVersion:"openpond.learningConsumption.v1",id:Qi(i,P.evidence),revision:1,chainId:i,iterationId:d,evidence:I(P.evidence),decision:I(P.decision),reservedAt:r});await a.put("consumption",j,0,{parentId:i})}}let f=ut.parse({schemaVersion:"openpond.learningIteration.v1",id:d,revision:1,policy:e.policy,status:h,triggerIdentity:o,batch:N,sourceWatermarks:{},...R,teacher:s.teacher,upstreamEvent:null,trainingJob:null,evaluationJob:null,candidateVersion:null,dispatchId:`dispatch-${y(d)}`,retryCount:0,spendUsd:0,failure:null,createdAt:r,updatedAt:r}),k=ja.parse({schemaVersion:"openpond.learningIterationReservation.v1",id:d,revision:1,chainId:i,iterationId:d,policy:e.policy,trigger:n,requestHash:m,outcome:T?"reserved":h,counts:u.counts,budget:{maximumSpendUsd:T?s.limits.maxIterationSpendUsd:0,reservedSpendUsd:T?s.limits.maxIterationSpendUsd:0,settledSpendUsd:0,settledAt:T?null:r},createdAt:r,updatedAt:r}),b=Fa.parse({schemaVersion:"openpond.learningChain.v1",id:i,revision:(p?.revision??0)+1,modelProjectId:s.modelProjectId,activeIterationId:T?d:null,latestIterationId:d,acceptedParent:w,lastReservedAt:T?r:p?.lastReservedAt??null,updatedAt:r});return await a.put("iteration",f,0,{parentId:i,status:h}),await a.put("reservation",k,0,{parentId:i,status:k.outcome}),await a.put("chain",b,p?.revision??0,{parentId:s.modelProjectId}),[{kind:"iteration",id:d,revision:1},{kind:"reservation",id:d,revision:1},...g]}c(vo,"reserveLearningIteration");async function qc(a,e,t,r,s){if((await en(a,e,t)).committedSpendUsd+r>s)throw new v("learning_daily_budget_exhausted",409)}c(qc,"assertAvailableBudget");function Wc(a){return`schedule-${y(a)}`}c(Wc,"learningScheduleId");async function Io(a,e,t){pe(e);let r=await x(a,"policy",e.id);if(!C(I(r),I(e)))throw new v("learning_policy_revision_stale",409);let s=Wc(e.id),i=await a.get("schedule",s);if(i&&C(i.policy,I(e)))return i;let n=e.trigger.kind==="schedule"?e.trigger.intervalSeconds:e.trigger.kind==="approved_count"?60:null,o=e.trigger.kind==="nightly"?{localTime:e.trigger.localTime,timeZone:e.trigger.timeZone}:null,d=e.enabled&&e.automation.train&&(n!==null||o!==null),m=i?await M(a,"policy",i.policy):null,l=i?.nextRunAt&&i.intervalSeconds===n&&JSON.stringify(i.calendar)===JSON.stringify(o)&&m?.trigger.kind===e.trigger.kind&&i.executionOwner===e.executionOwner,E=$i.parse({schemaVersion:"openpond.learningSchedule.v1",id:s,revision:(i?.revision??0)+1,policy:I(e),modelProjectId:e.modelProjectId,executionOwner:e.executionOwner,state:d?"scheduled":"disabled",intervalSeconds:n,calendar:o,nextRunAt:d?l?i.nextRunAt:o?Mi(o,t):new Date(Date.parse(t)+n*1e3).toISOString():null,lastFire:i?.lastFire??null,consecutiveFailures:0,nextAttemptAt:null,lastError:null,createdAt:i?.createdAt??t,updatedAt:t});return await a.put("schedule",E,i?.revision??0,{parentId:e.modelProjectId,status:E.state}),E}c(Io,"synchronizeLearningSchedule");async function Oo(a,e,t){he(e.draft,131072);let r=await a.get("draft",e.draft.id);if(r&&(r.status!=="draft"||r.targetId!==e.draft.targetId||r.targetKind!==e.draft.targetKind||(r.baseRelease===null?e.draft.baseRelease!==null:e.draft.baseRelease===null||!C(r.baseRelease,e.draft.baseRelease))))throw new v("authoring_draft_identity_conflict",409);if(e.draft.baseRelease){if(e.draft.baseRelease.id!==e.draft.targetId)throw new v("authoring_draft_base_mismatch",422);await M(a,e.draft.targetKind,e.draft.baseRelease)}if(e.draft.targetKind==="reward")for(let i of e.draft.fields.fixtures??[]){if(!i.sourceLabel)continue;let{evidence:n,feedback:o}=i.sourceLabel;await M(a,"evidence",n);let d=await x(a,"feedback",o.id,o.revision);if(!d.evidence||!C(d.evidence,n))throw new v("reward_fixture_label_mismatch",422)}let s=Ba.parse(U({...e.draft,schemaVersion:"openpond.authoringDraft.v1",revision:e.expectedRevision+1,status:"draft",publishedRelease:null,createdAt:r?.createdAt??t,updatedAt:t}));return await a.put("draft",s,e.expectedRevision,{parentId:s.targetKind,status:s.status}),{kind:"draft",id:s.id,revision:s.revision}}c(Oo,"saveAuthoringDraft");async function Lo(a,e,t){let r=await vt(a,e),{contentHash:s,...i}=r,n=Ba.parse(U({...i,revision:r.revision+1,status:"archived",updatedAt:t}));return await a.put("draft",n,r.revision,{parentId:r.targetKind,status:n.status}),{kind:"draft",id:n.id,revision:n.revision}}c(Lo,"archiveAuthoringDraft");async function vs(a,e,t,r){let s=e.finalizeDraft;if(!s)return null;let i=await vt(a,s.draft);if(i.targetKind!==s.targetKind||i.targetId!==s.release.id||s.release.revision!==(i.baseRelease?.revision??0)+1||!t.some(m=>m.kind===s.targetKind&&m.id===s.release.id&&m.revision===s.release.revision))throw new v("authoring_draft_publication_mismatch",422);await M(a,s.targetKind,s.release);let{contentHash:n,...o}=i,d=Ba.parse(U({...o,revision:i.revision+1,status:"published",publishedRelease:s.release,updatedAt:r}));return await a.put("draft",d,i.revision,{parentId:i.targetKind,status:d.status}),{kind:"draft",id:d.id,revision:d.revision}}c(vs,"finalizeAuthoringDraft");async function vt(a,e){let t=await M(a,"draft",e),r=await a.get("draft",e.id);if(!r||!C(I(r),e))throw new v("authoring_draft_revision_stale",409);if(t.status!=="draft")throw new v("authoring_draft_closed",409);return t}c(vt,"currentDraft");function Is(a,e,t){let r=mt(a,e),s=r.reward.implementation;if(s.kind!=="model_judge"||!s.model)throw new v("reward_calibration_model_required",422);if(!C(t.draft,I(a))||!C(t.reward,I(r.reward))||t.snapshotHash!==r.snapshotHash||y(t.fixtureRefs)!==y(r.fixtureRefs))throw new v("reward_calibration_snapshot_mismatch",422);if(t.status!=="completed"||!t.runtime||t.matchesExpectations!==!0||t.failure||t.results.length!==r.fixtures.length)throw new v("reward_calibration_check_incomplete",422);if(!r.fixtures.some(o=>o.expected.status==="scored"&&o.expected.passed===!0)||!r.fixtures.some(o=>o.expected.status==="scored"&&o.expected.passed===!1))throw new v("reward_calibration_coverage_required",422,"Check both a passing and a failing example before publishing a calibrated judge.");for(let o of r.fixtures){let d=t.results.filter(p=>p.fixture.id===o.id),m=d[0];if(d.length!==1||!m||m.fixture.contentHash!==y(o)||!C(m.result.reward,t.reward)||!qa(o,m.result).matchesExpectation)throw new v("reward_calibration_fixture_mismatch",422);if(o.expected.status!=="scored")continue;let l=m.result.graderEvidence?.modelJudgeReceipt,E=t.judgeCalls?.find(p=>p.id===`fixture-${y([o,r.reward.contentHash])}`);if(!l||l.providerId!==s.model.providerId||l.modelId!==s.model.modelId||s.model.revision!==null&&l.modelRevision!==s.model.revision||E?.status!=="settled"||!E.response||E.requestHash!==l.requestHash||y(E.response)!==l.responseHash)throw new v("reward_calibration_provider_receipt_mismatch",422)}let{contentHash:i,...n}=r.reward;return{...r,reward:Pa({...n,implementation:{...s,calibrationStatus:"passed"},calibrationCheckRef:{id:t.id,revision:t.revision,contentHash:y(t)}})}}c(Is,"qualifyRewardCheck");async function Ao(a,e){if(e.implementation.kind!=="model_judge"||e.implementation.calibrationStatus!=="passed"){if(e.calibrationCheckRef)throw new v("reward_calibration_reference_invalid",422);return}let t=e.calibrationCheckRef;if(!t)throw new v("reward_calibration_check_required",422);let r=await x(a,"reward_check",t.id,t.revision);if(y(r)!==t.contentHash)throw new v("reward_calibration_check_changed",422);let s=await M(a,"draft",r.draft);if(s.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let i=s.baseRelease?await M(a,"reward",s.baseRelease):null,n=Is(s,i,r).reward,o=c(d=>y([d.implementation,d.rawScore,d.assets,d.fixtureSetRef??null]),"scoring");if(e.id!==n.id||o(e)!==o(n))throw new v("reward_calibration_configuration_changed",422)}c(Ao,"assertRewardCalibration");async function bo(a,e,t,r,s){let i=await vt(a,e.draft);if(i.targetKind!=="reward")throw new v("reward_check_draft_kind_invalid",422);let n=i.baseRelease?await M(a,"reward",i.baseRelease):null,o=mt(i,n),d=Ne.parse({schemaVersion:"openpond.rewardCheckRun.v1",id:`reward-check-${t}`,revision:1,draft:I(i),reward:I(o.reward),snapshotHash:o.snapshotHash,fixtureRefs:o.fixtureRefs,status:"queued",runtime:null,results:[],matchesExpectations:null,timeoutMs:e.timeoutMs,maximumSpendUsd:e.maximumSpendUsd,requestedBy:s,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,failure:null,createdAt:r,updatedAt:r});return await a.put("reward_check",d,0,{parentId:i.targetId,status:d.status}),{kind:"reward_check",id:d.id,revision:d.revision}}c(bo,"queueRewardCheck");async function Co(a,e,t){let r=await x(a,"reward_check",e.checkId);if(r.revision!==e.expectedRevision)throw new ue("reward_check",r.id,e.expectedRevision,r.revision);if(["completed","failed","cancelled"].includes(r.status))return{kind:"reward_check",id:r.id,revision:r.revision};let s=Ne.parse({...r,revision:r.revision+1,status:r.status==="queued"?"cancelled":"cancelling",updatedAt:t});return await a.put("reward_check",s,r.revision,{parentId:r.reward.id,status:s.status}),{kind:"reward_check",id:s.id,revision:s.revision}}c(Co,"cancelRewardCheck");async function Po(a,e,t,r){let s=un(e);if(s.contentHash!==e.expectedPreviewHash)throw new v("task_intake_preview_changed",409);if(new Set(e.recordIds).size!==e.recordIds.length)throw new v("task_intake_duplicate_selection",422);let i=e.recordIds.map(l=>{let E=s.records.find(p=>p.id===l);if(!E)throw new v("task_intake_record_missing",422,"Choose only valid records from the current preview.");return E}),n=`intake-${s.contentHash}`,o=[];for(let l of e.files){let E=0,p=0;do{let u=Math.min(E+131072,l.text.length);u<l.text.length&&l.text.charCodeAt(u-1)>=55296&&l.text.charCodeAt(u-1)<=56319&&u--;let T=Fi({text:l.text.slice(E,u),path:`${n}/${l.path}.part-${String(p++).padStart(4,"0")}`,mediaType:"text/plain",visibility:"host_private"}),h=await a.get("asset",T.id,1);h?V(h,T.asset):await a.put("asset",T,0),o.push(T.asset),E=u}while(E<l.text.length)}let d=await a.get("source",n);if(!d){let l=xa({schemaVersion:"openpond.rewardBinding.v1",id:`${n}-binding`,revision:1,sources:[],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[]),E=pt.parse(U({schemaVersion:"openpond.taskDefinition.v1",id:`${n}-definition`,revision:1,name:e.name,description:`Imported ${e.format} records. Labels and task admission remain separate.`,instructions:"Respond to the retained request using its supplied context.",category:"custom",familyNamespace:`intake-${e.format}`,inputSchema:{type:"object"},outputSchema:{type:"object"},rewardBinding:I(l),harness:null,contextRequirements:s.records.some(p=>p.needsContext)?["Review the imported history and configure its reusable input, tools and runtime before admitting tasks."]:[],execution:{policy:{policyVisibleFields:["input"],privilegedFields:["expectedOutput","evaluatorContext"],hiddenGraderRefs:[],connectedAppScopes:[]},environment:{protocolVersion:"openpond.environment.v1",kind:"text",entrypoint:"openpond.text.v1",stateful:!1,deterministicSeeds:!0,lifecycle:["create","reset","step","collect","destroy"],networkPolicy:"none",defaultTimeoutMs:3e4},tools:[],capabilities:[]}}));d=Xa.parse(U({schemaVersion:"openpond.learningSource.v1",id:n,revision:1,name:e.name,kind:"direct",taskDefinition:I(E),enabled:!0,allowedSplits:["train","validation","test","frozen_eval"],mapping:null,adapterVersion:`openpond.intake.${e.format}.v1`})),await a.put("binding",l,0),await a.put("definition",E,0),await a.put("source",d,0)}let m=[{kind:"source",id:d.id,revision:d.revision}];for(let l of i){let E=ts("attempt",[l.id,l.sourceHash]),p=await a.get("evidence",be(d.id,l.id,E),1);m.push(await r(a,{action:"submit_example",operationId:e.operationId,example:Di.parse({schemaVersion:"openpond.taskExample.v1",sourceId:d.id,idempotencyKey:ts("record",[s.contentHash,l.id]),taskDefinition:d.taskDefinition,exampleId:l.id,attemptId:E,occurredAt:l.occurredAt??p?.submission.occurredAt??t,familyKey:l.familyKey,split:l.split,input:l.input,observedOutput:l.observedOutput,expected:l.expected,evaluatorContext:{intake:{format:s.format,uploadHash:s.contentHash,sourceHash:l.sourceHash,needsContext:l.needsContext,warnings:l.warnings,timestampOrigin:l.occurredAt?"source":"import_time",metadata:l.metadata}},assets:o,provenance:{sourceRecordRef:l.sourceId,mappingHash:null}})}))}return m}c(Po,"importTaskIntake");function wm(a,e={}){let t=e.now??(()=>new Date().toISOString());async function r(p,u){he(u,16777216);let T=Yi.parse(u);Yc(p,T);let h=T.action==="submit_example"?T.example:T.action==="submit_feedback"?T.feedback:null,g=h?y([T.action,h.sourceId,h.idempotencyKey]):zi(p.actor.id,T.operationId),w=y(h?{action:T.action,value:h}:T);return a.transaction(p.scope,async R=>{let N=await R.operation(g);if(N){if(N.requestHash!==w)throw new v("learning_idempotency_conflict",409);return{operationId:T.operationId,resources:await Promise.all(N.resources.map(k=>x(R,k.kind,k.id,k.revision)))}}let f;switch(T.action){case"publish_checked_reward":{let k=await vt(R,T.draft);if(k.targetKind!=="reward")throw new v("reward_calibration_draft_kind_invalid",422);let b=k.baseRelease?await M(R,"reward",k.baseRelease):null,S=await x(R,"reward_check",T.checkId,T.checkRevision),P=Is(k,b,S),{contentHash:j,...H}=P.reward,O={action:"publish_resources",operationId:T.operationId,finalizeDraft:{draft:T.draft,targetKind:"reward",release:I(P.reward)},resources:[...P.assets.map(({contentHash:W,...D})=>({kind:"asset",expectedRevision:0,content:D})),{kind:"reward",expectedRevision:b?.revision??0,content:H}]};f=[];for(let W of O.resources)f.push(await s(R,{...W,action:"publish",operationId:T.operationId}));let q=await vs(R,O,f,t());q&&f.push(q);break}case"import_intake":f=await Po(R,T,t(),i);break;case"cancel_iteration":case"retry_iteration_dispatch":f=await So(R,T,t());break;case"cancel_iteration_reservation":f=await or(R,T,t());break;case"reserve_iteration":f=await vo(R,T,p.actor.id,t());break;case"queue_reward_check":f=[await bo(R,T,g,t(),p.actor.id)];break;case"cancel_reward_check":f=[await Co(R,T,t())];break;case"save_draft":f=[await Oo(R,T,t())];break;case"archive_draft":f=[await Lo(R,T.draft,t())];break;case"publish":f=[await s(R,T)];break;case"publish_resources":{f=[];for(let k of T.resources)f.push(await s(R,{...k,action:"publish",operationId:T.operationId}));break}case"submit_example":f=[await i(R,T)];break;case"submit_feedback":f=[await n(R,T,p.actor)];break;case"apply_correction":f=await o(R,T,p.actor.id);break;case"resolve_feedback":f=[await d(R,T,p.actor.id)];break;case"queue_grade":f=[await m(R,T,g,p.actor.id)];break;case"cancel_grade":f=[await l(R,T)];break;case"review":f=[await E(R,T,p.actor.id)];break;case"seal_batch":f=await Wa(R,T,p.actor.id,t());break}if(T.action==="publish"||T.action==="publish_resources"){let k=await vs(R,T,f,t());k&&f.push(k)}return await R.saveOperation(g,{requestHash:w,resources:f}),{operationId:T.operationId,resources:await Promise.all(f.map(k=>x(R,k.kind,k.id,k.revision)))}})}c(r,"command");async function s(p,u){if(u.content.revision!==u.expectedRevision+1)throw new v("learning_publication_revision_invalid",422);let T;switch(u.kind){case"asset":{T=Ma.parse(U(u.content));let h=await p.get("asset",T.id,1);if(h?.contentHash===T.contentHash)return ne("asset",h);break}case"reward":{T=Pa(u.content),await Ao(p,T);let h=u.content.implementation,g=[...u.content.assets,..."verifierRef"in h?[h.verifierRef]:[],..."rubricRef"in h?[h.rubricRef]:[],..."inputContract"in h?[h.inputContract]:[]];for(let w of g){let R=await x(p,"asset",w.id,1);if(V(R,w),w.visibility==="policy")throw new v("reward_asset_visibility_invalid",422,"Reward source and rubrics must be private to the evaluator.")}break}case"binding":{u.content.recipeRef&&await M(p,"binding",u.content.recipeRef);let h=await Promise.all(u.content.sources.map(g=>M(p,"reward",g.reward)));T=xa(u.content,h);break}case"definition":{await M(p,"binding",u.content.rewardBinding),T=pt.parse(U(u.content));break}case"source":{await M(p,"definition",u.content.taskDefinition),T=Xa.parse(U(u.content));break}case"policy":{let h=await M(p,"definition",u.content.taskDefinition);if(!C(h.rewardBinding,u.content.rewardBinding))throw new v("learning_policy_binding_mismatch",422);for(let g of u.content.sources){let w=await M(p,"source",g);if(!C(w.taskDefinition,u.content.taskDefinition))throw new v("learning_policy_source_definition_mismatch",422)}T=es.parse(U(u.content));break}}return await p.put(u.kind,T,u.expectedRevision,u.kind==="policy"?{parentId:u.content.modelProjectId}:void 0),u.kind==="policy"&&await Io(p,es.parse(T),t()),ne(u.kind,T)}c(s,"publish");async function i(p,u){let T=await x(p,"source",u.example.sourceId),h=ji(T,u.example);await M(p,"definition",h.taskDefinition);let g=be(h.sourceId,h.exampleId,h.attemptId),w=await p.get("evidence",g,1);if(w){let{idempotencyKey:f,...k}=w.submission,{idempotencyKey:b,...S}=h;if(y(k)!==y(S))throw new v("task_evidence_identity_conflict",409);return ne("evidence",w)}let R=Zr.parse(U(Qr.parse({schemaVersion:"openpond.taskEvidence.v1",id:g,revision:1,source:I(T),submission:h,supersedes:null,correctionFeedbackId:null,receivedAt:t()})));await p.put("evidence",R,0,{parentId:T.id});let N;do{let f=await p.list("feedback",{parentId:R.id,status:"pending_example",limit:100,...N?{afterId:N}:{}});for(let k of f.items){let b=Bt.parse({...k,revision:k.revision+1,status:"pending_review",evidence:I(R)});await p.put("feedback",b,k.revision,{parentId:R.id,status:b.status})}N=f.nextCursor??void 0}while(N);return ne("evidence",R)}c(i,"submit");async function n(p,u,T){let h=await x(p,"source",u.feedback.sourceId);if(!h.enabled)throw new v("learning_source_disabled",409);let g=be(h.id,u.feedback.exampleId,u.feedback.attemptId),w=await p.get("evidence",g);if(u.feedback.value.schemaVersion==="openpond.taskRating.v1"&&(!w||w.contentHash!==u.feedback.expectedEvidenceHash||!w.submission.observedOutput))throw new v("task_rating_evidence_stale",409,"Open the current observed response before submitting a rating.");let R=Bt.parse({schemaVersion:"openpond.taskFeedbackRecord.v1",id:`feedback-${y([h.id,u.feedback.idempotencyKey])}`,submission:u.feedback,status:w?"pending_review":"pending_example",evidence:w?I(w):null,createdAt:t(),revision:1,submittedBy:{id:T.id,role:T.role,sourceId:T.sourceId??null}});return await p.put("feedback",R,0,{parentId:g,status:R.status}),ne("feedback",R)}c(n,"feedback");async function o(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);let g=await qt(p,u.evidence);if(be(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==g.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==g.contentHash)throw new v("task_feedback_evidence_mismatch",409);let R=await M(p,"definition",g.submission.taskDefinition),N={...g.submission},{kind:f,value:k}=h.submission;if(f==="ground_truth_correction"){if(!dt(R.outputSchema,k).valid)throw new v("task_corrected_expected_schema_invalid",422);N.expected=k}else if(f==="input_correction"){if(!dt(R.inputSchema,k).valid)throw new v("task_corrected_input_schema_invalid",422);N.input=k}else if(f==="family_resolution"){if(typeof k.familyKey!="string"||!k.familyKey.trim())throw new v("task_family_resolution_invalid",422);N.familyKey=k.familyKey}else throw new v("task_feedback_requires_target_review",422);let{contentHash:b,...S}=g,P=Zr.parse(U(Qr.parse({...S,revision:g.revision+1,submission:N,supersedes:I(g),correctionFeedbackId:h.id,receivedAt:t()}))),j=Bt.parse({...h,revision:h.revision+1,status:"applied",evidence:I(P),review:{actorId:T,decision:null,note:"Applied as a corrected evidence revision.",resolvedAt:t()}});return await p.put("evidence",P,g.revision,{parentId:N.sourceId}),await p.put("feedback",j,h.revision,{parentId:g.id,status:j.status}),[ne("evidence",P),ne("feedback",j)]}c(o,"correct");async function d(p,u,T){let h=await x(p,"feedback",u.feedbackId);if(h.revision!==u.expectedRevision)throw new ue("feedback",h.id,u.expectedRevision,h.revision);if(["applied","rejected","superseded"].includes(h.status))throw new v("task_feedback_already_resolved",409);if(u.disposition==="applied"&&!u.decision)throw new v("task_feedback_decision_required");if(u.decision){let w=await M(p,"decision",u.decision),R=await x(p,"decision",w.id);if(!C(I(R),u.decision))throw new v("task_admission_revision_stale",409);let N=await qt(p,w.evidence);if(be(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId)!==N.id||h.submission.expectedEvidenceHash!==null&&h.submission.expectedEvidenceHash!==N.contentHash)throw new v("task_feedback_evidence_mismatch",409);if(u.disposition==="applied"){if(w.taskAdmissibility==="pending")throw new v("task_feedback_decision_pending");if(h.submission.kind==="target_correction"){if(w.targetApproval!=="approved"||y(w.approvedTarget)!==y(h.submission.value))throw new v("task_feedback_target_not_approved")}else if(h.submission.kind!=="outcome")throw new v("task_feedback_requires_evidence_correction")}}let g=Bt.parse({...h,revision:h.revision+1,status:u.disposition,review:{actorId:T,decision:u.decision,note:u.note,resolvedAt:t()}});return await p.put("feedback",g,h.revision,{parentId:be(h.submission.sourceId,h.submission.exampleId,h.submission.attemptId),status:g.status}),ne("feedback",g)}c(d,"resolveFeedback");async function m(p,u,T,h){let g=await qt(p,u.evidence),w=await M(p,"definition",g.submission.taskDefinition);if(!Da(g,w).taskReady)throw new v("task_evidence_not_ready",422);let R=u.target==="observed"?g.submission.observedOutput:u.proposedTarget;if(R===null)throw new v("task_grade_output_required",422);if(u.target==="observed"&&u.proposedTarget!==null)throw new v("observed_grade_cannot_replace_output",422);let N=Ae.parse({schemaVersion:"openpond.taskGradeRun.v1",id:`grade-${T}`,revision:1,evidence:I(g),binding:w.rewardBinding,target:u.target,output:R,status:"queued",composition:null,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,timeoutMs:u.timeoutMs,maximumSpendUsd:u.maximumSpendUsd,requestedBy:h,failure:null,createdAt:t(),updatedAt:t()});return await p.put("grade",N,0,{parentId:g.id,status:N.status}),ne("grade",N)}c(m,"queueGrade");async function l(p,u){let T=await x(p,"grade",u.gradeId);if(T.revision!==u.expectedRevision)throw new ue("grade",T.id,u.expectedRevision,T.revision);if(["completed","failed","cancelled"].includes(T.status))return ne("grade",T);let h=Ae.parse({...T,revision:T.revision+1,status:T.status==="queued"?"cancelled":"cancelling",updatedAt:t()});return await p.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),ne("grade",h)}c(l,"cancelGrade");async function E(p,u,T){let h=await qt(p,u.evidence),g=await M(p,"definition",h.submission.taskDefinition),w=Da(h,g),R=`decision-${h.id}`,N=await p.get("decision",R),f=await xo(p,u.observedGradeId,h,"observed"),k=await xo(p,u.targetGradeId,h,"proposed_target"),b=f?.training.status==="scored"?f.training:f?.evaluation,S=Ui.parse(U(Hi.parse({schemaVersion:"openpond.taskAdmissionDecision.v1",id:R,revision:u.expectedRevision+1,evidence:I(h),supersedes:N?I(N):null,actor:{kind:"human",id:T,policy:null},evidenceValidity:w.evidenceValidity,taskAdmissibility:u.disposition,observedQuality:b?.status==="scored"?b.passed?"passed":"failed":f?"unavailable":"unscored",targetApproval:u.targetApproval,approvedTarget:u.approvedTarget,grade:f,targetGrade:k,note:u.note,decidedAt:t()})));return u.disposition==="approved"&&Bi({decision:S,evidence:h,definition:g,purpose:u.targetApproval==="approved"?"supervised_training":"reward_training"}),await p.put("decision",S,u.expectedRevision,{parentId:h.id,status:S.taskAdmissibility}),ne("decision",S)}return c(E,"review"),{command:r,async inspectTaskQueue(p,u=null){na(p);let T=Ce.parse({action:"inspect_task_queue",scope:p.scope,modelProjectId:u});if(T.action!=="inspect_task_queue")throw new v("learning_request_invalid",400);return a.transaction(p.scope,h=>on(h,T.modelProjectId,t()))},async inspectPolicy(p,u){na(p);let T=lt.parse(u);return a.transaction(p.scope,h=>sn(h,T,p.actor.id,t()))},async inspectEvidence(p,u){na(p);let T=lt.parse(u);return a.transaction(p.scope,async h=>{let g=await M(h,"evidence",T),w=await M(h,"definition",g.submission.taskDefinition);return{evidence:I(g),definition:I(w),inspection:Da(g,w)}})},async get(p,u,T,h){return na(p),a.transaction(p.scope,g=>x(g,u,T,h))},async list(p,u,T={}){if(na(p),T.reviewState!==void 0&&(u!=="evidence"||!["inbox","reviewed"].includes(T.reviewState)))throw new v("learning_review_filter_invalid",400);let h=Math.max(1,Math.min(100,Math.trunc(T.limit??50)));return a.transaction(p.scope,g=>g.list(u,{...T,limit:h}))}}}c(wm,"createLearningService");async function xo(a,e,t,r){if(e===null)return null;let s=await x(a,"grade",e);if(s.status!=="completed"||!s.composition||s.target!==r||!C(s.evidence,I(t)))throw new v("task_grade_not_applicable",422);let i=await M(a,"definition",t.submission.taskDefinition);return Ha(s.composition,t,i,s.output),s.composition}c(xo,"gradeResult");function ne(a,e){return{kind:a,id:e.id,revision:e.revision}}c(ne,"pointer");function na(a){if(!a.scope.trim()||!a.actor.id.trim()||a.actor.role==="source")throw new v("learning_read_not_authorized",403)}c(na,"authorizeRead");function Yc(a,e){if(!a.scope.trim()||!a.actor.id.trim())throw new v("learning_scope_required",400);let t=e.action==="publish"?[e]:e.action==="publish_resources"?e.resources:[];if(a.actor.role!=="reviewer"&&t.some(r=>r.kind==="policy"&&r.content.enabled&&r.content.automation.train&&r.content.trigger.kind!=="manual"))throw new v("learning_review_not_authorized",403);if(a.actor.role==="source"){let r=e.action==="submit_example"?e.example.sourceId:e.action==="submit_feedback"?e.feedback.sourceId:null;if(!r||r!==a.actor.sourceId)throw new v("learning_source_not_authorized",403)}if(["review","apply_correction","resolve_feedback","seal_batch","reserve_iteration","cancel_iteration_reservation","cancel_iteration","retry_iteration_dispatch"].includes(e.action)&&a.actor.role!=="reviewer")throw new v("learning_review_not_authorized",403)}c(Yc,"authorize");function Om(a,e,t){let r=t.now??(()=>new Date().toISOString()),s=new Map,i=c((d,m)=>JSON.stringify([d,m]),"key");async function n(d,m){let l=await a.transaction(d,async u=>{let T=await x(u,"grade",m);if(["completed","failed","cancelled"].includes(T.status))return{acquired:!1,run:T};if(T.leaseExpiresAt!==null&&Date.parse(T.leaseExpiresAt)>Date.parse(r()))return{acquired:!1,run:T};let h=Ae.parse({...T,revision:T.revision+1,status:T.status==="cancelling"?"cancelling":"running",leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(r())+T.timeoutMs+3e4).toISOString(),attemptCount:T.attemptCount+1,updatedAt:r()});return await u.put("grade",h,T.revision,{parentId:T.evidence.id,status:h.status}),{acquired:!0,run:h}});if(!l.acquired)return l.run;if(l.run.status==="cancelling"){let u=await e.cancel({scope:d,run:l.run});return o(d,l.run,u?{status:"cancelled",composition:null,failure:null}:{status:"cancelling",composition:null,failure:null})}let E=new AbortController;s.set(i(d,m),E);let p=setTimeout(()=>E.abort(new Error("task_grade_timeout")),l.run.timeoutMs);try{let u=await a.transaction(d,async h=>{let g=await M(h,"evidence",l.run.evidence),w=await M(h,"definition",g.submission.taskDefinition),R=await M(h,"binding",l.run.binding),N=await Promise.all(R.sources.map(f=>M(h,"reward",f.reward)));return{evidence:g,definition:w,binding:R,rewards:N}});E.signal.throwIfAborted();let T=await e.execute({scope:d,run:l.run,...u,signal:E.signal});return E.signal.throwIfAborted(),Ha(T,u.evidence,u.definition,l.run.output),await o(d,l.run,{status:"completed",composition:T,failure:null})}catch(u){if(E.signal.aborted){if(!await e.cancel({scope:d,run:l.run}))return o(d,l.run,{status:"cancelling",composition:null,failure:"Execution cancellation is awaiting owner confirmation."});if(E.signal.reason instanceof Error&&E.signal.reason.message==="task_grade_cancel_requested")return o(d,l.run,{status:"cancelled",composition:null,failure:null})}return await o(d,l.run,{status:"failed",composition:null,failure:u instanceof Error?u.message:"Task grading failed."})}finally{clearTimeout(p),s.delete(i(d,m))}}c(n,"run");async function o(d,m,l){return a.transaction(d,async E=>{let p=await x(E,"grade",m.id);if(p.leaseOwner!==t.workerId||p.attemptCount!==m.attemptCount||["completed","failed","cancelled"].includes(p.status))return p;let u=l.status,T=Ae.parse({...p,...l,status:u,composition:u==="completed"?l.composition:null,revision:p.revision+1,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(r())+5e3).toISOString():null,updatedAt:r()});return await E.put("grade",T,p.revision,{parentId:p.evidence.id,status:T.status}),T})}return c(o,"finish"),{run:n,requestCancellation(d,m){s.get(i(d,m))?.abort(new Error("task_grade_cancel_requested"))},async drain(d,m=20){let l=await a.transaction(d,async p=>{let u=[];for(let T of["queued","running","cancelling"])u.push(...(await p.list("grade",{status:T,limit:Math.max(1,Math.min(100,m))})).items);return u}),E=[];for(let p of l)E.push(await n(d,p.id));return E}}}c(Om,"createTaskGradeWorker");function Xo(a){let e=a.now??(()=>new Date().toISOString());return{transaction(t,r){return a.repository.transaction(a.scope,async s=>{let i=await x(s,"reward_check",a.run.id);if(i.snapshotHash!==a.run.snapshotHash)throw new Error("model_judge_budget_snapshot_changed");if(t==="dispatch"&&(i.status!=="running"||!i.leaseOwner||i.leaseOwner!==a.run.leaseOwner||i.attemptCount!==a.run.attemptCount||!i.leaseExpiresAt||Date.parse(i.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let n=i.judgeCalls??[],o=r({maximumSpendUsd:i.maximumSpendUsd,calls:n});if(y(o.calls)!==y(n)){let d=Ne.parse({...i,revision:i.revision+1,judgeCalls:o.calls,updatedAt:e()});await s.put("reward_check",d,i.revision,{parentId:i.reward.id,status:i.status})}return o.result})}}}c(Xo,"createRewardCheckJudgeBudgetStore");function Um(a){let e=a.now??(()=>new Date().toISOString()),t=c(r=>y([r.evidence,r.binding,r.target,r.output]),"identity");return{transaction(r,s){return a.repository.transaction(a.scope,async i=>{let n=await x(i,"grade",a.run.id);if(t(n)!==t(a.run))throw new Error("model_judge_budget_snapshot_changed");if(r==="dispatch"&&(n.status!=="running"||!n.leaseOwner||n.leaseOwner!==a.run.leaseOwner||n.attemptCount!==a.run.attemptCount||!n.leaseExpiresAt||Date.parse(n.leaseExpiresAt)<=Date.parse(e())))throw new Error("model_judge_budget_owner_inactive");let o=n.judgeCalls??[],d=s({maximumSpendUsd:n.maximumSpendUsd,calls:o});if(y(d.calls)!==y(o)){let m=Ae.parse({...n,revision:n.revision+1,judgeCalls:d.calls,updatedAt:e()});await i.put("grade",m,n.revision,{parentId:n.evidence.id,status:n.status})}return d.result})}}}c(Um,"createTaskGradeJudgeBudgetStore");function Mo(a){return{runtime:a.runtime,async execute(e){return Vi({reward:e.reward,fixture:e.fixture,signal:e.signal,modelJudge:e.reward.implementation.kind==="model_judge"?await a.createModelJudge?.(e):void 0,customVerifier:c(async({grader:t,task:r,evidence:s})=>{let i=e.assets.find(d=>d.id===t.verifierRef.id);if(!i)throw new Error("reward_check_source_missing");let n=V(i,t.verifierRef),o=await a.executeJavaScript({source:n,exportName:t.exportName,runtime:t.runtime,signal:e.signal,timeoutMs:Math.min(t.timeoutMs,e.run.timeoutMs),value:{task:r,attempt:s,input:r.input,output:s.output,expectedOutput:r.expectedOutput,evaluatorContext:e.fixture.evaluatorContext,infrastructureError:s.infrastructureError??null}});return{score:o.score,passed:o.passed,rewardEligible:t.rewardEligible,failureClass:null,feedback:[o.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:o.evidenceRefs}},"customVerifier")})},async cancel(e){return a.createModelJudge?a.cancelModelJudge?.(e)??!1:!0}}}c(Mo,"createIsolatedRewardFixtureExecutor");function Zm(a){return Mo({runtime:a.runtime,executeJavaScript:a.executeJavaScript,async cancelModelJudge(e){let t=await a.repository.transaction(e.scope,r=>x(r,"reward_check",e.run.id));return t.judgeCalls?.some(r=>r.status==="reserved")?!1:a.provider.cancel({...e,run:t})},async createModelJudge(e){let t=Xo({repository:a.repository,scope:e.scope,run:e.run});return xi({async readRubric(r){let s=e.assets.find(i=>i.id===r.id);if(!s)throw new Error("reward_check_rubric_missing");return V(s,r)},async executeBudgeted(r,s){let i=await a.provider.prepare(r,{scope:e.scope,run:e.run});return Xi({store:t,maximumCharge:c(()=>i.maximumChargeUsd,"maximumCharge"),dispatch:c((o,d)=>i.dispatch(d),"dispatch")})(`fixture-${y([e.fixture,e.reward.contentHash])}`,r,s)}})}})}c(Zm,"createBudgetedRewardFixtureExecutor");function oT(a,e,t){let r=Ji.parse(e.runtime),s=t.now??(()=>new Date().toISOString()),i=new Map,n=c((E,p)=>JSON.stringify([E,p]),"key"),o=c(E=>["completed","failed","cancelled"].includes(E.status),"terminal");async function d(E,p){let u=await a.transaction(E,async g=>{let w=await x(g,"reward_check",p);if(o(w)||w.leaseExpiresAt&&Date.parse(w.leaseExpiresAt)>Date.parse(s()))return{acquired:!1,run:w};let R=Ne.parse({...w,revision:w.revision+1,status:w.status==="cancelling"?"cancelling":"running",runtime:w.status==="cancelling"?w.runtime:r,leaseOwner:t.workerId,leaseExpiresAt:new Date(Date.parse(s())+w.timeoutMs+3e4).toISOString(),attemptCount:w.attemptCount+1,results:w.results,matchesExpectations:null,failure:null,updatedAt:s()});return await g.put("reward_check",R,w.revision,{parentId:R.reward.id,status:R.status}),{acquired:!0,run:R}});if(!u.acquired)return u.run;if(u.run.status==="cancelling"){let g=await e.cancel({scope:E,run:u.run});return l(E,u.run,g?"cancelled":"cancelling",null)}let T=new AbortController;i.set(n(E,p),T);let h=setTimeout(()=>T.abort(new Error("reward_check_timeout")),u.run.timeoutMs);try{let g=await a.transaction(E,async w=>{let R=await M(w,"draft",u.run.draft);if(R.targetKind!=="reward")throw new Error("reward_check_draft_kind_invalid");let N=R.baseRelease?await M(w,"reward",R.baseRelease):null,f=mt(R,N);if(f.snapshotHash!==u.run.snapshotHash||!C(I(f.reward),u.run.reward)||y(f.fixtureRefs)!==y(u.run.fixtureRefs))throw new Error("reward_check_snapshot_mismatch");return f});for(let w of g.fixtures){T.signal.throwIfAborted();let R=u.run.results.find(k=>k.fixture.id===w.id);if(R){if(R.fixture.contentHash!==y(w)||!C(R.result.reward,u.run.reward)||R.result.graderId!==g.reward.id||R.result.role!=="evaluation")throw new Error("reward_check_retained_fixture_mismatch");continue}let N=Ci.parse(await e.execute({...g,scope:E,run:u.run,fixture:w,signal:T.signal}));if(N.graderId!==g.reward.id||!C(N.reward,u.run.reward)||N.role!=="evaluation")throw new Error("reward_check_result_identity_mismatch");let f=await a.transaction(E,async k=>{let b=await x(k,"reward_check",p);if(!m(b,u.run)||o(b))return b;let S=Ne.parse({...b,revision:b.revision+1,results:[...b.results,qa(w,N)],updatedAt:s()});return await k.put("reward_check",S,b.revision,{parentId:b.reward.id,status:b.status}),S});if(!m(f,u.run)||o(f))return f;f.status==="cancelling"&&T.abort(new Error("reward_check_cancel_requested"))}return T.signal.throwIfAborted(),await l(E,u.run,"completed",null)}catch(g){if(T.signal.aborted){if(!await e.cancel({scope:E,run:u.run}))return l(E,u.run,"cancelling","Execution cleanup is awaiting owner confirmation.");if(T.signal.reason instanceof Error&&T.signal.reason.message==="reward_check_cancel_requested")return l(E,u.run,"cancelled",null)}return await l(E,u.run,"failed",g instanceof Error?g.message:"Reward checks failed.")}finally{clearTimeout(h),i.delete(n(E,p))}}c(d,"run");function m(E,p){return E.leaseOwner===t.workerId&&E.attemptCount===p.attemptCount}c(m,"owns");async function l(E,p,u,T){return a.transaction(E,async h=>{let g=await x(h,"reward_check",p.id);if(!m(g,p)||o(g))return g;if(u==="completed"&&g.results.length!==g.fixtureRefs.length)throw new Error("reward_check_results_incomplete");let w=Ne.parse({...g,revision:g.revision+1,status:u,failure:T,matchesExpectations:u==="completed"?g.results.every(R=>R.matchesExpectation):null,leaseOwner:null,leaseExpiresAt:u==="cancelling"?new Date(Date.parse(s())+5e3).toISOString():null,updatedAt:s()});return await h.put("reward_check",w,g.revision,{parentId:g.reward.id,status:w.status}),w})}return c(l,"finish"),{run:d,requestCancellation(E,p){i.get(n(E,p))?.abort(new Error("reward_check_cancel_requested"))},async drain(E,p=20){let u=await a.transaction(E,async h=>{let g=[];for(let w of["queued","running","cancelling"])g.push(...(await h.list("reward_check",{status:w,limit:Math.max(1,Math.min(100,p))})).items);return g}),T=[];for(let h of u)T.push(await d(E,h.id));return T}}}c(oT,"createRewardCheckWorker");var Kc=ge.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}]}),$c=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,11 +181,11 @@ privileged expected outcome.
181
181
  failures,
182
182
  };
183
183
  }
184
- `});var Uo=_.enum(["foreground_tokens","success_rate","latency_ms","cost_usd"]),Fo=_.enum(["baseline","candidate"]),el=_.object({split:Ve,taskIds:_.array(oe).min(1).max(1e5),seeds:_.array(_.string().trim().min(1).max(500)).min(1).max(100),repetitions:_.number().int().positive().max(20),runtimeTargetHash:W,environmentHash:W,toolContractHash:W,limitsHash:W}).strict(),tl=_.object({schemaVersion:_.literal("openpond.benchmarkDefinition.v1"),id:oe,title:_.string().trim().min(1).max(500),description:_.string().trim().min(1).max(5e3),tasksetRelease:z,adaptationSplit:Ve,evaluationSplit:Ve,primaryMetric:Uo,qualityGate:_.enum(["none","non_regression","all_pass"]),caseCounts:_.object({adaptation:_.number().int().nonnegative(),evaluation:_.number().int().positive()}).strict(),metadata:jt}).strict(),RT=_.object({schemaVersion:_.literal("openpond.benchmarkRunRequest.v1"),phase:Fo,model:zr,reasoningEffort:_.string().trim().min(1).max(100).nullable(),split:Ve,seeds:_.array(_.string().trim().min(1).max(500)).min(1).max(100),repetitions:_.number().int().positive().max(20),metadata:jt}).strict(),al=_.object({inputTokens:_.number().int().nonnegative(),outputTokens:_.number().int().nonnegative(),totalTokens:_.number().int().nonnegative()}).strict(),jo=_.object({schemaVersion:_.literal("openpond.benchmarkRunSummary.v1"),id:oe,phase:Fo,tasksetRelease:z,harnessRelease:z,evaluationResult:z,model:zr,reasoningEffort:_.string().trim().min(1).max(100).nullable(),protocol:el,attemptCount:_.number().int().positive(),passedCount:_.number().int().nonnegative(),terminalCount:_.number().int().nonnegative(),usage:al,costUsd:_.number().nonnegative().nullable(),latencyMs:_.number().int().nonnegative(),createdAt:Ce,metadata:jt}).strict(),pr=jo.extend({contentHash:W}).strict(),Bo=_.object({schemaVersion:_.literal("openpond.benchmarkComparison.v1"),id:oe,baseline:z,candidate:z,tasksetRelease:z,primaryMetric:Uo,qualityPassed:_.boolean(),baselinePassRate:_.number().min(0).max(1),candidatePassRate:_.number().min(0).max(1),foregroundTokenDelta:_.number().int(),foregroundTokenDeltaPercent:_.number().finite().nullable(),improved:_.boolean(),createdAt:Ce,metadata:jt}).strict(),ur=Bo.extend({contentHash:W}).strict();function yT(a){return tl.parse(a)}c(yT,"createBenchmarkDefinition");function kT(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)=>qo(s,rl(i.metadata.usage)),As()),t=a.receipts.flatMap(s=>typeof s.costUsd=="number"?[s.costUsd]:[]),r=jo.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 pr.parse({...r,contentHash:R(r)})}c(kT,"createBenchmarkRunSummary");function NT(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||R(e.protocol)!==R(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)),d=t.usage.totalTokens-e.usage.totalTokens,o=e.usage.totalTokens>0?d/e.usage.totalTokens*100:null,m=a.primaryMetric==="foreground_tokens"?d<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=Bo.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:d,foregroundTokenDeltaPercent:o,improved:n&&m,createdAt:a.createdAt,metadata:a.metadata??{}});return ur.parse({...l,contentHash:R(l)})}c(NT,"compareBenchmarkRuns");function rl(a){return(Array.isArray(a)?a:a?[a]:[]).reduce((t,r)=>qo(t,sl(r)),As())}c(rl,"providerUsage");function sl(a){if(!a||typeof a!="object"||Array.isArray(a))return As();let e=a,t=bs(e,["inputTokens","input_tokens","promptTokens","prompt_tokens"]),r=bs(e,["outputTokens","output_tokens","completionTokens","completion_tokens"]),s=bs(e,["totalTokens","total_tokens"]);return{inputTokens:t,outputTokens:r,totalTokens:s||t+r}}c(sl,"usageRecord");function bs(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}c(bs,"token");function As(){return{inputTokens:0,outputTokens:0,totalTokens:0}}c(As,"emptyUsage");function qo(a,e){return{inputTokens:a.inputTokens+e.inputTokens,outputTokens:a.outputTokens+e.outputTokens,totalTokens:a.totalTokens+e.totalTokens}}c(qo,"addUsage");function Wo(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 Jt.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 d of i)t.add(d);return Jt.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(d=>d.evidenceRefs??[]),metadata:{duplicateCount:i.length}})}let[n]=i;return t.add(n),il(s,n)});for(let s of a.collectedArtifacts)t.has(s)||r.push(Jt.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 kn({schemaVersion:"openpond.artifactManifest.v1",id:a.id,attemptRef:a.attemptRef,entries:r,createdAt:a.createdAt,metadata:a.metadata??{}})}c(Wo,"buildArtifactManifest");function Yo(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=nl(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(" ")})})}c(Yo,"verifyRequiredOutputs");function il(a,e){return Jt.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}})}c(il,"manifestEntry");function nl(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}c(nl,"structuralFailures");function Cs(a,e,t){let r=[...e?.evidenceRefs??[],...e?.artifact?[e.artifact]:[]];return yn.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}})}c(Cs,"requiredOutputComponent");var Ko=_.object({schemaVersion:_.literal("openpond.profileEvaluationComparison.v1"),id:oe,tasksetRelease:z,populationHash:W,environmentHash:W,metricPolicyHash:W,limitsHash:W,members:_.array(_.object({runManifest:z,metricResultHash:W,source:Ln,policy:Ge.shape.policy,score:_.number().min(0).max(1).nullable()}).strict()).min(2).max(100),createdAt:Ce}).strict(),da=Ko.extend({contentHash:W}).strict();function $o(a){if(a.members.length<2)throw new Error("A comparison requires at least two runs.");let e=a.members.map(({manifest:o,result:m})=>{if(Ge.parse(o),se(o,"Taskset run manifest"),Xa(m),!o.profileEvaluation||o.execution.kind!=="harness")throw new Error("Profile comparison requires released Profile evaluation runs.");if(m.runManifest.id!==o.id||m.runManifest.contentHash!==o.contentHash||m.tasksetRelease.id!==o.tasksetRelease.id||m.tasksetRelease.contentHash!==o.tasksetRelease.contentHash||m.policyHash!==R(o.metricPolicy))throw new Error("Profile comparison metric differs from its run manifest.");return{manifest:o,result:m,source:o.profileEvaluation}}),t=e[0],r=R(t.manifest.population.map(({taskId:o,seed:m,fixtureId:l})=>({taskId:o,seed:m,fixtureId:l}))),s=R(t.manifest.metricPolicy),i=R(t.manifest.limits),n=new Set;for(let o of e){if(n.has(o.manifest.id))throw new Error("Profile comparison repeats a run.");if(n.add(o.manifest.id),o.manifest.tasksetRelease.id!==t.manifest.tasksetRelease.id||o.manifest.tasksetRelease.contentHash!==t.manifest.tasksetRelease.contentHash||R(o.manifest.population.map(({taskId:m,seed:l,fixtureId:f})=>({taskId:m,seed:l,fixtureId:f})))!==r||o.source.environmentHash!==t.source.environmentHash||R(o.manifest.metricPolicy)!==s||R(o.manifest.limits)!==i||o.manifest.runtimeTarget.adapterId!==t.manifest.runtimeTarget.adapterId||o.manifest.runtimeTarget.placement!==t.manifest.runtimeTarget.placement||o.manifest.runtimeTarget.runtimeVersion!==t.manifest.runtimeTarget.runtimeVersion)throw new Error("Profile comparison runs differ in frozen tasks, environment, grading, limits, or runtime.")}let d=Ko.parse({schemaVersion:"openpond.profileEvaluationComparison.v1",id:a.id,tasksetRelease:t.manifest.tasksetRelease,populationHash:r,environmentHash:t.source.environmentHash,metricPolicyHash:s,limitsHash:i,members:e.map(({manifest:o,result:m,source:l})=>({runManifest:{id:o.id,contentHash:o.contentHash},metricResultHash:m.contentHash,source:l,policy:o.policy,score:m.value})),createdAt:a.createdAt});return da.parse({...d,contentHash:R(d)})}c($o,"createProfileEvaluationComparison");var Jo=_.object({schemaVersion:_.literal("openpond.profileEvaluationSuiteRun.v1"),id:oe,suiteId:oe,suiteHash:W,catalogHash:W,profileId:oe,sourceRevision:_.string().trim().min(1).max(240),harnessRelease:z,members:_.array(_.object({definitionId:oe,runManifest:z,runHash:W,passed:_.boolean(),score:_.number().min(0).max(1).nullable()}).strict()).min(1).max(1e3),passed:_.boolean(),createdAt:Ce,completedAt:Ce}).strict(),ca=Jo.extend({contentHash:W}).strict();function Vo(a){let e=On.parse(a.catalog),t=e.suites.find(d=>d.id===a.suiteId);if(!t)throw new Error(`Profile evaluation suite ${a.suiteId} is absent from its catalog.`);if(a.members.length!==t.definitionIds.length)throw new Error("Profile evaluation suite has an incomplete run population.");let r=a.members.map((d,o)=>{let m=t.definitionIds[o],l=e.definitions.find(u=>u.id===m);if(!l||d.definitionId!==m)throw new Error("Profile evaluation suite members differ from declared definition order.");let f=Ge.parse(d.manifest);se(f,"Profile evaluation suite member manifest");let p=f.profileEvaluation;if(!p||f.execution.kind!=="harness"||p.definitionId!==m||p.definitionHash!==R(l)||R(p.target)!==R(l.target)||p.catalogHash!==R(e)||f.tasksetRelease.id!==l.tasksetRelease.id||f.tasksetRelease.contentHash!==l.tasksetRelease.contentHash)throw new Error("Profile evaluation suite member differs from its released definition.");return{...d,manifest:f,source:p}}),s=r[0].source,i=r[0].manifest.policy;if(i.kind!=="model")throw new Error("Profile evaluation suite requires model runs.");for(let d of r){if(d.source.profileId!==s.profileId||d.source.sourceRevision!==s.sourceRevision||d.source.harnessRelease.id!==s.harnessRelease.id||d.source.harnessRelease.contentHash!==s.harnessRelease.contentHash)throw new Error("Profile evaluation suite members use different Profile releases.");let o=d.manifest.policy;if(o.kind!=="model"||R(o)!==R(i))throw new Error("Profile evaluation suite members use different model configurations.")}let n=Jo.parse({schemaVersion:"openpond.profileEvaluationSuiteRun.v1",id:a.id,suiteId:t.id,suiteHash:R(t),catalogHash:R(e),profileId:s.profileId,sourceRevision:s.sourceRevision,harnessRelease:s.harnessRelease,members:r.map(d=>({definitionId:d.definitionId,runManifest:{id:d.manifest.id,contentHash:d.manifest.contentHash},runHash:d.runHash,passed:d.passed,score:d.score})),passed:r.every(d=>d.passed),createdAt:a.createdAt,completedAt:a.completedAt});return ca.parse({...n,contentHash:R(n)})}c(Vo,"createProfileEvaluationSuiteRun");import{execFile as ol}from"node:child_process";import{promises as Oe}from"node:fs";import bt from"node:path";import{promisify as dl}from"node:util";var cl=dl(ol);async function zT(a){let e=bt.join(a.runPath,"package.json"),t=await Oe.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 Oe.writeFile(e,`{"type":"module"}
185
- `,{flag:"wx"});let r=await Ps(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??ll)(r,i,a.runPath)}let s=bt.join(a.runPath,"node_modules","openpond-agent-sdk");if(!await Oe.lstat(s).catch(()=>null)){let i=JSON.parse(await Oe.readFile(e,"utf8"));if({...mr(i.dependencies),...mr(i.optionalDependencies)}["openpond-agent-sdk"])throw new Error("Released Profile Agent declared an SDK dependency that the locked installation did not provide.");let d=await vo();await Oe.mkdir(bt.dirname(s),{recursive:!0}),await Oe.symlink(d,s,"dir")}}c(zT,"prepareReleasedProfileActionDependencies");async function Ps(a){let e=bt.join(a,"package.json"),t=await Oe.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 Oe.readFile(e,"utf8")),s={...mr(r.dependencies),...mr(r.optionalDependencies)};if(Object.keys(s).length){for(let[d,o]of Object.entries(s))if(/^(?:file:|link:|workspace:|git\+|https?:)/i.test(o))throw new Error(`Released Profile Agent dependency ${d} must use a portable registry version.`);let i=await zo(bt.join(a,"package-lock.json")),n=await zo(bt.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}c(Ps,"inspectReleasedProfileActionDependencies");function mr(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)}c(mr,"dependencyMap");async function zo(a){let e=await Oe.lstat(a).catch(()=>null);if(e&&(!e.isFile()||e.isSymbolicLink()))throw new Error("Released Profile Agent lockfile must be a regular file.");return!!e}c(zo,"regularFile");async function ll(a,e,t){try{let r=process.platform==="win32"?`${a}.cmd`:a;await cl(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.`)}}c(ll,"installLockedDependencies");import{constants as pl,promises as Ye}from"node:fs";import ne from"node:path";async function Go(a){let e=await Ye.lstat(a);if(e.isSymbolicLink())throw new Error(`Profile source cannot be a symlink: ${a}`);if(e.isFile())return[ne.basename(a)];if(!e.isDirectory())throw new Error(`Profile source is not a file or directory: ${a}`);return At(a)}c(Go,"sourceFilesForImport");function Qo(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]}c(Qo,"selectAgentPrimaryFile");async function Ke(a,e){let t=await Ye.lstat(a);if(!t.isFile()||t.isSymbolicLink())throw new Error(`Harness import source must be a regular non-symlink file: ${a}`);await Ye.mkdir(ne.dirname(e),{recursive:!0}),await Ye.copyFile(a,e,pl.COPYFILE_EXCL)}c(Ke,"copyRegularFile");function la(a){let e=ne.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"}c(la,"mediaTypeForPath");async function Tr(a,e){let t=ne.resolve(a,...e.split("/")),r=ne.relative(a,t);if(!r||r.startsWith("..")||ne.isAbsolute(r))throw new Error(`Harness source path escapes its root: ${e}`);let s=await Ye.lstat(t);if(!s.isFile()||s.isSymbolicLink())throw new Error(`Harness source path must be a regular non-symlink file: ${e}`);let i=await Ye.realpath(t),n=ne.relative(await Ye.realpath(a),i);if(n.startsWith("..")||ne.isAbsolute(n))throw new Error(`Harness source path resolves outside its root: ${e}`);return t}c(Tr,"resolveContainedRegularFile");async function At(a,e=a){let t=await Ye.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=ne.join(e,s.name);if(s.isSymbolicLink())throw new Error(`Harness source cannot contain symlinks: ${ne.relative(a,i)}`);if(s.isDirectory())r.push(...await At(a,i));else if(s.isFile())r.push(ne.relative(a,i).split(ne.sep).join("/"));else throw new Error(`Harness source contains an unsupported entry: ${ne.relative(a,i)}`)}return r.sort()}c(At,"listRegularFiles");function he(a){return a.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"harness"}c(he,"safeSegment");var ul=new Set(["contentsBase64","contentBase64","fileBase64","bodyBase64"]),ml=new Set(["command.output","tool.completed","workspace_action_result"]);function fr(a){return xs(Tl(a),0,"")}c(fr,"sanitizeRuntimeEvent");function Tl(a){if(!ml.has(a.name)||typeof a.output!="string"||hl(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=`
184
+ `});var Do=_.enum(["foreground_tokens","success_rate","latency_ms","cost_usd"]),Ho=_.enum(["baseline","candidate"]),Jc=_.object({split:Ke,taskIds:_.array(Ht).min(1).max(1e5),seeds:_.array(_.string().trim().min(1).max(500)).min(1).max(100),repetitions:_.number().int().positive().max(20),runtimeTargetHash:qe,environmentHash:qe,toolContractHash:qe,limitsHash:qe}).strict(),Vc=_.object({schemaVersion:_.literal("openpond.benchmarkDefinition.v1"),id:Ht,title:_.string().trim().min(1).max(500),description:_.string().trim().min(1).max(5e3),tasksetRelease:Le,adaptationSplit:Ke,evaluationSplit:Ke,primaryMetric:Do,qualityGate:_.enum(["none","non_regression","all_pass"]),caseCounts:_.object({adaptation:_.number().int().nonnegative(),evaluation:_.number().int().positive()}).strict(),metadata:Ut}).strict(),ET=_.object({schemaVersion:_.literal("openpond.benchmarkRunRequest.v1"),phase:Ho,model:Jr,reasoningEffort:_.string().trim().min(1).max(100).nullable(),split:Ke,seeds:_.array(_.string().trim().min(1).max(500)).min(1).max(100),repetitions:_.number().int().positive().max(20),metadata:Ut}).strict(),zc=_.object({inputTokens:_.number().int().nonnegative(),outputTokens:_.number().int().nonnegative(),totalTokens:_.number().int().nonnegative()}).strict(),Uo=_.object({schemaVersion:_.literal("openpond.benchmarkRunSummary.v1"),id:Ht,phase:Ho,tasksetRelease:Le,harnessRelease:Le,evaluationResult:Le,model:Jr,reasoningEffort:_.string().trim().min(1).max(100).nullable(),protocol:Jc,attemptCount:_.number().int().positive(),passedCount:_.number().int().nonnegative(),terminalCount:_.number().int().nonnegative(),usage:zc,costUsd:_.number().nonnegative().nullable(),latencyMs:_.number().int().nonnegative(),createdAt:Kr,metadata:Ut}).strict(),dr=Uo.extend({contentHash:qe}).strict(),Fo=_.object({schemaVersion:_.literal("openpond.benchmarkComparison.v1"),id:Ht,baseline:Le,candidate:Le,tasksetRelease:Le,primaryMetric:Do,qualityPassed:_.boolean(),baselinePassRate:_.number().min(0).max(1),candidatePassRate:_.number().min(0).max(1),foregroundTokenDelta:_.number().int(),foregroundTokenDeltaPercent:_.number().finite().nullable(),improved:_.boolean(),createdAt:Kr,metadata:Ut}).strict(),cr=Fo.extend({contentHash:qe}).strict();function fT(a){return Vc.parse(a)}c(fT,"createBenchmarkDefinition");function _T(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)=>jo(s,Gc(i.metadata.usage)),Ls()),t=a.receipts.flatMap(s=>typeof s.costUsd=="number"?[s.costUsd]:[]),r=Uo.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 dr.parse({...r,contentHash:y(r)})}c(_T,"createBenchmarkRunSummary");function hT(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||y(e.protocol)!==y(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,d=e.usage.totalTokens>0?o/e.usage.totalTokens*100:null,m=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=Fo.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:d,improved:n&&m,createdAt:a.createdAt,metadata:a.metadata??{}});return cr.parse({...l,contentHash:y(l)})}c(hT,"compareBenchmarkRuns");function Gc(a){return(Array.isArray(a)?a:a?[a]:[]).reduce((t,r)=>jo(t,Qc(r)),Ls())}c(Gc,"providerUsage");function Qc(a){if(!a||typeof a!="object"||Array.isArray(a))return Ls();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}}c(Qc,"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}c(Os,"token");function Ls(){return{inputTokens:0,outputTokens:0,totalTokens:0}}c(Ls,"emptyUsage");function jo(a,e){return{inputTokens:a.inputTokens+e.inputTokens,outputTokens:a.outputTokens+e.outputTokens,totalTokens:a.totalTokens+e.totalTokens}}c(jo,"addUsage");function Bo(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 Kt.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 Kt.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),Zc(s,n)});for(let s of a.collectedArtifacts)t.has(s)||r.push(Kt.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 Rn({schemaVersion:"openpond.artifactManifest.v1",id:a.id,attemptRef:a.attemptRef,entries:r,createdAt:a.createdAt,metadata:a.metadata??{}})}c(Bo,"buildArtifactManifest");function qo(a){return a.requiredOutputs.map(e=>{let t=a.manifest.entries.find(s=>s.requiredOutputPath===e.path);if(!t||t.status==="missing")return As(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 As(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=el(e,t);return As(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(" ")})})}c(qo,"verifyRequiredOutputs");function Zc(a,e){return Kt.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}})}c(Zc,"manifestEntry");function el(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}c(el,"structuralFailures");function As(a,e,t){let r=[...e?.evidenceRefs??[],...e?.artifact?[e.artifact]:[]];return wn.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}})}c(As,"requiredOutputComponent");import{execFile as tl}from"node:child_process";import{promises as Se}from"node:fs";import It from"node:path";import{promisify as al}from"node:util";var rl=al(tl);async function bT(a){let e=It.join(a.runPath,"package.json"),t=await Se.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 Se.writeFile(e,`{"type":"module"}
185
+ `,{flag:"wx"});let r=await bs(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??sl)(r,i,a.runPath)}let s=It.join(a.runPath,"node_modules","openpond-agent-sdk");if(!await Se.lstat(s).catch(()=>null)){let i=JSON.parse(await Se.readFile(e,"utf8"));if({...lr(i.dependencies),...lr(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 No();await Se.mkdir(It.dirname(s),{recursive:!0}),await Se.symlink(o,s,"dir")}}c(bT,"prepareReleasedProfileActionDependencies");async function bs(a){let e=It.join(a,"package.json"),t=await Se.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 Se.readFile(e,"utf8")),s={...lr(r.dependencies),...lr(r.optionalDependencies)};if(Object.keys(s).length){for(let[o,d]of Object.entries(s))if(/^(?:file:|link:|workspace:|git\+|https?:)/i.test(d))throw new Error(`Released Profile Agent dependency ${o} must use a portable registry version.`);let i=await Wo(It.join(a,"package-lock.json")),n=await Wo(It.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}c(bs,"inspectReleasedProfileActionDependencies");function lr(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)}c(lr,"dependencyMap");async function Wo(a){let e=await Se.lstat(a).catch(()=>null);if(e&&(!e.isFile()||e.isSymbolicLink()))throw new Error("Released Profile Agent lockfile must be a regular file.");return!!e}c(Wo,"regularFile");async function sl(a,e,t){try{let r=process.platform==="win32"?`${a}.cmd`:a;await rl(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.`)}}c(sl,"installLockedDependencies");import{constants as il,promises as je}from"node:fs";import re from"node:path";async function Yo(a){let e=await je.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 Ot(a)}c(Yo,"sourceFilesForImport");function Ko(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]}c(Ko,"selectAgentPrimaryFile");async function Be(a,e){let t=await je.lstat(a);if(!t.isFile()||t.isSymbolicLink())throw new Error(`Harness import source must be a regular non-symlink file: ${a}`);await je.mkdir(re.dirname(e),{recursive:!0}),await je.copyFile(a,e,il.COPYFILE_EXCL)}c(Be,"copyRegularFile");function oa(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"}c(oa,"mediaTypeForPath");async function pr(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 je.lstat(t);if(!s.isFile()||s.isSymbolicLink())throw new Error(`Harness source path must be a regular non-symlink file: ${e}`);let i=await je.realpath(t),n=re.relative(await je.realpath(a),i);if(n.startsWith("..")||re.isAbsolute(n))throw new Error(`Harness source path resolves outside its root: ${e}`);return t}c(pr,"resolveContainedRegularFile");async function Ot(a,e=a){let t=await je.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 Ot(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()}c(Ot,"listRegularFiles");function Te(a){return a.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"harness"}c(Te,"safeSegment");var nl=new Set(["contentsBase64","contentBase64","fileBase64","bodyBase64"]),ol=new Set(["command.output","tool.completed","workspace_action_result"]);function ur(a){return Cs(dl(a),0,"")}c(ur,"sanitizeRuntimeEvent");function dl(a){if(!ol.has(a.name)||typeof a.output!="string"||ul(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=`
186
186
  [openpond event output compacted: ${s} chars omitted from ${e} chars]
187
- `,n=`${t}${i}${r}`,d={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:fl(a.data,d)}}c(Tl,"compactLargeRuntimeEventOutput");function fl(a,e){return a===void 0?{outputCompaction:e}:Ms(a)?{...a,outputCompaction:e}:a}c(fl,"compactedEventData");function xs(a,e,t){if(typeof a=="string")return El(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=>xs(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,xs(s,e+1,r)]))}c(xs,"sanitizeEventValue");function El(a,e){return ul.has(e)?`[redacted base64 content: ${_l(a)} bytes]`:a.length<=12e4?a:`${a.slice(0,12e4)}
188
- [event string truncated: ${a.length-12e4} chars omitted]`}c(El,"sanitizeEventString");function _l(a){let e=a.endsWith("==")?2:a.endsWith("=")?1:0;return Math.max(0,Math.floor(a.length*3/4)-e)}c(_l,"estimatedBase64Bytes");function Ms(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}c(Ms,"isPlainRecord");function hl(a){if(!Ms(a))return!1;let e=a.outputCompaction;return Ms(e)&&e.schemaVersion==="openpond.runtimeEventOutputCompaction.v1"}c(hl,"hasOutputCompaction");async function Er(a,e){return(await a.allPayloadRows(`SELECT payload FROM ${e} ORDER BY sort_index ASC`)).map(r=>JSON.parse(r.payload))}c(Er,"readStorePayloads");function pa(a){let e=a,t=Gn.safeParse(e.openPondCommandAccessMode);return{...e,experience:gl(e),openPondCommandAccessMode:t.success?t.data:zn,currentProfile:e.currentProfile??null}}c(pa,"normalizeSessionPayload");function gl(a){let e=Qn.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"}c(gl,"storedSessionExperience");async function Zo(a){return{sessions:(await Er(a,"sessions")).map(pa),turns:await Er(a,"turns"),events:(await Er(a,"events")).map(fr),approvals:await Er(a,"approvals")}}c(Zo,"readStoreData");async function ed(a,e){let t=ce();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}}c(ed,"persistStoreData");import Cp from"node:path";import{randomUUID as wp}from"node:crypto";import{cp as Rp,mkdir as yp,readdir as kp,rename as ni,rm as Lc,stat as Np}from"node:fs/promises";import va from"node:path";var pe=_.string().trim().min(1).max(500),Ct=_.iso.datetime({offset:!0}),ua=_.object({schemaVersion:_.literal("openpond.preferenceComparisonReleaseRecord.v1"),id:pe,tasksetId:pe,tasksetRelease:ke,release:An,publishedBy:pe,sourceConsent:_.enum(["authorized","revoked"]),retentionUntil:Ct.nullable(),createdAt:Ct}).strict(),at=_.object({schemaVersion:_.literal("openpond.preferenceComparisonAssignmentRecord.v1"),id:pe,tasksetId:pe,assignment:Cn,state:_.enum(["queued","in_review","submitted","unreviewable","revoked"]),reviewerKey:pe.nullable(),unreviewableReason:_.string().trim().min(1).max(2e3).nullable(),createdAt:Ct,updatedAt:Ct}).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."})}),ma=_.object({schemaVersion:_.literal("openpond.preferenceComparisonSubmissionRecord.v1"),id:pe,tasksetId:pe,assignmentId:pe,reviewerKey:pe,receipt:Pn,submittedAt:Ct}).strict(),Xs=_.object({schemaVersion:_.literal("openpond.preferenceComparisonCalibrationRecord.v1"),id:pe,tasksetId:pe,report:xn,createdAt:Ct}).strict();function td(a,e,t){let r=po.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)}c(td,"isArtifactCollectionRecoveryTransition");function Ds(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(d=>d.stage==="baseline"||d.stage==="adaptation").reduce((d,o)=>d+o.attemptCount,0),r=a.evaluation.attemptPlan.reduce((d,o)=>d+o.attemptCount,0),s=a.evaluation.attemptPlan.find(d=>d.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)}c(Ds,"isCheckpointResumeTransition");var ge=_.object({id:Q,scope:Q,sourceId:Q,name:_.string().trim().min(1).max(100),keyPrefix:_.string().min(1).max(100),createdAt:_.iso.datetime(),expiresAt:_.iso.datetime(),revokedAt:_.iso.datetime().nullable()}).strict(),Hs=_.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/),_r=_.discriminatedUnion("action",[_.object({action:_.literal("create"),scope:Q,sourceId:Q,name:_.string().trim().min(1).max(100),expiresAt:_.iso.datetime(),operationId:Q,apiKey:Hs}).strict(),_.object({action:_.literal("list"),scope:Q,sourceId:Q,afterId:Q.optional(),limit:_.number().int().min(1).max(100).default(30)}).strict(),_.object({action:_.literal("revoke"),scope:Q,sourceId:Q,id:Q}).strict()]),ad=_.object({credential:ge,apiKey:Hs}).strict(),rd=_.object({items:_.array(ge).max(100),nextCursor:Q.nullable()}).strict(),sd=_.object({scope:Q,sourceId:Q}).strict(),id=_.object({scope:Q,source:Tt,taskDefinition:Tt,enabled:_.boolean(),allowedSplits:_.array(Ve).min(1).max(4)}).strict();function wl(a,e){let t=Date.parse(_.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.")}c(wl,"assertLearningCredentialExpiry");var nd=_.object({batchId:_.string().trim().min(1).max(500),modelProjectId:_.string().trim().min(1).max(500)}).strict(),od=_.object({batchId:_.string().min(1),projectId:_.string().min(1),tasksetId:_.string().min(1),releaseId:_.string().min(1),revision:_.number().int().positive(),contentHash:_.string().regex(/^[a-f0-9]{64}$/)}).strict(),ae=class extends Error{static{c(this,"OpenPondLearningError")}constructor(a,e,t,r){super(t),this.status=a,this.code=e,this.details=r,this.name="OpenPondLearningError"}status;code;details},Rl=class{static{c(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={}){ln(a);let t=pn.parse({scope:this.#e.scope,command:a}),r=mn.parse(await this.#t("commands",t,e));if(r.operationId!==a.operationId)throw new ae(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=Me.parse({action:"get",scope:this.#e.scope,kind:a,id:e,...t===void 0?{}:{revision:t}});return ie[a].parse(await this.#t("read",s,r))}async inspectEvidence(a,e={}){let t=Me.parse({action:"inspect_evidence",scope:this.#e.scope,evidence:a}),r=un.parse(await this.#t("read",t,e));if(!C(r.evidence,a))throw new ae(502,"evidence_identity_mismatch","Inspection did not match the requested evidence release.",null);return r}async inspectTaskQueue(a=null,e={}){let t=Me.parse({action:"inspect_task_queue",scope:this.#e.scope,modelProjectId:a}),r=dn.parse(await this.#t("read",t,e));if(r.modelProjectId!==a)throw new ae(502,"model_identity_mismatch","Task queue did not match the requested Model.",null);return r}async inspectPolicy(a,e={}){let t=Me.parse({action:"inspect_policy",scope:this.#e.scope,policy:a}),r=nn.parse(await this.#t("read",t,e));if(!C(r.policy,a))throw new ae(502,"policy_identity_mismatch","Inspection did not match the requested policy release.",null);return r}async createSourceCredential(a,e={}){let t=_r.parse({...a,action:"create",scope:this.#e.scope}),r=ad.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 ae(502,"credential_identity_mismatch","Credential response did not match the prepared credential.",null);return r}async listSourceCredentials(a,e={},t={}){let r=_r.parse({...e,action:"list",scope:this.#e.scope,sourceId:a}),s=rd.parse(await this.#t("credentials",r,t));if(s.items.length>(e.limit??30))throw new ae(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=_r.parse({action:"revoke",scope:this.#e.scope,sourceId:a,id:e}),s=ge.parse(await this.#t("credentials",r,t));if(this.#a(s,a),s.id!==e||s.revokedAt===null)throw new ae(502,"credential_revocation_mismatch","Credential revocation did not match the requested credential.",null);return s}async sourceConfiguration(a,e={}){let t=sd.parse({scope:this.#e.scope,sourceId:a}),r=id.parse(await this.#t("source-config",t,e));if(r.scope!==this.#e.scope||r.source.id!==a)throw new ae(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 ae(502,"credential_scope_mismatch","Credential response did not match the requested source.",null)}async list(a,e={},t={}){let r=Me.parse({action:"list",scope:this.#e.scope,kind:a,...e});return _.object({items:_.array(ie[a]).max(100),nextCursor:_.string().nullable()}).strict().parse(await this.#t("read",r,t))}async publishBatch(a,e={}){let t=nd.parse(a),r=od.parse(await this.#t("publish-batch",{...t,scope:this.#e.scope},e));if(r.batchId!==t.batchId)throw new ae(502,"batch_identity_mismatch","Published batch response did not match the requested batch.",null);return r}async#t(a,e,t){ye(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 yl(r);if(!r.ok){let i=_.object({code:_.string().optional(),error:_.string().optional()}).passthrough().safeParse(s);throw new ae(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 yl(a){let t=a.body?.getReader();if(!t)throw new ae(a.status,"empty_response","Learning response was empty.",null);let r=new TextDecoder,s=0,i="";try{for(;;){let d=await t.read();if(d.done)break;if(s+=d.value.byteLength,s>16777216)throw new ae(a.status,"response_too_large","Learning response exceeded 16 MiB; request a smaller page.",null);i+=r.decode(d.value,{stream:!0})}i+=r.decode();let n=JSON.parse(i);return ye(n,16777216),n}finally{await t.cancel(),t.releaseLock()}}c(yl,"readBoundedLearningResponse");import{backup as Al}from"node:sqlite";import{promises as Ks}from"node:fs";import fa from"node:path";var dd=`
187
+ `,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:cl(a.data,o)}}c(dl,"compactLargeRuntimeEventOutput");function cl(a,e){return a===void 0?{outputCompaction:e}:Ps(a)?{...a,outputCompaction:e}:a}c(cl,"compactedEventData");function Cs(a,e,t){if(typeof a=="string")return ll(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=>Cs(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,Cs(s,e+1,r)]))}c(Cs,"sanitizeEventValue");function ll(a,e){return nl.has(e)?`[redacted base64 content: ${pl(a)} bytes]`:a.length<=12e4?a:`${a.slice(0,12e4)}
188
+ [event string truncated: ${a.length-12e4} chars omitted]`}c(ll,"sanitizeEventString");function pl(a){let e=a.endsWith("==")?2:a.endsWith("=")?1:0;return Math.max(0,Math.floor(a.length*3/4)-e)}c(pl,"estimatedBase64Bytes");function Ps(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}c(Ps,"isPlainRecord");function ul(a){if(!Ps(a))return!1;let e=a.outputCompaction;return Ps(e)&&e.schemaVersion==="openpond.runtimeEventOutputCompaction.v1"}c(ul,"hasOutputCompaction");async function mr(a,e){return(await a.allPayloadRows(`SELECT payload FROM ${e} ORDER BY sort_index ASC`)).map(r=>JSON.parse(r.payload))}c(mr,"readStorePayloads");function da(a){let e=a,t=Vn.safeParse(e.openPondCommandAccessMode);return{...e,experience:ml(e),openPondCommandAccessMode:t.success?t.data:Jn,currentProfile:e.currentProfile??null}}c(da,"normalizeSessionPayload");function ml(a){let e=zn.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"}c(ml,"storedSessionExperience");async function $o(a){return{sessions:(await mr(a,"sessions")).map(da),turns:await mr(a,"turns"),events:(await mr(a,"events")).map(ur),approvals:await mr(a,"approvals")}}c($o,"readStoreData");async function Jo(a,e){let t=ie();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}}c(Jo,"persistStoreData");import vp from"node:path";import{randomUUID as Tp}from"node:crypto";import{cp as Ep,mkdir as fp,readdir as _p,rename as si,rm as kc,stat as hp}from"node:fs/promises";import ya from"node:path";var oe=_.string().trim().min(1).max(500),Lt=_.iso.datetime({offset:!0}),ca=_.object({schemaVersion:_.literal("openpond.preferenceComparisonReleaseRecord.v1"),id:oe,tasksetId:oe,tasksetRelease:ge,release:In,publishedBy:oe,sourceConsent:_.enum(["authorized","revoked"]),retentionUntil:Lt.nullable(),createdAt:Lt}).strict(),Qe=_.object({schemaVersion:_.literal("openpond.preferenceComparisonAssignmentRecord.v1"),id:oe,tasksetId:oe,assignment:On,state:_.enum(["queued","in_review","submitted","unreviewable","revoked"]),reviewerKey:oe.nullable(),unreviewableReason:_.string().trim().min(1).max(2e3).nullable(),createdAt:Lt,updatedAt:Lt}).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."})}),la=_.object({schemaVersion:_.literal("openpond.preferenceComparisonSubmissionRecord.v1"),id:oe,tasksetId:oe,assignmentId:oe,reviewerKey:oe,receipt:Ln,submittedAt:Lt}).strict(),xs=_.object({schemaVersion:_.literal("openpond.preferenceComparisonCalibrationRecord.v1"),id:oe,tasksetId:oe,report:An,createdAt:Lt}).strict();function Vo(a,e,t){let r=co.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)}c(Vo,"isArtifactCollectionRecoveryTransition");function Xs(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,d)=>o+d.attemptCount,0),r=a.evaluation.attemptPlan.reduce((o,d)=>o+d.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)}c(Xs,"isCheckpointResumeTransition");var Ee=_.object({id:z,scope:z,sourceId:z,name:_.string().trim().min(1).max(100),keyPrefix:_.string().min(1).max(100),createdAt:_.iso.datetime(),expiresAt:_.iso.datetime(),revokedAt:_.iso.datetime().nullable()}).strict(),Ms=_.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/),Tr=_.discriminatedUnion("action",[_.object({action:_.literal("create"),scope:z,sourceId:z,name:_.string().trim().min(1).max(100),expiresAt:_.iso.datetime(),operationId:z,apiKey:Ms}).strict(),_.object({action:_.literal("list"),scope:z,sourceId:z,afterId:z.optional(),limit:_.number().int().min(1).max(100).default(30)}).strict(),_.object({action:_.literal("revoke"),scope:z,sourceId:z,id:z}).strict()]),zo=_.object({credential:Ee,apiKey:Ms}).strict(),Go=_.object({items:_.array(Ee).max(100),nextCursor:z.nullable()}).strict(),Qo=_.object({scope:z,sourceId:z}).strict(),Zo=_.object({scope:z,source:lt,taskDefinition:lt,enabled:_.boolean(),allowedSplits:_.array(Ke).min(1).max(4)}).strict();function Tl(a,e){let t=Date.parse(_.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.")}c(Tl,"assertLearningCredentialExpiry");var ed=_.object({batchId:_.string().trim().min(1).max(500),modelProjectId:_.string().trim().min(1).max(500)}).strict(),td=_.object({batchId:_.string().min(1),projectId:_.string().min(1),tasksetId:_.string().min(1),releaseId:_.string().min(1),revision:_.number().int().positive(),contentHash:_.string().regex(/^[a-f0-9]{64}$/)}).strict(),ee=class extends Error{static{c(this,"OpenPondLearningError")}constructor(a,e,t,r){super(t),this.status=a,this.code=e,this.details=r,this.name="OpenPondLearningError"}status;code;details},El=class{static{c(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={}){dn(a);let t=cn.parse({scope:this.#e.scope,command:a}),r=pn.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=Ce.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=Ce.parse({action:"inspect_evidence",scope:this.#e.scope,evidence:a}),r=ln.parse(await this.#t("read",t,e));if(!C(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=Ce.parse({action:"inspect_task_queue",scope:this.#e.scope,modelProjectId:a}),r=nn.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=Ce.parse({action:"inspect_policy",scope:this.#e.scope,policy:a}),r=rn.parse(await this.#t("read",t,e));if(!C(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=Tr.parse({...a,action:"create",scope:this.#e.scope}),r=zo.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=Tr.parse({...e,action:"list",scope:this.#e.scope,sourceId:a}),s=Go.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=Tr.parse({action:"revoke",scope:this.#e.scope,sourceId:a,id:e}),s=Ee.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=Qo.parse({scope:this.#e.scope,sourceId:a}),r=Zo.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=Ce.parse({action:"list",scope:this.#e.scope,kind:a,...e});return _.object({items:_.array(ae[a]).max(100),nextCursor:_.string().nullable()}).strict().parse(await this.#t("read",r,t))}async publishBatch(a,e={}){let t=ed.parse(a),r=td.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){he(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 fl(r);if(!r.ok){let i=_.object({code:_.string().optional(),error:_.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 fl(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 he(n,16777216),n}finally{await t.cancel(),t.releaseLock()}}c(fl,"readBoundedLearningResponse");import{backup as Sl}from"node:sqlite";import{promises as Ws}from"node:fs";import ua from"node:path";var ad=`
189
189
  CREATE TABLE IF NOT EXISTS sessions (
190
190
  id TEXT PRIMARY KEY,
191
191
  sort_index INTEGER NOT NULL,
@@ -880,7 +880,7 @@ privileged expected outcome.
880
880
  CREATE INDEX IF NOT EXISTS model_bindings_model_idx
881
881
  ON model_bindings(model_artifact_lineage_id, updated_at DESC);
882
882
 
883
- `;async function cd(a){await a(`
883
+ `;async function rd(a){await a(`
884
884
  CREATE TABLE IF NOT EXISTS create_improve_runs (
885
885
  id TEXT PRIMARY KEY,
886
886
  profile_id TEXT NOT NULL,
@@ -911,7 +911,7 @@ privileged expected outcome.
911
911
  );
912
912
  CREATE INDEX IF NOT EXISTS create_improve_run_actions_run_revision_idx
913
913
  ON create_improve_run_actions(run_id, resulting_revision);
914
- `)}c(cd,"createCreateImproveRunTables");async function ld(a){await a(`
914
+ `)}c(rd,"createCreateImproveRunTables");async function sd(a){await a(`
915
915
  CREATE TABLE IF NOT EXISTS taskset_revisions (
916
916
  taskset_id TEXT NOT NULL,
917
917
  revision INTEGER NOT NULL,
@@ -925,19 +925,19 @@ privileged expected outcome.
925
925
  );
926
926
  CREATE UNIQUE INDEX IF NOT EXISTS taskset_revisions_hash_idx
927
927
  ON taskset_revisions(taskset_id, content_hash);
928
- `)}c(ld,"createTasksetRevisionTables");async function pd(a){await a(`
928
+ `)}c(sd,"createTasksetRevisionTables");async function id(a){await a(`
929
929
  CREATE TABLE IF NOT EXISTS task_creation_transcripts (creation_id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
930
930
  CREATE INDEX IF NOT EXISTS task_creation_transcript_profile_idx ON task_creation_transcripts(profile_id, updated_at DESC);
931
931
  CREATE TABLE IF NOT EXISTS task_design_proposals (creation_id TEXT PRIMARY KEY, proposal_id TEXT NOT NULL, profile_id TEXT NOT NULL, state TEXT NOT NULL, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
932
932
  CREATE UNIQUE INDEX IF NOT EXISTS task_design_proposal_id_idx ON task_design_proposals(proposal_id);
933
- `)}c(pd,"createTaskCreationProjectionTables");async function ud(a){await a(`
933
+ `)}c(id,"createTaskCreationProjectionTables");async function nd(a){await a(`
934
934
  CREATE TABLE IF NOT EXISTS grader_audit_reports (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
935
935
  CREATE INDEX IF NOT EXISTS grader_audit_taskset_idx ON grader_audit_reports(taskset_id, created_at DESC);
936
- `)}c(ud,"createGraderAuditTables");async function md(a){await a(`
936
+ `)}c(nd,"createGraderAuditTables");async function od(a){await a(`
937
937
  CREATE TABLE IF NOT EXISTS task_attempt_artifacts (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, attempt_id TEXT NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
938
938
  CREATE INDEX IF NOT EXISTS task_attempt_artifacts_attempt_idx ON task_attempt_artifacts(attempt_id, created_at);
939
939
  CREATE INDEX IF NOT EXISTS task_attempt_artifacts_taskset_idx ON task_attempt_artifacts(taskset_id, created_at);
940
- `)}c(md,"createTaskAttemptArtifactTables");async function Td(a){await a(`
940
+ `)}c(od,"createTaskAttemptArtifactTables");async function dd(a){await a(`
941
941
  CREATE TABLE IF NOT EXISTS training_rollout_receipts (
942
942
  id TEXT PRIMARY KEY,
943
943
  job_id TEXT NOT NULL,
@@ -968,7 +968,7 @@ privileged expected outcome.
968
968
  WHERE status = 'active';
969
969
  CREATE INDEX IF NOT EXISTS model_bindings_model_idx
970
970
  ON model_bindings(model_artifact_lineage_id, updated_at DESC);
971
- `)}c(Td,"createTrainingReceiptAndModelBindingTables");async function fd(a){await a(`
971
+ `)}c(dd,"createTrainingReceiptAndModelBindingTables");async function cd(a){await a(`
972
972
  CREATE TABLE IF NOT EXISTS preference_comparison_releases (
973
973
  id TEXT PRIMARY KEY,
974
974
  taskset_id TEXT NOT NULL,
@@ -1024,7 +1024,7 @@ privileged expected outcome.
1024
1024
  ON preference_comparison_calibrations(release_id, report_hash);
1025
1025
  CREATE INDEX IF NOT EXISTS preference_comparison_calibration_taskset_idx
1026
1026
  ON preference_comparison_calibrations(taskset_id, created_at DESC);
1027
- `)}c(fd,"createPreferenceComparisonTables");async function Ed(a){(await a.all("PRAGMA table_info(training_sources)",[])).some(t=>t.name==="source_kind")||await a.exec(`
1027
+ `)}c(cd,"createPreferenceComparisonTables");async function ld(a){(await a.all("PRAGMA table_info(training_sources)",[])).some(t=>t.name==="source_kind")||await a.exec(`
1028
1028
  DROP INDEX IF EXISTS training_sources_profile_updated_idx;
1029
1029
  DROP INDEX IF EXISTS training_sources_session_idx;
1030
1030
  ALTER TABLE training_sources RENAME TO training_sources_legacy;
@@ -1096,7 +1096,7 @@ privileged expected outcome.
1096
1096
  CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_taskset_revision_idx ON dataset_artifacts(taskset_id, taskset_revision);
1097
1097
  CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_content_hash_idx ON dataset_artifacts(content_hash);
1098
1098
  CREATE INDEX IF NOT EXISTS dataset_artifacts_profile_updated_idx ON dataset_artifacts(profile_id, updated_at DESC);
1099
- `)}c(Ed,"createDatasetImportTables");async function _d(a){await a(`
1099
+ `)}c(ld,"createDatasetImportTables");async function pd(a){await a(`
1100
1100
  CREATE TABLE IF NOT EXISTS sidebar_file_bookmarks (
1101
1101
  scope TEXT NOT NULL,
1102
1102
  workspace_kind TEXT NOT NULL,
@@ -1113,7 +1113,7 @@ privileged expected outcome.
1113
1113
 
1114
1114
  CREATE INDEX IF NOT EXISTS sidebar_file_bookmarks_scope_status_order_idx
1115
1115
  ON sidebar_file_bookmarks(scope, status, sort_order, updated_at);
1116
- `)}c(_d,"createSidebarFileBookmarkTables");async function hd(a){await a(`
1116
+ `)}c(pd,"createSidebarFileBookmarkTables");async function ud(a){await a(`
1117
1117
  CREATE TABLE IF NOT EXISTS chat_workflows (
1118
1118
  id TEXT PRIMARY KEY,
1119
1119
  session_id TEXT NOT NULL,
@@ -1145,7 +1145,7 @@ privileged expected outcome.
1145
1145
  ON chat_workflow_runs(workflow_id, scheduled_for, trigger);
1146
1146
  CREATE INDEX IF NOT EXISTS chat_workflow_runs_workflow_idx
1147
1147
  ON chat_workflow_runs(workflow_id, created_at DESC);
1148
- `)}c(hd,"createChatWorkflowTables");async function gd(a){await a(`
1148
+ `)}c(ud,"createChatWorkflowTables");async function md(a){await a(`
1149
1149
  CREATE TABLE IF NOT EXISTS harness_workspaces (
1150
1150
  id TEXT PRIMARY KEY,
1151
1151
  owner_kind TEXT NOT NULL,
@@ -1306,10 +1306,10 @@ privileged expected outcome.
1306
1306
 
1307
1307
  CREATE INDEX IF NOT EXISTS harness_memory_revisions_workspace_created_idx
1308
1308
  ON harness_memory_revisions(workspace_id, created_at DESC);
1309
- `)}c(gd,"createHarnessWorkspaceTables");import{DatabaseSync as Sl}from"node:sqlite";function wd(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}c(wd,"assertSupportedNodeSqliteRuntime");function hr(a=[]){return a.map(kl)}c(hr,"normalizeSqliteParameters");function Rd(a){return a.map(e=>Us(e))}c(Rd,"normalizeSqliteRows");function Us(a){return Object.fromEntries(Object.entries(a).map(([e,t])=>[e,Nl(t)]))}c(Us,"normalizeSqliteRow");function kl(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}`)}c(kl,"normalizeSqliteParameter");function Nl(a){return a instanceof Uint8Array&&!Buffer.isBuffer(a)?Buffer.from(a):a}c(Nl,"normalizeSqliteOutput");var vl=1e3,Fs=class{static{c(this,"NodeSqliteConnection")}#e;constructor(e){wd(),this.#e=new Sl(e,{allowBareNamedParameters:!0,allowUnknownNamedParameters:!1,enableDoubleQuotedStringLiterals:!1,enableForeignKeyConstraints:!0,readBigInts:!1,returnArrays:!1,timeout:vl})}exec(e){this.#e.exec(e)}run(e,t=[]){this.#e.prepare(e).run(...hr(t))}all(e,t=[]){let r=this.#e.prepare(e).all(...hr(t));return Rd(r)}get(e,t=[]){let r=this.#e.prepare(e).get(...hr(t));return r?Us(r):null}close(){this.#e.close()}};function yd(a){return new Fs(a)}c(yd,"openNodeSqliteConnection");var Il=[50,100,200,400,800],Ta=class extends Error{static{c(this,"SqliteIntegrityError")}constructor(e){super(e),this.name="SqliteIntegrityError"}};function kd(a){if(a instanceof Ta)return!0;let e=Sd(a);if(e==="SQLITE_CORRUPT"||e==="SQLITE_NOTADB")return!0;let t=vd(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")}c(kd,"isConfirmedSqliteCorruption");async function Nd(a){for(let e=0;;e+=1)try{await a.check();return}catch(t){let r=Il[e];if(!Ol(t)||r===void 0)throw t;a.onRetry?.({attempt:e+1,retryDelayMs:r,error:t}),await new Promise(s=>setTimeout(s,r))}}c(Nd,"retrySqliteHealthCheck");function Sd(a){return!a||typeof a!="object"||!("code"in a)?null:typeof a.code=="string"?a.code.toUpperCase():null}c(Sd,"sqliteErrorCode");function vd(a){return a instanceof Error?a.message.toLowerCase():String(a).toLowerCase()}c(vd,"sqliteErrorMessage");function Ol(a){let e=Sd(a);if(e==="SQLITE_BUSY"||e==="SQLITE_LOCKED")return!0;let t=vd(a);return t.includes("database is locked")||t.includes("database is busy")}c(Ol,"isTransientSqliteAvailabilityError");function lE(a){return JSON.parse(a.payload)}c(lE,"localAgentScheduleFromRow");function pE(a){return Es.parse({...JSON.parse(a.payload),updatedAt:a.updated_at})}c(pE,"subagentRunFromRow");function uE(a,e){let t=Es.parse({...a,updatedAt:e});return[t.id,t.parentSessionId,t.parentTurnId,t.childSessionId,t.roleId,t.status,JSON.stringify(t),t.createdAt,e]}c(uE,"subagentRunParams");function mE(a){return Vn.parse(JSON.parse(a.payload))}c(mE,"subagentMessageFromRow");function TE(a){return[a.id,a.fromRunId,a.toRunId,a.toRole,a.kind,JSON.stringify(a),a.createdAt]}c(TE,"subagentMessageParams");function fE(a){return[a.id,a.localProjectId,a.scheduleName,a.enabled?1:0,a.nextRunAt,JSON.stringify(a),a.createdAt,a.updatedAt]}c(fE,"localAgentScheduleParams");function EE(a){return JSON.parse(a.payload)}c(EE,"localAgentScheduleRunFromRow");function _E(a){return[a.id,a.scheduleId,a.localProjectId,a.scheduleName,a.scheduledFor,a.trigger,a.status,JSON.stringify(a),a.createdAt,a.updatedAt]}c(_E,"localAgentScheduleRunParams");function hE(a){return Zn.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)})}c(hE,"modelUsageRecordFromRow");function gE(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)]}c(gE,"modelUsageRecordParams");function Id(){return new Date().toISOString().replace(/\D/g,"").slice(0,14)}c(Id,"timestampForPath");function wE(a,e){return{...fr(JSON.parse(a)),sequence:e}}c(wE,"runtimeEventWithSequence");function Od(a){return gr({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})}c(Od,"threadDetailProjectionFromRow");function gr(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}}c(gr,"threadDetailProjectionPayload");var Ld=[{version:1,run:c(a=>a.createSchema(),"run")},{version:2,run:c(a=>a.createHotQueryIndexes(),"run")},{version:3,run:c(a=>a.createReadModelTables(),"run")},{version:4,run:c(async()=>{},"run")},{version:5,run:c(async()=>{},"run")},{version:6,run:c(async()=>{},"run")},{version:7,run:c(a=>a.createModelUsageTables(),"run")},{version:8,run:c(a=>a.createLocalAgentScheduleTables(),"run")},{version:9,run:c(a=>a.createSubagentTables(),"run")},{version:10,run:c(async()=>{},"run")},{version:11,run:c(a=>a.createTrainingTables(),"run")},{version:12,run:c(a=>a.createTaskCreationProjectionTables(),"run")},{version:13,run:c(a=>a.createGraderAuditTables(),"run")},{version:14,run:c(a=>a.createTaskAttemptArtifactTables(),"run")},{version:15,run:c(a=>a.createTrainingChatSearchTables(),"run")},{version:16,run:c(a=>a.resetTrainingChatSearchForProgressiveIndexing(),"run")},{version:17,run:c(a=>a.createTaskMinerRunTables(),"run")},{version:19,run:c(a=>a.createCreateImproveRunTables(),"run")},{version:20,run:c(a=>a.createTrainingReceiptAndModelBindingTables(),"run")},{version:21,run:c(a=>a.createTasksetRevisionTables(),"run")},{version:24,run:c(a=>a.resetLegacySubagentTransportState(),"run")},{version:25,run:c(a=>a.resetLegacySubagentRuntimeEvents(),"run")},{version:26,run:c(a=>a.createDatasetImportTables(),"run")},{version:28,run:c(a=>a.createSidebarFileBookmarkTables(),"run")},{version:29,run:c(a=>a.createModelBuildDraftTables(),"run")},{version:30,run:c(a=>a.createModelProjectTables(),"run")},{version:31,run:c(a=>a.createModelLifecycleTables(),"run")},{version:32,run:c(a=>a.createTrainingTables(),"run")},{version:33,run:c(a=>a.retireGoalAndInsightsStorage(),"run")},{version:34,run:c(async()=>{},"run")},{version:35,run:c(a=>a.createWorkEvidenceTables(),"run")},{version:36,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:37,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:38,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:39,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:40,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:41,run:c(a=>a.createTrainingTables(),"run")},{version:43,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:44,run:c(a=>a.createModelUsageTables(),"run")},{version:45,run:c(a=>a.createPreferenceComparisonTables(),"run")},{version:46,run:c(a=>a.createTasksetDraftTables(),"run")},{version:47,run:c(a=>a.createTrainingTables(),"run")},{version:48,run:c(a=>a.createTrainingTables(),"run")},{version:49,run:c(a=>a.consolidateModelProjectTrainingSetup(),"run")},{version:50,run:c(a=>a.repairUnverifiableLearnedPreferenceBindings(),"run")},{version:51,run:c(a=>a.createTrainingTables(),"run")},{version:52,run:c(a=>a.allowModelRunsWithoutVersion(),"run")},{version:53,run:c(a=>a.createTrainingTables(),"run")},{version:54,run:c(a=>a.createTrainingTables(),"run")},{version:55,run:c(a=>a.createTrainingTables(),"run")},{version:56,run:c(a=>a.createChatWorkflowTables(),"run")},{version:57,run:c(a=>a.createLearningTables(),"run")},{version:58,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:59,run:c(a=>a.createLearningTables(),"run")},{version:60,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:61,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:62,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:63,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:64,run:c(a=>a.createTaskInboxTables(),"run")},{version:65,run:c(a=>a.createTrainingTables(),"run")},{version:66,run:c(a=>a.createTrainingTables(),"run")}];async function bd(a){await a(`
1309
+ `)}c(md,"createHarnessWorkspaceTables");import{DatabaseSync as gl}from"node:sqlite";function Td(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}c(Td,"assertSupportedNodeSqliteRuntime");function Er(a=[]){return a.map(_l)}c(Er,"normalizeSqliteParameters");function Ed(a){return a.map(e=>Ds(e))}c(Ed,"normalizeSqliteRows");function Ds(a){return Object.fromEntries(Object.entries(a).map(([e,t])=>[e,hl(t)]))}c(Ds,"normalizeSqliteRow");function _l(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}`)}c(_l,"normalizeSqliteParameter");function hl(a){return a instanceof Uint8Array&&!Buffer.isBuffer(a)?Buffer.from(a):a}c(hl,"normalizeSqliteOutput");var wl=1e3,Hs=class{static{c(this,"NodeSqliteConnection")}#e;constructor(e){Td(),this.#e=new gl(e,{allowBareNamedParameters:!0,allowUnknownNamedParameters:!1,enableDoubleQuotedStringLiterals:!1,enableForeignKeyConstraints:!0,readBigInts:!1,returnArrays:!1,timeout:wl})}exec(e){this.#e.exec(e)}run(e,t=[]){this.#e.prepare(e).run(...Er(t))}all(e,t=[]){let r=this.#e.prepare(e).all(...Er(t));return Ed(r)}get(e,t=[]){let r=this.#e.prepare(e).get(...Er(t));return r?Ds(r):null}close(){this.#e.close()}};function fd(a){return new Hs(a)}c(fd,"openNodeSqliteConnection");var Rl=[50,100,200,400,800],pa=class extends Error{static{c(this,"SqliteIntegrityError")}constructor(e){super(e),this.name="SqliteIntegrityError"}};function _d(a){if(a instanceof pa)return!0;let e=gd(a);if(e==="SQLITE_CORRUPT"||e==="SQLITE_NOTADB")return!0;let t=wd(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")}c(_d,"isConfirmedSqliteCorruption");async function hd(a){for(let e=0;;e+=1)try{await a.check();return}catch(t){let r=Rl[e];if(!yl(t)||r===void 0)throw t;a.onRetry?.({attempt:e+1,retryDelayMs:r,error:t}),await new Promise(s=>setTimeout(s,r))}}c(hd,"retrySqliteHealthCheck");function gd(a){return!a||typeof a!="object"||!("code"in a)?null:typeof a.code=="string"?a.code.toUpperCase():null}c(gd,"sqliteErrorCode");function wd(a){return a instanceof Error?a.message.toLowerCase():String(a).toLowerCase()}c(wd,"sqliteErrorMessage");function yl(a){let e=gd(a);if(e==="SQLITE_BUSY"||e==="SQLITE_LOCKED")return!0;let t=wd(a);return t.includes("database is locked")||t.includes("database is busy")}c(yl,"isTransientSqliteAvailabilityError");function WE(a){return JSON.parse(a.payload)}c(WE,"localAgentScheduleFromRow");function YE(a){return Ts.parse({...JSON.parse(a.payload),updatedAt:a.updated_at})}c(YE,"subagentRunFromRow");function KE(a,e){let t=Ts.parse({...a,updatedAt:e});return[t.id,t.parentSessionId,t.parentTurnId,t.childSessionId,t.roleId,t.status,JSON.stringify(t),t.createdAt,e]}c(KE,"subagentRunParams");function $E(a){return $n.parse(JSON.parse(a.payload))}c($E,"subagentMessageFromRow");function JE(a){return[a.id,a.fromRunId,a.toRunId,a.toRole,a.kind,JSON.stringify(a),a.createdAt]}c(JE,"subagentMessageParams");function VE(a){return[a.id,a.localProjectId,a.scheduleName,a.enabled?1:0,a.nextRunAt,JSON.stringify(a),a.createdAt,a.updatedAt]}c(VE,"localAgentScheduleParams");function zE(a){return JSON.parse(a.payload)}c(zE,"localAgentScheduleRunFromRow");function GE(a){return[a.id,a.scheduleId,a.localProjectId,a.scheduleName,a.scheduledFor,a.trigger,a.status,JSON.stringify(a),a.createdAt,a.updatedAt]}c(GE,"localAgentScheduleRunParams");function QE(a){return Gn.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)})}c(QE,"modelUsageRecordFromRow");function ZE(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)]}c(ZE,"modelUsageRecordParams");function Rd(){return new Date().toISOString().replace(/\D/g,"").slice(0,14)}c(Rd,"timestampForPath");function ef(a,e){return{...ur(JSON.parse(a)),sequence:e}}c(ef,"runtimeEventWithSequence");function yd(a){return fr({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})}c(yd,"threadDetailProjectionFromRow");function fr(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}}c(fr,"threadDetailProjectionPayload");var kd=[{version:1,run:c(a=>a.createSchema(),"run")},{version:2,run:c(a=>a.createHotQueryIndexes(),"run")},{version:3,run:c(a=>a.createReadModelTables(),"run")},{version:4,run:c(async()=>{},"run")},{version:5,run:c(async()=>{},"run")},{version:6,run:c(async()=>{},"run")},{version:7,run:c(a=>a.createModelUsageTables(),"run")},{version:8,run:c(a=>a.createLocalAgentScheduleTables(),"run")},{version:9,run:c(a=>a.createSubagentTables(),"run")},{version:10,run:c(async()=>{},"run")},{version:11,run:c(a=>a.createTrainingTables(),"run")},{version:12,run:c(a=>a.createTaskCreationProjectionTables(),"run")},{version:13,run:c(a=>a.createGraderAuditTables(),"run")},{version:14,run:c(a=>a.createTaskAttemptArtifactTables(),"run")},{version:15,run:c(a=>a.createTrainingChatSearchTables(),"run")},{version:16,run:c(a=>a.resetTrainingChatSearchForProgressiveIndexing(),"run")},{version:17,run:c(a=>a.createTaskMinerRunTables(),"run")},{version:19,run:c(a=>a.createCreateImproveRunTables(),"run")},{version:20,run:c(a=>a.createTrainingReceiptAndModelBindingTables(),"run")},{version:21,run:c(a=>a.createTasksetRevisionTables(),"run")},{version:24,run:c(a=>a.resetLegacySubagentTransportState(),"run")},{version:25,run:c(a=>a.resetLegacySubagentRuntimeEvents(),"run")},{version:26,run:c(a=>a.createDatasetImportTables(),"run")},{version:28,run:c(a=>a.createSidebarFileBookmarkTables(),"run")},{version:29,run:c(a=>a.createModelBuildDraftTables(),"run")},{version:30,run:c(a=>a.createModelProjectTables(),"run")},{version:31,run:c(a=>a.createModelLifecycleTables(),"run")},{version:32,run:c(a=>a.createTrainingTables(),"run")},{version:33,run:c(a=>a.retireGoalAndInsightsStorage(),"run")},{version:34,run:c(async()=>{},"run")},{version:35,run:c(a=>a.createWorkEvidenceTables(),"run")},{version:36,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:37,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:38,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:39,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:40,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:41,run:c(a=>a.createTrainingTables(),"run")},{version:43,run:c(a=>a.createHarnessWorkspaceTables(),"run")},{version:44,run:c(a=>a.createModelUsageTables(),"run")},{version:45,run:c(a=>a.createPreferenceComparisonTables(),"run")},{version:46,run:c(a=>a.createTasksetDraftTables(),"run")},{version:47,run:c(a=>a.createTrainingTables(),"run")},{version:48,run:c(a=>a.createTrainingTables(),"run")},{version:49,run:c(a=>a.consolidateModelProjectTrainingSetup(),"run")},{version:50,run:c(a=>a.repairUnverifiableLearnedPreferenceBindings(),"run")},{version:51,run:c(a=>a.createTrainingTables(),"run")},{version:52,run:c(a=>a.allowModelRunsWithoutVersion(),"run")},{version:53,run:c(a=>a.createTrainingTables(),"run")},{version:54,run:c(a=>a.createTrainingTables(),"run")},{version:55,run:c(a=>a.createTrainingTables(),"run")},{version:56,run:c(a=>a.createChatWorkflowTables(),"run")},{version:57,run:c(a=>a.createLearningTables(),"run")},{version:58,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:59,run:c(a=>a.createLearningTables(),"run")},{version:60,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:61,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:62,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:63,run:c(a=>a.createModelProjectAuthoringTables(),"run")},{version:64,run:c(a=>a.createTaskInboxTables(),"run")},{version:65,run:c(a=>a.createTrainingTables(),"run")},{version:66,run:c(a=>a.createTrainingTables(),"run")}];async function Nd(a){await a(`
1310
1310
  DELETE FROM subagent_messages;
1311
1311
  DELETE FROM subagent_runs;
1312
- `)}c(bd,"resetLegacySubagentTransportState");async function Ad(a,e){await a("DELETE FROM events WHERE name LIKE 'subagent.%'",[]),await e()}c(Ad,"resetLegacySubagentRuntimeEvents");async function Cd(a){await a.exec(`
1312
+ `)}c(Nd,"resetLegacySubagentTransportState");async function Sd(a,e){await a("DELETE FROM events WHERE name LIKE 'subagent.%'",[]),await e()}c(Sd,"resetLegacySubagentRuntimeEvents");async function vd(a){await a.exec(`
1313
1313
  CREATE TABLE IF NOT EXISTS model_projects (
1314
1314
  id TEXT PRIMARY KEY,
1315
1315
  profile_id TEXT NOT NULL,
@@ -1319,13 +1319,13 @@ privileged expected outcome.
1319
1319
  );
1320
1320
  CREATE INDEX IF NOT EXISTS model_projects_profile_updated_idx
1321
1321
  ON model_projects(profile_id, updated_at DESC);
1322
- `);let e=await a.all("SELECT payload FROM model_build_drafts ORDER BY updated_at ASC");for(let t of e){let r=JSON.parse(t.payload),s=String(r.createdAt),i=String(r.updatedAt),n=String(r.modelId),d=String(r.profileId),o={schemaVersion:"openpond.modelProject.v2",id:n,profileId:d,revision:1,name:String(r.name??"Untitled Model"),objective:typeof r.objective=="string"?r.objective:null,defaultBaseModel:r.baseModel??null,defaultDestinationId:r.destinationId??null,trainingSetup:{tasksetRef:r.tasksetRef??null,harnessRelease:null,tasksetRelease:null,baseModel:r.baseModel??null,method:r.method??null,destinationId:r.destinationId??null,managedRolloutPlacement:r.managedRolloutPlacement??"remote",runPreset:r.runPreset??null,recipe:r.recipe??null,preferredMaximumSpendUsd:null,preferredRetentionDays:null},hosted:null,tasksetSyncs:[],createdAt:s,updatedAt:i};await a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at)
1322
+ `);let e=await a.all("SELECT payload FROM model_build_drafts ORDER BY updated_at ASC");for(let t of e){let r=JSON.parse(t.payload),s=String(r.createdAt),i=String(r.updatedAt),n=String(r.modelId),o=String(r.profileId),d={schemaVersion:"openpond.modelProject.v2",id:n,profileId:o,revision:1,name:String(r.name??"Untitled Model"),objective:typeof r.objective=="string"?r.objective:null,defaultBaseModel:r.baseModel??null,defaultDestinationId:r.destinationId??null,trainingSetup:{tasksetRef:r.tasksetRef??null,harnessRelease:null,tasksetRelease:null,baseModel:r.baseModel??null,method:r.method??null,destinationId:r.destinationId??null,managedRolloutPlacement:r.managedRolloutPlacement??"remote",runPreset:r.runPreset??null,recipe:r.recipe??null,preferredMaximumSpendUsd:null,preferredRetentionDays:null},hosted:null,tasksetSyncs:[],createdAt:s,updatedAt:i};await a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at)
1323
1323
  VALUES (?, ?, ?, ?, ?)
1324
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[n,d,JSON.stringify(o),s,i])}await a.exec(`
1324
+ ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[n,o,JSON.stringify(d),s,i])}await a.exec(`
1325
1325
  DROP INDEX IF EXISTS model_build_drafts_profile_updated_idx;
1326
1326
  DROP INDEX IF EXISTS model_build_drafts_model_idx;
1327
1327
  DROP TABLE IF EXISTS model_build_drafts;
1328
- `)}c(Cd,"createModelProjectTables");async function Pd(a){await a.exec(`
1328
+ `)}c(vd,"createModelProjectTables");async function Id(a){await a.exec(`
1329
1329
  ALTER TABLE model_runs RENAME TO model_runs_before_nullable_version;
1330
1330
  CREATE TABLE model_runs (
1331
1331
  id TEXT PRIMARY KEY,
@@ -1349,11 +1349,11 @@ privileged expected outcome.
1349
1349
  CREATE INDEX model_runs_profile_updated_idx ON model_runs(profile_id, updated_at DESC);
1350
1350
  CREATE INDEX model_runs_model_updated_idx ON model_runs(model_id, updated_at DESC);
1351
1351
  CREATE INDEX model_runs_taskset_updated_idx ON model_runs(taskset_id, updated_at DESC);
1352
- `)}c(Pd,"allowModelRunsWithoutVersion");var js={tasksetRef:null,harnessRelease:null,tasksetRelease:null,baseModel:null,method:null,destinationId:null,managedRolloutPlacement:"remote",runPreset:null,recipe:null,preferredMaximumSpendUsd:null,preferredRetentionDays:null};async function xd(a){let e="model_run_drafts",t=await a.all("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",[e]),r=new Map;if(t.length>0){let i=await a.all(`SELECT payload, updated_at FROM ${e} ORDER BY updated_at DESC`);for(let n of i){let d=JSON.parse(n.payload),o=typeof d.modelId=="string"?d.modelId:null;o&&!r.has(o)&&r.set(o,d)}}let s=await a.all("SELECT payload, updated_at FROM model_projects ORDER BY updated_at ASC");for(let i of s){let n=JSON.parse(i.payload),d=String(n.id),o=r.get(d),m=Bs(n.trainingSetup)?n.trainingSetup:js,l=o&&typeof o.updatedAt=="string"?o.updatedAt:null,f=!!(o&&l&&l>=i.updated_at),p=f&&o?{...js,...m,tasksetRef:o.tasksetRef??m.tasksetRef??null,harnessRelease:o.harnessRelease??m.harnessRelease??null,tasksetRelease:o.tasksetRelease??m.tasksetRelease??null,baseModel:o.baseModel??m.baseModel??null,method:o.method??m.method??null,destinationId:o.destinationId??m.destinationId??null,managedRolloutPlacement:o.managedRolloutPlacement??m.managedRolloutPlacement??"remote",runPreset:o.runPreset??m.runPreset??null,recipe:o.recipe??m.recipe??null}:{...js,...m},u=wr(p).value,T=typeof n.revision=="number"&&Number.isInteger(n.revision)?n.revision:1,h=f&&l?l:String(n.updatedAt??i.updated_at),g=B.parse({...n,schemaVersion:"openpond.modelProject.v2",revision:T+1,trainingSetup:u,hosted:n.hosted??null,tasksetSyncs:n.tasksetSyncs??[],updatedAt:h});await a.run("UPDATE model_projects SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(g),g.updatedAt,g.id])}await a.exec(`
1352
+ `)}c(Id,"allowModelRunsWithoutVersion");var Us={tasksetRef:null,harnessRelease:null,tasksetRelease:null,baseModel:null,method:null,destinationId:null,managedRolloutPlacement:"remote",runPreset:null,recipe:null,preferredMaximumSpendUsd:null,preferredRetentionDays:null};async function Od(a){let e="model_run_drafts",t=await a.all("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",[e]),r=new Map;if(t.length>0){let i=await a.all(`SELECT payload, updated_at FROM ${e} ORDER BY updated_at DESC`);for(let n of i){let o=JSON.parse(n.payload),d=typeof o.modelId=="string"?o.modelId:null;d&&!r.has(d)&&r.set(d,o)}}let s=await a.all("SELECT payload, updated_at FROM model_projects ORDER BY updated_at ASC");for(let i of s){let n=JSON.parse(i.payload),o=String(n.id),d=r.get(o),m=Fs(n.trainingSetup)?n.trainingSetup:Us,l=d&&typeof d.updatedAt=="string"?d.updatedAt:null,E=!!(d&&l&&l>=i.updated_at),p=E&&d?{...Us,...m,tasksetRef:d.tasksetRef??m.tasksetRef??null,harnessRelease:d.harnessRelease??m.harnessRelease??null,tasksetRelease:d.tasksetRelease??m.tasksetRelease??null,baseModel:d.baseModel??m.baseModel??null,method:d.method??m.method??null,destinationId:d.destinationId??m.destinationId??null,managedRolloutPlacement:d.managedRolloutPlacement??m.managedRolloutPlacement??"remote",runPreset:d.runPreset??m.runPreset??null,recipe:d.recipe??m.recipe??null}:{...Us,...m},u=_r(p).value,T=typeof n.revision=="number"&&Number.isInteger(n.revision)?n.revision:1,h=E&&l?l:String(n.updatedAt??i.updated_at),g=B.parse({...n,schemaVersion:"openpond.modelProject.v2",revision:T+1,trainingSetup:u,hosted:n.hosted??null,tasksetSyncs:n.tasksetSyncs??[],updatedAt:h});await a.run("UPDATE model_projects SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(g),g.updatedAt,g.id])}await a.exec(`
1353
1353
  DROP INDEX IF EXISTS model_run_drafts_profile_updated_idx;
1354
1354
  DROP INDEX IF EXISTS model_run_drafts_model_idx;
1355
1355
  DROP TABLE IF EXISTS model_run_drafts;
1356
- `)}c(xd,"consolidateModelProjectTrainingSetup");function wr(a){if(Array.isArray(a)){let r=!1,s=a.map(i=>{let n=wr(i);return r||=n.changed,n.value});return{value:r?s:a,changed:r}}if(!Bs(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=Bs(s)?Object.fromEntries(Object.entries(s).filter(([o])=>o!=="qualificationKind")):s,d=io.safeParse(n);t[r]=d.success?d.data:null,e||=!d.success||n!==s;continue}let i=wr(s);t[r]=i.value,e||=i.changed}return{value:e?t:a,changed:e}}c(wr,"sanitizeUnverifiableLearnedPreferenceBindings");async function Md(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=wr(JSON.parse(s.payload));i.changed&&await a.run(`UPDATE ${e} SET payload = ? WHERE id = ?`,[JSON.stringify(i.value),s.id])}}}c(Md,"repairUnverifiableLearnedPreferenceBindings");function Bs(a){return!!(a&&typeof a=="object"&&!Array.isArray(a))}c(Bs,"isRecord");async function Xd(a){await a.exec(`
1356
+ `)}c(Od,"consolidateModelProjectTrainingSetup");function _r(a){if(Array.isArray(a)){let r=!1,s=a.map(i=>{let n=_r(i);return r||=n.changed,n.value});return{value:r?s:a,changed:r}}if(!Fs(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=Fs(s)?Object.fromEntries(Object.entries(s).filter(([d])=>d!=="qualificationKind")):s,o=ro.safeParse(n);t[r]=o.success?o.data:null,e||=!o.success||n!==s;continue}let i=_r(s);t[r]=i.value,e||=i.changed}return{value:e?t:a,changed:e}}c(_r,"sanitizeUnverifiableLearnedPreferenceBindings");async function Ld(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=_r(JSON.parse(s.payload));i.changed&&await a.run(`UPDATE ${e} SET payload = ? WHERE id = ?`,[JSON.stringify(i.value),s.id])}}}c(Ld,"repairUnverifiableLearnedPreferenceBindings");function Fs(a){return!!(a&&typeof a=="object"&&!Array.isArray(a))}c(Fs,"isRecord");async function Ad(a){await a.exec(`
1357
1357
  CREATE TABLE IF NOT EXISTS model_versions (
1358
1358
  id TEXT PRIMARY KEY,
1359
1359
  model_id TEXT NOT NULL,
@@ -1386,22 +1386,22 @@ privileged expected outcome.
1386
1386
  ON model_runs(model_id, updated_at DESC);
1387
1387
  CREATE INDEX IF NOT EXISTS model_runs_taskset_updated_idx
1388
1388
  ON model_runs(taskset_id, updated_at DESC);
1389
- `)}c(Xd,"createModelLifecycleTables");async function Dd(a){let t=(await a.all("SELECT id, payload FROM sessions")).flatMap(o=>JSON.parse(o.payload).systemKind==="openpond.insights"?[o.id]:[]),r=new Set(t),s=(await a.all("SELECT * FROM subagent_runs")).filter(o=>!r.has(o.parent_session_id)&&(!o.child_session_id||!r.has(o.child_session_id))),i=new Set(s.map(o=>o.id)),n=(await a.all("SELECT * FROM subagent_messages")).filter(o=>i.has(o.from_run_id)&&(!o.to_run_id||i.has(o.to_run_id)));for(let o of t)await a.run("DELETE FROM model_usage_records WHERE session_id = ?",[o]),await a.run("DELETE FROM projection_thread_details WHERE session_id = ?",[o]),await a.run("DELETE FROM projection_session_shells WHERE id = ?",[o]),await a.run("DELETE FROM projection_approvals WHERE session_id = ?",[o]),await a.run("DELETE FROM projection_latest_turns WHERE session_id = ?",[o]),await a.run("DELETE FROM approvals WHERE session_id = ?",[o]),await a.run("DELETE FROM events WHERE session_id = ?",[o]),await a.run("DELETE FROM turns WHERE session_id = ?",[o]),await a.run("DELETE FROM sessions WHERE id = ?",[o]);await a.run(`DELETE FROM model_usage_records
1390
- WHERE request_kind IN ('insights_scan', 'insights_question', 'goal_control')`,[]);let d=await a.get(`SELECT payload FROM cache_entries
1391
- WHERE type = 'local.projects' AND cache_key = 'v1'`,[]);if(d){let o=JSON.parse(d.payload);if(Array.isArray(o)){let m=o.filter(l=>{if(!l||typeof l!="object"||Array.isArray(l))return!0;let f=l;return f.id!=="system_openpond_insights"&&f.systemKind!=="openpond.insights"});await a.run(`UPDATE cache_entries SET payload = ?
1389
+ `)}c(Ad,"createModelLifecycleTables");async function bd(a){let t=(await a.all("SELECT id, payload FROM sessions")).flatMap(d=>JSON.parse(d.payload).systemKind==="openpond.insights"?[d.id]:[]),r=new Set(t),s=(await a.all("SELECT * FROM subagent_runs")).filter(d=>!r.has(d.parent_session_id)&&(!d.child_session_id||!r.has(d.child_session_id))),i=new Set(s.map(d=>d.id)),n=(await a.all("SELECT * FROM subagent_messages")).filter(d=>i.has(d.from_run_id)&&(!d.to_run_id||i.has(d.to_run_id)));for(let d of t)await a.run("DELETE FROM model_usage_records WHERE session_id = ?",[d]),await a.run("DELETE FROM projection_thread_details WHERE session_id = ?",[d]),await a.run("DELETE FROM projection_session_shells WHERE id = ?",[d]),await a.run("DELETE FROM projection_approvals WHERE session_id = ?",[d]),await a.run("DELETE FROM projection_latest_turns WHERE session_id = ?",[d]),await a.run("DELETE FROM approvals WHERE session_id = ?",[d]),await a.run("DELETE FROM events WHERE session_id = ?",[d]),await a.run("DELETE FROM turns WHERE session_id = ?",[d]),await a.run("DELETE FROM sessions WHERE id = ?",[d]);await a.run(`DELETE FROM model_usage_records
1390
+ WHERE request_kind IN ('insights_scan', 'insights_question', 'goal_control')`,[]);let o=await a.get(`SELECT payload FROM cache_entries
1391
+ WHERE type = 'local.projects' AND cache_key = 'v1'`,[]);if(o){let d=JSON.parse(o.payload);if(Array.isArray(d)){let m=d.filter(l=>{if(!l||typeof l!="object"||Array.isArray(l))return!0;let E=l;return E.id!=="system_openpond_insights"&&E.systemKind!=="openpond.insights"});await a.run(`UPDATE cache_entries SET payload = ?
1392
1392
  WHERE type = 'local.projects' AND cache_key = 'v1'`,[JSON.stringify(m)])}}await a.exec(`
1393
1393
  DROP TABLE IF EXISTS insight_items;
1394
1394
  DROP TABLE IF EXISTS openpond_thread_goals;
1395
1395
  DROP TABLE IF EXISTS subagent_messages;
1396
1396
  DROP TABLE IF EXISTS subagent_runs;
1397
- `),await a.createSubagentTables();for(let o of s){let m=JSON.parse(o.payload);delete m.parentGoalId,m.peerMessages==="goal_scoped"&&(m.peerMessages="parent_scoped"),await a.run(`INSERT INTO subagent_runs (
1397
+ `),await a.createSubagentTables();for(let d of s){let m=JSON.parse(d.payload);delete m.parentGoalId,m.peerMessages==="goal_scoped"&&(m.peerMessages="parent_scoped"),await a.run(`INSERT INTO subagent_runs (
1398
1398
  id, parent_session_id, parent_turn_id, child_session_id, role_id,
1399
1399
  status, payload, created_at, updated_at
1400
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[o.id,o.parent_session_id,o.parent_turn_id,o.child_session_id,o.role_id,o.status,JSON.stringify(m),o.created_at,o.updated_at])}for(let o of n){let m=JSON.parse(o.payload);delete m.parentGoalId,await a.run(`INSERT INTO subagent_messages (
1400
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[d.id,d.parent_session_id,d.parent_turn_id,d.child_session_id,d.role_id,d.status,JSON.stringify(m),d.created_at,d.updated_at])}for(let d of n){let m=JSON.parse(d.payload);delete m.parentGoalId,await a.run(`INSERT INTO subagent_messages (
1401
1401
  id, from_run_id, to_run_id, to_role, kind, payload, created_at
1402
- ) VALUES (?, ?, ?, ?, ?, ?, ?)`,[o.id,o.from_run_id,o.to_run_id,o.to_role,o.kind,JSON.stringify(m),o.created_at])}await a.run(`UPDATE cache_entries
1402
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`,[d.id,d.from_run_id,d.to_run_id,d.to_role,d.kind,JSON.stringify(m),d.created_at])}await a.run(`UPDATE cache_entries
1403
1403
  SET payload = replace(payload, '"goal_scoped"', '"parent_scoped"')
1404
- WHERE instr(payload, '"goal_scoped"') > 0`,[])}c(Dd,"retireGoalAndInsightsStorageState");var Hd=`
1404
+ WHERE instr(payload, '"goal_scoped"') > 0`,[])}c(bd,"retireGoalAndInsightsStorageState");var Cd=`
1405
1405
  CREATE TABLE IF NOT EXISTS training_sources (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, source_kind TEXT NOT NULL, session_id TEXT, source_hash TEXT NOT NULL, repository_id TEXT, revision TEXT, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1406
1406
  CREATE INDEX IF NOT EXISTS training_sources_profile_updated_idx ON training_sources(profile_id, updated_at DESC);
1407
1407
  CREATE INDEX IF NOT EXISTS training_sources_session_idx ON training_sources(session_id);
@@ -1496,7 +1496,7 @@ privileged expected outcome.
1496
1496
  CREATE TABLE IF NOT EXISTS model_artifact_lineage (id TEXT PRIMARY KEY, artifact_id TEXT NOT NULL, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1497
1497
  CREATE UNIQUE INDEX IF NOT EXISTS model_lineage_artifact_idx ON model_artifact_lineage(artifact_id);
1498
1498
  CREATE INDEX IF NOT EXISTS model_lineage_taskset_idx ON model_artifact_lineage(taskset_id, created_at DESC);
1499
- `;var Ud=`
1499
+ `;var Pd=`
1500
1500
  CREATE TABLE IF NOT EXISTS learning_revisions (
1501
1501
  scope TEXT NOT NULL,
1502
1502
  kind TEXT NOT NULL,
@@ -1540,7 +1540,7 @@ CREATE TABLE IF NOT EXISTS learning_source_credentials (
1540
1540
  payload TEXT NOT NULL
1541
1541
  );
1542
1542
  CREATE INDEX IF NOT EXISTS learning_source_credentials_scope_idx ON learning_source_credentials (scope, source_id, id);
1543
- `;var Fd=`
1543
+ `;var xd=`
1544
1544
  CREATE TABLE IF NOT EXISTS model_taskset_draft_operations (
1545
1545
  profile_id TEXT NOT NULL,
1546
1546
  operation_id TEXT NOT NULL,
@@ -1586,7 +1586,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1586
1586
  state TEXT NOT NULL CHECK (state IN ('preparing', 'materialized', 'committed')),
1587
1587
  PRIMARY KEY (profile_id, operation_id)
1588
1588
  );
1589
- `;import{promises as qs}from"node:fs";import Ws from"node:path";var Ll=2,bl=/^state-(\d{14})-before-v(\d+)$/;async function jd(a,e=Ll){let t=Ws.join(a,"backups"),s=(await qs.readdir(t,{withFileTypes:!0}).catch(o=>{if(o.code==="ENOENT")return[];throw o})).filter(o=>o.isDirectory()&&bl.test(o.name)).map(o=>o.name).sort((o,m)=>m.localeCompare(o)),i=Math.max(2,Math.trunc(e)),n=s.slice(0,i),d=[];for(let o of s.slice(i))(await qs.stat(Ws.join(t,o))).mtimeMs>=Date.now()-30*864e5?n.push(o):d.push(o);for(let o of d)await qs.rm(Ws.join(t,o),{recursive:!0,force:!0});return{removed:d,retained:n}}c(jd,"pruneMigrationBackups");var Bd=`
1589
+ `;import{promises as js}from"node:fs";import Bs from"node:path";var kl=2,Nl=/^state-(\d{14})-before-v(\d+)$/;async function Xd(a,e=kl){let t=Bs.join(a,"backups"),s=(await js.readdir(t,{withFileTypes:!0}).catch(d=>{if(d.code==="ENOENT")return[];throw d})).filter(d=>d.isDirectory()&&Nl.test(d.name)).map(d=>d.name).sort((d,m)=>m.localeCompare(d)),i=Math.max(2,Math.trunc(e)),n=s.slice(0,i),o=[];for(let d of s.slice(i))(await js.stat(Bs.join(t,d))).mtimeMs>=Date.now()-30*864e5?n.push(d):o.push(d);for(let d of o)await js.rm(Bs.join(t,d),{recursive:!0,force:!0});return{removed:o,retained:n}}c(Xd,"pruneMigrationBackups");var Md=`
1590
1590
  CREATE TABLE IF NOT EXISTS task_inputs (
1591
1591
  sequence INTEGER PRIMARY KEY AUTOINCREMENT,
1592
1592
  id TEXT NOT NULL UNIQUE,
@@ -1650,11 +1650,11 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1650
1650
  created_at TEXT NOT NULL
1651
1651
  );
1652
1652
  CREATE INDEX IF NOT EXISTS task_completion_pending_idx ON task_completion_outbox(created_at) WHERE input_id IS NULL;
1653
- `;var qd=[0,100,250,500],Rr=class{static{c(this,"SqliteStoreCore")}async createTaskInboxTables(){await this.exec(Bd)}async createLearningTables(){await this.exec(Ud)}async createModelProjectAuthoringTables(){await this.exec(Fd)}storePath;home;data={sessions:[],turns:[],events:[],approvals:[]};ready;db=null;writeQueue=Promise.resolve();logger;constructor(e,t={}){this.home=fa.resolve(e),this.storePath=fa.join(this.home,"state","state.sqlite"),this.logger=t.logger,this.ready=this.load(e)}async recentTurns(e=2e3){await this.ready,await this.writeQueue;let t=Math.max(1,Math.min(1e4,Math.trunc(e)));return(await this.all("SELECT payload FROM turns ORDER BY sort_index DESC LIMIT ?",[t])).map(s=>JSON.parse(s.payload)).reverse()}async load(e){await Ks.mkdir(fa.dirname(this.storePath),{recursive:!0,mode:448});let t=await this.fileExists(this.storePath);await this.openDatabaseWithRecovery(),await this.runMigrations(e,t),this.data=await Zo({allPayloadRows:c((r,s)=>this.all(r,s),"allPayloadRows")}),await jd(e).then(({removed:r,retained:s})=>{r.length!==0&&this.logger?.info("sqlite migration backups pruned",{removed:r,retained:s,storePath:this.storePath})}).catch(r=>{this.logger?.warn("sqlite migration backup pruning failed",{error:r,storePath:this.storePath})})}async configureDatabase(){await this.exec(`
1653
+ `;var Dd=[0,100,250,500],hr=class{static{c(this,"SqliteStoreCore")}async createTaskInboxTables(){await this.exec(Md)}async createLearningTables(){await this.exec(Pd)}async createModelProjectAuthoringTables(){await this.exec(xd)}storePath;home;data={sessions:[],turns:[],events:[],approvals:[]};ready;db=null;writeQueue=Promise.resolve();logger;constructor(e,t={}){this.home=ua.resolve(e),this.storePath=ua.join(this.home,"state","state.sqlite"),this.logger=t.logger,this.ready=this.load(e)}async recentTurns(e=2e3){await this.ready,await this.writeQueue;let t=Math.max(1,Math.min(1e4,Math.trunc(e)));return(await this.all("SELECT payload FROM turns ORDER BY sort_index DESC LIMIT ?",[t])).map(s=>JSON.parse(s.payload)).reverse()}async load(e){await Ws.mkdir(ua.dirname(this.storePath),{recursive:!0,mode:448});let t=await this.fileExists(this.storePath);await this.openDatabaseWithRecovery(),await this.runMigrations(e,t),this.data=await $o({allPayloadRows:c((r,s)=>this.all(r,s),"allPayloadRows")}),await Xd(e).then(({removed:r,retained:s})=>{r.length!==0&&this.logger?.info("sqlite migration backups pruned",{removed:r,retained:s,storePath:this.storePath})}).catch(r=>{this.logger?.warn("sqlite migration backup pruning failed",{error:r,storePath:this.storePath})})}async configureDatabase(){await this.exec(`
1654
1654
  PRAGMA journal_mode = WAL;
1655
1655
  PRAGMA foreign_keys = ON;
1656
1656
  PRAGMA synchronous = FULL;
1657
- `)}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 Ta(`SQLite quick_check failed: ${t.join("; ")}`)}async assertHealthyDatabaseWithRetry(){await Nd({check:c(()=>this.assertHealthyDatabase(),"check"),onRetry:c(({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 Ld.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(),kd(e)?new ko({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 qd){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:qd.length,error:e}),e}async backupDatabaseFiles(e,t){let r=fa.join(e,"backups",`state-${Id()}-${t}`);await Ks.mkdir(r,{recursive:!0,mode:448});let s=So(this.storePath,!0);try{await Al(s,fa.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(dd)}async createWorkEvidenceTables(){await this.exec(`
1657
+ `)}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 pa(`SQLite quick_check failed: ${t.join("; ")}`)}async assertHealthyDatabaseWithRetry(){await hd({check:c(()=>this.assertHealthyDatabase(),"check"),onRetry:c(({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 kd.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(),_d(e)?new Ro({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 Dd){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:Dd.length,error:e}),e}async backupDatabaseFiles(e,t){let r=ua.join(e,"backups",`state-${Rd()}-${t}`);await Ws.mkdir(r,{recursive:!0,mode:448});let s=ko(this.storePath,!0);try{await Sl(s,ua.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 Ws.access(e),!0}catch{return!1}}async createSchema(){await this.exec(ad)}async createWorkEvidenceTables(){await this.exec(`
1658
1658
  CREATE TABLE IF NOT EXISTS work_evidence_receipts (
1659
1659
  id TEXT PRIMARY KEY,
1660
1660
  source_revision_hash TEXT NOT NULL UNIQUE,
@@ -1677,7 +1677,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1677
1677
  ON work_feedback_receipts(evidence_receipt_id, created_at ASC);
1678
1678
  CREATE INDEX IF NOT EXISTS work_feedback_output_idx
1679
1679
  ON work_feedback_receipts(output_revision_hash, created_at ASC);
1680
- `)}async createHarnessWorkspaceTables(){await gd(e=>this.exec(e)),await this.addColumnIfMissing("harness_evaluation_review_settings","activity_enabled","INTEGER NOT NULL DEFAULT 0"),await this.addColumnIfMissing("harness_evaluation_review_settings","activity_batch_size","INTEGER NOT NULL DEFAULT 10")}async createSidebarFileBookmarkTables(){await _d(e=>this.exec(e))}async createHotQueryIndexes(){await this.addColumnIfMissing("turns","provider_turn_id","TEXT"),await this.addColumnIfMissing("turns","status","TEXT"),await this.backfillTurnQueryColumns(),await this.exec(`
1680
+ `)}async createHarnessWorkspaceTables(){await md(e=>this.exec(e)),await this.addColumnIfMissing("harness_evaluation_review_settings","activity_enabled","INTEGER NOT NULL DEFAULT 0"),await this.addColumnIfMissing("harness_evaluation_review_settings","activity_batch_size","INTEGER NOT NULL DEFAULT 10")}async createSidebarFileBookmarkTables(){await pd(e=>this.exec(e))}async createHotQueryIndexes(){await this.addColumnIfMissing("turns","provider_turn_id","TEXT"),await this.addColumnIfMissing("turns","status","TEXT"),await this.backfillTurnQueryColumns(),await this.exec(`
1681
1681
  CREATE INDEX IF NOT EXISTS turns_session_sort_idx ON turns(session_id, sort_index DESC);
1682
1682
  CREATE INDEX IF NOT EXISTS turns_session_status_sort_idx ON turns(session_id, status, sort_index DESC);
1683
1683
  CREATE INDEX IF NOT EXISTS turns_provider_turn_id_idx ON turns(provider_turn_id);
@@ -1809,7 +1809,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1809
1809
 
1810
1810
  CREATE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_idx
1811
1811
  ON local_agent_schedule_runs(schedule_id, created_at DESC);
1812
- `)}async createChatWorkflowTables(){return hd(e=>this.exec(e))}async createSubagentTables(){await this.exec(`
1812
+ `)}async createChatWorkflowTables(){return ud(e=>this.exec(e))}async createSubagentTables(){await this.exec(`
1813
1813
  CREATE TABLE IF NOT EXISTS subagent_runs (
1814
1814
  id TEXT PRIMARY KEY,
1815
1815
  parent_session_id TEXT NOT NULL,
@@ -1840,7 +1840,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1840
1840
 
1841
1841
  CREATE INDEX IF NOT EXISTS subagent_messages_receiver_created_idx
1842
1842
  ON subagent_messages(to_run_id, to_role, created_at);
1843
- `)}async retireGoalAndInsightsStorage(){await Dd({all:c((e,t)=>this.all(e,t),"all"),get:c((e,t=[])=>this.get(e,t),"get"),run:c((e,t=[])=>this.run(e,t),"run"),exec:c(e=>this.exec(e),"exec"),createSubagentTables:c(()=>this.createSubagentTables(),"createSubagentTables")})}async resetLegacySubagentTransportState(){await bd(e=>this.exec(e))}async resetLegacySubagentRuntimeEvents(){await Ad((e,t)=>this.run(e,t),()=>this.rebuildReadModels())}async createCreateImproveRunTables(){await cd(e=>this.exec(e))}async createTrainingTables(){await this.exec(Hd)}async createTasksetDraftTables(){await this.exec(`
1843
+ `)}async retireGoalAndInsightsStorage(){await bd({all:c((e,t)=>this.all(e,t),"all"),get:c((e,t=[])=>this.get(e,t),"get"),run:c((e,t=[])=>this.run(e,t),"run"),exec:c(e=>this.exec(e),"exec"),createSubagentTables:c(()=>this.createSubagentTables(),"createSubagentTables")})}async resetLegacySubagentTransportState(){await Nd(e=>this.exec(e))}async resetLegacySubagentRuntimeEvents(){await Sd((e,t)=>this.run(e,t),()=>this.rebuildReadModels())}async createCreateImproveRunTables(){await rd(e=>this.exec(e))}async createTrainingTables(){await this.exec(Cd)}async createTasksetDraftTables(){await this.exec(`
1844
1844
  CREATE TABLE IF NOT EXISTS taskset_drafts (
1845
1845
  id TEXT PRIMARY KEY,
1846
1846
  profile_id TEXT NOT NULL,
@@ -1866,7 +1866,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1866
1866
  ON model_build_drafts(profile_id, updated_at DESC);
1867
1867
  CREATE INDEX IF NOT EXISTS model_build_drafts_model_idx
1868
1868
  ON model_build_drafts(model_id, updated_at DESC);
1869
- `)}async createModelProjectTables(){await Cd(this.modelProjectMigrationStore())}async allowModelRunsWithoutVersion(){await Pd(this.modelProjectMigrationStore())}async consolidateModelProjectTrainingSetup(){await xd(this.modelProjectMigrationStore())}modelProjectMigrationStore(){return{all:c((e,t=[])=>this.all(e,t),"all"),exec:c(e=>this.exec(e),"exec"),run:c((e,t=[])=>this.run(e,t),"run")}}async repairUnverifiableLearnedPreferenceBindings(){await Md({all:c((e,t)=>this.all(e,t??[]),"all"),exec:c(e=>this.exec(e),"exec"),run:c((e,t)=>this.run(e,t??[]),"run")})}async createModelLifecycleTables(){await Xd({exec:c(e=>this.exec(e),"exec")})}async createDatasetImportTables(){await Ed({all:c((e,t=[])=>this.all(e,t),"all"),exec:c(e=>this.exec(e),"exec")})}async createTasksetRevisionTables(){await ld(e=>this.exec(e))}async createTrainingReceiptAndModelBindingTables(){await Td(e=>this.exec(e))}async createPreferenceComparisonTables(){await fd(e=>this.exec(e))}async createTaskCreationProjectionTables(){await pd(e=>this.exec(e))}async createGraderAuditTables(){await ud(e=>this.exec(e))}async createTaskAttemptArtifactTables(){await md(e=>this.exec(e))}async createTrainingChatSearchTables(){await this.exec(`
1869
+ `)}async createModelProjectTables(){await vd(this.modelProjectMigrationStore())}async allowModelRunsWithoutVersion(){await Id(this.modelProjectMigrationStore())}async consolidateModelProjectTrainingSetup(){await Od(this.modelProjectMigrationStore())}modelProjectMigrationStore(){return{all:c((e,t=[])=>this.all(e,t),"all"),exec:c(e=>this.exec(e),"exec"),run:c((e,t=[])=>this.run(e,t),"run")}}async repairUnverifiableLearnedPreferenceBindings(){await Ld({all:c((e,t)=>this.all(e,t??[]),"all"),exec:c(e=>this.exec(e),"exec"),run:c((e,t)=>this.run(e,t??[]),"run")})}async createModelLifecycleTables(){await Ad({exec:c(e=>this.exec(e),"exec")})}async createDatasetImportTables(){await ld({all:c((e,t=[])=>this.all(e,t),"all"),exec:c(e=>this.exec(e),"exec")})}async createTasksetRevisionTables(){await sd(e=>this.exec(e))}async createTrainingReceiptAndModelBindingTables(){await dd(e=>this.exec(e))}async createPreferenceComparisonTables(){await cd(e=>this.exec(e))}async createTaskCreationProjectionTables(){await id(e=>this.exec(e))}async createGraderAuditTables(){await nd(e=>this.exec(e))}async createTaskAttemptArtifactTables(){await od(e=>this.exec(e))}async createTrainingChatSearchTables(){await this.exec(`
1870
1870
  CREATE TABLE IF NOT EXISTS training_chat_search_documents (
1871
1871
  session_id TEXT PRIMARY KEY,
1872
1872
  source TEXT NOT NULL,
@@ -1917,7 +1917,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1917
1917
  status = excluded.status,
1918
1918
  sort_index = excluded.sort_index,
1919
1919
  payload = excluded.payload,
1920
- updated_at = excluded.updated_at`,[e.id,e.sessionId,e.status,t,JSON.stringify(e),ce()])}async rebuildLatestTurnProjectionForSession(e){let t=await this.get(`SELECT id, status, sort_index, payload, updated_at
1920
+ updated_at = excluded.updated_at`,[e.id,e.sessionId,e.status,t,JSON.stringify(e),ie()])}async rebuildLatestTurnProjectionForSession(e){let t=await this.get(`SELECT id, status, sort_index, payload, updated_at
1921
1921
  FROM turns
1922
1922
  WHERE session_id = ?
1923
1923
  ORDER BY sort_index DESC
@@ -1934,7 +1934,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1934
1934
  MAX(sequence) AS latest_event_sequence,
1935
1935
  MAX(timestamp) AS latest_event_at
1936
1936
  FROM events
1937
- WHERE session_id = ?`,[e]),r=await this.get("SELECT turn_id, status FROM projection_latest_turns WHERE session_id = ?",[e]),s=await this.get("SELECT COUNT(*) AS count FROM projection_approvals WHERE session_id = ? AND status = ?",[e,"pending"]),i=gr({sessionId:e,eventCount:t?.event_count??0,latestEventSequence:t?.latest_event_sequence??0,latestEventAt:t?.latest_event_at??null,latestTurnId:r?.turn_id??null,latestTurnStatus:r?.status??null,pendingApprovalCount:s?.count??0,updatedAt:ce()});await this.run(`INSERT INTO projection_thread_details (
1937
+ WHERE session_id = ?`,[e]),r=await this.get("SELECT turn_id, status FROM projection_latest_turns WHERE session_id = ?",[e]),s=await this.get("SELECT COUNT(*) AS count FROM projection_approvals WHERE session_id = ? AND status = ?",[e,"pending"]),i=fr({sessionId:e,eventCount:t?.event_count??0,latestEventSequence:t?.latest_event_sequence??0,latestEventAt:t?.latest_event_at??null,latestTurnId:r?.turn_id??null,latestTurnStatus:r?.status??null,pendingApprovalCount:s?.count??0,updatedAt:ie()});await this.run(`INSERT INTO projection_thread_details (
1938
1938
  session_id,
1939
1939
  event_count,
1940
1940
  latest_event_sequence,
@@ -1955,7 +1955,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1955
1955
  latest_turn_status = excluded.latest_turn_status,
1956
1956
  pending_approval_count = excluded.pending_approval_count,
1957
1957
  payload = excluded.payload,
1958
- updated_at = excluded.updated_at`,[i.sessionId,i.eventCount,i.latestEventSequence,i.latestEventAt,i.latestTurnId,i.latestTurnStatus,i.pendingApprovalCount,JSON.stringify(i),i.updatedAt])}async updateThreadDetailProjectionForEvent(e,t){if(!e.sessionId)return;let r=await this.threadDetailProjectionFromDb(e.sessionId),s=gr({sessionId:e.sessionId,eventCount:(r?.eventCount??0)+1,latestEventSequence:t,latestEventAt:e.timestamp,latestTurnId:r?.latestTurnId??null,latestTurnStatus:r?.latestTurnStatus??null,pendingApprovalCount:r?.pendingApprovalCount??0,updatedAt:e.timestamp});await this.run(`INSERT INTO projection_thread_details (
1958
+ updated_at = excluded.updated_at`,[i.sessionId,i.eventCount,i.latestEventSequence,i.latestEventAt,i.latestTurnId,i.latestTurnStatus,i.pendingApprovalCount,JSON.stringify(i),i.updatedAt])}async updateThreadDetailProjectionForEvent(e,t){if(!e.sessionId)return;let r=await this.threadDetailProjectionFromDb(e.sessionId),s=fr({sessionId:e.sessionId,eventCount:(r?.eventCount??0)+1,latestEventSequence:t,latestEventAt:e.timestamp,latestTurnId:r?.latestTurnId??null,latestTurnStatus:r?.latestTurnStatus??null,pendingApprovalCount:r?.pendingApprovalCount??0,updatedAt:e.timestamp});await this.run(`INSERT INTO projection_thread_details (
1959
1959
  session_id,
1960
1960
  event_count,
1961
1961
  latest_event_sequence,
@@ -1973,73 +1973,73 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1973
1973
  latest_event_sequence = excluded.latest_event_sequence,
1974
1974
  latest_event_at = excluded.latest_event_at,
1975
1975
  payload = excluded.payload,
1976
- updated_at = excluded.updated_at`,[s.sessionId,s.eventCount,s.latestEventSequence,s.latestEventAt,s.latestTurnId,s.latestTurnStatus,s.pendingApprovalCount,JSON.stringify(s),s.updatedAt])}async threadDetailProjectionFromDb(e){let t=await this.get("SELECT * FROM projection_thread_details WHERE session_id = ?",[e]);return t?Od(t):null}async rebuildReadModels(){await this.exec(`
1976
+ updated_at = excluded.updated_at`,[s.sessionId,s.eventCount,s.latestEventSequence,s.latestEventAt,s.latestTurnId,s.latestTurnStatus,s.pendingApprovalCount,JSON.stringify(s),s.updatedAt])}async threadDetailProjectionFromDb(e){let t=await this.get("SELECT * FROM projection_thread_details WHERE session_id = ?",[e]);return t?yd(t):null}async rebuildReadModels(){await this.exec(`
1977
1977
  DELETE FROM projection_latest_turns;
1978
1978
  DELETE FROM projection_approvals;
1979
1979
  DELETE FROM projection_thread_details;
1980
1980
  DELETE FROM projection_session_shells;
1981
- `);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 d=pa(JSON.parse(n.payload));t.add(d.id),await this.upsertSessionShellProjection(d,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 d=JSON.parse(n.payload);t.add(d.sessionId),await this.upsertApprovalProjection(d,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 ed(this.data,{exec:c(e=>this.exec(e),"exec"),run:c((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 yd(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 yr=class extends Rr{static{c(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=ge.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 v("learning_credential_operation_conflict",409);return ge.parse(JSON.parse(n.payload))}if(i.get("SELECT id FROM learning_source_credentials WHERE key_hash = ?",[t]))throw new v("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?ge.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(d=>ge.parse(JSON.parse(d.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 d=ge.parse(JSON.parse(n.payload));if(d.revokedAt!==null)return d;let o=ge.parse({...d,revokedAt:s});return i.run("UPDATE learning_source_credentials SET payload = ? WHERE scope = ? AND source_id = ? AND id = ?",[JSON.stringify(o),e,t,r]),o})}};var kr=class extends yr{static{c(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:c(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=$s(s,e,()=>{if(!i)throw new Error("learning_transaction_closed")});try{let d=await t(n);return s.exec("COMMIT"),d}catch(d){throw s.exec("ROLLBACK"),d}finally{i=!1}});return this.writeQueue=r.then(()=>{},()=>{}),r},"transaction")}}};function $s(a,e,t){let r=c((s,i)=>ie[s].parse(JSON.parse(i.payload)),"parse");return{async get(s,i,n){t();let d=n===void 0?a.get(`SELECT history.payload FROM learning_resources current
1981
+ `);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=da(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 Jo(this.data,{exec:c(e=>this.exec(e),"exec"),run:c((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 fd(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 gr=class extends hr{static{c(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=Ee.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 v("learning_credential_operation_conflict",409);return Ee.parse(JSON.parse(n.payload))}if(i.get("SELECT id FROM learning_source_credentials WHERE key_hash = ?",[t]))throw new v("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?Ee.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=>Ee.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=Ee.parse(JSON.parse(n.payload));if(o.revokedAt!==null)return o;let d=Ee.parse({...o,revokedAt:s});return i.run("UPDATE learning_source_credentials SET payload = ? WHERE scope = ? AND source_id = ? AND id = ?",[JSON.stringify(d),e,t,r]),d})}};var wr=class extends gr{static{c(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:c(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=Ys(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 Ys(a,e,t){let r=c((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
1982
1982
  JOIN learning_revisions history USING (scope, kind, id, revision)
1983
- 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 d?r(s,d):null},async put(s,i,n,d){t(),Cl(a,e,s,i,n,d)},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 d=["current.scope = ?","current.kind = ?"],o=[e,s];if(i.reviewState!==void 0){if(s!=="evidence")throw new Error("learning_review_filter_requires_evidence");let f=`EXISTS (SELECT 1 FROM learning_resources decision
1983
+ 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(),vl(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 = ?"],d=[e,s];if(i.reviewState!==void 0){if(s!=="evidence")throw new Error("learning_review_filter_requires_evidence");let E=`EXISTS (SELECT 1 FROM learning_resources decision
1984
1984
  JOIN learning_revisions decision_history USING (scope, kind, id, revision)
1985
1985
  WHERE decision.scope = current.scope AND decision.kind = 'decision'
1986
1986
  AND decision.parent_id = current.id AND decision.status IN ('approved', 'rejected')
1987
- AND json_extract(decision_history.payload, '$.evidence.contentHash') = json_extract(history.payload, '$.contentHash'))`;d.push(i.reviewState==="reviewed"?f:`NOT ${f}`)}for(let[f,p]of[["parent_id",i.parentId],["status",i.status]])p!==void 0&&(d.push(`current.${f} = ?`),o.push(p));i.afterId!==void 0&&(d.push("current.id > ?"),o.push(i.afterId));let m=a.all(`SELECT history.payload FROM learning_resources current
1987
+ AND json_extract(decision_history.payload, '$.evidence.contentHash') = json_extract(history.payload, '$.contentHash'))`;o.push(i.reviewState==="reviewed"?E:`NOT ${E}`)}for(let[E,p]of[["parent_id",i.parentId],["status",i.status]])p!==void 0&&(o.push(`current.${E} = ?`),d.push(p));i.afterId!==void 0&&(o.push("current.id > ?"),d.push(i.afterId));let m=a.all(`SELECT history.payload FROM learning_resources current
1988
1988
  JOIN learning_revisions history USING (scope, kind, id, revision)
1989
- WHERE ${d.join(" AND ")} ORDER BY current.id LIMIT ?`,[...o,n+1]),l=m.slice(0,n).map(f=>r(s,f));return{items:l,nextCursor:m.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,d){t();let o=a.get("SELECT split FROM learning_family_splits WHERE scope = ? AND namespace = ? AND kind = ? AND key = ?",[e,s,i,n]);if(o&&o.split!==d)throw new Error("task_family_split_conflict");o||a.run("INSERT INTO learning_family_splits (scope, namespace, kind, key, split) VALUES (?, ?, ?, ?, ?)",[e,s,i,n,d])}}}c($s,"createLearningTransaction");function Cl(a,e,t,r,s,i){let n=ie[t].parse(r),d=a.get("SELECT revision FROM learning_resources WHERE scope = ? AND kind = ? AND id = ?",[e,t,n.id]);if((d?.revision??0)!==s)throw new Ee(t,n.id,s,d?.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 (?, ?, ?, ?, ?, ?)
1990
- 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])}c(Cl,"putLearningResourceInTransaction");var Nr=class extends kr{static{c(this,"SqliteTrainingModelStore")}async saveModelCurrencySnapshot(e){let t=Nt.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
1989
+ WHERE ${o.join(" AND ")} ORDER BY current.id LIMIT ?`,[...d,n+1]),l=m.slice(0,n).map(E=>r(s,E));return{items:l,nextCursor:m.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 d=a.get("SELECT split FROM learning_family_splits WHERE scope = ? AND namespace = ? AND kind = ? AND key = ?",[e,s,i,n]);if(d&&d.split!==o)throw new Error("task_family_split_conflict");d||a.run("INSERT INTO learning_family_splits (scope, namespace, kind, key, split) VALUES (?, ?, ?, ?, ?)",[e,s,i,n,o])}}}c(Ys,"createLearningTransaction");function vl(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 ue(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 (?, ?, ?, ?, ?, ?)
1990
+ 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])}c(vl,"putLearningResourceInTransaction");var Rr=class extends wr{static{c(this,"SqliteTrainingModelStore")}async saveModelCurrencySnapshot(e){let t=Rt.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
1991
1991
  (id, series_id, entry_id, evidence_state, content_hash, payload, created_at)
1992
- 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],Nt.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],Nt.parse):e.seriesId?this.listParsedPayloads("SELECT payload FROM model_currency_snapshots WHERE series_id = ? ORDER BY created_at DESC",[e.seriesId],Nt.parse):this.listParsedPayloads("SELECT payload FROM model_currency_snapshots ORDER BY created_at DESC",[],Nt.parse)}async saveModelComparisonSeries(e){let t=je.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&&!Wd(r,t))throw new Error("A sealed Model Comparison Series definition is immutable.");return await this.upsertPayload(`INSERT INTO model_comparison_series
1992
+ 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],Rt.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],Rt.parse):e.seriesId?this.listParsedPayloads("SELECT payload FROM model_currency_snapshots WHERE series_id = ? ORDER BY created_at DESC",[e.seriesId],Rt.parse):this.listParsedPayloads("SELECT payload FROM model_currency_snapshots ORDER BY created_at DESC",[],Rt.parse)}async saveModelComparisonSeries(e){let t=De.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&&!Hd(r,t))throw new Error("A sealed Model Comparison Series definition is immutable.");return await this.upsertPayload(`INSERT INTO model_comparison_series
1993
1993
  (id, profile_id, model_project_id, status, payload, created_at, updated_at)
1994
1994
  VALUES (?, ?, ?, ?, ?, ?, ?)
1995
1995
  ON CONFLICT(id) DO UPDATE SET
1996
1996
  status = excluded.status,
1997
1997
  payload = excluded.payload,
1998
- updated_at = excluded.updated_at`,[t.id,t.profileId,t.modelProjectId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getModelComparisonSeries(e){return this.getParsedPayload("SELECT payload FROM model_comparison_series WHERE id = ?",[e],je.parse)}async listModelComparisonSeries(e={}){return e.modelProjectId?this.listParsedPayloads("SELECT payload FROM model_comparison_series WHERE model_project_id = ? ORDER BY updated_at DESC",[e.modelProjectId],je.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_comparison_series WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],je.parse):this.listParsedPayloads("SELECT payload FROM model_comparison_series ORDER BY updated_at DESC",[],je.parse)}async saveModelComparisonSeriesEntry(e){let t=Ne.parse(e),r=await this.getModelComparisonSeriesEntry(t.id);if(r&&!Js(r,t))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(r&&!Vs(r,t))throw new Error("A Model Comparison Series Entry cannot replace linked evidence or artifact lineage.");return await this.upsertPayload(`INSERT INTO model_comparison_series_entries
1998
+ updated_at = excluded.updated_at`,[t.id,t.profileId,t.modelProjectId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getModelComparisonSeries(e){return this.getParsedPayload("SELECT payload FROM model_comparison_series WHERE id = ?",[e],De.parse)}async listModelComparisonSeries(e={}){return e.modelProjectId?this.listParsedPayloads("SELECT payload FROM model_comparison_series WHERE model_project_id = ? ORDER BY updated_at DESC",[e.modelProjectId],De.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_comparison_series WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],De.parse):this.listParsedPayloads("SELECT payload FROM model_comparison_series ORDER BY updated_at DESC",[],De.parse)}async saveModelComparisonSeriesEntry(e){let t=we.parse(e),r=await this.getModelComparisonSeriesEntry(t.id);if(r&&!Ks(r,t))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(r&&!$s(r,t))throw new Error("A Model Comparison Series Entry cannot replace linked evidence or artifact lineage.");return await this.upsertPayload(`INSERT INTO model_comparison_series_entries
1999
1999
  (id, series_id, profile_id, model_project_id, ordinal, status, payload, created_at, updated_at)
2000
2000
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2001
2001
  ON CONFLICT(id) DO UPDATE SET
2002
2002
  status = excluded.status,
2003
2003
  payload = excluded.payload,
2004
- updated_at = excluded.updated_at`,[t.id,t.seriesId,t.profileId,t.modelProjectId,t.ordinal,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getModelComparisonSeriesEntry(e){return this.getParsedPayload("SELECT payload FROM model_comparison_series_entries WHERE id = ?",[e],Ne.parse)}async listModelComparisonSeriesEntries(e={}){return e.seriesId?this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries WHERE series_id = ? ORDER BY ordinal ASC",[e.seriesId],Ne.parse):e.modelProjectId?this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries WHERE model_project_id = ? ORDER BY updated_at DESC",[e.modelProjectId],Ne.parse):this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries ORDER BY updated_at DESC",[],Ne.parse)}async commitModelComparisonSeriesMutation(e){let t=je.parse(e.series),r=Ne.parse(e.entry);await this.ready;let s={series:t,entry:r},i=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let n=await this.get("SELECT payload FROM model_comparison_series WHERE id = ?",[t.id]);if(!n)throw new Error("Model Comparison Series not found.");let d=je.parse(JSON.parse(n.payload));if(d.revision!==e.expectedSeriesRevision)throw new Error(`Comparison Series revision changed; expected ${e.expectedSeriesRevision} and found ${d.revision}.`);if(t.revision!==d.revision+1)throw new Error("A Comparison Series mutation must advance exactly one revision.");if(d.scheduleSealedAt&&!Wd(d,t))throw new Error("A sealed Model Comparison Series definition is immutable.");let o=await this.get("SELECT payload FROM model_comparison_series_entries WHERE id = ?",[r.id]),m=o?Ne.parse(JSON.parse(o.payload)):null;if((m?.status??null)!==e.expectedEntryStatus)throw new Error("The Comparison Series Entry changed before the mutation could be applied.");if(m&&!Js(m,r))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(m&&!Vs(m,r))throw new Error("A Model Comparison Series Entry cannot replace linked evidence or artifact lineage.");await this.run(`INSERT INTO model_comparison_series_entries
2004
+ updated_at = excluded.updated_at`,[t.id,t.seriesId,t.profileId,t.modelProjectId,t.ordinal,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getModelComparisonSeriesEntry(e){return this.getParsedPayload("SELECT payload FROM model_comparison_series_entries WHERE id = ?",[e],we.parse)}async listModelComparisonSeriesEntries(e={}){return e.seriesId?this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries WHERE series_id = ? ORDER BY ordinal ASC",[e.seriesId],we.parse):e.modelProjectId?this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries WHERE model_project_id = ? ORDER BY updated_at DESC",[e.modelProjectId],we.parse):this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries ORDER BY updated_at DESC",[],we.parse)}async commitModelComparisonSeriesMutation(e){let t=De.parse(e.series),r=we.parse(e.entry);await this.ready;let s={series:t,entry:r},i=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let n=await this.get("SELECT payload FROM model_comparison_series WHERE id = ?",[t.id]);if(!n)throw new Error("Model Comparison Series not found.");let o=De.parse(JSON.parse(n.payload));if(o.revision!==e.expectedSeriesRevision)throw new Error(`Comparison Series revision changed; expected ${e.expectedSeriesRevision} and found ${o.revision}.`);if(t.revision!==o.revision+1)throw new Error("A Comparison Series mutation must advance exactly one revision.");if(o.scheduleSealedAt&&!Hd(o,t))throw new Error("A sealed Model Comparison Series definition is immutable.");let d=await this.get("SELECT payload FROM model_comparison_series_entries WHERE id = ?",[r.id]),m=d?we.parse(JSON.parse(d.payload)):null;if((m?.status??null)!==e.expectedEntryStatus)throw new Error("The Comparison Series Entry changed before the mutation could be applied.");if(m&&!Ks(m,r))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(m&&!$s(m,r))throw new Error("A Model Comparison Series Entry cannot replace linked evidence or artifact lineage.");await this.run(`INSERT INTO model_comparison_series_entries
2005
2005
  (id, series_id, profile_id, model_project_id, ordinal, status, payload, created_at, updated_at)
2006
2006
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2007
- ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[r.id,r.seriesId,r.profileId,r.modelProjectId,r.ordinal,r.status,JSON.stringify(r),r.createdAt,r.updatedAt]),await this.run("UPDATE model_comparison_series SET status = ?, payload = ?, updated_at = ? WHERE id = ?",[t.status,JSON.stringify(t),t.updatedAt,t.id]),await this.exec("COMMIT"),s={series:t,entry:r}}catch(n){throw await this.exec("ROLLBACK").catch(()=>{}),n}});return this.writeQueue=i.catch(()=>{}),await i,s}async compareAndSwapModelComparisonSeriesEntry(e){let t=Ne.parse(e.entry);await this.ready;let r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.get("SELECT payload FROM model_comparison_series_entries WHERE id = ?",[t.id]);if(!s)throw new Error("Model Comparison Series Entry not found.");let i=Ne.parse(JSON.parse(s.payload));if(i.status!==e.expectedStatus)throw new Error(`Comparison entry state changed; expected ${e.expectedStatus} and found ${i.status}.`);if(!Js(i,t))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(!Vs(i,t))throw new Error("A Model Comparison Series Entry cannot replace linked evidence or artifact lineage.");await this.run("UPDATE model_comparison_series_entries SET status = ?, payload = ?, updated_at = ? WHERE id = ?",[t.status,JSON.stringify(t),t.updatedAt,t.id]),await this.exec("COMMIT")}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});return this.writeQueue=r.catch(()=>{}),await r,t}async saveRewardModelVersion(e){let t=yt.parse(e),r=await this.getRewardModelVersion(t.id);if(r&&r.contentHash!==t.contentHash)throw new Error(`Reward Model Version ${t.id} is immutable and already has different content.`);return await this.upsertPayload(`INSERT INTO reward_model_versions
2007
+ ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[r.id,r.seriesId,r.profileId,r.modelProjectId,r.ordinal,r.status,JSON.stringify(r),r.createdAt,r.updatedAt]),await this.run("UPDATE model_comparison_series SET status = ?, payload = ?, updated_at = ? WHERE id = ?",[t.status,JSON.stringify(t),t.updatedAt,t.id]),await this.exec("COMMIT"),s={series:t,entry:r}}catch(n){throw await this.exec("ROLLBACK").catch(()=>{}),n}});return this.writeQueue=i.catch(()=>{}),await i,s}async compareAndSwapModelComparisonSeriesEntry(e){let t=we.parse(e.entry);await this.ready;let r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.get("SELECT payload FROM model_comparison_series_entries WHERE id = ?",[t.id]);if(!s)throw new Error("Model Comparison Series Entry not found.");let i=we.parse(JSON.parse(s.payload));if(i.status!==e.expectedStatus)throw new Error(`Comparison entry state changed; expected ${e.expectedStatus} and found ${i.status}.`);if(!Ks(i,t))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(!$s(i,t))throw new Error("A Model Comparison Series Entry cannot replace linked evidence or artifact lineage.");await this.run("UPDATE model_comparison_series_entries SET status = ?, payload = ?, updated_at = ? WHERE id = ?",[t.status,JSON.stringify(t),t.updatedAt,t.id]),await this.exec("COMMIT")}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});return this.writeQueue=r.catch(()=>{}),await r,t}async saveRewardModelVersion(e){let t=gt.parse(e),r=await this.getRewardModelVersion(t.id);if(r&&r.contentHash!==t.contentHash)throw new Error(`Reward Model Version ${t.id} is immutable and already has different content.`);return await this.upsertPayload(`INSERT INTO reward_model_versions
2008
2008
  (id, model_id, profile_id, version_number, taskset_id, status, payload, created_at)
2009
2009
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2010
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload`,[t.id,t.modelId,t.profileId,t.version,t.taskset.id,t.status,JSON.stringify(t),t.createdAt]),t}async getRewardModelVersion(e){return this.getParsedPayload("SELECT payload FROM reward_model_versions WHERE id = ?",[e],yt.parse)}async listRewardModelVersions(e={}){return e.tasksetId?this.listParsedPayloads("SELECT payload FROM reward_model_versions WHERE taskset_id = ? ORDER BY created_at DESC",[e.tasksetId],yt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM reward_model_versions WHERE profile_id = ? ORDER BY created_at DESC",[e.profileId],yt.parse):this.listParsedPayloads("SELECT payload FROM reward_model_versions ORDER BY created_at DESC",[],yt.parse)}async saveRewardModelRun(e){let t=kt.parse(e),r=await this.getRewardModelRun(t.id);if(r&&(r.rewardModelId!==t.rewardModelId||r.profileId!==t.profileId||r.taskset.id!==t.taskset.id||r.preferenceDatasetRelease.contentHash!==t.preferenceDatasetRelease.contentHash))throw new Error("A Reward Model Run cannot change its immutable lineage.");if(r&&["succeeded","failed","cancelled"].includes(r.status)&&JSON.stringify(r)!==JSON.stringify(t))throw new Error(`Terminal Reward Model Run ${t.id} is immutable.`);return await this.upsertPayload(`INSERT INTO reward_model_runs
2010
+ ON CONFLICT(id) DO UPDATE SET payload = excluded.payload`,[t.id,t.modelId,t.profileId,t.version,t.taskset.id,t.status,JSON.stringify(t),t.createdAt]),t}async getRewardModelVersion(e){return this.getParsedPayload("SELECT payload FROM reward_model_versions WHERE id = ?",[e],gt.parse)}async listRewardModelVersions(e={}){return e.tasksetId?this.listParsedPayloads("SELECT payload FROM reward_model_versions WHERE taskset_id = ? ORDER BY created_at DESC",[e.tasksetId],gt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM reward_model_versions WHERE profile_id = ? ORDER BY created_at DESC",[e.profileId],gt.parse):this.listParsedPayloads("SELECT payload FROM reward_model_versions ORDER BY created_at DESC",[],gt.parse)}async saveRewardModelRun(e){let t=wt.parse(e),r=await this.getRewardModelRun(t.id);if(r&&(r.rewardModelId!==t.rewardModelId||r.profileId!==t.profileId||r.taskset.id!==t.taskset.id||r.preferenceDatasetRelease.contentHash!==t.preferenceDatasetRelease.contentHash))throw new Error("A Reward Model Run cannot change its immutable lineage.");if(r&&["succeeded","failed","cancelled"].includes(r.status)&&JSON.stringify(r)!==JSON.stringify(t))throw new Error(`Terminal Reward Model Run ${t.id} is immutable.`);return await this.upsertPayload(`INSERT INTO reward_model_runs
2011
2011
  (id, reward_model_id, profile_id, taskset_id, status, payload, created_at, updated_at)
2012
2012
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2013
2013
  ON CONFLICT(id) DO UPDATE SET
2014
2014
  status = excluded.status,
2015
2015
  payload = excluded.payload,
2016
- updated_at = excluded.updated_at`,[t.id,t.rewardModelId,t.profileId,t.taskset.id,t.status,JSON.stringify(t),t.startedAt,t.updatedAt]),t}async getRewardModelRun(e){return this.getParsedPayload("SELECT payload FROM reward_model_runs WHERE id = ?",[e],kt.parse)}async listRewardModelRuns(e={}){return e.tasksetId?this.listParsedPayloads("SELECT payload FROM reward_model_runs WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],kt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM reward_model_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],kt.parse):this.listParsedPayloads("SELECT payload FROM reward_model_runs ORDER BY updated_at DESC",[],kt.parse)}async saveModelVersion(e){let t=Rt.parse(e),r=await this.getModelVersion(t.id);if(r&&r.contentHash!==t.contentHash)throw new Error(`Model Version ${t.id} is immutable and already has different content.`);let s=(await this.listModelVersions({modelId:t.modelId})).find(i=>i.version===t.version);if(s&&s.id!==t.id)throw new Error(`Model ${t.modelId} already has version ${t.version}.`);return await this.upsertPayload(`INSERT INTO model_versions
2016
+ updated_at = excluded.updated_at`,[t.id,t.rewardModelId,t.profileId,t.taskset.id,t.status,JSON.stringify(t),t.startedAt,t.updatedAt]),t}async getRewardModelRun(e){return this.getParsedPayload("SELECT payload FROM reward_model_runs WHERE id = ?",[e],wt.parse)}async listRewardModelRuns(e={}){return e.tasksetId?this.listParsedPayloads("SELECT payload FROM reward_model_runs WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],wt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM reward_model_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],wt.parse):this.listParsedPayloads("SELECT payload FROM reward_model_runs ORDER BY updated_at DESC",[],wt.parse)}async saveModelVersion(e){let t=ht.parse(e),r=await this.getModelVersion(t.id);if(r&&r.contentHash!==t.contentHash)throw new Error(`Model Version ${t.id} is immutable and already has different content.`);let s=(await this.listModelVersions({modelId:t.modelId})).find(i=>i.version===t.version);if(s&&s.id!==t.id)throw new Error(`Model ${t.modelId} already has version ${t.version}.`);return await this.upsertPayload(`INSERT INTO model_versions
2017
2017
  (id, model_id, profile_id, version_number, kind, payload, created_at)
2018
2018
  VALUES (?, ?, ?, ?, ?, ?, ?)
2019
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload`,[t.id,t.modelId,t.profileId,t.version,t.kind,JSON.stringify(t),t.createdAt]),t}async getModelVersion(e){return this.getParsedPayload("SELECT payload FROM model_versions WHERE id = ?",[e],Rt.parse)}async listModelVersions(e={}){return e.modelId?this.listParsedPayloads("SELECT payload FROM model_versions WHERE model_id = ? ORDER BY version_number DESC",[e.modelId],Rt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_versions WHERE profile_id = ? ORDER BY created_at DESC",[e.profileId],Rt.parse):this.listParsedPayloads("SELECT payload FROM model_versions ORDER BY created_at DESC",[],Rt.parse)}async saveModelRun(e,t={}){let r=tt.parse(e),s=await this.getModelRun(r.id);if(s&&JSON.stringify(s)===JSON.stringify(r))return s;let i=!1;if(t.recoverCollectionForJobId){let n=await this.getParsedPayload("SELECT payload FROM training_jobs WHERE id = ?",[t.recoverCollectionForJobId],vt.parse);if(i=!!(s&&n&&td(s,r,n)),!i)throw new Error("Model Run collection recovery must preserve the failed Job's execution and lineage.")}if(s&&(s.modelId!==r.modelId||s.modelVersionId!==r.modelVersionId||s.profileId!==r.profileId||s.taskset.id!==r.taskset.id||JSON.stringify(s.comparisonSeriesEntry??null)!==JSON.stringify(r.comparisonSeriesEntry??null)))throw new Error("A Model Run cannot change its immutable lineage.");if(s&&["succeeded","failed","cancelled"].includes(s.status)&&JSON.stringify(s)!==JSON.stringify(r)&&!Ds(s,r)&&!i)throw new Error(`Terminal Model Run ${r.id} is immutable.`);return await this.upsertPayload(`INSERT INTO model_runs
2019
+ ON CONFLICT(id) DO UPDATE SET payload = excluded.payload`,[t.id,t.modelId,t.profileId,t.version,t.kind,JSON.stringify(t),t.createdAt]),t}async getModelVersion(e){return this.getParsedPayload("SELECT payload FROM model_versions WHERE id = ?",[e],ht.parse)}async listModelVersions(e={}){return e.modelId?this.listParsedPayloads("SELECT payload FROM model_versions WHERE model_id = ? ORDER BY version_number DESC",[e.modelId],ht.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_versions WHERE profile_id = ? ORDER BY created_at DESC",[e.profileId],ht.parse):this.listParsedPayloads("SELECT payload FROM model_versions ORDER BY created_at DESC",[],ht.parse)}async saveModelRun(e,t={}){let r=Ge.parse(e),s=await this.getModelRun(r.id);if(s&&JSON.stringify(s)===JSON.stringify(r))return s;let i=!1;if(t.recoverCollectionForJobId){let n=await this.getParsedPayload("SELECT payload FROM training_jobs WHERE id = ?",[t.recoverCollectionForJobId],kt.parse);if(i=!!(s&&n&&Vo(s,r,n)),!i)throw new Error("Model Run collection recovery must preserve the failed Job's execution and lineage.")}if(s&&(s.modelId!==r.modelId||s.modelVersionId!==r.modelVersionId||s.profileId!==r.profileId||s.taskset.id!==r.taskset.id||JSON.stringify(s.comparisonSeriesEntry??null)!==JSON.stringify(r.comparisonSeriesEntry??null)))throw new Error("A Model Run cannot change its immutable lineage.");if(s&&["succeeded","failed","cancelled"].includes(s.status)&&JSON.stringify(s)!==JSON.stringify(r)&&!Xs(s,r)&&!i)throw new Error(`Terminal Model Run ${r.id} is immutable.`);return await this.upsertPayload(`INSERT INTO model_runs
2020
2020
  (id, model_id, model_version_id, profile_id, taskset_id, status, payload, created_at, updated_at)
2021
2021
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2022
2022
  ON CONFLICT(id) DO UPDATE SET
2023
2023
  status = excluded.status,
2024
2024
  payload = excluded.payload,
2025
- updated_at = excluded.updated_at`,[r.id,r.modelId,r.modelVersionId,r.profileId,r.taskset.id,r.status,JSON.stringify(r),r.startedAt,r.updatedAt]),r}async getModelRun(e){return this.getParsedPayload("SELECT payload FROM model_runs WHERE id = ?",[e],tt.parse)}async listModelRuns(e={}){return e.modelId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE model_id = ? ORDER BY updated_at DESC",[e.modelId],tt.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],tt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],tt.parse):this.listParsedPayloads("SELECT payload FROM model_runs ORDER BY updated_at DESC",[],tt.parse)}async saveRolloutTrajectoryReceipt(e){let t=St.parse(e);return await this.upsertPayload(`INSERT INTO training_rollout_receipts (id, job_id, taskset_id, provider_rollout_id, status, payload, created_at, updated_at)
2025
+ updated_at = excluded.updated_at`,[r.id,r.modelId,r.modelVersionId,r.profileId,r.taskset.id,r.status,JSON.stringify(r),r.startedAt,r.updatedAt]),r}async getModelRun(e){return this.getParsedPayload("SELECT payload FROM model_runs WHERE id = ?",[e],Ge.parse)}async listModelRuns(e={}){return e.modelId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE model_id = ? ORDER BY updated_at DESC",[e.modelId],Ge.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],Ge.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],Ge.parse):this.listParsedPayloads("SELECT payload FROM model_runs ORDER BY updated_at DESC",[],Ge.parse)}async saveRolloutTrajectoryReceipt(e){let t=yt.parse(e);return await this.upsertPayload(`INSERT INTO training_rollout_receipts (id, job_id, taskset_id, provider_rollout_id, status, payload, created_at, updated_at)
2026
2026
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2027
2027
  ON CONFLICT(id) DO UPDATE SET job_id = excluded.job_id, taskset_id = excluded.taskset_id,
2028
2028
  provider_rollout_id = excluded.provider_rollout_id, status = excluded.status,
2029
- payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.jobId,t.tasksetId,t.providerTrace.rolloutId,t.status,JSON.stringify(t),t.receivedAt,t.updatedAt]),t}async getRolloutTrajectoryReceiptByProviderId(e){return this.getParsedPayload("SELECT payload FROM training_rollout_receipts WHERE provider_rollout_id = ?",[e],St.parse)}async listRolloutTrajectoryReceipts(e={}){return e.jobId?this.listParsedPayloads("SELECT payload FROM training_rollout_receipts WHERE job_id = ? ORDER BY updated_at DESC",[e.jobId],St.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM training_rollout_receipts WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],St.parse):this.listParsedPayloads("SELECT payload FROM training_rollout_receipts ORDER BY updated_at DESC",[],St.parse)}async saveModelBinding(e){let t=Be.parse(e);return await this.upsertPayload(`INSERT INTO model_bindings (id, profile_id, role, role_target_id, model_artifact_lineage_id, status, payload, created_at, updated_at)
2029
+ payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.jobId,t.tasksetId,t.providerTrace.rolloutId,t.status,JSON.stringify(t),t.receivedAt,t.updatedAt]),t}async getRolloutTrajectoryReceiptByProviderId(e){return this.getParsedPayload("SELECT payload FROM training_rollout_receipts WHERE provider_rollout_id = ?",[e],yt.parse)}async listRolloutTrajectoryReceipts(e={}){return e.jobId?this.listParsedPayloads("SELECT payload FROM training_rollout_receipts WHERE job_id = ? ORDER BY updated_at DESC",[e.jobId],yt.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM training_rollout_receipts WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],yt.parse):this.listParsedPayloads("SELECT payload FROM training_rollout_receipts ORDER BY updated_at DESC",[],yt.parse)}async saveModelBinding(e){let t=He.parse(e);return await this.upsertPayload(`INSERT INTO model_bindings (id, profile_id, role, role_target_id, model_artifact_lineage_id, status, payload, created_at, updated_at)
2030
2030
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2031
2031
  ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, role = excluded.role,
2032
2032
  role_target_id = excluded.role_target_id, model_artifact_lineage_id = excluded.model_artifact_lineage_id,
2033
- status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.profileId,t.role,t.roleTargetId,t.modelArtifactLineageId,t.status,JSON.stringify(t),t.promotedAt,t.rolledBackAt??t.promotedAt]),t}async replaceActiveModelBinding(e){let t=e.next?Be.parse(e.next):null;if(t&&(t.status!=="active"||t.profileId!==e.profileId||t.role!==e.role||t.roleTargetId!==e.roleTargetId))throw new Error("Replacement Model binding does not match the requested active role.");await this.ready;let r={previous:null,active:null},s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let i=await this.get("SELECT payload FROM model_bindings WHERE profile_id = ? AND role = ? AND role_target_id = ? AND status = 'active' LIMIT 1",[e.profileId,e.role,e.roleTargetId]),n=i?Be.parse(JSON.parse(i.payload)):null;if((n?.id??null)!==e.expectedActiveBindingId)throw new Error("The active Model binding changed before this promotion could be applied.");if(n){let d=Be.parse({...n,status:"rolled_back",rolledBackAt:e.timestamp});await this.run(`UPDATE model_bindings
2033
+ status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.profileId,t.role,t.roleTargetId,t.modelArtifactLineageId,t.status,JSON.stringify(t),t.promotedAt,t.rolledBackAt??t.promotedAt]),t}async replaceActiveModelBinding(e){let t=e.next?He.parse(e.next):null;if(t&&(t.status!=="active"||t.profileId!==e.profileId||t.role!==e.role||t.roleTargetId!==e.roleTargetId))throw new Error("Replacement Model binding does not match the requested active role.");await this.ready;let r={previous:null,active:null},s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let i=await this.get("SELECT payload FROM model_bindings WHERE profile_id = ? AND role = ? AND role_target_id = ? AND status = 'active' LIMIT 1",[e.profileId,e.role,e.roleTargetId]),n=i?He.parse(JSON.parse(i.payload)):null;if((n?.id??null)!==e.expectedActiveBindingId)throw new Error("The active Model binding changed before this promotion could be applied.");if(n){let o=He.parse({...n,status:"rolled_back",rolledBackAt:e.timestamp});await this.run(`UPDATE model_bindings
2034
2034
  SET status = 'rolled_back', payload = ?, updated_at = ?
2035
- WHERE id = ? AND status = 'active'`,[JSON.stringify(d),e.timestamp,n.id])}t&&await this.run(`INSERT INTO model_bindings
2035
+ WHERE id = ? AND status = 'active'`,[JSON.stringify(o),e.timestamp,n.id])}t&&await this.run(`INSERT INTO model_bindings
2036
2036
  (id, profile_id, role, role_target_id, model_artifact_lineage_id, status, payload, created_at, updated_at)
2037
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[t.id,t.profileId,t.role,t.roleTargetId,t.modelArtifactLineageId,t.status,JSON.stringify(t),t.promotedAt,t.promotedAt]),await this.exec("COMMIT"),r={previous:n,active:t}}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=s.catch(()=>{}),await s,r}async getModelBinding(e){return this.getParsedPayload("SELECT payload FROM model_bindings WHERE id = ?",[e],Be.parse)}async getActiveModelBinding(e){return this.getParsedPayload("SELECT payload FROM model_bindings WHERE profile_id = ? AND role = ? AND role_target_id = ? AND status = 'active' LIMIT 1",[e.profileId,e.role,e.roleTargetId],Be.parse)}async listModelBindings(e){return this.listParsedPayloads(e?"SELECT payload FROM model_bindings WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM model_bindings ORDER BY updated_at DESC",e?[e]:[],Be.parse)}async upsertPayload(e,t){await this.ready;let r=this.writeQueue.then(()=>this.run(e,t));this.writeQueue=r.catch(()=>{}),await r}async listParsedPayloads(e,t,r){return await this.ready,await this.writeQueue,(await this.all(e,t)).map(i=>r(JSON.parse(i.payload)))}async getParsedPayload(e,t,r){await this.ready,await this.writeQueue;let s=await this.get(e,t);return s?r(JSON.parse(s.payload)):null}};function Wd(a,e){let t=c(r=>({id:r.id,profileId:r.profileId,modelProjectId:r.modelProjectId,name:r.name,objective:r.objective,productionBinding:r.productionBinding,baseModel:r.baseModel,seedTaskset:r.seedTaskset,eligibleTaskPool:r.eligibleTaskPool,evaluationTasksets:r.evaluationTasksets,grader:r.grader,benchmarkProtocol:r.benchmarkProtocol,automaticEvaluation:r.automaticEvaluation,residualProfile:r.residualProfile,schedule:r.schedule,scheduleSealedAt:r.scheduleSealedAt,advancementPolicy:r.advancementPolicy,executionPolicy:r.executionPolicy,createdBy:r.createdBy,createdAt:r.createdAt}),"definition");return JSON.stringify(t(a))===JSON.stringify(t(e))}c(Wd,"sameSealedSeriesDefinition");function Js(a,e){let t=c(r=>({seriesId:r.seriesId,profileId:r.profileId,modelProjectId:r.modelProjectId,scheduleEntryId:r.scheduleEntryId,releaseHash:r.releaseHash,ordinal:r.ordinal,label:r.label,role:r.role,branch:r.branch,parent:r.parent,taskset:r.taskset,sourceTasksets:r.sourceTasksets,taskSelection:r.taskSelection,trainableRank:r.trainableRank,serializedEnvelopeRank:r.serializedEnvelopeRank,enabledCumulativeRank:r.enabledCumulativeRank,trainableBlockId:r.trainableBlockId,residualBlocks:r.residualBlocks.map(({artifactLineageId:s,...i})=>i),createdAt:r.createdAt}),"lineage");return JSON.stringify(t(a))===JSON.stringify(t(e))}c(Js,"sameEntryLineage");function Vs(a,e){if(Pl(a,e))return!0;let t=c((i,n)=>i===null||i===n,"appendOnlyId");if(a.attemptOrdinal!==e.attemptOrdinal||JSON.stringify(a.priorRunAttempts)!==JSON.stringify(e.priorRunAttempts)||!t(a.trainingPlanId,e.trainingPlanId)||!t(a.modelRunId,e.modelRunId)||!t(a.modelVersionId,e.modelVersionId)||!t(a.promotionBindingId,e.promotionBindingId)||a.decision!==null&&JSON.stringify(a.decision)!==JSON.stringify(e.decision))return!1;let r=new Map(e.evaluations.map(i=>[i.evaluationRunId,i]));if(a.evaluations.some(i=>JSON.stringify(r.get(i.evaluationRunId))!==JSON.stringify(i)))return!1;let s=new Map(e.residualBlocks.map(i=>[i.id,i]));return a.residualBlocks.every(i=>i.artifactLineageId?s.get(i.id)?.artifactLineageId===i.artifactLineageId:!0)}c(Vs,"validEntryEvidenceEvolution");function Pl(a,e){if(a.status!=="failed"&&a.status!=="cancelled"||e.status!=="ready"||a.modelVersionId!==null||a.evaluations.length!==0||a.decision!==null||a.promotionBindingId!==null||a.residualBlocks.some(s=>s.id===a.trainableBlockId&&s.artifactLineageId!==null)||e.trainingPlanId!==null||e.modelRunId!==null||e.modelVersionId!==null||e.evaluations.length!==0||e.decision!==null||e.promotionBindingId!==null||e.queuedAt!==null||e.startedAt!==null||e.completedAt!==null||JSON.stringify(a.residualBlocks)!==JSON.stringify(e.residualBlocks))return!1;let t=!!(a.trainingPlanId||a.modelRunId),r=t?[...a.priorRunAttempts,{attemptOrdinal:a.attemptOrdinal,trainingPlanId:a.trainingPlanId,modelRunId:a.modelRunId,terminalStatus:a.status,queuedAt:a.queuedAt,startedAt:a.startedAt,completedAt:a.completedAt??e.updatedAt}]:a.priorRunAttempts;return e.attemptOrdinal===a.attemptOrdinal+(t?1:0)&&JSON.stringify(e.priorRunAttempts)===JSON.stringify(r)}c(Pl,"validEntryRetryEvolution");var Sr=class extends Nr{static{c(this,"SqliteContinualBenchReviewStore")}async saveContinualLearningDailyBatch(e){let t=aa.parse(e),r=await this.getContinualLearningDailyBatch(t.id);if(r&&(r.seriesId!==t.seriesId||r.scheduleEntryId!==t.scheduleEntryId||r.dayOrdinal!==t.dayOrdinal||JSON.stringify(r.sourceTaskset)!==JSON.stringify(t.sourceTaskset)||t.revision!==r.revision+1)){if(JSON.stringify(r)===JSON.stringify(t))return r;throw new Error("A daily learning batch update must preserve its intake identity and use the next revision.")}return await this.upsertPayload(`INSERT INTO continual_learning_daily_batches
2037
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[t.id,t.profileId,t.role,t.roleTargetId,t.modelArtifactLineageId,t.status,JSON.stringify(t),t.promotedAt,t.promotedAt]),await this.exec("COMMIT"),r={previous:n,active:t}}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=s.catch(()=>{}),await s,r}async getModelBinding(e){return this.getParsedPayload("SELECT payload FROM model_bindings WHERE id = ?",[e],He.parse)}async getActiveModelBinding(e){return this.getParsedPayload("SELECT payload FROM model_bindings WHERE profile_id = ? AND role = ? AND role_target_id = ? AND status = 'active' LIMIT 1",[e.profileId,e.role,e.roleTargetId],He.parse)}async listModelBindings(e){return this.listParsedPayloads(e?"SELECT payload FROM model_bindings WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM model_bindings ORDER BY updated_at DESC",e?[e]:[],He.parse)}async upsertPayload(e,t){await this.ready;let r=this.writeQueue.then(()=>this.run(e,t));this.writeQueue=r.catch(()=>{}),await r}async listParsedPayloads(e,t,r){return await this.ready,await this.writeQueue,(await this.all(e,t)).map(i=>r(JSON.parse(i.payload)))}async getParsedPayload(e,t,r){await this.ready,await this.writeQueue;let s=await this.get(e,t);return s?r(JSON.parse(s.payload)):null}};function Hd(a,e){let t=c(r=>({id:r.id,profileId:r.profileId,modelProjectId:r.modelProjectId,name:r.name,objective:r.objective,productionBinding:r.productionBinding,baseModel:r.baseModel,seedTaskset:r.seedTaskset,eligibleTaskPool:r.eligibleTaskPool,evaluationTasksets:r.evaluationTasksets,grader:r.grader,benchmarkProtocol:r.benchmarkProtocol,automaticEvaluation:r.automaticEvaluation,residualProfile:r.residualProfile,schedule:r.schedule,scheduleSealedAt:r.scheduleSealedAt,advancementPolicy:r.advancementPolicy,executionPolicy:r.executionPolicy,createdBy:r.createdBy,createdAt:r.createdAt}),"definition");return JSON.stringify(t(a))===JSON.stringify(t(e))}c(Hd,"sameSealedSeriesDefinition");function Ks(a,e){let t=c(r=>({seriesId:r.seriesId,profileId:r.profileId,modelProjectId:r.modelProjectId,scheduleEntryId:r.scheduleEntryId,releaseHash:r.releaseHash,ordinal:r.ordinal,label:r.label,role:r.role,branch:r.branch,parent:r.parent,taskset:r.taskset,sourceTasksets:r.sourceTasksets,taskSelection:r.taskSelection,trainableRank:r.trainableRank,serializedEnvelopeRank:r.serializedEnvelopeRank,enabledCumulativeRank:r.enabledCumulativeRank,trainableBlockId:r.trainableBlockId,residualBlocks:r.residualBlocks.map(({artifactLineageId:s,...i})=>i),createdAt:r.createdAt}),"lineage");return JSON.stringify(t(a))===JSON.stringify(t(e))}c(Ks,"sameEntryLineage");function $s(a,e){if(Il(a,e))return!0;let t=c((i,n)=>i===null||i===n,"appendOnlyId");if(a.attemptOrdinal!==e.attemptOrdinal||JSON.stringify(a.priorRunAttempts)!==JSON.stringify(e.priorRunAttempts)||!t(a.trainingPlanId,e.trainingPlanId)||!t(a.modelRunId,e.modelRunId)||!t(a.modelVersionId,e.modelVersionId)||!t(a.promotionBindingId,e.promotionBindingId)||a.decision!==null&&JSON.stringify(a.decision)!==JSON.stringify(e.decision))return!1;let r=new Map(e.evaluations.map(i=>[i.evaluationRunId,i]));if(a.evaluations.some(i=>JSON.stringify(r.get(i.evaluationRunId))!==JSON.stringify(i)))return!1;let s=new Map(e.residualBlocks.map(i=>[i.id,i]));return a.residualBlocks.every(i=>i.artifactLineageId?s.get(i.id)?.artifactLineageId===i.artifactLineageId:!0)}c($s,"validEntryEvidenceEvolution");function Il(a,e){if(a.status!=="failed"&&a.status!=="cancelled"||e.status!=="ready"||a.modelVersionId!==null||a.evaluations.length!==0||a.decision!==null||a.promotionBindingId!==null||a.residualBlocks.some(s=>s.id===a.trainableBlockId&&s.artifactLineageId!==null)||e.trainingPlanId!==null||e.modelRunId!==null||e.modelVersionId!==null||e.evaluations.length!==0||e.decision!==null||e.promotionBindingId!==null||e.queuedAt!==null||e.startedAt!==null||e.completedAt!==null||JSON.stringify(a.residualBlocks)!==JSON.stringify(e.residualBlocks))return!1;let t=!!(a.trainingPlanId||a.modelRunId),r=t?[...a.priorRunAttempts,{attemptOrdinal:a.attemptOrdinal,trainingPlanId:a.trainingPlanId,modelRunId:a.modelRunId,terminalStatus:a.status,queuedAt:a.queuedAt,startedAt:a.startedAt,completedAt:a.completedAt??e.updatedAt}]:a.priorRunAttempts;return e.attemptOrdinal===a.attemptOrdinal+(t?1:0)&&JSON.stringify(e.priorRunAttempts)===JSON.stringify(r)}c(Il,"validEntryRetryEvolution");var yr=class extends Rr{static{c(this,"SqliteContinualBenchReviewStore")}async saveContinualLearningDailyBatch(e){let t=ea.parse(e),r=await this.getContinualLearningDailyBatch(t.id);if(r&&(r.seriesId!==t.seriesId||r.scheduleEntryId!==t.scheduleEntryId||r.dayOrdinal!==t.dayOrdinal||JSON.stringify(r.sourceTaskset)!==JSON.stringify(t.sourceTaskset)||t.revision!==r.revision+1)){if(JSON.stringify(r)===JSON.stringify(t))return r;throw new Error("A daily learning batch update must preserve its intake identity and use the next revision.")}return await this.upsertPayload(`INSERT INTO continual_learning_daily_batches
2038
2038
  (id, series_id, schedule_entry_id, day_ordinal, status, revision, payload, created_at, updated_at)
2039
2039
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2040
- ON CONFLICT(id) DO UPDATE SET status = excluded.status, revision = excluded.revision, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.seriesId,t.scheduleEntryId,t.dayOrdinal,t.status,t.revision,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getContinualLearningDailyBatch(e){return this.getParsedPayload("SELECT payload FROM continual_learning_daily_batches WHERE id = ?",[e],aa.parse)}async listContinualLearningDailyBatches(e={}){return e.seriesId?this.listParsedPayloads("SELECT payload FROM continual_learning_daily_batches WHERE series_id = ? ORDER BY day_ordinal ASC",[e.seriesId],aa.parse):this.listParsedPayloads("SELECT payload FROM continual_learning_daily_batches ORDER BY series_id, day_ordinal ASC",[],aa.parse)}async saveContinualBenchIssueReview(e){let t=ra.parse(e),r=await this.getContinualBenchIssueReview(t.id);if(r&&(r.seriesId!==t.seriesId||r.passLabel!==t.passLabel||r.packet.contentHash!==t.packet.contentHash||t.revision!==r.revision+1)){if(JSON.stringify(r)===JSON.stringify(t))return r;throw new Error("A Continual Support review update must preserve its sealed packet and use the next revision.")}return await this.upsertPayload(`INSERT INTO continual_bench_issue_reviews (id, series_id, pass_label, status, revision, payload, created_at, updated_at)
2040
+ ON CONFLICT(id) DO UPDATE SET status = excluded.status, revision = excluded.revision, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.seriesId,t.scheduleEntryId,t.dayOrdinal,t.status,t.revision,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getContinualLearningDailyBatch(e){return this.getParsedPayload("SELECT payload FROM continual_learning_daily_batches WHERE id = ?",[e],ea.parse)}async listContinualLearningDailyBatches(e={}){return e.seriesId?this.listParsedPayloads("SELECT payload FROM continual_learning_daily_batches WHERE series_id = ? ORDER BY day_ordinal ASC",[e.seriesId],ea.parse):this.listParsedPayloads("SELECT payload FROM continual_learning_daily_batches ORDER BY series_id, day_ordinal ASC",[],ea.parse)}async saveContinualBenchIssueReview(e){let t=ta.parse(e),r=await this.getContinualBenchIssueReview(t.id);if(r&&(r.seriesId!==t.seriesId||r.passLabel!==t.passLabel||r.packet.contentHash!==t.packet.contentHash||t.revision!==r.revision+1)){if(JSON.stringify(r)===JSON.stringify(t))return r;throw new Error("A Continual Support review update must preserve its sealed packet and use the next revision.")}return await this.upsertPayload(`INSERT INTO continual_bench_issue_reviews (id, series_id, pass_label, status, revision, payload, created_at, updated_at)
2041
2041
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2042
- ON CONFLICT(id) DO UPDATE SET status = excluded.status, revision = excluded.revision, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.seriesId,t.passLabel,t.status,t.revision,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getContinualBenchIssueReview(e){return this.getParsedPayload("SELECT payload FROM continual_bench_issue_reviews WHERE id = ?",[e],ra.parse)}async listContinualBenchIssueReviews(e={}){return e.seriesId?this.listParsedPayloads("SELECT payload FROM continual_bench_issue_reviews WHERE series_id = ? ORDER BY updated_at DESC",[e.seriesId],ra.parse):this.listParsedPayloads("SELECT payload FROM continual_bench_issue_reviews ORDER BY updated_at DESC",[],ra.parse)}};var vr=class extends Sr{static{c(this,"SqliteDatasetStore")}async listDatasetCatalogTasksets(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT
2042
+ ON CONFLICT(id) DO UPDATE SET status = excluded.status, revision = excluded.revision, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.seriesId,t.passLabel,t.status,t.revision,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async getContinualBenchIssueReview(e){return this.getParsedPayload("SELECT payload FROM continual_bench_issue_reviews WHERE id = ?",[e],ta.parse)}async listContinualBenchIssueReviews(e={}){return e.seriesId?this.listParsedPayloads("SELECT payload FROM continual_bench_issue_reviews WHERE series_id = ? ORDER BY updated_at DESC",[e.seriesId],ta.parse):this.listParsedPayloads("SELECT payload FROM continual_bench_issue_reviews ORDER BY updated_at DESC",[],ta.parse)}};var kr=class extends yr{static{c(this,"SqliteDatasetStore")}async listDatasetCatalogTasksets(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT
2043
2043
  id AS taskset_id,
2044
2044
  CAST(json_extract(payload, '$.revision') AS INTEGER) AS taskset_revision,
2045
2045
  json_extract(payload, '$.datasetArtifact.id') AS artifact_id,
@@ -2083,7 +2083,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
2083
2083
  updated_at
2084
2084
  FROM tasksets
2085
2085
  WHERE profile_id = ?
2086
- 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=>tr.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?tr.parse(JSON.parse(t.payload)):null}async upsertExternalDatasetSource(e){let t=tr.parse(e);await this.ready;let r=ce(),s=t.kind==="huggingface"?t.repositoryId:null,i=t.kind==="huggingface"?t.revision:null,n=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
2086
+ 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=>Qa.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?Qa.parse(JSON.parse(t.payload)):null}async upsertExternalDatasetSource(e){let t=Qa.parse(e);await this.ready;let r=ie(),s=t.kind==="huggingface"?t.repositoryId:null,i=t.kind==="huggingface"?t.revision:null,n=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
2087
2087
  id, profile_id, source_kind, session_id, source_hash,
2088
2088
  repository_id, revision, payload, created_at, updated_at
2089
2089
  )
@@ -2096,7 +2096,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
2096
2096
  repository_id = excluded.repository_id,
2097
2097
  revision = excluded.revision,
2098
2098
  payload = excluded.payload,
2099
- updated_at = excluded.updated_at`,[t.id,t.profileId,t.kind,t.sourceHash,s,i,JSON.stringify(t),r,r]));return this.writeQueue=n.catch(()=>{}),await n,t}async listDatasetImportJobs(e){return this.listParsedPayloads("SELECT payload FROM dataset_import_jobs WHERE profile_id = ? ORDER BY updated_at DESC",[e],ta.parse)}async listAllDatasetImportJobs(){return this.listParsedPayloads("SELECT payload FROM dataset_import_jobs ORDER BY updated_at DESC",[],ta.parse)}async getDatasetImportJob(e){return this.getParsedPayload("SELECT payload FROM dataset_import_jobs WHERE id = ?",[e],ta.parse)}async upsertDatasetImportJob(e){let t=ta.parse(e),r=t.locator?.repositoryId??null,s=t.inspection?.resolvedRevision??t.locator?.requestedRevision??null;return await this.upsertPayload(`INSERT INTO dataset_import_jobs (
2099
+ updated_at = excluded.updated_at`,[t.id,t.profileId,t.kind,t.sourceHash,s,i,JSON.stringify(t),r,r]));return this.writeQueue=n.catch(()=>{}),await n,t}async listDatasetImportJobs(e){return this.listParsedPayloads("SELECT payload FROM dataset_import_jobs WHERE profile_id = ? ORDER BY updated_at DESC",[e],Zt.parse)}async listAllDatasetImportJobs(){return this.listParsedPayloads("SELECT payload FROM dataset_import_jobs ORDER BY updated_at DESC",[],Zt.parse)}async getDatasetImportJob(e){return this.getParsedPayload("SELECT payload FROM dataset_import_jobs WHERE id = ?",[e],Zt.parse)}async upsertDatasetImportJob(e){let t=Zt.parse(e),r=t.locator?.repositoryId??null,s=t.inspection?.resolvedRevision??t.locator?.requestedRevision??null;return await this.upsertPayload(`INSERT INTO dataset_import_jobs (
2100
2100
  id, profile_id, source_kind, status, repository_id, revision,
2101
2101
  taskset_id, payload, created_at, updated_at
2102
2102
  )
@@ -2109,7 +2109,7 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
2109
2109
  revision = excluded.revision,
2110
2110
  taskset_id = excluded.taskset_id,
2111
2111
  payload = excluded.payload,
2112
- 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],Gt.parse)}async getDatasetArtifactRegistryEntry(e){return this.getParsedPayload("SELECT payload FROM dataset_artifacts WHERE id = ?",[e],Gt.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,Gt.parse)}async upsertDatasetArtifactRegistryEntry(e){let t=Gt.parse(e),r=t.manifest;return await this.upsertPayload(`INSERT INTO dataset_artifacts (
2112
+ 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],Vt.parse)}async getDatasetArtifactRegistryEntry(e){return this.getParsedPayload("SELECT payload FROM dataset_artifacts WHERE id = ?",[e],Vt.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,Vt.parse)}async upsertDatasetArtifactRegistryEntry(e){let t=Vt.parse(e),r=t.manifest;return await this.upsertPayload(`INSERT INTO dataset_artifacts (
2113
2113
  id, profile_id, taskset_id, taskset_revision, content_hash,
2114
2114
  format, row_count, storage_root, payload, created_at, updated_at
2115
2115
  )
@@ -2123,42 +2123,42 @@ CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
2123
2123
  row_count = excluded.row_count,
2124
2124
  storage_root = excluded.storage_root,
2125
2125
  payload = excluded.payload,
2126
- 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 Ea=_.object({profileRef:Ue,manifest:Ge,metric:Ci,gradeRefs:_.array(z),receiptRefs:_.array(z),passRate:_.number().min(0).max(1),passed:_.boolean(),completedAt:_.string().datetime(),contentHash:_.string().regex(/^[a-f0-9]{64}$/)}).strict();var Ir=class extends vr{static{c(this,"SqliteEvaluationResultStore")}async saveProfileEvaluationGrade(e){let t=Zr.parse(e);se(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],Zr.parse)}async saveProfileEvaluationReceipt(e){let t=$t.parse(e);gn(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],$t.parse)}async saveProfileEvaluationRun(e){let t=Ea.parse(e);se(t,"Profile evaluation run"),se(t.manifest,"Profile evaluation run manifest"),Xa(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||R(t.receiptRefs)!==R(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 d=t.receiptRefs[i],o=await this.getProfileEvaluationReceipt(d.id);if(!o||o.contentHash!==d.contentHash||o.runManifest.id!==t.manifest.id||o.runManifest.contentHash!==t.manifest.contentHash||o.id!==n.receiptId||o.taskId!==n.taskId||o.seed!==n.seed)throw new Error("Profile evaluation run references a missing or mismatched receipt.");let m=t.gradeRefs[i],l=await this.getProfileEvaluationGrade(m.contentHash);if(!l||l.contentHash!==m.contentHash||!o.graderEvidenceRefs.some(f=>f.id===m.id&&f.contentHash===m.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,R(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],Ea.parse)}async listProfileEvaluationRuns(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_runs WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[R(Ue.parse(e))],Ea.parse)}async saveProfileEvaluationComparison(e,t){let r=Ue.parse(e),s=da.parse(t);se(s,"Profile evaluation comparison");let i=[];for(let d of s.members){let o=await this.getProfileEvaluationRun(d.runManifest.id);if(!o||R(o.profileRef)!==R(r)||o.manifest.contentHash!==d.runManifest.contentHash||o.metric.contentHash!==d.metricResultHash)throw new Error("Profile evaluation comparison references a missing or mismatched run.");i.push({manifest:o.manifest,result:o.metric})}if($o({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,R(r),JSON.stringify(s),s.createdAt]),s}async getProfileEvaluationComparison(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_comparisons WHERE id = ?",[e],da.parse)}async listProfileEvaluationComparisons(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_comparisons WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[R(Ue.parse(e))],da.parse)}async saveProfileEvaluationSuiteRun(e,t,r){let s=Ue.parse(e),i=ca.parse(r);se(i,"Profile evaluation suite run");let n=[];for(let m of i.members){let l=await this.getProfileEvaluationRun(m.runManifest.id);if(!l||R(l.profileRef)!==R(s)||l.manifest.contentHash!==m.runManifest.contentHash||l.contentHash!==m.runHash||l.passed!==m.passed||l.metric.value!==m.score)throw new Error("Profile evaluation suite references a missing or mismatched run.");n.push({definitionId:m.definitionId,manifest:l.manifest,runHash:l.contentHash,passed:l.passed,score:l.metric.value})}if(Vo({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 o=await this.getProfileEvaluationSuiteRun(i.id);if(o){if(o.contentHash!==i.contentHash)throw new Error(`Profile evaluation suite run ${i.id} is immutable.`);return o}return await this.upsertPayload("INSERT INTO profile_evaluation_suite_runs (id, profile_key, payload, created_at) VALUES (?, ?, ?, ?)",[i.id,R(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",[R(Ue.parse(e))],ca.parse)}async saveBenchmarkRun(e){let t=pr.parse(e.run);return se(t,"Benchmark run"),await this.upsertPayload(`INSERT INTO benchmark_runs (id, taskset_id, phase, payload, created_at)
2126
+ 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 Nr=class extends kr{static{c(this,"SqliteEvaluationResultStore")}async saveProfileEvaluationGrade(e){let t=Gr.parse(e);ke(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],Gr.parse)}async saveProfileEvaluationReceipt(e){let t=Yt.parse(e);_n(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],Yt.parse)}async saveProfileEvaluationRun(e){let t=ia.parse(e);ke(t,"Profile evaluation run"),ke(t.manifest,"Profile evaluation run manifest"),Ai(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||y(t.receiptRefs)!==y(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],d=await this.getProfileEvaluationReceipt(o.id);if(!d||d.contentHash!==o.contentHash||d.runManifest.id!==t.manifest.id||d.runManifest.contentHash!==t.manifest.contentHash||d.id!==n.receiptId||d.taskId!==n.taskId||d.seed!==n.seed)throw new Error("Profile evaluation run references a missing or mismatched receipt.");let m=t.gradeRefs[i],l=await this.getProfileEvaluationGrade(m.contentHash);if(!l||l.contentHash!==m.contentHash||!d.graderEvidenceRefs.some(E=>E.id===m.id&&E.contentHash===m.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,y(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],ia.parse)}async listProfileEvaluationRuns(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_runs WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[y(ft.parse(e))],ia.parse)}async saveProfileEvaluationComparison(e,t){let r=ft.parse(e),s=Va.parse(t);ke(s,"Profile evaluation comparison");let i=[];for(let o of s.members){let d=await this.getProfileEvaluationRun(o.runManifest.id);if(!d||y(d.profileRef)!==y(r)||d.manifest.contentHash!==o.runManifest.contentHash||d.metric.contentHash!==o.metricResultHash)throw new Error("Profile evaluation comparison references a missing or mismatched run.");i.push({manifest:d.manifest,result:d.metric})}if(Cn({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,y(r),JSON.stringify(s),s.createdAt]),s}async getProfileEvaluationComparison(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_comparisons WHERE id = ?",[e],Va.parse)}async listProfileEvaluationComparisons(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_comparisons WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[y(ft.parse(e))],Va.parse)}async saveProfileEvaluationSuiteRun(e,t,r){let s=ft.parse(e),i=za.parse(r);ke(i,"Profile evaluation suite run");let n=[];for(let m of i.members){let l=await this.getProfileEvaluationRun(m.runManifest.id);if(!l||y(l.profileRef)!==y(s)||l.manifest.contentHash!==m.runManifest.contentHash||l.contentHash!==m.runHash||l.passed!==m.passed||l.metric.value!==m.score)throw new Error("Profile evaluation suite references a missing or mismatched run.");n.push({definitionId:m.definitionId,manifest:l.manifest,runHash:l.contentHash,passed:l.passed,score:l.metric.value})}if(Pn({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 d=await this.getProfileEvaluationSuiteRun(i.id);if(d){if(d.contentHash!==i.contentHash)throw new Error(`Profile evaluation suite run ${i.id} is immutable.`);return d}return await this.upsertPayload("INSERT INTO profile_evaluation_suite_runs (id, profile_key, payload, created_at) VALUES (?, ?, ?, ?)",[i.id,y(s),JSON.stringify(i),i.createdAt]),i}async getProfileEvaluationSuiteRun(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_suite_runs WHERE id = ?",[e],za.parse)}async listProfileEvaluationSuiteRuns(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_suite_runs WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[y(ft.parse(e))],za.parse)}async saveBenchmarkRun(e){let t=dr.parse(e.run);return ke(t,"Benchmark run"),await this.upsertPayload(`INSERT INTO benchmark_runs (id, taskset_id, phase, payload, created_at)
2127
2127
  VALUES (?, ?, ?, ?, ?)
2128
- 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],pr.parse)}async saveBenchmarkComparison(e){let t=ur.parse(e.comparison);return se(t,"Benchmark comparison"),await this.upsertPayload(`INSERT INTO benchmark_comparisons (id, taskset_id, payload, created_at)
2128
+ 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],dr.parse)}async saveBenchmarkComparison(e){let t=cr.parse(e.comparison);return ke(t,"Benchmark comparison"),await this.upsertPayload(`INSERT INTO benchmark_comparisons (id, taskset_id, payload, created_at)
2129
2129
  VALUES (?, ?, ?, ?)
2130
- 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],ur.parse)}async saveEvaluationResult(e){let t=Za.parse(e.result);if(se(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)
2131
- 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],Za.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],Za.parse)}};var Or=class extends Ir{static{c(this,"SqlitePreferenceComparisonStore")}async savePreferenceComparisonRelease(e){let t=ua.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)
2132
- 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],ua.parse)}async listPreferenceComparisonReleases(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_releases WHERE taskset_id = ? ORDER BY created_at DESC",[e],ua.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=at.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(!xl(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)
2133
- 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],at.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??[]],at.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 = ?))
2134
- 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:at.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=ma.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=at.parse(JSON.parse(i.payload)),d=await this.get("SELECT payload FROM preference_comparison_releases WHERE id = ?",[n.assignment.comparisonRelease.id]);if(!d)throw new Error("Preference comparison release was not found.");if(ua.parse(JSON.parse(d.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 o=await this.get("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? AND reviewer_key = ?",[t.assignmentId,t.reviewerKey]);if(o){let m=ma.parse(JSON.parse(o.payload));if(m.receipt.contentHash!==t.receipt.contentHash)throw new Error("Preference comparison submission is already recorded for this reviewer and assignment.");r=m;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],ma.parse)}async listPreferenceComparisonSubmissions(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? ORDER BY submitted_at ASC",[e],ma.parse)}async savePreferenceComparisonCalibration(e){let t=Xs.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)
2135
- 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],Xs.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:at.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 xl(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}c(xl,"isPreferenceAssignmentTransition");import{cp as Ml,lstat as zs,mkdir as Xl,mkdtemp as Dl,readFile as Yd,readdir as Kd,rename as Hl,rm as Ul}from"node:fs/promises";import Le from"node:path";async function rt(a,e,t,r={}){return Fl(Le.join(a,"training","tasksets"),e,t,r)}c(rt,"materializeImmutableTasksetPackage");async function Fl(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 Xl(a,{recursive:!0});let s=await Dl(Le.join(a,".starter-")),i=Le.join(a,t);try{if(r.source){let d=await zs(r.source.directory);if(!d.isDirectory()||d.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");await _a(r.source.directory);for(let o of await Kd(r.source.directory))await Ml(Le.join(r.source.directory,o),Le.join(s,o),{recursive:!0,force:!1,errorOnExist:!0});if(await _a(s),await Z(s)!==r.source.packageHash)throw new Error("Taskset draft files changed during publication. Refresh before publishing.")}await yo(e.taskset,s,{generatedFiles:e.generatedFiles}),await r.verify?.(s);let n=(await _a(s)).sort();try{await Hl(s,i)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;let o=await zs(i);if(!o.isDirectory()||o.isSymbolicLink())throw new Error("Starter package destination is not a regular directory.");let m=await _a(i);if(JSON.stringify(m.sort())!==JSON.stringify(n))throw new Error("Existing starter package has a different file inventory.");for(let l of n){let f=Le.join(i,l),p=await zs(f);if(!p.isFile()||p.isSymbolicLink()||!(await Yd(f)).equals(await Yd(Le.join(s,l))))throw new Error("Existing starter package differs from the pinned creation attempt.")}}return i}finally{await Ul(s,{recursive:!0,force:!0})}}c(Fl,"materializeImmutableTasksetPackageAtRoot");async function _a(a,e=""){let t=[];for(let r of await Kd(Le.join(a,e),{withFileTypes:!0})){let s=Le.join(e,r.name);if(r.isSymbolicLink())throw new Error("Starter packages cannot contain symbolic links.");if(r.isDirectory())t.push(...await _a(a,s));else if(r.isFile())t.push(s);else throw new Error("Starter packages must contain regular files and directories.")}return t}c(_a,"regularFiles");import{lstat as zd,readFile as Gd}from"node:fs/promises";import xt from"node:path";import{constants as Gs}from"node:fs";import{lstat as $l,open as Jl,readdir as Vl}from"node:fs/promises";import Qs from"node:path";function _h(a){let e=to(a.taskset),{agentSnapshot:t,harnessRelease:r}=a.releasedHarness?{agentSnapshot:lt.parse(a.releasedHarness.agentSnapshot),harnessRelease:pt.parse(a.releasedHarness.harnessRelease)}:jl(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=eo(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:d,tasksetRelease:o}=Fe({taskset:a.taskset,selectedTasks:i,adapterId:a.adapterId??Se(a.taskset),admittedTasksetRelease:a.tasksetRelease,rewardExecution:a.rewardExecution}),m=a.now??(()=>new Date().toISOString()),l=_n({schemaVersion:"openpond.runManifest.v1",id:`run-manifest-${R([r.contentHash,o.contentHash,a.model]).slice(0,24)}`,harnessRelease:{id:r.id,contentHash:r.contentHash},tasksetRelease:{id:o.id,contentHash:o.contentHash},model:{provider:a.model.providerId,model:a.model.modelId,revision:null,artifactHash:null,tokenizerRevision:null,chatTemplateHash:null},runtimeTarget:{adapterId:a.adapterId??Se(a.taskset),placement:"local",runtimeVersion:"desktop-v1",capabilityReceipt:R({environment:s,tools:e,capabilities:a.taskset.capabilities})},limits:{maxTurns:128,timeoutMs:a.taskset.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:null},approval:null,createdAt:m(),metadata:{sourceTasksetId:a.taskset.id,sourceTasksetRevision:a.taskset.revision,reasoningEffort:a.reasoningEffort??null}});return{agentSnapshot:t,harnessRelease:r,environmentRelease:n,verifierSetRelease:d,tasksetRelease:o,runManifest:l}}c(_h,"compileDesktopHarnessContext");function jl(a,e){let t=a.profileRelease?{id:a.profileRelease.id,contentHash:Pt(a.profileRelease.contentHash)}:e?.git?.head?{id:`source-${st(e.git.head)}`,contentHash:Pt(e.git.head)}:null;return ro({sourceRelease:t,profileHead:e?.git?.head??null,skills:Yl(e),agents:Kl(e)})}c(jl,"compileTemporaryProfileHarness");function Bl(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=Jd(a.attempt,a.grade),s=a.grade.components.map(i=>({id:`grader-${st(i.graderId)}-${a.grade.id}`,contentHash:R(i),mediaType:"application/vnd.openpond.grader-evidence+json",sizeBytes:Buffer.byteLength(K(i))}));return $t.parse(hn({schemaVersion:"openpond.attemptReceipt.v1",id:`receipt-${R([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:R(a.attempt.output),traceHash:t?Pt(t.sha256):R({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??[]}}))}c(Bl,"projectDesktopAttemptReceipt");function hh(a){let e=Bl({manifest:a.context.runManifest,attempt:a.attempt,grade:a.grade,artifacts:a.artifacts}),t=a.context.tasksetRelease.tasks.find(u=>u.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(u=>u.kind==="output_artifact").map(u=>({path:typeof u.metadata.requiredOutputPath=="string"?u.metadata.requiredOutputPath:u.path,artifact:Lr(u),detectedMediaType:u.mediaType??null,status:"collected",parseStatus:$d(u.metadata.parseStatus),schemaStatus:$d(u.metadata.schemaStatus),evidenceRefs:[Lr(u)],metadata:{sourceArtifactId:u.id}})),i=Wo({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((u,T)=>ql({component:u,grader:a.context.verifierSetRelease.graders.find(h=>h.id===u.graderId),evidenceRef:e.graderEvidenceRefs[T]??null,gradeScored:a.grade.score!==null,boundResult:a.grade.rewardComposition?.results.find(h=>h.graderId===u.graderId)})),d=Yo({requiredOutputs:r,manifest:i}),o=Wl(a.attempt,a.grade),m=d.some(u=>u.status==="unscorable"&&u.failureOwner==="collector"),l=d.some(u=>u.status==="scored"&&!u.passed),f=o.outcomeClass==="completed"&&m?{outcomeClass:"collector_failure",failureOwner:"collector"}:o.outcomeClass==="completed"&&l?{outcomeClass:"incomplete_output",failureOwner:"policy"}:o,p=Sn({id:`reward-${R([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,...f,components:[...n,...d],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:p}}c(hh,"projectDesktopCanonicalReceipts");function gh(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 Xn({id:`rollout-${R([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}})}c(gh,"projectDesktopCanonicalRollout");function ql(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}}}c(ql,"portableRewardComponent");function Wl(a,e){let t=Rn.safeParse(a.metadata.outcomeClass);if(t.success){let s=a.metadata.failureOwner===null?null:wn.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=Jd(a,e);return r?Nn({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"}}c(Wl,"canonicalOutcome");function $d(a){return a==="passed"||a==="failed"?a:"not_requested"}c($d,"artifactValidationStatus");function Yl(a){return(a?.skills??[]).filter(e=>e.enabled).map(e=>({id:`skill-${st(e.name)}`,path:`skills/${st(e.name)}/SKILL.md`,contentHash:Pt(e.sourceHash),sizeBytes:Math.max(0,e.charCount),mediaType:"text/markdown",visibility:"policy"}))}c(Yl,"portableSkills");function Kl(a){let e=new Map;for(let t of a?.agents??[])t.enabled&&e.set(t.id,R({name:t.name,path:t.path}));return[...e].map(([t,r])=>({id:`agent-${st(t)}`,path:`agents/${st(t)}/release.json`,contentHash:Pt(r),sizeBytes:0,mediaType:"application/vnd.openpond.agent-release+json",visibility:"policy"}))}c(Kl,"portableAgents");function Se(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:${st(a.environment.entrypoint)}`}c(Se,"desktopTasksetRuntimeAdapterId");function Lr(a){return{id:a.id,contentHash:Pt(a.sha256),mediaType:a.mediaType??null,sizeBytes:a.sizeBytes}}c(Lr,"portableArtifact");function Jd(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}c(Jd,"attemptFailureClass");function Pt(a){return/^[a-f0-9]{64}$/.test(a)?a:R(a)}c(Pt,"hash");function st(a){return a.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"asset"}c(st,"segment");async function Vd(a,e){if(a.metadata.taskDefinition!==void 0||a.metadata.rewardBinding!==void 0)return{taskset:a,generatedFiles:[]};let t=await $l(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 d of await Vl(Qs.join(e,n),{withFileTypes:!0})){let o=Qs.posix.join(n,d.name);if(d.isSymbolicLink())throw new Error("Taskset files cannot contain symbolic links.");if(d.name.startsWith(".env"))throw new Error("Environment files cannot be included in a Taskset package.");if(d.isDirectory()){await i(o);continue}if(!d.isFile())throw new Error("Taskset packages require regular files.");if(fo(o))continue;if(r.size>=1e4)throw new Error("Taskset source exceeds the file inventory limit.");let m=await Jl(Qs.join(e,o),Gs.O_RDONLY|Gs.O_NOFOLLOW|Gs.O_NONBLOCK);try{let l=await m.stat();if(s+=l.size,!l.isFile()||s>Ze*3/4)throw new Error("Taskset source exceeds the package byte limit.");let f=Buffer.alloc(l.size),p=0;for(;p<f.length;){let u=await m.read(f,p,f.length-p,p);if(!u.bytesRead)throw new Error("Taskset source changed during capture.");p+=u.bytesRead}if((await m.read(Buffer.alloc(1),0,1,p)).bytesRead)throw new Error("Taskset source changed during capture.");r.set(o,f)}finally{await m.close()}}}return c(i,"visit"),await i(),Eo(a,r,Se(a))}c(Vd,"prepareAuthoredTasksetFiles");async function Mt(a,e){for(let r of qe.parse(e.metadata.portableFileInventory??[])){let s=xt.resolve(a,r.sourcePath);if(!s.startsWith(`${xt.resolve(a)}${xt.sep}`))throw new Error("Taskset inventory file escapes its package.");let i=await zd(s);if(!i.isFile()||i.isSymbolicLink())throw new Error("Taskset inventory requires regular files.");let n=await Gd(s);if(n.length!==r.asset.sizeBytes||ct(n)!==r.asset.contentHash)throw new Error(`Taskset file differs from its immutable inventory: ${r.asset.id}.`)}let t=xt.resolve(a,"assets");for(let r of e.tasks)for(let s of r.assets??[]){let i=xt.resolve(a,s.artifactRef);if(i===t||!i.startsWith(`${t}${xt.sep}`))throw new Error(`Taskset asset ${s.id} escapes the package assets directory.`);let n=await zd(i);if(!n.isFile()||n.isSymbolicLink())throw new Error(`Taskset asset ${s.id} is not a regular file.`);let d=await Gd(i);if(d.byteLength!==s.sizeBytes||ct(d)!==s.sha256)throw new Error(`Taskset asset ${s.id} does not match its immutable manifest.`)}}c(Mt,"verifyPublishedTasksetAssets");function br(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?F.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)
2130
+ 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],cr.parse)}async saveEvaluationResult(e){let t=Ja.parse(e.result);if(ke(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)
2131
+ 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],Ja.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],Ja.parse)}};var Sr=class extends Nr{static{c(this,"SqlitePreferenceComparisonStore")}async savePreferenceComparisonRelease(e){let t=ca.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)
2132
+ 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],ca.parse)}async listPreferenceComparisonReleases(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_releases WHERE taskset_id = ? ORDER BY created_at DESC",[e],ca.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=Qe.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(!Ol(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)
2133
+ 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],Qe.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??[]],Qe.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 = ?))
2134
+ 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:Qe.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=la.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=Qe.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(ca.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 d=await this.get("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? AND reviewer_key = ?",[t.assignmentId,t.reviewerKey]);if(d){let m=la.parse(JSON.parse(d.payload));if(m.receipt.contentHash!==t.receipt.contentHash)throw new Error("Preference comparison submission is already recorded for this reviewer and assignment.");r=m;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],la.parse)}async listPreferenceComparisonSubmissions(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? ORDER BY submitted_at ASC",[e],la.parse)}async savePreferenceComparisonCalibration(e){let t=xs.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)
2135
+ 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],xs.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:Qe.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 Ol(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}c(Ol,"isPreferenceAssignmentTransition");import{cp as Ll,lstat as Js,mkdir as Al,mkdtemp as bl,readFile as Ud,readdir as Fd,rename as Cl,rm as Pl}from"node:fs/promises";import ve from"node:path";async function Ze(a,e,t,r={}){return xl(ve.join(a,"training","tasksets"),e,t,r)}c(Ze,"materializeImmutableTasksetPackage");async function xl(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 Al(a,{recursive:!0});let s=await bl(ve.join(a,".starter-")),i=ve.join(a,t);try{if(r.source){let o=await Js(r.source.directory);if(!o.isDirectory()||o.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");await ma(r.source.directory);for(let d of await Fd(r.source.directory))await Ll(ve.join(r.source.directory,d),ve.join(s,d),{recursive:!0,force:!1,errorOnExist:!0});if(await ma(s),await G(s)!==r.source.packageHash)throw new Error("Taskset draft files changed during publication. Refresh before publishing.")}await wo(e.taskset,s,{generatedFiles:e.generatedFiles}),await r.verify?.(s);let n=(await ma(s)).sort();try{await Cl(s,i)}catch(o){if(!["EEXIST","ENOTEMPTY"].includes(o.code??""))throw o;let d=await Js(i);if(!d.isDirectory()||d.isSymbolicLink())throw new Error("Starter package destination is not a regular directory.");let m=await ma(i);if(JSON.stringify(m.sort())!==JSON.stringify(n))throw new Error("Existing starter package has a different file inventory.");for(let l of n){let E=ve.join(i,l),p=await Js(E);if(!p.isFile()||p.isSymbolicLink()||!(await Ud(E)).equals(await Ud(ve.join(s,l))))throw new Error("Existing starter package differs from the pinned creation attempt.")}}return i}finally{await Pl(s,{recursive:!0,force:!0})}}c(xl,"materializeImmutableTasksetPackageAtRoot");async function ma(a,e=""){let t=[];for(let r of await Fd(ve.join(a,e),{withFileTypes:!0})){let s=ve.join(e,r.name);if(r.isSymbolicLink())throw new Error("Starter packages cannot contain symbolic links.");if(r.isDirectory())t.push(...await ma(a,s));else if(r.isFile())t.push(s);else throw new Error("Starter packages must contain regular files and directories.")}return t}c(ma,"regularFiles");import{lstat as Wd,readFile as Yd}from"node:fs/promises";import bt from"node:path";import{constants as Vs}from"node:fs";import{lstat as jl,open as Bl,readdir as ql}from"node:fs/promises";import zs from"node:path";function $_(a){let e=Zn(a.taskset),{agentSnapshot:t,harnessRelease:r}=a.releasedHarness?{agentSnapshot:nt.parse(a.releasedHarness.agentSnapshot),harnessRelease:ot.parse(a.releasedHarness.harnessRelease)}:Xl(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=Qn(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:d}=Me({taskset:a.taskset,selectedTasks:i,adapterId:a.adapterId??Re(a.taskset),admittedTasksetRelease:a.tasksetRelease,rewardExecution:a.rewardExecution}),m=a.now??(()=>new Date().toISOString()),l=En({schemaVersion:"openpond.runManifest.v1",id:`run-manifest-${y([r.contentHash,d.contentHash,a.model]).slice(0,24)}`,harnessRelease:{id:r.id,contentHash:r.contentHash},tasksetRelease:{id:d.id,contentHash:d.contentHash},model:{provider:a.model.providerId,model:a.model.modelId,revision:null,artifactHash:null,tokenizerRevision:null,chatTemplateHash:null},runtimeTarget:{adapterId:a.adapterId??Re(a.taskset),placement:"local",runtimeVersion:"desktop-v1",capabilityReceipt:y({environment:s,tools:e,capabilities:a.taskset.capabilities})},limits:{maxTurns:128,timeoutMs:a.taskset.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:null},approval:null,createdAt:m(),metadata:{sourceTasksetId:a.taskset.id,sourceTasksetRevision:a.taskset.revision,reasoningEffort:a.reasoningEffort??null}});return{agentSnapshot:t,harnessRelease:r,environmentRelease:n,verifierSetRelease:o,tasksetRelease:d,runManifest:l}}c($_,"compileDesktopHarnessContext");function Xl(a,e){let t=a.profileRelease?{id:a.profileRelease.id,contentHash:At(a.profileRelease.contentHash)}:e?.git?.head?{id:`source-${et(e.git.head)}`,contentHash:At(e.git.head)}:null;return to({sourceRelease:t,profileHead:e?.git?.head??null,skills:Ul(e),agents:Fl(e)})}c(Xl,"compileTemporaryProfileHarness");function Ml(a){let e=a.artifacts.map(vr),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=Bd(a.attempt,a.grade),s=a.grade.components.map(i=>({id:`grader-${et(i.graderId)}-${a.grade.id}`,contentHash:y(i),mediaType:"application/vnd.openpond.grader-evidence+json",sizeBytes:Buffer.byteLength(Y(i))}));return Yt.parse(fn({schemaVersion:"openpond.attemptReceipt.v1",id:`receipt-${y([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:y(a.attempt.output),traceHash:t?At(t.sha256):y({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??[]}}))}c(Ml,"projectDesktopAttemptReceipt");function J_(a){let e=Ml({manifest:a.context.runManifest,attempt:a.attempt,grade:a.grade,artifacts:a.artifacts}),t=a.context.tasksetRelease.tasks.find(u=>u.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(u=>u.kind==="output_artifact").map(u=>({path:typeof u.metadata.requiredOutputPath=="string"?u.metadata.requiredOutputPath:u.path,artifact:vr(u),detectedMediaType:u.mediaType??null,status:"collected",parseStatus:jd(u.metadata.parseStatus),schemaStatus:jd(u.metadata.schemaStatus),evidenceRefs:[vr(u)],metadata:{sourceArtifactId:u.id}})),i=Bo({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((u,T)=>Dl({component:u,grader:a.context.verifierSetRelease.graders.find(h=>h.id===u.graderId),evidenceRef:e.graderEvidenceRefs[T]??null,gradeScored:a.grade.score!==null,boundResult:a.grade.rewardComposition?.results.find(h=>h.graderId===u.graderId)})),o=qo({requiredOutputs:r,manifest:i}),d=Hl(a.attempt,a.grade),m=o.some(u=>u.status==="unscorable"&&u.failureOwner==="collector"),l=o.some(u=>u.status==="scored"&&!u.passed),E=d.outcomeClass==="completed"&&m?{outcomeClass:"collector_failure",failureOwner:"collector"}:d.outcomeClass==="completed"&&l?{outcomeClass:"incomplete_output",failureOwner:"policy"}:d,p=kn({id:`reward-${y([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,...E,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:p}}c(J_,"projectDesktopCanonicalReceipts");function V_(a){let e=a.artifacts.find(i=>i.kind==="runtime_trace")??a.artifacts.find(i=>i.kind==="raw_model_response"),t=e?vr(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 xn({id:`rollout-${y([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}})}c(V_,"projectDesktopCanonicalRollout");function Dl(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}}}c(Dl,"portableRewardComponent");function Hl(a,e){let t=gn.safeParse(a.metadata.outcomeClass);if(t.success){let s=a.metadata.failureOwner===null?null:hn.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=Bd(a,e);return r?yn({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"}}c(Hl,"canonicalOutcome");function jd(a){return a==="passed"||a==="failed"?a:"not_requested"}c(jd,"artifactValidationStatus");function Ul(a){return(a?.skills??[]).filter(e=>e.enabled).map(e=>({id:`skill-${et(e.name)}`,path:`skills/${et(e.name)}/SKILL.md`,contentHash:At(e.sourceHash),sizeBytes:Math.max(0,e.charCount),mediaType:"text/markdown",visibility:"policy"}))}c(Ul,"portableSkills");function Fl(a){let e=new Map;for(let t of a?.agents??[])t.enabled&&e.set(t.id,y({name:t.name,path:t.path}));return[...e].map(([t,r])=>({id:`agent-${et(t)}`,path:`agents/${et(t)}/release.json`,contentHash:At(r),sizeBytes:0,mediaType:"application/vnd.openpond.agent-release+json",visibility:"policy"}))}c(Fl,"portableAgents");function Re(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:${et(a.environment.entrypoint)}`}c(Re,"desktopTasksetRuntimeAdapterId");function vr(a){return{id:a.id,contentHash:At(a.sha256),mediaType:a.mediaType??null,sizeBytes:a.sizeBytes}}c(vr,"portableArtifact");function Bd(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}c(Bd,"attemptFailureClass");function At(a){return/^[a-f0-9]{64}$/.test(a)?a:y(a)}c(At,"hash");function et(a){return a.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"asset"}c(et,"segment");async function qd(a,e){if(a.metadata.taskDefinition!==void 0||a.metadata.rewardBinding!==void 0)return{taskset:a,generatedFiles:[]};let t=await jl(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 ql(zs.join(e,n),{withFileTypes:!0})){let d=zs.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(d);continue}if(!o.isFile())throw new Error("Taskset packages require regular files.");if(mo(d))continue;if(r.size>=1e4)throw new Error("Taskset source exceeds the file inventory limit.");let m=await Bl(zs.join(e,d),Vs.O_RDONLY|Vs.O_NOFOLLOW|Vs.O_NONBLOCK);try{let l=await m.stat();if(s+=l.size,!l.isFile()||s>Ve*3/4)throw new Error("Taskset source exceeds the package byte limit.");let E=Buffer.alloc(l.size),p=0;for(;p<E.length;){let u=await m.read(E,p,E.length-p,p);if(!u.bytesRead)throw new Error("Taskset source changed during capture.");p+=u.bytesRead}if((await m.read(Buffer.alloc(1),0,1,p)).bytesRead)throw new Error("Taskset source changed during capture.");r.set(d,E)}finally{await m.close()}}}return c(i,"visit"),await i(),To(a,r,Re(a))}c(qd,"prepareAuthoredTasksetFiles");async function Ct(a,e){for(let r of Ue.parse(e.metadata.portableFileInventory??[])){let s=bt.resolve(a,r.sourcePath);if(!s.startsWith(`${bt.resolve(a)}${bt.sep}`))throw new Error("Taskset inventory file escapes its package.");let i=await Wd(s);if(!i.isFile()||i.isSymbolicLink())throw new Error("Taskset inventory requires regular files.");let n=await Yd(s);if(n.length!==r.asset.sizeBytes||it(n)!==r.asset.contentHash)throw new Error(`Taskset file differs from its immutable inventory: ${r.asset.id}.`)}let t=bt.resolve(a,"assets");for(let r of e.tasks)for(let s of r.assets??[]){let i=bt.resolve(a,s.artifactRef);if(i===t||!i.startsWith(`${t}${bt.sep}`))throw new Error(`Taskset asset ${s.id} escapes the package assets directory.`);let n=await Wd(i);if(!n.isFile()||n.isSymbolicLink())throw new Error(`Taskset asset ${s.id} is not a regular file.`);let o=await Yd(i);if(o.byteLength!==s.sizeBytes||it(o)!==s.sha256)throw new Error(`Taskset asset ${s.id} does not match its immutable manifest.`)}}c(Ct,"verifyPublishedTasksetAssets");function Ir(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?F.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)
2136
2136
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2137
2137
  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)
2138
2138
  VALUES (?, ?, ?, ?, ?, ?)
2139
- ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[e.id,e.profileId,e.status,n,e.createdAt,e.updatedAt]),t?.(),a.exec("COMMIT")}catch(r){throw a.exec("ROLLBACK"),r}}c(br,"saveTasksetRevision");import{createHash as dc}from"node:crypto";function ga(a){let e=ze.parse(a.setup),t=typeof a.package=="object"&&a.package!==null&&"schemaVersion"in a.package&&a.package.schemaVersion==="openpond.tasksetPackage.v1"?He(a.package):null,r=t?null:us(a.package),s=t??r,i=e.tasksetRef;if(!(i&&i.revision===s.taskset.revision&&(t?i.id===t.taskset.id&&i.contentHash===t.taskset.contentHash||i.id===t.taskset.metadata.sourceTasksetId&&i.contentHash===t.taskset.metadata.sourceTasksetHash:i.id===s.taskset.id)))return e;!e.evaluationTasksetRef&&s.taskset.tasks.some(T=>T.split==="frozen_eval"||T.split==="validation")&&(e.evaluationTasksetRef=e.tasksetRef);let d=e.baseModel;if(e.method!=="grpo"||e.recipe||!d?.revision||!d.tokenizerRevision||!d.chatTemplateHash)return e;let o=s.taskset.tasks.filter(T=>T.split==="train"),m=t?t.taskset.graders:mt(r.rewardBinding,r.rewards),l=m.find(T=>T.rewardEligible&&T.weight>0),f=t?.environment??r?.executionResources?.environment??r?.execution?.environment;if(!o.length||!l||!f)return e;let p=8,u=8;return ze.parse({...e,recipe:{schemaVersion:"openpond.rftRecipe.v1",method:"grpo",parameterization:"lora",baseModel:{id:d.modelId,revision:d.revision,tokenizerRevision:d.tokenizerRevision,chatTemplateHash:d.chatTemplateHash},dataset:{trainSplit:"train",validationSplit:s.taskset.tasks.some(T=>T.split==="frozen_eval")?"frozen_eval":"validation",maxPromptTokens:4096,maxExamples:Math.min(1e3,o.length),selectionStrategy:"stable_hash_top_n"},lora:{rank:2},rollout:{groupSize:p,concurrency:4,maxTurns:s.taskset.environment.kind==="text"?1:15,maxOutputTokens:1024,temperature:.8,topP:.95,seed:17},optimizer:{learningRate:1e-4,maxSteps:u,clipRange:.2,iterations:2,microbatchSize:1,gradientAccumulationSteps:p,advantageEpsilon:1e-8,adamw:{name:"adamw",weightDecay:0,beta1:.9,beta2:.999,epsilon:1e-8}},loss:{method:"grpo",klBeta:.01},reward:{graderId:l.id,graderHash:Qa(m),environmentId:f.id,environmentVersion:String(f.revision),toolContractHash:Qa(s.taskset.tools),learnedPreference:null},resourceLimits:{wallTimeMs:3960*1e3,maxRollouts:u*p,maxPayloadBytes:1e6},policyOptimization:null}})}c(ga,"prepareModelTrainingDefaults");var ha=_.string().trim().min(1).max(500),we=te,Qd=_.object({schemaVersion:_.literal("openpond.modelStarter.v1"),id:ha,revision:_.number().int().positive(),name:_.string().trim().min(1).max(200),description:_.string().trim().min(1).max(2e3),category:_.enum(["extraction","support","operations","knowledge","coding","writing","classification"]),taskset:we,taskDefinition:we,rewardBinding:we,rewards:_.array(we).min(1).max(100),assets:_.array(we).max(1e3),previewTaskIds:_.array(ha).min(1).max(8),startingModel:ds,supportedMethods:_.array(Ga).min(1).max(8),defaultMethod:Ga,provenance:_.object({author:_.string().min(1).max(200),license:_.string().min(1).max(200),sourceDescription:_.string().min(1).max(2e3)}).strict(),evidence:_.object({verifierFixtures:we.nullable(),baseline:we.nullable(),training:we.nullable(),evaluation:we.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."})}),Zd=Qd.safeExtend({contentHash:_.string().regex(/^[a-f0-9]{64}$/)}),ec=_.object({starter:Zd,taskset:ke,taskDefinition:ft,rewardBinding:qt,rewards:_.array(Da).min(1).max(100),assets:_.array(ja).max(1e3),execution:Vt.optional()}).strict(),tc=_.object({schemaVersion:_.literal("openpond.modelStarterPrivacyReview.v1"),disposition:_.literal("synthetic_only"),reviewedBy:_.string().trim().min(1).max(500),reviewedAt:_.iso.datetime(),reviewedContentHash:_.string().regex(/^[a-f0-9]{64}$/),note:_.string().trim().min(1).max(2e3)}).strict();function ac(a){let{contentHash:e,...t}=a.starter,{contentHash:r,...s}=a.taskset,{contentHash:i,...n}=t.taskset,d={...s.metadata},o=d.starterAuthoring;if(o&&typeof o=="object"&&!Array.isArray(o)){let{privacyReview:m,...l}=o;d.starterAuthoring=l}return U({...a,starter:{...t,taskset:n},taskset:{...s,metadata:d}}).contentHash}c(ac,"modelStarterPrivacyContentHash");var rc=_.object({profileId:ha,modelId:ha,name:_.string().trim().min(1).max(200),starter:we,startingModel:ds,method:Ga,rewardBindingRef:we.nullable().optional(),learning:os.optional()}).strict(),sc=rc.extend({schemaVersion:_.literal("openpond.modelStarterCreation.v1"),operationId:ha}).strict();function wa(a){return ye(a,64*1024),sc.parse(a)}c(wa,"parseModelStarterCreationRequest");function Ra(a,e){let t=wa(a),r=ya(e);if(!C(t.starter,I(r.starter)))throw new Error("Starter creation references a different package revision.");if(!r.starter.supportedMethods.includes(t.method))throw new Error("The selected training method is not supported by this starter.");return{request:t,resolved:r}}c(Ra,"validateModelStarterCreation");function zl(a){let{starter:e,taskset:t,taskDefinition:r,rewardBinding:s,rewards:i}=ya(a);return{starter:e,inputSchema:r.inputSchema,outputSchema:r.outputSchema,reward:{name:s.name,description:s.description,checks:s.sources.map(n=>{let d=i.find(o=>C(n.reward,I(o)));return{name:d.name,description:d.description,kind:d.implementation.kind,role:n.role,weight:n.weight,required:n.required,hardGate:n.hardGate}})},tasks:e.previewTaskIds.map(n=>{let d=t.tasks.find(o=>o.id===n);return{id:d.id,input:d.input,policyVisibleContext:d.policyVisibleContext}}),counts:{train:t.tasks.filter(n=>n.split==="train").length,validation:t.tasks.filter(n=>n.split==="validation").length,frozenEvaluation:t.tasks.filter(n=>n.split==="frozen_eval").length}}}c(zl,"previewModelStarter");function ya(a){ye(a,16*1024*1024);let e=ec.parse(a),{starter:t,taskset:r,taskDefinition:s,rewardBinding:i,rewards:n,assets:d}=e,o=r.metadata.starterAuthoring;if(o&&typeof o=="object"&&!Array.isArray(o)&&"privacyReview"in o&&tc.parse(o.privacyReview).reviewedContentHash!==ac(e))throw new Error("Starter privacy review differs from the published contents.");let m=[t,r,s,i,...n,...d];for(let N of m){let{contentHash:E,...k}=N;if(U(k).contentHash!==E)throw new Error(`Starter resource integrity failed: ${N.id}.`)}Pi(r),Dn(e.execution,r,d);function l(N,E){if(!C(N,I(E)))throw new Error(`Starter dependency mismatch: ${N.id}.`)}if(c(l,"exact"),l(t.taskset,r),l(t.taskDefinition,s),l(t.rewardBinding,i),l(s.rewardBinding,i),i.recipeRef)throw new Error("Starter binding recipes must be resolved into a standalone binding before publication.");let{policy:f,environment:p,environmentRelease:u,tools:T,capabilities:h,verifierSetRelease:g}=r,w={policy:f,environment:p,...u?{environmentRelease:u}:{},tools:T,capabilities:h,...g?{verifierSetRelease:g}:{}};if(U(w).contentHash!==U(s.execution).contentHash)throw new Error("Starter execution context differs from its task format.");if(U({graders:r.graders}).contentHash!==U({graders:mt(i,n)}).contentHash)throw new Error("Starter executable graders differ from its Reward binding.");for(let[N,E]of[[t.rewards,n],[t.assets,d]]){if(N.length!==E.length||new Set(E.map(k=>k.id)).size!==E.length)throw new Error("Starter dependency inventory mismatch.");for(let k of N){let A=E.find(S=>S.id===k.id);if(!A)throw new Error(`Starter dependency is missing: ${k.id}.`);l(k,A)}}for(let N of i.sources){let E=n.find(k=>k.id===N.reward.id);if(!E)throw new Error(`Starter Reward is missing: ${N.reward.id}.`);l(N.reward,E)}for(let N of n){let E=N.implementation,k=[...N.assets,..."verifierRef"in E?[E.verifierRef]:[],..."rubricRef"in E?[E.rubricRef]:[],..."inputContract"in E?[E.inputContract]:[]];for(let A of k){let S=d.find(P=>P.id===A.id);if(!S||U(S.asset).contentHash!==U(A).contentHash)throw new Error(`Starter Reward source is missing or changed: ${A.id}.`);if(A.visibility==="policy")throw new Error(`Starter Reward source must remain private to its evaluator: ${A.id}.`)}}if(new Set(r.tasks.map(N=>N.id)).size!==r.tasks.length)throw new Error("Starter task identities must be unique.");let y=new Map;for(let N of r.tasks){if(N.policyVisibleContext.instructions!==s.instructions)throw new Error(`Starter task does not carry its declared model instructions: ${N.id}.`);let E=U({input:N.input,context:N.policyVisibleContext}).contentHash,k=y.get(E);if(k&&k!==N.split)throw new Error("Starter policy input appears in multiple splits.");if(y.set(E,N.split),!ut(s.inputSchema,N.input).valid)throw new Error(`Starter task input does not match its format: ${N.id}.`);if(N.expectedOutput!==null&&!ut(s.outputSchema,N.expectedOutput).valid)throw new Error(`Starter expected output does not match its format: ${N.id}.`)}for(let N of t.previewTaskIds){let E=r.tasks.find(k=>k.id===N);if(!E||E.split==="frozen_eval")throw new Error(`Starter preview task is unavailable: ${N}.`)}return e}c(ya,"validateResolvedModelStarter");import{createHash as Gl}from"node:crypto";function $(a,e,t,r){let s=ie[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(M(JSON.parse(i.payload))!==M(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 (?, ?, ?, ?)
2139
+ ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[e.id,e.profileId,e.status,n,e.createdAt,e.updatedAt]),t?.(),a.exec("COMMIT")}catch(r){throw a.exec("ROLLBACK"),r}}c(Ir,"saveTasksetRevision");import{createHash as ac}from"node:crypto";function Ea(a){let e=$e.parse(a.setup),t=typeof a.package=="object"&&a.package!==null&&"schemaVersion"in a.package&&a.package.schemaVersion==="openpond.tasksetPackage.v1"?Xe(a.package):null,r=t?null:ls(a.package),s=t??r,i=e.tasksetRef;if(!(i&&i.revision===s.taskset.revision&&(t?i.id===t.taskset.id&&i.contentHash===t.taskset.contentHash||i.id===t.taskset.metadata.sourceTasksetId&&i.contentHash===t.taskset.metadata.sourceTasksetHash:i.id===s.taskset.id)))return e;!e.evaluationTasksetRef&&s.taskset.tasks.some(T=>T.split==="frozen_eval"||T.split==="validation")&&(e.evaluationTasksetRef=e.tasksetRef);let o=e.baseModel;if(e.method!=="grpo"||e.recipe||!o?.revision||!o.tokenizerRevision||!o.chatTemplateHash)return e;let d=s.taskset.tasks.filter(T=>T.split==="train"),m=t?t.taskset.graders:ct(r.rewardBinding,r.rewards),l=m.find(T=>T.rewardEligible&&T.weight>0),E=t?.environment??r?.executionResources?.environment??r?.execution?.environment;if(!d.length||!l||!E)return e;let p=8,u=8;return $e.parse({...e,recipe:{schemaVersion:"openpond.rftRecipe.v1",method:"grpo",parameterization:"lora",baseModel:{id:o.modelId,revision:o.revision,tokenizerRevision:o.tokenizerRevision,chatTemplateHash:o.chatTemplateHash},dataset:{trainSplit:"train",validationSplit:s.taskset.tasks.some(T=>T.split==="frozen_eval")?"frozen_eval":"validation",maxPromptTokens:4096,maxExamples:Math.min(1e3,d.length),selectionStrategy:"stable_hash_top_n"},lora:{rank:2},rollout:{groupSize:p,concurrency:4,maxTurns:s.taskset.environment.kind==="text"?1:15,maxOutputTokens:1024,temperature:.8,topP:.95,seed:17},optimizer:{learningRate:1e-4,maxSteps:u,clipRange:.2,iterations:2,microbatchSize:1,gradientAccumulationSteps:p,advantageEpsilon:1e-8,adamw:{name:"adamw",weightDecay:0,beta1:.9,beta2:.999,epsilon:1e-8}},loss:{method:"grpo",klBeta:.01},reward:{graderId:l.id,graderHash:$a(m),environmentId:E.id,environmentVersion:String(E.revision),toolContractHash:$a(s.taskset.tools),learnedPreference:null},resourceLimits:{wallTimeMs:3960*1e3,maxRollouts:u*p,maxPayloadBytes:1e6},policyOptimization:null}})}c(Ea,"prepareModelTrainingDefaults");var Ta=_.string().trim().min(1).max(500),fe=Z,Kd=_.object({schemaVersion:_.literal("openpond.modelStarter.v1"),id:Ta,revision:_.number().int().positive(),name:_.string().trim().min(1).max(200),description:_.string().trim().min(1).max(2e3),category:_.enum(["extraction","support","operations","knowledge","coding","writing","classification"]),taskset:fe,taskDefinition:fe,rewardBinding:fe,rewards:_.array(fe).min(1).max(100),assets:_.array(fe).max(1e3),previewTaskIds:_.array(Ta).min(1).max(8),startingModel:ns,supportedMethods:_.array(Ka).min(1).max(8),defaultMethod:Ka,provenance:_.object({author:_.string().min(1).max(200),license:_.string().min(1).max(200),sourceDescription:_.string().min(1).max(2e3)}).strict(),evidence:_.object({verifierFixtures:fe.nullable(),baseline:fe.nullable(),training:fe.nullable(),evaluation:fe.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."})}),$d=Kd.safeExtend({contentHash:_.string().regex(/^[a-f0-9]{64}$/)}),Jd=_.object({starter:$d,taskset:ge,taskDefinition:pt,rewardBinding:jt,rewards:_.array(Ca).min(1).max(100),assets:_.array(Ma).max(1e3),execution:$t.optional()}).strict(),Vd=_.object({schemaVersion:_.literal("openpond.modelStarterPrivacyReview.v1"),disposition:_.literal("synthetic_only"),reviewedBy:_.string().trim().min(1).max(500),reviewedAt:_.iso.datetime(),reviewedContentHash:_.string().regex(/^[a-f0-9]{64}$/),note:_.string().trim().min(1).max(2e3)}).strict();function zd(a){let{contentHash:e,...t}=a.starter,{contentHash:r,...s}=a.taskset,{contentHash:i,...n}=t.taskset,o={...s.metadata},d=o.starterAuthoring;if(d&&typeof d=="object"&&!Array.isArray(d)){let{privacyReview:m,...l}=d;o.starterAuthoring=l}return U({...a,starter:{...t,taskset:n},taskset:{...s,metadata:o}}).contentHash}c(zd,"modelStarterPrivacyContentHash");var Gd=_.object({profileId:Ta,modelId:Ta,name:_.string().trim().min(1).max(200),starter:fe,startingModel:ns,method:Ka,rewardBindingRef:fe.nullable().optional(),learning:is.optional()}).strict(),Qd=Gd.extend({schemaVersion:_.literal("openpond.modelStarterCreation.v1"),operationId:Ta}).strict();function fa(a){return he(a,64*1024),Qd.parse(a)}c(fa,"parseModelStarterCreationRequest");function _a(a,e){let t=fa(a),r=ha(e);if(!C(t.starter,I(r.starter)))throw new Error("Starter creation references a different package revision.");if(!r.starter.supportedMethods.includes(t.method))throw new Error("The selected training method is not supported by this starter.");return{request:t,resolved:r}}c(_a,"validateModelStarterCreation");function Wl(a){let{starter:e,taskset:t,taskDefinition:r,rewardBinding:s,rewards:i}=ha(a);return{starter:e,inputSchema:r.inputSchema,outputSchema:r.outputSchema,reward:{name:s.name,description:s.description,checks:s.sources.map(n=>{let o=i.find(d=>C(n.reward,I(d)));return{name:o.name,description:o.description,kind:o.implementation.kind,role:n.role,weight:n.weight,required:n.required,hardGate:n.hardGate}})},tasks:e.previewTaskIds.map(n=>{let o=t.tasks.find(d=>d.id===n);return{id:o.id,input:o.input,policyVisibleContext:o.policyVisibleContext}}),counts:{train:t.tasks.filter(n=>n.split==="train").length,validation:t.tasks.filter(n=>n.split==="validation").length,frozenEvaluation:t.tasks.filter(n=>n.split==="frozen_eval").length}}}c(Wl,"previewModelStarter");function ha(a){he(a,16*1024*1024);let e=Jd.parse(a),{starter:t,taskset:r,taskDefinition:s,rewardBinding:i,rewards:n,assets:o}=e,d=r.metadata.starterAuthoring;if(d&&typeof d=="object"&&!Array.isArray(d)&&"privacyReview"in d&&Vd.parse(d.privacyReview).reviewedContentHash!==zd(e))throw new Error("Starter privacy review differs from the published contents.");let m=[t,r,s,i,...n,...o];for(let N of m){let{contentHash:f,...k}=N;if(U(k).contentHash!==f)throw new Error(`Starter resource integrity failed: ${N.id}.`)}bi(r),Xn(e.execution,r,o);function l(N,f){if(!C(N,I(f)))throw new Error(`Starter dependency mismatch: ${N.id}.`)}if(c(l,"exact"),l(t.taskset,r),l(t.taskDefinition,s),l(t.rewardBinding,i),l(s.rewardBinding,i),i.recipeRef)throw new Error("Starter binding recipes must be resolved into a standalone binding before publication.");let{policy:E,environment:p,environmentRelease:u,tools:T,capabilities:h,verifierSetRelease:g}=r,w={policy:E,environment:p,...u?{environmentRelease:u}:{},tools:T,capabilities:h,...g?{verifierSetRelease:g}:{}};if(U(w).contentHash!==U(s.execution).contentHash)throw new Error("Starter execution context differs from its task format.");if(U({graders:r.graders}).contentHash!==U({graders:ct(i,n)}).contentHash)throw new Error("Starter executable graders differ from its Reward binding.");for(let[N,f]of[[t.rewards,n],[t.assets,o]]){if(N.length!==f.length||new Set(f.map(k=>k.id)).size!==f.length)throw new Error("Starter dependency inventory mismatch.");for(let k of N){let b=f.find(S=>S.id===k.id);if(!b)throw new Error(`Starter dependency is missing: ${k.id}.`);l(k,b)}}for(let N of i.sources){let f=n.find(k=>k.id===N.reward.id);if(!f)throw new Error(`Starter Reward is missing: ${N.reward.id}.`);l(N.reward,f)}for(let N of n){let f=N.implementation,k=[...N.assets,..."verifierRef"in f?[f.verifierRef]:[],..."rubricRef"in f?[f.rubricRef]:[],..."inputContract"in f?[f.inputContract]:[]];for(let b of k){let S=o.find(P=>P.id===b.id);if(!S||U(S.asset).contentHash!==U(b).contentHash)throw new Error(`Starter Reward source is missing or changed: ${b.id}.`);if(b.visibility==="policy")throw new Error(`Starter Reward source must remain private to its evaluator: ${b.id}.`)}}if(new Set(r.tasks.map(N=>N.id)).size!==r.tasks.length)throw new Error("Starter task identities must be unique.");let R=new Map;for(let N of r.tasks){if(N.policyVisibleContext.instructions!==s.instructions)throw new Error(`Starter task does not carry its declared model instructions: ${N.id}.`);let f=U({input:N.input,context:N.policyVisibleContext}).contentHash,k=R.get(f);if(k&&k!==N.split)throw new Error("Starter policy input appears in multiple splits.");if(R.set(f,N.split),!dt(s.inputSchema,N.input).valid)throw new Error(`Starter task input does not match its format: ${N.id}.`);if(N.expectedOutput!==null&&!dt(s.outputSchema,N.expectedOutput).valid)throw new Error(`Starter expected output does not match its format: ${N.id}.`)}for(let N of t.previewTaskIds){let f=r.tasks.find(k=>k.id===N);if(!f||f.split==="frozen_eval")throw new Error(`Starter preview task is unavailable: ${N}.`)}return e}c(ha,"validateResolvedModelStarter");import{createHash as Yl}from"node:crypto";function K(a,e,t,r){let s=ae[t].parse(r),i=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,t,s.id,s.revision]);if(i){if(X(JSON.parse(i.payload))!==X(s))throw new Error(`Starter dependency conflicts with an existing revision: ${s.id}.`);return}a.run("INSERT INTO learning_revisions (scope, kind, id, revision, payload) VALUES (?, ?, ?, ?, ?)",[e,t,s.id,s.revision,JSON.stringify(s)]),a.run(`INSERT INTO learning_resources (scope, kind, id, revision) VALUES (?, ?, ?, ?)
2140
2140
  ON CONFLICT (scope, kind, id) DO UPDATE SET revision = excluded.revision
2141
- WHERE learning_resources.revision < excluded.revision`,[e,t,s.id,s.revision])}c($,"importStarterReleaseInTransaction");function ic(a,e,t){function r(d,o){let m=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,d,o.id,o.revision]);m||it(404,"model_reward_unavailable",`The exact ${d} resource is unavailable in this Profile.`);let l=ie[d].parse(JSON.parse(m.payload));return fe(l),o.contentHash&&l.contentHash!==o.contentHash&&it(409,"model_reward_changed","The selected resource does not match its immutable content hash."),l}c(r,"read");let s=r("binding",t),i=[...new Map(s.sources.map(d=>[M(d.reward),r("reward",d.reward)])).values()],n=new Map;for(let d of i){let o=d.implementation;for(let m of[...d.assets,..."verifierRef"in o?[o.verifierRef]:[],..."rubricRef"in o?[o.rubricRef]:[],..."inputContract"in o?[o.inputContract]:[]])n.has(m.id)||n.set(m.id,r("asset",{id:m.id,revision:1})),G(n.get(m.id),m)}return{rewardBinding:s,rewards:i,assets:[...n.values()]}}c(ic,"readSelectedModelReward");function Ar(a,e,t,r){let s=te.parse(e.metadata.rewardBinding),i=c((w,y)=>{let N=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.profileId,w,y.id,y.revision]);N||it(404,"model_reward_unavailable",`The exact ${w} resource is unavailable in this Profile.`);let E=ie[w].parse(JSON.parse(N.payload));return fe(E),y.contentHash&&E.contentHash!==y.contentHash&&it(409,"model_reward_changed","The selected resource does not match its immutable content hash."),E},"read"),n=i("definition",te.parse(e.metadata.taskDefinition));(M(e.policy)!==M(n.execution.policy)||M(e.environment.metadata.portableEnvironment)!==M(n.execution.environment)||M(e.environment.metadata.portableTools)!==M(n.execution.tools))&&it(409,"model_taskset_context_changed","Taskset context differs from its immutable task definition.");let d=i("binding",s),o=[...new Map(d.sources.map(w=>[M(w.reward),i("reward",w.reward)])).values()];e.metadata.rewardExecution!==void 0&&M(e.metadata.rewardExecution)!==M({binding:d,rewards:o})&&it(409,"model_taskset_rewards_changed","Taskset embedded Rewards differ from their immutable binding.");let m=i("binding",t),l=[...new Map(m.sources.map(w=>[M(w.reward),i("reward",w.reward)])).values()],f=new Map((r?.modelResources?.assets??[]).map(w=>[w.id,w])),p=c(w=>{f.has(w)||f.set(w,i("asset",{id:w,revision:1}))},"addAsset");for(let w of[...o,...l]){let y=w.implementation;for(let N of[...w.assets,..."verifierRef"in y?[y.verifierRef]:[],..."rubricRef"in y?[y.rubricRef]:[],..."inputContract"in y?[y.inputContract]:[]])p(N.id)}let u,T=ps.shape.executionResources.parse(e.environment.metadata.portableExecutionResources);if(n.execution.environment.entrypoint==="openpond.javascript-environment.v1"){let w=i("asset",{id:ls(n.execution),revision:1});u=Vt.parse(JSON.parse(G(w,w.asset)));for(let y of[u.javascript.module,u.environment.actionSchemaRef,u.environment.observationSchemaRef,u.environment.stateSchemaRef])y&&p(y.id)}for(let w of e.tasks)w.privilegedContextRef&&p(w.privilegedContextRef);M(e.graders)!==M(wt(d,o,[...f.values()]))&&it(409,"model_taskset_graders_changed","Taskset graders differ from their immutable Reward binding.");let h=ke.parse(U({schemaVersion:"openpond.tasksetRelease.v2",id:e.id,revision:e.revision,...n.execution,graders:mt(d,o),...e.metrics?{metrics:e.metrics}:{},tasks:e.tasks.map(w=>{let y=ao(w);return w.requiredOutputs===void 0&&w.metadata.portableTaskRecord===void 0&&delete y.requiredOutputs,y}),metadata:e.metadata.derivedPortableMetadata??{localSource:I(e),starter:{taskDefinition:I(n),rewardBinding:s}}}));return{sourcePackage:r?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:{taskset:h,taskDefinition:n,rewardBinding:d,rewards:o,assets:[...f.values()],...T?{executionResources:T}:{},...u?{execution:u}:{}},selectedBinding:m,selectedRewards:l,assets:f}}c(Ar,"readModelTasksetSource");function it(a,e,t){throw new Xe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(it,"fail");function Zs(a){if(a?.metadata.learning===void 0)return null;let e=Yi.parse(a.metadata.learning);return fe(e.definition),Mi(e.binding,e.rewards),C(e.definition.rewardBinding,I(e.binding))||be(409,"model_batch_binding_changed","Reviewed task definition and Reward binding do not match."),e.binding}c(Zs,"reviewedTasksetRewardBinding");function ei(a,e,t=!0,r){let s=Kt(e),{project:i}=s,n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),d=n?B.parse(JSON.parse(n.payload)):null;d&&d.profileId!==i.profileId&&be(404,"model_not_found","Model is not available in this Profile."),(d?.revision??0)!==s.expectedRevision&&be(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let o=i.trainingSetup.tasksetRef;if(!o||!i.trainingSetup.rewardBindingRef)return null;let m=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[o.id,o.revision]),l=m?F.parse(JSON.parse(m.payload)):null;(!l||l.profileId!==i.profileId)&&be(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),(l.contentHash!==o.contentHash||de(l)!==l.contentHash)&&be(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash.");let f=Zs(l);if(f)return C(I(f),i.trainingSetup.rewardBindingRef)||be(422,"model_batch_reward_review_required","Changing a reviewed batch's Reward requires regrading and a new reviewed batch."),null;let p=l.metadata.rewardBinding===void 0?null:te.parse(l.metadata.rewardBinding);if(p&&C(p,i.trainingSetup.rewardBindingRef))return null;if(!p&&r&&!r.modelResources&&!r.learningResources){let O=ic(a,i.profileId,i.trainingSetup.rewardBindingRef),q=_o({owner:{scopeId:i.profileId,modelId:i.id},source:r,...O}),Y=nc(a,s,t),D=Ot({package:q,profileId:i.profileId,name:l.name,createdAt:Y.created_at}),J={...q.modelResources,taskset:q.taskset,executionResources:{environment:q.environment,verifierSet:q.verifierSet}};return{taskset:D.taskset,generatedFiles:D.generatedFiles,directoryId:String(D.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:null,derived:J,imported:D}}p||be(422,"model_taskset_derivation_unavailable","This Taskset needs an authored task definition and Reward binding before its Reward can be changed.");let{sourcePackage:u,selectedBinding:T,selectedRewards:h,assets:g}=Ar(a,l,i.trainingSetup.rewardBindingRef,r),w=ht.safeParse(u.taskset.metadata.modelTasksetDerivation),N=d?.hosted?.apiOrigin&&d.hosted.tasksets.some(O=>{if(!w.success||O.localTasksetId!==l.id||!O.packageHash||!O.localTasksetHash)return!1;let q=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND content_hash = ? AND profile_id = ?",[l.id,O.localTasksetHash,i.profileId]),Y=q?F.parse(JSON.parse(q.payload)):null;if(!Y||Y.contentHash!==O.localTasksetHash)return!1;let D=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = 'package' AND id = ? AND revision = ?",[i.profileId,O.releaseId,O.releaseRevision]),J=D?ke.parse(JSON.parse(D.payload)):null,V=ht.safeParse(J?.metadata.modelTasksetDerivation);return J?.contentHash===O.releaseHash&&V.success&&M(V.data.owner)===M(w.data.owner)&&C(V.data.root,w.data.root)})&&w.success&&w.data.owner.modelId===i.id?w.data.owner:{scopeId:i.profileId,modelId:i.id},E=zt({owner:N,source:u,rewardBinding:T,rewards:h,assets:[...g.values()]}),k=nc(a,s,t);if(r){let O=new Map(r.files.map(re=>[re.asset.id,re]));for(let re of E.assets)O.set(re.id,{asset:re.asset,base64:Buffer.from(re.text).toString("base64")});let{taskset:q,executionResources:Y,...D}=E;if(!Y)throw new Error("Derived imported package is missing execution resources.");let J=er({schemaVersion:"openpond.tasksetPackage.v1",taskset:q,...Y,modelResources:D,files:[...O.values()]}),V=Ot({package:J,profileId:i.profileId,name:l.name,createdAt:k.created_at});return{taskset:V.taskset,generatedFiles:V.generatedFiles,directoryId:String(V.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:u,derived:E,imported:V}}let A=`${E.taskset.id}-r${E.taskset.revision}-${U({packageHash:E.taskset.contentHash,preparedAt:k.created_at}).contentHash}`,S=ar(l,k.created_at),P=new Map(E.taskset.tasks.map(O=>[O.id,O])),j=[];for(let O of E.taskset.graders)if(O.kind==="custom_verifier"){let q=sr(O.verifierRef.contentHash);j.some(Y=>Y.path===q)||j.push({path:q,role:"verifier",content:G(g.get(O.verifierRef.id),O.verifierRef)})}let H=rr({tasksetId:E.taskset.id,now:k.created_at,sourcePackageHash:E.taskset.contentHash,draft:{...S,policy:E.taskset.policy,tasks:S.tasks.map(O=>({...O,metadata:{...O.metadata,portableTaskRecord:P.get(O.id)}})),environment:{...S.environment,metadata:{...S.environment.metadata,runtimeSourceTasksetId:A,portableExecutionResources:E.executionResources}},graders:wt(T,h,[...g.values()]),learningSignals:{...S.learningSignals,rewards:S.learningSignals.rewards.map(O=>({...O,rules:[{id:T.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],artifactRef:T.id,metadata:{...O.metadata,rewardBinding:I(T)}}))},metadata:{...S.metadata,portableCapabilities:E.taskset.capabilities,taskDefinition:I(E.taskDefinition),rewardBinding:I(T),rewardExecution:{binding:T,rewards:h},derivedPortableMetadata:E.taskset.metadata,modelTasksetDerivation:E.taskset.metadata.modelTasksetDerivation}}});if(H.metrics=E.taskset.metrics,H.contentHash=de(H),H.revision!==E.taskset.revision)throw new Error("Derived local and portable Taskset revisions differ.");return{taskset:H,generatedFiles:j,directoryId:A,source:l,sourcePackage:u,derived:E}}c(ei,"prepareModelTasksetSave");function oc(a,e,t){let r=e.project.profileId;for(let d of[t.sourcePackage,t.derived]){if(!d)continue;for(let m of d.assets)$(a,r,"asset",m);for(let m of d.rewards)$(a,r,"reward",m);$(a,r,"binding",d.rewardBinding),$(a,r,"package",d.taskset),$(a,r,"definition",d.taskDefinition);let o=d.executionResources??d.execution;o&&$(a,r,"asset",Qe(o)),d.execution&&$(a,r,"asset",De(d.execution))}let s=t.taskset;a.get("SELECT content_hash FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[s.id,s.revision])&&be(409,"model_taskset_revision_conflict","The derived Taskset revision was already published. Refresh before saving.");let n=JSON.stringify(s);a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at",[s.id,r,s.status,n,s.createdAt,s.updatedAt]),a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.revision,s.contentHash,r,s.status,n,s.createdAt,s.updatedAt]),a.run("UPDATE model_project_taskset_preparations SET state = 'committed' WHERE profile_id = ? AND operation_id = ?",[r,e.operationId])}c(oc,"commitPreparedModelTaskset");function nc(a,e,t){let r=Gl("sha256").update(M(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&&be(409,"model_operation_conflict","This save operation was already used with different Model configuration."),i}c(nc,"recordModelTasksetPreparation");function be(a,e,t){throw new Xe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(be,"fail");function Cr(a,e){let t=Kt(e),r=a.get("SELECT request_hash, payload FROM model_project_save_operations WHERE profile_id = ? AND operation_id = ?",[t.project.profileId,t.operationId]);if(!r)return null;let s=dc("sha256").update(M(t)).digest("hex");return r.request_hash!==s&&Re(409,"model_operation_conflict","This save operation was already used with different Model configuration."),B.parse(JSON.parse(r.payload))}c(Cr,"findModelProjectSave");function cc(a,e,t,r){a.exec("BEGIN IMMEDIATE");try{let s=ka(a,e,t,r);return a.exec("COMMIT"),s}catch(s){throw a.exec("ROLLBACK"),s}}c(cc,"commitModelProjectSave");function ka(a,e,t,r){let s=Kt(e);s.learning&&Re(422,"model_learning_hosted_required","Create this Model in a hosted workspace to enable continual learning.");let i=dc("sha256").update(M(s)).digest("hex"),{project:n,operationId:d,expectedRevision:o}=s,m=Cr(a,s);if(m)return m;let l=a.get("SELECT payload FROM model_projects WHERE id = ?",[n.id]),f=l?B.parse(JSON.parse(l.payload)):null;f&&f.profileId!==n.profileId&&Re(404,"model_not_found","Model is not available in this Profile."),(f?.revision??0)!==o&&Re(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let p=Ql(a,s),u=Zs(p);u||Zl(a,s);let T=u?I(u):p?.metadata.rewardBinding===void 0?null:te.parse(p.metadata.rewardBinding);p&&n.trainingSetup.rewardBindingRef&&(!T||!C(T,n.trainingSetup.rewardBindingRef))&&!t&&Re(409,"model_taskset_preparation_required","Changing this Reward requires publishing its model-owned Taskset revision."),t&&((!n.trainingSetup.tasksetRef||!C(n.trainingSetup.tasksetRef,I(t.source))||!n.trainingSetup.rewardBindingRef||!C(n.trainingSetup.rewardBindingRef,I(t.derived.rewardBinding)))&&Re(409,"model_taskset_preparation_changed","The prepared Taskset differs from the selected configuration."),oc(a,s,t));let h=new Date().toISOString(),g=ze.parse({...n.trainingSetup,baseModel:n.trainingSetup.baseModel??n.defaultBaseModel,method:n.trainingSetup.method??(p?.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":p?.authoringProvenance.buildIntent==="demonstrations"?"sft":null),...T?{rewardBindingRef:T}:{},...t?{rewardBindingRef:I(t.derived.rewardBinding),tasksetRef:I(t.taskset),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&C(n.trainingSetup.evaluationTasksetRef,I(t.source))?{evaluationTasksetRef:I(t.taskset)}:{}}:{}}),w=t?.derived??r??(p&&!u&&g.rewardBindingRef&&p.metadata.taskDefinition!==void 0&&p.metadata.rewardBinding!==void 0?Ar(a,p,g.rewardBindingRef).sourcePackage:void 0),y=B.parse({...f,...n,trainingSetup:w?ga({setup:g,package:w}):g,schemaVersion:"openpond.modelProject.v2",revision:o+1,hosted:f?.hosted??null,tasksetSyncs:f?.tasksetSyncs??[],createdAt:f?.createdAt??h,updatedAt:h});return a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2142
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[y.id,y.profileId,JSON.stringify(y),y.createdAt,y.updatedAt]),a.run("INSERT INTO model_project_save_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[y.profileId,d,i,JSON.stringify(y)]),y}c(ka,"saveModelProjectInTransaction");function Ql(a,e){let t=e.project.trainingSetup.tasksetRef;if(!t){e.project.trainingSetup.tasksetRelease&&Re(400,"model_taskset_required","Choose the Taskset corresponding to this release.");return}let r=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[t.id,t.revision]),s=r?F.parse(JSON.parse(r.payload)):null;return(!s||s.profileId!==e.project.profileId)&&Re(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),s.contentHash!==t.contentHash&&Re(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash."),s}c(Ql,"assertTaskset");function Zl(a,e){let t=e.project.trainingSetup.rewardBindingRef;if(!t)return;function r(i,n){let d=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.project.profileId,i,n.id,n.revision]);d||Re(404,"model_reward_unavailable","The exact Reward configuration is unavailable in this Profile.");let o=(i==="binding"?qt:Da).parse(JSON.parse(d.payload));return o.contentHash!==n.contentHash&&Re(409,"model_reward_changed","The selected Reward does not match its immutable content hash."),fe(o),o}c(r,"read");let s=qt.parse(r("binding",t));for(let i of s.sources)r("reward",i.reward)}c(Zl,"assertReward");function Re(a,e,t){throw new Xe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(Re,"fail");function lc(a,e,t,r){let s=e.modelScope;if(!s)return;let i=a.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e.profileId]);if(!i)throw new Error("Taskset draft Model was not found in this Profile.");let n=B.parse(JSON.parse(i.payload)),d={id:t.id,revision:t.revision,contentHash:t.contentHash};return ka(a,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${R({draftId:e.id,revision:e.revision,scope:s,tasksetRef:d})}`,expectedRevision:s.expectedModelRevision,project:fn.strip().parse({...n,trainingSetup:{...n.trainingSetup,tasksetRef:d,rewardBindingRef:t.metadata.rewardBinding===void 0?null:te.parse(t.metadata.rewardBinding),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&n.trainingSetup.tasksetRef&&C(n.trainingSetup.evaluationTasksetRef,n.trainingSetup.tasksetRef)?{evaluationTasksetRef:d}:{}}})},null,r?.modelResources?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:r??void 0)}c(lc,"selectTasksetDraftModel");import{createHash as np,randomUUID as op}from"node:crypto";import{lstat as Ec,mkdir as fc,readdir as dp,readFile as cp,rename as lp,rm as pp,writeFile as up}from"node:fs/promises";import Xt from"node:path";import{constants as ti}from"node:fs";import{link as ep,lstat as tp,mkdir as ai,mkdtemp as pc,open as ap,readFile as rp,readdir as sp,rename as ip,rm as uc,writeFile as mc}from"node:fs/promises";import ee from"node:path";async function fw(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 ve(a,t);if(!r.learningResources||r.taskset.id!==e.id||r.taskset.revision!==e.revision||R(Wa(r.taskset))!==R(e.metadata.learning))throw new Error("Imported batch differs from its pinned package.");return r}c(fw,"readImportedLearningTasksetPackage");async function nt(a,e){let t=He(e),r=ee.join(a,"training","portable-packages");await ai(r,{recursive:!0});let s=ee.join(r,`${t.contentHash}.json`),i=await pc(ee.join(r,".package-"));try{let n=ee.join(i,"package.json");await mc(n,JSON.stringify(t),{flag:"wx",mode:384});try{await ep(n,s)}catch(d){if(d.code!=="EEXIST")throw d;await ve(a,t.contentHash)}}finally{await uc(i,{recursive:!0,force:!0})}}c(nt,"cacheTasksetPackage");async function ve(a,e){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid Taskset package cache identity.");let t=ee.join(a,"training","portable-packages",`${e}.json`),r=await ap(t,ti.O_RDONLY|ti.O_NOFOLLOW|ti.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 o=await r.read(i,n,i.length-n,n);if(!o.bytesRead)throw new Error("Taskset package cache changed during read.");n+=o.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset package cache changed during read.");let d=He(JSON.parse(i.toString("utf8")));if(d.contentHash!==e)throw new Error("Cached Taskset package differs from its saved receipt.");return d}finally{await r.close()}}c(ve,"readCachedTasksetPackage");async function Na(a){let e=He(a.package),t=vs(a.taskset.profileId,e.contentHash);if(a.taskset.environment.metadata.runtimeSourceTasksetId!==t)throw new Error("Imported Taskset directory differs from its package identity.");let r=new Map,s=c((o,m)=>{if(ee.isAbsolute(o)||o.includes("\\")||o.split("/").some(f=>!f||f==="."||f===".."))throw new Error("Taskset package file requires a safe relative path.");let l=r.get(o);if(l&&!Buffer.from(l).equals(Buffer.from(m)))throw new Error(`Taskset package files collide at ${o}.`);r.set(o,m)},"add");for(let o of e.files)s(o.asset.path,gt(o));for(let o of a.generatedFiles)s(o.path,Buffer.from(o.content,"utf8"));s("taskset.json",Buffer.from(JSON.stringify(a.taskset),"utf8"));let i=ee.join(a.home,"training","tasksets");await ai(i,{recursive:!0});let n=await pc(ee.join(i,".package-import-")),d=ee.join(i,t);try{for(let[o,m]of r)await ai(ee.dirname(ee.join(n,o)),{recursive:!0}),await mc(ee.join(n,o),m,{flag:"wx",mode:384});try{await ip(n,d)}catch(o){if(!["EEXIST","ENOTEMPTY"].includes(o.code??""))throw o;let m=await tp(d);if(!m.isDirectory()||m.isSymbolicLink())throw new Error("Imported Taskset destination must be a regular directory.");let l=await Tc(d);if(JSON.stringify(l.sort())!==JSON.stringify([...r.keys()].sort()))throw new Error("Imported Taskset file inventory changed.");for(let[f,p]of r)if(!(await rp(ee.join(d,f))).equals(Buffer.from(p)))throw new Error("Imported Taskset files differ from the pinned package.")}await nt(a.home,e)}finally{await uc(n,{recursive:!0,force:!0})}}c(Na,"materializeImportedTasksetPackage");async function Tc(a,e=""){let t=[];for(let r of await sp(ee.join(a,e),{withFileTypes:!0})){let s=ee.posix.join(e,r.name);if(r.isSymbolicLink())throw new Error("Imported Taskset directories cannot contain symbolic links.");if(r.isDirectory())t.push(...await Tc(a,s));else if(r.isFile())t.push(s);else throw new Error("Imported Taskset packages require regular files.")}return t}c(Tc,"regularFiles");var Dt=wo.extend({workspaceHash:_.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function _c(a){let{db:e,profileId:t}=a,r=is.parse(a.request),s=c(()=>{let k=e.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[r.modelId,t]);if(!k)throw new Error("Taskset draft Model was not found in this Profile.");return B.parse(JSON.parse(k.payload))},"requireModel"),i=s(),n=R(r),d=e.get("SELECT request_hash, state, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(d){if(d.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(d.state==="deleted")throw new Error("This Taskset draft was deleted.");return Dt.parse(JSON.parse(d.payload))}if(!a.source)return null;if(i.revision!==r.expectedModelRevision)throw new Error("Model changed before draft initialization. Refresh before editing.");let o=i.trainingSetup.tasksetRef,m=o?e.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[o.id,o.revision,t]):null,l=m?F.parse(JSON.parse(m.payload)):null;if(!l||!o||l.contentHash!==o.contentHash)throw new Error("The selected source Taskset is unavailable.");let f=a.source,p=i.hosted?.apiOrigin?i.hosted.tasksets.find(k=>k.localTasksetId===l.id&&k.localTasksetHash===l.contentHash&&k.packageHash===f.contentHash&&k.releaseId===f.taskset.id&&k.releaseRevision===f.taskset.revision&&k.releaseHash===f.taskset.contentHash):null,u=typeof l.metadata.importedPackageHash=="string"?l.metadata.importedPackageHash:p?.packageHash;if(u?u!==f.contentHash:!C(I(Fe({taskset:l,adapterId:Se(l)}).tasksetRelease),I(f.taskset)))throw new Error("Taskset draft package differs from its selected source.");let T=f.modelResources?ht.safeParse(f.taskset.metadata.modelTasksetDerivation):ss.safeParse(f.taskset.metadata.modelTasksetAuthoring),h=p&&T.success&&T.data.owner.modelId===i.id?T.data.owner:{scopeId:t,modelId:i.id},g=mo({request:r,owner:h,source:f}),w=Ro({sourceDraft:ar(l),source:f,preparation:g,expectedModelRevision:r.expectedModelRevision});await nt(a.home,f);let y=Dt.parse({...w,workspaceHash:null}),N=y.draft;e.exec("BEGIN IMMEDIATE");try{let k=e.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(k&&k.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(!k&&s().revision!==r.expectedModelRevision)throw new Error("Model changed during draft initialization. Refresh before editing.");e.run("INSERT INTO model_taskset_draft_operations (profile_id, operation_id, request_hash, draft_id, state, payload) VALUES (?, ?, ?, ?, 'prepared', ?) ON CONFLICT(profile_id, operation_id) DO NOTHING",[t,r.operationId,n,N.id,JSON.stringify(y)]),e.exec("COMMIT")}catch(k){throw e.exec("ROLLBACK"),k}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 Dt.parse(JSON.parse(E.payload))}c(_c,"prepareDraftInitialization");async function hc(a){let{initialized:e,workspacePath:t}=a;if(a.completed())return;if(e.workspaceHash)try{if(await Ec(t),a.completed())return;if(await ri(t),await Z(t)!==e.workspaceHash)throw new Error("Prepared Taskset draft files changed before initialization completed.");return}catch(s){if(s.code!=="ENOENT")throw s}let r=`${t}.initializing-${op()}`;await fc(Xt.dirname(t),{recursive:!0});try{let s=e.draft.modelScope?.source;if(!s)throw new Error("Taskset draft lost its source preparation.");let i=await ve(a.home,s.sourcePackageHash),n=new Map;for(let o of e.filePaths){let m=i.files.find(l=>l.asset.id===o.assetId);if(!m)throw new Error("Taskset draft source asset is missing.");for(let l of o.paths){if(l.includes("\\")||Xt.posix.isAbsolute(l)||l.split("/").some(u=>!u||u==="."||u===".."||u.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let f=n.get(l);if(f&&f!==m.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(f)continue;let p=Xt.join(r,l);await fc(Xt.dirname(p),{recursive:!0}),await up(p,gt(m),{flag:"wx"}),n.set(l,m.asset.contentHash)}}await na(e.draft,r);for(let[o,m]of n)if(np("sha256").update(await cp(Xt.join(r,o))).digest("hex")!==m)throw new Error(`Taskset draft source asset conflicts with authoring file ${o}.`);let d=await Z(r);if(a.retainHash({...e,workspaceHash:d}),a.completed())return;try{await lp(r,t)}catch(o){if(!["EEXIST","ENOTEMPTY"].includes(o.code??""))throw o;if(a.completed())return;if(await ri(t),await Z(t)!==d)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await pp(r,{recursive:!0,force:!0})}}c(hc,"materializeDraftInitialization");async function ri(a){let e=await Ec(a);if(!e.isDirectory()||e.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let t of await dp(a,{withFileTypes:!0})){if(t.name.startsWith(".env")||t.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(t.isDirectory())await ri(Xt.join(a,t.name));else if(!t.isFile())throw new Error("Taskset draft source must contain regular files.")}}c(ri,"assertRegularTree");import Tp from"node:path";import{constants as si}from"node:fs";import{open as mp,realpath as gc}from"node:fs/promises";import Sa from"node:path";function wc(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?ms(a.learningResources).map(t=>t.asset.id):[]])}c(wc,"tasksetPackageInlineAssetIds");async function Ht(a){let e=a.sources.length?await gc(a.root):Sa.resolve(a.root),t=[],r=new Set,s=0,i=c((n,d)=>{if(r.has(n.id))throw new Error(`Duplicate local Taskset asset: ${n.id}.`);if(r.add(n.id),s+=4*Math.ceil(d.byteLength/3),s>Ze)throw new Error("Local Taskset files exceed the package envelope.");t.push({asset:n,base64:Buffer.from(d).toString("base64")})},"append");for(let n of a.sources){let d=wi.parse(n.asset);if(!n.sourcePath||Sa.isAbsolute(n.sourcePath))throw new Error(`Taskset asset ${d.id} requires a relative source path.`);let o=Sa.resolve(e,n.sourcePath);if(!o.startsWith(`${e}${Sa.sep}`))throw new Error(`Taskset asset ${d.id} escapes its local package.`);if(!(await gc(o)).startsWith(`${e}${Sa.sep}`))throw new Error(`Taskset asset ${d.id} escapes its local package.`);let l=await mp(o,si.O_RDONLY|si.O_NOFOLLOW|si.O_NONBLOCK);try{let f=await l.stat();if(!f.isFile()||f.size!==d.sizeBytes)throw new Error(`Taskset asset ${d.id} differs from its immutable file size.`);if(4*Math.ceil(f.size/3)+s>Ze)throw new Error("Local Taskset files exceed the package envelope.");let p=Buffer.alloc(f.size),u=0;for(;u<p.length;){let h=await l.read(p,u,p.length-u,u);if(!h.bytesRead)throw new Error(`Taskset asset ${d.id} changed during capture.`);u+=h.bytesRead}if((await l.read(Buffer.alloc(1),0,1,u)).bytesRead)throw new Error(`Taskset asset ${d.id} changed during capture.`);i(d,p)}finally{await l.close()}}for(let n of[...a.content.modelResources?.assets??[],...a.content.learningResources?.assets??[]])r.has(n.asset.id)||i(n.asset,Buffer.from(G(n,n.asset),"utf8"));if(a.content.learningResources)for(let n of ms(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(d=>!r.has(d)))throw new Error("Saved package file order differs from its inventory.");let n=new Map(a.fileOrder.map((d,o)=>[d,o]));t.sort((d,o)=>n.get(d.asset.id)-n.get(o.asset.id))}return er({...a.content,files:t})}c(Ht,"captureLocalTasksetPackage");async function Rc(a){let e=Fe({taskset:a.taskset,adapterId:Se(a.taskset)}),t=await Ht({root:a.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:e.tasksetRelease,environment:e.environmentRelease,verifierSet:e.verifierSetRelease},sources:qe.parse(a.taskset.metadata.portableFileInventory??[])}),r=a.preparation.authoringGraph==="bound"?await ve(a.home,a.preparation.sourcePackageHash):void 0,s=To({preparation:a.preparation,edited:t,source:r});if(s.modelResources){let p=Ot({package:s,profileId:a.taskset.profileId,name:a.taskset.name,createdAt:a.taskset.createdAt}),u=F.parse({...p.taskset,authoringProvenance:a.taskset.authoringProvenance,metadata:{...p.taskset.metadata,sourcePackageHash:a.taskset.metadata.sourcePackageHash}}),T=F.parse({...u,contentHash:de(u)});return await Na({home:a.home,...p,taskset:T}),{taskset:T,directory:Tp.join(a.home,"training","tasksets",String(T.environment.metadata.runtimeSourceTasksetId))}}let i=qe.parse(a.taskset.metadata.portableFileInventory??[]),n=s.files.map(p=>({asset:p.asset,sourcePath:i.find(u=>u.asset.id===p.asset.id)?.sourcePath??p.asset.path})),d=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(p=>p.asset.path==="environment/execution.json"):void 0,o=`model-draft-${R({packageHash:s.contentHash,taskset:a.taskset})}`,m=F.parse({...a.taskset,id:s.taskset.id,revision:s.taskset.revision,metadata:{...a.taskset.metadata,portableFileInventory:n,importedPackageHash:s.contentHash,derivedPortableMetadata:s.taskset.metadata},environment:{...a.taskset.environment,metadata:{...a.taskset.environment.metadata,runtimeSourceTasksetId:o,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),l=F.parse({...m,contentHash:de(m)}),f=await rt(a.home,{taskset:l,generatedFiles:d?[{path:d.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(gt(d))}]:[]},o,{source:{directory:a.directory,packageHash:await Z(a.directory)},verify:c(p=>Mt(p,l),"verify")});return await nt(a.home,s),{directory:f,taskset:l}}c(Rc,"materializeModelTasksetDraftPublication");import{constants as ii}from"node:fs";import{createHash as fp}from"node:crypto";import{lstat as kc,mkdir as Ep,open as _p,readdir as hp,rm as yc}from"node:fs/promises";import Pr from"node:path";var ot=c((a,e)=>No(Pr.join(a,"state","taskset-draft-writes"),e),"withTasksetDraftLock"),Nc=Bn,gp=c(a=>fp("sha256").update(a).digest("hex"),"digest");async function xr(a,e,t=!1){za.parse(e);let r=a;for(let s of["",...e.split("/").slice(0,-1)]){s&&(r=Pr.join(r,s)),t&&await Ep(r,{recursive:!1}).catch(n=>{if(n.code!=="EEXIST")throw n});let i=await kc(r);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return Pr.join(a,e)}c(xr,"regularPath");async function Sc(a,e){let t=await xr(a,e),r=await _p(t,ii.O_RDONLY|ii.O_NOFOLLOW|ii.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>jn)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 d=await r.read(i,n,i.length-n,n);if(!d.bytesRead)throw new Error("Taskset draft file changed during reading.");n+=d.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset draft file changed during reading.");return i}finally{await r.close()}}c(Sc,"readBytes");async function vc(a,e){let t=await Sc(a,e);return qn(e,t)}c(vc,"readTasksetDraftFile");async function Ic(a){let e=[];async function t(r=""){for(let s of await hp(Pr.join(a,r),{withFileTypes:!0})){let i=r?`${r}/${s.name}`:s.name;if(za.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 kc(await xr(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:Nc(i)})}}return c(t,"visit"),await xr(a,"taskset.json"),await t(),e.sort((r,s)=>r.path.localeCompare(s.path))}c(Ic,"listTasksetDraftFiles");async function Oc(a,e,t){if(!Nc(e.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let r=null;try{r=await Sc(a,e.path)}catch(n){if(n.code!=="ENOENT")throw n}if((r?gp(r):null)!==e.expectedFileHash)throw new Error("Taskset draft file changed. Reload it before saving.");if(!r&&e.content===null)throw new Error("Taskset draft file does not exist.");let s=e.content?Wn(e.content):null,i=await xr(a,e.path,!0);s?await Is(i,s):await yc(i);try{return await t()}catch(n){throw r?await Is(i,r):await yc(i,{force:!0}),n}}c(Oc,"mutateTasksetDraftFile");function Mr(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&&M(F.parse(JSON.parse(i.payload)))!==M(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]),d=n?F.parse(JSON.parse(n.payload)):null;if(d&&d.profileId!==s)throw new Error("Imported Taskset belongs to another Profile.");$(a,s,"package",r.taskset);let o=r.modelResources;if(o){$(a,s,"definition",o.taskDefinition),$(a,s,"binding",o.rewardBinding);for(let l of o.rewards)$(a,s,"reward",l);for(let l of o.assets)$(a,s,"asset",l);$(a,s,"asset",Qe({environment:r.environment,verifierSet:r.verifierSet})),o.execution&&$(a,s,"asset",De(o.execution))}let m=JSON.stringify(t);i||a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[t.id,t.revision,t.contentHash,s,t.status,m,t.createdAt,t.updatedAt]),(!d||d.revision<t.revision)&&a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at",[t.id,s,t.status,m,t.createdAt,t.updatedAt])}c(Mr,"importTasksetPackageInTransaction");var ue=_.object({schemaVersion:_.literal("openpond.tasksetDraftPointer.v1"),id:_.string().trim().min(1),profileId:_.string().trim().min(1),modelScope:_e.shape.modelScope,status:_.enum(["draft","validating","needs_review","published"]),revision:_.number().int().positive(),workspacePath:_.string().trim().min(1),packageHash:_.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:_.object({id:_.string().trim().min(1),revision:_.number().int().positive(),contentHash:_.string().trim().min(8)}).nullable(),createdAt:_.string().trim().min(1),updatedAt:_.string().trim().min(1)}),Xr=class extends Or{static{c(this,"SqliteTasksetDraftStore")}async initializeModelTasksetDraft(e,t,r){await this.ready;let s=this.writeQueue.then(()=>ot(this.home,async()=>{let i=this.database,n=await _c({db:i,home:this.home,profileId:e,request:t,source:r});if(!n)return null;let d=c(()=>{let l=i.get("SELECT state FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]);if(l?.state==="deleted")throw new Error("This Taskset draft was deleted.");let f=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);if(!f){if(l?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let p=ue.parse(JSON.parse(f.payload));if(p.profileId!==e||p.modelScope?.source?.requestHash!==n.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),o=this.workspacePath(n.draft.id);await hc({home:this.home,initialized:n,workspacePath:o,completed:d,retainHash:c(l=>{let f=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),p=Dt.parse(JSON.parse(f.payload));if(p.workspaceHash&&p.workspaceHash!==l.workspaceHash)throw new Error("Taskset draft initialization produced different files on retry.");i.run("UPDATE model_taskset_draft_operations SET payload = ? WHERE profile_id = ? AND operation_id = ? AND state = 'prepared'",[JSON.stringify(l),e,t.operationId])},"retainHash")}),i.exec("BEGIN IMMEDIATE");try{if(!d()){let l=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),f=Dt.parse(JSON.parse(l.payload)),p=f.draft,u=ue.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:p.id,profileId:e,modelScope:p.modelScope,status:p.status,revision:p.revision,workspacePath:o,packageHash:f.workspaceHash,publishedTasksetRef:p.publishedTasksetRef,createdAt:p.createdAt,updatedAt:p.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[p.id,e,p.status,p.revision,JSON.stringify(u),p.createdAt,p.updatedAt]),i.run("UPDATE model_taskset_draft_operations SET state = 'ready' WHERE profile_id = ? AND operation_id = ?",[e,t.operationId])}i.exec("COMMIT")}catch(l){throw i.exec("ROLLBACK"),l}let m=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);return this.draftFromStoredPayload(JSON.parse(m.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(e,t,r={}){let s=_e.parse(e);await this.ready;let i=this.writeQueue.then(()=>ot(this.home,async()=>{let n=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[s.id]),d=n?ue.safeParse(JSON.parse(n.payload)):null;if(d?.success){if(d.data.profileId!==s.profileId)throw new Error("Taskset draft profile cannot change.");if(R(d.data.modelScope?{...d.data.modelScope,expectedModelRevision:0}:null)!==R(s.modelScope?{...s.modelScope,expectedModelRevision:0}:null)||!r.refreshModelRevision&&R(d.data.modelScope)!==R(s.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(d.data.status==="published")throw new Error("Published Taskset drafts are immutable. Initialize a new draft to revise the Taskset.");if(s.revision<d.data.revision||t!==void 0&&d.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((!d?.success||r.refreshModelRevision)&&s.modelScope){let p=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!p)throw new Error("Taskset draft Model was not found in this Profile.");if(B.parse(JSON.parse(p.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let o=this.workspacePath(s.id),l=(await na(s,o)).draft,f=ue.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:l.id,profileId:l.profileId,modelScope:l.modelScope,status:l.status,revision:l.revision,workspacePath:o,packageHash:await Z(o),publishedTasksetRef:l.publishedTasksetRef,createdAt:l.createdAt,updatedAt:l.updatedAt});return await this.savePointer(f,!0),l}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(e){let t=va.resolve(e.packagePath),s=(await Np(t)).isDirectory()?t:va.dirname(t);await bc(s);let i=await Z(s),n=await Ss(s),d=await this.getTasksetDraft(n.id);if(d){let p=d.metadata.importedTasksetPackage;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.packageHash===i&&d.profileId===e.profileId)return d;throw new Error(`Taskset draft ${n.id} already exists. Import a package with a distinct Taskset id.`)}let o=_e.parse({...n,profileId:e.profileId,modelScope:null,status:"draft",revision:1,publishedTasksetRef:null,metadata:{...n.metadata,importedTasksetPackage:{packageHash:i,importedAt:new Date().toISOString()}},updatedAt:new Date().toISOString()}),m=this.workspacePath(o.id),l=`${m}.import-${process.pid}-${Date.now()}`;await yp(va.dirname(m),{recursive:!0});try{await Rp(s,l,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await na(o,l),await ni(l,m)}catch(p){throw await Lc(l,{recursive:!0,force:!0}),p}let f=ue.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:o.id,profileId:o.profileId,status:o.status,revision:o.revision,workspacePath:m,packageHash:await Z(m),publishedTasksetRef:o.publishedTasksetRef,createdAt:o.createdAt,updatedAt:o.updatedAt});return await this.savePointer(f),this.draftFromStoredPayload(f)}async materializePublishedTasksetPackage(e){let t=await this.getTasksetDraftWorkspace(e.draftId);if(!t)throw new Error(`Taskset draft ${e.draftId} workspace was not found.`);if(e.taskset.metadata.sourcePackageHash!==void 0&&e.taskset.metadata.sourcePackageHash!==t.packageHash)throw new Error("Taskset draft files changed before publication. Refresh before publishing.");let r=`draft-${R({taskset:e.taskset,packageHash:t.packageHash})}`,s=await Vd(e.taskset,t.workspacePath),i=F.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:t.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:r}}}),n=F.parse({...i,contentHash:de(i)}),d=await rt(this.home,{taskset:n,generatedFiles:s.generatedFiles},r,{source:{directory:t.workspacePath,packageHash:t.packageHash},verify:c(m=>Mt(m,n),"verify")}),o=await this.getTasksetDraft(e.draftId);return o?.modelScope?.source?Rc({home:this.home,directory:d,taskset:n,preparation:o.modelScope.source}):{directory:d,taskset:n}}async finalizeTasksetDraftPublication(e){await this.ready;let t=_e.parse(e.draft),r=F.parse(e.taskset),s=t.modelScope?.source?.authoringGraph==="bound"&&typeof r.metadata.importedPackageHash=="string"?await ve(this.home,r.metadata.importedPackageHash):null,i=this.writeQueue.then(()=>ot(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 d=ue.parse(JSON.parse(n.payload));if(d.profileId!==t.profileId||r.profileId!==t.profileId)throw new Error("Taskset publication belongs to another Profile.");if(R(d.modelScope)!==R(t.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(d.status==="published"&&d.publishedTasksetRef){let p=d.publishedTasksetRef,u=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[p.id,p.revision,p.contentHash]);if(!u)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:_e.parse({...t,status:d.status,revision:d.revision,publishedTasksetRef:p,updatedAt:d.updatedAt}),taskset:F.parse(JSON.parse(u.payload))}}if(d.revision!==t.revision||r.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let o=d.modelScope?.source,m=o?.authoringGraph==="bound"&&r.metadata.modelTasksetDerivation&&typeof r.metadata.modelTasksetDerivation=="object"?{...r.metadata.modelTasksetDerivation,schemaVersion:o.lineage.schemaVersion}:r.metadata.modelTasksetAuthoring;if(o&&(r.id!==o.tasksetId||r.revision!==o.tasksetRevision||R(m)!==R(o.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let l=_e.parse({...t,status:"published",revision:t.revision+1,publishedTasksetRef:{id:r.id,revision:r.revision,contentHash:r.contentHash},updatedAt:new Date().toISOString()}),f=ue.parse({...d,status:l.status,revision:l.revision,publishedTasksetRef:l.publishedTasksetRef,updatedAt:l.updatedAt});return br(this.database,r,()=>{if(s&&Mr(this.database,{package:s,taskset:r,generatedFiles:[]}),lc(this.database,t,r,s),this.database.get("SELECT revision FROM taskset_drafts WHERE id = ?",[t.id])?.revision!==t.revision)throw new Error("Taskset draft changed during publication.");this.database.run("UPDATE taskset_drafts SET status = ?, revision = ?, payload = ?, updated_at = ? WHERE id = ?",[f.status,f.revision,JSON.stringify(f),f.updatedAt,t.id])}),{draft:l,taskset:r}}));return this.writeQueue=i.then(()=>{},()=>{}),i}async getTasksetDraft(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],r=>r);return t===null?null:this.draftFromStoredPayload(t)}async listTasksetDrafts(e){await this.ready,await this.writeQueue;let t=await this.all(e?"SELECT payload FROM taskset_drafts WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM taskset_drafts ORDER BY updated_at DESC",e?[e]:[]);return Promise.all(t.map(r=>this.draftFromStoredPayload(JSON.parse(r.payload))))}async getTasksetDraftWorkspace(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],s=>s);if(t===null)return null;let r=await this.pointerFromStoredPayload(t);return{draftId:r.id,workspacePath:r.workspacePath,packageHash:await Z(r.workspacePath)}}async deleteTasksetDraft(e){await this.ready;let t=this.writeQueue.then(()=>ot(this.home,async()=>{let r=this.workspacePath(e),s=`${r}.delete-${wp()}`,i=!1;try{await ni(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 ni(s,r).catch(()=>{}),n}i&&await Lc(s,{recursive:!0,force:!0})}));this.writeQueue=t.catch(()=>{}),await t}async tasksetDraftFiles(e,t,r){return await this.ready,ot(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=ue.parse(JSON.parse(s.payload));if(r!==void 0){let d=await vc(i.workspacePath,r);return{draftRevision:i.revision,file:{...d,writable:d.writable&&i.status!=="published"}}}let n=await Ic(i.workspacePath);return{draftRevision:i.revision,files:n.map(d=>({...d,writable:d.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(e,t){let r=ns.parse(t);await this.ready;let s=this.writeQueue.then(()=>ot(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=ue.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 Oc(n.workspacePath,r,async()=>{let d=ue.parse({...n,revision:n.revision+1,packageHash:await Z(n.workspacePath),updatedAt:new Date().toISOString()}),o=await this.draftFromStoredPayload(d);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 = ?",[d.revision,JSON.stringify(d),d.updatedAt,d.id]),this.database.exec("COMMIT")}catch(m){throw this.database.exec("ROLLBACK"),m}return o})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(e){let t=R(e).slice(0,24);return va.join(this.home,"workspaces","tasksets",`taskset-${t}`)}async draftFromStoredPayload(e){let t=await this.pointerFromStoredPayload(e),r=await Ss(t.workspacePath);return _e.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=ue.safeParse(e);if(t.success)return t.data;let r=_e.parse(e);await this.saveTasksetDraft(r);let s=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[r.id],ue.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)
2141
+ WHERE learning_resources.revision < excluded.revision`,[e,t,s.id,s.revision])}c(K,"importStarterReleaseInTransaction");function Zd(a,e,t){function r(o,d){let m=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,o,d.id,d.revision]);m||tt(404,"model_reward_unavailable",`The exact ${o} resource is unavailable in this Profile.`);let l=ae[o].parse(JSON.parse(m.payload));return pe(l),d.contentHash&&l.contentHash!==d.contentHash&&tt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),l}c(r,"read");let s=r("binding",t),i=[...new Map(s.sources.map(o=>[X(o.reward),r("reward",o.reward)])).values()],n=new Map;for(let o of i){let d=o.implementation;for(let m of[...o.assets,..."verifierRef"in d?[d.verifierRef]:[],..."rubricRef"in d?[d.rubricRef]:[],..."inputContract"in d?[d.inputContract]:[]])n.has(m.id)||n.set(m.id,r("asset",{id:m.id,revision:1})),V(n.get(m.id),m)}return{rewardBinding:s,rewards:i,assets:[...n.values()]}}c(Zd,"readSelectedModelReward");function Or(a,e,t,r){let s=Z.parse(e.metadata.rewardBinding),i=c((w,R)=>{let N=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.profileId,w,R.id,R.revision]);N||tt(404,"model_reward_unavailable",`The exact ${w} resource is unavailable in this Profile.`);let f=ae[w].parse(JSON.parse(N.payload));return pe(f),R.contentHash&&f.contentHash!==R.contentHash&&tt(409,"model_reward_changed","The selected resource does not match its immutable content hash."),f},"read"),n=i("definition",Z.parse(e.metadata.taskDefinition));(X(e.policy)!==X(n.execution.policy)||X(e.environment.metadata.portableEnvironment)!==X(n.execution.environment)||X(e.environment.metadata.portableTools)!==X(n.execution.tools))&&tt(409,"model_taskset_context_changed","Taskset context differs from its immutable task definition.");let o=i("binding",s),d=[...new Map(o.sources.map(w=>[X(w.reward),i("reward",w.reward)])).values()];e.metadata.rewardExecution!==void 0&&X(e.metadata.rewardExecution)!==X({binding:o,rewards:d})&&tt(409,"model_taskset_rewards_changed","Taskset embedded Rewards differ from their immutable binding.");let m=i("binding",t),l=[...new Map(m.sources.map(w=>[X(w.reward),i("reward",w.reward)])).values()],E=new Map((r?.modelResources?.assets??[]).map(w=>[w.id,w])),p=c(w=>{E.has(w)||E.set(w,i("asset",{id:w,revision:1}))},"addAsset");for(let w of[...d,...l]){let R=w.implementation;for(let N of[...w.assets,..."verifierRef"in R?[R.verifierRef]:[],..."rubricRef"in R?[R.rubricRef]:[],..."inputContract"in R?[R.inputContract]:[]])p(N.id)}let u,T=cs.shape.executionResources.parse(e.environment.metadata.portableExecutionResources);if(n.execution.environment.entrypoint==="openpond.javascript-environment.v1"){let w=i("asset",{id:ds(n.execution),revision:1});u=$t.parse(JSON.parse(V(w,w.asset)));for(let R of[u.javascript.module,u.environment.actionSchemaRef,u.environment.observationSchemaRef,u.environment.stateSchemaRef])R&&p(R.id)}for(let w of e.tasks)w.privilegedContextRef&&p(w.privilegedContextRef);X(e.graders)!==X(_t(o,d,[...E.values()]))&&tt(409,"model_taskset_graders_changed","Taskset graders differ from their immutable Reward binding.");let h=ge.parse(U({schemaVersion:"openpond.tasksetRelease.v2",id:e.id,revision:e.revision,...n.execution,graders:ct(o,d),...e.metrics?{metrics:e.metrics}:{},tasks:e.tasks.map(w=>{let R=eo(w);return w.requiredOutputs===void 0&&w.metadata.portableTaskRecord===void 0&&delete R.requiredOutputs,R}),metadata:e.metadata.derivedPortableMetadata??{localSource:I(e),starter:{taskDefinition:I(n),rewardBinding:s}}}));return{sourcePackage:r?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:{taskset:h,taskDefinition:n,rewardBinding:o,rewards:d,assets:[...E.values()],...T?{executionResources:T}:{},...u?{execution:u}:{}},selectedBinding:m,selectedRewards:l,assets:E}}c(Or,"readModelTasksetSource");function tt(a,e,t){throw new Pe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(tt,"fail");function Gs(a){if(a?.metadata.learning===void 0)return null;let e=qi.parse(a.metadata.learning);return pe(e.definition),Pi(e.binding,e.rewards),C(e.definition.rewardBinding,I(e.binding))||Ie(409,"model_batch_binding_changed","Reviewed task definition and Reward binding do not match."),e.binding}c(Gs,"reviewedTasksetRewardBinding");function Qs(a,e,t=!0,r){let s=Wt(e),{project:i}=s,n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?B.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&Ie(404,"model_not_found","Model is not available in this Profile."),(o?.revision??0)!==s.expectedRevision&&Ie(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let d=i.trainingSetup.tasksetRef;if(!d||!i.trainingSetup.rewardBindingRef)return null;let m=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[d.id,d.revision]),l=m?F.parse(JSON.parse(m.payload)):null;(!l||l.profileId!==i.profileId)&&Ie(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),(l.contentHash!==d.contentHash||se(l)!==l.contentHash)&&Ie(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash.");let E=Gs(l);if(E)return C(I(E),i.trainingSetup.rewardBindingRef)||Ie(422,"model_batch_reward_review_required","Changing a reviewed batch's Reward requires regrading and a new reviewed batch."),null;let p=l.metadata.rewardBinding===void 0?null:Z.parse(l.metadata.rewardBinding);if(p&&C(p,i.trainingSetup.rewardBindingRef))return null;if(!p&&r&&!r.modelResources&&!r.learningResources){let O=Zd(a,i.profileId,i.trainingSetup.rewardBindingRef),q=Eo({owner:{scopeId:i.profileId,modelId:i.id},source:r,...O}),W=ec(a,s,t),D=St({package:q,profileId:i.profileId,name:l.name,createdAt:W.created_at}),$={...q.modelResources,taskset:q.taskset,executionResources:{environment:q.environment,verifierSet:q.verifierSet}};return{taskset:D.taskset,generatedFiles:D.generatedFiles,directoryId:String(D.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:null,derived:$,imported:D}}p||Ie(422,"model_taskset_derivation_unavailable","This Taskset needs an authored task definition and Reward binding before its Reward can be changed.");let{sourcePackage:u,selectedBinding:T,selectedRewards:h,assets:g}=Or(a,l,i.trainingSetup.rewardBindingRef,r),w=Tt.safeParse(u.taskset.metadata.modelTasksetDerivation),N=o?.hosted?.apiOrigin&&o.hosted.tasksets.some(O=>{if(!w.success||O.localTasksetId!==l.id||!O.packageHash||!O.localTasksetHash)return!1;let q=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND content_hash = ? AND profile_id = ?",[l.id,O.localTasksetHash,i.profileId]),W=q?F.parse(JSON.parse(q.payload)):null;if(!W||W.contentHash!==O.localTasksetHash)return!1;let D=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = 'package' AND id = ? AND revision = ?",[i.profileId,O.releaseId,O.releaseRevision]),$=D?ge.parse(JSON.parse(D.payload)):null,J=Tt.safeParse($?.metadata.modelTasksetDerivation);return $?.contentHash===O.releaseHash&&J.success&&X(J.data.owner)===X(w.data.owner)&&C(J.data.root,w.data.root)})&&w.success&&w.data.owner.modelId===i.id?w.data.owner:{scopeId:i.profileId,modelId:i.id},f=Jt({owner:N,source:u,rewardBinding:T,rewards:h,assets:[...g.values()]}),k=ec(a,s,t);if(r){let O=new Map(r.files.map(te=>[te.asset.id,te]));for(let te of f.assets)O.set(te.id,{asset:te.asset,base64:Buffer.from(te.text).toString("base64")});let{taskset:q,executionResources:W,...D}=f;if(!W)throw new Error("Derived imported package is missing execution resources.");let $=Ga({schemaVersion:"openpond.tasksetPackage.v1",taskset:q,...W,modelResources:D,files:[...O.values()]}),J=St({package:$,profileId:i.profileId,name:l.name,createdAt:k.created_at});return{taskset:J.taskset,generatedFiles:J.generatedFiles,directoryId:String(J.taskset.environment.metadata.runtimeSourceTasksetId),source:l,sourcePackage:u,derived:f,imported:J}}let b=`${f.taskset.id}-r${f.taskset.revision}-${U({packageHash:f.taskset.contentHash,preparedAt:k.created_at}).contentHash}`,S=Za(l,k.created_at),P=new Map(f.taskset.tasks.map(O=>[O.id,O])),j=[];for(let O of f.taskset.graders)if(O.kind==="custom_verifier"){let q=tr(O.verifierRef.contentHash);j.some(W=>W.path===q)||j.push({path:q,role:"verifier",content:V(g.get(O.verifierRef.id),O.verifierRef)})}let H=er({tasksetId:f.taskset.id,now:k.created_at,sourcePackageHash:f.taskset.contentHash,draft:{...S,policy:f.taskset.policy,tasks:S.tasks.map(O=>({...O,metadata:{...O.metadata,portableTaskRecord:P.get(O.id)}})),environment:{...S.environment,metadata:{...S.environment.metadata,runtimeSourceTasksetId:b,portableExecutionResources:f.executionResources}},graders:_t(T,h,[...g.values()]),learningSignals:{...S.learningSignals,rewards:S.learningSignals.rewards.map(O=>({...O,rules:[{id:T.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],artifactRef:T.id,metadata:{...O.metadata,rewardBinding:I(T)}}))},metadata:{...S.metadata,portableCapabilities:f.taskset.capabilities,taskDefinition:I(f.taskDefinition),rewardBinding:I(T),rewardExecution:{binding:T,rewards:h},derivedPortableMetadata:f.taskset.metadata,modelTasksetDerivation:f.taskset.metadata.modelTasksetDerivation}}});if(H.metrics=f.taskset.metrics,H.contentHash=se(H),H.revision!==f.taskset.revision)throw new Error("Derived local and portable Taskset revisions differ.");return{taskset:H,generatedFiles:j,directoryId:b,source:l,sourcePackage:u,derived:f}}c(Qs,"prepareModelTasksetSave");function tc(a,e,t){let r=e.project.profileId;for(let o of[t.sourcePackage,t.derived]){if(!o)continue;for(let m of o.assets)K(a,r,"asset",m);for(let m of o.rewards)K(a,r,"reward",m);K(a,r,"binding",o.rewardBinding),K(a,r,"package",o.taskset),K(a,r,"definition",o.taskDefinition);let d=o.executionResources??o.execution;d&&K(a,r,"asset",Je(d)),o.execution&&K(a,r,"asset",xe(o.execution))}let s=t.taskset;a.get("SELECT content_hash FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[s.id,s.revision])&&Ie(409,"model_taskset_revision_conflict","The derived Taskset revision was already published. Refresh before saving.");let n=JSON.stringify(s);a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at",[s.id,r,s.status,n,s.createdAt,s.updatedAt]),a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.revision,s.contentHash,r,s.status,n,s.createdAt,s.updatedAt]),a.run("UPDATE model_project_taskset_preparations SET state = 'committed' WHERE profile_id = ? AND operation_id = ?",[r,e.operationId])}c(tc,"commitPreparedModelTaskset");function ec(a,e,t){let r=Yl("sha256").update(X(e)).digest("hex"),s=e.project.profileId;t&&a.run("INSERT OR IGNORE INTO model_project_taskset_preparations (profile_id, operation_id, request_hash, created_at, state) VALUES (?, ?, ?, ?, 'preparing')",[s,e.operationId,r,new Date().toISOString()]);let i=a.get("SELECT request_hash, created_at FROM model_project_taskset_preparations WHERE profile_id = ? AND operation_id = ?",[s,e.operationId])??{request_hash:r,created_at:new Date().toISOString()};return i.request_hash!==r&&Ie(409,"model_operation_conflict","This save operation was already used with different Model configuration."),i}c(ec,"recordModelTasksetPreparation");function Ie(a,e,t){throw new Pe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(Ie,"fail");function Lr(a,e){let t=Wt(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=ac("sha256").update(X(t)).digest("hex");return r.request_hash!==s&&_e(409,"model_operation_conflict","This save operation was already used with different Model configuration."),B.parse(JSON.parse(r.payload))}c(Lr,"findModelProjectSave");function rc(a,e,t,r){a.exec("BEGIN IMMEDIATE");try{let s=ga(a,e,t,r);return a.exec("COMMIT"),s}catch(s){throw a.exec("ROLLBACK"),s}}c(rc,"commitModelProjectSave");function ga(a,e,t,r){let s=Wt(e);s.learning&&_e(422,"model_learning_hosted_required","Create this Model in a hosted workspace to enable continual learning.");let i=ac("sha256").update(X(s)).digest("hex"),{project:n,operationId:o,expectedRevision:d}=s,m=Lr(a,s);if(m)return m;let l=a.get("SELECT payload FROM model_projects WHERE id = ?",[n.id]),E=l?B.parse(JSON.parse(l.payload)):null;E&&E.profileId!==n.profileId&&_e(404,"model_not_found","Model is not available in this Profile."),(E?.revision??0)!==d&&_e(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let p=Kl(a,s),u=Gs(p);u||$l(a,s);let T=u?I(u):p?.metadata.rewardBinding===void 0?null:Z.parse(p.metadata.rewardBinding);p&&n.trainingSetup.rewardBindingRef&&(!T||!C(T,n.trainingSetup.rewardBindingRef))&&!t&&_e(409,"model_taskset_preparation_required","Changing this Reward requires publishing its model-owned Taskset revision."),t&&((!n.trainingSetup.tasksetRef||!C(n.trainingSetup.tasksetRef,I(t.source))||!n.trainingSetup.rewardBindingRef||!C(n.trainingSetup.rewardBindingRef,I(t.derived.rewardBinding)))&&_e(409,"model_taskset_preparation_changed","The prepared Taskset differs from the selected configuration."),tc(a,s,t));let h=new Date().toISOString(),g=$e.parse({...n.trainingSetup,baseModel:n.trainingSetup.baseModel??n.defaultBaseModel,method:n.trainingSetup.method??(p?.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":p?.authoringProvenance.buildIntent==="demonstrations"?"sft":null),...T?{rewardBindingRef:T}:{},...t?{rewardBindingRef:I(t.derived.rewardBinding),tasksetRef:I(t.taskset),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&C(n.trainingSetup.evaluationTasksetRef,I(t.source))?{evaluationTasksetRef:I(t.taskset)}:{}}:{}}),w=t?.derived??r??(p&&!u&&g.rewardBindingRef&&p.metadata.taskDefinition!==void 0&&p.metadata.rewardBinding!==void 0?Or(a,p,g.rewardBindingRef).sourcePackage:void 0),R=B.parse({...E,...n,trainingSetup:w?Ea({setup:g,package:w}):g,schemaVersion:"openpond.modelProject.v2",revision:d+1,hosted:E?.hosted??null,tasksetSyncs:E?.tasksetSyncs??[],createdAt:E?.createdAt??h,updatedAt:h});return a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2142
+ ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[R.id,R.profileId,JSON.stringify(R),R.createdAt,R.updatedAt]),a.run("INSERT INTO model_project_save_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[R.profileId,o,i,JSON.stringify(R)]),R}c(ga,"saveModelProjectInTransaction");function Kl(a,e){let t=e.project.trainingSetup.tasksetRef;if(!t){e.project.trainingSetup.tasksetRelease&&_e(400,"model_taskset_required","Choose the Taskset corresponding to this release.");return}let r=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[t.id,t.revision]),s=r?F.parse(JSON.parse(r.payload)):null;return(!s||s.profileId!==e.project.profileId)&&_e(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),s.contentHash!==t.contentHash&&_e(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash."),s}c(Kl,"assertTaskset");function $l(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||_e(404,"model_reward_unavailable","The exact Reward configuration is unavailable in this Profile.");let d=(i==="binding"?jt:Ca).parse(JSON.parse(o.payload));return d.contentHash!==n.contentHash&&_e(409,"model_reward_changed","The selected Reward does not match its immutable content hash."),pe(d),d}c(r,"read");let s=jt.parse(r("binding",t));for(let i of s.sources)r("reward",i.reward)}c($l,"assertReward");function _e(a,e,t){throw new Pe(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}c(_e,"fail");function sc(a,e,t,r){let s=e.modelScope;if(!s)return;let i=a.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e.profileId]);if(!i)throw new Error("Taskset draft Model was not found in this Profile.");let n=B.parse(JSON.parse(i.payload)),o={id:t.id,revision:t.revision,contentHash:t.contentHash};return ga(a,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${y({draftId:e.id,revision:e.revision,scope:s,tasksetRef:o})}`,expectedRevision:s.expectedModelRevision,project:mn.strip().parse({...n,trainingSetup:{...n.trainingSetup,tasksetRef:o,rewardBindingRef:t.metadata.rewardBinding===void 0?null:Z.parse(t.metadata.rewardBinding),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&n.trainingSetup.tasksetRef&&C(n.trainingSetup.evaluationTasksetRef,n.trainingSetup.tasksetRef)?{evaluationTasksetRef:o}:{}}})},null,r?.modelResources?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:r??void 0)}c(sc,"selectTasksetDraftModel");import{createHash as ep,randomUUID as tp}from"node:crypto";import{lstat as lc,mkdir as cc,readdir as ap,readFile as rp,rename as sp,rm as ip,writeFile as np}from"node:fs/promises";import Pt from"node:path";import{constants as Zs}from"node:fs";import{link as Jl,lstat as Vl,mkdir as ei,mkdtemp as ic,open as zl,readFile as Gl,readdir as Ql,rename as Zl,rm as nc,writeFile as oc}from"node:fs/promises";import Q from"node:path";async function Yg(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 ye(a,t);if(!r.learningResources||r.taskset.id!==e.id||r.taskset.revision!==e.revision||y(Ua(r.taskset))!==y(e.metadata.learning))throw new Error("Imported batch differs from its pinned package.");return r}c(Yg,"readImportedLearningTasksetPackage");async function at(a,e){let t=Xe(e),r=Q.join(a,"training","portable-packages");await ei(r,{recursive:!0});let s=Q.join(r,`${t.contentHash}.json`),i=await ic(Q.join(r,".package-"));try{let n=Q.join(i,"package.json");await oc(n,JSON.stringify(t),{flag:"wx",mode:384});try{await Jl(n,s)}catch(o){if(o.code!=="EEXIST")throw o;await ye(a,t.contentHash)}}finally{await nc(i,{recursive:!0,force:!0})}}c(at,"cacheTasksetPackage");async function ye(a,e){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid Taskset package cache identity.");let t=Q.join(a,"training","portable-packages",`${e}.json`),r=await zl(t,Zs.O_RDONLY|Zs.O_NOFOLLOW|Zs.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Ve)throw new Error("Taskset package cache must be a bounded regular file.");let i=Buffer.alloc(s.size),n=0;for(;n<i.length;){let d=await r.read(i,n,i.length-n,n);if(!d.bytesRead)throw new Error("Taskset package cache changed during read.");n+=d.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset package cache changed during read.");let o=Xe(JSON.parse(i.toString("utf8")));if(o.contentHash!==e)throw new Error("Cached Taskset package differs from its saved receipt.");return o}finally{await r.close()}}c(ye,"readCachedTasksetPackage");async function wa(a){let e=Xe(a.package),t=Ns(a.taskset.profileId,e.contentHash);if(a.taskset.environment.metadata.runtimeSourceTasksetId!==t)throw new Error("Imported Taskset directory differs from its package identity.");let r=new Map,s=c((d,m)=>{if(Q.isAbsolute(d)||d.includes("\\")||d.split("/").some(E=>!E||E==="."||E===".."))throw new Error("Taskset package file requires a safe relative path.");let l=r.get(d);if(l&&!Buffer.from(l).equals(Buffer.from(m)))throw new Error(`Taskset package files collide at ${d}.`);r.set(d,m)},"add");for(let d of e.files)s(d.asset.path,Et(d));for(let d of a.generatedFiles)s(d.path,Buffer.from(d.content,"utf8"));s("taskset.json",Buffer.from(JSON.stringify(a.taskset),"utf8"));let i=Q.join(a.home,"training","tasksets");await ei(i,{recursive:!0});let n=await ic(Q.join(i,".package-import-")),o=Q.join(i,t);try{for(let[d,m]of r)await ei(Q.dirname(Q.join(n,d)),{recursive:!0}),await oc(Q.join(n,d),m,{flag:"wx",mode:384});try{await Zl(n,o)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;let m=await Vl(o);if(!m.isDirectory()||m.isSymbolicLink())throw new Error("Imported Taskset destination must be a regular directory.");let l=await dc(o);if(JSON.stringify(l.sort())!==JSON.stringify([...r.keys()].sort()))throw new Error("Imported Taskset file inventory changed.");for(let[E,p]of r)if(!(await Gl(Q.join(o,E))).equals(Buffer.from(p)))throw new Error("Imported Taskset files differ from the pinned package.")}await at(a.home,e)}finally{await nc(n,{recursive:!0,force:!0})}}c(wa,"materializeImportedTasksetPackage");async function dc(a,e=""){let t=[];for(let r of await Ql(Q.join(a,e),{withFileTypes:!0})){let s=Q.posix.join(e,r.name);if(r.isSymbolicLink())throw new Error("Imported Taskset directories cannot contain symbolic links.");if(r.isDirectory())t.push(...await dc(a,s));else if(r.isFile())t.push(s);else throw new Error("Imported Taskset packages require regular files.")}return t}c(dc,"regularFiles");var xt=ho.extend({workspaceHash:_.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function pc(a){let{db:e,profileId:t}=a,r=rs.parse(a.request),s=c(()=>{let k=e.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[r.modelId,t]);if(!k)throw new Error("Taskset draft Model was not found in this Profile.");return B.parse(JSON.parse(k.payload))},"requireModel"),i=s(),n=y(r),o=e.get("SELECT request_hash, state, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(o){if(o.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(o.state==="deleted")throw new Error("This Taskset draft was deleted.");return xt.parse(JSON.parse(o.payload))}if(!a.source)return null;if(i.revision!==r.expectedModelRevision)throw new Error("Model changed before draft initialization. Refresh before editing.");let d=i.trainingSetup.tasksetRef,m=d?e.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[d.id,d.revision,t]):null,l=m?F.parse(JSON.parse(m.payload)):null;if(!l||!d||l.contentHash!==d.contentHash)throw new Error("The selected source Taskset is unavailable.");let E=a.source,p=i.hosted?.apiOrigin?i.hosted.tasksets.find(k=>k.localTasksetId===l.id&&k.localTasksetHash===l.contentHash&&k.packageHash===E.contentHash&&k.releaseId===E.taskset.id&&k.releaseRevision===E.taskset.revision&&k.releaseHash===E.taskset.contentHash):null,u=typeof l.metadata.importedPackageHash=="string"?l.metadata.importedPackageHash:p?.packageHash;if(u?u!==E.contentHash:!C(I(Me({taskset:l,adapterId:Re(l)}).tasksetRelease),I(E.taskset)))throw new Error("Taskset draft package differs from its selected source.");let T=E.modelResources?Tt.safeParse(E.taskset.metadata.modelTasksetDerivation):as.safeParse(E.taskset.metadata.modelTasksetAuthoring),h=p&&T.success&&T.data.owner.modelId===i.id?T.data.owner:{scopeId:t,modelId:i.id},g=po({request:r,owner:h,source:E}),w=go({sourceDraft:Za(l),source:E,preparation:g,expectedModelRevision:r.expectedModelRevision});await at(a.home,E);let R=xt.parse({...w,workspaceHash:null}),N=R.draft;e.exec("BEGIN IMMEDIATE");try{let k=e.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(k&&k.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(!k&&s().revision!==r.expectedModelRevision)throw new Error("Model changed during draft initialization. Refresh before editing.");e.run("INSERT INTO model_taskset_draft_operations (profile_id, operation_id, request_hash, draft_id, state, payload) VALUES (?, ?, ?, ?, 'prepared', ?) ON CONFLICT(profile_id, operation_id) DO NOTHING",[t,r.operationId,n,N.id,JSON.stringify(R)]),e.exec("COMMIT")}catch(k){throw e.exec("ROLLBACK"),k}let f=e.get("SELECT request_hash, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(!f||f.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");return xt.parse(JSON.parse(f.payload))}c(pc,"prepareDraftInitialization");async function uc(a){let{initialized:e,workspacePath:t}=a;if(a.completed())return;if(e.workspaceHash)try{if(await lc(t),a.completed())return;if(await ti(t),await G(t)!==e.workspaceHash)throw new Error("Prepared Taskset draft files changed before initialization completed.");return}catch(s){if(s.code!=="ENOENT")throw s}let r=`${t}.initializing-${tp()}`;await cc(Pt.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 ye(a.home,s.sourcePackageHash),n=new Map;for(let d of e.filePaths){let m=i.files.find(l=>l.asset.id===d.assetId);if(!m)throw new Error("Taskset draft source asset is missing.");for(let l of d.paths){if(l.includes("\\")||Pt.posix.isAbsolute(l)||l.split("/").some(u=>!u||u==="."||u===".."||u.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let E=n.get(l);if(E&&E!==m.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(E)continue;let p=Pt.join(r,l);await cc(Pt.dirname(p),{recursive:!0}),await np(p,Et(m),{flag:"wx"}),n.set(l,m.asset.contentHash)}}await sa(e.draft,r);for(let[d,m]of n)if(ep("sha256").update(await rp(Pt.join(r,d))).digest("hex")!==m)throw new Error(`Taskset draft source asset conflicts with authoring file ${d}.`);let o=await G(r);if(a.retainHash({...e,workspaceHash:o}),a.completed())return;try{await sp(r,t)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;if(a.completed())return;if(await ti(t),await G(t)!==o)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await ip(r,{recursive:!0,force:!0})}}c(uc,"materializeDraftInitialization");async function ti(a){let e=await lc(a);if(!e.isDirectory()||e.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let t of await ap(a,{withFileTypes:!0})){if(t.name.startsWith(".env")||t.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(t.isDirectory())await ti(Pt.join(a,t.name));else if(!t.isFile())throw new Error("Taskset draft source must contain regular files.")}}c(ti,"assertRegularTree");import dp from"node:path";import{constants as ai}from"node:fs";import{open as op,realpath as mc}from"node:fs/promises";import Ra from"node:path";function Tc(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?ps(a.learningResources).map(t=>t.asset.id):[]])}c(Tc,"tasksetPackageInlineAssetIds");async function Xt(a){let e=a.sources.length?await mc(a.root):Ra.resolve(a.root),t=[],r=new Set,s=0,i=c((n,o)=>{if(r.has(n.id))throw new Error(`Duplicate local Taskset asset: ${n.id}.`);if(r.add(n.id),s+=4*Math.ceil(o.byteLength/3),s>Ve)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=hi.parse(n.asset);if(!n.sourcePath||Ra.isAbsolute(n.sourcePath))throw new Error(`Taskset asset ${o.id} requires a relative source path.`);let d=Ra.resolve(e,n.sourcePath);if(!d.startsWith(`${e}${Ra.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);if(!(await mc(d)).startsWith(`${e}${Ra.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);let l=await op(d,ai.O_RDONLY|ai.O_NOFOLLOW|ai.O_NONBLOCK);try{let E=await l.stat();if(!E.isFile()||E.size!==o.sizeBytes)throw new Error(`Taskset asset ${o.id} differs from its immutable file size.`);if(4*Math.ceil(E.size/3)+s>Ve)throw new Error("Local Taskset files exceed the package envelope.");let p=Buffer.alloc(E.size),u=0;for(;u<p.length;){let h=await l.read(p,u,p.length-u,u);if(!h.bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);u+=h.bytesRead}if((await l.read(Buffer.alloc(1),0,1,u)).bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);i(o,p)}finally{await l.close()}}for(let n of[...a.content.modelResources?.assets??[],...a.content.learningResources?.assets??[]])r.has(n.asset.id)||i(n.asset,Buffer.from(V(n,n.asset),"utf8"));if(a.content.learningResources)for(let n of ps(a.content.learningResources))r.has(n.asset.id)||i(n.asset,Buffer.from(n.base64,"base64"));if(a.fileOrder){if(new Set(a.fileOrder).size!==t.length||a.fileOrder.length!==t.length||a.fileOrder.some(o=>!r.has(o)))throw new Error("Saved package file order differs from its inventory.");let n=new Map(a.fileOrder.map((o,d)=>[o,d]));t.sort((o,d)=>n.get(o.asset.id)-n.get(d.asset.id))}return Ga({...a.content,files:t})}c(Xt,"captureLocalTasksetPackage");async function Ec(a){let e=Me({taskset:a.taskset,adapterId:Re(a.taskset)}),t=await Xt({root:a.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:e.tasksetRelease,environment:e.environmentRelease,verifierSet:e.verifierSetRelease},sources:Ue.parse(a.taskset.metadata.portableFileInventory??[])}),r=a.preparation.authoringGraph==="bound"?await ye(a.home,a.preparation.sourcePackageHash):void 0,s=uo({preparation:a.preparation,edited:t,source:r});if(s.modelResources){let p=St({package:s,profileId:a.taskset.profileId,name:a.taskset.name,createdAt:a.taskset.createdAt}),u=F.parse({...p.taskset,authoringProvenance:a.taskset.authoringProvenance,metadata:{...p.taskset.metadata,sourcePackageHash:a.taskset.metadata.sourcePackageHash}}),T=F.parse({...u,contentHash:se(u)});return await wa({home:a.home,...p,taskset:T}),{taskset:T,directory:dp.join(a.home,"training","tasksets",String(T.environment.metadata.runtimeSourceTasksetId))}}let i=Ue.parse(a.taskset.metadata.portableFileInventory??[]),n=s.files.map(p=>({asset:p.asset,sourcePath:i.find(u=>u.asset.id===p.asset.id)?.sourcePath??p.asset.path})),o=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(p=>p.asset.path==="environment/execution.json"):void 0,d=`model-draft-${y({packageHash:s.contentHash,taskset:a.taskset})}`,m=F.parse({...a.taskset,id:s.taskset.id,revision:s.taskset.revision,metadata:{...a.taskset.metadata,portableFileInventory:n,importedPackageHash:s.contentHash,derivedPortableMetadata:s.taskset.metadata},environment:{...a.taskset.environment,metadata:{...a.taskset.environment.metadata,runtimeSourceTasksetId:d,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),l=F.parse({...m,contentHash:se(m)}),E=await Ze(a.home,{taskset:l,generatedFiles:o?[{path:o.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(Et(o))}]:[]},d,{source:{directory:a.directory,packageHash:await G(a.directory)},verify:c(p=>Ct(p,l),"verify")});return await at(a.home,s),{directory:E,taskset:l}}c(Ec,"materializeModelTasksetDraftPublication");import{constants as ri}from"node:fs";import{createHash as cp}from"node:crypto";import{lstat as _c,mkdir as lp,open as pp,readdir as up,rm as fc}from"node:fs/promises";import Ar from"node:path";var rt=c((a,e)=>yo(Ar.join(a,"state","taskset-draft-writes"),e),"withTasksetDraftLock"),hc=Fn,mp=c(a=>cp("sha256").update(a).digest("hex"),"digest");async function br(a,e,t=!1){Ya.parse(e);let r=a;for(let s of["",...e.split("/").slice(0,-1)]){s&&(r=Ar.join(r,s)),t&&await lp(r,{recursive:!1}).catch(n=>{if(n.code!=="EEXIST")throw n});let i=await _c(r);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return Ar.join(a,e)}c(br,"regularPath");async function gc(a,e){let t=await br(a,e),r=await pp(t,ri.O_RDONLY|ri.O_NOFOLLOW|ri.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Un)throw new Error("Taskset draft file must be a regular file within the 6 MB editing limit.");let i=Buffer.alloc(s.size),n=0;for(;n<i.length;){let o=await r.read(i,n,i.length-n,n);if(!o.bytesRead)throw new Error("Taskset draft file changed during reading.");n+=o.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset draft file changed during reading.");return i}finally{await r.close()}}c(gc,"readBytes");async function wc(a,e){let t=await gc(a,e);return jn(e,t)}c(wc,"readTasksetDraftFile");async function Rc(a){let e=[];async function t(r=""){for(let s of await up(Ar.join(a,r),{withFileTypes:!0})){let i=r?`${r}/${s.name}`:s.name;if(Ya.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 _c(await br(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:hc(i)})}}return c(t,"visit"),await br(a,"taskset.json"),await t(),e.sort((r,s)=>r.path.localeCompare(s.path))}c(Rc,"listTasksetDraftFiles");async function yc(a,e,t){if(!hc(e.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let r=null;try{r=await gc(a,e.path)}catch(n){if(n.code!=="ENOENT")throw n}if((r?mp(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?Bn(e.content):null,i=await br(a,e.path,!0);s?await Ss(i,s):await fc(i);try{return await t()}catch(n){throw r?await Ss(i,r):await fc(i,{force:!0}),n}}c(yc,"mutateTasksetDraftFile");function Cr(a,e){let{taskset:t,package:r}=e,s=t.profileId,i=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[t.id,t.revision]);if(i&&X(F.parse(JSON.parse(i.payload)))!==X(t))throw new Error("Imported Taskset revision conflicts with an existing immutable local revision.");let n=a.get("SELECT payload FROM tasksets WHERE id = ?",[t.id]),o=n?F.parse(JSON.parse(n.payload)):null;if(o&&o.profileId!==s)throw new Error("Imported Taskset belongs to another Profile.");K(a,s,"package",r.taskset);let d=r.modelResources;if(d){K(a,s,"definition",d.taskDefinition),K(a,s,"binding",d.rewardBinding);for(let l of d.rewards)K(a,s,"reward",l);for(let l of d.assets)K(a,s,"asset",l);K(a,s,"asset",Je({environment:r.environment,verifierSet:r.verifierSet})),d.execution&&K(a,s,"asset",xe(d.execution))}let m=JSON.stringify(t);i||a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[t.id,t.revision,t.contentHash,s,t.status,m,t.createdAt,t.updatedAt]),(!o||o.revision<t.revision)&&a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at",[t.id,s,t.status,m,t.createdAt,t.updatedAt])}c(Cr,"importTasksetPackageInTransaction");var de=_.object({schemaVersion:_.literal("openpond.tasksetDraftPointer.v1"),id:_.string().trim().min(1),profileId:_.string().trim().min(1),modelScope:me.shape.modelScope,status:_.enum(["draft","validating","needs_review","published"]),revision:_.number().int().positive(),workspacePath:_.string().trim().min(1),packageHash:_.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:_.object({id:_.string().trim().min(1),revision:_.number().int().positive(),contentHash:_.string().trim().min(8)}).nullable(),createdAt:_.string().trim().min(1),updatedAt:_.string().trim().min(1)}),Pr=class extends Sr{static{c(this,"SqliteTasksetDraftStore")}async initializeModelTasksetDraft(e,t,r){await this.ready;let s=this.writeQueue.then(()=>rt(this.home,async()=>{let i=this.database,n=await pc({db:i,home:this.home,profileId:e,request:t,source:r});if(!n)return null;let o=c(()=>{let l=i.get("SELECT state FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]);if(l?.state==="deleted")throw new Error("This Taskset draft was deleted.");let E=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);if(!E){if(l?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let p=de.parse(JSON.parse(E.payload));if(p.profileId!==e||p.modelScope?.source?.requestHash!==n.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),d=this.workspacePath(n.draft.id);await uc({home:this.home,initialized:n,workspacePath:d,completed:o,retainHash:c(l=>{let E=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),p=xt.parse(JSON.parse(E.payload));if(p.workspaceHash&&p.workspaceHash!==l.workspaceHash)throw new Error("Taskset draft initialization produced different files on retry.");i.run("UPDATE model_taskset_draft_operations SET payload = ? WHERE profile_id = ? AND operation_id = ? AND state = 'prepared'",[JSON.stringify(l),e,t.operationId])},"retainHash")}),i.exec("BEGIN IMMEDIATE");try{if(!o()){let l=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),E=xt.parse(JSON.parse(l.payload)),p=E.draft,u=de.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:p.id,profileId:e,modelScope:p.modelScope,status:p.status,revision:p.revision,workspacePath:d,packageHash:E.workspaceHash,publishedTasksetRef:p.publishedTasksetRef,createdAt:p.createdAt,updatedAt:p.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[p.id,e,p.status,p.revision,JSON.stringify(u),p.createdAt,p.updatedAt]),i.run("UPDATE model_taskset_draft_operations SET state = 'ready' WHERE profile_id = ? AND operation_id = ?",[e,t.operationId])}i.exec("COMMIT")}catch(l){throw i.exec("ROLLBACK"),l}let m=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);return this.draftFromStoredPayload(JSON.parse(m.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(e,t,r={}){let s=me.parse(e);await this.ready;let i=this.writeQueue.then(()=>rt(this.home,async()=>{let n=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[s.id]),o=n?de.safeParse(JSON.parse(n.payload)):null;if(o?.success){if(o.data.profileId!==s.profileId)throw new Error("Taskset draft profile cannot change.");if(y(o.data.modelScope?{...o.data.modelScope,expectedModelRevision:0}:null)!==y(s.modelScope?{...s.modelScope,expectedModelRevision:0}:null)||!r.refreshModelRevision&&y(o.data.modelScope)!==y(s.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.data.status==="published")throw new Error("Published Taskset drafts are immutable. Initialize a new draft to revise the Taskset.");if(s.revision<o.data.revision||t!==void 0&&o.data.revision!==t)throw new Error("Taskset draft changed before saving. Refresh before saving.")}else if(t!==void 0)throw new Error("Taskset draft is unavailable for saving.");if((!o?.success||r.refreshModelRevision)&&s.modelScope){let p=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!p)throw new Error("Taskset draft Model was not found in this Profile.");if(B.parse(JSON.parse(p.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let d=this.workspacePath(s.id),l=(await sa(s,d)).draft,E=de.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:l.id,profileId:l.profileId,modelScope:l.modelScope,status:l.status,revision:l.revision,workspacePath:d,packageHash:await G(d),publishedTasksetRef:l.publishedTasksetRef,createdAt:l.createdAt,updatedAt:l.updatedAt});return await this.savePointer(E,!0),l}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(e){let t=ya.resolve(e.packagePath),s=(await hp(t)).isDirectory()?t:ya.dirname(t);await Nc(s);let i=await G(s),n=await ks(s),o=await this.getTasksetDraft(n.id);if(o){let p=o.metadata.importedTasksetPackage;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.packageHash===i&&o.profileId===e.profileId)return o;throw new Error(`Taskset draft ${n.id} already exists. Import a package with a distinct Taskset id.`)}let d=me.parse({...n,profileId:e.profileId,modelScope:null,status:"draft",revision:1,publishedTasksetRef:null,metadata:{...n.metadata,importedTasksetPackage:{packageHash:i,importedAt:new Date().toISOString()}},updatedAt:new Date().toISOString()}),m=this.workspacePath(d.id),l=`${m}.import-${process.pid}-${Date.now()}`;await fp(ya.dirname(m),{recursive:!0});try{await Ep(s,l,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await sa(d,l),await si(l,m)}catch(p){throw await kc(l,{recursive:!0,force:!0}),p}let E=de.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:d.id,profileId:d.profileId,status:d.status,revision:d.revision,workspacePath:m,packageHash:await G(m),publishedTasksetRef:d.publishedTasksetRef,createdAt:d.createdAt,updatedAt:d.updatedAt});return await this.savePointer(E),this.draftFromStoredPayload(E)}async materializePublishedTasksetPackage(e){let t=await this.getTasksetDraftWorkspace(e.draftId);if(!t)throw new Error(`Taskset draft ${e.draftId} workspace was not found.`);if(e.taskset.metadata.sourcePackageHash!==void 0&&e.taskset.metadata.sourcePackageHash!==t.packageHash)throw new Error("Taskset draft files changed before publication. Refresh before publishing.");let r=`draft-${y({taskset:e.taskset,packageHash:t.packageHash})}`,s=await qd(e.taskset,t.workspacePath),i=F.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:t.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:r}}}),n=F.parse({...i,contentHash:se(i)}),o=await Ze(this.home,{taskset:n,generatedFiles:s.generatedFiles},r,{source:{directory:t.workspacePath,packageHash:t.packageHash},verify:c(m=>Ct(m,n),"verify")}),d=await this.getTasksetDraft(e.draftId);return d?.modelScope?.source?Ec({home:this.home,directory:o,taskset:n,preparation:d.modelScope.source}):{directory:o,taskset:n}}async finalizeTasksetDraftPublication(e){await this.ready;let t=me.parse(e.draft),r=F.parse(e.taskset),s=t.modelScope?.source?.authoringGraph==="bound"&&typeof r.metadata.importedPackageHash=="string"?await ye(this.home,r.metadata.importedPackageHash):null,i=this.writeQueue.then(()=>rt(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=de.parse(JSON.parse(n.payload));if(o.profileId!==t.profileId||r.profileId!==t.profileId)throw new Error("Taskset publication belongs to another Profile.");if(y(o.modelScope)!==y(t.modelScope))throw new Error("Taskset draft Model ownership cannot change.");if(o.status==="published"&&o.publishedTasksetRef){let p=o.publishedTasksetRef,u=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[p.id,p.revision,p.contentHash]);if(!u)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:me.parse({...t,status:o.status,revision:o.revision,publishedTasksetRef:p,updatedAt:o.updatedAt}),taskset:F.parse(JSON.parse(u.payload))}}if(o.revision!==t.revision||r.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let d=o.modelScope?.source,m=d?.authoringGraph==="bound"&&r.metadata.modelTasksetDerivation&&typeof r.metadata.modelTasksetDerivation=="object"?{...r.metadata.modelTasksetDerivation,schemaVersion:d.lineage.schemaVersion}:r.metadata.modelTasksetAuthoring;if(d&&(r.id!==d.tasksetId||r.revision!==d.tasksetRevision||y(m)!==y(d.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let l=me.parse({...t,status:"published",revision:t.revision+1,publishedTasksetRef:{id:r.id,revision:r.revision,contentHash:r.contentHash},updatedAt:new Date().toISOString()}),E=de.parse({...o,status:l.status,revision:l.revision,publishedTasksetRef:l.publishedTasksetRef,updatedAt:l.updatedAt});return Ir(this.database,r,()=>{if(s&&Cr(this.database,{package:s,taskset:r,generatedFiles:[]}),sc(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 = ?",[E.status,E.revision,JSON.stringify(E),E.updatedAt,t.id])}),{draft:l,taskset:r}}));return this.writeQueue=i.then(()=>{},()=>{}),i}async getTasksetDraft(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],r=>r);return t===null?null:this.draftFromStoredPayload(t)}async listTasksetDrafts(e){await this.ready,await this.writeQueue;let t=await this.all(e?"SELECT payload FROM taskset_drafts WHERE profile_id = ? ORDER BY updated_at DESC":"SELECT payload FROM taskset_drafts ORDER BY updated_at DESC",e?[e]:[]);return Promise.all(t.map(r=>this.draftFromStoredPayload(JSON.parse(r.payload))))}async getTasksetDraftWorkspace(e){let t=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[e],s=>s);if(t===null)return null;let r=await this.pointerFromStoredPayload(t);return{draftId:r.id,workspacePath:r.workspacePath,packageHash:await G(r.workspacePath)}}async deleteTasksetDraft(e){await this.ready;let t=this.writeQueue.then(()=>rt(this.home,async()=>{let r=this.workspacePath(e),s=`${r}.delete-${Tp()}`,i=!1;try{await si(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 si(s,r).catch(()=>{}),n}i&&await kc(s,{recursive:!0,force:!0})}));this.writeQueue=t.catch(()=>{}),await t}async tasksetDraftFiles(e,t,r){return await this.ready,rt(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=de.parse(JSON.parse(s.payload));if(r!==void 0){let o=await wc(i.workspacePath,r);return{draftRevision:i.revision,file:{...o,writable:o.writable&&i.status!=="published"}}}let n=await Rc(i.workspacePath);return{draftRevision:i.revision,files:n.map(o=>({...o,writable:o.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(e,t){let r=ss.parse(t);await this.ready;let s=this.writeQueue.then(()=>rt(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=de.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 yc(n.workspacePath,r,async()=>{let o=de.parse({...n,revision:n.revision+1,packageHash:await G(n.workspacePath),updatedAt:new Date().toISOString()}),d=await this.draftFromStoredPayload(o);this.database.exec("BEGIN IMMEDIATE");try{if(this.database.get("SELECT revision FROM taskset_drafts WHERE id = ? AND profile_id = ?",[r.draftId,e])?.revision!==n.revision)throw new Error("Taskset draft changed during file saving.");this.database.run("UPDATE taskset_drafts SET revision = ?, payload = ?, updated_at = ? WHERE id = ?",[o.revision,JSON.stringify(o),o.updatedAt,o.id]),this.database.exec("COMMIT")}catch(m){throw this.database.exec("ROLLBACK"),m}return d})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(e){let t=y(e).slice(0,24);return ya.join(this.home,"workspaces","tasksets",`taskset-${t}`)}async draftFromStoredPayload(e){let t=await this.pointerFromStoredPayload(e),r=await ks(t.workspacePath);return me.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=de.safeParse(e);if(t.success)return t.data;let r=me.parse(e);await this.saveTasksetDraft(r);let s=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[r.id],de.parse);if(!s)throw new Error(`Taskset draft ${r.id} migration failed.`);return s}async savePointer(e,t=!1){await(t?this.run.bind(this):this.upsertPayload.bind(this))(`INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at)
2143
2143
  VALUES (?, ?, ?, ?, ?, ?, ?)
2144
2144
  ON CONFLICT(id) DO UPDATE SET
2145
2145
  profile_id = excluded.profile_id,
2146
2146
  status = excluded.status,
2147
2147
  revision = excluded.revision,
2148
2148
  payload = excluded.payload,
2149
- updated_at = excluded.updated_at`,[e.id,e.profileId,e.status,e.revision,JSON.stringify(e),e.createdAt,e.updatedAt])}};async function bc(a){let e=await kp(a,{withFileTypes:!0});for(let t of e){let r=va.join(a,t.name);if(t.isSymbolicLink())throw new Error(`Taskset packages cannot contain symbolic links: ${r}`);if(t.isDirectory()){await bc(r);continue}if(!t.isFile())throw new Error(`Taskset packages may contain only files and directories: ${r}`)}}c(bc,"assertRegularPackageTree");var Sp=_.object({scope:_.string(),key:_.string(),ordinal:_.number().int().nonnegative()}).strict(),vp=`
2149
+ updated_at = excluded.updated_at`,[e.id,e.profileId,e.status,e.revision,JSON.stringify(e),e.createdAt,e.updatedAt])}};async function Nc(a){let e=await _p(a,{withFileTypes:!0});for(let t of e){let r=ya.join(a,t.name);if(t.isSymbolicLink())throw new Error(`Taskset packages cannot contain symbolic links: ${r}`);if(t.isDirectory()){await Nc(r);continue}if(!t.isFile())throw new Error(`Taskset packages may contain only files and directories: ${r}`)}}c(Nc,"assertRegularPackageTree");var gp=_.object({scope:_.string(),key:_.string(),ordinal:_.number().int().nonnegative()}).strict(),wp=`
2150
2150
  CREATE TABLE IF NOT EXISTS task_inventory_sources (source_key TEXT NOT NULL, profile_id TEXT NOT NULL, source_hash TEXT NOT NULL, metadata TEXT NOT NULL, PRIMARY KEY(profile_id, source_key));
2151
2151
  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));
2152
2152
  CREATE UNIQUE INDEX IF NOT EXISTS task_inventory_task_identity ON task_inventory_rows(profile_id, source_key, source_hash, task_id);
2153
2153
  CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id, source_key, source_hash, split, ordinal);
2154
- `,Dr=class extends Xr{static{c(this,"SqliteTaskInventoryStore")}async inventoryReady(){await this.ready,await this.writeQueue,this.database.exec(vp)}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 d=sa.parse(JSON.parse(n.payload));r=new Set(d.tasksetSyncs.map(o=>o.localTasksetId)),d.trainingSetup.tasksetRef&&r.add(d.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,d)=>Ae(n).localeCompare(Ae(d)))}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,Ae(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 d=Jn(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,Ae(e),e.hash,n.id,r+i,d.title,d.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,Ae(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,Ae(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=Kn.parse(t),i=R({profileId:e,...s,after:void 0,limit:void 0,sources:r.map(T=>[Ae(T),T.hash])}),n=s.after?Sp.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 d=r.filter(T=>(!s.tasksetId||T.id===s.tasksetId)&&(!s.draftId||T.draft&&T.id===s.draftId)),o=new Map(d.map(T=>[Ae(T),T]));if(!o.size)return fs.parse({items:[],nextCursor:null});let m=[...o.keys()],l=`%${s.query.replaceAll("\\","\\\\").replaceAll("%","\\%").replaceAll("_","\\_")}%`,f=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
2154
+ `,xr=class extends Pr{static{c(this,"SqliteTaskInventoryStore")}async inventoryReady(){await this.ready,await this.writeQueue,this.database.exec(wp)}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=aa.parse(JSON.parse(n.payload));r=new Set(o.tasksetSyncs.map(d=>d.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)=>Oe(n).localeCompare(Oe(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,Oe(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=Kn(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,Oe(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,Oe(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,Oe(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=Wn.parse(t),i=y({profileId:e,...s,after:void 0,limit:void 0,sources:r.map(T=>[Oe(T),T.hash])}),n=s.after?gp.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(T=>(!s.tasksetId||T.id===s.tasksetId)&&(!s.draftId||T.draft&&T.id===s.draftId)),d=new Map(o.map(T=>[Oe(T),T]));if(!d.size)return ms.parse({items:[],nextCursor:null});let m=[...d.keys()],l=`%${s.query.replaceAll("\\","\\\\").replaceAll("%","\\%").replaceAll("_","\\_")}%`,E=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
2155
2155
  WHERE r.profile_id=? AND r.source_key IN (${m.map(()=>"?").join(",")})
2156
2156
  AND (? IS NULL OR r.split=?) AND (? IS NULL OR r.task_id=?) AND (r.title LIKE ? ESCAPE '\\' OR r.description LIKE ? ESCAPE '\\' OR r.task_id LIKE ? ESCAPE '\\')
2157
- AND (? IS NULL OR r.source_key > ? OR (r.source_key = ? AND r.ordinal > ?)) ORDER BY r.source_key, r.ordinal LIMIT ?`,[e,...m,s.split??null,s.split??null,s.taskId??null,s.taskId??null,l,l,l,n?.key??null,n?.key??null,n?.key??null,n?.ordinal??-1,s.limit+1]),p=f.slice(0,s.limit),u=p.at(-1);return fs.parse({items:p.map(T=>{let h=o.get(T.source_key);if(h.hash!==T.source_hash)throw new Error("Task inventory changed. Reload the task list.");return $n.parse({...JSON.parse(T.metadata),tasksetId:h.id,tasksetRevision:h.revision,tasksetHash:h.hash,taskId:T.task_id,ordinal:T.ordinal,title:T.title,description:T.description,split:T.split,draftId:h.draft?h.id:null,modelId:h.modelId})}),nextCursor:f.length>s.limit&&u?Buffer.from(JSON.stringify({scope:i,key:u.source_key,ordinal:u.ordinal})).toString("base64url"):null})}async readTaskInventoryTask(e,t){await this.inventoryReady();let r=this.database.get("SELECT r.payload FROM task_inventory_rows r JOIN task_inventory_sources s ON s.profile_id=r.profile_id AND s.source_key=r.source_key AND s.source_hash=r.source_hash WHERE r.profile_id=? AND r.source_key=? AND r.source_hash=? AND r.task_id=?",[e.profileId,Ae(e),e.hash,t]);if(!r)throw new Error("Task not found in this collection.");return Fn.parse(JSON.parse(r.payload))}};function Ae(a){return`${a.draft?"draft":"release"}:${a.id}`}c(Ae,"sourceKey");var Hr=class extends Dr{static{c(this,"SqliteModelBatchReviewStore")}async findModelBatchReview(e,t){return this.modelBatchReviewTransaction(e,t)}async beginModelBatchReview(e,t,r){let s=await this.modelBatchReviewTransaction(e,t,r);if(!s)throw new Error("Model batch review was not created.");return s}async modelBatchReviewTransaction(e,t,r){let s=uo.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 d=!0,o=$s(n,e,()=>{if(!d)throw new Error("Model review transaction is closed.")});try{let m=n.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e]);if(!m)throw new v("model_not_found",404);let l=B.parse(JSON.parse(m.payload)),f=await ho(o,s);if(f||!r)return n.exec("COMMIT"),f;if(l.revision!==s.expectedModelRevision||!l.trainingSetup.tasksetRef||!C(l.trainingSetup.tasksetRef,s.tasksetRef))throw new v("model_revision_conflict",409);let p=n.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[s.tasksetRef.id,s.tasksetRef.revision,e]),u=p?F.parse(JSON.parse(p.payload)):null;if(!u||u.contentHash!==s.tasksetRef.contentHash||R(u.metadata.learning)!==R(Wa(r.taskset)))throw new v("model_review_package_mismatch",409);let T=await go(o,{scope:e,request:s,package:r,now:new Date().toISOString()});return n.exec("COMMIT"),T}catch(m){throw n.exec("ROLLBACK"),m}finally{d=!1}});return this.writeQueue=i.then(()=>{},()=>{}),i}};import{createHash as Ip}from"node:crypto";function Ia(a){let{request:e,resolved:t}=Ra(a.request,a.package),{starter:r,...s}=t,i=e.rewardBindingRef&&!C(e.rewardBindingRef,I(t.rewardBinding));if(i&&(!a.rewardSelection||!C(e.rewardBindingRef,I(a.rewardSelection.rewardBinding))))throw new Error("The selected starter Reward is unavailable for package preparation.");let n=zt({owner:{scopeId:e.profileId,modelId:e.modelId},source:s,...i?a.rewardSelection:{rewardBinding:s.rewardBinding,rewards:s.rewards,assets:s.assets}}),{taskset:d,taskDefinition:o,rewardBinding:m,rewards:l,assets:f}=n;if(a.source.profileId!==e.profileId||a.source.sourceHash!==r.contentHash)throw new Error("Starter source must belong to this Profile and pin the catalog package.");let p=n.execution!==void 0,u=d.environment.kind==="text"&&d.environment.entrypoint==="openpond.text.v1"&&!d.environment.stateful&&(!d.environmentRelease&&!d.verifierSetRelease||n.executionResources!==void 0)&&!d.capabilities.length&&!d.tools.length;if(!["sft","grpo"].includes(e.method)||o.harness||!u&&!p||d.tasks.some(E=>E.artifactRefs.length)||d.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 T=new Set(a.approvedTrainingTaskIds);if(T.size!==a.approvedTrainingTaskIds.length)throw new Error("Starter training approvals must be unique.");for(let E of T){let k=d.tasks.find(A=>A.id===E);if(!k||k.split!=="train")throw new Error(`Starter approval must reference a training task: ${E}.`);if(e.method==="sft"&&k.expectedOutput===null)throw new Error(`SFT starter approval requires a reviewed target: ${E}.`)}if(e.method==="grpo"&&d.tasks.some(E=>E.split==="train"&&!T.has(E.id)))throw new Error("GRPO starter preparation requires approval of every training task.");for(let E of a.fixtures){if(!d.tasks.some(k=>k.id===E.taskId))throw new Error(`Starter fixture references an unknown task: ${E.taskId}.`);p&&!E.infrastructureError&&cs.parse(E.metadata.toolScript)}let h=d.id,g=Yn({profileId:e.profileId,id:`${h}-draft`,name:r.name,now:a.createdAt}),w=[];for(let E of d.graders){if(E.kind!=="custom_verifier")continue;let k=f.find(S=>S.id===E.verifierRef.id);if(!k)throw new Error(`Starter verifier asset is missing: ${E.id}.`);let A=sr(E.verifierRef.contentHash);w.some(S=>S.path===A)||w.push({path:A,role:"verifier",content:G(k,E.verifierRef)})}let y=_e.parse({...g,objective:o.instructions,metrics:d.metrics??g.metrics,sourceRefs:[a.source],policy:d.policy,environment:{...g.environment,kind:p?"agent":"chat",entrypoint:d.environment.entrypoint,stateful:d.environment.stateful,toolNames:d.tools.map(E=>E.name),deterministicSeeds:d.environment.deterministicSeeds,defaultTimeoutMs:d.environment.defaultTimeoutMs,networkPolicy:d.environment.networkPolicy,metadata:{portableEnvironment:d.environment,portableTools:d.tools,...n.executionResources?{portableExecutionResources:n.executionResources}:n.execution?{portableExecutionResources:{environment:n.execution.environment,verifierSet:n.execution.verifierSet}}:{}}},output:{mode:"structured_json",jsonSchema:o.outputSchema,renderer:null},capabilities:{...g.capabilities,taskKind:p?"single_agent":"chat",requiresTools:p,requiresState:p,supportedSignals:e.method==="grpo"?["reward"]:["demonstration"],compatibleMethods:[e.method],rewardKinds:[...new Set(d.graders.map(E=>E.kind==="human"?"human":E.kind==="model_judge"?"model_judge":"deterministic"))],requiresPrivilegedGrading:!0,environmentPlacements:["local","remote"]},tasks:d.tasks.map(({artifactRefs:E,...k})=>({...k,schemaVersion:"openpond.taskData.v1",sourceRefs:[a.source.id],metadata:{exampleOrigin:"curated_starter",starter:I(r),portableTaskRecord:{...k,artifactRefs:[]}}})),graders:wt(m,l,f),graderFixtures:a.fixtures,learningSignals:{...g.learningSignals,rewards:e.method==="grpo"?d.tasks.filter(E=>T.has(E.id)).map(E=>({kind:"reward",id:`starter-reward-${E.id}`,taskId:E.id,task:o.instructions,rules:[{id:m.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],otherwisePoints:0,executable:!0,approved:!0,confidence:1,sourceRefs:[a.source.id],artifactRef:m.id,metadata:{starter:I(r),rewardBinding:I(m),approvalOrigin:"catalog_publication"}})):[],demonstrations:e.method==="sft"?d.tasks.filter(E=>T.has(E.id)).map(E=>({kind:"demonstration",id:`starter-target-${E.id}`,taskId:E.id,sourceRefs:[a.source.id],artifactRef:d.id,approved:!0,confidence:1,prompt:null,response:JSON.stringify(E.expectedOutput),metadata:{starter:I(r),approvalOrigin:"catalog_publication"}})):[]},metadata:{starter:I(r),starterTasksetRelease:I(d),taskDefinition:I(o),rewardBinding:I(m),rewardExecution:{binding:m,rewards:l},portableCapabilities:d.capabilities,derivedPortableMetadata:d.metadata,modelTasksetDerivation:d.metadata.modelTasksetDerivation}}),N=rr({draft:y,now:a.createdAt,tasksetId:h,sourcePackageHash:d.contentHash});return N.metrics=d.metrics,N.contentHash=de(N),{draft:y,taskset:N,generatedFiles:w,resources:n}}c(Ia,"prepareModelStarterTaskset");function Oa(a,e){let t=wa(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!==Cc(t))throw new Error("Starter creation operation was already used with different configuration.");return B.parse(JSON.parse(r.payload))}c(Oa,"findModelStarterCreation");async function Ac(a,e){let t=wa(e.request);if(t.learning)throw new Error("Create this Model in a hosted workspace to enable continual learning.");let r=Oa(a,t);if(r)return r;let{taskset:s,resources:i}=Ia(e),n=ya(e.package),d=await En({id:t.modelId,profileId:t.profileId,name:t.name,objective:n.taskDefinition.instructions,defaultBaseModel:t.startingModel,defaultDestinationId:null,trainingSetup:ga({package:i,setup:ze.parse({tasksetRef:I(s),rewardBindingRef:I(i.rewardBinding),baseModel:t.startingModel,method:t.method,managedRolloutPlacement:"remote"})})},0);a.exec("BEGIN IMMEDIATE");try{let o=Oa(a,t);if(o)return a.exec("COMMIT"),o;if(a.get("SELECT id FROM tasksets WHERE id = ?",[s.id])||a.get("SELECT id FROM model_projects WHERE id = ?",[t.modelId]))throw new Error("Starter creation requires a new Model and Taskset identity.");let m=[...i.executionResources??i.execution?[{kind:"asset",resource:Qe(i.executionResources??i.execution)}]:[],...n.execution?[{kind:"asset",resource:De(n.execution)}]:[],...n.assets.map(p=>({kind:"asset",resource:p})),...n.rewards.map(p=>({kind:"reward",resource:p})),{kind:"binding",resource:n.rewardBinding},{kind:"definition",resource:n.taskDefinition},{kind:"package",resource:n.taskset},...i.taskset.contentHash===n.taskset.contentHash?[]:[{kind:"definition",resource:i.taskDefinition},{kind:"package",resource:i.taskset},...i.execution?[{kind:"asset",resource:De(i.execution)}]:[]]];for(let{kind:p,resource:u}of m)$(a,t.profileId,p,u);let l=JSON.stringify(s);a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)",[s.id,s.profileId,s.status,l,s.createdAt,s.updatedAt]),a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.revision,s.contentHash,s.profileId,s.status,l,s.createdAt,s.updatedAt]);let f=ka(a,d);return a.run("INSERT INTO model_starter_creation_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[t.profileId,t.operationId,Cc(t),JSON.stringify(f)]),a.exec("COMMIT"),f}catch(o){throw a.exec("ROLLBACK"),o}}c(Ac,"commitModelStarterCreation");function Cc(a){return Ip("sha256").update(M(a)).digest("hex")}c(Cc,"requestHash");function Ur(a,e,t,r,s){let i=B.parse(t);a.exec("BEGIN IMMEDIATE");try{let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),d=n?B.parse(JSON.parse(n.payload)):null;d&&d.profileId!==i.profileId&&Ut("Model ownership changed during hosted synchronization.");let o;if(r)M(d)!==M(e)&&Ut("Model changed while its hosted configuration was loading. Refresh before applying it."),o=i;else{(!d||!e||e.id!==i.id||e.profileId!==i.profileId)&&Ut("Model is no longer available for hosted synchronization."),d.hosted?.teamId!==e.hosted?.teamId&&d.hosted?.teamId!==i.hosted?.teamId&&Ut("Model hosting team changed during synchronization.");let m=i.hosted,l=d.hosted,f=l;if(m){l?.apiOrigin&&l.apiOrigin!==m.apiOrigin&&Ut("Model hosting API changed during synchronization.");let p=l?.apiOrigin===m.apiOrigin&&l?.teamId===m.teamId&&l.projectId===m.projectId;p&&l.revision===m.revision&&l.etag!==m.etag&&Ut("Hosted Model receipts disagree about the same revision."),f={...p&&l.revision>m.revision?l:m,tasksets:p?Pc(l.tasksets,m.tasksets,T=>`${T.localTasksetId}:${T.releaseHash}`,T=>T.syncedAt):m.tasksets}}o=B.parse({...d,hosted:f,tasksetSyncs:Pc(d.tasksetSyncs,i.tasksetSyncs,p=>p.localTasksetId,p=>p.lastAttemptAt)})}return s?.(),a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2158
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[o.id,o.profileId,JSON.stringify(o),o.createdAt,o.updatedAt]),a.exec("COMMIT"),o}catch(n){throw a.exec("ROLLBACK"),n}}c(Ur,"commitModelProjectHosting");function Pc(a,e,t,r){let s=new Map(a.map(i=>[t(i),i]));for(let i of e){let n=s.get(t(i));(!n||Date.parse(r(i))>=Date.parse(r(n)))&&s.set(t(i),i)}return[...s.values()]}c(Pc,"mergeLatest");function Ut(a){throw new Xe(409,{schemaVersion:"openpond.modelProjectApiError.v2",code:"model_hosting_conflict",message:a,retryable:!1,requestId:null,details:{}})}c(Ut,"conflict");function oi(a,e){let{request:t,resolved:r}=Ra(e.request,e.package),s=t.rewardBindingRef;if(!s||C(s,I(r.rewardBinding)))return e;function i(m,l){let f=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[t.profileId,m,l.id,l.revision]);if(!f)throw new Error(`The selected starter ${m} is unavailable in this Profile.`);let p=ie[m].parse(JSON.parse(f.payload));if(fe(p),l.contentHash&&l.contentHash!==p.contentHash)throw new Error("The selected starter Reward differs from its immutable reference.");return p}c(i,"read");let n=i("binding",s),d=[...new Map(n.sources.map(m=>[M(m.reward),i("reward",m.reward)])).values()],o=new Map(r.assets.map(m=>[m.id,m]));for(let m of d){let l=m.implementation;for(let f of[...m.assets,..."verifierRef"in l?[l.verifierRef]:[],..."rubricRef"in l?[l.rubricRef]:[],..."inputContract"in l?[l.inputContract]:[]])o.has(f.id)||o.set(f.id,i("asset",{id:f.id,revision:1}))}return{...e,rewardSelection:{rewardBinding:n,rewards:d,assets:[...o.values()]}}}c(oi,"resolveModelStarterSelection");import Op from"node:path";function Ft(a){let e=a.environment.metadata.runtimeSourceTasksetId,t=e===void 0?a.id:e;if(typeof t!="string"||!t||t==="."||t===".."||Op.basename(t)!==t||t.includes("\\"))throw new Error(`Taskset ${a.id} has an invalid package directory identity.`);return t}c(Ft,"tasksetPackageDirectoryId");import bp from"node:path";import Lp from"node:path";async function xc(a){let{taskset:e}=a,{taskset:t,modelResources:r,learningResources:s}=a.content,i=new Set([...r?.assets??[],...s?.assets??[]].map(o=>o.id)),n=new Map,d=c((o,m=o.path)=>{if(i.has(o.id))return;let l=n.get(o.id);if(l&&(R(l.asset)!==R(o)||l.sourcePath!==m))throw new Error(`Conflicting local Taskset file reference: ${o.id}.`);n.set(o.id,{asset:o,sourcePath:m})},"add");for(let o of qe.parse(e.metadata.portableFileInventory??[]))d(o.asset,o.sourcePath);for(let o of t.tasks){let m=e.tasks.find(l=>l.id===o.id);for(let l of o.artifactRefs)d(l,m?.assets?.find(f=>f.id===l.id)?.artifactRef??l.path);for(let l of o.requiredOutputs??[])l.schemaRef&&d(l.schemaRef)}for(let o of t.graders){let m=e.graders.find(l=>l.id===o.id);"verifierRef"in o&&d(o.verifierRef,m?.kind==="custom_verifier"?m.module:o.verifierRef.path),"rubricRef"in o&&d(o.rubricRef)}return Ht({root:Lp.join(a.storeDir,"training","tasksets",Ft(e)),content:a.content,sources:[...n.values()]})}c(xc,"captureAuthoredModelTasksetPackage");async function di(a,e,t){let r=t.project.trainingSetup.tasksetRef;if(!r)return;let s=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[r.id,r.revision]);if(!s)return;let i=F.parse(JSON.parse(s.payload));if(i.profileId!==t.project.profileId||i.contentHash!==r.contentHash)return;let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),d=n?B.parse(JSON.parse(n.payload)):null;if(d&&(d.profileId!==t.project.profileId||d.revision!==t.expectedRevision))return;let o=d?.hosted?.tasksets.find(g=>g.localTasksetId===i.id&&g.localTasksetHash===i.contentHash),m=typeof i.metadata.importedPackageHash=="string"?i.metadata.importedPackageHash:o?.packageHash;if(!m){if(i.metadata.learning!==void 0||i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return;let g=t.project.trainingSetup,w=g.baseModel??t.project.defaultBaseModel,y=g.method??(i.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":null);if(!g.rewardBindingRef&&(y!=="grpo"||g.recipe||!w?.revision||!w.tokenizerRevision||!w.chatTemplateHash))return;if(de(i)!==r.contentHash)throw new Error("Selected Taskset differs from its immutable content hash.");let N=Fe({taskset:i,adapterId:Se(i)});return xc({storeDir:e,taskset:i,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:N.tasksetRelease,environment:N.environmentRelease,verifierSet:N.verifierSetRelease}})}let l=await ve(e,m);if(l.taskset.id!==(o?.releaseId??r.id)||l.taskset.revision!==(o?.releaseRevision??r.revision))throw new Error("Cached package differs from its selected Taskset revision.");let{files:f,contentHash:p,...u}=l,T=wc(l,typeof i.metadata.importedPackageHash=="string"),h=await Ht({root:bp.join(e,"training","tasksets",Ft(i)),content:u,sources:f.filter(g=>!T.has(g.asset.id)).map(g=>({asset:g.asset,sourcePath:i.tasks.flatMap(w=>w.assets??[]).find(w=>w.id===g.asset.id)?.artifactRef??g.asset.path})),fileOrder:f.map(g=>g.asset.id)});if(h.contentHash!==l.contentHash)throw new Error("Imported package bytes changed before the Reward edit.");return h}c(di,"loadModelTasksetPackage");var{package:ik,evaluationPackage:nk,...Ap}=Hn.shape,Fr=_.object({apiOrigin:_.string().url().refine(a=>new URL(a).origin===a),teamId:_.string().min(1),project:B,localTaskset:te,localEvaluation:te.optional(),evaluationPackageHash:_.string().regex(/^[a-f0-9]{64}$/).optional(),packageHash:_.string().regex(/^[a-f0-9]{64}$/),request:_.object(Ap).strict()}).strict().refine(a=>!!a.localEvaluation==!!a.evaluationPackageHash,"Evaluation bytes and local identity must be captured together.");function ci(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?Fr.parse(JSON.parse(t.payload)):null;if(r&&(r.apiOrigin!==e.apiOrigin||r.teamId!==e.teamId))throw new Error("Finish the pending package publication in its original API and workspace before changing hosting.");return r}c(ci,"pendingModelPackageOperation");function Mc(a,e){let t=Fr.parse(e);a.exec("BEGIN IMMEDIATE");try{let r=ci(a,{profileId:t.project.profileId,modelId:t.project.id,apiOrigin:t.apiOrigin,teamId:t.teamId});if(r)return a.exec("COMMIT"),r;let s=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),i=s?B.parse(JSON.parse(s.payload)):null;if(M(i)!==M(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 d=Fr.parse(JSON.parse(n.payload));if(M({...d,project:t.project})!==M(t))throw new Error("Package operation identity was reused with different publication content.");if(n.state==="committed")return a.exec("COMMIT"),d;a.run("UPDATE model_project_package_operations SET state = 'pending', payload = ? WHERE operation_id = ? AND state = 'rejected'",[JSON.stringify(t),t.request.operationId])}else a.run("INSERT INTO model_project_package_operations (operation_id, profile_id, model_id, api_origin, team_id, state, payload, created_at) VALUES (?, ?, ?, ?, ?, 'pending', ?, ?)",[t.request.operationId,t.project.profileId,t.project.id,t.apiOrigin,t.teamId,JSON.stringify(t),new Date().toISOString()]);return a.exec("COMMIT"),t}catch(r){throw a.exec("ROLLBACK"),r}}c(Mc,"prepareModelPackageOperation");function Xc(a,e,t){let r=Un.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=Fr.parse(JSON.parse(s.payload));if(s.receipt&&M(JSON.parse(s.receipt))!==M(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||M(r.evaluation.taskset)!==M(i.request.modelConfiguration?.trainingSetup.evaluationTasksetRef)))throw new Error("Evaluation package receipt differs from its local intent.");let n=i.project,d=r.project;if(i.request.selection==="select"&&!d)throw new Error("Selected package receipt is missing Model configuration.");if(!d&&!n.hosted)throw new Error("Historical package receipt has no existing hosted Model.");let o=new Date().toISOString(),m=B.parse({...n,hosted:{schemaVersion:"openpond.hostedModelProjectLink.v1",apiOrigin:i.apiOrigin,teamId:i.teamId,projectId:d?.id??n.hosted.projectId,portableProjectId:n.id,revision:d?.revision??n.hosted.revision,etag:r.projectEtag,syncedSourceRevision:i.request.selection==="select"?n.revision:n.hosted.syncedSourceRevision,syncedAt:o,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:o},...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:o}]:[]]},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:o,syncedAt:o,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:o,syncedAt:o,lastError:null}]:[]]});return Ur(a,n,m,!1,()=>{a.run("UPDATE model_project_package_operations SET state = 'committed', receipt = ? WHERE operation_id = ?",[JSON.stringify(r),e])})}c(Xc,"completeModelPackageOperation");var jr=class extends Hr{static{c(this,"SqliteModelConfigurationStore")}async pendingModelPackagePush(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Package push store is closed.");return ci(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 Mc(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 Xc(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 Cr(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=Cr(this.db,e);if(r)return r;let s=await di(this.db,this.home,e),i=ei(this.db,e,!0,s);if(i?.imported)await Na({home:this.home,...i.imported});else if(i){let n=Cp.join(this.home,"training","tasksets",Ft(i.source));await rt(this.home,i,i.directoryId,{source:{directory:n,packageHash:await Z(n)},verify:c(d=>Mt(d,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 cc(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 ei(this.db,e,!1,await di(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 Oa(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=Oa(this.db,e.request);if(r)return r;let s=oi(this.db,e),i=Ia(s);return await rt(this.home,i,i.taskset.id),Ac(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 Ia(oi(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 nt(this.home,n.package):await Na({home:this.home,...n})}return Ur(this.db,e,t,r,()=>{for(let n of s)Mr(this.db,n)})});return this.writeQueue=i.then(()=>{},()=>{}),i}};function La(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(d=>({sessionId:d.session_id,title:d.title,updatedAt:d.updated_at,snippet:d.snippet?.trim()||null}))}}c(La,"trainingChatSearchResult");function Dc(a){let e=a.normalize("NFKC").match(/[\p{L}\p{N}_]+/gu)?.slice(0,24)??[];return e.length?e.map(t=>`"${t.replaceAll('"','""')}"*`).join(" AND "):null}c(Dc,"trainingChatFtsQuery");function li(a,e,t){let r=a.get(e)??[];r.push(t),a.set(e,r)}c(li,"appendTrainingChatSearchText");var ba="('openpond_managed')",Br=class extends jr{static{c(this,"SqliteTrainingStore")}async trainingChatSearchSignatures(e){await this.ready,await this.writeQueue;let t=await this.all("SELECT session_id, signature FROM training_chat_search_documents WHERE source = ?",[e]);return new Map(t.map(r=>[r.session_id,r.signature]))}async openPondTrainingChatSearchEvidence(e){await this.ready,await this.writeQueue;let t=[...new Set(e)].slice(0,500);if(!t.length)return[];let r=t.map(()=>"?").join(", "),[s,i,n]=await Promise.all([this.all(`SELECT payload FROM projection_session_shells WHERE id IN (${r})`,t),this.all(`SELECT session_id, payload FROM turns WHERE session_id IN (${r}) ORDER BY sort_index ASC`,t),this.all(`SELECT session_id, payload FROM events
2157
+ AND (? IS NULL OR r.source_key > ? OR (r.source_key = ? AND r.ordinal > ?)) ORDER BY r.source_key, r.ordinal LIMIT ?`,[e,...m,s.split??null,s.split??null,s.taskId??null,s.taskId??null,l,l,l,n?.key??null,n?.key??null,n?.key??null,n?.ordinal??-1,s.limit+1]),p=E.slice(0,s.limit),u=p.at(-1);return ms.parse({items:p.map(T=>{let h=d.get(T.source_key);if(h.hash!==T.source_hash)throw new Error("Task inventory changed. Reload the task list.");return Yn.parse({...JSON.parse(T.metadata),tasksetId:h.id,tasksetRevision:h.revision,tasksetHash:h.hash,taskId:T.task_id,ordinal:T.ordinal,title:T.title,description:T.description,split:T.split,draftId:h.draft?h.id:null,modelId:h.modelId})}),nextCursor:E.length>s.limit&&u?Buffer.from(JSON.stringify({scope:i,key:u.source_key,ordinal:u.ordinal})).toString("base64url"):null})}async readTaskInventoryTask(e,t){await this.inventoryReady();let r=this.database.get("SELECT r.payload FROM task_inventory_rows r JOIN task_inventory_sources s ON s.profile_id=r.profile_id AND s.source_key=r.source_key AND s.source_hash=r.source_hash WHERE r.profile_id=? AND r.source_key=? AND r.source_hash=? AND r.task_id=?",[e.profileId,Oe(e),e.hash,t]);if(!r)throw new Error("Task not found in this collection.");return Hn.parse(JSON.parse(r.payload))}};function Oe(a){return`${a.draft?"draft":"release"}:${a.id}`}c(Oe,"sourceKey");var Xr=class extends xr{static{c(this,"SqliteModelBatchReviewStore")}async findModelBatchReview(e,t){return this.modelBatchReviewTransaction(e,t)}async beginModelBatchReview(e,t,r){let s=await this.modelBatchReviewTransaction(e,t,r);if(!s)throw new Error("Model batch review was not created.");return s}async modelBatchReviewTransaction(e,t,r){let s=lo.parse(t);await this.ready;let i=this.writeQueue.then(async()=>{let n=this.db;if(!n)throw new Error("Model review store is closed.");n.exec("BEGIN IMMEDIATE");let o=!0,d=Ys(n,e,()=>{if(!o)throw new Error("Model review transaction is closed.")});try{let m=n.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e]);if(!m)throw new v("model_not_found",404);let l=B.parse(JSON.parse(m.payload)),E=await fo(d,s);if(E||!r)return n.exec("COMMIT"),E;if(l.revision!==s.expectedModelRevision||!l.trainingSetup.tasksetRef||!C(l.trainingSetup.tasksetRef,s.tasksetRef))throw new v("model_revision_conflict",409);let p=n.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[s.tasksetRef.id,s.tasksetRef.revision,e]),u=p?F.parse(JSON.parse(p.payload)):null;if(!u||u.contentHash!==s.tasksetRef.contentHash||y(u.metadata.learning)!==y(Ua(r.taskset)))throw new v("model_review_package_mismatch",409);let T=await _o(d,{scope:e,request:s,package:r,now:new Date().toISOString()});return n.exec("COMMIT"),T}catch(m){throw n.exec("ROLLBACK"),m}finally{o=!1}});return this.writeQueue=i.then(()=>{},()=>{}),i}};import{createHash as Rp}from"node:crypto";function ka(a){let{request:e,resolved:t}=_a(a.request,a.package),{starter:r,...s}=t,i=e.rewardBindingRef&&!C(e.rewardBindingRef,I(t.rewardBinding));if(i&&(!a.rewardSelection||!C(e.rewardBindingRef,I(a.rewardSelection.rewardBinding))))throw new Error("The selected starter Reward is unavailable for package preparation.");let n=Jt({owner:{scopeId:e.profileId,modelId:e.modelId},source:s,...i?a.rewardSelection:{rewardBinding:s.rewardBinding,rewards:s.rewards,assets:s.assets}}),{taskset:o,taskDefinition:d,rewardBinding:m,rewards:l,assets:E}=n;if(a.source.profileId!==e.profileId||a.source.sourceHash!==r.contentHash)throw new Error("Starter source must belong to this Profile and pin the catalog package.");let p=n.execution!==void 0,u=o.environment.kind==="text"&&o.environment.entrypoint==="openpond.text.v1"&&!o.environment.stateful&&(!o.environmentRelease&&!o.verifierSetRelease||n.executionResources!==void 0)&&!o.capabilities.length&&!o.tools.length;if(!["sft","grpo"].includes(e.method)||d.harness||!u&&!p||o.tasks.some(f=>f.artifactRefs.length)||o.graders.some(f=>f.kind==="model_judge"&&(!f.model||f.calibrationStatus!=="passed")))throw new Error("This starter requires an additional training or environment adapter before preparation.");let T=new Set(a.approvedTrainingTaskIds);if(T.size!==a.approvedTrainingTaskIds.length)throw new Error("Starter training approvals must be unique.");for(let f of T){let k=o.tasks.find(b=>b.id===f);if(!k||k.split!=="train")throw new Error(`Starter approval must reference a training task: ${f}.`);if(e.method==="sft"&&k.expectedOutput===null)throw new Error(`SFT starter approval requires a reviewed target: ${f}.`)}if(e.method==="grpo"&&o.tasks.some(f=>f.split==="train"&&!T.has(f.id)))throw new Error("GRPO starter preparation requires approval of every training task.");for(let f of a.fixtures){if(!o.tasks.some(k=>k.id===f.taskId))throw new Error(`Starter fixture references an unknown task: ${f.taskId}.`);p&&!f.infrastructureError&&os.parse(f.metadata.toolScript)}let h=o.id,g=qn({profileId:e.profileId,id:`${h}-draft`,name:r.name,now:a.createdAt}),w=[];for(let f of o.graders){if(f.kind!=="custom_verifier")continue;let k=E.find(S=>S.id===f.verifierRef.id);if(!k)throw new Error(`Starter verifier asset is missing: ${f.id}.`);let b=tr(f.verifierRef.contentHash);w.some(S=>S.path===b)||w.push({path:b,role:"verifier",content:V(k,f.verifierRef)})}let R=me.parse({...g,objective:d.instructions,metrics:o.metrics??g.metrics,sourceRefs:[a.source],policy:o.policy,environment:{...g.environment,kind:p?"agent":"chat",entrypoint:o.environment.entrypoint,stateful:o.environment.stateful,toolNames:o.tools.map(f=>f.name),deterministicSeeds:o.environment.deterministicSeeds,defaultTimeoutMs:o.environment.defaultTimeoutMs,networkPolicy:o.environment.networkPolicy,metadata:{portableEnvironment:o.environment,portableTools:o.tools,...n.executionResources?{portableExecutionResources:n.executionResources}:n.execution?{portableExecutionResources:{environment:n.execution.environment,verifierSet:n.execution.verifierSet}}:{}}},output:{mode:"structured_json",jsonSchema:d.outputSchema,renderer:null},capabilities:{...g.capabilities,taskKind:p?"single_agent":"chat",requiresTools:p,requiresState:p,supportedSignals:e.method==="grpo"?["reward"]:["demonstration"],compatibleMethods:[e.method],rewardKinds:[...new Set(o.graders.map(f=>f.kind==="human"?"human":f.kind==="model_judge"?"model_judge":"deterministic"))],requiresPrivilegedGrading:!0,environmentPlacements:["local","remote"]},tasks:o.tasks.map(({artifactRefs:f,...k})=>({...k,schemaVersion:"openpond.taskData.v1",sourceRefs:[a.source.id],metadata:{exampleOrigin:"curated_starter",starter:I(r),portableTaskRecord:{...k,artifactRefs:[]}}})),graders:_t(m,l,E),graderFixtures:a.fixtures,learningSignals:{...g.learningSignals,rewards:e.method==="grpo"?o.tasks.filter(f=>T.has(f.id)).map(f=>({kind:"reward",id:`starter-reward-${f.id}`,taskId:f.id,task:d.instructions,rules:[{id:m.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],otherwisePoints:0,executable:!0,approved:!0,confidence:1,sourceRefs:[a.source.id],artifactRef:m.id,metadata:{starter:I(r),rewardBinding:I(m),approvalOrigin:"catalog_publication"}})):[],demonstrations:e.method==="sft"?o.tasks.filter(f=>T.has(f.id)).map(f=>({kind:"demonstration",id:`starter-target-${f.id}`,taskId:f.id,sourceRefs:[a.source.id],artifactRef:o.id,approved:!0,confidence:1,prompt:null,response:JSON.stringify(f.expectedOutput),metadata:{starter:I(r),approvalOrigin:"catalog_publication"}})):[]},metadata:{starter:I(r),starterTasksetRelease:I(o),taskDefinition:I(d),rewardBinding:I(m),rewardExecution:{binding:m,rewards:l},portableCapabilities:o.capabilities,derivedPortableMetadata:o.metadata,modelTasksetDerivation:o.metadata.modelTasksetDerivation}}),N=er({draft:R,now:a.createdAt,tasksetId:h,sourcePackageHash:o.contentHash});return N.metrics=o.metrics,N.contentHash=se(N),{draft:R,taskset:N,generatedFiles:w,resources:n}}c(ka,"prepareModelStarterTaskset");function Na(a,e){let t=fa(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!==vc(t))throw new Error("Starter creation operation was already used with different configuration.");return B.parse(JSON.parse(r.payload))}c(Na,"findModelStarterCreation");async function Sc(a,e){let t=fa(e.request);if(t.learning)throw new Error("Create this Model in a hosted workspace to enable continual learning.");let r=Na(a,t);if(r)return r;let{taskset:s,resources:i}=ka(e),n=ha(e.package),o=await Tn({id:t.modelId,profileId:t.profileId,name:t.name,objective:n.taskDefinition.instructions,defaultBaseModel:t.startingModel,defaultDestinationId:null,trainingSetup:Ea({package:i,setup:$e.parse({tasksetRef:I(s),rewardBindingRef:I(i.rewardBinding),baseModel:t.startingModel,method:t.method,managedRolloutPlacement:"remote"})})},0);a.exec("BEGIN IMMEDIATE");try{let d=Na(a,t);if(d)return a.exec("COMMIT"),d;if(a.get("SELECT id FROM tasksets WHERE id = ?",[s.id])||a.get("SELECT id FROM model_projects WHERE id = ?",[t.modelId]))throw new Error("Starter creation requires a new Model and Taskset identity.");let m=[...i.executionResources??i.execution?[{kind:"asset",resource:Je(i.executionResources??i.execution)}]:[],...n.execution?[{kind:"asset",resource:xe(n.execution)}]:[],...n.assets.map(p=>({kind:"asset",resource:p})),...n.rewards.map(p=>({kind:"reward",resource:p})),{kind:"binding",resource:n.rewardBinding},{kind:"definition",resource:n.taskDefinition},{kind:"package",resource:n.taskset},...i.taskset.contentHash===n.taskset.contentHash?[]:[{kind:"definition",resource:i.taskDefinition},{kind:"package",resource:i.taskset},...i.execution?[{kind:"asset",resource:xe(i.execution)}]:[]]];for(let{kind:p,resource:u}of m)K(a,t.profileId,p,u);let l=JSON.stringify(s);a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)",[s.id,s.profileId,s.status,l,s.createdAt,s.updatedAt]),a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[s.id,s.revision,s.contentHash,s.profileId,s.status,l,s.createdAt,s.updatedAt]);let E=ga(a,o);return a.run("INSERT INTO model_starter_creation_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[t.profileId,t.operationId,vc(t),JSON.stringify(E)]),a.exec("COMMIT"),E}catch(d){throw a.exec("ROLLBACK"),d}}c(Sc,"commitModelStarterCreation");function vc(a){return Rp("sha256").update(X(a)).digest("hex")}c(vc,"requestHash");function Mr(a,e,t,r,s){let i=B.parse(t);a.exec("BEGIN IMMEDIATE");try{let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),o=n?B.parse(JSON.parse(n.payload)):null;o&&o.profileId!==i.profileId&&Mt("Model ownership changed during hosted synchronization.");let d;if(r)X(o)!==X(e)&&Mt("Model changed while its hosted configuration was loading. Refresh before applying it."),d=i;else{(!o||!e||e.id!==i.id||e.profileId!==i.profileId)&&Mt("Model is no longer available for hosted synchronization."),o.hosted?.teamId!==e.hosted?.teamId&&o.hosted?.teamId!==i.hosted?.teamId&&Mt("Model hosting team changed during synchronization.");let m=i.hosted,l=o.hosted,E=l;if(m){l?.apiOrigin&&l.apiOrigin!==m.apiOrigin&&Mt("Model hosting API changed during synchronization.");let p=l?.apiOrigin===m.apiOrigin&&l?.teamId===m.teamId&&l.projectId===m.projectId;p&&l.revision===m.revision&&l.etag!==m.etag&&Mt("Hosted Model receipts disagree about the same revision."),E={...p&&l.revision>m.revision?l:m,tasksets:p?Ic(l.tasksets,m.tasksets,T=>`${T.localTasksetId}:${T.releaseHash}`,T=>T.syncedAt):m.tasksets}}d=B.parse({...o,hosted:E,tasksetSyncs:Ic(o.tasksetSyncs,i.tasksetSyncs,p=>p.localTasksetId,p=>p.lastAttemptAt)})}return s?.(),a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2158
+ ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[d.id,d.profileId,JSON.stringify(d),d.createdAt,d.updatedAt]),a.exec("COMMIT"),d}catch(n){throw a.exec("ROLLBACK"),n}}c(Mr,"commitModelProjectHosting");function Ic(a,e,t,r){let s=new Map(a.map(i=>[t(i),i]));for(let i of e){let n=s.get(t(i));(!n||Date.parse(r(i))>=Date.parse(r(n)))&&s.set(t(i),i)}return[...s.values()]}c(Ic,"mergeLatest");function Mt(a){throw new Pe(409,{schemaVersion:"openpond.modelProjectApiError.v2",code:"model_hosting_conflict",message:a,retryable:!1,requestId:null,details:{}})}c(Mt,"conflict");function ii(a,e){let{request:t,resolved:r}=_a(e.request,e.package),s=t.rewardBindingRef;if(!s||C(s,I(r.rewardBinding)))return e;function i(m,l){let E=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[t.profileId,m,l.id,l.revision]);if(!E)throw new Error(`The selected starter ${m} is unavailable in this Profile.`);let p=ae[m].parse(JSON.parse(E.payload));if(pe(p),l.contentHash&&l.contentHash!==p.contentHash)throw new Error("The selected starter Reward differs from its immutable reference.");return p}c(i,"read");let n=i("binding",s),o=[...new Map(n.sources.map(m=>[X(m.reward),i("reward",m.reward)])).values()],d=new Map(r.assets.map(m=>[m.id,m]));for(let m of o){let l=m.implementation;for(let E of[...m.assets,..."verifierRef"in l?[l.verifierRef]:[],..."rubricRef"in l?[l.rubricRef]:[],..."inputContract"in l?[l.inputContract]:[]])d.has(E.id)||d.set(E.id,i("asset",{id:E.id,revision:1}))}return{...e,rewardSelection:{rewardBinding:n,rewards:o,assets:[...d.values()]}}}c(ii,"resolveModelStarterSelection");import yp from"node:path";function Dt(a){let e=a.environment.metadata.runtimeSourceTasksetId,t=e===void 0?a.id:e;if(typeof t!="string"||!t||t==="."||t===".."||yp.basename(t)!==t||t.includes("\\"))throw new Error(`Taskset ${a.id} has an invalid package directory identity.`);return t}c(Dt,"tasksetPackageDirectoryId");import Np from"node:path";import kp from"node:path";async function Oc(a){let{taskset:e}=a,{taskset:t,modelResources:r,learningResources:s}=a.content,i=new Set([...r?.assets??[],...s?.assets??[]].map(d=>d.id)),n=new Map,o=c((d,m=d.path)=>{if(i.has(d.id))return;let l=n.get(d.id);if(l&&(y(l.asset)!==y(d)||l.sourcePath!==m))throw new Error(`Conflicting local Taskset file reference: ${d.id}.`);n.set(d.id,{asset:d,sourcePath:m})},"add");for(let d of Ue.parse(e.metadata.portableFileInventory??[]))o(d.asset,d.sourcePath);for(let d of t.tasks){let m=e.tasks.find(l=>l.id===d.id);for(let l of d.artifactRefs)o(l,m?.assets?.find(E=>E.id===l.id)?.artifactRef??l.path);for(let l of d.requiredOutputs??[])l.schemaRef&&o(l.schemaRef)}for(let d of t.graders){let m=e.graders.find(l=>l.id===d.id);"verifierRef"in d&&o(d.verifierRef,m?.kind==="custom_verifier"?m.module:d.verifierRef.path),"rubricRef"in d&&o(d.rubricRef)}return Xt({root:kp.join(a.storeDir,"training","tasksets",Dt(e)),content:a.content,sources:[...n.values()]})}c(Oc,"captureAuthoredModelTasksetPackage");async function ni(a,e,t){let r=t.project.trainingSetup.tasksetRef;if(!r)return;let s=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[r.id,r.revision]);if(!s)return;let i=F.parse(JSON.parse(s.payload));if(i.profileId!==t.project.profileId||i.contentHash!==r.contentHash)return;let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),o=n?B.parse(JSON.parse(n.payload)):null;if(o&&(o.profileId!==t.project.profileId||o.revision!==t.expectedRevision))return;let d=o?.hosted?.tasksets.find(g=>g.localTasksetId===i.id&&g.localTasksetHash===i.contentHash),m=typeof i.metadata.importedPackageHash=="string"?i.metadata.importedPackageHash:d?.packageHash;if(!m){if(i.metadata.learning!==void 0||i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return;let g=t.project.trainingSetup,w=g.baseModel??t.project.defaultBaseModel,R=g.method??(i.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":null);if(!g.rewardBindingRef&&(R!=="grpo"||g.recipe||!w?.revision||!w.tokenizerRevision||!w.chatTemplateHash))return;if(se(i)!==r.contentHash)throw new Error("Selected Taskset differs from its immutable content hash.");let N=Me({taskset:i,adapterId:Re(i)});return Oc({storeDir:e,taskset:i,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:N.tasksetRelease,environment:N.environmentRelease,verifierSet:N.verifierSetRelease}})}let l=await ye(e,m);if(l.taskset.id!==(d?.releaseId??r.id)||l.taskset.revision!==(d?.releaseRevision??r.revision))throw new Error("Cached package differs from its selected Taskset revision.");let{files:E,contentHash:p,...u}=l,T=Tc(l,typeof i.metadata.importedPackageHash=="string"),h=await Xt({root:Np.join(e,"training","tasksets",Dt(i)),content:u,sources:E.filter(g=>!T.has(g.asset.id)).map(g=>({asset:g.asset,sourcePath:i.tasks.flatMap(w=>w.assets??[]).find(w=>w.id===g.asset.id)?.artifactRef??g.asset.path})),fileOrder:E.map(g=>g.asset.id)});if(h.contentHash!==l.contentHash)throw new Error("Imported package bytes changed before the Reward edit.");return h}c(ni,"loadModelTasksetPackage");var{package:Xy,evaluationPackage:My,...Sp}=Mn.shape,Dr=_.object({apiOrigin:_.string().url().refine(a=>new URL(a).origin===a),teamId:_.string().min(1),project:B,localTaskset:Z,localEvaluation:Z.optional(),evaluationPackageHash:_.string().regex(/^[a-f0-9]{64}$/).optional(),packageHash:_.string().regex(/^[a-f0-9]{64}$/),request:_.object(Sp).strict()}).strict().refine(a=>!!a.localEvaluation==!!a.evaluationPackageHash,"Evaluation bytes and local identity must be captured together.");function oi(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?Dr.parse(JSON.parse(t.payload)):null;if(r&&(r.apiOrigin!==e.apiOrigin||r.teamId!==e.teamId))throw new Error("Finish the pending package publication in its original API and workspace before changing hosting.");return r}c(oi,"pendingModelPackageOperation");function Lc(a,e){let t=Dr.parse(e);a.exec("BEGIN IMMEDIATE");try{let r=oi(a,{profileId:t.project.profileId,modelId:t.project.id,apiOrigin:t.apiOrigin,teamId:t.teamId});if(r)return a.exec("COMMIT"),r;let s=a.get("SELECT payload FROM model_projects WHERE id = ?",[t.project.id]),i=s?B.parse(JSON.parse(s.payload)):null;if(X(i)!==X(t.project))throw new Error("Model changed while its package was being prepared. Retry the push.");let n=a.get("SELECT payload, state FROM model_project_package_operations WHERE operation_id = ?",[t.request.operationId]);if(n){let o=Dr.parse(JSON.parse(n.payload));if(X({...o,project:t.project})!==X(t))throw new Error("Package operation identity was reused with different publication content.");if(n.state==="committed")return a.exec("COMMIT"),o;a.run("UPDATE model_project_package_operations SET state = 'pending', payload = ? WHERE operation_id = ? AND state = 'rejected'",[JSON.stringify(t),t.request.operationId])}else a.run("INSERT INTO model_project_package_operations (operation_id, profile_id, model_id, api_origin, team_id, state, payload, created_at) VALUES (?, ?, ?, ?, ?, 'pending', ?, ?)",[t.request.operationId,t.project.profileId,t.project.id,t.apiOrigin,t.teamId,JSON.stringify(t),new Date().toISOString()]);return a.exec("COMMIT"),t}catch(r){throw a.exec("ROLLBACK"),r}}c(Lc,"prepareModelPackageOperation");function Ac(a,e,t){let r=Dn.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=Dr.parse(JSON.parse(s.payload));if(s.receipt&&X(JSON.parse(s.receipt))!==X(r))throw new Error("Package push retry returned a different receipt.");if(r.operationId!==e||r.teamId!==i.teamId||r.packageHash!==i.packageHash||r.modelProjectId!==i.request.modelProjectId)throw new Error("Package push receipt differs from its local intent.");if(i.evaluationPackageHash&&(!r.evaluation||r.evaluation.packageHash!==i.evaluationPackageHash||X(r.evaluation.taskset)!==X(i.request.modelConfiguration?.trainingSetup.evaluationTasksetRef)))throw new Error("Evaluation package receipt differs from its local intent.");let n=i.project,o=r.project;if(i.request.selection==="select"&&!o)throw new Error("Selected package receipt is missing Model configuration.");if(!o&&!n.hosted)throw new Error("Historical package receipt has no existing hosted Model.");let d=new Date().toISOString(),m=B.parse({...n,hosted:{schemaVersion:"openpond.hostedModelProjectLink.v1",apiOrigin:i.apiOrigin,teamId:i.teamId,projectId:o?.id??n.hosted.projectId,portableProjectId:n.id,revision:o?.revision??n.hosted.revision,etag:r.projectEtag,syncedSourceRevision:i.request.selection==="select"?n.revision:n.hosted.syncedSourceRevision,syncedAt:d,tasksets:[...(n.hosted?.tasksets??[]).filter(l=>l.releaseHash!==r.taskset.contentHash&&l.releaseHash!==r.evaluation?.taskset.contentHash),{localTasksetId:i.localTaskset.id,localTasksetHash:i.localTaskset.contentHash,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,packageHash:r.packageHash,hostedTasksetId:r.hostedTasksetId,syncedAt:d},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,localTasksetHash:i.localEvaluation.contentHash,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,packageHash:r.evaluation.packageHash,hostedTasksetId:r.evaluation.hostedTasksetId,syncedAt:d}]:[]]},tasksetSyncs:[...n.tasksetSyncs.filter(l=>l.localTasksetId!==i.localTaskset.id&&l.localTasksetId!==i.localEvaluation?.id),{localTasksetId:i.localTaskset.id,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,state:"synced",hostedTasksetId:r.hostedTasksetId,lastAttemptAt:d,syncedAt:d,lastError:null},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,state:"synced",hostedTasksetId:r.evaluation.hostedTasksetId,lastAttemptAt:d,syncedAt:d,lastError:null}]:[]]});return Mr(a,n,m,!1,()=>{a.run("UPDATE model_project_package_operations SET state = 'committed', receipt = ? WHERE operation_id = ?",[JSON.stringify(r),e])})}c(Ac,"completeModelPackageOperation");var Hr=class extends Xr{static{c(this,"SqliteModelConfigurationStore")}async pendingModelPackagePush(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Package push store is closed.");return oi(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 Lc(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 Ac(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 Lr(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=Lr(this.db,e);if(r)return r;let s=await ni(this.db,this.home,e),i=Qs(this.db,e,!0,s);if(i?.imported)await wa({home:this.home,...i.imported});else if(i){let n=vp.join(this.home,"training","tasksets",Dt(i.source));await Ze(this.home,i,i.directoryId,{source:{directory:n,packageHash:await G(n)},verify:c(o=>Ct(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 rc(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 Qs(this.db,e,!1,await ni(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 Na(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=Na(this.db,e.request);if(r)return r;let s=ii(this.db,e),i=ka(s);return await Ze(this.home,i,i.taskset.id),Sc(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 ka(ii(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 at(this.home,n.package):await wa({home:this.home,...n})}return Mr(this.db,e,t,r,()=>{for(let n of s)Cr(this.db,n)})});return this.writeQueue=i.then(()=>{},()=>{}),i}};function Sa(a,e,t,r,s,i,n){return{schemaVersion:"openpond.trainingChatSearchResult.v1",query:a,offset:e,limit:t,total:r,hasMore:e+s.length<r,indexedChats:i,totalChats:n,indexing:i<n,entries:s.map(o=>({sessionId:o.session_id,title:o.title,updatedAt:o.updated_at,snippet:o.snippet?.trim()||null}))}}c(Sa,"trainingChatSearchResult");function bc(a){let e=a.normalize("NFKC").match(/[\p{L}\p{N}_]+/gu)?.slice(0,24)??[];return e.length?e.map(t=>`"${t.replaceAll('"','""')}"*`).join(" AND "):null}c(bc,"trainingChatFtsQuery");function di(a,e,t){let r=a.get(e)??[];r.push(t),a.set(e,r)}c(di,"appendTrainingChatSearchText");var va="('openpond_managed')",Ur=class extends Hr{static{c(this,"SqliteTrainingStore")}async trainingChatSearchSignatures(e){await this.ready,await this.writeQueue;let t=await this.all("SELECT session_id, signature FROM training_chat_search_documents WHERE source = ?",[e]);return new Map(t.map(r=>[r.session_id,r.signature]))}async openPondTrainingChatSearchEvidence(e){await this.ready,await this.writeQueue;let t=[...new Set(e)].slice(0,500);if(!t.length)return[];let r=t.map(()=>"?").join(", "),[s,i,n]=await Promise.all([this.all(`SELECT payload FROM projection_session_shells WHERE id IN (${r})`,t),this.all(`SELECT session_id, payload FROM turns WHERE session_id IN (${r}) ORDER BY sort_index ASC`,t),this.all(`SELECT session_id, payload FROM events
2159
2159
  WHERE name = 'assistant.delta' AND session_id IN (${r})
2160
- ORDER BY sequence ASC`,t)]),d=new Map;for(let o of i){let m=JSON.parse(o.payload);m.prompt.trim()&&li(d,o.session_id,m.prompt)}for(let o of n){let m=JSON.parse(o.payload);m.output?.trim()&&li(d,o.session_id,m.output)}return s.map(o=>{let m=pa(JSON.parse(o.payload));return{session:m,body:d.get(m.id)?.join(`
2161
- `)??""}})}async syncTrainingChatSearchDocuments(e,t){await this.ready;let r=this.writeQueue.then(async()=>{let s=await this.all("SELECT session_id, signature FROM training_chat_search_documents WHERE source = ?",[e]),i=new Map(s.map(d=>[d.session_id,d.signature])),n=new Set(t.map(d=>d.sessionId));await this.exec("BEGIN IMMEDIATE");try{for(let d of i.keys())n.has(d)||(await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[d]),await this.run("DELETE FROM training_chat_search_documents WHERE session_id = ?",[d]));for(let d of t)i.get(d.sessionId)!==d.signature&&(await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[d.sessionId]),await this.run(`INSERT INTO training_chat_search_documents (session_id, source, signature, title, updated_at, eligible, body_indexed)
2160
+ ORDER BY sequence ASC`,t)]),o=new Map;for(let d of i){let m=JSON.parse(d.payload);m.prompt.trim()&&di(o,d.session_id,m.prompt)}for(let d of n){let m=JSON.parse(d.payload);m.output?.trim()&&di(o,d.session_id,m.output)}return s.map(d=>{let m=da(JSON.parse(d.payload));return{session:m,body:o.get(m.id)?.join(`
2161
+ `)??""}})}async syncTrainingChatSearchDocuments(e,t){await this.ready;let r=this.writeQueue.then(async()=>{let s=await this.all("SELECT session_id, signature FROM training_chat_search_documents WHERE source = ?",[e]),i=new Map(s.map(o=>[o.session_id,o.signature])),n=new Set(t.map(o=>o.sessionId));await this.exec("BEGIN IMMEDIATE");try{for(let o of i.keys())n.has(o)||(await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[o]),await this.run("DELETE FROM training_chat_search_documents WHERE session_id = ?",[o]));for(let o of t)i.get(o.sessionId)!==o.signature&&(await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[o.sessionId]),await this.run(`INSERT INTO training_chat_search_documents (session_id, source, signature, title, updated_at, eligible, body_indexed)
2162
2162
  VALUES (?, ?, ?, ?, ?, ?, ?)
2163
2163
  ON CONFLICT(session_id) DO UPDATE SET
2164
2164
  source = excluded.source,
@@ -2166,7 +2166,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2166
2166
  title = excluded.title,
2167
2167
  updated_at = excluded.updated_at,
2168
2168
  eligible = excluded.eligible,
2169
- body_indexed = excluded.body_indexed`,[d.sessionId,d.source,d.signature,d.title,d.updatedAt,d.eligible?1:0,d.bodyIndexed?1:0]),await this.run("INSERT INTO training_chat_search_fts (session_id, title, body) VALUES (?, ?, ?)",[d.sessionId,d.title,d.body]));await this.exec("COMMIT")}catch(d){throw await this.exec("ROLLBACK").catch(()=>{}),d}});this.writeQueue=r.catch(()=>{}),await r}async upsertTrainingChatSearchDocument(e){await this.ready;let t=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[e.sessionId]),await this.run(`INSERT INTO training_chat_search_documents (session_id, source, signature, title, updated_at, eligible, body_indexed)
2169
+ body_indexed = excluded.body_indexed`,[o.sessionId,o.source,o.signature,o.title,o.updatedAt,o.eligible?1:0,o.bodyIndexed?1:0]),await this.run("INSERT INTO training_chat_search_fts (session_id, title, body) VALUES (?, ?, ?)",[o.sessionId,o.title,o.body]));await this.exec("COMMIT")}catch(o){throw await this.exec("ROLLBACK").catch(()=>{}),o}});this.writeQueue=r.catch(()=>{}),await r}async upsertTrainingChatSearchDocument(e){await this.ready;let t=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{await this.run("DELETE FROM training_chat_search_fts WHERE session_id = ?",[e.sessionId]),await this.run(`INSERT INTO training_chat_search_documents (session_id, source, signature, title, updated_at, eligible, body_indexed)
2170
2170
  VALUES (?, ?, ?, ?, ?, ?, ?)
2171
2171
  ON CONFLICT(session_id) DO UPDATE SET
2172
2172
  source = excluded.source,
@@ -2174,14 +2174,14 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2174
2174
  title = excluded.title,
2175
2175
  updated_at = excluded.updated_at,
2176
2176
  eligible = excluded.eligible,
2177
- body_indexed = excluded.body_indexed`,[e.sessionId,e.source,e.signature,e.title,e.updatedAt,e.eligible?1:0,e.bodyIndexed?1:0]),await this.run("INSERT INTO training_chat_search_fts (session_id, title, body) VALUES (?, ?, ?)",[e.sessionId,e.title,e.body]),await this.exec("COMMIT")}catch(r){throw await this.exec("ROLLBACK").catch(()=>{}),r}});this.writeQueue=t.catch(()=>{}),await t}async searchTrainingChats(e){await this.ready,await this.writeQueue;let t=e.query.trim(),r=Math.max(0,Math.trunc(e.offset)),s=Math.max(1,Math.min(100,Math.trunc(e.limit))),i=[...new Set(e.candidateIds)].slice(0,500);if(!i.length)return La(t,r,s,0,[],0,0);let n=i.map(()=>"?").join(", "),d=await this.get(`SELECT SUM(CASE WHEN body_indexed = 1 THEN 1 ELSE 0 END) AS indexed, COUNT(*) AS total
2177
+ body_indexed = excluded.body_indexed`,[e.sessionId,e.source,e.signature,e.title,e.updatedAt,e.eligible?1:0,e.bodyIndexed?1:0]),await this.run("INSERT INTO training_chat_search_fts (session_id, title, body) VALUES (?, ?, ?)",[e.sessionId,e.title,e.body]),await this.exec("COMMIT")}catch(r){throw await this.exec("ROLLBACK").catch(()=>{}),r}});this.writeQueue=t.catch(()=>{}),await t}async searchTrainingChats(e){await this.ready,await this.writeQueue;let t=e.query.trim(),r=Math.max(0,Math.trunc(e.offset)),s=Math.max(1,Math.min(100,Math.trunc(e.limit))),i=[...new Set(e.candidateIds)].slice(0,500);if(!i.length)return Sa(t,r,s,0,[],0,0);let n=i.map(()=>"?").join(", "),o=await this.get(`SELECT SUM(CASE WHEN body_indexed = 1 THEN 1 ELSE 0 END) AS indexed, COUNT(*) AS total
2178
2178
  FROM training_chat_search_documents
2179
- WHERE eligible = 1 AND session_id IN (${n})`,i),o=d?.indexed??0,m=d?.total??0;if(!t){let u=await this.get(`SELECT COUNT(*) AS count FROM training_chat_search_documents
2179
+ WHERE eligible = 1 AND session_id IN (${n})`,i),d=o?.indexed??0,m=o?.total??0;if(!t){let u=await this.get(`SELECT COUNT(*) AS count FROM training_chat_search_documents
2180
2180
  WHERE eligible = 1 AND session_id IN (${n})`,i),T=await this.all(`SELECT session_id, title, updated_at, NULL AS snippet
2181
2181
  FROM training_chat_search_documents
2182
2182
  WHERE eligible = 1 AND session_id IN (${n})
2183
2183
  ORDER BY updated_at DESC, session_id ASC
2184
- LIMIT ? OFFSET ?`,[...i,s,r]);return La(t,r,s,u?.count??0,T,o,m)}let l=Dc(t);if(!l)return La(t,r,s,0,[],o,m);let f=await this.get(`SELECT COUNT(*) AS count
2184
+ LIMIT ? OFFSET ?`,[...i,s,r]);return Sa(t,r,s,u?.count??0,T,d,m)}let l=bc(t);if(!l)return Sa(t,r,s,0,[],d,m);let E=await this.get(`SELECT COUNT(*) AS count
2185
2185
  FROM training_chat_search_fts
2186
2186
  JOIN training_chat_search_documents AS documents
2187
2187
  ON documents.session_id = training_chat_search_fts.session_id
@@ -2194,7 +2194,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2194
2194
  WHERE training_chat_search_fts MATCH ? AND documents.eligible = 1
2195
2195
  AND documents.session_id IN (${n})
2196
2196
  ORDER BY bm25(training_chat_search_fts, 0.0, 8.0, 1.0), documents.updated_at DESC
2197
- LIMIT ? OFFSET ?`,[l,...i,s,r]);return La(t,r,s,f?.count??0,p,o,m)}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=>Qt.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?Qt.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
2197
+ LIMIT ? OFFSET ?`,[l,...i,s,r]);return Sa(t,r,s,E?.count??0,p,d,m)}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=>zt.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?zt.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
2198
2198
  WHERE profile_id = ? AND session_id = ?
2199
2199
  AND source_kind = 'conversation'
2200
2200
  AND json_extract(payload, '$.sourceHash') = ?
@@ -2203,7 +2203,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2203
2203
  WHEN json_type(payload, '$.metadata.crossSystemOperations') IS NOT NULL THEN 0
2204
2204
  ELSE 1
2205
2205
  END, updated_at DESC
2206
- LIMIT 1`,[e.profileId,e.sessionId,e.sourceHash]);return t?Qt.parse(JSON.parse(t.payload)):null}async upsertTrainingSource(e){let t=Qt.parse(e);await this.ready;let r=ce(),s=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
2206
+ LIMIT 1`,[e.profileId,e.sessionId,e.sourceHash]);return t?zt.parse(JSON.parse(t.payload)):null}async upsertTrainingSource(e){let t=zt.parse(e);await this.ready;let r=ie(),s=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
2207
2207
  id, profile_id, source_kind, session_id, source_hash,
2208
2208
  repository_id, revision, payload, created_at, updated_at
2209
2209
  )
@@ -2216,26 +2216,26 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2216
2216
  repository_id = NULL,
2217
2217
  revision = NULL,
2218
2218
  payload = excluded.payload,
2219
- 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=nr.safeParse(i);if(n.success){r.push(n.data);continue}let d=Hc(i);if(d){this.logger?.warn("retired task creation snapshot ignored",{snapshotId:jc(i),specificationKind:d});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=nr.safeParse(r);if(s.success)return s.data;let i=Hc(r);if(i)return this.logger?.warn("retired task creation snapshot ignored",{snapshotId:jc(r),specificationKind:i}),null;throw s.error}async upsertTaskCreationSnapshot(e){let t=nr.parse(e),r=ys.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],ys.parse)}async getTaskDesignProposal(e){return this.getParsedPayload("SELECT payload FROM task_design_proposals WHERE creation_id = ?",[e],so.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]:[],Aa)}async listTasksetRevisions(e){return this.listParsedPayloads("SELECT payload FROM taskset_revisions WHERE json_extract(payload, '$.profileId') = ? ORDER BY taskset_id, revision DESC",[e],Aa)}async getTaskset(e){return this.getParsedPayload("SELECT payload FROM tasksets WHERE id = ?",[e],Aa)}async getTasksetRevision(e,t,r){let s=await this.getParsedPayload("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[e,t],Aa);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],Aa)}async upsertTaskset(e){let t=F.parse(e);await this.ready;let r=this.writeQueue.then(()=>br(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],Zt.parse)}async getTaskCandidate(e){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE id = ?",[e],Zt.parse)}async findTaskCandidateByFingerprint(e,t){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE profile_id = ? AND fingerprint = ?",[e,t],Zt.parse)}async upsertTaskCandidate(e){let t=Zt.parse(e);return await this.upsertPayload(`INSERT INTO task_candidates (id, profile_id, status, fingerprint, payload, created_at, updated_at)
2219
+ 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=rr.safeParse(i);if(n.success){r.push(n.data);continue}let o=Cc(i);if(o){this.logger?.warn("retired task creation snapshot ignored",{snapshotId:Xc(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=rr.safeParse(r);if(s.success)return s.data;let i=Cc(r);if(i)return this.logger?.warn("retired task creation snapshot ignored",{snapshotId:Xc(r),specificationKind:i}),null;throw s.error}async upsertTaskCreationSnapshot(e){let t=rr.parse(e),r=ws.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],ws.parse)}async getTaskDesignProposal(e){return this.getParsedPayload("SELECT payload FROM task_design_proposals WHERE creation_id = ?",[e],ao.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]:[],Ia)}async listTasksetRevisions(e){return this.listParsedPayloads("SELECT payload FROM taskset_revisions WHERE json_extract(payload, '$.profileId') = ? ORDER BY taskset_id, revision DESC",[e],Ia)}async getTaskset(e){return this.getParsedPayload("SELECT payload FROM tasksets WHERE id = ?",[e],Ia)}async getTasksetRevision(e,t,r){let s=await this.getParsedPayload("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[e,t],Ia);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],Ia)}async upsertTaskset(e){let t=F.parse(e);await this.ready;let r=this.writeQueue.then(()=>Ir(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],Gt.parse)}async getTaskCandidate(e){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE id = ?",[e],Gt.parse)}async findTaskCandidateByFingerprint(e,t){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE profile_id = ? AND fingerprint = ?",[e,t],Gt.parse)}async upsertTaskCandidate(e){let t=Gt.parse(e);return await this.upsertPayload(`INSERT INTO task_candidates (id, profile_id, status, fingerprint, payload, created_at, updated_at)
2220
2220
  VALUES (?, ?, ?, ?, ?, ?, ?)
2221
- 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=gs.parse(e);return await this.upsertPayload(`INSERT INTO task_attempts (id, taskset_id, split, payload, created_at) VALUES (?, ?, ?, ?, ?)
2222
- 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],gs.parse)}async saveTaskAttemptArtifact(e){let t=ir.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],ir.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM task_attempt_artifacts WHERE taskset_id = ? ORDER BY created_at",[e.tasksetId],ir.parse):[]}async saveGradeResult(e){let t=ws.parse(e);return await this.upsertPayload(`INSERT INTO grade_results (id, attempt_id, payload, created_at) VALUES (?, ?, ?, ?)
2223
- 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],ws.parse)}async saveGraderAuditReport(e){let t=Rs.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],Rs.parse)}async saveReadinessReport(e){let t=Ts.parse(e);return await this.upsertPayload(`INSERT INTO readiness_reports (taskset_id, payload, updated_at) VALUES (?, ?, ?)
2224
- 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],Pp)}async saveTaskMinerConfig(e,t){let r=hs.parse(t);return await this.upsertPayload(`INSERT INTO task_miner_configs (profile_id, payload, updated_at) VALUES (?, ?, ?)
2225
- ON CONFLICT(profile_id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[e,JSON.stringify(r),ce()]),r}async getTaskMinerConfig(e){return this.getParsedPayload("SELECT payload FROM task_miner_configs WHERE profile_id = ?",[e],hs.parse)}async saveTaskMinerRun(e){let t=ea.parse(e);return await this.upsertPayload(`INSERT INTO task_miner_runs (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)
2226
- 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],ea.parse)}async listTaskMinerRuns(e){return e?this.listParsedPayloads("SELECT payload FROM task_miner_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e],ea.parse):this.listParsedPayloads("SELECT payload FROM task_miner_runs ORDER BY updated_at DESC",[],ea.parse)}async saveModelProject(e){let t=sa.parse(e);return await this.upsertPayload(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2227
- 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],Uc)}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]:[],Uc)}async saveTrainingPlan(e){let t=or.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 (?, ?, ?, ?, ?)
2228
- 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 ${ba} ORDER BY created_at DESC`:`SELECT payload FROM training_plans WHERE destination_id IN ${ba} ORDER BY created_at DESC`,e?[e]:[],or.parse)}async getTrainingPlan(e){return this.getParsedPayload(`SELECT payload FROM training_plans WHERE id = ? AND destination_id IN ${ba}`,[e],or.parse)}async saveTrainingBundle(e){let t=ia.parse(e);return await this.upsertPayload(`INSERT INTO training_bundles (id, plan_id, content_hash, payload, created_at) VALUES (?, ?, ?, ?, ?)
2229
- 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],ia.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]:[],ia.parse)}async findTrainingBundleByPlanAndHash(e,t){return this.getParsedPayload("SELECT payload FROM training_bundles WHERE plan_id = ? AND content_hash = ?",[e,t],ia.parse)}async saveTrainingJob(e){let t=vt.parse(e);return await this.upsertPayload(`INSERT INTO training_jobs (id, plan_id, destination_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)
2230
- ON CONFLICT(id) DO UPDATE SET plan_id = excluded.plan_id, destination_id = excluded.destination_id, status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.planId,t.destinationId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}async saveTrainingApproval(e){let t=ks.parse(e);return await this.upsertPayload(`INSERT INTO training_approvals (id, plan_id, bundle_hash, payload, created_at) VALUES (?, ?, ?, ?, ?)
2231
- 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],ks.parse)}async getTrainingJob(e){return this.getParsedPayload(`SELECT payload FROM training_jobs WHERE id = ? AND destination_id IN ${ba}`,[e],vt.parse)}async listTrainingJobs(){return this.listParsedPayloads(`SELECT payload FROM training_jobs WHERE destination_id IN ${ba} ORDER BY updated_at DESC`,[],vt.parse)}async saveTrainingJobEvent(e){let t=Ns.parse(e);return await this.upsertPayload(`INSERT INTO training_job_events (id, job_id, sequence, payload, created_at) VALUES (?, ?, ?, ?, ?)
2232
- 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],Ns.parse)}async saveTrainingArtifact(e){let t=dr.parse(e);return await this.upsertPayload(`INSERT INTO training_artifacts (id, job_id, kind, payload, created_at) VALUES (?, ?, ?, ?, ?)
2233
- 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]:[],dr.parse)}async getTrainingArtifact(e){return this.getParsedPayload("SELECT payload FROM training_artifacts WHERE id = ?",[e],dr.parse)}async saveModelArtifactLineage(e){let t=cr.parse(e);return await this.upsertPayload(`INSERT INTO model_artifact_lineage (id, artifact_id, taskset_id, payload, created_at) VALUES (?, ?, ?, ?, ?)
2234
- 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:no.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=cr.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]:[],Fc)}async getModelArtifactLineage(e){return this.getParsedPayload("SELECT payload FROM model_artifact_lineage WHERE id = ?",[e],Fc)}};function Hc(a){return!me(a)||!me(a.request)||!me(a.request.buildSpecification)?null:a.request.buildSpecification.kind==="agent_benchmark"?"agent_benchmark":null}c(Hc,"retiredTaskCreationSpecificationKind");function Aa(a){return F.parse(Xp(Bc(a)))}c(Aa,"parseStoredTaskset");function Pp(a){return Ts.parse(Bc(a))}c(Pp,"parseStoredReadinessReport");function Uc(a){return sa.parse(xp(a))}c(Uc,"parseStoredModelProject");function xp(a){return!me(a)||typeof a.defaultDestinationId!="string"||a.defaultDestinationId==="openpond_managed"?a:{...a,defaultDestinationId:null}}c(xp,"normalizeStoredModelProjectDestination");function Fc(a){return cr.parse(Mp(a))}c(Fc,"parseStoredModelArtifactLineage");function Mp(a){if(!me(a)||!me(a.managedServing))return a;let e=a.managedServing.source;return e!=="openpond_fireworks"&&e!=="openpond_training"?a:{...a,managedServing:null}}c(Mp,"normalizeStoredManagedServingProjection");function Bc(a){if(!me(a))return a;let e=me(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}}c(Bc,"normalizeStoredReadinessDestinationClasses");function Xp(a){if(!me(a)||!me(a.authoringProvenance))return a;let e=a.authoringProvenance.buildSpecification;return!me(e)||e.kind!=="agent_benchmark"?a:{...a,authoringProvenance:{...a.authoringProvenance,buildSpecification:null}}}c(Xp,"normalizeStoredTasksetAuthoringProvenance");function jc(a){return me(a)&&typeof a.id=="string"?a.id:null}c(jc,"storedPayloadId");function me(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}c(me,"isRecord");var qr=class extends Br{static{c(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?et.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
2221
+ 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=_s.parse(e);return await this.upsertPayload(`INSERT INTO task_attempts (id, taskset_id, split, payload, created_at) VALUES (?, ?, ?, ?, ?)
2222
+ 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],_s.parse)}async saveTaskAttemptArtifact(e){let t=ar.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],ar.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM task_attempt_artifacts WHERE taskset_id = ? ORDER BY created_at",[e.tasksetId],ar.parse):[]}async saveGradeResult(e){let t=hs.parse(e);return await this.upsertPayload(`INSERT INTO grade_results (id, attempt_id, payload, created_at) VALUES (?, ?, ?, ?)
2223
+ 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],hs.parse)}async saveGraderAuditReport(e){let t=gs.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],gs.parse)}async saveReadinessReport(e){let t=us.parse(e);return await this.upsertPayload(`INSERT INTO readiness_reports (taskset_id, payload, updated_at) VALUES (?, ?, ?)
2224
+ 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],Ip)}async saveTaskMinerConfig(e,t){let r=fs.parse(t);return await this.upsertPayload(`INSERT INTO task_miner_configs (profile_id, payload, updated_at) VALUES (?, ?, ?)
2225
+ ON CONFLICT(profile_id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[e,JSON.stringify(r),ie()]),r}async getTaskMinerConfig(e){return this.getParsedPayload("SELECT payload FROM task_miner_configs WHERE profile_id = ?",[e],fs.parse)}async saveTaskMinerRun(e){let t=Qt.parse(e);return await this.upsertPayload(`INSERT INTO task_miner_runs (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)
2226
+ 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],Qt.parse)}async listTaskMinerRuns(e){return e?this.listParsedPayloads("SELECT payload FROM task_miner_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e],Qt.parse):this.listParsedPayloads("SELECT payload FROM task_miner_runs ORDER BY updated_at DESC",[],Qt.parse)}async saveModelProject(e){let t=aa.parse(e);return await this.upsertPayload(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2227
+ 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],Pc)}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]:[],Pc)}async saveTrainingPlan(e){let t=sr.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 (?, ?, ?, ?, ?)
2228
+ 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 ${va} ORDER BY created_at DESC`:`SELECT payload FROM training_plans WHERE destination_id IN ${va} ORDER BY created_at DESC`,e?[e]:[],sr.parse)}async getTrainingPlan(e){return this.getParsedPayload(`SELECT payload FROM training_plans WHERE id = ? AND destination_id IN ${va}`,[e],sr.parse)}async saveTrainingBundle(e){let t=ra.parse(e);return await this.upsertPayload(`INSERT INTO training_bundles (id, plan_id, content_hash, payload, created_at) VALUES (?, ?, ?, ?, ?)
2229
+ 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],ra.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]:[],ra.parse)}async findTrainingBundleByPlanAndHash(e,t){return this.getParsedPayload("SELECT payload FROM training_bundles WHERE plan_id = ? AND content_hash = ?",[e,t],ra.parse)}async saveTrainingJob(e){let t=kt.parse(e);return await this.upsertPayload(`INSERT INTO training_jobs (id, plan_id, destination_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)
2230
+ ON CONFLICT(id) DO UPDATE SET plan_id = excluded.plan_id, destination_id = excluded.destination_id, status = excluded.status, payload = excluded.payload, updated_at = excluded.updated_at`,[t.id,t.planId,t.destinationId,t.status,JSON.stringify(t),t.createdAt,t.updatedAt]),t}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 (?, ?, ?, ?, ?)
2231
+ 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 ${va}`,[e],kt.parse)}async listTrainingJobs(){return this.listParsedPayloads(`SELECT payload FROM training_jobs WHERE destination_id IN ${va} ORDER BY updated_at DESC`,[],kt.parse)}async saveTrainingJobEvent(e){let t=ys.parse(e);return await this.upsertPayload(`INSERT INTO training_job_events (id, job_id, sequence, payload, created_at) VALUES (?, ?, ?, ?, ?)
2232
+ 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],ys.parse)}async saveTrainingArtifact(e){let t=ir.parse(e);return await this.upsertPayload(`INSERT INTO training_artifacts (id, job_id, kind, payload, created_at) VALUES (?, ?, ?, ?, ?)
2233
+ 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]:[],ir.parse)}async getTrainingArtifact(e){return this.getParsedPayload("SELECT payload FROM training_artifacts WHERE id = ?",[e],ir.parse)}async saveModelArtifactLineage(e){let t=nr.parse(e);return await this.upsertPayload(`INSERT INTO model_artifact_lineage (id, artifact_id, taskset_id, payload, created_at) VALUES (?, ?, ?, ?, ?)
2234
+ 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:so.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=nr.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]:[],xc)}async getModelArtifactLineage(e){return this.getParsedPayload("SELECT payload FROM model_artifact_lineage WHERE id = ?",[e],xc)}};function Cc(a){return!ce(a)||!ce(a.request)||!ce(a.request.buildSpecification)?null:a.request.buildSpecification.kind==="agent_benchmark"?"agent_benchmark":null}c(Cc,"retiredTaskCreationSpecificationKind");function Ia(a){return F.parse(Ap(Mc(a)))}c(Ia,"parseStoredTaskset");function Ip(a){return us.parse(Mc(a))}c(Ip,"parseStoredReadinessReport");function Pc(a){return aa.parse(Op(a))}c(Pc,"parseStoredModelProject");function Op(a){return!ce(a)||typeof a.defaultDestinationId!="string"||a.defaultDestinationId==="openpond_managed"?a:{...a,defaultDestinationId:null}}c(Op,"normalizeStoredModelProjectDestination");function xc(a){return nr.parse(Lp(a))}c(xc,"parseStoredModelArtifactLineage");function Lp(a){if(!ce(a)||!ce(a.managedServing))return a;let e=a.managedServing.source;return e!=="openpond_fireworks"&&e!=="openpond_training"?a:{...a,managedServing:null}}c(Lp,"normalizeStoredManagedServingProjection");function Mc(a){if(!ce(a))return a;let e=ce(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}}c(Mc,"normalizeStoredReadinessDestinationClasses");function Ap(a){if(!ce(a)||!ce(a.authoringProvenance))return a;let e=a.authoringProvenance.buildSpecification;return!ce(e)||e.kind!=="agent_benchmark"?a:{...a,authoringProvenance:{...a.authoringProvenance,buildSpecification:null}}}c(Ap,"normalizeStoredTasksetAuthoringProvenance");function Xc(a){return ce(a)&&typeof a.id=="string"?a.id:null}c(Xc,"storedPayloadId");function ce(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}c(ce,"isRecord");var Fr=class extends Ur{static{c(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?ze.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
2235
2235
  FROM create_improve_runs
2236
2236
  ${t.length>0?`WHERE ${t.join(" AND ")}`:""}
2237
2237
  ORDER BY updated_at DESC
2238
- LIMIT ?`,r)).map(d=>et.parse(JSON.parse(d.payload)))}async upsertCreateImproveRun(e){await this.ready;let t=et.parse(e),r=this.writeQueue.then(async()=>{let s=await this.get("SELECT revision FROM create_improve_runs WHERE id = ?",[t.id]);if(s&&s.revision>t.revision)throw new Error(`Create/Improve run ${t.id} is already at revision ${s.revision}; refusing revision ${t.revision}.`);await this.assertNoCompetingCreateImproveRun(t),await this.run(`INSERT INTO create_improve_runs (
2238
+ LIMIT ?`,r)).map(o=>ze.parse(JSON.parse(o.payload)))}async upsertCreateImproveRun(e){await this.ready;let t=ze.parse(e),r=this.writeQueue.then(async()=>{let s=await this.get("SELECT revision FROM create_improve_runs WHERE id = ?",[t.id]);if(s&&s.revision>t.revision)throw new Error(`Create/Improve run ${t.id} is already at revision ${s.revision}; refusing revision ${t.revision}.`);await this.assertNoCompetingCreateImproveRun(t),await this.run(`INSERT INTO create_improve_runs (
2239
2239
  id, profile_id, conversation_id, origin_turn_id, target_kind, target_id,
2240
2240
  state, revision, payload, created_at, updated_at
2241
2241
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -2248,12 +2248,12 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2248
2248
  state = excluded.state,
2249
2249
  revision = excluded.revision,
2250
2250
  payload = excluded.payload,
2251
- updated_at = excluded.updated_at`,Dp(t))});return this.writeQueue=r.catch(()=>{}),await r,t}async mutateCreateImproveRun(e,t){await this.ready;let r=null,s=this.writeQueue.then(async()=>{let i=await this.get("SELECT payload FROM create_improve_run_actions WHERE action_id = ?",[e.actionId]);if(i){r={run:et.parse(JSON.parse(i.payload)),replayed:!0};return}let n=await this.get("SELECT revision, payload FROM create_improve_runs WHERE id = ?",[e.runId]);if(!n)throw new Error(`Create/Improve run not found: ${e.runId}`);let d=et.parse(JSON.parse(n.payload));if(d.revision!==e.expectedRevision)throw new Error(`Create/Improve run ${e.runId} changed from revision ${e.expectedRevision} to ${d.revision}. Refresh and try again.`);let o=et.parse(t(d));if(o.id!==d.id)throw new Error("Create/Improve mutation cannot change the run id.");if(o.revision!==d.revision+1)throw new Error("Create/Improve mutation must advance exactly one revision.");if(!o.appliedActionIds.includes(e.actionId))throw new Error("Create/Improve mutation must record its action id.");await this.assertNoCompetingCreateImproveRun(o),await this.exec("BEGIN IMMEDIATE");try{await this.run(`UPDATE create_improve_runs SET
2251
+ updated_at = excluded.updated_at`,bp(t))});return this.writeQueue=r.catch(()=>{}),await r,t}async mutateCreateImproveRun(e,t){await this.ready;let r=null,s=this.writeQueue.then(async()=>{let i=await this.get("SELECT payload FROM create_improve_run_actions WHERE action_id = ?",[e.actionId]);if(i){r={run:ze.parse(JSON.parse(i.payload)),replayed:!0};return}let n=await this.get("SELECT revision, payload FROM create_improve_runs WHERE id = ?",[e.runId]);if(!n)throw new Error(`Create/Improve run not found: ${e.runId}`);let o=ze.parse(JSON.parse(n.payload));if(o.revision!==e.expectedRevision)throw new Error(`Create/Improve run ${e.runId} changed from revision ${e.expectedRevision} to ${o.revision}. Refresh and try again.`);let d=ze.parse(t(o));if(d.id!==o.id)throw new Error("Create/Improve mutation cannot change the run id.");if(d.revision!==o.revision+1)throw new Error("Create/Improve mutation must advance exactly one revision.");if(!d.appliedActionIds.includes(e.actionId))throw new Error("Create/Improve mutation must record its action id.");await this.assertNoCompetingCreateImproveRun(d),await this.exec("BEGIN IMMEDIATE");try{await this.run(`UPDATE create_improve_runs SET
2252
2252
  profile_id = ?, conversation_id = ?, origin_turn_id = ?, target_kind = ?,
2253
2253
  target_id = ?, state = ?, revision = ?, payload = ?, updated_at = ?
2254
- WHERE id = ? AND revision = ?`,[o.scope.profileId,o.scope.conversationId,o.scope.originTurnId,o.target.kind,o.target.id,o.state,o.revision,JSON.stringify(o),o.updatedAt,o.id,d.revision]),await this.run(`INSERT INTO create_improve_run_actions (
2254
+ WHERE id = ? AND revision = ?`,[d.scope.profileId,d.scope.conversationId,d.scope.originTurnId,d.target.kind,d.target.id,d.state,d.revision,JSON.stringify(d),d.updatedAt,d.id,o.revision]),await this.run(`INSERT INTO create_improve_run_actions (
2255
2255
  action_id, run_id, expected_revision, resulting_revision, payload, created_at
2256
- ) VALUES (?, ?, ?, ?, ?, ?)`,[e.actionId,e.runId,e.expectedRevision,o.revision,JSON.stringify(o),o.updatedAt]),await this.exec("COMMIT")}catch(m){throw await this.exec("ROLLBACK").catch(()=>{}),m}r={run:o,replayed:!1}});if(this.writeQueue=s.catch(()=>{}),await s,!r)throw new Error(`Create/Improve mutation failed: ${e.actionId}`);return r}async assertNoCompetingCreateImproveRun(e){if(!e.target.id||Hp(e.state))return;let t=await this.get(`SELECT id
2256
+ ) VALUES (?, ?, ?, ?, ?, ?)`,[e.actionId,e.runId,e.expectedRevision,d.revision,JSON.stringify(d),d.updatedAt]),await this.exec("COMMIT")}catch(m){throw await this.exec("ROLLBACK").catch(()=>{}),m}r={run:d,replayed:!1}});if(this.writeQueue=s.catch(()=>{}),await s,!r)throw new Error(`Create/Improve mutation failed: ${e.actionId}`);return r}async assertNoCompetingCreateImproveRun(e){if(!e.target.id||Cp(e.state))return;let t=await this.get(`SELECT id
2257
2257
  FROM create_improve_runs
2258
2258
  WHERE profile_id = ?
2259
2259
  AND target_kind = ?
@@ -2269,12 +2269,12 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2269
2269
  'failed',
2270
2270
  'cancelled'
2271
2271
  )
2272
- LIMIT 1`,[e.scope.profileId,e.target.kind,e.target.id,e.id]);if(t)throw new Error(`Workproduct ${e.target.kind}:${e.target.id} already has active Create/Improve run ${t.id}.`)}};function Dp(a){return[a.id,a.scope.profileId,a.scope.conversationId,a.scope.originTurnId,a.target.kind,a.target.id,a.state,a.revision,JSON.stringify(a),a.createdAt,a.updatedAt]}c(Dp,"createImproveRunParams");function Hp(a){return a==="released"||a==="rejected"||a==="ready"||a==="ready_local"||a==="published_hosted"||a==="blocked"||a==="failed"||a==="cancelled"}c(Hp,"isTerminalCreateImproveRunState");var Wr=class extends qr{static{c(this,"SqliteSidebarFileBookmarkStore")}async listSidebarFileBookmarks(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT workspace_kind, workspace_id, workspace_name, file_path, status, sort_order,
2272
+ LIMIT 1`,[e.scope.profileId,e.target.kind,e.target.id,e.id]);if(t)throw new Error(`Workproduct ${e.target.kind}:${e.target.id} already has active Create/Improve run ${t.id}.`)}};function bp(a){return[a.id,a.scope.profileId,a.scope.conversationId,a.scope.originTurnId,a.target.kind,a.target.id,a.state,a.revision,JSON.stringify(a),a.createdAt,a.updatedAt]}c(bp,"createImproveRunParams");function Cp(a){return a==="released"||a==="rejected"||a==="ready"||a==="ready_local"||a==="published_hosted"||a==="blocked"||a==="failed"||a==="cancelled"}c(Cp,"isTerminalCreateImproveRunState");var jr=class extends Fr{static{c(this,"SqliteSidebarFileBookmarkStore")}async listSidebarFileBookmarks(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT workspace_kind, workspace_id, workspace_name, file_path, status, sort_order,
2273
2273
  source_session_id, created_at, updated_at
2274
2274
  FROM sidebar_file_bookmarks
2275
2275
  WHERE scope = ?
2276
- 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:_s({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
2277
- 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=ce(),o=(await this.get(`SELECT created_at FROM sidebar_file_bookmarks
2276
+ 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:Es({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
2277
+ 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=ie(),d=(await this.get(`SELECT created_at FROM sidebar_file_bookmarks
2278
2278
  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 (
2279
2279
  scope, workspace_kind, workspace_id, workspace_name, file_path, status,
2280
2280
  sort_order, source_session_id, created_at, updated_at
@@ -2285,7 +2285,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2285
2285
  status = excluded.status,
2286
2286
  sort_order = excluded.sort_order,
2287
2287
  source_session_id = COALESCE(excluded.source_session_id, sidebar_file_bookmarks.source_session_id),
2288
- updated_at = excluded.updated_at`,[e,t.workspaceKind,t.workspaceId,t.workspaceName,t.path,r,t.order??null,t.sourceSessionId??null,o,n]),s={id:_s(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:o,updatedAt:n}});return this.writeQueue=i.catch(()=>{}),await i,s}};var Yr=class extends Wr{static{c(this,"SqliteHarnessMemoryStore")}async listHarnessMemories(e,t={}){await this.ready,await this.writeQueue;let s=(await this.all(`SELECT revisions.payload
2288
+ updated_at = excluded.updated_at`,[e,t.workspaceKind,t.workspaceId,t.workspaceName,t.path,r,t.order??null,t.sourceSessionId??null,d,n]),s={id:Es(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:d,updatedAt:n}});return this.writeQueue=i.catch(()=>{}),await i,s}};var Br=class extends jr{static{c(this,"SqliteHarnessMemoryStore")}async listHarnessMemories(e,t={}){await this.ready,await this.writeQueue;let s=(await this.all(`SELECT revisions.payload
2289
2289
  FROM harness_memory_revisions revisions
2290
2290
  INNER JOIN (
2291
2291
  SELECT key, MAX(revision) AS revision
@@ -2298,9 +2298,9 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2298
2298
  WHERE workspace_id = ? AND key = ?
2299
2299
  ORDER BY revision DESC LIMIT 1`,[e,t]);return r?JSON.parse(r.payload):null}async writeHarnessMemory(e){let t=e.key.trim().toLowerCase();if(!/^[a-z0-9][a-z0-9-]{0,119}$/.test(t))throw new Error("Harness memory keys must be lowercase slugs up to 120 characters.");if(e.content!==null&&(!e.content.trim()||e.content.length>24e3))throw new Error("Harness memory content must contain 1-24,000 characters.");await this.ready;let r=null,s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let i=await this.get(`SELECT payload FROM harness_memory_revisions
2300
2300
  WHERE workspace_id = ? AND key = ?
2301
- ORDER BY revision DESC LIMIT 1`,[e.workspaceId,t]),n=i?JSON.parse(i.payload):null,d=n?.revision??null;if(d!==e.expectedRevision)throw new Error(`Harness memory ${t} changed concurrently (expected ${e.expectedRevision??"new"}, observed ${d??"new"}).`);if(e.content===null&&(!n||n.status==="deleted"))throw new Error(`Harness memory ${t} does not exist.`);let o=(n?.revision??0)+1,m={schemaVersion:"openpond.harnessMemoryEntry.v1",id:n?.id??`memory-${R({workspaceId:e.workspaceId,key:t}).slice(0,24)}`,workspaceId:e.workspaceId,key:t,content:e.content?.trim()??"",tags:[...new Set((e.tags??n?.tags??[]).map(l=>l.trim().toLowerCase()).filter(Boolean))].slice(0,20),revision:o,status:e.content===null?"deleted":"active",sourceRunId:e.sourceRunId,sourceProposal:e.sourceProposal,createdAt:n?.createdAt??e.createdAt,updatedAt:e.createdAt};r={...m,contentHash:R(m)},await this.run(`INSERT INTO harness_memory_revisions (
2301
+ ORDER BY revision DESC LIMIT 1`,[e.workspaceId,t]),n=i?JSON.parse(i.payload):null,o=n?.revision??null;if(o!==e.expectedRevision)throw new Error(`Harness memory ${t} changed concurrently (expected ${e.expectedRevision??"new"}, observed ${o??"new"}).`);if(e.content===null&&(!n||n.status==="deleted"))throw new Error(`Harness memory ${t} does not exist.`);let d=(n?.revision??0)+1,m={schemaVersion:"openpond.harnessMemoryEntry.v1",id:n?.id??`memory-${y({workspaceId:e.workspaceId,key:t}).slice(0,24)}`,workspaceId:e.workspaceId,key:t,content:e.content?.trim()??"",tags:[...new Set((e.tags??n?.tags??[]).map(l=>l.trim().toLowerCase()).filter(Boolean))].slice(0,20),revision:d,status:e.content===null?"deleted":"active",sourceRunId:e.sourceRunId,sourceProposal:e.sourceProposal,createdAt:n?.createdAt??e.createdAt,updatedAt:e.createdAt};r={...m,contentHash:y(m)},await this.run(`INSERT INTO harness_memory_revisions (
2302
2302
  workspace_id, key, revision, status, payload, created_at
2303
- ) VALUES (?, ?, ?, ?, ?, ?)`,[e.workspaceId,t,o,r.status,JSON.stringify(r),e.createdAt]),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});if(this.writeQueue=s.catch(()=>{}),await s,!r)throw new Error("Harness memory write did not produce a revision.");return r}};var Up={enabled:!1,activityEnabled:!1,activityBatchSize:10,cadence:"manual",maxEstimatedCostUsd:.1,nextRunAt:null,lastRunAt:null,lastResult:null,lastError:null,updatedAt:null},Kr=class extends Yr{static{c(this,"SqliteHarnessEvaluationReviewSettingsStore")}async getHarnessBackgroundReviewSettings(e){await this.ready,await this.writeQueue;let t=await this.get(`SELECT background_review_enabled, updated_at
2303
+ ) VALUES (?, ?, ?, ?, ?, ?)`,[e.workspaceId,t,d,r.status,JSON.stringify(r),e.createdAt]),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});if(this.writeQueue=s.catch(()=>{}),await s,!r)throw new Error("Harness memory write did not produce a revision.");return r}};var Pp={enabled:!1,activityEnabled:!1,activityBatchSize:10,cadence:"manual",maxEstimatedCostUsd:.1,nextRunAt:null,lastRunAt:null,lastResult:null,lastError:null,updatedAt:null},qr=class extends Br{static{c(this,"SqliteHarnessEvaluationReviewSettingsStore")}async getHarnessBackgroundReviewSettings(e){await this.ready,await this.writeQueue;let t=await this.get(`SELECT background_review_enabled, updated_at
2304
2304
  FROM harness_workspace_settings WHERE workspace_id = ?`,[e]);return t?{enabled:t.background_review_enabled===1,updatedAt:t.updated_at}:{enabled:!0,updatedAt:null}}async setHarnessBackgroundReviewSettings(e){await this.ready;let t=this.writeQueue.then(async()=>{if(!await this.get("SELECT id FROM harness_workspaces WHERE id = ?",[e.workspaceId]))throw new Error(`Harness workspace ${e.workspaceId} does not exist.`);await this.run(`INSERT INTO harness_workspace_settings (
2305
2305
  workspace_id, background_review_enabled, updated_at
2306
2306
  ) VALUES (?, ?, ?)
@@ -2309,7 +2309,7 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2309
2309
  updated_at = excluded.updated_at`,[e.workspaceId,e.enabled?1:0,e.updatedAt])});return this.writeQueue=t.catch(()=>{}),await t,{enabled:e.enabled,updatedAt:e.updatedAt}}async getHarnessEvaluationReviewSettings(e){await this.ready,await this.writeQueue;let t=await this.get(`SELECT enabled, activity_enabled, activity_batch_size, cadence,
2310
2310
  max_estimated_cost_usd, next_run_at, last_run_at,
2311
2311
  last_review_id, last_review_hash, last_classification, last_error, updated_at
2312
- FROM harness_evaluation_review_settings WHERE workspace_id = ?`,[e]);if(!t)return{...Up};let r=t.last_review_id&&t.last_review_hash&&t.last_classification?{id:t.last_review_id,contentHash:t.last_review_hash,classification:t.last_classification}:null;return{enabled:t.enabled===1,activityEnabled:t.activity_enabled===1,activityBatchSize:t.activity_batch_size,cadence:t.cadence,maxEstimatedCostUsd:t.max_estimated_cost_usd,nextRunAt:t.next_run_at,lastRunAt:t.last_run_at,lastResult:r,lastError:t.last_error,updatedAt:t.updated_at}}async setHarnessEvaluationReviewSettings(e){await this.ready;let t=this.writeQueue.then(async()=>{if(!await this.get("SELECT id FROM harness_workspaces WHERE id = ?",[e.workspaceId]))throw new Error(`Harness workspace ${e.workspaceId} does not exist.`);let s=e.settings.lastResult;await this.run(`INSERT INTO harness_evaluation_review_settings (
2312
+ FROM harness_evaluation_review_settings WHERE workspace_id = ?`,[e]);if(!t)return{...Pp};let r=t.last_review_id&&t.last_review_hash&&t.last_classification?{id:t.last_review_id,contentHash:t.last_review_hash,classification:t.last_classification}:null;return{enabled:t.enabled===1,activityEnabled:t.activity_enabled===1,activityBatchSize:t.activity_batch_size,cadence:t.cadence,maxEstimatedCostUsd:t.max_estimated_cost_usd,nextRunAt:t.next_run_at,lastRunAt:t.last_run_at,lastResult:r,lastError:t.last_error,updatedAt:t.updated_at}}async setHarnessEvaluationReviewSettings(e){await this.ready;let t=this.writeQueue.then(async()=>{if(!await this.get("SELECT id FROM harness_workspaces WHERE id = ?",[e.workspaceId]))throw new Error(`Harness workspace ${e.workspaceId} does not exist.`);let s=e.settings.lastResult;await this.run(`INSERT INTO harness_evaluation_review_settings (
2313
2313
  workspace_id, enabled, activity_enabled, activity_batch_size,
2314
2314
  cadence, max_estimated_cost_usd, next_run_at,
2315
2315
  last_run_at, last_review_id, last_review_hash, last_classification,
@@ -2327,11 +2327,11 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2327
2327
  last_review_hash = excluded.last_review_hash,
2328
2328
  last_classification = excluded.last_classification,
2329
2329
  last_error = excluded.last_error,
2330
- updated_at = excluded.updated_at`,[e.workspaceId,e.settings.enabled?1:0,e.settings.activityEnabled?1:0,e.settings.activityBatchSize,e.settings.cadence,e.settings.maxEstimatedCostUsd,e.settings.nextRunAt,e.settings.lastRunAt,s?.id??null,s?.contentHash??null,s?.classification??null,e.settings.lastError,e.settings.updatedAt??new Date().toISOString()])});return this.writeQueue=t.catch(()=>{}),await t,e.settings}};var $r=class extends Kr{static{c(this,"SqliteHarnessRefinementCandidateStore")}async listHarnessRefinementCandidates(e,t){return await this.ready,await this.writeQueue,(t?await this.all(`SELECT payload FROM harness_refinement_candidates
2330
+ updated_at = excluded.updated_at`,[e.workspaceId,e.settings.enabled?1:0,e.settings.activityEnabled?1:0,e.settings.activityBatchSize,e.settings.cadence,e.settings.maxEstimatedCostUsd,e.settings.nextRunAt,e.settings.lastRunAt,s?.id??null,s?.contentHash??null,s?.classification??null,e.settings.lastError,e.settings.updatedAt??new Date().toISOString()])});return this.writeQueue=t.catch(()=>{}),await t,e.settings}};var Wr=class extends qr{static{c(this,"SqliteHarnessRefinementCandidateStore")}async listHarnessRefinementCandidates(e,t){return await this.ready,await this.writeQueue,(t?await this.all(`SELECT payload FROM harness_refinement_candidates
2331
2331
  WHERE workspace_id = ? AND status = ?
2332
2332
  ORDER BY updated_at DESC, candidate_id ASC`,[e,t]):await this.all(`SELECT payload FROM harness_refinement_candidates
2333
- WHERE workspace_id = ? ORDER BY updated_at DESC, candidate_id ASC`,[e])).map(s=>Je.parse(JSON.parse(s.payload)))}async getHarnessRefinementCandidateByFingerprint(e,t){await this.ready,await this.writeQueue;let r=await this.get(`SELECT payload FROM harness_refinement_candidates
2334
- WHERE workspace_id = ? AND fingerprint = ?`,[e,t]);return r?Je.parse(JSON.parse(r.payload)):null}async saveHarnessRefinementCandidateTransition(e){let t=Je.parse(e.candidate),r=Ma.parse(e.receipt);if(r.candidateId!==t.id||r.afterCandidate.id!==t.id||r.afterCandidate.contentHash!==t.contentHash)throw new Error("Candidate lifecycle receipt is not bound to the candidate revision.");await this.ready;let s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let i=await this.requireCandidateWorkspace(e.workspaceId);if(i.ownerScope.kind!==t.ownerScope.kind||i.ownerScope.id!==t.ownerScope.id||t.workspaceRef!==i.id)throw new Error("Candidate is not bound to the target Harness workspace owner.");let n=await this.get("SELECT payload FROM harness_refinement_candidates WHERE candidate_id = ?",[t.id]),d=n?Je.parse(JSON.parse(n.payload)):null;if(d===null!=(r.beforeCandidate===null)||d&&(d.id!==r.beforeCandidate?.id||d.contentHash!==r.beforeCandidate.contentHash))throw new Error("Candidate lifecycle transition does not match the current revision.");await this.insertCandidateArtifact(e.workspaceId,"refinement_candidate",t),await this.insertCandidateArtifact(e.workspaceId,"refinement_candidate_lifecycle",r),await this.run(`INSERT INTO harness_refinement_candidates (
2333
+ WHERE workspace_id = ? ORDER BY updated_at DESC, candidate_id ASC`,[e])).map(s=>Ye.parse(JSON.parse(s.payload)))}async getHarnessRefinementCandidateByFingerprint(e,t){await this.ready,await this.writeQueue;let r=await this.get(`SELECT payload FROM harness_refinement_candidates
2334
+ WHERE workspace_id = ? AND fingerprint = ?`,[e,t]);return r?Ye.parse(JSON.parse(r.payload)):null}async saveHarnessRefinementCandidateTransition(e){let t=Ye.parse(e.candidate),r=ba.parse(e.receipt);if(r.candidateId!==t.id||r.afterCandidate.id!==t.id||r.afterCandidate.contentHash!==t.contentHash)throw new Error("Candidate lifecycle receipt is not bound to the candidate revision.");await this.ready;let s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let i=await this.requireCandidateWorkspace(e.workspaceId);if(i.ownerScope.kind!==t.ownerScope.kind||i.ownerScope.id!==t.ownerScope.id||t.workspaceRef!==i.id)throw new Error("Candidate is not bound to the target Harness workspace owner.");let n=await this.get("SELECT payload FROM harness_refinement_candidates WHERE candidate_id = ?",[t.id]),o=n?Ye.parse(JSON.parse(n.payload)):null;if(o===null!=(r.beforeCandidate===null)||o&&(o.id!==r.beforeCandidate?.id||o.contentHash!==r.beforeCandidate.contentHash))throw new Error("Candidate lifecycle transition does not match the current revision.");await this.insertCandidateArtifact(e.workspaceId,"refinement_candidate",t),await this.insertCandidateArtifact(e.workspaceId,"refinement_candidate_lifecycle",r),await this.run(`INSERT INTO harness_refinement_candidates (
2335
2335
  candidate_id, workspace_id, fingerprint, status, content_hash,
2336
2336
  payload, created_at, updated_at
2337
2337
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -2340,31 +2340,31 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2340
2340
  status = excluded.status,
2341
2341
  content_hash = excluded.content_hash,
2342
2342
  payload = excluded.payload,
2343
- updated_at = excluded.updated_at`,[t.id,e.workspaceId,t.fingerprint,t.status,t.contentHash,JSON.stringify(t),t.createdAt,t.updatedAt]),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=s.catch(()=>{}),await s,t}async saveHarnessCrossRunRefinementRequestIfAbsent(e){let t=Bt.parse(e.request);if(t.workspaceRef!==e.workspaceId)throw new Error("Cross-run refinement request is not bound to the target workspace.");await this.ready;let r=null,s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{await this.requireCandidateWorkspace(e.workspaceId);let i=await this.get(`SELECT payload FROM harness_cross_run_refinement_requests
2344
- WHERE deduplication_key = ?`,[t.deduplicationKey]);i?r={request:Bt.parse(JSON.parse(i.payload)),created:!1}:(await this.insertCandidateArtifact(e.workspaceId,"cross_run_refinement_request",t),await this.run(`INSERT INTO harness_cross_run_refinement_requests (
2343
+ updated_at = excluded.updated_at`,[t.id,e.workspaceId,t.fingerprint,t.status,t.contentHash,JSON.stringify(t),t.createdAt,t.updatedAt]),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=s.catch(()=>{}),await s,t}async saveHarnessCrossRunRefinementRequestIfAbsent(e){let t=Ft.parse(e.request);if(t.workspaceRef!==e.workspaceId)throw new Error("Cross-run refinement request is not bound to the target workspace.");await this.ready;let r=null,s=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{await this.requireCandidateWorkspace(e.workspaceId);let i=await this.get(`SELECT payload FROM harness_cross_run_refinement_requests
2344
+ WHERE deduplication_key = ?`,[t.deduplicationKey]);i?r={request:Ft.parse(JSON.parse(i.payload)),created:!1}:(await this.insertCandidateArtifact(e.workspaceId,"cross_run_refinement_request",t),await this.run(`INSERT INTO harness_cross_run_refinement_requests (
2345
2345
  deduplication_key, workspace_id, candidate_id,
2346
2346
  admitted_release_hash, content_hash, payload, created_at
2347
- ) 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 Te.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 (
2347
+ ) 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 (
2348
2348
  content_hash, id, workspace_id, kind, payload, created_at
2349
- ) VALUES (?, ?, ?, ?, ?, ?)`,[r.contentHash,r.id,e,t,s,r.createdAt])}};var pi={run_overlay:$e,evaluation_review:Ri,refinement_candidate:Je,refinement_candidate_lifecycle:Ma,cross_run_refinement_request:Bt,training_qualification:Mn,proposal:Ca,targeted_validation:Ni,merge_receipt:Si,observation:vi,trigger_decision:xa,route_decision:Ii,apply_receipt:Li,refiner_outcome:Oi};function ui(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]}c(ui,"harnessWorkspaceParams");function mi(a){let{createdAt:e,...t}=a;return t}c(mi,"immutableHarnessReleaseRecord");var qc=class extends $r{static{c(this,"SqliteHarnessWorkspaceStore")}async createHarnessWorkspace(e){let t=Te.parse(e);await this.ready;let r=this.writeQueue.then(()=>this.run(`INSERT INTO harness_workspaces (
2349
+ ) VALUES (?, ?, ?, ?, ?, ?)`,[r.contentHash,r.id,e,t,s,r.createdAt])}};var ci={run_overlay:We,evaluation_review:gi,refinement_candidate:Ye,refinement_candidate_lifecycle:ba,cross_run_refinement_request:Ft,training_qualification:bn,proposal:Oa,targeted_validation:yi,merge_receipt:ki,observation:Ni,trigger_decision:Aa,route_decision:Si,apply_receipt:Ii,refiner_outcome:vi};function li(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]}c(li,"harnessWorkspaceParams");function pi(a){let{createdAt:e,...t}=a;return t}c(pi,"immutableHarnessReleaseRecord");var Dc=class extends Wr{static{c(this,"SqliteHarnessWorkspaceStore")}async createHarnessWorkspace(e){let t=le.parse(e);await this.ready;let r=this.writeQueue.then(()=>this.run(`INSERT INTO harness_workspaces (
2350
2350
  id, owner_kind, owner_id, location, revision, source_revision,
2351
2351
  channel_revision, current_release_hash, payload, created_at, updated_at
2352
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,ui(t)));return this.writeQueue=r.catch(()=>{}),await r,t}async createHarnessWorkspaceWithRelease(e){let t=Te.parse(e.workspace),r=We.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 (
2352
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,li(t)));return this.writeQueue=r.catch(()=>{}),await r,t}async createHarnessWorkspaceWithRelease(e){let t=le.parse(e.workspace),r=Fe.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 (
2353
2353
  id, owner_kind, owner_id, location, revision, source_revision,
2354
2354
  channel_revision, current_release_hash, payload, created_at, updated_at
2355
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,ui(t)),await this.run(`INSERT INTO harness_release_records (
2355
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,li(t)),await this.run(`INSERT INTO harness_release_records (
2356
2356
  content_hash, id, workspace_id, source_revision, bundle_path, payload, created_at
2357
- ) VALUES (?, ?, ?, ?, ?, ?, ?)`,[r.harnessRelease.contentHash,r.harnessRelease.id,r.workspaceId,r.sourceRevision,r.bundlePath,JSON.stringify(r),r.createdAt]),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=s.catch(()=>{}),await s,{workspace:t,release:r}}async getHarnessWorkspace(e){return await this.ready,await this.writeQueue,this.readHarnessWorkspace(e)}async listHarnessWorkspaces(e){await this.ready,await this.writeQueue;let t=[],r=[];e?.ownerKind&&(t.push("owner_kind = ?"),r.push(e.ownerKind)),e?.ownerId&&(t.push("owner_id = ?"),r.push(e.ownerId));let s=t.length?` WHERE ${t.join(" AND ")}`:"";return(await this.all(`SELECT payload FROM harness_workspaces${s} ORDER BY updated_at DESC, id ASC`,r)).map(n=>Te.parse(JSON.parse(n.payload)))}async selectHarnessWorkspace(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{if(t=await this.requireHarnessWorkspace(e.workspaceId),t.ownerScope.kind!==e.ownerKind||t.ownerScope.id!==e.ownerId)throw new Error("A Harness workspace can only be selected by its owner scope.");await this.run(`INSERT INTO harness_workspace_selections (owner_kind, owner_id, workspace_id, updated_at)
2357
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`,[r.harnessRelease.contentHash,r.harnessRelease.id,r.workspaceId,r.sourceRevision,r.bundlePath,JSON.stringify(r),r.createdAt]),await this.exec("COMMIT")}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=s.catch(()=>{}),await s,{workspace:t,release:r}}async getHarnessWorkspace(e){return await this.ready,await this.writeQueue,this.readHarnessWorkspace(e)}async listHarnessWorkspaces(e){await this.ready,await this.writeQueue;let t=[],r=[];e?.ownerKind&&(t.push("owner_kind = ?"),r.push(e.ownerKind)),e?.ownerId&&(t.push("owner_id = ?"),r.push(e.ownerId));let s=t.length?` WHERE ${t.join(" AND ")}`:"";return(await this.all(`SELECT payload FROM harness_workspaces${s} ORDER BY updated_at DESC, id ASC`,r)).map(n=>le.parse(JSON.parse(n.payload)))}async selectHarnessWorkspace(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{if(t=await this.requireHarnessWorkspace(e.workspaceId),t.ownerScope.kind!==e.ownerKind||t.ownerScope.id!==e.ownerId)throw new Error("A Harness workspace can only be selected by its owner scope.");await this.run(`INSERT INTO harness_workspace_selections (owner_kind, owner_id, workspace_id, updated_at)
2358
2358
  VALUES (?, ?, ?, ?)
2359
2359
  ON CONFLICT(owner_kind, owner_id) DO UPDATE SET
2360
2360
  workspace_id = excluded.workspace_id,
2361
2361
  updated_at = excluded.updated_at`,[e.ownerKind,e.ownerId,e.workspaceId,e.updatedAt])});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Harness workspace selection did not produce a result.");return t}async getSelectedHarnessWorkspace(e){await this.ready,await this.writeQueue;let t=await this.get(`SELECT workspace_id FROM harness_workspace_selections
2362
- WHERE owner_kind = ? AND owner_id = ?`,[e.ownerKind,e.ownerId]);return t?this.readHarnessWorkspace(t.workspace_id):null}async updateHarnessWorkspaceSourceRevisionAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.requireHarnessWorkspace(e.workspaceId);if(s.revision!==e.expectedWorkspaceRevision||s.sourceRevision!==e.expectedSourceRevision)throw new Error("Harness workspace changed before the source revision could be recorded.");t=Te.parse({...s,sourceRevision:e.nextSourceRevision,revision:s.revision+1,dirty:!0,updatedAt:e.updatedAt}),await this.updateHarnessWorkspace(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 source revision update did not produce a result.");return t}async saveHarnessReleaseRecord(e){let t=We.parse(e);await this.ready;let r=this.writeQueue.then(async()=>{if(!await this.readHarnessWorkspace(t.workspaceId))throw new Error(`Harness workspace ${t.workspaceId} does not exist.`);await this.run(`INSERT OR IGNORE INTO harness_release_records (
2362
+ WHERE owner_kind = ? AND owner_id = ?`,[e.ownerKind,e.ownerId]);return t?this.readHarnessWorkspace(t.workspace_id):null}async updateHarnessWorkspaceSourceRevisionAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.requireHarnessWorkspace(e.workspaceId);if(s.revision!==e.expectedWorkspaceRevision||s.sourceRevision!==e.expectedSourceRevision)throw new Error("Harness workspace changed before the source revision could be recorded.");t=le.parse({...s,sourceRevision:e.nextSourceRevision,revision:s.revision+1,dirty:!0,updatedAt:e.updatedAt}),await this.updateHarnessWorkspace(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 source revision update did not produce a result.");return t}async saveHarnessReleaseRecord(e){let t=Fe.parse(e);await this.ready;let r=this.writeQueue.then(async()=>{if(!await this.readHarnessWorkspace(t.workspaceId))throw new Error(`Harness workspace ${t.workspaceId} does not exist.`);await this.run(`INSERT OR IGNORE INTO harness_release_records (
2363
2363
  content_hash, id, workspace_id, source_revision, bundle_path, payload, created_at
2364
- ) VALUES (?, ?, ?, ?, ?, ?, ?)`,[t.harnessRelease.contentHash,t.harnessRelease.id,t.workspaceId,t.sourceRevision,t.bundlePath,JSON.stringify(t),t.createdAt]);let s=await this.readHarnessReleaseRecord(t.harnessRelease.contentHash);if(!s||JSON.stringify(mi(s))!==JSON.stringify(mi(t)))throw new Error("An immutable Harness release hash already has different registry content.")});return this.writeQueue=r.catch(()=>{}),await r,t}async getHarnessReleaseRecord(e){return await this.ready,await this.writeQueue,this.readHarnessReleaseRecord(e)}async listHarnessReleaseRecords(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT payload FROM harness_release_records
2365
- WHERE workspace_id = ? ORDER BY created_at DESC, id ASC`,[e])).map(r=>We.parse(JSON.parse(r.payload)))}async saveHarnessImprovementArtifact(e,t,r){let s=pi[t].parse(r);await this.ready;let i=this.writeQueue.then(async()=>{if(!await this.readHarnessWorkspace(e))throw new Error(`Harness workspace ${e} does not exist.`);await this.insertHarnessImprovementArtifact(e,t,s)});return this.writeQueue=i.catch(()=>{}),await i,s}async listHarnessImprovementArtifacts(e,t,r=100){await this.ready,await this.writeQueue;let s=Math.max(1,Math.min(1e3,Math.trunc(r)));return(await this.all(`SELECT payload FROM harness_improvement_artifacts
2364
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`,[t.harnessRelease.contentHash,t.harnessRelease.id,t.workspaceId,t.sourceRevision,t.bundlePath,JSON.stringify(t),t.createdAt]);let s=await this.readHarnessReleaseRecord(t.harnessRelease.contentHash);if(!s||JSON.stringify(pi(s))!==JSON.stringify(pi(t)))throw new Error("An immutable Harness release hash already has different registry content.")});return this.writeQueue=r.catch(()=>{}),await r,t}async getHarnessReleaseRecord(e){return await this.ready,await this.writeQueue,this.readHarnessReleaseRecord(e)}async listHarnessReleaseRecords(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT payload FROM harness_release_records
2365
+ WHERE workspace_id = ? ORDER BY created_at DESC, id ASC`,[e])).map(r=>Fe.parse(JSON.parse(r.payload)))}async saveHarnessImprovementArtifact(e,t,r){let s=ci[t].parse(r);await this.ready;let i=this.writeQueue.then(async()=>{if(!await this.readHarnessWorkspace(e))throw new Error(`Harness workspace ${e} does not exist.`);await this.insertHarnessImprovementArtifact(e,t,s)});return this.writeQueue=i.catch(()=>{}),await i,s}async listHarnessImprovementArtifacts(e,t,r=100){await this.ready,await this.writeQueue;let s=Math.max(1,Math.min(1e3,Math.trunc(r)));return(await this.all(`SELECT payload FROM harness_improvement_artifacts
2366
2366
  WHERE workspace_id = ? AND kind = ?
2367
- ORDER BY created_at DESC, id ASC LIMIT ?`,[e,t,s])).map(n=>pi[t].parse(JSON.parse(n.payload)))}async listPendingHarnessRefinerTriggers(){return await this.ready,await this.writeQueue,(await this.all(`SELECT trigger.workspace_id, trigger.payload
2367
+ ORDER BY created_at DESC, id ASC LIMIT ?`,[e,t,s])).map(n=>ci[t].parse(JSON.parse(n.payload)))}async listPendingHarnessRefinerTriggers(){return await this.ready,await this.writeQueue,(await this.all(`SELECT trigger.workspace_id, trigger.payload
2368
2368
  FROM harness_improvement_artifacts AS trigger
2369
2369
  WHERE trigger.kind = 'trigger_decision'
2370
2370
  AND json_extract(trigger.payload, '$.decision') = 'queue_refiner'
@@ -2375,26 +2375,26 @@ CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id
2375
2375
  AND json_extract(outcome.payload, '$.trigger.id') = json_extract(trigger.payload, '$.id')
2376
2376
  AND json_extract(outcome.payload, '$.trigger.contentHash') = json_extract(trigger.payload, '$.contentHash')
2377
2377
  )
2378
- ORDER BY trigger.created_at ASC, trigger.id ASC`)).map(t=>({workspaceId:t.workspace_id,trigger:xa.parse(JSON.parse(t.payload))}))}async createHarnessRunOverlay(e){let t=$e.parse(e);if(t.revision!==0||t.status!=="active")throw new Error("A new Harness run overlay must be active at revision 0.");await this.ready;let r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.requireHarnessWorkspace(t.workspace.workspaceId);if(s.revision!==t.workspace.revision||s.sourceRevision!==t.workspace.sourceRevision||s.currentChannel.revision!==t.workspace.channelRevision)throw new Error("Harness run overlay is not bound to the exact workspace revision.");let i=await this.readHarnessReleaseRecord(t.baseHarnessRelease.contentHash);if(!i||i.harnessRelease.id!==t.baseHarnessRelease.id||i.workspaceId!==s.id)throw new Error("Harness run overlay base release is not present in the workspace registry.");let n=await this.readHarnessRunOverlay(t.runId);if(n){if(n.contentHash!==t.contentHash)throw new Error("Harness run already has a different overlay.");await this.exec("COMMIT");return}await this.run(`INSERT INTO harness_run_overlays (
2378
+ ORDER BY trigger.created_at ASC, trigger.id ASC`)).map(t=>({workspaceId:t.workspace_id,trigger:Aa.parse(JSON.parse(t.payload))}))}async createHarnessRunOverlay(e){let t=We.parse(e);if(t.revision!==0||t.status!=="active")throw new Error("A new Harness run overlay must be active at revision 0.");await this.ready;let r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.requireHarnessWorkspace(t.workspace.workspaceId);if(s.revision!==t.workspace.revision||s.sourceRevision!==t.workspace.sourceRevision||s.currentChannel.revision!==t.workspace.channelRevision)throw new Error("Harness run overlay is not bound to the exact workspace revision.");let i=await this.readHarnessReleaseRecord(t.baseHarnessRelease.contentHash);if(!i||i.harnessRelease.id!==t.baseHarnessRelease.id||i.workspaceId!==s.id)throw new Error("Harness run overlay base release is not present in the workspace registry.");let n=await this.readHarnessRunOverlay(t.runId);if(n){if(n.contentHash!==t.contentHash)throw new Error("Harness run already has a different overlay.");await this.exec("COMMIT");return}await this.run(`INSERT INTO harness_run_overlays (
2379
2379
  run_id, overlay_id, workspace_id, revision, status, payload,
2380
2380
  created_at, updated_at
2381
- ) 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(p=>p.id).filter((p,u,T)=>T.indexOf(p)!==u);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(p=>p.id)),d=e.edits.find(p=>n.has(p.id));if(d)throw new Error(`Harness overlay edit id already exists: ${d.id}.`);let{contentHash:o,...m}=s,l=Vr({...m,revision:s.revision+1,status:"frozen",edits:[...s.edits,...e.edits],updatedAt:e.updatedAt}),f=Ca.parse(e.buildProposal(l));if(f.overlay.id!==l.id||f.overlay.revision!==l.revision||f.overlay.contentHash!==l.contentHash)throw new Error("Refiner proposal is not bound to the atomically frozen overlay.");if(!Ti(f.baseHarnessRelease,l.baseHarnessRelease)){let p=f.metadata.rebasedFromHarnessRelease,u=await this.readHarnessWorkspace(s.workspace.workspaceId);if(!u||!Fp(p)||!Ti(p,l.baseHarnessRelease)||!u.currentChannel.release||!Ti(u.currentChannel.release,f.baseHarnessRelease)||f.expectedWorkspace.workspaceId!==u.id||f.expectedWorkspace.revision!==u.revision||f.expectedWorkspace.sourceRevision!==u.sourceRevision||f.expectedWorkspace.channelRevision!==u.currentChannel.revision)throw new Error("Refiner proposal base release differs from both the run overlay and the atomically verified current workspace.")}if(JSON.stringify(f.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
2381
+ ) 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(p=>p.id).filter((p,u,T)=>T.indexOf(p)!==u);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(p=>p.id)),o=e.edits.find(p=>n.has(p.id));if(o)throw new Error(`Harness overlay edit id already exists: ${o.id}.`);let{contentHash:d,...m}=s,l=$r({...m,revision:s.revision+1,status:"frozen",edits:[...s.edits,...e.edits],updatedAt:e.updatedAt}),E=Oa.parse(e.buildProposal(l));if(E.overlay.id!==l.id||E.overlay.revision!==l.revision||E.overlay.contentHash!==l.contentHash)throw new Error("Refiner proposal is not bound to the atomically frozen overlay.");if(!ui(E.baseHarnessRelease,l.baseHarnessRelease)){let p=E.metadata.rebasedFromHarnessRelease,u=await this.readHarnessWorkspace(s.workspace.workspaceId);if(!u||!xp(p)||!ui(p,l.baseHarnessRelease)||!u.currentChannel.release||!ui(u.currentChannel.release,E.baseHarnessRelease)||E.expectedWorkspace.workspaceId!==u.id||E.expectedWorkspace.revision!==u.revision||E.expectedWorkspace.sourceRevision!==u.sourceRevision||E.expectedWorkspace.channelRevision!==u.currentChannel.revision)throw new Error("Refiner proposal base release differs from both the run overlay and the atomically verified current workspace.")}if(JSON.stringify(E.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
2382
2382
  revision = ?, status = ?, payload = ?, updated_at = ?
2383
- 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",f),await this.exec("COMMIT"),t={overlay:l,proposal:f}}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=oo({...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=co({...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=lo({...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
2384
- WHERE workspace_id = ? ORDER BY created_at ASC, id ASC`,[e])).map(r=>Pa.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(u=>u.id).filter((u,T,h)=>h.indexOf(u)!==T);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(u=>u.id)),d=e.edits.find(u=>n.has(u.id));if(d)throw new Error(`Harness overlay edit id already exists: ${d.id}.`);let o=[...s.edits,...e.edits],m=s.status,l={...s.metadata};if(e.operation==="freeze"&&(m="frozen"),e.operation==="abandon"&&(m="abandoned"),e.operation==="restore"){if(e.restoreRevision===void 0)throw new Error("Harness overlay restore requires a source revision.");let u=await this.readHarnessRunOverlayRevision(s.id,e.restoreRevision);if(!u||u.runId!==s.runId||u.baseHarnessRelease.id!==s.baseHarnessRelease.id||u.baseHarnessRelease.contentHash!==s.baseHarnessRelease.contentHash)throw new Error("Harness overlay restore revision is unavailable or incompatible.");o=u.edits,m="active",l.restoredFromRevision=u.revision}let{contentHash:f,...p}=s;t=Vr({...p,revision:s.revision+1,status:m,edits:o,updatedAt:e.updatedAt,metadata:l}),await this.run(`UPDATE harness_run_overlays SET
2383
+ 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",E),await this.exec("COMMIT"),t={overlay:l,proposal:E}}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=io({...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=no({...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=oo({...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
2384
+ WHERE workspace_id = ? ORDER BY created_at ASC, id ASC`,[e])).map(r=>La.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(u=>u.id).filter((u,T,h)=>h.indexOf(u)!==T);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(u=>u.id)),o=e.edits.find(u=>n.has(u.id));if(o)throw new Error(`Harness overlay edit id already exists: ${o.id}.`);let d=[...s.edits,...e.edits],m=s.status,l={...s.metadata};if(e.operation==="freeze"&&(m="frozen"),e.operation==="abandon"&&(m="abandoned"),e.operation==="restore"){if(e.restoreRevision===void 0)throw new Error("Harness overlay restore requires a source revision.");let u=await this.readHarnessRunOverlayRevision(s.id,e.restoreRevision);if(!u||u.runId!==s.runId||u.baseHarnessRelease.id!==s.baseHarnessRelease.id||u.baseHarnessRelease.contentHash!==s.baseHarnessRelease.contentHash)throw new Error("Harness overlay restore revision is unavailable or incompatible.");d=u.edits,m="active",l.restoredFromRevision=u.revision}let{contentHash:E,...p}=s;t=$r({...p,revision:s.revision+1,status:m,edits:d,updatedAt:e.updatedAt,metadata:l}),await this.run(`UPDATE harness_run_overlays SET
2385
2385
  revision = ?, status = ?, payload = ?, updated_at = ?
2386
- 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?$e.parse(JSON.parse(t.payload)):null}async readHarnessRunOverlayRevision(e,t){let r=await this.get(`SELECT payload FROM harness_improvement_artifacts
2386
+ 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?We.parse(JSON.parse(t.payload)):null}async readHarnessRunOverlayRevision(e,t){let r=await this.get(`SELECT payload FROM harness_improvement_artifacts
2387
2387
  WHERE id = ? AND kind = 'run_overlay'
2388
2388
  AND CAST(json_extract(payload, '$.revision') AS INTEGER) = ?
2389
- ORDER BY created_at DESC LIMIT 1`,[e,t]);return r?$e.parse(JSON.parse(r.payload)):null}async insertHarnessImprovementArtifact(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}let n=await this.all(`SELECT payload FROM harness_improvement_artifacts
2390
- WHERE id = ? AND kind = ?`,[r.id,t]);if(!(t==="run_overlay"||t==="refinement_candidate")&&n.length>0)throw new Error("An immutable Harness improvement artifact id already has different content.");if(t==="run_overlay"){let o=r.revision;if(n.map(l=>$e.parse(JSON.parse(l.payload))).find(l=>l.revision===o))throw new Error("A Harness run overlay revision already has different content.")}await this.run(`INSERT INTO harness_improvement_artifacts (
2389
+ ORDER BY created_at DESC LIMIT 1`,[e,t]);return r?We.parse(JSON.parse(r.payload)):null}async insertHarnessImprovementArtifact(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}let n=await this.all(`SELECT payload FROM harness_improvement_artifacts
2390
+ WHERE id = ? AND kind = ?`,[r.id,t]);if(!(t==="run_overlay"||t==="refinement_candidate")&&n.length>0)throw new Error("An immutable Harness improvement artifact id already has different content.");if(t==="run_overlay"){let d=r.revision;if(n.map(l=>We.parse(JSON.parse(l.payload))).find(l=>l.revision===d))throw new Error("A Harness run overlay revision already has different content.")}await this.run(`INSERT INTO harness_improvement_artifacts (
2391
2391
  content_hash, id, workspace_id, kind, payload, created_at
2392
- ) VALUES (?, ?, ?, ?, ?, ?)`,[r.contentHash,r.id,e,t,s,r.createdAt])}async requireHarnessWorkspace(e){let t=await this.readHarnessWorkspace(e);if(!t)throw new Error(`Harness workspace ${e} does not exist.`);return t}async readHarnessWorkspace(e){let t=await this.get("SELECT payload FROM harness_workspaces WHERE id = ?",[e]);return t?Te.parse(JSON.parse(t.payload)):null}async updateHarnessWorkspace(e){let t=Te.parse(e);await this.run(`UPDATE harness_workspaces SET
2392
+ ) VALUES (?, ?, ?, ?, ?, ?)`,[r.contentHash,r.id,e,t,s,r.createdAt])}async requireHarnessWorkspace(e){let t=await this.readHarnessWorkspace(e);if(!t)throw new Error(`Harness workspace ${e} does not exist.`);return t}async readHarnessWorkspace(e){let t=await this.get("SELECT payload FROM harness_workspaces WHERE id = ?",[e]);return t?le.parse(JSON.parse(t.payload)):null}async updateHarnessWorkspace(e){let t=le.parse(e);await this.run(`UPDATE harness_workspaces SET
2393
2393
  owner_kind = ?, owner_id = ?, location = ?, revision = ?, source_revision = ?,
2394
2394
  channel_revision = ?, current_release_hash = ?, payload = ?, updated_at = ?
2395
- WHERE id = ?`,[t.ownerScope.kind,t.ownerScope.id,t.location,t.revision,t.sourceRevision,t.currentChannel.revision,t.currentChannel.release?.contentHash??null,JSON.stringify(t),t.updatedAt,t.id])}async readHarnessReleaseRecord(e){let t=await this.get("SELECT payload FROM harness_release_records WHERE content_hash = ?",[e]);return t?We.parse(JSON.parse(t.payload)):null}async readHarnessAdvanceReceipt(e){let t=await this.get("SELECT payload FROM harness_advance_receipts WHERE id = ?",[e]);return t?Pa.parse(JSON.parse(t.payload)):null}async insertHarnessAdvanceReceipt(e){let t=Pa.parse(e);await this.run(`INSERT INTO harness_advance_receipts (
2395
+ WHERE id = ?`,[t.ownerScope.kind,t.ownerScope.id,t.location,t.revision,t.sourceRevision,t.currentChannel.revision,t.currentChannel.release?.contentHash??null,JSON.stringify(t),t.updatedAt,t.id])}async readHarnessReleaseRecord(e){let t=await this.get("SELECT payload FROM harness_release_records WHERE content_hash = ?",[e]);return t?Fe.parse(JSON.parse(t.payload)):null}async readHarnessAdvanceReceipt(e){let t=await this.get("SELECT payload FROM harness_advance_receipts WHERE id = ?",[e]);return t?La.parse(JSON.parse(t.payload)):null}async insertHarnessAdvanceReceipt(e){let t=La.parse(e);await this.run(`INSERT INTO harness_advance_receipts (
2396
2396
  content_hash, id, workspace_id, decision, payload, created_at
2397
- ) VALUES (?, ?, ?, ?, ?, ?)`,[t.contentHash,t.id,t.workspaceId,t.decision,JSON.stringify(t),t.createdAt])}};function Fp(a){if(!a||typeof a!="object")return!1;let e=a;return typeof e.id=="string"&&typeof e.contentHash=="string"}c(Fp,"isReleaseRef");function Ti(a,e){return a.id===e.id&&a.contentHash===e.contentHash}c(Ti,"sameReleaseRef");var dt="harness.json",Wc=25e7;function jp(a,e){let t=`${he(e)}-${R(e).slice(0,16)}`,r=L.join(a,"library","harnesses","workspaces",t);return{root:r,source:L.join(r,"source")}}c(jp,"localHarnessWorkspacePaths");async function SN(a){return Jr({...a,initializeSource:c(e=>qp(e,a.name),"initializeSource")})}c(SN,"createLocalHarnessWorkspace");async function vN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded local Profile with a source path can be imported.");return Jr({...a,compilationWorkspaceId:a.repositoryId?Kc(a.repositoryId,a.name):a.id,initializeSource:c(e=>$c(e,a.name,a.profile,a.sourceRevision,a.repositoryId),"initializeSource")})}c(vN,"importProfileIntoLocalHarnessWorkspace");function Kc(a,e){return`profile-source-${R([a,e]).slice(0,24)}`}c(Kc,"profileCompilationWorkspaceId");async function IN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded Profile source can be compiled.");let e=L.join(a.storeDir,"library","harnesses","profile-previews");await b.mkdir(e,{recursive:!0});let t=L.join(e,fi());try{await $c(t,a.name,a.profile,a.sourceRevision,a.repositoryId);let r=a.repositoryId?Kc(a.repositoryId,a.name):a.workspaceId;return await Ei({workspaceId:r,sourceDir:t})}finally{await b.rm(t,{recursive:!0,force:!0})}}c(IN,"compileProfileHarnessSource");async function ON(a){let e=await Ei({workspaceId:a.id,sourceDir:a.sourceDir}),t=await a.store.getHarnessWorkspace(a.id);if(t){let r=t.currentChannel.release?await a.store.getHarnessReleaseRecord(t.currentChannel.release.contentHash):null;if(t.ownerScope.id!==a.ownerId||t.sourceRevision!==e.sourceRevision||r?.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Configured Harness source changed; use a new workspace ID for the new release.");return}await Jr({...a,initializeSource:c(async r=>{await b.mkdir(r,{recursive:!0}),await b.writeFile(L.join(r,dt),K(e.manifest));for(let s of e.sourceFiles){let i=L.join(r,s.path);await b.mkdir(L.dirname(i),{recursive:!0}),await b.writeFile(i,s.bytes)}},"initializeSource")})}c(ON,"importLocalHarnessWorkspaceSource");async function LN(a){let e=await a.store.getHarnessReleaseRecord(a.sourceRelease.contentHash);if(!e||e.harnessRelease.id!==a.sourceRelease.id)throw new Error("Harness workspace fork source release is unavailable.");return Jr({...a,initializeSource:c(async t=>{await b.cp(L.join(e.bundlePath,"source"),t,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1}),await _i(t,a.name)},"initializeSource")})}c(LN,"forkLocalHarnessWorkspaceFromRelease");async function Jr(a){let e=a.now??(()=>new Date().toISOString()),t=jp(a.storeDir,a.id),r=L.dirname(t.root);await b.mkdir(r,{recursive:!0});let s=L.join(r,`.${L.basename(t.root)}.creating-${fi()}`),i=L.join(s,"source");try{await a.initializeSource(i),await b.rename(s,t.root)}catch(n){throw await b.rm(s,{recursive:!0,force:!0}).catch(()=>{}),n}try{let n=await Ei({workspaceId:a.compilationWorkspaceId??a.id,sourceDir:t.source}),d=await Bp({storeDir:a.storeDir,workspaceId:a.id,compiled:n,createdAt:e()}),o=e(),m=Te.parse({schemaVersion:"openpond.harnessWorkspace.v1",id:a.id,ownerScope:{kind:"personal",id:a.ownerId},name:a.name,location:"local",sourceRevision:n.sourceRevision,revision:0,dirty:!1,currentChannel:{name:"personal",release:{id:n.harnessRelease.id,contentHash:n.harnessRelease.contentHash},revision:1},createdAt:o,updatedAt:o,metadata:{sourceLayout:"openpond.harnessSourceManifest.v1",...a.selectionEligible===!1?{selectionEligible:!1}:{}}});return await a.store.createHarnessWorkspaceWithRelease({workspace:m,release:d})}catch(n){throw await b.rm(t.root,{recursive:!0,force:!0}).catch(()=>{}),n}}c(Jr,"createLocalHarnessWorkspaceFromInitializer");async function Ei(a){let e=L.resolve(a.sourceDir),t=L.join(e,dt),r=It.parse(JSON.parse(await b.readFile(t,"utf8"))),s=new Set(r.files.map(E=>E.path)),i=(await At(e)).filter(E=>E!==dt),n=i.filter(E=>!s.has(E)),d=[...s].filter(E=>!i.includes(E));if(n.length||d.length)throw new Error(`Harness source manifest mismatch. Unlisted: ${n.join(", ")||"none"}; missing: ${d.join(", ")||"none"}.`);let o=[];for(let E of r.files){let k=await Tr(e,E.path),A=await b.readFile(k);if(A.byteLength>Wc)throw new Error(`Harness source file ${E.path} exceeds ${Wc} bytes.`);o.push({path:E.path,bytes:A,asset:{id:E.id,path:E.path,contentHash:ct(A),sizeBytes:A.byteLength,mediaType:E.mediaType,visibility:E.visibility}})}let m=o.find(({path:E})=>E==="workflows/catalog.json");if(m){let E=r.files.find(H=>H.path===m.path);if(E?.kind!=="workflow"||E.visibility!=="policy")throw new Error("Profile workflow catalog requires a policy-visible workflow declaration.");let k=o.find(({path:H})=>H==="workflows/actions.json"),A=r.files.find(H=>H.path==="workflows/actions.json");if(!k||A?.visibility!=="policy")throw new Error("Profile workflow catalog requires a released action inventory.");let S=bi.parse(JSON.parse(new TextDecoder().decode(k.bytes))).actions,P=new Set;for(let H of S){if(P.has(H.id))throw new Error(`Duplicate Profile workflow action ${H.id}.`);if(P.add(H.id),!Qr(H.inputSchema).valid)throw new Error(`Profile workflow action ${H.id} has an invalid input schema.`);if(!r.files.some(O=>O.path.startsWith(`agents/${H.agentId}/`)))throw new Error(`Profile workflow action ${H.id} lacks its Agent source.`)}let j=Gr({catalog:JSON.parse(new TextDecoder().decode(m.bytes)),sourcePaths:new Set(r.files.filter(H=>H.kind==="skill").map(H=>H.path)),actionIds:P});Jc(j)}let l=R({manifest:r,files:o.map(({path:E,asset:k})=>({path:E,contentHash:k.contentHash,sizeBytes:k.sizeBytes}))}),f=c(E=>o.filter(({path:k})=>r.files.find(A=>A.path===k)?.kind===E).map(({asset:k})=>k),"byKind"),p=f("dependency_lock")[0],u=f("program")[0],T=r.files.filter(E=>E.portability==="local_only").map(E=>E.id),h=r.files.filter(E=>E.visibility==="host_private").map(E=>E.id),g=[...T.map(E=>`Asset ${E} is local-only.`),...h.map(E=>`Asset ${E} is host-private.`)],w={id:`harness-source-${l.slice(0,24)}`,contentHash:l},y=yi({schemaVersion:"openpond.agentSnapshot.v2",id:`agent-snapshot-${R([l,r.toolDeclarations]).slice(0,24)}`,sourceRelease:w,instructions:f("instruction"),skills:f("skill"),agents:f("agent"),toolDeclarations:r.toolDeclarations,capabilityRequirements:r.capabilityRequirements,dependencyLock:p,portability:{portable:g.length===0,blockers:g,localOnlyAssetRefs:T,hostPrivateAssetRefs:h},metadata:{workspaceId:a.workspaceId,sourceRevision:l,sourceLayout:r.schemaVersion}}),N=ki({schemaVersion:"openpond.harnessRelease.v2",id:`harness-${R([y.contentHash,u.contentHash,r.lifecycle]).slice(0,24)}`,agentSnapshot:{id:y.id,contentHash:y.contentHash},program:u,tools:r.toolDeclarations,lifecycle:r.lifecycle,graderInterface:r.graderInterface,files:o.map(({asset:E})=>E),metadata:{runtimeProtocol:r.runtimeProtocol,sourceRevision:l,sourceLayout:r.schemaVersion,...r.metadata.importedFrom==="openpond.profile"?{profile:{id:r.metadata.profileId,sourceRevision:r.metadata.profileGitHead??l,...r.metadata.profileRepositoryId?{repositoryId:r.metadata.profileRepositoryId}:{}}}:{}}});return{manifest:r,sourceRevision:l,agentSnapshot:y,harnessRelease:N,sourceFiles:o}}c(Ei,"compileLocalHarnessSource");async function Bp(a){let e=L.join(a.storeDir,"library","harnesses","releases"),t=L.join(e,a.compiled.harnessRelease.contentHash);await b.mkdir(e,{recursive:!0});let r=L.join(e,`.${a.compiled.harnessRelease.contentHash}.materializing-${fi()}`);try{await b.mkdir(L.join(r,"source"),{recursive:!0});for(let s of a.compiled.sourceFiles){let i=L.join(r,"source",...s.path.split("/"));await b.mkdir(L.dirname(i),{recursive:!0}),await b.writeFile(i,s.bytes,{flag:"wx"})}await b.writeFile(L.join(r,"source",dt),K(a.compiled.manifest),{flag:"wx"}),await b.writeFile(L.join(r,"agent-snapshot.json"),K(a.compiled.agentSnapshot),{flag:"wx"}),await b.writeFile(L.join(r,"harness-release.json"),K(a.compiled.harnessRelease),{flag:"wx"});try{await b.rename(r,t)}catch(s){if(s.code!=="EEXIST"&&s.code!=="ENOTEMPTY")throw s;await Yc(t,a.compiled),await b.rm(r,{recursive:!0,force:!0})}await Yc(t,a.compiled)}catch(s){throw await b.rm(r,{recursive:!0,force:!0}).catch(()=>{}),s}return We.parse({schemaVersion:"openpond.localHarnessReleaseRecord.v1",workspaceId:a.workspaceId,sourceRevision:a.compiled.sourceRevision,agentSnapshot:a.compiled.agentSnapshot,harnessRelease:a.compiled.harnessRelease,bundlePath:t,createdAt:a.createdAt})}c(Bp,"materializeLocalHarnessRelease");async function qp(a,e){let t=It.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:[{id:"dependency-lock",kind:"dependency_lock",path:"dependency-lock.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"},{id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}],toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{}});await b.mkdir(a,{recursive:!0}),await b.writeFile(L.join(a,"dependency-lock.json"),K({dependencies:{}}),{flag:"wx"}),await b.writeFile(L.join(a,"program.json"),K({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),await b.writeFile(L.join(a,dt),K(t),{flag:"wx"}),await _i(a,e)}c(qp,"writeDefaultHarnessSource");async function $c(a,e,t,r,s){let i=L.resolve(t.sourcePath),n=[],d=new Set,o=c(S=>{let P=S.id;d.has(P)&&(P=`${P}-${R(S.path).slice(0,8)}`),d.add(P);let j={...S,id:P};return n.push(j),j},"addDeclaration");await b.mkdir(a,{recursive:!0});for(let S of t.skills.filter(P=>P.enabled)){if(S.validationStatus!=="valid")throw new Error(`Cannot import invalid Profile Skill ${S.name}: ${S.validationMessages.join(" ")}`);let P=L.dirname(L.join(i,S.path)),j=`skills/${he(S.name)}/SKILL.md`;await Ke(L.join(P,"SKILL.md"),L.join(a,...j.split("/")));let H=o({id:`skill-${he(S.name)}`,kind:"skill",path:j,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"});for(let O of S.resourceFiles){let q=`skills/${he(S.name)}/${O.split(L.sep).join("/")}`;await Ke(L.join(P,O),L.join(a,...q.split("/"))),o({id:`skill-resource-${he(S.name)}-${R(O).slice(0,12)}`,kind:"skill_resource",path:q,parentId:H.id,mediaType:la(q),visibility:"policy",portability:"portable"})}}for(let S of t.agents.filter(P=>P.enabled)){let P=L.resolve(i,S.path),j=await Go(P);if(j.length===0)throw new Error(`Profile Agent ${S.id} has no source files.`);let H=Qo(j);for(let O of j){let q=`agents/${he(S.id)}/${O}`,Y=(await b.stat(P)).isDirectory()?L.join(P,...O.split("/")):P;await Ke(Y,L.join(a,...q.split("/"))),o({id:O===H?`agent-${he(S.id)}`:`agent-asset-${he(S.id)}-${R(O).slice(0,12)}`,kind:O===H?"agent":"asset",path:q,parentId:null,mediaType:la(q),visibility:"policy",portability:"portable"})}await Ps(L.join(a,"agents",he(S.id)))}let m=new Set,l=new Set(t.agents.filter(S=>S.enabled).map(S=>S.id)),f=t.actionCatalog.filter(S=>S.agentId&&l.has(S.agentId)).map(S=>({id:S.id,agentId:he(S.agentId),sourceActionId:S.sourceActionId??S.id,inputSchema:typeof S.inputSchema=="object"&&S.inputSchema!==null?S.inputSchema:{type:"object",additionalProperties:!0}})),p=new Set(f.map(S=>S.id)),u=L.join(i,"workflows","catalog.json"),T=await b.lstat(u).catch(()=>null),h=(await At(i)).filter(S=>S.startsWith("workflows/")),g=h.some(S=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(S));if(g&&T)throw new Error("Authored Workflow packages and legacy workflows/catalog.json cannot coexist; migrate the catalog first.");if(T||g||f.length){if(T&&(!T.isFile()||T.isSymbolicLink()))throw new Error("Profile workflow catalog must be a regular file.");let S=g?Ai({files:new Map(await Promise.all(h.map(async O=>[O,await b.readFile(await Tr(i,O),"utf8")]))),skillPaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:p}):null,P=S?Buffer.from(K(S.catalog)):T?await b.readFile(u):Buffer.from(K({schemaVersion:"openpond.profileWorkflows.v1",workflows:[]})),j=Gr({catalog:JSON.parse(P.toString("utf8")),sourcePaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:new Set(f.map(O=>O.id))});for(let O of j.workflows)m.add(O.id);Jc(j);let H="workflows/catalog.json";await b.mkdir(L.join(a,"workflows"),{recursive:!0}),await b.writeFile(L.join(a,"workflows","catalog.json"),P,{flag:"wx"});for(let O of S?.referencedPaths??[])await Ke(L.join(i,...O.split("/")),L.join(a,...O.split("/"))),o({id:`profile-workflow-source-${R(O).slice(0,16)}`,kind:"asset",path:O,parentId:null,mediaType:la(O),visibility:"policy",portability:"portable"});o({id:"profile-workflows",kind:"workflow",path:H,parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"})}(T||g||f.length)&&(await b.writeFile(L.join(a,"workflows","actions.json"),K({schemaVersion:"openpond.profileWorkflowActions.v1",actions:f}),{flag:"wx"}),o({id:"profile-workflow-actions",kind:"asset",path:"workflows/actions.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}));let w=L.join(i,"evals","catalog.json"),y=await b.lstat(w).catch(()=>null),N=(await At(i)).filter(S=>/^workflows\/[^/]+\/evals\/[^/]+\.json$/.test(S)||/^evals\/(definitions|suites)\/[^/]+\.json$/.test(S));if(y&&N.length)throw new Error("Authored evaluation definitions and legacy evals/catalog.json cannot coexist; migrate the catalog first.");if(y||N.length){if(y&&(!y.isFile()||y.isSymbolicLink()))throw new Error("Profile evaluation catalog must be a regular file.");let S=[],P=[];for(let D of N){let J=JSON.parse(await b.readFile(await Tr(i,D),"utf8"));if(D.startsWith("evals/suites/"))P.push(In.parse(J));else{let V=vn.parse(J),re=/^workflows\/([^/]+)\/evals\//.exec(D)?.[1];if(re&&(V.target.kind!=="workflow"||V.target.workflowId!==re))throw new Error(`Profile evaluation ${V.id} must target its containing Workflow ${re}.`);S.push(V)}}let j=N.length?Buffer.from(K({schemaVersion:"openpond.profileEvaluations.v1",definitions:S.sort((D,J)=>D.id.localeCompare(J.id)),suites:P.sort((D,J)=>D.id.localeCompare(J.id))})):await b.readFile(w),{catalog:H}=bn({catalog:JSON.parse(j.toString("utf8")),workflowIds:m,skillPaths:new Set(n.filter(D=>D.kind==="skill").map(D=>D.path)),actionIds:p});await b.mkdir(L.join(a,"evals"),{recursive:!0}),await b.writeFile(L.join(a,"evals","catalog.json"),j,{flag:"wx"});for(let D of N)await Ke(L.join(i,...D.split("/")),L.join(a,...D.split("/"))),o({id:`profile-evaluation-source-${R(D).slice(0,16)}`,kind:"asset",path:D,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});o({id:"profile-evaluations",kind:"asset",path:"evals/catalog.json",parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});let O=new Set(H.definitions.map(D=>D.tasksetRelease.contentHash)),q=L.join(i,"evals","tasksets"),Y=await b.lstat(q).catch(()=>null);if(Y&&(!Y.isDirectory()||Y.isSymbolicLink()))throw new Error("Profile evaluation Taskset directory must be a regular directory.");for(let D of O){let J=L.join(q,`${D}.json`),V=await b.lstat(J).catch(()=>null);if(!V)throw new Error(`Profile evaluation Taskset package ${D} is missing.`);if(!V.isFile()||V.isSymbolicLink())throw new Error("Profile evaluation Taskset package must be a regular file.");let re=He(JSON.parse(await b.readFile(J,"utf8")));if(re.taskset.contentHash!==D||!H.definitions.some(gi=>gi.tasksetRelease.contentHash===D&&gi.tasksetRelease.id===re.taskset.id))throw new Error("Profile evaluation Taskset package differs from its catalog reference.");let hi=`evals/tasksets/${D}.json`;await Ke(J,L.join(a,...hi.split("/"))),o({id:`profile-evaluation-taskset-${D.slice(0,16)}`,kind:"asset",path:hi,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"})}}let E=await Wp(t,r),k=`dependency-lock/${E.name}`;await b.mkdir(L.join(a,"dependency-lock"),{recursive:!0}),E.sourcePath?await Ke(E.sourcePath,L.join(a,...k.split("/"))):await b.writeFile(L.join(a,...k.split("/")),K(E.generated),{flag:"wx"}),o({id:"dependency-lock",kind:"dependency_lock",path:k,parentId:null,mediaType:la(k),visibility:"policy",portability:"portable"}),await b.writeFile(L.join(a,"program.json"),K({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),o({id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"});let A=It.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:n,toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{importedFrom:"openpond.profile",profileId:t.activeProfile,...s?{profileRepositoryId:s}:{},profileGitHead:r??t.git?.head??null,excludedEvalCount:t.evals.length,actionConversionPending:t.actionCatalog.length>0}});await b.writeFile(L.join(a,dt),K(A),{flag:"wx"}),await _i(a,e)}c($c,"writeImportedProfileSource");function Jc(a){for(let e of a.workflows){let t=Qr(e.inputSchema);if(!t.valid)throw new Error(`Profile workflow ${e.id} has an invalid input schema: ${t.issues[0]?.message??"schema mismatch"}`)}}c(Jc,"assertProfileWorkflowInputSchemas");async function _i(a,e){let t=L.join(a,dt),r=It.parse(JSON.parse(await b.readFile(t,"utf8")));if(r.files.some(o=>o.kind==="instruction"))return;let s="instructions/system.md";await b.mkdir(L.join(a,"instructions"),{recursive:!0}),await b.writeFile(L.join(a,...s.split("/")),`# ${e}
2397
+ ) VALUES (?, ?, ?, ?, ?, ?)`,[t.contentHash,t.id,t.workspaceId,t.decision,JSON.stringify(t),t.createdAt])}};function xp(a){if(!a||typeof a!="object")return!1;let e=a;return typeof e.id=="string"&&typeof e.contentHash=="string"}c(xp,"isReleaseRef");function ui(a,e){return a.id===e.id&&a.contentHash===e.contentHash}c(ui,"sameReleaseRef");var st="harness.json",Hc=25e7;function Xp(a,e){let t=`${Te(e)}-${y(e).slice(0,16)}`,r=L.join(a,"library","harnesses","workspaces",t);return{root:r,source:L.join(r,"source")}}c(Xp,"localHarnessWorkspacePaths");async function tN(a){return Yr({...a,initializeSource:c(e=>Dp(e,a.name),"initializeSource")})}c(tN,"createLocalHarnessWorkspace");async function aN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded local Profile with a source path can be imported.");return Yr({...a,compilationWorkspaceId:a.repositoryId?Fc(a.repositoryId,a.name):a.id,initializeSource:c(e=>jc(e,a.name,a.profile,a.sourceRevision,a.repositoryId),"initializeSource")})}c(aN,"importProfileIntoLocalHarnessWorkspace");function Fc(a,e){return`profile-source-${y([a,e]).slice(0,24)}`}c(Fc,"profileCompilationWorkspaceId");async function rN(a){if(a.profile.mode!=="local"||!a.profile.sourcePath)throw new Error("Only a loaded Profile source can be compiled.");let e=L.join(a.storeDir,"library","harnesses","profile-previews");await A.mkdir(e,{recursive:!0});let t=L.join(e,mi());try{await jc(t,a.name,a.profile,a.sourceRevision,a.repositoryId);let r=a.repositoryId?Fc(a.repositoryId,a.name):a.workspaceId;return await Ti({workspaceId:r,sourceDir:t})}finally{await A.rm(t,{recursive:!0,force:!0})}}c(rN,"compileProfileHarnessSource");async function sN(a){let e=await Ti({workspaceId:a.id,sourceDir:a.sourceDir}),t=await a.store.getHarnessWorkspace(a.id);if(t){let r=t.currentChannel.release?await a.store.getHarnessReleaseRecord(t.currentChannel.release.contentHash):null;if(t.ownerScope.id!==a.ownerId||t.sourceRevision!==e.sourceRevision||r?.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Configured Harness source changed; use a new workspace ID for the new release.");return}await Yr({...a,initializeSource:c(async r=>{await A.mkdir(r,{recursive:!0}),await A.writeFile(L.join(r,st),Y(e.manifest));for(let s of e.sourceFiles){let i=L.join(r,s.path);await A.mkdir(L.dirname(i),{recursive:!0}),await A.writeFile(i,s.bytes)}},"initializeSource")})}c(sN,"importLocalHarnessWorkspaceSource");async function iN(a){let e=await a.store.getHarnessReleaseRecord(a.sourceRelease.contentHash);if(!e||e.harnessRelease.id!==a.sourceRelease.id)throw new Error("Harness workspace fork source release is unavailable.");return Yr({...a,initializeSource:c(async t=>{await A.cp(L.join(e.bundlePath,"source"),t,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1}),await Ei(t,a.name)},"initializeSource")})}c(iN,"forkLocalHarnessWorkspaceFromRelease");async function Yr(a){let e=a.now??(()=>new Date().toISOString()),t=Xp(a.storeDir,a.id),r=L.dirname(t.root);await A.mkdir(r,{recursive:!0});let s=L.join(r,`.${L.basename(t.root)}.creating-${mi()}`),i=L.join(s,"source");try{await a.initializeSource(i),await A.rename(s,t.root)}catch(n){throw await A.rm(s,{recursive:!0,force:!0}).catch(()=>{}),n}try{let n=await Ti({workspaceId:a.compilationWorkspaceId??a.id,sourceDir:t.source}),o=await Mp({storeDir:a.storeDir,workspaceId:a.id,compiled:n,createdAt:e()}),d=e(),m=le.parse({schemaVersion:"openpond.harnessWorkspace.v1",id:a.id,ownerScope:{kind:"personal",id:a.ownerId},name:a.name,location:"local",sourceRevision:n.sourceRevision,revision:0,dirty:!1,currentChannel:{name:"personal",release:{id:n.harnessRelease.id,contentHash:n.harnessRelease.contentHash},revision:1},createdAt:d,updatedAt:d,metadata:{sourceLayout:"openpond.harnessSourceManifest.v1",...a.selectionEligible===!1?{selectionEligible:!1}:{}}});return await a.store.createHarnessWorkspaceWithRelease({workspace:m,release:o})}catch(n){throw await A.rm(t.root,{recursive:!0,force:!0}).catch(()=>{}),n}}c(Yr,"createLocalHarnessWorkspaceFromInitializer");async function Ti(a){let e=L.resolve(a.sourceDir),t=L.join(e,st),r=Nt.parse(JSON.parse(await A.readFile(t,"utf8"))),s=new Set(r.files.map(f=>f.path)),i=(await Ot(e)).filter(f=>f!==st),n=i.filter(f=>!s.has(f)),o=[...s].filter(f=>!i.includes(f));if(n.length||o.length)throw new Error(`Harness source manifest mismatch. Unlisted: ${n.join(", ")||"none"}; missing: ${o.join(", ")||"none"}.`);let d=[];for(let f of r.files){let k=await pr(e,f.path),b=await A.readFile(k);if(b.byteLength>Hc)throw new Error(`Harness source file ${f.path} exceeds ${Hc} bytes.`);d.push({path:f.path,bytes:b,asset:{id:f.id,path:f.path,contentHash:it(b),sizeBytes:b.byteLength,mediaType:f.mediaType,visibility:f.visibility}})}let m=d.find(({path:f})=>f==="workflows/catalog.json");if(m){let f=r.files.find(H=>H.path===m.path);if(f?.kind!=="workflow"||f.visibility!=="policy")throw new Error("Profile workflow catalog requires a policy-visible workflow declaration.");let k=d.find(({path:H})=>H==="workflows/actions.json"),b=r.files.find(H=>H.path==="workflows/actions.json");if(!k||b?.visibility!=="policy")throw new Error("Profile workflow catalog requires a released action inventory.");let S=Oi.parse(JSON.parse(new TextDecoder().decode(k.bytes))).actions,P=new Set;for(let H of S){if(P.has(H.id))throw new Error(`Duplicate Profile workflow action ${H.id}.`);if(P.add(H.id),!zr(H.inputSchema).valid)throw new Error(`Profile workflow action ${H.id} has an invalid input schema.`);if(!r.files.some(O=>O.path.startsWith(`agents/${H.agentId}/`)))throw new Error(`Profile workflow action ${H.id} lacks its Agent source.`)}let j=Vr({catalog:JSON.parse(new TextDecoder().decode(m.bytes)),sourcePaths:new Set(r.files.filter(H=>H.kind==="skill").map(H=>H.path)),actionIds:P});Bc(j)}let l=y({manifest:r,files:d.map(({path:f,asset:k})=>({path:f,contentHash:k.contentHash,sizeBytes:k.sizeBytes}))}),E=c(f=>d.filter(({path:k})=>r.files.find(b=>b.path===k)?.kind===f).map(({asset:k})=>k),"byKind"),p=E("dependency_lock")[0],u=E("program")[0],T=r.files.filter(f=>f.portability==="local_only").map(f=>f.id),h=r.files.filter(f=>f.visibility==="host_private").map(f=>f.id),g=[...T.map(f=>`Asset ${f} is local-only.`),...h.map(f=>`Asset ${f} is host-private.`)],w={id:`harness-source-${l.slice(0,24)}`,contentHash:l},R=wi({schemaVersion:"openpond.agentSnapshot.v2",id:`agent-snapshot-${y([l,r.toolDeclarations]).slice(0,24)}`,sourceRelease:w,instructions:E("instruction"),skills:E("skill"),agents:E("agent"),toolDeclarations:r.toolDeclarations,capabilityRequirements:r.capabilityRequirements,dependencyLock:p,portability:{portable:g.length===0,blockers:g,localOnlyAssetRefs:T,hostPrivateAssetRefs:h},metadata:{workspaceId:a.workspaceId,sourceRevision:l,sourceLayout:r.schemaVersion}}),N=Ri({schemaVersion:"openpond.harnessRelease.v2",id:`harness-${y([R.contentHash,u.contentHash,r.lifecycle]).slice(0,24)}`,agentSnapshot:{id:R.id,contentHash:R.contentHash},program:u,tools:r.toolDeclarations,lifecycle:r.lifecycle,graderInterface:r.graderInterface,files:d.map(({asset:f})=>f),metadata:{runtimeProtocol:r.runtimeProtocol,sourceRevision:l,sourceLayout:r.schemaVersion,...r.metadata.importedFrom==="openpond.profile"?{profile:{id:r.metadata.profileId,sourceRevision:r.metadata.profileGitHead??l,...r.metadata.profileRepositoryId?{repositoryId:r.metadata.profileRepositoryId}:{}}}:{}}});return{manifest:r,sourceRevision:l,agentSnapshot:R,harnessRelease:N,sourceFiles:d}}c(Ti,"compileLocalHarnessSource");async function Mp(a){let e=L.join(a.storeDir,"library","harnesses","releases"),t=L.join(e,a.compiled.harnessRelease.contentHash);await A.mkdir(e,{recursive:!0});let r=L.join(e,`.${a.compiled.harnessRelease.contentHash}.materializing-${mi()}`);try{await A.mkdir(L.join(r,"source"),{recursive:!0});for(let s of a.compiled.sourceFiles){let i=L.join(r,"source",...s.path.split("/"));await A.mkdir(L.dirname(i),{recursive:!0}),await A.writeFile(i,s.bytes,{flag:"wx"})}await A.writeFile(L.join(r,"source",st),Y(a.compiled.manifest),{flag:"wx"}),await A.writeFile(L.join(r,"agent-snapshot.json"),Y(a.compiled.agentSnapshot),{flag:"wx"}),await A.writeFile(L.join(r,"harness-release.json"),Y(a.compiled.harnessRelease),{flag:"wx"});try{await A.rename(r,t)}catch(s){if(s.code!=="EEXIST"&&s.code!=="ENOTEMPTY")throw s;await Uc(t,a.compiled),await A.rm(r,{recursive:!0,force:!0})}await Uc(t,a.compiled)}catch(s){throw await A.rm(r,{recursive:!0,force:!0}).catch(()=>{}),s}return Fe.parse({schemaVersion:"openpond.localHarnessReleaseRecord.v1",workspaceId:a.workspaceId,sourceRevision:a.compiled.sourceRevision,agentSnapshot:a.compiled.agentSnapshot,harnessRelease:a.compiled.harnessRelease,bundlePath:t,createdAt:a.createdAt})}c(Mp,"materializeLocalHarnessRelease");async function Dp(a,e){let t=Nt.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:[{id:"dependency-lock",kind:"dependency_lock",path:"dependency-lock.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"},{id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}],toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{}});await A.mkdir(a,{recursive:!0}),await A.writeFile(L.join(a,"dependency-lock.json"),Y({dependencies:{}}),{flag:"wx"}),await A.writeFile(L.join(a,"program.json"),Y({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),await A.writeFile(L.join(a,st),Y(t),{flag:"wx"}),await Ei(a,e)}c(Dp,"writeDefaultHarnessSource");async function jc(a,e,t,r,s){let i=L.resolve(t.sourcePath),n=[],o=new Set,d=c(S=>{let P=S.id;o.has(P)&&(P=`${P}-${y(S.path).slice(0,8)}`),o.add(P);let j={...S,id:P};return n.push(j),j},"addDeclaration");await A.mkdir(a,{recursive:!0});for(let S of t.skills.filter(P=>P.enabled)){if(S.validationStatus!=="valid")throw new Error(`Cannot import invalid Profile Skill ${S.name}: ${S.validationMessages.join(" ")}`);let P=L.dirname(L.join(i,S.path)),j=`skills/${Te(S.name)}/SKILL.md`;await Be(L.join(P,"SKILL.md"),L.join(a,...j.split("/")));let H=d({id:`skill-${Te(S.name)}`,kind:"skill",path:j,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"});for(let O of S.resourceFiles){let q=`skills/${Te(S.name)}/${O.split(L.sep).join("/")}`;await Be(L.join(P,O),L.join(a,...q.split("/"))),d({id:`skill-resource-${Te(S.name)}-${y(O).slice(0,12)}`,kind:"skill_resource",path:q,parentId:H.id,mediaType:oa(q),visibility:"policy",portability:"portable"})}}for(let S of t.agents.filter(P=>P.enabled)){let P=L.resolve(i,S.path),j=await Yo(P);if(j.length===0)throw new Error(`Profile Agent ${S.id} has no source files.`);let H=Ko(j);for(let O of j){let q=`agents/${Te(S.id)}/${O}`,W=(await A.stat(P)).isDirectory()?L.join(P,...O.split("/")):P;await Be(W,L.join(a,...q.split("/"))),d({id:O===H?`agent-${Te(S.id)}`:`agent-asset-${Te(S.id)}-${y(O).slice(0,12)}`,kind:O===H?"agent":"asset",path:q,parentId:null,mediaType:oa(q),visibility:"policy",portability:"portable"})}await bs(L.join(a,"agents",Te(S.id)))}let m=new Set,l=new Set(t.agents.filter(S=>S.enabled).map(S=>S.id)),E=t.actionCatalog.filter(S=>S.agentId&&l.has(S.agentId)).map(S=>({id:S.id,agentId:Te(S.agentId),sourceActionId:S.sourceActionId??S.id,inputSchema:typeof S.inputSchema=="object"&&S.inputSchema!==null?S.inputSchema:{type:"object",additionalProperties:!0}})),p=new Set(E.map(S=>S.id)),u=L.join(i,"workflows","catalog.json"),T=await A.lstat(u).catch(()=>null),h=(await Ot(i)).filter(S=>S.startsWith("workflows/")),g=h.some(S=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(S));if(g&&T)throw new Error("Authored Workflow packages and legacy workflows/catalog.json cannot coexist; migrate the catalog first.");if(T||g||E.length){if(T&&(!T.isFile()||T.isSymbolicLink()))throw new Error("Profile workflow catalog must be a regular file.");let S=g?Li({files:new Map(await Promise.all(h.map(async O=>[O,await A.readFile(await pr(i,O),"utf8")]))),skillPaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:p}):null,P=S?Buffer.from(Y(S.catalog)):T?await A.readFile(u):Buffer.from(Y({schemaVersion:"openpond.profileWorkflows.v1",workflows:[]})),j=Vr({catalog:JSON.parse(P.toString("utf8")),sourcePaths:new Set(n.filter(O=>O.kind==="skill").map(O=>O.path)),actionIds:new Set(E.map(O=>O.id))});for(let O of j.workflows)m.add(O.id);Bc(j);let H="workflows/catalog.json";await A.mkdir(L.join(a,"workflows"),{recursive:!0}),await A.writeFile(L.join(a,"workflows","catalog.json"),P,{flag:"wx"});for(let O of S?.referencedPaths??[])await Be(L.join(i,...O.split("/")),L.join(a,...O.split("/"))),d({id:`profile-workflow-source-${y(O).slice(0,16)}`,kind:"asset",path:O,parentId:null,mediaType:oa(O),visibility:"policy",portability:"portable"});d({id:"profile-workflows",kind:"workflow",path:H,parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"})}(T||g||E.length)&&(await A.writeFile(L.join(a,"workflows","actions.json"),Y({schemaVersion:"openpond.profileWorkflowActions.v1",actions:E}),{flag:"wx"}),d({id:"profile-workflow-actions",kind:"asset",path:"workflows/actions.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"}));let w=L.join(i,"evals","catalog.json"),R=await A.lstat(w).catch(()=>null),N=(await Ot(i)).filter(S=>/^workflows\/[^/]+\/evals\/[^/]+\.json$/.test(S)||/^evals\/(definitions|suites)\/[^/]+\.json$/.test(S));if(R&&N.length)throw new Error("Authored evaluation definitions and legacy evals/catalog.json cannot coexist; migrate the catalog first.");if(R||N.length){if(R&&(!R.isFile()||R.isSymbolicLink()))throw new Error("Profile evaluation catalog must be a regular file.");let S=[],P=[];for(let D of N){let $=JSON.parse(await A.readFile(await pr(i,D),"utf8"));if(D.startsWith("evals/suites/"))P.push(Sn.parse($));else{let J=Nn.parse($),te=/^workflows\/([^/]+)\/evals\//.exec(D)?.[1];if(te&&(J.target.kind!=="workflow"||J.target.workflowId!==te))throw new Error(`Profile evaluation ${J.id} must target its containing Workflow ${te}.`);S.push(J)}}let j=N.length?Buffer.from(Y({schemaVersion:"openpond.profileEvaluations.v1",definitions:S.sort((D,$)=>D.id.localeCompare($.id)),suites:P.sort((D,$)=>D.id.localeCompare($.id))})):await A.readFile(w),{catalog:H}=vn({catalog:JSON.parse(j.toString("utf8")),workflowIds:m,skillPaths:new Set(n.filter(D=>D.kind==="skill").map(D=>D.path)),actionIds:p});await A.mkdir(L.join(a,"evals"),{recursive:!0}),await A.writeFile(L.join(a,"evals","catalog.json"),j,{flag:"wx"});for(let D of N)await Be(L.join(i,...D.split("/")),L.join(a,...D.split("/"))),d({id:`profile-evaluation-source-${y(D).slice(0,16)}`,kind:"asset",path:D,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});d({id:"profile-evaluations",kind:"asset",path:"evals/catalog.json",parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});let O=new Set(H.definitions.map(D=>D.tasksetRelease.contentHash)),q=L.join(i,"evals","tasksets"),W=await A.lstat(q).catch(()=>null);if(W&&(!W.isDirectory()||W.isSymbolicLink()))throw new Error("Profile evaluation Taskset directory must be a regular directory.");for(let D of O){let $=L.join(q,`${D}.json`),J=await A.lstat($).catch(()=>null);if(!J)throw new Error(`Profile evaluation Taskset package ${D} is missing.`);if(!J.isFile()||J.isSymbolicLink())throw new Error("Profile evaluation Taskset package must be a regular file.");let te=Xe(JSON.parse(await A.readFile($,"utf8")));if(te.taskset.contentHash!==D||!H.definitions.some(_i=>_i.tasksetRelease.contentHash===D&&_i.tasksetRelease.id===te.taskset.id))throw new Error("Profile evaluation Taskset package differs from its catalog reference.");let fi=`evals/tasksets/${D}.json`;await Be($,L.join(a,...fi.split("/"))),d({id:`profile-evaluation-taskset-${D.slice(0,16)}`,kind:"asset",path:fi,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"})}}let f=await Hp(t,r),k=`dependency-lock/${f.name}`;await A.mkdir(L.join(a,"dependency-lock"),{recursive:!0}),f.sourcePath?await Be(f.sourcePath,L.join(a,...k.split("/"))):await A.writeFile(L.join(a,...k.split("/")),Y(f.generated),{flag:"wx"}),d({id:"dependency-lock",kind:"dependency_lock",path:k,parentId:null,mediaType:oa(k),visibility:"policy",portability:"portable"}),await A.writeFile(L.join(a,"program.json"),Y({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),d({id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"});let b=Nt.parse({schemaVersion:"openpond.harnessSourceManifest.v1",name:e,files:n,toolDeclarations:[],capabilityRequirements:[],lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output","runtime_events","artifacts"],privilegedEvidence:["expected_output","private_verifier"],privateVerifierIsolation:!0},runtimeProtocol:"openpond.agent-runtime.v1",metadata:{importedFrom:"openpond.profile",profileId:t.activeProfile,...s?{profileRepositoryId:s}:{},profileGitHead:r??t.git?.head??null,excludedEvalCount:t.evals.length,actionConversionPending:t.actionCatalog.length>0}});await A.writeFile(L.join(a,st),Y(b),{flag:"wx"}),await Ei(a,e)}c(jc,"writeImportedProfileSource");function Bc(a){for(let e of a.workflows){let t=zr(e.inputSchema);if(!t.valid)throw new Error(`Profile workflow ${e.id} has an invalid input schema: ${t.issues[0]?.message??"schema mismatch"}`)}}c(Bc,"assertProfileWorkflowInputSchemas");async function Ei(a,e){let t=L.join(a,st),r=Nt.parse(JSON.parse(await A.readFile(t,"utf8")));if(r.files.some(d=>d.kind==="instruction"))return;let s="instructions/system.md";await A.mkdir(L.join(a,"instructions"),{recursive:!0}),await A.writeFile(L.join(a,...s.split("/")),`# ${e}
2398
2398
 
2399
2399
  Keep reusable, provider-neutral execution guidance for this Harness here.
2400
- `,{flag:"wx"});let n=new Set(r.files.map(o=>o.id)).has("instruction-system")?`instruction-system-${R(s).slice(0,8)}`:"instruction-system",d=It.parse({...r,name:e,files:[...r.files,{id:n,kind:"instruction",path:s,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"}]});await b.writeFile(t,K(d),{flag:"w"})}c(_i,"ensureHarnessInstructionSurface");async function Wp(a,e){let t=a.repoPath?L.resolve(a.repoPath):null;if(t)for(let r of["pnpm-lock.yaml","package-lock.json","yarn.lock"]){let s=L.join(t,r),i=await b.lstat(s).catch(()=>null);if(i?.isFile()&&!i.isSymbolicLink())return{name:r,sourcePath:s}}return{name:"profile-import.json",sourcePath:null,generated:{source:"openpond.profile",profileId:a.activeProfile,profileGitHead:e??a.git?.head??null,dependenciesResolved:!1}}}c(Wp,"importedDependencyLock");async function Yc(a,e){let t=lt.parse(JSON.parse(await b.readFile(L.join(a,"agent-snapshot.json"),"utf8"))),r=pt.parse(JSON.parse(await b.readFile(L.join(a,"harness-release.json"),"utf8")));if(t.contentHash!==e.agentSnapshot.contentHash||r.contentHash!==e.harnessRelease.contentHash)throw new Error("Materialized Harness release does not match the compiled immutable objects.");for(let s of e.sourceFiles){let i=await b.readFile(L.join(a,"source",...s.path.split("/")));if(ct(i)!==s.asset.contentHash)throw new Error(`Materialized Harness asset ${s.path} failed hash verification.`)}}c(Yc,"verifyMaterializedRelease");export{zc as a,vm as b,xm as c,Ym as d,iT as e,mT as f,Qc as g,Zc as h,tl as i,yT as j,kT as k,NT as l,$o as m,Vo as n,zT as o,fr as p,pa as q,Hs as r,_r as s,sd as t,id as u,wl as v,ae as w,Rl as x,yd as y,lE as z,pE as A,uE as B,mE as C,TE as D,fE as E,EE as F,_E as G,hE as H,gE as I,wE as J,Od as K,Fl as L,_h as M,hh as N,gh as O,Se as P,Vd as Q,Mt as R,Zd as S,tc as T,wa as U,zl as V,ya as W,fw as X,nt as Y,ve as Z,wc as _,Ht as $,Ft as aa,xc as ba,We as ca,pi as da,qc as ea,jp as fa,SN as ga,vN as ha,IN as ia,ON as ja,LN as ka,Ei as la,Bp as ma};
2400
+ `,{flag:"wx"});let n=new Set(r.files.map(d=>d.id)).has("instruction-system")?`instruction-system-${y(s).slice(0,8)}`:"instruction-system",o=Nt.parse({...r,name:e,files:[...r.files,{id:n,kind:"instruction",path:s,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"}]});await A.writeFile(t,Y(o),{flag:"w"})}c(Ei,"ensureHarnessInstructionSurface");async function Hp(a,e){let t=a.repoPath?L.resolve(a.repoPath):null;if(t)for(let r of["pnpm-lock.yaml","package-lock.json","yarn.lock"]){let s=L.join(t,r),i=await A.lstat(s).catch(()=>null);if(i?.isFile()&&!i.isSymbolicLink())return{name:r,sourcePath:s}}return{name:"profile-import.json",sourcePath:null,generated:{source:"openpond.profile",profileId:a.activeProfile,profileGitHead:e??a.git?.head??null,dependenciesResolved:!1}}}c(Hp,"importedDependencyLock");async function Uc(a,e){let t=nt.parse(JSON.parse(await A.readFile(L.join(a,"agent-snapshot.json"),"utf8"))),r=ot.parse(JSON.parse(await A.readFile(L.join(a,"harness-release.json"),"utf8")));if(t.contentHash!==e.agentSnapshot.contentHash||r.contentHash!==e.harnessRelease.contentHash)throw new Error("Materialized Harness release does not match the compiled immutable objects.");for(let s of e.sourceFiles){let i=await A.readFile(L.join(a,"source",...s.path.split("/")));if(it(i)!==s.asset.contentHash)throw new Error(`Materialized Harness asset ${s.path} failed hash verification.`)}}c(Uc,"verifyMaterializedRelease");export{Wc as a,wm as b,Om as c,Um as d,Zm as e,oT as f,Kc as g,$c as h,Vc as i,fT as j,_T as k,hT as l,bT as m,ur as n,da as o,Ms as p,Tr as q,Qo as r,Zo as s,Tl as t,ee as u,El as v,fd as w,WE as x,YE as y,KE as z,$E as A,JE as B,VE as C,zE as D,GE as E,QE as F,ZE as G,ef as H,yd as I,xl as J,$_ as K,J_ as L,V_ as M,Re as N,qd as O,Ct as P,$d as Q,Vd as R,fa as S,Wl as T,ha as U,Yg as V,at as W,ye as X,Tc as Y,Xt as Z,Dt as _,Oc as $,Fe as aa,ci as ba,Dc as ca,Xp as da,tN as ea,aN as fa,rN as ga,sN as ha,iN as ia,Ti as ja,Mp as ka};