speccore 8.3.157 → 8.3.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +0 -13
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +66 -215
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.js +2 -2
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +1 -4
- package/dist/commands/update.js.map +1 -1
- package/dist/core/agents/defaults/_INDEX.md +15 -15
- package/dist/core/agents/defaults/code-reviewer.md +9 -0
- package/dist/core/agents/defaults/compiler.md +12 -3
- package/dist/core/agents/defaults/dependency-analyst.md +7 -0
- package/dist/core/agents/defaults/doc-sync-agent.md +7 -0
- package/dist/core/agents/defaults/impact-analyst.md +7 -0
- package/dist/core/agents/defaults/interaction-designer.md +17 -0
- package/dist/core/agents/defaults/performance-expert.md +9 -0
- package/dist/core/agents/defaults/regression-tester.md +7 -0
- package/dist/core/agents/defaults/security-reviewer.md +9 -0
- package/dist/core/agents/defaults/test-engineer.md +10 -0
- package/dist/core/agents/defaults/test-reviewer.md +10 -0
- package/dist/core/lock-manager.d.ts.map +1 -1
- package/dist/core/lock-manager.js +2 -0
- package/dist/core/lock-manager.js.map +1 -1
- package/dist/core/rules/defaults/ANALYSIS_QUALITY.md +73 -0
- package/dist/core/rules/defaults/EXECUTION.md +20 -0
- package/dist/core/rules/defaults/ITERATION_QUALITY.md +49 -0
- package/dist/core/rules/defaults/TASK_SPLIT.md +16 -0
- package/dist/core/schemas/context.schema.d.ts +87 -2
- package/dist/core/schemas/context.schema.d.ts.map +1 -1
- package/dist/core/schemas/iteration.schema.d.ts +132 -4
- package/dist/core/schemas/iteration.schema.d.ts.map +1 -1
- package/dist/core/schemas/platform.schema.d.ts +56 -2
- package/dist/core/schemas/platform.schema.d.ts.map +1 -1
- package/dist/core/schemas/task.schema.d.ts +157 -8
- package/dist/core/schemas/task.schema.d.ts.map +1 -1
- package/dist/core/spec-paths.d.ts.map +1 -1
- package/dist/core/spec-paths.js +4 -1
- package/dist/core/spec-paths.js.map +1 -1
- package/package.json +2 -3
- package/templates/api-design-example.md +0 -338
- package/templates/ci/github-actions.yml +0 -44
- package/templates/dashboard.html +0 -425
- package/templates/database-example.md +0 -223
- package/templates/deploy-docker/README.md +0 -284
- package/templates/deploy-docker/deploy-remote.sh +0 -79
- package/templates/deploy-docker/docker-compose.yml +0 -113
- package/templates/deploy-docker/frontend.Dockerfile +0 -43
- package/templates/deploy-docker/nginx.conf +0 -30
- package/templates/deploy-examples.yaml +0 -436
- package/templates/deploy-java/Dockerfile +0 -50
- package/templates/deploy-java/README.md +0 -212
- package/templates/deploy-java/deploy.sh +0 -120
- package/templates/deploy-java/spring-boot.service +0 -35
- package/templates/html/speccore-ask-explain.html +0 -10
- package/templates/html/speccore-ask-guide.html +0 -10
- package/templates/html/speccore-ask-match.html +0 -10
- package/templates/html/speccore-ask-pipeline.html +0 -1
- package/templates/html/speccore-ask-result.html +0 -10
- package/templates/html/speccore-demo.html +0 -449
- package/templates/html/speccore-dev.html +0 -202
- package/templates/html/speccore-help.html +0 -1
- package/templates/html/speccore-knowledge-graph.html +0 -656
- package/templates/html/speccore-retro-T-001.html +0 -1
- package/templates/html/speccore-setup-guide.html +0 -289
- package/templates/html/speccore-welcome.html +0 -1
- package/templates/security-example.md +0 -226
- package/templates/verify-spec-example.yaml +0 -982
|
@@ -7,6 +7,12 @@ activations:
|
|
|
7
7
|
|
|
8
8
|
# 角色:文档同步检查员 (Doc Sync Agent)
|
|
9
9
|
|
|
10
|
+
## 执行前准备
|
|
11
|
+
|
|
12
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
13
|
+
2. **确定文档格式**:根据技术栈确定 API 文档格式(如 OpenAPI、GraphQL Schema、gRPC Proto 等)和文档生成工具。
|
|
14
|
+
3. **叠加检查项**:将 RULES 中的技术栈专属文档规范合并到下方检查清单。
|
|
15
|
+
|
|
10
16
|
## 职责
|
|
11
17
|
|
|
12
18
|
- 检查代码与文档的一致性
|
|
@@ -19,6 +25,7 @@ activations:
|
|
|
19
25
|
2. **数据模型**:文档中的字段定义是否与代码一致
|
|
20
26
|
3. **业务规则**:代码逻辑是否与需求文档一致
|
|
21
27
|
4. **注释时效**:注释是否描述当前代码行为
|
|
28
|
+
5. **技术栈专属文档**:框架特有配置、类型定义、路由声明等是否与文档同步
|
|
22
29
|
|
|
23
30
|
## 输出
|
|
24
31
|
|
|
@@ -7,6 +7,12 @@ activations:
|
|
|
7
7
|
|
|
8
8
|
# 角色:影响范围分析师 (Impact Analyst)
|
|
9
9
|
|
|
10
|
+
## 执行前准备
|
|
11
|
+
|
|
12
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
13
|
+
2. **理解技术栈模块结构**:不同技术栈的模块边界不同(如 Maven 多模块、npm workspace、Gradle 子项目等)。
|
|
14
|
+
3. **叠加分析维度**:将 RULES 中的技术栈专属结构信息合并到下方分析维度。
|
|
15
|
+
|
|
10
16
|
## 职责
|
|
11
17
|
|
|
12
18
|
- 分析变更对现有代码、文档、测试的影响范围
|
|
@@ -20,6 +26,7 @@ activations:
|
|
|
20
26
|
3. **数据影响**:数据库 schema 变更是否需要迁移
|
|
21
27
|
4. **文档影响**:哪些文档需要同步更新
|
|
22
28
|
5. **测试影响**:哪些测试用例需要新增/修改
|
|
29
|
+
6. **技术栈特有影响**:构建配置、依赖版本、框架升级等是否需要同步调整
|
|
23
30
|
|
|
24
31
|
## 输出格式
|
|
25
32
|
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
activations:
|
|
3
|
+
- command: analyze
|
|
4
|
+
phase: clarify
|
|
5
|
+
condition: ""
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# Agent: interaction-designer
|
|
2
9
|
|
|
10
|
+
## 执行前准备
|
|
11
|
+
|
|
12
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
13
|
+
2. **了解技术栈交互能力边界**:不同技术栈的交互能力不同(如 Web 的 WebSocket/SSE、React Native 的原生模块能力、小程序的受限 API 等)。
|
|
14
|
+
3. **叠加约束检查**:将 RULES 中的技术栈专属交互约束合并到下方检查清单。
|
|
15
|
+
|
|
3
16
|
## 职责
|
|
4
17
|
|
|
5
18
|
- 设计清晰直观的页面信息架构
|
|
@@ -37,6 +50,10 @@
|
|
|
37
50
|
- [ ] 前端展示的数据格式 vs 后端返回的格式
|
|
38
51
|
- [ ] 前端状态管理 vs 后端实体状态是否同步
|
|
39
52
|
- [ ] 前端错误码 vs 后端错误码映射
|
|
53
|
+
- [ ] 交互实现是否符合技术栈能力边界(如实时通信方案是否受平台限制)
|
|
54
|
+
|
|
55
|
+
### 技术栈专属检查(根据 RULES/ 叠加)
|
|
56
|
+
- [ ] 在此处补充从 RULES/ 中读取的匹配技术栈的交互约束(如移动端手势、Web 无障碍规范等)
|
|
40
57
|
|
|
41
58
|
### 用户操作路径优化
|
|
42
59
|
- [ ] 最短路径原则:完成核心目标的最少点击数
|
|
@@ -10,6 +10,12 @@ activations:
|
|
|
10
10
|
|
|
11
11
|
# 角色:性能专家 (Performance Expert)
|
|
12
12
|
|
|
13
|
+
## 执行前准备
|
|
14
|
+
|
|
15
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
16
|
+
2. **识别技术栈性能特征**:不同技术栈的瓶颈点不同(如 React 的重渲染、Java 的 GC、数据库的 N+1 等)。
|
|
17
|
+
3. **叠加检查项**:将 RULES 中的技术栈专属性能要求合并到下方检查清单。
|
|
18
|
+
|
|
13
19
|
## 职责
|
|
14
20
|
|
|
15
21
|
- 检查代码性能瓶颈
|
|
@@ -30,6 +36,9 @@ activations:
|
|
|
30
36
|
- [ ] 是否避免大对象内联
|
|
31
37
|
- [ ] 是否使用虚拟滚动(长列表)
|
|
32
38
|
|
|
39
|
+
### 技术栈专属检查(根据 RULES/ 叠加)
|
|
40
|
+
- [ ] 在此处补充从 RULES/ 中读取的匹配技术栈的性能检查项(如框架特有的优化策略、缓存机制等)
|
|
41
|
+
|
|
33
42
|
## 输出
|
|
34
43
|
|
|
35
44
|
| 位置 | 问题 | 影响 | 建议优化 |
|
|
@@ -7,6 +7,12 @@ activations:
|
|
|
7
7
|
|
|
8
8
|
# 角色:回归测试专家 (Regression Tester)
|
|
9
9
|
|
|
10
|
+
## 执行前准备
|
|
11
|
+
|
|
12
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
13
|
+
2. **确定测试能力边界**:不同技术栈的自动化测试能力和工具链不同(如 E2E 测试框架、性能测试工具等)。
|
|
14
|
+
3. **叠加测试策略**:将 RULES 中的技术栈专属测试要求合并到下方回归测试策略。
|
|
15
|
+
|
|
10
16
|
## 职责
|
|
11
17
|
|
|
12
18
|
- 评估变更对现有功能的影响
|
|
@@ -19,6 +25,7 @@ activations:
|
|
|
19
25
|
2. **间接回归**:调用该模块的其他功能验证
|
|
20
26
|
3. **集成回归**:端到端流程验证
|
|
21
27
|
4. **数据回归**:历史数据兼容性验证
|
|
28
|
+
5. **技术栈特有回归**:框架升级、依赖变更、构建流程等是否需要专项验证
|
|
22
29
|
|
|
23
30
|
## 输出格式
|
|
24
31
|
|
|
@@ -13,6 +13,12 @@ activations:
|
|
|
13
13
|
|
|
14
14
|
# 角色:安全审查员 (Security Reviewer)
|
|
15
15
|
|
|
16
|
+
## 执行前准备
|
|
17
|
+
|
|
18
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
19
|
+
2. **识别技术栈攻击面**:不同技术栈的安全风险不同(如 React 的 XSS、Java 的反序列化、移动端的本地存储安全等)。
|
|
20
|
+
3. **叠加检查项**:将 RULES 中的技术栈专属安全要求合并到下方检查清单。
|
|
21
|
+
|
|
16
22
|
## 职责
|
|
17
23
|
|
|
18
24
|
- 识别需求/代码中的安全风险
|
|
@@ -37,6 +43,9 @@ activations:
|
|
|
37
43
|
- [ ] 日志中是否泄露敏感信息
|
|
38
44
|
- [ ] 接口响应是否包含不必要的敏感字段
|
|
39
45
|
|
|
46
|
+
### 技术栈专属检查(根据 RULES/ 叠加)
|
|
47
|
+
- [ ] 在此处补充从 RULES/ 中读取的匹配技术栈的安全检查项(如框架特有的安全配置、依赖漏洞等)
|
|
48
|
+
|
|
40
49
|
## 输出
|
|
41
50
|
|
|
42
51
|
对每个发现的安全问题,输出:
|
|
@@ -13,13 +13,23 @@ activations:
|
|
|
13
13
|
- 检查测试覆盖率
|
|
14
14
|
- 确保新增代码有配套测试
|
|
15
15
|
|
|
16
|
+
## 执行前准备
|
|
17
|
+
|
|
18
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
19
|
+
2. **确定测试框架**:根据技术栈确定测试命令和工具(如 Jest、JUnit、pytest、XCTest 等)。
|
|
20
|
+
3. **叠加检查项**:将 RULES 中的技术栈专属测试要求合并到下方检查清单。
|
|
21
|
+
|
|
16
22
|
## 检查项
|
|
17
23
|
|
|
24
|
+
### 通用检查
|
|
18
25
|
1. **测试执行**:所有测试通过
|
|
19
26
|
2. **覆盖率**:行覆盖 ≥ 80%,分支覆盖 ≥ 70%
|
|
20
27
|
3. **新代码覆盖**:新增代码必须有测试覆盖
|
|
21
28
|
4. **测试质量**:测试用例有效、独立、可维护
|
|
22
29
|
|
|
30
|
+
### 技术栈专属检查(根据 RULES/ 叠加)
|
|
31
|
+
- 在此处补充从 RULES/ 中读取的匹配规则中的测试要求(如 Mock 策略、测试结构、并发测试等)
|
|
32
|
+
|
|
23
33
|
## 输出
|
|
24
34
|
|
|
25
35
|
| 模块 | 测试数 | 通过 | 失败 | 覆盖率 |
|
|
@@ -13,6 +13,12 @@ activations:
|
|
|
13
13
|
- 检查测试覆盖率
|
|
14
14
|
- 识别未覆盖的边界条件
|
|
15
15
|
|
|
16
|
+
## 执行前准备
|
|
17
|
+
|
|
18
|
+
1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
|
|
19
|
+
2. **确定测试规范**:根据技术栈确定测试框架的审查重点(如 Jest 的 Mock 策略、JUnit 的断言风格等)。
|
|
20
|
+
3. **叠加检查项**:将 RULES 中的技术栈专属测试要求合并到下方审查清单。
|
|
21
|
+
|
|
16
22
|
## 审查清单
|
|
17
23
|
|
|
18
24
|
### 测试完整性
|
|
@@ -32,6 +38,10 @@ activations:
|
|
|
32
38
|
- [ ] 分支覆盖率 ≥ 70%
|
|
33
39
|
- [ ] 关键路径是否覆盖
|
|
34
40
|
|
|
41
|
+
### 技术栈专属检查(根据 RULES/ 叠加)
|
|
42
|
+
- [ ] 测试框架专属最佳实践(如 React Testing Library 的查询方式、Mockito 的验证模式等)
|
|
43
|
+
- [ ] 技术栈特有的测试边界(如前端组件测试 vs 后端集成测试的差异)
|
|
44
|
+
|
|
35
45
|
## 输出格式
|
|
36
46
|
|
|
37
47
|
```markdown
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-manager.d.ts","sourceRoot":"","sources":["../../src/core/lock-manager.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GACL,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"lock-manager.d.ts","sourceRoot":"","sources":["../../src/core/lock-manager.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GACL,OAAO,CAAC,UAAU,CAAC,CAkDrB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CASvF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAchE"}
|
|
@@ -96,6 +96,8 @@ async function acquireLock(cwd, lockName, options = {}) {
|
|
|
96
96
|
iteration: options.iteration,
|
|
97
97
|
pid: process.pid,
|
|
98
98
|
};
|
|
99
|
+
// 确保锁目录存在(execute 路径未经过 init/update 的 ensureDir,否则 writeFile 会 ENOENT)
|
|
100
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(cwd, LOCKS_DIR));
|
|
99
101
|
await (0, fs_extra_1.writeFile)(lockPath, JSON.stringify(info, null, 2));
|
|
100
102
|
return { success: true, message: '锁获取成功' };
|
|
101
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-manager.js","sourceRoot":"","sources":["../../src/core/lock-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,
|
|
1
|
+
{"version":3,"file":"lock-manager.js","sourceRoot":"","sources":["../../src/core/lock-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# 全局分析质量规范(v8.3.62+)
|
|
2
|
+
|
|
3
|
+
> 以下规范为框架级约束,具体执行要求见 analyze 命令 Prompt。
|
|
4
|
+
|
|
5
|
+
## 分层执行原则
|
|
6
|
+
|
|
7
|
+
- **全局分析必须按 4 层递进执行**,禁止跳过任何一层
|
|
8
|
+
- 每层完成后**必须自检**,不通过需补全后再进入下一层
|
|
9
|
+
- Layer 4 拆分为 4a(产品文档) → 4b(技术核心) → 4c(技术扩展) → 4d(各端技术) 子步骤执行
|
|
10
|
+
|
|
11
|
+
## 产出目录结构与文档清单
|
|
12
|
+
|
|
13
|
+
全局分析产出位于 `.speccore/GLOBAL/`,必须生成以下文档:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
.speccore/GLOBAL/
|
|
17
|
+
├── platforms/ ← Layer 1/2/3/4d
|
|
18
|
+
│ ├── {端名}/
|
|
19
|
+
│ │ ├── _INDEX.md ← Layer 1: 端索引(≥80行)
|
|
20
|
+
│ │ ├── modules/
|
|
21
|
+
│ │ │ └── *.md ← Layer 3: 功能模块深入文档
|
|
22
|
+
│ │ └── [Layer 4d 各端技术文档]
|
|
23
|
+
│ └── _shared/
|
|
24
|
+
│ ├── _ASSOCIATION.md ← Layer 2: 跨端关联(≥100行)
|
|
25
|
+
│ └── _MODULES.md ← Layer 2: 功能模块清单(≥50行)
|
|
26
|
+
├── requirements/ ← Layer 4a
|
|
27
|
+
│ ├── REQUIREMENT.md ← 全局需求总纲(≥500行)
|
|
28
|
+
│ └── {前端端名}/
|
|
29
|
+
│ └── REQUIREMENT.md ← 各端产品视角需求(≥500行)
|
|
30
|
+
├── overview/ ← Layer 4b/4c
|
|
31
|
+
│ ├── ARCHITECTURE.md ← 4b: 系统架构(≥200行)
|
|
32
|
+
│ ├── FUNCTION_MAP.md ← 4b: 功能映射(≥50行)
|
|
33
|
+
│ ├── API_CONTRACT.yaml ← 4b: 接口契约
|
|
34
|
+
│ ├── INTERACTION_MAP.md ← 4b: 交互时序(≥50行)
|
|
35
|
+
│ ├── SECURITY_AUDIT.md ← 4c: 安全审计(≥80行)
|
|
36
|
+
│ ├── PERFORMANCE_BASELINE.md ← 4c: 性能基线(≥80行)
|
|
37
|
+
│ ├── DATA_FLOW.md ← 4c: 数据流转(≥150行)
|
|
38
|
+
│ ├── DEPLOYMENT.md ← 4c: 部署架构(≥100行)
|
|
39
|
+
│ └── CONSISTENCY_CHECK.md ← 4c: 一致性检查(≥50行)
|
|
40
|
+
└── PATTERNS/ ← 可选: 真正独特且可复用的设计模式
|
|
41
|
+
└── {端名}/
|
|
42
|
+
└── {kebab-case模式名}.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Layer 4d 各端技术文档**(按端类型区分):
|
|
46
|
+
- **后端端**(匹配 `service|server|api|backend`):
|
|
47
|
+
- `API_INVENTORY.md`(≥150行)
|
|
48
|
+
- `DATA_MODEL.md`(≥100行)
|
|
49
|
+
- `BUSINESS_RULES.md`
|
|
50
|
+
- **前端端**(所有非后端端):
|
|
51
|
+
- `UI_FLOW.md`(≥100行)
|
|
52
|
+
- `API_CALL_MAP.md`(≥80行)
|
|
53
|
+
- `STATE_MANAGEMENT.md`(≥80行)
|
|
54
|
+
|
|
55
|
+
## 产出文件最小内容标准
|
|
56
|
+
|
|
57
|
+
- **所有 Markdown 产出文件必须达到最小行数要求**,严禁生成空壳/占位文档
|
|
58
|
+
- **所有技术文档必须包含 Mermaid 图表**,图表语法必须正确可渲染
|
|
59
|
+
- **需求文档必须按端类型差异化撰写**,严禁一套模板改端名复用
|
|
60
|
+
- **多端项目必须标注功能一致性要求和差异化策略**
|
|
61
|
+
|
|
62
|
+
## 质量自检要求
|
|
63
|
+
|
|
64
|
+
- 每层分析完成后,AI 必须执行自检 Checklist
|
|
65
|
+
- 自检不通过时,必须补充完善后再提交
|
|
66
|
+
- CLI 执行后置校验:文件存在性、行数达标、章节完整
|
|
67
|
+
|
|
68
|
+
## 质量门禁拦截(v8.3.62+)
|
|
69
|
+
|
|
70
|
+
- **全局分析 `--apply` 写入后,CLI 自动运行质量门禁**
|
|
71
|
+
- **存在严重错误(error)时,自动拦截并输出修复 Prompt**,禁止进入下一层
|
|
72
|
+
- **AI 必须修复所有 error 后才能继续**,不能跳过
|
|
73
|
+
- 修复方式:读取问题文档 → 补充内容 → `speccore analyze --apply '{"文件路径":"修正内容"}' --scope global` 重新写入
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# 执行阶段强制约束
|
|
2
|
+
|
|
3
|
+
## 执行前必读清单
|
|
4
|
+
|
|
5
|
+
- **必须阅读子任务 TASK.md** — 了解任务范围和状态
|
|
6
|
+
- **必须阅读 00-specs/REQ.md** — 理解需求和验收标准
|
|
7
|
+
- **必须阅读 00-specs/TECH.md** — 理解技术方案
|
|
8
|
+
- **如涉及 API 变更,确保前后端接口签名一致**
|
|
9
|
+
|
|
10
|
+
## 代码实现规范
|
|
11
|
+
|
|
12
|
+
- **代码实现严格遵循 REQ.md 的验收标准和 TECH.md 的技术方案**
|
|
13
|
+
- **禁止偏离 REQ.md/TECH.md 的要求自由发挥**
|
|
14
|
+
- **禁止生成与规格文档不一致的代码**
|
|
15
|
+
- **禁止遗漏 REQ.md 中列出的验收标准**
|
|
16
|
+
|
|
17
|
+
## 任务完成规范
|
|
18
|
+
|
|
19
|
+
- **完成后更新 TASK.md 状态**(doing → done)
|
|
20
|
+
- **代码写到 CONSTITUTION.md / PROJECT.yaml 指定的源码路径**,禁止写入迭代目录
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 迭代层分析强制约束
|
|
2
|
+
|
|
3
|
+
## 产出目录结构与文档清单
|
|
4
|
+
|
|
5
|
+
迭代层分析产出位于 `Iteration-NNN/020-specs/` 和 `Task-NNN/00-specs/`,必须生成以下文档:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Iteration-NNN/020-specs/
|
|
9
|
+
├── overview/ ← [AI生成] 迭代级全局规格
|
|
10
|
+
│ ├── REQUIREMENT.md ← 迭代专属需求
|
|
11
|
+
│ ├── ANALYSIS.md ← 综合分析
|
|
12
|
+
│ ├── TECH.md ← 技术规格
|
|
13
|
+
│ ├── DEV_GUIDE.md ← 开发指南
|
|
14
|
+
│ └── DEPS.md ← 依赖分析
|
|
15
|
+
├── {功能模块}/ ← [AI生成] 按功能模块组织
|
|
16
|
+
│ └── {端名}/ ← [AI生成] 端级规格
|
|
17
|
+
│ ├── TECH.md ← 技术规格
|
|
18
|
+
│ ├── TEST.md ← 测试用例
|
|
19
|
+
│ ├── UI_SPEC.md ← UI 规格(仅前端)
|
|
20
|
+
│ └── DEV_GUIDE.md ← 开发指南
|
|
21
|
+
└── requirements/ ← [AI生成] 黄金需求(clarify 输出)
|
|
22
|
+
└── *.md
|
|
23
|
+
|
|
24
|
+
Task-NNN/00-specs/ ← [AI生成] 模块级核心规格
|
|
25
|
+
├── REQ.md ← 需求规格
|
|
26
|
+
├── TECH.md ← 技术规格
|
|
27
|
+
├── SCHEMA.md ← 数据模型(条件创建)
|
|
28
|
+
├── CHANGELOG.md ← 变更记录
|
|
29
|
+
└── CONTEXT.md ← 任务上下文
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 产出文档完整性
|
|
33
|
+
|
|
34
|
+
- **每端必须输出 4 份文档**:`TECH.md` + `TEST.md` + `UI_SPEC.md` + `DEV_GUIDE.md`,缺一不可
|
|
35
|
+
- **禁止输出空表格** — 每个 Markdown 表格必须有至少 1 行数据,只有表头的表格视为未完成
|
|
36
|
+
- **禁止输出占位符** — 不允许写「待填充」、「TODO」、「...」、「xxx」等占位内容
|
|
37
|
+
- **自检规则**:生成完成后检查每个文档,如果仍含 `<!-- SPEC-SKELETON -->` 或空表格只有表头 → 必须重新填充
|
|
38
|
+
|
|
39
|
+
## DEV_GUIDE.md 最低标准
|
|
40
|
+
|
|
41
|
+
- 改造范围表格 ≥ 3 行(具体到文件/目录路径)
|
|
42
|
+
- 实施步骤 ≥ 3 步(按依赖排序,具体到文件/函数级)
|
|
43
|
+
- 验证方式表格 ≥ 3 行(可执行的命令/操作 + 通过标准)
|
|
44
|
+
- 坑点 ≥ 2 条
|
|
45
|
+
|
|
46
|
+
## 其他文档要求
|
|
47
|
+
|
|
48
|
+
- **MONITOR.md**:必须按 Fatal/Critical/Warning/Info 四级定义告警规则,不能只列指标名称
|
|
49
|
+
- **REVIEW.md**:安全检查必须逐接口列出鉴权需求,不能笼统写"需要鉴权"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# 任务拆分强制约束
|
|
2
|
+
|
|
3
|
+
## 拆分粒度控制
|
|
4
|
+
|
|
5
|
+
- **单次迭代总功能模块数上限 20 个** — 超出必须合并(功能模块 = Task 目录,不是子任务)
|
|
6
|
+
- **每个功能模块按涉及的端自动拆分子任务**,每个端默认只创建一个子任务
|
|
7
|
+
- **子任务是最终执行单元**(`Task-NNN/{端名}/Task-NNN-{端名}/`),超出默认子任务需用户手动创建
|
|
8
|
+
- **禁止跳过任何功能模块** — 即使信息不足,也必须基于已有信息拆分并填充内容
|
|
9
|
+
|
|
10
|
+
## 字段完整性
|
|
11
|
+
|
|
12
|
+
- **禁止输出空内容** — `reqContent`、`techContent`、`devGuideContent` 每个字段长度必须 ≥ 200 字符
|
|
13
|
+
- **禁止省略字段** — JSON 中必须包含 `reqContent`、`techContent`、`devGuideContent` 三个字段
|
|
14
|
+
- **topic 必须是英文短横线格式** — 如 `user-authentication`,用于生成任务目录名
|
|
15
|
+
- **scope 必须使用标准端名** — 决定子任务按哪些端创建,端名错误会导致子任务目录错误
|
|
16
|
+
- **内容必须从 analyze 产物提取** — `reqContent` 从 `REQUIREMENT.md`,`techContent` 从 `TECH.md`,`devGuideContent` 从 `DEV_GUIDE.md`
|
|
@@ -3,8 +3,93 @@
|
|
|
3
3
|
* 定义 .speccore/local/context.json 的运行时上下文数据结构
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
export declare const HistoryEntrySchema:
|
|
7
|
-
|
|
6
|
+
export declare const HistoryEntrySchema: z.ZodObject<{
|
|
7
|
+
command: z.ZodString;
|
|
8
|
+
timestamp: z.ZodString;
|
|
9
|
+
iteration: z.ZodOptional<z.ZodString>;
|
|
10
|
+
task: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
command: string;
|
|
13
|
+
timestamp: string;
|
|
14
|
+
iteration?: string | undefined;
|
|
15
|
+
task?: string | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
command: string;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
iteration?: string | undefined;
|
|
20
|
+
task?: string | undefined;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const ContextSchema: z.ZodObject<{
|
|
23
|
+
currentIteration: z.ZodDefault<z.ZodString>;
|
|
24
|
+
currentTask: z.ZodDefault<z.ZodString>;
|
|
25
|
+
currentAssignee: z.ZodDefault<z.ZodString>;
|
|
26
|
+
lastUpdated: z.ZodDefault<z.ZodString>;
|
|
27
|
+
lastAction: z.ZodDefault<z.ZodString>;
|
|
28
|
+
lastIntent: z.ZodDefault<z.ZodString>;
|
|
29
|
+
interruptedAt: z.ZodDefault<z.ZodString>;
|
|
30
|
+
iterationStatus: z.ZodDefault<z.ZodString>;
|
|
31
|
+
pendingTasks: z.ZodDefault<z.ZodNumber>;
|
|
32
|
+
inProgressTasks: z.ZodDefault<z.ZodNumber>;
|
|
33
|
+
completedTasks: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
blockedTasks: z.ZodDefault<z.ZodNumber>;
|
|
35
|
+
customAliases: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
36
|
+
history: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
37
|
+
command: z.ZodString;
|
|
38
|
+
timestamp: z.ZodString;
|
|
39
|
+
iteration: z.ZodOptional<z.ZodString>;
|
|
40
|
+
task: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
command: string;
|
|
43
|
+
timestamp: string;
|
|
44
|
+
iteration?: string | undefined;
|
|
45
|
+
task?: string | undefined;
|
|
46
|
+
}, {
|
|
47
|
+
command: string;
|
|
48
|
+
timestamp: string;
|
|
49
|
+
iteration?: string | undefined;
|
|
50
|
+
task?: string | undefined;
|
|
51
|
+
}>, "many">>;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
currentIteration: string;
|
|
54
|
+
currentTask: string;
|
|
55
|
+
currentAssignee: string;
|
|
56
|
+
lastUpdated: string;
|
|
57
|
+
lastAction: string;
|
|
58
|
+
lastIntent: string;
|
|
59
|
+
interruptedAt: string;
|
|
60
|
+
iterationStatus: string;
|
|
61
|
+
pendingTasks: number;
|
|
62
|
+
inProgressTasks: number;
|
|
63
|
+
completedTasks: number;
|
|
64
|
+
blockedTasks: number;
|
|
65
|
+
customAliases: Record<string, string>;
|
|
66
|
+
history: {
|
|
67
|
+
command: string;
|
|
68
|
+
timestamp: string;
|
|
69
|
+
iteration?: string | undefined;
|
|
70
|
+
task?: string | undefined;
|
|
71
|
+
}[];
|
|
72
|
+
}, {
|
|
73
|
+
currentIteration?: string | undefined;
|
|
74
|
+
currentTask?: string | undefined;
|
|
75
|
+
currentAssignee?: string | undefined;
|
|
76
|
+
lastUpdated?: string | undefined;
|
|
77
|
+
lastAction?: string | undefined;
|
|
78
|
+
lastIntent?: string | undefined;
|
|
79
|
+
interruptedAt?: string | undefined;
|
|
80
|
+
iterationStatus?: string | undefined;
|
|
81
|
+
pendingTasks?: number | undefined;
|
|
82
|
+
inProgressTasks?: number | undefined;
|
|
83
|
+
completedTasks?: number | undefined;
|
|
84
|
+
blockedTasks?: number | undefined;
|
|
85
|
+
customAliases?: Record<string, string> | undefined;
|
|
86
|
+
history?: {
|
|
87
|
+
command: string;
|
|
88
|
+
timestamp: string;
|
|
89
|
+
iteration?: string | undefined;
|
|
90
|
+
task?: string | undefined;
|
|
91
|
+
}[] | undefined;
|
|
92
|
+
}>;
|
|
8
93
|
export type HistoryEntry = z.infer<typeof HistoryEntrySchema>;
|
|
9
94
|
export type Context = z.infer<typeof ContextSchema>;
|
|
10
95
|
export declare const DEFAULT_CONTEXT: Context;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.schema.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/context.schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"context.schema.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/context.schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AAGH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBxB,CAAC;AAGH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAGpD,eAAO,MAAM,eAAe,EAAE,OAe7B,CAAC"}
|
|
@@ -3,10 +3,138 @@
|
|
|
3
3
|
* 定义迭代(迭代)的核心数据结构
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
export declare const IterationStatusSchema:
|
|
7
|
-
export declare const IterationGoalSchema:
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
export declare const IterationStatusSchema: z.ZodEnum<["planning", "active", "paused", "completed", "archived"]>;
|
|
7
|
+
export declare const IterationGoalSchema: z.ZodObject<{
|
|
8
|
+
description: z.ZodString;
|
|
9
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
10
|
+
deliverables: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
11
|
+
successCriteria: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
description: string;
|
|
14
|
+
deliverables: string[];
|
|
15
|
+
successCriteria: string[];
|
|
16
|
+
scope?: string | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
description: string;
|
|
19
|
+
scope?: string | undefined;
|
|
20
|
+
deliverables?: string[] | undefined;
|
|
21
|
+
successCriteria?: string[] | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const IterationStatsSchema: z.ZodObject<{
|
|
24
|
+
totalTasks: z.ZodNumber;
|
|
25
|
+
pendingTasks: z.ZodNumber;
|
|
26
|
+
inProgressTasks: z.ZodNumber;
|
|
27
|
+
completedTasks: z.ZodNumber;
|
|
28
|
+
blockedTasks: z.ZodNumber;
|
|
29
|
+
completionRate: z.ZodNumber;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
pendingTasks: number;
|
|
32
|
+
inProgressTasks: number;
|
|
33
|
+
completedTasks: number;
|
|
34
|
+
blockedTasks: number;
|
|
35
|
+
completionRate: number;
|
|
36
|
+
totalTasks: number;
|
|
37
|
+
}, {
|
|
38
|
+
pendingTasks: number;
|
|
39
|
+
inProgressTasks: number;
|
|
40
|
+
completedTasks: number;
|
|
41
|
+
blockedTasks: number;
|
|
42
|
+
completionRate: number;
|
|
43
|
+
totalTasks: number;
|
|
44
|
+
}>;
|
|
45
|
+
export declare const IterationSchema: z.ZodObject<{
|
|
46
|
+
id: z.ZodString;
|
|
47
|
+
name: z.ZodString;
|
|
48
|
+
status: z.ZodDefault<z.ZodEnum<["planning", "active", "paused", "completed", "archived"]>>;
|
|
49
|
+
priority: z.ZodDefault<z.ZodEnum<["high", "medium", "low"]>>;
|
|
50
|
+
goal: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
description: z.ZodString;
|
|
52
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
53
|
+
deliverables: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
54
|
+
successCriteria: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
55
|
+
}, "strip", z.ZodTypeAny, {
|
|
56
|
+
description: string;
|
|
57
|
+
deliverables: string[];
|
|
58
|
+
successCriteria: string[];
|
|
59
|
+
scope?: string | undefined;
|
|
60
|
+
}, {
|
|
61
|
+
description: string;
|
|
62
|
+
scope?: string | undefined;
|
|
63
|
+
deliverables?: string[] | undefined;
|
|
64
|
+
successCriteria?: string[] | undefined;
|
|
65
|
+
}>>;
|
|
66
|
+
tasks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
67
|
+
requirements: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
68
|
+
startDate: z.ZodOptional<z.ZodString>;
|
|
69
|
+
endDate: z.ZodOptional<z.ZodString>;
|
|
70
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
71
|
+
changelog: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
72
|
+
version: z.ZodString;
|
|
73
|
+
date: z.ZodString;
|
|
74
|
+
content: z.ZodString;
|
|
75
|
+
author: z.ZodString;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
version: string;
|
|
78
|
+
content: string;
|
|
79
|
+
date: string;
|
|
80
|
+
author: string;
|
|
81
|
+
}, {
|
|
82
|
+
version: string;
|
|
83
|
+
content: string;
|
|
84
|
+
date: string;
|
|
85
|
+
author: string;
|
|
86
|
+
}>, "many">>;
|
|
87
|
+
createdAt: z.ZodString;
|
|
88
|
+
updatedAt: z.ZodString;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
name: string;
|
|
91
|
+
status: "completed" | "archived" | "active" | "planning" | "paused";
|
|
92
|
+
updatedAt: string;
|
|
93
|
+
requirements: string[];
|
|
94
|
+
id: string;
|
|
95
|
+
priority: "high" | "medium" | "low";
|
|
96
|
+
tasks: string[];
|
|
97
|
+
createdAt: string;
|
|
98
|
+
changelog: {
|
|
99
|
+
version: string;
|
|
100
|
+
content: string;
|
|
101
|
+
date: string;
|
|
102
|
+
author: string;
|
|
103
|
+
}[];
|
|
104
|
+
assignee?: string | undefined;
|
|
105
|
+
startDate?: string | undefined;
|
|
106
|
+
endDate?: string | undefined;
|
|
107
|
+
goal?: {
|
|
108
|
+
description: string;
|
|
109
|
+
deliverables: string[];
|
|
110
|
+
successCriteria: string[];
|
|
111
|
+
scope?: string | undefined;
|
|
112
|
+
} | undefined;
|
|
113
|
+
}, {
|
|
114
|
+
name: string;
|
|
115
|
+
updatedAt: string;
|
|
116
|
+
id: string;
|
|
117
|
+
createdAt: string;
|
|
118
|
+
assignee?: string | undefined;
|
|
119
|
+
status?: "completed" | "archived" | "active" | "planning" | "paused" | undefined;
|
|
120
|
+
requirements?: string[] | undefined;
|
|
121
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
122
|
+
tasks?: string[] | undefined;
|
|
123
|
+
startDate?: string | undefined;
|
|
124
|
+
endDate?: string | undefined;
|
|
125
|
+
goal?: {
|
|
126
|
+
description: string;
|
|
127
|
+
scope?: string | undefined;
|
|
128
|
+
deliverables?: string[] | undefined;
|
|
129
|
+
successCriteria?: string[] | undefined;
|
|
130
|
+
} | undefined;
|
|
131
|
+
changelog?: {
|
|
132
|
+
version: string;
|
|
133
|
+
content: string;
|
|
134
|
+
date: string;
|
|
135
|
+
author: string;
|
|
136
|
+
}[] | undefined;
|
|
137
|
+
}>;
|
|
10
138
|
export type IterationStatus = z.infer<typeof IterationStatusSchema>;
|
|
11
139
|
export type IterationGoal = z.infer<typeof IterationGoalSchema>;
|
|
12
140
|
export type IterationStats = z.infer<typeof IterationStatsSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iteration.schema.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/iteration.schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"iteration.schema.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/iteration.schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB,sEAMhC,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC1B,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|