@oracle-agent/oracle 0.22.6 → 0.22.8

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,4 +1,6 @@
1
- import m from"node:fs";import V from"node:path";import C from"node:fs";import f from"node:path";import v from"node:fs";import g from"node:os";import l from"node:path";import{fileURLToPath as T}from"node:url";var j=l.dirname(T(import.meta.url)),X=l.resolve(j,"../..");function x(){return process.env.ORACLE_FAKE_HOME||g.homedir()}function P(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function _(){return P()?process.env.ORACLE_CONFIG_DIR||l.join(x(),".config","oracle"):l.join(x(),".config","oracle")}function D(){return l.join(_(),"desk.json")}function w(){return l.join(_(),"env")}function u({force:t=!1}={}){if(u._done&&!t)return u._result||null;u._done=!0;let o={},e=(r,n)=>{if(n==null)return;let i=String(n).trim();i&&(process.env[r]!=null&&String(process.env[r]).trim()!==""||(process.env[r]=i,o[r]=i))};try{let r=w();if(v.existsSync(r))for(let n of v.readFileSync(r,"utf8").split(/\r?\n/)){let i=n.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!i||i[2].startsWith("#"))continue;let c=i[2];(c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'"))&&(c=c.slice(1,-1)),e(i[1],c)}}catch{}try{let r=D();if(v.existsSync(r)){let n=JSON.parse(v.readFileSync(r,"utf8"));n&&typeof n=="object"&&(e("ORACLE_DESK_URL",n.deskUrl||n.dataUrl||n.url),e("ORACLE_DATA_URL",n.dataUrl||n.deskUrl||n.url),e("ORACLE_API_URL",n.apiUrl||n.dataUrl||n.deskUrl),e("ORACLE_PUBLIC_URL",n.publicUrl||n.deskUrl||n.dataUrl),e("ORACLE_EXEC_URL",n.execUrl),e("MAD_DESK_URL",n.deskUrl||n.dataUrl))}}catch{}let s=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return s&&(e("ORACLE_DESK_URL",s),e("ORACLE_DATA_URL",s),e("ORACLE_API_URL",s),e("ORACLE_PUBLIC_URL",s),e("MAD_DESK_URL",s)),u._result=Object.keys(o).length?o:null,u._result}try{u()}catch{}var $="0.19.0",ne=`hermes-agent==${$}`;var S="0.12.1",te=Object.freeze({posix:Object.freeze({url:`https://github.com/astral-sh/uv/releases/download/${S}/uv-installer.sh`,sha256:"d3f5412d38c99f9d024901843bf98206f0d2c6dbe64df40d0b740e2751ca62c1"}),windows:Object.freeze({url:`https://github.com/astral-sh/uv/releases/download/${S}/uv-installer.ps1`,sha256:"b9ec035151bfbb11d616dbd69886498d885551489eddf095ea3c0ad59f640eb0"})});function I(){return f.join(_(),"runtime")}function H(){return f.join(I(),"venv")}function N(t){let o=process.platform==="win32"?"Scripts":"bin",e=process.platform==="win32"?`${t}.exe`:t;return f.join(H(),o,e)}function M(){return N("hermes")}function B(t){let o=process.platform==="win32"&&!f.extname(t)?["",".exe",".cmd",".bat"]:[""];for(let e of(process.env.PATH||"").split(f.delimiter))if(e)for(let s of o){let r=f.join(e,`${t}${s}`);try{if(C.existsSync(r))return r}catch{}}return null}function O(){if(process.env.ORACLE_HERMES_BIN)return{ok:!0,bin:process.env.ORACLE_HERMES_BIN,source:"env"};let t=B("hermes");if(t)return{ok:!0,bin:t,source:"path"};let o=M();return C.existsSync(o)?{ok:!0,bin:o,source:"managed"}:{ok:!1,bin:null,source:null}}function L(){let[t,o]=process.versions.node.split(".").map(Number);return t>20||t===20&&o>=19}function K(t){if(!m.existsSync(t))return{};let o={};for(let e of m.readFileSync(t,"utf8").split(/\r?\n/)){let s=e.match(/^([A-Z0-9_]+)=(.*)$/);s&&(o[s[1]]=s[2])}return o}async function F(t){let o=t.replace(/\/$/,"");for(let e of["/health","/public/health"])try{if((await fetch(o+e)).ok)return!0}catch{}return!1}var ce={name:"doctor",summary:"check the read plane",group:"read",usage:"oracle doctor [--json]",async run(t){let o=t.argv.includes("--json"),e=[],s=!1,r=(a,y,U,b=null)=>{e.push({id:a,status:y,detail:U,fix:b}),y==="fail"&&(s=!0)};r("node",L()?"ok":"fail",`node ${process.versions.node}`,L()?null:"install node >= 20.19");let n=t.paths.oracleExecEnvPath(),i=K(n),c=process.env.ORACLE_ROUTE_ATTESTATION_SECRET||process.env.MAD_ROUTE_ATTESTATION_SECRET||process.env.ORACLE_ATTESTATION_SECRET||process.env.ORACLE_STAMP_HMAC_SECRET||i.ORACLE_ROUTE_ATTESTATION_SECRET||i.MAD_ROUTE_ATTESTATION_SECRET||i.ORACLE_ATTESTATION_SECRET||i.ORACLE_STAMP_HMAC_SECRET;r("attestation_secret",c?"ok":"warn",c?"present":"missing",c?null:"run oracle init --apply (writes ~/.config/oracle/exec.env)");let p=process.env.ORACLE_DATA_URL||"http://127.0.0.1:8787",E=await F(p),A=t.paths.loadDeskRouting&&(process.env.ORACLE_DESK_URL||process.env.ORACLE_PUBLIC_URL)?`desk ${process.env.ORACLE_DESK_URL||process.env.ORACLE_PUBLIC_URL}`:null;r("data_server",E?"ok":"warn",E?`reachable ${p}${A?` (${A})`:""}`:`down ${p}`,E?null:p.includes("127.0.0.1")||p.includes("localhost")?"oracle data serve OR set ~/.config/oracle/desk.json \u2192 Arch :8799":"check Arch desk is up (curl $ORACLE_DESK_URL/public/health)");let d=O();r("hermes_opt_in","ok",d.ok?`detected ${d.bin} (${d.source}) \u2014 unused unless ORACLE_CHAT_BACKEND=hermes`:"not detected \u2014 native-only OK",d.ok?"detection only; opt in with ORACLE_CHAT_BACKEND=hermes or oracle harness detect":null);let R=V.join(t.paths.hermesRoot(),"profiles"),h=0;m.existsSync(R)&&(h=m.readdirSync(R,{withFileTypes:!0}).filter(a=>a.isDirectory()).length),r("hermes_lanes","ok",h>0?`${h} profile dir(s) (optional Hermes opt-in surface)`:"no Hermes lane profiles (native-only OK)",(h>0,null));let k={ok:!s,checks:e};if(o)process.stdout.write(JSON.stringify(k,null,2)+`
2
- `);else for(let a of e)process.stdout.write(`${a.status.toUpperCase().padEnd(4)} ${a.id}: ${a.detail}
3
- `),a.fix&&process.stdout.write(` fix: ${a.fix}
4
- `);return s?1:0}};export{ce as default};
1
+ import D from"node:fs";import ve from"node:path";import B from"node:fs";import R from"node:path";import U from"node:fs";import Z from"node:os";import O from"node:path";import{fileURLToPath as Q}from"node:url";var ee=O.dirname(Q(import.meta.url)),g=O.resolve(ee,"../..");function N(){return process.env.ORACLE_FAKE_HOME||Z.homedir()}function te(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function I(){return te()?process.env.ORACLE_CONFIG_DIR||O.join(N(),".config","oracle"):O.join(N(),".config","oracle")}function ne(){return O.join(I(),"desk.json")}function re(){return O.join(I(),"env")}function S({force:e=!1}={}){if(S._done&&!e)return S._result||null;S._done=!0;let t={},n=(s,o)=>{if(o==null)return;let u=String(o).trim();u&&(process.env[s]!=null&&String(process.env[s]).trim()!==""||(process.env[s]=u,t[s]=u))};try{let s=re();if(U.existsSync(s))for(let o of U.readFileSync(s,"utf8").split(/\r?\n/)){let u=o.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!u||u[2].startsWith("#"))continue;let i=u[2];(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),n(u[1],i)}}catch{}try{let s=ne();if(U.existsSync(s)){let o=JSON.parse(U.readFileSync(s,"utf8"));o&&typeof o=="object"&&(n("ORACLE_DESK_URL",o.deskUrl||o.dataUrl||o.url),n("ORACLE_DATA_URL",o.dataUrl||o.deskUrl||o.url),n("ORACLE_API_URL",o.apiUrl||o.dataUrl||o.deskUrl),n("ORACLE_PUBLIC_URL",o.publicUrl||o.deskUrl||o.dataUrl),n("ORACLE_EXEC_URL",o.execUrl),n("MAD_DESK_URL",o.deskUrl||o.dataUrl))}}catch{}let r=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return r&&(n("ORACLE_DESK_URL",r),n("ORACLE_DATA_URL",r),n("ORACLE_API_URL",r),n("ORACLE_PUBLIC_URL",r),n("MAD_DESK_URL",r)),S._result=Object.keys(t).length?t:null,S._result}try{S()}catch{}var oe="0.19.0",Ie=`hermes-agent==${oe}`;var K="0.12.1",De=Object.freeze({posix:Object.freeze({url:`https://github.com/astral-sh/uv/releases/download/${K}/uv-installer.sh`,sha256:"d3f5412d38c99f9d024901843bf98206f0d2c6dbe64df40d0b740e2751ca62c1"}),windows:Object.freeze({url:`https://github.com/astral-sh/uv/releases/download/${K}/uv-installer.ps1`,sha256:"b9ec035151bfbb11d616dbd69886498d885551489eddf095ea3c0ad59f640eb0"})});function se(){return R.join(I(),"runtime")}function ie(){return R.join(se(),"venv")}function ce(e){let t=process.platform==="win32"?"Scripts":"bin",n=process.platform==="win32"?`${e}.exe`:e;return R.join(ie(),t,n)}function ae(){return ce("hermes")}function le(e){let t=process.platform==="win32"&&!R.extname(e)?["",".exe",".cmd",".bat"]:[""];for(let n of(process.env.PATH||"").split(R.delimiter))if(n)for(let r of t){let s=R.join(n,`${e}${r}`);try{if(B.existsSync(s))return s}catch{}}return null}function z(){if(process.env.ORACLE_HERMES_BIN)return{ok:!0,bin:process.env.ORACLE_HERMES_BIN,source:"env"};let e=le("hermes");if(e)return{ok:!0,bin:e,source:"path"};let t=ae();return B.existsSync(t)?{ok:!0,bin:t,source:"managed"}:{ok:!1,bin:null,source:null}}import y from"node:fs";import b from"node:path";import{fileURLToPath as ye}from"node:url";var ue=Object.freeze([{id:"oracle",label:"Oracle Native",kind:"oracle",bins:["oracle"],website:!0,detect:!0},{id:"hermes",label:"Hermes Agent",kind:"mcp",bins:["hermes"],mcpTarget:"generic",configKey:"hermes",website:!0,detect:!0},{id:"claude",label:"Claude Code",kind:"mcp",bins:["claude"],mcpTarget:"claude-code",configKey:"claudeCode",website:!0,detect:!0},{id:"claude-desktop",label:"Claude Desktop",kind:"mcp",bins:[],mcpTarget:"claude-desktop",configKey:"claudeDesktop",website:!0,detect:!1},{id:"chatgpt",label:"ChatGPT",kind:"mcp",bins:[],mcpTarget:"chatgpt",configKey:"chatgpt",website:!0,detect:!1},{id:"codex",label:"OpenAI Codex",kind:"mcp",bins:["codex"],mcpTarget:"codex",configKey:"codex",website:!0,detect:!0},{id:"cursor",label:"Cursor",kind:"mcp",bins:["cursor","cursor-agent"],mcpTarget:"cursor",configKey:"cursor",website:!0,detect:!0},{id:"windsurf",label:"Windsurf",kind:"mcp",bins:["windsurf"],mcpTarget:"vscode",configKey:"windsurf",website:!0,detect:!0},{id:"vscode",label:"VS Code / Copilot",kind:"mcp",bins:["code","code-insiders"],mcpTarget:"vscode",configKey:"vscode",website:!0,detect:!0},{id:"openclaw",label:"OpenClaw",kind:"mcp",bins:["openclaw","claw"],mcpTarget:"generic",configKey:"openclaw",website:!0,detect:!0},{id:"perplexity",label:"Perplexity",kind:"mcp",bins:["perplexity","pplx"],mcpTarget:"generic",configKey:"perplexity",website:!0,detect:!0},{id:"manus",label:"Manus",kind:"mcp",bins:["manus"],mcpTarget:"generic",configKey:"manus",website:!0,detect:!0},{id:"prime",label:"Prime Intellect Agent",kind:"mcp",bins:["prime-agent","prime"],mcpTarget:"generic",configKey:"prime",website:!1,detect:!0},{id:"opencode",label:"OpenCode",kind:"mcp",bins:["opencode"],mcpTarget:"generic",configKey:"opencode",website:!1,detect:!0},{id:"aider",label:"Aider",kind:"mcp",bins:["aider"],mcpTarget:"generic",configKey:"aider",website:!1,detect:!0},{id:"continue",label:"Continue",kind:"mcp",bins:["continue"],mcpTarget:"vscode",configKey:"continue",website:!1,detect:!0},{id:"goose",label:"Goose",kind:"mcp",bins:["goose"],mcpTarget:"generic",configKey:"goose",website:!1,detect:!0},{id:"amp",label:"Amp",kind:"mcp",bins:["amp"],mcpTarget:"generic",configKey:"amp",website:!1,detect:!0},{id:"generic",label:"Generic MCP",kind:"mcp",bins:[],mcpTarget:"generic",configKey:"genericMcp",website:!0,detect:!1}]);function G(){return ue.filter(e=>e.website)}var $=Object.freeze(["long_horizon","recursive_fanout","continual_learn","evidence_first","prepare_only"]);function M(e=process.env){let t=String(e?.ORACLE_RESEARCH_MODE??e?.ORACLE_RLM_MODE??"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"||t==="research"}var L=Object.freeze(["oracle_cli","memory_add","memory_remove","skill_load","skill_create","skill_list","cron_add","cron_list","cron_remove","meta_analyze","web_fetch","web_search","file_read","file_write","mcp_list","mcp_call","todo_list","todo_set","session_search","research_delegate","clarify","code_eval","learn_skill","workspace_artifact","research_artifact","portfolio_analyze","trade_lifecycle","signal_score","vision_analyze","browser_navigate","browser_snapshot","browser_click","browser_type","browser_press","browser_close","browser_exec","xurl"]),de="deny",He=256*1024;var Fe=Object.freeze({version:1,source:"default",defaultDecision:de,allow:L,deny:Object.freeze([])});var H=Object.freeze(["wallet","pool","nft_floor","hl_flow","prediction_market"]),Be=Object.freeze({wallets:"wallet",smart_wallet:"wallet",pools:"pool",new_pool:"pool",nft:"nft_floor",nft_floors:"nft_floor",hyperliquid:"hl_flow",prediction:"prediction_market",prediction_markets:"prediction_market"}),p=(e,t=0,n=1)=>Math.min(n,Math.max(t,e)),d=e=>Number.isFinite(Number(e))?Number(e):null,fe=e=>Math.round(e*1e4)/1e4;function f(e,t,n,r=!0){!r||n===null||!Number.isFinite(n)||e.push({feature:t,value:fe(n)})}function pe(e,t){let n=d(e.repeatBuys??e.repeat_buys??e.buyCount),r=d(e.walletWinRate??e.winRate);f(t,"repeat_buys",n===null?null:p((n-1)/4)*.38),f(t,"wallet_win_rate",r===null?null:(p(r)-.5)*.5)}function me(e,t){let n=d(e.ageHours??e.poolAgeHours),r=d(e.liquidityUsd??e.liquidity),s=e.liquidityLocked??e.locked;f(t,"pool_age",n===null?null:n<24?-.42:p(n/720)*.12),f(t,"liquidity",r===null?null:(p(Math.log10(Math.max(1,r))/7)-.5)*.28),f(t,"liquidity_lock",s==null?null:s?.12:-.28)}function he(e,t){let n=d(e.floorChange??e.floorChangePct),r=d(e.sales??e.saleCount);f(t,"floor_change",n===null?null:p(n,-1,1)*.35),f(t,"sales_depth",r===null?null:p(r/50)*.18)}function _e(e,t){let n=d(e.flowImbalance??e.imbalance),r=d(e.fundingRate??e.funding);f(t,"flow_imbalance",n===null?null:p(n,-1,1)*.42),f(t,"funding",r===null?null:-p(r*100,-1,1)*.12)}function ge(e,t){let n=d(e.marketProbability??e.marketPrice??e.probability),r=d(e.fairProbability??e.referenceProbability??e.fairValue);f(t,"probability_mispricing",n===null||r===null?null:p(r-n,-1,1)*.65);let s=d(e.liquidityUsd??e.liquidity);f(t,"market_liquidity",s===null?null:p(Math.log10(Math.max(1,s))/6)*.12)}var ze=Object.freeze({wallet:pe,pool:me,nft_floor:he,hl_flow:_e,prediction_market:ge});var et=b.dirname(ye(import.meta.url));function T(e){try{return y.existsSync(e)}catch{return!1}}function be(){try{let e=b.join(g,"src/data/providers");if(!T(e))return{count:0,detail:"providers dir missing"};let t=y.readdirSync(e).filter(n=>n.endsWith(".mjs"));return{count:t.length,detail:`${t.length} provider modules`}}catch(e){return{count:0,detail:e instanceof Error?e.message:String(e)}}}function Ee(){let e=b.join(g,"skills");if(!T(e))return{count:0,trading:[],building:[]};let t=y.readdirSync(e),n=t.filter(s=>/trade|swap|snipe|farm|hyperliquid|poly|best-exec|circuit|meme|token-research|rfq/i.test(s)),r=t.filter(s=>/launch|builder|protocol|nft|dex-launch|token-launch|security|contract/i.test(s));return{count:t.length,trading:n,building:r}}function ke(){let e=b.join(g,"protocols/templates");return T(e)?y.readdirSync(e).filter(t=>!t.startsWith(".")):[]}function Ae(){let e=b.join(g,"profiles");return T(e)?y.readdirSync(e,{withFileTypes:!0}).filter(t=>t.isDirectory()&&!t.name.startsWith("_")).map(t=>t.name):[]}function V(e=process.env){let t=[],n=(l,q,X,J=1)=>{t.push({id:l,status:q,detail:X,weight:J})},[r,s]=process.versions.node.split(".").map(Number),o=r>20||r===20&&s>=19;n("node",o?"ok":"fail",`node ${process.versions.node}`,2);let i=["oracle_cli","research_delegate","trade_lifecycle","signal_score","skill_load","learn_skill","code_eval","cron_add","web_fetch"].filter(l=>!L.includes(l)&&l!=="signal_score"),E=b.join(g,"src/tui/desk-tools.mjs"),h=T(E)?y.readFileSync(E,"utf8"):"",k=/signal_score/.test(h)||L.includes("signal_score");n("agent_tools",i.length===0&&k?"ok":"warn",k?`safe tools ${L.length}; signal_score present`:`missing signal_score or tools: ${i.join(",")||"signal_score"}`,3),n("research_attributes","ok",`attrs [${$.join(", ")}]; mode=${M(e)?"ON":"off"}`,2);let A=be();n("providers",A.count>=40?"ok":A.count>=20?"warn":"fail",A.detail,3);let m=Ee();n("skills_trading_build",m.trading.length>=5&&m.building.length>=4?"ok":"warn",`${m.count} skills; trading=${m.trading.length} building=${m.building.length}`,3);let v=ke();n("protocol_templates",v.length>=2?"ok":"warn",v.length?v.join(", "):"none",2);let _=Ae();n("profiles",_.includes("protocol-builder")&&_.includes("oracle")?"ok":"warn",_.join(", ")||"none",2),n("signals_engine",H.length>=4?"ok":"fail",`types: ${H.join(", ")} (cold / no hot exec)`,2);let a=G();n("harness_roster",a.length>=8?"ok":"warn",`${a.length} website harnesses; native default; MCP inbound only`,2);let C=b.join(g,"src/capability-posture.mjs"),c=T(C)&&/prepare-only/i.test(y.readFileSync(C,"utf8"));n("custody_prepare_only",c?"ok":"fail","public plane prepare-only",4);let P=e.ORACLE_DATA_URL||"http://127.0.0.1:8787";n("data_url","ok",P,1);let w=0,x=0;for(let l of t)x+=l.weight,l.status==="ok"?w+=l.weight:l.status==="warn"&&(w+=l.weight*.5);let j=x?Math.round(w/x*100):0,F=!t.some(l=>l.status==="fail")&&j>=70,W=F?`AGENTIC READY ${j}% \u2014 Oracle is the crypto control plane (prepare-only); pair coding harnesses via MCP for build.`:`AGENTIC GAPS ${j}% \u2014 fix fail/warn checks before calling Oracle the default crypto harness.`;return{ok:F,score:w,max:x,pct:j,summary:W,researchMode:M(e),attributes:[...$],checks:t}}function Y(){let[e,t]=process.versions.node.split(".").map(Number);return e>20||e===20&&t>=19}function we(e){if(!D.existsSync(e))return{};let t={};for(let n of D.readFileSync(e,"utf8").split(/\r?\n/)){let r=n.match(/^([A-Z0-9_]+)=(.*)$/);r&&(t[r[1]]=r[2])}return t}async function xe(e){let t=e.replace(/\/$/,"");for(let n of["/health","/public/health"])try{if((await fetch(t+n)).ok)return!0}catch{}return!1}var it={name:"doctor",summary:"check the read plane (+ optional --agentic crypto harness score)",group:"read",usage:"oracle doctor [--json] [--agentic]",async run(e){let t=e.argv.includes("--json"),n=e.argv.includes("--agentic"),r=[],s=!1,o=(c,P,w,x=null)=>{r.push({id:c,status:P,detail:w,fix:x}),P==="fail"&&(s=!0)};o("node",Y()?"ok":"fail",`node ${process.versions.node}`,Y()?null:"install node >= 20.19");let u=e.paths.oracleExecEnvPath(),i=we(u),E=process.env.ORACLE_ROUTE_ATTESTATION_SECRET||process.env.MAD_ROUTE_ATTESTATION_SECRET||process.env.ORACLE_ATTESTATION_SECRET||process.env.ORACLE_STAMP_HMAC_SECRET||i.ORACLE_ROUTE_ATTESTATION_SECRET||i.MAD_ROUTE_ATTESTATION_SECRET||i.ORACLE_ATTESTATION_SECRET||i.ORACLE_STAMP_HMAC_SECRET;o("attestation_secret",E?"ok":"warn",E?"present":"missing",E?null:"run oracle init --apply (writes ~/.config/oracle/exec.env)");let h=process.env.ORACLE_DATA_URL||"http://127.0.0.1:8787",k=await xe(h),A=e.paths.loadDeskRouting&&(process.env.ORACLE_DESK_URL||process.env.ORACLE_PUBLIC_URL)?`desk ${process.env.ORACLE_DESK_URL||process.env.ORACLE_PUBLIC_URL}`:null;o("data_server",k?"ok":"warn",k?`reachable ${h}${A?` (${A})`:""}`:`down ${h}`,k?null:h.includes("127.0.0.1")||h.includes("localhost")?"oracle data serve OR set ~/.config/oracle/desk.json \u2192 Arch :8799":"check Arch desk is up (curl $ORACLE_DESK_URL/public/health)");let m=z();o("harness_model","ok","Oracle native is default; external clients are inbound MCP only (oracle harness detect)",null),o("hermes_opt_in","ok",m.ok?`detected ${m.bin} (${m.source}) \u2014 unused unless explicitly opted in`:"not detected \u2014 native-only OK",null);let v=ve.join(e.paths.hermesRoot(),"profiles"),_=0;D.existsSync(v)&&(_=D.readdirSync(v,{withFileTypes:!0}).filter(c=>c.isDirectory()).length),o("hermes_lanes","ok",_>0?`${_} profile dir(s) (optional surface)`:"no Hermes lane profiles (native-only OK)",null);let a=null;if(n){a=V(process.env);for(let c of a.checks)o(`agentic_${c.id}`,c.status,c.detail,null)}let C={ok:!s&&(a?a.ok:!0),checks:r,...a?{agentic:{pct:a.pct,summary:a.summary,attributes:a.attributes,researchMode:a.researchMode}}:{}};if(t)process.stdout.write(JSON.stringify(C,null,2)+`
2
+ `);else{for(let c of r)process.stdout.write(`${c.status.toUpperCase().padEnd(4)} ${c.id}: ${c.detail}
3
+ `),c.fix&&process.stdout.write(` fix: ${c.fix}
4
+ `);a&&process.stdout.write(`
5
+ ${a.summary}
6
+ `)}return C.ok?0:1}};export{it as default};