@tangle-network/sandbox-cli 0.22.133 → 0.22.135
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/{graph-campaign-state-YA-eORZN.mjs → graph-campaign-state-pTHFtnWZ.mjs} +1 -1
- package/dist/{graph-dataset-DL_Fx_EH.mjs → graph-dataset-Bs03wlXZ.mjs} +1 -1
- package/dist/{graph-learning-CWalyOHM.mjs → graph-learning-ClRwk9oc.mjs} +1 -1
- package/dist/{graph-native-BOIC8WzU.mjs → graph-native-CmG9wDbX.mjs} +1 -1
- package/dist/{graph-operating-evidence-CGGxszAi.mjs → graph-operating-evidence-DOCpwKlO.mjs} +2 -2
- package/dist/index.mjs +38 -30
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./index.mjs";import{dirname as t,join as n,resolve as r}from"node:path";import{randomBytes as i}from"node:crypto";import{canonicalCandidateDigest as a}from"@tangle-network/agent-interface";import{
|
|
1
|
+
import{o as e}from"./index.mjs";import{dirname as t,join as n,resolve as r}from"node:path";import{randomBytes as i}from"node:crypto";import{canonicalCandidateDigest as a}from"@tangle-network/agent-interface";import{z as o}from"zod";import{homedir as s}from"node:os";import c,{readFile as l}from"node:fs/promises";import{SearchEnvironmentFault as u}from"@tangle-network/agent-runtime";import{readSettleRecord as d}from"@tangle-network/agent-runtime/durable";import{createBudgetPool as f}from"@tangle-network/agent-runtime/kernel";const p=e=>`${e}.tmp-${i(6).toString(`hex`)}`,m=new Map;function h(e){let t=r(e),n=m.get(t)??{};if(m.set(t,n),n.queued)return n.queued;let i=(n.running??Promise.resolve()).catch(()=>void 0).then(async()=>{n.running=i,n.queued=void 0;try{let e=await c.open(t,`r`);await e.sync().finally(()=>e.close())}finally{n.queued||m.delete(t)}});return n.queued=i,i}async function g(e,n,{mode:r=384,owner:i,directory:a}={}){if(a&&!/^(?!\.\.?$)[^/]+$/.test(e))throw Error(`Not an entry name in the open directory: ${e}`);let o=a?`/proc/self/fd/${a.fd}/${e}`:e,s=p(o);try{let e=await c.open(s,`wx`,r);try{i&&await e.chown(i.uid,i.gid),await e.chmod(r),await e.writeFile(n,`utf-8`),await e.sync()}finally{await e.close()}await c.rename(s,o)}catch(e){throw await c.rm(s,{force:!0}).catch(()=>void 0),e}await(a?a.sync():h(t(o)))}const _=o.number().int().positive(),v=async e=>JSON.parse(await l(e,`utf8`)),y=(e,t)=>g(e,JSON.stringify(t));function b(e,t){let n=e.readout(),r=n.tokensKnown?n.deadlineMs>0&&Date.now()>=n.deadlineMs?`Campaign deadline exhausted`:t.maxTokens!==void 0&&n.tokensCapped&&t.maxTokens>n.tokensLeft?`Campaign token ceiling cannot fund the next graph`:t.maxIterations!==void 0&&n.iterationsCapped&&t.maxIterations>n.iterationsLeft?`Campaign iteration ceiling cannot fund the next graph`:void 0:`Campaign token accounting is incomplete`;if(r)throw Object.assign(new u(r),{code:`GRAPH_CAMPAIGN_BUDGET_EXHAUSTED`})}const x=o.strictObject({runId:o.uuid(),budget:o.object({maxTokens:_,maxIterations:_,deadlineMs:_}).passthrough(),sourceDigest:o.string(),graphDigest:o.string()});async function S(t,r,i,c){let l=n(t,`budget.json`),p;try{p=await v(l)}catch(e){if(e.code!==`ENOENT`)throw e;p={identity:i,startedAt:Date.now()}}if(p.identity!==i)throw Error(`Campaign configuration changed; use a new campaign directory`);let m=p.readout;if(m?.reservedTokens)throw Error(`Campaign backing has unresolved historical reservations`);let h=async t=>{let r=await d(n(s(),`.tangle`,`runs`,t.runId));if(!r)return;let i=await e(t.runId);if(r.tree.root!==t.runId||t.sourceDigest!==void 0&&i.sourceDigest!==t.sourceDigest||t.graphDigest!==void 0&&i.graphDigest!==t.graphDigest)throw Error(`Campaign settlement does not match its exact admitted graph`);return{settled:r,digest:a({runId:t.runId,sourceDigest:i.sourceDigest,graphDigest:i.graphDigest,spend:r.spentTotal})}},g=f(r,p.startedAt),_=o.record(o.uuid(),o.string()).parse(p.settlements??{});for(let[e,t]of Object.entries(_)){let n=await h({runId:e});if(!n||n.digest!==t)throw Error(`Historical campaign settlement is missing or changed; accounting cannot resume`);g.observe(n.settled.spentTotal,{alreadySpent:!0}),c?.(e,n.settled.spentTotal)}if(m&&a(m)!==a(JSON.parse(JSON.stringify(g.readout()))))throw Error(`Historical campaign backing cannot be reconstructed from its retained settlements`);let S=p.pending===void 0?void 0:x.parse(p.pending),C=m??g.readout(),w,T=()=>y(l,{identity:i,startedAt:p.startedAt,readout:S?C:g.readout(),settlements:_,...S?{pending:S}:{}}),E=(e,t=!1)=>{t||b(g,e.budget),C=g.readout();let n=g.reserve(e.budget,{assignment:e.runId,stage:`executing`});if(!n.ok)throw new u(`Campaign cannot reserve the next graph's complete ceiling`);w=n.ticket,S=e},D=async()=>{if(!S||!w)return;let e=await h(S);if(!e)return;let t=w,n;try{g.reconcile(t,e.settled.spentTotal)}catch(e){if(g.openReservations().some(({ticketId:e})=>e===t.id))throw await T(),e;n=e}let r=S.runId;if(_[r]=e.digest,S=void 0,w=void 0,await T(),c?.(r,e.settled.spentTotal),n)throw n};if(S){let e=S;S=void 0,E(e,!0),await D()}return await T(),{pool:g,checkpoint:async e=>{if(e){if(_[e.runId]){let t=await h(e);if(!t||t.digest!==_[e.runId])throw Error(`An accounted campaign settlement changed`);c?.(e.runId,t.settled.spentTotal);return}if(S&&a(S)!==a(e))throw new u(`Campaign must reconcile its exact pending run ${S.runId} before admitting another graph`);S||E(e)}else{if(await D(),S)throw new u(`Campaign run ${S.runId} has no retained settlement; its reservation remains pending`);g.assertNoOpenTickets()}await T()},startedAt:p.startedAt,pendingAttempt:()=>S&&structuredClone(S)}}export{S as openGraphCampaignBudget,v as readCampaignJson,h as t,y as writeCampaignJson};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as e,o as t,r as n,s as r,u as i}from"./index.mjs";import{join as a,resolve as o}from"node:path";import{randomUUID as s}from"node:crypto";import{canonicalCandidateDigest as c}from"@tangle-network/agent-interface";import{
|
|
1
|
+
import{f as e,o as t,r as n,s as r,u as i}from"./index.mjs";import{join as a,resolve as o}from"node:path";import{randomUUID as s}from"node:crypto";import{canonicalCandidateDigest as c}from"@tangle-network/agent-interface";import{z as l}from"zod";import{homedir as u}from"node:os";import{mkdir as d,readFile as f,realpath as p,rename as m,writeFile as h}from"node:fs/promises";import{readSettleRecord as g,runEvidence as _}from"@tangle-network/agent-runtime/durable";import{acquireSingleRunLock as v}from"@tangle-network/agent-eval/campaign";import{runtimeRunRolloutLines as y}from"@tangle-network/agent-eval/supervisor-run";const b=l.strictObject({id:l.string(),kind:l.literal(`retained-graph`),domain:l.string().min(1),unit:l.string().min(1),split:l.enum([`train`,`dev`,`test`]),run:l.string().min(1),origin:l.string(),sourceDigest:l.string().nullable(),graphDigest:l.string().nullable(),params:l.record(l.string(),l.unknown()),trigger:l.record(l.string(),l.unknown()).nullable().optional(),mcpPolicy:e.optional(),taskWorkspace:i.optional(),outcome:l.string(),gaps:l.array(l.string()),evidence:l.string(),quality:l.null()}),x=async e=>JSON.parse(await f(e,`utf8`)),S=e=>e.code===`ENOENT`;function C(e,{name:t,provenance:n}){let r={train:0,dev:0,test:0,holdout:0};for(let t of e)r[t.split]++;return{name:t,provenance:n,contentHash:c(e.map(e=>({id:e.id,split:e.split,payload:e})).sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))).slice(7),scenarioCount:e.length,splitCounts:r}}async function w(e,t){let n=c(t),r=a(e,`objects`,`${n.slice(7)}.json`);await d(a(e,`objects`),{recursive:!0,mode:448});let i=JSON.stringify(t);try{await h(r,i,{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e;if(c(await x(r))!==n)throw Error(`Dataset evidence object changed`)}return n}async function T(e,t){if(!/^sha256:[a-f0-9]{64}$/.test(t))throw Error(`Invalid dataset object digest`);let n=await x(a(e,`objects`,`${t.slice(7)}.json`));if(c(n)!==t)throw Error(`Dataset evidence object changed`);return n}async function E(e,i){if(e.startsWith(`wfrun_`)){let t=await n(i),[r,a]=await Promise.all([t.workflows.getRun(e,{signal:i.signal}),t.workflows.getRunInput(e,{signal:i.signal})]),o=a.completeness===`complete`&&a.id===r.id&&a.workflowId===r.workflowId&&a.revUsed===r.revUsed&&c({definitionSnapshot:a.definitionSnapshot,execution:a.execution,triggerContext:a.triggerContext,revUsed:a.revUsed})===a.inputDigest?a:void 0,s=o?.execution,l=o?.triggerContext;return{origin:new URL(t.baseUrl).origin,sourceDigest:a.sourceSha,graphDigest:a.graphDigest,params:s?.params??{},...o?{trigger:l}:{},mcpPolicy:s?.deploy?.mcpPolicy,outcome:r.status,source:o?.definitionSnapshot??null,gaps:[`task-workspace-not-snapshotted`,`environment-and-toolchain-not-snapshotted`,...o?[]:[`retained-input-unavailable`,...a.gaps],...s?[]:[`graph-execution-missing`],...o?.definitionSnapshot?[]:[`source-snapshot-missing`],...r.runtime?[]:[`runtime-evidence-missing`],...r.runtime?.trace?.gaps.map(e=>e.reason)??[],...r.runtime?.blobs.filter(e=>!e.found).map(e=>`blob-missing:${e.ref}`)??[]],record:{run:r.id,workflowId:r.workflowId,revUsed:r.revUsed,execution:s??null,trigger:o?.triggerContext??null,retainedInput:{completeness:o?`complete`:a.completeness===`complete`?`invalid`:a.completeness,inputDigest:o?.inputDigest??null,gaps:o?[]:[...a.gaps,`retained-input-unavailable`]},...s?.deploy?.mcpPolicy&&{mcpPolicy:s.deploy?.mcpPolicy},status:r.status,error:r.error,graphResult:r.graphResult??null,runtime:r.runtime?{namespace:r.runtime.namespace??null,journal:r.runtime.journal,blobs:r.runtime.blobs,trace:r.runtime.trace??null}:null}}}if(!l.uuid().safeParse(e).success)throw Error(`Use a retained local UUID or cloud wfrun_ ID`);let o=a(u(),`.tangle`,`runs`,e),s=await t(e),[d,f,p,m]=await Promise.all([r(s),g(o),y(o,{capturedAt:s.startedAt,verdict:null}),_(o,{totalChars:48e3})]);return{origin:`local`,sourceDigest:s.sourceDigest,graphDigest:s.graphDigest,params:s.params,trigger:s.trigger??null,mcpPolicy:s.mcpPolicy,taskWorkspace:s.taskWorkspace,source:d,outcome:f?.kind??`interrupted`,gaps:[...s.taskWorkspace?.gaps??[`task-workspace-not-snapshotted`,`environment-and-toolchain-not-snapshotted`],...p.gaps.map(e=>e.code),...m.truncated?[`summary-truncated`]:[]],record:{run:e,sourceDigest:s.sourceDigest,graphDigest:s.graphDigest,params:s.params,trigger:s.trigger??null,...s.mcpPolicy&&{mcpPolicy:s.mcpPolicy},...s.taskWorkspace&&{taskWorkspace:s.taskWorkspace},settled:f??null,rollouts:p.lines,summary:m}}}async function D(e,t){let n=o(e),r=t??(await x(a(n,`latest.json`))).version;if(!/^[a-f0-9]{64}$/.test(r))throw Error(`Invalid graph dataset version`);let i=await x(a(n,`versions`,`${r}.json`)),s=l.array(b).parse(i.cases),u=C(s,i.manifest);if(u.contentHash!==r||c(u)!==c(i.manifest))throw Error(`Graph dataset manifest changed`);for(let e of s)if(s.some(t=>t.domain===e.domain&&t.unit===e.unit&&t.split!==e.split))throw Error(`An independent unit crosses dataset splits`);return{root:n,version:r,manifest:u,cases:s}}async function O(e,t,r){let i=r;if(t.some(e=>e.startsWith(`wfrun_`))){let e=await n(i);i={...i,baseUrl:e.baseUrl}}let l=o(e);await d(l,{recursive:!0,mode:448});let{release:u}=v({lockPath:`${await p(l)}.lock`});try{let e;try{e=await D(l)}catch(e){if(!S(e))throw e}let n=new Map((e?.cases??[]).map(e=>[e.id,e]));for(let e of t){i.signal?.throwIfAborted();let t;try{t=await E(e,i)}catch(n){i.signal?.throwIfAborted(),t={origin:e.startsWith(`wfrun_`)?new URL(i.baseUrl).origin:`local`,sourceDigest:null,graphDigest:null,params:{},source:null,outcome:`unavailable`,gaps:[`retained-attempt-unavailable`],record:{run:e,error:n.name}}}let r=c({origin:t.origin,run:e}),a=n.get(r);if(a&&[`domain`,`unit`,`split`].some(e=>a[e]!==i[e]))throw Error(`A retained attempt cannot change domain, unit or split; fork the dataset`);let o=await w(l,{...t.record,source:t.source});n.set(r,b.parse({id:r,kind:`retained-graph`,domain:i.domain,unit:i.unit,split:i.split,run:e,origin:t.origin,sourceDigest:t.sourceDigest,graphDigest:t.graphDigest,params:t.params,...t.trigger===void 0?{}:{trigger:t.trigger},...t.mcpPolicy===void 0?{}:{mcpPolicy:t.mcpPolicy},...`taskWorkspace`in t&&t.taskWorkspace?{taskWorkspace:t.taskWorkspace}:{},outcome:t.outcome,gaps:t.gaps,evidence:o,quality:null}))}let r=[...n.values()].sort((e,t)=>e.id.localeCompare(t.id));if(r.some(e=>r.some(t=>e.domain===t.domain&&e.unit===t.unit&&e.split!==t.split)))throw Error(`An independent unit crosses dataset splits`);let o=C(r,{name:e?.manifest.name??`graph-runs`,provenance:e?.manifest.provenance??{createdAt:new Date().toISOString(),version:`1`}});await d(a(l,`versions`),{recursive:!0});let u=a(l,`versions`,`${o.contentHash}.json`);try{await h(u,JSON.stringify({manifest:o,cases:r}),{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e}let f=a(l,`latest-${s()}.json`);return await h(f,JSON.stringify({version:o.contentHash}),{mode:384,flush:!0}),await m(f,a(l,`latest.json`)),D(l)}finally{await u()}}export{b as graphCase,w as graphDatasetObject,O as ingestGraphDataset,D as readGraphDataset,T as readGraphDatasetObject};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,d as t,f as n,h as r,i,l as a,n as o,o as s,s as c,t as l}from"./index.mjs";import{openGraphCampaignBudget as u,readCampaignJson as d,writeCampaignJson as f}from"./graph-campaign-state-YA-eORZN.mjs";import{graphDatasetObject as p,readGraphDataset as m,readGraphDatasetObject as h}from"./graph-dataset-DL_Fx_EH.mjs";import{a as g,graphOperatingCell as _,graphOperatingDecision as v,i as y,n as b,r as x,t as S}from"./graph-operating-evidence-CGGxszAi.mjs";import{findPackageJSON as C}from"node:module";import{join as w,resolve as T}from"node:path";import{randomUUID as E}from"node:crypto";import{canonicalCandidateDigest as D}from"@tangle-network/agent-interface";import{homedir as O}from"node:os";import{z as k}from"zod";import{mkdir as A,readFile as j,readdir as M,realpath as N,writeFile as P}from"node:fs/promises";import{SearchEnvironmentFault as F,improve as I,reflectiveProfileProposer as L,searchMethod as R,subscriptionLane as z}from"@tangle-network/agent-runtime";import{readSettleRecord as B,runEvidence as V}from"@tangle-network/agent-runtime/durable";import{readGraphStrings as H,setGraphStrings as U}from"@tangle-network/agent-runtime/kernel";import{acquireSingleRunLock as W,incumbent as G,uniform as K}from"@tangle-network/agent-eval/campaign";async function q(e,t,n,i,a,o={}){let s=a===void 0?r().seat??null:null,c=T(i);await A(c,{recursive:!0,mode:448});let{release:u}=W({lockPath:`${await N(c)}.lock`});try{let r=await ne(e,t,n,c,a,s,o),{suite:i,dataset:u,profile:m,sourceForProfile:y,assertUnchanged:b,baselineDigest:x,optimizedCoordinate:S,evaluatorIdentity:C,calibration:T,hostBindings:D}=r,k=g({profile:m,budget:{maxTokens:i.budget.proposalTokens,maxIterations:i.budget.proposalIterations,deadlineMs:i.budget.proposalDeadlineMs},run:async(e,t,n)=>{let r=await z(e,t,{},n),i=await B(w(O(),`.tangle`,`runs`,r.runId));if(!i)throw Error(`Reflection has no retained settlement`);return{...r,settlement:i}}}),A=await J(r,k);try{let e=await d(w(c,`result.json`)),t=await h(c,e.record);if(t.identity!==A)throw Error(`Completed campaign configuration changed; use a new directory`);if(l(await j(t.candidate))!==t.candidateDigest)throw Error(`Measured candidate bytes changed`);return{...t,record:e.record}}catch(e){if(e.code!==`ENOENT`)throw e}let I=await Y(r,A),L=new Map;for(let e of u.cases)L.set(e.id,await h(u.root,e.evidence));let R=E(),z=X(r,I,R),V=Z(r,L,R),H=await te(r,k,A,{...I,run:z,judge:V});if(!H.searchHistory?.complete)throw await H.dispose(),new F(`Optimizer did not retain complete verified search history`);let U=y(H.candidate.profile),W=l(U);await b();let G=await v(c,u.cases.filter(e=>e.split===`test`),i,W,x,H.searchHistory),K=w(c,`${W}.graph.yaml`);await P(K,U,{mode:384,flush:!0});let q=await Promise.all((await M(w(c,`judgments`)).catch(e=>{if(e.code!==`ENOENT`)throw e;return[]})).filter(e=>e.endsWith(`.json`)).map(async e=>{let t=_.parse(await d(w(c,`judgments`,e)));if(t.sourceDigest!==W)return null;let n=await h(c,t.evidence);if(n.artifact.sourceDigest!==W||typeof n.artifact.graphDigest!=`string`)throw Error(`Candidate judgment has no exact measured execution identity`);return{runId:n.artifact.runId,scenario:t.scenario,graphDigest:n.artifact.graphDigest}})),{dispose:ee,...re}=H,Q={version:1,identity:A,optimizedCoordinate:S,baselineDigest:x,candidateDigest:W,candidate:K,sourcePath:await N(e),dataset:{root:u.root,version:u.version},workspaceGaps:[...new Set(u.cases.flatMap(e=>e.taskWorkspace?.gaps??[`task-workspace-not-snapshotted`,`environment-and-toolchain-not-snapshotted`]))],suite:await N(n),evaluatorIdentity:C,calibration:T,executionIdentities:q.filter(e=>e!==null),mcpPolicy:D.mcpPolicy,decision:H.decision===`ship`&&G.admissible?`promote`:`hold`,operational:G,measurement:re,operatingCost:{known:!1,reason:`subscription and environment allocation are not metered as incremental provider charges`},campaignBudget:{limits:i.budget,readout:I.pool.readout()}};await b();let $=await p(c,Q);return await f(w(c,`result.json`),{record:$}),await H.dispose(),{...Q,record:$}}finally{await u()}}async function J(e,t){let{seat:n,defaultSeat:r,optimizedCoordinate:i,suite:a,baselineDigest:o,dataset:s,evaluatorIdentity:c,hostBindings:u,loaded:f}=e,p=C(import.meta.url);if(!p)throw Error(`Cannot identify the CLI dependency manifest`);return D({consumer:`graph-learning-v1`,optimizedCoordinate:i,optimizer:y.parse(a.optimizer),reflection:t.callRef,consumerBytes:l(await j(new URL(import.meta.url))),consumerManifest:l(await j(p)),environment:{node:process.version,platform:process.platform,architecture:process.arch,packages:await Promise.all([`@tangle-network/agent-runtime`,`@tangle-network/agent-eval`,`cli-bridge`].map(async e=>{let t=C(e,import.meta.url);if(!t)throw Error(`Cannot identify ${e} for reproducible learning`);return{name:e,version:(await d(t)).version,entryDigest:l(await j(new URL(import.meta.resolve(e))))}}))},baselineDigest:o,dataset:s.version,evaluatorIdentity:c,seat:n??null,defaultSeat:r,mcpPolicy:u.mcpPolicy,graph:f.graph,budget:a.budget,reps:a.reps})}async function Y(e,t){let{root:n,suite:r,defaultSeat:i,bindings:a}=e,l=new AbortController,{pool:d,checkpoint:f,startedAt:p,pendingAttempt:m}=await u(n,r.budget,t,(e,t)=>{if(t.usd-(t.usdEstimated??0)>0){let t=new F(`Native subscription run ${e} reported positive provider billing; no further campaign work is admitted`);throw l.abort(t),t}}),h=AbortSignal.any([AbortSignal.timeout(Math.max(1,p+r.budget.deadlineMs-Date.now())),l.signal]);h.throwIfAborted();let g=m();if(g){let e=await s(g.runId);if(e.sourceDigest!==g.sourceDigest||e.graphDigest!==g.graphDigest)throw Error(`Pending native input changed its admitted execution identity`);try{await o(e.file,{param:[],resume:e.runId,json:!0,mcpPolicy:e.mcpPolicy,mcpSecret:a.mcpSecret},{defaultSeat:i,cwd:e.cwd,source:await c(e),runId:e.runId,graphDigest:e.graphDigest,signal:h,...e.trigger&&{trigger:e.trigger}})}catch(e){if(e.code!==`GRAPH_RUN_FAILED`)throw e}finally{await f()}}return{pool:d,checkpoint:f,startedAt:p,signal:h}}function X(n,r,u){let{root:f,hostBindings:p,seat:m,defaultSeat:h}=n,{signal:g,checkpoint:_}=r;return async(n,r,v,y,b=null,x)=>{await A(w(f,`attempts`),{recursive:!0,mode:448});let S=w(f,`attempts`,`${l(r)}.json`),C=!1;try{await P(S,JSON.stringify({runId:E(),startedAt:Date.now()}),{flag:`wx`,mode:384,flush:!0}),C=!0}catch(e){if(e.code!==`EEXIST`)throw e}let{runId:T,startedAt:D}=k.strictObject({runId:k.uuid(),startedAt:k.number().int().nonnegative()}).parse(await d(S)),M=w(f,`executions`,T);await A(M,{recursive:!0,mode:448});let N=w(M,`graph.yaml`);try{await P(N,n,{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e;if(l(await j(N))!==l(n))throw Error(`Attempt source identity changed`)}let I;try{await j(w(O(),`.tangle`,`runs`,T,`input.json`)),I=await s(T)}catch(e){if(e.code!==`ENOENT`)throw e}if(I&&l(await c(I))!==l(n))throw Error(`Attempt snapshot changed`);if(I&&(x?a(x):null)!==(I.taskWorkspace?a(I.taskWorkspace):null))throw Error(`Attempt task workspace identity changed`);let L=x?await e(x,{runId:T,resumeCwd:I?.cwd,signal:AbortSignal.any([g,y])}):void 0;try{let e=await o(N,{...p,param:i(v),dryRun:!0,...I&&{resume:T},...m&&{seat:m}},{defaultSeat:h,cwd:L?.cwd??M,signal:g,...b&&{trigger:b},...x&&{taskWorkspace:x}});if(!(`graph`in e))throw Error(`Attempt did not load locally`);if(!e.graph.budget?.maxTokens||!e.graph.budget.maxIterations||!e.graph.budget.deadlineMs)throw Error(`Every materialized case needs finite token, iteration and deadline budgets`);await _({runId:T,budget:e.graph.budget,sourceDigest:l(n),graphDigest:e.graph.digest});let r;try{await o(N,{...p,param:i(v),json:!0,...m&&{seat:m},...I&&{resume:T}},{defaultSeat:h,runId:T,cwd:L?.cwd??M,...x&&{taskWorkspace:x},graphDigest:e.graph.digest,signal:AbortSignal.any([g,y]),...b&&{trigger:b}})}catch(e){r=e}finally{await _()}let s=await B(w(O(),`.tangle`,`runs`,T));if(!s)throw new F(`Native graph attempt has no retained settlement`,{cause:r});return{...t(s),runId:T,sourceDigest:l(n),graphDigest:e.graph.digest,durationMs:Math.max(Date.now()-D,s.spentTotal.ms),latencyKnown:C,invocation:u,taskWorkspaceDigest:x?a(x):null}}finally{L?.release()}}}function Z(e,t,n){let{root:r,suite:i,evaluatorCwd:a,evaluatorIdentity:o,assertUnchanged:s}=e;return{name:`independent-domain-evaluator`,judgeVersion:o,dimensions:[{key:`quality`,description:i.objective}],score:async({artifact:e,scenario:c,signal:l})=>{let u=await S(i,a,{scenario:c,evidence:t.get(c.id),artifact:e},l,s),d=await p(r,{evaluatorIdentity:o,scenario:c.id,artifact:e,verdict:u});return await A(w(r,`judgments`),{recursive:!0,mode:448}),await f(w(r,`judgments`,`${e.runId}.json`),{evidence:d,sourceDigest:e.sourceDigest,scenario:c.id,unit:c.unit,split:c.split,quality:u.quality,tokens:e.tokenUsage.input===null||e.tokenUsage.output===null?null:e.tokenUsage.input+e.tokenUsage.output,durationMs:e.durationMs,latencyKnown:e.latencyKnown&&e.invocation===n,operatingCostUsd:null}),{dimensions:{quality:u.quality},composite:u.quality,notes:u.notes}}}}function ee(e,t){let{root:n,profile:r,suite:i,dataset:o}=e;return L({model:r.model?.default??`subscription-native`,pricing:{inputUsdPerMillion:0,outputUsdPerMillion:0},maxOutputTokens:i.budget.proposalTokens,frame:`Improve only the ${i.node} node's inline prompt. Domain: ${i.domain}. Objective: ${i.objective}. Preserve independent checks.`,evidence:async({trainCells:e})=>Promise.all(e.map(async e=>{let t=await d(w(n,`attempts`,`${l(`${e.cellId}:${e.attempt}`)}.json`)),r=await V(w(O(),`.tangle`,`runs`,t.runId),{totalChars:48e3});return JSON.stringify({cell:e,tasks:o.cases.filter(t=>t.split===`train`&&t.unit===e.unitId).map(e=>({id:e.id,params:e.params,trigger:e.trigger,taskWorkspace:e.taskWorkspace?a(e.taskWorkspace):null})),records:r})})),chat:async({messages:e,callId:n,signal:r})=>{let a=await t.call({callId:n,signal:r,request:{model:t.model,messages:e,maxTokens:i.budget.proposalTokens}});if(!a.succeeded)throw Error(a.error);return{content:a.response.content,usage:a.response.usage.captured===!1?null:{inputTokens:a.response.usage.promptTokens,outputTokens:a.response.usage.completionTokens}}}})}async function te(e,t,n,r){let{root:i,suite:a,dataset:o,profile:s,profileComponents:c,sourceForProfile:l}=e,{signal:u,startedAt:d,run:f,judge:p}=r,m=ee(e,t),h=x(a.optimizer,{subscriptionOnlyModel:t,runner:{},maxOutputTokens:a.budget.proposalTokens,timeoutMs:a.budget.proposalDeadlineMs,objective:a.objective,describeScenario:e=>({id:e.id,params:e.params,trigger:e.trigger}),describeArtifact:e=>({text:e.text,status:e.status})}),g={surface:`agent-profile`,profileComponents:c,executionRef:n,trainScenarios:o.cases.filter(e=>e.split===`train`),selectionScenarios:o.cases.filter(e=>e.split===`dev`),testScenarios:o.cases.filter(e=>e.split===`test`),judges:[p],costCeiling:0,runDir:w(i,`search`),signal:u,agent:async(e,t,n)=>{let r=l(e),i=await n.cost.runPaidCall({actor:`native-graph`,model:s.model?.default??`subscription-native`,maximumCharge:{externallyEnforcedMaximumUsd:0},signal:n.signal,execute:()=>f(r,`search`in n?n.search.runId:`${n.cellId}:${n.runAttemptId}`,t.params,n.signal,t.trigger??null,t.taskWorkspace),receipt:e=>({model:s.model?.default??`subscription-native`,...e.costUsd===null?{costUnknown:!0}:{actualCostUsd:e.costUsd},inputTokens:e.tokenUsage.input??0,outputTokens:e.tokenUsage.output??0,usageUnknown:e.tokenUsage.input===null||e.tokenUsage.output===null})});if(!i.succeeded)throw i.error;return i.value}};return h.kind===`official`?await I(s,{...g,method:h.method,minimumLift:a.minimumEffect,reps:a.reps,maxConcurrency:1,optimizationRunOptions:{reps:a.reps,maxConcurrency:1}}):await I(s,{...g,method:R({proposer:m,maxExpansions:a.budget.maxExpansions,policy:G(),allocation:K({reps:a.reps}),lanes:[z({seats:1,cellUsd:0})],deadline:new Date(d+a.budget.deadlineMs).toISOString(),maxAttempts:1}),claim:{use:`comparison`,population:{id:a.domain,description:a.objective},samplingFrame:`retained graph dataset ${o.version}`,independentUnit:`unit`,generalization:`new-units`,minimumEffect:a.minimumEffect},executionRunId:e=>e.runId})}async function ne(t,r,a,s,c,u,f){let{suite:p,cwd:h,identity:g,calibration:_,assertUnchanged:v}=await b(a),y=await j(t,`utf8`),x=H(y)[p.node];if(typeof x!=`string`)throw Error(`The selected node needs an unshared inline prompt`);let S=await m(r);if(S.cases.some(e=>e.domain!==p.domain))throw Error(`Dataset contains a different domain`);if(S.cases.some(e=>e.outcome===`unavailable`||!e.sourceDigest))throw Error(`Dataset retains unavailable attempts; reconcile them before freezing a learning cohort`);for(let e of[`train`,`dev`,`test`])if(!S.cases.some(t=>t.split===e))throw Error(`Dataset needs an independent ${e} partition`);if(S.cases.some(e=>e.trigger===void 0))throw Error(`Dataset lacks retained trigger context; reingest legacy runs before replay`);let C=[...new Set(S.cases.map(e=>JSON.stringify(n.parse(e.mcpPolicy??{}))))];if(!f.mcpPolicy&&C.length!==1)throw Error(`Retained MCP host policies differ; select an explicit --mcp-policy`);let T={...f,mcpPolicy:f.mcpPolicy??n.parse(JSON.parse(C[0]??`{}`))},D=S.cases.find(e=>e.split===`train`);if(!D)throw Error(`Dataset needs a train case`);let O=w(s,`baseline.graph.yaml`),A=l(y);try{await P(O,y,{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e;if(l(await j(O))!==A)throw Error(`Frozen baseline changed`)}let M;if(D.taskWorkspace){let t=w(s,`task-workspace-admission.json`);try{await P(t,JSON.stringify({runId:E()}),{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e}let n=k.strictObject({runId:k.uuid()}).parse(await d(t));M=await e(D.taskWorkspace,{...n,validationOnly:!0})}let N;try{N=await o(O,{...T,param:i(D.params),dryRun:!0,...c&&{seat:c}},{defaultSeat:u,...D.trigger&&{trigger:D.trigger},...M&&{cwd:M.cwd,taskWorkspace:D.taskWorkspace}})}finally{await M?.release()}if(!(`graph`in N))throw Error(`Baseline did not load locally`);if(!N.graph.budget?.maxTokens||!N.graph.budget.maxIterations||!N.graph.budget.deadlineMs)throw Error(`Graph needs finite token, iteration and deadline budgets for bounded improvement`);let F=N.graph.nodes.find(e=>e.id===p.node)?.profile;if(!F)throw Error(`Selected node was not materialized`);let I=typeof F.prompt?.systemPrompt==`string`?`systemPrompt`:`appendSystemPrompt`;if(typeof F.prompt?.[I]!=`string`)throw Error(`The selected source coordinate was not materialized`);let L=`prompt.${I}`,R={...F,prompt:{...F.prompt,[I]:x}},z=e=>{let t=e.prompt?.[I];if(typeof t!=`string`)throw Error(`Candidate lost its selected prompt coordinate`);return t},B={read:e=>({[L]:z(e)}),apply(e,t){if(Object.keys(t).length!==1||Object.keys(t)[0]!==L||typeof t[L]!=`string`)throw Error(`Candidate changed the selected prompt coordinate`);return{...e,prompt:{...e.prompt,[I]:t[L]}}}},V=e=>{let t=z(e);return t===x?y:U(y,{[p.node]:t})},W={node:p.node,profileField:L,binding:`authored-source-compiled-per-case`};return{root:s,seat:c,defaultSeat:u,bindings:f,suite:p,evaluatorCwd:h,evaluatorIdentity:g,calibration:_,assertUnchanged:v,baselineDigest:A,dataset:S,hostBindings:T,loaded:N,profile:R,profileComponents:B,sourceForProfile:V,optimizedCoordinate:W}}export{q as learnGraph};
|
|
1
|
+
import{c as e,d as t,f as n,h as r,i,l as a,n as o,o as s,s as c,t as l}from"./index.mjs";import{openGraphCampaignBudget as u,readCampaignJson as d,writeCampaignJson as f}from"./graph-campaign-state-pTHFtnWZ.mjs";import{graphDatasetObject as p,readGraphDataset as m,readGraphDatasetObject as h}from"./graph-dataset-Bs03wlXZ.mjs";import{a as g,graphOperatingCell as _,graphOperatingDecision as v,i as y,n as b,r as x,t as S}from"./graph-operating-evidence-DOCpwKlO.mjs";import{findPackageJSON as C}from"node:module";import{join as w,resolve as T}from"node:path";import{randomUUID as E}from"node:crypto";import{canonicalCandidateDigest as D}from"@tangle-network/agent-interface";import{z as O}from"zod";import{homedir as k}from"node:os";import{mkdir as A,readFile as j,readdir as M,realpath as N,writeFile as P}from"node:fs/promises";import{SearchEnvironmentFault as F,improve as I,reflectiveProfileProposer as L,searchMethod as R,subscriptionLane as z}from"@tangle-network/agent-runtime";import{readSettleRecord as B,runEvidence as V}from"@tangle-network/agent-runtime/durable";import{readGraphStrings as H,setGraphStrings as U}from"@tangle-network/agent-runtime/kernel";import{acquireSingleRunLock as W,incumbent as G,uniform as K}from"@tangle-network/agent-eval/campaign";async function q(e,t,n,i,a,o={}){let s=a===void 0?r().seat??null:null,c=T(i);await A(c,{recursive:!0,mode:448});let{release:u}=W({lockPath:`${await N(c)}.lock`});try{let r=await ne(e,t,n,c,a,s,o),{suite:i,dataset:u,profile:m,sourceForProfile:y,assertUnchanged:b,baselineDigest:x,optimizedCoordinate:S,evaluatorIdentity:C,calibration:T,hostBindings:D}=r,O=g({profile:m,budget:{maxTokens:i.budget.proposalTokens,maxIterations:i.budget.proposalIterations,deadlineMs:i.budget.proposalDeadlineMs},run:async(e,t,n)=>{let r=await z(e,t,{},n),i=await B(w(k(),`.tangle`,`runs`,r.runId));if(!i)throw Error(`Reflection has no retained settlement`);return{...r,settlement:i}}}),A=await J(r,O);try{let e=await d(w(c,`result.json`)),t=await h(c,e.record);if(t.identity!==A)throw Error(`Completed campaign configuration changed; use a new directory`);if(l(await j(t.candidate))!==t.candidateDigest)throw Error(`Measured candidate bytes changed`);return{...t,record:e.record}}catch(e){if(e.code!==`ENOENT`)throw e}let I=await Y(r,A),L=new Map;for(let e of u.cases)L.set(e.id,await h(u.root,e.evidence));let R=E(),z=X(r,I,R),V=Z(r,L,R),H=await te(r,O,A,{...I,run:z,judge:V});if(!H.searchHistory?.complete)throw await H.dispose(),new F(`Optimizer did not retain complete verified search history`);let U=y(H.candidate.profile),W=l(U);await b();let G=await v(c,u.cases.filter(e=>e.split===`test`),i,W,x,H.searchHistory),K=w(c,`${W}.graph.yaml`);await P(K,U,{mode:384,flush:!0});let q=await Promise.all((await M(w(c,`judgments`)).catch(e=>{if(e.code!==`ENOENT`)throw e;return[]})).filter(e=>e.endsWith(`.json`)).map(async e=>{let t=_.parse(await d(w(c,`judgments`,e)));if(t.sourceDigest!==W)return null;let n=await h(c,t.evidence);if(n.artifact.sourceDigest!==W||typeof n.artifact.graphDigest!=`string`)throw Error(`Candidate judgment has no exact measured execution identity`);return{runId:n.artifact.runId,scenario:t.scenario,graphDigest:n.artifact.graphDigest}})),{dispose:ee,...re}=H,Q={version:1,identity:A,optimizedCoordinate:S,baselineDigest:x,candidateDigest:W,candidate:K,sourcePath:await N(e),dataset:{root:u.root,version:u.version},workspaceGaps:[...new Set(u.cases.flatMap(e=>e.taskWorkspace?.gaps??[`task-workspace-not-snapshotted`,`environment-and-toolchain-not-snapshotted`]))],suite:await N(n),evaluatorIdentity:C,calibration:T,executionIdentities:q.filter(e=>e!==null),mcpPolicy:D.mcpPolicy,decision:H.decision===`ship`&&G.admissible?`promote`:`hold`,operational:G,measurement:re,operatingCost:{known:!1,reason:`subscription and environment allocation are not metered as incremental provider charges`},campaignBudget:{limits:i.budget,readout:I.pool.readout()}};await b();let $=await p(c,Q);return await f(w(c,`result.json`),{record:$}),await H.dispose(),{...Q,record:$}}finally{await u()}}async function J(e,t){let{seat:n,defaultSeat:r,optimizedCoordinate:i,suite:a,baselineDigest:o,dataset:s,evaluatorIdentity:c,hostBindings:u,loaded:f}=e,p=C(import.meta.url);if(!p)throw Error(`Cannot identify the CLI dependency manifest`);return D({consumer:`graph-learning-v1`,optimizedCoordinate:i,optimizer:y.parse(a.optimizer),reflection:t.callRef,consumerBytes:l(await j(new URL(import.meta.url))),consumerManifest:l(await j(p)),environment:{node:process.version,platform:process.platform,architecture:process.arch,packages:await Promise.all([`@tangle-network/agent-runtime`,`@tangle-network/agent-eval`,`cli-bridge`].map(async e=>{let t=C(e,import.meta.url);if(!t)throw Error(`Cannot identify ${e} for reproducible learning`);return{name:e,version:(await d(t)).version,entryDigest:l(await j(new URL(import.meta.resolve(e))))}}))},baselineDigest:o,dataset:s.version,evaluatorIdentity:c,seat:n??null,defaultSeat:r,mcpPolicy:u.mcpPolicy,graph:f.graph,budget:a.budget,reps:a.reps})}async function Y(e,t){let{root:n,suite:r,defaultSeat:i,bindings:a}=e,l=new AbortController,{pool:d,checkpoint:f,startedAt:p,pendingAttempt:m}=await u(n,r.budget,t,(e,t)=>{if(t.usd-(t.usdEstimated??0)>0){let t=new F(`Native subscription run ${e} reported positive provider billing; no further campaign work is admitted`);throw l.abort(t),t}}),h=AbortSignal.any([AbortSignal.timeout(Math.max(1,p+r.budget.deadlineMs-Date.now())),l.signal]);h.throwIfAborted();let g=m();if(g){let e=await s(g.runId);if(e.sourceDigest!==g.sourceDigest||e.graphDigest!==g.graphDigest)throw Error(`Pending native input changed its admitted execution identity`);try{await o(e.file,{param:[],resume:e.runId,json:!0,mcpPolicy:e.mcpPolicy,mcpSecret:a.mcpSecret},{defaultSeat:i,cwd:e.cwd,source:await c(e),runId:e.runId,graphDigest:e.graphDigest,signal:h,...e.trigger&&{trigger:e.trigger}})}catch(e){if(e.code!==`GRAPH_RUN_FAILED`)throw e}finally{await f()}}return{pool:d,checkpoint:f,startedAt:p,signal:h}}function X(n,r,u){let{root:f,hostBindings:p,seat:m,defaultSeat:h}=n,{signal:g,checkpoint:_}=r;return async(n,r,v,y,b=null,x)=>{await A(w(f,`attempts`),{recursive:!0,mode:448});let S=w(f,`attempts`,`${l(r)}.json`),C=!1;try{await P(S,JSON.stringify({runId:E(),startedAt:Date.now()}),{flag:`wx`,mode:384,flush:!0}),C=!0}catch(e){if(e.code!==`EEXIST`)throw e}let{runId:T,startedAt:D}=O.strictObject({runId:O.uuid(),startedAt:O.number().int().nonnegative()}).parse(await d(S)),M=w(f,`executions`,T);await A(M,{recursive:!0,mode:448});let N=w(M,`graph.yaml`);try{await P(N,n,{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e;if(l(await j(N))!==l(n))throw Error(`Attempt source identity changed`)}let I;try{await j(w(k(),`.tangle`,`runs`,T,`input.json`)),I=await s(T)}catch(e){if(e.code!==`ENOENT`)throw e}if(I&&l(await c(I))!==l(n))throw Error(`Attempt snapshot changed`);if(I&&(x?a(x):null)!==(I.taskWorkspace?a(I.taskWorkspace):null))throw Error(`Attempt task workspace identity changed`);let L=x?await e(x,{runId:T,resumeCwd:I?.cwd,signal:AbortSignal.any([g,y])}):void 0;try{let e=await o(N,{...p,param:i(v),dryRun:!0,...I&&{resume:T},...m&&{seat:m}},{defaultSeat:h,cwd:L?.cwd??M,signal:g,...b&&{trigger:b},...x&&{taskWorkspace:x}});if(!(`graph`in e))throw Error(`Attempt did not load locally`);if(!e.graph.budget?.maxTokens||!e.graph.budget.maxIterations||!e.graph.budget.deadlineMs)throw Error(`Every materialized case needs finite token, iteration and deadline budgets`);await _({runId:T,budget:e.graph.budget,sourceDigest:l(n),graphDigest:e.graph.digest});let r;try{await o(N,{...p,param:i(v),json:!0,...m&&{seat:m},...I&&{resume:T}},{defaultSeat:h,runId:T,cwd:L?.cwd??M,...x&&{taskWorkspace:x},graphDigest:e.graph.digest,signal:AbortSignal.any([g,y]),...b&&{trigger:b}})}catch(e){r=e}finally{await _()}let s=await B(w(k(),`.tangle`,`runs`,T));if(!s)throw new F(`Native graph attempt has no retained settlement`,{cause:r});return{...t(s),runId:T,sourceDigest:l(n),graphDigest:e.graph.digest,durationMs:Math.max(Date.now()-D,s.spentTotal.ms),latencyKnown:C,invocation:u,taskWorkspaceDigest:x?a(x):null}}finally{L?.release()}}}function Z(e,t,n){let{root:r,suite:i,evaluatorCwd:a,evaluatorIdentity:o,assertUnchanged:s}=e;return{name:`independent-domain-evaluator`,judgeVersion:o,dimensions:[{key:`quality`,description:i.objective}],score:async({artifact:e,scenario:c,signal:l})=>{let u=await S(i,a,{scenario:c,evidence:t.get(c.id),artifact:e},l,s),d=await p(r,{evaluatorIdentity:o,scenario:c.id,artifact:e,verdict:u});return await A(w(r,`judgments`),{recursive:!0,mode:448}),await f(w(r,`judgments`,`${e.runId}.json`),{evidence:d,sourceDigest:e.sourceDigest,scenario:c.id,unit:c.unit,split:c.split,quality:u.quality,tokens:e.tokenUsage.input===null||e.tokenUsage.output===null?null:e.tokenUsage.input+e.tokenUsage.output,durationMs:e.durationMs,latencyKnown:e.latencyKnown&&e.invocation===n,operatingCostUsd:null}),{dimensions:{quality:u.quality},composite:u.quality,notes:u.notes}}}}function ee(e,t){let{root:n,profile:r,suite:i,dataset:o}=e;return L({model:r.model?.default??`subscription-native`,pricing:{inputUsdPerMillion:0,outputUsdPerMillion:0},maxOutputTokens:i.budget.proposalTokens,frame:`Improve only the ${i.node} node's inline prompt. Domain: ${i.domain}. Objective: ${i.objective}. Preserve independent checks.`,evidence:async({trainCells:e})=>Promise.all(e.map(async e=>{let t=await d(w(n,`attempts`,`${l(`${e.cellId}:${e.attempt}`)}.json`)),r=await V(w(k(),`.tangle`,`runs`,t.runId),{totalChars:48e3});return JSON.stringify({cell:e,tasks:o.cases.filter(t=>t.split===`train`&&t.unit===e.unitId).map(e=>({id:e.id,params:e.params,trigger:e.trigger,taskWorkspace:e.taskWorkspace?a(e.taskWorkspace):null})),records:r})})),chat:async({messages:e,callId:n,signal:r})=>{let a=await t.call({callId:n,signal:r,request:{model:t.model,messages:e,maxTokens:i.budget.proposalTokens}});if(!a.succeeded)throw Error(a.error);return{content:a.response.content,usage:a.response.usage.captured===!1?null:{inputTokens:a.response.usage.promptTokens,outputTokens:a.response.usage.completionTokens}}}})}async function te(e,t,n,r){let{root:i,suite:a,dataset:o,profile:s,profileComponents:c,sourceForProfile:l}=e,{signal:u,startedAt:d,run:f,judge:p}=r,m=ee(e,t),h=x(a.optimizer,{subscriptionOnlyModel:t,runner:{},maxOutputTokens:a.budget.proposalTokens,timeoutMs:a.budget.proposalDeadlineMs,objective:a.objective,describeScenario:e=>({id:e.id,params:e.params,trigger:e.trigger}),describeArtifact:e=>({text:e.text,status:e.status})}),g={surface:`agent-profile`,profileComponents:c,executionRef:n,trainScenarios:o.cases.filter(e=>e.split===`train`),selectionScenarios:o.cases.filter(e=>e.split===`dev`),testScenarios:o.cases.filter(e=>e.split===`test`),judges:[p],costCeiling:0,runDir:w(i,`search`),signal:u,agent:async(e,t,n)=>{let r=l(e),i=await n.cost.runPaidCall({actor:`native-graph`,model:s.model?.default??`subscription-native`,maximumCharge:{externallyEnforcedMaximumUsd:0},signal:n.signal,execute:()=>f(r,`search`in n?n.search.runId:`${n.cellId}:${n.runAttemptId}`,t.params,n.signal,t.trigger??null,t.taskWorkspace),receipt:e=>({model:s.model?.default??`subscription-native`,...e.costUsd===null?{costUnknown:!0}:{actualCostUsd:e.costUsd},inputTokens:e.tokenUsage.input??0,outputTokens:e.tokenUsage.output??0,usageUnknown:e.tokenUsage.input===null||e.tokenUsage.output===null})});if(!i.succeeded)throw i.error;return i.value}};return h.kind===`official`?await I(s,{...g,method:h.method,minimumLift:a.minimumEffect,reps:a.reps,maxConcurrency:1,optimizationRunOptions:{reps:a.reps,maxConcurrency:1}}):await I(s,{...g,method:R({proposer:m,maxExpansions:a.budget.maxExpansions,policy:G(),allocation:K({reps:a.reps}),lanes:[z({seats:1,cellUsd:0})],deadline:new Date(d+a.budget.deadlineMs).toISOString(),maxAttempts:1}),claim:{use:`comparison`,population:{id:a.domain,description:a.objective},samplingFrame:`retained graph dataset ${o.version}`,independentUnit:`unit`,generalization:`new-units`,minimumEffect:a.minimumEffect},executionRunId:e=>e.runId})}async function ne(t,r,a,s,c,u,f){let{suite:p,cwd:h,identity:g,calibration:_,assertUnchanged:v}=await b(a),y=await j(t,`utf8`),x=H(y)[p.node];if(typeof x!=`string`)throw Error(`The selected node needs an unshared inline prompt`);let S=await m(r);if(S.cases.some(e=>e.domain!==p.domain))throw Error(`Dataset contains a different domain`);if(S.cases.some(e=>e.outcome===`unavailable`||!e.sourceDigest))throw Error(`Dataset retains unavailable attempts; reconcile them before freezing a learning cohort`);for(let e of[`train`,`dev`,`test`])if(!S.cases.some(t=>t.split===e))throw Error(`Dataset needs an independent ${e} partition`);if(S.cases.some(e=>e.trigger===void 0))throw Error(`Dataset lacks retained trigger context; reingest legacy runs before replay`);let C=[...new Set(S.cases.map(e=>JSON.stringify(n.parse(e.mcpPolicy??{}))))];if(!f.mcpPolicy&&C.length!==1)throw Error(`Retained MCP host policies differ; select an explicit --mcp-policy`);let T={...f,mcpPolicy:f.mcpPolicy??n.parse(JSON.parse(C[0]??`{}`))},D=S.cases.find(e=>e.split===`train`);if(!D)throw Error(`Dataset needs a train case`);let k=w(s,`baseline.graph.yaml`),A=l(y);try{await P(k,y,{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e;if(l(await j(k))!==A)throw Error(`Frozen baseline changed`)}let M;if(D.taskWorkspace){let t=w(s,`task-workspace-admission.json`);try{await P(t,JSON.stringify({runId:E()}),{flag:`wx`,mode:384,flush:!0})}catch(e){if(e.code!==`EEXIST`)throw e}let n=O.strictObject({runId:O.uuid()}).parse(await d(t));M=await e(D.taskWorkspace,{...n,validationOnly:!0})}let N;try{N=await o(k,{...T,param:i(D.params),dryRun:!0,...c&&{seat:c}},{defaultSeat:u,...D.trigger&&{trigger:D.trigger},...M&&{cwd:M.cwd,taskWorkspace:D.taskWorkspace}})}finally{await M?.release()}if(!(`graph`in N))throw Error(`Baseline did not load locally`);if(!N.graph.budget?.maxTokens||!N.graph.budget.maxIterations||!N.graph.budget.deadlineMs)throw Error(`Graph needs finite token, iteration and deadline budgets for bounded improvement`);let F=N.graph.nodes.find(e=>e.id===p.node)?.profile;if(!F)throw Error(`Selected node was not materialized`);let I=typeof F.prompt?.systemPrompt==`string`?`systemPrompt`:`appendSystemPrompt`;if(typeof F.prompt?.[I]!=`string`)throw Error(`The selected source coordinate was not materialized`);let L=`prompt.${I}`,R={...F,prompt:{...F.prompt,[I]:x}},z=e=>{let t=e.prompt?.[I];if(typeof t!=`string`)throw Error(`Candidate lost its selected prompt coordinate`);return t},B={read:e=>({[L]:z(e)}),apply(e,t){if(Object.keys(t).length!==1||Object.keys(t)[0]!==L||typeof t[L]!=`string`)throw Error(`Candidate changed the selected prompt coordinate`);return{...e,prompt:{...e.prompt,[I]:t[L]}}}},V=e=>{let t=z(e);return t===x?y:U(y,{[p.node]:t})},W={node:p.node,profileField:L,binding:`authored-source-compiled-per-case`};return{root:s,seat:c,defaultSeat:u,bindings:f,suite:p,evaluatorCwd:h,evaluatorIdentity:g,calibration:_,assertUnchanged:v,baselineDigest:A,dataset:S,hostBindings:T,loaded:N,profile:R,profileComponents:B,sourceForProfile:V,optimizedCoordinate:W}}export{q as learnGraph};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isAbsolute as e,join as t,relative as n}from"node:path";import{createHash as r}from"node:crypto";import{
|
|
1
|
+
import{isAbsolute as e,join as t,relative as n}from"node:path";import{createHash as r}from"node:crypto";import{z as i}from"zod";import{constants as a}from"node:fs";import{open as o,opendir as s,realpath as c}from"node:fs/promises";import*as l from"@tangle-network/agent-runtime/kernel";import{CODEX_HOME_RULE as u,STORES as d,claudeCodeRefForFile as f,codexRefForFile as p,readSessionInput as m,storeGlob as h,withinPath as g}from"@tangle-network/harness-sessions";const _=i.object({harness:i.enum([`codex`,`claude-code`]),root:i.string().refine(e),basis:i.literal(`host-jail`),nativeSessionId:i.string().min(1),runId:i.string().min(1),requestDigest:i.string().regex(/^sha256:[a-f0-9]{64}$/)}),v=i.object({externalId:i.string(),internalId:i.string(),backend:i.enum([`codex`,`claude-code`]),cwd:i.string(),metadata:i.object({effective_native_store:_,agent_profile_binding:i.object({effectiveProfileDigest:i.string()})})});function y(){let e=new Map;return{observe(t){e.set(`${t.runId}:${t.requestDigest}`,t)},close(){e.clear()},redact(t,n){for(let n of t.runs){let r=e.get(`${n.runId}:${n.requestDigest}`);if(!r||r.sessionId!==t.sessionId||r.profileDigest!==t.profileDigest||r.cwd!==t.cwd)throw Error(`Exact native execution has no trusted redaction authority`)}if(!t.runs.length)throw Error(`Native redaction requires an exact execution binding`);let r=n;for(let n of e.values())n.sessionId===t.sessionId&&n.profileDigest===t.profileDigest&&n.cwd===t.cwd&&(r=n.redact(r));return r}}}function b(e,t){if(e===`codex`)return p(t);let n=t.split(`/`),r=n.indexOf(`subagents`,3);return f(t,r>0?n[r-1]??null:null)}async function x(e,r,i){let a=[],o=d[`claude-code.projects-jsonl`],f=t(r,...o.root.split(`/`).slice(1)),p=e===`codex`?u.sessionDirs.map(e=>t(r,e)):[f],m=e===`codex`?[h(u.rollout)]:o.files.map(e=>h(e)),_=0;for(;p.length;){i.throwIfAborted();let o=p.shift();if(o===void 0)break;let u;try{u=await c(o)}catch(e){if(e.code===`ENOENT`)continue;throw e}if(!g(u,r))throw Error(`Native inventory escaped its attested store`);let d=await s(u);for await(let o of d){if(i.throwIfAborted(),++_>l.HARNESS_TRANSCRIPT_READ_LIMITS.maxFiles)throw Error(`Native inventory exceeds the capture bound`);let s=t(d.path,o.name);o.isDirectory()?p.push(s):o.isFile()&&m.some(t=>t.test(e===`codex`?o.name:n(f,s)))&&a.push({path:n(r,s),nativeSessionId:b(e,n(r,s)).nativeSessionId})}}return a}function S(e){return async n=>{if(![`codex`,`claude-code`].includes(n.harness))return{status:`unavailable`,reason:`unknown-harness`,skipped:[{path:n.harness,reason:`Native transcript capture is not configured for this harness`}]};let s=await fetch(`${e.bridgeUrl}/v1/sessions?session_id=${encodeURIComponent(n.sessionId)}&backend=${n.harness}`,{headers:{authorization:`Bearer ${e.bridgeBearer}`},signal:n.signal});if(!s.ok)throw Error(`Bridge session lookup failed (HTTP ${s.status})`);let u=i.object({data:i.tuple([v])}).parse(await s.json()).data[0],d=u.metadata.effective_native_store,f=await c(d.root);if(u.backend!==n.harness||d.harness!==n.harness||u.externalId!==n.sessionId||u.internalId!==d.nativeSessionId||u.cwd!==e.cwd||n.cwd!==e.cwd||u.metadata.agent_profile_binding.effectiveProfileDigest!==n.profileDigest||f!==d.root||!g(f,t(e.cwd,`.agent-home`))||!n.runs.some(e=>e.runId===d.runId&&e.requestDigest===d.requestDigest))throw Error(`Bridge native binding does not match this execution`);let p=[],h=[...new Set(e.privateMcpSecrets?.()??[])].flatMap(e=>[e,JSON.stringify(e).slice(1,-1)]).filter(Boolean).sort((e,t)=>t.length-e.length),_=await l.captureBoundHarnessTranscript({harness:n.harness,binding:{kind:`bridge`,sessionId:n.sessionId,nativeSessionId:d.nativeSessionId,profileDigest:n.profileDigest,runs:n.runs,...n.node===void 0?{}:{node:n.node}},nativeSessionId:d.nativeSessionId,files:await x(n.harness,f,n.signal),signal:n.signal,parse:(e,t)=>m(n.harness,{text:e},{...b(n.harness,t.path),label:t.path},{corruption:`strict`}),read:async(i,s)=>{let u=await c(t(f,i.path));if(!g(u,f))throw Error(`Native session escaped its attested store`);let d=await o(u,a.O_RDONLY|a.O_NOFOLLOW);try{let t=await d.stat();if(!t.isFile()||t.size>l.HARNESS_TRANSCRIPT_READ_LIMITS.maxFileBytes)throw Error(`Native session is not a bounded regular file`);s?.throwIfAborted();let a=await d.readFile();if(s?.throwIfAborted(),!e.redact)throw Error(`The native host did not supply private redaction authority`);let o=e.redact(n,a),c=new TextDecoder(`utf-8`,{fatal:!0}).decode(o);for(let e of h)c=c.split(e).join(`[redacted:MCP]`);let u=Buffer.from(c,`utf8`);return u.equals(a)||p.push({path:i.path,reason:`Original bytes withheld for private MCP credential redaction; source sha256:${r(`sha256`).update(a).digest(`hex`)}; retained copy is redacted`}),u}finally{await d.close()}}});return _.status!==`captured`||!p.length?_:{..._,artifact:{..._.artifact,skipped:[..._.artifact.skipped,...p]},skippedCount:_.skippedCount+p.length,coverageComplete:!1,missing:[`private-mcp-secret-original-bytes`]}}}const C=async(e,t)=>{if(![`codex`,`claude-code`].includes(e.harness)||e.binding?.kind!==`bridge`)throw Error(`Native transcript reader is not configured for this capture`);return(await l.readBoundHarnessSessions({nativeSessionId:e.binding.nativeSessionId,files:e.files.map(t=>({path:t.path,nativeSessionId:b(e.harness,t.path).nativeSessionId,byteLength:t.bytes})),read:async t=>{let n=e.files.find(e=>e.path===t.path);if(!n)throw Error(`Retained native file is absent`);return Buffer.from(n.content,`utf8`)},parse:(t,n)=>m(e.harness,{text:t},{...b(e.harness,n.path),label:n.path},{corruption:`strict`}),signal:t})).sessions};export{S as graphNativeCapture,y as graphNativeRedaction,C as readGraphSessions};
|
package/dist/{graph-operating-evidence-CGGxszAi.mjs → graph-operating-evidence-DOCpwKlO.mjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,d as t,f as n,i as r,l as i,n as a,o,s,t as c}from"./index.mjs";import{readCampaignJson as l,t as u,writeCampaignJson as d}from"./graph-campaign-state-
|
|
2
|
-
`).entries()){let{event:r}=I(n,a.runId,{path:a.ledger.uri,line:t+1});if(r.kind===`cell-settled`)try{let t=await l(_(e,`attempts`,`${c(r.runId)}.json`));s.set(t.runId,r.wallMs===null||r.queueMs===null?null:r.wallMs+r.queueMs)}catch(e){if(e.code!==`ENOENT`)throw e}}let u=_(e,`judgments`),d=await D(u).catch(e=>{if(e.code!==`ENOENT`)throw e;return[]}),f=await Promise.all(d.filter(e=>e.endsWith(`.json`)).map(async e=>({...Z.parse(await l(_(u,e))),durationMs:s.get(e.slice(0,-5))??null}))),p=e=>e.reduce((e,t)=>e+t,0)/e.length,m=[...new Set(f.map(e=>e.sourceDigest))].sort().map(e=>{let r=f.filter(t=>t.sourceDigest===e&&t.split===`test`),i=r.length===t.length*n.reps&&t.every(e=>r.filter(t=>t.scenario===e.id).length===n.reps),a=[...new Set(t.map(e=>e.unit))],o=e=>p(a.map(t=>p(r.filter(e=>e.unit===t).map(e))));return{sourceDigest:e,complete:i,observations:r.length,independentUnits:a.length,quality:i?o(e=>e.quality):null,meanTokens:i&&r.every(e=>e.tokens!==null)?o(e=>e.tokens):null,meanDurationMs:i&&r.every(e=>e.durationMs!==null&&e.latencyKnown)?o(e=>e.durationMs):null,operatingCostUsd:null}}),h=R(m,[{name:`independent quality`,direction:`maximize`,value:e=>e.quality??NaN},{name:`reported input plus output tokens`,direction:`minimize`,value:e=>e.meanTokens??NaN},{name:`end-to-end graph milliseconds`,direction:`minimize`,value:e=>e.meanDurationMs??NaN}]),g=m.find(e=>e.sourceDigest===r),v=m.find(e=>e.sourceDigest===i),y=[...!v?.complete||v.meanTokens===null||v.meanDurationMs===null?[`baseline operational evidence is incomplete`]:[],...g?.complete?[]:[`candidate final-test cohort is incomplete`],...g?.meanTokens==null?[`candidate token usage is unknown`]:g.meanTokens>n.operatingConstraints.maxMeanTokens?[`candidate exceeds mean token ceiling`]:[],...g?.meanDurationMs==null?[`candidate latency is unknown`]:g.meanDurationMs>n.operatingConstraints.maxMeanDurationMs?[`candidate exceeds mean latency ceiling`]:[],...h.frontier.some(e=>e.sourceDigest===r)?[]:[`candidate is absent from the matched quality/token/latency frontier`],...n.operatingConstraints.requireKnownOperatingCost?[`operating dollar cost is unknown`]:[]];return{admissible:y.length===0,reasons:y,constraints:n.operatingConstraints,reports:m,frontier:h.frontier.map(e=>e.sourceDigest),dollarFrontierEstablished:!1}}async function $(t,i){let s=v(t),{release:f}=F({lockPath:`${await O(s)}.lock`}),g,y;try{let{record:t}=await l(_(s,`result.json`)),f=await m(s,t);if(f.decision!==`promote`)throw Error(`The independent comparison held this candidate`);let v=await O(i);if(v!==f.sourcePath)throw Error(`Activation target differs from the measured source path`);g=F({lockPath:`${v}.lock`}).release;let
|
|
1
|
+
import{a as e,d as t,f as n,i as r,l as i,n as a,o,s,t as c}from"./index.mjs";import{readCampaignJson as l,t as u,writeCampaignJson as d}from"./graph-campaign-state-pTHFtnWZ.mjs";import{graphDatasetObject as f,readGraphDataset as p,readGraphDatasetObject as m}from"./graph-dataset-Bs03wlXZ.mjs";import{dirname as h,isAbsolute as g,join as _,resolve as v}from"node:path";import{createHash as y,randomUUID as b}from"node:crypto";import{canonicalCandidateDigest as x}from"@tangle-network/agent-interface";import{z as S}from"zod";import{execCli as C}from"@tangle-network/sdk-cli-runner";import{homedir as w}from"node:os";import{mkdir as T,readFile as E,readdir as D,realpath as O,rename as k,rm as A,writeFile as j}from"node:fs/promises";import{SearchEnvironmentFault as M,officialGepa as N}from"@tangle-network/agent-runtime";import{readSettleRecord as P}from"@tangle-network/agent-runtime/durable";import{acquireSingleRunLock as F,parseSearchLedgerLine as I,replaySearchLedgerText as L}from"@tangle-network/agent-eval/campaign";import{paretoFrontier as R}from"@tangle-network/agent-eval";const z=S.number().int().positive().max(2**53-1),B=S.strictObject({maxEvaluations:z,maxConcurrency:z.max(1,`Retained graph campaigns admit one pending graph`).default(1)}),V=S.discriminatedUnion(`kind`,[S.strictObject({kind:S.literal(`native`)}),S.strictObject({kind:S.literal(`gepa`),recipe:S.discriminatedUnion(`kind`,[S.strictObject({kind:S.literal(`engine`),run:B}),S.strictObject({kind:S.literal(`omni`),explore:S.array(B).min(1),continueWith:B,maxWorkers:z.max(1,`Retained graph campaigns admit one pending graph`).default(1)})]),maxModelRequests:z,maxRequestBytes:z,maxResponseBytes:z,maxCandidateChars:z,maxEvidenceChars:z,resume:S.enum([`never`,`if-compatible`,`required`]).default(`never`),trustLocalState:S.boolean().default(!1)})]);function H(e,t,n=`prompt`){if(n!==`prompt`)throw Error(`Graph learning currently materializes only the prompt surface`);let r=V.parse(e??{kind:`native`});if(r.kind===`native`)return{kind:`native`,identity:x(r)};if(!t)throw Error(`Official GEPA requires caller-owned subscription execution`);if(r.recipe.kind===`omni`&&r.resume!==`never`)throw Error(`Official Omni does not support resumable state; use resume=never`);if(r.resume!==`never`&&!r.trustLocalState)throw Error(`Resumable GEPA requires explicit trust in local pickle state`);z.parse(t.maxOutputTokens),S.number().int().positive().max(2147483647).parse(t.timeoutMs);let i=e=>({engine:`gepa`,...e,engineConfig:{engine:{capture_stdio:!1,max_workers:e.maxConcurrency,parallel:e.maxConcurrency>1,raise_on_exception:!0},reflection:{reflection_minibatch_size:1,skip_perfect_score:!1}}}),a=r.recipe.kind===`engine`?{kind:`engine`,run:i(r.recipe.run)}:{kind:`omni`,explore:r.recipe.explore.map(i),continueWith:i(r.recipe.continueWith),maxWorkers:r.recipe.maxWorkers},o=t.subscriptionOnlyModel,s={maxRequests:r.maxModelRequests,maxRequestBytes:r.maxRequestBytes,maxResponseBytes:r.maxResponseBytes,maxOutputTokensPerRequest:t.maxOutputTokens,requestTimeoutMs:t.timeoutMs,pricing:{inputUsdPerMillion:0,outputUsdPerMillion:0}};return{kind:`official`,identity:x({config:r,model:o.model,callRef:o.callRef,budget:s,objective:t.objective}),method:N({objective:t.objective,recipe:a,optimizer:{...o,budget:s,servedModelPolicy:`exact`},runner:t.runner,timeoutMs:t.timeoutMs,maxCandidateChars:r.maxCandidateChars,maxEvidenceChars:r.maxEvidenceChars,resume:r.resume,trustResumeState:r.trustLocalState,describeScenario:t.describeScenario,describeArtifact:t.describeArtifact})}}const U=`tangle-native-reflection-json-content-v1`,W=`You are a native-agent reflection adapter. The task contains the original ordered role/content messages as JSON. Follow those messages as the reflection request. Return exactly one JSON object {"content":string}; content is the complete text response to that request. Do not add usage, model, or other fields.`;function G(e){let{profile:t,budget:n}=structuredClone({profile:e.profile,budget:e.budget});for(let e of Object.values(n))z.parse(e);let r=t.model?.default;if(!r||!t.harness)throw Error(`Native reflection requires an exact admitted harness and model profile`);let i=`${U}:${x({profile:t,budget:n,reflectionInstruction:W,binding:`params.reflection:whole-json-value`})}`;return{model:r,call:async({request:a,callId:o,signal:s})=>{let c=S.strictObject({model:S.literal(r),messages:S.array(S.strictObject({role:S.enum([`system`,`user`,`assistant`]),content:S.union([S.string(),S.array(S.strictObject({type:S.literal(`text`),text:S.string()}))])})).min(1),maxTokens:S.literal(n.maxTokens).optional(),timeoutMs:z.max(n.deadlineMs).optional()}).parse(a),l=JSON.stringify({graph:U,workspace:`fresh`,params:{reflection:{type:`object`,default:{protocol:U,messages:c.messages}}},nodes:[{id:`proposal`,profile:{...t,connections:void 0,mcp:void 0,hooks:void 0,resources:void 0,subagents:void 0,tools:{websearch:!1,webfetch:!1},prompt:{systemPrompt:W}}}],entry:[{node:`proposal`,task:"${params.reflection}"}],edges:[],budget:{...n,...c.timeoutMs&&{deadlineMs:c.timeoutMs}},check:{node:`proposal`,pointer:`/content`,exists:!0}}),u=await e.run(l,o,s),d=u.settlement,f=d.spentTotal,p=u.sourceDigest===y(`sha256`).update(l).digest(`hex`)&&d.tree.root===u.runId,m=f.tokensKnown!==!1&&f.tokens.tokensKnown!==!1,h={model:r,inputTokens:f.tokens.input,outputTokens:f.tokens.output,usageUnknown:!p||!m,...!p||f.usdKnown===!1?{costUnknown:!0}:{actualCostUsd:f.usd}},g={kind:U,callRef:i,callId:o,runId:u.runId,sourceDigest:u.sourceDigest,graphDigest:u.graphDigest,providerModel:d.providerModel??null};if(!p)return{succeeded:!1,error:`Reflection source or settlement run identity mismatched`,receipt:h,execution:g};if(d.kind!==`winner`||d.providerModel?.status!==`known`||d.providerModel.models.length!==1||d.providerModel.models[0]!==r)return{succeeded:!1,error:`Reflection failed or served model identity is unavailable/mismatched`,receipt:h,execution:g};let _=d.out?.proposal,v=_&&typeof _==`object`&&`json`in _?_.json:_,b=S.strictObject({content:S.string()}).safeParse(v);return b.success?{succeeded:!0,receipt:h,execution:g,response:{content:b.data.content,model:r,servedModel:d.providerModel.models[0],usage:{promptTokens:f.tokens.input,completionTokens:f.tokens.output,totalTokens:f.tokens.input+f.tokens.output,captured:m},costUsd:f.usdKnown===!1?null:f.usd,durationMs:u.durationMs,raw:{runId:u.runId,sourceDigest:u.sourceDigest}}}:{succeeded:!1,error:`Reflection omitted its exact content envelope`,receipt:h,execution:g}},callRef:i}}const K=S.number().int().positive(),q=S.strictObject({quality:S.number().min(0).max(1),notes:S.string()}),J=S.strictObject({version:S.literal(1),optimizer:V.default({kind:`native`}),domain:S.string().min(1),node:S.string().min(1),objective:S.string().min(1),evaluator:S.strictObject({command:S.string().min(1).refine(g,`Use an absolute evaluator executable path`),args:S.array(S.string()),files:S.array(S.string().min(1)).min(1),timeoutMs:K}),calibration:S.array(S.strictObject({request:S.unknown(),quality:S.union([S.literal(0),S.literal(1)])})).min(2),budget:S.strictObject({maxTokens:K,maxIterations:K,deadlineMs:K,maxExpansions:K,proposalTokens:K,proposalIterations:K,proposalDeadlineMs:K}),minimumEffect:S.number().positive().max(1),reps:K,operatingConstraints:S.strictObject({maxMeanTokens:K,maxMeanDurationMs:K,requireKnownOperatingCost:S.boolean().default(!1)})});async function Y(e,t,n,r,i){await i?.();let a=await C({command:e.evaluator.command,args:e.evaluator.args,cwd:t,timeoutMs:e.evaluator.timeoutMs,signal:r,ownProcessGroup:!0},void 0,{stdin:`${JSON.stringify(n)}\n`,maxOutputBytes:1024*1024});if(await i?.(),!a.exit.success)throw new M(`Independent evaluator failed (exit ${a.exit.code??`unknown`})`);return q.parse(JSON.parse(a.stdout??``))}async function X(e,t){let n=await O(e),r=J.parse(await l(n)),i=async()=>x({suite:await l(n),files:await Promise.all([r.evaluator.command,...r.evaluator.files].map(async t=>{let n=await O(v(h(e),t));return{path:n,digest:c(await E(n))}}))}),a=await i(),o=async()=>{if(await i()!==a)throw Error(`Independent evaluator dependencies changed during use`)};if(!r.calibration.some(e=>e.quality===0)||!r.calibration.some(e=>e.quality===1))throw Error(`Evaluator calibration needs both accepted and rejected examples`);let s=[];for(let e of r.calibration){let i=await Y(r,h(n),e.request,t,o);if(i.quality!==e.quality)throw Error(`Independent evaluator failed its accepted/rejected calibration; no inference started`);s.push(i)}return{suite:r,cwd:h(n),identity:a,calibration:s,assertUnchanged:o}}const Z=S.strictObject({evidence:S.string(),sourceDigest:S.string(),scenario:S.string(),unit:S.string(),split:S.enum([`train`,`dev`,`test`]),quality:S.number().min(0).max(1),tokens:S.number().nonnegative().nullable(),durationMs:S.number().nonnegative(),latencyKnown:S.boolean().default(!1),operatingCostUsd:S.null()});async function Q(e,t,n,r,i,a){let o=await E(new URL(a.ledger.uri),`utf8`);if(`sha256:${c(o)}`!==a.ledger.sha256||Buffer.byteLength(o)!==a.ledger.byteLength)throw Error(`Closed search ledger bytes changed`);L(o,a.runId,a.ledger.uri);let s=new Map;for(let[t,n]of o.trim().split(`
|
|
2
|
+
`).entries()){let{event:r}=I(n,a.runId,{path:a.ledger.uri,line:t+1});if(r.kind===`cell-settled`)try{let t=await l(_(e,`attempts`,`${c(r.runId)}.json`));s.set(t.runId,r.wallMs===null||r.queueMs===null?null:r.wallMs+r.queueMs)}catch(e){if(e.code!==`ENOENT`)throw e}}let u=_(e,`judgments`),d=await D(u).catch(e=>{if(e.code!==`ENOENT`)throw e;return[]}),f=await Promise.all(d.filter(e=>e.endsWith(`.json`)).map(async e=>({...Z.parse(await l(_(u,e))),durationMs:s.get(e.slice(0,-5))??null}))),p=e=>e.reduce((e,t)=>e+t,0)/e.length,m=[...new Set(f.map(e=>e.sourceDigest))].sort().map(e=>{let r=f.filter(t=>t.sourceDigest===e&&t.split===`test`),i=r.length===t.length*n.reps&&t.every(e=>r.filter(t=>t.scenario===e.id).length===n.reps),a=[...new Set(t.map(e=>e.unit))],o=e=>p(a.map(t=>p(r.filter(e=>e.unit===t).map(e))));return{sourceDigest:e,complete:i,observations:r.length,independentUnits:a.length,quality:i?o(e=>e.quality):null,meanTokens:i&&r.every(e=>e.tokens!==null)?o(e=>e.tokens):null,meanDurationMs:i&&r.every(e=>e.durationMs!==null&&e.latencyKnown)?o(e=>e.durationMs):null,operatingCostUsd:null}}),h=R(m,[{name:`independent quality`,direction:`maximize`,value:e=>e.quality??NaN},{name:`reported input plus output tokens`,direction:`minimize`,value:e=>e.meanTokens??NaN},{name:`end-to-end graph milliseconds`,direction:`minimize`,value:e=>e.meanDurationMs??NaN}]),g=m.find(e=>e.sourceDigest===r),v=m.find(e=>e.sourceDigest===i),y=[...!v?.complete||v.meanTokens===null||v.meanDurationMs===null?[`baseline operational evidence is incomplete`]:[],...g?.complete?[]:[`candidate final-test cohort is incomplete`],...g?.meanTokens==null?[`candidate token usage is unknown`]:g.meanTokens>n.operatingConstraints.maxMeanTokens?[`candidate exceeds mean token ceiling`]:[],...g?.meanDurationMs==null?[`candidate latency is unknown`]:g.meanDurationMs>n.operatingConstraints.maxMeanDurationMs?[`candidate exceeds mean latency ceiling`]:[],...h.frontier.some(e=>e.sourceDigest===r)?[]:[`candidate is absent from the matched quality/token/latency frontier`],...n.operatingConstraints.requireKnownOperatingCost?[`operating dollar cost is unknown`]:[]];return{admissible:y.length===0,reasons:y,constraints:n.operatingConstraints,reports:m,frontier:h.frontier.map(e=>e.sourceDigest),dollarFrontierEstablished:!1}}async function $(t,i){let s=v(t),{release:f}=F({lockPath:`${await O(s)}.lock`}),g,y;try{let{record:t}=await l(_(s,`result.json`)),f=await m(s,t);if(f.decision!==`promote`)throw Error(`The independent comparison held this candidate`);let v=await O(i);if(v!==f.sourcePath)throw Error(`Activation target differs from the measured source path`);g=F({lockPath:`${v}.lock`}).release;let C=await E(f.candidate,`utf8`);if(c(C)!==f.candidateDigest)throw Error(`Measured candidate bytes changed`);let w=c(await E(v));if(w!==f.baselineDigest&&w!==f.candidateDigest)throw Error(`Activation baseline changed; evaluate the new baseline`);let T=async()=>{if(c(await E(v))!==w)throw Error(`Activation target changed while evidence was checked; the edit was preserved`)},{identity:D,assertUnchanged:A}=await X(f.suite);if(await T(),D!==f.evaluatorIdentity)throw Error(`Independent evaluator changed since measurement`);if(!f.operational.admissible)throw Error(`Measured operational constraints held this candidate`);let M=S.array(S.strictObject({runId:S.uuid(),scenario:S.string(),graphDigest:S.string()})).min(1).parse(f.executionIdentities),N=await p(f.dataset.root,f.dataset.version),P=new Set;for(let t of M){let i=N.cases.find(e=>e.id===t.scenario);if(!i||i.trigger===void 0)throw Error(`Measured execution inputs are unavailable`);let s=await o(t.runId);if(s.sourceDigest!==f.candidateDigest||s.graphDigest!==t.graphDigest||x(n.parse(s.mcpPolicy??{}))!==x(n.parse(f.mcpPolicy??{})))throw Error(`Measured execution configuration changed`);P.add(await e(s));let c=await a(v,{param:r(i.params),dryRun:!0,mcpPolicy:n.parse(f.mcpPolicy??{})},{source:C,...i.trigger&&{trigger:i.trigger}});if(!(`graph`in c)||c.graph.digest!==t.graphDigest)throw Error(`Ordinary execution differs from the measured configuration; express its seat through the maintained graph contract and reevaluate under the intended host policy`)}await A(),await T();let I=await l(_(s,`activation.json`)).catch(e=>{if(e.code!==`ENOENT`)throw e}),L={record:t,baselineDigest:f.baselineDigest,candidateDigest:f.candidateDigest,executionConfigurations:[...P].sort(),target:v,activatedAt:I?.record===t&&w===f.candidateDigest?I.activatedAt:new Date().toISOString()};return await d(_(s,`activation.pending.json`),L),w!==f.candidateDigest&&(y=_(h(v),`.${b()}.graph.yaml`),await j(y,C,{mode:384,flush:!0}),await T(),await k(y,v),y=void 0,await u(h(v))),await d(_(s,`activation.json`),L),L}finally{y&&await A(y,{force:!0}),await g?.(),await f()}}async function ee(n,r,a){let u=v(n),{release:h}=F({lockPath:`${await O(u)}.lock`});try{let n=await l(_(u,`activation.json`)),h=await m(u,n.record),g=await o(r);if(c(await s(g))!==h.candidateDigest)throw Error(`Observation did not execute the activated candidate`);if(!S.array(S.string().regex(/^sha256:[a-f0-9]{64}$/)).min(1).parse(n.executionConfigurations).includes(await e(g)))throw Error(`Observation execution configuration differs from the activated measurement`);if(!a.trim())throw Error(`Observation needs an independent task unit`);if(Date.parse(g.startedAt)<=Date.parse(S.iso.datetime().parse(n.activatedAt)))throw Error(`Observation must have started after this candidate was activated`);let v=await p(h.dataset.root,h.dataset.version),y=x({params:g.params,trigger:g.trigger??null,taskWorkspace:g.taskWorkspace?i(g.taskWorkspace):null});if((await Promise.all((await D(_(u,`attempts`))).filter(e=>e.endsWith(`.json`)).map(e=>l(_(u,`attempts`,e))))).some(e=>e.runId===r)||v.cases.some(e=>e.run===r||e.unit===a||x({params:e.params,trigger:e.trigger??null,taskWorkspace:e.taskWorkspace?i(e.taskWorkspace):null})===y))throw Error(`A learning execution or task is not a subsequent independent production observation`);let b=_(u,`observations`);await T(b,{recursive:!0,mode:448});for(let e of(await D(b)).filter(e=>e.endsWith(`.json`))){let t=await l(_(b,e)),i=await m(u,t.record);if(i.runId===r){if(i.unit!==a||i.taskDigest!==y||i.activation.record!==n.record)throw Error(`The retained observation identity changed`);return{record:t.record,runId:r,verdict:i.verdict}}if(i.unit===a||i.taskDigest===y)throw Error(`An independent observation unit or task cannot be counted twice`)}let{suite:C,cwd:E,identity:O,assertUnchanged:k}=await X(h.suite);if(O!==h.evaluatorIdentity)throw Error(`Observation evaluator changed`);let A=await P(_(w(),`.tangle`,`runs`,r));if(!A)throw Error(`Observation has not settled`);if(A.tree.root!==r)throw Error(`Observation settlement names another native run`);let j={...t(A),runId:r,sourceDigest:g.sourceDigest,graphDigest:g.graphDigest},M=await Y(C,E,{scenario:{params:g.params,trigger:g.trigger??null,unit:a,taskDigest:y},artifact:j},void 0,k),N=await f(u,{activation:n,runId:r,unit:a,taskDigest:y,activatedAt:n.activatedAt,artifact:j,verdict:M});return await d(_(u,`observations`,`${r}.json`),{record:N}),{record:N,runId:r,verdict:M}}finally{h()}}export{G as a,$ as activateGraph,Z as graphOperatingCell,Q as graphOperatingDecision,V as i,X as n,ee as observeGraph,H as r,Y as t};
|