/** * The Arya Image preset's tool mask. * * Mounted as a row inside the preset, so this context is the agent's scope: * `ctx.tools.restrict({ allow })` then hides every inherited tool not named in * the list, while the preset's own rows stay visible. * * Which names are legal is decided by `restrict()` itself, against the tools * this scope can actually restrict - the inherited global layer plus every * ancestor on the chain. It is NOT `ctx.tools.get(name)`: that answers from the * global view only, and once presets moved their rows onto the agent plane the * host's own tools became an ancestor contribution, invisible to `get()`. A * presence filter built on `get()` therefore strips `read`, `write`, `pwsh`, * `web_search` and the rest, leaving a mask that hides everything the preset * was supposed to keep. * * Fail-open on purpose. A mask that cannot be applied (no agent scope, a names * list the registry refuses) must leave the session exactly as it was - a * session that loses its tools is worse than a session that pays for a few * extra schemas. * * @module dsh-arya-image-gen/agent-toolset */ import type { Context } from '@deepseek-ai/cordis'; /** Row configuration: the global tool names that stay visible. */ export interface ToolsetConfig { allow?: readonly string[]; } /** * Apply the allow mask. * * @param ctx - the row's context, which must resolve to the agent scope. * @param config - the row configuration from the preset definition. */ export declare function apply(ctx: Context, config?: ToolsetConfig): void; export declare const inject: string[];