openpond 0.2.47 → 0.2.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/app-server.d.ts +61 -0
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{app-server-runtime-3KFJJUJH.js → app-server-runtime-RWO4KGPU.js} +1 -1
  4. package/dist/chunks/{chunk-LL4QP2IM.js → chunk-2ZJJFBIA.js} +1 -1
  5. package/dist/chunks/{chunk-CNTGL5IX.js → chunk-42GOV5ZU.js} +3 -3
  6. package/dist/chunks/{chunk-PGKEDR3S.js → chunk-5CMKGD43.js} +1 -1
  7. package/dist/chunks/{chunk-K6S4TY5W.js → chunk-7K72KS5C.js} +5 -5
  8. package/dist/chunks/{chunk-36YNUUZL.js → chunk-7MXZJQS7.js} +1 -1
  9. package/dist/chunks/chunk-DFM5JTS2.js +2 -0
  10. package/dist/chunks/chunk-EPY7M5XS.js +2 -0
  11. package/dist/chunks/{chunk-3HBCQNRN.js → chunk-IOQUF34U.js} +1 -1
  12. package/dist/chunks/chunk-JCCU3VFK.js +2 -0
  13. package/dist/chunks/{chunk-D7DA5G2U.js → chunk-LVL4TIAO.js} +2 -2
  14. package/dist/chunks/chunk-NHJ26KXF.js +518 -0
  15. package/dist/chunks/{chunk-6MH55NGW.js → chunk-O7VGFMDO.js} +1 -1
  16. package/dist/chunks/chunk-PNE3IETM.js +190 -0
  17. package/dist/chunks/{chunk-A2GVVXFV.js → chunk-QJRXTIOC.js} +1 -1
  18. package/dist/chunks/{chunk-YBVIFIXN.js → chunk-TIUSKRBP.js} +4 -4
  19. package/dist/chunks/chunk-VOIH2BQA.js +2162 -0
  20. package/dist/chunks/{cli-WPAYXAJX.js → cli-ZLDLOKPL.js} +1 -1
  21. package/dist/chunks/{dist-VDVI7KIO.js → dist-BLBZENVB.js} +1 -1
  22. package/dist/chunks/{hosted-experiment-improvement-T6Q7ASMI.js → hosted-experiment-improvement-MGMZWTZY.js} +1 -1
  23. package/dist/chunks/{hosted-harness-runtime-2R5QRZCG.js → hosted-harness-runtime-FZZLWLBR.js} +1 -1
  24. package/dist/chunks/{hosted-profile-candidate-TKOY3M4S.js → hosted-profile-candidate-LVNKOTKJ.js} +1 -1
  25. package/dist/chunks/{hosted-profile-compiler-VLBFIEWK.js → hosted-profile-compiler-PQFIWO5B.js} +1 -1
  26. package/dist/chunks/{hosted-profile-evaluation-inspection-3MB6MWO6.js → hosted-profile-evaluation-inspection-FPCV42DD.js} +1 -1
  27. package/dist/chunks/hosted-profile-evaluation-preparation-JROREZH3.js +3 -0
  28. package/dist/chunks/{src-R4TSYNTK.js → src-GKWEQK2T.js} +115 -115
  29. package/dist/chunks/{workspaces-WTPFRJMS.js → workspaces-XIQNPAP7.js} +1 -1
  30. package/dist/cli.js +1 -1
  31. package/package.json +1 -1
  32. package/dist/chunks/chunk-4UTBLHFC.js +0 -2
  33. package/dist/chunks/chunk-526PVA3V.js +0 -2678
  34. package/dist/chunks/chunk-BM7TU6NX.js +0 -190
  35. package/dist/chunks/chunk-F7RCOLZD.js +0 -2
  36. package/dist/chunks/chunk-TT46OISU.js +0 -2
  37. package/dist/chunks/chunk-XON44M6V.js +0 -2
  38. package/dist/chunks/hosted-profile-evaluation-preparation-C7WEABZ5.js +0 -3
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{a as H,f as te,h as ae,i as ie}from"./chunk-VOIH2BQA.js";import{g as se}from"./chunk-QJRXTIOC.js";import{F as re,H as oe}from"./chunk-7K72KS5C.js";import{U as X,ba as Y,ca as Z,ga as ee}from"./chunk-7MXZJQS7.js";import{L as K,da as b}from"./chunk-XDMUD4FW.js";import{Ca as g,Ta as U,pc as Q,xa as P}from"./chunk-QRWPEW3Z.js";import{s as G,t as F,u as T}from"./chunk-WV2APYWG.js";import{Qa as L,na as N,oa as y,qa as W,wa as $}from"./chunk-PJM2G7SG.js";import{Fa as _}from"./chunk-SDEDAHV6.js";import{b as R,c as v,d as J,l as S,m as n,o as j,r as q}from"./chunk-NNF6KCHD.js";import{b as h}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";import{randomUUID as V,createHash as fe}from"node:crypto";import{mkdtemp as ue,mkdir as pe,writeFile as D,rm as me}from"node:fs/promises";import he from"node:os";import E from"node:path";var ne=d(async e=>{let a=g(e.packageValue);if(e.grader.runtime!=="sandbox_process")throw new Error("Select the sandbox process runtime for a local file grader.");if(!a.taskset.graders.some(r=>n(r)===n(e.grader)))throw new Error("The private grader differs from its package.");if(!a.taskset.tasks.some(r=>n(r)===n(e.task)))throw new Error("The private case differs from its package.");await e.authorize(),e.signal?.throwIfAborted();let i=await ue(E.join(he.tmpdir(),"profile-private-grade-")),t=V();try{for(let f of a.files.filter(l=>l.asset.visibility!=="policy")){let l=f.asset.path;if(E.isAbsolute(l)||l.split(/[\\/]/).some(u=>!u||u==="."||u===".."))throw new Error("Private grader asset path invalid.");let m=E.join(i,"package",l);await pe(E.dirname(m),{recursive:!0,mode:448}),await D(m,P(f),{mode:256})}await D(E.join(i,"request.json"),JSON.stringify({task:e.task,attempt:e.evidence,input:e.task.input,output:e.evidence.output,artifacts:"artifacts"in e.evidence?e.evidence.artifacts:[],expectedOutput:e.task.expectedOutput}),{mode:256});let r=`import fs from 'node:fs/promises'; const module=await import(${JSON.stringify("./package/"+e.grader.verifierRef.path)}); const result=await module[${JSON.stringify(e.grader.exportName??"verify")}](JSON.parse(await fs.readFile('request.json','utf8'))); console.log(JSON.stringify(result));`;await D(E.join(i,"runner.mjs"),r,{mode:256});let s=await ie({authorize:d(async()=>(await e.authorize(),e.signal?.throwIfAborted(),{candidateId:t,candidateRevision:1,ownerId:t,sessionId:t,turnId:t,sourceRoot:i,writablePaths:[]}),"authorize")})({candidateId:t,sessionId:t,turnId:t,expectedRevision:1,command:"/runtime/node --max-old-space-size=512 runner.mjs",timeoutMs:e.grader.timeoutMs,maxOutputBytes:7e4,signal:e.signal});if(await e.authorize(),e.signal?.throwIfAborted(),s.code!==0||s.timedOut||s.stdoutTruncated||s.stderrTruncated)throw new Error("Private grading sandbox did not complete.");return H.parse(JSON.parse(s.stdout))}finally{await me(i,{recursive:!0,force:!0})}},"executeLocalProfileVerifier");function Me(e){return async a=>{if(!a.manifest)throw new Error("The hosted grader requires its admitted manifest.");await a.authorize(),a.signal?.throwIfAborted();let i="artifacts"in a.evidence&&Array.isArray(a.evidence.artifacts)?a.evidence.artifacts.map(({reference:l,title:m,contentType:u})=>({reference:l,title:m,contentType:u})):[],t="caseOwner"in a.evidence?a.evidence.caseOwner:null;if(!t?.sessionId||!t.turnId)throw new Error("The private grader has no sealed case owner.");let r=Buffer.from(JSON.stringify({manifest:a.manifest,packageValue:a.packageValue,graderId:a.grader.id,taskId:a.task.id,evidence:{...a.evidence,artifacts:i}}));if(r.length>2e7)throw new Error("The private grading package exceeds its transport limit.");let o={callId:V(),sessionId:t.sessionId,turnId:t.turnId,sha256:fe("sha256").update(r).digest("hex"),sizeBytes:r.length,timeoutMs:a.grader.timeoutMs},s=d((l,m=12e4)=>e.request(oe.parse({contractVersion:re,requestId:V(),operation:"profile-evaluations/grade",params:l}),m),"request");for(let l=0;l<r.length;l+=98304)await a.authorize(),a.signal?.throwIfAborted(),await s({...o,action:"upload",offset:l,contentsBase64:r.subarray(l,l+98304).toString("base64")});let f=await s({...o,action:"execute"},a.grader.timeoutMs+12e4);return await a.authorize(),a.signal?.throwIfAborted(),H.parse(f)}}d(Me,"createHostedProfileVerifier");async function ge(e,a){let i=g(e);for(let r of i.taskset.graders){if(r.kind==="model_judge"&&(!a||r.calibrationStatus!=="passed"))throw new Error("This Profile requires its current calibrated judge and bounded private provider owner.");let o="verifierRef"in r?r.verifierRef:"rubricRef"in r?r.rubricRef:null;o&&A(i,o)}let t=i.taskset.metrics?.customAggregator;if(t){let r=i.files.find(o=>o.asset.path===t.module);if(!r||r.asset.visibility==="policy"||S(P(r))!==t.contentHash)throw new Error("The authored aggregate metric is not its exact private release.");new TextDecoder("utf8",{fatal:!0}).decode(P(r))}}d(ge,"preflightProfilePrivateGrading");function A(e,a){let i=e.files.find(t=>t.asset.id===a.id);if(!i||i.asset.visibility==="policy"||n(i.asset)!==n(a))throw new Error("The exact private grader asset is unavailable.");return new TextDecoder("utf8",{fatal:!0}).decode(P(i))}d(A,"readPrivate");async function $e(e){let a=g(e.packageValue);if(a.contentHash!==e.manifest.packageHash||a.taskset.contentHash!==e.manifest.tasksetRelease.contentHash)throw new Error("The private grading package changed its frozen Run identity.");await e.authorize(),await ge(a,!!e.executeBudgetedJudge),await e.authorize();let i=d(async({grader:o,task:s,evidence:f})=>{let l=e.signal;await e.authorize(),l?.throwIfAborted();let m={manifest:e.manifest,packageValue:a,grader:o,task:s,evidence:f,signal:l,authorize:e.authorize},u=e.executeSandboxVerifier?await e.executeSandboxVerifier(m):o.runtime==="sandbox_process"?await ne(m):await te({source:A(a,o.verifierRef),exportName:o.exportName,runtime:o.runtime,timeoutMs:o.timeoutMs,signal:l,value:{task:s,attempt:f,input:s.input,output:f.output,artifacts:"artifacts"in f?f.artifacts:[],expectedOutput:s.expectedOutput,infrastructureError:f.infrastructureError??null}});return await e.authorize(),l?.throwIfAborted(),{score:u.score,passed:u.passed,rewardEligible:o.rewardEligible,failureClass:null,feedback:[u.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:u.evidenceRefs}},"customVerifier"),t=a.taskset.metrics?.customAggregator,r=t?new TextDecoder("utf8",{fatal:!0}).decode(P(a.files.find(o=>o.asset.path===t.module))):void 0;return{authorize:e.authorize,customVerifier:i,...e.executeBudgetedJudge?{modelJudge:L({readRubric:d(async o=>{await e.authorize();let s=A(a,o);return await e.authorize(),s},"readRubric"),executeBudgeted:d(async(o,s)=>{await e.authorize(),s?.throwIfAborted();let f=await e.executeBudgetedJudge(o,s);return await e.authorize(),s?.throwIfAborted(),f},"executeBudgeted")})}:{},...r!==void 0?{metricSource:r,metricExecutor:d(async o=>{await e.authorize(),o.signal?.throwIfAborted();let s=await ae(o);return await e.authorize(),o.signal?.throwIfAborted(),s},"metricExecutor")}:{}}}d($e,"createProfilePrivateGradingOwner");import{promises as ve}from"node:fs";import ke from"node:path";async function at(e){let a=e.definition.tasksetRelease,i=await se(e.store,e.harnessRelease);if(!i)throw new Error("Evaluation Profile Harness release is unavailable.");let t=await Re({...e,runtime:i});if(t)return t;let r=await e.store.listTasksetRevisions(e.profileId);for(let o of r){if(a.id!==o.id&&a.id!==`taskset-release-${o.id}-r${o.revision}`)continue;let s=await we(e.storeDir,o);if(s.taskset.id===a.id&&s.taskset.contentHash===a.contentHash)return s}throw new Error(`Released Taskset ${a.id} is unavailable in Profile ${e.profileId}.`)}d(at,"loadLocalProfileEvaluationTaskset");async function we(e,a){let i=a.metadata.importedPackageHash;if(typeof i=="string"){let o=await Z(e,i);if(o.taskset.id!==a.id||o.taskset.revision!==a.revision)throw new Error("Imported evaluation Taskset differs from its local Profile revision.");return o}if(U(a)!==a.contentHash)throw new Error("Authored evaluation Taskset differs from its immutable revision.");let t=Q({taskset:a,adapterId:X(a)}),r=await ee({storeDir:e,taskset:a,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:t.tasksetRelease,environment:t.environmentRelease,verifierSet:t.verifierSetRelease}});return await Y(e,r),r}d(we,"loadCandidate");async function Re(e){let a=e.definition.tasksetRelease,i=e.runtime;if(i.release.harnessRelease.id!==e.harnessRelease.id||i.release.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Evaluation Taskset runtime differs from its requested release.");let t=`evals/tasksets/${a.contentHash}.json`,r=i.release.harnessRelease.files.find(o=>o.path===t);if(r){if(r.visibility!=="verifier")throw new Error("Evaluation Taskset package is not verifier-private.");let o=await ve.readFile(ke.join(i.release.bundlePath,"source",...t.split("/")));if(S(o)!==r.contentHash)throw new Error("Released evaluation Taskset package bytes differ from their source receipt.");let s=g(JSON.parse(o.toString("utf8")));if(s.taskset.id!==a.id||s.taskset.contentHash!==a.contentHash)throw new Error("Released evaluation Taskset package differs from its definition.");return s}return null}d(Re,"loadReleasedProfileEvaluationTaskset");function C(e){return{id:W(e),label:"Selected Dataset evaluation",description:"Explicit sealed external Dataset evaluation recipe.",target:e.target,tasksetRelease:{id:e.dataset.id,contentHash:e.dataset.contentHash},split:e.split,taskIds:[...new Set(e.population.map(a=>a.taskId))],seeds:[...new Set(e.population.map(a=>a.seed))],criterion:e.criterion}}d(C,"externalProfileEvaluationDefinition");async function lt(e){let a=e.manifest.profileEvaluation,i=a?.externalDatasetBinding?y(a.externalDatasetBinding):null;if(!i)return null;if(!e.resolveExternalDataset)throw new Error("This owner has no authorized external Dataset resolver.");let t=await e.resolveExternalDataset(i,e.selected);await t.authorize();let r=g(t.packageValue),o=await e.loadCatalog({ref:e.selected.profileRef,sourceRevision:e.selected.sourceRevision,harnessRelease:e.selected.harnessRelease});if(n(t.binding)!==n(i)||i.profileId!==e.selected.profileRef.profileId||i.declaredProfileCatalogHash!==o.catalogHash||r.contentHash!==i.packageHash||n(r.taskset)!==n(e.taskset)||i.environmentHash!==n(r.taskset.environment)||i.privateDatasetClosureHash!==n(r.files.filter(l=>l.asset.visibility!=="policy").map(l=>l.asset)))throw new Error("External Dataset admission changed its actual Profile, package or private closure.");let s=C(i),f={schemaVersion:"openpond.profileEvaluations.v1",definitions:[s],suites:[]};if(T(e.manifest,e.taskset,f),!a||a.catalogHash!==n(f)||a.definitionHash!==n(s)||n(a.target)!==n(i.target))throw new Error("External Dataset manifest changed its derived definition.");return await t.authorize(),{...t,packageValue:r,definition:s,catalog:f}}d(lt,"admitProfileExternalDataset");var Pe=h.object({id:R,createdAt:J,definitionId:R,externalDatasetBinding:N.optional(),profileRef:K.optional(),profileSource:h.object({sourceRevision:h.string().min(1).max(500),harnessRelease:h.object({id:R,contentHash:v}).strict()}).strict().optional(),modelRef:q,hostModelConfigurationHash:v.optional(),hostArtifactHash:v.optional(),maximumSpendUsd:h.number().positive().max(1e4).optional(),expectedManifestHash:v.optional(),hostExperiment:h.object({definition:h.object({id:R,revision:h.number().int().positive(),contentHash:v}).strict().nullable(),configurationHash:v,project:h.object({id:R,revision:h.number().int().positive(),contentHash:v,targetId:R.nullable()}).strict().optional()}).strict().optional()}).strict();function vt(e){return async(a,i)=>{let t=Pe.parse(a);if(i?.requireExpectedManifestHash&&!t.expectedManifestHash)throw new Error("Profile evaluation execution requires the reviewed manifest hash.");if(t.profileSource&&!t.profileRef)throw new Error("An exact Profile source requires its accepted Profile reference.");let r=i?.selectedWorkflows??await e.selectedWorkflows(t.profileRef,t.profileSource);if(t.profileRef&&n(t.profileRef)!==n(r.profileRef))throw new Error("Profile preparation did not resolve the explicitly selected Profile.");if(t.profileSource&&(r.sourceRevision!==t.profileSource.sourceRevision||n(r.harnessRelease)!==n(t.profileSource.harnessRelease)))throw new Error("Profile preparation changed its explicitly pinned source.");let o=t.externalDatasetBinding?y(t.externalDatasetBinding):null,s=o?await(e.resolveExternalDataset?e.resolveExternalDataset(o,r):Promise.reject(new Error("This host has not qualified external Dataset Profile execution."))):null;if(s&&(await s.authorize(),n(y(s.binding))!==n(o)))throw new Error("External Dataset admission differs from the actual authorized recipe.");let f=await e.loadCatalog({ref:r.profileRef,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease});if(o&&o.declaredProfileCatalogHash!==f.catalogHash)throw new Error("The original Profile verifier catalog changed.");let l=o?C(o):null;if(l&&t.definitionId!==l.id)throw new Error("Use the external recipe's own definition identity.");let m={schemaVersion:"openpond.profileEvaluations.v1",definitions:l?[l]:f.definitions,suites:l?[]:f.suites},u=l??f.definitions.find(c=>c.id===t.definitionId);if(!u)throw new Error(`Evaluation ${t.definitionId} is absent from the selected Profile release.`);let k=u.target,z=k.kind==="workflow"?r.workflows.find(c=>c.binding.workflowId===k.workflowId)?.binding:_.parse({schemaVersion:"openpond.profileComponentBinding.v1",profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,target:k});if(!z)throw new Error(`Evaluation workflow ${k.kind==="workflow"?k.workflowId:""} is absent from the selected Profile release.`);let w=g(s?.packageValue??await e.loadTasksetPackage(u,r.profileRef.profileId,r.harnessRelease)),p=w.taskset;if(p.id!==u.tasksetRelease.id||p.contentHash!==u.tasksetRelease.contentHash)throw new Error("Evaluation Taskset package differs from its released definition.");let le=p.environment.kind==="text"&&p.tools.length===0,M=p.environment.kind==="work"&&p.environment.entrypoint==="openpond-work-v1"&&p.tools.every(c=>["work_exec","work_save_output"].includes(c.name));if(!le&&!M)throw new Error("Profile evaluation supports text cases or Work cases with the built-in execution and output tools.");if(t.maximumSpendUsd!==void 0&&M&&!e.boundedWorkComputeAvailable)throw new Error("This host has not admitted budgeted Work compute.");if(p.tasks.some(c=>c.artifactRefs.length>b.maxAttachments||c.artifactRefs.some(x=>x.visibility!=="policy"||x.mediaType!=="application/pdf"||x.sizeBytes>b.maxAttachmentBytes)))throw new Error("Profile evaluation accepts only bounded policy-visible PDF task attachments.");if(!o&&!e.privateGradingPreflight&&(p.graders.some(c=>c.kind==="model_judge"||c.kind==="custom_verifier")||p.metrics?.aggregation==="custom"))throw new Error("Profile evaluation cannot run this Taskset's model judge, custom verifier, or custom metric in the current app-server runtime.");await e.privateGradingPreflight?.(w);let B={adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",placement:e.placement,runtimeVersion:"app-server-v1",capabilityReceipt:n({adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",packageHash:w.contentHash,connectedAppScopes:p.policy.connectedAppScopes})},ce={...$({catalog:m,definitionId:u.id,profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,environmentHash:n({packageHash:w.contentHash,runtimeTarget:B})}),...o?{externalDatasetBinding:o}:{},...e.sourceCandidate?{sourceCandidate:e.sourceCandidate}:{}};if(o&&(o.packageHash!==w.contentHash||o.environmentHash!==n(p.environment)||o.privateDatasetClosureHash!==n(w.files.filter(c=>c.asset.visibility!=="policy").map(c=>c.asset))))throw new Error("External Dataset package/environment/private closure changed.");let de=j.parse({provider:t.modelRef.providerId,model:t.modelRef.modelId,revision:null,artifactHash:t.hostArtifactHash??null,tokenizerRevision:null,chatTemplateHash:null}),O=await e.modelConfigurationHash(t.modelRef,t),I=G({schemaVersion:"openpond.tasksetRunManifest.v1",id:t.id,tasksetRelease:u.tasksetRelease,packageHash:w.contentHash,execution:{kind:"harness",harnessRelease:r.harnessRelease},profileEvaluation:ce,policy:{kind:"model",model:de,configurationHash:O},gradingRole:"evaluation",metricPolicy:F(p),population:o?o.population.map(c=>({...c,receiptId:`evaluation-${n([t.id,c.taskId,c.seed,c.fixtureId]).slice(0,32)}`})):u.taskIds.flatMap(c=>u.seeds.map(x=>({receiptId:`evaluation-${n([t.id,c,x]).slice(0,32)}`,taskId:c,seed:x,fixtureId:null}))),runtimeTarget:B,limits:{maxTurns:128,timeoutMs:p.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:t.maximumSpendUsd??null},createdAt:t.createdAt,metadata:{sourceTasksetId:p.metadata.sourceTasksetId??p.id,...r.profileRef.source==="openpond_git"?{profileRepositoryId:r.profileRef.repositoryId}:{},...t.hostExperiment?{experimentDefinition:t.hostExperiment.definition,experimentConfigurationHash:t.hostExperiment.configurationHash,...t.hostExperiment.project?{project:t.hostExperiment.project}:{}}:{}}});if(T(I,p,m),s&&await s.authorize(),t.expectedManifestHash&&I.contentHash!==t.expectedManifestHash)throw new Error("Profile evaluation setup changed since preview; prepare the run again.");return{manifest:I,taskset:p,profileRef:r.profileRef,binding:z,modelRef:t.modelRef,modelConfigurationHash:O}}}d(vt,"createProfileEvaluationRunPreparationService");export{ne as a,Me as b,ge as c,$e as d,at as e,Re as f,lt as g,vt as h};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{Fa as j}from"./chunk-XDMUD4FW.js";import{n as _,o as k,r as U,u as L,w as O,x as V}from"./chunk-WV2APYWG.js";import{Y as C,h as b,i as x}from"./chunk-PJM2G7SG.js";import{i as M,m as p,n as T}from"./chunk-NNF6KCHD.js";import{b as v}from"./chunk-ES2ISFJC.js";import{a as I}from"./chunk-FTQLQJQV.js";var y=v.object({sessionId:v.string().trim().min(1).max(500),turnId:v.string().trim().min(1).max(500)}).strict();async function Q(e){L(e.manifest,e.taskset,e.catalog),V(e.taskset,e.metricSource);let o=e.manifest.profileEvaluation,t=e.catalog.definitions.find(a=>a.id===o.definitionId),d=new Map(e.taskset.tasks.map(a=>[a.id,a])),h=[],r=[];for(let a of e.manifest.population){e.signal?.throwIfAborted();let l=d.get(a.taskId),s=await e.loadCompletedMember?.(a)??null;if(s){let{receipt:m,grade:u}=s,{contentHash:H,...g}=b.parse(u);if(!k(m)||H!==p(g)||m.id!==a.receiptId||m.runManifest.id!==e.manifest.id||m.runManifest.contentHash!==e.manifest.contentHash||m.taskId!==a.taskId||m.seed!==a.seed||m.graderEvidenceRefs.length!==1||m.graderEvidenceRefs[0]?.contentHash!==H||u.taskHash!==p(l)||u.graderSetHash!==p(e.taskset.graders)||m.metadata.score!==u.score||m.metadata.passed!==u.passed)throw new Error(`Retained Profile evaluation member ${a.receiptId} differs from its admitted evidence.`);r.push(u),h.push(m);continue}let n=await e.execute({task:C(l),seed:a.seed,source:o,...e.signal?{signal:e.signal}:{}});e.signal?.throwIfAborted();let c=await x({task:l,evidence:n.evidence,graders:e.taskset.graders,...e.modelJudge?{modelJudge:e.modelJudge}:{},...e.customVerifier?{customVerifier:e.customVerifier}:{},...e.signal?{signal:e.signal}:{}}),E=M.parse(await e.saveGrade(c));if(E.contentHash!==c.contentHash)throw new Error("Stored Profile evaluation grade differs from its graded evidence.");let w=n.failureClass??c.failureClass,P=_({schemaVersion:"openpond.attemptReceipt.v1",id:a.receiptId,runManifest:{id:e.manifest.id,contentHash:e.manifest.contentHash},taskId:a.taskId,seed:a.seed,terminal:n.terminal,failureClass:w,outputHash:n.evidence.infrastructureError?null:p(n.evidence.output),traceHash:n.traceHash,artifactRefs:n.artifactRefs,graderEvidenceRefs:[E],startedAt:n.startedAt,completedAt:n.completedAt,latencyMs:n.latencyMs,costUsd:n.costUsd,metadata:{gradingRole:"evaluation",score:c.score,passed:c.passed,rewardEligible:c.rewardEligible,sourceRevision:o.sourceRevision,definitionHash:o.definitionHash,environmentHash:o.environmentHash,...n.retainedEvidenceRef?{retainedEvidenceRef:y.parse(n.retainedEvidenceRef)}:{}}});await e.saveReceipt(P),r.push(c),h.push(P)}let i=await O({manifest:e.manifest,taskset:e.taskset,receipts:h,...e.metricSource!==void 0?{source:e.metricSource}:{},...e.signal?{signal:e.signal}:{}},e.metricExecutor),R=r.filter(a=>a.passed).length/r.length;return{receipts:h,grades:r,metric:i,passRate:R,passed:R>=t.criterion.minimumPassRate&&(!t.criterion.requireComplete||h.every(a=>a.terminal))}}I(Q,"executeProfileEvaluationRun");function q(e,o){if(o==="agent_action"){let t=e.find(d=>d.name==="workspace_action_result"&&d.action==="profile_workflow_action")?.output;if(typeof t!="string")throw new Error("Profile Agent action evaluation did not produce a released action result.");return t}return e.filter(t=>t.name==="assistant.delta"&&typeof t.output=="string").map(t=>t.output??"").join("")}I(q,"profileEvaluationOutput");async function z(e){let{store:o,manifest:t,receipt:d}=e;if(!d.metadata.retainedEvidenceRef)return null;let h=y.parse(d.metadata.retainedEvidenceRef),[r,i]=await Promise.all([o.getSession(h.sessionId),o.getTurn(h.turnId)]),R=r?.metadata?.profileEvaluationRun,a=t.profileEvaluation;if(!r||!i||i.sessionId!==r.id||!a||!r.currentProfile||p(r.currentProfile)!==p(e.profileRef)||p(R)!==p({id:t.id,contentHash:t.contentHash})||r.metadata?.taskId!==d.taskId||r.metadata?.seed!==d.seed||!i.completedAt||i.completedAt!==d.completedAt||i.startedAt!==d.startedAt||!i.harnessSnapshot||i.harnessSnapshot.harnessRelease.id!==a.harnessRelease.id||i.harnessSnapshot.harnessRelease.contentHash!==a.harnessRelease.contentHash||t.policy.kind!=="model"||!i.modelRef||i.modelRef.providerId!==t.policy.model.provider||i.modelRef.modelId!==t.policy.model.model)throw new Error("Retained Profile policy turn differs from its admitted case.");let l=await o.runtimeEventsForTurn(i.id);if(l.some(u=>u.turnId!==i.id)||p(l)!==d.traceHash)throw new Error("Retained Profile policy trace differs from its immutable receipt.");let s=q(l,a.target.kind);if(d.outputHash!==null&&p({text:s})!==d.outputHash)throw new Error("Retained Profile output differs from its immutable receipt.");let n=d.artifactRefs.flatMap(u=>{let H=l.filter(f=>(f.action==="work_output_save"||f.action==="sandbox_save_output")&&f.status==="completed").flatMap(f=>{let $=f.data&&typeof f.data=="object"?f.data:{},A=j.safeParse($.outputRef);return A.success?[A.data]:[]}).filter(f=>f.sourceTaskId===r.id&&f.sourceTurnId===i.id&&`${r.id}/${f.id}/${f.revision}/${f.title}`===u.id&&f.sha256===u.contentHash&&f.sizeBytes===u.sizeBytes&&f.contentType===u.mediaType);if(H.length!==1)throw new Error("The case output has no unique sealed saved-file identity.");let g=H[0];if(g.location.kind!=="managed")return[];let S=`/api/work/outputs/${encodeURIComponent(g.location.fileId)}`;if(g.location.downloadPath!==S)throw new Error("The saved output has no canonical managed download route.");return[{id:g.id,title:g.title,revision:g.revision,contentType:g.contentType,sizeBytes:g.sizeBytes,sha256:g.sha256,downloadPath:S}]}),c=await o.listModelUsageRecords({sessionId:r.id,turnId:i.id,limit:1e4}),E=e.eventAfterId?l.findIndex(u=>u.id===e.eventAfterId):-1;if(e.eventAfterId&&E<0)throw new Error("Profile trace cursor is unavailable in this case.");let w=E+1,P=Math.max(1,Math.min(250,e.eventLimit??100)),m=l.slice(w,w+P);return{ref:h,prompt:i.prompt,output:d.outputHash===null?null:{text:s},partialOutput:d.outputHash===null&&s?{text:s}:null,error:i.error,events:m,eventCount:l.length,nextEventCursor:w+m.length<l.length?m.at(-1).id:null,files:n,usage:c,usageCoverage:c.length===1e4?"partial":"complete"}}I(z,"readProfileEvaluationPolicyEvidence");var ne=v.object({runId:v.string().trim().min(1).max(240),receiptId:v.string().trim().min(1).max(500).optional(),eventAfterId:v.string().trim().min(1).max(500).optional(),eventLimit:v.number().int().min(1).max(250).optional(),manifest:U.optional()}).strict().refine(e=>e.receiptId||!e.eventAfterId&&!e.eventLimit,"Select a case before requesting its trace page.").refine(e=>!e.manifest||e.receiptId,"Interrupted-run inspection requires one exact case.");async function de(e){let o=await e.store.getProfileEvaluationRun(e.runId);if(o&&p(o.profileRef)!==p(e.profileRef))throw new Error("Profile evaluation run is unavailable in the selected Profile.");let t=o?.manifest??e.manifest;if(!t||!o&&!e.receiptId)throw new Error("Profile evaluation run is unavailable in the selected Profile.");if(o){if(e.manifest&&e.manifest.contentHash!==o.manifest.contentHash)throw new Error("Profile evaluation run differs from its pinned manifest.")}else if(T(t,"Interrupted Profile evaluation manifest"),t.id!==e.runId||t.profileEvaluation?.profileId!==e.profileRef.profileId||e.profileRef.source==="openpond_git"&&t.metadata.profileRepositoryId!==e.profileRef.repositoryId)throw new Error("Profile evaluation run is unavailable in the selected Profile.");let d=t.population.map((r,i)=>({member:r,index:i})).filter(({member:r})=>!e.receiptId||r.receiptId===e.receiptId);if(e.receiptId&&d.length!==1)throw new Error("Profile evaluation case is unavailable in the selected run.");let h=await Promise.all(d.map(async({member:r,index:i})=>{let R=o?null:await e.store.getProfileEvaluationReceipt(r.receiptId),a=o?.receiptRefs[i]??(R?{id:R.id,contentHash:R.contentHash}:null),l=o?.gradeRefs[i]??R?.graderEvidenceRefs[0];if(!a||!l)throw new Error("Profile evaluation run has incomplete case evidence.");let[s,n]=await Promise.all([e.store.getProfileEvaluationReceipt(a.id),e.store.getProfileEvaluationGrade(l.contentHash)]);if(!s||!o&&!k(s)||s.contentHash!==a.contentHash||s.id!==r.receiptId||s.taskId!==r.taskId||s.seed!==r.seed||s.runManifest.id!==t.id||s.runManifest.contentHash!==t.contentHash||!n||n.contentHash!==l.contentHash||!s.graderEvidenceRefs.some(c=>c.id===l.id&&c.contentHash===l.contentHash))throw new Error("Profile evaluation case evidence differs from its retained run.");return{taskId:r.taskId,seed:r.seed,receiptId:s.id,receiptHash:s.contentHash,traceHash:s.traceHash,outputHash:s.outputHash,score:n.score,passed:n.passed,gradingStatus:n.gradingStatus,failureClass:n.failureClass,artifactCount:s.artifactRefs.length,latencyMs:s.latencyMs,costUsd:s.costUsd,terminal:s.terminal,feedback:n.components.map(c=>({graderId:c.graderId,graderVersion:c.graderVersion,score:c.score,passed:c.passed,feedback:c.feedback})),...e.receiptId?{receipt:s,evidence:await z({store:e.store,profileRef:e.profileRef,manifest:t,receipt:s,eventAfterId:e.eventAfterId,eventLimit:e.eventLimit})}:{}}}));return{runId:t.id,sourceRevision:t.profileEvaluation?.sourceRevision??null,cases:h}}I(de,"inspectProfileEvaluationRun");export{Q as a,q as b,ne as c,de as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{k as H,na as R}from"./chunk-36YNUUZL.js";import{J as I,N as C}from"./chunk-HA7EFTPF.js";import{l as k,m as b}from"./chunk-NNF6KCHD.js";import{a as h}from"./chunk-FTQLQJQV.js";import{promises as s}from"node:fs";import n from"node:path";import{execFile as O}from"node:child_process";import{promisify as A}from"node:util";var T=A(O);async function v(e,i,a={}){return(await T("git",["-C",e,...i],{encoding:"utf8",timeout:3e4,maxBuffer:8388608,env:{...process.env,...a}})).stdout.trim()}h(v,"candidateGit");async function j(e,i=I,a=!1){if(e.profileRef.source!=="local"&&!a)throw new Error("This Git adapter requires the actual installed local Profile owner; hosted adoption needs its published-source owner.");let r=await i(e.profileRef);if(r.error||r.mode!=="local"||r.activeProfile!==e.profileRef.profileId||!r.repoPath||!r.sourcePath)throw new Error("The original Profile owner is unavailable.");let l=await s.realpath(r.repoPath),p=await s.realpath(r.sourcePath),f=n.relative(l,p);if(f.startsWith("..")||n.isAbsolute(f))throw new Error("Profile source escapes its actual Git owner.");return{profile:r,repo:l,source:p,sourceRelative:f}}h(j,"originalCandidateProfile");async function Pe(e,i,a=!0){if(!/^[a-f0-9]{40}$/.test(i)||await v(e,["rev-parse","HEAD"])!==i)throw new Error("The original Profile Git revision changed.");if(a&&await v(e,["status","--porcelain","--untracked-files=all"]))throw new Error("Commit or reconcile changes in the original Profile before this operation.")}h(Pe,"assertCandidateGitHead");async function ye(e,i){let a=await j(e.state,e.loadProfile,e.allowRemoteSnapshot),r=n.join(e.storeDir,"library","harnesses","profile-candidate-staging");await s.mkdir(r,{recursive:!0,mode:448});let l=await s.mkdtemp(n.join(r,"source-"));await s.rmdir(l),await v(a.repo,["worktree","add","--detach",l,e.commit]);try{let p=await C({repoPath:l,profileId:e.state.profileRef.profileId});if(p.error||!p.sourcePath)throw new Error("The staged original Profile cannot be loaded.");return await i({root:l,profile:p,repo:a.repo,source:p.sourcePath})}finally{await v(a.repo,["worktree","remove","--force",l]).catch(()=>{}),await s.rm(l,{recursive:!0,force:!0})}}h(ye,"withCandidateProfileWorktree");function y(e){if(!e||n.isAbsolute(e)||e.includes("\\")||e.split("/").some(i=>!i||i==="."||i===".."))throw new Error("Original Profile patch path is not contained.");return e}h(y,"portable");async function ve(e){let i=e.base.manifest.metadata.profileSourceBindings;if(!Array.isArray(i))throw new Error("The original release needs compiler source bindings before candidate adoption.");let a=e.state.component.path,r=e.state.component,l=new Map(i.map(t=>{if(!t||typeof t!="object"||typeof t.releasedPath!="string"||typeof t.profileRelativePath!="string")throw new Error("Original Profile source binding is invalid.");return[y(t.releasedPath),y(t.profileRelativePath)]})),p=r.kind==="instruction"&&a==="instructions/system.md"&&e.base.manifest.metadata.profileInstructionSourcePath==="instructions/system.md"&&!l.has(a),f=l.get(a)??(p?"instructions/system.md":void 0),S=r.kind==="workflow"?`workflows/${r.workflowId}/`:r.kind==="agent"?a.split("/").slice(0,2).join("/")+"/":n.posix.dirname(a)+"/",w=f?n.posix.dirname(f)+"/":null;if(r.kind==="workflow"&&!f&&(w=S),r.kind==="agent"){let t=e.profile.agents.find(o=>a.startsWith(`agents/${o.id}/`));if(!t)throw new Error("The selected Agent original source is unavailable.");let c=y(t.path);w=((await s.lstat(n.join(e.source,c))).isDirectory()?c:n.posix.dirname(c))+"/"}let E=new Map(e.base.sourceFiles.map(t=>[t.path,t])),x=new Map(e.candidate.sourceFiles.map(t=>[t.path,t])),g=new Map;for(let t of new Set([...E.keys(),...x.keys()])){let c=E.get(t),m=x.get(t);if(c?.asset.contentHash===m?.asset.contentHash)continue;if(c&&c.asset.visibility!=="policy"||m&&m.asset.visibility!=="policy")throw new Error("A candidate cannot change protected Profile source.");let o=l.get(t)??(p&&t===a?f:void 0);if(!o&&t.startsWith(S)&&w&&(o=w+t.slice(S.length)),!o&&t==="workflows/catalog.json"&&[...l.keys()].some(P=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(P))||!o&&t==="dependency-lock/profile-import.json")continue;if(!o)throw new Error(`The selected component has no original Profile source mapping: ${t}`);if(o=y(o),o!==f&&!(r.kind!=="instruction"&&w&&o.startsWith(w)))throw new Error("Candidate patch changes a different original Profile component.");if(H(o))throw new Error("Candidate patch crosses the protected Profile evaluation closure.");let u=g.get(o),d=m?.bytes??null;if(u&&(u.before!==(c?.asset.contentHash??null)||b(u.bytes===null?null:Array.from(u.bytes))!==b(d===null?null:Array.from(d))))throw new Error("Public component aliases disagree on the original source edit.");g.set(o,{before:p&&t===a?null:c?.asset.contentHash??null,bytes:d})}for(let[t,c]of g){let m=n.join(e.source,...t.split("/")),o=n.dirname(m);for(;!await s.stat(o).catch(()=>null);)o=n.dirname(o);let u=n.relative(await s.realpath(e.source),await s.realpath(o));if(u.startsWith("..")||n.isAbsolute(u))throw new Error("Candidate patch escapes the staged Profile source.");let d=await s.lstat(m).catch(()=>null);if(d?.isSymbolicLink()||d&&!d.isFile())throw new Error("Original source patch needs a regular file.");let P=d?await s.readFile(m):null;if((P?k(P):null)!==c.before)throw new Error("Original source bytes differ from the exact candidate baseline.");c.bytes===null?await s.rm(m):(await s.mkdir(n.dirname(m),{recursive:!0}),await s.writeFile(m,c.bytes,{mode:d?.mode??384}))}return[...g.keys()]}h(ve,"applyCandidateProfileSource");function Se(e){let i=e.base.manifest.metadata.profileRepositoryId;return R({storeDir:e.storeDir,workspaceId:e.state.ownerWorkspaceId,name:e.base.manifest.name,profile:e.profile,sourceRevision:e.sourceRevision,...typeof i=="string"?{repositoryId:i}:{}})}h(Se,"compileOriginalCandidateProfile");export{v as a,j as b,Pe as c,ye as d,ve as e,Se as f};
2
+ import{k as H,na as R}from"./chunk-7MXZJQS7.js";import{J as I,N as C}from"./chunk-HA7EFTPF.js";import{l as k,m as b}from"./chunk-NNF6KCHD.js";import{a as h}from"./chunk-FTQLQJQV.js";import{promises as s}from"node:fs";import n from"node:path";import{execFile as O}from"node:child_process";import{promisify as A}from"node:util";var T=A(O);async function v(e,i,a={}){return(await T("git",["-C",e,...i],{encoding:"utf8",timeout:3e4,maxBuffer:8388608,env:{...process.env,...a}})).stdout.trim()}h(v,"candidateGit");async function j(e,i=I,a=!1){if(e.profileRef.source!=="local"&&!a)throw new Error("This Git adapter requires the actual installed local Profile owner; hosted adoption needs its published-source owner.");let r=await i(e.profileRef);if(r.error||r.mode!=="local"||r.activeProfile!==e.profileRef.profileId||!r.repoPath||!r.sourcePath)throw new Error("The original Profile owner is unavailable.");let l=await s.realpath(r.repoPath),p=await s.realpath(r.sourcePath),f=n.relative(l,p);if(f.startsWith("..")||n.isAbsolute(f))throw new Error("Profile source escapes its actual Git owner.");return{profile:r,repo:l,source:p,sourceRelative:f}}h(j,"originalCandidateProfile");async function Pe(e,i,a=!0){if(!/^[a-f0-9]{40}$/.test(i)||await v(e,["rev-parse","HEAD"])!==i)throw new Error("The original Profile Git revision changed.");if(a&&await v(e,["status","--porcelain","--untracked-files=all"]))throw new Error("Commit or reconcile changes in the original Profile before this operation.")}h(Pe,"assertCandidateGitHead");async function ye(e,i){let a=await j(e.state,e.loadProfile,e.allowRemoteSnapshot),r=n.join(e.storeDir,"library","harnesses","profile-candidate-staging");await s.mkdir(r,{recursive:!0,mode:448});let l=await s.mkdtemp(n.join(r,"source-"));await s.rmdir(l),await v(a.repo,["worktree","add","--detach",l,e.commit]);try{let p=await C({repoPath:l,profileId:e.state.profileRef.profileId});if(p.error||!p.sourcePath)throw new Error("The staged original Profile cannot be loaded.");return await i({root:l,profile:p,repo:a.repo,source:p.sourcePath})}finally{await v(a.repo,["worktree","remove","--force",l]).catch(()=>{}),await s.rm(l,{recursive:!0,force:!0})}}h(ye,"withCandidateProfileWorktree");function y(e){if(!e||n.isAbsolute(e)||e.includes("\\")||e.split("/").some(i=>!i||i==="."||i===".."))throw new Error("Original Profile patch path is not contained.");return e}h(y,"portable");async function ve(e){let i=e.base.manifest.metadata.profileSourceBindings;if(!Array.isArray(i))throw new Error("The original release needs compiler source bindings before candidate adoption.");let a=e.state.component.path,r=e.state.component,l=new Map(i.map(t=>{if(!t||typeof t!="object"||typeof t.releasedPath!="string"||typeof t.profileRelativePath!="string")throw new Error("Original Profile source binding is invalid.");return[y(t.releasedPath),y(t.profileRelativePath)]})),p=r.kind==="instruction"&&a==="instructions/system.md"&&e.base.manifest.metadata.profileInstructionSourcePath==="instructions/system.md"&&!l.has(a),f=l.get(a)??(p?"instructions/system.md":void 0),S=r.kind==="workflow"?`workflows/${r.workflowId}/`:r.kind==="agent"?a.split("/").slice(0,2).join("/")+"/":n.posix.dirname(a)+"/",w=f?n.posix.dirname(f)+"/":null;if(r.kind==="workflow"&&!f&&(w=S),r.kind==="agent"){let t=e.profile.agents.find(o=>a.startsWith(`agents/${o.id}/`));if(!t)throw new Error("The selected Agent original source is unavailable.");let c=y(t.path);w=((await s.lstat(n.join(e.source,c))).isDirectory()?c:n.posix.dirname(c))+"/"}let E=new Map(e.base.sourceFiles.map(t=>[t.path,t])),x=new Map(e.candidate.sourceFiles.map(t=>[t.path,t])),g=new Map;for(let t of new Set([...E.keys(),...x.keys()])){let c=E.get(t),m=x.get(t);if(c?.asset.contentHash===m?.asset.contentHash)continue;if(c&&c.asset.visibility!=="policy"||m&&m.asset.visibility!=="policy")throw new Error("A candidate cannot change protected Profile source.");let o=l.get(t)??(p&&t===a?f:void 0);if(!o&&t.startsWith(S)&&w&&(o=w+t.slice(S.length)),!o&&t==="workflows/catalog.json"&&[...l.keys()].some(P=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(P))||!o&&t==="dependency-lock/profile-import.json")continue;if(!o)throw new Error(`The selected component has no original Profile source mapping: ${t}`);if(o=y(o),o!==f&&!(r.kind!=="instruction"&&w&&o.startsWith(w)))throw new Error("Candidate patch changes a different original Profile component.");if(H(o))throw new Error("Candidate patch crosses the protected Profile evaluation closure.");let u=g.get(o),d=m?.bytes??null;if(u&&(u.before!==(c?.asset.contentHash??null)||b(u.bytes===null?null:Array.from(u.bytes))!==b(d===null?null:Array.from(d))))throw new Error("Public component aliases disagree on the original source edit.");g.set(o,{before:p&&t===a?null:c?.asset.contentHash??null,bytes:d})}for(let[t,c]of g){let m=n.join(e.source,...t.split("/")),o=n.dirname(m);for(;!await s.stat(o).catch(()=>null);)o=n.dirname(o);let u=n.relative(await s.realpath(e.source),await s.realpath(o));if(u.startsWith("..")||n.isAbsolute(u))throw new Error("Candidate patch escapes the staged Profile source.");let d=await s.lstat(m).catch(()=>null);if(d?.isSymbolicLink()||d&&!d.isFile())throw new Error("Original source patch needs a regular file.");let P=d?await s.readFile(m):null;if((P?k(P):null)!==c.before)throw new Error("Original source bytes differ from the exact candidate baseline.");c.bytes===null?await s.rm(m):(await s.mkdir(n.dirname(m),{recursive:!0}),await s.writeFile(m,c.bytes,{mode:d?.mode??384}))}return[...g.keys()]}h(ve,"applyCandidateProfileSource");function Se(e){let i=e.base.manifest.metadata.profileRepositoryId;return R({storeDir:e.storeDir,workspaceId:e.state.ownerWorkspaceId,name:e.base.manifest.name,profile:e.profile,sourceRevision:e.sourceRevision,...typeof i=="string"?{repositoryId:i}:{}})}h(Se,"compileOriginalCandidateProfile");export{v as a,j as b,Pe as c,ye as d,ve as e,Se as f};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{b as H}from"./chunk-O7VGFMDO.js";import{a as L}from"./chunk-T5LE6R5S.js";import{F as g,K as N,L as B}from"./chunk-7K72KS5C.js";import{qa as _}from"./chunk-7MXZJQS7.js";import{O as x,R as V,S as F,Y as R}from"./chunk-XDMUD4FW.js";import{ta as I}from"./chunk-IKWDL3RB.js";import{Ca as b}from"./chunk-QRWPEW3Z.js";import{ma as E,na as C,oa as y}from"./chunk-PJM2G7SG.js";import{Ga as A}from"./chunk-SDEDAHV6.js";import{c as D,e as v,f as U,g as M,i as O,qa as T}from"./chunk-DALJMSJG.js";import{m as p}from"./chunk-NNF6KCHD.js";import{b as o}from"./chunk-ES2ISFJC.js";import{a as w,c as P,f as j,h as c}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";import h from"node:path";import{AsyncLocalStorage as ee}from"node:async_hooks";import{promises as z}from"node:fs";var J=new ee;function fe(r,e=!1){let t=J.getStore();t&&(e&&(t.length=0),t.push(r))}i(fe,"onStartupFailure");async function ge(r,e){await T(r);let t;try{t=await M(h.join(c(r).runtime,"server-owner"),100)}catch(n){if(n instanceof P&&n.issue.code==="STORAGE_BUSY"){let a=await O(h.join(c(r).runtime,"endpoint.json"),()=>null);throw new P({code:"RUNTIME_ALREADY_RUNNING",path:r,message:"An OpenPond runtime already owns this home.",action:a?.url?`Connect to the existing runtime at ${a.url}, or stop it before starting another.`:"Stop the existing runtime before starting another with this home."})}throw n}let s=[];try{let n=await w(r,()=>J.run(s,e)),a=n.close.bind(n);s.length=0;let d;return{...n,close:i(()=>d??=(async()=>{try{await w(r,a)}finally{await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(n){try{for(let a of s.reverse())await Promise.resolve().then(()=>w(r,a)).catch(()=>{});await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw n}}i(ge,"ownHomeRuntime");async function he(r,e,t){await v(h.join(c(r).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:e,serverId:t}))}i(he,"publishRuntimeEndpoint");function ye(r){return te({runtime:B(r.ports),close:r.close})}i(ye,"createAppServer");function te(r){let e=!1;return{runtime:r.runtime,close:i(async()=>{e||(e=!0,await r.close?.())},"close")}}i(te,"attachAppServer");async function Pe(r){let e=typeof r.appServer=="function"?null:r.appServer;try{await N({host:e?.runtime??(async()=>(e=await r.appServer(),e.runtime)),readable:r.readable,writable:r.writable,hostStorageClient:r.hostStorageClient})}finally{await e?.close()}}i(Pe,"runAppServerJsonl");import S from"node:path";import{lstat as re,readFile as oe,realpath as $}from"node:fs/promises";import{randomUUID as se}from"node:crypto";var ne=o.object({id:o.string(),version:o.string(),contentHash:o.string().regex(/^[a-f0-9]{64}$/),feedbackKey:o.string(),release:o.object({id:o.string(),revision:o.union([o.string(),o.number()]),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().nullable()}).strict(),G=o.object({binding:C,packageValue:o.unknown(),graders:o.array(ne).max(100),actualGrading:o.object({pass:o.unknown(),evidence:o.unknown()}).strict().optional(),sourceCandidate:E.optional()}).strict();async function Me(r,e){let t=await $(e),s=S.resolve(r);if(S.dirname(s)!==t||await $(s)!==s)throw new Error("External Dataset package escaped its private owner home.");let n=await re(s);if(!n.isFile()||n.isSymbolicLink()||n.size>32*1024*1024)throw new Error("External Dataset package is not a bounded regular file.");let a=G.parse(JSON.parse(new TextDecoder("utf8",{fatal:!0}).decode(await oe(s))));return a.binding=y(a.binding),a.packageValue=I({...a,packageValue:b(a.packageValue)}),a}i(Me,"readHostProfileExternalDataset");async function Oe(r){let e=G.parse(r.value),t=y(e.binding),s=r.release,n={id:s.harnessRelease.id,contentHash:s.harnessRelease.contentHash};if(t.protectedProfileClosureHash!==p(s.harnessRelease.files.filter(l=>l.visibility!=="policy").map(l=>({path:l.path,asset:l}))))throw new Error("The external Dataset protected Profile closure changed.");if(e.sourceCandidate){let l=await _({workspaceId:typeof s.agentSnapshot.metadata.workspaceId=="string"?s.agentSnapshot.metadata.workspaceId:s.workspaceId,sourceDir:S.join(s.bundlePath,"source")});if(p(e.sourceCandidate.harnessRelease)!==p(n)||L(l).protectedClosureHash!==e.sourceCandidate.protectedClosureHash)throw new Error("The external Dataset candidate differs from its retained frozen compiled source.")}let a=i(async l=>{if(o.object({authorized:o.literal(!0),bindingHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(await r.client.request({contractVersion:1,requestId:se(),operation:"profile.externalDataset.authorize",params:{...l,bindingHash:t.contentHash}})).bindingHash!==t.contentHash)throw new Error("The host authorized another external Dataset binding.")},"authorize");return{authorize:a,resolveExternalDataset:i(async(l,m)=>{if(await a(),p(l)!==p(t)||m.profileRef.profileId!==t.profileId||m.sourceRevision!==r.sourceRevision||p(m.harnessRelease)!==p(n))throw new Error("External Dataset requested another actual Profile source or recipe.");let f=I({...e,binding:l,packageValue:b(e.packageValue)});return{binding:t,packageValue:f,authorize:a}},"resolveExternalDataset"),sourceCandidate:e.sourceCandidate}}i(Oe,"createHostProfileExternalDataset");import{randomBytes as ae}from"node:crypto";function Ne(){return j()}i(Ne,"appDataDir");function Be(r){return c(r).config}i(Be,"providersConfigPath");function Le(r){return c(r).credentials}i(Le,"providerSecretsConfigPath");function ze(r){return c(r).key}i(ze,"providerSecretsKeyPath");async function Je(r){let e=c(r).token;return U(e,async()=>{let t=(await D(e))?.trim(),s=process.env.OPENPOND_APP_TOKEN||t||ae(32).toString("base64url");return s!==t&&await v(e,s),{token:s,tokenFile:e}})}i(Je,"ensureCapabilityToken");import u from"node:path";import{readFile as W}from"node:fs/promises";var q=o.object({profileId:o.string().min(1),sourceRevision:o.string().min(1),repositoryId:o.string().min(1),harnessRelease:o.object({id:o.string().min(1),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),hostExecution:o.object({conversationId:o.string().min(1),turnId:o.string().min(1)}).strict().optional(),workspaceId:o.string().min(1),assetsPath:o.string().min(1).refine(u.isAbsolute)}).strict();async function Ze(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile release changed after admission.");let n=s.release.harnessRelease.metadata.profile;if(!n||typeof n!="object"||n.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile provenance differs from admitted release.");return{profile:F(),profileLibrary:V()}}i(Ze,"loadHostedProfileStateAndLibrary");async function et(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile workflow release is unavailable.");let n=s.release.harnessRelease.metadata.profile;if(n?.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile workflow provenance changed.");let a=t.harnessRelease,d={source:"openpond_git",repositoryId:t.repositoryId,profileId:t.profileId};if(!s.release.harnessRelease.files.some(f=>f.path==="workflows/catalog.json"))return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:[]};let l=u.join(s.release.bundlePath,"source","workflows"),m=A({agentSnapshot:s.release.agentSnapshot,harnessRelease:s.release.harnessRelease,catalogBytes:await W(u.join(l,"catalog.json")),actionBytes:await W(u.join(l,"actions.json"))});return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:m.catalog.workflows.map(f=>({workflow:f,binding:{schemaVersion:"openpond.profileWorkflowBinding.v1",profileId:t.profileId,sourceRevision:t.sourceRevision,harnessRelease:a,catalogHash:m.catalogHash,workflowId:f.id}}))}}i(et,"listHostedProfileWorkflows");import{createHash as ie,randomUUID as k}from"node:crypto";var K=o.object({approval:x,revision:o.number().int().positive()}).strict(),Q=o.object({record:R}).strict(),le=o.object({startedAt:o.string().min(1),requestOrdinal:o.number().int().nonnegative(),id:o.string().min(1)}).strict(),ce=o.object({records:o.array(R).max(200),nextBefore:le.nullable()}).strict(),Y=1e4,X=class{constructor(e){this.client=e}client;static{i(this,"HostedApprovalStorage")}async readApproval(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"approval/get",params:{approvalId:e}});return t===null?null:K.parse(t)}async getApproval(e){return(await this.readApproval(e))?.approval??null}async putApproval(e){let t=x.parse(e.approval);if(!e.requestId.trim())throw new Error("Approval mutation requires a stable request ID.");return K.parse(await this.client.request({contractVersion:g,requestId:e.requestId,operation:"approval/upsert",params:{approval:t,expectedRevision:e.expectedRevision}}))}},Z=class{constructor(e){this.client=e}client;static{i(this,"HostedModelUsageStorage")}async upsertModelUsageRecord(e){let t=R.parse(e),s=ie("sha256").update(JSON.stringify(t)).digest("hex"),n=await this.client.request({contractVersion:g,requestId:`usage:${s}`,operation:"usage/upsert",params:{record:t}}),a=Q.parse(n).record;if(a.requestId!==t.requestId)throw new Error("Host usage upsert changed request identity.");return a}async getModelUsageRecordByRequestId(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"usage/getByRequestId",params:{requestId:e}});return t===null?null:Q.parse(t).record}async listModelUsageRecords(e={}){let t=e.limit===void 0||e.limit>=Y,s=e.limit===void 0?Y:Math.max(1,Math.min(1e4,Math.trunc(e.limit))),n={...e.sessionId?{sessionId:e.sessionId}:{},...e.turnId?{turnId:e.turnId}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...e.startedAtFrom?{startedAtFrom:e.startedAtFrom}:{},...e.startedAtTo?{startedAtTo:e.startedAtTo}:{},...e.visibility&&e.visibility!=="all"?{visibility:e.visibility}:{},...e.status&&e.status!=="all"?{status:e.status}:{}},a=[],d=null;for(;a.length<s+(t?1:0);){let l=ce.parse(await this.client.request({contractVersion:g,requestId:k(),operation:"usage/page",params:{query:n,before:d,limit:Math.min(200,s+(t?1:0)-a.length)}}));if(a.push(...l.records),a.length>s)throw new Error(`Hosted usage query exceeds ${s} rows; narrow its filters or use a streamed aggregation.`);if(l.nextBefore===null)break;if(l.records.length===0||JSON.stringify(l.nextBefore)===JSON.stringify(d))throw new Error("Host usage cursor did not advance.");d=l.nextBefore}return a}async listModelUsageRecordsComplete(e={}){return this.listModelUsageRecords(e)}};export{fe as a,ge as b,he as c,ye as d,Pe as e,Me as f,Oe as g,Ne as h,Be as i,Le as j,ze as k,Je as l,q as m,Ze as n,et as o,X as p,Z as q};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{na as l,ra as c}from"./chunk-36YNUUZL.js";import{N as n}from"./chunk-HA7EFTPF.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 i=a.resolve(e),r=a.resolve(o);return r===i||r.startsWith(`${i}${a.sep}`)}t(d,"isHostedProfileSourceWithinRepo");async function u(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 i=await l({storeDir:e.outputDir,workspaceId:e.workspaceId,name:e.profileId,profile:o,sourceRevision:e.sourceRevision,repositoryId:e.repositoryId}),r=i.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 s=await c({storeDir:e.outputDir,workspaceId:e.workspaceId,compiled:i,createdAt:new Date().toISOString()});return{workspaceId:e.workspaceId,sourceRevision:s.sourceRevision,harnessRelease:s.harnessRelease,agentSnapshot:s.agentSnapshot,bundlePath:s.bundlePath}}t(u,"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")),i=await u(o);process.stdout.write(`${JSON.stringify(i)}
3
- `)}t(H,"runHostedProfileCompilerCli");async function y(e){await(await import("./hosted-profile-evaluation-preparation-C7WEABZ5.js")).runHostedProfileEvaluationCli(e)}t(y,"runHostedProfileEvaluationCli");async function k(e){await(await import("./hosted-profile-evaluation-inspection-3MB6MWO6.js")).runHostedProfileInspectionCli(e)}t(k,"runHostedProfileInspectionCli");export{u as a,H as b,y as c,k as d};
2
+ import{na as l,ra as c}from"./chunk-7MXZJQS7.js";import{N as n}from"./chunk-HA7EFTPF.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 i=a.resolve(e),r=a.resolve(o);return r===i||r.startsWith(`${i}${a.sep}`)}t(d,"isHostedProfileSourceWithinRepo");async function u(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 i=await l({storeDir:e.outputDir,workspaceId:e.workspaceId,name:e.profileId,profile:o,sourceRevision:e.sourceRevision,repositoryId:e.repositoryId}),r=i.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 s=await c({storeDir:e.outputDir,workspaceId:e.workspaceId,compiled:i,createdAt:new Date().toISOString()});return{workspaceId:e.workspaceId,sourceRevision:s.sourceRevision,harnessRelease:s.harnessRelease,agentSnapshot:s.agentSnapshot,bundlePath:s.bundlePath}}t(u,"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")),i=await u(o);process.stdout.write(`${JSON.stringify(i)}
3
+ `)}t(H,"runHostedProfileCompilerCli");async function y(e){await(await import("./hosted-profile-evaluation-preparation-JROREZH3.js")).runHostedProfileEvaluationCli(e)}t(y,"runHostedProfileEvaluationCli");async function k(e){await(await import("./hosted-profile-evaluation-inspection-FPCV42DD.js")).runHostedProfileInspectionCli(e)}t(k,"runHostedProfileInspectionCli");export{u as a,H as b,y as c,k as d};