@involvex/super-agent-cli 0.0.88 → 0.0.91

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 (47) hide show
  1. package/dist/index.js +173 -84
  2. package/dist/super-agent-cli.exe +0 -0
  3. package/dist/super-agent.js +5 -1
  4. package/eslint.config.mjs +1 -1
  5. package/package.json +12 -10
  6. package/super-agent.js +5 -1
  7. package/vscode-extension/.vscodeignore +1 -1
  8. package/vscode-extension/assets/OIG2.DOaPIFEsckNdoFMZfTst.jpeg +0 -0
  9. package/vscode-extension/assets/OIG2.VAWPCioTg1WMPjh6hCKf.jpeg +0 -0
  10. package/vscode-extension/assets/OIG2.lB.rOYX.C99.N1x8iyfe.jpeg +0 -0
  11. package/vscode-extension/assets/OIG2.lUJOmexttYsbAVqCtOwM.jpeg +0 -0
  12. package/vscode-extension/assets/OIG3.emS4s05QfD4P1jTVi3Fe.jpeg +0 -0
  13. package/vscode-extension/assets/icon.PNG +0 -0
  14. package/vscode-extension/build.js +4 -4
  15. package/vscode-extension/dist/chat-provider.js +262 -0
  16. package/vscode-extension/dist/chat-provider.js.map +1 -0
  17. package/vscode-extension/dist/chat.css +268 -0
  18. package/vscode-extension/dist/chat.js +233 -0
  19. package/vscode-extension/dist/cli-connector.js +296 -0
  20. package/vscode-extension/dist/cli-connector.js.map +1 -0
  21. package/vscode-extension/dist/extension.js +156 -0
  22. package/vscode-extension/dist/extension.js.map +1 -0
  23. package/vscode-extension/dist/file-context.js +230 -0
  24. package/vscode-extension/dist/file-context.js.map +1 -0
  25. package/vscode-extension/dist/node_modules/ws/LICENSE +20 -0
  26. package/vscode-extension/dist/node_modules/ws/README.md +548 -0
  27. package/vscode-extension/dist/node_modules/ws/browser.js +8 -0
  28. package/vscode-extension/dist/node_modules/ws/index.js +13 -0
  29. package/vscode-extension/dist/node_modules/ws/lib/buffer-util.js +131 -0
  30. package/vscode-extension/dist/node_modules/ws/lib/constants.js +19 -0
  31. package/vscode-extension/dist/node_modules/ws/lib/event-target.js +292 -0
  32. package/vscode-extension/dist/node_modules/ws/lib/extension.js +203 -0
  33. package/vscode-extension/dist/node_modules/ws/lib/limiter.js +55 -0
  34. package/vscode-extension/dist/node_modules/ws/lib/permessage-deflate.js +528 -0
  35. package/vscode-extension/dist/node_modules/ws/lib/receiver.js +706 -0
  36. package/vscode-extension/dist/node_modules/ws/lib/sender.js +602 -0
  37. package/vscode-extension/dist/node_modules/ws/lib/stream.js +161 -0
  38. package/vscode-extension/dist/node_modules/ws/lib/subprotocol.js +62 -0
  39. package/vscode-extension/dist/node_modules/ws/lib/validation.js +152 -0
  40. package/vscode-extension/dist/node_modules/ws/lib/websocket-server.js +554 -0
  41. package/vscode-extension/dist/node_modules/ws/lib/websocket.js +1393 -0
  42. package/vscode-extension/dist/node_modules/ws/package.json +69 -0
  43. package/vscode-extension/dist/node_modules/ws/wrapper.mjs +8 -0
  44. package/vscode-extension/dist/super-agent-vscode-0.0.3.vsix +0 -0
  45. package/vscode-extension/icon.png +0 -0
  46. package/vscode-extension/icon.svg +11 -0
  47. package/vscode-extension/package.json +11 -11
package/dist/index.js CHANGED
@@ -1731,7 +1731,7 @@ var init_indexer = __esm(() => {
1731
1731
  var require_package = __commonJS((exports, module) => {
1732
1732
  module.exports = {
1733
1733
  name: "@involvex/super-agent-cli",
1734
- version: "0.0.88",
1734
+ version: "0.0.91",
1735
1735
  description: "An open-source AI agent that brings the power of Super Agent directly into your terminal.",
1736
1736
  keywords: [
1737
1737
  "cli",
@@ -1759,7 +1759,7 @@ var require_package = __commonJS((exports, module) => {
1759
1759
  },
1760
1760
  main: "dist/index.js",
1761
1761
  bin: {
1762
- "super-agent": "super-agent.js"
1762
+ "super-agent": "dist/super-agent.js"
1763
1763
  },
1764
1764
  workspaces: [
1765
1765
  "@plugins/templates/*",
@@ -1768,7 +1768,7 @@ var require_package = __commonJS((exports, module) => {
1768
1768
  ],
1769
1769
  scripts: {
1770
1770
  prebuild: "bun run format && bun run lint:fix && bun run typecheck",
1771
- build: "bun build src/index.ts --outdir ./dist --target node --packages external --format esm && bun run copy-bin && bun run build:web",
1771
+ build: "bun build src/index.ts --outdir ./dist --target node --packages external --format esm && bun run copy-bin && bun run build:web && bun run build:plugins && bun run build:vscode && bun run package:vscode",
1772
1772
  "build:bun": "bun build src/index.ts --outdir ./dist --target node --packages external --format esm",
1773
1773
  "build:plugins": "bun run -F @involvex/super-agent\\* build",
1774
1774
  "build:vscode": "bun run -F super-agent-vscode build",
@@ -1794,9 +1794,12 @@ var require_package = __commonJS((exports, module) => {
1794
1794
  "test:watch": "vitest",
1795
1795
  typecheck: "tsc --noEmit"
1796
1796
  },
1797
+ overrides: {
1798
+ "@modelcontextprotocol/sdk": "^1.26.0"
1799
+ },
1797
1800
  dependencies: {
1798
1801
  "@google/generative-ai": "^0.24.1",
1799
- "@modelcontextprotocol/sdk": "^1.25.3",
1802
+ "@modelcontextprotocol/sdk": "^1.26.0",
1800
1803
  "@types/mime": "^4.0.0",
1801
1804
  axios: "^1.13.4",
1802
1805
  bcrypt: "^6.0.0",
@@ -1804,9 +1807,8 @@ var require_package = __commonJS((exports, module) => {
1804
1807
  chalk: "^5.6.2",
1805
1808
  commander: "^14.0.3",
1806
1809
  "conventional-changelog-cli": "^5.0.0",
1807
- dotenv: "^17.2.3",
1808
- enquirer: "^2.4.1",
1809
- firebase: "^12.8.0",
1810
+ dotenv: "^17.2.4",
1811
+ firebase: "^12.9.0",
1810
1812
  "fs-extra": "^11.3.3",
1811
1813
  ignore: "^7.0.5",
1812
1814
  ink: "^6.6.0",
@@ -1815,7 +1817,7 @@ var require_package = __commonJS((exports, module) => {
1815
1817
  "marked-terminal": "^7.3.0",
1816
1818
  mime: "^4.1.0",
1817
1819
  open: "^11.0.0",
1818
- openai: "^6.17.0",
1820
+ openai: "^6.18.0",
1819
1821
  react: "^19.2.4",
1820
1822
  "ripgrep-node": "^1.0.0",
1821
1823
  "shell-quote": "^1.8.3",
@@ -1824,7 +1826,7 @@ var require_package = __commonJS((exports, module) => {
1824
1826
  },
1825
1827
  devDependencies: {
1826
1828
  "@types/fs-extra": "^11.0.4",
1827
- "@types/node": "^25.1.0",
1829
+ "@types/node": "^25.2.1",
1828
1830
  "@types/react": "18.3.27",
1829
1831
  "@types/ws": "^8.18.1",
1830
1832
  "@typescript-eslint/eslint-plugin": "^8.54.0",
@@ -1834,7 +1836,7 @@ var require_package = __commonJS((exports, module) => {
1834
1836
  prettier: "^3.8.1",
1835
1837
  "prettier-plugin-organize-imports": "^4.3.0",
1836
1838
  "prettier-plugin-packagejson": "^3.0.0",
1837
- "prettier-plugin-sort-imports": "^1.8.9",
1839
+ "prettier-plugin-sort-imports": "^1.8.10",
1838
1840
  "react-devtools-core": "^7.0.1",
1839
1841
  tsx: "^4.21.0",
1840
1842
  typescript: "^5.9.3",
@@ -1992,11 +1994,9 @@ var BANNER = `
1992
1994
  `;
1993
1995
 
1994
1996
  // src/utils/confirmation-service.ts
1995
- import { exec, spawn } from "child_process";
1996
1997
  import { strict as assert } from "assert";
1998
+ import { spawn } from "child_process";
1997
1999
  import { EventEmitter } from "events";
1998
- import { promisify } from "util";
1999
- var execAsync = promisify(exec);
2000
2000
 
2001
2001
  class ConfirmationService extends EventEmitter {
2002
2002
  static instance;
@@ -2911,11 +2911,53 @@ init_config();
2911
2911
 
2912
2912
  // src/plugins/manager.ts
2913
2913
  init_settings_manager();
2914
- import { exec as exec2 } from "child_process";
2915
- import { promisify as promisify2 } from "util";
2914
+
2915
+ // src/utils/exec.ts
2916
+ import { spawn as spawn2 } from "child_process";
2917
+ async function runSafeCommand(command, args, options = {}) {
2918
+ return new Promise((resolve, reject) => {
2919
+ const child = spawn2(command, args, {
2920
+ cwd: options.cwd || process.cwd(),
2921
+ env: { ...process.env, ...options.env },
2922
+ shell: false
2923
+ });
2924
+ let stdout = "";
2925
+ let stderr = "";
2926
+ if (child.stdout) {
2927
+ child.stdout.on("data", (data) => {
2928
+ stdout += data.toString();
2929
+ });
2930
+ }
2931
+ if (child.stderr) {
2932
+ child.stderr.on("data", (data) => {
2933
+ stderr += data.toString();
2934
+ });
2935
+ }
2936
+ if (options.input && child.stdin) {
2937
+ child.stdin.write(options.input);
2938
+ child.stdin.end();
2939
+ }
2940
+ child.on("close", (code) => {
2941
+ if (code === 0) {
2942
+ resolve({ stdout, stderr });
2943
+ } else {
2944
+ const error = new Error(`Command "${command} ${args.join(" ")}" failed with exit code ${code}.
2945
+ Stderr: ${stderr}`);
2946
+ error.code = code;
2947
+ error.stdout = stdout;
2948
+ error.stderr = stderr;
2949
+ reject(error);
2950
+ }
2951
+ });
2952
+ child.on("error", (err) => {
2953
+ reject(err);
2954
+ });
2955
+ });
2956
+ }
2957
+
2958
+ // src/plugins/manager.ts
2916
2959
  import * as path4 from "path";
2917
2960
  import fs4 from "fs-extra";
2918
- var execAsync2 = promisify2(exec2);
2919
2961
 
2920
2962
  class PluginManager {
2921
2963
  static instance;
@@ -3016,12 +3058,14 @@ class PluginManager {
3016
3058
  if (await fs4.pathExists(targetDir)) {
3017
3059
  console.log(`Repository already cloned at ${targetDir}. Pulling latest...`);
3018
3060
  try {
3019
- await execAsync2(`cd "${targetDir}" && git pull`);
3061
+ await runSafeCommand("git", ["pull"], {
3062
+ cwd: targetDir
3063
+ });
3020
3064
  } catch (error) {
3021
3065
  console.warn(`Failed to pull updates: ${error}`);
3022
3066
  }
3023
3067
  } else {
3024
- await execAsync2(`git clone "${gitUrl}" "${targetDir}"`);
3068
+ await runSafeCommand("git", ["clone", gitUrl, targetDir]);
3025
3069
  }
3026
3070
  const packageJsonPath = path4.join(targetDir, "package.json");
3027
3071
  if (await fs4.pathExists(packageJsonPath)) {
@@ -3029,11 +3073,17 @@ class PluginManager {
3029
3073
  try {
3030
3074
  const hasBun = await fs4.pathExists(path4.join(targetDir, "bun.lockb"));
3031
3075
  const hasYarn = await fs4.pathExists(path4.join(targetDir, "yarn.lock"));
3032
- const installCmd = hasBun ? "bun install" : hasYarn ? "yarn install" : "npm install";
3033
- await execAsync2(`cd "${targetDir}" && ${installCmd}`);
3076
+ const installCmd = hasBun ? "bun" : hasYarn ? "yarn" : "npm";
3077
+ const installArgs = ["install"];
3078
+ await runSafeCommand(installCmd, installArgs, {
3079
+ cwd: targetDir
3080
+ });
3034
3081
  console.log("\uD83D\uDD28 Building plugin...");
3035
- const buildCmd = hasBun ? "bun run build" : hasYarn ? "yarn build" : "npm run build";
3036
- await execAsync2(`cd "${targetDir}" && ${buildCmd}`);
3082
+ const buildCmd = hasBun ? "bun" : hasYarn ? "yarn" : "npm";
3083
+ const buildArgs = ["run", "build"];
3084
+ await runSafeCommand(buildCmd, buildArgs, {
3085
+ cwd: targetDir
3086
+ });
3037
3087
  } catch (error) {
3038
3088
  console.warn(`Build failed: ${error.message}`);
3039
3089
  }
@@ -3056,11 +3106,17 @@ class PluginManager {
3056
3106
  try {
3057
3107
  const hasBun = await fs4.pathExists(path4.join(absolutePath, "bun.lockb"));
3058
3108
  const hasYarn = await fs4.pathExists(path4.join(absolutePath, "yarn.lock"));
3059
- const installCmd = hasBun ? "bun install" : hasYarn ? "yarn install" : "npm install";
3060
- await execAsync2(`cd "${absolutePath}" && ${installCmd}`);
3109
+ const installCmd = hasBun ? "bun" : hasYarn ? "yarn" : "npm";
3110
+ const installArgs = ["install"];
3111
+ await runSafeCommand(installCmd, installArgs, {
3112
+ cwd: absolutePath
3113
+ });
3061
3114
  console.log("\uD83D\uDD28 Building plugin...");
3062
- const buildCmd = hasBun ? "bun run build" : hasYarn ? "yarn build" : "npm run build";
3063
- await execAsync2(`cd "${absolutePath}" && ${buildCmd}`);
3115
+ const buildCmd = hasBun ? "bun" : hasYarn ? "yarn" : "npm";
3116
+ const buildArgs = ["run", "build"];
3117
+ await runSafeCommand(buildCmd, buildArgs, {
3118
+ cwd: absolutePath
3119
+ });
3064
3120
  } catch (error) {
3065
3121
  console.warn(`Build failed: ${error.message}`);
3066
3122
  }
@@ -3477,11 +3533,8 @@ async function getAllSuperAgentTools() {
3477
3533
  }
3478
3534
 
3479
3535
  // src/plugins/repository-manager.ts
3480
- import { exec as exec3 } from "child_process";
3481
- import { promisify as promisify3 } from "util";
3482
3536
  import * as path5 from "path";
3483
3537
  import fs5 from "fs-extra";
3484
- var execAsync3 = promisify3(exec3);
3485
3538
  var BUILTIN_REPOSITORIES = {
3486
3539
  agents: {
3487
3540
  type: "agents",
@@ -3535,21 +3588,21 @@ class RepositoryManager {
3535
3588
  const gitRoot = process.cwd();
3536
3589
  const gitDirPath = path5.join(gitRoot, ".git");
3537
3590
  if (!await fs5.pathExists(gitDirPath)) {
3538
- await execAsync3(`git clone ${repoConfig.url} ${targetDir}`, {
3591
+ await runSafeCommand("git", ["clone", repoConfig.url, targetDir], {
3539
3592
  cwd: process.cwd()
3540
3593
  });
3541
3594
  } else {
3542
3595
  try {
3543
- await execAsync3(`git submodule add ${repoConfig.url} ${targetDir}`, {
3596
+ await runSafeCommand("git", ["submodule", "add", repoConfig.url, targetDir], {
3544
3597
  cwd: process.cwd()
3545
3598
  });
3546
3599
  } catch (submoduleError) {
3547
- await execAsync3(`git clone ${repoConfig.url} ${targetDir}`, {
3600
+ await runSafeCommand("git", ["clone", repoConfig.url, targetDir], {
3548
3601
  cwd: process.cwd()
3549
3602
  });
3550
3603
  }
3551
3604
  try {
3552
- await execAsync3(`git submodule update --init --recursive`, {
3605
+ await runSafeCommand("git", ["submodule", "update", "--init", "--recursive"], {
3553
3606
  cwd: process.cwd()
3554
3607
  });
3555
3608
  } catch {}
@@ -3567,7 +3620,7 @@ class RepositoryManager {
3567
3620
  const targetDir = path5.join(this.reposDir, config.type);
3568
3621
  try {
3569
3622
  if (await fs5.pathExists(targetDir)) {
3570
- await execAsync3(`git pull origin ${config.branch || "main"}`, {
3623
+ await runSafeCommand("git", ["pull", "origin", config.branch || "main"], {
3571
3624
  cwd: targetDir
3572
3625
  });
3573
3626
  updated.push(key);
@@ -4247,8 +4300,16 @@ Note: Some providers may require a full restart of the CLI to take effect.`;
4247
4300
  if (key.tab || key.return) {
4248
4301
  const safeIndex = Math.min(selectedCommandIndex, filteredSuggestions.length - 1);
4249
4302
  const selectedCommand = filteredSuggestions[safeIndex];
4250
- let completedCommand = selectedCommand.command;
4251
- completedCommand = completedCommand.replace(/\s*<[^>]+>/g, "").replace(/\s*\[[^\]]+\]/g, "");
4303
+ const stripCommandPlaceholders = (command) => {
4304
+ let previous;
4305
+ let current = command;
4306
+ do {
4307
+ previous = current;
4308
+ current = current.replace(/\s*<[^>]+>/g, "").replace(/\s*\[[^\]]+\]/g, "");
4309
+ } while (current !== previous);
4310
+ return current;
4311
+ };
4312
+ let completedCommand = stripCommandPlaceholders(selectedCommand.command);
4252
4313
  if (!completedCommand.endsWith(" ") && selectedCommand.command.includes("<")) {
4253
4314
  completedCommand += " ";
4254
4315
  } else if (!completedCommand.endsWith(" ")) {
@@ -7416,7 +7477,11 @@ function getLogger() {
7416
7477
  // src/ui/components/config-viewer.tsx
7417
7478
  import { Box as Box10, Text as Text9 } from "ink";
7418
7479
  import { jsxDEV as jsxDEV10 } from "react/jsx-dev-runtime";
7419
- function ConfigViewer({ config, isVisible }) {
7480
+ function ConfigViewer({
7481
+ config,
7482
+ isVisible = true,
7483
+ onClose
7484
+ }) {
7420
7485
  if (!isVisible) {
7421
7486
  return null;
7422
7487
  }
@@ -7808,7 +7873,7 @@ init_settings_manager();
7808
7873
 
7809
7874
  // src/tools/bash.ts
7810
7875
  import * as shellQuote from "shell-quote";
7811
- import { spawn as spawn2 } from "child_process";
7876
+ import { spawn as spawn3 } from "child_process";
7812
7877
  class BashTool {
7813
7878
  currentDirectory = process.cwd();
7814
7879
  confirmationService = ConfirmationService.getInstance();
@@ -7821,7 +7886,7 @@ class BashTool {
7821
7886
  const cmd = argv[0];
7822
7887
  const args = argv.slice(1);
7823
7888
  return await new Promise((resolve2, reject) => {
7824
- const child = spawn2(cmd, args, {
7889
+ const child = spawn3(cmd, args, {
7825
7890
  cwd: options.cwd,
7826
7891
  shell: false
7827
7892
  });
@@ -8464,7 +8529,7 @@ Important Files:
8464
8529
  }
8465
8530
  // src/tools/search.ts
8466
8531
  init_indexer();
8467
- import { spawn as spawn3 } from "child_process";
8532
+ import { spawn as spawn4 } from "child_process";
8468
8533
  import * as path16 from "path";
8469
8534
  import fs16 from "fs-extra";
8470
8535
 
@@ -8565,7 +8630,7 @@ class SearchTool {
8565
8630
  }
8566
8631
  args.push("--no-require-git", "--follow", "--glob", "!.git/**", "--glob", "!node_modules/**", "--glob", "!.DS_Store", "--glob", "!*.log");
8567
8632
  args.push(query, this.currentDirectory);
8568
- const rg = spawn3("rg", args);
8633
+ const rg = spawn4("rg", args);
8569
8634
  let output = "";
8570
8635
  let errorOutput = "";
8571
8636
  rg.stdout.on("data", (data) => {
@@ -10252,6 +10317,9 @@ IMPORTANT RESPONSE GUIDELINES:
10252
10317
  Current working directory: ${process.cwd()}`
10253
10318
  });
10254
10319
  }
10320
+ getChatHistory() {
10321
+ return this.chatHistory;
10322
+ }
10255
10323
  async setProvider(providerId) {
10256
10324
  const manager = getSettingsManager();
10257
10325
  const activeProviderId = (providerId || "grok").toLowerCase();
@@ -11935,16 +12003,23 @@ class WebServer {
11935
12003
  ws.on("message", async (data) => {
11936
12004
  try {
11937
12005
  const message = JSON.parse(data.toString());
11938
- if (message.type === "prompt") {
11939
- await this.handlePrompt(message.content, ws);
12006
+ if (message.type === "prompt" || message.type === "chat_message") {
12007
+ const content = message.content?.message || message.content || "";
12008
+ await this.handlePrompt(content, ws);
11940
12009
  } else if (message.type === "get_file_tree") {
11941
12010
  await this.handleGetFileTree(ws);
11942
12011
  } else if (message.type === "get_file_content") {
11943
- await this.handleGetFileContent(message.path, ws);
12012
+ const filePath = message.path || message.filePath;
12013
+ await this.handleGetFileContent(filePath, ws);
11944
12014
  } else if (message.type === "list_sessions") {
11945
12015
  await this.handleListSessions(ws);
11946
12016
  } else if (message.type === "switch_session") {
11947
12017
  await this.handleSwitchSession(message.sessionId, ws);
12018
+ } else if (message.type === "get_chat_history") {
12019
+ await this.handleGetChatHistory(ws);
12020
+ } else if (message.type === "abort") {
12021
+ this.agent.abortCurrentOperation();
12022
+ ws.send(JSON.stringify({ type: "done", content: "Operation aborted" }));
11948
12023
  }
11949
12024
  } catch (error) {
11950
12025
  console.error("WebSocket message error:", error);
@@ -12068,6 +12143,23 @@ class WebServer {
12068
12143
  ws.send(JSON.stringify({ type: "error", content: error.message }));
12069
12144
  }
12070
12145
  }
12146
+ async handleGetChatHistory(ws) {
12147
+ try {
12148
+ const history = this.agent.getChatHistory();
12149
+ ws.send(JSON.stringify({
12150
+ type: "chat_history",
12151
+ messages: history.map((entry) => ({
12152
+ role: entry.type === "user" ? "user" : "assistant",
12153
+ content: entry.content,
12154
+ timestamp: entry.timestamp,
12155
+ toolCall: entry.toolCall,
12156
+ toolResult: entry.toolResult
12157
+ }))
12158
+ }));
12159
+ } catch (error) {
12160
+ ws.send(JSON.stringify({ type: "error", content: error.message }));
12161
+ }
12162
+ }
12071
12163
  async checkAndSendUpdateNotification(ws) {
12072
12164
  try {
12073
12165
  const pkg = await Promise.resolve().then(() => __toESM(require_package(), 1));
@@ -13012,7 +13104,7 @@ function createGitCommand() {
13012
13104
  // src/commands/statusbar.ts
13013
13105
  init_settings_manager();
13014
13106
  import { Command as Command11 } from "commander";
13015
- import { prompt } from "enquirer";
13107
+ import inquirer4 from "inquirer";
13016
13108
  function createStatusBarCommand() {
13017
13109
  const command = new Command11("statusbar");
13018
13110
  command.description("Configure status bar settings").action(async () => {
@@ -13026,43 +13118,40 @@ function createStatusBarCommand() {
13026
13118
  show_context: false
13027
13119
  };
13028
13120
  try {
13029
- const response = await prompt({
13030
- type: "multiselect",
13031
- name: "features",
13032
- message: "Select status bar features to display:",
13033
- choices: [
13034
- {
13035
- name: "show_model",
13036
- message: "Model Name",
13037
- value: "show_model",
13038
- enabled: currentConfig.show_model
13039
- },
13040
- {
13041
- name: "show_tokens",
13042
- message: "Token Count",
13043
- value: "show_tokens",
13044
- enabled: currentConfig.show_tokens
13045
- },
13046
- {
13047
- name: "show_git_status",
13048
- message: "Git Status",
13049
- value: "show_git_status",
13050
- enabled: currentConfig.show_git_status
13051
- },
13052
- {
13053
- name: "show_memory",
13054
- message: "Memory Usage",
13055
- value: "show_memory",
13056
- enabled: currentConfig.show_memory
13057
- },
13058
- {
13059
- name: "show_context",
13060
- message: "Context Size",
13061
- value: "show_context",
13062
- enabled: currentConfig.show_context
13063
- }
13064
- ]
13065
- });
13121
+ const response = await inquirer4.prompt([
13122
+ {
13123
+ type: "checkbox",
13124
+ name: "features",
13125
+ message: "Select status bar features to display:",
13126
+ choices: [
13127
+ {
13128
+ name: "Model Name",
13129
+ value: "show_model",
13130
+ checked: currentConfig.show_model
13131
+ },
13132
+ {
13133
+ name: "Token Count",
13134
+ value: "show_tokens",
13135
+ checked: currentConfig.show_tokens
13136
+ },
13137
+ {
13138
+ name: "Git Status",
13139
+ value: "show_git_status",
13140
+ checked: currentConfig.show_git_status
13141
+ },
13142
+ {
13143
+ name: "Memory Usage",
13144
+ value: "show_memory",
13145
+ checked: currentConfig.show_memory
13146
+ },
13147
+ {
13148
+ name: "Context Size",
13149
+ value: "show_context",
13150
+ checked: currentConfig.show_context
13151
+ }
13152
+ ]
13153
+ }
13154
+ ]);
13066
13155
  const newConfig = {
13067
13156
  show_model: response.features.includes("show_model"),
13068
13157
  show_tokens: response.features.includes("show_tokens"),
@@ -13170,12 +13259,12 @@ function loadModel2() {
13170
13259
  }
13171
13260
  return model;
13172
13261
  }
13173
- async function processPromptHeadless(prompt2, apiKey, baseURL, model, maxToolRounds) {
13262
+ async function processPromptHeadless(prompt, apiKey, baseURL, model, maxToolRounds) {
13174
13263
  try {
13175
13264
  const agent = new SuperAgent(apiKey, baseURL, model, maxToolRounds);
13176
13265
  const confirmationService = ConfirmationService.getInstance();
13177
13266
  confirmationService.setSessionFlag("allOperations", true);
13178
- const chatEntries = await agent.processUserMessage(prompt2);
13267
+ const chatEntries = await agent.processUserMessage(prompt);
13179
13268
  const messages = [];
13180
13269
  for (const entry of chatEntries) {
13181
13270
  switch (entry.type) {
Binary file
@@ -9,4 +9,8 @@ const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = dirname(__filename);
10
10
 
11
11
  // Import and run the bundled CLI
12
- import(join(__dirname, "dist", "index.js"));
12
+ const indexPath = __dirname.endsWith("dist")
13
+ ? join(__dirname, "index.js")
14
+ : join(__dirname, "dist", "index.js");
15
+
16
+ import(indexPath);
package/eslint.config.mjs CHANGED
@@ -10,7 +10,7 @@ export default [
10
10
  "@plugins/templates/*/dist/*.js",
11
11
  "@plugins/examples/*/dist/*.js.map",
12
12
  "@plugins/templates/*/dist/*.js.map",
13
- "vscode-extension/out/**",
13
+ "vscode-extension/dist/**",
14
14
  ],
15
15
  },
16
16
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@involvex/super-agent-cli",
3
- "version": "0.0.88",
3
+ "version": "0.0.91",
4
4
  "description": "An open-source AI agent that brings the power of Super Agent directly into your terminal.",
5
5
  "keywords": [
6
6
  "cli",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "main": "dist/index.js",
30
30
  "bin": {
31
- "super-agent": "super-agent.js"
31
+ "super-agent": "dist/super-agent.js"
32
32
  },
33
33
  "workspaces": [
34
34
  "@plugins/templates/*",
@@ -37,7 +37,7 @@
37
37
  ],
38
38
  "scripts": {
39
39
  "prebuild": "bun run format && bun run lint:fix && bun run typecheck",
40
- "build": "bun build src/index.ts --outdir ./dist --target node --packages external --format esm && bun run copy-bin && bun run build:web",
40
+ "build": "bun build src/index.ts --outdir ./dist --target node --packages external --format esm && bun run copy-bin && bun run build:web && bun run build:plugins && bun run build:vscode && bun run package:vscode",
41
41
  "build:bun": "bun build src/index.ts --outdir ./dist --target node --packages external --format esm",
42
42
  "build:plugins": "bun run -F @involvex/super-agent\\* build",
43
43
  "build:vscode": "bun run -F super-agent-vscode build",
@@ -63,9 +63,12 @@
63
63
  "test:watch": "vitest",
64
64
  "typecheck": "tsc --noEmit"
65
65
  },
66
+ "overrides": {
67
+ "@modelcontextprotocol/sdk": "^1.26.0"
68
+ },
66
69
  "dependencies": {
67
70
  "@google/generative-ai": "^0.24.1",
68
- "@modelcontextprotocol/sdk": "^1.25.3",
71
+ "@modelcontextprotocol/sdk": "^1.26.0",
69
72
  "@types/mime": "^4.0.0",
70
73
  "axios": "^1.13.4",
71
74
  "bcrypt": "^6.0.0",
@@ -73,9 +76,8 @@
73
76
  "chalk": "^5.6.2",
74
77
  "commander": "^14.0.3",
75
78
  "conventional-changelog-cli": "^5.0.0",
76
- "dotenv": "^17.2.3",
77
- "enquirer": "^2.4.1",
78
- "firebase": "^12.8.0",
79
+ "dotenv": "^17.2.4",
80
+ "firebase": "^12.9.0",
79
81
  "fs-extra": "^11.3.3",
80
82
  "ignore": "^7.0.5",
81
83
  "ink": "^6.6.0",
@@ -84,7 +86,7 @@
84
86
  "marked-terminal": "^7.3.0",
85
87
  "mime": "^4.1.0",
86
88
  "open": "^11.0.0",
87
- "openai": "^6.17.0",
89
+ "openai": "^6.18.0",
88
90
  "react": "^19.2.4",
89
91
  "ripgrep-node": "^1.0.0",
90
92
  "shell-quote": "^1.8.3",
@@ -93,7 +95,7 @@
93
95
  },
94
96
  "devDependencies": {
95
97
  "@types/fs-extra": "^11.0.4",
96
- "@types/node": "^25.1.0",
98
+ "@types/node": "^25.2.1",
97
99
  "@types/react": "18.3.27",
98
100
  "@types/ws": "^8.18.1",
99
101
  "@typescript-eslint/eslint-plugin": "^8.54.0",
@@ -103,7 +105,7 @@
103
105
  "prettier": "^3.8.1",
104
106
  "prettier-plugin-organize-imports": "^4.3.0",
105
107
  "prettier-plugin-packagejson": "^3.0.0",
106
- "prettier-plugin-sort-imports": "^1.8.9",
108
+ "prettier-plugin-sort-imports": "^1.8.10",
107
109
  "react-devtools-core": "^7.0.1",
108
110
  "tsx": "^4.21.0",
109
111
  "typescript": "^5.9.3",
package/super-agent.js CHANGED
@@ -9,4 +9,8 @@ const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = dirname(__filename);
10
10
 
11
11
  // Import and run the bundled CLI
12
- import(join(__dirname, "dist", "index.js"));
12
+ const indexPath = __dirname.endsWith("dist")
13
+ ? join(__dirname, "index.js")
14
+ : join(__dirname, "dist", "index.js");
15
+
16
+ import(indexPath);
@@ -1,7 +1,7 @@
1
1
  # Source files
2
2
  src/
3
3
  *.ts
4
- !**/out/**/*.js
4
+ !**/dist/**/*.js
5
5
  tsconfig.json
6
6
 
7
7
  # Build files
Binary file
@@ -2,7 +2,7 @@ const path = require("path");
2
2
  const fs = require("fs");
3
3
 
4
4
  const srcDir = path.join(__dirname, "src");
5
- const outDir = path.join(__dirname, "out");
5
+ const outDir = path.join(__dirname, "dist");
6
6
 
7
7
  // Ensure out directory exists
8
8
  if (!fs.existsSync(outDir)) {
@@ -18,20 +18,20 @@ for (const file of assetsToCopy) {
18
18
 
19
19
  if (fs.existsSync(srcPath)) {
20
20
  fs.copyFileSync(srcPath, outPath);
21
- console.log(`Copied ${file} to out/`);
21
+ console.log(`Copied ${file} to dist/`);
22
22
  } else {
23
23
  console.warn(`Source file not found: ${srcPath}`);
24
24
  }
25
25
  }
26
26
 
27
- // Copy ws dependency to out/node_modules for packaging
27
+ // Copy ws dependency to dist/node_modules for packaging
28
28
  const wsSrc = path.join(__dirname, "node_modules", "ws");
29
29
  const wsDest = path.join(outDir, "node_modules", "ws");
30
30
 
31
31
  if (fs.existsSync(wsSrc)) {
32
32
  // Copy recursively
33
33
  copyDirectory(wsSrc, wsDest);
34
- console.log("Copied ws to out/node_modules/");
34
+ console.log("Copied ws to dist/node_modules/");
35
35
  } else {
36
36
  console.warn("ws not found in node_modules");
37
37
  }