'object', 'properties' => [ 'previous_session_id' => [ 'type' => 'string', 'description' => 'Session ID to continue from', ], 'agent_type' => [ 'type' => 'string', 'description' => 'New agent type taking over', ], ], 'required' => ['previous_session_id', 'agent_type'], ]; } public function handle(array $args, array $context = []): array { try { $previousSessionId = $this->require($args, 'previous_session_id'); $agentType = $this->require($args, 'agent_type'); } catch (\InvalidArgumentException $e) { return $this->error($e->getMessage()); } $sessionService = app(AgentSessionService::class); $session = $sessionService->continueFrom($previousSessionId, $agentType); if (! $session) { return $this->error("Previous session not found: {$previousSessionId}"); } $inheritedContext = $session->context_summary ?? []; return $this->success([ 'session' => [ 'session_id' => $session->session_id, 'agent_type' => $session->agent_type, 'status' => $session->status, 'plan' => $session->plan?->slug, ], 'continued_from' => $inheritedContext['continued_from'] ?? null, 'previous_agent' => $inheritedContext['previous_agent'] ?? null, 'handoff_notes' => $inheritedContext['handoff_notes'] ?? null, 'inherited_context' => $inheritedContext['inherited_context'] ?? null, ]); } }