import { type ExtensionChangeTarget } from "./change-marker.js"; import { type ExtensionContentEdit, type ExtensionLegacyPatch } from "./content-patch.js"; export declare function ensureExtensionsTables(): Promise; export declare function registerExtensionsShareable(): void; export interface ExtensionRow { id: string; name: string; description: string; content: string; icon: string | null; createdAt: string; updatedAt: string; archivedAt: string | null; hiddenAt: string | null; hiddenBy: string | null; ownerEmail: string; orgId: string | null; visibility: "private" | "org" | "public"; } export type ExtensionHistoryOperation = "create" | "baseline" | "metadata-update" | "content-update" | "restore"; export interface ExtensionHistoryEntry { id: string; extensionId: string; version: number; operation: ExtensionHistoryOperation | string; summary: string; name: string; description: string; content?: string; icon: string | null; actorEmail: string | null; ownerEmail: string; orgId: string | null; visibility: "private" | "org" | "public"; createdAt: string; persisted: boolean; contentLength: number; } export interface ExtensionHistoryDiffLine { type: "equal" | "insert" | "delete"; text: string; } export interface ExtensionHistoryDetail { entry: ExtensionHistoryEntry; previous: ExtensionHistoryEntry | null; diff: ExtensionHistoryDiffLine[]; stats: { addedLines: number; deletedLines: number; changed: boolean; }; } export declare function getExtensionChangeTargets(id: string): Promise; export declare function notifyExtensionChangeForResource(id: string, beforeTargets?: ExtensionChangeTarget[]): Promise; export interface ListExtensionsOptions { includeHidden?: boolean; /** * Include extensions an admin/owner has globally hidden via `hidden_at`. * Off by default so globally-hidden extensions disappear for everyone. */ includeGloballyHidden?: boolean; } export declare function listExtensions(options?: ListExtensionsOptions): Promise; export declare function getExtension(id: string): Promise; export interface ListExtensionHistoryOptions { limit?: number; includeContent?: boolean; } export declare function listExtensionHistory(id: string, options?: ListExtensionHistoryOptions): Promise; export declare function getExtensionHistoryVersion(id: string, versionValue: number | string): Promise; export declare function restoreExtensionHistoryVersion(id: string, versionValue: number | string): Promise; export interface CreateExtensionData { name: string; description?: string; content?: string; icon?: string; } export declare function createExtension(data: CreateExtensionData): Promise; /** * Returns an extension with the exact same name and content created by the * current user — in the current org/workspace scope — in the last 5 minutes, * or null if none exists. Used to make create-extension idempotent when a * connection drop causes the agent to retry the same tool call. * * Scoped by `orgId` the same way `createExtension` stamps it, so the same * `ownerEmail` working in two different orgs can create identically-named, * identical-content extensions without this lookup cross-matching and skipping * the second insert. Keyed on the FULL create inputs (name + content + * description + icon, normalized exactly as `createExtension` stores them), so * two creates that differ in any of them are treated as distinct — only a * byte-identical re-create (the connection-retry case) recovers the prior row, * and no intentional second create silently loses its metadata. */ export declare function findRecentDuplicateExtension(data: { name: string; content: string; description?: string; icon?: string; }): Promise; export interface UpdateExtensionData { name?: string; description?: string; icon?: string; /** * Extensions cannot be public — `set-resource-visibility` and this store * helper both reject `"public"`. The type lists it so the framework's * generic share UI compiles, not because it's allowed at runtime. */ visibility?: "private" | "org" | "public"; } export declare function updateExtension(id: string, data: UpdateExtensionData): Promise; export interface UpdateExtensionContentOpts { content?: string; allowFullReplacement?: boolean; patches?: ExtensionLegacyPatch[]; edits?: ExtensionContentEdit[]; format?: boolean; } export declare function updateExtensionContent(id: string, opts: UpdateExtensionContentOpts): Promise; export declare function deleteExtension(id: string): Promise; export declare function getHiddenExtensionIdsForCurrentUser(): Promise>; export declare function hideExtension(id: string): Promise; export declare function unhideExtension(id: string): Promise; /** * Globally hide an extension from EVERYONE's list by stamping `hidden_at` / * `hidden_by` on the `tools` row. Distinct from the per-user `hideExtension` * (`tool_hidden_extensions`) — this affects all viewers. Requires admin/owner * access. The extension is not deleted and stays accessible by id; pass * `includeGloballyHidden: true` to `listExtensions` to surface it again. */ export declare function globalHideExtension(id: string): Promise; /** * Clear a global hide so the extension reappears in everyone's list. Requires * admin/owner access. Mirrors `globalHideExtension`. */ export declare function globalUnhideExtension(id: string): Promise; //# sourceMappingURL=store.d.ts.map