@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
TypeScript
/**
* 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