@mickorz/opencode-agentic-workflow 0.7.1 → 0.8.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 +36 -1
- package/dist/state/recorder.d.ts +7 -0
- package/dist/state/recorder.js +21 -0
- package/dist/state/recorder.js.map +1 -1
- package/dist/workflows/legacy-script.d.ts +73 -0
- package/dist/workflows/legacy-script.js +469 -0
- package/dist/workflows/legacy-script.js.map +1 -0
- package/dist/workflows/loader.d.ts +4 -1
- package/dist/workflows/loader.js +66 -16
- package/dist/workflows/loader.js.map +1 -1
- package/package.json +1 -1
- package/skills/workflow-authoring/SKILL.md +49 -3
package/README.md
CHANGED
|
@@ -605,12 +605,47 @@ export default defineWorkflow({
|
|
|
605
605
|
resume / 版本解析 / metrics / 面板详情与 Open Session 回放全部一致
|
|
606
606
|
(代码流程的 sessionIDs 同样落盘)
|
|
607
607
|
- **journal 契约**:编排步骤统一走 `ctx.runSteps(steps, { stepNames })`——
|
|
608
|
-
手动 `await` 编排不会进 journal,resume
|
|
608
|
+
手动 `await` 编排不会进 journal,resume 无从谈起(**v1 脚本例外**:叶子
|
|
609
|
+
调用动态 journal,见下节)
|
|
609
610
|
- **形态约定**:模块 `export default`(或具名 `definition`)一个
|
|
610
611
|
`defineWorkflow({...})` 结果;`id` 唯一且不撞内置(smoke/reliable/
|
|
611
612
|
artifact/feature-development),结构变更必须升 `version`
|
|
612
613
|
- TS 用户:先 `tsc` 出 `.js`(装载器只认 `.js/.mjs/.cjs`,不内嵌 TS 编译)
|
|
613
614
|
|
|
615
|
+
### v1 脚本(legacy)直接装载(v0.8.0)
|
|
616
|
+
|
|
617
|
+
[opencode-dynamic-workflows](https://www.npmjs.com/package/@mickorz/opencode-dynamic-workflows)
|
|
618
|
+
(v1)时代的脚本体**原样放 flows/ 目录即可运行,不改写、不迁移**。识别
|
|
619
|
+
条件:文件含 `export const meta = {...}` 且不含 `defineWorkflow`:
|
|
620
|
+
|
|
621
|
+
```js
|
|
622
|
+
// flows/smoke-test.js —— v1 脚本原样
|
|
623
|
+
export const meta = { name: 'smoke_test', description: '最小冒烟:2 个 agent 并行' }
|
|
624
|
+
|
|
625
|
+
phase('Scan')
|
|
626
|
+
const info = await agent('列出当前目录下的文件')
|
|
627
|
+
|
|
628
|
+
phase('Echo')
|
|
629
|
+
const results = await parallel([
|
|
630
|
+
() => agent('说明工作流编排'),
|
|
631
|
+
() => agent('说明确定性重放'),
|
|
632
|
+
])
|
|
633
|
+
return { info, results }
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
19 个 v1 全局(`agent/parallel/pipeline/sequence/fallback/race/check/
|
|
637
|
+
fileExists/commandSuccess/phase/log/args/setConcurrency/verify/judgePanel/
|
|
638
|
+
retry/checkpoint/workflow/console`)由适配层绑定到 v2 原语:`meta.name`
|
|
639
|
+
即 flow id;agent/checkpoint/subflow 叶子调用动态进 journal(TUI 面板
|
|
640
|
+
实时可见);可恢复失败(agent 超时 / schema / check 未过)在
|
|
641
|
+
parallel/pipeline 中塌缩 `null`、sequence 停止返 `null`(v1 语义);
|
|
642
|
+
`checkpoint` 返回 boolean(拒绝不抛);`schema` 选项走结构化输出 shim。
|
|
643
|
+
|
|
644
|
+
与 v1 的差异(fail-loud):`setConcurrency()` 警告后忽略(v2 并发由
|
|
645
|
+
executor 统一管理);`phase()` 只进日志/事件(v2 面板无阶段分组);
|
|
646
|
+
resume = 整体重跑;脚本内不能有 static `import` / 除 meta 外的 `export`。
|
|
647
|
+
新流程仍推荐 v2 `.mjs`(argsSchema 进工具 hint、resume 支持步骤前缀跳过)。
|
|
648
|
+
|
|
614
649
|
## 并发 run(顶层多飞)
|
|
615
650
|
|
|
616
651
|
gate/workspace 的 run 级化让**并发顶层 run** 成为安全默认:同一进程可同时
|
package/dist/state/recorder.d.ts
CHANGED
|
@@ -96,6 +96,13 @@ export declare class RunJournal {
|
|
|
96
96
|
private step;
|
|
97
97
|
/** P2-8:状态转换后派发进度快照(同步 fan-out,handler 抛错被 bus 隔离) */
|
|
98
98
|
private emitProgress;
|
|
99
|
+
/**
|
|
100
|
+
* v0.8.0 legacy 脚本适配:动态追加步骤并直接置 running。
|
|
101
|
+
* v1 脚本无静态步骤序(stepNames 缺省 → 预分配 0 步),叶子调用
|
|
102
|
+
* (agent/checkpoint/subflow)在发生时经此追加——与 v1 树可见节点同粒度。
|
|
103
|
+
* 返回新步骤下标(调用方随后 stepCompleted/stepFailed 收口)。
|
|
104
|
+
*/
|
|
105
|
+
appendStep(name: string | undefined, input?: unknown): Promise<number>;
|
|
99
106
|
stepStarted(index: number, input?: unknown): Promise<void>;
|
|
100
107
|
stepCompleted(index: number, output?: unknown): Promise<void>;
|
|
101
108
|
stepFailed(index: number, error: unknown): Promise<void>;
|
package/dist/state/recorder.js
CHANGED
|
@@ -158,6 +158,27 @@ export class RunJournal {
|
|
|
158
158
|
emitProgress() {
|
|
159
159
|
emitEvent({ type: "run.progress", run: toProgressSnapshot(this.run) });
|
|
160
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* v0.8.0 legacy 脚本适配:动态追加步骤并直接置 running。
|
|
163
|
+
* v1 脚本无静态步骤序(stepNames 缺省 → 预分配 0 步),叶子调用
|
|
164
|
+
* (agent/checkpoint/subflow)在发生时经此追加——与 v1 树可见节点同粒度。
|
|
165
|
+
* 返回新步骤下标(调用方随后 stepCompleted/stepFailed 收口)。
|
|
166
|
+
*/
|
|
167
|
+
async appendStep(name, input) {
|
|
168
|
+
this.assertOpen();
|
|
169
|
+
const index = this.run.steps.length;
|
|
170
|
+
this.run.steps.push({
|
|
171
|
+
index,
|
|
172
|
+
...(name !== undefined ? { name } : {}),
|
|
173
|
+
status: "running",
|
|
174
|
+
input,
|
|
175
|
+
startedAt: Date.now(),
|
|
176
|
+
});
|
|
177
|
+
this.run.currentStep = index;
|
|
178
|
+
await this.store.saveRun(this.run);
|
|
179
|
+
this.emitProgress();
|
|
180
|
+
return index;
|
|
181
|
+
}
|
|
161
182
|
async stepStarted(index, input) {
|
|
162
183
|
this.assertOpen();
|
|
163
184
|
const step = this.step(index);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/state/recorder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/state/recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1 脚本适配层 —— opencode-dynamic-workflows(v1)脚本体在 v2 原生运行
|
|
3
|
+
*
|
|
4
|
+
* v0.8.0 产品决策:v1 脚本(`export const meta = {...}` + 魔法全局
|
|
5
|
+
* `phase/agent/parallel/...` + 顶层 `return`)不改写、不迁移,flows 目录
|
|
6
|
+
* 内与 .mjs 流程同权装载。
|
|
7
|
+
*
|
|
8
|
+
* 形态识别:源码含 `export const meta =` 且不含 `defineWorkflow`。
|
|
9
|
+
* 装载:剥离 meta 语句 → 包裹为 `export default async function (...globals)`
|
|
10
|
+
* 模块(顶层 return/await 因此合法)→ 走既有临时文件 import 机制。
|
|
11
|
+
* 运行:definition.run 绑定 19 个 v1 全局到 v2 原语,语义对位:
|
|
12
|
+
* - agent() → core agent(),journal 记一步;返回 .output(schema 时 .structured)
|
|
13
|
+
* - 可恢复失败(agent 超时/schema、check 未通过)在 parallel/pipeline/
|
|
14
|
+
* sequence 中塌缩为 null(v1 语义);结构性错误上抛
|
|
15
|
+
* - checkpoint() 返回 boolean(拒绝=false 不抛);无 gate 时回落 {default}
|
|
16
|
+
* - verify/judgePanel:v1 实现原味移植(构建于 agent+parallel 之上)
|
|
17
|
+
* - fileExists 同步(v1 语义,相对 workspaceRoot/cwd);commandSuccess 异步
|
|
18
|
+
* - setConcurrency():v2 并发由 executor 统一管理——响亮警告 + 不生效
|
|
19
|
+
* - phase() → core phase()(日志 + 事件;v2 TUI 无阶段分组,步骤行=叶子调用)
|
|
20
|
+
*
|
|
21
|
+
* journal 语义:步骤不预声明(stepNames 缺省),叶子调用(agent/checkpoint/
|
|
22
|
+
* subflow)经 recorder.appendStep 动态记录——与 v1 树的可见节点粒度一致。
|
|
23
|
+
* resume = 整体重跑(无步骤前缀跳过;v1 脚本无静态步骤序)。
|
|
24
|
+
*
|
|
25
|
+
* 纪律:禁止 import OpenCode API(架构不变量,同 loader)。
|
|
26
|
+
*/
|
|
27
|
+
import type { WorkflowDefinition } from "../registry/definition.js";
|
|
28
|
+
/** v1 全局注入参数表(顺序即包裹函数形参序) */
|
|
29
|
+
export declare const LEGACY_GLOBAL_PARAMS: readonly ["phase", "agent", "parallel", "pipeline", "sequence", "fallback", "race", "check", "fileExists", "commandSuccess", "log", "args", "setConcurrency", "verify", "judgePanel", "retry", "checkpoint", "workflow", "console"];
|
|
30
|
+
/** v1 脚本形态识别:含 export const meta 且不含 defineWorkflow */
|
|
31
|
+
export declare function detectLegacyScript(source: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 剥离 `export const meta = {...}` 语句(字符串感知配平)。
|
|
34
|
+
* 返回 meta 语句原文(保留 export,随包裹模块再导出)与剩余 body。
|
|
35
|
+
*/
|
|
36
|
+
export declare function splitLegacyMeta(source: string): {
|
|
37
|
+
ok: true;
|
|
38
|
+
metaStatement: string;
|
|
39
|
+
rest: string;
|
|
40
|
+
} | {
|
|
41
|
+
ok: false;
|
|
42
|
+
error: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* 构建可 import 的包裹模块:meta 原文再导出 + body 作为带全局形参的
|
|
46
|
+
* async 函数默认导出(顶层 return/await 因此合法)。
|
|
47
|
+
*/
|
|
48
|
+
export declare function wrapLegacyModule(metaStatement: string, rest: string): {
|
|
49
|
+
ok: true;
|
|
50
|
+
wrapped: string;
|
|
51
|
+
} | {
|
|
52
|
+
ok: false;
|
|
53
|
+
error: string;
|
|
54
|
+
};
|
|
55
|
+
/** v1 meta 形状(name 必填 snake_case;description 可选) */
|
|
56
|
+
export interface LegacyMeta {
|
|
57
|
+
name: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
phases?: unknown;
|
|
60
|
+
}
|
|
61
|
+
/** 装载期 meta 校验(v1 validateMeta 对位;shape 宽松、fail-loud) */
|
|
62
|
+
export declare function validateLegacyMeta(meta: unknown): {
|
|
63
|
+
ok: true;
|
|
64
|
+
meta: LegacyMeta;
|
|
65
|
+
} | {
|
|
66
|
+
ok: false;
|
|
67
|
+
error: string;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* 构造 v1 脚本的 WorkflowDefinition:run() 绑定全部全局并执行 body。
|
|
71
|
+
* 步骤动态 journal(叶子粒度);resume = 整体重跑(无静态步骤序)。
|
|
72
|
+
*/
|
|
73
|
+
export declare function buildLegacyDefinition(meta: LegacyMeta, bodyFn: (...globals: unknown[]) => Promise<unknown>): WorkflowDefinition;
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1 脚本适配层 —— opencode-dynamic-workflows(v1)脚本体在 v2 原生运行
|
|
3
|
+
*
|
|
4
|
+
* v0.8.0 产品决策:v1 脚本(`export const meta = {...}` + 魔法全局
|
|
5
|
+
* `phase/agent/parallel/...` + 顶层 `return`)不改写、不迁移,flows 目录
|
|
6
|
+
* 内与 .mjs 流程同权装载。
|
|
7
|
+
*
|
|
8
|
+
* 形态识别:源码含 `export const meta =` 且不含 `defineWorkflow`。
|
|
9
|
+
* 装载:剥离 meta 语句 → 包裹为 `export default async function (...globals)`
|
|
10
|
+
* 模块(顶层 return/await 因此合法)→ 走既有临时文件 import 机制。
|
|
11
|
+
* 运行:definition.run 绑定 19 个 v1 全局到 v2 原语,语义对位:
|
|
12
|
+
* - agent() → core agent(),journal 记一步;返回 .output(schema 时 .structured)
|
|
13
|
+
* - 可恢复失败(agent 超时/schema、check 未通过)在 parallel/pipeline/
|
|
14
|
+
* sequence 中塌缩为 null(v1 语义);结构性错误上抛
|
|
15
|
+
* - checkpoint() 返回 boolean(拒绝=false 不抛);无 gate 时回落 {default}
|
|
16
|
+
* - verify/judgePanel:v1 实现原味移植(构建于 agent+parallel 之上)
|
|
17
|
+
* - fileExists 同步(v1 语义,相对 workspaceRoot/cwd);commandSuccess 异步
|
|
18
|
+
* - setConcurrency():v2 并发由 executor 统一管理——响亮警告 + 不生效
|
|
19
|
+
* - phase() → core phase()(日志 + 事件;v2 TUI 无阶段分组,步骤行=叶子调用)
|
|
20
|
+
*
|
|
21
|
+
* journal 语义:步骤不预声明(stepNames 缺省),叶子调用(agent/checkpoint/
|
|
22
|
+
* subflow)经 recorder.appendStep 动态记录——与 v1 树的可见节点粒度一致。
|
|
23
|
+
* resume = 整体重跑(无步骤前缀跳过;v1 脚本无静态步骤序)。
|
|
24
|
+
*
|
|
25
|
+
* 纪律:禁止 import OpenCode API(架构不变量,同 loader)。
|
|
26
|
+
*/
|
|
27
|
+
import { exec } from "node:child_process";
|
|
28
|
+
import { existsSync } from "node:fs";
|
|
29
|
+
import path from "node:path";
|
|
30
|
+
import { agent as coreAgent, AgentTimeoutError, AgentSchemaError } from "../workflow/agent.js";
|
|
31
|
+
import { fallback as coreFallback } from "../workflow/fallback.js";
|
|
32
|
+
import { race as coreRace } from "../workflow/race.js";
|
|
33
|
+
import { phase as corePhase } from "../workflow/phase.js";
|
|
34
|
+
import { checkpoint as coreCheckpoint, getCheckpointGate, WorkflowCheckpointError, } from "../quality/checkpoint.js";
|
|
35
|
+
/** v1 全局注入参数表(顺序即包裹函数形参序) */
|
|
36
|
+
export const LEGACY_GLOBAL_PARAMS = [
|
|
37
|
+
"phase",
|
|
38
|
+
"agent",
|
|
39
|
+
"parallel",
|
|
40
|
+
"pipeline",
|
|
41
|
+
"sequence",
|
|
42
|
+
"fallback",
|
|
43
|
+
"race",
|
|
44
|
+
"check",
|
|
45
|
+
"fileExists",
|
|
46
|
+
"commandSuccess",
|
|
47
|
+
"log",
|
|
48
|
+
"args",
|
|
49
|
+
"setConcurrency",
|
|
50
|
+
"verify",
|
|
51
|
+
"judgePanel",
|
|
52
|
+
"retry",
|
|
53
|
+
"checkpoint",
|
|
54
|
+
"workflow",
|
|
55
|
+
"console",
|
|
56
|
+
];
|
|
57
|
+
/** v1 脚本形态识别:含 export const meta 且不含 defineWorkflow */
|
|
58
|
+
export function detectLegacyScript(source) {
|
|
59
|
+
return (!source.includes("defineWorkflow") &&
|
|
60
|
+
/(?:^|[\n;])\s*export\s+const\s+meta\s*=/.test(source));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 剥离 `export const meta = {...}` 语句(字符串感知配平)。
|
|
64
|
+
* 返回 meta 语句原文(保留 export,随包裹模块再导出)与剩余 body。
|
|
65
|
+
*/
|
|
66
|
+
export function splitLegacyMeta(source) {
|
|
67
|
+
const match = /export\s+const\s+meta\s*=/.exec(source);
|
|
68
|
+
if (match === null) {
|
|
69
|
+
return { ok: false, error: "legacy script must start with `export const meta = { ... }`" };
|
|
70
|
+
}
|
|
71
|
+
let i = match.index + match[0].length;
|
|
72
|
+
while (i < source.length && /\s/.test(source[i]))
|
|
73
|
+
i++;
|
|
74
|
+
if (source[i] !== "{") {
|
|
75
|
+
return { ok: false, error: "`export const meta` must be an object literal ({ ... })" };
|
|
76
|
+
}
|
|
77
|
+
// 字符串感知的花括号配平
|
|
78
|
+
let depth = 0;
|
|
79
|
+
let quote = null;
|
|
80
|
+
let j = i;
|
|
81
|
+
for (; j < source.length; j++) {
|
|
82
|
+
const ch = source[j];
|
|
83
|
+
if (quote !== null) {
|
|
84
|
+
if (ch === "\\") {
|
|
85
|
+
j++;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (ch === quote)
|
|
89
|
+
quote = null;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (ch === '"' || ch === "'" || ch === "`") {
|
|
93
|
+
quote = ch;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (ch === "{")
|
|
97
|
+
depth++;
|
|
98
|
+
else if (ch === "}") {
|
|
99
|
+
depth--;
|
|
100
|
+
if (depth === 0) {
|
|
101
|
+
j++;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (depth !== 0 || quote !== null) {
|
|
107
|
+
return { ok: false, error: "unbalanced braces in `export const meta` literal" };
|
|
108
|
+
}
|
|
109
|
+
let end = j;
|
|
110
|
+
if (source[end] === ";")
|
|
111
|
+
end++;
|
|
112
|
+
return {
|
|
113
|
+
ok: true,
|
|
114
|
+
metaStatement: source.slice(match.index, end),
|
|
115
|
+
rest: source.slice(0, match.index) + source.slice(end),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* 构建可 import 的包裹模块:meta 原文再导出 + body 作为带全局形参的
|
|
120
|
+
* async 函数默认导出(顶层 return/await 因此合法)。
|
|
121
|
+
*/
|
|
122
|
+
export function wrapLegacyModule(metaStatement, rest) {
|
|
123
|
+
if (/(?:^|\n)\s*import\s*[^(]/.test(rest)) {
|
|
124
|
+
return {
|
|
125
|
+
ok: false,
|
|
126
|
+
error: "legacy scripts cannot use static import statements (globals are injected); convert to a v2 .mjs flow if you need imports",
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (/(?:^|\n)\s*export\b/.test(rest)) {
|
|
130
|
+
return {
|
|
131
|
+
ok: false,
|
|
132
|
+
error: "legacy scripts may only contain `export const meta` (other exports are not supported)",
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
const body = `export default async function (${LEGACY_GLOBAL_PARAMS.join(", ")}) {\n${rest}\n}\n`;
|
|
136
|
+
return { ok: true, wrapped: `${metaStatement}\n${body}` };
|
|
137
|
+
}
|
|
138
|
+
/** 装载期 meta 校验(v1 validateMeta 对位;shape 宽松、fail-loud) */
|
|
139
|
+
export function validateLegacyMeta(meta) {
|
|
140
|
+
if (typeof meta !== "object" || meta === null) {
|
|
141
|
+
return { ok: false, error: "`export const meta` must evaluate to an object" };
|
|
142
|
+
}
|
|
143
|
+
const name = meta.name;
|
|
144
|
+
if (typeof name !== "string" || !/^[a-z][a-z0-9_]*$/i.test(name)) {
|
|
145
|
+
return { ok: false, error: "meta.name must be a non-empty snake_case string" };
|
|
146
|
+
}
|
|
147
|
+
const description = meta.description;
|
|
148
|
+
if (description !== undefined && typeof description !== "string") {
|
|
149
|
+
return { ok: false, error: "meta.description must be a string" };
|
|
150
|
+
}
|
|
151
|
+
return { ok: true, meta: { name, ...(description !== undefined ? { description } : {}) } };
|
|
152
|
+
}
|
|
153
|
+
/** check() 未通过(可恢复:parallel/pipeline 塌缩 null、sequence 停止返 null) */
|
|
154
|
+
class LegacyCheckError extends Error {
|
|
155
|
+
constructor(message) {
|
|
156
|
+
super(message);
|
|
157
|
+
this.name = "LegacyCheckError";
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function isRecoverableFailure(error) {
|
|
161
|
+
return (error instanceof AgentTimeoutError ||
|
|
162
|
+
error instanceof AgentSchemaError ||
|
|
163
|
+
error instanceof LegacyCheckError);
|
|
164
|
+
}
|
|
165
|
+
/** journal 步骤 input 预览(截断,避免大 prompt 落盘膨胀) */
|
|
166
|
+
function previewText(value, max = 160) {
|
|
167
|
+
const text = typeof value === "string" ? value : JSON.stringify(value) ?? String(value);
|
|
168
|
+
return text.length > max ? text.slice(0, max) + "…" : text;
|
|
169
|
+
}
|
|
170
|
+
/** 叶子调用统一 journal:动态追加步骤 + 完成/失败收口 */
|
|
171
|
+
async function journaledStep(journal, name, input, fn) {
|
|
172
|
+
if (journal === undefined)
|
|
173
|
+
return fn();
|
|
174
|
+
const index = await journal.appendStep(name, previewText(input));
|
|
175
|
+
try {
|
|
176
|
+
const value = await fn();
|
|
177
|
+
await journal.stepCompleted(index, previewText(value));
|
|
178
|
+
return value;
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
await journal.stepFailed(index, error);
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const VERIFY_SCHEMA = {
|
|
186
|
+
type: "object",
|
|
187
|
+
properties: { real: { type: "boolean" }, reason: { type: "string" } },
|
|
188
|
+
required: ["real"],
|
|
189
|
+
};
|
|
190
|
+
const JUDGE_SCHEMA = {
|
|
191
|
+
type: "object",
|
|
192
|
+
properties: { score: { type: "number" }, reason: { type: "string" } },
|
|
193
|
+
required: ["score"],
|
|
194
|
+
};
|
|
195
|
+
function normalizeFanout(value, fallback, optionName) {
|
|
196
|
+
const count = value === undefined ? fallback : value;
|
|
197
|
+
if (typeof count !== "number" || !Number.isFinite(count) || !Number.isInteger(count) || count < 1) {
|
|
198
|
+
throw new TypeError(`${optionName} 必须是大于等于 1 的整数`);
|
|
199
|
+
}
|
|
200
|
+
return count;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* 构造 v1 脚本的 WorkflowDefinition:run() 绑定全部全局并执行 body。
|
|
204
|
+
* 步骤动态 journal(叶子粒度);resume = 整体重跑(无静态步骤序)。
|
|
205
|
+
*/
|
|
206
|
+
export function buildLegacyDefinition(meta, bodyFn) {
|
|
207
|
+
return {
|
|
208
|
+
id: meta.name,
|
|
209
|
+
version: "1.0.0",
|
|
210
|
+
...(meta.description !== undefined ? { description: meta.description } : {}),
|
|
211
|
+
argsSchema: {
|
|
212
|
+
type: "object",
|
|
213
|
+
properties: { topic: { type: "string" } },
|
|
214
|
+
required: ["topic"],
|
|
215
|
+
},
|
|
216
|
+
async run(args, ctx) {
|
|
217
|
+
const journal = ctx.journal;
|
|
218
|
+
const workspaceRoot = ctx.workspaceRoot ?? process.cwd();
|
|
219
|
+
let agentCount = 0;
|
|
220
|
+
const log = (...values) => {
|
|
221
|
+
console.log(`[agentic-workflow] ${values.map((v) => (typeof v === "string" ? v : JSON.stringify(v) ?? String(v))).join(" ")}`);
|
|
222
|
+
};
|
|
223
|
+
const agent = (prompt, opts) => {
|
|
224
|
+
if (typeof prompt !== "string" || prompt.length === 0) {
|
|
225
|
+
throw new TypeError("agent(prompt, opts?) 需要非空提示词");
|
|
226
|
+
}
|
|
227
|
+
const label = opts?.label ?? `agent-${++agentCount}`;
|
|
228
|
+
const passThrough = {};
|
|
229
|
+
for (const key of ["model", "timeoutMs", "retries", "retryDelayMs", "schema"]) {
|
|
230
|
+
const value = opts?.[key];
|
|
231
|
+
if (value !== undefined)
|
|
232
|
+
passThrough[key] = value;
|
|
233
|
+
}
|
|
234
|
+
return journaledStep(journal, label, prompt, async () => {
|
|
235
|
+
const result = await coreAgent(prompt, passThrough);
|
|
236
|
+
return opts?.schema !== undefined ? result.structured : result.output;
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
const parallel = async (thunks) => {
|
|
240
|
+
if (!Array.isArray(thunks)) {
|
|
241
|
+
throw new TypeError("parallel() 期望函数数组");
|
|
242
|
+
}
|
|
243
|
+
if (thunks.some((t) => typeof t !== "function")) {
|
|
244
|
+
throw new TypeError("parallel() 期望函数数组而非 Promise 数组,请用 () => agent(...) 包裹");
|
|
245
|
+
}
|
|
246
|
+
const settled = await Promise.all(thunks.map(async (thunk) => {
|
|
247
|
+
try {
|
|
248
|
+
return { ok: true, value: await thunk() };
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
return { ok: false, error };
|
|
252
|
+
}
|
|
253
|
+
}));
|
|
254
|
+
for (const item of settled) {
|
|
255
|
+
if (!item.ok && !isRecoverableFailure(item.error))
|
|
256
|
+
throw item.error;
|
|
257
|
+
}
|
|
258
|
+
return settled.map((item) => (item.ok ? item.value : null));
|
|
259
|
+
};
|
|
260
|
+
const pipeline = async (items, stages) => {
|
|
261
|
+
if (!Array.isArray(items))
|
|
262
|
+
throw new TypeError("pipeline() 期望条目数组");
|
|
263
|
+
if (!Array.isArray(stages) || stages.length === 0)
|
|
264
|
+
return [...items];
|
|
265
|
+
const settled = await Promise.all(items.map(async (item, index) => {
|
|
266
|
+
let value = item;
|
|
267
|
+
try {
|
|
268
|
+
for (const stage of stages) {
|
|
269
|
+
value = await stage(value, item, index);
|
|
270
|
+
}
|
|
271
|
+
return { ok: true, value };
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
return { ok: false, error };
|
|
275
|
+
}
|
|
276
|
+
}));
|
|
277
|
+
for (const item of settled) {
|
|
278
|
+
if (!item.ok && !isRecoverableFailure(item.error))
|
|
279
|
+
throw item.error;
|
|
280
|
+
}
|
|
281
|
+
return settled.map((item) => (item.ok ? item.value : null));
|
|
282
|
+
};
|
|
283
|
+
const sequence = async (nodes) => {
|
|
284
|
+
if (!Array.isArray(nodes))
|
|
285
|
+
throw new TypeError("sequence() 期望节点函数数组");
|
|
286
|
+
let value;
|
|
287
|
+
for (const [index, node] of nodes.entries()) {
|
|
288
|
+
try {
|
|
289
|
+
value = await node(value);
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
if (isRecoverableFailure(error)) {
|
|
293
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
294
|
+
log(`sequence[${index}] 失败,序列停止: ${message}`);
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
throw error;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return value;
|
|
301
|
+
};
|
|
302
|
+
const fallback = (candidates) => {
|
|
303
|
+
if (!Array.isArray(candidates) || candidates.length === 0) {
|
|
304
|
+
throw new TypeError("fallback() 期望非空候选函数数组");
|
|
305
|
+
}
|
|
306
|
+
return coreFallback(candidates);
|
|
307
|
+
};
|
|
308
|
+
const race = (branches) => {
|
|
309
|
+
if (!Array.isArray(branches) || branches.length === 0) {
|
|
310
|
+
throw new TypeError("race() 期望至少一个分支");
|
|
311
|
+
}
|
|
312
|
+
return coreRace(branches);
|
|
313
|
+
};
|
|
314
|
+
const check = async (condition, message) => {
|
|
315
|
+
if (typeof condition !== "function") {
|
|
316
|
+
throw new TypeError("check(condition, message?) 需要函数条件");
|
|
317
|
+
}
|
|
318
|
+
let passed;
|
|
319
|
+
try {
|
|
320
|
+
passed = await condition();
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
324
|
+
throw new TypeError(`check 条件执行出错(不是验证未通过,是检查代码出错):${reason}`);
|
|
325
|
+
}
|
|
326
|
+
if (passed === true)
|
|
327
|
+
return true;
|
|
328
|
+
throw new LegacyCheckError(message ?? "check 验证未通过");
|
|
329
|
+
};
|
|
330
|
+
/** 同步(v1 语义):相对 workspaceRoot/cwd 的存在性 */
|
|
331
|
+
const fileExists = (target) => {
|
|
332
|
+
if (typeof target !== "string" || target.trim().length === 0)
|
|
333
|
+
return false;
|
|
334
|
+
return existsSync(path.resolve(workspaceRoot, target));
|
|
335
|
+
};
|
|
336
|
+
/** 命令退出码 0(异步;超时视为失败)——v1 语义 */
|
|
337
|
+
const commandSuccess = (command, timeoutMs = 30_000) => {
|
|
338
|
+
return new Promise((resolve) => {
|
|
339
|
+
if (typeof command !== "string" || command.trim().length === 0) {
|
|
340
|
+
resolve(false);
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
exec(command, { cwd: workspaceRoot, timeout: timeoutMs, windowsHide: true }, (error) => resolve(error === null || error === undefined));
|
|
344
|
+
});
|
|
345
|
+
};
|
|
346
|
+
const setConcurrency = (value) => {
|
|
347
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < 1) {
|
|
348
|
+
throw new TypeError(`setConcurrency 需要正整数,收到 ${String(value)}`);
|
|
349
|
+
}
|
|
350
|
+
console.warn(`[agentic-workflow] setConcurrency(${value}) is ignored: v2 executor concurrency is managed globally (legacy adapter)`);
|
|
351
|
+
};
|
|
352
|
+
/** 对抗式评审(v1 原味移植;每个 reviewer 一个 journal 步骤) */
|
|
353
|
+
const verify = async (item, opts = {}) => {
|
|
354
|
+
const reviewerSlots = normalizeFanout(opts.reviewers, 2, "verify() reviewers");
|
|
355
|
+
const threshold = opts.threshold ?? 0.5;
|
|
356
|
+
const lenses = opts.lens !== undefined ? (Array.isArray(opts.lens) ? opts.lens : [opts.lens]) : [];
|
|
357
|
+
const claim = typeof item === "string" ? item : JSON.stringify(item) ?? String(item);
|
|
358
|
+
const votes = (await parallel(Array.from({ length: reviewerSlots }, (_v, i) => () => agent(`Adversarially review whether the following is REAL/correct. Try to refute it; default to real=false if unsure.${lenses.length > 0 ? ` Focus lens: ${lenses[i % lenses.length]}.` : ""}\n\n${claim}`, { label: `verify ${i + 1}`, schema: VERIFY_SCHEMA }))));
|
|
359
|
+
const valid = votes.filter((v) => v != null);
|
|
360
|
+
const realCount = valid.filter((v) => v?.real === true).length;
|
|
361
|
+
return {
|
|
362
|
+
real: valid.length > 0 && realCount / valid.length >= threshold,
|
|
363
|
+
realCount,
|
|
364
|
+
total: valid.length,
|
|
365
|
+
votes: valid,
|
|
366
|
+
};
|
|
367
|
+
};
|
|
368
|
+
/** 评审团(v1 原味移植;judge 打分经 agent journal 步骤可见) */
|
|
369
|
+
const judgePanel = async (attempts, opts = {}) => {
|
|
370
|
+
const judgeSlots = normalizeFanout(opts.judges, 3, "judgePanel() judges");
|
|
371
|
+
const candidates = Array.isArray(attempts)
|
|
372
|
+
? attempts.map((attempt, index) => ({ attempt, index })).filter((c) => c.attempt != null)
|
|
373
|
+
: [];
|
|
374
|
+
if (candidates.length === 0)
|
|
375
|
+
throw new TypeError("judgePanel() 需要非空候选数组");
|
|
376
|
+
const rubric = opts.rubric ?? "overall quality and correctness";
|
|
377
|
+
const scored = (await parallel(candidates.map(({ attempt, index }) => async () => {
|
|
378
|
+
const text = typeof attempt === "string" ? attempt : JSON.stringify(attempt) ?? String(attempt);
|
|
379
|
+
const judgments = (await parallel(Array.from({ length: judgeSlots }, (_v, j) => () => agent(`Score this candidate from 0 to 1 on: ${rubric}. Reply with the score.\n\nCandidate:\n${text}`, { label: `judge ${index + 1}.${j + 1}`, schema: JUDGE_SCHEMA }))));
|
|
380
|
+
const valid = judgments.filter((j) => j != null);
|
|
381
|
+
const score = valid.length > 0
|
|
382
|
+
? valid.reduce((sum, v) => sum + (Number(v?.score) || 0), 0) / valid.length
|
|
383
|
+
: 0;
|
|
384
|
+
return { index, attempt, score, judgments: valid };
|
|
385
|
+
})));
|
|
386
|
+
const valid = scored.filter((s) => s != null);
|
|
387
|
+
if (valid.length === 0)
|
|
388
|
+
throw new TypeError("judgePanel() 全部候选评审失败");
|
|
389
|
+
// 最高均分;同分稳定取输入顺序靠前者(v1 同款)
|
|
390
|
+
let best = valid[0];
|
|
391
|
+
for (const s of valid) {
|
|
392
|
+
if (s.score > best.score || (s.score === best.score && s.index < best.index))
|
|
393
|
+
best = s;
|
|
394
|
+
}
|
|
395
|
+
return best;
|
|
396
|
+
};
|
|
397
|
+
/** 有界重试糖:直到 until 通过或耗尽,返回最后一次结果(不抛错)——v1 语义 */
|
|
398
|
+
const retry = async (thunk, opts = {}) => {
|
|
399
|
+
const attempts = Math.max(1, opts.attempts ?? 3);
|
|
400
|
+
let last;
|
|
401
|
+
for (let i = 0; i < attempts; i++) {
|
|
402
|
+
last = await thunk(i);
|
|
403
|
+
if (opts.until?.(last) === true)
|
|
404
|
+
return last;
|
|
405
|
+
}
|
|
406
|
+
return last;
|
|
407
|
+
};
|
|
408
|
+
/** 人工审批:批准=true / 拒绝=false(不抛);无 gate 时回落 default —— v1 语义 */
|
|
409
|
+
const checkpoint = async (message, opts = {}) => {
|
|
410
|
+
const label = opts.label ?? "checkpoint";
|
|
411
|
+
return journaledStep(journal, `checkpoint:${label}`, message, async () => {
|
|
412
|
+
if (getCheckpointGate() === undefined) {
|
|
413
|
+
if (opts.default !== undefined) {
|
|
414
|
+
log(`checkpoint(${label}) 无交互 gate,回落 default=${String(opts.default)}`);
|
|
415
|
+
return opts.default;
|
|
416
|
+
}
|
|
417
|
+
throw new Error(`checkpoint(${label}) 需要交互 gate 或 { default } 选项(headless 场景请传 default)`);
|
|
418
|
+
}
|
|
419
|
+
try {
|
|
420
|
+
await coreCheckpoint(message, { label });
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
if (error instanceof WorkflowCheckpointError)
|
|
425
|
+
return false;
|
|
426
|
+
throw error;
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
};
|
|
430
|
+
/** 子工作流(v1 workflow 全局 → ctx.subflow;需要 journalDir) */
|
|
431
|
+
const workflow = async (id, subArgs) => {
|
|
432
|
+
if (ctx.subflow === undefined) {
|
|
433
|
+
throw new Error(`workflow(${id}) 子流程需要 journalDir(ExecutionStore);未配置的 run 不提供 subflow`);
|
|
434
|
+
}
|
|
435
|
+
return journaledStep(journal, `subflow:${id}`, subArgs, () => ctx.subflow(id, subArgs));
|
|
436
|
+
};
|
|
437
|
+
const consoleShim = {
|
|
438
|
+
log,
|
|
439
|
+
info: log,
|
|
440
|
+
warn: (m) => log(`[warn] ${typeof m === "string" ? m : JSON.stringify(m) ?? String(m)}`),
|
|
441
|
+
error: (m) => log(`[error] ${typeof m === "string" ? m : JSON.stringify(m) ?? String(m)}`),
|
|
442
|
+
};
|
|
443
|
+
const globals = [
|
|
444
|
+
corePhase,
|
|
445
|
+
agent,
|
|
446
|
+
parallel,
|
|
447
|
+
pipeline,
|
|
448
|
+
sequence,
|
|
449
|
+
fallback,
|
|
450
|
+
race,
|
|
451
|
+
check,
|
|
452
|
+
fileExists,
|
|
453
|
+
commandSuccess,
|
|
454
|
+
log,
|
|
455
|
+
args,
|
|
456
|
+
setConcurrency,
|
|
457
|
+
verify,
|
|
458
|
+
judgePanel,
|
|
459
|
+
retry,
|
|
460
|
+
checkpoint,
|
|
461
|
+
workflow,
|
|
462
|
+
consoleShim,
|
|
463
|
+
];
|
|
464
|
+
const result = await bodyFn(...globals);
|
|
465
|
+
return result;
|
|
466
|
+
},
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=legacy-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-script.js","sourceRoot":"","sources":["../../src/workflows/legacy-script.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,11 @@
|
|
|
7
7
|
*
|
|
8
8
|
* 装载契约:
|
|
9
9
|
* - 入口:.js / .mjs / .cjs 文件路径或目录(扫一层,忽略点开头文件);相对 baseDir
|
|
10
|
-
* -
|
|
10
|
+
* - v2 模块形态:default / definition / workflow 三形态之一,最小形状校验
|
|
11
11
|
* (id/version 非空字符串 + run 函数)
|
|
12
|
+
* - v1 脚本形态(v0.8.0):`export const meta = {...}` + 魔法全局
|
|
13
|
+
* `phase/agent/parallel/...` + 顶层 return——legacy 适配分支装载
|
|
14
|
+
* (见 legacy-script.ts),不改写、不迁移
|
|
12
15
|
* - <pkg>/core 裸说明符重写(v0.6.0):用户 flows 目录通常解析不到本包
|
|
13
16
|
* (包在 opencode 全局缓存,不在用户 node_modules 链上)——装载时把
|
|
14
17
|
* "<pkg>/core" 重写为插件自身 dist/core 的绝对 file URL 再导入,
|
package/dist/workflows/loader.js
CHANGED
|
@@ -7,8 +7,11 @@
|
|
|
7
7
|
*
|
|
8
8
|
* 装载契约:
|
|
9
9
|
* - 入口:.js / .mjs / .cjs 文件路径或目录(扫一层,忽略点开头文件);相对 baseDir
|
|
10
|
-
* -
|
|
10
|
+
* - v2 模块形态:default / definition / workflow 三形态之一,最小形状校验
|
|
11
11
|
* (id/version 非空字符串 + run 函数)
|
|
12
|
+
* - v1 脚本形态(v0.8.0):`export const meta = {...}` + 魔法全局
|
|
13
|
+
* `phase/agent/parallel/...` + 顶层 return——legacy 适配分支装载
|
|
14
|
+
* (见 legacy-script.ts),不改写、不迁移
|
|
12
15
|
* - <pkg>/core 裸说明符重写(v0.6.0):用户 flows 目录通常解析不到本包
|
|
13
16
|
* (包在 opencode 全局缓存,不在用户 node_modules 链上)——装载时把
|
|
14
17
|
* "<pkg>/core" 重写为插件自身 dist/core 的绝对 file URL 再导入,
|
|
@@ -26,6 +29,7 @@ import { existsSync, statSync } from "node:fs";
|
|
|
26
29
|
import { readdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
27
30
|
import path from "node:path";
|
|
28
31
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
32
|
+
import { buildLegacyDefinition, detectLegacyScript, splitLegacyMeta, validateLegacyMeta, wrapLegacyModule, } from "./legacy-script.js";
|
|
29
33
|
/** 代码流程模块扩展名 */
|
|
30
34
|
const CODE_EXTENSIONS = [".js", ".mjs", ".cjs"];
|
|
31
35
|
const JSON_REMOVED_HINT = 'JSON workflows were removed in v0.6.0 - convert to a .js/.mjs module (see README "代码流程")';
|
|
@@ -86,10 +90,67 @@ async function expandEntries(entries, baseDir) {
|
|
|
86
90
|
}
|
|
87
91
|
return { files, errors };
|
|
88
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* 在用户目录旁导入改写后的模块源(保留该文件其余相对/npm 解析语义):
|
|
95
|
+
* 同目录隐藏临时 .mjs → import → 清理;目录不可写时回退 data: URL。
|
|
96
|
+
*/
|
|
97
|
+
async function importRewrittenSource(file, source) {
|
|
98
|
+
const temp = path.join(path.dirname(file), `.${path.basename(file)}.${createHash("sha256").update(file).digest("hex").slice(0, 8)}.aw.mjs`);
|
|
99
|
+
try {
|
|
100
|
+
await writeFile(temp, source, "utf8");
|
|
101
|
+
try {
|
|
102
|
+
return await import(pathToFileURL(temp).href);
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
await rm(temp, { force: true }).catch(() => undefined);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// 目录不可写等:回退 data: URL(此形态下文件内其余相对导入不可用,核心 API 可用)
|
|
110
|
+
return import("data:text/javascript;base64," + Buffer.from(source, "utf8").toString("base64"));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 装载 v1 脚本形态(v0.8.0):剥离 meta → 包裹为全局形参 async 函数模块 →
|
|
115
|
+
* 同目录临时文件 import → 校验 meta → 构造 WorkflowDefinition。
|
|
116
|
+
* v1 全局由 definition.run 在每次执行时绑定(见 legacy-script.ts)。
|
|
117
|
+
*/
|
|
118
|
+
async function loadLegacyScriptModule(file, source) {
|
|
119
|
+
const at = (msg) => `${path.basename(file)}: ${msg}`;
|
|
120
|
+
const split = splitLegacyMeta(source);
|
|
121
|
+
if (!split.ok)
|
|
122
|
+
return { ok: false, error: at(split.error) };
|
|
123
|
+
const wrapped = wrapLegacyModule(split.metaStatement, split.rest);
|
|
124
|
+
if (!wrapped.ok)
|
|
125
|
+
return { ok: false, error: at(wrapped.error) };
|
|
126
|
+
let mod;
|
|
127
|
+
try {
|
|
128
|
+
mod = await importRewrittenSource(file, wrapped.wrapped);
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return {
|
|
132
|
+
ok: false,
|
|
133
|
+
error: at(`failed to import legacy script (${error instanceof Error ? error.message : String(error)})`),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (typeof mod !== "object" || mod === null) {
|
|
137
|
+
return { ok: false, error: at("legacy script module import returned nothing") };
|
|
138
|
+
}
|
|
139
|
+
const record = mod;
|
|
140
|
+
const meta = validateLegacyMeta(record.meta);
|
|
141
|
+
if (!meta.ok)
|
|
142
|
+
return { ok: false, error: at(meta.error) };
|
|
143
|
+
if (typeof record.default !== "function") {
|
|
144
|
+
return { ok: false, error: at("legacy script body did not compile into a function") };
|
|
145
|
+
}
|
|
146
|
+
const bodyFn = record.default;
|
|
147
|
+
return { ok: true, definition: buildLegacyDefinition(meta.meta, bodyFn) };
|
|
148
|
+
}
|
|
89
149
|
/**
|
|
90
150
|
* 装载代码流程模块:.js/.mjs/.cjs 动态 import,取
|
|
91
151
|
* default / definition / workflow 三种导出形态之一,校验
|
|
92
152
|
* WorkflowDefinition 最小形状(id/version 字符串 + run 函数)。
|
|
153
|
+
* v1 脚本形态(export const meta + 魔法全局)走 legacy 适配分支。
|
|
93
154
|
* 含 <pkg>/core 裸说明符重写(见文件头)。返回定义或错误文案(含文件名前缀);不抛出。
|
|
94
155
|
*/
|
|
95
156
|
async function loadCodeWorkflowModule(file) {
|
|
@@ -101,6 +162,9 @@ async function loadCodeWorkflowModule(file) {
|
|
|
101
162
|
catch (error) {
|
|
102
163
|
return { ok: false, error: at(`failed to read (${error instanceof Error ? error.message : String(error)})`) };
|
|
103
164
|
}
|
|
165
|
+
if (detectLegacyScript(source)) {
|
|
166
|
+
return loadLegacyScriptModule(file, source);
|
|
167
|
+
}
|
|
104
168
|
const coreUrl = coreBarrelUrl();
|
|
105
169
|
// 三种引用形态:from "<pkg>/core" / 副作用 import "<pkg>/core" / 动态 import("<pkg>/core")
|
|
106
170
|
const rewritten = source
|
|
@@ -120,21 +184,7 @@ async function loadCodeWorkflowModule(file) {
|
|
|
120
184
|
};
|
|
121
185
|
}
|
|
122
186
|
else {
|
|
123
|
-
|
|
124
|
-
const temp = path.join(path.dirname(file), `.${path.basename(file)}.${createHash("sha256").update(file).digest("hex").slice(0, 8)}.aw.mjs`);
|
|
125
|
-
try {
|
|
126
|
-
await writeFile(temp, rewritten, "utf8");
|
|
127
|
-
try {
|
|
128
|
-
mod = await import(pathToFileURL(temp).href);
|
|
129
|
-
}
|
|
130
|
-
finally {
|
|
131
|
-
await rm(temp, { force: true }).catch(() => undefined);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// 目录不可写等:回退 data: URL(此形态下文件内其余相对导入不可用,核心 API 可用)
|
|
136
|
-
mod = await import("data:text/javascript;base64," + Buffer.from(rewritten, "utf8").toString("base64"));
|
|
137
|
-
}
|
|
187
|
+
mod = await importRewrittenSource(file, rewritten);
|
|
138
188
|
}
|
|
139
189
|
}
|
|
140
190
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/workflows/loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/workflows/loader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mickorz/opencode-agentic-workflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Durable Agentic Workflow Runtime for OpenCode V2: journal & resume, version registry, tracing, token/cost metrics, git worktree isolation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -3,8 +3,9 @@ name: workflow-authoring
|
|
|
3
3
|
description: >
|
|
4
4
|
编写与自定义 opencode-agentic-workflow 代码流程(JS 模块)时加载。当用户想
|
|
5
5
|
定义/创建一个 workflow、把某个重复流程自动化、给现有流程加步骤或参数、
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
放入 v1(opencode-dynamic-workflows)时代的 .js 脚本、或遇到流程装载报错
|
|
7
|
+
与版本冲突时使用。覆盖:需求澄清、flows 目录 JS 模块编写(含 v1 脚本
|
|
8
|
+
legacy 直接装载)、装载注册、workflow 工具试跑验证的完整链路。
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# workflow-authoring(代码流程编写)
|
|
@@ -28,7 +29,8 @@ JS 模块 → 保存即用(未知 id 自动重扫注册)→ 自己调 `workf
|
|
|
28
29
|
|
|
29
30
|
> v0.6.0 起声明式 JSON 流程已移除(`workflow_define` 工具同步下线),
|
|
30
31
|
> 自定义流程只有代码形态。历史 JSON 用 `@mickorz/opencode-agentic-workflow/core`
|
|
31
|
-
> API
|
|
32
|
+
> API 改写(文末有映射表)。**v0.8.0 起 v1 脚本(魔法全局 + 顶层 return)
|
|
33
|
+
> 原生装载,不改写**(见「v1 脚本(legacy)直接装载」节)。
|
|
32
34
|
|
|
33
35
|
## 第一步:澄清需求(缺什么问什么,别猜)
|
|
34
36
|
|
|
@@ -147,6 +149,47 @@ checkpointMode=auto-approve`(headless 必传)。关注:
|
|
|
147
149
|
以后想用,直接说:「用拼音口诀流程,词:xxx」
|
|
148
150
|
```
|
|
149
151
|
|
|
152
|
+
## v1 脚本(legacy)直接装载
|
|
153
|
+
|
|
154
|
+
**用户给了 opencode-dynamic-workflows(v1)时代的 .js 脚本?原样放进
|
|
155
|
+
flows/ 目录即可,绝不改写。** 识别条件:文件含 `export const meta = {...}`
|
|
156
|
+
且不含 `defineWorkflow`。装载后与 v2 流程同权(同一 workflow 工具调用、
|
|
157
|
+
journal、TUI 面板、metrics)。
|
|
158
|
+
|
|
159
|
+
```js
|
|
160
|
+
// flows/smoke-test.js —— v1 脚本原样
|
|
161
|
+
export const meta = { name: 'smoke_test', description: '最小冒烟' }
|
|
162
|
+
|
|
163
|
+
phase('Scan')
|
|
164
|
+
const info = await agent('列出当前目录下的文件')
|
|
165
|
+
|
|
166
|
+
phase('Echo')
|
|
167
|
+
const results = await parallel([
|
|
168
|
+
() => agent('说明工作流编排'),
|
|
169
|
+
() => agent('说明确定性重放'),
|
|
170
|
+
])
|
|
171
|
+
return { info, results }
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
可用全局(19 个,v1 全集):`agent(prompt, {label, timeoutMs, retries,
|
|
175
|
+
schema, model})`(返回字符串;schema 时返回解析对象)、`parallel` /
|
|
176
|
+
`pipeline` / `sequence` / `fallback` / `race`、`check(cond, msg)`、
|
|
177
|
+
`fileExists(p)`(同步)/ `commandSuccess(cmd)`、`phase` / `log` / `args` /
|
|
178
|
+
`setConcurrency` / `verify` / `judgePanel` / `retry` / `checkpoint(msg,
|
|
179
|
+
{label, default})`(返回 boolean)/ `workflow(id, args)`(子流程,需
|
|
180
|
+
journalDir)/ `console`。
|
|
181
|
+
|
|
182
|
+
与 v1 的已知差异(fail-loud,不静默):
|
|
183
|
+
- `setConcurrency(n)`:v2 并发由 executor 统一管理——警告后忽略
|
|
184
|
+
- `phase()` 只进日志与事件(v2 TUI 无阶段分组;步骤行 = 叶子调用)
|
|
185
|
+
- resume = 整体重跑(v1 脚本无静态步骤序,无前缀跳过)
|
|
186
|
+
- meta.name(snake_case)即 flow id;固定 version 1.0.0
|
|
187
|
+
- 脚本内不能有 static `import` / 除 meta 外的 `export`(装载期明确报错)
|
|
188
|
+
|
|
189
|
+
**选型**:新流程默认写 v2 `.mjs`(类型清晰、argsSchema 进工具 hint、
|
|
190
|
+
resume 支持步骤跳过);v1 脚本直接放进来跑,或用户明确要 v1 风格时才写
|
|
191
|
+
v1 形态。
|
|
192
|
+
|
|
150
193
|
## JSON → JS 迁移映射
|
|
151
194
|
|
|
152
195
|
| 旧 JSON 步骤 | 代码写法 |
|
|
@@ -169,6 +212,9 @@ checkpointMode=auto-approve`(headless 必传)。关注:
|
|
|
169
212
|
| `module must export a workflow` | 缺 `export default defineWorkflow({...})` |
|
|
170
213
|
| `workflow.run must be a function` | 定义缺 `async run(args, ctx)` |
|
|
171
214
|
| `JSON workflows were removed in v0.6.0` | flows 目录里还有 .json——按上面映射表改写成 JS |
|
|
215
|
+
| `legacy script ... cannot use static import` | v1 脚本里写了 import——全局是注入的;需要导入就转 v2 .mjs |
|
|
216
|
+
| `legacy scripts may only contain export const meta` | v1 脚本多余的 export——去掉或转 v2 .mjs |
|
|
217
|
+
| `meta.name must be a non-empty snake_case string` | v1 meta.name 形状不对(如含 `-`)——改成 snake_case |
|
|
172
218
|
| `workflow not found` + `flows load errors` 清单 | 文件没注册上:按指名错误修文件(语法/形状/保留 id/解析失败)直接重试,无需重启 |
|
|
173
219
|
| 改了已注册流程但不生效 | 已装载文件的修改(含升 version)需重启;新文件才能被重扫即时拾取 |
|
|
174
220
|
| `id "..." is reserved by a built-in` | 换个 id |
|