@kynver-app/runtime 0.2.0 → 0.2.4

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.
@@ -1,8 +1,8 @@
1
- var u=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function M(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 te(e){let r=e.trim();if(!r)return null;let t=M(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let l=M(s[1]??"");l&&n.push(l)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let l=M(r.slice(i,a+1));l&&n.push(l)}return n.length>0?n[n.length-1]:null}function ne(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?te(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=te(t);return n||t}var oe=u(()=>{"use strict"});import{existsSync as kr,mkdirSync as Kt,readFileSync as Rr,readdirSync as Mt,statSync as se,writeFileSync as Ft}from"node:fs";function ie(e){console.error(e),process.exit(1)}function F(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function C(e){try{return JSON.parse(e)}catch{return null}}function A(e){try{return se(e).size}catch{return 0}}function w(e){try{return se(e).mtime.toISOString()}catch{return null}}function ae(e,r){return kr(e)?Rr(e,"utf8").split(`
1
+ var u=(e,r,n)=>()=>{if(n)throw n[0];try{return e&&(r=e(e=0)),r}catch(t){throw n=[t],t}};function L(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function le(e){let r=e.trim();if(!r)return null;let n=L(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let l=L(s[1]??"");l&&t.push(l)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let l=L(r.slice(i,a+1));l&&t.push(l)}return t.length>0?t[t.length-1]:null}function ue(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?le(r)??(r.trim()||null):r;let n=typeof e.summary=="string"?e.summary.trim():"";if(!n)return null;let t=le(n);return t||n}var ce=u(()=>{"use strict"});import{existsSync as Er,mkdirSync as zn,readFileSync as Cr,readdirSync as Jn,statSync as de,writeFileSync as qn}from"node:fs";function me(e){console.error(e),process.exit(1)}function $(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function A(e){try{return JSON.parse(e)}catch{return null}}function O(e){try{return de(e).size}catch{return 0}}function w(e){try{return de(e).mtime.toISOString()}catch{return null}}function fe(e,r){return Er(e)?Cr(e,"utf8").split(`
2
2
  `).slice(-r).join(`
3
- `):""}function O(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function le(e){let r=null,t=-1/0;for(let n of e){if(!n)continue;let o=Date.parse(n);Number.isFinite(o)&&o>t&&(t=o,r=n)}return r}function H(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var p=u(()=>{"use strict"});import{existsSync as xr,readFileSync as Sr}from"node:fs";function ue(e){return e==="complete"}function ce(e){return ue(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function de(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!xr(e))return r;let t=Date.now()+_r,n=new Date(t).toISOString(),o=Sr(e,"utf8").split(`
4
- `).filter(Boolean);for(let s of o){let i=C(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)),ue(r.lastHeartbeatPhase)&&(r.terminalFinalResult=ne(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 _r,me=u(()=>{"use strict";oe();p();_r=6e4});function Er(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function Cr(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 Ar(e){let r=Er(e[0]);return!!(r&&vr.has(r))}function L(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function $(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function wr(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function Or(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;fe.has(n)&&(t+=1);continue}r.push(n)}}return r}function Ir(e){let r=!1,t=e.map((o,s)=>{let i=wr(o),a=e[s-1];return a&&fe.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=Or(t);if(n.length===2){let[o,s]=n;if($(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};if(L(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 j(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=Cr(i.trim());if(!a.length||!Ar(a))return i;let l=Ir(a);return l.changed?(o=!0,l.argv.join(" ")):i});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function pe(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 Pr(e){let{pattern:r,target:t}=pe(e);return r?$(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:L(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function Wr(e){let{pattern:r,target:t}=pe(e);if(!r)return null;if($(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&L(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function Nr(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 Br(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 Y(e){let r=e.meta?.trim()||(e.command?Br(e.command):null)||null;if(r){let t=Pr(r),n=Nr(t);if(n)return n;let o=Wr(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=j(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 vr,fe,ge=u(()=>{"use strict";vr=new Set(["rg","ripgrep","grep"]),fe=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 Kr(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 x(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Mr(e){let r=e.metadata;if(!x(r))return null;let t=r.vulnerabilities;if(!x(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 Fr(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 Hr(e,r){let t=e.error;if(x(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
- `).find(Boolean)??o,160):"npm audit failed"}function Lr(e){let r=`${e.stdout}
6
- ${e.stderr}`.trim(),t=Kr(r);if(!t||!x(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(x(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Hr(t,e.stderr)}`};let n=Mr(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:Fr(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function $r(e){return Tr.test(e)}function jr(e){return Ur.test(e)}function Yr(e){let r=Y({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&&Dr.test(n)){let i=R(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=j(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 he(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if($r(e.command)){let i=r.trim()||n.trim()||t.trim();return Lr({exitCode:e.exitCode,stdout:i,stderr:t})}if(jr(e.command))return Yr({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=Y({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 Tr,Ur,Dr,ye=u(()=>{"use strict";ge();Tr=/\bnpm\s+audit\b/i,Ur=/\b(rg|ripgrep)\b/i,Dr=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as Vr,readFileSync as Gr}from"node:fs";function zr(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Jr(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 qr(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 Xr(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 Qr(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function be(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null};if(!Vr(e))return r;let t=Gr(e,"utf8").split(`
7
- `).filter(Boolean);for(let n of t){let o=C(n);if(!o)continue;let s=zr(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=Jr(a);l&&(r.currentTool=l)}let i=Xr(o);i&&Qr(r,he({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&qr(r,o)}return r}var ke=u(()=>{"use strict";ye();p()});function et(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Re(e){let r=(e??"").trim();if(!r)return null;for(let t of Zr)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${et(r)}`};return null}var Zr,xe=u(()=>{"use strict";Zr=[{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 Se(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function rt(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 tt(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Se(e.head)}function nt(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 _e(e){if(e.alive||rt(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Se(e.headCommit)??tt(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:nt(s,r,t)}}var ve=u(()=>{"use strict"});var ot,tn,Ee=u(()=>{"use strict";ot=["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"],tn=new Set(ot)});import{spawnSync as Ae}from"node:child_process";function st(e,r,t={}){let n=Ae("git",r,F({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);ie(o)}return n.stdout||""}function we(e){return st(e,["status","--short"],{allowFailure:!0}).split(`
8
- `).map(r=>r.trim()).filter(Boolean)}function I(e,r){try{let t=Ae("git",r,F({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 Ce(e,r,t){let n=I(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 Oe(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 V(n,"missing worktree path");let s=I(e,["rev-parse","HEAD"]);if(s.status!==0)return V(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=I(e,["rev-parse",n]);if(f.status!==0)return V(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=Ce(e,i,a),m=Ce(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 V(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var G=u(()=>{"use strict";p();Ee()});function S(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function it(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 at(e){if(S(e.headCommit)||S(e.prUrl)||S(e.artifactBundlePath)||S(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&S(r.head))}function Ie(e){return it(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:at(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 Pe(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var We=u(()=>{"use strict"});function z(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 Ne(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function P(e){let r=e.trim();if(!r)return null;let t=z(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=z(s[1]??"");d&&n.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=z(r.slice(i,a+1));d&&n.push(d)}if(n.length===0)return null;let l=n[n.length-1],m=Ne(l);for(let d of n){let c=Ne(d);c>m&&(l=d,m=c)}return l}var J=u(()=>{"use strict"});function Be(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 lt(e){return new Set(e.map(r=>Te(Be(r)??r)).filter(Boolean))}function Ue(e,r,t){let n=Be(e)??e;if(!n)return"unrelated";let o=Te(n);return lt(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var De=u(()=>{"use strict"});function k(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ut(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 W(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Ke(e){let r=null;if(typeof e=="string"){let o=P(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 Fe(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(!ut(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=Ke(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=Ke(n),a=new Map(i.map(c=>[W(c.prUrl),c])),l=new Set(r.targetPrUrls.map(c=>W(b(c)??c)).filter(Boolean)),m=Me(t,n);if(r.landingOnly)for(let c of m){let f=a.get(W(c)),g=Ue(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=W(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 He(e){if(e.blocked)return e.detail??e.reason}var Le=u(()=>{"use strict";J();De()});function dt(e){let r=Date.now();if(e.completionBlocker&&!$e(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&ft(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=Ie(o);if(s.blocked){let i=Pe(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Fe({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=He(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(mt(e))return{state:"done",reason:"empty abandoned worker record"};let o=Re(e.error);if(o)return{state:"blocked",reason:o.reason};let s=_e({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>ct)return{state:"needs_attention",reason:`no first stream event ${H(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>N?{state:"stale",reason:`no log/event/heartbeat activity for ${H(n)}s`}:{state:"ok",reason:"recent activity"}}function $e(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function mt(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 ft(e){let r=null;if(typeof e=="string"?r=P(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 pt(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??ce(t))}function je(e,r={}){let t=be(e.stdoutPath),n=de(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=pt(e,t.finalResult,n),i=o?!1:O(e.pid),a=A(e.stdoutPath),l=A(e.stderrPath),m=A(e.heartbeatPath),d=we(e.worktreePath),c=Oe(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=le([t.lastEventAt,n.lastHeartbeatAt,w(e.stdoutPath),w(e.stderrPath),w(e.heartbeatPath)]),g=t.error||!i&&!s&&ae(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=$e(h)?null:h,yr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,K=dt({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:yr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),br=y||K.state==="blocked"?"blocked":o||K.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:br,attention:K,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 Ye(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Ve(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var ct,N,_=u(()=>{"use strict";me();ke();xe();ve();G();We();Le();J();p();ct=18e4,N=6e5});var v=u(()=>{"use strict"});var qe=u(()=>{"use strict";G();v()});var B=u(()=>{"use strict"});var T=u(()=>{"use strict"});var Xe=u(()=>{"use strict"});var Mn,Fn,q=u(()=>{"use strict";Mn=25*1024*1024*1024,Fn=12*1024*1024*1024});var Yn,Vn,Qe=u(()=>{"use strict";q();Yn=5*1024*1024*1024,Vn=10*1024*1024*1024});var Qn,Zn,X=u(()=>{"use strict";Qe();q();Qn=30*1024*1024*1024,Zn=15*1024*1024*1024});var Ze=u(()=>{"use strict";U();p()});var er=u(()=>{"use strict";_()});var xt,St,nr=u(()=>{"use strict";Xe();E();B();T();D();X();U();Ze();er();p();xt=500*1024*1024,St=4*1024*1024*1024});var D=u(()=>{"use strict";nr()});import{homedir as vt}from"node:os";import Et from"node:path";var Ct,sr=u(()=>{"use strict";Ct=Et.join(vt(),".kynver",".env")});var ir=u(()=>{"use strict"});var ar=u(()=>{"use strict";ir()});var lr=u(()=>{"use strict"});var ur=u(()=>{"use strict";ar();lr()});var cr=u(()=>{"use strict"});var dr=u(()=>{"use strict";cr()});var mr=u(()=>{"use strict";sr();v();E();ur();dr()});var fr=u(()=>{"use strict";p()});import wt from"node:path";var fs,Z=u(()=>{"use strict";v();fr();fs=wt.join(".openclaw","harness")});var ee=u(()=>{"use strict";E();B();T();D();Z()});import{homedir as Nt,totalmem as Is}from"node:os";import re from"node:path";var pr,Hs,Ls,$s,js,E=u(()=>{"use strict";qe();v();p();B();T();D();X();mr();ee();pr=re.join(Nt(),".kynver"),Hs=re.join(pr,"config.json"),Ls=re.join(pr,"credentials"),$s=500*1024*1024,js=4*1024*1024*1024});var gr=u(()=>{"use strict";E();Z();ee();p()});var U=u(()=>{"use strict";gr();p()});_();var Ge="kynver-harness:",gt="@runner:";function ze(e){return e?.trim()?e.trim():null}function ht(e){let r=ze(e);if(!r?.startsWith(Ge))return null;let t=r.slice(Ge.length),n=t.indexOf(gt);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Je(e,r){let t=ze(r);return t?ht(e)===t:!1}_();p();function yt(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Je(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>N?{health:"stale",reason:`heartbeat older than ${Math.floor(N/1e3)}s`}:t.alive&&r.pid&&!O(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"}}U();function hr(e){return!!e.completionReportedAt?.trim()}_();function Bt(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"),hr(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"),Ve(t)&&n.push(t.attention.reason||"landing gate blocked");let o=Ye(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{Bt as assessAutoCompleteEligibility,yt as classifyWorkerHealth,je as computeWorkerStatus};
3
+ `):""}function I(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function pe(e){let r=null,n=-1/0;for(let t of e){if(!t)continue;let o=Date.parse(t);Number.isFinite(o)&&o>n&&(n=o,r=t)}return r}function j(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var p=u(()=>{"use strict"});import{existsSync as Ar,readFileSync as Or}from"node:fs";function ge(e){return e==="complete"}function he(e){return ge(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function ye(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!Ar(e))return r;let n=Date.now()+wr,t=new Date(n).toISOString(),o=Or(e,"utf8").split(`
4
+ `).filter(Boolean);for(let s of o){let i=A(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>n?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:l,clampedTo:t}):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)),ge(r.lastHeartbeatPhase)&&(r.terminalFinalResult=ue(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 wr,be=u(()=>{"use strict";ce();p();wr=6e4});function Pr(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function Nr(e){if(!e)return[];let r=[],n="",t,o=!1;for(let s of e){if(o){n+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(t){s===t?t=void 0:n+=s;continue}if(s==='"'||s==="'"){t=s;continue}if(/\s/.test(s)){n&&(r.push(n),n="");continue}n+=s}return n&&r.push(n),r}function Wr(e){let r=Pr(e[0]);return!!(r&&Ir.has(r))}function Y(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function V(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function Br(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function Ur(e){let r=[];for(let n=1;n<e.length;n+=1){let t=e[n];if(t){if(t==="--"){r.push(...e.slice(n+1));break}if(t.startsWith("-")){if(t.includes("="))continue;ke.has(t)&&(n+=1);continue}r.push(t)}}return r}function Tr(e){let r=!1,n=e.map((o,s)=>{let i=Br(o),a=e[s-1];return a&&ke.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),t=Ur(n);if(t.length===2){let[o,s]=t;if(V(s))return{argv:[n[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};if(Y(s))return{argv:[n[0]??"rg","-g",s,o,"."],changed:!0}}return r&&t.length===1?{argv:[...n,"."],changed:!0}:{argv:n,changed:r}}function G(e){let r=e.trim();if(!r)return{command:r,changed:!1};let n=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",t=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=t.map(i=>{let a=Nr(i.trim());if(!a.length||!Wr(a))return i;let l=Tr(a);return l.changed?(o=!0,l.argv.join(" ")):i});return o?{command:s.join(n),changed:!0}:{command:r,changed:!1}}function Re(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 n=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return n?{pattern:n[1],target:n[2]?.trim()}:{}}function Kr(e){let{pattern:r,target:n}=Re(e);return r?V(n)?{kind:"rg_exclude_syntax",pattern:r,target:n}:Y(n)?{kind:"bad_scope",pattern:r,target:n}:{kind:"not_repo_search",pattern:r,target:n}:{kind:"not_repo_search"}}function Dr(e){let{pattern:r,target:n}=Re(e);if(!r)return null;if(V(n)){let t=`${n.trim()}/**`;return{command:`rg "${r}" -g '${t}' .`,changed:!0}}return n&&Y(n)?{command:`rg -g ${n} "${r}" .`,changed:!0}:null}function Mr(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 Fr(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 z(e){let r=e.meta?.trim()||(e.command?Fr(e.command):null)||null;if(r){let n=Kr(r),t=Mr(n);if(t)return t;let o=Dr(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 n=G(e.command);if(n.changed)return`Ripgrep scope may be invalid. Retry with: \`${n.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 Ir,ke,xe=u(()=>{"use strict";Ir=new Set(["rg","ripgrep","grep"]),ke=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function S(e,r=200){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function jr(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let n=r.indexOf("{"),t=r.lastIndexOf("}");if(n>=0&&t>n)try{return JSON.parse(r.slice(n,t+1))}catch{return null}return null}function v(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Yr(e){let r=e.metadata;if(!v(r))return null;let n=r.vulnerabilities;if(!v(n))return null;let t=s=>typeof n[s]=="number"?n[s]:0,o={info:t("info"),low:t("low"),moderate:t("moderate"),high:t("high"),critical:t("critical"),total:t("total")};return typeof n.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function Vr(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 n=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${n}) \u2014 remediation required`}function Gr(e,r){let n=e.error;if(v(n)){let s=typeof n.summary=="string"?n.summary.trim():"",i=typeof n.code=="string"?n.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let t=typeof e.message=="string"?e.message.trim():"";if(t)return t;let o=r.trim();return o?S(o.split(`
5
+ `).find(Boolean)??o,160):"npm audit failed"}function zr(e){let r=`${e.stdout}
6
+ ${e.stderr}`.trim(),n=jr(r);if(!n||!v(n)){let o=S(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(v(n.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Gr(n,e.stderr)}`};let t=Yr(n);return t?e.exitCode===0&&t.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:t}:{kind:"audit_findings",exitCode:e.exitCode,summary:Vr(t),audit:t}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Jr(e){return Hr.test(e)}function qr(e){return Lr.test(e)}function Xr(e){let r=z({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 t=(e.stderr||e.interleaved).trim();if(t&&$r.test(t)){let i=S(t,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=G(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 n=S(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${n}`}}function Se(e){let r=e.stdout??"",n=e.stderr??"",t=e.interleavedOutput??"";if(Jr(e.command)){let i=r.trim()||t.trim()||n.trim();return zr({exitCode:e.exitCode,stdout:i,stderr:n})}if(qr(e.command))return Xr({command:e.command,exitCode:e.exitCode,stdout:r,stderr:n,interleaved:t});let o=z({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=S(t||r||n||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Hr,Lr,$r,ve=u(()=>{"use strict";xe();Hr=/\bnpm\s+audit\b/i,Lr=/\b(rg|ripgrep)\b/i,$r=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as Qr,readFileSync as Zr}from"node:fs";function en(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function rn(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let n=r.slice(0,-8);return n.length?n:r}return null}function nn(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 tn(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let n=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!n||typeof n!="object"||Array.isArray(n))return null;let t=n,o=t.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=t.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 on(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function _e(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null};if(!Qr(e))return r;let n=Zr(e,"utf8").split(`
7
+ `).filter(Boolean);for(let t of n){let o=A(t);if(!o)continue;let s=en(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=rn(a);l&&(r.currentTool=l)}let i=tn(o);i&&on(r,Se({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&nn(r,o)}return r}var Ee=u(()=>{"use strict";ve();p()});function an(e,r=240){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function Ce(e){let r=(e??"").trim();if(!r)return null;for(let n of sn)if(n.test.test(r))return{blocked:!0,reason:`${n.label}: ${an(r)}`};return null}var sn,Ae=u(()=>{"use strict";sn=[{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 Oe(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ln(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 un(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Oe(e.head)}function cn(e,r,n){let t=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&t.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&n){let o=n.length>12?n.slice(0,12):n;t.push(`commit ${o} ahead of base with no final result`)}return t.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),t.join(": ")}function we(e){if(e.alive||ln(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,n=Oe(e.headCommit)??un(e.gitAncestry),t=r>0,o=!!n;if(!t&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=t&&o?"both":t?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:n,attentionReason:cn(s,r,n)}}var Ie=u(()=>{"use strict"});var dn,mt,Pe=u(()=>{"use strict";dn=["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"],mt=new Set(dn)});import{spawnSync as We}from"node:child_process";function mn(e,r,n={}){let t=We("git",r,$({cwd:e,encoding:"utf8"}));if(t.status!==0&&!n.allowFailure){let o=`git ${r.join(" ")} failed: ${t.stderr||t.stdout}`;if(n.throwError)throw new Error(o);me(o)}return t.stdout||""}function Be(e){return mn(e,["status","--short"],{allowFailure:!0}).split(`
8
+ `).map(r=>r.trim()).filter(Boolean)}function P(e,r){try{let n=We("git",r,$({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}function Ne(e,r,n){let t=P(e,["merge-base","--is-ancestor",r,n]);return t.status===0?{isAncestor:!0,error:null}:t.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:t.error||t.stderr||t.stdout||`git exited ${t.status}`}}function Ue(e,r="origin/main"){let n=typeof r=="string"?{base:r}:r,t=n.baseCommit?.trim()||n.base?.trim()||"origin/main",o=n.baseCommit?.trim()||null;if(!e)return J(t,"missing worktree path");let s=P(e,["rev-parse","HEAD"]);if(s.status!==0)return J(t,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=P(e,["rev-parse",t]);if(f.status!==0)return J(t,f.error||f.stderr||f.stdout||`failed to resolve ${t}`,s.stdout.trim());i=f.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let l=Ne(e,i,a),m=Ne(e,a,i),d=l.error||m.error||void 0;if(l.isAncestor==null||m.isAncestor==null)return{checked:!1,base:t,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:t,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:c,...d?{error:d}:{}}}function J(e,r,n=null){return{checked:!1,base:e,head:n,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var q=u(()=>{"use strict";p();Pe()});function _(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function fn(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 pn(e){if(_(e.headCommit)||_(e.prUrl)||_(e.artifactBundlePath)||_(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&_(r.head))}function Te(e){return fn(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:pn(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 Ke(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var De=u(()=>{"use strict"});function X(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function Me(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function N(e){let r=e.trim();if(!r)return null;let n=X(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=X(s[1]??"");d&&t.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=X(r.slice(i,a+1));d&&t.push(d)}if(t.length===0)return null;let l=t[t.length-1],m=Me(l);for(let d of t){let c=Me(d);c>m&&(l=d,m=c)}return l}var Q=u(()=>{"use strict"});function Fe(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 He(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function gn(e){return new Set(e.map(r=>He(Fe(r)??r)).filter(Boolean))}function Le(e,r,n){let t=Fe(e)??e;if(!t)return"unrelated";let o=He(t);return gn(r).has(o)?"contract":n?(n.outcome==="skipped"||n.outcome==="blocked")&&n.reason?.trim()?"support":(n.outcome==="merged","unrelated"):"unrelated"}var $e=u(()=>{"use strict"});function R(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function hn(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]}`:R(e)}function W(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function je(e){let r=null;if(typeof e=="string"){let o=N(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let n=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(n))return[];let t=[];for(let o of n){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=b(String(s.prUrl??s.pr_url??"")),a=R(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||t.push({prUrl:i,outcome:a,mergeCommit:R(s.mergeCommit??s.merge_commit),reason:R(s.reason)})}return t}function Ye(e,r){let n=[],t=b(R(e.prUrl)??"");if(t&&n.push(t),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=b(String(o.prUrl??o.pr_url??""));s&&n.push(s)}return[...new Set(n)]}function Ve(e){let{contract:r,snapshot:n}=e,t=e.finalResult??n.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!hn(t))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(R(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=Ye(n,t);if(!(t&&typeof t=="object"&&!Array.isArray(t)&&t.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=je(t).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=je(t),a=new Map(i.map(c=>[W(c.prUrl),c])),l=new Set(r.targetPrUrls.map(c=>W(b(c)??c)).filter(Boolean)),m=Ye(n,t);if(r.landingOnly)for(let c of m){let f=a.get(W(c)),g=Le(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=W(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 Ge(e){if(e.blocked)return e.detail??e.reason}var ze=u(()=>{"use strict";Q();$e()});function bn(e){let r=Date.now();if(e.completionBlocker&&!Je(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&Rn(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=Te(o);if(s.blocked){let i=Ke(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Ve({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Ge(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(kn(e))return{state:"done",reason:"empty abandoned worker record"};let o=Ce(e.error);if(o)return{state:"blocked",reason:o.reason};let s=we({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 n=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(n)&&r-n>yn)return{state:"needs_attention",reason:`no first stream event ${j(n)}s after start`};let t=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(t)&&r-t>B?{state:"stale",reason:`no log/event/heartbeat activity for ${j(t)}s`}:{state:"ok",reason:"recent activity"}}function Je(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function kn(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 Rn(e){let r=null;if(typeof e=="string"?r=N(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let n=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(n)?n.some(t=>!t||typeof t!="object"||Array.isArray(t)?!1:String(t.outcome??"").trim()==="merged"):!1}function xn(e,r,n){let t=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&t!==void 0&&t!==null?t:r||(t??he(n))}function qe(e,r={}){let n=_e(e.stdoutPath),t=ye(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=xn(e,n.finalResult,t),i=o?!1:I(e.pid),a=O(e.stdoutPath),l=O(e.stderrPath),m=O(e.heartbeatPath),d=Be(e.worktreePath),c=Ue(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=pe([n.lastEventAt,t.lastHeartbeatAt,w(e.stdoutPath),w(e.stderrPath),w(e.heartbeatPath)]),g=n.error||!i&&!s&&fe(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=Je(h)?null:h,vr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,H=bn({alive:i,finalResult:s,firstEventAt:n.firstEventAt,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,lastActivityAt:f,heartbeatBlocker:t.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:d,gitAncestry:c,completionBlocker:y,landingContract:vr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),_r=y||H.state==="blocked"?"blocked":o||H.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:_r,attention:H,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,firstEventAt:n.firstEventAt,lastEventAt:n.lastEventAt,lastActivityAt:f,currentTool:o?null:n.currentTool,heartbeatCount:t.heartbeatCount,lastHeartbeatAt:t.lastHeartbeatAt,lastHeartbeatPhase:t.lastHeartbeatPhase,lastHeartbeatSummary:t.lastHeartbeatSummary,heartbeatBlocker:t.heartbeatBlocker,timestampAnomalies:t.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 Xe(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Qe(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var yn,B,E=u(()=>{"use strict";be();Ee();Ae();Ie();q();De();ze();Q();p();yn=18e4,B=6e5});var C=u(()=>{"use strict"});var Z=u(()=>{"use strict";q();C()});var k=u(()=>{"use strict"});var U=u(()=>{"use strict"});var nr=u(()=>{"use strict"});var zt,Jt,ee=u(()=>{"use strict";zt=25*1024*1024*1024,Jt=12*1024*1024*1024});var eo,ro,tr=u(()=>{"use strict";ee();eo=5*1024*1024*1024,ro=10*1024*1024*1024});var ao,lo,re=u(()=>{"use strict";tr();ee();ao=30*1024*1024*1024,lo=15*1024*1024*1024});var or=u(()=>{"use strict";T();p()});var sr=u(()=>{"use strict";E()});var On,wn,lr=u(()=>{"use strict";nr();x();k();U();K();re();T();or();sr();p();On=500*1024*1024,wn=4*1024*1024*1024});var K=u(()=>{"use strict";lr()});import{homedir as Pn}from"node:os";import Nn from"node:path";var ur,oe=u(()=>{"use strict";ur=Nn.join(Pn(),".kynver",".env")});var cr=u(()=>{"use strict"});var dr=u(()=>{"use strict";cr()});var mr=u(()=>{"use strict"});var se=u(()=>{"use strict";dr();mr()});var fr=u(()=>{"use strict"});var pr=u(()=>{"use strict";fr()});var D=u(()=>{"use strict";oe();C();x();se();pr()});var gr=u(()=>{"use strict";k();k()});var hr=u(()=>{"use strict";oe();se();D()});var yr=u(()=>{"use strict";p()});import Kn from"node:path";var ws,ie=u(()=>{"use strict";C();yr();ws=Kn.join(".openclaw","harness")});var F=u(()=>{"use strict";x();k();U();K();ie()});var kr=u(()=>{"use strict";Z();k();gr();x();D();hr();p();F()});import{homedir as $n,totalmem as ri}from"node:os";import ae from"node:path";var Rr,fi,pi,gi,hi,x=u(()=>{"use strict";Z();C();p();k();U();K();re();D();kr();F();Rr=ae.join($n(),".kynver"),fi=ae.join(Rr,"config.json"),pi=ae.join(Rr,"credentials"),gi=500*1024*1024,hi=4*1024*1024*1024});var xr=u(()=>{"use strict";x();ie();F();p()});var T=u(()=>{"use strict";xr();p()});E();var Ze="kynver-harness:",Sn="@runner:";function er(e){return e?.trim()?e.trim():null}function vn(e){let r=er(e);if(!r?.startsWith(Ze))return null;let n=r.slice(Ze.length),t=n.indexOf(Sn);return t>=0?n.slice(0,t).trim()||null:n.trim()||null}function rr(e,r){let n=er(r);return n?vn(e)===n:!1}E();p();function _n(e){let{worker:r,status:n,taskLease:t}=e,o=t?.leaseOwner??null;if(r.dispatched&&t){if(t.status==="running"&&o&&!rr(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=t.leaseToken?.trim()??"";if(t.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(t.status==="running"&&!n.alive&&!n.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!n.alive&&!n.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(n.attention.state==="stale")return{health:"stale",reason:n.attention.reason};let s=n.lastHeartbeatAt?Date.parse(n.lastHeartbeatAt):NaN;return n.alive&&Number.isFinite(s)&&Date.now()-s>B?{health:"stale",reason:`heartbeat older than ${Math.floor(B/1e3)}s`}:n.alive&&r.pid&&!I(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:t?.status==="running"&&!n.alive&&n.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:n.attention.reason||"worker within expected lifecycle bounds"}}T();function Sr(e){return!!e.completionReportedAt?.trim()}E();function jn(e){let{worker:r,status:n}=e,t=[];r.localOnly&&t.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&t.push("missing agentOsId/taskId linkage"),Sr(r)&&t.push("completion already acknowledged"),r.completionBlocker&&t.push(r.completionBlocker),n.heartbeatBlocker&&n.alive&&t.push(`worker heartbeat blocker: ${n.heartbeatBlocker}`),n.attention.state==="blocked"&&t.push(n.attention.reason||"worker attention blocked"),Qe(n)&&t.push(n.attention.reason||"landing gate blocked");let o=Xe(n),s;return o?n.finalResult?s="final_result":n.alive?s="terminal_status":s="process_exited":t.push("worker has not reached a terminal condition"),{eligible:o&&t.length===0,terminalVerified:o,terminalReason:s,blockers:t}}export{jn as assessAutoCompleteEligibility,_n as classifyWorkerHealth,qe as computeWorkerStatus};
@@ -1 +1 @@
1
- var o=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function B(e){return tr.has(e)?!0:nr.some(r=>e.endsWith(r))}function ne(e){return Object.keys(e).filter(B).sort()}function k(e){let r={...e};for(let t of Object.keys(r))B(t)&&delete r[t];return r}function or(e){let r=ne(e);return{forbiddenPresent:r,safe:r.length===0}}var rr,tr,nr,_=o(()=>{"use strict";rr=["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"],tr=new Set(rr),nr=["_SECRET","_API_KEY"]});function K(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict"});var F=o(()=>{"use strict";a();_()});var h=o(()=>{"use strict"});var ue=o(()=>{"use strict";F();h()});var S=o(()=>{"use strict"});var E=o(()=>{"use strict"});var de=o(()=>{"use strict"});var Mt,Kt,L=o(()=>{"use strict";Mt=25*1024*1024*1024,Kt=12*1024*1024*1024});var $t,jt,me=o(()=>{"use strict";L();$t=5*1024*1024*1024,jt=10*1024*1024*1024});var Jt,Xt,H=o(()=>{"use strict";me();L();Jt=30*1024*1024*1024,Xt=15*1024*1024*1024});var fe=o(()=>{"use strict";a()});import vr from"node:path";var an,$=o(()=>{"use strict";h();fe();an=vr.join(".openclaw","harness")});var j=o(()=>{"use strict";m();S();E();C();$()});var he=o(()=>{"use strict";m();$();j();a()});var G=o(()=>{"use strict";he();a()});var ye=o(()=>{"use strict";G();a()});var ve=o(()=>{"use strict"});var be=o(()=>{"use strict";ve();a()});var Re=o(()=>{"use strict"});var xe=o(()=>{"use strict";Re()});var ke=o(()=>{"use strict";xe();a()});var _e=o(()=>{"use strict"});var Se=o(()=>{"use strict"});var Ee=o(()=>{"use strict"});var z=o(()=>{"use strict"});var Ce=o(()=>{"use strict"});var Oe=o(()=>{"use strict";z();Ce()});var Ae=o(()=>{"use strict";be();ke();_e();Se();F();Ee();Oe();z();a()});var we=o(()=>{"use strict";Ae()});var Ar,wr,Pe=o(()=>{"use strict";de();m();S();E();C();H();G();ye();we();a();Ar=500*1024*1024,wr=4*1024*1024*1024});var C=o(()=>{"use strict";Pe()});import{homedir as Pr}from"node:os";import Ir from"node:path";var Nr,Ie=o(()=>{"use strict";Nr=Ir.join(Pr(),".kynver",".env")});var Ne=o(()=>{"use strict"});var De=o(()=>{"use strict";Ne()});var We=o(()=>{"use strict"});var Be=o(()=>{"use strict";De();We()});var Te=o(()=>{"use strict"});var Me=o(()=>{"use strict";Te()});var Ke=o(()=>{"use strict";Ie();h();m();Be();Me()});import{homedir as Wr,totalmem as Ui}from"node:os";import q from"node:path";var Ue,Ji,Xi,Qi,Zi,m=o(()=>{"use strict";ue();h();a();S();E();C();H();Ke();j();Ue=q.join(Wr(),".kynver"),Ji=q.join(Ue,"config.json"),Xi=q.join(Ue,"credentials"),Qi=500*1024*1024,Zi=4*1024*1024*1024});_();_();var T="KYNVER_NO_PROD_DB_CREDENTIALS",ir=["KYNVER_ENV_FILE"],sr=new Set(["1","true","yes","on"]);function ie(e){let r=e[T]?.trim().toLowerCase();return r!==void 0&&sr.has(r)}function g(e,r={}){let t=k(e);if(!r.reviewWorker)return t;let n={...t,[T]:"1"};for(let i of ir)delete n[i];return n}var oe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function ar(e,r={}){let t=g(e,r),n=Object.keys(t).filter(u=>u.endsWith("_SECRET")||u.endsWith("_API_KEY")||oe.includes(u)),i=oe.every(u=>t[u]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=ie(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:i,envFilePointerStripped:s,safe:i&&n.length===0&&s&&(!r.reviewWorker||l)}}var lr="expert-lane-pr-review:",cr="plan-review-task",ur="scheduledjob:";function se(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function dr(e){let r=(e.executorRef??"").toLowerCase();if(r.startsWith(lr)||r===cr||r.startsWith("daemon-review:"))return!0;if(r.startsWith(ur)&&e.parentTaskId){let n=se(e.personaSlug);if(n==="lorentz"||n==="dalton")return!0}let t=(e.title??"").toLowerCase();if(t.includes("expert pr review"))return!0;if(e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))){let n=se(e.personaSlug);if(n==="lorentz"||n==="dalton")return!0}return!1}var mr=/^claude[-_]/i,pr=/^(?:opus|sonnet|haiku)\b/i;function ae(e){let r=e.trim();return mr.test(r)||pr.test(r)}function le(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function fr(e){return le(e)?"codex":ae(e)?"claude":(ce(e),"cursor")}function gr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:null:null}function hr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?ae(n)||le(n)||ce(n)?{lane:t,model:n,provider:fr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function M(e){let r=typeof e=="string"?e.trim():"";return r?gr(r)??hr(r):null}m();a();a();a();var Gs=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function Ur(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var Fr=Ur();var He="composer-2.5";var d="cursor",Lr=new Set(["claude","opus","anthropic"]),Hr=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function w(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Lr.has(r)?!0:r.includes("claude")||r.includes("opus")}function J(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(r))return!0;let t=w(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=M(w(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c($r(n.model)))return!0;let i=w(e,"description");if(Hr.some(l=>l.test(i)))return!0;let s=w(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function $r(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function jr(e,r){return{provider:d,model:He,rule:`policy:cursor_default${r}`,requestedModel:e}}function $e(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(J(t)||r.rule==="explicit:cli"&&c(r.provider)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return jr(r.model,i)}function Vr(e,r=d){let t=e?.trim();return t?c(t)?d:t==="codex"?"codex":t:r}function Yr(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(d)?[...new Set(r.map(t=>c(t)?d:t))]:r.every(t=>c(t))?[d]:r}var Gr=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,zr=/\b(npm run build\b|next build\b)\b/i,qr=/\b(vercel (build|deploy|--prod))\b/i,Jr=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function X(e){let r=e.trim();return r?Jr.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:qr.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:zr.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:Gr.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 P="heavy_verification_token_required";import{spawnSync as ft}from"node:child_process";a();import{closeSync as tt,existsSync as b,mkdirSync as nt,openSync as ot,readdirSync as Ge,readFileSync as it,statSync as st,unlinkSync as ze,writeFileSync as at}from"node:fs";import ee from"node:path";import{mkdirSync as Qr}from"node:fs";import{tmpdir as Zr}from"node:os";import I from"node:path";import{homedir as Xr}from"node:os";import je from"node:path";function Ve(){let e=process.env.KYNVER_STATE_ROOT;return e?je.resolve(e):je.join(Xr(),".kynver","state")}function et(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function rt(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?I.resolve(e):et()?I.join(Zr(),"kynver","state","heavy-verification"):I.join(Ve(),"heavy-verification")}function Q(){return I.join(rt(),"slots")}function v(){let e=Q();return Qr(e,{recursive:!0}),e}var R=120*6e4,Ye=1;function lt(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function D(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function N(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?lt(e,Ye):Ye}function ct(e){return`slot-${e}`}function ut(e,r=Q()){return ee.join(r,`${e}.json`)}function re(e){if(!b(e))return null;try{let r=JSON.parse(it(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 qe(e,r=R){if(!e||!K(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Je(e,r){let t=re(e);if(t)return qe(t,r);if(!b(e))return!0;try{return Date.now()-st(e).mtimeMs>r}catch{return!0}}function dt(e,r){if(Je(e,r))try{ze(e)}catch{}}function mt(e){return nt(e,{recursive:!0}),e}function te(e={}){let r=mt(e.slotsDir??v()),t=e.staleMs??R,n=0;for(let i of Ge(r)){if(!i.endsWith(".json"))continue;let s=ee.join(r,i),l=b(s);dt(s,t),l&&!b(s)&&(n+=1)}return n}function pt(e={}){let r=e.slotsDir??v(),t=e.staleMs??R;te({slotsDir:r,staleMs:t});let n=[];for(let i of Ge(r)){if(!i.endsWith(".json"))continue;let s=re(ee.join(r,i));s&&!qe(s,t)&&n.push(s)}return n}function Z(e={}){return pt(e).length}function x(e,r={}){if(D())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:N(),reason:null};let t=r.slotsDir??v(),n=r.staleMs??R,i=r.maxSlots??N();te({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=ct(l),p=ut(u,t),Qe=re(p);if(Je(p,n))try{ze(p)}catch{}else if(Qe||b(p))continue;let Ze={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let f=ot(p,"wx");at(f,JSON.stringify(Ze,null,2),"utf8"),tt(f);let er=Z({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:er,maxSlots:i,reason:null}}catch(f){if(f.code==="EEXIST")continue;throw f}}let s=Z({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function W(e,r={}){if(D())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:N(),reason:null};let t=r.slotsDir??v(),n=r.staleMs??R,i=r.maxSlots??N();te({slotsDir:t,staleMs:n});let s=Z({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function gt(e){e<=0||ft(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function Xe(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=x(e,n);for(;!s.admitted&&Date.now()<i;)gt(Math.min(t,i-Date.now())),s=x(e,n);return s}function ht(e,r={}){let t=X(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...W(e),slotId:null}};if(D())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...W(e),slotId:null}};let n=r.waitMs??0,i=n>0?Xe(e,n,r.pollMs):x(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:P,commandClass:t.commandClass,reason:t.reason??i.reason??P,verificationGate:i}}export{d as DEFAULT_WORKER_PROVIDER,P as HEAVY_VERIFICATION_TOKEN_REQUIRED,T as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,ar as auditReviewWorkerCredentialScope,or as auditWorkerEnv,g as buildWorkerSpawnEnv,X as classifyHeavyShellCommand,$e as enforceCursorWorkerProvider,ht as gateWorkerShellCommand,c as isClaudeFamilyProvider,B as isForbiddenWorkerEnvKey,dr as isHarnessExpertReviewWorker,ie as isNoProdCredentialReviewEnvironment,ne as listForbiddenWorkerEnvKeys,Yr as preferCursorExecutor,Vr as resolveConfiguredWorkerProvider,k as scrubWorkerEnv,J as taskAllowsClaudeWorker};
1
+ var o=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function M(e){return lr.has(e)?!0:cr.some(r=>e.endsWith(r))}function le(e){return Object.keys(e).filter(M).sort()}function S(e){let r={...e};for(let t of Object.keys(r))M(t)&&delete r[t];return r}function ur(e){let r=le(e);return{forbiddenPresent:r,safe:r.length===0}}var ar,lr,cr,_=o(()=>{"use strict";ar=["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"],lr=new Set(ar),cr=["_SECRET","_API_KEY"]});function H(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict"});var j=o(()=>{"use strict";a();_()});var y=o(()=>{"use strict"});var V=o(()=>{"use strict";j();y()});var m=o(()=>{"use strict"});var E=o(()=>{"use strict"});var ge=o(()=>{"use strict"});var Yt,Gt,Y=o(()=>{"use strict";Yt=25*1024*1024*1024,Gt=12*1024*1024*1024});var Qt,Zt,he=o(()=>{"use strict";Y();Qt=5*1024*1024*1024,Zt=10*1024*1024*1024});var sn,an,G=o(()=>{"use strict";he();Y();sn=30*1024*1024*1024,an=15*1024*1024*1024});var ve=o(()=>{"use strict";a()});import _r from"node:path";var hn,z=o(()=>{"use strict";y();ve();hn=_r.join(".openclaw","harness")});var O=o(()=>{"use strict";p();m();E();A();z()});var xe=o(()=>{"use strict";p();z();O();a()});var J=o(()=>{"use strict";xe();a()});var ke=o(()=>{"use strict";J();a()});var Se=o(()=>{"use strict"});var _e=o(()=>{"use strict";Se();a()});var Ee=o(()=>{"use strict"});var Ce=o(()=>{"use strict";Ee()});var Oe=o(()=>{"use strict";Ce();a()});var Ae=o(()=>{"use strict"});var Ie=o(()=>{"use strict"});var we=o(()=>{"use strict"});var X=o(()=>{"use strict"});var Pe=o(()=>{"use strict"});var Ne=o(()=>{"use strict";X();Pe()});var De=o(()=>{"use strict";_e();Oe();Ae();Ie();j();we();Ne();X();a()});var Be=o(()=>{"use strict";De()});var Nr,Dr,Te=o(()=>{"use strict";ge();p();m();E();A();G();J();ke();Be();a();Nr=500*1024*1024,Dr=4*1024*1024*1024});var A=o(()=>{"use strict";Te()});import{homedir as Br}from"node:os";import Tr from"node:path";var We,Q=o(()=>{"use strict";We=Tr.join(Br(),".kynver",".env")});var Ke=o(()=>{"use strict"});var Ue=o(()=>{"use strict";Ke()});var Me=o(()=>{"use strict"});var Z=o(()=>{"use strict";Ue();Me()});var Fe=o(()=>{"use strict"});var Le=o(()=>{"use strict";Fe()});var w=o(()=>{"use strict";Q();y();p();Z();Le()});var He=o(()=>{"use strict";m();m()});var $e=o(()=>{"use strict";Q();Z();w()});var je=o(()=>{"use strict";V();m();He();p();w();$e();a();O()});import{homedir as $r,totalmem as us}from"node:os";import ee from"node:path";var Ve,ks,Ss,_s,Es,p=o(()=>{"use strict";V();y();a();m();E();A();G();w();je();O();Ve=ee.join($r(),".kynver"),ks=ee.join(Ve,"config.json"),Ss=ee.join(Ve,"credentials"),_s=500*1024*1024,Es=4*1024*1024*1024});_();_();var F="KYNVER_NO_PROD_DB_CREDENTIALS",dr=["KYNVER_ENV_FILE"],mr=new Set(["1","true","yes","on"]);function ue(e){let r=e[F]?.trim().toLowerCase();return r!==void 0&&mr.has(r)}function h(e,r={}){let t=S(e);if(!r.reviewWorker)return t;let n={...t,[F]:"1"};for(let i of dr)delete n[i];return n}var ce=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function pr(e,r={}){let t=h(e,r),n=Object.keys(t).filter(u=>u.endsWith("_SECRET")||u.endsWith("_API_KEY")||ce.includes(u)),i=ce.every(u=>t[u]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=ue(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:i,envFilePointerStripped:s,safe:i&&n.length===0&&s&&(!r.reviewWorker||l)}}var fr="expert-lane-pr-review:",gr="plan-review-task",hr="scheduledjob:";function de(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function yr(e){let r=(e.executorRef??"").toLowerCase();if(r.startsWith(fr)||r===gr||r.startsWith("daemon-review:"))return!0;if(r.startsWith(hr)&&e.parentTaskId){let n=de(e.personaSlug);if(n==="lorentz"||n==="dalton")return!0}let t=(e.title??"").toLowerCase();if(t.includes("expert pr review"))return!0;if(e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))){let n=de(e.personaSlug);if(n==="lorentz"||n==="dalton")return!0}return!1}var vr=/^claude[-_]/i,br=/^(?:opus|sonnet|haiku)\b/i;function me(e){let r=e.trim();return vr.test(r)||br.test(r)}function pe(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function fe(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Rr(e){return pe(e)?"codex":me(e)?"claude":(fe(e),"cursor")}function xr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:null:null}function kr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?me(n)||pe(n)||fe(n)?{lane:t,model:n,provider:Rr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function L(e){let r=typeof e=="string"?e.trim():"";return r?xr(r)??kr(r):null}p();a();a();a();var ba=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function zr(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var qr=zr();var ze="composer-2.5";var d="cursor",Jr=new Set(["claude","opus","anthropic"]),Xr=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function D(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Jr.has(r)?!0:r.includes("claude")||r.includes("opus")}function re(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(r))return!0;let t=D(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=L(D(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c(Qr(n.model)))return!0;let i=D(e,"description");if(Xr.some(l=>l.test(i)))return!0;let s=D(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Qr(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Zr(e,r){return{provider:d,model:ze,rule:`policy:cursor_default${r}`,requestedModel:e}}function qe(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(re(t)||r.rule==="explicit:cli"&&c(r.provider)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Zr(r.model,i)}function et(e,r=d){let t=e?.trim();return t?c(t)?d:t==="codex"?"codex":t:r}function rt(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(d)?[...new Set(r.map(t=>c(t)?d:t))]:r.every(t=>c(t))?[d]:r}var tt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,nt=/\b(npm run build\b|next build\b)\b/i,ot=/\b(vercel (build|deploy|--prod))\b/i,it=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function te(e){let r=e.trim();return r?it.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:ot.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:nt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:tt.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 B="heavy_verification_token_required";import{spawnSync as St}from"node:child_process";a();import{closeSync as dt,existsSync as R,mkdirSync as mt,openSync as pt,readdirSync as Ze,readFileSync as ft,statSync as gt,unlinkSync as er,writeFileSync as ht}from"node:fs";import ie from"node:path";import{mkdirSync as at}from"node:fs";import{tmpdir as lt}from"node:os";import T from"node:path";import{homedir as st}from"node:os";import Je from"node:path";function Xe(){let e=process.env.KYNVER_STATE_ROOT;return e?Je.resolve(e):Je.join(st(),".kynver","state")}function ct(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function ut(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?T.resolve(e):ct()?T.join(lt(),"kynver","state","heavy-verification"):T.join(Xe(),"heavy-verification")}function ne(){return T.join(ut(),"slots")}function b(){let e=ne();return at(e,{recursive:!0}),e}var x=120*6e4,Qe=1;function yt(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function K(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function W(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?yt(e,Qe):Qe}function vt(e){return`slot-${e}`}function bt(e,r=ne()){return ie.join(r,`${e}.json`)}function se(e){if(!R(e))return null;try{let r=JSON.parse(ft(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 rr(e,r=x){if(!e||!H(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function tr(e,r){let t=se(e);if(t)return rr(t,r);if(!R(e))return!0;try{return Date.now()-gt(e).mtimeMs>r}catch{return!0}}function Rt(e,r){if(tr(e,r))try{er(e)}catch{}}function xt(e){return mt(e,{recursive:!0}),e}function ae(e={}){let r=xt(e.slotsDir??b()),t=e.staleMs??x,n=0;for(let i of Ze(r)){if(!i.endsWith(".json"))continue;let s=ie.join(r,i),l=R(s);Rt(s,t),l&&!R(s)&&(n+=1)}return n}function kt(e={}){let r=e.slotsDir??b(),t=e.staleMs??x;ae({slotsDir:r,staleMs:t});let n=[];for(let i of Ze(r)){if(!i.endsWith(".json"))continue;let s=se(ie.join(r,i));s&&!rr(s,t)&&n.push(s)}return n}function oe(e={}){return kt(e).length}function k(e,r={}){if(K())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:W(),reason:null};let t=r.slotsDir??b(),n=r.staleMs??x,i=r.maxSlots??W();ae({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=vt(l),f=bt(u,t),or=se(f);if(tr(f,n))try{er(f)}catch{}else if(or||R(f))continue;let ir={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let g=pt(f,"wx");ht(g,JSON.stringify(ir,null,2),"utf8"),dt(g);let sr=oe({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:sr,maxSlots:i,reason:null}}catch(g){if(g.code==="EEXIST")continue;throw g}}let s=oe({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function U(e,r={}){if(K())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:W(),reason:null};let t=r.slotsDir??b(),n=r.staleMs??x,i=r.maxSlots??W();ae({slotsDir:t,staleMs:n});let s=oe({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function _t(e){e<=0||St(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function nr(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=k(e,n);for(;!s.admitted&&Date.now()<i;)_t(Math.min(t,i-Date.now())),s=k(e,n);return s}function Et(e,r={}){let t=te(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...U(e),slotId:null}};if(K())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...U(e),slotId:null}};let n=r.waitMs??0,i=n>0?nr(e,n,r.pollMs):k(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:B,commandClass:t.commandClass,reason:t.reason??i.reason??B,verificationGate:i}}export{d as DEFAULT_WORKER_PROVIDER,B as HEAVY_VERIFICATION_TOKEN_REQUIRED,F as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,pr as auditReviewWorkerCredentialScope,ur as auditWorkerEnv,h as buildWorkerSpawnEnv,te as classifyHeavyShellCommand,qe as enforceCursorWorkerProvider,Et as gateWorkerShellCommand,c as isClaudeFamilyProvider,M as isForbiddenWorkerEnvKey,yr as isHarnessExpertReviewWorker,ue as isNoProdCredentialReviewEnvironment,le as listForbiddenWorkerEnvKeys,rt as preferCursorExecutor,et as resolveConfiguredWorkerProvider,S as scrubWorkerEnv,re as taskAllowsClaudeWorker};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.2.0",
3
+ "version": "0.2.4",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,6 +14,11 @@
14
14
  "import": "./dist/index.js",
15
15
  "default": "./dist/index.js"
16
16
  },
17
+ "./local-run-store": {
18
+ "types": "./dist/local-run-store/index.d.ts",
19
+ "import": "./dist/local-run-store/index.js",
20
+ "default": "./dist/local-run-store/index.js"
21
+ },
17
22
  "./worker-persona-catalog": {
18
23
  "types": "./dist/worker-persona-catalog.d.ts",
19
24
  "import": "./dist/worker-persona-catalog.js",
@@ -103,7 +108,7 @@
103
108
  "README.md"
104
109
  ],
105
110
  "scripts": {
106
- "build": "esbuild src/cli.ts src/index.ts src/node-runtime-policy.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.ts src/chat/command-auth-proof.ts src/server/monitor.ts src/server/landing.ts src/server/worker-policy.ts src/server/orchestration.ts src/server/heavy-verification.ts src/server/memory-cost.ts src/server/pr-evidence.ts src/server/default-repo.ts src/server/cleanup.ts src/server/repo-search.ts src/server/harness-notice.ts src/server/memory-cost-enforce.ts src/server/wsl-crash-dumps.ts --bundle --platform=node --format=esm --packages=external --outbase=src --outdir=dist --minify && tsc -p tsconfig.json --emitDeclarationOnly && node scripts/chmod-cli-bin.mjs",
111
+ "build": "esbuild src/cli.ts src/index.ts src/node-runtime-policy.ts src/local-run-store/index.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.ts src/chat/command-auth-proof.ts src/server/monitor.ts src/server/landing.ts src/server/worker-policy.ts src/server/orchestration.ts src/server/heavy-verification.ts src/server/memory-cost.ts src/server/pr-evidence.ts src/server/default-repo.ts src/server/cleanup.ts src/server/repo-search.ts src/server/harness-notice.ts src/server/memory-cost-enforce.ts src/server/wsl-crash-dumps.ts --bundle --platform=node --format=esm --packages=external --outbase=src --outdir=dist --minify && tsc -p tsconfig.json --emitDeclarationOnly && node scripts/chmod-cli-bin.mjs",
107
112
  "typecheck": "tsc -p tsconfig.json --noEmit",
108
113
  "test": "vitest run --config vitest.config.ts",
109
114
  "prepublishOnly": "node ../../scripts/npm-publish-guard.mjs && npm run build"
@@ -122,7 +127,7 @@
122
127
  ],
123
128
  "license": "UNLICENSED",
124
129
  "devDependencies": {
125
- "@types/node": "^22.9.0",
130
+ "@types/node": "^24.0.0",
126
131
  "esbuild": "^0.28.1",
127
132
  "typescript": "^5.6.3",
128
133
  "vitest": "^4.1.9"