import type { FactRecord } from "../state/facts.js"; export declare const BLACKBOARD_MAX_ROUNDS = 3; export interface BlackboardFinding { childFolder: string; round: number; payload: string; confidence?: number; } export interface SharedBlackboardOpts { dbPath: string; namespace: string; busyTimeoutMs?: number; maxRounds?: number; } /** * Bounded inter-agent exchange wrapper over one shared facts.db. * Opens the db in WAL mode with a busy_timeout so concurrent fleet * children can publish findings without SQLITE_BUSY deadlocks. * * bober: single-file SQLite WAL (better-sqlite3 synchronous writes); * swap for a network WAL (e.g. Turso/libSQL) if fleet grows beyond * one host or requires cross-machine exchange. */ export declare class SharedBlackboard { private store; private namespace; private maxRounds; private constructor(); /** * Open (or create) a shared WAL facts.db at dbPath. * Ensures the parent directory exists before opening. * Returns a ready-to-use SharedBlackboard instance. */ static open(opts: SharedBlackboardOpts): Promise; /** * Publish a finding from one fleet child. * Throws when finding.round exceeds the effective maxRounds cap. * Returns the persisted FactRecord. */ publish(finding: BlackboardFinding, now: string): FactRecord; /** * Return all active 'finding' facts in this namespace published by * children OTHER than selfFolder. */ readSiblings(selfFolder: string): FactRecord[]; /** Return ALL active 'finding' facts in this namespace. */ readAll(): FactRecord[]; /** Close the underlying database connection. */ close(): void; } //# sourceMappingURL=shared-blackboard.d.ts.map