@oracle-agent/oracle 0.35.41 → 0.35.42
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.
- package/dist/agent-sessions.mjs +16 -16
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +28 -28
- package/dist/bin/oracle-data-mcp.mjs +1 -1
- package/dist/bin/oracle-gateway.mjs +45 -45
- package/dist/bin/oracle-public-server.mjs +5 -5
- package/dist/bin/oracle-route.mjs +31 -31
- package/dist/bin/oracle.mjs +1 -1
- package/dist/cli/commands/agent-session.mjs +17 -17
- package/dist/cli/commands/auth.mjs +5 -5
- package/dist/cli/commands/chat.mjs +216 -215
- package/dist/cli/commands/doctor.mjs +5 -5
- package/dist/cli/commands/eval.mjs +175 -138
- package/dist/cli/commands/extension-policy.mjs +3 -3
- package/dist/cli/commands/harness.mjs +7 -7
- package/dist/cli/commands/model.mjs +220 -219
- package/dist/cli/commands/portfolio-risk.mjs +1 -1
- package/dist/cli/commands/project.mjs +7 -7
- package/dist/cli/commands/quickstart.mjs +4 -4
- package/dist/cli/commands/setup.mjs +13 -13
- package/dist/cli/commands/venues.mjs +2 -2
- package/dist/cli/project-access.mjs +3 -0
- package/dist/data/desk-data.mjs +26 -26
- package/dist/index.mjs +44 -44
- package/dist/notifications/index.mjs +8 -8
- package/dist/portfolio-risk.mjs +1 -1
- package/dist/tui/standalone-client.mjs +86 -85
- package/package.json +2 -1
- package/public/oracle-splash/docs/browser-and-web/index.html +2 -2
- package/public/oracle-splash/docs/connectors/index.html +2 -2
- package/public/oracle-splash/docs/getting-started/index.html +2 -2
- package/public/oracle-splash/docs/index.html +3 -3
- package/public/oracle-splash/docs/reference/index.html +2 -2
- package/public/oracle-splash/docs/security/index.html +2 -2
- package/public/oracle-splash/docs/using-oracle/index.html +2 -2
- package/public/oracle-splash/download/index.html +4 -4
- package/public/oracle-splash/downloads/index.html +1 -1
- package/public/oracle-splash/eval/archive/oracle-0.35.40.json +101 -0
- package/public/oracle-splash/eval/archive/oracle-0.35.41-blocked-attempt.json +672 -0
- package/public/oracle-splash/eval/index.html +34 -26
- package/public/oracle-splash/eval/releases/oracle-0.35.41.json +788 -0
- package/public/oracle-splash/index.html +7 -7
- package/server.json +2 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
`),1;let
|
|
3
|
-
`),
|
|
1
|
+
import v from"node:fs";import y from"node:path";import{homedir as R}from"node:os";var l=Object.freeze(["oracle_cli","memory_add","memory_remove","memory_search","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","rlm","deep_research","clarify","code_eval","learn_skill","approval_preview","workspace_artifact","research_artifact","portfolio_analyze","tax_lots","position_health","governance_prepare","safety_intelligence","portfolio_risk","trade_lifecycle","signal_score","vault_status","signer_status","signer_execute","signer_disarm","receipt_report","watch_create","watch_list","portfolio_snapshot","vision_analyze","browser_exec","xurl","knowledge_search","x402_prepare"]),c="deny",L=256*1024,T=128,u=Object.freeze({version:1,source:"default",defaultDecision:c,allow:l,deny:Object.freeze([])});function s(e){let t=new Set;if(!Array.isArray(e))return t;for(let o of e){if(typeof o!="string")continue;let r=o.trim();r.length===0||r.length>T||t.add(r)}return t}function P(e){return{allow:!1,reason:e}}function O(e){return{allow:!0,reason:e}}var _="extension-prepare-only",p=Object.freeze(["oracle_cli","memory_search","skill_load","skill_list","web_fetch","web_search","todo_list","todo_set","session_search","research_delegate","rlm","deep_research","clarify","code_eval","approval_preview","research_artifact","portfolio_analyze","tax_lots","position_health","governance_prepare","safety_intelligence","portfolio_risk","trade_lifecycle","signal_score","vault_status","signer_status","receipt_report","watch_list","portfolio_snapshot","vision_analyze","knowledge_search"]),d=new Set(p);function h(e=process.env){return e?.ORACLE_EXECUTION_MODE===_}function w(e,t=process.env){if(!h(t))return O("allowed: normal Oracle execution mode");let o=typeof e?.name=="string"?e.name.trim():"";return!o||!d.has(o)?P(`denied: tool "${o||"unknown"}" is outside extension prepare-only mode`):O(`allowed: tool "${o}" is inside extension prepare-only mode`)}function j(e,t=process.env){if(!h(t))return e;let o=[...s(e?.allow)].filter(n=>d.has(n)),r=new Set([...s(e?.deny),...l.filter(n=>!d.has(n))]);return Object.freeze({version:1,source:`${String(e?.source||"default")}:extension-prepare-only`,defaultDecision:c,allow:Object.freeze(o),deny:Object.freeze([...r])})}var z="ORACLE_TOOL_SURFACE",a=Object.freeze({PUBLIC_APP:"public-app",RESEARCH_X_TELEGRAM:"research-x-telegram",OWNER_DESK:"owner-desk"}),N=Object.freeze(Object.values(a));function m(e){let t=e.filter(o=>!l.includes(o));if(t.length)throw new Error(`tool surface allowlist names unknown shipped tools: ${t.join(", ")}`);return Object.freeze([...e])}var E=m(["oracle_cli","memory_search","skill_load","skill_list","web_fetch","web_search","todo_list","todo_set","session_search","research_delegate","rlm","deep_research","clarify","code_eval","approval_preview","research_artifact","portfolio_analyze","tax_lots","position_health","governance_prepare","safety_intelligence","portfolio_risk","trade_lifecycle","signal_score","receipt_report","watch_list","portfolio_snapshot","vision_analyze","knowledge_search","x402_prepare"]),S=m([...E,"file_read","meta_analyze","cron_list","mcp_list","xurl"]),g=Object.freeze([...l]),Y=Object.freeze({[a.PUBLIC_APP]:E,[a.RESEARCH_X_TELEGRAM]:S,[a.OWNER_DESK]:g}),C=Object.freeze({[a.PUBLIC_APP]:new Set(E),[a.RESEARCH_X_TELEGRAM]:new Set(S),[a.OWNER_DESK]:new Set(g)});function k(e=process.env){let t=e?.[z];return typeof t!="string"?"":t.trim()}function D(e){let t=typeof e=="string"?e.trim():"";return t?C[t]||new Set:null}function $(e,t=process.env){let o=k(t);if(!o)return e;let r=D(o),n=N.includes(o)?o:"unknown",A=[...s(e?.allow)].filter(f=>r.has(f)),b=new Set([...s(e?.deny),...l.filter(f=>!r.has(f))]);return Object.freeze({version:1,source:`${String(e?.source||"default")}:surface-${n}`,defaultDecision:c,allow:Object.freeze(A),deny:Object.freeze([...b])})}function i(e,t=process.env){return $(j(e,t),t)}function I(e=process.env){let t=e&&e.ORACLE_CONFIG_DIR||y.join(R(),".config","oracle");return y.join(t,"tool-policy.json")}function x(e=process.env){try{let t=I(e),o=v.readFileSync(t,"utf8");if(typeof o!="string"||o.length>L)return i(u,e);let r=JSON.parse(o);if(!r||typeof r!="object"||Array.isArray(r))return i(u,e);let n=Array.isArray(r.allow)?s(r.allow):s(l);return i(Object.freeze({version:1,source:t,defaultDecision:c,allow:Object.freeze([...n]),deny:Object.freeze([...s(r.deny)])}),e)}catch{return i(u,e)}}function M(e=process.env){let t={...e,ORACLE_EXECUTION_MODE:_},o=x(t);return{ok:w({name:"signer_execute",args:{}},t).allow===!1&&!o.allow.includes("signer_execute"),version:1,mode:_,signerExecute:!1,tools:p}}var B={name:"extension-policy",summary:"attest the extension prepare-only tool boundary",group:"system",usage:"oracle extension-policy --json",async run(e){if(e.argv.length!==1||e.argv[0]!=="--json")return process.stderr.write(`oracle extension-policy requires --json
|
|
2
|
+
`),1;let t=M();return process.stdout.write(`${JSON.stringify(t)}
|
|
3
|
+
`),t.ok?0:1}};export{B as default,M as extensionPolicyAttestation};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import k from"node:fs";import m from"node:path";var s=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 c(){return s.filter(e=>e.website)}function p(){return s.filter(e=>e.detect!==!1&&(e.bins?.length||e.kind==="oracle"))}function l(e){return s.find(n=>n.id===e)?.mcpTarget||"generic"}function d(e){return e==="oracle"?"oracle chat":`oracle mcp install ${l(e)}`}var I=Object.freeze({openrouter:{key:"OPENROUTER_API_KEY",baseUrl:"https://openrouter.ai/api/v1",model:"openrouter/auto"},openai:{key:"OPENAI_API_KEY",baseUrl:"https://api.openai.com/v1",model:"gpt-4.1-mini"},anthropic:{key:"ANTHROPIC_API_KEY",baseUrl:"https://api.anthropic.com/v1",model:"claude-sonnet-4-6",protocol:"anthropic-messages"},xai:{key:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1",model:"grok-4.6"},deepseek:{key:"DEEPSEEK_API_KEY",baseUrl:"https://api.deepseek.com/v1",model:"deepseek-chat"},gemini:{key:"GEMINI_API_KEY",alternateKey:"GOOGLE_API_KEY",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai",model:"gemini-2.5-flash"},kimi:{key:"MOONSHOT_API_KEY",alternateKey:"KIMI_API_KEY",baseUrl:"https://api.moonshot.ai/v1",model:"kimi-k3",protocol:"openai-chat"},mistral:{key:"MISTRAL_API_KEY",baseUrl:"https://api.mistral.ai/v1",model:"mistral-large-latest",protocol:"openai-chat"},nous:{key:"NOUS_API_KEY",baseUrl:"https://inference-api.nousresearch.com/v1",model:"moonshotai/kimi-k3",protocol:"openai-chat"},qwen:{key:"DASHSCOPE_API_KEY",alternateKey:"QWEN_API_KEY",baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",model:"qwen-plus",protocol:"openai-chat"},glm:{key:"ZHIPU_API_KEY",alternateKey:"GLM_API_KEY",baseUrl:"https://open.bigmodel.cn/api/paas/v4",model:"glm-4.5",protocol:"openai-chat"},local:{baseUrl:"http://127.0.0.1:8080/v1",model:"Qwen3-8B-Q4_K_M",protocol:"openai-chat",keyless:!0},ollama:{baseUrl:"http://127.0.0.1:11434/v1",model:"llama3.2",protocol:"openai-chat",keyless:!0}}),L=Object.freeze({"anthropic-oauth":{key:"ANTHROPIC_API_KEY",baseUrl:"https://api.anthropic.com/v1",model:"claude-sonnet-4-20250514",protocol:"anthropic-messages"},"openai-codex":{key:"OPENAI_API_KEY",baseUrl:"https://chatgpt.com/backend-api/codex",model:"gpt-5.6-sol",protocol:"responses"},"xai-oauth":{key:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1",model:"grok-4.6",protocol:"responses"}});var U=Object.freeze(["xai-oauth","anthropic-oauth","openai-codex"]);function A(){return p().map(e=>({name:e.id,bin:e.bins?.[0]||e.id,label:e.label,kind:e.kind,altBins:(e.bins||[]).slice(1)}))}function h(e){for(let o of(process.env.PATH||"").split(m.delimiter)){let n=m.join(o,e);try{if(k.existsSync(n))return n}catch{}}return null}function _(e){let o=[e.bin,...e.altBins||[]].filter(Boolean);for(let n of o){let r=h(n);if(r)return r}return null}function f(e=process.env){let o=[];for(let r of A()){if(r.kind==="oracle"||r.name==="oracle"){o.push({...r,path:process.argv[1]||"oracle"});continue}let i=_(r);i&&o.push({name:r.name,bin:r.bin,label:r.label,kind:r.kind,path:i})}let n=String(e.ORACLE_HARNESS_EXTRA||e.ORACLE_CLIENT_EXTRA||"").split(",").map(r=>r.trim()).filter(Boolean);for(let r of n){if(o.some(t=>t.bin===r||t.name===r))continue;let i=h(r);i&&o.push({name:r,bin:r,label:r,kind:"mcp",path:i})}return o}function O(e){if(e.kind==="oracle"||e.name==="oracle")return{...e,direction:"native",integrate:"oracle chat",outbound:"oracle chat",inbound:null,plugins:null,backendEnv:null,note:"Oracle native harness. Default. No external harness required."};let o=l(e.name)||"generic",n=e.name==="hermes"?"hermes":e.name;return{...e,direction:"client",integrate:`oracle mcp install ${o}`,outbound:`oracle chat --backend ${n}`,inbound:`oracle mcp install ${o}`,plugins:"oracle plugins install <path|git-url>",backendEnv:`ORACLE_CHAT_BACKEND=${n}`,note:"Use through Oracle (`oracle chat --backend \u2026`) or wire Oracle into this harness (`oracle mcp install`). Detection never auto-selects."}}function w(e){let o=e.map(O),n=o.find(a=>a.direction==="native"),r=o.filter(a=>a.direction!=="native"),i=c().filter(a=>a.kind==="mcp"),t=[];if(t.push(""),t.push("Three ways to run Oracle:"),t.push(` 1) Oracle native harness ${n?n.path:"oracle"}`),t.push(" oracle setup model && oracle chat"),t.push(" 2) Through Oracle attach Hermes / Claude / Codex as the engine"),t.push(" oracle chat --backend hermes"),t.push(" 3) Into your harness wire Oracle MCP into the agent you already use"),t.push(" oracle mcp install <target> | oracle plugins install <path>"),t.push(""),t.push("Oracle native is the default harness. Detection never auto-selects another harness."),t.push(""),t.push("Detected on this machine:"),r.length===0)t.push(" (none, Oracle native is enough)");else for(let a of r)t.push(` ${a.label.padEnd(22)} ${a.path}`),t.push(` ${" ".repeat(22)} \u2192 through Oracle: ${a.outbound}`),t.push(` ${" ".repeat(22)} into harness: ${a.inbound}`);t.push(""),t.push("Supported harness roster (MCP install targets):");for(let a of i){let b=d(a.id),g=r.find(E=>E.name===a.id);t.push(` ${a.label.padEnd(22)} ${b}${g?" [detected]":""}`)}return t.push(""),t.push("Also:"),t.push(" oracle mcp print --target generic"),t.push(" oracle plugins list"),t.push(" ORACLE_HARNESS_EXTRA=foo,bar # detect extra bins"),t.push(""),t.push("Models on the site (Grok, Gemini, DeepSeek, Qwen, Kimi) are providers for"),t.push("Oracle native, configure with oracle setup model / oracle auth, not as harnesses."),t.join(`
|
|
2
|
-
`)}function
|
|
3
|
-
`)}var
|
|
4
|
-
`),0;if(
|
|
5
|
-
`),process.stderr.write(
|
|
6
|
-
`),1;let
|
|
7
|
-
`),0}};export{
|
|
1
|
+
import k from"node:fs";import b from"node:path";var l=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 s(){return l.filter(e=>e.website)}function d(){return l.filter(e=>e.detect!==!1&&(e.bins?.length||e.kind==="oracle"))}function c(e){return l.find(o=>o.id===e)?.mcpTarget||"generic"}function u(e){return e==="oracle"?"oracle chat":`oracle mcp install ${c(e)}`}var I=Object.freeze([Object.freeze({id:"claude-opus-5",label:"Claude Opus 5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",badge:"NEW"}),Object.freeze({id:"claude-sonnet-5",label:"Claude Sonnet 5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),Object.freeze({id:"claude-fable-5",label:"Claude Fable 5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),Object.freeze({id:"claude-haiku-4-5",label:"Claude Haiku 4.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),Object.freeze({id:"claude-opus-4-8",label:"Claude Opus 4.8",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),Object.freeze({id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),Object.freeze({id:"gpt-5.6-sol",label:"Codex 5.6 Sol",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth"}),Object.freeze({id:"gpt-5.6-sol-900k",label:"Codex 5.6 Sol 900k",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:9e5,upstreamModel:"gpt-5.6-sol"}),Object.freeze({id:"gpt-5.5",label:"GPT-5.5",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth"}),Object.freeze({id:"gpt-5.4",label:"GPT-5.4",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth"}),Object.freeze({id:"grok-4.20-reasoning",label:"Grok 4.20 Reasoning",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth",badge:"NEW"}),Object.freeze({id:"grok-4.6",label:"Grok 4.6",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth"}),Object.freeze({id:"grok-code-fast-1",label:"Grok Code Fast 1",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth"}),Object.freeze({id:"openrouter/auto",label:"OpenRouter Auto",provider:"openrouter",providerLabel:"OpenRouter API key"}),Object.freeze({id:"gpt-5.6-sol",label:"GPT-5.6",provider:"openai",providerLabel:"OpenAI API key"}),Object.freeze({id:"gpt-5.5",label:"GPT-5.5",provider:"openai",providerLabel:"OpenAI API key"}),Object.freeze({id:"gpt-4.1-mini",label:"GPT-4.1 Mini",provider:"openai",providerLabel:"OpenAI API key"}),Object.freeze({id:"claude-opus-5",label:"Claude Opus 5",provider:"anthropic",providerLabel:"Anthropic API key"}),Object.freeze({id:"claude-sonnet-5",label:"Claude Sonnet 5",provider:"anthropic",providerLabel:"Anthropic API key"}),Object.freeze({id:"claude-fable-5",label:"Claude Fable 5",provider:"anthropic",providerLabel:"Anthropic API key"}),Object.freeze({id:"claude-haiku-4-5",label:"Claude Haiku 4.5",provider:"anthropic",providerLabel:"Anthropic API key"}),Object.freeze({id:"claude-opus-4-8",label:"Claude Opus 4.8",provider:"anthropic",providerLabel:"Anthropic API key"}),Object.freeze({id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",provider:"anthropic",providerLabel:"Anthropic API key"}),Object.freeze({id:"grok-4.20-reasoning",label:"Grok 4.20 Reasoning",provider:"xai",providerLabel:"xAI API key"}),Object.freeze({id:"grok-4.6",label:"Grok 4.6",provider:"xai",providerLabel:"xAI API key"}),Object.freeze({id:"grok-code-fast-1",label:"Grok Code Fast 1",provider:"xai",providerLabel:"xAI API key"}),Object.freeze({id:"deepseek-v4-pro",label:"DeepSeek V4 Pro",provider:"deepseek",providerLabel:"DeepSeek API key"}),Object.freeze({id:"deepseek-v4-flash",label:"DeepSeek V4 Flash",provider:"deepseek",providerLabel:"DeepSeek API key"}),Object.freeze({id:"deepseek-chat",label:"DeepSeek Chat",provider:"deepseek",providerLabel:"DeepSeek API key"}),Object.freeze({id:"deepseek-reasoner",label:"DeepSeek Reasoner",provider:"deepseek",providerLabel:"DeepSeek API key"}),Object.freeze({id:"gemini-2.5-pro",label:"Gemini 2.5 Pro",provider:"gemini",providerLabel:"Google API key"}),Object.freeze({id:"gemini-2.5-flash",label:"Gemini 2.5 Flash",provider:"gemini",providerLabel:"Google API key"}),Object.freeze({id:"kimi-k3",label:"Kimi K3",provider:"kimi",providerLabel:"Kimi API key"}),Object.freeze({id:"mistral-large-latest",label:"Mistral Large",provider:"mistral",providerLabel:"Mistral API key"}),Object.freeze({id:"moonshotai/kimi-k3",label:"Kimi K3",provider:"nous",providerLabel:"Nous Portal API key"}),Object.freeze({id:"openai/gpt-5.6-sol",label:"GPT-5.6",provider:"nous",providerLabel:"Nous Portal API key"}),Object.freeze({id:"qwen-plus",label:"Qwen Plus",provider:"qwen",providerLabel:"Qwen API key"}),Object.freeze({id:"qwen-max",label:"Qwen Max",provider:"qwen",providerLabel:"Qwen API key"}),Object.freeze({id:"glm-4.5",label:"GLM 4.5",provider:"glm",providerLabel:"GLM API key"}),Object.freeze({id:"glm-4.6",label:"GLM 4.6",provider:"glm",providerLabel:"GLM API key"}),Object.freeze({id:"Qwen3-8B-Q4_K_M",label:"Qwen3 8B Local",provider:"local",providerLabel:"Local llama.cpp"}),Object.freeze({id:"llama3.2",label:"Llama 3.2",provider:"ollama",providerLabel:"Ollama loopback"}),Object.freeze({id:"qwen3",label:"Qwen3",provider:"ollama",providerLabel:"Ollama loopback"}),Object.freeze({id:"gpt-6-astra",label:"GPT-6 Astra",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-astra-900k",label:"GPT-6 Astra 900k",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:9e5,upstreamModel:"gpt-6-astra",badge:"NEW"}),Object.freeze({id:"gpt-6-astra",label:"GPT-6 Astra",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-5.6-terra",label:"GPT-5.6 Terra",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4}),Object.freeze({id:"gpt-5.6-luna",label:"GPT-5.6 Luna",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4}),Object.freeze({id:"openai/gpt-6-astra",label:"GPT-6 Astra",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6-astra-pro",label:"GPT-6 Astra Pro",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-5.6-terra",label:"GPT-5.6 Terra",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4}),Object.freeze({id:"openai/gpt-5.6-luna",label:"GPT-5.6 Luna",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4}),Object.freeze({id:"google/gemini-3.8-flash",label:"Gemini 3.8 Flash",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1048576}),Object.freeze({id:"z-ai/glm-5.2",label:"GLM 5.2",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1048576}),Object.freeze({id:"qwen/qwen3.6-plus",label:"Qwen3.6 Plus",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6}),Object.freeze({id:"qwen/qwen3.6-flash",label:"Qwen3.6 Flash",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6}),Object.freeze({id:"deepseek/deepseek-v4-pro-0813",label:"DeepSeek V4 Pro 0813",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1048576}),Object.freeze({id:"moonshotai/kimi-k3",label:"Kimi K3",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1048576})]);var M=Object.freeze({openrouter:{key:"OPENROUTER_API_KEY",baseUrl:"https://openrouter.ai/api/v1",model:"openrouter/auto"},openai:{key:"OPENAI_API_KEY",baseUrl:"https://api.openai.com/v1",model:"gpt-4.1-mini"},anthropic:{key:"ANTHROPIC_API_KEY",baseUrl:"https://api.anthropic.com/v1",model:"claude-sonnet-4-6",protocol:"anthropic-messages"},xai:{key:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1",model:"grok-4.6"},deepseek:{key:"DEEPSEEK_API_KEY",baseUrl:"https://api.deepseek.com/v1",model:"deepseek-chat"},gemini:{key:"GEMINI_API_KEY",alternateKey:"GOOGLE_API_KEY",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai",model:"gemini-2.5-flash"},kimi:{key:"MOONSHOT_API_KEY",alternateKey:"KIMI_API_KEY",baseUrl:"https://api.moonshot.ai/v1",model:"kimi-k3",protocol:"openai-chat"},mistral:{key:"MISTRAL_API_KEY",baseUrl:"https://api.mistral.ai/v1",model:"mistral-large-latest",protocol:"openai-chat"},nous:{key:"NOUS_API_KEY",baseUrl:"https://inference-api.nousresearch.com/v1",model:"moonshotai/kimi-k3",protocol:"openai-chat"},qwen:{key:"DASHSCOPE_API_KEY",alternateKey:"QWEN_API_KEY",baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",model:"qwen-plus",protocol:"openai-chat"},glm:{key:"ZHIPU_API_KEY",alternateKey:"GLM_API_KEY",baseUrl:"https://open.bigmodel.cn/api/paas/v4",model:"glm-4.5",protocol:"openai-chat"},local:{baseUrl:"http://127.0.0.1:8080/v1",model:"Qwen3-8B-Q4_K_M",protocol:"openai-chat",keyless:!0},ollama:{baseUrl:"http://127.0.0.1:11434/v1",model:"llama3.2",protocol:"openai-chat",keyless:!0}}),U=Object.freeze({"anthropic-oauth":{key:"ANTHROPIC_API_KEY",baseUrl:"https://api.anthropic.com/v1",model:"claude-sonnet-4-20250514",protocol:"anthropic-messages"},"openai-codex":{key:"OPENAI_API_KEY",baseUrl:"https://chatgpt.com/backend-api/codex",model:"gpt-5.6-sol",protocol:"responses"},"xai-oauth":{key:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1",model:"grok-4.6",protocol:"responses"}});var H=Object.freeze(["xai-oauth","anthropic-oauth","openai-codex"]);function A(){return d().map(e=>({name:e.id,bin:e.bins?.[0]||e.id,label:e.label,kind:e.kind,altBins:(e.bins||[]).slice(1)}))}function m(e){for(let n of(process.env.PATH||"").split(b.delimiter)){let o=b.join(n,e);try{if(k.existsSync(o))return o}catch{}}return null}function v(e){let n=[e.bin,...e.altBins||[]].filter(Boolean);for(let o of n){let t=m(o);if(t)return t}return null}function h(e=process.env){let n=[];for(let t of A()){if(t.kind==="oracle"||t.name==="oracle"){n.push({...t,path:process.argv[1]||"oracle"});continue}let a=v(t);a&&n.push({name:t.name,bin:t.bin,label:t.label,kind:t.kind,path:a})}let o=String(e.ORACLE_HARNESS_EXTRA||e.ORACLE_CLIENT_EXTRA||"").split(",").map(t=>t.trim()).filter(Boolean);for(let t of o){if(n.some(r=>r.bin===t||r.name===t))continue;let a=m(t);a&&n.push({name:t,bin:t,label:t,kind:"mcp",path:a})}return n}function L(e){if(e.kind==="oracle"||e.name==="oracle")return{...e,direction:"native",integrate:"oracle chat",outbound:"oracle chat",inbound:null,plugins:null,backendEnv:null,note:"Oracle native harness. Default. No external harness required."};let n=c(e.name)||"generic",o=e.name==="hermes"?"hermes":e.name;return{...e,direction:"client",integrate:`oracle mcp install ${n}`,outbound:`oracle chat --backend ${o}`,inbound:`oracle mcp install ${n}`,plugins:"oracle plugins install <path|git-url>",backendEnv:`ORACLE_CHAT_BACKEND=${o}`,note:"Use through Oracle (`oracle chat --backend \u2026`) or wire Oracle into this harness (`oracle mcp install`). Detection never auto-selects."}}function E(e){let n=e.map(L),o=n.find(i=>i.direction==="native"),t=n.filter(i=>i.direction!=="native"),a=s().filter(i=>i.kind==="mcp"),r=[];if(r.push(""),r.push("Three ways to run Oracle:"),r.push(` 1) Oracle native harness ${o?o.path:"oracle"}`),r.push(" oracle setup model && oracle chat"),r.push(" 2) Through Oracle attach Hermes / Claude / Codex as the engine"),r.push(" oracle chat --backend hermes"),r.push(" 3) Into your harness wire Oracle MCP into the agent you already use"),r.push(" oracle mcp install <target> | oracle plugins install <path>"),r.push(""),r.push("Oracle native is the default harness. Detection never auto-selects another harness."),r.push(""),r.push("Detected on this machine:"),t.length===0)r.push(" (none, Oracle native is enough)");else for(let i of t)r.push(` ${i.label.padEnd(22)} ${i.path}`),r.push(` ${" ".repeat(22)} \u2192 through Oracle: ${i.outbound}`),r.push(` ${" ".repeat(22)} into harness: ${i.inbound}`);r.push(""),r.push("Supported harness roster (MCP install targets):");for(let i of a){let f=u(i.id),g=t.find(O=>O.name===i.id);r.push(` ${i.label.padEnd(22)} ${f}${g?" [detected]":""}`)}return r.push(""),r.push("Also:"),r.push(" oracle mcp print --target generic"),r.push(" oracle plugins list"),r.push(" ORACLE_HARNESS_EXTRA=foo,bar # detect extra bins"),r.push(""),r.push("Models on the site (Grok, Gemini, DeepSeek, Qwen, Kimi) are providers for"),r.push("Oracle native, configure with oracle setup model / oracle auth, not as harnesses."),r.join(`
|
|
2
|
+
`)}function p(){return["oracle harness, detect installed agent harnesses",""," oracle harness detect scan PATH + show supported harness roster"," oracle harness list alias of detect","","Modes:"," Oracle native harness oracle chat"," Through Oracle oracle chat --backend hermes|claude|codex|\u2026"," Into your harness oracle mcp install <target>","",`Harness roster: ${s().map(n=>n.id).join(", ")}`,"Extra bins: ORACLE_HARNESS_EXTRA=foo,bar","","Detection never selects a backend."].join(`
|
|
3
|
+
`)}var B={name:"harness",aliases:["clients"],summary:"detect agent harnesses; use Oracle native or wire MCP into them",usage:p,async run(e,n){let o=e[0];if(o==="help"||o==="--help"||o==="-h")return process.stdout.write(p()+`
|
|
4
|
+
`),0;if(o&&o!=="detect"&&o!=="list")return process.stderr.write(`oracle harness: unknown subcommand '${o}'
|
|
5
|
+
`),process.stderr.write(p()+`
|
|
6
|
+
`),1;let t=h();return process.stdout.write(E(t)+`
|
|
7
|
+
`),0}};export{l as HARNESS_ROSTER,L as classifyHarness,B as default,E as renderHarnessReport,s as websiteHarnesses};
|