codebuff 1.0.198 → 1.0.200

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 (40) hide show
  1. package/dist/cli.js +4 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/client.d.ts +5 -5
  4. package/dist/client.js +13 -15
  5. package/dist/client.js.map +1 -1
  6. package/dist/code-map/tsconfig.tsbuildinfo +1 -1
  7. package/dist/common/actions.d.ts +98 -98
  8. package/dist/common/advanced-analyzer.d.ts +19 -0
  9. package/dist/common/advanced-analyzer.js +140 -0
  10. package/dist/common/advanced-analyzer.js.map +1 -0
  11. package/dist/common/constants.d.ts +3 -1
  12. package/dist/common/constants.js +2 -1
  13. package/dist/common/constants.js.map +1 -1
  14. package/dist/common/message-image-handling.d.ts +41 -0
  15. package/dist/common/message-image-handling.js +57 -0
  16. package/dist/common/message-image-handling.js.map +1 -0
  17. package/dist/common/types/agent-state.d.ts +12 -12
  18. package/dist/common/types/message.d.ts +8 -8
  19. package/dist/common/util/lru-cache.d.ts +23 -2
  20. package/dist/common/util/lru-cache.js +44 -18
  21. package/dist/common/util/lru-cache.js.map +1 -1
  22. package/dist/common/util/messages.d.ts +1 -0
  23. package/dist/common/util/messages.js +15 -0
  24. package/dist/common/util/messages.js.map +1 -1
  25. package/dist/common/util/min-heap.js +2 -2
  26. package/dist/common/util/min-heap.js.map +1 -1
  27. package/dist/common/util/process-stream.d.ts +8 -0
  28. package/dist/common/util/process-stream.js +102 -0
  29. package/dist/common/util/process-stream.js.map +1 -0
  30. package/dist/common/util/referral-credits.d.ts +1 -0
  31. package/dist/common/util/referral-credits.js +48 -0
  32. package/dist/common/util/referral-credits.js.map +1 -0
  33. package/dist/common/websockets/websocket-schema.d.ts +176 -176
  34. package/dist/fingerprint.js +7 -2
  35. package/dist/fingerprint.js.map +1 -1
  36. package/dist/index.js +2 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/menu.js +1 -1
  39. package/dist/menu.js.map +1 -1
  40. package/package.json +1 -1
@@ -6,3 +6,4 @@ import { Message } from '../types/message';
6
6
  export declare function limitScreenshots(messages: Message[], maxCount: number): Message[];
7
7
  export declare function toContentString(msg: Message): string;
8
8
  export declare function withCacheControl(msg: Message): Message;
9
+ export declare function removeCache(messages: Message[]): Message[];
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.limitScreenshots = limitScreenshots;
4
4
  exports.toContentString = toContentString;
5
5
  exports.withCacheControl = withCacheControl;
6
+ exports.removeCache = removeCache;
6
7
  /**
7
8
  * Limits the total number of screenshots across all messages to maxCount,
8
9
  * keeping only the most recent ones.
@@ -51,4 +52,18 @@ function withCacheControl(msg) {
51
52
  };
52
53
  }
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
+ }
54
69
  //# sourceMappingURL=messages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/util/messages.ts"],"names":[],"mappings":";;AAWA,4CA+BC;AAED,0CAIC;AAED,4CAsBC;AAjED;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,QAAmB,EACnB,QAAgB;IAEhB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACnD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACxB,CAAC,CAAC,GAAG,CAAC,OAAO;aACR,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CACxB,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CACtD;aACA,MAAM,CAAC,CAAC,GAAG,EAAwB,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC;QACxD,CAAC,CAAC,EAAE,CACP,CAAA;IAED,IAAI,WAAW,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAEnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAC7E,CAAA;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAClC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACxB,CAAC,CAAC;YACE,GAAG,GAAG;YACN,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CACzB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CACnB,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CACnE;SACF;QACH,CAAC,CAAC,GAAG,CACR,CAAA;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,GAAY;IAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;IACvB,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAA;IAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAE,IAAY,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpE,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,GAAG,GAAG;YACN,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,GAAG,CAAC,OAAO;oBACjB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE;iBAC9C;aACF;SACF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,OAAO;YACL,GAAG,GAAG;YACN,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACnC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC1B,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,EAAE;gBAC5D,CAAC,CAAC,IAAI,CACT;SACF,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/util/messages.ts"],"names":[],"mappings":"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"}
@@ -57,13 +57,13 @@ class MinHeap {
57
57
  extractMin() {
58
58
  if (this.heap.length === 0)
59
59
  return undefined;
60
- const min = this.heap[0].item;
60
+ const minItem = this.heap[0].item;
61
61
  const last = this.heap.pop();
62
62
  if (this.heap.length > 0) {
63
63
  this.heap[0] = last;
64
64
  this.siftDown(0);
65
65
  }
66
- return min;
66
+ return minItem;
67
67
  }
68
68
  get size() {
69
69
  return this.heap.length;
@@ -1 +1 @@
1
- {"version":3,"file":"min-heap.js","sourceRoot":"","sources":["../../src/util/min-heap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"min-heap.js","sourceRoot":"","sources":["../../src/util/min-heap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function processStreamWithTags<T extends string>(stream: AsyncGenerator<T> | ReadableStream<T>, tags: {
2
+ [tagName: string]: {
3
+ attributeNames: string[];
4
+ onTagStart: (attributes: Record<string, string>) => void;
5
+ onTagEnd: (content: string, attributes: Record<string, string>) => boolean;
6
+ };
7
+ }): AsyncGenerator<string, void, unknown>;
8
+ export declare function parseAttributes(attributesString: string, attributeNames: string[]): Record<string, string>;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processStreamWithTags = processStreamWithTags;
4
+ exports.parseAttributes = parseAttributes;
5
+ async function* processStreamWithTags(stream, tags) {
6
+ let buffer = '';
7
+ let insideTag = null;
8
+ let currentAttributes = {};
9
+ let streamCompleted = false;
10
+ const escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
11
+ const tagNames = Object.keys(tags);
12
+ const openTagRegex = new RegExp(`<(${tagNames.map(escapeRegExp).join('|')})\\s*([^>]*)>`);
13
+ const closeTagRegex = new RegExp(`</(${tagNames.map(escapeRegExp).join('|')})>`);
14
+ function* parseBuffer(chunk) {
15
+ const isEOF = chunk === undefined;
16
+ if (chunk) {
17
+ yield chunk;
18
+ }
19
+ let didParse = true;
20
+ while (!streamCompleted && didParse) {
21
+ didParse = false;
22
+ if (insideTag === null) {
23
+ // Outside a tag: try to find the next opening tag
24
+ const openMatch = buffer.match(openTagRegex);
25
+ if (openMatch && openMatch.index !== undefined) {
26
+ const [fullMatch, openTag, attributesString] = openMatch;
27
+ const beforeTag = buffer.slice(0, openMatch.index);
28
+ const afterMatchIndex = openMatch.index + fullMatch.length;
29
+ // Move buffer forward
30
+ buffer = buffer.slice(afterMatchIndex);
31
+ // We are now inside this tag
32
+ insideTag = openTag;
33
+ currentAttributes = parseAttributes(attributesString, tags[openTag].attributeNames);
34
+ // Call onTagStart
35
+ tags[openTag].onTagStart(currentAttributes);
36
+ didParse = true;
37
+ }
38
+ else {
39
+ // No opening tag found. If it's EOF, yield remaining text.
40
+ if (isEOF && buffer.length > 0) {
41
+ buffer = '';
42
+ }
43
+ }
44
+ }
45
+ else {
46
+ // Inside a tag: try to find the closing tag
47
+ const closeMatch = buffer.match(closeTagRegex);
48
+ if (closeMatch && closeMatch.index !== undefined) {
49
+ const [fullMatch, closeTag] = closeMatch;
50
+ const content = buffer.slice(0, closeMatch.index);
51
+ // Move buffer forward
52
+ buffer = buffer.slice(closeMatch.index + fullMatch.length);
53
+ // Close the tag
54
+ const complete = tags[insideTag].onTagEnd(content, currentAttributes);
55
+ insideTag = null;
56
+ currentAttributes = {};
57
+ if (complete) {
58
+ // If onTagEnd signals completion, set streamCompleted and return
59
+ streamCompleted = true;
60
+ return;
61
+ }
62
+ didParse = true;
63
+ }
64
+ else if (isEOF) {
65
+ // We reached EOF without finding a closing tag
66
+ // Treat remaining buffer as content and close the tag
67
+ if (buffer.length > 0) {
68
+ const complete = tags[insideTag].onTagEnd(buffer, currentAttributes);
69
+ yield '</' + insideTag + '>';
70
+ buffer = '';
71
+ insideTag = null;
72
+ currentAttributes = {};
73
+ if (complete) {
74
+ streamCompleted = true;
75
+ return;
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ for await (const chunk of stream) {
83
+ if (streamCompleted)
84
+ continue;
85
+ buffer += chunk;
86
+ yield* parseBuffer(chunk);
87
+ }
88
+ if (!streamCompleted) {
89
+ // After the stream ends, try parsing one last time in case there's leftover text
90
+ yield* parseBuffer(undefined);
91
+ }
92
+ }
93
+ function parseAttributes(attributesString, attributeNames) {
94
+ const attributes = {};
95
+ const regex = new RegExp(`(${attributeNames.join('|')})="([^"]*)"`, 'g');
96
+ let match;
97
+ while ((match = regex.exec(attributesString)) !== null) {
98
+ attributes[match[1]] = match[2];
99
+ }
100
+ return attributes;
101
+ }
102
+ //# sourceMappingURL=process-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-stream.js","sourceRoot":"","sources":["../../src/util/process-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getTotalReferralCreditsForCustomer(userId: string): Promise<number>;
@@ -0,0 +1,48 @@
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.getTotalReferralCreditsForCustomer = getTotalReferralCreditsForCustomer;
30
+ const drizzle_orm_1 = require("drizzle-orm");
31
+ const drizzle_orm_2 = require("drizzle-orm");
32
+ const db_1 = __importDefault(require("../db"));
33
+ const schema = __importStar(require("../db/schema"));
34
+ async function getTotalReferralCreditsForCustomer(userId) {
35
+ return db_1.default
36
+ .select({
37
+ referralCredits: (0, drizzle_orm_1.sql) `SUM(COALESCE(${schema.referral.credits}, 0))`,
38
+ })
39
+ .from(schema.user)
40
+ .leftJoin(schema.referral, (0, drizzle_orm_2.or)((0, drizzle_orm_2.eq)(schema.referral.referrer_id, schema.user.id), (0, drizzle_orm_2.eq)(schema.referral.referred_id, schema.user.id)))
41
+ .where((0, drizzle_orm_2.eq)(schema.user.id, userId))
42
+ .limit(1)
43
+ .then((rows) => {
44
+ const firstRow = rows[0];
45
+ return parseInt(firstRow?.referralCredits ?? '0');
46
+ });
47
+ }
48
+ //# sourceMappingURL=referral-credits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referral-credits.js","sourceRoot":"","sources":["../../src/util/referral-credits.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,gFAqBC;AA1BD,6CAAiC;AACjC,6CAAoC;AACpC,+CAAsB;AACtB,qDAAsC;AAE/B,KAAK,UAAU,kCAAkC,CACtD,MAAc;IAEd,OAAO,YAAE;SACN,MAAM,CAAC;QACN,eAAe,EAAE,IAAA,iBAAG,EAAQ,gBAAgB,MAAM,CAAC,QAAQ,CAAC,OAAO,OAAO;KAC3E,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SACjB,QAAQ,CACP,MAAM,CAAC,QAAQ,EACf,IAAA,gBAAE,EACA,IAAA,gBAAE,EAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAC/C,IAAA,gBAAE,EAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAChD,CACF;SACA,KAAK,CAAC,IAAA,gBAAE,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;SACjC,KAAK,CAAC,CAAC,CAAC;SACR,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,OAAO,QAAQ,CAAC,QAAQ,EAAE,eAAe,IAAI,GAAG,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACN,CAAC"}