@mintplex-labs/anything-llm-cli 0.0.9 → 0.0.10

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.
Files changed (3) hide show
  1. package/README.md +30 -12
  2. package/dist/index.js +1 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -62,13 +62,27 @@ Download a prebuilt binary from the [Releases](https://github.com/mintplex-labs/
62
62
 
63
63
  2. **Set your environment variables:**
64
64
 
65
+ #### macOS / Linux
66
+
67
+ Run the interactive setup command to configure your environment automatically:
68
+
65
69
  ```bash
66
- export ANYTHING_LLM_API_KEY="your-api-key"
67
- # Optional — defaults to http://localhost:3001
68
- export ANYTHING_LLM_BASE_URL="https://my-instance.example.com"
70
+ any setup
69
71
  ```
70
72
 
71
- > **Tip:** Add these to your `.bashrc` or `.zshrc` for persistence.
73
+ This will prompt you for your instance type, base URL, and API key, then write the appropriate exports to your shell config file (`.zshrc`, `.bashrc`, or `config.fish`).
74
+
75
+ #### Windows
76
+
77
+ Windows users need to set environment variables manually:
78
+
79
+ ```powershell
80
+ # PowerShell (current session)
81
+ $env:ANYTHING_LLM_BASE_URL = "https://my-instance.example.com"
82
+ $env:ANYTHING_LLM_API_KEY = "your-api-key"
83
+
84
+ # To persist across sessions, use System Environment Variables settings
85
+ ```
72
86
 
73
87
  3. **Send your first prompt:**
74
88
 
@@ -80,9 +94,13 @@ That's it! If no workspace is specified, the CLI will automatically create and u
80
94
 
81
95
  ## Usage
82
96
 
83
- ```
84
- any prompt <message> [options]
85
- ```
97
+ ### `any setup` (alias: `s`)
98
+
99
+ Interactive setup wizard that configures your AnythingLLM connection. Prompts for your instance type (Desktop or Cloud/Self-Hosted), base URL, and API key, then writes the environment variables to your shell config file.
100
+
101
+ > **Note:** Only available on macOS and Linux. Windows users must set environment variables manually.
102
+
103
+ ### `any prompt <message>` (alias: `p`)
86
104
 
87
105
  ### Options
88
106
 
@@ -125,11 +143,11 @@ any prompt "Write a summary" > summary.md
125
143
 
126
144
  ## Environment Variables
127
145
 
128
- | Variable | Required | Default | Description |
129
- | ------------------------------------- | -------- | ----------------------- | ------------------------------------------------- |
130
- | `ANYTHING_LLM_API_KEY` | Yes | — | Your AnythingLLM API key |
131
- | `ANYTHING_LLM_BASE_URL` | No | `http://localhost:3001` | Base URL of your AnythingLLM instance |
132
- | `ANYTHING_LLM_DEFAULT_WORKSPACE_SLUG` | No | — | Default workspace slug (avoids needing `-w` flag) |
146
+ | Variable | Required | Default | Description |
147
+ | ------------------------------------- | -------- | ------- | ------------------------------------------------- |
148
+ | `ANYTHING_LLM_API_KEY` | Yes | — | Your AnythingLLM API key |
149
+ | `ANYTHING_LLM_BASE_URL` | Yes | | Base URL of your AnythingLLM instance |
150
+ | `ANYTHING_LLM_DEFAULT_WORKSPACE_SLUG` | No | — | Default workspace slug (avoids needing `-w` flag) |
133
151
 
134
152
  ## Development
135
153
 
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ Expecting one of '${Z.join("', '")}'`);if(this._lifeCycleHooks[q])this._lifeCycl
24
24
  `),this.outputHelp({error:!0});let Z=J||{},Q=Z.exitCode||1,X=Z.code||"commander.error";this._exit(Q,X,q)}_parseOptionsEnv(){this.options.forEach((q)=>{if(q.envVar&&q.envVar in b.env){let J=q.attributeName();if(this.getOptionValue(J)===void 0||["default","config","env"].includes(this.getOptionValueSource(J)))if(q.required||q.optional)this.emit(`optionEnv:${q.name()}`,b.env[q.envVar]);else this.emit(`optionEnv:${q.name()}`)}})}_parseOptionsImplied(){let q=new P9(this.options),J=(Z)=>{return this.getOptionValue(Z)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(Z))};this.options.filter((Z)=>Z.implied!==void 0&&J(Z.attributeName())&&q.valueFromOption(this.getOptionValue(Z.attributeName()),Z)).forEach((Z)=>{Object.keys(Z.implied).filter((Q)=>!J(Q)).forEach((Q)=>{this.setOptionValueWithSource(Q,Z.implied[Q],"implied")})})}missingArgument(q){let J=`error: missing required argument '${q}'`;this.error(J,{code:"commander.missingArgument"})}optionMissingArgument(q){let J=`error: option '${q.flags}' argument missing`;this.error(J,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(q){let J=`error: required option '${q.flags}' not specified`;this.error(J,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(q,J){let Z=(Y)=>{let z=Y.attributeName(),B=this.getOptionValue(z),G=this.options.find((_)=>_.negate&&z===_.attributeName()),H=this.options.find((_)=>!_.negate&&z===_.attributeName());if(G&&(G.presetArg===void 0&&B===!1||G.presetArg!==void 0&&B===G.presetArg))return G;return H||Y},Q=(Y)=>{let z=Z(Y),B=z.attributeName();if(this.getOptionValueSource(B)==="env")return`environment variable '${z.envVar}'`;return`option '${z.flags}'`},X=`error: ${Q(q)} cannot be used with ${Q(J)}`;this.error(X,{code:"commander.conflictingOption"})}unknownOption(q){if(this._allowUnknownOption)return;let J="";if(q.startsWith("--")&&this._showSuggestionAfterError){let Q=[],X=this;do{let Y=X.createHelp().visibleOptions(X).filter((z)=>z.long).map((z)=>z.long);Q=Q.concat(Y),X=X.parent}while(X&&!X._enablePositionalOptions);J=Q4(q,Q)}let Z=`error: unknown option '${q}'${J}`;this.error(Z,{code:"commander.unknownOption"})}_excessArguments(q){if(this._allowExcessArguments)return;let J=this.registeredArguments.length,Z=J===1?"":"s",X=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${J} argument${Z} but got ${q.length}.`;this.error(X,{code:"commander.excessArguments"})}unknownCommand(){let q=this.args[0],J="";if(this._showSuggestionAfterError){let Q=[];this.createHelp().visibleCommands(this).forEach((X)=>{if(Q.push(X.name()),X.alias())Q.push(X.alias())}),J=Q4(q,Q)}let Z=`error: unknown command '${q}'${J}`;this.error(Z,{code:"commander.unknownCommand"})}version(q,J,Z){if(q===void 0)return this._version;this._version=q,J=J||"-V, --version",Z=Z||"output the version number";let Q=this.createOption(J,Z);return this._versionOptionName=Q.attributeName(),this._registerOption(Q),this.on("option:"+Q.name(),()=>{this._outputConfiguration.writeOut(`${q}
25
25
  `),this._exit(0,"commander.version",q)}),this}description(q,J){if(q===void 0&&J===void 0)return this._description;if(this._description=q,J)this._argsDescription=J;return this}summary(q){if(q===void 0)return this._summary;return this._summary=q,this}alias(q){if(q===void 0)return this._aliases[0];let J=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)J=this.commands[this.commands.length-1];if(q===J._name)throw Error("Command alias can't be the same as its name");let Z=this.parent?._findCommand(q);if(Z){let Q=[Z.name()].concat(Z.aliases()).join("|");throw Error(`cannot add alias '${q}' to command '${this.name()}' as already have command '${Q}'`)}return J._aliases.push(q),this}aliases(q){if(q===void 0)return this._aliases;return q.forEach((J)=>this.alias(J)),this}usage(q){if(q===void 0){if(this._usage)return this._usage;let J=this.registeredArguments.map((Z)=>{return W9(Z)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?J:[]).join(" ")}return this._usage=q,this}name(q){if(q===void 0)return this._name;return this._name=q,this}helpGroup(q){if(q===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=q,this}commandsGroup(q){if(q===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=q,this}optionsGroup(q){if(q===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=q,this}_initOptionGroup(q){if(this._defaultOptionGroup&&!q.helpGroupHeading)q.helpGroup(this._defaultOptionGroup)}_initCommandGroup(q){if(this._defaultCommandGroup&&!q.helpGroup())q.helpGroup(this._defaultCommandGroup)}nameFromFilename(q){return this._name=u.basename(q,u.extname(q)),this}executableDir(q){if(q===void 0)return this._executableDir;return this._executableDir=q,this}helpInformation(q){let J=this.createHelp(),Z=this._getOutputContext(q);J.prepareContext({error:Z.error,helpWidth:Z.helpWidth,outputHasColors:Z.hasColors});let Q=J.formatHelp(this,J);if(Z.hasColors)return Q;return this._outputConfiguration.stripColor(Q)}_getOutputContext(q){q=q||{};let J=!!q.error,Z,Q,X;if(J)Z=(z)=>this._outputConfiguration.writeErr(z),Q=this._outputConfiguration.getErrHasColors(),X=this._outputConfiguration.getErrHelpWidth();else Z=(z)=>this._outputConfiguration.writeOut(z),Q=this._outputConfiguration.getOutHasColors(),X=this._outputConfiguration.getOutHelpWidth();return{error:J,write:(z)=>{if(!Q)z=this._outputConfiguration.stripColor(z);return Z(z)},hasColors:Q,helpWidth:X}}outputHelp(q){let J;if(typeof q==="function")J=q,q=void 0;let Z=this._getOutputContext(q),Q={error:Z.error,write:Z.write,command:this};this._getCommandAndAncestors().reverse().forEach((Y)=>Y.emit("beforeAllHelp",Q)),this.emit("beforeHelp",Q);let X=this.helpInformation({error:Z.error});if(J){if(X=J(X),typeof X!=="string"&&!Buffer.isBuffer(X))throw Error("outputHelp callback must return a string or a Buffer")}if(Z.write(X),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",Q),this._getCommandAndAncestors().forEach((Y)=>Y.emit("afterAllHelp",Q))}helpOption(q,J){if(typeof q==="boolean"){if(q){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption(q??"-h, --help",J??"display help for command"),q||J)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(q){return this._helpOption=q,this._initOptionGroup(q),this}help(q){this.outputHelp(q);let J=Number(b.exitCode??0);if(J===0&&q&&typeof q!=="function"&&q.error)J=1;this._exit(J,"commander.help","(outputHelp)")}addHelpText(q,J){let Z=["beforeAll","before","after","afterAll"];if(!Z.includes(q))throw Error(`Unexpected value for position to addHelpText.
26
26
  Expecting one of '${Z.join("', '")}'`);let Q=`${q}Help`;return this.on(Q,(X)=>{let Y;if(typeof J==="function")Y=J({error:X.error,command:X.command});else Y=J;if(Y)X.write(`${Y}
27
- `)}),this}_outputHelpIfRequested(q){let J=this._getHelpOption();if(J&&q.find((Q)=>J.is(Q)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function X4(q){return q.map((J)=>{if(!J.startsWith("--inspect"))return J;let Z,Q="127.0.0.1",X="9229",Y;if((Y=J.match(/^(--inspect(-brk)?)$/))!==null)Z=Y[1];else if((Y=J.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(Z=Y[1],/^\d+$/.test(Y[3]))X=Y[3];else Q=Y[3];else if((Y=J.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)Z=Y[1],Q=Y[3],X=Y[4];if(Z&&X!=="0")return`${Z}=${Q}:${parseInt(X)+1}`;return J})}function V1(){if(b.env.NO_COLOR||b.env.FORCE_COLOR==="0"||b.env.FORCE_COLOR==="false")return!1;if(b.env.FORCE_COLOR||b.env.CLICOLOR_FORCE!==void 0)return!0;return}b9.Command=W1;b9.useColor=V1});var H4=h((w9)=>{var{Argument:z4}=s(),{Command:N1}=Y4(),{CommanderError:F9,InvalidArgumentError:B4}=r(),{Help:C9}=S1(),{Option:G4}=U1();w9.program=new N1;w9.createCommand=(q)=>new N1(q);w9.createOption=(q,J)=>new G4(q,J);w9.createArgument=(q,J)=>new z4(q,J);w9.Command=N1;w9.Option=G4;w9.Argument=z4;w9.Help=C9;w9.CommanderError=F9;w9.InvalidArgumentError=B4;w9.InvalidOptionArgumentError=B4});var P1=h((v0,D1)=>{var Z1=process||{},K4=Z1.argv||[],J1=Z1.env||{},o9=!(!!J1.NO_COLOR||K4.includes("--no-color"))&&(!!J1.FORCE_COLOR||K4.includes("--color")||Z1.platform==="win32"||(Z1.stdout||{}).isTTY&&J1.TERM!=="dumb"||!!J1.CI),a9=(q,J,Z=q)=>(Q)=>{let X=""+Q,Y=X.indexOf(J,q.length);return~Y?q+s9(X,J,Z,Y)+J:q+X+J},s9=(q,J,Z,Q)=>{let X="",Y=0;do X+=q.substring(Y,Q)+Z,Y=Q+J.length,Q=q.indexOf(J,Y);while(~Q);return X+q.substring(Y)},I4=(q=o9)=>{let J=q?a9:()=>String;return{isColorSupported:q,reset:J("\x1B[0m","\x1B[0m"),bold:J("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:J("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:J("\x1B[3m","\x1B[23m"),underline:J("\x1B[4m","\x1B[24m"),inverse:J("\x1B[7m","\x1B[27m"),hidden:J("\x1B[8m","\x1B[28m"),strikethrough:J("\x1B[9m","\x1B[29m"),black:J("\x1B[30m","\x1B[39m"),red:J("\x1B[31m","\x1B[39m"),green:J("\x1B[32m","\x1B[39m"),yellow:J("\x1B[33m","\x1B[39m"),blue:J("\x1B[34m","\x1B[39m"),magenta:J("\x1B[35m","\x1B[39m"),cyan:J("\x1B[36m","\x1B[39m"),white:J("\x1B[37m","\x1B[39m"),gray:J("\x1B[90m","\x1B[39m"),bgBlack:J("\x1B[40m","\x1B[49m"),bgRed:J("\x1B[41m","\x1B[49m"),bgGreen:J("\x1B[42m","\x1B[49m"),bgYellow:J("\x1B[43m","\x1B[49m"),bgBlue:J("\x1B[44m","\x1B[49m"),bgMagenta:J("\x1B[45m","\x1B[49m"),bgCyan:J("\x1B[46m","\x1B[49m"),bgWhite:J("\x1B[47m","\x1B[49m"),blackBright:J("\x1B[90m","\x1B[39m"),redBright:J("\x1B[91m","\x1B[39m"),greenBright:J("\x1B[92m","\x1B[39m"),yellowBright:J("\x1B[93m","\x1B[39m"),blueBright:J("\x1B[94m","\x1B[39m"),magentaBright:J("\x1B[95m","\x1B[39m"),cyanBright:J("\x1B[96m","\x1B[39m"),whiteBright:J("\x1B[97m","\x1B[39m"),bgBlackBright:J("\x1B[100m","\x1B[49m"),bgRedBright:J("\x1B[101m","\x1B[49m"),bgGreenBright:J("\x1B[102m","\x1B[49m"),bgYellowBright:J("\x1B[103m","\x1B[49m"),bgBlueBright:J("\x1B[104m","\x1B[49m"),bgMagentaBright:J("\x1B[105m","\x1B[49m"),bgCyanBright:J("\x1B[106m","\x1B[49m"),bgWhiteBright:J("\x1B[107m","\x1B[49m")}};D1.exports=I4();D1.exports.createColors=I4});var E1=h((h0,S4)=>{var b1={to(q,J){if(!J)return`\x1B[${q+1}G`;return`\x1B[${J+1};${q+1}H`},move(q,J){let Z="";if(q<0)Z+=`\x1B[${-q}D`;else if(q>0)Z+=`\x1B[${q}C`;if(J<0)Z+=`\x1B[${-J}A`;else if(J>0)Z+=`\x1B[${J}B`;return Z},up:(q=1)=>`\x1B[${q}A`,down:(q=1)=>`\x1B[${q}B`,forward:(q=1)=>`\x1B[${q}C`,backward:(q=1)=>`\x1B[${q}D`,nextLine:(q=1)=>"\x1B[E".repeat(q),prevLine:(q=1)=>"\x1B[F".repeat(q),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},e9={up:(q=1)=>"\x1B[S".repeat(q),down:(q=1)=>"\x1B[T".repeat(q)},t9={screen:"\x1B[2J",up:(q=1)=>"\x1B[1J".repeat(q),down:(q=1)=>"\x1B[J".repeat(q),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(q){let J="";for(let Z=0;Z<q;Z++)J+=this.line+(Z<q-1?b1.up():"");if(q)J+=b1.left;return J}};S4.exports={cursor:b1,scroll:e9,erase:t9,beep:"\x07"}});var _4=i(H4(),1),{program:m,createCommand:I0,createArgument:S0,createOption:U0,CommanderError:j0,InvalidArgumentError:L0,InvalidOptionArgumentError:V0,Command:W0,Argument:N0,Option:D0,Help:P0}=_4.default;var t={name:"@mintplex-labs/anything-llm-cli",version:"0.0.9",description:"A CLI tool to interact with AnythingLLM from the terminal",type:"module",bin:{any:"dist/index.js"},files:["dist/index.js","README.md"],keywords:["anythingllm","llm","cli","ai"],repository:{type:"git",url:"https://github.com/Mintplex-Labs/anything-llm-cli"},license:"MIT",scripts:{setup:"cp .env.example .env.local && bun install",start:"bun run src/index.ts",build:"bun build --compile --minify --outfile=dist/any src/index.ts","build:npm":"bun build --minify --target=node --banner '#!/usr/bin/env node' --outfile=dist/index.js src/index.ts",prepublishOnly:"bun run build:npm",lint:"bunx biome check --write .","build:linux-x64":"bun build --compile --minify --target=bun-linux-x64 --outfile=dist/any-linux-x64 src/index.ts","build:linux-arm64":"bun build --compile --minify --target=bun-linux-arm64 --outfile=dist/any-linux-arm64 src/index.ts","build:windows-x64":"bun build --compile --minify --target=bun-windows-x64 --outfile=dist/any-windows-x64.exe src/index.ts","build:darwin-x64":"bun build --compile --minify --target=bun-darwin-x64 --outfile=dist/any-darwin-x64 src/index.ts","build:darwin-arm64":"bun build --compile --minify --target=bun-darwin-arm64 --outfile=dist/any-darwin-arm64 src/index.ts","build:all":"bun run build:linux-x64 && bun run build:linux-arm64 && bun run build:windows-x64 && bun run build:darwin-x64 && bun run build:darwin-arm64"},devDependencies:{"@biomejs/biome":"2.3.15","@types/bun":"latest",lefthook:"^2.1.1"},peerDependencies:{typescript:"^5"},dependencies:{"@clack/prompts":"^1.0.1",commander:"^14.0.3"}};import{readFileSync as l9}from"node:fs";import{basename as p9,extname as i9,resolve as n9}from"node:path";class q1{apiKey=process.env.ANYTHINGLLM_API_KEY||"";baseUrl=new URL("http://localhost:3001");static fileToAttachment(q){let J={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp"},Z=n9(q),Q=i9(Z).toLowerCase(),X=J[Q];if(!X)console.error(`Unsupported file type: ${Q}
27
+ `)}),this}_outputHelpIfRequested(q){let J=this._getHelpOption();if(J&&q.find((Q)=>J.is(Q)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function X4(q){return q.map((J)=>{if(!J.startsWith("--inspect"))return J;let Z,Q="127.0.0.1",X="9229",Y;if((Y=J.match(/^(--inspect(-brk)?)$/))!==null)Z=Y[1];else if((Y=J.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(Z=Y[1],/^\d+$/.test(Y[3]))X=Y[3];else Q=Y[3];else if((Y=J.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)Z=Y[1],Q=Y[3],X=Y[4];if(Z&&X!=="0")return`${Z}=${Q}:${parseInt(X)+1}`;return J})}function V1(){if(b.env.NO_COLOR||b.env.FORCE_COLOR==="0"||b.env.FORCE_COLOR==="false")return!1;if(b.env.FORCE_COLOR||b.env.CLICOLOR_FORCE!==void 0)return!0;return}b9.Command=W1;b9.useColor=V1});var H4=h((w9)=>{var{Argument:z4}=s(),{Command:N1}=Y4(),{CommanderError:F9,InvalidArgumentError:B4}=r(),{Help:C9}=S1(),{Option:G4}=U1();w9.program=new N1;w9.createCommand=(q)=>new N1(q);w9.createOption=(q,J)=>new G4(q,J);w9.createArgument=(q,J)=>new z4(q,J);w9.Command=N1;w9.Option=G4;w9.Argument=z4;w9.Help=C9;w9.CommanderError=F9;w9.InvalidArgumentError=B4;w9.InvalidOptionArgumentError=B4});var P1=h((v0,D1)=>{var Z1=process||{},K4=Z1.argv||[],J1=Z1.env||{},o9=!(!!J1.NO_COLOR||K4.includes("--no-color"))&&(!!J1.FORCE_COLOR||K4.includes("--color")||Z1.platform==="win32"||(Z1.stdout||{}).isTTY&&J1.TERM!=="dumb"||!!J1.CI),a9=(q,J,Z=q)=>(Q)=>{let X=""+Q,Y=X.indexOf(J,q.length);return~Y?q+s9(X,J,Z,Y)+J:q+X+J},s9=(q,J,Z,Q)=>{let X="",Y=0;do X+=q.substring(Y,Q)+Z,Y=Q+J.length,Q=q.indexOf(J,Y);while(~Q);return X+q.substring(Y)},I4=(q=o9)=>{let J=q?a9:()=>String;return{isColorSupported:q,reset:J("\x1B[0m","\x1B[0m"),bold:J("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:J("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:J("\x1B[3m","\x1B[23m"),underline:J("\x1B[4m","\x1B[24m"),inverse:J("\x1B[7m","\x1B[27m"),hidden:J("\x1B[8m","\x1B[28m"),strikethrough:J("\x1B[9m","\x1B[29m"),black:J("\x1B[30m","\x1B[39m"),red:J("\x1B[31m","\x1B[39m"),green:J("\x1B[32m","\x1B[39m"),yellow:J("\x1B[33m","\x1B[39m"),blue:J("\x1B[34m","\x1B[39m"),magenta:J("\x1B[35m","\x1B[39m"),cyan:J("\x1B[36m","\x1B[39m"),white:J("\x1B[37m","\x1B[39m"),gray:J("\x1B[90m","\x1B[39m"),bgBlack:J("\x1B[40m","\x1B[49m"),bgRed:J("\x1B[41m","\x1B[49m"),bgGreen:J("\x1B[42m","\x1B[49m"),bgYellow:J("\x1B[43m","\x1B[49m"),bgBlue:J("\x1B[44m","\x1B[49m"),bgMagenta:J("\x1B[45m","\x1B[49m"),bgCyan:J("\x1B[46m","\x1B[49m"),bgWhite:J("\x1B[47m","\x1B[49m"),blackBright:J("\x1B[90m","\x1B[39m"),redBright:J("\x1B[91m","\x1B[39m"),greenBright:J("\x1B[92m","\x1B[39m"),yellowBright:J("\x1B[93m","\x1B[39m"),blueBright:J("\x1B[94m","\x1B[39m"),magentaBright:J("\x1B[95m","\x1B[39m"),cyanBright:J("\x1B[96m","\x1B[39m"),whiteBright:J("\x1B[97m","\x1B[39m"),bgBlackBright:J("\x1B[100m","\x1B[49m"),bgRedBright:J("\x1B[101m","\x1B[49m"),bgGreenBright:J("\x1B[102m","\x1B[49m"),bgYellowBright:J("\x1B[103m","\x1B[49m"),bgBlueBright:J("\x1B[104m","\x1B[49m"),bgMagentaBright:J("\x1B[105m","\x1B[49m"),bgCyanBright:J("\x1B[106m","\x1B[49m"),bgWhiteBright:J("\x1B[107m","\x1B[49m")}};D1.exports=I4();D1.exports.createColors=I4});var E1=h((h0,S4)=>{var b1={to(q,J){if(!J)return`\x1B[${q+1}G`;return`\x1B[${J+1};${q+1}H`},move(q,J){let Z="";if(q<0)Z+=`\x1B[${-q}D`;else if(q>0)Z+=`\x1B[${q}C`;if(J<0)Z+=`\x1B[${-J}A`;else if(J>0)Z+=`\x1B[${J}B`;return Z},up:(q=1)=>`\x1B[${q}A`,down:(q=1)=>`\x1B[${q}B`,forward:(q=1)=>`\x1B[${q}C`,backward:(q=1)=>`\x1B[${q}D`,nextLine:(q=1)=>"\x1B[E".repeat(q),prevLine:(q=1)=>"\x1B[F".repeat(q),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},e9={up:(q=1)=>"\x1B[S".repeat(q),down:(q=1)=>"\x1B[T".repeat(q)},t9={screen:"\x1B[2J",up:(q=1)=>"\x1B[1J".repeat(q),down:(q=1)=>"\x1B[J".repeat(q),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(q){let J="";for(let Z=0;Z<q;Z++)J+=this.line+(Z<q-1?b1.up():"");if(q)J+=b1.left;return J}};S4.exports={cursor:b1,scroll:e9,erase:t9,beep:"\x07"}});var _4=i(H4(),1),{program:m,createCommand:I0,createArgument:S0,createOption:U0,CommanderError:j0,InvalidArgumentError:L0,InvalidOptionArgumentError:V0,Command:W0,Argument:N0,Option:D0,Help:P0}=_4.default;var t={name:"@mintplex-labs/anything-llm-cli",version:"0.0.10",description:"A CLI tool to interact with AnythingLLM from the terminal",type:"module",bin:{any:"dist/index.js"},files:["dist/index.js","README.md"],keywords:["anythingllm","llm","cli","ai"],repository:{type:"git",url:"https://github.com/Mintplex-Labs/anything-llm-cli"},license:"MIT",scripts:{setup:"cp .env.example .env.local && bun install",start:"bun run src/index.ts",build:"bun build --compile --minify --outfile=dist/any src/index.ts","build:npm":"bun build --minify --target=node --banner '#!/usr/bin/env node' --outfile=dist/index.js src/index.ts",prepublishOnly:"bun run build:npm",lint:"bunx biome check --write .","build:linux-x64":"bun build --compile --minify --target=bun-linux-x64 --outfile=dist/any-linux-x64 src/index.ts","build:linux-arm64":"bun build --compile --minify --target=bun-linux-arm64 --outfile=dist/any-linux-arm64 src/index.ts","build:windows-x64":"bun build --compile --minify --target=bun-windows-x64 --outfile=dist/any-windows-x64.exe src/index.ts","build:darwin-x64":"bun build --compile --minify --target=bun-darwin-x64 --outfile=dist/any-darwin-x64 src/index.ts","build:darwin-arm64":"bun build --compile --minify --target=bun-darwin-arm64 --outfile=dist/any-darwin-arm64 src/index.ts","build:all":"bun run build:linux-x64 && bun run build:linux-arm64 && bun run build:windows-x64 && bun run build:darwin-x64 && bun run build:darwin-arm64"},devDependencies:{"@biomejs/biome":"2.3.15","@types/bun":"latest",lefthook:"^2.1.1"},peerDependencies:{typescript:"^5"},dependencies:{"@clack/prompts":"^1.0.1",commander:"^14.0.3"}};import{readFileSync as l9}from"node:fs";import{basename as p9,extname as i9,resolve as n9}from"node:path";class q1{apiKey=process.env.ANYTHINGLLM_API_KEY||"";baseUrl=new URL("http://localhost:3001");static fileToAttachment(q){let J={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp"},Z=n9(q),Q=i9(Z).toLowerCase(),X=J[Q];if(!X)console.error(`Unsupported file type: ${Q}
28
28
  Supported: ${Object.keys(J).join(", ")}`),process.exit(1);let z=l9(Z).toString("base64");return{name:p9(Z),mime:X,contentString:`data:${X};base64,${z}`}}streamResponse(q,J){let Z=this;return{[Symbol.asyncIterator](){return async function*(){let Q=new URL(q,Z.baseUrl),X=await fetch(Q.href,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z.apiKey}`},body:JSON.stringify(J)});if(!X.ok||!X.body)throw Error(`Stream request failed with status ${X.status}`);let Y=new TextDecoder,z="";for await(let B of X.body){z+=Y.decode(B,{stream:!0});let G=z.split(`
29
29
 
30
30
  `);z=G.pop()||"";for(let H of G){let _=H.trim();if(!_.startsWith("data:"))continue;yield JSON.parse(_.slice(5).trim())}}}()}}}async callApi(q,J={}){try{let Z=new URL(q,this.baseUrl),Q=await fetch(Z.href,{method:J.method||"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:J.body?JSON.stringify(J.body):void 0});if(!Q.ok){let Y=await Q.text();throw Error(`API request failed with status ${Q.status}: ${Y}`)}return{ok:!0,data:await Q.json()}}catch(Z){return{ok:!1,error:Z instanceof Error?Z.message:String(Z)}}}admin={};documents={};systemSettings={};embeds={};workspaces={create:async(q)=>{return this.callApi("api/v1/workspace/new",{method:"POST",body:{...q,openAiTemp:q.temperature,openAiHistory:q.historyMessageCount,openAiPrompt:q.systemPrompt,chatMode:q.mode}})},list:async()=>{return this.callApi("api/v1/workspaces")},get:async(q)=>{return this.callApi(`api/v1/workspace/${q.slug}`)},chat:async(q)=>{return this.callApi(`api/v1/workspace/${q.slug}/chat`,{method:"POST",body:{message:q.message,mode:q.mode??"chat",attachments:q.attachments}})},streamChat:(q)=>{return this.streamResponse(`api/v1/workspace/${q.slug}/stream-chat`,{message:q.message,mode:q.mode??"chat",attachments:q.attachments})}};threads={create:async(q)=>{return this.callApi(`api/v1/workspace/${q.workspaceSlug}/thread/new`,{method:"POST",body:{...q,name:q.title}})},chat:async(q)=>{return this.callApi(`api/v1/workspace/${q.workspaceSlug}/thread/${q.threadSlug}/chat`,{method:"POST",body:{message:q.message,mode:q.mode??"chat",attachments:q.attachments}})},streamChat:(q)=>{return this.streamResponse(`api/v1/workspace/${q.workspaceSlug}/thread/${q.threadSlug}/stream-chat`,{message:q.message,mode:q.mode??"chat",attachments:q.attachments})},getMessages:async(q)=>{let J=q.threadSlug?`api/v1/workspace/${q.workspaceSlug}/thread/${q.threadSlug}/chats`:`api/v1/workspace/${q.workspaceSlug}/chats`;return this.callApi(J)}};constructor({apiKey:q,baseUrl:J}){this.apiKey=q||this.apiKey,this.baseUrl=J?new URL(J):this.baseUrl}}function M4(){return new Promise((q)=>{let J="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",(Z)=>{J+=Z}),process.stdin.on("end",()=>q(J))})}var R4="anythingllm-cli-default-workspace";async function T4(q,J){let Z=q.join(" "),Q=process.env.ANYTHING_LLM_API_KEY;if(!Q)console.error("ANYTHING_LLM_API_KEY environment variable is not set"),process.exit(1);let X="";if(!process.stdin.isTTY)X=await M4();let Y=X?`${X} ${Z}`:Z,z=J.attach?J.attach.map(q1.fileToAttachment):void 0,B=new q1({apiKey:Q,baseUrl:process.env.ANYTHING_LLM_BASE_URL}),G=J.workspace||R4;if(G===R4){let U=await B.workspaces.get({slug:G});if(!U.ok)console.error(`Failed to get workspace "${G}": ${U.error}`),process.exit(1);if(U.data.workspace.length===0){let D=await B.workspaces.create({name:"AnythingLLM CLI Default Workspace",systemPrompt:"You are a helpful assistant responding to prompts from the AnythingLLM CLI tool. You will sometimes receive context passed in from the stdinput."});if(!D.ok)console.error(`Failed to create workspace: ${D.error}`),process.exit(1)}}let H=J.thread;if(J.newThread){let U=await B.threads.create({workspaceSlug:G,title:`AnythingLLM CLI Thread - ${new Date().toLocaleString()}`});if(!U.ok)console.error(`Failed to create thread: ${U.error}`),process.exit(1);H=U.data.thread.slug}if(!J.stream){let U=H?await B.threads.chat({threadSlug:H,message:Y,workspaceSlug:G,attachments:z}):await B.workspaces.chat({slug:G,message:Y,attachments:z});if(!U.ok)console.error(`LLM request failed: ${U.error}`),process.exit(1);process.stdout.write(`${U.data.textResponse}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mintplex-labs/anything-llm-cli",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "A CLI tool to interact with AnythingLLM from the terminal",
5
5
  "type": "module",
6
6
  "bin": {