/** * ContextManager Application Service * * Manages execution contexts for task sharing * * @see REQ-SDD-003 - Context Sharing * @see DES-SDD-003 - ContextManager */ import { type ExecutionContext } from '../domain/entities/ExecutionContext.js'; import type { Artifact } from '../domain/entities/Artifact.js'; /** * Context manager interface */ export interface IContextManager { /** * Create a new execution context * @param taskId - Task ID * @param parent - Optional parent context * @returns New execution context */ create(taskId: string, parent?: ExecutionContext): ExecutionContext; /** * Share knowledge in context * @param context - Context to update * @param key - Knowledge key * @param value - Knowledge value * @returns Updated context (immutable) */ share(context: ExecutionContext, key: string, value: unknown): ExecutionContext; /** * Add artifact to context * @param context - Context to update * @param artifact - Artifact to add * @returns Updated context (immutable) */ addArtifact(context: ExecutionContext, artifact: Artifact): ExecutionContext; /** * Merge multiple contexts * @param contexts - Contexts to merge * @returns Merged context */ merge(contexts: ExecutionContext[]): ExecutionContext; /** * Get value from context (including parents) * @param context - Context to search * @param key - Knowledge key * @returns Value or undefined */ get(context: ExecutionContext, key: string): T | undefined; /** * Get all artifacts from context (including parents) * @param context - Context to search * @returns All artifacts */ getArtifacts(context: ExecutionContext): Artifact[]; } /** * Context manager configuration */ export interface ContextManagerConfig { /** Default project path */ defaultProjectPath?: string; /** Default source */ defaultSource?: 'user' | 'agent' | 'system'; } /** * Create a context manager * * @param config - Optional configuration * @returns IContextManager implementation */ export declare function createContextManager(config?: ContextManagerConfig): IContextManager; /** * Context snapshot for serialization */ export interface ContextSnapshot { taskId: string; knowledge: Record; artifactIds: string[]; metadata: ExecutionContext['metadata']; timestamp: string; } /** * Create a snapshot of context for persistence * * @param context - Context to snapshot * @returns Serializable snapshot */ export declare function createContextSnapshot(context: ExecutionContext): ContextSnapshot; //# sourceMappingURL=ContextManager.d.ts.map