rivet-design 0.5.4 → 0.5.7

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 (64) hide show
  1. package/README.md +18 -18
  2. package/README.npm.md +18 -18
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +51 -14
  5. package/dist/index.js.map +1 -1
  6. package/dist/mcp/server.d.ts.map +1 -1
  7. package/dist/mcp/server.js +2 -67
  8. package/dist/mcp/server.js.map +1 -1
  9. package/dist/services/TelemetryService.d.ts.map +1 -1
  10. package/dist/services/TelemetryService.js +5 -0
  11. package/dist/services/TelemetryService.js.map +1 -1
  12. package/package.json +3 -3
  13. package/src/ui/dist/assets/main-DAIpACRO.js +491 -0
  14. package/src/ui/dist/index.html +1 -1
  15. package/dist/routes/agent.d.ts +0 -8
  16. package/dist/routes/agent.d.ts.map +0 -1
  17. package/dist/routes/agent.js +0 -79
  18. package/dist/routes/agent.js.map +0 -1
  19. package/dist/routes/comments.d.ts +0 -2
  20. package/dist/routes/comments.d.ts.map +0 -1
  21. package/dist/routes/comments.js +0 -92
  22. package/dist/routes/comments.js.map +0 -1
  23. package/dist/routes/onboarding.d.ts +0 -6
  24. package/dist/routes/onboarding.d.ts.map +0 -1
  25. package/dist/routes/onboarding.js +0 -206
  26. package/dist/routes/onboarding.js.map +0 -1
  27. package/dist/routes/selection.d.ts +0 -2
  28. package/dist/routes/selection.d.ts.map +0 -1
  29. package/dist/routes/selection.js +0 -38
  30. package/dist/routes/selection.js.map +0 -1
  31. package/dist/scripts/react-instrumentation.js +0 -300
  32. package/dist/services/AgentBridgeService.d.ts +0 -89
  33. package/dist/services/AgentBridgeService.d.ts.map +0 -1
  34. package/dist/services/AgentBridgeService.js +0 -413
  35. package/dist/services/AgentBridgeService.js.map +0 -1
  36. package/dist/services/AgentModService.d.ts +0 -76
  37. package/dist/services/AgentModService.d.ts.map +0 -1
  38. package/dist/services/AgentModService.js +0 -494
  39. package/dist/services/AgentModService.js.map +0 -1
  40. package/dist/services/CommentSessionManager.d.ts +0 -94
  41. package/dist/services/CommentSessionManager.d.ts.map +0 -1
  42. package/dist/services/CommentSessionManager.js +0 -260
  43. package/dist/services/CommentSessionManager.js.map +0 -1
  44. package/dist/services/ImportResolverService.d.ts +0 -30
  45. package/dist/services/ImportResolverService.d.ts.map +0 -1
  46. package/dist/services/ImportResolverService.js +0 -136
  47. package/dist/services/ImportResolverService.js.map +0 -1
  48. package/dist/services/ReactComponentPlugin.d.ts +0 -44
  49. package/dist/services/ReactComponentPlugin.d.ts.map +0 -1
  50. package/dist/services/ReactComponentPlugin.js +0 -100
  51. package/dist/services/ReactComponentPlugin.js.map +0 -1
  52. package/dist/types/agent-protocol.d.ts +0 -55
  53. package/dist/types/agent-protocol.d.ts.map +0 -1
  54. package/dist/types/agent-protocol.js +0 -6
  55. package/dist/types/agent-protocol.js.map +0 -1
  56. package/dist/types/agent-tools.d.ts +0 -78
  57. package/dist/types/agent-tools.d.ts.map +0 -1
  58. package/dist/types/agent-tools.js +0 -7
  59. package/dist/types/agent-tools.js.map +0 -1
  60. package/dist/types/types.d.ts +0 -15
  61. package/dist/types/types.d.ts.map +0 -1
  62. package/dist/types/types.js +0 -3
  63. package/dist/types/types.js.map +0 -1
  64. package/src/ui/dist/assets/main-BXXN24hn.js +0 -505
@@ -1,413 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AgentBridgeService = void 0;
4
- const ws_1 = require("ws");
5
- const logger_1 = require("../utils/logger");
6
- const ComponentSearchService_1 = require("./ComponentSearchService");
7
- const FileModificationService_1 = require("./FileModificationService");
8
- const LocalGitService_1 = require("./LocalGitService");
9
- const ConfigManager_1 = require("./ConfigManager");
10
- const promises_1 = require("fs/promises");
11
- const glob_1 = require("glob");
12
- const log = (0, logger_1.createLogger)('AgentBridgeService');
13
- const HEARTBEAT_INTERVAL = 30000; // 30 seconds
14
- const RECONNECT_DELAY = 5000; // 5 seconds
15
- /**
16
- * Connects Rivet CLI to hosted Agent SDK server
17
- * Executes tools locally and sends results back via WebSocket
18
- */
19
- class AgentBridgeService {
20
- constructor(serverUrl, authToken, projectPath, sessionService) {
21
- this.serverUrl = serverUrl;
22
- this.ws = null;
23
- this.isConnected = false;
24
- this.sseClients = new Set();
25
- this.heartbeatInterval = null;
26
- this.reconnectTimeout = null;
27
- this.configManager = (0, ConfigManager_1.getConfigManager)();
28
- this.projectPath = projectPath;
29
- this.sessionService = sessionService;
30
- this.authToken = authToken;
31
- this.proxyUrl = this.configManager.getProxyUrl();
32
- this.componentSearch = new ComponentSearchService_1.ComponentSearchService();
33
- this.fileModService = new FileModificationService_1.FileModificationService();
34
- this.gitService = new LocalGitService_1.LocalGitService();
35
- }
36
- /**
37
- * Refresh access token using refresh token
38
- */
39
- async refreshAccessToken() {
40
- const refreshToken = this.configManager.getRefreshToken();
41
- if (!refreshToken) {
42
- log.error('No refresh token available');
43
- return false;
44
- }
45
- try {
46
- log.info('Refreshing access token...');
47
- const response = await fetch(`${this.proxyUrl}/api/auth/refresh`, {
48
- method: 'POST',
49
- headers: {
50
- 'Content-Type': 'application/json',
51
- },
52
- body: JSON.stringify({ refreshToken }),
53
- });
54
- if (!response.ok) {
55
- log.error('Token refresh failed');
56
- return false;
57
- }
58
- const result = await response.json();
59
- if (result.success && result.token) {
60
- // Update stored tokens
61
- const email = this.configManager.getEmail() || '';
62
- this.configManager.setAuth(result.token, email, result.refreshToken);
63
- this.authToken = result.token;
64
- log.info('Access token refreshed successfully');
65
- return true;
66
- }
67
- return false;
68
- }
69
- catch (error) {
70
- log.error('Error refreshing token:', error);
71
- return false;
72
- }
73
- }
74
- /**
75
- * Connect to hosted Agent SDK server
76
- */
77
- async connect(retryCount = 0) {
78
- return new Promise((resolve, reject) => {
79
- log.info(`Connecting to Agent SDK server: ${this.serverUrl}`);
80
- this.ws = new ws_1.WebSocket(this.serverUrl);
81
- this.ws.on('open', () => {
82
- log.info('WebSocket connected, authenticating...');
83
- this.send({
84
- type: 'auth',
85
- token: this.authToken,
86
- clientInfo: {
87
- platform: process.platform,
88
- version: process.version,
89
- },
90
- });
91
- // Start heartbeat
92
- this.startHeartbeat();
93
- });
94
- this.ws.on('message', async (data) => {
95
- try {
96
- const message = JSON.parse(data.toString());
97
- await this.handleMessage(message);
98
- if (message.type === 'auth_success') {
99
- this.isConnected = true;
100
- log.info('Authentication successful');
101
- resolve();
102
- }
103
- else if (message.type === 'auth_error') {
104
- this.isConnected = false;
105
- // If we haven't retried yet, try to refresh token
106
- if (retryCount === 0) {
107
- log.warn('Got auth error, attempting to refresh token...');
108
- this.refreshAccessToken().then((refreshed) => {
109
- if (refreshed) {
110
- // Close current connection and retry with new token
111
- this.ws?.close();
112
- this.connect(retryCount + 1)
113
- .then(resolve)
114
- .catch(reject);
115
- }
116
- else {
117
- reject(new Error('Authentication expired. Please run `rivet logout` and `rivet login` to re-authenticate.'));
118
- }
119
- });
120
- }
121
- else {
122
- reject(new Error('Authentication expired. Please run `rivet logout` and `rivet login` to re-authenticate.'));
123
- }
124
- }
125
- }
126
- catch (error) {
127
- log.error('Error handling message:', error);
128
- }
129
- });
130
- this.ws.on('error', (error) => {
131
- log.error('WebSocket error:', error);
132
- reject(error);
133
- });
134
- this.ws.on('close', () => {
135
- log.warn('WebSocket disconnected');
136
- this.isConnected = false;
137
- this.stopHeartbeat();
138
- // Attempt reconnect
139
- this.scheduleReconnect();
140
- });
141
- // Timeout after 10s
142
- setTimeout(() => {
143
- if (!this.isConnected) {
144
- reject(new Error('Connection timeout'));
145
- }
146
- }, 10000);
147
- });
148
- }
149
- /**
150
- * Handle messages from server
151
- */
152
- async handleMessage(message) {
153
- switch (message.type) {
154
- case 'tool_execution':
155
- await this.executeToolLocally(message);
156
- break;
157
- case 'agent_chunk':
158
- this.broadcastToSSE('agent_chunk', message.chunk);
159
- break;
160
- case 'agent_complete':
161
- this.broadcastToSSE('agent_complete', message.result);
162
- break;
163
- case 'agent_error':
164
- this.broadcastToSSE('agent_error', { error: message.error });
165
- break;
166
- case 'ping':
167
- this.send({ type: 'pong' });
168
- break;
169
- case 'auth_success':
170
- case 'auth_error':
171
- // Handled in connect()
172
- break;
173
- }
174
- }
175
- /**
176
- * Execute tool locally using Rivet's services
177
- */
178
- async executeToolLocally(message) {
179
- const { requestId, tool, params } = message;
180
- log.debug(`Executing tool: ${tool}`, params);
181
- try {
182
- let result;
183
- switch (tool) {
184
- case 'search_components':
185
- result = await this.executeSearchComponents(params);
186
- break;
187
- case 'read_file':
188
- result = await this.executeReadFile(params);
189
- break;
190
- case 'write_file':
191
- result = await this.executeWriteFile(params);
192
- break;
193
- case 'glob_files':
194
- result = await this.executeGlobFiles(params);
195
- break;
196
- case 'git_status':
197
- result = await this.executeGitStatus();
198
- break;
199
- case 'git_diff':
200
- result = await this.executeGitDiff(params);
201
- break;
202
- default:
203
- throw new Error(`Unknown tool: ${tool}`);
204
- }
205
- this.send({
206
- type: 'tool_result',
207
- requestId,
208
- result,
209
- });
210
- }
211
- catch (error) {
212
- log.error(`Tool execution error (${tool}):`, error);
213
- this.send({
214
- type: 'tool_error',
215
- requestId,
216
- error: error instanceof Error ? error.message : 'Unknown error',
217
- });
218
- }
219
- }
220
- /**
221
- * Tool implementations
222
- */
223
- async executeSearchComponents(params) {
224
- const matches = await this.componentSearch.findMatchingComponents(this.projectPath, params);
225
- return { matches };
226
- }
227
- async executeReadFile(params) {
228
- const content = await (0, promises_1.readFile)(params.filePath, 'utf-8');
229
- return {
230
- content,
231
- filePath: params.filePath,
232
- };
233
- }
234
- async executeWriteFile(params) {
235
- const results = await this.fileModService.applyModifications([
236
- {
237
- filePath: params.filePath,
238
- search: params.search,
239
- replacement: params.replacement,
240
- changes: params.changes,
241
- },
242
- ]);
243
- return results[0];
244
- }
245
- async executeGlobFiles(params) {
246
- const files = await (0, glob_1.glob)(params.pattern, {
247
- cwd: this.projectPath,
248
- ignore: ['**/node_modules/**', '**/.next/**', '**/dist/**'],
249
- });
250
- return { files };
251
- }
252
- async executeGitStatus() {
253
- const git = await this.gitService.getGitRootPath(this.projectPath);
254
- if (!git) {
255
- throw new Error('Not a git repository');
256
- }
257
- const status = await git.status();
258
- return {
259
- staged: status.staged,
260
- unstaged: status.modified.concat(status.deleted),
261
- untracked: status.not_added,
262
- };
263
- }
264
- async executeGitDiff(params) {
265
- const git = await this.gitService.getGitRootPath(this.projectPath);
266
- if (!git) {
267
- throw new Error('Not a git repository');
268
- }
269
- const diff = params.filePath
270
- ? await git.diff([params.filePath])
271
- : await git.diff();
272
- return {
273
- diff,
274
- filePath: params.filePath,
275
- };
276
- }
277
- /**
278
- * Execute instruction via Agent SDK
279
- */
280
- async executeTask(instruction, context) {
281
- if (!this.isConnected) {
282
- throw new Error('Not connected to Agent SDK server');
283
- }
284
- this.send({
285
- type: 'execute_task',
286
- instruction,
287
- context,
288
- });
289
- }
290
- /**
291
- * Register SSE client for streaming updates
292
- */
293
- registerSSEClient(res) {
294
- log.debug('Registering SSE client');
295
- res.setHeader('Content-Type', 'text/event-stream');
296
- res.setHeader('Cache-Control', 'no-cache');
297
- res.setHeader('Connection', 'keep-alive');
298
- this.sseClients.add(res);
299
- res.on('close', () => {
300
- log.debug('SSE client disconnected');
301
- this.sseClients.delete(res);
302
- });
303
- // Send initial connection event
304
- this.sendSSE(res, 'connected', { status: 'ok' });
305
- }
306
- /**
307
- * Broadcast event to all SSE clients
308
- */
309
- broadcastToSSE(event, data) {
310
- log.debug(`Broadcasting SSE event: ${event}`);
311
- for (const client of this.sseClients) {
312
- this.sendSSE(client, event, data);
313
- }
314
- }
315
- /**
316
- * Send SSE message to specific client
317
- */
318
- sendSSE(res, event, data) {
319
- try {
320
- res.write(`event: ${event}\n`);
321
- res.write(`data: ${JSON.stringify(data)}\n\n`);
322
- }
323
- catch (error) {
324
- log.error('Failed to send SSE message:', error);
325
- this.sseClients.delete(res);
326
- }
327
- }
328
- /**
329
- * Send message to server
330
- */
331
- send(message) {
332
- if (!this.ws || this.ws.readyState !== ws_1.WebSocket.OPEN) {
333
- log.warn('WebSocket not connected, cannot send message');
334
- return;
335
- }
336
- this.ws.send(JSON.stringify(message));
337
- }
338
- /**
339
- * Start heartbeat ping/pong
340
- */
341
- startHeartbeat() {
342
- if (this.heartbeatInterval) {
343
- clearInterval(this.heartbeatInterval);
344
- }
345
- this.heartbeatInterval = setInterval(() => {
346
- if (this.ws && this.ws.readyState === ws_1.WebSocket.OPEN) {
347
- // Server sends ping, we respond with pong (handled in handleMessage)
348
- }
349
- }, HEARTBEAT_INTERVAL);
350
- }
351
- /**
352
- * Stop heartbeat
353
- */
354
- stopHeartbeat() {
355
- if (this.heartbeatInterval) {
356
- clearInterval(this.heartbeatInterval);
357
- this.heartbeatInterval = null;
358
- }
359
- }
360
- /**
361
- * Schedule reconnection attempt
362
- */
363
- scheduleReconnect() {
364
- if (this.reconnectTimeout) {
365
- return;
366
- }
367
- log.info(`Attempting reconnect in ${RECONNECT_DELAY}ms...`);
368
- this.reconnectTimeout = setTimeout(async () => {
369
- this.reconnectTimeout = null;
370
- try {
371
- await this.connect();
372
- log.info('Reconnected successfully');
373
- }
374
- catch (error) {
375
- log.error('Reconnection failed:', error);
376
- this.scheduleReconnect();
377
- }
378
- }, RECONNECT_DELAY);
379
- }
380
- /**
381
- * Check if connected to server
382
- */
383
- getIsConnected() {
384
- return this.isConnected;
385
- }
386
- /**
387
- * Cleanup resources
388
- */
389
- cleanup() {
390
- this.stopHeartbeat();
391
- if (this.reconnectTimeout) {
392
- clearTimeout(this.reconnectTimeout);
393
- this.reconnectTimeout = null;
394
- }
395
- if (this.ws) {
396
- this.ws.removeAllListeners();
397
- this.ws.close();
398
- this.ws = null;
399
- }
400
- for (const client of this.sseClients) {
401
- try {
402
- client.end();
403
- }
404
- catch (error) {
405
- log.error('Error closing SSE client:', error);
406
- }
407
- }
408
- this.sseClients.clear();
409
- this.isConnected = false;
410
- }
411
- }
412
- exports.AgentBridgeService = AgentBridgeService;
413
- //# sourceMappingURL=AgentBridgeService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentBridgeService.js","sourceRoot":"","sources":["../../src/services/AgentBridgeService.ts"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import { SessionService } from './SessionService';
2
- import { ElementContext } from '@rivet/core';
3
- export type AgentStep = {
4
- type: 'tool_call' | 'tool_result' | 'reasoning' | 'error';
5
- timestamp: number;
6
- data: unknown;
7
- };
8
- export type AgenticProgressEvent = {
9
- type: 'step' | 'complete' | 'error';
10
- step?: AgentStep;
11
- result?: AgenticResult;
12
- error?: string;
13
- };
14
- export type AgenticResult = {
15
- success: boolean;
16
- filesModified: string[];
17
- reasoning: string[];
18
- changes: string;
19
- };
20
- /**
21
- * Service for agentic code modifications using Claude Agent SDK.
22
- * Agent autonomously searches for files, reads context, and makes modifications.
23
- */
24
- export declare class AgentModService {
25
- private projectPath;
26
- private sessionService?;
27
- private configManager;
28
- private gatewayUrl;
29
- private proxyUrl;
30
- constructor(projectPath: string, sessionService?: SessionService, gatewayUrl?: string);
31
- /**
32
- * Refresh access token using refresh token
33
- */
34
- private refreshAccessToken;
35
- /**
36
- * Decode JWT and check if it expires within the next hour
37
- */
38
- private isTokenExpiringSoon;
39
- /**
40
- * Execute an agentic modification workflow.
41
- * The agent autonomously uses Grep/Glob/Read to find files and Edit to modify them.
42
- *
43
- * @effect Streams progress events via onProgress callback
44
- * @param instruction User's modification instruction
45
- * @param initialElements Selected elements from UI with candidate file paths
46
- * @param onProgress Callback for streaming progress updates
47
- * @param designTokens Optional design system tokens
48
- * @param image Optional reference image
49
- */
50
- executeAgenticModification(instruction: string, initialElements: ElementContext[], onProgress: (event: AgenticProgressEvent) => void, designTokens?: unknown, image?: string, retryCount?: number): Promise<AgenticResult>;
51
- /**
52
- * Build system prompt for the agent
53
- */
54
- private buildSystemPrompt;
55
- /**
56
- * Build the initial agent prompt with context
57
- */
58
- private buildAgentPrompt;
59
- /**
60
- * Build initial context string from selected elements and read candidate files
61
- *
62
- * @effect Reads candidate files from disk
63
- */
64
- private buildInitialContext;
65
- /**
66
- * Create a ChangeRecord for git tracking
67
- *
68
- * @effect Reads modified files from disk
69
- */
70
- private createChangeRecord;
71
- /**
72
- * Summarize changes for user display
73
- */
74
- private summarizeChanges;
75
- }
76
- //# sourceMappingURL=AgentModService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentModService.d.ts","sourceRoot":"","sources":["../../src/services/AgentModService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAC;AAgB3D,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,OAAO,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAGvB,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,UAAU,CAAC,EAAE,MAAM;IAQrB;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;;;;;;;;;OAUG;IACG,0BAA0B,CAC9B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,cAAc,EAAE,EACjC,UAAU,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,EACjD,YAAY,CAAC,EAAE,OAAO,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,aAAa,CAAC;IAmPzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8CzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;;OAIG;YACW,mBAAmB;IAsEjC;;;;OAIG;YACW,kBAAkB;IAgChC;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAczB"}