/** * The HOME half: one generated module in the host's own repo that binds every * ported slot back to the functions and components the host already wrote. * * It is CODE, not JSON — the first thing sync emits that is — because what it * carries cannot be data: a tool's `execute` is the host's own function, and a * hole is the host's own component. Regenerated whole on every sync and never * hand-edited, so the host reads it the way they read any other generated file: * in the diff. */ export declare const WIRING_MODULE = ".vendo/generated/remix-wiring"; /** One host binding, as the wiring file imports it. */ export interface WiringRef { /** The name the port knows it by — the hole key, or the envelope field. */ name: string; /** The name its module exports it under; "default" for a default import. */ imported: string; /** The specifier to write: a package name, or a path relative to this file. */ from: string; /** For a read seen through a hook: the property to call on the imported * binding (`api.get`), and the literal key the hook passed its fetcher. */ member?: string; key?: string; } /** One parameter the host function declares, carried verbatim into the tool's * input schema. This is what keeps a generated tool exactly as wide as the * call the component already made — never an open bag of arguments. */ export interface WiringParameter { name: string; schema: { type: string; }; required: boolean; } export interface WiringSlot { slot: string; /** `parameters` is the union of the read bindings' declared parameters — the * allowlist the seed's live props are admitted against. */ read?: { tool: string; bindings: WiringRef[]; parameters: WiringParameter[]; }; writes: Array<{ tool: string; binding: WiringRef; parameters: WiringParameter[]; }>; holes: WiringRef[]; } export declare const readToolDescription: (slot: string) => string; export declare const writeToolDescription: (slot: string, binding: string) => string; export declare function remixWiringSource(slots: readonly WiringSlot[]): string;