@actiondock/core 2.0.11 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/README.md +61 -30
  2. package/dist/app/app.d.ts +73 -0
  3. package/dist/app/app.js +700 -0
  4. package/dist/app/index.d.ts +2 -0
  5. package/dist/app/index.js +2 -0
  6. package/dist/app/types.d.ts +283 -0
  7. package/dist/app/types.js +1 -0
  8. package/dist/catalog/action-index.d.ts +9 -0
  9. package/dist/catalog/action-index.js +93 -0
  10. package/dist/catalog/action-resolver.d.ts +20 -0
  11. package/dist/catalog/action-resolver.js +95 -0
  12. package/dist/catalog/index.d.ts +5 -0
  13. package/dist/catalog/index.js +5 -0
  14. package/dist/catalog/location-registry.d.ts +15 -0
  15. package/dist/catalog/location-registry.js +138 -0
  16. package/dist/catalog/package-catalog.d.ts +7 -0
  17. package/dist/catalog/package-catalog.js +76 -0
  18. package/dist/catalog/types.d.ts +68 -0
  19. package/dist/catalog/types.js +1 -0
  20. package/dist/doctor/doctor.d.ts +7 -0
  21. package/dist/doctor/doctor.js +613 -0
  22. package/dist/doctor/index.d.ts +2 -0
  23. package/dist/doctor/index.js +2 -0
  24. package/dist/doctor/types.d.ts +23 -0
  25. package/dist/doctor/types.js +1 -0
  26. package/dist/errors.d.ts +122 -0
  27. package/dist/errors.js +123 -0
  28. package/dist/execution/index.d.ts +2 -0
  29. package/dist/execution/index.js +2 -0
  30. package/dist/execution/service.d.ts +79 -0
  31. package/dist/execution/service.js +633 -0
  32. package/dist/execution/types.d.ts +131 -0
  33. package/dist/execution/types.js +1 -0
  34. package/dist/export/index.d.ts +1 -0
  35. package/dist/export/index.js +1 -0
  36. package/dist/export/templates.d.ts +71 -0
  37. package/dist/export/templates.js +621 -0
  38. package/dist/filter/index.d.ts +1 -0
  39. package/dist/filter/index.js +1 -0
  40. package/dist/filter/intent.d.ts +33 -0
  41. package/dist/filter/intent.js +123 -0
  42. package/dist/host/host.d.ts +55 -0
  43. package/dist/host/host.js +740 -0
  44. package/dist/host/index.d.ts +2 -0
  45. package/dist/host/index.js +2 -0
  46. package/dist/host/types.d.ts +81 -0
  47. package/dist/host/types.js +1 -0
  48. package/dist/index.d.ts +21 -0
  49. package/dist/index.js +20 -0
  50. package/dist/ipc/diagnostic.d.ts +65 -0
  51. package/dist/ipc/diagnostic.js +129 -0
  52. package/dist/ipc/host.d.ts +7 -0
  53. package/dist/ipc/host.js +93 -0
  54. package/dist/ipc/index.d.ts +4 -0
  55. package/dist/ipc/index.js +4 -0
  56. package/dist/ipc/target.d.ts +56 -0
  57. package/dist/ipc/target.js +297 -0
  58. package/dist/ipc/types.d.ts +42 -0
  59. package/dist/ipc/types.js +1 -0
  60. package/dist/platform/default.d.ts +32 -0
  61. package/dist/platform/default.js +40 -0
  62. package/dist/platform/index.d.ts +3 -0
  63. package/dist/platform/index.js +3 -0
  64. package/dist/platform/node-fs.d.ts +37 -0
  65. package/dist/platform/node-fs.js +81 -0
  66. package/dist/platform/types.d.ts +104 -0
  67. package/dist/platform/types.js +1 -0
  68. package/dist/profile/client.d.ts +162 -0
  69. package/dist/profile/client.js +467 -0
  70. package/dist/profile/index.d.ts +3 -0
  71. package/dist/profile/index.js +3 -0
  72. package/dist/profile/manager.d.ts +47 -0
  73. package/dist/profile/manager.js +294 -0
  74. package/dist/profile/types.d.ts +61 -0
  75. package/dist/profile/types.js +1 -0
  76. package/dist/project/closure.d.ts +25 -0
  77. package/dist/project/closure.js +68 -0
  78. package/dist/project/digest.d.ts +29 -0
  79. package/dist/project/digest.js +324 -0
  80. package/dist/project/index.d.ts +10 -0
  81. package/dist/project/index.js +10 -0
  82. package/dist/project/init.d.ts +26 -0
  83. package/dist/project/init.js +175 -0
  84. package/dist/project/loader.d.ts +99 -0
  85. package/dist/project/loader.js +484 -0
  86. package/dist/project/lockfile.d.ts +55 -0
  87. package/dist/project/lockfile.js +175 -0
  88. package/dist/project/manifest.d.ts +22 -0
  89. package/dist/project/manifest.js +220 -0
  90. package/dist/project/resolver.d.ts +116 -0
  91. package/dist/project/resolver.js +376 -0
  92. package/dist/project/transactions.d.ts +103 -0
  93. package/dist/project/transactions.js +1203 -0
  94. package/dist/project/types-generator.d.ts +33 -0
  95. package/dist/project/types-generator.js +168 -0
  96. package/dist/project/types.d.ts +107 -0
  97. package/dist/project/types.js +1 -0
  98. package/dist/registry/index.d.ts +5 -0
  99. package/dist/registry/index.js +5 -0
  100. package/dist/registry/lock.d.ts +27 -0
  101. package/dist/registry/lock.js +93 -0
  102. package/dist/registry/registry.d.ts +45 -0
  103. package/dist/registry/registry.js +611 -0
  104. package/dist/registry/resolve.d.ts +62 -0
  105. package/dist/registry/resolve.js +195 -0
  106. package/dist/registry/scan.d.ts +38 -0
  107. package/dist/registry/scan.js +135 -0
  108. package/dist/registry/types.d.ts +117 -0
  109. package/dist/registry/types.js +1 -0
  110. package/dist/runtime/action-collection.d.ts +27 -0
  111. package/dist/runtime/action-collection.js +57 -0
  112. package/dist/runtime/clock.d.ts +19 -0
  113. package/dist/runtime/clock.js +17 -0
  114. package/dist/runtime/context.d.ts +86 -0
  115. package/dist/runtime/context.js +242 -0
  116. package/dist/runtime/env.d.ts +56 -0
  117. package/dist/runtime/env.js +159 -0
  118. package/dist/runtime/events.d.ts +93 -0
  119. package/dist/runtime/events.js +604 -0
  120. package/dist/runtime/execution-manager.d.ts +48 -0
  121. package/dist/runtime/execution-manager.js +66 -0
  122. package/dist/runtime/index.d.ts +10 -0
  123. package/dist/runtime/index.js +10 -0
  124. package/dist/runtime/module-loader.d.ts +34 -0
  125. package/dist/runtime/module-loader.js +16 -0
  126. package/dist/runtime/process.d.ts +9 -0
  127. package/dist/runtime/process.js +146 -0
  128. package/dist/runtime/runner.d.ts +293 -0
  129. package/dist/runtime/runner.js +984 -0
  130. package/dist/runtime/standalone.d.ts +89 -0
  131. package/dist/runtime/standalone.js +536 -0
  132. package/dist/schema/validator.d.ts +28 -0
  133. package/dist/schema/validator.js +116 -0
  134. package/dist/server/body.d.ts +40 -0
  135. package/dist/server/body.js +93 -0
  136. package/dist/server/index.d.ts +5 -0
  137. package/dist/server/index.js +5 -0
  138. package/dist/server/routes/actions.d.ts +5 -0
  139. package/dist/server/routes/actions.js +298 -0
  140. package/dist/server/routes/common.d.ts +47 -0
  141. package/dist/server/routes/common.js +104 -0
  142. package/dist/server/routes/config.d.ts +6 -0
  143. package/dist/server/routes/config.js +173 -0
  144. package/dist/server/routes/doctor.d.ts +5 -0
  145. package/dist/server/routes/doctor.js +63 -0
  146. package/dist/server/routes/health.d.ts +5 -0
  147. package/dist/server/routes/health.js +35 -0
  148. package/dist/server/routes/index.d.ts +9 -0
  149. package/dist/server/routes/index.js +9 -0
  150. package/dist/server/routes/info.d.ts +7 -0
  151. package/dist/server/routes/info.js +158 -0
  152. package/dist/server/routes/playbooks.d.ts +5 -0
  153. package/dist/server/routes/playbooks.js +134 -0
  154. package/dist/server/routes/runs.d.ts +5 -0
  155. package/dist/server/routes/runs.js +343 -0
  156. package/dist/server/routes/state.d.ts +6 -0
  157. package/dist/server/routes/state.js +169 -0
  158. package/dist/server/security.d.ts +44 -0
  159. package/dist/server/security.js +101 -0
  160. package/dist/server/server.d.ts +15 -0
  161. package/dist/server/server.js +355 -0
  162. package/dist/server/types.d.ts +78 -0
  163. package/dist/server/types.js +1 -0
  164. package/dist/storage/data-dir-lock.d.ts +119 -0
  165. package/dist/storage/data-dir-lock.js +1016 -0
  166. package/dist/storage/driver.d.ts +9 -0
  167. package/dist/storage/driver.js +59 -0
  168. package/dist/storage/index.d.ts +64 -0
  169. package/dist/storage/index.js +98 -0
  170. package/dist/storage/lazy.d.ts +8 -0
  171. package/dist/storage/lazy.js +44 -0
  172. package/dist/storage/mask.d.ts +26 -0
  173. package/dist/storage/mask.js +48 -0
  174. package/dist/storage/params.d.ts +13 -0
  175. package/dist/storage/params.js +32 -0
  176. package/dist/storage/sqlite.d.ts +79 -0
  177. package/dist/storage/sqlite.js +689 -0
  178. package/dist/storage/types.d.ts +172 -0
  179. package/dist/storage/types.js +14 -0
  180. package/dist/target/index.d.ts +4 -0
  181. package/dist/target/index.js +4 -0
  182. package/dist/target/local.d.ts +52 -0
  183. package/dist/target/local.js +343 -0
  184. package/dist/target/remote.d.ts +76 -0
  185. package/dist/target/remote.js +839 -0
  186. package/dist/target/target.d.ts +6 -0
  187. package/dist/target/target.js +35 -0
  188. package/dist/target/types.d.ts +246 -0
  189. package/dist/target/types.js +34 -0
  190. package/dist/utils/index.d.ts +49 -0
  191. package/dist/utils/index.js +180 -0
  192. package/dist/version.d.ts +4 -0
  193. package/dist/version.js +4 -0
  194. package/package.json +13 -13
  195. package/src/build/index.ts +0 -1
  196. package/src/build/templates.ts +0 -59
  197. package/src/catalog/action-index.ts +0 -92
  198. package/src/catalog/action-resolver.ts +0 -120
  199. package/src/catalog/index.ts +0 -5
  200. package/src/catalog/location-registry.ts +0 -134
  201. package/src/catalog/package-catalog.ts +0 -87
  202. package/src/catalog/types.ts +0 -75
  203. package/src/doctor/doctor.ts +0 -419
  204. package/src/doctor/index.ts +0 -2
  205. package/src/doctor/types.ts +0 -25
  206. package/src/execution/index.ts +0 -2
  207. package/src/execution/service.ts +0 -322
  208. package/src/execution/types.ts +0 -73
  209. package/src/export/index.ts +0 -1
  210. package/src/export/templates.ts +0 -590
  211. package/src/filter/index.ts +0 -1
  212. package/src/filter/intent.ts +0 -154
  213. package/src/index.ts +0 -16
  214. package/src/profile/client.ts +0 -552
  215. package/src/profile/index.ts +0 -3
  216. package/src/profile/manager.ts +0 -341
  217. package/src/profile/types.ts +0 -71
  218. package/src/project/index.ts +0 -4
  219. package/src/project/init.ts +0 -242
  220. package/src/project/loader.ts +0 -479
  221. package/src/project/manifest.ts +0 -299
  222. package/src/project/types.ts +0 -141
  223. package/src/registry/index.ts +0 -2
  224. package/src/registry/registry.ts +0 -940
  225. package/src/registry/types.ts +0 -127
  226. package/src/runtime/clock.ts +0 -41
  227. package/src/runtime/context.ts +0 -259
  228. package/src/runtime/env.ts +0 -172
  229. package/src/runtime/events.ts +0 -142
  230. package/src/runtime/execution-manager.ts +0 -74
  231. package/src/runtime/index.ts +0 -10
  232. package/src/runtime/module-loader.ts +0 -67
  233. package/src/runtime/process.ts +0 -245
  234. package/src/runtime/runner.ts +0 -527
  235. package/src/runtime/standalone.ts +0 -429
  236. package/src/schema/validator.ts +0 -61
  237. package/src/server/body.ts +0 -112
  238. package/src/server/index.ts +0 -7
  239. package/src/server/routes/actions.ts +0 -262
  240. package/src/server/routes/common.ts +0 -126
  241. package/src/server/routes/config.ts +0 -147
  242. package/src/server/routes/doctor.ts +0 -29
  243. package/src/server/routes/health.ts +0 -40
  244. package/src/server/routes/index.ts +0 -9
  245. package/src/server/routes/info.ts +0 -221
  246. package/src/server/routes/playbooks.ts +0 -109
  247. package/src/server/routes/runs.ts +0 -301
  248. package/src/server/routes/state.ts +0 -133
  249. package/src/server/runtime-registry.ts +0 -115
  250. package/src/server/security.ts +0 -115
  251. package/src/server/server.ts +0 -251
  252. package/src/server/types.ts +0 -57
  253. package/src/storage/driver.ts +0 -126
  254. package/src/storage/index.ts +0 -81
  255. package/src/storage/mask.ts +0 -34
  256. package/src/storage/sqlite.ts +0 -714
  257. package/src/storage/types.ts +0 -139
  258. package/src/utils/index.ts +0 -62
@@ -1,322 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import type {
3
- ActionDefinition,
4
- ActionRef,
5
- ExecutionEvent,
6
- ExecutionResult,
7
- JsonValue,
8
- Logger,
9
- ProgressReporter,
10
- RunRecord,
11
- RunStatus,
12
- } from "@actiondock/sdk";
13
- import type { ProjectConfig } from "../project/types";
14
- import { type EventSink, getDefaultEventSink } from "../runtime/events";
15
- import { ActionRunner, type ExecutionHandle } from "../runtime/runner";
16
- import type { RuntimeStorage } from "../storage/types";
17
- import type {
18
- CancelResult,
19
- ExecuteOptions,
20
- ExecutionService,
21
- ExecutionTicket,
22
- } from "./types";
23
-
24
- export interface ExecutionServiceOptions {
25
- packageId: string;
26
- storage: RuntimeStorage;
27
- projectConfig?: ProjectConfig;
28
- eventSink?: EventSink;
29
- maxActiveRuns?: number;
30
- ownerId?: string;
31
- actionResolver?: (ref: ActionRef) => ActionDefinition | undefined | Promise<ActionDefinition | undefined>;
32
- }
33
-
34
- interface ActiveRun {
35
- runId: string;
36
- handle: ExecutionHandle;
37
- controller: AbortController;
38
- status: RunStatus;
39
- startedAt: string;
40
- }
41
-
42
- /**
43
- * 统一执行协调服务实现。
44
- */
45
- export class DefaultExecutionService implements ExecutionService {
46
- private packageId: string;
47
- private storage: RuntimeStorage;
48
- private projectConfig?: ProjectConfig;
49
- private eventSink: EventSink;
50
- private maxActiveRuns: number;
51
- private ownerId: string;
52
- private runner: ActionRunner;
53
- private actionResolver?: (ref: ActionRef) => ActionDefinition | undefined | Promise<ActionDefinition | undefined>;
54
- private activeRuns = new Map<string, ActiveRun>();
55
- private isClosing = false;
56
-
57
- constructor(options: ExecutionServiceOptions) {
58
- this.packageId = options.packageId;
59
- this.storage = options.storage;
60
- this.projectConfig = options.projectConfig;
61
- this.eventSink = options.eventSink || getDefaultEventSink();
62
- this.maxActiveRuns = options.maxActiveRuns || 32;
63
- this.ownerId = options.ownerId || `host-${randomUUID().slice(0, 8)}`;
64
- this.actionResolver = options.actionResolver;
65
-
66
- this.runner = new ActionRunner({
67
- packageId: this.packageId,
68
- storage: this.storage,
69
- projectConfig: this.projectConfig,
70
- });
71
- }
72
-
73
- public registerAction(action: ActionDefinition): void {
74
- this.runner.registerAction(action);
75
- }
76
-
77
- private async resolveTargetAction(ref: ActionRef): Promise<ActionDefinition | undefined> {
78
- const fromRunner = this.runner.getAction(ref.actionId);
79
- if (fromRunner) return fromRunner;
80
- if (this.actionResolver) {
81
- return this.actionResolver(ref);
82
- }
83
- return undefined;
84
- }
85
-
86
- async execute(
87
- ref: ActionRef,
88
- input: JsonValue,
89
- options: ExecuteOptions = {}
90
- ): Promise<ExecutionResult> {
91
- const ticket = await this.start(ref, input, options);
92
- const active = this.activeRuns.get(ticket.runId);
93
- if (!active) {
94
- const record = await this.get(ticket.runId);
95
- if (record && record.status === "success") {
96
- return { ok: true, runId: ticket.runId, data: record.output ?? null };
97
- }
98
- return {
99
- ok: false,
100
- runId: ticket.runId,
101
- error: record?.error || {
102
- code: "RUN_TERMINATED_EARLY",
103
- message: `Run ${ticket.runId} terminated without result`,
104
- },
105
- };
106
- }
107
- return active.handle.result;
108
- }
109
-
110
- async start(
111
- ref: ActionRef,
112
- input: JsonValue,
113
- options: ExecuteOptions = {}
114
- ): Promise<ExecutionTicket> {
115
- if (this.isClosing) {
116
- throw new Error("ExecutionService is closing: new tasks rejected");
117
- }
118
-
119
- if (this.activeRuns.size >= this.maxActiveRuns) {
120
- throw new Error(
121
- `Concurrency limit reached: ${this.activeRuns.size}/${this.maxActiveRuns} active runs`
122
- );
123
- }
124
-
125
- const action = await this.resolveTargetAction(ref);
126
- if (!action) {
127
- const runId = randomUUID();
128
- const errEvt: ExecutionEvent = {
129
- runId,
130
- rootRunId: runId,
131
- sequence: 0,
132
- timestamp: new Date().toISOString(),
133
- type: "finish",
134
- result: {
135
- ok: false,
136
- runId,
137
- error: {
138
- code: "ACTION_NOT_FOUND",
139
- message: `Action '${ref.actionId}' not found in package '${ref.packageId || this.packageId}'`,
140
- },
141
- },
142
- };
143
- this.eventSink.emit(errEvt);
144
- return {
145
- runId,
146
- status: "failed",
147
- };
148
- }
149
-
150
- const controller = new AbortController();
151
- if (options.signal) {
152
- if (options.signal.aborted) {
153
- controller.abort(options.signal.reason);
154
- } else {
155
- options.signal.addEventListener(
156
- "abort",
157
- () => controller.abort(options.signal?.reason),
158
- { once: true }
159
- );
160
- }
161
- }
162
-
163
- const runId = randomUUID();
164
- let sequence = 0;
165
- type EventPayload =
166
- | { type: "log"; level: "debug" | "info" | "warn" | "error"; message: string; data?: JsonValue }
167
- | { type: "progress"; current?: number; total?: number; message?: string }
168
- | { type: "status"; status: RunStatus }
169
- | { type: "finish"; result: ExecutionResult };
170
-
171
- const emitEvent = (payload: EventPayload) => {
172
- const evt: ExecutionEvent = {
173
- ...payload,
174
- runId,
175
- rootRunId: runId,
176
- sequence: sequence++,
177
- timestamp: new Date().toISOString(),
178
- };
179
- this.eventSink.emit(evt);
180
- };
181
-
182
- const progressReporter: ProgressReporter = {
183
- report(current: number, total?: number, message?: string) {
184
- emitEvent({
185
- type: "progress",
186
- current,
187
- total,
188
- message,
189
- });
190
- },
191
- };
192
-
193
- const executionLogger: Logger = {
194
- debug(message: string, data?: unknown) {
195
- emitEvent({
196
- type: "log",
197
- level: "debug",
198
- message,
199
- data: data as JsonValue | undefined,
200
- });
201
- },
202
- info(message: string, data?: unknown) {
203
- emitEvent({
204
- type: "log",
205
- level: "info",
206
- message,
207
- data: data as JsonValue | undefined,
208
- });
209
- },
210
- warn(message: string, data?: unknown) {
211
- emitEvent({
212
- type: "log",
213
- level: "warn",
214
- message,
215
- data: data as JsonValue | undefined,
216
- });
217
- },
218
- error(message: string, data?: unknown) {
219
- emitEvent({
220
- type: "log",
221
- level: "error",
222
- message,
223
- data: data as JsonValue | undefined,
224
- });
225
- },
226
- };
227
-
228
- const handle = this.runner.start(action, input, {
229
- runId,
230
- signal: controller.signal,
231
- timeoutMs: options.timeoutMs,
232
- progress: progressReporter,
233
- logger: executionLogger,
234
- });
235
-
236
- const activeItem: ActiveRun = {
237
- runId: handle.runId,
238
- handle,
239
- controller,
240
- status: "running",
241
- startedAt: new Date().toISOString(),
242
- };
243
-
244
- this.activeRuns.set(handle.runId, activeItem);
245
- emitEvent({ type: "status", status: "running" });
246
-
247
- handle.result
248
- .then((result: ExecutionResult) => {
249
- activeItem.status = result.ok ? "success" : "failed";
250
- emitEvent({ type: "finish", result });
251
- })
252
- .catch((err: any) => {
253
- activeItem.status = "failed";
254
- emitEvent({
255
- type: "finish",
256
- result: {
257
- ok: false,
258
- runId: handle.runId,
259
- error: {
260
- code: "UNHANDLED_EXECUTION_ERROR",
261
- message: err?.message || String(err),
262
- },
263
- },
264
- });
265
- })
266
- .finally(() => {
267
- this.activeRuns.delete(handle.runId);
268
- });
269
-
270
- return {
271
- runId: handle.runId,
272
- status: "running",
273
- };
274
- }
275
-
276
- async get(runId: string): Promise<RunRecord | undefined> {
277
- const record = this.storage.getRun(runId);
278
- return record || undefined;
279
- }
280
-
281
- async cancel(runId: string, reason?: string): Promise<CancelResult> {
282
- const active = this.activeRuns.get(runId);
283
- if (!active) {
284
- const record = await this.get(runId);
285
- if (record) {
286
- return { outcome: "already_terminal", runId, status: record.status };
287
- }
288
- return { outcome: "not_found", runId };
289
- }
290
-
291
- active.controller.abort(new Error(reason || "Execution cancelled"));
292
- active.handle.cancel(reason);
293
- return { outcome: "requested", runId };
294
- }
295
-
296
- events(
297
- runId: string,
298
- options: { after?: number; signal?: AbortSignal } = {}
299
- ): AsyncIterable<ExecutionEvent> {
300
- return this.eventSink.subscribe(runId, options);
301
- }
302
-
303
- async close(options: { graceMs?: number } = {}): Promise<void> {
304
- this.isClosing = true;
305
- const graceMs = options.graceMs ?? 5000;
306
-
307
- for (const [_, active] of this.activeRuns) {
308
- active.controller.abort(new Error("Service shutting down"));
309
- active.handle.cancel("Service shutting down");
310
- }
311
-
312
- if (this.activeRuns.size > 0) {
313
- const waitPromise = Promise.all(
314
- Array.from(this.activeRuns.values()).map((a) => a.handle.result.catch(() => {}))
315
- );
316
- const timeoutPromise = new Promise((resolve) => setTimeout(resolve, graceMs));
317
- await Promise.race([waitPromise, timeoutPromise]);
318
- }
319
-
320
- this.activeRuns.clear();
321
- }
322
- }
@@ -1,73 +0,0 @@
1
- import type {
2
- ActionRef,
3
- ExecutionEvent,
4
- ExecutionResult,
5
- JsonValue,
6
- RunRecord,
7
- RunStatus,
8
- } from "@actiondock/sdk";
9
-
10
- /**
11
- * 执行参数选项。
12
- */
13
- export interface ExecuteOptions {
14
- /** 外部取消信号 */
15
- signal?: AbortSignal;
16
- /** 超时时间(毫秒) */
17
- timeoutMs?: number;
18
- /** 配置临时覆盖字典 */
19
- config?: Record<string, JsonValue>;
20
- }
21
-
22
- /**
23
- * 异步任务执行票据。
24
- */
25
- export interface ExecutionTicket {
26
- /** 运行标识 */
27
- runId: string;
28
- /** 当前状态 */
29
- status: RunStatus;
30
- }
31
-
32
- /**
33
- * 取消操作结果枚举。
34
- */
35
- export type CancelResult =
36
- | { outcome: "requested"; runId: string }
37
- | { outcome: "already_terminal"; runId: string; status: RunStatus }
38
- | { outcome: "not_found"; runId: string }
39
- | { outcome: "not_owner"; runId: string };
40
-
41
- /**
42
- * 统一执行协调服务接口。
43
- */
44
- export interface ExecutionService {
45
- /** 同步执行 Action 并等待终态结果 */
46
- execute(
47
- ref: ActionRef,
48
- input: JsonValue,
49
- options?: ExecuteOptions
50
- ): Promise<ExecutionResult>;
51
-
52
- /** 异步启动 Action 并立即返回任务票据 */
53
- start(
54
- ref: ActionRef,
55
- input: JsonValue,
56
- options?: ExecuteOptions
57
- ): Promise<ExecutionTicket>;
58
-
59
- /** 根据 ID 获取运行记录 */
60
- get(runId: string): Promise<RunRecord | undefined>;
61
-
62
- /** 取消指定的在运行任务 */
63
- cancel(runId: string, reason?: string): Promise<CancelResult>;
64
-
65
- /** 订阅执行事件流 */
66
- events(
67
- runId: string,
68
- options?: { after?: number; signal?: AbortSignal }
69
- ): AsyncIterable<ExecutionEvent>;
70
-
71
- /** 优雅关闭服务并等待活跃任务收尾 */
72
- close(options?: { graceMs?: number }): Promise<void>;
73
- }
@@ -1 +0,0 @@
1
- export * from "./templates";