UNPKG

vibe-codex

Version:

CLI tool to install development rules and git hooks with interactive configuration

354 lines (349 loc) 9.04 kB
/** * Configuration schema for vibe-codex modules */ export const configSchema = { $schema: "http://json-schema.org/draft-07/schema#", type: "object", properties: { version: { type: "string", description: "vibe-codex configuration version", pattern: "^\\d+\\.\\d+\\.\\d+$", }, modules: { type: "object", description: "Module configuration", properties: { core: { $ref: "#/definitions/moduleConfig", description: "Core module configuration (always enabled)", }, "github-workflow": { $ref: "#/definitions/githubWorkflowConfig", description: "GitHub workflow module configuration", }, testing: { $ref: "#/definitions/testingConfig", description: "Testing module configuration", }, deployment: { $ref: "#/definitions/deploymentConfig", description: "Deployment module configuration", }, documentation: { $ref: "#/definitions/documentationConfig", description: "Documentation module configuration", }, }, additionalProperties: { $ref: "#/definitions/moduleConfig", }, }, customModules: { type: "object", description: "Custom module paths", additionalProperties: { type: "string", description: "Path to custom module", }, }, issueTracking: { type: "object", description: "Issue tracking and reminder configuration", properties: { enableReminders: { type: "boolean", default: true, description: "Enable issue update reminders", }, reminderFrequency: { type: "string", default: "2h", description: "How often to remind about issue updates", pattern: "^\\d+[hmd]$", }, autoPrompt: { type: "boolean", default: true, description: "Automatically prompt for issue updates", }, updateOnPush: { type: "boolean", default: true, description: "Check for issue updates before push", }, relatedIssueDetection: { type: "boolean", default: true, description: "Detect related issues from commit messages", }, }, }, customRules: { type: "array", description: "Custom rules to add", items: { $ref: "#/definitions/customRule", }, }, }, required: ["version", "modules"], definitions: { moduleConfig: { type: "object", properties: { enabled: { type: "boolean", description: "Whether the module is enabled", }, options: { type: "object", description: "Module-specific options", }, }, required: ["enabled"], }, githubWorkflowConfig: { type: "object", allOf: [{ $ref: "#/definitions/moduleConfig" }], properties: { enabled: { type: "boolean" }, options: { type: "object", properties: { features: { type: "array", description: "Enabled workflow features", items: { type: "string", enum: [ "pr-checks", "issue-tracking", "auto-merge", "branch-protection", ], }, }, prTemplate: { type: "string", description: "Path to custom PR template", }, issueTemplate: { type: "string", description: "Path to custom issue template", }, }, }, }, }, testingConfig: { type: "object", allOf: [{ $ref: "#/definitions/moduleConfig" }], properties: { enabled: { type: "boolean" }, options: { type: "object", properties: { framework: { type: "string", description: "Testing framework", enum: ["jest", "mocha", "vitest", "jasmine"], }, coverage: { type: "object", properties: { threshold: { type: "number", description: "Coverage threshold percentage", minimum: 0, maximum: 100, }, enforcement: { type: "string", description: "How to enforce coverage", enum: ["error", "warning", "none"], }, exclude: { type: "array", description: "Paths to exclude from coverage", items: { type: "string" }, }, }, }, }, }, }, }, deploymentConfig: { type: "object", allOf: [{ $ref: "#/definitions/moduleConfig" }], properties: { enabled: { type: "boolean" }, options: { type: "object", properties: { platform: { type: "string", description: "Deployment platform", enum: ["vercel", "netlify", "aws", "gcp", "azure", "heroku"], }, checks: { type: "array", description: "Deployment checks to perform", items: { type: "string", enum: [ "preview-deployment", "production-validation", "environment-vars", "build-success", ], }, }, }, }, }, }, documentationConfig: { type: "object", allOf: [{ $ref: "#/definitions/moduleConfig" }], properties: { enabled: { type: "boolean" }, options: { type: "object", properties: { requirements: { type: "array", description: "Required documentation", items: { type: "string", enum: [ "readme", "context", "api-docs", "architecture", "contributing", ], }, }, format: { type: "string", description: "Documentation format", enum: ["markdown", "jsdoc", "typedoc"], }, }, }, }, }, customRule: { type: "object", properties: { name: { type: "string", description: "Rule name", }, path: { type: "string", description: "Path to rule implementation", }, level: { type: "integer", description: "Rule level", minimum: 1, maximum: 5, }, enabled: { type: "boolean", description: "Whether rule is enabled", default: true, }, }, required: ["name", "path", "level"], }, }, }; /** * Example configurations */ export const configExamples = { minimal: { version: "1.0.0", modules: { core: { enabled: true }, }, }, frontend: { version: "1.0.0", modules: { core: { enabled: true }, "github-workflow": { enabled: true, options: { features: ["pr-checks", "issue-tracking"], }, }, testing: { enabled: true, options: { framework: "jest", coverage: { threshold: 80, enforcement: "error", }, }, }, documentation: { enabled: true, options: { requirements: ["readme", "context"], }, }, }, }, fullStack: { version: "1.0.0", modules: { core: { enabled: true }, "github-workflow": { enabled: true, options: { features: [ "pr-checks", "issue-tracking", "auto-merge", "branch-protection", ], }, }, testing: { enabled: true, options: { framework: "jest", coverage: { threshold: 90, enforcement: "error", exclude: ["**/*.test.js", "**/__mocks__/**"], }, }, }, deployment: { enabled: true, options: { platform: "vercel", checks: [ "preview-deployment", "production-validation", "environment-vars", ], }, }, documentation: { enabled: true, options: { requirements: ["readme", "context", "api-docs", "architecture"], format: "markdown", }, }, }, }, };