openpond 0.2.40 → 0.2.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-server.d.ts +23 -1
- package/dist/app-server.js +1 -1
- package/dist/chunks/actions-command-6EMO4BIK.js +2 -0
- package/dist/chunks/{app-layer-W2M7SM2L.js → app-layer-ETI5QXQ3.js} +1 -1
- package/dist/chunks/app-server-runtime-CJ7SJTTF.js +2 -0
- package/dist/chunks/apps-LH5AJCUI.js +2 -0
- package/dist/chunks/{chunk-FFTVDR3E.js → chunk-2VTXKZNK.js} +132 -132
- package/dist/chunks/{chunk-ALYT2HWV.js → chunk-2Z6H32OC.js} +1 -1
- package/dist/chunks/chunk-3CKJETWW.js +2 -0
- package/dist/chunks/chunk-4F2Q4CFS.js +4 -0
- package/dist/chunks/{chunk-3HQEEZPO.js → chunk-65BW2QXY.js} +1 -1
- package/dist/chunks/{chunk-J4S7AVGF.js → chunk-6UGTLC7Z.js} +1 -1
- package/dist/chunks/chunk-76YP4FDQ.js +3 -0
- package/dist/chunks/{chunk-YHBIGFFA.js → chunk-AANEPCEZ.js} +1 -1
- package/dist/chunks/chunk-ALZRXBEC.js +33 -0
- package/dist/chunks/chunk-ANCZVBMI.js +42 -0
- package/dist/chunks/chunk-AT6XYNQ5.js +2 -0
- package/dist/chunks/{chunk-IYWNO4RB.js → chunk-AUOMUBLE.js} +2 -2
- package/dist/chunks/{chunk-4QURHV3Q.js → chunk-BAQ3DWH2.js} +1 -1
- package/dist/chunks/chunk-BJSXEGWG.js +2 -0
- package/dist/chunks/chunk-DXAZUJPA.js +2 -0
- package/dist/chunks/{chunk-H7YH35JO.js → chunk-EEJ3HL6O.js} +1 -1
- package/dist/chunks/chunk-GC4OCTP6.js +2 -0
- package/dist/chunks/chunk-JYM3O4G7.js +5 -0
- package/dist/chunks/chunk-KCENW4ME.js +2 -0
- package/dist/chunks/{chunk-T7Y5OYO2.js → chunk-KIGN4FI6.js} +1 -1
- package/dist/chunks/{chunk-FUFIZ37W.js → chunk-LRGLV6JX.js} +1 -1
- package/dist/chunks/chunk-MOMDY22U.js +2 -0
- package/dist/chunks/chunk-MTJNKRXL.js +22 -0
- package/dist/chunks/{chunk-JARGGWF5.js → chunk-NT2UKDF7.js} +1 -1
- package/dist/chunks/chunk-OUN6VQDO.js +5 -0
- package/dist/chunks/{chunk-3UQU3KOS.js → chunk-QZ4KTU65.js} +1 -1
- package/dist/chunks/chunk-R6YJY7F2.js +3 -0
- package/dist/chunks/chunk-S2MLTFZF.js +2 -0
- package/dist/chunks/chunk-SUAT5DR4.js +9 -0
- package/dist/chunks/{chunk-ELUCM7CG.js → chunk-TPMXLA5Y.js} +7 -7
- package/dist/chunks/{chunk-TU5ITNMX.js → chunk-TPOW52DO.js} +3 -3
- package/dist/chunks/chunk-V62BHD5G.js +2 -0
- package/dist/chunks/{chunk-JIG7KQOX.js → chunk-VI3ZF54E.js} +2 -2
- package/dist/chunks/{chunk-ZCFX6HQO.js → chunk-VQG25QBJ.js} +1 -1
- package/dist/chunks/{chunk-ASRSYRE3.js → chunk-VTWY3U4M.js} +1 -1
- package/dist/chunks/chunk-XJAK6DDB.js +5 -0
- package/dist/chunks/chunk-Z2BYC6TP.js +2 -0
- package/dist/chunks/chunk-Z7VAZVC5.js +578 -0
- package/dist/chunks/{chunk-562Q5UVS.js → chunk-ZG7QX66E.js} +1 -1
- package/dist/chunks/{chunk-WWCU4ETR.js → chunk-ZLQQUZH7.js} +1 -1
- package/dist/chunks/{chunk-3QXPXBVG.js → chunk-ZQWXPDCB.js} +1 -1
- package/dist/chunks/cli-FM3DESGO.js +2 -0
- package/dist/chunks/configuration-command-N2FD7DWB.js +2 -0
- package/dist/chunks/core-commands-D2MJ7QFZ.js +2 -0
- package/dist/chunks/datasets-UYIZCMNZ.js +13 -0
- package/dist/chunks/desktop-test-IWDHFDSZ.js +3 -0
- package/dist/chunks/dist-ELWB75PL.js +2 -0
- package/dist/chunks/{dist-GKCGK44T.js → dist-JPRXSUXC.js} +1 -1
- package/dist/chunks/experiments-Q6TAHJV3.js +2 -0
- package/dist/chunks/{extension-3P3JNRYN.js → extension-7GYFAHRP.js} +1 -1
- package/dist/chunks/{help-23QDOMG7.js → help-MD7Z72QS.js} +1 -1
- package/dist/chunks/hosted-harness-runtime-LMYM7PYZ.js +2 -0
- package/dist/chunks/hosted-profile-compiler-H2J5HFT3.js +2 -0
- package/dist/chunks/hosted-profile-evaluation-control-VV2NXFBE.js +2 -0
- package/dist/chunks/hosted-profile-evaluation-inspection-XMPRKON6.js +3 -0
- package/dist/chunks/hosted-profile-evaluation-preparation-ZZ3MZJDR.js +3 -0
- package/dist/chunks/opchat-URWW53CK.js +3 -0
- package/dist/chunks/organizations-BPBJV7LZ.js +2 -0
- package/dist/chunks/{profile-NJMKPS6Z.js → profile-BZDCYKGL.js} +1 -1
- package/dist/chunks/project-agent-U6YNYPHS.js +2 -0
- package/dist/chunks/sandbox-command-TTLFWUXV.js +2 -0
- package/dist/chunks/{sandbox-template-RCDR2FXX.js → sandbox-template-ZYXK4QCI.js} +1 -1
- package/dist/chunks/{src-H7VE4J62.js → src-5Z35O6L7.js} +1 -1
- package/dist/chunks/src-NABQMSR3.js +325 -0
- package/dist/chunks/{teams-bot-KCKZTM3N.js → teams-bot-WXGP3PA6.js} +1 -1
- package/dist/chunks/{workspaces-J5QQUR53.js → workspaces-7WY3ZVQW.js} +1 -1
- package/dist/cli.js +3 -3
- package/dist/index.js +1 -1
- package/dist/web/assets/App-BpYDvJ6x.js +226 -0
- package/dist/web/assets/{AppDialog-CmPsGOzE.js → AppDialog-DMymIOcU.js} +1 -1
- package/dist/web/assets/{AppTerminalPanel-0_Ewf4wJ.js → AppTerminalPanel-CFsUD-di.js} +2 -2
- package/dist/web/assets/{AppsView-Ddn9R2I-.js → AppsView-CUrRKOiz.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-j2Yyiaz-.js → BrowserSidebar-C5psWtoF.js} +1 -1
- package/dist/web/assets/{CartesianChart-BWAkc0mY.js → CartesianChart-DVGs4fGn.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-SVc7oX8N.js → CollaborationTabs-D6eqNw88.js} +1 -1
- package/dist/web/assets/{CommandMenu-CcX5ypdX.js → CommandMenu--GRjuf3j.js} +1 -1
- package/dist/web/assets/{CommunityView-B7W1C8KG.js → CommunityView-CHGceVA_.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-BBKdrbNP.js → ComposerCreateImproveStrip-D08PAaxI.js} +1 -1
- package/dist/web/assets/{GetStartedView-BXuTBT4U.js → GetStartedView-BPZcWzsG.js} +1 -1
- package/dist/web/assets/HostedModelLearningReview-DiS-n3XW.js +1 -0
- package/dist/web/assets/HostedModelLearningSettings-BmEMKcoy.js +1 -0
- package/dist/web/assets/{LabModelVersionDetailPage-CctGBUae.js → LabModelVersionDetailPage-CX5pOLl2.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-Cl8Sdiqc.js → LabSkillSidebar-C4vAz_0b.js} +1 -1
- package/dist/web/assets/LabsRoute-BL04wKhE.js +52 -0
- package/dist/web/assets/LabsRoute-Cq9XLVDP.css +1 -0
- package/dist/web/assets/{MainChatThread-BaEeNsrh.js → MainChatThread-BSwHDALr.js} +2 -2
- package/dist/web/assets/{MainPane-Dw90VsN-.js → MainPane-EwtIf5_E.js} +14 -14
- package/dist/web/assets/{MarkdownText-CGGUFrZe.js → MarkdownText-Bj9uRWtM.js} +1 -1
- package/dist/web/assets/{NativeSkillSidebar-2mgh6WV4.js → NativeSkillSidebar-U7PHw5DO.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-DMTe3jS9.js → NewExperienceSwitcher-DneuamYK.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-D6pvuCoo.js → NewProjectDialog-CrpXYCYV.js} +1 -1
- package/dist/web/assets/{OutputsPage-DMeIKxzN.js → OutputsPage-C1SPqz45.js} +1 -1
- package/dist/web/assets/{ProjectsPage-V5oXwB-5.js → ProjectsPage-CCW3mGQb.js} +1 -1
- package/dist/web/assets/{RightChatPanelStack-B0y2XNdm.js → RightChatPanelStack-D7ECzLfp.js} +1 -1
- package/dist/web/assets/{RightSidebarHomePanel-BksZR71F.js → RightSidebarHomePanel-B-4r-yLc.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-BRcVebWV.js → ScheduledWorkPage-XjmcT64Z.js} +1 -1
- package/dist/web/assets/{SettingsView-CtI170q1.js → SettingsView-BEBpD7W0.js} +3 -3
- package/dist/web/assets/{TeamChatView-DWGM8eXj.js → TeamChatView-n9GnPY4F.js} +2 -2
- package/dist/web/assets/{TerminalOverlay-DLSmAkbQ.js → TerminalOverlay-CNaaMo7W.js} +1 -1
- package/dist/web/assets/{TrainingCreationPanel-C6e6zhC8.js → TrainingCreationPanel-CEEXMmC5.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-Q1GXOAlQ.js → TrainingDraftPanel-CwyoL_Dy.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-UET2vS1c.js → UsageSettingsSection-BNjgosYd.js} +1 -1
- package/dist/web/assets/{WorkSidebarPanel-DMsXId2s.js → WorkSidebarPanel-BatJltaq.js} +1 -1
- package/dist/web/assets/{WorkspaceDiffPanel-B_eZE-bq.js → WorkspaceDiffPanel-Cbr7qcqm.js} +3 -3
- package/dist/web/assets/{WorkspaceEnvironmentMenu-C848cDBP.js → WorkspaceEnvironmentMenu-DYu-PXRv.js} +1 -1
- package/dist/web/assets/{WorkspaceGitDialogs-CSnIC26s.js → WorkspaceGitDialogs-BoamHtgk.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-C5dvv9s_.js → WorkspaceMonacoEditor-yg83VXk5.js} +3 -3
- package/dist/web/assets/{arrow-up-right-CsvQameJ.js → arrow-up-right-CN9lcbsD.js} +1 -1
- package/dist/web/assets/{clipboard-fZsv7_ot.js → clipboard-DfLDGpSz.js} +1 -1
- package/dist/web/assets/{cloud-upload-CUXNsLn2.js → cloud-upload-hk4EBTu-.js} +1 -1
- package/dist/web/assets/{cssMode-1tbsSShK.js → cssMode-DkhTpCaH.js} +1 -1
- package/dist/web/assets/{folder-open-Da8t5AtB.js → folder-open-BmhusYOx.js} +1 -1
- package/dist/web/assets/{folder-plus-X7B8dzc3.js → folder-plus-Bedc_RqV.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-CajQIfK5.js → git-commit-horizontal-D2Zvz4i7.js} +1 -1
- package/dist/web/assets/{htmlMode-qapgENKW.js → htmlMode-Bf3_KJ2b.js} +1 -1
- package/dist/web/assets/{index-DUQK09vA.js → index-CpTHPmvd.js} +2 -2
- package/dist/web/assets/index-DUIWDN8o.css +1 -0
- package/dist/web/assets/{info-BYfs9_PT.js → info-CayXQYUk.js} +1 -1
- package/dist/web/assets/{jsonMode-DYPkWxLK.js → jsonMode-_Ywm0ZC4.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-Cbcp__rz.js → lspLanguageFeatures-Caw_TPYu.js} +1 -1
- package/dist/web/assets/{minimize-2-Dp7tWjno.js → minimize-2-sPQtjkx8.js} +1 -1
- package/dist/web/assets/{monaco.contribution-DApKEq_e.js → monaco.contribution-Bqi-s2-g.js} +2 -2
- package/dist/web/assets/{monaco.contribution-COP3_DCK.js → monaco.contribution-CngZuH1Z.js} +2 -2
- package/dist/web/assets/{monaco.contribution-cIq6c5M4.js → monaco.contribution-DKY5M77J.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CcL6YtdZ.js → monaco.contribution-DmEqb8O2.js} +2 -2
- package/dist/web/assets/{monitor-nP1D5S_1.js → monitor-BuaCDSIZ.js} +1 -1
- package/dist/web/assets/{python-DXYfRGSs.js → python-D6SoZF70.js} +1 -1
- package/dist/web/assets/{refresh-cw-D_9Q01ox.js → refresh-cw-DmpWkVF6.js} +1 -1
- package/dist/web/assets/{save-BxG7d5Nm.js → save-Di43Sc13.js} +1 -1
- package/dist/web/assets/{square--Ua9DQPL.js → square-Cui64whj.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-CqAtkn5E.js → toggleHighContrast-e8XiQRTr.js} +1 -1
- package/dist/web/assets/{tsMode-BCdfa4wT.js → tsMode-Cvh0MpFm.js} +1 -1
- package/dist/web/assets/{upload-BkYSJcbc.js → upload-Dphgk6dy.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-CGlPbPZr.js → useLocalAgentSchedules-CDN8WQld.js} +1 -1
- package/dist/web/assets/{useSessionTurnCache-DtNQyWXl.js → useSessionTurnCache-Bvcc_al6.js} +1 -1
- package/dist/web/assets/{wifi-off-DF8YmlRa.js → wifi-off-CIWXrn3o.js} +1 -1
- package/dist/web/assets/{workers-BUHY0ojx.js → workers-XU4YZxHD.js} +1 -1
- package/dist/web/assets/{yaml-CtBzXx8s.js → yaml-BZ0UGaZH.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunks/actions-command-X2ERGYMA.js +0 -2
- package/dist/chunks/app-server-runtime-IO3FDF37.js +0 -2
- package/dist/chunks/apps-IBVU56HR.js +0 -2
- package/dist/chunks/chunk-5OA57RW4.js +0 -2
- package/dist/chunks/chunk-62H5KUOS.js +0 -12
- package/dist/chunks/chunk-AOBTILU5.js +0 -2
- package/dist/chunks/chunk-CYZOPDTW.js +0 -2
- package/dist/chunks/chunk-DDHUSA3I.js +0 -2
- package/dist/chunks/chunk-DWY6YCBI.js +0 -578
- package/dist/chunks/chunk-GTG2ODOV.js +0 -5
- package/dist/chunks/chunk-PKBU37CH.js +0 -5
- package/dist/chunks/chunk-QCLVO56H.js +0 -4
- package/dist/chunks/chunk-QK2GLRCY.js +0 -53
- package/dist/chunks/chunk-SHCKK3SU.js +0 -2
- package/dist/chunks/chunk-XRI3HLZ3.js +0 -42
- package/dist/chunks/chunk-ZCPIVNCS.js +0 -2
- package/dist/chunks/cli-QXO6OHZJ.js +0 -2
- package/dist/chunks/configuration-command-6VJUXQNZ.js +0 -2
- package/dist/chunks/core-commands-J6OY62PE.js +0 -2
- package/dist/chunks/datasets-W24QTQL7.js +0 -13
- package/dist/chunks/desktop-test-SHS2VUYP.js +0 -3
- package/dist/chunks/dist-4OUZANXR.js +0 -2
- package/dist/chunks/experiments-O7WTSICN.js +0 -2
- package/dist/chunks/hosted-harness-runtime-U7JV7Z5T.js +0 -2
- package/dist/chunks/hosted-profile-compiler-ZCVMUTFA.js +0 -3
- package/dist/chunks/opchat-OI2YFNNY.js +0 -3
- package/dist/chunks/organizations-LB5QXKWT.js +0 -2
- package/dist/chunks/project-agent-SZLUVG3U.js +0 -2
- package/dist/chunks/sandbox-command-FQBOFZGM.js +0 -2
- package/dist/chunks/src-JVSP6UKT.js +0 -325
- package/dist/web/assets/App-BL1D_PLh.js +0 -226
- package/dist/web/assets/HostedModelLearningReview-C3oAdyoF.js +0 -1
- package/dist/web/assets/HostedModelLearningSettings-9e5z5eRf.js +0 -1
- package/dist/web/assets/LabsRoute-C1FWCoYb.css +0 -1
- package/dist/web/assets/LabsRoute-di9O0XV1.js +0 -32
- package/dist/web/assets/index-lqk3IxE0.css +0 -1
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{b as Re,c as Ie,e as X,j as Ee,k as ke,l as Oe,m as Ae}from"./chunk-5OA57RW4.js";import{i as Pe,o as xe,q as Ce}from"./chunk-ASRSYRE3.js";import{E as v,I as Te}from"./chunk-PKBU37CH.js";import{a as K,b as Se,h as ye}from"./chunk-H7YH35JO.js";import{Cd as O,Fd as j,Gd as re,I as k,J as te,M as N,N as H,a as F}from"./chunk-JIG7KQOX.js";import{$a as L,Ra as me,Sa as ge,Ua as Y,X as oe,Xa as he,Y as ie,_a as fe,db as ve,fb as we,gb as be,ja as ae,la as ue,ma as le,na as ce,oa as pe,qa as de,v as _}from"./chunk-QK2GLRCY.js";import{b as o}from"./chunk-ES2ISFJC.js";import{c as ne,d as q,f as se,h as M}from"./chunk-H7IWJN7L.js";import{a as u}from"./chunk-FTQLQJQV.js";import{promises as Q}from"node:fs";import it from"node:os";import at from"node:path";import{createServer as ut}from"node:http";import{randomBytes as lt}from"node:crypto";var Qe=o.discriminatedUnion("op",[o.strictObject({op:o.literal("set"),path:o.array(o.string().min(1)).min(1),value:o.unknown()}),o.strictObject({op:o.literal("unset"),path:o.array(o.string().min(1)).min(1)})]),et=o.discriminatedUnion("action",[o.strictObject({action:o.literal("patch"),expectedRevision:o.string(),operations:o.array(Qe).max(100)}),o.strictObject({action:o.literal("replace"),expectedRevision:o.string(),text:o.string().max(1048576)}),o.strictObject({action:o.literal("validate"),text:o.string().max(1048576)}),o.strictObject({action:o.literal("restore"),expectedRevision:o.string(),revision:o.string()}),o.strictObject({action:o.literal("trust"),root:o.string(),accountId:o.string(),trusted:o.boolean()}),o.strictObject({action:o.literal("client-state"),owner:o.string(),patch:ve,importOnly:o.boolean().optional()})]);function _e(n){let e=null;async function t(s,i){let a=M(n).config,l=null,c=null,p=null;try{l=await ie(a),p=await L(n,{projectRoot:s,accountId:i}),s||(e=p)}catch(b){c=q(b,a)}let h=p??(s?null:e);return{path:a,text:l,rawRevision:oe(l),issue:c,effective:h,usingLastValid:!p&&!!h,applies:"next_turn",recoverableRevisions:await ue(n),clientState:c?null:await we(n)}}u(t,"status");async function r(s){let i=et.parse(s);return i.action==="validate"?{valid:!0,document:ae(i.text,M(n).config)}:(i.action==="patch"&&await de(n,i.expectedRevision,i.operations),i.action==="replace"&&await le(n,i.expectedRevision,i.text),i.action==="restore"&&await ce(n,i.revision,i.expectedRevision),i.action==="trust"&&await fe(n,i.root,i.accountId,i.trusted),i.action==="client-state"?be(n,i.owner,i.patch,i.importOnly):t())}return u(r,"mutate"),{status:t,mutate:r,schema:pe}}u(_e,"createConfigurationPayloads");import{Buffer as He}from"node:buffer";var V={"Access-Control-Allow-Headers":"authorization, content-type, x-openpond-team-id","Access-Control-Allow-Methods":"GET, POST, PUT, PATCH, DELETE, OPTIONS"},tt=25*1024*1024,B=class extends Error{constructor(t,r,s){super(s);this.status=t;this.code=r;this.name="HttpBodyError"}status;code;static{u(this,"HttpBodyError")}};function Ue(n,e,t={}){for(let[s,i]of Object.entries(V))e.setHeader(s,i);let r=qe(n.headers.origin);return r?(e.setHeader("Vary",ot(e.getHeader("Vary"))),rt(r,t)?(e.setHeader("Access-Control-Allow-Origin",r),{allowed:!0,origin:r}):{allowed:!1,origin:r}):{allowed:!0,origin:null}}u(Ue,"applyCorsHeaders");function rt(n,e={}){if(n==="null")return!0;let t=Me(n);return t?st(t)?!0:new Set((e.allowedOrigins??[]).map(s=>s?Me(s):null).filter(s=>!!s)).has(t):!1}u(rt,"isAllowedCorsOrigin");function I(n,e,t){n.writeHead(e,{"Content-Type":"application/json",...V}),n.end(JSON.stringify(t))}u(I,"sendJson");function Ft(n,e,t){n.writeHead(e,{"Content-Type":"text/plain; charset=utf-8",...V}),n.end(t)}u(Ft,"sendText");function jt(n,e,t,r){n.writeHead(e,{"Content-Type":r,"Content-Length":String(t.byteLength),"Cache-Control":"no-store","X-Content-Type-Options":"nosniff",...V}),n.end(t)}u(jt,"sendBinary");async function Z(n,e={}){let t=e.maxBytes??tt,r=qe(n.headers["content-type"]),s=[],i=0;for await(let l of n){let c=He.from(l);if(i+=c.byteLength,i>t)throw new B(413,"request_body_too_large",`JSON request body exceeds ${t} bytes.`);s.push(c)}let a=He.concat(s).toString("utf8").trim();if(!a)return{};if(!nt(r))throw new B(415,"unsupported_media_type","JSON request body requires Content-Type: application/json.");try{return JSON.parse(a)}catch{throw new B(400,"invalid_json","Request body is not valid JSON.")}}u(Z,"readJson");function Ne(n,e,t){let r=n.headers.authorization;return(typeof r=="string"&&r.startsWith("Bearer ")?r.slice(7):null)===t}u(Ne,"hasAuth");function qe(n){return Array.isArray(n)?n[0]??null:n??null}u(qe,"headerValue");function nt(n){if(!n)return!1;let e=n.split(";")[0]?.trim().toLowerCase();return e==="application/json"||!!e?.endsWith("+json")}u(nt,"isJsonContentType");function Me(n){try{let e=new URL(n);return e.protocol!=="http:"&&e.protocol!=="https:"?null:e.origin}catch{return null}}u(Me,"normalizeOrigin");function st(n){let e=new URL(n);return e.hostname==="localhost"||e.hostname==="127.0.0.1"||e.hostname==="::1"||e.hostname==="[::1]"}u(st,"isLoopbackOrigin");function ot(n){let t=(Array.isArray(n)?n.join(", "):n?String(n):"").split(",").map(r=>r.trim()).filter(Boolean);return t.some(r=>r.toLowerCase()==="origin")||t.push("Origin"),t.join(", ")}u(ot,"appendVaryOrigin");function Be(n){return`<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>OpenPond recovery</title>
|
|
3
|
-
<style nonce="${n}">body{font:16px system-ui;background:#171819;color:#eee;max-width:850px;margin:6vh auto;padding:24px}textarea{box-sizing:border-box;width:100%;min-height:280px;background:#222;color:#eee;padding:14px;border:1px solid #777;border-radius:8px;font:14px monospace}button,input,select{font:inherit;margin:6px;padding:8px}pre{white-space:pre-wrap}code{overflow-wrap:anywhere}button{cursor:pointer}p{line-height:1.5}</style>
|
|
4
|
-
<h1>OpenPond needs a storage repair</h1><p id="issue" role="alert">Loading recovery details\u2026</p><p><code id="file"></code></p>
|
|
5
|
-
<p id="action"></p><p>Migration backups and the source installation remain available. Execution services are stopped while recovery is open.</p>
|
|
6
|
-
<details id="editor"><summary>Edit configuration</summary><textarea id="text" aria-label="Configuration TOML" spellcheck="false"></textarea><button id="save">Validate and save</button><button id="reload">Reload file</button><select id="revisions" aria-label="Restore a verified configuration revision"><option value="">Restore a verified revision\u2026</option></select></details>
|
|
7
|
-
<details><summary>Migration sources and diagnostics</summary><pre id="migration"></pre><label>Previous app home <input id="appHome"></label><label>Previous account config <input id="configSource"></label><label>Configuration conflict choices (JSON from the preview) <textarea id="resolutions" aria-label="Migration conflict choices" spellcheck="false" placeholder='[{"path":["chat","steer_active_responses"],"choice":"existing"}]'></textarea></label><button id="preview">Preview migration</button><button id="migrate">Use these sources</button><button id="restart">Restart failed preparation</button><button id="diagnostics">Export diagnostics</button></details>
|
|
8
|
-
<button id="retry">Retry startup</button><p id="message" role="status"></p>
|
|
9
|
-
<script nonce="${n}">
|
|
10
|
-
let token='',state=null,editing=false,revision=null;
|
|
11
|
-
const el=id=>document.getElementById(id);
|
|
12
|
-
async function request(route,body){const r=await fetch(route,{method:body?'POST':'GET',headers:{'Content-Type':'application/json',Authorization:'Bearer '+token},body:body?JSON.stringify(body):undefined});const v=await r.json();if(!r.ok)throw Error(v.error||'Recovery request failed');return v;}
|
|
13
|
-
function message(error){el('message').textContent=error instanceof Error?error.message:String(error);}
|
|
14
|
-
async function load(){state=await request('/v1/recovery');el('issue').textContent=state.issue.message;el('action').textContent=state.issue.action;el('file').textContent=state.issue.path;el('migration').textContent=JSON.stringify(state.migration,null,2);if(!editing){el('text').value=state.config.text||'schema_version = 1\\n';revision=state.config.rawRevision;}el('revisions').replaceChildren(new Option('Restore a verified revision\u2026',''),...state.config.recoverableRevisions.map(r=>new Option(r.createdAt,r.revision)));el('editor').hidden=!state.configEditable;}
|
|
15
|
-
el('text').oninput=()=>{editing=true};
|
|
16
|
-
el('reload').onclick=()=>{editing=false;load().catch(message)};
|
|
17
|
-
el('save').onclick=async()=>{try{await request('/v1/configuration',{action:'replace',text:el('text').value,expectedRevision:revision});editing=false;await load();message('Configuration saved. Retry startup when ready.')}catch(e){message(e)}};
|
|
18
|
-
el('revisions').onchange=async e=>{if(!e.target.value)return;try{await request('/v1/configuration',{action:'restore',revision:e.target.value,expectedRevision:state.config.rawRevision});editing=false;await load();message('Verified revision restored.')}catch(e){message(e)}};
|
|
19
|
-
for(const [id,action] of [['preview','preview'],['migrate','migrate'],['restart','restart']])el(id).onclick=async()=>{try{const result=await request('/v1/recovery',{action,sourceAppHome:el('appHome').value||undefined,sourceConfig:el('configSource').value||undefined,resolutions:el('resolutions').value?JSON.parse(el('resolutions').value):undefined});el('migration').textContent=JSON.stringify(result,null,2);message(action==='preview'?'Review the source paths above.':'Migration operation completed; retry startup.')}catch(e){message(e)}};
|
|
20
|
-
el('diagnostics').onclick=()=>{if(!state)return;const blob=new Blob([JSON.stringify({issue:state.issue,migration:state.migration,config:{path:state.config.path,rawRevision:state.config.rawRevision,issue:state.config.issue}},null,2)],{type:'application/json'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='openpond-recovery-diagnostics.json';a.click();URL.revokeObjectURL(a.href)};
|
|
21
|
-
el('retry').onclick=async()=>{try{await request('/v1/recovery',{action:'retry'});message('Starting OpenPond\u2026');const timer=setInterval(async()=>{try{const h=await(await fetch('/health')).json();if(!h.recovery){clearInterval(timer);const next=new URLSearchParams(location.hash.slice(1)).get('returnTo');if(next){const u=new URL(next);if(['localhost','127.0.0.1','[::1]'].includes(u.hostname)){location.replace(u.toString());return}}location.reload();}}catch{}},500)}catch(e){message(e)}};
|
|
22
|
-
(async()=>{const params=new URLSearchParams(location.hash.slice(1));token=params.get('openpondToken')||'';if(!token&&window.openpond?.getConnection)token=(await window.openpond.getConnection()).token;if(!token){message('Open the authenticated recovery URL from the launcher.');return}await load()})().catch(message);
|
|
23
|
-
</script></html>`}u(Be,"startupRecoveryPage");var ct=o.strictObject({action:o.enum(["preview","migrate","restart","retry"]),sourceAppHome:o.string().optional(),sourceConfig:o.string().optional(),resolutions:me.optional()});function De(n){return n instanceof ne&&/^(PRIVATE_STORAGE_|UNSAFE_STORAGE_|INVALID_CONFIG|CONFIG_|MIGRATION_|SOURCE_CHANGED_|CREDENTIAL_|UNSUPPORTED_STORAGE_|INVALID_MIGRATION_|INVALID_ACCOUNT_|MISSING_INSTRUCTION_|INVALID_PROFILE_|DATABASE_RECOVERY_)/.test(n.issue.code)}u(De,"isRecoverableStartupError");async function Fe(n,e,t){let r=/^(UNSUPPORTED_STORAGE_|INVALID_MIGRATION_|UNSAFE_STORAGE_|PRIVATE_STORAGE_)/.test(t.issue.code),s=r?await Q.mkdtemp(at.join(it.tmpdir(),"openpond-recovery-")):n;return Re(s,async()=>{let{token:i,tokenFile:a}=await Ee(s),l=_e(n),c=t.issue,p,h=new Promise(f=>{p=f}),b=ut((f,g)=>{(async()=>{let S=new URL(f.url??"/","http://127.0.0.1");if(!Ue(f,g).allowed){I(g,403,{error:"Origin not allowed"});return}if(f.method==="OPTIONS"){I(g,204,{});return}if(f.method==="GET"&&S.pathname==="/health"){I(g,200,{ok:!0,server:"openpond-app-server",version:Se,recovery:!0});return}if(f.method==="GET"&&S.pathname==="/"){let w=lt(18).toString("base64");g.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store","Content-Security-Policy":`default-src 'none'; script-src 'nonce-${w}'; style-src 'nonce-${w}'; connect-src 'self'; base-uri 'none'; frame-ancestors 'none'`}),g.end(Be(w));return}if(!Ne(f,S,i)){I(g,401,{error:"Unauthorized"});return}let P=!r;if(f.method==="GET"&&S.pathname==="/v1/recovery"){I(g,200,{issue:c,configEditable:P,config:r?{path:M(n).config,text:null,rawRevision:"unavailable",issue:c,recoverableRevisions:[]}:await l.status(),migration:await ge(n).catch(w=>({issue:q(w,n)}))});return}if(f.method==="POST"&&S.pathname==="/v1/configuration"&&P){I(g,200,await l.mutate(await Z(f)));return}if(f.method==="POST"&&S.pathname==="/v1/recovery"){let w=ct.parse(await Z(f));if(r&&w.action!=="retry"&&w.action!=="preview")throw t;if(w.action==="restart"){I(g,200,await he(n));return}if(w.action==="preview"||w.action==="migrate"){I(g,200,await Y(n,{sourceAppHome:w.sourceAppHome,sourceConfig:w.sourceConfig,resolutions:w.resolutions,dryRun:w.action==="preview"}));return}await Y(n),await L(n),I(g,200,{ready:!0}),p();return}I(g,503,{error:`${c.message} ${c.action}`,issue:c,recovery:!0})})().catch(S=>{c=q(S,n),I(g,422,{error:`${c.message} ${c.action}`,issue:c})})});await new Promise((f,g)=>{b.once("error",g),b.listen(e,"127.0.0.1",()=>{b.off("error",g),f()})});let x=b.address().port,A=`http://127.0.0.1:${x}`;return await Ie(s,A,"startup-recovery"),{url:A,port:x,token:i,tokenFile:a,storePath:M(n).database,repaired:h,close:u(async()=>{b.closeIdleConnections(),await new Promise((f,g)=>b.close(S=>S?g(S):f())),r&&await Q.rm(s,{recursive:!0,force:!0})},"close")}}).catch(async i=>{throw r&&await Q.rm(s,{recursive:!0,force:!0}),i})}u(Fe,"startRecoveryServer");import{createHash as Ct}from"node:crypto";import{createHash as pt,randomUUID as je}from"node:crypto";var dt=o.object({updatedAt:o.string(),id:o.string().min(1)}).strict(),mt=o.object({entries:o.array(k).max(200),nextBefore:dt.nullable()}).strict(),gt=o.object({run:k,replayed:o.boolean()}).strict(),$=class{constructor(e){this.client=e}client;static{u(this,"HostedCreateImproveStorage")}async getCreateImproveRun(e){let t=await this.client.request({contractVersion:v,requestId:je(),operation:"create-improve/execute",params:{action:"get",runId:e}});return t===null?null:k.parse(t)}async listCreateImproveRuns(e={}){let t=Math.max(1,Math.min(1e3,Math.trunc(e.limit??250))),r=Array.isArray(e.state)?[...e.state]:e.state?[e.state]:[],s=[],i=null;for(;s.length<t;){let a=mt.parse(await this.client.request({contractVersion:v,requestId:je(),operation:"create-improve/execute",params:{action:"page",query:{profileId:e.profileId??null,targetKind:e.targetKind??null,targetId:e.targetId??null,state:r},before:i,limit:Math.min(50,t-s.length)}}));if(e.conversationId&&a.entries.some(l=>l.scope.conversationId!==e.conversationId))throw new Error("Hosted Create/Improve page crossed its conversation scope.");if(s.push(...a.entries),!a.nextBefore)break;if(a.entries.length===0||i&&(a.nextBefore.updatedAt>i.updatedAt||a.nextBefore.updatedAt===i.updatedAt&&a.nextBefore.id>=i.id))throw new Error("Hosted Create/Improve cursor did not advance.");i=a.nextBefore}return s}async upsertCreateImproveRun(e){let t=k.parse(e),r=`create-improve:${pt("sha256").update(JSON.stringify(t)).digest("hex")}`,s=await this.client.request({contractVersion:v,requestId:r,operation:"create-improve/execute",params:{action:"put",run:t}});return k.parse(o.object({run:o.unknown()}).strict().parse(s).run)}async mutateCreateImproveRun(e,t){let r=te.parse(e),s=await this.getCreateImproveRun(r.runId);if(!s)throw new Error(`Create/Improve run not found: ${r.runId}`);if(s.appliedActionIds.includes(r.actionId))return{run:s,replayed:!0};if(s.revision!==r.expectedRevision)throw new Error(`Create/Improve run changed from revision ${r.expectedRevision} to ${s.revision}. Refresh and try again.`);let i=k.parse(t(s));if(i.id!==s.id||i.revision!==s.revision+1||!i.appliedActionIds.includes(r.actionId))throw new Error("Create/Improve mutation must preserve identity, advance one revision and record its action.");return gt.parse(await this.client.request({contractVersion:v,requestId:r.actionId,operation:"create-improve/execute",params:{action:"mutate",mutation:r,next:i}}))}};import{randomUUID as ft}from"node:crypto";async function D(n,e){let t=n;for(;;)try{return await e(t)}catch(r){if(!ht(r)||t<=1)throw r;t=Math.max(1,Math.floor(t/2))}}u(D,"hostedBoundedPage");function ht(n){return n instanceof Error?n.message==="Host storage response is too large."||n.message==="Host storage request failed: host_storage_response_too_large":!1}u(ht,"isOversizeResponse");var vt=o.object({entries:o.array(o.object({sequence:o.number().int().positive(),event:F})).max(200),totalMatchingEvents:o.number().int().nonnegative(),remainingMatchingEvents:o.number().int().nonnegative()}).strict(),W=class{constructor(e){this.client=e}client;static{u(this,"HostedRuntimeEventStorage")}async runtimeEventsForSession(e,t={}){let r=t.limit==null?1e4:Math.max(0,Math.trunc(t.limit));if(r===0)return[];let s=Math.min(r,1e4),i=[],a=Math.max(0,t.afterSequence??0),l=0,c=t.names?new Set(t.names):null;for(;i.length<=s;){let p=await this.runtimeEventPageRows({sessionId:e,afterSequence:a,beforeSequence:null,limit:Math.min(200,s+1-i.length),excludeReasoningDeltas:t.excludeReasoningDeltas});for(let h of p.entries){if(h.sequence<=a)throw new Error("Host event cursor did not advance.");if(a=h.sequence,l+=1,l>1e4)throw new Error("Hosted runtime event scan exceeds 10,000 rows; use a narrower query.");(!c||c.has(h.event.name))&&i.push(h.event)}if(p.entries.length===0||p.remainingMatchingEvents<=p.entries.length)break}if(i.length>s||t.limit==null&&r===1e4&&i.length===s)throw new Error("Hosted runtime event read exceeds 10,000 rows; use a bounded cursor query.");return i}async persistedRuntimeEventsForSession(e,t={}){return this.runtimeEventsForSession(e,t)}async appendRuntimeEvent(e){let t=F.parse(e),r=await this.client.request({contractVersion:v,requestId:t.id,operation:"event/append",params:{event:t}});return o.object({event:F}).strict().parse(r).event}async runtimeEventPageRows(e){let t=Math.max(1,Math.min(1e3,Math.trunc(e.limit))),r=Math.max(0,Math.trunc(e.afterSequence)),s=e.beforeSequence,i=[],a=0,l=0;for(;i.length<t;){let c=Math.min(200,t-i.length),p=await D(c,async h=>vt.parse(await this.client.request({contractVersion:v,requestId:`event-page:${ft()}`,operation:"events/page",params:{sessionId:e.sessionId,afterSequence:r,beforeSequence:s,limit:h,...e.excludeReasoningDeltas?{excludeReasoningDeltas:!0}:{}}})));if(i.length===0&&(a=p.totalMatchingEvents,l=p.remainingMatchingEvents),i=s===null?[...i,...p.entries]:[...p.entries,...i],p.entries.length===0||p.remainingMatchingEvents<=p.entries.length)break;if(s===null){let h=p.entries.at(-1).sequence;if(h<=r)throw new Error("Host event cursor did not advance.");r=h}else{let h=p.entries[0].sequence;if(h>=s)throw new Error("Host event cursor did not advance.");s=h}}return{entries:i,totalMatchingEvents:a,remainingMatchingEvents:l}}};import{randomUUID as y}from"node:crypto";var Le=o.object({revision:o.number().int().min(1),session:N}).strict(),Ve=o.object({revision:o.number().int().min(1),turn:H}).strict(),wt=o.object({sessions:o.array(N).max(200),nextAfterId:o.string().min(1).nullable()}).strict(),bt=o.object({turns:o.array(H).max(200),nextBeforeSortIndex:o.number().int().nonnegative().nullable()}).strict(),G=class{constructor(e){this.client=e}client;static{u(this,"HostedSessionStorage")}async count(){let e=await this.client.request({contractVersion:v,requestId:y(),operation:"session/count",params:{}});return o.object({count:o.number().int().nonnegative()}).strict().parse(e).count}async get(e){let t=await this.client.request({contractVersion:v,requestId:y(),operation:"session/get",params:{sessionId:e}});return t===null?null:Le.parse(t)}async sessionCount(){return this.count()}async sessionShells(){let e=[],t=null;do{let r=await D(Math.min(10,1001-e.length),async s=>wt.parse(await this.client.request({contractVersion:v,requestId:y(),operation:"session/page",params:{afterId:t,limit:s}})));if(e.push(...r.sessions),e.length>1e3)throw new Error("Hosted session list exceeds 1,000 rows; use a scoped page query.");if(r.nextAfterId!==null&&(r.sessions.length===0||t!==null&&r.nextAfterId<=t))throw new Error("Host session cursor did not advance.");t=r.nextAfterId}while(t!==null);return e}async getSession(e){return(await this.get(e))?.session??null}async insertSessionAtFront(e){await this.put({session:e,expectedRevision:null,requestId:y()})}async updateSession(e,t){let r=await this.get(e);if(!r)return null;let s=N.parse(t(r.session));if(s.id!==e)throw new Error("A session update cannot change its identity.");return(await this.put({session:s,expectedRevision:r.revision,requestId:y()})).session}async put(e){let t=N.parse(e.session);return Le.parse(await this.client.request({contractVersion:v,requestId:e.requestId,operation:"session/put",params:{sessionId:t.id,expectedRevision:e.expectedRevision,session:t}}))}async readTurn(e){let t=await this.client.request({contractVersion:v,requestId:y(),operation:"turn/get",params:{turnId:e}});return t===null?null:Ve.parse(t)}async getTurn(e){return(await this.readTurn(e))?.turn??null}async turnsForSession(e,t=50){let r=Math.max(1,Math.min(1e3,Math.trunc(t))),s=[],i=null;for(;s.length<r;){let a=await D(Math.min(200,r-s.length),async l=>bt.parse(await this.client.request({contractVersion:v,requestId:y(),operation:"turn/page",params:{sessionId:e,beforeSortIndex:i,limit:l}})));if(s.push(...a.turns),a.nextBeforeSortIndex===null)break;if(i!==null&&a.nextBeforeSortIndex>=i)throw new Error("Host turn cursor did not advance.");i=a.nextBeforeSortIndex}return s}async countTurnsForSession(e){let t=await this.client.request({contractVersion:v,requestId:y(),operation:"turn/count",params:{sessionId:e}});return o.object({count:o.number().int().nonnegative()}).strict().parse(t).count}async hasSubagentParentWakeTurn(e,t){return await this.wakeCount(e,"messageId",t)>0}async countSubagentParentWakeTurns(e,t){return this.wakeCount(e,"fromRunId",t)}async latestAssistantTextForSession(e){let t=await this.client.request({contractVersion:v,requestId:y(),operation:"events/latestAssistantText",params:{sessionId:e}});return o.object({text:o.string().nullable()}).strict().parse(t).text}async wakeCount(e,t,r){let s=await this.client.request({contractVersion:v,requestId:y(),operation:"turn/wakeCount",params:{sessionId:e,key:t,value:r}});return o.object({count:o.number().int().nonnegative()}).strict().parse(s).count}async latestTurnForSession(e,t){let r=await this.client.request({contractVersion:v,requestId:y(),operation:"turn/latest",params:{sessionId:e,status:t??null}});return r===null?null:H.parse(r)}async latestPersistedTurnForSession(e,t){return this.latestTurnForSession(e,t)}async insertTurn(e){await this.putTurn({turn:e,expectedRevision:null,requestId:y()})}async updateTurn(e,t){let r=await this.readTurn(e);if(!r)return null;let s=H.parse(t(r.turn));if(s.id!==e||s.sessionId!==r.turn.sessionId)throw new Error("A turn update cannot change its identity.");return(await this.putTurn({turn:s,expectedRevision:r.revision,requestId:y()})).turn}async putTurn(e){let t=H.parse(e.turn);return Ve.parse(await this.client.request({contractVersion:v,requestId:e.requestId,operation:"turn/put",params:{sessionId:t.sessionId,turnId:t.id,expectedRevision:e.expectedRevision,turn:t}}))}};import{createHash as St,randomUUID as yt}from"node:crypto";var C=o.object({ok:o.literal(!0)}).strict(),J=o.array(O),Rt=o.array(o.string()),It=o.object({turnId:o.string(),run:_}).strict(),Tt=o.object({inputs:o.array(O).max(10),hasMore:o.boolean()}).strict(),Pt=o.object({items:o.array(j).max(10),hasMore:o.boolean()}).strict(),xt=o.object({items:o.array(o.string()).max(200),hasMore:o.boolean()}).strict();function z(n,e){return`inbox:${n}:${St("sha256").update(JSON.stringify(e)).digest("hex")}`}u(z,"retryKey");var U=class{constructor(e){this.client=e}client;static{u(this,"HostedTaskInboxStorage")}async call(e,t,r=yt()){let s=await this.client.request({contractVersion:v,requestId:r,operation:"task-inbox/execute",params:e});return t.parse(s)}async inputPages(e,t=Number.MAX_SAFE_INTEGER){let r=[],s=0;for(;r.length<t;){let i=await this.call(e(s),Tt);for(let a of i.inputs){if(a.sequence<=s)throw new Error("Host task input cursor did not advance.");if(s=a.sequence,r.push(a),r.length>=t)break}if(!i.hasMore)return r;if(i.inputs.length===0)throw new Error("Host task input page made no progress.")}return r}async recoverTaskInboxOwners(e){return this.call({action:"recoverTaskInboxOwners",ownerId:e},o.array(o.object({sessionId:o.string(),turnId:o.string()}).strict()))}async hasTaskCompletion(e){return this.call({action:"hasTaskCompletion",turnId:e},o.boolean())}async taskInboxSnapshot(e){let t=await this.call({action:"taskInboxSnapshot",sessionId:e},re),[r,s]=await Promise.all([this.inputPages(i=>({action:"taskInboxSnapshotInputs",sessionId:e,afterSequence:i})),this.taskWaitsForSession(e)]);return{...t,inputs:r,waits:s}}async declareTaskWork(e,t,r,s){await this.call({action:"declareTaskWork",sessionId:e,turnId:t,ownerId:r,areas:s},C)}async taskWorkAreas(e){return this.call({action:"taskWorkAreas",sessionId:e},Rt)}async admitTaskInput(e){return this.call({action:"admitTaskInput",input:e},O)}async admitTaskInputs(e){return this.call({action:"admitTaskInputs",inputs:e},J)}async rejectTaskInput(e,t){await this.call({action:"rejectTaskInput",id:e,error:t},C)}async getTaskInput(e){return this.call({action:"getTaskInput",id:e},O.nullable())}async taskInputsForSession(e,t={}){let r=Math.max(1,Math.min(500,t.limit??128)),s=[],i=t.afterSequence??0;for(;s.length<r;){let a=Math.min(10,r-s.length),l=await this.call({action:"taskInputsForSession",sessionId:e,query:{afterSequence:i,pendingOnly:t.pendingOnly,limit:a}},J);if(!l.length)break;for(let c of l){if(c.sequence<=i)throw new Error("Host task input cursor did not advance.");i=c.sequence,s.push(c)}if(l.length<a)break}return s}async mutateTaskInput(e,t,r){return this.call({action:"mutateTaskInput",sessionId:e,inputId:t,change:r},O,z("mutate",{sessionId:e,inputId:t,change:r}))}async openTaskInboxTurn(e,t,r){await this.call({action:"openTaskInboxTurn",sessionId:e,turnId:t,ownerId:r},C,z("open",{sessionId:e,turnId:t,ownerId:r}))}async renewTaskInboxTurn(e,t,r){await this.call({action:"renewTaskInboxTurn",sessionId:e,turnId:t,ownerId:r},C)}async pendingTaskInputs(e,t){return this.inputPages(r=>({action:"pendingTaskInputs",sessionId:e,turnId:t,afterSequence:r}))}async taskAssignmentInputs(e){return this.inputPages(t=>({action:"taskAssignmentInputs",turnId:e,afterSequence:t}))}async pauseTaskInboxTurn(e,t,r){await this.call({action:"pauseTaskInboxTurn",sessionId:e,turnId:t,ownerId:r},C)}async includeTaskInputs(e,t,r,s){return this.call({action:"includeTaskInputs",sessionId:e,turnId:t,ownerId:r,requestId:s},J,z("include",{sessionId:e,turnId:t,ownerId:r,requestId:s}))}async settleTaskInputRequest(e,t){await this.call({action:"settleTaskInputRequest",requestId:e,outcome:t},C)}async sealTaskInboxTurn(e,t,r){return this.call({action:"sealTaskInboxTurn",sessionId:e,turnId:t,ownerId:r},o.boolean())}async sealNativeTaskInboxTurn(e,t,r){return this.call({action:"sealNativeTaskInboxTurn",sessionId:e,turnId:t,ownerId:r},J)}async closeTaskInboxTurn(e,t,r,s){await this.call({action:"closeTaskInboxTurn",sessionId:e,turnId:t,ownerId:r,outcome:s},C)}async taskInboxPaused(e){return this.call({action:"taskInboxPaused",sessionId:e},o.boolean())}async reserveTaskFollowup(e,t,r){return this.call({action:"reserveTaskFollowup",sessionId:e,turnId:t,ownerId:r},O.nullable(),z("reserve",{sessionId:e,turnId:t,ownerId:r}))}async taskInboxWakeTargets(){let e=[],t="";for(;;){let r=await this.call({action:"taskInboxWakeTargets",afterSessionId:t},xt);for(let s of r.items){if(s<=t)throw new Error("Host task wake cursor did not advance.");t=s,e.push(s)}if(!r.hasMore)return e;if(!r.items.length)throw new Error("Host task wake page made no progress.")}}async createTaskWait(e){return this.call({action:"createTaskWait",value:e},j)}async settleTaskWait(e,t){return this.call({action:"settleTaskWait",id:e,state:t},j)}async taskWaitsForSession(e){let t=[],r="";for(;;){let s=await this.call({action:"taskWaitsForSession",sessionId:e,afterId:r},Pt);for(let i of s.items){if(i.id<=r)throw new Error("Host task wait cursor did not advance.");r=i.id,t.push(i)}if(!s.hasMore)return t;if(!s.items.length)throw new Error("Host task wait page made no progress.")}}async commitSubagentCompletion(e,t){await this.call({action:"commitSubagentCompletion",value:e,turnId:t},C)}async pendingTaskCompletions(e=""){let t=[],r=e;for(;t.length<100;){let s=await this.call({action:"pendingTaskCompletions",afterTurnId:r},o.array(It).max(10));for(let i of s){if(i.turnId<=r)throw new Error("Host task completion cursor did not advance.");r=i.turnId,t.push(i)}if(s.length<10)break}return t}async settleTaskCompletion(e,t){await this.call({action:"settleTaskCompletion",turnId:e,inputId:t},C)}async upsertSubagentRun(e){return this.call({action:"upsertSubagentRun",value:_.parse(e)},_)}async getSubagentRun(e){return this.call({action:"getSubagentRun",id:e},_.nullable())}async listSubagentRuns(e={}){let r=[],s="",i=e.status?Array.isArray(e.status)?[...e.status]:[e.status]:null;for(;;){let a=await this.call({action:"listSubagentRuns",query:{parentSessionId:e.parentSessionId,childSessionId:e.childSessionId,status:i,afterId:s,limit:10}},o.array(_).max(10));for(let l of a){if(l.id<=s)throw new Error("Host subagent run cursor did not advance.");if(s=l.id,r.push(l),r.length>1e3)throw new Error("Hosted subagent run list exceeds 1,000 rows; use a narrower session or status query.")}if(a.length<10)break}return r.sort((a,l)=>(l.updatedAt??l.createdAt).localeCompare(a.updatedAt??a.createdAt)),e.limit===void 0?r:r.slice(0,Math.max(1,Math.min(1e3,e.limit)))}async listActiveSubagentRuns(e={}){return this.listSubagentRuns({...e,status:e.status??["queued","running","needs_resume"]})}};var ee=class extends U{static{u(this,"HostedTurnRepository")}sessions;events;approvals;usage;createImprove;constructor(e){super(e),this.sessions=new G(e),this.events=new W(e),this.approvals=new ke(e),this.usage=new Oe(e),this.createImprove=new $(e)}sessionShells(){return this.sessions.sessionShells()}sessionCount(){return this.sessions.sessionCount()}getSession(e){return this.sessions.getSession(e)}insertSessionAtFront(e){return this.sessions.insertSessionAtFront(e)}updateSession(e,t){return this.sessions.updateSession(e,t)}getTurn(e){return this.sessions.getTurn(e)}insertTurn(e){return this.sessions.insertTurn(e)}updateTurn(e,t){return this.sessions.updateTurn(e,t)}latestTurnForSession(e,t){return this.sessions.latestTurnForSession(e,t)}latestPersistedTurnForSession(e,t){return this.sessions.latestPersistedTurnForSession(e,t)}turnsForSession(e,t){return this.sessions.turnsForSession(e,t)}countTurnsForSession(e){return this.sessions.countTurnsForSession(e)}hasSubagentParentWakeTurn(e,t){return this.sessions.hasSubagentParentWakeTurn(e,t)}countSubagentParentWakeTurns(e,t){return this.sessions.countSubagentParentWakeTurns(e,t)}latestAssistantTextForSession(e){return this.sessions.latestAssistantTextForSession(e)}appendRuntimeEvent(e){return this.events.appendRuntimeEvent(e)}runtimeEventsForSession(e,t){return this.events.runtimeEventsForSession(e,t)}persistedRuntimeEventsForSession(e,t){return this.events.persistedRuntimeEventsForSession(e,t)}runtimeEventPageRows(e){return this.events.runtimeEventPageRows(e)}getApproval(e){return this.approvals.getApproval(e)}async upsertApproval(e){let t=await this.approvals.readApproval(e.id);t&&JSON.stringify(t.approval)===JSON.stringify(e)||await this.approvals.putApproval({approval:e,expectedRevision:t?.revision??null,requestId:`approval:${Ct("sha256").update(JSON.stringify({approval:e,revision:t?.revision??null})).digest("hex")}`})}upsertModelUsageRecord(e){return this.usage.upsertModelUsageRecord(e)}listModelUsageRecords(e){return this.usage.listModelUsageRecords(e)}getCreateImproveRun(e){return this.createImprove.getCreateImproveRun(e)}listCreateImproveRuns(e){return this.createImprove.listCreateImproveRuns(e)}upsertCreateImproveRun(e){return this.createImprove.upsertCreateImproveRun(e)}mutateCreateImproveRun(e,t){return this.createImprove.mutateCreateImproveRun(e,t)}};function $e(n){return new ee(n)}u($e,"createHostedRuntimeCoreStorage");function We(n=process.env){let e=n.OPENPOND_API_KEY?.trim(),t=n.OPENPOND_OPCHAT_API_URL?.trim(),r=n.OPENPOND_HOSTED_MODEL_ID?.trim();if(!e||!t||!r)throw new Error("Hosted model stream requires a host credential, API URL, and admitted model.");let s=new URL(t);if(s.protocol!=="https:"||s.username||s.password||s.search||s.hash)throw new Error("Hosted model stream API URL is invalid.");return u(async function*(a){if(a.model!==r)throw new Error("Hosted model selection changed outside host admission.");yield*Pe({...a,apiBaseUrl:s.toString(),token:e,model:r})},"streamHostedModel")}u(We,"createHostedModelStreamFromEnvironment");import{existsSync as Et}from"node:fs";import T from"node:path";import{fileURLToPath as kt}from"node:url";var Ge=T.dirname(kt(import.meta.url));function R(n,e,t){let r=n[e+1];if(!r||r.startsWith("--"))throw new Error(`${t} requires a value.`);return r}u(R,"requireValue");function Je(n,e){let t=Number.parseInt(n,10);if(!Number.isFinite(t)||t<0||t>65535)throw new Error(`${e} must be a port from 0 to 65535.`);return t}u(Je,"parsePort");function Ke(n){let e="serve",t=K,r=17874,s=null,i=!1,a=!1,l=null,c,p,h=null,b=null,x=null,A=null,f,g="sqlite_bundle",S=0,P=n[0];if(P&&!P.startsWith("-")){if(P==="serve"||P==="server")e="serve";else if(P==="app-server")e="app-server";else if(P==="web")e="web";else{if(P==="help")return{mode:e,host:t,port:r,webRoot:s,openBrowser:i,printAccessUrl:a,storeDir:l,runtimeStorage:g,help:!0};throw new Error(`Unknown command: ${P}`)}S=1}for(let m=S;m<n.length;m+=1){let d=n[m];if(d==="--help"||d==="-h")return{mode:e,host:t,port:r,webRoot:s,openBrowser:i,printAccessUrl:a,storeDir:l,runtimeStorage:g,help:!0};if(d==="--listen"){let E=ye(R(n,m,d));t=E.host,r=Je(String(E.port),d),m+=1}else if(d==="--hostname"||d==="--host")t=R(n,m,d),m+=1;else if(d==="--port")r=Je(R(n,m,d),d),m+=1;else if(d==="--web-root")s=T.resolve(R(n,m,d)),m+=1;else if(d==="--source-browser-state")p=T.resolve(R(n,m,d)),m+=1;else{if(d==="--store-dir")throw new Error("--store-dir has been replaced by --home. Use --home <directory> or OPENPOND_HOME.");if(d==="--home")l=T.resolve(R(n,m,d)),m+=1;else if(d==="--hosted-cache-home")c=T.resolve(R(n,m,d)),m+=1;else if(d==="--runtime-storage"){if(R(n,m,d)!=="hosted-postgres")throw new Error("Unsupported app-server runtime storage.");g="hosted_postgres",m+=1}else if(d==="--profile-source-root")h=T.resolve(R(n,m,d)),m+=1;else if(d==="--profile-repository-id")b=R(n,m,d),m+=1;else if(d==="--profile-id")x=R(n,m,d),m+=1;else if(d==="--profile-revision")A=R(n,m,d),m+=1;else if(d==="--hosted-profile-release"){if(f)throw new Error("Duplicate hosted Profile release descriptor.");let E=R(n,m,d);if(E.length>16e3||!/^[A-Za-z0-9_-]+$/.test(E))throw new Error("Invalid hosted Profile release descriptor.");try{f=Ae.parse(JSON.parse(Buffer.from(E,"base64url").toString("utf8")))}catch{throw new Error("Invalid hosted Profile release descriptor.")}m+=1}else if(d==="--open-browser")i=!0;else if(d==="--print-access-url")a=!0;else throw new Error(`Unknown option: ${d}`)}}if(i&&a)throw new Error("--open-browser and --print-access-url cannot be used together.");if(e!=="web"&&(i||a))throw new Error("Browser options are only available in web mode.");let w=[h,b,x,A].filter(Boolean).length;if(w&&(w!==4||e!=="app-server"))throw new Error("Profile source flags require app-server mode and --profile-source-root, --profile-repository-id, --profile-id, and --profile-revision together.");if(g==="hosted_postgres"&&(e!=="app-server"||l||w))throw new Error("Hosted Postgres app-server cannot use --home or local Profile source flags.");if(f&&g!=="hosted_postgres")throw new Error("Hosted Profile release requires hosted Postgres app-server mode.");if(c&&g!=="hosted_postgres")throw new Error("Hosted cache home requires hosted Postgres mode.");return{mode:e,host:t,port:r,webRoot:s,openBrowser:i,printAccessUrl:a,storeDir:l,runtimeStorage:g,sourceBrowserState:p,...w?{profileSource:{repoPath:h,repositoryId:b,profileId:x,sourceRevision:A}}:{},...f?{admittedProfileRelease:f}:{},...c?{hostedCacheHome:c}:{},help:!1}}u(Ke,"parseCliArgs");function Ot(){return[process.env.OPENPOND_WEB_ROOT,T.resolve(process.cwd(),"apps/web/dist"),T.resolve(Ge,"../../web/dist"),T.resolve(process.cwd(),"web"),T.resolve(Ge,"../web")].filter(n=>!!n)}u(Ot,"defaultWebRootCandidates");function At(n){let e=n?[n]:Ot();for(let t of e){let r=T.resolve(t);if(Et(T.join(r,"index.html")))return r}return null}u(At,"resolveWebRoot");function _t(n){let e=n==="0.0.0.0"||n==="::"?"127.0.0.1":n;return e.includes(":")&&!e.startsWith("[")?`[${e}]`:e}u(_t,"formatHostForUrl");function Ht(n){return`http://${_t(n.status.host)}:${n.status.port}`}u(Ht,"browserBaseUrl");function Mt(n,e){let t=new URL(n),r=new URLSearchParams;return r.set("openpondServerUrl",n),r.set("openpondToken",e),t.hash=r.toString(),t.toString()}u(Mt,"tokenizedWebUrl");async function ze(n,e=Ce){let t=Mt(n.baseUrl,n.token);if(n.printAccessUrl)return{stdout:[`OpenPond access URL: ${t}`],stderr:[]};if(!n.openBrowser)return{stdout:[`OpenPond web UI: ${n.baseUrl}`],stderr:[]};let r=await e(t);return r.opened?{stdout:[`Opened OpenPond in your browser: ${n.baseUrl}`],stderr:[]}:{stdout:[`OpenPond access URL: ${t}`],stderr:[`Could not open the system browser: ${r.error}`]}}u(ze,"resolveWebLaunchMessages");function Xe(){console.log(`Usage:
|
|
24
|
-
openpond-app-server serve [--hostname HOST] [--port PORT]
|
|
25
|
-
openpond-app-server app-server [--home DIR]
|
|
26
|
-
openpond-app-server web [--hostname HOST] [--port PORT] [--web-root DIR]
|
|
27
|
-
|
|
28
|
-
Options:
|
|
29
|
-
--listen HOST:PORT Set host and port together
|
|
30
|
-
--hostname HOST Bind host (default ${K})
|
|
31
|
-
--port PORT Bind port, or 0 for any free port (default ${17874})
|
|
32
|
-
--web-root DIR Directory containing the built web UI for web mode
|
|
33
|
-
--home DIR Local app-server state directory
|
|
34
|
-
--runtime-storage hosted-postgres Host-admitted Postgres app-server mode
|
|
35
|
-
--hosted-profile-release BASE64URL Host-admitted immutable Profile release descriptor
|
|
36
|
-
--profile-source-root DIR Authorized Profile repository source for app-server
|
|
37
|
-
--profile-repository-id ID Source repository identity supplied by the host
|
|
38
|
-
--profile-id ID Profile within that source
|
|
39
|
-
--profile-revision REV Accepted immutable source revision
|
|
40
|
-
--open-browser Open the authenticated web URL in the system browser
|
|
41
|
-
--print-access-url Print the authenticated URL instead of opening it
|
|
42
|
-
`)}u(Xe,"printHelp");async function an(n){let e=Ke(process.argv.slice(2));if(e.help){Xe();return}let t=e.mode==="web"?At(e.webRoot):null;if(e.mode==="web"&&!t)throw new Error("Could not find a built OpenPond web UI. Run `pnpm build:web` or pass --web-root.");if(e.mode==="app-server"){await Ze(n.createOpenPondAppServer,e.storeDir,e.profileSource,e.runtimeStorage,e.admittedProfileRelease,e.hostedCacheHome);return}e.storeDir&&(process.env.OPENPOND_HOME=e.storeDir);let r,s=e.port;for(;;)try{r=await n.createOpenPondServer({host:e.host,port:s,webRoot:t,sourceBrowserState:e.sourceBrowserState,...e.storeDir?{storeDir:e.storeDir}:{},httpEnabled:!0});break}catch(c){if(!De(c))throw c;let p=await Fe(se({home:e.storeDir??void 0}),s,c);s=p.port,console.log(`OPENPOND_APP_SERVER_READY ${JSON.stringify({mode:"recovery",url:p.url,tokenFile:p.tokenFile,storePath:p.storePath})}`),console.error(`${c.issue.code}: ${c.issue.message} ${c.issue.action}`);let h=await ze({baseUrl:p.url,openBrowser:e.openBrowser,printAccessUrl:e.printAccessUrl,token:p.token});for(let x of h.stdout)console.log(x);for(let x of h.stderr)console.error(x);let b=u(()=>{p.close().finally(()=>process.exit(0))},"close");process.once("SIGINT",b),process.once("SIGTERM",b);try{await p.repaired}finally{process.off("SIGINT",b),process.off("SIGTERM",b),await p.close()}}let i=e.mode==="web"?Ht(r):null;if(console.log(`OPENPOND_APP_SERVER_READY ${JSON.stringify({mode:e.mode,url:r.url,webUrl:null,webRoot:t,tokenFile:r.tokenFile,storePath:r.storePath,runtime:xe()})}`),i){let c=await ze({baseUrl:i,openBrowser:e.openBrowser,printAccessUrl:e.printAccessUrl,token:r.token});for(let p of c.stderr)console.error(p);for(let p of c.stdout)console.log(p)}else console.log(`OpenPond API server: ${r.url}`);let a=!1,l=u(async()=>{a||(a=!0,await r.close(),process.exit(0))},"shutdown");process.on("SIGINT",()=>{l()}),process.on("SIGTERM",()=>{l()}),await new Promise(()=>{})}u(an,"runOpenPondServerCli");async function un(n){let e=process.argv.slice(2),t=Ke(!e[0]||e[0].startsWith("-")?["app-server",...e]:e);if(t.help){Xe();return}if(t.mode!=="app-server")throw new Error("The app-server entrypoint only accepts the app-server command.");await Ze(n,t.storeDir,t.profileSource,t.runtimeStorage,t.admittedProfileRelease,t.hostedCacheHome)}u(un,"runOpenPondAppServerCli");async function Ze(n,e,t,r="sqlite_bundle",s,i){let a=new Te;if(r==="hosted_postgres"){if(e||t)throw new Error("Hosted Postgres app-server cannot use local storage sources.");await X({appServer:u(()=>n({...i?{storeDir:i}:{},hostStorageClient:a,runtimeStorage:{kind:"hosted_postgres",client:a,core:$e(a),inbox:new U(a),...s?{admittedProfileRelease:s}:{}},streamOpenPondHostedChatTurn:We()}),"appServer"),readable:process.stdin,writable:process.stdout,hostStorageClient:a});return}e&&(process.env.OPENPOND_HOME=e);let l=await n({...e?{storeDir:e}:{},...t?{profileSource:t}:{},hostStorageClient:a});await X({appServer:l,readable:process.stdin,writable:process.stdout,hostStorageClient:a})}u(Ze,"runAgentServer");export{_e as a,B as b,Ue as c,I as d,Ft as e,jt as f,Z as g,Ne as h,ze as i,an as j,un as k};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{Wa as A,v as C}from"./chunk-TU5ITNMX.js";import{a as f,b,c as R,e as H,h as j,l as h,m as z}from"./chunk-HZP5U2AA.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";var F=e.number().finite().nonnegative(),V=e.discriminatedUnion("kind",[e.object({kind:e.literal("model"),modelId:f,configurationHash:b}).strict(),e.object({kind:e.literal("harness"),source:A}).strict(),e.object({kind:e.literal("fixture"),configurationHash:b}).strict()]),U=e.object({release:H.extend({revision:e.union([e.number().int().positive(),e.string().trim().min(1).max(200)])}).strict(),feedbackKey:C,configurationHash:b.optional(),output:e.enum(["boolean","score","category"]),categories:e.array(e.string().trim().min(1).max(120)).max(50)}).strict().superRefine((t,n)=>{t.output==="category"!=t.categories.length>0&&n.addIssue({code:"custom",path:["categories"],message:"Only category feedback declares categories."}),new Set(t.categories).size!==t.categories.length&&n.addIssue({code:"custom",path:["categories"],message:"Feedback categories must be unique."})}),M=e.object({caseId:f,seed:e.string().trim().min(1).max(500),fixtureId:f.nullable()}).strict();function K(t){let n=M.parse(t);return JSON.stringify([n.caseId,n.seed,n.fixtureId])}d(K,"experimentCaseKey");var D=e.object({schemaVersion:e.literal("openpond.experimentManifest.v1"),id:f,name:e.string().trim().min(1).max(500),teamId:f,operationId:f,maximumCostUsd:F.nullable(),dataset:H.extend({revision:e.number().int().positive()}).strict(),target:V,execution:e.object({packageHash:b,runtimeTargetHash:b,metricPolicyHash:b}).strict().optional(),lineage:e.object({definition:H.extend({revision:e.number().int().positive()}).strict().nullable(),execution:H,scoringPassId:f.nullable()}).strict().optional(),evaluators:e.array(U).max(100),population:e.array(M).min(1).max(1e4),createdAt:R}).strict().superRefine((t,n)=>{t.lineage&&t.id!==(t.lineage.scoringPassId??t.lineage.execution.id)&&n.addIssue({code:"custom",path:["lineage"],message:"Experiment identity must match its execution or independent scoring pass."}),new Set(t.population.map(K)).size!==t.population.length&&n.addIssue({code:"custom",path:["population"],message:"Experiment cases must be unique."}),new Set(t.evaluators.map(s=>s.feedbackKey)).size!==t.evaluators.length&&n.addIssue({code:"custom",path:["evaluators"],message:"Experiment feedback keys must be unique."})}),q=D.extend({contentHash:b}).strict(),J=e.object({feedbackKey:C,evaluator:U.shape.release,status:e.enum(["scored","unavailable","failed","pending"]),value:e.union([e.boolean(),e.number().finite(),e.string().max(120)]).nullable(),passed:e.boolean().nullable().optional(),reasoning:e.string().max(2e4).nullable(),evidenceRefs:e.array(j).max(1e3)}).strict(),B=e.object({inputTokens:e.number().int().nonnegative().nullable(),outputTokens:e.number().int().nonnegative().nullable(),totalTokens:e.number().int().nonnegative().nullable(),costUsd:F.nullable(),latencyMs:e.number().finite().nonnegative().nullable()}).strict().superRefine((t,n)=>{t.inputTokens!==null&&t.outputTokens!==null&&t.totalTokens!==null&&t.totalTokens<t.inputTokens+t.outputTokens&&n.addIssue({code:"custom",path:["totalTokens"],message:"Total tokens cannot be less than input plus output."})}),G=e.object({identity:M,status:e.enum(["completed","failed","cancelled","unavailable"]),output:e.unknown().nullable(),error:e.object({code:f,message:e.string().max(2e3)}).strict().nullable(),feedback:e.array(J).max(100),usage:B,traceRef:j.nullable(),startedAt:R.nullable(),completedAt:R.nullable()}).strict(),N=e.object({schemaVersion:e.literal("openpond.experimentResult.v1"),manifest:H,status:e.enum(["completed","failed","cancelled"]),cases:e.array(G).min(1).max(1e4),completedAt:R}).strict(),O=N.extend({contentHash:b}).strict();function L(t,n){q.parse(n),z(n,"Experiment manifest");let s=N.parse(t);if(s.manifest.id!==n.id||s.manifest.contentHash!==n.contentHash)throw new Error("Experiment result differs from its manifest.");let v=new Set(n.population.map(K)),l=new Set,w=new Map(n.evaluators.map(g=>[g.feedbackKey,g]));for(let g of s.cases){let S=K(g.identity);if(!v.has(S)||l.has(S))throw new Error("Experiment result has an unexpected or repeated case.");l.add(S);let I=new Set;for(let i of g.feedback){let a=w.get(i.feedbackKey);if(!a||I.has(i.feedbackKey)||i.evaluator.id!==a.release.id||i.evaluator.contentHash!==a.release.contentHash||i.evaluator.revision!==a.release.revision)throw new Error("Experiment feedback differs from its pinned evaluator.");if(I.add(i.feedbackKey),i.status==="scored"){if(i.value===null||typeof i.value!=={boolean:"boolean",score:"number",category:"string"}[a.output]||a.output==="category"&&!a.categories.includes(i.value)||a.output==="score"&&(i.value<0||i.value>1))throw new Error("Experiment feedback value violates its output contract.")}else if(i.value!==null||i.passed!==null&&i.passed!==void 0)throw new Error("Unscored experiment feedback cannot claim a value or pass decision.")}}if(l.size!==v.size)throw new Error("Experiment result omits admitted cases.");return O.parse({...s,contentHash:h(s)})}d(L,"createExperimentResult");function Q(t){let n=q.parse(t.manifest),s=O.parse(t.result),{contentHash:v,...l}=s;if(h(l)!==v)throw new Error("Experiment result integrity failed.");return L(l,n),{manifest:n,result:s}}d(Q,"verifyExperimentEvidence");function $(t,n){for(let a of[t,n])Q(a);let s=[];if(t.manifest.teamId!==n.manifest.teamId&&s.push("different_workspace"),(t.manifest.dataset.id!==n.manifest.dataset.id||t.manifest.dataset.contentHash!==n.manifest.dataset.contentHash||t.manifest.dataset.revision!==n.manifest.dataset.revision)&&s.push("different_dataset_version"),t.manifest.target.kind!==n.manifest.target.kind&&s.push("different_target_kind"),h(t.manifest.execution??null)!==h(n.manifest.execution??null)&&s.push("different_execution_contract"),t.manifest.target.kind==="harness"&&n.manifest.target.kind==="harness"){let a=t.manifest.target.source,r=n.manifest.target.source;(a.profileId!==r.profileId||h(a.target)!==h(r.target))&&s.push("different_component"),a.environmentHash!==r.environmentHash&&s.push("different_environment"),(a.definitionId!==r.definitionId||a.definitionHash!==r.definitionHash)&&s.push("different_evaluation_definition")}let v=d(a=>[...a.evaluators].sort((r,o)=>r.feedbackKey.localeCompare(o.feedbackKey)),"orderedEvaluators");h(v(t.manifest))!==h(v(n.manifest))&&s.push("different_evaluators");let l=new Map(t.result.cases.map(a=>[K(a.identity),a])),w=new Map(n.result.cases.map(a=>[K(a.identity),a])),g=[...new Set([...l.keys(),...w.keys()])].sort();(l.size!==w.size||g.some(a=>!l.has(a)||!w.has(a)))&&s.push("different_population");let S=s.length===0,I=g.map(a=>{let r=l.get(a)??null,o=w.get(a)??null,T=new Map(r?.feedback.map(c=>[c.feedbackKey,c])??[]),_=new Map(o?.feedback.map(c=>[c.feedbackKey,c])??[]);return{identity:(r??o).identity,baseline:r,candidate:o,feedback:t.manifest.evaluators.map(c=>{let y=T.get(c.feedbackKey),x=_.get(c.feedbackKey),m=S?!r||!o?"missing_case":r.status!=="completed"||o.status!=="completed"||r.error||o.error?"case_not_completed":!y||!x||y.status!=="scored"||x.status!=="scored"?"feedback_unavailable":c.output==="category"?"categorical_feedback":null:"incompatible_experiments",u=d(k=>typeof k?.value=="boolean"?Number(k.value):typeof k?.value=="number"?k.value:null,"numeric"),p=m?null:u(y),E=m?null:u(x),P=d(k=>m?null:typeof k?.value=="boolean"?k.value:k?.passed??null,"pass");return{feedbackKey:c.feedbackKey,eligible:m===null,reason:m,baseline:p,candidate:E,delta:p===null||E===null?null:E-p,baselinePassed:P(y),candidatePassed:P(x)}})}}),i=t.manifest.evaluators.map((a,r)=>{let o=I.map(u=>u.feedback[r]).filter(u=>u.eligible),T=d(u=>o.length?o.reduce((p,E)=>p+E[u],0)/o.length:null,"mean"),_=T("baseline"),c=T("candidate"),y=d(u=>o.length&&o.every(p=>p[u]!==null)?o.reduce((p,E)=>p+Number(E[u]),0)/o.length:null,"passRate"),x=y("baselinePassed"),m=y("candidatePassed");return{feedbackKey:a.feedbackKey,eligibleCount:o.length,excludedCount:I.length-o.length,baseline:_,candidate:c,delta:_===null||c===null?null:c-_,baselinePassRate:x,candidatePassRate:m,passRateDelta:x===null||m===null?null:m-x}});return{comparable:S,reasons:s,cases:I,metrics:i}}d($,"compareExperiments");export{Q as a,$ as b};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{i as a,j as b,k as c}from"./chunk-XRI3HLZ3.js";import"./chunk-5OA57RW4.js";import"./chunk-ASRSYRE3.js";import"./chunk-62H5KUOS.js";import"./chunk-FFTVDR3E.js";import"./chunk-PKBU37CH.js";import"./chunk-H7YH35JO.js";import"./chunk-4QURHV3Q.js";import"./chunk-YHBIGFFA.js";import"./chunk-JIG7KQOX.js";import"./chunk-L3KS6MOV.js";import"./chunk-CYZOPDTW.js";import"./chunk-3QXPXBVG.js";import"./chunk-6MI4KKWF.js";import"./chunk-ELUCM7CG.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import"./chunk-TU5ITNMX.js";import"./chunk-QUNRWDVO.js";import"./chunk-6FA3GG5B.js";import"./chunk-SDO4FC4Q.js";import"./chunk-IR3YJWPW.js";import"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import"./chunk-FTQLQJQV.js";export{a as resolveWebLaunchMessages,c as runOpenPondAppServerCli,b as runOpenPondServerCli};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as f}from"./chunk-3UQU3KOS.js";import"./chunk-IYWNO4RB.js";import"./chunk-3M53YXEI.js";import{$a as I,Ba as J,Qa as N,Ra as q,Ua as k,Wa as A,X as d,Xa as B,Y as w,_ as b,_a as H,hb as E,ib as M,ja as C,jb as T,la as m,ma as j,na as x,oa as F,pa as v,qa as P}from"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import{d as O,f as S,h as g}from"./chunk-H7IWJN7L.js";import{a as l}from"./chunk-FTQLQJQV.js";import R from"node:path";import{readFile as p}from"node:fs/promises";var n=l((t,s)=>typeof t[s]=="string"?t[s]:void 0,"stringOption");function a(t){console.log(JSON.stringify(t,null,2))}l(a,"print");function U(t,s){let i=n(t,"keyPath");if(i){let r=JSON.parse(i);if(Array.isArray(r)&&r.length&&r.every(c=>typeof c=="string"&&c.length))return r;throw new f("--key-path must be a JSON array of key segments.")}if(!s)throw new f("Specify a setting key, or --key-path for keys containing dots.");return s.split(".")}l(U,"keyPath");async function G(t,s){let i=S({home:n(t,"home")}),r=s[0]??"get",c=g(i).config;if(r==="path"){console.log(c);return}if(r==="export"){let e=await T(i),o=n(t,"file");o?(await b(R.resolve(o),JSON.stringify(e,null,2),{privateParent:!1}),a({path:R.resolve(o),requiresRebinding:e.requiresRebinding})):a(e);return}if(r==="backup"||r==="restore"){let e=n(t,"file"),o=n(t,"keyFile");if(!e||!o)throw new f(`config ${r} requires --file <encrypted-backup> and --key-file <separate-32-byte-key-file>.`);let u=await p(o),y=u.length===32?u:Buffer.from(u.toString("utf8").trim(),"base64");try{a(r==="backup"?await E(i,e,y):await M(e,i,y))}finally{y.fill(0),u.fill(0)}return}if(r==="collect-orphans"){a(await N(i));return}if(r==="schema"){a(F());return}if(r==="migrate"){let e=n(t,"resolutionFile"),o=e?q.parse(JSON.parse(await p(e,"utf8"))):void 0;a(await k(i,{resolutions:o,sourceAppHome:n(t,"sourceAppHome"),sourceConfig:n(t,"sourceConfig"),sourceBrowserState:n(t,"sourceBrowserState"),dryRun:t.dryRun===!0||t.dryRun==="true"}));return}if(r==="recover"){let e=n(t,"revision");a(e?await x(i,e,n(t,"expectedRevision")??d(await w(c))):await A(i));return}if(r==="restart-migration"){a(await B(i));return}if(r==="effective"){a(await I(i,{projectRoot:n(t,"projectRoot"),accountId:n(t,"accountId")}));return}if(r==="trust"||r==="untrust"){let e=n(t,"projectRoot")??s[1];if(!e)throw new f("Specify the canonical project root with --project-root.");await H(i,e,n(t,"accountId")??"local",r==="trust"),a({root:e,trusted:r==="trust"});return}if(r==="revisions"){a(await m(i));return}if(r==="validate"){let e=n(t,"file")??c;C(await p(e,"utf8"),e,t.project===!0||t.project==="true"?"project":"user"),a({valid:!0,path:e});return}if(r==="replace"){let e=n(t,"file");if(!e)throw new f("config replace requires --file <validated-toml-file>.");a(await j(i,n(t,"expectedRevision")??d(await w(c)),await p(e,"utf8")));return}if(r==="doctor"){let e=await w(c),o=null;try{await v(i)}catch(u){o=O(u,c)}a({home:i,path:c,rawRevision:d(e),issue:o,recoverableRevisions:await m(i),migration:await w(R.join(g(i).runtime,"migration.json"))!==null}),o&&(process.exitCode=1);return}if(await k(i),r==="clear-cache"){await J(i),a({cleared:!0,path:g(i).cache});return}let h=await v(i);if(r==="get"){if(!s[1]&&!t.keyPath){a(h);return}let e=h.document;for(let o of U(t,s[1]))e=e&&typeof e=="object"?e[o]:void 0;a(e??null);return}if(r==="set"||r==="unset"){let e=U(t,s[1]),o;if(r==="set"){let u=n(t,"value")??s[2];if(u===void 0)throw new f("config set requires a value. Use JSON for arrays, tables, numbers and booleans.");try{o=JSON.parse(u)}catch{o=u}}a(await P(i,n(t,"expectedRevision")??h.rawRevision,[r==="set"?{op:"set",path:e,value:o}:{op:"unset",path:e}]));return}throw new f(`Unknown config command: ${r}`)}l(G,"runConfigurationCommand");export{G as runConfigurationCommand};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}from"./chunk-WWCU4ETR.js";import"./chunk-FUFIZ37W.js";import"./chunk-3HQEEZPO.js";import"./chunk-BSHAIAXY.js";import"./chunk-3UQU3KOS.js";import"./chunk-IYWNO4RB.js";import"./chunk-XWPC3AN4.js";import"./chunk-3M53YXEI.js";import"./chunk-OGPHXXCD.js";import"./chunk-GTG2ODOV.js";import"./chunk-SHCKK3SU.js";import"./chunk-AOBTILU5.js";import"./chunk-GLUWATL5.js";import"./chunk-ZCPIVNCS.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import"./chunk-TU5ITNMX.js";import"./chunk-QUNRWDVO.js";import"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import"./chunk-FTQLQJQV.js";export{m as resolveGitBranch,f as runAccount,j as runBacktestRun,p as runCheckUpdate,k as runDeployWatch,g as runHealth,d as runLogin,o as runOpentool,e as runProfiles,l as runRepoCreate,n as runRepoPush,b as runTemplateBranches,a as runTemplateStatus,c as runTemplateUpdate,h as runToolList,i as runToolRun};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import"./chunk-FUFIZ37W.js";import{c as wa}from"./chunk-3HQEEZPO.js";import{c as Ra,f as _a}from"./chunk-BSHAIAXY.js";import"./chunk-3UQU3KOS.js";import"./chunk-IYWNO4RB.js";import"./chunk-XWPC3AN4.js";import{c as G,f as sa}from"./chunk-3M53YXEI.js";import{d as Ta}from"./chunk-YHBIGFFA.js";import"./chunk-JIG7KQOX.js";import"./chunk-CYZOPDTW.js";import"./chunk-3QXPXBVG.js";import"./chunk-6MI4KKWF.js";import{$ as he,P as re,S as ne,V as ye,X as xe,Y as ba,b as va,ba as ge,va as ct,ya as Sa}from"./chunk-ELUCM7CG.js";import"./chunk-OGPHXXCD.js";import{a as we,b as w,c as H,d as qt,e as ya}from"./chunk-GTG2ODOV.js";import"./chunk-SHCKK3SU.js";import{d as xa}from"./chunk-AOBTILU5.js";import"./chunk-GLUWATL5.js";import"./chunk-ZCPIVNCS.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import{$ as ha,B as ue,H as fe,P as Be,R as Ve,T as pa,W as ua,_ as fa,b as le,d as Ct,f as da,fa as I,ga as j,ha as A,ia as ot,j as st,ka as ae,la as ga,ma as W,o as ma,p as Mt,q as $t,r as la,s as V,t as it,va as zt,wa as ka,xa as Fe,y as pe}from"./chunk-TU5ITNMX.js";import{g as oa,h as ca}from"./chunk-QUNRWDVO.js";import"./chunk-6FA3GG5B.js";import"./chunk-SDO4FC4Q.js";import"./chunk-IR3YJWPW.js";import"./chunk-QK2GLRCY.js";import{a as tt,b as at,e as rt,f as ia,g as ee,j as te,k as $,l as h,q as nt}from"./chunk-HZP5U2AA.js";import{b as e}from"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import{a as o}from"./chunk-FTQLQJQV.js";var ke=Be.shape.id,Oe=e.string().regex(/^[a-f0-9]{64}$/),Ia=e.object({scopeId:ke,modelId:ke}).strict(),Bt=e.object({schemaVersion:e.literal("openpond.modelTasksetAuthoring.v1"),owner:Ia,root:Be,parent:Be}).strict(),Dr=e.object({schemaVersion:e.literal("openpond.modelTasksetDraftRequest.v1"),operationId:ke,modelId:ke,expectedModelRevision:e.number().int().positive(),sourcePackageHash:Oe}).strict(),Re=e.object({schemaVersion:e.literal("openpond.modelTasksetDraftPreparation.v1"),draftId:ke,requestHash:Oe,sourcePackageHash:Oe,sourceTasksetRef:Be,tasksetId:ke,tasksetRevision:e.number().int().positive(),lineage:Bt,authoringGraph:e.literal("bound").optional()}).strict(),K=e.string().min(1).max(1024).refine(t=>!t.includes("\\")&&!t.includes(":")&&!t.includes("\0")&&!t.startsWith("/")&&!t.split("/").some(a=>!a||a==="."||a===".."||a.startsWith(".env")),"Use a relative Taskset file path without environment files."),Hr=e.object({path:K,sizeBytes:e.number().int().nonnegative(),writable:e.boolean()}).strict(),Vt=e.object({encoding:e.enum(["utf8","base64"]),data:e.string().max(8e6)}).strict(),Rs=Hr.extend({contentHash:Oe,content:Vt}).strict(),Cr=e.object({draftId:ke,expectedDraftRevision:e.number().int().positive(),path:K,expectedFileHash:Oe.nullable(),content:Vt.nullable()}).strict();var F=e.string().trim().min(1).max(240),X=e.string().trim().min(1),se=e.string().trim().min(8).max(256),Pa=e.string().trim().min(1).max(1e3).refine(t=>!t.startsWith("/")&&!t.startsWith("\\")&&!t.split(/[\\/]/).includes(".."),"Artifact paths must be relative and stay inside the Dataset."),ie=e.enum(["train","validation","test","frozen_eval"]),Mr=e.object({name:e.string().trim().min(1).max(500),semanticRole:e.enum(["row_id","cluster_id","prompt","messages","demonstration","chosen","rejected","expected_output","privileged_context","reward","feedback","tag","metadata"]),logicalType:e.enum(["string","integer","float","boolean","json","messages"]),nullable:e.boolean(),policy:e.enum(["visible","privileged","metadata"])}),$r=e.object({schemaVersion:e.literal("openpond.datasetSemanticSchema.v1"),fields:e.array(Mr).min(1).max(1e4),schemaHash:se}),zr=e.object({id:F,split:ie,path:Pa,contentHash:se,schemaHash:se,sizeBytes:e.number().int().nonnegative(),rowCount:e.number().int().positive(),rowGroupCount:e.number().int().positive()}),Ge=e.object({schemaVersion:e.literal("openpond.datasetArtifact.v1"),id:F,tasksetId:F,tasksetRevision:e.number().int().positive(),contentHash:se,format:e.literal("parquet"),schema:$r,shards:e.array(zr).min(1).max(1e5),rowCount:e.number().int().positive(),splitCounts:e.record(ie,e.number().int().nonnegative()),sourceReceiptRefs:e.array(F).min(1).max(1e5),mappingHash:se,qualityReportHash:se,createdAt:X}),Ps=e.object({schemaVersion:e.literal("openpond.datasetArtifactSummary.v1"),artifactId:F,tasksetId:F,tasksetRevision:e.number().int().positive(),format:e.literal("parquet"),rowCount:e.number().int().positive(),splitCounts:e.record(ie,e.number().int().nonnegative()),sizeBytes:e.number().int().nonnegative(),contentHash:se,available:e.boolean(),unavailableReason:e.string().trim().min(1).max(2e3).nullable(),createdAt:X}),qr=e.object({schemaVersion:e.literal("openpond.datasetCatalogItem.v1"),tasksetId:F,tasksetRevision:e.number().int().positive(),artifactId:F.nullable(),name:e.string().trim().min(1).max(500),status:e.enum(["draft","awaiting_disclosure_approval","awaiting_materialization_approval","materializing","validating","needs_review","baselining","ready","blocked","failed","archived"]),storageKind:e.enum(["inline","parquet"]),rowCount:e.number().int().nonnegative(),splitCounts:e.record(ie,e.number().int().nonnegative()),sizeBytes:e.number().int().nonnegative().nullable(),available:e.boolean(),unavailableReason:e.string().trim().min(1).max(2e3).nullable(),createdAt:X,updatedAt:X}),As=e.object({schemaVersion:e.literal("openpond.datasetCatalog.v1"),profileId:F,datasets:e.array(qr),generatedAt:X}),Es=e.object({schemaVersion:e.literal("openpond.datasetArtifactRegistry.v1"),manifest:Ge,profileId:F,storageRoot:e.string().trim().min(1).max(4e3),relativeManifestPath:Pa,available:e.boolean(),unavailableReason:e.string().trim().min(1).max(2e3).nullable(),verifiedAt:X.nullable(),createdAt:X,updatedAt:X}),js=e.object({split:ie.nullable().default(null),cursor:e.string().trim().min(1).max(2e3).nullable().default(null),limit:e.number().int().min(1).max(100).default(25),columns:e.array(e.string().trim().min(1).max(500)).max(100).default([])}),Ds=e.object({schemaVersion:e.literal("openpond.datasetRowPage.v1"),tasksetId:F,tasksetRevision:e.number().int().positive(),artifactHash:se,split:ie.nullable(),rows:e.array(e.record(e.string(),e.unknown())).max(100),nextCursor:e.string().max(2e3).nullable(),totalRows:e.number().int().nonnegative(),returnedRows:e.number().int().nonnegative()}),Br=e.object({schemaVersion:e.literal("openpond.datasetStorageSettings.v1"),datasetStorePath:e.string().trim().min(1).max(4e3),updatedAt:X}),Vr=e.object({id:F,label:e.string().trim().min(1).max(500),path:e.string().trim().min(1).max(4e3),datasetStorePath:e.string().trim().min(1).max(4e3),kind:e.enum(["local","network","removable","cache"]),configured:e.boolean(),mounted:e.boolean(),writable:e.boolean(),totalBytes:e.number().int().nonnegative().nullable(),freeBytes:e.number().int().nonnegative().nullable()}),Hs=e.object({schemaVersion:e.literal("openpond.datasetStorageState.v1"),settings:Br,storageRoots:e.array(Vr)}),Cs=e.object({datasetStorePath:e.string().trim().min(1).max(4e3)});var _e=e.string().trim().min(1).max(240),Fr=e.string().trim().min(1),Ie=e.string().trim().min(8).max(256),Or=e.record(e.string(),e.unknown()).default({}),Gr=e.string().trim().min(7).max(256),Nr=e.enum(["pending","approved","review","blocked"]),dt=e.object({id:_e,profileId:_e,title:e.string().trim().min(1).max(500),sourceHash:Ie,occurredAt:Fr,licensingStatus:Nr,secretScanStatus:e.enum(["pending","passed","blocked"]),piiScanStatus:e.enum(["pending","passed","review","blocked"]),metadata:Or}),Ur=dt.extend({schemaVersion:e.literal("openpond.huggingFaceDatasetSource.v1"),kind:e.literal("huggingface"),repositoryId:e.string().trim().regex(/^[^/\s]+\/[^/\s]+$/).max(500),repositoryUrl:e.string().url().max(2e3),revision:Gr,configuration:e.string().trim().min(1).max(500),upstreamSplits:e.array(e.string().trim().min(1).max(500)).min(1).max(1e3),gated:e.boolean(),private:e.boolean(),declaredLicense:e.string().trim().min(1).max(500).nullable(),sourceFileHashes:e.array(Ie).min(1).max(1e5)}),Lr=dt.extend({schemaVersion:e.literal("openpond.uploadedFileDatasetSource.v1"),kind:e.literal("uploaded_file"),originalFileNames:e.array(e.string().trim().min(1).max(500)).min(1).max(1e3),mediaTypes:e.array(e.string().trim().min(1).max(200)).min(1).max(1e3),sourceFileHashes:e.array(Ie).min(1).max(1e3),totalBytes:e.number().int().nonnegative(),parserVersion:e.string().trim().min(1).max(200)}),Jr=dt.extend({schemaVersion:e.literal("openpond.generatedDatasetSource.v1"),kind:e.literal("generated"),generatorId:_e,generatorVersion:e.string().trim().min(1).max(200),seed:e.number().int(),generatorHash:Ie}),Wr=dt.extend({schemaVersion:e.literal("openpond.learningBatchDatasetSource.v1"),kind:e.literal("learning_batch"),batch:e.object({id:_e,revision:e.number().int().positive(),contentHash:Ie}).strict(),taskDefinition:e.object({id:_e,revision:e.number().int().positive(),contentHash:Ie}).strict(),admittedBy:_e}),Aa=e.discriminatedUnion("kind",[Ur,Lr,Jr,Wr]);var Ea=e.object({schemaVersion:e.literal("openpond.harnessActionBinding.v1"),actionId:tt,modelToolName:e.string().trim().min(1).max(64).regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/),description:e.string().trim().min(1).max(1e3),inputSchema:e.record(e.string(),e.unknown()),actionSchemaHash:at,agentRelease:rt,implementationHash:at,runtimeBindingId:tt,capabilityReceiptHash:at,sideEffect:e.enum(["read","write"]),studentVisible:e.boolean(),timeoutMs:e.number().int().positive().max(36e5),episodeArgumentBindings:e.array(e.object({argument:tt,source:e.literal("case_id")}).strict()).max(20).default([])}).strict();var y=e.string().trim().min(1).max(240),Ft=e.string().trim().min(1),Kr=e.string().trim().min(8).max(256),Ot=e.string().trim().regex(/^[a-f0-9]{64}$/),Xr=e.string().trim().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/),N=e.record(e.string(),e.unknown()).default({}),lt=y.nullable();function Ne(t){let a=t.trim().replaceAll("\\","/");return!a||a.startsWith("/")||a==="."||a===".."?!1:!a.split("/").some(r=>!r||r==="."||r==="..")}o(Ne,"safeRelativeFilePath");function Yr(t){let a=t.trim();return a.length>0&&a!=="."&&a!==".."&&!a.includes("/")&&!a.includes("\\")&&!a.includes("\0")}o(Yr,"safeFileName");var mt=ie,pt=e.enum(["general","benchmark"]),ut=e.object({schemaVersion:e.literal("openpond.tasksetBenchmark.v1"),definitionId:y,releaseId:y,releaseHash:Ot,managedReleasePath:e.string().trim().min(1).max(1e3).refine(Ne,"Benchmark release paths must remain relative."),adaptationSplit:mt,evaluationSplit:mt,primaryMetric:e.enum(["foreground_tokens","success_rate","latency_ms","cost_usd"]),qualityGate:e.enum(["none","non_regression","all_pass"]),source:e.enum(["builtin","imported"]),metadata:N}),ft=e.object({schemaVersion:e.literal("openpond.tasksetPreferenceComparisonBinding.v1"),releaseId:y,releaseHash:Ot,publishedAt:Ft,metadata:N}),Qr=e.object({status:e.enum(["pending","granted","denied","revoked"]),scope:e.enum(["metadata_only","selected_turns","full_session"]),grantedBy:lt,grantedAt:Ft.nullable(),purpose:e.literal("task_authoring_and_evaluation")}),Zr=e.object({schemaVersion:e.literal("openpond.trainingSource.v1"),id:y,profileId:y,sessionId:y,turnIds:e.array(y).max(1e3).default([]),workspaceId:lt,sourceHash:Kr,clusterKey:y,title:e.string().trim().min(1).max(500),occurredAt:Ft,consent:Qr,connectedAppIds:e.array(y).max(100).default([]),secretScanStatus:e.enum(["pending","passed","blocked"]),piiScanStatus:e.enum(["pending","passed","review","blocked"]),licensingStatus:e.enum(["pending","approved","review","blocked"]),metadata:N}),ht=e.union([Zr,Aa]),gt=e.object({policyVisibleFields:e.array(y).max(1e3).default([]),privilegedFields:e.array(y).max(1e3).default([]),hiddenGraderRefs:e.array(y).max(100).default([]),connectedAppScopes:e.array(y).max(100).default([])}),en=e.object({id:y,sourceRefId:y,artifactRef:e.string().trim().min(1).max(4e3).refine(Ne,"Task asset references must be safe relative paths."),fileName:e.string().trim().min(1).max(500).refine(Yr,"Task asset file names must not contain path separators."),mediaType:e.string().trim().min(1).max(200),sha256:Ot,sizeBytes:e.number().int().nonnegative().max(25e7),split:mt,metadata:N}),tn=e.object({path:e.string().trim().min(1).max(1e3).refine(Ne,"Required output paths must stay inside the Work output directory."),mediaType:e.string().trim().min(1).max(200),schemaRef:y.nullable().optional(),maxBytes:e.number().int().positive().max(1e7).optional(),metadata:N}),Pe=e.object({schemaVersion:e.literal("openpond.taskData.v1"),id:y,clusterKey:y,split:mt,input:e.record(e.string(),e.unknown()),expectedOutput:e.record(e.string(),e.unknown()).nullable(),policyVisibleContext:e.record(e.string(),e.unknown()).default({}),privilegedContextRef:lt,sourceRefs:e.array(y).min(1).max(100),assets:e.array(en).max(1e3).optional(),resourceRefs:e.array(y).max(1e3).optional(),requiredOutputs:e.array(tn).max(100).optional(),tags:e.array(y).max(100).default([]),metadata:N}),an=e.object({id:y,kind:e.enum(["file","catalog","configuration","code_module"]),path:e.string().trim().min(1).max(1e3).refine(Ne,"Environment resource paths must remain relative."),mediaType:e.string().trim().min(1).max(200).nullable().optional(),visibility:e.enum(["policy_visible","policy_hidden","privileged"]),required:e.boolean(),metadata:N}),Ae=e.object({id:y,taskId:lt,sourceRefs:e.array(y).min(1).max(100),artifactRef:y,approved:e.boolean(),confidence:e.number().min(0).max(1),metadata:N}),ja=Ae.extend({kind:e.literal("demonstration"),prompt:e.string().max(1e5).nullable().default(null),response:e.string().max(2e5).nullable().default(null)}),Da=Ae.extend({kind:e.literal("preference"),prompt:e.string().max(1e5),chosen:e.string().max(2e5),rejected:e.string().max(2e5),rationale:e.string().max(1e5).nullable().default(null)}),Ha=Ae.extend({kind:e.literal("correction"),original:e.string().max(2e5),corrected:e.string().max(2e5),rationale:e.string().max(1e5).nullable().default(null)}),Ca=Ae.extend({kind:e.literal("feedback"),feedback:e.string().max(1e5),polarity:e.enum(["positive","negative","mixed","neutral"])}),Ma=Ae.extend({kind:e.literal("reward"),task:e.string().max(1e5),rules:e.array(e.object({id:y,points:e.number().finite(),condition:e.string().trim().min(1).max(1e5)})).min(1).max(1e3),otherwisePoints:e.number().finite(),executable:e.boolean()}),$a=Ae.extend({kind:e.literal("label"),labelKind:e.literal("rubric"),task:e.string().max(1e5),criteria:e.array(e.object({id:y,label:e.string().trim().min(1).max(500),description:e.string().trim().min(1).max(1e5)})).min(1).max(1e3),calibrationExamples:e.object({positive:e.string().trim().min(1).max(2e5),negative:e.string().trim().min(1).max(2e5),boundary:e.string().trim().min(1).max(2e5)})}),Js=e.discriminatedUnion("kind",[ja,Da,Ha,Ca,Ma,$a]),kt=e.object({demonstrations:e.array(ja).max(1e5).default([]),preferences:e.array(Da).max(1e5).default([]),corrections:e.array(Ha).max(1e5).default([]),feedback:e.array(Ca).max(1e5).default([]),rewards:e.array(Ma).max(1e5).default([]),labels:e.array($a).max(1e5).default([])}),vt=e.object({protocolVersion:e.literal("openpond.taskEnvironment.v1"),kind:e.enum(["chat","agent","program","stateful_harness","work"]),entrypoint:e.string().trim().min(1).max(1e3),stateful:e.boolean(),deterministicSeeds:e.boolean(),toolNames:e.array(y).max(200).default([]),actionBindings:e.array(Ea).max(200).optional(),lifecycle:e.array(e.enum(["create","reset","step","grade","cleanup"])).min(1),defaultTimeoutMs:e.number().int().positive().max(36e5),networkPolicy:e.enum(["none","declared_read_only","declared_scoped"]),resources:e.array(an).max(1e4).optional(),metadata:N}),bt=e.object({schemaVersion:e.literal("openpond.tasksetCapabilities.v1"),taskKind:e.enum(["chat","single_agent","multi_agent","custom_program"]),supportedSignals:e.array(e.enum(["demonstration","preference","correction","feedback","reward","label"])),compatibleMethods:e.array(e.enum(["none","retrieval","sft","dpo","grpo","ppo","sdft","opd","opsd","sdpo"])),rewardKinds:e.array(e.enum(["none","exact","deterministic","model_judge","human"])),requiresTools:e.boolean(),requiresState:e.boolean(),requiresPrivilegedGrading:e.boolean(),environmentPlacements:e.array(e.enum(["local","remote","colocated","provider_native"])),exportable:e.boolean(),portabilityBlockers:e.array(e.string().trim().min(1).max(2e3)).default([])}),St=e.object({id:y,version:e.string().trim().min(1).max(100),label:e.string().trim().min(1).max(500),weight:e.number().min(0).max(1e3).default(1),hardGate:e.boolean().default(!1),rewardEligible:e.boolean().default(!1),privileged:e.boolean().default(!1),metadata:N}),rn=St.extend({kind:e.enum(["content","schema","file","diff","test","runtime_event","state"]),config:e.record(e.string(),e.unknown())}),nn=St.extend({kind:e.literal("model_judge"),rubric:e.string().trim().min(1).max(5e4),judge:nt,calibrationFixtureRefs:e.array(y).min(1).max(500),calibrationStatus:e.enum(["pending","passed","failed"]),temperature:e.number().min(0).max(2).default(0)}),sn=St.extend({kind:e.literal("human"),rubric:e.string().trim().min(1).max(5e4),reviewerRole:e.string().trim().min(1).max(500)}),on=St.extend({kind:e.literal("custom_verifier"),runtime:ma.optional(),module:e.string().trim().min(1).max(1e3).refine(Ne,"Custom verifier modules must use a safe relative path."),exportName:Xr,timeoutMs:e.number().int().positive().max(3e5),networkPolicy:e.literal("none")}),Tt=e.union([rn,nn,sn,on]),cn=e.enum(["positive","negative","boundary","adversarial","prompt_injection","infrastructure_failure"]),yt=e.object({id:y,taskId:y,label:cn,output:e.record(e.string(),e.unknown()),infrastructureError:e.string().trim().min(1).max(1e4).nullable(),expectedPassed:e.boolean(),expectedRewardEligible:e.boolean(),metadata:N});var Ee=e.string().trim().min(1).max(240),za=e.string().trim().min(1),dn=e.string().trim().min(8).max(256),mn=e.string().trim().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/),ln=e.record(e.string(),e.unknown()).default({});function qa(t){let a=t.trim().replaceAll("\\","/");return!a||a.startsWith("/")||a==="."||a===".."?!1:!a.split("/").some(r=>!r||r==="."||r==="..")}o(qa,"safeRelativeFilePath");var pn=Pe.extend({sourceRefs:e.array(Ee).max(100).default([])}),un=e.enum(["draft","validating","needs_review","published"]),fn=e.object({enabled:e.boolean(),candidateCount:e.number().int().min(2).max(4),minimumSamples:e.number().int().min(1).max(1e4).default(100),allowTies:e.boolean(),allowRejectAll:e.boolean(),rubric:e.string().trim().max(5e4),criteria:e.array(e.object({id:Ee,label:e.string().trim().min(1).max(500),description:e.string().trim().max(1e4),weight:e.number().nonnegative().max(1e3)})).max(100)}),hn=e.object({mode:e.enum(["text","structured_json","artifacts"]),jsonSchema:e.record(e.string(),e.unknown()).nullable(),renderer:e.object({module:e.string().trim().min(1).max(1e3).refine(qa,"Renderer modules must use a safe relative path."),exportName:mn,configRef:e.string().trim().min(1).max(1e3).refine(qa,"Renderer configuration must use a safe relative path.").nullable().default(null)}).nullable()}).superRefine((t,a)=>{t.mode==="structured_json"&&!t.jsonSchema&&a.addIssue({code:"custom",message:"Structured JSON output requires a JSON Schema.",path:["jsonSchema"]}),t.mode==="text"&&t.renderer&&a.addIssue({code:"custom",message:"Text output cannot configure an artifact renderer.",path:["renderer"]})}),ve=e.object({schemaVersion:e.literal("openpond.tasksetDraft.v1"),id:Ee,revision:e.number().int().positive(),profileId:Ee,modelScope:e.object({modelId:Ee,expectedModelRevision:e.number().int().positive(),source:Re.optional()}).strict().nullable().default(null),name:e.string().trim().max(500),objective:e.string().trim().max(2e4),purpose:pt.default("general"),benchmark:ut.nullable().default(null),preferenceComparison:ft.nullable().default(null),status:un,sourceRefs:e.array(ht).max(1e5).default([]),datasetArtifact:Ge.nullable().optional(),policy:gt,environment:vt,output:hn.default({mode:"text",jsonSchema:null,renderer:null}),capabilities:bt,metrics:st,review:fn,tasks:e.array(pn).max(1e6).default([]),graders:e.array(Tt).max(1e3).default([]),graderFixtures:e.array(yt).max(1e5).default([]),learningSignals:kt,publishedTasksetRef:e.object({id:Ee,revision:e.number().int().positive(),contentHash:dn}).nullable(),createdAt:za,updatedAt:za,metadata:ln}).superRefine((t,a)=>{t.purpose==="benchmark"&&!t.benchmark&&a.addIssue({code:"custom",message:"Benchmark drafts require an immutable benchmark binding.",path:["benchmark"]}),t.purpose!=="benchmark"&&t.benchmark&&a.addIssue({code:"custom",message:"Only benchmark drafts may carry a benchmark binding.",path:["benchmark"]}),t.datasetArtifact&&t.tasks.length>0&&a.addIssue({code:"custom",message:"Artifact-backed drafts may not duplicate canonical rows inline.",path:["tasks"]}),t.status==="published"&&!t.publishedTasksetRef&&a.addIssue({code:"custom",message:"Published drafts require an immutable Taskset reference.",path:["publishedTasksetRef"]})});var gn=new Set(["taskset.json","capabilities.json","data/tasks.jsonl","tasks/tasks.jsonl","graders/graders.json","fixtures/grader-fixtures.json","metrics/policy.json","assets/manifest.json","environment/contract.json","environment/taskset.ts","rubrics/preference-review.md","comparisons/policy.json"]);function Ba(t){return gn.has(K.parse(t))}o(Ba,"isManagedTasksetDraftFilePath");function Gt(t){let a=ve.parse(t);return new Map([["taskset.json",te(a)],["tasks/tasks.jsonl",vn(a.tasks)],["graders/graders.json",te(a.graders)],["fixtures/grader-fixtures.json",te(a.graderFixtures)],["metrics/policy.json",te(a.metrics)],["assets/manifest.json",te(a.tasks.flatMap(r=>r.assets??[]))],["environment/contract.json",te(a.environment)],["rubrics/preference-review.md",kn(a)],["comparisons/policy.json",te(a.review)]])}o(Gt,"renderTasksetDraftManifests");function kn(t){let a=t.review.criteria.length?`
|
|
3
|
-
|
|
4
|
-
## Criteria
|
|
5
|
-
|
|
6
|
-
${t.review.criteria.map(r=>`- **${r.label}** (${r.weight}): ${r.description}`).join(`
|
|
7
|
-
`)}`:"";return`# Preference review rubric
|
|
8
|
-
|
|
9
|
-
${t.review.rubric}${a}
|
|
10
|
-
`}o(kn,"rubricMarkdown");function vn(t){return t.length?`${t.map(a=>JSON.stringify(a)).join(`
|
|
11
|
-
`)}
|
|
12
|
-
`:""}o(vn,"jsonLines");var Nt=64*1024*1024,Va=e.string().regex(/^[a-f0-9]{64}$/),Fa=e.object({path:K,contentHash:Va,sizeBytes:e.number().int().nonnegative().max(Nt),base64:e.string().max(Nt)}).strict(),bn=e.object({schemaVersion:e.literal("openpond.tasksetDraftWorkspace.v1"),draft:ve,files:e.array(Fa).max(1e4)}).strict(),xt=bn.extend({contentHash:Va}).strict();function Ue(t){le(t,Nt);let a=xt.parse(t),{contentHash:r,...n}=a;if(h(n)!==r)throw new Error("Taskset draft workspace differs from its retained bytes.");let s=null,i=new Set;for(let c of a.files){if(Ba(c.path))throw new Error("Managed Taskset files are represented by the draft document.");if(s!==null&&s>=c.path)throw new Error("Taskset draft file paths must be unique and sorted.");let u=c.path.split("/");for(let p=1;p<u.length;p++)if(i.has(u.slice(0,p).join("/")))throw new Error("A Taskset draft file occupies another file's directory.");Ut(c),i.add(c.path),s=c.path}return a}o(Ue,"validateTasksetDraftWorkspace");function Ut(t){let a=Fa.parse(t),r;try{r=atob(a.base64)}catch{throw new Error("Taskset draft file contains invalid base64.")}if(btoa(r)!==a.base64)throw new Error("Taskset draft file contains noncanonical base64.");let n=Uint8Array.from(r,s=>s.charCodeAt(0));if(n.byteLength!==a.sizeBytes||$(n)!==a.contentHash)throw new Error("Taskset draft file differs from its retained bytes.");return n}o(Ut,"decodeTasksetDraftWorkspaceFile");var je=e.string().trim().min(1).max(500),Sn=e.string().regex(/^[a-f0-9]{64}$/),wt=e.object({id:je,revision:e.number().int().positive(),contentHash:Sn}).strict(),Tn=e.object({schemaVersion:e.literal("openpond.hostedTasksetSummary.v1"),id:je,teamId:je,release:wt,name:e.string().min(1).max(500),description:e.string().max(2e4),taskCount:e.number().int().nonnegative(),buildIntent:e.string().min(1).max(100),methodHint:e.string().min(1).max(100).nullable(),packageBytes:e.number().int().nonnegative().nullable(),storedBytes:e.number().int().nonnegative().nullable(),createdAt:e.string().datetime({offset:!0})}).strict(),_i=e.object({afterId:je.optional(),limit:e.number().int().min(1).max(100).default(30),modelProjectId:je.optional()}).strict(),Ii=e.object({items:e.array(Tn).max(100),nextCursor:je.nullable()}).strict(),Pi=e.object({code:e.string().min(1),message:e.string().min(1)}).strict();function Oa(t){return`model-authored-taskset-${h({owner:t.owner,root:t.root})}`}o(Oa,"modelAuthoredTasksetId");function Lt(t){if(t.metadata.modelTasksetAuthoring===void 0)return null;let a=Bt.parse(t.metadata.modelTasksetAuthoring);if(t.id!==Oa(a)||(t.revision===1?!j(a.parent,a.root):a.parent.id!==t.id||a.parent.revision!==t.revision-1))throw new Error("Authored Taskset revision differs from its ownership lineage.");return a}o(Lt,"assertModelTasksetAuthoring");var Gi=e.string().regex(/^[a-f0-9]{64}$/);var oe=e.object({environment:re,verifierSet:ne,javascript:ct}).strict(),Ni=e.object({actions:e.array(e.object({name:e.string().min(1).max(64),arguments:e.record(e.string(),e.unknown())}).strict()).max(1e3)}).strict();function Le(t){if(!t.environmentRelease||!t.verifierSetRelease)throw new Error("Starter execution release references are missing.");return`starter-execution-${A({environment:t.environmentRelease,verifiers:t.verifierSetRelease}).contentHash}`}o(Le,"modelStarterExecutionAssetId");function Ga(t){let a=oe.parse(t);Na(a);let r=Le({environmentRelease:{id:a.environment.id,contentHash:a.environment.contentHash},verifierSetRelease:{id:a.verifierSet.id,contentHash:a.verifierSet.contentHash}}),n=ga({text:we(a),path:"environment/execution.json",mediaType:"application/json",visibility:"host_private"}),{contentHash:s,...i}=n;return A({...i,id:r,asset:{...i.asset,id:r}})}o(Ga,"createModelStarterExecutionAsset");function be(t,a){return A({value:t}).contentHash===A({value:a}).contentHash}o(be,"equal");function Na(t){Sa(t.javascript);for(let a of[t.environment,t.verifierSet]){let{contentHash:r,...n}=a;if(A(n).contentHash!==r)throw new Error(`Starter execution resource integrity failed: ${a.id}.`)}if(!be(t.environment.metadata.javascriptEnvironment,I(t.javascript)))throw new Error("Starter execution resources differ from its declared task context.")}o(Na,"assertExecutionIntegrity");function Rt(t,a,r){if(!t){if(a.environment.entrypoint==="openpond.javascript-environment.v1")throw new Error("Starter JavaScript execution resources are missing.");return}let{environment:n,verifierSet:s,javascript:i}=t;if(Na(t),!be(a.environmentRelease,{id:n.id,contentHash:n.contentHash})||!be(a.verifierSetRelease,{id:s.id,contentHash:s.contentHash})||!be(n.contract,a.environment)||!be(s.graders,a.graders)||!be(a.tools,i.tools)||!be(n.metadata.javascriptEnvironment,I(i)))throw new Error("Starter execution resources differ from its declared task context.");let c=n.contract;if(c.entrypoint!=="openpond.javascript-environment.v1"||c.kind!=="agent"||!c.stateful||!c.deterministicSeeds||c.networkPolicy!=="none"||new Set(c.lifecycle).size!==5||a.capabilities.length||a.policy.connectedAppScopes.length)throw new Error("Starter JavaScript environment declares unsupported host capabilities.");for(let u of[i.module,n.actionSchemaRef,n.observationSchemaRef,n.stateSchemaRef]){if(!u)continue;let p=r.find(d=>d.id===u.id);if(!p)throw new Error(`Starter environment asset is missing: ${u.id}.`);W(p,u)}for(let u of a.tasks){let p=r.find(m=>m.id===u.privilegedContextRef);if(!p||p.asset.visibility!=="host_private"||p.asset.mediaType!=="application/json")throw new Error(`Starter private initial state is missing: ${u.id}.`);let d=JSON.parse(W(p,p.asset));if(!d||typeof d!="object"||Array.isArray(d))throw new Error(`Starter initial state must be a JSON object: ${u.id}.`);le(d,i.maxStateBytes)}}o(Rt,"validateModelStarterExecution");var Ua=e.object({environment:re,verifierSet:ne}).strict();var Ja=e.object({scopeId:e.string().trim().min(1).max(500),modelId:e.string().trim().min(1).max(500)}).strict(),Jt=e.object({schemaVersion:e.literal("openpond.modelTasksetDerivation.v1"),owner:Ja,root:H,parent:H}).strict(),Wt=e.object({taskset:V,taskDefinition:Ve,rewardBinding:ue,rewards:e.array(pe).min(1).max(100),assets:e.array(ae).max(1e3),executionResources:Ua.optional(),execution:oe.optional(),instructionMode:e.literal("per_task").optional()}).strict(),Y=o((t,a)=>A({value:t}).contentHash===A({value:a}).contentHash,"same"),La=o((t,a)=>`model-taskset-${A({owner:t,root:a}).contentHash}`,"identity");function Wa(t){let a=Ja.parse(t.owner),r=t.source,n=t.edits??r,s=r.taskset.metadata.modelTasksetDerivation===void 0?null:Jt.parse(r.taskset.metadata.modelTasksetDerivation);if(s&&r.taskset.id!==La(s.owner,s.root))throw new Error("Derived Taskset identity differs from its ownership lineage.");let i=s&&Y(s.owner,a),c=i?s.root:I(r.taskset),u=i?r.taskset.id:La(a,c),p=i?r.taskset.revision+1:1,d=ue.parse(t.rewardBinding),m=t.rewards.map(me=>pe.parse(me)),l=fe(d,m);if(d.recipeRef)throw new Error("Resolve the Reward recipe into one standalone binding before deriving a Taskset.");let g={...n.taskset.policy,hiddenGraderRefs:l.filter(me=>me.privileged).map(me=>me.id)},b=n.executionResources??n.execution,k=b?.environment??ye({schemaVersion:"openpond.environmentRelease.v1",id:`${u}-environment`,revision:1,contract:n.taskset.environment,actionSchemaRef:null,observationSchemaRef:null,stateSchemaRef:null,artifactCollection:{maxArtifacts:1e5,maxTotalBytes:25e7},adapterConformanceHashes:{},metadata:{}}),v=xe({schemaVersion:"openpond.verifierSetRelease.v1",id:`${u}-verifiers`,revision:p,graders:l,isolation:b?.verifierSet.isolation??{processBoundary:"isolated_process",networkPolicy:"none",defaultTimeoutMs:Math.min(n.taskset.environment.defaultTimeoutMs,3e5)},calibrationReceiptRefs:[],metadata:b?{sourceVerifierSet:I(b.verifierSet)}:{}}),R={environment:k,verifierSet:v},P=n.execution?{...n.execution,verifierSet:v}:void 0,{contentHash:D,...S}=n.taskset,{contentHash:Te,...Z}=n.taskDefinition,f={...Z.execution,policy:g,environmentRelease:{id:k.id,contentHash:k.contentHash},verifierSetRelease:{id:v.id,contentHash:v.contentHash}},T=Ve.parse(A({...Z,id:`${u}-definition`,revision:p,rewardBinding:I(d),execution:f})),x=r.taskset.metadata.starterAuthoring??r.taskset.metadata.ordinaryAuthoring,M=x&&typeof x=="object"&&!Array.isArray(x)&&"graderFixtures"in x?x.graderFixtures:void 0,de=V.parse(A({...S,...f,id:u,revision:p,graders:l,metadata:{starter:{taskDefinition:I(T),rewardBinding:I(d)},rewardExecution:{binding:d,rewards:m},...M===void 0?{}:{starterAuthoring:{graderFixtures:M}},...n.taskset.metadata.environmentResources===void 0?{}:{environmentResources:n.taskset.metadata.environmentResources},modelTasksetDerivation:{schemaVersion:"openpond.modelTasksetDerivation.v1",owner:a,root:c,parent:I(r.taskset)}}}));return Kt({taskset:de,taskDefinition:T,rewardBinding:d,rewards:m,assets:t.assets,executionResources:R,...P?{execution:P}:{},...r.instructionMode?{instructionMode:r.instructionMode}:{}})}o(Wa,"compileModelTasksetReward");function Kt(t){let a=Wt.parse(t),{taskset:r,taskDefinition:n,rewardBinding:s,rewards:i,assets:c,execution:u}=a;for(let v of[r,n,s,...i,...c])ot(v);if(it(r),s.recipeRef)throw new Error("Resolve the Reward recipe into one standalone binding before deriving a Taskset.");if(!j(n.rewardBinding,I(s)))throw new Error("Taskset definition differs from its Reward binding.");let{policy:p,environment:d,environmentRelease:m,tools:l,capabilities:g,verifierSetRelease:b}=r;if(!Y(n.execution,{policy:p,environment:d,...m?{environmentRelease:m}:{},tools:l,capabilities:g,...b?{verifierSetRelease:b}:{}}))throw new Error("Taskset definition differs from its execution resources.");if(!Y(r.graders,fe(s,i)))throw new Error("Taskset graders differ from its Reward binding.");if(r.metadata.starter!==void 0){let v=e.object({taskDefinition:H,rewardBinding:H}).passthrough().parse(r.metadata.starter);if(!j(v.taskDefinition,I(n))||!j(v.rewardBinding,I(s)))throw new Error("Taskset metadata differs from its immutable grading resources.")}if(r.metadata.rewardExecution!==void 0&&!Y(r.metadata.rewardExecution,{binding:s,rewards:i}))throw new Error("Taskset embedded Rewards differ from its immutable grading resources.");if(r.metadata.rewardBinding!==void 0&&!j(H.parse(r.metadata.rewardBinding),I(s)))throw new Error("Taskset Reward reference differs from its immutable grading resources.");let k=a.executionResources??u;if(r.environmentRelease&&!k)throw new Error("Deriving a Taskset requires its pinned execution resources.");if(k&&(!he(k.environment)||!ge(k.verifierSet)||!Y(r.environmentRelease,{id:k.environment.id,contentHash:k.environment.contentHash})||!Y(r.verifierSetRelease,{id:k.verifierSet.id,contentHash:k.verifierSet.contentHash})||!Y(r.environment,k.environment.contract)||!Y(r.graders,k.verifierSet.graders)))throw new Error("Taskset differs from its pinned execution resources.");if(Rt(u,r,c),new Set(c.map(v=>v.id)).size!==c.length)throw new Error("Taskset asset identities must be unique.");for(let v of c)W(v,v.asset);for(let v of k?[k.environment.actionSchemaRef,k.environment.observationSchemaRef,k.environment.stateSchemaRef]:[]){if(!v)continue;let R=c.find(P=>P.id===v.id);if(!R)throw new Error(`Taskset environment asset is missing: ${v.id}.`);W(R,v)}for(let v of r.tasks){if(n.requiredOutputs&&!Y(v.requiredOutputs,n.requiredOutputs))throw new Error(`Taskset outputs differ from its reviewed definition: ${v.id}.`);if(a.instructionMode!=="per_task"&&v.policyVisibleContext.instructions!==n.instructions||!Ct(n.inputSchema,v.input).valid||v.expectedOutput!==null&&!Ct(n.outputSchema,v.expectedOutput).valid)throw new Error(`Taskset task differs from its declared format: ${v.id}.`);if(v.privilegedContextRef&&!c.some(R=>R.id===v.privilegedContextRef&&R.asset.visibility==="host_private"))throw new Error(`Taskset private context is missing: ${v.id}.`)}for(let v of i){let R=v.implementation,P=[...v.assets,..."verifierRef"in R?[R.verifierRef]:[],..."rubricRef"in R?[R.rubricRef]:[],..."inputContract"in R?[R.inputContract]:[]];for(let D of P){let S=c.find(Te=>Te.id===D.id);if(!S||D.visibility==="policy")throw new Error(`Taskset Reward requires its private asset: ${D.id}.`);W(S,D)}}return a}o(Kt,"validateModelTasksetPackage");var De=e.string().trim().min(1).max(240),Ka=w.extend({revision:e.number().int().positive()}).strict(),Xa=Ka.extend({teamId:De,jobId:De,plan:w,baseline:w,candidate:w,state:va.shape.state,updatedAt:e.string().datetime()}).strict(),yn=e.object({schemaVersion:e.literal("openpond.trainingAcceptanceGroupPage.v1"),teamId:De,jobId:De,groups:e.array(Xa).max(100),nextCursor:De.nullable()}).strict(),xn=e.object({cursor:De.optional(),limit:e.number().int().min(1).max(100).default(25)}).strict();var O=e.string().trim().min(1).max(191),We=e.string().regex(/^[a-f0-9]{64}$/),Ya=e.object({schemaVersion:e.literal("openpond.trainingPreparationRequest.v1"),teamId:O,operationId:O,projectId:O.nullable(),configuration:e.object({id:O,expectedRevision:e.number().int().positive(),expectedEtag:We}).strict(),batch:H,name:e.string().trim().min(1).max(191),maximumSpendUsd:e.number().finite().positive().max(1e6)}).strict(),Qa=e.object({schemaVersion:e.literal("openpond.trainingPreparationPlan.v1"),id:O,creatorUserId:O,request:Ya,requestHash:We,source:e.lazy(()=>Xt),submissionHash:We,createdAt:e.string().datetime({offset:!0})}).strict(),Za=Qa.extend({contentHash:We}).strict(),er=e.object({schemaVersion:e.literal("openpond.trainingPreparationReceipt.v1"),plan:Za,revision:e.number().int().positive(),state:e.enum(["prepared","submitted","cancelled"]),jobId:O.nullable()}).strict().superRefine((t,a)=>{t.state==="submitted"!=!!t.jobId&&a.addIssue({code:"custom",path:["jobId"],message:"Only submitted preparations identify a job."})}),wn=e.object({teamId:O,planHash:We,expectedRevision:e.number().int().positive()}).strict(),Rn=e.object({projectId:O.optional(),state:e.enum(["prepared","submitted","cancelled"]).optional(),afterId:O.optional(),limit:e.number().int().min(1).max(100).default(25)}).strict(),_n=e.object({schemaVersion:e.literal("openpond.trainingPreparationPage.v1"),teamId:O,items:e.array(er).max(100),nextCursor:O.nullable()}).strict();var In=e.object({schemaVersion:e.literal("openpond.trainingHarnessSourcePublication.v1"),harnessRelease:rt,sourcePackageHash:e.string().regex(/^[a-f0-9]{64}$/),sizeBytes:e.number().int().positive().max(67108864)}).strict();var Vo=e.array(e.object({id:e.string().trim().min(1)}).catchall(e.unknown())).min(1).max(1e3),Fo=e.object({binding:ue,rewards:e.array(pe).min(1).max(100)}).strict();var Pn=e.object({id:e.string().trim().min(1),clusterKey:e.string().trim().min(1),split:e.enum(["train","validation","frozen_eval"])}).passthrough(),An=e.object({schemaVersion:e.literal("openpond.trainingEvaluationSource.v1"),taskset:H,tasks:e.array(Pn).min(1).max(1e4),assets:e.array(e.object({path:e.string().trim().min(1).max(2e3),sha256:e.string().regex(/^[a-f0-9]{64}$/),sizeBytes:e.number().int().nonnegative(),encoding:e.literal("base64"),content:e.string().max(32*1024*1024)}).strict()).max(1e4)}).strict().superRefine((t,a)=>{let r=new Set;t.tasks.forEach((n,s)=>{n.split==="train"&&a.addIssue({code:"custom",path:["tasks",s,"split"],message:"Evaluation sources require held-out tasks."}),r.has(n.id)&&a.addIssue({code:"custom",path:["tasks",s,"id"],message:"Evaluation task identities must be unique."}),r.add(n.id)})});var E=e.string().trim().min(1).max(500),z=e.string().regex(/^[a-f0-9]{64}$/),U=e.string().datetime({offset:!0}),Tc=e.object({schemaVersion:e.literal("openpond.trainingInputArtifactUpload.v2"),kind:e.enum(["portable_training_bundle","reward_model_dataset"]),idempotencyKey:e.string().trim().min(1).max(500),sourceManifest:w,payload:e.unknown(),contentHash:z}).strict(),yc=e.object({schemaVersion:e.literal("openpond.trainingInputArtifact.v2"),kind:e.enum(["portable_training_bundle","reward_model_dataset"]),sourceManifest:w,artifactRef:e.string().trim().min(1).max(2e3),contentHash:z,sizeBytes:e.number().int().positive(),createdAt:U}).strict();var ar=e.enum(["reward_model_train","policy_optimize"]),Cn=e.enum(["queued","admitting","provisioning","running","stopping","cancelling","succeeded","failed","cancelled"]),Mn=e.object({id:E,version:e.string().trim().min(1).max(200).nullable().default(null),required:e.boolean().default(!0)}).strict(),Xt=e.object({modelProject:e.object({id:E,portableProjectId:E,revision:e.number().int().positive(),contentHash:z}).strict(),harnessRunManifest:w,harnessRelease:w,taskset:H,tasksetRelease:w,evaluation:e.object({taskset:H,dataset:w}).strict().nullable().optional(),dataset:w,evidenceSets:e.array(w).max(1e4)}).strict(),$n=e.object({kind:e.literal("reward_model_train"),baseModel:qt,preferenceDatasetRelease:w,processorRelease:w,recipe:e.object({schemaVersion:e.literal("openpond.rewardModelRecipe.v1"),method:e.literal("reward_model"),parameterization:e.literal("lora_with_scalar_head")}).catchall(e.unknown())}).strict(),zn=e.object({kind:e.literal("deterministic"),grader:w,composer:w.nullable().default(null)}).strict(),qn=e.object({kind:e.literal("learned_reward"),rewardModelVersion:w,qualificationReport:w.nullable().default(null),evaluationReferences:e.array(w).max(1e3).default([]),scorerArtifact:e.object({artifactRef:e.string().trim().min(1).max(2e3),contentHash:z,executionReceipt:w}).strict(),processorRelease:w,rewardComposerRelease:w}).strict(),Bn=e.object({kind:e.literal("policy_optimize"),baseModel:qt,recipe:ya,rewardSource:e.discriminatedUnion("kind",[zn,qn]),resumeFrom:w.nullable().default(null)}).strict(),Vn=e.discriminatedUnion("kind",[$n,Bn]),Fn=e.object({approvalHash:z,approvedAt:U,exportApproved:e.boolean(),maximumSpendUsd:e.number().nonnegative(),retentionDays:e.number().int().nonnegative().nullable(),region:e.string().trim().min(1).max(200).nullable().default(null)}).strict(),xc=e.object({schemaVersion:e.literal("openpond.trainingJobSubmission.v2"),idempotencyKey:e.string().trim().min(1).max(500),name:e.string().trim().min(1).max(200),source:Xt,job:Vn,requestedCapabilities:e.array(Mn).max(1e3),placementObjective:e.enum(["fast","balanced","economical"]),budget:e.object({maximumSpendUsd:e.number().nonnegative(),maximumWallSeconds:e.number().int().positive()}).strict(),approval:Fn,contentHash:z}).strict().superRefine((t,a)=>{t.approval.maximumSpendUsd!==t.budget.maximumSpendUsd&&a.addIssue({code:"custom",path:["approval","maximumSpendUsd"],message:"Approved spend must equal the immutable Job budget."})});var On=e.object({schemaVersion:e.literal("openpond.trainingJob.v2"),id:E,teamId:E,kind:ar,modelProjectId:E,portableProjectId:E,sourceProjectRevision:e.number().int().positive(),submissionHash:z,state:Cn,phase:e.string().trim().min(1).max(200),version:e.number().int().nonnegative(),progress:e.number().min(0).max(1),rolloutProgress:e.object({groupsCompleted:e.number().int().nonnegative(),groupsTarget:e.number().int().nonnegative(),optimizerUpdatesApplied:e.number().int().nonnegative(),optimizerUpdatesSkipped:e.number().int().nonnegative()}).strict(),accruedSpendUsd:e.number().nonnegative(),terminalReason:e.string().trim().min(1).max(5e3).nullable(),createdAt:U,updatedAt:U,completedAt:U.nullable()}).strict(),wc=e.object({schemaVersion:e.literal("openpond.trainingJobPage.v2"),jobs:e.array(On).max(1e3),nextCursor:e.string().trim().min(1).max(2e3).nullable()}).strict(),Rc=e.object({schemaVersion:e.literal("openpond.trainingJobEvent.v2"),id:E,jobId:E,sequence:e.number().int().nonnegative(),type:E,phase:e.string().trim().min(1).max(200),message:e.string().trim().min(1).max(5e3).nullable(),data:e.record(e.string(),e.unknown()).default({}),createdAt:U}).strict(),_c=e.object({schemaVersion:e.literal("openpond.trainingJobLog.v2"),jobId:E,sequence:e.number().int().nonnegative(),level:e.enum(["debug","info","warning","error"]),message:e.string().max(2e4),createdAt:U}).strict(),Ic=e.object({expectedVersion:e.number().int().nonnegative()}).strict(),Gn=e.object({schemaVersion:e.literal("openpond.trainingJobOutput.v2"),id:E,jobId:E,kind:e.enum(["checkpoint","adapter","scorer","metrics","evaluation","trace","receipt"]),artifactRef:e.string().trim().min(1).max(2e3),contentHash:z,sizeBytes:e.number().int().nonnegative(),metadata:e.record(e.string(),e.unknown()).default({}),createdAt:U}).strict(),Nn=e.object({schemaVersion:e.literal("openpond.trainingExecutionReceipt.v2"),id:E,teamId:E,jobId:E,submissionHash:z,manifestHash:z,recipeHash:z,capabilityHash:z,runtimeRelease:w,inputs:e.array(w).max(1e4),outputs:e.array(w).max(1e4),spendUsd:e.number().nonnegative(),durationSeconds:e.number().nonnegative(),cleanupComplete:e.boolean(),issuer:E,issuedAt:U,signature:e.string().trim().min(1).max(1e4).nullable()}).strict();var Pc=e.object({schemaVersion:e.literal("openpond.trainingJobOutputs.v2"),outputs:e.array(Gn).max(1e4),receipt:Nn.nullable()}).strict(),Ac=e.object({schemaVersion:e.literal("openpond.trainingApiError.v2"),code:e.string().trim().min(1).max(200),message:e.string().trim().min(1).max(5e3),retryable:e.boolean().default(!1),requestId:e.string().trim().min(1).max(500).nullable().default(null),details:e.record(e.string(),e.unknown()).default({})}).strict();var Ec=e.object({schemaVersion:e.literal("openpond.trainingCapabilities.v2"),capabilityHash:z,jobKinds:e.array(ar),methods:e.array(e.string().trim().min(1).max(200)),placements:e.array(e.enum(["local","remote","colocated","provider_native"])),controls:e.object({cancel:e.boolean(),stopAfterGroup:e.boolean(),resumeFromCheckpoint:e.boolean()}).strict(),limits:e.object({maximumSpendUsd:e.number().nonnegative(),maximumWallSeconds:e.number().int().positive(),maximumArtifactBytes:e.number().int().positive()}).strict(),checkedAt:U,expiresAt:U}).strict();var Qt=e.object({batch:ha,evidence:e.array(ua).min(1).max(1e4),decisions:e.array(fa).min(1).max(1e4),sources:e.array(pa).min(1).max(1e4),assets:e.array(ae).max(1e3)}).strict();function rr(t){return t.evidence.filter(a=>a.submission.evaluatorContext!==null).map(a=>{let r=we(a.submission.evaluatorContext),n=new TextEncoder().encode(r);return{asset:{id:`task-evidence:${a.contentHash}`,path:`learning/context/${a.contentHash}.json`,contentHash:$(n),sizeBytes:n.byteLength,mediaType:"application/json",visibility:"host_private"},base64:btoa(Array.from(n,s=>String.fromCharCode(s)).join(""))}})}o(rr,"learningPackageContextFiles");function nr(t,a){let r=Qt.parse(a),n=Fe(t);if(!j(I(r.batch),n.batch))throw new Error("Taskset learning batch differs from its admission metadata.");for(let d of[r.evidence,r.decisions,r.sources,r.assets]){let m=new Set;for(let l of d){ot(l);let g=`${l.id}:${l.revision}`;if(m.has(g))throw new Error("Taskset learning resource identities must be unique.");m.add(g)}}if(r.evidence.length!==r.batch.examples.length||r.decisions.length!==r.batch.examples.length)throw new Error("Taskset learning snapshots must match the admitted batch inventory.");for(let d of r.evidence){let m=r.sources.find(l=>j(I(l),d.source));if(!m||!j(m.taskDefinition,I(n.definition)))throw new Error("Taskset evidence source differs from its task definition.")}if(r.sources.some(d=>!r.evidence.some(m=>j(m.source,I(d)))))throw new Error("Taskset package includes an unrelated learning source.");let s=n.rewards.flatMap(d=>[...d.assets,...d.implementation.kind==="custom_verifier"?[d.implementation.verifierRef]:d.implementation.kind==="model_judge"||d.implementation.kind==="human"?[d.implementation.rubricRef]:[],..."inputContract"in d.implementation?[d.implementation.inputContract]:[]]);for(let d of s){let m=r.assets.find(l=>l.id===d.id);if(!m)throw new Error("Taskset learning Reward asset is missing.");W(m,d)}if(r.assets.some(d=>!s.some(m=>m.id===d.id)))throw new Error("Taskset package includes an unrelated learning asset.");let i=ka({batch:r.batch,definition:n.definition,binding:n.binding,rewards:n.rewards,evidence:r.evidence,decisions:r.decisions}),c=Fe(i);if(h(c)!==h(n))throw new Error("Taskset admission metadata differs from its reviewed snapshots.");let u=o(d=>({policy:d.policy,environment:d.environment,tools:d.tools}),"execution");if(h(u(i))!==h(u(t)))throw new Error("Taskset execution differs from its reviewed task definition.");let p=o(d=>({id:d.id,clusterKey:d.clusterKey,split:d.split,input:d.input,expectedOutput:d.expectedOutput,policyVisibleContext:d.policyVisibleContext,privilegedContextRef:d.privilegedContextRef,artifactRefs:d.artifactRefs,requiredOutputs:d.requiredOutputs??[],tags:d.tags}),"taskContent");if(h(i.tasks.map(p))!==h(t.tasks.map(p)))throw new Error("Taskset rows differ from their reviewed evidence.");return r}o(nr,"validateTasksetLearningResources");var Se=64*1024*1024,It=e.object({asset:ee,base64:e.string().max(Math.ceil(Se/3)*4)}).strict();function Q(t){let a=It.parse(t),r=atob(a.base64);if(btoa(r)!==a.base64)throw new Error(`Taskset asset ${a.asset.id} has noncanonical base64.`);let n=Uint8Array.from(r,s=>s.charCodeAt(0));if(n.byteLength!==a.asset.sizeBytes||$(n)!==a.asset.contentHash)throw new Error(`Taskset asset ${a.asset.id} differs from its immutable bytes.`);return n}o(Q,"decodeTasksetPackageFile");function ce(t){if(t.taskset.environment.entrypoint!=="openpond.javascript-environment.v1")return null;let a=new Map(t.files.map(c=>[c.asset.id,c])),r=o(c=>{let u=a.get(c);if(!u)throw new Error(`Taskset environment asset is missing: ${c}.`);if(u.asset.sizeBytes>524288)throw new Error("Taskset environment source exceeds the authored asset limit.");let p=new TextDecoder("utf-8",{fatal:!0}).decode(Q(u));return ae.parse(A({schemaVersion:"openpond.learningTextAsset.v1",id:c,revision:1,asset:u.asset,text:p}))},"read"),n;if(t.modelResources){if(!t.modelResources.execution)throw new Error("Bound Taskset JavaScript execution resources are missing.");n=oe.parse(t.modelResources.execution)}else{let c=r(Le(t.taskset));if(c.asset.visibility!=="host_private"||c.asset.mediaType!=="application/json"||c.asset.path!=="environment/execution.json")throw new Error("Taskset execution declaration must be private JSON at environment/execution.json.");n=oe.parse(JSON.parse(c.text))}let i=[...new Set([n.javascript.module.id,...[n.environment.actionSchemaRef,n.environment.observationSchemaRef,n.environment.stateSchemaRef].flatMap(c=>c?[c.id]:[]),...t.taskset.tasks.flatMap(c=>c.privilegedContextRef?[c.privilegedContextRef]:[])])].map(r);return Rt(n,t.taskset,i),{execution:n,assets:i}}o(ce,"resolveTasksetPackageExecution");function Ke(t){let a=Ga(t),r=new TextEncoder().encode(a.text),n="";for(let s of r)n+=String.fromCharCode(s);return{asset:a.asset,base64:btoa(n)}}o(Ke,"createTasksetPackageExecutionFile");var Un=Wt.omit({taskset:!0,executionResources:!0}),sr=e.object({schemaVersion:e.literal("openpond.tasksetPackage.v1"),taskset:V,environment:re,verifierSet:ne,files:e.array(It).max(1e4),modelResources:Un.optional(),learningResources:Qt.optional()}).strict(),Ln=sr.extend({contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict();function Zt(t){return t.learningResources?Fe(t.taskset).definition.instructions:t.modelResources?t.modelResources.taskDefinition.instructions:e.object({instructions:e.string().max(2e4).optional()}).passthrough().parse(t.taskset.metadata.ordinaryAuthoring??{}).instructions??""}o(Zt,"resolveTasksetPackageInstructions");function Me(t){le(t,Se);let a=Ln.parse(t),{contentHash:r,...n}=a;if(h(n)!==r)throw new Error("Taskset package content hash differs from its bytes.");let{taskset:s,environment:i,verifierSet:c}=a;if(it(s),Lt(s)&&(a.modelResources||a.learningResources))throw new Error("Taskset package cannot declare competing authoring graphs.");if(!he(i)||!ge(c)||!Ce(s.environmentRelease,{id:i.id,contentHash:i.contentHash})||!Ce(s.verifierSetRelease,{id:c.id,contentHash:c.contentHash})||!Ce(s.environment,i.contract)||!Ce(s.graders,c.graders))throw new Error("Taskset package execution releases do not match its Taskset.");let p=new Map;for(let m of a.files){if(p.has(m.asset.id))throw new Error(`Duplicate Taskset asset identity: ${m.asset.id}.`);Q(m),p.set(m.asset.id,m)}function d(m){let l=p.get(m.id);if(!l||!Ce(l.asset,m))throw new Error(`Taskset package asset is missing or mismatched: ${m.id}.`)}o(d,"requireAsset");for(let m of s.tasks){for(let l of m.artifactRefs)d(l);for(let l of m.requiredOutputs??[])l.schemaRef&&d(l.schemaRef);if(m.privilegedContextRef&&p.get(m.privilegedContextRef)?.asset.visibility!=="host_private")throw new Error(`Taskset package private context is missing: ${m.id}.`)}for(let m of[i.actionSchemaRef,i.observationSchemaRef,i.stateSchemaRef])m&&d(m);for(let m of s.graders){let l="verifierRef"in m?m.verifierRef:"rubricRef"in m?m.rubricRef:null;if(l&&(d(l),l.visibility==="policy"))throw new Error(`Taskset grader asset must be private: ${l.id}.`)}if(s.metrics?.customAggregator){let m=s.metrics.customAggregator,l=a.files.filter(g=>g.asset.path===m.module);if(l.length!==1||l[0].asset.contentHash!==m.contentHash||l[0].asset.sizeBytes>524288||l[0].asset.visibility==="policy")throw new Error("Taskset metric module is missing or mismatched, public, or exceeds the source limit.")}for(let m of[s.metadata.environmentResources,i.metadata.resources])if(m!==void 0){for(let l of e.array(e.object({path:e.string().min(1)}).passthrough()).parse(m))if(!a.files.some(g=>g.asset.path===l.path))throw new Error(`Taskset environment resource is missing: ${l.path}.`)}if(a.learningResources){if(a.modelResources)throw new Error("Taskset package cannot declare competing authoring graphs.");let m=nr(s,a.learningResources);for(let l of rr(m))if(!Ce(p.get(l.asset.id),l))throw new Error("Taskset private context differs from its reviewed evidence.");for(let l of m.assets)d(l.asset)}else if(a.modelResources){let m=Kt({...a.modelResources,taskset:s,executionResources:{environment:i,verifierSet:c}});for(let l of m.assets)d(l.asset)}else if(["starter","rewardBinding","rewardExecution","modelTasksetDerivation","learning"].some(m=>s.metadata[m]!==void 0))throw new Error("Bound Taskset publication requires its complete model resources.");return ce(a),Zt(a),a}o(Me,"validateTasksetPackage");function $e(t){le(t,Se);let a=sr.parse(t);return Me({...a,contentHash:h(a)})}o($e,"createTasksetPackage");function Ce(t,a){return h({value:t})===h({value:a})}o(Ce,"same");function ir(t){let a=Me(t.source),r=Me(t.edited),n=t.preparation;if(n.authoringGraph!=="bound"||!a.modelResources||a.learningResources||r.modelResources||r.learningResources)throw new Error("Bound task editing requires its source Reward and an ordinary edited workspace.");if(a.contentHash!==n.sourcePackageHash||!j(I(a.taskset),n.sourceTasksetRef))throw new Error("Bound draft differs from its retained source package.");let s=o(_=>_.taskset.graders.map(L=>L.kind==="custom_verifier"?{...L,exportName:L.exportName??"verify"}:L),"normalizedGraders");if(h(s(a))!==h(s(r)))throw new Error("Edit the saved Reward in Rewards before changing this Taskset's graders.");let i=a.modelResources,c=new Map(i.assets.map(_=>[_.id,_])),u=ce(r),p=ce(a),d=o(_=>{let{id:L,revision:jt,contentHash:Dt,metadata:Ht,...jr}=_,{javascriptEnvironment:ys,...na}=Ht;return{...jr,metadata:{...na,resources:na.resources??[]}}},"environmentContent"),m=o(_=>{if(!_)return null;let{id:L,revision:jt,contentHash:Dt,...Ht}=_.execution.javascript;return Ht},"javascriptContent"),l=h(d(a.environment))===h(d(r.environment))&&h(m(p))===h(m(u)),g=l?a.environment:r.environment,b=l?p:u,k=new Set([...i.assets.map(_=>_.id),...r.taskset.tasks.flatMap(_=>_.privilegedContextRef?[_.privilegedContextRef]:[]),...[r.environment.actionSchemaRef,r.environment.observationSchemaRef,r.environment.stateSchemaRef].flatMap(_=>_?[_.id]:[]),...u?.assets.map(_=>_.id)??[]]);for(let _ of k){let L=r.files.find(Dt=>Dt.asset.id===_);if(!L)throw new Error(`Bound Taskset asset is missing: ${_}.`);let jt=new TextDecoder("utf-8",{fatal:!0}).decode(Q(L));c.set(_,ae.parse(A({schemaVersion:"openpond.learningTextAsset.v1",id:_,revision:1,asset:L.asset,text:jt})))}let v=Zt(r),{contentHash:R,...P}=i.taskDefinition,{policy:D,environment:S,environmentRelease:Te,tools:Z,capabilities:f,verifierSetRelease:T}=r.taskset,x=Ve.parse(A({...P,instructions:v,execution:{policy:D,environment:S,environmentRelease:Te,tools:Z,capabilities:f,verifierSetRelease:T}})),{contentHash:M,...de}=r.taskset,me=V.parse(A({...de,tasks:r.taskset.tasks.map(_=>i.instructionMode==="per_task"?_:{..._,policyVisibleContext:{..._.policyVisibleContext,instructions:v}})})),et=Wa({owner:n.lineage.owner,source:{...i,taskset:a.taskset,executionResources:{environment:a.environment,verifierSet:a.verifierSet}},rewardBinding:i.rewardBinding,rewards:i.rewards,assets:[...c.values()],edits:{taskset:me,taskDefinition:x,executionResources:{environment:g,verifierSet:r.verifierSet},...b?{execution:b.execution}:{}}}),Ir=Jt.parse(et.taskset.metadata.modelTasksetDerivation);if(et.taskset.id!==n.tasksetId||et.taskset.revision!==n.tasksetRevision||h({...Ir,schemaVersion:n.lineage.schemaVersion})!==h(n.lineage))throw new Error("Bound draft differs from its retained ownership lineage.");let{taskset:Pr,executionResources:Ar,...Er}=et;return $e({schemaVersion:"openpond.tasksetPackage.v1",taskset:Pr,...Ar,modelResources:Er,files:r.files})}o(ir,"publishBoundModelTasksetDraftPackage");function or(t){let a=Re.parse(t.preparation);if(!j(a.sourceTasksetRef,a.lineage.parent))throw new Error("Taskset draft preparation differs from its source lineage.");if(a.authoringGraph==="bound"){if(!t.source)throw new Error("Bound Taskset authoring requires its retained source package.");return ir({preparation:a,source:t.source,edited:t.edited})}let r=Jn(t.edited),{contentHash:n,...s}=r.verifierSet,i=xe({...s,id:`${a.tasksetId}-verifiers`,revision:a.tasksetRevision,calibrationReceiptRefs:[],metadata:{sourceVerifierSet:I(r.verifierSet)}}),{contentHash:c,...u}=r.taskset,p=V.parse(A({...u,id:a.tasksetId,revision:a.tasksetRevision,verifierSetRelease:{id:i.id,contentHash:i.contentHash},metadata:{modelTasksetAuthoring:a.lineage,...r.taskset.metadata.environmentResources===void 0?{}:{environmentResources:r.taskset.metadata.environmentResources},...r.taskset.metadata.ordinaryAuthoring===void 0?{}:{ordinaryAuthoring:r.taskset.metadata.ordinaryAuthoring}}})),d=ce(r),m=d?[...r.files.filter(l=>l.asset.id!==Le(r.taskset)),Ke({...d.execution,verifierSet:i})]:r.files;return $e({schemaVersion:"openpond.tasksetPackage.v1",taskset:p,environment:r.environment,verifierSet:i,files:m})}o(or,"publishModelTasksetDraftPackage");function Jn(t){let a=Me(t);if(a.modelResources||a.learningResources)throw new Error("This Taskset requires its bound or reviewed authoring workflow.");return a}o(Jn,"requireOrdinaryPackage");var J=e.string().trim().min(1).max(240),Xe=e.string().trim().min(1),Pt=e.string().trim().min(8).max(256),dr=e.record(e.string(),e.unknown()).default({}),Wn=J.nullable(),mr=["work_capabilities","work_environment","work_list_files","work_read_file","work_read_document","work_write_file","work_write_docx","work_edit_file","work_delete_file","work_exec","work_save_output","work_stop"],Kn=e.enum(["draft","awaiting_disclosure_approval","awaiting_materialization_approval","materializing","validating","needs_review","baselining","ready","blocked","failed","archived"]),Xn=e.enum(["demonstrations","preferences","verifiable_reward","rubric","discovery"]),C=e.string().trim().max(1e5),Yn=e.discriminatedUnion("kind",[e.object({kind:e.literal("demonstrations"),behavior:C,examples:e.array(e.object({id:J,prompt:C,response:C})).max(1e3).default([])}),e.object({kind:e.literal("preferences"),preference:C,pairs:e.array(e.object({id:J,prompt:C,chosen:C,rejected:C,rationale:C})).max(1e3).default([])}),e.object({kind:e.literal("verifiable_reward"),task:C,rules:e.array(e.object({id:J,points:e.number().finite(),condition:C})).max(1e3).default([]),otherwisePoints:e.number().finite().default(0)}),e.object({kind:e.literal("rubric"),task:C,criteria:e.array(e.object({id:J,label:e.string().trim().max(500),description:C})).max(1e3).default([]),positiveExample:C,negativeExample:C,boundaryExample:C})]),Jd=e.object({path:e.string().trim().min(1).max(1e3),role:e.enum(["environment","verifier","fixture"]),content:e.string().max(25e4)}),Qn=e.object({primaryMethod:e.enum(["sft","dpo","grpo","ppo","sdft","opsd","sdpo"]),bootstrap:e.object({method:e.literal("sft"),purpose:e.literal("trajectory_bootstrap"),demonstrationRefs:e.array(J).min(1).max(1e5),limitations:e.array(e.string().trim().min(1).max(5e3)).min(1).max(100)}).nullable()}),Zn=e.enum(["taskset_not_ready","demonstrations_missing","preference_pairs_missing","preference_pairs_invalid","executable_reward_missing","reward_not_calibrated","reward_model_missing","value_model_required","frozen_eval_missing"]),es=e.object({method:e.enum(["sft","dpo","grpo","ppo"]),status:e.enum(["recommended","compatible","needs_dataset_work"]),reasonCodes:e.array(Zn).default([]),reasons:e.array(e.string().trim().min(1).max(5e3)).default([])}),cr=e.object({code:J,message:e.string().trim().min(1).max(5e3),path:e.string().trim().max(2e3).nullable()}),ts=e.object({schemaVersion:e.literal("openpond.tasksetReadiness.v1"),tasksetId:J,tasksetHash:Pt,ready:e.boolean(),recommendedMethod:e.enum(["none","retrieval","sft","dpo","grpo","ppo","sdft","opd","opsd","sdpo"]),trainingPath:Qn.nullable().default(null),methodReadiness:e.array(es).default([]),compatibleDestinationClasses:e.array(e.enum(["export","custom","hosted_managed"])),blockers:e.array(cr).default([]),advisories:e.array(cr).default([]),warnings:e.array(e.string().trim().min(1).max(5e3)).default([]),generatedAt:Xe}),as=e.object({attempt:e.number().int().positive(),summary:e.string().trim().min(1).max(5e3),createdAt:Xe}),rs=e.object({schemaVersion:e.literal("openpond.taskAuthoringProvenance.v1"),model:nt.nullable(),modelConfig:dr,skillHash:Pt,promptTemplateVersion:e.string().trim().min(1).max(200),buildIntent:Xn.default("demonstrations"),buildSpecification:Yn.nullable().default(null),evidenceHashes:e.array(Pt).max(1e5),tasksetSdkVersion:e.string().trim().min(1).max(100),sourceCommit:e.string().trim().min(1).max(256).nullable(),repairHistory:e.array(as).max(1e3),createdAt:Xe}),q=e.object({schemaVersion:e.literal("openpond.taskset.v1"),id:J,revision:e.number().int().positive().default(1),profileId:J,profileRelease:ia.nullable().optional(),createImproveRunId:Wn.default(null),name:e.string().trim().min(1).max(500),objective:e.string().trim().max(2e4),purpose:pt.default("general"),benchmark:ut.nullable().default(null),preferenceComparison:ft.nullable().default(null),status:Kn,sourceRefs:e.array(ht).min(1).max(1e5),datasetArtifact:Ge.nullable().optional(),policy:gt,environment:vt,capabilities:bt,metrics:st.optional(),tasks:e.array(Pe).max(1e6),graders:e.array(Tt).min(1).max(1e3),graderFixtures:e.array(yt).max(1e5),learningSignals:kt,authoringProvenance:rs,readiness:ts.nullable(),contentHash:Pt,createdAt:Xe,updatedAt:Xe,metadata:dr}).superRefine((t,a)=>{t.purpose==="benchmark"&&!t.benchmark&&a.addIssue({code:"custom",message:"Benchmark Tasksets require an immutable benchmark binding.",path:["benchmark"]}),t.purpose!=="benchmark"&&t.benchmark&&a.addIssue({code:"custom",message:"Only benchmark Tasksets may carry a benchmark binding.",path:["benchmark"]}),t.datasetArtifact&&t.tasks.length>0&&a.addIssue({code:"custom",message:"Artifact-backed Tasksets may not duplicate canonical rows inline.",path:["tasks"]}),!t.datasetArtifact&&t.tasks.length===0&&a.addIssue({code:"custom",message:"A Taskset requires inline tasks or a Dataset artifact manifest.",path:["tasks"]})});function lr(t){return t.schemaVersion==="openpond.trainingSource.v1"}o(lr,"isTrainingSourceRef");var Ye=class extends Error{static{o(this,"TasksetDraftPublishError")}issues;constructor(a){super(a.map(r=>r.message).join(`
|
|
13
|
-
`)),this.name="TasksetDraftPublishError",this.issues=a}};function pr(t){let a=[];t.name.trim()||a.push({code:"name_missing",message:"Name is required.",path:"name"}),t.objective.trim()||a.push({code:"objective_missing",message:"Objective is required.",path:"objective"}),!t.datasetArtifact&&t.tasks.length===0&&a.push({code:"tasks_missing",message:"Add at least one task or Dataset artifact.",path:"tasks"}),t.graders.length===0&&a.push({code:"graders_missing",message:"Add at least one grader.",path:"graders"}),t.graderFixtures.length===0&&a.push({code:"grader_fixtures_missing",message:"Add grader fixtures before publishing.",path:"graderFixtures"});let r=new Set(t.sourceRefs.map(n=>n.id));for(let n of t.tasks)for(let s of n.sourceRefs)r.has(s)||a.push({code:"task_source_missing",message:`Task ${n.id} references missing source ${s}.`,path:`tasks.${n.id}.sourceRefs`});return a}o(pr,"draftPublishIssues");function ur(t,a={}){let r=q.safeParse(t);if(!r.success)return{valid:!1,taskset:null,computedHash:null,issues:r.error.issues.map(c=>({code:"schema_invalid",severity:"error",message:c.message,path:c.path.join(".")}))};let n=r.data,s=[];is(n,s),ss(n,s),os(n,s),ds(n,s),ms(n,s),ns(n,s,a),ls(n,s),ps(n.capabilities,s,n),cs(n,s);let i=fr(n);return n.contentHash!==i&&s.push({code:"content_hash_mismatch",severity:"error",message:`Taskset contentHash is ${n.contentHash}, expected ${i}.`,path:"contentHash"}),{valid:!s.some(c=>c.severity==="error"),taskset:n,computedHash:i,issues:s}}o(ur,"validateTaskset");function ns(t,a,r){!t.graderFixtures.length&&!(r.allowUnscoredOnlineRewardBatch&&t.metadata.trainingMethod==="grpo"&&t.metadata.learning)&&a.push({code:"grader_fixtures_required",severity:"error",message:"Taskset admission requires authored grader fixtures.",path:"graderFixtures"});let n=new Set(t.tasks.map(i=>i.id)),s=new Set(["positive","negative","boundary","adversarial","prompt_injection","infrastructure_failure"]);for(let i of t.graderFixtures)!t.datasetArtifact&&!n.has(i.taskId)&&a.push({code:"grader_fixture_task_missing",severity:"warning",message:`Fixture ${i.id} references a task outside this Taskset revision (${i.taskId}).`,path:`graderFixtures.${i.id}.taskId`}),s.delete(i.label),i.label==="infrastructure_failure"&&!i.infrastructureError&&a.push({code:"infrastructure_fixture_error_missing",severity:"error",message:`Infrastructure fixture ${i.id} must declare an infrastructure error.`,path:`graderFixtures.${i.id}.infrastructureError`});for(let i of s)a.push({code:"grader_fixture_missing",severity:"warning",message:`Taskset does not include the optional ${i} grader calibration fixture.`,path:"graderFixtures"})}o(ns,"validateGraderFixtures");function ss(t,a){let r=t.datasetArtifact;if(!r)return;(r.tasksetId!==t.id||r.tasksetRevision!==t.revision)&&a.push({code:"dataset_artifact_taskset_mismatch",severity:"error",message:"Dataset artifact identity does not match its Taskset revision.",path:"datasetArtifact"});let n=Object.values(r.splitCounts).reduce((p,d)=>p+d,0),s=r.shards.reduce((p,d)=>p+d.rowCount,0);(n!==r.rowCount||s!==r.rowCount)&&a.push({code:"dataset_artifact_row_count_mismatch",severity:"error",message:"Dataset artifact row, split, and shard counts do not agree.",path:"datasetArtifact.rowCount"});let i=new Map;for(let p of r.shards)i.set(p.split,(i.get(p.split)??0)+p.rowCount);for(let[p,d]of Object.entries(r.splitCounts))(i.get(p)??0)!==d&&a.push({code:"dataset_artifact_split_count_mismatch",severity:"error",message:`Dataset artifact ${p} shard counts do not match its manifest.`,path:`datasetArtifact.splitCounts.${p}`});let{contentHash:c,...u}=r;h(u)!==r.contentHash&&a.push({code:"dataset_artifact_hash_mismatch",severity:"error",message:"Dataset artifact manifest content hash is invalid.",path:"datasetArtifact.contentHash"})}o(ss,"validateDatasetArtifact");function ze(t){return fr(t)}o(ze,"computeTasksetHash");function fr(t){let{contentHash:a,status:r,readiness:n,updatedAt:s,...i}=t;return h(i)}o(fr,"tasksetContentHash");function is(t,a){for(let[r,n]of t.sourceRefs.entries())lr(n)&&n.consent.status!=="granted"&&a.push({code:"source_consent_missing",severity:"error",message:`Source ${n.id} is not consented.`,path:`sourceRefs.${r}.consent.status`}),n.secretScanStatus!=="passed"&&a.push({code:"source_secret_scan",severity:"error",message:`Source ${n.id} did not pass secret scanning.`,path:`sourceRefs.${r}.secretScanStatus`}),n.piiScanStatus!=="passed"&&a.push({code:"source_pii_scan",severity:"error",message:`Source ${n.id} has unresolved PII policy.`,path:`sourceRefs.${r}.piiScanStatus`}),n.licensingStatus!=="approved"&&a.push({code:"source_license",severity:"error",message:`Source ${n.id} has unresolved licensing policy.`,path:`sourceRefs.${r}.licensingStatus`})}o(is,"validateSourceConsent");function os(t,a){let r=new Map;for(let s of t.tasks){let i=r.get(s.clusterKey)??new Set;i.add(s.split),r.set(s.clusterKey,i)}for(let[s,i]of r)i.size>1&&a.push({code:"split_cluster_contamination",severity:"error",message:`Source cluster ${s} appears in multiple splits: ${[...i].join(", ")}.`,path:"tasks"});(t.datasetArtifact?t.datasetArtifact.splitCounts.frozen_eval??0:t.tasks.filter(s=>s.split==="frozen_eval").length)===0&&a.push({code:"frozen_eval_missing",severity:"warning",message:"Add an independent test example before training.",path:"tasks"})}o(os,"validateSplitIsolation");function cs(t,a){if(t.environment.kind!=="work")return;t.environment.entrypoint!=="openpond-work-v1"&&a.push({code:"work_entrypoint_invalid",severity:"error",message:"Work Tasksets must use the openpond-work-v1 entrypoint.",path:"environment.entrypoint"}),(!t.environment.lifecycle.includes("reset")||!t.environment.lifecycle.includes("cleanup"))&&a.push({code:"work_reset_lifecycle_missing",severity:"error",message:"Work attempts require reset and cleanup; filesystem state belongs to one attempt.",path:"environment.lifecycle"});let r=new Set(mr),n=t.environment.toolNames.filter(i=>!r.has(i));n.length&&a.push({code:"work_tool_unknown",severity:"error",message:`Work Taskset declares unknown tools: ${n.join(", ")}.`,path:"environment.toolNames"}),t.environment.toolNames.includes("work_save_output")||a.push({code:"work_output_tool_missing",severity:"error",message:"Work Tasksets must declare work_save_output.",path:"environment.toolNames"});for(let i of["create","reset","step","grade","cleanup"])t.environment.lifecycle.includes(i)||a.push({code:"work_lifecycle_incomplete",severity:"error",message:`Work Tasksets require the ${i} lifecycle stage.`,path:"environment.lifecycle"});let s=new Map(t.sourceRefs.map(i=>[i.id,i]));for(let[i,c]of t.tasks.entries()){let u=new Set,p=new Set;for(let[m,l]of(c.assets??[]).entries()){let g=`tasks.${i}.assets.${m}`;u.has(l.id)&&a.push({code:"work_asset_duplicate_id",severity:"error",message:`Task ${c.id} repeats asset id ${l.id}.`,path:`${g}.id`}),p.has(l.fileName)&&a.push({code:"work_asset_duplicate_name",severity:"error",message:`Task ${c.id} repeats staged file name ${l.fileName}.`,path:`${g}.fileName`}),u.add(l.id),p.add(l.fileName),c.sourceRefs.includes(l.sourceRefId)||a.push({code:"work_asset_task_source_missing",severity:"error",message:`Asset ${l.id} references source ${l.sourceRefId} outside task ${c.id}.`,path:`${g}.sourceRefId`});let b=s.get(l.sourceRefId);b?"sourceFileHashes"in b&&!b.sourceFileHashes.includes(l.sha256)&&a.push({code:"work_asset_hash_unregistered",severity:"error",message:`Asset ${l.id} hash is not registered by source ${l.sourceRefId}.`,path:`${g}.sha256`}):a.push({code:"work_asset_source_missing",severity:"error",message:`Asset ${l.id} references missing source ${l.sourceRefId}.`,path:`${g}.sourceRefId`}),b&&"kind"in b&&b.kind==="uploaded_file"&&!b.originalFileNames.includes(l.fileName)&&a.push({code:"work_asset_name_unregistered",severity:"error",message:`Asset ${l.id} file name is not registered by source ${l.sourceRefId}.`,path:`${g}.fileName`}),b&&"kind"in b&&b.kind==="uploaded_file"&&!b.mediaTypes.includes(l.mediaType)&&a.push({code:"work_asset_media_type_unregistered",severity:"error",message:`Asset ${l.id} media type is not registered by source ${l.sourceRefId}.`,path:`${g}.mediaType`}),l.split!==c.split&&a.push({code:"work_asset_split_mismatch",severity:"error",message:`Asset ${l.id} is assigned to ${l.split}, not task split ${c.split}.`,path:`${g}.split`})}let d=new Set;for(let[m,l]of(c.requiredOutputs??[]).entries()){let g=l.path.replaceAll("\\","/"),b=`tasks.${i}.requiredOutputs.${m}.path`;d.has(g)&&a.push({code:"work_output_duplicate_path",severity:"error",message:`Task ${c.id} repeats required output path ${g}.`,path:b}),d.add(g)}(c.requiredOutputs??[]).length===0&&a.push({code:"work_output_missing",severity:"error",message:`Work task ${c.id} must declare at least one required output.`,path:`tasks.${i}.requiredOutputs`})}}o(cs,"validateWorkExecution");function ds(t,a){let r=new Set(t.policy.policyVisibleFields);for(let n of t.policy.privilegedFields)r.has(n)&&a.push({code:"privileged_field_visible",severity:"error",message:`Field ${n} is both policy-visible and privileged.`,path:"policy"});for(let n of t.tasks)n.privilegedContextRef&&Object.keys(n.policyVisibleContext).includes(n.privilegedContextRef)&&a.push({code:"privileged_context_leak",severity:"error",message:`Task ${n.id} exposes its privileged context reference.`,path:`tasks.${n.id}.policyVisibleContext`})}o(ds,"validatePolicyBoundary");function ms(t,a){let r=new Set;for(let n of t.graders)r.has(n.id)&&a.push({code:"grader_duplicate",severity:"error",message:`Duplicate grader id ${n.id}.`,path:"graders"}),r.add(n.id),n.kind==="model_judge"&&n.rewardEligible&&n.calibrationStatus!=="passed"&&a.push({code:"judge_calibration_pending",severity:"warning",message:`Model judge ${n.id} is selected for reward without a passing advisory calibration report.`,path:`graders.${n.id}`}),n.kind==="model_judge"&&n.calibrationStatus==="passed"&&typeof n.metadata.calibrationEvidenceHash!="string"&&a.push({code:"judge_calibration_evidence_missing",severity:"warning",message:`Model judge ${n.id} declares calibration without an OpenPond fixture evidence hash.`,path:`graders.${n.id}.metadata.calibrationEvidenceHash`}),n.kind==="human"&&n.rewardEligible&&a.push({code:"human_online_reward",severity:"error",message:`Human grader ${n.id} cannot be an online optimizer reward.`,path:`graders.${n.id}`})}o(ms,"validateGraders");function ls(t,a){let r=new Set(t.tasks.map(s=>s.id)),n=new Set(t.sourceRefs.map(s=>s.id));for(let s of[...t.learningSignals.demonstrations,...t.learningSignals.preferences,...t.learningSignals.corrections,...t.learningSignals.feedback,...t.learningSignals.rewards,...t.learningSignals.labels])s.taskId&&!t.datasetArtifact&&!r.has(s.taskId)&&a.push({code:"learning_signal_task_missing",severity:"error",message:`Signal ${s.id} references missing task ${s.taskId}.`,path:`learningSignals.${s.kind}.${s.id}.taskId`}),s.sourceRefs.some(i=>!n.has(i))&&a.push({code:"learning_signal_source_missing",severity:"error",message:`Signal ${s.id} references a source outside the Dataset.`,path:`learningSignals.${s.kind}.${s.id}.sourceRefs`});for(let s of t.learningSignals.preferences)s.chosen.trim()===s.rejected.trim()&&a.push({code:"preference_pair_identical",severity:"error",message:`Preference ${s.id} has identical chosen and rejected responses.`,path:`learningSignals.preferences.${s.id}`});for(let s of t.learningSignals.rewards)s.executable||a.push({code:"reward_not_executable",severity:"warning",message:`Reward ${s.id} is a reviewed specification but has no executable verifier yet.`,path:`learningSignals.rewards.${s.id}.executable`})}o(ls,"validateLearningSignals");function ps(t,a,r){!t.exportable&&t.portabilityBlockers.length===0&&a.push({code:"portability_reason_missing",severity:"error",message:"Non-exportable Tasksets must declare a portability blocker.",path:"capabilities.portabilityBlockers"}),t.compatibleMethods.includes("grpo")&&!t.rewardKinds.some(n=>n==="exact"||n==="deterministic"||n==="model_judge")&&a.push({code:"grpo_reward_missing",severity:"error",message:"GRPO compatibility requires a scalar reward kind.",path:"capabilities.rewardKinds"}),r?.capabilities.compatibleMethods.includes("sft")&&r.learningSignals.demonstrations.length===0&&a.push({code:"sft_demonstrations_missing",severity:"error",message:"SFT compatibility requires approved demonstrations.",path:"learningSignals.demonstrations"}),r?.capabilities.compatibleMethods.includes("dpo")&&r.learningSignals.preferences.length===0&&a.push({code:"dpo_preferences_missing",severity:"error",message:"DPO compatibility requires chosen and rejected response pairs.",path:"learningSignals.preferences"}),r&&(r.capabilities.compatibleMethods.includes("grpo")||r.capabilities.compatibleMethods.includes("ppo"))&&!r.learningSignals.rewards.some(n=>n.executable)&&!r.graders.some(n=>n.rewardEligible&&n.weight>0&&n.kind!=="human")&&a.push({code:"online_reward_not_executable",severity:"error",message:"GRPO/PPO compatibility requires an executable scalar reward.",path:"learningSignals.rewards"})}o(ps,"validateCapabilities");function hr(t){let a=ve.parse(t.draft),r=t.now??new Date().toISOString(),n=pr(a);if(n.length)throw new Ye(n);let s=a.modelScope?.source;if(s&&t.tasksetId&&t.tasksetId!==s.tasksetId)throw new Error("Taskset draft publication differs from its prepared identity.");let i=s?.tasksetId||t.tasksetId?.trim()||a.publishedTasksetRef?.id||a.id.replace(/-draft$/,""),c=s?.tasksetRevision??(a.publishedTasksetRef?.id===i?a.publishedTasksetRef.revision+1:1),u=a.sourceRefs.length?a.sourceRefs:[us(a,i,r)],p=u[0].id,d=a.tasks.map(S=>Pe.parse({...S,sourceRefs:S.sourceRefs.length?S.sourceRefs:[p],metadata:{exampleOrigin:"expert_authored",...S.metadata}})),m=a.capabilities.compatibleMethods.find(S=>S!=="none"&&S!=="retrieval")??null,l=fs(a),g=a.graders.filter(S=>S.rewardEligible&&S.weight>0&&S.kind!=="human"),b=m===null&&l==="verifiable_reward"&&g.length>0,k=m??(b?"grpo":null),v=q.parse({schemaVersion:"openpond.taskset.v1",id:i,revision:c,profileId:a.profileId,profileRelease:null,createImproveRunId:null,name:a.name,objective:a.objective,purpose:a.purpose,benchmark:a.benchmark,preferenceComparison:a.preferenceComparison,status:"needs_review",sourceRefs:u,datasetArtifact:a.datasetArtifact??null,policy:a.policy,environment:a.environment,capabilities:b?{...a.capabilities,compatibleMethods:["grpo"],rewardKinds:[...new Set(g.map(S=>S.kind==="model_judge"?"model_judge":"deterministic"))]}:a.capabilities,metrics:a.metrics,tasks:d,graders:a.graders,graderFixtures:a.graderFixtures,learningSignals:a.learningSignals,authoringProvenance:{schemaVersion:"openpond.taskAuthoringProvenance.v1",model:null,modelConfig:{},skillHash:h("openpond-taskset-draft-authoring-v1"),promptTemplateVersion:"taskset-draft-v1",buildIntent:l,buildSpecification:null,evidenceHashes:u.map(S=>S.sourceHash),tasksetSdkVersion:"draft-v1",sourceCommit:null,repairHistory:[],createdAt:r},readiness:null,contentHash:"00000000",createdAt:c===1?a.createdAt:r,updatedAt:r,metadata:{...a.metadata,...s?{modelTasksetAuthoring:s.lineage}:{},tasksetReviewPolicy:a.review,tasksetOutputContract:a.output,...t.sourcePackageHash?{sourcePackageHash:t.sourcePackageHash}:{},...k?{trainingMethod:k}:{},diagnosis:{schemaVersion:"openpond.capabilityDiagnosis.v1",summary:a.objective,stableBehavior:[a.objective],changingKnowledge:[],requiredContext:[],requiredTools:a.environment.toolNames,intervention:k==="dpo"?"preference":k==="grpo"||k==="ppo"?"grpo_rft":k==="sft"?"sft":"no_training",trainingEligible:k!==null,rationale:k?[`The author selected ${k.toUpperCase()} compatibility.`]:["The Taskset is currently configured for evaluation only."],confidence:1}}}),R=q.parse({...v,contentHash:ze(v)}),D=ur(R).issues.filter(S=>S.severity==="error");if(D.length)throw new Ye(D.map(S=>({code:S.code,message:S.message,path:S.path})));return R}o(hr,"publishTasksetDraft");function us(t,a,r){let n=h({draftId:t.id,draftRevision:t.revision,tasks:t.tasks});return{schemaVersion:"openpond.generatedDatasetSource.v1",kind:"generated",id:`source-${a}`,profileId:t.profileId,title:`${t.name} manual authoring`,sourceHash:n,occurredAt:r,licensingStatus:"approved",secretScanStatus:"passed",piiScanStatus:"passed",generatorId:"openpond-taskset-draft",generatorVersion:"1",seed:0,generatorHash:n,metadata:{draftId:t.id,draftRevision:t.revision}}}o(us,"generatedDraftSource");function fs(t){return t.learningSignals.preferences.length?"preferences":t.learningSignals.rewards.length?"verifiable_reward":t.learningSignals.labels.length?"rubric":!t.capabilities.compatibleMethods.some(a=>a!=="none"&&a!=="retrieval")&&t.graders.some(a=>a.rewardEligible&&a.weight>0&&a.kind!=="human")?"verifiable_reward":"demonstrations"}o(fs,"buildIntentForDraft");function hs(t,a){let r=t.metadata.learning===void 0?null:zt.parse(t.metadata.learning),n=t.metadata.rewardExecution,s=a??(n?{binding:ue.parse(n.binding),rewards:pe.array().parse(n.rewards)}:r);if(t.metadata.rewardBinding!==void 0){let i=t.metadata.rewardBinding;if(!s||!i||i.id!==s.binding.id||i.revision!==s.binding.revision||i.contentHash!==s.binding.contentHash)throw new Error("Portable Taskset requires its exact published Reward binding.")}return s&&fe(s.binding,s.rewards),s?{binding:s.binding,rewards:s.rewards}:null}o(hs,"resolvePortableTasksetRewardExecution");function At(t){let a=br(t.taskset),r=gs(t.taskset),n=t.taskset.metadata.learning===void 0?null:zt.parse(t.taskset.metadata.learning),s=t.taskset.metadata.rewardExecution,i=hs(t.taskset,t.rewardExecution),c=i?fe(i.binding,i.rewards):t.taskset.graders.map(ks),u=t.selectedTasks?.length?t.selectedTasks:t.taskset.tasks;if(!u.length)throw new Error("A portable Taskset release requires at least one task.");let p=t.taskset.environment.metadata.portableExecutionResources;if(a.entrypoint==="openpond.javascript-environment.v1"&&!p)throw new Error("Tool Taskset publication requires its pinned execution resources.");let d=p?re.parse(p.environment):ye({schemaVersion:"openpond.environmentRelease.v1",id:`environment-release-${t.taskset.id}-r${t.taskset.revision}`,revision:t.taskset.revision,contract:a,actionSchemaRef:null,observationSchemaRef:null,stateSchemaRef:null,artifactCollection:{maxArtifacts:1e5,maxTotalBytes:25e7},adapterConformanceHashes:{[t.adapterId]:h({adapterId:t.adapterId,environment:a,tools:r})},metadata:{sourceTasksetId:t.taskset.id,sourcePackageHash:t.taskset.metadata.sourcePackageHash??null,resources:t.taskset.environment.resources??[]}}),m=p?.verifierSet!==void 0?ne.parse(p.verifierSet):xe({schemaVersion:"openpond.verifierSetRelease.v1",id:`verifier-set-release-${t.taskset.id}-r${t.taskset.revision}`,revision:t.taskset.revision,graders:c,isolation:{processBoundary:"isolated_process",networkPolicy:"none",defaultTimeoutMs:Math.min(t.taskset.environment.defaultTimeoutMs,3e5)},calibrationReceiptRefs:[],metadata:{sourceTasksetId:t.taskset.id}});if(!he(d)||!ge(m)||h(d.contract)!==h(a)||h(m.graders)!==h(c))throw new Error("Taskset execution resources differ from its declared environment or graders.");let l=la.parse({schemaVersion:"openpond.tasksetRelease.v2",id:t.taskset.metadata.derivedPortableMetadata===void 0?`taskset-release-${t.taskset.id}-r${t.taskset.revision}`:t.taskset.id,revision:t.taskset.revision,policy:{policyVisibleFields:t.taskset.policy.policyVisibleFields,privilegedFields:t.taskset.policy.privilegedFields,hiddenGraderRefs:t.taskset.policy.hiddenGraderRefs,connectedAppScopes:t.taskset.policy.connectedAppScopes},environment:a,tools:r,capabilities:vs(t.taskset),tasks:u.map(ta),graders:c,...t.taskset.metrics?{metrics:t.taskset.metrics}:{},metadata:t.taskset.metadata.derivedPortableMetadata??{sourceTasksetId:t.taskset.id,sourceTasksetHash:t.taskset.contentHash,sourcePackageHash:t.taskset.metadata.sourcePackageHash??null,environmentResources:t.taskset.environment.resources??[],ordinaryAuthoring:{instructions:t.taskset.objective,graderFixtures:t.taskset.graderFixtures,judgeCalibrationFixtures:Object.fromEntries(t.taskset.graders.filter(k=>k.kind==="model_judge").map(k=>[k.id,k.calibrationFixtureRefs]))},...n?{learning:n}:{},...i&&!n&&(t.rewardExecution||s)?{rewardExecution:{binding:i.binding,rewards:i.rewards}}:{}}}),g=t.admittedTasksetRelease?V.parse(t.admittedTasksetRelease):V.parse({...l,contentHash:h(l)}),b=g.environmentRelease?bs({draft:g,environmentRelease:d,verifierSetRelease:m}):ba({taskset:g,environment:d,verifierSet:m});return{environmentRelease:d,verifierSetRelease:m,tasksetRelease:b}}o(At,"materializePortableTasksetRelease");function vr(t){return br(t)}o(vr,"portableTasksetEnvironment");function ta(t){let a=t.metadata.portableTaskRecord;if(a!==void 0){let r=$t.parse(a),n=$t.parse({...r,id:t.id,clusterKey:t.clusterKey,split:t.split,input:t.input,expectedOutput:gr(t),policyVisibleContext:t.policyVisibleContext,privilegedContextRef:t.privilegedContextRef,tags:t.tags,artifactRefs:t.assets===void 0?r.artifactRefs:t.assets.map(s=>{let i=r.artifactRefs.find(c=>c.id===s.id);return{id:s.id,path:i?.path??`tasks/${qe(t.id)}/${qe(s.fileName)}`,contentHash:ea(s.sha256),sizeBytes:s.sizeBytes,mediaType:s.mediaType,visibility:i?.visibility??"policy"}}),requiredOutputs:t.requiredOutputs===void 0?r.requiredOutputs:t.requiredOutputs.map(s=>{let i=r.requiredOutputs?.find(c=>c.path===s.path);return{path:s.path,mediaType:s.mediaType,schemaRef:i?.schemaRef&&i.schemaRef.id===s.schemaRef?i.schemaRef:null,maxBytes:s.maxBytes??null,metadata:{...s.metadata,...s.schemaRef&&i?.schemaRef?.id!==s.schemaRef?{legacySchemaRef:s.schemaRef}:{}}}})});return n.requiredOutputs===void 0&&delete n.requiredOutputs,n}return{id:t.id,clusterKey:t.clusterKey,split:t.split,input:t.input,expectedOutput:gr(t),policyVisibleContext:t.policyVisibleContext,privilegedContextRef:t.privilegedContextRef,artifactRefs:(t.assets??[]).map(r=>({id:r.id,path:`tasks/${qe(t.id)}/${qe(r.fileName)}`,contentHash:ea(r.sha256),sizeBytes:r.sizeBytes,mediaType:r.mediaType,visibility:"policy"})),requiredOutputs:(t.requiredOutputs??[]).map(r=>({path:r.path,mediaType:r.mediaType,schemaRef:null,maxBytes:r.maxBytes??null,metadata:{...r.metadata,legacySchemaRef:r.schemaRef??null}})),tags:t.tags}}o(ta,"projectPortableTaskRecord");function gr(t){if(!t.expectedOutput)return null;if("artifactRenderer"in t.expectedOutput)throw new Error(`Task ${t.id} embeds an artifact renderer. Put shared renderer configuration in Environment resources and reference it from the Scenario.`);return t.expectedOutput}o(gr,"portableExpectedOutput");function br(t){return{protocolVersion:"openpond.environment.v1",kind:t.environment.kind==="chat"?"text":t.environment.kind==="work"?"work":t.environment.kind==="program"?"custom_program":"agent",entrypoint:t.environment.entrypoint,stateful:t.environment.stateful,deterministicSeeds:t.environment.deterministicSeeds,lifecycle:["create","reset","step","collect","destroy"],networkPolicy:t.environment.networkPolicy,defaultTimeoutMs:t.environment.defaultTimeoutMs}}o(br,"portableEnvironment");function gs(t){let a=t.environment.metadata.portableTools;if(a!==void 0)return oa.array().max(200).parse(a);let r=t.environment.actionBindings??[];return r.length?r.map(n=>({name:n.modelToolName,description:n.description,inputSchema:n.inputSchema,inputSchemaHash:ea(n.actionSchemaHash),sideEffect:n.sideEffect,timeoutMs:n.timeoutMs})):t.environment.toolNames.map(n=>({name:n,description:`Host-provided ${n} tool.`,inputSchema:{},inputSchemaHash:h({}),sideEffect:"write",timeoutMs:t.environment.defaultTimeoutMs}))}o(gs,"portableTools");function ks(t){let a={id:t.id,version:t.version,weight:t.weight,hardGate:t.hardGate,rewardEligible:t.rewardEligible,privileged:t.privileged};if(t.kind==="model_judge")return{...a,kind:"model_judge",rubricRef:kr(t),model:Ss(t),temperature:t.temperature,calibrationStatus:t.calibrationStatus};if(t.kind==="custom_verifier"){if(t.metadata.portableVerifierRef===void 0)throw new Error(`Custom verifier ${t.id} requires its immutable executable asset before publication.`);let r=Mt.safeParse(t.metadata.portableGrader),n=r.success&&r.data.kind==="custom_verifier"&&r.data.exportName===void 0&&t.exportName==="verify";return{...a,kind:"custom_verifier",...t.runtime===void 0?{}:{runtime:t.runtime},verifierRef:ee.parse(t.metadata.portableVerifierRef),timeoutMs:t.timeoutMs,...n?{}:{exportName:t.exportName},networkPolicy:"none"}}return t.kind==="human"?{...a,kind:"human",rubricRef:kr(t),reviewerRole:t.reviewerRole}:{...a,...da(t)}}o(ks,"portableGrader");function vs(t){let a=t.metadata.portableCapabilities;return a!==void 0?ca.array().max(200).parse(a):[...t.capabilities.requiresTools?[{id:"tools",required:!0,scopes:t.environment.toolNames}]:[],...t.capabilities.requiresState?[{id:"local-state",required:!0,scopes:[]}]:[],...t.capabilities.requiresPrivilegedGrading?[{id:"private-verifier",required:!0,scopes:t.policy.hiddenGraderRefs}]:[],...t.policy.connectedAppScopes.map(r=>({id:`connected-app-${qe(r)}`,required:!0,scopes:[r]}))].map(r=>({...r,portability:r.id==="local-state"?"host_adapter":"portable"}))}o(vs,"portableCapabilities");function bs(t){if(t.draft.environmentRelease?.id!==t.environmentRelease.id||t.draft.environmentRelease.contentHash!==t.environmentRelease.contentHash)throw new Error("Admitted Taskset Release binds a different Environment Release.");if(t.draft.verifierSetRelease?.id!==t.verifierSetRelease.id||t.draft.verifierSetRelease.contentHash!==t.verifierSetRelease.contentHash)throw new Error("Admitted Taskset Release binds a different Verifier Set Release.");if(h(t.draft.environment)!==h(t.environmentRelease.contract))throw new Error("Admitted Taskset Environment differs from its bound Environment Release.");if(h(t.draft.graders)!==h(t.verifierSetRelease.graders))throw new Error("Admitted Taskset graders differ from its bound Verifier Set Release.");return t.draft}o(bs,"assertReleaseBindings");function Ss(t){let a=t.metadata.portableGrader===void 0?null:Mt.parse(t.metadata.portableGrader),r=a?.kind==="model_judge"&&a.model?.providerId===t.judge.providerId&&a.model.modelId===t.judge.modelId?a.model.revision:null;return{...t.judge,revision:r}}o(Ss,"modelJudgeRef");function kr(t){let a=$(t.rubric),r=new TextEncoder().encode(t.rubric).byteLength,n=t.metadata.portableRubricRef;if(n!==void 0){let s=ee.parse(n);if(s.contentHash!==a||s.sizeBytes!==r||s.visibility==="policy")throw new Error("Taskset rubric differs from its published private source.");return s}return{id:`rubric-${t.id}`,path:`graders/${qe(t.id)}/rubric.md`,contentHash:a,sizeBytes:r,mediaType:"text/markdown",visibility:"verifier"}}o(kr,"rubricAsset");function ea(t){return/^[a-f0-9]{64}$/.test(t)?t:h(t)}o(ea,"hash");function qe(t){return t.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"asset"}o(qe,"segment");function Sr(t,a,r,n){if(t.environment.entrypoint!=="openpond.javascript-environment.v1")return{taskset:t,inventory:r,generatedFiles:[]};let s="environment/execution.json",i=a.get(s);if(!i||i.length>524288)throw new Error("Authored tool environment requires its bounded private execution declaration.");let c=oe.parse(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(i))),u=o(P=>{if(!P)return null;let D=r.find(S=>S.asset.id===P.id&&S.asset.path===P.path);if(!D)throw new Error(`Authored environment dependency is missing: ${P.id}.`);return D.asset},"repin"),{contentHash:p,...d}=c.javascript,m=ct.parse(A({...d,id:`javascript-${t.id}`,revision:t.revision,module:u(c.javascript.module)}));if(h(m.tools)!==h(t.environment.metadata.portableTools)||h(m.tools.map(P=>P.name))!==h(t.environment.toolNames))throw new Error("Authored environment tools differ from the Taskset's declared tools.");let l=ye({schemaVersion:"openpond.environmentRelease.v1",id:`environment-${t.id}`,revision:t.revision,contract:vr(t),actionSchemaRef:u(c.environment.actionSchemaRef),observationSchemaRef:u(c.environment.observationSchemaRef),stateSchemaRef:u(c.environment.stateSchemaRef),artifactCollection:c.environment.artifactCollection,adapterConformanceHashes:{},metadata:{javascriptEnvironment:I(m),resources:t.environment.resources??[]}}),g=q.parse({...t,environment:{...t.environment,metadata:{...t.environment.metadata,portableExecutionResources:{environment:l}}}}),b=At({taskset:g,adapterId:n}),k=Ke({javascript:m,environment:l,verifierSet:b.verifierSetRelease}),v=[...r.filter(P=>P.sourcePath!==s),{asset:k.asset,sourcePath:s}],R=q.parse({...g,metadata:{...g.metadata,portableFileInventory:v}});return{taskset:q.parse({...R,contentHash:ze(R)}),inventory:v,generatedFiles:[{path:s,role:"environment",content:new TextDecoder().decode(Q(k))}]}}o(Sr,"prepareAuthoredToolEnvironment");var Et=e.array(e.object({asset:ee,sourcePath:e.string().min(1)}).strict()).max(1e4),Ts=new Set(["taskset.json","capabilities.json","data/tasks.jsonl","graders/graders.json","fixtures/grader-fixtures.json","environment/taskset.ts"]);function Tr(t){return Ts.has(t)}o(Tr,"isGeneratedTasksetPublicationFilePath");function yr(t,a,r){let n=q.parse(t);if(n.metadata.taskDefinition!==void 0||n.metadata.rewardBinding!==void 0)return{taskset:n,generatedFiles:[]};let s=new Map,i=0;for(let[f,T]of a){if(K.parse(f),i+=T.byteLength,s.size>=1e4||i>Se*3/4)throw new Error("Taskset source exceeds the package byte limit.");s.set(f,T.slice())}let c=n.metrics?.customAggregator,u=c?s.get(c.module):void 0;if(c&&!u)throw new Error("Declared Taskset metric module is missing.");let p=c&&u?{...n.metrics,customAggregator:{...c,contentHash:$(u)}}:n.metrics,d=new Map,m=new Set,l=[],g=o((f,T,x,M)=>{let de=s.get(T);if(!de)throw new Error(`Declared Taskset file is missing: ${T}.`);return{id:f,path:T,contentHash:$(de),sizeBytes:de.byteLength,mediaType:x,visibility:M}},"ref"),b=o((f,T=f.path)=>{let x=d.get(f.id);if(x&&h(x)!==h({asset:f,sourcePath:T}))throw new Error(`Conflicting Taskset file identity: ${f.id}.`);let M=s.get(T);if(!M||M.length!==f.sizeBytes||$(M)!==f.contentHash)throw new Error(`Taskset file differs from its declared bytes: ${f.id}.`);d.set(f.id,{asset:f,sourcePath:T}),m.add(T)},"add");for(let f of n.tasks){let T=ta(f);for(let x of T.artifactRefs)b(x,f.assets?.find(M=>M.id===x.id)?.artifactRef??x.path);for(let x of T.requiredOutputs??[])x.schemaRef&&b(x.schemaRef)}for(let f of n.environment.resources??[])b(g(f.id,f.path,f.mediaType??"application/octet-stream",f.visibility==="policy_visible"?"policy":"host_private"));let k=n.graders.map(f=>{if(f.kind==="custom_verifier"){let T=g(`verifier-${f.id}`,f.module,"application/javascript","host_private"),x=ee.safeParse(f.metadata.portableVerifierRef);return x.success&&x.data.contentHash===T.contentHash&&x.data.sizeBytes===T.sizeBytes&&(T=x.data),b(T,f.module),{...f,metadata:{...f.metadata,portableVerifierRef:T}}}if(f.kind==="human"||f.kind==="model_judge"){let T=new TextEncoder().encode(f.rubric),x=`graders/rubric-${$(T)}.md`;s.set(x,T);let M=g(`rubric-${f.id}`,x,"text/markdown","verifier");return b(M),l.push({path:x,role:"verifier",content:f.rubric}),{...f,metadata:{...f.metadata,portableRubricRef:M}}}return f});c&&![...d.values()].some(f=>f.asset.path===c.module&&f.sourcePath===c.module&&f.asset.visibility!=="policy")&&b(g(`metric-${h(c.module)}`,c.module,"application/javascript","host_private"));let v=Et.parse(n.metadata.portableFileInventory??[]);for(let f of[...s.keys()].sort())if(!m.has(f)){let T=v.find(x=>x.sourcePath===f&&!d.has(x.asset.id));b(T?{...g(T.asset.id,f,T.asset.mediaType,T.asset.visibility),path:T.asset.path}:g(`taskset-file-${h(f)}`,f,"application/octet-stream","host_private"),f)}let{importedPackageHash:R,derivedPortableMetadata:P,...D}=n.metadata,S={...n.environment.metadata};if(S.portableExecutionResources!==void 0){let f=e.object({environment:e.unknown(),verifierSet:e.unknown().optional()}).parse(S.portableExecutionResources);S.portableExecutionResources={environment:f.environment}}let Te=q.parse({...n,graders:k,metrics:p,environment:{...n.environment,metadata:S},metadata:{...D,...R===void 0?{}:{sourceImportedPackageHash:R},portableFileInventory:Et.parse([...d.values()].sort((f,T)=>f.asset.id.localeCompare(T.asset.id)))}}),Z=Sr(Te,s,[...d.values()],r);return{taskset:q.parse({...Z.taskset,contentHash:ze(Z.taskset)}),generatedFiles:[...l,...Z.generatedFiles]}}o(yr,"prepareAuthoredTasksetSource");function aa(t){let a=Ue(t.workspace),r=t.preparation===null?null:Re.parse(t.preparation);if(r?a.draft.id!==r.draftId||a.draft.modelScope?.modelId!==r.lineage.owner.modelId||a.draft.profileId!==r.lineage.owner.scopeId||h(a.draft.modelScope?.source??null)!==h(r):a.draft.modelScope?.source!==void 0)throw new Error("Taskset draft differs from its retained source preparation.");let n=hr({draft:a.draft,now:a.draft.updatedAt,sourcePackageHash:a.contentHash}),s=new Map(a.files.map(d=>[d.path,Ut(d)]));for(let[d,m]of Gt(a.draft))Tr(d)||s.set(d,new TextEncoder().encode(m));let i=yr(n,s,t.adapterId);for(let d of i.generatedFiles)s.set(d.path,new TextEncoder().encode(d.content));let c=At({taskset:i.taskset,adapterId:t.adapterId}),u=Et.parse(i.taskset.metadata.portableFileInventory),p=$e({schemaVersion:"openpond.tasksetPackage.v1",taskset:c.tasksetRelease,environment:c.environmentRelease,verifierSet:c.verifierSetRelease,files:u.map(d=>{let m=s.get(d.sourcePath);if(!m)throw new Error(`Captured Taskset file is missing: ${d.sourcePath}.`);return{asset:d.asset,base64:Buffer.from(m).toString("base64")}})});return r?or({preparation:r,edited:p,source:t.source}):p}o(aa,"compileTasksetDraftWorkspace");var B=e.string().trim().min(1).max(240),Qe=e.string().regex(/^[a-f0-9]{64}$/),xr=e.object({operationId:B,expectedRevision:e.number().int().nonnegative(),originProjectId:B.optional(),workspace:xt}).strict().superRefine((t,a)=>{t.workspace.draft.modelScope!==null&&a.addIssue({code:"custom",message:"Independent datasets cannot carry Model-owned draft preparation."}),t.workspace.draft.status!=="draft"&&a.addIssue({code:"custom",message:"Only draft workspaces can be saved."})}),ra=e.object({schemaVersion:e.literal("openpond.datasetWorkspaceReceipt.v1"),teamId:B,datasetId:B,revision:e.number().int().positive(),originProjectId:B.optional(),workspace:xt,publication:e.object({tasksetId:B,release:wt,packageHash:Qe}).strict().nullable()}).strict().superRefine((t,a)=>{(t.workspace.draft.id!==t.datasetId||t.workspace.draft.profileId!==t.teamId||t.workspace.draft.revision!==t.revision||t.workspace.draft.modelScope!==null)&&a.addIssue({code:"custom",message:"Dataset workspace scope/revision mismatch."})}),wr=e.object({operationId:B,expectedRevision:e.number().int().positive(),workspaceHash:Qe,packageHash:Qe}).strict(),Rr=e.object({teamId:B,datasets:e.array(e.object({id:B,revision:e.number().int().positive(),originProjectId:B.optional(),name:e.string(),status:e.enum(["draft","published"]),publication:ra.shape.publication,updatedAt:e.string().datetime()}).strict()).max(100),nextCursor:B.nullable()}).strict(),_r=e.object({teamId:B,datasetId:B,revision:e.number().int().positive(),workspaceHash:Qe,packageHash:Qe,release:wt}).strict();var Ze=class{constructor(a){this.options=a;let r=new URL(a.baseUrl);if(!["http:","https:"].includes(r.protocol)||r.username||r.password||r.search||r.hash||!a.apiKey.trim()||!a.teamId.trim())throw new Error("A clean API origin and workspace credentials are required.");this.baseUrl=r.toString().replace(/\/+$/,"")}options;static{o(this,"OpenPondDatasetWorkspaceClient")}baseUrl;async list(a={}){let r=Rr.parse(await this.request(`?${new URLSearchParams(a.cursor?{cursor:a.cursor}:{})}`,"GET",void 0,a.signal));if(r.teamId!==this.options.teamId)throw new Error("Dataset list workspace mismatch.");return r}async get(a,r){return this.readback(await this.request(`/${encodeURIComponent(a)}`,"GET",void 0,r),a)}async save(a,r){let n=xr.parse(a),s=Ue(n.workspace);if(s.draft.profileId!==this.options.teamId||s.draft.revision!==n.expectedRevision+1)throw new Error("Dataset write scope or revision mismatch.");let i=this.readback(await this.request(`/${encodeURIComponent(s.draft.id)}`,"PUT",n,r),s.draft.id);if(n.originProjectId&&i.originProjectId!==n.originProjectId)throw new Error("Dataset origin Project mismatch.");if(i.workspace.contentHash!==s.contentHash)throw new Error("Dataset write receipt differs from the saved bytes.");return i}async validate(a,r,n){let s=_r.parse(await this.request(`/${encodeURIComponent(a)}/validate`,"POST",{expectedRevision:r},n));if(s.teamId!==this.options.teamId||s.datasetId!==a||s.revision!==r)throw new Error("Dataset validation receipt mismatch.");return s}async publish(a,r,n){let s=wr.parse(r),i=this.readback(await this.request(`/${encodeURIComponent(a)}/publish`,"POST",s,n),a);if(i.revision!==s.expectedRevision+1||i.workspace.draft.status!=="published"||i.publication?.packageHash!==s.packageHash)throw new Error("Dataset publication receipt mismatch.");return i}readback(a,r){let n=ra.parse(a);if(Ue(n.workspace),n.datasetId!==r||n.teamId!==this.options.teamId)throw new Error("Dataset identity mismatch.");return n}async request(a,r,n,s){let i=await(this.options.fetch??fetch)(`${this.baseUrl}/v1/dataset-workspaces${a}`,{method:r,signal:s,redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,"Content-Type":"application/json"},...n===void 0?{}:{body:JSON.stringify(n)}});if(!i.ok)throw new Error(`Dataset request failed (${i.status}).`);return i.json()}};async function hl(t,a){let[r,n]=a,s=G(t,"team"),i=Ra(t);if(!s||!i||!r||a.length>2||!["upload","read","list","validate","publish"].includes(r))throw new Error("usage: datasets <upload|read|list|validate|publish> [folder|id] --team <id> --api-base-url <origin> [--operation-id <id>] [--expected-revision <n>] [--publish] [--project <id>]");let c=await xa(),u=new Ze({teamId:s,baseUrl:i,apiKey:await wa(c,_a(c))}),p=G(t,"operationId"),d;if(r==="list"){if(n)throw new Error("List does not accept a dataset id.");d=await u.list({cursor:G(t,"cursor")||void 0})}else{if(!n)throw new Error(`${r} requires a ${r==="upload"?"folder":"dataset id"}.`);if(r==="read")d=await u.get(n);else if(r==="upload"){if(!p||p.length>220)throw new Error("Upload requires a stable --operation-id of at most 220 characters. Reuse it after an uncertain response.");let m=G(t,"expectedRevision"),l=m?Number(m):0;if(!Number.isSafeInteger(l)||l<0)throw new Error("Expected revision must be a nonnegative integer.");let g=await Ta({directory:n,teamId:s,expectedRevision:l,datasetId:G(t,"datasetId")||void 0}),b=aa({workspace:g.workspace,preparation:null,adapterId:"openpond-hosted-taskset-authoring-v1",now:g.workspace.draft.updatedAt}),k=await u.save({operationId:`${p}:save`,expectedRevision:l,workspace:g.workspace,...G(t,"project")?{originProjectId:G(t,"project")}:{}}),v=await u.get(k.datasetId);if(v.workspace.draft.status==="draft"){let P=await u.validate(k.datasetId,k.revision);if(P.workspaceHash!==g.workspace.contentHash||P.packageHash!==b.contentHash)throw new Error("Hosted validation differs from the captured folder bytes.")}else if(v.publication?.packageHash!==b.contentHash)throw new Error("This dataset was changed after the upload receipt. Read the current version before continuing.");let R=sa(t.publish)?await u.publish(k.datasetId,{operationId:`${p}:publish`,expectedRevision:k.revision,workspaceHash:k.workspace.contentHash,packageHash:b.contentHash}):k;d={teamId:s,datasetId:R.datasetId,revision:R.revision,status:R.workspace.draft.status,operationId:p,capturedBytes:g.capturedBytes,sourceHash:g.sourceHash,sourceFiles:g.sourceFiles,workspaceHash:k.workspace.contentHash,packageHash:b.contentHash,publication:R.publication}}else{let m=Number(G(t,"expectedRevision"));if(!Number.isSafeInteger(m)||m<=0)throw new Error(`${r} requires --expected-revision with the retained dataset revision.`);if(r==="validate")d=await u.validate(n,m);else{if(!p)throw new Error("Publish requires a stable --operation-id.");let l=G(t,"workspaceHash"),g=G(t,"packageHash");if(!l||!g)throw new Error("Publish requires --workspace-hash and --package-hash from the retained validation receipt. Keep these pins and the operation id unchanged on retry.");d=await u.publish(n,{operationId:p,expectedRevision:m,workspaceHash:l,packageHash:g})}}}console.log(JSON.stringify(d,null,2))}o(hl,"runDatasetsCommand");export{hl as runDatasetsCommand};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{u as f}from"./chunk-FUFIZ37W.js";import"./chunk-3HQEEZPO.js";import"./chunk-BSHAIAXY.js";import{a as c}from"./chunk-3UQU3KOS.js";import"./chunk-IYWNO4RB.js";import"./chunk-XWPC3AN4.js";import{c as p,f as u}from"./chunk-3M53YXEI.js";import"./chunk-OGPHXXCD.js";import"./chunk-GTG2ODOV.js";import"./chunk-SHCKK3SU.js";import"./chunk-AOBTILU5.js";import"./chunk-GLUWATL5.js";import"./chunk-ZCPIVNCS.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import"./chunk-TU5ITNMX.js";import"./chunk-QUNRWDVO.js";import"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import{a as r}from"./chunk-FTQLQJQV.js";import d from"node:path";import{access as v}from"node:fs/promises";import{constants as C}from"node:fs";import{createRequire as P}from"node:module";var l=d.join("scripts","desktop-harness.ts");async function $(n,t){let o=await j({options:n,rest:t}),e=await f(o.command,o.args,{cwd:o.cwd,inherit:!0,timeoutMs:0});if(e.code!==0)throw new m(e.code)}r($,"runDesktopTestCommand");async function j(n){let t=n.options,o=n.rest,e=o[0];if(e!=="run"&&e!=="attach")throw new c(D());let a=o.slice(1);if(a.length===0)throw new c("usage: openpond desktop-test run <scenario...> [options]");let g=p(t,"cwd")||n.cwd||process.cwd(),w=await O(g),k=(n.env??process.env).OPENPOND_NODE_BINARY?.trim()||process.execPath,s=[P(import.meta.url).resolve("tsx/cli"),l,"run",...a],h=x(t,e);return h&&s.push(`--${h}`),i(s,"--app",t,"app"),i(s,"--server",t,"server"),i(s,"--token",t,"token"),i(s,"--token-file",t,"tokenFile"),i(s,"--devtools-port",t,"devtoolsPort"),i(s,"--artifacts-dir",t,"artifactsDir"),H(s,t),i(s,"--grep",t,"grep"),i(s,"--timeout-ms",t,"timeoutMs"),u(t.keepHome)&&s.push("--keep-home"),{command:k,args:s,cwd:w}}r(j,"buildDesktopHarnessInvocation");async function O(n){let t=d.resolve(n);for(;;){let o=d.join(t,l);if(await R(o))return t;let e=d.dirname(t);if(e===t)throw new c(`Could not find ${l}. Run this command from the OpenPond source checkout or pass --cwd <repo>.`);t=e}}r(O,"resolveDesktopHarnessRepoRoot");function x(n,t){let o=t==="attach"?"attach":null;for(let e of["isolated","attach","packaged","none"])if(u(n[e])){if(o&&o!==e)throw new c("Choose only one desktop harness launch mode: --isolated, --attach, --packaged, or --none.");o=e}return o}r(x,"resolveLaunchMode");function i(n,t,o,e){let a=p(o,e);a&&n.push(t,a)}r(i,"appendStringFlag");function H(n,t){let o=p(t,"json"),e=p(t,"jsonPath");if(o&&y(o))throw new c("harness --json requires a report path. Use --json <path> or --json-path <path>.");if(o&&e&&o!==e)throw new c("Use only one JSON report path: --json <path> or --json-path <path>.");let a=o||e;a&&n.push("--json",a)}r(H,"appendJsonFlag");function y(n){return/^(true|false|1|0|yes|no)$/i.test(n)}r(y,"isBooleanLiteral");async function R(n){try{return await v(n,C.R_OK),!0}catch{return!1}}r(R,"fileExists");function D(){return["usage: openpond desktop-test run <scenario...> [options]"," openpond desktop-test attach <scenario...> [options]","","Options include --isolated, --attach, --packaged, --none, --app <path>,","--server <url>, --token <token>, --token-file <path>, --devtools-port <port>, --artifacts-dir <path>,","--json <path>, --json-path <path>, --grep <pattern>, --timeout-ms <ms>,","--keep-home, and --cwd <repo>."].join(`
|
|
3
|
-
`)}r(D,"desktopHarnessCliUsage");var m=class extends Error{static{r(this,"HarnessCommandFailedError")}exitCode;constructor(t){let o=typeof t=="number"&&t>0?t:1;super(`desktop harness failed with exit code ${o}`),this.name="HarnessCommandFailedError",this.exitCode=o}};export{j as buildDesktopHarnessInvocation,O as resolveDesktopHarnessRepoRoot,$ as runDesktopTestCommand};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{$ as q,$a as xa,Aa as Y,Ba as Z,Ca as _,Da as $,Ea as aa,Fa as ba,Ga as ca,Ha as da,Ia as ea,Ja as fa,Ka as ga,La as ha,Ma as ia,Na as ja,Oa as ka,Pa as la,Qa as ma,Ra as na,Sa as oa,Ta as pa,Ua as qa,Va as ra,W as l,Wa as sa,X as m,Xa as ta,Y as n,Ya as ua,Z as o,Za as va,_ as p,_a as wa,aa as r,ab as ya,ba as s,bb as za,ca as t,cb as Aa,da as u,db as Ba,ea as v,eb as Ca,fa as w,fb as Da,ga as x,gb as Ea,ha as y,hb as Fa,ia as z,ib as Ga,ja as A,jb as Ha,ka as B,kb as Ia,la as C,ma as D,na as E,oa as F,pa as G,qa as H,ra as I,sa as J,ta as K,ua as L,va as M,wa as N,xa as O,ya as W,za as X}from"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import{a,b,c,d,e,f,g,h,i,k as j,l as k,m as P,n as Q,o as R,p as S,q as T,r as U,s as V}from"./chunk-H7IWJN7L.js";import"./chunk-FTQLQJQV.js";export{Ca as CLIENT_CHOICE_KEYS,Ba as ClientChoicesSchema,w as ConfigSchema,v as CredentialReferenceSchema,L as LAYOUT_PREFERENCE_KEYS,l as MISSING_REVISION,na as MigrationResolutionsSchema,P as PERSISTENCE_TABLES_SQL,c as PersistenceError,ea as accountId,r as acquireFileLock,ja as artifactReference,za as assertConfigRunCurrent,Ia as assertHomeCompatible,k as assertStorageAncestors,p as atomicWriteFile,b as bindHomeCallbacks,ya as captureConfigRun,Z as clearCache,ma as collectArtifactOrphans,F as configEditorSchema,C as configRecoveryRevisions,N as configToPreferences,da as credentialVersions,ba as deleteCredential,V as deleteLocalRecord,y as diffConfig,Aa as effectivePreferences,g as expandHome,Fa as exportRecoveryBackup,Ha as exportSettings,m as fileRevision,S as getLocalRecord,qa as initializeHome,e as isMissing,O as layoutPreferences,Y as listCache,T as listLocalRecords,J as mergeConfig,ca as newCredentialId,Q as openStorageDatabase,H as patchConfig,d as persistenceIssue,M as preferencesToConfig,o as privateDirectory,s as processIsDead,j as protectPrivateDirectory,ia as publishManagedArtifact,U as putLocalRecord,fa as readAccountConfiguration,W as readCache,Da as readClientChoices,G as readConfig,_ as readCredential,$ as readCredentials,t as readJsonFile,oa as readMigrationJournal,n as readOptionalFile,ua as readPreferences,sa as recoverMigration,la as releaseArtifactReference,B as rememberValidConfig,D as replaceConfigText,i as resolveConfigPath,xa as resolveEffectiveConfig,f as resolveOpenPondHome,pa as resolveStoredPath,ta as restartMigration,E as restoreConfigRevision,Ga as restoreRecoveryBackup,z as serializeConfig,wa as setProjectTrust,h as storagePaths,ga as updateAccountConfiguration,Ea as updateClientChoices,I as updateConfig,u as updateJsonFile,va as updatePreferences,x as validateConfigDocument,A as validateConfigText,ha as validateManagedArtifacts,ra as validateMigratedHome,K as watchConfig,q as withFileLock,R as withLocalDatabase,ka as withManagedArtifact,a as withOpenPondHome,X as writeCache,aa as writeCredential};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import"./chunk-FUFIZ37W.js";import{c as x}from"./chunk-3HQEEZPO.js";import{c as q,f as b}from"./chunk-BSHAIAXY.js";import"./chunk-3UQU3KOS.js";import"./chunk-IYWNO4RB.js";import"./chunk-XWPC3AN4.js";import{c as s}from"./chunk-3M53YXEI.js";import"./chunk-OGPHXXCD.js";import{f as h,g,h as E,i as S,j as I,k as _}from"./chunk-GTG2ODOV.js";import"./chunk-SHCKK3SU.js";import{d as w}from"./chunk-AOBTILU5.js";import{b as m}from"./chunk-GLUWATL5.js";import"./chunk-ZCPIVNCS.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import"./chunk-TU5ITNMX.js";import"./chunk-QUNRWDVO.js";import"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import{a as u}from"./chunk-FTQLQJQV.js";import{readFile as l,stat as p}from"node:fs/promises";async function z(n,o){let[e,i]=o,d=s(n,"team");if(!d||!e||o.length>(e==="compare"?3:2))throw new Error("usage: experiments <prepare-harness|save|read|list|executions|start|status|cancel|retry|score|passes|pass|cancel-pass|pass-result|result|compare> [id] [candidate-id] --team <id> [--input-file <path>] [--operation-id <id>]");let f=await w(),y={teamId:d,apiKey:await x(f,b(f)),baseUrl:q(n)??f.apiBaseUrl??m},t=new _(y),a;if(e==="prepare-harness"){let r=s(n,"inputFile");if(!r||i||(await p(r)).size>1048576)throw new Error("Harness preparation requires a bounded --input-file with its released target, model and ceiling.");a=await t.prepareHarness(E.parse(JSON.parse(await l(r,"utf8"))))}else if(e==="save"){let r=s(n,"inputFile");if(!r||i)throw new Error("Saving requires --input-file with the complete configuration and stable operationId.");if((await p(r)).size>1048576)throw new Error("Experiment input exceeds one MiB.");a=await t.save(h.parse(JSON.parse(await l(r,"utf8"))))}else if(e==="list"){if(i)throw new Error("List does not accept an Experiment id.");let r=s(n,"limit");a=await t.list({projectId:s(n,"project")||void 0,datasetHash:s(n,"datasetHash")||void 0,search:s(n,"search")||void 0,afterId:s(n,"afterId")||void 0,...r?{limit:Number(r)}:{}})}else{if(!i)throw new Error(`${e} requires an id.`);if(e==="read")a=await t.get(i);else if(e==="start"){let r=s(n,"operationId");if(!r)throw new Error("Start requires --operation-id. Reuse it after a transport failure; use a new id for another execution.");let c=await t.get(i);a=await t.start(g.parse({operationId:r,definition:S(c)}))}else if(e==="executions")a=await t.executions(i,{afterId:s(n,"afterId")||void 0});else if(e==="status")a=await t.execution(i);else if(e==="cancel")a=await t.cancel(i);else if(e==="retry"){let r=s(n,"operationId");if(!r)throw new Error("Retry requires a stable --operation-id for the new execution.");a=await t.retry(i,r)}else if(e==="score"){let r=s(n,"inputFile");if(!r||(await p(r)).size>1048576)throw new Error("Score requires --input-file containing an exact execution reference, grader releases and explicit ceiling, within one MiB.");let c=I.parse(JSON.parse(await l(r,"utf8")));if(c.execution.id!==i)throw new Error("Scoring input belongs to a different execution.");a=await t.score(c)}else if(e==="passes")a=await t.scoringPasses(i,{afterId:s(n,"afterId")||void 0});else if(e==="pass")a=await t.scoringPass(i);else if(e==="cancel-pass")a=await t.cancelScoringPass(i);else if(e==="pass-result")a=await t.scoringResult(i);else if(e==="result")a=await t.result(i);else if(e==="compare"){if(!o[2])throw new Error("Compare requires a baseline and candidate execution id.");a=await t.compare(i,o[2])}else throw new Error(`Unknown Experiment action: ${e}`)}console.log(JSON.stringify(a,null,2))}u(z,"runExperimentsCommand");export{z as runExperimentsCommand};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{j as a,k as b}from"./chunk-62H5KUOS.js";import"./chunk-FFTVDR3E.js";import"./chunk-PKBU37CH.js";import"./chunk-H7YH35JO.js";import"./chunk-4QURHV3Q.js";import"./chunk-YHBIGFFA.js";import"./chunk-JIG7KQOX.js";import"./chunk-L3KS6MOV.js";import"./chunk-CYZOPDTW.js";import"./chunk-3QXPXBVG.js";import"./chunk-6MI4KKWF.js";import"./chunk-ELUCM7CG.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import"./chunk-TU5ITNMX.js";import"./chunk-QUNRWDVO.js";import"./chunk-6FA3GG5B.js";import"./chunk-SDO4FC4Q.js";import"./chunk-IR3YJWPW.js";import"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import"./chunk-FTQLQJQV.js";export{a as loadHostedHarnessRuntime,b as loadHostedHarnessRuntimeForSession};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{ia as l,ma as c}from"./chunk-FFTVDR3E.js";import"./chunk-H7YH35JO.js";import{M as n}from"./chunk-4QURHV3Q.js";import"./chunk-YHBIGFFA.js";import"./chunk-JIG7KQOX.js";import"./chunk-L3KS6MOV.js";import"./chunk-CYZOPDTW.js";import"./chunk-3QXPXBVG.js";import"./chunk-6MI4KKWF.js";import"./chunk-ELUCM7CG.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import"./chunk-TU5ITNMX.js";import"./chunk-QUNRWDVO.js";import"./chunk-6FA3GG5B.js";import"./chunk-SDO4FC4Q.js";import"./chunk-IR3YJWPW.js";import"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import{a as t}from"./chunk-FTQLQJQV.js";import{mkdir as f}from"node:fs/promises";import p from"node:path";import a from"node:path";function d(e,o){let s=a.resolve(e),r=a.resolve(o);return r===s||r.startsWith(`${s}${a.sep}`)}t(d,"isHostedProfileSourceWithinRepo");async function m(e){if(!p.isAbsolute(e.repoPath)||!p.isAbsolute(e.outputDir)||!/^[a-f0-9]{40,64}$/.test(e.sourceRevision)||!e.workspaceId.trim()||!e.repositoryId.trim()||!e.profileId.trim())throw new Error("Hosted Profile compile request is invalid.");let o=await n({repoPath:e.repoPath,profileId:e.profileId});if(o.error||o.mode!=="local"||o.activeProfile!==e.profileId||!o.sourcePath||!d(e.repoPath,o.sourcePath))throw new Error("Hosted Profile source is unavailable.");await f(e.outputDir,{recursive:!0});let s=await l({storeDir:e.outputDir,workspaceId:e.workspaceId,name:e.profileId,profile:o,sourceRevision:e.sourceRevision,repositoryId:e.repositoryId}),r=s.harnessRelease.metadata.profile;if(!r||typeof r!="object"||r.id!==e.profileId||r.sourceRevision!==e.sourceRevision||r.repositoryId!==e.repositoryId)throw new Error("Hosted Profile release provenance is invalid.");let i=await c({storeDir:e.outputDir,workspaceId:e.workspaceId,compiled:s,createdAt:new Date().toISOString()});return{workspaceId:e.workspaceId,sourceRevision:i.sourceRevision,harnessRelease:i.harnessRelease,agentSnapshot:i.agentSnapshot,bundlePath:i.bundlePath}}t(m,"compileHostedProfileRelease");async function H(e){if(e.length!==1||e[0].length>16e3||!/^[A-Za-z0-9_-]+$/.test(e[0]))throw new Error("Hosted Profile compile argument is invalid.");let o=JSON.parse(Buffer.from(e[0],"base64url").toString("utf8")),s=await m(o);process.stdout.write(`${JSON.stringify(s)}
|
|
3
|
-
`)}t(H,"runHostedProfileCompilerCli");export{m as compileHostedProfileRelease,H as runHostedProfileCompilerCli};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import"./chunk-FUFIZ37W.js";import{c as B}from"./chunk-3HQEEZPO.js";import"./chunk-QCLVO56H.js";import{c as U,d as C,f as O}from"./chunk-BSHAIAXY.js";import"./chunk-3UQU3KOS.js";import"./chunk-IYWNO4RB.js";import"./chunk-XWPC3AN4.js";import{f as m}from"./chunk-3M53YXEI.js";import"./chunk-3QXPXBVG.js";import"./chunk-6MI4KKWF.js";import"./chunk-ELUCM7CG.js";import"./chunk-OGPHXXCD.js";import"./chunk-GTG2ODOV.js";import{a as u,c as A,d as x,i as v,j as S,k as R}from"./chunk-JEVA7YQL.js";import"./chunk-SHCKK3SU.js";import{d as k}from"./chunk-AOBTILU5.js";import"./chunk-GLUWATL5.js";import"./chunk-ZCPIVNCS.js";import"./chunk-ALYT2HWV.js";import"./chunk-MJC26GOX.js";import"./chunk-TU5ITNMX.js";import"./chunk-QUNRWDVO.js";import"./chunk-6FA3GG5B.js";import"./chunk-SDO4FC4Q.js";import"./chunk-IR3YJWPW.js";import{H as y}from"./chunk-QK2GLRCY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";import{randomUUID as b}from"node:crypto";async function G(r,t){let e=t[0]||"smoke",n=await k(),l=await B(n,O(n)),c=P(n,r);if(e==="provider-catalog"||e==="providers-catalog"||e==="catalog"){let a=await E({apiBaseUrl:c,token:l});console.log(JSON.stringify(a,null,2));return}if(e==="models"||e==="model-list"){let a=await A({apiBaseUrl:c,token:l});console.log(JSON.stringify(a,null,2));return}if(e==="model"||e==="model-get"){let a=t[1]||o(r,"model");if(!a)throw new Error("usage: opchat model <model>");let p=await x({apiBaseUrl:c,token:l,model:a});console.log(JSON.stringify(p,null,2));return}if(e==="chat"){let a=o(r,"model")||"openpond-chat",p=o(r,"effort"),f=p?y.parse(p):void 0,d=o(r,"message")||o(r,"prompt")||"Reply with a short confirmation from OpChat.";if(!m(r.stream)){let s=await v({apiBaseUrl:c,token:l,model:a,reasoningEffort:f,messages:[{role:"user",content:d}]});console.log(JSON.stringify(s,null,2));return}let g="",h=null,w=null;for await(let s of S({apiBaseUrl:c,token:l,model:a,reasoningEffort:f,messages:[{role:"user",content:d}]}))s.type==="text_delta"?(g+=s.text,process.stdout.write(s.text)):s.type==="finish"?h=s.finishReason:s.type==="usage"&&(w=s.usage);process.stdout.write(`
|
|
3
|
-
`),console.log(JSON.stringify({finishReason:h,usage:w,text:g},null,2));return}if(e==="smoke"){let a=await R({apiBaseUrl:c,token:l,defaultModel:o(r,"model")||void 0,compatibilityModel:o(r,"compatibilityModel")||o(r,"compatModel")||void 0,skipStream:m(r.skipStream),skipTool:m(r.skipTool),log:i(p=>console.log(p),"log")});m(r.json)&&console.log(JSON.stringify(a,null,2));return}throw new Error("usage: opchat <provider-catalog|models|model|chat|smoke> [--opchat-api-base-url <url>] [chat --model <id> --effort <off|low|medium|high|xhigh|max>]")}i(G,"runOpChatCommand");async function E(r){let t=r.apiBaseUrl.trim().replace(/\/+$/,"");if(!t)throw new Error("OpChat API base URL is required.");let e=r.token.trim();if(!e)throw new Error("OpenPond API key is required.");let n=await fetch(`${t}/provider-catalog`,{method:"GET",headers:{Authorization:`Bearer ${e}`,Accept:"application/json","Content-Type":"application/json","x-openpond-client":"openpond-cli","x-openpond-request-id":b()}});if(!n.ok)throw new Error(`Hosted provider catalog failed: ${n.status} ${await T(n)}`);return n.json()}i(E,"getOpChatProviderCatalog");async function T(r){let t=await r.text().catch(()=>"");if(!t)return r.statusText||`HTTP ${r.status}`;try{let e=JSON.parse(t);if(typeof e.message=="string")return e.message;if(typeof e.error=="string")return e.error;if(e.error&&typeof e.error=="object"&&!Array.isArray(e.error)){let n=e.error;return[n.code,n.message].filter(Boolean).join(": ")||t}return t}catch{return t}}i(T,"readResponseError");function P(r,t){let e=o(t,"opchatApiBaseUrl")||o(t,"opchatApiBaseurl")||o(t,"opChatApiBaseUrl")||o(t,"opChatApiBaseurl")||o(t,"opchatApiUrl")||o(t,"opChatApiUrl");return e?u({opChatApiBaseUrl:e}):u({apiBaseUrl:U(t)||r.apiBaseUrl,chatApiBaseUrl:C(t)||r.chatApiBaseUrl})}i(P,"resolveOpChatCliBaseUrl");function o(r,t){let e=r[t];return typeof e=="string"?e.trim():""}i(o,"optionString");export{G as runOpChatCommand};
|