@devcxl/opencode-cabbage 0.3.2 → 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 (176) hide show
  1. package/README.md +34 -19
  2. package/README.zh.md +34 -19
  3. package/assets/agents/dev-lifecycle.md +60 -49
  4. package/assets/agents/team/architect.md +5 -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 +6 -0
  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 +28 -79
  19. package/assets/skills/flow-release/SKILL.md +31 -51
  20. package/assets/skills/flow-requirements/SKILL.md +31 -196
  21. package/assets/skills/flow-review/SKILL.md +26 -123
  22. package/assets/skills/flow-setup/SKILL.md +40 -43
  23. package/assets/skills/flow-tasks/SKILL.md +23 -153
  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 +1 -7
  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 -100
  121. package/assets/agents/team/frontend.md +0 -98
  122. package/assets/commands/handoff.md +0 -4
  123. package/assets/commands/test.md +0 -4
  124. package/assets/context/CONTEXT.md +0 -41
  125. package/assets/skills/flow-handoff/SKILL.md +0 -76
  126. package/assets/skills/flow-test/SKILL.md +0 -75
  127. package/dist/flowrun/adapter.js.map +0 -1
  128. package/dist/flowrun/audit.d.ts +0 -5
  129. package/dist/flowrun/audit.js +0 -67
  130. package/dist/flowrun/audit.js.map +0 -1
  131. package/dist/flowrun/ci.d.ts +0 -64
  132. package/dist/flowrun/ci.js +0 -184
  133. package/dist/flowrun/ci.js.map +0 -1
  134. package/dist/flowrun/coverage.d.ts +0 -70
  135. package/dist/flowrun/coverage.js +0 -207
  136. package/dist/flowrun/coverage.js.map +0 -1
  137. package/dist/flowrun/digest.js.map +0 -1
  138. package/dist/flowrun/evaluator.js.map +0 -1
  139. package/dist/flowrun/gate.d.ts +0 -28
  140. package/dist/flowrun/gate.js +0 -139
  141. package/dist/flowrun/gate.js.map +0 -1
  142. package/dist/flowrun/github.d.ts +0 -24
  143. package/dist/flowrun/github.js +0 -154
  144. package/dist/flowrun/github.js.map +0 -1
  145. package/dist/flowrun/index.d.ts +0 -14
  146. package/dist/flowrun/index.js +0 -15
  147. package/dist/flowrun/index.js.map +0 -1
  148. package/dist/flowrun/merge.d.ts +0 -57
  149. package/dist/flowrun/merge.js +0 -180
  150. package/dist/flowrun/merge.js.map +0 -1
  151. package/dist/flowrun/migration.d.ts +0 -11
  152. package/dist/flowrun/migration.js +0 -276
  153. package/dist/flowrun/migration.js.map +0 -1
  154. package/dist/flowrun/resilience.d.ts +0 -18
  155. package/dist/flowrun/resilience.js +0 -80
  156. package/dist/flowrun/resilience.js.map +0 -1
  157. package/dist/flowrun/state.js.map +0 -1
  158. package/dist/flowrun/transitions.d.ts +0 -66
  159. package/dist/flowrun/transitions.js +0 -168
  160. package/dist/flowrun/transitions.js.map +0 -1
  161. package/dist/flowrun/types.d.ts +0 -356
  162. package/dist/flowrun/types.js +0 -21
  163. package/dist/flowrun/types.js.map +0 -1
  164. package/dist/flowrun/validator.d.ts +0 -19
  165. package/dist/flowrun/validator.js +0 -209
  166. package/dist/flowrun/validator.js.map +0 -1
  167. package/dist/plugin/broker.d.ts +0 -73
  168. package/dist/plugin/broker.js +0 -140
  169. package/dist/plugin/broker.js.map +0 -1
  170. package/dist/plugin/tdd-tool.d.ts +0 -62
  171. package/dist/plugin/tdd-tool.js +0 -336
  172. package/dist/plugin/tdd-tool.js.map +0 -1
  173. /package/dist/{flowrun → kernel/tdd}/adapter.js +0 -0
  174. /package/dist/{flowrun → kernel/tdd}/digest.js +0 -0
  175. /package/dist/{flowrun → kernel/tdd}/evaluator.js +0 -0
  176. /package/dist/{flowrun → kernel/tdd}/state.js +0 -0
@@ -1,20 +1,37 @@
1
- import { tool } from "@opencode-ai/plugin/tool";
2
1
  import path from "node:path";
3
- import { readFile, writeFile, mkdir } from "node:fs/promises";
4
- import { existsSync } from "node:fs";
5
2
  import { initPrompts } from "./prompts.js";
6
3
  import { initBootstrap, getBootstrapContent } from "./bootstrap.js";
7
4
  import { loadCommands } from "./commands.js";
8
5
  import { setupSkillsDir } from "./skills.js";
9
6
  import { loadAgents } from "./agents.js";
10
- import { createIsolatedShellEnv, detectAmbientCredentials } from "./shell.js";
11
- import { createGoalClient, createGoalTool, readGoal, writeGoal, bindFlowRunRef, readFlowRunRef, checkFlowRunBlockers, MAX_CONTINUATIONS, continuationPrompt, formatGoal } from "./goal.js";
12
- import { FlowBroker } from "./broker.js";
13
- import { flowRunStart, flowStageStart, flowStageComplete, flowTaskStart, flowRunFinalize, } from "../flowrun/transitions.js";
14
- import { readFlowRun } from "../flowrun/github.js";
7
+ import { createAgentShellEnv } from "./shell.js";
8
+ import { createGoalClient, createGoalTool, readGoal, writeGoal, MAX_CONTINUATIONS, continuationPrompt, formatGoal } from "./goal.js";
9
+ import { readIndex, updateFlowSession } from "../kernel/session-index.js";
10
+ import { createSetupControlTool } from "./setup-control.js";
11
+ import { createFlowControlTool } from "./flow-control.js";
12
+ import { createTaskControlTool } from "./task-control.js";
13
+ import { createTddCheckpointTool } from "./tdd-checkpoint.js";
14
+ import { createReleaseControlTool } from "./release-control.js";
15
+ import { getContextBlock, formatContextBlock, CONTEXT_MARKER } from "../kernel/context.js";
16
+ import { readProjectProfile } from "../kernel/profile.js";
15
17
  const abortedSessions = new Set();
16
18
  const errorRetryCount = new Map();
17
19
  const COMPACTION_THRESHOLD = 20;
20
+ /**
21
+ * 决定首条 user 消息注入内容:
22
+ * - Primary(goal 激活)→ bootstrap + Project Context 块
23
+ * - 子 agent → 仅 Project Context 块
24
+ * - 其他 → 不注入
25
+ */
26
+ export function buildFirstUserInjection(input) {
27
+ const parts = [];
28
+ if (input.hasGoal)
29
+ parts.push(input.bootstrap);
30
+ if (input.contextBlock && (input.hasGoal || input.isSubAgent)) {
31
+ parts.push(input.contextBlock.block);
32
+ }
33
+ return parts.length > 0 ? parts.join("\n\n") : null;
34
+ }
18
35
  export function configureGoalTools(config) {
19
36
  config.tools = { ...config.tools, goal: false };
20
37
  for (const [agentName, agent] of Object.entries(config.agent ?? {})) {
@@ -25,57 +42,68 @@ export function configureGoalTools(config) {
25
42
  agentConfig.tools = { ...agentConfig.tools, goal: canUseGoal };
26
43
  }
27
44
  }
28
- function sessionStatePath(projectDir) {
29
- return path.join(projectDir, ".opencode", "opencode-cabbage", "session-state.json");
30
- }
31
- async function saveSessionState(projectDir, sessionID, goal) {
32
- const dir = path.dirname(sessionStatePath(projectDir));
33
- if (!existsSync(dir))
34
- await mkdir(dir, { recursive: true });
35
- await writeFile(sessionStatePath(projectDir), JSON.stringify({
36
- sessionID,
37
- status: goal.status,
38
- updatedAt: Date.now(),
39
- }), "utf8");
40
- }
41
- async function loadLastSession(projectDir) {
42
- try {
43
- const data = JSON.parse(await readFile(sessionStatePath(projectDir), "utf8"));
44
- return data.status === "active" ? data.sessionID : null;
45
- }
46
- catch {
47
- return null;
48
- }
49
- }
50
- async function clearSessionState(projectDir) {
51
- try {
52
- await writeFile(sessionStatePath(projectDir), JSON.stringify({ status: "completed", updatedAt: Date.now() }), "utf8");
45
+ /**
46
+ * config 层第二道门(spec §2.2):按 caller 矩阵把 5 个生命周期工具
47
+ * 对每个 agent 置 true/false。agent 名 → 角色映射与 caller.ts ROLE_BY_AGENT 一致。
48
+ */
49
+ export function configureLifecycleTools(config) {
50
+ const lifecycleTools = ["setup_control", "flow_control", "task_control", "tdd_checkpoint", "release_control"];
51
+ const agentRole = (name) => {
52
+ switch (name) {
53
+ case "dev-lifecycle": return "primary";
54
+ case "developer": return "developer";
55
+ case "architect": return "architect";
56
+ case "reviewer": return "reviewer";
57
+ case "goal-verify": return "goal-verify";
58
+ default: return "reviewer";
59
+ }
60
+ };
61
+ const canUseTool = (role, tool) => {
62
+ if (role === "goal-verify")
63
+ return tool === "flow_control";
64
+ switch (tool) {
65
+ case "tdd_checkpoint": return role === "primary" || role === "developer";
66
+ default: return role === "primary";
67
+ }
68
+ };
69
+ for (const [agentName, agent] of Object.entries(config.agent ?? {})) {
70
+ if (!agent || typeof agent !== "object" || Array.isArray(agent))
71
+ continue;
72
+ const agentConfig = agent;
73
+ const role = agentRole(agentName);
74
+ const toolFlags = {};
75
+ for (const toolName of lifecycleTools) {
76
+ toolFlags[toolName] = canUseTool(role, toolName);
77
+ }
78
+ agentConfig.tools = { ...agentConfig.tools, ...toolFlags };
53
79
  }
54
- catch { }
55
80
  }
56
81
  async function queueContinuation(client, sessionID, projectDir) {
57
82
  const { goal } = await readGoal(client, sessionID);
58
83
  if (!goal || goal.status !== "active")
59
84
  return;
60
- if (projectDir)
61
- saveSessionState(projectDir, sessionID, goal);
85
+ if (projectDir) {
86
+ await updateFlowSession(projectDir, goal.parentIssueNumber, { status: goal.status, continuationCount: goal.continuationCount });
87
+ }
62
88
  if (abortedSessions.has(sessionID)) {
63
89
  abortedSessions.delete(sessionID);
64
90
  goal.status = "paused";
65
91
  await writeGoal(client, sessionID, goal);
66
92
  if (projectDir)
67
- clearSessionState(projectDir);
93
+ await updateFlowSession(projectDir, goal.parentIssueNumber, { status: "paused" });
68
94
  return;
69
95
  }
70
96
  if (goal.continuationCount >= MAX_CONTINUATIONS) {
71
97
  goal.status = "paused";
72
98
  await writeGoal(client, sessionID, goal);
73
99
  if (projectDir)
74
- clearSessionState(projectDir);
100
+ await updateFlowSession(projectDir, goal.parentIssueNumber, { status: "paused" });
75
101
  return;
76
102
  }
77
103
  goal.continuationCount++;
78
104
  await writeGoal(client, sessionID, goal);
105
+ if (projectDir)
106
+ await updateFlowSession(projectDir, goal.parentIssueNumber, { continuationCount: goal.continuationCount });
79
107
  try {
80
108
  if (goal.continuationCount > 0 && goal.continuationCount % COMPACTION_THRESHOLD === 0) {
81
109
  try {
@@ -86,9 +114,11 @@ async function queueContinuation(client, sessionID, projectDir) {
86
114
  }
87
115
  catch { }
88
116
  }
117
+ const contextBlock = projectDir ? await getContextBlock(projectDir) : null;
118
+ const contextText = contextBlock ? `${formatContextBlock(contextBlock)}\n\n` : "";
89
119
  await client.session.promptAsync({
90
120
  sessionID,
91
- parts: [{ type: "text", text: continuationPrompt(goal.objective, goal.completionCriterion), synthetic: true }],
121
+ parts: [{ type: "text", text: contextText + continuationPrompt(goal.parentIssueNumber), synthetic: true }],
92
122
  });
93
123
  }
94
124
  catch (err) {
@@ -96,26 +126,28 @@ async function queueContinuation(client, sessionID, projectDir) {
96
126
  }
97
127
  }
98
128
  async function autoResume(client, projectDir) {
99
- const lastSessionID = await loadLastSession(projectDir);
100
- if (!lastSessionID)
101
- return;
102
- const { goal } = await readGoal(client, lastSessionID);
103
- if (!goal || goal.status !== "active") {
104
- await clearSessionState(projectDir);
105
- return;
106
- }
107
- try {
108
- await client.session.promptAsync({
109
- sessionID: lastSessionID,
110
- parts: [{
111
- type: "text",
112
- text: `[auto-resume] Plugin restarted. Resuming previous goal:\n\n${formatGoal(goal)}\n\nContinue working.`,
113
- synthetic: true,
114
- }],
115
- });
116
- }
117
- catch (err) {
118
- console.error("[cabbage] auto-resume failed:", err);
129
+ const index = await readIndex(projectDir);
130
+ for (const [parentIssueNumber, entry] of Object.entries(index.flows)) {
131
+ if (entry.status !== "active")
132
+ continue;
133
+ const { goal } = await readGoal(client, entry.sessionID);
134
+ if (!goal || goal.status !== "active") {
135
+ await updateFlowSession(projectDir, Number(parentIssueNumber), { status: "paused" });
136
+ continue;
137
+ }
138
+ try {
139
+ await client.session.promptAsync({
140
+ sessionID: entry.sessionID,
141
+ parts: [{
142
+ type: "text",
143
+ text: `[auto-resume] Plugin restarted. Resuming previous goal:\n\n${formatGoal(goal)}\n\nContinue working.`,
144
+ synthetic: true,
145
+ }],
146
+ });
147
+ }
148
+ catch (err) {
149
+ console.error("[cabbage] auto-resume failed:", err);
150
+ }
119
151
  }
120
152
  }
121
153
  function getRetryKey(sessionID, phase) {
@@ -141,240 +173,22 @@ function startPeriodicCleanup() {
141
173
  errorRetryCount.clear();
142
174
  }, ABORTED_SESSION_CLEANUP_INTERVAL);
143
175
  }
144
- // ─── Flow Control Tool ───
145
- function createFlowControlTool(broker, goalClient) {
146
- return tool({
147
- description: `Control the FlowRun lifecycle: start a FlowRun, transition stages, start tasks, and finalize completed runs.
148
-
149
- Operations:
150
- - run-start: Transition FlowRun from planned → running. Binds Goal to FlowRun.
151
- - stage-start: Start a stage (requirements/design/tasks/code). Requires prerequisites met.
152
- - stage-complete: Complete a stage (requirements/design/tasks). Requires all checks pass.
153
- - task-start: Start a task (pending/ready → running). Freezes TDD policy and sets execution binding.
154
- - run-finalize: Mark code→test→review→merge stages as pass, set FlowRun to completed. Requires all Tasks merged. Idempotent.`,
155
- args: {
156
- op: tool.schema.enum(["run-start", "stage-start", "stage-complete", "task-start", "run-finalize"]).describe("Flow control operation"),
157
- parent_issue_number: tool.schema.number().describe("Parent GitHub Issue number containing the FlowRun"),
158
- stage: tool.schema.enum(["requirements", "design", "tasks", "code", "test", "review", "merge"]).optional().describe("Stage name (for stage-start/stage-complete)"),
159
- task_id: tool.schema.string().optional().describe("Task ID (for task-start)"),
160
- execution_binding: tool.schema.object({
161
- branch: tool.schema.string(),
162
- base_sha: tool.schema.string(),
163
- start_head_sha: tool.schema.string(),
164
- worktree_id: tool.schema.string(),
165
- session_id: tool.schema.string(),
166
- }).optional().describe("Execution binding for task-start"),
167
- tdd_policy_json: tool.schema.string().optional().describe("JSON string of frozen TDD policy (for task-start)"),
168
- },
169
- async execute(args, ctx) {
170
- const sessionID = ctx.sessionID;
171
- const op = args.op;
172
- const parentIssueNumber = args.parent_issue_number;
173
- try {
174
- switch (op) {
175
- case "run-start":
176
- return handleRunStart(broker, goalClient, parentIssueNumber, sessionID);
177
- case "stage-start":
178
- return handleStageStart(broker, parentIssueNumber, args.stage);
179
- case "stage-complete":
180
- return handleStageComplete(broker, parentIssueNumber, args.stage);
181
- case "task-start":
182
- return handleTaskStart(broker, parentIssueNumber, args.task_id, args.execution_binding, args.tdd_policy_json);
183
- case "run-finalize":
184
- return handleRunFinalize(broker, parentIssueNumber);
185
- default:
186
- return errorResponse("UNKNOWN_OP", `Unknown operation: "${op}"`);
187
- }
188
- }
189
- catch (err) {
190
- return errorResponse("INTERNAL_ERROR", String(err));
191
- }
192
- },
193
- });
194
- }
195
- function okResponse(overrides = {}) {
196
- const resp = { ok: true, ...overrides };
197
- return JSON.stringify(resp, null, 2);
198
- }
199
- function errorResponse(code, message) {
200
- const resp = { ok: false, error: { code, message } };
201
- return JSON.stringify(resp, null, 2);
202
- }
203
- async function handleRunStart(broker, goalClient, parentIssueNumber, sessionID) {
204
- // 通过 broker 执行状态迁移
205
- const writeResult = await broker.writeFlowRunWithLock(parentIssueNumber, (flowRun) => {
206
- const res = flowRunStart(flowRun);
207
- if (!res.ok) {
208
- return { flowRun, result: res.error, shouldPersist: false };
209
- }
210
- return { flowRun: res.value, result: res.value.status, shouldPersist: true };
211
- });
212
- if (!writeResult.ok) {
213
- return errorResponse(writeResult.code, writeResult.message);
214
- }
215
- if (!writeResult.persisted) {
216
- // 状态迁移被拒绝(如已是 running)
217
- return errorResponse("INVALID_TRANSITION", "FlowRun is not in planned state");
218
- }
219
- // 绑定 Goal → FlowRun
220
- const actualFlowRunId = writeResult.flowRun.flowRunId;
221
- const bindResult = await bindFlowRunRef(goalClient, sessionID, {
222
- repo: writeResult.flowRun.repo,
223
- parentIssueNumber,
224
- flowRunId: actualFlowRunId,
225
- });
226
- if (!bindResult.ok) {
227
- return errorResponse(bindResult.code, bindResult.message);
228
- }
229
- return okResponse({
230
- flowRunStatus: writeResult.flowRun.status,
231
- });
232
- }
233
- async function handleStageStart(broker, parentIssueNumber, stageName) {
234
- if (!stageName) {
235
- return errorResponse("POLICY_INVALID", "stage is required for stage-start");
236
- }
237
- const writeResult = await broker.writeFlowRunWithLock(parentIssueNumber, (flowRun) => {
238
- const res = flowStageStart(flowRun, stageName);
239
- if (!res.ok) {
240
- return { flowRun, result: res.error, shouldPersist: false };
241
- }
242
- return {
243
- flowRun: res.value,
244
- result: { stage: stageName, status: res.value.stages[stageName].status },
245
- shouldPersist: true,
246
- };
247
- });
248
- if (!writeResult.ok) {
249
- return errorResponse(writeResult.code, writeResult.message);
250
- }
251
- if (!writeResult.persisted && writeResult.result && typeof writeResult.result === "object" && "code" in writeResult.result) {
252
- const err = writeResult.result;
253
- return errorResponse(err.code, err.message);
254
- }
255
- return okResponse({
256
- flowRunStatus: writeResult.flowRun.status,
257
- stage: writeResult.result,
258
- });
259
- }
260
- async function handleStageComplete(broker, parentIssueNumber, stageName) {
261
- if (!stageName) {
262
- return errorResponse("POLICY_INVALID", "stage is required for stage-complete");
263
- }
264
- const writeResult = await broker.writeFlowRunWithLock(parentIssueNumber, (flowRun) => {
265
- const res = flowStageComplete(flowRun, stageName);
266
- if (!res.ok) {
267
- return { flowRun, result: res.error, shouldPersist: false };
268
- }
269
- return {
270
- flowRun: res.value,
271
- result: { stage: stageName, status: res.value.stages[stageName].status },
272
- shouldPersist: true,
273
- };
274
- });
275
- if (!writeResult.ok) {
276
- return errorResponse(writeResult.code, writeResult.message);
277
- }
278
- if (!writeResult.persisted && writeResult.result && typeof writeResult.result === "object" && "code" in writeResult.result) {
279
- const err = writeResult.result;
280
- return errorResponse(err.code, err.message);
281
- }
282
- return okResponse({
283
- flowRunStatus: writeResult.flowRun.status,
284
- stage: writeResult.result,
285
- });
286
- }
287
- async function handleTaskStart(broker, parentIssueNumber, taskId, executionBinding, tddPolicyJson) {
288
- if (!taskId) {
289
- return errorResponse("POLICY_INVALID", "task_id is required for task-start");
290
- }
291
- if (!executionBinding) {
292
- return errorResponse("POLICY_INVALID", "execution_binding is required for task-start");
293
- }
294
- // 解析 frozen policy
295
- let tddPolicy = undefined;
296
- if (tddPolicyJson) {
297
- try {
298
- tddPolicy = JSON.parse(tddPolicyJson);
299
- }
300
- catch {
301
- return errorResponse("POLICY_INVALID", "tdd_policy_json is not valid JSON");
302
- }
303
- }
304
- const writeResult = await broker.writeFlowRunWithLock(parentIssueNumber, (flowRun) => {
305
- const res = flowTaskStart(flowRun, taskId, executionBinding, tddPolicy);
306
- if (!res.ok) {
307
- return { flowRun, result: res.error, shouldPersist: false };
308
- }
309
- return {
310
- flowRun: res.value.flowRun,
311
- result: {
312
- taskId,
313
- status: res.value.task.status,
314
- executionBinding: res.value.task.executionBinding,
315
- },
316
- shouldPersist: true,
317
- };
318
- });
319
- if (!writeResult.ok) {
320
- return errorResponse(writeResult.code, writeResult.message);
321
- }
322
- if (!writeResult.persisted && writeResult.result && typeof writeResult.result === "object" && "code" in writeResult.result) {
323
- const err = writeResult.result;
324
- return errorResponse(err.code, err.message);
325
- }
326
- return okResponse({
327
- flowRunStatus: writeResult.flowRun.status,
328
- task: writeResult.result,
329
- });
330
- }
331
- async function handleRunFinalize(broker, parentIssueNumber) {
332
- const writeResult = await broker.writeFlowRunWithLock(parentIssueNumber, (flowRun) => {
333
- const res = flowRunFinalize(flowRun);
334
- if (!res.ok) {
335
- return { flowRun, result: res.error, shouldPersist: false };
336
- }
337
- return {
338
- flowRun: res.value,
339
- result: { status: res.value.status, completedAt: res.value.completedAt },
340
- shouldPersist: true,
341
- };
342
- });
343
- if (!writeResult.ok) {
344
- return errorResponse(writeResult.code, writeResult.message);
345
- }
346
- if (!writeResult.persisted && writeResult.result && typeof writeResult.result === "object" && "code" in writeResult.result) {
347
- const err = writeResult.result;
348
- return errorResponse(err.code, err.message);
349
- }
350
- return okResponse({
351
- flowRunStatus: writeResult.flowRun.status,
352
- });
353
- }
354
176
  export function createOpencodeCabbage(packageRoot) {
355
177
  return async (ctx, _options) => {
356
178
  const sourceSkillsDir = path.join(packageRoot, "assets", "skills");
357
- const contextDir = path.join(packageRoot, "assets", "context");
358
179
  const promptsDir = path.join(packageRoot, "assets", "prompts");
359
180
  const commandsDir = path.join(packageRoot, "assets", "commands");
360
- const skillsDir = await setupSkillsDir(sourceSkillsDir, contextDir, promptsDir);
181
+ const skillsDir = await setupSkillsDir(sourceSkillsDir, promptsDir);
361
182
  const projectDir = ctx.worktree || ctx.directory;
362
183
  const v1Client = ctx.client._client;
363
184
  const goalClient = createGoalClient(ctx.serverUrl, v1Client);
364
- const goalTool = createGoalTool(goalClient, async (parentSessionID) => {
365
- // 验证绑定的 FlowRun 是否已终态
366
- const ref = await readFlowRunRef(goalClient, parentSessionID);
367
- if (!ref)
368
- return null; // 无 FlowRun 绑定,允许完成
369
- // 读取 FlowRun 状态
370
- const flowResult = await readFlowRun(ref.parentIssueNumber);
371
- if (!flowResult.ok) {
372
- return `Failed to read FlowRun #${ref.parentIssueNumber}: ${flowResult.code}`;
373
- }
374
- return checkFlowRunBlockers(flowResult.data.status);
375
- });
376
- const broker = new FlowBroker();
377
- const flowControlTool = createFlowControlTool(broker, goalClient);
185
+ const goalTool = createGoalTool(goalClient);
186
+ const sessionClient = goalClient;
187
+ const flowControlTool = createFlowControlTool({ projectDir, sessionClient });
188
+ const taskControlTool = createTaskControlTool({ projectDir, sessionClient });
189
+ const setupControlTool = createSetupControlTool({ projectDir, sessionClient });
190
+ const tddCheckpointTool = createTddCheckpointTool({ projectDir, sessionClient });
191
+ const releaseControlTool = createReleaseControlTool({ projectDir, sessionClient });
378
192
  const agentsDir = path.join(packageRoot, "assets", "agents");
379
193
  await initPrompts(packageRoot, projectDir);
380
194
  await initBootstrap();
@@ -384,14 +198,13 @@ export function createOpencodeCabbage(packageRoot) {
384
198
  tool: {
385
199
  goal: goalTool,
386
200
  flow_control: flowControlTool,
201
+ task_control: taskControlTool,
202
+ setup_control: setupControlTool,
203
+ tdd_checkpoint: tddCheckpointTool,
204
+ release_control: releaseControlTool,
387
205
  },
388
206
  config: async (rawConfig) => {
389
207
  const config = rawConfig;
390
- // ── Ambient credential 检测 ──
391
- const ambientReport = detectAmbientCredentials();
392
- if (ambientReport.hasWriteCredentials) {
393
- console.warn("[cabbage] ⚠️ 检测到可用 GitHub 写凭证,Runtime enforcement 已降级为 advisory:", ambientReport.sources.map(s => s.location).join(", "));
394
- }
395
208
  config.skills = config.skills || {};
396
209
  config.skills.paths = config.skills.paths || [];
397
210
  if (!config.skills.paths.includes(skillsDir)) {
@@ -410,6 +223,31 @@ export function createOpencodeCabbage(packageRoot) {
410
223
  };
411
224
  }
412
225
  config.agent = config.agent || {};
226
+ // 渲染 permission 占位符:`<profile-test-command>` → Profile.testCommand 首 token(§9.1)
227
+ const profile = await readProjectProfile(projectDir);
228
+ const testCommandToken = profile.testCommand?.split(" ")[0] ?? "";
229
+ const renderPermission = (perm) => {
230
+ if (!perm)
231
+ return perm;
232
+ const renderRules = (rules) => {
233
+ if (!rules)
234
+ return rules;
235
+ const out = {};
236
+ for (const [pattern, action] of Object.entries(rules)) {
237
+ if (pattern.includes("<profile-test-command>") && testCommandToken === "") {
238
+ // Profile 未配置测试命令 → 删除占位规则,避免渲染成 "*" 覆盖兜底 deny
239
+ continue;
240
+ }
241
+ out[pattern.replaceAll("<profile-test-command>", testCommandToken)] = action;
242
+ }
243
+ return out;
244
+ };
245
+ const out = { ...perm };
246
+ if (perm.bash && typeof perm.bash === "object" && !Array.isArray(perm.bash)) {
247
+ out.bash = renderRules(perm.bash);
248
+ }
249
+ return out;
250
+ };
413
251
  for (const agent of loadAgents(agentsDir)) {
414
252
  if (config.agent[agent.key])
415
253
  continue;
@@ -418,14 +256,14 @@ export function createOpencodeCabbage(packageRoot) {
418
256
  mode: agent.mode,
419
257
  color: agent.color,
420
258
  prompt: agent.prompt,
421
- tools: agent.tools ?? { read: true, bash: true, edit: true },
422
- permission: agent.permission,
259
+ permission: renderPermission(agent.permission),
423
260
  shell: {
424
- env: createIsolatedShellEnv(agent),
261
+ env: createAgentShellEnv(),
425
262
  },
426
263
  };
427
264
  }
428
265
  configureGoalTools(config);
266
+ configureLifecycleTools(config);
429
267
  },
430
268
  "experimental.chat.messages.transform": async (_input, output) => {
431
269
  if (!output.messages.length)
@@ -433,13 +271,20 @@ export function createOpencodeCabbage(packageRoot) {
433
271
  const firstUser = output.messages.find(m => m.info.role === "user");
434
272
  if (!firstUser || !firstUser.parts.length)
435
273
  return;
436
- if (firstUser.parts.some(p => p.type === "text" && p.text.includes("EXTREMELY_IMPORTANT")))
437
- return;
438
- // Only inject bootstrap for active flow: goal is active or user sent a flow command
439
- const hasGoal = await readGoal(goalClient, output.messages[0].info.sessionID).then(r => r.goal?.status === "active").catch(() => false);
440
- if (!hasGoal)
274
+ if (firstUser.parts.some(p => p.type === "text" && (p.text.includes("EXTREMELY_IMPORTANT") || p.text.includes(CONTEXT_MARKER))))
441
275
  return;
442
- firstUser.parts.unshift({ type: "text", text: getBootstrapContent() });
276
+ const sessionID = output.messages[0].info.sessionID;
277
+ const { goal, session } = await readGoal(goalClient, sessionID);
278
+ const contextBlock = await getContextBlock(projectDir);
279
+ const injection = buildFirstUserInjection({
280
+ hasGoal: goal?.status === "active",
281
+ isSubAgent: !!session?.parentID,
282
+ contextBlock,
283
+ bootstrap: getBootstrapContent(),
284
+ });
285
+ if (injection) {
286
+ firstUser.parts.unshift({ type: "text", text: injection });
287
+ }
443
288
  },
444
289
  async event({ event }) {
445
290
  const evt = event;
@@ -470,7 +315,7 @@ export function createOpencodeCabbage(packageRoot) {
470
315
  sessionID,
471
316
  parts: [{
472
317
  type: "text",
473
- text: `[auto-retry] Previous attempt failed. Try a different approach.\n\nGoal: ${goal.objective}`,
318
+ text: `[auto-retry] Previous attempt failed. Try a different approach.\n\n${formatGoal(goal)}`,
474
319
  synthetic: true,
475
320
  }],
476
321
  });
@@ -480,7 +325,7 @@ export function createOpencodeCabbage(packageRoot) {
480
325
  sessionID,
481
326
  parts: [{
482
327
  type: "text",
483
- text: `[skip] Skipping failed step. Continue with remaining work.\n\nGoal: ${goal.objective}`,
328
+ text: `[skip] Skipping failed step. Continue with remaining work.\n\n${formatGoal(goal)}`,
484
329
  synthetic: true,
485
330
  }],
486
331
  });
@@ -503,7 +348,7 @@ export function createOpencodeCabbage(packageRoot) {
503
348
  if (sessionID) {
504
349
  const { goal } = await readGoal(goalClient, sessionID);
505
350
  if (goal?.status === "complete") {
506
- await clearSessionState(projectDir);
351
+ await updateFlowSession(projectDir, goal.parentIssueNumber, { status: "completed" });
507
352
  }
508
353
  }
509
354
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/plugin/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/plugin/server.ts"],"names":[],"mappings":"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"}