UNPKG

@iqai/adk-cli

Version:

CLI tool for creating, running, and testing ADK-TS agents

116 lines 4.89 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RunnerService = void 0; const adk_1 = require("@iqai/adk"); const common_1 = require("@nestjs/common"); const agent_manager_service_1 = require("../providers/agent-manager.service"); let RunnerService = class RunnerService { agentManager; sessionService; logger; constructor(agentManager, sessionService) { this.agentManager = agentManager; this.sessionService = sessionService; this.logger = new common_1.Logger("runner-service"); } /** * Execute agent and return all events at once */ async run(body) { const { appName, userId, sessionId, newMessage } = body; try { // Verify session exists const session = await this.sessionService.getSession(appName, userId, sessionId); if (!session) { throw new common_1.NotFoundException(`Session not found: ${sessionId}`); } // Get the loaded agent const loaded = this.agentManager.getLoadedAgents().get(appName); if (!loaded) { return { error: `Agent not loaded: ${appName}` }; } // Run the agent and collect all events const events = []; for await (const event of loaded.runner.runAsync({ userId, sessionId, newMessage, })) { events.push(event); } return { events }; } catch (error) { this.logger.error("Error running agent: %o", error); return { error: error.message }; } } /** * Execute agent with Server-Sent Events streaming */ async runSSE(body, res) { const { appName, userId, sessionId, newMessage, streaming } = body; try { // Verify session exists const session = await this.sessionService.getSession(appName, userId, sessionId); if (!session) { res.status(404).json({ error: `Session not found: ${sessionId}` }); return; } // Get the loaded agent const loaded = this.agentManager.getLoadedAgents().get(appName); if (!loaded) { res.status(404).json({ error: `Agent not loaded: ${appName}` }); return; } // Set up SSE headers res.setHeader("Cache-Control", "no-cache"); res.setHeader("Content-Type", "text/event-stream"); res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader("Connection", "keep-alive"); res.flushHeaders(); // Stream events for await (const event of loaded.runner.runAsync({ userId, sessionId, newMessage, runConfig: new adk_1.RunConfig({ streamingMode: streaming ? adk_1.StreamingMode.SSE : adk_1.StreamingMode.NONE, }), })) { res.write(`data: ${JSON.stringify(event)}\n\n`); } res.end(); } catch (error) { this.logger.error("Error running agent with SSE: %o", error); if (res.headersSent) { res.end(`data: ${JSON.stringify({ error: error.message })}\n\n`); } else { res.status(500).json({ error: error.message }); } } } }; exports.RunnerService = RunnerService; exports.RunnerService = RunnerService = __decorate([ (0, common_1.Injectable)(), __param(0, (0, common_1.Inject)(agent_manager_service_1.AgentManager)), __param(1, (0, common_1.Inject)(adk_1.InMemorySessionService)), __metadata("design:paramtypes", [agent_manager_service_1.AgentManager, adk_1.InMemorySessionService]) ], RunnerService); //# sourceMappingURL=runner.service.js.map