gemini-helper-friend 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/README.md +216 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +22 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +193 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/templates/completion-inspector.mdx +648 -0
- package/dist/config/templates/helper-friend.mdx +763 -0
- package/dist/config/templates/manual-tester.mdx +950 -0
- package/dist/config/types.d.ts +90 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +6 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/yaml/subagents.yaml +449 -0
- package/dist/config/yaml/tools.yaml +0 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +253 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/agentic-task.tool.d.ts +2 -0
- package/dist/tools/agentic-task.tool.d.ts.map +1 -0
- package/dist/tools/agentic-task.tool.js +2 -0
- package/dist/tools/agentic-task.tool.js.map +1 -0
- package/dist/tools/extension-manager.tool.d.ts +2 -0
- package/dist/tools/extension-manager.tool.d.ts.map +1 -0
- package/dist/tools/extension-manager.tool.js +2 -0
- package/dist/tools/extension-manager.tool.js.map +1 -0
- package/dist/tools/gemini-task.tool.d.ts +2 -0
- package/dist/tools/gemini-task.tool.d.ts.map +1 -0
- package/dist/tools/gemini-task.tool.js +2 -0
- package/dist/tools/gemini-task.tool.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/session-manager.tool.d.ts +2 -0
- package/dist/tools/session-manager.tool.d.ts.map +1 -0
- package/dist/tools/session-manager.tool.js +2 -0
- package/dist/tools/session-manager.tool.js.map +1 -0
- package/dist/tools/structured-query.tool.d.ts +2 -0
- package/dist/tools/structured-query.tool.d.ts.map +1 -0
- package/dist/tools/structured-query.tool.js +2 -0
- package/dist/tools/structured-query.tool.js.map +1 -0
- package/dist/tools/subagent.tool.d.ts +75 -0
- package/dist/tools/subagent.tool.d.ts.map +1 -0
- package/dist/tools/subagent.tool.js +604 -0
- package/dist/tools/subagent.tool.js.map +1 -0
- package/dist/utils/geminiExecutor.d.ts +2 -0
- package/dist/utils/geminiExecutor.d.ts.map +1 -0
- package/dist/utils/geminiExecutor.js +2 -0
- package/dist/utils/geminiExecutor.js.map +1 -0
- package/package.json +62 -0
- package/src/config/templates/completion-inspector.mdx +648 -0
- package/src/config/templates/helper-friend.mdx +763 -0
- package/src/config/templates/manual-tester.mdx +950 -0
- package/src/config/yaml/subagents.yaml +449 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript interfaces for YAML tool configuration
|
|
3
|
+
* Matches structure defined in yaml/tools.yaml
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Validation rules for parameters
|
|
7
|
+
*/
|
|
8
|
+
export interface YamlValidation {
|
|
9
|
+
minLength?: number;
|
|
10
|
+
maxLength?: number;
|
|
11
|
+
pattern?: string;
|
|
12
|
+
format?: 'uri' | 'email' | 'uuid';
|
|
13
|
+
min?: number;
|
|
14
|
+
max?: number;
|
|
15
|
+
int?: boolean;
|
|
16
|
+
positive?: boolean;
|
|
17
|
+
negative?: boolean;
|
|
18
|
+
minItems?: number;
|
|
19
|
+
maxItems?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parameter definition in YAML
|
|
23
|
+
*/
|
|
24
|
+
export interface YamlParameter {
|
|
25
|
+
type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object';
|
|
26
|
+
required?: boolean;
|
|
27
|
+
default?: unknown;
|
|
28
|
+
description?: string;
|
|
29
|
+
validation?: YamlValidation;
|
|
30
|
+
items?: YamlParameter;
|
|
31
|
+
properties?: Record<string, YamlParameter>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Tool definition in YAML
|
|
35
|
+
*/
|
|
36
|
+
export interface YamlToolConfig {
|
|
37
|
+
name: string;
|
|
38
|
+
category?: string;
|
|
39
|
+
capability?: string;
|
|
40
|
+
description: string;
|
|
41
|
+
parameters?: Record<string, YamlParameter>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Global settings from YAML
|
|
45
|
+
*/
|
|
46
|
+
export interface YamlSettings {
|
|
47
|
+
defaults: {
|
|
48
|
+
model: string;
|
|
49
|
+
yolo_mode: boolean;
|
|
50
|
+
append_instructions: boolean;
|
|
51
|
+
};
|
|
52
|
+
cli: {
|
|
53
|
+
command: string;
|
|
54
|
+
flags: {
|
|
55
|
+
yolo: string;
|
|
56
|
+
model: string;
|
|
57
|
+
sandbox: string;
|
|
58
|
+
output_format: string;
|
|
59
|
+
approval_mode: string;
|
|
60
|
+
include_directories: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Root YAML configuration structure
|
|
66
|
+
*/
|
|
67
|
+
export interface YamlConfig {
|
|
68
|
+
version: string;
|
|
69
|
+
metadata: {
|
|
70
|
+
name: string;
|
|
71
|
+
displayName: string;
|
|
72
|
+
description: string;
|
|
73
|
+
};
|
|
74
|
+
settings: YamlSettings;
|
|
75
|
+
task_types: Record<string, any>;
|
|
76
|
+
tools: YamlToolConfig[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* MCP Tool definition (matches SDK)
|
|
80
|
+
*/
|
|
81
|
+
export interface McpTool {
|
|
82
|
+
name: string;
|
|
83
|
+
description: string;
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: 'object';
|
|
86
|
+
properties: Record<string, unknown>;
|
|
87
|
+
required?: string[];
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;QACnB,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;YAChB,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC;YACtB,mBAAmB,EAAE,MAAM,CAAC;SAC7B,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
# Gemini Helper Friend MCP - Subagent Configuration
|
|
2
|
+
# YAML for metadata only - prompt templates in MDX files
|
|
3
|
+
# Version: 2.0
|
|
4
|
+
|
|
5
|
+
version: "2.0"
|
|
6
|
+
|
|
7
|
+
metadata:
|
|
8
|
+
name: "gemini-helper-friend-mcp"
|
|
9
|
+
displayName: "Gemini - Helper Friend MCP"
|
|
10
|
+
description: "Autonomous AI helper with specialized task types"
|
|
11
|
+
|
|
12
|
+
# ============================================================================
|
|
13
|
+
# GLOBAL SETTINGS
|
|
14
|
+
# ============================================================================
|
|
15
|
+
|
|
16
|
+
settings:
|
|
17
|
+
defaults:
|
|
18
|
+
model: "" # Uses fallback chain (see below)
|
|
19
|
+
yolo_mode: true
|
|
20
|
+
append_instructions: true
|
|
21
|
+
|
|
22
|
+
# Model fallback chain - tries in order until one succeeds
|
|
23
|
+
# 1. gemini-3-flash-preview (fastest, newest)
|
|
24
|
+
# 2. gemini-3-pro-preview (more capable)
|
|
25
|
+
# 3. gemini-3-pro (stable)
|
|
26
|
+
# 4. gemini-2.5-flash (reliable fallback)
|
|
27
|
+
|
|
28
|
+
cli:
|
|
29
|
+
command: "gemini"
|
|
30
|
+
# Per gemini --help: use positional prompt (--prompt is deprecated)
|
|
31
|
+
flags:
|
|
32
|
+
yolo: "--yolo"
|
|
33
|
+
model: "--model"
|
|
34
|
+
sandbox: "--sandbox"
|
|
35
|
+
output_format: "--output-format"
|
|
36
|
+
approval_mode: "--approval-mode"
|
|
37
|
+
include_directories: "--include-directories"
|
|
38
|
+
|
|
39
|
+
# ============================================================================
|
|
40
|
+
# TASK TYPE DEFINITIONS (Metadata Only - Templates in MDX)
|
|
41
|
+
# ============================================================================
|
|
42
|
+
|
|
43
|
+
task_types:
|
|
44
|
+
|
|
45
|
+
completion-inspector:
|
|
46
|
+
display_name: "Completion Inspector"
|
|
47
|
+
description: "CTO-level code inspector that verifies if a task is TRULY 100% complete"
|
|
48
|
+
category: "verification"
|
|
49
|
+
default_model: "" # Auto-select
|
|
50
|
+
template_file: "completion-inspector.mdx"
|
|
51
|
+
|
|
52
|
+
tool_limits:
|
|
53
|
+
sequentialthinking_max: 30
|
|
54
|
+
sequentialthinking_min: 15
|
|
55
|
+
warpgrep_max: 20
|
|
56
|
+
warpgrep_min: 8
|
|
57
|
+
deep_research_max: 30
|
|
58
|
+
web_search_keywords_max: 100
|
|
59
|
+
|
|
60
|
+
helper-friend:
|
|
61
|
+
display_name: "Helper Friend"
|
|
62
|
+
description: "Research companion for deep analysis, bug investigation, and informed decision-making"
|
|
63
|
+
category: "research"
|
|
64
|
+
default_model: "" # Auto-select
|
|
65
|
+
template_file: "helper-friend.mdx"
|
|
66
|
+
|
|
67
|
+
tool_limits:
|
|
68
|
+
sequentialthinking_max: 30
|
|
69
|
+
sequentialthinking_min: 10
|
|
70
|
+
warpgrep_max: 20
|
|
71
|
+
warpgrep_min: 4
|
|
72
|
+
deep_research_questions_max: 100
|
|
73
|
+
deep_research_per_call: 10
|
|
74
|
+
web_search_keywords_max: 500
|
|
75
|
+
web_search_per_call: 50
|
|
76
|
+
scrape_urls_max: 100
|
|
77
|
+
scrape_per_call: 30
|
|
78
|
+
reddit_posts_max: 100
|
|
79
|
+
reddit_per_call: 50
|
|
80
|
+
|
|
81
|
+
manual-tester:
|
|
82
|
+
display_name: "Manual Tester"
|
|
83
|
+
description: "QA engineer who manually tests implementation using real Chrome browser and terminal"
|
|
84
|
+
category: "testing"
|
|
85
|
+
default_model: "" # Auto-select
|
|
86
|
+
template_file: "manual-tester.mdx"
|
|
87
|
+
|
|
88
|
+
tool_limits:
|
|
89
|
+
sequentialthinking_max: 30
|
|
90
|
+
sequentialthinking_min: 15
|
|
91
|
+
browser_interactions_max: 50
|
|
92
|
+
viewports_max: 5
|
|
93
|
+
screenshots_max: 30
|
|
94
|
+
api_calls_max: 50
|
|
95
|
+
warpgrep_max: 10
|
|
96
|
+
|
|
97
|
+
# ============================================================================
|
|
98
|
+
# TOOL DEFINITION (Single consolidated tool)
|
|
99
|
+
# ============================================================================
|
|
100
|
+
|
|
101
|
+
tools:
|
|
102
|
+
- name: check_subagent_task
|
|
103
|
+
category: status
|
|
104
|
+
capability: query
|
|
105
|
+
|
|
106
|
+
description: |
|
|
107
|
+
**🔔 CHECK IF TASK IS READY - Notification-Aware Status Check**
|
|
108
|
+
|
|
109
|
+
Check if an async subagent task is ready to retrieve results.
|
|
110
|
+
|
|
111
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
112
|
+
📣 MCP NOTIFICATIONS (Automatic!)
|
|
113
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
114
|
+
|
|
115
|
+
**You will receive automatic notifications when tasks complete!**
|
|
116
|
+
|
|
117
|
+
When a task finishes, the server sends:
|
|
118
|
+
- `notifications/resources/list_changed` → New result resource available
|
|
119
|
+
- `notifications/resources/updated` → Specific task resource updated
|
|
120
|
+
|
|
121
|
+
**If your client supports MCP notifications:**
|
|
122
|
+
- You'll see "🎉 Task 34567 is READY!" in the resources list
|
|
123
|
+
- Just read the `task://34567` resource to get the result
|
|
124
|
+
- No polling needed!
|
|
125
|
+
|
|
126
|
+
**If your client doesn't support notifications:**
|
|
127
|
+
- Use this tool to poll the task status
|
|
128
|
+
- Check every 5-10 seconds until `status: completed`
|
|
129
|
+
|
|
130
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
131
|
+
📚 RESOURCES (Best Practice!)
|
|
132
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
133
|
+
|
|
134
|
+
**Completed tasks are also exposed as MCP Resources:**
|
|
135
|
+
|
|
136
|
+
- **URI:** `task://34567`
|
|
137
|
+
- **Name:** `✅ Task 34567 - helper-friend`
|
|
138
|
+
- **Description:** `🎉 Task 34567 is READY! Result available.`
|
|
139
|
+
|
|
140
|
+
You can read the resource directly instead of using this tool:
|
|
141
|
+
```
|
|
142
|
+
Read resource: task://34567
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
146
|
+
📊 TASK STATES
|
|
147
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
148
|
+
|
|
149
|
+
- `pending` - Task queued, not yet started
|
|
150
|
+
- `running` - 🔄 Task in progress (check back soon!)
|
|
151
|
+
- `completed` - ✅ **READY!** Result available
|
|
152
|
+
- `failed` - ❌ Task failed (error message available)
|
|
153
|
+
- `not_found` - Invalid task ID or expired (1 hour TTL)
|
|
154
|
+
|
|
155
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
156
|
+
📋 RESPONSE EXAMPLES
|
|
157
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
158
|
+
|
|
159
|
+
**🔄 Still Running:**
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"task_id": 34567,
|
|
163
|
+
"status": "running",
|
|
164
|
+
"progress": 45,
|
|
165
|
+
"task_type": "helper-friend",
|
|
166
|
+
"started_at": "2024-01-15T10:30:00Z"
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
→ Wait and check again, or wait for notification!
|
|
170
|
+
|
|
171
|
+
**✅ READY - Task Completed:**
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"task_id": 34567,
|
|
175
|
+
"status": "completed",
|
|
176
|
+
"result": "## Helper Friend Result\n\n...",
|
|
177
|
+
"task_type": "helper-friend",
|
|
178
|
+
"completed_at": "2024-01-15T10:35:00Z",
|
|
179
|
+
"duration_seconds": 300
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
→ 🎉 Result is in the response! Also available as resource `task://34567`
|
|
183
|
+
|
|
184
|
+
**❌ Task Failed:**
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"task_id": 34567,
|
|
188
|
+
"status": "failed",
|
|
189
|
+
"error": "API quota exceeded",
|
|
190
|
+
"task_type": "helper-friend"
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
parameters:
|
|
195
|
+
task_id:
|
|
196
|
+
type: integer
|
|
197
|
+
required: true
|
|
198
|
+
description: |
|
|
199
|
+
**[REQUIRED] 5-digit task ID**
|
|
200
|
+
|
|
201
|
+
The task ID returned by `gemini-subagent` when called with `async: true`.
|
|
202
|
+
|
|
203
|
+
Example: `34567`
|
|
204
|
+
|
|
205
|
+
**Pro tip:** If your client supports notifications, you'll see completed
|
|
206
|
+
tasks appear in the resources list automatically!
|
|
207
|
+
|
|
208
|
+
- name: gemini-subagent
|
|
209
|
+
category: execution
|
|
210
|
+
capability: autonomous
|
|
211
|
+
|
|
212
|
+
description: |
|
|
213
|
+
**🤖 GEMINI SUBAGENT - Specialized Task Execution**
|
|
214
|
+
|
|
215
|
+
Single unified tool with three specialized modes via strict task_type enum.
|
|
216
|
+
|
|
217
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
218
|
+
📋 TASK TYPE ENUM (Required - NO STRINGS, NO GUESSING!)
|
|
219
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
220
|
+
|
|
221
|
+
Must be EXACTLY one of these three values:
|
|
222
|
+
|
|
223
|
+
**1. `completion-inspector`** - CTO-Level Code Review
|
|
224
|
+
|
|
225
|
+
**Purpose:** Verifies if a task is TRULY 100% complete
|
|
226
|
+
|
|
227
|
+
**Uses:**
|
|
228
|
+
- Git diff analysis (line-by-line change review)
|
|
229
|
+
- Codebase search (find duplicates, missed abstractions)
|
|
230
|
+
- Pattern detection (consistency with existing code)
|
|
231
|
+
- Quality assessment (cleanup opportunities)
|
|
232
|
+
|
|
233
|
+
**When to use:**
|
|
234
|
+
- ✅ After implementation, before marking "done"
|
|
235
|
+
- ✅ After major refactoring or feature work
|
|
236
|
+
- ✅ Before committing final changes
|
|
237
|
+
- ✅ When you suspect cleanup is needed
|
|
238
|
+
|
|
239
|
+
**When NOT to use:**
|
|
240
|
+
- ❌ Task clearly still in progress
|
|
241
|
+
- ❌ Haven't made any changes yet
|
|
242
|
+
- ❌ Simple one-line changes
|
|
243
|
+
|
|
244
|
+
**Output:** Completion %, requirements met/not met, quality issues, action items
|
|
245
|
+
|
|
246
|
+
**Model:** Auto-select (Gemini CLI chooses best)
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
**2. `helper-friend`** - Research Companion
|
|
251
|
+
|
|
252
|
+
**Purpose:** Deep analysis, bug investigation, informed decision-making
|
|
253
|
+
|
|
254
|
+
**Uses:**
|
|
255
|
+
- Codebase search (understand code structure)
|
|
256
|
+
- Web research (best practices, documentation)
|
|
257
|
+
- Deep research (technical questions with file attachments)
|
|
258
|
+
- Reddit consensus (community experiences)
|
|
259
|
+
|
|
260
|
+
**When to use:**
|
|
261
|
+
- ✅ Bug investigation & root cause analysis
|
|
262
|
+
- ✅ Architecture & technology decisions
|
|
263
|
+
- ✅ Codebase understanding & discovery
|
|
264
|
+
- ✅ Best practices & pattern research
|
|
265
|
+
- ✅ Pre-implementation research
|
|
266
|
+
|
|
267
|
+
**When NOT to use:**
|
|
268
|
+
- ❌ Already know what to do, just need to code
|
|
269
|
+
- ❌ Simple questions you can answer yourself
|
|
270
|
+
- ❌ Tasks needing immediate action, not research
|
|
271
|
+
|
|
272
|
+
**Output:** Research findings, recommendations, trade-offs, sources
|
|
273
|
+
|
|
274
|
+
**Model:** Auto-select (Gemini CLI chooses best)
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
**3. `manual-tester`** - QA Engineer with Real Browser
|
|
279
|
+
|
|
280
|
+
**Purpose:** Tests if implementation actually WORKS using real Chrome browser
|
|
281
|
+
|
|
282
|
+
**Uses:**
|
|
283
|
+
- Chrome DevTools MCP (real browser interactions)
|
|
284
|
+
- Terminal/curl (API testing)
|
|
285
|
+
- Screenshots (visual verification)
|
|
286
|
+
- Console monitoring (JS error detection)
|
|
287
|
+
- Network inspection (API call verification)
|
|
288
|
+
|
|
289
|
+
**When to use:**
|
|
290
|
+
- ✅ After completion-inspector confirms 100% code complete
|
|
291
|
+
- ✅ Frontend changes need testing
|
|
292
|
+
- ✅ Backend/API changes need testing
|
|
293
|
+
- ✅ Full flow verification
|
|
294
|
+
- ✅ Responsive design verification
|
|
295
|
+
|
|
296
|
+
**When NOT to use:**
|
|
297
|
+
- ❌ Code isn't complete yet
|
|
298
|
+
- ❌ No user-facing changes to test
|
|
299
|
+
- ❌ Pure refactoring with no behavior changes
|
|
300
|
+
|
|
301
|
+
**Output:** Test report with pass/fail, reproduction steps, screenshots, console errors
|
|
302
|
+
|
|
303
|
+
**Model:** Auto-select (Gemini CLI chooses best)
|
|
304
|
+
|
|
305
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
306
|
+
⚙️ HOW IT WORKS
|
|
307
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
308
|
+
|
|
309
|
+
1. You select task_type enum (strict validation)
|
|
310
|
+
2. System loads corresponding MDX template
|
|
311
|
+
3. Merges template + your prompt
|
|
312
|
+
4. Executes: `gemini --yolo -p "[merged_prompt]"`
|
|
313
|
+
5. Returns specialized result
|
|
314
|
+
|
|
315
|
+
**No shell commands, no intermediate steps** - Pure CLI-to-prompt translation.
|
|
316
|
+
|
|
317
|
+
parameters:
|
|
318
|
+
task_type:
|
|
319
|
+
type: string
|
|
320
|
+
required: true
|
|
321
|
+
validation:
|
|
322
|
+
pattern: "^(completion-inspector|helper-friend|manual-tester)$"
|
|
323
|
+
description: |
|
|
324
|
+
**[REQUIRED] Task type enum - NO STRINGS, NO GUESSING**
|
|
325
|
+
|
|
326
|
+
Must be EXACTLY one of:
|
|
327
|
+
- `completion-inspector` - Code review and verification
|
|
328
|
+
- `helper-friend` - Research and investigation
|
|
329
|
+
- `manual-tester` - QA testing with browser
|
|
330
|
+
|
|
331
|
+
The system will load the appropriate MDX template and merge with your prompt.
|
|
332
|
+
|
|
333
|
+
prompt:
|
|
334
|
+
type: string
|
|
335
|
+
required: true
|
|
336
|
+
validation:
|
|
337
|
+
minLength: 20
|
|
338
|
+
description: |
|
|
339
|
+
**[REQUIRED] Your task-specific prompt**
|
|
340
|
+
|
|
341
|
+
This will be merged with the task type's MDX template.
|
|
342
|
+
|
|
343
|
+
**For completion-inspector, provide:**
|
|
344
|
+
- Original task requirements
|
|
345
|
+
- Acceptance criteria
|
|
346
|
+
- Implementation summary
|
|
347
|
+
- Files changed with descriptions
|
|
348
|
+
- START_COMMIT hash
|
|
349
|
+
- Why you think it's complete
|
|
350
|
+
|
|
351
|
+
**For helper-friend, provide:**
|
|
352
|
+
- Ultimate goal and success criteria
|
|
353
|
+
- Current situation
|
|
354
|
+
- Files involved with descriptions
|
|
355
|
+
- What you've tried
|
|
356
|
+
- Current blocker/question
|
|
357
|
+
- Constraints
|
|
358
|
+
|
|
359
|
+
**For manual-tester, provide:**
|
|
360
|
+
- Frontend URL (MANDATORY!)
|
|
361
|
+
- Backend URL (if applicable)
|
|
362
|
+
- Auth credentials
|
|
363
|
+
- Feature description
|
|
364
|
+
- Expected behaviors
|
|
365
|
+
- Test data
|
|
366
|
+
- Edge cases to test
|
|
367
|
+
|
|
368
|
+
Minimum 20 characters required.
|
|
369
|
+
|
|
370
|
+
model:
|
|
371
|
+
type: string
|
|
372
|
+
required: false
|
|
373
|
+
description: |
|
|
374
|
+
**[OPTIONAL] Override model selection**
|
|
375
|
+
|
|
376
|
+
Leave empty to use task type's default:
|
|
377
|
+
- completion-inspector: gemini-3-pro
|
|
378
|
+
- helper-friend: auto-select
|
|
379
|
+
- manual-tester: gemini-3-pro
|
|
380
|
+
|
|
381
|
+
Available: `gemini-3-pro`, `gemini-3-flash`
|
|
382
|
+
|
|
383
|
+
sandbox:
|
|
384
|
+
type: boolean
|
|
385
|
+
required: false
|
|
386
|
+
default: false
|
|
387
|
+
description: |
|
|
388
|
+
**[OPTIONAL] Run in sandbox mode**
|
|
389
|
+
|
|
390
|
+
Enables sandbox isolation for safer execution.
|
|
391
|
+
Flag: --sandbox / -s
|
|
392
|
+
|
|
393
|
+
approval_mode:
|
|
394
|
+
type: string
|
|
395
|
+
required: false
|
|
396
|
+
description: |
|
|
397
|
+
**[OPTIONAL] Override approval mode**
|
|
398
|
+
|
|
399
|
+
Valid values:
|
|
400
|
+
- `default` - Prompt for approval
|
|
401
|
+
- `auto_edit` - Auto-approve edit tools
|
|
402
|
+
- `yolo` - Auto-approve all tools
|
|
403
|
+
|
|
404
|
+
Leave empty to use --yolo (auto-approve all)
|
|
405
|
+
|
|
406
|
+
include_directories:
|
|
407
|
+
type: string
|
|
408
|
+
required: false
|
|
409
|
+
description: |
|
|
410
|
+
**[OPTIONAL] Include additional directories**
|
|
411
|
+
|
|
412
|
+
Comma-separated list of directories to include.
|
|
413
|
+
Example: "src,docs,tests"
|
|
414
|
+
|
|
415
|
+
include_instructions:
|
|
416
|
+
type: boolean
|
|
417
|
+
required: false
|
|
418
|
+
default: true
|
|
419
|
+
description: |
|
|
420
|
+
Include task-specific instructions from MDX template.
|
|
421
|
+
Default: true (recommended)
|
|
422
|
+
Set false: For custom prompts that don't need template
|
|
423
|
+
|
|
424
|
+
async:
|
|
425
|
+
type: boolean
|
|
426
|
+
required: false
|
|
427
|
+
default: true
|
|
428
|
+
description: |
|
|
429
|
+
**[OPTIONAL] Async execution mode**
|
|
430
|
+
|
|
431
|
+
**Default: true (async)**
|
|
432
|
+
- Returns immediately with a 5-digit task ID (e.g., 34567)
|
|
433
|
+
- Task runs in background
|
|
434
|
+
- Query status with `check_subagent_task` tool using the task ID
|
|
435
|
+
- Results stored in memory until retrieved
|
|
436
|
+
|
|
437
|
+
**Set to false (sync/blocking):**
|
|
438
|
+
- Blocks until task completes
|
|
439
|
+
- Returns full result directly
|
|
440
|
+
- Use for quick tasks where you need immediate result
|
|
441
|
+
|
|
442
|
+
**Example async flow:**
|
|
443
|
+
1. Call `gemini-subagent` with `async: true` (default)
|
|
444
|
+
2. Receive: `{"task_id": 34567, "status": "running"}`
|
|
445
|
+
3. Later: Call `check_subagent_task` with `task_id: 34567`
|
|
446
|
+
4. Receive: `{"status": "completed", "result": "..."}` or `{"status": "running"}`
|
|
447
|
+
|
|
448
|
+
**⚠️ IMPORTANT:** When async=true, the response is NOT the result!
|
|
449
|
+
You MUST call `check_subagent_task` to get the actual result.
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|