Files
agent-park/src/lib/AGENTS.md
T
mzaxd 6cb4545a17 chore: 更新项目文档和工具状态
- 更新 AGENTS.md 项目知识库文档(多目录)
- 添加 docs/analyst.md 产品分析文档
- 添加 .omc/ 工具状态和会话记录
- 添加 .sisyphus/ 计划文档
- 添加 project-structure.txt 项目结构
- 删除 timeline 测试截图
2026-02-20 21:48:05 +08:00

1.9 KiB

src/lib/ - Core Utilities

Overview

Shared utilities and infrastructure layers used across the application.

Key Files

Validation Layer (validations.ts)

Purpose: Input validation and type safety using Zod schemas

  • ProjectInputSchema: Project data validation (1-10 tags, 1-10 links)
  • WebhookPayloadSchema: Webhook request validation with API key auth
  • KeywordInputSchema: Keyword cloud data with visual config
  • ProjectQuerySchema: Query parameter validation (search, tags, status, pagination)
  • ExternalLinkSchema: URL validation with http/https protocol check
  • TaskStatusEnum: Discovery task states (PENDING/IN_PROGRESS/COMPLETED/FAILED)

Prisma Client (prisma.ts)

Purpose: Singleton database client pattern

import { prisma } from "@/lib/prisma";

Utilities

  • utils.ts: cn() - Tailwind class merging with clsx/twMerge
  • slug.ts: generateSlug() - URL-friendly slug generation (prefers English, max 100 chars)

GitHub Integration

  • github/api.ts: getGitHubStats() - Fetch repo stats (stars, forks, license) with 5min cache
  • github/badges.ts: parseGitHubUrl(), getGitHubStarsBadgeUrl(), getAllGitHubBadgeUrls()

Usage Patterns

Validation:

import { ProjectInputSchema } from "@/lib/validations";
const validated = ProjectInputSchema.parse(inputData);

Database:

import { prisma } from "@/lib/prisma";
const projects = await prisma.project.findMany();

GitHub Badges:

import { getGitHubBadgesFromLinks } from "@/lib/github/badges";
const { stars } = getGitHubBadgesFromLinks(project.externalLinks);

Key Design Decisions

  • Singleton Prisma client prevents connection pool exhaustion in dev
  • All enums use Zod for runtime type checking
  • API key minimum length: 32 characters
  • URL validation enforces http/https protocol only