autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
146 lines (145 loc) • 5.7 kB
TypeScript
/**
* config.ts — 配置文件 Zod Schemas
*
* 为 default.json 和 constitution.yaml 提供运行时校验,
* 在应用启动时尽早发现配置错误。
*
* @module shared/schemas/config
*/
import { z } from 'zod';
/**
* App 配置 schema — 对应 config/default.json 合并结果
*
* 所有 section 是 optional,使用 .passthrough() 允许扩展字段。
* 用 safeParse 做非阻塞校验(warning 级别),不会阻止启动。
*/
export declare const AppConfigSchema: z.ZodObject<{
database: z.ZodOptional<z.ZodObject<{
type: z.ZodDefault<z.ZodEnum<{
sqlite: "sqlite";
}>>;
path: z.ZodDefault<z.ZodString>;
verbose: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>>;
server: z.ZodOptional<z.ZodObject<{
port: z.ZodDefault<z.ZodNumber>;
host: z.ZodDefault<z.ZodString>;
cors: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
origin: z.ZodDefault<z.ZodString>;
}, z.core.$strip>>;
}, z.core.$strip>>;
cache: z.ZodOptional<z.ZodObject<{
mode: z.ZodDefault<z.ZodEnum<{
memory: "memory";
redis: "redis";
none: "none";
}>>;
ttl: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
monitoring: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
slowRequestThreshold: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
logging: z.ZodOptional<z.ZodObject<{
level: z.ZodDefault<z.ZodEnum<{
error: "error";
debug: "debug";
info: "info";
warn: "warn";
silent: "silent";
}>>;
format: z.ZodDefault<z.ZodEnum<{
json: "json";
text: "text";
}>>;
console: z.ZodDefault<z.ZodBoolean>;
file: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
path: z.ZodDefault<z.ZodString>;
}, z.core.$strip>>;
}, z.core.$strip>>;
constitution: z.ZodOptional<z.ZodObject<{
path: z.ZodDefault<z.ZodString>;
strictMode: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>>;
features: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
ai: z.ZodOptional<z.ZodObject<{
provider: z.ZodDefault<z.ZodString>;
model: z.ZodDefault<z.ZodString>;
temperature: z.ZodDefault<z.ZodNumber>;
maxTokens: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
vector: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
adapter: z.ZodDefault<z.ZodString>;
dimensions: z.ZodDefault<z.ZodNumber>;
indexPath: z.ZodDefault<z.ZodString>;
hnsw: z.ZodOptional<z.ZodObject<{
M: z.ZodDefault<z.ZodNumber>;
efConstruct: z.ZodDefault<z.ZodNumber>;
efSearch: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
quantize: z.ZodDefault<z.ZodString>;
quantizeThreshold: z.ZodDefault<z.ZodNumber>;
persistence: z.ZodOptional<z.ZodObject<{
format: z.ZodDefault<z.ZodEnum<{
json: "json";
binary: "binary";
}>>;
flushIntervalMs: z.ZodDefault<z.ZodNumber>;
flushBatchSize: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
hybrid: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
rrfK: z.ZodDefault<z.ZodNumber>;
alpha: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
}, z.core.$strip>>;
qualityGate: z.ZodOptional<z.ZodObject<{
maxErrors: z.ZodDefault<z.ZodNumber>;
maxWarnings: z.ZodDefault<z.ZodNumber>;
minScore: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
guard: z.ZodOptional<z.ZodObject<{
disabledRules: z.ZodDefault<z.ZodArray<z.ZodString>>;
codeLevelThresholds: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
severity: z.ZodOptional<z.ZodString>;
exclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>]>>>;
}, z.core.$strip>>;
taskGraph: z.ZodOptional<z.ZodObject<{
decision: z.ZodOptional<z.ZodObject<{
staleDays: z.ZodDefault<z.ZodNumber>;
maxActiveInPrime: z.ZodDefault<z.ZodNumber>;
maxStaleInPrime: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>>;
}, z.core.$strip>>;
}, z.core.$loose>;
export type AppConfig = z.infer<typeof AppConfigSchema>;
/** Constitution schema — 对应 config/constitution.yaml */
export declare const ConstitutionSchema: z.ZodObject<{
version: z.ZodOptional<z.ZodString>;
effective_date: z.ZodOptional<z.ZodString>;
capabilities: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
description: z.ZodOptional<z.ZodString>;
probe: z.ZodOptional<z.ZodString>;
}, z.core.$loose>>>;
rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
id: z.ZodString;
check: z.ZodString;
description: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>>;
roles: z.ZodDefault<z.ZodArray<z.ZodObject<{
id: z.ZodString;
name: z.ZodString;
description: z.ZodOptional<z.ZodString>;
permissions: z.ZodDefault<z.ZodArray<z.ZodString>>;
constraints: z.ZodDefault<z.ZodArray<z.ZodString>>;
requires_capability: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>>>;
priorities: z.ZodOptional<z.ZodArray<z.ZodObject<{
id: z.ZodNumber;
}, z.core.$loose>>>;
}, z.core.$loose>;
export type ConstitutionConfigType = z.infer<typeof ConstitutionSchema>;