@naraya/cli 0.4.2 → 0.4.4
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/bin/naraya.mjs +3 -1
- package/dist/assets.pack.gz +0 -0
- package/package.json +1 -1
package/bin/naraya.mjs
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{spawn as A}from"node:child_process";import{fileURLToPath as
|
|
2
|
+
import{spawn as A}from"node:child_process";import{fileURLToPath as y,pathToFileURL as b}from"node:url";import r from"node:fs";import i from"node:path";import x from"node:os";import{seed as R,seedEntries as O}from"../src/seed.mjs";const o=i.join(x.homedir(),".naraya","agent"),c=process.argv[2];if(c==="login"||c==="logout"||c==="status"||c==="pentest"||c==="mcp"){const{resolveBase:e}=await import("../src/config.mjs"),t=e(process.argv);if(c==="login"){const{login:s}=await import("../src/login.mjs");await s(o,t)}else if(c==="logout")r.rmSync(i.join(o,"models.json"),{force:!0}),console.log("Signed out. Revoke the 'Naraya CLI' key in your dashboard.");else if(c==="status"){const{status:s}=await import("../src/status.mjs");await s(o,t,{usd:process.argv.includes("--usd")})}else if(c==="pentest"){const{pentestCLI:s}=await import("../dist/pentest/cli.js");await s(process.argv)}else if(c==="mcp"){const{mcpCLI:s,ensureBundledMcpServers:a}=await import("../src/mcp-cli.mjs");a(),await s(process.argv)}process.exit(0)}function F(){let e=i.dirname(y(import.meta.resolve("@earendil-works/pi-coding-agent")));for(;!r.existsSync(i.join(e,"package.json"));){const t=i.dirname(e);if(t===e)throw new Error("could not locate @earendil-works/pi-coding-agent package root");e=t}return e}const w=F(),j=i.join(w,"package.json"),m=JSON.parse(r.readFileSync(j,"utf8")),g=m.bin,T=typeof g=="string"?g:g.pi,P=i.join(w,T),k="Naraya";function I(){try{if(m.piConfig?.name===k)return;m.piConfig={...m.piConfig??{},name:k},r.writeFileSync(j,JSON.stringify(m,null,2))}catch{}}I();const d=i.dirname(i.dirname(y(import.meta.url))),N=i.join(d,"assets");if(r.existsSync(N))R(N,o);else{const{readPack:e}=await import("../src/assets-pack.mjs");O(e(i.join(d,"dist","assets.pack.gz")),o)}function D(){const e=i.join(o,"settings.json");let t={};try{t=JSON.parse(r.readFileSync(e,"utf8"))}catch{}let s=!1;t.quietStartup===void 0&&(t.quietStartup=!0,s=!0),t.narayaThemeApplied||(t.theme="naraya",t.narayaThemeApplied=!0,s=!0),t.retry===void 0&&(t.retry={enabled:!0,maxRetries:10,baseDelayMs:1e3},s=!0),s&&(r.mkdirSync(o,{recursive:!0}),r.writeFileSync(e,JSON.stringify(t,null,2)))}D();const _=i.join(o,"SYSTEM.md"),B=i.join(o,"APPEND-SYSTEM.md");function C(e){let t=!1;try{t=!!JSON.parse(r.readFileSync(i.join(o,"models.json"),"utf8")).providers?.naraya}catch{}if(!t)return[];const s=[];return e.includes("--provider")||s.push("--provider","naraya"),e.includes("--models")||s.push("--models","naraya/*"),s}const u=process.argv.slice(2),J=["--version","-v","--help","-h","--list-models","--models"],p=u.some(e=>J.includes(e));if(!p)if(process.stdout.isTTY){const{splash:e}=await import("../src/splash.mjs"),t=await e();if(!t.ok)if(t.reason==="login"||t.reason==="expired"){const{resolveBase:s}=await import("../src/config.mjs"),{login:a}=await import("../src/login.mjs");try{await a(o,s(process.argv))}catch(n){console.error(`Login gagal: ${n.message}`),process.exit(1)}}else process.exit(1)}else r.existsSync(i.join(o,"models.json"))||(console.error("Run `naraya login` first."),process.exit(1));if(!p)try{const e=i.join(o,"models.json"),s=JSON.parse(r.readFileSync(e,"utf8")).providers?.naraya;if(s?.apiKey&&s?.baseUrl){const a=await fetch(`${s.baseUrl}/models`,{headers:{authorization:`Bearer ${s.apiKey}`},signal:AbortSignal.timeout(3e3)});if(a.ok){const n=(await a.json()).data;if(Array.isArray(n)&&n.length>0){const{writeModelsConfig:f}=await import("../src/config.mjs");f(o,s.apiKey,n,s.baseUrl)}}}}catch{}if(!p&&process.stdout.isTTY)try{const e=JSON.parse(r.readFileSync(i.join(d,"package.json"),"utf8")).version,t=i.join(o,".update-check.json"),s=(n,f)=>{const h=n.split(".").map(Number),S=f.split(".").map(Number);for(let l=0;l<3;l++)if((h[l]||0)!==(S[l]||0))return(h[l]||0)-(S[l]||0);return 0};let a={};try{a=JSON.parse(r.readFileSync(t,"utf8"))}catch{}if(Date.now()-(a.t||0)>864e5){const n=await fetch("https://registry.npmjs.org/@naraya/cli/latest",{signal:AbortSignal.timeout(2e3)});n.ok&&(a={t:Date.now(),latest:(await n.json()).version},r.writeFileSync(t,JSON.stringify(a)))}a.latest&&s(a.latest,e)>0&&console.error(`
|
|
3
|
+
\x1B[33m\u26A0 Naraya CLI ${a.latest} available\x1B[0m (you have ${e}). Update: \x1B[36mnpm i -g @naraya/cli@latest\x1B[0m
|
|
4
|
+
`)}catch{}if(!p)try{const{ensureBundledMcpServers:e}=await import("../src/mcp-cli.mjs");e()}catch{}if(!p&&process.stdout.isTTY)try{const{printBanner:e}=await import("../src/banner.mjs");await e()}catch{}const v=i.join(o,"skills"),Y=u.includes("--no-skills")?[]:r.existsSync(v)?["--no-skills","--skill",v]:["--no-skills"],E=b(i.join(i.dirname(y(import.meta.url)),"undici-timeout.mjs")).href,L=u.includes("--system-prompt")?[]:["--system-prompt",_],G=["--import",E,P,...L,"--append-system-prompt",B,...Y,...C(u),...u],M=A(process.execPath,G,{stdio:"inherit",env:{...process.env,PI_CODING_AGENT_DIR:o,NARAYA_CODING_AGENT_DIR:o,PI_OFFLINE:"1",NARAYA_PKG_ROOT:d,NARAYA_VERSION:(()=>{try{return JSON.parse(r.readFileSync(i.join(d,"package.json"),"utf8")).version??""}catch{return""}})()}});M.on("exit",async e=>{if(process.stdout.isTTY&&!p)try{const{printBye:t}=await import("../src/goodbye.mjs");t()}catch{}process.exit(e??0)});
|
package/dist/assets.pack.gz
CHANGED
|
Binary file
|