import type { BehaviorExamplePack } from '@principles/core/runtime-v2'; export interface BehaviorExamplePackAssemblerOptions { /** Workspace directory — used to obtain the shared TrajectoryDatabase. */ readonly workspaceDir: string; /** * State directory (unused for direct DB access but required by the * WorkspaceContext facade pattern; future-proofing for redaction config). */ readonly stateDir: string; } export interface BehaviorExamplePackAssemblerInput { /** Canonical pain ID (e.g. pain__) — entry point into pain lineage. */ readonly sourcePainId: string; /** Owner's natural-language desired outcome — must be non-empty. */ readonly ownerDesiredOutcome: string; /** Owner-selected call that demonstrates behaviour to block. */ readonly sourceNegativeToolCallId: number; /** Owner-selected calls that demonstrate behaviour to allow (1..3). */ readonly positiveToolCallIds: readonly number[]; /** * Project directory, used to detect absolute paths that should be redacted * to relative/basename form in the assembled pack. */ readonly projectDir: string; } /** * Plugin I/O assembler: pain lineage + trajectory → validated BehaviorExamplePack. * * Lifecycle: cheap to construct; obtains TrajectoryDatabase via the registry. * Dispose is the registry's responsibility (singleton per workspace). */ export declare class BehaviorExamplePackAssembler { private readonly db; constructor(opts: BehaviorExamplePackAssemblerOptions); /** Assemble only from explicit Owner labels; execution outcome is not a label. */ assemble(input: BehaviorExamplePackAssemblerInput): BehaviorExamplePack; private buildSelectedCase; }