@devcxl/opencode-cabbage 0.3.2 → 1.1.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.
- package/README.md +34 -19
- package/README.zh.md +34 -19
- package/assets/agents/dev-lifecycle.md +60 -49
- package/assets/agents/team/architect.md +8 -1
- package/assets/agents/team/developer.md +89 -0
- package/assets/agents/team/goal-verify.md +5 -1
- package/assets/agents/team/reviewer.md +6 -0
- package/assets/commands/code.md +3 -2
- package/assets/commands/design.md +3 -2
- package/assets/commands/release.md +3 -2
- package/assets/commands/requirements.md +3 -2
- package/assets/commands/review.md +3 -2
- package/assets/commands/setup.md +3 -2
- package/assets/commands/tasks.md +2 -1
- package/assets/prompts/bootstrap.md +9 -8
- package/assets/prompts/stage-contract.md +55 -0
- package/assets/skills/flow-code/SKILL.md +38 -140
- package/assets/skills/flow-design/SKILL.md +28 -79
- package/assets/skills/flow-release/SKILL.md +31 -51
- package/assets/skills/flow-requirements/SKILL.md +31 -196
- package/assets/skills/flow-review/SKILL.md +26 -123
- package/assets/skills/flow-setup/SKILL.md +40 -43
- package/assets/skills/flow-tasks/SKILL.md +23 -153
- package/assets/skills/flow-tdd/SKILL.md +30 -31
- package/dist/kernel/caller.d.ts +48 -0
- package/dist/kernel/caller.js +88 -0
- package/dist/kernel/caller.js.map +1 -0
- package/dist/kernel/context.d.ts +27 -0
- package/dist/kernel/context.js +84 -0
- package/dist/kernel/context.js.map +1 -0
- package/dist/kernel/flow.d.ts +175 -0
- package/dist/kernel/flow.js +467 -0
- package/dist/kernel/flow.js.map +1 -0
- package/dist/kernel/legacy.d.ts +19 -0
- package/dist/kernel/legacy.js +34 -0
- package/dist/kernel/legacy.js.map +1 -0
- package/dist/kernel/mutex.d.ts +8 -0
- package/dist/kernel/mutex.js +23 -0
- package/dist/kernel/mutex.js.map +1 -0
- package/dist/kernel/permission.d.ts +21 -0
- package/dist/kernel/permission.js +45 -0
- package/dist/kernel/permission.js.map +1 -0
- package/dist/kernel/profile.d.ts +35 -0
- package/dist/kernel/profile.js +147 -0
- package/dist/kernel/profile.js.map +1 -0
- package/dist/kernel/records.d.ts +103 -0
- package/dist/kernel/records.js +240 -0
- package/dist/kernel/records.js.map +1 -0
- package/dist/kernel/release.d.ts +106 -0
- package/dist/kernel/release.js +241 -0
- package/dist/kernel/release.js.map +1 -0
- package/dist/kernel/review.d.ts +34 -0
- package/dist/kernel/review.js +82 -0
- package/dist/kernel/review.js.map +1 -0
- package/dist/kernel/session-index.d.ts +45 -0
- package/dist/kernel/session-index.js +136 -0
- package/dist/kernel/session-index.js.map +1 -0
- package/dist/kernel/setup.d.ts +95 -0
- package/dist/kernel/setup.js +401 -0
- package/dist/kernel/setup.js.map +1 -0
- package/dist/kernel/slug.d.ts +23 -0
- package/dist/kernel/slug.js +67 -0
- package/dist/kernel/slug.js.map +1 -0
- package/dist/kernel/task.d.ts +213 -0
- package/dist/kernel/task.js +873 -0
- package/dist/kernel/task.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/adapter.d.ts +1 -1
- package/dist/{flowrun → kernel/tdd}/adapter.js +27 -26
- package/dist/kernel/tdd/adapter.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/digest.d.ts +2 -1
- package/dist/{flowrun → kernel/tdd}/digest.js +6 -4
- package/dist/kernel/tdd/digest.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/evaluator.d.ts +1 -1
- package/dist/{flowrun → kernel/tdd}/evaluator.js +1 -1
- package/dist/kernel/tdd/evaluator.js.map +1 -0
- package/dist/kernel/tdd/evidence.d.ts +42 -0
- package/dist/kernel/tdd/evidence.js +48 -0
- package/dist/kernel/tdd/evidence.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/state.d.ts +2 -2
- package/dist/{flowrun → kernel/tdd}/state.js +1 -1
- package/dist/kernel/tdd/state.js.map +1 -0
- package/dist/kernel/types.d.ts +180 -0
- package/dist/kernel/types.js +2 -0
- package/dist/kernel/types.js.map +1 -0
- package/dist/kernel/worktree.d.ts +45 -0
- package/dist/kernel/worktree.js +156 -0
- package/dist/kernel/worktree.js.map +1 -0
- package/dist/plugin/agents.d.ts +5 -17
- package/dist/plugin/agents.js +0 -23
- package/dist/plugin/agents.js.map +1 -1
- package/dist/plugin/flow-control.d.ts +91 -0
- package/dist/plugin/flow-control.js +287 -0
- package/dist/plugin/flow-control.js.map +1 -0
- package/dist/plugin/goal.d.ts +17 -46
- package/dist/plugin/goal.js +47 -117
- package/dist/plugin/goal.js.map +1 -1
- package/dist/plugin/prompt-lint.js +78 -6
- package/dist/plugin/prompt-lint.js.map +1 -1
- package/dist/plugin/release-control.d.ts +39 -0
- package/dist/plugin/release-control.js +343 -0
- package/dist/plugin/release-control.js.map +1 -0
- package/dist/plugin/server.d.ts +19 -0
- package/dist/plugin/server.js +198 -320
- package/dist/plugin/server.js.map +1 -1
- package/dist/plugin/setup-control.d.ts +59 -0
- package/dist/plugin/setup-control.js +111 -0
- package/dist/plugin/setup-control.js.map +1 -0
- package/dist/plugin/shell.d.ts +7 -34
- package/dist/plugin/shell.js +12 -137
- package/dist/plugin/shell.js.map +1 -1
- package/dist/plugin/skills.d.ts +1 -1
- package/dist/plugin/skills.js +1 -7
- package/dist/plugin/skills.js.map +1 -1
- package/dist/plugin/task-control.d.ts +90 -0
- package/dist/plugin/task-control.js +208 -0
- package/dist/plugin/task-control.js.map +1 -0
- package/dist/plugin/tdd-checkpoint.d.ts +128 -0
- package/dist/plugin/tdd-checkpoint.js +664 -0
- package/dist/plugin/tdd-checkpoint.js.map +1 -0
- package/dist/util/gh.d.ts +5 -0
- package/dist/util/gh.js +12 -0
- package/dist/util/gh.js.map +1 -1
- package/dist/util/paths.d.ts +6 -2
- package/dist/util/paths.js +15 -7
- package/dist/util/paths.js.map +1 -1
- package/package.json +4 -4
- package/assets/agents/team/backend.md +0 -100
- package/assets/agents/team/frontend.md +0 -98
- package/assets/commands/handoff.md +0 -4
- package/assets/commands/test.md +0 -4
- package/assets/context/CONTEXT.md +0 -41
- package/assets/skills/flow-handoff/SKILL.md +0 -76
- package/assets/skills/flow-test/SKILL.md +0 -75
- package/dist/flowrun/adapter.js.map +0 -1
- package/dist/flowrun/audit.d.ts +0 -5
- package/dist/flowrun/audit.js +0 -67
- package/dist/flowrun/audit.js.map +0 -1
- package/dist/flowrun/ci.d.ts +0 -64
- package/dist/flowrun/ci.js +0 -184
- package/dist/flowrun/ci.js.map +0 -1
- package/dist/flowrun/coverage.d.ts +0 -70
- package/dist/flowrun/coverage.js +0 -207
- package/dist/flowrun/coverage.js.map +0 -1
- package/dist/flowrun/digest.js.map +0 -1
- package/dist/flowrun/evaluator.js.map +0 -1
- package/dist/flowrun/gate.d.ts +0 -28
- package/dist/flowrun/gate.js +0 -139
- package/dist/flowrun/gate.js.map +0 -1
- package/dist/flowrun/github.d.ts +0 -24
- package/dist/flowrun/github.js +0 -154
- package/dist/flowrun/github.js.map +0 -1
- package/dist/flowrun/index.d.ts +0 -14
- package/dist/flowrun/index.js +0 -15
- package/dist/flowrun/index.js.map +0 -1
- package/dist/flowrun/merge.d.ts +0 -57
- package/dist/flowrun/merge.js +0 -180
- package/dist/flowrun/merge.js.map +0 -1
- package/dist/flowrun/migration.d.ts +0 -11
- package/dist/flowrun/migration.js +0 -276
- package/dist/flowrun/migration.js.map +0 -1
- package/dist/flowrun/resilience.d.ts +0 -18
- package/dist/flowrun/resilience.js +0 -80
- package/dist/flowrun/resilience.js.map +0 -1
- package/dist/flowrun/state.js.map +0 -1
- package/dist/flowrun/transitions.d.ts +0 -66
- package/dist/flowrun/transitions.js +0 -168
- package/dist/flowrun/transitions.js.map +0 -1
- package/dist/flowrun/types.d.ts +0 -356
- package/dist/flowrun/types.js +0 -21
- package/dist/flowrun/types.js.map +0 -1
- package/dist/flowrun/validator.d.ts +0 -19
- package/dist/flowrun/validator.js +0 -209
- package/dist/flowrun/validator.js.map +0 -1
- package/dist/plugin/broker.d.ts +0 -73
- package/dist/plugin/broker.js +0 -140
- package/dist/plugin/broker.js.map +0 -1
- package/dist/plugin/tdd-tool.d.ts +0 -62
- package/dist/plugin/tdd-tool.js +0 -336
- package/dist/plugin/tdd-tool.js.map +0 -1
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { canStartStage, canCompleteStage, canStartTask, canMerge, } from "./gate.js";
|
|
2
|
-
// ─── 受控 stage 集合 ───
|
|
3
|
-
/** flow_control 可启动的 stage */
|
|
4
|
-
const STARTABLE_STAGES = ["requirements", "design", "tasks", "code"];
|
|
5
|
-
/** flow_control 可完成的 stage(code/test/review/merge 由 finalize 完成) */
|
|
6
|
-
const COMPLETABLE_STAGES = ["requirements", "design", "tasks"];
|
|
7
|
-
function gateToError(gate) {
|
|
8
|
-
return {
|
|
9
|
-
code: "GATE_BLOCKED",
|
|
10
|
-
message: gate.reason ?? "Gate check failed",
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
// ─── FlowRun 状态迁移 ───
|
|
14
|
-
/**
|
|
15
|
-
* 启动 FlowRun:planned → running
|
|
16
|
-
*
|
|
17
|
-
* 幂等:已经是 running 则直接返回(不报错)。
|
|
18
|
-
*/
|
|
19
|
-
export function flowRunStart(flowRun) {
|
|
20
|
-
if (flowRun.status === "running") {
|
|
21
|
-
return { ok: true, value: flowRun };
|
|
22
|
-
}
|
|
23
|
-
if (flowRun.status !== "planned") {
|
|
24
|
-
return {
|
|
25
|
-
ok: false,
|
|
26
|
-
error: { code: "INVALID_TRANSITION", message: `FlowRun is ${flowRun.status}, not planned` },
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
flowRun.status = "running";
|
|
30
|
-
flowRun.startedAt = new Date().toISOString();
|
|
31
|
-
return { ok: true, value: flowRun };
|
|
32
|
-
}
|
|
33
|
-
// ─── Stage 状态迁移 ───
|
|
34
|
-
/**
|
|
35
|
-
* 启动 Stage:pending → running
|
|
36
|
-
*
|
|
37
|
-
* 约束:
|
|
38
|
-
* - 仅允许 requirements/design/tasks/code
|
|
39
|
-
* - 验证前置 stage 已 pass
|
|
40
|
-
*
|
|
41
|
-
* 幂等:已经是 running 则直接返回。
|
|
42
|
-
*/
|
|
43
|
-
export function flowStageStart(flowRun, stage) {
|
|
44
|
-
if (!STARTABLE_STAGES.includes(stage)) {
|
|
45
|
-
return {
|
|
46
|
-
ok: false,
|
|
47
|
-
error: { code: "STAGE_NOT_CONTROLLABLE", message: `Stage "${stage}" cannot be started via flow_control` },
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
if (flowRun.stages[stage].status === "running") {
|
|
51
|
-
return { ok: true, value: flowRun };
|
|
52
|
-
}
|
|
53
|
-
const gate = canStartStage(flowRun, stage);
|
|
54
|
-
if (!gate.allowed) {
|
|
55
|
-
return { ok: false, error: gateToError(gate) };
|
|
56
|
-
}
|
|
57
|
-
flowRun.stages[stage].status = "running";
|
|
58
|
-
return { ok: true, value: flowRun };
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* 完成 Stage:running → pass
|
|
62
|
-
*
|
|
63
|
-
* 约束:
|
|
64
|
-
* - 仅允许 requirements/design/tasks
|
|
65
|
-
* - code/test/review/merge 由 finalize 完成
|
|
66
|
-
* - 验证 pending checks 均已 pass
|
|
67
|
-
*
|
|
68
|
-
* 幂等:已经是 pass 则直接返回。
|
|
69
|
-
*/
|
|
70
|
-
export function flowStageComplete(flowRun, stage) {
|
|
71
|
-
if (!COMPLETABLE_STAGES.includes(stage)) {
|
|
72
|
-
return {
|
|
73
|
-
ok: false,
|
|
74
|
-
error: { code: "STAGE_NOT_CONTROLLABLE", message: `Stage "${stage}" completion is only via finalize` },
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
if (flowRun.stages[stage].status === "pass") {
|
|
78
|
-
return { ok: true, value: flowRun };
|
|
79
|
-
}
|
|
80
|
-
const gate = canCompleteStage(flowRun, stage);
|
|
81
|
-
if (!gate.allowed) {
|
|
82
|
-
return { ok: false, error: gateToError(gate) };
|
|
83
|
-
}
|
|
84
|
-
flowRun.stages[stage].status = "pass";
|
|
85
|
-
flowRun.stages[stage].completedAt = new Date().toISOString();
|
|
86
|
-
return { ok: true, value: flowRun };
|
|
87
|
-
}
|
|
88
|
-
// ─── Task 状态迁移 ───
|
|
89
|
-
/**
|
|
90
|
-
* 启动 Task:pending/ready → running
|
|
91
|
-
*
|
|
92
|
-
* 步骤:
|
|
93
|
-
* 1. gate check:canStartTask(依赖已 merged、code stage 活跃等)
|
|
94
|
-
* 2. policy 冻结:如果传入 tddPolicy,则覆盖 TaskState.tddPolicy
|
|
95
|
-
* 3. 写入 executionBinding
|
|
96
|
-
* 4. status → running
|
|
97
|
-
*
|
|
98
|
-
* 幂等:已经是 running 则直接返回(相同 taskId)。
|
|
99
|
-
*/
|
|
100
|
-
export function flowTaskStart(flowRun, taskId, executionBinding, tddPolicy) {
|
|
101
|
-
const task = flowRun.tasks[taskId];
|
|
102
|
-
if (!task) {
|
|
103
|
-
return {
|
|
104
|
-
ok: false,
|
|
105
|
-
error: { code: "TASK_NOT_FOUND", message: `Task "${taskId}" not found in FlowRun` },
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
// 幂等:已经是 running
|
|
109
|
-
if (task.status === "running") {
|
|
110
|
-
// 更新 executionBinding(可能重连)
|
|
111
|
-
task.executionBinding = executionBinding;
|
|
112
|
-
return { ok: true, value: { flowRun, task } };
|
|
113
|
-
}
|
|
114
|
-
const gate = canStartTask(flowRun, taskId);
|
|
115
|
-
if (!gate.allowed) {
|
|
116
|
-
return { ok: false, error: gateToError(gate) };
|
|
117
|
-
}
|
|
118
|
-
// 冻结 policy
|
|
119
|
-
if (tddPolicy) {
|
|
120
|
-
task.tddPolicy = tddPolicy;
|
|
121
|
-
}
|
|
122
|
-
// 写入 execution binding
|
|
123
|
-
task.executionBinding = executionBinding;
|
|
124
|
-
task.status = "running";
|
|
125
|
-
task.startedAt = new Date().toISOString();
|
|
126
|
-
return { ok: true, value: { flowRun, task } };
|
|
127
|
-
}
|
|
128
|
-
// ─── FlowRun Finalize ───
|
|
129
|
-
/**
|
|
130
|
-
* FlowRun 终态绑定:所有 Task merged 后,顺序标记 code→test→review→merge 为 pass,
|
|
131
|
-
* 并将 FlowRun 状态设为 completed。
|
|
132
|
-
*
|
|
133
|
-
* 规则:
|
|
134
|
-
* - canMerge() 必须通过(所有 Task merged + FlowRun status 为 running/merging)
|
|
135
|
-
* - 对 code/test/review/merge 四个 stage:若未 pass 则逐个标记 pass
|
|
136
|
-
* - FlowRun status → completed,设置 completedAt
|
|
137
|
-
*
|
|
138
|
-
* 幂等:已经是 completed 则直接返回(不修改任何字段)。
|
|
139
|
-
*/
|
|
140
|
-
export function flowRunFinalize(flowRun) {
|
|
141
|
-
// 幂等:已 completed
|
|
142
|
-
if (flowRun.status === "completed") {
|
|
143
|
-
return { ok: true, value: flowRun };
|
|
144
|
-
}
|
|
145
|
-
// 前置检查:canMerge(所有 Task merged + FlowRun 状态正确)
|
|
146
|
-
const mergeGate = canMerge(flowRun);
|
|
147
|
-
if (!mergeGate.allowed) {
|
|
148
|
-
return { ok: false, error: gateToError(mergeGate) };
|
|
149
|
-
}
|
|
150
|
-
// 顺序标记 finalize stages
|
|
151
|
-
const finalizeStages = ["code", "test", "review", "merge"];
|
|
152
|
-
for (const stage of finalizeStages) {
|
|
153
|
-
const stageState = flowRun.stages[stage];
|
|
154
|
-
if (!stageState)
|
|
155
|
-
continue;
|
|
156
|
-
// 已经是 pass → 跳过
|
|
157
|
-
if (stageState.status === "pass")
|
|
158
|
-
continue;
|
|
159
|
-
// 标记 pass
|
|
160
|
-
stageState.status = "pass";
|
|
161
|
-
stageState.completedAt = new Date().toISOString();
|
|
162
|
-
}
|
|
163
|
-
// FlowRun → completed
|
|
164
|
-
flowRun.status = "completed";
|
|
165
|
-
flowRun.completedAt = new Date().toISOString();
|
|
166
|
-
return { ok: true, value: flowRun };
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=transitions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/flowrun/transitions.ts"],"names":[],"mappings":"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"}
|
package/dist/flowrun/types.d.ts
DELETED
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
export declare const FLOW_RUN_STAGES: readonly ["requirements", "design", "tasks", "code", "test", "review", "merge"];
|
|
2
|
-
export type FlowStage = typeof FLOW_RUN_STAGES[number];
|
|
3
|
-
export declare const FLOW_RUN_STATUSES: readonly ["planned", "running", "blocked", "merging", "completed", "cancelled"];
|
|
4
|
-
export type FlowRunStatus = typeof FLOW_RUN_STATUSES[number];
|
|
5
|
-
export declare const TASK_STATUSES: readonly ["pending", "ready", "running", "blocked", "reviewing", "merged", "cancelled"];
|
|
6
|
-
export type TaskStatus = typeof TASK_STATUSES[number];
|
|
7
|
-
export declare const STAGE_STATUSES: readonly ["pending", "running", "pass", "failed", "blocked"];
|
|
8
|
-
export type StageStatus = typeof STAGE_STATUSES[number];
|
|
9
|
-
export declare const CHECKPOINT_STATUSES: readonly ["pending", "pass", "fail"];
|
|
10
|
-
export type CheckpointStatus = typeof CHECKPOINT_STATUSES[number];
|
|
11
|
-
export interface EvidenceEntry {
|
|
12
|
-
command: string;
|
|
13
|
-
exitCode: number | null;
|
|
14
|
-
summary: string;
|
|
15
|
-
timestamp: string;
|
|
16
|
-
}
|
|
17
|
-
export interface Checkpoint {
|
|
18
|
-
name: string;
|
|
19
|
-
status: CheckpointStatus;
|
|
20
|
-
evidence: EvidenceEntry[];
|
|
21
|
-
}
|
|
22
|
-
export interface StageState {
|
|
23
|
-
status: StageStatus;
|
|
24
|
-
requiredArtifacts: string[];
|
|
25
|
-
checks: Checkpoint[];
|
|
26
|
-
completedAt: string | null;
|
|
27
|
-
evidence: EvidenceEntry[];
|
|
28
|
-
}
|
|
29
|
-
export interface AcceptanceCriterion {
|
|
30
|
-
id: string;
|
|
31
|
-
description: string;
|
|
32
|
-
verification: "tdd" | "regression" | "manual";
|
|
33
|
-
}
|
|
34
|
-
export type TddMode = "strict" | "relaxed" | "bypass";
|
|
35
|
-
export type TddEnforcement = "advisory" | "runtime";
|
|
36
|
-
export interface TddRunnerPolicy {
|
|
37
|
-
adapter: "vitest";
|
|
38
|
-
baseCommand: string;
|
|
39
|
-
timeoutMs: number;
|
|
40
|
-
executionInputPatterns: string[];
|
|
41
|
-
}
|
|
42
|
-
export interface VersionedDigest {
|
|
43
|
-
algorithm: "sha256-content-v1" | "sha256-output-v1" | "git-tree-v1";
|
|
44
|
-
value: string;
|
|
45
|
-
}
|
|
46
|
-
export type TddApproval = {
|
|
47
|
-
kind: "planning-pr";
|
|
48
|
-
repo: string;
|
|
49
|
-
prNumber: number;
|
|
50
|
-
reviewId: number;
|
|
51
|
-
approver: string;
|
|
52
|
-
mergedCommitSha: string;
|
|
53
|
-
policyDigest: string;
|
|
54
|
-
} | {
|
|
55
|
-
kind: "issue-comment";
|
|
56
|
-
repo: string;
|
|
57
|
-
issueNumber: number;
|
|
58
|
-
commentId: number;
|
|
59
|
-
approver: string;
|
|
60
|
-
commentBodyDigest: VersionedDigest;
|
|
61
|
-
policyDigest: string;
|
|
62
|
-
} | {
|
|
63
|
-
kind: "legacy-migration";
|
|
64
|
-
fromSchemaVersion: 1;
|
|
65
|
-
};
|
|
66
|
-
export interface TaskCommand {
|
|
67
|
-
command: string;
|
|
68
|
-
cwd: string;
|
|
69
|
-
timeoutMs: number;
|
|
70
|
-
env: Record<string, string>;
|
|
71
|
-
}
|
|
72
|
-
export type AlternativeValidation = {
|
|
73
|
-
validationId: string;
|
|
74
|
-
kind: "command";
|
|
75
|
-
command: TaskCommand;
|
|
76
|
-
} | {
|
|
77
|
-
validationId: string;
|
|
78
|
-
kind: "manual";
|
|
79
|
-
description: string;
|
|
80
|
-
};
|
|
81
|
-
export interface TddException {
|
|
82
|
-
reason: string;
|
|
83
|
-
alternativeValidation: AlternativeValidation[];
|
|
84
|
-
approval: TddApproval;
|
|
85
|
-
}
|
|
86
|
-
export interface TddPolicy {
|
|
87
|
-
mode: TddMode;
|
|
88
|
-
enforcement: TddEnforcement;
|
|
89
|
-
runner: TddRunnerPolicy | null;
|
|
90
|
-
testFilePatterns: string[];
|
|
91
|
-
implementationFilePatterns: string[];
|
|
92
|
-
generatedArtifactPatterns: string[];
|
|
93
|
-
exception: TddException | null;
|
|
94
|
-
source: {
|
|
95
|
-
manifestPath: string;
|
|
96
|
-
revisionSha: string;
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
export type TddFailureKind = "assertion" | "missing-behavior" | "infrastructure" | "timeout" | "unknown";
|
|
100
|
-
export interface TddCommandEvidence {
|
|
101
|
-
command: string;
|
|
102
|
-
testSelector: string | null;
|
|
103
|
-
exitCode: number | null;
|
|
104
|
-
failureKind: TddFailureKind | null;
|
|
105
|
-
testsCollected: number | null;
|
|
106
|
-
testsFailed: number | null;
|
|
107
|
-
startedAt: string;
|
|
108
|
-
finishedAt: string;
|
|
109
|
-
durationMs: number;
|
|
110
|
-
changedFiles: string[];
|
|
111
|
-
outputDigest: VersionedDigest;
|
|
112
|
-
workspaceDigest: VersionedDigest;
|
|
113
|
-
executionInputDigest: VersionedDigest;
|
|
114
|
-
summary: string;
|
|
115
|
-
}
|
|
116
|
-
export interface TddTaskStartEvidence {
|
|
117
|
-
status: "pending" | "pass" | "fail";
|
|
118
|
-
headSha: string | null;
|
|
119
|
-
treeSha: string | null;
|
|
120
|
-
startedAt: string | null;
|
|
121
|
-
}
|
|
122
|
-
export interface TaskExecutionBinding {
|
|
123
|
-
branch: string;
|
|
124
|
-
baseSha: string;
|
|
125
|
-
startHeadSha: string;
|
|
126
|
-
worktreeId: string;
|
|
127
|
-
sessionId: string;
|
|
128
|
-
}
|
|
129
|
-
export interface TddCycleEvidence {
|
|
130
|
-
cycleId: string;
|
|
131
|
-
criterionId: string;
|
|
132
|
-
reworkRevision: number;
|
|
133
|
-
status: "started" | "red" | "pass" | "failed" | "abandoned";
|
|
134
|
-
startWorkspaceDigest: VersionedDigest;
|
|
135
|
-
testFiles: string[];
|
|
136
|
-
redTestDigest: VersionedDigest | null;
|
|
137
|
-
redAttempts: TddCommandEvidence[];
|
|
138
|
-
greenAttempts: TddCommandEvidence[];
|
|
139
|
-
}
|
|
140
|
-
export interface TddRegressionEvidence {
|
|
141
|
-
status: "pending" | "pass" | "fail" | "skipped";
|
|
142
|
-
headSha: string | null;
|
|
143
|
-
treeSha: string | null;
|
|
144
|
-
reworkRevision: number;
|
|
145
|
-
runs: TddCommandEvidence[];
|
|
146
|
-
}
|
|
147
|
-
export interface FinalVerificationEvidence {
|
|
148
|
-
status: "pending" | "pass" | "fail";
|
|
149
|
-
headSha: string | null;
|
|
150
|
-
treeSha: string | null;
|
|
151
|
-
runs: TddCommandEvidence[];
|
|
152
|
-
}
|
|
153
|
-
export type AlternativeValidationEvidence = {
|
|
154
|
-
validationId: string;
|
|
155
|
-
kind: "command";
|
|
156
|
-
status: "pass" | "fail";
|
|
157
|
-
headSha: string;
|
|
158
|
-
treeSha: string;
|
|
159
|
-
reworkRevision: number;
|
|
160
|
-
evidence: TddCommandEvidence;
|
|
161
|
-
} | {
|
|
162
|
-
validationId: string;
|
|
163
|
-
kind: "manual";
|
|
164
|
-
status: "pass" | "fail";
|
|
165
|
-
headSha: string;
|
|
166
|
-
treeSha: string;
|
|
167
|
-
reworkRevision: number;
|
|
168
|
-
reviewRef: string;
|
|
169
|
-
reviewer: string;
|
|
170
|
-
contentDigest: VersionedDigest;
|
|
171
|
-
policyDigest: string;
|
|
172
|
-
summary: string;
|
|
173
|
-
};
|
|
174
|
-
export interface ReworkApproval {
|
|
175
|
-
reworkRevision: number;
|
|
176
|
-
kind: "refactor";
|
|
177
|
-
headSha: string;
|
|
178
|
-
treeSha: string;
|
|
179
|
-
reviewerSessionId: string;
|
|
180
|
-
reviewerMessageId: string;
|
|
181
|
-
contentDigest: VersionedDigest;
|
|
182
|
-
policyDigest: string;
|
|
183
|
-
}
|
|
184
|
-
export interface TddReworkEvidence {
|
|
185
|
-
reworkRevision: number;
|
|
186
|
-
kind: "behavior" | "refactor";
|
|
187
|
-
affectedCriterionIds: string[];
|
|
188
|
-
status: "started" | "evidence-ready" | "pass" | "fail";
|
|
189
|
-
startHeadSha: string;
|
|
190
|
-
approval: ReworkApproval | null;
|
|
191
|
-
}
|
|
192
|
-
export interface TddEvidence {
|
|
193
|
-
revision: number;
|
|
194
|
-
reworkRevision: number;
|
|
195
|
-
status: "not-recorded" | "pending" | "in-progress" | "pass" | "fail" | "waived";
|
|
196
|
-
taskStart: TddTaskStartEvidence;
|
|
197
|
-
cycles: TddCycleEvidence[];
|
|
198
|
-
regression: TddRegressionEvidence;
|
|
199
|
-
verification: FinalVerificationEvidence;
|
|
200
|
-
alternativeValidation: AlternativeValidationEvidence[];
|
|
201
|
-
reworks: TddReworkEvidence[];
|
|
202
|
-
warnings: string[];
|
|
203
|
-
updatedAt: string | null;
|
|
204
|
-
}
|
|
205
|
-
export interface CoveragePolicy {
|
|
206
|
-
command: string;
|
|
207
|
-
threshold: number;
|
|
208
|
-
report: {
|
|
209
|
-
format: "istanbul-json-summary";
|
|
210
|
-
path: string;
|
|
211
|
-
metric: "lines";
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
export interface CoverageEvidence {
|
|
215
|
-
status: "pending" | "pass" | "fail";
|
|
216
|
-
headSha: string;
|
|
217
|
-
actual: number | null;
|
|
218
|
-
threshold: number;
|
|
219
|
-
metric: "lines";
|
|
220
|
-
reportDigest: string | null;
|
|
221
|
-
summary: string;
|
|
222
|
-
}
|
|
223
|
-
export interface TddComplianceCheckpoint {
|
|
224
|
-
status: "pending" | "pass" | "fail" | "waived";
|
|
225
|
-
evidenceRevision: number;
|
|
226
|
-
reworkRevision: number;
|
|
227
|
-
headSha: string;
|
|
228
|
-
treeSha: string;
|
|
229
|
-
summary: string;
|
|
230
|
-
}
|
|
231
|
-
export interface PRCheckpoints {
|
|
232
|
-
prNumber: number;
|
|
233
|
-
localChecks: Checkpoint;
|
|
234
|
-
ciChecks: Checkpoint;
|
|
235
|
-
reviewerApproval: Checkpoint;
|
|
236
|
-
goalVerification: Checkpoint;
|
|
237
|
-
branchProtection: Checkpoint;
|
|
238
|
-
mergeResult: Checkpoint;
|
|
239
|
-
tddCompliance: TddComplianceCheckpoint | null;
|
|
240
|
-
verification: FinalVerificationEvidence | null;
|
|
241
|
-
coverage: CoverageEvidence | null;
|
|
242
|
-
qualityContractDigest: string | null;
|
|
243
|
-
}
|
|
244
|
-
export interface TaskState {
|
|
245
|
-
id: string;
|
|
246
|
-
name: string;
|
|
247
|
-
status: TaskStatus;
|
|
248
|
-
dependsOn: string[];
|
|
249
|
-
area: string;
|
|
250
|
-
expectedFiles: string[];
|
|
251
|
-
parallelSafe: boolean;
|
|
252
|
-
prNumber: number | null;
|
|
253
|
-
prCheckpoints: PRCheckpoints | null;
|
|
254
|
-
blockedReason: string | null;
|
|
255
|
-
startedAt: string | null;
|
|
256
|
-
acceptanceCriteria: AcceptanceCriterion[];
|
|
257
|
-
testCommands: TaskCommand[];
|
|
258
|
-
verifyCommands: TaskCommand[];
|
|
259
|
-
executionBinding: TaskExecutionBinding | null;
|
|
260
|
-
tddPolicy: TddPolicy;
|
|
261
|
-
tddEvidence: TddEvidence;
|
|
262
|
-
coveragePolicy: CoveragePolicy | null;
|
|
263
|
-
}
|
|
264
|
-
export interface RepositoryQualityPolicy {
|
|
265
|
-
mode: "off" | "required";
|
|
266
|
-
requiredChecks: Array<{
|
|
267
|
-
context: string;
|
|
268
|
-
appId: number;
|
|
269
|
-
workflowPath: string;
|
|
270
|
-
workflowRef: string;
|
|
271
|
-
workflowBlobSha: string;
|
|
272
|
-
}>;
|
|
273
|
-
}
|
|
274
|
-
export interface FlowRun {
|
|
275
|
-
flowRunId: string;
|
|
276
|
-
repo: string;
|
|
277
|
-
parentIssueNumber: number;
|
|
278
|
-
status: FlowRunStatus;
|
|
279
|
-
schemaVersion: number;
|
|
280
|
-
revision: number;
|
|
281
|
-
stages: Record<FlowStage, StageState>;
|
|
282
|
-
tasks: Record<string, TaskState>;
|
|
283
|
-
startedAt: string | null;
|
|
284
|
-
lastTickAt: string | null;
|
|
285
|
-
nextTickAfter: string | null;
|
|
286
|
-
maxRuntime: number;
|
|
287
|
-
completedAt: string | null;
|
|
288
|
-
repositoryQualityPolicy: RepositoryQualityPolicy;
|
|
289
|
-
}
|
|
290
|
-
export interface GoalFlowRunRef {
|
|
291
|
-
repo: string;
|
|
292
|
-
parentIssueNumber: number;
|
|
293
|
-
flowRunId: string;
|
|
294
|
-
}
|
|
295
|
-
export type FlowControlOp = "run-start" | "stage-start" | "stage-complete" | "task-start" | "pr-create" | "run-finalize";
|
|
296
|
-
export interface FlowControlRequest {
|
|
297
|
-
op: FlowControlOp;
|
|
298
|
-
parentIssueNumber: number;
|
|
299
|
-
stage?: FlowStage;
|
|
300
|
-
taskId?: string;
|
|
301
|
-
executionBinding?: TaskExecutionBinding;
|
|
302
|
-
tddPolicy?: TddPolicy;
|
|
303
|
-
currentHeadSha?: string;
|
|
304
|
-
prTitle?: string;
|
|
305
|
-
prBody?: string;
|
|
306
|
-
baseBranch?: string;
|
|
307
|
-
}
|
|
308
|
-
export interface FlowControlResponse {
|
|
309
|
-
ok: boolean;
|
|
310
|
-
error?: {
|
|
311
|
-
code: string;
|
|
312
|
-
message: string;
|
|
313
|
-
};
|
|
314
|
-
flowRunStatus?: FlowRunStatus;
|
|
315
|
-
stage?: {
|
|
316
|
-
name: FlowStage;
|
|
317
|
-
status: StageStatus;
|
|
318
|
-
};
|
|
319
|
-
task?: {
|
|
320
|
-
taskId: string;
|
|
321
|
-
status: TaskStatus;
|
|
322
|
-
executionBinding?: TaskExecutionBinding | null;
|
|
323
|
-
};
|
|
324
|
-
pr?: {
|
|
325
|
-
prNumber: number;
|
|
326
|
-
prUrl: string;
|
|
327
|
-
created: boolean;
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
export interface ValidationError {
|
|
331
|
-
path: string;
|
|
332
|
-
message: string;
|
|
333
|
-
}
|
|
334
|
-
export type FlowRunReadResult = {
|
|
335
|
-
ok: true;
|
|
336
|
-
data: FlowRun;
|
|
337
|
-
migrated: boolean;
|
|
338
|
-
} | {
|
|
339
|
-
ok: false;
|
|
340
|
-
code: "NOT_FOUND" | "INVALID_JSON" | "UNSUPPORTED_SCHEMA" | "MIGRATION_FAILED" | "VALIDATION_FAILED";
|
|
341
|
-
errors: ValidationError[];
|
|
342
|
-
};
|
|
343
|
-
export declare const CURRENT_SCHEMA_VERSION = 2;
|
|
344
|
-
export declare const DEFAULT_MAX_RUNTIME_MS = 86400000;
|
|
345
|
-
export declare const CABINET_START_MARKER = "<!-- cabbage-flow-run:start -->";
|
|
346
|
-
export declare const CABINET_END_MARKER = "<!-- cabbage-flow-run:end -->";
|
|
347
|
-
export declare const LABEL_PREFIX = "cabbage:";
|
|
348
|
-
export declare const FLOW_RUN_LABELS: {
|
|
349
|
-
readonly flow: "cabbage:flow";
|
|
350
|
-
readonly running: "cabbage:running";
|
|
351
|
-
readonly blocked: "cabbage:blocked";
|
|
352
|
-
readonly merging: "cabbage:merging";
|
|
353
|
-
readonly completed: "cabbage:completed";
|
|
354
|
-
readonly cancelled: "cabbage:cancelled";
|
|
355
|
-
readonly resume: "cabbage:resume";
|
|
356
|
-
};
|
package/dist/flowrun/types.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export const FLOW_RUN_STAGES = ["requirements", "design", "tasks", "code", "test", "review", "merge"];
|
|
2
|
-
export const FLOW_RUN_STATUSES = ["planned", "running", "blocked", "merging", "completed", "cancelled"];
|
|
3
|
-
export const TASK_STATUSES = ["pending", "ready", "running", "blocked", "reviewing", "merged", "cancelled"];
|
|
4
|
-
export const STAGE_STATUSES = ["pending", "running", "pass", "failed", "blocked"];
|
|
5
|
-
export const CHECKPOINT_STATUSES = ["pending", "pass", "fail"];
|
|
6
|
-
// ─── 常量 ───
|
|
7
|
-
export const CURRENT_SCHEMA_VERSION = 2;
|
|
8
|
-
export const DEFAULT_MAX_RUNTIME_MS = 86_400_000;
|
|
9
|
-
export const CABINET_START_MARKER = "<!-- cabbage-flow-run:start -->";
|
|
10
|
-
export const CABINET_END_MARKER = "<!-- cabbage-flow-run:end -->";
|
|
11
|
-
export const LABEL_PREFIX = "cabbage:";
|
|
12
|
-
export const FLOW_RUN_LABELS = {
|
|
13
|
-
flow: `${LABEL_PREFIX}flow`,
|
|
14
|
-
running: `${LABEL_PREFIX}running`,
|
|
15
|
-
blocked: `${LABEL_PREFIX}blocked`,
|
|
16
|
-
merging: `${LABEL_PREFIX}merging`,
|
|
17
|
-
completed: `${LABEL_PREFIX}completed`,
|
|
18
|
-
cancelled: `${LABEL_PREFIX}cancelled`,
|
|
19
|
-
resume: `${LABEL_PREFIX}resume`,
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/flowrun/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAG9G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAU,CAAA;AAGhH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAA;AAGpH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAG1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAU,CAAA;AAoZvE,aAAa;AAEb,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AACvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAA;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,iCAAiC,CAAA;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,+BAA+B,CAAA;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAA;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,GAAG,YAAY,MAAM;IAC3B,OAAO,EAAE,GAAG,YAAY,SAAS;IACjC,OAAO,EAAE,GAAG,YAAY,SAAS;IACjC,OAAO,EAAE,GAAG,YAAY,SAAS;IACjC,SAAS,EAAE,GAAG,YAAY,WAAW;IACrC,SAAS,EAAE,GAAG,YAAY,WAAW;IACrC,MAAM,EAAE,GAAG,YAAY,QAAQ;CACvB,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { type FlowRun, type TaskState, type ValidationError } from "./types.js";
|
|
2
|
-
export type { ValidationError } from "./types.js";
|
|
3
|
-
export declare function validateFlowRun(raw: unknown): {
|
|
4
|
-
data: FlowRun | null;
|
|
5
|
-
errors: ValidationError[];
|
|
6
|
-
};
|
|
7
|
-
export interface DagValidationError {
|
|
8
|
-
path: string;
|
|
9
|
-
message: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* 验证 Task DAG:
|
|
13
|
-
* - Task ID 唯一
|
|
14
|
-
* - record key 与 Task.id 一致
|
|
15
|
-
* - 所有依赖存在
|
|
16
|
-
* - 禁止自依赖
|
|
17
|
-
* - 检测环路
|
|
18
|
-
*/
|
|
19
|
-
export declare function validateFlowRunDag(tasks: Record<string, TaskState>): DagValidationError[];
|