codebuff 1.0.99

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 (153) hide show
  1. package/README.md +70 -0
  2. package/dist/chat-storage.d.ts +29 -0
  3. package/dist/chat-storage.js +125 -0
  4. package/dist/chat-storage.js.map +1 -0
  5. package/dist/cli.d.ts +37 -0
  6. package/dist/cli.js +416 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/client.d.ts +41 -0
  9. package/dist/client.js +443 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/code-map/languages.d.ts +12 -0
  12. package/dist/code-map/languages.js +129 -0
  13. package/dist/code-map/languages.js.map +1 -0
  14. package/dist/code-map/parse.d.ts +11 -0
  15. package/dist/code-map/parse.js +127 -0
  16. package/dist/code-map/parse.js.map +1 -0
  17. package/dist/code-map/test-langs/test.d.ts +11 -0
  18. package/dist/code-map/test-langs/test.js +23 -0
  19. package/dist/code-map/test-langs/test.js.map +1 -0
  20. package/dist/code-map/tree-sitter-queries/readme.md +23 -0
  21. package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +11 -0
  22. package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +13 -0
  23. package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +17 -0
  24. package/dist/code-map/tree-sitter-queries/tree-sitter-go-tags.scm +26 -0
  25. package/dist/code-map/tree-sitter-queries/tree-sitter-java-tags.scm +19 -0
  26. package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +15 -0
  27. package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +26 -0
  28. package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +9 -0
  29. package/dist/code-map/tree-sitter-queries/tree-sitter-ruby-tags.scm +58 -0
  30. package/dist/code-map/tree-sitter-queries/tree-sitter-rust-tags.scm +26 -0
  31. package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +15 -0
  32. package/dist/code-map/tsconfig.tsbuildinfo +1 -0
  33. package/dist/common/actions.d.ts +1062 -0
  34. package/dist/common/actions.js +180 -0
  35. package/dist/common/actions.js.map +1 -0
  36. package/dist/common/billing/quota-manager.d.ts +59 -0
  37. package/dist/common/billing/quota-manager.js +200 -0
  38. package/dist/common/billing/quota-manager.js.map +1 -0
  39. package/dist/common/constants.d.ts +24 -0
  40. package/dist/common/constants.js +73 -0
  41. package/dist/common/constants.js.map +1 -0
  42. package/dist/common/db/drizzle.config.d.ts +2 -0
  43. package/dist/common/db/drizzle.config.js +17 -0
  44. package/dist/common/db/drizzle.config.js.map +1 -0
  45. package/dist/common/db/env.d.mts +1 -0
  46. package/dist/common/db/env.mjs +26 -0
  47. package/dist/common/db/env.mjs.map +1 -0
  48. package/dist/common/db/index.d.ts +6 -0
  49. package/dist/common/db/index.js +35 -0
  50. package/dist/common/db/index.js.map +1 -0
  51. package/dist/common/db/schema.d.ts +994 -0
  52. package/dist/common/db/schema.js +113 -0
  53. package/dist/common/db/schema.js.map +1 -0
  54. package/dist/common/env.d.mts +1 -0
  55. package/dist/common/env.mjs +34 -0
  56. package/dist/common/env.mjs.map +1 -0
  57. package/dist/common/project-file-tree.d.ts +9 -0
  58. package/dist/common/project-file-tree.js +157 -0
  59. package/dist/common/project-file-tree.js.map +1 -0
  60. package/dist/common/types/referral.d.ts +2 -0
  61. package/dist/common/types/referral.js +5 -0
  62. package/dist/common/types/referral.js.map +1 -0
  63. package/dist/common/types/usage.d.ts +21 -0
  64. package/dist/common/types/usage.js +12 -0
  65. package/dist/common/types/usage.js.map +1 -0
  66. package/dist/common/util/__tests__/string.test.d.ts +1 -0
  67. package/dist/common/util/__tests__/string.test.js +83 -0
  68. package/dist/common/util/__tests__/string.test.js.map +1 -0
  69. package/dist/common/util/array.d.ts +6 -0
  70. package/dist/common/util/array.js +32 -0
  71. package/dist/common/util/array.js.map +1 -0
  72. package/dist/common/util/changes.d.ts +6 -0
  73. package/dist/common/util/changes.js +72 -0
  74. package/dist/common/util/changes.js.map +1 -0
  75. package/dist/common/util/credentials.d.ts +25 -0
  76. package/dist/common/util/credentials.js +24 -0
  77. package/dist/common/util/credentials.js.map +1 -0
  78. package/dist/common/util/dates.d.ts +1 -0
  79. package/dist/common/util/dates.js +13 -0
  80. package/dist/common/util/dates.js.map +1 -0
  81. package/dist/common/util/file.d.ts +106 -0
  82. package/dist/common/util/file.js +138 -0
  83. package/dist/common/util/file.js.map +1 -0
  84. package/dist/common/util/git.d.ts +4 -0
  85. package/dist/common/util/git.js +40 -0
  86. package/dist/common/util/git.js.map +1 -0
  87. package/dist/common/util/helpers.d.ts +1 -0
  88. package/dist/common/util/helpers.js +6 -0
  89. package/dist/common/util/helpers.js.map +1 -0
  90. package/dist/common/util/object.d.ts +18 -0
  91. package/dist/common/util/object.js +91 -0
  92. package/dist/common/util/object.js.map +1 -0
  93. package/dist/common/util/patch.d.ts +1 -0
  94. package/dist/common/util/patch.js +215 -0
  95. package/dist/common/util/patch.js.map +1 -0
  96. package/dist/common/util/promise.d.ts +1 -0
  97. package/dist/common/util/promise.js +33 -0
  98. package/dist/common/util/promise.js.map +1 -0
  99. package/dist/common/util/referral.d.ts +1 -0
  100. package/dist/common/util/referral.js +6 -0
  101. package/dist/common/util/referral.js.map +1 -0
  102. package/dist/common/util/server/referral.d.ts +14 -0
  103. package/dist/common/util/server/referral.js +85 -0
  104. package/dist/common/util/server/referral.js.map +1 -0
  105. package/dist/common/util/string.d.ts +3 -0
  106. package/dist/common/util/string.js +60 -0
  107. package/dist/common/util/string.js.map +1 -0
  108. package/dist/common/util/stripe.d.ts +2 -0
  109. package/dist/common/util/stripe.js +19 -0
  110. package/dist/common/util/stripe.js.map +1 -0
  111. package/dist/common/util/tools.d.ts +2 -0
  112. package/dist/common/util/tools.js +13 -0
  113. package/dist/common/util/tools.js.map +1 -0
  114. package/dist/common/websockets/websocket-client.d.ts +40 -0
  115. package/dist/common/websockets/websocket-client.js +187 -0
  116. package/dist/common/websockets/websocket-client.js.map +1 -0
  117. package/dist/common/websockets/websocket-schema.d.ts +2530 -0
  118. package/dist/common/websockets/websocket-schema.js +55 -0
  119. package/dist/common/websockets/websocket-schema.js.map +1 -0
  120. package/dist/config.d.ts +2 -0
  121. package/dist/config.js +8 -0
  122. package/dist/config.js.map +1 -0
  123. package/dist/credentials.d.ts +3 -0
  124. package/dist/credentials.js +33 -0
  125. package/dist/credentials.js.map +1 -0
  126. package/dist/fingerprint.d.ts +1 -0
  127. package/dist/fingerprint.js +43 -0
  128. package/dist/fingerprint.js.map +1 -0
  129. package/dist/index.d.ts +2 -0
  130. package/dist/index.js +50 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/manifold-api.d.ts +8 -0
  133. package/dist/manifold-api.js +32 -0
  134. package/dist/manifold-api.js.map +1 -0
  135. package/dist/menu.d.ts +1 -0
  136. package/dist/menu.js +92 -0
  137. package/dist/menu.js.map +1 -0
  138. package/dist/project-files.d.ts +48 -0
  139. package/dist/project-files.js +324 -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 +131 -0
  143. package/dist/tool-handlers.js.map +1 -0
  144. package/dist/update-manicode.d.ts +1 -0
  145. package/dist/update-manicode.js +151 -0
  146. package/dist/update-manicode.js.map +1 -0
  147. package/dist/web-scraper.d.ts +3 -0
  148. package/dist/web-scraper.js +79 -0
  149. package/dist/web-scraper.js.map +1 -0
  150. package/dist/worker-script-project-context.d.ts +1 -0
  151. package/dist/worker-script-project-context.js +13 -0
  152. package/dist/worker-script-project-context.js.map +1 -0
  153. package/package.json +62 -0
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyPatch = void 0;
4
+ const applyPatch = (oldContent, patch) => {
5
+ const lines = oldContent.split('\n');
6
+ const patchLines = patch.split('\n').filter((line) => !line.startsWith('\\'));
7
+ const indexOfFirstHunk = patchLines.findIndex((line) => line.startsWith('@@'));
8
+ patchLines.splice(0, indexOfFirstHunk);
9
+ if (patch.endsWith('\n')) {
10
+ patchLines.pop();
11
+ }
12
+ const newLines = [];
13
+ let oldIndex = 0;
14
+ for (let i = 0; i < patchLines.length; i++) {
15
+ while (lines[oldIndex] === REMOVED_LINE) {
16
+ oldIndex++;
17
+ }
18
+ const patchLine = patchLines[i];
19
+ if (patchLine.startsWith('@@')) {
20
+ const { contextLines, startIndex, headline } = parseHunk(patchLines, i);
21
+ const maybeStartIndex = startIndex === undefined || startIndex < oldIndex
22
+ ? undefined
23
+ : startIndex;
24
+ const headlineIndex = headline ? lines.indexOf(headline) : undefined;
25
+ const matchIndex = getMatchIndex(lines, contextLines, oldIndex, maybeStartIndex, headlineIndex);
26
+ // Add lines from old content up to the match
27
+ newLines.push(...lines.slice(oldIndex, matchIndex));
28
+ oldIndex = matchIndex;
29
+ }
30
+ else if (patchLine.startsWith('-')) {
31
+ const lineContent = patchLine.slice(1);
32
+ if (oldIndex >= lines.length) {
33
+ // Do nothing, just skip the line.
34
+ }
35
+ else if (lineContent.trim() === lines[oldIndex].trim()) {
36
+ // Remove line (skip it in the output)
37
+ oldIndex++;
38
+ }
39
+ else {
40
+ for (let j = 0; j < 10; j++) {
41
+ if (oldIndex + j >= lines.length) {
42
+ break;
43
+ }
44
+ if (lineContent.trim() === lines[oldIndex + j].trim()) {
45
+ // Remove matching line if it's later in the file.
46
+ lines[oldIndex + j] = REMOVED_LINE;
47
+ break;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ else if (patchLine.startsWith('+')) {
53
+ // Add new line
54
+ newLines.push(patchLine.slice(1));
55
+ }
56
+ else {
57
+ const nextHunkDist = patchLines
58
+ .slice(i + 1)
59
+ .findIndex((line) => line.startsWith('@@'));
60
+ const nextHunkIndex = nextHunkDist === -1 ? patchLines.length : i + nextHunkDist + 1;
61
+ if (patchLines
62
+ .slice(i + 1, nextHunkIndex)
63
+ .every((line) => !line.startsWith('+') && !line.startsWith('-'))) {
64
+ // Skip ending context lines
65
+ continue;
66
+ }
67
+ const lineContent = patchLine.slice(1);
68
+ // Context line
69
+ for (let j = 0; j < 10; j++) {
70
+ if (oldIndex + j >= lines.length) {
71
+ if (oldIndex < lines.length) {
72
+ // No match, just use the corresponding old line.
73
+ newLines.push(lines[oldIndex]);
74
+ oldIndex++;
75
+ }
76
+ break;
77
+ }
78
+ const oldLine = lines[oldIndex + j];
79
+ if (lineContent.trim() === oldLine.trim()) {
80
+ // Remove matching line if it's later in the file.
81
+ lines[oldIndex + j] = REMOVED_LINE;
82
+ newLines.push(oldLine);
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ // Add any remaining lines from the old content
89
+ newLines.push(...lines.slice(oldIndex));
90
+ return newLines.filter((line) => line !== REMOVED_LINE).join('\n');
91
+ };
92
+ exports.applyPatch = applyPatch;
93
+ const REMOVED_LINE = '[REMOVED_LINE]';
94
+ const parseHunkHeader = (line) => {
95
+ let startIndex = undefined;
96
+ let lineCount = undefined;
97
+ let headline = undefined;
98
+ const lineNumberMatch = line.match(/@@ -(\d+)(?:,\d+)? \+\d+(?:,\d+)? @@/);
99
+ const headlineMatch = line.match(/@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@ (.*)/);
100
+ if (lineNumberMatch) {
101
+ const startLine = parseInt(lineNumberMatch[1], 10);
102
+ startIndex = startLine - 1; // Adjust for 0-based index
103
+ lineCount = parseInt(lineNumberMatch[2], 10);
104
+ }
105
+ else {
106
+ // console.error('Failed to parse hunk header:', line)
107
+ }
108
+ if (headlineMatch) {
109
+ headline = headlineMatch[1];
110
+ }
111
+ return {
112
+ startIndex,
113
+ lineCount,
114
+ headline,
115
+ };
116
+ };
117
+ const parseHunk = (patchLines, startIndex) => {
118
+ const header = parseHunkHeader(patchLines[startIndex]);
119
+ const contextLines = [];
120
+ let j = startIndex + 1;
121
+ while (j < patchLines.length && !patchLines[j].startsWith('@@')) {
122
+ if (!patchLines[j].startsWith('+')) {
123
+ contextLines.push(patchLines[j].slice(1));
124
+ j++;
125
+ }
126
+ else
127
+ break;
128
+ }
129
+ return {
130
+ ...header,
131
+ contextLines,
132
+ };
133
+ };
134
+ const findContextMatch = (lines, contextLines, startIndex) => {
135
+ for (let i = startIndex; i <= lines.length - contextLines.length; i++) {
136
+ if (contextLines.every((line, j) => lines[i + j] === line)) {
137
+ return i;
138
+ }
139
+ }
140
+ return undefined;
141
+ };
142
+ const findContextMatchTrimmed = (lines, contextLines, startIndex) => {
143
+ for (let i = startIndex; i <= lines.length - contextLines.length; i++) {
144
+ if (
145
+ // Match without whitespace, or if the context line is blank.
146
+ contextLines.every((line, j) => lines[i + j].trim() === line.trim() || line.trim() === '')) {
147
+ return i;
148
+ }
149
+ }
150
+ return undefined;
151
+ };
152
+ const findPartialContextMatch = (lines, contextLines, startIndex) => {
153
+ const window = contextLines.length;
154
+ const contextSet = new Set(contextLines.map((line) => line.trim()));
155
+ let maxMatchCount = 0;
156
+ let maxMatchIndex = undefined;
157
+ for (let i = startIndex; i < lines.length - window; i++) {
158
+ let matchCount = 0;
159
+ for (let j = 0; j < window; j++) {
160
+ if (contextSet.has(lines[i + j].trim())) {
161
+ matchCount++;
162
+ }
163
+ }
164
+ if (maxMatchCount === undefined || matchCount > maxMatchCount) {
165
+ maxMatchCount = matchCount;
166
+ maxMatchIndex = i;
167
+ }
168
+ }
169
+ return maxMatchIndex;
170
+ };
171
+ const getMatchIndex = (lines, contextLines, oldIndex, startIndex, headlineIndex) => {
172
+ let matchIndex;
173
+ if (startIndex !== undefined &&
174
+ (headlineIndex === undefined || startIndex > headlineIndex)) {
175
+ matchIndex = findContextMatch(lines, contextLines, startIndex);
176
+ }
177
+ if (matchIndex === undefined &&
178
+ headlineIndex !== undefined &&
179
+ headlineIndex > oldIndex) {
180
+ matchIndex = findContextMatch(lines, contextLines, headlineIndex);
181
+ }
182
+ if (matchIndex === undefined) {
183
+ matchIndex = findContextMatch(lines, contextLines, oldIndex);
184
+ }
185
+ if (startIndex !== undefined &&
186
+ (headlineIndex === undefined || startIndex > headlineIndex)) {
187
+ matchIndex = findContextMatchTrimmed(lines, contextLines, startIndex);
188
+ }
189
+ if (matchIndex === undefined &&
190
+ headlineIndex !== undefined &&
191
+ headlineIndex > oldIndex) {
192
+ matchIndex = findContextMatchTrimmed(lines, contextLines, headlineIndex);
193
+ }
194
+ if (matchIndex === undefined &&
195
+ headlineIndex !== undefined &&
196
+ headlineIndex > oldIndex) {
197
+ matchIndex = findContextMatchTrimmed(lines, contextLines, oldIndex);
198
+ }
199
+ if (matchIndex === undefined &&
200
+ headlineIndex !== undefined &&
201
+ headlineIndex > oldIndex) {
202
+ matchIndex = findPartialContextMatch(lines, contextLines, headlineIndex);
203
+ }
204
+ if (matchIndex === undefined) {
205
+ matchIndex = findPartialContextMatch(lines, contextLines, oldIndex);
206
+ }
207
+ if (matchIndex === undefined &&
208
+ startIndex !== undefined &&
209
+ startIndex > oldIndex) {
210
+ // We didn't find a match, just try anyway with the parsed line number.
211
+ matchIndex = startIndex;
212
+ }
213
+ return matchIndex ?? oldIndex;
214
+ };
215
+ //# sourceMappingURL=patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/util/patch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const mapAsync: <T, U>(items: T[], f: (item: T, index: number) => Promise<U>, maxConcurrentRequests?: number) => Promise<U[]>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapAsync = void 0;
4
+ const mapAsync = (items, f, maxConcurrentRequests = 20) => {
5
+ let index = 0;
6
+ let currRequests = 0;
7
+ const results = [];
8
+ return new Promise((resolve, reject) => {
9
+ const doWork = () => {
10
+ while (index < items.length && currRequests < maxConcurrentRequests) {
11
+ const itemIndex = index;
12
+ f(items[itemIndex], itemIndex)
13
+ .then((data) => {
14
+ results[itemIndex] = data;
15
+ currRequests--;
16
+ if (index === items.length && currRequests === 0)
17
+ resolve(results);
18
+ else
19
+ doWork();
20
+ })
21
+ .catch(reject);
22
+ index++;
23
+ currRequests++;
24
+ }
25
+ };
26
+ if (items.length === 0)
27
+ resolve([]);
28
+ else
29
+ doWork();
30
+ });
31
+ };
32
+ exports.mapAsync = mapAsync;
33
+ //# sourceMappingURL=promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/util/promise.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CACtB,KAAU,EACV,CAAyC,EACzC,qBAAqB,GAAG,EAAE,EAC1B,EAAE;IACF,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,MAAM,OAAO,GAAQ,EAAE,CAAA;IAEvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAA+B,EAAE,MAAM,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,YAAY,GAAG,qBAAqB,EAAE,CAAC;gBACpE,MAAM,SAAS,GAAG,KAAK,CAAA;gBACvB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;qBAC3B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACb,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;oBACzB,YAAY,EAAE,CAAA;oBACd,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,IAAI,YAAY,KAAK,CAAC;wBAAE,OAAO,CAAC,OAAO,CAAC,CAAA;;wBAC7D,MAAM,EAAE,CAAA;gBACf,CAAC,CAAC;qBACD,KAAK,CAAC,MAAM,CAAC,CAAA;gBAEhB,KAAK,EAAE,CAAA;gBACP,YAAY,EAAE,CAAA;YAChB,CAAC;QACH,CAAC,CAAA;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,EAAE,CAAC,CAAA;;YAC9B,MAAM,EAAE,CAAA;IACf,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AA9BY,QAAA,QAAQ,YA8BpB"}
@@ -0,0 +1 @@
1
+ export declare const getReferralLink: (referralCode: string) => string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getReferralLink = void 0;
4
+ const getReferralLink = (referralCode) => `${process.env.NEXT_PUBLIC_APP_URL}/referrals/${referralCode}`;
5
+ exports.getReferralLink = getReferralLink;
6
+ //# sourceMappingURL=referral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referral.js","sourceRoot":"","sources":["../../src/util/referral.ts"],"names":[],"mappings":";;;AAAO,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAU,EAAE,CAC9D,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,cAAc,YAAY,EAAE,CAAA;AADnD,QAAA,eAAe,mBACoC"}
@@ -0,0 +1,14 @@
1
+ export type ReferralStatus = {
2
+ reason: 'Referral Limit Reached' | 'Referrer Not Found' | 'Unknown Error';
3
+ details?: {
4
+ referralCount?: number;
5
+ msg: string;
6
+ };
7
+ } | {
8
+ reason: undefined;
9
+ referralLink: string;
10
+ details: {
11
+ referralCount: number;
12
+ };
13
+ };
14
+ export declare function hasMaxedReferrals(userId: string): Promise<ReferralStatus>;
@@ -0,0 +1,85 @@
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.hasMaxedReferrals = hasMaxedReferrals;
30
+ const drizzle_orm_1 = require("drizzle-orm");
31
+ const schema = __importStar(require("../../db/schema"));
32
+ const db_1 = __importDefault(require("../../db"));
33
+ const referral_1 = require("../referral");
34
+ const env_mjs_1 = require("../../env.mjs");
35
+ async function hasMaxedReferrals(userId) {
36
+ try {
37
+ const referralCount = await db_1.default
38
+ .select({
39
+ count: (0, drizzle_orm_1.sql) `count(*)`,
40
+ })
41
+ .from(schema.referral)
42
+ .where((0, drizzle_orm_1.eq)(schema.referral.referrer_id, userId))
43
+ .then((result) => (result.length > 0 ? result[0].count : 0));
44
+ const user = await db_1.default.query.user.findFirst({
45
+ where: (0, drizzle_orm_1.eq)(schema.user.id, userId),
46
+ columns: {
47
+ referral_code: true,
48
+ referral_limit: true,
49
+ },
50
+ });
51
+ if (!user || !user.referral_code) {
52
+ return {
53
+ reason: 'Referrer Not Found',
54
+ details: {
55
+ referralCount,
56
+ msg: `This referrer isn't registered with us. Please try again and reach out to ${env_mjs_1.env.NEXT_PUBLIC_SUPPORT_EMAIL} if the problem
57
+ persists.`,
58
+ },
59
+ };
60
+ }
61
+ if (referralCount >= user.referral_limit) {
62
+ return {
63
+ reason: 'Referral Limit Reached',
64
+ details: {
65
+ referralCount,
66
+ msg: 'This referrer has maxxed out the number of referrals they can make',
67
+ },
68
+ };
69
+ }
70
+ return {
71
+ reason: undefined,
72
+ referralLink: (0, referral_1.getReferralLink)(user.referral_code),
73
+ details: { referralCount },
74
+ };
75
+ }
76
+ catch (error) {
77
+ return {
78
+ reason: 'Unknown Error',
79
+ details: {
80
+ msg: error instanceof Error ? error.message : String(error),
81
+ },
82
+ };
83
+ }
84
+ }
85
+ //# sourceMappingURL=referral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referral.js","sourceRoot":"","sources":["../../../src/util/server/referral.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,8CAwDC;AA/ED,6CAAqC;AACrC,wDAAyC;AACzC,kDAAyB;AACzB,0CAA6C;AAE7C,2CAAmC;AAkB5B,KAAK,UAAU,iBAAiB,CACrC,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,YAAE;aAC3B,MAAM,CAAC;YACN,KAAK,EAAE,IAAA,iBAAG,EAAQ,UAAU;SAC7B,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aACrB,KAAK,CAAC,IAAA,gBAAE,EAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC9C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9D,MAAM,IAAI,GAAG,MAAM,YAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YACzC,KAAK,EAAE,IAAA,gBAAE,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,IAAI;aACrB;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACjC,OAAO;gBACL,MAAM,EAAE,oBAAoB;gBAC5B,OAAO,EAAE;oBACP,aAAa;oBACb,GAAG,EAAE,6EAA6E,aAAG,CAAC,yBAAyB;oBACrG;iBACX;aACF,CAAA;QACH,CAAC;QAED,IAAI,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,OAAO;gBACL,MAAM,EAAE,wBAAwB;gBAChC,OAAO,EAAE;oBACP,aAAa;oBACb,GAAG,EAAE,oEAAoE;iBAC1E;aACF,CAAA;QACH,CAAC;QAID,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,IAAA,0BAAe,EAAC,IAAI,CAAC,aAAa,CAAC;YACjD,OAAO,EAAE,EAAE,aAAa,EAAE;SAC3B,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE;gBACP,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC5D;SACF,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const truncateString: (str: string, maxLength: number) => string;
2
+ export declare const replaceNonStandardPlaceholderComments: (content: string, replacement: string) => string;
3
+ export declare const randBoolFromStr: (str: string) => boolean;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randBoolFromStr = exports.replaceNonStandardPlaceholderComments = exports.truncateString = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const truncateString = (str, maxLength) => {
6
+ if (str.length <= maxLength) {
7
+ return str;
8
+ }
9
+ return str.slice(0, maxLength) + '...';
10
+ };
11
+ exports.truncateString = truncateString;
12
+ const replaceNonStandardPlaceholderComments = (content, replacement) => {
13
+ const commentPatterns = [
14
+ // JSX comments (match this first)
15
+ {
16
+ regex: /{\s*\/\*\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?\s*\*\/\s*}/gi,
17
+ placeholder: replacement,
18
+ },
19
+ // C-style comments (C, C++, Java, JavaScript, TypeScript, etc.)
20
+ {
21
+ regex: /\/\/\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
22
+ placeholder: replacement,
23
+ },
24
+ {
25
+ regex: /\/\*\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?\s*\*\//gi,
26
+ placeholder: replacement,
27
+ },
28
+ // Python, Ruby, R comments
29
+ {
30
+ regex: /#\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
31
+ placeholder: replacement,
32
+ },
33
+ // HTML-style comments
34
+ {
35
+ regex: /<!--\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?\s*-->/gi,
36
+ placeholder: replacement,
37
+ },
38
+ // SQL, Haskell, Lua comments
39
+ {
40
+ regex: /--\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
41
+ placeholder: replacement,
42
+ },
43
+ // MATLAB comments
44
+ {
45
+ regex: /%\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
46
+ placeholder: replacement,
47
+ },
48
+ ];
49
+ let updatedContent = content;
50
+ for (const { regex, placeholder } of commentPatterns) {
51
+ updatedContent = updatedContent.replaceAll(regex, placeholder);
52
+ }
53
+ return updatedContent;
54
+ };
55
+ exports.replaceNonStandardPlaceholderComments = replaceNonStandardPlaceholderComments;
56
+ const randBoolFromStr = (str) => {
57
+ return (0, lodash_1.sumBy)(str.split(''), (char) => char.charCodeAt(0)) % 2 === 0;
58
+ };
59
+ exports.randBoolFromStr = randBoolFromStr;
60
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/util/string.ts"],"names":[],"mappings":";;;AAAA,mCAA8B;AAEvB,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,SAAiB,EAAE,EAAE;IAC/D,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAA;AACxC,CAAC,CAAA;AALY,QAAA,cAAc,kBAK1B;AAEM,MAAM,qCAAqC,GAAG,CACnD,OAAe,EACf,WAAmB,EACX,EAAE;IACV,MAAM,eAAe,GAAG;QACtB,kCAAkC;QAClC;YACE,KAAK,EACH,0FAA0F;YAC5F,WAAW,EAAE,WAAW;SACzB;QACD,gEAAgE;QAChE;YACE,KAAK,EACH,2EAA2E;YAC7E,WAAW,EAAE,WAAW;SACzB;QACD;YACE,KAAK,EACH,kFAAkF;YACpF,WAAW,EAAE,WAAW;SACzB;QACD,2BAA2B;QAC3B;YACE,KAAK,EACH,wEAAwE;YAC1E,WAAW,EAAE,WAAW;SACzB;QACD,sBAAsB;QACtB;YACE,KAAK,EACH,iFAAiF;YACnF,WAAW,EAAE,WAAW;SACzB;QACD,6BAA6B;QAC7B;YACE,KAAK,EACH,yEAAyE;YAC3E,WAAW,EAAE,WAAW;SACzB;QACD,kBAAkB;QAClB;YACE,KAAK,EACH,wEAAwE;YAC1E,WAAW,EAAE,WAAW;SACzB;KACF,CAAA;IAED,IAAI,cAAc,GAAG,OAAO,CAAA;IAE5B,KAAK,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,eAAe,EAAE,CAAC;QACrD,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA;AAvDY,QAAA,qCAAqC,yCAuDjD;AAEM,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE;IAC7C,OAAO,IAAA,cAAK,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACrE,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B"}
@@ -0,0 +1,2 @@
1
+ import Stripe from 'stripe';
2
+ export declare const stripeServer: Stripe;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.stripeServer = void 0;
7
+ const stripe_1 = __importDefault(require("stripe"));
8
+ const env_mjs_1 = require("../env.mjs");
9
+ exports.stripeServer = new stripe_1.default(env_mjs_1.env.STRIPE_SECRET_KEY, {
10
+ apiVersion: '2024-06-20',
11
+ });
12
+ exports.stripeServer.on('request', (request) => {
13
+ console.log('Stripe API Request', request);
14
+ });
15
+ // Listen for response events
16
+ exports.stripeServer.on('response', (response) => {
17
+ console.log('Stripe API Response', response);
18
+ });
19
+ //# sourceMappingURL=stripe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/util/stripe.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,wCAAgC;AAEnB,QAAA,YAAY,GAAG,IAAI,gBAAM,CAAC,aAAG,CAAC,iBAAiB,EAAE;IAC5D,UAAU,EAAE,YAAY;CACzB,CAAC,CAAA;AAEF,oBAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;IACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;AAC5C,CAAC,CAAC,CAAA;AAEF,6BAA6B;AAC7B,oBAAY,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;IACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Message } from 'src/actions';
2
+ export declare const didClientUseTool: (message: Message) => boolean;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.didClientUseTool = void 0;
4
+ const ts_pattern_1 = require("ts-pattern");
5
+ const constants_1 = require("src/constants");
6
+ const didClientUseTool = (message) => (0, ts_pattern_1.match)(message)
7
+ .with({
8
+ role: 'user',
9
+ content: ts_pattern_1.P.string.and(ts_pattern_1.P.when((content) => content.includes(constants_1.TOOL_RESULT_MARKER))),
10
+ }, () => true)
11
+ .otherwise(() => false);
12
+ exports.didClientUseTool = didClientUseTool;
13
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/util/tools.ts"],"names":[],"mappings":";;;AACA,2CAAqC;AACrC,6CAAkD;AAE3C,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACnD,IAAA,kBAAK,EAAC,OAAO,CAAC;KACX,IAAI,CACH;IACE,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,cAAC,CAAC,MAAM,CAAC,GAAG,CACnB,cAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAE,OAAkB,CAAC,QAAQ,CAAC,8BAAkB,CAAC,CAAC,CACtE;CACF,EACD,GAAG,EAAE,CAAC,IAAI,CACX;KACA,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AAXd,QAAA,gBAAgB,oBAWF"}
@@ -0,0 +1,40 @@
1
+ import { WebSocket } from 'ws';
2
+ import { ServerAction, ClientAction } from '../actions';
3
+ import { ClientMessage, ClientMessageType, ServerMessage } from './websocket-schema';
4
+ type ConnectingState = typeof WebSocket.CONNECTING;
5
+ type OpenState = typeof WebSocket.OPEN;
6
+ type ClosingState = typeof WebSocket.CLOSING;
7
+ type ClosedState = typeof WebSocket.CLOSED;
8
+ export type ReadyState = OpenState | ConnectingState | ClosedState | ClosingState;
9
+ export declare function formatState(state: ReadyState): "connecting" | "open" | "closing" | "closed";
10
+ type OutstandingTxn = {
11
+ resolve: () => void;
12
+ reject: (err: Error) => void;
13
+ timeout?: any;
14
+ };
15
+ /** Client for the API websocket realtime server. Automatically manages reconnection
16
+ * and resubscription on disconnect, and allows subscribers to get a callback
17
+ * when something is broadcasted. */
18
+ export declare class APIRealtimeClient {
19
+ ws: WebSocket;
20
+ url: string;
21
+ subscribers: Map<ServerAction['type'], ((action: ServerAction) => void)[]>;
22
+ txid: number;
23
+ txns: Map<number, OutstandingTxn>;
24
+ connectTimeout?: any;
25
+ heartbeat?: any;
26
+ hadError: boolean;
27
+ onError: () => void;
28
+ constructor(url: string, onError: () => void);
29
+ get state(): ReadyState;
30
+ close(): void;
31
+ connect(): Promise<void>;
32
+ waitAndReconnect(): void;
33
+ receiveMessage(msg: ServerMessage): void;
34
+ sendMessage<T extends ClientMessageType>(type: T, data: Omit<ClientMessage<T>, 'type' | 'txid'>): Promise<void>;
35
+ sendAction(action: ClientAction): Promise<void>;
36
+ subscribe<T extends ServerAction['type']>(action: T, callback: (action: Extract<ServerAction, {
37
+ type: T;
38
+ }>) => void): () => void;
39
+ }
40
+ export {};