aitable-workflow-base 0.1.18-beta.1787209216198

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.
@@ -0,0 +1,221 @@
1
+ // src/fixtures.ts
2
+ var now = "2026-07-14T00:00:00.000Z";
3
+ function identity(stage, id, completed = false) {
4
+ return {
5
+ id,
6
+ projectId: "wf_contract",
7
+ stage,
8
+ attempt: 1,
9
+ startedAt: now,
10
+ updatedAt: now,
11
+ ...completed ? { completedAt: now } : {}
12
+ };
13
+ }
14
+ var confirmed = {
15
+ form: {
16
+ id: "contract_discovery",
17
+ title: "\u786E\u8BA4\u5DE5\u4F5C\u6D41\u8BBE\u8BA1\u7EA6\u675F",
18
+ questions: [{
19
+ id: "scope",
20
+ label: "\u4F18\u5148\u8986\u76D6\u54EA\u4E2A\u6D41\u7A0B\u8303\u56F4\uFF1F",
21
+ type: "radio",
22
+ required: true,
23
+ options: [
24
+ { label: "\u552E\u540E\u5DE5\u5355", value: "after_sales" },
25
+ { label: "\u5BA2\u6237\u56DE\u8BBF", value: "revisit" }
26
+ ]
27
+ }]
28
+ },
29
+ answers: { scope: "after_sales" },
30
+ clarifications: "\u53EA\u8986\u76D6\u552E\u540E\u5DE5\u5355\uFF0C\u56DE\u8BBF\u4E0B\u671F\u518D\u505A",
31
+ summary: "\u7528\u6237\u786E\u8BA4\u4F18\u5148\u8986\u76D6\u552E\u540E\u5DE5\u5355",
32
+ agentSessionId: "sess_contract"
33
+ };
34
+ var designManifest = {
35
+ projectId: "wf_contract",
36
+ taskId: "task_design_1",
37
+ designVersion: 1,
38
+ status: "ready",
39
+ expected: ["workflow.yml"],
40
+ generated: [{ path: "workflow.yml", kind: "workflow", checksum: "sha256:contract", required: true }],
41
+ validation: { passed: true, errors: [], warnings: [] },
42
+ createdAt: now,
43
+ updatedAt: now
44
+ };
45
+ var setupSchema = {
46
+ fieldCount: 2,
47
+ viewCount: 1,
48
+ fields: [
49
+ { id: "fld_title", name: "\u6807\u9898", type: "text", group: "business" },
50
+ { id: "fld_state", name: "\u72B6\u6001", type: "single_select", options: ["\u5F85\u5904\u7406", "\u5904\u7406\u4E2D", "\u5DF2\u5B8C\u6210"], group: "process" }
51
+ ],
52
+ views: [
53
+ { id: "view_main", name: "\u5168\u90E8\u5DE5\u5355", kind: "grid", desc: "\u67E5\u770B\u5168\u90E8\u552E\u540E\u5DE5\u5355" }
54
+ ]
55
+ };
56
+ var initReady = {
57
+ identity: identity("init", "task_init_1", true),
58
+ state: { phase: "ready", warnings: [], roleFiles: [] },
59
+ next: { kind: "idle" }
60
+ };
61
+ var designGenerating = {
62
+ identity: identity("design", "task_design_1"),
63
+ state: { phase: "generating", confirmed, round: 1, isFix: false },
64
+ next: { kind: "attach_stream", endpoint: "/api/projects/wf_contract/design" }
65
+ };
66
+ var designReady = {
67
+ identity: identity("design", "task_design_1", true),
68
+ state: { phase: "ready", confirmed, manifest: designManifest, rounds: 2 },
69
+ next: { kind: "idle" }
70
+ };
71
+ var designClarifyAwaiting = {
72
+ identity: identity("design", "task_design_1"),
73
+ state: {
74
+ phase: "clarify_awaiting",
75
+ form: confirmed.form,
76
+ answers: { scope: "after_sales" },
77
+ agentSessionId: "sess_contract"
78
+ },
79
+ next: {
80
+ kind: "await_user",
81
+ action: {
82
+ type: "confirm_input",
83
+ label: "\u786E\u8BA4\u540E\u5F00\u59CB\u751F\u6210",
84
+ description: "\u8BF7\u5148\u786E\u8BA4\u9700\u6C42\u6F84\u6E05\u5361\u7247\uFF0C\u518D\u5F00\u59CB\u751F\u6210\u5DE5\u4F5C\u6D41\u65B9\u6848\u3002",
85
+ api: { method: "POST", path: "/api/projects/wf_contract/design/discovery/confirm" }
86
+ }
87
+ }
88
+ };
89
+ var designGenerateFailed = {
90
+ identity: identity("design", "task_design_1", true),
91
+ state: {
92
+ phase: "generate_failed",
93
+ confirmed,
94
+ error: { code: "DESIGN_VALIDATION_FAILED", message: "\u771F\u5B9E\u8BBE\u8BA1\u672A\u901A\u8FC7\u6821\u9A8C", retryable: true }
95
+ },
96
+ next: {
97
+ kind: "await_user",
98
+ action: {
99
+ type: "retry",
100
+ label: "\u91CD\u65B0\u751F\u6210\u5DE5\u4F5C\u6D41\u8BBE\u8BA1",
101
+ description: "\u771F\u5B9E\u8BBE\u8BA1\u672A\u901A\u8FC7\u6821\u9A8C",
102
+ api: { method: "POST", path: "/api/projects/wf_contract/design" }
103
+ }
104
+ }
105
+ };
106
+ var setupReady = {
107
+ identity: identity("setup", "task_setup_1", true),
108
+ state: {
109
+ phase: "ready",
110
+ tableUrl: "https://alidocs.dingtalk.com/i/nodes/base_contract",
111
+ baseId: "base_contract",
112
+ tableId: "table_contract",
113
+ schema: setupSchema,
114
+ warnings: []
115
+ },
116
+ next: { kind: "idle" }
117
+ };
118
+ var runListening = {
119
+ identity: identity("run", "task_run_1"),
120
+ state: { phase: "listening", workflowName: "\u552E\u540E\u5DE5\u5355\u81EA\u52A8\u5316", stepCount: 3, intervalMs: 5e3 },
121
+ next: { kind: "attach_stream", endpoint: "/api/projects/wf_contract/run" }
122
+ };
123
+ var projectFiles = [
124
+ {
125
+ path: "workflow.yml",
126
+ content: "meta:\n name: contract workflow\nsteps: []\n"
127
+ },
128
+ {
129
+ path: "aitable-workflow.config.yml",
130
+ content: "scene: \u552E\u540E\u5DE5\u5355\u81EA\u52A8\u5316\ntracker:\n base_id: base_contract\n table_id: table_contract\nrecipe:\n llm:\n provider: idealab\n model: test-model\n"
131
+ }
132
+ ];
133
+ var workflowPreview = {
134
+ steps: [],
135
+ edges: []
136
+ };
137
+ var projectState = {
138
+ projectId: "wf_contract",
139
+ activeStage: "run",
140
+ stages: {
141
+ init: initReady,
142
+ design: designReady,
143
+ setup: setupReady,
144
+ run: runListening
145
+ },
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
+ updatedAt: now
167
+ };
168
+ var designClarifyAwaitingState = {
169
+ projectId: "wf_contract",
170
+ activeStage: "design",
171
+ stages: {
172
+ init: initReady,
173
+ design: designClarifyAwaiting
174
+ },
175
+ updatedAt: now
176
+ };
177
+ var designGenerateFailedState = {
178
+ projectId: "wf_contract",
179
+ activeStage: null,
180
+ stages: {
181
+ init: initReady,
182
+ design: designGenerateFailed
183
+ },
184
+ updatedAt: now
185
+ };
186
+ var designEvents = [
187
+ { type: "stage.changed", stage: "design", stageState: designClarifyAwaiting },
188
+ { type: "stage.changed", stage: "design", stageState: designGenerating },
189
+ { type: "design.files", files: projectFiles },
190
+ { type: "stage.changed", stage: "design", stageState: designReady }
191
+ ];
192
+ var setupEvents = [
193
+ {
194
+ type: "stage.changed",
195
+ stage: "setup",
196
+ stageState: {
197
+ identity: identity("setup", "task_setup_1"),
198
+ state: { phase: "provisioning_table" },
199
+ next: { kind: "attach_stream", endpoint: "/api/projects/wf_contract/setup" }
200
+ }
201
+ },
202
+ { type: "stage.changed", stage: "setup", stageState: setupReady }
203
+ ];
204
+ var runEvents = [
205
+ { type: "stage.changed", stage: "run", stageState: runListening },
206
+ { type: "run.record.detected", record: { id: "rec_contract_1", title: "\u5BA2\u6237\u53CD\u9988\u53D1\u7968\u4FE1\u606F\u9519\u8BEF", state: "\u5F85\u5904\u7406", currentStep: null } },
207
+ { type: "run.step.started", itemId: "rec_contract_1", stepId: "validate_invoice", stepName: "\u6821\u9A8C\u53D1\u7968\u4FE1\u606F" },
208
+ { type: "run.step.succeeded", itemId: "rec_contract_1", stepId: "validate_invoice", stepName: "\u6821\u9A8C\u53D1\u7968\u4FE1\u606F", logs: ["\u6821\u9A8C\u5B8C\u6210"] },
209
+ { type: "run.record.completed", itemId: "rec_contract_1" }
210
+ ];
211
+ export {
212
+ designClarifyAwaitingState,
213
+ designEvents,
214
+ designGenerateFailedState,
215
+ projectFiles,
216
+ projectState,
217
+ runEvents,
218
+ setupEvents,
219
+ workflowPreview
220
+ };
221
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +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":"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","names":[]}