@mickorz/opencode-agentic-workflow 0.3.2 → 0.5.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 +306 -5
- package/dist/cli/config.d.ts +121 -0
- package/dist/cli/config.js +331 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/doctor.d.ts +5 -0
- package/dist/cli/doctor.js +141 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/index.d.ts +18 -0
- package/dist/cli/index.js +120 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/install.d.ts +19 -0
- package/dist/cli/install.js +135 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/uninstall.d.ts +16 -0
- package/dist/cli/uninstall.js +110 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/update.d.ts +15 -0
- package/dist/cli/update.js +86 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/core/index.d.ts +39 -0
- package/dist/core/index.js +38 -0
- package/dist/core/index.js.map +1 -0
- package/dist/observability/events.d.ts +43 -0
- package/dist/observability/events.js.map +1 -1
- package/dist/plugin/checkpoint-override.d.ts +26 -0
- package/dist/plugin/checkpoint-override.js +43 -0
- package/dist/plugin/checkpoint-override.js.map +1 -0
- package/dist/plugin/define-workflow.d.ts +33 -0
- package/dist/plugin/define-workflow.js +103 -0
- package/dist/plugin/define-workflow.js.map +1 -0
- package/dist/plugin/index.js +426 -23
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/opencode-v2-executor.js +58 -46
- package/dist/plugin/opencode-v2-executor.js.map +1 -1
- package/dist/plugin/progress-board.d.ts +64 -0
- package/dist/plugin/progress-board.js +150 -0
- package/dist/plugin/progress-board.js.map +1 -0
- package/dist/plugin/progress-rpc.d.ts +390 -0
- package/dist/plugin/progress-rpc.js +318 -0
- package/dist/plugin/progress-rpc.js.map +1 -0
- package/dist/plugin/progress-view.d.ts +82 -0
- package/dist/plugin/progress-view.js +244 -0
- package/dist/plugin/progress-view.js.map +1 -0
- package/dist/plugin/run-sessions.d.ts +28 -0
- package/dist/plugin/run-sessions.js +46 -0
- package/dist/plugin/run-sessions.js.map +1 -0
- package/dist/plugin/tool-args.d.ts +15 -0
- package/dist/plugin/tool-args.js +28 -0
- package/dist/plugin/tool-args.js.map +1 -0
- package/dist/plugin/tui.d.ts +11 -4
- package/dist/plugin/tui.js +149 -5
- package/dist/plugin/tui.js.map +1 -1
- package/dist/plugin/workflow-control.d.ts +16 -0
- package/dist/plugin/workflow-control.js +85 -0
- package/dist/plugin/workflow-control.js.map +1 -0
- package/dist/plugin/workflow-schedule.d.ts +24 -0
- package/dist/plugin/workflow-schedule.js +97 -0
- package/dist/plugin/workflow-schedule.js.map +1 -0
- package/dist/quality/checkpoint.d.ts +7 -2
- package/dist/quality/checkpoint.js +13 -4
- package/dist/quality/checkpoint.js.map +1 -1
- package/dist/quality/verify.d.ts +21 -2
- package/dist/quality/verify.js +36 -14
- package/dist/quality/verify.js.map +1 -1
- package/dist/registry/definition.d.ts +12 -0
- package/dist/registry/definition.js.map +1 -1
- package/dist/registry/registry.d.ts +4 -0
- package/dist/registry/registry.js +20 -1
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/run-control.d.ts +27 -0
- package/dist/registry/run-control.js +51 -0
- package/dist/registry/run-control.js.map +1 -0
- package/dist/registry/runner.d.ts +29 -6
- package/dist/registry/runner.js +153 -35
- package/dist/registry/runner.js.map +1 -1
- package/dist/runtime/errors.d.ts +26 -0
- package/dist/runtime/errors.js +30 -0
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/executor.d.ts +22 -0
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/run-context.d.ts +44 -0
- package/dist/runtime/run-context.js +32 -0
- package/dist/runtime/run-context.js.map +1 -0
- package/dist/scheduler/cron.d.ts +29 -0
- package/dist/scheduler/cron.js +171 -0
- package/dist/scheduler/cron.js.map +1 -0
- package/dist/scheduler/service.d.ts +78 -0
- package/dist/scheduler/service.js +210 -0
- package/dist/scheduler/service.js.map +1 -0
- package/dist/scheduler/store.d.ts +26 -0
- package/dist/scheduler/store.js +94 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/types.d.ts +53 -0
- package/dist/scheduler/types.js +12 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/state/journal.d.ts +23 -0
- package/dist/state/journal.js +2 -0
- package/dist/state/journal.js.map +1 -1
- package/dist/state/recorder.d.ts +67 -0
- package/dist/state/recorder.js +148 -2
- package/dist/state/recorder.js.map +1 -1
- package/dist/workflow/agent.d.ts +42 -1
- package/dist/workflow/agent.js +116 -6
- package/dist/workflow/agent.js.map +1 -1
- package/dist/workflow/judge-panel.d.ts +37 -0
- package/dist/workflow/judge-panel.js +66 -0
- package/dist/workflow/judge-panel.js.map +1 -0
- package/dist/workflow/pipeline.d.ts +21 -0
- package/dist/workflow/pipeline.js +71 -0
- package/dist/workflow/pipeline.js.map +1 -0
- package/dist/workflow/race.d.ts +16 -0
- package/dist/workflow/race.js +46 -0
- package/dist/workflow/race.js.map +1 -0
- package/dist/workflow/sequence.js +6 -0
- package/dist/workflow/sequence.js.map +1 -1
- package/dist/workflows/loader.d.ts +124 -0
- package/dist/workflows/loader.js +500 -0
- package/dist/workflows/loader.js.map +1 -0
- package/dist/workspace/ambient.d.ts +6 -4
- package/dist/workspace/ambient.js +10 -4
- package/dist/workspace/ambient.js.map +1 -1
- package/dist/workspace/in-place.d.ts +26 -0
- package/dist/workspace/in-place.js +48 -0
- package/dist/workspace/in-place.js.map +1 -0
- package/dist/workspace/index.d.ts +1 -0
- package/dist/workspace/index.js +1 -0
- package/dist/workspace/index.js.map +1 -1
- package/package.json +16 -6
- package/skills/workflow-authoring/SKILL.md +111 -0
- package/skills/workflow-optimize/SKILL.md +70 -0
- package/dist/workflows/index.d.ts +0 -19
- package/dist/workflows/index.js +0 -40
- package/dist/workflows/index.js.map +0 -1
package/dist/plugin/index.js
CHANGED
|
@@ -27,18 +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";
|
|
37
|
-
import {
|
|
43
|
+
import { loadCustomWorkflows } from "../workflows/loader.js";
|
|
44
|
+
import { GitWorktreeProvider, InPlaceWorkspaceProvider } from "../workspace/index.js";
|
|
38
45
|
import { InteractiveCheckpointGate, } from "./interactive-checkpoint-gate.js";
|
|
39
46
|
import { OpenCodeV2Executor } from "./opencode-v2-executor.js";
|
|
40
47
|
import { buildPriceTable, estimateCostUSD } from "./price-table.js";
|
|
41
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";
|
|
42
52
|
export default Plugin.define({
|
|
43
53
|
id: "agentic-workflow",
|
|
44
54
|
async setup(ctx) {
|
|
@@ -118,6 +128,45 @@ export default Plugin.define({
|
|
|
118
128
|
.register(reliableWorkflow({ checkCommand: options.checkCommand }))
|
|
119
129
|
.register(artifactWorkflow())
|
|
120
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
|
+
}
|
|
121
170
|
// P2.5 durable journal:配置 journalDir 后,run 经 startWorkflow/resumeWorkflow
|
|
122
171
|
// 走持久化链路(journal 记录 workflow {id, version} + args + steps,可恢复)
|
|
123
172
|
let store;
|
|
@@ -128,8 +177,47 @@ export default Plugin.define({
|
|
|
128
177
|
store = new FileExecutionStore(journalDir);
|
|
129
178
|
console.log(`[agentic-workflow] journal store: ${journalDir}`);
|
|
130
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
|
+
}
|
|
131
215
|
// P2.7 workspace 隔离:GitWorktreeProvider(startDir = 项目目录,
|
|
132
|
-
// 内部解析到 git 仓库根;worktree
|
|
216
|
+
// 内部解析到 git 仓库根;worktree 落在仓库同级目录,不污染仓库)。
|
|
217
|
+
// P3 Blocker 修复:无隔离时绑定 InPlaceWorkspaceProvider——
|
|
218
|
+
// workspaceRoot 必须解析到项目目录;process.cwd() 在托管进程里
|
|
219
|
+
// 不是项目目录(长驻 server 场景实测为 HOME),artifact/reliable
|
|
220
|
+
// 等流程会「文件写对位置、check 查错位置」假失败。
|
|
133
221
|
let workspaceBinding;
|
|
134
222
|
if (options.isolation?.mode === "git-worktree") {
|
|
135
223
|
const dir = options.isolation.dir
|
|
@@ -145,10 +233,30 @@ export default Plugin.define({
|
|
|
145
233
|
console.log(`[agentic-workflow] workspace isolation: git-worktree ` +
|
|
146
234
|
`(cleanup=${options.isolation.cleanup ?? "on-success"}${dir ? `, dir=${dir}` : ""})`);
|
|
147
235
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
236
|
+
else {
|
|
237
|
+
workspaceBinding = {
|
|
238
|
+
provider: new InPlaceWorkspaceProvider({ startDir: ctx.location.directory }),
|
|
239
|
+
cleanup: "never",
|
|
240
|
+
};
|
|
241
|
+
console.log(`[agentic-workflow] workspace: in-place (project dir, no isolation)`);
|
|
242
|
+
}
|
|
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
|
+
};
|
|
152
260
|
ctx.tool.transform((editor) => {
|
|
153
261
|
editor.add({
|
|
154
262
|
name: "workflow",
|
|
@@ -163,16 +271,40 @@ export default Plugin.define({
|
|
|
163
271
|
type: "string",
|
|
164
272
|
description: "The topic to analyze (not needed when resuming)",
|
|
165
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
|
+
},
|
|
166
281
|
flow: {
|
|
167
282
|
type: "string",
|
|
168
|
-
|
|
169
|
-
|
|
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",
|
|
170
286
|
},
|
|
171
287
|
resumeRunId: {
|
|
172
288
|
type: "string",
|
|
173
289
|
description: "Resume a previous durable run (from journal); overrides flow/topic. " +
|
|
174
290
|
"Use the runId reported by a failed workflow call",
|
|
175
291
|
},
|
|
292
|
+
checkpointMode: {
|
|
293
|
+
type: "string",
|
|
294
|
+
enum: ["auto-approve", "auto-reject"],
|
|
295
|
+
description: "Checkpoint gate mode for THIS invocation, overriding plugin config. " +
|
|
296
|
+
"Pass auto-approve for headless/opencode-run executions unless the user " +
|
|
297
|
+
"explicitly wants auto-reject. Ignored for flows without a checkpoint step",
|
|
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
|
+
},
|
|
176
308
|
},
|
|
177
309
|
},
|
|
178
310
|
// V2 强校验:Tool.Result 使用 output 字段必须声明 output schema,
|
|
@@ -180,15 +312,74 @@ export default Plugin.define({
|
|
|
180
312
|
output: {
|
|
181
313
|
type: "string",
|
|
182
314
|
},
|
|
183
|
-
async execute(input) {
|
|
315
|
+
async execute(input, context) {
|
|
184
316
|
const parsed = input ?? {};
|
|
185
|
-
|
|
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) {
|
|
186
324
|
return {
|
|
187
325
|
output: "[agentic-workflow] nested workflow calls are not allowed: " +
|
|
188
|
-
"
|
|
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.)",
|
|
189
329
|
};
|
|
190
330
|
}
|
|
191
|
-
|
|
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
|
+
}
|
|
192
383
|
try {
|
|
193
384
|
// resume 分支:journal -> registry 精确版本解析 -> 续跑
|
|
194
385
|
if (typeof parsed.resumeRunId === "string" && parsed.resumeRunId.length > 0) {
|
|
@@ -199,28 +390,25 @@ export default Plugin.define({
|
|
|
199
390
|
}
|
|
200
391
|
const resumed = await resumeWorkflow(registry, store, parsed.resumeRunId, {
|
|
201
392
|
workspace: workspaceBinding,
|
|
393
|
+
...gateOptions,
|
|
202
394
|
});
|
|
203
395
|
return {
|
|
204
396
|
output: `[resumed ${resumed.workflow.id}@${resumed.workflow.version} ` +
|
|
205
397
|
`runId=${resumed.runId}]\n${resumed.output}`,
|
|
206
398
|
};
|
|
207
399
|
}
|
|
208
|
-
const workflowId = typeof parsed.flow === "string" && parsed.flow.length > 0
|
|
209
|
-
? parsed.flow
|
|
210
|
-
: "smoke";
|
|
211
400
|
if (store) {
|
|
212
|
-
const started = await startWorkflow(registry, store, workflowId, {
|
|
213
|
-
|
|
214
|
-
|
|
401
|
+
const started = await startWorkflow(registry, store, workflowId, workflowArgs, {
|
|
402
|
+
workspace: workspaceBinding,
|
|
403
|
+
...gateOptions,
|
|
404
|
+
});
|
|
215
405
|
return {
|
|
216
406
|
output: `[${started.workflow.id}@${started.workflow.version} ` +
|
|
217
407
|
`runId=${started.runId}]\n${started.output}`,
|
|
218
408
|
};
|
|
219
409
|
}
|
|
220
410
|
// 未配置 journalDir:直跑(不持久化、不可恢复)
|
|
221
|
-
const inline = await runWorkflowInline(registry, workflowId,
|
|
222
|
-
topic: parsed.topic,
|
|
223
|
-
});
|
|
411
|
+
const inline = await runWorkflowInline(registry, workflowId, workflowArgs);
|
|
224
412
|
return { output: inline.output };
|
|
225
413
|
}
|
|
226
414
|
catch (error) {
|
|
@@ -235,7 +423,132 @@ export default Plugin.define({
|
|
|
235
423
|
};
|
|
236
424
|
}
|
|
237
425
|
finally {
|
|
238
|
-
|
|
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}` };
|
|
239
552
|
}
|
|
240
553
|
},
|
|
241
554
|
});
|
|
@@ -267,6 +580,96 @@ export default Plugin.define({
|
|
|
267
580
|
return { output };
|
|
268
581
|
},
|
|
269
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
|
+
}
|
|
270
673
|
});
|
|
271
674
|
},
|
|
272
675
|
});
|
package/dist/plugin/index.js.map
CHANGED
|
@@ -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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"}
|