File size: 2,136 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | import { z } from 'zod';
export const pluginGithubMetadataSchema = z.object({
owner: z.string(),
repo: z.string(),
ref: z.object({
kind: z.enum(['branch', 'tag', 'sha']),
value: z.string(),
}),
installedSha: z.string().optional(),
});
export const pluginSummarySchema = z.object({
id: z.string(),
displayName: z.string(),
version: z.string().optional(),
enabled: z.boolean(),
state: z.enum(['ok', 'error']),
skillCount: z.number(),
mcpServerCount: z.number(),
enabledMcpServerCount: z.number(),
hookCount: z.number(),
commandCount: z.number(),
hasErrors: z.boolean(),
source: z.enum(['local-path', 'zip-url', 'github']),
originalSource: z.string().optional(),
github: pluginGithubMetadataSchema.optional(),
});
export type PluginSummaryWire = z.infer<typeof pluginSummarySchema>;
export const listPluginsResponseSchema = z.object({
plugins: z.array(pluginSummarySchema),
});
export type ListPluginsResponse = z.infer<typeof listPluginsResponseSchema>;
export const installPluginRequestSchema = z.object({
source: z.string().min(1),
});
export type InstallPluginRequest = z.infer<typeof installPluginRequestSchema>;
export const pluginMarketplaceEntrySchema = z.object({
id: z.string(),
tier: z.enum(['official', 'curated', 'third-party']),
displayName: z.string(),
description: z.string().optional(),
homepage: z.string().optional(),
keywords: z.array(z.string()).optional(),
version: z.string().optional(),
source: z.string(),
installed: z
.object({
version: z.string().optional(),
enabled: z.boolean(),
})
.optional(),
updateAvailable: z.boolean().optional(),
capabilityId: z.string().optional(),
});
export type PluginMarketplaceEntryWire = z.infer<typeof pluginMarketplaceEntrySchema>;
export const pluginMarketplaceResponseSchema = z.object({
entries: z.array(pluginMarketplaceEntrySchema),
});
export type PluginMarketplaceResponse = z.infer<typeof pluginMarketplaceResponseSchema>;
export const pluginIdParamSchema = z.object({
tail: z.string().min(1),
});
export type PluginIdParam = z.infer<typeof pluginIdParamSchema>;
|