gemini-helper-friend 2.0.1 → 2.0.2

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/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
8
8
  import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, SubscribeRequestSchema, UnsubscribeRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
9
9
  import { generateMcpTools, getMetadata } from "./config/index.js";
10
10
  import { executeSubagent, executeSubagentAsync, getTaskStatusResponse, getCompletedTasksAsResources, getTaskResourceContent, } from "./tools/index.js";
11
+ import { KEEPALIVE_INTERVAL_MS, VALID_TASK_TYPES, MIN_PROMPT_LENGTH, isValidTaskType } from "./tools/constants.js";
11
12
  const metadata = getMetadata();
12
13
  const server = new Server({
13
14
  name: metadata.name,
@@ -23,7 +24,6 @@ const server = new Server({
23
24
  },
24
25
  },
25
26
  });
26
- const KEEPALIVE_INTERVAL = 25000;
27
27
  let isProcessing = false;
28
28
  let latestOutput = "";
29
29
  // ============================================================================
@@ -68,7 +68,7 @@ function startProgressUpdates(progressToken) {
68
68
  else {
69
69
  clearInterval(interval);
70
70
  }
71
- }, KEEPALIVE_INTERVAL);
71
+ }, KEEPALIVE_INTERVAL_MS);
72
72
  return { interval, progressToken };
73
73
  }
74
74
  function stopProgressUpdates(data, success) {
@@ -197,8 +197,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
197
197
  // ========================================================================
198
198
  // SERVER-SIDE VALIDATION - Reject invalid requests immediately
199
199
  // ========================================================================
200
- const validTaskTypes = ['completion-inspector', 'helper-friend', 'manual-tester', 'manual'];
201
- if (!args.task_type || !validTaskTypes.includes(args.task_type)) {
200
+ if (!args.task_type || !isValidTaskType(args.task_type)) {
202
201
  return {
203
202
  content: [{
204
203
  type: "text",
@@ -207,10 +206,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
207
206
  **Provided:** \`${args.task_type || '(missing)'}\`
208
207
 
209
208
  **Valid values:**
210
- - \`completion-inspector\` - CTO-level code review and verification
211
- - \`helper-friend\` - Research companion for deep analysis
212
- - \`manual-tester\` - QA engineer with real browser testing
213
- - \`manual\` - General-purpose executor for any task
209
+ ${VALID_TASK_TYPES.map(t => `- \`${t}\``).join('\n')}
214
210
 
215
211
  Please provide exactly one of these task_type values.`,
216
212
  }],
@@ -231,14 +227,14 @@ ${args.task_type === 'completion-inspector' ? '- Original task requirements\n- A
231
227
  isError: true,
232
228
  };
233
229
  }
234
- if (args.prompt.length < 20) {
230
+ if (args.prompt.length < MIN_PROMPT_LENGTH) {
235
231
  return {
236
232
  content: [{
237
233
  type: "text",
238
234
  text: `## ❌ Prompt too short
239
235
 
240
236
  **Provided length:** ${args.prompt.length} characters
241
- **Minimum required:** 20 characters
237
+ **Minimum required:** ${MIN_PROMPT_LENGTH} characters
242
238
 
243
239
  Please provide a more detailed prompt describing your task. Short prompts lack context for effective execution.`,
244
240
  }],
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Cleanup utilities for orphaned temp files and processes
3
+ */
4
+ /**
5
+ * Clean up orphaned temp files from crashed monitors or tasks
6
+ * Should be called on server startup
7
+ */
8
+ export declare function cleanupOrphanedTempFiles(): number;
9
+ /**
10
+ * Validate PID is a positive integer
11
+ */
12
+ export declare function isValidPid(pid: number | undefined): pid is number;
13
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/tools/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAsCjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,IAAI,MAAM,CAEjE"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Cleanup utilities for orphaned temp files and processes
3
+ */
4
+ import { readdirSync, unlinkSync } from 'fs';
5
+ import { tmpdir } from 'os';
6
+ import { join } from 'path';
7
+ import { STDOUT_FILE_PREFIX, MONITOR_FILE_PREFIX } from './constants.js';
8
+ /**
9
+ * Clean up orphaned temp files from crashed monitors or tasks
10
+ * Should be called on server startup
11
+ */
12
+ export function cleanupOrphanedTempFiles() {
13
+ let cleaned = 0;
14
+ try {
15
+ const tempDir = tmpdir();
16
+ const files = readdirSync(tempDir);
17
+ for (const file of files) {
18
+ // Clean up task output files
19
+ if (file.startsWith(STDOUT_FILE_PREFIX) &&
20
+ (file.endsWith('-stdout.txt') || file.endsWith('-stderr.txt'))) {
21
+ try {
22
+ unlinkSync(join(tempDir, file));
23
+ cleaned++;
24
+ }
25
+ catch (e) {
26
+ // File may be in use or already deleted
27
+ }
28
+ }
29
+ // Clean up monitor scripts
30
+ if (file.startsWith(MONITOR_FILE_PREFIX) && file.endsWith('.js')) {
31
+ try {
32
+ unlinkSync(join(tempDir, file));
33
+ cleaned++;
34
+ }
35
+ catch (e) {
36
+ // File may be in use or already deleted
37
+ }
38
+ }
39
+ }
40
+ if (cleaned > 0) {
41
+ console.error(`[Cleanup] Removed ${cleaned} orphaned temp files`);
42
+ }
43
+ }
44
+ catch (error) {
45
+ console.error('[Cleanup] Error during temp file cleanup:', error);
46
+ }
47
+ return cleaned;
48
+ }
49
+ /**
50
+ * Validate PID is a positive integer
51
+ */
52
+ export function isValidPid(pid) {
53
+ return typeof pid === 'number' && pid > 0 && Number.isInteger(pid);
54
+ }
55
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/tools/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEzE;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,6BAA6B;YAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;gBACnC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;oBAChC,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,wCAAwC;gBAC1C,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;oBAChC,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,wCAAwC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,sBAAsB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAuB;IAChD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared constants for the Gemini MCP Tool
3
+ * Centralizes magic numbers, timing values, and configuration defaults
4
+ */
5
+ /** Minimum task ID (5-digit IDs start here) */
6
+ export declare const TASK_ID_MIN = 10000;
7
+ /** Maximum task ID before wrapping around */
8
+ export declare const TASK_ID_MAX = 99999;
9
+ /** How often to send keepalive/progress notifications (25 seconds) */
10
+ export declare const KEEPALIVE_INTERVAL_MS = 25000;
11
+ /** How often the monitor polls for process completion (3 seconds) */
12
+ export declare const MONITOR_POLL_INTERVAL_MS = 3000;
13
+ /** Task expiry time - tasks older than this are cleaned up (1 hour) */
14
+ export declare const TASK_EXPIRY_MS: number;
15
+ /** Maximum time to wait for a task before timeout (30 minutes) */
16
+ export declare const TASK_TIMEOUT_MS: number;
17
+ /** Interval for periodic cleanup of expired tasks (10 minutes) */
18
+ export declare const CLEANUP_INTERVAL_MS: number;
19
+ /** Valid task type values - single source of truth */
20
+ export declare const VALID_TASK_TYPES: readonly ["completion-inspector", "helper-friend", "manual-tester", "manual"];
21
+ /** Type derived from the valid task types array */
22
+ export type TaskType = typeof VALID_TASK_TYPES[number];
23
+ /** Check if a string is a valid task type */
24
+ export declare function isValidTaskType(value: unknown): value is TaskType;
25
+ /**
26
+ * Model fallback chain - tries in order until one succeeds
27
+ * gemini-2.5-flash is proven fast and reliable
28
+ */
29
+ export declare const MODEL_FALLBACK_CHAIN: readonly ["gemini-2.5-flash", "gemini-2.5-pro", "gemini-2.0-flash"];
30
+ /** Prefix for stdout temp files */
31
+ export declare const STDOUT_FILE_PREFIX = "mcp-task-";
32
+ /** Prefix for monitor script temp files */
33
+ export declare const MONITOR_FILE_PREFIX = "mcp-monitor-";
34
+ /** Database directory name (relative to project root) */
35
+ export declare const DATA_DIR_NAME = ".mcp-data";
36
+ /** Database file name */
37
+ export declare const DB_FILE_NAME = "tasks.db";
38
+ /** Minimum prompt length to accept */
39
+ export declare const MIN_PROMPT_LENGTH = 20;
40
+ /** Maximum result length to store in database (prevent bloat) */
41
+ export declare const MAX_RESULT_LENGTH = 100000;
42
+ /** Maximum error message length to store */
43
+ export declare const MAX_ERROR_LENGTH = 500;
44
+ /** Maximum length for truncated error details in formatted errors */
45
+ export declare const MAX_ERROR_DETAIL_LENGTH = 500;
46
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/tools/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,+CAA+C;AAC/C,eAAO,MAAM,WAAW,QAAQ,CAAC;AAEjC,6CAA6C;AAC7C,eAAO,MAAM,WAAW,QAAQ,CAAC;AAMjC,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,uEAAuE;AACvE,eAAO,MAAM,cAAc,QAAiB,CAAC;AAE7C,kEAAkE;AAClE,eAAO,MAAM,eAAe,QAAiB,CAAC;AAE9C,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,QAAiB,CAAC;AAMlD,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,+EAKnB,CAAC;AAEX,mDAAmD;AACnD,MAAM,MAAM,QAAQ,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEvD,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAEjE;AAMD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qEAIvB,CAAC;AAMX,mCAAmC;AACnC,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,yDAAyD;AACzD,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,yBAAyB;AACzB,eAAO,MAAM,YAAY,aAAa,CAAC;AAMvC,sCAAsC;AACtC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Shared constants for the Gemini MCP Tool
3
+ * Centralizes magic numbers, timing values, and configuration defaults
4
+ */
5
+ // =============================================================================
6
+ // TASK ID CONFIGURATION
7
+ // =============================================================================
8
+ /** Minimum task ID (5-digit IDs start here) */
9
+ export const TASK_ID_MIN = 10000;
10
+ /** Maximum task ID before wrapping around */
11
+ export const TASK_ID_MAX = 99999;
12
+ // =============================================================================
13
+ // TIMING CONSTANTS (in milliseconds)
14
+ // =============================================================================
15
+ /** How often to send keepalive/progress notifications (25 seconds) */
16
+ export const KEEPALIVE_INTERVAL_MS = 25000;
17
+ /** How often the monitor polls for process completion (3 seconds) */
18
+ export const MONITOR_POLL_INTERVAL_MS = 3000;
19
+ /** Task expiry time - tasks older than this are cleaned up (1 hour) */
20
+ export const TASK_EXPIRY_MS = 60 * 60 * 1000;
21
+ /** Maximum time to wait for a task before timeout (30 minutes) */
22
+ export const TASK_TIMEOUT_MS = 30 * 60 * 1000;
23
+ /** Interval for periodic cleanup of expired tasks (10 minutes) */
24
+ export const CLEANUP_INTERVAL_MS = 10 * 60 * 1000;
25
+ // =============================================================================
26
+ // TASK TYPES
27
+ // =============================================================================
28
+ /** Valid task type values - single source of truth */
29
+ export const VALID_TASK_TYPES = [
30
+ 'completion-inspector',
31
+ 'helper-friend',
32
+ 'manual-tester',
33
+ 'manual',
34
+ ];
35
+ /** Check if a string is a valid task type */
36
+ export function isValidTaskType(value) {
37
+ return typeof value === 'string' && VALID_TASK_TYPES.includes(value);
38
+ }
39
+ // =============================================================================
40
+ // MODEL CONFIGURATION
41
+ // =============================================================================
42
+ /**
43
+ * Model fallback chain - tries in order until one succeeds
44
+ * gemini-2.5-flash is proven fast and reliable
45
+ */
46
+ export const MODEL_FALLBACK_CHAIN = [
47
+ 'gemini-2.5-flash', // Primary: fast, reliable, tested
48
+ 'gemini-2.5-pro', // Fallback: more capable
49
+ 'gemini-2.0-flash', // Fallback: older but stable
50
+ ];
51
+ // =============================================================================
52
+ // FILE PATTERNS
53
+ // =============================================================================
54
+ /** Prefix for stdout temp files */
55
+ export const STDOUT_FILE_PREFIX = 'mcp-task-';
56
+ /** Prefix for monitor script temp files */
57
+ export const MONITOR_FILE_PREFIX = 'mcp-monitor-';
58
+ /** Database directory name (relative to project root) */
59
+ export const DATA_DIR_NAME = '.mcp-data';
60
+ /** Database file name */
61
+ export const DB_FILE_NAME = 'tasks.db';
62
+ // =============================================================================
63
+ // VALIDATION LIMITS
64
+ // =============================================================================
65
+ /** Minimum prompt length to accept */
66
+ export const MIN_PROMPT_LENGTH = 20;
67
+ /** Maximum result length to store in database (prevent bloat) */
68
+ export const MAX_RESULT_LENGTH = 100000;
69
+ /** Maximum error message length to store */
70
+ export const MAX_ERROR_LENGTH = 500;
71
+ /** Maximum length for truncated error details in formatted errors */
72
+ export const MAX_ERROR_DETAIL_LENGTH = 500;
73
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tools/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,sBAAsB;IACtB,eAAe;IACf,eAAe;IACf,QAAQ;CACA,CAAC;AAKX,6CAA6C;AAC7C,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAiB,CAAC,CAAC;AACnF,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB,EAAO,kCAAkC;IAC3D,gBAAgB,EAAS,yBAAyB;IAClD,kBAAkB,EAAO,6BAA6B;CAC9C,CAAC;AAEX,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE9C,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAElD,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC,yBAAyB;AACzB,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEvC,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,sCAAsC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,qEAAqE;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Tools module - exports subagent tools and task management
3
3
  */
4
- export { executeSubagent, executeSubagentAsync, getTaskStatusResponse, getCompletedTasksAsResources, getTaskResourceContent, type SubagentArgs, type TaskState, type TaskStatus, } from './subagent.tool.js';
4
+ export { executeSubagent, executeSubagentAsync, getTaskStatusResponse, getCompletedTasksAsResources, getTaskResourceContent, type SubagentArgs, } from './subagent.tool.js';
5
+ export { cleanupOrphanedTempFiles, isValidPid } from './cleanup.js';
6
+ export { type TaskState, type TaskStatus } from './subagent.tool.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -2,4 +2,5 @@
2
2
  * Tools module - exports subagent tools and task management
3
3
  */
4
4
  export { executeSubagent, executeSubagentAsync, getTaskStatusResponse, getCompletedTasksAsResources, getTaskResourceContent, } from './subagent.tool.js';
5
+ export { cleanupOrphanedTempFiles, isValidPid } from './cleanup.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -2,8 +2,10 @@
2
2
  * Gemini Subagent Tool - Single consolidated tool with task type enum
3
3
  * Loads task-specific instructions from YAML and merges with user prompt
4
4
  */
5
+ import { type TaskState, type TaskStatus } from './task-store.js';
6
+ import { type TaskType } from './constants.js';
5
7
  export interface SubagentArgs {
6
- task_type: 'completion-inspector' | 'helper-friend' | 'manual-tester' | 'manual';
8
+ task_type: TaskType;
7
9
  prompt: string;
8
10
  model?: string;
9
11
  sandbox?: boolean;
@@ -12,30 +14,7 @@ export interface SubagentArgs {
12
14
  include_instructions?: boolean;
13
15
  async?: boolean;
14
16
  }
15
- export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed';
16
- export interface TaskState {
17
- id: number;
18
- status: TaskStatus;
19
- task_type: string;
20
- progress: number;
21
- result?: string;
22
- error?: string;
23
- started_at: string;
24
- completed_at?: string;
25
- updated_at: string;
26
- }
27
- /**
28
- * Create a new task in pending state
29
- */
30
- export declare function createTask(taskType: string): TaskState;
31
- /**
32
- * Update task status
33
- */
34
- export declare function updateTask(id: number, updates: Partial<TaskState>): TaskState | null;
35
- /**
36
- * Get task by ID
37
- */
38
- export declare function getTask(id: number): TaskState | null;
17
+ export type { TaskState, TaskStatus };
39
18
  /**
40
19
  * Get task status response for check_subagent_task tool
41
20
  */
@@ -66,10 +45,11 @@ export declare function executeSubagentAsync(args: SubagentArgs, onTaskProgress?
66
45
  task_id: number;
67
46
  status: string;
68
47
  message: string;
48
+ pid?: number;
69
49
  };
70
50
  /**
71
51
  * Execute Gemini CLI with subagent task (blocking mode)
72
52
  * Uses model fallback chain: tries models in sequence until one succeeds
73
53
  */
74
- export declare function executeSubagent(args: SubagentArgs, onProgress?: (output: string) => void): Promise<string>;
54
+ export declare function executeSubagent(args: SubagentArgs, onProgress?: (output: string) => void, onProcessSpawn?: (pid: number) => void): Promise<string>;
75
55
  //# sourceMappingURL=subagent.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.tool.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,sBAAsB,GAAG,eAAe,GAAG,eAAe,GAAG,QAAQ,CAAC;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAwBD;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAqBtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAMpF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmC5D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AA6WD;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,KAAK,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAuBD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsCjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EAC3E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACjD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsCtD;AAiID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,MAAM,CAAC,CAqDjB"}
1
+ {"version":3,"file":"subagent.tool.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAUL,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAOD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAEtC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAuC5D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AA6WD;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,KAAK,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAcD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsCjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EAC3E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACjD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAkGpE;AAgVD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EACrC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,MAAM,CAAC,CAqDjB"}
@@ -2,73 +2,22 @@
2
2
  * Gemini Subagent Tool - Single consolidated tool with task type enum
3
3
  * Loads task-specific instructions from YAML and merges with user prompt
4
4
  */
5
- import { readFileSync } from 'fs';
5
+ import { readFileSync, writeFileSync, openSync, closeSync } from 'fs';
6
6
  import { fileURLToPath } from 'url';
7
7
  import { dirname, join } from 'path';
8
8
  import { parse as parseYaml } from 'yaml';
9
9
  import { spawn } from 'child_process';
10
+ import { tmpdir } from 'os';
11
+ import { createTask, updateTask, getTask, getCompletedTasks, } from './task-store.js';
12
+ import { MODEL_FALLBACK_CHAIN, MONITOR_POLL_INTERVAL_MS, TASK_TIMEOUT_MS, STDOUT_FILE_PREFIX, MONITOR_FILE_PREFIX, DATA_DIR_NAME, DB_FILE_NAME, MAX_ERROR_LENGTH, } from './constants.js';
13
+ import { isValidPid } from './cleanup.js';
10
14
  const __filename = fileURLToPath(import.meta.url);
11
15
  const __dirname = dirname(__filename);
12
- // In-memory task store (Map keyed by 5-digit task ID)
13
- const taskStore = new Map();
14
- // Task expiry: 1 hour (in milliseconds)
15
- const TASK_EXPIRY_MS = 60 * 60 * 1000;
16
- // ID counter (generates 5-digit IDs: 10000-99999)
17
- let taskIdCounter = 10000;
18
- /**
19
- * Generate unique 5-digit task ID
20
- */
21
- function generateTaskId() {
22
- const id = taskIdCounter;
23
- taskIdCounter++;
24
- // Wrap around if we exceed 99999
25
- if (taskIdCounter > 99999) {
26
- taskIdCounter = 10000;
27
- }
28
- return id;
29
- }
30
- /**
31
- * Create a new task in pending state
32
- */
33
- export function createTask(taskType) {
34
- const id = generateTaskId();
35
- const now = new Date().toISOString();
36
- const task = {
37
- id,
38
- status: 'pending',
39
- task_type: taskType,
40
- progress: 0,
41
- started_at: now,
42
- updated_at: now,
43
- };
44
- taskStore.set(id, task);
45
- // Schedule cleanup after expiry
46
- setTimeout(() => {
47
- taskStore.delete(id);
48
- }, TASK_EXPIRY_MS);
49
- return task;
50
- }
51
- /**
52
- * Update task status
53
- */
54
- export function updateTask(id, updates) {
55
- const task = taskStore.get(id);
56
- if (!task)
57
- return null;
58
- Object.assign(task, updates, { updated_at: new Date().toISOString() });
59
- return task;
60
- }
61
- /**
62
- * Get task by ID
63
- */
64
- export function getTask(id) {
65
- return taskStore.get(id) || null;
66
- }
67
16
  /**
68
17
  * Get task status response for check_subagent_task tool
69
18
  */
70
19
  export function getTaskStatusResponse(taskId) {
71
- const task = taskStore.get(taskId);
20
+ const task = getTask(taskId);
72
21
  if (!task) {
73
22
  return {
74
23
  task_id: taskId,
@@ -82,6 +31,9 @@ export function getTaskStatusResponse(taskId) {
82
31
  task_type: task.task_type,
83
32
  started_at: task.started_at,
84
33
  };
34
+ if (task.pid) {
35
+ response.pid = task.pid;
36
+ }
85
37
  if (task.status === 'running') {
86
38
  response.progress = task.progress;
87
39
  }
@@ -354,21 +306,18 @@ function buildFinalPrompt(taskType, userPrompt, includeInstructions) {
354
306
  * Get all completed/failed tasks as MCP resources
355
307
  */
356
308
  export function getCompletedTasksAsResources() {
357
- const resources = [];
358
- for (const [id, task] of taskStore.entries()) {
359
- if (task.status === 'completed' || task.status === 'failed') {
360
- const statusEmoji = task.status === 'completed' ? '✅' : '❌';
361
- resources.push({
362
- uri: `task://${id}`,
363
- name: `${statusEmoji} Task ${id} - ${task.task_type}`,
364
- description: task.status === 'completed'
365
- ? `🎉 Task ${id} is READY! Result available for ${task.task_type} task.`
366
- : `⚠️ Task ${id} FAILED: ${task.error?.slice(0, 100)}`,
367
- mimeType: 'text/markdown',
368
- });
369
- }
370
- }
371
- return resources;
309
+ const tasks = getCompletedTasks();
310
+ return tasks.map(task => {
311
+ const statusEmoji = task.status === 'completed' ? '✅' : '';
312
+ return {
313
+ uri: `task://${task.id}`,
314
+ name: `${statusEmoji} Task ${task.id} - ${task.task_type}`,
315
+ description: task.status === 'completed'
316
+ ? `🎉 Task ${task.id} is READY! Result available for ${task.task_type} task.`
317
+ : `⚠️ Task ${task.id} FAILED: ${task.error?.slice(0, 100)}`,
318
+ mimeType: 'text/markdown',
319
+ };
320
+ });
372
321
  }
373
322
  /**
374
323
  * Get task result content by resource URI
@@ -379,7 +328,7 @@ export function getTaskResourceContent(uri) {
379
328
  if (!match)
380
329
  return null;
381
330
  const taskId = parseInt(match[1], 10);
382
- const task = taskStore.get(taskId);
331
+ const task = getTask(taskId);
383
332
  if (!task)
384
333
  return null;
385
334
  if (task.status === 'completed') {
@@ -414,53 +363,283 @@ ${task.error}`;
414
363
  */
415
364
  export function executeSubagentAsync(args, onTaskProgress, onTaskComplete) {
416
365
  const task = createTask(args.task_type);
366
+ console.error(`[TaskStore] Created task ${task.id} for ${args.task_type}`);
417
367
  // Update to running state
418
368
  updateTask(task.id, { status: 'running', progress: 0 });
419
- // Execute in background (fire and forget)
420
- executeSubagent(args, (output) => {
421
- // Update progress (estimate based on output chunks)
422
- const currentTask = getTask(task.id);
423
- if (currentTask && currentTask.status === 'running') {
424
- const newProgress = Math.min(currentTask.progress + 5, 95);
425
- updateTask(task.id, { progress: newProgress });
426
- onTaskProgress?.(task.id, newProgress, output);
427
- }
428
- })
429
- .then(async (result) => {
430
- updateTask(task.id, {
431
- status: 'completed',
432
- progress: 100,
433
- result,
434
- completed_at: new Date().toISOString(),
435
- });
436
- await onTaskComplete?.(task.id);
437
- })
438
- .catch(async (error) => {
369
+ // CRITICAL FIX: Spawn detached background process that survives parent exit
370
+ // The process will update the database when it completes
371
+ const config = loadSubagentConfig();
372
+ const settings = config.settings;
373
+ const taskConfig = config.task_types[args.task_type];
374
+ if (!taskConfig) {
375
+ throw new Error(`Invalid task_type: ${args.task_type}. Must be: completion-inspector, helper-friend, manual-tester, or manual`);
376
+ }
377
+ const includeInstructions = args.include_instructions ?? settings.defaults.append_instructions;
378
+ const finalPrompt = buildFinalPrompt(args.task_type, args.prompt, includeInstructions);
379
+ // Build CLI arguments
380
+ const cliArgs = [];
381
+ if (args.approval_mode) {
382
+ cliArgs.push(settings.cli.flags.approval_mode, args.approval_mode);
383
+ }
384
+ else if (settings.defaults.yolo_mode) {
385
+ cliArgs.push(settings.cli.flags.yolo);
386
+ }
387
+ // Use first model from fallback chain if no model specified
388
+ const model = args.model || MODEL_FALLBACK_CHAIN[0];
389
+ cliArgs.push(settings.cli.flags.model, model);
390
+ if (args.sandbox) {
391
+ cliArgs.push(settings.cli.flags.sandbox);
392
+ }
393
+ if (args.include_directories) {
394
+ cliArgs.push(settings.cli.flags.include_directories, args.include_directories);
395
+ }
396
+ cliArgs.push(settings.cli.flags.output_format, 'json');
397
+ cliArgs.push(finalPrompt);
398
+ // Create temp files to capture stdout/stderr (since we need detached process)
399
+ const stdoutPath = join(tmpdir(), `${STDOUT_FILE_PREFIX}${task.id}-stdout.txt`);
400
+ const stderrPath = join(tmpdir(), `${STDOUT_FILE_PREFIX}${task.id}-stderr.txt`);
401
+ // Open files for writing - these file descriptors survive parent exit
402
+ const stdoutFd = openSync(stdoutPath, 'w');
403
+ const stderrFd = openSync(stderrPath, 'w');
404
+ // Spawn DETACHED process that survives parent exit
405
+ // Use file descriptors to capture output even after parent exits
406
+ const child = spawn(settings.cli.command, cliArgs, {
407
+ env: process.env,
408
+ shell: false,
409
+ stdio: ['ignore', stdoutFd, stderrFd], // Redirect to files
410
+ detached: true, // Process survives parent exit
411
+ });
412
+ // Close file descriptors in parent (child has its own copy)
413
+ closeSync(stdoutFd);
414
+ closeSync(stderrFd);
415
+ // Unref so parent can exit
416
+ child.unref();
417
+ const spawnedPid = child.pid;
418
+ // Validate PID before proceeding
419
+ if (!isValidPid(spawnedPid)) {
439
420
  updateTask(task.id, {
440
421
  status: 'failed',
441
- error: error instanceof Error ? error.message : String(error),
422
+ error: 'Failed to spawn process - invalid PID received'
442
423
  });
443
- await onTaskComplete?.(task.id);
444
- });
424
+ return {
425
+ task_id: task.id,
426
+ status: 'failed',
427
+ message: `Task ${task.id} failed to spawn - invalid PID`,
428
+ };
429
+ }
430
+ updateTask(task.id, { pid: spawnedPid });
431
+ console.error(`[TaskStore] Task ${task.id} spawned DETACHED process PID ${spawnedPid}`);
432
+ console.error(`[TaskStore] Output will be captured to: ${stdoutPath}`);
433
+ // Start a background monitor that checks if process completed
434
+ // Pass output file paths so monitor can read results
435
+ startBackgroundMonitor(task.id, spawnedPid, stdoutPath, stderrPath, onTaskComplete);
445
436
  return {
446
437
  task_id: task.id,
447
438
  status: 'running',
448
- message: `Task ${task.id} started. You will receive a notification when ready, or use check_subagent_task tool to poll status.`,
439
+ message: `Task ${task.id} started in DETACHED mode (PID: ${spawnedPid}). You will receive a notification when ready, or use check_subagent_task tool to poll status.`,
440
+ pid: spawnedPid,
449
441
  };
450
442
  }
451
- // Model fallback chain - try in order until one succeeds
452
- const MODEL_FALLBACK_CHAIN = [
453
- 'gemini-3-flash-preview',
454
- 'gemini-3-pro-preview',
455
- 'gemini-3-pro',
456
- 'gemini-2.5-flash',
457
- ];
443
+ /**
444
+ * Background monitor that checks if detached process completed
445
+ * Runs independently of MCP server lifecycle
446
+ * Reads output files and stores result in database
447
+ */
448
+ function startBackgroundMonitor(taskId, pid, stdoutPath, stderrPath, onTaskComplete) {
449
+ if (!pid)
450
+ return;
451
+ // Get absolute path to database (resolve from dist directory to project root)
452
+ const dbAbsolutePath = join(__dirname, '../..', DATA_DIR_NAME, DB_FILE_NAME);
453
+ // Spawn a detached monitor process that polls the PID and reads output files
454
+ const monitorScript = `
455
+ const Database = require('better-sqlite3');
456
+ const fs = require('fs');
457
+
458
+ const taskId = ${taskId};
459
+ const pid = ${pid};
460
+ const dbPath = '${dbAbsolutePath.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}';
461
+ const stdoutPath = '${stdoutPath.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}';
462
+ const stderrPath = '${stderrPath.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}';
463
+ const POLL_INTERVAL = ${MONITOR_POLL_INTERVAL_MS};
464
+ const TIMEOUT_MS = ${TASK_TIMEOUT_MS};
465
+ const MAX_ERROR_LEN = ${MAX_ERROR_LENGTH};
466
+ const MAX_RESULT_LEN = 100000;
467
+
468
+ // Validate PID is a positive integer
469
+ if (!pid || pid <= 0 || !Number.isInteger(pid)) {
470
+ console.error('[Monitor] Invalid PID: ' + pid + ' - exiting');
471
+ process.exit(1);
472
+ }
473
+
474
+ console.error('[Monitor] Starting monitor for task ' + taskId + ' PID ' + pid);
475
+ console.error('[Monitor] Database path: ' + dbPath);
476
+ console.error('[Monitor] Stdout path: ' + stdoutPath);
477
+
478
+ // Poll at configured interval to check if process still exists
479
+ const checkInterval = setInterval(() => {
480
+ try {
481
+ // Check if process exists (throws if not)
482
+ process.kill(pid, 0);
483
+ // Still running - silent poll (reduce log noise)
484
+ } catch (error) {
485
+ // Process no longer exists - it completed or failed
486
+ clearInterval(checkInterval);
487
+
488
+ console.error('[Monitor] Task ' + taskId + ' PID ' + pid + ' exited - reading output');
489
+
490
+ // Read output files
491
+ let stdout = '';
492
+ let stderr = '';
493
+ let result = null;
494
+ let taskStatus = 'completed';
495
+ let taskError = null;
496
+
497
+ try {
498
+ stdout = fs.readFileSync(stdoutPath, 'utf8');
499
+ console.error('[Monitor] Read ' + stdout.length + ' bytes from stdout');
500
+ } catch (e) {
501
+ console.error('[Monitor] Could not read stdout:', e.message);
502
+ }
503
+
504
+ try {
505
+ stderr = fs.readFileSync(stderrPath, 'utf8');
506
+ if (stderr) console.error('[Monitor] Stderr: ' + stderr.slice(0, 200));
507
+ } catch (e) {
508
+ // Ignore stderr read errors
509
+ }
510
+
511
+ // Parse JSON output from Gemini CLI with robust error handling
512
+ if (stdout) {
513
+ let parsed = false;
514
+
515
+ // Strategy 1: Try parsing entire stdout as JSON
516
+ try {
517
+ const json = JSON.parse(stdout.trim());
518
+ if (json.response !== undefined) {
519
+ result = json.response || 'Task completed successfully.';
520
+
521
+ // Add stats if available
522
+ if (json.stats && json.stats.models) {
523
+ const modelNames = Object.keys(json.stats.models);
524
+ const totalTokens = modelNames.reduce((sum, m) => {
525
+ return sum + (json.stats.models[m]?.tokens?.total || 0);
526
+ }, 0);
527
+ result += '\\n\\n---\\n**Stats:** ' + totalTokens + ' tokens | Models: ' + modelNames.join(', ');
528
+ }
529
+ parsed = true;
530
+ }
531
+ } catch (e) {
532
+ // Strategy 2: Find last complete JSON object (scan from end)
533
+ const lines = stdout.split('\\n');
534
+ for (let i = lines.length - 1; i >= 0 && !parsed; i--) {
535
+ const line = lines[i].trim();
536
+ if (line.startsWith('{')) {
537
+ try {
538
+ const json = JSON.parse(line);
539
+ if (json.response !== undefined) {
540
+ result = json.response || 'Task completed successfully.';
541
+ if (json.stats && json.stats.models) {
542
+ const modelNames = Object.keys(json.stats.models);
543
+ const totalTokens = modelNames.reduce((sum, m) => {
544
+ return sum + (json.stats.models[m]?.tokens?.total || 0);
545
+ }, 0);
546
+ result += '\\n\\n---\\n**Stats:** ' + totalTokens + ' tokens | Models: ' + modelNames.join(', ');
547
+ }
548
+ parsed = true;
549
+ break;
550
+ }
551
+ } catch (lineErr) {
552
+ // Try next line
553
+ }
554
+ }
555
+ }
556
+ }
557
+
558
+ // Strategy 3: Use raw output if JSON parsing failed
559
+ if (!parsed) {
560
+ result = stdout.trim() || 'Task completed (no JSON output captured).';
561
+ }
562
+ } else {
563
+ result = 'Task completed but no output was captured.';
564
+ }
565
+
566
+ // Limit result length to prevent database bloat
567
+ if (result && result.length > MAX_RESULT_LEN) {
568
+ result = result.slice(0, MAX_RESULT_LEN) + '\\n\\n[Output truncated - exceeded ' + MAX_RESULT_LEN + ' characters]';
569
+ }
570
+
571
+ // Check for errors in stderr
572
+ if (stderr && (stderr.includes('Error') || stderr.includes('error') || stderr.includes('FAILED'))) {
573
+ taskStatus = 'failed';
574
+ taskError = stderr.slice(0, MAX_ERROR_LEN);
575
+ }
576
+
577
+ // Update database with result
578
+ try {
579
+ const db = new Database(dbPath);
580
+ const stmt = db.prepare(\`
581
+ UPDATE tasks
582
+ SET status = ?, progress = ?, result = ?, error = ?, completed_at = ?, updated_at = ?
583
+ WHERE id = ?
584
+ \`);
585
+ stmt.run(taskStatus, 100, result, taskError, new Date().toISOString(), new Date().toISOString(), taskId);
586
+ db.close();
587
+ console.error('[Monitor] Task ' + taskId + ' marked as ' + taskStatus + ' with result (' + (result?.length || 0) + ' chars)');
588
+ } catch (dbError) {
589
+ console.error('[Monitor] Database update failed:', dbError.message);
590
+ }
591
+
592
+ // Cleanup temp files
593
+ try { fs.unlinkSync(stdoutPath); } catch (e) {}
594
+ try { fs.unlinkSync(stderrPath); } catch (e) {}
595
+
596
+ process.exit(0);
597
+ }
598
+ }, POLL_INTERVAL);
599
+
600
+ // Timeout after configured duration
601
+ setTimeout(() => {
602
+ clearInterval(checkInterval);
603
+ console.error('[Monitor] Task ' + taskId + ' timeout after ' + (TIMEOUT_MS / 60000) + ' minutes');
604
+ try {
605
+ const db = new Database(dbPath);
606
+ const stmt = db.prepare(\`
607
+ UPDATE tasks
608
+ SET status = ?, error = ?, updated_at = ?
609
+ WHERE id = ?
610
+ \`);
611
+ stmt.run('failed', 'Task timeout after ' + (TIMEOUT_MS / 60000) + ' minutes', new Date().toISOString(), taskId);
612
+ db.close();
613
+ } catch (dbError) {
614
+ console.error('[Monitor] Database update failed:', dbError.message);
615
+ }
616
+ process.exit(0);
617
+ }, TIMEOUT_MS);
618
+ `;
619
+ // Write monitor script to temp file
620
+ const monitorPath = join(tmpdir(), `${MONITOR_FILE_PREFIX}${taskId}.js`);
621
+ writeFileSync(monitorPath, monitorScript);
622
+ // Get node_modules path for the monitor to find better-sqlite3
623
+ const nodeModulesPath = join(__dirname, '../../node_modules');
624
+ // Spawn detached monitor with NODE_PATH set
625
+ const monitor = spawn('node', [monitorPath], {
626
+ detached: true,
627
+ stdio: 'ignore',
628
+ env: {
629
+ ...process.env,
630
+ NODE_PATH: nodeModulesPath,
631
+ },
632
+ });
633
+ monitor.unref();
634
+ console.error(`[TaskStore] Started background monitor for task ${taskId} (monitor PID: ${monitor.pid})`);
635
+ }
636
+ // Model fallback chain imported from constants.ts
458
637
  /**
459
638
  * Execute Gemini CLI with a specific model
460
639
  * Uses modern syntax: gemini --yolo --model <model> --output-format json "prompt"
461
640
  * Note: --prompt flag is deprecated, use positional argument instead
462
641
  */
463
- function executeWithModel(model, settings, taskConfig, finalPrompt, options, onProgress) {
642
+ function executeWithModel(model, settings, taskConfig, finalPrompt, options, onProgress, onProcessSpawn) {
464
643
  const cliArgs = [];
465
644
  // Auto-approve mode (--yolo or --approval-mode)
466
645
  if (options.approval_mode) {
@@ -491,7 +670,13 @@ function executeWithModel(model, settings, taskConfig, finalPrompt, options, onP
491
670
  env: process.env,
492
671
  shell: false,
493
672
  stdio: ['ignore', 'pipe', 'pipe'],
673
+ detached: false,
494
674
  });
675
+ // Report PID immediately after spawn
676
+ if (child.pid) {
677
+ console.error(`[Gemini CLI] Spawned process PID ${child.pid} for model ${model}`);
678
+ onProcessSpawn?.(child.pid);
679
+ }
495
680
  child.stdout.on('data', (data) => {
496
681
  const chunk = data.toString();
497
682
  stdout += chunk;
@@ -553,7 +738,7 @@ function executeWithModel(model, settings, taskConfig, finalPrompt, options, onP
553
738
  * Execute Gemini CLI with subagent task (blocking mode)
554
739
  * Uses model fallback chain: tries models in sequence until one succeeds
555
740
  */
556
- export async function executeSubagent(args, onProgress) {
741
+ export async function executeSubagent(args, onProgress, onProcessSpawn) {
557
742
  const config = loadSubagentConfig();
558
743
  const settings = config.settings;
559
744
  const taskConfig = config.task_types[args.task_type];
@@ -570,14 +755,14 @@ export async function executeSubagent(args, onProgress) {
570
755
  // If user specified a model, use only that model (no fallback)
571
756
  if (args.model) {
572
757
  // Error is already well-formatted by executeWithModel, just re-throw
573
- return await executeWithModel(args.model, settings, taskConfig, finalPrompt, execOptions, onProgress);
758
+ return await executeWithModel(args.model, settings, taskConfig, finalPrompt, execOptions, onProgress, onProcessSpawn);
574
759
  }
575
760
  // Use fallback chain
576
761
  const errors = [];
577
762
  for (const model of MODEL_FALLBACK_CHAIN) {
578
763
  try {
579
764
  onProgress?.(`🔄 Trying model: ${model}...\n`);
580
- return await executeWithModel(model, settings, taskConfig, finalPrompt, execOptions, onProgress);
765
+ return await executeWithModel(model, settings, taskConfig, finalPrompt, execOptions, onProgress, onProcessSpawn);
581
766
  }
582
767
  catch (error) {
583
768
  const errorMsg = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.tool.js","sourceRoot":"","sources":["../../src/tools/subagent.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.tool.js","sourceRoot":"","sources":["../../src/tools/subagent.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * SQLite-based persistent task store
3
+ * Replaces in-memory Map to support async task persistence across MCP sessions
4
+ */
5
+ import { type TaskType } from './constants.js';
6
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed';
7
+ export interface TaskState {
8
+ id: number;
9
+ status: TaskStatus;
10
+ task_type: TaskType;
11
+ progress: number;
12
+ result?: string;
13
+ error?: string;
14
+ started_at: string;
15
+ completed_at?: string;
16
+ updated_at: string;
17
+ pid?: number;
18
+ }
19
+ /**
20
+ * Generate unique 5-digit task ID
21
+ * Wraps around from TASK_ID_MAX back to TASK_ID_MIN
22
+ */
23
+ export declare function generateTaskId(): number;
24
+ /**
25
+ * Create a new task in pending state
26
+ */
27
+ export declare function createTask(taskType: TaskType): TaskState;
28
+ /**
29
+ * Update task status
30
+ */
31
+ export declare function updateTask(id: number, updates: Partial<TaskState>): TaskState | null;
32
+ /**
33
+ * Get task by ID
34
+ */
35
+ export declare function getTask(id: number): TaskState | null;
36
+ /**
37
+ * Get all completed or failed tasks
38
+ */
39
+ export declare function getCompletedTasks(): TaskState[];
40
+ /**
41
+ * Delete expired tasks (older than 1 hour)
42
+ * Call this periodically to clean up old tasks
43
+ */
44
+ export declare function cleanupExpiredTasks(): number;
45
+ /**
46
+ * Close database connection (call on shutdown)
47
+ */
48
+ export declare function closeDatabase(): void;
49
+ //# sourceMappingURL=task-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["../../src/tools/task-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAMxB,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAqGD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAqBxD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAmBpF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAgBpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,EAAE,CAe/C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * SQLite-based persistent task store
3
+ * Replaces in-memory Map to support async task persistence across MCP sessions
4
+ */
5
+ import Database from 'better-sqlite3';
6
+ import { join } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import { dirname } from 'path';
9
+ import { existsSync, mkdirSync } from 'fs';
10
+ import { TASK_ID_MIN, TASK_ID_MAX, TASK_EXPIRY_MS, CLEANUP_INTERVAL_MS, DATA_DIR_NAME, DB_FILE_NAME, } from './constants.js';
11
+ import { cleanupOrphanedTempFiles } from './cleanup.js';
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ // Database path - store in project root/.mcp-data directory
15
+ const DATA_DIR = join(__dirname, '../..', DATA_DIR_NAME);
16
+ const DB_PATH = join(DATA_DIR, DB_FILE_NAME);
17
+ // Ensure data directory exists
18
+ if (!existsSync(DATA_DIR)) {
19
+ mkdirSync(DATA_DIR, { recursive: true });
20
+ }
21
+ // Initialize database
22
+ const db = new Database(DB_PATH);
23
+ // Enable WAL mode for better concurrency
24
+ db.pragma('journal_mode = WAL');
25
+ // Create tasks table
26
+ db.exec(`
27
+ CREATE TABLE IF NOT EXISTS tasks (
28
+ id INTEGER PRIMARY KEY,
29
+ status TEXT NOT NULL,
30
+ task_type TEXT NOT NULL,
31
+ progress INTEGER NOT NULL DEFAULT 0,
32
+ result TEXT,
33
+ error TEXT,
34
+ started_at TEXT NOT NULL,
35
+ completed_at TEXT,
36
+ updated_at TEXT NOT NULL,
37
+ pid INTEGER
38
+ );
39
+
40
+ CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
41
+ CREATE INDEX IF NOT EXISTS idx_tasks_started_at ON tasks(started_at);
42
+ `);
43
+ // Migration: Add pid column if it doesn't exist (for existing databases)
44
+ try {
45
+ db.exec(`ALTER TABLE tasks ADD COLUMN pid INTEGER;`);
46
+ console.error('[TaskStore] Migration: Added pid column to existing database');
47
+ }
48
+ catch (error) {
49
+ // Column already exists or other error - safe to ignore
50
+ if (!error.message?.includes('duplicate column')) {
51
+ console.error('[TaskStore] Migration note:', error.message);
52
+ }
53
+ }
54
+ // Prepared statements for better performance
55
+ const insertTaskStmt = db.prepare(`
56
+ INSERT INTO tasks (id, status, task_type, progress, started_at, updated_at)
57
+ VALUES (?, ?, ?, ?, ?, ?)
58
+ `);
59
+ const updateTaskStmt = db.prepare(`
60
+ UPDATE tasks
61
+ SET status = ?, progress = ?, result = ?, error = ?, completed_at = ?, updated_at = ?, pid = ?
62
+ WHERE id = ?
63
+ `);
64
+ const getTaskStmt = db.prepare(`
65
+ SELECT * FROM tasks WHERE id = ?
66
+ `);
67
+ const getCompletedTasksStmt = db.prepare(`
68
+ SELECT * FROM tasks WHERE status IN ('completed', 'failed')
69
+ ORDER BY completed_at DESC
70
+ `);
71
+ const deleteTaskStmt = db.prepare(`
72
+ DELETE FROM tasks WHERE id = ?
73
+ `);
74
+ const deleteExpiredTasksStmt = db.prepare(`
75
+ DELETE FROM tasks
76
+ WHERE datetime(started_at, '+1 hour') < datetime('now')
77
+ `);
78
+ // ID counter - get max ID from database on startup
79
+ let taskIdCounter = TASK_ID_MIN;
80
+ const maxIdRow = db.prepare('SELECT MAX(id) as max_id FROM tasks').get();
81
+ if (maxIdRow.max_id && maxIdRow.max_id >= taskIdCounter) {
82
+ taskIdCounter = maxIdRow.max_id + 1;
83
+ }
84
+ /**
85
+ * Generate unique 5-digit task ID
86
+ * Wraps around from TASK_ID_MAX back to TASK_ID_MIN
87
+ */
88
+ export function generateTaskId() {
89
+ const id = taskIdCounter;
90
+ taskIdCounter++;
91
+ if (taskIdCounter > TASK_ID_MAX) {
92
+ taskIdCounter = TASK_ID_MIN;
93
+ }
94
+ return id;
95
+ }
96
+ /**
97
+ * Create a new task in pending state
98
+ */
99
+ export function createTask(taskType) {
100
+ const id = generateTaskId();
101
+ const now = new Date().toISOString();
102
+ const task = {
103
+ id,
104
+ status: 'pending',
105
+ task_type: taskType,
106
+ progress: 0,
107
+ started_at: now,
108
+ updated_at: now,
109
+ };
110
+ insertTaskStmt.run(id, task.status, task.task_type, task.progress, task.started_at, task.updated_at);
111
+ // Schedule cleanup after expiry (note: this only works if process stays alive)
112
+ setTimeout(() => {
113
+ deleteTaskStmt.run(id);
114
+ }, TASK_EXPIRY_MS);
115
+ return task;
116
+ }
117
+ /**
118
+ * Update task status
119
+ */
120
+ export function updateTask(id, updates) {
121
+ const task = getTask(id);
122
+ if (!task)
123
+ return null;
124
+ // Merge updates
125
+ const updatedTask = { ...task, ...updates, updated_at: new Date().toISOString() };
126
+ updateTaskStmt.run(updatedTask.status, updatedTask.progress, updatedTask.result || null, updatedTask.error || null, updatedTask.completed_at || null, updatedTask.updated_at, updatedTask.pid || null, id);
127
+ return updatedTask;
128
+ }
129
+ /**
130
+ * Get task by ID
131
+ */
132
+ export function getTask(id) {
133
+ const row = getTaskStmt.get(id);
134
+ if (!row)
135
+ return null;
136
+ return {
137
+ id: row.id,
138
+ status: row.status,
139
+ task_type: row.task_type,
140
+ progress: row.progress,
141
+ result: row.result || undefined,
142
+ error: row.error || undefined,
143
+ started_at: row.started_at,
144
+ completed_at: row.completed_at || undefined,
145
+ updated_at: row.updated_at,
146
+ pid: row.pid || undefined,
147
+ };
148
+ }
149
+ /**
150
+ * Get all completed or failed tasks
151
+ */
152
+ export function getCompletedTasks() {
153
+ const rows = getCompletedTasksStmt.all();
154
+ return rows.map(row => ({
155
+ id: row.id,
156
+ status: row.status,
157
+ task_type: row.task_type,
158
+ progress: row.progress,
159
+ result: row.result || undefined,
160
+ error: row.error || undefined,
161
+ started_at: row.started_at,
162
+ completed_at: row.completed_at || undefined,
163
+ updated_at: row.updated_at,
164
+ pid: row.pid || undefined,
165
+ }));
166
+ }
167
+ /**
168
+ * Delete expired tasks (older than 1 hour)
169
+ * Call this periodically to clean up old tasks
170
+ */
171
+ export function cleanupExpiredTasks() {
172
+ const result = deleteExpiredTasksStmt.run();
173
+ return result.changes;
174
+ }
175
+ /**
176
+ * Close database connection (call on shutdown)
177
+ */
178
+ export function closeDatabase() {
179
+ db.close();
180
+ }
181
+ // Cleanup expired tasks and orphaned temp files on startup
182
+ cleanupExpiredTasks();
183
+ cleanupOrphanedTempFiles();
184
+ // Periodic cleanup at configured interval
185
+ setInterval(() => {
186
+ const deleted = cleanupExpiredTasks();
187
+ if (deleted > 0) {
188
+ console.error(`[TaskStore] Cleaned up ${deleted} expired tasks`);
189
+ }
190
+ }, CLEANUP_INTERVAL_MS);
191
+ //# sourceMappingURL=task-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-store.js","sourceRoot":"","sources":["../../src/tools/task-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemini-helper-friend",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "Your autonomous AI helper that works on your codebase using Gemini CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -48,6 +48,8 @@
48
48
  ],
49
49
  "dependencies": {
50
50
  "@modelcontextprotocol/sdk": "^0.5.0",
51
+ "@types/better-sqlite3": "^7.6.13",
52
+ "better-sqlite3": "^12.5.0",
51
53
  "yaml": "^2.3.4",
52
54
  "zod": "^3.25.76",
53
55
  "zod-to-json-schema": "^3.24.6"