feat: add templates for epics, product brief, and requirements PRD

- Created a new directory structure for epics and stories with templates for individual epics and an index file.
- Added a product brief template for generating product brief documents in Phase 2.
- Introduced a requirements PRD template for generating a Product Requirements Document as a directory of individual requirement files in Phase 3.

feat: implement V2PipelineTab component for Memory V2 management

- Developed the V2PipelineTab component to manage extraction and consolidation processes.
- Included ExtractionCard and ConsolidationCard components to handle respective functionalities.
- Added JobsList component to display job statuses and allow filtering by job kind.

feat: create hooks for Memory V2 pipeline

- Implemented custom hooks for managing extraction and consolidation statuses, as well as job listings.
- Added mutation hooks to trigger extraction and consolidation processes with automatic query invalidation on success.
This commit is contained in:
catlog22
2026-02-27 13:27:27 +08:00
parent 99a3561f71
commit dd72e95e4d
57 changed files with 11018 additions and 1915 deletions

View File

@@ -158,6 +158,50 @@
"session-state-watch": {
"name": "Session State Watch",
"description": "Watch for session metadata file changes (workflow-session.json)"
},
"stop-notify": {
"name": "Stop Notify",
"description": "Notify dashboard when Claude finishes responding"
},
"auto-format-on-write": {
"name": "Auto Format on Write",
"description": "Auto-format files after Claude writes or edits them"
},
"auto-lint-on-write": {
"name": "Auto Lint on Write",
"description": "Auto-lint files after Claude writes or edits them"
},
"block-sensitive-files": {
"name": "Block Sensitive Files",
"description": "Block modifications to sensitive files (.env, secrets, credentials)"
},
"git-auto-stage": {
"name": "Git Auto Stage",
"description": "Auto stage all modified files when Claude finishes responding"
},
"post-edit-index": {
"name": "Post Edit Index",
"description": "Notify indexing service when files are modified"
},
"session-end-summary": {
"name": "Session End Summary",
"description": "Send session summary to dashboard on session end"
},
"project-state-inject": {
"name": "Project State Inject",
"description": "Inject project guidelines and recent dev history at session start"
},
"memory-v2-extract": {
"name": "Memory V2 Extract",
"description": "Trigger Phase 1 extraction when session ends (after idle period)"
},
"memory-v2-auto-consolidate": {
"name": "Memory V2 Auto Consolidate",
"description": "Trigger Phase 2 consolidation after extraction jobs complete"
},
"memory-sync-dashboard": {
"name": "Memory Sync Dashboard",
"description": "Sync memory V2 status to dashboard on changes"
}
},
"actions": {

View File

@@ -109,5 +109,50 @@
"vectorRank": "Vector #{rank}",
"ftsRank": "FTS #{rank}",
"heatScore": "Heat: {score}"
},
"v2": {
"title": "Memory V2 Pipeline",
"extraction": {
"title": "Extraction",
"description": "Extract structured memories from CLI sessions",
"trigger": "Trigger Extraction",
"extracting": "Extracting...",
"extracted": "Extracted",
"recentJobs": "Recent Jobs",
"triggered": "Extraction triggered",
"triggerError": "Failed to trigger extraction"
},
"consolidation": {
"title": "Consolidation",
"description": "Consolidate extraction results into MEMORY.md",
"trigger": "Trigger Consolidation",
"consolidating": "Consolidating...",
"preview": "Preview",
"memoryMd": "MEMORY.md",
"exists": "Exists",
"notExists": "Not Exists",
"inputs": "Inputs",
"triggered": "Consolidation triggered",
"triggerError": "Failed to trigger consolidation"
},
"jobs": {
"title": "Jobs",
"kind": "Kind",
"key": "Key",
"status": "Status",
"error": "Error",
"noJobs": "No jobs found",
"allKinds": "All Kinds",
"extraction": "Extraction",
"consolidation": "Consolidation"
},
"status": {
"idle": "Idle",
"running": "Running",
"completed": "Completed",
"done": "Done",
"error": "Error",
"pending": "Pending"
}
}
}

View File

@@ -213,13 +213,46 @@
"warning": "Approaching Limit",
"normal": "Normal",
"characters": "characters",
"lines": "lines",
"maxLimit": "Max",
"quickPresets": "Quick presets:",
"statsInfo": "Statistics",
"requiredLength": "Required specs length:",
"matchedLength": "Keyword-matched length:",
"remaining": "Remaining space:",
"loadError": "Failed to load stats",
"saveSuccess": "Settings saved successfully",
"saveError": "Failed to save settings"
"saveError": "Failed to save settings",
"filesList": "Injection Files",
"files": "files",
"noFiles": "No files match this command",
"loadingPreview": "Loading preview...",
"commandPreview": "Command Injection Preview",
"commandPreviewDesc": "Preview the content that would be injected by different CLI commands",
"previewTitle": "Injection Preview"
},
"commandPreview": {
"default": {
"label": "All Categories",
"description": "Load all required specs without category filter"
},
"exploration": {
"label": "Exploration",
"description": "Specs for code exploration, analysis, debugging"
},
"planning": {
"label": "Planning",
"description": "Specs for task planning, requirements"
},
"execution": {
"label": "Execution",
"description": "Specs for implementation, testing, deployment"
},
"general": {
"label": "General",
"description": "Specs that apply to all stages"
}
},
"settings": {
@@ -231,9 +264,27 @@
"defaultReadModeHelp": "The default read mode for newly created personal specs",
"selectReadMode": "Select read mode",
"autoEnable": "Auto Enable New Specs",
"autoEnableDescription": "Automatically enable newly created personal specs",
"autoEnableDescription": "New personal specs are set to required (readMode=required) by default and automatically included in context injection",
"specStatistics": "Spec Statistics",
"totalSpecs": "Total: {count} spec files"
"totalSpecs": "Total: {count} spec files",
"devProgressInjection": "Development Progress Injection",
"devProgressInjectionDesc": "Control how development progress from project-tech.json is injected into AI context",
"enableDevProgress": "Enable Injection",
"enableDevProgressDesc": "Include development history in AI context",
"maxEntries": "Max Entries per Category",
"maxEntriesDesc": "Maximum number of entries to include per category (1-50)",
"includeCategories": "Include Categories",
"categoriesDesc": "Click to toggle category inclusion",
"devProgressStats": "{total} entries from {sessions} sessions, last updated: {date}",
"devProgressStatsNoDate": "{total} entries from {sessions} sessions"
},
"devCategory": {
"feature": "Feature",
"enhancement": "Enhancement",
"bugfix": "Bug Fix",
"refactor": "Refactor",
"docs": "Docs"
},
"dialog": {

View File

@@ -158,6 +158,50 @@
"session-state-watch": {
"name": "会话状态监控",
"description": "监控会话元数据文件变更 (workflow-session.json)"
},
"stop-notify": {
"name": "停止通知",
"description": "当 Claude 完成响应时通知仪表盘"
},
"auto-format-on-write": {
"name": "写入自动格式化",
"description": "在 Claude 写入或编辑文件后自动格式化"
},
"auto-lint-on-write": {
"name": "写入自动检查",
"description": "在 Claude 写入或编辑文件后自动进行 Lint 检查"
},
"block-sensitive-files": {
"name": "阻止敏感文件修改",
"description": "阻止对敏感文件 (.env、密钥、凭据) 的修改"
},
"git-auto-stage": {
"name": "Git 自动暂存",
"description": "当 Claude 完成响应时自动暂存所有修改的文件"
},
"post-edit-index": {
"name": "编辑后索引",
"description": "文件修改时通知索引服务"
},
"session-end-summary": {
"name": "会话结束摘要",
"description": "会话结束时向仪表盘发送会话摘要"
},
"project-state-inject": {
"name": "项目状态注入",
"description": "会话开始时注入项目指南和最近开发历史"
},
"memory-v2-extract": {
"name": "Memory V2 提取",
"description": "会话结束时触发 Phase 1 提取(空闲期后)"
},
"memory-v2-auto-consolidate": {
"name": "Memory V2 自动合并",
"description": "提取作业完成后触发 Phase 2 合并"
},
"memory-sync-dashboard": {
"name": "Memory 同步仪表盘",
"description": "变更时将 Memory V2 状态同步到仪表盘"
}
},
"actions": {

View File

@@ -109,5 +109,50 @@
"vectorRank": "向量 #{rank}",
"ftsRank": "全文 #{rank}",
"heatScore": "热度: {score}"
},
"v2": {
"title": "Memory V2 Pipeline",
"extraction": {
"title": "提取",
"description": "从 CLI 会话中提取结构化记忆",
"trigger": "触发提取",
"extracting": "提取中...",
"extracted": "已提取",
"recentJobs": "最近作业",
"triggered": "提取已触发",
"triggerError": "触发提取失败"
},
"consolidation": {
"title": "合并",
"description": "合并提取结果生成 MEMORY.md",
"trigger": "触发合并",
"consolidating": "合并中...",
"preview": "预览",
"memoryMd": "MEMORY.md",
"exists": "存在",
"notExists": "不存在",
"inputs": "输入",
"triggered": "合并已触发",
"triggerError": "触发合并失败"
},
"jobs": {
"title": "作业列表",
"kind": "类型",
"key": "Key",
"status": "状态",
"error": "错误",
"noJobs": "暂无作业记录",
"allKinds": "所有类型",
"extraction": "提取",
"consolidation": "合并"
},
"status": {
"idle": "空闲",
"running": "运行中",
"completed": "已完成",
"done": "完成",
"error": "错误",
"pending": "等待"
}
}
}

View File

@@ -214,6 +214,9 @@
"normal": "正常",
"characters": "字符",
"chars": "字符",
"lines": "行",
"maxLimit": "最大",
"quickPresets": "快速预设:",
"statsInfo": "统计信息",
"requiredLength": "必读规范长度:",
"matchedLength": "关键词匹配长度:",
@@ -222,7 +225,34 @@
"saveSuccess": "设置已保存",
"saveError": "保存设置失败",
"filesList": "注入文件列表",
"files": "个文件"
"files": "个文件",
"noFiles": "没有匹配此命令的文件",
"loadingPreview": "加载预览中...",
"commandPreview": "命令注入预览",
"commandPreviewDesc": "预览不同 CLI 命令将注入的内容"
},
"commandPreview": {
"default": {
"label": "全部类别",
"description": "加载所有必读规范,不进行类别过滤"
},
"exploration": {
"label": "探索",
"description": "代码探索、分析、调试相关规范"
},
"planning": {
"label": "规划",
"description": "任务规划、需求相关规范"
},
"execution": {
"label": "执行",
"description": "实现、测试、部署相关规范"
},
"general": {
"label": "通用",
"description": "适用于所有阶段的规范"
}
},
"priority": {
@@ -241,9 +271,27 @@
"defaultReadModeHelp": "新创建的个人规范的默认读取模式",
"selectReadMode": "选择读取模式",
"autoEnable": "自动启用新规范",
"autoEnableDescription": "自动启用新创建的个人规范",
"autoEnableDescription": "新创建的个人规范默认设置为必读readMode=required自动加入注入上下文",
"specStatistics": "规范统计",
"totalSpecs": "总计:{count} 个规范文件"
"totalSpecs": "总计:{count} 个规范文件",
"devProgressInjection": "开发进度注入",
"devProgressInjectionDesc": "控制如何将 project-tech.json 中的开发进度注入到 AI 上下文中",
"enableDevProgress": "启用注入",
"enableDevProgressDesc": "在 AI 上下文中包含开发历史记录",
"maxEntries": "每类最大条目数",
"maxEntriesDesc": "每个类别包含的最大条目数 (1-50)",
"includeCategories": "包含的类别",
"categoriesDesc": "点击切换类别包含状态",
"devProgressStats": "共 {total} 条记录,来自 {sessions} 个会话,最后更新:{date}",
"devProgressStatsNoDate": "共 {total} 条记录,来自 {sessions} 个会话"
},
"devCategory": {
"feature": "新功能",
"enhancement": "增强",
"bugfix": "修复",
"refactor": "重构",
"docs": "文档"
},
"dialog": {