@devcxl/opencode-cabbage 0.3.1 → 1.0.0

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.
Files changed (177) hide show
  1. package/README.md +34 -19
  2. package/README.zh.md +34 -19
  3. package/assets/agents/dev-lifecycle.md +60 -41
  4. package/assets/agents/team/architect.md +36 -1
  5. package/assets/agents/team/developer.md +89 -0
  6. package/assets/agents/team/goal-verify.md +5 -1
  7. package/assets/agents/team/reviewer.md +42 -1
  8. package/assets/commands/code.md +3 -2
  9. package/assets/commands/design.md +3 -2
  10. package/assets/commands/release.md +3 -2
  11. package/assets/commands/requirements.md +3 -2
  12. package/assets/commands/review.md +3 -2
  13. package/assets/commands/setup.md +3 -2
  14. package/assets/commands/tasks.md +2 -1
  15. package/assets/prompts/bootstrap.md +9 -8
  16. package/assets/prompts/stage-contract.md +55 -0
  17. package/assets/skills/flow-code/SKILL.md +38 -140
  18. package/assets/skills/flow-design/SKILL.md +33 -74
  19. package/assets/skills/flow-release/SKILL.md +31 -51
  20. package/assets/skills/flow-requirements/SKILL.md +47 -45
  21. package/assets/skills/flow-review/SKILL.md +26 -112
  22. package/assets/skills/flow-setup/SKILL.md +40 -43
  23. package/assets/skills/flow-tasks/SKILL.md +30 -139
  24. package/assets/skills/flow-tdd/SKILL.md +30 -31
  25. package/dist/kernel/caller.d.ts +48 -0
  26. package/dist/kernel/caller.js +88 -0
  27. package/dist/kernel/caller.js.map +1 -0
  28. package/dist/kernel/context.d.ts +27 -0
  29. package/dist/kernel/context.js +73 -0
  30. package/dist/kernel/context.js.map +1 -0
  31. package/dist/kernel/flow.d.ts +166 -0
  32. package/dist/kernel/flow.js +387 -0
  33. package/dist/kernel/flow.js.map +1 -0
  34. package/dist/kernel/legacy.d.ts +19 -0
  35. package/dist/kernel/legacy.js +34 -0
  36. package/dist/kernel/legacy.js.map +1 -0
  37. package/dist/kernel/mutex.d.ts +8 -0
  38. package/dist/kernel/mutex.js +23 -0
  39. package/dist/kernel/mutex.js.map +1 -0
  40. package/dist/kernel/permission.d.ts +21 -0
  41. package/dist/kernel/permission.js +37 -0
  42. package/dist/kernel/permission.js.map +1 -0
  43. package/dist/kernel/profile.d.ts +35 -0
  44. package/dist/kernel/profile.js +144 -0
  45. package/dist/kernel/profile.js.map +1 -0
  46. package/dist/kernel/records.d.ts +87 -0
  47. package/dist/kernel/records.js +197 -0
  48. package/dist/kernel/records.js.map +1 -0
  49. package/dist/kernel/release.d.ts +104 -0
  50. package/dist/kernel/release.js +229 -0
  51. package/dist/kernel/release.js.map +1 -0
  52. package/dist/kernel/review.d.ts +34 -0
  53. package/dist/kernel/review.js +81 -0
  54. package/dist/kernel/review.js.map +1 -0
  55. package/dist/kernel/session-index.d.ts +43 -0
  56. package/dist/kernel/session-index.js +120 -0
  57. package/dist/kernel/session-index.js.map +1 -0
  58. package/dist/kernel/setup.d.ts +70 -0
  59. package/dist/kernel/setup.js +324 -0
  60. package/dist/kernel/setup.js.map +1 -0
  61. package/dist/kernel/slug.d.ts +23 -0
  62. package/dist/kernel/slug.js +67 -0
  63. package/dist/kernel/slug.js.map +1 -0
  64. package/dist/kernel/task.d.ts +208 -0
  65. package/dist/kernel/task.js +788 -0
  66. package/dist/kernel/task.js.map +1 -0
  67. package/dist/{flowrun → kernel/tdd}/adapter.d.ts +1 -1
  68. package/dist/kernel/tdd/adapter.js.map +1 -0
  69. package/dist/{flowrun → kernel/tdd}/digest.d.ts +1 -1
  70. package/dist/kernel/tdd/digest.js.map +1 -0
  71. package/dist/{flowrun → kernel/tdd}/evaluator.d.ts +1 -1
  72. package/dist/kernel/tdd/evaluator.js.map +1 -0
  73. package/dist/kernel/tdd/evidence.d.ts +42 -0
  74. package/dist/kernel/tdd/evidence.js +48 -0
  75. package/dist/kernel/tdd/evidence.js.map +1 -0
  76. package/dist/{flowrun → kernel/tdd}/state.d.ts +1 -1
  77. package/dist/kernel/tdd/state.js.map +1 -0
  78. package/dist/kernel/types.d.ts +180 -0
  79. package/dist/kernel/types.js +2 -0
  80. package/dist/kernel/types.js.map +1 -0
  81. package/dist/kernel/worktree.d.ts +45 -0
  82. package/dist/kernel/worktree.js +127 -0
  83. package/dist/kernel/worktree.js.map +1 -0
  84. package/dist/plugin/agents.d.ts +5 -17
  85. package/dist/plugin/agents.js +0 -23
  86. package/dist/plugin/agents.js.map +1 -1
  87. package/dist/plugin/flow-control.d.ts +80 -0
  88. package/dist/plugin/flow-control.js +254 -0
  89. package/dist/plugin/flow-control.js.map +1 -0
  90. package/dist/plugin/goal.d.ts +7 -46
  91. package/dist/plugin/goal.js +32 -116
  92. package/dist/plugin/goal.js.map +1 -1
  93. package/dist/plugin/prompt-lint.js +78 -5
  94. package/dist/plugin/prompt-lint.js.map +1 -1
  95. package/dist/plugin/release-control.d.ts +37 -0
  96. package/dist/plugin/release-control.js +304 -0
  97. package/dist/plugin/release-control.js.map +1 -0
  98. package/dist/plugin/server.d.ts +19 -0
  99. package/dist/plugin/server.js +147 -302
  100. package/dist/plugin/server.js.map +1 -1
  101. package/dist/plugin/setup-control.d.ts +45 -0
  102. package/dist/plugin/setup-control.js +80 -0
  103. package/dist/plugin/setup-control.js.map +1 -0
  104. package/dist/plugin/shell.d.ts +7 -34
  105. package/dist/plugin/shell.js +12 -137
  106. package/dist/plugin/shell.js.map +1 -1
  107. package/dist/plugin/skills.d.ts +1 -1
  108. package/dist/plugin/skills.js +16 -17
  109. package/dist/plugin/skills.js.map +1 -1
  110. package/dist/plugin/task-control.d.ts +90 -0
  111. package/dist/plugin/task-control.js +201 -0
  112. package/dist/plugin/task-control.js.map +1 -0
  113. package/dist/plugin/tdd-checkpoint.d.ts +118 -0
  114. package/dist/plugin/tdd-checkpoint.js +581 -0
  115. package/dist/plugin/tdd-checkpoint.js.map +1 -0
  116. package/dist/util/paths.d.ts +0 -2
  117. package/dist/util/paths.js +1 -7
  118. package/dist/util/paths.js.map +1 -1
  119. package/package.json +1 -1
  120. package/assets/agents/team/backend.md +0 -66
  121. package/assets/agents/team/frontend.md +0 -63
  122. package/assets/commands/handoff.md +0 -4
  123. package/assets/commands/test.md +0 -4
  124. package/assets/context/CONTEXT.md +0 -40
  125. package/assets/skills/flow-handoff/SKILL.md +0 -76
  126. package/assets/skills/flow-requirements/references/interview-guide.md +0 -35
  127. package/assets/skills/flow-test/SKILL.md +0 -75
  128. package/dist/flowrun/adapter.js.map +0 -1
  129. package/dist/flowrun/audit.d.ts +0 -5
  130. package/dist/flowrun/audit.js +0 -67
  131. package/dist/flowrun/audit.js.map +0 -1
  132. package/dist/flowrun/ci.d.ts +0 -64
  133. package/dist/flowrun/ci.js +0 -184
  134. package/dist/flowrun/ci.js.map +0 -1
  135. package/dist/flowrun/coverage.d.ts +0 -70
  136. package/dist/flowrun/coverage.js +0 -207
  137. package/dist/flowrun/coverage.js.map +0 -1
  138. package/dist/flowrun/digest.js.map +0 -1
  139. package/dist/flowrun/evaluator.js.map +0 -1
  140. package/dist/flowrun/gate.d.ts +0 -28
  141. package/dist/flowrun/gate.js +0 -139
  142. package/dist/flowrun/gate.js.map +0 -1
  143. package/dist/flowrun/github.d.ts +0 -24
  144. package/dist/flowrun/github.js +0 -154
  145. package/dist/flowrun/github.js.map +0 -1
  146. package/dist/flowrun/index.d.ts +0 -14
  147. package/dist/flowrun/index.js +0 -15
  148. package/dist/flowrun/index.js.map +0 -1
  149. package/dist/flowrun/merge.d.ts +0 -57
  150. package/dist/flowrun/merge.js +0 -180
  151. package/dist/flowrun/merge.js.map +0 -1
  152. package/dist/flowrun/migration.d.ts +0 -11
  153. package/dist/flowrun/migration.js +0 -276
  154. package/dist/flowrun/migration.js.map +0 -1
  155. package/dist/flowrun/resilience.d.ts +0 -18
  156. package/dist/flowrun/resilience.js +0 -80
  157. package/dist/flowrun/resilience.js.map +0 -1
  158. package/dist/flowrun/state.js.map +0 -1
  159. package/dist/flowrun/transitions.d.ts +0 -66
  160. package/dist/flowrun/transitions.js +0 -168
  161. package/dist/flowrun/transitions.js.map +0 -1
  162. package/dist/flowrun/types.d.ts +0 -356
  163. package/dist/flowrun/types.js +0 -21
  164. package/dist/flowrun/types.js.map +0 -1
  165. package/dist/flowrun/validator.d.ts +0 -19
  166. package/dist/flowrun/validator.js +0 -209
  167. package/dist/flowrun/validator.js.map +0 -1
  168. package/dist/plugin/broker.d.ts +0 -73
  169. package/dist/plugin/broker.js +0 -140
  170. package/dist/plugin/broker.js.map +0 -1
  171. package/dist/plugin/tdd-tool.d.ts +0 -62
  172. package/dist/plugin/tdd-tool.js +0 -336
  173. package/dist/plugin/tdd-tool.js.map +0 -1
  174. /package/dist/{flowrun → kernel/tdd}/adapter.js +0 -0
  175. /package/dist/{flowrun → kernel/tdd}/digest.js +0 -0
  176. /package/dist/{flowrun → kernel/tdd}/evaluator.js +0 -0
  177. /package/dist/{flowrun → kernel/tdd}/state.js +0 -0
@@ -44,12 +44,6 @@ export function devDbDir(projectDir) {
44
44
  export function devGuidesDir(projectDir) {
45
45
  return path.join(docsRoot(projectDir), "dev", "guides");
46
46
  }
47
- export function devHandoffDir(projectDir) {
48
- return path.join(docsRoot(projectDir), "dev", "handoff");
49
- }
50
- export function outOfScopePath(projectDir) {
51
- return path.join(docsRoot(projectDir), "dev", "out-of-scope.md");
52
- }
53
47
  export function prdPath(projectDir, name) {
54
48
  return path.join(prdDir(projectDir), `${slugify(name)}.md`);
55
49
  }
@@ -63,7 +57,7 @@ export function taskPath(projectDir, taskName) {
63
57
  export function pluginTemplateDir(projectDir) {
64
58
  return path.join(projectDir, ".opencode", PLUGIN_ID, "templates");
65
59
  }
66
- const DOCS_SUBDIRS = ["prd", "adr", "dev/specs", "dev/tasks", "dev/api", "dev/db", "dev/guides", "dev/handoff"];
60
+ const DOCS_SUBDIRS = ["prd", "adr", "dev/specs", "dev/tasks", "dev/api", "dev/db", "dev/guides"];
67
61
  export async function ensureDocsStructure(projectDir) {
68
62
  const created = [];
69
63
  for (const sub of DOCS_SUBDIRS) {
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/util/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/util/paths.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devcxl/opencode-cabbage",
3
- "version": "0.3.1",
3
+ "version": "1.0.0",
4
4
  "description": "OpenCode 全流程开发插件 — 需求→设计→任务→编码→测试→审查→自动合并,支持自动编排与并行 Subagent",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,66 +0,0 @@
1
- ---
2
- name: backend
3
- description: 负责后端代码实现、接口开发、数据库设计和业务逻辑
4
- mode: subagent
5
- color: '#4caf50'
6
- tools:
7
- read: true
8
- bash: true
9
- write: true
10
- edit: true
11
- capabilities:
12
- create_pr: false
13
- merge_pr: false
14
- modify_files: true
15
- run_tests: true
16
- push_branch: true
17
- approve_review: false
18
- complete_goal: false
19
- permission:
20
- bash:
21
- "*": "deny"
22
- "npm *": "allow"
23
- "git *": "allow"
24
- edit:
25
- "*": "deny"
26
- ".worktree/**": "allow"
27
- "src/**": "allow"
28
- "test/**": "allow"
29
- "assets/**": "allow"
30
- ---
31
-
32
- <system-reminder>
33
- 你是团队中的 @backend,负责后端代码实现。
34
-
35
- 你接收 @architect 的技术方案,按任务逐一实现后端功能。
36
-
37
- **TDD 约束**:编码前加载 `flow-tdd` skill,遵循 RED→GREEN→final-regression→final-verification 流程。
38
- self-report 每个 cycle 的状态,不跳过任何阶段。
39
- </system-reminder>
40
-
41
- ## 工作流程
42
-
43
- ### 1. 确认输入
44
- - 阅读技术方案和任务定义(`docs/dev/specs/`、`docs/dev/tasks/`)
45
- - 检查项目现有代码结构和技术栈
46
- - 检查相关 ADR(`docs/adr/`)确保实现与架构决策一致
47
-
48
- ### 2. 实现
49
- - 遵循 TDD:先写测试 → 最小实现 → 重构
50
- - 遵循项目现有代码规范和分层结构
51
- - Controller → Service → Repository 逐层实现
52
-
53
- ### 3. 验证
54
- - 代码编译通过
55
- - 所有测试通过
56
- - 边界条件、异常处理、空值处理完备
57
-
58
- ### 4. 提交
59
- - Conventional Commits,多次提交而非一次大提交
60
- - `git push` 到对应 feature 分支
61
-
62
- ## 禁止事项
63
- - 不创建 PR、不操作 Issue
64
- - 不修改与任务无关的文件
65
- - 不引入未在项目中使用的第三方依赖
66
- - 不提交硬编码的密钥/配置
@@ -1,63 +0,0 @@
1
- ---
2
- name: frontend
3
- description: 负责前端页面开发、交互实现、组件封装和接口对接
4
- mode: subagent
5
- color: '#2196f3'
6
- tools:
7
- read: true
8
- bash: true
9
- write: true
10
- edit: true
11
- capabilities:
12
- create_pr: false
13
- merge_pr: false
14
- modify_files: true
15
- run_tests: true
16
- push_branch: true
17
- approve_review: false
18
- complete_goal: false
19
- permission:
20
- bash:
21
- "*": "deny"
22
- "npm *": "allow"
23
- "git *": "allow"
24
- edit:
25
- "*": "deny"
26
- ".worktree/**": "allow"
27
- "src/**": "allow"
28
- "test/**": "allow"
29
- "assets/**": "allow"
30
- ---
31
-
32
- <system-reminder>
33
- 你是团队中的 @frontend,负责前端代码实现。
34
-
35
- 你接收 @architect 的技术方案,按任务逐一实现前端功能。
36
-
37
- **TDD 约束**:编码前加载 `flow-tdd` skill,遵循 RED→GREEN→final-regression→final-verification 流程。
38
- self-report 每个 cycle 的状态,不跳过任何阶段。
39
- </system-reminder>
40
-
41
- ## 工作流程
42
-
43
- ### 1. 确认输入
44
- - 阅读技术方案和任务定义
45
- - 检查项目现有组件库和路由结构
46
- - 检查相关 ADR
47
-
48
- ### 2. 实现
49
- - 遵循 TDD 或手动测试
50
- - 遵循项目现有组件模式和样式约定
51
- - 实现组件 → 页面 → 路由 → 接口对接
52
-
53
- ### 3. 验证
54
- - 构建通过
55
- - 手动验证关键交互
56
-
57
- ### 4. 提交
58
- - Conventional Commits
59
- - `git push` 到对应 feature 分支
60
-
61
- ## 禁止事项
62
- - 不创建 PR、不操作 Issue
63
- - 不修改与任务无关的文件
@@ -1,4 +0,0 @@
1
- ---
2
- description: Handoff — 打包上下文,跨会话传递进度
3
- ---
4
- 请加载 flow-handoff 技能,按其中定义的流程打包当前进度。
@@ -1,4 +0,0 @@
1
- ---
2
- description: E2E 测试 — 触发 CI → 监控 → 汇报
3
- ---
4
- 请加载 flow-test 技能,按其中定义的流程进行端到端测试阶段。
@@ -1,40 +0,0 @@
1
- # opencode-cabbage Context
2
-
3
- ## 领域术语
4
-
5
- **Flow(流程):**
6
- 从需求到发布的完整开发阶段序列。一个 Flow 包含多个 Stage。
7
-
8
- **Stage(阶段):**
9
- Flow 中的一个步骤,由一个 slash command 触发。每个 Stage 产生一个或多个 Artifact。
10
-
11
- **Artifact(产物):**
12
- Stage 产出的文档——PRD、ADR、Task、设计文档等。存放在 `docs/` 下的对应子目录中。
13
-
14
- **Issue Tree(问题树):**
15
- 由 Parent Issue 和 Sub Issues 组成的层级结构。Parent Issue 在需求阶段创建,Sub Issues 在任务分解阶段创建,依赖关系通过 Sub Issue 的 body 声明。
16
-
17
- **GitHub Canonical Source(GitHub 权威源):**
18
- 所有工程状态以 GitHub 为准。Issues、PRs、CI checks、Releases 都在 GitHub 上管理,本地文档是辅助引用。
19
-
20
- **Setup(初始化):**
21
- 首次使用前的准备流程。检测 gh CLI、配置 GitHub 仓库、创建 docs/ 目录。
22
-
23
- **Handoff(交接):**
24
- 当上下文窗口压力过大或需要跨阶段传递进度时,将当前状态打包为 markdown 文件,在下一次交互时读取恢复。
25
-
26
- ## 术语关系
27
-
28
- - 一个 **Flow** 包含多个有序 **Stage**
29
- - 每个 **Stage** 产生一个或多个 **Artifact**
30
- - **Artifact** 存储在 `docs/` 下的 **prd/**、**adr/**、**dev/** 等子目录
31
- - **Issue Tree** 是跨 Stage 的线索:Parent Issue → Sub Issues(含依赖关系)
32
- - 所有 **Stage** 可能引用 GitHub 上的 **Canonical Source**
33
- - **Setup** 必须在第一个 Flow 之前运行(或由 AI 在第一次使用时引导)
34
- - **Handoff** 可在任意 Stage 之间使用
35
-
36
- ## 避免使用的术语
37
-
38
- - **Ticket** — 统一用 **Issue**
39
- - **Backlog** — 避免歧义,直接指定 Issue 或 Issue list
40
- - **Sprint** / **Epic** — 不使用,用 **Issue Tree** 层级替代
@@ -1,76 +0,0 @@
1
- ---
2
- name: flow-handoff
3
- description: 打包上下文,跨会话传递进度
4
- ---
5
-
6
- # flow-handoff
7
-
8
- 当上下文窗口压力过大或需要跨会话传递进度时使用。
9
-
10
- ## 何时使用
11
- - 上下文窗口接近极限(约 80k+ tokens)
12
- - 需要切换到另一个任务再回来
13
- - 当前阶段等待外部输入无法继续
14
-
15
- ## Workflow
16
-
17
- ### 1. 打包当前状态
18
- 创建 handoff 文档,记录:
19
-
20
- ```markdown
21
- # Handoff: <流程/阶段名>
22
-
23
- ## 上下文
24
- - 项目: <项目名>
25
- - 当前阶段: <stage>
26
- - 已完成的工作: <列表>
27
- - 未完成的决策: <列表>
28
-
29
- ## 关键产出
30
- - <已产出的文件/Issue/PR 列表>
31
-
32
- ## 下一步
33
- 1. <下一步行动>
34
- 2. <需要用户输入的问题>
35
-
36
- ## 待办
37
- - [ ] <待完成任务>
38
- ```
39
-
40
- ### 2. 保存 Handoff 文件
41
- 保存到 `docs/dev/handoff-<YYYY-MM-DD>.md`。
42
-
43
- ### 3. 指示用户
44
- 告知用户:在下次会话中可以直接引用该 handoff 文件以恢复上下文。
45
-
46
- ## Output
47
- - `docs/dev/handoff-<date>.md`
48
-
49
- ## Contract
50
-
51
- ### Trigger
52
- 由 `/handoff` 命令触发。上下文窗口接近极限或需跨会话传递进度时使用。
53
-
54
- ### Inputs
55
- - 当前 Goal 状态(来源:Goal metadata)
56
-
57
- ### Preconditions
58
- - 存在 Active Goal
59
-
60
- ### Procedure
61
- 1. 打包当前流程状态(阶段、任务、进度)
62
- 2. 列出已完成和待完成项
63
- 3. 确定下一步骤
64
- 4. 保存到 handoff 文件
65
-
66
- ### Outputs
67
- - `docs/dev/handoff-<date>.md` — 交接文件
68
-
69
- ### Failure
70
- - 无 Goal → 仅输出当前会话摘要
71
-
72
- ### Idempotency
73
- - 同一天多次执行 → 覆盖前一次 handoff
74
-
75
- ### Prohibited Actions
76
- - 不修改代码或文档
@@ -1,35 +0,0 @@
1
- # 需求访谈指南
2
-
3
- ## 必问维度
4
-
5
- ### 用户与场景
6
- - 谁是最终用户?
7
- - 他们在什么场景下使用?
8
- - 解决了什么痛点?
9
-
10
- ### 业务价值
11
- - 不做会怎样?
12
- - 如何衡量成功?(指标)
13
- - 优先级:P0(必须) / P1(重要) / P2(锦上添花)
14
-
15
- ### 范围
16
- - **In Scope**: 精确描述包含的功能边界
17
- - **Out of Scope**: 明确排除什么,为什么
18
-
19
- ### 验收标准
20
- - "怎样才算做完?" 追问到可验证的程度
21
- - 避免模糊描述("用户体验好"→ 追问具体标准)
22
-
23
- ### 技术约束
24
- - 语言/框架版本限制
25
- - 部署环境
26
- - 性能要求(QPS、P99 延迟)
27
- - 安全/合规要求
28
-
29
- ## 追问技巧
30
-
31
- 1. **"然后呢?"** — 当用户给出一个答案后追问,通常前 2 个回答只是表面
32
- 2. **"如果不做这个会怎样?"** — 验证真实优先级
33
- 3. **"谁来判断这个做对了?"** — 明确决策者/验收人
34
- 4. **"和现有功能的关系?"** — 发现依赖/冲突
35
- 5. **OOPS 追问**:当用户说"这个简单"或"这个以后再说"时,记录到 out-of-scope
@@ -1,75 +0,0 @@
1
- ---
2
- name: flow-test
3
- description: 触发 CI → 监控 → 测试结果汇报
4
- ---
5
-
6
- # flow-test
7
-
8
- 触发 CI 运行 E2E 测试,监控结果并汇报。
9
-
10
- ## Prerequisites
11
- - PR 已创建
12
-
13
- ## Workflow
14
-
15
- ### 1. 确认 CI 配置
16
- 检查 `.github/workflows/`。如缺失,引导用户创建:
17
-
18
- ```yaml
19
- name: E2E
20
- on: [pull_request]
21
- jobs:
22
- test:
23
- runs-on: ubuntu-latest
24
- steps:
25
- - uses: actions/checkout@v4
26
- - run: npm ci
27
- - run: npm run test:e2e
28
- ```
29
-
30
- ### 2. 触发并监控
31
- ```bash
32
- gh pr checks <pr-number> --watch
33
- ```
34
-
35
- ### 3. 结果汇报
36
- - **全部通过** ✅ → 继续
37
- - **失败** ❌ → 分析原因,建议修复
38
- - **超时/异常** ⚠️ → 检查 CI 配置
39
-
40
- ## Output
41
- - CI 结果汇报给用户
42
-
43
- ## 后续
44
- - **/review** — 审查 PR
45
-
46
- ## Contract
47
-
48
- ### Trigger
49
- 由 `/test` 命令触发。在已创建的 PR 上运行 CI 测试。
50
-
51
- ### Inputs
52
- - PR 编号(来源:`/code` 产出)
53
-
54
- ### Preconditions
55
- - `/code` 已完成 → PR 已创建
56
-
57
- ### Procedure
58
- 1. 检查 CI 配置是否存在
59
- 2. 触发 CI 运行
60
- 3. 监控运行状态
61
- 4. 汇报结果
62
-
63
- ### Outputs
64
- - CI 运行结果摘要
65
-
66
- ### Failure
67
- - CI 失败 → 分析日志并建议修复
68
- - 无 CI 配置 → 引导用户创建 .github/workflows/ci.yml
69
-
70
- ### Idempotency
71
- - 重复触发同一 PR → 覆盖前一次运行
72
-
73
- ### Prohibited Actions
74
- - 不修改 CI 配置
75
- - 不触发非当前 PR 的 CI
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/flowrun/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { FlowRun, FlowStage, TaskState } from "./types.js";
2
- export declare function postAuditComment(issueNumber: number, body: string): Promise<boolean>;
3
- export declare function postPRComment(prNumber: number, body: string): Promise<boolean>;
4
- export declare function buildStageAudit(flowRun: FlowRun, stage: FlowStage): string;
5
- export declare function buildMergeAudit(task: TaskState): string;
@@ -1,67 +0,0 @@
1
- import { gh } from "../util/gh.js";
2
- import { escapeShellArg } from "../util/shell.js";
3
- export async function postAuditComment(issueNumber, body) {
4
- try {
5
- const escaped = escapeShellArg(body);
6
- await gh(`issue comment ${issueNumber} --body '${escaped}'`);
7
- return true;
8
- }
9
- catch {
10
- return false;
11
- }
12
- }
13
- export async function postPRComment(prNumber, body) {
14
- try {
15
- const escaped = escapeShellArg(body);
16
- await gh(`pr comment ${prNumber} --body '${escaped}'`);
17
- return true;
18
- }
19
- catch {
20
- return false;
21
- }
22
- }
23
- export function buildStageAudit(flowRun, stage) {
24
- const s = flowRun.stages[stage];
25
- if (!s)
26
- return `Stage "${stage}" not found`;
27
- const lines = [
28
- `### Stage: ${stage}`,
29
- `Status: ${s.status}`,
30
- `Completed: ${s.completedAt ?? "not yet"}`,
31
- ];
32
- if (s.checks.length > 0) {
33
- lines.push("", "**Checks:**");
34
- for (const check of s.checks) {
35
- lines.push(`- ${check.name}: ${check.status}`);
36
- for (const ev of check.evidence) {
37
- lines.push(` - \`${ev.command}\` → exit ${ev.exitCode}: ${ev.summary}`);
38
- }
39
- }
40
- }
41
- return lines.join("\n");
42
- }
43
- export function buildMergeAudit(task) {
44
- const lines = [
45
- `### Task: ${task.id}`,
46
- `PR: #${task.prNumber}`,
47
- `Status: ${task.status}`,
48
- "",
49
- "**Merge Checkpoints:**",
50
- ];
51
- if (task.prCheckpoints) {
52
- const cp = task.prCheckpoints;
53
- const gates = {
54
- localChecks: cp.localChecks.status,
55
- ciChecks: cp.ciChecks.status,
56
- reviewerApproval: cp.reviewerApproval.status,
57
- goalVerification: cp.goalVerification.status,
58
- branchProtection: cp.branchProtection.status,
59
- mergeResult: cp.mergeResult.status,
60
- };
61
- for (const [name, status] of Object.entries(gates)) {
62
- lines.push(`- ${name}: ${status}`);
63
- }
64
- }
65
- return lines.join("\n");
66
- }
67
- //# sourceMappingURL=audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/flowrun/audit.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- import type { RepositoryQualityPolicy, TaskCommand, CoveragePolicy } from "./types.js";
2
- /** 从 gh pr view --json statusCheckRollup 获取的 PR 检查结果 */
3
- export interface PRCheckResult {
4
- context: string;
5
- state: "EXPECTED" | "ERROR" | "FAILURE" | "PENDING" | "SUCCESS";
6
- app: {
7
- id: number;
8
- name: string;
9
- } | null;
10
- }
11
- /** checkRequiredChecks 的返回结果 */
12
- export interface CICheckResult {
13
- allPassed: boolean;
14
- missingContexts: string[];
15
- failedContexts: string[];
16
- pendingContexts: string[];
17
- untrustedSources: Array<{
18
- context: string;
19
- expectedAppId: number;
20
- actualAppId: number | null;
21
- }>;
22
- }
23
- /** validateRequiredWorkflow 的返回结果 */
24
- export interface RequiredWorkflowValidation {
25
- valid: boolean;
26
- errors: string[];
27
- }
28
- /**
29
- * 验证 PR 的状态检查是否满足 RepositoryQualityPolicy 中定义的 required checks。
30
- *
31
- * 规则:
32
- * - mode 为 "off" 时不校验,直接返回 allPassed: true
33
- * - mode 为 "required" 时:
34
- * 1. 每个 requiredChecks 中的 context 必须在 PR checks 中存在
35
- * 2. 状态必须为 SUCCESS
36
- * 3. 发布该 check 的 GitHub App ID 必须与配置的 appId 匹配
37
- * (appId 为 0 时不校验来源)
38
- */
39
- export declare function checkRequiredChecks(policy: RepositoryQualityPolicy, prChecks: PRCheckResult[]): CICheckResult;
40
- /**
41
- * 验证 RepositoryQualityPolicy 的 requiredChecks 配置有效性。
42
- *
43
- * 规则:
44
- * - mode 为 "off" 时跳过所有校验
45
- * - mode 为 "required" 时:
46
- * 1. requiredChecks 不能为空
47
- * 2. 每个 entry 必须有 workflowPath、workflowRef
48
- * 3. 不允许重复的 context
49
- */
50
- export declare function validateRequiredWorkflow(policy: RepositoryQualityPolicy): RequiredWorkflowValidation;
51
- /**
52
- * checkBranchProtection 委托给 merge.ts 中已有的实现。
53
- * 这里作为 re-export wrapper,保持 CI 模块的 API 统一性。
54
- */
55
- export { checkBranchProtection } from "./merge.js";
56
- /**
57
- * 计算质量契约摘要(Quality Contract Digest)。
58
- *
59
- * 绑定 testCommands + verifyCommands + coveragePolicy,
60
- * 使用 JCS (JSON Canonicalization Scheme) + SHA-256 生成确定性摘要。
61
- *
62
- * 用于在 PR checkpoint 中记录期望的契约版本,确保 CI 执行时契约未被修改。
63
- */
64
- export declare function computeQualityContractDigest(testCommands: TaskCommand[], verifyCommands: TaskCommand[], coveragePolicy: CoveragePolicy | null): string;