@kynver-app/runtime 0.1.154 → 0.1.157

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.
@@ -6,7 +6,7 @@ var g=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=
6
6
  `).filter(Boolean);for(let s of o){let i=Ue(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),l=Date.parse(u);Number.isFinite(l)&&l>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:n}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),wt(r.lastHeartbeatPhase)&&(r.terminalFinalResult=xt(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var Ss,ze=g(()=>{"use strict";Ct();S();Ss=6e4});function _s(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function xs(e){if(!e)return[];let r=[],t="",n,o=!1;for(let s of e){if(o){t+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(n){s===n?n=void 0:t+=s;continue}if(s==='"'||s==="'"){n=s;continue}if(/\s/.test(s)){t&&(r.push(t),t="");continue}t+=s}return t&&r.push(t),r}function Cs(e){let r=_s(e[0]);return!!(r&&vs.has(r))}function Ur(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function Tr(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function ws(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function Es(e){let r=[];for(let t=1;t<e.length;t+=1){let n=e[t];if(n){if(n==="--"){r.push(...e.slice(t+1));break}if(n.startsWith("-")){if(n.includes("="))continue;At.has(n)&&(t+=1);continue}r.push(n)}}return r}function As(e){let r=!1,t=e.map((o,s)=>{let i=ws(o),a=e[s-1];return a&&At.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=Es(t);if(n.length===2){let[o,s]=n;if(Tr(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};if(Ur(s))return{argv:[t[0]??"rg","-g",s,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function Br(e){let r=e.trim();if(!r)return{command:r,changed:!1};let t=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",n=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=n.map(i=>{let a=xs(i.trim());if(!a.length||!Cs(a))return i;let u=As(a);return u.changed?(o=!0,u.argv.join(" ")):i});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function Pt(e){if(!e)return{};let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(|$)/iu);if(r)return{pattern:r[1],target:r[2]?.trim()};let t=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return t?{pattern:t[1],target:t[2]?.trim()}:{}}function Ps(e){let{pattern:r,target:t}=Pt(e);return r?Tr(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:Ur(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function Ws(e){let{pattern:r,target:t}=Pt(e);if(!r)return null;if(Tr(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&Ur(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function Ds(e){if(e.kind==="bad_scope"&&e.pattern?.includes("agent-os-land-pr")&&e.target==="package.json")return"Search package.json with a glob from the repo root: `rg -g package.json agent-os-land-pr .` \u2014 or run `node scripts/agent-os-land-pr.mjs <pr-url>` directly.";if(e.kind==="bad_scope"&&e.pattern&&e.target)return`Use \`rg -g '${e.target}' ${e.pattern} .\` from the repo root instead of treating ${e.target} as a folder.`;if(e.kind==="rg_exclude_syntax"&&e.pattern){let r=e.target?`${e.target.trim()}/**`:"!node_modules/**";return`Repo search scope \`${e.target??"!node_modules"}\` is not a valid ripgrep path. Use \`rg "${e.pattern}" -g '${r}' .\` from the repo root (exclude globs need a \`/**\` suffix).`}return e.kind==="no_matches"&&e.pattern?`No matches for "${e.pattern}". Try a broader pattern, drop overly short tokens, or search from the repo root with \`rg "${e.pattern}" .\`.`:null}function Os(e){let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(agent\)|\s*failed|$)/iu);return r?`search "${r[1]}" in ${r[2]?.trim()}`:null}function Fr(e){let r=e.meta?.trim()||(e.command?Os(e.command):null)||null;if(r){let t=Ps(r),n=Ds(t);if(n)return n;let o=Ws(r);if(o?.changed)return`Repo search used an invalid scope. Retry with: \`${o.command}\`.`}if(e.command&&/\b(rg|ripgrep)\b/i.test(e.command)){let t=Br(e.command);if(t.changed)return`Ripgrep scope may be invalid. Retry with: \`${t.command}\`.`;if(e.exitCode===1)return"Ripgrep returned no matches (exit 1). Try a broader pattern or search from the repo root."}return null}var vs,At,Wt=g(()=>{"use strict";vs=new Set(["rg","ripgrep","grep"]),At=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function _e(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Us(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let t=r.indexOf("{"),n=r.lastIndexOf("}");if(t>=0&&n>t)try{return JSON.parse(r.slice(t,n+1))}catch{return null}return null}function xe(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ts(e){let r=e.metadata;if(!xe(r))return null;let t=r.vulnerabilities;if(!xe(t))return null;let n=s=>typeof t[s]=="number"?t[s]:0,o={info:n("info"),low:n("low"),moderate:n("moderate"),high:n("high"),critical:n("critical"),total:n("total")};return typeof t.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function Bs(e){let r=[];e.critical&&r.push(`${e.critical} critical`),e.high&&r.push(`${e.high} high`),e.moderate&&r.push(`${e.moderate} moderate`),e.low&&r.push(`${e.low} low`),e.info&&r.push(`${e.info} info`);let t=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${t}) \u2014 remediation required`}function Fs(e,r){let t=e.error;if(xe(t)){let s=typeof t.summary=="string"?t.summary.trim():"",i=typeof t.code=="string"?t.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let n=typeof e.message=="string"?e.message.trim():"";if(n)return n;let o=r.trim();return o?_e(o.split(`
7
7
  `).find(Boolean)??o,160):"npm audit failed"}function Hs(e){let r=`${e.stdout}
8
8
  ${e.stderr}`.trim(),t=Us(r);if(!t||!xe(t)){let o=_e(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(xe(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Fs(t,e.stderr)}`};let n=Ts(t);return n?e.exitCode===0&&n.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:n}:{kind:"audit_findings",exitCode:e.exitCode,summary:Bs(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Ks(e){return Ms.test(e)}function Ls(e){return Ns.test(e)}function js(e){let r=Fr({command:e.command,exitCode:e.exitCode});if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"ripgrep finished (exit 0)"};if(e.exitCode===1){let n=(e.stderr||e.interleaved).trim();if(n&&Is.test(n)){let i=_e(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=Br(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=_e(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function Dt(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Ks(e.command)){let i=r.trim()||n.trim()||t.trim();return Hs({exitCode:e.exitCode,stdout:i,stderr:t})}if(Ls(e.command))return js({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=Fr({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=_e(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Ms,Ns,Is,Ot=g(()=>{"use strict";Wt();Ms=/\bnpm\s+audit\b/i,Ns=/\b(rg|ripgrep)\b/i,Is=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as $s,readFileSync as Gs}from"node:fs";function Ys(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Vs(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let t=r.slice(0,-8);return t.length?t:r}return null}function zs(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(e.error=String(r.result||r.api_error_status||"stream result error"))}function Js(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,l=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:l,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Xs(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function Mt(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null};if(!$s(e))return r;let t=Gs(e,"utf8").split(`
9
- `).filter(Boolean);for(let n of t){let o=Ue(n);if(!o)continue;let s=Ys(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(l=>l?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=Vs(a);u&&(r.currentTool=u)}let i=Js(o);i&&Xs(r,Dt({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&zs(r,o)}return r}var Nt=g(()=>{"use strict";Ot();S()});function Qs(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function It(e){let r=(e??"").trim();if(!r)return null;for(let t of qs)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Qs(r)}`};return null}var qs,Ut=g(()=>{"use strict";qs=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"}]});function Tt(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Zs(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ei(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Tt(e.head)}function ri(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Bt(e){if(e.alive||Zs(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Tt(e.headCommit)??ei(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:ri(s,r,t)}}var Ft=g(()=>{"use strict"});function Ce(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ti(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ni(e){if(Ce(e.headCommit)||Ce(e.prUrl)||Ce(e.artifactBundlePath)||Ce(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&Ce(r.head))}function fe(e){return ti(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:ni(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function Ht(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var Je=g(()=>{"use strict"});function Hr(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function Kt(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function Xe(e){let r=e.trim();if(!r)return null;let t=Hr(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=Hr(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=Hr(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=Kt(u);for(let c of n){let d=Kt(c);d>l&&(u=c,l=d)}return u}var Kr=g(()=>{"use strict"});function Lt(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function jt(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function oi(e){return new Set(e.map(r=>jt(Lt(r)??r)).filter(Boolean))}function $t(e,r,t){let n=Lt(e)??e;if(!n)return"unrelated";let o=jt(n);return oi(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Gt=g(()=>{"use strict"});function ge(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function si(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function re(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:ge(e)}function qe(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Yt(e){let r=null;if(typeof e=="string"){let o=Xe(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=re(String(s.prUrl??s.pr_url??"")),a=ge(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:ge(s.mergeCommit??s.merge_commit),reason:ge(s.reason)})}return n}function Vt(e,r){let t=[],n=re(ge(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=re(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function zt(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!si(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?re(ge(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?re(r.targetPrUrls[0]):null):null;if(s){let d=Vt(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let R of d)if(R!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${R} instead of canonical target ${s}`}}let p=Yt(n).find(R=>R.prUrl===s);if(!p||p.outcome!=="merged"&&!(p.reason?.trim()&&(p.outcome==="skipped"||p.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=Yt(n),a=new Map(i.map(d=>[qe(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>qe(re(d)??d)).filter(Boolean)),l=Vt(t,n);if(r.landingOnly)for(let d of l){let m=a.get(qe(d)),f=$t(d,r.targetPrUrls,m);if(!(f==="contract"||f==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let m=qe(re(d)??d),f=a.get(m);if(!f){c.push(m);continue}f.outcome!=="merged"&&!f.reason?.trim()&&c.push(m)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function Jt(e){if(e.blocked)return e.detail??e.reason}var Xt=g(()=>{"use strict";Kr();Gt()});function ui(e){let r=Date.now();if(e.completionBlocker&&!qt(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&ci(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=fe(o);if(s.blocked){let i=Ht(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=zt({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Jt(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(li(e))return{state:"done",reason:"empty abandoned worker record"};let o=It(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Bt({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>ii)return{state:"needs_attention",reason:`no first stream event ${Sr(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>ai?{state:"stale",reason:`no log/event/heartbeat activity for ${Sr(n)}s`}:{state:"ok",reason:"recent activity"}}function qt(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function li(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function ci(e){let r=null;if(typeof e=="string"?r=Xe(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function di(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??Et(t))}function we(e,r={}){let t=Mt(e.stdoutPath),n=me(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=di(e,t.finalResult,n),i=o?!1:z(e.pid),a=Te(e.stdoutPath),u=Te(e.stderrPath),l=Te(e.heartbeatPath),c=be(e.worktreePath),d=Fe(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),m=ct([t.lastEventAt,n.lastHeartbeatAt,Be(e.stdoutPath),Be(e.stderrPath),Be(e.heartbeatPath)]),f=t.error||!i&&!s&&lt(e.stderrPath,10).trim()||void 0,p=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,R=qt(p)?null:p,b=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,y=ui({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:m,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:f,changedFiles:c,gitAncestry:d,completionBlocker:R,landingContract:b,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),w=R||y.state==="blocked"?"blocked":o||y.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:w,attention:y,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:m,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:f,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.orchestrationAudit?.provider??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function te(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Qt(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var ii,ai,ne=g(()=>{"use strict";ze();Nt();Ut();Ft();L();Je();Xt();Kr();S();ii=18e4,ai=6e5});var Zt=g(()=>{"use strict";ne()});var mi,fi,en=g(()=>{"use strict";ht();Ee();xr();Cr();Lr();Ge();ee();Nr();Zt();S();mi=500*1024*1024,fi=4*1024*1024*1024});var Lr=g(()=>{"use strict";en()});import{homedir as gi}from"node:os";import hi from"node:path";var ki,rn=g(()=>{"use strict";ki=hi.join(gi(),".kynver",".env")});var tn=g(()=>{"use strict"});var nn=g(()=>{"use strict";tn()});var on=g(()=>{"use strict"});var sn=g(()=>{"use strict";nn();on()});var an=g(()=>{"use strict"});var un=g(()=>{"use strict";an()});var cn=g(()=>{"use strict";rn();ce();Ee();sn();un()});import{existsSync as vi,mkdirSync as mc,readFileSync as _i,writeFileSync as fc}from"node:fs";import{homedir as xi,totalmem as hc}from"node:os";import jr from"node:path";function Qe(){if(!vi(dn))return{};try{return JSON.parse(_i(dn,"utf8"))}catch{return{}}}var pn,dn,wc,Ec,Ac,Ee=g(()=>{"use strict";_r();ce();S();xr();Cr();Lr();Ge();cn();pn=jr.join(xi(),".kynver"),dn=jr.join(pn,"config.json"),wc=jr.join(pn,"credentials");Ec=500*1024*1024,Ac=4*1024*1024*1024});import{existsSync as mn}from"node:fs";import{homedir as gn}from"node:os";import J from"node:path";function P(e){let r=J.resolve(He(e.trim()));for(;Ci.has(J.basename(r));)r=J.dirname(r);return r}function X(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return P(e);let r=Qe().harnessRoot?.trim();if(r)return P(r);let t=J.join(gn(),".kynver","harness");return mn(t)?t:mn(fn)?fn:t}function j(e){return J.join(P(e),"runs")}function he(e){return J.join(P(e),"worktrees")}function vt(){let e=X();return{harnessRoot:e,runsDir:j(e),worktreesDir:he(e)}}function Or(e,r){return J.join(e,v(r))}var fn,Ci,$=g(()=>{"use strict";Ee();ce();S();fn=J.join(gn(),".openclaw","harness"),Ci=new Set(["runs","worktrees"])});$();import M from"node:path";Je();import tr from"node:path";L();ne();var $r=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function hn(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of $r)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function W(e){return e.filter(r=>{let t=r.trim(),n=t.startsWith("??")?t.slice(2).trim():t.length>3?t.slice(3).trim():t;return!hn(n)})}function oe(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let t of["prUrl","pr_url","pullRequestUrl"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function Ae(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?W(e.changedFiles).length>0:!!(oe(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}S();function Pe(e){return e.status||(e.status=we(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function Gr(e,r){if(e.status)return W(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):be(e.worktreePath);return W(t).length>0}function wi(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function Yr(e,r){if(e.status)return e.status;let t=e.worker,n=typeof t.completionReportedAt=="string"&&t.completionReportedAt.trim().length>0,o=!!(t.status&&["done","exited","blocked","failed","abandoned"].includes(t.status))||n,s=wi(e);if(o&&!z(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):be(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:Fe(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:t.pid,alive:!1,status:t.status??(n?"done":"exited"),attention:{state:n?"done":"stale"},branch:t.branch,worktreePath:e.worktreePath,ownedPaths:t.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:t.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??oe(s)};return e.status=c,c}return Pe(e)}ne();ee();Nr();ne();S();import Ei from"node:path";var Ai=new Set(["running","dispatching","pending","queued","needs_attention"]),se=new Set(["completed","failed","cancelled","done"]);function ie(e){let r=Mr(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=x(Ei.join(Se(e.id),"workers",v(i),"worker.json"),void 0);if(!a)continue;let u=we(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Qt(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function kn(){let e=[];for(let r of Wr()){if(!Ai.has(r.status))continue;let t=ie(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,Dr(r),e.push({runId:r.id,from:n,to:t})}return e}ne();ze();import{existsSync as Ze,mkdirSync as pd,readdirSync as bn,renameSync as md,statSync as Pi}from"node:fs";import ae from"node:path";Ee();_r();ce();ze();$();ee();$();S();import q from"node:path";var ad=`${q.sep}runs${q.sep}runs${q.sep}`;function yn(e){return{workerJsonPath:q.join(e,"worker.json"),stdoutPath:q.join(e,"stdout.jsonl"),stderrPath:q.join(e,"stderr.log"),heartbeatPath:q.join(e,"heartbeat.jsonl"),lastStatusPath:q.join(e,"last-status.json")}}S();var We=900*1e3,Sd=3600*1e3;function Sn(e,r){let t=ae.resolve(e),n=ae.resolve(j(r)),o=ae.relative(n,t);return o!==".."&&!o.startsWith("..")&&!ae.isAbsolute(o)}function Wi(e){if(!Ze(e))return[];try{return bn(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function Di(e){let r=ae.join(e,"workers");if(!Ze(r))return[];try{return bn(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function Rn(e,r,t){if(!Ze(e))return!1;try{let n=r-Pi(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function Oi(e,r=Date.now(),t=We){if(!Ze(e))return!1;let n=yn(e),o=x(n.workerJsonPath,void 0);if(o?.status==="running"&&z(o.pid))return!0;let s=me(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(Rn(n.stdoutPath,r,t)||Rn(n.heartbeatPath,r,t))}function Mi(e,r=Date.now(),t=We){for(let n of Di(e))if(Oi(ae.join(e,"workers",n),r,t))return!0;return!1}function vn(e,r=Date.now()){let t=new Set,n=j(e);for(let o of Wi(n)){let s=ae.join(n,o);Mi(s,r)&&t.add(`${e}\0${o}`)}return t}S();function Vr(e,r=Date.now(),t=We){let n=me(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function er(e,r=Date.now(),t=We){return z(e.pid)?!0:Vr(e,r,t)}function Ni(e,r){return r?r.runTerminalCache.derive(e.run):ie(e.run)}function G(e,r=Date.now()){return er(e.worker,r)}function zr(e,r){return se.has(e.run.status)?!1:Ni(e,r)!==null}function _n(e,r,t=Date.now()){if(G(e,t))return!0;if(se.has(e.run.status)||zr(e,r))return!1;let n=Pe(e);return te(n)?!1:!!G(e,t)}Je();ne();function xn(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(G(e))return!0;let n=r??Pe(e);return!!(!te(n)||Ae(n)||W(n.changedFiles).length>0||fe({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:oe(n.finalResult)}).blocked)}L();S();import{existsSync as wn,mkdirSync as Ii,writeFileSync as Cn}from"node:fs";import rr from"node:path";function En(e,r,t){return rr.join(e,"salvage",v(r),v(t))}function An(e){return wn(rr.join(En(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function Pn(e){let r=En(e.harnessRoot,e.indexed.runId,e.indexed.workerName);Ii(r,{recursive:!0});let t=rr.join(r,"salvage.patch"),n=!1;if(wn(e.indexed.worktreePath)){let s=C(e.indexed.worktreePath,["diff","HEAD"]),i=C(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
9
+ `).filter(Boolean);for(let n of t){let o=Ue(n);if(!o)continue;let s=Ys(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(l=>l?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=Vs(a);u&&(r.currentTool=u)}let i=Js(o);i&&Xs(r,Dt({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&zs(r,o)}return r}var Nt=g(()=>{"use strict";Ot();S()});function Qs(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function It(e){let r=(e??"").trim();if(!r)return null;for(let t of qs)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Qs(r)}`};return null}var qs,Ut=g(()=>{"use strict";qs=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Tt(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Zs(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ei(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Tt(e.head)}function ri(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Bt(e){if(e.alive||Zs(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Tt(e.headCommit)??ei(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:ri(s,r,t)}}var Ft=g(()=>{"use strict"});function Ce(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ti(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ni(e){if(Ce(e.headCommit)||Ce(e.prUrl)||Ce(e.artifactBundlePath)||Ce(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&Ce(r.head))}function fe(e){return ti(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:ni(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function Ht(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var Je=g(()=>{"use strict"});function Hr(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function Kt(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function Xe(e){let r=e.trim();if(!r)return null;let t=Hr(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=Hr(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=Hr(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=Kt(u);for(let c of n){let d=Kt(c);d>l&&(u=c,l=d)}return u}var Kr=g(()=>{"use strict"});function Lt(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function jt(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function oi(e){return new Set(e.map(r=>jt(Lt(r)??r)).filter(Boolean))}function $t(e,r,t){let n=Lt(e)??e;if(!n)return"unrelated";let o=jt(n);return oi(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Gt=g(()=>{"use strict"});function ge(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function si(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function re(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:ge(e)}function qe(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Yt(e){let r=null;if(typeof e=="string"){let o=Xe(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=re(String(s.prUrl??s.pr_url??"")),a=ge(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:ge(s.mergeCommit??s.merge_commit),reason:ge(s.reason)})}return n}function Vt(e,r){let t=[],n=re(ge(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=re(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function zt(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!si(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?re(ge(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?re(r.targetPrUrls[0]):null):null;if(s){let d=Vt(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let R of d)if(R!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${R} instead of canonical target ${s}`}}let p=Yt(n).find(R=>R.prUrl===s);if(!p||p.outcome!=="merged"&&!(p.reason?.trim()&&(p.outcome==="skipped"||p.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=Yt(n),a=new Map(i.map(d=>[qe(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>qe(re(d)??d)).filter(Boolean)),l=Vt(t,n);if(r.landingOnly)for(let d of l){let m=a.get(qe(d)),f=$t(d,r.targetPrUrls,m);if(!(f==="contract"||f==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let m=qe(re(d)??d),f=a.get(m);if(!f){c.push(m);continue}f.outcome!=="merged"&&!f.reason?.trim()&&c.push(m)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function Jt(e){if(e.blocked)return e.detail??e.reason}var Xt=g(()=>{"use strict";Kr();Gt()});function ui(e){let r=Date.now();if(e.completionBlocker&&!qt(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&ci(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=fe(o);if(s.blocked){let i=Ht(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=zt({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Jt(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(li(e))return{state:"done",reason:"empty abandoned worker record"};let o=It(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Bt({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>ii)return{state:"needs_attention",reason:`no first stream event ${Sr(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>ai?{state:"stale",reason:`no log/event/heartbeat activity for ${Sr(n)}s`}:{state:"ok",reason:"recent activity"}}function qt(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function li(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function ci(e){let r=null;if(typeof e=="string"?r=Xe(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function di(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??Et(t))}function we(e,r={}){let t=Mt(e.stdoutPath),n=me(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=di(e,t.finalResult,n),i=o?!1:z(e.pid),a=Te(e.stdoutPath),u=Te(e.stderrPath),l=Te(e.heartbeatPath),c=be(e.worktreePath),d=Fe(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),m=ct([t.lastEventAt,n.lastHeartbeatAt,Be(e.stdoutPath),Be(e.stderrPath),Be(e.heartbeatPath)]),f=t.error||!i&&!s&&lt(e.stderrPath,10).trim()||void 0,p=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,R=qt(p)?null:p,b=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,y=ui({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:m,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:f,changedFiles:c,gitAncestry:d,completionBlocker:R,landingContract:b,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),w=R||y.state==="blocked"?"blocked":o||y.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:w,attention:y,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:m,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:f,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function te(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Qt(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var ii,ai,ne=g(()=>{"use strict";ze();Nt();Ut();Ft();L();Je();Xt();Kr();S();ii=18e4,ai=6e5});var Zt=g(()=>{"use strict";ne()});var mi,fi,en=g(()=>{"use strict";ht();Ee();xr();Cr();Lr();Ge();ee();Nr();Zt();S();mi=500*1024*1024,fi=4*1024*1024*1024});var Lr=g(()=>{"use strict";en()});import{homedir as gi}from"node:os";import hi from"node:path";var ki,rn=g(()=>{"use strict";ki=hi.join(gi(),".kynver",".env")});var tn=g(()=>{"use strict"});var nn=g(()=>{"use strict";tn()});var on=g(()=>{"use strict"});var sn=g(()=>{"use strict";nn();on()});var an=g(()=>{"use strict"});var un=g(()=>{"use strict";an()});var cn=g(()=>{"use strict";rn();ce();Ee();sn();un()});import{existsSync as vi,mkdirSync as mc,readFileSync as _i,writeFileSync as fc}from"node:fs";import{homedir as xi,totalmem as hc}from"node:os";import jr from"node:path";function Qe(){if(!vi(dn))return{};try{return JSON.parse(_i(dn,"utf8"))}catch{return{}}}var pn,dn,wc,Ec,Ac,Ee=g(()=>{"use strict";_r();ce();S();xr();Cr();Lr();Ge();cn();pn=jr.join(xi(),".kynver"),dn=jr.join(pn,"config.json"),wc=jr.join(pn,"credentials");Ec=500*1024*1024,Ac=4*1024*1024*1024});import{existsSync as mn}from"node:fs";import{homedir as gn}from"node:os";import J from"node:path";function P(e){let r=J.resolve(He(e.trim()));for(;Ci.has(J.basename(r));)r=J.dirname(r);return r}function X(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return P(e);let r=Qe().harnessRoot?.trim();if(r)return P(r);let t=J.join(gn(),".kynver","harness");return mn(t)?t:mn(fn)?fn:t}function j(e){return J.join(P(e),"runs")}function he(e){return J.join(P(e),"worktrees")}function vt(){let e=X();return{harnessRoot:e,runsDir:j(e),worktreesDir:he(e)}}function Or(e,r){return J.join(e,v(r))}var fn,Ci,$=g(()=>{"use strict";Ee();ce();S();fn=J.join(gn(),".openclaw","harness"),Ci=new Set(["runs","worktrees"])});$();import M from"node:path";Je();import tr from"node:path";L();ne();var $r=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function hn(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of $r)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function W(e){return e.filter(r=>{let t=r.trim(),n=t.startsWith("??")?t.slice(2).trim():t.length>3?t.slice(3).trim():t;return!hn(n)})}function oe(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let t of["prUrl","pr_url","pullRequestUrl"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function Ae(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?W(e.changedFiles).length>0:!!(oe(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}S();function Pe(e){return e.status||(e.status=we(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function Gr(e,r){if(e.status)return W(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):be(e.worktreePath);return W(t).length>0}function wi(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function Yr(e,r){if(e.status)return e.status;let t=e.worker,n=typeof t.completionReportedAt=="string"&&t.completionReportedAt.trim().length>0,o=!!(t.status&&["done","exited","blocked","failed","abandoned"].includes(t.status))||n,s=wi(e);if(o&&!z(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):be(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:Fe(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:t.pid,alive:!1,status:t.status??(n?"done":"exited"),attention:{state:n?"done":"stale"},branch:t.branch,worktreePath:e.worktreePath,ownedPaths:t.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:t.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??oe(s)};return e.status=c,c}return Pe(e)}ne();ee();Nr();ne();S();import Ei from"node:path";var Ai=new Set(["running","dispatching","pending","queued","needs_attention"]),se=new Set(["completed","failed","cancelled","done"]);function ie(e){let r=Mr(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=x(Ei.join(Se(e.id),"workers",v(i),"worker.json"),void 0);if(!a)continue;let u=we(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Qt(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function kn(){let e=[];for(let r of Wr()){if(!Ai.has(r.status))continue;let t=ie(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,Dr(r),e.push({runId:r.id,from:n,to:t})}return e}ne();ze();import{existsSync as Ze,mkdirSync as pd,readdirSync as bn,renameSync as md,statSync as Pi}from"node:fs";import ae from"node:path";Ee();_r();ce();ze();$();ee();$();S();import q from"node:path";var ad=`${q.sep}runs${q.sep}runs${q.sep}`;function yn(e){return{workerJsonPath:q.join(e,"worker.json"),stdoutPath:q.join(e,"stdout.jsonl"),stderrPath:q.join(e,"stderr.log"),heartbeatPath:q.join(e,"heartbeat.jsonl"),lastStatusPath:q.join(e,"last-status.json")}}S();var We=900*1e3,Sd=3600*1e3;function Sn(e,r){let t=ae.resolve(e),n=ae.resolve(j(r)),o=ae.relative(n,t);return o!==".."&&!o.startsWith("..")&&!ae.isAbsolute(o)}function Wi(e){if(!Ze(e))return[];try{return bn(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function Di(e){let r=ae.join(e,"workers");if(!Ze(r))return[];try{return bn(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function Rn(e,r,t){if(!Ze(e))return!1;try{let n=r-Pi(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function Oi(e,r=Date.now(),t=We){if(!Ze(e))return!1;let n=yn(e),o=x(n.workerJsonPath,void 0);if(o?.status==="running"&&z(o.pid))return!0;let s=me(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(Rn(n.stdoutPath,r,t)||Rn(n.heartbeatPath,r,t))}function Mi(e,r=Date.now(),t=We){for(let n of Di(e))if(Oi(ae.join(e,"workers",n),r,t))return!0;return!1}function vn(e,r=Date.now()){let t=new Set,n=j(e);for(let o of Wi(n)){let s=ae.join(n,o);Mi(s,r)&&t.add(`${e}\0${o}`)}return t}S();function Vr(e,r=Date.now(),t=We){let n=me(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function er(e,r=Date.now(),t=We){return z(e.pid)?!0:Vr(e,r,t)}function Ni(e,r){return r?r.runTerminalCache.derive(e.run):ie(e.run)}function G(e,r=Date.now()){return er(e.worker,r)}function zr(e,r){return se.has(e.run.status)?!1:Ni(e,r)!==null}function _n(e,r,t=Date.now()){if(G(e,t))return!0;if(se.has(e.run.status)||zr(e,r))return!1;let n=Pe(e);return te(n)?!1:!!G(e,t)}Je();ne();function xn(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(G(e))return!0;let n=r??Pe(e);return!!(!te(n)||Ae(n)||W(n.changedFiles).length>0||fe({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:oe(n.finalResult)}).blocked)}L();S();import{existsSync as wn,mkdirSync as Ii,writeFileSync as Cn}from"node:fs";import rr from"node:path";function En(e,r,t){return rr.join(e,"salvage",v(r),v(t))}function An(e){return wn(rr.join(En(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function Pn(e){let r=En(e.harnessRoot,e.indexed.runId,e.indexed.workerName);Ii(r,{recursive:!0});let t=rr.join(r,"salvage.patch"),n=!1;if(wn(e.indexed.worktreePath)){let s=C(e.indexed.worktreePath,["diff","HEAD"]),i=C(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
10
10
  `);a.trim()&&(Cn(t,a.endsWith(`
11
11
  `)?a:`${a}
12
12
  `),n=!0)}let o={capturedAt:new Date(e.now??Date.now()).toISOString(),skipReason:e.skipReason,runId:e.indexed.runId,workerName:e.indexed.workerName,worktreePath:e.indexed.worktreePath,taskId:e.indexed.worker.taskId,agentOsId:e.indexed.worker.agentOsId,branch:e.indexed.worker.branch,completionBlocker:e.indexed.worker.completionBlocker,finalResult:e.status.finalResult,changedFiles:e.status.changedFiles,gitAncestry:e.status.gitAncestry,prUrl:e.status.prUrl??null,...n?{patchPath:t}:{}};return Cn(rr.join(r,"evidence.json"),`${JSON.stringify(o,null,2)}
@@ -1 +1 @@
1
- var r=(e,n,t)=>()=>{if(t)throw t[0];try{return e&&(n=e(e=0)),n}catch(o){throw t=[o],o}};function w(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var i=r(()=>{"use strict"});var ce,Ye,O=r(()=>{"use strict";ce=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Ye=new Set(ce)});import{spawnSync as de}from"node:child_process";function P(e,n){try{let t=de("git",n,w({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}var f=r(()=>{"use strict";i();O()});import{homedir as W}from"node:os";import U from"node:path";function me(e){return e==="~"?W():e.startsWith("~/")||e.startsWith("~\\")?U.join(W(),e.slice(2)):e}function c(e){return U.resolve(me(e))}var l=r(()=>{"use strict"});import{existsSync as g,readFileSync as T}from"node:fs";import{homedir as fe}from"node:os";import a from"node:path";import{fileURLToPath as pe}from"node:url";function ye(e){let n=a.join(e,"package.json");if(!g(n))return null;try{let t=JSON.parse(T(n,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function he(e){return ye(e)==="kynver"}function D(e){let n=a.resolve(e);if(!g(n))return null;let t=P(n,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let o=t.stdout.trim();return o.length?a.resolve(o):null}function be(e=import.meta.url){let n=a.dirname(pe(e));for(let t=0;t<8;t+=1){let o=a.join(n,"package.json");if(g(o))try{if(JSON.parse(T(o,"utf8")).name==="@kynver-app/runtime")return n}catch{}let s=a.dirname(n);if(s===n)break;n=s}return null}function p(e,n,t,o){if(!t)return;let s=a.resolve(t);e.has(s)||he(s)&&(e.add(s),n.push({repo:s,source:o}))}function ke(e){let n=e?.cwd??process.cwd(),t=new Set,o=[];p(t,o,D(n),"cwd_git");let s=be(e?.runtimeModuleUrl??import.meta.url);s&&p(t,o,D(s),"runtime_checkout");let u=fe();for(let ue of ge)p(t,o,c(a.join(u,ue)),"well_known_path");return o}function y(e){return ke(e)[0]??null}var ge,h=r(()=>{"use strict";f();l();ge=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});var b=r(()=>{"use strict"});var k=r(()=>{"use strict"});var B=r(()=>{"use strict"});var fr,pr,R=r(()=>{"use strict";fr=25*1024*1024*1024,pr=12*1024*1024*1024});var kr,Rr,N=r(()=>{"use strict";R();kr=5*1024*1024*1024,Rr=10*1024*1024*1024});var Cr,Ar,S=r(()=>{"use strict";N();R();Cr=30*1024*1024*1024,Ar=15*1024*1024*1024});import{homedir as Re}from"node:os";import Se from"node:path";var Tr,M=r(()=>{"use strict";d();l();i();Tr=Se.join(Re(),".openclaw","harness")});var _=r(()=>{"use strict";M();i()});var K=r(()=>{"use strict";_();i()});var I=r(()=>{"use strict"});var F=r(()=>{"use strict";I();i()});var H=r(()=>{"use strict"});var L=r(()=>{"use strict";H()});var $=r(()=>{"use strict";L();i()});var j=r(()=>{"use strict"});var Y=r(()=>{"use strict"});var G=r(()=>{"use strict"});var v=r(()=>{"use strict"});var V=r(()=>{"use strict"});var z=r(()=>{"use strict";v();V()});var J=r(()=>{"use strict";F();$();j();Y();f();G();z();v();i()});var X=r(()=>{"use strict";J()});var we,Oe,q=r(()=>{"use strict";B();d();b();k();E();S();_();K();X();i();we=500*1024*1024,Oe=4*1024*1024*1024});var E=r(()=>{"use strict";q()});import{homedir as Pe}from"node:os";import We from"node:path";var Ue,Q=r(()=>{"use strict";Ue=We.join(Pe(),".kynver",".env")});var Z=r(()=>{"use strict"});var ee=r(()=>{"use strict";Z()});var re=r(()=>{"use strict"});var te=r(()=>{"use strict";ee();re()});var ne=r(()=>{"use strict"});var oe=r(()=>{"use strict";ne()});var ie=r(()=>{"use strict";Q();l();d();te();oe()});import{existsSync as Ne,mkdirSync as eo,readFileSync as Me,writeFileSync as ro}from"node:fs";import{homedir as Ke,totalmem as no}from"node:os";import C from"node:path";function m(){if(!Ne(ae))return{};try{return JSON.parse(Me(ae,"utf8"))}catch{return{}}}var le,ae,po,go,yo,d=r(()=>{"use strict";h();l();i();b();k();E();S();ie();le=C.join(Ke(),".kynver"),ae=C.join(le,"config.json"),po=C.join(le,"credentials");go=500*1024*1024,yo=4*1024*1024*1024});d();h();l();import Ie from"node:path";function Fe(e){return Ie.resolve(c(e.trim()))}function A(e,n,t){let o=e?.trim();return o?{repo:Fe(o),source:n,persistedInConfig:t}:null}function He(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function Le(e={}){let n=e.env??process.env,t=e.config??m(),o=A(t.defaultRepo,"config",!0);if(o)return o;let s=A(n.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(s)return s;let u=A(n.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return u||He(y({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}export{Le as resolveDefaultRepo};
1
+ var r=(e,n,t)=>()=>{if(t)throw t[0];try{return e&&(n=e(e=0)),n}catch(o){throw t=[o],o}};function w(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var i=r(()=>{"use strict"});var ce,Ye,O=r(()=>{"use strict";ce=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Ye=new Set(ce)});import{spawnSync as de}from"node:child_process";function P(e,n){try{let t=de("git",n,w({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}var f=r(()=>{"use strict";i();O()});import{homedir as W}from"node:os";import U from"node:path";function me(e){return e==="~"?W():e.startsWith("~/")||e.startsWith("~\\")?U.join(W(),e.slice(2)):e}function c(e){return U.resolve(me(e))}var l=r(()=>{"use strict"});import{existsSync as g,readFileSync as T}from"node:fs";import{homedir as fe}from"node:os";import a from"node:path";import{fileURLToPath as pe}from"node:url";function ye(e){let n=a.join(e,"package.json");if(!g(n))return null;try{let t=JSON.parse(T(n,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function he(e){return ye(e)==="kynver"}function D(e){let n=a.resolve(e);if(!g(n))return null;let t=P(n,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let o=t.stdout.trim();return o.length?a.resolve(o):null}function be(e=import.meta.url){let n=a.dirname(pe(e));for(let t=0;t<8;t+=1){let o=a.join(n,"package.json");if(g(o))try{if(JSON.parse(T(o,"utf8")).name==="@kynver-app/runtime")return n}catch{}let s=a.dirname(n);if(s===n)break;n=s}return null}function p(e,n,t,o){if(!t)return;let s=a.resolve(t);e.has(s)||he(s)&&(e.add(s),n.push({repo:s,source:o}))}function ke(e){let n=e?.cwd??process.cwd(),t=new Set,o=[];p(t,o,D(n),"cwd_git");let s=be(e?.runtimeModuleUrl??import.meta.url);s&&p(t,o,D(s),"runtime_checkout");let u=fe();for(let ue of ge)p(t,o,c(a.join(u,ue)),"well_known_path");return o}function y(e){return ke(e)[0]??null}var ge,h=r(()=>{"use strict";f();l();ge=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});var b=r(()=>{"use strict"});var k=r(()=>{"use strict"});var B=r(()=>{"use strict"});var fr,pr,R=r(()=>{"use strict";fr=25*1024*1024*1024,pr=12*1024*1024*1024});var kr,Rr,N=r(()=>{"use strict";R();kr=5*1024*1024*1024,Rr=10*1024*1024*1024});var Cr,Ar,S=r(()=>{"use strict";N();R();Cr=30*1024*1024*1024,Ar=15*1024*1024*1024});import{homedir as Re}from"node:os";import Se from"node:path";var Tr,M=r(()=>{"use strict";d();l();i();Tr=Se.join(Re(),".openclaw","harness")});var _=r(()=>{"use strict";M();i()});var K=r(()=>{"use strict";_();i()});var I=r(()=>{"use strict"});var F=r(()=>{"use strict";I();i()});var H=r(()=>{"use strict"});var L=r(()=>{"use strict";H()});var $=r(()=>{"use strict";L();i()});var j=r(()=>{"use strict"});var Y=r(()=>{"use strict"});var G=r(()=>{"use strict"});var v=r(()=>{"use strict"});var V=r(()=>{"use strict"});var z=r(()=>{"use strict";v();V()});var J=r(()=>{"use strict";F();$();j();Y();f();G();z();v();i()});var q=r(()=>{"use strict";J()});var we,Oe,X=r(()=>{"use strict";B();d();b();k();E();S();_();K();q();i();we=500*1024*1024,Oe=4*1024*1024*1024});var E=r(()=>{"use strict";X()});import{homedir as Pe}from"node:os";import We from"node:path";var Ue,Q=r(()=>{"use strict";Ue=We.join(Pe(),".kynver",".env")});var Z=r(()=>{"use strict"});var ee=r(()=>{"use strict";Z()});var re=r(()=>{"use strict"});var te=r(()=>{"use strict";ee();re()});var ne=r(()=>{"use strict"});var oe=r(()=>{"use strict";ne()});var ie=r(()=>{"use strict";Q();l();d();te();oe()});import{existsSync as Ne,mkdirSync as eo,readFileSync as Me,writeFileSync as ro}from"node:fs";import{homedir as Ke,totalmem as no}from"node:os";import C from"node:path";function m(){if(!Ne(ae))return{};try{return JSON.parse(Me(ae,"utf8"))}catch{return{}}}var le,ae,po,go,yo,d=r(()=>{"use strict";h();l();i();b();k();E();S();ie();le=C.join(Ke(),".kynver"),ae=C.join(le,"config.json"),po=C.join(le,"credentials");go=500*1024*1024,yo=4*1024*1024*1024});d();h();l();import Ie from"node:path";function Fe(e){return Ie.resolve(c(e.trim()))}function A(e,n,t){let o=e?.trim();return o?{repo:Fe(o),source:n,persistedInConfig:t}:null}function He(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function Le(e={}){let n=e.env??process.env,t=e.config??m(),o=A(t.defaultRepo,"config",!0);if(o)return o;let s=A(n.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(s)return s;let u=A(n.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return u||He(y({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}export{Le as resolveDefaultRepo};
@@ -1,2 +1,2 @@
1
- export { formatHarnessToolReadable, joinHarnessNotice } from "../harness-notice/index.js";
1
+ export { extractWorkerStartRecordFromText, formatHarnessToolReadable, formatWorkerStartNotice, joinHarnessNotice, } from "../harness-notice/index.js";
2
2
  export type { HarnessReadableNotice, HarnessToolFormatContext } from "../harness-notice/index.js";
@@ -1,15 +1,16 @@
1
- function C(e){let o=e.trim();if(!o.startsWith("{")&&!o.startsWith("["))return null;try{return JSON.parse(o)}catch{return null}}function s(e,o=2400){if(e==null)return;let i=(typeof e=="string"?e:JSON.stringify(e,null,2)).trim();if(i)return i.length<=o?i:`${i.slice(0,o-1).trimEnd()}\u2026`}function g(e){let o=e.trim();if(!o)return null;let r=C(o);if(r!==null)return r;for(let i of o.split(`
2
- `)){let u=C(i);if(u!==null)return u}return null}function $(e){let o=[];switch(o.push(`Background auto-complete \xB7 ${e.runId} / ${e.worker}`),e.outcome){case"completed":o.push("Outcome: harness completion posted to AgentOS successfully."),o.push("AgentOS task should close or advance to review per completion routing."),o.push("Next: check Command Center \u2014 no manual complete needed unless the board still shows running.");break;case"blocked":o.push(`Outcome: worker finished but completion was blocked${e.httpStatus?` (HTTP ${e.httpStatus})`:""}.`),e.reason&&o.push(`Blocker: ${e.reason}`),o.push("Next: fix the blocker (auth, landing gate, dirty worktree) and replay completion from Command Center.");break;case"timed_out":o.push(`Outcome: monitor gave up waiting \u2014 ${e.reason??"worker did not finish in time"}.`),o.push("Next: inspect the worker process/logs; stop or unblock the worker, then retry auto-complete.");break;case"missing_link":o.push(`Outcome: cannot complete \u2014 ${e.reason??"worker missing agentOsId/taskId"}.`),o.push("Next: re-dispatch with board linkage or run `kynver worker complete` with --agent-os-id.");break;default:o.push(`Outcome: ${e.outcome}`)}return{primary:o.join(`
3
- `),diagnostic:s(e)}}function y(e){let o=[],r=typeof e.monitorId=="string"?e.monitorId:void 0;if(o.push(r?`Harness monitor tick \xB7 ${e.runId} (${r})`:`Harness monitor tick \xB7 ${e.runId}`),!e.workers.length)return o.push("No workers in scope for this poll."),{primary:o.join(`
4
- `),diagnostic:s(e)};for(let t of e.workers){let n=t.autoComplete.eligible?"eligible for auto-complete":"not auto-completing",m=t.autoComplete.blockers.length>0?` (${t.autoComplete.blockers.slice(0,2).join("; ")})`:"";o.push(`\u2022 ${t.worker}: ${t.workerStatus}, ${t.health}${t.healthReason?` \u2014 ${t.healthReason}`:""}; ${n}${m}`),t.taskStatus&&o.push(` Board task: ${t.taskStatus}${t.leaseOwner?` (lease: ${t.leaseOwner})`:""}`)}let i=e.autoCompleted?.filter(t=>t.outcome==="completed"&&t.ok)??[],u=e.autoCompleted?.filter(t=>!t.ok&&t.outcome!=="skipped")??[];i.length&&o.push(`Auto-completed: ${i.map(t=>t.worker).join(", ")} \u2014 AgentOS completion should be posted.`),u.length&&o.push(`Auto-complete blocked: ${u.map(t=>`${t.worker}${t.reason?` (${t.reason})`:""}`).join("; ")}`),e.leaseRenewal?.failed?.length&&o.push(`Lease renew failed for: ${e.leaseRenewal.failed.map(t=>t.worker).join(", ")}`);let p=e.workers.length>0&&e.workers.every(t=>t.autoComplete.terminalVerified)&&(e.autoCompleted?.every(t=>t.ok||t.outcome==="skipped")??!0);return o.push(p?"Next: monitor loop should stop \u2014 all workers terminal and handled.":"Next: monitor will poll again until workers are terminal-verified or max time elapses."),{primary:o.join(`
5
- `),diagnostic:s(e)}}function b(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function c(e){return typeof e=="string"&&e.trim()?e.trim():null}function N(e){let o=b(e);if(!o)return{primary:"Harness worker complete finished with no parseable result.",diagnostic:s(e)};let r=c(o.worker)??"worker",i=c(o.runId),u=c(o.status)==="skipped",p=typeof o.httpStatus=="number"?o.httpStatus:null,t=b(o.response),n=[];if(n.push(`Harness worker complete \xB7 ${r}${i?` (${i})`:""}`),u)return n.push(`Outcome: skipped \u2014 ${c(o.reason)??"worker not finished yet"}.`),n.push("Next: wait for the worker to exit or post a finalResult, then retry complete."),{primary:n.join(`
6
- `),diagnostic:s(e)};let m=c(t?.outcome),f=b(t?.task),d=c(f?.status),h=c(f?.prUrl)??c(t?.prUrl);if(p&&p>=200&&p<300)n.push("Outcome: completion callback accepted by AgentOS."),m&&n.push(`Routing: ${m.replace(/_/g," ")}`),d&&n.push(`AgentOS task status: ${d}`),h&&n.push(`PR: ${h}`),n.push("Next: check Command Center for review scheduling or blockers.");else{n.push(`Outcome: completion failed${p!=null?` (HTTP ${p})`:""}.`);let k=c(t?.detail)??c(t?.error);k&&n.push(`Blocker: ${k}`),n.push("Next: fix the reported blocker and replay completion from the board.")}return{primary:n.join(`
7
- `),diagnostic:s(e)}}function a(e){return typeof e=="string"&&e.trim()?e.trim():null}function R(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function O(e){let o=R(e);return o?a(o.prUrl)??a(o.pr):null}function w(e){let o=R(e);if(!o)return{primary:"Harness worker status unavailable.",diagnostic:s(e)};let r=a(o.worker)??a(o.name)??"worker",i=a(o.runId),u=a(o.status)??"unknown",p=o.alive===!0,t=R(o.attention),n=a(t?.state)??a(o.attentionState),m=a(t?.reason)??a(o.attentionReason),f=a(o.taskId),d=a(o.prUrl)??O(o.finalResult),h=a(o.branch),k=a(o.headCommit),l=[];return l.push(`Harness worker ${r}${i?` (${i})`:""}`),l.push(`Process: ${p?"running":"stopped"} \xB7 harness status: ${u}`),n&&l.push(m?`Attention: ${n} \u2014 ${m}`:`Attention: ${n}`),f&&l.push(`AgentOS task: ${f}`),d&&l.push(`PR: ${d}`),h&&l.push(`Branch: ${h}`),k&&l.push(`Commit: ${k.slice(0,12)}`),u==="done"||u==="exited"?l.push(d?"Outcome: worker finished \u2014 open the PR or check Command Center for review routing.":"Outcome: worker finished \u2014 check Command Center for task status and next action."):n==="blocked"||n==="needs_attention"?l.push("Next: resolve the blocker on the board or wait for the monitor to auto-complete when terminal."):p&&l.push("Next: wait for completion or poll again; background monitor will auto-complete when eligible."),{primary:l.join(`
8
- `),diagnostic:s(e)}}var S="\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Diagnostic (JSON) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500";function H(e){return e.diagnostic?.trim()?`${e.primary}
1
+ function w(e){let r=e.trim();if(!r.startsWith("{")&&!r.startsWith("["))return null;try{return JSON.parse(r)}catch{return null}}function s(e,r=2400){if(e==null)return;let n=(typeof e=="string"?e:JSON.stringify(e,null,2)).trim();if(n)return n.length<=r?n:`${n.slice(0,r-1).trimEnd()}\u2026`}function $(e){let r=e.trim();if(!r)return null;let o=w(r);if(o!==null)return o;for(let n of r.split(`
2
+ `)){let a=w(n);if(a!==null)return a}return null}function N(e){let r=[];switch(r.push(`Background auto-complete \xB7 ${e.runId} / ${e.worker}`),e.outcome){case"completed":r.push("Outcome: harness completion posted to AgentOS successfully."),r.push("AgentOS task should close or advance to review per completion routing."),r.push("Next: check Command Center \u2014 no manual complete needed unless the board still shows running.");break;case"blocked":r.push(`Outcome: worker finished but completion was blocked${e.httpStatus?` (HTTP ${e.httpStatus})`:""}.`),e.reason&&r.push(`Blocker: ${e.reason}`),r.push("Next: fix the blocker (auth, landing gate, dirty worktree) and replay completion from Command Center.");break;case"timed_out":r.push(`Outcome: monitor gave up waiting \u2014 ${e.reason??"worker did not finish in time"}.`),r.push("Next: inspect the worker process/logs; stop or unblock the worker, then retry auto-complete.");break;case"missing_link":r.push(`Outcome: cannot complete \u2014 ${e.reason??"worker missing agentOsId/taskId"}.`),r.push("Next: re-dispatch with board linkage or run `kynver worker complete` with --agent-os-id.");break;default:r.push(`Outcome: ${e.outcome}`)}return{primary:r.join(`
3
+ `),diagnostic:s(e)}}function S(e){let r=[],o=typeof e.monitorId=="string"?e.monitorId:void 0;if(r.push(o?`Harness monitor tick \xB7 ${e.runId} (${o})`:`Harness monitor tick \xB7 ${e.runId}`),!e.workers.length)return r.push("No workers in scope for this poll."),{primary:r.join(`
4
+ `),diagnostic:s(e)};for(let t of e.workers){let i=t.autoComplete.eligible?"eligible for auto-complete":"not auto-completing",m=t.autoComplete.blockers.length>0?` (${t.autoComplete.blockers.slice(0,2).join("; ")})`:"";r.push(`\u2022 ${t.worker}: ${t.workerStatus}, ${t.health}${t.healthReason?` \u2014 ${t.healthReason}`:""}; ${i}${m}`),t.taskStatus&&r.push(` Board task: ${t.taskStatus}${t.leaseOwner?` (lease: ${t.leaseOwner})`:""}`)}let n=e.autoCompleted?.filter(t=>t.outcome==="completed"&&t.ok)??[],a=e.autoCompleted?.filter(t=>!t.ok&&t.outcome!=="skipped")??[];n.length&&r.push(`Auto-completed: ${n.map(t=>t.worker).join(", ")} \u2014 AgentOS completion should be posted.`),a.length&&r.push(`Auto-complete blocked: ${a.map(t=>`${t.worker}${t.reason?` (${t.reason})`:""}`).join("; ")}`),e.leaseRenewal?.failed?.length&&r.push(`Lease renew failed for: ${e.leaseRenewal.failed.map(t=>t.worker).join(", ")}`);let u=e.workers.length>0&&e.workers.every(t=>t.autoComplete.terminalVerified)&&(e.autoCompleted?.every(t=>t.ok||t.outcome==="skipped")??!0);return r.push(u?"Next: monitor loop should stop \u2014 all workers terminal and handled.":"Next: monitor will poll again until workers are terminal-verified or max time elapses."),{primary:r.join(`
5
+ `),diagnostic:s(e)}}function H(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function p(e){return typeof e=="string"&&e.trim()?e.trim():null}function C(e){let r=H(e);if(!r)return{primary:"Harness worker complete finished with no parseable result.",diagnostic:s(e)};let o=p(r.worker)??"worker",n=p(r.runId),a=p(r.status)==="skipped",u=typeof r.httpStatus=="number"?r.httpStatus:null,t=H(r.response),i=[];if(i.push(`Harness worker complete \xB7 ${o}${n?` (${n})`:""}`),a)return i.push(`Outcome: skipped \u2014 ${p(r.reason)??"worker not finished yet"}.`),i.push("Next: wait for the worker to exit or post a finalResult, then retry complete."),{primary:i.join(`
6
+ `),diagnostic:s(e)};let m=p(t?.outcome),k=H(t?.task),d=p(k?.status),h=p(k?.prUrl)??p(t?.prUrl);if(u&&u>=200&&u<300)i.push("Outcome: completion callback accepted by AgentOS."),m&&i.push(`Routing: ${m.replace(/_/g," ")}`),d&&i.push(`AgentOS task status: ${d}`),h&&i.push(`PR: ${h}`),i.push("Next: check Command Center for review scheduling or blockers.");else{i.push(`Outcome: completion failed${u!=null?` (HTTP ${u})`:""}.`);let g=p(t?.detail)??p(t?.error);g&&i.push(`Blocker: ${g}`),i.push("Next: fix the reported blocker and replay completion from the board.")}return{primary:i.join(`
7
+ `),diagnostic:s(e)}}function y(e){return typeof e=="string"&&e.trim()?e.trim():null}function j(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function f(e){let r=j(e);if(!r)return!1;let o=y(r.runId),n=y(r.worker);return!o||!n?!1:typeof r.pid=="number"||typeof r.worktreePath=="string"||typeof r.workerDir=="string"}function O(e){let r=e.trim();if(!r)return null;let o=w(r);if(o!==null&&f(o))return o;let n=/\{[\s\S]*?\}/g,a;for(;(a=n.exec(r))!==null;){let u=w(a[0]);if(u!==null&&f(u))return u}return null}function b(e){let r=j(e);if(!r||!f(r))return{primary:"Harness worker start completed on the runner.",diagnostic:s(e)};let o=y(r.worker)??"worker",n=y(r.runId),a=y(r.branch),u=typeof r.pid=="number"?r.pid:null,t=[];return t.push(`Harness worker ${o}${n?` started on run ${n}`:" started"}.`),typeof u=="number"&&t.push(`PID: ${u}`),a&&t.push(`Branch: ${a}`),t.push("The worker is running in the background on the runner host."),{primary:t.join(`
8
+ `),diagnostic:s(e)}}function l(e){return typeof e=="string"&&e.trim()?e.trim():null}function A(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function T(e){let r=A(e);return r?l(r.prUrl)??l(r.pr):null}function R(e){let r=A(e);if(!r)return{primary:"Harness worker status unavailable.",diagnostic:s(e)};let o=l(r.worker)??l(r.name)??"worker",n=l(r.runId),a=l(r.status)??"unknown",u=r.alive===!0,t=A(r.attention),i=l(t?.state)??l(r.attentionState),m=l(t?.reason)??l(r.attentionReason),k=l(r.taskId),d=l(r.prUrl)??T(r.finalResult),h=l(r.branch),g=l(r.headCommit),c=[];return c.push(`Harness worker ${o}${n?` (${n})`:""}`),c.push(`Process: ${u?"running":"stopped"} \xB7 harness status: ${a}`),i&&c.push(m?`Attention: ${i} \u2014 ${m}`:`Attention: ${i}`),k&&c.push(`AgentOS task: ${k}`),d&&c.push(`PR: ${d}`),h&&c.push(`Branch: ${h}`),g&&c.push(`Commit: ${g.slice(0,12)}`),a==="done"||a==="exited"?c.push(d?"Outcome: worker finished \u2014 open the PR or check Command Center for review routing.":"Outcome: worker finished \u2014 check Command Center for task status and next action."):i==="blocked"||i==="needs_attention"?c.push("Next: resolve the blocker on the board or wait for the monitor to auto-complete when terminal."):u&&c.push("Next: wait for completion or poll again; background monitor will auto-complete when eligible."),{primary:c.join(`
9
+ `),diagnostic:s(e)}}var W="\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Diagnostic (JSON) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500";function I(e){return e.diagnostic?.trim()?`${e.primary}
9
10
 
10
- ${S}
11
- ${e.diagnostic}`:e.primary}function j(e){let o=[`Harness ${e.scope} ${e.action} failed.`];e.timedOut?o.push("Reason: command timed out on the runner host."):e.error?o.push(`Reason: ${e.error}`):e.exitCode!=null&&o.push(`Exit code: ${e.exitCode}`);let r=e.stderr.trim();r&&o.push(`Stderr: ${r.split(`
12
- `).slice(-3).join(" ")}`),o.push("Next: retry on the runner host or inspect harness logs.");let i=g(e.stdout);return{primary:o.join(`
13
- `),diagnostic:s(i??{stdout:e.stdout,stderr:e.stderr})}}function A(e){if(!e.ok)return j(e);let o=g(e.stdout);if(o===null){let r=e.stdout.trim()||e.stderr.trim()||"(no output)";return{primary:`Harness ${e.scope} ${e.action} finished.
14
- ${r.slice(0,800)}`,diagnostic:s({stdout:e.stdout,stderr:e.stderr})}}if(e.scope==="worker"&&e.action==="status")return w(o);if(e.scope==="worker"&&e.action==="complete")return N(o);if(e.scope==="monitor"&&(e.action==="tick"||e.action==="run-loop"))return y(o);if(e.scope==="monitor"&&e.action==="auto-complete"){let r=o;if(r.outcome&&r.worker&&r.runId)return $(o);if(Array.isArray(r.blockers))return{primary:[`Monitor auto-complete blocked \xB7 ${r.runId??"run"} / ${r.worker??"worker"}`,`Blockers: ${r.blockers.join("; ")}`,"Next: resolve blockers on the runner, then retry auto-complete."].join(`
15
- `),diagnostic:s(o)}}if(e.scope==="run"&&e.action==="status"){let r=o.workers;return Array.isArray(r)&&r.length===1?w(r[0]):{primary:`Harness run status \xB7 ${o.runId??"run"} (${Array.isArray(r)?r.length:0} workers).`,diagnostic:s(o)}}return{primary:`Harness ${e.scope} ${e.action} completed successfully on the runner.`,diagnostic:s(o)}}export{A as formatHarnessToolReadable,H as joinHarnessNotice};
11
+ ${W}
12
+ ${e.diagnostic}`:e.primary}function J(e){let r=[`Harness ${e.scope} ${e.action} failed.`];e.timedOut?r.push("Reason: command timed out on the runner host."):e.error?r.push(`Reason: ${e.error}`):e.exitCode!=null&&r.push(`Exit code: ${e.exitCode}`);let o=e.stderr.trim();o&&r.push(`Stderr: ${o.split(`
13
+ `).slice(-3).join(" ")}`),r.push("Next: retry on the runner host or inspect harness logs.");let n=$(e.stdout);return{primary:r.join(`
14
+ `),diagnostic:s(n??{stdout:e.stdout,stderr:e.stderr})}}function x(e){if(!e.ok)return J(e);let r=$(e.stdout);if(r===null){let o=e.stdout.trim()||e.stderr.trim()||"(no output)";return{primary:`Harness ${e.scope} ${e.action} finished.
15
+ ${o.slice(0,800)}`,diagnostic:s({stdout:e.stdout,stderr:e.stderr})}}if(e.scope==="worker"&&e.action==="start"&&f(r))return b(r);if(e.scope==="worker"&&e.action==="status")return R(r);if(e.scope==="worker"&&e.action==="complete")return C(r);if(e.scope==="monitor"&&(e.action==="tick"||e.action==="run-loop"))return S(r);if(e.scope==="monitor"&&e.action==="auto-complete"){let o=r;if(o.outcome&&o.worker&&o.runId)return N(r);if(Array.isArray(o.blockers))return{primary:[`Monitor auto-complete blocked \xB7 ${o.runId??"run"} / ${o.worker??"worker"}`,`Blockers: ${o.blockers.join("; ")}`,"Next: resolve blockers on the runner, then retry auto-complete."].join(`
16
+ `),diagnostic:s(r)}}if(e.scope==="run"&&e.action==="status"){let o=r.workers;return Array.isArray(o)&&o.length===1?R(o[0]):{primary:`Harness run status \xB7 ${r.runId??"run"} (${Array.isArray(o)?o.length:0} workers).`,diagnostic:s(r)}}return{primary:`Harness ${e.scope} ${e.action} completed successfully on the runner.`,diagnostic:s(r)}}export{O as extractWorkerStartRecordFromText,x as formatHarnessToolReadable,b as formatWorkerStartNotice,I as joinHarnessNotice};
@@ -4,5 +4,5 @@ var u=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=
4
4
  `).filter(Boolean);for(let s of o){let i=E(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let l=String(a.ts),m=Date.parse(l);Number.isFinite(m)&&m>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:l,clampedTo:n}):r.lastHeartbeatAt=l}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),ae(r.lastHeartbeatPhase)&&(r.terminalFinalResult=re(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(l=>!!l&&typeof l=="object"&&typeof l.prUrl=="string"))}return r}var yr,ce=u(()=>{"use strict";te();p();yr=6e4});function kr(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function Rr(e){if(!e)return[];let r=[],t="",n,o=!1;for(let s of e){if(o){t+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(n){s===n?n=void 0:t+=s;continue}if(s==='"'||s==="'"){n=s;continue}if(/\s/.test(s)){t&&(r.push(t),t="");continue}t+=s}return t&&r.push(t),r}function Sr(e){let r=kr(e[0]);return!!(r&&br.has(r))}function K(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function F(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function xr(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function _r(e){let r=[];for(let t=1;t<e.length;t+=1){let n=e[t];if(n){if(n==="--"){r.push(...e.slice(t+1));break}if(n.startsWith("-")){if(n.includes("="))continue;de.has(n)&&(t+=1);continue}r.push(n)}}return r}function vr(e){let r=!1,t=e.map((o,s)=>{let i=xr(o),a=e[s-1];return a&&de.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=_r(t);if(n.length===2){let[o,s]=n;if(F(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};if(K(s))return{argv:[t[0]??"rg","-g",s,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function H(e){let r=e.trim();if(!r)return{command:r,changed:!1};let t=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",n=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=n.map(i=>{let a=Rr(i.trim());if(!a.length||!Sr(a))return i;let l=vr(a);return l.changed?(o=!0,l.argv.join(" ")):i});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function me(e){if(!e)return{};let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(|$)/iu);if(r)return{pattern:r[1],target:r[2]?.trim()};let t=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return t?{pattern:t[1],target:t[2]?.trim()}:{}}function Er(e){let{pattern:r,target:t}=me(e);return r?F(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:K(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function Cr(e){let{pattern:r,target:t}=me(e);if(!r)return null;if(F(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&K(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function Ar(e){if(e.kind==="bad_scope"&&e.pattern?.includes("agent-os-land-pr")&&e.target==="package.json")return"Search package.json with a glob from the repo root: `rg -g package.json agent-os-land-pr .` \u2014 or run `node scripts/agent-os-land-pr.mjs <pr-url>` directly.";if(e.kind==="bad_scope"&&e.pattern&&e.target)return`Use \`rg -g '${e.target}' ${e.pattern} .\` from the repo root instead of treating ${e.target} as a folder.`;if(e.kind==="rg_exclude_syntax"&&e.pattern){let r=e.target?`${e.target.trim()}/**`:"!node_modules/**";return`Repo search scope \`${e.target??"!node_modules"}\` is not a valid ripgrep path. Use \`rg "${e.pattern}" -g '${r}' .\` from the repo root (exclude globs need a \`/**\` suffix).`}return e.kind==="no_matches"&&e.pattern?`No matches for "${e.pattern}". Try a broader pattern, drop overly short tokens, or search from the repo root with \`rg "${e.pattern}" .\`.`:null}function wr(e){let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(agent\)|\s*failed|$)/iu);return r?`search "${r[1]}" in ${r[2]?.trim()}`:null}function L(e){let r=e.meta?.trim()||(e.command?wr(e.command):null)||null;if(r){let t=Er(r),n=Ar(t);if(n)return n;let o=Cr(r);if(o?.changed)return`Repo search used an invalid scope. Retry with: \`${o.command}\`.`}if(e.command&&/\b(rg|ripgrep)\b/i.test(e.command)){let t=H(e.command);if(t.changed)return`Ripgrep scope may be invalid. Retry with: \`${t.command}\`.`;if(e.exitCode===1)return"Ripgrep returned no matches (exit 1). Try a broader pattern or search from the repo root."}return null}var br,de,fe=u(()=>{"use strict";br=new Set(["rg","ripgrep","grep"]),de=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function R(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Ur(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let t=r.indexOf("{"),n=r.lastIndexOf("}");if(t>=0&&n>t)try{return JSON.parse(r.slice(t,n+1))}catch{return null}return null}function S(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Tr(e){let r=e.metadata;if(!S(r))return null;let t=r.vulnerabilities;if(!S(t))return null;let n=s=>typeof t[s]=="number"?t[s]:0,o={info:n("info"),low:n("low"),moderate:n("moderate"),high:n("high"),critical:n("critical"),total:n("total")};return typeof t.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function Br(e){let r=[];e.critical&&r.push(`${e.critical} critical`),e.high&&r.push(`${e.high} high`),e.moderate&&r.push(`${e.moderate} moderate`),e.low&&r.push(`${e.low} low`),e.info&&r.push(`${e.info} info`);let t=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${t}) \u2014 remediation required`}function Nr(e,r){let t=e.error;if(S(t)){let s=typeof t.summary=="string"?t.summary.trim():"",i=typeof t.code=="string"?t.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let n=typeof e.message=="string"?e.message.trim():"";if(n)return n;let o=r.trim();return o?R(o.split(`
5
5
  `).find(Boolean)??o,160):"npm audit failed"}function Dr(e){let r=`${e.stdout}
6
6
  ${e.stderr}`.trim(),t=Ur(r);if(!t||!S(t)){let o=R(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(S(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Nr(t,e.stderr)}`};let n=Tr(t);return n?e.exitCode===0&&n.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:n}:{kind:"audit_findings",exitCode:e.exitCode,summary:Br(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Mr(e){return Or.test(e)}function Ir(e){return Wr.test(e)}function Kr(e){let r=L({command:e.command,exitCode:e.exitCode});if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"ripgrep finished (exit 0)"};if(e.exitCode===1){let n=(e.stderr||e.interleaved).trim();if(n&&Pr.test(n)){let i=R(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=H(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=R(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function pe(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Mr(e.command)){let i=r.trim()||n.trim()||t.trim();return Dr({exitCode:e.exitCode,stdout:i,stderr:t})}if(Ir(e.command))return Kr({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=L({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=R(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Or,Wr,Pr,ge=u(()=>{"use strict";fe();Or=/\bnpm\s+audit\b/i,Wr=/\b(rg|ripgrep)\b/i,Pr=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as Fr,readFileSync as Hr}from"node:fs";function Lr(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function $r(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let t=r.slice(0,-8);return t.length?t:r}return null}function jr(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(e.error=String(r.result||r.api_error_status||"stream result error"))}function Yr(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let l=a,m=typeof l.exitCode=="number"?l.exitCode:0;return{command:s,exitCode:m,stdout:typeof l.stdout=="string"?l.stdout:"",stderr:typeof l.stderr=="string"?l.stderr:"",interleaved:typeof l.interleavedOutput=="string"?l.interleavedOutput:""}}function Gr(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function he(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null};if(!Fr(e))return r;let t=Hr(e,"utf8").split(`
7
- `).filter(Boolean);for(let n of t){let o=E(n);if(!o)continue;let s=Lr(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let l=a.find(m=>m?.type==="tool_use");l&&(r.currentTool=String(l.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,l=$r(a);l&&(r.currentTool=l)}let i=Yr(o);i&&Gr(r,pe({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&jr(r,o)}return r}var ye=u(()=>{"use strict";ge();p()});function zr(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function be(e){let r=(e??"").trim();if(!r)return null;for(let t of Vr)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${zr(r)}`};return null}var Vr,ke=u(()=>{"use strict";Vr=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"}]});function Re(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Jr(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function Xr(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Re(e.head)}function qr(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Se(e){if(e.alive||Jr(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Re(e.headCommit)??Xr(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:qr(s,r,t)}}var xe=u(()=>{"use strict"});var Qr,Jt,_e=u(()=>{"use strict";Qr=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Jt=new Set(Qr)});import{spawnSync as Ee}from"node:child_process";function Zr(e,r,t={}){let n=Ee("git",r,M({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=`git ${r.join(" ")} failed: ${n.stderr||n.stdout}`;if(t.throwError)throw new Error(o);oe(o)}return n.stdout||""}function Ce(e){return Zr(e,["status","--short"],{allowFailure:!0}).split(`
8
- `).map(r=>r.trim()).filter(Boolean)}function O(e,r){try{let t=Ee("git",r,M({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}function ve(e,r,t){let n=O(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function Ae(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return $(n,"missing worktree path");let s=O(e,["rev-parse","HEAD"]);if(s.status!==0)return $(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=O(e,["rev-parse",n]);if(f.status!==0)return $(n,f.error||f.stderr||f.stdout||`failed to resolve ${n}`,s.stdout.trim());i=f.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let l=ve(e,i,a),m=ve(e,a,i),d=l.error||m.error||void 0;if(l.isAncestor==null||m.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:"unknown",...d?{error:d}:{}};let c=l.isAncestor?"ahead":m.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:c,...d?{error:d}:{}}}function $(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var j=u(()=>{"use strict";p();_e()});function x(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function et(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function rt(e){if(x(e.headCommit)||x(e.prUrl)||x(e.artifactBundlePath)||x(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&x(r.head))}function we(e){return et(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:rt(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function Oe(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var We=u(()=>{"use strict"});function Y(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function Pe(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function W(e){let r=e.trim();if(!r)return null;let t=Y(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=Y(s[1]??"");d&&n.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=Y(r.slice(i,a+1));d&&n.push(d)}if(n.length===0)return null;let l=n[n.length-1],m=Pe(l);for(let d of n){let c=Pe(d);c>m&&(l=d,m=c)}return l}var G=u(()=>{"use strict"});function Ue(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function Te(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function tt(e){return new Set(e.map(r=>Te(Ue(r)??r)).filter(Boolean))}function Be(e,r,t){let n=Ue(e)??e;if(!n)return"unrelated";let o=Te(n);return tt(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Ne=u(()=>{"use strict"});function k(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function nt(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function b(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:k(e)}function P(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function De(e){let r=null;if(typeof e=="string"){let o=W(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=b(String(s.prUrl??s.pr_url??"")),a=k(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:k(s.mergeCommit??s.merge_commit),reason:k(s.reason)})}return n}function Me(e,r){let t=[],n=b(k(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=b(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Ie(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!nt(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?b(k(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=Me(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of c)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let h=De(n).find(y=>y.prUrl===s);if(!h||h.outcome!=="merged"&&!(h.reason?.trim()&&(h.outcome==="skipped"||h.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=De(n),a=new Map(i.map(c=>[P(c.prUrl),c])),l=new Set(r.targetPrUrls.map(c=>P(b(c)??c)).filter(Boolean)),m=Me(t,n);if(r.landingOnly)for(let c of m){let f=a.get(P(c)),g=Be(c,r.targetPrUrls,f);if(!(g==="contract"||g==="support"))return l.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${c}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let d=[];for(let c of r.targetPrUrls){let f=P(b(c)??c),g=a.get(f);if(!g){d.push(f);continue}g.outcome!=="merged"&&!g.reason?.trim()&&d.push(f)}return d.length>0?{blocked:!0,reason:d.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${d.join(", ")}`}:{blocked:!1}}function Ke(e){if(e.blocked)return e.detail??e.reason}var Fe=u(()=>{"use strict";G();Ne()});function st(e){let r=Date.now();if(e.completionBlocker&&!He(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&at(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=we(o);if(s.blocked){let i=Oe(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Ie({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Ke(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(it(e))return{state:"done",reason:"empty abandoned worker record"};let o=be(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Se({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>ot)return{state:"needs_attention",reason:`no first stream event ${I(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>U?{state:"stale",reason:`no log/event/heartbeat activity for ${I(n)}s`}:{state:"ok",reason:"recent activity"}}function He(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function it(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function at(e){let r=null;if(typeof e=="string"?r=W(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function lt(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??le(t))}function Le(e,r={}){let t=he(e.stdoutPath),n=ue(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=lt(e,t.finalResult,n),i=o?!1:w(e.pid),a=C(e.stdoutPath),l=C(e.stderrPath),m=C(e.heartbeatPath),d=Ce(e.worktreePath),c=Ae(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=ie([t.lastEventAt,n.lastHeartbeatAt,A(e.stdoutPath),A(e.stderrPath),A(e.heartbeatPath)]),g=t.error||!i&&!s&&se(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=He(h)?null:h,dr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,N=st({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,lastActivityAt:f,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:d,gitAncestry:c,completionBlocker:y,landingContract:dr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),mr=y||N.state==="blocked"?"blocked":o||N.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:mr,attention:N,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:f,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:g,changedFiles:d,gitAncestry:c,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.orchestrationAudit?.provider??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function $e(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function je(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var ot,U,_=u(()=>{"use strict";ce();ye();ke();xe();j();We();Fe();G();p();ot=18e4,U=6e5});var v=u(()=>{"use strict"});var ze=u(()=>{"use strict";j();v()});var V=u(()=>{"use strict"});var z=u(()=>{"use strict"});var Je=u(()=>{"use strict"});var Un,Tn,J=u(()=>{"use strict";Un=25*1024*1024*1024,Tn=12*1024*1024*1024});var In,Kn,Xe=u(()=>{"use strict";J();In=5*1024*1024*1024,Kn=10*1024*1024*1024});var Yn,Gn,X=u(()=>{"use strict";Xe();J();Yn=30*1024*1024*1024,Gn=15*1024*1024*1024});var qe=u(()=>{"use strict";T();p()});var Qe=u(()=>{"use strict";_()});var yt,bt,Ze=u(()=>{"use strict";Je();B();V();z();Q();X();T();qe();Qe();p();yt=500*1024*1024,bt=4*1024*1024*1024});var Q=u(()=>{"use strict";Ze()});import{homedir as Rt}from"node:os";import St from"node:path";var xt,er=u(()=>{"use strict";xt=St.join(Rt(),".kynver",".env")});var rr=u(()=>{"use strict"});var tr=u(()=>{"use strict";rr()});var nr=u(()=>{"use strict"});var or=u(()=>{"use strict";tr();nr()});var sr=u(()=>{"use strict"});var ir=u(()=>{"use strict";sr()});var ar=u(()=>{"use strict";er();v();B();or();ir()});import{homedir as vt,totalmem as ds}from"node:os";import Z from"node:path";var lr,Ss,xs,_s,vs,B=u(()=>{"use strict";ze();v();p();V();z();Q();X();ar();lr=Z.join(vt(),".kynver"),Ss=Z.join(lr,"config.json"),xs=Z.join(lr,"credentials"),_s=500*1024*1024,vs=4*1024*1024*1024});import{homedir as Et}from"node:os";import Ct from"node:path";var Ps,ur=u(()=>{"use strict";B();v();p();Ps=Ct.join(Et(),".openclaw","harness")});var T=u(()=>{"use strict";ur();p()});_();var Ye="kynver-harness:",ut="@runner:";function Ge(e){return e?.trim()?e.trim():null}function ct(e){let r=Ge(e);if(!r?.startsWith(Ye))return null;let t=r.slice(Ye.length),n=t.indexOf(ut);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Ve(e,r){let t=Ge(r);return t?ct(e)===t:!1}_();p();function dt(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Ve(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=n.leaseToken?.trim()??"";if(n.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(n.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(t.attention.state==="stale")return{health:"stale",reason:t.attention.reason};let s=t.lastHeartbeatAt?Date.parse(t.lastHeartbeatAt):NaN;return t.alive&&Number.isFinite(s)&&Date.now()-s>U?{health:"stale",reason:`heartbeat older than ${Math.floor(U/1e3)}s`}:t.alive&&r.pid&&!w(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:n?.status==="running"&&!t.alive&&t.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:t.attention.reason||"worker within expected lifecycle bounds"}}T();function cr(e){return!!e.completionReportedAt?.trim()}_();function At(e){let{worker:r,status:t}=e,n=[];r.localOnly&&n.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&n.push("missing agentOsId/taskId linkage"),cr(r)&&n.push("completion already acknowledged"),r.completionBlocker&&n.push(r.completionBlocker),t.heartbeatBlocker&&t.alive&&n.push(`worker heartbeat blocker: ${t.heartbeatBlocker}`),t.attention.state==="blocked"&&n.push(t.attention.reason||"worker attention blocked"),je(t)&&n.push(t.attention.reason||"landing gate blocked");let o=$e(t),s;return o?t.finalResult?s="final_result":t.alive?s="terminal_status":s="process_exited":n.push("worker has not reached a terminal condition"),{eligible:o&&n.length===0,terminalVerified:o,terminalReason:s,blockers:n}}export{At as assessAutoCompleteEligibility,dt as classifyWorkerHealth,Le as computeWorkerStatus};
7
+ `).filter(Boolean);for(let n of t){let o=E(n);if(!o)continue;let s=Lr(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let l=a.find(m=>m?.type==="tool_use");l&&(r.currentTool=String(l.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,l=$r(a);l&&(r.currentTool=l)}let i=Yr(o);i&&Gr(r,pe({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&jr(r,o)}return r}var ye=u(()=>{"use strict";ge();p()});function zr(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function be(e){let r=(e??"").trim();if(!r)return null;for(let t of Vr)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${zr(r)}`};return null}var Vr,ke=u(()=>{"use strict";Vr=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Re(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Jr(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function qr(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Re(e.head)}function Xr(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Se(e){if(e.alive||Jr(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Re(e.headCommit)??qr(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:Xr(s,r,t)}}var xe=u(()=>{"use strict"});var Qr,Jt,_e=u(()=>{"use strict";Qr=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Jt=new Set(Qr)});import{spawnSync as Ee}from"node:child_process";function Zr(e,r,t={}){let n=Ee("git",r,M({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=`git ${r.join(" ")} failed: ${n.stderr||n.stdout}`;if(t.throwError)throw new Error(o);oe(o)}return n.stdout||""}function Ce(e){return Zr(e,["status","--short"],{allowFailure:!0}).split(`
8
+ `).map(r=>r.trim()).filter(Boolean)}function O(e,r){try{let t=Ee("git",r,M({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}function ve(e,r,t){let n=O(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function Ae(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return $(n,"missing worktree path");let s=O(e,["rev-parse","HEAD"]);if(s.status!==0)return $(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=O(e,["rev-parse",n]);if(f.status!==0)return $(n,f.error||f.stderr||f.stdout||`failed to resolve ${n}`,s.stdout.trim());i=f.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let l=ve(e,i,a),m=ve(e,a,i),d=l.error||m.error||void 0;if(l.isAncestor==null||m.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:"unknown",...d?{error:d}:{}};let c=l.isAncestor?"ahead":m.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:c,...d?{error:d}:{}}}function $(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var j=u(()=>{"use strict";p();_e()});function x(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function et(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function rt(e){if(x(e.headCommit)||x(e.prUrl)||x(e.artifactBundlePath)||x(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&x(r.head))}function we(e){return et(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:rt(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function Oe(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var We=u(()=>{"use strict"});function Y(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function Pe(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function W(e){let r=e.trim();if(!r)return null;let t=Y(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=Y(s[1]??"");d&&n.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=Y(r.slice(i,a+1));d&&n.push(d)}if(n.length===0)return null;let l=n[n.length-1],m=Pe(l);for(let d of n){let c=Pe(d);c>m&&(l=d,m=c)}return l}var G=u(()=>{"use strict"});function Ue(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function Te(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function tt(e){return new Set(e.map(r=>Te(Ue(r)??r)).filter(Boolean))}function Be(e,r,t){let n=Ue(e)??e;if(!n)return"unrelated";let o=Te(n);return tt(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Ne=u(()=>{"use strict"});function k(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function nt(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function b(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:k(e)}function P(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function De(e){let r=null;if(typeof e=="string"){let o=W(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=b(String(s.prUrl??s.pr_url??"")),a=k(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:k(s.mergeCommit??s.merge_commit),reason:k(s.reason)})}return n}function Me(e,r){let t=[],n=b(k(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=b(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Ie(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!nt(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?b(k(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=Me(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of c)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let h=De(n).find(y=>y.prUrl===s);if(!h||h.outcome!=="merged"&&!(h.reason?.trim()&&(h.outcome==="skipped"||h.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=De(n),a=new Map(i.map(c=>[P(c.prUrl),c])),l=new Set(r.targetPrUrls.map(c=>P(b(c)??c)).filter(Boolean)),m=Me(t,n);if(r.landingOnly)for(let c of m){let f=a.get(P(c)),g=Be(c,r.targetPrUrls,f);if(!(g==="contract"||g==="support"))return l.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${c}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let d=[];for(let c of r.targetPrUrls){let f=P(b(c)??c),g=a.get(f);if(!g){d.push(f);continue}g.outcome!=="merged"&&!g.reason?.trim()&&d.push(f)}return d.length>0?{blocked:!0,reason:d.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${d.join(", ")}`}:{blocked:!1}}function Ke(e){if(e.blocked)return e.detail??e.reason}var Fe=u(()=>{"use strict";G();Ne()});function st(e){let r=Date.now();if(e.completionBlocker&&!He(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&at(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=we(o);if(s.blocked){let i=Oe(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Ie({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Ke(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(it(e))return{state:"done",reason:"empty abandoned worker record"};let o=be(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Se({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>ot)return{state:"needs_attention",reason:`no first stream event ${I(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>U?{state:"stale",reason:`no log/event/heartbeat activity for ${I(n)}s`}:{state:"ok",reason:"recent activity"}}function He(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function it(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function at(e){let r=null;if(typeof e=="string"?r=W(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function lt(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??le(t))}function Le(e,r={}){let t=he(e.stdoutPath),n=ue(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=lt(e,t.finalResult,n),i=o?!1:w(e.pid),a=C(e.stdoutPath),l=C(e.stderrPath),m=C(e.heartbeatPath),d=Ce(e.worktreePath),c=Ae(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=ie([t.lastEventAt,n.lastHeartbeatAt,A(e.stdoutPath),A(e.stderrPath),A(e.heartbeatPath)]),g=t.error||!i&&!s&&se(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=He(h)?null:h,dr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,N=st({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,lastActivityAt:f,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:d,gitAncestry:c,completionBlocker:y,landingContract:dr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),mr=y||N.state==="blocked"?"blocked":o||N.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:mr,attention:N,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:f,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:g,changedFiles:d,gitAncestry:c,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function $e(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function je(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var ot,U,_=u(()=>{"use strict";ce();ye();ke();xe();j();We();Fe();G();p();ot=18e4,U=6e5});var v=u(()=>{"use strict"});var ze=u(()=>{"use strict";j();v()});var V=u(()=>{"use strict"});var z=u(()=>{"use strict"});var Je=u(()=>{"use strict"});var Un,Tn,J=u(()=>{"use strict";Un=25*1024*1024*1024,Tn=12*1024*1024*1024});var In,Kn,qe=u(()=>{"use strict";J();In=5*1024*1024*1024,Kn=10*1024*1024*1024});var Yn,Gn,q=u(()=>{"use strict";qe();J();Yn=30*1024*1024*1024,Gn=15*1024*1024*1024});var Xe=u(()=>{"use strict";T();p()});var Qe=u(()=>{"use strict";_()});var yt,bt,Ze=u(()=>{"use strict";Je();B();V();z();Q();q();T();Xe();Qe();p();yt=500*1024*1024,bt=4*1024*1024*1024});var Q=u(()=>{"use strict";Ze()});import{homedir as Rt}from"node:os";import St from"node:path";var xt,er=u(()=>{"use strict";xt=St.join(Rt(),".kynver",".env")});var rr=u(()=>{"use strict"});var tr=u(()=>{"use strict";rr()});var nr=u(()=>{"use strict"});var or=u(()=>{"use strict";tr();nr()});var sr=u(()=>{"use strict"});var ir=u(()=>{"use strict";sr()});var ar=u(()=>{"use strict";er();v();B();or();ir()});import{homedir as vt,totalmem as ds}from"node:os";import Z from"node:path";var lr,Ss,xs,_s,vs,B=u(()=>{"use strict";ze();v();p();V();z();Q();q();ar();lr=Z.join(vt(),".kynver"),Ss=Z.join(lr,"config.json"),xs=Z.join(lr,"credentials"),_s=500*1024*1024,vs=4*1024*1024*1024});import{homedir as Et}from"node:os";import Ct from"node:path";var Ps,ur=u(()=>{"use strict";B();v();p();Ps=Ct.join(Et(),".openclaw","harness")});var T=u(()=>{"use strict";ur();p()});_();var Ye="kynver-harness:",ut="@runner:";function Ge(e){return e?.trim()?e.trim():null}function ct(e){let r=Ge(e);if(!r?.startsWith(Ye))return null;let t=r.slice(Ye.length),n=t.indexOf(ut);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Ve(e,r){let t=Ge(r);return t?ct(e)===t:!1}_();p();function dt(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Ve(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=n.leaseToken?.trim()??"";if(n.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(n.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(t.attention.state==="stale")return{health:"stale",reason:t.attention.reason};let s=t.lastHeartbeatAt?Date.parse(t.lastHeartbeatAt):NaN;return t.alive&&Number.isFinite(s)&&Date.now()-s>U?{health:"stale",reason:`heartbeat older than ${Math.floor(U/1e3)}s`}:t.alive&&r.pid&&!w(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:n?.status==="running"&&!t.alive&&t.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:t.attention.reason||"worker within expected lifecycle bounds"}}T();function cr(e){return!!e.completionReportedAt?.trim()}_();function At(e){let{worker:r,status:t}=e,n=[];r.localOnly&&n.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&n.push("missing agentOsId/taskId linkage"),cr(r)&&n.push("completion already acknowledged"),r.completionBlocker&&n.push(r.completionBlocker),t.heartbeatBlocker&&t.alive&&n.push(`worker heartbeat blocker: ${t.heartbeatBlocker}`),t.attention.state==="blocked"&&n.push(t.attention.reason||"worker attention blocked"),je(t)&&n.push(t.attention.reason||"landing gate blocked");let o=$e(t),s;return o?t.finalResult?s="final_result":t.alive?s="terminal_status":s="process_exited":n.push("worker has not reached a terminal condition"),{eligible:o&&n.length===0,terminalVerified:o,terminalReason:s,blockers:n}}export{At as assessAutoCompleteEligibility,dt as classifyWorkerHealth,Le as computeWorkerStatus};
@@ -1 +1 @@
1
- var n=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(o){throw t=[o],o}};function I(e){return Le.has(e)?!0:He.some(r=>e.endsWith(r))}function Z(e){return Object.keys(e).filter(I).sort()}function p(e){let r={...e};for(let t of Object.keys(r))I(t)&&delete r[t];return r}function $e(e){let r=Z(e);return{forbiddenPresent:r,safe:r.length===0}}var Fe,Le,He,d=n(()=>{"use strict";Fe=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Le=new Set(Fe),He=["_SECRET","_API_KEY"]});function D(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=n(()=>{"use strict"});var N=n(()=>{"use strict";a();d()});var f=n(()=>{"use strict"});var ee=n(()=>{"use strict";N();f()});var B=n(()=>{"use strict"});var M=n(()=>{"use strict"});var re=n(()=>{"use strict"});var tt,nt,T=n(()=>{"use strict";tt=25*1024*1024*1024,nt=12*1024*1024*1024});var lt,ct,te=n(()=>{"use strict";T();lt=5*1024*1024*1024,ct=10*1024*1024*1024});var gt,ht,U=n(()=>{"use strict";te();T();gt=30*1024*1024*1024,ht=15*1024*1024*1024});import{homedir as Ve}from"node:os";import Ye from"node:path";var St,ne=n(()=>{"use strict";g();f();a();St=Ye.join(Ve(),".openclaw","harness")});var F=n(()=>{"use strict";ne();a()});var ie=n(()=>{"use strict";F();a()});var se=n(()=>{"use strict"});var ae=n(()=>{"use strict";se();a()});var le=n(()=>{"use strict"});var ce=n(()=>{"use strict";le()});var ue=n(()=>{"use strict";ce();a()});var de=n(()=>{"use strict"});var me=n(()=>{"use strict"});var pe=n(()=>{"use strict"});var L=n(()=>{"use strict"});var fe=n(()=>{"use strict"});var ge=n(()=>{"use strict";L();fe()});var he=n(()=>{"use strict";ae();ue();de();me();N();pe();ge();L();a()});var ye=n(()=>{"use strict";he()});var Ze,er,ve=n(()=>{"use strict";re();g();B();M();H();U();F();ie();ye();a();Ze=500*1024*1024,er=4*1024*1024*1024});var H=n(()=>{"use strict";ve()});import{homedir as rr}from"node:os";import tr from"node:path";var nr,be=n(()=>{"use strict";nr=tr.join(rr(),".kynver",".env")});var ke=n(()=>{"use strict"});var xe=n(()=>{"use strict";ke()});var Re=n(()=>{"use strict"});var Se=n(()=>{"use strict";xe();Re()});var _e=n(()=>{"use strict"});var Ce=n(()=>{"use strict";_e()});var Ee=n(()=>{"use strict";be();f();g();Se();Ce()});import{homedir as ir,totalmem as Go}from"node:os";import $ from"node:path";var Ae,ni,oi,ii,si,g=n(()=>{"use strict";ee();f();a();B();M();H();U();Ee();Ae=$.join(ir(),".kynver"),ni=$.join(Ae,"config.json"),oi=$.join(Ae,"credentials"),ii=500*1024*1024,si=4*1024*1024*1024});d();g();d();a();d();a();d();a();var es=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function ur(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var dr=ur();var we="composer-2.5";var u="cursor",mr=new Set(["claude","opus","anthropic"]),pr=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function V(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function l(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return mr.has(r)?!0:r.includes("claude")||r.includes("opus")}function j(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&l(r))return!0;let t=V(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let o=V(e,"description");if(pr.some(s=>s.test(o)))return!0;let i=V(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function fr(e,r){return{provider:u,model:we,rule:`policy:cursor_default${r}`,requestedModel:e}}function Ie(e){let{routing:r,task:t}=e,o=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&l(o))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(j(t)||r.rule==="explicit:cli"&&l(r.provider)||!l(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return fr(r.model,i)}function gr(e,r=u){let t=e?.trim();return t?l(t)?u:t==="codex"?"codex":t:r}function hr(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(u)?[...new Set(r.map(t=>l(t)?u:t))]:r.every(t=>l(t))?[u]:r}var yr=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,vr=/\b(npm run build\b|next build\b)\b/i,br=/\b(vercel (build|deploy|--prod))\b/i,kr=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function Y(e){let r=e.trim();return r?kr.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:br.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:vr.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:yr.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var S="heavy_verification_token_required";import{spawnSync as Tr}from"node:child_process";a();import{closeSync as Er,existsSync as z,mkdirSync as Ar,openSync as Or,readdirSync as Be,readFileSync as Pr,unlinkSync as Me,writeFileSync as wr}from"node:fs";import X from"node:path";import{mkdirSync as Rr}from"node:fs";import{tmpdir as Sr}from"node:os";import _ from"node:path";import{homedir as xr}from"node:os";import De from"node:path";function We(){let e=process.env.KYNVER_STATE_ROOT;return e?De.resolve(e):De.join(xr(),".kynver","state")}function _r(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function Cr(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?_.resolve(e):_r()?_.join(Sr(),"kynver","state","heavy-verification"):_.join(We(),"heavy-verification")}function G(){return _.join(Cr(),"slots")}function y(){let e=G();return Rr(e,{recursive:!0}),e}var v=120*6e4,Ne=1;function Ir(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function A(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function C(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Ir(e,Ne):Ne}function Dr(e){return`slot-${e}`}function Wr(e,r=G()){return X.join(r,`${e}.json`)}function J(e){if(!z(e))return null;try{let r=JSON.parse(Pr(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function E(e,r=v){if(!e||!D(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Nr(e,r){let t=J(e);if(E(t,r))try{Me(e)}catch{}}function Br(e){return Ar(e,{recursive:!0}),e}function Q(e={}){let r=Br(e.slotsDir??y()),t=e.staleMs??v,o=0;for(let i of Be(r)){if(!i.endsWith(".json"))continue;let s=X.join(r,i),c=z(s);Nr(s,t),c&&!z(s)&&(o+=1)}return o}function Mr(e={}){let r=e.slotsDir??y(),t=e.staleMs??v;Q({slotsDir:r,staleMs:t});let o=[];for(let i of Be(r)){if(!i.endsWith(".json"))continue;let s=J(X.join(r,i));s&&!E(s,t)&&o.push(s)}return o}function q(e={}){return Mr(e).length}function b(e,r={}){if(A())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:C(),reason:null};let t=r.slotsDir??y(),o=r.staleMs??v,i=r.maxSlots??C();Q({slotsDir:t,staleMs:o});for(let c=0;c<i;c+=1){let P=Dr(c),w=Wr(P,t),k=J(w);if(k&&E(k,o))try{Me(w)}catch{}else if(k&&!E(k,o))continue;let Ue={slotId:P,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let m=Or(w,"wx");wr(m,JSON.stringify(Ue,null,2),"utf8"),Er(m);let Ke=q({slotsDir:t,staleMs:o});return{admitted:!0,slotId:P,activeSlots:Ke,maxSlots:i,reason:null}}catch(m){if(m.code==="EEXIST")continue;throw m}}let s=q({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function O(e,r={}){if(A())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:C(),reason:null};let t=r.slotsDir??y(),o=r.staleMs??v,i=r.maxSlots??C();Q({slotsDir:t,staleMs:o});let s=q({slotsDir:t,staleMs:o}),c=s<i;return{admitted:c,slotId:null,activeSlots:s,maxSlots:i,reason:c?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function Ur(e){e<=0||Tr(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function Te(e,r,t=2e3,o={}){let i=Date.now()+Math.max(0,r),s=b(e,o);for(;!s.admitted&&Date.now()<i;)Ur(Math.min(t,i-Date.now())),s=b(e,o);return s}function Kr(e,r={}){let t=Y(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...O(e),slotId:null}};if(A())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...O(e),slotId:null}};let o=r.waitMs??0,i=o>0?Te(e,o,r.pollMs):b(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:S,commandClass:t.commandClass,reason:t.reason??i.reason??S,verificationGate:i}}export{u as DEFAULT_WORKER_PROVIDER,S as HEAVY_VERIFICATION_TOKEN_REQUIRED,$e as auditWorkerEnv,Y as classifyHeavyShellCommand,Ie as enforceCursorWorkerProvider,Kr as gateWorkerShellCommand,l as isClaudeFamilyProvider,I as isForbiddenWorkerEnvKey,Z as listForbiddenWorkerEnvKeys,hr as preferCursorExecutor,gr as resolveConfiguredWorkerProvider,p as scrubWorkerEnv,j as taskAllowsClaudeWorker};
1
+ var n=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(o){throw t=[o],o}};function I(e){return Le.has(e)?!0:He.some(r=>e.endsWith(r))}function Z(e){return Object.keys(e).filter(I).sort()}function p(e){let r={...e};for(let t of Object.keys(r))I(t)&&delete r[t];return r}function $e(e){let r=Z(e);return{forbiddenPresent:r,safe:r.length===0}}var Fe,Le,He,d=n(()=>{"use strict";Fe=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Le=new Set(Fe),He=["_SECRET","_API_KEY"]});function D(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=n(()=>{"use strict"});var M=n(()=>{"use strict";a();d()});var f=n(()=>{"use strict"});var ee=n(()=>{"use strict";M();f()});var N=n(()=>{"use strict"});var B=n(()=>{"use strict"});var re=n(()=>{"use strict"});var tt,nt,T=n(()=>{"use strict";tt=25*1024*1024*1024,nt=12*1024*1024*1024});var lt,ct,te=n(()=>{"use strict";T();lt=5*1024*1024*1024,ct=10*1024*1024*1024});var gt,ht,U=n(()=>{"use strict";te();T();gt=30*1024*1024*1024,ht=15*1024*1024*1024});import{homedir as Ve}from"node:os";import Ye from"node:path";var St,ne=n(()=>{"use strict";g();f();a();St=Ye.join(Ve(),".openclaw","harness")});var F=n(()=>{"use strict";ne();a()});var ie=n(()=>{"use strict";F();a()});var se=n(()=>{"use strict"});var ae=n(()=>{"use strict";se();a()});var le=n(()=>{"use strict"});var ce=n(()=>{"use strict";le()});var ue=n(()=>{"use strict";ce();a()});var de=n(()=>{"use strict"});var me=n(()=>{"use strict"});var pe=n(()=>{"use strict"});var L=n(()=>{"use strict"});var fe=n(()=>{"use strict"});var ge=n(()=>{"use strict";L();fe()});var he=n(()=>{"use strict";ae();ue();de();me();M();pe();ge();L();a()});var ye=n(()=>{"use strict";he()});var Ze,er,ve=n(()=>{"use strict";re();g();N();B();H();U();F();ie();ye();a();Ze=500*1024*1024,er=4*1024*1024*1024});var H=n(()=>{"use strict";ve()});import{homedir as rr}from"node:os";import tr from"node:path";var nr,be=n(()=>{"use strict";nr=tr.join(rr(),".kynver",".env")});var ke=n(()=>{"use strict"});var xe=n(()=>{"use strict";ke()});var Re=n(()=>{"use strict"});var Se=n(()=>{"use strict";xe();Re()});var _e=n(()=>{"use strict"});var Ce=n(()=>{"use strict";_e()});var Ee=n(()=>{"use strict";be();f();g();Se();Ce()});import{homedir as ir,totalmem as Go}from"node:os";import $ from"node:path";var Ae,ni,oi,ii,si,g=n(()=>{"use strict";ee();f();a();N();B();H();U();Ee();Ae=$.join(ir(),".kynver"),ni=$.join(Ae,"config.json"),oi=$.join(Ae,"credentials"),ii=500*1024*1024,si=4*1024*1024*1024});d();g();d();a();d();a();d();a();var es=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function ur(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var dr=ur();var we="composer-2.5";var u="cursor",mr=new Set(["claude","opus","anthropic"]),pr=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function V(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function l(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return mr.has(r)?!0:r.includes("claude")||r.includes("opus")}function j(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&l(r))return!0;let t=V(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let o=V(e,"description");if(pr.some(s=>s.test(o)))return!0;let i=V(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function fr(e,r){return{provider:u,model:we,rule:`policy:cursor_default${r}`,requestedModel:e}}function Ie(e){let{routing:r,task:t}=e,o=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&l(o))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(j(t)||r.rule==="explicit:cli"&&l(r.provider)||!l(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return fr(r.model,i)}function gr(e,r=u){let t=e?.trim();return t?l(t)?u:t==="codex"?"codex":t:r}function hr(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(u)?[...new Set(r.map(t=>l(t)?u:t))]:r.every(t=>l(t))?[u]:r}var yr=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,vr=/\b(npm run build\b|next build\b)\b/i,br=/\b(vercel (build|deploy|--prod))\b/i,kr=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function Y(e){let r=e.trim();return r?kr.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:br.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:vr.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:yr.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var S="heavy_verification_token_required";import{spawnSync as Tr}from"node:child_process";a();import{closeSync as Er,existsSync as z,mkdirSync as Ar,openSync as Or,readdirSync as Ne,readFileSync as Pr,unlinkSync as Be,writeFileSync as wr}from"node:fs";import X from"node:path";import{mkdirSync as Rr}from"node:fs";import{tmpdir as Sr}from"node:os";import _ from"node:path";import{homedir as xr}from"node:os";import De from"node:path";function We(){let e=process.env.KYNVER_STATE_ROOT;return e?De.resolve(e):De.join(xr(),".kynver","state")}function _r(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function Cr(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?_.resolve(e):_r()?_.join(Sr(),"kynver","state","heavy-verification"):_.join(We(),"heavy-verification")}function G(){return _.join(Cr(),"slots")}function y(){let e=G();return Rr(e,{recursive:!0}),e}var v=120*6e4,Me=1;function Ir(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function A(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function C(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Ir(e,Me):Me}function Dr(e){return`slot-${e}`}function Wr(e,r=G()){return X.join(r,`${e}.json`)}function J(e){if(!z(e))return null;try{let r=JSON.parse(Pr(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function E(e,r=v){if(!e||!D(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Mr(e,r){let t=J(e);if(E(t,r))try{Be(e)}catch{}}function Nr(e){return Ar(e,{recursive:!0}),e}function Q(e={}){let r=Nr(e.slotsDir??y()),t=e.staleMs??v,o=0;for(let i of Ne(r)){if(!i.endsWith(".json"))continue;let s=X.join(r,i),c=z(s);Mr(s,t),c&&!z(s)&&(o+=1)}return o}function Br(e={}){let r=e.slotsDir??y(),t=e.staleMs??v;Q({slotsDir:r,staleMs:t});let o=[];for(let i of Ne(r)){if(!i.endsWith(".json"))continue;let s=J(X.join(r,i));s&&!E(s,t)&&o.push(s)}return o}function q(e={}){return Br(e).length}function b(e,r={}){if(A())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:C(),reason:null};let t=r.slotsDir??y(),o=r.staleMs??v,i=r.maxSlots??C();Q({slotsDir:t,staleMs:o});for(let c=0;c<i;c+=1){let P=Dr(c),w=Wr(P,t),k=J(w);if(k&&E(k,o))try{Be(w)}catch{}else if(k&&!E(k,o))continue;let Ue={slotId:P,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let m=Or(w,"wx");wr(m,JSON.stringify(Ue,null,2),"utf8"),Er(m);let Ke=q({slotsDir:t,staleMs:o});return{admitted:!0,slotId:P,activeSlots:Ke,maxSlots:i,reason:null}}catch(m){if(m.code==="EEXIST")continue;throw m}}let s=q({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function O(e,r={}){if(A())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:C(),reason:null};let t=r.slotsDir??y(),o=r.staleMs??v,i=r.maxSlots??C();Q({slotsDir:t,staleMs:o});let s=q({slotsDir:t,staleMs:o}),c=s<i;return{admitted:c,slotId:null,activeSlots:s,maxSlots:i,reason:c?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function Ur(e){e<=0||Tr(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function Te(e,r,t=2e3,o={}){let i=Date.now()+Math.max(0,r),s=b(e,o);for(;!s.admitted&&Date.now()<i;)Ur(Math.min(t,i-Date.now())),s=b(e,o);return s}function Kr(e,r={}){let t=Y(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...O(e),slotId:null}};if(A())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...O(e),slotId:null}};let o=r.waitMs??0,i=o>0?Te(e,o,r.pollMs):b(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:S,commandClass:t.commandClass,reason:t.reason??i.reason??S,verificationGate:i}}export{u as DEFAULT_WORKER_PROVIDER,S as HEAVY_VERIFICATION_TOKEN_REQUIRED,$e as auditWorkerEnv,Y as classifyHeavyShellCommand,Ie as enforceCursorWorkerProvider,Kr as gateWorkerShellCommand,l as isClaudeFamilyProvider,I as isForbiddenWorkerEnvKey,Z as listForbiddenWorkerEnvKeys,hr as preferCursorExecutor,gr as resolveConfiguredWorkerProvider,p as scrubWorkerEnv,j as taskAllowsClaudeWorker};
package/dist/status.d.ts CHANGED
@@ -55,7 +55,10 @@ export interface HarnessWorkerRecord {
55
55
  runId: string;
56
56
  status: string;
57
57
  pid?: number;
58
+ /** Model id passed to the worker provider. */
58
59
  model?: string;
60
+ /** Worker provider key frozen at spawn for status/completion readback. */
61
+ provider?: string;
59
62
  branch: string;
60
63
  worktreePath: string;
61
64
  workerDir: string;
@@ -183,7 +186,7 @@ export interface RawHarnessWorkerStatus {
183
186
  instructionPolicyEvidence?: InstructionPolicyEvidenceSnapshot | null;
184
187
  /** Model the worker was launched with — echoed from worker.json for usage tracking. */
185
188
  model?: string | null;
186
- /** Orchestration provider key (codex | cursor | claude) — echoed from worker.json. */
189
+ /** Worker provider key (codex | cursor | claude) frozen at spawn for usage/routing readback. */
187
190
  provider?: string | null;
188
191
  /** Physical pool label — ghost | forge (runtime ≥ 0.1.115). */
189
192
  boxKind?: string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.1.154",
3
+ "version": "0.1.157",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",