codecane 1.0.156 → 1.0.171

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 +2 -0
  2. package/dist/browser-runner.js +210 -135
  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 +64 -0
  8. package/dist/checkpoints.js +147 -0
  9. package/dist/checkpoints.js.map +1 -0
  10. package/dist/cli.d.ts +22 -16
  11. package/dist/cli.js +472 -367
  12. package/dist/cli.js.map +1 -1
  13. package/dist/client.d.ts +178 -25
  14. package/dist/client.js +252 -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 +2083 -443
  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 +221 -141
  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 +461 -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/util/__tests__/messages.test.js +70 -0
  44. package/dist/common/util/__tests__/messages.test.js.map +1 -0
  45. package/dist/common/util/changes.js +3 -3
  46. package/dist/common/util/changes.js.map +1 -1
  47. package/dist/common/util/credentials.d.ts +4 -4
  48. package/dist/common/util/file.d.ts +6 -2
  49. package/dist/common/util/file.js +30 -27
  50. package/dist/common/util/file.js.map +1 -1
  51. package/dist/common/util/git.js +1 -1
  52. package/dist/common/util/git.js.map +1 -1
  53. package/dist/common/util/lru-cache.d.ts +9 -0
  54. package/dist/common/util/lru-cache.js +42 -0
  55. package/dist/common/util/lru-cache.js.map +1 -0
  56. package/dist/common/util/messages.d.ts +6 -0
  57. package/dist/common/util/messages.js +22 -0
  58. package/dist/common/util/messages.js.map +1 -0
  59. package/dist/common/util/min-heap.d.ts +15 -0
  60. package/dist/common/util/min-heap.js +73 -0
  61. package/dist/common/util/min-heap.js.map +1 -0
  62. package/dist/common/util/process-stream.d.ts +8 -0
  63. package/dist/common/util/process-stream.js +102 -0
  64. package/dist/common/util/process-stream.js.map +1 -0
  65. package/dist/common/util/promise.d.ts +8 -0
  66. package/dist/common/util/promise.js +25 -2
  67. package/dist/common/util/promise.js.map +1 -1
  68. package/dist/common/util/string.d.ts +31 -0
  69. package/dist/common/util/string.js +71 -1
  70. package/dist/common/util/string.js.map +1 -1
  71. package/dist/common/websockets/websocket-schema.d.ts +3920 -938
  72. package/dist/config.d.ts +1 -0
  73. package/dist/config.js +3 -2
  74. package/dist/config.js.map +1 -1
  75. package/dist/credentials.d.ts +1 -0
  76. package/dist/credentials.js +7 -3
  77. package/dist/credentials.js.map +1 -1
  78. package/dist/index.js +3 -3
  79. package/dist/index.js.map +1 -1
  80. package/dist/menu.js +16 -12
  81. package/dist/menu.js.map +1 -1
  82. package/dist/project-files.d.ts +40 -2
  83. package/dist/project-files.js +95 -17
  84. package/dist/project-files.js.map +1 -1
  85. package/dist/tool-handlers.d.ts +22 -7
  86. package/dist/tool-handlers.js +110 -43
  87. package/dist/tool-handlers.js.map +1 -1
  88. package/dist/utils/logger.d.ts +1 -0
  89. package/dist/utils/logger.js +46 -0
  90. package/dist/utils/logger.js.map +1 -0
  91. package/dist/utils/process-xml-chunks.d.ts +37 -0
  92. package/dist/utils/process-xml-chunks.js +247 -0
  93. package/dist/utils/process-xml-chunks.js.map +1 -0
  94. package/dist/utils/spinner.d.ts +11 -0
  95. package/dist/utils/spinner.js +87 -0
  96. package/dist/utils/spinner.js.map +1 -0
  97. package/dist/utils/terminal.d.ts +3 -3
  98. package/dist/utils/terminal.js +23 -24
  99. package/dist/utils/terminal.js.map +1 -1
  100. package/dist/web-scraper.d.ts +1 -1
  101. package/dist/web-scraper.js +11 -7
  102. package/dist/web-scraper.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
@@ -23,19 +23,36 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.handleBrowserInstruction = exports.toolHandlers = exports.handleCodeSearch = exports.handleRunTerminalCommand = exports.handleScrapeWebPage = void 0;
26
+ exports.handleToolCall = exports.toolHandlers = exports.handleCodeSearch = exports.handleRunTerminalCommand = exports.handleScrapeWebPage = exports.handleWriteFile = void 0;
27
27
  const ripgrep_1 = require("@vscode/ripgrep");
28
28
  const picocolors_1 = require("picocolors");
29
29
  const child_process_1 = require("child_process");
30
30
  const browser_actions_1 = require("./common/browser-actions");
31
31
  const browser_runner_1 = require("./browser-runner");
32
32
  const web_scraper_1 = require("./web-scraper");
33
- const project_files_1 = require("./project-files");
34
33
  const terminal_1 = require("./utils/terminal");
35
34
  const string_1 = require("./common/util/string");
36
35
  const path = __importStar(require("path"));
37
- const handleScrapeWebPage = async (input, id) => {
38
- const { url } = input;
36
+ const spinner_1 = require("./utils/spinner");
37
+ const changes_1 = require("./common/util/changes");
38
+ const actions_1 = require("./common/actions");
39
+ const handleWriteFile = async (parameters, _id, projectPath) => {
40
+ const fileChange = actions_1.FileChangeSchema.parse(parameters);
41
+ const { created, modified } = (0, changes_1.applyChanges)(projectPath, [fileChange]);
42
+ let result = '';
43
+ for (const file of created) {
44
+ result += `Wrote to ${file} successfully.\n`;
45
+ console.log((0, picocolors_1.green)(`- Created ${file}`));
46
+ }
47
+ for (const file of modified) {
48
+ result += `Wrote to ${file} successfully.\n`;
49
+ console.log((0, picocolors_1.green)(`- Updated ${file}`));
50
+ }
51
+ return result;
52
+ };
53
+ exports.handleWriteFile = handleWriteFile;
54
+ const handleScrapeWebPage = async (parameters) => {
55
+ const { url } = parameters;
39
56
  const content = await (0, web_scraper_1.scrapeWebPage)(url);
40
57
  if (!content) {
41
58
  return `<web_scraping_error url="${url}">Failed to scrape the web page.</web_scraping_error>`;
@@ -43,23 +60,22 @@ const handleScrapeWebPage = async (input, id) => {
43
60
  return `<web_scraped_content url="${url}">${content}</web_scraped_content>`;
44
61
  };
45
62
  exports.handleScrapeWebPage = handleScrapeWebPage;
46
- const handleRunTerminalCommand = async (input, id, mode) => {
47
- const { command } = input;
48
- return (0, terminal_1.runTerminalCommand)(command, mode);
63
+ const handleRunTerminalCommand = async (parameters, id, mode, projectPath) => {
64
+ const { command } = parameters;
65
+ return (0, terminal_1.runTerminalCommand)(command, mode, projectPath);
49
66
  };
50
67
  exports.handleRunTerminalCommand = handleRunTerminalCommand;
51
- const handleCodeSearch = async (input, id) => {
68
+ const handleCodeSearch = async (parameters, _id, projectPath) => {
52
69
  return new Promise((resolve) => {
53
70
  let stdout = '';
54
71
  let stderr = '';
55
- const dir = (0, project_files_1.getProjectRoot)();
56
- const basename = path.basename(dir);
57
- const pattern = input.pattern.replace(/"/g, '');
72
+ const basename = path.basename(projectPath);
73
+ const pattern = parameters.pattern.replace(/"/g, '');
58
74
  const command = `${path.resolve(ripgrep_1.rgPath)} "${pattern}" .`;
59
75
  console.log();
60
76
  console.log((0, picocolors_1.green)(`Searching ${basename} for "${pattern}":`));
61
77
  const childProcess = (0, child_process_1.spawn)(command, {
62
- cwd: dir,
78
+ cwd: projectPath,
63
79
  shell: true,
64
80
  });
65
81
  childProcess.stdout.on('data', (data) => {
@@ -78,7 +94,7 @@ const handleCodeSearch = async (input, id) => {
78
94
  console.log('...');
79
95
  }
80
96
  }
81
- console.log((0, picocolors_1.green)(`Found ${lines.length} results\n`));
97
+ console.log((0, picocolors_1.green)(`Found ${lines.length} results`));
82
98
  const truncatedStdout = (0, string_1.truncateStringWithMessage)(stdout, 10000);
83
99
  const truncatedStderr = (0, string_1.truncateStringWithMessage)(stderr, 1000);
84
100
  resolve(formatResult(truncatedStdout, truncatedStderr, 'Code search completed', code));
@@ -89,15 +105,53 @@ const handleCodeSearch = async (input, id) => {
89
105
  });
90
106
  };
91
107
  exports.handleCodeSearch = handleCodeSearch;
108
+ function formatResult(stdout, stderr, status, exitCode) {
109
+ let result = '<terminal_command_result>\n';
110
+ result += `<stdout>${stdout}</stdout>\n`;
111
+ if (stderr !== undefined) {
112
+ result += `<stderr>${stderr}</stderr>\n`;
113
+ }
114
+ result += `<status>${status}</status>\n`;
115
+ if (exitCode !== null) {
116
+ result += `<exit_code>${exitCode}</exit_code>\n`;
117
+ }
118
+ result += '</terminal_command_result>';
119
+ return result;
120
+ }
92
121
  exports.toolHandlers = {
122
+ write_file: exports.handleWriteFile,
93
123
  scrape_web_page: exports.handleScrapeWebPage,
94
- run_terminal_command: ((input, id) => (0, exports.handleRunTerminalCommand)(input, id, 'assistant').then((result) => result.result)),
95
- continue: async (input, id) => input.response ?? 'Please continue',
124
+ run_terminal_command: ((parameters, id, projectPath) => (0, exports.handleRunTerminalCommand)(parameters, id, 'assistant', projectPath).then((result) => result.result)),
96
125
  code_search: exports.handleCodeSearch,
97
- browser_action: async (input, _id) => {
98
- const action = browser_actions_1.BrowserActionSchema.parse(input);
99
- console.log('Executing browser action:', action);
100
- const response = await (0, browser_runner_1.handleBrowserInstruction)(action);
126
+ end_turn: async () => {
127
+ return '';
128
+ },
129
+ browser_action: async (params, _id) => {
130
+ spinner_1.Spinner.get().start();
131
+ let response;
132
+ try {
133
+ const action = browser_actions_1.BrowserActionSchema.parse(params);
134
+ response = await (0, browser_runner_1.handleBrowserInstruction)(action);
135
+ }
136
+ catch (error) {
137
+ const errorMessage = error instanceof Error ? error.message : String(error);
138
+ console.log('Small hiccup, one sec...');
139
+ return {
140
+ success: false,
141
+ error: `Browser action validation failed: ${errorMessage}`,
142
+ logs: [
143
+ {
144
+ type: 'error',
145
+ message: `Browser action validation failed: ${errorMessage}`,
146
+ timestamp: Date.now(),
147
+ source: 'tool',
148
+ },
149
+ ],
150
+ };
151
+ }
152
+ finally {
153
+ spinner_1.Spinner.get().stop();
154
+ }
101
155
  // Log any browser errors
102
156
  if (!response.success && response.error) {
103
157
  console.error((0, picocolors_1.red)(`Browser action failed: ${response.error}`));
@@ -113,38 +167,51 @@ exports.toolHandlers = {
113
167
  console.warn((0, picocolors_1.yellow)(log.message));
114
168
  break;
115
169
  case 'info':
116
- console.info(log.message);
170
+ console.info((0, picocolors_1.cyan)(log.message));
117
171
  break;
118
172
  default:
119
- console.log(log.message);
173
+ console.log((0, picocolors_1.cyan)(log.message));
120
174
  }
121
175
  }
122
176
  });
123
177
  }
124
- // Handle chunked screenshots
125
- if (response.chunks && response.chunks.length > 0) {
126
- const sortedChunks = response.chunks.sort((a, b) => a.index - b.index);
127
- const combinedBase64 = sortedChunks.map((ch) => ch.data).join('');
128
- response.screenshot = combinedBase64;
129
- delete response.chunks; // Remove chunks after combining
130
- }
131
- // Send the full response including screenshot
132
- return JSON.stringify(response);
178
+ return response;
133
179
  },
134
180
  };
135
- function formatResult(stdout, stderr, status, exitCode) {
136
- let result = '<terminal_command_result>\n';
137
- result += `<stdout>${stdout}</stdout>\n`;
138
- if (stderr !== undefined) {
139
- result += `<stderr>${stderr}</stderr>\n`;
181
+ const handleToolCall = async (toolCall, projectPath) => {
182
+ const { name, parameters } = toolCall;
183
+ const handler = exports.toolHandlers[name];
184
+ if (!handler) {
185
+ throw new Error(`No handler found for tool: ${name}`);
140
186
  }
141
- result += `<status>${status}</status>\n`;
142
- if (exitCode !== null) {
143
- result += `<exit_code>${exitCode}</exit_code>\n`;
187
+ const content = await handler(parameters, toolCall.id, projectPath);
188
+ if (typeof content !== 'string') {
189
+ throw new Error(`Tool call ${name} not supported. It returned non-string content.`);
144
190
  }
145
- result += '</terminal_command_result>';
146
- return result;
147
- }
148
- var browser_runner_2 = require("./browser-runner");
149
- Object.defineProperty(exports, "handleBrowserInstruction", { enumerable: true, get: function () { return browser_runner_2.handleBrowserInstruction; } });
191
+ // TODO: Add support for screenshots.
192
+ // const toolResultMessage: Message = {
193
+ // role: 'user',
194
+ // content: match(content)
195
+ // .with({ screenshots: P.not(P.nullish) }, (response) => [
196
+ // ...(response.screenshots.pre ? [response.screenshots.pre] : []),
197
+ // {
198
+ // type: 'text' as const,
199
+ // text:
200
+ // JSON.stringify({
201
+ // ...response,
202
+ // screenshots: undefined,
203
+ // }),
204
+ // },
205
+ // response.screenshots.post,
206
+ // ])
207
+ // .with(P.string, (str) => str)
208
+ // .otherwise((val) => JSON.stringify(val)),
209
+ // }
210
+ return {
211
+ name,
212
+ result: content,
213
+ id: toolCall.id,
214
+ };
215
+ };
216
+ exports.handleToolCall = handleToolCall;
150
217
  //# sourceMappingURL=tool-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-handlers.js","sourceRoot":"","sources":["../src/tool-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-handlers.js","sourceRoot":"","sources":["../src/tool-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const logger: import("pino").Logger<never, boolean>;
@@ -0,0 +1,46 @@
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.logger = void 0;
30
+ const pino_1 = __importDefault(require("pino"));
31
+ const fs = __importStar(require("fs"));
32
+ const path = __importStar(require("path"));
33
+ const config_1 = require("../config");
34
+ // Create logs directory if it doesn't exist
35
+ const logsDir = process.cwd();
36
+ if (!fs.existsSync(logsDir)) {
37
+ fs.mkdirSync(logsDir, { recursive: true });
38
+ }
39
+ // Create a writable stream to the log file
40
+ const logStream = fs.createWriteStream(path.join(logsDir, 'debug.log'), {
41
+ flags: 'a',
42
+ });
43
+ exports.logger = (0, pino_1.default)({
44
+ level: process.env.LOG_LEVEL || 'debug',
45
+ }, config_1.isProduction ? undefined : logStream);
46
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,uCAAwB;AACxB,2CAA4B;AAC5B,sCAAwC;AAExC,4CAA4C;AAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;AAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,2CAA2C;AAC3C,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;IACtE,KAAK,EAAE,GAAG;CACX,CAAC,CAAA;AAEW,QAAA,MAAM,GAAG,IAAA,cAAI,EACxB;IACE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO;CACxC,EACD,qBAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CACrC,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Handler interface for XML tags
3
+ * Allows controlling both tag display and content handling
4
+ */
5
+ export interface TagHandler {
6
+ onTagStart?: (tagName: string) => string | null;
7
+ onTagEnd: (tagName: string, content: string) => string | null;
8
+ }
9
+ /**
10
+ * XmlStreamProcessor handles XML tags that may be split across multiple chunks.
11
+ * It processes tool-related XML tags and executes callbacks when nested tags are completed.
12
+ * The processor maintains a complete response buffer and processes character by character
13
+ * to ensure tags are fully completed before outputting content.
14
+ */
15
+ export declare class XmlStreamProcessor {
16
+ private tagStack;
17
+ private currentContent;
18
+ private tagHandlers;
19
+ private responseBuffer;
20
+ private lastOutput;
21
+ constructor(tagHandlers: Record<string, TagHandler>);
22
+ /**
23
+ * Process a chunk of text that may contain XML tags
24
+ * @param chunk The new chunk to process
25
+ * @returns Processed text with XML tags handled according to the tag handlers
26
+ */
27
+ process(chunk: string): string;
28
+ /**
29
+ * Reset the processor state after a stream is complete
30
+ * This clears all internal state variables to prepare for a new stream
31
+ */
32
+ reset(): void;
33
+ }
34
+ /**
35
+ * Default tag handlers for common XML tags
36
+ */
37
+ export declare const defaultTagHandlers: Record<string, TagHandler>;
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultTagHandlers = exports.XmlStreamProcessor = void 0;
4
+ const tools_1 = require("../common/constants/tools");
5
+ const string_1 = require("../common/util/string");
6
+ const picocolors_1 = require("picocolors");
7
+ /**
8
+ * Formats a tag name for display in the terminal
9
+ * @param tagName The name of the tag to format
10
+ * @returns Formatted tag name with proper styling
11
+ */
12
+ const formatTagName = (tagName) => {
13
+ return `\n[${(0, picocolors_1.bold)((0, string_1.snakeToTitleCase)(tagName))}] `;
14
+ };
15
+ /**
16
+ * XmlStreamProcessor handles XML tags that may be split across multiple chunks.
17
+ * It processes tool-related XML tags and executes callbacks when nested tags are completed.
18
+ * The processor maintains a complete response buffer and processes character by character
19
+ * to ensure tags are fully completed before outputting content.
20
+ */
21
+ class XmlStreamProcessor {
22
+ tagStack = [];
23
+ currentContent = '';
24
+ tagHandlers;
25
+ responseBuffer = '';
26
+ lastOutput = '';
27
+ constructor(tagHandlers) {
28
+ this.tagHandlers = tagHandlers;
29
+ }
30
+ /**
31
+ * Process a chunk of text that may contain XML tags
32
+ * @param chunk The new chunk to process
33
+ * @returns Processed text with XML tags handled according to the tag handlers
34
+ */
35
+ process(chunk) {
36
+ // Append new chunk to the response buffer
37
+ this.responseBuffer += chunk;
38
+ // Process the buffer character by character
39
+ let output = '';
40
+ let position = 0;
41
+ let inTag = false;
42
+ let tagName = '';
43
+ let isClosingTag = false;
44
+ // Process each character in the buffer
45
+ while (position < this.responseBuffer.length) {
46
+ const currentChar = this.responseBuffer[position];
47
+ // Check for start of a tag
48
+ if (currentChar === '<') {
49
+ inTag = true;
50
+ tagName = '';
51
+ isClosingTag = false;
52
+ position++;
53
+ // Check if it's a closing tag
54
+ if (position < this.responseBuffer.length &&
55
+ this.responseBuffer[position] === '/') {
56
+ isClosingTag = true;
57
+ position++;
58
+ }
59
+ // Extract the tag name
60
+ while (position < this.responseBuffer.length &&
61
+ this.responseBuffer[position] !== '>' &&
62
+ this.responseBuffer[position] !== ' ') {
63
+ tagName += this.responseBuffer[position];
64
+ position++;
65
+ }
66
+ // Skip any attributes (not fully supported, just skipping them)
67
+ while (position < this.responseBuffer.length &&
68
+ this.responseBuffer[position] !== '>') {
69
+ position++;
70
+ }
71
+ // Move past the closing '>'
72
+ if (position < this.responseBuffer.length &&
73
+ this.responseBuffer[position] === '>') {
74
+ position++;
75
+ }
76
+ else {
77
+ // We've reached the end of the buffer without finding the closing '>'
78
+ // Reset position to before the tag and wait for more data
79
+ position = this.responseBuffer.indexOf('<');
80
+ inTag = false;
81
+ break;
82
+ }
83
+ // Handle the tag
84
+ if (isClosingTag) {
85
+ // Handle closing tag
86
+ if (this.tagStack.length > 0) {
87
+ const openTag = this.tagStack.pop();
88
+ // If tag names match, process the content
89
+ if (openTag === tagName) {
90
+ // If we're closing a nested tag
91
+ if (this.tagStack.length === 1) {
92
+ const parentTag = this.tagStack[0];
93
+ const handler = this.tagHandlers[parentTag];
94
+ if (handler) {
95
+ const result = handler.onTagEnd(tagName, this.currentContent);
96
+ if (result !== null) {
97
+ output += result;
98
+ }
99
+ }
100
+ }
101
+ // If we're closing the main tag, reset content
102
+ if (this.tagStack.length === 0) {
103
+ this.currentContent = '';
104
+ }
105
+ }
106
+ else {
107
+ // Tag mismatch, push the popped tag back
108
+ if (openTag) {
109
+ this.tagStack.push(openTag);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ else {
115
+ // Handle opening tag - call onTagStart immediately if it exists
116
+ const handler = this.tagHandlers[tagName];
117
+ if (handler && handler.onTagStart && this.tagStack.length === 0) {
118
+ const tagDisplay = handler.onTagStart(tagName);
119
+ if (tagDisplay !== null) {
120
+ output += tagDisplay;
121
+ }
122
+ }
123
+ // Push tag to stack
124
+ this.tagStack.push(tagName);
125
+ // Reset current content if this is a new top-level tag
126
+ if (this.tagStack.length === 1) {
127
+ this.currentContent = '';
128
+ }
129
+ }
130
+ inTag = false;
131
+ }
132
+ else {
133
+ // Regular content
134
+ if (this.tagStack.length > 0) {
135
+ // Inside a tag, add to current content
136
+ this.currentContent += currentChar;
137
+ }
138
+ else {
139
+ // Outside any tag, add directly to output
140
+ output += currentChar;
141
+ }
142
+ position++;
143
+ }
144
+ }
145
+ // If we've processed the entire buffer, update it to only include unprocessed content
146
+ if (position >= this.responseBuffer.length) {
147
+ this.responseBuffer = '';
148
+ }
149
+ else {
150
+ this.responseBuffer = this.responseBuffer.substring(position);
151
+ }
152
+ // Calculate new output since last call
153
+ const newOutput = output.slice(this.lastOutput.length);
154
+ this.lastOutput = output;
155
+ return newOutput;
156
+ }
157
+ /**
158
+ * Reset the processor state after a stream is complete
159
+ * This clears all internal state variables to prepare for a new stream
160
+ */
161
+ reset() {
162
+ this.tagStack = [];
163
+ this.currentContent = '';
164
+ this.responseBuffer = '';
165
+ this.lastOutput = '';
166
+ }
167
+ }
168
+ exports.XmlStreamProcessor = XmlStreamProcessor;
169
+ /**
170
+ * Default tag handlers for common XML tags
171
+ */
172
+ exports.defaultTagHandlers = {
173
+ // Create handlers for each tool in TOOL_LIST
174
+ ...Object.fromEntries(tools_1.TOOL_LIST.map((tool) => [
175
+ tool,
176
+ {
177
+ onTagStart: (tagName) => formatTagName(tagName),
178
+ onTagEnd: (_tagName, _content) => null, // Hide all nested tags by default
179
+ },
180
+ ])),
181
+ add_subgoal: {
182
+ onTagStart: (tagName) => formatTagName(tagName),
183
+ onTagEnd: (tagName, content) => {
184
+ if (tagName === 'objective') {
185
+ return content;
186
+ }
187
+ return null;
188
+ },
189
+ },
190
+ update_subgoal: {
191
+ onTagStart: (tagName) => formatTagName(tagName),
192
+ onTagEnd: (tagName, content) => {
193
+ if (tagName === 'objective') {
194
+ return content;
195
+ }
196
+ return null;
197
+ },
198
+ },
199
+ end_turn: {
200
+ onTagStart: () => null,
201
+ onTagEnd: () => null,
202
+ },
203
+ // Override with specific handlers for tools that need special handling
204
+ write_file: {
205
+ onTagStart: (tagName) => formatTagName(tagName),
206
+ onTagEnd: (tagName, content) => {
207
+ // hide content tags
208
+ if (tagName === 'path') {
209
+ return content;
210
+ }
211
+ return null;
212
+ },
213
+ },
214
+ run_terminal_command: {
215
+ onTagStart: (tagName) => formatTagName(tagName),
216
+ onTagEnd: (tagName, content) => {
217
+ return content;
218
+ },
219
+ },
220
+ read_files: {
221
+ onTagStart: (tagName) => formatTagName(tagName),
222
+ onTagEnd: (tagName, content) => {
223
+ // Hide paths tag
224
+ if (tagName === 'paths') {
225
+ return content.split('\n').join(',');
226
+ }
227
+ return content;
228
+ },
229
+ },
230
+ find_files: {
231
+ onTagStart: (tagName) => formatTagName(tagName),
232
+ onTagEnd: (tagName, content) => {
233
+ return content;
234
+ },
235
+ },
236
+ code_search: {
237
+ onTagStart: (tagName) => formatTagName(tagName),
238
+ onTagEnd: (tagName, content) => {
239
+ // Hide pattern tag
240
+ if (tagName === 'pattern') {
241
+ return null;
242
+ }
243
+ return content;
244
+ },
245
+ },
246
+ };
247
+ //# sourceMappingURL=process-xml-chunks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-xml-chunks.js","sourceRoot":"","sources":["../../src/utils/process-xml-chunks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class Spinner {
2
+ private static instance;
3
+ private loadingInterval;
4
+ private constructor();
5
+ static get(): Spinner;
6
+ start(): void;
7
+ stop(): void;
8
+ restoreCursor(): void;
9
+ log(message: string): void;
10
+ private rewriteLine;
11
+ }