{"version":3,"file":"stored-skills-BqNK0ssS.cjs","names":["z","createPagePaginationSchema","paginationInfoSchema"],"sources":["../src/server/schemas/stored-skills.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { paginationInfoSchema, createPagePaginationSchema } from './common';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const storedSkillIdPathParams = z.object({\n  storedSkillId: z.string().describe('Unique identifier for the stored skill'),\n});\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\nconst storageOrderBySchema = z.object({\n  field: z.enum(['createdAt', 'updatedAt']).optional(),\n  direction: z.enum(['ASC', 'DESC']).optional(),\n});\n\nexport const listStoredSkillsQuerySchema = createPagePaginationSchema(100).extend({\n  orderBy: storageOrderBySchema.optional(),\n  status: z.enum(['draft', 'published', 'archived']).optional().describe('Filter skills by status'),\n  authorId: z.string().optional().describe('Filter skills by author identifier'),\n  visibility: z.enum(['public']).optional().describe('Filter to only public skills'),\n  metadata: z.record(z.string(), z.unknown()).optional().describe('Filter skills by metadata key-value pairs'),\n  favoritedOnly: z\n    .stringbool()\n    .optional()\n    .describe('When true, return only skills favorited by the caller (requires the `favorites` EE feature)'),\n  pinFavoritedFor: z\n    .string()\n    .optional()\n    .describe(\n      'When set, treat the given subject (user/role) as the favoriting principal for `favoritedOnly` instead of the caller',\n    ),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nconst sourceSchema = z.discriminatedUnion('type', [\n  z.object({\n    type: z.literal('external'),\n    packagePath: z.string().describe('Package path for external source'),\n  }),\n  z.object({\n    type: z.literal('local'),\n    projectPath: z.string().describe('Project path for local source'),\n  }),\n  z.object({\n    type: z.literal('managed'),\n    mastraPath: z.string().describe('Mastra path for managed source'),\n  }),\n]);\n\nexport interface FileNode {\n  id?: string;\n  name: string;\n  type: 'file' | 'folder';\n  content?: string;\n  children?: FileNode[];\n}\n\nconst fileNodeSchema: z.ZodType<FileNode> = z.object({\n  id: z.string().optional(),\n  name: z.string(),\n  type: z.enum(['file', 'folder']),\n  content: z.string().optional(),\n  children: z.lazy(() => z.array(fileNodeSchema)).optional(),\n});\n\n// ============================================================================\n// Origin Schema (metadata.origin)\n// ============================================================================\n\n/**\n * Identifies where a stored skill came from.\n * Persisted as `metadata.origin` on the stored skill so that registry-installed\n * skills can be distinguished from skills authored directly in the Builder.\n */\nexport const skillOriginSchema = z.discriminatedUnion('type', [\n  z.object({\n    type: z.literal('skills-sh'),\n    owner: z.string().describe('Repository owner on skills.sh'),\n    repo: z.string().describe('Repository name on skills.sh'),\n    skillName: z.string().describe('Original skill name on skills.sh'),\n    installedAt: z.string().describe('ISO-8601 timestamp of the install'),\n  }),\n  z.object({\n    type: z.literal('library-copy'),\n    sourceSkillId: z.string().describe('ID of the public Library skill this was copied from'),\n    sourceSkillName: z.string().describe('Name of the source skill at copy time'),\n    sourceAuthorId: z.string().optional().describe('Author of the source skill at copy time, when known'),\n    copiedAt: z.string().describe('ISO-8601 timestamp of the copy'),\n  }),\n]);\n\nexport type SkillOrigin = z.infer<typeof skillOriginSchema>;\n\n/** Metadata key under which origin information is persisted on a stored skill. */\nexport const SKILL_ORIGIN_METADATA_KEY = 'origin';\n\n/**\n * Read a typed origin off a stored skill's metadata blob, if present and valid.\n * Returns null when the skill has no origin (i.e., authored directly in the Builder).\n */\nexport function readSkillOrigin(metadata: Record<string, unknown> | undefined): SkillOrigin | null {\n  if (!metadata) return null;\n  const raw = metadata[SKILL_ORIGIN_METADATA_KEY];\n  if (!raw) return null;\n  const parsed = skillOriginSchema.safeParse(raw);\n  return parsed.success ? parsed.data : null;\n}\n\n/** Build a metadata patch for an origin, suitable for spreading into the create body. */\nexport function buildOriginMetadata(origin: SkillOrigin): Record<string, unknown> {\n  return { [SKILL_ORIGIN_METADATA_KEY]: origin };\n}\n\nconst snapshotConfigSchema = z.object({\n  name: z.string().describe('Name of the skill'),\n  description: z.string().describe('Description of what the skill does and when to use it'),\n  instructions: z.string().describe('Markdown instructions for the skill'),\n  license: z.string().optional().describe('License identifier for the skill'),\n  compatibility: z.unknown().optional().describe('Compatibility requirements'),\n  source: sourceSchema.optional().describe('Source location of the skill'),\n  references: z.array(z.string()).optional().describe('List of reference file paths'),\n  scripts: z.array(z.string()).optional().describe('List of script file paths'),\n  assets: z.array(z.string()).optional().describe('List of asset file paths'),\n  files: z.array(fileNodeSchema).optional().describe('Full file tree structure for the skill'),\n  metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata for the skill'),\n});\n\nexport const createStoredSkillBodySchema = z\n  .object({\n    id: z.string().optional().describe('Unique identifier. If not provided, derived from name.'),\n    authorId: z.string().optional().describe('Author identifier for multi-tenant filtering'),\n    visibility: z\n      .enum(['private', 'public'])\n      .optional()\n      .describe('Skill visibility: private (owner/admin only) or public (any reader)'),\n  })\n  .merge(snapshotConfigSchema);\n\nexport const updateStoredSkillBodySchema = z\n  .object({\n    authorId: z.string().optional(),\n    visibility: z\n      .enum(['private', 'public'])\n      .optional()\n      .describe('Skill visibility: private (owner/admin only) or public (any reader)'),\n  })\n  .partial()\n  .merge(snapshotConfigSchema.partial());\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nexport const storedSkillSchema = z.object({\n  id: z.string(),\n  status: z.string().describe('Skill status: draft, published, or archived'),\n  activeVersionId: z.string().optional(),\n  authorId: z.string().optional(),\n  visibility: z.enum(['private', 'public']).optional(),\n  favoriteCount: z.number().int().nonnegative().optional().describe('Number of users who have favorited this skill'),\n  isFavorited: z.boolean().optional().describe('Whether the requesting user has favorited this skill'),\n  createdAt: z.coerce.date(),\n  updatedAt: z.coerce.date(),\n  name: z.string().describe('Name of the skill'),\n  description: z.string().describe('Description of what the skill does and when to use it'),\n  instructions: z.string().describe('Markdown instructions for the skill'),\n  license: z.string().optional().describe('License identifier for the skill'),\n  compatibility: z.unknown().optional().describe('Compatibility requirements'),\n  source: sourceSchema.optional().describe('Source location of the skill'),\n  references: z.array(z.string()).optional().describe('List of reference file paths'),\n  scripts: z.array(z.string()).optional().describe('List of script file paths'),\n  assets: z.array(z.string()).optional().describe('List of asset file paths'),\n  files: z.array(fileNodeSchema).optional().describe('Full file tree structure for the skill'),\n  metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata for the skill'),\n});\n\nexport const listStoredSkillsResponseSchema = paginationInfoSchema.extend({\n  skills: z.array(storedSkillSchema),\n});\n\nexport const getStoredSkillResponseSchema = storedSkillSchema;\nexport const createStoredSkillResponseSchema = storedSkillSchema;\n\nexport const updateStoredSkillResponseSchema = z.union([\n  z.object({\n    id: z.string(),\n    status: z.string(),\n    activeVersionId: z.string().optional(),\n    authorId: z.string().optional(),\n    visibility: z.enum(['private', 'public']).optional(),\n    createdAt: z.coerce.date(),\n    updatedAt: z.coerce.date(),\n  }),\n  storedSkillSchema,\n]);\n\nexport const deleteStoredSkillResponseSchema = z.object({\n  success: z.boolean(),\n  message: z.string(),\n});\n\n// ============================================================================\n// Publish / Rollback Schemas\n// ============================================================================\n\nexport const publishStoredSkillBodySchema = z.object({\n  skillPath: z.string().describe('Path to the skill directory on the server filesystem (containing SKILL.md)'),\n});\n\nexport const publishStoredSkillResponseSchema = storedSkillSchema;\n"],"mappings":"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"}