From b9ea6683838f2d08c91d96ffe990b6c2cd53e9a7 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Wed, 10 Jun 2026 12:55:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20types=20=E5=92=8C=20defaultConfig=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20create=20=E9=98=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/config.ts | 2 +- src/defaults/config.ts | 8 ++++++++ src/types.ts | 7 ++++++- tests/defaults/config.test.ts | 8 +++++++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/core/config.ts b/src/core/config.ts index 5a429dd..d6b18b9 100644 --- a/src/core/config.ts +++ b/src/core/config.ts @@ -91,7 +91,7 @@ export function validateConfig(config: RuneConfig): void { function mergeConfig(userConfig: Partial): RuneConfig { const result: RuneConfig = { stages: {} }; - const stageKeys = ["discuss", "plan", "build", "archive"] as const; + const stageKeys = ["discuss", "create", "plan", "build", "archive"] as const; for (const stage of stageKeys) { if (userConfig.stages?.[stage]) { diff --git a/src/defaults/config.ts b/src/defaults/config.ts index 5c0162d..eb2fb96 100644 --- a/src/defaults/config.ts +++ b/src/defaults/config.ts @@ -232,6 +232,14 @@ rune status 除非……有同步组件? \`\`\``, + }, + create: { + prompt: `请根据讨论内容,拟定一个简短、有意义的变更名称,然后执行 create 命令创建变更目录。 + +要求: +- 变更名称应简洁明了,能概括变更的核心内容 +- 仅支持中文、英文和短横线(-) +- 创建成功后,引导用户使用 /rune-plan <变更名> <文档名> 进入规划阶段`, }, plan: { documents: [ diff --git a/src/types.ts b/src/types.ts index a6133b9..e513f28 100644 --- a/src/types.ts +++ b/src/types.ts @@ -15,6 +15,10 @@ export interface DiscussStage { prompt: string; } +export interface CreateStage { + prompt: string; +} + export interface PlanStage { documents: DocumentConfig[]; } @@ -29,6 +33,7 @@ export interface ArchiveStage { export interface StagesConfig { discuss?: DiscussStage; + create?: CreateStage; plan?: PlanStage; build?: BuildStage; archive?: ArchiveStage; @@ -55,7 +60,7 @@ export interface ChangeStatus { taskProgress: { completed: number; total: number } | null; } -export const STAGES = ["discuss", "plan", "build", "archive"] as const; +export const STAGES = ["discuss", "create", "plan", "build", "archive"] as const; export type Stage = (typeof STAGES)[number]; export const RUNE_DIR = ".rune"; diff --git a/tests/defaults/config.test.ts b/tests/defaults/config.test.ts index 9c122cc..32eb095 100644 --- a/tests/defaults/config.test.ts +++ b/tests/defaults/config.test.ts @@ -2,13 +2,19 @@ import { describe, it, expect } from "bun:test"; import { defaultConfig } from "../../src/defaults/config.ts"; describe("defaultConfig", () => { - it("包含所有四个阶段的配置", () => { + it("包含所有五个阶段的配置", () => { expect(defaultConfig.stages.discuss).toBeDefined(); + expect(defaultConfig.stages.create).toBeDefined(); expect(defaultConfig.stages.plan).toBeDefined(); expect(defaultConfig.stages.build).toBeDefined(); expect(defaultConfig.stages.archive).toBeDefined(); }); + it("包含 create 阶段的配置", () => { + expect(defaultConfig.stages.create).toBeDefined(); + expect(defaultConfig.stages.create!.prompt).toBeTruthy(); + }); + it("discuss 阶段有 prompt", () => { expect(defaultConfig.stages.discuss!.prompt).toBeTruthy(); expect(typeof defaultConfig.stages.discuss!.prompt).toBe("string");