@oracle-agent/oracle 0.35.53 → 0.35.54
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/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/cli/commands/chat.mjs +40 -40
- package/dist/cli/commands/eval.mjs +23 -23
- package/dist/cli/commands/harness.mjs +6 -6
- package/dist/cli/commands/model.mjs +1 -1
- package/dist/cli/commands/sign.mjs +4 -4
- package/dist/cli/commands/signer.mjs +20 -20
- package/dist/cli/commands/venues.mjs +1 -1
- package/dist/index.mjs +49 -49
- package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
- package/dist/local-signer/index.mjs +4 -4
- package/dist/local-signer/runtime.mjs +19 -19
- package/dist/teams/index.mjs +7 -6
- package/dist/tui/standalone-client.mjs +52 -52
- package/package.json +2 -2
- 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/server.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import A 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 c(){return l.filter(e=>e.website)}function s(){return l.filter(e=>e.detect!==!1&&(e.bins?.length||e.kind==="oracle"))}function d(e){return l.find(o=>o.id===e)?.mcpTarget||"generic"}function u(e){return e==="oracle"?"oracle chat":`oracle mcp install ${d(e)}`}var I=Object.freeze([Object.freeze({id:"claude-opus-5-5",label:"Claude Opus 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-opus-5",label:"Claude Opus 5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),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.7",label:"Grok 4.7",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth",contextLength:5e5,badge:"NEW"}),Object.freeze({id:"grok-4.20-reasoning",label:"Grok 4.20 Reasoning",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth"}),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-5",label:"Claude Opus 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),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.7",label:"Grok 4.7",provider:"xai",providerLabel:"xAI API key",contextLength:5e5,badge:"NEW"}),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-sol",label:"GPT-6 Sol",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,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-6-sol",label:"GPT-6 Sol",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",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-6-sol",label:"GPT-6 Sol",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6-luna",label:"GPT-6 Luna",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"anthropic/claude-opus-5.5",label:"Claude Opus 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"anthropic/claude-sonnet-5.5",label:"Claude Sonnet 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"x-ai/grok-4.7",label:"Grok 4.7",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:5e5,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 y=Object.freeze(["low","medium","high","xhigh","max","ultra"]),C=Object.freeze({"gpt-6-luna":"max","gpt-5.6-luna":"max","gpt-5.5":"xhigh"});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 k(){return s().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 n of(process.env.PATH||"").split(b.delimiter)){let o=b.join(n,e);try{if(A.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=h(o);if(t)return t}return null}function m(e=process.env){let n=[];for(let t of k()){if(t.kind==="oracle"||t.name==="oracle"){n.push({...t,path:process.argv[1]||"oracle"});continue}let i=v(t);i&&n.push({name:t.name,bin:t.bin,label:t.label,kind:t.kind,path:i})}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 i=h(t);i&&n.push({name:t,bin:t,label:t,kind:"mcp",path:i})}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=d(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(a=>a.direction==="native"),t=n.filter(a=>a.direction!=="native"),i=c().filter(a=>a.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 a of t)r.push(` ${a.label.padEnd(22)} ${a.path}`),r.push(` ${" ".repeat(22)} \u2192 through Oracle: ${a.outbound}`),r.push(` ${" ".repeat(22)} into harness: ${a.inbound}`);r.push(""),r.push("Supported harness roster (MCP install targets):");for(let a of i){let f=u(a.id),g=t.find(O=>O.name===a.id);r.push(` ${a.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
|
|
3
|
-
`)}var
|
|
1
|
+
import A 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 c(){return l.filter(e=>e.website)}function s(){return l.filter(e=>e.detect!==!1&&(e.bins?.length||e.kind==="oracle"))}function p(e){return l.find(o=>o.id===e)?.mcpTarget||"generic"}function u(e){return e==="oracle"?"oracle chat":`oracle mcp install ${p(e)}`}var I=Object.freeze([Object.freeze({id:"claude-opus-5-5",label:"Claude Opus 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-opus-5",label:"Claude Opus 5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),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.7",label:"Grok 4.7",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth",contextLength:5e5,badge:"NEW"}),Object.freeze({id:"grok-4.20-reasoning",label:"Grok 4.20 Reasoning",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth"}),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-5",label:"Claude Opus 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),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.7",label:"Grok 4.7",provider:"xai",providerLabel:"xAI API key",contextLength:5e5,badge:"NEW"}),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-sol",label:"GPT-6 Sol",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6.1-sol",label:"GPT-6.1 Sol",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:272e3,badge:"NEW"}),Object.freeze({id:"gpt-5.6-terra",label:"GPT-5.6 Terra",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:272e3}),Object.freeze({id:"gpt-6-astra",label:"GPT-6 Astra",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-sol",label:"GPT-6 Sol",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6.1-sol",label:"GPT-6.1 Sol",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",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-6-sol",label:"GPT-6 Sol",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6.1-sol",label:"GPT-6.1 Sol",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6.1-sol-pro",label:"GPT-6.1 Sol Pro",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6-luna",label:"GPT-6 Luna",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"anthropic/claude-opus-5.5",label:"Claude Opus 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"anthropic/claude-sonnet-5.5",label:"Claude Sonnet 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"x-ai/grok-4.7",label:"Grok 4.7",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:5e5,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 y=Object.freeze(["low","medium","high","xhigh","max","ultra"]),C=Object.freeze({"gpt-6-luna":"max","gpt-5.6-luna":"max","gpt-5.5":"xhigh"});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 v(){return s().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 n of(process.env.PATH||"").split(b.delimiter)){let o=b.join(n,e);try{if(A.existsSync(o))return o}catch{}}return null}function k(e){let n=[e.bin,...e.altBins||[]].filter(Boolean);for(let o of n){let t=h(o);if(t)return t}return null}function f(e=process.env){let n=[];for(let t of v()){if(t.kind==="oracle"||t.name==="oracle"){n.push({...t,path:process.argv[1]||"oracle"});continue}let i=k(t);i&&n.push({name:t.name,bin:t.bin,label:t.label,kind:t.kind,path:i})}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 i=h(t);i&&n.push({name:t,bin:t,label:t,kind:"mcp",path:i})}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=p(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(a=>a.direction==="native"),t=n.filter(a=>a.direction!=="native"),i=c().filter(a=>a.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 a of t)r.push(` ${a.label.padEnd(22)} ${a.path}`),r.push(` ${" ".repeat(22)} \u2192 through Oracle: ${a.outbound}`),r.push(` ${" ".repeat(22)} into harness: ${a.inbound}`);r.push(""),r.push("Supported harness roster (MCP install targets):");for(let a of i){let m=u(a.id),g=t.find(O=>O.name===a.id);r.push(` ${a.label.padEnd(22)} ${m}${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 d(){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: ${c().map(n=>n.id).join(", ")}`,"Extra bins: ORACLE_HARNESS_EXTRA=foo,bar","","Detection never selects a backend."].join(`
|
|
3
|
+
`)}var $={name:"harness",aliases:["clients"],summary:"detect agent harnesses; use Oracle native or wire MCP into them",usage:d,async run(e,n){let o=e[0];if(o==="help"||o==="--help"||o==="-h")return process.stdout.write(d()+`
|
|
4
4
|
`),0;if(o&&o!=="detect"&&o!=="list")return process.stderr.write(`oracle harness: unknown subcommand '${o}'
|
|
5
|
-
`),process.stderr.write(
|
|
6
|
-
`),1;let t=
|
|
7
|
-
`),0}};export{l as HARNESS_ROSTER,L as classifyHarness
|
|
5
|
+
`),process.stderr.write(d()+`
|
|
6
|
+
`),1;let t=f();return process.stdout.write(E(t)+`
|
|
7
|
+
`),0}};export{l as HARNESS_ROSTER,L as classifyHarness,$ as default,E as renderHarnessReport,c as websiteHarnesses};
|
|
@@ -3,7 +3,7 @@ var R2=Object.defineProperty;var O=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(
|
|
|
3
3
|
[truncated]`),t}function _D(e=process.env){return e&&e.ORACLE_CONFIG_DIR||Zm.join(vD(),".config","oracle")}function ID(e=process.env){return Zm.join(_D(e),"session-log.jsonl")}function DE(e={}){let t=e.env||process.env,r=e.file||ID(t),n=[];function o(a){let c=typeof a?.role=="string"?a.role:"unknown",l=yt(a?.content??"");if(!l.trim())return;let u={ts:Date.now(),role:c,content:l};n.push(u),n.length>Qm&&n.splice(0,n.length-Qm);try{if(Js.mkdirSync(Zm.dirname(r),{recursive:!0,mode:448}),Js.appendFileSync(r,`${JSON.stringify(u)}
|
|
4
4
|
`,{mode:384}),Js.statSync(r).size>kD){let f=Js.readFileSync(r,"utf8"),p=f.slice(Math.floor(f.length/2)),m=p.indexOf(`
|
|
5
5
|
`);Js.writeFileSync(r,m>=0?p.slice(m+1):p,{mode:384})}}catch{}}function i(){try{let a=Js.readFileSync(r,"utf8"),c=[];for(let l of a.split(/\r?\n/))if(l.trim())try{let u=JSON.parse(l);u&&typeof u.content=="string"&&c.push(u)}catch{}return c.slice(-Qm)}catch{return[]}}function s(a,c=5){let l=String(a||"").trim().toLowerCase();if(!l)return{ok:!1,error:"query is required"};let u=Math.min(Math.max(Number(c)||5,1),20),d=n.length>0?n:i(),f=l.split(/\s+/).filter(Boolean),p=[];for(let m=d.length-1;m>=0;m-=1){let h=d[m],w=String(h.content||"").toLowerCase();if(f.every(g=>w.includes(g))&&(p.push({role:h.role,ts:h.ts,content:String(h.content).slice(0,800)}),p.length>=u))break}return{ok:!0,query:l,hits:p}}return{append:o,search:s}}function BE(e,t={},r){return r?e==="session_search"?r.search(t.query,t.limit):{ok:!1,error:`unknown tool: ${e}`}:{ok:!1,error:"session store is unavailable"}}var ME,Qm,PE,kD,Fc=O(()=>{ct();ME=Object.freeze([{type:"function",function:{name:"session_search",description:"Search this agent's recent session transcript for a query. Results are redacted at write time (no private keys, no raw seed phrases).",parameters:{type:"object",properties:{query:{type:"string",maxLength:200,description:"Case-insensitive substring or keywords"},limit:{type:"integer",minimum:1,maximum:20,description:"Max hits (default 5)"}},required:["query"],additionalProperties:!1}}}]),Qm=400,PE=4e3,kD=2*1024*1024});function CD(e){let t=String(e??"");if(!t)return null;for(let r of OD){let n=t.match(r.re);if(n&&!(r.name==="BIP39 seed phrase"&&!TD.test(t))){if(r.name==="private key (hex 64)"){let o=n.index||0,i=t.slice(Math.max(0,o-80),o);if(!/priv|secret|wif|seed|mnemonic|signer|wallet|key/i.test(i)||/hash|digest|sha256|txid|commit|blob|sha1/i.test(i))continue}return{name:r.name,index:n.index??0}}}return null}function qt(e,t="content"){let r=CD(e);return r?{ok:!1,error:`${t} refused: looks like a ${r.name}. Never persist credentials, keys, or seed phrases.`}:{ok:!0}}var OD,TD,jc=O(()=>{OD=Object.freeze([{name:"private key (hex 64)",re:/\b(?:0x)?[0-9a-fA-F]{64}\b/},{name:"BTC WIF",re:/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{name:"BIP39 seed phrase",re:/\b(?:[a-z]{3,8} ){11}(?:[a-z]{3,8})\b|\b(?:[a-z]{3,8} ){23}(?:[a-z]{3,8})\b/i},{name:"AWS access key",re:/\bAKIA[0-9A-Z]{16}\b/},{name:"OpenAI key",re:/\bsk-[A-Za-z0-9_-]{20,}\b/},{name:"Anthropic key",re:/\bsk-ant-[A-Za-z0-9_-]{20,}\b/},{name:"GitHub token",re:/\bgh[pousr]_[A-Za-z0-9]{36,}\b/},{name:"Slack token",re:/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/},{name:"Telegram bot token",re:/\b\d{8,10}:[A-Za-z0-9_-]{35}\b/},{name:"PEM private key",re:/-----BEGIN (?:RSA |EC |OPENSSH |PGP )?PRIVATE KEY-----/},{name:"Solana keypair array",re:/\[\s*(?:\d{1,3}\s*,\s*){63}\d{1,3}\s*\]/},{name:"credential assignment",re:/\b(?:API_?KEY|SECRET|PASSWORD|PASSWD|PRIVATE_?KEY|MNEMONIC|SEED_?PHRASE|AUTH_?TOKEN|ACCESS_?TOKEN)\s*[:=]\s*['"]?[A-Za-z0-9+/=_.-]{12,}/i},{name:"JWT",re:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/}]),TD=/\b(?:seed|mnemonic|recovery|phrase|backup)\b/i});function Lt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Y(e,t=eh){return typeof e!="string"?void 0:yt(e).trim().slice(0,t)||void 0}function BD(e){if(typeof e!="string")return;let t=yt(e).slice(0,LD);return t.trim()?t:void 0}function Ot(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function FD(e){return e===null||typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e)?e:Y(e,2e3)}function nh(e){let t=Lt(e);if(!t)return;let r={};for(let[n,o]of Object.entries(t).slice(0,DD)){let i=Y(n,80),s=FD(o);i&&s!==void 0&&(r[i]=s)}return Object.keys(r).length?r:void 0}function Xu(e,t=16){if(!Array.isArray(e))return;let r=e.slice(0,t).map(n=>Y(n,2e3)).filter(Boolean);return r.length?r:void 0}function Uc(e,t=24){if(!Array.isArray(e))return;let r=e.slice(0,t).map(n=>Y(n,400)).filter(Boolean);return r.length?r:void 0}function jD(e){if(!Array.isArray(e))return;let t=[];for(let r of e.slice(0,8)){let n=Lt(r),o=n&&Y(n.venue,120);o&&t.push({venue:o,...Y(n.netReceived,240)?{netReceived:Y(n.netReceived,240)}:{},...Y(n.outputAmount,240)?{outputAmount:Y(n.outputAmount,240)}:{}})}return t.length?t:void 0}function UD(e){if(!Array.isArray(e))return nh(e);let t=[];for(let r of e.slice(0,8)){let n=Lt(r),o=n&&Y(n.label,120),i=n&&Y(n.value,240);o&&i&&t.push({label:o,value:i})}return t.length?t:void 0}function FE(e,t){return Y(e,t)??nh(e)}function Xs(e){return{kind:e.kind,version:1,...Y(e.id,120)?{id:Y(e.id,120)}:{},...Y(e.title,240)?{title:Y(e.title,240)}:{},...Y(e.createdAt,80)?{createdAt:Y(e.createdAt,80)}:{}}}function qD(e){let t=[],r=new Set;for(let d of Array.isArray(e.nodes)?e.nodes.slice(0,$D):[]){let f=Lt(d),p=f&&Y(f.id,160);if(!f||!p||r.has(p))continue;r.add(p);let m=Ot(f.value)??Ot(f.amount)??null;t.push({id:p,label:Y(f.label,240)??null,address:Y(f.address,240)??null,share:Ot(f.share)??null,value:m,clusterId:Y(f.clusterId,160)??null,tag:Y(f.tag,120)??Y(f.kind,120)??null})}if(!t.length)return null;let n=[];for(let d of Array.isArray(e.edges)?e.edges.slice(0,PD):[]){let f=Lt(d),p=f&&Y(f.source,160),m=f&&Y(f.target,160);!f||!p||!m||p===m||!r.has(p)||!r.has(m)||n.push({source:p,target:m,...Ot(f.weight)!==void 0?{weight:Ot(f.weight)}:{},...Ot(f.value)!==void 0?{value:Ot(f.value)}:{},...Ot(f.count)!==void 0?{count:Ot(f.count)}:{},...Y(f.label,160)?{label:Y(f.label,160)}:{}})}let o=[],i=new Set;for(let d of Array.isArray(e.clusters)?e.clusters.slice(0,MD):[]){let f=Lt(d),p=f&&Y(f.id,160);!f||!p||i.has(p)||(i.add(p),o.push({id:p,...Y(f.label,240)?{label:Y(f.label,240)}:{},...Y(f.color,80)?{color:Y(f.color,80)}:{}}))}let s=Lt(e.token),a=s?{...Y(s.symbol,40)?{symbol:Y(s.symbol,40)}:{},...Y(s.name,160)?{name:Y(s.name,160)}:{},...Y(s.address,240)?{address:Y(s.address,240)}:{},...Y(s.chain,80)?{chain:Y(s.chain,80)}:{}}:void 0,c=UD(e.metrics),l=FE(e.source,240),u=FE(e.coverage,500);return{...Xs(e),nodes:t,edges:n,clusters:o,...a&&Object.keys(a).length?{token:a}:{},...c?{metrics:c}:{},...l?{source:l}:{},...u?{coverage:u}:{},...Y(e.updatedAt,80)?{updatedAt:Y(e.updatedAt,80)}:{}}}function zD(e,t){let n=BD(e[t==="code"?"code":t==="diff"?"diff":"content"]);return n?{...Xs(e),...t==="code"?{code:n}:t==="diff"?{diff:n}:{content:n},...Y(e.language,80)?{language:Y(e.language,80)}:{},...Y(e.filename,240)?{filename:Y(e.filename,240)}:{},...Y(e.name,240)?{name:Y(e.name,240)}:{},...Y(e.mimeType,160)?{mimeType:Y(e.mimeType,160)}:{},...Y(e.path,1e3)?{path:Y(e.path,1e3)}:{}}:null}function HD(e,t){let r=nh(e.details),n=Xu(e.warnings),o=Xu(e.stateChanges),i=jD(e.routes);return{...Xs(e),...Y(e.summary,eh)?{summary:Y(e.summary,eh)}:{},...Y(e.status,80)?{status:Y(e.status,80)}:{},...Y(e.provider,120)?{provider:Y(e.provider,120)}:{},...Y(e.txHash,240)?{txHash:Y(e.txHash,240)}:{},...r?{details:r}:{},...Y(e.inputAmount,240)?{inputAmount:Y(e.inputAmount,240)}:{},...Y(e.outputAmount,240)?{outputAmount:Y(e.outputAmount,240)}:{},...Y(e.netReceived,240)?{netReceived:Y(e.netReceived,240)}:{},...Y(e.gasCost,240)?{gasCost:Y(e.gasCost,240)}:{},...Y(e.fees,240)?{fees:Y(e.fees,240)}:{},...Y(e.rankedOn,40)?{rankedOn:Y(e.rankedOn,40)}:{},...Y(e.expiresAt,80)?{expiresAt:Y(e.expiresAt,80)}:{},...i?{routes:i}:{},...typeof e.success=="boolean"?{success:e.success}:{},...Y(e.gasEstimate,240)?{gasEstimate:Y(e.gasEstimate,240)}:{},...n?{warnings:n}:{},...o?{stateChanges:o}:{},...Y(e.chain,80)?{chain:Y(e.chain,80)}:{},...typeof e.verified=="boolean"?{verified:e.verified}:{},...Ot(e.blockNumber)!==void 0?{blockNumber:Ot(e.blockNumber)}:{},...Ot(e.confirmations)!==void 0?{confirmations:Ot(e.confirmations)}:{}}}function WD(e){let t=e.autoWrite===!0,r=t?!1:e.requiresApproval===!0;if(e.version!==1||!t&&!r||t&&e.requiresApproval===!0||e.proposalSource!=="deterministic-meta"||!qt(JSON.stringify({name:e.name,description:e.description,steps:e.steps,pitfalls:e.pitfalls,tools:e.tools}),"learning proposal artifact").ok)return null;let o=e.proposalType==="skill"?"skill":e.proposalType==="memory"?"memory":null;if(!o)return null;let i=Y(e.id,120),s=Y(e.sessionId,120);if(!i||!s)return null;let a={...Xs(e),proposalType:o,proposalSource:"deterministic-meta",sessionId:s,requiresApproval:r,autoWrite:t,...e.learned===!0?{learned:!0}:{},...Ot(e.toolCount)!==void 0?{toolCount:Ot(e.toolCount)}:{},...Ot(e.artifactCount)!==void 0?{artifactCount:Ot(e.artifactCount)}:{}},c=Y(e.name,o==="skill"?64:120),l=Y(e.description,o==="skill"?240:400);if(!c||!l)return null;if(o==="skill"){let u=Uc(e.steps,24);return!/^[a-z0-9][a-z0-9-]{0,63}$/.test(c)||!u?.length?null:{...a,name:c,description:l,steps:u,...Uc(e.pitfalls,24)?{pitfalls:Uc(e.pitfalls,24)}:{},...Uc(e.tools,16)?{tools:Uc(e.tools,16)}:{}}}return/[\u0000-\u001f\u007f]/.test(c)?null:{...a,name:c,description:l,steps:[]}}function Ju(e,t){let r=Lt(e);if(!r)return null;let n={};for(let o of t)Ot(r[o])!==void 0&&(n[o]=r[o]);return Object.keys(n).length?n:null}function Qn(e){return Number.isSafeInteger(e)&&e>=0?e:null}function YD(e){if(e.version!==1||e.fabricated===!0||e.honesty!==qc)return null;let t=Lt(e.provenance)||{},r=Y(e.provider,120)??Y(t.provider,120),n=Y(e.source,240)??Y(t.source,240),o=Y(e.asOf,80)??Y(t.asOf,80);if(!r||!n||!o||!Number.isFinite(Date.parse(o))||typeof e.wallet!="string"||!KD.test(e.wallet))return null;let i=Y(e.coin,32),s=Y(e.interval,8),a=Lt(e.window),c=Qn(a?.startTime),l=Qn(a?.endTime);if(!i||!s||c===null||l===null||c>=l||!qt(JSON.stringify(e),"wallet strategy artifact").ok)return null;let d=Lt(e.fills)||{},f=Lt(e.inference)||{},p=Ju(f.parameters,Object.keys(Lt(f.parameters)||{}).filter(y=>/^[A-Za-z][A-Za-z0-9]{0,31}$/.test(y)).slice(0,8))||{},m=Lt(e.backtest),h=m?{full:Ju(m.full,jE),holdout:Ju(m.holdout,jE)}:null,w=Lt(e.fit),g=Xu(e.gaps,16)||[],x=e.truncated===!0,b=x||e.availability==="partial"?"partial":e.availability==="unavailable"?"unavailable":"available";return{...Xs(e),provider:r,source:n,asOf:o,provenance:{provider:r,source:n,asOf:o},availability:b,fabricated:!1,honesty:qc,wallet:e.wallet,walletShort:`${e.wallet.slice(0,6)}\u2026${e.wallet.slice(-4)}`,coin:i,interval:s,window:{startTime:c,endTime:l,days:Qn(a.days)},fills:{analyzed:Qn(d.analyzed),pages:Qn(d.pages),coverage:Y(d.coverage,24)??"unknown",firstTime:Qn(d.firstTime),lastTime:Qn(d.lastTime)},gaps:g,truncated:x,inference:{status:Y(f.status,40)??"unknown",family:Y(f.family,40)??null,direction:Y(f.direction,16)??null,parameters:p,candidateId:Y(f.candidateId,80)??null,trialsRun:Qn(f.trialsRun)??0,maxTrials:Qn(f.maxTrials),historyHash:Y(f.historyHash,16)??null},fit:w?{holdout:Ju(w.holdout,GD)}:null,backtest:h,reasons:Xu(e.reasons,12)||[]}}function th(e,t=0){if(t>4)return;if(e===null||typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e))return e;let r=Y(e,2e3);if(r!==void 0)return r;if(Array.isArray(e)){let i=e.slice(0,32).map(s=>th(s,t+1)).filter(s=>s!==void 0);return i.length?i:void 0}let n=Lt(e);if(!n)return;let o={};for(let[i,s]of Object.entries(n).slice(0,32)){if(qE.has(String(i).toLowerCase()))continue;let a=Y(i,80),c=th(s,t+1);a&&c!==void 0&&(o[a]=c)}return Object.keys(o).length?o:void 0}function JD(e){let t={...Xs(e),...Y(e.provider,120)?{provider:Y(e.provider,120)}:{},...Y(e.source,240)?{source:Y(e.source,240)}:{},...Y(e.asOf,80)?{asOf:Y(e.asOf,80)}:{},...Y(e.availability,40)?{availability:Y(e.availability,40)}:{}};for(let[r,n]of Object.entries(e)){if(r in t||r==="kind"||r==="version"||qE.has(String(r).toLowerCase()))continue;let o=Y(r,80),i=th(n);o&&i!==void 0&&(t[o]=i)}return t}function Qs(e){let t=Lt(e);return!t||!ND.has(t.kind)?null:t.kind==="bubble-map"?qD(t):t.kind==="learning-proposal"?WD(t):t.kind==="code"||t.kind==="diff"||t.kind==="file"?zD(t,t.kind):t.kind==="wallet-strategy"?YD(t):VD.has(t.kind)?JD(t):HD(t,t.kind)}function Qu(e){if(!Array.isArray(e))return[];let t=[];for(let r of e.slice(0,rh)){let n=Qs(r);n&&t.push(n)}return t}var UE,RD,rh,ND,eh,LD,$D,PD,MD,DD,VD,qc,KD,jE,GD,qE,zc=O(()=>{Fc();jc();UE=Object.freeze(["market-snapshot","candles-levels","ta-setup","funding-basis","portfolio-risk","tax-lots","outcome-market","protocol-fundamentals","investigation-case","watch-result","wallet-strategy"]),RD=Object.freeze(["bubble-map","code","diff","file","quote","simulation","transaction","receipt","learning-proposal",...UE]),rh=8,ND=new Set(RD),eh=12e3,LD=2e5,$D=100,PD=300,MD=100,DD=32;VD=new Set(UE),qc="Testable hypothesis, not this wallet's actual algorithm.",KD=/^0x[0-9a-fA-F]{40}$/,jE=["netPnlUsd","netPnlPct","maxDrawdownPct","winRate","profitFactor","tradeCount","sharpe","exposurePct"],GD=["precision","recall","f1","balancedAccuracy","predictedPositives"];qE=new Set(["audited","verified","trusted","safe","pass","passed","signed","broadcast","broadcasted","fabricated","executed","submitted"])});import Ne from"node:fs";import Kr from"node:path";import{constants as zE}from"node:buffer";import{createHash as XD,randomBytes as QD}from"node:crypto";function Be(e,t="DURABLE_SNAPSHOT_IDENTITY",r=!1){throw Object.assign(new Error(e),{durabilityCode:t,recoveryRequired:r})}function Zu(e,t=!1){(typeof process.geteuid!="function"||e.uid!==process.geteuid()||(e.mode&63)!==0||!(t?e.isDirectory():e.isFile()))&&Be("Expected private owned filesystem object")}function HE(e=!1){return(!Number.isInteger(Ne.constants.O_NOFOLLOW)||!Number.isInteger(Ne.constants.O_DIRECTORY))&&Be("Required no-follow/directory open unsupported","DURABLE_SNAPSHOT_UNSUPPORTED"),Ne.constants.O_RDONLY|Ne.constants.O_NOFOLLOW|(e?Ne.constants.O_DIRECTORY:0)}function ih(){return{phase:"validate",resources:[],cleanupErrors:[],attempted:!1,committed:!1,fenceCreated:!1}}function Zs(e,t,r=!1,n=!1){let o=Ne.openSync(t,n?Ne.constants.O_WRONLY|Ne.constants.O_CREAT|Ne.constants.O_EXCL|HE()&Ne.constants.O_NOFOLLOW:HE(r),384),i={fd:o,path:t,stat:null,closed:!1};e.resources.push(i),n&&t===e.fence&&(e.fenceCreated=!0),n&&t===e.temp&&(e.tempOwner=i),i.stat=Ne.fstatSync(o),Zu(i.stat,r);let s=Ne.lstatSync(t);return(s.isSymbolicLink()||!Ar(s,i.stat))&&Be("Opened path changed"),i}function Hc(e){e.closeAttempted=!0;try{Ne.closeSync(e.fd)}catch(t){throw e.closeError=t,t}e.closed=!0}function Li(e){for(let t of e.chain){let r=Ne.lstatSync(t.path);Zu(r,!0),(r.isSymbolicLink()||!Ar(r,t))&&Be("Directory identity changed")}}function sh(e){(!e||!Number.isInteger(e.fd)||e.fd<0||!Array.isArray(e.paths)||e.paths.length<1||e.paths.length>2)&&Be("Actual held lock evidence required");let t=Ne.fstatSync(e.fd);Zu(t),Ar(t,e)||Be("Held lock descriptor changed");for(let r of e.paths){(typeof r!="string"||!Kr.isAbsolute(r))&&Be("Absolute lock ownership name required");let n=Ne.lstatSync(r);Zu(n),(n.isSymbolicLink()||!Ar(n,t))&&Be("Held lock ownership name changed")}}function XE(e){try{Ne.lstatSync(e.fence)}catch(t){if(t.code==="ENOENT")return;throw Object.assign(t,{durabilityCode:"DURABLE_SNAPSHOT_FENCED",recoveryRequired:!0})}Be("Persistent pending fence exists","DURABLE_SNAPSHOT_FENCED",!0)}function QE(e,t){let r=KE.get(t.directory);(!r||typeof t.target!="string"||!ZD.test(t.target)||t.target.includes(".."))&&Be("Prepared directory and bounded canonical JSON target required"),e.maxBytes=t.maxBytes===void 0?YE:t.maxBytes===null?zE.MAX_LENGTH:t.maxBytes,(!Number.isSafeInteger(e.maxBytes)||e.maxBytes<2||e.maxBytes>zE.MAX_LENGTH)&&Be("Invalid adapter byte bound","DURABLE_SNAPSHOT_INVALID"),e.state=r,e.target=t.target,e.file=Kr.join(r.path,e.target),e.fence=`${e.file}.durability-pending`,r.invalid.has(e.target)&&Be("Scoped target is invalidated","DURABLE_SNAPSHOT_FENCED",!0),Li(r),e.directory=Zs(e,r.path,!0),Ar(e.directory.stat,r.chain.at(-1))||Be("Pinned directory changed"),sh(t.lock),XE(e)}function ZE(e,t=YE){(!Buffer.isBuffer(e)||e.length<2||e.length>t)&&Be("Invalid snapshot byte bound","DURABLE_SNAPSHOT_INVALID");let r;try{r=JSON.parse(e.toString("utf8"))}catch{Be("Invalid snapshot JSON","DURABLE_SNAPSHOT_INVALID",!0)}(!r||typeof r!="object"||Array.isArray(r))&&Be("Snapshot must be a JSON object","DURABLE_SNAPSHOT_INVALID",!0)}function oh(e){let t;try{t=Zs(e,e.file)}catch(s){if(s.code==="ENOENT")return{bytes:null,stat:null,digest:null};throw s}let r=t.stat;(r.size<2||r.size>e.maxBytes)&&Be("Invalid existing snapshot size","DURABLE_SNAPSHOT_INVALID",!0);let n=Buffer.alloc(r.size),o=0;for(;o<n.length;){let s=Ne.readSync(t.fd,n,o,n.length-o,o);(!Number.isInteger(s)||s<=0||s>n.length-o)&&Be("Snapshot read incomplete","DURABLE_SNAPSHOT_INVALID",!0),o+=s}let i=Ne.fstatSync(t.fd);return(!Ar(r,i)||r.size!==i.size||r.mtimeMs!==i.mtimeMs||r.ctimeMs!==i.ctimeMs)&&Be("Snapshot changed during read"),ZE(n,e.maxBytes),Hc(t),{bytes:n,stat:r,digest:JE(n)}}function WE(e,t){return e.stat===null?t.stat===null:Ar(e.stat,t.stat)&&e.digest===t.digest&&e.stat.size===t.stat.size&&e.stat.mtimeMs===t.stat.mtimeMs&&e.stat.ctimeMs===t.stat.ctimeMs}function VE(e,t){let r=0;for(;r<t.length;){let n=Ne.writeSync(e,t,r,t.length-r,r);(!Number.isInteger(n)||n<=0||n>t.length-r)&&Be("Descriptor write incomplete","DURABLE_SNAPSHOT_IO"),r+=n}}function ex(e,t){Li(e.state);let r;try{r=Ne.lstatSync(t.path)}catch(n){if(n.code==="ENOENT"&&t.path!==e.fence)return;throw n}(!t.stat||r.isSymbolicLink()||!Ar(r,t.stat))&&Be("Cleanup ownership changed"),Ne.unlinkSync(t.path)}function tB(e){if(e.tempOwner)try{ex(e,e.tempOwner)}catch(t){e.cleanupErrors.push({phase:"temp-cleanup",error:t})}for(let t of[...e.resources].reverse())if(!t.closed){if(t.closeAttempted){e.cleanupErrors.push({phase:"descriptor-cleanup",error:t.closeError,resource:{fd:t.fd,dev:t.stat?.dev,ino:t.stat?.ino,closeAttempted:!0}});continue}try{let r;try{r=Ne.fstatSync(t.fd)}catch(n){if(n.code==="EBADF"){t.closed=!0;continue}throw n}t.stat&&!Ar(r,t.stat)&&Be("Cleanup descriptor identity changed"),Hc(t)}catch(r){e.cleanupErrors.push({phase:"descriptor-cleanup",error:r,resource:{fd:t.fd,dev:t.stat?.dev,ino:t.stat?.ino}})}}}function ah(e,t){let r,n;try{r=t()}catch(o){n=o}if(tB(e),!n&&e.cleanupErrors.length&&(n=e.cleanupErrors[0].error),n){let o=e.committed?"committed":e.attempted?"unknown":"not_committed",i=o!=="not_committed"||e.fenceCreated||!!n.recoveryRequired||e.cleanupErrors.length>0;throw i&&e.state&&e.target&&e.state.invalid.add(e.target),new Wc({cause:n,code:n.durabilityCode,phase:e.phase,outcome:o,recoveryRequired:i,cleanupErrors:e.cleanupErrors})}return r}function ed({directory:e,durableAncestor:t}={}){let r=ih();return r.phase="directory-provision",ah(r,()=>{(typeof e!="string"||!Kr.isAbsolute(e)||typeof t?.path!="string"||!Kr.isAbsolute(t.path)||Kr.resolve(e)!==e||Kr.resolve(t.path)!==t.path)&&Be("Normalized absolute directory paths required");let n=Kr.relative(t.path,e);(n===".."||n.startsWith(`..${Kr.sep}`)||Kr.isAbsolute(n))&&Be("Directory outside durable ancestor");let o=Zs(r,t.path,!0);Ar(o.stat,t)||Be("Durable ancestor identity changed");let i=[{path:o.path,dev:o.stat.dev,ino:o.stat.ino}];Ne.fsyncSync(o.fd);for(let a of n?n.split(Kr.sep):[]){let c=Kr.join(o.path,a);Li({chain:i});try{Ne.mkdirSync(c,{mode:448})}catch(u){if(u.code!=="EEXIST")throw u}let l=Zs(r,c,!0);i.push({path:l.path,dev:l.stat.dev,ino:l.stat.ino}),Li({chain:i}),Ne.fsyncSync(l.fd),Ne.fsyncSync(o.fd),o=l}Li({chain:i});let s=Object.freeze({path:e,dev:o.stat.dev,ino:o.stat.ino});return KE.set(s,{path:e,chain:i,invalid:new Set}),s})}function td(e){let t=ih();return t.phase="read",ah(t,()=>{QE(t,e);let r=oh(t);Li(t.state),sh(e.lock),XE(t);let n=Object.freeze({exists:r.stat!==null,digest:r.digest});return GE.set(n,{...r,bytes:void 0,directory:e.directory,target:e.target,maxBytes:t.maxBytes}),{bytes:r.bytes,identity:n}})}function tx(e,t){let r=ih();return ah(r,()=>{QE(r,e);let n=GE.get(e.expected);(!n||n.directory!==e.directory||n.target!==e.target||n.maxBytes!==r.maxBytes)&&Be("Expected identity must come from this target read"),(typeof e.revisionIdentity!="string"||!eB.test(e.revisionIdentity))&&Be("Bounded revision identity digest required","DURABLE_SNAPSHOT_INVALID");let o;t==="replace"&&((!Buffer.isBuffer(e.bytes)||e.bytes.length<2||e.bytes.length>r.maxBytes)&&Be("Invalid snapshot byte bound","DURABLE_SNAPSHOT_INVALID"),o=Buffer.from(e.bytes),ZE(o,r.maxBytes)),WE(n,oh(r))||Be("Expected canonical identity changed"),t==="delete"&&!n.stat&&Be("Delete requires an existing canonical identity"),r.phase="directory-preflight",Ne.fsyncSync(r.directory.fd);let i=QD(16).toString("hex"),s=Buffer.from(`${JSON.stringify({version:1,nonce:i,target:r.target,operation:t,digest:t==="replace"?JE(o):n.digest,revisionIdentity:e.revisionIdentity})}
|
|
6
|
-
`);r.phase="fence-create";let a;try{a=Zs(r,r.fence,!1,!0)}catch(l){throw l.code==="EEXIST"&&Object.assign(l,{durabilityCode:"DURABLE_SNAPSHOT_FENCED",recoveryRequired:!0}),l}if(r.phase="fence-write",VE(a.fd,s),r.phase="fence-fsync",Ne.fsyncSync(a.fd),r.phase="fence-close",Hc(a),r.phase="fence-directory-fsync",Ne.fsyncSync(r.directory.fd),t==="replace"){r.temp=`${r.file}.tmp-${i}`,r.phase="temp-create";let l=Zs(r,r.temp,!1,!0);r.phase="temp-write",VE(l.fd,o),r.phase="temp-fsync",Ne.fsyncSync(l.fd),r.phase="temp-close",Hc(l)}r.phase="identity-revalidation",Li(r.state),sh(e.lock),Ar(Ne.fstatSync(r.directory.fd),r.directory.stat)||Be("Directory descriptor changed"),WE(n,oh(r))||Be("Expected canonical identity changed");let c=Ne.lstatSync(r.fence);if((c.isSymbolicLink()||!Ar(c,a.stat))&&Be("Pending fence ownership changed"),r.tempOwner){let l=Ne.lstatSync(r.temp);(l.isSymbolicLink()||!Ar(l,r.tempOwner.stat))&&Be("Temp ownership changed")}return r.phase=t==="replace"?"rename":"unlink",r.attempted=!0,t==="replace"?Ne.renameSync(r.temp,r.file):Ne.unlinkSync(r.file),r.phase="canonical-directory-fsync",Ne.fsyncSync(r.directory.fd),r.committed=!0,r.phase="fence-remove",ex(r,a),r.phase="fence-removal-directory-fsync",Ne.fsyncSync(r.directory.fd),r.phase="directory-close",Hc(r.directory),{outcome:"committed",recoveryRequired:!1,retryable:!1}})}function rd(e){return tx(e,"replace")}function rx(e){return tx(e,"delete")}var KE,GE,YE,ZD,eB,JE,Ar,Wc,Vc=O(()=>{KE=new WeakMap,GE=new WeakMap,YE=16*1024*1024,ZD=/^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,122}\.json$/,eB=/^[a-f0-9]{64}$/,JE=e=>XD("sha256").update(e).digest("hex"),Ar=(e,t)=>e?.dev===t?.dev&&e?.ino===t?.ino,Wc=class extends Error{constructor({cause:t,code:r="DURABLE_SNAPSHOT_IO",outcome:n="not_committed",recoveryRequired:o=!1,phase:i,cleanupErrors:s=[]}){super(`Durable snapshot unavailable (${i})`,{cause:t}),this.name="DurableSnapshotError",Object.assign(this,{code:r,outcome:n,recoveryRequired:o,retryable:n==="not_committed"&&!o,phase:i,cleanupErrors:s})}}});import{existsSync as kx,readFileSync as _x}from"node:fs";import{dirname as vx,join as dd}from"node:path";import{fileURLToPath as IB}from"node:url";function Ix(e){let t=vx(IB(e));for(let r=0;r<8;r+=1){let n=dd(t,"package.json");if(kx(n))try{let i=JSON.parse(_x(n,"utf8"));if(i&&typeof i.version=="string")return t}catch{}let o=vx(t);if(o===t)break;t=o}throw new Error(`oracle: could not resolve package root from ${e}`)}function Ox(e){return JSON.parse(_x(dd(Ix(e),"package.json"),"utf8"))}function Uo(e,t){let r=Ix(t),n=dd(r,e);return kx(n)?n:dd(r,"dist","assets",e)}var na=O(()=>{});function to(e,t){return wh.find(r=>r.provider===e&&r.id===t)||null}function Mx(e,t){let r=t==="minimal"?"low":t||"high",n=NB[e],o=Px.indexOf(r);return n&&o>Px.indexOf(n)?n:r}var wh,Px,NB,bd=O(()=>{wh=Object.freeze([Object.freeze({id:"claude-opus-5-5",label:"Claude Opus 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-opus-5",label:"Claude Opus 5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),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.7",label:"Grok 4.7",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth",contextLength:5e5,badge:"NEW"}),Object.freeze({id:"grok-4.20-reasoning",label:"Grok 4.20 Reasoning",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth"}),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-5",label:"Claude Opus 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),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.7",label:"Grok 4.7",provider:"xai",providerLabel:"xAI API key",contextLength:5e5,badge:"NEW"}),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-sol",label:"GPT-6 Sol",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,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-6-sol",label:"GPT-6 Sol",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",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-6-sol",label:"GPT-6 Sol",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6-luna",label:"GPT-6 Luna",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"anthropic/claude-opus-5.5",label:"Claude Opus 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"anthropic/claude-sonnet-5.5",label:"Claude Sonnet 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"x-ai/grok-4.7",label:"Grok 4.7",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:5e5,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})]);Px=Object.freeze(["low","medium","high","xhigh","max","ultra"]),NB=Object.freeze({"gpt-6-luna":"max","gpt-5.6-luna":"max","gpt-5.5":"xhigh"})});import In from"node:fs";import Pr from"node:path";function Xx(e){let t=String(e||"").trim();if(!t||!Pr.isAbsolute(t))return"";try{return In.statSync(t).isFile()?t:""}catch{return""}}function rF(e){try{return In.readdirSync(e,{withFileTypes:!0})}catch{return[]}}function nF(e=process.env){return!(e.ORACLE_PUBLIC_DESKTOP==="1"&&e.ORACLE_OWNER_DESKTOP!=="1")}function oF(e=process.env){let t=String(e.ORACLE_REAL_HOME||"").trim();return t&&Pr.isAbsolute(t)?t:Xn()}function iF(e={}){let t=e.home||oF(e.env),r={"anthropic-oauth":[],"openai-codex":[],"xai-oauth":[]},n=(i,s)=>{let a=Xx(s);a&&(r[i].includes(a)||r[i].push(a))};n("anthropic-oauth",Pr.join(t,".claude",".credentials.json"));for(let i of rF(Pr.join(t,".claude-lanes")))!i.isDirectory()||i.name.startsWith(".")||n("anthropic-oauth",Pr.join(t,".claude-lanes",i.name,".credentials.json"));let o=Pr.join(t,".hermes","auth.json");for(let i of kh)n(i,o);return n("anthropic-oauth",Pr.join(t,".hermes","profiles","hermes-macbook","auth.json")),n("openai-codex",Pr.join(t,".hermes","profiles","hermes-macbook","auth.json")),n("xai-oauth",Pr.join(t,".hermes","profiles","hermes-macbook","auth.json")),r}function sF(e){if(!In.existsSync(e))return{providers:{}};try{let t=JSON.parse(In.readFileSync(e,"utf8"));return!t||typeof t!="object"||Array.isArray(t)?{providers:{}}:{providers:t.providers&&typeof t.providers=="object"&&!Array.isArray(t.providers)?t.providers:{}}}catch{return{providers:{}}}}function aF(e,t){let r=[];for(let n of[...Array.isArray(e)?e:[],...t]){let o=Xx(n)||(Pr.isAbsolute(String(n||""))?String(n):"");!o||r.includes(o)||r.push(o)}return r}function Qx(e={}){if(!nF(e.env))return{wrote:!1,providers:{}};let t=e.linksFile||Pr.join(xt(),"oauth-links.json"),r=iF(e),o={providers:{...sF(t).providers||{}}},i=!1;for(let l of kh){let u=aF(o.providers[l],r[l]);JSON.stringify(u)!==JSON.stringify(o.providers[l]||[])?(o.providers[l]=u,i=!0):u.length&&(o.providers[l]=u)}if(!kh.some(l=>(o.providers[l]||[]).length))return{wrote:!1,providers:o.providers};if(!i&&In.existsSync(t))return{wrote:!1,providers:o.providers};let a=Pr.dirname(t);if(In.mkdirSync(a,{recursive:!0}),process.platform!=="win32")try{In.chmodSync(a,448)}catch{}let c=`${t}.${process.pid}.tmp`;return In.writeFileSync(c,`${JSON.stringify(o,null,2)}
|
|
6
|
+
`);r.phase="fence-create";let a;try{a=Zs(r,r.fence,!1,!0)}catch(l){throw l.code==="EEXIST"&&Object.assign(l,{durabilityCode:"DURABLE_SNAPSHOT_FENCED",recoveryRequired:!0}),l}if(r.phase="fence-write",VE(a.fd,s),r.phase="fence-fsync",Ne.fsyncSync(a.fd),r.phase="fence-close",Hc(a),r.phase="fence-directory-fsync",Ne.fsyncSync(r.directory.fd),t==="replace"){r.temp=`${r.file}.tmp-${i}`,r.phase="temp-create";let l=Zs(r,r.temp,!1,!0);r.phase="temp-write",VE(l.fd,o),r.phase="temp-fsync",Ne.fsyncSync(l.fd),r.phase="temp-close",Hc(l)}r.phase="identity-revalidation",Li(r.state),sh(e.lock),Ar(Ne.fstatSync(r.directory.fd),r.directory.stat)||Be("Directory descriptor changed"),WE(n,oh(r))||Be("Expected canonical identity changed");let c=Ne.lstatSync(r.fence);if((c.isSymbolicLink()||!Ar(c,a.stat))&&Be("Pending fence ownership changed"),r.tempOwner){let l=Ne.lstatSync(r.temp);(l.isSymbolicLink()||!Ar(l,r.tempOwner.stat))&&Be("Temp ownership changed")}return r.phase=t==="replace"?"rename":"unlink",r.attempted=!0,t==="replace"?Ne.renameSync(r.temp,r.file):Ne.unlinkSync(r.file),r.phase="canonical-directory-fsync",Ne.fsyncSync(r.directory.fd),r.committed=!0,r.phase="fence-remove",ex(r,a),r.phase="fence-removal-directory-fsync",Ne.fsyncSync(r.directory.fd),r.phase="directory-close",Hc(r.directory),{outcome:"committed",recoveryRequired:!1,retryable:!1}})}function rd(e){return tx(e,"replace")}function rx(e){return tx(e,"delete")}var KE,GE,YE,ZD,eB,JE,Ar,Wc,Vc=O(()=>{KE=new WeakMap,GE=new WeakMap,YE=16*1024*1024,ZD=/^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,122}\.json$/,eB=/^[a-f0-9]{64}$/,JE=e=>XD("sha256").update(e).digest("hex"),Ar=(e,t)=>e?.dev===t?.dev&&e?.ino===t?.ino,Wc=class extends Error{constructor({cause:t,code:r="DURABLE_SNAPSHOT_IO",outcome:n="not_committed",recoveryRequired:o=!1,phase:i,cleanupErrors:s=[]}){super(`Durable snapshot unavailable (${i})`,{cause:t}),this.name="DurableSnapshotError",Object.assign(this,{code:r,outcome:n,recoveryRequired:o,retryable:n==="not_committed"&&!o,phase:i,cleanupErrors:s})}}});import{existsSync as kx,readFileSync as _x}from"node:fs";import{dirname as vx,join as dd}from"node:path";import{fileURLToPath as IB}from"node:url";function Ix(e){let t=vx(IB(e));for(let r=0;r<8;r+=1){let n=dd(t,"package.json");if(kx(n))try{let i=JSON.parse(_x(n,"utf8"));if(i&&typeof i.version=="string")return t}catch{}let o=vx(t);if(o===t)break;t=o}throw new Error(`oracle: could not resolve package root from ${e}`)}function Ox(e){return JSON.parse(_x(dd(Ix(e),"package.json"),"utf8"))}function Uo(e,t){let r=Ix(t),n=dd(r,e);return kx(n)?n:dd(r,"dist","assets",e)}var na=O(()=>{});function to(e,t){return wh.find(r=>r.provider===e&&r.id===t)||null}function Mx(e,t){let r=t==="minimal"?"low":t||"high",n=NB[e],o=Px.indexOf(r);return n&&o>Px.indexOf(n)?n:r}var wh,Px,NB,bd=O(()=>{wh=Object.freeze([Object.freeze({id:"claude-opus-5-5",label:"Claude Opus 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-opus-5",label:"Claude Opus 5",provider:"anthropic-oauth",providerLabel:"Anthropic OAuth"}),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.7",label:"Grok 4.7",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth",contextLength:5e5,badge:"NEW"}),Object.freeze({id:"grok-4.20-reasoning",label:"Grok 4.20 Reasoning",provider:"xai-oauth",providerLabel:"Grok / xAI OAuth"}),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-5",label:"Claude Opus 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"claude-fable-5-1",label:"Claude Fable 5.1",provider:"anthropic",providerLabel:"Anthropic API key",contextLength:1e6,badge:"NEW"}),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.7",label:"Grok 4.7",provider:"xai",providerLabel:"xAI API key",contextLength:5e5,badge:"NEW"}),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-sol",label:"GPT-6 Sol",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6.1-sol",label:"GPT-6.1 Sol",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:272e3,badge:"NEW"}),Object.freeze({id:"gpt-5.6-terra",label:"GPT-5.6 Terra",provider:"openai-codex",providerLabel:"OpenAI Codex OAuth",contextLength:272e3}),Object.freeze({id:"gpt-6-astra",label:"GPT-6 Astra",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-sol",label:"GPT-6 Sol",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6.1-sol",label:"GPT-6.1 Sol",provider:"openai",providerLabel:"OpenAI API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"gpt-6-luna",label:"GPT-6 Luna",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-6-sol",label:"GPT-6 Sol",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6.1-sol",label:"GPT-6.1 Sol",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6.1-sol-pro",label:"GPT-6.1 Sol Pro",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"openai/gpt-6-luna",label:"GPT-6 Luna",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:105e4,badge:"NEW"}),Object.freeze({id:"anthropic/claude-opus-5.5",label:"Claude Opus 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"anthropic/claude-sonnet-5.5",label:"Claude Sonnet 5.5",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:1e6,badge:"NEW"}),Object.freeze({id:"x-ai/grok-4.7",label:"Grok 4.7",provider:"openrouter",providerLabel:"OpenRouter API key",contextLength:5e5,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})]);Px=Object.freeze(["low","medium","high","xhigh","max","ultra"]),NB=Object.freeze({"gpt-6-luna":"max","gpt-5.6-luna":"max","gpt-5.5":"xhigh"})});import In from"node:fs";import Pr from"node:path";function Xx(e){let t=String(e||"").trim();if(!t||!Pr.isAbsolute(t))return"";try{return In.statSync(t).isFile()?t:""}catch{return""}}function rF(e){try{return In.readdirSync(e,{withFileTypes:!0})}catch{return[]}}function nF(e=process.env){return!(e.ORACLE_PUBLIC_DESKTOP==="1"&&e.ORACLE_OWNER_DESKTOP!=="1")}function oF(e=process.env){let t=String(e.ORACLE_REAL_HOME||"").trim();return t&&Pr.isAbsolute(t)?t:Xn()}function iF(e={}){let t=e.home||oF(e.env),r={"anthropic-oauth":[],"openai-codex":[],"xai-oauth":[]},n=(i,s)=>{let a=Xx(s);a&&(r[i].includes(a)||r[i].push(a))};n("anthropic-oauth",Pr.join(t,".claude",".credentials.json"));for(let i of rF(Pr.join(t,".claude-lanes")))!i.isDirectory()||i.name.startsWith(".")||n("anthropic-oauth",Pr.join(t,".claude-lanes",i.name,".credentials.json"));let o=Pr.join(t,".hermes","auth.json");for(let i of kh)n(i,o);return n("anthropic-oauth",Pr.join(t,".hermes","profiles","hermes-macbook","auth.json")),n("openai-codex",Pr.join(t,".hermes","profiles","hermes-macbook","auth.json")),n("xai-oauth",Pr.join(t,".hermes","profiles","hermes-macbook","auth.json")),r}function sF(e){if(!In.existsSync(e))return{providers:{}};try{let t=JSON.parse(In.readFileSync(e,"utf8"));return!t||typeof t!="object"||Array.isArray(t)?{providers:{}}:{providers:t.providers&&typeof t.providers=="object"&&!Array.isArray(t.providers)?t.providers:{}}}catch{return{providers:{}}}}function aF(e,t){let r=[];for(let n of[...Array.isArray(e)?e:[],...t]){let o=Xx(n)||(Pr.isAbsolute(String(n||""))?String(n):"");!o||r.includes(o)||r.push(o)}return r}function Qx(e={}){if(!nF(e.env))return{wrote:!1,providers:{}};let t=e.linksFile||Pr.join(xt(),"oauth-links.json"),r=iF(e),o={providers:{...sF(t).providers||{}}},i=!1;for(let l of kh){let u=aF(o.providers[l],r[l]);JSON.stringify(u)!==JSON.stringify(o.providers[l]||[])?(o.providers[l]=u,i=!0):u.length&&(o.providers[l]=u)}if(!kh.some(l=>(o.providers[l]||[]).length))return{wrote:!1,providers:o.providers};if(!i&&In.existsSync(t))return{wrote:!1,providers:o.providers};let a=Pr.dirname(t);if(In.mkdirSync(a,{recursive:!0}),process.platform!=="win32")try{In.chmodSync(a,448)}catch{}let c=`${t}.${process.pid}.tmp`;return In.writeFileSync(c,`${JSON.stringify(o,null,2)}
|
|
7
7
|
`,{mode:384}),In.renameSync(c,t),process.platform!=="win32"&&In.chmodSync(t,384),{wrote:!0,providers:o.providers}}var kh,Zx=O(()=>{Hr();kh=Object.freeze(["anthropic-oauth","openai-codex","xai-oauth"])});import Di from"node:fs";import rA from"node:path";function cF(e=xt()){return rA.join(e,"user-profile.json")}function lF(e){if(!Di.existsSync(e))return{identities:{},wallets:{}};try{let t=JSON.parse(Di.readFileSync(e,"utf8"));return!t||typeof t!="object"||Array.isArray(t)?{identities:{},wallets:{}}:{identities:t.identities&&typeof t.identities=="object"?t.identities:{},wallets:t.wallets&&typeof t.wallets=="object"?t.wallets:{},updatedAt:t.updatedAt}}catch{return{identities:{},wallets:{}}}}function tA(e){if(!e||typeof e!="object"||Array.isArray(e))return{};let t={};for(let[r,n]of Object.entries(e))if(!eA.test(r)){if(typeof n=="string"||typeof n=="number"||typeof n=="boolean"){t[r]=n;continue}if(n&&typeof n=="object"&&!Array.isArray(n)){let o={};for(let[i,s]of Object.entries(n))eA.test(i)||(typeof s=="string"||typeof s=="number"||typeof s=="boolean")&&(o[i]=s);t[r]=o}}return t}function uF(e,t){let r=rA.dirname(e);if(Di.mkdirSync(r,{recursive:!0}),process.platform!=="win32")try{Di.chmodSync(r,448)}catch{}let n={updatedAt:new Date().toISOString(),identities:tA(t.identities),wallets:tA(t.wallets)},o=`${e}.${process.pid}.tmp`;return Di.writeFileSync(o,`${JSON.stringify(n,null,2)}
|
|
8
8
|
`,{mode:384}),Di.renameSync(o,e),process.platform!=="win32"&&Di.chmodSync(e,384),n}function _h(e){let r=String(e||"").trim().split(".");if(r.length<2)return{};try{let n=JSON.parse(Buffer.from(r[1],"base64url").toString("utf8")),o=String(n.email||"").trim(),i=String(n.name||n.preferred_username||"").trim();return{...o?{email:o}:{},...i?{name:i}:{}}}catch{return{}}}function Ih(e,t={},r={}){let n=String(e||"").trim();if(!n)return null;let o=r.file||cF(r.configDir),i=lF(o),s=i.identities[n]&&typeof i.identities[n]=="object"?i.identities[n]:{};return i.identities[n]={...s,provider:n,source:String(t.source||s.source||"oracle"),loggedInAt:t.loggedInAt||new Date().toISOString(),...t.label?{label:String(t.label)}:{},...t.email?{email:String(t.email)}:{},...t.name?{name:String(t.name)}:{}},uF(o,i)}var eA,nA=O(()=>{Hr();eA=/access|refresh|idToken|id_token|token|secret|key|seed|mnemonic/i});import{spawnSync as dF}from"node:child_process";import fF from"node:path";function gF(e){let t=process.env.SystemRoot||process.env.SYSTEMROOT||"C:\\Windows",r=fF.win32.join(t,"System32","WindowsPowerShell","v1.0","powershell.exe"),n=dF(r,["-NoLogo","-NoProfile","-NonInteractive","-Command",hF],{encoding:"utf8",env:{SystemRoot:t,ORACLE_ACL_PATHS:e.join(`
|
|
9
9
|
`)},timeout:3e4,windowsHide:!0});if(n.error||n.status!==0)throw new Error("Windows security descriptor is unreadable");let o=JSON.parse(n.stdout);if(!Array.isArray(o.items)||o.items.length!==e.length)throw new Error("Windows security descriptor is unreadable");return o}function yF(e){let t=String(e?.user||"");if(!/^S-1-\d+(?:-\d+)+$/.test(t))return"current user SID is unknown";let r=new Set([t,pF,mF]);for(let n of e.items||[]){if(!r.has(n?.owner))return"owned by another principal";let o=String(n.sddl||"");if(!/D:/.test(o)||/D:[A-Z]*NO_ACCESS_CONTROL/.test(o))return"no discretionary access control";let i=o.slice(o.indexOf("D:")+2).replace(/S:.*$/,"");for(let[,s]of i.matchAll(/\(([A-Z]+);/g))if(s!=="A"&&s!=="D")return"unsupported access control entry";if(!Array.isArray(n.aces))return"access rules are unreadable";for(let s of n.aces)if(s?.allow!==!1&&!r.has(s?.sid))return"grants access to another principal"}return null}function kd(e,t=gF){try{let r=t(e);return!Array.isArray(r?.items)||r.items.length!==e.length?!1:yF(r)===null}catch{return!1}}var pF,mF,hF,oA=O(()=>{pF="S-1-5-18",mF="S-1-5-32-544",hF=["$ErrorActionPreference='Stop'","$sid=[Security.Principal.SecurityIdentifier]","$user=[Security.Principal.WindowsIdentity]::GetCurrent().User.Value","$items=foreach($p in ($env:ORACLE_ACL_PATHS -split [char]10)){if([IO.Directory]::Exists($p)){$a=[IO.Directory]::GetAccessControl($p,'Owner,Access')}else{$a=[IO.File]::GetAccessControl($p,'Owner,Access')};@{owner=$a.GetOwner($sid).Value;sddl=$a.GetSecurityDescriptorSddlForm('Owner,Access');aces=@($a.GetAccessRules($true,$true,$sid)|ForEach-Object{@{sid=$_.IdentityReference.Value;allow=($_.AccessControlType -eq 'Allow')}})}}","[Console]::Out.Write((ConvertTo-Json -Compress -Depth 5 @{user=$user;items=@($items)}))"].join(";")});var Td={};jt(Td,{createOAuthStore:()=>Lh,default:()=>NF,getOAuthStore:()=>Zt,hasOAuthCredentials:()=>cA,loginOAuth:()=>Od,oauthProviderConfig:()=>Yr,oauthProviderId:()=>Gr,oauthRuntimeConfig:()=>lA,refreshOAuthCredentials:()=>$h,resolveOAuthCredentials:()=>aA});import{createHash as wF,randomBytes as Ch,timingSafeEqual as bF}from"node:crypto";import mr from"node:fs";import wt from"node:path";import SF from"node:readline/promises";import{spawn as EF,spawnSync as xF}from"node:child_process";function Rh(e={}){return typeof e.now=="function"?Number(e.now()):Date.now()}function Gr(e){let t=String(e||"").trim().toLowerCase();for(let[r,n]of Object.entries(ji))if(n.aliases.includes(t))return r;throw new Error(`unsupported OAuth provider: ${e||"(empty)"}`)}function Yr(e){let t=Gr(e);return{id:t,...ji[t]}}function io(e,t={}){if(!mr.existsSync(e))return t;try{let r=JSON.parse(mr.readFileSync(e,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new Error("invalid object");return r}catch{throw new Error(`credential store is unreadable or corrupt: ${wt.basename(e)}`)}}function sA(e,t=process.platform,r=void 0){if(gt(e),t!=="win32")mr.chmodSync(e,448);else if(!kd([e],r))throw Nh(e)}function AF(e,t,r=process.platform,n=void 0){sA(wt.dirname(e),r,n);let o=`${e}.${process.pid}.${Ch(4).toString("hex")}.tmp`;if(mr.writeFileSync(o,`${JSON.stringify(t,null,2)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var W=(e,n,t)=>()=>{if(t)throw t[0];try{return e&&(n=e(e=0)),n}catch(r){throw t=[r],r}};import L from"node:fs";import ot from"node:os";import x from"node:path";import{fileURLToPath as it}from"node:url";function fe(){return process.env.ORACLE_FAKE_HOME||ot.homedir()}function at(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function $(){return at()?process.env.ORACLE_CONFIG_DIR||x.join(fe(),".config","oracle"):x.join(fe(),".config","oracle")}function ct(){return x.join($(),"desk.json")}function lt(){return x.join($(),"env")}function E({force:e=!1}={}){if(E._done&&!e)return E._result||null;E._done=!0;let n={},t=(i,o)=>{if(o==null)return;let a=String(o).trim();a&&(process.env[i]!=null&&String(process.env[i]).trim()!==""||(process.env[i]=a,n[i]=a))};try{let i=lt();if(L.existsSync(i))for(let o of L.readFileSync(i,"utf8").split(/\r?\n/)){let a=o.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!a||a[2].startsWith("#"))continue;let l=a[2];(l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'"))&&(l=l.slice(1,-1)),t(a[1],l)}}catch{}try{let i=ct();if(L.existsSync(i)){let o=JSON.parse(L.readFileSync(i,"utf8"));o&&typeof o=="object"&&(t("ORACLE_DESK_URL",o.deskUrl||o.dataUrl||o.url),t("ORACLE_DATA_URL",o.dataUrl||o.deskUrl||o.url),t("ORACLE_API_URL",o.apiUrl||o.dataUrl||o.deskUrl),t("ORACLE_PUBLIC_URL",o.publicUrl||o.deskUrl||o.dataUrl),t("ORACLE_EXEC_URL",o.execUrl),t("MAD_DESK_URL",o.deskUrl||o.dataUrl))}}catch{}let r=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return r&&(t("ORACLE_DESK_URL",r),t("ORACLE_DATA_URL",r),t("ORACLE_API_URL",r),t("ORACLE_PUBLIC_URL",r),t("MAD_DESK_URL",r)),E._result=Object.keys(n).length?n:null,E._result}var st,Dr,pe=W(()=>{st=x.dirname(it(import.meta.url)),Dr=x.resolve(st,"../..");try{E()}catch{}});var Ee=W(()=>{});var wi,hi,D=W(()=>{wi=300*1e3,hi=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});pe();import m from"node:fs";import H from"node:path";import{createCipheriv as ut,createDecipheriv as dt,randomBytes as O,scryptSync as ft}from"node:crypto";import s from"node:fs";import p from"node:path";var me="ORACLE-LOCAL-VAULT",we=1,k=Object.freeze({N:1<<17,r:8,p:1}),pt=256*1024*1024,mt=16*1024;function P(e,n,t,{max:r=n}={}){if(typeof e!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))throw new Error(`local-vault: invalid ${t} encoding`);let i=Buffer.from(e,"base64");if(i.toString("base64")!==e||i.length<n||i.length>r)throw new Error(`local-vault: invalid ${t} length`);return i}function he(e,n,t=k){let r=String(e??"");if(r.length<12)throw new Error("local-vault: passphrase must be at least 12 characters");if(r.includes("\0"))throw new Error("local-vault: refusing zeroed passphrase material");return ft(r,n,32,{...t,maxmem:pt})}function ge(e,n,t={}){let r=Buffer.isBuffer(e)?Buffer.from(e):Buffer.from(String(e));if(!r.length)throw new Error("local-vault: refusing empty key material");let i=O(32),o=O(12),a={magic:me,version:we,kdf:{name:"scrypt",...k,salt:i.toString("base64")},cipher:{name:"aes-256-gcm",iv:o.toString("base64")},meta:{address:t.address?String(t.address).toLowerCase():null,addresses:t.addresses||void 0,kind:t.kind||"evm",createdAt:new Date().toISOString()}},l=he(n,i);try{let f=ut("aes-256-gcm",l,o);f.setAAD(Buffer.from(JSON.stringify(a)));let c=Buffer.concat([f.update(r),f.final()]);return{...a,ciphertext:c.toString("base64"),tag:f.getAuthTag().toString("base64")}}finally{l.fill(0),r.fill(0)}}function T(e,n){if(e?.magic!==me||e?.version!==we)throw new Error("local-vault: unsupported vault file");if(e?.kdf?.name!=="scrypt"||e?.cipher?.name!=="aes-256-gcm")throw new Error("local-vault: unsupported cryptography");if(e.kdf.N!==k.N||e.kdf.r!==k.r||e.kdf.p!==k.p)throw new Error("local-vault: unsupported KDF parameters");if(Object.keys(e.kdf).sort().join(",")!=="N,name,p,r,salt"||Object.keys(e.cipher).sort().join(",")!=="iv,name")throw new Error("local-vault: unexpected cryptography field");if(!e.meta||Object.keys(e.meta).some(u=>!["address","addresses","kind","createdAt"].includes(u))||String(e.meta.kind||"").length>16||String(e.meta.address||"").length>128||JSON.stringify(e.meta.addresses||{}).length>1024||!Number.isFinite(Date.parse(e.meta.createdAt)))throw new Error("local-vault: invalid metadata");let t=["magic","version","kdf","cipher","meta","ciphertext","tag"];if(Object.keys(e).some(u=>!t.includes(u)))throw new Error("local-vault: unexpected vault field");let r=P(e.kdf.salt,32,"salt"),i=P(e.cipher.iv,12,"iv"),o=P(e.tag,16,"tag"),a=P(e.ciphertext,1,"ciphertext",{max:mt}),{ciphertext:l,tag:f,...c}=e,d=he(n,r);try{let u=dt("aes-256-gcm",d,i);return u.setAAD(Buffer.from(JSON.stringify(c))),u.setAuthTag(o),Buffer.concat([u.update(a),u.final()])}catch{throw new Error("local-vault: wrong passphrase or tampered vault")}finally{d.fill(0)}}function wt(e){if(!e.isFile())throw new Error("local-vault: secret source must be a regular file");if(e.uid!==process.getuid?.())throw new Error("local-vault: secret source must be owned by this user");if(e.nlink!==1)throw new Error("local-vault: refusing hard-linked secret source");if((e.mode&63)!==0)throw new Error("local-vault: secret source must be owner-only (0600)")}function U(e){let n=p.dirname(e),t=s.lstatSync(n);if(!t.isDirectory()||t.isSymbolicLink())throw new Error("local-vault: unsafe destination directory");if(t.uid!==process.getuid?.())throw new Error("local-vault: destination directory must be owned by this user");if((t.mode&63)!==0)throw new Error("local-vault: destination directory must be owner-only (0700)");try{let r=s.lstatSync(e);if(r.isSymbolicLink())throw new Error("local-vault: refusing symlink destination");if(!r.isFile()||r.uid!==process.getuid?.()||r.nlink!==1)throw new Error("local-vault: unsafe destination file");if(r.dev!==t.dev)throw new Error("local-vault: destination device mismatch")}catch(r){if(r.code!=="ENOENT")throw r}}function h(e){let n;try{n=s.openSync(e,s.constants.O_RDONLY|s.constants.O_NOFOLLOW)}catch(t){throw t.code==="ELOOP"?new Error("local-vault: refusing symlink"):t}try{let t=s.fstatSync(n);if(wt(t),t.size>1024*1024)throw new Error("local-vault: secret source changed or is too large");let r=s.lstatSync(e);if(r.isSymbolicLink()||r.dev!==t.dev||r.ino!==t.ino)throw new Error("local-vault: secret source changed or is too large");return s.readFileSync(n,"utf8").replace(/[\r\n]+$/,"")}finally{s.closeSync(n)}}function N(e){return JSON.parse(h(e))}function ye(e,n){s.mkdirSync(p.dirname(e),{recursive:!0,mode:448}),U(e);let t=p.join(p.dirname(e),`.${p.basename(e)}.${process.pid}.${O(6).toString("hex")}.tmp`),r;try{r=s.openSync(t,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY|s.constants.O_NOFOLLOW,384),s.writeFileSync(r,JSON.stringify(n,null,2)+`
|
|
2
|
-
`),s.fsyncSync(r),s.closeSync(r),r=void 0;let i=s.openSync(t,s.constants.O_RDONLY|s.constants.O_NOFOLLOW),o;try{o=s.fstatSync(i)}finally{s.closeSync(i)}let a=s.lstatSync(p.dirname(e));if(o.nlink!==1||o.dev!==a.dev||o.uid!==process.getuid?.())throw new Error("local-vault: unsafe temporary file");s.renameSync(t,e),s.chmodSync(e,384);let l=s.openSync(p.dirname(e),"r");try{s.fsyncSync(l)}finally{s.closeSync(l)}}catch(i){if(r!==void 0)try{s.closeSync(r)}catch{}try{s.unlinkSync(t)}catch{}throw i}return e}function g(e,n){s.mkdirSync(p.dirname(e),{recursive:!0,mode:448}),U(e);let t=p.join(p.dirname(e),`.${p.basename(e)}.${process.pid}.${O(6).toString("hex")}.tmp`);try{let r=s.openSync(t,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY|s.constants.O_NOFOLLOW,384);try{s.writeFileSync(r,String(n)),s.fsyncSync(r)}finally{s.closeSync(r)}s.renameSync(t,e),s.chmodSync(e,384);let i=s.openSync(p.dirname(e),"r");try{s.fsyncSync(i)}finally{s.closeSync(i)}}catch(r){try{s.unlinkSync(t)}catch{}throw r}}function ht(e,n){try{s.linkSync(e,n)}catch(r){throw r?.code==="EEXIST"?new Error("export destination already exists; choose a new owner-only file"):r}s.chmodSync(n,384),s.unlinkSync(e);let t=s.openSync(p.dirname(n),"r");try{s.fsyncSync(t)}finally{s.closeSync(t)}}function be(e,n){s.mkdirSync(p.dirname(e),{recursive:!0,mode:448}),U(e);let t=p.join(p.dirname(e),`.${p.basename(e)}.${process.pid}.${O(6).toString("hex")}.tmp`),r;try{r=s.openSync(t,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY|s.constants.O_NOFOLLOW,384),s.writeFileSync(r,String(n)),s.fsyncSync(r),s.closeSync(r),r=void 0,ht(t,e)}catch(i){if(r!==void 0)try{s.closeSync(r)}catch{}try{s.unlinkSync(t)}catch{}throw i}}import w from"node:path";import vr from"node:os";import{createHash as Ir,randomBytes as ad}from"node:crypto";import{Interface as ce,keccak256 as ld}from"ethers";import{Transaction as dd}from"@scure/btc-signer";import{ed25519 as pd}from"@noble/curves/ed25519.js";import{Interface as xt,MaxUint256 as Sn,isAddress as An,keccak256 as vn,toUtf8Bytes as In}from"ethers";import{Interface as bt,isAddress as rn}from"ethers";import{isAddress as Yr}from"ethers";var an=new bt(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Et,isAddress as un}from"ethers";var mn=new Et(["function approve(address spender,uint256 amount) returns (bool)"]),wn=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var _n=new xt(["function approve(address spender,uint256 amount) returns (bool)"]);Ee();import{readFileSync as Pn,readdirSync as Bn,existsSync as St}from"node:fs";import{dirname as At,join as C}from"node:path";import{fileURLToPath as vt}from"node:url";var _=At(vt(import.meta.url));function It(){let e=[C(_,"descriptors"),C(_,"clear-sign","descriptors"),C(_,"..","clear-sign","descriptors"),C(_,"..","..","clear-sign","descriptors"),C(_,"..","..","..","clear-sign","descriptors")];for(let n of e)if(St(n))return n;return e[0]}var Mn=It();var qn=(1n<<256n)-1n;import{Address as Yn,NETWORK as Xn,OutScript as Zn,RawTx as Qn,SigHash as eo,TEST_NETWORK as to,Transaction as ro}from"@scure/btc-signer";import{createHash as kt}from"node:crypto";import{base58 as so}from"@scure/base";import{getCompiledTransactionMessageDecoder as co}from"@solana/transaction-messages";var xe=e=>kt("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),lo=new Map([[xe("route"),{name:"route",prefixBytes:0}],[xe("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);import{AsyncLocalStorage as Ot}from"node:async_hooks";var po=new Ot;var Ao=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,vo=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,Io=AbortSignal.prototype.throwIfAborted,ko=EventTarget.prototype.addEventListener,Oo=EventTarget.prototype.removeEventListener,To=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null;var No=64*1024,Co=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});var Mo=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var Uo=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"leverage","perp-isolated-margin":"margin","builder-fee-approval":"approveBuilder","hype-stake-deposit":"stake","hype-stake-withdraw":"unstake","hype-delegate":"delegate","hype-undelegate":"delegate"}),Vo=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"updateLeverage","perp-isolated-margin":"updateIsolatedMargin","builder-fee-approval":"approveBuilderFee","hype-stake-deposit":"cDeposit","hype-stake-withdraw":"cWithdraw","hype-delegate":"tokenDelegate","hype-undelegate":"tokenDelegate"});var Go="0x"+"00".repeat(32);var Nt=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),ei=Object.freeze(Nt.map(e=>e[0]));import{base58 as Qs}from"@scure/base";import{Interface as Ne}from"ethers";D();import{TypedDataEncoder as Ki,getAddress as Ji}from"ethers";D();import{TypedDataEncoder as xi,getAddress as Si,isAddress as Ai}from"ethers";var _t=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Rt=Object.freeze({Order:[{name:"salt",type:"uint256"},{name:"maker",type:"address"},{name:"receiver",type:"address"},{name:"makerAsset",type:"address"},{name:"takerAsset",type:"address"},{name:"makingAmount",type:"uint256"},{name:"takingAmount",type:"uint256"},{name:"makerTraits",type:"uint256"}]});import{TypedDataEncoder as $i,getAddress as Pi,isAddress as Bi}from"ethers";var ki=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});D();var Lt=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),zi=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var $t=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),Wi=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var Xi=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var Dt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var ms=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0,delegate:0,identity:0,order:0,cancel:0,leverage:0,margin:0,approveBuilder:0,stake:0,unstake:0});var Ft=Object.freeze({"0x04e45aaf":{provider:"uniswap-v3",action:"swap",layout:"router02-exact-input-single"},"0x414bf389":{provider:"uniswap-v3",action:"swap",layout:"swap-router-exact-input-single"},"0xc04b8d59":{provider:"uniswap-v3",action:"swap",layout:"exact-input-deadline"},"0xb858183f":{provider:"uniswap-v3",action:"swap",layout:"exact-input"},"0x5ae401dc":{provider:"uniswap-v3",action:"swap",layout:"multicall-deadline"},"0xa026383e":{provider:"aerodrome",action:"swap",layout:"aerodrome-exact-input-single"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),ws=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),hs=new Ne(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),gs=new Ne(["function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),ys=Object.freeze({"0xa0712d68":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0x1249c58b":{provider:"nft-mint",action:"mint",layout:"mint-no-args"},"0x2db11544":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xefef39a1":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xa6f2ae3a":{provider:"nft-mint",action:"mint",layout:"mint-no-args"}});var jt=Object.freeze([...Dt]),bs=Object.freeze({...Ft});import{ed25519 as Ps}from"@noble/curves/ed25519.js";import{base58 as Ds}from"@scure/base";import{RawTx as js,SigHash as Ms,Transaction as qs}from"@scure/btc-signer";import{Transaction as zs,keccak256 as Ws,verifyTypedData as Us}from"ethers";import{encode as Ss}from"@msgpack/msgpack";import{keccak256 as vs,verifyTypedData as Is}from"ethers";var ks=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),Os=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as wa,constants as zt,fchmodSync as ha,fsyncSync as ga,lstatSync as ya,mkdirSync as ba,openSync as Ea,readFileSync as xa,renameSync as Sa,rmSync as Aa,writeFileSync as va}from"node:fs";import{wordlists as fa}from"ethers";var Oa=zt.O_NOFOLLOW??0;import{wordlists as Ca}from"ethers";var _e=64*1024;var Ra=32*1024;var Vt=["schemaVersion","buildVersion","recordType","execution","custody"],Pa=[...Vt,"recordHash"];var Ba=Object.freeze({signed:new Set(["workflow.signed","legacy.signed"]),submitted:new Set(["workflow.submitted","legacy.broadcast"]),finalized:new Set(["workflow.finalized"]),reorged:new Set(["workflow.reorged"]),orphaned:new Set(["workflow.orphaned"]),compensating:new Set(["workflow.compensating"]),compensated:new Set(["workflow.compensated"])});var Kt=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Me=Object.freeze(["workflow.drafted","workflow.checked","workflow.approval_requested","workflow.approval_granted","workflow.signed","workflow.submitted","workflow.finalized","workflow.reorged","workflow.orphaned","workflow.compensating","workflow.compensated","workflow.failed","workflow.cancelled","workflow.annotated"]),qa=new Set(Me);var Qt=64*1024*1024;var Ja=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),Ga=Object.freeze(["read","simulate"]);var Ya=1440*60;var ic=Object.freeze(["privkey","wif","xprv","seed"]);var sc=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),ac=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var te=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),dc=Object.freeze(Object.fromEntries(te.map((e,n)=>[e,Object.freeze(n+1<te.length?[te[n+1]]:[])])));var er=Object.freeze({intent:"draft",quote_comparison:"draft",simulation:"draft",prepared:"checked",approval:"approval",signed:"signed",broadcast:"submitted",settlement:"finalized",balance_delta:"compensated",position:"compensated"});var rr=Object.freeze(["owner","operator","agent","viewer"]),nr=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),or=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),Gc=Object.freeze(["owner"]),Yc=Object.freeze({ALLOW_ROLE_PERMISSION:"allow.role_permission",DENY_MISSING_CONTEXT:"deny.missing_context",DENY_INVALID_CONTEXT:"deny.invalid_context",DENY_INVALID_REQUEST:"deny.invalid_request",DENY_UNKNOWN_RESOURCE:"deny.unknown_resource",DENY_UNKNOWN_ACTION:"deny.unknown_action",DENY_UNBOUND_OBJECT:"deny.unbound_object",DENY_TENANT_MISMATCH:"deny.tenant_mismatch",DENY_RESOURCE_MISMATCH:"deny.resource_mismatch",DENY_ROLE_PERMISSION:"deny.role_permission",DENY_POLICY_NOT_APPROVER:"deny.policy_not_approver"}),Xc=new Set(rr),Zc=new Set(nr),Qc=new Set(Object.values(or));var ir=Object.freeze({owner:Object.freeze(["tenant:read","tenant:manage","config:read","config:manage","policy:read","policy:manage","grant:read","grant:create","grant:update","grant:delete","grant:manage","workflow:read","workflow:create","workflow:update","workflow:delete","workflow:cancel","workflow:approve","trade:read","trade:prepare","receipt:read","receipt:export","audit:read","audit:export","telemetry:read","telemetry:create","telemetry:export","context:read","context:create","context:update","context:delete","context:manage","context:export","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:delete","lifecycle:manage","lifecycle:approve","lifecycle:export"]),operator:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","workflow:cancel","trade:read","trade:prepare","receipt:read","audit:read","telemetry:read","telemetry:create","context:read","context:create","context:update","context:delete","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:manage"]),agent:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","trade:read","trade:prepare","receipt:read","telemetry:create","context:read","context:create","context:update","lifecycle:read"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read","context:read","lifecycle:read"])}),el=Object.freeze(Object.fromEntries(Object.entries(ir).map(([e,n])=>[e,Object.freeze([...n])])));var sr=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),ar=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),cr=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var ol=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),il=new Set(sr),sl=new Set(ar),al=new Set(cr);var cl=Object.freeze(["authorization","bearer","cookie","credential","password","passphrase","secret","token","privatekey","privkey","seed","mnemonic","keystore","signature","prompt","systemmessage","usermessage","assistantmessage","rawtransaction","signedtransaction","serializedtransaction","transactionbytes","calldata","callbytes","inputdata"]);var ll=Object.freeze({taskId:"x-oracle-task-id",intentId:"x-oracle-intent-id",planId:"x-oracle-plan-id",runId:"x-oracle-run-id",eventId:"x-oracle-event-id"});var wl=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var xl=32*1024*1024;var Al=Object.freeze({1:{name:"ethereum",mode:"mempool-private",endpoints:["https://rpc.flashbots.net/fast","https://rpc.mevblocker.io"]},8453:{name:"base",mode:"sequencer",endpoints:["https://mainnet-sequencer.base.org"]},10:{name:"optimism",mode:"sequencer",endpoints:["https://mainnet-sequencer.optimism.io"]},42161:{name:"arbitrum",mode:"sequencer",endpoints:["https://arb1-sequencer.arbitrum.io/rpc"]},56:{name:"bsc",mode:"mempool-private",endpoints:["https://rpc.48.club","https://bsc.rpc.blxrbdn.com"]},137:{name:"polygon",mode:"mempool-private",endpoints:["https://polygon-bor-rpc.publicnode.com"]},43114:{name:"avalanche",mode:"public-only",endpoints:[]},999:{name:"hyperevm",mode:"public-only",endpoints:[]}});import{createHmac as ur,randomBytes as Dl,timingSafeEqual as dr}from"node:crypto";import fr from"node:fs";import S from"node:path";import{homedir as re}from"node:os";import{join as ne}from"node:path";var qe=process.env.ORACLE_PUBLIC_DESKTOP==="1",lr=qe?process.env.ORACLE_CONFIG_DIR||ne(re(),".config","oracle"):ne(re(),".config","oracle"),Ol=qe?lr:ne(re(),".config","mad-desk");var Rl="0".repeat(64),Ll=Object.freeze({PREPARE:"exec.prepare",SIGN:"exec.sign",BROADCAST:"exec.broadcast",POLICY_REJECT:"policy.reject",AUTH_GRANT:"auth.grant",AUTH_OK:"auth.verify.ok",AUTH_FAIL:"auth.verify.fail"});function j(e){return e==null?"null":typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(j).join(",")+"]":"{"+Object.keys(e).sort().map(t=>JSON.stringify(t)+":"+j(e[t])).join(",")+"}"}var $l=Promise.resolve();function pr(e,n){if(!e)throw new Error("ledger: separate freshness anchor required");let t=a=>{try{return fr.realpathSync(a)}catch{return S.resolve(a)}},r=t(S.dirname(S.resolve(e))),i=t(S.dirname(S.resolve(n))),o=(a,l)=>l===a||l.startsWith(a+S.sep);if(o(r,i)||o(i,r))throw new Error("ledger: separate freshness anchor required")}var oe=(e,n)=>ur("sha256",n).update(j(e)).digest("hex"),mr=(e,n)=>{let t=Buffer.from(String(e)),r=Buffer.from(String(n));return t.length===r.length&&dr(t,r)};function wr(e,n,{sequence:t}={}){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("policy: object required");let r=t===void 0?e:{...e,policySequence:Number(t)};return{policy:r,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:oe(r,n)}}}function He(e,n){if(!e)throw new Error("policy: sequence anchor required");let t;try{t=h(e)}catch{return{sequence:0,present:!1}}let r;try{r=JSON.parse(t)}catch{throw new Error("policy: sequence anchor is unreadable")}if(!mr(r?.integrity?.mac,oe(r?.marker,n)))throw new Error("policy: sequence anchor integrity failed");return{sequence:Number(r?.marker?.policySequence||0),policyMac:r?.marker?.policyMac??null,present:!0,ledgerInitialized:r?.marker?.ledgerInitialized===!0}}function hr(e,n,t,r=null,{ledgerInitialized:i}={}){if(r==null||!String(r))throw new Error("policy: sequence anchor must bind the sealed policy MAC");let o=i===!0;if(i===void 0)try{let l=He(e,t);o=l.present&&l.ledgerInitialized===!0}catch{o=!1}let a={policySequence:Number(n),policyMac:String(r)};o&&(a.ledgerInitialized=!0),g(e,JSON.stringify({marker:a,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:oe(a,t)}})+`
|
|
2
|
+
`),s.fsyncSync(r),s.closeSync(r),r=void 0;let i=s.openSync(t,s.constants.O_RDONLY|s.constants.O_NOFOLLOW),o;try{o=s.fstatSync(i)}finally{s.closeSync(i)}let a=s.lstatSync(p.dirname(e));if(o.nlink!==1||o.dev!==a.dev||o.uid!==process.getuid?.())throw new Error("local-vault: unsafe temporary file");s.renameSync(t,e),s.chmodSync(e,384);let l=s.openSync(p.dirname(e),"r");try{s.fsyncSync(l)}finally{s.closeSync(l)}}catch(i){if(r!==void 0)try{s.closeSync(r)}catch{}try{s.unlinkSync(t)}catch{}throw i}return e}function g(e,n){s.mkdirSync(p.dirname(e),{recursive:!0,mode:448}),U(e);let t=p.join(p.dirname(e),`.${p.basename(e)}.${process.pid}.${O(6).toString("hex")}.tmp`);try{let r=s.openSync(t,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY|s.constants.O_NOFOLLOW,384);try{s.writeFileSync(r,String(n)),s.fsyncSync(r)}finally{s.closeSync(r)}s.renameSync(t,e),s.chmodSync(e,384);let i=s.openSync(p.dirname(e),"r");try{s.fsyncSync(i)}finally{s.closeSync(i)}}catch(r){try{s.unlinkSync(t)}catch{}throw r}}function ht(e,n){try{s.linkSync(e,n)}catch(r){throw r?.code==="EEXIST"?new Error("export destination already exists; choose a new owner-only file"):r}s.chmodSync(n,384),s.unlinkSync(e);let t=s.openSync(p.dirname(n),"r");try{s.fsyncSync(t)}finally{s.closeSync(t)}}function be(e,n){s.mkdirSync(p.dirname(e),{recursive:!0,mode:448}),U(e);let t=p.join(p.dirname(e),`.${p.basename(e)}.${process.pid}.${O(6).toString("hex")}.tmp`),r;try{r=s.openSync(t,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY|s.constants.O_NOFOLLOW,384),s.writeFileSync(r,String(n)),s.fsyncSync(r),s.closeSync(r),r=void 0,ht(t,e)}catch(i){if(r!==void 0)try{s.closeSync(r)}catch{}try{s.unlinkSync(t)}catch{}throw i}}import w from"node:path";import vr from"node:os";import{createHash as Ir,randomBytes as ad}from"node:crypto";import{Interface as ce,keccak256 as ld}from"ethers";import{Transaction as dd}from"@scure/btc-signer";import{ed25519 as pd}from"@noble/curves/ed25519.js";import{Interface as xt,MaxUint256 as Sn,isAddress as An,keccak256 as vn,toUtf8Bytes as In}from"ethers";import{Interface as bt,isAddress as rn}from"ethers";import{isAddress as Yr}from"ethers";var an=new bt(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Et,isAddress as un}from"ethers";var mn=new Et(["function approve(address spender,uint256 amount) returns (bool)"]),wn=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var _n=new xt(["function approve(address spender,uint256 amount) returns (bool)"]);Ee();import{readFileSync as Pn,readdirSync as Bn,existsSync as St}from"node:fs";import{dirname as At,join as C}from"node:path";import{fileURLToPath as vt}from"node:url";var _=At(vt(import.meta.url));function It(){let e=[C(_,"descriptors"),C(_,"clear-sign","descriptors"),C(_,"..","clear-sign","descriptors"),C(_,"..","..","clear-sign","descriptors"),C(_,"..","..","..","clear-sign","descriptors")];for(let n of e)if(St(n))return n;return e[0]}var qn=It();var Mn=(1n<<256n)-1n;import{Address as Yn,NETWORK as Xn,OutScript as Zn,RawTx as Qn,SigHash as eo,TEST_NETWORK as to,Transaction as ro}from"@scure/btc-signer";import{createHash as kt}from"node:crypto";import{base58 as so}from"@scure/base";import{getCompiledTransactionMessageDecoder as co}from"@solana/transaction-messages";var xe=e=>kt("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),lo=new Map([[xe("route"),{name:"route",prefixBytes:0}],[xe("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);import{AsyncLocalStorage as Ot}from"node:async_hooks";var po=new Ot;var Ao=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,vo=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,Io=AbortSignal.prototype.throwIfAborted,ko=EventTarget.prototype.addEventListener,Oo=EventTarget.prototype.removeEventListener,To=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null;var No=64*1024,Co=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});var qo=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var Uo=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"leverage","perp-isolated-margin":"margin","builder-fee-approval":"approveBuilder","hype-stake-deposit":"stake","hype-stake-withdraw":"unstake","hype-delegate":"delegate","hype-undelegate":"delegate"}),Vo=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"updateLeverage","perp-isolated-margin":"updateIsolatedMargin","builder-fee-approval":"approveBuilderFee","hype-stake-deposit":"cDeposit","hype-stake-withdraw":"cWithdraw","hype-delegate":"tokenDelegate","hype-undelegate":"tokenDelegate"});var Go="0x"+"00".repeat(32);var Nt=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),ei=Object.freeze(Nt.map(e=>e[0]));import{base58 as Qs}from"@scure/base";import{Interface as Ne}from"ethers";D();import{TypedDataEncoder as Ki,getAddress as Ji}from"ethers";D();import{TypedDataEncoder as xi,getAddress as Si,isAddress as Ai}from"ethers";var _t=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Rt=Object.freeze({Order:[{name:"salt",type:"uint256"},{name:"maker",type:"address"},{name:"receiver",type:"address"},{name:"makerAsset",type:"address"},{name:"takerAsset",type:"address"},{name:"makingAmount",type:"uint256"},{name:"takingAmount",type:"uint256"},{name:"makerTraits",type:"uint256"}]});import{TypedDataEncoder as $i,getAddress as Pi,isAddress as Bi}from"ethers";var ki=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});D();var Lt=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),zi=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var $t=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),Wi=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var Xi=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var Dt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var ms=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0,delegate:0,identity:0,order:0,cancel:0,leverage:0,margin:0,approveBuilder:0,stake:0,unstake:0});var jt=Object.freeze({"0x04e45aaf":{provider:"uniswap-v3",action:"swap",layout:"router02-exact-input-single"},"0x414bf389":{provider:"uniswap-v3",action:"swap",layout:"swap-router-exact-input-single"},"0xc04b8d59":{provider:"uniswap-v3",action:"swap",layout:"exact-input-deadline"},"0xb858183f":{provider:"uniswap-v3",action:"swap",layout:"exact-input"},"0x5ae401dc":{provider:"uniswap-v3",action:"swap",layout:"multicall-deadline"},"0xa026383e":{provider:"aerodrome",action:"swap",layout:"aerodrome-exact-input-single"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),ws=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),hs=new Ne(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),gs=new Ne(["function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),ys=Object.freeze({"0xa0712d68":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0x1249c58b":{provider:"nft-mint",action:"mint",layout:"mint-no-args"},"0x2db11544":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xefef39a1":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xa6f2ae3a":{provider:"nft-mint",action:"mint",layout:"mint-no-args"}});var Ft=Object.freeze([...Dt]),bs=Object.freeze({...jt});import{ed25519 as Ps}from"@noble/curves/ed25519.js";import{base58 as Ds}from"@scure/base";import{RawTx as Fs,SigHash as qs,Transaction as Ms}from"@scure/btc-signer";import{Transaction as zs,keccak256 as Ws,verifyTypedData as Us}from"ethers";import{encode as Ss}from"@msgpack/msgpack";import{keccak256 as vs,verifyTypedData as Is}from"ethers";var ks=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),Os=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as wa,constants as zt,fchmodSync as ha,fsyncSync as ga,lstatSync as ya,mkdirSync as ba,openSync as Ea,readFileSync as xa,renameSync as Sa,rmSync as Aa,writeFileSync as va}from"node:fs";import{wordlists as fa}from"ethers";var Oa=zt.O_NOFOLLOW??0;import{wordlists as Ca}from"ethers";var _e=64*1024;var Ra=32*1024;var Vt=["schemaVersion","buildVersion","recordType","execution","custody"],Pa=[...Vt,"recordHash"];var Ba=Object.freeze({signed:new Set(["workflow.signed","legacy.signed"]),submitted:new Set(["workflow.submitted","legacy.broadcast"]),finalized:new Set(["workflow.finalized"]),reorged:new Set(["workflow.reorged"]),orphaned:new Set(["workflow.orphaned"]),compensating:new Set(["workflow.compensating"]),compensated:new Set(["workflow.compensated"])});var Kt=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),qe=Object.freeze(["workflow.drafted","workflow.checked","workflow.approval_requested","workflow.approval_granted","workflow.signed","workflow.submitted","workflow.finalized","workflow.reorged","workflow.orphaned","workflow.compensating","workflow.compensated","workflow.failed","workflow.cancelled","workflow.annotated"]),Ma=new Set(qe);var Qt=64*1024*1024;var Ja=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),Ga=Object.freeze(["read","simulate"]);var Ya=1440*60;var ic=Object.freeze(["privkey","wif","xprv","seed"]);var sc=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),ac=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var te=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),dc=Object.freeze(Object.fromEntries(te.map((e,n)=>[e,Object.freeze(n+1<te.length?[te[n+1]]:[])])));var er=Object.freeze({intent:"draft",quote_comparison:"draft",simulation:"draft",prepared:"checked",approval:"approval",signed:"signed",broadcast:"submitted",settlement:"finalized",balance_delta:"compensated",position:"compensated"});var rr=Object.freeze(["owner","operator","agent","viewer"]),nr=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),or=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),Gc=Object.freeze(["owner"]),Yc=Object.freeze({ALLOW_ROLE_PERMISSION:"allow.role_permission",DENY_MISSING_CONTEXT:"deny.missing_context",DENY_INVALID_CONTEXT:"deny.invalid_context",DENY_INVALID_REQUEST:"deny.invalid_request",DENY_UNKNOWN_RESOURCE:"deny.unknown_resource",DENY_UNKNOWN_ACTION:"deny.unknown_action",DENY_UNBOUND_OBJECT:"deny.unbound_object",DENY_TENANT_MISMATCH:"deny.tenant_mismatch",DENY_RESOURCE_MISMATCH:"deny.resource_mismatch",DENY_ROLE_PERMISSION:"deny.role_permission",DENY_POLICY_NOT_APPROVER:"deny.policy_not_approver"}),Xc=new Set(rr),Zc=new Set(nr),Qc=new Set(Object.values(or));var ir=Object.freeze({owner:Object.freeze(["tenant:read","tenant:manage","config:read","config:manage","policy:read","policy:manage","grant:read","grant:create","grant:update","grant:delete","grant:manage","workflow:read","workflow:create","workflow:update","workflow:delete","workflow:cancel","workflow:approve","trade:read","trade:prepare","receipt:read","receipt:export","audit:read","audit:export","telemetry:read","telemetry:create","telemetry:export","context:read","context:create","context:update","context:delete","context:manage","context:export","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:delete","lifecycle:manage","lifecycle:approve","lifecycle:export"]),operator:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","workflow:cancel","trade:read","trade:prepare","receipt:read","audit:read","telemetry:read","telemetry:create","context:read","context:create","context:update","context:delete","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:manage"]),agent:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","trade:read","trade:prepare","receipt:read","telemetry:create","context:read","context:create","context:update","lifecycle:read"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read","context:read","lifecycle:read"])}),el=Object.freeze(Object.fromEntries(Object.entries(ir).map(([e,n])=>[e,Object.freeze([...n])])));var sr=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),ar=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),cr=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var ol=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),il=new Set(sr),sl=new Set(ar),al=new Set(cr);var cl=Object.freeze(["authorization","bearer","cookie","credential","password","passphrase","secret","token","privatekey","privkey","seed","mnemonic","keystore","signature","prompt","systemmessage","usermessage","assistantmessage","rawtransaction","signedtransaction","serializedtransaction","transactionbytes","calldata","callbytes","inputdata"]);var ll=Object.freeze({taskId:"x-oracle-task-id",intentId:"x-oracle-intent-id",planId:"x-oracle-plan-id",runId:"x-oracle-run-id",eventId:"x-oracle-event-id"});var wl=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var xl=32*1024*1024;var Al=Object.freeze({1:{name:"ethereum",mode:"mempool-private",endpoints:["https://rpc.flashbots.net/fast","https://rpc.mevblocker.io"]},8453:{name:"base",mode:"sequencer",endpoints:["https://mainnet-sequencer.base.org"]},10:{name:"optimism",mode:"sequencer",endpoints:["https://mainnet-sequencer.optimism.io"]},42161:{name:"arbitrum",mode:"sequencer",endpoints:["https://arb1-sequencer.arbitrum.io/rpc"]},56:{name:"bsc",mode:"mempool-private",endpoints:["https://rpc.48.club","https://bsc.rpc.blxrbdn.com"]},137:{name:"polygon",mode:"mempool-private",endpoints:["https://polygon-bor-rpc.publicnode.com"]},43114:{name:"avalanche",mode:"public-only",endpoints:[]},999:{name:"hyperevm",mode:"public-only",endpoints:[]}});import{createHmac as ur,randomBytes as Dl,timingSafeEqual as dr}from"node:crypto";import fr from"node:fs";import S from"node:path";import{homedir as re}from"node:os";import{join as ne}from"node:path";var Me=process.env.ORACLE_PUBLIC_DESKTOP==="1",lr=Me?process.env.ORACLE_CONFIG_DIR||ne(re(),".config","oracle"):ne(re(),".config","oracle"),Ol=Me?lr:ne(re(),".config","mad-desk");var Rl="0".repeat(64),Ll=Object.freeze({PREPARE:"exec.prepare",SIGN:"exec.sign",BROADCAST:"exec.broadcast",POLICY_REJECT:"policy.reject",AUTH_GRANT:"auth.grant",AUTH_OK:"auth.verify.ok",AUTH_FAIL:"auth.verify.fail"});function F(e){return e==null?"null":typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(F).join(",")+"]":"{"+Object.keys(e).sort().map(t=>JSON.stringify(t)+":"+F(e[t])).join(",")+"}"}var $l=Promise.resolve();function pr(e,n){if(!e)throw new Error("ledger: separate freshness anchor required");let t=a=>{try{return fr.realpathSync(a)}catch{return S.resolve(a)}},r=t(S.dirname(S.resolve(e))),i=t(S.dirname(S.resolve(n))),o=(a,l)=>l===a||l.startsWith(a+S.sep);if(o(r,i)||o(i,r))throw new Error("ledger: separate freshness anchor required")}var oe=(e,n)=>ur("sha256",n).update(F(e)).digest("hex"),mr=(e,n)=>{let t=Buffer.from(String(e)),r=Buffer.from(String(n));return t.length===r.length&&dr(t,r)};function wr(e,n,{sequence:t}={}){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("policy: object required");let r=t===void 0?e:{...e,policySequence:Number(t)};return{policy:r,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:oe(r,n)}}}function He(e,n){if(!e)throw new Error("policy: sequence anchor required");let t;try{t=h(e)}catch{return{sequence:0,present:!1}}let r;try{r=JSON.parse(t)}catch{throw new Error("policy: sequence anchor is unreadable")}if(!mr(r?.integrity?.mac,oe(r?.marker,n)))throw new Error("policy: sequence anchor integrity failed");return{sequence:Number(r?.marker?.policySequence||0),policyMac:r?.marker?.policyMac??null,present:!0,ledgerInitialized:r?.marker?.ledgerInitialized===!0}}function hr(e,n,t,r=null,{ledgerInitialized:i}={}){if(r==null||!String(r))throw new Error("policy: sequence anchor must bind the sealed policy MAC");let o=i===!0;if(i===void 0)try{let l=He(e,t);o=l.present&&l.ledgerInitialized===!0}catch{o=!1}let a={policySequence:Number(n),policyMac:String(r)};o&&(a.ledgerInitialized=!0),g(e,JSON.stringify({marker:a,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:oe(a,t)}})+`
|
|
3
3
|
`)}function ze(e,n,t,{sequenceAnchorFile:r}={}){let i=h(n);if(!r)throw new Error("policy: sequence anchor required");let o=He(r,i);pr(r,e);let a=Number(o.sequence||0)+1,l=wr(t,i,{sequence:a});hr(r,a,i,l?.integrity?.mac??null),g(e,JSON.stringify(l,null,2)+`
|
|
4
|
-
`)}import{Wallet as ie}from"ethers";import{base58 as se}from"@scure/base";import{ed25519 as Ke}from"@noble/curves/ed25519.js";import{NETWORK as Je,TEST_NETWORK as Ge,WIF as gr,p2wpkh as We}from"@scure/btc-signer";import{pubECDSA as yr}from"@scure/btc-signer/utils.js";var
|
|
4
|
+
`)}import{Wallet as ie}from"ethers";import{base58 as se}from"@scure/base";import{ed25519 as Ke}from"@noble/curves/ed25519.js";import{NETWORK as Je,TEST_NETWORK as Ge,WIF as gr,p2wpkh as We}from"@scure/btc-signer";import{pubECDSA as yr}from"@scure/btc-signer/utils.js";var q=e=>{let n=String(e||"").trim().replace(/^0x/i,"");return!/^[0-9a-fA-F]+$/.test(n)||n.length%2?null:Buffer.from(n,"hex")},br=e=>{let n=String(e||"").trim();if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(n))return null;let t=Buffer.from(n,"base64");return t.toString("base64")===n?t:null},Ue=e=>{let n=String(e||"").trim();try{let t=Buffer.from(se.decode(n));return se.encode(t)===n?t:null}catch{return null}},ae=e=>{if(!(e instanceof Uint8Array))throw new Error("sol: key bytes required");if(e.length!==32&&e.length!==64)throw new Error("sol: expected 32-byte private key material");let n=Buffer.from(e.subarray(0,32));if(e.length===64){let t=Buffer.from(e.subarray(32,64)),r=Buffer.from(Ke.getPublicKey(n));if(!t.equals(r))throw new Error("sol: supplied public key does not match seed")}return n},Ve=e=>!(e instanceof Uint8Array)||e.length!==32&&e.length!==64?null:Buffer.from(e.subarray(0,32)),y=(e,n)=>{if(n==="sol")return ae(e);if(!(e instanceof Uint8Array))throw new Error(`${n}: key bytes required`);if(e.length===32)return Buffer.from(e);if(e.length===64)return Buffer.from(e.subarray(0,32));throw new Error(`${n}: expected 32-byte private key material`)},Er=(e,n)=>{if(!Array.isArray(e))throw new Error(`${n}: expected byte array`);let t=Buffer.alloc(e.length);for(let r=0;r<e.length;r++){let i=e[r];if(typeof i!="number"||!Number.isSafeInteger(i)||i<0||i>255)throw new Error(`${n}: expected integer bytes in 0..255`);t[r]=i}return y(t,n)};function b(e,n){let t=String(n||"").trim();if(e==="evm")return new ie(t).privateKey;if(e==="btc")for(let o of[Je,Ge])try{return Buffer.from(gr(o).decode(t))}catch{}if(e==="sol"){if(/^hex:/i.test(t)){let c=q(t.slice(4));if(!c)throw new Error("sol: invalid explicit hex private key");return y(c,"sol")}if(/^base58:/i.test(t)){let c=Ue(t.slice(7));if(!Ve(c))throw new Error("sol: invalid explicit base58 private key");return ae(c)}if(/^0x/i.test(t)){let c=q(t);if(!c)throw new Error("sol: invalid explicit hex private key");return y(c,"sol")}let o=q(t),a=o&&(o.length===32||o.length===64)?y(o,"sol"):null,l=Ue(t),f=Ve(l);if(a&&f&&!a.equals(f))throw new Error("sol: ambiguous private key format; prefix with hex: or base58:");if(f)return ae(l);if(o)return y(o,"sol")}let r=q(t);if(r)return e==="evm"?new ie(`0x${r.toString("hex")}`).privateKey:y(r,e);let i=br(t);if(i)return y(i,e);if(t.startsWith("[")||t.startsWith("{")){let o=JSON.parse(t);if(Array.isArray(o))return Er(o,e);let a=o.privateKey??o.secretKey??o.key;if(a)return b(e,Array.isArray(a)?JSON.stringify(a):String(a))}throw new Error(`${e}: unsupported private key format`)}function A(e,n){if(e==="evm"){let t=new ie(String(n));return{kind:e,secret:t.privateKey,addresses:[t.address.toLowerCase()]}}if(e==="btc"){let t=y(n,"btc"),r=yr(t);return{kind:e,secret:t.toString("hex"),addresses:[We(r,Je).address,We(r,Ge).address]}}if(e==="sol"){let t=y(n,"sol");return{kind:e,secret:t.toString("hex"),addresses:[se.encode(Ke.getPublicKey(t))]}}throw new Error(`unsupported signer kind ${e}`)}function M(e,n={}){let t=Buffer.isBuffer(e)?e.toString("utf8"):String(e||"");if(String(n.kind||"")!=="multichain")return{[n.kind||"evm"]:A(n.kind||"evm",b(n.kind||"evm",t))};let r=JSON.parse(t),i={};for(let o of["evm","btc","sol"])r[o]&&(i[o]=A(o,b(o,r[o])));if(r.cex!==void 0){if(!r.cex||typeof r.cex!="object"||Array.isArray(r.cex))throw new Error("local-vault: cex credential records invalid");i.cex={};for(let[o,a]of Object.entries(r.cex)){if(!/^[A-Za-z0-9._-]{1,64}$/.test(o)||!a||typeof a!="object")throw new Error("local-vault: cex credential record invalid");if(!/^(?:binance|bybit|okx|coinbase)$/.test(a.venue)||!/^[A-Za-z0-9._-]{1,64}$/.test(a.accountId||""))throw new Error("local-vault: cex credential binding invalid");let l=(c,d=!0)=>{let u=a[c];if(!(!d&&u===void 0)){if(!Array.isArray(u)||u.length<4||u.some(I=>!Number.isInteger(I)||I<0||I>255))throw new Error("local-vault: cex credential bytes invalid");return Buffer.from(u)}},f=a.apiSecretEncoding;if(f!==(a.venue==="coinbase"?"base64":"raw"))throw new Error("local-vault: explicit cex secret encoding refused");i.cex[o]=Object.freeze({venue:a.venue,accountId:a.accountId,apiKeyBytes:l("apiKeyBytes"),apiSecretBytes:l("apiSecretBytes"),apiSecretEncoding:f,passphraseBytes:l("passphraseBytes",!1)})}if(!Object.keys(i.cex).length)throw new Error("local-vault: empty cex credential records refused");Object.freeze(i.cex)}if(!Object.keys(i).length)throw new Error("local-vault: multichain vault is empty");return i}function Ye(e){let n={};for(let t of["evm","btc","sol"])e[t]&&(n[t]=t==="evm"?e[t].secret:`0x${e[t].secret}`);return e.cex&&(n.cex=Object.fromEntries(Object.entries(e.cex).map(([t,r])=>[t,{venue:r.venue,accountId:r.accountId,apiKeyBytes:[...r.apiKeyBytes],apiSecretBytes:[...r.apiSecretBytes],apiSecretEncoding:r.apiSecretEncoding,...r.passphraseBytes?{passphraseBytes:[...r.passphraseBytes]}:{}}]))),Buffer.from(JSON.stringify(n))}function Xe(e){let n={};for(let[t,r]of Object.entries(e))r?.addresses&&(n[t]=r.addresses);return{kind:"multichain",address:null,addresses:n}}var Ql=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),eu=Object.freeze(["binance","bybit","okx","coinbase"]),tu=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),ru=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),nu=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),ou=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),iu=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),su=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),au=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),cu=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),lu=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Ar=Object.freeze({binance:Object.freeze({create:["POST","/api/v3/order"],cancel:["DELETE","/api/v3/order"],status:["GET","/api/v3/order"]}),bybit:Object.freeze({create:["POST","/v5/order/create"],cancel:["POST","/v5/order/cancel"],status:["GET","/v5/order/realtime"]}),okx:Object.freeze({create:["POST","/api/v5/trade/order"],cancel:["POST","/api/v5/trade/cancel-order"],status:["GET","/api/v5/trade/order"]}),coinbase:Object.freeze({create:["POST","/orders"],cancel:["DELETE","/orders/{order_id}"],status:["GET","/orders/{order_id}"]})}),Ze=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var bu=256*1024;var Md=new ce(["function collection() view returns (address)","function token() view returns (address)","function robinhoodSwapFeeWei() view returns (uint256)","function quoteSpecificBuy(uint256 tokenId) view returns (uint256 totalCost,uint256 baseCost,uint256 fee,uint256 protocolFee,bool available)","function quoteSellNFT() view returns (uint256 netPayout,uint256 grossPayout,uint256 fee,uint256 protocolFee)","function inventory(uint256 tokenId) view returns (bool)","function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Hd=new ce(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),zd=new ce(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function Qe(e){let n=process.env.ORACLE_SIGNER_STATE_DIR||w.join(process.env.XDG_STATE_HOME||w.join(vr.homedir(),".local","state"),"oracle"),t=Ir("sha256").update(w.resolve(e)).digest("hex").slice(0,16);return{vault:w.join(e,"vault.json"),policy:w.join(e,"signer-policy.json"),policyKey:w.join(e,"policy-integrity-key"),policyAnchor:w.join(n,`signer-policy-${t}.high-water`),ledger:w.join(e,"signer-ledger.json"),ledgerAnchor:w.join(n,`signer-ledger-${t}.high-water`),executionOutbox:w.join(e,"signer-execution-outbox.json"),cexOrders:w.join(e,"cex-orders.json"),cexOrdersAnchor:w.join(n,`cex-orders-${t}.high-water`),token:w.join(e,"signer-token"),lock:w.join(n,`signer-${t}.lock`),workflowLedger:w.join(e,"workflow-events.jsonl")}}import{randomBytes as kr}from"node:crypto";import{Wallet as et}from"ethers";var rt=`oracle sign init|import|import-phrase|export|policy|status|unlock|lock|doctor
|
|
5
5
|
|
|
6
6
|
oracle sign init [--passphrase-file <0600 file>]
|
|
7
7
|
oracle sign import --kind evm|btc|sol --key-file <0600 file> [--passphrase-file <0600 file>]
|
|
@@ -26,7 +26,7 @@ They are never accepted as argument values or inherited environment variables.`,
|
|
|
26
26
|
`),0}if(r==="doctor"){let c=[];return m.existsSync(o.vault)||c.push("vault missing"),m.existsSync(o.policy)||c.push("policy missing (empty allowlists fail closed)"),t.write(c.length?`Signer not ready: ${c.join("; ")}
|
|
27
27
|
`:`Signer files ready; explicitly unlock locally before a bounded signing session.
|
|
28
28
|
`),c.length?1:0}if(r==="policy"){if(!m.existsSync(o.vault)||!m.existsSync(o.policyKey))throw new Error("initialize the local signer before sealing policy");let c=v(e,"--policy-file");if(!c)throw new Error("policy requires --policy-file <0600 JSON file>");let d;try{d=JSON.parse(h(c))}catch{throw new Error("policy file must contain valid JSON")}for(let u of["surfaces","actions","chains","destinations","owners"])if(!Array.isArray(d[u])||d[u].length===0)throw new Error(`policy: ${u} allowlist is empty`);return ze(o.policy,o.policyKey,d,{sequenceAnchorFile:o.policyAnchor}),t.write(`Signer policy sealed with local integrity and freshness protection.
|
|
29
|
-
`),0}if(r==="export"){if(!e.includes("--acknowledge-raw-key-export"))throw new Error("export requires --acknowledge-raw-key-export");if(!m.existsSync(o.vault))throw new Error("local signer vault is not initialized");let c=tt(e),d=v(e,"--output-file");if(!d)throw new Error("export requires --output-file <0600 file>");let u=H.resolve(d),I=await le(e,n),ue=N(o.vault),de=T(ue,I);try{let z=
|
|
29
|
+
`),0}if(r==="export"){if(!e.includes("--acknowledge-raw-key-export"))throw new Error("export requires --acknowledge-raw-key-export");if(!m.existsSync(o.vault))throw new Error("local signer vault is not initialized");let c=tt(e),d=v(e,"--output-file");if(!d)throw new Error("export requires --output-file <0600 file>");let u=H.resolve(d),I=await le(e,n),ue=N(o.vault),de=T(ue,I);try{let z=M(de,ue.meta)[c];if(!z)throw new Error(`local signer has no ${c} key`);let nt=c==="evm"?z.secret:`0x${z.secret.replace(/^0x/,"")}`;be(u,`${nt}
|
|
30
30
|
`),t.write(`Private key exported to owner-only file ${u}. Protect it as wallet custody.
|
|
31
|
-
`)}finally{de.fill(0)}return 0}if(r!=="init"&&r!=="import"&&r!=="import-phrase")throw new Error(`unknown subcommand '${r}'`);let a=await le(e,n),l={};if(m.existsSync(o.vault)){if(r==="init")throw new Error("local signer vault already exists");let c=N(o.vault),d=T(c,a);try{l=
|
|
31
|
+
`)}finally{de.fill(0)}return 0}if(r!=="init"&&r!=="import"&&r!=="import-phrase")throw new Error(`unknown subcommand '${r}'`);let a=await le(e,n),l={};if(m.existsSync(o.vault)){if(r==="init")throw new Error("local signer vault already exists");let c=N(o.vault),d=T(c,a);try{l=M(d,c.meta)}finally{d.fill(0)}}if(r==="init"){let c=et.createRandom();l.evm=A("evm",b("evm",c.privateKey))}else if(r==="import"){let c=tt(e),d=v(e,"--key-file");if(!d)throw new Error("import requires --key-file <0600 file>");l[c]=A(c,b(c,h(d)))}else{let c=v(e,"--phrase-file");if(!c)throw new Error("import-phrase requires --phrase-file <0600 file>");if(l.evm&&!e.includes("--replace-evm"))throw new Error("local signer already holds an evm key; pass --replace-evm to overwrite it");let d=et.fromPhrase(h(c).trim().replace(/\s+/g," "));l.evm=A("evm",b("evm",d.privateKey))}Nr(o,ge(Ye(l),a,Xe(l)));let f=Object.entries(l).map(([c,d])=>`${c}:${Tr(d)}`).join(" ");return t.write(`Encrypted local vault initialized for ${f}. Configure sealed policy rails before starting a signer session.
|
|
32
32
|
`),0}var tf={name:"sign",summary:"manage the encrypted self-hosted signing vault",usage:rt,run:e=>Cr(e.argv||[])};export{tf as default,Nr as publishLockedVault,Cr as run};
|