import type { Context } from '@deepseek-ai/cordis'; import type { HarnessResolver } from './_shared.ts'; /** Logger label for the goal bridge (dsh logger naming: `/`). */ export declare const GOAL_BRIDGE_LOGGER = "mstar/goal-bridge"; /** Consumer log levels the module sink understands. */ export type GoalBridgeLogLevel = 'debug' | 'warn'; /** Module-level consumer log sink — bound by `apply` to `ctx.logger(GOAL_BRIDGE_LOGGER)` (agent-flow ledger precedent). */ export type GoalBridgeLogSink = (level: GoalBridgeLogLevel, message: string) => void; /** * Bind the goal-bridge log sink (the entry `apply` binds it to * `ctx.logger(GOAL_BRIDGE_LOGGER)`). Returns the PRIOR sink so a caller can * restore it (test pattern: agent-flow `setAgentFlowLogger`). */ export declare function setGoalBridgeLogger(sink: GoalBridgeLogSink): GoalBridgeLogSink; /** * Register the goal bridge: ONE `session/event` firehose listener * (workflow-ledger consumer precedent) that structurally filters the durable * `goal/change` envelopes and logs the blocked advisory (see * {@link warnBlockedGoal}). It resolves no service — the envelope carries * the facts, and the workspace attribution comes from the goal-owning * session's `header.cwd`; an unresolvable harness → silent skip. Observe-only: * no goal mutation of any kind (`create` / `edit` / `complete` / `pause` / * `resume`), and the goal-owning agent is never read. * * @param ctx - the plugin's registrant context (the app composition root). * @param resolver - the shared per-workspace `{HARNESS_DIR}` resolver. */ export declare function registerGoalBridge(ctx: Context, resolver: HarnessResolver): void;