@robota-sdk/sessions
Version:
Session and chat management for Robota SDK - multi-session support with independent workspaces
294 lines (287 loc) • 7.88 kB
TypeScript
import { AgentConfig, Robota, Message, AgentFactory, AgentTemplate } from '@robota-sdk/agents';
export { AgentConfig, AgentInterface, ConversationHistory, ConversationSession, Message, RunOptions } from '@robota-sdk/agents';
/**
* Simple message content type
*/
type MessageContent = string;
/**
* Chat configuration interface - simplified
*/
interface ChatConfig {
chatName?: string;
description?: string;
robotaConfig: AgentConfig;
agentTemplate?: string;
}
/**
* Chat metadata interface - simplified
*/
interface ChatMetadata {
chatId: string;
sessionId: string;
chatName: string;
description?: string;
createdAt: Date;
updatedAt: Date;
lastAccessedAt: Date;
messageCount: number;
isActive: boolean;
}
/**
* Template manager interface for agent templates
*/
interface TemplateManager {
getTemplate(name: string): AgentConfig | undefined;
listTemplates(): string[];
validateTemplate(config: AgentConfig): boolean;
}
/**
* Simplified chat instance interface - just a wrapper around Robota
*/
interface ChatInstance$1 {
readonly metadata: ChatMetadata;
readonly config: ChatConfig;
readonly robota: Robota;
sendMessage(content: MessageContent): Promise<string>;
regenerateResponse(): Promise<string>;
updateRobotaConfig(config: AgentConfig): Promise<void>;
getRobotaConfig(): AgentConfig;
upgradeToTemplate?(templateName: string): Promise<void>;
getTemplateManager?(): TemplateManager;
activate(): void;
deactivate(): void;
getHistory(): Message[];
clearHistory(): void;
save(): Promise<void>;
load(): Promise<void>;
getStats(): ChatStats;
updateConfig(config: Partial<ChatConfig>): void;
}
/**
* Chat statistics interface - simplified
*/
interface ChatStats {
messageCount: number;
createdAt: Date;
lastActivity: Date;
totalTokens?: number;
averageResponseTime?: number;
}
/**
* Simple ChatInstance implementation - wrapper around Robota
*
* Focuses on the core purpose: managing a single AI agent instance
* within a session context. Delegates conversation management to Robota.
*/
declare class ChatInstance implements ChatInstance$1 {
readonly metadata: ChatMetadata;
readonly config: ChatConfig;
readonly robota: Robota;
private templateManager;
constructor(metadata: ChatMetadata, config: ChatConfig, robota: Robota);
/**
* Send a message and get AI response
*/
sendMessage(content: MessageContent): Promise<string>;
/**
* Regenerate the last response
*/
regenerateResponse(): Promise<string>;
/**
* Update robota configuration
*/
updateRobotaConfig(config: AgentConfig): Promise<void>;
/**
* Get current robota configuration
*/
getRobotaConfig(): AgentConfig;
/**
* Upgrade to use an agent template
*/
upgradeToTemplate(templateName: string): Promise<void>;
/**
* Get template manager instance
*/
getTemplateManager(): TemplateManager;
/**
* Activate this chat session
*/
activate(): void;
/**
* Deactivate this chat session
*/
deactivate(): void;
/**
* Get conversation history - delegate to Robota
*/
getHistory(): Message[];
/**
* Clear conversation history - delegate to Robota
*/
clearHistory(): void;
/**
* Save chat state
*/
save(): Promise<void>;
/**
* Load chat state
*/
load(): Promise<void>;
/**
* Get chat statistics
*/
getStats(): ChatStats;
/**
* Update chat configuration
*/
updateConfig(config: Partial<ChatConfig>): void;
}
declare enum SessionState {
ACTIVE = "active",
PAUSED = "paused",
TERMINATED = "terminated"
}
interface SessionConfig {
name?: string;
maxChats?: number;
userId?: string;
workspaceId?: string;
}
interface SessionInfo {
id: string;
userId: string;
name: string;
state: SessionState;
chatCount: number;
activeChatId?: string;
createdAt: Date;
lastUsedAt: Date;
workspaceId?: string;
}
interface ChatInfo {
id: string;
sessionId: string;
name: string;
isActive: boolean;
messageCount: number;
createdAt: Date;
lastUsedAt: Date;
agentTemplate?: string;
}
interface SessionManagerConfig {
maxSessions?: number;
maxChatsPerSession?: number;
}
interface CreateSessionOptions {
name?: string;
userId?: string;
workspaceId?: string;
maxChats?: number;
}
interface CreateChatOptions {
name?: string;
agentConfig: AgentConfig;
agentTemplate?: string;
description?: string;
}
/**
* SessionManager - manages multiple independent AI agents in isolated workspaces
*
* Core responsibilities:
* - Create and manage multiple sessions (workspaces)
* - Create and manage multiple chat instances (AI agents) per session
* - Provide workspace isolation between sessions
* - Handle basic session lifecycle and limits
*/
declare class SessionManager {
private sessions;
private chats;
private sessionChats;
private agentFactory;
private config;
constructor(config?: SessionManagerConfig);
/**
* Create a new session (workspace)
*/
createSession(options?: CreateSessionOptions): string;
/**
* Create a new chat (AI agent) within a session
*/
createChat(sessionId: string, options: CreateChatOptions): Promise<string>;
/**
* Get a chat instance
*/
getChat(chatId: string): ChatInstance | undefined;
/**
* Get session information
*/
getSession(sessionId: string): SessionInfo | undefined;
/**
* List all chats in a session
*/
getSessionChats(sessionId: string): ChatInfo[];
/**
* Switch active chat in session
*/
switchChat(sessionId: string, chatId: string): boolean;
/**
* Delete a chat
*/
deleteChat(chatId: string): boolean;
/**
* Delete a session and all its chats
*/
deleteSession(sessionId: string): boolean;
/**
* List all sessions
*/
listSessions(): SessionInfo[];
/**
* Generate unique session ID
*/
private generateSessionId;
/**
* Generate unique chat ID
*/
private generateChatId;
}
/**
* TemplateManagerAdapter - adapts agents package AgentFactory/AgentTemplates to TemplateManager interface
*
* This adapter allows the sessions package to use the template functionality from
* the agents package without duplicating implementation.
*/
declare class TemplateManagerAdapter implements TemplateManager {
private agentFactory;
private agentTemplates;
constructor(agentFactory?: AgentFactory);
/**
* Get template configuration by name
*/
getTemplate(name: string): AgentConfig | undefined;
/**
* List all available template names
*/
listTemplates(): string[];
/**
* Validate template configuration
*/
validateTemplate(config: AgentConfig): boolean;
/**
* Register a new template
*/
registerTemplate(template: AgentTemplate): void;
/**
* Unregister a template
*/
unregisterTemplate(templateId: string): boolean;
/**
* Get template details (full template object)
*/
getTemplateDetails(name: string): AgentTemplate | undefined;
/**
* Apply template to create agent config with overrides
*/
applyTemplate(templateId: string, overrides?: Partial<AgentConfig>): AgentConfig | undefined;
}
export { type ChatConfig, type ChatInfo, ChatInstance, type ChatMetadata, type ChatStats, type CreateChatOptions, type CreateSessionOptions, type MessageContent, type SessionConfig, type SessionInfo, SessionManager, type SessionManagerConfig, SessionState, type TemplateManager, TemplateManagerAdapter };