adk-typescript
Version:
TypeScript port of Google's Agent Development Kit (ADK)
65 lines (64 loc) • 2.06 kB
JavaScript
;
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;