import type { ToolRegistry } from '@wrongstack/core/registry'; import type { ConcreteTokenSavingTier, Tool } from '@wrongstack/core/types'; /** * Live count of tools each concrete token-saving tier exposes to the provider. * This is the runtime source of truth — `off` counts every registered tool, * the other tiers count the result of `selectBuiltinToolsForTier(tier, …)`. * * Website (`website/src/pages/ToolsPage.tsx`) and any other consumer that * wants to render tier counts without actually loading the catalog should * mirror this map. When `TIER1_TOOLS` / `TIER2_TOOLS` change, regenerate these * numbers from a smoke test (or update both together). * * `TIER3_TOOLS` deliberately appears in no tier below `off`: the specialized * tools it names reach the model through `tool_search` / `tool_use` instead of * costing a schema on every request. That pair therefore lives in * `TIER1_TOOLS` and in `DIRECT_LAZY_GATEWAYS` * (packages/runtime/src/tool-registration.ts) — while it did not, this comment * described a route that did not exist and every withheld tool was simply * unreachable. `aggressive` selects the same Tier-1 set as `minimal` - the two * differ only in how far tool descriptions are trimmed by the prompt builder, * not in which tools are exposed. */ export declare const BUILTIN_TIER_COUNTS: Readonly>; /** * Select built-in tools for a concrete token-saving tier while preserving the * order and instances supplied by the caller. */ export declare function selectBuiltinToolsForTier(tier: ConcreteTokenSavingTier, allTools: readonly Tool[]): Tool[]; export interface RegisterBuiltinToolTierOptions { registry: Pick; tier: ConcreteTokenSavingTier; tools?: readonly Tool[] | undefined; owner?: string | undefined; } /** Register the canonical built-in subset for a host and return that subset. */ export declare function registerBuiltinToolTier(options: RegisterBuiltinToolTierOptions): Tool[]; //# sourceMappingURL=tool-tier.d.ts.map