rivet-design 0.1.21 → 0.1.23

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 (101) hide show
  1. package/README.md +15 -5
  2. package/dist/config/proxy.d.ts.map +1 -1
  3. package/dist/config/proxy.js +1 -0
  4. package/dist/config/proxy.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +12 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/routes/electron.d.ts +8 -0
  10. package/dist/routes/electron.d.ts.map +1 -0
  11. package/dist/routes/electron.js +64 -0
  12. package/dist/routes/electron.js.map +1 -0
  13. package/dist/routes/git.d.ts.map +1 -1
  14. package/dist/routes/git.js +21 -0
  15. package/dist/routes/git.js.map +1 -1
  16. package/dist/routes/modifications.d.ts +2 -1
  17. package/dist/routes/modifications.d.ts.map +1 -1
  18. package/dist/routes/modifications.js +8 -2
  19. package/dist/routes/modifications.js.map +1 -1
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +69 -14
  22. package/dist/server.js.map +1 -1
  23. package/dist/services/AuthService.d.ts +1 -0
  24. package/dist/services/AuthService.d.ts.map +1 -1
  25. package/dist/services/AuthService.js +1 -1
  26. package/dist/services/AuthService.js.map +1 -1
  27. package/dist/services/ConfigManager.d.ts +7 -2
  28. package/dist/services/ConfigManager.d.ts.map +1 -1
  29. package/dist/services/ConfigManager.js +11 -3
  30. package/dist/services/ConfigManager.js.map +1 -1
  31. package/dist/services/ElectronBridgeService.d.ts +121 -0
  32. package/dist/services/ElectronBridgeService.d.ts.map +1 -0
  33. package/dist/services/ElectronBridgeService.js +299 -0
  34. package/dist/services/ElectronBridgeService.js.map +1 -0
  35. package/dist/services/LLMService.d.ts +4 -0
  36. package/dist/services/LLMService.d.ts.map +1 -1
  37. package/dist/services/LLMService.js +48 -1
  38. package/dist/services/LLMService.js.map +1 -1
  39. package/dist/services/LocalGitService.d.ts +5 -0
  40. package/dist/services/LocalGitService.d.ts.map +1 -1
  41. package/dist/services/LocalGitService.js +24 -0
  42. package/dist/services/LocalGitService.js.map +1 -1
  43. package/dist/services/ProjectDetectionService.d.ts +2 -2
  44. package/dist/services/ProjectDetectionService.d.ts.map +1 -1
  45. package/dist/services/ProjectDetectionService.js +12 -6
  46. package/dist/services/ProjectDetectionService.js.map +1 -1
  47. package/dist/services/SessionService.d.ts +1 -0
  48. package/dist/services/SessionService.d.ts.map +1 -1
  49. package/dist/services/SessionService.js +13 -0
  50. package/dist/services/SessionService.js.map +1 -1
  51. package/package.json +3 -1
  52. package/src/ui/dist/assets/main-BOyShc8c.js +217 -0
  53. package/src/ui/dist/assets/main-Bkokm1KG.css +1 -0
  54. package/src/ui/dist/index.html +2 -2
  55. package/dist/jest.config.d.ts +0 -4
  56. package/dist/jest.config.d.ts.map +0 -1
  57. package/dist/jest.config.js +0 -73
  58. package/dist/jest.config.js.map +0 -1
  59. package/dist/proxy/proxy-config.d.ts +0 -2
  60. package/dist/proxy/proxy-config.d.ts.map +0 -1
  61. package/dist/proxy/proxy-config.js +0 -59
  62. package/dist/proxy/proxy-config.js.map +0 -1
  63. package/dist/routes/config.d.ts +0 -2
  64. package/dist/routes/config.d.ts.map +0 -1
  65. package/dist/routes/config.js +0 -16
  66. package/dist/routes/config.js.map +0 -1
  67. package/dist/routes/selection.d.ts +0 -2
  68. package/dist/routes/selection.d.ts.map +0 -1
  69. package/dist/routes/selection.js +0 -32
  70. package/dist/routes/selection.js.map +0 -1
  71. package/dist/scripts/selection-script.js +0 -846
  72. package/dist/services/__tests__/FileModificationService.test.d.ts +0 -2
  73. package/dist/services/__tests__/FileModificationService.test.d.ts.map +0 -1
  74. package/dist/services/__tests__/FileModificationService.test.js +0 -297
  75. package/dist/services/__tests__/FileModificationService.test.js.map +0 -1
  76. package/dist/services/__tests__/LLMService.spec.d.ts +0 -2
  77. package/dist/services/__tests__/LLMService.spec.d.ts.map +0 -1
  78. package/dist/services/__tests__/LLMService.spec.js +0 -270
  79. package/dist/services/__tests__/LLMService.spec.js.map +0 -1
  80. package/dist/services/__tests__/LocalGitService.test.d.ts +0 -2
  81. package/dist/services/__tests__/LocalGitService.test.d.ts.map +0 -1
  82. package/dist/services/__tests__/LocalGitService.test.js +0 -249
  83. package/dist/services/__tests__/LocalGitService.test.js.map +0 -1
  84. package/dist/shared/FileSystemAdapter.d.ts +0 -9
  85. package/dist/shared/FileSystemAdapter.d.ts.map +0 -1
  86. package/dist/shared/FileSystemAdapter.js +0 -7
  87. package/dist/shared/FileSystemAdapter.js.map +0 -1
  88. package/dist/shared/LLMService.d.ts +0 -58
  89. package/dist/shared/LLMService.d.ts.map +0 -1
  90. package/dist/shared/LLMService.js +0 -169
  91. package/dist/shared/LLMService.js.map +0 -1
  92. package/dist/shared/types.d.ts +0 -25
  93. package/dist/shared/types.d.ts.map +0 -1
  94. package/dist/shared/types.js +0 -6
  95. package/dist/shared/types.js.map +0 -1
  96. package/dist/types/types.d.ts +0 -15
  97. package/dist/types/types.d.ts.map +0 -1
  98. package/dist/types/types.js +0 -3
  99. package/dist/types/types.js.map +0 -1
  100. package/src/ui/dist/assets/main-DqRH7DiB.js +0 -144
  101. package/src/ui/dist/assets/main-DuoX_Unn.css +0 -1
@@ -1,5 +1,6 @@
1
1
  export type RivetConfig = {
2
2
  authToken?: string;
3
+ refreshToken?: string;
3
4
  email?: string;
4
5
  proxyUrl?: string;
5
6
  };
@@ -20,13 +21,17 @@ export declare class ConfigManager {
20
21
  */
21
22
  private saveConfig;
22
23
  /**
23
- * Set authentication token and email
24
+ * Set authentication tokens and email
24
25
  */
25
- setAuth(token: string, email: string): void;
26
+ setAuth(token: string, email: string, refreshToken?: string): void;
26
27
  /**
27
28
  * Get authentication token
28
29
  */
29
30
  getAuthToken(): string | undefined;
31
+ /**
32
+ * Get refresh token
33
+ */
34
+ getRefreshToken(): string | undefined;
30
35
  /**
31
36
  * Get user email
32
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/services/ConfigManager.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAc;;IAiB5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO3C;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,SAAS,IAAI,IAAI;IAOjB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM9B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB;AAKD,eAAO,MAAM,gBAAgB,QAAO,aAKnC,CAAC"}
1
+ {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/services/ConfigManager.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAc;;IAiB5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAQlE;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM9B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB;AAKD,eAAO,MAAM,gBAAgB,QAAO,aAKnC,CAAC"}
@@ -58,13 +58,14 @@ class ConfigManager {
58
58
  }
59
59
  }
60
60
  /**
61
- * Set authentication token and email
61
+ * Set authentication tokens and email
62
62
  */
63
- setAuth(token, email) {
63
+ setAuth(token, email, refreshToken) {
64
64
  this.config.authToken = token;
65
+ this.config.refreshToken = refreshToken;
65
66
  this.config.email = email;
66
67
  this.saveConfig();
67
- log.debug(`Saved auth token for ${email}`);
68
+ log.debug(`Saved auth tokens for ${email}`);
68
69
  }
69
70
  /**
70
71
  * Get authentication token
@@ -72,6 +73,12 @@ class ConfigManager {
72
73
  getAuthToken() {
73
74
  return this.config.authToken;
74
75
  }
76
+ /**
77
+ * Get refresh token
78
+ */
79
+ getRefreshToken() {
80
+ return this.config.refreshToken;
81
+ }
75
82
  /**
76
83
  * Get user email
77
84
  */
@@ -89,6 +96,7 @@ class ConfigManager {
89
96
  */
90
97
  clearAuth() {
91
98
  this.config.authToken = undefined;
99
+ this.config.refreshToken = undefined;
92
100
  this.config.email = undefined;
93
101
  this.saveConfig();
94
102
  log.debug('Cleared authentication');
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/services/ConfigManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/services/ConfigManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import { WebSocket } from 'ws';
2
+ import { ElementContext } from '../types/change-types';
3
+ import type { Response } from 'express';
4
+ /**
5
+ * Message types sent from Rivet server to Electron plugin
6
+ */
7
+ export type ServerMessage = {
8
+ type: 'enable_selection';
9
+ } | {
10
+ type: 'disable_selection';
11
+ } | {
12
+ type: 'files_modified';
13
+ files: string[];
14
+ } | {
15
+ type: 'ping';
16
+ };
17
+ /**
18
+ * Message types received from Electron plugin
19
+ */
20
+ export type ClientMessage = {
21
+ type: 'connected';
22
+ appInfo: {
23
+ name: string;
24
+ version: string;
25
+ framework?: string;
26
+ windowId?: string;
27
+ };
28
+ } | {
29
+ type: 'element_selected';
30
+ element: ElementContext;
31
+ } | {
32
+ type: 'element_hovered';
33
+ element: ElementContext;
34
+ } | {
35
+ type: 'pong';
36
+ };
37
+ /**
38
+ * Handles WebSocket communication with Electron plugin
39
+ */
40
+ export declare class ElectronBridgeService {
41
+ private connections;
42
+ private messageHandlers;
43
+ private pingInterval;
44
+ private lastSelectedElement;
45
+ private sseClient;
46
+ private targetWindowId;
47
+ constructor();
48
+ /**
49
+ * Attach WebSocket connection from Electron plugin
50
+ */
51
+ attachWebSocket(ws: WebSocket): void;
52
+ /**
53
+ * Check if Electron app is connected
54
+ */
55
+ getIsConnected(): boolean;
56
+ /**
57
+ * Set which window should receive selection commands
58
+ */
59
+ setTargetWindow(windowId: string): void;
60
+ /**
61
+ * Get list of connected windows
62
+ */
63
+ getConnectedWindows(): string[];
64
+ /**
65
+ * Get the last selected element from Electron app
66
+ */
67
+ getSelectedElement(): ElementContext | null;
68
+ /**
69
+ * Clear the selected element
70
+ */
71
+ clearSelectedElement(): void;
72
+ /**
73
+ * Send message to Electron plugin (sends to target window only)
74
+ */
75
+ send(message: ServerMessage): void;
76
+ /**
77
+ * Register handler for specific message type
78
+ */
79
+ on<T extends ClientMessage['type']>(type: T, handler: (message: Extract<ClientMessage, {
80
+ type: T;
81
+ }>) => void): void;
82
+ /**
83
+ * Remove handler for message type
84
+ */
85
+ off<T extends ClientMessage['type']>(type: T, handler: (message: Extract<ClientMessage, {
86
+ type: T;
87
+ }>) => void): void;
88
+ /**
89
+ * Enable element selection mode in Electron app
90
+ */
91
+ enableSelection(): void;
92
+ /**
93
+ * Disable element selection mode in Electron app
94
+ */
95
+ disableSelection(): void;
96
+ /**
97
+ * Notify Electron app that files have been modified
98
+ */
99
+ notifyFilesModified(files: string[]): void;
100
+ /**
101
+ * Register SSE client for element updates
102
+ */
103
+ setSSEClient(res: Response): void;
104
+ /**
105
+ * Send SSE message to client
106
+ */
107
+ private sendSSEMessage;
108
+ /**
109
+ * Handle incoming message from Electron
110
+ */
111
+ private handleMessage;
112
+ /**
113
+ * Start heartbeat ping/pong
114
+ */
115
+ private startHeartbeat;
116
+ /**
117
+ * Cleanup resources
118
+ */
119
+ cleanup(): void;
120
+ }
121
+ //# sourceMappingURL=ElectronBridgeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElectronBridgeService.d.ts","sourceRoot":"","sources":["../../src/services/ElectronBridgeService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,GACD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CACP;IACZ,OAAO,CAAC,eAAe,CAGT;IACd,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAuB;;IAiB7C;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAmGpC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYvC;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAM/B;;OAEG;IACH,kBAAkB,IAAI,cAAc,GAAG,IAAI;IAI3C;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAqClC;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,EAChC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,IAAI,GAC9D,IAAI;IASP;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,EACjC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,IAAI,GAC9D,IAAI;IAYP;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAI1C;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAsBjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,IAAI,IAAI;CAkBhB"}
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ElectronBridgeService = void 0;
4
+ const logger_1 = require("../utils/logger");
5
+ const log = (0, logger_1.createLogger)('ElectronBridgeService');
6
+ /**
7
+ * Handles WebSocket communication with Electron plugin
8
+ */
9
+ class ElectronBridgeService {
10
+ constructor() {
11
+ this.connections = new Map();
12
+ this.messageHandlers = new Map();
13
+ this.pingInterval = null;
14
+ this.lastSelectedElement = null;
15
+ this.sseClient = null;
16
+ this.targetWindowId = null; // Which window to send selection commands to
17
+ log.info('ElectronBridgeService initialized');
18
+ // Set up handler for element selection
19
+ this.on('element_selected', (message) => {
20
+ this.lastSelectedElement = message.element;
21
+ log.info('Element selected in Electron app:', message.element.tagName);
22
+ // Send to SSE client if connected
23
+ if (this.sseClient) {
24
+ this.sendSSEMessage('element_selected', message.element);
25
+ }
26
+ });
27
+ }
28
+ /**
29
+ * Attach WebSocket connection from Electron plugin
30
+ */
31
+ attachWebSocket(ws) {
32
+ const connectionId = Math.random().toString(36).substring(7);
33
+ log.debug(`Attaching Electron WebSocket connection [${connectionId}]`);
34
+ // Store connection temporarily with connectionId until we get windowId
35
+ this.connections.set(connectionId, { ws, windowId: null });
36
+ // Handle incoming messages
37
+ ws.on('message', (data) => {
38
+ try {
39
+ const message = JSON.parse(data.toString());
40
+ log.debug('Received message from Electron:', message.type);
41
+ // If this is a connection message, extract windowId and rekey the connection
42
+ if (message.type === 'connected' && message.appInfo.windowId) {
43
+ const windowId = message.appInfo.windowId;
44
+ log.info(`Window identified: ${windowId} (connection ${connectionId})`);
45
+ // Check if there's already a connection for this windowId
46
+ const existingEntry = Array.from(this.connections.entries()).find(([_, conn]) => conn.windowId === windowId);
47
+ if (existingEntry) {
48
+ const [existingConnId, existingConn] = existingEntry;
49
+ log.debug(`Replacing existing connection for window ${windowId} (old connection ${existingConnId})`);
50
+ // Close old connection
51
+ existingConn.ws.removeAllListeners();
52
+ setImmediate(() => {
53
+ try {
54
+ existingConn.ws.close();
55
+ }
56
+ catch (error) {
57
+ log.error('Error closing old connection:', error);
58
+ }
59
+ });
60
+ this.connections.delete(existingConnId);
61
+ }
62
+ // Update this connection with windowId
63
+ this.connections.set(connectionId, { ws, windowId });
64
+ // Set as target only if no target exists yet
65
+ if (!this.targetWindowId) {
66
+ this.targetWindowId = windowId;
67
+ log.info(`Set initial target window to: ${windowId}`);
68
+ }
69
+ }
70
+ // Detect user interaction and switch target window
71
+ if (message.type === 'element_selected' ||
72
+ message.type === 'element_hovered') {
73
+ // Find which window sent this message
74
+ const conn = this.connections.get(connectionId);
75
+ if (conn?.windowId && conn.windowId !== this.targetWindowId) {
76
+ this.targetWindowId = conn.windowId;
77
+ log.info(`Switched target window to ${conn.windowId} (user interaction detected)`);
78
+ }
79
+ }
80
+ this.handleMessage(message);
81
+ }
82
+ catch (error) {
83
+ log.error('Failed to parse message from Electron:', error);
84
+ }
85
+ });
86
+ // Handle connection close
87
+ ws.on('close', () => {
88
+ const conn = this.connections.get(connectionId);
89
+ log.info(`Electron WebSocket connection closed [${connectionId}]${conn?.windowId ? ` (window: ${conn.windowId})` : ''}`);
90
+ this.connections.delete(connectionId);
91
+ // If the closed connection was the target, clear target
92
+ if (conn?.windowId === this.targetWindowId) {
93
+ this.targetWindowId = null;
94
+ log.info('Target window closed, cleared target');
95
+ }
96
+ });
97
+ // Handle errors
98
+ ws.on('error', (error) => {
99
+ log.error('Electron WebSocket error:', error);
100
+ });
101
+ // Start ping/pong heartbeat if not already running
102
+ if (!this.pingInterval) {
103
+ this.startHeartbeat();
104
+ }
105
+ }
106
+ /**
107
+ * Check if Electron app is connected
108
+ */
109
+ getIsConnected() {
110
+ return this.connections.size > 0;
111
+ }
112
+ /**
113
+ * Set which window should receive selection commands
114
+ */
115
+ setTargetWindow(windowId) {
116
+ const hasWindow = Array.from(this.connections.values()).some((conn) => conn.windowId === windowId);
117
+ if (hasWindow) {
118
+ this.targetWindowId = windowId;
119
+ log.info(`Target window set to: ${windowId}`);
120
+ }
121
+ else {
122
+ log.warn(`Cannot set target to ${windowId} - window not connected`);
123
+ }
124
+ }
125
+ /**
126
+ * Get list of connected windows
127
+ */
128
+ getConnectedWindows() {
129
+ return Array.from(this.connections.values())
130
+ .map((conn) => conn.windowId)
131
+ .filter((id) => id !== null);
132
+ }
133
+ /**
134
+ * Get the last selected element from Electron app
135
+ */
136
+ getSelectedElement() {
137
+ return this.lastSelectedElement;
138
+ }
139
+ /**
140
+ * Clear the selected element
141
+ */
142
+ clearSelectedElement() {
143
+ this.lastSelectedElement = null;
144
+ }
145
+ /**
146
+ * Send message to Electron plugin (sends to target window only)
147
+ */
148
+ send(message) {
149
+ if (!this.targetWindowId) {
150
+ log.warn('Cannot send message - No target window set');
151
+ return;
152
+ }
153
+ // Find the connection for the target window
154
+ const targetConn = Array.from(this.connections.values()).find((conn) => conn.windowId === this.targetWindowId);
155
+ if (!targetConn) {
156
+ log.warn(`Cannot send message - Target window ${this.targetWindowId} not connected`);
157
+ return;
158
+ }
159
+ const ws = targetConn.ws;
160
+ // Check actual WebSocket readyState
161
+ // 0 = CONNECTING, 1 = OPEN, 2 = CLOSING, 3 = CLOSED
162
+ if (ws.readyState !== 1) {
163
+ log.warn(`Cannot send message - WebSocket not ready (state: ${ws.readyState}, message: ${message.type})`);
164
+ return;
165
+ }
166
+ try {
167
+ ws.send(JSON.stringify(message));
168
+ log.debug(`Sent message to window ${this.targetWindowId}:`, message.type);
169
+ }
170
+ catch (error) {
171
+ log.error('Failed to send message to Electron:', error);
172
+ }
173
+ }
174
+ /**
175
+ * Register handler for specific message type
176
+ */
177
+ on(type, handler) {
178
+ if (!this.messageHandlers.has(type)) {
179
+ this.messageHandlers.set(type, []);
180
+ }
181
+ this.messageHandlers
182
+ .get(type)
183
+ .push(handler);
184
+ }
185
+ /**
186
+ * Remove handler for message type
187
+ */
188
+ off(type, handler) {
189
+ const handlers = this.messageHandlers.get(type);
190
+ if (handlers) {
191
+ const index = handlers.indexOf(handler);
192
+ if (index !== -1) {
193
+ handlers.splice(index, 1);
194
+ }
195
+ }
196
+ }
197
+ /**
198
+ * Enable element selection mode in Electron app
199
+ */
200
+ enableSelection() {
201
+ this.send({ type: 'enable_selection' });
202
+ }
203
+ /**
204
+ * Disable element selection mode in Electron app
205
+ */
206
+ disableSelection() {
207
+ this.send({ type: 'disable_selection' });
208
+ }
209
+ /**
210
+ * Notify Electron app that files have been modified
211
+ */
212
+ notifyFilesModified(files) {
213
+ this.send({ type: 'files_modified', files });
214
+ }
215
+ /**
216
+ * Register SSE client for element updates
217
+ */
218
+ setSSEClient(res) {
219
+ log.info('Setting SSE client for element updates');
220
+ // Close previous client if exists
221
+ if (this.sseClient) {
222
+ this.sseClient.end();
223
+ }
224
+ this.sseClient = res;
225
+ // Send current element immediately on connection
226
+ if (this.lastSelectedElement) {
227
+ this.sendSSEMessage('element_selected', this.lastSelectedElement);
228
+ }
229
+ // Clear on close
230
+ res.on('close', () => {
231
+ log.info('SSE client disconnected');
232
+ this.sseClient = null;
233
+ });
234
+ }
235
+ /**
236
+ * Send SSE message to client
237
+ */
238
+ sendSSEMessage(event, data) {
239
+ if (!this.sseClient)
240
+ return;
241
+ try {
242
+ this.sseClient.write(`event: ${event}\n`);
243
+ this.sseClient.write(`data: ${JSON.stringify(data)}\n\n`);
244
+ }
245
+ catch (error) {
246
+ log.error('Failed to send SSE message:', error);
247
+ this.sseClient = null;
248
+ }
249
+ }
250
+ /**
251
+ * Handle incoming message from Electron
252
+ */
253
+ handleMessage(message) {
254
+ const handlers = this.messageHandlers.get(message.type);
255
+ if (handlers) {
256
+ handlers.forEach((handler) => handler(message));
257
+ }
258
+ }
259
+ /**
260
+ * Start heartbeat ping/pong
261
+ */
262
+ startHeartbeat() {
263
+ this.pingInterval = setInterval(() => {
264
+ // Ping all connected windows
265
+ for (const [connId, conn] of this.connections.entries()) {
266
+ if (conn.ws.readyState === 1) {
267
+ try {
268
+ conn.ws.send(JSON.stringify({ type: 'ping' }));
269
+ }
270
+ catch (error) {
271
+ log.error(`Failed to ping connection ${connId}:`, error);
272
+ }
273
+ }
274
+ }
275
+ }, 30000); // Ping every 30 seconds
276
+ }
277
+ /**
278
+ * Cleanup resources
279
+ */
280
+ cleanup() {
281
+ if (this.pingInterval) {
282
+ clearInterval(this.pingInterval);
283
+ this.pingInterval = null;
284
+ }
285
+ for (const [connId, conn] of this.connections.entries()) {
286
+ try {
287
+ conn.ws.close();
288
+ }
289
+ catch (error) {
290
+ log.error(`Error closing connection ${connId}:`, error);
291
+ }
292
+ }
293
+ this.connections.clear();
294
+ this.messageHandlers.clear();
295
+ this.targetWindowId = null;
296
+ }
297
+ }
298
+ exports.ElectronBridgeService = ElectronBridgeService;
299
+ //# sourceMappingURL=ElectronBridgeService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElectronBridgeService.js","sourceRoot":"","sources":["../../src/services/ElectronBridgeService.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,10 @@ export declare class LLMService {
48
48
  private fileModService;
49
49
  private configManager;
50
50
  constructor(proxyUrl?: string);
51
+ /**
52
+ * Refresh access token using refresh token
53
+ */
54
+ private refreshAccessToken;
51
55
  private makeProxyRequest;
52
56
  modifyMultipleElements(request: MultiElementLLMRequest): Promise<AppliedModificationResult>;
53
57
  private groupElementsByFile;
@@ -1 +1 @@
1
- {"version":3,"file":"LLMService.d.ts","sourceRoot":"","sources":["../../src/services/LLMService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyB7C,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAGF,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;CAC/B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,QAAQ,CAAC,EAAE,MAAM;YAMf,gBAAgB;IA6DxB,sBAAsB,CAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IA2CrC,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,oBAAoB;YAyDd,2BAA2B;CAsB1C"}
1
+ {"version":3,"file":"LLMService.d.ts","sourceRoot":"","sources":["../../src/services/LLMService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyB7C,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAGF,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;CAC/B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,QAAQ,CAAC,EAAE,MAAM;IAM7B;;OAEG;YACW,kBAAkB;YAsClB,gBAAgB;IA2ExB,sBAAsB,CAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IA2CrC,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,oBAAoB;YAyDd,2BAA2B;CAsB1C"}
@@ -27,7 +27,44 @@ class LLMService {
27
27
  this.fileModService = new FileModificationService_1.FileModificationService();
28
28
  this.log.info(`LLMService initialized with proxy URL: ${this.proxyUrl}`);
29
29
  }
30
- async makeProxyRequest(prompt, temperature) {
30
+ /**
31
+ * Refresh access token using refresh token
32
+ */
33
+ async refreshAccessToken() {
34
+ const refreshToken = this.configManager.getRefreshToken();
35
+ if (!refreshToken) {
36
+ this.log.error('No refresh token available');
37
+ return false;
38
+ }
39
+ try {
40
+ this.log.info('Refreshing access token...');
41
+ const response = await fetch(`${this.proxyUrl}/api/auth/refresh`, {
42
+ method: 'POST',
43
+ headers: {
44
+ 'Content-Type': 'application/json',
45
+ },
46
+ body: JSON.stringify({ refreshToken }),
47
+ });
48
+ if (!response.ok) {
49
+ this.log.error('Token refresh failed');
50
+ return false;
51
+ }
52
+ const result = await response.json();
53
+ if (result.success && result.token) {
54
+ // Update stored tokens
55
+ const email = this.configManager.getEmail() || '';
56
+ this.configManager.setAuth(result.token, email, result.refreshToken);
57
+ this.log.info('Access token refreshed successfully');
58
+ return true;
59
+ }
60
+ return false;
61
+ }
62
+ catch (error) {
63
+ this.log.error('Error refreshing token:', error);
64
+ return false;
65
+ }
66
+ }
67
+ async makeProxyRequest(prompt, temperature, retryCount = 0) {
31
68
  const proxyRequest = {
32
69
  provider: 'anthropic',
33
70
  model: ANTHROPIC_MODEL,
@@ -53,6 +90,16 @@ class LLMService {
53
90
  },
54
91
  body: JSON.stringify(proxyRequest),
55
92
  });
93
+ // If 401 and we haven't retried yet, try to refresh token
94
+ if (response.status === 401 && retryCount === 0) {
95
+ this.log.warn('Got 401, attempting to refresh token...');
96
+ const refreshed = await this.refreshAccessToken();
97
+ if (refreshed) {
98
+ // Retry the request with new token
99
+ return this.makeProxyRequest(prompt, temperature, retryCount + 1);
100
+ }
101
+ throw new Error('Authentication expired. Please run `rivet logout` and `rivet login` to re-authenticate.');
102
+ }
56
103
  if (!response.ok) {
57
104
  const errorData = await response
58
105
  .json()
@@ -1 +1 @@
1
- {"version":3,"file":"LLMService.js","sourceRoot":"","sources":["../../src/services/LLMService.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAA+C;AAG/C,uEAAoE;AACpE,mDAAmD;AACnD,2CAA4C;AAE5C,MAAM,eAAe,GAAG,4BAA4B,CAAC;AACrD,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,0CAA0C;AAC1C,MAAM,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,aAAa,EAAE,OAAC;SACb,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACvE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACrE,CAAC,CACH;SACA,QAAQ,CACP,0EAA0E,CAC3E;CACJ,CAAC,CAAC;AAqDH,MAAa,UAAU;IAMrB,YAAY,QAAiB;QALrB,QAAG,GAAG,IAAA,qBAAY,EAAC,YAAY,CAAC,CAAC;QAGjC,kBAAa,GAAG,IAAA,gCAAgB,GAAE,CAAC;QAGzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,iBAAS,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,iDAAuB,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAc,EACd,WAAoB;QAGpB,MAAM,YAAY,GAAiB;YACjC,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,EAAE;YACZ,MAAM;YACN,WAAW;YACX,SAAS,EAAE,wBAAwB;YACnC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,wBAAwB;SACjC,CAAC;QAEF,6BAA6B;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,UAAU,EAAE;gBACvD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,gBAAgB,EAAE,WAAW;oBAC7B,oBAAoB,EAAE,SAAS;iBAChC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;aACnC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ;qBAC7B,IAAI,EAAE;qBACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,yBAAyB,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE,CAClE,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAkB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEpD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,KAAK,IAAI,kBAAkB,EAAE,CAC9D,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,OAA+B;QAE/B,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAEtD,yBAAyB;QACzB,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAEzD,uCAAuC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAEhE,qCAAqC;YACrC,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,oDAAoD,EACpD,MAAM,CACP,CAAC;gBACF,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACtE,CAAC;YACJ,CAAC;YAED,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,2BAA2B,CACjE,UAAU,CAAC,IAAI,CAAC,aAAa,CAC9B,CAAC;YAEF,OAAO;gBACL,YAAY,EAAE,oBAAoB;gBAClC,2DAA2D;gBAC3D,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa;qBACnC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;qBACzB,IAAI,CAAC,IAAI,CAAC;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,mBAAmB,CACzB,QAAsB;QAEtB,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;QACvD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,oBAAoB,CAC1B,WAAmB,EACnB,cAAyC;QAEzC,OAAO;;eAEI,WAAW;;;EAGxB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC5B,oEAAoE;YACpE,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAChD,OAAO;YACC,QAAQ;qBACC,QAAQ;iBACtB,GAAG,CACF,CAAC,GAAG,EAAE,EAAE,CACN,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,gBAAgB,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,IAAI,CAC7I;iBACA,IAAI,CAAC,IAAI,CAAC;;;EAGf,aAAa;CACd,CAAC;QACA,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCA4ByB,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,2BAA2B,CACvC,aAKE;QAIF,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,YAAY,aAAa,CAAC,MAAM,gDAAgD,CACjF,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAE5E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAlND,gCAkNC"}
1
+ {"version":3,"file":"LLMService.js","sourceRoot":"","sources":["../../src/services/LLMService.ts"],"names":[],"mappings":"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"}
@@ -28,5 +28,10 @@ export declare class LocalGitService {
28
28
  private parseRepoUrl;
29
29
  pushBranch(projectPath: string, branchName: string): Promise<void>;
30
30
  generatePullRequestUrl(projectPath: string, branchName: string, defaultBranch?: string): Promise<string>;
31
+ /**
32
+ * Undo the last commit by resetting HEAD to the previous commit.
33
+ * This is a destructive operation that removes the last commit from history.
34
+ */
35
+ undoLastCommit(projectPath: string): Promise<void>;
31
36
  }
32
37
  //# sourceMappingURL=LocalGitService.d.ts.map