@mickorz/opencode-agentic-workflow 0.4.0 → 0.5.1

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 (127) hide show
  1. package/README.md +306 -5
  2. package/dist/cli/config.d.ts +121 -0
  3. package/dist/cli/config.js +331 -0
  4. package/dist/cli/config.js.map +1 -0
  5. package/dist/cli/doctor.d.ts +5 -0
  6. package/dist/cli/doctor.js +141 -0
  7. package/dist/cli/doctor.js.map +1 -0
  8. package/dist/cli/index.d.ts +18 -0
  9. package/dist/cli/index.js +120 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/install.d.ts +19 -0
  12. package/dist/cli/install.js +135 -0
  13. package/dist/cli/install.js.map +1 -0
  14. package/dist/cli/uninstall.d.ts +16 -0
  15. package/dist/cli/uninstall.js +110 -0
  16. package/dist/cli/uninstall.js.map +1 -0
  17. package/dist/cli/update.d.ts +15 -0
  18. package/dist/cli/update.js +86 -0
  19. package/dist/cli/update.js.map +1 -0
  20. package/dist/core/index.d.ts +39 -0
  21. package/dist/core/index.js +38 -0
  22. package/dist/core/index.js.map +1 -0
  23. package/dist/observability/events.d.ts +43 -0
  24. package/dist/observability/events.js.map +1 -1
  25. package/dist/plugin/checkpoint-override.d.ts +7 -9
  26. package/dist/plugin/checkpoint-override.js +8 -14
  27. package/dist/plugin/checkpoint-override.js.map +1 -1
  28. package/dist/plugin/define-workflow.d.ts +33 -0
  29. package/dist/plugin/define-workflow.js +103 -0
  30. package/dist/plugin/define-workflow.js.map +1 -0
  31. package/dist/plugin/index.js +406 -26
  32. package/dist/plugin/index.js.map +1 -1
  33. package/dist/plugin/opencode-v2-executor.js +58 -46
  34. package/dist/plugin/opencode-v2-executor.js.map +1 -1
  35. package/dist/plugin/progress-board.d.ts +64 -0
  36. package/dist/plugin/progress-board.js +150 -0
  37. package/dist/plugin/progress-board.js.map +1 -0
  38. package/dist/plugin/progress-rpc.d.ts +390 -0
  39. package/dist/plugin/progress-rpc.js +318 -0
  40. package/dist/plugin/progress-rpc.js.map +1 -0
  41. package/dist/plugin/progress-view.d.ts +82 -0
  42. package/dist/plugin/progress-view.js +244 -0
  43. package/dist/plugin/progress-view.js.map +1 -0
  44. package/dist/plugin/run-sessions.d.ts +28 -0
  45. package/dist/plugin/run-sessions.js +46 -0
  46. package/dist/plugin/run-sessions.js.map +1 -0
  47. package/dist/plugin/tool-args.d.ts +15 -0
  48. package/dist/plugin/tool-args.js +28 -0
  49. package/dist/plugin/tool-args.js.map +1 -0
  50. package/dist/plugin/tui.d.ts +11 -4
  51. package/dist/plugin/tui.js +160 -5
  52. package/dist/plugin/tui.js.map +1 -1
  53. package/dist/plugin/workflow-control.d.ts +16 -0
  54. package/dist/plugin/workflow-control.js +85 -0
  55. package/dist/plugin/workflow-control.js.map +1 -0
  56. package/dist/plugin/workflow-schedule.d.ts +24 -0
  57. package/dist/plugin/workflow-schedule.js +97 -0
  58. package/dist/plugin/workflow-schedule.js.map +1 -0
  59. package/dist/quality/checkpoint.d.ts +5 -2
  60. package/dist/quality/checkpoint.js +11 -6
  61. package/dist/quality/checkpoint.js.map +1 -1
  62. package/dist/quality/verify.d.ts +21 -2
  63. package/dist/quality/verify.js +36 -14
  64. package/dist/quality/verify.js.map +1 -1
  65. package/dist/registry/definition.d.ts +12 -0
  66. package/dist/registry/definition.js.map +1 -1
  67. package/dist/registry/registry.d.ts +4 -0
  68. package/dist/registry/registry.js +20 -1
  69. package/dist/registry/registry.js.map +1 -1
  70. package/dist/registry/run-control.d.ts +27 -0
  71. package/dist/registry/run-control.js +51 -0
  72. package/dist/registry/run-control.js.map +1 -0
  73. package/dist/registry/runner.d.ts +29 -6
  74. package/dist/registry/runner.js +153 -35
  75. package/dist/registry/runner.js.map +1 -1
  76. package/dist/runtime/errors.d.ts +26 -0
  77. package/dist/runtime/errors.js +30 -0
  78. package/dist/runtime/errors.js.map +1 -1
  79. package/dist/runtime/executor.d.ts +22 -0
  80. package/dist/runtime/executor.js.map +1 -1
  81. package/dist/runtime/run-context.d.ts +44 -0
  82. package/dist/runtime/run-context.js +32 -0
  83. package/dist/runtime/run-context.js.map +1 -0
  84. package/dist/scheduler/cron.d.ts +29 -0
  85. package/dist/scheduler/cron.js +171 -0
  86. package/dist/scheduler/cron.js.map +1 -0
  87. package/dist/scheduler/service.d.ts +78 -0
  88. package/dist/scheduler/service.js +215 -0
  89. package/dist/scheduler/service.js.map +1 -0
  90. package/dist/scheduler/store.d.ts +26 -0
  91. package/dist/scheduler/store.js +94 -0
  92. package/dist/scheduler/store.js.map +1 -0
  93. package/dist/scheduler/types.d.ts +53 -0
  94. package/dist/scheduler/types.js +12 -0
  95. package/dist/scheduler/types.js.map +1 -0
  96. package/dist/state/journal.d.ts +23 -0
  97. package/dist/state/journal.js +2 -0
  98. package/dist/state/journal.js.map +1 -1
  99. package/dist/state/recorder.d.ts +67 -0
  100. package/dist/state/recorder.js +148 -2
  101. package/dist/state/recorder.js.map +1 -1
  102. package/dist/workflow/agent.d.ts +42 -1
  103. package/dist/workflow/agent.js +116 -6
  104. package/dist/workflow/agent.js.map +1 -1
  105. package/dist/workflow/judge-panel.d.ts +37 -0
  106. package/dist/workflow/judge-panel.js +66 -0
  107. package/dist/workflow/judge-panel.js.map +1 -0
  108. package/dist/workflow/pipeline.d.ts +21 -0
  109. package/dist/workflow/pipeline.js +71 -0
  110. package/dist/workflow/pipeline.js.map +1 -0
  111. package/dist/workflow/race.d.ts +16 -0
  112. package/dist/workflow/race.js +46 -0
  113. package/dist/workflow/race.js.map +1 -0
  114. package/dist/workflow/sequence.js +6 -0
  115. package/dist/workflow/sequence.js.map +1 -1
  116. package/dist/workflows/loader.d.ts +124 -0
  117. package/dist/workflows/loader.js +500 -0
  118. package/dist/workflows/loader.js.map +1 -0
  119. package/dist/workspace/ambient.d.ts +6 -4
  120. package/dist/workspace/ambient.js +10 -4
  121. package/dist/workspace/ambient.js.map +1 -1
  122. package/package.json +21 -6
  123. package/skills/workflow-authoring/SKILL.md +111 -0
  124. package/skills/workflow-optimize/SKILL.md +70 -0
  125. package/dist/workflows/index.d.ts +0 -19
  126. package/dist/workflows/index.js +0 -40
  127. package/dist/workflows/index.js.map +0 -1
@@ -27,19 +27,28 @@ import { withConcurrencyLimit } from "../runtime/semaphore.js";
27
27
  import { createFileTraceSink } from "../observability/trace.js";
28
28
  import { MetricsCollector, formatMetrics } from "../metrics/collector.js";
29
29
  import { WorkflowRegistry } from "../registry/registry.js";
30
- import { startWorkflow, resumeWorkflow, runWorkflowInline } from "../registry/runner.js";
30
+ import { startWorkflow, startWorkflowDetached, resumeWorkflow, runWorkflowInline, } from "../registry/runner.js";
31
31
  import { WorkflowExecutionError } from "../registry/errors.js";
32
+ import { buildWorkflowArgs } from "./tool-args.js";
33
+ import { defineWorkflow } from "./define-workflow.js";
34
+ import { SchedulerService, ScheduleSkipError } from "../scheduler/service.js";
35
+ import { anyLive } from "../registry/run-control.js";
36
+ import { scheduleToolExecute } from "./workflow-schedule.js";
37
+ import { controlStatus, controlStop } from "./workflow-control.js";
32
38
  import { FileExecutionStore } from "../state/file-store.js";
33
39
  import { reliableWorkflow } from "../workflows/reliable.js";
34
40
  import { smokeWorkflow } from "../workflows/smoke.js";
35
41
  import { artifactWorkflow } from "../workflows/artifact.js";
36
42
  import { featureDevelopmentWorkflow } from "../workflows/feature-development.js";
43
+ import { loadCustomWorkflows } from "../workflows/loader.js";
37
44
  import { GitWorktreeProvider, InPlaceWorkspaceProvider } from "../workspace/index.js";
38
45
  import { InteractiveCheckpointGate, } from "./interactive-checkpoint-gate.js";
39
- import { applyCheckpointModeOverride, parseCheckpointModeOverride, } from "./checkpoint-override.js";
40
46
  import { OpenCodeV2Executor } from "./opencode-v2-executor.js";
41
47
  import { buildPriceTable, estimateCostUSD } from "./price-table.js";
42
48
  import { PolicyCheckpointGate } from "./policy-checkpoint-gate.js";
49
+ import { bindProgressBoard } from "./progress-board.js";
50
+ import { buildCheckpointGate, parseCheckpointModeOverride } from "./checkpoint-override.js";
51
+ import { isInsideRunSession } from "./run-sessions.js";
43
52
  export default Plugin.define({
44
53
  id: "agentic-workflow",
45
54
  async setup(ctx) {
@@ -119,6 +128,45 @@ export default Plugin.define({
119
128
  .register(reliableWorkflow({ checkCommand: options.checkCommand }))
120
129
  .register(artifactWorkflow())
121
130
  .register(featureDevelopmentWorkflow({ checkCommand: options.checkCommand }));
131
+ // P4 自定义 workflow(声明式 JSON):options.workflows 路径(.json 文件
132
+ // 或目录,相对项目目录)→ 装载注册。文件级错误 warn+跳过(观测/装载
133
+ // 不能成为主链路故障源);必须在工具注册前完成(流程清单进工具描述)
134
+ const builtinIds = ["smoke", "reliable", "artifact", "feature-development"];
135
+ const projectDir = ctx.location.directory;
136
+ if (options.workflows && options.workflows.length > 0) {
137
+ const loaded = await loadCustomWorkflows(options.workflows, projectDir, builtinIds);
138
+ for (const error of loaded.errors) {
139
+ console.log(`[agentic-workflow] custom workflow file skipped: ${error}`);
140
+ }
141
+ let registered = 0;
142
+ for (const definition of loaded.definitions) {
143
+ try {
144
+ registry.register(definition);
145
+ registered += 1;
146
+ console.log(`[agentic-workflow] custom workflow registered: ${definition.id}@${definition.version} ` +
147
+ `(${(definition.stepNames ?? []).join(" -> ")})`);
148
+ }
149
+ catch (error) {
150
+ console.log(`[agentic-workflow] custom workflow rejected ${definition.id}@${definition.version}: ` +
151
+ `${error instanceof Error ? error.message : String(error)}`);
152
+ }
153
+ }
154
+ if (registered === 0 && loaded.errors.length > 0) {
155
+ console.log("[agentic-workflow] note: no custom workflows were registered; " +
156
+ "built-in workflows remain fully available");
157
+ }
158
+ }
159
+ // P0-2 workflow_define 的落盘目标:从 options.workflows 推导候选目录
160
+ // (.json/.js/.mjs/.cjs 文件条目取其父目录;其余条目视为目录本身——
161
+ // 不要求已存在,define 时 mkdir -p)。相对路径同装载器基准 = 项目目录。
162
+ const flowsDirs = [];
163
+ for (const entry of options.workflows ?? []) {
164
+ const resolved = path.isAbsolute(entry) ? entry : path.join(projectDir, entry);
165
+ const isFileEntry = /\.(json|js|mjs|cjs)$/.test(resolved);
166
+ const dir = isFileEntry ? path.dirname(resolved) : resolved;
167
+ if (!flowsDirs.includes(dir))
168
+ flowsDirs.push(dir);
169
+ }
122
170
  // P2.5 durable journal:配置 journalDir 后,run 经 startWorkflow/resumeWorkflow
123
171
  // 走持久化链路(journal 记录 workflow {id, version} + args + steps,可恢复)
124
172
  let store;
@@ -129,6 +177,41 @@ export default Plugin.define({
129
177
  store = new FileExecutionStore(journalDir);
130
178
  console.log(`[agentic-workflow] journal store: ${journalDir}`);
131
179
  }
180
+ // P2-8 TUI 进度树数据面:订阅 run.progress 事件 + 注册 snapshot/detail/
181
+ // session RPC。无条件启用——无 TUI 监听时 RPC 转发是 no-op 成本;journal
182
+ // 未配置时 board 仍实时(只是没有历史种子)。
183
+ try {
184
+ await bindProgressBoard({
185
+ rpc: ctx.rpc,
186
+ ...(store ? { store } : {}),
187
+ // Open Session 回放数据源:宿主会话消息(user 扁平 text;assistant
188
+ // 取 content 的 text part 合并;其余类型不进回放)
189
+ fetchSessionMessages: async (sessionID) => {
190
+ const messages = await ctx.session.context({ sessionID });
191
+ return messages.flatMap((message) => {
192
+ if (message.type === "user") {
193
+ const text = message.text.trim();
194
+ return text.length > 0 ? [{ type: message.type, text }] : [];
195
+ }
196
+ if (message.type === "assistant") {
197
+ const text = message.content
198
+ .filter((part) => part.type === "text")
199
+ .map((part) => part.text)
200
+ .join("\n")
201
+ .trim();
202
+ return text.length > 0 ? [{ type: message.type, text }] : [];
203
+ }
204
+ return [];
205
+ });
206
+ },
207
+ });
208
+ console.log("[agentic-workflow] progress board: live (TUI /workflow panel)");
209
+ }
210
+ catch (error) {
211
+ // 注册失败不阻断插件(RPC 域不可用等极端情况)
212
+ console.log(`[agentic-workflow] progress board disabled: ` +
213
+ `${error instanceof Error ? error.message : String(error)}`);
214
+ }
132
215
  // P2.7 workspace 隔离:GitWorktreeProvider(startDir = 项目目录,
133
216
  // 内部解析到 git 仓库根;worktree 落在仓库同级目录,不污染仓库)。
134
217
  // P3 Blocker 修复:无隔离时绑定 InPlaceWorkspaceProvider——
@@ -157,10 +240,23 @@ export default Plugin.define({
157
240
  };
158
241
  console.log(`[agentic-workflow] workspace: in-place (project dir, no isolation)`);
159
242
  }
160
- // 递归防护:workflow 运行期间,子会话里的 agent 也可能看到并调用 workflow 工具,
161
- // 形成递归 workflow;叠加并发信号量后会自饿死死锁(实测卡死)。
162
- // P0 策略:运行中直接拒绝嵌套调用,让子 agent 用自身能力直接完成任务。
163
- let workflowDepth = 0;
243
+ // 递归防护(并发 run 时代重构):原先「任一 run 在飞即拒绝一切调用」的
244
+ // 计数器同时挡掉了合法的顶层并发(P2-9 已消除 gate/workspace 单例根因)。
245
+ // 现在按调用来源判别:executor 登记的 run 会话(及其派生子会话,经
246
+ // 祖先链)内的调用 = 嵌套递归,拒绝(信号量自饿死);顶层会话放行,
247
+ // 受 maxConcurrentRuns 上限约束。
248
+ const maxConcurrentRuns = Math.max(1, options.maxConcurrentRuns ?? 3);
249
+ let activeRuns = 0;
250
+ /** 调用会话的父级(session.get 的 parentID;查询失败按无父处理) */
251
+ const parentOfSession = async (id) => {
252
+ try {
253
+ const info = await ctx.session.get({ sessionID: id });
254
+ return info?.parentID;
255
+ }
256
+ catch {
257
+ return undefined;
258
+ }
259
+ };
164
260
  ctx.tool.transform((editor) => {
165
261
  editor.add({
166
262
  name: "workflow",
@@ -175,10 +271,18 @@ export default Plugin.define({
175
271
  type: "string",
176
272
  description: "The topic to analyze (not needed when resuming)",
177
273
  },
274
+ args: {
275
+ type: "object",
276
+ description: "Flow-specific parameters declared by the flow, beyond topic - " +
277
+ "see each flow's [args: ...] hint in the description above. " +
278
+ "Pass every declared parameter as a key/value pair; missing required " +
279
+ "or wrongly-typed parameters fail the run with the exact problem listed",
280
+ },
178
281
  flow: {
179
282
  type: "string",
180
- enum: registry.listLatest().map((definition) => definition.id),
181
- description: "Workflow id, default smoke",
283
+ description: "Workflow id from the Available workflows list above, or an id " +
284
+ "just defined via workflow_define (default smoke). Unknown ids " +
285
+ "fail with the list of available ids",
182
286
  },
183
287
  resumeRunId: {
184
288
  type: "string",
@@ -192,6 +296,15 @@ export default Plugin.define({
192
296
  "Pass auto-approve for headless/opencode-run executions unless the user " +
193
297
  "explicitly wants auto-reject. Ignored for flows without a checkpoint step",
194
298
  },
299
+ background: {
300
+ type: "boolean",
301
+ description: "Start the run in the background and return the runId immediately " +
302
+ "(requires journalDir; ignored when resuming). Poll it with " +
303
+ "workflow_control action=status until completed/failed and read the " +
304
+ "output there. Multiple top-level runs may run concurrently " +
305
+ "(up to maxConcurrentRuns, default 3); calls from inside a running " +
306
+ "workflow are rejected",
307
+ },
195
308
  },
196
309
  },
197
310
  // V2 强校验:Tool.Result 使用 output 字段必须声明 output schema,
@@ -199,18 +312,74 @@ export default Plugin.define({
199
312
  output: {
200
313
  type: "string",
201
314
  },
202
- async execute(input) {
315
+ async execute(input, context) {
203
316
  const parsed = input ?? {};
204
- if (workflowDepth > 0) {
317
+ // 递归防护:来自 run 内部(executor 登记会话自身或其祖先)→ 拒绝;
318
+ // 会话身份缺失(宿主异常)时保守退回旧单飞语义
319
+ const callerSessionID = context?.sessionID;
320
+ const nested = callerSessionID === undefined
321
+ ? activeRuns > 0
322
+ : await isInsideRunSession(callerSessionID, parentOfSession);
323
+ if (nested) {
205
324
  return {
206
325
  output: "[agentic-workflow] nested workflow calls are not allowed: " +
207
- "another workflow is running. Complete the task directly yourself.",
326
+ "this call comes from inside a running workflow. Complete the task directly yourself. " +
327
+ "(Workflow authors who need composition should use a subflow step " +
328
+ "or ctx.subflow() inside the workflow definition instead.)",
208
329
  };
209
330
  }
210
- workflowDepth += 1;
211
- // P3 Blocker 修复:调用级 checkpoint 覆盖(守护进程宿主下
212
- // init 配置可能来自别的项目——显式参数免疫单例投毒)
213
- const gateRestore = applyCheckpointModeOverride(parseCheckpointModeOverride(parsed.checkpointMode));
331
+ // 并发上限:顶层 run 并行数(默认 3);超出给可读失败与处置提示
332
+ if (activeRuns >= maxConcurrentRuns) {
333
+ return {
334
+ output: `[agentic-workflow] concurrency limit reached: ${activeRuns} top-level ` +
335
+ `runs are already live (max ${maxConcurrentRuns}). Poll them with ` +
336
+ "workflow_control action=status, or stop one with action=stop, then retry",
337
+ };
338
+ }
339
+ activeRuns += 1;
340
+ // P3 Blocker 修复 + P2-9:调用级 checkpoint 覆盖——为本次 run 构建
341
+ // 策略门经 RunLaunchOptions.gate 注入(run 级,无换装/恢复竞态;
342
+ // 守护进程宿主下 init 配置可能来自别的项目,显式参数免疫)
343
+ const overrideGate = buildCheckpointGate(parseCheckpointModeOverride(parsed.checkpointMode));
344
+ const gateOptions = overrideGate ? { gate: overrideGate } : {};
345
+ const workflowId = typeof parsed.flow === "string" && parsed.flow.length > 0
346
+ ? parsed.flow
347
+ : "smoke";
348
+ // P0-1:args 透传——topic 恒在顶层,其余 flow 声明参数经 args 对象
349
+ // 合并转发(引擎按 argsSchema 校验,required/类型不符即报具体问题)
350
+ const workflowArgs = buildWorkflowArgs(parsed.topic, parsed.args);
351
+ // P1-3 后台分支:depth/gate 生命周期移交给 completion(外层 try/finally
352
+ // 的立即恢复会提前放锁)。要求 journalDir;resume 一律走阻塞路径。
353
+ if (parsed.background === true &&
354
+ store &&
355
+ !(typeof parsed.resumeRunId === "string" && parsed.resumeRunId.length > 0)) {
356
+ try {
357
+ const detached = await startWorkflowDetached(registry, store, workflowId, workflowArgs, { workspace: workspaceBinding, ...gateOptions });
358
+ detached.completion
359
+ .then((result) => console.log(`[agentic-workflow] background run ${result.runId} completed (${result.workflow.id})`))
360
+ .catch((error) => console.log(`[agentic-workflow] background run ${detached.runId} ended: ` +
361
+ `${error instanceof Error ? error.message : String(error)}`))
362
+ .finally(() => {
363
+ activeRuns -= 1;
364
+ });
365
+ return {
366
+ output: `[background] ${detached.workflow.id}@${detached.workflow.version} ` +
367
+ `runId=${detached.runId} started\n` +
368
+ `poll: workflow_control action=status runId=${detached.runId} ` +
369
+ "(status transitions to completed/failed/aborted; detail includes the output once completed)\n" +
370
+ "stop: workflow_control action=stop runId=" +
371
+ detached.runId +
372
+ " (cooperative - takes effect at the next step boundary)",
373
+ };
374
+ }
375
+ catch (error) {
376
+ activeRuns -= 1;
377
+ const message = error instanceof Error ? error.message : String(error);
378
+ return {
379
+ output: `[agentic-workflow] background start failed: ${message}`,
380
+ };
381
+ }
382
+ }
214
383
  try {
215
384
  // resume 分支:journal -> registry 精确版本解析 -> 续跑
216
385
  if (typeof parsed.resumeRunId === "string" && parsed.resumeRunId.length > 0) {
@@ -221,28 +390,25 @@ export default Plugin.define({
221
390
  }
222
391
  const resumed = await resumeWorkflow(registry, store, parsed.resumeRunId, {
223
392
  workspace: workspaceBinding,
393
+ ...gateOptions,
224
394
  });
225
395
  return {
226
396
  output: `[resumed ${resumed.workflow.id}@${resumed.workflow.version} ` +
227
397
  `runId=${resumed.runId}]\n${resumed.output}`,
228
398
  };
229
399
  }
230
- const workflowId = typeof parsed.flow === "string" && parsed.flow.length > 0
231
- ? parsed.flow
232
- : "smoke";
233
400
  if (store) {
234
- const started = await startWorkflow(registry, store, workflowId, {
235
- topic: parsed.topic,
236
- }, { workspace: workspaceBinding });
401
+ const started = await startWorkflow(registry, store, workflowId, workflowArgs, {
402
+ workspace: workspaceBinding,
403
+ ...gateOptions,
404
+ });
237
405
  return {
238
406
  output: `[${started.workflow.id}@${started.workflow.version} ` +
239
407
  `runId=${started.runId}]\n${started.output}`,
240
408
  };
241
409
  }
242
410
  // 未配置 journalDir:直跑(不持久化、不可恢复)
243
- const inline = await runWorkflowInline(registry, workflowId, {
244
- topic: parsed.topic,
245
- });
411
+ const inline = await runWorkflowInline(registry, workflowId, workflowArgs);
246
412
  return { output: inline.output };
247
413
  }
248
414
  catch (error) {
@@ -257,8 +423,132 @@ export default Plugin.define({
257
423
  };
258
424
  }
259
425
  finally {
260
- workflowDepth -= 1;
261
- gateRestore?.();
426
+ activeRuns -= 1;
427
+ }
428
+ },
429
+ });
430
+ // P1-3 run 控制工具:status(全量列表/单 run 详情)+ stop(协作式取消/
431
+ // 孤儿收口)。journal 是唯一事实源;未配置 journalDir 时明确报错。
432
+ editor.add({
433
+ name: "workflow_control",
434
+ description: "Inspect and control workflow runs (requires the journalDir plugin option):\n" +
435
+ "- action=status: without runId lists all runs (newest first); with runId " +
436
+ "shows one run's detail - step statuses, args, failure reason, and the " +
437
+ "final output once completed. Use this to poll background runs.\n" +
438
+ "- action=stop: request a cooperative stop of a running run - it takes " +
439
+ "effect at the next step boundary (in-flight agent calls are not killed) " +
440
+ "and the journal ends as aborted (distinct from failed; aborted runs can " +
441
+ "be resumed). Also finalizes orphaned runs left 'running' by a restart.",
442
+ input: {
443
+ type: "object",
444
+ properties: {
445
+ action: {
446
+ type: "string",
447
+ enum: ["status", "stop"],
448
+ description: "status = inspect, stop = cooperative cancel",
449
+ },
450
+ runId: {
451
+ type: "string",
452
+ description: "Run id (from the workflow tool result or a status listing)",
453
+ },
454
+ },
455
+ required: ["action"],
456
+ },
457
+ output: {
458
+ type: "string",
459
+ },
460
+ async execute(input) {
461
+ const parsed = input ?? {};
462
+ if (!store) {
463
+ return {
464
+ output: "[agentic-workflow] workflow_control requires the journalDir plugin option to be configured",
465
+ };
466
+ }
467
+ const action = parsed.action === "stop" ? "stop" : "status";
468
+ const runId = typeof parsed.runId === "string" ? parsed.runId : undefined;
469
+ if (action === "stop" && (!runId || runId.length === 0)) {
470
+ return { output: "[agentic-workflow] stop requires a runId" };
471
+ }
472
+ try {
473
+ const output = action === "stop" ? await controlStop(store, runId) : await controlStatus(store, runId);
474
+ return { output };
475
+ }
476
+ catch (error) {
477
+ const message = error instanceof Error ? error.message : String(error);
478
+ return { output: `[agentic-workflow] workflow_control failed: ${message}` };
479
+ }
480
+ },
481
+ });
482
+ // P0-2 workflow_define 工具:主 agent 对话中直接定义声明式流程——
483
+ // 校验→注册→落盘,无需人工编辑文件(自然语言 → JSON 生成链路的落点)
484
+ editor.add({
485
+ name: "workflow_define",
486
+ description: "Define a custom workflow as a declarative JSON object - validated, " +
487
+ "persisted to the configured flows directory, and registered " +
488
+ "IMMEDIATELY (callable via the workflow tool right away, auto-loaded " +
489
+ "on every future start). Use this when the user asks for a new " +
490
+ "workflow/pipeline instead of editing files by hand.\n" +
491
+ "Format (all keys optional except id and steps):\n" +
492
+ '{ id: "kebab-case", version?: "1.0.0", description?: string, ' +
493
+ "args?: JSON-Schema (default: only topic), steps: [...], output?: template }\n" +
494
+ "Each step = { name: kebab-case, <exactly one step key> }:\n" +
495
+ '- agent: prompt string. ALWAYS append the recursion guard sentence ' +
496
+ "禁止调用 workflow / workflow_metrics 工具. Templates {{topic}}, " +
497
+ "{{args.x}}, earlier {{steps.<name>}} are available\n" +
498
+ "- checkpoint: approval-gate message template\n" +
499
+ "- verify: { artifact: \"{{steps.<name>}}\", criteria?: string } semantic review\n" +
500
+ "- fileExists: relative path assertion (workspace root)\n" +
501
+ "- subflow: \"flow-id\" to nest another registered workflow as a step " +
502
+ "(optional args: object of primitives/templates; requires journalDir; " +
503
+ "max nesting depth 3; the subflow output feeds {{steps.<name>}})\n" +
504
+ "- pipeline: per-item prompt template ({{item}} = entry; keep the " +
505
+ "recursion guard sentence) + items: non-empty array of templates; " +
506
+ "optional outputAs/onFailure(\"fail-fast\"|\"continue\")/model/timeoutMs/" +
507
+ "retries; results = array aligned with items (JSON string in " +
508
+ "{{steps.<name>}}); whole step is one resume unit\n" +
509
+ "- race: array of >=2 prompt templates, first success wins (optional " +
510
+ "outputAs); all-fail = step failure\n" +
511
+ "Rules: unknown template variable = step failure; changing steps " +
512
+ "requires bumping version; built-in ids (smoke/reliable/artifact/" +
513
+ "feature-development) are reserved.",
514
+ input: {
515
+ type: "object",
516
+ properties: {
517
+ workflow: {
518
+ type: "object",
519
+ description: "The declarative workflow JSON (see format above)",
520
+ },
521
+ dir: {
522
+ type: "string",
523
+ description: "Optional target directory for the .json file (default: the " +
524
+ "first configured flows directory)",
525
+ },
526
+ },
527
+ required: ["workflow"],
528
+ },
529
+ output: {
530
+ type: "string",
531
+ },
532
+ async execute(input) {
533
+ const parsed = input ?? {};
534
+ const dir = typeof parsed.dir === "string" && parsed.dir.length > 0
535
+ ? path.isAbsolute(parsed.dir)
536
+ ? parsed.dir
537
+ : path.join(projectDir, parsed.dir)
538
+ : undefined;
539
+ try {
540
+ const outcome = await defineWorkflow({
541
+ registry,
542
+ reservedIds: builtinIds,
543
+ raw: parsed.workflow,
544
+ flowsDirs,
545
+ dir,
546
+ });
547
+ return { output: outcome.message };
548
+ }
549
+ catch (error) {
550
+ const message = error instanceof Error ? error.message : String(error);
551
+ return { output: `[agentic-workflow] workflow_define failed: ${message}` };
262
552
  }
263
553
  },
264
554
  });
@@ -290,6 +580,96 @@ export default Plugin.define({
290
580
  return { output };
291
581
  },
292
582
  });
583
+ // P2-7 定时任务子系统(可选;schedulesDir + journalDir 同时配置启用)。
584
+ // 调度器随宿主进程存活(timer unref 不阻止退出);停机错过的 slot
585
+ // 重启后合并为最近一个补跑;scheduled run 无人值守 -> 强制
586
+ // auto-approve 策略门(run 落定后恢复原门);单飞冲突(anyLive,
587
+ // 含 inline run)-> 该 slot 记录 skipped(是跳过不是延迟)。
588
+ if (options.schedulesDir) {
589
+ if (!store) {
590
+ console.log("[agentic-workflow] scheduler disabled: schedulesDir requires journalDir " +
591
+ "(scheduled runs go through the journal-persisted path)");
592
+ }
593
+ else {
594
+ const journalStore = store;
595
+ const schedulesDir = path.isAbsolute(options.schedulesDir)
596
+ ? options.schedulesDir
597
+ : path.join(projectDir, options.schedulesDir);
598
+ const scheduler = new SchedulerService({
599
+ dir: schedulesDir,
600
+ flowExists: (flow) => registry.get(flow) !== undefined,
601
+ knownFlows: () => registry.ids(),
602
+ trigger: async (schedule) => {
603
+ if (anyLive()) {
604
+ throw new ScheduleSkipError("another workflow run is live in this process (single-flight)");
605
+ }
606
+ // 无人值守:P2-9 起经 RunLaunchOptions.gate 给本次 run 注入
607
+ // auto-approve 策略门(run 级,无换装/恢复竞态)
608
+ const detached = await startWorkflowDetached(registry, journalStore, schedule.flow, schedule.args ?? {}, { gate: new PolicyCheckpointGate("auto-approve") });
609
+ // 终态映射:completion 成功 -> success;失败/中止 -> journal 权威状态
610
+ const completion = detached.completion.then(() => "success", async () => {
611
+ const run = await journalStore.getRun(detached.runId);
612
+ return run?.status === "aborted" ? "aborted" : "failed";
613
+ });
614
+ return { runId: detached.runId, completion };
615
+ },
616
+ });
617
+ scheduler.start();
618
+ editor.add({
619
+ name: "workflow_schedule",
620
+ description: "Manage scheduled workflow runs (requires the schedulesDir AND journalDir " +
621
+ "plugin options). The scheduler lives inside this opencode process - " +
622
+ "schedules only fire while the process runs; slots missed while it was " +
623
+ "down are coalesced into ONE catch-up run (the latest missed slot) on " +
624
+ "restart. Cron supports exactly four modes (local timezone):\n" +
625
+ " * * * * * (every minute) or */n * * * * (every n minutes, n 1-59)\n" +
626
+ " m * * * * (every hour at minute m)\n" +
627
+ " m h * * * (daily at h:m)\n" +
628
+ " m h * * W (weekly; W = 0-6 or comma list, 0=Sunday)\n" +
629
+ "Actions:\n" +
630
+ "- create: needs id (kebab-case), flow, cron; optional name, args " +
631
+ "{topic, ...} (validated against the flow schema at fire time), " +
632
+ "enabled (default true). Cursor baselines to creation time - earlier " +
633
+ "slots never fire; use runNow to fire immediately. Fires the latest " +
634
+ "registered version at fire time.\n" +
635
+ "- list / get(id) / delete(id): views include next/last run; delete also " +
636
+ "removes cursor and run history\n" +
637
+ "- runNow(id): manual trigger regardless of cron/cursor\n" +
638
+ "- enable(id) / disable(id)\n" +
639
+ "Scheduled runs are unattended: checkpoints auto-approve and no worktree " +
640
+ "isolation. If another run is live at fire time the slot is SKIPPED " +
641
+ "(recorded as skipped, not delayed).",
642
+ input: {
643
+ type: "object",
644
+ properties: {
645
+ action: {
646
+ type: "string",
647
+ enum: ["create", "list", "get", "delete", "runNow", "enable", "disable"],
648
+ description: "create/list/get/delete/runNow/enable/disable",
649
+ },
650
+ id: { type: "string", description: "schedule id (kebab-case)" },
651
+ flow: { type: "string", description: "workflow id (create only)" },
652
+ cron: { type: "string", description: "four-mode cron subset (create only)" },
653
+ name: { type: "string", description: "display name (create only)" },
654
+ args: {
655
+ type: "object",
656
+ description: "workflow args incl. topic, passed at fire time (create only)",
657
+ },
658
+ enabled: { type: "boolean", description: "initial enabled state (create only)" },
659
+ },
660
+ required: ["action"],
661
+ },
662
+ output: {
663
+ type: "string",
664
+ },
665
+ async execute(input) {
666
+ return {
667
+ output: await scheduleToolExecute(scheduler, (input ?? {})),
668
+ };
669
+ },
670
+ });
671
+ }
672
+ }
293
673
  });
294
674
  },
295
675
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}