codecane 1.0.155 → 1.0.170

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 (106) hide show
  1. package/dist/browser-runner.d.ts +3 -1
  2. package/dist/browser-runner.js +211 -136
  3. package/dist/browser-runner.js.map +1 -1
  4. package/dist/chat-storage.d.ts +1 -1
  5. package/dist/chat-storage.js +35 -31
  6. package/dist/chat-storage.js.map +1 -1
  7. package/dist/checkpoints.d.ts +62 -0
  8. package/dist/checkpoints.js +134 -0
  9. package/dist/checkpoints.js.map +1 -0
  10. package/dist/cli.d.ts +20 -13
  11. package/dist/cli.js +461 -353
  12. package/dist/cli.js.map +1 -1
  13. package/dist/client.d.ts +178 -25
  14. package/dist/client.js +236 -198
  15. package/dist/client.js.map +1 -1
  16. package/dist/code-map/tsconfig.tsbuildinfo +1 -1
  17. package/dist/common/actions.d.ts +2115 -444
  18. package/dist/common/actions.js +31 -78
  19. package/dist/common/actions.js.map +1 -1
  20. package/dist/common/browser-actions.d.ts +253 -173
  21. package/dist/common/browser-actions.js +25 -12
  22. package/dist/common/browser-actions.js.map +1 -1
  23. package/dist/common/constants/tools.d.ts +3 -0
  24. package/dist/common/constants/tools.js +24 -0
  25. package/dist/common/constants/tools.js.map +1 -0
  26. package/dist/common/constants.d.ts +14 -8
  27. package/dist/common/constants.js +7 -6
  28. package/dist/common/constants.js.map +1 -1
  29. package/dist/common/message-image-handling.d.ts +41 -0
  30. package/dist/common/message-image-handling.js +57 -0
  31. package/dist/common/message-image-handling.js.map +1 -0
  32. package/dist/common/project-file-tree.js +7 -7
  33. package/dist/common/project-file-tree.js.map +1 -1
  34. package/dist/common/types/agent-state.d.ts +466 -0
  35. package/dist/common/types/agent-state.js +30 -0
  36. package/dist/common/types/agent-state.js.map +1 -0
  37. package/dist/common/types/message.d.ts +311 -0
  38. package/dist/common/types/message.js +54 -0
  39. package/dist/common/types/message.js.map +1 -0
  40. package/dist/common/types/tools.d.ts +5 -0
  41. package/dist/common/types/tools.js +3 -0
  42. package/dist/common/types/tools.js.map +1 -0
  43. package/dist/common/types/usage.d.ts +2 -2
  44. package/dist/common/util/__tests__/messages.test.js +70 -0
  45. package/dist/common/util/__tests__/messages.test.js.map +1 -0
  46. package/dist/common/util/changes.js +3 -3
  47. package/dist/common/util/changes.js.map +1 -1
  48. package/dist/common/util/credentials.d.ts +4 -4
  49. package/dist/common/util/file.d.ts +9 -2
  50. package/dist/common/util/file.js +31 -27
  51. package/dist/common/util/file.js.map +1 -1
  52. package/dist/common/util/git.js +1 -1
  53. package/dist/common/util/git.js.map +1 -1
  54. package/dist/common/util/lru-cache.d.ts +9 -0
  55. package/dist/common/util/lru-cache.js +42 -0
  56. package/dist/common/util/lru-cache.js.map +1 -0
  57. package/dist/common/util/messages.d.ts +6 -0
  58. package/dist/common/util/messages.js +22 -0
  59. package/dist/common/util/messages.js.map +1 -0
  60. package/dist/common/util/min-heap.d.ts +15 -0
  61. package/dist/common/util/min-heap.js +73 -0
  62. package/dist/common/util/min-heap.js.map +1 -0
  63. package/dist/common/util/process-stream.d.ts +8 -0
  64. package/dist/common/util/process-stream.js +102 -0
  65. package/dist/common/util/process-stream.js.map +1 -0
  66. package/dist/common/util/promise.d.ts +8 -0
  67. package/dist/common/util/promise.js +25 -2
  68. package/dist/common/util/promise.js.map +1 -1
  69. package/dist/common/util/string.d.ts +31 -0
  70. package/dist/common/util/string.js +71 -1
  71. package/dist/common/util/string.js.map +1 -1
  72. package/dist/common/websockets/websocket-schema.d.ts +4065 -1019
  73. package/dist/config.d.ts +1 -0
  74. package/dist/config.js +3 -2
  75. package/dist/config.js.map +1 -1
  76. package/dist/credentials.d.ts +1 -0
  77. package/dist/credentials.js +7 -3
  78. package/dist/credentials.js.map +1 -1
  79. package/dist/index.js +3 -3
  80. package/dist/index.js.map +1 -1
  81. package/dist/menu.js +16 -12
  82. package/dist/menu.js.map +1 -1
  83. package/dist/project-files.d.ts +43 -3
  84. package/dist/project-files.js +97 -18
  85. package/dist/project-files.js.map +1 -1
  86. package/dist/tool-handlers.d.ts +22 -7
  87. package/dist/tool-handlers.js +111 -44
  88. package/dist/tool-handlers.js.map +1 -1
  89. package/dist/utils/process-xml-chunks.d.ts +31 -0
  90. package/dist/utils/process-xml-chunks.js +235 -0
  91. package/dist/utils/process-xml-chunks.js.map +1 -0
  92. package/dist/utils/spinner.d.ts +11 -0
  93. package/dist/utils/spinner.js +87 -0
  94. package/dist/utils/spinner.js.map +1 -0
  95. package/dist/utils/terminal.d.ts +3 -3
  96. package/dist/utils/terminal.js +23 -24
  97. package/dist/utils/terminal.js.map +1 -1
  98. package/dist/web-scraper.d.ts +1 -1
  99. package/dist/web-scraper.js +11 -7
  100. package/dist/web-scraper.js.map +1 -1
  101. package/dist/worker-script-project-context.js +1 -1
  102. package/dist/worker-script-project-context.js.map +1 -1
  103. package/package.json +3 -4
  104. package/dist/__tests__/browser-runner.test.js +0 -15
  105. package/dist/__tests__/browser-runner.test.js.map +0 -1
  106. /package/dist/{__tests__/browser-runner.test.d.ts → common/util/__tests__/messages.test.d.ts} +0 -0
@@ -27,6 +27,8 @@ exports.ChatStorage = void 0;
27
27
  const path = __importStar(require("path"));
28
28
  const fs = __importStar(require("fs"));
29
29
  const project_files_1 = require("./project-files");
30
+ const string_1 = require("./common/util/string");
31
+ const ts_pattern_1 = require("ts-pattern");
30
32
  class ChatStorage {
31
33
  currentChat;
32
34
  currentVersionIndex;
@@ -45,46 +47,48 @@ class ChatStorage {
45
47
  if (index === lastIndex) {
46
48
  return msg; // Preserve the most recent message in its entirety
47
49
  }
48
- // Helper function to clean up content string
50
+ // Helper function to clean up message content
49
51
  const cleanContent = (content) => {
50
- let result = content;
51
- if (content.includes('"screenshot"')) {
52
- result = result.replace(/"screenshot"\s*:\s*"[^"]+"/g, '"screenshot":"[SCREENSHOT_REMOVED]"');
53
- }
54
- if (content.includes('"logs"')) {
55
- result = result.replace(/"logs"\s*:\s*\[[^\]]*\]/g, '"logs":[LOGS_REMOVED]');
56
- }
57
- return result;
52
+ // Keep only tool logs
53
+ content = (0, string_1.transformJsonInString)(content, 'logs', (logs) => logs.filter((log) => log.source === 'tool'), '(LOGS_REMOVED)');
54
+ // Remove metrics
55
+ content = (0, string_1.transformJsonInString)(content, 'metrics', () => '(METRICS_REMOVED)', '(METRICS_REMOVED)');
56
+ return content;
58
57
  };
59
58
  // Clean up message content
60
59
  if (!msg.content)
61
60
  return msg;
62
- if (Array.isArray(msg.content)) {
63
- return {
64
- ...msg,
65
- content: msg.content.map((contentObj) => {
66
- if (contentObj.type === 'tool_result' && contentObj.content) {
67
- return {
68
- ...contentObj,
69
- content: cleanContent(contentObj.content),
70
- };
71
- }
72
- return contentObj;
73
- }),
74
- };
75
- }
76
- else if (typeof msg.content === 'string') {
77
- return {
78
- ...msg,
79
- content: cleanContent(msg.content),
80
- };
81
- }
82
- return msg;
61
+ return (0, ts_pattern_1.match)(msg)
62
+ .with({ content: ts_pattern_1.P.array() }, (message) => ({
63
+ ...message,
64
+ content: message.content.reduce((acc, contentObj) => [
65
+ ...acc,
66
+ ...(0, ts_pattern_1.match)(contentObj)
67
+ .with({ type: 'tool_result', content: ts_pattern_1.P.string }, (obj) => [
68
+ {
69
+ ...obj,
70
+ content: cleanContent(obj.content),
71
+ },
72
+ ])
73
+ .with({ type: 'text', text: ts_pattern_1.P.string }, (obj) => [
74
+ {
75
+ ...obj,
76
+ text: cleanContent(obj.text),
77
+ },
78
+ ])
79
+ .otherwise((obj) => [obj]),
80
+ ], []),
81
+ }))
82
+ .with({ content: ts_pattern_1.P.string }, (message) => ({
83
+ ...message,
84
+ content: cleanContent(message.content),
85
+ }))
86
+ .otherwise((message) => message);
83
87
  });
84
88
  // Add the new message
85
89
  chat.messages.push(message);
86
90
  chat.updatedAt = new Date().toISOString();
87
- // Save messages to .codebuff/messages/messages.json
91
+ // Save messages to chat directory
88
92
  this.saveMessagesToFile(chat);
89
93
  }
90
94
  saveMessagesToFile(chat) {
@@ -1 +1 @@
1
- {"version":3,"file":"chat-storage.js","sourceRoot":"","sources":["../src/chat-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-storage.js","sourceRoot":"","sources":["../src/chat-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { AgentState } from './common/types/agent-state';
2
+ /**
3
+ * Interface representing a checkpoint of agent state
4
+ */
5
+ export interface Checkpoint {
6
+ agentStateString: string;
7
+ historyLength: number;
8
+ id: number;
9
+ parentId: number;
10
+ timestamp: number;
11
+ userInput: string;
12
+ }
13
+ /**
14
+ * Simple in-memory checkpoint manager for agent states
15
+ */
16
+ export declare class CheckpointManager {
17
+ private checkpoints;
18
+ private maxCheckpoints;
19
+ private nextId;
20
+ private oldestId;
21
+ constructor(maxCheckpoints?: number);
22
+ /**
23
+ * Add a new checkpoint
24
+ * @param agentState - The agent state to checkpoint
25
+ * @param userInput - The user input associated with this checkpoint
26
+ * @returns The ID of the created checkpoint
27
+ */
28
+ addCheckpoint(agentState: AgentState, userInput: string, restoreRef?: Checkpoint | null): number;
29
+ /**
30
+ * Get a checkpoint by ID
31
+ * @param id The checkpoint ID
32
+ * @returns The checkpoint or null if not found
33
+ */
34
+ getCheckpoint(id: number): Checkpoint | null;
35
+ /**
36
+ * Get all checkpoints
37
+ * @returns Array of all checkpoints
38
+ */
39
+ getAllCheckpoints(): Checkpoint[];
40
+ /**
41
+ * Get the most recent checkpoint
42
+ * @returns The most recent checkpoint or null if none exist
43
+ */
44
+ getLatestCheckpoint(): Checkpoint | null;
45
+ /**
46
+ * Clear all checkpoints
47
+ */
48
+ clearCheckpoints(): void;
49
+ /**
50
+ * Get a formatted string representation of all checkpoints
51
+ * @param detailed Whether to include detailed information about each checkpoint
52
+ * @returns A formatted string representation of all checkpoints
53
+ */
54
+ getCheckpointsAsString(detailed?: boolean): string;
55
+ /**
56
+ * Get detailed information about a specific checkpoint
57
+ * @param id The checkpoint ID
58
+ * @returns A formatted string with detailed information about the checkpoint, or an error message if not found
59
+ */
60
+ getCheckpointDetails(id: number): string;
61
+ }
62
+ export declare const checkpointManager: CheckpointManager;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkpointManager = exports.CheckpointManager = void 0;
4
+ const picocolors_1 = require("picocolors");
5
+ /**
6
+ * Simple in-memory checkpoint manager for agent states
7
+ */
8
+ class CheckpointManager {
9
+ checkpoints = new Map();
10
+ maxCheckpoints;
11
+ nextId = 1;
12
+ oldestId = 1;
13
+ constructor(maxCheckpoints = 100) {
14
+ this.maxCheckpoints = maxCheckpoints;
15
+ }
16
+ /**
17
+ * Add a new checkpoint
18
+ * @param agentState - The agent state to checkpoint
19
+ * @param userInput - The user input associated with this checkpoint
20
+ * @returns The ID of the created checkpoint
21
+ */
22
+ addCheckpoint(agentState, userInput, restoreRef = null) {
23
+ // Use incremental ID starting at 1
24
+ const id = this.nextId++;
25
+ const parentId = restoreRef === null ? id - 1 : restoreRef.parentId;
26
+ const checkpoint = {
27
+ agentStateString: JSON.stringify(agentState), // Deep clone to prevent reference issues
28
+ historyLength: agentState.messageHistory.length,
29
+ id,
30
+ parentId,
31
+ timestamp: Date.now(),
32
+ userInput,
33
+ };
34
+ // Add to map
35
+ this.checkpoints.set(id, checkpoint);
36
+ // If we exceed the maximum number of checkpoints, remove the oldest one
37
+ if (this.checkpoints.size > this.maxCheckpoints) {
38
+ this.checkpoints.delete(this.oldestId);
39
+ this.oldestId++;
40
+ }
41
+ return id;
42
+ }
43
+ /**
44
+ * Get a checkpoint by ID
45
+ * @param id The checkpoint ID
46
+ * @returns The checkpoint or null if not found
47
+ */
48
+ getCheckpoint(id) {
49
+ const checkpoint = this.checkpoints.get(id);
50
+ return checkpoint || null;
51
+ }
52
+ /**
53
+ * Get all checkpoints
54
+ * @returns Array of all checkpoints
55
+ */
56
+ getAllCheckpoints() {
57
+ return Array.from(this.checkpoints.values());
58
+ }
59
+ /**
60
+ * Get the most recent checkpoint
61
+ * @returns The most recent checkpoint or null if none exist
62
+ */
63
+ getLatestCheckpoint() {
64
+ return this.checkpoints.get(this.nextId - 1) || null;
65
+ }
66
+ /**
67
+ * Clear all checkpoints
68
+ */
69
+ clearCheckpoints() {
70
+ this.checkpoints.clear();
71
+ this.nextId = 1; // Reset the ID counter when clearing
72
+ this.oldestId = 1;
73
+ }
74
+ /**
75
+ * Get a formatted string representation of all checkpoints
76
+ * @param detailed Whether to include detailed information about each checkpoint
77
+ * @returns A formatted string representation of all checkpoints
78
+ */
79
+ getCheckpointsAsString(detailed = false) {
80
+ const checkpoints = this.getAllCheckpoints().sort((a, b) => a.id - b.id);
81
+ if (checkpoints.length === 0) {
82
+ return (0, picocolors_1.yellow)('No checkpoints available.');
83
+ }
84
+ const lines = [(0, picocolors_1.bold)((0, picocolors_1.underline)('Agent State Checkpoints:')), ''];
85
+ checkpoints.forEach((checkpoint) => {
86
+ const date = new Date(checkpoint.timestamp);
87
+ const formattedDate = date.toLocaleString();
88
+ const userInputOneLine = checkpoint.userInput.replaceAll('\n', ' ');
89
+ const userInput = userInputOneLine.length > 50
90
+ ? userInputOneLine.substring(0, 47) + '...'
91
+ : userInputOneLine;
92
+ lines.push(`${(0, picocolors_1.cyan)((0, picocolors_1.bold)(`#${checkpoint.id}`))} ${(0, picocolors_1.gray)(`[${formattedDate}]`)}:`);
93
+ lines.push(` ${(0, picocolors_1.blue)('Input')}: ${userInput}`);
94
+ if (detailed) {
95
+ // Add more details about the agent state if needed
96
+ const messageCount = checkpoint.historyLength;
97
+ lines.push(` ${(0, picocolors_1.blue)('Messages')}: ${messageCount}`);
98
+ // You can add more detailed information here as needed
99
+ // For example, file context information, etc.
100
+ }
101
+ lines.push(''); // Empty line between checkpoints
102
+ });
103
+ return lines.join('\n');
104
+ }
105
+ /**
106
+ * Get detailed information about a specific checkpoint
107
+ * @param id The checkpoint ID
108
+ * @returns A formatted string with detailed information about the checkpoint, or an error message if not found
109
+ */
110
+ getCheckpointDetails(id) {
111
+ const checkpoint = this.getCheckpoint(id);
112
+ if (!checkpoint) {
113
+ return (0, picocolors_1.cyan)(`\nCheckpoint #${id} not found.`);
114
+ }
115
+ const lines = [
116
+ (0, picocolors_1.cyan)(`Detailed information for checkpoint #${id}:`),
117
+ ];
118
+ const date = new Date(checkpoint.timestamp);
119
+ const formattedDate = date.toLocaleString();
120
+ lines.push(`${(0, picocolors_1.blue)('Created at')}: ${formattedDate}`);
121
+ if (checkpoint.userInput) {
122
+ lines.push(`${(0, picocolors_1.blue)('User input')}: ${checkpoint.userInput}`);
123
+ }
124
+ // Display more detailed information about the agent state
125
+ const messageCount = checkpoint.historyLength;
126
+ lines.push(`${(0, picocolors_1.blue)('Message history')}: ${messageCount} messages`);
127
+ // You could add more detailed information here as needed
128
+ return lines.join('\n');
129
+ }
130
+ }
131
+ exports.CheckpointManager = CheckpointManager;
132
+ // Export a singleton instance for use throughout the application
133
+ exports.checkpointManager = new CheckpointManager();
134
+ //# sourceMappingURL=checkpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -9,7 +9,6 @@ export declare class CLI {
9
9
  private rl;
10
10
  private isReceivingResponse;
11
11
  private stopResponse;
12
- private loadingInterval;
13
12
  private lastChanges;
14
13
  private lastSigintTime;
15
14
  private lastInputTime;
@@ -17,25 +16,33 @@ export declare class CLI {
17
16
  private pastedContent;
18
17
  private isPasting;
19
18
  constructor(readyPromise: Promise<[void, ProjectFileContext]>, { git, costMode }: CliOptions);
19
+ private setupSignalHandlers;
20
+ private initReadlineInterface;
21
+ private completer;
22
+ private setPrompt;
23
+ printInitialPrompt(initialInput?: string): Promise<void>;
24
+ printDiff(): Promise<void>;
25
+ private handleLine;
26
+ private handleUserInput;
27
+ private processCommand;
28
+ private forwardUserInput;
20
29
  private returnControlToUser;
21
30
  private onWebSocketError;
22
31
  private onWebSocketReconnect;
23
- private detectPasting;
24
- private handleInput;
25
- private setPrompt;
26
- printInitialPrompt(initialInput?: string): Promise<void>;
27
32
  private handleUndo;
28
33
  private handleRedo;
29
34
  private navigateFileVersion;
35
+ private applyAndDisplayCurrentFileVersion;
36
+ private handleKeyPress;
37
+ private handleSigint;
38
+ private handleEscKey;
30
39
  private handleStopResponse;
31
- private restoreCursor;
40
+ private showEasterEgg;
32
41
  private handleExit;
33
- private handleEscKey;
34
- private applyAndDisplayCurrentFileVersion;
35
- private startLoadingAnimation;
36
- private stopLoadingAnimation;
37
- private autoCommitChanges;
42
+ private detectPasting;
38
43
  private handleDiff;
39
- private handleUserInput;
40
- private sendUserInputAndAwaitResponse;
44
+ private handleCheckpoints;
45
+ private handleCheckpointDetail;
46
+ private handleRestoreCheckpoint;
47
+ private handleClearCheckpoints;
41
48
  }