@oracle-agent/oracle 0.20.2 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import{realpathSync as F}from"node:fs";import{fileURLToPath as he}from"node:url";import _ from"node:fs";import j from"node:path";import{pathToFileURL as le}from"node:url";import g from"node:fs";import q from"node:os";import a from"node:path";import{fileURLToPath as K}from"node:url";var G=a.dirname(K(import.meta.url)),p=a.resolve(G,"../..");function d(){return process.env.ORACLE_FAKE_HOME||q.homedir()}function S(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function k(){return S()?process.env.ORACLE_CONFIG_DIR||a.join(d(),".config","oracle"):a.join(d(),".config","oracle")}function B(){return a.join(k(),"exec.env")}function C(){return a.join(k(),"desk.json")}function L(){return a.join(k(),"env")}function h({force:r=!1}={}){if(h._done&&!r)return h._result||null;h._done=!0;let s={},e=(c,t)=>{if(t==null)return;let o=String(t).trim();o&&(process.env[c]!=null&&String(process.env[c]).trim()!==""||(process.env[c]=o,s[c]=o))};try{let c=L();if(g.existsSync(c))for(let t of g.readFileSync(c,"utf8").split(/\r?\n/)){let o=t.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!o||o[2].startsWith("#"))continue;let i=o[2];(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),e(o[1],i)}}catch{}try{let c=C();if(g.existsSync(c)){let t=JSON.parse(g.readFileSync(c,"utf8"));t&&typeof t=="object"&&(e("ORACLE_DESK_URL",t.deskUrl||t.dataUrl||t.url),e("ORACLE_DATA_URL",t.dataUrl||t.deskUrl||t.url),e("ORACLE_API_URL",t.apiUrl||t.dataUrl||t.deskUrl),e("ORACLE_PUBLIC_URL",t.publicUrl||t.deskUrl||t.dataUrl),e("ORACLE_EXEC_URL",t.execUrl),e("MAD_DESK_URL",t.deskUrl||t.dataUrl))}}catch{}let n=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return n&&(e("ORACLE_DESK_URL",n),e("ORACLE_DATA_URL",n),e("ORACLE_API_URL",n),e("ORACLE_PUBLIC_URL",n),e("MAD_DESK_URL",n)),h._result=Object.keys(s).length?s:null,h._result}try{h()}catch{}function J(){return process.env.HERMES_HOME?a.resolve(process.env.HERMES_HOME):a.join(d(),".hermes")}function W(){return a.join(d(),".claude.json")}function z(r=process.cwd()){return a.join(r,".mcp.json")}function V(){return process.platform==="darwin"?a.join(d(),"Library","Application Support","Claude","claude_desktop_config.json"):a.join(d(),".config","Claude","claude_desktop_config.json")}function Y(){return a.join(d(),".codex","config.toml")}function P(){return a.join(k(),"connectors")}function Q(){return a.join(P(),"chatgpt-openapi.json")}function X(){return a.join(k(),"active-chain.json")}function R(r){let s=[a.join(p,"bin",r),a.join(p,"dist","bin",r),a.join(p,"..","bin",r)];return s.find(e=>g.existsSync(e))||s[0]}function Z(r){return g.mkdirSync(r,{recursive:!0}),r}var U={homeDir:d,isPublicDesktop:S,oracleConfigDir:k,oracleExecEnvPath:B,oracleDeskJsonPath:C,oracleEnvFilePath:L,loadDeskRouting:h,hermesRoot:J,activeChainPath:X,claudeCodeUserConfigPath:W,claudeCodeProjectMcpPath:z,claudeDesktopConfigPath:V,codexConfigPath:Y,chatgptConnectorDir:P,chatgptOpenApiPath:Q,packageBin:R,ensureDir:Z,PACKAGE_ROOT:p};import f from"node:fs";import u from"node:path";import{spawnSync as ee}from"node:child_process";import{createRequire as re}from"node:module";import{fileURLToPath as te}from"node:url";var ne=u.dirname(te(import.meta.url)),oe=u.resolve(ne,"../.."),se=Object.freeze(["oracle-vault","oracle-credential","oracle-signer","oracle-runner","oracle-agentic-init","oracle-agentic-doctor","oracle-control-mcp","oracle-operator-caps"]),b=Object.freeze(["vault","credential","signer","runner","sign"]),T=`oracle: signing is unavailable in the public package.
2
+ import{realpathSync as K}from"node:fs";import{fileURLToPath as je}from"node:url";import O from"node:fs";import b from"node:path";import{pathToFileURL as ge}from"node:url";import g from"node:fs";import B from"node:os";import i from"node:path";import{fileURLToPath as J}from"node:url";var V=i.dirname(J(import.meta.url)),p=i.resolve(V,"../..");function d(){return process.env.ORACLE_FAKE_HOME||B.homedir()}function S(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function y(){return S()?process.env.ORACLE_CONFIG_DIR||i.join(d(),".config","oracle"):i.join(d(),".config","oracle")}function W(){return i.join(y(),"exec.env")}function C(){return i.join(y(),"desk.json")}function L(){return i.join(y(),"env")}function h({force:e=!1}={}){if(h._done&&!e)return h._result||null;h._done=!0;let n={},r=(a,t)=>{if(t==null)return;let o=String(t).trim();o&&(process.env[a]!=null&&String(process.env[a]).trim()!==""||(process.env[a]=o,n[a]=o))};try{let a=L();if(g.existsSync(a))for(let t of g.readFileSync(a,"utf8").split(/\r?\n/)){let o=t.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!o||o[2].startsWith("#"))continue;let c=o[2];(c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'"))&&(c=c.slice(1,-1)),r(o[1],c)}}catch{}try{let a=C();if(g.existsSync(a)){let t=JSON.parse(g.readFileSync(a,"utf8"));t&&typeof t=="object"&&(r("ORACLE_DESK_URL",t.deskUrl||t.dataUrl||t.url),r("ORACLE_DATA_URL",t.dataUrl||t.deskUrl||t.url),r("ORACLE_API_URL",t.apiUrl||t.dataUrl||t.deskUrl),r("ORACLE_PUBLIC_URL",t.publicUrl||t.deskUrl||t.dataUrl),r("ORACLE_EXEC_URL",t.execUrl),r("MAD_DESK_URL",t.deskUrl||t.dataUrl))}}catch{}let s=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return s&&(r("ORACLE_DESK_URL",s),r("ORACLE_DATA_URL",s),r("ORACLE_API_URL",s),r("ORACLE_PUBLIC_URL",s),r("MAD_DESK_URL",s)),h._result=Object.keys(n).length?n:null,h._result}try{h()}catch{}function z(){return process.env.HERMES_HOME?i.resolve(process.env.HERMES_HOME):i.join(d(),".hermes")}function Y(){return i.join(d(),".claude.json")}function Q(e=process.cwd()){return i.join(e,".mcp.json")}function X(){return process.platform==="darwin"?i.join(d(),"Library","Application Support","Claude","claude_desktop_config.json"):i.join(d(),".config","Claude","claude_desktop_config.json")}function Z(){return i.join(d(),".codex","config.toml")}function P(){return i.join(y(),"connectors")}function ee(){return i.join(P(),"chatgpt-openapi.json")}function re(){return i.join(y(),"active-chain.json")}function _(e){let n=[i.join(p,"bin",e),i.join(p,"dist","bin",e),i.join(p,"..","bin",e)];return n.find(r=>g.existsSync(r))||n[0]}function te(e){return g.mkdirSync(e,{recursive:!0}),e}var U={homeDir:d,isPublicDesktop:S,oracleConfigDir:y,oracleExecEnvPath:W,oracleDeskJsonPath:C,oracleEnvFilePath:L,loadDeskRouting:h,hermesRoot:z,activeChainPath:re,claudeCodeUserConfigPath:Y,claudeCodeProjectMcpPath:Q,claudeDesktopConfigPath:X,codexConfigPath:Z,chatgptConnectorDir:P,chatgptOpenApiPath:ee,packageBin:_,ensureDir:te,PACKAGE_ROOT:p};import{execFile as ne}from"node:child_process";import{existsSync as Ue,mkdirSync as Te,readFileSync as oe,realpathSync as De,writeFileSync as $e}from"node:fs";import T from"node:path";import{promisify as se}from"node:util";var He=se(ne);var Me=1440*60*1e3;function D(e,n){let r=t=>String(t).replace(/^v/,"").split("-")[0].split(".").map(o=>Number.parseInt(o,10)||0),s=r(e),a=r(n);for(let t=0;t<Math.max(s.length,a.length);t+=1){let o=s[t]??0,c=a[t]??0;if(o>c)return 1;if(o<c)return-1}return 0}function ae(e){let n=e?.stateDir||T.join(process.env.HOME||".",".oracle");return T.join(n,"update-check.json")}function $(e){try{return JSON.parse(oe(ae(e),"utf8"))}catch{return null}}import f from"node:fs";import u from"node:path";import{spawnSync as ce}from"node:child_process";import{createRequire as ie}from"node:module";import{fileURLToPath as le}from"node:url";var ue=u.dirname(le(import.meta.url)),pe=u.resolve(ue,"../.."),de=Object.freeze(["oracle-vault","oracle-credential","oracle-signer","oracle-runner","oracle-agentic-init","oracle-agentic-doctor","oracle-control-mcp","oracle-operator-caps"]),R=Object.freeze(["vault","credential","signer","runner","sign"]),I=`oracle: signing is unavailable in the public package.
3
3
 
4
4
  The public 'oracle' package is prepare-only and never handles keys.
5
5
  Owner-operated signing is private infrastructure and has no public npm install.
6
6
  Review and sign prepared artifacts in your own wallet instead.
7
7
 
8
8
  Nothing about your read/research/prepare setup is affected.
9
- `,ce="hint: run 'oracle sign init' to provision keys, or 'oracle sign doctor --json' for detail.";function D(r){let s={};for(let e of se){let n=[u.join(r,e),u.join(r,`${e}.mjs`),u.join(r,`${e}.js`)];for(let c of n)if(f.existsSync(c)&&f.statSync(c).isFile()){s[e]=c;break}}return s}function ie(r){let s=u.dirname(r);for(;s!==u.dirname(s);){let e=u.join(s,"package.json");if(f.existsSync(e))try{let n=JSON.parse(f.readFileSync(e,"utf8"));if(n.name==="@oracle-agent/operator")return{root:s,pkg:n}}catch{}s=u.dirname(s)}return null}function ae(r){for(let s of r)try{let e=re(u.join(s,"package.json")),n;try{let l=e.resolve("@oracle-agent/operator/package.json");n={root:u.dirname(l),pkg:JSON.parse(f.readFileSync(l,"utf8"))}}catch{let l=e.resolve("@oracle-agent/operator");n=ie(l)}if(!n)continue;let{root:c,pkg:t}=n,o=t.bin||{},i={};for(let[l,m]of Object.entries(o))i[l]=u.resolve(c,m);let E=D(u.join(c,"bin"));for(let[l,m]of Object.entries(E))i[l]||(i[l]=m);return{ok:!0,binDir:u.join(c,"bin"),version:t.version||"unknown",bins:i,source:`require:${s}`}}catch{}return null}function y(){if(process.env.ORACLE_PUBLIC_DESKTOP==="1")return{ok:!1,source:"public-desktop"};let r=process.env.ORACLE_OPERATOR_BIN_DIR;if(r){let e=u.resolve(r);if(!f.existsSync(e))return{ok:!1};let n=D(e);if(!Object.keys(n).length)return{ok:!1};let c="unknown",t=u.resolve(e,"../package.json");if(f.existsSync(t))try{c=JSON.parse(f.readFileSync(t,"utf8")).version||c}catch{}return{ok:!0,binDir:e,version:c,bins:n,source:"env:ORACLE_OPERATOR_BIN_DIR"}}return ae([process.cwd(),oe])||{ok:!1}}function x(r=process.stderr){r.write(T),T.endsWith(`
10
- `)||r.write(`
11
- `)}function I(r,s=[],e={}){let n=y();if(!n.ok)return x(e.stderr||process.stderr),3;let c=n.bins[r];if(!c)return(e.stderr||process.stderr).write(`oracle: operator bin '${r}' not found in resolved operator (${n.source})
12
- `),3;let t=e.stdio||"inherit",o=/\.(mjs|cjs|js)$/.test(c),i=o?process.execPath:c,E=o?[c,...s]:[...s],l=ee(i,E,{stdio:t,env:e.env||process.env,cwd:e.cwd||process.cwd(),encoding:t==="pipe"?"utf8":void 0});if(l.error)return(e.stderr||process.stderr).write(`oracle: failed to spawn ${r}: ${l.error.message}
13
- `),1;let m=typeof l.status=="number"?l.status:1;return m!==0&&e.appendHintOnError&&(e.stderr||process.stderr).write(ce+`
14
- `),t==="pipe"?{code:m,stdout:l.stdout||"",stderr:l.stderr||""}:m}var ue="oracle \u2014 self-custody multichain agent control plane",pe=`READ / RESEARCH (no keys, this package)
9
+ `,fe="hint: run 'oracle sign init' to provision keys, or 'oracle sign doctor --json' for detail.";function N(e){let n={};for(let r of de){let s=[u.join(e,r),u.join(e,`${r}.mjs`),u.join(e,`${r}.js`)];for(let a of s)if(f.existsSync(a)&&f.statSync(a).isFile()){n[r]=a;break}}return n}function me(e){let n=u.dirname(e);for(;n!==u.dirname(n);){let r=u.join(n,"package.json");if(f.existsSync(r))try{let s=JSON.parse(f.readFileSync(r,"utf8"));if(s.name==="@oracle-agent/operator")return{root:n,pkg:s}}catch{}n=u.dirname(n)}return null}function he(e){for(let n of e)try{let r=ie(u.join(n,"package.json")),s;try{let l=r.resolve("@oracle-agent/operator/package.json");s={root:u.dirname(l),pkg:JSON.parse(f.readFileSync(l,"utf8"))}}catch{let l=r.resolve("@oracle-agent/operator");s=me(l)}if(!s)continue;let{root:a,pkg:t}=s,o=t.bin||{},c={};for(let[l,m]of Object.entries(o))c[l]=u.resolve(a,m);let j=N(u.join(a,"bin"));for(let[l,m]of Object.entries(j))c[l]||(c[l]=m);return{ok:!0,binDir:u.join(a,"bin"),version:t.version||"unknown",bins:c,source:`require:${n}`}}catch{}return null}function k(){if(process.env.ORACLE_PUBLIC_DESKTOP==="1")return{ok:!1,source:"public-desktop"};let e=process.env.ORACLE_OPERATOR_BIN_DIR;if(e){let r=u.resolve(e);if(!f.existsSync(r))return{ok:!1};let s=N(r);if(!Object.keys(s).length)return{ok:!1};let a="unknown",t=u.resolve(r,"../package.json");if(f.existsSync(t))try{a=JSON.parse(f.readFileSync(t,"utf8")).version||a}catch{}return{ok:!0,binDir:r,version:a,bins:s,source:"env:ORACLE_OPERATOR_BIN_DIR"}}return he([process.cwd(),pe])||{ok:!1}}function E(e=process.stderr){e.write(I),I.endsWith(`
10
+ `)||e.write(`
11
+ `)}function H(e,n=[],r={}){let s=k();if(!s.ok)return E(r.stderr||process.stderr),3;let a=s.bins[e];if(!a)return(r.stderr||process.stderr).write(`oracle: operator bin '${e}' not found in resolved operator (${s.source})
12
+ `),3;let t=r.stdio||"inherit",o=/\.(mjs|cjs|js)$/.test(a),c=o?process.execPath:a,j=o?[a,...n]:[...n],l=ce(c,j,{stdio:t,env:r.env||process.env,cwd:r.cwd||process.cwd(),encoding:t==="pipe"?"utf8":void 0});if(l.error)return(r.stderr||process.stderr).write(`oracle: failed to spawn ${e}: ${l.error.message}
13
+ `),1;let m=typeof l.status=="number"?l.status:1;return m!==0&&r.appendHintOnError&&(r.stderr||process.stderr).write(fe+`
14
+ `),t==="pipe"?{code:m,stdout:l.stdout||"",stderr:l.stderr||""}:m}var ye="oracle \u2014 self-custody multichain agent control plane",ke=`READ / RESEARCH (no keys, this package)
15
15
  oracle open the native Oracle chat (TTY)
16
16
  oracle bootstrap optional: install an isolated Hermes compatibility runtime
17
17
  oracle init install agent lanes + read plane (dry-run by default)
@@ -49,16 +49,18 @@ SIGNING (dispatches to @oracle-agent/operator on THIS machine; never in this pac
49
49
 
50
50
  oracle <noun> --help for details. Keys never leave your machine; this package
51
51
  cannot sign \u2014 signing commands run the locally installed operator package.
52
- `;function H(){try{return JSON.parse(_.readFileSync(j.join(p,"package.json"),"utf8")).version||"0.0.0"}catch{return"0.0.0"}}function de(){let r=j.join(p,"src","cli","commands");return _.existsSync(r)?r:j.join(p,"dist","cli","commands")}async function v(){let r=de(),s=new Map;if(!_.existsSync(r))return s;let e=_.readdirSync(r).filter(n=>n.endsWith(".mjs")).sort();for(let n of e){let c=j.join(r,n);try{let o=(await import(le(c).href+`?t=${Date.now()}`)).default;if(!o||typeof o!="object"||typeof o.run!="function")continue;let i=o.name||n.replace(/\.mjs$/,"");s.set(i,{...o,name:i,__file:c})}catch(t){process.env.ORACLE_CLI_DEBUG&&console.error(`oracle: failed loading command ${n}: ${t.message}`)}}return s}function w(r,s){let e=[];e.push(`${ue} (v${r})`),e.push(""),e.push(pe.trimEnd());let n=[];for(let c of s.values()){if(["help","version"].includes(c.name))continue;!new Set(["init","doctor","chat","model","chain","setup","data","data-mcp","scan","route","prepare","swap","farm","follow","equities","strategy","public","mcp","plugins","harness","upgrade","bootstrap","eval","sign","vault","signer","runner","credential"]).has(c.name)&&c.summary&&n.push(` oracle ${c.name.padEnd(20)} ${c.summary}`)}return n.length&&(e.push(""),e.push("ADDITIONAL"),e.push(...n)),e.join(`
52
+ `;function q(){try{return JSON.parse(O.readFileSync(b.join(p,"package.json"),"utf8")).version||"0.0.0"}catch{return"0.0.0"}}function ve(){let e=b.join(p,"src","cli","commands");return O.existsSync(e)?e:b.join(p,"dist","cli","commands")}async function v(){let e=ve(),n=new Map;if(!O.existsSync(e))return n;let r=O.readdirSync(e).filter(s=>s.endsWith(".mjs")).sort();for(let s of r){let a=b.join(e,s);try{let o=(await import(ge(a).href+`?t=${Date.now()}`)).default;if(!o||typeof o!="object"||typeof o.run!="function")continue;let c=o.name||s.replace(/\.mjs$/,"");n.set(c,{...o,name:c,__file:a})}catch(t){process.env.ORACLE_CLI_DEBUG&&console.error(`oracle: failed loading command ${s}: ${t.message}`)}}return n}function xe(e,n=$()){return!n?.latest||!e||D(n.latest,e)<=0?"":`
53
+ Update available: ${e} \u2192 ${n.latest}. Run 'oracle update'.
54
+ `}function w(e,n){let r=[];r.push(`${ye} (v${e})`),r.push(""),r.push(ke.trimEnd());let s=[];for(let a of n.values()){if(["help","version"].includes(a.name))continue;!new Set(["init","doctor","chat","model","chain","setup","data","data-mcp","scan","route","prepare","swap","farm","follow","equities","strategy","public","mcp","plugins","harness","upgrade","bootstrap","eval","sign","vault","signer","runner","credential"]).has(a.name)&&a.summary&&s.push(` oracle ${a.name.padEnd(20)} ${a.summary}`)}return s.length&&(r.push(""),r.push("ADDITIONAL"),r.push(...s)),r.join(`
53
55
  `)+`
54
- `}function $(r,s){let e=[...s.keys()].sort(),n=e.length?e.join(", "):"(none loaded yet)";return`oracle: unknown command '${r}'. Known: ${n}
56
+ `+xe(e)}function M(e,n){let r=[...n.keys()].sort(),s=r.length?r.join(", "):"(none loaded yet)";return`oracle: unknown command '${e}'. Known: ${s}
55
57
  Try: oracle --help
56
- `}function O(r){return{argv:r,root:p,bin:R,paths:U,dispatchOperator:I,resolveOperator:y}}async function M(r=[]){let s=H();if(r.includes("--version")||r.includes("-V"))return N();if(r[0]==="--help"||r[0]==="-h"){let o=await v();return process.stdout.write(w(s,o)),0}if(r.length===0){let o=await v();if(fe(r)){let i=o.get("chat");if(i)return i.run(O([]))}return process.stdout.write(w(s,o)),0}if(me(r[0])){let i=(await v()).get("chat");if(i)return i.run(O(r))}let e=r[0],n=r.slice(1);if(e==="version")return N();if(e==="help"){let o=await v();if(n[0]){let i=o.get(n[0]);return i?(process.stdout.write((i.usage||`oracle ${i.name}`)+`
57
- `),i.summary&&process.stdout.write(i.summary+`
58
- `),0):(process.stderr.write($(n[0],o)),1)}return process.stdout.write(w(s,o)),0}let c=await v(),t=c.get(e);if(t){if(n[0]==="--help"||n[0]==="-h")return process.stdout.write((t.usage||`oracle ${t.name}`)+`
58
+ `}function x(e){return{argv:e,root:p,bin:_,paths:U,dispatchOperator:H,resolveOperator:k}}async function G(e=[]){let n=q();if(e.includes("--version")||e.includes("-V"))return F();if(e[0]==="--help"||e[0]==="-h"){let o=await v();return process.stdout.write(w(n,o)),0}if(e.length===0){let o=await v();if(Oe(e)){let c=o.get("chat");if(c)return c.run(x([]))}return process.stdout.write(w(n,o)),0}if(be(e[0])){let c=(await v()).get("chat");if(c)return c.run(x(e))}let r=e[0],s=e.slice(1);if(r==="version")return F();if(r==="help"){let o=await v();if(s[0]){let c=o.get(s[0]);return c?(process.stdout.write((c.usage||`oracle ${c.name}`)+`
59
+ `),c.summary&&process.stdout.write(c.summary+`
60
+ `),0):(process.stderr.write(M(s[0],o)),1)}return process.stdout.write(w(n,o)),0}let a=await v(),t=a.get(r);if(t){if(s[0]==="--help"||s[0]==="-h")return process.stdout.write((t.usage||`oracle ${t.name}`)+`
59
61
  `),t.summary&&process.stdout.write(t.summary+`
60
- `),0;if(b.includes(e))try{let o=await t.run(O(n));return typeof o=="number"?o:0}catch(o){return process.stderr.write(`oracle ${e}: ${o?.message||o}
61
- `),1}try{let o=await t.run(O(n));return typeof o=="number"?o:0}catch(o){return process.stderr.write(`oracle ${e}: ${o?.message||o}
62
- `),1}}return b.includes(e)?y().ok?(process.stderr.write(`oracle: sign-plane command '${e}' is not available in this build (operator is installed).
63
- `),1):(x(process.stderr),3):(process.stderr.write($(e,c)),1)}async function N(){let s=`oracle ${H()}`,e=y();return e.ok&&(s+=` operator ${e.version}`),process.stdout.write(s+`
64
- `),0}function fe(r=[],s={stdin:process.stdin,stdout:process.stdout}){return r.length!==0?!1:process.env.ORACLE_FORCE_CHAT==="1"?!0:s.stdin?.isTTY===!0&&s.stdout?.isTTY===!0}function me(r){return["-m","--model","--provider","-q","--query","-Q","--quiet","-c","--continue","-r","--resume","-s","--skills","-t","--toolsets","--reasoning","--tui","--cli","--yolo","--checkpoints","--source","--max-turns"].includes(String(r||""))}var Ne=Object.freeze({data:"./desk-server.mjs",public:"./oracle-public-server.mjs","data-mcp":"./oracle-data-mcp.mjs",init:"./oracle-init.mjs",upgrade:"./oracle-upgrade.mjs",scan:"./oracle-scan.mjs",route:"./oracle-route.mjs",equities:"./oracle-equities.mjs"});function ge(){if(!process.argv[1])return!1;try{return F(he(import.meta.url))===F(process.argv[1])}catch{return!1}}async function ke(r=process.argv.slice(2)){return M(r)}if(ge()){let r=await ke();process.exit(typeof r=="number"?r:0)}export{Ne as COMMANDS,ke as main};
62
+ `),0;if(R.includes(r))try{let o=await t.run(x(s));return typeof o=="number"?o:0}catch(o){return process.stderr.write(`oracle ${r}: ${o?.message||o}
63
+ `),1}try{let o=await t.run(x(s));return typeof o=="number"?o:0}catch(o){return process.stderr.write(`oracle ${r}: ${o?.message||o}
64
+ `),1}}return R.includes(r)?k().ok?(process.stderr.write(`oracle: sign-plane command '${r}' is not available in this build (operator is installed).
65
+ `),1):(E(process.stderr),3):(process.stderr.write(M(r,a)),1)}async function F(){let n=`oracle ${q()}`,r=k();return r.ok&&(n+=` operator ${r.version}`),process.stdout.write(n+`
66
+ `),0}function Oe(e=[],n={stdin:process.stdin,stdout:process.stdout}){return e.length!==0?!1:process.env.ORACLE_FORCE_CHAT==="1"?!0:n.stdin?.isTTY===!0&&n.stdout?.isTTY===!0}function be(e){return["-m","--model","--provider","-q","--query","-Q","--quiet","-c","--continue","-r","--resume","-s","--skills","-t","--toolsets","--reasoning","--tui","--cli","--yolo","--checkpoints","--source","--max-turns"].includes(String(e||""))}var or=Object.freeze({data:"./desk-server.mjs",public:"./oracle-public-server.mjs","data-mcp":"./oracle-data-mcp.mjs",init:"./oracle-init.mjs",upgrade:"./oracle-upgrade.mjs",scan:"./oracle-scan.mjs",route:"./oracle-route.mjs",equities:"./oracle-equities.mjs"});function _e(){if(!process.argv[1])return!1;try{return K(je(import.meta.url))===K(process.argv[1])}catch{return!1}}async function Re(e=process.argv.slice(2)){return G(e)}if(_e()){let e=await Re();process.exit(typeof e=="number"?e:0)}export{or as COMMANDS,Re as main};
@@ -1,21 +1,21 @@
1
- import D from"node:readline/promises";import{stdin as P,stdout as N}from"node:process";var A=Object.freeze([{key:"hyperliquid",aliases:["hl","hyperevm","hype","999"],chainId:999,name:"hyperliquid",kind:"evm",family:"hyperliquid",agent:"hyperliquid-agent",note:"perps \xB7 hip-3/4 \xB7 hyperevm 999",build:!0},{key:"ethereum",aliases:["eth","mainnet","1"],chainId:1,name:"ethereum",kind:"evm",family:"evm",agent:"oracle",note:"l1 \xB7 bridge hub",build:!0},{key:"base",aliases:["8453"],chainId:8453,name:"base",kind:"evm",family:"evm",agent:"oracle",note:"evm l2",build:!0},{key:"arbitrum",aliases:["arb","42161"],chainId:42161,name:"arbitrum",kind:"evm",family:"evm",agent:"oracle",note:"evm l2",build:!0},{key:"optimism",aliases:["op","10"],chainId:10,name:"optimism",kind:"evm",family:"evm",agent:"oracle",note:"op mainnet",build:!0},{key:"polygon",aliases:["matic","137"],chainId:137,name:"polygon",kind:"evm",family:"evm",agent:"oracle",note:"evm l2",build:!0},{key:"bsc",aliases:["bnb","56"],chainId:56,name:"bnb chain",kind:"evm",family:"evm",agent:"oracle",note:"bsc",build:!0},{key:"avalanche",aliases:["avax","43114"],chainId:43114,name:"avalanche",kind:"evm",family:"evm",agent:"oracle",note:"c-chain",build:!0},{key:"abstract",aliases:["abs","2741"],chainId:2741,name:"abstract",kind:"evm",family:"evm",agent:"oracle",note:"open / add agent",build:!0},{key:"stable",aliases:["988"],chainId:988,name:"stable",kind:"evm",family:"stable",agent:"stable-agent",note:"usdt0 gas \xB7 stable agent",build:!0},{key:"robinhood",aliases:["rh","4663"],chainId:4663,name:"robinhood",kind:"evm",family:"robinhood",agent:"robinhood-agent",note:"rh chain 4663",build:!0},{key:"solana",aliases:["sol"],chainId:"SOL",name:"solana",kind:"svm",family:"solana",agent:"solana-agent",note:"jup \xB7 nfts \xB7 dexs",build:!0},{key:"bitcoin",aliases:["btc"],chainId:"BTC",name:"bitcoin",kind:"utxo",family:"bitcoin",agent:"bitcoin-agent",note:"ord \xB7 runes \xB7 l1",build:!0},{key:"polymarket",aliases:["poly","polygon-poly"],chainId:137,name:"polymarket",kind:"venue",family:"polymarket",agent:"polymarket-agent",note:"prediction markets (polygon venue)",build:!1}]);function y(t){return String(t||"").trim().toLowerCase().replace(/^\/+/,"").replace(/\s+/g,"-")}function f({buildOnly:t=!1}={}){return A.filter(n=>t?n.build:!0)}function u(t){let n=y(t);if(!n)return null;for(let e of A)if(e.key===n||String(e.chainId).toLowerCase()===n||(e.aliases||[]).map(y).includes(n)||y(e.name)===n)return e;return null}function g({selectedKey:t=null,buildOnly:n=!1}={}){let e=f({buildOnly:n}),i=["oracle chains","","pick a build/trade surface:",""];for(let a of e){let r=t&&t===a.key?"*":" ",o=String(a.chainId).padEnd(6),s=a.key.padEnd(12);i.push(`${r} ${s} ${o} ${a.note}`)}return i.push(""),i.push("usage:"),i.push(" /chain list"),i.push(" /chain hyperliquid select"),i.push(" /chain show current"),i.push(" /chain clear unset"),i.push(" oracle chain use base same from shell"),t&&i.push("",`active: ${t}`),i.join(`
1
+ import q from"node:readline/promises";import{stdin as F,stdout as M}from"node:process";import O from"node:fs";import R from"node:os";import A from"node:path";var x=Object.freeze([{key:"hyperliquid",aliases:["hl","hyperevm","hype","999"],chainId:999,name:"hyperliquid",kind:"evm",family:"hyperliquid",agent:"hyperliquid-agent",note:"perps \xB7 hip-3/4 \xB7 hyperevm 999",build:!0},{key:"ethereum",aliases:["eth","mainnet","1"],chainId:1,name:"ethereum",kind:"evm",family:"evm",agent:"oracle",note:"l1 \xB7 bridge hub",build:!0},{key:"base",aliases:["8453"],chainId:8453,name:"base",kind:"evm",family:"evm",agent:"oracle",note:"evm l2",build:!0},{key:"arbitrum",aliases:["arb","42161"],chainId:42161,name:"arbitrum",kind:"evm",family:"evm",agent:"oracle",note:"evm l2",build:!0},{key:"optimism",aliases:["op","10"],chainId:10,name:"optimism",kind:"evm",family:"evm",agent:"oracle",note:"op mainnet",build:!0},{key:"polygon",aliases:["matic","137"],chainId:137,name:"polygon",kind:"evm",family:"evm",agent:"oracle",note:"evm l2",build:!0},{key:"bsc",aliases:["bnb","56"],chainId:56,name:"bnb chain",kind:"evm",family:"evm",agent:"oracle",note:"bsc",build:!0},{key:"avalanche",aliases:["avax","43114"],chainId:43114,name:"avalanche",kind:"evm",family:"evm",agent:"oracle",note:"c-chain",build:!0},{key:"abstract",aliases:["abs","2741"],chainId:2741,name:"abstract",kind:"evm",family:"evm",agent:"oracle",note:"open / add agent",build:!0},{key:"stable",aliases:["988"],chainId:988,name:"stable",kind:"evm",family:"stable",agent:"stable-agent",note:"usdt0 gas \xB7 stable agent",build:!0},{key:"robinhood",aliases:["rh","4663"],chainId:4663,name:"robinhood",kind:"evm",family:"robinhood",agent:"robinhood-agent",note:"rh chain 4663",build:!0},{key:"solana",aliases:["sol"],chainId:"SOL",name:"solana",kind:"svm",family:"solana",agent:"solana-agent",note:"jup \xB7 nfts \xB7 dexs",build:!0},{key:"bitcoin",aliases:["btc"],chainId:"BTC",name:"bitcoin",kind:"utxo",family:"bitcoin",agent:"bitcoin-agent",note:"ord \xB7 runes \xB7 l1",build:!0},{key:"polymarket",aliases:["poly","polygon-poly"],chainId:137,name:"polymarket",kind:"venue",family:"polymarket",agent:"polymarket-agent",note:"prediction markets (polygon venue)",build:!1}]);function c(n){return String(n||"").trim().toLowerCase().replace(/^\/+/,"").replace(/\s+/g,"-")}var E=/^[a-z0-9][a-z0-9-]*$/;function U(){let n=process.env.ORACLE_CONFIG_DIR||A.join(R.homedir(),".config","oracle");return A.join(n,"chains.json")}function w(n){if(!n||typeof n!="object")return null;let t=String(n.key??"").trim();if(!t||/[/\\.]/.test(t))return null;let e=c(t);if(!E.test(e))return null;let i=typeof n.chainId=="string"?n.chainId.trim():Number(n.chainId);if(i===""||i===null||i===void 0||typeof i=="number"&&!Number.isFinite(i))return null;let r=typeof n.agent=="string"&&E.test(n.agent.trim())?n.agent.trim():"oracle";return{key:e,aliases:Array.isArray(n.aliases)?n.aliases.map(c).filter(Boolean).slice(0,8):[],chainId:i,name:String(n.name||e).slice(0,60),kind:["evm","svm","utxo","venue"].includes(n.kind)?n.kind:"evm",family:c(n.family)||e,agent:r,note:String(n.note||"user-defined").slice(0,80),build:n.build!==!1,source:"user"}}function D(n=O.readFileSync){try{let t=JSON.parse(n(U(),"utf8")),e=Array.isArray(t?.chains)?t.chains:[],i=[],r=new Set;for(let o of e){let a=w(o);!a||r.has(a.key)||(r.add(a.key),i.push(a))}return i}catch{return[]}}function I(){let n=D();if(n.length===0)return x;let t=new Map(x.map(e=>[e.key,e]));for(let e of n)t.set(e.key,e);return[...t.values()]}function m({buildOnly:n=!1}={}){return I().filter(t=>n?t.build:!0)}function d(n){let t=c(n);if(!t)return null;for(let e of I())if(e.key===t||String(e.chainId).toLowerCase()===t||(e.aliases||[]).map(c).includes(t)||c(e.name)===t)return e;return null}function g({selectedKey:n=null,buildOnly:t=!1}={}){let e=m({buildOnly:t}),i=["oracle chains","","pick a build/trade surface:",""];for(let r of e){let o=n&&n===r.key?"*":" ",a=String(r.chainId).padEnd(6),s=r.key.padEnd(12);i.push(`${o} ${s} ${a} ${r.note}`)}return i.push(""),i.push("usage:"),i.push(" /chain list"),i.push(" /chain hyperliquid select"),i.push(" /chain show current"),i.push(" /chain clear unset"),i.push(" oracle chain use base same from shell"),n&&i.push("",`active: ${n}`),i.join(`
2
2
  `)+`
3
- `}import p from"node:fs";import U from"node:path";import d from"node:fs";import L from"node:os";import l from"node:path";import{fileURLToPath as w}from"node:url";var j=l.dirname(w(import.meta.url)),F=l.resolve(j,"../..");function k(){return process.env.ORACLE_FAKE_HOME||L.homedir()}function R(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function h(){return R()?process.env.ORACLE_CONFIG_DIR||l.join(k(),".config","oracle"):l.join(k(),".config","oracle")}function O(){return l.join(h(),"desk.json")}function S(){return l.join(h(),"env")}function c({force:t=!1}={}){if(c._done&&!t)return c._result||null;c._done=!0;let n={},e=(a,r)=>{if(r==null)return;let o=String(r).trim();o&&(process.env[a]!=null&&String(process.env[a]).trim()!==""||(process.env[a]=o,n[a]=o))};try{let a=S();if(d.existsSync(a))for(let r of d.readFileSync(a,"utf8").split(/\r?\n/)){let o=r.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!o||o[2].startsWith("#"))continue;let s=o[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),e(o[1],s)}}catch{}try{let a=O();if(d.existsSync(a)){let r=JSON.parse(d.readFileSync(a,"utf8"));r&&typeof r=="object"&&(e("ORACLE_DESK_URL",r.deskUrl||r.dataUrl||r.url),e("ORACLE_DATA_URL",r.dataUrl||r.deskUrl||r.url),e("ORACLE_API_URL",r.apiUrl||r.dataUrl||r.deskUrl),e("ORACLE_PUBLIC_URL",r.publicUrl||r.deskUrl||r.dataUrl),e("ORACLE_EXEC_URL",r.execUrl),e("MAD_DESK_URL",r.deskUrl||r.dataUrl))}}catch{}let i=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return i&&(e("ORACLE_DESK_URL",i),e("ORACLE_DATA_URL",i),e("ORACLE_API_URL",i),e("ORACLE_PUBLIC_URL",i),e("MAD_DESK_URL",i)),c._result=Object.keys(n).length?n:null,c._result}try{c()}catch{}function E(t){return d.mkdirSync(t,{recursive:!0}),t}function v(){return U.join(h(),"active-chain.json")}function m(){let t=v();if(!p.existsSync(t))return null;try{let n=JSON.parse(p.readFileSync(t,"utf8"));if(!n||typeof n!="object"||!n.key)return null;let e=u(n.key);return e?{key:e.key,chainId:e.chainId,name:e.name,agent:e.agent,selectedAt:n.selectedAt||null}:null}catch{return null}}function x(t){let n=u(t);if(!n){let i=new Error(`unknown chain '${t}'`);throw i.code="UNKNOWN_CHAIN",i}E(h());let e={key:n.key,chainId:n.chainId,name:n.name,agent:n.agent,selectedAt:new Date().toISOString()};return p.writeFileSync(v(),JSON.stringify(e,null,2)+`
4
- `,{mode:384}),e}function I(){let t=v();return p.existsSync(t)&&p.unlinkSync(t),!0}function b(){return["oracle chain \u2014 pick the build/trade surface",""," oracle chain list working chains"," oracle chain list same"," oracle chain show show active chain"," oracle chain use <name> select (hyperliquid, base, solana, ...)"," oracle chain clear unset"," oracle chain --json machine output","","chat:"," /chain"," /chain hyperliquid"," /chain show"].join(`
5
- `)}function $(t){let n=m();return t?(process.stdout.write(JSON.stringify({active:n,chains:f()},null,2)+`
6
- `),0):(process.stdout.write(g({selectedKey:n?.key||null})),0)}function T(t){let n=m();return t?(process.stdout.write(JSON.stringify({active:n},null,2)+`
7
- `),n?0:1):n?(process.stdout.write(`active: ${n.key} id=${n.chainId} agent=${n.agent}
3
+ `}import f from"node:fs";import H from"node:path";import h from"node:fs";import N from"node:os";import u from"node:path";import{fileURLToPath as P}from"node:url";var $=u.dirname(P(import.meta.url)),ne=u.resolve($,"../..");function k(){return process.env.ORACLE_FAKE_HOME||N.homedir()}function K(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function p(){return K()?process.env.ORACLE_CONFIG_DIR||u.join(k(),".config","oracle"):u.join(k(),".config","oracle")}function T(){return u.join(p(),"desk.json")}function W(){return u.join(p(),"env")}function l({force:n=!1}={}){if(l._done&&!n)return l._result||null;l._done=!0;let t={},e=(r,o)=>{if(o==null)return;let a=String(o).trim();a&&(process.env[r]!=null&&String(process.env[r]).trim()!==""||(process.env[r]=a,t[r]=a))};try{let r=W();if(h.existsSync(r))for(let o of h.readFileSync(r,"utf8").split(/\r?\n/)){let a=o.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!a||a[2].startsWith("#"))continue;let s=a[2];(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),e(a[1],s)}}catch{}try{let r=T();if(h.existsSync(r)){let o=JSON.parse(h.readFileSync(r,"utf8"));o&&typeof o=="object"&&(e("ORACLE_DESK_URL",o.deskUrl||o.dataUrl||o.url),e("ORACLE_DATA_URL",o.dataUrl||o.deskUrl||o.url),e("ORACLE_API_URL",o.apiUrl||o.dataUrl||o.deskUrl),e("ORACLE_PUBLIC_URL",o.publicUrl||o.deskUrl||o.dataUrl),e("ORACLE_EXEC_URL",o.execUrl),e("MAD_DESK_URL",o.deskUrl||o.dataUrl))}}catch{}let i=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return i&&(e("ORACLE_DESK_URL",i),e("ORACLE_DATA_URL",i),e("ORACLE_API_URL",i),e("ORACLE_PUBLIC_URL",i),e("MAD_DESK_URL",i)),l._result=Object.keys(t).length?t:null,l._result}try{l()}catch{}function j(n){return h.mkdirSync(n,{recursive:!0}),n}function v(){return H.join(p(),"active-chain.json")}function y(){let n=v();if(!f.existsSync(n))return null;try{let t=JSON.parse(f.readFileSync(n,"utf8"));if(!t||typeof t!="object"||!t.key)return null;let e=d(t.key);return e?{key:e.key,chainId:e.chainId,name:e.name,agent:e.agent,selectedAt:t.selectedAt||null}:null}catch{return null}}function L(n){let t=d(n);if(!t){let i=new Error(`unknown chain '${n}'`);throw i.code="UNKNOWN_CHAIN",i}j(p());let e={key:t.key,chainId:t.chainId,name:t.name,agent:t.agent,selectedAt:new Date().toISOString()};return f.writeFileSync(v(),JSON.stringify(e,null,2)+`
4
+ `,{mode:384}),e}function S(){let n=v();return f.existsSync(n)&&f.unlinkSync(n),!0}function b(){return["oracle chain \u2014 pick the build/trade surface",""," oracle chain list working chains"," oracle chain list same"," oracle chain show show active chain"," oracle chain use <name> select (hyperliquid, base, solana, ...)"," oracle chain clear unset"," oracle chain --json machine output","","chat:"," /chain"," /chain hyperliquid"," /chain show"].join(`
5
+ `)}function J(n){let t=y();return n?(process.stdout.write(JSON.stringify({active:t,chains:m()},null,2)+`
6
+ `),0):(process.stdout.write(g({selectedKey:t?.key||null})),0)}function B(n){let t=y();return n?(process.stdout.write(JSON.stringify({active:t},null,2)+`
7
+ `),t?0:1):t?(process.stdout.write(`active: ${t.key} id=${t.chainId} agent=${t.agent}
8
8
  `),0):(process.stdout.write(`active: none
9
9
  run: oracle chain use hyperliquid
10
- `),1)}function C(t,n){try{let e=x(t);return n?process.stdout.write(JSON.stringify({ok:!0,active:e},null,2)+`
10
+ `),1)}function C(n,t){try{let e=L(n);return t?process.stdout.write(JSON.stringify({ok:!0,active:e},null,2)+`
11
11
  `):process.stdout.write(`selected ${e.key} (${e.chainId}) \xB7 agent ${e.agent}
12
12
  build/trade context pinned for this machine
13
- `),0}catch(e){if(e?.code==="UNKNOWN_CHAIN")return process.stderr.write(`oracle chain: unknown '${t}'
13
+ `),0}catch(e){if(e?.code==="UNKNOWN_CHAIN")return process.stderr.write(`oracle chain: unknown '${n}'
14
14
  `),process.stderr.write(`try: oracle chain list
15
- `),1;throw e}}var ne={name:"chain",summary:"list/select working chains (hyperliquid, base, solana, ...)",group:"read",usage:b(),async run(t){let n=[...t.argv],e=n.includes("--json"),i=n.filter(o=>o!=="--json"),a=(i[0]||"list").toLowerCase(),r=i.slice(1);if(["-h","--help","help"].includes(a))return process.stdout.write(b()+`
16
- `),0;if(["list","ls"].includes(a))return $(e);if(["show","status","current"].includes(a))return T(e);if(["clear","unset","none"].includes(a))return I(),process.stdout.write(e?`{"ok":true,"active":null}
15
+ `),1;throw e}}var he={name:"chain",summary:"list/select working chains (hyperliquid, base, solana, ...)",group:"read",usage:b(),async run(n){let t=[...n.argv],e=t.includes("--json"),i=t.filter(a=>a!=="--json"),r=(i[0]||"list").toLowerCase(),o=i.slice(1);if(["-h","--help","help"].includes(r))return process.stdout.write(b()+`
16
+ `),0;if(["list","ls"].includes(r))return J(e);if(["show","status","current"].includes(r))return B(e);if(["clear","unset","none"].includes(r))return S(),process.stdout.write(e?`{"ok":true,"active":null}
17
17
  `:`active chain cleared
18
- `),0;if(["use","set","select","pick"].includes(a)){let o=r.join(" ").trim();return o?C(o,e):(process.stderr.write(`usage: oracle chain use <name>
19
- `),1)}if(u(a))return C(a,e);if(!i.length&&process.stdin.isTTY){let o=f();process.stdout.write(g({selectedKey:m()?.key}));let s=D.createInterface({input:P,output:N});try{let _=(await s.question("chain> ")).trim();return _?C(_,!1):0}finally{s.close()}}return process.stderr.write(`oracle chain: unknown verb '${a}'
18
+ `),0;if(["use","set","select","pick"].includes(r)){let a=o.join(" ").trim();return a?C(a,e):(process.stderr.write(`usage: oracle chain use <name>
19
+ `),1)}if(d(r))return C(r,e);if(!i.length&&process.stdin.isTTY){let a=m();process.stdout.write(g({selectedKey:y()?.key}));let s=q.createInterface({input:F,output:M});try{let _=(await s.question("chain> ")).trim();return _?C(_,!1):0}finally{s.close()}}return process.stderr.write(`oracle chain: unknown verb '${r}'
20
20
  ${b()}
21
- `),1}};export{ne as default};
21
+ `),1}};export{he as default};