/** * The `vendo_*` tool arguments, checked before any door is touched. * * Internal to the agent-tool registry (`agent-tools.ts` and its handler * modules) — the doors themselves take typed input. */ import { type Json, type RunContext } from "@vendoai/core"; import type { AppsRuntime } from "../runtime/types.js"; export declare const input: (value: Json, required: string[], optional?: string[]) => Record; export declare const optionalString: (value: Json | undefined, name: string) => string | undefined; export declare const optionalRefs: (value: Json | undefined) => Record | undefined; export declare const optionalLimit: (value: Json | undefined) => number | undefined; /** * The `app` slot as a person says it: an app id, or the app's NAME. * * A fresh thread holds no ids — "add a weekly one to the transactions app" is * the whole ask, and until now it died on the way in, because `app` took an id * and nothing in this registry lists or searches. The aim already has a slot; * this is that slot understanding the name the user actually said. * * Exact name first, then case-insensitively, over THIS caller's own apps (the * same owned ∪ granted list every other door reads). Two apps of one name is a * question, never a coin toss: the candidates come back in the refusal so the * model can ask which one. And a ref that matches no name is handed on * untouched, so "no such app" and "you may not change that one" stay the * runtime's own sentences. */ export declare const resolveAppRef: (runtime: AppsRuntime, ref: string, ctx: RunContext) => Promise; //# sourceMappingURL=tool-args.d.ts.map