codecane 1.0.271 → 1.0.272

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 (191) hide show
  1. package/dist/background-process-manager.d.ts +1 -1
  2. package/dist/background-process-manager.js +3 -3
  3. package/dist/browser-runner.d.ts +1 -1
  4. package/dist/browser-runner.js +4 -4
  5. package/dist/chat-storage.d.ts +1 -1
  6. package/dist/chat-storage.js +1 -1
  7. package/dist/checkpoints/checkpoint-manager.d.ts +1 -1
  8. package/dist/checkpoints/checkpoint-manager.js +1 -1
  9. package/dist/cli-handlers/api-key.d.ts +1 -1
  10. package/dist/cli-handlers/api-key.js +1 -1
  11. package/dist/cli-handlers/diff.d.ts +1 -1
  12. package/dist/cli-handlers/inititalization-flow.js +1 -1
  13. package/dist/cli.d.ts +1 -1
  14. package/dist/cli.js +2 -2
  15. package/dist/client.d.ts +7 -7
  16. package/dist/client.js +9 -9
  17. package/dist/common/actions.d.ts +2589 -0
  18. package/dist/common/actions.js +143 -0
  19. package/dist/common/actions.js.map +1 -0
  20. package/dist/common/analytics.d.ts +4 -0
  21. package/dist/common/analytics.js +40 -0
  22. package/dist/common/analytics.js.map +1 -0
  23. package/dist/common/api-keys/constants.d.ts +8 -0
  24. package/dist/common/api-keys/constants.js +26 -0
  25. package/dist/common/api-keys/constants.js.map +1 -0
  26. package/dist/common/api-keys/crypto.d.ts +24 -0
  27. package/dist/common/api-keys/crypto.js +186 -0
  28. package/dist/common/api-keys/crypto.js.map +1 -0
  29. package/dist/common/browser-actions.d.ts +4415 -0
  30. package/dist/common/browser-actions.js +343 -0
  31. package/dist/common/browser-actions.js.map +1 -0
  32. package/dist/common/constants/analytics-events.d.ts +19 -0
  33. package/dist/common/constants/analytics-events.js +27 -0
  34. package/dist/common/constants/analytics-events.js.map +1 -0
  35. package/dist/common/constants/grant-priorities.d.ts +2 -0
  36. package/dist/common/constants/grant-priorities.js +10 -0
  37. package/dist/common/constants/grant-priorities.js.map +1 -0
  38. package/dist/common/constants/tools.d.ts +16 -0
  39. package/dist/common/constants/tools.js +44 -0
  40. package/dist/common/constants/tools.js.map +1 -0
  41. package/dist/common/constants.d.ts +134 -0
  42. package/dist/common/constants.js +180 -0
  43. package/dist/common/constants.js.map +1 -0
  44. package/dist/common/db/drizzle.config.d.ts +2 -0
  45. package/dist/common/db/drizzle.config.js +17 -0
  46. package/dist/common/db/drizzle.config.js.map +1 -0
  47. package/dist/common/db/env.d.mts +1 -0
  48. package/dist/common/db/env.mjs +26 -0
  49. package/dist/common/db/env.mjs.map +1 -0
  50. package/dist/common/db/index.d.ts +6 -0
  51. package/dist/common/db/index.js +35 -0
  52. package/dist/common/db/index.js.map +1 -0
  53. package/dist/common/db/schema.d.ts +1419 -0
  54. package/dist/common/db/schema.js +175 -0
  55. package/dist/common/db/schema.js.map +1 -0
  56. package/dist/common/db/transaction.d.ts +12 -0
  57. package/dist/common/db/transaction.js +36 -0
  58. package/dist/common/db/transaction.js.map +1 -0
  59. package/dist/common/env.d.mts +1 -0
  60. package/dist/common/env.mjs +40 -0
  61. package/dist/common/env.mjs.map +1 -0
  62. package/dist/common/json-config/__tests__/stringify-schema.test.d.ts +1 -0
  63. package/dist/common/json-config/__tests__/stringify-schema.test.js +66 -0
  64. package/dist/common/json-config/__tests__/stringify-schema.test.js.map +1 -0
  65. package/dist/common/json-config/constants.d.ts +82 -0
  66. package/dist/common/json-config/constants.js +48 -0
  67. package/dist/common/json-config/constants.js.map +1 -0
  68. package/dist/common/json-config/parser.d.ts +7 -0
  69. package/dist/common/json-config/parser.js +51 -0
  70. package/dist/common/json-config/parser.js.map +1 -0
  71. package/dist/common/json-config/stringify-schema.d.ts +9 -0
  72. package/dist/common/json-config/stringify-schema.js +131 -0
  73. package/dist/common/json-config/stringify-schema.js.map +1 -0
  74. package/dist/common/project-file-tree.d.ts +11 -0
  75. package/dist/common/project-file-tree.js +200 -0
  76. package/dist/common/project-file-tree.js.map +1 -0
  77. package/dist/common/types/agent-state.d.ts +464 -0
  78. package/dist/common/types/agent-state.js +32 -0
  79. package/dist/common/types/agent-state.js.map +1 -0
  80. package/dist/common/types/grant.d.ts +2 -0
  81. package/dist/common/types/grant.js +10 -0
  82. package/dist/common/types/grant.js.map +1 -0
  83. package/dist/common/types/message.d.ts +311 -0
  84. package/dist/common/types/message.js +54 -0
  85. package/dist/common/types/message.js.map +1 -0
  86. package/dist/common/types/referral.d.ts +2 -0
  87. package/dist/common/types/referral.js +5 -0
  88. package/dist/common/types/referral.js.map +1 -0
  89. package/dist/common/types/tools.d.ts +5 -0
  90. package/dist/common/types/tools.js +3 -0
  91. package/dist/common/types/tools.js.map +1 -0
  92. package/dist/common/types/usage.d.ts +40 -0
  93. package/dist/common/types/usage.js +15 -0
  94. package/dist/common/types/usage.js.map +1 -0
  95. package/dist/common/util/__tests__/messages.test.d.ts +1 -0
  96. package/dist/common/util/__tests__/messages.test.js +70 -0
  97. package/dist/common/util/__tests__/messages.test.js.map +1 -0
  98. package/dist/common/util/__tests__/saxy.test.d.ts +1 -0
  99. package/dist/common/util/__tests__/saxy.test.js +262 -0
  100. package/dist/common/util/__tests__/saxy.test.js.map +1 -0
  101. package/dist/common/util/__tests__/string.test.d.ts +1 -0
  102. package/dist/common/util/__tests__/string.test.js +82 -0
  103. package/dist/common/util/__tests__/string.test.js.map +1 -0
  104. package/dist/common/util/array.d.ts +6 -0
  105. package/dist/common/util/array.js +32 -0
  106. package/dist/common/util/array.js.map +1 -0
  107. package/dist/common/util/changes.d.ts +7 -0
  108. package/dist/common/util/changes.js +78 -0
  109. package/dist/common/util/changes.js.map +1 -0
  110. package/dist/common/util/credentials.d.ts +25 -0
  111. package/dist/common/util/credentials.js +24 -0
  112. package/dist/common/util/credentials.js.map +1 -0
  113. package/dist/common/util/currency.d.ts +14 -0
  114. package/dist/common/util/currency.js +23 -0
  115. package/dist/common/util/currency.js.map +1 -0
  116. package/dist/common/util/dates.d.ts +10 -0
  117. package/dist/common/util/dates.js +22 -0
  118. package/dist/common/util/dates.js.map +1 -0
  119. package/dist/common/util/file.d.ts +159 -0
  120. package/dist/common/util/file.js +192 -0
  121. package/dist/common/util/file.js.map +1 -0
  122. package/dist/common/util/git.d.ts +6 -0
  123. package/dist/common/util/git.js +81 -0
  124. package/dist/common/util/git.js.map +1 -0
  125. package/dist/common/util/logger.d.ts +8 -0
  126. package/dist/common/util/logger.js +52 -0
  127. package/dist/common/util/logger.js.map +1 -0
  128. package/dist/common/util/lru-cache.d.ts +30 -0
  129. package/dist/common/util/lru-cache.js +68 -0
  130. package/dist/common/util/lru-cache.js.map +1 -0
  131. package/dist/common/util/messages.d.ts +9 -0
  132. package/dist/common/util/messages.js +69 -0
  133. package/dist/common/util/messages.js.map +1 -0
  134. package/dist/common/util/min-heap.d.ts +15 -0
  135. package/dist/common/util/min-heap.js +73 -0
  136. package/dist/common/util/min-heap.js.map +1 -0
  137. package/dist/common/util/object.d.ts +18 -0
  138. package/dist/common/util/object.js +91 -0
  139. package/dist/common/util/object.js.map +1 -0
  140. package/dist/common/util/patch.d.ts +1 -0
  141. package/dist/common/util/patch.js +215 -0
  142. package/dist/common/util/patch.js.map +1 -0
  143. package/dist/common/util/promise.d.ts +17 -0
  144. package/dist/common/util/promise.js +80 -0
  145. package/dist/common/util/promise.js.map +1 -0
  146. package/dist/common/util/referral.d.ts +1 -0
  147. package/dist/common/util/referral.js +6 -0
  148. package/dist/common/util/referral.js.map +1 -0
  149. package/dist/common/util/saxy.d.ts +166 -0
  150. package/dist/common/util/saxy.js +473 -0
  151. package/dist/common/util/saxy.js.map +1 -0
  152. package/dist/common/util/string.d.ts +61 -0
  153. package/dist/common/util/string.js +220 -0
  154. package/dist/common/util/string.js.map +1 -0
  155. package/dist/common/util/stripe.d.ts +3 -0
  156. package/dist/common/util/stripe.js +22 -0
  157. package/dist/common/util/stripe.js.map +1 -0
  158. package/dist/common/util/sync-failure.d.ts +1 -0
  159. package/dist/common/util/sync-failure.js +57 -0
  160. package/dist/common/util/sync-failure.js.map +1 -0
  161. package/dist/common/websockets/websocket-client.d.ts +42 -0
  162. package/dist/common/websockets/websocket-client.js +216 -0
  163. package/dist/common/websockets/websocket-client.js.map +1 -0
  164. package/dist/common/websockets/websocket-schema.d.ts +4866 -0
  165. package/dist/common/websockets/websocket-schema.js +55 -0
  166. package/dist/common/websockets/websocket-schema.js.map +1 -0
  167. package/dist/credentials.d.ts +1 -1
  168. package/dist/credentials.js +2 -2
  169. package/dist/dev-process-manager.d.ts +1 -1
  170. package/dist/dev-process-manager.js +1 -1
  171. package/dist/index.js +7 -1
  172. package/dist/menu.d.ts +1 -1
  173. package/dist/menu.js +1 -1
  174. package/dist/project-files.d.ts +2 -2
  175. package/dist/project-files.js +4 -4
  176. package/dist/startup-process-handler.d.ts +1 -1
  177. package/dist/tool-handlers.d.ts +2 -2
  178. package/dist/tool-handlers.js +4 -4
  179. package/dist/types.d.ts +1 -1
  180. package/dist/utils/__tests__/tool-renderers.test.js +1 -1
  181. package/dist/utils/__tests__/xml-stream-parser.test.js +1 -1
  182. package/dist/utils/analytics.d.ts +1 -1
  183. package/dist/utils/logger.js +1 -1
  184. package/dist/utils/terminal.js +3 -3
  185. package/dist/utils/tool-renderers.d.ts +1 -1
  186. package/dist/utils/tool-renderers.js +1 -1
  187. package/dist/utils/xml-stream-parser.d.ts +1 -1
  188. package/dist/utils/xml-stream-parser.js +2 -2
  189. package/dist/web-scraper.js +1 -1
  190. package/dist/workers/project-context.js +1 -1
  191. package/package.json +11 -12
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.limitScreenshots = limitScreenshots;
4
+ exports.toContentString = toContentString;
5
+ exports.withCacheControl = withCacheControl;
6
+ exports.removeCache = removeCache;
7
+ /**
8
+ * Limits the total number of screenshots across all messages to maxCount,
9
+ * keeping only the most recent ones.
10
+ */
11
+ function limitScreenshots(messages, maxCount) {
12
+ const screenshots = messages.flatMap((msg, msgIdx) => Array.isArray(msg.content)
13
+ ? msg.content
14
+ .map((item, contentIdx) => item.type === 'image' ? { msgIdx, contentIdx } : null)
15
+ .filter((ref) => ref !== null)
16
+ : []);
17
+ if (screenshots.length <= maxCount)
18
+ return messages;
19
+ const keepRefs = new Set(screenshots.slice(-maxCount).map((ref) => `${ref.msgIdx}-${ref.contentIdx}`));
20
+ return messages.map((msg, msgIdx) => Array.isArray(msg.content)
21
+ ? {
22
+ ...msg,
23
+ content: msg.content.filter((item, contentIdx) => item.type !== 'image' || keepRefs.has(`${msgIdx}-${contentIdx}`)),
24
+ }
25
+ : msg);
26
+ }
27
+ function toContentString(msg) {
28
+ const { content } = msg;
29
+ if (typeof content === 'string')
30
+ return content;
31
+ return content.map((item) => item?.text ?? '').join('\n');
32
+ }
33
+ function withCacheControl(msg) {
34
+ if (typeof msg.content === 'string') {
35
+ return {
36
+ ...msg,
37
+ content: [
38
+ {
39
+ type: 'text',
40
+ text: msg.content,
41
+ cache_control: { type: 'ephemeral' },
42
+ },
43
+ ],
44
+ };
45
+ }
46
+ else {
47
+ return {
48
+ ...msg,
49
+ content: msg.content.map((item, i) => i === msg.content.length - 1
50
+ ? { ...item, cache_control: { type: 'ephemeral' } }
51
+ : item),
52
+ };
53
+ }
54
+ }
55
+ function removeCache(messages) {
56
+ return messages.map(msg => {
57
+ if (typeof msg.content === 'object' && Array.isArray(msg.content)) {
58
+ return {
59
+ ...msg,
60
+ content: msg.content.map(item => {
61
+ const { cache_control, ...rest } = item;
62
+ return rest;
63
+ })
64
+ };
65
+ }
66
+ return msg;
67
+ });
68
+ }
69
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/util/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A generic min heap implementation that maintains elements ordered by a numeric score.
3
+ */
4
+ export declare class MinHeap<T> {
5
+ private heap;
6
+ private getParentIndex;
7
+ private getLeftChildIndex;
8
+ private getRightChildIndex;
9
+ private swap;
10
+ private siftUp;
11
+ private siftDown;
12
+ insert(item: T, score: number): void;
13
+ extractMin(): T | undefined;
14
+ get size(): number;
15
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MinHeap = void 0;
4
+ /**
5
+ * A generic min heap implementation that maintains elements ordered by a numeric score.
6
+ */
7
+ class MinHeap {
8
+ heap = [];
9
+ getParentIndex(index) {
10
+ return Math.floor((index - 1) / 2);
11
+ }
12
+ getLeftChildIndex(index) {
13
+ return 2 * index + 1;
14
+ }
15
+ getRightChildIndex(index) {
16
+ return 2 * index + 2;
17
+ }
18
+ swap(index1, index2) {
19
+ const temp = this.heap[index1];
20
+ this.heap[index1] = this.heap[index2];
21
+ this.heap[index2] = temp;
22
+ }
23
+ siftUp(index) {
24
+ while (index > 0) {
25
+ const parentIndex = this.getParentIndex(index);
26
+ if (this.heap[parentIndex].score <= this.heap[index].score) {
27
+ break;
28
+ }
29
+ this.swap(index, parentIndex);
30
+ index = parentIndex;
31
+ }
32
+ }
33
+ siftDown(index) {
34
+ while (true) {
35
+ let minIndex = index;
36
+ const leftChild = this.getLeftChildIndex(index);
37
+ const rightChild = this.getRightChildIndex(index);
38
+ if (leftChild < this.heap.length &&
39
+ this.heap[leftChild].score < this.heap[minIndex].score) {
40
+ minIndex = leftChild;
41
+ }
42
+ if (rightChild < this.heap.length &&
43
+ this.heap[rightChild].score < this.heap[minIndex].score) {
44
+ minIndex = rightChild;
45
+ }
46
+ if (minIndex === index) {
47
+ break;
48
+ }
49
+ this.swap(index, minIndex);
50
+ index = minIndex;
51
+ }
52
+ }
53
+ insert(item, score) {
54
+ this.heap.push({ item, score });
55
+ this.siftUp(this.heap.length - 1);
56
+ }
57
+ extractMin() {
58
+ if (this.heap.length === 0)
59
+ return undefined;
60
+ const minItem = this.heap[0].item;
61
+ const last = this.heap.pop();
62
+ if (this.heap.length > 0) {
63
+ this.heap[0] = last;
64
+ this.siftDown(0);
65
+ }
66
+ return minItem;
67
+ }
68
+ get size() {
69
+ return this.heap.length;
70
+ }
71
+ }
72
+ exports.MinHeap = MinHeap;
73
+ //# sourceMappingURL=min-heap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min-heap.js","sourceRoot":"","sources":["../../src/util/min-heap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare const removeUndefinedProps: <T extends object>(obj: T) => T;
2
+ export declare const removeNullOrUndefinedProps: <T extends object>(obj: T, exceptions?: string[]) => T;
3
+ export declare const addObjects: <T extends {
4
+ [key: string]: number;
5
+ }>(obj1: T, obj2: T) => T;
6
+ export declare const subtractObjects: <T extends {
7
+ [key: string]: number;
8
+ }>(obj1: T, obj2: T) => T;
9
+ export declare const hasChanges: <T extends object>(obj: T, partial: Partial<T>) => boolean;
10
+ export declare const hasSignificantDeepChanges: <T extends object>(obj: T, partial: Partial<T>, epsilonForNumbers: number) => boolean;
11
+ export declare const filterObject: <T extends object>(obj: T, predicate: (value: any, key: keyof T) => boolean) => { [P in keyof T]: T[P]; };
12
+ /**
13
+ * Asserts that a condition is true. If the condition is false, it throws an error with the provided message.
14
+ * @param condition The condition to check
15
+ * @param message The error message to display if the condition is false
16
+ * @throws {Error} If the condition is false
17
+ */
18
+ export declare function assert(condition: boolean, message: string): asserts condition;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterObject = exports.hasSignificantDeepChanges = exports.hasChanges = exports.subtractObjects = exports.addObjects = exports.removeNullOrUndefinedProps = exports.removeUndefinedProps = void 0;
4
+ exports.assert = assert;
5
+ const lodash_1 = require("lodash");
6
+ const removeUndefinedProps = (obj) => {
7
+ const newObj = {};
8
+ for (const key of Object.keys(obj)) {
9
+ if (obj[key] !== undefined)
10
+ newObj[key] = obj[key];
11
+ }
12
+ return newObj;
13
+ };
14
+ exports.removeUndefinedProps = removeUndefinedProps;
15
+ const removeNullOrUndefinedProps = (obj, exceptions) => {
16
+ const newObj = {};
17
+ for (const key of Object.keys(obj)) {
18
+ if ((obj[key] !== undefined && obj[key] !== null) ||
19
+ (exceptions ?? []).includes(key))
20
+ newObj[key] = obj[key];
21
+ }
22
+ return newObj;
23
+ };
24
+ exports.removeNullOrUndefinedProps = removeNullOrUndefinedProps;
25
+ const addObjects = (obj1, obj2) => {
26
+ const keys = (0, lodash_1.union)(Object.keys(obj1), Object.keys(obj2));
27
+ const newObj = {};
28
+ for (const key of keys) {
29
+ newObj[key] = (obj1[key] ?? 0) + (obj2[key] ?? 0);
30
+ }
31
+ return newObj;
32
+ };
33
+ exports.addObjects = addObjects;
34
+ const subtractObjects = (obj1, obj2) => {
35
+ const keys = (0, lodash_1.union)(Object.keys(obj1), Object.keys(obj2));
36
+ const newObj = {};
37
+ for (const key of keys) {
38
+ newObj[key] = (obj1[key] ?? 0) - (obj2[key] ?? 0);
39
+ }
40
+ return newObj;
41
+ };
42
+ exports.subtractObjects = subtractObjects;
43
+ const hasChanges = (obj, partial) => {
44
+ const currValues = (0, lodash_1.mapValues)(partial, (_, key) => obj[key]);
45
+ return !(0, lodash_1.isEqual)(currValues, partial);
46
+ };
47
+ exports.hasChanges = hasChanges;
48
+ const hasSignificantDeepChanges = (obj, partial, epsilonForNumbers) => {
49
+ const compareValues = (currValue, partialValue) => {
50
+ if (typeof currValue === 'number' && typeof partialValue === 'number') {
51
+ return Math.abs(currValue - partialValue) > epsilonForNumbers;
52
+ }
53
+ if (typeof currValue === 'object' && typeof partialValue === 'object') {
54
+ return (0, exports.hasSignificantDeepChanges)(currValue, partialValue, epsilonForNumbers);
55
+ }
56
+ return !(0, lodash_1.isEqual)(currValue, partialValue);
57
+ };
58
+ for (const key in partial) {
59
+ if (Object.prototype.hasOwnProperty.call(partial, key)) {
60
+ if (compareValues(obj[key], partial[key])) {
61
+ return true;
62
+ }
63
+ }
64
+ }
65
+ return false;
66
+ };
67
+ exports.hasSignificantDeepChanges = hasSignificantDeepChanges;
68
+ const filterObject = (obj, predicate) => {
69
+ const result = {};
70
+ for (const key in obj) {
71
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
72
+ if (predicate(obj[key], key)) {
73
+ result[key] = obj[key];
74
+ }
75
+ }
76
+ }
77
+ return result;
78
+ };
79
+ exports.filterObject = filterObject;
80
+ /**
81
+ * Asserts that a condition is true. If the condition is false, it throws an error with the provided message.
82
+ * @param condition The condition to check
83
+ * @param message The error message to display if the condition is false
84
+ * @throws {Error} If the condition is false
85
+ */
86
+ function assert(condition, message) {
87
+ if (!condition) {
88
+ throw new Error(`Assertion failed: ${message}`);
89
+ }
90
+ }
91
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/util/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const applyPatch: (oldContent: string, patch: string) => string;
@@ -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,17 @@
1
+ export declare const INITIAL_RETRY_DELAY = 1000;
2
+ export declare function withRetry<T>(operation: () => Promise<T>, options?: {
3
+ maxRetries?: number;
4
+ retryIf?: (error: any) => boolean;
5
+ onRetry?: (error: any, attempt: number) => void;
6
+ retryDelayMs?: number;
7
+ }): Promise<T>;
8
+ export declare const mapAsync: <T, U>(items: T[], f: (item: T, index: number) => Promise<U>, maxConcurrentRequests?: number) => Promise<U[]>;
9
+ export declare const sleep: (ms: number) => Promise<unknown>;
10
+ /**
11
+ * Wraps a promise with a timeout
12
+ * @param promise The promise to wrap
13
+ * @param timeoutMs Timeout in milliseconds
14
+ * @param timeoutMessage Optional message for the timeout error
15
+ * @returns A promise that resolves with the result of the original promise or rejects with a timeout error
16
+ */
17
+ export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, timeoutMessage?: string): Promise<T>;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = exports.mapAsync = exports.INITIAL_RETRY_DELAY = void 0;
4
+ exports.withRetry = withRetry;
5
+ exports.withTimeout = withTimeout;
6
+ exports.INITIAL_RETRY_DELAY = 1000; // 1 second
7
+ async function withRetry(operation, options = {}) {
8
+ const { maxRetries = 3, retryIf = (error) => error?.type === 'APIConnectionError', onRetry = () => { }, retryDelayMs = exports.INITIAL_RETRY_DELAY, } = options;
9
+ let lastError = null;
10
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
11
+ try {
12
+ return await operation();
13
+ }
14
+ catch (error) {
15
+ lastError = error;
16
+ if (!retryIf(error) || attempt === maxRetries - 1) {
17
+ throw error;
18
+ }
19
+ onRetry(error, attempt + 1);
20
+ // Exponential backoff
21
+ const delayMs = retryDelayMs * Math.pow(2, attempt);
22
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
23
+ }
24
+ }
25
+ throw lastError;
26
+ }
27
+ const mapAsync = (items, f, maxConcurrentRequests = 20) => {
28
+ let index = 0;
29
+ let currRequests = 0;
30
+ const results = [];
31
+ return new Promise((resolve, reject) => {
32
+ const doWork = () => {
33
+ while (index < items.length && currRequests < maxConcurrentRequests) {
34
+ const itemIndex = index;
35
+ f(items[itemIndex], itemIndex)
36
+ .then((data) => {
37
+ results[itemIndex] = data;
38
+ currRequests--;
39
+ if (index === items.length && currRequests === 0)
40
+ resolve(results);
41
+ else
42
+ doWork();
43
+ })
44
+ .catch(reject);
45
+ index++;
46
+ currRequests++;
47
+ }
48
+ };
49
+ if (items.length === 0)
50
+ resolve([]);
51
+ else
52
+ doWork();
53
+ });
54
+ };
55
+ exports.mapAsync = mapAsync;
56
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
57
+ exports.sleep = sleep;
58
+ /**
59
+ * Wraps a promise with a timeout
60
+ * @param promise The promise to wrap
61
+ * @param timeoutMs Timeout in milliseconds
62
+ * @param timeoutMessage Optional message for the timeout error
63
+ * @returns A promise that resolves with the result of the original promise or rejects with a timeout error
64
+ */
65
+ async function withTimeout(promise, timeoutMs, timeoutMessage = 'Operation timed out') {
66
+ let timeoutId;
67
+ const timeoutPromise = new Promise((_, reject) => {
68
+ timeoutId = setTimeout(() => {
69
+ reject(new Error(timeoutMessage));
70
+ }, timeoutMs);
71
+ });
72
+ return Promise.race([
73
+ promise.then((result) => {
74
+ clearTimeout(timeoutId);
75
+ return result;
76
+ }),
77
+ timeoutPromise,
78
+ ]);
79
+ }
80
+ //# sourceMappingURL=promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/util/promise.ts"],"names":[],"mappings":"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"}
@@ -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"}