agentuity-vscode 0.0.86 → 0.0.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +10 -18
- package/README.md +23 -15
- package/package.json +2 -2
- package/src/core/cliClient.ts +13 -12
- package/src/core/service.ts +5 -4
- package/src/features/chat/agentuityParticipant.ts +24 -12
- package/src/features/codeLens/agentCodeLensProvider.ts +1 -4
- package/src/features/codeLens/index.ts +4 -4
- package/src/features/dataExplorer/dataTreeData.ts +2 -8
- package/src/features/dataExplorer/index.ts +1 -2
- package/src/features/deploymentExplorer/index.ts +5 -1
- package/src/features/devServer/index.ts +5 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
Copyright 2025 Agentuity, Inc.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
8
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -28,21 +28,27 @@ code --install-extension agentuity-vscode-<version>.vsix
|
|
|
28
28
|
## Features
|
|
29
29
|
|
|
30
30
|
### Agent Explorer
|
|
31
|
+
|
|
31
32
|
View all agents in your Agentuity project in the sidebar.
|
|
32
33
|
|
|
33
34
|
### Data Explorer
|
|
35
|
+
|
|
34
36
|
Browse cloud data resources:
|
|
37
|
+
|
|
35
38
|
- **Key-Value** - View namespaces and keys
|
|
36
39
|
- **Object Store** - View buckets and objects
|
|
37
40
|
- **Vector** - View vector indexes
|
|
38
41
|
|
|
39
42
|
### Dev Server
|
|
43
|
+
|
|
40
44
|
Start, stop, and monitor the development server with status bar integration.
|
|
41
45
|
|
|
42
46
|
### Workbench Integration
|
|
47
|
+
|
|
43
48
|
Open the Agentuity Workbench in your browser with one click.
|
|
44
49
|
|
|
45
50
|
### AI Commands (for Coding Agents)
|
|
51
|
+
|
|
46
52
|
The extension exposes commands that AI coding tools (Claude Code, Cursor, Amp) can use:
|
|
47
53
|
|
|
48
54
|
```typescript
|
|
@@ -54,6 +60,7 @@ const schema = await vscode.commands.executeCommand('agentuity.getAiSchema');
|
|
|
54
60
|
```
|
|
55
61
|
|
|
56
62
|
### Chat Participant
|
|
63
|
+
|
|
57
64
|
Use `@agentuity` in GitHub Copilot Chat to get help with your agents:
|
|
58
65
|
|
|
59
66
|
- "What agents are available?"
|
|
@@ -62,23 +69,23 @@ Use `@agentuity` in GitHub Copilot Chat to get help with your agents:
|
|
|
62
69
|
|
|
63
70
|
## Commands
|
|
64
71
|
|
|
65
|
-
| Command
|
|
66
|
-
|
|
67
|
-
| `Agentuity: Login`
|
|
68
|
-
| `Agentuity: Logout`
|
|
69
|
-
| `Agentuity: Who Am I?`
|
|
70
|
-
| `Agentuity: Start Dev Server` | Start the dev server
|
|
71
|
-
| `Agentuity: Stop Dev Server`
|
|
72
|
-
| `Agentuity: Open Workbench`
|
|
73
|
-
| `Agentuity: Deploy`
|
|
74
|
-
| `Agentuity: Refresh`
|
|
72
|
+
| Command | Description |
|
|
73
|
+
| ----------------------------- | ------------------------------ |
|
|
74
|
+
| `Agentuity: Login` | Login via CLI in terminal |
|
|
75
|
+
| `Agentuity: Logout` | Logout from Agentuity |
|
|
76
|
+
| `Agentuity: Who Am I?` | Show current user |
|
|
77
|
+
| `Agentuity: Start Dev Server` | Start the dev server |
|
|
78
|
+
| `Agentuity: Stop Dev Server` | Stop the dev server |
|
|
79
|
+
| `Agentuity: Open Workbench` | Open Workbench in browser |
|
|
80
|
+
| `Agentuity: Deploy` | Deploy to Agentuity Cloud |
|
|
81
|
+
| `Agentuity: Refresh` | Refresh auth and project state |
|
|
75
82
|
|
|
76
83
|
## Configuration
|
|
77
84
|
|
|
78
|
-
| Setting
|
|
79
|
-
|
|
80
|
-
| `agentuity.cliPath`
|
|
81
|
-
| `agentuity.devServer.port` | `3500`
|
|
85
|
+
| Setting | Default | Description |
|
|
86
|
+
| -------------------------- | ------- | ----------------------------- |
|
|
87
|
+
| `agentuity.cliPath` | `""` | Custom path to CLI executable |
|
|
88
|
+
| `agentuity.devServer.port` | `3500` | Default dev server port |
|
|
82
89
|
|
|
83
90
|
## Development
|
|
84
91
|
|
|
@@ -108,7 +115,8 @@ bun run compile
|
|
|
108
115
|
|
|
109
116
|
**Agent Explorer**: Should list agents from your project after the project is detected.
|
|
110
117
|
|
|
111
|
-
**Data Explorer**:
|
|
118
|
+
**Data Explorer**:
|
|
119
|
+
|
|
112
120
|
- Expand "Key-Value" to see namespaces and keys
|
|
113
121
|
- Expand "Object Store" to see buckets and objects
|
|
114
122
|
- Click on a key to view its contents
|
package/package.json
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"name": "agentuity-vscode",
|
|
3
3
|
"displayName": "Agentuity VSCode Extension",
|
|
4
4
|
"description": "Build, deploy, and manage AI agents with Agentuity",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.88",
|
|
6
6
|
"publisher": "agentuity",
|
|
7
|
-
"license": "
|
|
7
|
+
"license": "Apache-2.0",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "https://github.com/agentuity/sdk"
|
package/src/core/cliClient.ts
CHANGED
|
@@ -219,7 +219,11 @@ export class CliClient {
|
|
|
219
219
|
);
|
|
220
220
|
resolveOnce({
|
|
221
221
|
success: false,
|
|
222
|
-
error:
|
|
222
|
+
error:
|
|
223
|
+
structuredError?.message ||
|
|
224
|
+
stderr ||
|
|
225
|
+
stdout ||
|
|
226
|
+
`Command failed with exit code ${exitCode}`,
|
|
223
227
|
structuredError,
|
|
224
228
|
exitCode,
|
|
225
229
|
});
|
|
@@ -298,16 +302,12 @@ export class CliClient {
|
|
|
298
302
|
});
|
|
299
303
|
}
|
|
300
304
|
|
|
301
|
-
|
|
302
|
-
|
|
303
305
|
async getKvValue(namespace: string, key: string): Promise<CliResult<KvGetResponse>> {
|
|
304
306
|
return this.exec<KvGetResponse>(['cloud', 'keyvalue', 'get', namespace, key], {
|
|
305
307
|
format: 'json',
|
|
306
308
|
});
|
|
307
309
|
}
|
|
308
310
|
|
|
309
|
-
|
|
310
|
-
|
|
311
311
|
async getAiCapabilities(): Promise<CliResult<AiCapabilitiesResponse>> {
|
|
312
312
|
return this.exec<AiCapabilitiesResponse>(['ai', 'capabilities', 'show'], { format: 'json' });
|
|
313
313
|
}
|
|
@@ -379,7 +379,10 @@ export class CliClient {
|
|
|
379
379
|
}
|
|
380
380
|
|
|
381
381
|
// Stream methods
|
|
382
|
-
async listStreams(opts?: {
|
|
382
|
+
async listStreams(opts?: {
|
|
383
|
+
size?: number;
|
|
384
|
+
name?: string;
|
|
385
|
+
}): Promise<CliResult<StreamListResponse>> {
|
|
383
386
|
const args = ['cloud', 'stream', 'list'];
|
|
384
387
|
if (opts?.size) {
|
|
385
388
|
args.push('--size', String(opts.size));
|
|
@@ -489,10 +492,10 @@ export class CliClient {
|
|
|
489
492
|
}
|
|
490
493
|
|
|
491
494
|
async getSessionLogs(sessionId: string): Promise<CliResult<SessionLog[]>> {
|
|
492
|
-
return this.exec<SessionLog[]>(
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
);
|
|
495
|
+
return this.exec<SessionLog[]>(this.withProjectDir(['cloud', 'session', 'logs', sessionId]), {
|
|
496
|
+
format: 'json',
|
|
497
|
+
timeout: 60000,
|
|
498
|
+
});
|
|
496
499
|
}
|
|
497
500
|
|
|
498
501
|
dispose(): void {
|
|
@@ -535,8 +538,6 @@ export interface KvGetResponse {
|
|
|
535
538
|
contentType: string;
|
|
536
539
|
}
|
|
537
540
|
|
|
538
|
-
|
|
539
|
-
|
|
540
541
|
// Database types
|
|
541
542
|
export interface DbInfo {
|
|
542
543
|
name: string;
|
package/src/core/service.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
import {
|
|
3
2
|
getCliClient,
|
|
4
3
|
type CliClient,
|
|
@@ -177,9 +176,11 @@ export class AgentuityService {
|
|
|
177
176
|
};
|
|
178
177
|
}
|
|
179
178
|
|
|
180
|
-
async getSessionLogs(
|
|
181
|
-
|
|
182
|
-
|
|
179
|
+
async getSessionLogs(sessionId: string): Promise<{
|
|
180
|
+
success: boolean;
|
|
181
|
+
logs: Array<{ body: string; severity: string; timestamp: string }>;
|
|
182
|
+
error?: string;
|
|
183
|
+
}> {
|
|
183
184
|
const result = await this.cli.getSessionLogs(sessionId);
|
|
184
185
|
return {
|
|
185
186
|
success: result.success,
|
|
@@ -154,7 +154,10 @@ async function handleNaturalLanguage(
|
|
|
154
154
|
return handleDeploy(stream);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
if (
|
|
157
|
+
if (
|
|
158
|
+
prompt.includes('session') &&
|
|
159
|
+
(prompt.includes('list') || prompt.includes('show') || prompt.includes('recent'))
|
|
160
|
+
) {
|
|
158
161
|
return handleSessions(stream);
|
|
159
162
|
}
|
|
160
163
|
|
|
@@ -206,15 +209,15 @@ async function handleNaturalLanguage(
|
|
|
206
209
|
}
|
|
207
210
|
|
|
208
211
|
// Deployment patterns
|
|
209
|
-
if (
|
|
210
|
-
prompt.includes('deployment') ||
|
|
211
|
-
(prompt.includes('list') && prompt.includes('deploy'))
|
|
212
|
-
) {
|
|
212
|
+
if (prompt.includes('deployment') || (prompt.includes('list') && prompt.includes('deploy'))) {
|
|
213
213
|
return handleDeployments(stream);
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
// Logs patterns
|
|
217
|
-
if (
|
|
217
|
+
if (
|
|
218
|
+
prompt.includes('log') &&
|
|
219
|
+
(prompt.includes('session') || prompt.includes('view') || prompt.includes('show'))
|
|
220
|
+
) {
|
|
218
221
|
return handleLogs('', stream);
|
|
219
222
|
}
|
|
220
223
|
|
|
@@ -500,9 +503,7 @@ async function handleSessions(stream: vscode.ChatResponseStream): Promise<vscode
|
|
|
500
503
|
const status = session.success ? '✓' : '✗';
|
|
501
504
|
const shortId = session.id.substring(0, 8);
|
|
502
505
|
const time = new Date(session.created_at).toLocaleString();
|
|
503
|
-
const duration = session.duration
|
|
504
|
-
? `${(session.duration / 1_000_000).toFixed(0)}ms`
|
|
505
|
-
: '-';
|
|
506
|
+
const duration = session.duration ? `${(session.duration / 1_000_000).toFixed(0)}ms` : '-';
|
|
506
507
|
stream.markdown(`| ${status} | ${shortId} | ${time} | ${duration} | ${session.trigger} |\n`);
|
|
507
508
|
}
|
|
508
509
|
|
|
@@ -755,7 +756,10 @@ async function handleDeployments(stream: vscode.ChatResponseStream): Promise<vsc
|
|
|
755
756
|
}
|
|
756
757
|
|
|
757
758
|
stream.markdown('\n');
|
|
758
|
-
stream.button({
|
|
759
|
+
stream.button({
|
|
760
|
+
title: 'View in Deployments Explorer',
|
|
761
|
+
command: 'agentuity.deployments.refresh',
|
|
762
|
+
});
|
|
759
763
|
|
|
760
764
|
return { metadata: { command: 'deployments' } };
|
|
761
765
|
}
|
|
@@ -776,7 +780,11 @@ async function handleLogs(
|
|
|
776
780
|
stream.markdown('## Session Logs\n\n');
|
|
777
781
|
stream.markdown('Usage: `/logs <session-id>`\n\n');
|
|
778
782
|
stream.markdown('Get a session ID from `/sessions` first.\n\n');
|
|
779
|
-
stream.button({
|
|
783
|
+
stream.button({
|
|
784
|
+
title: 'View Sessions',
|
|
785
|
+
command: 'workbench.action.chat.open',
|
|
786
|
+
arguments: [{ query: '@agentuity /sessions' }],
|
|
787
|
+
});
|
|
780
788
|
return { metadata: { command: 'logs' } };
|
|
781
789
|
}
|
|
782
790
|
|
|
@@ -832,7 +840,11 @@ async function handleFallback(
|
|
|
832
840
|
stream.markdown('- **CLI** - "What CLI commands are available?"\n\n');
|
|
833
841
|
|
|
834
842
|
stream.markdown('Type `/help` for complete CLI documentation.\n\n');
|
|
835
|
-
stream.button({
|
|
843
|
+
stream.button({
|
|
844
|
+
title: 'Show Help',
|
|
845
|
+
command: 'workbench.action.chat.open',
|
|
846
|
+
arguments: [{ query: '@agentuity /help' }],
|
|
847
|
+
});
|
|
836
848
|
|
|
837
849
|
return { metadata: { command: 'fallback' } };
|
|
838
850
|
}
|
|
@@ -49,10 +49,7 @@ export class AgentCodeLensProvider implements vscode.CodeLensProvider {
|
|
|
49
49
|
return codeLenses;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
private extractAgentInfo(
|
|
53
|
-
document: vscode.TextDocument,
|
|
54
|
-
startIndex: number
|
|
55
|
-
): AgentCodeLensInfo {
|
|
52
|
+
private extractAgentInfo(document: vscode.TextDocument, startIndex: number): AgentCodeLensInfo {
|
|
56
53
|
const text = document.getText();
|
|
57
54
|
const afterCreateAgent = text.substring(startIndex);
|
|
58
55
|
|
|
@@ -14,9 +14,7 @@ export function registerCodeLens(context: vscode.ExtensionContext): AgentCodeLen
|
|
|
14
14
|
{ language: 'javascript', scheme: 'file' },
|
|
15
15
|
];
|
|
16
16
|
|
|
17
|
-
context.subscriptions.push(
|
|
18
|
-
vscode.languages.registerCodeLensProvider(selector, provider)
|
|
19
|
-
);
|
|
17
|
+
context.subscriptions.push(vscode.languages.registerCodeLensProvider(selector, provider));
|
|
20
18
|
|
|
21
19
|
context.subscriptions.push(
|
|
22
20
|
vscode.commands.registerCommand(
|
|
@@ -44,7 +42,9 @@ export function registerCodeLens(context: vscode.ExtensionContext): AgentCodeLen
|
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
44
|
|
|
47
|
-
const port = vscode.workspace
|
|
45
|
+
const port = vscode.workspace
|
|
46
|
+
.getConfiguration('agentuity')
|
|
47
|
+
.get<number>('devServer.port', 3500);
|
|
48
48
|
let url = `http://localhost:${port}/workbench`;
|
|
49
49
|
if (info.identifier) {
|
|
50
50
|
url += `?agent=${encodeURIComponent(info.identifier)}`;
|
|
@@ -378,9 +378,7 @@ export class DataTreeDataProvider implements vscode.TreeDataProvider<DataTreeIte
|
|
|
378
378
|
}
|
|
379
379
|
|
|
380
380
|
if (group.results.length === 0) {
|
|
381
|
-
return [
|
|
382
|
-
new DataTreeItem('No results', vscode.TreeItemCollapsibleState.None, 'message'),
|
|
383
|
-
];
|
|
381
|
+
return [new DataTreeItem('No results', vscode.TreeItemCollapsibleState.None, 'message')];
|
|
384
382
|
}
|
|
385
383
|
|
|
386
384
|
return group.results.map((result) => {
|
|
@@ -459,11 +457,7 @@ export class DataTreeDataProvider implements vscode.TreeDataProvider<DataTreeIte
|
|
|
459
457
|
}
|
|
460
458
|
|
|
461
459
|
return [
|
|
462
|
-
new DataTreeItem(
|
|
463
|
-
'Failed to load files',
|
|
464
|
-
vscode.TreeItemCollapsibleState.None,
|
|
465
|
-
'message'
|
|
466
|
-
),
|
|
460
|
+
new DataTreeItem('Failed to load files', vscode.TreeItemCollapsibleState.None, 'message'),
|
|
467
461
|
];
|
|
468
462
|
}
|
|
469
463
|
|
|
@@ -108,8 +108,7 @@ export function registerDataExplorer(context: vscode.ExtensionContext): DataTree
|
|
|
108
108
|
.map((log) => {
|
|
109
109
|
const timestamp = new Date(log.timestamp).toLocaleString();
|
|
110
110
|
const duration = `${log.duration}ms`;
|
|
111
|
-
const sql =
|
|
112
|
-
log.sql.length > 200 ? log.sql.substring(0, 200) + '...' : log.sql;
|
|
111
|
+
const sql = log.sql.length > 200 ? log.sql.substring(0, 200) + '...' : log.sql;
|
|
113
112
|
const errorLine = log.error ? `\n ERROR: ${log.error}` : '';
|
|
114
113
|
return `[${timestamp}] [${log.command}] (${duration})\n ${sql}${errorLine}`;
|
|
115
114
|
})
|
|
@@ -96,7 +96,11 @@ async function viewDeploymentLogs(deploymentId: string): Promise<void> {
|
|
|
96
96
|
})
|
|
97
97
|
.join('\n');
|
|
98
98
|
|
|
99
|
-
await openReadonlyDocument(
|
|
99
|
+
await openReadonlyDocument(
|
|
100
|
+
logContent,
|
|
101
|
+
'log',
|
|
102
|
+
`deployment-logs-${deploymentId.substring(0, 8)}`
|
|
103
|
+
);
|
|
100
104
|
} else {
|
|
101
105
|
vscode.window.showErrorMessage(`Failed to fetch logs: ${result.error}`);
|
|
102
106
|
}
|
|
@@ -13,7 +13,11 @@ export function registerDevServerCommands(context: vscode.ExtensionContext): voi
|
|
|
13
13
|
);
|
|
14
14
|
|
|
15
15
|
manager.onStateChanged((state) => {
|
|
16
|
-
void vscode.commands.executeCommand(
|
|
16
|
+
void vscode.commands.executeCommand(
|
|
17
|
+
'setContext',
|
|
18
|
+
'agentuity.devServerRunning',
|
|
19
|
+
state === 'running'
|
|
20
|
+
);
|
|
17
21
|
});
|
|
18
22
|
|
|
19
23
|
context.subscriptions.push(
|