/** * Handler registry — maps `entry.handler` strings to their implementation. * * Only `entry.type` in ('http' | 'builtin') uses this registry; python * skills go through spawn() in runner.ts and bypass handlers entirely. */ import type { AuthPreflight } from '../auth/ensure.js'; export type HandlerInput = Record; export interface HandlerContext { /** ISO-style skill name from the registry (e.g. `gen-image`). Used for x-invoke-skill. */ skillName: string; /** * Credential resolved by the dispatcher's preflight (runner.ts). Handlers pass * `auth.token` into resolveHttpContext so the device flow can't run twice for * a single invocation. */ auth?: AuthPreflight; } export type SkillHandler = (input: HandlerInput, ctx: HandlerContext) => Promise; export declare const HANDLERS: Record;