manage_session
Approve coding plans or send feedback for active Jules coding sessions to control autonomous development tasks.
Instructions
Manage an active Jules session: approve plans or send feedback
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session ID | |
| action | Yes | Action to perform | |
| message | No | Message (required for send_message) |
Implementation Reference
- src/mcp/tools.ts:202-236 (handler)The `manageSession` method in the `JulesTools` class that implements the core execution logic for the `manage_session` tool. It handles `approve_plan` by calling `client.approvePlan` and `send_message` by calling `client.sendMessage`, with consistent error handling.* Tool: manage_session * Manages session lifecycle (approve plan, send feedback). * @param args - The arguments for managing a session. * @returns A JSON string representing the result of the action. */ async manageSession( args: z.infer<typeof ManageSessionSchema> ): Promise<string> { return this.executeWithErrorHandling(async () => { if (args.action === 'approve_plan') { const session = await this.client.approvePlan(args.session_id); return { message: 'Plan approved. Session is now executing.', newState: session.state, }; } if (args.action === 'send_message') { if (!args.message) { throw new Error('Message is required for send_message action'); } const session = await this.client.sendMessage(args.session_id, { prompt: args.message, }); return { message: 'Feedback sent to session', newState: session.state, }; } throw new Error('Invalid action'); }); }
- src/mcp/tools.ts:55-69 (schema)Zod input validation schema for the `manage_session` tool, defining `session_id`, `action` (enum: approve_plan, send_message), and optional `message`.export const ManageSessionSchema = z.object({ session_id: z .string() .regex(/^[\w-]+$/, 'Session ID contains invalid characters') .describe('The ID of the session to manage'), action: z .enum(['approve_plan', 'send_message']) .describe('Action to perform on the session'), message: z .string() .min(1, 'Message cannot be empty') .max(5000, 'Message must not exceed 5,000 characters') .optional() .describe('Message content (required for send_message action)'), });
- src/index.ts:322-325 (registration)Dispatch handler in `CallToolRequestSchema` that validates input with `ManageSessionSchema` and delegates to `this.tools.manageSession`.case 'manage_session': { const validated = ManageSessionSchema.parse(args); result = await this.tools.manageSession(validated); break;
- src/index.ts:226-245 (registration)Tool registration in `ListToolsRequestSchema` response, providing name, description, and input schema mirroring the Zod schema.name: 'manage_session', description: 'Manage an active Jules session: approve plans or send feedback', inputSchema: { type: 'object', properties: { session_id: { type: 'string', description: 'Session ID' }, action: { type: 'string', enum: ['approve_plan', 'send_message'], description: 'Action to perform', }, message: { type: 'string', description: 'Message (required for send_message)', }, }, required: ['session_id', 'action'], }, },