UNPKG

adk-typescript

Version:

TypeScript port of Google's Agent Development Kit (ADK)

65 lines (64 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseSessionService = void 0; const State_1 = require("./State"); /** * Base abstract class for session services. * Provides common functionality and defines the interface that concrete implementations must follow. */ class BaseSessionService { /** * Closes a session. * * @param options.session - The session to close */ closeSession(options) { // TODO: determine whether we want to finalize the session here. return; } /** * Appends an event to a session. * * @param options.session - The session to append to * @param options.event - The event to append * @returns The event that was appended */ appendEvent(options) { const { session, event } = options; if (event.partial) { session.events.push(event); return; } this._updateSessionStateFromEvent(session, event); session.events.push(event); } /** * Updates the session state based on the event. * * @param session - The session to update * @param event - The event to update from */ _updateSessionStateFromEvent(session, event) { if (!event.actions || !event.actions.stateDelta) { return; } const statesToUpdate = {}; for (const [key, value] of Object.entries(event.actions.stateDelta)) { if (key.startsWith(State_1.StatePrefix.TEMP_PREFIX)) { continue; } statesToUpdate[key] = value; } // Use the update method if available (similar to Python's dict.update()) if (session.state.update) { session.state.update(statesToUpdate); } else { // Fallback to using set method for (const [key, value] of Object.entries(statesToUpdate)) { session.state.set(key, value); } } } } exports.BaseSessionService = BaseSessionService;