import type { SessionMessageEntry } from '@earendil-works/pi-coding-agent'; import type { Owner } from './types.js'; type ToolResult = Extract; export interface TaskFactProjection { toolName: string; policyVersion: string; } /** Installed host code only; run locally without model/network extraction. Return necessary verified business facts, never * stringify the result, its arguments, or its private details wholesale. */ export type TaskFactProjector = (result: Readonly, context: { owner: Readonly; scope: string | null; signal?: AbortSignal; }) => string | undefined | Promise; export interface TaskFactPolicy { /** Must match the user's separate collection grant. Changes require a new grant. */ policyVersion: string; tools: ReadonlyMap; } export declare function isTaskFactProjection(value: unknown): value is TaskFactProjection; export {};