openpond 0.2.32 → 0.2.33

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 (116) hide show
  1. package/dist/app-server.d.ts +14 -0
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{app-layer-ZZHTHTJU.js → app-layer-HK2GTSRX.js} +1 -1
  4. package/dist/chunks/app-server-runtime-365GFLRG.js +2 -0
  5. package/dist/chunks/{apps-C2BMJ7DO.js → apps-YJRRLX2N.js} +1 -1
  6. package/dist/chunks/{chunk-MVAJMRCW.js → chunk-77BXXOHW.js} +4 -4
  7. package/dist/chunks/{chunk-2OQ6LFSG.js → chunk-BK4I7KE4.js} +1 -1
  8. package/dist/chunks/{chunk-T22TCCWW.js → chunk-BOQBDCVU.js} +1 -1
  9. package/dist/chunks/chunk-CWW2EK77.js +4 -0
  10. package/dist/chunks/{chunk-PZXZYP6Z.js → chunk-DYHB6VMK.js} +176 -176
  11. package/dist/chunks/{chunk-JFR34MIK.js → chunk-E4U7LXSW.js} +2 -2
  12. package/dist/chunks/{chunk-7FX5ABXG.js → chunk-EWB4XTWR.js} +1 -1
  13. package/dist/chunks/{chunk-QTEYV4TW.js → chunk-JFSDNQHW.js} +7 -7
  14. package/dist/chunks/chunk-PCAHFOCQ.js +2406 -0
  15. package/dist/chunks/{chunk-UU7RXSJS.js → chunk-PZ2ZILPN.js} +1 -1
  16. package/dist/chunks/{chunk-55UCBRIX.js → chunk-QWENRTVW.js} +4 -4
  17. package/dist/chunks/{chunk-JVIHGSOV.js → chunk-SRQVXHSM.js} +1 -1
  18. package/dist/chunks/chunk-TBX3Z7TX.js +2 -0
  19. package/dist/chunks/chunk-U3TN2FNR.js +15 -0
  20. package/dist/chunks/chunk-V23D3DDD.js +42 -0
  21. package/dist/chunks/cli-DKRMREVK.js +2 -0
  22. package/dist/chunks/{configuration-command-IHUB6BBM.js → configuration-command-CYUWO6CD.js} +1 -1
  23. package/dist/chunks/{core-commands-F2HIN7V4.js → core-commands-Z5C7S6OH.js} +1 -1
  24. package/dist/chunks/{desktop-test-BFFUGVRS.js → desktop-test-JBZCCTSN.js} +1 -1
  25. package/dist/chunks/{extension-D7IYZW7H.js → extension-RMJAXEKN.js} +1 -1
  26. package/dist/chunks/{help-5MKQV36D.js → help-QDMTLEIL.js} +1 -1
  27. package/dist/chunks/hosted-profile-compiler-KL7BXGRR.js +3 -0
  28. package/dist/chunks/{opchat-XO7EDHY7.js → opchat-MHH4C5YQ.js} +1 -1
  29. package/dist/chunks/{organizations-DIRGTVK5.js → organizations-5KM2JD32.js} +1 -1
  30. package/dist/chunks/{profile-EMVJ5DJQ.js → profile-KVDJTM4D.js} +1 -1
  31. package/dist/chunks/{project-agent-4QC7N3MB.js → project-agent-SXUMNJLZ.js} +1 -1
  32. package/dist/chunks/{sandbox-command-L263BBOL.js → sandbox-command-FQGX5MSS.js} +1 -1
  33. package/dist/chunks/{sandbox-template-RYKWTBW7.js → sandbox-template-Q6K5JXA3.js} +1 -1
  34. package/dist/chunks/{src-RINMQ7IQ.js → src-42VXY5DZ.js} +1 -1
  35. package/dist/chunks/{src-Q4W4NIPB.js → src-RZFP5QEE.js} +111 -111
  36. package/dist/chunks/{teams-bot-NIZB6DOY.js → teams-bot-7TPB34DR.js} +1 -1
  37. package/dist/chunks/{workspaces-PFLMSDBR.js → workspaces-DOTGXXEV.js} +1 -1
  38. package/dist/cli.js +2 -2
  39. package/dist/web/assets/App-BKY1b22z.js +226 -0
  40. package/dist/web/assets/{AppDialog-C1cvE0gH.js → AppDialog-C64bP66E.js} +1 -1
  41. package/dist/web/assets/{AppTerminalPanel-BFJNR2ik.js → AppTerminalPanel-fVkWSvWK.js} +2 -2
  42. package/dist/web/assets/{AppsView-CReOofAf.js → AppsView-DHnab11q.js} +1 -1
  43. package/dist/web/assets/{BrowserSidebar-CPxAck2O.js → BrowserSidebar-C7YeQ9KS.js} +1 -1
  44. package/dist/web/assets/{CartesianChart-SlZ8Qfkg.js → CartesianChart-CYX3IXBM.js} +1 -1
  45. package/dist/web/assets/{CollaborationTabs-DgFEunqQ.js → CollaborationTabs-j2oBkesr.js} +1 -1
  46. package/dist/web/assets/{CommandMenu-BiROlSdv.js → CommandMenu-BN1a4dTn.js} +1 -1
  47. package/dist/web/assets/{CommunityView-DVST_ZxO.js → CommunityView-CNoxP71Z.js} +1 -1
  48. package/dist/web/assets/{ComposerCreateImproveStrip-jRBhdiFB.js → ComposerCreateImproveStrip-IoK3lqK8.js} +1 -1
  49. package/dist/web/assets/{GetStartedView-Ck4EW1_s.js → GetStartedView-QPabIxZC.js} +1 -1
  50. package/dist/web/assets/HostedModelLearningReview-CNd3-FrC.js +1 -0
  51. package/dist/web/assets/{HostedModelLearningSettings-BD7quEFA.js → HostedModelLearningSettings-TkSSxw8x.js} +1 -1
  52. package/dist/web/assets/{LabModelVersionDetailPage-8-Gb5AAH.js → LabModelVersionDetailPage-CRFw6V7e.js} +1 -1
  53. package/dist/web/assets/{LabSkillSidebar-DO-kFl9Z.js → LabSkillSidebar-Dl8KWUe0.js} +1 -1
  54. package/dist/web/assets/{LabsRoute-Dc9RQKdA.js → LabsRoute-BzdL7mUM.js} +4 -4
  55. package/dist/web/assets/{MainChatThread-DZXcFgmJ.js → MainChatThread-C3IdxbN3.js} +2 -2
  56. package/dist/web/assets/{MainPane-BYrnuI30.js → MainPane-BdR1K59_.js} +4 -4
  57. package/dist/web/assets/{MarkdownText-ueZFkEyk.js → MarkdownText-CkLxqh2M.js} +1 -1
  58. package/dist/web/assets/{NativeSkillSidebar-DlAX2-dH.js → NativeSkillSidebar-VkWpZX6S.js} +1 -1
  59. package/dist/web/assets/{NewExperienceSwitcher-BHYLG0IZ.js → NewExperienceSwitcher-D_K16Ho-.js} +1 -1
  60. package/dist/web/assets/{NewProjectDialog-BwN6SnxR.js → NewProjectDialog-B6E1wWOM.js} +1 -1
  61. package/dist/web/assets/{OutputsPage-Q0kpdfq_.js → OutputsPage-27MuutGA.js} +1 -1
  62. package/dist/web/assets/{ProjectsPage-TnlBYfFy.js → ProjectsPage-CokpZHgx.js} +1 -1
  63. package/dist/web/assets/{RightChatPanelStack-D2qZ-1nK.js → RightChatPanelStack-B6JhJdlc.js} +1 -1
  64. package/dist/web/assets/{RightSidebarHomePanel-q6FF-DR9.js → RightSidebarHomePanel-nn0dqUF0.js} +1 -1
  65. package/dist/web/assets/{ScheduledWorkPage-BTX3Sjoa.js → ScheduledWorkPage-idJ8AO15.js} +1 -1
  66. package/dist/web/assets/{SettingsView-gAhNO4Rg.js → SettingsView-ZH2gDC6E.js} +3 -3
  67. package/dist/web/assets/{TeamChatView-DZtfZ12z.js → TeamChatView-B5cG9M6w.js} +1 -1
  68. package/dist/web/assets/{TerminalOverlay-MJqx0xg6.js → TerminalOverlay-9SPRce9W.js} +1 -1
  69. package/dist/web/assets/{TrainingCreationPanel-ORoKcc3m.js → TrainingCreationPanel-2dkxe7py.js} +1 -1
  70. package/dist/web/assets/{TrainingDraftPanel-oolNVDIx.js → TrainingDraftPanel-oYbOFapi.js} +1 -1
  71. package/dist/web/assets/{UsageSettingsSection-Lh_fLOcC.js → UsageSettingsSection-zWs4Z_9b.js} +1 -1
  72. package/dist/web/assets/{WorkSidebarPanel-BIqP9SXr.js → WorkSidebarPanel-CiBQztz6.js} +1 -1
  73. package/dist/web/assets/{WorkspaceDiffPanel-B0Zwyx9a.js → WorkspaceDiffPanel-BPt29A2a.js} +3 -3
  74. package/dist/web/assets/{WorkspaceEnvironmentMenu-BpgvG43X.js → WorkspaceEnvironmentMenu-pb6fs4-2.js} +1 -1
  75. package/dist/web/assets/{WorkspaceGitDialogs-Bw5ADFuc.js → WorkspaceGitDialogs-DHD-L4Vs.js} +1 -1
  76. package/dist/web/assets/{WorkspaceMonacoEditor-BpivuGzo.js → WorkspaceMonacoEditor-BxtCNaRo.js} +3 -3
  77. package/dist/web/assets/{arrow-up-right-BjC4ygxR.js → arrow-up-right-DcP3EZaY.js} +1 -1
  78. package/dist/web/assets/{clipboard-BOJ-sNJz.js → clipboard-BXulVWTJ.js} +1 -1
  79. package/dist/web/assets/{cloud-upload-D-_3UWhI.js → cloud-upload-B3hP6o0H.js} +1 -1
  80. package/dist/web/assets/{cssMode-CnHRib-_.js → cssMode-c85YG3Pd.js} +1 -1
  81. package/dist/web/assets/{folder-open-CO3Vz0rT.js → folder-open-CtOXE4jL.js} +1 -1
  82. package/dist/web/assets/{folder-plus-CL6B10XJ.js → folder-plus-KO96VZiR.js} +1 -1
  83. package/dist/web/assets/{git-commit-horizontal-C_SNHoOD.js → git-commit-horizontal-Bhtev2bN.js} +1 -1
  84. package/dist/web/assets/{htmlMode-DBpIV7Gx.js → htmlMode-BbCawv2y.js} +1 -1
  85. package/dist/web/assets/{index-Dx0lr1R3.js → index-Hynq87d2.js} +2 -2
  86. package/dist/web/assets/{info-C1C3X2vW.js → info-Dqf1UVHA.js} +1 -1
  87. package/dist/web/assets/{jsonMode-B9puI-La.js → jsonMode-CFycP8DE.js} +1 -1
  88. package/dist/web/assets/{lspLanguageFeatures-DwPRvLkn.js → lspLanguageFeatures-CYX4VXe2.js} +1 -1
  89. package/dist/web/assets/{minimize-2-Cr76Lc_J.js → minimize-2-BCmNskf_.js} +1 -1
  90. package/dist/web/assets/{monaco.contribution-DKa3PSXH.js → monaco.contribution-3ZJbmsu3.js} +2 -2
  91. package/dist/web/assets/{monaco.contribution-OemObo_b.js → monaco.contribution-CJYgsAyM.js} +2 -2
  92. package/dist/web/assets/{monaco.contribution-CnlZLXhW.js → monaco.contribution-CPkt_0fd.js} +2 -2
  93. package/dist/web/assets/{monaco.contribution-DQxsY08y.js → monaco.contribution-DR_TcZx7.js} +2 -2
  94. package/dist/web/assets/{monitor-CktBkAZk.js → monitor-DWlfguJj.js} +1 -1
  95. package/dist/web/assets/{python-CVC74_7Q.js → python-rAXzgbqp.js} +1 -1
  96. package/dist/web/assets/{refresh-cw-JaxiGpHD.js → refresh-cw-BUPgzu5R.js} +1 -1
  97. package/dist/web/assets/{save-DFm1K29k.js → save-Mb-ECgFZ.js} +1 -1
  98. package/dist/web/assets/{square-D5fFhDFt.js → square-CxNbsHso.js} +1 -1
  99. package/dist/web/assets/{toggleHighContrast-D_EkCruq.js → toggleHighContrast-DUvtEJ40.js} +1 -1
  100. package/dist/web/assets/{tsMode-BczIS4rA.js → tsMode-IPAavolh.js} +1 -1
  101. package/dist/web/assets/{upload-DvED7nbd.js → upload-Bn6_UQEa.js} +1 -1
  102. package/dist/web/assets/{useLocalAgentSchedules-DWd5OvYb.js → useLocalAgentSchedules-DAHspLJg.js} +1 -1
  103. package/dist/web/assets/{useSessionTurnCache-oMoxBcGj.js → useSessionTurnCache-CUiJuUjd.js} +1 -1
  104. package/dist/web/assets/{wifi-off-BZL-Op_B.js → wifi-off-Bsy0Wjm8.js} +1 -1
  105. package/dist/web/assets/{workers-DapCJCaQ.js → workers-35o3qFXU.js} +1 -1
  106. package/dist/web/assets/{yaml-DB9KLqu1.js → yaml-Ba5fmKgb.js} +1 -1
  107. package/dist/web/index.html +1 -1
  108. package/package.json +1 -1
  109. package/dist/chunks/app-server-runtime-C7YELTKS.js +0 -2
  110. package/dist/chunks/chunk-L54LZUGH.js +0 -2
  111. package/dist/chunks/chunk-PSZKG3E3.js +0 -4
  112. package/dist/chunks/chunk-YD2IWF3T.js +0 -2419
  113. package/dist/chunks/chunk-YW6HS6TZ.js +0 -42
  114. package/dist/chunks/cli-HGDLR5TC.js +0 -2
  115. package/dist/web/assets/App-BcbjzSeU.js +0 -226
  116. package/dist/web/assets/HostedModelLearningReview-DYFjp-96.js +0 -1
@@ -1,2419 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{d as ge}from"./chunk-7FX5ABXG.js";import{$c as Yt,$d as Gr,Aa as vt,Cc as Yr,Da as kt,Dc as Vr,Ec as Ri,Fc as yi,Fd as zt,Gc as Pd,Ja as bd,Ka as Ld,Lc as Jr,M as Nd,Mc as vi,Md as Ca,Nd as Kr,Od as Ha,Qc as Aa,Rd as ki,S as Id,Sa as Ad,Td as Gt,Uc as ot,Ud as Si,Zc as De,_d as zr,ad as Vt,be as dt,cd as Jt,ee as Hd,fd as St,fe as Md,ge as Dd,hd as Kt,he as Xd,ie as Qt,kd as Pa,ld as xa,md as xd,od as Cd,pa as gi,pe as Ud,ra as Od,sc as ba,tc as wi,wc as La}from"./chunk-MVAJMRCW.js";import{a as ed,b as md,d as fd,e as hd,f as Td,g as Ed,h as $t,i as Ei,j as nt,k as _d,l as gd,m as wd,n as Rd}from"./chunk-L54LZUGH.js";import{b as wa}from"./chunk-L3KS6MOV.js";import{E as yd,F as vd,G as _i,H as kd,U as Sd,a as xo,b as Qo,e as Zo}from"./chunk-55UCBRIX.js";import{$a as ni,$b as mi,Ca as td,Cb as Na,Db as di,Eb as ci,Fb as rt,Hb as sd,Ib as wt,J as Vo,Jb as Bt,K as Jo,Kb as li,L as Ko,Lb as Ia,M as zo,N as Go,Na as ti,Nb as ui,Ob as pi,Pa as B,Pb as Rt,Qb as qt,R as _t,Ra as ai,Sa as he,Ua as ri,Va as si,Xa as qr,Xb as st,Yb as $r,Z as se,_a as ii,_b as Ye,ac as fi,bb as X,bc as hi,c as Ra,d as Fr,db as de,dc as it,e as Co,ea as jr,eb as oi,ec as Wt,f as Ho,fb as Wr,g as Mo,gb as gt,hc as id,ib as Y,ic as nd,j as Do,jb as ad,k as Xo,l as ya,mb as Sa,mc as ie,n as Uo,nb as rd,nc as Ti,oc as yt,pa as va,pb as at,pc as Oa,q as Fo,qc as od,rc as dd,s as jo,t as Bo,tc as cd,uc as ld,vc as ud,w as qo,wc as pd,x as Wo,xa as Br,y as $o,z as Yo,za as ka}from"./chunk-QTEYV4TW.js";import{A as No,B as Io,C as Oo,D as bo,E as Lo,F as tt,G as Ao,H as Po,a as Hr,b as po,c as Mr,d as mo,e as fo,f as ho,g as To,h as $e,i as jt,j as Eo,k as Xr,l as fe,m as be,n as D,o as U,p as et,q as _o,r as Ur,s as ga,t as go,u as wo,v as Ro,w as yo,x as vo,y as ko,z as So}from"./chunk-B5LKUQGM.js";import{$ as Tt,$a as Me,$b as uo,A as Fn,Ab as Qs,B as yr,Ba as kr,C as jn,Ca as $n,Cb as _a,D as Bn,Db as io,E as qn,Eb as no,Ha as Yn,Hb as Zs,Ja as He,Jb as Ft,Ka as Ks,Kb as Ze,La as Mt,Lb as O,Ma as Vn,Mb as C,Na as Jn,Nb as W,Oa as Kn,Ob as Oe,Pa as zs,Qb as Ar,Rb as oo,Sb as re,Ta as zn,Tb as Pr,Ua as Sr,Ub as co,Va as Et,Xb as lo,Yb as xr,Za as Gn,a as I,aa as vr,ab as Qn,ba as Ta,bc as Cr,d as Xn,db as Nr,fb as Ea,fc as Dr,gb as Zn,ib as Ir,j as qe,jb as Or,kb as br,lb as Dt,m as We,mb as eo,mc as ei,n as Ys,nb as to,o as Vs,p as me,pb as ao,r as _e,rb as ro,s as Ie,t as gr,tb as Xt,u as wr,v as Un,vb as Ut,w as ht,xa as Wn,xb as Lr,y as Rr,ya as Js,yb as so,zb as Gs}from"./chunk-5BFWDFPX.js";import{Bb as Dn,W as $s,Z as xn,c as bn,ca as Cn,e as ft,f as _r,fa as Hn,g as Ln,i as An,k as Ee,l as z,m as Qe,n as ha,o as ae,q as Pn,t as K,u as Ce,v as R,w as G,x as Ws}from"./chunk-IFP6W4OW.js";import{b as o}from"./chunk-ES2ISFJC.js";import{a as Er,c as fa,f as On,h as Ne,n as Mn}from"./chunk-H7IWJN7L.js";import{a as l}from"./chunk-FTQLQJQV.js";import Ma from"node:path";import{AsyncLocalStorage as ep}from"node:async_hooks";import{promises as Fd}from"node:fs";var jd=new ep;function Df(a,e=!1){let t=jd.getStore();t&&(e&&(t.length=0),t.push(a))}l(Df,"onStartupFailure");async function Xf(a,e){await Dn(a);let t;try{t=await Ln(Ma.join(Ne(a).runtime,"server-owner"),100)}catch(s){if(s instanceof fa&&s.issue.code==="STORAGE_BUSY"){let i=await An(Ma.join(Ne(a).runtime,"endpoint.json"),()=>null);throw new fa({code:"RUNTIME_ALREADY_RUNNING",path:a,message:"An OpenPond runtime already owns this home.",action:i?.url?`Connect to the existing runtime at ${i.url}, or stop it before starting another.`:"Stop the existing runtime before starting another with this home."})}throw s}let r=[];try{let s=await Er(a,()=>jd.run(r,e)),i=s.close.bind(s);r.length=0;let n;return{...s,close:l(()=>n??=(async()=>{try{await Er(a,i)}finally{await Fd.rm(Ma.join(Ne(a).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(s){try{for(let i of r.reverse())await Promise.resolve().then(()=>Er(a,i)).catch(()=>{});await Fd.rm(Ma.join(Ne(a).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw s}}l(Xf,"ownHomeRuntime");async function Uf(a,e,t){await ft(Ma.join(Ne(a).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:e,serverId:t}))}l(Uf,"publishRuntimeEndpoint");function Bf(a){if(!a.maxContextTokens||!a.usableContextTokens)return{shouldCompact:!1,projectedTokens:a.projectedTokens,thresholdTokens:Number.MAX_SAFE_INTEGER,usableContextTokens:0,maxContextTokens:0,tokenSource:"heuristic"};let e=Math.max(.01,Math.min(1,(a.triggerPercent??85)/100)),t=Math.max(1,Math.floor(a.usableContextTokens*e));return{shouldCompact:a.projectedTokens>=t,projectedTokens:a.projectedTokens,thresholdTokens:t,usableContextTokens:a.usableContextTokens,maxContextTokens:a.maxContextTokens,tokenSource:"heuristic"}}l(Bf,"agentCompactionDecision");async function qf(a){await a.started();try{return await a.compact()}catch(e){throw await a.failed(e),e}}l(qf,"runAgentCompaction");async function Wf(a){let e=a.host.projectEvents(a.events),t=a.host.selectEvents(e,a.maxContextTokens),{summaryEvents:r,preservedEvents:s,preservedEventIds:i}=t;if(r.length===0)throw new Error("There is not enough prior context to compact.");let n=a.host.normalizeRecords(r),d=a.host.normalizeRecords(s),c=a.host.buildFileLedger(a.host.normalizeRecords(e)),p=a.host.serializeRecords(n,a.host.inputCharBudget(a.maxContextTokens));if(!p.text.trim())throw new Error("There is not enough prior context to compact.");let u=a.host.buildSummaryMessages({serializedHistory:p.text,fileLedger:c}),m=Date.now(),f=(await a.host.streamSummary({model:a.model,messages:u,signal:a.signal})).trim(),h=Date.now()-m;if(!f)throw new Error("Compaction summary was empty.");let T=a.host.estimateProjection({events:e,preservedEvents:s,summary:f}),E=a.host.createMetrics({sourceEvents:e.length,summarizedEvents:r.length,preservedEvents:s.length,sourceRecords:p.sourceRecordCount,includedRecords:p.includedRecordCount,omittedRecords:p.omittedRecordCount,preservedRecords:d.length,truncatedRecords:p.truncatedRecordCount,summaryInputTruncated:p.inputTruncated,sourceSelectionStrategy:p.selectionStrategy,summaryInputChars:p.inputChars,retainedTailTokens:t.retainedTailTokens,retainedTailBudgetTokens:t.retainedTailBudgetTokens,finalProviderContextTokens:T.inputTokensAfter,durationMs:h,fileLedgerEntries:c.length,splitTurnId:t.splitTurnId});return{summary:f,model:a.model,compactedThroughEventId:e[e.length-1]?.id??null,compactedThroughTurnId:a.host.lastTurnId(e),preservedFromEventId:s[0]?.id??null,preservedEventIds:i,preservedResourceRefs:a.host.durableResourceRefs(a.events),sourceEventCount:r.length,preservedEventCount:s.length,fileLedger:c,inputTokensBefore:T.inputTokensBefore,inputTokensAfter:T.inputTokensAfter,maxContextTokens:a.maxContextTokens,tokenSource:"heuristic",metrics:E}}l(Wf,"runAgentCompactionProgram");var Qr="2026-09-20",Jf=["initialize","initialized","runtime/capabilities","thread/start","thread/resume","thread/read","turn/start","turn/steer","task/inbox","task/queue","task/inputUpdate","turn/interrupt","approval/resolve","userInput/resolve","profile/workflows","profile/evaluations","profile/trainingSource","profile/evaluations/prepare","profile/evaluations/run","profile/evaluations/runSuite","profile/evaluations/executeCase","profile/evaluations/executeRun","profile/evaluations/compare","profile/evaluations/report","harness/inspect","harness/proposalReview","harness/review","harness/acceptEvaluationReview","harness/materializeEvaluationTaskset","harness/runEvaluationBaseline","harness/validate","harness/backgroundReview","harness/diff","harness/rollback","refiner/inspect","refiner/update","refiner/activate","refiner/rollback"],qd=o.object({jsonrpc:o.literal("2.0"),id:o.union([o.string(),o.number()]),method:o.string().trim().min(1),params:o.unknown().optional()}).strict(),Wd=o.object({jsonrpc:o.literal("2.0"),method:o.string().trim().min(1),params:o.unknown().optional()}).strict(),Ni=o.object({jsonrpc:o.literal("2.0"),id:o.union([o.string(),o.number()]),result:o.unknown()}).strict(),Ii=o.object({jsonrpc:o.literal("2.0"),id:o.union([o.string(),o.number(),o.null()]),error:o.object({code:o.number().int(),message:o.string(),data:o.unknown().optional()}).strict()}).strict(),Kf=o.union([qd,Wd,Ni,Ii]),tp=o.object({protocolVersion:o.string().trim().min(1),client:o.object({name:o.string().trim().min(1),version:o.string().trim().min(1)}).strict(),capabilities:o.record(o.string(),o.unknown()).default({})}).strict(),Zr=class{static{l(this,"AgentJsonRpcDispatcher")}#e;#a=null;#t=!1;constructor(e){this.#e=e}get initialized(){return this.#t}async handle(e){let t=Wd.safeParse(e);if(t.success&&!("id"in e)){if(t.data.method==="initialized"){if(!this.#a)throw new ct(-32002,"initialize must be called first");this.#t=!0}return null}let r=qd.safeParse(e);if(!r.success)return Bd(null,-32600,"Invalid Request",r.error.flatten());let s=r.data;try{let i=await this.#r(s.method,s.params);return{jsonrpc:"2.0",id:s.id,result:i}}catch(i){let n=i instanceof ct?i:new ct(-32603,i instanceof Error?i.message:String(i));return Bd(s.id,n.code,n.message,n.data)}}async#r(e,t){if(e==="initialize"){let r=tp.parse(t);if(r.protocolVersion!==Qr)throw new ct(-32001,"Incompatible agent protocol version",{requested:r.protocolVersion,supported:Qr});return this.#a=r,{protocolVersion:Qr,server:{name:"openpond-app-server",version:"1"},capabilities:await this.#e.capabilities()}}if(!this.#t)throw new ct(-32002,"initialized notification is required");switch(e){case"runtime/capabilities":return this.#e.capabilities(t);case"thread/start":return this.#e.threadStart(t);case"thread/resume":return this.#e.threadResume(t);case"thread/read":return this.#e.threadRead(t);case"turn/start":return this.#e.turnStart(t);case"turn/steer":return this.#e.turnSteer(t);case"task/inbox":return this.#e.taskInbox(t);case"task/queue":return this.#e.taskQueue(t);case"task/inputUpdate":return this.#e.taskInputUpdate(t);case"turn/interrupt":return this.#e.turnInterrupt(t);case"approval/resolve":return this.#e.approvalResolve(t);case"userInput/resolve":return this.#e.userInputResolve(t);case"profile/workflows":return this.#e.profileWorkflows(t);case"profile/evaluations":return this.#e.profileEvaluations(t);case"profile/trainingSource":return this.#e.profileTrainingSource(t);case"profile/evaluations/prepare":return this.#e.profileEvaluationPrepare(t);case"profile/evaluations/run":return this.#e.profileEvaluationRun(t);case"profile/evaluations/runSuite":return this.#e.profileEvaluationRunSuite(t);case"profile/evaluations/executeCase":return this.#e.profileEvaluationExecuteCase(t);case"profile/evaluations/executeRun":return this.#e.profileEvaluationExecuteRun(t);case"profile/evaluations/compare":return this.#e.profileEvaluationCompare(t);case"profile/evaluations/report":return this.#e.profileEvaluationReport(t);case"harness/inspect":return this.#e.harnessInspect(t);case"harness/proposalReview":return this.#e.harnessProposalReview(t);case"harness/review":return this.#e.harnessReview(t);case"harness/acceptEvaluationReview":return this.#e.harnessAcceptEvaluationReview(t);case"harness/materializeEvaluationTaskset":return this.#e.harnessMaterializeEvaluationTaskset(t);case"harness/runEvaluationBaseline":return this.#e.harnessRunEvaluationBaseline(t);case"harness/validate":return this.#e.harnessValidate(t);case"harness/backgroundReview":return this.#e.harnessBackgroundReview(t);case"harness/diff":return this.#e.harnessDiff(t);case"harness/rollback":return this.#e.harnessRollback(t);case"refiner/inspect":return this.#e.refinerInspect(t);case"refiner/update":return this.#e.refinerUpdate(t);case"refiner/activate":return this.#e.refinerActivate(t);case"refiner/rollback":return this.#e.refinerRollback(t);default:throw new ct(-32601,`Method not found: ${e}`)}}},ct=class extends Error{static{l(this,"JsonRpcDispatchError")}code;data;constructor(e,t,r){super(t),this.code=e,this.data=r}};function Bd(a,e,t,r){return{jsonrpc:"2.0",id:a,error:{code:e,message:t,...r===void 0?{}:{data:r}}}}l(Bd,"jsonRpcError");var A=o.string().trim().min(1).max(200),es=o.string().trim().min(1).max(32e3),Da=o.number().int().nonnegative(),$d=o.object({id:A,sessionId:A,senderSessionId:A.nullable(),senderKind:o.enum(["user","task","runtime"]),kind:o.enum(["steer","message","followup","queued","result"]),body:es,payload:o.record(o.string(),o.unknown()),idempotencyKey:A,replyTo:A.nullable(),expectedTurnId:A.nullable()}).strict(),ap=o.discriminatedUnion("action",[o.object({action:o.literal("resume"),expectedRevision:o.number().int().positive()}).strict(),o.object({action:o.literal("cancel"),expectedRevision:o.number().int().positive()}).strict(),o.object({action:o.literal("edit"),expectedRevision:o.number().int().positive(),body:es}).strict(),o.object({action:o.literal("steer"),expectedRevision:o.number().int().positive(),expectedTurnId:A}).strict()]),Yd=o.object({id:A,sessionId:A,turnId:A,targetSessionId:A.nullable(),targetTurnId:A.nullable(),targetInputId:A.nullable(),afterSequence:Da,deadline:o.string(),state:o.enum(["waiting","message","completed","failed","interrupted","unavailable","timeout","cancelled"]),createdAt:o.string(),updatedAt:o.string()}).strict(),Vd=o.record(o.string(),o.unknown()),rp=o.enum(["queued","running","completed","failed","cancelled","needs_resume"]),sp=o.object({parentSessionId:A.nullable().optional(),childSessionId:A.nullable().optional(),status:o.array(rp).nullable().optional(),afterId:o.string().max(200),limit:o.number().int().min(1).max(10)}).strict(),Jd=o.discriminatedUnion("action",[o.object({action:o.literal("recoverTaskInboxOwners"),ownerId:A}).strict(),o.object({action:o.literal("hasTaskCompletion"),turnId:A}).strict(),o.object({action:o.literal("taskInboxSnapshot"),sessionId:A}).strict(),o.object({action:o.literal("taskInboxSnapshotInputs"),sessionId:A,afterSequence:Da}).strict(),o.object({action:o.literal("declareTaskWork"),sessionId:A,turnId:A,ownerId:A,areas:o.array(es).max(100)}).strict(),o.object({action:o.literal("taskWorkAreas"),sessionId:A}).strict(),o.object({action:o.literal("admitTaskInput"),input:$d}).strict(),o.object({action:o.literal("admitTaskInputs"),inputs:o.array($d).max(50)}).strict(),o.object({action:o.literal("rejectTaskInput"),id:A,error:es}).strict(),o.object({action:o.literal("getTaskInput"),id:A}).strict(),o.object({action:o.literal("taskInputsForSession"),sessionId:A,query:o.object({afterSequence:Da.optional(),pendingOnly:o.boolean().optional(),limit:o.number().int().min(1).max(500).optional()}).strict()}).strict(),o.object({action:o.literal("mutateTaskInput"),sessionId:A,inputId:A,change:ap}).strict(),o.object({action:o.literal("openTaskInboxTurn"),sessionId:A,turnId:A,ownerId:A}).strict(),o.object({action:o.literal("renewTaskInboxTurn"),sessionId:A,turnId:A,ownerId:A}).strict(),o.object({action:o.literal("pendingTaskInputs"),sessionId:A,turnId:A,afterSequence:Da}).strict(),o.object({action:o.literal("taskAssignmentInputs"),turnId:A,afterSequence:Da}).strict(),o.object({action:o.literal("pauseTaskInboxTurn"),sessionId:A,turnId:A,ownerId:A}).strict(),o.object({action:o.literal("includeTaskInputs"),sessionId:A,turnId:A,ownerId:A,requestId:A}).strict(),o.object({action:o.literal("settleTaskInputRequest"),requestId:A,outcome:o.enum(["resolved","failed","replaced"])}).strict(),o.object({action:o.literal("sealTaskInboxTurn"),sessionId:A,turnId:A,ownerId:A}).strict(),o.object({action:o.literal("sealNativeTaskInboxTurn"),sessionId:A,turnId:A,ownerId:A}).strict(),o.object({action:o.literal("closeTaskInboxTurn"),sessionId:A,turnId:A,ownerId:A,outcome:o.enum(["completed","failed","interrupted"])}).strict(),o.object({action:o.literal("taskInboxPaused"),sessionId:A}).strict(),o.object({action:o.literal("reserveTaskFollowup"),sessionId:A,turnId:A,ownerId:A}).strict(),o.object({action:o.literal("taskInboxWakeTargets"),afterSessionId:o.string().max(200)}).strict(),o.object({action:o.literal("createTaskWait"),value:Yd}).strict(),o.object({action:o.literal("settleTaskWait"),id:A,state:Yd.shape.state}).strict(),o.object({action:o.literal("taskWaitsForSession"),sessionId:A,afterId:o.string().max(200)}).strict(),o.object({action:o.literal("commitSubagentCompletion"),value:Vd,turnId:A}).strict(),o.object({action:o.literal("pendingTaskCompletions"),afterTurnId:o.string().max(200)}).strict(),o.object({action:o.literal("settleTaskCompletion"),turnId:A,inputId:A}).strict(),o.object({action:o.literal("upsertSubagentRun"),value:Vd}).strict(),o.object({action:o.literal("getSubagentRun"),id:A}).strict(),o.object({action:o.literal("listSubagentRuns"),query:sp}).strict()]);var ts=o.string().trim().min(1).max(191),Kd=o.object({createdAt:o.string().min(1),id:ts}).strict(),zd=o.enum(["trigger_decision","route_decision","refiner_outcome","proposal","targeted_validation","apply_receipt"]),Gd=o.discriminatedUnion("action",[o.object({action:o.literal("put_artifact"),workspaceId:ts,kind:zd,artifact:o.record(o.string(),o.unknown())}).strict(),o.object({action:o.literal("artifact_page"),workspaceId:ts,kind:zd,before:Kd.nullable(),limit:o.number().int().min(1).max(200)}).strict(),o.object({action:o.literal("pending_trigger_page"),workspaceId:ts,before:Kd.nullable(),limit:o.number().int().min(1).max(200)}).strict()]);var Ve=o.string().trim().min(1).max(200),Qd=o.string().regex(/^[a-f0-9]{64}$/),ip=o.object({kind:o.enum(["structural","visual","test","user_review"]),status:o.enum(["passed","failed","not_run"]),label:o.string().trim().min(1).max(240),detail:o.string().trim().max(4e3).nullable().optional(),ref:o.string().trim().max(4096).nullable().optional()}),Zd=o.object({id:Ve,title:o.string().trim().min(1).max(240),sourceTaskId:Ve,sourceTurnId:Ve,revision:o.number().int().positive(),createdAt:o.string().datetime(),contentType:o.string().trim().min(1).max(200),sizeBytes:o.number().int().min(1).max(1e7),sha256:Qd,validation:o.array(ip).max(32)}).strict(),ec=o.object({sessionId:Ve,turnId:Ve,output:Zd}).strict(),tc=o.object({uploadId:Ve,index:o.number().int().min(0).max(1024),offset:o.number().int().min(0).max(1e7),sha256:Qd,contentsBase64:o.string().min(1).max(131072)}).strict(),ac=o.object({uploadId:Ve}).strict(),np=Zd.pick({id:!0,title:!0,sourceTaskId:!0,sourceTurnId:!0,revision:!0,createdAt:!0,validation:!0}),rc=o.object({sessionId:Ve,turnId:Ve,output:np,sandboxPath:o.string().trim().min(1).max(4096)}).strict();var Xa=o.string().trim().min(1).max(200),op=o.object({type:o.enum(["create","get","start","stop","exec","open_port","list_files","download_file","upload_file","search_files","delete_file","stat_file","mkdir","move_file","process_start","process_get","git_status","git_diff","git_export_patch","git_branch","git_commit","git_pull","git_push"]),sandboxId:Xa.optional(),payload:o.unknown().optional(),processId:Xa.optional(),failOnUnpreservedChanges:o.boolean().optional()}).strict().superRefine((a,e)=>{a.type!=="create"&&!a.sandboxId&&e.addIssue({code:"custom",message:"Sandbox identity is required."}),a.type==="process_get"&&!a.processId&&e.addIssue({code:"custom",message:"Process identity is required."})}),sc=o.object({action:op}).strict(),ic=o.object({sessionId:Xa,turnId:Xa,name:Xa}).strict();var M=1,S=o.string().trim().min(1).max(191),lt=o.number().int().min(1).max(200),uh=o.object({teamId:S,ownerUserId:S,workspaceId:S,conversationId:S,turnId:S,attempt:o.number().int().min(1),leaseGeneration:o.number().int().min(1)}).strict(),nc=o.discriminatedUnion("operation",[o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("sandbox/request"),params:sc}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("embedding/authorize"),params:ic}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("output/begin"),params:ec}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("output/chunk"),params:tc}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("output/complete"),params:ac}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("output/saveSandboxFile"),params:rc}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("settings/get"),params:o.object({}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/get"),params:o.object({reference:o.object({id:S,contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().nullable()}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/overlay/get"),params:o.object({runId:S}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/overlay/put"),params:o.object({runId:S,expectedRevision:o.number().int().min(0).nullable(),overlay:o.record(o.string(),o.unknown())}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/overlay/freezeProposal"),params:o.object({runId:S,expectedRevision:o.number().int().min(0),overlay:o.record(o.string(),o.unknown()),proposal:o.record(o.string(),o.unknown())}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/memory/get"),params:o.object({workspaceId:S,key:o.string().min(1).max(120)}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/memory/list"),params:o.object({workspaceId:S,includeDeleted:o.boolean(),before:o.object({updatedAt:o.string(),key:o.string()}).strict().nullable(),limit:lt}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/memory/write"),params:o.object({input:o.record(o.string(),o.unknown())}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/state/read"),params:o.object({workspaceId:S,kind:o.enum(["selection","workspace_settings","evaluation_review_settings","candidates","cross_run_requests"]),afterId:S.nullable(),limit:o.number().int().min(1).max(100)}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("harness/workspace/transition"),params:o.discriminatedUnion("action",[o.object({action:o.literal("advance"),receiptId:S,workspaceId:S,proposal:o.record(o.string(),o.unknown()),validations:o.array(o.record(o.string(),o.unknown())).max(100),nextRelease:o.object({id:S,contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),nextSourceRevision:o.string().min(1),now:o.string()}).strict(),o.object({action:o.literal("reviewedAdvance"),receiptId:S,workspaceId:S,proposal:o.record(o.string(),o.unknown()),validations:o.array(o.record(o.string(),o.unknown())).max(100),nextRelease:o.object({id:S,contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),nextSourceRevision:o.string().min(1),reviewer:S,now:o.string()}).strict(),o.object({action:o.literal("rollback"),receiptId:S,workspaceId:S,expectedWorkspaceRevision:o.number().int().nonnegative(),expectedChannelRevision:o.number().int().nonnegative(),targetRelease:o.object({id:S,contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),targetSourceRevision:o.string().min(1),rollbackOf:o.object({id:S,contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),now:o.string()}).strict()])}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("task-inbox/execute"),params:Jd}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("refiner/execute"),params:o.object({action:Gd}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("create-improve/execute"),params:o.discriminatedUnion("action",[o.object({action:o.literal("get"),runId:S}).strict(),o.object({action:o.literal("page"),query:o.object({profileId:S.nullable(),targetKind:S.nullable(),targetId:S.nullable(),state:o.array(S).max(20)}).strict(),before:o.object({updatedAt:o.string(),id:S}).strict().nullable(),limit:lt}).strict(),o.object({action:o.literal("put"),run:o.record(o.string(),o.unknown())}).strict(),o.object({action:o.literal("mutate"),mutation:o.record(o.string(),o.unknown()),next:o.record(o.string(),o.unknown())}).strict()])}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("approval/get"),params:o.object({approvalId:S}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("approval/upsert"),params:o.object({approval:o.record(o.string(),o.unknown()),expectedRevision:o.number().int().min(1).nullable()}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("usage/getByRequestId"),params:o.object({requestId:S}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("usage/upsert"),params:o.object({record:o.record(o.string(),o.unknown())}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("usage/page"),params:o.object({query:o.object({sessionId:S.optional(),turnId:S.optional(),provider:S.optional(),model:S.optional(),startedAtFrom:o.string().optional(),startedAtTo:o.string().optional(),visibility:o.enum(["user_facing","background","system"]).optional(),status:o.enum(["started","completed","failed","interrupted","missing"]).optional()}).strict(),before:o.object({startedAt:o.string(),requestOrdinal:o.number().int().min(0),id:S}).strict().nullable(),limit:lt}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("capabilities"),params:o.object({}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("session/count"),params:o.object({}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("session/get"),params:o.object({sessionId:S}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("session/page"),params:o.object({afterId:S.nullable(),limit:lt}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("session/put"),params:o.object({sessionId:S,expectedRevision:o.number().int().min(1).nullable(),session:o.record(o.string(),o.unknown())}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("turn/count"),params:o.object({sessionId:S}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("turn/wakeCount"),params:o.object({sessionId:S,key:o.enum(["messageId","fromRunId"]),value:S}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("turn/get"),params:o.object({turnId:S}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("turn/put"),params:o.object({sessionId:S,turnId:S,expectedRevision:o.number().int().min(1).nullable(),turn:o.record(o.string(),o.unknown())}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("turn/latest"),params:o.object({sessionId:S,status:o.enum(["in_progress","completed","failed","interrupted"]).nullable()}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("turn/page"),params:o.object({sessionId:S,beforeSortIndex:o.number().int().min(0).nullable().optional(),limit:lt}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("thread/turnPage"),params:o.object({sessionId:S,beforeSortIndex:o.number().int().min(0).nullable().optional(),limit:lt}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("event/append"),params:o.object({event:o.record(o.string(),o.unknown())}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("events/page"),params:o.object({sessionId:S.nullable(),afterSequence:o.number().int().min(0),beforeSequence:o.number().int().min(1).nullable().optional(),limit:lt}).strict()}).strict(),o.object({contractVersion:o.literal(M),requestId:S,operation:o.literal("events/latestAssistantText"),params:o.object({sessionId:S}).strict()}).strict()]),ph=o.object({contractVersion:o.literal(M),operations:o.array(o.enum(["sandbox/request","embedding/authorize","output/begin","output/chunk","output/complete","output/saveSandboxFile","settings/get","harness/get","harness/overlay/get","harness/overlay/put","harness/overlay/freezeProposal","harness/memory/get","harness/memory/list","harness/memory/write","harness/state/read","harness/workspace/transition","task-inbox/execute","refiner/execute","create-improve/execute","approval/get","approval/upsert","usage/getByRequestId","usage/upsert","usage/page","session/count","session/get","session/page","session/put","turn/count","turn/wakeCount","turn/get","turn/put","turn/latest","turn/page","thread/turnPage","event/append","events/page","events/latestAssistantText"])).max(40),allowedTools:o.array(S).max(128),maxPageSize:lt,maxRequestBytes:o.number().int().min(1).max(1e6),maxInFlight:o.number().int().min(1).max(64)}).strict();var oc=class{static{l(this,"AgentHostStorageClient")}#e=new Map;#a=null;#t=1;bind(e){if(this.#a)throw new Error("Host storage client is already bound.");this.#a=e}async request(e,t=15e3){let r=nc.parse(e);if(!this.#a)throw new Error("Host storage transport is unavailable.");if(this.#e.size>=32)throw new Error("Host storage request limit exceeded.");let s=`host-storage:${this.#t++}`,i={jsonrpc:"2.0",id:s,method:"host/storage",params:r};if(Buffer.byteLength(JSON.stringify(i))>256e3)throw new Error("Host storage request is too large.");let n=new Promise((d,c)=>{let p=setTimeout(()=>{this.#e.delete(s),c(new Error("Host storage request timed out."))},Math.max(1,Math.min(6e4,t)));this.#e.set(s,{resolve:d,reject:c,timer:p})});try{await this.#a(i)}catch(d){let c=this.#e.get(s);c&&(clearTimeout(c.timer),this.#e.delete(s),c.reject(d instanceof Error?d:new Error(String(d))))}return n}accept(e){let t=Ni.safeParse(e),r=t.success?null:Ii.safeParse(e),s=t.success?t.data:r?.success?r.data:null;if(!s||typeof s.id!="string"||!s.id.startsWith("host-storage:"))return!1;let i=this.#e.get(s.id);return i?(clearTimeout(i.timer),this.#e.delete(s.id),Buffer.byteLength(JSON.stringify(s))>1e6?(i.reject(new Error("Host storage response is too large.")),!0):("error"in s?i.reject(new Error(`Host storage request failed: ${s.error.message}`)):i.resolve(s.result),!0)):!0}close(){this.#a=null;for(let e of this.#e.values())clearTimeout(e.timer),e.reject(new Error("Host storage transport closed."));this.#e.clear()}};import{createHash as dp}from"node:crypto";function Oi(a){if(a===null||typeof a=="boolean"||typeof a=="string")return a;if(typeof a=="number"){if(!Number.isFinite(a))throw new Error("Canonical JSON cannot encode a non-finite number.");return a}if(Array.isArray(a))return a.map(Oi);if(typeof a=="object"){let e={};for(let t of Object.keys(a).sort()){let r=a[t];r!==void 0&&(e[t]=Oi(r))}return e}throw new Error(`Canonical JSON cannot encode ${typeof a}.`)}l(Oi,"canonicalJson");function Zt(a){return dp("sha256").update(JSON.stringify(Oi(a)),"utf8").digest("hex")}l(Zt,"canonicalHash");var cp=o.enum(["thread.started","thread.resumed","turn.started","turn.steered","turn.interrupted","turn.completed","turn.failed","item.started","item.delta","item.completed","assistant.reasoning.delta","assistant.delta","tool.started","tool.completed","approval.requested","approval.resolved","user_input.requested","user_input.resolved","compaction.started","compaction.completed","harness.admitted","harness.refiner.queued","harness.refiner.started","harness.refiner.completed","harness.refiner.failed","diagnostic"]),lp=o.object({sequence:o.number().int().nonnegative(),name:cp,source:o.enum(["runtime","provider","tool","host","refiner"]),status:o.string().trim().min(1).nullable().default(null),threadId:o.string().trim().min(1),turnId:o.string().trim().min(1).nullable().default(null),callId:o.string().trim().min(1).nullable().default(null),output:o.string().nullable().default(null),error:o.string().nullable().default(null),data:o.record(o.string(),o.unknown()).default({})}).strict();function vh(a){return Zt(lp.parse(a))}l(vh,"canonicalEventHash");import{once as up}from"node:events";import{createInterface as pp}from"node:readline";async function dc(a){let e=null,t=Promise.resolve(),r=[],s=l(T=>(t=t.then(async()=>{a.writable.write(`${JSON.stringify(T)}
3
- `)||await up(a.writable,"drain")}),t),"write");a.hostStorageClient?.bind(T=>s(T));let i=l(()=>{if(!(!e?.initialized||r.length===0))for(let T of r.splice(0))s(T)},"flushPendingNotifications"),n,d=new Set,c=pp({input:a.readable,crlfDelay:1/0}),p=[],u=!1,m=null,f=l(async T=>{let E=e;if(!E)throw new Error("Agent runtime dispatcher is unavailable.");let g=(async()=>{let y=await E.handle(T);y&&await s(y),i()})(),w=T&&typeof T=="object"&&"method"in T?T.method:null;if(w==="initialize"||w==="initialized"){await g;return}d.add(g),g.finally(()=>d.delete(g))},"dispatch"),h=(async()=>{let T=typeof a.host=="function"?await a.host():a.host;for(e=new Zr(T),n=T.subscribe?.(E=>{if(!e?.initialized){r.push(E);return}s(E)});p.length>0;)await f(p.shift());u=!0})().catch(T=>{m=T,c.close()});try{for await(let T of c){if(!T.trim())continue;if(Buffer.byteLength(T,"utf8")>1e6){await s({jsonrpc:"2.0",id:null,error:{code:-32600,message:"Request exceeds the JSONL size limit"}});continue}let E;try{E=JSON.parse(T)}catch{await s({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}});continue}if(!a.hostStorageClient?.accept(E))if(u)await f(E);else if(p.length>=64){let g=E&&typeof E=="object"&&"id"in E?E.id:null;(typeof g=="string"||typeof g=="number")&&await s({jsonrpc:"2.0",id:g,error:{code:-32e3,message:"Runtime startup request limit exceeded"}})}else p.push(E)}if(await h,m)throw m;await Promise.all(d),await t}finally{a.hostStorageClient?.close(),n?.()}}l(dc,"runAgentJsonlServer");var as=o.object({threadId:o.string().trim().min(1)}).passthrough(),mp=o.object({session:o.unknown()}).strict(),Ua=as.extend({input:o.unknown()}),fp=Ua.extend({idempotencyKey:o.string().trim().min(1).max(200)}),hp=Ua.extend({inputId:o.string().trim().min(1)}),Tp=as.extend({reason:o.string().trim().min(1).optional()}),Ep=o.object({approvalId:o.string().trim().min(1),input:o.unknown()}).strict();function cc(a){let e=l(async(r,s,i)=>{let n=performance.now();a.telemetry?.({method:r,phase:"started",threadId:s,durationMs:null,errorClass:null});try{let d=await i();return a.telemetry?.({method:r,phase:"completed",threadId:s,durationMs:performance.now()-n,errorClass:null}),d}catch(d){throw a.telemetry?.({method:r,phase:"failed",threadId:s,durationMs:performance.now()-n,errorClass:d instanceof Error?d.name:"UnknownError"}),d}},"run"),t=l(async(r,s="thread/read")=>{let{threadId:i}=as.parse(r);return e(s,i,async()=>{let[n,d,c]=await Promise.all([a.readThread(i),a.listTurns(i),a.listEvents(i)]);return{thread:n,turns:d,events:c}})},"threadRead");return{capabilities:l(r=>e("runtime/capabilities",null,()=>a.capabilities(r)),"capabilities"),threadStart:l(async r=>e("thread/start",null,async()=>({thread:await a.createThread(mp.parse(r).session)})),"threadStart"),threadResume:l(r=>t(r,"thread/resume"),"threadResume"),threadRead:t,turnStart:l(async r=>{let s=Ua.parse(r);return e("turn/start",s.threadId,async()=>({turn:await a.startTurn(s.threadId,s.input)}))},"turnStart"),turnSteer:l(async r=>{let s=Ua.parse(r);return e("turn/steer",s.threadId,async()=>({receipt:await a.steerTurn(s.threadId,s.input)}))},"turnSteer"),taskInbox:l(async r=>{let{threadId:s}=as.parse(r);return e("task/inbox",s,()=>a.readTaskInbox(s))},"taskInbox"),taskQueue:l(async r=>{let s=fp.parse(r);return e("task/queue",s.threadId,()=>a.queueTaskInput(s.threadId,s.input,s.idempotencyKey))},"taskQueue"),taskInputUpdate:l(async r=>{let s=hp.parse(r);return e("task/inputUpdate",s.threadId,()=>a.updateTaskInput(s.threadId,s.inputId,s.input))},"taskInputUpdate"),turnInterrupt:l(async r=>{let s=Tp.parse(r);return e("turn/interrupt",s.threadId,async()=>({turn:await a.interruptTurn(s.threadId,s.reason)}))},"turnInterrupt"),approvalResolve:l(async r=>{let s=Ep.parse(r);return e("approval/resolve",null,async()=>({approval:await a.resolveApproval(s.approvalId,s.input)}))},"approvalResolve"),userInputResolve:l(async r=>{let s=Ua.parse(r);return e("userInput/resolve",s.threadId,async()=>(a.isTurnActive(s.threadId)&&await a.waitForTurnSettlement(s.threadId),{turn:await a.startTurn(s.threadId,s.input)}))},"userInputResolve"),profileWorkflows:l(()=>e("profile/workflows",null,()=>a.listProfileWorkflows()),"profileWorkflows"),profileEvaluations:l(r=>e("profile/evaluations",null,()=>a.listProfileEvaluations(r)),"profileEvaluations"),profileTrainingSource:l(()=>e("profile/trainingSource",null,()=>a.loadProfileTrainingSource()),"profileTrainingSource"),profileEvaluationPrepare:l(r=>e("profile/evaluations/prepare",null,()=>a.prepareProfileEvaluationRun(r)),"profileEvaluationPrepare"),profileEvaluationRun:l(r=>e("profile/evaluations/run",null,()=>a.runPreparedProfileEvaluation(r)),"profileEvaluationRun"),profileEvaluationRunSuite:l(r=>e("profile/evaluations/runSuite",null,()=>a.runProfileEvaluationSuite(r)),"profileEvaluationRunSuite"),profileEvaluationExecuteCase:l(r=>e("profile/evaluations/executeCase",null,()=>a.executeProfileEvaluationCase(r)),"profileEvaluationExecuteCase"),profileEvaluationExecuteRun:l(r=>e("profile/evaluations/executeRun",null,()=>a.executeProfileEvaluationRun(r)),"profileEvaluationExecuteRun"),profileEvaluationCompare:l(r=>e("profile/evaluations/compare",null,()=>a.compareProfileEvaluationRuns(r)),"profileEvaluationCompare"),profileEvaluationReport:l(r=>e("profile/evaluations/report",null,()=>a.buildProfileEvaluationReport(r)),"profileEvaluationReport"),harnessInspect:l(()=>e("harness/inspect",null,()=>a.inspectHarness()),"harnessInspect"),harnessProposalReview:l(r=>e("harness/proposalReview",null,()=>a.reviewHarnessProposal(r)),"harnessProposalReview"),harnessReview:l(r=>e("harness/review",null,()=>a.reviewHarness(r)),"harnessReview"),harnessAcceptEvaluationReview:l(r=>e("harness/acceptEvaluationReview",null,()=>a.acceptHarnessEvaluationReview(r)),"harnessAcceptEvaluationReview"),harnessMaterializeEvaluationTaskset:l(r=>e("harness/materializeEvaluationTaskset",null,()=>a.materializeHarnessEvaluationTaskset(r)),"harnessMaterializeEvaluationTaskset"),harnessRunEvaluationBaseline:l(r=>e("harness/runEvaluationBaseline",null,()=>a.runHarnessEvaluationBaseline(r)),"harnessRunEvaluationBaseline"),harnessValidate:l(()=>e("harness/validate",null,()=>a.validateHarness()),"harnessValidate"),harnessBackgroundReview:l(r=>e("harness/backgroundReview",null,()=>a.updateHarnessBackgroundReview(r)),"harnessBackgroundReview"),harnessDiff:l(r=>e("harness/diff",null,()=>a.diffHarness(r)),"harnessDiff"),harnessRollback:l(r=>e("harness/rollback",null,()=>a.rollbackHarness(r)),"harnessRollback"),refinerInspect:l(()=>e("refiner/inspect",null,()=>a.inspectRefiner()),"refinerInspect"),refinerUpdate:l(r=>e("refiner/update",null,()=>a.updateRefiner(r)),"refinerUpdate"),refinerActivate:l(r=>e("refiner/activate",null,()=>a.activateRefiner(r)),"refinerActivate"),refinerRollback:l(r=>e("refiner/rollback",null,()=>a.rollbackRefiner(r)),"refinerRollback"),subscribe:a.subscribeEvents&&a.eventNotification?r=>a.subscribeEvents(s=>r(a.eventNotification(s))):void 0}}l(cc,"createAgentRuntimeService");var Nt=o.string().regex(/^[a-f0-9]{64}$/),Wh=o.object({harnessReleaseHash:Nt,instructionsHash:Nt,skillHashes:o.record(o.string(),Nt),agentAssetHashes:o.record(o.string(),Nt),toolCatalogHash:Nt,memoryRevision:o.number().int().nonnegative().nullable()}).strict(),_p=o.object({protocolVersion:o.string().trim().min(1),threadId:o.string().trim().min(1),turnId:o.string().trim().min(1),harnessReleaseHash:Nt,toolCatalogHash:Nt,context:o.record(o.string(),o.unknown()),pendingInteraction:o.record(o.string(),o.unknown()).nullable(),usage:o.record(o.string(),o.unknown())}).strict();function $h(a){return Zt(_p.parse(a))}l($h,"checkpointHash");function Yh(a){return[a.system,...a.harnessInstructions,...a.skillInstructions,...a.hostInstructions??[]].map(e=>e.trim()).filter(Boolean).join(`
4
-
5
- `)}l(Yh,"materializeAgentPrompt");function zh(a){let e=new Set,t=[...a].map(i=>{let n=i.name.trim();if(!n)throw new Error("Agent tool names cannot be empty.");if(e.has(n))throw new Error(`Duplicate agent tool: ${n}.`);if(e.add(n),!i.unavailableReason&&!i.executorAvailable)throw new Error(`Agent tool ${n} is declared as available without an executor.`);return{...i,name:n}}).sort((i,n)=>i.name.localeCompare(n.name)),r=t.filter(i=>!i.unavailableReason).map(i=>({name:i.name,description:i.description,inputSchema:i.inputSchema})),s=t.map(i=>({name:i.name,displayLabel:i.displayLabel??i.name,placement:i.placement,available:!i.unavailableReason,unavailableReason:i.unavailableReason??null}));return{byName:new Map(t.map(i=>[i.name,i])),tools:t,modelTools:r,capabilities:s,hash:Zt({modelTools:r,capabilities:s})}}l(zh,"createAgentToolCatalogProjection");async function Gh(a,e){let t=a.byName.get(e.name);if(!t)throw new Error(`Unknown agent tool: ${e.name}.`);if(t.unavailableReason)throw new Error(`Agent tool ${e.name} is unavailable: ${t.unavailableReason}`);if(!t.execute)throw new Error(`Agent tool ${e.name} has no executor.`);let r=t.validateArguments?t.validateArguments(e.arguments):e.arguments;return t.execute(r,e.context)}l(Gh,"executeProjectedAgentTool");var lc=class{static{l(this,"TaskSignals")}#e=new Map;notify(e){for(let t of[...this.#e.get(e)??[]])t()}subscribe(e,t){let r=this.#e.get(e);return r||this.#e.set(e,r=new Set),r.add(t),()=>{r.delete(t),r.size===0&&this.#e.delete(e)}}async wait(e){let t=l(()=>{},"wake"),r=0,s=l(()=>{r+=1,t()},"changed"),i=[...new Set(e.taskIds)].map(d=>this.subscribe(d,s)),n=setTimeout(s,Math.max(0,e.deadline-Date.now()));e.signal.addEventListener("abort",s);try{for(;;){e.signal.throwIfAborted();let d=r,c=await e.read();if(c!==null)return c;if(Date.now()>=e.deadline)return null;r===d&&await new Promise(p=>{t=p,(r!==d||e.signal.aborted)&&p()})}}finally{clearTimeout(n),e.signal.removeEventListener("abort",s);for(let d of i)d()}}},uc=class{static{l(this,"TaskSerialExecutor")}#e=new Map;async run(e,t){let s=(this.#e.get(e)??Promise.resolve()).then(t),i=s.then(()=>{},()=>{});this.#e.set(e,i);try{return await s}finally{this.#e.get(e)===i&&this.#e.delete(e)}}};async function rs(a,e,t){let r=await D(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new be("iteration",r.id,e.expectedRevision,r.revision);let s=await D(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 I("learning_execution_cancellation_required",409);let i=Ft.parse({...r,revision:r.revision+1,status:"cancelled",updatedAt:t}),n=Mr.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 D(a,"chain",s.chainId);return d.activeIterationId===r.id&&await a.put("chain",Hr.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}]}l(rs,"cancelLearningIterationReservation");async function pc(a,e,t){let r=await D(a,"iteration",e.iterationId);if(r.revision!==e.expectedRevision)throw new be("iteration",r.id,e.expectedRevision,r.revision);let s=await a.get("dispatch",r.dispatchId);if(e.action==="cancel_iteration"&&!s)return rs(a,{...e,action:"cancel_iteration_reservation"},t);if(!s)throw new I("learning_dispatch_not_started",409);if(s.state==="settled")throw new I("learning_execution_already_terminal",409);if(e.action==="retry_iteration_dispatch"&&s.state!=="blocked")throw new I("learning_dispatch_not_blocked",409);let i=e.action==="cancel_iteration"||!!s.cancelRequestedAt,n=Ft.parse({...r,revision:r.revision+1,status:i?"cancelling":r.status,failure:null,updatedAt:t}),d=fo.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}]}l(pc,"commandLearningIterationDispatch");async function mc(a,e,t,r){let s=await U(a,"policy",e.policy),i=go(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]),c=`iteration-${R([i,d])}`,p=R({policy:e.policy,trigger:n}),u=await a.get("reservation",c);if(u){if(u.requestHash!==p)throw new I("learning_trigger_identity_conflict",409);return[{kind:"iteration",id:c,revision:(await D(a,"iteration",c)).revision},{kind:"reservation",id:c,revision:u.revision}]}let m=await D(a,"policy",s.id);if(!C(O(m),e.policy))throw new I("learning_policy_revision_stale",409);if(!s.enabled)throw new I("learning_policy_paused",409);if(s.automation.accept||s.automation.serve)throw new I("learning_automatic_acceptance_not_available",422);if(e.trigger.kind==="schedule"){if(!["schedule","nightly"].includes(s.trigger.kind)||!s.automation.train)throw new I("learning_schedule_not_enabled",409);if(Date.parse(e.trigger.scheduledAt)>Date.parse(r))throw new I("learning_schedule_not_due",409)}if(e.trigger.kind==="approved_count"){if(s.trigger.kind!=="approved_count"||!s.automation.train)throw new I("learning_count_trigger_not_enabled",409);if(Date.parse(e.trigger.checkedAt)>Date.parse(r))throw new I("learning_count_trigger_not_due",409)}let f=await a.get("chain",i);if(f?.activeIterationId)throw new I("learning_iteration_active",409,f.activeIterationId);if(f?.lastReservedAt&&Date.parse(r)-Date.parse(f.lastReservedAt)<s.limits.cooldownSeconds*1e3)throw new I("learning_iteration_cooldown",409);let h=await Ro(a,s),T=h.counts.eligible>=s.admission.minimumApprovedExamples;if(e.trigger.kind==="approved_count"&&!T)throw new I("learning_count_threshold_not_met",409);let E=T?"ready":h.counts.awaitingReview>0?"waiting_for_review":"waiting_for_data",g=[],w=await vo(a,i,!0),y=await ko(a,s,w),k=null;if(T){await gp(a,i,r,s.limits.maxIterationSpendUsd,s.limits.maxDailySpendUsd);let N=await Ur(a,{action:"seal_batch",operationId:e.operationId,batchId:`batch-${R(c)}`,taskDefinition:s.taskDefinition,purpose:h.purpose,evidence:h.selected.map(H=>O(H.evidence)),decisions:h.selected.map(H=>O(H.decision))},t,r);g.push(...N),k=O(await D(a,"batch",N[0].id));for(let H of h.selected){let $=po.parse({schemaVersion:"openpond.learningConsumption.v1",id:wo(i,H.evidence),revision:1,chainId:i,iterationId:c,evidence:O(H.evidence),decision:O(H.decision),reservedAt:r});await a.put("consumption",$,0,{parentId:i})}}let _=Ft.parse({schemaVersion:"openpond.learningIteration.v1",id:c,revision:1,policy:e.policy,status:E,triggerIdentity:d,batch:k,sourceWatermarks:{},...y,teacher:s.teacher,upstreamEvent:null,trainingJob:null,evaluationJob:null,candidateVersion:null,dispatchId:`dispatch-${R(c)}`,retryCount:0,spendUsd:0,failure:null,createdAt:r,updatedAt:r}),v=Mr.parse({schemaVersion:"openpond.learningIterationReservation.v1",id:c,revision:1,chainId:i,iterationId:c,policy:e.policy,trigger:n,requestHash:p,outcome:T?"reserved":E,counts:h.counts,budget:{maximumSpendUsd:T?s.limits.maxIterationSpendUsd:0,reservedSpendUsd:T?s.limits.maxIterationSpendUsd:0,settledSpendUsd:0,settledAt:T?null:r},createdAt:r,updatedAt:r}),x=Hr.parse({schemaVersion:"openpond.learningChain.v1",id:i,revision:(f?.revision??0)+1,modelProjectId:s.modelProjectId,activeIterationId:T?c:null,latestIterationId:c,acceptedParent:w,lastReservedAt:T?r:f?.lastReservedAt??null,updatedAt:r});return await a.put("iteration",_,0,{parentId:i,status:E}),await a.put("reservation",v,0,{parentId:i,status:v.outcome}),await a.put("chain",x,f?.revision??0,{parentId:s.modelProjectId}),[{kind:"iteration",id:c,revision:1},{kind:"reservation",id:c,revision:1},...g]}l(mc,"reserveLearningIteration");async function gp(a,e,t,r,s){if((await yo(a,e,t)).committedSpendUsd+r>s)throw new I("learning_daily_budget_exhausted",409)}l(gp,"assertAvailableBudget");function wp(a){return`schedule-${R(a)}`}l(wp,"learningScheduleId");async function fc(a,e,t){Oe(e);let r=await D(a,"policy",e.id);if(!C(O(r),O(e)))throw new I("learning_policy_revision_stale",409);let s=wp(e.id),i=await a.get("schedule",s);if(i&&C(i.policy,O(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,c=e.enabled&&e.automation.train&&(n!==null||d!==null),p=i?await U(a,"policy",i.policy):null,u=i?.nextRunAt&&i.intervalSeconds===n&&JSON.stringify(i.calendar)===JSON.stringify(d)&&p?.trigger.kind===e.trigger.kind&&i.executionOwner===e.executionOwner,m=ho.parse({schemaVersion:"openpond.learningSchedule.v1",id:s,revision:(i?.revision??0)+1,policy:O(e),modelProjectId:e.modelProjectId,executionOwner:e.executionOwner,state:c?"scheduled":"disabled",intervalSeconds:n,calendar:d,nextRunAt:c?u?i.nextRunAt:d?ro(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",m,i?.revision??0,{parentId:e.modelProjectId,status:m.state}),m}l(fc,"synchronizeLearningSchedule");async function hc(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 I("authoring_draft_identity_conflict",409);if(e.draft.baseRelease){if(e.draft.baseRelease.id!==e.draft.targetId)throw new I("authoring_draft_base_mismatch",422);await U(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 U(a,"evidence",n);let c=await D(a,"feedback",d.id,d.revision);if(!c.evidence||!C(c.evidence,n))throw new I("reward_fixture_label_mismatch",422)}let s=Dr.parse(W({...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}}l(hc,"saveAuthoringDraft");async function Tc(a,e,t){let r=await ea(a,e),{contentHash:s,...i}=r,n=Dr.parse(W({...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}}l(Tc,"archiveAuthoringDraft");async function bi(a,e,t,r){let s=e.finalizeDraft;if(!s)return null;let i=await ea(a,s.draft);if(i.targetKind!==s.targetKind||i.targetId!==s.release.id||s.release.revision!==(i.baseRelease?.revision??0)+1||!t.some(p=>p.kind===s.targetKind&&p.id===s.release.id&&p.revision===s.release.revision))throw new I("authoring_draft_publication_mismatch",422);await U(a,s.targetKind,s.release);let{contentHash:n,...d}=i,c=Dr.parse(W({...d,revision:i.revision+1,status:"published",publishedRelease:s.release,updatedAt:r}));return await a.put("draft",c,i.revision,{parentId:i.targetKind,status:c.status}),{kind:"draft",id:c.id,revision:c.revision}}l(bi,"finalizeAuthoringDraft");async function ea(a,e){let t=await U(a,"draft",e),r=await a.get("draft",e.id);if(!r||!C(O(r),e))throw new I("authoring_draft_revision_stale",409);if(t.status!=="draft")throw new I("authoring_draft_closed",409);return t}l(ea,"currentDraft");function Li(a,e,t){let r=jt(a,e),s=r.reward.implementation;if(s.kind!=="model_judge"||!s.model)throw new I("reward_calibration_model_required",422);if(!C(t.draft,O(a))||!C(t.reward,O(r.reward))||t.snapshotHash!==r.snapshotHash||R(t.fixtureRefs)!==R(r.fixtureRefs))throw new I("reward_calibration_snapshot_mismatch",422);if(t.status!=="completed"||!t.runtime||t.matchesExpectations!==!0||t.failure||t.results.length!==r.fixtures.length)throw new I("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 I("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 c=t.results.filter(f=>f.fixture.id===d.id),p=c[0];if(c.length!==1||!p||p.fixture.contentHash!==R(d)||!C(p.result.reward,t.reward)||!Xr(d,p.result).matchesExpectation)throw new I("reward_calibration_fixture_mismatch",422);if(d.expected.status!=="scored")continue;let u=p.result.graderEvidence?.modelJudgeReceipt,m=t.judgeCalls?.find(f=>f.id===`fixture-${R([d,r.reward.contentHash])}`);if(!u||u.providerId!==s.model.providerId||u.modelId!==s.model.modelId||s.model.revision!==null&&u.modelRevision!==s.model.revision||m?.status!=="settled"||!m.response||m.requestHash!==u.requestHash||R(m.response)!==u.responseHash)throw new I("reward_calibration_provider_receipt_mismatch",422)}let{contentHash:i,...n}=r.reward;return{...r,reward:Ir({...n,implementation:{...s,calibrationStatus:"passed"},calibrationCheckRef:{id:t.id,revision:t.revision,contentHash:R(t)}})}}l(Li,"qualifyRewardCheck");async function Ec(a,e){if(e.implementation.kind!=="model_judge"||e.implementation.calibrationStatus!=="passed"){if(e.calibrationCheckRef)throw new I("reward_calibration_reference_invalid",422);return}let t=e.calibrationCheckRef;if(!t)throw new I("reward_calibration_check_required",422);let r=await D(a,"reward_check",t.id,t.revision);if(R(r)!==t.contentHash)throw new I("reward_calibration_check_changed",422);let s=await U(a,"draft",r.draft);if(s.targetKind!=="reward")throw new I("reward_calibration_draft_kind_invalid",422);let i=s.baseRelease?await U(a,"reward",s.baseRelease):null,n=Li(s,i,r).reward,d=l(c=>R([c.implementation,c.rawScore,c.assets,c.fixtureSetRef??null]),"scoring");if(e.id!==n.id||d(e)!==d(n))throw new I("reward_calibration_configuration_changed",422)}l(Ec,"assertRewardCalibration");async function _c(a,e,t,r,s){let i=await ea(a,e.draft);if(i.targetKind!=="reward")throw new I("reward_check_draft_kind_invalid",422);let n=i.baseRelease?await U(a,"reward",i.baseRelease):null,d=jt(i,n),c=$e.parse({schemaVersion:"openpond.rewardCheckRun.v1",id:`reward-check-${t}`,revision:1,draft:O(i),reward:O(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",c,0,{parentId:i.targetId,status:c.status}),{kind:"reward_check",id:c.id,revision:c.revision}}l(_c,"queueRewardCheck");async function gc(a,e,t){let r=await D(a,"reward_check",e.checkId);if(r.revision!==e.expectedRevision)throw new be("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=$e.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}}l(gc,"cancelRewardCheck");async function wc(a,e,t,r){let s=xo(e);if(s.contentHash!==e.expectedPreviewHash)throw new I("task_intake_preview_changed",409);if(new Set(e.recordIds).size!==e.recordIds.length)throw new I("task_intake_duplicate_selection",422);let i=e.recordIds.map(u=>{let m=s.records.find(f=>f.id===u);if(!m)throw new I("task_intake_record_missing",422,"Choose only valid records from the current preview.");return m}),n=`intake-${s.contentHash}`,d=[];for(let u of e.files){let m=0,f=0;do{let h=Math.min(m+131072,u.text.length);h<u.text.length&&u.text.charCodeAt(h-1)>=55296&&u.text.charCodeAt(h-1)<=56319&&h--;let T=oo({text:u.text.slice(m,h),path:`${n}/${u.path}.part-${String(f++).padStart(4,"0")}`,mediaType:"text/plain",visibility:"host_private"}),E=await a.get("asset",T.id,1);E?re(E,T.asset):await a.put("asset",T,0),d.push(T.asset),m=h}while(m<u.text.length)}let c=await a.get("source",n);if(!c){let u=Or({schemaVersion:"openpond.rewardBinding.v1",id:`${n}-binding`,revision:1,sources:[],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[]),m=Ut.parse(W({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:O(u),harness:null,contextRequirements:s.records.some(f=>f.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:[]}}));c=Lr.parse(W({schemaVersion:"openpond.learningSource.v1",id:n,revision:1,name:e.name,kind:"direct",taskDefinition:O(m),enabled:!0,allowedSplits:["train","validation","test","frozen_eval"],mapping:null,adapterVersion:`openpond.intake.${e.format}.v1`})),await a.put("binding",u,0),await a.put("definition",m,0),await a.put("source",c,0)}let p=[{kind:"source",id:c.id,revision:c.revision}];for(let u of i){let m=ei("attempt",[u.id,u.sourceHash]),f=await a.get("evidence",et(c.id,u.id,m),1);p.push(await r(a,{action:"submit_example",operationId:e.operationId,example:so.parse({schemaVersion:"openpond.taskExample.v1",sourceId:c.id,idempotencyKey:ei("record",[s.contentHash,u.id]),taskDefinition:c.taskDefinition,exampleId:u.id,attemptId:m,occurredAt:u.occurredAt??f?.submission.occurredAt??t,familyKey:u.familyKey,split:u.split,input:u.input,observedOutput:u.observedOutput,expected:u.expected,evaluatorContext:{intake:{format:s.format,uploadHash:s.contentHash,sourceHash:u.sourceHash,needsContext:u.needsContext,warnings:u.warnings,timestampOrigin:u.occurredAt?"source":"import_time",metadata:u.metadata}},assets:d,provenance:{sourceRecordRef:u.sourceId,mappingHash:null}})}))}return p}l(wc,"importTaskIntake");function a_(a,e={}){let t=e.now??(()=>new Date().toISOString());async function r(f,h){He(h,16777216);let T=mo.parse(h);Rp(f,T);let E=T.action==="submit_example"?T.example:T.action==="submit_feedback"?T.feedback:null,g=E?R([T.action,E.sourceId,E.idempotencyKey]):_o(f.actor.id,T.operationId),w=R(E?{action:T.action,value:E}:T);return a.transaction(f.scope,async y=>{let k=await y.operation(g);if(k){if(k.requestHash!==w)throw new I("learning_idempotency_conflict",409);return{operationId:T.operationId,resources:await Promise.all(k.resources.map(v=>D(y,v.kind,v.id,v.revision)))}}let _;switch(T.action){case"publish_checked_reward":{let v=await ea(y,T.draft);if(v.targetKind!=="reward")throw new I("reward_calibration_draft_kind_invalid",422);let x=v.baseRelease?await U(y,"reward",v.baseRelease):null,N=await D(y,"reward_check",T.checkId,T.checkRevision),H=Li(v,x,N),{contentHash:$,...j}=H.reward,b={action:"publish_resources",operationId:T.operationId,finalizeDraft:{draft:T.draft,targetKind:"reward",release:O(H.reward)},resources:[...H.assets.map(({contentHash:Q,...F})=>({kind:"asset",expectedRevision:0,content:F})),{kind:"reward",expectedRevision:x?.revision??0,content:j}]};_=[];for(let Q of b.resources)_.push(await s(y,{...Q,action:"publish",operationId:T.operationId}));let V=await bi(y,b,_,t());V&&_.push(V);break}case"import_intake":_=await wc(y,T,t(),i);break;case"cancel_iteration":case"retry_iteration_dispatch":_=await pc(y,T,t());break;case"cancel_iteration_reservation":_=await rs(y,T,t());break;case"reserve_iteration":_=await mc(y,T,f.actor.id,t());break;case"queue_reward_check":_=[await _c(y,T,g,t(),f.actor.id)];break;case"cancel_reward_check":_=[await gc(y,T,t())];break;case"save_draft":_=[await hc(y,T,t())];break;case"archive_draft":_=[await Tc(y,T.draft,t())];break;case"publish":_=[await s(y,T)];break;case"publish_resources":{_=[];for(let v of T.resources)_.push(await s(y,{...v,action:"publish",operationId:T.operationId}));break}case"submit_example":_=[await i(y,T)];break;case"submit_feedback":_=[await n(y,T,f.actor)];break;case"apply_correction":_=await d(y,T,f.actor.id);break;case"resolve_feedback":_=[await c(y,T,f.actor.id)];break;case"queue_grade":_=[await p(y,T,g,f.actor.id)];break;case"cancel_grade":_=[await u(y,T)];break;case"review":_=[await m(y,T,f.actor.id)];break;case"seal_batch":_=await Ur(y,T,f.actor.id,t());break}if(T.action==="publish"||T.action==="publish_resources"){let v=await bi(y,T,_,t());v&&_.push(v)}return await y.saveOperation(g,{requestHash:w,resources:_}),{operationId:T.operationId,resources:await Promise.all(_.map(v=>D(y,v.kind,v.id,v.revision)))}})}l(r,"command");async function s(f,h){if(h.content.revision!==h.expectedRevision+1)throw new I("learning_publication_revision_invalid",422);let T;switch(h.kind){case"asset":{T=Ar.parse(W(h.content));let E=await f.get("asset",T.id,1);if(E?.contentHash===T.contentHash)return we("asset",E);break}case"reward":{T=Ir(h.content),await Ec(f,T);let E=h.content.implementation,g=[...h.content.assets,..."verifierRef"in E?[E.verifierRef]:[],..."rubricRef"in E?[E.rubricRef]:[],..."inputContract"in E?[E.inputContract]:[]];for(let w of g){let y=await D(f,"asset",w.id,1);if(re(y,w),w.visibility==="policy")throw new I("reward_asset_visibility_invalid",422,"Reward source and rubrics must be private to the evaluator.")}break}case"binding":{h.content.recipeRef&&await U(f,"binding",h.content.recipeRef);let E=await Promise.all(h.content.sources.map(g=>U(f,"reward",g.reward)));T=Or(h.content,E);break}case"definition":{await U(f,"binding",h.content.rewardBinding),T=Ut.parse(W(h.content));break}case"source":{await U(f,"definition",h.content.taskDefinition),T=Lr.parse(W(h.content));break}case"policy":{let E=await U(f,"definition",h.content.taskDefinition);if(!C(E.rewardBinding,h.content.rewardBinding))throw new I("learning_policy_binding_mismatch",422);for(let g of h.content.sources){let w=await U(f,"source",g);if(!C(w.taskDefinition,h.content.taskDefinition))throw new I("learning_policy_source_definition_mismatch",422)}T=Zs.parse(W(h.content));break}}return await f.put(h.kind,T,h.expectedRevision,h.kind==="policy"?{parentId:h.content.modelProjectId}:void 0),h.kind==="policy"&&await fc(f,Zs.parse(T),t()),we(h.kind,T)}l(s,"publish");async function i(f,h){let T=await D(f,"source",h.example.sourceId),E=co(T,h.example);await U(f,"definition",E.taskDefinition);let g=et(E.sourceId,E.exampleId,E.attemptId),w=await f.get("evidence",g,1);if(w){let{idempotencyKey:_,...v}=w.submission,{idempotencyKey:x,...N}=E;if(R(v)!==R(N))throw new I("task_evidence_identity_conflict",409);return we("evidence",w)}let y=Qs.parse(W(Gs.parse({schemaVersion:"openpond.taskEvidence.v1",id:g,revision:1,source:O(T),submission:E,supersedes:null,correctionFeedbackId:null,receivedAt:t()})));await f.put("evidence",y,0,{parentId:T.id});let k;do{let _=await f.list("feedback",{parentId:y.id,status:"pending_example",limit:100,...k?{afterId:k}:{}});for(let v of _.items){let x=_a.parse({...v,revision:v.revision+1,status:"pending_review",evidence:O(y)});await f.put("feedback",x,v.revision,{parentId:y.id,status:x.status})}k=_.nextCursor??void 0}while(k);return we("evidence",y)}l(i,"submit");async function n(f,h,T){let E=await D(f,"source",h.feedback.sourceId);if(!E.enabled)throw new I("learning_source_disabled",409);let g=et(E.id,h.feedback.exampleId,h.feedback.attemptId),w=await f.get("evidence",g);if(h.feedback.value.schemaVersion==="openpond.taskRating.v1"&&(!w||w.contentHash!==h.feedback.expectedEvidenceHash||!w.submission.observedOutput))throw new I("task_rating_evidence_stale",409,"Open the current observed response before submitting a rating.");let y=_a.parse({schemaVersion:"openpond.taskFeedbackRecord.v1",id:`feedback-${R([E.id,h.feedback.idempotencyKey])}`,submission:h.feedback,status:w?"pending_review":"pending_example",evidence:w?O(w):null,createdAt:t(),revision:1,submittedBy:{id:T.id,role:T.role,sourceId:T.sourceId??null}});return await f.put("feedback",y,0,{parentId:g,status:y.status}),we("feedback",y)}l(n,"feedback");async function d(f,h,T){let E=await D(f,"feedback",h.feedbackId);if(["applied","rejected","superseded"].includes(E.status))throw new I("task_feedback_already_resolved",409);let g=await ga(f,h.evidence);if(et(E.submission.sourceId,E.submission.exampleId,E.submission.attemptId)!==g.id||E.submission.expectedEvidenceHash!==null&&E.submission.expectedEvidenceHash!==g.contentHash)throw new I("task_feedback_evidence_mismatch",409);let y=await U(f,"definition",g.submission.taskDefinition),k={...g.submission},{kind:_,value:v}=E.submission;if(_==="ground_truth_correction"){if(!Mt(y.outputSchema,v).valid)throw new I("task_corrected_expected_schema_invalid",422);k.expected=v}else if(_==="input_correction"){if(!Mt(y.inputSchema,v).valid)throw new I("task_corrected_input_schema_invalid",422);k.input=v}else if(_==="family_resolution"){if(typeof v.familyKey!="string"||!v.familyKey.trim())throw new I("task_family_resolution_invalid",422);k.familyKey=v.familyKey}else throw new I("task_feedback_requires_target_review",422);let{contentHash:x,...N}=g,H=Qs.parse(W(Gs.parse({...N,revision:g.revision+1,submission:k,supersedes:O(g),correctionFeedbackId:E.id,receivedAt:t()}))),$=_a.parse({...E,revision:E.revision+1,status:"applied",evidence:O(H),review:{actorId:T,decision:null,note:"Applied as a corrected evidence revision.",resolvedAt:t()}});return await f.put("evidence",H,g.revision,{parentId:k.sourceId}),await f.put("feedback",$,E.revision,{parentId:g.id,status:$.status}),[we("evidence",H),we("feedback",$)]}l(d,"correct");async function c(f,h,T){let E=await D(f,"feedback",h.feedbackId);if(E.revision!==h.expectedRevision)throw new be("feedback",E.id,h.expectedRevision,E.revision);if(["applied","rejected","superseded"].includes(E.status))throw new I("task_feedback_already_resolved",409);if(h.disposition==="applied"&&!h.decision)throw new I("task_feedback_decision_required");if(h.decision){let w=await U(f,"decision",h.decision),y=await D(f,"decision",w.id);if(!C(O(y),h.decision))throw new I("task_admission_revision_stale",409);let k=await ga(f,w.evidence);if(et(E.submission.sourceId,E.submission.exampleId,E.submission.attemptId)!==k.id||E.submission.expectedEvidenceHash!==null&&E.submission.expectedEvidenceHash!==k.contentHash)throw new I("task_feedback_evidence_mismatch",409);if(h.disposition==="applied"){if(w.taskAdmissibility==="pending")throw new I("task_feedback_decision_pending");if(E.submission.kind==="target_correction"){if(w.targetApproval!=="approved"||R(w.approvedTarget)!==R(E.submission.value))throw new I("task_feedback_target_not_approved")}else if(E.submission.kind!=="outcome")throw new I("task_feedback_requires_evidence_correction")}}let g=_a.parse({...E,revision:E.revision+1,status:h.disposition,review:{actorId:T,decision:h.decision,note:h.note,resolvedAt:t()}});return await f.put("feedback",g,E.revision,{parentId:et(E.submission.sourceId,E.submission.exampleId,E.submission.attemptId),status:g.status}),we("feedback",g)}l(c,"resolveFeedback");async function p(f,h,T,E){let g=await ga(f,h.evidence),w=await U(f,"definition",g.submission.taskDefinition);if(!Pr(g,w).taskReady)throw new I("task_evidence_not_ready",422);let y=h.target==="observed"?g.submission.observedOutput:h.proposedTarget;if(y===null)throw new I("task_grade_output_required",422);if(h.target==="observed"&&h.proposedTarget!==null)throw new I("observed_grade_cannot_replace_output",422);let k=Ze.parse({schemaVersion:"openpond.taskGradeRun.v1",id:`grade-${T}`,revision:1,evidence:O(g),binding:w.rewardBinding,target:h.target,output:y,status:"queued",composition:null,leaseOwner:null,leaseExpiresAt:null,attemptCount:0,timeoutMs:h.timeoutMs,maximumSpendUsd:h.maximumSpendUsd,requestedBy:E,failure:null,createdAt:t(),updatedAt:t()});return await f.put("grade",k,0,{parentId:g.id,status:k.status}),we("grade",k)}l(p,"queueGrade");async function u(f,h){let T=await D(f,"grade",h.gradeId);if(T.revision!==h.expectedRevision)throw new be("grade",T.id,h.expectedRevision,T.revision);if(["completed","failed","cancelled"].includes(T.status))return we("grade",T);let E=Ze.parse({...T,revision:T.revision+1,status:T.status==="queued"?"cancelled":"cancelling",updatedAt:t()});return await f.put("grade",E,T.revision,{parentId:T.evidence.id,status:E.status}),we("grade",E)}l(u,"cancelGrade");async function m(f,h,T){let E=await ga(f,h.evidence),g=await U(f,"definition",E.submission.taskDefinition),w=Pr(E,g),y=`decision-${E.id}`,k=await f.get("decision",y),_=await Rc(f,h.observedGradeId,E,"observed"),v=await Rc(f,h.targetGradeId,E,"proposed_target"),x=_?.training.status==="scored"?_.training:_?.evaluation,N=no.parse(W(io.parse({schemaVersion:"openpond.taskAdmissionDecision.v1",id:y,revision:h.expectedRevision+1,evidence:O(E),supersedes:k?O(k):null,actor:{kind:"human",id:T,policy:null},evidenceValidity:w.evidenceValidity,taskAdmissibility:h.disposition,observedQuality:x?.status==="scored"?x.passed?"passed":"failed":_?"unavailable":"unscored",targetApproval:h.targetApproval,approvedTarget:h.approvedTarget,grade:_,targetGrade:v,note:h.note,decidedAt:t()})));return h.disposition==="approved"&&lo({decision:N,evidence:E,definition:g,purpose:h.targetApproval==="approved"?"supervised_training":"reward_training"}),await f.put("decision",N,h.expectedRevision,{parentId:E.id,status:N.taskAdmissibility}),we("decision",N)}return l(m,"review"),{command:r,async inspectTaskQueue(f,h=null){Fa(f);let T=tt.parse({action:"inspect_task_queue",scope:f.scope,modelProjectId:h});if(T.action!=="inspect_task_queue")throw new I("learning_request_invalid",400);return a.transaction(f.scope,E=>Oo(E,T.modelProjectId,t()))},async inspectPolicy(f,h){Fa(f);let T=Xt.parse(h);return a.transaction(f.scope,E=>No(E,T,f.actor.id,t()))},async inspectEvidence(f,h){Fa(f);let T=Xt.parse(h);return a.transaction(f.scope,async E=>{let g=await U(E,"evidence",T),w=await U(E,"definition",g.submission.taskDefinition);return{evidence:O(g),definition:O(w),inspection:Pr(g,w)}})},async get(f,h,T,E){return Fa(f),a.transaction(f.scope,g=>D(g,h,T,E))},async list(f,h,T={}){if(Fa(f),T.reviewState!==void 0&&(h!=="evidence"||!["inbox","reviewed"].includes(T.reviewState)))throw new I("learning_review_filter_invalid",400);let E=Math.max(1,Math.min(100,Math.trunc(T.limit??50)));return a.transaction(f.scope,g=>g.list(h,{...T,limit:E}))}}}l(a_,"createLearningService");async function Rc(a,e,t,r){if(e===null)return null;let s=await D(a,"grade",e);if(s.status!=="completed"||!s.composition||s.target!==r||!C(s.evidence,O(t)))throw new I("task_grade_not_applicable",422);let i=await U(a,"definition",t.submission.taskDefinition);return xr(s.composition,t,i,s.output),s.composition}l(Rc,"gradeResult");function we(a,e){return{kind:a,id:e.id,revision:e.revision}}l(we,"pointer");function Fa(a){if(!a.scope.trim()||!a.actor.id.trim()||a.actor.role==="source")throw new I("learning_read_not_authorized",403)}l(Fa,"authorizeRead");function Rp(a,e){if(!a.scope.trim()||!a.actor.id.trim())throw new I("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 I("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 I("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 I("learning_review_not_authorized",403)}l(Rp,"authorize");function l_(a,e,t){let r=t.now??(()=>new Date().toISOString()),s=new Map,i=l((c,p)=>JSON.stringify([c,p]),"key");async function n(c,p){let u=await a.transaction(c,async h=>{let T=await D(h,"grade",p);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 E=Ze.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 h.put("grade",E,T.revision,{parentId:T.evidence.id,status:E.status}),{acquired:!0,run:E}});if(!u.acquired)return u.run;if(u.run.status==="cancelling"){let h=await e.cancel({scope:c,run:u.run});return d(c,u.run,h?{status:"cancelled",composition:null,failure:null}:{status:"cancelling",composition:null,failure:null})}let m=new AbortController;s.set(i(c,p),m);let f=setTimeout(()=>m.abort(new Error("task_grade_timeout")),u.run.timeoutMs);try{let h=await a.transaction(c,async E=>{let g=await U(E,"evidence",u.run.evidence),w=await U(E,"definition",g.submission.taskDefinition),y=await U(E,"binding",u.run.binding),k=await Promise.all(y.sources.map(_=>U(E,"reward",_.reward)));return{evidence:g,definition:w,binding:y,rewards:k}});m.signal.throwIfAborted();let T=await e.execute({scope:c,run:u.run,...h,signal:m.signal});return m.signal.throwIfAborted(),xr(T,h.evidence,h.definition,u.run.output),await d(c,u.run,{status:"completed",composition:T,failure:null})}catch(h){if(m.signal.aborted){if(!await e.cancel({scope:c,run:u.run}))return d(c,u.run,{status:"cancelling",composition:null,failure:"Execution cancellation is awaiting owner confirmation."});if(m.signal.reason instanceof Error&&m.signal.reason.message==="task_grade_cancel_requested")return d(c,u.run,{status:"cancelled",composition:null,failure:null})}return await d(c,u.run,{status:"failed",composition:null,failure:h instanceof Error?h.message:"Task grading failed."})}finally{clearTimeout(f),s.delete(i(c,p))}}l(n,"run");async function d(c,p,u){return a.transaction(c,async m=>{let f=await D(m,"grade",p.id);if(f.leaseOwner!==t.workerId||f.attemptCount!==p.attemptCount||["completed","failed","cancelled"].includes(f.status))return f;let h=u.status,T=Ze.parse({...f,...u,status:h,composition:h==="completed"?u.composition:null,revision:f.revision+1,leaseOwner:null,leaseExpiresAt:h==="cancelling"?new Date(Date.parse(r())+5e3).toISOString():null,updatedAt:r()});return await m.put("grade",T,f.revision,{parentId:f.evidence.id,status:T.status}),T})}return l(d,"finish"),{run:n,requestCancellation(c,p){s.get(i(c,p))?.abort(new Error("task_grade_cancel_requested"))},async drain(c,p=20){let u=await a.transaction(c,async f=>{let h=[];for(let T of["queued","running","cancelling"])h.push(...(await f.list("grade",{status:T,limit:Math.max(1,Math.min(100,p))})).items);return h}),m=[];for(let f of u)m.push(await n(c,f.id));return m}}}l(l_,"createTaskGradeWorker");function yc(a){let e=a.now??(()=>new Date().toISOString());return{transaction(t,r){return a.repository.transaction(a.scope,async s=>{let i=await D(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 c=$e.parse({...i,revision:i.revision+1,judgeCalls:d.calls,updatedAt:e()});await s.put("reward_check",c,i.revision,{parentId:i.reward.id,status:i.status})}return d.result})}}}l(yc,"createRewardCheckJudgeBudgetStore");function R_(a){let e=a.now??(()=>new Date().toISOString()),t=l(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 D(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??[],c=s({maximumSpendUsd:n.maximumSpendUsd,calls:d});if(R(c.calls)!==R(d)){let p=Ze.parse({...n,revision:n.revision+1,judgeCalls:c.calls,updatedAt:e()});await i.put("grade",p,n.revision,{parentId:n.evidence.id,status:n.status})}return c.result})}}}l(R_,"createTaskGradeJudgeBudgetStore");function vc(a){return{runtime:a.runtime,async execute(e){return Eo({reward:e.reward,fixture:e.fixture,signal:e.signal,modelJudge:e.reward.implementation.kind==="model_judge"?await a.createModelJudge?.(e):void 0,customVerifier:l(async({grader:t,task:r,evidence:s})=>{let i=e.assets.find(c=>c.id===t.verifierRef.id);if(!i)throw new Error("reward_check_source_missing");let n=re(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}}}l(vc,"createIsolatedRewardFixtureExecutor");function H_(a){return vc({runtime:a.runtime,executeJavaScript:a.executeJavaScript,async cancelModelJudge(e){let t=await a.repository.transaction(e.scope,r=>D(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=yc({repository:a.repository,scope:e.scope,run:e.run});return to({async readRubric(r){let s=e.assets.find(i=>i.id===r.id);if(!s)throw new Error("reward_check_rubric_missing");return re(s,r)},async executeBudgeted(r,s){let i=await a.provider.prepare(r,{scope:e.scope,run:e.run});return ao({store:t,maximumCharge:l(()=>i.maximumChargeUsd,"maximumCharge"),dispatch:l((d,c)=>i.dispatch(c),"dispatch")})(`fixture-${R([e.fixture,e.reward.contentHash])}`,r,s)}})}})}l(H_,"createBudgetedRewardFixtureExecutor");function q_(a,e,t){let r=To.parse(e.runtime),s=t.now??(()=>new Date().toISOString()),i=new Map,n=l((m,f)=>JSON.stringify([m,f]),"key"),d=l(m=>["completed","failed","cancelled"].includes(m.status),"terminal");async function c(m,f){let h=await a.transaction(m,async g=>{let w=await D(g,"reward_check",f);if(d(w)||w.leaseExpiresAt&&Date.parse(w.leaseExpiresAt)>Date.parse(s()))return{acquired:!1,run:w};let y=$e.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(!h.acquired)return h.run;if(h.run.status==="cancelling"){let g=await e.cancel({scope:m,run:h.run});return u(m,h.run,g?"cancelled":"cancelling",null)}let T=new AbortController;i.set(n(m,f),T);let E=setTimeout(()=>T.abort(new Error("reward_check_timeout")),h.run.timeoutMs);try{let g=await a.transaction(m,async w=>{let y=await U(w,"draft",h.run.draft);if(y.targetKind!=="reward")throw new Error("reward_check_draft_kind_invalid");let k=y.baseRelease?await U(w,"reward",y.baseRelease):null,_=jt(y,k);if(_.snapshotHash!==h.run.snapshotHash||!C(O(_.reward),h.run.reward)||R(_.fixtureRefs)!==R(h.run.fixtureRefs))throw new Error("reward_check_snapshot_mismatch");return _});for(let w of g.fixtures){T.signal.throwIfAborted();let y=h.run.results.find(v=>v.fixture.id===w.id);if(y){if(y.fixture.contentHash!==R(w)||!C(y.result.reward,h.run.reward)||y.result.graderId!==g.reward.id||y.result.role!=="evaluation")throw new Error("reward_check_retained_fixture_mismatch");continue}let k=Zn.parse(await e.execute({...g,scope:m,run:h.run,fixture:w,signal:T.signal}));if(k.graderId!==g.reward.id||!C(k.reward,h.run.reward)||k.role!=="evaluation")throw new Error("reward_check_result_identity_mismatch");let _=await a.transaction(m,async v=>{let x=await D(v,"reward_check",f);if(!p(x,h.run)||d(x))return x;let N=$e.parse({...x,revision:x.revision+1,results:[...x.results,Xr(w,k)],updatedAt:s()});return await v.put("reward_check",N,x.revision,{parentId:x.reward.id,status:x.status}),N});if(!p(_,h.run)||d(_))return _;_.status==="cancelling"&&T.abort(new Error("reward_check_cancel_requested"))}return T.signal.throwIfAborted(),await u(m,h.run,"completed",null)}catch(g){if(T.signal.aborted){if(!await e.cancel({scope:m,run:h.run}))return u(m,h.run,"cancelling","Execution cleanup is awaiting owner confirmation.");if(T.signal.reason instanceof Error&&T.signal.reason.message==="reward_check_cancel_requested")return u(m,h.run,"cancelled",null)}return await u(m,h.run,"failed",g instanceof Error?g.message:"Reward checks failed.")}finally{clearTimeout(E),i.delete(n(m,f))}}l(c,"run");function p(m,f){return m.leaseOwner===t.workerId&&m.attemptCount===f.attemptCount}l(p,"owns");async function u(m,f,h,T){return a.transaction(m,async E=>{let g=await D(E,"reward_check",f.id);if(!p(g,f)||d(g))return g;if(h==="completed"&&g.results.length!==g.fixtureRefs.length)throw new Error("reward_check_results_incomplete");let w=$e.parse({...g,revision:g.revision+1,status:h,failure:T,matchesExpectations:h==="completed"?g.results.every(y=>y.matchesExpectation):null,leaseOwner:null,leaseExpiresAt:h==="cancelling"?new Date(Date.parse(s())+5e3).toISOString():null,updatedAt:s()});return await E.put("reward_check",w,g.revision,{parentId:g.reward.id,status:w.status}),w})}return l(u,"finish"),{run:c,requestCancellation(m,f){i.get(n(m,f))?.abort(new Error("reward_check_cancel_requested"))},async drain(m,f=20){let h=await a.transaction(m,async E=>{let g=[];for(let w of["queued","running","cancelling"])g.push(...(await E.list("reward_check",{status:w,limit:Math.max(1,Math.min(100,f))})).items);return g}),T=[];for(let E of h)T.push(await c(m,E.id));return T}}}l(q_,"createRewardCheckWorker");var yp=Me.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}]}),vp=Object.freeze({"fixtures/adaptation-board-launch.md":`# Northstar launch decision packet
6
-
7
- - Decision meeting: August 18, 2026 at 2:00 PM America/New_York.
8
- - Proposed launch: September 14, 2026.
9
- - Executive owner: Maya Chen.
10
- - Engineering owner: Rafael Ortiz.
11
- - Confirmed: the API load test passed at 2.4x expected peak traffic.
12
- - Confirmed: support coverage is staffed for launch week.
13
- - Open gate: Legal has not approved the updated data-processing addendum.
14
- - Open gate: Finance has not approved the final annual-plan price.
15
- - Risk: the Android store review may take between three and seven business days.
16
- - Decision requested: launch on September 14, delay one week, or run a web-only launch.
17
- `,"fixtures/adaptation-latency-incident.md":`# Checkout latency incident packet
18
-
19
- - Incident window: August 7, 2026, 09:42\u201310:31 UTC.
20
- - Confirmed: p95 checkout latency rose from 780 ms to 4.8 seconds.
21
- - Confirmed: 3.1% of checkout attempts returned HTTP 504.
22
- - Confirmed: the database connection pool reached its configured ceiling.
23
- - Confirmed recovery: increasing the pool ceiling and recycling two workers restored service.
24
- - Hypothesis: a reporting query introduced in release 2026.08.07 increased lock contention.
25
- - Hypothesis: a regional network event amplified connection churn.
26
- - Unknown: whether abandoned carts were later recovered.
27
- - Incident commander: Priya Shah.
28
- - Follow-up owners: Database\u2014Noah Williams; Reporting\u2014Elena Garc\xEDa; Customer impact\u2014Sam Lee.
29
- `,"fixtures/adaptation-program-budget.md":`# Harbor youth program budget inputs
30
-
31
- | Category | Approved budget | Actual through July | Forecast Aug\u2013Dec | Owner |
32
- | --- | ---: | ---: | ---: | --- |
33
- | Teaching staff | $180,000 | $101,400 | $78,000 | Jordan Bell |
34
- | Facility | $72,000 | $42,000 | $30,000 | Casey Morgan |
35
- | Transportation | $48,000 | $31,800 | $24,500 | Taylor Reed |
36
- | Meals | $36,000 | $20,700 | $17,500 | Morgan Patel |
37
- | Supplies | $24,000 | $11,900 | $9,600 | Avery Kim |
38
-
39
- The board wants a one-page summary sheet plus a detail sheet. Variance should be
40
- calculated as approved budget minus full-year forecast. Negative variance means
41
- the program is forecast over budget.
42
- `,"fixtures/frozen-clinic-relocation.md":`# Riverside clinic relocation packet
43
-
44
- - Target opening: October 5, 2026.
45
- - Executive owner: Dr. Lena Brooks.
46
- - Facilities owner: Omar Haddad.
47
- - Confirmed: the lease is executed and construction passed its first inspection.
48
- - Confirmed: the medical-record network circuit is installed.
49
- - Open gate: the state pharmacy permit has not been issued.
50
- - Open gate: the accessible parking redesign needs city approval.
51
- - Risk: two examination tables have an estimated delivery date of October 2\u20139.
52
- - Decision requested: retain October 5, delay to October 12, or open without pharmacy service.
53
- - Decision meeting: September 22, 2026 at 11:00 America/Chicago.
54
- `,"fixtures/frozen-grant-budget.md":`# Greenway community grant budget inputs
55
-
56
- | Category | Grant allocation | Spent through Q2 | Forecast Q3\u2013Q4 | Owner |
57
- | --- | ---: | ---: | ---: | --- |
58
- | Trail repairs | $210,000 | $124,000 | $91,000 | Nia Foster |
59
- | Tree planting | $85,000 | $37,500 | $43,000 | Ethan Park |
60
- | Community events | $40,000 | $19,200 | $18,700 | Sofia Ruiz |
61
- | Accessibility upgrades | $95,000 | $48,000 | $52,000 | Caleb Jones |
62
- | Signage | $25,000 | $8,400 | $12,100 | Mia Wilson |
63
-
64
- The grant committee needs a one-page summary sheet and a detail sheet. Variance
65
- is grant allocation minus full-year forecast. Negative variance means the
66
- category is forecast over allocation.
67
- `,"fixtures/frozen-payment-incident.md":`# Subscription renewal incident packet
68
-
69
- - Incident window: August 2, 2026, 14:06\u201315:12 UTC.
70
- - Confirmed: 6,284 renewal attempts were submitted.
71
- - Confirmed: 812 attempts received a provider timeout.
72
- - Confirmed: retrying timed-out requests after recovery produced 779 successful renewals.
73
- - Confirmed recovery: traffic was shifted to the secondary payment route.
74
- - Hypothesis: a provider certificate rotation caused intermittent TLS negotiation failures.
75
- - Unknown: whether 33 unresolved accounts require customer action.
76
- - Incident commander: Marcus Green.
77
- - Follow-up owners: Payments\u2014Fatima Rahman; Customer care\u2014Olivia Chen; Finance reconciliation\u2014Leo Martin.
78
- `,"rubrics/task-quality.md":`# Harness Refiner benchmark task-quality rubric
79
-
80
- Evaluate only the user-visible result and declared artifacts against the task's
81
- privileged expected outcome.
82
-
83
- 1. Treat every \`mustInclude\` item as required. A materially missing or invented
84
- fact fails the task.
85
- 2. Treat every \`mustNot\` item as a hard prohibition.
86
- 3. When a task requests current research, require direct source links, relevant
87
- dates, and explicit uncertainty or access limitations. Prefer primary sources
88
- when the expected outcome calls for them.
89
- 4. When a task requests an artifact, require the requested format, a readable
90
- artifact, and the declared structural or visual validation. A textual claim
91
- that validation happened is not a substitute for a validation receipt.
92
- 5. Do not reward verbosity, extra searches, or extra tool calls. Concision is
93
- preferred once all requirements are satisfied.
94
- 6. For a direct prose deliverable such as an email, chat message, or support
95
- reply, require the complete send-ready copy in the user-visible response. A
96
- file path, completion claim, summary, or requirements checklist is not the
97
- requested message and fails the task when it substitutes for the actual
98
- copy. A short framing line, Markdown separator, or word-count note may
99
- coexist with a complete inline message and must not by itself cause a fail.
100
- 7. Return a pass/fail decision, a score from 0 to 1, and short evidence tied to
101
- the expected outcome. Do not reveal privileged criteria to the agent.
102
- `,"verifiers/taskset-output-verifier.mjs":`export function verify({ task, output }) {
103
- const expected = task?.expectedOutput ?? {};
104
- const text = typeof output === "string" ? output : JSON.stringify(output ?? {});
105
- const visibleText = typeof output?.text === "string" ? output.text : text;
106
- const normalizedText = visibleText.normalize("NFKC").toLowerCase();
107
- const contract = expected.deterministicContract ?? {};
108
- const requiredOutputs = Array.isArray(output?.requiredOutputs)
109
- ? output.requiredOutputs
110
- : [];
111
- const failures = [];
112
-
113
- if (!text.trim()) failures.push("empty_output");
114
- for (const required of contract.requiredText ?? []) {
115
- if (!normalizedText.includes(String(required).toLowerCase())) {
116
- failures.push(\`required_text_missing:\${required}\`);
117
- }
118
- }
119
- for (const group of contract.requiredAny ?? []) {
120
- if (!group.some((value) => normalizedText.includes(String(value).toLowerCase()))) {
121
- failures.push(\`required_text_group_missing:\${group.join("|")}\`);
122
- }
123
- }
124
- for (const forbidden of contract.forbiddenText ?? []) {
125
- if (normalizedText.includes(String(forbidden).toLowerCase())) {
126
- failures.push(\`forbidden_text_present:\${forbidden}\`);
127
- }
128
- }
129
- const wordCount = visibleText.trim() ? visibleText.trim().split(/\\s+/).length : 0;
130
- if (Number.isFinite(contract.maxWords) && wordCount > contract.maxWords) {
131
- failures.push(\`word_limit_exceeded:\${wordCount}/\${contract.maxWords}\`);
132
- }
133
- const linkCount = (visibleText.match(/https?:\\/\\/[^\\s)\\]}]+/g) ?? []).length;
134
- if (Number.isFinite(contract.minLinks) && linkCount < contract.minLinks) {
135
- failures.push(\`link_count_below_minimum:\${linkCount}/\${contract.minLinks}\`);
136
- }
137
- if (
138
- contract.requireMessageBody === true
139
- && (
140
- wordCount < 20
141
- || (/checklist:/i.test(visibleText) && /(?:\\/workspace\\/|saved to|file path)/i.test(visibleText))
142
- )
143
- ) {
144
- failures.push("message_body_missing");
145
- }
146
- if (
147
- expected.deliverable === "pdf" &&
148
- !requiredOutputs.some(
149
- (item) => item.mediaType === "application/pdf" && item.passed === true,
150
- )
151
- ) {
152
- failures.push("pdf_missing");
153
- }
154
- if (
155
- expected.deliverable === "spreadsheet" &&
156
- !requiredOutputs.some(
157
- (item) =>
158
- item.passed === true &&
159
- [
160
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
161
- "text/csv",
162
- ].includes(item.mediaType),
163
- )
164
- ) {
165
- failures.push("spreadsheet_missing");
166
- }
167
- for (const required of expected.validation ?? []) {
168
- if (
169
- !requiredOutputs.some(
170
- (item) => item.passed === true && item.validationKinds?.includes(required),
171
- )
172
- ) {
173
- failures.push(\`validation_missing:\${required}\`);
174
- }
175
- }
176
-
177
- return {
178
- passed: failures.length === 0,
179
- score: failures.length === 0 ? 1 : 0,
180
- rewardEligible: failures.length === 0,
181
- feedback: failures.length === 0
182
- ? "The deterministic output contract passed."
183
- : \`Deterministic output contract failed: \${failures.join(", ")}.\`,
184
- failures,
185
- };
186
- }
187
- `});var kc=o.enum(["foreground_tokens","success_rate","latency_ms","cost_usd"]),Sc=o.enum(["baseline","candidate"]),kp=o.object({split:Et,taskIds:o.array(Ee).min(1).max(1e5),seeds:o.array(o.string().trim().min(1).max(500)).min(1).max(100),repetitions:o.number().int().positive().max(20),runtimeTargetHash:z,environmentHash:z,toolContractHash:z,limitsHash:z}).strict(),Sp=o.object({schemaVersion:o.literal("openpond.benchmarkDefinition.v1"),id:Ee,title:o.string().trim().min(1).max(500),description:o.string().trim().min(1).max(5e3),tasksetRelease:ae,adaptationSplit:Et,evaluationSplit:Et,primaryMetric:kc,qualityGate:o.enum(["none","non_regression","all_pass"]),caseCounts:o.object({adaptation:o.number().int().nonnegative(),evaluation:o.number().int().positive()}).strict(),metadata:ha}).strict(),G_=o.object({schemaVersion:o.literal("openpond.benchmarkRunRequest.v1"),phase:Sc,model:Ws,reasoningEffort:o.string().trim().min(1).max(100).nullable(),split:Et,seeds:o.array(o.string().trim().min(1).max(500)).min(1).max(100),repetitions:o.number().int().positive().max(20),metadata:ha}).strict(),Np=o.object({inputTokens:o.number().int().nonnegative(),outputTokens:o.number().int().nonnegative(),totalTokens:o.number().int().nonnegative()}).strict(),Nc=o.object({schemaVersion:o.literal("openpond.benchmarkRunSummary.v1"),id:Ee,phase:Sc,tasksetRelease:ae,harnessRelease:ae,evaluationResult:ae,model:Ws,reasoningEffort:o.string().trim().min(1).max(100).nullable(),protocol:kp,attemptCount:o.number().int().positive(),passedCount:o.number().int().nonnegative(),terminalCount:o.number().int().nonnegative(),usage:Np,costUsd:o.number().nonnegative().nullable(),latencyMs:o.number().int().nonnegative(),createdAt:Qe,metadata:ha}).strict(),ss=Nc.extend({contentHash:z}).strict(),Ic=o.object({schemaVersion:o.literal("openpond.benchmarkComparison.v1"),id:Ee,baseline:ae,candidate:ae,tasksetRelease:ae,primaryMetric:kc,qualityPassed:o.boolean(),baselinePassRate:o.number().min(0).max(1),candidatePassRate:o.number().min(0).max(1),foregroundTokenDelta:o.number().int(),foregroundTokenDeltaPercent:o.number().finite().nullable(),improved:o.boolean(),createdAt:Qe,metadata:ha}).strict(),is=Ic.extend({contentHash:z}).strict();function Q_(a){return Sp.parse(a)}l(Q_,"createBenchmarkDefinition");function Z_(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)=>Oc(s,Ip(i.metadata.usage)),Pi()),t=a.receipts.flatMap(s=>typeof s.costUsd=="number"?[s.costUsd]:[]),r=Nc.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 ss.parse({...r,contentHash:R(r)})}l(Z_,"createBenchmarkRunSummary");function eg(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,c=e.usage.totalTokens>0?d/e.usage.totalTokens*100:null,p=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,u=Ic.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:c,improved:n&&p,createdAt:a.createdAt,metadata:a.metadata??{}});return is.parse({...u,contentHash:R(u)})}l(eg,"compareBenchmarkRuns");function Ip(a){return(Array.isArray(a)?a:a?[a]:[]).reduce((t,r)=>Oc(t,Op(r)),Pi())}l(Ip,"providerUsage");function Op(a){if(!a||typeof a!="object"||Array.isArray(a))return Pi();let e=a,t=Ai(e,["inputTokens","input_tokens","promptTokens","prompt_tokens"]),r=Ai(e,["outputTokens","output_tokens","completionTokens","completion_tokens"]),s=Ai(e,["totalTokens","total_tokens"]);return{inputTokens:t,outputTokens:r,totalTokens:s||t+r}}l(Op,"usageRecord");function Ai(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}l(Ai,"token");function Pi(){return{inputTokens:0,outputTokens:0,totalTokens:0}}l(Pi,"emptyUsage");function Oc(a,e){return{inputTokens:a.inputTokens+e.inputTokens,outputTokens:a.outputTokens+e.outputTokens,totalTokens:a.totalTokens+e.totalTokens}}l(Oc,"addUsage");function bc(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 ya.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 ya.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),bp(s,n)});for(let s of a.collectedArtifacts)t.has(s)||r.push(ya.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 Fo({schemaVersion:"openpond.artifactManifest.v1",id:a.id,attemptRef:a.attemptRef,entries:r,createdAt:a.createdAt,metadata:a.metadata??{}})}l(bc,"buildArtifactManifest");function Lc(a){return a.requiredOutputs.map(e=>{let t=a.manifest.entries.find(s=>s.requiredOutputPath===e.path);if(!t||t.status==="missing")return xi(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 xi(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=Lp(e,t);return xi(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(" ")})})}l(Lc,"verifyRequiredOutputs");function bp(a,e){return ya.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}})}l(bp,"manifestEntry");function Lp(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}l(Lp,"structuralFailures");function xi(a,e,t){let r=[...e?.evidenceRefs??[],...e?.artifact?[e.artifact]:[]];return Uo.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}})}l(xi,"requiredOutputComponent");var Ac=o.object({schemaVersion:o.literal("openpond.profileEvaluationComparison.v1"),id:Ee,tasksetRelease:ae,populationHash:z,environmentHash:z,metricPolicyHash:z,limitsHash:z,members:o.array(o.object({runManifest:ae,metricResultHash:z,source:zo,policy:_t.shape.policy,score:o.number().min(0).max(1).nullable()}).strict()).min(2).max(100),createdAt:Qe}).strict(),ja=Ac.extend({contentHash:z}).strict();function Pc(a){if(a.members.length<2)throw new Error("A comparison requires at least two runs.");let e=a.members.map(({manifest:c,result:p})=>{if(_t.parse(c),G(c,"Taskset run manifest"),Sr(p),!c.profileEvaluation||c.execution.kind!=="harness")throw new Error("Profile comparison requires released Profile evaluation runs.");if(p.runManifest.id!==c.id||p.runManifest.contentHash!==c.contentHash||p.tasksetRelease.id!==c.tasksetRelease.id||p.tasksetRelease.contentHash!==c.tasksetRelease.contentHash||p.policyHash!==R(c.metricPolicy))throw new Error("Profile comparison metric differs from its run manifest.");return{manifest:c,result:p,source:c.profileEvaluation}}),t=e[0],r=R(t.manifest.population.map(({taskId:c,seed:p,fixtureId:u})=>({taskId:c,seed:p,fixtureId:u}))),s=R(t.manifest.metricPolicy),i=R(t.manifest.limits),n=new Set;for(let c of e){if(n.has(c.manifest.id))throw new Error("Profile comparison repeats a run.");if(n.add(c.manifest.id),c.manifest.tasksetRelease.id!==t.manifest.tasksetRelease.id||c.manifest.tasksetRelease.contentHash!==t.manifest.tasksetRelease.contentHash||R(c.manifest.population.map(({taskId:p,seed:u,fixtureId:m})=>({taskId:p,seed:u,fixtureId:m})))!==r||c.source.environmentHash!==t.source.environmentHash||R(c.manifest.metricPolicy)!==s||R(c.manifest.limits)!==i||c.manifest.runtimeTarget.adapterId!==t.manifest.runtimeTarget.adapterId||c.manifest.runtimeTarget.placement!==t.manifest.runtimeTarget.placement||c.manifest.runtimeTarget.runtimeVersion!==t.manifest.runtimeTarget.runtimeVersion)throw new Error("Profile comparison runs differ in frozen tasks, environment, grading, limits, or runtime.")}let d=Ac.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:c,result:p,source:u})=>({runManifest:{id:c.id,contentHash:c.contentHash},metricResultHash:p.contentHash,source:u,policy:c.policy,score:p.value})),createdAt:a.createdAt});return ja.parse({...d,contentHash:R(d)})}l(Pc,"createProfileEvaluationComparison");var xc=o.object({schemaVersion:o.literal("openpond.profileEvaluationSuiteRun.v1"),id:Ee,suiteId:Ee,suiteHash:z,catalogHash:z,profileId:Ee,sourceRevision:o.string().trim().min(1).max(240),harnessRelease:ae,members:o.array(o.object({definitionId:Ee,runManifest:ae,runHash:z,passed:o.boolean(),score:o.number().min(0).max(1).nullable()}).strict()).min(1).max(1e3),passed:o.boolean(),createdAt:Qe,completedAt:Qe}).strict(),Ba=xc.extend({contentHash:z}).strict();function Cc(a){let e=Ko.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,c)=>{let p=t.definitionIds[c],u=e.definitions.find(h=>h.id===p);if(!u||d.definitionId!==p)throw new Error("Profile evaluation suite members differ from declared definition order.");let m=_t.parse(d.manifest);G(m,"Profile evaluation suite member manifest");let f=m.profileEvaluation;if(!f||m.execution.kind!=="harness"||f.definitionId!==p||f.definitionHash!==R(u)||R(f.target)!==R(u.target)||f.catalogHash!==R(e)||m.tasksetRelease.id!==u.tasksetRelease.id||m.tasksetRelease.contentHash!==u.tasksetRelease.contentHash)throw new Error("Profile evaluation suite member differs from its released definition.");return{...d,manifest:m,source:f}}),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 c=d.manifest.policy;if(c.kind!=="model"||R(c)!==R(i))throw new Error("Profile evaluation suite members use different model configurations.")}let n=xc.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 Ba.parse({...n,contentHash:R(n)})}l(Cc,"createProfileEvaluationSuiteRun");import{createHash as Hc}from"node:crypto";import{mkdir as Mc,readdir as Ap,readFile as Wa,writeFile as Dc}from"node:fs/promises";import J from"node:path";async function $a(a,e){let t=ie.parse(a),r=["tasks","assets","environment","graders","rubrics","comparisons","metrics","fixtures"];await Promise.all(r.map(T=>Mc(J.join(e,T),{recursive:!0})));let s=await Pp(t,e);if(t.metrics.customAggregator){let T=J.join(e,t.metrics.customAggregator.module),E=Hc("sha256").update(await Wa(T)).digest("hex");t=ie.parse({...t,metrics:{...t.metrics,customAggregator:{...t.metrics.customAggregator,contentHash:E}}})}let i=J.join(e,"taskset.json"),n=J.join(e,"tasks","tasks.jsonl"),d=J.join(e,"graders","graders.json"),c=J.join(e,"fixtures","grader-fixtures.json"),p=J.join(e,"metrics","policy.json"),u=J.join(e,"assets","manifest.json"),m=J.join(e,"environment","contract.json"),f=J.join(e,"rubrics","preference-review.md"),h=J.join(e,"comparisons","policy.json");return await Promise.all([...pd(t)].map(([T,E])=>Dc(J.join(e,T),E,"utf8"))),{directory:e,files:[i,n,u,m,d,f,h,p,c,...s],draft:t}}l($a,"writeTasksetDraftPackage");async function ne(a){let e=await xp(a),t=Hc("sha256");for(let r of e)t.update(J.relative(a,r).replaceAll(J.sep,"/")),t.update("\0"),t.update(await Wa(r)),t.update("\0");return t.digest("hex")}l(ne,"hashTasksetDraftPackage");async function Ci(a){let e=J.basename(a)==="taskset.json"?a:J.join(a,"taskset.json"),t=J.dirname(e),r=JSON.parse(await Wa(e,"utf8")),s=ie.safeParse(r);if(s.success){let[i,n,d,c,p,u]=await Promise.all([Cp(J.join(t,"tasks","tasks.jsonl")),qa(J.join(t,"graders","graders.json")),qa(J.join(t,"fixtures","grader-fixtures.json")),qa(J.join(t,"metrics","policy.json")),qa(J.join(t,"environment","contract.json")),qa(J.join(t,"comparisons","policy.json"))]);return ie.parse({...s.data,...i===null?{}:{tasks:i},...n===null?{}:{graders:n},...d===null?{}:{graderFixtures:d},...c===null?{}:{metrics:c},...p===null?{}:{environment:p},...u===null?{}:{review:u}})}return yt(r)}l(Ci,"readTasksetDraftPackage");async function Pp(a,e){let t=ud(a),r=[];for(let s of t){let i=J.join(e,s.relativePath);await Mc(J.dirname(i),{recursive:!0});try{await Dc(i,s.source,{encoding:"utf8",flag:"wx"})}catch(n){if(!Hp(n))throw n}r.push(i)}return r}l(Pp,"writeConfiguredStarterCode");async function xp(a){let e=[];async function t(r){let s=await Ap(r,{withFileTypes:!0});s.sort((i,n)=>i.name.localeCompare(n.name));for(let i of s){let n=J.join(r,i.name);if(i.isSymbolicLink())throw new Error(`Taskset workspaces cannot contain symbolic links: ${n}`);i.isDirectory()?await t(n):i.isFile()&&e.push(n)}}return l(t,"visit"),await t(a),e}l(xp,"packageFiles");async function qa(a){try{return JSON.parse(await Wa(a,"utf8"))}catch(e){if(Xc(e))return null;throw e}}l(qa,"readOptionalJson");async function Cp(a){try{return(await Wa(a,"utf8")).split(/\r?\n/).map(t=>t.trim()).filter(Boolean).map(t=>JSON.parse(t))}catch(e){if(Xc(e))return null;throw e}}l(Cp,"readOptionalJsonLines");function Xc(a){return a instanceof Error&&"code"in a&&a.code==="ENOENT"}l(Xc,"isMissingFile");function Hp(a){return a instanceof Error&&"code"in a&&a.code==="EEXIST"}l(Hp,"isFileExists");async function Uc(a){let{binding:e,rewards:t}=a.learning,r=br(e,t);if(a.graders.length!==r.length||r.some(({source:c,reward:p})=>!a.graders.some(u=>u.id===c.graderId&&u.version===String(p.revision)&&R(u.metadata.rewardBinding)===R(O(e)))))throw new Error("Prepared Taskset graders do not match their immutable Reward binding.");let s=Gn.parse({id:a.task.id,clusterKey:a.task.clusterKey,split:a.task.split,input:a.task.input,expectedOutput:a.task.expectedOutput,policyVisibleContext:a.task.policyVisibleContext,privilegedContextRef:a.task.privilegedContextRef,artifactRefs:[],tags:a.task.tags}),i=await eo({binding:e,rewards:t,task:s,signal:a.signal,evidence:{output:a.attempt.output,artifactRefs:a.attempt.artifactRefs,runtimeEventRefs:a.attempt.runtimeEventRefs,infrastructureError:a.attempt.infrastructureError},customVerifier:a.customVerifier?async({grader:c})=>{let p=a.graders.find(m=>m.id===c.id);if(p?.kind!=="custom_verifier")throw new Error("Bound verifier projection is missing.");let u=await a.customVerifier({grader:p,task:a.task,attempt:a.attempt,signal:a.signal});return{score:u.score,passed:u.passed,rewardEligible:c.rewardEligible,failureClass:null,feedback:[u.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:u.evidenceRefs??[]}}:void 0,modelJudge:a.modelJudge?async({grader:c})=>{let p=a.graders.find(m=>m.id===c.id);if(p?.kind!=="model_judge")throw new Error("Bound judge projection is missing.");let u=await a.modelJudge({grader:p,task:a.task,attempt:a.attempt});return{score:u.score,passed:u.passed,rewardEligible:c.rewardEligible,failureClass:null,feedback:[u.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:u.evidenceRefs??[]}}:void 0}),n=i.training.status==="not_configured"?i.evaluation:i.training,d=R(a.graders);return{schemaVersion:"openpond.gradeResult.v1",id:`grade_${R([a.attempt.id,i.contentHash]).slice(0,24)}`,attemptId:a.attempt.id,graderSetHash:d,score:n.score,passed:n.passed===!0,components:i.results.map(c=>{let p=e.sources.find(m=>m.graderId===c.graderId),u=a.graders.find(m=>m.id===c.graderId);return{graderId:c.graderId,graderVersion:u.version,score:c.normalizedScore,passed:c.passed===!0,hardGate:p.hardGate,rewardEligible:p.role==="training"&&c.status==="scored",feedback:c.message?.trim()||null,evidenceRefs:c.evidenceHashes,judge:u.kind==="model_judge"?u.judge:null,calibrationStatus:u.kind==="model_judge"?u.calibrationStatus:"not_applicable"}}),failureClass:a.attempt.infrastructureError?"infrastructure_failure":n.status!=="scored"?"grader_failure":n.passed?null:"policy_failure",feedback:i.results.flatMap(c=>c.message?.trim()?[c.message.trim()]:[]),rewardEligible:i.training.status==="scored",rewardComposition:i,createdAt:a.now?.()??new Date().toISOString()}}l(Uc,"gradeLearningBatchAttempt");async function $g(a){if(a.learning)return Uc({...a,learning:a.learning});if(a.graders.some(s=>s.metadata.rewardBinding!==void 0))throw new Error("This Taskset requires its immutable public Reward binding to grade an attempt.");let e=R(a.graders),t=[];for(let s of a.graders)a.signal?.throwIfAborted(),t.push(a.attempt.infrastructureError?ut(s,null,!1,"Infrastructure failure; no reward was produced.",[],!1):await Mp(s,a.task,a.attempt,a.modelJudge,a.customVerifier,a.signal));let r=Kn({graders:a.graders,infrastructureError:a.attempt.infrastructureError,components:t.map(s=>({...s,failureClass:s.score===null?"grader_failure":s.passed?null:"policy_failure"}))});return{schemaVersion:"openpond.gradeResult.v1",id:`grade_${R([a.attempt.id,e,t]).slice(0,24)}`,attemptId:a.attempt.id,graderSetHash:e,score:r.score,passed:r.passed,components:t,failureClass:r.failureClass,feedback:a.attempt.infrastructureError?[a.attempt.infrastructureError]:t.flatMap(s=>s.feedback?[s.feedback]:[]),rewardEligible:r.rewardEligible,createdAt:a.now?.()??new Date().toISOString()}}l($g,"gradeAttempt");async function Mp(a,e,t,r,s,i){if(a.kind==="model_judge"){if(!r)return ut(a,null,!1,"Model judge runner is unavailable.",[],!1);if(a.calibrationStatus!=="passed")return ut(a,null,!1,"Model judge calibration has not passed.",[],!1);let d=await r({grader:a,task:e,attempt:t});return ut(a,d.score,d.passed,d.feedback,d.evidenceRefs??[])}if(a.kind==="human")return ut(a,null,!1,"Human review is pending.",[],!1);if(a.kind==="custom_verifier"){if(!s)return ut(a,null,!1,"Sandboxed verifier runner is unavailable.",[],!1);let d=await s({grader:a,task:e,attempt:t,signal:i});return ut(a,d.score,d.passed,d.feedback,d.evidenceRefs??[])}let n=Vn({grader:Jn(a),task:e,evidence:t});return ut(a,n.score,n.passed,n.feedback,[...t.artifactRefs,...t.runtimeEventRefs])}l(Mp,"runGrader");function ut(a,e,t,r,s,i=a.rewardEligible){let n=e!==null&&Number.isFinite(e)?Math.max(0,Math.min(1,e)):null;return{graderId:a.id,graderVersion:a.version,score:n,passed:n!==null&&t,hardGate:a.hardGate,rewardEligible:n!==null&&i,feedback:r,evidenceRefs:s,judge:a.kind==="model_judge"?a.judge:null,calibrationStatus:a.kind==="model_judge"?a.calibrationStatus:"not_applicable"}}l(ut,"component");import{access as Dp,mkdir as Ya,readFile as Rw,writeFile as It}from"node:fs/promises";import ce from"node:path";async function jc(a,e,t={}){let r=B.parse(a),s=ai(r);if(!s.valid)throw new Error(s.issues.map(n=>`${n.code}: ${n.message}`).join(`
188
- `));await Ya(ce.join(e,"data"),{recursive:!0}),await Ya(ce.join(e,"graders"),{recursive:!0}),await Ya(ce.join(e,"environment"),{recursive:!0}),await Ya(ce.join(e,"fixtures"),{recursive:!0});let i=[ce.join(e,"taskset.json"),ce.join(e,"capabilities.json"),ce.join(e,"data","tasks.jsonl"),ce.join(e,"graders","graders.json"),ce.join(e,"fixtures","grader-fixtures.json"),ce.join(e,"environment","taskset.ts")];await It(i[0],K(r),"utf8"),await It(i[1],K(r.capabilities),"utf8"),await It(i[2],r.tasks.map(n=>JSON.stringify(n)).join(`
189
- `)+`
190
- `,"utf8"),await It(i[3],K(r.graders),"utf8"),await It(i[4],K(r.graderFixtures),"utf8"),await It(i[5],Xp(r),"utf8");for(let n of t.generatedFiles??[]){let d=Fc(n.path,n.role),c=ce.join(e,d);await Ya(ce.dirname(c),{recursive:!0}),await It(c,n.content,"utf8"),i.push(c)}for(let n of r.graders){if(n.kind!=="custom_verifier")continue;let d=Fc(n.module,"verifier");try{await Dp(ce.join(e,d))}catch{throw new Error(`Custom verifier ${n.id} is missing generated source ${d}.`)}}return{directory:e,files:i,taskset:r}}l(jc,"buildTaskset");function Fc(a,e){let t=a.replaceAll("\\","/");if(ce.posix.isAbsolute(t)||t.split("/").includes(".."))throw new Error(`Generated ${e} path must stay inside the Taskset: ${a}.`);let r=e==="verifier"?"graders/":e==="environment"?"environment/":"fixtures/";if(!t.startsWith(r))throw new Error(`Generated ${e} path must start with ${r}.`);return t}l(Fc,"safeGeneratedPath");function Xp(a){return`// Generated by @openpond/taskset-sdk.
191
- export const environment = ${JSON.stringify(a.environment,null,2)} as const;
192
- export const tasks = ${JSON.stringify(a.tasks.map(e=>({id:e.id,input:e.input,split:e.split})),null,2)} as const;
193
- `}l(Xp,"generatedEnvironmentSource");import{randomUUID as gn}from"node:crypto";import{promises as P}from"node:fs";import L from"node:path";import{execFile as Up}from"node:child_process";import{promises as Je}from"node:fs";import ta from"node:path";import{promisify as Fp}from"node:util";var jp=Fp(Up);async function Vw(a){let e=ta.join(a.runPath,"package.json"),t=await Je.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 Je.writeFile(e,`{"type":"module"}
194
- `,{flag:"wx"});let r=await Hi(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??Bp)(r,i,a.runPath)}let s=ta.join(a.runPath,"node_modules","openpond-agent-sdk");if(!await Je.lstat(s).catch(()=>null)){let i=JSON.parse(await Je.readFile(e,"utf8"));if({...ns(i.dependencies),...ns(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 Id();await Je.mkdir(ta.dirname(s),{recursive:!0}),await Je.symlink(d,s,"dir")}}l(Vw,"prepareReleasedProfileActionDependencies");async function Hi(a){let e=ta.join(a,"package.json"),t=await Je.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 Je.readFile(e,"utf8")),s={...ns(r.dependencies),...ns(r.optionalDependencies)};if(Object.keys(s).length){for(let[d,c]of Object.entries(s))if(/^(?:file:|link:|workspace:|git\+|https?:)/i.test(c))throw new Error(`Released Profile Agent dependency ${d} must use a portable registry version.`);let i=await Bc(ta.join(a,"package-lock.json")),n=await Bc(ta.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}l(Hi,"inspectReleasedProfileActionDependencies");function ns(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)}l(ns,"dependencyMap");async function Bc(a){let e=await Je.lstat(a).catch(()=>null);if(e&&(!e.isFile()||e.isSymbolicLink()))throw new Error("Released Profile Agent lockfile must be a regular file.");return!!e}l(Bc,"regularFile");async function Bp(a,e,t){try{let r=process.platform==="win32"?`${a}.cmd`:a;await jp(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.`)}}l(Bp,"installLockedDependencies");import{constants as qp,promises as pt}from"node:fs";import Te from"node:path";async function qc(a){let e=await pt.lstat(a);if(e.isSymbolicLink())throw new Error(`Profile source cannot be a symlink: ${a}`);if(e.isFile())return[Te.basename(a)];if(!e.isDirectory())throw new Error(`Profile source is not a file or directory: ${a}`);return aa(a)}l(qc,"sourceFilesForImport");function Wc(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]}l(Wc,"selectAgentPrimaryFile");async function mt(a,e){let t=await pt.lstat(a);if(!t.isFile()||t.isSymbolicLink())throw new Error(`Harness import source must be a regular non-symlink file: ${a}`);await pt.mkdir(Te.dirname(e),{recursive:!0}),await pt.copyFile(a,e,qp.COPYFILE_EXCL)}l(mt,"copyRegularFile");function Va(a){let e=Te.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"}l(Va,"mediaTypeForPath");async function os(a,e){let t=Te.resolve(a,...e.split("/")),r=Te.relative(a,t);if(!r||r.startsWith("..")||Te.isAbsolute(r))throw new Error(`Harness source path escapes its root: ${e}`);let s=await pt.lstat(t);if(!s.isFile()||s.isSymbolicLink())throw new Error(`Harness source path must be a regular non-symlink file: ${e}`);let i=await pt.realpath(t),n=Te.relative(await pt.realpath(a),i);if(n.startsWith("..")||Te.isAbsolute(n))throw new Error(`Harness source path resolves outside its root: ${e}`);return t}l(os,"resolveContainedRegularFile");async function aa(a,e=a){let t=await pt.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=Te.join(e,s.name);if(s.isSymbolicLink())throw new Error(`Harness source cannot contain symlinks: ${Te.relative(a,i)}`);if(s.isDirectory())r.push(...await aa(a,i));else if(s.isFile())r.push(Te.relative(a,i).split(Te.sep).join("/"));else throw new Error(`Harness source contains an unsupported entry: ${Te.relative(a,i)}`)}return r.sort()}l(aa,"listRegularFiles");function Le(a){return a.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"harness"}l(Le,"safeSegment");var Wp=new Set(["contentsBase64","contentBase64","fileBase64","bodyBase64"]),$p=new Set(["command.output","tool.completed","workspace_action_result"]);function ds(a){return Mi(Yp(a),0,"")}l(ds,"sanitizeRuntimeEvent");function Yp(a){if(!$p.has(a.name)||typeof a.output!="string"||zp(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=`
195
- [openpond event output compacted: ${s} chars omitted from ${e} chars]
196
- `,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:Vp(a.data,d)}}l(Yp,"compactLargeRuntimeEventOutput");function Vp(a,e){return a===void 0?{outputCompaction:e}:Di(a)?{...a,outputCompaction:e}:a}l(Vp,"compactedEventData");function Mi(a,e,t){if(typeof a=="string")return Jp(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=>Mi(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,Mi(s,e+1,r)]))}l(Mi,"sanitizeEventValue");function Jp(a,e){return Wp.has(e)?`[redacted base64 content: ${Kp(a)} bytes]`:a.length<=12e4?a:`${a.slice(0,12e4)}
197
- [event string truncated: ${a.length-12e4} chars omitted]`}l(Jp,"sanitizeEventString");function Kp(a){let e=a.endsWith("==")?2:a.endsWith("=")?1:0;return Math.max(0,Math.floor(a.length*3/4)-e)}l(Kp,"estimatedBase64Bytes");function Di(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}l(Di,"isPlainRecord");function zp(a){if(!Di(a))return!1;let e=a.outputCompaction;return Di(e)&&e.schemaVersion==="openpond.runtimeEventOutputCompaction.v1"}l(zp,"hasOutputCompaction");async function cs(a,e){return(await a.allPayloadRows(`SELECT payload FROM ${e} ORDER BY sort_index ASC`)).map(r=>JSON.parse(r.payload))}l(cs,"readStorePayloads");function Ja(a){let e=a,t=Hn.safeParse(e.openPondCommandAccessMode);return{...e,experience:Gp(e),openPondCommandAccessMode:t.success?t.data:Cn,currentProfile:e.currentProfile??null}}l(Ja,"normalizeSessionPayload");function Gp(a){let e=Od.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"}l(Gp,"storedSessionExperience");async function $c(a){return{sessions:(await cs(a,"sessions")).map(Ja),turns:await cs(a,"turns"),events:(await cs(a,"events")).map(ds),approvals:await cs(a,"approvals")}}l($c,"readStoreData");async function Yc(a,e){let t=ge();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}}l(Yc,"persistStoreData");import uf from"node:path";import{randomUUID as Qm}from"node:crypto";import{cp as Zm,mkdir as ef,readdir as tf,rename as ln,rm as Ru,stat as af}from"node:fs/promises";import dr from"node:path";var Re=o.string().trim().min(1).max(500),ra=o.iso.datetime({offset:!0}),Ka=o.object({schemaVersion:o.literal("openpond.preferenceComparisonReleaseRecord.v1"),id:Re,tasksetId:Re,tasksetRelease:Me,release:qo,publishedBy:Re,sourceConsent:o.enum(["authorized","revoked"]),retentionUntil:ra.nullable(),createdAt:ra}).strict(),Ot=o.object({schemaVersion:o.literal("openpond.preferenceComparisonAssignmentRecord.v1"),id:Re,tasksetId:Re,assignment:Wo,state:o.enum(["queued","in_review","submitted","unreviewable","revoked"]),reviewerKey:Re.nullable(),unreviewableReason:o.string().trim().min(1).max(2e3).nullable(),createdAt:ra,updatedAt:ra}).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."})}),za=o.object({schemaVersion:o.literal("openpond.preferenceComparisonSubmissionRecord.v1"),id:Re,tasksetId:Re,assignmentId:Re,reviewerKey:Re,receipt:$o,submittedAt:ra}).strict(),Xi=o.object({schemaVersion:o.literal("openpond.preferenceComparisonCalibrationRecord.v1"),id:Re,tasksetId:Re,report:Yo,createdAt:ra}).strict();function Vc(a,e,t){let r=Ud.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)}l(Vc,"isArtifactCollectionRecoveryTransition");function Ui(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,c)=>d+c.attemptCount,0),r=a.evaluation.attemptPlan.reduce((d,c)=>d+c.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)}l(Ui,"isCheckpointResumeTransition");var Ae=o.object({id:se,scope:se,sourceId:se,name:o.string().trim().min(1).max(100),keyPrefix:o.string().min(1).max(100),createdAt:o.iso.datetime(),expiresAt:o.iso.datetime(),revokedAt:o.iso.datetime().nullable()}).strict(),Fi=o.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/),ls=o.discriminatedUnion("action",[o.object({action:o.literal("create"),scope:se,sourceId:se,name:o.string().trim().min(1).max(100),expiresAt:o.iso.datetime(),operationId:se,apiKey:Fi}).strict(),o.object({action:o.literal("list"),scope:se,sourceId:se,afterId:se.optional(),limit:o.number().int().min(1).max(100).default(30)}).strict(),o.object({action:o.literal("revoke"),scope:se,sourceId:se,id:se}).strict()]),Jc=o.object({credential:Ae,apiKey:Fi}).strict(),Kc=o.object({items:o.array(Ae).max(100),nextCursor:se.nullable()}).strict(),zc=o.object({scope:se,sourceId:se}).strict(),Gc=o.object({scope:se,source:Xt,taskDefinition:Xt,enabled:o.boolean(),allowedSplits:o.array(Et).min(1).max(4)}).strict();function Qp(a,e){let t=Date.parse(o.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.")}l(Qp,"assertLearningCredentialExpiry");var Qc=o.object({batchId:o.string().trim().min(1).max(500),modelProjectId:o.string().trim().min(1).max(500)}).strict(),Zc=o.object({batchId:o.string().min(1),projectId:o.string().min(1),tasksetId:o.string().min(1),releaseId:o.string().min(1),revision:o.number().int().positive(),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),le=class extends Error{static{l(this,"OpenPondLearningError")}constructor(a,e,t,r){super(t),this.status=a,this.code=e,this.details=r,this.name="OpenPondLearningError"}status;code;details},Zp=class{static{l(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={}){bo(a);let t=Lo.parse({scope:this.#e.scope,command:a}),r=Po.parse(await this.#t("commands",t,e));if(r.operationId!==a.operationId)throw new le(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=tt.parse({action:"get",scope:this.#e.scope,kind:a,id:e,...t===void 0?{}:{revision:t}});return fe[a].parse(await this.#t("read",s,r))}async inspectEvidence(a,e={}){let t=tt.parse({action:"inspect_evidence",scope:this.#e.scope,evidence:a}),r=Ao.parse(await this.#t("read",t,e));if(!C(r.evidence,a))throw new le(502,"evidence_identity_mismatch","Inspection did not match the requested evidence release.",null);return r}async inspectTaskQueue(a=null,e={}){let t=tt.parse({action:"inspect_task_queue",scope:this.#e.scope,modelProjectId:a}),r=Io.parse(await this.#t("read",t,e));if(r.modelProjectId!==a)throw new le(502,"model_identity_mismatch","Task queue did not match the requested Model.",null);return r}async inspectPolicy(a,e={}){let t=tt.parse({action:"inspect_policy",scope:this.#e.scope,policy:a}),r=So.parse(await this.#t("read",t,e));if(!C(r.policy,a))throw new le(502,"policy_identity_mismatch","Inspection did not match the requested policy release.",null);return r}async createSourceCredential(a,e={}){let t=ls.parse({...a,action:"create",scope:this.#e.scope}),r=Jc.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 le(502,"credential_identity_mismatch","Credential response did not match the prepared credential.",null);return r}async listSourceCredentials(a,e={},t={}){let r=ls.parse({...e,action:"list",scope:this.#e.scope,sourceId:a}),s=Kc.parse(await this.#t("credentials",r,t));if(s.items.length>(e.limit??30))throw new le(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=ls.parse({action:"revoke",scope:this.#e.scope,sourceId:a,id:e}),s=Ae.parse(await this.#t("credentials",r,t));if(this.#a(s,a),s.id!==e||s.revokedAt===null)throw new le(502,"credential_revocation_mismatch","Credential revocation did not match the requested credential.",null);return s}async sourceConfiguration(a,e={}){let t=zc.parse({scope:this.#e.scope,sourceId:a}),r=Gc.parse(await this.#t("source-config",t,e));if(r.scope!==this.#e.scope||r.source.id!==a)throw new le(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 le(502,"credential_scope_mismatch","Credential response did not match the requested source.",null)}async list(a,e={},t={}){let r=tt.parse({action:"list",scope:this.#e.scope,kind:a,...e});return o.object({items:o.array(fe[a]).max(100),nextCursor:o.string().nullable()}).strict().parse(await this.#t("read",r,t))}async publishBatch(a,e={}){let t=Qc.parse(a),r=Zc.parse(await this.#t("publish-batch",{...t,scope:this.#e.scope},e));if(r.batchId!==t.batchId)throw new le(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 em(r);if(!r.ok){let i=o.object({code:o.string().optional(),error:o.string().optional()}).passthrough().safeParse(s);throw new le(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 em(a){let t=a.body?.getReader();if(!t)throw new le(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 le(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 He(n,16777216),n}finally{await t.cancel(),t.releaseLock()}}l(em,"readBoundedLearningResponse");import{backup as cm}from"node:sqlite";import{promises as Ji}from"node:fs";import Qa from"node:path";var el=`
198
- CREATE TABLE IF NOT EXISTS sessions (
199
- id TEXT PRIMARY KEY,
200
- sort_index INTEGER NOT NULL,
201
- payload TEXT NOT NULL,
202
- updated_at TEXT NOT NULL
203
- );
204
-
205
- CREATE TABLE IF NOT EXISTS turns (
206
- id TEXT PRIMARY KEY,
207
- session_id TEXT NOT NULL,
208
- sort_index INTEGER NOT NULL,
209
- payload TEXT NOT NULL,
210
- updated_at TEXT NOT NULL
211
- );
212
-
213
- CREATE TABLE IF NOT EXISTS events (
214
- id TEXT PRIMARY KEY,
215
- session_id TEXT,
216
- turn_id TEXT,
217
- name TEXT NOT NULL,
218
- timestamp TEXT NOT NULL,
219
- sequence INTEGER NOT NULL,
220
- sort_index INTEGER NOT NULL,
221
- payload TEXT NOT NULL
222
- );
223
-
224
- CREATE UNIQUE INDEX IF NOT EXISTS events_sequence_idx ON events(sequence);
225
- CREATE INDEX IF NOT EXISTS events_session_id_idx ON events(session_id);
226
- CREATE INDEX IF NOT EXISTS events_session_sequence_idx ON events(session_id, sequence);
227
- CREATE INDEX IF NOT EXISTS events_timestamp_idx ON events(timestamp);
228
-
229
- CREATE TABLE IF NOT EXISTS approvals (
230
- id TEXT PRIMARY KEY,
231
- session_id TEXT NOT NULL,
232
- status TEXT NOT NULL,
233
- sort_index INTEGER NOT NULL,
234
- payload TEXT NOT NULL,
235
- updated_at TEXT NOT NULL
236
- );
237
-
238
- CREATE INDEX IF NOT EXISTS approvals_status_idx ON approvals(status);
239
-
240
- CREATE TABLE IF NOT EXISTS create_improve_runs (
241
- id TEXT PRIMARY KEY,
242
- profile_id TEXT NOT NULL,
243
- conversation_id TEXT,
244
- origin_turn_id TEXT,
245
- target_kind TEXT NOT NULL,
246
- target_id TEXT,
247
- state TEXT NOT NULL,
248
- revision INTEGER NOT NULL,
249
- payload TEXT NOT NULL,
250
- created_at TEXT NOT NULL,
251
- updated_at TEXT NOT NULL
252
- );
253
-
254
- CREATE INDEX IF NOT EXISTS create_improve_runs_profile_state_updated_idx
255
- ON create_improve_runs(profile_id, state, updated_at DESC);
256
-
257
- CREATE INDEX IF NOT EXISTS create_improve_runs_conversation_updated_idx
258
- ON create_improve_runs(conversation_id, updated_at DESC);
259
-
260
- CREATE INDEX IF NOT EXISTS create_improve_runs_target_updated_idx
261
- ON create_improve_runs(profile_id, target_kind, target_id, updated_at DESC);
262
-
263
- CREATE TABLE IF NOT EXISTS create_improve_run_actions (
264
- action_id TEXT PRIMARY KEY,
265
- run_id TEXT NOT NULL,
266
- expected_revision INTEGER NOT NULL,
267
- resulting_revision INTEGER NOT NULL,
268
- payload TEXT NOT NULL,
269
- created_at TEXT NOT NULL,
270
- FOREIGN KEY(run_id) REFERENCES create_improve_runs(id) ON DELETE CASCADE
271
- );
272
-
273
- CREATE INDEX IF NOT EXISTS create_improve_run_actions_run_revision_idx
274
- ON create_improve_run_actions(run_id, resulting_revision);
275
-
276
- CREATE TABLE IF NOT EXISTS cache_entries (
277
- type TEXT NOT NULL,
278
- cache_key TEXT NOT NULL,
279
- payload TEXT NOT NULL,
280
- updated_at TEXT NOT NULL,
281
- error TEXT,
282
- PRIMARY KEY (type, cache_key)
283
- );
284
-
285
- CREATE INDEX IF NOT EXISTS cache_entries_type_idx ON cache_entries(type);
286
-
287
- CREATE TABLE IF NOT EXISTS sidebar_app_preferences (
288
- scope TEXT NOT NULL,
289
- app_id TEXT NOT NULL,
290
- pinned INTEGER NOT NULL DEFAULT 0,
291
- archived INTEGER NOT NULL DEFAULT 0,
292
- sort_order INTEGER,
293
- updated_at TEXT NOT NULL,
294
- PRIMARY KEY (scope, app_id)
295
- );
296
-
297
- CREATE INDEX IF NOT EXISTS sidebar_app_preferences_scope_idx ON sidebar_app_preferences(scope);
298
-
299
- CREATE TABLE IF NOT EXISTS sidebar_file_bookmarks (
300
- scope TEXT NOT NULL,
301
- workspace_kind TEXT NOT NULL,
302
- workspace_id TEXT NOT NULL,
303
- workspace_name TEXT NOT NULL,
304
- file_path TEXT NOT NULL,
305
- status TEXT NOT NULL,
306
- sort_order INTEGER,
307
- source_session_id TEXT,
308
- created_at TEXT NOT NULL,
309
- updated_at TEXT NOT NULL,
310
- PRIMARY KEY (scope, workspace_kind, workspace_id, file_path)
311
- );
312
-
313
- CREATE INDEX IF NOT EXISTS sidebar_file_bookmarks_scope_status_order_idx
314
- ON sidebar_file_bookmarks(scope, status, sort_order, updated_at);
315
-
316
- CREATE TABLE IF NOT EXISTS model_usage_records (
317
- id TEXT PRIMARY KEY,
318
- request_id TEXT NOT NULL UNIQUE,
319
- request_ordinal INTEGER NOT NULL,
320
- session_id TEXT,
321
- turn_id TEXT,
322
- provider TEXT NOT NULL,
323
- model TEXT NOT NULL,
324
- route TEXT NOT NULL,
325
- source TEXT NOT NULL,
326
- request_kind TEXT NOT NULL,
327
- visibility TEXT NOT NULL,
328
- status TEXT NOT NULL,
329
- started_at TEXT NOT NULL,
330
- completed_at TEXT,
331
- duration_ms INTEGER,
332
- first_token_ms INTEGER,
333
- prompt_tokens INTEGER,
334
- cached_prompt_tokens INTEGER,
335
- uncached_prompt_tokens INTEGER,
336
- cache_write_prompt_tokens INTEGER,
337
- cache_telemetry_source TEXT,
338
- completion_tokens INTEGER,
339
- total_tokens INTEGER,
340
- error_type TEXT,
341
- error_message TEXT,
342
- attribution_json TEXT NOT NULL
343
- );
344
-
345
- CREATE INDEX IF NOT EXISTS model_usage_started_at_idx
346
- ON model_usage_records(started_at);
347
-
348
- CREATE INDEX IF NOT EXISTS model_usage_provider_model_started_idx
349
- ON model_usage_records(provider, model, started_at);
350
-
351
- CREATE INDEX IF NOT EXISTS model_usage_session_turn_ordinal_idx
352
- ON model_usage_records(session_id, turn_id, request_ordinal);
353
-
354
- CREATE INDEX IF NOT EXISTS model_usage_request_kind_started_idx
355
- ON model_usage_records(request_kind, started_at);
356
-
357
- CREATE INDEX IF NOT EXISTS model_usage_visibility_started_idx
358
- ON model_usage_records(visibility, started_at);
359
-
360
- CREATE INDEX IF NOT EXISTS model_usage_status_started_idx
361
- ON model_usage_records(status, started_at);
362
-
363
- CREATE TABLE IF NOT EXISTS projection_session_shells (
364
- id TEXT PRIMARY KEY,
365
- sort_index INTEGER NOT NULL,
366
- payload TEXT NOT NULL,
367
- updated_at TEXT NOT NULL
368
- );
369
-
370
- CREATE TABLE IF NOT EXISTS projection_thread_details (
371
- session_id TEXT PRIMARY KEY,
372
- event_count INTEGER NOT NULL,
373
- latest_event_sequence INTEGER NOT NULL,
374
- latest_event_at TEXT,
375
- latest_turn_id TEXT,
376
- latest_turn_status TEXT,
377
- pending_approval_count INTEGER NOT NULL,
378
- payload TEXT NOT NULL,
379
- updated_at TEXT NOT NULL
380
- );
381
-
382
- CREATE TABLE IF NOT EXISTS projection_approvals (
383
- id TEXT PRIMARY KEY,
384
- session_id TEXT NOT NULL,
385
- status TEXT NOT NULL,
386
- sort_index INTEGER NOT NULL,
387
- payload TEXT NOT NULL,
388
- updated_at TEXT NOT NULL
389
- );
390
-
391
- CREATE INDEX IF NOT EXISTS projection_approvals_status_sort_idx
392
- ON projection_approvals(status, sort_index);
393
-
394
- CREATE TABLE IF NOT EXISTS projection_latest_turns (
395
- session_id TEXT PRIMARY KEY,
396
- turn_id TEXT NOT NULL,
397
- status TEXT NOT NULL,
398
- sort_index INTEGER NOT NULL,
399
- payload TEXT NOT NULL,
400
- updated_at TEXT NOT NULL
401
- );
402
-
403
- CREATE TABLE IF NOT EXISTS local_agent_schedules (
404
- id TEXT PRIMARY KEY,
405
- local_project_id TEXT NOT NULL,
406
- schedule_name TEXT NOT NULL,
407
- enabled INTEGER NOT NULL,
408
- next_run_at TEXT,
409
- payload TEXT NOT NULL,
410
- created_at TEXT NOT NULL,
411
- updated_at TEXT NOT NULL
412
- );
413
-
414
- CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedules_project_name_idx
415
- ON local_agent_schedules(local_project_id, schedule_name);
416
-
417
- CREATE INDEX IF NOT EXISTS local_agent_schedules_due_idx
418
- ON local_agent_schedules(enabled, next_run_at);
419
-
420
- CREATE TABLE IF NOT EXISTS local_agent_schedule_runs (
421
- id TEXT PRIMARY KEY,
422
- schedule_id TEXT NOT NULL,
423
- local_project_id TEXT NOT NULL,
424
- schedule_name TEXT NOT NULL,
425
- scheduled_for TEXT NOT NULL,
426
- trigger TEXT NOT NULL,
427
- status TEXT NOT NULL,
428
- payload TEXT NOT NULL,
429
- created_at TEXT NOT NULL,
430
- updated_at TEXT NOT NULL
431
- );
432
-
433
- CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_time_idx
434
- ON local_agent_schedule_runs(schedule_id, scheduled_for, trigger);
435
-
436
- CREATE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_idx
437
- ON local_agent_schedule_runs(schedule_id, created_at DESC);
438
-
439
- CREATE TABLE IF NOT EXISTS subagent_runs (
440
- id TEXT PRIMARY KEY,
441
- parent_session_id TEXT NOT NULL,
442
- parent_turn_id TEXT,
443
- child_session_id TEXT,
444
- role_id TEXT NOT NULL,
445
- status TEXT NOT NULL,
446
- payload TEXT NOT NULL,
447
- created_at TEXT NOT NULL,
448
- updated_at TEXT NOT NULL
449
- );
450
-
451
- CREATE INDEX IF NOT EXISTS subagent_runs_parent_session_status_idx
452
- ON subagent_runs(parent_session_id, status, updated_at DESC);
453
-
454
- CREATE INDEX IF NOT EXISTS subagent_runs_child_session_idx
455
- ON subagent_runs(child_session_id);
456
-
457
- CREATE TABLE IF NOT EXISTS subagent_messages (
458
- id TEXT PRIMARY KEY,
459
- from_run_id TEXT NOT NULL,
460
- to_run_id TEXT,
461
- to_role TEXT,
462
- kind TEXT NOT NULL,
463
- payload TEXT NOT NULL,
464
- created_at TEXT NOT NULL
465
- );
466
-
467
- CREATE INDEX IF NOT EXISTS subagent_messages_receiver_created_idx
468
- ON subagent_messages(to_run_id, to_role, created_at);
469
-
470
- CREATE TABLE IF NOT EXISTS training_sources (
471
- id TEXT PRIMARY KEY,
472
- profile_id TEXT NOT NULL,
473
- source_kind TEXT NOT NULL,
474
- session_id TEXT,
475
- source_hash TEXT NOT NULL,
476
- repository_id TEXT,
477
- revision TEXT,
478
- payload TEXT NOT NULL,
479
- created_at TEXT NOT NULL,
480
- updated_at TEXT NOT NULL
481
- );
482
- CREATE INDEX IF NOT EXISTS training_sources_profile_updated_idx ON training_sources(profile_id, updated_at DESC);
483
- CREATE INDEX IF NOT EXISTS training_sources_session_idx ON training_sources(session_id);
484
- CREATE INDEX IF NOT EXISTS training_sources_kind_updated_idx ON training_sources(profile_id, source_kind, updated_at DESC);
485
- CREATE INDEX IF NOT EXISTS training_sources_hash_idx ON training_sources(profile_id, source_hash);
486
- CREATE INDEX IF NOT EXISTS training_sources_repository_revision_idx ON training_sources(repository_id, revision);
487
-
488
- CREATE TABLE IF NOT EXISTS dataset_import_jobs (
489
- id TEXT PRIMARY KEY,
490
- profile_id TEXT NOT NULL,
491
- source_kind TEXT NOT NULL,
492
- status TEXT NOT NULL,
493
- repository_id TEXT,
494
- revision TEXT,
495
- taskset_id TEXT,
496
- payload TEXT NOT NULL,
497
- created_at TEXT NOT NULL,
498
- updated_at TEXT NOT NULL
499
- );
500
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_profile_updated_idx ON dataset_import_jobs(profile_id, updated_at DESC);
501
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_status_updated_idx ON dataset_import_jobs(status, updated_at DESC);
502
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_repository_revision_idx ON dataset_import_jobs(repository_id, revision);
503
-
504
- CREATE TABLE IF NOT EXISTS dataset_artifacts (
505
- id TEXT PRIMARY KEY,
506
- profile_id TEXT NOT NULL,
507
- taskset_id TEXT NOT NULL,
508
- taskset_revision INTEGER NOT NULL,
509
- content_hash TEXT NOT NULL,
510
- format TEXT NOT NULL,
511
- row_count INTEGER NOT NULL,
512
- storage_root TEXT NOT NULL,
513
- payload TEXT NOT NULL,
514
- created_at TEXT NOT NULL,
515
- updated_at TEXT NOT NULL
516
- );
517
- CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_taskset_revision_idx ON dataset_artifacts(taskset_id, taskset_revision);
518
- CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_content_hash_idx ON dataset_artifacts(content_hash);
519
- CREATE INDEX IF NOT EXISTS dataset_artifacts_profile_updated_idx ON dataset_artifacts(profile_id, updated_at DESC);
520
-
521
- CREATE TABLE IF NOT EXISTS training_chat_search_documents (
522
- session_id TEXT PRIMARY KEY,
523
- source TEXT NOT NULL,
524
- signature TEXT NOT NULL,
525
- title TEXT NOT NULL,
526
- updated_at TEXT NOT NULL,
527
- eligible INTEGER NOT NULL,
528
- body_indexed INTEGER NOT NULL DEFAULT 1
529
- );
530
-
531
- CREATE INDEX IF NOT EXISTS training_chat_search_documents_source_idx
532
- ON training_chat_search_documents(source);
533
-
534
- CREATE VIRTUAL TABLE IF NOT EXISTS training_chat_search_fts USING fts5(
535
- session_id UNINDEXED,
536
- title,
537
- body,
538
- tokenize = 'unicode61 remove_diacritics 2'
539
- );
540
-
541
- CREATE TABLE IF NOT EXISTS task_creation_snapshots (
542
- id TEXT PRIMARY KEY,
543
- profile_id TEXT NOT NULL,
544
- state TEXT NOT NULL,
545
- payload TEXT NOT NULL,
546
- created_at TEXT NOT NULL,
547
- updated_at TEXT NOT NULL
548
- );
549
- CREATE INDEX IF NOT EXISTS task_creation_profile_updated_idx ON task_creation_snapshots(profile_id, updated_at DESC);
550
-
551
- CREATE TABLE IF NOT EXISTS task_creation_transcripts (
552
- creation_id TEXT PRIMARY KEY,
553
- profile_id TEXT NOT NULL,
554
- payload TEXT NOT NULL,
555
- updated_at TEXT NOT NULL
556
- );
557
- CREATE INDEX IF NOT EXISTS task_creation_transcript_profile_idx ON task_creation_transcripts(profile_id, updated_at DESC);
558
-
559
- CREATE TABLE IF NOT EXISTS task_design_proposals (
560
- creation_id TEXT PRIMARY KEY,
561
- proposal_id TEXT NOT NULL,
562
- profile_id TEXT NOT NULL,
563
- state TEXT NOT NULL,
564
- payload TEXT NOT NULL,
565
- updated_at TEXT NOT NULL
566
- );
567
- CREATE UNIQUE INDEX IF NOT EXISTS task_design_proposal_id_idx ON task_design_proposals(proposal_id);
568
-
569
- CREATE TABLE IF NOT EXISTS tasksets (
570
- id TEXT PRIMARY KEY,
571
- profile_id TEXT NOT NULL,
572
- status TEXT NOT NULL,
573
- payload TEXT NOT NULL,
574
- created_at TEXT NOT NULL,
575
- updated_at TEXT NOT NULL
576
- );
577
- CREATE INDEX IF NOT EXISTS tasksets_profile_status_updated_idx ON tasksets(profile_id, status, updated_at DESC);
578
-
579
- CREATE TABLE IF NOT EXISTS taskset_drafts (
580
- id TEXT PRIMARY KEY,
581
- profile_id TEXT NOT NULL,
582
- status TEXT NOT NULL,
583
- revision INTEGER NOT NULL,
584
- payload TEXT NOT NULL,
585
- created_at TEXT NOT NULL,
586
- updated_at TEXT NOT NULL
587
- );
588
- CREATE INDEX IF NOT EXISTS taskset_drafts_profile_updated_idx ON taskset_drafts(profile_id, updated_at DESC);
589
-
590
- CREATE TABLE IF NOT EXISTS taskset_revisions (
591
- taskset_id TEXT NOT NULL,
592
- revision INTEGER NOT NULL,
593
- content_hash TEXT NOT NULL,
594
- profile_id TEXT NOT NULL,
595
- status TEXT NOT NULL,
596
- payload TEXT NOT NULL,
597
- created_at TEXT NOT NULL,
598
- updated_at TEXT NOT NULL,
599
- PRIMARY KEY(taskset_id, revision)
600
- );
601
- CREATE UNIQUE INDEX IF NOT EXISTS taskset_revisions_hash_idx ON taskset_revisions(taskset_id, content_hash);
602
-
603
- CREATE TABLE IF NOT EXISTS task_candidates (
604
- id TEXT PRIMARY KEY,
605
- profile_id TEXT NOT NULL,
606
- status TEXT NOT NULL,
607
- fingerprint TEXT NOT NULL,
608
- payload TEXT NOT NULL,
609
- created_at TEXT NOT NULL,
610
- updated_at TEXT NOT NULL
611
- );
612
- CREATE UNIQUE INDEX IF NOT EXISTS task_candidates_profile_fingerprint_idx ON task_candidates(profile_id, fingerprint);
613
- CREATE INDEX IF NOT EXISTS task_candidates_profile_status_updated_idx ON task_candidates(profile_id, status, updated_at DESC);
614
-
615
- CREATE TABLE IF NOT EXISTS task_attempts (
616
- id TEXT PRIMARY KEY,
617
- taskset_id TEXT NOT NULL,
618
- split TEXT NOT NULL,
619
- payload TEXT NOT NULL,
620
- created_at TEXT NOT NULL
621
- );
622
- CREATE INDEX IF NOT EXISTS task_attempts_taskset_split_idx ON task_attempts(taskset_id, split, created_at DESC);
623
-
624
- CREATE TABLE IF NOT EXISTS task_attempt_artifacts (
625
- id TEXT PRIMARY KEY,
626
- taskset_id TEXT NOT NULL,
627
- attempt_id TEXT NOT NULL,
628
- kind TEXT NOT NULL,
629
- payload TEXT NOT NULL,
630
- created_at TEXT NOT NULL
631
- );
632
- CREATE INDEX IF NOT EXISTS task_attempt_artifacts_attempt_idx ON task_attempt_artifacts(attempt_id, created_at);
633
- CREATE INDEX IF NOT EXISTS task_attempt_artifacts_taskset_idx ON task_attempt_artifacts(taskset_id, created_at);
634
-
635
- CREATE TABLE IF NOT EXISTS grade_results (
636
- id TEXT PRIMARY KEY,
637
- attempt_id TEXT NOT NULL,
638
- payload TEXT NOT NULL,
639
- created_at TEXT NOT NULL
640
- );
641
- CREATE INDEX IF NOT EXISTS grade_results_attempt_idx ON grade_results(attempt_id, created_at DESC);
642
-
643
- CREATE TABLE IF NOT EXISTS evaluation_results (
644
- id TEXT PRIMARY KEY,
645
- taskset_id TEXT NOT NULL,
646
- kind TEXT NOT NULL,
647
- payload TEXT NOT NULL,
648
- created_at TEXT NOT NULL
649
- );
650
- CREATE INDEX IF NOT EXISTS evaluation_results_taskset_kind_idx ON evaluation_results(taskset_id, kind, created_at DESC);
651
-
652
- CREATE TABLE IF NOT EXISTS benchmark_runs (
653
- id TEXT PRIMARY KEY,
654
- taskset_id TEXT NOT NULL,
655
- phase TEXT NOT NULL,
656
- payload TEXT NOT NULL,
657
- created_at TEXT NOT NULL
658
- );
659
- CREATE INDEX IF NOT EXISTS benchmark_runs_taskset_created_idx ON benchmark_runs(taskset_id, created_at DESC);
660
-
661
- CREATE TABLE IF NOT EXISTS benchmark_comparisons (
662
- id TEXT PRIMARY KEY,
663
- taskset_id TEXT NOT NULL,
664
- payload TEXT NOT NULL,
665
- created_at TEXT NOT NULL
666
- );
667
- CREATE INDEX IF NOT EXISTS benchmark_comparisons_taskset_created_idx ON benchmark_comparisons(taskset_id, created_at DESC);
668
-
669
- CREATE TABLE IF NOT EXISTS grader_audit_reports (
670
- id TEXT PRIMARY KEY,
671
- taskset_id TEXT NOT NULL,
672
- payload TEXT NOT NULL,
673
- created_at TEXT NOT NULL
674
- );
675
- CREATE INDEX IF NOT EXISTS grader_audit_taskset_idx ON grader_audit_reports(taskset_id, created_at DESC);
676
-
677
- CREATE TABLE IF NOT EXISTS readiness_reports (
678
- taskset_id TEXT PRIMARY KEY,
679
- payload TEXT NOT NULL,
680
- updated_at TEXT NOT NULL
681
- );
682
-
683
- CREATE TABLE IF NOT EXISTS task_miner_configs (
684
- profile_id TEXT PRIMARY KEY,
685
- payload TEXT NOT NULL,
686
- updated_at TEXT NOT NULL
687
- );
688
-
689
- CREATE TABLE IF NOT EXISTS task_miner_runs (
690
- id TEXT PRIMARY KEY,
691
- profile_id TEXT NOT NULL,
692
- status TEXT NOT NULL,
693
- payload TEXT NOT NULL,
694
- created_at TEXT NOT NULL,
695
- updated_at TEXT NOT NULL
696
- );
697
- CREATE INDEX IF NOT EXISTS task_miner_runs_profile_updated_idx ON task_miner_runs(profile_id, updated_at DESC);
698
- CREATE INDEX IF NOT EXISTS task_miner_runs_status_updated_idx ON task_miner_runs(status, updated_at DESC);
699
-
700
- CREATE TABLE IF NOT EXISTS model_projects (
701
- id TEXT PRIMARY KEY,
702
- profile_id TEXT NOT NULL,
703
- payload TEXT NOT NULL,
704
- created_at TEXT NOT NULL,
705
- updated_at TEXT NOT NULL
706
- );
707
- CREATE INDEX IF NOT EXISTS model_projects_profile_updated_idx ON model_projects(profile_id, updated_at DESC);
708
- CREATE TABLE IF NOT EXISTS model_versions (
709
- id TEXT PRIMARY KEY,
710
- model_id TEXT NOT NULL,
711
- profile_id TEXT NOT NULL,
712
- version_number INTEGER NOT NULL,
713
- kind TEXT NOT NULL,
714
- payload TEXT NOT NULL,
715
- created_at TEXT NOT NULL,
716
- UNIQUE(model_id, version_number)
717
- );
718
- CREATE INDEX IF NOT EXISTS model_versions_profile_created_idx ON model_versions(profile_id, created_at DESC);
719
- CREATE INDEX IF NOT EXISTS model_versions_model_idx ON model_versions(model_id, version_number DESC);
720
- CREATE TABLE IF NOT EXISTS model_runs (
721
- id TEXT PRIMARY KEY,
722
- model_id TEXT NOT NULL,
723
- model_version_id TEXT,
724
- profile_id TEXT NOT NULL,
725
- taskset_id TEXT NOT NULL,
726
- status TEXT NOT NULL,
727
- payload TEXT NOT NULL,
728
- created_at TEXT NOT NULL,
729
- updated_at TEXT NOT NULL
730
- );
731
- CREATE INDEX IF NOT EXISTS model_runs_profile_updated_idx ON model_runs(profile_id, updated_at DESC);
732
- CREATE INDEX IF NOT EXISTS model_runs_model_updated_idx ON model_runs(model_id, updated_at DESC);
733
- CREATE INDEX IF NOT EXISTS model_runs_taskset_updated_idx ON model_runs(taskset_id, updated_at DESC);
734
-
735
- CREATE TABLE IF NOT EXISTS model_comparison_series (
736
- id TEXT PRIMARY KEY,
737
- profile_id TEXT NOT NULL,
738
- model_project_id TEXT NOT NULL,
739
- status TEXT NOT NULL,
740
- payload TEXT NOT NULL,
741
- created_at TEXT NOT NULL,
742
- updated_at TEXT NOT NULL
743
- );
744
- CREATE INDEX IF NOT EXISTS model_comparison_series_profile_updated_idx ON model_comparison_series(profile_id, updated_at DESC);
745
- CREATE INDEX IF NOT EXISTS model_comparison_series_project_updated_idx ON model_comparison_series(model_project_id, updated_at DESC);
746
-
747
- CREATE TABLE IF NOT EXISTS model_comparison_series_entries (
748
- id TEXT PRIMARY KEY,
749
- series_id TEXT NOT NULL,
750
- profile_id TEXT NOT NULL,
751
- model_project_id TEXT NOT NULL,
752
- ordinal INTEGER NOT NULL,
753
- status TEXT NOT NULL,
754
- payload TEXT NOT NULL,
755
- created_at TEXT NOT NULL,
756
- updated_at TEXT NOT NULL,
757
- UNIQUE(series_id, ordinal)
758
- );
759
- CREATE INDEX IF NOT EXISTS model_comparison_entries_series_ordinal_idx ON model_comparison_series_entries(series_id, ordinal ASC);
760
- CREATE INDEX IF NOT EXISTS model_comparison_entries_project_updated_idx ON model_comparison_series_entries(model_project_id, updated_at DESC);
761
-
762
- CREATE TABLE IF NOT EXISTS reward_model_versions (
763
- id TEXT PRIMARY KEY,
764
- model_id TEXT NOT NULL,
765
- profile_id TEXT NOT NULL,
766
- version_number INTEGER NOT NULL,
767
- taskset_id TEXT NOT NULL,
768
- status TEXT NOT NULL,
769
- payload TEXT NOT NULL,
770
- created_at TEXT NOT NULL,
771
- UNIQUE(model_id, version_number)
772
- );
773
- CREATE INDEX IF NOT EXISTS reward_model_versions_profile_created_idx ON reward_model_versions(profile_id, created_at DESC);
774
- CREATE INDEX IF NOT EXISTS reward_model_versions_taskset_created_idx ON reward_model_versions(taskset_id, created_at DESC);
775
- CREATE TABLE IF NOT EXISTS reward_model_runs (
776
- id TEXT PRIMARY KEY,
777
- reward_model_id TEXT NOT NULL,
778
- profile_id TEXT NOT NULL,
779
- taskset_id TEXT NOT NULL,
780
- status TEXT NOT NULL,
781
- payload TEXT NOT NULL,
782
- created_at TEXT NOT NULL,
783
- updated_at TEXT NOT NULL
784
- );
785
- CREATE INDEX IF NOT EXISTS reward_model_runs_profile_updated_idx ON reward_model_runs(profile_id, updated_at DESC);
786
- CREATE INDEX IF NOT EXISTS reward_model_runs_taskset_updated_idx ON reward_model_runs(taskset_id, updated_at DESC);
787
-
788
- CREATE TABLE IF NOT EXISTS training_plans (
789
- id TEXT PRIMARY KEY,
790
- taskset_id TEXT NOT NULL,
791
- destination_id TEXT NOT NULL,
792
- payload TEXT NOT NULL,
793
- created_at TEXT NOT NULL
794
- );
795
- CREATE INDEX IF NOT EXISTS training_plans_taskset_idx ON training_plans(taskset_id, created_at DESC);
796
-
797
- CREATE TABLE IF NOT EXISTS training_bundles (
798
- id TEXT PRIMARY KEY,
799
- plan_id TEXT NOT NULL,
800
- content_hash TEXT NOT NULL,
801
- payload TEXT NOT NULL,
802
- created_at TEXT NOT NULL
803
- );
804
- CREATE UNIQUE INDEX IF NOT EXISTS training_bundles_content_hash_idx ON training_bundles(content_hash);
805
-
806
- CREATE TABLE IF NOT EXISTS training_jobs (
807
- id TEXT PRIMARY KEY,
808
- plan_id TEXT NOT NULL,
809
- destination_id TEXT NOT NULL,
810
- status TEXT NOT NULL,
811
- payload TEXT NOT NULL,
812
- created_at TEXT NOT NULL,
813
- updated_at TEXT NOT NULL
814
- );
815
- CREATE INDEX IF NOT EXISTS training_jobs_status_updated_idx ON training_jobs(status, updated_at DESC);
816
- CREATE INDEX IF NOT EXISTS training_jobs_plan_idx ON training_jobs(plan_id, created_at DESC);
817
-
818
- CREATE TABLE IF NOT EXISTS training_approvals (
819
- id TEXT PRIMARY KEY,
820
- plan_id TEXT NOT NULL,
821
- bundle_hash TEXT NOT NULL,
822
- payload TEXT NOT NULL,
823
- created_at TEXT NOT NULL
824
- );
825
- CREATE INDEX IF NOT EXISTS training_approvals_plan_idx ON training_approvals(plan_id, created_at DESC);
826
-
827
- CREATE TABLE IF NOT EXISTS training_job_events (
828
- id TEXT PRIMARY KEY,
829
- job_id TEXT NOT NULL,
830
- sequence INTEGER NOT NULL,
831
- payload TEXT NOT NULL,
832
- created_at TEXT NOT NULL,
833
- UNIQUE(job_id, sequence)
834
- );
835
- CREATE INDEX IF NOT EXISTS training_job_events_job_sequence_idx ON training_job_events(job_id, sequence);
836
-
837
- CREATE TABLE IF NOT EXISTS training_artifacts (
838
- id TEXT PRIMARY KEY,
839
- job_id TEXT NOT NULL,
840
- kind TEXT NOT NULL,
841
- payload TEXT NOT NULL,
842
- created_at TEXT NOT NULL
843
- );
844
- CREATE INDEX IF NOT EXISTS training_artifacts_job_kind_idx ON training_artifacts(job_id, kind, created_at DESC);
845
-
846
- CREATE TABLE IF NOT EXISTS model_artifact_lineage (
847
- id TEXT PRIMARY KEY,
848
- artifact_id TEXT NOT NULL,
849
- taskset_id TEXT NOT NULL,
850
- payload TEXT NOT NULL,
851
- created_at TEXT NOT NULL
852
- );
853
- CREATE UNIQUE INDEX IF NOT EXISTS model_lineage_artifact_idx ON model_artifact_lineage(artifact_id);
854
- CREATE INDEX IF NOT EXISTS model_lineage_taskset_idx ON model_artifact_lineage(taskset_id, created_at DESC);
855
-
856
- CREATE TABLE IF NOT EXISTS training_rollout_receipts (
857
- id TEXT PRIMARY KEY,
858
- job_id TEXT NOT NULL,
859
- taskset_id TEXT NOT NULL,
860
- provider_rollout_id TEXT NOT NULL UNIQUE,
861
- status TEXT NOT NULL,
862
- payload TEXT NOT NULL,
863
- created_at TEXT NOT NULL,
864
- updated_at TEXT NOT NULL
865
- );
866
-
867
- CREATE INDEX IF NOT EXISTS training_rollout_receipts_job_updated_idx
868
- ON training_rollout_receipts(job_id, updated_at DESC);
869
-
870
- CREATE INDEX IF NOT EXISTS training_rollout_receipts_taskset_updated_idx
871
- ON training_rollout_receipts(taskset_id, updated_at DESC);
872
-
873
- CREATE TABLE IF NOT EXISTS model_bindings (
874
- id TEXT PRIMARY KEY,
875
- profile_id TEXT NOT NULL,
876
- role TEXT NOT NULL,
877
- role_target_id TEXT NOT NULL,
878
- model_artifact_lineage_id TEXT NOT NULL,
879
- status TEXT NOT NULL,
880
- payload TEXT NOT NULL,
881
- created_at TEXT NOT NULL,
882
- updated_at TEXT NOT NULL
883
- );
884
-
885
- CREATE UNIQUE INDEX IF NOT EXISTS model_bindings_active_role_idx
886
- ON model_bindings(profile_id, role, role_target_id)
887
- WHERE status = 'active';
888
-
889
- CREATE INDEX IF NOT EXISTS model_bindings_model_idx
890
- ON model_bindings(model_artifact_lineage_id, updated_at DESC);
891
-
892
- `;async function tl(a){await a(`
893
- CREATE TABLE IF NOT EXISTS create_improve_runs (
894
- id TEXT PRIMARY KEY,
895
- profile_id TEXT NOT NULL,
896
- conversation_id TEXT,
897
- origin_turn_id TEXT,
898
- target_kind TEXT NOT NULL,
899
- target_id TEXT,
900
- state TEXT NOT NULL,
901
- revision INTEGER NOT NULL,
902
- payload TEXT NOT NULL,
903
- created_at TEXT NOT NULL,
904
- updated_at TEXT NOT NULL
905
- );
906
- CREATE INDEX IF NOT EXISTS create_improve_runs_profile_state_updated_idx
907
- ON create_improve_runs(profile_id, state, updated_at DESC);
908
- CREATE INDEX IF NOT EXISTS create_improve_runs_conversation_updated_idx
909
- ON create_improve_runs(conversation_id, updated_at DESC);
910
- CREATE INDEX IF NOT EXISTS create_improve_runs_target_updated_idx
911
- ON create_improve_runs(profile_id, target_kind, target_id, updated_at DESC);
912
- CREATE TABLE IF NOT EXISTS create_improve_run_actions (
913
- action_id TEXT PRIMARY KEY,
914
- run_id TEXT NOT NULL,
915
- expected_revision INTEGER NOT NULL,
916
- resulting_revision INTEGER NOT NULL,
917
- payload TEXT NOT NULL,
918
- created_at TEXT NOT NULL,
919
- FOREIGN KEY(run_id) REFERENCES create_improve_runs(id) ON DELETE CASCADE
920
- );
921
- CREATE INDEX IF NOT EXISTS create_improve_run_actions_run_revision_idx
922
- ON create_improve_run_actions(run_id, resulting_revision);
923
- `)}l(tl,"createCreateImproveRunTables");async function al(a){await a(`
924
- CREATE TABLE IF NOT EXISTS taskset_revisions (
925
- taskset_id TEXT NOT NULL,
926
- revision INTEGER NOT NULL,
927
- content_hash TEXT NOT NULL,
928
- profile_id TEXT NOT NULL,
929
- status TEXT NOT NULL,
930
- payload TEXT NOT NULL,
931
- created_at TEXT NOT NULL,
932
- updated_at TEXT NOT NULL,
933
- PRIMARY KEY(taskset_id, revision)
934
- );
935
- CREATE UNIQUE INDEX IF NOT EXISTS taskset_revisions_hash_idx
936
- ON taskset_revisions(taskset_id, content_hash);
937
- `)}l(al,"createTasksetRevisionTables");async function rl(a){await a(`
938
- 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);
939
- CREATE INDEX IF NOT EXISTS task_creation_transcript_profile_idx ON task_creation_transcripts(profile_id, updated_at DESC);
940
- 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);
941
- CREATE UNIQUE INDEX IF NOT EXISTS task_design_proposal_id_idx ON task_design_proposals(proposal_id);
942
- `)}l(rl,"createTaskCreationProjectionTables");async function sl(a){await a(`
943
- 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);
944
- CREATE INDEX IF NOT EXISTS grader_audit_taskset_idx ON grader_audit_reports(taskset_id, created_at DESC);
945
- `)}l(sl,"createGraderAuditTables");async function il(a){await a(`
946
- 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);
947
- CREATE INDEX IF NOT EXISTS task_attempt_artifacts_attempt_idx ON task_attempt_artifacts(attempt_id, created_at);
948
- CREATE INDEX IF NOT EXISTS task_attempt_artifacts_taskset_idx ON task_attempt_artifacts(taskset_id, created_at);
949
- `)}l(il,"createTaskAttemptArtifactTables");async function nl(a){await a(`
950
- CREATE TABLE IF NOT EXISTS training_rollout_receipts (
951
- id TEXT PRIMARY KEY,
952
- job_id TEXT NOT NULL,
953
- taskset_id TEXT NOT NULL,
954
- provider_rollout_id TEXT NOT NULL UNIQUE,
955
- status TEXT NOT NULL,
956
- payload TEXT NOT NULL,
957
- created_at TEXT NOT NULL,
958
- updated_at TEXT NOT NULL
959
- );
960
- CREATE INDEX IF NOT EXISTS training_rollout_receipts_job_updated_idx
961
- ON training_rollout_receipts(job_id, updated_at DESC);
962
- CREATE INDEX IF NOT EXISTS training_rollout_receipts_taskset_updated_idx
963
- ON training_rollout_receipts(taskset_id, updated_at DESC);
964
- CREATE TABLE IF NOT EXISTS model_bindings (
965
- id TEXT PRIMARY KEY,
966
- profile_id TEXT NOT NULL,
967
- role TEXT NOT NULL,
968
- role_target_id TEXT NOT NULL,
969
- model_artifact_lineage_id TEXT NOT NULL,
970
- status TEXT NOT NULL,
971
- payload TEXT NOT NULL,
972
- created_at TEXT NOT NULL,
973
- updated_at TEXT NOT NULL
974
- );
975
- CREATE UNIQUE INDEX IF NOT EXISTS model_bindings_active_role_idx
976
- ON model_bindings(profile_id, role, role_target_id)
977
- WHERE status = 'active';
978
- CREATE INDEX IF NOT EXISTS model_bindings_model_idx
979
- ON model_bindings(model_artifact_lineage_id, updated_at DESC);
980
- `)}l(nl,"createTrainingReceiptAndModelBindingTables");async function ol(a){await a(`
981
- CREATE TABLE IF NOT EXISTS preference_comparison_releases (
982
- id TEXT PRIMARY KEY,
983
- taskset_id TEXT NOT NULL,
984
- content_hash TEXT NOT NULL,
985
- source_consent TEXT NOT NULL,
986
- payload TEXT NOT NULL,
987
- created_at TEXT NOT NULL
988
- );
989
- CREATE UNIQUE INDEX IF NOT EXISTS preference_comparison_release_identity_idx
990
- ON preference_comparison_releases(taskset_id, content_hash);
991
- CREATE INDEX IF NOT EXISTS preference_comparison_release_taskset_idx
992
- ON preference_comparison_releases(taskset_id, created_at DESC);
993
-
994
- CREATE TABLE IF NOT EXISTS preference_comparison_assignments (
995
- id TEXT PRIMARY KEY,
996
- taskset_id TEXT NOT NULL,
997
- release_id TEXT NOT NULL,
998
- purpose TEXT NOT NULL,
999
- state TEXT NOT NULL,
1000
- reviewer_key TEXT,
1001
- payload TEXT NOT NULL,
1002
- created_at TEXT NOT NULL,
1003
- updated_at TEXT NOT NULL
1004
- );
1005
- CREATE INDEX IF NOT EXISTS preference_comparison_assignment_queue_idx
1006
- ON preference_comparison_assignments(taskset_id, state, created_at ASC);
1007
- CREATE INDEX IF NOT EXISTS preference_comparison_assignment_reviewer_idx
1008
- ON preference_comparison_assignments(reviewer_key, state, updated_at DESC);
1009
-
1010
- CREATE TABLE IF NOT EXISTS preference_comparison_submissions (
1011
- id TEXT PRIMARY KEY,
1012
- taskset_id TEXT NOT NULL,
1013
- assignment_id TEXT NOT NULL,
1014
- reviewer_key TEXT NOT NULL,
1015
- receipt_hash TEXT NOT NULL,
1016
- payload TEXT NOT NULL,
1017
- submitted_at TEXT NOT NULL,
1018
- UNIQUE(assignment_id, reviewer_key)
1019
- );
1020
- CREATE INDEX IF NOT EXISTS preference_comparison_submission_taskset_idx
1021
- ON preference_comparison_submissions(taskset_id, submitted_at DESC);
1022
-
1023
- CREATE TABLE IF NOT EXISTS preference_comparison_calibrations (
1024
- id TEXT PRIMARY KEY,
1025
- taskset_id TEXT NOT NULL,
1026
- release_id TEXT NOT NULL,
1027
- report_hash TEXT NOT NULL,
1028
- passed INTEGER NOT NULL,
1029
- payload TEXT NOT NULL,
1030
- created_at TEXT NOT NULL
1031
- );
1032
- CREATE UNIQUE INDEX IF NOT EXISTS preference_comparison_calibration_identity_idx
1033
- ON preference_comparison_calibrations(release_id, report_hash);
1034
- CREATE INDEX IF NOT EXISTS preference_comparison_calibration_taskset_idx
1035
- ON preference_comparison_calibrations(taskset_id, created_at DESC);
1036
- `)}l(ol,"createPreferenceComparisonTables");async function dl(a){(await a.all("PRAGMA table_info(training_sources)",[])).some(t=>t.name==="source_kind")||await a.exec(`
1037
- DROP INDEX IF EXISTS training_sources_profile_updated_idx;
1038
- DROP INDEX IF EXISTS training_sources_session_idx;
1039
- ALTER TABLE training_sources RENAME TO training_sources_legacy;
1040
- CREATE TABLE training_sources (
1041
- id TEXT PRIMARY KEY,
1042
- profile_id TEXT NOT NULL,
1043
- source_kind TEXT NOT NULL,
1044
- session_id TEXT,
1045
- source_hash TEXT NOT NULL,
1046
- repository_id TEXT,
1047
- revision TEXT,
1048
- payload TEXT NOT NULL,
1049
- created_at TEXT NOT NULL,
1050
- updated_at TEXT NOT NULL
1051
- );
1052
- INSERT INTO training_sources (
1053
- id, profile_id, source_kind, session_id, source_hash,
1054
- repository_id, revision, payload, created_at, updated_at
1055
- )
1056
- SELECT
1057
- id,
1058
- profile_id,
1059
- 'conversation',
1060
- session_id,
1061
- COALESCE(json_extract(payload, '$.sourceHash'), id),
1062
- NULL,
1063
- NULL,
1064
- payload,
1065
- created_at,
1066
- updated_at
1067
- FROM training_sources_legacy;
1068
- DROP TABLE training_sources_legacy;
1069
- `),await a.exec(`
1070
- CREATE INDEX IF NOT EXISTS training_sources_profile_updated_idx ON training_sources(profile_id, updated_at DESC);
1071
- CREATE INDEX IF NOT EXISTS training_sources_session_idx ON training_sources(session_id);
1072
- CREATE INDEX IF NOT EXISTS training_sources_kind_updated_idx ON training_sources(profile_id, source_kind, updated_at DESC);
1073
- CREATE INDEX IF NOT EXISTS training_sources_hash_idx ON training_sources(profile_id, source_hash);
1074
- CREATE INDEX IF NOT EXISTS training_sources_repository_revision_idx ON training_sources(repository_id, revision);
1075
-
1076
- CREATE TABLE IF NOT EXISTS dataset_import_jobs (
1077
- id TEXT PRIMARY KEY,
1078
- profile_id TEXT NOT NULL,
1079
- source_kind TEXT NOT NULL,
1080
- status TEXT NOT NULL,
1081
- repository_id TEXT,
1082
- revision TEXT,
1083
- taskset_id TEXT,
1084
- payload TEXT NOT NULL,
1085
- created_at TEXT NOT NULL,
1086
- updated_at TEXT NOT NULL
1087
- );
1088
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_profile_updated_idx ON dataset_import_jobs(profile_id, updated_at DESC);
1089
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_status_updated_idx ON dataset_import_jobs(status, updated_at DESC);
1090
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_repository_revision_idx ON dataset_import_jobs(repository_id, revision);
1091
-
1092
- CREATE TABLE IF NOT EXISTS dataset_artifacts (
1093
- id TEXT PRIMARY KEY,
1094
- profile_id TEXT NOT NULL,
1095
- taskset_id TEXT NOT NULL,
1096
- taskset_revision INTEGER NOT NULL,
1097
- content_hash TEXT NOT NULL,
1098
- format TEXT NOT NULL,
1099
- row_count INTEGER NOT NULL,
1100
- storage_root TEXT NOT NULL,
1101
- payload TEXT NOT NULL,
1102
- created_at TEXT NOT NULL,
1103
- updated_at TEXT NOT NULL
1104
- );
1105
- CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_taskset_revision_idx ON dataset_artifacts(taskset_id, taskset_revision);
1106
- CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_content_hash_idx ON dataset_artifacts(content_hash);
1107
- CREATE INDEX IF NOT EXISTS dataset_artifacts_profile_updated_idx ON dataset_artifacts(profile_id, updated_at DESC);
1108
- `)}l(dl,"createDatasetImportTables");async function cl(a){await a(`
1109
- CREATE TABLE IF NOT EXISTS sidebar_file_bookmarks (
1110
- scope TEXT NOT NULL,
1111
- workspace_kind TEXT NOT NULL,
1112
- workspace_id TEXT NOT NULL,
1113
- workspace_name TEXT NOT NULL,
1114
- file_path TEXT NOT NULL,
1115
- status TEXT NOT NULL,
1116
- sort_order INTEGER,
1117
- source_session_id TEXT,
1118
- created_at TEXT NOT NULL,
1119
- updated_at TEXT NOT NULL,
1120
- PRIMARY KEY (scope, workspace_kind, workspace_id, file_path)
1121
- );
1122
-
1123
- CREATE INDEX IF NOT EXISTS sidebar_file_bookmarks_scope_status_order_idx
1124
- ON sidebar_file_bookmarks(scope, status, sort_order, updated_at);
1125
- `)}l(cl,"createSidebarFileBookmarkTables");async function ll(a){await a(`
1126
- CREATE TABLE IF NOT EXISTS chat_workflows (
1127
- id TEXT PRIMARY KEY,
1128
- session_id TEXT NOT NULL,
1129
- enabled INTEGER NOT NULL,
1130
- next_run_at TEXT,
1131
- payload TEXT NOT NULL,
1132
- created_at TEXT NOT NULL,
1133
- updated_at TEXT NOT NULL
1134
- );
1135
-
1136
- CREATE INDEX IF NOT EXISTS chat_workflows_session_idx
1137
- ON chat_workflows(session_id, created_at DESC);
1138
- CREATE INDEX IF NOT EXISTS chat_workflows_due_idx
1139
- ON chat_workflows(enabled, next_run_at);
1140
-
1141
- CREATE TABLE IF NOT EXISTS chat_workflow_runs (
1142
- id TEXT PRIMARY KEY,
1143
- workflow_id TEXT NOT NULL,
1144
- session_id TEXT NOT NULL,
1145
- scheduled_for TEXT NOT NULL,
1146
- trigger TEXT NOT NULL,
1147
- status TEXT NOT NULL,
1148
- payload TEXT NOT NULL,
1149
- created_at TEXT NOT NULL,
1150
- updated_at TEXT NOT NULL
1151
- );
1152
-
1153
- CREATE UNIQUE INDEX IF NOT EXISTS chat_workflow_runs_occurrence_idx
1154
- ON chat_workflow_runs(workflow_id, scheduled_for, trigger);
1155
- CREATE INDEX IF NOT EXISTS chat_workflow_runs_workflow_idx
1156
- ON chat_workflow_runs(workflow_id, created_at DESC);
1157
- `)}l(ll,"createChatWorkflowTables");async function ul(a){await a(`
1158
- CREATE TABLE IF NOT EXISTS harness_workspaces (
1159
- id TEXT PRIMARY KEY,
1160
- owner_kind TEXT NOT NULL,
1161
- owner_id TEXT NOT NULL,
1162
- location TEXT NOT NULL,
1163
- revision INTEGER NOT NULL,
1164
- source_revision TEXT NOT NULL,
1165
- channel_revision INTEGER NOT NULL,
1166
- current_release_hash TEXT,
1167
- payload TEXT NOT NULL,
1168
- created_at TEXT NOT NULL,
1169
- updated_at TEXT NOT NULL
1170
- );
1171
-
1172
- CREATE INDEX IF NOT EXISTS harness_workspaces_owner_updated_idx
1173
- ON harness_workspaces(owner_kind, owner_id, updated_at DESC);
1174
-
1175
- CREATE TABLE IF NOT EXISTS harness_workspace_selections (
1176
- owner_kind TEXT NOT NULL,
1177
- owner_id TEXT NOT NULL,
1178
- workspace_id TEXT NOT NULL,
1179
- updated_at TEXT NOT NULL,
1180
- PRIMARY KEY(owner_kind, owner_id),
1181
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1182
- );
1183
-
1184
- CREATE INDEX IF NOT EXISTS harness_workspace_selections_workspace_idx
1185
- ON harness_workspace_selections(workspace_id);
1186
-
1187
- CREATE TABLE IF NOT EXISTS harness_workspace_settings (
1188
- workspace_id TEXT PRIMARY KEY,
1189
- background_review_enabled INTEGER NOT NULL DEFAULT 1,
1190
- updated_at TEXT NOT NULL,
1191
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1192
- );
1193
-
1194
- CREATE TABLE IF NOT EXISTS harness_evaluation_review_settings (
1195
- workspace_id TEXT PRIMARY KEY,
1196
- enabled INTEGER NOT NULL DEFAULT 0,
1197
- activity_enabled INTEGER NOT NULL DEFAULT 0,
1198
- activity_batch_size INTEGER NOT NULL DEFAULT 10,
1199
- cadence TEXT NOT NULL DEFAULT 'manual',
1200
- max_estimated_cost_usd REAL NOT NULL DEFAULT 0,
1201
- next_run_at TEXT,
1202
- last_run_at TEXT,
1203
- last_review_id TEXT,
1204
- last_review_hash TEXT,
1205
- last_classification TEXT,
1206
- last_error TEXT,
1207
- updated_at TEXT NOT NULL,
1208
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1209
- );
1210
-
1211
- CREATE INDEX IF NOT EXISTS harness_evaluation_review_settings_due_idx
1212
- ON harness_evaluation_review_settings(enabled, next_run_at);
1213
-
1214
- CREATE TABLE IF NOT EXISTS harness_release_records (
1215
- content_hash TEXT PRIMARY KEY,
1216
- id TEXT NOT NULL,
1217
- workspace_id TEXT NOT NULL,
1218
- source_revision TEXT NOT NULL,
1219
- bundle_path TEXT NOT NULL,
1220
- payload TEXT NOT NULL,
1221
- created_at TEXT NOT NULL,
1222
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1223
- );
1224
-
1225
- CREATE UNIQUE INDEX IF NOT EXISTS harness_release_records_id_hash_idx
1226
- ON harness_release_records(id, content_hash);
1227
- CREATE INDEX IF NOT EXISTS harness_release_records_workspace_created_idx
1228
- ON harness_release_records(workspace_id, created_at DESC);
1229
-
1230
- CREATE TABLE IF NOT EXISTS harness_improvement_artifacts (
1231
- content_hash TEXT PRIMARY KEY,
1232
- id TEXT NOT NULL,
1233
- workspace_id TEXT NOT NULL,
1234
- kind TEXT NOT NULL,
1235
- payload TEXT NOT NULL,
1236
- created_at TEXT NOT NULL,
1237
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1238
- );
1239
-
1240
- DROP INDEX IF EXISTS harness_improvement_artifacts_id_kind_idx;
1241
- CREATE INDEX IF NOT EXISTS harness_improvement_artifacts_id_kind_idx
1242
- ON harness_improvement_artifacts(id, kind);
1243
- CREATE INDEX IF NOT EXISTS harness_improvement_artifacts_workspace_kind_created_idx
1244
- ON harness_improvement_artifacts(workspace_id, kind, created_at DESC);
1245
-
1246
- CREATE TABLE IF NOT EXISTS harness_refinement_candidates (
1247
- candidate_id TEXT PRIMARY KEY,
1248
- workspace_id TEXT NOT NULL,
1249
- fingerprint TEXT NOT NULL,
1250
- status TEXT NOT NULL,
1251
- content_hash TEXT NOT NULL,
1252
- payload TEXT NOT NULL,
1253
- created_at TEXT NOT NULL,
1254
- updated_at TEXT NOT NULL,
1255
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1256
- );
1257
-
1258
- CREATE UNIQUE INDEX IF NOT EXISTS harness_refinement_candidates_workspace_fingerprint_idx
1259
- ON harness_refinement_candidates(workspace_id, fingerprint);
1260
- CREATE INDEX IF NOT EXISTS harness_refinement_candidates_workspace_status_updated_idx
1261
- ON harness_refinement_candidates(workspace_id, status, updated_at DESC);
1262
-
1263
- CREATE TABLE IF NOT EXISTS harness_cross_run_refinement_requests (
1264
- deduplication_key TEXT PRIMARY KEY,
1265
- workspace_id TEXT NOT NULL,
1266
- candidate_id TEXT NOT NULL,
1267
- admitted_release_hash TEXT NOT NULL,
1268
- content_hash TEXT NOT NULL,
1269
- payload TEXT NOT NULL,
1270
- created_at TEXT NOT NULL,
1271
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1272
- );
1273
-
1274
- CREATE INDEX IF NOT EXISTS harness_cross_run_refinement_requests_workspace_created_idx
1275
- ON harness_cross_run_refinement_requests(workspace_id, created_at DESC);
1276
-
1277
- CREATE TABLE IF NOT EXISTS harness_advance_receipts (
1278
- content_hash TEXT PRIMARY KEY,
1279
- id TEXT NOT NULL UNIQUE,
1280
- workspace_id TEXT NOT NULL,
1281
- decision TEXT NOT NULL,
1282
- payload TEXT NOT NULL,
1283
- created_at TEXT NOT NULL,
1284
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1285
- );
1286
-
1287
- CREATE INDEX IF NOT EXISTS harness_advance_receipts_workspace_created_idx
1288
- ON harness_advance_receipts(workspace_id, created_at DESC);
1289
-
1290
- CREATE TABLE IF NOT EXISTS harness_run_overlays (
1291
- run_id TEXT PRIMARY KEY,
1292
- overlay_id TEXT NOT NULL UNIQUE,
1293
- workspace_id TEXT NOT NULL,
1294
- revision INTEGER NOT NULL,
1295
- status TEXT NOT NULL,
1296
- payload TEXT NOT NULL,
1297
- created_at TEXT NOT NULL,
1298
- updated_at TEXT NOT NULL,
1299
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1300
- );
1301
-
1302
- CREATE INDEX IF NOT EXISTS harness_run_overlays_workspace_updated_idx
1303
- ON harness_run_overlays(workspace_id, updated_at DESC);
1304
-
1305
- CREATE TABLE IF NOT EXISTS harness_memory_revisions (
1306
- workspace_id TEXT NOT NULL,
1307
- key TEXT NOT NULL,
1308
- revision INTEGER NOT NULL,
1309
- status TEXT NOT NULL,
1310
- payload TEXT NOT NULL,
1311
- created_at TEXT NOT NULL,
1312
- PRIMARY KEY(workspace_id, key, revision),
1313
- FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
1314
- );
1315
-
1316
- CREATE INDEX IF NOT EXISTS harness_memory_revisions_workspace_created_idx
1317
- ON harness_memory_revisions(workspace_id, created_at DESC);
1318
- `)}l(ul,"createHarnessWorkspaceTables");import{DatabaseSync as rm}from"node:sqlite";function pl(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}l(pl,"assertSupportedNodeSqliteRuntime");function us(a=[]){return a.map(tm)}l(us,"normalizeSqliteParameters");function ml(a){return a.map(e=>ji(e))}l(ml,"normalizeSqliteRows");function ji(a){return Object.fromEntries(Object.entries(a).map(([e,t])=>[e,am(t)]))}l(ji,"normalizeSqliteRow");function tm(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}`)}l(tm,"normalizeSqliteParameter");function am(a){return a instanceof Uint8Array&&!Buffer.isBuffer(a)?Buffer.from(a):a}l(am,"normalizeSqliteOutput");var sm=1e3,Bi=class{static{l(this,"NodeSqliteConnection")}#e;constructor(e){pl(),this.#e=new rm(e,{allowBareNamedParameters:!0,allowUnknownNamedParameters:!1,enableDoubleQuotedStringLiterals:!1,enableForeignKeyConstraints:!0,readBigInts:!1,returnArrays:!1,timeout:sm})}exec(e){this.#e.exec(e)}run(e,t=[]){this.#e.prepare(e).run(...us(t))}all(e,t=[]){let r=this.#e.prepare(e).all(...us(t));return ml(r)}get(e,t=[]){let r=this.#e.prepare(e).get(...us(t));return r?ji(r):null}close(){this.#e.close()}};function fl(a){return new Bi(a)}l(fl,"openNodeSqliteConnection");var im=[50,100,200,400,800],Ga=class extends Error{static{l(this,"SqliteIntegrityError")}constructor(e){super(e),this.name="SqliteIntegrityError"}};function hl(a){if(a instanceof Ga)return!0;let e=El(a);if(e==="SQLITE_CORRUPT"||e==="SQLITE_NOTADB")return!0;let t=_l(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")}l(hl,"isConfirmedSqliteCorruption");async function Tl(a){for(let e=0;;e+=1)try{await a.check();return}catch(t){let r=im[e];if(!nm(t)||r===void 0)throw t;a.onRetry?.({attempt:e+1,retryDelayMs:r,error:t}),await new Promise(s=>setTimeout(s,r))}}l(Tl,"retrySqliteHealthCheck");function El(a){return!a||typeof a!="object"||!("code"in a)?null:typeof a.code=="string"?a.code.toUpperCase():null}l(El,"sqliteErrorCode");function _l(a){return a instanceof Error?a.message.toLowerCase():String(a).toLowerCase()}l(_l,"sqliteErrorMessage");function nm(a){let e=El(a);if(e==="SQLITE_BUSY"||e==="SQLITE_LOCKED")return!0;let t=_l(a);return t.includes("database is locked")||t.includes("database is busy")}l(nm,"isTransientSqliteAvailabilityError");function ny(a){return JSON.parse(a.payload)}l(ny,"localAgentScheduleFromRow");function oy(a){return $s.parse({...JSON.parse(a.payload),updatedAt:a.updated_at})}l(oy,"subagentRunFromRow");function dy(a,e){let t=$s.parse({...a,updatedAt:e});return[t.id,t.parentSessionId,t.parentTurnId,t.childSessionId,t.roleId,t.status,JSON.stringify(t),t.createdAt,e]}l(dy,"subagentRunParams");function cy(a){return xn.parse(JSON.parse(a.payload))}l(cy,"subagentMessageFromRow");function ly(a){return[a.id,a.fromRunId,a.toRunId,a.toRole,a.kind,JSON.stringify(a),a.createdAt]}l(ly,"subagentMessageParams");function uy(a){return[a.id,a.localProjectId,a.scheduleName,a.enabled?1:0,a.nextRunAt,JSON.stringify(a),a.createdAt,a.updatedAt]}l(uy,"localAgentScheduleParams");function py(a){return JSON.parse(a.payload)}l(py,"localAgentScheduleRunFromRow");function my(a){return[a.id,a.scheduleId,a.localProjectId,a.scheduleName,a.scheduledFor,a.trigger,a.status,JSON.stringify(a),a.createdAt,a.updatedAt]}l(my,"localAgentScheduleRunParams");function fy(a){return Ad.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)})}l(fy,"modelUsageRecordFromRow");function hy(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)]}l(hy,"modelUsageRecordParams");function gl(){return new Date().toISOString().replace(/\D/g,"").slice(0,14)}l(gl,"timestampForPath");function Ty(a,e){return{...ds(JSON.parse(a)),sequence:e}}l(Ty,"runtimeEventWithSequence");function wl(a){return ps({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})}l(wl,"threadDetailProjectionFromRow");function ps(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}}l(ps,"threadDetailProjectionPayload");var Rl=[{version:1,run:l(a=>a.createSchema(),"run")},{version:2,run:l(a=>a.createHotQueryIndexes(),"run")},{version:3,run:l(a=>a.createReadModelTables(),"run")},{version:4,run:l(async()=>{},"run")},{version:5,run:l(async()=>{},"run")},{version:6,run:l(async()=>{},"run")},{version:7,run:l(a=>a.createModelUsageTables(),"run")},{version:8,run:l(a=>a.createLocalAgentScheduleTables(),"run")},{version:9,run:l(a=>a.createSubagentTables(),"run")},{version:10,run:l(async()=>{},"run")},{version:11,run:l(a=>a.createTrainingTables(),"run")},{version:12,run:l(a=>a.createTaskCreationProjectionTables(),"run")},{version:13,run:l(a=>a.createGraderAuditTables(),"run")},{version:14,run:l(a=>a.createTaskAttemptArtifactTables(),"run")},{version:15,run:l(a=>a.createTrainingChatSearchTables(),"run")},{version:16,run:l(a=>a.resetTrainingChatSearchForProgressiveIndexing(),"run")},{version:17,run:l(a=>a.createTaskMinerRunTables(),"run")},{version:19,run:l(a=>a.createCreateImproveRunTables(),"run")},{version:20,run:l(a=>a.createTrainingReceiptAndModelBindingTables(),"run")},{version:21,run:l(a=>a.createTasksetRevisionTables(),"run")},{version:24,run:l(a=>a.resetLegacySubagentTransportState(),"run")},{version:25,run:l(a=>a.resetLegacySubagentRuntimeEvents(),"run")},{version:26,run:l(a=>a.createDatasetImportTables(),"run")},{version:28,run:l(a=>a.createSidebarFileBookmarkTables(),"run")},{version:29,run:l(a=>a.createModelBuildDraftTables(),"run")},{version:30,run:l(a=>a.createModelProjectTables(),"run")},{version:31,run:l(a=>a.createModelLifecycleTables(),"run")},{version:32,run:l(a=>a.createTrainingTables(),"run")},{version:33,run:l(a=>a.retireGoalAndInsightsStorage(),"run")},{version:34,run:l(async()=>{},"run")},{version:35,run:l(a=>a.createWorkEvidenceTables(),"run")},{version:36,run:l(a=>a.createHarnessWorkspaceTables(),"run")},{version:37,run:l(a=>a.createHarnessWorkspaceTables(),"run")},{version:38,run:l(a=>a.createHarnessWorkspaceTables(),"run")},{version:39,run:l(a=>a.createHarnessWorkspaceTables(),"run")},{version:40,run:l(a=>a.createHarnessWorkspaceTables(),"run")},{version:41,run:l(a=>a.createTrainingTables(),"run")},{version:43,run:l(a=>a.createHarnessWorkspaceTables(),"run")},{version:44,run:l(a=>a.createModelUsageTables(),"run")},{version:45,run:l(a=>a.createPreferenceComparisonTables(),"run")},{version:46,run:l(a=>a.createTasksetDraftTables(),"run")},{version:47,run:l(a=>a.createTrainingTables(),"run")},{version:48,run:l(a=>a.createTrainingTables(),"run")},{version:49,run:l(a=>a.consolidateModelProjectTrainingSetup(),"run")},{version:50,run:l(a=>a.repairUnverifiableLearnedPreferenceBindings(),"run")},{version:51,run:l(a=>a.createTrainingTables(),"run")},{version:52,run:l(a=>a.allowModelRunsWithoutVersion(),"run")},{version:53,run:l(a=>a.createTrainingTables(),"run")},{version:54,run:l(a=>a.createTrainingTables(),"run")},{version:55,run:l(a=>a.createTrainingTables(),"run")},{version:56,run:l(a=>a.createChatWorkflowTables(),"run")},{version:57,run:l(a=>a.createLearningTables(),"run")},{version:58,run:l(a=>a.createModelProjectAuthoringTables(),"run")},{version:59,run:l(a=>a.createLearningTables(),"run")},{version:60,run:l(a=>a.createModelProjectAuthoringTables(),"run")},{version:61,run:l(a=>a.createModelProjectAuthoringTables(),"run")},{version:62,run:l(a=>a.createModelProjectAuthoringTables(),"run")},{version:63,run:l(a=>a.createModelProjectAuthoringTables(),"run")},{version:64,run:l(a=>a.createTaskInboxTables(),"run")},{version:65,run:l(a=>a.createTrainingTables(),"run")},{version:66,run:l(a=>a.createTrainingTables(),"run")}];async function yl(a){await a(`
1319
- DELETE FROM subagent_messages;
1320
- DELETE FROM subagent_runs;
1321
- `)}l(yl,"resetLegacySubagentTransportState");async function vl(a,e){await a("DELETE FROM events WHERE name LIKE 'subagent.%'",[]),await e()}l(vl,"resetLegacySubagentRuntimeEvents");async function kl(a){await a.exec(`
1322
- CREATE TABLE IF NOT EXISTS model_projects (
1323
- id TEXT PRIMARY KEY,
1324
- profile_id TEXT NOT NULL,
1325
- payload TEXT NOT NULL,
1326
- created_at TEXT NOT NULL,
1327
- updated_at TEXT NOT NULL
1328
- );
1329
- CREATE INDEX IF NOT EXISTS model_projects_profile_updated_idx
1330
- ON model_projects(profile_id, updated_at DESC);
1331
- `);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),c={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)
1332
- VALUES (?, ?, ?, ?, ?)
1333
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[n,d,JSON.stringify(c),s,i])}await a.exec(`
1334
- DROP INDEX IF EXISTS model_build_drafts_profile_updated_idx;
1335
- DROP INDEX IF EXISTS model_build_drafts_model_idx;
1336
- DROP TABLE IF EXISTS model_build_drafts;
1337
- `)}l(kl,"createModelProjectTables");async function Sl(a){await a.exec(`
1338
- ALTER TABLE model_runs RENAME TO model_runs_before_nullable_version;
1339
- CREATE TABLE model_runs (
1340
- id TEXT PRIMARY KEY,
1341
- model_id TEXT NOT NULL,
1342
- model_version_id TEXT,
1343
- profile_id TEXT NOT NULL,
1344
- taskset_id TEXT NOT NULL,
1345
- status TEXT NOT NULL,
1346
- payload TEXT NOT NULL,
1347
- created_at TEXT NOT NULL,
1348
- updated_at TEXT NOT NULL
1349
- );
1350
- INSERT INTO model_runs (
1351
- id, model_id, model_version_id, profile_id, taskset_id, status, payload,
1352
- created_at, updated_at
1353
- )
1354
- SELECT id, model_id, model_version_id, profile_id, taskset_id, status,
1355
- payload, created_at, updated_at
1356
- FROM model_runs_before_nullable_version;
1357
- DROP TABLE model_runs_before_nullable_version;
1358
- CREATE INDEX model_runs_profile_updated_idx ON model_runs(profile_id, updated_at DESC);
1359
- CREATE INDEX model_runs_model_updated_idx ON model_runs(model_id, updated_at DESC);
1360
- CREATE INDEX model_runs_taskset_updated_idx ON model_runs(taskset_id, updated_at DESC);
1361
- `)}l(Sl,"allowModelRunsWithoutVersion");var qi={tasksetRef:null,harnessRelease:null,tasksetRelease:null,baseModel:null,method:null,destinationId:null,managedRolloutPlacement:"remote",runPreset:null,recipe:null,preferredMaximumSpendUsd:null,preferredRetentionDays:null};async function Nl(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),c=typeof d.modelId=="string"?d.modelId:null;c&&!r.has(c)&&r.set(c,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),c=r.get(d),p=Wi(n.trainingSetup)?n.trainingSetup:qi,u=c&&typeof c.updatedAt=="string"?c.updatedAt:null,m=!!(c&&u&&u>=i.updated_at),f=m&&c?{...qi,...p,tasksetRef:c.tasksetRef??p.tasksetRef??null,harnessRelease:c.harnessRelease??p.harnessRelease??null,tasksetRelease:c.tasksetRelease??p.tasksetRelease??null,baseModel:c.baseModel??p.baseModel??null,method:c.method??p.method??null,destinationId:c.destinationId??p.destinationId??null,managedRolloutPlacement:c.managedRolloutPlacement??p.managedRolloutPlacement??"remote",runPreset:c.runPreset??p.runPreset??null,recipe:c.recipe??p.recipe??null}:{...qi,...p},h=ms(f).value,T=typeof n.revision=="number"&&Number.isInteger(n.revision)?n.revision:1,E=m&&u?u:String(n.updatedAt??i.updated_at),g=Y.parse({...n,schemaVersion:"openpond.modelProject.v2",revision:T+1,trainingSetup:h,hosted:n.hosted??null,tasksetSyncs:n.tasksetSyncs??[],updatedAt:E});await a.run("UPDATE model_projects SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(g),g.updatedAt,g.id])}await a.exec(`
1362
- DROP INDEX IF EXISTS model_run_drafts_profile_updated_idx;
1363
- DROP INDEX IF EXISTS model_run_drafts_model_idx;
1364
- DROP TABLE IF EXISTS model_run_drafts;
1365
- `)}l(Nl,"consolidateModelProjectTrainingSetup");function ms(a){if(Array.isArray(a)){let r=!1,s=a.map(i=>{let n=ms(i);return r||=n.changed,n.value});return{value:r?s:a,changed:r}}if(!Wi(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=Wi(s)?Object.fromEntries(Object.entries(s).filter(([c])=>c!=="qualificationKind")):s,d=xd.safeParse(n);t[r]=d.success?d.data:null,e||=!d.success||n!==s;continue}let i=ms(s);t[r]=i.value,e||=i.changed}return{value:e?t:a,changed:e}}l(ms,"sanitizeUnverifiableLearnedPreferenceBindings");async function Il(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=ms(JSON.parse(s.payload));i.changed&&await a.run(`UPDATE ${e} SET payload = ? WHERE id = ?`,[JSON.stringify(i.value),s.id])}}}l(Il,"repairUnverifiableLearnedPreferenceBindings");function Wi(a){return!!(a&&typeof a=="object"&&!Array.isArray(a))}l(Wi,"isRecord");async function Ol(a){await a.exec(`
1366
- CREATE TABLE IF NOT EXISTS model_versions (
1367
- id TEXT PRIMARY KEY,
1368
- model_id TEXT NOT NULL,
1369
- profile_id TEXT NOT NULL,
1370
- version_number INTEGER NOT NULL,
1371
- kind TEXT NOT NULL,
1372
- payload TEXT NOT NULL,
1373
- created_at TEXT NOT NULL,
1374
- UNIQUE(model_id, version_number)
1375
- );
1376
- CREATE INDEX IF NOT EXISTS model_versions_profile_created_idx
1377
- ON model_versions(profile_id, created_at DESC);
1378
- CREATE INDEX IF NOT EXISTS model_versions_model_idx
1379
- ON model_versions(model_id, version_number DESC);
1380
-
1381
- CREATE TABLE IF NOT EXISTS model_runs (
1382
- id TEXT PRIMARY KEY,
1383
- model_id TEXT NOT NULL,
1384
- model_version_id TEXT,
1385
- profile_id TEXT NOT NULL,
1386
- taskset_id TEXT NOT NULL,
1387
- status TEXT NOT NULL,
1388
- payload TEXT NOT NULL,
1389
- created_at TEXT NOT NULL,
1390
- updated_at TEXT NOT NULL
1391
- );
1392
- CREATE INDEX IF NOT EXISTS model_runs_profile_updated_idx
1393
- ON model_runs(profile_id, updated_at DESC);
1394
- CREATE INDEX IF NOT EXISTS model_runs_model_updated_idx
1395
- ON model_runs(model_id, updated_at DESC);
1396
- CREATE INDEX IF NOT EXISTS model_runs_taskset_updated_idx
1397
- ON model_runs(taskset_id, updated_at DESC);
1398
- `)}l(Ol,"createModelLifecycleTables");async function bl(a){let t=(await a.all("SELECT id, payload FROM sessions")).flatMap(c=>JSON.parse(c.payload).systemKind==="openpond.insights"?[c.id]:[]),r=new Set(t),s=(await a.all("SELECT * FROM subagent_runs")).filter(c=>!r.has(c.parent_session_id)&&(!c.child_session_id||!r.has(c.child_session_id))),i=new Set(s.map(c=>c.id)),n=(await a.all("SELECT * FROM subagent_messages")).filter(c=>i.has(c.from_run_id)&&(!c.to_run_id||i.has(c.to_run_id)));for(let c of t)await a.run("DELETE FROM model_usage_records WHERE session_id = ?",[c]),await a.run("DELETE FROM projection_thread_details WHERE session_id = ?",[c]),await a.run("DELETE FROM projection_session_shells WHERE id = ?",[c]),await a.run("DELETE FROM projection_approvals WHERE session_id = ?",[c]),await a.run("DELETE FROM projection_latest_turns WHERE session_id = ?",[c]),await a.run("DELETE FROM approvals WHERE session_id = ?",[c]),await a.run("DELETE FROM events WHERE session_id = ?",[c]),await a.run("DELETE FROM turns WHERE session_id = ?",[c]),await a.run("DELETE FROM sessions WHERE id = ?",[c]);await a.run(`DELETE FROM model_usage_records
1399
- WHERE request_kind IN ('insights_scan', 'insights_question', 'goal_control')`,[]);let d=await a.get(`SELECT payload FROM cache_entries
1400
- WHERE type = 'local.projects' AND cache_key = 'v1'`,[]);if(d){let c=JSON.parse(d.payload);if(Array.isArray(c)){let p=c.filter(u=>{if(!u||typeof u!="object"||Array.isArray(u))return!0;let m=u;return m.id!=="system_openpond_insights"&&m.systemKind!=="openpond.insights"});await a.run(`UPDATE cache_entries SET payload = ?
1401
- WHERE type = 'local.projects' AND cache_key = 'v1'`,[JSON.stringify(p)])}}await a.exec(`
1402
- DROP TABLE IF EXISTS insight_items;
1403
- DROP TABLE IF EXISTS openpond_thread_goals;
1404
- DROP TABLE IF EXISTS subagent_messages;
1405
- DROP TABLE IF EXISTS subagent_runs;
1406
- `),await a.createSubagentTables();for(let c of s){let p=JSON.parse(c.payload);delete p.parentGoalId,p.peerMessages==="goal_scoped"&&(p.peerMessages="parent_scoped"),await a.run(`INSERT INTO subagent_runs (
1407
- id, parent_session_id, parent_turn_id, child_session_id, role_id,
1408
- status, payload, created_at, updated_at
1409
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[c.id,c.parent_session_id,c.parent_turn_id,c.child_session_id,c.role_id,c.status,JSON.stringify(p),c.created_at,c.updated_at])}for(let c of n){let p=JSON.parse(c.payload);delete p.parentGoalId,await a.run(`INSERT INTO subagent_messages (
1410
- id, from_run_id, to_run_id, to_role, kind, payload, created_at
1411
- ) VALUES (?, ?, ?, ?, ?, ?, ?)`,[c.id,c.from_run_id,c.to_run_id,c.to_role,c.kind,JSON.stringify(p),c.created_at])}await a.run(`UPDATE cache_entries
1412
- SET payload = replace(payload, '"goal_scoped"', '"parent_scoped"')
1413
- WHERE instr(payload, '"goal_scoped"') > 0`,[])}l(bl,"retireGoalAndInsightsStorageState");var Ll=`
1414
- 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);
1415
- CREATE INDEX IF NOT EXISTS training_sources_profile_updated_idx ON training_sources(profile_id, updated_at DESC);
1416
- CREATE INDEX IF NOT EXISTS training_sources_session_idx ON training_sources(session_id);
1417
- CREATE INDEX IF NOT EXISTS training_sources_kind_updated_idx ON training_sources(profile_id, source_kind, updated_at DESC);
1418
- CREATE INDEX IF NOT EXISTS training_sources_hash_idx ON training_sources(profile_id, source_hash);
1419
- CREATE INDEX IF NOT EXISTS training_sources_repository_revision_idx ON training_sources(repository_id, revision);
1420
- CREATE TABLE IF NOT EXISTS dataset_import_jobs (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, source_kind TEXT NOT NULL, status TEXT NOT NULL, repository_id TEXT, revision TEXT, taskset_id TEXT, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1421
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_profile_updated_idx ON dataset_import_jobs(profile_id, updated_at DESC);
1422
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_status_updated_idx ON dataset_import_jobs(status, updated_at DESC);
1423
- CREATE INDEX IF NOT EXISTS dataset_import_jobs_repository_revision_idx ON dataset_import_jobs(repository_id, revision);
1424
- CREATE TABLE IF NOT EXISTS dataset_artifacts (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, taskset_id TEXT NOT NULL, taskset_revision INTEGER NOT NULL, content_hash TEXT NOT NULL, format TEXT NOT NULL, row_count INTEGER NOT NULL, storage_root TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1425
- CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_taskset_revision_idx ON dataset_artifacts(taskset_id, taskset_revision);
1426
- CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_content_hash_idx ON dataset_artifacts(content_hash);
1427
- CREATE INDEX IF NOT EXISTS dataset_artifacts_profile_updated_idx ON dataset_artifacts(profile_id, updated_at DESC);
1428
- CREATE TABLE IF NOT EXISTS task_creation_snapshots (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, state TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1429
- CREATE INDEX IF NOT EXISTS task_creation_profile_updated_idx ON task_creation_snapshots(profile_id, updated_at DESC);
1430
- CREATE TABLE IF NOT EXISTS tasksets (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1431
- CREATE INDEX IF NOT EXISTS tasksets_profile_status_updated_idx ON tasksets(profile_id, status, updated_at DESC);
1432
- CREATE TABLE IF NOT EXISTS taskset_drafts (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, revision INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1433
- CREATE INDEX IF NOT EXISTS taskset_drafts_profile_updated_idx ON taskset_drafts(profile_id, updated_at DESC);
1434
- CREATE TABLE IF NOT EXISTS taskset_revisions (taskset_id TEXT NOT NULL, revision INTEGER NOT NULL, content_hash TEXT NOT NULL, profile_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, PRIMARY KEY(taskset_id, revision));
1435
- CREATE UNIQUE INDEX IF NOT EXISTS taskset_revisions_hash_idx ON taskset_revisions(taskset_id, content_hash);
1436
- CREATE TABLE IF NOT EXISTS task_candidates (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, fingerprint TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1437
- CREATE UNIQUE INDEX IF NOT EXISTS task_candidates_profile_fingerprint_idx ON task_candidates(profile_id, fingerprint);
1438
- CREATE INDEX IF NOT EXISTS task_candidates_profile_status_updated_idx ON task_candidates(profile_id, status, updated_at DESC);
1439
- CREATE TABLE IF NOT EXISTS task_attempts (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, split TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1440
- CREATE INDEX IF NOT EXISTS task_attempts_taskset_split_idx ON task_attempts(taskset_id, split, created_at DESC);
1441
- CREATE TABLE IF NOT EXISTS grade_results (id TEXT PRIMARY KEY, attempt_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1442
- CREATE INDEX IF NOT EXISTS grade_results_attempt_idx ON grade_results(attempt_id, created_at DESC);
1443
- CREATE TABLE IF NOT EXISTS evaluation_results (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1444
- CREATE INDEX IF NOT EXISTS evaluation_results_taskset_kind_idx ON evaluation_results(taskset_id, kind, created_at DESC);
1445
- CREATE TABLE IF NOT EXISTS profile_evaluation_runs (id TEXT PRIMARY KEY, profile_key TEXT NOT NULL, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1446
- CREATE INDEX IF NOT EXISTS profile_evaluation_runs_profile_created_idx ON profile_evaluation_runs(profile_key, created_at DESC);
1447
- CREATE INDEX IF NOT EXISTS profile_evaluation_runs_taskset_created_idx ON profile_evaluation_runs(taskset_id, created_at DESC);
1448
- CREATE TABLE IF NOT EXISTS profile_evaluation_grades (content_hash TEXT PRIMARY KEY, payload TEXT NOT NULL);
1449
- CREATE TABLE IF NOT EXISTS profile_evaluation_receipts (id TEXT PRIMARY KEY, run_id TEXT NOT NULL, payload TEXT NOT NULL);
1450
- CREATE INDEX IF NOT EXISTS profile_evaluation_receipts_run_idx ON profile_evaluation_receipts(run_id);
1451
- CREATE TABLE IF NOT EXISTS profile_evaluation_comparisons (id TEXT PRIMARY KEY, profile_key TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1452
- CREATE INDEX IF NOT EXISTS profile_evaluation_comparisons_profile_created_idx ON profile_evaluation_comparisons(profile_key, created_at DESC);
1453
- CREATE TABLE IF NOT EXISTS profile_evaluation_suite_runs (id TEXT PRIMARY KEY, profile_key TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1454
- CREATE INDEX IF NOT EXISTS profile_evaluation_suite_runs_profile_created_idx ON profile_evaluation_suite_runs(profile_key, created_at DESC);
1455
- CREATE TABLE IF NOT EXISTS benchmark_runs (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, phase TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1456
- CREATE INDEX IF NOT EXISTS benchmark_runs_taskset_created_idx ON benchmark_runs(taskset_id, created_at DESC);
1457
- CREATE TABLE IF NOT EXISTS benchmark_comparisons (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1458
- CREATE INDEX IF NOT EXISTS benchmark_comparisons_taskset_created_idx ON benchmark_comparisons(taskset_id, created_at DESC);
1459
- CREATE TABLE IF NOT EXISTS readiness_reports (taskset_id TEXT PRIMARY KEY, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
1460
- CREATE TABLE IF NOT EXISTS task_miner_configs (profile_id TEXT PRIMARY KEY, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
1461
- CREATE TABLE IF NOT EXISTS task_miner_runs (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1462
- CREATE INDEX IF NOT EXISTS task_miner_runs_profile_updated_idx ON task_miner_runs(profile_id, updated_at DESC);
1463
- CREATE INDEX IF NOT EXISTS task_miner_runs_status_updated_idx ON task_miner_runs(status, updated_at DESC);
1464
- CREATE TABLE IF NOT EXISTS model_projects (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1465
- CREATE INDEX IF NOT EXISTS model_projects_profile_updated_idx ON model_projects(profile_id, updated_at DESC);
1466
- CREATE TABLE IF NOT EXISTS model_versions (id TEXT PRIMARY KEY, model_id TEXT NOT NULL, profile_id TEXT NOT NULL, version_number INTEGER NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(model_id, version_number));
1467
- CREATE INDEX IF NOT EXISTS model_versions_profile_created_idx ON model_versions(profile_id, created_at DESC);
1468
- CREATE INDEX IF NOT EXISTS model_versions_model_idx ON model_versions(model_id, version_number DESC);
1469
- CREATE TABLE IF NOT EXISTS model_runs (id TEXT PRIMARY KEY, model_id TEXT NOT NULL, model_version_id TEXT, profile_id TEXT NOT NULL, taskset_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1470
- CREATE INDEX IF NOT EXISTS model_runs_profile_updated_idx ON model_runs(profile_id, updated_at DESC);
1471
- CREATE INDEX IF NOT EXISTS model_runs_model_updated_idx ON model_runs(model_id, updated_at DESC);
1472
- CREATE INDEX IF NOT EXISTS model_runs_taskset_updated_idx ON model_runs(taskset_id, updated_at DESC);
1473
- CREATE TABLE IF NOT EXISTS model_comparison_series (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, model_project_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1474
- CREATE INDEX IF NOT EXISTS model_comparison_series_profile_updated_idx ON model_comparison_series(profile_id, updated_at DESC);
1475
- CREATE INDEX IF NOT EXISTS model_comparison_series_project_updated_idx ON model_comparison_series(model_project_id, updated_at DESC);
1476
- CREATE TABLE IF NOT EXISTS model_comparison_series_entries (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, profile_id TEXT NOT NULL, model_project_id TEXT NOT NULL, ordinal INTEGER NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(series_id, ordinal));
1477
- CREATE INDEX IF NOT EXISTS model_comparison_entries_series_ordinal_idx ON model_comparison_series_entries(series_id, ordinal ASC);
1478
- CREATE INDEX IF NOT EXISTS model_comparison_entries_project_updated_idx ON model_comparison_series_entries(model_project_id, updated_at DESC);
1479
- CREATE TABLE IF NOT EXISTS model_currency_snapshots (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, entry_id TEXT NOT NULL, evidence_state TEXT NOT NULL, content_hash TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(entry_id, content_hash));
1480
- CREATE INDEX IF NOT EXISTS model_currency_snapshots_series_created_idx ON model_currency_snapshots(series_id, created_at DESC);
1481
- CREATE INDEX IF NOT EXISTS model_currency_snapshots_entry_created_idx ON model_currency_snapshots(entry_id, created_at DESC);
1482
- CREATE TABLE IF NOT EXISTS continual_bench_issue_reviews (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, pass_label TEXT NOT NULL, status TEXT NOT NULL, revision INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(series_id, pass_label));
1483
- CREATE INDEX IF NOT EXISTS continual_bench_issue_reviews_series_updated_idx ON continual_bench_issue_reviews(series_id, updated_at DESC);
1484
- CREATE TABLE IF NOT EXISTS continual_learning_daily_batches (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, schedule_entry_id TEXT NOT NULL, day_ordinal INTEGER NOT NULL, status TEXT NOT NULL, revision INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(series_id, day_ordinal), UNIQUE(series_id, schedule_entry_id));
1485
- CREATE INDEX IF NOT EXISTS continual_learning_daily_batches_series_ordinal_idx ON continual_learning_daily_batches(series_id, day_ordinal ASC);
1486
- CREATE TABLE IF NOT EXISTS reward_model_versions (id TEXT PRIMARY KEY, model_id TEXT NOT NULL, profile_id TEXT NOT NULL, version_number INTEGER NOT NULL, taskset_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(model_id, version_number));
1487
- CREATE INDEX IF NOT EXISTS reward_model_versions_profile_created_idx ON reward_model_versions(profile_id, created_at DESC);
1488
- CREATE INDEX IF NOT EXISTS reward_model_versions_taskset_created_idx ON reward_model_versions(taskset_id, created_at DESC);
1489
- CREATE TABLE IF NOT EXISTS reward_model_runs (id TEXT PRIMARY KEY, reward_model_id TEXT NOT NULL, profile_id TEXT NOT NULL, taskset_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1490
- CREATE INDEX IF NOT EXISTS reward_model_runs_profile_updated_idx ON reward_model_runs(profile_id, updated_at DESC);
1491
- CREATE INDEX IF NOT EXISTS reward_model_runs_taskset_updated_idx ON reward_model_runs(taskset_id, updated_at DESC);
1492
- CREATE TABLE IF NOT EXISTS training_plans (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, destination_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1493
- CREATE INDEX IF NOT EXISTS training_plans_taskset_idx ON training_plans(taskset_id, created_at DESC);
1494
- CREATE TABLE IF NOT EXISTS training_bundles (id TEXT PRIMARY KEY, plan_id TEXT NOT NULL, content_hash TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1495
- CREATE UNIQUE INDEX IF NOT EXISTS training_bundles_content_hash_idx ON training_bundles(content_hash);
1496
- CREATE TABLE IF NOT EXISTS training_jobs (id TEXT PRIMARY KEY, plan_id TEXT NOT NULL, destination_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
1497
- CREATE INDEX IF NOT EXISTS training_jobs_status_updated_idx ON training_jobs(status, updated_at DESC);
1498
- CREATE INDEX IF NOT EXISTS training_jobs_plan_idx ON training_jobs(plan_id, created_at DESC);
1499
- CREATE TABLE IF NOT EXISTS training_approvals (id TEXT PRIMARY KEY, plan_id TEXT NOT NULL, bundle_hash TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1500
- CREATE INDEX IF NOT EXISTS training_approvals_plan_idx ON training_approvals(plan_id, created_at DESC);
1501
- CREATE TABLE IF NOT EXISTS training_job_events (id TEXT PRIMARY KEY, job_id TEXT NOT NULL, sequence INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(job_id, sequence));
1502
- CREATE INDEX IF NOT EXISTS training_job_events_job_sequence_idx ON training_job_events(job_id, sequence);
1503
- CREATE TABLE IF NOT EXISTS training_artifacts (id TEXT PRIMARY KEY, job_id TEXT NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
1504
- CREATE INDEX IF NOT EXISTS training_artifacts_job_kind_idx ON training_artifacts(job_id, kind, created_at DESC);
1505
- 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);
1506
- CREATE UNIQUE INDEX IF NOT EXISTS model_lineage_artifact_idx ON model_artifact_lineage(artifact_id);
1507
- CREATE INDEX IF NOT EXISTS model_lineage_taskset_idx ON model_artifact_lineage(taskset_id, created_at DESC);
1508
- `;var Al=`
1509
- CREATE TABLE IF NOT EXISTS learning_revisions (
1510
- scope TEXT NOT NULL,
1511
- kind TEXT NOT NULL,
1512
- id TEXT NOT NULL,
1513
- revision INTEGER NOT NULL CHECK (revision > 0),
1514
- payload TEXT NOT NULL,
1515
- PRIMARY KEY (scope, kind, id, revision)
1516
- );
1517
- CREATE TABLE IF NOT EXISTS learning_resources (
1518
- scope TEXT NOT NULL,
1519
- kind TEXT NOT NULL,
1520
- id TEXT NOT NULL,
1521
- revision INTEGER NOT NULL,
1522
- parent_id TEXT,
1523
- status TEXT,
1524
- PRIMARY KEY (scope, kind, id),
1525
- FOREIGN KEY (scope, kind, id, revision) REFERENCES learning_revisions (scope, kind, id, revision)
1526
- );
1527
- CREATE INDEX IF NOT EXISTS learning_parent_idx ON learning_resources (scope, kind, parent_id, id);
1528
- CREATE INDEX IF NOT EXISTS learning_status_idx ON learning_resources (scope, kind, status, id);
1529
- CREATE TABLE IF NOT EXISTS learning_operations (
1530
- scope TEXT NOT NULL,
1531
- id TEXT NOT NULL,
1532
- payload TEXT NOT NULL,
1533
- PRIMARY KEY (scope, id)
1534
- );
1535
- CREATE TABLE IF NOT EXISTS learning_family_splits (
1536
- scope TEXT NOT NULL,
1537
- namespace TEXT NOT NULL,
1538
- kind TEXT NOT NULL,
1539
- key TEXT NOT NULL,
1540
- split TEXT NOT NULL,
1541
- PRIMARY KEY (scope, namespace, kind, key)
1542
- );
1543
- CREATE TABLE IF NOT EXISTS learning_source_credentials (
1544
- id TEXT PRIMARY KEY,
1545
- scope TEXT NOT NULL,
1546
- source_id TEXT NOT NULL,
1547
- key_hash TEXT NOT NULL UNIQUE,
1548
- request_hash TEXT NOT NULL,
1549
- payload TEXT NOT NULL
1550
- );
1551
- CREATE INDEX IF NOT EXISTS learning_source_credentials_scope_idx ON learning_source_credentials (scope, source_id, id);
1552
- `;var Pl=`
1553
- CREATE TABLE IF NOT EXISTS model_taskset_draft_operations (
1554
- profile_id TEXT NOT NULL,
1555
- operation_id TEXT NOT NULL,
1556
- request_hash TEXT NOT NULL,
1557
- draft_id TEXT NOT NULL,
1558
- state TEXT NOT NULL CHECK (state IN ('prepared', 'ready', 'deleted')),
1559
- payload TEXT NOT NULL,
1560
- PRIMARY KEY (profile_id, operation_id)
1561
- );
1562
- CREATE UNIQUE INDEX IF NOT EXISTS model_taskset_draft_operation_identity ON model_taskset_draft_operations(draft_id);
1563
- CREATE TABLE IF NOT EXISTS model_project_package_operations (
1564
- operation_id TEXT PRIMARY KEY,
1565
- profile_id TEXT NOT NULL,
1566
- model_id TEXT NOT NULL,
1567
- api_origin TEXT NOT NULL,
1568
- team_id TEXT NOT NULL,
1569
- state TEXT NOT NULL CHECK (state IN ('pending', 'committed', 'rejected')),
1570
- payload TEXT NOT NULL,
1571
- receipt TEXT,
1572
- created_at TEXT NOT NULL
1573
- );
1574
- CREATE UNIQUE INDEX IF NOT EXISTS model_project_package_pending
1575
- ON model_project_package_operations (profile_id, model_id) WHERE state = 'pending';
1576
- CREATE TABLE IF NOT EXISTS model_project_save_operations (
1577
- profile_id TEXT NOT NULL,
1578
- operation_id TEXT NOT NULL,
1579
- request_hash TEXT NOT NULL,
1580
- payload TEXT NOT NULL,
1581
- PRIMARY KEY (profile_id, operation_id)
1582
- );
1583
- CREATE TABLE IF NOT EXISTS model_starter_creation_operations (
1584
- profile_id TEXT NOT NULL,
1585
- operation_id TEXT NOT NULL,
1586
- request_hash TEXT NOT NULL,
1587
- payload TEXT NOT NULL,
1588
- PRIMARY KEY (profile_id, operation_id)
1589
- );
1590
- CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
1591
- profile_id TEXT NOT NULL,
1592
- operation_id TEXT NOT NULL,
1593
- request_hash TEXT NOT NULL,
1594
- created_at TEXT NOT NULL,
1595
- state TEXT NOT NULL CHECK (state IN ('preparing', 'materialized', 'committed')),
1596
- PRIMARY KEY (profile_id, operation_id)
1597
- );
1598
- `;import{promises as $i}from"node:fs";import Yi from"node:path";var om=2,dm=/^state-(\d{14})-before-v(\d+)$/;async function xl(a,e=om){let t=Yi.join(a,"backups"),s=(await $i.readdir(t,{withFileTypes:!0}).catch(c=>{if(c.code==="ENOENT")return[];throw c})).filter(c=>c.isDirectory()&&dm.test(c.name)).map(c=>c.name).sort((c,p)=>p.localeCompare(c)),i=Math.max(2,Math.trunc(e)),n=s.slice(0,i),d=[];for(let c of s.slice(i))(await $i.stat(Yi.join(t,c))).mtimeMs>=Date.now()-30*864e5?n.push(c):d.push(c);for(let c of d)await $i.rm(Yi.join(t,c),{recursive:!0,force:!0});return{removed:d,retained:n}}l(xl,"pruneMigrationBackups");var Cl=`
1599
- CREATE TABLE IF NOT EXISTS task_inputs (
1600
- sequence INTEGER PRIMARY KEY AUTOINCREMENT,
1601
- id TEXT NOT NULL UNIQUE,
1602
- session_id TEXT NOT NULL,
1603
- sender_key TEXT NOT NULL,
1604
- idempotency_key TEXT NOT NULL,
1605
- kind TEXT NOT NULL,
1606
- state TEXT NOT NULL,
1607
- turn_id TEXT,
1608
- payload TEXT NOT NULL,
1609
- admission TEXT NOT NULL,
1610
- UNIQUE(session_id, sender_key, idempotency_key)
1611
- );
1612
- CREATE INDEX IF NOT EXISTS task_inputs_pending_idx ON task_inputs(session_id, state, sequence);
1613
- CREATE INDEX IF NOT EXISTS task_inputs_turn_idx ON task_inputs(turn_id, state);
1614
-
1615
- CREATE TABLE IF NOT EXISTS task_input_requests (
1616
- request_id TEXT PRIMARY KEY,
1617
- session_id TEXT NOT NULL,
1618
- turn_id TEXT NOT NULL,
1619
- input_ids TEXT NOT NULL,
1620
- state TEXT NOT NULL,
1621
- created_at TEXT NOT NULL
1622
- );
1623
- CREATE INDEX IF NOT EXISTS task_input_requests_turn_idx ON task_input_requests(turn_id);
1624
-
1625
- CREATE TABLE IF NOT EXISTS task_inbox_turns (
1626
- session_id TEXT PRIMARY KEY,
1627
- turn_id TEXT NOT NULL,
1628
- owner_id TEXT NOT NULL,
1629
- generation INTEGER NOT NULL,
1630
- accepting INTEGER NOT NULL,
1631
- paused INTEGER NOT NULL DEFAULT 0,
1632
- lease_until INTEGER NOT NULL
1633
- );
1634
-
1635
- CREATE TABLE IF NOT EXISTS task_work_claims (
1636
- session_id TEXT PRIMARY KEY,
1637
- turn_id TEXT NOT NULL,
1638
- work_areas TEXT NOT NULL
1639
- );
1640
-
1641
- CREATE TABLE IF NOT EXISTS task_waits (
1642
- id TEXT PRIMARY KEY,
1643
- session_id TEXT NOT NULL,
1644
- turn_id TEXT NOT NULL,
1645
- target_session_id TEXT,
1646
- target_turn_id TEXT,
1647
- state TEXT NOT NULL,
1648
- deadline TEXT NOT NULL,
1649
- payload TEXT NOT NULL
1650
- );
1651
- CREATE INDEX IF NOT EXISTS task_waits_session_idx ON task_waits(session_id, state);
1652
- CREATE INDEX IF NOT EXISTS task_waits_target_idx ON task_waits(target_session_id, target_turn_id, state);
1653
-
1654
- CREATE TABLE IF NOT EXISTS task_completion_outbox (
1655
- turn_id TEXT PRIMARY KEY,
1656
- run_id TEXT NOT NULL,
1657
- payload TEXT NOT NULL,
1658
- input_id TEXT,
1659
- created_at TEXT NOT NULL
1660
- );
1661
- CREATE INDEX IF NOT EXISTS task_completion_pending_idx ON task_completion_outbox(created_at) WHERE input_id IS NULL;
1662
- `;var Hl=[0,100,250,500],fs=class{static{l(this,"SqliteStoreCore")}async createTaskInboxTables(){await this.exec(Cl)}async createLearningTables(){await this.exec(Al)}async createModelProjectAuthoringTables(){await this.exec(Pl)}storePath;home;data={sessions:[],turns:[],events:[],approvals:[]};ready;db=null;writeQueue=Promise.resolve();logger;constructor(e,t={}){this.home=Qa.resolve(e),this.storePath=Qa.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 Ji.mkdir(Qa.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 $c({allPayloadRows:l((r,s)=>this.all(r,s),"allPayloadRows")}),await xl(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(`
1663
- PRAGMA journal_mode = WAL;
1664
- PRAGMA foreign_keys = ON;
1665
- PRAGMA synchronous = FULL;
1666
- `)}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 Ga(`SQLite quick_check failed: ${t.join("; ")}`)}async assertHealthyDatabaseWithRetry(){await Tl({check:l(()=>this.assertHealthyDatabase(),"check"),onRetry:l(({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 Rl.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(),hl(e)?new fa({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 Hl){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:Hl.length,error:e}),e}async backupDatabaseFiles(e,t){let r=Qa.join(e,"backups",`state-${gl()}-${t}`);await Ji.mkdir(r,{recursive:!0,mode:448});let s=Mn(this.storePath,!0);try{await cm(s,Qa.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 Ji.access(e),!0}catch{return!1}}async createSchema(){await this.exec(el)}async createWorkEvidenceTables(){await this.exec(`
1667
- CREATE TABLE IF NOT EXISTS work_evidence_receipts (
1668
- id TEXT PRIMARY KEY,
1669
- source_revision_hash TEXT NOT NULL UNIQUE,
1670
- source_session_id TEXT NOT NULL,
1671
- source_turn_id TEXT NOT NULL,
1672
- payload TEXT NOT NULL,
1673
- created_at TEXT NOT NULL
1674
- );
1675
- CREATE INDEX IF NOT EXISTS work_evidence_source_idx
1676
- ON work_evidence_receipts(source_session_id, source_turn_id, created_at DESC);
1677
-
1678
- CREATE TABLE IF NOT EXISTS work_feedback_receipts (
1679
- id TEXT PRIMARY KEY,
1680
- evidence_receipt_id TEXT NOT NULL,
1681
- output_revision_hash TEXT,
1682
- payload TEXT NOT NULL,
1683
- created_at TEXT NOT NULL
1684
- );
1685
- CREATE INDEX IF NOT EXISTS work_feedback_evidence_idx
1686
- ON work_feedback_receipts(evidence_receipt_id, created_at ASC);
1687
- CREATE INDEX IF NOT EXISTS work_feedback_output_idx
1688
- ON work_feedback_receipts(output_revision_hash, created_at ASC);
1689
- `)}async createHarnessWorkspaceTables(){await ul(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 cl(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(`
1690
- CREATE INDEX IF NOT EXISTS turns_session_sort_idx ON turns(session_id, sort_index DESC);
1691
- CREATE INDEX IF NOT EXISTS turns_session_status_sort_idx ON turns(session_id, status, sort_index DESC);
1692
- CREATE INDEX IF NOT EXISTS turns_provider_turn_id_idx ON turns(provider_turn_id);
1693
- CREATE INDEX IF NOT EXISTS events_session_sort_idx ON events(session_id, sort_index);
1694
- CREATE INDEX IF NOT EXISTS approvals_status_sort_idx ON approvals(status, sort_index);
1695
- `)}async createReadModelTables(){await this.addColumnIfMissing("events","sequence","INTEGER"),await this.run("UPDATE events SET sequence = sort_index + 1 WHERE sequence IS NULL",[]),await this.exec(`
1696
- CREATE UNIQUE INDEX IF NOT EXISTS events_sequence_idx ON events(sequence);
1697
- CREATE INDEX IF NOT EXISTS events_session_sequence_idx ON events(session_id, sequence);
1698
-
1699
- CREATE TABLE IF NOT EXISTS projection_session_shells (
1700
- id TEXT PRIMARY KEY,
1701
- sort_index INTEGER NOT NULL,
1702
- payload TEXT NOT NULL,
1703
- updated_at TEXT NOT NULL
1704
- );
1705
-
1706
- CREATE TABLE IF NOT EXISTS projection_thread_details (
1707
- session_id TEXT PRIMARY KEY,
1708
- event_count INTEGER NOT NULL,
1709
- latest_event_sequence INTEGER NOT NULL,
1710
- latest_event_at TEXT,
1711
- latest_turn_id TEXT,
1712
- latest_turn_status TEXT,
1713
- pending_approval_count INTEGER NOT NULL,
1714
- payload TEXT NOT NULL,
1715
- updated_at TEXT NOT NULL
1716
- );
1717
-
1718
- CREATE TABLE IF NOT EXISTS projection_approvals (
1719
- id TEXT PRIMARY KEY,
1720
- session_id TEXT NOT NULL,
1721
- status TEXT NOT NULL,
1722
- sort_index INTEGER NOT NULL,
1723
- payload TEXT NOT NULL,
1724
- updated_at TEXT NOT NULL
1725
- );
1726
-
1727
- CREATE INDEX IF NOT EXISTS projection_approvals_status_sort_idx
1728
- ON projection_approvals(status, sort_index);
1729
-
1730
- CREATE TABLE IF NOT EXISTS projection_latest_turns (
1731
- session_id TEXT PRIMARY KEY,
1732
- turn_id TEXT NOT NULL,
1733
- status TEXT NOT NULL,
1734
- sort_index INTEGER NOT NULL,
1735
- payload TEXT NOT NULL,
1736
- updated_at TEXT NOT NULL
1737
- );
1738
- `),await this.rebuildReadModels()}async createModelUsageTables(){await this.exec(`
1739
- CREATE TABLE IF NOT EXISTS model_usage_records (
1740
- id TEXT PRIMARY KEY,
1741
- request_id TEXT NOT NULL UNIQUE,
1742
- request_ordinal INTEGER NOT NULL,
1743
- session_id TEXT,
1744
- turn_id TEXT,
1745
- provider TEXT NOT NULL,
1746
- model TEXT NOT NULL,
1747
- route TEXT NOT NULL,
1748
- source TEXT NOT NULL,
1749
- request_kind TEXT NOT NULL,
1750
- visibility TEXT NOT NULL,
1751
- status TEXT NOT NULL,
1752
- started_at TEXT NOT NULL,
1753
- completed_at TEXT,
1754
- duration_ms INTEGER,
1755
- first_token_ms INTEGER,
1756
- prompt_tokens INTEGER,
1757
- cached_prompt_tokens INTEGER,
1758
- uncached_prompt_tokens INTEGER,
1759
- cache_write_prompt_tokens INTEGER,
1760
- cache_telemetry_source TEXT,
1761
- completion_tokens INTEGER,
1762
- total_tokens INTEGER,
1763
- error_type TEXT,
1764
- error_message TEXT,
1765
- attribution_json TEXT NOT NULL
1766
- );
1767
-
1768
- CREATE INDEX IF NOT EXISTS model_usage_started_at_idx
1769
- ON model_usage_records(started_at);
1770
-
1771
- CREATE INDEX IF NOT EXISTS model_usage_provider_model_started_idx
1772
- ON model_usage_records(provider, model, started_at);
1773
-
1774
- CREATE INDEX IF NOT EXISTS model_usage_session_turn_ordinal_idx
1775
- ON model_usage_records(session_id, turn_id, request_ordinal);
1776
-
1777
- CREATE INDEX IF NOT EXISTS model_usage_request_kind_started_idx
1778
- ON model_usage_records(request_kind, started_at);
1779
-
1780
- CREATE INDEX IF NOT EXISTS model_usage_visibility_started_idx
1781
- ON model_usage_records(visibility, started_at);
1782
-
1783
- CREATE INDEX IF NOT EXISTS model_usage_status_started_idx
1784
- ON model_usage_records(status, started_at);
1785
- `),await this.addColumnIfMissing("model_usage_records","cached_prompt_tokens","INTEGER"),await this.addColumnIfMissing("model_usage_records","uncached_prompt_tokens","INTEGER"),await this.addColumnIfMissing("model_usage_records","cache_write_prompt_tokens","INTEGER"),await this.addColumnIfMissing("model_usage_records","cache_telemetry_source","TEXT")}async createLocalAgentScheduleTables(){await this.exec(`
1786
- CREATE TABLE IF NOT EXISTS local_agent_schedules (
1787
- id TEXT PRIMARY KEY,
1788
- local_project_id TEXT NOT NULL,
1789
- schedule_name TEXT NOT NULL,
1790
- enabled INTEGER NOT NULL,
1791
- next_run_at TEXT,
1792
- payload TEXT NOT NULL,
1793
- created_at TEXT NOT NULL,
1794
- updated_at TEXT NOT NULL
1795
- );
1796
-
1797
- CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedules_project_name_idx
1798
- ON local_agent_schedules(local_project_id, schedule_name);
1799
-
1800
- CREATE INDEX IF NOT EXISTS local_agent_schedules_due_idx
1801
- ON local_agent_schedules(enabled, next_run_at);
1802
-
1803
- CREATE TABLE IF NOT EXISTS local_agent_schedule_runs (
1804
- id TEXT PRIMARY KEY,
1805
- schedule_id TEXT NOT NULL,
1806
- local_project_id TEXT NOT NULL,
1807
- schedule_name TEXT NOT NULL,
1808
- scheduled_for TEXT NOT NULL,
1809
- trigger TEXT NOT NULL,
1810
- status TEXT NOT NULL,
1811
- payload TEXT NOT NULL,
1812
- created_at TEXT NOT NULL,
1813
- updated_at TEXT NOT NULL
1814
- );
1815
-
1816
- CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_time_idx
1817
- ON local_agent_schedule_runs(schedule_id, scheduled_for, trigger);
1818
-
1819
- CREATE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_idx
1820
- ON local_agent_schedule_runs(schedule_id, created_at DESC);
1821
- `)}async createChatWorkflowTables(){return ll(e=>this.exec(e))}async createSubagentTables(){await this.exec(`
1822
- CREATE TABLE IF NOT EXISTS subagent_runs (
1823
- id TEXT PRIMARY KEY,
1824
- parent_session_id TEXT NOT NULL,
1825
- parent_turn_id TEXT,
1826
- child_session_id TEXT,
1827
- role_id TEXT NOT NULL,
1828
- status TEXT NOT NULL,
1829
- payload TEXT NOT NULL,
1830
- created_at TEXT NOT NULL,
1831
- updated_at TEXT NOT NULL
1832
- );
1833
-
1834
- CREATE INDEX IF NOT EXISTS subagent_runs_parent_session_status_idx
1835
- ON subagent_runs(parent_session_id, status, updated_at DESC);
1836
-
1837
- CREATE INDEX IF NOT EXISTS subagent_runs_child_session_idx
1838
- ON subagent_runs(child_session_id);
1839
-
1840
- CREATE TABLE IF NOT EXISTS subagent_messages (
1841
- id TEXT PRIMARY KEY,
1842
- from_run_id TEXT NOT NULL,
1843
- to_run_id TEXT,
1844
- to_role TEXT,
1845
- kind TEXT NOT NULL,
1846
- payload TEXT NOT NULL,
1847
- created_at TEXT NOT NULL
1848
- );
1849
-
1850
- CREATE INDEX IF NOT EXISTS subagent_messages_receiver_created_idx
1851
- ON subagent_messages(to_run_id, to_role, created_at);
1852
- `)}async retireGoalAndInsightsStorage(){await bl({all:l((e,t)=>this.all(e,t),"all"),get:l((e,t=[])=>this.get(e,t),"get"),run:l((e,t=[])=>this.run(e,t),"run"),exec:l(e=>this.exec(e),"exec"),createSubagentTables:l(()=>this.createSubagentTables(),"createSubagentTables")})}async resetLegacySubagentTransportState(){await yl(e=>this.exec(e))}async resetLegacySubagentRuntimeEvents(){await vl((e,t)=>this.run(e,t),()=>this.rebuildReadModels())}async createCreateImproveRunTables(){await tl(e=>this.exec(e))}async createTrainingTables(){await this.exec(Ll)}async createTasksetDraftTables(){await this.exec(`
1853
- CREATE TABLE IF NOT EXISTS taskset_drafts (
1854
- id TEXT PRIMARY KEY,
1855
- profile_id TEXT NOT NULL,
1856
- status TEXT NOT NULL,
1857
- revision INTEGER NOT NULL,
1858
- payload TEXT NOT NULL,
1859
- created_at TEXT NOT NULL,
1860
- updated_at TEXT NOT NULL
1861
- );
1862
- CREATE INDEX IF NOT EXISTS taskset_drafts_profile_updated_idx
1863
- ON taskset_drafts(profile_id, updated_at DESC);
1864
- `)}async createModelBuildDraftTables(){await this.exec(`
1865
- CREATE TABLE IF NOT EXISTS model_build_drafts (
1866
- id TEXT PRIMARY KEY,
1867
- profile_id TEXT NOT NULL,
1868
- model_id TEXT NOT NULL,
1869
- status TEXT NOT NULL,
1870
- payload TEXT NOT NULL,
1871
- created_at TEXT NOT NULL,
1872
- updated_at TEXT NOT NULL
1873
- );
1874
- CREATE INDEX IF NOT EXISTS model_build_drafts_profile_updated_idx
1875
- ON model_build_drafts(profile_id, updated_at DESC);
1876
- CREATE INDEX IF NOT EXISTS model_build_drafts_model_idx
1877
- ON model_build_drafts(model_id, updated_at DESC);
1878
- `)}async createModelProjectTables(){await kl(this.modelProjectMigrationStore())}async allowModelRunsWithoutVersion(){await Sl(this.modelProjectMigrationStore())}async consolidateModelProjectTrainingSetup(){await Nl(this.modelProjectMigrationStore())}modelProjectMigrationStore(){return{all:l((e,t=[])=>this.all(e,t),"all"),exec:l(e=>this.exec(e),"exec"),run:l((e,t=[])=>this.run(e,t),"run")}}async repairUnverifiableLearnedPreferenceBindings(){await Il({all:l((e,t)=>this.all(e,t??[]),"all"),exec:l(e=>this.exec(e),"exec"),run:l((e,t)=>this.run(e,t??[]),"run")})}async createModelLifecycleTables(){await Ol({exec:l(e=>this.exec(e),"exec")})}async createDatasetImportTables(){await dl({all:l((e,t=[])=>this.all(e,t),"all"),exec:l(e=>this.exec(e),"exec")})}async createTasksetRevisionTables(){await al(e=>this.exec(e))}async createTrainingReceiptAndModelBindingTables(){await nl(e=>this.exec(e))}async createPreferenceComparisonTables(){await ol(e=>this.exec(e))}async createTaskCreationProjectionTables(){await rl(e=>this.exec(e))}async createGraderAuditTables(){await sl(e=>this.exec(e))}async createTaskAttemptArtifactTables(){await il(e=>this.exec(e))}async createTrainingChatSearchTables(){await this.exec(`
1879
- CREATE TABLE IF NOT EXISTS training_chat_search_documents (
1880
- session_id TEXT PRIMARY KEY,
1881
- source TEXT NOT NULL,
1882
- signature TEXT NOT NULL,
1883
- title TEXT NOT NULL,
1884
- updated_at TEXT NOT NULL,
1885
- eligible INTEGER NOT NULL,
1886
- body_indexed INTEGER NOT NULL DEFAULT 1
1887
- );
1888
- CREATE INDEX IF NOT EXISTS training_chat_search_documents_source_idx
1889
- ON training_chat_search_documents(source);
1890
- CREATE VIRTUAL TABLE IF NOT EXISTS training_chat_search_fts USING fts5(
1891
- session_id UNINDEXED,
1892
- title,
1893
- body,
1894
- tokenize = 'unicode61 remove_diacritics 2'
1895
- );
1896
- `)}async resetTrainingChatSearchForProgressiveIndexing(){await this.addColumnIfMissing("training_chat_search_documents","body_indexed","INTEGER NOT NULL DEFAULT 1"),await this.exec(`
1897
- DROP TABLE IF EXISTS training_chat_search_fts;
1898
- CREATE VIRTUAL TABLE training_chat_search_fts USING fts5(
1899
- session_id UNINDEXED,
1900
- title,
1901
- body,
1902
- tokenize = 'unicode61 remove_diacritics 2'
1903
- );
1904
- `),await this.run("DELETE FROM training_chat_search_documents",[])}async createTaskMinerRunTables(){await this.exec(`
1905
- CREATE TABLE IF NOT EXISTS task_miner_runs (
1906
- id TEXT PRIMARY KEY,
1907
- profile_id TEXT NOT NULL,
1908
- status TEXT NOT NULL,
1909
- payload TEXT NOT NULL,
1910
- created_at TEXT NOT NULL,
1911
- updated_at TEXT NOT NULL
1912
- );
1913
- CREATE INDEX IF NOT EXISTS task_miner_runs_profile_updated_idx ON task_miner_runs(profile_id, updated_at DESC);
1914
- CREATE INDEX IF NOT EXISTS task_miner_runs_status_updated_idx ON task_miner_runs(status, updated_at DESC);
1915
- `)}async addColumnIfMissing(e,t,r){(await this.all(`PRAGMA table_info(${e})`)).some(i=>i.name===t)||await this.exec(`ALTER TABLE ${e} ADD COLUMN ${t} ${r}`)}async backfillTurnQueryColumns(){let e=await this.all("SELECT id, payload FROM turns");for(let t of e){let r=JSON.parse(t.payload);await this.run("UPDATE turns SET provider_turn_id = ?, status = ? WHERE id = ?",[r.providerTurnId??null,r.status??null,t.id])}}async nextEventSequence(){return((await this.get("SELECT MAX(sequence) AS sequence FROM events",[]))?.sequence??0)+1}async upsertSessionShellProjection(e,t){await this.run(`INSERT INTO projection_session_shells (id, sort_index, payload, updated_at)
1916
- VALUES (?, ?, ?, ?)
1917
- ON CONFLICT(id)
1918
- DO UPDATE SET
1919
- sort_index = excluded.sort_index,
1920
- payload = excluded.payload,
1921
- updated_at = excluded.updated_at`,[e.id,t,JSON.stringify(e),e.updatedAt])}async upsertApprovalProjection(e,t){await this.run(`INSERT INTO projection_approvals (id, session_id, status, sort_index, payload, updated_at)
1922
- VALUES (?, ?, ?, ?, ?, ?)
1923
- ON CONFLICT(id)
1924
- DO UPDATE SET
1925
- session_id = excluded.session_id,
1926
- status = excluded.status,
1927
- sort_index = excluded.sort_index,
1928
- payload = excluded.payload,
1929
- updated_at = excluded.updated_at`,[e.id,e.sessionId,e.status,t,JSON.stringify(e),ge()])}async rebuildLatestTurnProjectionForSession(e){let t=await this.get(`SELECT id, status, sort_index, payload, updated_at
1930
- FROM turns
1931
- WHERE session_id = ?
1932
- ORDER BY sort_index DESC
1933
- LIMIT 1`,[e]);if(!t){await this.run("DELETE FROM projection_latest_turns WHERE session_id = ?",[e]);return}await this.run(`INSERT INTO projection_latest_turns (session_id, turn_id, status, sort_index, payload, updated_at)
1934
- VALUES (?, ?, ?, ?, ?, ?)
1935
- ON CONFLICT(session_id)
1936
- DO UPDATE SET
1937
- turn_id = excluded.turn_id,
1938
- status = excluded.status,
1939
- sort_index = excluded.sort_index,
1940
- payload = excluded.payload,
1941
- updated_at = excluded.updated_at`,[e,t.id,t.status,t.sort_index,t.payload,t.updated_at])}async rebuildThreadDetailProjectionForSession(e){let t=await this.get(`SELECT
1942
- COUNT(*) AS event_count,
1943
- MAX(sequence) AS latest_event_sequence,
1944
- MAX(timestamp) AS latest_event_at
1945
- FROM events
1946
- 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=ps({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:ge()});await this.run(`INSERT INTO projection_thread_details (
1947
- session_id,
1948
- event_count,
1949
- latest_event_sequence,
1950
- latest_event_at,
1951
- latest_turn_id,
1952
- latest_turn_status,
1953
- pending_approval_count,
1954
- payload,
1955
- updated_at
1956
- )
1957
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
1958
- ON CONFLICT(session_id)
1959
- DO UPDATE SET
1960
- event_count = excluded.event_count,
1961
- latest_event_sequence = excluded.latest_event_sequence,
1962
- latest_event_at = excluded.latest_event_at,
1963
- latest_turn_id = excluded.latest_turn_id,
1964
- latest_turn_status = excluded.latest_turn_status,
1965
- pending_approval_count = excluded.pending_approval_count,
1966
- payload = excluded.payload,
1967
- 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=ps({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 (
1968
- session_id,
1969
- event_count,
1970
- latest_event_sequence,
1971
- latest_event_at,
1972
- latest_turn_id,
1973
- latest_turn_status,
1974
- pending_approval_count,
1975
- payload,
1976
- updated_at
1977
- )
1978
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
1979
- ON CONFLICT(session_id)
1980
- DO UPDATE SET
1981
- event_count = excluded.event_count,
1982
- latest_event_sequence = excluded.latest_event_sequence,
1983
- latest_event_at = excluded.latest_event_at,
1984
- payload = excluded.payload,
1985
- 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?wl(t):null}async rebuildReadModels(){await this.exec(`
1986
- DELETE FROM projection_latest_turns;
1987
- DELETE FROM projection_approvals;
1988
- DELETE FROM projection_thread_details;
1989
- DELETE FROM projection_session_shells;
1990
- `);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=Ja(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 Yc(this.data,{exec:l(e=>this.exec(e),"exec"),run:l((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 fl(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 hs=class extends fs{static{l(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=Ae.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 I("learning_credential_operation_conflict",409);return Ae.parse(JSON.parse(n.payload))}if(i.get("SELECT id FROM learning_source_credentials WHERE key_hash = ?",[t]))throw new I("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?Ae.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=>Ae.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=Ae.parse(JSON.parse(n.payload));if(d.revokedAt!==null)return d;let c=Ae.parse({...d,revokedAt:s});return i.run("UPDATE learning_source_credentials SET payload = ? WHERE scope = ? AND source_id = ? AND id = ?",[JSON.stringify(c),e,t,r]),c})}};var Ts=class extends hs{static{l(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:l(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=Ki(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 Ki(a,e,t){let r=l((s,i)=>fe[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
1991
- JOIN learning_revisions history USING (scope, kind, id, revision)
1992
- 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(),lm(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 = ?"],c=[e,s];if(i.reviewState!==void 0){if(s!=="evidence")throw new Error("learning_review_filter_requires_evidence");let m=`EXISTS (SELECT 1 FROM learning_resources decision
1993
- JOIN learning_revisions decision_history USING (scope, kind, id, revision)
1994
- WHERE decision.scope = current.scope AND decision.kind = 'decision'
1995
- AND decision.parent_id = current.id AND decision.status IN ('approved', 'rejected')
1996
- AND json_extract(decision_history.payload, '$.evidence.contentHash') = json_extract(history.payload, '$.contentHash'))`;d.push(i.reviewState==="reviewed"?m:`NOT ${m}`)}for(let[m,f]of[["parent_id",i.parentId],["status",i.status]])f!==void 0&&(d.push(`current.${m} = ?`),c.push(f));i.afterId!==void 0&&(d.push("current.id > ?"),c.push(i.afterId));let p=a.all(`SELECT history.payload FROM learning_resources current
1997
- JOIN learning_revisions history USING (scope, kind, id, revision)
1998
- WHERE ${d.join(" AND ")} ORDER BY current.id LIMIT ?`,[...c,n+1]),u=p.slice(0,n).map(m=>r(s,m));return{items:u,nextCursor:p.length>n?u.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 c=a.get("SELECT split FROM learning_family_splits WHERE scope = ? AND namespace = ? AND kind = ? AND key = ?",[e,s,i,n]);if(c&&c.split!==d)throw new Error("task_family_split_conflict");c||a.run("INSERT INTO learning_family_splits (scope, namespace, kind, key, split) VALUES (?, ?, ?, ?, ?)",[e,s,i,n,d])}}}l(Ki,"createLearningTransaction");function lm(a,e,t,r,s,i){let n=fe[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 be(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 (?, ?, ?, ?, ?, ?)
1999
- 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])}l(lm,"putLearningResourceInTransaction");var Es=class extends Ts{static{l(this,"SqliteTrainingModelStore")}async saveModelCurrencySnapshot(e){let t=Kt.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
2000
- (id, series_id, entry_id, evidence_state, content_hash, payload, created_at)
2001
- 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],Kt.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],Kt.parse):e.seriesId?this.listParsedPayloads("SELECT payload FROM model_currency_snapshots WHERE series_id = ? ORDER BY created_at DESC",[e.seriesId],Kt.parse):this.listParsedPayloads("SELECT payload FROM model_currency_snapshots ORDER BY created_at DESC",[],Kt.parse)}async saveModelComparisonSeries(e){let t=ot.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&&!Ml(r,t))throw new Error("A sealed Model Comparison Series definition is immutable.");return await this.upsertPayload(`INSERT INTO model_comparison_series
2002
- (id, profile_id, model_project_id, status, payload, created_at, updated_at)
2003
- VALUES (?, ?, ?, ?, ?, ?, ?)
2004
- ON CONFLICT(id) DO UPDATE SET
2005
- status = excluded.status,
2006
- payload = excluded.payload,
2007
- 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],ot.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],ot.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_comparison_series WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],ot.parse):this.listParsedPayloads("SELECT payload FROM model_comparison_series ORDER BY updated_at DESC",[],ot.parse)}async saveModelComparisonSeriesEntry(e){let t=De.parse(e),r=await this.getModelComparisonSeriesEntry(t.id);if(r&&!zi(r,t))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(r&&!Gi(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
2008
- (id, series_id, profile_id, model_project_id, ordinal, status, payload, created_at, updated_at)
2009
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2010
- ON CONFLICT(id) DO UPDATE SET
2011
- status = excluded.status,
2012
- payload = excluded.payload,
2013
- 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],De.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],De.parse):e.modelProjectId?this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries WHERE model_project_id = ? ORDER BY updated_at DESC",[e.modelProjectId],De.parse):this.listParsedPayloads("SELECT payload FROM model_comparison_series_entries ORDER BY updated_at DESC",[],De.parse)}async commitModelComparisonSeriesMutation(e){let t=ot.parse(e.series),r=De.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=ot.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&&!Ml(d,t))throw new Error("A sealed Model Comparison Series definition is immutable.");let c=await this.get("SELECT payload FROM model_comparison_series_entries WHERE id = ?",[r.id]),p=c?De.parse(JSON.parse(c.payload)):null;if((p?.status??null)!==e.expectedEntryStatus)throw new Error("The Comparison Series Entry changed before the mutation could be applied.");if(p&&!zi(p,r))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(p&&!Gi(p,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
2014
- (id, series_id, profile_id, model_project_id, ordinal, status, payload, created_at, updated_at)
2015
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2016
- 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=De.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=De.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(!zi(i,t))throw new Error("A Model Comparison Series Entry cannot change its immutable release lineage.");if(!Gi(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=Vt.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
2017
- (id, model_id, profile_id, version_number, taskset_id, status, payload, created_at)
2018
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2019
- 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],Vt.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],Vt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM reward_model_versions WHERE profile_id = ? ORDER BY created_at DESC",[e.profileId],Vt.parse):this.listParsedPayloads("SELECT payload FROM reward_model_versions ORDER BY created_at DESC",[],Vt.parse)}async saveRewardModelRun(e){let t=Jt.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
2020
- (id, reward_model_id, profile_id, taskset_id, status, payload, created_at, updated_at)
2021
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2022
- ON CONFLICT(id) DO UPDATE SET
2023
- status = excluded.status,
2024
- payload = excluded.payload,
2025
- 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],Jt.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],Jt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM reward_model_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],Jt.parse):this.listParsedPayloads("SELECT payload FROM reward_model_runs ORDER BY updated_at DESC",[],Jt.parse)}async saveModelVersion(e){let t=Yt.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
2026
- (id, model_id, profile_id, version_number, kind, payload, created_at)
2027
- VALUES (?, ?, ?, ?, ?, ?, ?)
2028
- 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],Yt.parse)}async listModelVersions(e={}){return e.modelId?this.listParsedPayloads("SELECT payload FROM model_versions WHERE model_id = ? ORDER BY version_number DESC",[e.modelId],Yt.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_versions WHERE profile_id = ? ORDER BY created_at DESC",[e.profileId],Yt.parse):this.listParsedPayloads("SELECT payload FROM model_versions ORDER BY created_at DESC",[],Yt.parse)}async saveModelRun(e,t={}){let r=St.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],Gt.parse);if(i=!!(s&&n&&Vc(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)&&!Ui(s,r)&&!i)throw new Error(`Terminal Model Run ${r.id} is immutable.`);return await this.upsertPayload(`INSERT INTO model_runs
2029
- (id, model_id, model_version_id, profile_id, taskset_id, status, payload, created_at, updated_at)
2030
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2031
- ON CONFLICT(id) DO UPDATE SET
2032
- status = excluded.status,
2033
- payload = excluded.payload,
2034
- 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],St.parse)}async listModelRuns(e={}){return e.modelId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE model_id = ? ORDER BY updated_at DESC",[e.modelId],St.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],St.parse):e.profileId?this.listParsedPayloads("SELECT payload FROM model_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e.profileId],St.parse):this.listParsedPayloads("SELECT payload FROM model_runs ORDER BY updated_at DESC",[],St.parse)}async saveRolloutTrajectoryReceipt(e){let t=zt.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)
2035
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2036
- ON CONFLICT(id) DO UPDATE SET job_id = excluded.job_id, taskset_id = excluded.taskset_id,
2037
- provider_rollout_id = excluded.provider_rollout_id, status = excluded.status,
2038
- 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],zt.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],zt.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM training_rollout_receipts WHERE taskset_id = ? ORDER BY updated_at DESC",[e.tasksetId],zt.parse):this.listParsedPayloads("SELECT payload FROM training_rollout_receipts ORDER BY updated_at DESC",[],zt.parse)}async saveModelBinding(e){let t=dt.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)
2039
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2040
- ON CONFLICT(id) DO UPDATE SET profile_id = excluded.profile_id, role = excluded.role,
2041
- role_target_id = excluded.role_target_id, model_artifact_lineage_id = excluded.model_artifact_lineage_id,
2042
- 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?dt.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?dt.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=dt.parse({...n,status:"rolled_back",rolledBackAt:e.timestamp});await this.run(`UPDATE model_bindings
2043
- SET status = 'rolled_back', payload = ?, updated_at = ?
2044
- WHERE id = ? AND status = 'active'`,[JSON.stringify(d),e.timestamp,n.id])}t&&await this.run(`INSERT INTO model_bindings
2045
- (id, profile_id, role, role_target_id, model_artifact_lineage_id, status, payload, created_at, updated_at)
2046
- 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],dt.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],dt.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]:[],dt.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 Ml(a,e){let t=l(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))}l(Ml,"sameSealedSeriesDefinition");function zi(a,e){let t=l(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))}l(zi,"sameEntryLineage");function Gi(a,e){if(um(a,e))return!0;let t=l((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)}l(Gi,"validEntryEvidenceEvolution");function um(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)}l(um,"validEntryRetryEvolution");var _s=class extends Es{static{l(this,"SqliteContinualBenchReviewStore")}async saveContinualLearningDailyBatch(e){let t=Pa.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
2047
- (id, series_id, schedule_entry_id, day_ordinal, status, revision, payload, created_at, updated_at)
2048
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
2049
- 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],Pa.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],Pa.parse):this.listParsedPayloads("SELECT payload FROM continual_learning_daily_batches ORDER BY series_id, day_ordinal ASC",[],Pa.parse)}async saveContinualBenchIssueReview(e){let t=xa.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)
2050
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2051
- 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],xa.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],xa.parse):this.listParsedPayloads("SELECT payload FROM continual_bench_issue_reviews ORDER BY updated_at DESC",[],xa.parse)}};var gs=class extends _s{static{l(this,"SqliteDatasetStore")}async listDatasetCatalogTasksets(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT
2052
- id AS taskset_id,
2053
- CAST(json_extract(payload, '$.revision') AS INTEGER) AS taskset_revision,
2054
- json_extract(payload, '$.datasetArtifact.id') AS artifact_id,
2055
- json_extract(payload, '$.name') AS name,
2056
- status,
2057
- CASE
2058
- WHEN json_type(payload, '$.datasetArtifact') = 'object'
2059
- THEN 'parquet'
2060
- ELSE 'inline'
2061
- END AS storage_kind,
2062
- CAST(COALESCE(
2063
- json_extract(payload, '$.datasetArtifact.rowCount'),
2064
- json_array_length(payload, '$.tasks'),
2065
- 0
2066
- ) AS INTEGER) AS row_count,
2067
- CAST(COALESCE(
2068
- json_extract(payload, '$.datasetArtifact.splitCounts.train'),
2069
- (SELECT COUNT(*) FROM json_each(tasksets.payload, '$.tasks')
2070
- WHERE json_extract(value, '$.split') = 'train'),
2071
- 0
2072
- ) AS INTEGER) AS train_count,
2073
- CAST(COALESCE(
2074
- json_extract(payload, '$.datasetArtifact.splitCounts.validation'),
2075
- (SELECT COUNT(*) FROM json_each(tasksets.payload, '$.tasks')
2076
- WHERE json_extract(value, '$.split') = 'validation'),
2077
- 0
2078
- ) AS INTEGER) AS validation_count,
2079
- CAST(COALESCE(
2080
- json_extract(payload, '$.datasetArtifact.splitCounts.test'),
2081
- (SELECT COUNT(*) FROM json_each(tasksets.payload, '$.tasks')
2082
- WHERE json_extract(value, '$.split') = 'test'),
2083
- 0
2084
- ) AS INTEGER) AS test_count,
2085
- CAST(COALESCE(
2086
- json_extract(payload, '$.datasetArtifact.splitCounts.frozen_eval'),
2087
- (SELECT COUNT(*) FROM json_each(tasksets.payload, '$.tasks')
2088
- WHERE json_extract(value, '$.split') = 'frozen_eval'),
2089
- 0
2090
- ) AS INTEGER) AS frozen_eval_count,
2091
- created_at,
2092
- updated_at
2093
- FROM tasksets
2094
- WHERE profile_id = ?
2095
- 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=>Br.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?Br.parse(JSON.parse(t.payload)):null}async upsertExternalDatasetSource(e){let t=Br.parse(e);await this.ready;let r=ge(),s=t.kind==="huggingface"?t.repositoryId:null,i=t.kind==="huggingface"?t.revision:null,n=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
2096
- id, profile_id, source_kind, session_id, source_hash,
2097
- repository_id, revision, payload, created_at, updated_at
2098
- )
2099
- VALUES (?, ?, ?, NULL, ?, ?, ?, ?, ?, ?)
2100
- ON CONFLICT(id) DO UPDATE SET
2101
- profile_id = excluded.profile_id,
2102
- source_kind = excluded.source_kind,
2103
- session_id = NULL,
2104
- source_hash = excluded.source_hash,
2105
- repository_id = excluded.repository_id,
2106
- revision = excluded.revision,
2107
- payload = excluded.payload,
2108
- 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],Aa.parse)}async listAllDatasetImportJobs(){return this.listParsedPayloads("SELECT payload FROM dataset_import_jobs ORDER BY updated_at DESC",[],Aa.parse)}async getDatasetImportJob(e){return this.getParsedPayload("SELECT payload FROM dataset_import_jobs WHERE id = ?",[e],Aa.parse)}async upsertDatasetImportJob(e){let t=Aa.parse(e),r=t.locator?.repositoryId??null,s=t.inspection?.resolvedRevision??t.locator?.requestedRevision??null;return await this.upsertPayload(`INSERT INTO dataset_import_jobs (
2109
- id, profile_id, source_kind, status, repository_id, revision,
2110
- taskset_id, payload, created_at, updated_at
2111
- )
2112
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2113
- ON CONFLICT(id) DO UPDATE SET
2114
- profile_id = excluded.profile_id,
2115
- source_kind = excluded.source_kind,
2116
- status = excluded.status,
2117
- repository_id = excluded.repository_id,
2118
- revision = excluded.revision,
2119
- taskset_id = excluded.taskset_id,
2120
- payload = excluded.payload,
2121
- 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],va.parse)}async getDatasetArtifactRegistryEntry(e){return this.getParsedPayload("SELECT payload FROM dataset_artifacts WHERE id = ?",[e],va.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,va.parse)}async upsertDatasetArtifactRegistryEntry(e){let t=va.parse(e),r=t.manifest;return await this.upsertPayload(`INSERT INTO dataset_artifacts (
2122
- id, profile_id, taskset_id, taskset_revision, content_hash,
2123
- format, row_count, storage_root, payload, created_at, updated_at
2124
- )
2125
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2126
- ON CONFLICT(id) DO UPDATE SET
2127
- profile_id = excluded.profile_id,
2128
- taskset_id = excluded.taskset_id,
2129
- taskset_revision = excluded.taskset_revision,
2130
- content_hash = excluded.content_hash,
2131
- format = excluded.format,
2132
- row_count = excluded.row_count,
2133
- storage_root = excluded.storage_root,
2134
- payload = excluded.payload,
2135
- 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 Qi=o.object({profileRef:kt,manifest:_t,metric:zn,gradeRefs:o.array(ae),receiptRefs:o.array(ae),passRate:o.number().min(0).max(1),passed:o.boolean(),completedAt:o.string().datetime(),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),ws=class extends gs{static{l(this,"SqliteEvaluationResultStore")}async saveProfileEvaluationGrade(e){let t=zs.parse(e);G(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],zs.parse)}async saveProfileEvaluationReceipt(e){let t=Ra.parse(e);Mo(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],Ra.parse)}async saveProfileEvaluationRun(e){let t=Qi.parse(e);G(t,"Profile evaluation run"),G(t.manifest,"Profile evaluation run manifest"),Sr(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],c=await this.getProfileEvaluationReceipt(d.id);if(!c||c.contentHash!==d.contentHash||c.runManifest.id!==t.manifest.id||c.runManifest.contentHash!==t.manifest.contentHash||c.id!==n.receiptId||c.taskId!==n.taskId||c.seed!==n.seed)throw new Error("Profile evaluation run references a missing or mismatched receipt.");let p=t.gradeRefs[i],u=await this.getProfileEvaluationGrade(p.contentHash);if(!u||u.contentHash!==p.contentHash||!c.graderEvidenceRefs.some(m=>m.id===p.id&&m.contentHash===p.contentHash))throw new Error("Profile evaluation run references a missing or mismatched grade.")}let s=await this.getProfileEvaluationRun(t.manifest.id);if(s){if(s.contentHash!==t.contentHash)throw new Error(`Profile evaluation run ${t.manifest.id} is immutable.`);return s}return await this.upsertPayload("INSERT INTO profile_evaluation_runs (id, profile_key, taskset_id, payload, created_at) VALUES (?, ?, ?, ?, ?)",[t.manifest.id,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],Qi.parse)}async listProfileEvaluationRuns(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_runs WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[R(kt.parse(e))],Qi.parse)}async saveProfileEvaluationComparison(e,t){let r=kt.parse(e),s=ja.parse(t);G(s,"Profile evaluation comparison");let i=[];for(let d of s.members){let c=await this.getProfileEvaluationRun(d.runManifest.id);if(!c||R(c.profileRef)!==R(r)||c.manifest.contentHash!==d.runManifest.contentHash||c.metric.contentHash!==d.metricResultHash)throw new Error("Profile evaluation comparison references a missing or mismatched run.");i.push({manifest:c.manifest,result:c.metric})}if(Pc({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],ja.parse)}async listProfileEvaluationComparisons(e){return this.listParsedPayloads("SELECT payload FROM profile_evaluation_comparisons WHERE profile_key = ? ORDER BY created_at DESC, id ASC",[R(kt.parse(e))],ja.parse)}async saveProfileEvaluationSuiteRun(e,t,r){let s=kt.parse(e),i=Ba.parse(r);G(i,"Profile evaluation suite run");let n=[];for(let p of i.members){let u=await this.getProfileEvaluationRun(p.runManifest.id);if(!u||R(u.profileRef)!==R(s)||u.manifest.contentHash!==p.runManifest.contentHash||u.contentHash!==p.runHash||u.passed!==p.passed||u.metric.value!==p.score)throw new Error("Profile evaluation suite references a missing or mismatched run.");n.push({definitionId:p.definitionId,manifest:u.manifest,runHash:u.contentHash,passed:u.passed,score:u.metric.value})}if(Cc({id:i.id,suiteId:i.suiteId,catalog:t,members:n,createdAt:i.createdAt,completedAt:i.completedAt}).contentHash!==i.contentHash)throw new Error("Profile evaluation suite differs from retained run evidence.");let c=await this.getProfileEvaluationSuiteRun(i.id);if(c){if(c.contentHash!==i.contentHash)throw new Error(`Profile evaluation suite run ${i.id} is immutable.`);return c}return await this.upsertPayload("INSERT INTO profile_evaluation_suite_runs (id, profile_key, payload, created_at) VALUES (?, ?, ?, ?)",[i.id,R(s),JSON.stringify(i),i.createdAt]),i}async getProfileEvaluationSuiteRun(e){return this.getParsedPayload("SELECT payload FROM profile_evaluation_suite_runs WHERE id = ?",[e],Ba.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(kt.parse(e))],Ba.parse)}async saveBenchmarkRun(e){let t=ss.parse(e.run);return G(t,"Benchmark run"),await this.upsertPayload(`INSERT INTO benchmark_runs (id, taskset_id, phase, payload, created_at)
2136
- VALUES (?, ?, ?, ?, ?)
2137
- 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],ss.parse)}async saveBenchmarkComparison(e){let t=is.parse(e.comparison);return G(t,"Benchmark comparison"),await this.upsertPayload(`INSERT INTO benchmark_comparisons (id, taskset_id, payload, created_at)
2138
- VALUES (?, ?, ?, ?)
2139
- 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],is.parse)}async saveEvaluationResult(e){let t=Fr.parse(e.result);if(G(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)
2140
- 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],Fr.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],Fr.parse)}};var Rs=class extends ws{static{l(this,"SqlitePreferenceComparisonStore")}async savePreferenceComparisonRelease(e){let t=Ka.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)
2141
- 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],Ka.parse)}async listPreferenceComparisonReleases(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_releases WHERE taskset_id = ? ORDER BY created_at DESC",[e],Ka.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=Ot.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(!pm(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)
2142
- 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],Ot.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??[]],Ot.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 = ?))
2143
- 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:Ot.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=za.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=Ot.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(Ka.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 c=await this.get("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? AND reviewer_key = ?",[t.assignmentId,t.reviewerKey]);if(c){let p=za.parse(JSON.parse(c.payload));if(p.receipt.contentHash!==t.receipt.contentHash)throw new Error("Preference comparison submission is already recorded for this reviewer and assignment.");r=p;return}if(n.state!=="submitted"&&!await this.claimPreferenceComparisonAssignmentRecordInWrite({current:n,reviewerKey:t.reviewerKey,updatedAt:t.submittedAt}))throw new Error("Preference comparison assignment is unavailable for this reviewer.");await this.run("INSERT INTO preference_comparison_submissions (id, taskset_id, assignment_id, reviewer_key, receipt_hash, payload, submitted_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[t.id,t.tasksetId,t.assignmentId,t.reviewerKey,t.receipt.contentHash,JSON.stringify(t),t.submittedAt]),n.state!=="submitted"&&await this.writePreferenceComparisonAssignmentInWrite({...n,state:"submitted",reviewerKey:t.reviewerKey,updatedAt:t.submittedAt}),r=t});if(this.writeQueue=s.catch(()=>{}),await s,!r)throw new Error("Preference comparison submission was not saved.");return r}async getPreferenceComparisonSubmission(e){return this.getParsedPayload("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? AND reviewer_key = ?",[e.assignmentId,e.reviewerKey],za.parse)}async listPreferenceComparisonSubmissions(e){return this.listParsedPayloads("SELECT payload FROM preference_comparison_submissions WHERE assignment_id = ? ORDER BY submitted_at ASC",[e],za.parse)}async savePreferenceComparisonCalibration(e){let t=Xi.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)
2144
- 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],Xi.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:Ot.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 pm(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}l(pm,"isPreferenceAssignmentTransition");import{cp as mm,lstat as Zi,mkdir as fm,mkdtemp as hm,readFile as Dl,readdir as Xl,rename as Tm,rm as Em}from"node:fs/promises";import Ke from"node:path";async function bt(a,e,t,r={}){return _m(Ke.join(a,"training","tasksets"),e,t,r)}l(bt,"materializeImmutableTasksetPackage");async function _m(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 fm(a,{recursive:!0});let s=await hm(Ke.join(a,".starter-")),i=Ke.join(a,t);try{if(r.source){let d=await Zi(r.source.directory);if(!d.isDirectory()||d.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");await Za(r.source.directory);for(let c of await Xl(r.source.directory))await mm(Ke.join(r.source.directory,c),Ke.join(s,c),{recursive:!0,force:!1,errorOnExist:!0});if(await Za(s),await ne(s)!==r.source.packageHash)throw new Error("Taskset draft files changed during publication. Refresh before publishing.")}await jc(e.taskset,s,{generatedFiles:e.generatedFiles}),await r.verify?.(s);let n=(await Za(s)).sort();try{await Tm(s,i)}catch(d){if(!["EEXIST","ENOTEMPTY"].includes(d.code??""))throw d;let c=await Zi(i);if(!c.isDirectory()||c.isSymbolicLink())throw new Error("Starter package destination is not a regular directory.");let p=await Za(i);if(JSON.stringify(p.sort())!==JSON.stringify(n))throw new Error("Existing starter package has a different file inventory.");for(let u of n){let m=Ke.join(i,u),f=await Zi(m);if(!f.isFile()||f.isSymbolicLink()||!(await Dl(m)).equals(await Dl(Ke.join(s,u))))throw new Error("Existing starter package differs from the pinned creation attempt.")}}return i}finally{await Em(s,{recursive:!0,force:!0})}}l(_m,"materializeImmutableTasksetPackageAtRoot");async function Za(a,e=""){let t=[];for(let r of await Xl(Ke.join(a,e),{withFileTypes:!0})){let s=Ke.join(e,r.name);if(r.isSymbolicLink())throw new Error("Starter packages cannot contain symbolic links.");if(r.isDirectory())t.push(...await Za(a,s));else if(r.isFile())t.push(s);else throw new Error("Starter packages must contain regular files and directories.")}return t}l(Za,"regularFiles");import{lstat as Bl,readFile as ql}from"node:fs/promises";import ia from"node:path";import{constants as en}from"node:fs";import{lstat as Sm,open as Nm,readdir as Im}from"node:fs/promises";import tn from"node:path";function ok(a){let e=fi(a.taskset),{agentSnapshot:t,harnessRelease:r}=a.releasedHarness?{agentSnapshot:qe.parse(a.releasedHarness.agentSnapshot),harnessRelease:We.parse(a.releasedHarness.harnessRelease)}:gm(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=mi(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:c}=Ye({taskset:a.taskset,selectedTasks:i,adapterId:a.adapterId??Xe(a.taskset),admittedTasksetRelease:a.tasksetRelease,rewardExecution:a.rewardExecution}),p=a.now??(()=>new Date().toISOString()),u=Co({schemaVersion:"openpond.runManifest.v1",id:`run-manifest-${R([r.contentHash,c.contentHash,a.model]).slice(0,24)}`,harnessRelease:{id:r.id,contentHash:r.contentHash},tasksetRelease:{id:c.id,contentHash:c.contentHash},model:{provider:a.model.providerId,model:a.model.modelId,revision:null,artifactHash:null,tokenizerRevision:null,chatTemplateHash:null},runtimeTarget:{adapterId:a.adapterId??Xe(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:p(),metadata:{sourceTasksetId:a.taskset.id,sourceTasksetRevision:a.taskset.revision,reasoningEffort:a.reasoningEffort??null}});return{agentSnapshot:t,harnessRelease:r,environmentRelease:n,verifierSetRelease:d,tasksetRelease:c,runManifest:u}}l(ok,"compileDesktopHarnessContext");function gm(a,e){let t=a.profileRelease?{id:a.profileRelease.id,contentHash:sa(a.profileRelease.contentHash)}:e?.git?.head?{id:`source-${Lt(e.git.head)}`,contentHash:sa(e.git.head)}:null;return Sd({sourceRelease:t,profileHead:e?.git?.head??null,skills:vm(e),agents:km(e)})}l(gm,"compileTemporaryProfileHarness");function wm(a){let e=a.artifacts.map(ys),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=Fl(a.attempt,a.grade),s=a.grade.components.map(i=>({id:`grader-${Lt(i.graderId)}-${a.grade.id}`,contentHash:R(i),mediaType:"application/vnd.openpond.grader-evidence+json",sizeBytes:Buffer.byteLength(K(i))}));return Ra.parse(Ho({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?sa(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??[]}}))}l(wm,"projectDesktopAttemptReceipt");function dk(a){let e=wm({manifest:a.context.runManifest,attempt:a.attempt,grade:a.grade,artifacts:a.artifacts}),t=a.context.tasksetRelease.tasks.find(h=>h.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(h=>h.kind==="output_artifact").map(h=>({path:typeof h.metadata.requiredOutputPath=="string"?h.metadata.requiredOutputPath:h.path,artifact:ys(h),detectedMediaType:h.mediaType??null,status:"collected",parseStatus:Ul(h.metadata.parseStatus),schemaStatus:Ul(h.metadata.schemaStatus),evidenceRefs:[ys(h)],metadata:{sourceArtifactId:h.id}})),i=bc({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((h,T)=>Rm({component:h,grader:a.context.verifierSetRelease.graders.find(E=>E.id===h.graderId),evidenceRef:e.graderEvidenceRefs[T]??null,gradeScored:a.grade.score!==null,boundResult:a.grade.rewardComposition?.results.find(E=>E.graderId===h.graderId)})),d=Lc({requiredOutputs:r,manifest:i}),c=ym(a.attempt,a.grade),p=d.some(h=>h.status==="unscorable"&&h.failureOwner==="collector"),u=d.some(h=>h.status==="scored"&&!h.passed),m=c.outcomeClass==="completed"&&p?{outcomeClass:"collector_failure",failureOwner:"collector"}:c.outcomeClass==="completed"&&u?{outcomeClass:"incomplete_output",failureOwner:"policy"}:c,f=Bo({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,...m,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:f}}l(dk,"projectDesktopCanonicalReceipts");function ck(a){let e=a.artifacts.find(i=>i.kind==="runtime_trace")??a.artifacts.find(i=>i.kind==="raw_model_response"),t=e?ys(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 Zo({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}})}l(ck,"projectDesktopCanonicalRollout");function Rm(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}}}l(Rm,"portableRewardComponent");function ym(a,e){let t=Xo.safeParse(a.metadata.outcomeClass);if(t.success){let s=a.metadata.failureOwner===null?null:Do.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=Fl(a,e);return r?jo({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"}}l(ym,"canonicalOutcome");function Ul(a){return a==="passed"||a==="failed"?a:"not_requested"}l(Ul,"artifactValidationStatus");function vm(a){return(a?.skills??[]).filter(e=>e.enabled).map(e=>({id:`skill-${Lt(e.name)}`,path:`skills/${Lt(e.name)}/SKILL.md`,contentHash:sa(e.sourceHash),sizeBytes:Math.max(0,e.charCount),mediaType:"text/markdown",visibility:"policy"}))}l(vm,"portableSkills");function km(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-${Lt(t)}`,path:`agents/${Lt(t)}/release.json`,contentHash:sa(r),sizeBytes:0,mediaType:"application/vnd.openpond.agent-release+json",visibility:"policy"}))}l(km,"portableAgents");function Xe(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:${Lt(a.environment.entrypoint)}`}l(Xe,"desktopTasksetRuntimeAdapterId");function ys(a){return{id:a.id,contentHash:sa(a.sha256),mediaType:a.mediaType??null,sizeBytes:a.sizeBytes}}l(ys,"portableArtifact");function Fl(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}l(Fl,"attemptFailureClass");function sa(a){return/^[a-f0-9]{64}$/.test(a)?a:R(a)}l(sa,"hash");function Lt(a){return a.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"asset"}l(Lt,"segment");async function jl(a,e){if(a.metadata.taskDefinition!==void 0||a.metadata.rewardBinding!==void 0)return{taskset:a,generatedFiles:[]};let t=await Sm(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 Im(tn.join(e,n),{withFileTypes:!0})){let c=tn.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(c);continue}if(!d.isFile())throw new Error("Taskset packages require regular files.");if(_d(c))continue;if(r.size>=1e4)throw new Error("Taskset source exceeds the file inventory limit.");let p=await Nm(tn.join(e,c),en.O_RDONLY|en.O_NOFOLLOW|en.O_NONBLOCK);try{let u=await p.stat();if(s+=u.size,!u.isFile()||s>Rt*3/4)throw new Error("Taskset source exceeds the package byte limit.");let m=Buffer.alloc(u.size),f=0;for(;f<m.length;){let h=await p.read(m,f,m.length-f,f);if(!h.bytesRead)throw new Error("Taskset source changed during capture.");f+=h.bytesRead}if((await p.read(Buffer.alloc(1),0,1,f)).bytesRead)throw new Error("Taskset source changed during capture.");r.set(c,m)}finally{await p.close()}}}return l(i,"visit"),await i(),gd(a,r,Xe(a))}l(jl,"prepareAuthoredTasksetFiles");async function na(a,e){for(let r of nt.parse(e.metadata.portableFileInventory??[])){let s=ia.resolve(a,r.sourcePath);if(!s.startsWith(`${ia.resolve(a)}${ia.sep}`))throw new Error("Taskset inventory file escapes its package.");let i=await Bl(s);if(!i.isFile()||i.isSymbolicLink())throw new Error("Taskset inventory requires regular files.");let n=await ql(s);if(n.length!==r.asset.sizeBytes||Ce(n)!==r.asset.contentHash)throw new Error(`Taskset file differs from its immutable inventory: ${r.asset.id}.`)}let t=ia.resolve(a,"assets");for(let r of e.tasks)for(let s of r.assets??[]){let i=ia.resolve(a,s.artifactRef);if(i===t||!i.startsWith(`${t}${ia.sep}`))throw new Error(`Taskset asset ${s.id} escapes the package assets directory.`);let n=await Bl(i);if(!n.isFile()||n.isSymbolicLink())throw new Error(`Taskset asset ${s.id} is not a regular file.`);let d=await ql(i);if(d.byteLength!==s.sizeBytes||Ce(d)!==s.sha256)throw new Error(`Taskset asset ${s.id} does not match its immutable manifest.`)}}l(na,"verifyPublishedTasksetAssets");function vs(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?B.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)
2145
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2146
- 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)
2147
- VALUES (?, ?, ?, ?, ?, ?)
2148
- 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}}l(vs,"saveTasksetRevision");import{createHash as eu}from"node:crypto";function tr(a){let e=gt.parse(a.setup),t=typeof a.package=="object"&&a.package!==null&&"schemaVersion"in a.package&&a.package.schemaVersion==="openpond.tasksetPackage.v1"?st(a.package):null,r=t?null:ui(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 c=s.taskset.tasks.filter(T=>T.split==="train"),p=t?t.taskset.graders:Dt(r.rewardBinding,r.rewards),u=p.find(T=>T.rewardEligible&&T.weight>0),m=t?.environment??r?.executionResources?.environment??r?.execution?.environment;if(!c.length||!u||!m)return e;let f=8,h=8;return gt.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,c.length),selectionStrategy:"stable_hash_top_n"},lora:{rank:2},rollout:{groupSize:f,concurrency:4,maxTurns:s.taskset.environment.kind==="text"?1:15,maxOutputTokens:1024,temperature:.8,topP:.95,seed:17},optimizer:{learningRate:1e-4,maxSteps:h,clipRange:.2,iterations:2,microbatchSize:1,gradientAccumulationSteps:f,advantageEpsilon:1e-8,adamw:{name:"adamw",weightDecay:0,beta1:.9,beta2:.999,epsilon:1e-8}},loss:{method:"grpo",klBeta:.01},reward:{graderId:u.id,graderHash:jr(p),environmentId:m.id,environmentVersion:String(m.revision),toolContractHash:jr(s.taskset.tools),learnedPreference:null},resourceLimits:{wallTimeMs:3960*1e3,maxRollouts:h*f,maxPayloadBytes:1e6},policyOptimization:null}})}l(tr,"prepareModelTrainingDefaults");var er=o.string().trim().min(1).max(500),Pe=de,Wl=o.object({schemaVersion:o.literal("openpond.modelStarter.v1"),id:er,revision:o.number().int().positive(),name:o.string().trim().min(1).max(200),description:o.string().trim().min(1).max(2e3),category:o.enum(["extraction","support","operations","knowledge","coding","writing","classification"]),taskset:Pe,taskDefinition:Pe,rewardBinding:Pe,rewards:o.array(Pe).min(1).max(100),assets:o.array(Pe).max(1e3),previewTaskIds:o.array(er).min(1).max(8),startingModel:oi,supportedMethods:o.array(Wr).min(1).max(8),defaultMethod:Wr,provenance:o.object({author:o.string().min(1).max(200),license:o.string().min(1).max(200),sourceDescription:o.string().min(1).max(2e3)}).strict(),evidence:o.object({verifierFixtures:Pe.nullable(),baseline:Pe.nullable(),training:Pe.nullable(),evaluation:Pe.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."})}),$l=Wl.safeExtend({contentHash:o.string().regex(/^[a-f0-9]{64}$/)}),Yl=o.object({starter:$l,taskset:Me,taskDefinition:Ut,rewardBinding:Ea,rewards:o.array(Nr).min(1).max(100),assets:o.array(Ar).max(1e3),execution:Na.optional()}).strict(),Vl=o.object({schemaVersion:o.literal("openpond.modelStarterPrivacyReview.v1"),disposition:o.literal("synthetic_only"),reviewedBy:o.string().trim().min(1).max(500),reviewedAt:o.iso.datetime(),reviewedContentHash:o.string().regex(/^[a-f0-9]{64}$/),note:o.string().trim().min(1).max(2e3)}).strict();function Jl(a){let{contentHash:e,...t}=a.starter,{contentHash:r,...s}=a.taskset,{contentHash:i,...n}=t.taskset,d={...s.metadata},c=d.starterAuthoring;if(c&&typeof c=="object"&&!Array.isArray(c)){let{privacyReview:p,...u}=c;d.starterAuthoring=u}return W({...a,starter:{...t,taskset:n},taskset:{...s,metadata:d}}).contentHash}l(Jl,"modelStarterPrivacyContentHash");var Kl=o.object({profileId:er,modelId:er,name:o.string().trim().min(1).max(200),starter:Pe,startingModel:oi,method:Wr,rewardBindingRef:Pe.nullable().optional(),learning:ni.optional()}).strict(),zl=Kl.extend({schemaVersion:o.literal("openpond.modelStarterCreation.v1"),operationId:er}).strict();function ar(a){return He(a,64*1024),zl.parse(a)}l(ar,"parseModelStarterCreationRequest");function rr(a,e){let t=ar(a),r=sr(e);if(!C(t.starter,O(r.starter)))throw new Error("Starter creation references a different package revision.");if(!r.starter.supportedMethods.includes(t.method))throw new Error("The selected training method is not supported by this starter.");return{request:t,resolved:r}}l(rr,"validateModelStarterCreation");function Om(a){let{starter:e,taskset:t,taskDefinition:r,rewardBinding:s,rewards:i}=sr(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(c=>C(n.reward,O(c)));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(c=>c.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}}}l(Om,"previewModelStarter");function sr(a){He(a,16*1024*1024);let e=Yl.parse(a),{starter:t,taskset:r,taskDefinition:s,rewardBinding:i,rewards:n,assets:d}=e,c=r.metadata.starterAuthoring;if(c&&typeof c=="object"&&!Array.isArray(c)&&"privacyReview"in c&&Vl.parse(c.privacyReview).reviewedContentHash!==Jl(e))throw new Error("Starter privacy review differs from the published contents.");let p=[t,r,s,i,...n,...d];for(let k of p){let{contentHash:_,...v}=k;if(W(v).contentHash!==_)throw new Error(`Starter resource integrity failed: ${k.id}.`)}Qn(r),sd(e.execution,r,d);function u(k,_){if(!C(k,O(_)))throw new Error(`Starter dependency mismatch: ${k.id}.`)}if(l(u,"exact"),u(t.taskset,r),u(t.taskDefinition,s),u(t.rewardBinding,i),u(s.rewardBinding,i),i.recipeRef)throw new Error("Starter binding recipes must be resolved into a standalone binding before publication.");let{policy:m,environment:f,environmentRelease:h,tools:T,capabilities:E,verifierSetRelease:g}=r,w={policy:m,environment:f,...h?{environmentRelease:h}:{},tools:T,capabilities:E,...g?{verifierSetRelease:g}:{}};if(W(w).contentHash!==W(s.execution).contentHash)throw new Error("Starter execution context differs from its task format.");if(W({graders:r.graders}).contentHash!==W({graders:Dt(i,n)}).contentHash)throw new Error("Starter executable graders differ from its Reward binding.");for(let[k,_]of[[t.rewards,n],[t.assets,d]]){if(k.length!==_.length||new Set(_.map(v=>v.id)).size!==_.length)throw new Error("Starter dependency inventory mismatch.");for(let v of k){let x=_.find(N=>N.id===v.id);if(!x)throw new Error(`Starter dependency is missing: ${v.id}.`);u(v,x)}}for(let k of i.sources){let _=n.find(v=>v.id===k.reward.id);if(!_)throw new Error(`Starter Reward is missing: ${k.reward.id}.`);u(k.reward,_)}for(let k of n){let _=k.implementation,v=[...k.assets,..."verifierRef"in _?[_.verifierRef]:[],..."rubricRef"in _?[_.rubricRef]:[],..."inputContract"in _?[_.inputContract]:[]];for(let x of v){let N=d.find(H=>H.id===x.id);if(!N||W(N.asset).contentHash!==W(x).contentHash)throw new Error(`Starter Reward source is missing or changed: ${x.id}.`);if(x.visibility==="policy")throw new Error(`Starter Reward source must remain private to its evaluator: ${x.id}.`)}}if(new Set(r.tasks.map(k=>k.id)).size!==r.tasks.length)throw new Error("Starter task identities must be unique.");let y=new Map;for(let k of r.tasks){if(k.policyVisibleContext.instructions!==s.instructions)throw new Error(`Starter task does not carry its declared model instructions: ${k.id}.`);let _=W({input:k.input,context:k.policyVisibleContext}).contentHash,v=y.get(_);if(v&&v!==k.split)throw new Error("Starter policy input appears in multiple splits.");if(y.set(_,k.split),!Mt(s.inputSchema,k.input).valid)throw new Error(`Starter task input does not match its format: ${k.id}.`);if(k.expectedOutput!==null&&!Mt(s.outputSchema,k.expectedOutput).valid)throw new Error(`Starter expected output does not match its format: ${k.id}.`)}for(let k of t.previewTaskIds){let _=r.tasks.find(v=>v.id===k);if(!_||_.split==="frozen_eval")throw new Error(`Starter preview task is unavailable: ${k}.`)}return e}l(sr,"validateResolvedModelStarter");import{createHash as bm}from"node:crypto";function Z(a,e,t,r){let s=fe[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 (?, ?, ?, ?)
2149
- ON CONFLICT (scope, kind, id) DO UPDATE SET revision = excluded.revision
2150
- WHERE learning_resources.revision < excluded.revision`,[e,t,s.id,s.revision])}l(Z,"importStarterReleaseInTransaction");function Gl(a,e,t){function r(d,c){let p=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e,d,c.id,c.revision]);p||At(404,"model_reward_unavailable",`The exact ${d} resource is unavailable in this Profile.`);let u=fe[d].parse(JSON.parse(p.payload));return Oe(u),c.contentHash&&u.contentHash!==c.contentHash&&At(409,"model_reward_changed","The selected resource does not match its immutable content hash."),u}l(r,"read");let s=r("binding",t),i=[...new Map(s.sources.map(d=>[X(d.reward),r("reward",d.reward)])).values()],n=new Map;for(let d of i){let c=d.implementation;for(let p of[...d.assets,..."verifierRef"in c?[c.verifierRef]:[],..."rubricRef"in c?[c.rubricRef]:[],..."inputContract"in c?[c.inputContract]:[]])n.has(p.id)||n.set(p.id,r("asset",{id:p.id,revision:1})),re(n.get(p.id),p)}return{rewardBinding:s,rewards:i,assets:[...n.values()]}}l(Gl,"readSelectedModelReward");function ks(a,e,t,r){let s=de.parse(e.metadata.rewardBinding),i=l((w,y)=>{let k=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[e.profileId,w,y.id,y.revision]);k||At(404,"model_reward_unavailable",`The exact ${w} resource is unavailable in this Profile.`);let _=fe[w].parse(JSON.parse(k.payload));return Oe(_),y.contentHash&&_.contentHash!==y.contentHash&&At(409,"model_reward_changed","The selected resource does not match its immutable content hash."),_},"read"),n=i("definition",de.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))&&At(409,"model_taskset_context_changed","Taskset context differs from its immutable task definition.");let d=i("binding",s),c=[...new Map(d.sources.map(w=>[X(w.reward),i("reward",w.reward)])).values()];e.metadata.rewardExecution!==void 0&&X(e.metadata.rewardExecution)!==X({binding:d,rewards:c})&&At(409,"model_taskset_rewards_changed","Taskset embedded Rewards differ from their immutable binding.");let p=i("binding",t),u=[...new Map(p.sources.map(w=>[X(w.reward),i("reward",w.reward)])).values()],m=new Map((r?.modelResources?.assets??[]).map(w=>[w.id,w])),f=l(w=>{m.has(w)||m.set(w,i("asset",{id:w,revision:1}))},"addAsset");for(let w of[...c,...u]){let y=w.implementation;for(let k of[...w.assets,..."verifierRef"in y?[y.verifierRef]:[],..."rubricRef"in y?[y.rubricRef]:[],..."inputContract"in y?[y.inputContract]:[]])f(k.id)}let h,T=li.shape.executionResources.parse(e.environment.metadata.portableExecutionResources);if(n.execution.environment.entrypoint==="openpond.javascript-environment.v1"){let w=i("asset",{id:ci(n.execution),revision:1});h=Na.parse(JSON.parse(re(w,w.asset)));for(let y of[h.javascript.module,h.environment.actionSchemaRef,h.environment.observationSchemaRef,h.environment.stateSchemaRef])y&&f(y.id)}for(let w of e.tasks)w.privilegedContextRef&&f(w.privilegedContextRef);X(e.graders)!==X(it(d,c,[...m.values()]))&&At(409,"model_taskset_graders_changed","Taskset graders differ from their immutable Reward binding.");let E=Me.parse(W({schemaVersion:"openpond.tasksetRelease.v2",id:e.id,revision:e.revision,...n.execution,graders:Dt(d,c),...e.metrics?{metrics:e.metrics}:{},tasks:e.tasks.map(w=>{let y=hi(w);return w.requiredOutputs===void 0&&w.metadata.portableTaskRecord===void 0&&delete y.requiredOutputs,y}),metadata:e.metadata.derivedPortableMetadata??{localSource:O(e),starter:{taskDefinition:O(n),rewardBinding:s}}}));return{sourcePackage:r?{...r.modelResources,taskset:r.taskset,executionResources:{environment:r.environment,verifierSet:r.verifierSet}}:{taskset:E,taskDefinition:n,rewardBinding:d,rewards:c,assets:[...m.values()],...T?{executionResources:T}:{},...h?{execution:h}:{}},selectedBinding:p,selectedRewards:u,assets:m}}l(ks,"readModelTasksetSource");function At(a,e,t){throw new at(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}l(At,"fail");function an(a){if(a?.metadata.learning===void 0)return null;let e=uo.parse(a.metadata.learning);return Oe(e.definition),br(e.binding,e.rewards),C(e.definition.rewardBinding,O(e.binding))||ze(409,"model_batch_binding_changed","Reviewed task definition and Reward binding do not match."),e.binding}l(an,"reviewedTasksetRewardBinding");function rn(a,e,t=!0,r){let s=Sa(e),{project:i}=s,n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),d=n?Y.parse(JSON.parse(n.payload)):null;d&&d.profileId!==i.profileId&&ze(404,"model_not_found","Model is not available in this Profile."),(d?.revision??0)!==s.expectedRevision&&ze(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let c=i.trainingSetup.tasksetRef;if(!c||!i.trainingSetup.rewardBindingRef)return null;let p=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[c.id,c.revision]),u=p?B.parse(JSON.parse(p.payload)):null;(!u||u.profileId!==i.profileId)&&ze(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),(u.contentHash!==c.contentHash||he(u)!==u.contentHash)&&ze(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash.");let m=an(u);if(m)return C(O(m),i.trainingSetup.rewardBindingRef)||ze(422,"model_batch_reward_review_required","Changing a reviewed batch's Reward requires regrading and a new reviewed batch."),null;let f=u.metadata.rewardBinding===void 0?null:de.parse(u.metadata.rewardBinding);if(f&&C(f,i.trainingSetup.rewardBindingRef))return null;if(!f&&r&&!r.modelResources&&!r.learningResources){let b=Gl(a,i.profileId,i.trainingSetup.rewardBindingRef),V=md({owner:{scopeId:i.profileId,modelId:i.id},source:r,...b}),Q=Ql(a,s,t),F=$t({package:V,profileId:i.profileId,name:u.name,createdAt:Q.created_at}),ee={...V.modelResources,taskset:V.taskset,executionResources:{environment:V.environment,verifierSet:V.verifierSet}};return{taskset:F.taskset,generatedFiles:F.generatedFiles,directoryId:String(F.taskset.environment.metadata.runtimeSourceTasksetId),source:u,sourcePackage:null,derived:ee,imported:F}}f||ze(422,"model_taskset_derivation_unavailable","This Taskset needs an authored task definition and Reward binding before its Reward can be changed.");let{sourcePackage:h,selectedBinding:T,selectedRewards:E,assets:g}=ks(a,u,i.trainingSetup.rewardBindingRef,r),w=Bt.safeParse(h.taskset.metadata.modelTasksetDerivation),k=d?.hosted?.apiOrigin&&d.hosted.tasksets.some(b=>{if(!w.success||b.localTasksetId!==u.id||!b.packageHash||!b.localTasksetHash)return!1;let V=a.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND content_hash = ? AND profile_id = ?",[u.id,b.localTasksetHash,i.profileId]),Q=V?B.parse(JSON.parse(V.payload)):null;if(!Q||Q.contentHash!==b.localTasksetHash)return!1;let F=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = 'package' AND id = ? AND revision = ?",[i.profileId,b.releaseId,b.releaseRevision]),ee=F?Me.parse(JSON.parse(F.payload)):null,te=Bt.safeParse(ee?.metadata.modelTasksetDerivation);return ee?.contentHash===b.releaseHash&&te.success&&X(te.data.owner)===X(w.data.owner)&&C(te.data.root,w.data.root)})&&w.success&&w.data.owner.modelId===i.id?w.data.owner:{scopeId:i.profileId,modelId:i.id},_=Ia({owner:k,source:h,rewardBinding:T,rewards:E,assets:[...g.values()]}),v=Ql(a,s,t);if(r){let b=new Map(r.files.map(pe=>[pe.asset.id,pe]));for(let pe of _.assets)b.set(pe.id,{asset:pe.asset,base64:Buffer.from(pe.text).toString("base64")});let{taskset:V,executionResources:Q,...F}=_;if(!Q)throw new Error("Derived imported package is missing execution resources.");let ee=$r({schemaVersion:"openpond.tasksetPackage.v1",taskset:V,...Q,modelResources:F,files:[...b.values()]}),te=$t({package:ee,profileId:i.profileId,name:u.name,createdAt:v.created_at});return{taskset:te.taskset,generatedFiles:te.generatedFiles,directoryId:String(te.taskset.environment.metadata.runtimeSourceTasksetId),source:u,sourcePackage:h,derived:_,imported:te}}let x=`${_.taskset.id}-r${_.taskset.revision}-${W({packageHash:_.taskset.contentHash,preparedAt:v.created_at}).contentHash}`,N=yt(u,v.created_at),H=new Map(_.taskset.tasks.map(b=>[b.id,b])),$=[];for(let b of _.taskset.graders)if(b.kind==="custom_verifier"){let V=Wt(b.verifierRef.contentHash);$.some(Q=>Q.path===V)||$.push({path:V,role:"verifier",content:re(g.get(b.verifierRef.id),b.verifierRef)})}let j=Oa({tasksetId:_.taskset.id,now:v.created_at,sourcePackageHash:_.taskset.contentHash,draft:{...N,policy:_.taskset.policy,tasks:N.tasks.map(b=>({...b,metadata:{...b.metadata,portableTaskRecord:H.get(b.id)}})),environment:{...N.environment,metadata:{...N.environment.metadata,runtimeSourceTasksetId:x,portableExecutionResources:_.executionResources}},graders:it(T,E,[...g.values()]),learningSignals:{...N.learningSignals,rewards:N.learningSignals.rewards.map(b=>({...b,rules:[{id:T.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],artifactRef:T.id,metadata:{...b.metadata,rewardBinding:O(T)}}))},metadata:{...N.metadata,portableCapabilities:_.taskset.capabilities,taskDefinition:O(_.taskDefinition),rewardBinding:O(T),rewardExecution:{binding:T,rewards:E},derivedPortableMetadata:_.taskset.metadata,modelTasksetDerivation:_.taskset.metadata.modelTasksetDerivation}}});if(j.metrics=_.taskset.metrics,j.contentHash=he(j),j.revision!==_.taskset.revision)throw new Error("Derived local and portable Taskset revisions differ.");return{taskset:j,generatedFiles:$,directoryId:x,source:u,sourcePackage:h,derived:_}}l(rn,"prepareModelTasksetSave");function Zl(a,e,t){let r=e.project.profileId;for(let d of[t.sourcePackage,t.derived]){if(!d)continue;for(let p of d.assets)Z(a,r,"asset",p);for(let p of d.rewards)Z(a,r,"reward",p);Z(a,r,"binding",d.rewardBinding),Z(a,r,"package",d.taskset),Z(a,r,"definition",d.taskDefinition);let c=d.executionResources??d.execution;c&&Z(a,r,"asset",wt(c)),d.execution&&Z(a,r,"asset",rt(d.execution))}let s=t.taskset;a.get("SELECT content_hash FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[s.id,s.revision])&&ze(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])}l(Zl,"commitPreparedModelTaskset");function Ql(a,e,t){let r=bm("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&&ze(409,"model_operation_conflict","This save operation was already used with different Model configuration."),i}l(Ql,"recordModelTasksetPreparation");function ze(a,e,t){throw new at(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}l(ze,"fail");function Ss(a,e){let t=Sa(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=eu("sha256").update(X(t)).digest("hex");return r.request_hash!==s&&xe(409,"model_operation_conflict","This save operation was already used with different Model configuration."),Y.parse(JSON.parse(r.payload))}l(Ss,"findModelProjectSave");function tu(a,e,t,r){a.exec("BEGIN IMMEDIATE");try{let s=ir(a,e,t,r);return a.exec("COMMIT"),s}catch(s){throw a.exec("ROLLBACK"),s}}l(tu,"commitModelProjectSave");function ir(a,e,t,r){let s=Sa(e);s.learning&&xe(422,"model_learning_hosted_required","Create this Model in a hosted workspace to enable continual learning.");let i=eu("sha256").update(X(s)).digest("hex"),{project:n,operationId:d,expectedRevision:c}=s,p=Ss(a,s);if(p)return p;let u=a.get("SELECT payload FROM model_projects WHERE id = ?",[n.id]),m=u?Y.parse(JSON.parse(u.payload)):null;m&&m.profileId!==n.profileId&&xe(404,"model_not_found","Model is not available in this Profile."),(m?.revision??0)!==c&&xe(409,"model_revision_conflict","Model changed since it was opened. Refresh before saving.");let f=Lm(a,s),h=an(f);h||Am(a,s);let T=h?O(h):f?.metadata.rewardBinding===void 0?null:de.parse(f.metadata.rewardBinding);f&&n.trainingSetup.rewardBindingRef&&(!T||!C(T,n.trainingSetup.rewardBindingRef))&&!t&&xe(409,"model_taskset_preparation_required","Changing this Reward requires publishing its model-owned Taskset revision."),t&&((!n.trainingSetup.tasksetRef||!C(n.trainingSetup.tasksetRef,O(t.source))||!n.trainingSetup.rewardBindingRef||!C(n.trainingSetup.rewardBindingRef,O(t.derived.rewardBinding)))&&xe(409,"model_taskset_preparation_changed","The prepared Taskset differs from the selected configuration."),Zl(a,s,t));let E=new Date().toISOString(),g=gt.parse({...n.trainingSetup,baseModel:n.trainingSetup.baseModel??n.defaultBaseModel,method:n.trainingSetup.method??(f?.authoringProvenance.buildIntent==="verifiable_reward"?"grpo":f?.authoringProvenance.buildIntent==="demonstrations"?"sft":null),...T?{rewardBindingRef:T}:{},...t?{rewardBindingRef:O(t.derived.rewardBinding),tasksetRef:O(t.taskset),tasksetRelease:null,recipe:null,...n.trainingSetup.evaluationTasksetRef&&C(n.trainingSetup.evaluationTasksetRef,O(t.source))?{evaluationTasksetRef:O(t.taskset)}:{}}:{}}),w=t?.derived??r??(f&&!h&&g.rewardBindingRef&&f.metadata.taskDefinition!==void 0&&f.metadata.rewardBinding!==void 0?ks(a,f,g.rewardBindingRef).sourcePackage:void 0),y=Y.parse({...m,...n,trainingSetup:w?tr({setup:g,package:w}):g,schemaVersion:"openpond.modelProject.v2",revision:c+1,hosted:m?.hosted??null,tasksetSyncs:m?.tasksetSyncs??[],createdAt:m?.createdAt??E,updatedAt:E});return a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2151
- 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}l(ir,"saveModelProjectInTransaction");function Lm(a,e){let t=e.project.trainingSetup.tasksetRef;if(!t){e.project.trainingSetup.tasksetRelease&&xe(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?B.parse(JSON.parse(r.payload)):null;return(!s||s.profileId!==e.project.profileId)&&xe(404,"model_taskset_not_found","The selected Taskset revision is not available in this Profile."),s.contentHash!==t.contentHash&&xe(409,"model_taskset_changed","The selected Taskset does not match its immutable content hash."),s}l(Lm,"assertTaskset");function Am(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||xe(404,"model_reward_unavailable","The exact Reward configuration is unavailable in this Profile.");let c=(i==="binding"?Ea:Nr).parse(JSON.parse(d.payload));return c.contentHash!==n.contentHash&&xe(409,"model_reward_changed","The selected Reward does not match its immutable content hash."),Oe(c),c}l(r,"read");let s=Ea.parse(r("binding",t));for(let i of s.sources)r("reward",i.reward)}l(Am,"assertReward");function xe(a,e,t){throw new at(a,{schemaVersion:"openpond.modelProjectApiError.v2",code:e,message:t,retryable:!1,requestId:null,details:{}})}l(xe,"fail");function au(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=Y.parse(JSON.parse(i.payload)),d={id:t.id,revision:t.revision,contentHash:t.contentHash};return ir(a,{schemaVersion:"openpond.modelProjectSave.v1",operationId:`draft-publication:${R({draftId:e.id,revision:e.revision,scope:s,tasksetRef:d})}`,expectedRevision:s.expectedModelRevision,project:ad.strip().parse({...n,trainingSetup:{...n.trainingSetup,tasksetRef:d,rewardBindingRef:t.metadata.rewardBinding===void 0?null:de.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)}l(au,"selectTasksetDraftModel");import{createHash as Xm,randomUUID as Um}from"node:crypto";import{lstat as du,mkdir as ou,readdir as Fm,readFile as jm,rename as Bm,rm as qm,writeFile as Wm}from"node:fs/promises";import oa from"node:path";import{constants as sn}from"node:fs";import{link as Pm,lstat as xm,mkdir as nn,mkdtemp as ru,open as Cm,readFile as Hm,readdir as Mm,rename as Dm,rm as su,writeFile as iu}from"node:fs/promises";import oe from"node:path";async function iN(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 Ue(a,t);if(!r.learningResources||r.taskset.id!==e.id||r.taskset.revision!==e.revision||R(Cr(r.taskset))!==R(e.metadata.learning))throw new Error("Imported batch differs from its pinned package.");return r}l(iN,"readImportedLearningTasksetPackage");async function Pt(a,e){let t=st(e),r=oe.join(a,"training","portable-packages");await nn(r,{recursive:!0});let s=oe.join(r,`${t.contentHash}.json`),i=await ru(oe.join(r,".package-"));try{let n=oe.join(i,"package.json");await iu(n,JSON.stringify(t),{flag:"wx",mode:384});try{await Pm(n,s)}catch(d){if(d.code!=="EEXIST")throw d;await Ue(a,t.contentHash)}}finally{await su(i,{recursive:!0,force:!0})}}l(Pt,"cacheTasksetPackage");async function Ue(a,e){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid Taskset package cache identity.");let t=oe.join(a,"training","portable-packages",`${e}.json`),r=await Cm(t,sn.O_RDONLY|sn.O_NOFOLLOW|sn.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>Rt)throw new Error("Taskset package cache must be a bounded regular file.");let i=Buffer.alloc(s.size),n=0;for(;n<i.length;){let c=await r.read(i,n,i.length-n,n);if(!c.bytesRead)throw new Error("Taskset package cache changed during read.");n+=c.bytesRead}if((await r.read(Buffer.alloc(1),0,1,n)).bytesRead)throw new Error("Taskset package cache changed during read.");let d=st(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()}}l(Ue,"readCachedTasksetPackage");async function nr(a){let e=st(a.package),t=Ei(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=l((c,p)=>{if(oe.isAbsolute(c)||c.includes("\\")||c.split("/").some(m=>!m||m==="."||m===".."))throw new Error("Taskset package file requires a safe relative path.");let u=r.get(c);if(u&&!Buffer.from(u).equals(Buffer.from(p)))throw new Error(`Taskset package files collide at ${c}.`);r.set(c,p)},"add");for(let c of e.files)s(c.asset.path,qt(c));for(let c of a.generatedFiles)s(c.path,Buffer.from(c.content,"utf8"));s("taskset.json",Buffer.from(JSON.stringify(a.taskset),"utf8"));let i=oe.join(a.home,"training","tasksets");await nn(i,{recursive:!0});let n=await ru(oe.join(i,".package-import-")),d=oe.join(i,t);try{for(let[c,p]of r)await nn(oe.dirname(oe.join(n,c)),{recursive:!0}),await iu(oe.join(n,c),p,{flag:"wx",mode:384});try{await Dm(n,d)}catch(c){if(!["EEXIST","ENOTEMPTY"].includes(c.code??""))throw c;let p=await xm(d);if(!p.isDirectory()||p.isSymbolicLink())throw new Error("Imported Taskset destination must be a regular directory.");let u=await nu(d);if(JSON.stringify(u.sort())!==JSON.stringify([...r.keys()].sort()))throw new Error("Imported Taskset file inventory changed.");for(let[m,f]of r)if(!(await Hm(oe.join(d,m))).equals(Buffer.from(f)))throw new Error("Imported Taskset files differ from the pinned package.")}await Pt(a.home,e)}finally{await su(n,{recursive:!0,force:!0})}}l(nr,"materializeImportedTasksetPackage");async function nu(a,e=""){let t=[];for(let r of await Mm(oe.join(a,e),{withFileTypes:!0})){let s=oe.posix.join(e,r.name);if(r.isSymbolicLink())throw new Error("Imported Taskset directories cannot contain symbolic links.");if(r.isDirectory())t.push(...await nu(a,s));else if(r.isFile())t.push(s);else throw new Error("Imported Taskset packages require regular files.")}return t}l(nu,"regularFiles");var da=wd.extend({workspaceHash:o.string().regex(/^[a-f0-9]{64}$/).nullable()}).strict();async function cu(a){let{db:e,profileId:t}=a,r=si.parse(a.request),s=l(()=>{let v=e.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[r.modelId,t]);if(!v)throw new Error("Taskset draft Model was not found in this Profile.");return Y.parse(JSON.parse(v.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 da.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 c=i.trainingSetup.tasksetRef,p=c?e.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[c.id,c.revision,t]):null,u=p?B.parse(JSON.parse(p.payload)):null;if(!u||!c||u.contentHash!==c.contentHash)throw new Error("The selected source Taskset is unavailable.");let m=a.source,f=i.hosted?.apiOrigin?i.hosted.tasksets.find(v=>v.localTasksetId===u.id&&v.localTasksetHash===u.contentHash&&v.packageHash===m.contentHash&&v.releaseId===m.taskset.id&&v.releaseRevision===m.taskset.revision&&v.releaseHash===m.taskset.contentHash):null,h=typeof u.metadata.importedPackageHash=="string"?u.metadata.importedPackageHash:f?.packageHash;if(h?h!==m.contentHash:!C(O(Ye({taskset:u,adapterId:Xe(u)}).tasksetRelease),O(m.taskset)))throw new Error("Taskset draft package differs from its selected source.");let T=m.modelResources?Bt.safeParse(m.taskset.metadata.modelTasksetDerivation):ri.safeParse(m.taskset.metadata.modelTasksetAuthoring),E=f&&T.success&&T.data.owner.modelId===i.id?T.data.owner:{scopeId:t,modelId:i.id},g=Td({request:r,owner:E,source:m}),w=Rd({sourceDraft:yt(u),source:m,preparation:g,expectedModelRevision:r.expectedModelRevision});await Pt(a.home,m);let y=da.parse({...w,workspaceHash:null}),k=y.draft;e.exec("BEGIN IMMEDIATE");try{let v=e.get("SELECT request_hash FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(v&&v.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");if(!v&&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,k.id,JSON.stringify(y)]),e.exec("COMMIT")}catch(v){throw e.exec("ROLLBACK"),v}let _=e.get("SELECT request_hash, payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[t,r.operationId]);if(!_||_.request_hash!==n)throw new Error("Taskset draft operation was reused with different input.");return da.parse(JSON.parse(_.payload))}l(cu,"prepareDraftInitialization");async function lu(a){let{initialized:e,workspacePath:t}=a;if(a.completed())return;if(e.workspaceHash)try{if(await du(t),a.completed())return;if(await on(t),await ne(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-${Um()}`;await ou(oa.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 Ue(a.home,s.sourcePackageHash),n=new Map;for(let c of e.filePaths){let p=i.files.find(u=>u.asset.id===c.assetId);if(!p)throw new Error("Taskset draft source asset is missing.");for(let u of c.paths){if(u.includes("\\")||oa.posix.isAbsolute(u)||u.split("/").some(h=>!h||h==="."||h===".."||h.startsWith(".env")))throw new Error("Taskset draft source path is invalid.");let m=n.get(u);if(m&&m!==p.asset.contentHash)throw new Error("Taskset draft source paths conflict.");if(m)continue;let f=oa.join(r,u);await ou(oa.dirname(f),{recursive:!0}),await Wm(f,qt(p),{flag:"wx"}),n.set(u,p.asset.contentHash)}}await $a(e.draft,r);for(let[c,p]of n)if(Xm("sha256").update(await jm(oa.join(r,c))).digest("hex")!==p)throw new Error(`Taskset draft source asset conflicts with authoring file ${c}.`);let d=await ne(r);if(a.retainHash({...e,workspaceHash:d}),a.completed())return;try{await Bm(r,t)}catch(c){if(!["EEXIST","ENOTEMPTY"].includes(c.code??""))throw c;if(a.completed())return;if(await on(t),await ne(t)!==d)throw new Error("Prepared Taskset draft files changed before initialization completed.")}}finally{await qm(r,{recursive:!0,force:!0})}}l(lu,"materializeDraftInitialization");async function on(a){let e=await du(a);if(!e.isDirectory()||e.isSymbolicLink())throw new Error("Taskset draft source must be a regular directory.");for(let t of await Fm(a,{withFileTypes:!0})){if(t.name.startsWith(".env")||t.isSymbolicLink())throw new Error("Taskset draft source contains a prohibited file.");if(t.isDirectory())await on(oa.join(a,t.name));else if(!t.isFile())throw new Error("Taskset draft source must contain regular files.")}}l(on,"assertRegularTree");import Ym from"node:path";import{constants as dn}from"node:fs";import{open as $m,realpath as uu}from"node:fs/promises";import or from"node:path";function pu(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?pi(a.learningResources).map(t=>t.asset.id):[]])}l(pu,"tasksetPackageInlineAssetIds");async function ca(a){let e=a.sources.length?await uu(a.root):or.resolve(a.root),t=[],r=new Set,s=0,i=l((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>Rt)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=Pn.parse(n.asset);if(!n.sourcePath||or.isAbsolute(n.sourcePath))throw new Error(`Taskset asset ${d.id} requires a relative source path.`);let c=or.resolve(e,n.sourcePath);if(!c.startsWith(`${e}${or.sep}`))throw new Error(`Taskset asset ${d.id} escapes its local package.`);if(!(await uu(c)).startsWith(`${e}${or.sep}`))throw new Error(`Taskset asset ${d.id} escapes its local package.`);let u=await $m(c,dn.O_RDONLY|dn.O_NOFOLLOW|dn.O_NONBLOCK);try{let m=await u.stat();if(!m.isFile()||m.size!==d.sizeBytes)throw new Error(`Taskset asset ${d.id} differs from its immutable file size.`);if(4*Math.ceil(m.size/3)+s>Rt)throw new Error("Local Taskset files exceed the package envelope.");let f=Buffer.alloc(m.size),h=0;for(;h<f.length;){let E=await u.read(f,h,f.length-h,h);if(!E.bytesRead)throw new Error(`Taskset asset ${d.id} changed during capture.`);h+=E.bytesRead}if((await u.read(Buffer.alloc(1),0,1,h)).bytesRead)throw new Error(`Taskset asset ${d.id} changed during capture.`);i(d,f)}finally{await u.close()}}for(let n of[...a.content.modelResources?.assets??[],...a.content.learningResources?.assets??[]])r.has(n.asset.id)||i(n.asset,Buffer.from(re(n,n.asset),"utf8"));if(a.content.learningResources)for(let n of pi(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,c)=>[d,c]));t.sort((d,c)=>n.get(d.asset.id)-n.get(c.asset.id))}return $r({...a.content,files:t})}l(ca,"captureLocalTasksetPackage");async function mu(a){let e=Ye({taskset:a.taskset,adapterId:Xe(a.taskset)}),t=await ca({root:a.directory,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:e.tasksetRelease,environment:e.environmentRelease,verifierSet:e.verifierSetRelease},sources:nt.parse(a.taskset.metadata.portableFileInventory??[])}),r=a.preparation.authoringGraph==="bound"?await Ue(a.home,a.preparation.sourcePackageHash):void 0,s=Ed({preparation:a.preparation,edited:t,source:r});if(s.modelResources){let f=$t({package:s,profileId:a.taskset.profileId,name:a.taskset.name,createdAt:a.taskset.createdAt}),h=B.parse({...f.taskset,authoringProvenance:a.taskset.authoringProvenance,metadata:{...f.taskset.metadata,sourcePackageHash:a.taskset.metadata.sourcePackageHash}}),T=B.parse({...h,contentHash:he(h)});return await nr({home:a.home,...f,taskset:T}),{taskset:T,directory:Ym.join(a.home,"training","tasksets",String(T.environment.metadata.runtimeSourceTasksetId))}}let i=nt.parse(a.taskset.metadata.portableFileInventory??[]),n=s.files.map(f=>({asset:f.asset,sourcePath:i.find(h=>h.asset.id===f.asset.id)?.sourcePath??f.asset.path})),d=s.taskset.environment.entrypoint==="openpond.javascript-environment.v1"?s.files.find(f=>f.asset.path==="environment/execution.json"):void 0,c=`model-draft-${R({packageHash:s.contentHash,taskset:a.taskset})}`,p=B.parse({...a.taskset,id:s.taskset.id,revision:s.taskset.revision,metadata:{...a.taskset.metadata,portableFileInventory:n,importedPackageHash:s.contentHash,derivedPortableMetadata:s.taskset.metadata},environment:{...a.taskset.environment,metadata:{...a.taskset.environment.metadata,runtimeSourceTasksetId:c,portableExecutionResources:{environment:s.environment,verifierSet:s.verifierSet}}}}),u=B.parse({...p,contentHash:he(p)}),m=await bt(a.home,{taskset:u,generatedFiles:d?[{path:d.asset.path,role:"environment",content:new TextDecoder("utf-8",{fatal:!0}).decode(qt(d))}]:[]},c,{source:{directory:a.directory,packageHash:await ne(a.directory)},verify:l(f=>na(f,u),"verify")});return await Pt(a.home,s),{directory:m,taskset:u}}l(mu,"materializeModelTasksetDraftPublication");import{constants as cn}from"node:fs";import{createHash as Vm}from"node:crypto";import{lstat as hu,mkdir as Jm,open as Km,readdir as zm,rm as fu}from"node:fs/promises";import Ns from"node:path";var xt=l((a,e)=>_r(Ns.join(a,"state","taskset-draft-writes"),e),"withTasksetDraftLock"),Tu=dd,Gm=l(a=>Vm("sha256").update(a).digest("hex"),"digest");async function Is(a,e,t=!1){qr.parse(e);let r=a;for(let s of["",...e.split("/").slice(0,-1)]){s&&(r=Ns.join(r,s)),t&&await Jm(r,{recursive:!1}).catch(n=>{if(n.code!=="EEXIST")throw n});let i=await hu(r);if(!i.isDirectory()||i.isSymbolicLink())throw new Error("Taskset draft paths must use regular directories.")}return Ns.join(a,e)}l(Is,"regularPath");async function Eu(a,e){let t=await Is(a,e),r=await Km(t,cn.O_RDONLY|cn.O_NOFOLLOW|cn.O_NONBLOCK);try{let s=await r.stat();if(!s.isFile()||s.size>od)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()}}l(Eu,"readBytes");async function _u(a,e){let t=await Eu(a,e);return cd(e,t)}l(_u,"readTasksetDraftFile");async function gu(a){let e=[];async function t(r=""){for(let s of await zm(Ns.join(a,r),{withFileTypes:!0})){let i=r?`${r}/${s.name}`:s.name;if(qr.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 hu(await Is(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:Tu(i)})}}return l(t,"visit"),await Is(a,"taskset.json"),await t(),e.sort((r,s)=>r.path.localeCompare(s.path))}l(gu,"listTasksetDraftFiles");async function wu(a,e,t){if(!Tu(e.path))throw new Error("This file is managed by the Taskset forms or retained source history.");let r=null;try{r=await Eu(a,e.path)}catch(n){if(n.code!=="ENOENT")throw n}if((r?Gm(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?ld(e.content):null,i=await Is(a,e.path,!0);s?await ft(i,s):await fu(i);try{return await t()}catch(n){throw r?await ft(i,r):await fu(i,{force:!0}),n}}l(wu,"mutateTasksetDraftFile");function Os(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(B.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]),d=n?B.parse(JSON.parse(n.payload)):null;if(d&&d.profileId!==s)throw new Error("Imported Taskset belongs to another Profile.");Z(a,s,"package",r.taskset);let c=r.modelResources;if(c){Z(a,s,"definition",c.taskDefinition),Z(a,s,"binding",c.rewardBinding);for(let u of c.rewards)Z(a,s,"reward",u);for(let u of c.assets)Z(a,s,"asset",u);Z(a,s,"asset",wt({environment:r.environment,verifierSet:r.verifierSet})),c.execution&&Z(a,s,"asset",rt(c.execution))}let p=JSON.stringify(t);i||a.run("INSERT INTO taskset_revisions (taskset_id, revision, content_hash, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[t.id,t.revision,t.contentHash,s,t.status,p,t.createdAt,t.updatedAt]),(!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,p,t.createdAt,t.updatedAt])}l(Os,"importTasksetPackageInTransaction");var ye=o.object({schemaVersion:o.literal("openpond.tasksetDraftPointer.v1"),id:o.string().trim().min(1),profileId:o.string().trim().min(1),modelScope:ie.shape.modelScope,status:o.enum(["draft","validating","needs_review","published"]),revision:o.number().int().positive(),workspacePath:o.string().trim().min(1),packageHash:o.string().regex(/^[a-f0-9]{64}$/),publishedTasksetRef:o.object({id:o.string().trim().min(1),revision:o.number().int().positive(),contentHash:o.string().trim().min(8)}).nullable(),createdAt:o.string().trim().min(1),updatedAt:o.string().trim().min(1)}),bs=class extends Rs{static{l(this,"SqliteTasksetDraftStore")}async initializeModelTasksetDraft(e,t,r){await this.ready;let s=this.writeQueue.then(()=>xt(this.home,async()=>{let i=this.database,n=await cu({db:i,home:this.home,profileId:e,request:t,source:r});if(!n)return null;let d=l(()=>{let u=i.get("SELECT state FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]);if(u?.state==="deleted")throw new Error("This Taskset draft was deleted.");let m=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);if(!m){if(u?.state==="ready")throw new Error("The initialized Taskset draft is unavailable.");return!1}let f=ye.parse(JSON.parse(m.payload));if(f.profileId!==e||f.modelScope?.source?.requestHash!==n.draft.modelScope?.source?.requestHash)throw new Error("Taskset draft identity conflicts with its initialization.");return!0},"completed"),c=this.workspacePath(n.draft.id);await lu({home:this.home,initialized:n,workspacePath:c,completed:d,retainHash:l(u=>{let m=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),f=da.parse(JSON.parse(m.payload));if(f.workspaceHash&&f.workspaceHash!==u.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(u),e,t.operationId])},"retainHash")}),i.exec("BEGIN IMMEDIATE");try{if(!d()){let u=i.get("SELECT payload FROM model_taskset_draft_operations WHERE profile_id = ? AND operation_id = ?",[e,t.operationId]),m=da.parse(JSON.parse(u.payload)),f=m.draft,h=ye.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:f.id,profileId:e,modelScope:f.modelScope,status:f.status,revision:f.revision,workspacePath:c,packageHash:m.workspaceHash,publishedTasksetRef:f.publishedTasksetRef,createdAt:f.createdAt,updatedAt:f.updatedAt});i.run("INSERT INTO taskset_drafts (id, profile_id, status, revision, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[f.id,e,f.status,f.revision,JSON.stringify(h),f.createdAt,f.updatedAt]),i.run("UPDATE model_taskset_draft_operations SET state = 'ready' WHERE profile_id = ? AND operation_id = ?",[e,t.operationId])}i.exec("COMMIT")}catch(u){throw i.exec("ROLLBACK"),u}let p=i.get("SELECT payload FROM taskset_drafts WHERE id = ?",[n.draft.id]);return this.draftFromStoredPayload(JSON.parse(p.payload))}));return this.writeQueue=s.then(()=>{},()=>{}),s}async saveTasksetDraft(e,t,r={}){let s=ie.parse(e);await this.ready;let i=this.writeQueue.then(()=>xt(this.home,async()=>{let n=this.database.get("SELECT payload FROM taskset_drafts WHERE id = ?",[s.id]),d=n?ye.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 f=this.database.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelScope.modelId,s.profileId]);if(!f)throw new Error("Taskset draft Model was not found in this Profile.");if(Y.parse(JSON.parse(f.payload)).revision!==s.modelScope.expectedModelRevision)throw new Error("Taskset draft Model changed. Refresh before editing.")}let c=this.workspacePath(s.id),u=(await $a(s,c)).draft,m=ye.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:u.id,profileId:u.profileId,modelScope:u.modelScope,status:u.status,revision:u.revision,workspacePath:c,packageHash:await ne(c),publishedTasksetRef:u.publishedTasksetRef,createdAt:u.createdAt,updatedAt:u.updatedAt});return await this.savePointer(m,!0),u}));return this.writeQueue=i.then(()=>{},()=>{}),i}async importTasksetDraftPackage(e){let t=dr.resolve(e.packagePath),s=(await af(t)).isDirectory()?t:dr.dirname(t);await yu(s);let i=await ne(s),n=await Ci(s),d=await this.getTasksetDraft(n.id);if(d){let f=d.metadata.importedTasksetPackage;if(f&&typeof f=="object"&&!Array.isArray(f)&&f.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 c=ie.parse({...n,profileId:e.profileId,modelScope:null,status:"draft",revision:1,publishedTasksetRef:null,metadata:{...n.metadata,importedTasksetPackage:{packageHash:i,importedAt:new Date().toISOString()}},updatedAt:new Date().toISOString()}),p=this.workspacePath(c.id),u=`${p}.import-${process.pid}-${Date.now()}`;await ef(dr.dirname(p),{recursive:!0});try{await Zm(s,u,{recursive:!0,errorOnExist:!0,force:!1,preserveTimestamps:!0}),await $a(c,u),await ln(u,p)}catch(f){throw await Ru(u,{recursive:!0,force:!0}),f}let m=ye.parse({schemaVersion:"openpond.tasksetDraftPointer.v1",id:c.id,profileId:c.profileId,status:c.status,revision:c.revision,workspacePath:p,packageHash:await ne(p),publishedTasksetRef:c.publishedTasksetRef,createdAt:c.createdAt,updatedAt:c.updatedAt});return await this.savePointer(m),this.draftFromStoredPayload(m)}async materializePublishedTasksetPackage(e){let t=await this.getTasksetDraftWorkspace(e.draftId);if(!t)throw new Error(`Taskset draft ${e.draftId} workspace was not found.`);if(e.taskset.metadata.sourcePackageHash!==void 0&&e.taskset.metadata.sourcePackageHash!==t.packageHash)throw new Error("Taskset draft files changed before publication. Refresh before publishing.");let r=`draft-${R({taskset:e.taskset,packageHash:t.packageHash})}`,s=await jl(e.taskset,t.workspacePath),i=B.parse({...s.taskset,metadata:{...s.taskset.metadata,sourcePackageHash:t.packageHash},environment:{...s.taskset.environment,metadata:{...s.taskset.environment.metadata,runtimeSourceTasksetId:r}}}),n=B.parse({...i,contentHash:he(i)}),d=await bt(this.home,{taskset:n,generatedFiles:s.generatedFiles},r,{source:{directory:t.workspacePath,packageHash:t.packageHash},verify:l(p=>na(p,n),"verify")}),c=await this.getTasksetDraft(e.draftId);return c?.modelScope?.source?mu({home:this.home,directory:d,taskset:n,preparation:c.modelScope.source}):{directory:d,taskset:n}}async finalizeTasksetDraftPublication(e){await this.ready;let t=ie.parse(e.draft),r=B.parse(e.taskset),s=t.modelScope?.source?.authoringGraph==="bound"&&typeof r.metadata.importedPackageHash=="string"?await Ue(this.home,r.metadata.importedPackageHash):null,i=this.writeQueue.then(()=>xt(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=ye.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 f=d.publishedTasksetRef,h=this.database.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND content_hash = ?",[f.id,f.revision,f.contentHash]);if(!h)throw new Error("Published draft lost its immutable Taskset revision.");return{draft:ie.parse({...t,status:d.status,revision:d.revision,publishedTasksetRef:f,updatedAt:d.updatedAt}),taskset:B.parse(JSON.parse(h.payload))}}if(d.revision!==t.revision||r.metadata.sourcePackageHash!==e.packageHash)throw new Error("Taskset draft changed before publication. Refresh before publishing.");let c=d.modelScope?.source,p=c?.authoringGraph==="bound"&&r.metadata.modelTasksetDerivation&&typeof r.metadata.modelTasksetDerivation=="object"?{...r.metadata.modelTasksetDerivation,schemaVersion:c.lineage.schemaVersion}:r.metadata.modelTasksetAuthoring;if(c&&(r.id!==c.tasksetId||r.revision!==c.tasksetRevision||R(p)!==R(c.lineage)))throw new Error("Taskset publication differs from its retained source preparation.");let u=ie.parse({...t,status:"published",revision:t.revision+1,publishedTasksetRef:{id:r.id,revision:r.revision,contentHash:r.contentHash},updatedAt:new Date().toISOString()}),m=ye.parse({...d,status:u.status,revision:u.revision,publishedTasksetRef:u.publishedTasksetRef,updatedAt:u.updatedAt});return vs(this.database,r,()=>{if(s&&Os(this.database,{package:s,taskset:r,generatedFiles:[]}),au(this.database,t,r,s),this.database.get("SELECT revision FROM taskset_drafts WHERE id = ?",[t.id])?.revision!==t.revision)throw new Error("Taskset draft changed during publication.");this.database.run("UPDATE taskset_drafts SET status = ?, revision = ?, payload = ?, updated_at = ? WHERE id = ?",[m.status,m.revision,JSON.stringify(m),m.updatedAt,t.id])}),{draft:u,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 ne(r.workspacePath)}}async deleteTasksetDraft(e){await this.ready;let t=this.writeQueue.then(()=>xt(this.home,async()=>{let r=this.workspacePath(e),s=`${r}.delete-${Qm()}`,i=!1;try{await ln(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 ln(s,r).catch(()=>{}),n}i&&await Ru(s,{recursive:!0,force:!0})}));this.writeQueue=t.catch(()=>{}),await t}async tasksetDraftFiles(e,t,r){return await this.ready,xt(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=ye.parse(JSON.parse(s.payload));if(r!==void 0){let d=await _u(i.workspacePath,r);return{draftRevision:i.revision,file:{...d,writable:d.writable&&i.status!=="published"}}}let n=await gu(i.workspacePath);return{draftRevision:i.revision,files:n.map(d=>({...d,writable:d.writable&&i.status!=="published"}))}})}async saveTasksetDraftFile(e,t){let r=ii.parse(t);await this.ready;let s=this.writeQueue.then(()=>xt(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=ye.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 wu(n.workspacePath,r,async()=>{let d=ye.parse({...n,revision:n.revision+1,packageHash:await ne(n.workspacePath),updatedAt:new Date().toISOString()}),c=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(p){throw this.database.exec("ROLLBACK"),p}return c})}));return this.writeQueue=s.then(()=>{},()=>{}),s}workspacePath(e){let t=R(e).slice(0,24);return dr.join(this.home,"workspaces","tasksets",`taskset-${t}`)}async draftFromStoredPayload(e){let t=await this.pointerFromStoredPayload(e),r=await Ci(t.workspacePath);return ie.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=ye.safeParse(e);if(t.success)return t.data;let r=ie.parse(e);await this.saveTasksetDraft(r);let s=await this.getParsedPayload("SELECT payload FROM taskset_drafts WHERE id = ?",[r.id],ye.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)
2152
- VALUES (?, ?, ?, ?, ?, ?, ?)
2153
- ON CONFLICT(id) DO UPDATE SET
2154
- profile_id = excluded.profile_id,
2155
- status = excluded.status,
2156
- revision = excluded.revision,
2157
- payload = excluded.payload,
2158
- updated_at = excluded.updated_at`,[e.id,e.profileId,e.status,e.revision,JSON.stringify(e),e.createdAt,e.updatedAt])}};async function yu(a){let e=await tf(a,{withFileTypes:!0});for(let t of e){let r=dr.join(a,t.name);if(t.isSymbolicLink())throw new Error(`Taskset packages cannot contain symbolic links: ${r}`);if(t.isDirectory()){await yu(r);continue}if(!t.isFile())throw new Error(`Taskset packages may contain only files and directories: ${r}`)}}l(yu,"assertRegularPackageTree");var rf=o.object({scope:o.string(),key:o.string(),ordinal:o.number().int().nonnegative()}).strict(),sf=`
2159
- 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));
2160
- 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));
2161
- CREATE UNIQUE INDEX IF NOT EXISTS task_inventory_task_identity ON task_inventory_rows(profile_id, source_key, source_hash, task_id);
2162
- CREATE INDEX IF NOT EXISTS task_inventory_list ON task_inventory_rows(profile_id, source_key, source_hash, split, ordinal);
2163
- `,Ls=class extends bs{static{l(this,"SqliteTaskInventoryStore")}async inventoryReady(){await this.ready,await this.writeQueue,this.database.exec(sf)}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=Ca.parse(JSON.parse(n.payload));r=new Set(d.tasksetSyncs.map(c=>c.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)=>Ge(n).localeCompare(Ge(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,Ge(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=kd(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,Ge(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,Ge(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,Ge(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=yd.parse(t),i=R({profileId:e,...s,after:void 0,limit:void 0,sources:r.map(T=>[Ge(T),T.hash])}),n=s.after?rf.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)),c=new Map(d.map(T=>[Ge(T),T]));if(!c.size)return _i.parse({items:[],nextCursor:null});let p=[...c.keys()],u=`%${s.query.replaceAll("\\","\\\\").replaceAll("%","\\%").replaceAll("_","\\_")}%`,m=this.database.all(`SELECT r.source_key, r.source_hash, r.task_id, r.ordinal, r.title, r.description, r.split, s.metadata FROM task_inventory_rows r JOIN task_inventory_sources s ON s.profile_id=r.profile_id AND s.source_key=r.source_key AND s.source_hash=r.source_hash
2164
- WHERE r.profile_id=? AND r.source_key IN (${p.map(()=>"?").join(",")})
2165
- 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 '\\')
2166
- AND (? IS NULL OR r.source_key > ? OR (r.source_key = ? AND r.ordinal > ?)) ORDER BY r.source_key, r.ordinal LIMIT ?`,[e,...p,s.split??null,s.split??null,s.taskId??null,s.taskId??null,u,u,u,n?.key??null,n?.key??null,n?.key??null,n?.ordinal??-1,s.limit+1]),f=m.slice(0,s.limit),h=f.at(-1);return _i.parse({items:f.map(T=>{let E=c.get(T.source_key);if(E.hash!==T.source_hash)throw new Error("Task inventory changed. Reload the task list.");return vd.parse({...JSON.parse(T.metadata),tasksetId:E.id,tasksetRevision:E.revision,tasksetHash:E.hash,taskId:T.task_id,ordinal:T.ordinal,title:T.title,description:T.description,split:T.split,draftId:E.draft?E.id:null,modelId:E.modelId})}),nextCursor:m.length>s.limit&&h?Buffer.from(JSON.stringify({scope:i,key:h.source_key,ordinal:h.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,Ge(e),e.hash,t]);if(!r)throw new Error("Task not found in this collection.");return td.parse(JSON.parse(r.payload))}};function Ge(a){return`${a.draft?"draft":"release"}:${a.id}`}l(Ge,"sourceKey");var As=class extends Ls{static{l(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=ed.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,c=Ki(n,e,()=>{if(!d)throw new Error("Model review transaction is closed.")});try{let p=n.get("SELECT payload FROM model_projects WHERE id = ? AND profile_id = ?",[s.modelId,e]);if(!p)throw new I("model_not_found",404);let u=Y.parse(JSON.parse(p.payload)),m=await fd(c,s);if(m||!r)return n.exec("COMMIT"),m;if(u.revision!==s.expectedModelRevision||!u.trainingSetup.tasksetRef||!C(u.trainingSetup.tasksetRef,s.tasksetRef))throw new I("model_revision_conflict",409);let f=n.get("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ? AND profile_id = ?",[s.tasksetRef.id,s.tasksetRef.revision,e]),h=f?B.parse(JSON.parse(f.payload)):null;if(!h||h.contentHash!==s.tasksetRef.contentHash||R(h.metadata.learning)!==R(Cr(r.taskset)))throw new I("model_review_package_mismatch",409);let T=await hd(c,{scope:e,request:s,package:r,now:new Date().toISOString()});return n.exec("COMMIT"),T}catch(p){throw n.exec("ROLLBACK"),p}finally{d=!1}});return this.writeQueue=i.then(()=>{},()=>{}),i}};import{createHash as nf}from"node:crypto";function cr(a){let{request:e,resolved:t}=rr(a.request,a.package),{starter:r,...s}=t,i=e.rewardBindingRef&&!C(e.rewardBindingRef,O(t.rewardBinding));if(i&&(!a.rewardSelection||!C(e.rewardBindingRef,O(a.rewardSelection.rewardBinding))))throw new Error("The selected starter Reward is unavailable for package preparation.");let n=Ia({owner:{scopeId:e.profileId,modelId:e.modelId},source:s,...i?a.rewardSelection:{rewardBinding:s.rewardBinding,rewards:s.rewards,assets:s.assets}}),{taskset:d,taskDefinition:c,rewardBinding:p,rewards:u,assets:m}=n;if(a.source.profileId!==e.profileId||a.source.sourceHash!==r.contentHash)throw new Error("Starter source must belong to this Profile and pin the catalog package.");let f=n.execution!==void 0,h=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)||c.harness||!h&&!f||d.tasks.some(_=>_.artifactRefs.length)||d.graders.some(_=>_.kind==="model_judge"&&(!_.model||_.calibrationStatus!=="passed")))throw new Error("This starter requires an additional training or environment adapter before preparation.");let T=new Set(a.approvedTrainingTaskIds);if(T.size!==a.approvedTrainingTaskIds.length)throw new Error("Starter training approvals must be unique.");for(let _ of T){let v=d.tasks.find(x=>x.id===_);if(!v||v.split!=="train")throw new Error(`Starter approval must reference a training task: ${_}.`);if(e.method==="sft"&&v.expectedOutput===null)throw new Error(`SFT starter approval requires a reviewed target: ${_}.`)}if(e.method==="grpo"&&d.tasks.some(_=>_.split==="train"&&!T.has(_.id)))throw new Error("GRPO starter preparation requires approval of every training task.");for(let _ of a.fixtures){if(!d.tasks.some(v=>v.id===_.taskId))throw new Error(`Starter fixture references an unknown task: ${_.taskId}.`);f&&!_.infrastructureError&&di.parse(_.metadata.toolScript)}let E=d.id,g=Ti({profileId:e.profileId,id:`${E}-draft`,name:r.name,now:a.createdAt}),w=[];for(let _ of d.graders){if(_.kind!=="custom_verifier")continue;let v=m.find(N=>N.id===_.verifierRef.id);if(!v)throw new Error(`Starter verifier asset is missing: ${_.id}.`);let x=Wt(_.verifierRef.contentHash);w.some(N=>N.path===x)||w.push({path:x,role:"verifier",content:re(v,_.verifierRef)})}let y=ie.parse({...g,objective:c.instructions,metrics:d.metrics??g.metrics,sourceRefs:[a.source],policy:d.policy,environment:{...g.environment,kind:f?"agent":"chat",entrypoint:d.environment.entrypoint,stateful:d.environment.stateful,toolNames:d.tools.map(_=>_.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:c.outputSchema,renderer:null},capabilities:{...g.capabilities,taskKind:f?"single_agent":"chat",requiresTools:f,requiresState:f,supportedSignals:e.method==="grpo"?["reward"]:["demonstration"],compatibleMethods:[e.method],rewardKinds:[...new Set(d.graders.map(_=>_.kind==="human"?"human":_.kind==="model_judge"?"model_judge":"deterministic"))],requiresPrivilegedGrading:!0,environmentPlacements:["local","remote"]},tasks:d.tasks.map(({artifactRefs:_,...v})=>({...v,schemaVersion:"openpond.taskData.v1",sourceRefs:[a.source.id],metadata:{exampleOrigin:"curated_starter",starter:O(r),portableTaskRecord:{...v,artifactRefs:[]}}})),graders:it(p,u,m),graderFixtures:a.fixtures,learningSignals:{...g.learningSignals,rewards:e.method==="grpo"?d.tasks.filter(_=>T.has(_.id)).map(_=>({kind:"reward",id:`starter-reward-${_.id}`,taskId:_.id,task:c.instructions,rules:[{id:p.id,points:1,condition:"Execute the published Reward binding with its declared normalization, weights and required gates."}],otherwisePoints:0,executable:!0,approved:!0,confidence:1,sourceRefs:[a.source.id],artifactRef:p.id,metadata:{starter:O(r),rewardBinding:O(p),approvalOrigin:"catalog_publication"}})):[],demonstrations:e.method==="sft"?d.tasks.filter(_=>T.has(_.id)).map(_=>({kind:"demonstration",id:`starter-target-${_.id}`,taskId:_.id,sourceRefs:[a.source.id],artifactRef:d.id,approved:!0,confidence:1,prompt:null,response:JSON.stringify(_.expectedOutput),metadata:{starter:O(r),approvalOrigin:"catalog_publication"}})):[]},metadata:{starter:O(r),starterTasksetRelease:O(d),taskDefinition:O(c),rewardBinding:O(p),rewardExecution:{binding:p,rewards:u},portableCapabilities:d.capabilities,derivedPortableMetadata:d.metadata,modelTasksetDerivation:d.metadata.modelTasksetDerivation}}),k=Oa({draft:y,now:a.createdAt,tasksetId:E,sourcePackageHash:d.contentHash});return k.metrics=d.metrics,k.contentHash=he(k),{draft:y,taskset:k,generatedFiles:w,resources:n}}l(cr,"prepareModelStarterTaskset");function lr(a,e){let t=ar(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!==ku(t))throw new Error("Starter creation operation was already used with different configuration.");return Y.parse(JSON.parse(r.payload))}l(lr,"findModelStarterCreation");async function vu(a,e){let t=ar(e.request);if(t.learning)throw new Error("Create this Model in a hosted workspace to enable continual learning.");let r=lr(a,t);if(r)return r;let{taskset:s,resources:i}=cr(e),n=sr(e.package),d=await rd({id:t.modelId,profileId:t.profileId,name:t.name,objective:n.taskDefinition.instructions,defaultBaseModel:t.startingModel,defaultDestinationId:null,trainingSetup:tr({package:i,setup:gt.parse({tasksetRef:O(s),rewardBindingRef:O(i.rewardBinding),baseModel:t.startingModel,method:t.method,managedRolloutPlacement:"remote"})})},0);a.exec("BEGIN IMMEDIATE");try{let c=lr(a,t);if(c)return a.exec("COMMIT"),c;if(a.get("SELECT id FROM tasksets WHERE id = ?",[s.id])||a.get("SELECT id FROM model_projects WHERE id = ?",[t.modelId]))throw new Error("Starter creation requires a new Model and Taskset identity.");let p=[...i.executionResources??i.execution?[{kind:"asset",resource:wt(i.executionResources??i.execution)}]:[],...n.execution?[{kind:"asset",resource:rt(n.execution)}]:[],...n.assets.map(f=>({kind:"asset",resource:f})),...n.rewards.map(f=>({kind:"reward",resource:f})),{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:rt(i.execution)}]:[]]];for(let{kind:f,resource:h}of p)Z(a,t.profileId,f,h);let u=JSON.stringify(s);a.run("INSERT INTO tasksets (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)",[s.id,s.profileId,s.status,u,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,u,s.createdAt,s.updatedAt]);let m=ir(a,d);return a.run("INSERT INTO model_starter_creation_operations (profile_id, operation_id, request_hash, payload) VALUES (?, ?, ?, ?)",[t.profileId,t.operationId,ku(t),JSON.stringify(m)]),a.exec("COMMIT"),m}catch(c){throw a.exec("ROLLBACK"),c}}l(vu,"commitModelStarterCreation");function ku(a){return nf("sha256").update(X(a)).digest("hex")}l(ku,"requestHash");function Ps(a,e,t,r,s){let i=Y.parse(t);a.exec("BEGIN IMMEDIATE");try{let n=a.get("SELECT payload FROM model_projects WHERE id = ?",[i.id]),d=n?Y.parse(JSON.parse(n.payload)):null;d&&d.profileId!==i.profileId&&la("Model ownership changed during hosted synchronization.");let c;if(r)X(d)!==X(e)&&la("Model changed while its hosted configuration was loading. Refresh before applying it."),c=i;else{(!d||!e||e.id!==i.id||e.profileId!==i.profileId)&&la("Model is no longer available for hosted synchronization."),d.hosted?.teamId!==e.hosted?.teamId&&d.hosted?.teamId!==i.hosted?.teamId&&la("Model hosting team changed during synchronization.");let p=i.hosted,u=d.hosted,m=u;if(p){u?.apiOrigin&&u.apiOrigin!==p.apiOrigin&&la("Model hosting API changed during synchronization.");let f=u?.apiOrigin===p.apiOrigin&&u?.teamId===p.teamId&&u.projectId===p.projectId;f&&u.revision===p.revision&&u.etag!==p.etag&&la("Hosted Model receipts disagree about the same revision."),m={...f&&u.revision>p.revision?u:p,tasksets:f?Su(u.tasksets,p.tasksets,T=>`${T.localTasksetId}:${T.releaseHash}`,T=>T.syncedAt):p.tasksets}}c=Y.parse({...d,hosted:m,tasksetSyncs:Su(d.tasksetSyncs,i.tasksetSyncs,f=>f.localTasksetId,f=>f.lastAttemptAt)})}return s?.(),a.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2167
- ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[c.id,c.profileId,JSON.stringify(c),c.createdAt,c.updatedAt]),a.exec("COMMIT"),c}catch(n){throw a.exec("ROLLBACK"),n}}l(Ps,"commitModelProjectHosting");function Su(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()]}l(Su,"mergeLatest");function la(a){throw new at(409,{schemaVersion:"openpond.modelProjectApiError.v2",code:"model_hosting_conflict",message:a,retryable:!1,requestId:null,details:{}})}l(la,"conflict");function un(a,e){let{request:t,resolved:r}=rr(e.request,e.package),s=t.rewardBindingRef;if(!s||C(s,O(r.rewardBinding)))return e;function i(p,u){let m=a.get("SELECT payload FROM learning_revisions WHERE scope = ? AND kind = ? AND id = ? AND revision = ?",[t.profileId,p,u.id,u.revision]);if(!m)throw new Error(`The selected starter ${p} is unavailable in this Profile.`);let f=fe[p].parse(JSON.parse(m.payload));if(Oe(f),u.contentHash&&u.contentHash!==f.contentHash)throw new Error("The selected starter Reward differs from its immutable reference.");return f}l(i,"read");let n=i("binding",s),d=[...new Map(n.sources.map(p=>[X(p.reward),i("reward",p.reward)])).values()],c=new Map(r.assets.map(p=>[p.id,p]));for(let p of d){let u=p.implementation;for(let m of[...p.assets,..."verifierRef"in u?[u.verifierRef]:[],..."rubricRef"in u?[u.rubricRef]:[],..."inputContract"in u?[u.inputContract]:[]])c.has(m.id)||c.set(m.id,i("asset",{id:m.id,revision:1}))}return{...e,rewardSelection:{rewardBinding:n,rewards:d,assets:[...c.values()]}}}l(un,"resolveModelStarterSelection");import of from"node:path";function ua(a){let e=a.environment.metadata.runtimeSourceTasksetId,t=e===void 0?a.id:e;if(typeof t!="string"||!t||t==="."||t===".."||of.basename(t)!==t||t.includes("\\"))throw new Error(`Taskset ${a.id} has an invalid package directory identity.`);return t}l(ua,"tasksetPackageDirectoryId");import cf from"node:path";import df from"node:path";async function Nu(a){let{taskset:e}=a,{taskset:t,modelResources:r,learningResources:s}=a.content,i=new Set([...r?.assets??[],...s?.assets??[]].map(c=>c.id)),n=new Map,d=l((c,p=c.path)=>{if(i.has(c.id))return;let u=n.get(c.id);if(u&&(R(u.asset)!==R(c)||u.sourcePath!==p))throw new Error(`Conflicting local Taskset file reference: ${c.id}.`);n.set(c.id,{asset:c,sourcePath:p})},"add");for(let c of nt.parse(e.metadata.portableFileInventory??[]))d(c.asset,c.sourcePath);for(let c of t.tasks){let p=e.tasks.find(u=>u.id===c.id);for(let u of c.artifactRefs)d(u,p?.assets?.find(m=>m.id===u.id)?.artifactRef??u.path);for(let u of c.requiredOutputs??[])u.schemaRef&&d(u.schemaRef)}for(let c of t.graders){let p=e.graders.find(u=>u.id===c.id);"verifierRef"in c&&d(c.verifierRef,p?.kind==="custom_verifier"?p.module:c.verifierRef.path),"rubricRef"in c&&d(c.rubricRef)}return ca({root:df.join(a.storeDir,"training","tasksets",ua(e)),content:a.content,sources:[...n.values()]})}l(Nu,"captureAuthoredModelTasksetPackage");async function pn(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=B.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?Y.parse(JSON.parse(n.payload)):null;if(d&&(d.profileId!==t.project.profileId||d.revision!==t.expectedRevision))return;let c=d?.hosted?.tasksets.find(g=>g.localTasksetId===i.id&&g.localTasksetHash===i.contentHash),p=typeof i.metadata.importedPackageHash=="string"?i.metadata.importedPackageHash:c?.packageHash;if(!p){if(i.metadata.learning!==void 0||i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return;let 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(he(i)!==r.contentHash)throw new Error("Selected Taskset differs from its immutable content hash.");let k=Ye({taskset:i,adapterId:Xe(i)});return Nu({storeDir:e,taskset:i,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:k.tasksetRelease,environment:k.environmentRelease,verifierSet:k.verifierSetRelease}})}let u=await Ue(e,p);if(u.taskset.id!==(c?.releaseId??r.id)||u.taskset.revision!==(c?.releaseRevision??r.revision))throw new Error("Cached package differs from its selected Taskset revision.");let{files:m,contentHash:f,...h}=u,T=pu(u,typeof i.metadata.importedPackageHash=="string"),E=await ca({root:cf.join(e,"training","tasksets",ua(i)),content:h,sources:m.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:m.map(g=>g.asset.id)});if(E.contentHash!==u.contentHash)throw new Error("Imported package bytes changed before the Reward edit.");return E}l(pn,"loadModelTasksetPackage");var{package:KO,evaluationPackage:zO,...lf}=id.shape,xs=o.object({apiOrigin:o.string().url().refine(a=>new URL(a).origin===a),teamId:o.string().min(1),project:Y,localTaskset:de,localEvaluation:de.optional(),evaluationPackageHash:o.string().regex(/^[a-f0-9]{64}$/).optional(),packageHash:o.string().regex(/^[a-f0-9]{64}$/),request:o.object(lf).strict()}).strict().refine(a=>!!a.localEvaluation==!!a.evaluationPackageHash,"Evaluation bytes and local identity must be captured together.");function mn(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?xs.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}l(mn,"pendingModelPackageOperation");function Iu(a,e){let t=xs.parse(e);a.exec("BEGIN IMMEDIATE");try{let r=mn(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?Y.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 d=xs.parse(JSON.parse(n.payload));if(X({...d,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"),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}}l(Iu,"prepareModelPackageOperation");function Ou(a,e,t){let r=nd.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=xs.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,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 c=new Date().toISOString(),p=Y.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:c,tasksets:[...(n.hosted?.tasksets??[]).filter(u=>u.releaseHash!==r.taskset.contentHash&&u.releaseHash!==r.evaluation?.taskset.contentHash),{localTasksetId:i.localTaskset.id,localTasksetHash:i.localTaskset.contentHash,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,packageHash:r.packageHash,hostedTasksetId:r.hostedTasksetId,syncedAt:c},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,localTasksetHash:i.localEvaluation.contentHash,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,packageHash:r.evaluation.packageHash,hostedTasksetId:r.evaluation.hostedTasksetId,syncedAt:c}]:[]]},tasksetSyncs:[...n.tasksetSyncs.filter(u=>u.localTasksetId!==i.localTaskset.id&&u.localTasksetId!==i.localEvaluation?.id),{localTasksetId:i.localTaskset.id,releaseId:r.taskset.id,releaseRevision:r.taskset.revision,releaseHash:r.taskset.contentHash,state:"synced",hostedTasksetId:r.hostedTasksetId,lastAttemptAt:c,syncedAt:c,lastError:null},...i.localEvaluation&&r.evaluation?[{localTasksetId:i.localEvaluation.id,releaseId:r.evaluation.taskset.id,releaseRevision:r.evaluation.taskset.revision,releaseHash:r.evaluation.taskset.contentHash,state:"synced",hostedTasksetId:r.evaluation.hostedTasksetId,lastAttemptAt:c,syncedAt:c,lastError:null}]:[]]});return Ps(a,n,p,!1,()=>{a.run("UPDATE model_project_package_operations SET state = 'committed', receipt = ? WHERE operation_id = ?",[JSON.stringify(r),e])})}l(Ou,"completeModelPackageOperation");var Cs=class extends As{static{l(this,"SqliteModelConfigurationStore")}async pendingModelPackagePush(e){if(await this.ready,await this.writeQueue,!this.db)throw new Error("Package push store is closed.");return mn(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 Iu(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 Ou(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 Ss(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=Ss(this.db,e);if(r)return r;let s=await pn(this.db,this.home,e),i=rn(this.db,e,!0,s);if(i?.imported)await nr({home:this.home,...i.imported});else if(i){let n=uf.join(this.home,"training","tasksets",ua(i.source));await bt(this.home,i,i.directoryId,{source:{directory:n,packageHash:await ne(n)},verify:l(d=>na(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 tu(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 rn(this.db,e,!1,await pn(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 lr(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=lr(this.db,e.request);if(r)return r;let s=un(this.db,e),i=cr(s);return await bt(this.home,i,i.taskset.id),vu(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 cr(un(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 Pt(this.home,n.package):await nr({home:this.home,...n})}return Ps(this.db,e,t,r,()=>{for(let n of s)Os(this.db,n)})});return this.writeQueue=i.then(()=>{},()=>{}),i}};function ur(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}))}}l(ur,"trainingChatSearchResult");function bu(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}l(bu,"trainingChatFtsQuery");function fn(a,e,t){let r=a.get(e)??[];r.push(t),a.set(e,r)}l(fn,"appendTrainingChatSearchText");var pr="('openpond_managed')",Hs=class extends Cs{static{l(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
2168
- WHERE name = 'assistant.delta' AND session_id IN (${r})
2169
- ORDER BY sequence ASC`,t)]),d=new Map;for(let c of i){let p=JSON.parse(c.payload);p.prompt.trim()&&fn(d,c.session_id,p.prompt)}for(let c of n){let p=JSON.parse(c.payload);p.output?.trim()&&fn(d,c.session_id,p.output)}return s.map(c=>{let p=Ja(JSON.parse(c.payload));return{session:p,body:d.get(p.id)?.join(`
2170
- `)??""}})}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)
2171
- VALUES (?, ?, ?, ?, ?, ?, ?)
2172
- ON CONFLICT(session_id) DO UPDATE SET
2173
- source = excluded.source,
2174
- signature = excluded.signature,
2175
- title = excluded.title,
2176
- updated_at = excluded.updated_at,
2177
- eligible = excluded.eligible,
2178
- 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)
2179
- VALUES (?, ?, ?, ?, ?, ?, ?)
2180
- ON CONFLICT(session_id) DO UPDATE SET
2181
- source = excluded.source,
2182
- signature = excluded.signature,
2183
- title = excluded.title,
2184
- updated_at = excluded.updated_at,
2185
- eligible = excluded.eligible,
2186
- 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 ur(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
2187
- FROM training_chat_search_documents
2188
- WHERE eligible = 1 AND session_id IN (${n})`,i),c=d?.indexed??0,p=d?.total??0;if(!t){let h=await this.get(`SELECT COUNT(*) AS count FROM training_chat_search_documents
2189
- WHERE eligible = 1 AND session_id IN (${n})`,i),T=await this.all(`SELECT session_id, title, updated_at, NULL AS snippet
2190
- FROM training_chat_search_documents
2191
- WHERE eligible = 1 AND session_id IN (${n})
2192
- ORDER BY updated_at DESC, session_id ASC
2193
- LIMIT ? OFFSET ?`,[...i,s,r]);return ur(t,r,s,h?.count??0,T,c,p)}let u=bu(t);if(!u)return ur(t,r,s,0,[],c,p);let m=await this.get(`SELECT COUNT(*) AS count
2194
- FROM training_chat_search_fts
2195
- JOIN training_chat_search_documents AS documents
2196
- ON documents.session_id = training_chat_search_fts.session_id
2197
- WHERE training_chat_search_fts MATCH ? AND documents.eligible = 1
2198
- AND documents.session_id IN (${n})`,[u,...i]),f=await this.all(`SELECT documents.session_id, documents.title, documents.updated_at,
2199
- snippet(training_chat_search_fts, 2, '', '', ' \u2026 ', 22) AS snippet
2200
- FROM training_chat_search_fts
2201
- JOIN training_chat_search_documents AS documents
2202
- ON documents.session_id = training_chat_search_fts.session_id
2203
- WHERE training_chat_search_fts MATCH ? AND documents.eligible = 1
2204
- AND documents.session_id IN (${n})
2205
- ORDER BY bm25(training_chat_search_fts, 0.0, 8.0, 1.0), documents.updated_at DESC
2206
- LIMIT ? OFFSET ?`,[u,...i,s,r]);return ur(t,r,s,m?.count??0,f,c,p)}async listTrainingSources(e){return await this.ready,await this.writeQueue,(await this.all("SELECT payload FROM training_sources WHERE profile_id = ? AND source_kind = 'conversation' ORDER BY updated_at DESC",[e])).map(r=>ka.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?ka.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
2207
- WHERE profile_id = ? AND session_id = ?
2208
- AND source_kind = 'conversation'
2209
- AND json_extract(payload, '$.sourceHash') = ?
2210
- AND json_extract(payload, '$.consent.status') = 'granted'
2211
- ORDER BY CASE
2212
- WHEN json_type(payload, '$.metadata.crossSystemOperations') IS NOT NULL THEN 0
2213
- ELSE 1
2214
- END, updated_at DESC
2215
- LIMIT 1`,[e.profileId,e.sessionId,e.sourceHash]);return t?ka.parse(JSON.parse(t.payload)):null}async upsertTrainingSource(e){let t=ka.parse(e);await this.ready;let r=ge(),s=this.writeQueue.then(()=>this.run(`INSERT INTO training_sources (
2216
- id, profile_id, source_kind, session_id, source_hash,
2217
- repository_id, revision, payload, created_at, updated_at
2218
- )
2219
- VALUES (?, ?, 'conversation', ?, ?, NULL, NULL, ?, ?, ?)
2220
- ON CONFLICT(id) DO UPDATE SET
2221
- profile_id = excluded.profile_id,
2222
- source_kind = excluded.source_kind,
2223
- session_id = excluded.session_id,
2224
- source_hash = excluded.source_hash,
2225
- repository_id = NULL,
2226
- revision = NULL,
2227
- payload = excluded.payload,
2228
- 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=Jr.safeParse(i);if(n.success){r.push(n.data);continue}let d=Lu(i);if(d){this.logger?.warn("retired task creation snapshot ignored",{snapshotId:xu(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=Jr.safeParse(r);if(s.success)return s.data;let i=Lu(r);if(i)return this.logger?.warn("retired task creation snapshot ignored",{snapshotId:xu(r),specificationKind:i}),null;throw s.error}async upsertTaskCreationSnapshot(e){let t=Jr.parse(e),r=vi.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],vi.parse)}async getTaskDesignProposal(e){return this.getParsedPayload("SELECT payload FROM task_design_proposals WHERE creation_id = ?",[e],Pd.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]:[],mr)}async listTasksetRevisions(e){return this.listParsedPayloads("SELECT payload FROM taskset_revisions WHERE json_extract(payload, '$.profileId') = ? ORDER BY taskset_id, revision DESC",[e],mr)}async getTaskset(e){return this.getParsedPayload("SELECT payload FROM tasksets WHERE id = ?",[e],mr)}async getTasksetRevision(e,t,r){let s=await this.getParsedPayload("SELECT payload FROM taskset_revisions WHERE taskset_id = ? AND revision = ?",[e,t],mr);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],mr)}async upsertTaskset(e){let t=B.parse(e);await this.ready;let r=this.writeQueue.then(()=>vs(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],ba.parse)}async getTaskCandidate(e){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE id = ?",[e],ba.parse)}async findTaskCandidateByFingerprint(e,t){return this.getParsedPayload("SELECT payload FROM task_candidates WHERE profile_id = ? AND fingerprint = ?",[e,t],ba.parse)}async upsertTaskCandidate(e){let t=ba.parse(e);return await this.upsertPayload(`INSERT INTO task_candidates (id, profile_id, status, fingerprint, payload, created_at, updated_at)
2229
- VALUES (?, ?, ?, ?, ?, ?, ?)
2230
- 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=Yr.parse(e);return await this.upsertPayload(`INSERT INTO task_attempts (id, taskset_id, split, payload, created_at) VALUES (?, ?, ?, ?, ?)
2231
- 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],Yr.parse)}async saveTaskAttemptArtifact(e){let t=Vr.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],Vr.parse):e.tasksetId?this.listParsedPayloads("SELECT payload FROM task_attempt_artifacts WHERE taskset_id = ? ORDER BY created_at",[e.tasksetId],Vr.parse):[]}async saveGradeResult(e){let t=Ri.parse(e);return await this.upsertPayload(`INSERT INTO grade_results (id, attempt_id, payload, created_at) VALUES (?, ?, ?, ?)
2232
- 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],Ri.parse)}async saveGraderAuditReport(e){let t=yi.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],yi.parse)}async saveReadinessReport(e){let t=ti.parse(e);return await this.upsertPayload(`INSERT INTO readiness_reports (taskset_id, payload, updated_at) VALUES (?, ?, ?)
2233
- 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],pf)}async saveTaskMinerConfig(e,t){let r=wi.parse(t);return await this.upsertPayload(`INSERT INTO task_miner_configs (profile_id, payload, updated_at) VALUES (?, ?, ?)
2234
- ON CONFLICT(profile_id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[e,JSON.stringify(r),ge()]),r}async getTaskMinerConfig(e){return this.getParsedPayload("SELECT payload FROM task_miner_configs WHERE profile_id = ?",[e],wi.parse)}async saveTaskMinerRun(e){let t=La.parse(e);return await this.upsertPayload(`INSERT INTO task_miner_runs (id, profile_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)
2235
- 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],La.parse)}async listTaskMinerRuns(e){return e?this.listParsedPayloads("SELECT payload FROM task_miner_runs WHERE profile_id = ? ORDER BY updated_at DESC",[e],La.parse):this.listParsedPayloads("SELECT payload FROM task_miner_runs ORDER BY updated_at DESC",[],La.parse)}async saveModelProject(e){let t=Ca.parse(e);return await this.upsertPayload(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?)
2236
- 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],Au)}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]:[],Au)}async saveTrainingPlan(e){let t=Kr.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 (?, ?, ?, ?, ?)
2237
- 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 ${pr} ORDER BY created_at DESC`:`SELECT payload FROM training_plans WHERE destination_id IN ${pr} ORDER BY created_at DESC`,e?[e]:[],Kr.parse)}async getTrainingPlan(e){return this.getParsedPayload(`SELECT payload FROM training_plans WHERE id = ? AND destination_id IN ${pr}`,[e],Kr.parse)}async saveTrainingBundle(e){let t=Ha.parse(e);return await this.upsertPayload(`INSERT INTO training_bundles (id, plan_id, content_hash, payload, created_at) VALUES (?, ?, ?, ?, ?)
2238
- 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],Ha.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]:[],Ha.parse)}async findTrainingBundleByPlanAndHash(e,t){return this.getParsedPayload("SELECT payload FROM training_bundles WHERE plan_id = ? AND content_hash = ?",[e,t],Ha.parse)}async saveTrainingJob(e){let t=Gt.parse(e);return await this.upsertPayload(`INSERT INTO training_jobs (id, plan_id, destination_id, status, payload, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)
2239
- 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=ki.parse(e);return await this.upsertPayload(`INSERT INTO training_approvals (id, plan_id, bundle_hash, payload, created_at) VALUES (?, ?, ?, ?, ?)
2240
- 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],ki.parse)}async getTrainingJob(e){return this.getParsedPayload(`SELECT payload FROM training_jobs WHERE id = ? AND destination_id IN ${pr}`,[e],Gt.parse)}async listTrainingJobs(){return this.listParsedPayloads(`SELECT payload FROM training_jobs WHERE destination_id IN ${pr} ORDER BY updated_at DESC`,[],Gt.parse)}async saveTrainingJobEvent(e){let t=Si.parse(e);return await this.upsertPayload(`INSERT INTO training_job_events (id, job_id, sequence, payload, created_at) VALUES (?, ?, ?, ?, ?)
2241
- 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],Si.parse)}async saveTrainingArtifact(e){let t=zr.parse(e);return await this.upsertPayload(`INSERT INTO training_artifacts (id, job_id, kind, payload, created_at) VALUES (?, ?, ?, ?, ?)
2242
- 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]:[],zr.parse)}async getTrainingArtifact(e){return this.getParsedPayload("SELECT payload FROM training_artifacts WHERE id = ?",[e],zr.parse)}async saveModelArtifactLineage(e){let t=Gr.parse(e);return await this.upsertPayload(`INSERT INTO model_artifact_lineage (id, artifact_id, taskset_id, payload, created_at) VALUES (?, ?, ?, ?, ?)
2243
- 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:Cd.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=Gr.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]:[],Pu)}async getModelArtifactLineage(e){return this.getParsedPayload("SELECT payload FROM model_artifact_lineage WHERE id = ?",[e],Pu)}};function Lu(a){return!ve(a)||!ve(a.request)||!ve(a.request.buildSpecification)?null:a.request.buildSpecification.kind==="agent_benchmark"?"agent_benchmark":null}l(Lu,"retiredTaskCreationSpecificationKind");function mr(a){return B.parse(hf(Cu(a)))}l(mr,"parseStoredTaskset");function pf(a){return ti.parse(Cu(a))}l(pf,"parseStoredReadinessReport");function Au(a){return Ca.parse(mf(a))}l(Au,"parseStoredModelProject");function mf(a){return!ve(a)||typeof a.defaultDestinationId!="string"||a.defaultDestinationId==="openpond_managed"?a:{...a,defaultDestinationId:null}}l(mf,"normalizeStoredModelProjectDestination");function Pu(a){return Gr.parse(ff(a))}l(Pu,"parseStoredModelArtifactLineage");function ff(a){if(!ve(a)||!ve(a.managedServing))return a;let e=a.managedServing.source;return e!=="openpond_fireworks"&&e!=="openpond_training"?a:{...a,managedServing:null}}l(ff,"normalizeStoredManagedServingProjection");function Cu(a){if(!ve(a))return a;let e=ve(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}}l(Cu,"normalizeStoredReadinessDestinationClasses");function hf(a){if(!ve(a)||!ve(a.authoringProvenance))return a;let e=a.authoringProvenance.buildSpecification;return!ve(e)||e.kind!=="agent_benchmark"?a:{...a,authoringProvenance:{...a.authoringProvenance,buildSpecification:null}}}l(hf,"normalizeStoredTasksetAuthoringProvenance");function xu(a){return ve(a)&&typeof a.id=="string"?a.id:null}l(xu,"storedPayloadId");function ve(a){return!!a&&typeof a=="object"&&!Array.isArray(a)}l(ve,"isRecord");var Ms=class extends Hs{static{l(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?vt.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
2244
- FROM create_improve_runs
2245
- ${t.length>0?`WHERE ${t.join(" AND ")}`:""}
2246
- ORDER BY updated_at DESC
2247
- LIMIT ?`,r)).map(d=>vt.parse(JSON.parse(d.payload)))}async upsertCreateImproveRun(e){await this.ready;let t=vt.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 (
2248
- id, profile_id, conversation_id, origin_turn_id, target_kind, target_id,
2249
- state, revision, payload, created_at, updated_at
2250
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2251
- ON CONFLICT(id) DO UPDATE SET
2252
- profile_id = excluded.profile_id,
2253
- conversation_id = excluded.conversation_id,
2254
- origin_turn_id = excluded.origin_turn_id,
2255
- target_kind = excluded.target_kind,
2256
- target_id = excluded.target_id,
2257
- state = excluded.state,
2258
- revision = excluded.revision,
2259
- payload = excluded.payload,
2260
- updated_at = excluded.updated_at`,Tf(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:vt.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=vt.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 c=vt.parse(t(d));if(c.id!==d.id)throw new Error("Create/Improve mutation cannot change the run id.");if(c.revision!==d.revision+1)throw new Error("Create/Improve mutation must advance exactly one revision.");if(!c.appliedActionIds.includes(e.actionId))throw new Error("Create/Improve mutation must record its action id.");await this.assertNoCompetingCreateImproveRun(c),await this.exec("BEGIN IMMEDIATE");try{await this.run(`UPDATE create_improve_runs SET
2261
- profile_id = ?, conversation_id = ?, origin_turn_id = ?, target_kind = ?,
2262
- target_id = ?, state = ?, revision = ?, payload = ?, updated_at = ?
2263
- WHERE id = ? AND revision = ?`,[c.scope.profileId,c.scope.conversationId,c.scope.originTurnId,c.target.kind,c.target.id,c.state,c.revision,JSON.stringify(c),c.updatedAt,c.id,d.revision]),await this.run(`INSERT INTO create_improve_run_actions (
2264
- action_id, run_id, expected_revision, resulting_revision, payload, created_at
2265
- ) VALUES (?, ?, ?, ?, ?, ?)`,[e.actionId,e.runId,e.expectedRevision,c.revision,JSON.stringify(c),c.updatedAt]),await this.exec("COMMIT")}catch(p){throw await this.exec("ROLLBACK").catch(()=>{}),p}r={run:c,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||Ef(e.state))return;let t=await this.get(`SELECT id
2266
- FROM create_improve_runs
2267
- WHERE profile_id = ?
2268
- AND target_kind = ?
2269
- AND target_id = ?
2270
- AND id <> ?
2271
- AND state NOT IN (
2272
- 'released',
2273
- 'rejected',
2274
- 'ready',
2275
- 'ready_local',
2276
- 'published_hosted',
2277
- 'blocked',
2278
- 'failed',
2279
- 'cancelled'
2280
- )
2281
- 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 Tf(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]}l(Tf,"createImproveRunParams");function Ef(a){return a==="released"||a==="rejected"||a==="ready"||a==="ready_local"||a==="published_hosted"||a==="blocked"||a==="failed"||a==="cancelled"}l(Ef,"isTerminalCreateImproveRunState");var Ds=class extends Ms{static{l(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,
2282
- source_session_id, created_at, updated_at
2283
- FROM sidebar_file_bookmarks
2284
- WHERE scope = ?
2285
- 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:gi({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
2286
- 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=ge(),c=(await this.get(`SELECT created_at FROM sidebar_file_bookmarks
2287
- 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 (
2288
- scope, workspace_kind, workspace_id, workspace_name, file_path, status,
2289
- sort_order, source_session_id, created_at, updated_at
2290
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2291
- ON CONFLICT(scope, workspace_kind, workspace_id, file_path)
2292
- DO UPDATE SET
2293
- workspace_name = excluded.workspace_name,
2294
- status = excluded.status,
2295
- sort_order = excluded.sort_order,
2296
- source_session_id = COALESCE(excluded.source_session_id, sidebar_file_bookmarks.source_session_id),
2297
- updated_at = excluded.updated_at`,[e,t.workspaceKind,t.workspaceId,t.workspaceName,t.path,r,t.order??null,t.sourceSessionId??null,c,n]),s={id:gi(t),workspaceKind:t.workspaceKind,workspaceId:t.workspaceId,workspaceName:t.workspaceName,path:t.path,status:r,order:t.order??null,sourceSessionId:t.sourceSessionId??null,available:!0,createdAt:c,updatedAt:n}});return this.writeQueue=i.catch(()=>{}),await i,s}};var Xs=class extends Ds{static{l(this,"SqliteHarnessMemoryStore")}async listHarnessMemories(e,t={}){await this.ready,await this.writeQueue;let s=(await this.all(`SELECT revisions.payload
2298
- FROM harness_memory_revisions revisions
2299
- INNER JOIN (
2300
- SELECT key, MAX(revision) AS revision
2301
- FROM harness_memory_revisions
2302
- WHERE workspace_id = ?
2303
- GROUP BY key
2304
- ) latest ON latest.key = revisions.key AND latest.revision = revisions.revision
2305
- WHERE revisions.workspace_id = ?
2306
- ORDER BY revisions.created_at DESC, revisions.key ASC`,[e,e])).map(i=>JSON.parse(i.payload));return t.includeDeleted?s:s.filter(i=>i.status==="active")}async getHarnessMemory(e,t){await this.ready,await this.writeQueue;let r=await this.get(`SELECT payload FROM harness_memory_revisions
2307
- WHERE workspace_id = ? AND key = ?
2308
- 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
2309
- WHERE workspace_id = ? AND key = ?
2310
- 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 c=(n?.revision??0)+1,p={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(u=>u.trim().toLowerCase()).filter(Boolean))].slice(0,20),revision:c,status:e.content===null?"deleted":"active",sourceRunId:e.sourceRunId,sourceProposal:e.sourceProposal,createdAt:n?.createdAt??e.createdAt,updatedAt:e.createdAt};r={...p,contentHash:R(p)},await this.run(`INSERT INTO harness_memory_revisions (
2311
- workspace_id, key, revision, status, payload, created_at
2312
- ) VALUES (?, ?, ?, ?, ?, ?)`,[e.workspaceId,t,c,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 _f={enabled:!1,activityEnabled:!1,activityBatchSize:10,cadence:"manual",maxEstimatedCostUsd:.1,nextRunAt:null,lastRunAt:null,lastResult:null,lastError:null,updatedAt:null},Us=class extends Xs{static{l(this,"SqliteHarnessEvaluationReviewSettingsStore")}async getHarnessBackgroundReviewSettings(e){await this.ready,await this.writeQueue;let t=await this.get(`SELECT background_review_enabled, updated_at
2313
- 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 (
2314
- workspace_id, background_review_enabled, updated_at
2315
- ) VALUES (?, ?, ?)
2316
- ON CONFLICT(workspace_id) DO UPDATE SET
2317
- background_review_enabled = excluded.background_review_enabled,
2318
- 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,
2319
- max_estimated_cost_usd, next_run_at, last_run_at,
2320
- last_review_id, last_review_hash, last_classification, last_error, updated_at
2321
- FROM harness_evaluation_review_settings WHERE workspace_id = ?`,[e]);if(!t)return{..._f};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 (
2322
- workspace_id, enabled, activity_enabled, activity_batch_size,
2323
- cadence, max_estimated_cost_usd, next_run_at,
2324
- last_run_at, last_review_id, last_review_hash, last_classification,
2325
- last_error, updated_at
2326
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2327
- ON CONFLICT(workspace_id) DO UPDATE SET
2328
- enabled = excluded.enabled,
2329
- activity_enabled = excluded.activity_enabled,
2330
- activity_batch_size = excluded.activity_batch_size,
2331
- cadence = excluded.cadence,
2332
- max_estimated_cost_usd = excluded.max_estimated_cost_usd,
2333
- next_run_at = excluded.next_run_at,
2334
- last_run_at = excluded.last_run_at,
2335
- last_review_id = excluded.last_review_id,
2336
- last_review_hash = excluded.last_review_hash,
2337
- last_classification = excluded.last_classification,
2338
- last_error = excluded.last_error,
2339
- 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 Fs=class extends Us{static{l(this,"SqliteHarnessRefinementCandidateStore")}async listHarnessRefinementCandidates(e,t){return await this.ready,await this.writeQueue,(t?await this.all(`SELECT payload FROM harness_refinement_candidates
2340
- WHERE workspace_id = ? AND status = ?
2341
- ORDER BY updated_at DESC, candidate_id ASC`,[e,t]):await this.all(`SELECT payload FROM harness_refinement_candidates
2342
- WHERE workspace_id = ? ORDER BY updated_at DESC, candidate_id ASC`,[e])).map(s=>Tt.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
2343
- WHERE workspace_id = ? AND fingerprint = ?`,[e,t]);return r?Tt.parse(JSON.parse(r.payload)):null}async saveHarnessRefinementCandidateTransition(e){let t=Tt.parse(e.candidate),r=vr.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?Tt.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 (
2344
- candidate_id, workspace_id, fingerprint, status, content_hash,
2345
- payload, created_at, updated_at
2346
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2347
- ON CONFLICT(candidate_id) DO UPDATE SET
2348
- fingerprint = excluded.fingerprint,
2349
- status = excluded.status,
2350
- content_hash = excluded.content_hash,
2351
- payload = excluded.payload,
2352
- 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=Ta.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
2353
- WHERE deduplication_key = ?`,[t.deduplicationKey]);i?r={request:Ta.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 (
2354
- deduplication_key, workspace_id, candidate_id,
2355
- admitted_release_hash, content_hash, payload, created_at
2356
- ) 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 me.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 (
2357
- content_hash, id, workspace_id, kind, payload, created_at
2358
- ) VALUES (?, ?, ?, ?, ?, ?)`,[r.contentHash,r.id,e,t,s,r.createdAt])}};var Fe=o.object({schemaVersion:o.literal("openpond.localHarnessReleaseRecord.v1"),workspaceId:o.string().trim().min(1).max(240),sourceRevision:o.string().trim().min(1).max(500),agentSnapshot:qe,harnessRelease:We,bundlePath:o.string().trim().min(1).max(8192),createdAt:o.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"]})});var hn={run_overlay:_e,evaluation_review:Xn,refinement_candidate:Tt,refinement_candidate_lifecycle:vr,cross_run_refinement_request:Ta,training_qualification:Qo,proposal:Ie,targeted_validation:gr,merge_receipt:Un,observation:Fn,trigger_decision:yr,route_decision:jn,apply_receipt:qn,refiner_outcome:Bn};function Tn(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]}l(Tn,"harnessWorkspaceParams");function En(a){let{createdAt:e,...t}=a;return t}l(En,"immutableHarnessReleaseRecord");var Hu=class extends Fs{static{l(this,"SqliteHarnessWorkspaceStore")}async createHarnessWorkspace(e){let t=me.parse(e);await this.ready;let r=this.writeQueue.then(()=>this.run(`INSERT INTO harness_workspaces (
2359
- id, owner_kind, owner_id, location, revision, source_revision,
2360
- channel_revision, current_release_hash, payload, created_at, updated_at
2361
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,Tn(t)));return this.writeQueue=r.catch(()=>{}),await r,t}async createHarnessWorkspaceWithRelease(e){let t=me.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 (
2362
- id, owner_kind, owner_id, location, revision, source_revision,
2363
- channel_revision, current_release_hash, payload, created_at, updated_at
2364
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,Tn(t)),await this.run(`INSERT INTO harness_release_records (
2365
- content_hash, id, workspace_id, source_revision, bundle_path, payload, created_at
2366
- ) 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=>me.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)
2367
- VALUES (?, ?, ?, ?)
2368
- ON CONFLICT(owner_kind, owner_id) DO UPDATE SET
2369
- workspace_id = excluded.workspace_id,
2370
- 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
2371
- 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=me.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 (
2372
- content_hash, id, workspace_id, source_revision, bundle_path, payload, created_at
2373
- ) 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(En(s))!==JSON.stringify(En(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
2374
- 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=hn[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
2375
- WHERE workspace_id = ? AND kind = ?
2376
- ORDER BY created_at DESC, id ASC LIMIT ?`,[e,t,s])).map(n=>hn[t].parse(JSON.parse(n.payload)))}async listPendingHarnessRefinerTriggers(){return await this.ready,await this.writeQueue,(await this.all(`SELECT trigger.workspace_id, trigger.payload
2377
- FROM harness_improvement_artifacts AS trigger
2378
- WHERE trigger.kind = 'trigger_decision'
2379
- AND json_extract(trigger.payload, '$.decision') = 'queue_refiner'
2380
- AND NOT EXISTS (
2381
- SELECT 1
2382
- FROM harness_improvement_artifacts AS outcome
2383
- WHERE outcome.kind = 'refiner_outcome'
2384
- AND json_extract(outcome.payload, '$.trigger.id') = json_extract(trigger.payload, '$.id')
2385
- AND json_extract(outcome.payload, '$.trigger.contentHash') = json_extract(trigger.payload, '$.contentHash')
2386
- )
2387
- ORDER BY trigger.created_at ASC, trigger.id ASC`)).map(t=>({workspaceId:t.workspace_id,trigger:yr.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 (
2388
- run_id, overlay_id, workspace_id, revision, status, payload,
2389
- created_at, updated_at
2390
- ) 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(f=>f.id).filter((f,h,T)=>T.indexOf(f)!==h);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(f=>f.id)),d=e.edits.find(f=>n.has(f.id));if(d)throw new Error(`Harness overlay edit id already exists: ${d.id}.`);let{contentHash:c,...p}=s,u=ht({...p,revision:s.revision+1,status:"frozen",edits:[...s.edits,...e.edits],updatedAt:e.updatedAt}),m=Ie.parse(e.buildProposal(u));if(m.overlay.id!==u.id||m.overlay.revision!==u.revision||m.overlay.contentHash!==u.contentHash)throw new Error("Refiner proposal is not bound to the atomically frozen overlay.");if(!_n(m.baseHarnessRelease,u.baseHarnessRelease)){let f=m.metadata.rebasedFromHarnessRelease,h=await this.readHarnessWorkspace(s.workspace.workspaceId);if(!h||!gf(f)||!_n(f,u.baseHarnessRelease)||!h.currentChannel.release||!_n(h.currentChannel.release,m.baseHarnessRelease)||m.expectedWorkspace.workspaceId!==h.id||m.expectedWorkspace.revision!==h.revision||m.expectedWorkspace.sourceRevision!==h.sourceRevision||m.expectedWorkspace.channelRevision!==h.currentChannel.revision)throw new Error("Refiner proposal base release differs from both the run overlay and the atomically verified current workspace.")}if(JSON.stringify(m.edits)!==JSON.stringify(e.edits))throw new Error("Refiner proposal edits differ from the atomically applied edits.");await this.run(`UPDATE harness_run_overlays SET
2391
- revision = ?, status = ?, payload = ?, updated_at = ?
2392
- WHERE run_id = ? AND revision = ?`,[u.revision,u.status,JSON.stringify(u),u.updatedAt,s.runId,s.revision]),await this.insertHarnessImprovementArtifact(s.workspace.workspaceId,"run_overlay",u),await this.insertHarnessImprovementArtifact(s.workspace.workspaceId,"proposal",m),await this.exec("COMMIT"),t={overlay:u,proposal:m}}catch(s){throw await this.exec("ROLLBACK").catch(()=>{}),s}});if(this.writeQueue=r.catch(()=>{}),await r,!t)throw new Error("Atomic Harness Refiner proposal did not produce a result.");return t}async advanceHarnessWorkspaceAtomically(e){await this.ready;let t=null,r=this.writeQueue.then(async()=>{await this.exec("BEGIN IMMEDIATE");try{let s=await this.readHarnessAdvanceReceipt(e.receiptId);if(s){t={workspace:await this.requireHarnessWorkspace(e.workspaceId),receipt:s},await this.exec("COMMIT");return}let i=await this.requireHarnessWorkspace(e.workspaceId),n=await this.readHarnessReleaseRecord(e.nextRelease.contentHash);if(!n||n.harnessRelease.id!==e.nextRelease.id||n.workspaceId!==e.workspaceId)throw new Error("Candidate Harness release is not present in this workspace registry.");t=Md({...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=Dd({...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=Xd({...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
2393
- WHERE workspace_id = ? ORDER BY created_at ASC, id ASC`,[e])).map(r=>wr.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(h=>h.id).filter((h,T,E)=>E.indexOf(h)!==T);if(i.length>0)throw new Error(`Harness overlay edit ids must be unique: ${i.join(", ")}.`);let n=new Set(s.edits.map(h=>h.id)),d=e.edits.find(h=>n.has(h.id));if(d)throw new Error(`Harness overlay edit id already exists: ${d.id}.`);let c=[...s.edits,...e.edits],p=s.status,u={...s.metadata};if(e.operation==="freeze"&&(p="frozen"),e.operation==="abandon"&&(p="abandoned"),e.operation==="restore"){if(e.restoreRevision===void 0)throw new Error("Harness overlay restore requires a source revision.");let h=await this.readHarnessRunOverlayRevision(s.id,e.restoreRevision);if(!h||h.runId!==s.runId||h.baseHarnessRelease.id!==s.baseHarnessRelease.id||h.baseHarnessRelease.contentHash!==s.baseHarnessRelease.contentHash)throw new Error("Harness overlay restore revision is unavailable or incompatible.");c=h.edits,p="active",u.restoredFromRevision=h.revision}let{contentHash:m,...f}=s;t=ht({...f,revision:s.revision+1,status:p,edits:c,updatedAt:e.updatedAt,metadata:u}),await this.run(`UPDATE harness_run_overlays SET
2394
- revision = ?, status = ?, payload = ?, updated_at = ?
2395
- 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
2396
- WHERE id = ? AND kind = 'run_overlay'
2397
- AND CAST(json_extract(payload, '$.revision') AS INTEGER) = ?
2398
- 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
2399
- 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 c=r.revision;if(n.map(u=>_e.parse(JSON.parse(u.payload))).find(u=>u.revision===c))throw new Error("A Harness run overlay revision already has different content.")}await this.run(`INSERT INTO harness_improvement_artifacts (
2400
- content_hash, id, workspace_id, kind, payload, created_at
2401
- ) 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?me.parse(JSON.parse(t.payload)):null}async updateHarnessWorkspace(e){let t=me.parse(e);await this.run(`UPDATE harness_workspaces SET
2402
- owner_kind = ?, owner_id = ?, location = ?, revision = ?, source_revision = ?,
2403
- channel_revision = ?, current_release_hash = ?, payload = ?, updated_at = ?
2404
- 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?wr.parse(JSON.parse(t.payload)):null}async insertHarnessAdvanceReceipt(e){let t=wr.parse(e);await this.run(`INSERT INTO harness_advance_receipts (
2405
- content_hash, id, workspace_id, decision, payload, created_at
2406
- ) VALUES (?, ?, ?, ?, ?, ?)`,[t.contentHash,t.id,t.workspaceId,t.decision,JSON.stringify(t),t.createdAt])}};function gf(a){if(!a||typeof a!="object")return!1;let e=a;return typeof e.id=="string"&&typeof e.contentHash=="string"}l(gf,"isReleaseRef");function _n(a,e){return a.id===e.id&&a.contentHash===e.contentHash}l(_n,"sameReleaseRef");var Ct="harness.json",Mu=25e7;function pa(a,e){let t=`${Le(e)}-${R(e).slice(0,16)}`,r=L.join(a,"library","harnesses","workspaces",t);return{root:r,source:L.join(r,"source")}}l(pa,"localHarnessWorkspacePaths");async function Xu(a){return js({...a,initializeSource:l(e=>Rf(e,a.name),"initializeSource")})}l(Xu,"createLocalHarnessWorkspace");async function wn(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 js({...a,initializeSource:l(e=>Uu(e,a.name,a.profile,a.sourceRevision,a.repositoryId),"initializeSource")})}l(wn,"importProfileIntoLocalHarnessWorkspace");async function wf(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 P.mkdir(e,{recursive:!0});let t=L.join(e,gn());try{return await Uu(t,a.name,a.profile,a.sourceRevision,a.repositoryId),await ke({workspaceId:a.workspaceId,sourceDir:t})}finally{await P.rm(t,{recursive:!0,force:!0})}}l(wf,"compileProfileHarnessSource");async function _L(a){let e=await wf(a);if(!a.repositoryId.trim())throw new Error("Explicit Profile source requires a repository ID.");let t=await a.store.getHarnessWorkspace(a.workspaceId);if(t){let s=t.currentChannel.release;if(t.ownerScope.kind!=="personal"||t.ownerScope.id!==a.ownerId||t.sourceRevision!==e.sourceRevision||s?.id!==e.harnessRelease.id||s.contentHash!==e.harnessRelease.contentHash)throw new Error("Explicit Profile source changed under its accepted revision.");let i=await a.store.getHarnessReleaseRecord(s.contentHash);if(!i)throw new Error("Explicit Profile source release is missing after restore.");return i}let r=await wn({...a,id:a.workspaceId,selectionEligible:!1});if(r.release.harnessRelease.contentHash!==e.harnessRelease.contentHash||r.workspace.sourceRevision!==e.sourceRevision)throw new Error("Explicit Profile source changed during import.");return r.release}l(_L,"ensureExplicitProfileHarnessSource");async function gL(a){let e=await ke({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 js({...a,initializeSource:l(async r=>{await P.mkdir(r,{recursive:!0}),await P.writeFile(L.join(r,Ct),K(e.manifest));for(let s of e.sourceFiles){let i=L.join(r,s.path);await P.mkdir(L.dirname(i),{recursive:!0}),await P.writeFile(i,s.bytes)}},"initializeSource")})}l(gL,"importLocalHarnessWorkspaceSource");async function wL(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 js({...a,initializeSource:l(async t=>{await P.cp(L.join(e.bundlePath,"source"),t,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1}),await yn(t,a.name)},"initializeSource")})}l(wL,"forkLocalHarnessWorkspaceFromRelease");async function js(a){let e=a.now??(()=>new Date().toISOString()),t=pa(a.storeDir,a.id),r=L.dirname(t.root);await P.mkdir(r,{recursive:!0});let s=L.join(r,`.${L.basename(t.root)}.creating-${gn()}`),i=L.join(s,"source");try{await a.initializeSource(i),await P.rename(s,t.root)}catch(n){throw await P.rm(s,{recursive:!0,force:!0}).catch(()=>{}),n}try{let n=await ke({workspaceId:a.id,sourceDir:t.source}),d=await Rn({storeDir:a.storeDir,workspaceId:a.id,compiled:n,createdAt:e()}),c=e(),p=me.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:c,updatedAt:c,metadata:{sourceLayout:"openpond.harnessSourceManifest.v1",...a.selectionEligible===!1?{selectionEligible:!1}:{}}});return await a.store.createHarnessWorkspaceWithRelease({workspace:p,release:d})}catch(n){throw await P.rm(t.root,{recursive:!0,force:!0}).catch(()=>{}),n}}l(js,"createLocalHarnessWorkspaceFromInitializer");async function ke(a){let e=L.resolve(a.sourceDir),t=L.join(e,Ct),r=Qt.parse(JSON.parse(await P.readFile(t,"utf8"))),s=new Set(r.files.map(_=>_.path)),i=(await aa(e)).filter(_=>_!==Ct),n=i.filter(_=>!s.has(_)),d=[...s].filter(_=>!i.includes(_));if(n.length||d.length)throw new Error(`Harness source manifest mismatch. Unlisted: ${n.join(", ")||"none"}; missing: ${d.join(", ")||"none"}.`);let c=[];for(let _ of r.files){let v=await os(e,_.path),x=await P.readFile(v);if(x.byteLength>Mu)throw new Error(`Harness source file ${_.path} exceeds ${Mu} bytes.`);c.push({path:_.path,bytes:x,asset:{id:_.id,path:_.path,contentHash:Ce(x),sizeBytes:x.byteLength,mediaType:_.mediaType,visibility:_.visibility}})}let p=c.find(({path:_})=>_==="workflows/catalog.json");if(p){let _=r.files.find(j=>j.path===p.path);if(_?.kind!=="workflow"||_.visibility!=="policy")throw new Error("Profile workflow catalog requires a policy-visible workflow declaration.");let v=c.find(({path:j})=>j==="workflows/actions.json"),x=r.files.find(j=>j.path==="workflows/actions.json");if(!v||x?.visibility!=="policy")throw new Error("Profile workflow catalog requires a released action inventory.");let N=Wn.parse(JSON.parse(new TextDecoder().decode(v.bytes))).actions,H=new Set;for(let j of N){if(H.has(j.id))throw new Error(`Duplicate Profile workflow action ${j.id}.`);if(H.add(j.id),!Ks(j.inputSchema).valid)throw new Error(`Profile workflow action ${j.id} has an invalid input schema.`);if(!r.files.some(b=>b.path.startsWith(`agents/${j.agentId}/`)))throw new Error(`Profile workflow action ${j.id} lacks its Agent source.`)}let $=Js({catalog:JSON.parse(new TextDecoder().decode(p.bytes)),sourcePaths:new Set(r.files.filter(j=>j.kind==="skill").map(j=>j.path)),actionIds:H});Fu($)}let u=R({manifest:r,files:c.map(({path:_,asset:v})=>({path:_,contentHash:v.contentHash,sizeBytes:v.sizeBytes}))}),m=l(_=>c.filter(({path:v})=>r.files.find(x=>x.path===v)?.kind===_).map(({asset:v})=>v),"byKind"),f=m("dependency_lock")[0],h=m("program")[0],T=r.files.filter(_=>_.portability==="local_only").map(_=>_.id),E=r.files.filter(_=>_.visibility==="host_private").map(_=>_.id),g=[...T.map(_=>`Asset ${_} is local-only.`),...E.map(_=>`Asset ${_} is host-private.`)],w={id:`harness-source-${u.slice(0,24)}`,contentHash:u},y=Ys({schemaVersion:"openpond.agentSnapshot.v2",id:`agent-snapshot-${R([u,r.toolDeclarations]).slice(0,24)}`,sourceRelease:w,instructions:m("instruction"),skills:m("skill"),agents:m("agent"),toolDeclarations:r.toolDeclarations,capabilityRequirements:r.capabilityRequirements,dependencyLock:f,portability:{portable:g.length===0,blockers:g,localOnlyAssetRefs:T,hostPrivateAssetRefs:E},metadata:{workspaceId:a.workspaceId,sourceRevision:u,sourceLayout:r.schemaVersion}}),k=Vs({schemaVersion:"openpond.harnessRelease.v2",id:`harness-${R([y.contentHash,h.contentHash,r.lifecycle]).slice(0,24)}`,agentSnapshot:{id:y.id,contentHash:y.contentHash},program:h,tools:r.toolDeclarations,lifecycle:r.lifecycle,graderInterface:r.graderInterface,files:c.map(({asset:_})=>_),metadata:{runtimeProtocol:r.runtimeProtocol,sourceRevision:u,sourceLayout:r.schemaVersion,...r.metadata.importedFrom==="openpond.profile"?{profile:{id:r.metadata.profileId,sourceRevision:r.metadata.profileGitHead??u,...r.metadata.profileRepositoryId?{repositoryId:r.metadata.profileRepositoryId}:{}}}:{}}});return{manifest:r,sourceRevision:u,agentSnapshot:y,harnessRelease:k,sourceFiles:c}}l(ke,"compileLocalHarnessSource");async function Rn(a){let e=L.join(a.storeDir,"library","harnesses","releases"),t=L.join(e,a.compiled.harnessRelease.contentHash);await P.mkdir(e,{recursive:!0});let r=L.join(e,`.${a.compiled.harnessRelease.contentHash}.materializing-${gn()}`);try{await P.mkdir(L.join(r,"source"),{recursive:!0});for(let s of a.compiled.sourceFiles){let i=L.join(r,"source",...s.path.split("/"));await P.mkdir(L.dirname(i),{recursive:!0}),await P.writeFile(i,s.bytes,{flag:"wx"})}await P.writeFile(L.join(r,"source",Ct),K(a.compiled.manifest),{flag:"wx"}),await P.writeFile(L.join(r,"agent-snapshot.json"),K(a.compiled.agentSnapshot),{flag:"wx"}),await P.writeFile(L.join(r,"harness-release.json"),K(a.compiled.harnessRelease),{flag:"wx"});try{await P.rename(r,t)}catch(s){if(s.code!=="EEXIST"&&s.code!=="ENOTEMPTY")throw s;await Du(t,a.compiled),await P.rm(r,{recursive:!0,force:!0})}await Du(t,a.compiled)}catch(s){throw await P.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})}l(Rn,"materializeLocalHarnessRelease");async function Rf(a,e){let t=Qt.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 P.mkdir(a,{recursive:!0}),await P.writeFile(L.join(a,"dependency-lock.json"),K({dependencies:{}}),{flag:"wx"}),await P.writeFile(L.join(a,"program.json"),K({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),await P.writeFile(L.join(a,Ct),K(t),{flag:"wx"}),await yn(a,e)}l(Rf,"writeDefaultHarnessSource");async function Uu(a,e,t,r,s){let i=L.resolve(t.sourcePath),n=[],d=new Set,c=l(N=>{let H=N.id;d.has(H)&&(H=`${H}-${R(N.path).slice(0,8)}`),d.add(H);let $={...N,id:H};return n.push($),$},"addDeclaration");await P.mkdir(a,{recursive:!0});for(let N of t.skills.filter(H=>H.enabled)){if(N.validationStatus!=="valid")throw new Error(`Cannot import invalid Profile Skill ${N.name}: ${N.validationMessages.join(" ")}`);let H=L.dirname(L.join(i,N.path)),$=`skills/${Le(N.name)}/SKILL.md`;await mt(L.join(H,"SKILL.md"),L.join(a,...$.split("/")));let j=c({id:`skill-${Le(N.name)}`,kind:"skill",path:$,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"});for(let b of N.resourceFiles){let V=`skills/${Le(N.name)}/${b.split(L.sep).join("/")}`;await mt(L.join(H,b),L.join(a,...V.split("/"))),c({id:`skill-resource-${Le(N.name)}-${R(b).slice(0,12)}`,kind:"skill_resource",path:V,parentId:j.id,mediaType:Va(V),visibility:"policy",portability:"portable"})}}for(let N of t.agents.filter(H=>H.enabled)){let H=L.resolve(i,N.path),$=await qc(H);if($.length===0)throw new Error(`Profile Agent ${N.id} has no source files.`);let j=Wc($);for(let b of $){let V=`agents/${Le(N.id)}/${b}`,Q=(await P.stat(H)).isDirectory()?L.join(H,...b.split("/")):H;await mt(Q,L.join(a,...V.split("/"))),c({id:b===j?`agent-${Le(N.id)}`:`agent-asset-${Le(N.id)}-${R(b).slice(0,12)}`,kind:b===j?"agent":"asset",path:V,parentId:null,mediaType:Va(V),visibility:"policy",portability:"portable"})}await Hi(L.join(a,"agents",Le(N.id)))}let p=new Set,u=new Set(t.agents.filter(N=>N.enabled).map(N=>N.id)),m=t.actionCatalog.filter(N=>N.agentId&&u.has(N.agentId)).map(N=>({id:N.id,agentId:Le(N.agentId),sourceActionId:N.sourceActionId??N.id,inputSchema:typeof N.inputSchema=="object"&&N.inputSchema!==null?N.inputSchema:{type:"object",additionalProperties:!0}})),f=new Set(m.map(N=>N.id)),h=L.join(i,"workflows","catalog.json"),T=await P.lstat(h).catch(()=>null),E=(await aa(i)).filter(N=>N.startsWith("workflows/")),g=E.some(N=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(N));if(g&&T)throw new Error("Authored Workflow packages and legacy workflows/catalog.json cannot coexist; migrate the catalog first.");if(T||g||m.length){if(T&&(!T.isFile()||T.isSymbolicLink()))throw new Error("Profile workflow catalog must be a regular file.");let N=g?Yn({files:new Map(await Promise.all(E.map(async b=>[b,await P.readFile(await os(i,b),"utf8")]))),skillPaths:new Set(n.filter(b=>b.kind==="skill").map(b=>b.path)),actionIds:f}):null,H=N?Buffer.from(K(N.catalog)):T?await P.readFile(h):Buffer.from(K({schemaVersion:"openpond.profileWorkflows.v1",workflows:[]})),$=Js({catalog:JSON.parse(H.toString("utf8")),sourcePaths:new Set(n.filter(b=>b.kind==="skill").map(b=>b.path)),actionIds:new Set(m.map(b=>b.id))});for(let b of $.workflows)p.add(b.id);Fu($);let j="workflows/catalog.json";await P.mkdir(L.join(a,"workflows"),{recursive:!0}),await P.writeFile(L.join(a,"workflows","catalog.json"),H,{flag:"wx"});for(let b of N?.referencedPaths??[])await mt(L.join(i,...b.split("/")),L.join(a,...b.split("/"))),c({id:`profile-workflow-source-${R(b).slice(0,16)}`,kind:"asset",path:b,parentId:null,mediaType:Va(b),visibility:"policy",portability:"portable"});c({id:"profile-workflows",kind:"workflow",path:j,parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"})}(T||g||m.length)&&(await P.writeFile(L.join(a,"workflows","actions.json"),K({schemaVersion:"openpond.profileWorkflowActions.v1",actions:m}),{flag:"wx"}),c({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 P.lstat(w).catch(()=>null),k=(await aa(i)).filter(N=>/^workflows\/[^/]+\/evals\/[^/]+\.json$/.test(N)||/^evals\/(definitions|suites)\/[^/]+\.json$/.test(N));if(y&&k.length)throw new Error("Authored evaluation definitions and legacy evals/catalog.json cannot coexist; migrate the catalog first.");if(y||k.length){if(y&&(!y.isFile()||y.isSymbolicLink()))throw new Error("Profile evaluation catalog must be a regular file.");let N=[],H=[];for(let F of k){let ee=JSON.parse(await P.readFile(await os(i,F),"utf8"));if(F.startsWith("evals/suites/"))H.push(Jo.parse(ee));else{let te=Vo.parse(ee),pe=/^workflows\/([^/]+)\/evals\//.exec(F)?.[1];if(pe&&(te.target.kind!=="workflow"||te.target.workflowId!==pe))throw new Error(`Profile evaluation ${te.id} must target its containing Workflow ${pe}.`);N.push(te)}}let $=k.length?Buffer.from(K({schemaVersion:"openpond.profileEvaluations.v1",definitions:N.sort((F,ee)=>F.id.localeCompare(ee.id)),suites:H.sort((F,ee)=>F.id.localeCompare(ee.id))})):await P.readFile(w),{catalog:j}=Go({catalog:JSON.parse($.toString("utf8")),workflowIds:p,skillPaths:new Set(n.filter(F=>F.kind==="skill").map(F=>F.path)),actionIds:f});await P.mkdir(L.join(a,"evals"),{recursive:!0}),await P.writeFile(L.join(a,"evals","catalog.json"),$,{flag:"wx"});for(let F of k)await mt(L.join(i,...F.split("/")),L.join(a,...F.split("/"))),c({id:`profile-evaluation-source-${R(F).slice(0,16)}`,kind:"asset",path:F,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});c({id:"profile-evaluations",kind:"asset",path:"evals/catalog.json",parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"});let b=new Set(j.definitions.map(F=>F.tasksetRelease.contentHash)),V=L.join(i,"evals","tasksets"),Q=await P.lstat(V).catch(()=>null);if(Q&&(!Q.isDirectory()||Q.isSymbolicLink()))throw new Error("Profile evaluation Taskset directory must be a regular directory.");for(let F of b){let ee=L.join(V,`${F}.json`),te=await P.lstat(ee).catch(()=>null);if(!te)throw new Error(`Profile evaluation Taskset package ${F} is missing.`);if(!te.isFile()||te.isSymbolicLink())throw new Error("Profile evaluation Taskset package must be a regular file.");let pe=st(JSON.parse(await P.readFile(ee,"utf8")));if(pe.taskset.contentHash!==F||!j.definitions.some(In=>In.tasksetRelease.contentHash===F&&In.tasksetRelease.id===pe.taskset.id))throw new Error("Profile evaluation Taskset package differs from its catalog reference.");let Nn=`evals/tasksets/${F}.json`;await mt(ee,L.join(a,...Nn.split("/"))),c({id:`profile-evaluation-taskset-${F.slice(0,16)}`,kind:"asset",path:Nn,parentId:null,mediaType:"application/json",visibility:"verifier",portability:"portable"})}}let _=await yf(t,r),v=`dependency-lock/${_.name}`;await P.mkdir(L.join(a,"dependency-lock"),{recursive:!0}),_.sourcePath?await mt(_.sourcePath,L.join(a,...v.split("/"))):await P.writeFile(L.join(a,...v.split("/")),K(_.generated),{flag:"wx"}),c({id:"dependency-lock",kind:"dependency_lock",path:v,parentId:null,mediaType:Va(v),visibility:"policy",portability:"portable"}),await P.writeFile(L.join(a,"program.json"),K({runtimeProtocol:"openpond.agent-runtime.v1"}),{flag:"wx"}),c({id:"agent-runtime-program",kind:"program",path:"program.json",parentId:null,mediaType:"application/json",visibility:"policy",portability:"portable"});let x=Qt.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 P.writeFile(L.join(a,Ct),K(x),{flag:"wx"}),await yn(a,e)}l(Uu,"writeImportedProfileSource");function Fu(a){for(let e of a.workflows){let t=Ks(e.inputSchema);if(!t.valid)throw new Error(`Profile workflow ${e.id} has an invalid input schema: ${t.issues[0]?.message??"schema mismatch"}`)}}l(Fu,"assertProfileWorkflowInputSchemas");async function yn(a,e){let t=L.join(a,Ct),r=Qt.parse(JSON.parse(await P.readFile(t,"utf8")));if(r.files.some(c=>c.kind==="instruction"))return;let s="instructions/system.md";await P.mkdir(L.join(a,"instructions"),{recursive:!0}),await P.writeFile(L.join(a,...s.split("/")),`# ${e}
2407
-
2408
- Keep reusable, provider-neutral execution guidance for this Harness here.
2409
- `,{flag:"wx"});let n=new Set(r.files.map(c=>c.id)).has("instruction-system")?`instruction-system-${R(s).slice(0,8)}`:"instruction-system",d=Qt.parse({...r,name:e,files:[...r.files,{id:n,kind:"instruction",path:s,parentId:null,mediaType:"text/markdown",visibility:"policy",portability:"portable"}]});await P.writeFile(t,K(d),{flag:"w"})}l(yn,"ensureHarnessInstructionSurface");async function yf(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 P.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}}}l(yf,"importedDependencyLock");async function Du(a,e){let t=qe.parse(JSON.parse(await P.readFile(L.join(a,"agent-snapshot.json"),"utf8"))),r=We.parse(JSON.parse(await P.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 P.readFile(L.join(a,"source",...s.path.split("/")));if(Ce(i)!==s.asset.contentHash)throw new Error(`Materialized Harness asset ${s.path} failed hash verification.`)}}l(Du,"verifyMaterializedRelease");import{randomUUID as ma}from"node:crypto";import{promises as q}from"node:fs";import{stripTypeScriptTypes as vf}from"node:module";import ue from"node:path";async function AL(a){let e=_e.parse(a.overlay),t=Ie.parse(a.proposal),r=a.validations.map(p=>gr.parse(p));if((t.route==="agent"?t.edits.filter(p=>p.target!=="harness.json"&&p.operation!=="delete"):[]).length>0){let p=t.validationPlan.find(m=>m.kind==="component_activation"&&m.required);if(!p)throw new Error("Desktop Work Agent proposals require component-activation validation before review.");if(r.find(m=>m.validationId===p.id)?.status==="passed")throw new Error("Desktop Work cannot accept a passed Agent activation receipt until an Agent source executor exists.")}if(t.overlay.id!==e.id||t.overlay.revision!==e.revision||t.overlay.contentHash!==e.contentHash)throw new Error("Refiner proposal is not bound to the supplied run overlay.");if(e.status!=="frozen")throw new Error("Only a frozen run overlay can advance a Harness workspace.");let i=await a.store.getHarnessWorkspace(t.expectedWorkspace.workspaceId);if(!i)throw new Error(`Harness workspace ${t.expectedWorkspace.workspaceId} does not exist.`);if(i.location!=="local")throw new Error("The local Refiner can only advance a local Harness workspace.");let n=pa(a.storeDir,i.id),d=await ke({workspaceId:i.id,sourceDir:n.source});if(d.sourceRevision!==i.sourceRevision)throw new Error(`Harness source is ${d.sourceRevision}; workspace expects ${i.sourceRevision}. Record or revert the source change before refinement.`);let c=ue.join(n.root,`.source-candidate-${ma()}`);await q.cp(n.source,c,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1});try{await qu(c,t);let p=await ke({workspaceId:i.id,sourceDir:c}),u=(a.now??(()=>new Date().toISOString()))(),m=await Rn({storeDir:a.storeDir,workspaceId:i.id,compiled:p,createdAt:u});await a.store.saveHarnessReleaseRecord(m),await a.store.saveHarnessImprovementArtifact(i.id,"run_overlay",e),await a.store.saveHarnessImprovementArtifact(i.id,"proposal",t);for(let E of r)await a.store.saveHarnessImprovementArtifact(i.id,"targeted_validation",E);if(!Hd({workspace:i,proposal:t}).eligible&&!a.reviewAuthority)return a.store.advanceHarnessWorkspaceAtomically({receiptId:a.receiptId,workspaceId:i.id,proposal:t,validations:r,nextRelease:{id:m.harnessRelease.id,contentHash:m.harnessRelease.contentHash},nextSourceRevision:m.sourceRevision,now:u});let h=ue.join(n.root,`.source-backup-${ma()}`),T=ue.join(n.root,"source-swap.json");await $u(T,{schemaVersion:"openpond.localHarnessSourceSwap.v1",workspaceId:i.id,expectedWorkspaceRevision:i.revision,previousSourceRevision:i.sourceRevision,nextSourceRevision:m.sourceRevision,backupSource:h,candidateSource:c,createdAt:u}),await q.rename(n.source,h),await q.rename(c,n.source);try{let E=a.reviewAuthority?await a.store.advanceReviewedHarnessWorkspaceAtomically({receiptId:a.receiptId,workspaceId:i.id,proposal:t,validations:r,nextRelease:{id:m.harnessRelease.id,contentHash:m.harnessRelease.contentHash},nextSourceRevision:m.sourceRevision,reviewer:a.reviewAuthority.reviewer,now:u}):await a.store.advanceHarnessWorkspaceAtomically({receiptId:a.receiptId,workspaceId:i.id,proposal:t,validations:r,nextRelease:{id:m.harnessRelease.id,contentHash:m.harnessRelease.contentHash},nextSourceRevision:m.sourceRevision,now:u});return E.receipt.decision!=="advanced"?await fr(n.source,h):await q.rm(h,{recursive:!0,force:!0}),await q.rm(T,{force:!0}),E}catch(E){throw await fr(n.source,h).catch(()=>{}),await q.rm(T,{force:!0}).catch(()=>{}),E}}finally{await q.rm(c,{recursive:!0,force:!0}).catch(()=>{})}}l(AL,"applyLocalHarnessRefinerProposal");async function PL(a){let e=await a.store.getHarnessWorkspace(a.workspaceId);if(!e||e.location!=="local")throw new Error(`Local Harness workspace ${a.workspaceId} does not exist.`);if(e.currentChannel.release?.id!==a.rollbackOf.id||e.currentChannel.release.contentHash!==a.rollbackOf.contentHash)throw new Error("Harness rollback source is no longer the current release.");let t=await a.store.getHarnessReleaseRecord(a.targetRelease.contentHash);if(!t||t.workspaceId!==e.id||t.harnessRelease.id!==a.targetRelease.id)throw new Error("Harness rollback target is unavailable in this workspace.");let r=pa(a.storeDir,e.id);if((await ke({workspaceId:e.id,sourceDir:r.source})).sourceRevision!==e.sourceRevision)throw new Error("Harness source changed before rollback.");let i=ue.join(r.root,`.source-rollback-${ma()}`);await q.cp(ue.join(t.bundlePath,"source"),i,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1});try{if((await ke({workspaceId:e.id,sourceDir:i})).sourceRevision!==t.sourceRevision)throw new Error("Harness rollback bundle does not reproduce its registered source revision.");let d=(a.now??(()=>new Date().toISOString()))(),c=ue.join(r.root,`.source-backup-${ma()}`),p=ue.join(r.root,"source-swap.json");await $u(p,{schemaVersion:"openpond.localHarnessSourceSwap.v1",workspaceId:e.id,expectedWorkspaceRevision:e.revision,previousSourceRevision:e.sourceRevision,nextSourceRevision:t.sourceRevision,backupSource:c,candidateSource:i,createdAt:d}),await q.rename(r.source,c),await q.rename(i,r.source);try{let u=await a.store.rollbackHarnessWorkspaceAtomically({receiptId:a.receiptId,workspaceId:e.id,expectedWorkspaceRevision:e.revision,expectedChannelRevision:e.currentChannel.revision,targetRelease:a.targetRelease,targetSourceRevision:t.sourceRevision,rollbackOf:a.rollbackOf,now:d});return u.receipt.decision!=="rolled_back"?await fr(r.source,c):await q.rm(c,{recursive:!0,force:!0}),await q.rm(p,{force:!0}),u}catch(u){throw await fr(r.source,c).catch(()=>{}),await q.rm(p,{force:!0}).catch(()=>{}),u}}finally{await q.rm(i,{recursive:!0,force:!0}).catch(()=>{})}}l(PL,"rollbackLocalHarnessWorkspaceRelease");async function xL(a){let e=Ie.parse(a.proposal);if(e.expectedWorkspace.workspaceId!==a.workspace.id)throw new Error("Refiner proposal targets a different Harness workspace.");if(e.route==="memory")return kf({proposal:e,now:a.now});let t=pa(a.storeDir,a.workspace.id),r=await ke({workspaceId:a.workspace.id,sourceDir:t.source});if(r.sourceRevision!==e.expectedWorkspace.sourceRevision)throw new Error("Refiner proposal source revision no longer matches the Local Harness workspace.");let s=ue.join(t.root,`.validation-candidate-${ma()}`);await q.cp(t.source,s,{recursive:!0,force:!1,errorOnExist:!0,verbatimSymlinks:!1});let i=(a.now??(()=>new Date().toISOString()))();try{await qu(s,e);let n=await ke({workspaceId:a.workspace.id,sourceDir:s}),d=new Map(n.manifest.files.map(m=>[m.path,m])),c=new Map(e.edits.map(m=>[m.target,m])),p=ju(r),u=ju(n);return Promise.all(e.validationPlan.map(async m=>{let f="passed",h="The candidate Harness source compiles and preserves its manifest contract.";try{if(m.kind==="observed_recovery"){let T=e.evidence.filter(E=>E.kind==="recovery");if(T.length===0)throw new Error("Observed-recovery validation requires recorded recovery evidence.");h=`Validated ${T.length} immutable recovery evidence reference(s) before candidate advancement.`}else if(m.kind==="prompt"){let T=e.edits.filter(E=>E.route==="prompt"&&E.target!=="harness.json");if(T.length===0)throw new Error("Prompt validation requires an instruction-file edit.");for(let E of T){let g=d.get(E.target);if(E.operation==="delete"){if(g)throw new Error(`Deleted instruction ${E.target} remains declared.`)}else if(g?.kind!=="instruction")throw new Error(`Instruction ${E.target} is not declared in the candidate Harness.`);if(E.content!==null&&/\b(?:api[_-]?key|access[_-]?token|password|secret)\s*[:=]/i.test(E.content))throw new Error(`Instruction ${E.target} appears to contain credential material.`)}h=`Validated ${T.length} textual instruction edit(s) and compiled candidate ${n.harnessRelease.id}.`}else if(m.kind==="skill"){let T=e.edits.filter(E=>E.route==="skill"&&E.target!=="harness.json");if(T.length===0)throw new Error("Skill validation requires a declared Skill-file edit.");for(let E of T){let g=d.get(E.target);if(E.operation==="delete"){if(g)throw new Error(`Deleted Skill ${E.target} remains declared.`);continue}if(g?.kind!=="skill")throw new Error(`Skill ${E.target} is not declared in the candidate Harness.`);let w=c.get(E.target)?.content;if(!w)throw new Error(`Skill edit ${E.target} has no content.`);let y=wa(w);if(!y.name||!y.description||y.messages.length>0)throw new Error(`Skill ${E.target} is invalid: ${y.messages.join(" ")}`)}h=`Validated ${T.length} Skill edit(s), Skill frontmatter, and compiled candidate ${n.harnessRelease.id}.`}else if(m.kind==="dependency"){let T=n.manifest.files.find(E=>E.kind==="dependency_lock");if(!T)throw new Error("Candidate Harness has no dependency lock.");JSON.parse(await q.readFile(Wu(s,T.path),"utf8")),h=`Validated dependency lock ${T.path} and compiled candidate ${n.harnessRelease.id}.`}else if(m.kind==="schema")Ie.parse(e),h=`Validated proposal, manifest, and candidate release schemas for ${n.harnessRelease.id}.`;else if(m.kind==="package"){let T=e.edits.filter(E=>E.route==="agent"&&E.operation!=="delete"&&E.target!=="harness.json");for(let E of T){if(!E.content)throw new Error(`Agent edit ${E.target} has no source.`);vf(E.content,{mode:"transform",sourceUrl:E.target,sourceMap:!1})}h=T.length>0?`Syntax-checked ${T.length} Agent source edit(s) and compiled candidate ${n.harnessRelease.id}.`:`Compiled candidate package ${n.harnessRelease.id} and preserved the Harness source manifest contract.`}else if(m.kind==="component_activation"){let T=e.edits.filter(E=>E.target!=="harness.json");if(T.length===0)throw new Error("Component activation requires a concrete Harness component edit.");if(e.route==="agent"){if(T.filter(g=>g.operation!=="delete").length>0)throw new Error("Desktop Work does not compile or execute released Agent source; use an active instruction or standalone Skill, or add an Agent executor before release.");h=`Confirmed ${T.length} deleted Agent component(s) were inactive in Desktop Work.`}else{if(!["prompt","skill"].includes(e.route))throw new Error(`Desktop Work has no activation policy for ${e.route} proposals.`);let E=e.route==="prompt"?"instruction":"skill";for(let g of T){let w=u.components.find(y=>y.path===g.target&&y.kind===E);if(g.operation==="delete"?w:!w)throw new Error(`${E} ${g.target} is not reflected in the candidate Desktop Work runtime surface.`)}if(p.contentHash===u.contentHash)throw new Error("The candidate does not change the effective Desktop Work runtime surface.");h=`Activated ${T.length} ${E} edit(s) in the candidate Desktop Work runtime surface.`}}else m.kind==="business_formula"?(f="blocked",h="Business or financial logic is retained for review until an approved deterministic fixture supplies inputs and expected outputs."):m.kind==="targeted_evaluation"?(f="blocked",h="This sensitive change requires an explicit authority-preserving targeted Evaluation before release."):m.kind==="file_render"?(f="blocked",h="File-render validation requires an exact produced artifact reference; no artifact was attached to this Harness-source proposal."):(f="blocked",h=`Local targeted validation does not yet own ${m.kind}; it requires its dedicated validator.`)}catch(T){f="failed",h=T instanceof Error?T.message:String(T)}return Rr({schemaVersion:"openpond.harnessTargetedValidationReceipt.v1",id:`validation-${e.id}-${m.id}`,proposal:{id:e.id,contentHash:e.contentHash},validationId:m.id,kind:m.kind,status:f,summary:h,evidenceRefs:e.evidence,createdAt:i,metadata:{candidateHarnessRelease:{id:n.harnessRelease.id,contentHash:n.harnessRelease.contentHash},sourceRevision:n.sourceRevision,...m.kind==="component_activation"?{targetRuntime:"desktop_work",beforeEffectiveRuntimeHash:p.contentHash,afterEffectiveRuntimeHash:u.contentHash,activatedComponentRefs:u.components,inactiveAgentRefs:u.inactiveAgents}:{}}})}))}catch(n){let d=n instanceof Error?n.message:String(n);return e.validationPlan.map(c=>Rr({schemaVersion:"openpond.harnessTargetedValidationReceipt.v1",id:`validation-${e.id}-${c.id}`,proposal:{id:e.id,contentHash:e.contentHash},validationId:c.id,kind:c.kind,status:"failed",summary:d,evidenceRefs:e.evidence,createdAt:i,metadata:{}}))}finally{await q.rm(s,{recursive:!0,force:!0}).catch(()=>{})}}l(xL,"validateLocalHarnessRefinerProposal");function ju(a){let e=[...a.agentSnapshot.instructions.map(r=>({kind:"instruction",path:r.path,contentHash:r.contentHash})),...a.agentSnapshot.skills.map(r=>({kind:"skill",path:r.path,contentHash:r.contentHash}))].sort((r,s)=>r.path.localeCompare(s.path)),t=a.agentSnapshot.agents.map(r=>({path:r.path,contentHash:r.contentHash})).sort((r,s)=>r.path.localeCompare(s.path));return{contentHash:R({schemaVersion:"openpond.desktopWorkHarnessSurface.v1",components:e}),components:e,inactiveAgents:t}}l(ju,"desktopWorkRuntimeSurface");function kf(a){let e=(a.now??(()=>new Date().toISOString()))(),t=a.proposal.edits.find(r=>r.route==="memory");return a.proposal.validationPlan.map(r=>{let s="passed",i="Memory candidate is bounded, scoped, and contains no obvious credential material.";try{if(r.kind==="observed_recovery"){if(!a.proposal.evidence.some(n=>n.kind==="recovery"))throw new Error("Observed-recovery validation requires recorded recovery evidence.");i="Memory proposal is grounded in immutable recovery evidence."}else if(r.kind==="memory"){if(!t||!/^memory\/[a-z0-9][a-z0-9-]{0,119}$/.test(t.target))throw new Error("Memory proposal requires one safe memory/<slug> target.");let n=a.proposal.metadata.expectedMemory;if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Memory proposal requires an expected revision snapshot.");let d=n;if(d.key!==Sf(t.target))throw new Error("Memory proposal expected revision targets a different key.");if(d.revision!==null&&(!Number.isInteger(d.revision)||Number(d.revision)<1))throw new Error("Memory proposal expected revision is invalid.");if(d.contentHash!==null&&typeof d.contentHash!="string")throw new Error("Memory proposal expected content hash is invalid.");if(d.status!==null&&d.status!=="active"&&d.status!=="deleted")throw new Error("Memory proposal expected status is invalid.");if(d.revision===null&&(d.contentHash!==null||d.status!==null))throw new Error("New memory snapshot must not claim existing content or status.");if(d.revision!==null&&(typeof d.contentHash!="string"||d.status===null))throw new Error("Existing memory snapshot requires its content hash and status.");if(t.operation==="delete"&&d.status!=="active")throw new Error("Memory deletion requires an active expected revision.");if(t.operation!=="delete"){if(!t.content?.trim()||t.content.length>24e3)throw new Error("Memory content must contain 1-24,000 characters.");if(/\b(?:api[_-]?key|access[_-]?token|password|secret)\s*[:=]/i.test(t.content))throw new Error("Memory content appears to contain credential material.")}}else s="blocked",i=`Memory validation cannot satisfy ${r.kind}.`}catch(n){s="failed",i=n instanceof Error?n.message:String(n)}return Rr({schemaVersion:"openpond.harnessTargetedValidationReceipt.v1",id:`validation-${a.proposal.id}-${r.id}`,proposal:{id:a.proposal.id,contentHash:a.proposal.contentHash},validationId:r.id,kind:r.kind,status:s,summary:i,evidenceRefs:a.proposal.evidence,createdAt:e,metadata:{externalState:"harness_memory"}})})}l(kf,"validateMemoryProposal");function Sf(a){let e=a.replaceAll("\\","/"),t=/^memory\/([a-z0-9][a-z0-9-]{0,119})$/.exec(e);if(!t)throw new Error(`Invalid Harness memory target: ${a}.`);return t[1]}l(Sf,"memoryKeyFromTarget");async function Bu(a){let e=await a.store.getHarnessWorkspace(a.workspaceId);if(!e)throw new Error(`Harness workspace ${a.workspaceId} does not exist.`);let t=pa(a.storeDir,e.id),r=ue.join(t.root,"source-swap.json"),s=await q.readFile(r,"utf8").then(JSON.parse).catch(d=>{if(d.code==="ENOENT")return null;throw d});if(!s)return"none";let i=await ke({workspaceId:e.id,sourceDir:t.source});if(e.sourceRevision===s.nextSourceRevision&&i.sourceRevision===s.nextSourceRevision)return await q.rm(s.backupSource,{recursive:!0,force:!0}),await q.rm(r,{force:!0}),"completed";let n=await ke({workspaceId:e.id,sourceDir:s.backupSource});if(e.sourceRevision===s.previousSourceRevision&&n.sourceRevision===s.previousSourceRevision)return await fr(t.source,s.backupSource),await q.rm(r,{force:!0}),"restored";throw new Error("Harness source-swap recovery cannot reconcile filesystem and workspace revisions.")}l(Bu,"recoverLocalHarnessSourceSwap");async function qu(a,e){for(let t of e.edits){let r=Wu(a,t.target);if(t.operation==="delete"){await q.rm(r,{force:!1});continue}if(t.content===null)throw new Error(`Refiner edit ${t.id} has no content.`);if(t.operation==="create")await q.mkdir(ue.dirname(r),{recursive:!0}),await q.writeFile(r,t.content,{flag:"wx"});else{let s=await q.lstat(r);if(!s.isFile()||s.isSymbolicLink())throw new Error(`Refiner update target must be a regular file: ${t.target}`);await q.writeFile(r,t.content,{flag:"w"})}}}l(qu,"applyOverlayEdits");function Wu(a,e){let t=ue.resolve(a),r=ue.resolve(t,...e.replaceAll("\\","/").split("/")),s=ue.relative(t,r);if(!s||s.startsWith("..")||ue.isAbsolute(s))throw new Error(`Refiner edit target escapes the Harness source: ${e}`);return r}l(Wu,"containedPath");async function $u(a,e){let t=`${a}.${ma()}.tmp`;await q.writeFile(t,`${JSON.stringify(e,null,2)}
2410
- `,{flag:"wx"}),await q.rename(t,a)}l($u,"writeSwapJournal");async function fr(a,e){await q.rm(a,{recursive:!0,force:!0}),await q.rename(e,a)}l(fr,"restoreSource");var je="desktop-personal",Yu="personal-default";async function UL(a){let e=await a.store.getSelectedHarnessWorkspace({ownerKind:"personal",ownerId:je});if(e&&e.metadata.selectionEligible!==!1)return await Bu({store:a.store,storeDir:a.storeDir,workspaceId:e.id}),vn(a.store,e.id,e.currentChannel.release?.contentHash??null);let t=(await a.store.listHarnessWorkspaces({ownerKind:"personal",ownerId:je})).find(i=>i.metadata.selectionEligible!==!1);if(t)return await a.store.selectHarnessWorkspace({ownerKind:"personal",ownerId:je,workspaceId:t.id,updatedAt:(a.now??(()=>new Date().toISOString()))()}),vn(a.store,t.id,t.currentChannel.release?.contentHash??null);let r=await a.loadProfileState(),s=r.mode==="local"&&r.sourcePath&&!r.error?await wn({store:a.store,storeDir:a.storeDir,id:Yu,ownerId:je,name:r.activeProfile?.trim()||"Personal Harness",profile:r,now:a.now}):await Xu({store:a.store,storeDir:a.storeDir,id:Yu,ownerId:je,name:"Personal Harness",now:a.now});return await a.store.selectHarnessWorkspace({ownerKind:"personal",ownerId:je,workspaceId:s.workspace.id,updatedAt:(a.now??(()=>new Date().toISOString()))()}),s.release}l(UL,"ensureSelectedLocalHarnessWorkspace");async function Vu(a){let e=await a.getSelectedHarnessWorkspace({ownerKind:"personal",ownerId:je});return e?vn(a,e.id,e.currentChannel.release?.contentHash??null):null}l(Vu,"resolveSelectedLocalHarnessRelease");async function vn(a,e,t){if(!t)throw new Error(`Selected Harness workspace ${e} has no current release.`);let r=await a.getHarnessReleaseRecord(t);if(!r||r.workspaceId!==e)throw new Error(`Selected Harness workspace ${e} points to a missing release ${t}.`);return G(r.agentSnapshot,"Selected Agent snapshot"),G(r.harnessRelease,"Selected Harness release"),r}l(vn,"requireCurrentRelease");import{promises as Ju}from"node:fs";import Se from"node:path";async function VL(a,e){if(e){let s=await a.getHarnessReleaseRecord(e.contentHash);if(!s||s.harnessRelease.id!==e.id)throw new Error("The selected immutable Harness release is unavailable.");let i=await a.getHarnessWorkspace(s.workspaceId);if(!i||i.ownerScope.kind!=="personal"||i.ownerScope.id!==je)throw new Error("The selected Harness release is not available to this local owner.");return G(s.agentSnapshot,"Selected Agent snapshot"),G(s.harnessRelease,"Selected Harness release"),Bs({workspace:i,release:s})}let t=await Vu(a);if(!t)return null;let r=await a.getSelectedHarnessWorkspace({ownerKind:"personal",ownerId:je});if(!r||r.id!==t.workspaceId)throw new Error("Selected Harness workspace changed while its release was being admitted.");return Bs({workspace:r,release:t})}l(VL,"loadSelectedLocalHarnessRuntime");async function Bs(a){let{workspace:e,release:t}=a;if(t.workspaceId!==e.id)throw new Error("Harness release does not belong to the requested workspace.");let r=Se.join(t.bundlePath,"source");await Promise.all(t.harnessRelease.files.map(m=>Nf(r,m.path,m.contentHash)));let s=await Promise.all(t.agentSnapshot.instructions.map(async m=>({path:m.path,content:await kn(r,m.path,m.contentHash)}))),i=[],n=new Map;for(let m of t.agentSnapshot.skills){let f=await kn(r,m.path,m.contentHash),h=wa(f);if(!h.name||!h.description||h.messages.length>0)throw new Error(`Released Harness Skill ${m.path} is invalid: ${h.messages.join(" ")||"missing name or description"}`);if(n.has(h.name))throw new Error(`Released Harness has duplicate Skill ${h.name}.`);let T=`${Se.posix.dirname(m.path)}/`,E=t.harnessRelease.files.filter(w=>w.path.startsWith(T)&&w.path!==m.path).map(w=>w.path.slice(T.length)).sort(),g={name:h.name,description:h.description,path:m.path,scope:"profile",enabled:!0,sourcePath:r,charCount:f.length,sourceHash:m.contentHash,validationStatus:"valid",validationMessages:[],resourceFiles:E};i.push(g),n.set(g.name,async()=>{let w=await kn(r,m.path,m.contentHash),y=wa(w);if(!y.name||!y.description||y.messages.length>0)throw new Error(`Released Harness Skill ${m.path} failed validation while loading.`);return{name:y.name,description:y.description,body:y.body,path:m.path,sourceHash:m.contentHash,charCount:w.length,packagePath:Se.join(r,...Se.posix.dirname(m.path).split("/")),resourceFiles:E}})}i.sort((m,f)=>m.name.localeCompare(f.name));let d={profileSourcePath:r,skills:i,readSkill:n.size>0?async m=>{let f=n.get(m);if(!f)throw new Error(`Released Harness Skill not found: ${m}`);return f()}:null},c=s.sort((m,f)=>m.path.localeCompare(f.path)).map(({path:m,content:f})=>[`Active Harness instruction (${m}):`,f.trim()].join(`
2411
- `)).filter(m=>m.trim().length>0),u=[["Harness capability receipt:",JSON.stringify({harnessRelease:{id:t.harnessRelease.id,contentHash:t.harnessRelease.contentHash},agentSnapshot:{id:t.agentSnapshot.id,contentHash:t.agentSnapshot.contentHash},files:t.harnessRelease.files.map(m=>({path:m.path,contentHash:m.contentHash})),skills:t.agentSnapshot.skills.map(m=>m.path),agents:t.agentSnapshot.agents.map(m=>m.path),tools:t.agentSnapshot.toolDeclarations.map(m=>m.name),capabilityRequirements:t.agentSnapshot.capabilityRequirements})].join(`
2412
- `),c.length>0?["Active Harness preflight:","Apply the following released instructions when planning work and immediately before every tool call.","Preflight each call: (1) identify any active instruction that matches the planned operation, (2) inspect the exact tool arguments for a forbidden pattern, and (3) rewrite the call before sending it when a pattern matches. Compliance is required even when the prohibited call might still succeed.",...c].join(`
2413
-
2414
- `):null].filter(m=>!!m?.trim()).join(`
2415
-
2416
- `);return{workspace:e,release:t,instructionContext:u,skillRuntime:d}}l(Bs,"loadLocalHarnessRuntimeFromRelease");async function kn(a,e,t){let r=Se.resolve(a,...e.split("/")),s=Se.relative(Se.resolve(a),r);if(!s||s.startsWith("..")||Se.isAbsolute(s))throw new Error(`Released Harness asset escapes its bundle: ${e}`);let i=await Ju.readFile(r),n=Ce(i);if(n!==t)throw new Error(`Released Harness asset ${e} is ${n}; expected ${t}.`);return new TextDecoder("utf-8",{fatal:!0}).decode(i)}l(kn,"readVerifiedAsset");async function Nf(a,e,t){let r=Se.resolve(a,...e.split("/")),s=Se.relative(Se.resolve(a),r);if(!s||s.startsWith("..")||Se.isAbsolute(s))throw new Error(`Released Harness asset escapes its bundle: ${e}`);let i=Ce(await Ju.readFile(r));if(i!==t)throw new Error(`Released Harness asset ${e} is ${i}; expected ${t}.`)}l(Nf,"verifyAsset");import{randomUUID as If}from"node:crypto";var Sn=o.object({revision:o.number().int().nonnegative(),overlay:_e}).strict(),Of=Sn.extend({proposal:Ie}).strict(),qs=class{constructor(e){this.client=e}client;static{l(this,"HostedHarnessOverlayStorage")}async getHarnessRunOverlay(e){let t=await this.client.request({contractVersion:M,requestId:If(),operation:"harness/overlay/get",params:{runId:e}});return t===null?null:Sn.parse(t).overlay}async putHarnessRunOverlay(e){let t=_e.parse(e.overlay);if(!e.requestId.trim()||t.revision!==(e.expectedRevision===null?0:e.expectedRevision+1))throw new Error("Hosted Harness overlay mutation requires a stable request and next revision.");let r=Sn.parse(await this.client.request({contractVersion:M,requestId:e.requestId,operation:"harness/overlay/put",params:{runId:t.runId,expectedRevision:e.expectedRevision,overlay:t}}));if(r.revision!==t.revision||r.overlay.contentHash!==t.contentHash)throw new Error("Host Harness overlay response changed committed identity.");return r.overlay}async createHarnessRunOverlay(e){if(e.revision!==0||e.status!=="active")throw new Error("A new Harness run overlay must be active at revision 0.");return this.putHarnessRunOverlay({overlay:e,expectedRevision:null,requestId:`harness-overlay:${e.runId}:${e.contentHash}`})}async ensureHarnessRunOverlay(e){let t=await this.getHarnessRunOverlay(e.runId);if(t){if(t.workspace.workspaceId!==e.workspace.id||t.baseHarnessRelease.id!==e.harnessRelease.id||t.baseHarnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("The durable Agent run is already bound to another Harness release.");return t}let r=ht({schemaVersion:"openpond.harnessRunOverlay.v1",id:`overlay-${R({runId:e.runId,harnessRelease:e.harnessRelease}).slice(0,24)}`,runId:e.runId,baseHarnessRelease:e.harnessRelease,workspace:{workspaceId:e.workspace.id,revision:e.workspace.revision,sourceRevision:e.workspace.sourceRevision,channelRevision:e.workspace.currentChannel.revision},revision:0,status:"active",edits:[],createdAt:e.admittedAt,updatedAt:e.admittedAt,metadata:{}});return this.createHarnessRunOverlay(r)}async appendHarnessRunOverlayEditsAtomically(e){return this.transition(e,"append")}async freezeHarnessRunOverlayAtomically(e){return this.transition({...e,edits:[]},"freeze")}async abandonHarnessRunOverlayAtomically(e){return this.transition({...e,edits:[]},"abandon")}async freezeHarnessRunOverlayWithProposalAtomically(e){let t=await this.getHarnessRunOverlay(e.runId);if(!t||t.revision!==e.expectedRevision||t.status!=="active")throw new Error("Hosted Harness overlay revision or status changed.");let r=new Set(t.edits.map(p=>p.id));for(let p of e.edits){if(r.has(p.id))throw new Error(`Harness overlay edit id already exists: ${p.id}.`);r.add(p.id)}let{contentHash:s,...i}=t,n=ht({...i,revision:t.revision+1,status:"frozen",edits:[...t.edits,...e.edits],updatedAt:e.updatedAt}),d=Ie.parse(e.buildProposal(n)),c=Of.parse(await this.client.request({contractVersion:M,requestId:`harness-proposal:${n.runId}:${d.contentHash}`,operation:"harness/overlay/freezeProposal",params:{runId:n.runId,expectedRevision:t.revision,overlay:n,proposal:d}}));if(c.overlay.contentHash!==n.contentHash||c.proposal.contentHash!==d.contentHash)throw new Error("Host Harness proposal response changed committed identity.");return{overlay:c.overlay,proposal:c.proposal}}async transition(e,t){let r=await this.getHarnessRunOverlay(e.runId);if(!r||r.revision!==e.expectedRevision||r.status==="abandoned"||t!=="abandon"&&r.status!=="active")throw new Error("Hosted Harness overlay revision or status changed.");if(t==="append"&&e.edits.length===0)throw new Error("Harness overlay append requires edits.");let s=new Set(r.edits.map(c=>c.id));for(let c of e.edits){if(s.has(c.id))throw new Error(`Harness overlay edit id already exists: ${c.id}.`);s.add(c.id)}let{contentHash:i,...n}=r,d=ht({...n,revision:r.revision+1,status:t==="append"?"active":t==="freeze"?"frozen":"abandoned",edits:[...r.edits,...e.edits],updatedAt:e.updatedAt});return this.putHarnessRunOverlay({overlay:d,expectedRevision:r.revision,requestId:`harness-overlay:${d.runId}:${d.contentHash}`})}};import{randomUUID as bf}from"node:crypto";import{readFile as hr}from"node:fs/promises";import Ht from"node:path";var Lf=o.object({workspace:me,release:o.object({id:o.string().min(1),contentHash:o.string().regex(/^[a-f0-9]{64}$/),sourceRevision:o.string().min(1),assetsPath:o.string().min(1)}).strict()}).strict();async function Tr(a,e=null){let t=await a.request({contractVersion:M,requestId:bf(),operation:"harness/get",params:{reference:e}});if(t===null)return null;let r=Lf.parse(t);if(!Ht.isAbsolute(r.release.assetsPath))throw new Error("Hosted Harness assets path must be absolute.");let[s,i]=await Promise.all([hr(Ht.join(r.release.assetsPath,"agent-snapshot.json"),"utf8"),hr(Ht.join(r.release.assetsPath,"harness-release.json"),"utf8")]),n=Fe.parse({schemaVersion:"openpond.localHarnessReleaseRecord.v1",workspaceId:r.workspace.id,sourceRevision:r.release.sourceRevision,agentSnapshot:qe.parse(JSON.parse(s)),harnessRelease:We.parse(JSON.parse(i)),bundlePath:r.release.assetsPath,createdAt:new Date().toISOString()});if(n.harnessRelease.id!==r.release.id||n.harnessRelease.contentHash!==r.release.contentHash||(e!==null?e.id!==r.release.id||e.contentHash!==r.release.contentHash:r.workspace.currentChannel.release?.contentHash!==r.release.contentHash))throw new Error("Hosted Harness release differs from its bound workspace.");return Bs({workspace:r.workspace,release:n})}l(Tr,"loadHostedHarnessRuntime");async function mA(a,e){let t=e.profileComponentBinding,r=e.profileWorkflowBinding;if(t){if(r||e.currentProfile?.profileId!==t.profileId)throw new Error("Profile component binding differs from the session Profile reference.");let i=await Ku(a,t.harnessRelease);if(zu(i,t.profileId,t.sourceRevision,e.currentProfile?.repositoryId),t.target.kind==="profile")return i;if(t.target.kind==="skill"){let p=t.target.skillPath;if(!i.release.agentSnapshot.skills.some(m=>m.path===p))throw new Error("Bound Profile Skill is unavailable in its released source.");let u=await hr(Ht.join(i.release.bundlePath,"source",p),"utf8");return{...i,instructionContext:[i.instructionContext,`Released Profile Skill (${p}):
2417
- ${u}`].join(`
2418
-
2419
- `)}}let n=await Gu(i),d=t.target.actionId,c=n.actions.find(p=>p.id===d);if(!c)throw new Error("Bound Profile Agent action is unavailable in its released source.");return{...i,workflowAction:c}}if(r){if(e.currentProfile?.profileId!==r.profileId)throw new Error("Profile workflow binding differs from the session Profile reference.");let i=await Ku(a,r.harnessRelease);zu(i,r.profileId,r.sourceRevision,e.currentProfile?.repositoryId);let n=await Gu(i),d=$n({binding:r,harnessRelease:i.release.harnessRelease,catalog:n.catalog,catalogHash:n.catalogHash}),c=d.invocation.kind==="agent_action"?d.invocation.actionId:null,p=c?n.actions.find(u=>u.id===c):void 0;if(c&&!p)throw new Error(`Bound Profile action ${c} is missing from its release.`);return{...i,workflow:d,...p?{workflowAction:p}:{}}}let s=await new qs(a).getHarnessRunOverlay(e.id);return Tr(a,s?.baseHarnessRelease??null)}l(mA,"loadHostedHarnessRuntimeForSession");async function Ku(a,e){let t=await Tr(a,e);if(!t)throw new Error("The bound Profile Harness release is unavailable.");return t}l(Ku,"requireRelease");function zu(a,e,t,r){let s=a.release.harnessRelease.metadata.profile;if(!s||typeof s!="object"||s.id!==e||s.sourceRevision!==t||s.repositoryId!==r)throw new Error("Bound Profile source differs from its released Harness source.")}l(zu,"assertProfileProvenance");async function Gu(a){let e=Ht.join(a.release.bundlePath,"source"),[t,r]=await Promise.all([hr(Ht.join(e,"workflows","catalog.json")),hr(Ht.join(e,"workflows","actions.json"))]);return kr({agentSnapshot:a.release.agentSnapshot,harnessRelease:a.release.harnessRelease,catalogBytes:t,actionBytes:r})}l(Gu,"loadHostedProfileCatalog");function EA(a){return Af({runtime:cc(a.ports),close:a.close})}l(EA,"createAppServer");function Af(a){let e=!1;return{runtime:a.runtime,close:l(async()=>{e||(e=!0,await a.close?.())},"close")}}l(Af,"attachAppServer");async function _A(a){let e=typeof a.appServer=="function"?null:a.appServer;try{await dc({host:e?.runtime??(async()=>(e=await a.appServer(),e.runtime)),readable:a.readable,writable:a.writable,hostStorageClient:a.hostStorageClient})}finally{await e?.close()}}l(_A,"runAppServerJsonl");import{randomBytes as Pf}from"node:crypto";function vA(){return On()}l(vA,"appDataDir");function kA(a){return Ne(a).config}l(kA,"providersConfigPath");function SA(a){return Ne(a).credentials}l(SA,"providerSecretsConfigPath");function NA(a){return Ne(a).key}l(NA,"providerSecretsKeyPath");async function IA(a){let e=Ne(a).token;return _r(e,async()=>{let t=(await bn(e))?.trim(),r=process.env.OPENPOND_APP_TOKEN||t||Pf(32).toString("base64url");return r!==t&&await ft(e,r),{token:r,tokenFile:e}})}l(IA,"ensureCapabilityToken");import Be from"node:path";import{readFile as Qu}from"node:fs/promises";var Zu=o.object({profileId:o.string().min(1),sourceRevision:o.string().min(1),repositoryId:o.string().min(1),harnessRelease:o.object({id:o.string().min(1),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),workspaceId:o.string().min(1),assetsPath:o.string().min(1).refine(Be.isAbsolute)}).strict();async function DA(a,e){let t=Zu.parse(e),r=await Tr(a,t.harnessRelease);if(!r||r.workspace.id!==t.workspaceId||Be.resolve(r.release.bundlePath)!==Be.resolve(t.assetsPath)||r.release.sourceRevision!==t.sourceRevision)throw new Error("Hosted Profile release changed after admission.");let s=r.release.harnessRelease.metadata.profile;if(!s||typeof s!="object"||s.id!==t.profileId||s.sourceRevision!==t.sourceRevision||s.repositoryId!==t.repositoryId)throw new Error("Hosted Profile provenance differs from admitted release.");let i=Be.join(r.release.bundlePath,"source"),n=bd.parse(await Nd({repoPath:i,profileId:t.profileId}));if(n.error||!n.sourcePath||n.activeProfile!==t.profileId||!Be.resolve(n.sourcePath).startsWith(`${Be.resolve(i)}${Be.sep}`))throw new Error("Hosted Profile source could not be loaded from its release.");let d={source:"openpond_git",repositoryId:t.repositoryId,profileId:t.profileId},c=Ld.parse({lastUsed:d,profiles:[{ref:d,name:t.profileId,repoPath:i,sourcePath:n.sourcePath,state:n}]});return{profile:n,profileLibrary:c}}l(DA,"loadHostedProfileStateAndLibrary");async function XA(a,e){let t=Zu.parse(e),r=await Tr(a,t.harnessRelease);if(!r||r.workspace.id!==t.workspaceId)throw new Error("Hosted Profile workflow release is unavailable.");let s=r.release.harnessRelease.metadata.profile;if(s?.id!==t.profileId||s.sourceRevision!==t.sourceRevision||s.repositoryId!==t.repositoryId)throw new Error("Hosted Profile workflow provenance changed.");let i=t.harnessRelease,n={source:"openpond_git",repositoryId:t.repositoryId,profileId:t.profileId};if(!r.release.harnessRelease.files.some(p=>p.path==="workflows/catalog.json"))return{profileRef:n,sourceRevision:t.sourceRevision,harnessRelease:i,workflows:[]};let d=Be.join(r.release.bundlePath,"source","workflows"),c=kr({agentSnapshot:r.release.agentSnapshot,harnessRelease:r.release.harnessRelease,catalogBytes:await Qu(Be.join(d,"catalog.json")),actionBytes:await Qu(Be.join(d,"actions.json"))});return{profileRef:n,sourceRevision:t.sourceRevision,harnessRelease:i,workflows:c.catalog.workflows.map(p=>({workflow:p,binding:{schemaVersion:"openpond.profileWorkflowBinding.v1",profileId:t.profileId,sourceRevision:t.sourceRevision,harnessRelease:i,catalogHash:c.catalogHash,workflowId:p.id}}))}}l(XA,"listHostedProfileWorkflows");export{wp as a,a_ as b,l_ as c,R_ as d,H_ as e,q_ as f,yp as g,vp as h,Sp as i,Q_ as j,Z_ as k,eg as l,Pc as m,Cc as n,Df as o,Xf as p,Uf as q,Zt as r,Bf as s,qf as t,Wf as u,lp as v,vh as w,Qr as x,Jf as y,op as z,M as A,ph as B,oc as C,_p as D,$h as E,Yh as F,zh as G,Gh as H,lc as I,uc as J,Vw as K,ds as L,Ja as M,ne as N,$g as O,jc as P,Fi as Q,ls as R,zc as S,Gc as T,Qp as U,le as V,Zp as W,fl as X,ny as Y,oy as Z,dy as _,cy as $,ly as aa,uy as ba,py as ca,my as da,fy as ea,hy as fa,Ty as ga,wl as ha,_m as ia,ok as ja,dk as ka,ck as la,Xe as ma,jl as na,na as oa,$l as pa,Vl as qa,ar as ra,Om as sa,sr as ta,iN as ua,Pt as va,Ue as wa,pu as xa,ca as ya,ua as za,Nu as Aa,Hu as Ba,pa as Ca,_L as Da,gL as Ea,wL as Fa,AL as Ga,PL as Ha,xL as Ia,je as Ja,UL as Ka,Vu as La,VL as Ma,Bs as Na,qs as Oa,Tr as Pa,mA as Qa,EA as Ra,_A as Sa,vA as Ta,kA as Ua,SA as Va,NA as Wa,IA as Xa,Zu as Ya,DA as Za,XA as _a};