codecane 1.0.123

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 (156) hide show
  1. package/README.md +87 -0
  2. package/dist/__tests__/tool-handlers.test.d.ts +1 -0
  3. package/dist/__tests__/tool-handlers.test.js +32 -0
  4. package/dist/__tests__/tool-handlers.test.js.map +1 -0
  5. package/dist/chat-storage.d.ts +29 -0
  6. package/dist/chat-storage.js +125 -0
  7. package/dist/chat-storage.js.map +1 -0
  8. package/dist/cli.d.ts +38 -0
  9. package/dist/cli.js +453 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/client.d.ts +71 -0
  12. package/dist/client.js +458 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/code-map/languages.d.ts +12 -0
  15. package/dist/code-map/languages.js +129 -0
  16. package/dist/code-map/languages.js.map +1 -0
  17. package/dist/code-map/parse.d.ts +11 -0
  18. package/dist/code-map/parse.js +127 -0
  19. package/dist/code-map/parse.js.map +1 -0
  20. package/dist/code-map/test-langs/test.d.ts +11 -0
  21. package/dist/code-map/test-langs/test.js +23 -0
  22. package/dist/code-map/test-langs/test.js.map +1 -0
  23. package/dist/code-map/tree-sitter-queries/readme.md +23 -0
  24. package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +11 -0
  25. package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +13 -0
  26. package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +17 -0
  27. package/dist/code-map/tree-sitter-queries/tree-sitter-go-tags.scm +26 -0
  28. package/dist/code-map/tree-sitter-queries/tree-sitter-java-tags.scm +19 -0
  29. package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +15 -0
  30. package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +26 -0
  31. package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +9 -0
  32. package/dist/code-map/tree-sitter-queries/tree-sitter-ruby-tags.scm +58 -0
  33. package/dist/code-map/tree-sitter-queries/tree-sitter-rust-tags.scm +26 -0
  34. package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +15 -0
  35. package/dist/code-map/tsconfig.tsbuildinfo +1 -0
  36. package/dist/common/actions.d.ts +1405 -0
  37. package/dist/common/actions.js +193 -0
  38. package/dist/common/actions.js.map +1 -0
  39. package/dist/common/billing/quota-manager.d.ts +29 -0
  40. package/dist/common/billing/quota-manager.js +213 -0
  41. package/dist/common/billing/quota-manager.js.map +1 -0
  42. package/dist/common/constants.d.ts +41 -0
  43. package/dist/common/constants.js +126 -0
  44. package/dist/common/constants.js.map +1 -0
  45. package/dist/common/db/drizzle.config.d.ts +2 -0
  46. package/dist/common/db/drizzle.config.js +17 -0
  47. package/dist/common/db/drizzle.config.js.map +1 -0
  48. package/dist/common/db/env.d.mts +1 -0
  49. package/dist/common/db/env.mjs +26 -0
  50. package/dist/common/db/env.mjs.map +1 -0
  51. package/dist/common/db/index.d.ts +6 -0
  52. package/dist/common/db/index.js +35 -0
  53. package/dist/common/db/index.js.map +1 -0
  54. package/dist/common/db/schema.d.ts +1089 -0
  55. package/dist/common/db/schema.js +114 -0
  56. package/dist/common/db/schema.js.map +1 -0
  57. package/dist/common/env.d.mts +1 -0
  58. package/dist/common/env.mjs +34 -0
  59. package/dist/common/env.mjs.map +1 -0
  60. package/dist/common/project-file-tree.d.ts +9 -0
  61. package/dist/common/project-file-tree.js +166 -0
  62. package/dist/common/project-file-tree.js.map +1 -0
  63. package/dist/common/types/referral.d.ts +2 -0
  64. package/dist/common/types/referral.js +5 -0
  65. package/dist/common/types/referral.js.map +1 -0
  66. package/dist/common/types/usage.d.ts +24 -0
  67. package/dist/common/types/usage.js +13 -0
  68. package/dist/common/types/usage.js.map +1 -0
  69. package/dist/common/util/__tests__/string.test.d.ts +1 -0
  70. package/dist/common/util/__tests__/string.test.js +83 -0
  71. package/dist/common/util/__tests__/string.test.js.map +1 -0
  72. package/dist/common/util/array.d.ts +6 -0
  73. package/dist/common/util/array.js +32 -0
  74. package/dist/common/util/array.js.map +1 -0
  75. package/dist/common/util/changes.d.ts +6 -0
  76. package/dist/common/util/changes.js +72 -0
  77. package/dist/common/util/changes.js.map +1 -0
  78. package/dist/common/util/credentials.d.ts +25 -0
  79. package/dist/common/util/credentials.js +24 -0
  80. package/dist/common/util/credentials.js.map +1 -0
  81. package/dist/common/util/dates.d.ts +1 -0
  82. package/dist/common/util/dates.js +13 -0
  83. package/dist/common/util/dates.js.map +1 -0
  84. package/dist/common/util/file.d.ts +151 -0
  85. package/dist/common/util/file.js +180 -0
  86. package/dist/common/util/file.js.map +1 -0
  87. package/dist/common/util/git.d.ts +6 -0
  88. package/dist/common/util/git.js +81 -0
  89. package/dist/common/util/git.js.map +1 -0
  90. package/dist/common/util/helpers.d.ts +1 -0
  91. package/dist/common/util/helpers.js +6 -0
  92. package/dist/common/util/helpers.js.map +1 -0
  93. package/dist/common/util/object.d.ts +18 -0
  94. package/dist/common/util/object.js +91 -0
  95. package/dist/common/util/object.js.map +1 -0
  96. package/dist/common/util/patch.d.ts +1 -0
  97. package/dist/common/util/patch.js +215 -0
  98. package/dist/common/util/patch.js.map +1 -0
  99. package/dist/common/util/promise.d.ts +1 -0
  100. package/dist/common/util/promise.js +33 -0
  101. package/dist/common/util/promise.js.map +1 -0
  102. package/dist/common/util/referral.d.ts +1 -0
  103. package/dist/common/util/referral.js +6 -0
  104. package/dist/common/util/referral.js.map +1 -0
  105. package/dist/common/util/server/referral.d.ts +14 -0
  106. package/dist/common/util/server/referral.js +85 -0
  107. package/dist/common/util/server/referral.js.map +1 -0
  108. package/dist/common/util/string.d.ts +9 -0
  109. package/dist/common/util/string.js +90 -0
  110. package/dist/common/util/string.js.map +1 -0
  111. package/dist/common/util/stripe.d.ts +2 -0
  112. package/dist/common/util/stripe.js +19 -0
  113. package/dist/common/util/stripe.js.map +1 -0
  114. package/dist/common/util/tools.d.ts +2 -0
  115. package/dist/common/util/tools.js +13 -0
  116. package/dist/common/util/tools.js.map +1 -0
  117. package/dist/common/websockets/websocket-client.d.ts +40 -0
  118. package/dist/common/websockets/websocket-client.js +187 -0
  119. package/dist/common/websockets/websocket-client.js.map +1 -0
  120. package/dist/common/websockets/websocket-schema.d.ts +3058 -0
  121. package/dist/common/websockets/websocket-schema.js +55 -0
  122. package/dist/common/websockets/websocket-schema.js.map +1 -0
  123. package/dist/config.d.ts +2 -0
  124. package/dist/config.js +8 -0
  125. package/dist/config.js.map +1 -0
  126. package/dist/credentials.d.ts +3 -0
  127. package/dist/credentials.js +33 -0
  128. package/dist/credentials.js.map +1 -0
  129. package/dist/fingerprint.d.ts +1 -0
  130. package/dist/fingerprint.js +43 -0
  131. package/dist/fingerprint.js.map +1 -0
  132. package/dist/index.d.ts +2 -0
  133. package/dist/index.js +75 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/menu.d.ts +1 -0
  136. package/dist/menu.js +94 -0
  137. package/dist/menu.js.map +1 -0
  138. package/dist/project-files.d.ts +64 -0
  139. package/dist/project-files.js +338 -0
  140. package/dist/project-files.js.map +1 -0
  141. package/dist/tool-handlers.d.ts +11 -0
  142. package/dist/tool-handlers.js +215 -0
  143. package/dist/tool-handlers.js.map +1 -0
  144. package/dist/types.d.ts +7 -0
  145. package/dist/types.js +3 -0
  146. package/dist/types.js.map +1 -0
  147. package/dist/update-codebuff.d.ts +1 -0
  148. package/dist/update-codebuff.js +156 -0
  149. package/dist/update-codebuff.js.map +1 -0
  150. package/dist/web-scraper.d.ts +3 -0
  151. package/dist/web-scraper.js +57 -0
  152. package/dist/web-scraper.js.map +1 -0
  153. package/dist/worker-script-project-context.d.ts +1 -0
  154. package/dist/worker-script-project-context.js +13 -0
  155. package/dist/worker-script-project-context.js.map +1 -0
  156. package/package.json +71 -0
package/dist/client.js ADDED
@@ -0,0 +1,458 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.Client = void 0;
30
+ const picocolors_1 = require("picocolors");
31
+ const websocket_client_1 = require("./common/websockets/websocket-client");
32
+ const project_files_1 = require("./project-files");
33
+ const changes_1 = require("./common/util/changes");
34
+ const credentials_1 = require("./credentials");
35
+ const actions_1 = require("./common/actions");
36
+ const tool_handlers_1 = require("./tool-handlers");
37
+ const constants_1 = require("./common/constants");
38
+ const lodash_1 = require("lodash");
39
+ const path_1 = __importDefault(require("path"));
40
+ const fs = __importStar(require("fs"));
41
+ const ts_pattern_1 = require("ts-pattern");
42
+ const fingerprint_1 = require("./fingerprint");
43
+ class Client {
44
+ webSocket;
45
+ chatStorage;
46
+ currentUserInputId;
47
+ returnControlToUser;
48
+ fingerprintId;
49
+ costMode;
50
+ fileVersions = [];
51
+ fileContext;
52
+ user;
53
+ lastWarnedPct = 0;
54
+ usage = 0;
55
+ limit = 0;
56
+ subscription_active = false;
57
+ lastRequestCredits = 0;
58
+ sessionCreditsUsed = 0;
59
+ nextQuotaReset = null;
60
+ constructor(websocketUrl, chatStorage, onWebSocketError, returnControlToUser, costMode) {
61
+ this.costMode = costMode;
62
+ this.webSocket = new websocket_client_1.APIRealtimeClient(websocketUrl, onWebSocketError);
63
+ this.chatStorage = chatStorage;
64
+ this.user = this.getUser();
65
+ this.getFingerprintId();
66
+ this.returnControlToUser = returnControlToUser;
67
+ }
68
+ initFileVersions(projectFileContext) {
69
+ const { knowledgeFiles } = projectFileContext;
70
+ this.fileContext = projectFileContext;
71
+ this.fileVersions = [
72
+ Object.entries(knowledgeFiles).map(([path, content]) => ({
73
+ path,
74
+ content,
75
+ })),
76
+ ];
77
+ }
78
+ async getFingerprintId() {
79
+ if (this.fingerprintId) {
80
+ return this.fingerprintId;
81
+ }
82
+ this.fingerprintId =
83
+ this.user?.fingerprintId ?? (await (0, fingerprint_1.calculateFingerprint)());
84
+ return this.fingerprintId;
85
+ }
86
+ getUser() {
87
+ if (!fs.existsSync(credentials_1.CREDENTIALS_PATH)) {
88
+ return;
89
+ }
90
+ const credentialsFile = fs.readFileSync(credentials_1.CREDENTIALS_PATH, 'utf8');
91
+ const user = (0, credentials_1.userFromJson)(credentialsFile);
92
+ return user;
93
+ }
94
+ async connect() {
95
+ await this.webSocket.connect();
96
+ this.setupSubscriptions();
97
+ }
98
+ async handleReferralCode(referralCode) {
99
+ if (this.user) {
100
+ // User is logged in, so attempt to redeem referral code directly
101
+ try {
102
+ const redeemReferralResp = await fetch(`${process.env.NEXT_PUBLIC_APP_URL}/api/referrals`, {
103
+ method: 'POST',
104
+ headers: {
105
+ 'Content-Type': 'application/json',
106
+ Cookie: `next-auth.session-token=${this.user.authToken};`,
107
+ },
108
+ body: JSON.stringify({
109
+ referralCode,
110
+ authToken: this.user.authToken,
111
+ }),
112
+ });
113
+ const respJson = await redeemReferralResp.json();
114
+ if (redeemReferralResp.ok) {
115
+ console.log([
116
+ (0, picocolors_1.green)(`Noice, you've earned an extra ${respJson.credits_redeemed} credits!`),
117
+ `(pssst: you can also refer new users and earn ${constants_1.CREDITS_REFERRAL_BONUS} credits for each referral at: ${process.env.NEXT_PUBLIC_APP_URL}/referrals)`,
118
+ ].join('\n'));
119
+ this.getUsage();
120
+ }
121
+ else {
122
+ throw new Error(respJson.error);
123
+ }
124
+ }
125
+ catch (e) {
126
+ const error = e;
127
+ console.error((0, picocolors_1.red)('Error: ' + error.message));
128
+ this.returnControlToUser();
129
+ }
130
+ }
131
+ else {
132
+ await this.login(referralCode);
133
+ }
134
+ }
135
+ async logout() {
136
+ if (this.user) {
137
+ // If there was an existing user, clear their existing state
138
+ this.webSocket.sendAction({
139
+ type: 'clear-auth-token',
140
+ authToken: this.user.authToken,
141
+ userId: this.user.id,
142
+ fingerprintId: this.user.fingerprintId,
143
+ fingerprintHash: this.user.fingerprintHash,
144
+ });
145
+ // delete credentials file
146
+ fs.unlinkSync(credentials_1.CREDENTIALS_PATH);
147
+ console.log(`Logged you out of your account (${this.user.name})`);
148
+ this.user = undefined;
149
+ }
150
+ }
151
+ async login(referralCode) {
152
+ this.logout();
153
+ this.webSocket.sendAction({
154
+ type: 'login-code-request',
155
+ fingerprintId: await this.getFingerprintId(),
156
+ referralCode,
157
+ });
158
+ }
159
+ setUsage({ usage, limit, subscription_active, next_quota_reset, referralLink, session_credits_used, }) {
160
+ this.usage = usage;
161
+ this.limit = limit;
162
+ this.subscription_active = subscription_active;
163
+ this.nextQuotaReset = next_quota_reset;
164
+ if (!!session_credits_used) {
165
+ this.lastRequestCredits = Math.max(session_credits_used - this.sessionCreditsUsed, 0);
166
+ this.sessionCreditsUsed = session_credits_used;
167
+ }
168
+ // this.showUsageWarning(referralLink)
169
+ }
170
+ setupSubscriptions() {
171
+ this.webSocket.subscribe('action-error', (action) => {
172
+ console.error(['', (0, picocolors_1.red)(`Error: ${action.message}`)].join('\n'));
173
+ this.returnControlToUser();
174
+ return;
175
+ });
176
+ this.webSocket.subscribe('tool-call', async (a) => {
177
+ const { response, changes, changesAlreadyApplied, data, userInputId, addedFileVersions, resetFileVersions, } = a;
178
+ if (userInputId !== this.currentUserInputId) {
179
+ return;
180
+ }
181
+ if (resetFileVersions) {
182
+ this.fileVersions = [addedFileVersions];
183
+ }
184
+ else {
185
+ this.fileVersions.push(addedFileVersions);
186
+ }
187
+ const filesChanged = (0, lodash_1.uniq)(changes.map((change) => change.filePath));
188
+ this.chatStorage.saveFilesChanged(filesChanged);
189
+ (0, changes_1.applyChanges)((0, project_files_1.getProjectRoot)(), changes);
190
+ const { id, name, input } = data;
191
+ const currentChat = this.chatStorage.getCurrentChat();
192
+ const messages = currentChat.messages;
193
+ if (messages[messages.length - 1].role === 'assistant') {
194
+ // Probably the last response from the assistant was cancelled and added immediately.
195
+ return;
196
+ }
197
+ const assistantMessage = {
198
+ role: 'assistant',
199
+ content: response,
200
+ };
201
+ this.chatStorage.addMessage(this.chatStorage.getCurrentChat(), assistantMessage);
202
+ const handler = tool_handlers_1.toolHandlers[name];
203
+ if (handler) {
204
+ const content = await handler(input, id);
205
+ const toolResultMessage = {
206
+ role: 'user',
207
+ content: `${constants_1.TOOL_RESULT_MARKER}\n${content}`,
208
+ };
209
+ this.chatStorage.addMessage(this.chatStorage.getCurrentChat(), toolResultMessage);
210
+ await this.sendUserInput([...changesAlreadyApplied, ...changes], userInputId);
211
+ }
212
+ else {
213
+ console.error(`No handler found for tool: ${name}`);
214
+ }
215
+ });
216
+ this.webSocket.subscribe('read-files', (a) => {
217
+ const { filePaths } = a;
218
+ const files = (0, project_files_1.getFiles)(filePaths);
219
+ this.webSocket.sendAction({
220
+ type: 'read-files-response',
221
+ files,
222
+ });
223
+ });
224
+ this.webSocket.subscribe('npm-version-status', (action) => {
225
+ const { isUpToDate } = action;
226
+ if (!isUpToDate) {
227
+ console.warn((0, picocolors_1.yellow)(`\nThere's a new version of Codebuff! Please update to ensure proper functionality.\nUpdate now by running: npm install -g codebuff`));
228
+ }
229
+ });
230
+ let shouldRequestLogin = false;
231
+ this.webSocket.subscribe('login-code-response', async ({ loginUrl, fingerprintHash }) => {
232
+ const responseToUser = [
233
+ 'Please visit the following URL to log in:',
234
+ '\n',
235
+ loginUrl,
236
+ '\n',
237
+ 'See you back here after you finish logging in 👋',
238
+ ];
239
+ console.log(responseToUser.join('\n'));
240
+ // call backend every few seconds to check if user has been created yet, using our fingerprintId, for up to 5 minutes
241
+ const initialTime = Date.now();
242
+ shouldRequestLogin = true;
243
+ const handler = setInterval(async () => {
244
+ if (Date.now() - initialTime > 300000 || !shouldRequestLogin) {
245
+ shouldRequestLogin = false;
246
+ clearInterval(handler);
247
+ return;
248
+ }
249
+ this.webSocket.sendAction({
250
+ type: 'login-status-request',
251
+ fingerprintId: await this.getFingerprintId(),
252
+ fingerprintHash,
253
+ });
254
+ }, 5000);
255
+ });
256
+ this.webSocket.subscribe('auth-result', (action) => {
257
+ shouldRequestLogin = false;
258
+ if (action.user) {
259
+ this.user = action.user;
260
+ // Store in config file
261
+ const credentialsPathDir = path_1.default.dirname(credentials_1.CREDENTIALS_PATH);
262
+ fs.mkdirSync(credentialsPathDir, { recursive: true });
263
+ fs.writeFileSync(credentials_1.CREDENTIALS_PATH, JSON.stringify({ default: action.user }));
264
+ const responseToUser = [
265
+ 'Authentication successful!',
266
+ `Welcome, ${action.user.name}. Your credits have been increased by ${constants_1.CREDITS_USAGE_LIMITS.FREE / constants_1.CREDITS_USAGE_LIMITS.ANON}x to ${constants_1.CREDITS_USAGE_LIMITS.FREE.toLocaleString()} per month. Happy coding!`,
267
+ `Refer new users and earn ${constants_1.CREDITS_REFERRAL_BONUS} credits per month each: ${process.env.NEXT_PUBLIC_APP_URL}/referrals`,
268
+ ];
269
+ console.log(responseToUser.join('\n'));
270
+ this.lastWarnedPct = 0;
271
+ this.getUsage();
272
+ // this.returnControlToUser()
273
+ }
274
+ else {
275
+ console.warn(`Authentication failed: ${action.message}. Please try again in a few minutes or contact support at ${process.env.NEXT_PUBLIC_SUPPORT_EMAIL}.`);
276
+ }
277
+ });
278
+ this.webSocket.subscribe('usage-response', (action) => {
279
+ const parsedAction = actions_1.UsageReponseSchema.safeParse(action);
280
+ if (!parsedAction.success)
281
+ return;
282
+ const a = parsedAction.data;
283
+ console.log(`Usage: ${a.usage} / ${a.limit} credits`);
284
+ this.setUsage(a);
285
+ this.returnControlToUser();
286
+ });
287
+ }
288
+ showUsageWarning(referralLink) {
289
+ const errorCopy = [
290
+ this.user
291
+ ? (0, picocolors_1.green)(`Visit ${process.env.NEXT_PUBLIC_APP_URL}/pricing to upgrade.`)
292
+ : (0, picocolors_1.green)('Type "login" below to sign up and get more credits!'),
293
+ referralLink
294
+ ? (0, picocolors_1.green)(`Refer friends by sharing this link and you'll ${(0, picocolors_1.bold)(`each earn ${constants_1.CREDITS_REFERRAL_BONUS} credits per month`)}: ${referralLink}`)
295
+ : '',
296
+ ].join('\n');
297
+ const pct = (0, ts_pattern_1.match)(Math.floor((this.usage / this.limit) * 100))
298
+ .with(ts_pattern_1.P.number.gte(100), () => 100)
299
+ .with(ts_pattern_1.P.number.gte(75), () => 75)
300
+ .otherwise(() => 0);
301
+ // User has used all their allotted credits, but they haven't been notified yet
302
+ if (pct >= 100 && this.lastWarnedPct < 100) {
303
+ if (this.subscription_active) {
304
+ console.warn((0, picocolors_1.yellow)(`You have exceeded your monthly quota, but feel free to keep using Codebuff! We'll continue to charge you until your next billing cycle. See ${process.env.NEXT_PUBLIC_APP_URL}/usage for more details.`));
305
+ this.lastWarnedPct = 100;
306
+ return;
307
+ }
308
+ console.error([(0, picocolors_1.red)('You have reached your monthly usage limit.'), errorCopy].join('\n'));
309
+ this.returnControlToUser();
310
+ this.lastWarnedPct = 100;
311
+ return;
312
+ }
313
+ if (pct > 0 && pct > this.lastWarnedPct) {
314
+ console.warn([
315
+ '',
316
+ (0, picocolors_1.yellow)(`You have used over ${pct}% of your monthly usage limit (${this.usage}/${this.limit} credits).`),
317
+ errorCopy,
318
+ ].join('\n'));
319
+ this.lastWarnedPct = pct;
320
+ }
321
+ }
322
+ async generateCommitMessage(stagedChanges) {
323
+ return new Promise(async (resolve, reject) => {
324
+ const unsubscribe = this.webSocket.subscribe('commit-message-response', (action) => {
325
+ unsubscribe();
326
+ resolve(action.commitMessage);
327
+ });
328
+ this.webSocket.sendAction({
329
+ type: 'generate-commit-message',
330
+ fingerprintId: await this.getFingerprintId(),
331
+ authToken: this.user?.authToken,
332
+ stagedChanges,
333
+ });
334
+ });
335
+ }
336
+ async sendUserInput(previousChanges, userInputId) {
337
+ this.currentUserInputId = userInputId;
338
+ const currentChat = this.chatStorage.getCurrentChat();
339
+ const { messages, fileVersions: messageFileVersions } = currentChat;
340
+ const currentFileVersion = messageFileVersions[messageFileVersions.length - 1]?.files ?? {};
341
+ const fileContext = await (0, project_files_1.getProjectFileContext)((0, project_files_1.getProjectRoot)(), currentFileVersion, this.fileVersions);
342
+ this.fileContext = fileContext;
343
+ this.webSocket.sendAction({
344
+ type: 'user-input',
345
+ userInputId,
346
+ messages,
347
+ fileContext,
348
+ changesAlreadyApplied: previousChanges,
349
+ fingerprintId: await this.getFingerprintId(),
350
+ authToken: this.user?.authToken,
351
+ costMode: this.costMode,
352
+ });
353
+ }
354
+ subscribeToResponse(onChunk, userInputId, onStreamStart) {
355
+ let responseBuffer = '';
356
+ let resolveResponse;
357
+ let rejectResponse;
358
+ let unsubscribeChunks;
359
+ let unsubscribeComplete;
360
+ let streamStarted = false;
361
+ const responsePromise = new Promise((resolve, reject) => {
362
+ resolveResponse = resolve;
363
+ rejectResponse = reject;
364
+ });
365
+ const stopResponse = () => {
366
+ this.currentUserInputId = undefined;
367
+ unsubscribeChunks();
368
+ unsubscribeComplete();
369
+ resolveResponse({
370
+ userInputId,
371
+ response: responseBuffer + '\n[RESPONSE_STOPPED_BY_USER]',
372
+ changes: [],
373
+ changesAlreadyApplied: [],
374
+ addedFileVersions: [],
375
+ resetFileVersions: false,
376
+ type: 'response-complete',
377
+ wasStoppedByUser: true,
378
+ });
379
+ };
380
+ unsubscribeChunks = this.webSocket.subscribe('response-chunk', (a) => {
381
+ if (a.userInputId !== userInputId)
382
+ return;
383
+ const { chunk } = a;
384
+ if (!streamStarted) {
385
+ streamStarted = true;
386
+ onStreamStart();
387
+ }
388
+ responseBuffer += chunk;
389
+ onChunk(chunk);
390
+ });
391
+ unsubscribeComplete = this.webSocket.subscribe('response-complete', (action) => {
392
+ const parsedAction = actions_1.ResponseCompleteSchema.safeParse(action);
393
+ if (!parsedAction.success || action.userInputId !== userInputId)
394
+ return;
395
+ const a = parsedAction.data;
396
+ unsubscribeChunks();
397
+ unsubscribeComplete();
398
+ if (a.resetFileVersions) {
399
+ this.fileVersions = [a.addedFileVersions];
400
+ }
401
+ else {
402
+ this.fileVersions.push(a.addedFileVersions);
403
+ }
404
+ resolveResponse({ ...a, wasStoppedByUser: false });
405
+ this.currentUserInputId = undefined;
406
+ if (!a.usage ||
407
+ !a.next_quota_reset ||
408
+ a.subscription_active === undefined ||
409
+ !a.limit) {
410
+ return;
411
+ }
412
+ this.setUsage({
413
+ usage: a.usage,
414
+ limit: a.limit,
415
+ subscription_active: a.subscription_active,
416
+ next_quota_reset: a.next_quota_reset,
417
+ session_credits_used: a.session_credits_used ?? 0,
418
+ });
419
+ // Indicates a change in the user's plan
420
+ if (this.limit !== a.limit) {
421
+ this.lastWarnedPct = 0;
422
+ }
423
+ });
424
+ return {
425
+ responsePromise,
426
+ stopResponse,
427
+ };
428
+ }
429
+ async getUsage() {
430
+ this.webSocket.sendAction({
431
+ type: 'usage',
432
+ fingerprintId: await this.getFingerprintId(),
433
+ authToken: this.user?.authToken,
434
+ });
435
+ }
436
+ async warmContextCache() {
437
+ const fileContext = await (0, project_files_1.getProjectFileContext)((0, project_files_1.getProjectRoot)(), {}, this.fileVersions);
438
+ // Don't wait for response anymore.
439
+ this.webSocket.subscribe('init-response', (a) => {
440
+ const parsedAction = actions_1.InitResponseSchema.safeParse(a);
441
+ if (!parsedAction.success)
442
+ return;
443
+ this.setUsage(parsedAction.data);
444
+ });
445
+ this.webSocket
446
+ .sendAction({
447
+ type: 'init',
448
+ fingerprintId: await this.getFingerprintId(),
449
+ authToken: this.user?.authToken,
450
+ fileContext,
451
+ })
452
+ .catch((e) => {
453
+ // console.error('Error warming context cache', e)
454
+ });
455
+ }
456
+ }
457
+ exports.Client = Client;
458
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import Parser from 'tree-sitter';
2
+ import { Query } from 'tree-sitter';
3
+ interface LanguageConfig {
4
+ language: any;
5
+ extensions: string[];
6
+ packageName: string;
7
+ queryFile: string;
8
+ parser: Parser;
9
+ query: Query;
10
+ }
11
+ export declare function getLanguageConfig(filePath: string): Promise<LanguageConfig | undefined>;
12
+ export {};
@@ -0,0 +1,129 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.getLanguageConfig = getLanguageConfig;
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const tree_sitter_1 = __importDefault(require("tree-sitter"));
33
+ const tree_sitter_2 = require("tree-sitter");
34
+ const parse_1 = require("./parse");
35
+ const languageConfigs = [
36
+ {
37
+ extensions: ['.ts'],
38
+ queryFile: 'tree-sitter-typescript-tags.scm',
39
+ packageName: 'tree-sitter-typescript',
40
+ },
41
+ {
42
+ extensions: ['.tsx'],
43
+ queryFile: 'tree-sitter-typescript-tags.scm',
44
+ packageName: 'tree-sitter-typescript',
45
+ },
46
+ {
47
+ extensions: ['.js', '.jsx'],
48
+ queryFile: 'tree-sitter-javascript-tags.scm',
49
+ packageName: 'tree-sitter-javascript',
50
+ },
51
+ {
52
+ extensions: ['.py'],
53
+ queryFile: 'tree-sitter-python-tags.scm',
54
+ packageName: 'tree-sitter-python',
55
+ },
56
+ {
57
+ extensions: ['.java'],
58
+ queryFile: 'tree-sitter-java-tags.scm',
59
+ packageName: 'tree-sitter-java',
60
+ },
61
+ {
62
+ extensions: ['.cs'],
63
+ queryFile: 'tree-sitter-c_sharp-tags.scm',
64
+ packageName: 'tree-sitter-c-sharp',
65
+ },
66
+ {
67
+ extensions: ['.c', '.h'],
68
+ queryFile: 'tree-sitter-c-tags.scm',
69
+ packageName: 'tree-sitter-c',
70
+ },
71
+ {
72
+ extensions: ['.cpp', '.hpp'],
73
+ queryFile: 'tree-sitter-cpp-tags.scm',
74
+ packageName: 'tree-sitter-cpp',
75
+ },
76
+ {
77
+ extensions: ['.rs'],
78
+ queryFile: 'tree-sitter-rust-tags.scm',
79
+ packageName: 'tree-sitter-rust',
80
+ },
81
+ {
82
+ extensions: ['.rb'],
83
+ queryFile: 'tree-sitter-ruby-tags.scm',
84
+ packageName: 'tree-sitter-ruby',
85
+ },
86
+ {
87
+ extensions: ['.go'],
88
+ queryFile: 'tree-sitter-go-tags.scm',
89
+ packageName: 'tree-sitter-go',
90
+ },
91
+ {
92
+ extensions: ['.php'],
93
+ queryFile: 'tree-sitter-php-tags.scm',
94
+ packageName: 'tree-sitter-php',
95
+ },
96
+ ];
97
+ async function getLanguageConfig(filePath) {
98
+ const extension = path.extname(filePath);
99
+ const config = languageConfigs.find((config) => config.extensions.includes(extension));
100
+ if (!config)
101
+ return undefined;
102
+ if (!config.parser) {
103
+ const parser = new tree_sitter_1.default();
104
+ try {
105
+ const languageModule = await Promise.resolve(`${config.packageName}`).then(s => __importStar(require(s)));
106
+ const language = extension === '.ts'
107
+ ? languageModule.typescript
108
+ : extension === '.tsx'
109
+ ? languageModule.tsx
110
+ : extension === '.php'
111
+ ? languageModule.php
112
+ : languageModule;
113
+ parser.setLanguage(language);
114
+ const queryFilePath = path.join(__dirname, 'tree-sitter-queries', config.queryFile);
115
+ const queryString = fs.readFileSync(queryFilePath, 'utf8');
116
+ config.query = new tree_sitter_2.Query(parser.getLanguage(), queryString);
117
+ config.parser = parser;
118
+ config.language = language;
119
+ }
120
+ catch (e) {
121
+ if (parse_1.DEBUG_PARSING) {
122
+ console.log('error', filePath, e);
123
+ }
124
+ return undefined;
125
+ }
126
+ }
127
+ return config;
128
+ }
129
+ //# sourceMappingURL=languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../languages.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,8CA0CC;AA1HD,uCAAwB;AACxB,2CAA4B;AAC5B,8DAAgC;AAChC,6CAAmC;AAEnC,mCAAuC;AAWvC,MAAM,eAAe,GACnB;IACE;QACE,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,SAAS,EAAE,iCAAiC;QAC5C,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,iCAAiC;QAC5C,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,iCAAiC;QAC5C,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,SAAS,EAAE,6BAA6B;QACxC,WAAW,EAAE,oBAAoB;KAClC;IACD;QACE,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,SAAS,EAAE,2BAA2B;QACtC,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,SAAS,EAAE,8BAA8B;QACzC,WAAW,EAAE,qBAAqB;KACnC;IACD;QACE,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACxB,SAAS,EAAE,wBAAwB;QACnC,WAAW,EAAE,eAAe;KAC7B;IACD;QACE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE,0BAA0B;QACrC,WAAW,EAAE,iBAAiB;KAC/B;IACD;QACE,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,SAAS,EAAE,2BAA2B;QACtC,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,SAAS,EAAE,2BAA2B;QACtC,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,SAAS,EAAE,yBAAyB;QACpC,WAAW,EAAE,gBAAgB;KAC9B;IACD;QACE,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,0BAA0B;QACrC,WAAW,EAAE,iBAAiB;KAC/B;CACF,CAAA;AAEI,KAAK,UAAU,iBAAiB,CACrC,QAAgB;IAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CACR,CAAA;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,qBAAM,EAAE,CAAA;QAE3B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,yBAAa,MAAM,CAAC,WAAW,uCAAC,CAAA;YACvD,MAAM,QAAQ,GACZ,SAAS,KAAK,KAAK;gBACjB,CAAC,CAAC,cAAc,CAAC,UAAU;gBAC3B,CAAC,CAAC,SAAS,KAAK,MAAM;oBACpB,CAAC,CAAC,cAAc,CAAC,GAAG;oBACpB,CAAC,CAAC,SAAS,KAAK,MAAM;wBACpB,CAAC,CAAC,cAAc,CAAC,GAAG;wBACpB,CAAC,CAAC,cAAc,CAAA;YACxB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;YAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,SAAS,EACT,qBAAqB,EACrB,MAAM,CAAC,SAAS,CACjB,CAAA;YACD,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;YAC1D,MAAM,CAAC,KAAK,GAAG,IAAI,mBAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;YAC3D,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;YACtB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,qBAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const DEBUG_PARSING = false;
2
+ export declare function getFileTokenScores(projectRoot: string, filePaths: string[]): Promise<{
3
+ [filePath: string]: {
4
+ [token: string]: number;
5
+ };
6
+ }>;
7
+ export declare function parseTokens(filePath: string): Promise<{
8
+ numLines: number;
9
+ identifiers: string[];
10
+ calls: string[];
11
+ }>;