import type { ContextEngine, ContextEngineInfo, AssembleResult, CompactResult, IngestResult, PluginLogger } from "./types.js"; import { type BrvBridgeConfig } from "@byterover/brv-bridge"; /** * ByteRoverContextEngine integrates ByteRover as an OpenClaw context engine * via the brv-bridge standard interface. * * Lifecycle mapping: * - afterTurn → bridge.persist() (feed conversation turns for curation) * - assemble → bridge.recall() (retrieve curated knowledge as system prompt addition) * - ingest → no-op (afterTurn handles batch ingestion) * - compact → not owned (runtime handles compaction via legacy path) */ export declare class ByteRoverContextEngine implements ContextEngine { readonly info: ContextEngineInfo; private readonly bridge; private readonly logger; private readonly baseCwd; constructor(config: BrvBridgeConfig, logger: PluginLogger); ingest(_params: { sessionId: string; message: unknown; isHeartbeat?: boolean; }): Promise; afterTurn(params: { sessionId: string; sessionKey?: string; sessionFile: string; messages: unknown[]; prePromptMessageCount: number; isHeartbeat?: boolean; }): Promise; assemble(params: { sessionId: string; sessionKey?: string; messages: unknown[]; tokenBudget?: number; prompt?: string; }): Promise; compact(_params: { sessionId: string; sessionFile: string; tokenBudget?: number; force?: boolean; }): Promise; dispose(): Promise; } /** * Serialize agent messages into a human-readable text block for curation. * * - User messages: strip metadata noise, attribute with sender name + timestamp * - Assistant messages: strip / tags * - toolResult messages: skipped (internal implementation details) */ export declare function serializeMessagesForCurate(messages: unknown[]): string; /** Extract text from string content or ContentBlock[] arrays. */ export declare function extractTextContent(content: unknown): string; /** * Extract the latest user message text to use as the brv query. * Strips OpenClaw metadata so brv receives only the actual question. */ export declare function extractLatestUserQuery(messages: unknown[]): string | null;