@gracefultools/astrid-sdk 0.7.13 → 0.7.15

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 (33) hide show
  1. package/dist/bin/cli.js +102 -21
  2. package/dist/bin/cli.js.map +1 -1
  3. package/dist/executors/shared/index.d.ts +9 -0
  4. package/dist/executors/shared/index.d.ts.map +1 -0
  5. package/dist/executors/shared/index.js +21 -0
  6. package/dist/executors/shared/index.js.map +1 -0
  7. package/dist/executors/shared/tool-executor.d.ts +52 -0
  8. package/dist/executors/shared/tool-executor.d.ts.map +1 -0
  9. package/dist/executors/shared/tool-executor.js +262 -0
  10. package/dist/executors/shared/tool-executor.js.map +1 -0
  11. package/dist/executors/shared/tool-schemas.d.ts +61 -0
  12. package/dist/executors/shared/tool-schemas.d.ts.map +1 -0
  13. package/dist/executors/shared/tool-schemas.js +135 -0
  14. package/dist/executors/shared/tool-schemas.js.map +1 -0
  15. package/dist/executors/terminal-base.d.ts +100 -4
  16. package/dist/executors/terminal-base.d.ts.map +1 -1
  17. package/dist/executors/terminal-base.js +406 -0
  18. package/dist/executors/terminal-base.js.map +1 -1
  19. package/dist/executors/terminal-claude.d.ts +23 -4
  20. package/dist/executors/terminal-claude.d.ts.map +1 -1
  21. package/dist/executors/terminal-claude.js +190 -62
  22. package/dist/executors/terminal-claude.js.map +1 -1
  23. package/dist/executors/terminal-executors.test.js +190 -0
  24. package/dist/executors/terminal-executors.test.js.map +1 -1
  25. package/dist/executors/terminal-gemini.d.ts +4 -3
  26. package/dist/executors/terminal-gemini.d.ts.map +1 -1
  27. package/dist/executors/terminal-gemini.js +87 -191
  28. package/dist/executors/terminal-gemini.js.map +1 -1
  29. package/dist/executors/terminal-openai.d.ts +4 -3
  30. package/dist/executors/terminal-openai.d.ts.map +1 -1
  31. package/dist/executors/terminal-openai.js +87 -212
  32. package/dist/executors/terminal-openai.js.map +1 -1
  33. package/package.json +1 -1
@@ -260,6 +260,147 @@ const terminal_base_js_1 = require("./terminal-base.js");
260
260
  });
261
261
  });
262
262
  // ============================================================================
263
+ // OUTPUT PARSING TESTS
264
+ // ============================================================================
265
+ (0, vitest_1.describe)('Output parsing for plans and questions', () => {
266
+ (0, vitest_1.describe)('createParserState', () => {
267
+ (0, vitest_1.it)('creates a fresh parser state', () => {
268
+ const state = (0, terminal_base_js_1.createParserState)();
269
+ (0, vitest_1.expect)(state.buffer).toBe('');
270
+ (0, vitest_1.expect)(state.lastPlanPosted).toBe(0);
271
+ (0, vitest_1.expect)(state.lastProgressPosted).toBe(0);
272
+ (0, vitest_1.expect)(state.lastQuestionPosted).toBe(0);
273
+ (0, vitest_1.expect)(state.postedPlans.size).toBe(0);
274
+ (0, vitest_1.expect)(state.postedQuestions.size).toBe(0);
275
+ });
276
+ });
277
+ (0, vitest_1.describe)('parseOutputChunk', () => {
278
+ (0, vitest_1.it)('detects plan headers in output', () => {
279
+ const state = (0, terminal_base_js_1.createParserState)();
280
+ const output = `## Implementation Plan
281
+
282
+ 1. First, I'll analyze the codebase
283
+ 2. Then, I'll make the necessary changes
284
+ 3. Finally, I'll run the tests
285
+
286
+ `;
287
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(output, state);
288
+ (0, vitest_1.expect)(detected.length).toBeGreaterThan(0);
289
+ (0, vitest_1.expect)(detected.some(d => d.type === 'plan')).toBe(true);
290
+ });
291
+ (0, vitest_1.it)('detects questions in output', () => {
292
+ const state = (0, terminal_base_js_1.createParserState)();
293
+ const output = `Before I proceed, I have a question.
294
+
295
+ Do you want me to use the existing database schema or create a new one?
296
+
297
+ `;
298
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(output, state);
299
+ (0, vitest_1.expect)(detected.some(d => d.type === 'question')).toBe(true);
300
+ });
301
+ (0, vitest_1.it)('detects progress updates in output', () => {
302
+ const state = (0, terminal_base_js_1.createParserState)();
303
+ const output = `Creating file src/components/Button.tsx
304
+
305
+ `;
306
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(output, state);
307
+ (0, vitest_1.expect)(detected.some(d => d.type === 'progress')).toBe(true);
308
+ });
309
+ (0, vitest_1.it)('detects PR created in output', () => {
310
+ const state = (0, terminal_base_js_1.createParserState)();
311
+ const output = `PR created at https://github.com/owner/repo/pull/123
312
+
313
+ `;
314
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(output, state);
315
+ (0, vitest_1.expect)(detected.some(d => d.type === 'pr_created')).toBe(true);
316
+ const prItem = detected.find(d => d.type === 'pr_created');
317
+ (0, vitest_1.expect)(prItem?.content).toBe('https://github.com/owner/repo/pull/123');
318
+ });
319
+ (0, vitest_1.it)('ignores short chunks', () => {
320
+ const state = (0, terminal_base_js_1.createParserState)();
321
+ const output = `OK
322
+
323
+ `;
324
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(output, state);
325
+ (0, vitest_1.expect)(detected.length).toBe(0);
326
+ });
327
+ (0, vitest_1.it)('deduplicates repeated plans', () => {
328
+ const state = (0, terminal_base_js_1.createParserState)();
329
+ const plan = `## Implementation Plan
330
+
331
+ Here is my implementation plan for this task.
332
+
333
+ `;
334
+ // First call should detect the plan
335
+ const first = (0, terminal_base_js_1.parseOutputChunk)(plan, state);
336
+ (0, vitest_1.expect)(first.some(d => d.type === 'plan')).toBe(true);
337
+ // Second call with same content should not duplicate
338
+ const second = (0, terminal_base_js_1.parseOutputChunk)(plan, state);
339
+ (0, vitest_1.expect)(second.filter(d => d.type === 'plan').length).toBe(0);
340
+ });
341
+ (0, vitest_1.it)('accumulates partial chunks in buffer', () => {
342
+ const state = (0, terminal_base_js_1.createParserState)();
343
+ // Partial chunk (no double newline)
344
+ (0, terminal_base_js_1.parseOutputChunk)('## Plan\nThis is the start of a plan', state);
345
+ (0, vitest_1.expect)(state.buffer.length).toBeGreaterThan(0);
346
+ // Complete the chunk
347
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(' and here is the rest with enough content.\n\n', state);
348
+ // Buffer should be processed
349
+ (0, vitest_1.expect)(state.buffer).toBe('');
350
+ });
351
+ (0, vitest_1.it)('respects rate limiting for progress', () => {
352
+ const state = (0, terminal_base_js_1.createParserState)();
353
+ state.lastProgressPosted = Date.now(); // Just posted
354
+ const output = `Creating file src/test.ts
355
+
356
+ `;
357
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(output, state);
358
+ // Should not detect progress because of rate limit
359
+ (0, vitest_1.expect)(detected.filter(d => d.type === 'progress').length).toBe(0);
360
+ });
361
+ });
362
+ (0, vitest_1.describe)('formatContentAsComment', () => {
363
+ (0, vitest_1.it)('formats plan content', () => {
364
+ const content = {
365
+ type: 'plan',
366
+ content: 'My implementation plan here',
367
+ };
368
+ const comment = (0, terminal_base_js_1.formatContentAsComment)(content, 'Claude');
369
+ (0, vitest_1.expect)(comment).toContain("**Claude's Plan**");
370
+ (0, vitest_1.expect)(comment).toContain('My implementation plan here');
371
+ (0, vitest_1.expect)(comment).toContain('Planning in progress');
372
+ });
373
+ (0, vitest_1.it)('formats question content', () => {
374
+ const content = {
375
+ type: 'question',
376
+ content: 'Do you want me to use TypeScript?',
377
+ };
378
+ const comment = (0, terminal_base_js_1.formatContentAsComment)(content, 'OpenAI');
379
+ (0, vitest_1.expect)(comment).toContain('**OpenAI has a question**');
380
+ (0, vitest_1.expect)(comment).toContain('Do you want me to use TypeScript?');
381
+ (0, vitest_1.expect)(comment).toContain('reply to this comment');
382
+ });
383
+ (0, vitest_1.it)('formats progress content', () => {
384
+ const content = {
385
+ type: 'progress',
386
+ content: 'Running tests...',
387
+ };
388
+ const comment = (0, terminal_base_js_1.formatContentAsComment)(content, 'Gemini');
389
+ (0, vitest_1.expect)(comment).toContain('**Progress Update**');
390
+ (0, vitest_1.expect)(comment).toContain('Running tests...');
391
+ });
392
+ (0, vitest_1.it)('formats PR created content', () => {
393
+ const content = {
394
+ type: 'pr_created',
395
+ content: 'https://github.com/owner/repo/pull/123',
396
+ };
397
+ const comment = (0, terminal_base_js_1.formatContentAsComment)(content);
398
+ (0, vitest_1.expect)(comment).toContain('**Pull Request Created**');
399
+ (0, vitest_1.expect)(comment).toContain('https://github.com/owner/repo/pull/123');
400
+ });
401
+ });
402
+ });
403
+ // ============================================================================
263
404
  // INTERFACE COMPLIANCE TESTS
264
405
  // ============================================================================
265
406
  (0, vitest_1.describe)('TerminalExecutor interface compliance', () => {
@@ -276,4 +417,53 @@ const terminal_base_js_1 = require("./terminal-base.js");
276
417
  }
277
418
  });
278
419
  });
420
+ // ============================================================================
421
+ // GIT WORKTREE TESTS
422
+ // ============================================================================
423
+ const terminal_base_js_2 = require("./terminal-base.js");
424
+ (0, vitest_1.describe)('Git worktree configuration', () => {
425
+ const originalEnv = process.env;
426
+ (0, vitest_1.beforeEach)(() => {
427
+ process.env = { ...originalEnv };
428
+ });
429
+ (0, vitest_1.afterEach)(() => {
430
+ process.env = originalEnv;
431
+ });
432
+ (0, vitest_1.describe)('getWorktreeConfig', () => {
433
+ (0, vitest_1.it)('returns default config when no env vars set', () => {
434
+ delete process.env.ASTRID_AGENT_WORKTREE;
435
+ delete process.env.ASTRID_AGENT_WORKTREE_DIR;
436
+ delete process.env.ASTRID_AGENT_WORKTREE_CLEANUP;
437
+ const config = (0, terminal_base_js_2.getWorktreeConfig)();
438
+ (0, vitest_1.expect)(config.enabled).toBe(true); // Default is enabled
439
+ (0, vitest_1.expect)(config.baseDir).toBe('/tmp/astrid-worktrees');
440
+ (0, vitest_1.expect)(config.autoCleanup).toBe(true);
441
+ });
442
+ (0, vitest_1.it)('respects ASTRID_AGENT_WORKTREE=false to disable', () => {
443
+ process.env.ASTRID_AGENT_WORKTREE = 'false';
444
+ const config = (0, terminal_base_js_2.getWorktreeConfig)();
445
+ (0, vitest_1.expect)(config.enabled).toBe(false);
446
+ });
447
+ (0, vitest_1.it)('respects custom worktree directory', () => {
448
+ process.env.ASTRID_AGENT_WORKTREE_DIR = '/custom/worktrees';
449
+ const config = (0, terminal_base_js_2.getWorktreeConfig)();
450
+ (0, vitest_1.expect)(config.baseDir).toBe('/custom/worktrees');
451
+ });
452
+ (0, vitest_1.it)('respects cleanup setting', () => {
453
+ process.env.ASTRID_AGENT_WORKTREE_CLEANUP = 'false';
454
+ const config = (0, terminal_base_js_2.getWorktreeConfig)();
455
+ (0, vitest_1.expect)(config.autoCleanup).toBe(false);
456
+ });
457
+ });
458
+ (0, vitest_1.describe)('shouldUseWorktree', () => {
459
+ (0, vitest_1.it)('returns true by default', () => {
460
+ delete process.env.ASTRID_AGENT_WORKTREE;
461
+ (0, vitest_1.expect)((0, terminal_base_js_2.shouldUseWorktree)()).toBe(true);
462
+ });
463
+ (0, vitest_1.it)('returns false when disabled via env var', () => {
464
+ process.env.ASTRID_AGENT_WORKTREE = 'false';
465
+ (0, vitest_1.expect)((0, terminal_base_js_2.shouldUseWorktree)()).toBe(false);
466
+ });
467
+ });
468
+ });
279
469
  //# sourceMappingURL=terminal-executors.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-executors.test.js","sourceRoot":"","sources":["../../src/executors/terminal-executors.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-executors.test.js","sourceRoot":"","sources":["../../src/executors/terminal-executors.test.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * This enables running tasks assigned to gemini@astrid.cc in terminal mode.
6
6
  */
7
7
  import type { Session } from '../server/session-manager.js';
8
- import type { TerminalExecutor, TerminalExecutionResult, TerminalTaskContext, TerminalProgressCallback, ParsedOutput } from './terminal-base.js';
8
+ import type { TerminalExecutor, TerminalExecutionResult, TerminalTaskContext, TerminalExecutorCallbacks, ParsedOutput } from './terminal-base.js';
9
9
  export interface TerminalGeminiOptions {
10
10
  apiKey?: string;
11
11
  model?: string;
@@ -33,13 +33,14 @@ export declare class TerminalGeminiExecutor implements TerminalExecutor {
33
33
  private buildSystemPrompt;
34
34
  /**
35
35
  * Start a new session to process a task
36
+ * Uses git worktree isolation when enabled (default) to protect the main working directory
36
37
  */
37
- startSession(session: Session, prompt?: string, context?: TerminalTaskContext, onProgress?: TerminalProgressCallback): Promise<TerminalExecutionResult>;
38
+ startSession(session: Session, prompt?: string, context?: TerminalTaskContext, callbacks?: TerminalExecutorCallbacks): Promise<TerminalExecutionResult>;
38
39
  /**
39
40
  * Resume a session with new input
40
41
  * Note: Gemini doesn't have native session management, so we rebuild context
41
42
  */
42
- resumeSession(session: Session, input: string, context?: TerminalTaskContext, onProgress?: TerminalProgressCallback): Promise<TerminalExecutionResult>;
43
+ resumeSession(session: Session, input: string, context?: TerminalTaskContext, callbacks?: TerminalExecutorCallbacks): Promise<TerminalExecutionResult>;
43
44
  /**
44
45
  * Parse output to extract key information
45
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-gemini.d.ts","sourceRoot":"","sources":["../../src/executors/terminal-gemini.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACb,MAAM,oBAAoB,CAAA;AAiB3B,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AA2QD,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,GAAE,qBAA0B;IAO/C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;YACW,kBAAkB;IAwBhC;;;OAGG;YACW,iBAAiB;IA6B/B;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,mBAAmB,EAC7B,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC,uBAAuB,CAAC;IAgJnC;;;OAGG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,EAC7B,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC,uBAAuB,CAAC;IAUnC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CA0C1C;AAGD,eAAO,MAAM,sBAAsB,wBAA+B,CAAA"}
1
+ {"version":3,"file":"terminal-gemini.d.ts","sourceRoot":"","sources":["../../src/executors/terminal-gemini.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,YAAY,EACb,MAAM,oBAAoB,CAAA;AA8B3B,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAiED,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,GAAE,qBAA0B;IAO/C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;YACW,kBAAkB;IAwBhC;;;OAGG;YACW,iBAAiB;IA6B/B;;;OAGG;IACG,YAAY,CAChB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,mBAAmB,EAC7B,SAAS,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,uBAAuB,CAAC;IAwOnC;;;OAGG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,EAC7B,SAAS,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,uBAAuB,CAAC;IAUnC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CA0C1C;AAGD,eAAO,MAAM,sBAAsB,wBAA+B,CAAA"}
@@ -42,189 +42,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.terminalGeminiExecutor = exports.TerminalGeminiExecutor = void 0;
43
43
  const fs = __importStar(require("fs/promises"));
44
44
  const path = __importStar(require("path"));
45
- const child_process_1 = require("child_process");
46
- const glob_1 = require("glob");
47
45
  const terminal_base_js_1 = require("./terminal-base.js");
48
46
  const agent_config_js_1 = require("../utils/agent-config.js");
49
47
  const agent_workflow_js_1 = require("../config/agent-workflow.js");
50
- // ============================================================================
51
- // TOOL DEFINITIONS (same as gemini.ts)
52
- // ============================================================================
53
- const TOOL_DECLARATIONS = [
54
- {
55
- name: 'read_file',
56
- description: 'Read the contents of a file',
57
- parameters: {
58
- type: 'object',
59
- properties: {
60
- file_path: { type: 'string', description: 'Path to the file' }
61
- },
62
- required: ['file_path']
63
- }
64
- },
65
- {
66
- name: 'write_file',
67
- description: 'Write content to a file (creates or overwrites)',
68
- parameters: {
69
- type: 'object',
70
- properties: {
71
- file_path: { type: 'string', description: 'Path to the file' },
72
- content: { type: 'string', description: 'Content to write' }
73
- },
74
- required: ['file_path', 'content']
75
- }
76
- },
77
- {
78
- name: 'edit_file',
79
- description: 'Edit a file by replacing old_string with new_string',
80
- parameters: {
81
- type: 'object',
82
- properties: {
83
- file_path: { type: 'string', description: 'Path to the file' },
84
- old_string: { type: 'string', description: 'String to find' },
85
- new_string: { type: 'string', description: 'Replacement string' }
86
- },
87
- required: ['file_path', 'old_string', 'new_string']
88
- }
89
- },
90
- {
91
- name: 'run_bash',
92
- description: 'Run a bash command',
93
- parameters: {
94
- type: 'object',
95
- properties: {
96
- command: { type: 'string', description: 'The bash command' }
97
- },
98
- required: ['command']
99
- }
100
- },
101
- {
102
- name: 'glob_files',
103
- description: 'Find files matching a glob pattern',
104
- parameters: {
105
- type: 'object',
106
- properties: {
107
- pattern: { type: 'string', description: 'Glob pattern' }
108
- },
109
- required: ['pattern']
110
- }
111
- },
112
- {
113
- name: 'grep_search',
114
- description: 'Search for a pattern in files',
115
- parameters: {
116
- type: 'object',
117
- properties: {
118
- pattern: { type: 'string', description: 'Search pattern' },
119
- file_pattern: { type: 'string', description: 'Optional glob pattern' }
120
- },
121
- required: ['pattern']
122
- }
123
- },
124
- {
125
- name: 'task_complete',
126
- description: 'Signal task completion',
127
- parameters: {
128
- type: 'object',
129
- properties: {
130
- summary: { type: 'string', description: 'Summary of what was done' },
131
- commit_message: { type: 'string', description: 'Git commit message' },
132
- pr_title: { type: 'string', description: 'PR title' },
133
- pr_description: { type: 'string', description: 'PR description' }
134
- },
135
- required: ['summary']
136
- }
137
- }
138
- ];
139
- // Dangerous commands that should be blocked
140
- const DANGEROUS_COMMANDS = ['rm -rf /', 'sudo', '> /dev/', 'mkfs', 'dd if='];
141
- async function executeTool(name, args, repoPath) {
142
- try {
143
- switch (name) {
144
- case 'read_file': {
145
- const filePath = path.join(repoPath, args.file_path);
146
- const content = await fs.readFile(filePath, 'utf-8');
147
- return { success: true, result: content };
148
- }
149
- case 'write_file': {
150
- const filePath = path.join(repoPath, args.file_path);
151
- const content = args.content;
152
- let action = 'create';
153
- try {
154
- await fs.access(filePath);
155
- action = 'modify';
156
- }
157
- catch {
158
- await fs.mkdir(path.dirname(filePath), { recursive: true });
159
- }
160
- await fs.writeFile(filePath, content, 'utf-8');
161
- return {
162
- success: true,
163
- result: `File ${action === 'create' ? 'created' : 'updated'}: ${args.file_path}`,
164
- fileChange: { path: args.file_path, content, action }
165
- };
166
- }
167
- case 'edit_file': {
168
- const filePath = path.join(repoPath, args.file_path);
169
- const oldContent = await fs.readFile(filePath, 'utf-8');
170
- const oldString = args.old_string;
171
- const newString = args.new_string;
172
- if (!oldContent.includes(oldString)) {
173
- return { success: false, result: `Error: Could not find string in file` };
174
- }
175
- const newContent = oldContent.replace(oldString, newString);
176
- await fs.writeFile(filePath, newContent, 'utf-8');
177
- return {
178
- success: true,
179
- result: `File edited: ${args.file_path}`,
180
- fileChange: { path: args.file_path, content: newContent, action: 'modify' }
181
- };
182
- }
183
- case 'run_bash': {
184
- const command = args.command;
185
- if (DANGEROUS_COMMANDS.some(d => command.includes(d))) {
186
- return { success: false, result: 'Error: Command blocked by safety policy' };
187
- }
188
- try {
189
- const output = (0, child_process_1.execSync)(command, {
190
- cwd: repoPath,
191
- encoding: 'utf-8',
192
- timeout: 120000, // 2 minute timeout
193
- maxBuffer: 1024 * 1024
194
- });
195
- return { success: true, result: output || '(no output)' };
196
- }
197
- catch (error) {
198
- const err = error;
199
- return { success: false, result: `Error: ${err.stderr || err.message}` };
200
- }
201
- }
202
- case 'glob_files': {
203
- const pattern = args.pattern;
204
- const files = await (0, glob_1.glob)(pattern, { cwd: repoPath, nodir: true });
205
- return { success: true, result: files.slice(0, 100).join('\n') || '(no matches)' };
206
- }
207
- case 'grep_search': {
208
- const pattern = args.pattern;
209
- const filePattern = args.file_pattern || '.';
210
- try {
211
- const output = (0, child_process_1.execSync)(`grep -rn "${pattern.replace(/"/g, '\\"')}" ${filePattern} | head -50`, { cwd: repoPath, encoding: 'utf-8', timeout: 30000 });
212
- return { success: true, result: output || '(no matches)' };
213
- }
214
- catch {
215
- return { success: true, result: '(no matches)' };
216
- }
217
- }
218
- case 'task_complete':
219
- return { success: true, result: 'Task marked complete' };
220
- default:
221
- return { success: false, result: `Unknown tool: ${name}` };
222
- }
223
- }
224
- catch (error) {
225
- return { success: false, result: `Error: ${error instanceof Error ? error.message : String(error)}` };
226
- }
227
- }
48
+ const index_js_1 = require("./shared/index.js");
228
49
  async function callGemini(contents, systemInstruction, apiKey, model) {
229
50
  const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`;
230
51
  const response = await fetch(url, {
@@ -233,7 +54,7 @@ async function callGemini(contents, systemInstruction, apiKey, model) {
233
54
  body: JSON.stringify({
234
55
  systemInstruction: { parts: [{ text: systemInstruction }] },
235
56
  contents,
236
- tools: [{ functionDeclarations: TOOL_DECLARATIONS }],
57
+ tools: [{ functionDeclarations: index_js_1.GEMINI_TOOL_DECLARATIONS }],
237
58
  toolConfig: {
238
59
  functionCallingConfig: {
239
60
  mode: 'AUTO'
@@ -324,15 +145,39 @@ Begin by reading the relevant files to understand the current state.`;
324
145
  }
325
146
  /**
326
147
  * Start a new session to process a task
148
+ * Uses git worktree isolation when enabled (default) to protect the main working directory
327
149
  */
328
- async startSession(session, prompt, context, onProgress) {
329
- const projectPath = session.projectPath || process.cwd();
330
- const systemPrompt = await this.buildSystemPrompt(session);
150
+ async startSession(session, prompt, context, callbacks) {
151
+ const { onProgress, onComment } = callbacks || {};
331
152
  const userPrompt = prompt || (0, terminal_base_js_1.buildDefaultPrompt)(session, context);
332
153
  const commentHistory = (0, terminal_base_js_1.formatCommentHistory)(context?.comments);
154
+ // Create parser state for detecting plans/questions
155
+ const parserState = (0, terminal_base_js_1.createParserState)();
333
156
  console.log(`šŸš€ Starting Gemini terminal session for task: ${session.title}`);
334
- console.log(`šŸ“ Working directory: ${projectPath}`);
157
+ // Determine working directory - use worktree if enabled
158
+ const useWorktree = (0, terminal_base_js_1.shouldUseWorktree)() && session.projectPath;
159
+ let projectPath = session.projectPath || process.cwd();
160
+ let worktreeResult;
161
+ if (useWorktree) {
162
+ try {
163
+ console.log(`🌳 Creating isolated worktree for task...`);
164
+ worktreeResult = await (0, terminal_base_js_1.createWorktree)(session.projectPath, session.taskId);
165
+ projectPath = worktreeResult.worktreePath;
166
+ console.log(`šŸ“ Working directory (worktree): ${projectPath}`);
167
+ }
168
+ catch (error) {
169
+ console.error(`āš ļø Failed to create worktree, falling back to main directory:`, error);
170
+ projectPath = session.projectPath || process.cwd();
171
+ console.log(`šŸ“ Working directory (fallback): ${projectPath}`);
172
+ }
173
+ }
174
+ else {
175
+ console.log(`šŸ“ Working directory: ${projectPath}`);
176
+ }
335
177
  console.log(`šŸ¤– Model: ${this.model}`);
178
+ // Build system prompt with potentially updated project path
179
+ const workingSession = { ...session, projectPath };
180
+ const systemPrompt = await this.buildSystemPrompt(workingSession);
336
181
  const contents = [
337
182
  {
338
183
  role: 'user',
@@ -360,11 +205,22 @@ Begin by reading the relevant files to understand the current state.`;
360
205
  }
361
206
  // Add model response to history
362
207
  contents.push({ role: 'model', parts: candidate.content.parts });
363
- // Handle text responses
208
+ // Handle text responses and post comments
364
209
  const textPart = candidate.content.parts.find(p => p.text);
365
210
  if (textPart?.text) {
366
211
  stdout += `\n\n${textPart.text}`;
367
212
  console.log(`šŸ“ Assistant: ${textPart.text.slice(0, 200)}...`);
213
+ // Parse for plans/questions and post as comments
214
+ if (onComment) {
215
+ const detected = (0, terminal_base_js_1.parseOutputChunk)(textPart.text, parserState);
216
+ for (const item of detected) {
217
+ const comment = (0, terminal_base_js_1.formatContentAsComment)(item, 'Gemini');
218
+ console.log(`šŸ“¤ Posting ${item.type} comment to task...`);
219
+ onComment(comment).catch(err => {
220
+ console.error(`āš ļø Failed to post ${item.type} comment:`, err);
221
+ });
222
+ }
223
+ }
368
224
  }
369
225
  // Handle function calls
370
226
  const functionCalls = candidate.content.parts.filter(p => p.functionCall);
@@ -382,7 +238,26 @@ Begin by reading the relevant files to understand the current state.`;
382
238
  stdout += `\n\n[Task Complete]\nSummary: ${completeSummary}`;
383
239
  // Capture git changes
384
240
  const changes = await (0, terminal_base_js_1.captureGitChanges)(projectPath);
385
- prUrl = (0, terminal_base_js_1.extractPrUrl)(stdout);
241
+ // If using worktree and have changes, push them
242
+ if (worktreeResult && changes.files.length > 0) {
243
+ console.log(`\nšŸ“¤ Pushing changes from worktree...`);
244
+ const pushPrUrl = await (0, terminal_base_js_1.pushWorktreeChanges)(worktreeResult.worktreePath, worktreeResult.branchName, session.title);
245
+ if (pushPrUrl) {
246
+ prUrl = pushPrUrl;
247
+ }
248
+ }
249
+ if (!prUrl) {
250
+ prUrl = (0, terminal_base_js_1.extractPrUrl)(stdout);
251
+ }
252
+ // Cleanup worktree before returning
253
+ if (worktreeResult) {
254
+ try {
255
+ await worktreeResult.cleanup();
256
+ }
257
+ catch (cleanupError) {
258
+ console.error(`āš ļø Worktree cleanup failed:`, cleanupError);
259
+ }
260
+ }
386
261
  return {
387
262
  exitCode: 0,
388
263
  stdout,
@@ -393,7 +268,7 @@ Begin by reading the relevant files to understand the current state.`;
393
268
  };
394
269
  }
395
270
  // Execute tool
396
- const result = await executeTool(name, args, projectPath);
271
+ const result = await (0, index_js_1.executeTool)(name, args, projectPath);
397
272
  stdout += `\n\n[${name}]: ${result.result.slice(0, 500)}${result.result.length > 500 ? '...' : ''}`;
398
273
  // Track modified files
399
274
  if (result.fileChange) {
@@ -426,7 +301,17 @@ Begin by reading the relevant files to understand the current state.`;
426
301
  }
427
302
  // Capture final git changes
428
303
  const changes = await (0, terminal_base_js_1.captureGitChanges)(projectPath);
429
- prUrl = (0, terminal_base_js_1.extractPrUrl)(stdout);
304
+ // If using worktree and have changes, push them
305
+ if (worktreeResult && changes.files.length > 0) {
306
+ console.log(`\nšŸ“¤ Pushing changes from worktree...`);
307
+ const pushPrUrl = await (0, terminal_base_js_1.pushWorktreeChanges)(worktreeResult.worktreePath, worktreeResult.branchName, session.title);
308
+ if (pushPrUrl) {
309
+ prUrl = pushPrUrl;
310
+ }
311
+ }
312
+ if (!prUrl) {
313
+ prUrl = (0, terminal_base_js_1.extractPrUrl)(stdout);
314
+ }
430
315
  return {
431
316
  exitCode: 0,
432
317
  stdout,
@@ -446,17 +331,28 @@ Begin by reading the relevant files to understand the current state.`;
446
331
  modifiedFiles,
447
332
  };
448
333
  }
334
+ finally {
335
+ // Cleanup worktree if it was created
336
+ if (worktreeResult) {
337
+ try {
338
+ await worktreeResult.cleanup();
339
+ }
340
+ catch (cleanupError) {
341
+ console.error(`āš ļø Worktree cleanup failed:`, cleanupError);
342
+ }
343
+ }
344
+ }
449
345
  }
450
346
  /**
451
347
  * Resume a session with new input
452
348
  * Note: Gemini doesn't have native session management, so we rebuild context
453
349
  */
454
- async resumeSession(session, input, context, onProgress) {
350
+ async resumeSession(session, input, context, callbacks) {
455
351
  console.log(`šŸ”„ Resuming Gemini session (rebuilding context)`);
456
352
  // For Gemini, resuming means starting a new conversation with the follow-up
457
353
  const fullPrompt = (0, terminal_base_js_1.formatCommentHistory)(context?.comments) +
458
354
  `\n\n---\n\n## Follow-up Request\n\n${input}`;
459
- return this.startSession(session, fullPrompt, context, onProgress);
355
+ return this.startSession(session, fullPrompt, context, callbacks);
460
356
  }
461
357
  /**
462
358
  * Parse output to extract key information