import type { AgentScope } from "../core/types.js"; import { type ResolveAgentDirs } from "./agents.js"; /** * Deep guard that rejects any object graph containing a string value under a * body-like key. Preserved verbatim from the harness safety posture. */ export declare function hasForbiddenBodyKeys(value: unknown): boolean; /** A body-free catalog entry — prompt is stored only as a sha-256 hash. */ export interface AgentCatalogEntry { id: string; description: string; tools?: string[]; model?: string; thinking?: string; /** Model class hint parsed from the card frontmatter (`model_class`). */ modelClass?: string; source: "project" | "user"; filePath: string; promptHash: string; } export interface AgentCatalog { schema: "zob.agent-catalog.v1"; scope: AgentScope; counts: { total: number; project: number; user: number; }; entries: AgentCatalogEntry[]; noExecution: true; childDispatchAllowed: false; bodyStored: false; promptBodiesStored: false; } export interface BuildAgentCatalogInput { cwd: string; scope: AgentScope; /** Optional override for agent-dir resolution (default: project → `[/.pi/agents]`). */ resolveAgentDirs?: ResolveAgentDirs; } /** Build a body-free agent catalog by scope (dedupe + user→project order). */ export declare function buildAgentCatalog(input: BuildAgentCatalogInput): AgentCatalog; /** Keyword search over the catalog. `limit` is clamped to [1, 20] (default 10). */ export declare function searchAgentCatalog(catalog: AgentCatalog, query: string, limit?: number): AgentCatalogEntry[];