@involvex/super-agent-cli 0.0.87 → 0.0.89

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 (39) hide show
  1. package/dist/index.js +122 -13
  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 +3 -4
  6. package/super-agent.js +5 -1
  7. package/vscode-extension/.vscodeignore +1 -1
  8. package/vscode-extension/build.js +4 -4
  9. package/vscode-extension/dist/chat-provider.js +262 -0
  10. package/vscode-extension/dist/chat-provider.js.map +1 -0
  11. package/vscode-extension/dist/chat.css +268 -0
  12. package/vscode-extension/dist/chat.js +234 -0
  13. package/vscode-extension/dist/cli-connector.js +296 -0
  14. package/vscode-extension/dist/cli-connector.js.map +1 -0
  15. package/vscode-extension/dist/extension.js +156 -0
  16. package/vscode-extension/dist/extension.js.map +1 -0
  17. package/vscode-extension/dist/file-context.js +230 -0
  18. package/vscode-extension/dist/file-context.js.map +1 -0
  19. package/vscode-extension/dist/node_modules/ws/LICENSE +20 -0
  20. package/vscode-extension/dist/node_modules/ws/README.md +548 -0
  21. package/vscode-extension/dist/node_modules/ws/browser.js +8 -0
  22. package/vscode-extension/dist/node_modules/ws/index.js +13 -0
  23. package/vscode-extension/dist/node_modules/ws/lib/buffer-util.js +131 -0
  24. package/vscode-extension/dist/node_modules/ws/lib/constants.js +19 -0
  25. package/vscode-extension/dist/node_modules/ws/lib/event-target.js +292 -0
  26. package/vscode-extension/dist/node_modules/ws/lib/extension.js +203 -0
  27. package/vscode-extension/dist/node_modules/ws/lib/limiter.js +55 -0
  28. package/vscode-extension/dist/node_modules/ws/lib/permessage-deflate.js +528 -0
  29. package/vscode-extension/dist/node_modules/ws/lib/receiver.js +706 -0
  30. package/vscode-extension/dist/node_modules/ws/lib/sender.js +602 -0
  31. package/vscode-extension/dist/node_modules/ws/lib/stream.js +161 -0
  32. package/vscode-extension/dist/node_modules/ws/lib/subprotocol.js +62 -0
  33. package/vscode-extension/dist/node_modules/ws/lib/validation.js +152 -0
  34. package/vscode-extension/dist/node_modules/ws/lib/websocket-server.js +554 -0
  35. package/vscode-extension/dist/node_modules/ws/lib/websocket.js +1393 -0
  36. package/vscode-extension/dist/node_modules/ws/package.json +69 -0
  37. package/vscode-extension/dist/node_modules/ws/wrapper.mjs +8 -0
  38. package/vscode-extension/dist/super-agent-vscode-0.0.2.vsix +0 -0
  39. package/vscode-extension/package.json +3 -3
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CLIConnector = void 0;
37
+ const vscode = __importStar(require("vscode"));
38
+ const ws_1 = require("ws");
39
+ class CLIConnector {
40
+ context;
41
+ ws = null;
42
+ isConnected = false;
43
+ reconnectTimer = null;
44
+ messageHandlers = new Map();
45
+ statusChangeHandlers = [];
46
+ hasShownConnectionError = false; // Track if we've shown the error
47
+ reconnectAttempts = 0;
48
+ maxReconnectAttempts = 10; // Stop trying after N attempts
49
+ constructor(context) {
50
+ this.context = context;
51
+ this.loadSettings();
52
+ }
53
+ loadSettings() {
54
+ const config = vscode.workspace.getConfiguration("superAgent");
55
+ return {
56
+ cliPort: config.get("cliPort", 3000),
57
+ cliHost: config.get("cliHost", "localhost"),
58
+ autoConnect: config.get("autoConnect", true),
59
+ };
60
+ }
61
+ async connect() {
62
+ const settings = this.loadSettings();
63
+ const wsUrl = `ws://${settings.cliHost}:${settings.cliPort}`;
64
+ console.log(`[Super Agent] Attempting to connect to ${wsUrl}...`);
65
+ return new Promise((resolve, reject) => {
66
+ try {
67
+ if (this.ws) {
68
+ this.ws.terminate();
69
+ }
70
+ this.ws = new ws_1.WebSocket(wsUrl);
71
+ const connectionTimeout = setTimeout(() => {
72
+ if (!this.isConnected) {
73
+ this.ws?.terminate();
74
+ reject(new Error("Connection timed out"));
75
+ }
76
+ }, 5000);
77
+ this.ws.on("open", () => {
78
+ clearTimeout(connectionTimeout);
79
+ console.log(`[Super Agent] Successfully connected to CLI at ${wsUrl}`);
80
+ this.isConnected = true;
81
+ this.reconnectAttempts = 0;
82
+ this.hasShownConnectionError = false;
83
+ this.notifyStatusChange(true);
84
+ this.clearReconnectTimer();
85
+ resolve(true);
86
+ });
87
+ this.ws.on("error", error => {
88
+ clearTimeout(connectionTimeout);
89
+ console.error(`[Super Agent] WebSocket error:`, error);
90
+ this.isConnected = false;
91
+ this.notifyStatusChange(false);
92
+ if (this.reconnectAttempts === 0 && !this.hasShownConnectionError) {
93
+ this.showConnectionError();
94
+ this.hasShownConnectionError = true;
95
+ }
96
+ this.scheduleReconnect();
97
+ reject(error);
98
+ });
99
+ this.ws.on("close", (code, reason) => {
100
+ console.log(`[Super Agent] Connection closed: ${code} ${reason}`);
101
+ this.isConnected = false;
102
+ this.notifyStatusChange(false);
103
+ if (code !== 1000) {
104
+ this.scheduleReconnect();
105
+ }
106
+ });
107
+ this.ws.on("message", data => {
108
+ try {
109
+ const message = JSON.parse(data.toString());
110
+ console.log(`[Super Agent] Received message: ${message.type}`);
111
+ this.handleMessage(message);
112
+ }
113
+ catch (error) {
114
+ console.error("Failed to parse CLI message:", error);
115
+ }
116
+ });
117
+ }
118
+ catch (error) {
119
+ this.isConnected = false;
120
+ this.notifyStatusChange(false);
121
+ reject(error);
122
+ }
123
+ });
124
+ }
125
+ disconnect() {
126
+ this.clearReconnectTimer();
127
+ this.reconnectAttempts = this.maxReconnectAttempts;
128
+ if (this.ws) {
129
+ this.ws.close(1000, "Normal closure");
130
+ this.ws = null;
131
+ }
132
+ this.isConnected = false;
133
+ this.notifyStatusChange(false);
134
+ }
135
+ async startCLIServer() {
136
+ const workspaceRoot = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
137
+ const terminal = vscode.window.createTerminal({
138
+ name: "Super Agent CLI",
139
+ cwd: workspaceRoot,
140
+ });
141
+ terminal.show();
142
+ // Explicitly use PowerShell on Windows to ensure our script works
143
+ if (process.platform === "win32") {
144
+ terminal.sendText("powershell -ExecutionPolicy Bypass -Command \"if (Test-Path 'super-agent.js') { bun super-agent.js web } else { super-agent web }\"");
145
+ }
146
+ else {
147
+ terminal.sendText("if [ -f super-agent.js ]; then bun super-agent.js web; else super-agent web; fi");
148
+ }
149
+ // Give it more time to start up
150
+ await vscode.window.withProgress({
151
+ location: vscode.ProgressLocation.Notification,
152
+ title: "Starting Super Agent CLI Server...",
153
+ cancellable: false,
154
+ }, async (progress) => {
155
+ for (let i = 0; i < 5; i++) {
156
+ await new Promise(resolve => setTimeout(resolve, 1000));
157
+ progress.report({ increment: 20 });
158
+ }
159
+ });
160
+ this.resetConnectionState();
161
+ try {
162
+ await this.connect();
163
+ vscode.window.showInformationMessage("✓ Connected to Super Agent CLI");
164
+ }
165
+ catch (e) {
166
+ const settings = this.loadSettings();
167
+ console.error(`Failed to connect to ${settings.cliHost}:${settings.cliPort} after starting server:`, e);
168
+ vscode.window.showErrorMessage(`Failed to connect to CLI at ${settings.cliHost}:${settings.cliPort}. Please check the terminal for errors.`);
169
+ }
170
+ }
171
+ async showConnectionError() {
172
+ const selection = await vscode.window.showWarningMessage("Could not connect to Super Agent CLI.", "Start CLI Server", "Retry");
173
+ if (selection === "Start CLI Server") {
174
+ this.startCLIServer();
175
+ }
176
+ else if (selection === "Retry") {
177
+ this.connect();
178
+ }
179
+ }
180
+ scheduleReconnect() {
181
+ this.clearReconnectTimer();
182
+ // Stop reconnecting after max attempts
183
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
184
+ console.log("Max reconnect attempts reached. Stopping auto-reconnect.");
185
+ return;
186
+ }
187
+ this.reconnectAttempts++;
188
+ const settings = this.loadSettings();
189
+ if (settings.autoConnect) {
190
+ // Exponential backoff: 5s, 10s, 20s, 40s, max 60s
191
+ const delay = Math.min(5000 * Math.pow(2, this.reconnectAttempts - 1), 60000);
192
+ this.reconnectTimer = setTimeout(() => {
193
+ this.connect().catch(() => {
194
+ // Silently fail on reconnect
195
+ });
196
+ }, delay);
197
+ }
198
+ }
199
+ clearReconnectTimer() {
200
+ if (this.reconnectTimer) {
201
+ clearTimeout(this.reconnectTimer);
202
+ this.reconnectTimer = null;
203
+ }
204
+ }
205
+ sendMessage(type, content) {
206
+ if (this.ws && this.isConnected && this.ws.readyState === ws_1.WebSocket.OPEN) {
207
+ const message = { type, content };
208
+ this.ws.send(JSON.stringify(message));
209
+ }
210
+ else {
211
+ // Only show message if user explicitly tries to send
212
+ if (type === "chat_message" || type === "command") {
213
+ vscode.window.showWarningMessage("Not connected to Super Agent CLI. Please run 'super-agent web' in your project directory.");
214
+ }
215
+ }
216
+ }
217
+ onMessage(type, handler) {
218
+ this.messageHandlers.set(type, handler);
219
+ return () => this.messageHandlers.delete(type);
220
+ }
221
+ handleMessage(message) {
222
+ const handler = this.messageHandlers.get(message.type);
223
+ if (handler) {
224
+ handler(message);
225
+ }
226
+ // Also handle wildcard handlers
227
+ const wildcardHandler = this.messageHandlers.get("*");
228
+ if (wildcardHandler) {
229
+ wildcardHandler(message);
230
+ }
231
+ }
232
+ onStatusChange(handler) {
233
+ this.statusChangeHandlers.push(handler);
234
+ return () => {
235
+ const index = this.statusChangeHandlers.indexOf(handler);
236
+ if (index > -1) {
237
+ this.statusChangeHandlers.splice(index, 1);
238
+ }
239
+ };
240
+ }
241
+ notifyStatusChange(connected) {
242
+ for (const handler of this.statusChangeHandlers) {
243
+ handler(connected);
244
+ }
245
+ }
246
+ getConnectionStatus() {
247
+ return this.isConnected;
248
+ }
249
+ /**
250
+ * Reset connection state (call this when user manually triggers connection)
251
+ */
252
+ resetConnectionState() {
253
+ this.reconnectAttempts = 0;
254
+ this.hasShownConnectionError = false;
255
+ }
256
+ /**
257
+ * Request file tree from CLI
258
+ */
259
+ requestFileTree() {
260
+ this.sendMessage("get_file_tree");
261
+ }
262
+ /**
263
+ * Request chat history from CLI
264
+ */
265
+ requestChatHistory() {
266
+ this.sendMessage("get_chat_history");
267
+ }
268
+ /**
269
+ * Send a message to the CLI
270
+ */
271
+ sendChatMessage(message, fileContexts) {
272
+ // CLI expects 'prompt' type and string content
273
+ this.sendMessage("prompt", message);
274
+ }
275
+ /**
276
+ * Request file content from CLI
277
+ */
278
+ requestFileContent(filePath) {
279
+ // CLI expects 'path' parameter
280
+ this.sendMessage("get_file_content", { path: filePath });
281
+ }
282
+ /**
283
+ * Send a command to the CLI
284
+ */
285
+ sendCommand(command) {
286
+ this.sendMessage("command", { command });
287
+ }
288
+ /**
289
+ * Abort current operation in CLI
290
+ */
291
+ abortOperation() {
292
+ this.sendMessage("abort");
293
+ }
294
+ }
295
+ exports.CLIConnector = CLIConnector;
296
+ //# sourceMappingURL=cli-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-connector.js","sourceRoot":"","sources":["../src/cli-connector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,2BAA+B;AAc/B,MAAa,YAAY;IAWH;IAVZ,EAAE,GAAqB,IAAI,CAAC;IAC5B,WAAW,GAAG,KAAK,CAAC;IACpB,cAAc,GAA0B,IAAI,CAAC;IAC7C,eAAe,GACrB,IAAI,GAAG,EAAE,CAAC;IACJ,oBAAoB,GAAqC,EAAE,CAAC;IAC5D,uBAAuB,GAAG,KAAK,CAAC,CAAC,iCAAiC;IAClE,iBAAiB,GAAG,CAAC,CAAC;IACtB,oBAAoB,GAAG,EAAE,CAAC,CAAC,+BAA+B;IAElE,YAAoB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAClD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC/D,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAS,SAAS,EAAE,IAAI,CAAC;YAC5C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAS,SAAS,EAAE,WAAW,CAAC;YACnD,WAAW,EAAE,MAAM,CAAC,GAAG,CAAU,aAAa,EAAE,IAAI,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE7D,OAAO,CAAC,GAAG,CAAC,0CAA0C,KAAK,KAAK,CAAC,CAAC;QAElE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;oBACZ,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;gBACtB,CAAC;gBAED,IAAI,CAAC,EAAE,GAAG,IAAI,cAAS,CAAC,KAAK,CAAC,CAAC;gBAE/B,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;oBACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACtB,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC;wBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;gBAET,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBACtB,YAAY,CAAC,iBAAiB,CAAC,CAAC;oBAChC,OAAO,CAAC,GAAG,CACT,kDAAkD,KAAK,EAAE,CAC1D,CAAC;oBACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBAC3B,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBAC1B,YAAY,CAAC,iBAAiB,CAAC,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;oBACvD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAE/B,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAClE,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC3B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBACtC,CAAC;oBACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;oBACnC,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;oBAC3B,IAAI,CAAC;wBACH,MAAM,OAAO,GAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACzD,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC/D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACnD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;YAC5C,IAAI,EAAE,iBAAiB;YACvB,GAAG,EAAE,aAAa;SACnB,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEhB,kEAAkE;QAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,QAAQ,CAAC,QAAQ,CACf,qIAAqI,CACtI,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CACf,iFAAiF,CAClF,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAC9B;YACE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;YAC9C,KAAK,EAAE,oCAAoC;YAC3C,WAAW,EAAE,KAAK;SACnB,EACD,KAAK,EAAC,QAAQ,EAAC,EAAE;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CACX,wBAAwB,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,yBAAyB,EACrF,CAAC,CACF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAC5B,+BAA+B,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,yCAAyC,CAC7G,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,CACtD,uCAAuC,EACvC,kBAAkB,EAClB,OAAO,CACR,CAAC;QAEF,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;YACrC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,uCAAuC;QACvC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,kDAAkD;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAC9C,KAAK,CACN,CAAC;YAEF,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBACxB,6BAA6B;gBAC/B,CAAC,CAAC,CAAC;YACL,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,OAAa;QACrC,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI,EAAE,CAAC;YACzE,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAC9B,2FAA2F,CAC5F,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAuC;QAC7D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAEO,aAAa,CAAC,OAAoB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QAED,gCAAgC;QAChC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,OAAqC;QAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,SAAkB;QAC3C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChD,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAe,EAAE,YAAuB;QACtD,+CAA+C;QAC/C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAgB;QACjC,+BAA+B;QAC/B,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF;AAtTD,oCAsTC"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.activate = activate;
37
+ exports.deactivate = deactivate;
38
+ const file_context_1 = require("./file-context");
39
+ const cli_connector_1 = require("./cli-connector");
40
+ const chat_provider_1 = require("./chat-provider");
41
+ const vscode = __importStar(require("vscode"));
42
+ let cliConnector;
43
+ let fileContextProvider;
44
+ let chatProvider;
45
+ function activate(context) {
46
+ console.log("Super Agent VS Code extension is now active");
47
+ // Initialize services
48
+ cliConnector = new cli_connector_1.CLIConnector(context);
49
+ fileContextProvider = new file_context_1.FileContextProvider();
50
+ chatProvider = new chat_provider_1.ChatProvider(context, context.extensionUri, cliConnector, fileContextProvider);
51
+ // Register the chat webview view
52
+ const chatViewProvider = vscode.window.registerWebviewViewProvider("super-agent.chat", {
53
+ resolveWebviewView: webviewView => {
54
+ chatProvider.resolveWebviewView(webviewView);
55
+ },
56
+ }, {
57
+ webviewOptions: {
58
+ retainContextWhenHidden: true,
59
+ },
60
+ });
61
+ context.subscriptions.push(chatViewProvider);
62
+ // Register commands
63
+ const openChatCommand = vscode.commands.registerCommand("super-agent.openChat", () => {
64
+ vscode.commands.executeCommand("super-agent.chat.focus");
65
+ });
66
+ context.subscriptions.push(openChatCommand);
67
+ const mentionFileCommand = vscode.commands.registerCommand("super-agent.mentionFile", async () => {
68
+ const filePath = await fileContextProvider.showFilePicker();
69
+ if (filePath) {
70
+ const relativePath = fileContextProvider.getRelativePath(filePath);
71
+ const message = `@${relativePath} `;
72
+ // Send message to chat
73
+ chatProvider["handleSendMessage"](message);
74
+ }
75
+ });
76
+ context.subscriptions.push(mentionFileCommand);
77
+ // Add manual reconnect command
78
+ const reconnectCommand = vscode.commands.registerCommand("super-agent.reconnect", async () => {
79
+ cliConnector.disconnect();
80
+ try {
81
+ await cliConnector.connect();
82
+ vscode.window.showInformationMessage("Connected to Super Agent CLI");
83
+ }
84
+ catch (error) {
85
+ vscode.window.showErrorMessage("Failed to connect. Make sure 'super-agent web' is running.");
86
+ }
87
+ });
88
+ context.subscriptions.push(reconnectCommand);
89
+ const startServerCommand = vscode.commands.registerCommand("super-agent.startServer", async () => {
90
+ await cliConnector.startCLIServer();
91
+ });
92
+ context.subscriptions.push(startServerCommand);
93
+ const askAICommand = vscode.commands.registerCommand("super-agent.askAI", async () => {
94
+ const editor = vscode.window.activeTextEditor;
95
+ if (!editor) {
96
+ vscode.window.showWarningMessage("No active editor");
97
+ return;
98
+ }
99
+ const selection = editor.selection;
100
+ const selectedText = editor.document.getText(selection) || editor.document.getText();
101
+ const filePath = editor.document.uri.fsPath;
102
+ const relativePath = fileContextProvider.getRelativePath(filePath);
103
+ // Create message with file mention and selected text
104
+ const message = await vscode.window.showInputBox({
105
+ prompt: "Ask Super Agent AI",
106
+ value: `Explain this code:`,
107
+ });
108
+ if (message) {
109
+ const fullMessage = `@${relativePath}\n${message}\n\n\`\`\`\n${selectedText}\n\`\`\``;
110
+ chatProvider["handleSendMessage"](fullMessage);
111
+ }
112
+ });
113
+ context.subscriptions.push(askAICommand);
114
+ // Auto-connect to CLI if setting is enabled
115
+ const config = vscode.workspace.getConfiguration("superAgent");
116
+ if (config.get("autoConnect", true)) {
117
+ cliConnector.connect().catch(error => {
118
+ console.error("Failed to connect to CLI:", error);
119
+ });
120
+ }
121
+ // Listen for configuration changes
122
+ context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(e => {
123
+ if (e.affectsConfiguration("superAgent")) {
124
+ // Reconnect if settings changed
125
+ cliConnector.disconnect();
126
+ const config = vscode.workspace.getConfiguration("superAgent");
127
+ if (config.get("autoConnect", true)) {
128
+ cliConnector.connect().catch(() => { });
129
+ }
130
+ }
131
+ }));
132
+ // Update status bar
133
+ const statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
134
+ statusBarItem.text = "$(robot) Super Agent";
135
+ statusBarItem.command = "super-agent.openChat";
136
+ statusBarItem.show();
137
+ context.subscriptions.push(statusBarItem);
138
+ // Update status bar connection status
139
+ cliConnector.onStatusChange(connected => {
140
+ statusBarItem.text = connected
141
+ ? "$(check) Super Agent"
142
+ : "$(error) Super Agent";
143
+ statusBarItem.tooltip = connected
144
+ ? "Connected to CLI"
145
+ : "Disconnected from CLI";
146
+ });
147
+ }
148
+ function deactivate() {
149
+ if (cliConnector) {
150
+ cliConnector.disconnect();
151
+ }
152
+ if (chatProvider) {
153
+ chatProvider.dispose();
154
+ }
155
+ }
156
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}