/** * UmbrellaDataAccessor — composes sub-accessors by CleoDbRole. * * Implements the DataAccessor interface by delegating all existing methods * to the 'tasks' sub-accessor. This maintains backward compatibility while * enabling future multi-DB operations (e.g. cross-db transactions, brain * decision reads, nexus lookups) via getSubAccessor(role). * * Sub-accessors are lazily initialized on first use. * * @task T9050 * @epic T9048 */ import type { AgentRegistrySubAccessor, ArchiveFields, ArchiveFile, BrainAccessor, ConduitAccessor, DataAccessor, DataAccessorAgentInstance, DocsAccessor, NexusAccessor, QueryTasksResult, Session, Task, TaskAuditLogQuery, TaskAuditLogRow, TaskFieldUpdates, TaskQueryFilters, TelemetryAccessor, TransactionAccessor } from '@cleocode/contracts'; /** * Logical sub-accessor selector for {@link UmbrellaDataAccessor.getSubAccessor}. * * These are **domain-level accessor roles** — distinct from the physical * DB-open scope (`'project'` | `'global'`, the post-E6 {@link CleoDbRole}). * One physical `cleo.db` per scope now backs many of these logical roles * (e.g. `tasks` / `brain` / `conduit` / `sessions` all live in the project * `cleo.db`; `nexus` / `signaldock` live in the global `cleo.db`). * * @task T9188, T11526 (E6-L6 — decoupled from CleoDbRole) */ export type SubAccessorRole = 'tasks' | 'sessions' | 'brain' | 'conduit' | 'nexus' | 'signaldock' | 'telemetry' | 'docs'; /** Union of all typed sub-accessor types (T9188). */ export type TypedSubAccessor = DataAccessor | BrainAccessor | ConduitAccessor | DocsAccessor | NexusAccessor | AgentRegistrySubAccessor | TelemetryAccessor; export declare class UmbrellaDataAccessor implements DataAccessor { readonly engine: "sqlite"; /** Lazy-initialized sub-accessors keyed by logical role. */ private accessors; /** Lazy-initialized role-specific typed sub-accessors (T9188). */ private typedAccessors; /** cwd used for project-tier sub-accessor creation. */ private cwd; constructor(cwd?: string); /** * Get (or create) a typed sub-accessor for the given role. * * Lazily initializes on first call. Returns a role-specific typed accessor: * - 'tasks' → DataAccessor (full task CRUD) * - 'brain' → BrainAccessor (memory observe + find) * - 'conduit' → ConduitAccessor (messaging publish + ping) * - 'nexus' → NexusAccessor (code intelligence ping) * - 'signaldock' → AgentRegistrySubAccessor (agent identity ping) * - 'telemetry' → TelemetryAccessor (event recording stub) * - 'docs' → DocsAccessor (document storage + search) * - 'sessions' → DataAccessor (session-scoped tasks accessor) * * @param role - Database role. * @returns A typed accessor for that role. * @task T9188 */ getSubAccessor(role: SubAccessorRole): Promise; /** Return the canonical 'tasks' sub-accessor (backward compat). */ private tasks; loadArchive(): Promise; saveArchive(data: ArchiveFile): Promise; loadSessions(): Promise; saveSessions(sessions: Session[]): Promise; appendLog(entry: Record): Promise; close(): Promise; upsertSingleTask(task: Task): Promise; archiveSingleTask(taskId: string, fields: ArchiveFields): Promise; removeSingleTask(taskId: string): Promise; loadSingleTask(taskId: string): Promise; addRelation(taskId: string, relatedTo: string, relationType: string, reason?: string): Promise; removeRelation(taskId: string, relatedTo: string, relationType?: string): Promise; getAcRows(taskId: string): Promise; getAcBindings(acIds: readonly string[]): Promise; getMetaValue(key: string): Promise; setMetaValue(key: string, value: unknown): Promise; getSchemaVersion(): Promise; queryTasks(filters: TaskQueryFilters): Promise; queryAuditLog(query: TaskAuditLogQuery): Promise; countTasks(filters?: { status?: string | string[]; parentId?: string; }): Promise; getChildren(parentId: string): Promise; countChildren(parentId: string): Promise; countActiveChildren(parentId: string): Promise; getAncestorChain(taskId: string): Promise; getSubtree(rootId: string): Promise; getDependents(taskId: string): Promise; getDependencyChain(taskId: string): Promise; taskExists(taskId: string): Promise; loadTasks(taskIds: string[]): Promise; updateTaskFields(taskId: string, fields: TaskFieldUpdates): Promise; getNextPosition(parentId: string | null): Promise; shiftPositions(parentId: string | null, fromPosition: number, delta: number): Promise; transaction(fn: (tx: TransactionAccessor) => Promise): Promise; getActiveSession(): Promise; resolveCurrentSession(): Promise; upsertSingleSession(session: Session): Promise; removeSingleSession(sessionId: string): Promise; listAgentInstances(filters?: { status?: string | string[]; agentType?: string | string[]; }): Promise; getAgentInstance(agentId: string): Promise; claimTask(taskId: string, agentId: string): Promise; unclaimTask(taskId: string): Promise; } //# sourceMappingURL=umbrella-data-accessor.d.ts.map