@kynver-app/runtime 0.2.117 → 0.2.122

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 l=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function q(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 Re(e){let r=e.trim();if(!r)return null;let t=q(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=q(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=q(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function xe(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?Re(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=Re(t);return n||t}var Se=l(()=>{"use strict"});var _e=l(()=>{"use strict"});import{existsSync as rt,mkdirSync as Fn,readFileSync as tt,readdirSync as $n,renameSync as Ln,rmSync as Hn,statSync as Ee,writeFileSync as jn}from"node:fs";function X(e){console.error(e),process.exit(1)}function Z(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function I(e){try{return JSON.parse(e)}catch{return null}}function P(e){try{return Ee(e).size}catch{return 0}}function T(e){try{return Ee(e).mtime.toISOString()}catch{return null}}function ve(e,r){return rt(e)?tt(e,"utf8").split(`
1
+ var l=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function ee(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=ee(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=ee(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=ee(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function ve(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 Ce=l(()=>{"use strict"});var Ae=l(()=>{"use strict"});import{existsSync as ut,mkdirSync as oo,readFileSync as ct,readdirSync as so,renameSync as io,rmSync as ao,statSync as we,writeFileSync as lo}from"node:fs";function re(e){console.error(e),process.exit(1)}function te(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function N(e){try{return JSON.parse(e)}catch{return null}}function W(e){try{return we(e).size}catch{return 0}}function B(e){try{return we(e).mtime.toISOString()}catch{return null}}function Oe(e,r){return ut(e)?ct(e,"utf8").split(`
2
2
  `).slice(-r).join(`
3
- `):""}function K(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Ce(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 Q(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var g=l(()=>{"use strict";_e()});import{existsSync as nt,readFileSync as ot}from"node:fs";function Ae(e){return e==="complete"}function we(e){return Ae(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function Oe(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!nt(e))return r;let t=Date.now()+st,n=new Date(t).toISOString(),o=ot(e,"utf8").split(`
4
- `).filter(Boolean);for(let s of o){let i=I(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),f=Date.parse(u);Number.isFinite(f)&&f>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:n}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),Ae(r.lastHeartbeatPhase)&&(r.terminalFinalResult=xe(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var st,Ie=l(()=>{"use strict";Se();g();st=6e4});function Te(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function N(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 Ke(e){let r=Te(e[0]);return!!(r&&it.has(r))}function lt(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function ut(e){if(!e||e.includes("*"))return null;let r=lt(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function Ne(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function ee(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function ct(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function dt(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;Pe.has(n)&&(t+=1);continue}r.push(n)}}return r}function mt(e){let r=!1,t=e.map((o,s)=>{let i=ct(o),a=e[s-1];return a&&Pe.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=dt(t);if(n.length===2){let[o,s]=n;if(ee(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=ut(s);if(i)return{argv:[t[0]??"rg","-g",i,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function We(e){for(let r=1;r<e.length;r+=1){let t=e[r];if(t&&(t==="-c"||t==="-lc"||t==="-cl"||/^-[a-zA-Z]*c[a-zA-Z]*$/u.test(t)))return r+1}return-1}function W(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=N(r);if(!t.length)return{command:r,wrapped:!1};let n=Te(t[0]);if(!n||!at.has(n))return{command:r,wrapped:!1};let o=We(t);if(o<0||o>=t.length)return{command:r,wrapped:!1};let s=t.slice(o).join(" ").trim();return s?{command:s,wrapped:!0}:{command:r,wrapped:!1}}function ft(e,r){let t=e.trim(),n=N(t),o=We(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function pt(e){let r=e.trim(),t=W(r),n=N(t.command);if(!n.length||!Ke(n))return{segment:r,changed:!1};let o=mt(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:ft(r,s),changed:!0}:{segment:s,changed:!0}}function re(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=pt(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function Ue(e){let r=W(e).command,t=N(r.trim());return t.length&&Ke(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Be(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 gt(e){let{pattern:r,target:t}=Be(e);return r?ee(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:Ne(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function ht(e){let{pattern:r,target:t}=Be(e);if(!r)return null;if(ee(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&Ne(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function yt(e){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 kt(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 te(e){let r=e.meta?.trim()||(e.command?kt(e.command):null)||null;if(r){let t=gt(r),n=yt(t);if(n)return n;let o=ht(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=re(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 it,at,Pe,De=l(()=>{"use strict";it=new Set(["rg","ripgrep","grep"]),at=new Set(["bash","sh","dash","zsh"]),Pe=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function E(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function xt(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 v(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function St(e){let r=e.metadata;if(!v(r))return null;let t=r.vulnerabilities;if(!v(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 _t(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 Et(e,r){let t=e.error;if(v(t)){let s=typeof t.summary=="string"?t.summary.trim():"",i=typeof t.code=="string"?t.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let n=typeof e.message=="string"?e.message.trim():"";if(n)return n;let o=r.trim();return o?E(o.split(`
5
- `).find(Boolean)??o,160):"npm audit failed"}function vt(e){let r=`${e.stdout}
6
- ${e.stderr}`.trim(),t=xt(r);if(!t||!v(t)){let o=E(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(v(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Et(t,e.stderr)}`};let n=St(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:_t(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Ct(e){return bt.test(e)}function At(e){let r=W(e).command;return Me.test(e)||Me.test(r)||Ue(e)}function wt(e){let r=te({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&&Rt.test(n)){let i=E(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=re(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=E(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function Fe(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Ct(e.command)){let i=r.trim()||n.trim()||t.trim();return vt({exitCode:e.exitCode,stdout:i,stderr:t})}if(At(e.command))return wt({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=te({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=E(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var bt,Me,Rt,$e=l(()=>{"use strict";De();bt=/\bnpm\s+audit\b/i,Me=/\b(rg|ripgrep)\b/i,Rt=/\b(error|invalid|unknown|panic|not found)\b/i});function C(e){return typeof e=="string"&&Ot.test(e.trim())}function U(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.is_error===!0||r.providerTerminalError===!0||typeof r.subtype=="string"&&/^error(?:_|$)/.test(r.subtype)}var Ot,B=l(()=>{"use strict";Ot=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function ne(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function It(e){if(!e)return;let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0;if(!((r===void 0||r<0)&&(t===void 0||t<0)))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{}}}function Le(e){if(e.event==="step_update"&&ne(e.step_update)){let s=e.step_update,i=s.step_type==="tool"&&typeof s.tool_name=="string"&&s.tool_name.trim()?s.tool_name.trim():void 0,a=typeof s.text_delta=="string"?s.text_delta:void 0;return!i&&a===void 0?null:{...i?{currentTool:i}:{},...a!==void 0?{textDelta:a}:{}}}if(e.event!=="result"||!ne(e.result))return null;let r=e.result,t=typeof r.status=="string"?r.status.toUpperCase():"";if(t!=="SUCCESS"&&t!=="ERROR")return null;let n=ne(r.usage)?It(r.usage):void 0;if(t==="ERROR"){let s=typeof r.error=="string"&&r.error.trim()?r.error.trim():"antigravity cli result error";return{...n?{usage:n}:{},terminal:{ok:!1,finalResult:null,error:s}}}let o=typeof r.response=="string"?r.response.trim():"";return{...n?{usage:n}:{},terminal:{ok:!0,finalResult:o||"completed",error:null}}}var He=l(()=>{"use strict"});function oe(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function je(){return{assistantText:""}}function Pt(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function Tt(e){let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0,o=(oe(e.models)?Object.keys(e.models):[]).find(s=>s.trim())?.trim();if(!(r===void 0&&t===void 0&&!o))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{},...o?{model:o}:{}}}function Kt(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function Ye(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return Pt(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!Kt(e))return null;let t=oe(e.stats)?Tt(e.stats):void 0;if(e.status==="error"){let o=oe(e.error)&&typeof e.error.message=="string"?e.error.message:"gemini cli result error";return{...t?{usage:t}:{},terminal:{ok:!1,finalResult:null,error:o}}}let n=r.assistantText.trim();return{...t?{usage:t}:{},terminal:{ok:!0,finalResult:n||"completed",error:null}}}var Ve=l(()=>{"use strict"});import{existsSync as Nt,readFileSync as Wt}from"node:fs";function Ut(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Bt(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 Dt(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",U(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function x(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Mt(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Ft(e){if(typeof e.model=="string"&&e.model.trim())return e.model.trim();let r=e.modelUsage;if(r&&typeof r=="object"&&!Array.isArray(r)){let t=Object.keys(r)[0];if(t?.trim())return t.trim()}}function $t(e,r){let t=Mt(r);if(!t)return;let n=x(t.input_tokens)??x(t.inputTokens)??x(t.prompt_tokens),o=x(t.output_tokens)??x(t.outputTokens)??x(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=Ft(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function Lt(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,f=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:f,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Ht(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function Ge(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Nt(e))return r;let t=Wt(e,"utf8").split(`
7
- `).filter(Boolean),n=null,o=je();for(let s of t){let i=I(s);if(!i||typeof i!="object"||Array.isArray(i))continue;if(i.type==="turn.started"&&(n=null,r.finalResult=null),i.type==="item.completed"){let d=i.item;if(d&&typeof d=="object"&&!Array.isArray(d)){let p=d;p.type==="agent_message"&&typeof p.text=="string"&&p.text.trim()&&(n=p.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=Ut(i);if(a&&(r.firstEventAt||=a,r.lastEventAt=a),i.type==="stream_event"&&i.event&&typeof i.event=="object"&&i.event.type==="content_block_start"){let d=i.event.content_block;d?.type==="tool_use"&&(r.currentTool=String(d.name||"tool"))}if(i.type==="assistant"&&i.message&&typeof i.message=="object"){let d=i.message.content;if(Array.isArray(d)){let p=d.find(h=>h?.type==="tool_use");p&&(r.currentTool=String(p.name||r.currentTool))}}if(i.type==="tool_call"&&i.subtype==="started"){let d=i.tool_call&&typeof i.tool_call=="object"&&!Array.isArray(i.tool_call)?i.tool_call:void 0,p=Bt(d);p&&(r.currentTool=p)}let u=Lt(i);u&&Ht(r,Fe({command:u.command,exitCode:u.exitCode,stdout:u.stdout,stderr:u.stderr,interleavedOutput:u.interleaved}));let f=Le(i),m=f?null:Ye(i,o),c=f??m;if(c?.currentTool&&(r.currentTool=c.currentTool),c?.usage&&(r.usage={...r.usage??{},...c.usage}),c?.terminal?c.terminal.ok?r.finalResult=c.terminal.finalResult:(r.finalResult=null,r.providerTerminalError=!0,r.error=c.terminal.error):i.type==="result"&&Dt(r,i),i.type==="turn.failed"){n=null,r.finalResult=null,r.providerTerminalError=!0;let d=i.error;r.error=typeof d?.message=="string"?d.message:"provider turn failed"}$t(r,i)}return r}var ze=l(()=>{"use strict";$e();g();B();He();Ve()});function Je(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function se(e){let r=(e??"").trim();if(!r)return null;if(C(r))return{blocked:!0,reason:`provider authentication failed: ${Je(r)}`};for(let t of jt)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Je(r)}`};return null}var jt,qe=l(()=>{"use strict";B();jt=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{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 Xe(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Yt(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 Vt(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Xe(e.head)}function Gt(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 Ze(e){if(e.alive||Yt(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Xe(e.headCommit)??Vt(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:Gt(s,r,t)}}var Qe=l(()=>{"use strict"});var k=l(()=>{"use strict"});var zt,ko,Jt,bo,er=l(()=>{"use strict";zt=["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","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],ko=new Set(zt),Jt=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],bo=new Set(Jt)});import{spawnSync as tr}from"node:child_process";function qt(e,r,t={}){let n=tr("git",r,Z({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=Xt(e,r,n);if(t.throwError)throw new Error(o);X(o)}return n.stdout||""}function Xt(e,r,t){let n=typeof t.stderr=="string"&&t.stderr.trim()||typeof t.stdout=="string"&&t.stdout.trim()||t.error?.message||`exit ${t.status??"unknown"}`;return`git ${r.join(" ")} failed in ${e}: ${n}`}function nr(e){return qt(e,["status","--short"],{allowFailure:!0}).split(`
8
- `).map(r=>r.trim()).filter(Boolean)}function A(e,r){try{let t=tr("git",r,Z({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 rr(e,r,t){let n=A(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 or(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 ie(n,"missing worktree path");let s=A(e,["rev-parse","HEAD"]);if(s.status!==0)return ie(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let d=A(e,["rev-parse",n]);if(d.status!==0)return ie(n,d.error||d.stderr||d.stdout||`failed to resolve ${n}`,s.stdout.trim());i=d.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 u=rr(e,i,a),f=rr(e,a,i),m=u.error||f.error||void 0;if(u.isAncestor==null||f.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:f.isAncestor,relation:"unknown",...m?{error:m}:{}};let c=u.isAncestor?"ahead":f.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:f.isAncestor,relation:c,...m?{error:m}:{}}}function ie(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var M=l(()=>{"use strict";k();g();er()});function w(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Zt(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 Qt(e){if(w(e.headCommit)||w(e.prUrl)||w(e.artifactBundlePath)||w(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&w(r.head))}function sr(e){return Zt(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:Qt(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 ir(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var ar=l(()=>{"use strict"});function ae(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 lr(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function F(e){let r=e.trim();if(!r)return null;let t=ae(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let m=ae(s[1]??"");m&&n.push(m)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let m=ae(r.slice(i,a+1));m&&n.push(m)}if(n.length===0)return null;let u=n[n.length-1],f=lr(u);for(let m of n){let c=lr(m);c>f&&(u=m,f=c)}return u}var le=l(()=>{"use strict"});function ur(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 cr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function en(e){return new Set(e.map(r=>cr(ur(r)??r)).filter(Boolean))}function dr(e,r,t){let n=ur(e)??e;if(!n)return"unrelated";let o=cr(n);return en(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var mr=l(()=>{"use strict"});function S(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function rn(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]}`:S(e)}function $(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function fr(e){let r=null;if(typeof e=="string"){let o=F(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=S(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:S(s.mergeCommit??s.merge_commit),reason:S(s.reason)})}return n}function pr(e,r){let t=[],n=b(S(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 gr(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(!rn(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(S(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=pr(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=fr(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=fr(n),a=new Map(i.map(c=>[$(c.prUrl),c])),u=new Set(r.targetPrUrls.map(c=>$(b(c)??c)).filter(Boolean)),f=pr(t,n);if(r.landingOnly)for(let c of f){let d=a.get($(c)),p=dr(c,r.targetPrUrls,d);if(!(p==="contract"||p==="support"))return u.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 m=[];for(let c of r.targetPrUrls){let d=$(b(c)??c),p=a.get(d);if(!p){m.push(d);continue}p.outcome!=="merged"&&!p.reason?.trim()&&m.push(d)}return m.length>0?{blocked:!0,reason:m.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${m.join(", ")}`}:{blocked:!1}}function hr(e){if(e.blocked)return e.detail??e.reason}var yr=l(()=>{"use strict";le();mr()});function nn(e){let r=Date.now();if(e.providerTerminalError||U(e.finalResult)||e.finalResult&&e.error?.trim()||C(e.error)||C(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:se(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!kr(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&sn(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=sr(o);if(s.blocked){let i=ir(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=gr({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=hr(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(on(e))return{state:"done",reason:"empty abandoned worker record"};let o=se(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Ze({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>tn)return{state:"needs_attention",reason:`no first stream event ${Q(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>L?{state:"stale",reason:`no log/event/heartbeat activity for ${Q(n)}s`}:{state:"ok",reason:"recent activity"}}function kr(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function on(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 sn(e){let r=null;if(typeof e=="string"?r=F(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 an(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??we(t))}function br(e,r={}){let t=Ge(e.stdoutPath),n=Oe(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=an(e,t.finalResult,n),i=o?!1:K(e.pid),a=P(e.stdoutPath),u=P(e.stderrPath),f=P(e.heartbeatPath),m=nr(e.worktreePath),c=or(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),d=Ce([t.lastEventAt,n.lastHeartbeatAt,T(e.stdoutPath),T(e.stderrPath),T(e.heartbeatPath)]),p=t.error||!i&&!s&&ve(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=kr(h)?null:h,Qr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,J=nn({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:f,lastActivityAt:d,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:p,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,completionBlocker:y,landingContract:Qr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),et=y||J.state==="blocked"?"blocked":o||J.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:et,attention:J,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:f,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:d,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:p,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:t.usage??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 Rr(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function xr(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var tn,L,O=l(()=>{"use strict";Ie();ze();B();qe();Qe();M();ar();yr();le();g();tn=18e4,L=6e5});var vr=l(()=>{"use strict";M()});var ue=l(()=>{"use strict";M();k();vr()});var ce=l(()=>{"use strict";g()});var R=l(()=>{"use strict"});var H=l(()=>{"use strict"});var Cr=l(()=>{"use strict"});var us,cs,de=l(()=>{"use strict";us=25*1024*1024*1024,cs=12*1024*1024*1024});var gs,hs,Ar=l(()=>{"use strict";de();gs=5*1024*1024*1024,hs=10*1024*1024*1024});var Ss,_s,me=l(()=>{"use strict";Ar();de();Ss=30*1024*1024*1024,_s=15*1024*1024*1024});var wr=l(()=>{"use strict";j();g()});var Or=l(()=>{"use strict";O()});var fn,pn,Tr=l(()=>{"use strict";Cr();_();R();H();Y();me();j();wr();Or();g();fn=500*1024*1024,pn=4*1024*1024*1024});var Y=l(()=>{"use strict";Tr()});import{homedir as hn}from"node:os";import yn from"node:path";var Kr,ge=l(()=>{"use strict";Kr=yn.join(hn(),".kynver",".env")});var Nr=l(()=>{"use strict"});var Wr=l(()=>{"use strict";Nr()});var Ur=l(()=>{"use strict"});var Br=l(()=>{"use strict";g()});var he=l(()=>{"use strict";Wr();Ur();Br()});var Dr=l(()=>{"use strict"});var Mr=l(()=>{"use strict";Dr()});var V=l(()=>{"use strict";ge();k();_();he();Mr()});var Fr=l(()=>{"use strict";R();R()});var $r=l(()=>{"use strict";ge();he();V()});var ye=l(()=>{"use strict"});var Lr=l(()=>{"use strict";g()});import _n from"node:path";var zi,ke=l(()=>{"use strict";k();Lr();zi=_n.join(".openclaw","harness")});var z=l(()=>{"use strict";_();R();H();Y();ke()});var jr=l(()=>{"use strict";ue();R();Fr();_();V();$r();ce();ye();z()});var In,ga,Yr=l(()=>{"use strict";In=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],ga=In.join("|")});var Vr=l(()=>{"use strict";k()});var Gr=l(()=>{"use strict";Vr()});var zr=l(()=>{"use strict"});var Jr=l(()=>{"use strict";zr()});import{homedir as Pn,totalmem as Ha}from"node:os";import be from"node:path";var qr,sl,il,al,ll,_=l(()=>{"use strict";ue();k();ce();R();H();Y();me();V();jr();Yr();z();Gr();ye();Jr();qr=be.join(Pn(),".kynver"),sl=be.join(qr,"config.json"),il=be.join(qr,"credentials"),al=500*1024*1024,ll=4*1024*1024*1024});var Xr=l(()=>{"use strict";_();ke();z();g()});var j=l(()=>{"use strict";Xr();g()});O();var Sr="kynver-harness:",ln="@runner:";function _r(e){return e?.trim()?e.trim():null}function un(e){let r=_r(e);if(!r?.startsWith(Sr))return null;let t=r.slice(Sr.length),n=t.indexOf(ln);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Er(e,r){let t=_r(r);return t?un(e)===t:!1}O();g();function cn(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Er(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>L?{health:"stale",reason:`heartbeat older than ${Math.floor(L/1e3)}s`}:t.alive&&r.pid&&!K(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"}}j();function Zr(e){return!!e.completionReportedAt?.trim()}O();function Tn(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"),Zr(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"),xr(t)&&n.push(t.attention.reason||"landing gate blocked");let o=Rr(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{Tn as assessAutoCompleteEligibility,cn as classifyWorkerHealth,br as computeWorkerStatus};
3
+ `):""}function C(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 ne(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var g=l(()=>{"use strict";Ae()});import{existsSync as dt,readFileSync as mt}from"node:fs";function Pe(e){return e==="complete"}function Te(e){return Pe(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function Ke(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!dt(e))return r;let t=Date.now()+ft,n=new Date(t).toISOString(),o=mt(e,"utf8").split(`
4
+ `).filter(Boolean);for(let s of o){let i=N(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),f=Date.parse(u);Number.isFinite(f)&&f>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:n}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),Pe(r.lastHeartbeatPhase)&&(r.terminalFinalResult=ve(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var ft,Ne=l(()=>{"use strict";Ce();g();ft=6e4});function Be(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function U(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 Ue(e){let r=Be(e[0]);return!!(r&&pt.has(r))}function ht(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function yt(e){if(!e||e.includes("*"))return null;let r=ht(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function De(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function oe(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function kt(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function bt(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;We.has(n)&&(t+=1);continue}r.push(n)}}return r}function Rt(e){let r=!1,t=e.map((o,s)=>{let i=kt(o),a=e[s-1];return a&&We.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=bt(t);if(n.length===2){let[o,s]=n;if(oe(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=yt(s);if(i)return{argv:[t[0]??"rg","-g",i,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function Me(e){for(let r=1;r<e.length;r+=1){let t=e[r];if(t&&(t==="-c"||t==="-lc"||t==="-cl"||/^-[a-zA-Z]*c[a-zA-Z]*$/u.test(t)))return r+1}return-1}function D(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=U(r);if(!t.length)return{command:r,wrapped:!1};let n=Be(t[0]);if(!n||!gt.has(n))return{command:r,wrapped:!1};let o=Me(t);if(o<0||o>=t.length)return{command:r,wrapped:!1};let s=t.slice(o).join(" ").trim();return s?{command:s,wrapped:!0}:{command:r,wrapped:!1}}function xt(e,r){let t=e.trim(),n=U(t),o=Me(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function St(e){let r=e.trim(),t=D(r),n=U(t.command);if(!n.length||!Ue(n))return{segment:r,changed:!1};let o=Rt(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:xt(r,s),changed:!0}:{segment:s,changed:!0}}function se(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=St(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function Fe(e){let r=D(e).command,t=U(r.trim());return t.length&&Ue(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function $e(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 _t(e){let{pattern:r,target:t}=$e(e);return r?oe(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:De(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function Et(e){let{pattern:r,target:t}=$e(e);if(!r)return null;if(oe(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&De(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function vt(e){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 Ct(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 ie(e){let r=e.meta?.trim()||(e.command?Ct(e.command):null)||null;if(r){let t=_t(r),n=vt(t);if(n)return n;let o=Et(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=se(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 pt,gt,We,Le=l(()=>{"use strict";pt=new Set(["rg","ripgrep","grep"]),gt=new Set(["bash","sh","dash","zsh"]),We=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function A(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Ot(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 w(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function It(e){let r=e.metadata;if(!w(r))return null;let t=r.vulnerabilities;if(!w(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 Pt(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 Tt(e,r){let t=e.error;if(w(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?A(o.split(`
5
+ `).find(Boolean)??o,160):"npm audit failed"}function Kt(e){let r=`${e.stdout}
6
+ ${e.stderr}`.trim(),t=Ot(r);if(!t||!w(t)){let o=A(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(w(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Tt(t,e.stderr)}`};let n=It(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:Pt(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Nt(e){return At.test(e)}function Wt(e){let r=D(e).command;return He.test(e)||He.test(r)||Fe(e)}function Bt(e){let r=ie({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&&wt.test(n)){let i=A(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=se(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=A(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 je(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Nt(e.command)){let i=r.trim()||n.trim()||t.trim();return Kt({exitCode:e.exitCode,stdout:i,stderr:t})}if(Wt(e.command))return Bt({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=ie({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=A(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var At,He,wt,Ye=l(()=>{"use strict";Le();At=/\bnpm\s+audit\b/i,He=/\b(rg|ripgrep)\b/i,wt=/\b(error|invalid|unknown|panic|not found)\b/i});function O(e){return typeof e=="string"&&Ut.test(e.trim())}function M(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.is_error===!0||r.providerTerminalError===!0||typeof r.subtype=="string"&&/^error(?:_|$)/.test(r.subtype)}var Ut,F=l(()=>{"use strict";Ut=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function ae(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Dt(e){if(!e)return;let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0;if(!((r===void 0||r<0)&&(t===void 0||t<0)))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{}}}function Ge(e){if(e.event==="step_update"&&ae(e.step_update)){let s=e.step_update,i=s.step_type==="tool"&&typeof s.tool_name=="string"&&s.tool_name.trim()?s.tool_name.trim():void 0,a=typeof s.text_delta=="string"?s.text_delta:void 0;return!i&&a===void 0?null:{...i?{currentTool:i}:{},...a!==void 0?{textDelta:a}:{}}}if(e.event!=="result"||!ae(e.result))return null;let r=e.result,t=typeof r.status=="string"?r.status.toUpperCase():"";if(t!=="SUCCESS"&&t!=="ERROR")return null;let n=ae(r.usage)?Dt(r.usage):void 0;if(t==="ERROR"){let s=typeof r.error=="string"&&r.error.trim()?r.error.trim():"antigravity cli result error";return{...n?{usage:n}:{},terminal:{ok:!1,finalResult:null,error:s}}}let o=typeof r.response=="string"?r.response.trim():"";return{...n?{usage:n}:{},terminal:{ok:!0,finalResult:o||"completed",error:null}}}var Ve=l(()=>{"use strict"});function le(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function ze(){return{assistantText:""}}function Mt(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function Ft(e){let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0,o=(le(e.models)?Object.keys(e.models):[]).find(s=>s.trim())?.trim();if(!(r===void 0&&t===void 0&&!o))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{},...o?{model:o}:{}}}function $t(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function Je(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return Mt(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!$t(e))return null;let t=le(e.stats)?Ft(e.stats):void 0;if(e.status==="error"){let o=le(e.error)&&typeof e.error.message=="string"?e.error.message:"gemini cli result error";return{...t?{usage:t}:{},terminal:{ok:!1,finalResult:null,error:o}}}let n=r.assistantText.trim();return{...t?{usage:t}:{},terminal:{ok:!0,finalResult:n||"completed",error:null}}}var qe=l(()=>{"use strict"});import{existsSync as Lt,readFileSync as Ht}from"node:fs";function jt(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Yt(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 Gt(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",M(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function S(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Vt(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function zt(e){if(typeof e.model=="string"&&e.model.trim())return e.model.trim();let r=e.modelUsage;if(r&&typeof r=="object"&&!Array.isArray(r)){let t=Object.keys(r)[0];if(t?.trim())return t.trim()}}function Jt(e,r){let t=Vt(r);if(!t)return;let n=S(t.input_tokens)??S(t.inputTokens)??S(t.prompt_tokens),o=S(t.output_tokens)??S(t.outputTokens)??S(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=zt(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function qt(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,f=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:f,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Xt(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function Xe(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Lt(e))return r;let t=Ht(e,"utf8").split(`
7
+ `).filter(Boolean),n=null,o=ze();for(let s of t){let i=N(s);if(!i||typeof i!="object"||Array.isArray(i))continue;if(i.type==="turn.started"&&(n=null,r.finalResult=null),i.type==="item.completed"){let d=i.item;if(d&&typeof d=="object"&&!Array.isArray(d)){let p=d;p.type==="agent_message"&&typeof p.text=="string"&&p.text.trim()&&(n=p.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=jt(i);if(a&&(r.firstEventAt||=a,r.lastEventAt=a),i.type==="stream_event"&&i.event&&typeof i.event=="object"&&i.event.type==="content_block_start"){let d=i.event.content_block;d?.type==="tool_use"&&(r.currentTool=String(d.name||"tool"))}if(i.type==="assistant"&&i.message&&typeof i.message=="object"){let d=i.message.content;if(Array.isArray(d)){let p=d.find(h=>h?.type==="tool_use");p&&(r.currentTool=String(p.name||r.currentTool))}}if(i.type==="tool_call"&&i.subtype==="started"){let d=i.tool_call&&typeof i.tool_call=="object"&&!Array.isArray(i.tool_call)?i.tool_call:void 0,p=Yt(d);p&&(r.currentTool=p)}let u=qt(i);u&&Xt(r,je({command:u.command,exitCode:u.exitCode,stdout:u.stdout,stderr:u.stderr,interleavedOutput:u.interleaved}));let f=Ge(i),m=f?null:Je(i,o),c=f??m;if(c?.currentTool&&(r.currentTool=c.currentTool),c?.usage&&(r.usage={...r.usage??{},...c.usage}),c?.terminal?c.terminal.ok?r.finalResult=c.terminal.finalResult:(r.finalResult=null,r.providerTerminalError=!0,r.error=c.terminal.error):i.type==="result"&&Gt(r,i),i.type==="turn.failed"){n=null,r.finalResult=null,r.providerTerminalError=!0;let d=i.error;r.error=typeof d?.message=="string"?d.message:"provider turn failed"}Jt(r,i)}return r}var Ze=l(()=>{"use strict";Ye();g();F();Ve();qe()});function Qe(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function ue(e){let r=(e??"").trim();if(!r)return null;if(O(r))return{blocked:!0,reason:`provider authentication failed: ${Qe(r)}`};for(let t of Zt)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Qe(r)}`};return null}var Zt,er=l(()=>{"use strict";F();Zt=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{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 rr(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Qt(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 en(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:rr(e.head)}function rn(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 tr(e){if(e.alive||Qt(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=rr(e.headCommit)??en(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:rn(s,r,t)}}var nr=l(()=>{"use strict"});var b=l(()=>{"use strict"});var tn,Bo,nn,Uo,or=l(()=>{"use strict";tn=["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","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Bo=new Set(tn),nn=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Uo=new Set(nn)});import{spawnSync as ir}from"node:child_process";function on(e,r,t={}){let n=ir("git",r,te({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=sn(e,r,n);if(t.throwError)throw new Error(o);re(o)}return n.stdout||""}function sn(e,r,t){let n=typeof t.stderr=="string"&&t.stderr.trim()||typeof t.stdout=="string"&&t.stdout.trim()||t.error?.message||`exit ${t.status??"unknown"}`;return`git ${r.join(" ")} failed in ${e}: ${n}`}function ar(e){return on(e,["status","--short"],{allowFailure:!0}).split(`
8
+ `).map(r=>r.trim()).filter(Boolean)}function I(e,r){try{let t=ir("git",r,te({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 sr(e,r,t){let n=I(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function lr(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return _(n,"missing worktree path");let s=I(e,["rev-parse","HEAD"]);if(s.status!==0)return _(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let d=I(e,["rev-parse",n]);if(d.status!==0)return _(n,d.error||d.stderr||d.stdout||`failed to resolve ${n}`,s.stdout.trim());i=d.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 u=sr(e,i,a),f=sr(e,a,i),m=u.error||f.error||void 0;if(u.isAncestor==null||f.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:f.isAncestor,relation:"unknown",...m?{error:m}:{}};let c=u.isAncestor?"ahead":f.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:f.isAncestor,relation:c,...m?{error:m}:{}}}function _(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var L=l(()=>{"use strict";b();g();or()});import{existsSync as an,readFileSync as ln,statSync as dr}from"node:fs";import H from"node:path";function mn(e,r=process.env){let t=e?cn:un,n=r.KYNVER_WORKER_GIT_PROBE_CACHE_TTL_MS?.trim();if(!n)return t;let o=Number(n);return Number.isFinite(o)&&o>=0?Math.floor(o):t}function fn(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function ce(e){try{return dr(e).mtimeMs}catch{return-1}}function pn(e){let r=H.join(e,".git");try{if(dr(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(ln(r,"utf8"));return t?H.resolve(e,t[1].trim()):null}catch{return null}}function ur(e){let r=pn(e);return[ce(e),r?ce(H.join(r,"HEAD")):-2,r?ce(H.join(r,"index")):-2].join(":")}function cr(e,r){return{changedFiles:ar(e),gitAncestry:lr(e,{base:r.base,baseCommit:r.baseCommit})}}function gn(e,r){for(y.delete(e),y.set(e,r);y.size>dn;){let t=y.keys().next().value;if(t===void 0)break;y.delete(t)}}function mr(e,r,t){let n=fn(r);if(!e||!e.trim())return P.missingWorktree++,{changedFiles:[],gitAncestry:_(n,"missing worktree path")};let o=`${e}\0${n}`;if(!an(e))return y.delete(o),P.missingWorktree++,{changedFiles:[],gitAncestry:_(n,`worktree no longer exists: ${e}`)};if(t.alive)return y.delete(o),P.liveProbes++,cr(e,r);let s=t.ttlMs??mn(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=ur(e),u=y.get(o);if(s>0&&u&&u.fingerprint===a&&i<u.expiresAt)return P.hits++,u.probe;P.misses++;let f=cr(e,r);if(s>0){let m=.8+.4*(t.random??Math.random)();gn(o,{fingerprint:ur(e),expiresAt:i+Math.round(s*m),probe:f})}return f}var un,cn,dn,y,P,fr=l(()=>{"use strict";L();un=10*6e4,cn=60*6e4,dn=2048,y=new Map,P={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function T(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function hn(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function yn(e){if(T(e.headCommit)||T(e.prUrl)||T(e.artifactBundlePath)||T(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&T(r.head))}function pr(e){return hn(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:yn(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 gr(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var hr=l(()=>{"use strict"});function de(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 yr(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function j(e){let r=e.trim();if(!r)return null;let t=de(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let m=de(s[1]??"");m&&n.push(m)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let m=de(r.slice(i,a+1));m&&n.push(m)}if(n.length===0)return null;let u=n[n.length-1],f=yr(u);for(let m of n){let c=yr(m);c>f&&(u=m,f=c)}return u}var me=l(()=>{"use strict"});function kr(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 br(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function kn(e){return new Set(e.map(r=>br(kr(r)??r)).filter(Boolean))}function Rr(e,r,t){let n=kr(e)??e;if(!n)return"unrelated";let o=br(n);return kn(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var xr=l(()=>{"use strict"});function E(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function bn(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function R(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:E(e)}function Y(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Sr(e){let r=null;if(typeof e=="string"){let o=j(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=R(String(s.prUrl??s.pr_url??"")),a=E(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:E(s.mergeCommit??s.merge_commit),reason:E(s.reason)})}return n}function _r(e,r){let t=[],n=R(E(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=R(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Er(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(!bn(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?R(E(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?R(r.targetPrUrls[0]):null):null;if(s){let c=_r(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let k of c)if(k!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${k} instead of canonical target ${s}`}}let h=Sr(n).find(k=>k.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=Sr(n),a=new Map(i.map(c=>[Y(c.prUrl),c])),u=new Set(r.targetPrUrls.map(c=>Y(R(c)??c)).filter(Boolean)),f=_r(t,n);if(r.landingOnly)for(let c of f){let d=a.get(Y(c)),p=Rr(c,r.targetPrUrls,d);if(!(p==="contract"||p==="support"))return u.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 m=[];for(let c of r.targetPrUrls){let d=Y(R(c)??c),p=a.get(d);if(!p){m.push(d);continue}p.outcome!=="merged"&&!p.reason?.trim()&&m.push(d)}return m.length>0?{blocked:!0,reason:m.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${m.join(", ")}`}:{blocked:!1}}function vr(e){if(e.blocked)return e.detail??e.reason}var Cr=l(()=>{"use strict";me();xr()});function xn(e){let r=Date.now();if(e.providerTerminalError||M(e.finalResult)||e.finalResult&&e.error?.trim()||O(e.error)||O(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:ue(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!Ar(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&_n(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=pr(o);if(s.blocked){let i=gr(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Er({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=vr(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(Sn(e))return{state:"done",reason:"empty abandoned worker record"};let o=ue(e.error);if(o)return{state:"blocked",reason:o.reason};let s=tr({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>Rn)return{state:"needs_attention",reason:`no first stream event ${ne(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>G?{state:"stale",reason:`no log/event/heartbeat activity for ${ne(n)}s`}:{state:"ok",reason:"recent activity"}}function Ar(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Sn(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 _n(e){let r=null;if(typeof e=="string"?r=j(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 En(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??Te(t))}function vn(e,r={}){let t=Xe(e.stdoutPath),n=Ke(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=En(e,t.finalResult,n),i=o?!1:C(e.pid),a=W(e.stdoutPath),u=W(e.stderrPath),f=W(e.heartbeatPath),{changedFiles:m,gitAncestry:c}=mr(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),d=Ie([t.lastEventAt,n.lastHeartbeatAt,B(e.stdoutPath),B(e.stderrPath),B(e.heartbeatPath)]),p=t.error||!i&&!s&&Oe(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,k=Ar(h)?null:h,at=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,Q=xn({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:f,lastActivityAt:d,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:p,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,completionBlocker:k,landingContract:at,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),lt=k||Q.state==="blocked"?"blocked":o||Q.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:lt,attention:Q,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:f,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:d,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:p,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:t.usage??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 wr(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Or(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var Rn,G,K=l(()=>{"use strict";Ne();Ze();F();er();nr();fr();hr();Cr();me();g();Rn=18e4,G=6e5});var Kr=l(()=>{"use strict";L()});var fe=l(()=>{"use strict";L();b();Kr()});var pe=l(()=>{"use strict";g()});var x=l(()=>{"use strict"});var V=l(()=>{"use strict"});var Nr=l(()=>{"use strict"});var Ps,Ts,ge=l(()=>{"use strict";Ps=25*1024*1024*1024,Ts=12*1024*1024*1024});var Us,Ds,Wr=l(()=>{"use strict";ge();Us=5*1024*1024*1024,Ds=10*1024*1024*1024});var js,Ys,he=l(()=>{"use strict";Wr();ge();js=30*1024*1024*1024,Ys=15*1024*1024*1024});var Br=l(()=>{"use strict";z();g()});var Ur=l(()=>{"use strict";K();g()});var Pn,Tn,Fr=l(()=>{"use strict";Nr();v();x();V();J();he();z();Br();Ur();g();Pn=500*1024*1024,Tn=4*1024*1024*1024});var J=l(()=>{"use strict";Fr()});import{homedir as Nn}from"node:os";import Wn from"node:path";var $r,be=l(()=>{"use strict";$r=Wn.join(Nn(),".kynver",".env")});var Lr=l(()=>{"use strict"});var Hr=l(()=>{"use strict";Lr()});var jr=l(()=>{"use strict"});var Yr=l(()=>{"use strict";g()});var Re=l(()=>{"use strict";Hr();jr();Yr()});var Gr=l(()=>{"use strict"});var Vr=l(()=>{"use strict";Gr()});var q=l(()=>{"use strict";be();b();v();Re();Vr()});var zr=l(()=>{"use strict";x();x()});var Jr=l(()=>{"use strict";be();Re();q()});var xe=l(()=>{"use strict"});var qr=l(()=>{"use strict";g()});import $n from"node:path";var ka,Se=l(()=>{"use strict";b();qr();ka=$n.join(".openclaw","harness")});var Z=l(()=>{"use strict";v();x();V();J();Se()});var Zr=l(()=>{"use strict";fe();x();zr();v();q();Jr();pe();xe();Z()});var zn,Ma,Qr=l(()=>{"use strict";zn=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Ma=zn.join("|")});var et=l(()=>{"use strict";b()});var rt=l(()=>{"use strict";et()});var tt=l(()=>{"use strict"});var nt=l(()=>{"use strict";tt()});import{homedir as Jn,totalmem as fl}from"node:os";import _e from"node:path";var ot,Ol,Il,Pl,Tl,v=l(()=>{"use strict";fe();b();pe();x();V();J();he();q();Zr();Qr();Z();rt();xe();nt();ot=_e.join(Jn(),".kynver"),Ol=_e.join(ot,"config.json"),Il=_e.join(ot,"credentials"),Pl=500*1024*1024,Tl=4*1024*1024*1024});var st=l(()=>{"use strict";v();Se();Z();g()});var z=l(()=>{"use strict";st();g()});K();var Ir="kynver-harness:",Cn="@runner:";function Pr(e){return e?.trim()?e.trim():null}function An(e){let r=Pr(e);if(!r?.startsWith(Ir))return null;let t=r.slice(Ir.length),n=t.indexOf(Cn);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Tr(e,r){let t=Pr(r);return t?An(e)===t:!1}K();g();function wn(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Tr(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>G?{health:"stale",reason:`heartbeat older than ${Math.floor(G/1e3)}s`}:t.alive&&r.pid&&!C(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"}}z();function it(e){return!!e.completionReportedAt?.trim()}K();function qn(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"),it(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"),Or(t)&&n.push(t.attention.reason||"landing gate blocked");let o=wr(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{qn as assessAutoCompleteEligibility,wn as classifyWorkerHealth,vn as computeWorkerStatus};
@@ -1,2 +1,2 @@
1
- var o=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function z(e){let r=e[Ur];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function k(e,r={}){return Nr.has(e)?!0:Dr.has(e)||r.operatorAllow?.has(e)||Mr.some(t=>e.endsWith(t))?!1:Kr.some(t=>e.endsWith(t))}function ke(e){let r=z(e);return Object.keys(e).filter(t=>k(t,{operatorAllow:r})).sort()}function _e(e){let r=z(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!k(t,{operatorAllow:r})&&k(t)).sort()}function A(e){let r=z(e),t={...e};for(let n of Object.keys(t))k(n,{operatorAllow:r})&&delete t[n];return t}function Br(e){let r=ke(e),t=_e(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Tr,Nr,Kr,Wr,Dr,Mr,Ur,w=o(()=>{"use strict";Tr=["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","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Nr=new Set(Tr),Kr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Wr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Dr=new Set(Wr),Mr=["_PUBLIC_KEY"],Ur="KYNVER_WORKER_ENV_ALLOW"});var m=o(()=>{"use strict"});var Ae=o(()=>{"use strict"});function Z(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict";Ae()});var N=o(()=>{"use strict";m();a();w()});var we=o(()=>{"use strict";N()});var ee=o(()=>{"use strict";N();m();we()});var re=o(()=>{"use strict";a()});var f=o(()=>{"use strict"});var K=o(()=>{"use strict"});var Pe=o(()=>{"use strict"});var zn,Xn,te=o(()=>{"use strict";zn=25*1024*1024*1024,Xn=12*1024*1024*1024});var to,no,Ie=o(()=>{"use strict";te();to=5*1024*1024*1024,no=10*1024*1024*1024});var co,uo,ne=o(()=>{"use strict";Ie();te();co=30*1024*1024*1024,uo=15*1024*1024*1024});var Ne=o(()=>{"use strict";a()});import tt from"node:path";var ko,oe=o(()=>{"use strict";m();Ne();ko=tt.join(".openclaw","harness")});var D=o(()=>{"use strict";g();f();K();M();oe()});var De=o(()=>{"use strict";g();oe();D();a()});var se=o(()=>{"use strict";De();a()});var Me=o(()=>{"use strict";se();a()});var Ue=o(()=>{"use strict"});var Be=o(()=>{"use strict";Ue();a()});var Le=o(()=>{"use strict"});var Fe=o(()=>{"use strict";Le()});var B=o(()=>{"use strict"});var $e=o(()=>{"use strict"});var He=o(()=>{"use strict"});var Ve=o(()=>{"use strict";Fe();a();B();$e();He()});var je=o(()=>{"use strict";B()});var Ye=o(()=>{"use strict"});var Ge=o(()=>{"use strict"});var ae=o(()=>{"use strict"});var qe=o(()=>{"use strict"});var Je=o(()=>{"use strict";ae();qe()});var ze=o(()=>{"use strict";Be();Ve();B();je();Ye();N();Ge();Je();ae();a()});var Xe=o(()=>{"use strict";ze()});var mt,ft,Qe=o(()=>{"use strict";Pe();g();f();K();M();ne();se();Me();Xe();a();mt=500*1024*1024,ft=4*1024*1024*1024});var M=o(()=>{"use strict";Qe()});import{homedir as gt}from"node:os";import ht from"node:path";var Ze,le=o(()=>{"use strict";Ze=ht.join(gt(),".kynver",".env")});var er=o(()=>{"use strict"});var rr=o(()=>{"use strict";er()});var tr=o(()=>{"use strict"});var nr=o(()=>{"use strict";a()});var ce=o(()=>{"use strict";rr();tr();nr()});var or=o(()=>{"use strict"});var ir=o(()=>{"use strict";or()});var L=o(()=>{"use strict";le();m();g();ce();ir()});var sr=o(()=>{"use strict";f();f()});var ar=o(()=>{"use strict";le();ce();L()});var ue=o(()=>{"use strict"});var lr=o(()=>{"use strict";ee();f();sr();g();L();ar();re();ue();D()});function _(e){let r=e.trim().toLowerCase();return Ct[r]??r}var cr,Et,Ct,F=o(()=>{"use strict";cr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Et=cr.join("|"),Ct={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var ur=o(()=>{"use strict";m()});var dr=o(()=>{"use strict";ur()});var pr=o(()=>{"use strict"});var mr=o(()=>{"use strict";pr()});import{homedir as At,totalmem as Za}from"node:os";import de from"node:path";var fr,gl,hl,yl,vl,g=o(()=>{"use strict";ee();m();re();f();K();M();ne();L();lr();F();D();dr();ue();mr();fr=de.join(At(),".kynver"),gl=de.join(fr,"config.json"),hl=de.join(fr,"credentials"),yl=500*1024*1024,vl=4*1024*1024*1024});w();w();var X="KYNVER_NO_PROD_DB_CREDENTIALS",Lr=["KYNVER_ENV_FILE"],Fr=new Set(["1","true","yes","on"]);function be(e){let r=e[X]?.trim().toLowerCase();return r!==void 0&&Fr.has(r)}function d(e,r={}){let t=A(e);if(!r.reviewWorker)return t;let n={...t,[X]:"1"};for(let i of Lr)delete n[i];return n}var xe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function $r(e,r={}){let t=d(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||xe.includes(c)),i=xe.every(c=>t[c]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=be(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:i,envFilePointerStripped:s,safe:i&&n.length===0&&s&&(!r.reviewWorker||l)}}var Hr="expert-lane-pr-review:",Vr="plan-review-task",jr="scheduledjob:",P=new Set(["lorentz","dalton","rhea","sentinel"]);function Yr(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function Q(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function Gr(e,r){return e.startsWith("factory:")?e.includes("lb")||Q(r):!1}function qr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
2
- ${n}`,s=Yr(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Hr)||r===Vr||r.startsWith("daemon-review:")||s&&P.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Gr(r,i)||Q(i))||r.startsWith(jr)&&e.parentTaskId&&s&&P.has(s)||e.planId&&!e.parentTaskId&&s&&P.has(s)&&Q(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&P.has(s))}var Jr=/^claude[-_]/i,zr=/^(?:opus|sonnet|haiku)\b/i;function Se(e){let r=e.trim();return Jr.test(r)||zr.test(r)}function Ee(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Oe(e){return e.trim().toLowerCase().startsWith("gemini-")}function Xr(e){return Ee(e)?"codex":Se(e)?"claude":Oe(e)?"gemini":(Ce(e),"cursor")}function Qr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function Zr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Se(n)||Ee(n)||Ce(n)||Oe(n)?{lane:t,model:n,provider:Xr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function I(e){let r=typeof e=="string"?e.trim():"";return r?Qr(r)??Zr(r):null}g();a();a();var yr="kynver",vr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Kt=vr.map(e=>`mcp__${yr}__${e}`);a();a();var Bc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Dt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var Mt=Dt();a();var gu=600*1e3;a();var Mu=600*1e3;var Rr="composer-2.5";F();F();var p="cursor",Ft=new Set(["claude","opus","anthropic"]),$t=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function b(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function u(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Ft.has(r)?!0:r.includes("claude")||r.includes("opus")}function pe(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&u(r))return!0;let t=b(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=I(b(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(Ht(n.model)))return!0;let i=b(e,"description");if($t.some(l=>l.test(i)))return!0;let s=b(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Ht(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Vt(e,r){return{provider:p,model:Rr,rule:`policy:cursor_default${r}`,requestedModel:e}}var jt=["explicit:","executor_ref:","factory:","task:"];function Yt(e){return jt.some(r=>e.startsWith(r))}function me(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||I(b(e,"executorRef"))?.provider?!0:pe(e)}function kr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&u(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Yt(r.rule)||me(t)||!u(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Vt(r.model,i)}function Gt(e,r=p){let t=e?.trim();return t?_(t):r}function qt(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(p)?[...new Set(r.map(t=>u(t)?p:t))]:r.every(t=>u(t))?[p]:r}var Jt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,zt=/\b(npm run build\b|next build\b)\b/i,Xt=/\b(vercel (build|deploy|--prod))\b/i,Qt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function fe(e){let r=e.trim();return r?Qt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Xt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:zt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:Jt.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 j="heavy_verification_token_required";import{spawnSync as yn}from"node:child_process";a();import{closeSync as on,existsSync as E,mkdirSync as sn,openSync as an,readdirSync as Sr,readFileSync as ln,statSync as cn,unlinkSync as Er,writeFileSync as un}from"node:fs";import ye from"node:path";import{mkdirSync as en}from"node:fs";import{tmpdir as rn}from"node:os";import Y from"node:path";import{homedir as Zt,tmpdir as ld}from"node:os";import _r from"node:path";function xr(){let e=process.env.KYNVER_STATE_ROOT;return e?_r.resolve(e):_r.join(Zt(),".kynver","state")}function tn(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function nn(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?Y.resolve(e):tn()?Y.join(rn(),"kynver","state","heavy-verification"):Y.join(xr(),"heavy-verification")}function ge(){return Y.join(nn(),"slots")}function S(){let e=ge();return en(e,{recursive:!0}),e}var C=120*6e4,br=1;function dn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function q(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function G(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?dn(e,br):br}function pn(e){return`slot-${e}`}function mn(e,r=ge()){return ye.join(r,`${e}.json`)}function ve(e){if(!E(e))return null;try{let r=JSON.parse(ln(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 Cr(e,r=C){if(!e||!Z(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Or(e,r){let t=ve(e);if(t)return Cr(t,r);if(!E(e))return!0;try{return Date.now()-cn(e).mtimeMs>r}catch{return!0}}function fn(e,r){if(Or(e,r))try{Er(e)}catch{}}function gn(e){return sn(e,{recursive:!0}),e}function Re(e={}){let r=gn(e.slotsDir??S()),t=e.staleMs??C,n=0;for(let i of Sr(r)){if(!i.endsWith(".json"))continue;let s=ye.join(r,i),l=E(s);fn(s,t),l&&!E(s)&&(n+=1)}return n}function hn(e={}){let r=e.slotsDir??S(),t=e.staleMs??C;Re({slotsDir:r,staleMs:t});let n=[];for(let i of Sr(r)){if(!i.endsWith(".json"))continue;let s=ve(ye.join(r,i));s&&!Cr(s,t)&&n.push(s)}return n}function he(e={}){return hn(e).length}function O(e,r={}){if(q())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:G(),reason:null};let t=r.slotsDir??S(),n=r.staleMs??C,i=r.maxSlots??G();Re({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=pn(l),v=mn(c,t),wr=ve(v);if(Or(v,n))try{Er(v)}catch{}else if(wr||E(v))continue;let Pr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=an(v,"wx");un(R,JSON.stringify(Pr,null,2),"utf8"),on(R);let Ir=he({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:Ir,maxSlots:i,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=he({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function J(e,r={}){if(q())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:G(),reason:null};let t=r.slotsDir??S(),n=r.staleMs??C,i=r.maxSlots??G();Re({slotsDir:t,staleMs:n});let s=he({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function vn(e){e<=0||yn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function Ar(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=O(e,n);for(;!s.admitted&&Date.now()<i;)vn(Math.min(t,i-Date.now())),s=O(e,n);return s}function Rn(e,r={}){let t=fe(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...J(e),slotId:null}};if(q())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...J(e),slotId:null}};let n=r.waitMs??0,i=n>0?Ar(e,n,r.pollMs):O(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:j,commandClass:t.commandClass,reason:t.reason??i.reason??j,verificationGate:i}}export{p as DEFAULT_WORKER_PROVIDER,j as HEAVY_VERIFICATION_TOKEN_REQUIRED,X as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,$r as auditReviewWorkerCredentialScope,Br as auditWorkerEnv,d as buildWorkerSpawnEnv,fe as classifyHeavyShellCommand,kr as enforceCursorWorkerProvider,Rn as gateWorkerShellCommand,u as isClaudeFamilyProvider,k as isForbiddenWorkerEnvKey,qr as isHarnessExpertReviewWorker,be as isNoProdCredentialReviewEnvironment,ke as listForbiddenWorkerEnvKeys,_e as listOperatorAllowedWorkerEnvKeys,_ as normalizeWorkerProviderName,qt as preferCursorExecutor,Gt as resolveConfiguredWorkerProvider,A as scrubWorkerEnv,pe as taskAllowsClaudeWorker,me as taskExpressesWorkerProviderPreference};
1
+ var o=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function X(e){let r=e[Br];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function k(e,r={}){return Wr.has(e)?!0:Mr.has(e)||r.operatorAllow?.has(e)||Ur.some(t=>e.endsWith(t))?!1:Kr.some(t=>e.endsWith(t))}function ke(e){let r=X(e);return Object.keys(e).filter(t=>k(t,{operatorAllow:r})).sort()}function _e(e){let r=X(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!k(t,{operatorAllow:r})&&k(t)).sort()}function A(e){let r=X(e),t={...e};for(let n of Object.keys(t))k(n,{operatorAllow:r})&&delete t[n];return t}function Lr(e){let r=ke(e),t=_e(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Nr,Wr,Kr,Dr,Mr,Ur,Br,w=o(()=>{"use strict";Nr=["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","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Wr=new Set(Nr),Kr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Dr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Mr=new Set(Dr),Ur=["_PUBLIC_KEY"],Br="KYNVER_WORKER_ENV_ALLOW"});var m=o(()=>{"use strict"});var Ae=o(()=>{"use strict"});function T(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict";Ae()});var W=o(()=>{"use strict";m();a();w()});var we=o(()=>{"use strict";W()});var ee=o(()=>{"use strict";W();m();we()});var re=o(()=>{"use strict";a()});var f=o(()=>{"use strict"});var K=o(()=>{"use strict"});var Pe=o(()=>{"use strict"});var Xn,Qn,te=o(()=>{"use strict";Xn=25*1024*1024*1024,Qn=12*1024*1024*1024});var no,oo,Ie=o(()=>{"use strict";te();no=5*1024*1024*1024,oo=10*1024*1024*1024});var uo,po,ne=o(()=>{"use strict";Ie();te();uo=30*1024*1024*1024,po=15*1024*1024*1024});var Ne=o(()=>{"use strict";a()});import nt from"node:path";var _o,oe=o(()=>{"use strict";m();Ne();_o=nt.join(".openclaw","harness")});var M=o(()=>{"use strict";g();f();K();U();oe()});var De=o(()=>{"use strict";g();oe();M();a()});var se=o(()=>{"use strict";De();a()});var Me=o(()=>{"use strict";se();a()});var Ue=o(()=>{"use strict"});var Be=o(()=>{"use strict";Ue();a()});var Le=o(()=>{"use strict"});var Fe=o(()=>{"use strict";Le()});var L=o(()=>{"use strict"});var $e=o(()=>{"use strict"});var He=o(()=>{"use strict"});var Ve=o(()=>{"use strict";Fe();a();L();$e();He()});var je=o(()=>{"use strict";L()});var Ye=o(()=>{"use strict"});var Si,Ci,Ge=o(()=>{"use strict";W();Si=10*6e4,Ci=60*6e4});var qe=o(()=>{"use strict"});var ae=o(()=>{"use strict"});var Je=o(()=>{"use strict"});var ze=o(()=>{"use strict";ae();Je()});var Xe=o(()=>{"use strict";Be();Ve();L();je();Ye();Ge();qe();ze();ae();a()});var Qe=o(()=>{"use strict";Xe();a()});var ft,gt,Ze=o(()=>{"use strict";Pe();g();f();K();U();ne();se();Me();Qe();a();ft=500*1024*1024,gt=4*1024*1024*1024});var U=o(()=>{"use strict";Ze()});import{homedir as ht}from"node:os";import yt from"node:path";var er,le=o(()=>{"use strict";er=yt.join(ht(),".kynver",".env")});var rr=o(()=>{"use strict"});var tr=o(()=>{"use strict";rr()});var nr=o(()=>{"use strict"});var or=o(()=>{"use strict";a()});var ce=o(()=>{"use strict";tr();nr();or()});var ir=o(()=>{"use strict"});var sr=o(()=>{"use strict";ir()});var F=o(()=>{"use strict";le();m();g();ce();sr()});var ar=o(()=>{"use strict";f();f()});var lr=o(()=>{"use strict";le();ce();F()});var ue=o(()=>{"use strict"});var cr=o(()=>{"use strict";ee();f();ar();g();F();lr();re();ue();M()});function _(e){let r=e.trim().toLowerCase();return Ot[r]??r}var ur,Ct,Ot,$=o(()=>{"use strict";ur=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Ct=ur.join("|"),Ot={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var dr=o(()=>{"use strict";m()});var pr=o(()=>{"use strict";dr()});var mr=o(()=>{"use strict"});var fr=o(()=>{"use strict";mr()});import{homedir as wt,totalmem as al}from"node:os";import de from"node:path";var gr,xl,El,Sl,Cl,g=o(()=>{"use strict";ee();m();re();f();K();U();ne();F();cr();$();M();pr();ue();fr();gr=de.join(wt(),".kynver"),xl=de.join(gr,"config.json"),El=de.join(gr,"credentials"),Sl=500*1024*1024,Cl=4*1024*1024*1024});w();w();var Q="KYNVER_NO_PROD_DB_CREDENTIALS",Fr=["KYNVER_ENV_FILE"],$r=new Set(["1","true","yes","on"]);function xe(e){let r=e[Q]?.trim().toLowerCase();return r!==void 0&&$r.has(r)}function d(e,r={}){let t=A(e);if(!r.reviewWorker)return t;let n={...t,[Q]:"1"};for(let i of Fr)delete n[i];return n}var be=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Hr(e,r={}){let t=d(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||be.includes(c)),i=be.every(c=>t[c]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=xe(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:i,envFilePointerStripped:s,safe:i&&n.length===0&&s&&(!r.reviewWorker||l)}}var Vr="expert-lane-pr-review:",jr="plan-review-task",Yr="scheduledjob:",P=new Set(["lorentz","dalton","rhea","sentinel"]);function Gr(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function Z(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function qr(e,r){return e.startsWith("factory:")?e.includes("lb")||Z(r):!1}function Jr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
2
+ ${n}`,s=Gr(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Vr)||r===jr||r.startsWith("daemon-review:")||s&&P.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||qr(r,i)||Z(i))||r.startsWith(Yr)&&e.parentTaskId&&s&&P.has(s)||e.planId&&!e.parentTaskId&&s&&P.has(s)&&Z(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&P.has(s))}var zr=/^claude[-_]/i,Xr=/^(?:opus|sonnet|haiku)\b/i;function Ee(e){let r=e.trim();return zr.test(r)||Xr.test(r)}function Se(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Oe(e){return e.trim().toLowerCase().startsWith("gemini-")}function Qr(e){return Se(e)?"codex":Ee(e)?"claude":Oe(e)?"gemini":(Ce(e),"cursor")}function Zr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function et(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Ee(n)||Se(n)||Ce(n)||Oe(n)?{lane:t,model:n,provider:Qr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function I(e){let r=typeof e=="string"?e.trim():"";return r?Zr(r)??et(r):null}g();a();a();var vr="kynver",Rr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Kt=Rr.map(e=>`mcp__${vr}__${e}`);a();a();var Gc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Mt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var Ut=Mt();a();var xu=600*1e3;a();var ju=600*1e3;var kr="composer-2.5";$();$();var p="cursor",$t=new Set(["claude","opus","anthropic"]),Ht=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function x(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function u(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return $t.has(r)?!0:r.includes("claude")||r.includes("opus")}function pe(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&u(r))return!0;let t=x(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=I(x(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(Vt(n.model)))return!0;let i=x(e,"description");if(Ht.some(l=>l.test(i)))return!0;let s=x(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Vt(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function jt(e,r){return{provider:p,model:kr,rule:`policy:cursor_default${r}`,requestedModel:e}}var Yt=["explicit:","executor_ref:","factory:","task:"];function Gt(e){return Yt.some(r=>e.startsWith(r))}function me(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||I(x(e,"executorRef"))?.provider?!0:pe(e)}function _r(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&u(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Gt(r.rule)||me(t)||!u(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return jt(r.model,i)}function qt(e,r=p){let t=e?.trim();return t?_(t):r}function Jt(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(p)?[...new Set(r.map(t=>u(t)?p:t))]:r.every(t=>u(t))?[p]:r}var zt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Xt=/\b(npm run build\b|next build\b)\b/i,Qt=/\b(vercel (build|deploy|--prod))\b/i,Zt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function fe(e){let r=e.trim();return r?Zt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Qt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Xt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:zt.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 Y="heavy_verification_token_required";import{spawnSync as vn}from"node:child_process";a();import{closeSync as sn,existsSync as S,mkdirSync as an,openSync as ln,readdirSync as Sr,readFileSync as cn,statSync as un,unlinkSync as Cr,writeFileSync as dn}from"node:fs";import ye from"node:path";import{mkdirSync as rn}from"node:fs";import{tmpdir as tn}from"node:os";import G from"node:path";import{homedir as en,tmpdir as hd}from"node:os";import br from"node:path";function xr(){let e=process.env.KYNVER_STATE_ROOT;return e?br.resolve(e):br.join(en(),".kynver","state")}function nn(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function on(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?G.resolve(e):nn()?G.join(tn(),"kynver","state","heavy-verification"):G.join(xr(),"heavy-verification")}function ge(){return G.join(on(),"slots")}function E(){let e=ge();return rn(e,{recursive:!0}),e}var C=120*6e4,Er=1;function pn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function J(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function q(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?pn(e,Er):Er}function mn(e){return`slot-${e}`}function fn(e,r=ge()){return ye.join(r,`${e}.json`)}function ve(e){if(!S(e))return null;try{let r=JSON.parse(cn(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 Or(e,r=C){if(!e||!T(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Ar(e,r){let t=ve(e);if(t)return Or(t,r);if(!S(e))return!0;try{return Date.now()-un(e).mtimeMs>r}catch{return!0}}function gn(e,r){if(Ar(e,r))try{Cr(e)}catch{}}function hn(e){return an(e,{recursive:!0}),e}function Re(e={}){let r=hn(e.slotsDir??E()),t=e.staleMs??C,n=0;for(let i of Sr(r)){if(!i.endsWith(".json"))continue;let s=ye.join(r,i),l=S(s);gn(s,t),l&&!S(s)&&(n+=1)}return n}function yn(e={}){let r=e.slotsDir??E(),t=e.staleMs??C;Re({slotsDir:r,staleMs:t});let n=[];for(let i of Sr(r)){if(!i.endsWith(".json"))continue;let s=ve(ye.join(r,i));s&&!Or(s,t)&&n.push(s)}return n}function he(e={}){return yn(e).length}function O(e,r={}){if(J())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:q(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??q();Re({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=mn(l),v=fn(c,t),Pr=ve(v);if(Ar(v,n))try{Cr(v)}catch{}else if(Pr||S(v))continue;let Ir={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=ln(v,"wx");dn(R,JSON.stringify(Ir,null,2),"utf8"),sn(R);let Tr=he({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:Tr,maxSlots:i,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=he({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function z(e,r={}){if(J())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:q(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??q();Re({slotsDir:t,staleMs:n});let s=he({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function Rn(e){e<=0||vn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function wr(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=O(e,n);for(;!s.admitted&&Date.now()<i;)Rn(Math.min(t,i-Date.now())),s=O(e,n);return s}function kn(e,r={}){let t=fe(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...z(e),slotId:null}};if(J())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...z(e),slotId:null}};let n=r.waitMs??0,i=n>0?wr(e,n,r.pollMs):O(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:Y,commandClass:t.commandClass,reason:t.reason??i.reason??Y,verificationGate:i}}export{p as DEFAULT_WORKER_PROVIDER,Y as HEAVY_VERIFICATION_TOKEN_REQUIRED,Q as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Hr as auditReviewWorkerCredentialScope,Lr as auditWorkerEnv,d as buildWorkerSpawnEnv,fe as classifyHeavyShellCommand,_r as enforceCursorWorkerProvider,kn as gateWorkerShellCommand,u as isClaudeFamilyProvider,k as isForbiddenWorkerEnvKey,Jr as isHarnessExpertReviewWorker,xe as isNoProdCredentialReviewEnvironment,ke as listForbiddenWorkerEnvKeys,_e as listOperatorAllowedWorkerEnvKeys,_ as normalizeWorkerProviderName,Jt as preferCursorExecutor,qt as resolveConfiguredWorkerProvider,A as scrubWorkerEnv,pe as taskAllowsClaudeWorker,me as taskExpressesWorkerProviderPreference};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.2.117",
3
+ "version": "0.2.122",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -185,7 +185,7 @@
185
185
  "!dist/**/*.d.ts.map"
186
186
  ],
187
187
  "scripts": {
188
- "build": "esbuild src/provider-terminal-failure.ts src/cli.ts src/index.ts src/node-runtime-policy.ts src/local-run-store/index.ts src/worker-broker/index.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.ts src/chat/command-auth-proof.ts src/chat/chat-turn-envelope.ts src/chat/chat-access-change-record.ts src/dispatch-claim-authorization.ts src/desktop-entry.ts src/server/monitor.ts src/server/landing.ts src/server/worker-policy.ts src/server/orchestration.ts src/server/adapter-contract.ts src/server/context-budget-receipt.ts src/server/context-budget.ts src/server/prompt.ts src/server/node-runtime-policy.ts src/server/model-routing.ts src/server/dispatch-routing.ts src/server/db-credentials.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",
188
+ "build": "esbuild src/provider-terminal-failure.ts src/cli.ts src/daemon-tick-thread.ts src/index.ts src/node-runtime-policy.ts src/local-run-store/index.ts src/worker-broker/index.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.ts src/chat/command-auth-proof.ts src/chat/chat-turn-envelope.ts src/chat/chat-access-change-record.ts src/dispatch-claim-authorization.ts src/desktop-entry.ts src/server/monitor.ts src/server/landing.ts src/server/worker-policy.ts src/server/orchestration.ts src/server/adapter-contract.ts src/server/context-budget-receipt.ts src/server/context-budget.ts src/server/prompt.ts src/server/node-runtime-policy.ts src/server/model-routing.ts src/server/dispatch-routing.ts src/server/db-credentials.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",
189
189
  "typecheck": "tsc -p tsconfig.json --noEmit",
190
190
  "test": "vitest run --config vitest.config.ts",
191
191
  "prepublishOnly": "node ../../scripts/npm-publish-guard.mjs && npm run build",