aitable-workflow-base 0.1.28 → 0.1.29-beta.1790736949347
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/dist/fixtures.d.ts +61 -73
- package/dist/fixtures.js +10 -24
- package/dist/fixtures.js.map +1 -1
- package/dist/index.d.ts +153 -17
- package/dist/index.js +86 -23
- package/dist/index.js.map +1 -1
- package/dist/{stage-state-BzR0KHBg.d.ts → stage-state-DGAoleD0.d.ts} +91 -16
- package/package.json +1 -1
package/dist/fixtures.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as StageTaskIdentityDTO } from './stage-state-
|
|
1
|
+
import { S as StageTaskIdentityDTO } from './stage-state-DGAoleD0.js';
|
|
2
2
|
|
|
3
3
|
declare const projectFiles: {
|
|
4
4
|
path: string;
|
|
@@ -79,32 +79,36 @@ declare const projectState: {
|
|
|
79
79
|
identity: StageTaskIdentityDTO;
|
|
80
80
|
state: {
|
|
81
81
|
phase: "ready";
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
82
|
+
tables: {
|
|
83
|
+
workflowId: string;
|
|
84
|
+
label: string;
|
|
85
|
+
tableUrl: string;
|
|
86
|
+
baseId: string;
|
|
87
|
+
tableId: string;
|
|
88
|
+
schema: {
|
|
89
|
+
fieldCount: number;
|
|
90
|
+
viewCount: number;
|
|
91
|
+
fields: ({
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
type: string;
|
|
95
|
+
group: "business";
|
|
96
|
+
options?: undefined;
|
|
97
|
+
} | {
|
|
98
|
+
id: string;
|
|
99
|
+
name: string;
|
|
100
|
+
type: string;
|
|
101
|
+
options: string[];
|
|
102
|
+
group: "process";
|
|
103
|
+
})[];
|
|
104
|
+
views: {
|
|
105
|
+
id: string;
|
|
106
|
+
name: string;
|
|
107
|
+
kind: "grid";
|
|
108
|
+
desc: string;
|
|
109
|
+
}[];
|
|
110
|
+
};
|
|
111
|
+
}[];
|
|
108
112
|
warnings: never[];
|
|
109
113
|
};
|
|
110
114
|
next: {
|
|
@@ -125,26 +129,6 @@ declare const projectState: {
|
|
|
125
129
|
};
|
|
126
130
|
};
|
|
127
131
|
};
|
|
128
|
-
runSnapshot: {
|
|
129
|
-
records: {
|
|
130
|
-
id: string;
|
|
131
|
-
title: string;
|
|
132
|
-
state: string;
|
|
133
|
-
status: "running";
|
|
134
|
-
currentStepId: string;
|
|
135
|
-
doneStepIds: string[];
|
|
136
|
-
createdAt: number;
|
|
137
|
-
updatedAt: number;
|
|
138
|
-
}[];
|
|
139
|
-
logs: {
|
|
140
|
-
id: string;
|
|
141
|
-
ts: number;
|
|
142
|
-
itemId: string;
|
|
143
|
-
stepId: string;
|
|
144
|
-
level: "info";
|
|
145
|
-
text: string;
|
|
146
|
-
}[];
|
|
147
|
-
};
|
|
148
132
|
updatedAt: string;
|
|
149
133
|
};
|
|
150
134
|
declare const designClarifyAwaitingState: {
|
|
@@ -431,32 +415,36 @@ declare const setupEvents: ({
|
|
|
431
415
|
identity: StageTaskIdentityDTO;
|
|
432
416
|
state: {
|
|
433
417
|
phase: "ready";
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
418
|
+
tables: {
|
|
419
|
+
workflowId: string;
|
|
420
|
+
label: string;
|
|
421
|
+
tableUrl: string;
|
|
422
|
+
baseId: string;
|
|
423
|
+
tableId: string;
|
|
424
|
+
schema: {
|
|
425
|
+
fieldCount: number;
|
|
426
|
+
viewCount: number;
|
|
427
|
+
fields: ({
|
|
428
|
+
id: string;
|
|
429
|
+
name: string;
|
|
430
|
+
type: string;
|
|
431
|
+
group: "business";
|
|
432
|
+
options?: undefined;
|
|
433
|
+
} | {
|
|
434
|
+
id: string;
|
|
435
|
+
name: string;
|
|
436
|
+
type: string;
|
|
437
|
+
options: string[];
|
|
438
|
+
group: "process";
|
|
439
|
+
})[];
|
|
440
|
+
views: {
|
|
441
|
+
id: string;
|
|
442
|
+
name: string;
|
|
443
|
+
kind: "grid";
|
|
444
|
+
desc: string;
|
|
445
|
+
}[];
|
|
446
|
+
};
|
|
447
|
+
}[];
|
|
460
448
|
warnings: never[];
|
|
461
449
|
};
|
|
462
450
|
next: {
|
package/dist/fixtures.js
CHANGED
|
@@ -107,10 +107,16 @@ var setupReady = {
|
|
|
107
107
|
identity: identity("setup", "task_setup_1", true),
|
|
108
108
|
state: {
|
|
109
109
|
phase: "ready",
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
tables: [
|
|
111
|
+
{
|
|
112
|
+
workflowId: "default",
|
|
113
|
+
label: "\u6570\u636E\u8868",
|
|
114
|
+
tableUrl: "https://alidocs.dingtalk.com/i/nodes/base_contract",
|
|
115
|
+
baseId: "base_contract",
|
|
116
|
+
tableId: "table_contract",
|
|
117
|
+
schema: setupSchema
|
|
118
|
+
}
|
|
119
|
+
],
|
|
114
120
|
warnings: []
|
|
115
121
|
},
|
|
116
122
|
next: { kind: "idle" }
|
|
@@ -143,26 +149,6 @@ var projectState = {
|
|
|
143
149
|
setup: setupReady,
|
|
144
150
|
run: runListening
|
|
145
151
|
},
|
|
146
|
-
runSnapshot: {
|
|
147
|
-
records: [{
|
|
148
|
-
id: "rec_contract_1",
|
|
149
|
-
title: "\u5BA2\u6237\u53CD\u9988\u53D1\u7968\u4FE1\u606F\u9519\u8BEF",
|
|
150
|
-
state: "\u5904\u7406\u4E2D",
|
|
151
|
-
status: "running",
|
|
152
|
-
currentStepId: "validate_invoice",
|
|
153
|
-
doneStepIds: ["classify"],
|
|
154
|
-
createdAt: 17841312e5,
|
|
155
|
-
updatedAt: 178413126e4
|
|
156
|
-
}],
|
|
157
|
-
logs: [{
|
|
158
|
-
id: "log_contract_1",
|
|
159
|
-
ts: 178413126e4,
|
|
160
|
-
itemId: "rec_contract_1",
|
|
161
|
-
stepId: "validate_invoice",
|
|
162
|
-
level: "info",
|
|
163
|
-
text: "\u8FDB\u5165\u53D1\u7968\u4FE1\u606F\u6821\u9A8C\u6B65\u9AA4"
|
|
164
|
-
}]
|
|
165
|
-
},
|
|
166
152
|
updatedAt: now
|
|
167
153
|
};
|
|
168
154
|
var designClarifyAwaitingState = {
|
package/dist/fixtures.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fixtures.ts"],"sourcesContent":["/**\n * fixtures — 服务端契约的样板数据(`aitable-workflow-base/fixtures`)\n *\n * 只被测试消费:core 自己的契约测试、web 的 derive / reducer 测试。刻意**不**从根\n * barrel 导出——挂上去就会被每个 import core 的生产模块一起打进产物。\n *\n * 每条夹具都用 `satisfies` 而不是类型标注:契约一改这里立刻编译失败,\n * 而不是等到运行期才发现测试在验证一个已经不存在的形状。\n */\nimport type {\n DesignArtifactManifestDTO,\n DesignEventDTO,\n ProjectFileDTO,\n RunEventDTO,\n SetupSchemaSummaryDTO,\n SetupEventDTO,\n} from \"./server.js\";\nimport type {\n DesignConfirmedDTO,\n DesignState,\n InitState,\n ProjectStateResponseDTO,\n RunState,\n SetupState,\n StageStateResponseDTO,\n StageTaskIdentityDTO,\n} from \"./stage-state.js\";\n\nconst now = \"2026-07-14T00:00:00.000Z\";\n\nfunction identity(stage: StageTaskIdentityDTO[\"stage\"], id: string, completed = false): StageTaskIdentityDTO {\n return {\n id,\n projectId: \"wf_contract\",\n stage,\n attempt: 1,\n startedAt: now,\n updatedAt: now,\n ...(completed ? { completedAt: now } : {}),\n };\n}\n\nconst confirmed = {\n form: {\n id: \"contract_discovery\",\n title: \"确认工作流设计约束\",\n questions: [{\n id: \"scope\",\n label: \"优先覆盖哪个流程范围?\",\n type: \"radio\",\n required: true,\n options: [\n { label: \"售后工单\", value: \"after_sales\" },\n { label: \"客户回访\", value: \"revisit\" },\n ],\n }],\n },\n answers: { scope: \"after_sales\" },\n clarifications: \"只覆盖售后工单,回访下期再做\",\n summary: \"用户确认优先覆盖售后工单\",\n agentSessionId: \"sess_contract\",\n} satisfies DesignConfirmedDTO;\n\nconst designManifest = {\n projectId: \"wf_contract\",\n taskId: \"task_design_1\",\n designVersion: 1,\n status: \"ready\",\n expected: [\"workflow.yml\"],\n generated: [{ path: \"workflow.yml\", kind: \"workflow\", checksum: \"sha256:contract\", required: true }],\n validation: { passed: true, errors: [], warnings: [] },\n createdAt: now,\n updatedAt: now,\n} satisfies DesignArtifactManifestDTO;\n\nconst setupSchema = {\n fieldCount: 2,\n viewCount: 1,\n fields: [\n { id: \"fld_title\", name: \"标题\", type: \"text\", group: \"business\" },\n { id: \"fld_state\", name: \"状态\", type: \"single_select\", options: [\"待处理\", \"处理中\", \"已完成\"], group: \"process\" },\n ],\n views: [\n { id: \"view_main\", name: \"全部工单\", kind: \"grid\", desc: \"查看全部售后工单\" },\n ],\n} satisfies SetupSchemaSummaryDTO;\n\n// ── 各阶段的阶段状态 ─────────────────────────────────────────\nconst initReady = {\n identity: identity(\"init\", \"task_init_1\", true),\n state: { phase: \"ready\", warnings: [], roleFiles: [] },\n next: { kind: \"idle\" },\n} satisfies StageStateResponseDTO<InitState>;\n\nconst designGenerating = {\n identity: identity(\"design\", \"task_design_1\"),\n state: { phase: \"generating\", confirmed: confirmed, round: 1, isFix: false },\n next: { kind: \"attach_stream\", endpoint: \"/api/projects/wf_contract/design\" },\n} satisfies StageStateResponseDTO<DesignState>;\n\nconst designReady = {\n identity: identity(\"design\", \"task_design_1\", true),\n state: { phase: \"ready\", confirmed: confirmed, manifest: designManifest, rounds: 2 },\n next: { kind: \"idle\" },\n} satisfies StageStateResponseDTO<DesignState>;\n\n/** 澄清等待用户:`next` 由服务端给出确认端点,客户端不自己拼 path。 */\nconst designClarifyAwaiting = {\n identity: identity(\"design\", \"task_design_1\"),\n state: {\n phase: \"clarify_awaiting\",\n form: confirmed.form,\n answers: { scope: \"after_sales\" },\n agentSessionId: \"sess_contract\",\n },\n next: {\n kind: \"await_user\",\n action: {\n type: \"confirm_input\",\n label: \"确认后开始生成\",\n description: \"请先确认需求澄清卡片,再开始生成工作流方案。\",\n api: { method: \"POST\", path: \"/api/projects/wf_contract/design/discovery/confirm\" },\n },\n },\n} satisfies StageStateResponseDTO<DesignState>;\n\nconst designGenerateFailed = {\n identity: identity(\"design\", \"task_design_1\", true),\n state: {\n phase: \"generate_failed\",\n confirmed: confirmed,\n error: { code: \"DESIGN_VALIDATION_FAILED\", message: \"真实设计未通过校验\", retryable: true },\n },\n next: {\n kind: \"await_user\",\n action: {\n type: \"retry\",\n label: \"重新生成工作流设计\",\n description: \"真实设计未通过校验\",\n api: { method: \"POST\", path: \"/api/projects/wf_contract/design\" },\n },\n },\n} satisfies StageStateResponseDTO<DesignState>;\n\nconst setupReady = {\n identity: identity(\"setup\", \"task_setup_1\", true),\n state: {\n phase: \"ready\",\n tableUrl: \"https://alidocs.dingtalk.com/i/nodes/base_contract\",\n baseId: \"base_contract\",\n tableId: \"table_contract\",\n schema: setupSchema,\n warnings: [],\n },\n next: { kind: \"idle\" },\n} satisfies StageStateResponseDTO<SetupState>;\n\nconst runListening = {\n identity: identity(\"run\", \"task_run_1\"),\n state: { phase: \"listening\", workflowName: \"售后工单自动化\", stepCount: 3, intervalMs: 5000 },\n next: { kind: \"attach_stream\", endpoint: \"/api/projects/wf_contract/run\" },\n} satisfies StageStateResponseDTO<RunState>;\n\n// ── 对外夹具 ────────────────────────────────────────────────\nexport const projectFiles = [\n {\n path: \"workflow.yml\",\n content: \"meta:\\n name: contract workflow\\nsteps: []\\n\",\n },\n {\n path: \"aitable-workflow.config.yml\",\n content: \"scene: 售后工单自动化\\ntracker:\\n base_id: base_contract\\n table_id: table_contract\\nrecipe:\\n llm:\\n provider: idealab\\n model: test-model\\n\",\n },\n] satisfies ProjectFileDTO[];\n\nexport const workflowPreview = {\n steps: [],\n edges: [],\n};\n\nexport const projectState = {\n projectId: \"wf_contract\",\n activeStage: \"run\",\n stages: {\n init: initReady,\n design: designReady,\n setup: setupReady,\n run: runListening,\n },\n runSnapshot: {\n records: [{\n id: \"rec_contract_1\",\n title: \"客户反馈发票信息错误\",\n state: \"处理中\",\n status: \"running\",\n currentStepId: \"validate_invoice\",\n doneStepIds: [\"classify\"],\n createdAt: 1784131200000,\n updatedAt: 1784131260000,\n }],\n logs: [{\n id: \"log_contract_1\",\n ts: 1784131260000,\n itemId: \"rec_contract_1\",\n stepId: \"validate_invoice\",\n level: \"info\",\n text: \"进入发票信息校验步骤\",\n }],\n },\n updatedAt: now,\n} satisfies ProjectStateResponseDTO;\n\nexport const designClarifyAwaitingState = {\n projectId: \"wf_contract\",\n activeStage: \"design\",\n stages: {\n init: initReady,\n design: designClarifyAwaiting,\n },\n updatedAt: now,\n} satisfies ProjectStateResponseDTO;\n\nexport const designGenerateFailedState = {\n projectId: \"wf_contract\",\n activeStage: null,\n stages: {\n init: initReady,\n design: designGenerateFailed,\n },\n updatedAt: now,\n} satisfies ProjectStateResponseDTO;\n\n/**\n * 事件流夹具:状态只由 `stage.changed` 表达,一条事件一次相变。\n * 澄清 → 等待用户 → 确认后生成,与 `TRANSITIONS.design` 的边一一对应。\n */\nexport const designEvents = [\n { type: \"stage.changed\", stage: \"design\", stageState: designClarifyAwaiting },\n { type: \"stage.changed\", stage: \"design\", stageState: designGenerating },\n { type: \"design.files\", files: projectFiles },\n { type: \"stage.changed\", stage: \"design\", stageState: designReady },\n] satisfies DesignEventDTO[];\n\nexport const setupEvents = [\n {\n type: \"stage.changed\",\n stage: \"setup\",\n stageState: {\n identity: identity(\"setup\", \"task_setup_1\"),\n state: { phase: \"provisioning_table\" },\n next: { kind: \"attach_stream\", endpoint: \"/api/projects/wf_contract/setup\" },\n },\n },\n { type: \"stage.changed\", stage: \"setup\", stageState: setupReady },\n] satisfies SetupEventDTO[];\n\nexport const runEvents = [\n { type: \"stage.changed\", stage: \"run\", stageState: runListening },\n { type: \"run.record.detected\", record: { id: \"rec_contract_1\", title: \"客户反馈发票信息错误\", state: \"待处理\", currentStep: null } },\n { type: \"run.step.started\", itemId: \"rec_contract_1\", stepId: \"validate_invoice\", stepName: \"校验发票信息\" },\n { type: \"run.step.succeeded\", itemId: \"rec_contract_1\", stepId: \"validate_invoice\", stepName: \"校验发票信息\", logs: [\"校验完成\"] },\n { type: \"run.record.completed\", itemId: \"rec_contract_1\" },\n] satisfies RunEventDTO[];\n"],"mappings":";AA4BA,IAAM,MAAM;AAEZ,SAAS,SAAS,OAAsC,IAAY,YAAY,OAA6B;AAC3G,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,GAAI,YAAY,EAAE,aAAa,IAAI,IAAI,CAAC;AAAA,EAC1C;AACF;AAEA,IAAM,YAAY;AAAA,EAChB,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW,CAAC;AAAA,MACV,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,QACP,EAAE,OAAO,4BAAQ,OAAO,cAAc;AAAA,QACtC,EAAE,OAAO,4BAAQ,OAAO,UAAU;AAAA,MACpC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,SAAS,EAAE,OAAO,cAAc;AAAA,EAChC,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,gBAAgB;AAClB;AAEA,IAAM,iBAAiB;AAAA,EACrB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,UAAU,CAAC,cAAc;AAAA,EACzB,WAAW,CAAC,EAAE,MAAM,gBAAgB,MAAM,YAAY,UAAU,mBAAmB,UAAU,KAAK,CAAC;AAAA,EACnG,YAAY,EAAE,QAAQ,MAAM,QAAQ,CAAC,GAAG,UAAU,CAAC,EAAE;AAAA,EACrD,WAAW;AAAA,EACX,WAAW;AACb;AAEA,IAAM,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,QAAQ;AAAA,IACN,EAAE,IAAI,aAAa,MAAM,gBAAM,MAAM,QAAQ,OAAO,WAAW;AAAA,IAC/D,EAAE,IAAI,aAAa,MAAM,gBAAM,MAAM,iBAAiB,SAAS,CAAC,sBAAO,sBAAO,oBAAK,GAAG,OAAO,UAAU;AAAA,EACzG;AAAA,EACA,OAAO;AAAA,IACL,EAAE,IAAI,aAAa,MAAM,4BAAQ,MAAM,QAAQ,MAAM,mDAAW;AAAA,EAClE;AACF;AAGA,IAAM,YAAY;AAAA,EAChB,UAAU,SAAS,QAAQ,eAAe,IAAI;AAAA,EAC9C,OAAO,EAAE,OAAO,SAAS,UAAU,CAAC,GAAG,WAAW,CAAC,EAAE;AAAA,EACrD,MAAM,EAAE,MAAM,OAAO;AACvB;AAEA,IAAM,mBAAmB;AAAA,EACvB,UAAU,SAAS,UAAU,eAAe;AAAA,EAC5C,OAAO,EAAE,OAAO,cAAc,WAAsB,OAAO,GAAG,OAAO,MAAM;AAAA,EAC3E,MAAM,EAAE,MAAM,iBAAiB,UAAU,mCAAmC;AAC9E;AAEA,IAAM,cAAc;AAAA,EAClB,UAAU,SAAS,UAAU,iBAAiB,IAAI;AAAA,EAClD,OAAO,EAAE,OAAO,SAAS,WAAsB,UAAU,gBAAgB,QAAQ,EAAE;AAAA,EACnF,MAAM,EAAE,MAAM,OAAO;AACvB;AAGA,IAAM,wBAAwB;AAAA,EAC5B,UAAU,SAAS,UAAU,eAAe;AAAA,EAC5C,OAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM,UAAU;AAAA,IAChB,SAAS,EAAE,OAAO,cAAc;AAAA,IAChC,gBAAgB;AAAA,EAClB;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,KAAK,EAAE,QAAQ,QAAQ,MAAM,qDAAqD;AAAA,IACpF;AAAA,EACF;AACF;AAEA,IAAM,uBAAuB;AAAA,EAC3B,UAAU,SAAS,UAAU,iBAAiB,IAAI;AAAA,EAClD,OAAO;AAAA,IACL,OAAO;AAAA,IACP;AAAA,IACA,OAAO,EAAE,MAAM,4BAA4B,SAAS,0DAAa,WAAW,KAAK;AAAA,EACnF;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,KAAK,EAAE,QAAQ,QAAQ,MAAM,mCAAmC;AAAA,IAClE;AAAA,EACF;AACF;AAEA,IAAM,aAAa;AAAA,EACjB,UAAU,SAAS,SAAS,gBAAgB,IAAI;AAAA,EAChD,OAAO;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA,MAAM,EAAE,MAAM,OAAO;AACvB;AAEA,IAAM,eAAe;AAAA,EACnB,UAAU,SAAS,OAAO,YAAY;AAAA,EACtC,OAAO,EAAE,OAAO,aAAa,cAAc,8CAAW,WAAW,GAAG,YAAY,IAAK;AAAA,EACrF,MAAM,EAAE,MAAM,iBAAiB,UAAU,gCAAgC;AAC3E;AAGO,IAAM,eAAe;AAAA,EAC1B;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,OAAO,CAAC;AAAA,EACR,OAAO,CAAC;AACV;AAEO,IAAM,eAAe;AAAA,EAC1B,WAAW;AAAA,EACX,aAAa;AAAA,EACb,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,KAAK;AAAA,EACP;AAAA,EACA,aAAa;AAAA,IACX,SAAS,CAAC;AAAA,MACR,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,aAAa,CAAC,UAAU;AAAA,MACxB,WAAW;AAAA,MACX,WAAW;AAAA,IACb,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,WAAW;AACb;AAEO,IAAM,6BAA6B;AAAA,EACxC,WAAW;AAAA,EACX,aAAa;AAAA,EACb,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,WAAW;AACb;AAEO,IAAM,4BAA4B;AAAA,EACvC,WAAW;AAAA,EACX,aAAa;AAAA,EACb,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,WAAW;AACb;AAMO,IAAM,eAAe;AAAA,EAC1B,EAAE,MAAM,iBAAiB,OAAO,UAAU,YAAY,sBAAsB;AAAA,EAC5E,EAAE,MAAM,iBAAiB,OAAO,UAAU,YAAY,iBAAiB;AAAA,EACvE,EAAE,MAAM,gBAAgB,OAAO,aAAa;AAAA,EAC5C,EAAE,MAAM,iBAAiB,OAAO,UAAU,YAAY,YAAY;AACpE;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,YAAY;AAAA,MACV,UAAU,SAAS,SAAS,cAAc;AAAA,MAC1C,OAAO,EAAE,OAAO,qBAAqB;AAAA,MACrC,MAAM,EAAE,MAAM,iBAAiB,UAAU,kCAAkC;AAAA,IAC7E;AAAA,EACF;AAAA,EACA,EAAE,MAAM,iBAAiB,OAAO,SAAS,YAAY,WAAW;AAClE;AAEO,IAAM,YAAY;AAAA,EACvB,EAAE,MAAM,iBAAiB,OAAO,OAAO,YAAY,aAAa;AAAA,EAChE,EAAE,MAAM,uBAAuB,QAAQ,EAAE,IAAI,kBAAkB,OAAO,gEAAc,OAAO,sBAAO,aAAa,KAAK,EAAE;AAAA,EACtH,EAAE,MAAM,oBAAoB,QAAQ,kBAAkB,QAAQ,oBAAoB,UAAU,uCAAS;AAAA,EACrG,EAAE,MAAM,sBAAsB,QAAQ,kBAAkB,QAAQ,oBAAoB,UAAU,wCAAU,MAAM,CAAC,0BAAM,EAAE;AAAA,EACvH,EAAE,MAAM,wBAAwB,QAAQ,iBAAiB;AAC3D;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/fixtures.ts"],"sourcesContent":["/**\n * fixtures — 服务端契约的样板数据(`aitable-workflow-base/fixtures`)\n *\n * 只被测试消费:core 自己的契约测试、web 的 derive / reducer 测试。刻意**不**从根\n * barrel 导出——挂上去就会被每个 import core 的生产模块一起打进产物。\n *\n * 每条夹具都用 `satisfies` 而不是类型标注:契约一改这里立刻编译失败,\n * 而不是等到运行期才发现测试在验证一个已经不存在的形状。\n */\nimport type {\n DesignArtifactManifestDTO,\n DesignEventDTO,\n ProjectFileDTO,\n RunEventDTO,\n SetupSchemaSummaryDTO,\n SetupEventDTO,\n} from \"./server.js\";\nimport type {\n DesignConfirmedDTO,\n DesignState,\n InitState,\n ProjectStateResponseDTO,\n RunState,\n SetupState,\n StageStateResponseDTO,\n StageTaskIdentityDTO,\n} from \"./stage-state.js\";\n\nconst now = \"2026-07-14T00:00:00.000Z\";\n\nfunction identity(stage: StageTaskIdentityDTO[\"stage\"], id: string, completed = false): StageTaskIdentityDTO {\n return {\n id,\n projectId: \"wf_contract\",\n stage,\n attempt: 1,\n startedAt: now,\n updatedAt: now,\n ...(completed ? { completedAt: now } : {}),\n };\n}\n\nconst confirmed = {\n form: {\n id: \"contract_discovery\",\n title: \"确认工作流设计约束\",\n questions: [{\n id: \"scope\",\n label: \"优先覆盖哪个流程范围?\",\n type: \"radio\",\n required: true,\n options: [\n { label: \"售后工单\", value: \"after_sales\" },\n { label: \"客户回访\", value: \"revisit\" },\n ],\n }],\n },\n answers: { scope: \"after_sales\" },\n clarifications: \"只覆盖售后工单,回访下期再做\",\n summary: \"用户确认优先覆盖售后工单\",\n agentSessionId: \"sess_contract\",\n} satisfies DesignConfirmedDTO;\n\nconst designManifest = {\n projectId: \"wf_contract\",\n taskId: \"task_design_1\",\n designVersion: 1,\n status: \"ready\",\n expected: [\"workflow.yml\"],\n generated: [{ path: \"workflow.yml\", kind: \"workflow\", checksum: \"sha256:contract\", required: true }],\n validation: { passed: true, errors: [], warnings: [] },\n createdAt: now,\n updatedAt: now,\n} satisfies DesignArtifactManifestDTO;\n\nconst setupSchema = {\n fieldCount: 2,\n viewCount: 1,\n fields: [\n { id: \"fld_title\", name: \"标题\", type: \"text\", group: \"business\" },\n { id: \"fld_state\", name: \"状态\", type: \"single_select\", options: [\"待处理\", \"处理中\", \"已完成\"], group: \"process\" },\n ],\n views: [\n { id: \"view_main\", name: \"全部工单\", kind: \"grid\", desc: \"查看全部售后工单\" },\n ],\n} satisfies SetupSchemaSummaryDTO;\n\n// ── 各阶段的阶段状态 ─────────────────────────────────────────\nconst initReady = {\n identity: identity(\"init\", \"task_init_1\", true),\n state: { phase: \"ready\", warnings: [], roleFiles: [] },\n next: { kind: \"idle\" },\n} satisfies StageStateResponseDTO<InitState>;\n\nconst designGenerating = {\n identity: identity(\"design\", \"task_design_1\"),\n state: { phase: \"generating\", confirmed: confirmed, round: 1, isFix: false },\n next: { kind: \"attach_stream\", endpoint: \"/api/projects/wf_contract/design\" },\n} satisfies StageStateResponseDTO<DesignState>;\n\nconst designReady = {\n identity: identity(\"design\", \"task_design_1\", true),\n state: { phase: \"ready\", confirmed: confirmed, manifest: designManifest, rounds: 2 },\n next: { kind: \"idle\" },\n} satisfies StageStateResponseDTO<DesignState>;\n\n/** 澄清等待用户:`next` 由服务端给出确认端点,客户端不自己拼 path。 */\nconst designClarifyAwaiting = {\n identity: identity(\"design\", \"task_design_1\"),\n state: {\n phase: \"clarify_awaiting\",\n form: confirmed.form,\n answers: { scope: \"after_sales\" },\n agentSessionId: \"sess_contract\",\n },\n next: {\n kind: \"await_user\",\n action: {\n type: \"confirm_input\",\n label: \"确认后开始生成\",\n description: \"请先确认需求澄清卡片,再开始生成工作流方案。\",\n api: { method: \"POST\", path: \"/api/projects/wf_contract/design/discovery/confirm\" },\n },\n },\n} satisfies StageStateResponseDTO<DesignState>;\n\nconst designGenerateFailed = {\n identity: identity(\"design\", \"task_design_1\", true),\n state: {\n phase: \"generate_failed\",\n confirmed: confirmed,\n error: { code: \"DESIGN_VALIDATION_FAILED\", message: \"真实设计未通过校验\", retryable: true },\n },\n next: {\n kind: \"await_user\",\n action: {\n type: \"retry\",\n label: \"重新生成工作流设计\",\n description: \"真实设计未通过校验\",\n api: { method: \"POST\", path: \"/api/projects/wf_contract/design\" },\n },\n },\n} satisfies StageStateResponseDTO<DesignState>;\n\nconst setupReady = {\n identity: identity(\"setup\", \"task_setup_1\", true),\n state: {\n phase: \"ready\",\n tables: [\n {\n workflowId: \"default\",\n label: \"数据表\",\n tableUrl: \"https://alidocs.dingtalk.com/i/nodes/base_contract\",\n baseId: \"base_contract\",\n tableId: \"table_contract\",\n schema: setupSchema,\n },\n ],\n warnings: [],\n },\n next: { kind: \"idle\" },\n} satisfies StageStateResponseDTO<SetupState>;\n\nconst runListening = {\n identity: identity(\"run\", \"task_run_1\"),\n state: { phase: \"listening\", workflowName: \"售后工单自动化\", stepCount: 3, intervalMs: 5000 },\n next: { kind: \"attach_stream\", endpoint: \"/api/projects/wf_contract/run\" },\n} satisfies StageStateResponseDTO<RunState>;\n\n// ── 对外夹具 ────────────────────────────────────────────────\nexport const projectFiles = [\n {\n path: \"workflow.yml\",\n content: \"meta:\\n name: contract workflow\\nsteps: []\\n\",\n },\n {\n path: \"aitable-workflow.config.yml\",\n content: \"scene: 售后工单自动化\\ntracker:\\n base_id: base_contract\\n table_id: table_contract\\nrecipe:\\n llm:\\n provider: idealab\\n model: test-model\\n\",\n },\n] satisfies ProjectFileDTO[];\n\nexport const workflowPreview = {\n steps: [],\n edges: [],\n};\n\nexport const projectState = {\n projectId: \"wf_contract\",\n activeStage: \"run\",\n stages: {\n init: initReady,\n design: designReady,\n setup: setupReady,\n run: runListening,\n },\n updatedAt: now,\n} satisfies ProjectStateResponseDTO;\n\nexport const designClarifyAwaitingState = {\n projectId: \"wf_contract\",\n activeStage: \"design\",\n stages: {\n init: initReady,\n design: designClarifyAwaiting,\n },\n updatedAt: now,\n} satisfies ProjectStateResponseDTO;\n\nexport const designGenerateFailedState = {\n projectId: \"wf_contract\",\n activeStage: null,\n stages: {\n init: initReady,\n design: designGenerateFailed,\n },\n updatedAt: now,\n} satisfies ProjectStateResponseDTO;\n\n/**\n * 事件流夹具:状态只由 `stage.changed` 表达,一条事件一次相变。\n * 澄清 → 等待用户 → 确认后生成,与 `TRANSITIONS.design` 的边一一对应。\n */\nexport const designEvents = [\n { type: \"stage.changed\", stage: \"design\", stageState: designClarifyAwaiting },\n { type: \"stage.changed\", stage: \"design\", stageState: designGenerating },\n { type: \"design.files\", files: projectFiles },\n { type: \"stage.changed\", stage: \"design\", stageState: designReady },\n] satisfies DesignEventDTO[];\n\nexport const setupEvents = [\n {\n type: \"stage.changed\",\n stage: \"setup\",\n stageState: {\n identity: identity(\"setup\", \"task_setup_1\"),\n state: { phase: \"provisioning_table\" },\n next: { kind: \"attach_stream\", endpoint: \"/api/projects/wf_contract/setup\" },\n },\n },\n { type: \"stage.changed\", stage: \"setup\", stageState: setupReady },\n] satisfies SetupEventDTO[];\n\nexport const runEvents = [\n { type: \"stage.changed\", stage: \"run\", stageState: runListening },\n { type: \"run.record.detected\", record: { id: \"rec_contract_1\", title: \"客户反馈发票信息错误\", state: \"待处理\", currentStep: null } },\n { type: \"run.step.started\", itemId: \"rec_contract_1\", stepId: \"validate_invoice\", stepName: \"校验发票信息\" },\n { type: \"run.step.succeeded\", itemId: \"rec_contract_1\", stepId: \"validate_invoice\", stepName: \"校验发票信息\", logs: [\"校验完成\"] },\n { type: \"run.record.completed\", itemId: \"rec_contract_1\" },\n] satisfies RunEventDTO[];\n"],"mappings":"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","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as AgentEvent, K as KnownAgentType, I as InitState, D as DesignState, a as SetupState, R as RunState, b as RunScheduleDTO, c as AnyStageState, d as StageIdDTO, e as StageNextDTO, f as DesignArtifactValidationDTO, P as ProjectDTO, g as ProjectStateDTO, h as StageStateDTO, i as ProjectStateResponseDTO, F as FormQuestion, j as FormAnswers, Q as QuestionForm, k as FormAnswerValue, l as FilledForm } from './stage-state-
|
|
2
|
-
export { m as AgentEventType, n as AgentIdDTO, o as AgentType, p as ApiError, C as CreateProjectRequestDTO, q as CreateWorkflowRequestDTO, r as CreateWorkflowResponseDTO, s as DeleteProjectResponseDTO, t as DesignArtifactManifestDTO, u as DesignConfirmedDTO, v as DesignEventDTO, w as FilesPatchDTO, x as FilesReplaceDTO, y as FilesResponseDTO, z as FormOption, B as InitConfigDTO, E as InitResponseDTO, G as PollReason, H as ProjectExportDTO, J as ProjectFileDTO,
|
|
1
|
+
import { A as AgentEvent, K as KnownAgentType, I as InitState, D as DesignState, a as SetupState, R as RunState, b as RunScheduleDTO, c as AnyStageState, d as StageIdDTO, e as StageNextDTO, f as DesignArtifactValidationDTO, P as ProjectDTO, g as ProjectStateDTO, h as StageStateDTO, i as ProjectStateResponseDTO, F as FormQuestion, j as FormAnswers, Q as QuestionForm, k as FormAnswerValue, l as FilledForm } from './stage-state-DGAoleD0.js';
|
|
2
|
+
export { m as AgentEventType, n as AgentIdDTO, o as AgentType, p as ApiError, C as CreateProjectRequestDTO, q as CreateWorkflowRequestDTO, r as CreateWorkflowResponseDTO, s as DeleteProjectResponseDTO, t as DesignArtifactManifestDTO, u as DesignConfirmedDTO, v as DesignEventDTO, w as FilesPatchDTO, x as FilesReplaceDTO, y as FilesResponseDTO, z as FormOption, B as InitConfigDTO, E as InitResponseDTO, L as LocalRunMode, G as PollReason, H as ProjectExportDTO, J as ProjectFileDTO, M as ProjectWorkflowDTO, N as ProjectsResponseDTO, O as QuestionType, T as RecoveryActionDTO, U as ResetWorkflowResponseDTO, V as RoleConfigDTO, W as RunAgentEventDTO, X as RunControlResultDTO, Y as RunEngineTag, Z as RunEventDTO, _ as RunEventsPageDTO, $ as RunExecutionEventDTO, a0 as RunModeDTO, a1 as RunRecordDTO, a2 as RunRecordSnapshotDTO, a3 as RunRecordStatusDTO, a4 as RunRecordsPageDTO, a5 as RunSnapshotDTO, a6 as RunTimelineEntryDTO, a7 as ScaffoldResult, a8 as SetupEventDTO, a9 as SetupSchemaSummaryDTO, aa as SetupTableDTO, ab as ShowIfCondition, ac as StageChangedEventDTO, ad as StageDiagnosticsDTO, ae as StageErrorDTO, af as StageStateResponseDTO, S as StageTaskIdentityDTO, ag as WorkflowFilesResponseDTO, ah as WorkflowsResponseDTO } from './stage-state-DGAoleD0.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* relay — Relay ↔ Gateway 传输协议
|
|
@@ -9,26 +9,23 @@ export { m as AgentEventType, n as AgentIdDTO, o as AgentType, p as ApiError, C
|
|
|
9
9
|
* `event` 帧直接复用现有 `AgentEvent`(./agent-event.ts),不重复定义。
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
/** 首帧:Relay
|
|
12
|
+
/** 首帧:Relay 反连成功后上报本机能力;machine token 已在握手阶段标识机器。 */
|
|
13
13
|
interface RelayReadyMessage {
|
|
14
14
|
type: "ready";
|
|
15
|
-
/** 稳定机器身份;首次连接可缺省,由 Gateway 通过 ready:ack 下发 */
|
|
16
|
-
machineId?: string;
|
|
17
15
|
/** 本机可用的 Agent runtime 列表 */
|
|
18
16
|
runtimes: string[];
|
|
19
17
|
/** 是否具备 dws 执行能力 */
|
|
20
18
|
hasDws: boolean;
|
|
21
19
|
hostname: string;
|
|
22
20
|
os: string;
|
|
23
|
-
/**
|
|
24
|
-
* 自注册身份提示(仅 owner-token 首连自注册路径消费):
|
|
25
|
-
* name 为 owner 维度稳定身份键(幂等键 = owner+name);displayName/description 供 UI 展示。
|
|
26
|
-
*/
|
|
27
|
-
name?: string;
|
|
28
|
-
displayName?: string;
|
|
29
|
-
description?: string;
|
|
30
21
|
/** 本机并发执行上限(观测用;排队在 daemon 侧,网关不据此路由)。 */
|
|
31
22
|
maxTasks?: number;
|
|
23
|
+
/**
|
|
24
|
+
* 本机 agent trace HTTP 服务端口(daemon 以 --trace-http-port 启动时才携带)。
|
|
25
|
+
* 供 Web「本机执行详情」显性入口:loopback 仅与 daemon 同机的浏览器可达,
|
|
26
|
+
* 故只随在线快照透传、不入库。
|
|
27
|
+
*/
|
|
28
|
+
tracePort?: number;
|
|
32
29
|
}
|
|
33
30
|
/** 心跳应答(对 ping 的响应) */
|
|
34
31
|
interface RelayPongMessage {
|
|
@@ -59,6 +56,128 @@ interface RelayRunEventsMessage {
|
|
|
59
56
|
projectId: string;
|
|
60
57
|
entries: RelayRunEventEntry[];
|
|
61
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* 单步 recipe 下发帧(server-run-relay-recipe,Phase 4 spike):服务端编排推进到
|
|
61
|
+
* recipe step 时,把「服务端独有状态」快照下发给 daemon 本地执行。
|
|
62
|
+
* 快照契约(哪些字段进帧、哪些本地重建)见
|
|
63
|
+
* docs/plans/2026-09-21-server-run-relay-recipe-plan.md §3.3;结果复用 `result` 帧,
|
|
64
|
+
* `response` 为 JSON 序列化的 RecipeResult + globalVarWrites(出向快照回写)。
|
|
65
|
+
*/
|
|
66
|
+
interface RelayRunRecipeMessage {
|
|
67
|
+
type: "run:recipe";
|
|
68
|
+
requestId: string;
|
|
69
|
+
projectId: string;
|
|
70
|
+
workflowId?: string;
|
|
71
|
+
stepId: string;
|
|
72
|
+
recipeId: string;
|
|
73
|
+
/**
|
|
74
|
+
* recipe 文件路径,相对**项目工作区** `workspaceRoot/projects/<projectId>`——
|
|
75
|
+
* 与 P1 pull-claim 的 workspace-sync 物化目录同构(服务端按 configDir 相对生成)。
|
|
76
|
+
*/
|
|
77
|
+
recipePath: string;
|
|
78
|
+
itemId: string;
|
|
79
|
+
input: Record<string, unknown>;
|
|
80
|
+
variables: Record<string, unknown>;
|
|
81
|
+
/** globalVars 入向快照(§3.2:快照 only,daemon 不回读服务端活值) */
|
|
82
|
+
globalVars?: Record<string, unknown>;
|
|
83
|
+
/** 三层 merge 后的生效步骤配置(daemon 侧 toolkit 本地重建的输入) */
|
|
84
|
+
stepConfig?: Record<string, unknown>;
|
|
85
|
+
/**
|
|
86
|
+
* 生效 tracker 配置快照(服务端 merge 后的 settings.tracker 原样 JSON)。
|
|
87
|
+
* daemon 侧据此构造 AITableTracker 重建 `toolkit.table`(spike §3.4 确认的主缺口)。
|
|
88
|
+
* Phase 3 工作区物化落地后 daemon 也能从本地 profile 派生,但帧快照仍是真源
|
|
89
|
+
* (三层 merge 的**生效值**可能含 step 级覆盖,本地派生不保证同值)。
|
|
90
|
+
* 形状与 core `trackerSchema` 结构兼容,此处不依赖 core 故为最小子集声明。
|
|
91
|
+
*/
|
|
92
|
+
trackerConfig?: RelayTrackerConfig;
|
|
93
|
+
trackerRef?: {
|
|
94
|
+
baseId: string;
|
|
95
|
+
tableId: string;
|
|
96
|
+
viewId?: string;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* 生效 coding 配置快照(Phase 4:daemon 侧 `toolkit.coding` 本地重建的输入)。
|
|
100
|
+
* 与 trackerConfig 同理:engine/model 是多层 merge 的**生效值**
|
|
101
|
+
* (step.config.coding > workflow.toolkit_config.coding > 全局 agent.*),
|
|
102
|
+
* daemon 本地派生不保证同值,必须由服务端随帧下发。
|
|
103
|
+
* 引擎为 llm_only(无可用 coding agent)时整字段缺省 → daemon 侧保持 GAP。
|
|
104
|
+
*/
|
|
105
|
+
codingConfig?: RelayCodingConfig;
|
|
106
|
+
/**
|
|
107
|
+
* git 面生效配置快照(daemon 侧 `toolkit.git` 重建输入,Phase 4 第三面)。
|
|
108
|
+
* **缺省即随帧恒带**(服务端 git toolkit 默认装配,纯本机 spawn 无引擎依赖);
|
|
109
|
+
* 仅当 step 显式 `git: false`(配置即权限)时缺省,daemon 侧保持 RECIPE_SNAPSHOT_GAP。
|
|
110
|
+
*/
|
|
111
|
+
gitConfig?: RelayGitConfig;
|
|
112
|
+
/**
|
|
113
|
+
* codeReview 面使能快照(daemon 侧 `toolkit.codeReview` 重建输入,Phase 4 第四面)。
|
|
114
|
+
* a1 CLI 无服务端可调配置(descriptor configSchema 为空 strict),帧字段只承载
|
|
115
|
+
* 「服务端是否装配」信号——与 gitConfig 同理**缺省即随帧恒带**;
|
|
116
|
+
* 仅当 step 显式 `codeReview: false`(配置即权限)时缺省,daemon 侧保持 RECIPE_SNAPSHOT_GAP。
|
|
117
|
+
* 凭据即 daemon 本机 a1 登录态(本机 spawn 的执行位点与凭据位点天然重合)。
|
|
118
|
+
*/
|
|
119
|
+
codeReviewConfig?: RelayCodeReviewConfig;
|
|
120
|
+
/**
|
|
121
|
+
* recipe 执行超时**兜底默认**(服务端 settings.recipe.default_timeout_ms)。
|
|
122
|
+
* 生效值在 daemon 侧按 `recipe meta.timeoutMs ?? 帧值 ?? 5min` 解析并封顶
|
|
123
|
+
* ≤29min——服务端不加载 recipe 文件(§3.3 快照契约),meta 只有执行侧可读;
|
|
124
|
+
* 封顶对齐 gateway rpc 超时,见 cli relay 的 RELAY_RECIPE_TIMEOUT_CAP_MS。
|
|
125
|
+
*/
|
|
126
|
+
timeoutMs?: number;
|
|
127
|
+
}
|
|
128
|
+
/** {@link RelayRunRecipeMessage.codingConfig}:coding agent 生效配置快照(见其注释)。 */
|
|
129
|
+
interface RelayCodingConfig {
|
|
130
|
+
/** 生效引擎(claudecode/codex/qoder/qwenwork 等,服务端解析后的终值) */
|
|
131
|
+
engine: string;
|
|
132
|
+
/** 生效模型(缺省由 daemon 侧引擎默认) */
|
|
133
|
+
model?: string;
|
|
134
|
+
/**
|
|
135
|
+
* coding agent 工作目录,**相对项目工作区**(服务端显式 workspace_dir 配置)。
|
|
136
|
+
* daemon 侧解析进 `workspaceRoot/projects/<projectId>` 下并强制为 cwd——
|
|
137
|
+
* 服务端的绝对 workspace/cwd 路径(容器路径)在 daemon 机上不存在。
|
|
138
|
+
* 缺省 → daemon 回退项目目录本身。
|
|
139
|
+
*/
|
|
140
|
+
workspaceDir?: string;
|
|
141
|
+
/** 默认执行超时 ms(服务端全局 agent.timeout_ms 快照) */
|
|
142
|
+
timeoutMs?: number;
|
|
143
|
+
}
|
|
144
|
+
/** {@link RelayRunRecipeMessage.gitConfig}:git 工作空间生效配置快照(见其注释)。 */
|
|
145
|
+
interface RelayGitConfig {
|
|
146
|
+
/**
|
|
147
|
+
* git 工作区根目录,**相对项目工作区**(服务端 git.root 显式配置的相对值)。
|
|
148
|
+
* daemon 侧解析进 `workspaceRoot/projects/<projectId>` 下并防逃逸——服务端的
|
|
149
|
+
* 绝对 root(容器路径)在 daemon 机上不存在,一律不进帧。
|
|
150
|
+
* 缺省 → daemon 回退 `<项目目录>/.workspace`(与服务端 descriptor 默认同构)。
|
|
151
|
+
*/
|
|
152
|
+
workspaceRoot?: string;
|
|
153
|
+
/** worktree 基准分支回落值(服务端 git.default_branch 快照) */
|
|
154
|
+
defaultBranch?: string;
|
|
155
|
+
/** 默认 clone/fetch 深度(服务端 git.clone_depth 快照) */
|
|
156
|
+
cloneDepth?: number;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* {@link RelayRunRecipeMessage.codeReviewConfig}:a1 CLI 无配置面,存在即启用。
|
|
160
|
+
* `Record<string, never>` 表达「当前无可调字段」;将来 codeReview 出现服务端配置时在此扩字段。
|
|
161
|
+
*/
|
|
162
|
+
type RelayCodeReviewConfig = Record<string, never>;
|
|
163
|
+
/** {@link RelayRunRecipeMessage.trackerConfig} 的最小结构声明(见其注释) */
|
|
164
|
+
interface RelayTrackerConfig {
|
|
165
|
+
base_id: string;
|
|
166
|
+
table_id: string;
|
|
167
|
+
dws_bin?: string;
|
|
168
|
+
states: {
|
|
169
|
+
initial: string;
|
|
170
|
+
active: string[];
|
|
171
|
+
terminal: string[];
|
|
172
|
+
blocked?: string;
|
|
173
|
+
};
|
|
174
|
+
fields: {
|
|
175
|
+
state: string;
|
|
176
|
+
title: string;
|
|
177
|
+
} & Record<string, string | undefined>;
|
|
178
|
+
views?: unknown[];
|
|
179
|
+
[key: string]: unknown;
|
|
180
|
+
}
|
|
62
181
|
/** 任务成功结果 */
|
|
63
182
|
interface RelayResultMessage {
|
|
64
183
|
type: "result";
|
|
@@ -98,6 +217,13 @@ interface RelayErrorMessage {
|
|
|
98
217
|
requestId: string;
|
|
99
218
|
code: string;
|
|
100
219
|
message: string;
|
|
220
|
+
/**
|
|
221
|
+
* 目前仅 run:recipe 路径写入:daemon 捕获到不可重试的 ToolkitError(参数非法/
|
|
222
|
+
* 业务冲突等结构性失败)时带 false,服务端 core 还原进 RecipeResult.retryable,
|
|
223
|
+
* 避免 step-engine 对注定失败的步骤空转到 maxAttempts(评审意见 #248005270)。
|
|
224
|
+
* 缺省 = 可重试,与不带该字段的历史 daemon 兼容。
|
|
225
|
+
*/
|
|
226
|
+
retryable?: boolean;
|
|
101
227
|
}
|
|
102
228
|
/** daemon 上报产出文件清单,请求上传授权(daemon→gateway) */
|
|
103
229
|
interface RelayUploadRequestMessage {
|
|
@@ -112,10 +238,9 @@ interface RelayUploadRequestMessage {
|
|
|
112
238
|
sha256: string;
|
|
113
239
|
}>;
|
|
114
240
|
}
|
|
115
|
-
/**
|
|
241
|
+
/** 确认首帧;machineId 只保留在 Gateway 内部。 */
|
|
116
242
|
interface RelayReadyAckMessage {
|
|
117
243
|
type: "ready:ack";
|
|
118
|
-
machineId: string;
|
|
119
244
|
}
|
|
120
245
|
/** 心跳探测 */
|
|
121
246
|
interface RelayPingMessage {
|
|
@@ -194,7 +319,7 @@ interface RelayWorkflowAvailableMessage {
|
|
|
194
319
|
/** Relay → Gateway 方向的帧 */
|
|
195
320
|
type RelayInboundMessage = RelayReadyMessage | RelayPongMessage | RelayEventMessage | RelayRunEventsMessage | RelayResultMessage | RelayErrorMessage | RelayUploadRequestMessage;
|
|
196
321
|
/** Gateway → Relay 方向的帧 */
|
|
197
|
-
type RelayOutboundMessage = RelayReadyAckMessage | RelayPingMessage | RelayRunAgentMessage | RelayRunDwsMessage | RelayUploadGrantMessage | RelayWorkflowAvailableMessage;
|
|
322
|
+
type RelayOutboundMessage = RelayReadyAckMessage | RelayPingMessage | RelayRunAgentMessage | RelayRunRecipeMessage | RelayRunDwsMessage | RelayUploadGrantMessage | RelayWorkflowAvailableMessage;
|
|
198
323
|
/** Relay ↔ Gateway 全部协议帧 */
|
|
199
324
|
type RelayMessage = RelayInboundMessage | RelayOutboundMessage;
|
|
200
325
|
/** RelayMessage 的 discriminant 取值 */
|
|
@@ -541,6 +666,14 @@ declare function emptyProjectState(project: ProjectDTO): ProjectStateDTO;
|
|
|
541
666
|
declare function nextActiveStage(current: StageIdDTO | null, stage: StageIdDTO, state: AnyStageState): StageIdDTO | null;
|
|
542
667
|
/** 把一个阶段的新状态并进项目状态,并同步 `activeStage` 指针。 */
|
|
543
668
|
declare function mergeStageIntoState(state: ProjectStateDTO, stage: StageIdDTO, stageState: StageStateDTO): ProjectStateDTO;
|
|
669
|
+
/**
|
|
670
|
+
* 读时把 setup 阶段状态归一到当前契约(幂等)。
|
|
671
|
+
*
|
|
672
|
+
* 迁移背景:`SetupState.ready` 曾是单表形状 `{ tableUrl, baseId, tableId, schema }`,
|
|
673
|
+
* 现改为多表 `tables: SetupTableDTO[]`。已落盘的旧 project_state 行不改写,只在这里
|
|
674
|
+
* 把单表 payload 包成一张表的数组——读侧归一,可回滚,不产生第二真源。
|
|
675
|
+
*/
|
|
676
|
+
declare function normalizeSetupState(raw: SetupState | (Partial<SetupState> & Record<string, unknown>) | null | undefined): SetupState | null;
|
|
544
677
|
/**
|
|
545
678
|
* 落盘数据补形。缺字段按空状态兜底,`activeStage` 与 `stages` 不一致时
|
|
546
679
|
* 以 `stages` 为准重算——指针是派生量,状态才是真源。
|
|
@@ -637,6 +770,7 @@ type RunSnapshot = {
|
|
|
637
770
|
}>;
|
|
638
771
|
logs: Array<{
|
|
639
772
|
id: string;
|
|
773
|
+
seq?: number;
|
|
640
774
|
ts: number;
|
|
641
775
|
itemId: string;
|
|
642
776
|
stepId: string;
|
|
@@ -644,7 +778,7 @@ type RunSnapshot = {
|
|
|
644
778
|
text: string;
|
|
645
779
|
}>;
|
|
646
780
|
};
|
|
647
|
-
type RunExecutionEvent = {
|
|
781
|
+
type RunExecutionEvent = ({
|
|
648
782
|
type: "run.record.detected";
|
|
649
783
|
record: {
|
|
650
784
|
id: string;
|
|
@@ -680,6 +814,8 @@ type RunExecutionEvent = {
|
|
|
680
814
|
} | {
|
|
681
815
|
type: "run.record.completed";
|
|
682
816
|
itemId: string;
|
|
817
|
+
}) & {
|
|
818
|
+
eventId?: string;
|
|
683
819
|
};
|
|
684
820
|
type RunSnapshotLogLevel = RunSnapshot["logs"][number]["level"];
|
|
685
821
|
type RunSnapshotStepLevelResolver = (stepId: string, event: Extract<RunExecutionEvent, {
|
|
@@ -702,4 +838,4 @@ declare function applyRunExecutionEvent(snapshot: RunSnapshot, event: RunExecuti
|
|
|
702
838
|
*/
|
|
703
839
|
declare function patchRunSnapshotRecord(snapshot: RunSnapshot, itemId: string, patch: Partial<Pick<RunSnapshot["records"][number], "state" | "status" | "currentStepId">>, logText?: string, options?: ApplyRunExecutionEventOptions): RunSnapshot;
|
|
704
840
|
|
|
705
|
-
export { ACTIVE_PHASES, ASK_USER_TOOL_NAMES, AgentEvent, type AgentTraceItem, type AnswerIssueCode, type AnswerValidationIssue, AnyStageState, type ApplyRunExecutionEventOptions, DERIVED_PHASES, DESIGN_GENERATING_PHASES, DesignArtifactValidationDTO, type DesignGeneratingState, DesignState, type DriverId, FilledForm, FormAnswerValue, FormAnswers, FormQuestion, IllegalStageTransitionError, type IllegalTransitionDetail, InitState, KnownAgentType, type NextInput, type NextRuntimeFacts, ProjectDTO, ProjectStateDTO, ProjectStateResponseDTO, QuestionForm, RELAY_OVERLOAD_CODE, RELAY_REJECTED_CODE, type RelayArtifactFile, type RelayArtifactManifest, type RelayErrorMessage, type RelayEventMessage, type RelayInboundMessage, type RelayMessage, type RelayMessageType, type RelayOutboundMessage, type RelayPingMessage, type RelayPongMessage, type RelayReadyAckMessage, type RelayReadyMessage, type RelayResultMessage, type RelayRunAgentMessage, type RelayRunDwsMessage, type RelayRunEventEntry, type RelayRunEventsMessage, type RelayUploadGrantMessage, type RelayUploadRequestMessage, type RelayWorkflowAvailableMessage, type RunExecutionEvent, type RunRecordStatus, RunScheduleDTO, type RunSnapshot, type RunSnapshotLogLevel, type RunSnapshotStepLevelResolver, RunState, SetupState, StageIdDTO, StageNextDTO, StageStateDTO, TRACE_CAP, TRACE_FULLTEXT_MAX, TRACE_TEXT_MAX, TRANSITIONS, type ToolSummary, type ToolSummaryInput, type TraceGroup, type TraceGroupItem, type TransitionRule, appendCapped, applyRunExecutionEvent, deriveRelayRunState, emptyProjectState, extractDisplayFile, formatAnswerDisplay, groupTrace, isActivePhase, isAskUserToolName, isDesignFailed, isDesignGenerating, isQuestionVisible, isRelayMessage, isTerminalPhase, mergeStageIntoState, nextActiveStage, nextFor, normalizeProjectState, patchRunSnapshotRecord, projectAgentEvents, pruneHiddenAnswers, recoverDesignFromArtifacts, serializeForm, serializeForms, stageStateOf, summarizeForms, summarizeToolDetail, summarizeToolLabel, summarizeToolUse, traceItemFromEvent, transition, truncateFullText, truncateText, truncateTraceText, validateFormAnswers, visibleQuestions, withStageNext };
|
|
841
|
+
export { ACTIVE_PHASES, ASK_USER_TOOL_NAMES, AgentEvent, type AgentTraceItem, type AnswerIssueCode, type AnswerValidationIssue, AnyStageState, type ApplyRunExecutionEventOptions, DERIVED_PHASES, DESIGN_GENERATING_PHASES, DesignArtifactValidationDTO, type DesignGeneratingState, DesignState, type DriverId, FilledForm, FormAnswerValue, FormAnswers, FormQuestion, IllegalStageTransitionError, type IllegalTransitionDetail, InitState, KnownAgentType, type NextInput, type NextRuntimeFacts, ProjectDTO, ProjectStateDTO, ProjectStateResponseDTO, QuestionForm, RELAY_OVERLOAD_CODE, RELAY_REJECTED_CODE, type RelayArtifactFile, type RelayArtifactManifest, type RelayCodeReviewConfig, type RelayCodingConfig, type RelayErrorMessage, type RelayEventMessage, type RelayGitConfig, type RelayInboundMessage, type RelayMessage, type RelayMessageType, type RelayOutboundMessage, type RelayPingMessage, type RelayPongMessage, type RelayReadyAckMessage, type RelayReadyMessage, type RelayResultMessage, type RelayRunAgentMessage, type RelayRunDwsMessage, type RelayRunEventEntry, type RelayRunEventsMessage, type RelayRunRecipeMessage, type RelayTrackerConfig, type RelayUploadGrantMessage, type RelayUploadRequestMessage, type RelayWorkflowAvailableMessage, type RunExecutionEvent, type RunRecordStatus, RunScheduleDTO, type RunSnapshot, type RunSnapshotLogLevel, type RunSnapshotStepLevelResolver, RunState, SetupState, StageIdDTO, StageNextDTO, StageStateDTO, TRACE_CAP, TRACE_FULLTEXT_MAX, TRACE_TEXT_MAX, TRANSITIONS, type ToolSummary, type ToolSummaryInput, type TraceGroup, type TraceGroupItem, type TransitionRule, appendCapped, applyRunExecutionEvent, deriveRelayRunState, emptyProjectState, extractDisplayFile, formatAnswerDisplay, groupTrace, isActivePhase, isAskUserToolName, isDesignFailed, isDesignGenerating, isQuestionVisible, isRelayMessage, isTerminalPhase, mergeStageIntoState, nextActiveStage, nextFor, normalizeProjectState, normalizeSetupState, patchRunSnapshotRecord, projectAgentEvents, pruneHiddenAnswers, recoverDesignFromArtifacts, serializeForm, serializeForms, stageStateOf, summarizeForms, summarizeToolDetail, summarizeToolLabel, summarizeToolUse, traceItemFromEvent, transition, truncateFullText, truncateText, truncateTraceText, validateFormAnswers, visibleQuestions, withStageNext };
|