@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.
- 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 +7 -9
- package/dist/plugin/checkpoint-override.js +8 -14
- package/dist/plugin/checkpoint-override.js.map +1 -1
- 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 +406 -26
- 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 +160 -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 +5 -2
- package/dist/quality/checkpoint.js +11 -6
- 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 +215 -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/package.json +21 -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
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule 领域类型(P2-7)
|
|
3
|
+
*
|
|
4
|
+
* 对象关系(对齐 v1 的职责分离):
|
|
5
|
+
* Schedule = 用户配置(schedulesDir/<id>.json,工具管理,纯配置)
|
|
6
|
+
* .cursor = 触发游标(schedulesDir/.cursor.json:id -> 已消费的 slot epoch ms)
|
|
7
|
+
* ScheduleRun = 一次触发的记录(schedulesDir/runs/<id>.json,上限保留 50 条)
|
|
8
|
+
*
|
|
9
|
+
* 纪律:Core 侧模块,禁止 import OpenCode API(架构不变量)。
|
|
10
|
+
*/
|
|
11
|
+
/** 定时任务配置(纯配置;enabled/args 可由工具改写) */
|
|
12
|
+
export interface Schedule {
|
|
13
|
+
/** kebab-case;工具操作与记录文件的寻址键 */
|
|
14
|
+
id: string;
|
|
15
|
+
/** 展示名;缺省用 flow */
|
|
16
|
+
name?: string;
|
|
17
|
+
/** workflow id(内置或 workflow_define 定义的自定义流程) */
|
|
18
|
+
flow: string;
|
|
19
|
+
/** 四模式 cron 子集(本地时区;见 cron.ts) */
|
|
20
|
+
cron: string;
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
/** 透传给 workflow 的 args(含 topic) */
|
|
23
|
+
args?: Record<string, unknown>;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
updatedAt: string;
|
|
26
|
+
}
|
|
27
|
+
/** 一次触发的记录(scheduled 到点 / manual 手动 runNow) */
|
|
28
|
+
export type ScheduleRunStatus = "running" | "success" | "failed" | "aborted" | "skipped";
|
|
29
|
+
export interface ScheduleRun {
|
|
30
|
+
scheduleId: string;
|
|
31
|
+
flow: string;
|
|
32
|
+
/** workflow runId(journal 对齐;skipped 时无) */
|
|
33
|
+
workflowRunId?: string;
|
|
34
|
+
/** 触发来源:scheduled(到点)/ manual(runNow) */
|
|
35
|
+
trigger: "scheduled" | "manual";
|
|
36
|
+
/** 触发的时间槽 ISO(manual = 实际触发时刻) */
|
|
37
|
+
slot: string;
|
|
38
|
+
/** slot epoch 毫秒(排序/去重键) */
|
|
39
|
+
slotEpoch: number;
|
|
40
|
+
status: ScheduleRunStatus;
|
|
41
|
+
startedAt: string;
|
|
42
|
+
finishedAt?: string;
|
|
43
|
+
/** skipped 原因 / failed 错误摘要 */
|
|
44
|
+
note?: string;
|
|
45
|
+
}
|
|
46
|
+
/** list/get 聚合视图 */
|
|
47
|
+
export interface ScheduleView extends Schedule {
|
|
48
|
+
/** 最近一次记录(各状态含 skipped) */
|
|
49
|
+
lastRunAt?: string;
|
|
50
|
+
lastRunStatus?: ScheduleRunStatus;
|
|
51
|
+
/** 下一个未来 slot(本地时区 ISO;disabled 不算) */
|
|
52
|
+
nextRunAt?: string;
|
|
53
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule 领域类型(P2-7)
|
|
3
|
+
*
|
|
4
|
+
* 对象关系(对齐 v1 的职责分离):
|
|
5
|
+
* Schedule = 用户配置(schedulesDir/<id>.json,工具管理,纯配置)
|
|
6
|
+
* .cursor = 触发游标(schedulesDir/.cursor.json:id -> 已消费的 slot epoch ms)
|
|
7
|
+
* ScheduleRun = 一次触发的记录(schedulesDir/runs/<id>.json,上限保留 50 条)
|
|
8
|
+
*
|
|
9
|
+
* 纪律:Core 侧模块,禁止 import OpenCode API(架构不变量)。
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scheduler/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
package/dist/state/journal.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ export interface StepErrorRecord {
|
|
|
23
23
|
name: string;
|
|
24
24
|
message: string;
|
|
25
25
|
}
|
|
26
|
+
/** 步骤内 agent 调用的 token 用量累计(P2-8b;agent.completed 事件聚合) */
|
|
27
|
+
export interface StepUsage {
|
|
28
|
+
input: number;
|
|
29
|
+
output: number;
|
|
30
|
+
reasoning: number;
|
|
31
|
+
}
|
|
26
32
|
/** workflow 版本身份:resume 必须经 registry 解析到精确版本,绝不隐式取最新 */
|
|
27
33
|
export interface WorkflowIdentity {
|
|
28
34
|
id: string;
|
|
@@ -41,6 +47,12 @@ export interface StepRecord {
|
|
|
41
47
|
output?: unknown;
|
|
42
48
|
/** 失败信息 */
|
|
43
49
|
error?: StepErrorRecord;
|
|
50
|
+
/** 步骤内 agent 调用 token 累计(P2-8b 元数据;多 agent 步求和) */
|
|
51
|
+
usage?: StepUsage;
|
|
52
|
+
/** 步骤内最后一次 agent 调用的模型(P2-8b 元数据) */
|
|
53
|
+
model?: string;
|
|
54
|
+
/** 步骤内各 agent 调用的宿主会话 ID(Open Session 回放;pipeline 步多个) */
|
|
55
|
+
sessionIDs?: string[];
|
|
44
56
|
startedAt?: number;
|
|
45
57
|
completedAt?: number;
|
|
46
58
|
}
|
|
@@ -63,6 +75,13 @@ export interface WorkflowRun {
|
|
|
63
75
|
* 清理完成后置 undefined(见 RunJournal.clearWorkspace)。
|
|
64
76
|
*/
|
|
65
77
|
workspace?: WorkspaceIdentity;
|
|
78
|
+
/**
|
|
79
|
+
* 父 run 的 runId(P2-9 subflow lineage):subflow 子 run 指回发起它的
|
|
80
|
+
* 父 run;顶层 run 无此字段。跨 run 关系查询/进度树分组依据。
|
|
81
|
+
*/
|
|
82
|
+
parentRunId?: string;
|
|
83
|
+
/** P2-9 嵌套深度:顶层 0,subflow 子 run = 父 + 1(展示缩进用) */
|
|
84
|
+
depth?: number;
|
|
66
85
|
/** 失败/中断原因(run 级别) */
|
|
67
86
|
failure?: StepErrorRecord;
|
|
68
87
|
steps: StepRecord[];
|
|
@@ -80,4 +99,8 @@ export declare function createRun(input: {
|
|
|
80
99
|
args?: unknown;
|
|
81
100
|
stepNames?: string[];
|
|
82
101
|
stepCount: number;
|
|
102
|
+
/** 父 run(P2-9 subflow lineage;顶层 run 省略) */
|
|
103
|
+
parentRunId?: string;
|
|
104
|
+
/** 嵌套深度(P2-9;顶层 0) */
|
|
105
|
+
depth?: number;
|
|
83
106
|
}): WorkflowRun;
|
package/dist/state/journal.js
CHANGED
|
@@ -49,6 +49,8 @@ export function createRun(input) {
|
|
|
49
49
|
currentStep: -1,
|
|
50
50
|
startedAt: Date.now(),
|
|
51
51
|
args: input.args,
|
|
52
|
+
...(input.parentRunId !== undefined ? { parentRunId: input.parentRunId } : {}),
|
|
53
|
+
...(input.depth !== undefined ? { depth: input.depth } : {}),
|
|
52
54
|
steps: Array.from({ length: input.stepCount }, (_, index) => ({
|
|
53
55
|
index,
|
|
54
56
|
name: input.stepNames?.[index],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/state/journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/state/journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA+EH,8CAA8C;AAC9C,MAAM,UAAU,aAAa;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAA;AACpC,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;IACrD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAClD,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,SAAS,CAAC,KAUzB;IACC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa,EAAE;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC,CAAC;QACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5D,KAAK;YACL,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;YAC9B,MAAM,EAAE,SAAkB;SAC3B,CAAC,CAAC;KACJ,CAAA;AACH,CAAC"}
|
package/dist/state/recorder.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { type WorkflowIdentity, type WorkflowRun } from "./journal.js";
|
|
17
17
|
import type { ExecutionStore } from "./store.js";
|
|
18
18
|
import type { WorkspaceIdentity } from "../workspace/provider.js";
|
|
19
|
+
import { type RunProgressSnapshot } from "../observability/events.js";
|
|
19
20
|
export interface JournalStartInput {
|
|
20
21
|
workflow: WorkflowIdentity;
|
|
21
22
|
/** 执行参数(重建执行所需的最小上下文) */
|
|
@@ -25,17 +26,76 @@ export interface JournalStartInput {
|
|
|
25
26
|
stepCount: number;
|
|
26
27
|
/** 显式 runId(缺省自动生成) */
|
|
27
28
|
runId?: string;
|
|
29
|
+
/** 父 run(P2-9 subflow lineage;顶层 run 省略) */
|
|
30
|
+
parentRunId?: string;
|
|
31
|
+
/** 嵌套深度(P2-9;顶层 0) */
|
|
32
|
+
depth?: number;
|
|
28
33
|
}
|
|
34
|
+
/** run -> 进度快照(P2-8 数据源;不含步骤 output,失败摘要截断 200 字符) */
|
|
35
|
+
export declare function toProgressSnapshot(run: WorkflowRun): RunProgressSnapshot;
|
|
36
|
+
/** 步骤详情(journal 全量记录的 RPC 投影:输出/错误/耗时/token/模型预览) */
|
|
37
|
+
export interface RunStepDetail {
|
|
38
|
+
index: number;
|
|
39
|
+
name?: string;
|
|
40
|
+
status: string;
|
|
41
|
+
startedAt?: number;
|
|
42
|
+
completedAt?: number;
|
|
43
|
+
/** 步骤输入预览(≤200 字符) */
|
|
44
|
+
input?: string;
|
|
45
|
+
/** 步骤输出预览(≤500 字符) */
|
|
46
|
+
output?: string;
|
|
47
|
+
/** 失败摘要 "Name: message"(≤300 字符) */
|
|
48
|
+
error?: string;
|
|
49
|
+
/** 步骤内 agent 调用 token 累计(P2-8b 元数据) */
|
|
50
|
+
usage?: {
|
|
51
|
+
input: number;
|
|
52
|
+
output: number;
|
|
53
|
+
reasoning: number;
|
|
54
|
+
};
|
|
55
|
+
/** 步骤内最后一次 agent 调用的模型(P2-8b 元数据) */
|
|
56
|
+
model?: string;
|
|
57
|
+
/** 步骤内各 agent 调用的宿主会话 ID(Open Session 回放;面板据此拉取对话) */
|
|
58
|
+
sessionIDs?: string[];
|
|
59
|
+
}
|
|
60
|
+
/** run 详情(P2-8b 节点详情 RPC 载荷:journal 单读,含预览化的步骤载荷) */
|
|
61
|
+
export interface RunDetail {
|
|
62
|
+
runId: string;
|
|
63
|
+
workflow: {
|
|
64
|
+
id: string;
|
|
65
|
+
version: string;
|
|
66
|
+
};
|
|
67
|
+
status: string;
|
|
68
|
+
startedAt: number;
|
|
69
|
+
completedAt?: number;
|
|
70
|
+
/** run 级失败摘要(≤300 字符) */
|
|
71
|
+
failure?: string;
|
|
72
|
+
parentRunId?: string;
|
|
73
|
+
depth?: number;
|
|
74
|
+
/** args 预览(≤200 字符;重建执行的最小上下文) */
|
|
75
|
+
args?: string;
|
|
76
|
+
steps: RunStepDetail[];
|
|
77
|
+
}
|
|
78
|
+
/** run -> 详情(journal 事实源;载荷只做预览化,绝不放大体输出) */
|
|
79
|
+
export declare function toRunDetail(run: WorkflowRun): RunDetail;
|
|
29
80
|
export declare class RunJournal {
|
|
30
81
|
private readonly store;
|
|
31
82
|
readonly run: WorkflowRun;
|
|
32
83
|
private constructor();
|
|
84
|
+
/**
|
|
85
|
+
* P2-8b 步骤元数据:订阅 agent.completed(runId 过滤)聚合 token/模型
|
|
86
|
+
* 到 currentStep。事件同步 fan-out,先于 stepCompleted 落盘——无需
|
|
87
|
+
* 额外持久化钩子。终态退订防泄漏;reopen 重新订阅。
|
|
88
|
+
*/
|
|
89
|
+
private offUsageMeta;
|
|
90
|
+
private subscribeUsageMeta;
|
|
33
91
|
/** 创建新 run 并持久化初始状态 */
|
|
34
92
|
static start(store: ExecutionStore, input: JournalStartInput): Promise<RunJournal>;
|
|
35
93
|
/** 附加到已有 run(resume 场景:读取历史 journal 继续记录);不存在返回 undefined */
|
|
36
94
|
static attach(store: ExecutionStore, runId: string): Promise<RunJournal | undefined>;
|
|
37
95
|
private assertOpen;
|
|
38
96
|
private step;
|
|
97
|
+
/** P2-8:状态转换后派发进度快照(同步 fan-out,handler 抛错被 bus 隔离) */
|
|
98
|
+
private emitProgress;
|
|
39
99
|
stepStarted(index: number, input?: unknown): Promise<void>;
|
|
40
100
|
stepCompleted(index: number, output?: unknown): Promise<void>;
|
|
41
101
|
stepFailed(index: number, error: unknown): Promise<void>;
|
|
@@ -43,6 +103,13 @@ export declare class RunJournal {
|
|
|
43
103
|
complete(): Promise<void>;
|
|
44
104
|
/** run 失败收口:仍为 pending 的步骤标记 skipped(fail-fast 下它们不会被执行) */
|
|
45
105
|
fail(error: unknown): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* run 中止收口(P1-3 run 控制):协作式 stop 到达步骤边界 / 孤儿 run 被
|
|
108
|
+
* workflow_control stop 收口。与 fail 同构,状态用 aborted——与失败可区分
|
|
109
|
+
* (用户主动停 ≠ 出错)。非 completed/failed 步骤一律标 skipped
|
|
110
|
+
* (含仍处 running 的被中断步骤:穿透式 abort 不经 stepFailed)。
|
|
111
|
+
*/
|
|
112
|
+
abort(reason?: unknown): Promise<void>;
|
|
46
113
|
/**
|
|
47
114
|
* 记录 workspace 身份(P2.7 隔离启用时,resume attach 的依据)。
|
|
48
115
|
* 仅限 run 进行中(收口后不可再写)。
|
package/dist/state/recorder.js
CHANGED
|
@@ -14,6 +14,76 @@
|
|
|
14
14
|
* status=aborted 预留给中断场景(交互拒绝/人工打断,P2.3+)。
|
|
15
15
|
*/
|
|
16
16
|
import { createRun, toErrorRecord, } from "./journal.js";
|
|
17
|
+
import { emitEvent, getEventBus, } from "../observability/events.js";
|
|
18
|
+
/** run -> 进度快照(P2-8 数据源;不含步骤 output,失败摘要截断 200 字符) */
|
|
19
|
+
export function toProgressSnapshot(run) {
|
|
20
|
+
return {
|
|
21
|
+
runId: run.runId,
|
|
22
|
+
workflow: { id: run.workflow.id, version: run.workflow.version },
|
|
23
|
+
status: run.status,
|
|
24
|
+
startedAt: run.startedAt,
|
|
25
|
+
...(run.completedAt !== undefined ? { completedAt: run.completedAt } : {}),
|
|
26
|
+
...(run.failure !== undefined
|
|
27
|
+
? { failure: run.failure.message.slice(0, 200) }
|
|
28
|
+
: {}),
|
|
29
|
+
...(run.parentRunId !== undefined ? { parentRunId: run.parentRunId } : {}),
|
|
30
|
+
...(run.depth !== undefined ? { depth: run.depth } : {}),
|
|
31
|
+
steps: run.steps.map((step) => ({
|
|
32
|
+
index: step.index,
|
|
33
|
+
...(step.name !== undefined ? { name: step.name } : {}),
|
|
34
|
+
status: step.status,
|
|
35
|
+
...(step.startedAt !== undefined ? { startedAt: step.startedAt } : {}),
|
|
36
|
+
...(step.completedAt !== undefined ? { completedAt: step.completedAt } : {}),
|
|
37
|
+
})),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** 值 -> 单行预览(字符串直用,其余 JSON 化;超长截断加 …) */
|
|
41
|
+
function previewValue(value, max) {
|
|
42
|
+
if (value === undefined)
|
|
43
|
+
return "";
|
|
44
|
+
const text = typeof value === "string" ? value : JSON.stringify(value) ?? String(value);
|
|
45
|
+
const collapsed = text.replace(/\s+/g, " ").trim();
|
|
46
|
+
return collapsed.length <= max ? collapsed : `${collapsed.slice(0, max)}…`;
|
|
47
|
+
}
|
|
48
|
+
/** run -> 详情(journal 事实源;载荷只做预览化,绝不放大体输出) */
|
|
49
|
+
export function toRunDetail(run) {
|
|
50
|
+
return {
|
|
51
|
+
runId: run.runId,
|
|
52
|
+
workflow: { id: run.workflow.id, version: run.workflow.version },
|
|
53
|
+
status: run.status,
|
|
54
|
+
startedAt: run.startedAt,
|
|
55
|
+
...(run.completedAt !== undefined ? { completedAt: run.completedAt } : {}),
|
|
56
|
+
...(run.failure !== undefined
|
|
57
|
+
? {
|
|
58
|
+
failure: previewValue(`${run.failure.name}: ${run.failure.message}`, 300),
|
|
59
|
+
}
|
|
60
|
+
: {}),
|
|
61
|
+
...(run.parentRunId !== undefined ? { parentRunId: run.parentRunId } : {}),
|
|
62
|
+
...(run.depth !== undefined ? { depth: run.depth } : {}),
|
|
63
|
+
...(run.args !== undefined ? { args: previewValue(run.args, 200) } : {}),
|
|
64
|
+
steps: run.steps.map((step) => ({
|
|
65
|
+
index: step.index,
|
|
66
|
+
...(step.name !== undefined ? { name: step.name } : {}),
|
|
67
|
+
status: step.status,
|
|
68
|
+
...(step.startedAt !== undefined ? { startedAt: step.startedAt } : {}),
|
|
69
|
+
...(step.completedAt !== undefined ? { completedAt: step.completedAt } : {}),
|
|
70
|
+
...(step.input !== undefined && previewValue(step.input, 200) !== ""
|
|
71
|
+
? { input: previewValue(step.input, 200) }
|
|
72
|
+
: {}),
|
|
73
|
+
...(step.output !== undefined && previewValue(step.output, 500) !== ""
|
|
74
|
+
? { output: previewValue(step.output, 500) }
|
|
75
|
+
: {}),
|
|
76
|
+
...(step.error !== undefined
|
|
77
|
+
? {
|
|
78
|
+
error: previewValue(`${step.error.name}: ${step.error.message}`, 300),
|
|
79
|
+
}
|
|
80
|
+
: {}),
|
|
81
|
+
...(step.usage !== undefined ? { usage: step.usage } : {}),
|
|
82
|
+
...(step.model !== undefined ? { model: step.model } : {}),
|
|
83
|
+
...(step.sessionIDs !== undefined && step.sessionIDs.length > 0 ? { sessionIDs: step.sessionIDs } : {}),
|
|
84
|
+
})),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
17
87
|
export class RunJournal {
|
|
18
88
|
store;
|
|
19
89
|
run;
|
|
@@ -21,16 +91,54 @@ export class RunJournal {
|
|
|
21
91
|
this.store = store;
|
|
22
92
|
this.run = run;
|
|
23
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* P2-8b 步骤元数据:订阅 agent.completed(runId 过滤)聚合 token/模型
|
|
96
|
+
* 到 currentStep。事件同步 fan-out,先于 stepCompleted 落盘——无需
|
|
97
|
+
* 额外持久化钩子。终态退订防泄漏;reopen 重新订阅。
|
|
98
|
+
*/
|
|
99
|
+
offUsageMeta;
|
|
100
|
+
subscribeUsageMeta() {
|
|
101
|
+
this.offUsageMeta?.();
|
|
102
|
+
this.offUsageMeta = getEventBus().subscribe((event) => {
|
|
103
|
+
if (event.type !== "agent.completed")
|
|
104
|
+
return;
|
|
105
|
+
if (event.runId !== this.run.runId)
|
|
106
|
+
return;
|
|
107
|
+
const step = this.run.steps[this.run.currentStep];
|
|
108
|
+
if (!step || step.status !== "running")
|
|
109
|
+
return;
|
|
110
|
+
if (event.usage) {
|
|
111
|
+
step.usage = {
|
|
112
|
+
input: (step.usage?.input ?? 0) + (event.usage.input ?? 0),
|
|
113
|
+
output: (step.usage?.output ?? 0) + (event.usage.output ?? 0),
|
|
114
|
+
reasoning: (step.usage?.reasoning ?? 0) + (event.usage.reasoning ?? 0),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (event.model)
|
|
118
|
+
step.model = event.model;
|
|
119
|
+
// Open Session 回放:会话 ID 按发生顺序累积(pipeline 步 = 多条目多会话)
|
|
120
|
+
if (event.sessionID) {
|
|
121
|
+
step.sessionIDs = [...(step.sessionIDs ?? []), event.sessionID];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
24
125
|
/** 创建新 run 并持久化初始状态 */
|
|
25
126
|
static async start(store, input) {
|
|
26
127
|
const run = createRun(input);
|
|
27
128
|
await store.createRun(run);
|
|
28
|
-
|
|
129
|
+
emitEvent({ type: "run.progress", run: toProgressSnapshot(run) });
|
|
130
|
+
const journal = new RunJournal(store, run);
|
|
131
|
+
journal.subscribeUsageMeta();
|
|
132
|
+
return journal;
|
|
29
133
|
}
|
|
30
134
|
/** 附加到已有 run(resume 场景:读取历史 journal 继续记录);不存在返回 undefined */
|
|
31
135
|
static async attach(store, runId) {
|
|
32
136
|
const run = await store.getRun(runId);
|
|
33
|
-
|
|
137
|
+
if (!run)
|
|
138
|
+
return undefined;
|
|
139
|
+
const journal = new RunJournal(store, run);
|
|
140
|
+
journal.subscribeUsageMeta();
|
|
141
|
+
return journal;
|
|
34
142
|
}
|
|
35
143
|
assertOpen() {
|
|
36
144
|
if (this.run.status !== "running") {
|
|
@@ -44,6 +152,10 @@ export class RunJournal {
|
|
|
44
152
|
}
|
|
45
153
|
return step;
|
|
46
154
|
}
|
|
155
|
+
/** P2-8:状态转换后派发进度快照(同步 fan-out,handler 抛错被 bus 隔离) */
|
|
156
|
+
emitProgress() {
|
|
157
|
+
emitEvent({ type: "run.progress", run: toProgressSnapshot(this.run) });
|
|
158
|
+
}
|
|
47
159
|
async stepStarted(index, input) {
|
|
48
160
|
this.assertOpen();
|
|
49
161
|
const step = this.step(index);
|
|
@@ -52,6 +164,7 @@ export class RunJournal {
|
|
|
52
164
|
step.startedAt = Date.now();
|
|
53
165
|
this.run.currentStep = index;
|
|
54
166
|
await this.store.saveRun(this.run);
|
|
167
|
+
this.emitProgress();
|
|
55
168
|
}
|
|
56
169
|
async stepCompleted(index, output) {
|
|
57
170
|
this.assertOpen();
|
|
@@ -60,6 +173,7 @@ export class RunJournal {
|
|
|
60
173
|
step.output = output;
|
|
61
174
|
step.completedAt = Date.now();
|
|
62
175
|
await this.store.saveRun(this.run);
|
|
176
|
+
this.emitProgress();
|
|
63
177
|
}
|
|
64
178
|
async stepFailed(index, error) {
|
|
65
179
|
this.assertOpen();
|
|
@@ -68,6 +182,7 @@ export class RunJournal {
|
|
|
68
182
|
step.error = toErrorRecord(error);
|
|
69
183
|
step.completedAt = Date.now();
|
|
70
184
|
await this.store.saveRun(this.run);
|
|
185
|
+
this.emitProgress();
|
|
71
186
|
}
|
|
72
187
|
/** run 成功收口 */
|
|
73
188
|
async complete() {
|
|
@@ -75,6 +190,9 @@ export class RunJournal {
|
|
|
75
190
|
this.run.status = "completed";
|
|
76
191
|
this.run.completedAt = Date.now();
|
|
77
192
|
await this.store.saveRun(this.run);
|
|
193
|
+
this.offUsageMeta?.();
|
|
194
|
+
this.offUsageMeta = undefined;
|
|
195
|
+
this.emitProgress();
|
|
78
196
|
}
|
|
79
197
|
/** run 失败收口:仍为 pending 的步骤标记 skipped(fail-fast 下它们不会被执行) */
|
|
80
198
|
async fail(error) {
|
|
@@ -87,6 +205,29 @@ export class RunJournal {
|
|
|
87
205
|
step.status = "skipped";
|
|
88
206
|
}
|
|
89
207
|
await this.store.saveRun(this.run);
|
|
208
|
+
this.offUsageMeta?.();
|
|
209
|
+
this.offUsageMeta = undefined;
|
|
210
|
+
this.emitProgress();
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* run 中止收口(P1-3 run 控制):协作式 stop 到达步骤边界 / 孤儿 run 被
|
|
214
|
+
* workflow_control stop 收口。与 fail 同构,状态用 aborted——与失败可区分
|
|
215
|
+
* (用户主动停 ≠ 出错)。非 completed/failed 步骤一律标 skipped
|
|
216
|
+
* (含仍处 running 的被中断步骤:穿透式 abort 不经 stepFailed)。
|
|
217
|
+
*/
|
|
218
|
+
async abort(reason) {
|
|
219
|
+
this.assertOpen();
|
|
220
|
+
this.run.status = "aborted";
|
|
221
|
+
this.run.completedAt = Date.now();
|
|
222
|
+
this.run.failure = reason === undefined ? undefined : toErrorRecord(reason);
|
|
223
|
+
for (const step of this.run.steps) {
|
|
224
|
+
if (step.status !== "completed" && step.status !== "failed")
|
|
225
|
+
step.status = "skipped";
|
|
226
|
+
}
|
|
227
|
+
await this.store.saveRun(this.run);
|
|
228
|
+
this.offUsageMeta?.();
|
|
229
|
+
this.offUsageMeta = undefined;
|
|
230
|
+
this.emitProgress();
|
|
90
231
|
}
|
|
91
232
|
/**
|
|
92
233
|
* 记录 workspace 身份(P2.7 隔离启用时,resume attach 的依据)。
|
|
@@ -128,11 +269,16 @@ export class RunJournal {
|
|
|
128
269
|
step.error = undefined;
|
|
129
270
|
step.input = undefined;
|
|
130
271
|
step.output = undefined;
|
|
272
|
+
step.usage = undefined;
|
|
273
|
+
step.model = undefined;
|
|
274
|
+
step.sessionIDs = undefined;
|
|
131
275
|
step.startedAt = undefined;
|
|
132
276
|
step.completedAt = undefined;
|
|
133
277
|
}
|
|
134
278
|
}
|
|
135
279
|
await this.store.saveRun(this.run);
|
|
280
|
+
this.subscribeUsageMeta();
|
|
281
|
+
this.emitProgress();
|
|
136
282
|
}
|
|
137
283
|
}
|
|
138
284
|
//# sourceMappingURL=recorder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/state/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,aAAa,GAGd,MAAM,cAAc,CAAA;AAerB,MAAM,OAAO,UAAU;IAEF,KAAK;IACb,GAAG;IAFd,YACmB,KAAqB,EAC7B,GAAgB;qBADR,KAAK;mBACb,GAAG;IACX,CAAC;IAEJ,uBAAuB;IACvB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAqB,EAAE,KAAwB;QAChE,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;QAC5B,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC1B,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAqB,EAAE,KAAa;QACtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACrD,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,KAAa;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;QAC9E,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,KAAe;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC3B,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAA;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,MAAgB;QACjD,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,KAAc;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,eAAe;IACf,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAA;QAC7B,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,IAAI,CAAC,KAAc;QACvB,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACxD,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,QAA2B;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAA;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS;YAAE,OAAM;QAC5C,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAM;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAA;QAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;gBACvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;gBACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;gBACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;gBACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;gBAC1B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;YAC9B,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/state/recorder.ts"],"names":[],"mappings":"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"}
|
package/dist/workflow/agent.d.ts
CHANGED
|
@@ -3,6 +3,47 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 不感知 ctx / OpenCode:只经由 requireExecutor() 拿到当前绑定的
|
|
5
5
|
* AgentExecutor 并执行。P2.4 起派发 agent.started / completed / failed 事件。
|
|
6
|
+
*
|
|
7
|
+
* P1-4 调用级选项(v1 parity):
|
|
8
|
+
* - model:覆盖本次调用的子会话模型("providerID/modelId" 或对象),
|
|
9
|
+
* 经 AgentTask.model 透传,executor 以 task.model 优先于构造期默认
|
|
10
|
+
* - timeoutMs:单次尝试超时(Promise.race,超时抛 AgentTimeoutError);
|
|
11
|
+
* 超时不会中断底层会话(无 AbortSignal 注入点),只是不再等待——
|
|
12
|
+
* 与 run 控制的协作式停止同一诚实语义
|
|
13
|
+
* - retries / retryDelayMs:失败重试(对超时同样生效——每次尝试独立计时)
|
|
14
|
+
*
|
|
15
|
+
* 纪律:事件保持调用级一对 started/completed|failed(不按尝试拆分)。
|
|
6
16
|
*/
|
|
7
17
|
import type { AgentResult } from "../runtime/executor.js";
|
|
8
|
-
|
|
18
|
+
import { type ArgsSchema } from "../registry/schema.js";
|
|
19
|
+
export interface AgentCallOptions {
|
|
20
|
+
/** 覆盖本次调用的模型:"providerID/modelId"(或对象形式,含 variant) */
|
|
21
|
+
model?: string | {
|
|
22
|
+
providerID: string;
|
|
23
|
+
id: string;
|
|
24
|
+
variant?: string;
|
|
25
|
+
};
|
|
26
|
+
/** 单次尝试超时(ms);超时抛 AgentTimeoutError */
|
|
27
|
+
timeoutMs?: number;
|
|
28
|
+
/** 失败重试次数(0 = 不重试;对超时同样生效) */
|
|
29
|
+
retries?: number;
|
|
30
|
+
/** 重试间隔 ms(默认 0) */
|
|
31
|
+
retryDelayMs?: number;
|
|
32
|
+
/**
|
|
33
|
+
* P1-6 结构化输出 shim:要求子 agent 按 JSON Schema 返回 JSON 值,
|
|
34
|
+
* 输出经解析 + validateArgs 校验后挂到 result.structured。
|
|
35
|
+
* 注意:OpenCode v2 会话 API 无原生结构化输出(PromptInput.Prompt 2.0.22
|
|
36
|
+
* 仅 text/files/agents/skills,无 v1 的 format 字段)——本 shim 靠
|
|
37
|
+
* prompt 指令 + 校验 + 失败可重试(retries)保证可靠性,非宿主级约束。
|
|
38
|
+
*/
|
|
39
|
+
schema?: ArgsSchema;
|
|
40
|
+
}
|
|
41
|
+
/** 结构化输出解析/校验失败(配合 retries 可重试) */
|
|
42
|
+
export declare class AgentSchemaError extends Error {
|
|
43
|
+
constructor(message: string);
|
|
44
|
+
}
|
|
45
|
+
/** 单次尝试超时(步骤级失败、journal 可见;底层会话不被硬杀) */
|
|
46
|
+
export declare class AgentTimeoutError extends Error {
|
|
47
|
+
constructor(timeoutMs: number);
|
|
48
|
+
}
|
|
49
|
+
export declare function agent(prompt: string, options?: AgentCallOptions): Promise<AgentResult>;
|