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.
Files changed (43) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +255 -904
  3. package/dist/commands/chat.d.ts +1 -0
  4. package/dist/commands/chat.d.ts.map +1 -1
  5. package/dist/commands/chat.js +106 -8
  6. package/dist/commands/chat.js.map +1 -1
  7. package/dist/core/modes.d.ts +302 -14
  8. package/dist/core/modes.d.ts.map +1 -1
  9. package/dist/core/modes.js +81 -9
  10. package/dist/core/modes.js.map +1 -1
  11. package/dist/core/session-bridge.d.ts +105 -0
  12. package/dist/core/session-bridge.d.ts.map +1 -0
  13. package/dist/core/session-bridge.js +243 -0
  14. package/dist/core/session-bridge.js.map +1 -0
  15. package/dist/core/tools.d.ts +359 -0
  16. package/dist/core/tools.d.ts.map +1 -1
  17. package/dist/core/tools.js +631 -1
  18. package/dist/core/tools.js.map +1 -1
  19. package/dist/index.js +42 -35
  20. package/dist/index.js.map +1 -1
  21. package/dist/tools/browser.d.ts +112 -0
  22. package/dist/tools/browser.d.ts.map +1 -1
  23. package/dist/tools/browser.js +396 -13
  24. package/dist/tools/browser.js.map +1 -1
  25. package/dist/tools/test-generator.d.ts +157 -0
  26. package/dist/tools/test-generator.d.ts.map +1 -0
  27. package/dist/tools/test-generator.js +893 -0
  28. package/dist/tools/test-generator.js.map +1 -0
  29. package/dist/webui/server.d.ts +96 -0
  30. package/dist/webui/server.d.ts.map +1 -0
  31. package/dist/webui/server.js +2132 -0
  32. package/dist/webui/server.js.map +1 -0
  33. package/package.json +30 -14
  34. package/webui-dist/assets/index-BlYSY3Lp.js +338 -0
  35. package/webui-dist/assets/index-BlYSY3Lp.js.map +1 -0
  36. package/webui-dist/assets/index-DS6Gij8T.css +32 -0
  37. package/webui-dist/assets/xterm-BUw9jMN8.js +10 -0
  38. package/webui-dist/assets/xterm-BUw9jMN8.js.map +1 -0
  39. package/webui-dist/assets/xterm-addon-fit-CMYoGiLV.js +2 -0
  40. package/webui-dist/assets/xterm-addon-fit-CMYoGiLV.js.map +1 -0
  41. package/webui-dist/assets/xterm-addon-web-links-mCwMW5Oc.js +2 -0
  42. package/webui-dist/assets/xterm-addon-web-links-mCwMW5Oc.js.map +1 -0
  43. package/webui-dist/index.html +15 -0
@@ -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;
@@ -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;AAI3C,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACpD,QAAQ,IAAI,IAAI,EAAE,CAAC;CACpB;AAED,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAe;IAC9B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,mBAAmB,CAAC,CAAS;gBAGnC,UAAU,GAAE,MAAsB,EAClC,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;IAmBH,OAAO,CAAC,WAAW,CAAsB;IAEzC,OAAO,CAAC,IAAI,EAAE,SAAS;IAMvB;;OAEG;IACH,OAAO,CAAC,UAAU;IASZ,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAsTzD,QAAQ,IAAI,IAAI,EAAE;IAilBlB,OAAO,CAAC,WAAW;YAIL,QAAQ;YA6BR,iBAAiB;YAkBjB,SAAS;YA8BT,QAAQ;YAcR,SAAS;YAeT,gBAAgB;YAchB,YAAY;YAeZ,aAAa;YA8Bb,WAAW;YAaX,UAAU;YAyFV,eAAe;YAUf,UAAU;YAoCV,QAAQ;YAqBR,UAAU;YAkBV,UAAU;IAOxB,OAAO,CAAC,cAAc,CAAa;YAErB,QAAQ;YAoER,aAAa;YAiBb,YAAY;YAgBZ,iBAAiB;YAgBjB,kBAAkB;YAoBlB,mBAAmB;YAqCnB,qBAAqB;YAoDrB,WAAW;YAkBX,YAAY;YAsDZ,cAAc;YAcd,wBAAwB;YAkBxB,QAAQ;YA8DR,SAAS;YAiET,QAAQ;YA4DR,YAAY;CA6B3B"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"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"}