@madh-io/alfred-ai 0.8.3 → 0.8.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/bundle/index.js +1 -1
- package/package.json +1 -1
package/bundle/index.js
CHANGED
|
@@ -550,7 +550,7 @@ ${Wi}${Ze} _ _ _____ ____ _____ ____
|
|
|
550
550
|
/ ___ \\| |___| _| | _ <| |___| |_| |
|
|
551
551
|
/_/ \\_\\_____|_| |_| \\_\\_____|____/ ${R}
|
|
552
552
|
${ae} Personal AI Assistant \u2014 Setup Wizard${R}
|
|
553
|
-
`)}var R,Ze,ae,ps,J,ms,Bi,Wi,Pt,Je,io=h(()=>{"use strict";R="\x1B[0m",Ze="\x1B[1m",ae="\x1B[2m",ps="\x1B[32m",J="\x1B[33m",ms="\x1B[36m",Bi="\x1B[31m",Wi="\x1B[35m";d(N,"green");d(Hi,"yellow");d(Se,"cyan");d(no,"red");d($,"bold");d(S,"dim");d(be,"maskKey");Pt=[{name:"anthropic",label:"Anthropic (Claude) \u2014 recommended",defaultModel:"claude-sonnet-4-20250514",envKeyName:"ALFRED_ANTHROPIC_API_KEY",needsApiKey:!0},{name:"openai",label:"OpenAI (GPT)",defaultModel:"gpt-4o",envKeyName:"ALFRED_OPENAI_API_KEY",needsApiKey:!0},{name:"openrouter",label:"OpenRouter (multiple providers)",defaultModel:"anthropic/claude-sonnet-4-20250514",envKeyName:"ALFRED_OPENROUTER_API_KEY",needsApiKey:!0,baseUrl:"https://openrouter.ai/api/v1"},{name:"ollama",label:"Ollama (local, no API key needed)",defaultModel:"llama3.2",envKeyName:"",needsApiKey:!1,baseUrl:"http://localhost:11434"},{name:"openwebui",label:"OpenWebUI (local OpenAI-compatible UI)",defaultModel:"llama3.2",envKeyName:"ALFRED_OPENWEBUI_API_KEY",needsApiKey:!
|
|
553
|
+
`)}var R,Ze,ae,ps,J,ms,Bi,Wi,Pt,Je,io=h(()=>{"use strict";R="\x1B[0m",Ze="\x1B[1m",ae="\x1B[2m",ps="\x1B[32m",J="\x1B[33m",ms="\x1B[36m",Bi="\x1B[31m",Wi="\x1B[35m";d(N,"green");d(Hi,"yellow");d(Se,"cyan");d(no,"red");d($,"bold");d(S,"dim");d(be,"maskKey");Pt=[{name:"anthropic",label:"Anthropic (Claude) \u2014 recommended",defaultModel:"claude-sonnet-4-20250514",envKeyName:"ALFRED_ANTHROPIC_API_KEY",needsApiKey:!0},{name:"openai",label:"OpenAI (GPT)",defaultModel:"gpt-4o",envKeyName:"ALFRED_OPENAI_API_KEY",needsApiKey:!0},{name:"openrouter",label:"OpenRouter (multiple providers)",defaultModel:"anthropic/claude-sonnet-4-20250514",envKeyName:"ALFRED_OPENROUTER_API_KEY",needsApiKey:!0,baseUrl:"https://openrouter.ai/api/v1"},{name:"ollama",label:"Ollama (local, no API key needed)",defaultModel:"llama3.2",envKeyName:"",needsApiKey:!1,baseUrl:"http://localhost:11434"},{name:"openwebui",label:"OpenWebUI (local OpenAI-compatible UI)",defaultModel:"llama3.2",envKeyName:"ALFRED_OPENWEBUI_API_KEY",needsApiKey:!0,baseUrl:"http://localhost:3000/api/v1"}],Je=[{name:"telegram",label:"Telegram",configKey:"telegram",credentials:[{envKey:"ALFRED_TELEGRAM_TOKEN",configField:"token",prompt:"Enter your Telegram Bot token (from @BotFather)",required:!0}]},{name:"discord",label:"Discord",configKey:"discord",credentials:[{envKey:"ALFRED_DISCORD_TOKEN",configField:"token",prompt:"Enter your Discord Bot token",required:!0}]},{name:"whatsapp",label:"WhatsApp",configKey:"whatsapp",credentials:[]},{name:"matrix",label:"Matrix",configKey:"matrix",credentials:[{envKey:"ALFRED_MATRIX_HOMESERVER_URL",configField:"homeserverUrl",prompt:"Enter your Matrix homeserver URL",defaultValue:"https://matrix.org",required:!0},{envKey:"ALFRED_MATRIX_ACCESS_TOKEN",configField:"accessToken",prompt:"Enter your Matrix access token",required:!0},{envKey:"ALFRED_MATRIX_USER_ID",configField:"userId",prompt:"Enter your Matrix user ID (e.g. @bot:matrix.org)",required:!0}]},{name:"signal",label:"Signal",configKey:"signal",credentials:[{envKey:"ALFRED_SIGNAL_API_URL",configField:"apiUrl",prompt:"Enter the Signal REST API URL",defaultValue:"http://localhost:8080",required:!0},{envKey:"ALFRED_SIGNAL_PHONE_NUMBER",configField:"phoneNumber",prompt:"Enter the Signal phone number (e.g. +15551234567)",required:!0}]}];d(Xi,"loadExistingConfig");d(zi,"setupCommand");d(C,"askWithDefault");d(ie,"askRequired");d(dr,"askNumber");d(qi,"printBanner")});var co={};K(co,{configCommand:()=>Yi});function Vi(c){let e=c.toLowerCase();return Ki.some(t=>e.includes(t))}function Gi(c){return typeof c!="string"||c.length===0?"(empty)":c.length<=8?"***":c.slice(0,4)+"..."+c.slice(-4)}function ao(c){let e={};for(let[t,s]of Object.entries(c))Vi(t)?e[t]=Gi(s):s!=null&&typeof s=="object"&&!Array.isArray(s)?e[t]=ao(s):e[t]=s;return e}async function Yi(){let c=new H,e;try{e=c.loadConfig()}catch(s){console.error("Failed to load configuration:",s.message),process.exit(1)}let t=ao(e);console.log("Alfred \u2014 Resolved Configuration"),console.log("================================"),console.log(JSON.stringify(t,null,2))}var Ki,lo=h(()=>{"use strict";le();Ki=["token","apikey","api_key","accesstoken","secret","password"];d(Vi,"isSensitiveKey");d(Gi,"redactValue");d(ao,"redactObject");d(Yi,"configCommand")});var po={};K(po,{rulesCommand:()=>Zi});import hs from"node:fs";import uo from"node:path";import Ji from"js-yaml";async function Zi(){let c=new H,e;try{e=c.loadConfig()}catch(a){console.error("Failed to load configuration:",a.message),process.exit(1)}let t=uo.resolve(e.security.rulesPath);if(!hs.existsSync(t)){console.log(`Rules directory not found: ${t}`),console.log("No security rules loaded.");return}hs.statSync(t).isDirectory()||(console.error(`Rules path is not a directory: ${t}`),process.exit(1));let r=hs.readdirSync(t).filter(a=>a.endsWith(".yml")||a.endsWith(".yaml"));if(r.length===0){console.log(`No YAML rule files found in: ${t}`);return}let n=new me,o=[],i=[];for(let a of r){let l=uo.join(t,a);try{let u=hs.readFileSync(l,"utf-8"),m=Ji.load(u),p=n.loadFromObject(m);o.push(...p)}catch(u){i.push(` ${a}: ${u.message}`)}}if(console.log("Alfred \u2014 Security Rules"),console.log("======================="),console.log(`Rules directory: ${t}`),console.log(`Rule files found: ${r.length}`),console.log(`Total rules loaded: ${o.length}`),console.log(""),i.length>0){console.log("Errors:");for(let a of i)console.log(a);console.log("")}if(o.length!==0){o.sort((a,l)=>a.priority-l.priority),console.log("Loaded rules (sorted by priority):"),console.log("");for(let a of o){let l=a.rateLimit?` | rate-limit: ${a.rateLimit.maxInvocations}/${a.rateLimit.windowSeconds}s`:"";console.log(` [${a.priority}] ${a.id}`),console.log(` effect: ${a.effect} | scope: ${a.scope}`),console.log(` actions: ${a.actions.join(", ")}`),console.log(` risk levels: ${a.riskLevels.join(", ")}${l}`),a.conditions&&console.log(` conditions: ${JSON.stringify(a.conditions)}`),console.log("")}}}var mo=h(()=>{"use strict";le();Jt();d(Zi,"rulesCommand")});var ho={};K(ho,{statusCommand:()=>ea});import Ft from"node:fs";import pr from"node:path";import Qi from"js-yaml";async function ea(){let c=new H,e;try{e=c.loadConfig()}catch(l){console.error("Failed to load configuration:",l.message),process.exit(1)}console.log("Alfred \u2014 Status"),console.log("================"),console.log("");let t=[{name:"Telegram",enabled:e.telegram.enabled,configured:!!e.telegram.token},{name:"Discord",enabled:!!e.discord?.enabled,configured:!!e.discord?.token},{name:"WhatsApp",enabled:!!e.whatsapp?.enabled,configured:!!e.whatsapp?.dataPath},{name:"Matrix",enabled:!!e.matrix?.enabled,configured:!!e.matrix?.accessToken},{name:"Signal",enabled:!!e.signal?.enabled,configured:!!e.signal?.phoneNumber}];console.log("Messaging Adapters:");for(let l of t){let u=l.enabled?"enabled":l.configured?"configured (disabled)":"not configured",m=l.enabled?"+":"-";console.log(` [${m}] ${l.name}: ${u}`)}console.log(""),console.log("LLM Provider:");let s=e.llm.default;console.log(` Provider: ${s.provider}`),console.log(` Model: ${s.model}`),console.log(` API Key: ${s.apiKey?"set":"not set"}`),s.baseUrl&&console.log(` Base URL: ${s.baseUrl}`);for(let l of["strong","fast","embeddings","local"]){let u=e.llm[l];u&&console.log(` ${l}: ${u.provider}/${u.model}`)}console.log(""),console.log("Storage:");let r=pr.resolve(e.storage.path),n=Ft.existsSync(r);console.log(` Database: ${r}`),console.log(` Status: ${n?"exists":"not yet created"}`),console.log("");let o=pr.resolve(e.security.rulesPath),i=0,a=0;if(Ft.existsSync(o)&&Ft.statSync(o).isDirectory()){let l=Ft.readdirSync(o).filter(m=>m.endsWith(".yml")||m.endsWith(".yaml"));a=l.length;let u=new me;for(let m of l){let p=pr.join(o,m);try{let f=Ft.readFileSync(p,"utf-8"),E=Qi.load(f),w=u.loadFromObject(E);i+=w.length}catch{}}}console.log("Security:"),console.log(` Rules path: ${o}`),console.log(` Rule files: ${a}`),console.log(` Rules loaded: ${i}`),console.log(` Default effect: ${e.security.defaultEffect}`),e.security.ownerUserId&&console.log(` Owner user ID: ${e.security.ownerUserId}`),console.log(""),console.log("Logger:"),console.log(` Level: ${e.logger.level}`),console.log(` Pretty: ${e.logger.pretty}`)}var fo=h(()=>{"use strict";le();Jt();d(ea,"statusCommand")});var go={};K(go,{logsCommand:()=>ra});import ta from"node:fs";import sa from"node:path";async function ra(c){let e=new H,t;try{t=e.loadConfig()}catch(n){console.error("Failed to load configuration:",n.message),process.exit(1)}let s=sa.resolve(t.storage.path);if(!ta.existsSync(s)){console.log(`Database not found at: ${s}`),console.log("No audit log entries. Alfred has not been run yet, or the database path is incorrect.");return}let r;try{r=new de(s);let n=new ue(r.getDb()),o=n.count({}),i=n.query({limit:c});if(console.log("Alfred \u2014 Audit Log"),console.log("==================="),console.log(`Total entries: ${o}`),console.log(`Showing last ${Math.min(c,o)} entries:`),console.log(""),i.length===0){console.log("No audit log entries found.");return}for(let a of i){let l=a.timestamp.toISOString(),u=a.effect==="allow"?"ALLOW":"DENY ";console.log(` ${l} [${u}] ${a.action}`),console.log(` user: ${a.userId} | platform: ${a.platform} | risk: ${a.riskLevel}`),a.ruleId&&console.log(` rule: ${a.ruleId}`),a.chatId&&console.log(` chat: ${a.chatId}`),a.context&&console.log(` context: ${JSON.stringify(a.context)}`),console.log("")}}catch(n){console.error("Failed to read audit log:",n.message),process.exit(1)}finally{r&&r.close()}}var yo=h(()=>{"use strict";le();As();d(ra,"logsCommand")});import{readFileSync as na}from"node:fs";import{fileURLToPath as oa}from"node:url";import{dirname as ia,join as aa}from"node:path";function ca(){try{let c=ia(oa(import.meta.url));for(let e of["../package.json","../../package.json"])try{let t=JSON.parse(na(aa(c,e),"utf-8"));if(t.version)return t.version}catch{}}catch{}return"0.0.0"}d(ca,"getVersion");var wo=ca(),mr=`
|
|
554
554
|
Alfred CLI v${wo}
|
|
555
555
|
Personal AI Assistant
|
|
556
556
|
|