UNPKG

@extenshi/mcp

Version:

Extenshi MCP server — bring the extension catalog (search, security, market research) and pre-publish scanning into your AI tools

29 lines • 1.61 kB
/** * Client-side half of `upload_project_media`: turn a tool call into the BFF's * `{ mime, dataBase64 }` payload. * * The BFF is the real gate (magic bytes, metadata stripping, dimension and * quota limits). What only the client can decide is WHICH local file may be * read at all. The stdio server runs with the developer's filesystem, so a * `filePath` is confined to the workspace (the server's working directory): * a prompt-injected "upload ~/Pictures/passport.jpg" must not be able to * publish an arbitrary personal image to a public bucket. Files elsewhere go * through the CLI (`extenshi media upload`), where the path is on the command * line in front of the developer. */ export type ProjectMediaMime = 'image/png' | 'image/jpeg' | 'image/webp'; export declare const PROJECT_MEDIA_MAX_BYTES: number; export declare const PROJECT_MEDIA_MIME_TYPES: readonly ["image/png", "image/jpeg", "image/webp"]; export declare class ProjectMediaInputError extends Error { } /** Same signatures the BFF accepts. Anything else (SVG, HTML, GIF) → null. */ export declare function sniffMediaMime(bytes: Uint8Array): ProjectMediaMime | null; /** Read a workspace-local image for upload. `root` is the workspace (default: cwd). */ export declare function readWorkspaceImage(filePath: string, root?: string): Promise<{ mime: ProjectMediaMime; dataBase64: string; bytes: number; }>; /** Validate an inline payload the same way before it is sent. */ export declare function checkInlineImage(dataBase64: string, declared: ProjectMediaMime): void; //# sourceMappingURL=project-media.d.ts.map