@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
@@ -0,0 +1,262 @@
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.ChatProvider = void 0;
37
+ const vscode = __importStar(require("vscode"));
38
+ class ChatProvider {
39
+ context;
40
+ extensionUri;
41
+ cliConnector;
42
+ fileContextProvider;
43
+ messages = [];
44
+ webviewView;
45
+ disposables = [];
46
+ constructor(context, extensionUri, cliConnector, fileContextProvider) {
47
+ this.context = context;
48
+ this.extensionUri = extensionUri;
49
+ this.cliConnector = cliConnector;
50
+ this.fileContextProvider = fileContextProvider;
51
+ this.setupCLIMessageHandlers();
52
+ // Listen for status changes from the connector
53
+ this.disposables.push(new vscode.Disposable(this.cliConnector.onStatusChange(connected => {
54
+ this.updateConnectionStatus(connected);
55
+ })));
56
+ }
57
+ setupCLIMessageHandlers() {
58
+ // Handle incoming messages from CLI
59
+ // CLI sends 'assistant_message', 'user_message', 'tool_call', 'tool_result', 'done', 'error'
60
+ this.cliConnector.onMessage("assistant_message", (response) => {
61
+ this.addAssistantMessage(response.content || "");
62
+ this.updateWebview();
63
+ });
64
+ this.cliConnector.onMessage("user_message", (response) => {
65
+ // Optional: handle if we want to sync user messages from other clients
66
+ });
67
+ this.cliConnector.onMessage("tool_call", (response) => {
68
+ this.addSystemMessage(`Tool: ${response.content || "Executing..."}`);
69
+ this.updateWebview();
70
+ });
71
+ this.cliConnector.onMessage("error", (response) => {
72
+ this.addSystemMessage(`Error: ${response.error || response.content}`);
73
+ this.updateWebview();
74
+ });
75
+ this.cliConnector.onMessage("done", () => {
76
+ // Handle completion if needed
77
+ });
78
+ this.cliConnector.onMessage("file_tree", (response) => {
79
+ // Handle file tree if needed
80
+ });
81
+ this.cliConnector.onMessage("file_content", (response) => {
82
+ // Handle file content if needed
83
+ });
84
+ this.cliConnector.onMessage("chat_history", (response) => {
85
+ if (response.messages) {
86
+ this.messages = response.messages.map((msg) => ({
87
+ id: this.generateId(),
88
+ role: msg.role,
89
+ content: msg.content,
90
+ timestamp: new Date(msg.timestamp),
91
+ }));
92
+ this.updateWebview();
93
+ }
94
+ });
95
+ }
96
+ resolveWebviewView(webviewView) {
97
+ this.webviewView = webviewView;
98
+ webviewView.webview.options = {
99
+ enableScripts: true,
100
+ localResourceRoots: [this.extensionUri],
101
+ };
102
+ webviewView.webview.html = this.getHtmlContent(webviewView.webview);
103
+ // Handle messages from webview
104
+ webviewView.webview.onDidReceiveMessage(async (message) => {
105
+ await this.handleWebviewMessage(message);
106
+ }, null, this.disposables);
107
+ // Update with current connection status
108
+ this.updateConnectionStatus(this.cliConnector.getConnectionStatus());
109
+ }
110
+ async handleWebviewMessage(message) {
111
+ switch (message.type) {
112
+ case "ready":
113
+ this.updateConnectionStatus(this.cliConnector.getConnectionStatus());
114
+ this.cliConnector.requestChatHistory();
115
+ break;
116
+ case "sendMessage":
117
+ await this.handleSendMessage(message.content);
118
+ break;
119
+ case "getFileContext":
120
+ await this.handleGetFileContext();
121
+ break;
122
+ case "openFile":
123
+ await this.handleOpenFile(message.filePath);
124
+ break;
125
+ case "requestHistory":
126
+ this.cliConnector.requestChatHistory();
127
+ break;
128
+ case "clearHistory":
129
+ this.messages = [];
130
+ this.updateWebview();
131
+ break;
132
+ case "abort":
133
+ this.cliConnector.abortOperation();
134
+ break;
135
+ }
136
+ }
137
+ async handleSendMessage(content) {
138
+ // Expand file mentions if any
139
+ const expandedContent = await this.fileContextProvider.expandFileMentions(content);
140
+ // Parse file mentions for display
141
+ const mentions = this.fileContextProvider.parseFileMentions(content);
142
+ const fileContexts = [];
143
+ for (const mention of mentions) {
144
+ const filePath = mention.startsWith("/") ? mention : mention; // Handle both absolute and relative paths
145
+ if (vscode.workspace.workspaceFolders) {
146
+ const workspaceRoot = vscode.workspace.workspaceFolders[0].uri.fsPath;
147
+ const absolutePath = require("path").join(workspaceRoot, filePath);
148
+ const fileMention = await this.fileContextProvider.getFileMention(absolutePath);
149
+ if (fileMention) {
150
+ fileContexts.push(fileMention);
151
+ }
152
+ }
153
+ }
154
+ // Add user message
155
+ this.addUserMessage(content, fileContexts);
156
+ this.updateWebview();
157
+ // Send to CLI
158
+ this.cliConnector.sendChatMessage(expandedContent, mentions);
159
+ }
160
+ async handleGetFileContext() {
161
+ const currentFile = await this.fileContextProvider.getCurrentFileMention();
162
+ const openFiles = await this.fileContextProvider.getOpenFileMentions();
163
+ this.postMessageToWebview({
164
+ type: "fileContext",
165
+ currentFile,
166
+ openFiles,
167
+ });
168
+ }
169
+ async handleOpenFile(filePath) {
170
+ try {
171
+ const document = await vscode.workspace.openTextDocument(vscode.Uri.file(filePath));
172
+ await vscode.window.showTextDocument(document);
173
+ }
174
+ catch (error) {
175
+ vscode.window.showErrorMessage(`Failed to open file: ${filePath}`);
176
+ }
177
+ }
178
+ addUserMessage(content, fileContexts) {
179
+ this.messages.push({
180
+ id: this.generateId(),
181
+ role: "user",
182
+ content,
183
+ timestamp: new Date(),
184
+ fileContexts,
185
+ });
186
+ }
187
+ addAssistantMessage(content) {
188
+ this.messages.push({
189
+ id: this.generateId(),
190
+ role: "assistant",
191
+ content,
192
+ timestamp: new Date(),
193
+ });
194
+ }
195
+ addSystemMessage(content) {
196
+ this.messages.push({
197
+ id: this.generateId(),
198
+ role: "system",
199
+ content,
200
+ timestamp: new Date(),
201
+ });
202
+ }
203
+ updateWebview() {
204
+ this.postMessageToWebview({
205
+ type: "messages",
206
+ messages: this.messages,
207
+ });
208
+ }
209
+ updateConnectionStatus(connected) {
210
+ this.postMessageToWebview({
211
+ type: "connectionStatus",
212
+ connected,
213
+ });
214
+ }
215
+ postMessageToWebview(message) {
216
+ if (this.webviewView) {
217
+ this.webviewView.webview.postMessage(message);
218
+ }
219
+ }
220
+ getHtmlContent(webview) {
221
+ const scriptUri = webview.asWebviewUri(vscode.Uri.file(this.extensionUri.path + "/dist/chat.js"));
222
+ const styleUri = webview.asWebviewUri(vscode.Uri.file(this.extensionUri.path + "/dist/chat.css"));
223
+ return `<!DOCTYPE html>
224
+ <html>
225
+ <head>
226
+ <meta charset="UTF-8">
227
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
228
+ <title>Super Agent Chat</title>
229
+ <link rel="stylesheet" href="${styleUri}">
230
+ </head>
231
+ <body>
232
+ <div class="container">
233
+ <div class="header">
234
+ <span class="title">Super Agent</span>
235
+ <span class="status" id="status">Connecting...</span>
236
+ </div>
237
+ <div class="messages" id="messages"></div>
238
+ <div class="input-area">
239
+ <input type="text" id="prompt" placeholder="@file.ts Ask something... (Press Enter to send)" autocomplete="off">
240
+ <button id="send">Send</button>
241
+ <button id="abort" style="display: none;">Stop</button>
242
+ </div>
243
+ <div class="file-context" id="fileContext" style="display: none;">
244
+ <button id="mentionCurrent">@ Current File</button>
245
+ </div>
246
+ </div>
247
+ <script src="${scriptUri}"></script>
248
+ </body>
249
+ </html>`;
250
+ }
251
+ generateId() {
252
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
253
+ }
254
+ dispose() {
255
+ for (const disposable of this.disposables) {
256
+ disposable.dispose();
257
+ }
258
+ this.disposables = [];
259
+ }
260
+ }
261
+ exports.ChatProvider = ChatProvider;
262
+ //# sourceMappingURL=chat-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-provider.js","sourceRoot":"","sources":["../src/chat-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ /* Chat webview styles */
2
+
3
+ :root {
4
+ --bg-color: var(--vscode-editor-background);
5
+ --text-color: var(--vscode-editor-foreground);
6
+ --input-bg: var(--vscode-input-background);
7
+ --border-color: var(--vscode-panel-border);
8
+ --accent-color: var(--vscode-textLink-foreground);
9
+ --user-msg-bg: var(--vscode-textBlockQuote-background);
10
+ --assistant-msg-bg: var(--vscode-editor-inactiveSelectionBackground);
11
+ --system-msg-bg: var(--vscode-editorInfo-background);
12
+ }
13
+
14
+ * {
15
+ box-sizing: border-box;
16
+ margin: 0;
17
+ padding: 0;
18
+ }
19
+
20
+ body {
21
+ font-family: var(--vscode-font-family);
22
+ background-color: var(--bg-color);
23
+ color: var(--text-color);
24
+ font-size: var(--vscode-font-size);
25
+ line-height: 1.5;
26
+ }
27
+
28
+ .container {
29
+ display: flex;
30
+ flex-direction: column;
31
+ height: 100vh;
32
+ max-height: 100vh;
33
+ }
34
+
35
+ .header {
36
+ display: flex;
37
+ justify-content: space-between;
38
+ align-items: center;
39
+ padding: 8px 12px;
40
+ border-bottom: 1px solid var(--border-color);
41
+ background-color: var(--vscode-sideBarSectionHeader-background);
42
+ }
43
+
44
+ .title {
45
+ font-weight: 600;
46
+ font-size: 12px;
47
+ text-transform: uppercase;
48
+ letter-spacing: 0.5px;
49
+ }
50
+
51
+ .status {
52
+ font-size: 11px;
53
+ padding: 2px 8px;
54
+ border-radius: 3px;
55
+ }
56
+
57
+ .status.connected {
58
+ background-color: #4ec9b0;
59
+ color: #000;
60
+ }
61
+
62
+ .status.disconnected {
63
+ background-color: #f48771;
64
+ color: #000;
65
+ }
66
+
67
+ .messages {
68
+ flex: 1;
69
+ overflow-y: auto;
70
+ padding: 12px;
71
+ display: flex;
72
+ flex-direction: column;
73
+ gap: 12px;
74
+ }
75
+
76
+ .message {
77
+ display: flex;
78
+ flex-direction: column;
79
+ gap: 4px;
80
+ animation: fadeIn 0.2s ease-in;
81
+ }
82
+
83
+ @keyframes fadeIn {
84
+ from {
85
+ opacity: 0;
86
+ transform: translateY(4px);
87
+ }
88
+ to {
89
+ opacity: 1;
90
+ transform: translateY(0);
91
+ }
92
+ }
93
+
94
+ .message.user {
95
+ align-items: flex-end;
96
+ }
97
+
98
+ .message.assistant {
99
+ align-items: flex-start;
100
+ }
101
+
102
+ .message.system {
103
+ align-items: center;
104
+ }
105
+
106
+ .message.user > .content {
107
+ background-color: var(--user-msg-bg);
108
+ border-radius: 8px 8px 0 8px;
109
+ max-width: 85%;
110
+ padding: 8px 12px;
111
+ word-wrap: break-word;
112
+ }
113
+
114
+ .message.assistant > .content {
115
+ background-color: var(--assistant-msg-bg);
116
+ border-radius: 8px 8px 8px 0;
117
+ max-width: 90%;
118
+ padding: 8px 12px;
119
+ word-wrap: break-word;
120
+ }
121
+
122
+ .message.system > .content {
123
+ background-color: var(--system-msg-bg);
124
+ border-radius: 4px;
125
+ padding: 4px 8px;
126
+ font-size: 11px;
127
+ color: var(--vscode-editorInfo-foreground);
128
+ }
129
+
130
+ .message.user .content,
131
+ .message.assistant .content {
132
+ white-space: pre-wrap;
133
+ }
134
+
135
+ .message .content pre {
136
+ background-color: var(--vscode-textCodeBlock-background);
137
+ border-radius: 4px;
138
+ padding: 8px;
139
+ overflow-x: auto;
140
+ margin: 8px 0;
141
+ }
142
+
143
+ .message .content code {
144
+ font-family: var(--vscode-editor-font-family);
145
+ font-size: var(--vscode-editor-font-size);
146
+ background-color: var(--vscode-textCodeBlock-background);
147
+ padding: 2px 4px;
148
+ border-radius: 3px;
149
+ }
150
+
151
+ .message .content pre code {
152
+ background-color: transparent;
153
+ padding: 0;
154
+ }
155
+
156
+ .message .content strong {
157
+ font-weight: 600;
158
+ }
159
+
160
+ .message .content em {
161
+ font-style: italic;
162
+ }
163
+
164
+ .file-contexts {
165
+ display: flex;
166
+ flex-wrap: wrap;
167
+ gap: 4px;
168
+ margin-top: 4px;
169
+ }
170
+
171
+ .file-mention {
172
+ font-size: 11px;
173
+ background-color: var(--vscode-badge-background);
174
+ color: var(--vscode-badge-foreground);
175
+ padding: 2px 6px;
176
+ border-radius: 3px;
177
+ font-family: var(--vscode-editor-font-family);
178
+ }
179
+
180
+ .input-area {
181
+ display: flex;
182
+ gap: 8px;
183
+ padding: 12px;
184
+ border-top: 1px solid var(--border-color);
185
+ background-color: var(--vscode-editorGroup-header-tabsBackground);
186
+ }
187
+
188
+ .input-area input {
189
+ flex: 1;
190
+ background-color: var(--input-bg);
191
+ color: var(--text-color);
192
+ border: 1px solid var(--border-color);
193
+ border-radius: 4px;
194
+ padding: 8px 12px;
195
+ font-size: var(--vscode-font-size);
196
+ font-family: var(--vscode-font-family);
197
+ }
198
+
199
+ .input-area input:focus {
200
+ outline: none;
201
+ border-color: var(--accent-color);
202
+ }
203
+
204
+ .input-area button {
205
+ background-color: var(--accent-color);
206
+ color: var(--vscode-button-foreground);
207
+ border: none;
208
+ border-radius: 4px;
209
+ padding: 8px 16px;
210
+ font-size: 13px;
211
+ font-weight: 500;
212
+ cursor: pointer;
213
+ white-space: nowrap;
214
+ }
215
+
216
+ .input-area button:hover {
217
+ filter: brightness(0.9);
218
+ }
219
+
220
+ .input-area button:active {
221
+ transform: scale(0.98);
222
+ }
223
+
224
+ .input-area #abort {
225
+ background-color: var(--vscode-errorBackground);
226
+ }
227
+
228
+ .file-context {
229
+ display: flex;
230
+ flex-wrap: wrap;
231
+ gap: 6px;
232
+ padding: 8px 12px;
233
+ border-top: 1px solid var(--border-color);
234
+ background-color: var(--vscode-editorGroupHeader-tabsBackground);
235
+ }
236
+
237
+ .file-context button {
238
+ background-color: var(--vscode-button-secondaryBackground);
239
+ color: var(--vscode-button-secondaryForeground);
240
+ border: 1px solid var(--border-color);
241
+ border-radius: 4px;
242
+ padding: 4px 8px;
243
+ font-size: 11px;
244
+ cursor: pointer;
245
+ font-family: var(--vscode-editor-font-family);
246
+ }
247
+
248
+ .file-context button:hover {
249
+ background-color: var(--vscode-button-secondaryHoverBackground);
250
+ }
251
+
252
+ /* Scrollbar styling */
253
+ .messages::-webkit-scrollbar {
254
+ width: 8px;
255
+ }
256
+
257
+ .messages::-webkit-scrollbar-track {
258
+ background: transparent;
259
+ }
260
+
261
+ .messages::-webkit-scrollbar-thumb {
262
+ background: var(--vscode-scrollbarSlider-background);
263
+ border-radius: 4px;
264
+ }
265
+
266
+ .messages::-webkit-scrollbar-thumb:hover {
267
+ background: var(--vscode-scrollbarSlider-hoverBackground);
268
+ }