@kynver-app/runtime 0.1.166 → 0.1.171

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 B(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 ee(e){let r=e.trim();if(!r)return null;let t=B(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let l=B(s[1]??"");l&&n.push(l)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let l=B(r.slice(i,a+1));l&&n.push(l)}return n.length>0?n[n.length-1]:null}function re(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?ee(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=ee(t);return n||t}var te=u(()=>{"use strict"});import{existsSync as fr,mkdirSync as Wt,readFileSync as pr,readdirSync as Ut,statSync as ne,writeFileSync as Tt}from"node:fs";function oe(e){console.error(e),process.exit(1)}function D(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function E(e){try{return JSON.parse(e)}catch{return null}}function C(e){try{return ne(e).size}catch{return 0}}function A(e){try{return ne(e).mtime.toISOString()}catch{return null}}function se(e,r){return fr(e)?pr(e,"utf8").split(`
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 N(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 ee(e){let r=e.trim();if(!r)return null;let t=N(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let l=N(s[1]??"");l&&n.push(l)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let l=N(r.slice(i,a+1));l&&n.push(l)}return n.length>0?n[n.length-1]:null}function re(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?ee(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=ee(t);return n||t}var te=u(()=>{"use strict"});import{existsSync as fr,mkdirSync as Wt,readFileSync as pr,readdirSync as It,statSync as ne,writeFileSync as Ut}from"node:fs";function oe(e){console.error(e),process.exit(1)}function D(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function E(e){try{return JSON.parse(e)}catch{return null}}function C(e){try{return ne(e).size}catch{return 0}}function A(e){try{return ne(e).mtime.toISOString()}catch{return null}}function se(e,r){return fr(e)?pr(e,"utf8").split(`
2
2
  `).slice(-r).join(`
3
- `):""}function w(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function ie(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 M(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var p=u(()=>{"use strict"});import{existsSync as gr,readFileSync as hr}from"node:fs";function ae(e){return e==="complete"}function le(e){return ae(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function ue(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!gr(e))return r;let t=Date.now()+yr,n=new Date(t).toISOString(),o=hr(e,"utf8").split(`
4
- `).filter(Boolean);for(let s of o){let i=E(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let l=String(a.ts),m=Date.parse(l);Number.isFinite(m)&&m>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:l,clampedTo:n}):r.lastHeartbeatAt=l}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),ae(r.lastHeartbeatPhase)&&(r.terminalFinalResult=re(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(l=>!!l&&typeof l=="object"&&typeof l.prUrl=="string"))}return r}var yr,ce=u(()=>{"use strict";te();p();yr=6e4});function br(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function Rr(e){if(!e)return[];let r=[],t="",n,o=!1;for(let s of e){if(o){t+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(n){s===n?n=void 0:t+=s;continue}if(s==='"'||s==="'"){n=s;continue}if(/\s/.test(s)){t&&(r.push(t),t="");continue}t+=s}return t&&r.push(t),r}function Sr(e){let r=br(e[0]);return!!(r&&kr.has(r))}function K(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function F(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function xr(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function _r(e){let r=[];for(let t=1;t<e.length;t+=1){let n=e[t];if(n){if(n==="--"){r.push(...e.slice(t+1));break}if(n.startsWith("-")){if(n.includes("="))continue;de.has(n)&&(t+=1);continue}r.push(n)}}return r}function vr(e){let r=!1,t=e.map((o,s)=>{let i=xr(o),a=e[s-1];return a&&de.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=_r(t);if(n.length===2){let[o,s]=n;if(F(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};if(K(s))return{argv:[t[0]??"rg","-g",s,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function H(e){let r=e.trim();if(!r)return{command:r,changed:!1};let t=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",n=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=n.map(i=>{let a=Rr(i.trim());if(!a.length||!Sr(a))return i;let l=vr(a);return l.changed?(o=!0,l.argv.join(" ")):i});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function me(e){if(!e)return{};let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(|$)/iu);if(r)return{pattern:r[1],target:r[2]?.trim()};let t=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return t?{pattern:t[1],target:t[2]?.trim()}:{}}function Er(e){let{pattern:r,target:t}=me(e);return r?F(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:K(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function Cr(e){let{pattern:r,target:t}=me(e);if(!r)return null;if(F(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&K(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function Ar(e){if(e.kind==="bad_scope"&&e.pattern?.includes("agent-os-land-pr")&&e.target==="package.json")return"Search package.json with a glob from the repo root: `rg -g package.json agent-os-land-pr .` \u2014 or run `node scripts/agent-os-land-pr.mjs <pr-url>` directly.";if(e.kind==="bad_scope"&&e.pattern&&e.target)return`Use \`rg -g '${e.target}' ${e.pattern} .\` from the repo root instead of treating ${e.target} as a folder.`;if(e.kind==="rg_exclude_syntax"&&e.pattern){let r=e.target?`${e.target.trim()}/**`:"!node_modules/**";return`Repo search scope \`${e.target??"!node_modules"}\` is not a valid ripgrep path. Use \`rg "${e.pattern}" -g '${r}' .\` from the repo root (exclude globs need a \`/**\` suffix).`}return e.kind==="no_matches"&&e.pattern?`No matches for "${e.pattern}". Try a broader pattern, drop overly short tokens, or search from the repo root with \`rg "${e.pattern}" .\`.`:null}function wr(e){let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(agent\)|\s*failed|$)/iu);return r?`search "${r[1]}" in ${r[2]?.trim()}`:null}function $(e){let r=e.meta?.trim()||(e.command?wr(e.command):null)||null;if(r){let t=Er(r),n=Ar(t);if(n)return n;let o=Cr(r);if(o?.changed)return`Repo search used an invalid scope. Retry with: \`${o.command}\`.`}if(e.command&&/\b(rg|ripgrep)\b/i.test(e.command)){let t=H(e.command);if(t.changed)return`Ripgrep scope may be invalid. Retry with: \`${t.command}\`.`;if(e.exitCode===1)return"Ripgrep returned no matches (exit 1). Try a broader pattern or search from the repo root."}return null}var kr,de,fe=u(()=>{"use strict";kr=new Set(["rg","ripgrep","grep"]),de=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function R(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Ur(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let t=r.indexOf("{"),n=r.lastIndexOf("}");if(t>=0&&n>t)try{return JSON.parse(r.slice(t,n+1))}catch{return null}return null}function S(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Tr(e){let r=e.metadata;if(!S(r))return null;let t=r.vulnerabilities;if(!S(t))return null;let n=s=>typeof t[s]=="number"?t[s]:0,o={info:n("info"),low:n("low"),moderate:n("moderate"),high:n("high"),critical:n("critical"),total:n("total")};return typeof t.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function Ir(e){let r=[];e.critical&&r.push(`${e.critical} critical`),e.high&&r.push(`${e.high} high`),e.moderate&&r.push(`${e.moderate} moderate`),e.low&&r.push(`${e.low} low`),e.info&&r.push(`${e.info} info`);let t=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${t}) \u2014 remediation required`}function Nr(e,r){let t=e.error;if(S(t)){let s=typeof t.summary=="string"?t.summary.trim():"",i=typeof t.code=="string"?t.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let n=typeof e.message=="string"?e.message.trim():"";if(n)return n;let o=r.trim();return o?R(o.split(`
5
- `).find(Boolean)??o,160):"npm audit failed"}function Br(e){let r=`${e.stdout}
6
- ${e.stderr}`.trim(),t=Ur(r);if(!t||!S(t)){let o=R(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(S(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Nr(t,e.stderr)}`};let n=Tr(t);return n?e.exitCode===0&&n.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:n}:{kind:"audit_findings",exitCode:e.exitCode,summary:Ir(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Dr(e){return Or.test(e)}function Mr(e){return Pr.test(e)}function Kr(e){let r=$({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&&Wr.test(n)){let i=R(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=H(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=R(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function pe(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Dr(e.command)){let i=r.trim()||n.trim()||t.trim();return Br({exitCode:e.exitCode,stdout:i,stderr:t})}if(Mr(e.command))return Kr({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=$({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=R(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Or,Pr,Wr,ge=u(()=>{"use strict";fe();Or=/\bnpm\s+audit\b/i,Pr=/\b(rg|ripgrep)\b/i,Wr=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as Fr,readFileSync as Hr}from"node:fs";function $r(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Lr(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let t=r.slice(0,-8);return t.length?t:r}return null}function jr(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(e.error=String(r.result||r.api_error_status||"stream result error"))}function Yr(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let l=a,m=typeof l.exitCode=="number"?l.exitCode:0;return{command:s,exitCode:m,stdout:typeof l.stdout=="string"?l.stdout:"",stderr:typeof l.stderr=="string"?l.stderr:"",interleaved:typeof l.interleavedOutput=="string"?l.interleavedOutput:""}}function Gr(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function he(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null};if(!Fr(e))return r;let t=Hr(e,"utf8").split(`
7
- `).filter(Boolean);for(let n of t){let o=E(n);if(!o)continue;let s=$r(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=Lr(a);l&&(r.currentTool=l)}let i=Yr(o);i&&Gr(r,pe({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&jr(r,o)}return r}var ye=u(()=>{"use strict";ge();p()});function zr(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function ke(e){let r=(e??"").trim();if(!r)return null;for(let t of Vr)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${zr(r)}`};return null}var Vr,be=u(()=>{"use strict";Vr=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Re(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Jr(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function qr(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Re(e.head)}function Xr(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Se(e){if(e.alive||Jr(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Re(e.headCommit)??qr(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:Xr(s,r,t)}}var xe=u(()=>{"use strict"});var Qr,Jt,_e=u(()=>{"use strict";Qr=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Jt=new Set(Qr)});import{spawnSync as Ee}from"node:child_process";function Zr(e,r,t={}){let n=Ee("git",r,D({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=`git ${r.join(" ")} failed: ${n.stderr||n.stdout}`;if(t.throwError)throw new Error(o);oe(o)}return n.stdout||""}function Ce(e){return Zr(e,["status","--short"],{allowFailure:!0}).split(`
8
- `).map(r=>r.trim()).filter(Boolean)}function O(e,r){try{let t=Ee("git",r,D({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}function ve(e,r,t){let n=O(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function Ae(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return L(n,"missing worktree path");let s=O(e,["rev-parse","HEAD"]);if(s.status!==0)return L(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=O(e,["rev-parse",n]);if(f.status!==0)return L(n,f.error||f.stderr||f.stdout||`failed to resolve ${n}`,s.stdout.trim());i=f.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let l=ve(e,i,a),m=ve(e,a,i),d=l.error||m.error||void 0;if(l.isAncestor==null||m.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:"unknown",...d?{error:d}:{}};let c=l.isAncestor?"ahead":m.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:c,...d?{error:d}:{}}}function L(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var j=u(()=>{"use strict";p();_e()});function x(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function et(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function rt(e){if(x(e.headCommit)||x(e.prUrl)||x(e.artifactBundlePath)||x(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&x(r.head))}function we(e){return et(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:rt(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function Oe(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var Pe=u(()=>{"use strict"});function Y(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function We(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=Y(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=Y(s[1]??"");d&&n.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=Y(r.slice(i,a+1));d&&n.push(d)}if(n.length===0)return null;let l=n[n.length-1],m=We(l);for(let d of n){let c=We(d);c>m&&(l=d,m=c)}return l}var G=u(()=>{"use strict"});function Ue(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function Te(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function tt(e){return new Set(e.map(r=>Te(Ue(r)??r)).filter(Boolean))}function Ie(e,r,t){let n=Ue(e)??e;if(!n)return"unrelated";let o=Te(n);return tt(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Ne=u(()=>{"use strict"});function b(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function nt(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function k(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:b(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 Be(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=k(String(s.prUrl??s.pr_url??"")),a=b(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:b(s.mergeCommit??s.merge_commit),reason:b(s.reason)})}return n}function De(e,r){let t=[],n=k(b(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=k(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Me(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!nt(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?k(b(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?k(r.targetPrUrls[0]):null):null;if(s){let c=De(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=Be(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=Be(n),a=new Map(i.map(c=>[W(c.prUrl),c])),l=new Set(r.targetPrUrls.map(c=>W(k(c)??c)).filter(Boolean)),m=De(t,n);if(r.landingOnly)for(let c of m){let f=a.get(W(c)),g=Ie(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(k(c)??c),g=a.get(f);if(!g){d.push(f);continue}g.outcome!=="merged"&&!g.reason?.trim()&&d.push(f)}return d.length>0?{blocked:!0,reason:d.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${d.join(", ")}`}:{blocked:!1}}function Ke(e){if(e.blocked)return e.detail??e.reason}var Fe=u(()=>{"use strict";G();Ne()});function st(e){let r=Date.now();if(e.completionBlocker&&!He(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&at(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=we(o);if(s.blocked){let i=Oe(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Me({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Ke(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(it(e))return{state:"done",reason:"empty abandoned worker record"};let o=ke(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Se({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>ot)return{state:"needs_attention",reason:`no first stream event ${M(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>U?{state:"stale",reason:`no log/event/heartbeat activity for ${M(n)}s`}:{state:"ok",reason:"recent activity"}}function He(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function it(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function at(e){let r=null;if(typeof e=="string"?r=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 lt(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??le(t))}function $e(e,r={}){let t=he(e.stdoutPath),n=ue(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=lt(e,t.finalResult,n),i=o?!1:w(e.pid),a=C(e.stdoutPath),l=C(e.stderrPath),m=C(e.heartbeatPath),d=Ce(e.worktreePath),c=Ae(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=ie([t.lastEventAt,n.lastHeartbeatAt,A(e.stdoutPath),A(e.stderrPath),A(e.heartbeatPath)]),g=t.error||!i&&!s&&se(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=He(h)?null:h,dr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,N=st({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,lastActivityAt:f,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:d,gitAncestry:c,completionBlocker:y,landingContract:dr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),mr=y||N.state==="blocked"?"blocked":o||N.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:mr,attention:N,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:f,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:g,changedFiles:d,gitAncestry:c,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function Le(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function je(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var ot,U,_=u(()=>{"use strict";ce();ye();be();xe();j();Pe();Fe();G();p();ot=18e4,U=6e5});var v=u(()=>{"use strict"});var ze=u(()=>{"use strict";j();v()});var V=u(()=>{"use strict"});var z=u(()=>{"use strict"});var Je=u(()=>{"use strict"});var Un,Tn,J=u(()=>{"use strict";Un=25*1024*1024*1024,Tn=12*1024*1024*1024});var Mn,Kn,qe=u(()=>{"use strict";J();Mn=5*1024*1024*1024,Kn=10*1024*1024*1024});var Yn,Gn,q=u(()=>{"use strict";qe();J();Yn=30*1024*1024*1024,Gn=15*1024*1024*1024});var Xe=u(()=>{"use strict";T();p()});var Qe=u(()=>{"use strict";_()});var yt,kt,Ze=u(()=>{"use strict";Je();I();V();z();Q();q();T();Xe();Qe();p();yt=500*1024*1024,kt=4*1024*1024*1024});var Q=u(()=>{"use strict";Ze()});import{homedir as Rt}from"node:os";import St from"node:path";var xt,er=u(()=>{"use strict";xt=St.join(Rt(),".kynver",".env")});var rr=u(()=>{"use strict"});var tr=u(()=>{"use strict";rr()});var nr=u(()=>{"use strict"});var or=u(()=>{"use strict";tr();nr()});var sr=u(()=>{"use strict"});var ir=u(()=>{"use strict";sr()});var ar=u(()=>{"use strict";er();v();I();or();ir()});import{homedir as vt,totalmem as ds}from"node:os";import Z from"node:path";var lr,Ss,xs,_s,vs,I=u(()=>{"use strict";ze();v();p();V();z();Q();q();ar();lr=Z.join(vt(),".kynver"),Ss=Z.join(lr,"config.json"),xs=Z.join(lr,"credentials"),_s=500*1024*1024,vs=4*1024*1024*1024});import{homedir as Et}from"node:os";import Ct from"node:path";var Ws,ur=u(()=>{"use strict";I();v();p();Ws=Ct.join(Et(),".openclaw","harness")});var T=u(()=>{"use strict";ur();p()});_();var Ye="kynver-harness:",ut="@runner:";function Ge(e){return e?.trim()?e.trim():null}function ct(e){let r=Ge(e);if(!r?.startsWith(Ye))return null;let t=r.slice(Ye.length),n=t.indexOf(ut);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Ve(e,r){let t=Ge(r);return t?ct(e)===t:!1}_();p();function dt(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Ve(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=n.leaseToken?.trim()??"";if(n.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(n.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(t.attention.state==="stale")return{health:"stale",reason:t.attention.reason};let s=t.lastHeartbeatAt?Date.parse(t.lastHeartbeatAt):NaN;return t.alive&&Number.isFinite(s)&&Date.now()-s>U?{health:"stale",reason:`heartbeat older than ${Math.floor(U/1e3)}s`}:t.alive&&r.pid&&!w(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:n?.status==="running"&&!t.alive&&t.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:t.attention.reason||"worker within expected lifecycle bounds"}}T();function cr(e){return!!e.completionReportedAt?.trim()}_();function At(e){let{worker:r,status:t}=e,n=[];r.localOnly&&n.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&n.push("missing agentOsId/taskId linkage"),cr(r)&&n.push("completion already acknowledged"),r.completionBlocker&&n.push(r.completionBlocker),t.heartbeatBlocker&&t.alive&&n.push(`worker heartbeat blocker: ${t.heartbeatBlocker}`),t.attention.state==="blocked"&&n.push(t.attention.reason||"worker attention blocked"),je(t)&&n.push(t.attention.reason||"landing gate blocked");let o=Le(t),s;return o?t.finalResult?s="final_result":t.alive?s="terminal_status":s="process_exited":n.push("worker has not reached a terminal condition"),{eligible:o&&n.length===0,terminalVerified:o,terminalReason:s,blockers:n}}export{At as assessAutoCompleteEligibility,dt as classifyWorkerHealth,$e as computeWorkerStatus};
3
+ `):""}function w(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function ie(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 K(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var p=u(()=>{"use strict"});import{existsSync as gr,readFileSync as hr}from"node:fs";function ae(e){return e==="complete"}function le(e){return ae(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function ue(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!gr(e))return r;let t=Date.now()+yr,n=new Date(t).toISOString(),o=hr(e,"utf8").split(`
4
+ `).filter(Boolean);for(let s of o){let i=E(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let l=String(a.ts),m=Date.parse(l);Number.isFinite(m)&&m>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:l,clampedTo:n}):r.lastHeartbeatAt=l}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),ae(r.lastHeartbeatPhase)&&(r.terminalFinalResult=re(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(l=>!!l&&typeof l=="object"&&typeof l.prUrl=="string"))}return r}var yr,ce=u(()=>{"use strict";te();p();yr=6e4});function kr(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function Rr(e){if(!e)return[];let r=[],t="",n,o=!1;for(let s of e){if(o){t+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(n){s===n?n=void 0:t+=s;continue}if(s==='"'||s==="'"){n=s;continue}if(/\s/.test(s)){t&&(r.push(t),t="");continue}t+=s}return t&&r.push(t),r}function xr(e){let r=kr(e[0]);return!!(r&&br.has(r))}function M(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function F(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function Sr(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function _r(e){let r=[];for(let t=1;t<e.length;t+=1){let n=e[t];if(n){if(n==="--"){r.push(...e.slice(t+1));break}if(n.startsWith("-")){if(n.includes("="))continue;de.has(n)&&(t+=1);continue}r.push(n)}}return r}function vr(e){let r=!1,t=e.map((o,s)=>{let i=Sr(o),a=e[s-1];return a&&de.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=_r(t);if(n.length===2){let[o,s]=n;if(F(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};if(M(s))return{argv:[t[0]??"rg","-g",s,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function H(e){let r=e.trim();if(!r)return{command:r,changed:!1};let t=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",n=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=n.map(i=>{let a=Rr(i.trim());if(!a.length||!xr(a))return i;let l=vr(a);return l.changed?(o=!0,l.argv.join(" ")):i});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function me(e){if(!e)return{};let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(|$)/iu);if(r)return{pattern:r[1],target:r[2]?.trim()};let t=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return t?{pattern:t[1],target:t[2]?.trim()}:{}}function Er(e){let{pattern:r,target:t}=me(e);return r?F(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:M(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function Cr(e){let{pattern:r,target:t}=me(e);if(!r)return null;if(F(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&M(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function Ar(e){if(e.kind==="bad_scope"&&e.pattern?.includes("agent-os-land-pr")&&e.target==="package.json")return"Search package.json with a glob from the repo root: `rg -g package.json agent-os-land-pr .` \u2014 or run `node scripts/agent-os-land-pr.mjs <pr-url>` directly.";if(e.kind==="bad_scope"&&e.pattern&&e.target)return`Use \`rg -g '${e.target}' ${e.pattern} .\` from the repo root instead of treating ${e.target} as a folder.`;if(e.kind==="rg_exclude_syntax"&&e.pattern){let r=e.target?`${e.target.trim()}/**`:"!node_modules/**";return`Repo search scope \`${e.target??"!node_modules"}\` is not a valid ripgrep path. Use \`rg "${e.pattern}" -g '${r}' .\` from the repo root (exclude globs need a \`/**\` suffix).`}return e.kind==="no_matches"&&e.pattern?`No matches for "${e.pattern}". Try a broader pattern, drop overly short tokens, or search from the repo root with \`rg "${e.pattern}" .\`.`:null}function wr(e){let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(agent\)|\s*failed|$)/iu);return r?`search "${r[1]}" in ${r[2]?.trim()}`:null}function $(e){let r=e.meta?.trim()||(e.command?wr(e.command):null)||null;if(r){let t=Er(r),n=Ar(t);if(n)return n;let o=Cr(r);if(o?.changed)return`Repo search used an invalid scope. Retry with: \`${o.command}\`.`}if(e.command&&/\b(rg|ripgrep)\b/i.test(e.command)){let t=H(e.command);if(t.changed)return`Ripgrep scope may be invalid. Retry with: \`${t.command}\`.`;if(e.exitCode===1)return"Ripgrep returned no matches (exit 1). Try a broader pattern or search from the repo root."}return null}var br,de,fe=u(()=>{"use strict";br=new Set(["rg","ripgrep","grep"]),de=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function R(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Ir(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 Ur(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 Tr(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 Br(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 Nr(e){let r=`${e.stdout}
6
+ ${e.stderr}`.trim(),t=Ir(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: ${Br(t,e.stderr)}`};let n=Ur(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:Tr(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Dr(e){return Or.test(e)}function Kr(e){return Pr.test(e)}function Mr(e){let r=$({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&&Wr.test(n)){let i=R(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=H(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=R(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function pe(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Dr(e.command)){let i=r.trim()||n.trim()||t.trim();return Nr({exitCode:e.exitCode,stdout:i,stderr:t})}if(Kr(e.command))return Mr({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=$({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=R(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Or,Pr,Wr,ge=u(()=>{"use strict";fe();Or=/\bnpm\s+audit\b/i,Pr=/\b(rg|ripgrep)\b/i,Wr=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as Fr,readFileSync as Hr}from"node:fs";function $r(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Lr(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let t=r.slice(0,-8);return t.length?t:r}return null}function jr(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(e.error=String(r.result||r.api_error_status||"stream result error"))}function Yr(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let l=a,m=typeof l.exitCode=="number"?l.exitCode:0;return{command:s,exitCode:m,stdout:typeof l.stdout=="string"?l.stdout:"",stderr:typeof l.stderr=="string"?l.stderr:"",interleaved:typeof l.interleavedOutput=="string"?l.interleavedOutput:""}}function Gr(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function he(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null};if(!Fr(e))return r;let t=Hr(e,"utf8").split(`
7
+ `).filter(Boolean);for(let n of t){let o=E(n);if(!o)continue;let s=$r(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=Lr(a);l&&(r.currentTool=l)}let i=Yr(o);i&&Gr(r,pe({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&jr(r,o)}return r}var ye=u(()=>{"use strict";ge();p()});function zr(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function be(e){let r=(e??"").trim();if(!r)return null;for(let t of Vr)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${zr(r)}`};return null}var Vr,ke=u(()=>{"use strict";Vr=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Re(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Jr(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function qr(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Re(e.head)}function Xr(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function xe(e){if(e.alive||Jr(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Re(e.headCommit)??qr(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:Xr(s,r,t)}}var Se=u(()=>{"use strict"});var Qr,Jt,_e=u(()=>{"use strict";Qr=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY"],Jt=new Set(Qr)});import{spawnSync as Ee}from"node:child_process";function Zr(e,r,t={}){let n=Ee("git",r,D({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=`git ${r.join(" ")} failed: ${n.stderr||n.stdout}`;if(t.throwError)throw new Error(o);oe(o)}return n.stdout||""}function Ce(e){return Zr(e,["status","--short"],{allowFailure:!0}).split(`
8
+ `).map(r=>r.trim()).filter(Boolean)}function O(e,r){try{let t=Ee("git",r,D({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}function ve(e,r,t){let n=O(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function Ae(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return L(n,"missing worktree path");let s=O(e,["rev-parse","HEAD"]);if(s.status!==0)return L(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=O(e,["rev-parse",n]);if(f.status!==0)return L(n,f.error||f.stderr||f.stdout||`failed to resolve ${n}`,s.stdout.trim());i=f.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let l=ve(e,i,a),m=ve(e,a,i),d=l.error||m.error||void 0;if(l.isAncestor==null||m.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:"unknown",...d?{error:d}:{}};let c=l.isAncestor?"ahead":m.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:c,...d?{error:d}:{}}}function L(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var j=u(()=>{"use strict";p();_e()});function S(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function et(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function rt(e){if(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 we(e){return et(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:rt(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function Oe(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var Pe=u(()=>{"use strict"});function Y(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function We(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=Y(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=Y(s[1]??"");d&&n.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=Y(r.slice(i,a+1));d&&n.push(d)}if(n.length===0)return null;let l=n[n.length-1],m=We(l);for(let d of n){let c=We(d);c>m&&(l=d,m=c)}return l}var G=u(()=>{"use strict"});function Ie(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 Ue(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function tt(e){return new Set(e.map(r=>Ue(Ie(r)??r)).filter(Boolean))}function Te(e,r,t){let n=Ie(e)??e;if(!n)return"unrelated";let o=Ue(n);return tt(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Be=u(()=>{"use strict"});function k(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function nt(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function b(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:k(e)}function 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 Ne(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 De(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 Ke(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!nt(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?b(k(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=De(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=Ne(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=Ne(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=De(t,n);if(r.landingOnly)for(let c of m){let f=a.get(W(c)),g=Te(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 Me(e){if(e.blocked)return e.detail??e.reason}var Fe=u(()=>{"use strict";G();Be()});function st(e){let r=Date.now();if(e.completionBlocker&&!He(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&at(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=we(o);if(s.blocked){let i=Oe(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Ke({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Me(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(it(e))return{state:"done",reason:"empty abandoned worker record"};let o=be(e.error);if(o)return{state:"blocked",reason:o.reason};let s=xe({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>ot)return{state:"needs_attention",reason:`no first stream event ${K(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>I?{state:"stale",reason:`no log/event/heartbeat activity for ${K(n)}s`}:{state:"ok",reason:"recent activity"}}function He(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function it(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function at(e){let r=null;if(typeof e=="string"?r=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 lt(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??le(t))}function $e(e,r={}){let t=he(e.stdoutPath),n=ue(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=lt(e,t.finalResult,n),i=o?!1:w(e.pid),a=C(e.stdoutPath),l=C(e.stderrPath),m=C(e.heartbeatPath),d=Ce(e.worktreePath),c=Ae(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=ie([t.lastEventAt,n.lastHeartbeatAt,A(e.stdoutPath),A(e.stderrPath),A(e.heartbeatPath)]),g=t.error||!i&&!s&&se(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=He(h)?null:h,dr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,B=st({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:l,heartbeatBytes:m,lastActivityAt:f,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:d,gitAncestry:c,completionBlocker:y,landingContract:dr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),mr=y||B.state==="blocked"?"blocked":o||B.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:mr,attention:B,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 Le(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function je(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var ot,I,_=u(()=>{"use strict";ce();ye();ke();Se();j();Pe();Fe();G();p();ot=18e4,I=6e5});var v=u(()=>{"use strict"});var ze=u(()=>{"use strict";j();v()});var V=u(()=>{"use strict"});var z=u(()=>{"use strict"});var Je=u(()=>{"use strict"});var In,Un,J=u(()=>{"use strict";In=25*1024*1024*1024,Un=12*1024*1024*1024});var Kn,Mn,qe=u(()=>{"use strict";J();Kn=5*1024*1024*1024,Mn=10*1024*1024*1024});var Yn,Gn,q=u(()=>{"use strict";qe();J();Yn=30*1024*1024*1024,Gn=15*1024*1024*1024});var Xe=u(()=>{"use strict";U();p()});var Qe=u(()=>{"use strict";_()});var yt,bt,Ze=u(()=>{"use strict";Je();T();V();z();Q();q();U();Xe();Qe();p();yt=500*1024*1024,bt=4*1024*1024*1024});var Q=u(()=>{"use strict";Ze()});import{homedir as Rt}from"node:os";import xt from"node:path";var St,er=u(()=>{"use strict";St=xt.join(Rt(),".kynver",".env")});var rr=u(()=>{"use strict"});var tr=u(()=>{"use strict";rr()});var nr=u(()=>{"use strict"});var or=u(()=>{"use strict";tr();nr()});var sr=u(()=>{"use strict"});var ir=u(()=>{"use strict";sr()});var ar=u(()=>{"use strict";er();v();T();or();ir()});import{homedir as vt,totalmem as ds}from"node:os";import Z from"node:path";var lr,xs,Ss,_s,vs,T=u(()=>{"use strict";ze();v();p();V();z();Q();q();ar();lr=Z.join(vt(),".kynver"),xs=Z.join(lr,"config.json"),Ss=Z.join(lr,"credentials"),_s=500*1024*1024,vs=4*1024*1024*1024});import{homedir as Et}from"node:os";import Ct from"node:path";var Ws,ur=u(()=>{"use strict";T();v();p();Ws=Ct.join(Et(),".openclaw","harness")});var U=u(()=>{"use strict";ur();p()});_();var Ye="kynver-harness:",ut="@runner:";function Ge(e){return e?.trim()?e.trim():null}function ct(e){let r=Ge(e);if(!r?.startsWith(Ye))return null;let t=r.slice(Ye.length),n=t.indexOf(ut);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Ve(e,r){let t=Ge(r);return t?ct(e)===t:!1}_();p();function dt(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Ve(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=n.leaseToken?.trim()??"";if(n.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(n.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(t.attention.state==="stale")return{health:"stale",reason:t.attention.reason};let s=t.lastHeartbeatAt?Date.parse(t.lastHeartbeatAt):NaN;return t.alive&&Number.isFinite(s)&&Date.now()-s>I?{health:"stale",reason:`heartbeat older than ${Math.floor(I/1e3)}s`}:t.alive&&r.pid&&!w(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:n?.status==="running"&&!t.alive&&t.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:t.attention.reason||"worker within expected lifecycle bounds"}}U();function cr(e){return!!e.completionReportedAt?.trim()}_();function At(e){let{worker:r,status:t}=e,n=[];r.localOnly&&n.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&n.push("missing agentOsId/taskId linkage"),cr(r)&&n.push("completion already acknowledged"),r.completionBlocker&&n.push(r.completionBlocker),t.heartbeatBlocker&&t.alive&&n.push(`worker heartbeat blocker: ${t.heartbeatBlocker}`),t.attention.state==="blocked"&&n.push(t.attention.reason||"worker attention blocked"),je(t)&&n.push(t.attention.reason||"landing gate blocked");let o=Le(t),s;return o?t.finalResult?s="final_result":t.alive?s="terminal_status":s="process_exited":n.push("worker has not reached a terminal condition"),{eligible:o&&n.length===0,terminalVerified:o,terminalReason:s,blockers:n}}export{At as assessAutoCompleteEligibility,dt as classifyWorkerHealth,$e as computeWorkerStatus};
@@ -1 +1 @@
1
- import{existsSync as R}from"node:fs";import{homedir as K}from"node:os";import H from"node:path";import{createHash as A}from"node:crypto";import{statSync as B}from"node:fs";import{spawnSync as _}from"node:child_process";function a(e){try{let t=B(e),r=`${e}|${t.size}|${t.mtimeMs}`;return A("sha256").update(r).digest("hex").slice(0,16)}catch{return}}function u(e){return A("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function c(e,t){for(let r of t){let n=process.env[r]?.trim();if(n)return n}return e}function d(e,t,r={}){let n=r.timeoutMs??8e3;try{let o=_(e,t,{encoding:"utf8",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:r.okNote??`${e} ${t.join(" ")}: ok`};let i=(o.stderr||o.stdout||"").trim(),s=r.failPrefix??`${e} ${t.join(" ")} failed`;return{ok:!1,note:i?`${s}: ${i.slice(0,200)}`:s}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function l(e,t,r={}){let n=r.timeoutMs??8e3;try{return _(e,t,{stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:r.okNote??`${e} authenticated`}:{ok:!1,note:r.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var T="claude";function j(){let e=K();return[H.join(e,".claude",".credentials.json")]}function x(e=new Date().toISOString()){let t=c(T,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!0,authSource:"api_key_env",sessionFingerprint:u("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let r=d(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=j().find(s=>R(s)),o=l(t,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=r.ok&&(o.ok||!!n);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:n?a(n):void 0,checkedAt:e,note:i?"Local Claude Code OAuth session bound on runner":[r.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as L}from"node:fs";import{homedir as D}from"node:os";import h from"node:path";var M="codex";function Y(){let e=D();return[process.env.CODEX_HOME?.trim()?h.join(h.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,h.join(e,".codex","auth.json"),h.join(e,".config","codex","auth.json")].filter(r=>!!r)}function P(e=new Date().toISOString()){let t=c(M,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:u("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let r=Y().find(i=>L(i)),n=d(t,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"}),o=!!r&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:r?a(r):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,r?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as $}from"node:fs";import{homedir as F}from"node:os";import O from"node:path";function w(){let e=process.env.HERMES_HOME?.trim(),t=e?O.resolve(e):O.join(F(),".hermes");return O.join(t,"auth.json")}function m(e=new Date().toISOString()){let t=c("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),r=d(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=w(),o=$(n),i=l(t,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),s=r.ok&&i.ok;return{path:"hermes_openai_codex",ready:s,authSource:s?"subscription_hermes":"none",sessionFingerprint:o?a(n):void 0,checkedAt:e,note:s?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[r.note,i.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function I(e=new Date().toISOString()){let t=P(e);if(t.ready)return{...t,path:"codex_cli"};let r=m(e);return r.ready?{providerId:"codex",ready:!0,authSource:r.authSource,sessionFingerprint:r.sessionFingerprint,checkedAt:r.checkedAt,note:r.note,path:"hermes_openai_codex",hermesOpenAiCodex:r}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:r,note:[t.note,r.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}import{existsSync as U}from"node:fs";import{homedir as V}from"node:os";import X from"node:path";var G="agent";function J(){let e=V();return[X.join(e,".config","cursor","auth.json")]}function S(e=new Date().toISOString()){let t=c(G,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!0,authSource:"api_key_env",sessionFingerprint:u("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let r=d(t,["-v"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=J().find(i=>U(i)),o=!!n&&r.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?a(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[r.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as z,readFileSync as W}from"node:fs";import{homedir as q}from"node:os";import g from"node:path";var Q=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Z(){let e=process.env.HERMES_HOME?.trim(),t=e?g.resolve(e):g.join(q(),".hermes");return g.join(t,".env")}function ee(e){try{let t=W(e,"utf8"),r=[];for(let n of Q)new RegExp(`^${n}=`,"m").test(t)&&r.push(n);return r}catch{return[]}}function E(e=new Date().toISOString()){let t=c("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),r=d(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=Z(),o=z(n),i=o?ee(n):[],v=i.some(k=>k.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",N=r.ok&&o;return{adapterId:"hermes",cliAvailable:r.ok,profileBound:o,authSource:v,sessionFingerprint:o?a(n):void 0,checkedAt:e,note:N?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[r.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function te(e={}){let t=e.nowIso?.()??new Date().toISOString(),r=I(t),n={codex:r,cursor:S(t),claude:x(t)},o=Object.values(n).filter(i=>i.ready).length;return{generatedAt:t,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},hermes:E(t),hermesOpenAiCodex:m(t),codexAdapterPath:r.path,readyCount:o}}var re={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0}};function oe(){return Object.values(re)}var b=["off","observe","enforce"];function ne(e){let t=(e??"off").trim().toLowerCase();return b.includes(t)?t:"off"}function f(e=process.env){return ne(e.KYNVER_ORCHESTRATION_POLICY_MODE)}function C(e=process.env){let t=e.KYNVER_ORCHESTRATION_ENFORCE_TASKS?.trim().toLowerCase();return t?t==="1"||t==="true"||t==="yes"||t==="on":f(e)==="enforce"}import{createHash as ie}from"node:crypto";function p(e){if(e==null)return null;let t=e.trim();return t.length?t:null}function y(e){let t=p(e.sessionId)??"anonymous",r=p(e.title)??p(e.action)??"foreground",n=ie("sha256").update([p(e.planId)??"",p(e.parentTaskId)??"",r.toLowerCase()].join("|")).digest("hex").slice(0,16);return`hermes-foreground:${t}:${n}`}function se(e,t){return e==="enforce"&&t?"enforce_harness_task":e==="observe"?"observe_bypass":"allow_local"}function ae(e,t=process.env){let r=f(t),n=C(t),o=se(r,n),i=o==="enforce_harness_task"?y({sessionId:e.sessionId,planId:e.planId,parentTaskId:e.parentTaskId,title:e.title,action:e.action}):null,s;return r==="off"?s="Orchestration policy off \u2014 local foreground path allowed.":o==="observe_bypass"?s=`Observe mode: ${e.action} bypass logged; local fallback preserved.`:o==="enforce_harness_task"?s=`Enforce mode: ${e.action} must create linked harness AgentTask (${i}).`:s="Local foreground path allowed.",{mode:r,decision:o,idempotencyKey:i,bypassLogged:o==="observe_bypass",reason:s}}export{y as buildForegroundHarnessIdempotencyKey,te as buildOrchestrationProviderInventory,ae as evaluateOrchestrationPolicy,C as isOrchestrationEnforceTasksEnabled,oe as listOrchestrationProviderCapabilities,f as resolveOrchestrationPolicyMode};
1
+ import{existsSync as R}from"node:fs";import{homedir as H}from"node:os";import K from"node:path";import{createHash as A}from"node:crypto";import{statSync as B}from"node:fs";import{spawnSync as x}from"node:child_process";function c(e){try{let t=B(e),r=`${e}|${t.size}|${t.mtimeMs}`;return A("sha256").update(r).digest("hex").slice(0,16)}catch{return}}function u(e){return A("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function d(e,t){for(let r of t){let n=process.env[r]?.trim();if(n)return n}return e}function a(e,t,r={}){let n=r.timeoutMs??8e3;try{let o=x(e,t,{encoding:"utf8",timeout:n,env:{...process.env,...r.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:r.okNote??`${e} ${t.join(" ")}: ok`};let i=(o.stderr||o.stdout||"").trim(),s=r.failPrefix??`${e} ${t.join(" ")} failed`;return{ok:!1,note:i?`${s}: ${i.slice(0,200)}`:s}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function h(e,t,r={}){let n=r.timeoutMs??8e3;try{return x(e,t,{stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:r.okNote??`${e} authenticated`}:{ok:!1,note:r.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var T="claude";function j(){let e=H();return[K.join(e,".claude",".credentials.json")]}function _(e=new Date().toISOString()){let t=d(T,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!0,authSource:"api_key_env",sessionFingerprint:u("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let r=a(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=j().find(s=>R(s)),o=h(t,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=r.ok&&(o.ok||!!n);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:n?c(n):void 0,checkedAt:e,note:i?"Local Claude Code OAuth session bound on runner":[r.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as L}from"node:fs";import{homedir as D}from"node:os";import l from"node:path";var M="codex";function Y(){let e=D();return[process.env.CODEX_HOME?.trim()?l.join(l.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,l.join(e,".codex","auth.json"),l.join(e,".config","codex","auth.json")].filter(r=>!!r)}function $(e){return l.dirname(e)}function F(e){let t,r;for(let n of Y()){if(!L(n))continue;t??=n;let o=a(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:$(n)}});if(r??=o,o.ok)return{authPath:n,login:o}}return{authPath:t,login:r??a(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function P(e=new Date().toISOString()){let t=d(M,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:u("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:r,login:n}=F(t),o=!!r&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:r?c(r):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,r?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as w}from"node:fs";import{homedir as U}from"node:os";import O from"node:path";function V(){let e=process.env.HERMES_HOME?.trim(),t=e?O.resolve(e):O.join(U(),".hermes");return O.join(t,"auth.json")}function m(e=new Date().toISOString()){let t=d("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),r=a(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=V(),o=w(n),i=h(t,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),s=r.ok&&i.ok;return{path:"hermes_openai_codex",ready:s,authSource:s?"subscription_hermes":"none",sessionFingerprint:o?c(n):void 0,checkedAt:e,note:s?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[r.note,i.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function S(e=new Date().toISOString()){let t=P(e);if(t.ready)return{...t,path:"codex_cli"};let r=m(e);return r.ready?{providerId:"codex",ready:!0,authSource:r.authSource,sessionFingerprint:r.sessionFingerprint,checkedAt:r.checkedAt,note:r.note,path:"hermes_openai_codex",hermesOpenAiCodex:r}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:r,note:[t.note,r.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}import{existsSync as X}from"node:fs";import{homedir as G}from"node:os";import J from"node:path";var z="agent";function W(){let e=G();return[J.join(e,".config","cursor","auth.json")]}function I(e=new Date().toISOString()){let t=d(z,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!0,authSource:"api_key_env",sessionFingerprint:u("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let r=a(t,["-v"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=W().find(i=>X(i)),o=!!n&&r.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?c(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[r.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as q,readFileSync as Q}from"node:fs";import{homedir as Z}from"node:os";import g from"node:path";var ee=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function te(){let e=process.env.HERMES_HOME?.trim(),t=e?g.resolve(e):g.join(Z(),".hermes");return g.join(t,".env")}function re(e){try{let t=Q(e,"utf8"),r=[];for(let n of ee)new RegExp(`^${n}=`,"m").test(t)&&r.push(n);return r}catch{return[]}}function E(e=new Date().toISOString()){let t=d("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),r=a(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),n=te(),o=q(n),i=o?re(n):[],v=i.some(N=>N.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",k=r.ok&&o;return{adapterId:"hermes",cliAvailable:r.ok,profileBound:o,authSource:v,sessionFingerprint:o?c(n):void 0,checkedAt:e,note:k?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[r.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function oe(e={}){let t=e.nowIso?.()??new Date().toISOString(),r=S(t),n={codex:r,cursor:I(t),claude:_(t)},o=Object.values(n).filter(i=>i.ready).length;return{generatedAt:t,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},hermes:E(t),hermesOpenAiCodex:m(t),codexAdapterPath:r.path,readyCount:o}}var ne={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0}};function ie(){return Object.values(ne)}var b=["off","observe","enforce"];function se(e){let t=(e??"off").trim().toLowerCase();return b.includes(t)?t:"off"}function f(e=process.env){return se(e.KYNVER_ORCHESTRATION_POLICY_MODE)}function C(e=process.env){let t=e.KYNVER_ORCHESTRATION_ENFORCE_TASKS?.trim().toLowerCase();return t?t==="1"||t==="true"||t==="yes"||t==="on":f(e)==="enforce"}import{createHash as ae}from"node:crypto";function p(e){if(e==null)return null;let t=e.trim();return t.length?t:null}function y(e){let t=p(e.sessionId)??"anonymous",r=p(e.title)??p(e.action)??"foreground",n=ae("sha256").update([p(e.planId)??"",p(e.parentTaskId)??"",r.toLowerCase()].join("|")).digest("hex").slice(0,16);return`hermes-foreground:${t}:${n}`}function ce(e,t){return e==="enforce"&&t?"enforce_harness_task":e==="observe"?"observe_bypass":"allow_local"}function de(e,t=process.env){let r=f(t),n=C(t),o=ce(r,n),i=o==="enforce_harness_task"?y({sessionId:e.sessionId,planId:e.planId,parentTaskId:e.parentTaskId,title:e.title,action:e.action}):null,s;return r==="off"?s="Orchestration policy off \u2014 local foreground path allowed.":o==="observe_bypass"?s=`Observe mode: ${e.action} bypass logged; local fallback preserved.`:o==="enforce_harness_task"?s=`Enforce mode: ${e.action} must create linked harness AgentTask (${i}).`:s="Local foreground path allowed.",{mode:r,decision:o,idempotencyKey:i,bypassLogged:o==="observe_bypass",reason:s}}export{y as buildForegroundHarnessIdempotencyKey,oe as buildOrchestrationProviderInventory,de as evaluateOrchestrationPolicy,C as isOrchestrationEnforceTasksEnabled,ie as listOrchestrationProviderCapabilities,f as resolveOrchestrationPolicyMode};
@@ -1 +1 @@
1
- var n=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(o){throw t=[o],o}};function P(e){return He.has(e)?!0:$e.some(r=>e.endsWith(r))}function X(e){return Object.keys(e).filter(P).sort()}function f(e){let r={...e};for(let t of Object.keys(r))P(t)&&delete r[t];return r}function je(e){let r=X(e);return{forbiddenPresent:r,safe:r.length===0}}var Le,He,$e,d=n(()=>{"use strict";Le=["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"],He=new Set(Le),$e=["_SECRET","_API_KEY"]});function I(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=n(()=>{"use strict"});var N=n(()=>{"use strict";a();d()});var g=n(()=>{"use strict"});var Q=n(()=>{"use strict";N();g()});var W=n(()=>{"use strict"});var M=n(()=>{"use strict"});var Z=n(()=>{"use strict"});var ot,it,T=n(()=>{"use strict";ot=25*1024*1024*1024,it=12*1024*1024*1024});var ut,dt,ee=n(()=>{"use strict";T();ut=5*1024*1024*1024,dt=10*1024*1024*1024});var yt,vt,B=n(()=>{"use strict";ee();T();yt=30*1024*1024*1024,vt=15*1024*1024*1024});import{homedir as Ye}from"node:os";import Ge from"node:path";var Ct,re=n(()=>{"use strict";h();g();a();Ct=Ge.join(Ye(),".openclaw","harness")});var K=n(()=>{"use strict";re();a()});var ne=n(()=>{"use strict";K();a()});var oe=n(()=>{"use strict"});var ie=n(()=>{"use strict";oe();a()});var se=n(()=>{"use strict"});var ae=n(()=>{"use strict";se()});var le=n(()=>{"use strict";ae();a()});var ce=n(()=>{"use strict"});var ue=n(()=>{"use strict"});var de=n(()=>{"use strict"});var F=n(()=>{"use strict"});var me=n(()=>{"use strict"});var pe=n(()=>{"use strict";F();me()});var fe=n(()=>{"use strict";ie();le();ce();ue();N();de();pe();F();a()});var ge=n(()=>{"use strict";fe()});var er,rr,he=n(()=>{"use strict";Z();h();W();M();L();B();K();ne();ge();a();er=500*1024*1024,rr=4*1024*1024*1024});var L=n(()=>{"use strict";he()});import{homedir as tr}from"node:os";import nr from"node:path";var or,ye=n(()=>{"use strict";or=nr.join(tr(),".kynver",".env")});var ve=n(()=>{"use strict"});var be=n(()=>{"use strict";ve()});var ke=n(()=>{"use strict"});var xe=n(()=>{"use strict";be();ke()});var Re=n(()=>{"use strict"});var Se=n(()=>{"use strict";Re()});var _e=n(()=>{"use strict";ye();g();h();xe();Se()});import{homedir as sr,totalmem as qo}from"node:os";import H from"node:path";var Ce,ii,si,ai,li,h=n(()=>{"use strict";Q();g();a();W();M();L();B();_e();Ce=H.join(sr(),".kynver"),ii=H.join(Ce,"config.json"),si=H.join(Ce,"credentials"),ai=500*1024*1024,li=4*1024*1024*1024});d();h();d();a();d();a();d();a();var ts=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function dr(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var mr=dr();var Ae="composer-2.5";var u="cursor",pr=new Set(["claude","opus","anthropic"]),fr=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function j(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function l(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return pr.has(r)?!0:r.includes("claude")||r.includes("opus")}function $(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&l(r))return!0;let t=j(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let o=j(e,"description");if(fr.some(s=>s.test(o)))return!0;let i=j(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function gr(e,r){return{provider:u,model:Ae,rule:`policy:cursor_default${r}`,requestedModel:e}}function we(e){let{routing:r,task:t}=e,o=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&l(o))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if($(t)||r.rule==="explicit:cli"&&l(r.provider)||!l(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return gr(r.model,i)}function hr(e,r=u){let t=e?.trim();return t?l(t)?u:t==="codex"?"codex":t:r}function yr(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(u)?[...new Set(r.map(t=>l(t)?u:t))]:r.every(t=>l(t))?[u]:r}var vr=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,br=/\b(npm run build\b|next build\b)\b/i,kr=/\b(vercel (build|deploy|--prod))\b/i,xr=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function V(e){let r=e.trim();return r?xr.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:kr.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:br.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:vr.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 _="heavy_verification_token_required";import{spawnSync as Kr}from"node:child_process";a();import{closeSync as Or,existsSync as b,mkdirSync as Ar,openSync as wr,readdirSync as Ne,readFileSync as Pr,statSync as Ir,unlinkSync as We,writeFileSync as Dr}from"node:fs";import z from"node:path";import{mkdirSync as Sr}from"node:fs";import{tmpdir as _r}from"node:os";import C from"node:path";import{homedir as Rr}from"node:os";import Pe from"node:path";function Ie(){let e=process.env.KYNVER_STATE_ROOT;return e?Pe.resolve(e):Pe.join(Rr(),".kynver","state")}function Cr(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function Er(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?C.resolve(e):Cr()?C.join(_r(),"kynver","state","heavy-verification"):C.join(Ie(),"heavy-verification")}function Y(){return C.join(Er(),"slots")}function v(){let e=Y();return Sr(e,{recursive:!0}),e}var k=120*6e4,De=1;function Nr(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function O(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function E(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Nr(e,De):De}function Wr(e){return`slot-${e}`}function Mr(e,r=Y()){return z.join(r,`${e}.json`)}function q(e){if(!b(e))return null;try{let r=JSON.parse(Pr(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function Me(e,r=k){if(!e||!I(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Te(e,r){let t=q(e);if(t)return Me(t,r);if(!b(e))return!0;try{return Date.now()-Ir(e).mtimeMs>r}catch{return!0}}function Tr(e,r){if(Te(e,r))try{We(e)}catch{}}function Br(e){return Ar(e,{recursive:!0}),e}function J(e={}){let r=Br(e.slotsDir??v()),t=e.staleMs??k,o=0;for(let i of Ne(r)){if(!i.endsWith(".json"))continue;let s=z.join(r,i),c=b(s);Tr(s,t),c&&!b(s)&&(o+=1)}return o}function Ur(e={}){let r=e.slotsDir??v(),t=e.staleMs??k;J({slotsDir:r,staleMs:t});let o=[];for(let i of Ne(r)){if(!i.endsWith(".json"))continue;let s=q(z.join(r,i));s&&!Me(s,t)&&o.push(s)}return o}function G(e={}){return Ur(e).length}function x(e,r={}){if(O())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:E(),reason:null};let t=r.slotsDir??v(),o=r.staleMs??k,i=r.maxSlots??E();J({slotsDir:t,staleMs:o});for(let c=0;c<i;c+=1){let w=Wr(c),m=Mr(w,t),Ue=q(m);if(Te(m,o))try{We(m)}catch{}else if(Ue||b(m))continue;let Ke={slotId:w,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let p=wr(m,"wx");Dr(p,JSON.stringify(Ke,null,2),"utf8"),Or(p);let Fe=G({slotsDir:t,staleMs:o});return{admitted:!0,slotId:w,activeSlots:Fe,maxSlots:i,reason:null}}catch(p){if(p.code==="EEXIST")continue;throw p}}let s=G({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function A(e,r={}){if(O())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:E(),reason:null};let t=r.slotsDir??v(),o=r.staleMs??k,i=r.maxSlots??E();J({slotsDir:t,staleMs:o});let s=G({slotsDir:t,staleMs:o}),c=s<i;return{admitted:c,slotId:null,activeSlots:s,maxSlots:i,reason:c?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function Fr(e){e<=0||Kr(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function Be(e,r,t=2e3,o={}){let i=Date.now()+Math.max(0,r),s=x(e,o);for(;!s.admitted&&Date.now()<i;)Fr(Math.min(t,i-Date.now())),s=x(e,o);return s}function Lr(e,r={}){let t=V(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...A(e),slotId:null}};if(O())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...A(e),slotId:null}};let o=r.waitMs??0,i=o>0?Be(e,o,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:_,commandClass:t.commandClass,reason:t.reason??i.reason??_,verificationGate:i}}export{u as DEFAULT_WORKER_PROVIDER,_ as HEAVY_VERIFICATION_TOKEN_REQUIRED,je as auditWorkerEnv,V as classifyHeavyShellCommand,we as enforceCursorWorkerProvider,Lr as gateWorkerShellCommand,l as isClaudeFamilyProvider,P as isForbiddenWorkerEnvKey,X as listForbiddenWorkerEnvKeys,yr as preferCursorExecutor,hr as resolveConfiguredWorkerProvider,f as scrubWorkerEnv,$ as taskAllowsClaudeWorker};
1
+ var n=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(o){throw t=[o],o}};function P(e){return He.has(e)?!0:$e.some(r=>e.endsWith(r))}function X(e){return Object.keys(e).filter(P).sort()}function f(e){let r={...e};for(let t of Object.keys(r))P(t)&&delete r[t];return r}function je(e){let r=X(e);return{forbiddenPresent:r,safe:r.length===0}}var Le,He,$e,d=n(()=>{"use strict";Le=["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"],He=new Set(Le),$e=["_SECRET","_API_KEY"]});function I(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=n(()=>{"use strict"});var N=n(()=>{"use strict";a();d()});var g=n(()=>{"use strict"});var Q=n(()=>{"use strict";N();g()});var W=n(()=>{"use strict"});var B=n(()=>{"use strict"});var Z=n(()=>{"use strict"});var ot,it,M=n(()=>{"use strict";ot=25*1024*1024*1024,it=12*1024*1024*1024});var ut,dt,ee=n(()=>{"use strict";M();ut=5*1024*1024*1024,dt=10*1024*1024*1024});var yt,vt,T=n(()=>{"use strict";ee();M();yt=30*1024*1024*1024,vt=15*1024*1024*1024});import{homedir as Ye}from"node:os";import Ge from"node:path";var Ct,re=n(()=>{"use strict";h();g();a();Ct=Ge.join(Ye(),".openclaw","harness")});var K=n(()=>{"use strict";re();a()});var ne=n(()=>{"use strict";K();a()});var oe=n(()=>{"use strict"});var ie=n(()=>{"use strict";oe();a()});var se=n(()=>{"use strict"});var ae=n(()=>{"use strict";se()});var le=n(()=>{"use strict";ae();a()});var ce=n(()=>{"use strict"});var ue=n(()=>{"use strict"});var de=n(()=>{"use strict"});var F=n(()=>{"use strict"});var me=n(()=>{"use strict"});var pe=n(()=>{"use strict";F();me()});var fe=n(()=>{"use strict";ie();le();ce();ue();N();de();pe();F();a()});var ge=n(()=>{"use strict";fe()});var er,rr,he=n(()=>{"use strict";Z();h();W();B();L();T();K();ne();ge();a();er=500*1024*1024,rr=4*1024*1024*1024});var L=n(()=>{"use strict";he()});import{homedir as tr}from"node:os";import nr from"node:path";var or,ye=n(()=>{"use strict";or=nr.join(tr(),".kynver",".env")});var ve=n(()=>{"use strict"});var be=n(()=>{"use strict";ve()});var ke=n(()=>{"use strict"});var xe=n(()=>{"use strict";be();ke()});var Re=n(()=>{"use strict"});var Se=n(()=>{"use strict";Re()});var _e=n(()=>{"use strict";ye();g();h();xe();Se()});import{homedir as sr,totalmem as qo}from"node:os";import H from"node:path";var Ce,ii,si,ai,li,h=n(()=>{"use strict";Q();g();a();W();B();L();T();_e();Ce=H.join(sr(),".kynver"),ii=H.join(Ce,"config.json"),si=H.join(Ce,"credentials"),ai=500*1024*1024,li=4*1024*1024*1024});d();h();d();a();d();a();d();a();var ts=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function dr(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var mr=dr();var Ae="composer-2.5";var u="cursor",pr=new Set(["claude","opus","anthropic"]),fr=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function j(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function l(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return pr.has(r)?!0:r.includes("claude")||r.includes("opus")}function $(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&l(r))return!0;let t=j(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let o=j(e,"description");if(fr.some(s=>s.test(o)))return!0;let i=j(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function gr(e,r){return{provider:u,model:Ae,rule:`policy:cursor_default${r}`,requestedModel:e}}function we(e){let{routing:r,task:t}=e,o=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&l(o))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if($(t)||r.rule==="explicit:cli"&&l(r.provider)||!l(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return gr(r.model,i)}function hr(e,r=u){let t=e?.trim();return t?l(t)?u:t==="codex"?"codex":t:r}function yr(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(u)?[...new Set(r.map(t=>l(t)?u:t))]:r.every(t=>l(t))?[u]:r}var vr=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,br=/\b(npm run build\b|next build\b)\b/i,kr=/\b(vercel (build|deploy|--prod))\b/i,xr=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function V(e){let r=e.trim();return r?xr.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:kr.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:br.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:vr.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 _="heavy_verification_token_required";import{spawnSync as Kr}from"node:child_process";a();import{closeSync as Or,existsSync as b,mkdirSync as Ar,openSync as wr,readdirSync as Ne,readFileSync as Pr,statSync as Ir,unlinkSync as We,writeFileSync as Dr}from"node:fs";import z from"node:path";import{mkdirSync as Sr}from"node:fs";import{tmpdir as _r}from"node:os";import C from"node:path";import{homedir as Rr}from"node:os";import Pe from"node:path";function Ie(){let e=process.env.KYNVER_STATE_ROOT;return e?Pe.resolve(e):Pe.join(Rr(),".kynver","state")}function Cr(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function Er(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?C.resolve(e):Cr()?C.join(_r(),"kynver","state","heavy-verification"):C.join(Ie(),"heavy-verification")}function Y(){return C.join(Er(),"slots")}function v(){let e=Y();return Sr(e,{recursive:!0}),e}var k=120*6e4,De=1;function Nr(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function O(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function E(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Nr(e,De):De}function Wr(e){return`slot-${e}`}function Br(e,r=Y()){return z.join(r,`${e}.json`)}function q(e){if(!b(e))return null;try{let r=JSON.parse(Pr(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function Be(e,r=k){if(!e||!I(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Me(e,r){let t=q(e);if(t)return Be(t,r);if(!b(e))return!0;try{return Date.now()-Ir(e).mtimeMs>r}catch{return!0}}function Mr(e,r){if(Me(e,r))try{We(e)}catch{}}function Tr(e){return Ar(e,{recursive:!0}),e}function J(e={}){let r=Tr(e.slotsDir??v()),t=e.staleMs??k,o=0;for(let i of Ne(r)){if(!i.endsWith(".json"))continue;let s=z.join(r,i),c=b(s);Mr(s,t),c&&!b(s)&&(o+=1)}return o}function Ur(e={}){let r=e.slotsDir??v(),t=e.staleMs??k;J({slotsDir:r,staleMs:t});let o=[];for(let i of Ne(r)){if(!i.endsWith(".json"))continue;let s=q(z.join(r,i));s&&!Be(s,t)&&o.push(s)}return o}function G(e={}){return Ur(e).length}function x(e,r={}){if(O())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:E(),reason:null};let t=r.slotsDir??v(),o=r.staleMs??k,i=r.maxSlots??E();J({slotsDir:t,staleMs:o});for(let c=0;c<i;c+=1){let w=Wr(c),m=Br(w,t),Ue=q(m);if(Me(m,o))try{We(m)}catch{}else if(Ue||b(m))continue;let Ke={slotId:w,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let p=wr(m,"wx");Dr(p,JSON.stringify(Ke,null,2),"utf8"),Or(p);let Fe=G({slotsDir:t,staleMs:o});return{admitted:!0,slotId:w,activeSlots:Fe,maxSlots:i,reason:null}}catch(p){if(p.code==="EEXIST")continue;throw p}}let s=G({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function A(e,r={}){if(O())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:E(),reason:null};let t=r.slotsDir??v(),o=r.staleMs??k,i=r.maxSlots??E();J({slotsDir:t,staleMs:o});let s=G({slotsDir:t,staleMs:o}),c=s<i;return{admitted:c,slotId:null,activeSlots:s,maxSlots:i,reason:c?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function Fr(e){e<=0||Kr(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function Te(e,r,t=2e3,o={}){let i=Date.now()+Math.max(0,r),s=x(e,o);for(;!s.admitted&&Date.now()<i;)Fr(Math.min(t,i-Date.now())),s=x(e,o);return s}function Lr(e,r={}){let t=V(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...A(e),slotId:null}};if(O())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...A(e),slotId:null}};let o=r.waitMs??0,i=o>0?Te(e,o,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:_,commandClass:t.commandClass,reason:t.reason??i.reason??_,verificationGate:i}}export{u as DEFAULT_WORKER_PROVIDER,_ as HEAVY_VERIFICATION_TOKEN_REQUIRED,je as auditWorkerEnv,V as classifyHeavyShellCommand,we as enforceCursorWorkerProvider,Lr as gateWorkerShellCommand,l as isClaudeFamilyProvider,P as isForbiddenWorkerEnvKey,X as listForbiddenWorkerEnvKeys,yr as preferCursorExecutor,hr as resolveConfiguredWorkerProvider,f as scrubWorkerEnv,$ as taskAllowsClaudeWorker};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.1.166",
3
+ "version": "0.1.171",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -89,6 +89,11 @@
89
89
  "types": "./dist/server/wsl-crash-dumps.d.ts",
90
90
  "import": "./dist/server/wsl-crash-dumps.js",
91
91
  "default": "./dist/server/wsl-crash-dumps.js"
92
+ },
93
+ "./chat/command-auth-proof": {
94
+ "types": "./dist/chat/command-auth-proof.d.ts",
95
+ "import": "./dist/chat/command-auth-proof.js",
96
+ "default": "./dist/chat/command-auth-proof.js"
92
97
  }
93
98
  },
94
99
  "files": [
@@ -97,7 +102,7 @@
97
102
  "README.md"
98
103
  ],
99
104
  "scripts": {
100
- "build": "esbuild src/cli.ts src/index.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.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",
105
+ "build": "esbuild src/cli.ts src/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",
101
106
  "typecheck": "tsc -p tsconfig.json --noEmit",
102
107
  "test": "vitest run --config vitest.config.ts",
103
108
  "prepublishOnly": "node ../../scripts/npm-publish-guard.mjs && npm run build"