xibecode 0.3.5 → 0.4.3
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.
- package/LICENSE +201 -0
- package/README.md +255 -904
- package/dist/commands/chat.d.ts +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +106 -8
- package/dist/commands/chat.js.map +1 -1
- package/dist/core/modes.d.ts +302 -14
- package/dist/core/modes.d.ts.map +1 -1
- package/dist/core/modes.js +81 -9
- package/dist/core/modes.js.map +1 -1
- package/dist/core/session-bridge.d.ts +105 -0
- package/dist/core/session-bridge.d.ts.map +1 -0
- package/dist/core/session-bridge.js +243 -0
- package/dist/core/session-bridge.js.map +1 -0
- package/dist/core/tools.d.ts +359 -0
- package/dist/core/tools.d.ts.map +1 -1
- package/dist/core/tools.js +631 -1
- package/dist/core/tools.js.map +1 -1
- package/dist/index.js +42 -35
- package/dist/index.js.map +1 -1
- package/dist/tools/browser.d.ts +112 -0
- package/dist/tools/browser.d.ts.map +1 -1
- package/dist/tools/browser.js +396 -13
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/test-generator.d.ts +157 -0
- package/dist/tools/test-generator.d.ts.map +1 -0
- package/dist/tools/test-generator.js +893 -0
- package/dist/tools/test-generator.js.map +1 -0
- package/dist/webui/server.d.ts +96 -0
- package/dist/webui/server.d.ts.map +1 -0
- package/dist/webui/server.js +2132 -0
- package/dist/webui/server.js.map +1 -0
- package/package.json +30 -14
- package/webui-dist/assets/index-BlYSY3Lp.js +338 -0
- package/webui-dist/assets/index-BlYSY3Lp.js.map +1 -0
- package/webui-dist/assets/index-DS6Gij8T.css +32 -0
- package/webui-dist/assets/xterm-BUw9jMN8.js +10 -0
- package/webui-dist/assets/xterm-BUw9jMN8.js.map +1 -0
- package/webui-dist/assets/xterm-addon-fit-CMYoGiLV.js +2 -0
- package/webui-dist/assets/xterm-addon-fit-CMYoGiLV.js.map +1 -0
- package/webui-dist/assets/xterm-addon-web-links-mCwMW5Oc.js +2 -0
- package/webui-dist/assets/xterm-addon-web-links-mCwMW5Oc.js.map +1 -0
- package/webui-dist/index.html +15 -0
package/dist/core/tools.d.ts
CHANGED
|
@@ -4,10 +4,73 @@ import { PluginManager } from './plugins.js';
|
|
|
4
4
|
import { MCPClientManager } from './mcp-client.js';
|
|
5
5
|
import { NeuralMemory } from './memory.js';
|
|
6
6
|
import { SkillManager } from './skills.js';
|
|
7
|
+
/**
|
|
8
|
+
* Interface for tool executors
|
|
9
|
+
*
|
|
10
|
+
* @category Tool Execution
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
*/
|
|
7
13
|
export interface ToolExecutor {
|
|
14
|
+
/**
|
|
15
|
+
* Execute a tool with given input
|
|
16
|
+
*
|
|
17
|
+
* @param toolName - Name of the tool to execute
|
|
18
|
+
* @param input - Tool input parameters
|
|
19
|
+
* @returns Tool execution result
|
|
20
|
+
*/
|
|
8
21
|
execute(toolName: string, input: any): Promise<any>;
|
|
22
|
+
/**
|
|
23
|
+
* Get all available tools
|
|
24
|
+
*
|
|
25
|
+
* @returns Array of tool definitions
|
|
26
|
+
*/
|
|
9
27
|
getTools(): Tool[];
|
|
10
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Main tool executor for XibeCode agent
|
|
31
|
+
*
|
|
32
|
+
* Provides 95+ tools across 8 categories for autonomous coding operations:
|
|
33
|
+
* - File Operations: read, write, edit, delete files
|
|
34
|
+
* - Git Operations: status, diff, commit, reset
|
|
35
|
+
* - Shell Commands: run commands, interactive shell
|
|
36
|
+
* - Web Operations: search, fetch URLs, HTTP requests
|
|
37
|
+
* - Context Operations: code search, file finding, context discovery
|
|
38
|
+
* - Test Operations: run tests, get results
|
|
39
|
+
* - Memory Operations: update neural memory
|
|
40
|
+
* - Browser Operations: web automation with Playwright
|
|
41
|
+
*
|
|
42
|
+
* Features:
|
|
43
|
+
* - Mode-based tool permissions
|
|
44
|
+
* - Safety checking for dangerous operations
|
|
45
|
+
* - Plugin support for custom tools
|
|
46
|
+
* - MCP integration for external tools
|
|
47
|
+
* - Dry-run mode for safe previews
|
|
48
|
+
* - Backup system for file operations
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const executor = new CodingToolExecutor('/project', {
|
|
53
|
+
* dryRun: false,
|
|
54
|
+
* pluginManager,
|
|
55
|
+
* memory
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* executor.setMode('agent');
|
|
59
|
+
*
|
|
60
|
+
* // Read a file
|
|
61
|
+
* const result = await executor.execute('read_file', { path: 'src/app.ts' });
|
|
62
|
+
*
|
|
63
|
+
* // Edit a file
|
|
64
|
+
* await executor.execute('edit_file', {
|
|
65
|
+
* path: 'src/app.ts',
|
|
66
|
+
* search: 'old code',
|
|
67
|
+
* replace: 'new code'
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @category Tool Execution
|
|
72
|
+
* @since 0.1.0
|
|
73
|
+
*/
|
|
11
74
|
export declare class CodingToolExecutor implements ToolExecutor {
|
|
12
75
|
private workingDir;
|
|
13
76
|
private contextManager;
|
|
@@ -23,6 +86,37 @@ export declare class CodingToolExecutor implements ToolExecutor {
|
|
|
23
86
|
private platform;
|
|
24
87
|
private dryRun;
|
|
25
88
|
private testCommandOverride?;
|
|
89
|
+
/**
|
|
90
|
+
* Creates a new CodingToolExecutor instance
|
|
91
|
+
*
|
|
92
|
+
* Initializes all tool subsystems including file operations, git utilities,
|
|
93
|
+
* test runner, safety checker, plugin manager, and optional MCP integration.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* // Basic usage
|
|
98
|
+
* const executor = new CodingToolExecutor('/project');
|
|
99
|
+
*
|
|
100
|
+
* // With options
|
|
101
|
+
* const executor = new CodingToolExecutor('/project', {
|
|
102
|
+
* dryRun: true,
|
|
103
|
+
* pluginManager: new PluginManager(),
|
|
104
|
+
* memory: new NeuralMemory('./.xibecode/memory.json')
|
|
105
|
+
* });
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @param workingDir - Working directory for file operations (default: process.cwd())
|
|
109
|
+
* @param options - Configuration options
|
|
110
|
+
* @param options.dryRun - Enable dry-run mode (preview changes without executing)
|
|
111
|
+
* @param options.testCommandOverride - Override test command detection
|
|
112
|
+
* @param options.pluginManager - Plugin manager instance for custom tools
|
|
113
|
+
* @param options.mcpClientManager - MCP client manager for external tool integration
|
|
114
|
+
* @param options.memory - Neural memory instance for persistent learning
|
|
115
|
+
* @param options.skillManager - Skill manager for loading custom workflows
|
|
116
|
+
*
|
|
117
|
+
* @category Constructor
|
|
118
|
+
* @since 0.1.0
|
|
119
|
+
*/
|
|
26
120
|
constructor(workingDir?: string, options?: {
|
|
27
121
|
dryRun?: boolean;
|
|
28
122
|
testCommandOverride?: string;
|
|
@@ -32,23 +126,284 @@ export declare class CodingToolExecutor implements ToolExecutor {
|
|
|
32
126
|
skillManager?: SkillManager;
|
|
33
127
|
});
|
|
34
128
|
private currentMode;
|
|
129
|
+
/**
|
|
130
|
+
* Set the current agent mode
|
|
131
|
+
*
|
|
132
|
+
* Changes the tool executor's operating mode, which affects:
|
|
133
|
+
* - Tool permissions (what tools are available)
|
|
134
|
+
* - Dry-run default (some modes preview changes by default)
|
|
135
|
+
* - Risk tolerance for operations
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* executor.setMode('plan'); // Read-only mode
|
|
140
|
+
* executor.setMode('agent'); // Full capabilities
|
|
141
|
+
* executor.setMode('security'); // Security-focused mode
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* @param mode - Agent mode to switch to
|
|
145
|
+
*
|
|
146
|
+
* @category Mode Management
|
|
147
|
+
* @since 0.1.0
|
|
148
|
+
*/
|
|
35
149
|
setMode(mode: AgentMode): void;
|
|
36
150
|
/**
|
|
37
151
|
* Safely parse tool input - handles string JSON, null, undefined
|
|
152
|
+
*
|
|
153
|
+
* @param input - Raw tool input (string, object, null, or undefined)
|
|
154
|
+
* @returns Parsed input as object
|
|
155
|
+
*
|
|
156
|
+
* @internal
|
|
38
157
|
*/
|
|
39
158
|
private parseInput;
|
|
159
|
+
/**
|
|
160
|
+
* Execute a tool with given input
|
|
161
|
+
*
|
|
162
|
+
* Main tool execution pipeline that:
|
|
163
|
+
* 1. Checks tool permissions for current mode
|
|
164
|
+
* 2. Routes MCP tools to external servers
|
|
165
|
+
* 3. Routes plugin tools to plugin manager
|
|
166
|
+
* 4. Performs safety assessment for risky operations
|
|
167
|
+
* 5. Executes the tool implementation
|
|
168
|
+
* 6. Returns structured result
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* // Read a file
|
|
173
|
+
* const result = await executor.execute('read_file', {
|
|
174
|
+
* path: 'src/app.ts'
|
|
175
|
+
* });
|
|
176
|
+
*
|
|
177
|
+
* if (result.success) {
|
|
178
|
+
* console.log(result.content);
|
|
179
|
+
* }
|
|
180
|
+
*
|
|
181
|
+
* // Edit a file
|
|
182
|
+
* await executor.execute('edit_file', {
|
|
183
|
+
* path: 'src/app.ts',
|
|
184
|
+
* search: 'const old = 1;',
|
|
185
|
+
* replace: 'const new = 2;'
|
|
186
|
+
* });
|
|
187
|
+
*
|
|
188
|
+
* // Run a command
|
|
189
|
+
* await executor.execute('run_command', {
|
|
190
|
+
* command: 'npm test'
|
|
191
|
+
* });
|
|
192
|
+
* ```
|
|
193
|
+
*
|
|
194
|
+
* @param toolName - Name of the tool to execute (e.g., 'read_file', 'edit_file')
|
|
195
|
+
* @param input - Tool input parameters (varies by tool)
|
|
196
|
+
* @returns Tool execution result with success/error status
|
|
197
|
+
*
|
|
198
|
+
* @see {@link getTools} for list of available tools
|
|
199
|
+
* @category Tool Execution
|
|
200
|
+
* @since 0.1.0
|
|
201
|
+
*/
|
|
40
202
|
execute(toolName: string, input: any): Promise<any>;
|
|
203
|
+
/**
|
|
204
|
+
* Get all available tools for the agent
|
|
205
|
+
*
|
|
206
|
+
* Returns an array of tool definitions including core tools, plugin tools,
|
|
207
|
+
* and MCP tools. Each tool includes:
|
|
208
|
+
* - name: Tool identifier
|
|
209
|
+
* - description: What the tool does (for Claude AI)
|
|
210
|
+
* - input_schema: JSON Schema for input validation
|
|
211
|
+
*
|
|
212
|
+
* Tools are grouped by category:
|
|
213
|
+
* - File Operations: read_file, write_file, edit_file, etc.
|
|
214
|
+
* - Git Operations: get_git_status, git_commit, etc.
|
|
215
|
+
* - Shell Commands: run_command, interactive_shell
|
|
216
|
+
* - Web Operations: web_search, fetch_url, http_request
|
|
217
|
+
* - Context Operations: grep_code, search_files, get_context
|
|
218
|
+
* - Test Operations: run_tests, get_test_status
|
|
219
|
+
* - Memory Operations: update_memory
|
|
220
|
+
* - Browser Operations: open_browser, browser_click, etc.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* const tools = executor.getTools();
|
|
225
|
+
* console.log(`${tools.length} tools available`);
|
|
226
|
+
*
|
|
227
|
+
* // Find a specific tool
|
|
228
|
+
* const readFile = tools.find(t => t.name === 'read_file');
|
|
229
|
+
* console.log(readFile.description);
|
|
230
|
+
* ```
|
|
231
|
+
*
|
|
232
|
+
* @returns Array of tool definitions with schemas
|
|
233
|
+
*
|
|
234
|
+
* @category Tool Management
|
|
235
|
+
* @since 0.1.0
|
|
236
|
+
*/
|
|
41
237
|
getTools(): Tool[];
|
|
238
|
+
/**
|
|
239
|
+
* Resolve relative file path to absolute path
|
|
240
|
+
*
|
|
241
|
+
* @param filePath - Relative or absolute file path
|
|
242
|
+
* @returns Absolute path resolved against working directory
|
|
243
|
+
*
|
|
244
|
+
* @internal
|
|
245
|
+
*/
|
|
42
246
|
private resolvePath;
|
|
247
|
+
/**
|
|
248
|
+
* Read file contents
|
|
249
|
+
*
|
|
250
|
+
* Reads a file from the filesystem. Supports partial reading by line range
|
|
251
|
+
* to avoid token limits for large files. Always returns UTF-8 encoded text.
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```typescript
|
|
255
|
+
* // Read entire file
|
|
256
|
+
* const result = await executor.execute('read_file', {
|
|
257
|
+
* path: 'src/app.ts'
|
|
258
|
+
* });
|
|
259
|
+
*
|
|
260
|
+
* // Read specific line range
|
|
261
|
+
* const partial = await executor.execute('read_file', {
|
|
262
|
+
* path: 'src/large-file.ts',
|
|
263
|
+
* start_line: 100,
|
|
264
|
+
* end_line: 200
|
|
265
|
+
* });
|
|
266
|
+
* ```
|
|
267
|
+
*
|
|
268
|
+
* @param filePath - Path to file (relative to working directory)
|
|
269
|
+
* @param startLine - Optional start line for partial read (1-indexed)
|
|
270
|
+
* @param endLine - Optional end line for partial read (inclusive)
|
|
271
|
+
* @returns Object with path, content, and line info
|
|
272
|
+
*
|
|
273
|
+
* @throws {FileNotFoundError} If file doesn't exist
|
|
274
|
+
* @throws {PermissionError} If file is not readable
|
|
275
|
+
*
|
|
276
|
+
* @category File Operations
|
|
277
|
+
* @mode All modes
|
|
278
|
+
* @since 0.1.0
|
|
279
|
+
*/
|
|
43
280
|
private readFile;
|
|
44
281
|
private readMultipleFiles;
|
|
282
|
+
/**
|
|
283
|
+
* Write content to file
|
|
284
|
+
*
|
|
285
|
+
* Creates or overwrites a file with the given content. Automatically creates
|
|
286
|
+
* parent directories if they don't exist. Creates a backup before overwriting
|
|
287
|
+
* existing files.
|
|
288
|
+
*
|
|
289
|
+
* In dry-run mode, shows what would be written without making changes.
|
|
290
|
+
*
|
|
291
|
+
* @example
|
|
292
|
+
* ```typescript
|
|
293
|
+
* await executor.execute('write_file', {
|
|
294
|
+
* path: 'src/new-file.ts',
|
|
295
|
+
* content: 'export const hello = "world";'
|
|
296
|
+
* });
|
|
297
|
+
* ```
|
|
298
|
+
*
|
|
299
|
+
* @param filePath - Path to file (relative to working directory)
|
|
300
|
+
* @param content - File content to write
|
|
301
|
+
* @returns Object with success status, path, and file info
|
|
302
|
+
*
|
|
303
|
+
* @throws {PermissionError} If directory is not writable
|
|
304
|
+
*
|
|
305
|
+
* @category File Operations
|
|
306
|
+
* @mode Write modes (agent, engineer, architect)
|
|
307
|
+
* @since 0.1.0
|
|
308
|
+
*/
|
|
45
309
|
private writeFile;
|
|
310
|
+
/**
|
|
311
|
+
* Edit file using search and replace
|
|
312
|
+
*
|
|
313
|
+
* Performs intelligent search-and-replace editing using the FileEditor's
|
|
314
|
+
* smart edit strategy. Searches for exact string matches and replaces them.
|
|
315
|
+
* Automatically handles multi-line strings and special characters.
|
|
316
|
+
*
|
|
317
|
+
* Creates a backup before editing. In dry-run mode, shows what would be
|
|
318
|
+
* changed without modifying the file.
|
|
319
|
+
*
|
|
320
|
+
* @example
|
|
321
|
+
* ```typescript
|
|
322
|
+
* // Replace first occurrence
|
|
323
|
+
* await executor.execute('edit_file', {
|
|
324
|
+
* path: 'src/app.ts',
|
|
325
|
+
* search: 'const oldValue = 1;',
|
|
326
|
+
* replace: 'const newValue = 2;'
|
|
327
|
+
* });
|
|
328
|
+
*
|
|
329
|
+
* // Replace all occurrences
|
|
330
|
+
* await executor.execute('edit_file', {
|
|
331
|
+
* path: 'src/app.ts',
|
|
332
|
+
* search: 'oldName',
|
|
333
|
+
* replace: 'newName',
|
|
334
|
+
* all: true
|
|
335
|
+
* });
|
|
336
|
+
* ```
|
|
337
|
+
*
|
|
338
|
+
* @param filePath - Path to file (relative to working directory)
|
|
339
|
+
* @param search - Exact string to search for (can be multi-line)
|
|
340
|
+
* @param replace - Replacement string
|
|
341
|
+
* @param all - Replace all occurrences (default: false, replaces first only)
|
|
342
|
+
* @returns Object with success status, changes made, and diff
|
|
343
|
+
*
|
|
344
|
+
* @throws {FileNotFoundError} If file doesn't exist
|
|
345
|
+
* @throws {SearchNotFoundError} If search string not found
|
|
346
|
+
*
|
|
347
|
+
* @category File Operations
|
|
348
|
+
* @mode Write modes (agent, engineer, architect)
|
|
349
|
+
* @since 0.1.0
|
|
350
|
+
*/
|
|
46
351
|
private editFile;
|
|
47
352
|
private editLines;
|
|
48
353
|
private verifiedEditFile;
|
|
49
354
|
private insertAtLine;
|
|
50
355
|
private listDirectory;
|
|
51
356
|
private searchFiles;
|
|
357
|
+
/**
|
|
358
|
+
* Execute a shell command
|
|
359
|
+
*
|
|
360
|
+
* Runs a command in a shell (bash on Unix, PowerShell on Windows).
|
|
361
|
+
* Captures stdout and stderr. Supports stdin input for interactive commands.
|
|
362
|
+
* Automatically times out after 120 seconds (configurable).
|
|
363
|
+
*
|
|
364
|
+
* Safety checks are performed before execution to block dangerous commands
|
|
365
|
+
* like `rm -rf /`, malicious scripts, and other high-risk operations.
|
|
366
|
+
*
|
|
367
|
+
* @example
|
|
368
|
+
* ```typescript
|
|
369
|
+
* // Run a simple command
|
|
370
|
+
* const result = await executor.execute('run_command', {
|
|
371
|
+
* command: 'npm test'
|
|
372
|
+
* });
|
|
373
|
+
*
|
|
374
|
+
* // Run with specific working directory
|
|
375
|
+
* await executor.execute('run_command', {
|
|
376
|
+
* command: 'ls -la',
|
|
377
|
+
* cwd: './src'
|
|
378
|
+
* });
|
|
379
|
+
*
|
|
380
|
+
* // Run with stdin input
|
|
381
|
+
* await executor.execute('run_command', {
|
|
382
|
+
* command: 'cat > output.txt',
|
|
383
|
+
* input: 'Hello World'
|
|
384
|
+
* });
|
|
385
|
+
*
|
|
386
|
+
* // Run with custom timeout
|
|
387
|
+
* await executor.execute('run_command', {
|
|
388
|
+
* command: 'npm install',
|
|
389
|
+
* timeout: 300 // 5 minutes
|
|
390
|
+
* });
|
|
391
|
+
* ```
|
|
392
|
+
*
|
|
393
|
+
* @param command - Shell command to execute
|
|
394
|
+
* @param cwd - Working directory (default: executor's working directory)
|
|
395
|
+
* @param input - Optional stdin input for interactive commands
|
|
396
|
+
* @param timeout - Timeout in seconds (default: 120)
|
|
397
|
+
* @returns Object with stdout, stderr, exit code, and execution time
|
|
398
|
+
*
|
|
399
|
+
* @throws {SafetyError} If command is blocked by safety checker
|
|
400
|
+
* @throws {TimeoutError} If command exceeds timeout
|
|
401
|
+
*
|
|
402
|
+
* @category Shell Commands
|
|
403
|
+
* @mode Command modes (agent, engineer, debugger, tester)
|
|
404
|
+
* @risk-level High
|
|
405
|
+
* @since 0.1.0
|
|
406
|
+
*/
|
|
52
407
|
private runCommand;
|
|
53
408
|
private createDirectory;
|
|
54
409
|
private deleteFile;
|
|
@@ -58,6 +413,10 @@ export declare class CodingToolExecutor implements ToolExecutor {
|
|
|
58
413
|
private lastTestResult;
|
|
59
414
|
private runTests;
|
|
60
415
|
private getTestStatus;
|
|
416
|
+
private testGenerator;
|
|
417
|
+
private getTestGenerator;
|
|
418
|
+
private generateTests;
|
|
419
|
+
private analyzeCodeForTests;
|
|
61
420
|
private getGitStatus;
|
|
62
421
|
private getGitDiffSummary;
|
|
63
422
|
private getGitChangedFiles;
|
package/dist/core/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAA8B,MAAM,YAAY,CAAC;AAKnE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"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"}
|