@atom-workflow-agent/cli 0.1.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.
Files changed (96) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +61 -0
  3. package/README.zh-CN.md +61 -0
  4. package/dist/app.d.ts +14 -0
  5. package/dist/app.d.ts.map +1 -0
  6. package/dist/app.js +172 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/atoms/atom-development-service.d.ts +43 -0
  9. package/dist/atoms/atom-development-service.d.ts.map +1 -0
  10. package/dist/atoms/atom-development-service.js +308 -0
  11. package/dist/atoms/atom-development-service.js.map +1 -0
  12. package/dist/atoms/atom-development-store.d.ts +70 -0
  13. package/dist/atoms/atom-development-store.d.ts.map +1 -0
  14. package/dist/atoms/atom-development-store.js +271 -0
  15. package/dist/atoms/atom-development-store.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +38 -0
  17. package/dist/commands/doctor.d.ts.map +1 -0
  18. package/dist/commands/doctor.js +163 -0
  19. package/dist/commands/doctor.js.map +1 -0
  20. package/dist/commands/models.d.ts +16 -0
  21. package/dist/commands/models.d.ts.map +1 -0
  22. package/dist/commands/models.js +20 -0
  23. package/dist/commands/models.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +19 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/local/local-project-service.d.ts +63 -0
  29. package/dist/local/local-project-service.d.ts.map +1 -0
  30. package/dist/local/local-project-service.js +327 -0
  31. package/dist/local/local-project-service.js.map +1 -0
  32. package/dist/logging/create-cli-logger.d.ts +8 -0
  33. package/dist/logging/create-cli-logger.d.ts.map +1 -0
  34. package/dist/logging/create-cli-logger.js +11 -0
  35. package/dist/logging/create-cli-logger.js.map +1 -0
  36. package/dist/logging/json-logger.d.ts +24 -0
  37. package/dist/logging/json-logger.d.ts.map +1 -0
  38. package/dist/logging/json-logger.js +29 -0
  39. package/dist/logging/json-logger.js.map +1 -0
  40. package/dist/providers/acp-planning-model-adapter.d.ts +9 -0
  41. package/dist/providers/acp-planning-model-adapter.d.ts.map +1 -0
  42. package/dist/providers/acp-planning-model-adapter.js +54 -0
  43. package/dist/providers/acp-planning-model-adapter.js.map +1 -0
  44. package/dist/providers/provider-name.d.ts +5 -0
  45. package/dist/providers/provider-name.d.ts.map +1 -0
  46. package/dist/providers/provider-name.js +4 -0
  47. package/dist/providers/provider-name.js.map +1 -0
  48. package/dist/providers/resolve-provider-config.d.ts +10 -0
  49. package/dist/providers/resolve-provider-config.d.ts.map +1 -0
  50. package/dist/providers/resolve-provider-config.js +14 -0
  51. package/dist/providers/resolve-provider-config.js.map +1 -0
  52. package/dist/providers/resolve-trae-executable.d.ts +20 -0
  53. package/dist/providers/resolve-trae-executable.d.ts.map +1 -0
  54. package/dist/providers/resolve-trae-executable.js +46 -0
  55. package/dist/providers/resolve-trae-executable.js.map +1 -0
  56. package/dist/workflow/builtin-atom-packages.d.ts +4 -0
  57. package/dist/workflow/builtin-atom-packages.d.ts.map +1 -0
  58. package/dist/workflow/builtin-atom-packages.js +39 -0
  59. package/dist/workflow/builtin-atom-packages.js.map +1 -0
  60. package/dist/workflow/planning-cli-service.d.ts +35 -0
  61. package/dist/workflow/planning-cli-service.d.ts.map +1 -0
  62. package/dist/workflow/planning-cli-service.js +97 -0
  63. package/dist/workflow/planning-cli-service.js.map +1 -0
  64. package/dist/workflow/workflow-command-input.d.ts +25 -0
  65. package/dist/workflow/workflow-command-input.d.ts.map +1 -0
  66. package/dist/workflow/workflow-command-input.js +117 -0
  67. package/dist/workflow/workflow-command-input.js.map +1 -0
  68. package/dist/workflow/workflow-command-progress.d.ts +6 -0
  69. package/dist/workflow/workflow-command-progress.d.ts.map +1 -0
  70. package/dist/workflow/workflow-command-progress.js +81 -0
  71. package/dist/workflow/workflow-command-progress.js.map +1 -0
  72. package/dist/workflow/workflow-command-service.d.ts +85 -0
  73. package/dist/workflow/workflow-command-service.d.ts.map +1 -0
  74. package/dist/workflow/workflow-command-service.js +2 -0
  75. package/dist/workflow/workflow-command-service.js.map +1 -0
  76. package/dist/workflow/workflow-command.d.ts +5 -0
  77. package/dist/workflow/workflow-command.d.ts.map +1 -0
  78. package/dist/workflow/workflow-command.js +425 -0
  79. package/dist/workflow/workflow-command.js.map +1 -0
  80. package/dist/workflow/workflow-coordinator.d.ts +25 -0
  81. package/dist/workflow/workflow-coordinator.d.ts.map +1 -0
  82. package/dist/workflow/workflow-coordinator.js +112 -0
  83. package/dist/workflow/workflow-coordinator.js.map +1 -0
  84. package/dist/workflow/workflow-output.d.ts +9 -0
  85. package/dist/workflow/workflow-output.d.ts.map +1 -0
  86. package/dist/workflow/workflow-output.js +109 -0
  87. package/dist/workflow/workflow-output.js.map +1 -0
  88. package/dist/workflow/workflow-project-config.d.ts +14 -0
  89. package/dist/workflow/workflow-project-config.d.ts.map +1 -0
  90. package/dist/workflow/workflow-project-config.js +55 -0
  91. package/dist/workflow/workflow-project-config.js.map +1 -0
  92. package/dist/workflow/workflow-service.d.ts +1237 -0
  93. package/dist/workflow/workflow-service.d.ts.map +1 -0
  94. package/dist/workflow/workflow-service.js +475 -0
  95. package/dist/workflow/workflow-service.js.map +1 -0
  96. package/package.json +65 -0
@@ -0,0 +1,308 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { AtomWorkflowError, validateJsonSchemaInstance, } from "@atom-workflow-agent/contracts";
3
+ import { ManagedAttemptResources, ProcessAtomAttemptRunner, } from "@atom-workflow-agent/atom-executor";
4
+ import { createAtomLifecycleHelpers } from "@atom-workflow-agent/atom-sdk";
5
+ import { HostHandoffManager } from "@atom-workflow-agent/workflow-engine";
6
+ import { LocalAtomDevelopmentStore, } from "./atom-development-store.js";
7
+ const DEVELOPMENT_WORKFLOW_HASH = `sha256:${"0".repeat(64)}`;
8
+ const DEFAULT_MAX_LIFECYCLE_TICKS = 64;
9
+ function parseAtomKey(key) {
10
+ const separator = key.lastIndexOf("@");
11
+ if (separator < 1 || separator === key.length - 1) {
12
+ throw new AtomWorkflowError("ATOM_KEY_INVALID", "Atom key must use the exact id@version form");
13
+ }
14
+ return { id: key.slice(0, separator), version: key.slice(separator + 1) };
15
+ }
16
+ function asJson(value) {
17
+ return JSON.parse(JSON.stringify(value));
18
+ }
19
+ function logger() {
20
+ // Worker log events are persisted once through ProcessAtomAttemptRunner.
21
+ return Object.freeze({ debug() { }, info() { }, warn() { }, error() { } });
22
+ }
23
+ function wait(ms, signal) {
24
+ if (ms <= 0)
25
+ return Promise.resolve();
26
+ return new Promise((resolve, reject) => {
27
+ const complete = () => {
28
+ signal?.removeEventListener("abort", abort);
29
+ resolve();
30
+ };
31
+ const timer = setTimeout(complete, ms);
32
+ const abort = () => {
33
+ clearTimeout(timer);
34
+ reject(signal?.reason instanceof Error ? signal.reason : new AtomWorkflowError("CANCELLED", "Atom development Attempt was cancelled"));
35
+ };
36
+ signal?.addEventListener("abort", abort, { once: true });
37
+ if (signal?.aborted)
38
+ abort();
39
+ });
40
+ }
41
+ /** Standalone Atom development facade backed by the same Attempt Runner used by Workflow Runtime. */
42
+ export class AtomDevelopmentService {
43
+ options;
44
+ constructor(options) {
45
+ this.options = options;
46
+ }
47
+ async run(atomKey, input, execution = {}) {
48
+ const { id, version } = parseAtomKey(atomKey);
49
+ const lease = this.options.registry.acquire(id, version);
50
+ const attemptId = `atom-attempt-${randomUUID()}`;
51
+ try {
52
+ if (!lease.executionSource) {
53
+ throw new AtomWorkflowError("ATOM_EXECUTION_SOURCE_REQUIRED", `Atom has no reloadable module source: ${atomKey}`);
54
+ }
55
+ const inputIssues = validateJsonSchemaInstance(lease.definition.manifest.inputSchema, input, "$.input");
56
+ if (inputIssues.length > 0) {
57
+ throw new AtomWorkflowError("ATOM_INPUT_SCHEMA_MISMATCH", "Mock input does not match the Atom input Schema", false, { cause: inputIssues });
58
+ }
59
+ const timestamp = this.now();
60
+ const maxLifecycleTicks = execution.maxLifecycleTicks ?? DEFAULT_MAX_LIFECYCLE_TICKS;
61
+ if (!Number.isInteger(maxLifecycleTicks) || maxLifecycleTicks < 1 || maxLifecycleTicks > 100_000) {
62
+ throw new AtomWorkflowError("ATOM_LIFECYCLE_POLICY_INVALID", "maxLifecycleTicks must be an integer from 1 to 100000");
63
+ }
64
+ await this.options.store.create({
65
+ attemptId,
66
+ atomKey,
67
+ source: lease.executionSource,
68
+ cwd: this.options.cwd,
69
+ value: input,
70
+ maxLifecycleTicks,
71
+ now: timestamp,
72
+ });
73
+ const runtime = this.runtime(attemptId, atomKey, input, { ...execution, maxLifecycleTicks });
74
+ const snapshot = await runtime.runner.start({
75
+ definition: lease.definition,
76
+ executionSource: lease.executionSource,
77
+ input,
78
+ context: runtime.context,
79
+ lifecycle: runtime.lifecycle,
80
+ });
81
+ return await this.drive(atomKey, input, snapshot, lease.definition, lease.executionSource, runtime);
82
+ }
83
+ catch (error) {
84
+ try {
85
+ const record = await this.options.store.fail(attemptId, error, this.now());
86
+ await this.options.store.flush(attemptId);
87
+ return this.result(record);
88
+ }
89
+ catch (storeError) {
90
+ if (storeError.code === "ATOM_ATTEMPT_NOT_FOUND")
91
+ throw error;
92
+ throw new AggregateError([error, storeError], "Atom execution and failure persistence both failed");
93
+ }
94
+ }
95
+ finally {
96
+ lease.release();
97
+ }
98
+ }
99
+ async resume(attemptId, value, execution = {}) {
100
+ return this.options.store.withAttemptLock(attemptId, () => this.resumeLocked(attemptId, value, execution));
101
+ }
102
+ async resumeLocked(attemptId, value, execution) {
103
+ const record = await this.options.store.load(attemptId);
104
+ if (record.cwd !== this.options.cwd) {
105
+ throw new AtomWorkflowError("ATOM_ATTEMPT_SCOPE_MISMATCH", "Atom Attempt belongs to another project cwd");
106
+ }
107
+ const paused = record.lifecycle;
108
+ if (!paused || (paused.state !== "awaiting_signal" && paused.state !== "awaiting_host")) {
109
+ throw new AtomWorkflowError("ATOM_ATTEMPT_NOT_RESUMABLE", `Atom Attempt is ${record.state}: ${attemptId}`);
110
+ }
111
+ const { id, version } = parseAtomKey(record.atom.key);
112
+ const lease = this.options.registry.acquire(id, version);
113
+ try {
114
+ if (!lease.executionSource
115
+ || lease.executionSource.moduleUrl !== record.atom.source.moduleUrl
116
+ || lease.executionSource.sourceId !== record.atom.source.sourceId) {
117
+ throw new AtomWorkflowError("ATOM_EXECUTION_SOURCE_DRIFT", `Atom execution source changed after the Attempt paused: ${record.atom.key}`);
118
+ }
119
+ const resume = this.resumePayload(paused, value);
120
+ await this.options.store.update(attemptId, (current) => ({ ...current, state: "running", updatedAt: this.now() }));
121
+ await this.options.store.append(attemptId, "attempt.resumed", { kind: resume.kind });
122
+ if (execution.maxLifecycleTicks !== undefined && execution.maxLifecycleTicks !== record.maxLifecycleTicks) {
123
+ throw new AtomWorkflowError("ATOM_ATTEMPT_POLICY_DRIFT", "maxLifecycleTicks cannot change while resuming an Atom Attempt");
124
+ }
125
+ const effectiveExecution = {
126
+ ...execution,
127
+ maxLifecycleTicks: record.maxLifecycleTicks,
128
+ };
129
+ const runtime = this.runtime(attemptId, record.atom.key, record.input, effectiveExecution);
130
+ const snapshot = await runtime.runner.continue({
131
+ definition: lease.definition,
132
+ executionSource: lease.executionSource,
133
+ input: record.input,
134
+ context: runtime.context,
135
+ snapshot: paused,
136
+ resume,
137
+ lifecycle: runtime.lifecycle,
138
+ });
139
+ return await this.drive(record.atom.key, record.input, snapshot, lease.definition, lease.executionSource, runtime);
140
+ }
141
+ catch (error) {
142
+ const failed = await this.options.store.fail(attemptId, error, this.now());
143
+ await this.options.store.flush(attemptId);
144
+ return this.result(failed);
145
+ }
146
+ finally {
147
+ lease.release();
148
+ }
149
+ }
150
+ async inspect(attemptId) {
151
+ return this.publicRecord(await this.options.store.load(attemptId));
152
+ }
153
+ async events(attemptId, after = -1, limit = 200) {
154
+ await this.options.store.load(attemptId);
155
+ if (!Number.isInteger(limit) || limit < 1 || limit > 1_000) {
156
+ throw new AtomWorkflowError("ATOM_EVENT_LIMIT_INVALID", "Atom event limit must be an integer from 1 to 1000");
157
+ }
158
+ return (await this.options.store.events(attemptId, after)).slice(0, limit);
159
+ }
160
+ runtime(attemptId, atomKey, input, execution) {
161
+ const artifacts = this.options.store.artifactService(attemptId, async (artifact) => {
162
+ await this.options.store.update(attemptId, (current) => ({
163
+ ...current,
164
+ artifacts: [...current.artifacts, artifact],
165
+ updatedAt: this.now(),
166
+ }));
167
+ });
168
+ const onProcessEvent = (event) => {
169
+ this.options.store.captureProcessEvent(event);
170
+ execution.onEvent?.(event);
171
+ };
172
+ const context = {
173
+ runtime: {
174
+ runId: `development:${attemptId}`,
175
+ workflowRevisionId: "atom-development@1",
176
+ nodeId: atomKey,
177
+ attemptId,
178
+ attempt: 0,
179
+ cwd: this.options.cwd,
180
+ },
181
+ cwd: this.options.cwd,
182
+ signal: this.options.signal ?? new AbortController().signal,
183
+ artifacts,
184
+ resources: new ManagedAttemptResources(),
185
+ logger: logger(),
186
+ metadata: { mode: "atom-development" },
187
+ ...createAtomLifecycleHelpers(),
188
+ };
189
+ const hostManager = new HostHandoffManager({
190
+ idFactory: () => `${attemptId}:host:${randomUUID()}`,
191
+ });
192
+ const lifecycle = {
193
+ maxLifecycleTicks: execution.maxLifecycleTicks ?? DEFAULT_MAX_LIFECYCLE_TICKS,
194
+ persistTick: async (tick) => {
195
+ await this.options.store.append(attemptId, "lifecycle.tick", asJson(tick));
196
+ },
197
+ issueHostTask: (declaration) => {
198
+ const { id, version } = parseAtomKey(atomKey);
199
+ const manifest = this.options.registry.get(id, version).manifest;
200
+ return hostManager.issue({
201
+ manifest,
202
+ declaration,
203
+ input,
204
+ runId: context.runtime.runId,
205
+ workflowRevisionId: context.runtime.workflowRevisionId,
206
+ nodeId: context.runtime.nodeId,
207
+ activationId: `${attemptId}:activation`,
208
+ attemptId,
209
+ workflowIrHash: DEVELOPMENT_WORKFLOW_HASH,
210
+ projectScope: this.options.cwd,
211
+ hostScope: "atom-development",
212
+ });
213
+ },
214
+ };
215
+ return { context, lifecycle, runner: new ProcessAtomAttemptRunner({ onEvent: onProcessEvent }) };
216
+ }
217
+ async drive(atomKey, input, initial, definition, executionSource, runtime) {
218
+ let snapshot = initial;
219
+ while (snapshot.state === "running") {
220
+ await this.persistSnapshot(snapshot);
221
+ await wait(snapshot.nextPollAfterMs ?? 0, this.options.signal);
222
+ snapshot = await runtime.runner.continue({
223
+ definition,
224
+ executionSource,
225
+ input,
226
+ context: runtime.context,
227
+ snapshot: snapshot,
228
+ lifecycle: runtime.lifecycle,
229
+ });
230
+ }
231
+ const record = await this.persistSnapshot(snapshot);
232
+ await this.options.store.flush(snapshot.attemptId);
233
+ return this.result(record);
234
+ }
235
+ async persistSnapshot(snapshot) {
236
+ const record = await this.options.store.update(snapshot.attemptId, (current) => ({
237
+ ...current,
238
+ state: snapshot.state,
239
+ lifecycle: snapshot,
240
+ updatedAt: this.now(),
241
+ }));
242
+ await this.options.store.append(snapshot.attemptId, `attempt.${snapshot.state}`);
243
+ return record;
244
+ }
245
+ resumePayload(snapshot, value) {
246
+ if (snapshot.state === "awaiting_signal") {
247
+ return {
248
+ schemaVersion: "1.0",
249
+ kind: "signal",
250
+ signalId: snapshot.pendingSignal.signalId,
251
+ key: snapshot.pendingSignal.request.key,
252
+ response: value,
253
+ };
254
+ }
255
+ const result = value;
256
+ return {
257
+ schemaVersion: "1.0",
258
+ kind: "host",
259
+ hostTaskId: snapshot.hostTask.hostTaskId,
260
+ continuationToken: snapshot.hostTask.continuation.token,
261
+ result: {
262
+ output: result.output,
263
+ artifacts: result.artifacts ?? [],
264
+ summary: result.summary,
265
+ },
266
+ };
267
+ }
268
+ result(record) {
269
+ const lifecycle = record.lifecycle;
270
+ return {
271
+ attemptId: record.attemptId,
272
+ atom: record.atom.key,
273
+ status: record.state,
274
+ ...(lifecycle?.state === "succeeded" ? { output: lifecycle.completion.output } : {}),
275
+ artifacts: record.artifacts,
276
+ ...(lifecycle?.state === "awaiting_signal" ? { waiting: {
277
+ kind: "signal",
278
+ prompt: lifecycle.pendingSignal.request.prompt,
279
+ responseSchema: lifecycle.pendingSignal.request.responseSchema,
280
+ resume: `atomflow atom resume --attempt-id ${record.attemptId} --response '<json>'`,
281
+ } } : {}),
282
+ ...(lifecycle?.state === "awaiting_host" ? { waiting: {
283
+ kind: "host",
284
+ instruction: lifecycle.hostTask.instruction,
285
+ expectedOutputSchema: lifecycle.hostTask.expected.outputSchema,
286
+ resume: `atomflow atom resume --attempt-id ${record.attemptId} --result '{"output":<符合 expectedOutputSchema 的 JSON>,"summary":"处理摘要"}'`,
287
+ } } : {}),
288
+ recordDirectory: this.options.store.attemptDirectory(record.attemptId),
289
+ ...(record.error ? { error: record.error } : {}),
290
+ };
291
+ }
292
+ publicRecord(record) {
293
+ const projected = this.result(record);
294
+ return asJson({
295
+ ...projected,
296
+ input: record.input,
297
+ lifecycle: record.lifecycle ? {
298
+ state: record.lifecycle.state,
299
+ ticks: record.lifecycle.ticks,
300
+ checkpoint: record.lifecycle.checkpoint,
301
+ } : undefined,
302
+ createdAt: record.createdAt,
303
+ updatedAt: record.updatedAt,
304
+ });
305
+ }
306
+ now() { return (this.options.now ?? (() => new Date()))().toISOString(); }
307
+ }
308
+ //# sourceMappingURL=atom-development-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atom-development-service.js","sourceRoot":"","sources":["../../src/atoms/atom-development-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,0BAA0B,GAM3B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GAMzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAA8C,MAAM,+BAA+B,CAAC;AACvH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EACL,yBAAyB,GAG1B,MAAM,6BAA6B,CAAC;AAErC,MAAM,yBAAyB,GAAG,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7D,MAAM,2BAA2B,GAAG,EAAE,CAAC;AA0BvC,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,6CAA6C,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAc,CAAC;AACxD,CAAC;AAED,SAAS,MAAM;IACb,yEAAyE;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,KAAK,KAAI,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,IAAI,CAAC,EAAU,EAAE,MAAoB;IAC5C,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,WAAW,EAAE,wCAAwC,CAAC,CAAC,CAAC;QACzI,CAAC,CAAC;QACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,MAAM,EAAE,OAAO;YAAE,KAAK,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qGAAqG;AACrG,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;IAAG,CAAC;IAEvE,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,KAAgB,EAAE,YAA6C,EAAE;QAC1F,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,gBAAgB,UAAU,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC3B,MAAM,IAAI,iBAAiB,CAAC,gCAAgC,EAAE,yCAAyC,OAAO,EAAE,CAAC,CAAC;YACpH,CAAC;YACD,MAAM,WAAW,GAAG,0BAA0B,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACxG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,iBAAiB,CAAC,4BAA4B,EAAE,iDAAiD,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9I,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,IAAI,2BAA2B,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,GAAG,CAAC,IAAI,iBAAiB,GAAG,OAAO,EAAE,CAAC;gBACjG,MAAM,IAAI,iBAAiB,CAAC,+BAA+B,EAAE,uDAAuD,CAAC,CAAC;YACxH,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC9B,SAAS;gBACT,OAAO;gBACP,MAAM,EAAE,KAAK,CAAC,eAAe;gBAC7B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;gBACrB,KAAK,EAAE,KAAK;gBACZ,iBAAiB;gBACjB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC7F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACtG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3E,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAK,UAAiC,CAAC,IAAI,KAAK,wBAAwB;oBAAE,MAAM,KAAK,CAAC;gBACtF,MAAM,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,oDAAoD,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,YAA6C,EAAE;QAC/F,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7G,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,KAAgB,EAAE,SAA0C;QACxG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,EAAE,6CAA6C,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,iBAAiB,IAAI,MAAM,CAAC,KAAK,KAAK,eAAe,CAAC,EAAE,CAAC;YACxF,MAAM,IAAI,iBAAiB,CAAC,4BAA4B,EAAE,mBAAmB,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,eAAe;mBACrB,KAAK,CAAC,eAAe,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;mBAChE,KAAK,CAAC,eAAe,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpE,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,EAAE,2DAA2D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3I,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACnH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACrF,IAAI,SAAS,CAAC,iBAAiB,KAAK,SAAS,IAAI,SAAS,CAAC,iBAAiB,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC1G,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,EAAE,gEAAgE,CAAC,CAAC;YAC7H,CAAC;YACD,MAAM,kBAAkB,GAAoC;gBAC1D,GAAG,SAAS;gBACZ,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC5C,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAC3F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC7C,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,MAAM;gBAChB,MAAM;gBACN,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACrH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3E,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG;QACrD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAC3D,MAAM,IAAI,iBAAiB,CAAC,0BAA0B,EAAE,oDAAoD,CAAC,CAAC;QAChH,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAEO,OAAO,CAAC,SAAiB,EAAE,OAAe,EAAE,KAAgB,EAAE,SAA0C;QAC9G,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACjF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACvD,GAAG,OAAO;gBACV,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;gBAC3C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAQ,EAAE;YACvD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC9C,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,MAAM,OAAO,GAAyB;YACpC,OAAO,EAAE;gBACP,KAAK,EAAE,eAAe,SAAS,EAAE;gBACjC,kBAAkB,EAAE,oBAAoB;gBACxC,MAAM,EAAE,OAAO;gBACf,SAAS;gBACT,OAAO,EAAE,CAAC;gBACV,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;aACtB;YACD,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM;YAC3D,SAAS;YACT,SAAS,EAAE,IAAI,uBAAuB,EAAE;YACxC,MAAM,EAAE,MAAM,EAAE;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACtC,GAAG,0BAA0B,EAAE;SAChC,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC;YACzC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,SAAS,UAAU,EAAE,EAAE;SACrD,CAAC,CAAC;QACH,MAAM,SAAS,GAAG;YAChB,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,2BAA2B;YAC7E,WAAW,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;gBACnC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,aAAa,EAAE,CAAC,WAAsE,EAAE,EAAE;gBACxF,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;gBACjE,OAAO,WAAW,CAAC,KAAK,CAAC;oBACvB,QAAQ;oBACR,WAAW;oBACX,KAAK;oBACL,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;oBAC5B,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB;oBACtD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;oBAC9B,YAAY,EAAE,GAAG,SAAS,aAAa;oBACvC,SAAS;oBACT,cAAc,EAAE,yBAAyB;oBACzC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;oBAC9B,SAAS,EAAE,kBAAkB;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,wBAAwB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IACnG,CAAC;IAEO,KAAK,CAAC,KAAK,CACjB,OAAe,EACf,KAAgB,EAChB,OAAqC,EACrC,UAA2C,EAC3C,eAAoF,EACpF,OAAsD;QAEtD,IAAI,QAAQ,GAAG,OAAO,CAAC;QACvB,OAAO,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/D,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACvC,UAAU;gBACV,eAAe;gBACf,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,QAAsC;gBAChD,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAsC;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/E,GAAG,OAAO;YACV,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC,CAAC;QACJ,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,QAA6E,EAAE,KAAgB;QACnH,IAAI,QAAQ,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;YACzC,OAAO;gBACL,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ;gBACzC,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG;gBACvC,QAAQ,EAAE,KAAK;aACW,CAAC;QAC/B,CAAC;QACD,MAAM,MAAM,GAAG,KAAkC,CAAC;QAClD,OAAO;YACL,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU;YACxC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK;YACvD,MAAM,EAAE;gBACN,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;gBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB;SACuB,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,MAAoC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;YACrB,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE;oBACtD,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM;oBAC9C,cAAc,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc;oBAC9D,MAAM,EAAE,qCAAqC,MAAM,CAAC,SAAS,sBAAsB;iBACpF,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE;oBACpD,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW;oBAC3C,oBAAoB,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY;oBAC9D,MAAM,EAAE,qCAAqC,MAAM,CAAC,SAAS,0EAA0E;iBACxI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACT,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC;YACtE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,MAAoC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;YACZ,GAAG,SAAS;YACZ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC5B,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;gBAC7B,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;gBAC7B,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;aACxC,CAAC,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IAEO,GAAG,KAAa,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;CAC3F"}
@@ -0,0 +1,70 @@
1
+ import type { AtomArtifactReference, JsonValue } from "@atom-workflow-agent/contracts";
2
+ import type { AtomArtifactService } from "@atom-workflow-agent/atom-sdk";
3
+ import type { AtomAttemptLifecycleSnapshot, AtomExecutionModuleSource, AtomProcessEvent } from "@atom-workflow-agent/atom-executor";
4
+ export type AtomDevelopmentAttemptState = "running" | "awaiting_signal" | "awaiting_host" | "succeeded" | "failed";
5
+ export interface AtomDevelopmentError {
6
+ readonly code: string;
7
+ readonly message: string;
8
+ readonly retryable: boolean;
9
+ readonly details?: JsonValue;
10
+ }
11
+ export interface AtomDevelopmentAttemptRecord {
12
+ readonly schemaVersion: "1.0";
13
+ readonly attemptId: string;
14
+ readonly atom: {
15
+ readonly key: string;
16
+ readonly source: AtomExecutionModuleSource;
17
+ };
18
+ readonly cwd: string;
19
+ readonly input: JsonValue;
20
+ readonly maxLifecycleTicks: number;
21
+ readonly state: AtomDevelopmentAttemptState;
22
+ readonly lifecycle?: AtomAttemptLifecycleSnapshot;
23
+ readonly artifacts: readonly AtomArtifactReference[];
24
+ readonly createdAt: string;
25
+ readonly updatedAt: string;
26
+ readonly error?: AtomDevelopmentError;
27
+ }
28
+ export interface AtomDevelopmentEvent {
29
+ readonly schemaVersion: "1.0";
30
+ readonly sequence: number;
31
+ readonly timestamp: string;
32
+ readonly attemptId: string;
33
+ readonly type: string;
34
+ readonly data?: JsonValue;
35
+ }
36
+ /** Filesystem adapter for standalone Atom development; deliberately separate from Workflow Run storage. */
37
+ export declare class LocalAtomDevelopmentStore {
38
+ readonly rootDirectory: string;
39
+ private readonly eventQueues;
40
+ private readonly nextSequences;
41
+ constructor(rootDirectory: string);
42
+ attemptDirectory(attemptId: string): string;
43
+ create(input: {
44
+ attemptId: string;
45
+ atomKey: string;
46
+ source: AtomExecutionModuleSource;
47
+ cwd: string;
48
+ value: JsonValue;
49
+ maxLifecycleTicks: number;
50
+ now: string;
51
+ }): Promise<AtomDevelopmentAttemptRecord>;
52
+ load(attemptId: string): Promise<AtomDevelopmentAttemptRecord>;
53
+ save(record: AtomDevelopmentAttemptRecord): Promise<void>;
54
+ update(attemptId: string, change: (record: AtomDevelopmentAttemptRecord) => AtomDevelopmentAttemptRecord): Promise<AtomDevelopmentAttemptRecord>;
55
+ withAttemptLock<T>(attemptId: string, operation: () => Promise<T>): Promise<T>;
56
+ private acquireAttemptLock;
57
+ private isStaleLock;
58
+ fail(attemptId: string, error: unknown, timestamp: string): Promise<AtomDevelopmentAttemptRecord>;
59
+ captureProcessEvent(event: AtomProcessEvent): void;
60
+ append(attemptId: string, type: string, data?: JsonValue, timestamp?: string): Promise<void>;
61
+ flush(attemptId: string): Promise<void>;
62
+ events(attemptId: string, after?: number): Promise<readonly AtomDevelopmentEvent[]>;
63
+ private readEvents;
64
+ artifactService(attemptId: string, onPut: (reference: AtomArtifactReference) => Promise<void>): AtomArtifactService;
65
+ private enqueue;
66
+ private appendDirect;
67
+ private summaryPath;
68
+ private eventsPath;
69
+ }
70
+ //# sourceMappingURL=atom-development-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atom-development-store.d.ts","sourceRoot":"","sources":["../../src/atoms/atom-development-store.ts"],"names":[],"mappings":"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"}