eve 0.22.3 → 0.22.5
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/CHANGELOG.md +21 -0
- package/README.md +2 -0
- package/dist/src/chunks/{use-eve-agent-Cojyfr4X.js → use-eve-agent-CFBTHlPx.js} +18 -1
- package/dist/src/chunks/{use-eve-agent-D-S1TPCW.js → use-eve-agent-dEGV09g_.js} +18 -1
- package/dist/src/cli/commands/agent-instructions.d.ts +15 -0
- package/dist/src/cli/commands/agent-instructions.js +3 -1
- package/dist/src/cli/commands/agent-prompt/scaffold.md +3 -0
- package/dist/src/cli/commands/extension-build.d.ts +9 -0
- package/dist/src/cli/commands/extension-build.js +1 -0
- package/dist/src/cli/commands/extension-init.d.ts +25 -0
- package/dist/src/cli/commands/extension-init.js +1 -0
- package/dist/src/cli/commands/info.js +1 -1
- package/dist/src/cli/commands/init-git.js +1 -1
- package/dist/src/cli/commands/init-repl.js +1 -1
- package/dist/src/cli/commands/init.d.ts +2 -0
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/run.js +1 -1
- package/dist/src/client/agent-host.d.ts +4 -0
- package/dist/src/client/agent-host.js +1 -0
- package/dist/src/compiled/.vendor-stamp.json +4 -4
- package/dist/src/compiled/@workflow/core/global.d.ts +20 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +54 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +11 -3
- package/dist/src/compiled/@workflow/core/runtime/run.d.ts +6 -2
- package/dist/src/compiled/@workflow/core/runtime/runs.d.ts +36 -2
- package/dist/src/compiled/@workflow/core/runtime/start.d.ts +28 -0
- package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +23 -0
- package/dist/src/compiled/@workflow/core/runtime/step-latency.d.ts +131 -0
- package/dist/src/compiled/@workflow/core/runtime/step-ownership.d.ts +72 -0
- package/dist/src/compiled/@workflow/core/runtime/step-single-flight.d.ts +12 -0
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +7 -0
- package/dist/src/compiled/@workflow/core/runtime.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/serialization-format.d.ts +1 -0
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +40 -0
- package/dist/src/compiled/@workflow/core/telemetry.d.ts +8 -0
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/world/analytics.d.ts +4 -4
- package/dist/src/compiled/@workflow/world/events.d.ts +142 -21
- package/dist/src/compiled/@workflow/world/hooks.d.ts +1 -24
- package/dist/src/compiled/@workflow/world/index.d.ts +3 -2
- package/dist/src/compiled/@workflow/world/queue.d.ts +10 -0
- package/dist/src/compiled/@workflow/world/ulid.d.ts +9 -0
- package/dist/src/compiled/@workflow/world-local/index.js +4 -4
- package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
- package/dist/src/compiled/_chunks/workflow/attribute-changes-ubiPfqvY.js +20 -0
- package/dist/src/compiled/_chunks/workflow/{dist-DJU_7R9s.js → dist-DnBjuNAZ.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{functions-CnVBREsg.js → functions-BCMO8vbf.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-BkVkWg2r.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-B3N1kN9q.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{sleep-phozDCW8.js → sleep-C2Bn-UUg.js} +1 -1
- package/dist/src/compiler/manifest.d.ts +4 -4
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/compiler/remote-agent-node.d.ts +1 -1
- package/dist/src/compiler/remote-agent-node.js +1 -1
- package/dist/src/discover/filesystem.d.ts +2 -2
- package/dist/src/discover/filesystem.js +1 -1
- package/dist/src/discover/project.js +1 -1
- package/dist/src/harness/emission.d.ts +2 -4
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/inline-tool-authorization.d.ts +3 -0
- package/dist/src/harness/inline-tool-authorization.js +1 -0
- package/dist/src/harness/interruptible-stream.d.ts +5 -0
- package/dist/src/harness/interruptible-stream.js +1 -0
- package/dist/src/harness/model-call-error.js +1 -1
- package/dist/src/harness/ordered-stream-emitter.d.ts +17 -0
- package/dist/src/harness/ordered-stream-emitter.js +1 -0
- package/dist/src/harness/stream-actions.d.ts +1 -0
- package/dist/src/harness/stream-actions.js +1 -1
- package/dist/src/harness/subagent-depth.d.ts +1 -1
- package/dist/src/harness/subagent-depth.js +1 -1
- package/dist/src/harness/tool-loop.js +1 -1
- package/dist/src/internal/application/optional-package-install.js +2 -2
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-module-loader.d.ts +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/workflow-bundle/eve-service-route-output.d.ts +1 -2
- package/dist/src/internal/workflow-bundle/eve-service-route-output.js +1 -54
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
- package/dist/src/packages/eve-catalog/src/index.js +1 -1
- package/dist/src/public/definitions/extension.d.ts +4 -4
- package/dist/src/public/definitions/remote-agent.d.ts +11 -2
- package/dist/src/public/index.d.ts +1 -1
- package/dist/src/public/models/openai/chatgpt/auth.d.ts +69 -0
- package/dist/src/public/models/openai/chatgpt/auth.js +1 -0
- package/dist/src/public/models/openai/chatgpt/model.d.ts +8 -0
- package/dist/src/public/models/openai/chatgpt/model.js +1 -0
- package/dist/src/public/models/openai/chatgpt/transport.d.ts +24 -0
- package/dist/src/public/models/openai/chatgpt/transport.js +1 -0
- package/dist/src/public/models/openai/chatgpt/unsigned-jwt.d.ts +5 -0
- package/dist/src/public/models/openai/chatgpt/unsigned-jwt.js +1 -0
- package/dist/src/public/models/openai/index.d.ts +30 -0
- package/dist/src/public/models/openai/index.js +1 -0
- package/dist/src/public/next/index.d.ts +38 -3
- package/dist/src/public/next/index.js +1 -1
- package/dist/src/public/next/server.d.ts +1 -0
- package/dist/src/public/next/server.js +2 -1
- package/dist/src/public/next/vercel-output-config.d.ts +12 -3
- package/dist/src/public/next/vercel-output-config.js +1 -1
- package/dist/src/public/nuxt/dev-server.js +1 -1
- package/dist/src/public/sveltekit/dev-server.js +1 -1
- package/dist/src/react/use-eve-agent.d.ts +8 -1
- package/dist/src/react/use-eve-agent.js +1 -1
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/setup/scaffold/connections/catalog.js +1 -1
- package/dist/src/setup/scaffold/create/extension.d.ts +30 -0
- package/dist/src/setup/scaffold/create/extension.js +34 -0
- package/dist/src/setup/scaffold/create/project.d.ts +2 -0
- package/dist/src/setup/scaffold/create/project.js +2 -2
- package/dist/src/setup/scaffold/index.d.ts +1 -0
- package/dist/src/setup/scaffold/index.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.d.ts +8 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.d.ts +8 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +1 -1
- package/docs/channels/slack.mdx +6 -0
- package/docs/concepts/sessions-runs-and-streaming.md +1 -1
- package/docs/extensions.md +42 -13
- package/docs/guides/client/streaming.mdx +1 -1
- package/docs/guides/frontend/nextjs.mdx +32 -7
- package/docs/guides/frontend/overview.mdx +7 -1
- package/docs/guides/hooks.md +9 -0
- package/docs/guides/remote-agents.md +23 -8
- package/docs/meta.json +0 -1
- package/docs/reference/cli.md +56 -22
- package/docs/reference/typescript-api.md +17 -0
- package/docs/subagents.mdx +1 -1
- package/package.json +10 -5
- package/dist/src/compiled/_chunks/workflow/attribute-changes-BnKD8Y3m.js +0 -20
- package/dist/src/compiled/_chunks/workflow/resume-hook-DjPY9VGg.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-BSANnUPR.js +0 -1
|
@@ -1,37 +1,35 @@
|
|
|
1
1
|
import { z } from '#compiled/zod/index.js';
|
|
2
2
|
import type { PaginationOptions, ResolveData } from './shared.js';
|
|
3
|
-
/**
|
|
4
|
-
* Fields within eventData that hold ref/payload data per event type.
|
|
5
|
-
* When resolveData is 'none', only these fields are stripped — all other
|
|
6
|
-
* metadata (stepName, workflowName, etc.) is preserved.
|
|
7
|
-
*/
|
|
8
|
-
export declare const EVENT_DATA_REF_FIELDS: Record<string, string[]>;
|
|
9
|
-
/**
|
|
10
|
-
* Strip ref/payload fields from eventData based on resolveData setting.
|
|
11
|
-
* When resolveData is 'none', removes only large data fields (refs) from
|
|
12
|
-
* eventData while preserving metadata like stepName, workflowName, etc.
|
|
13
|
-
*/
|
|
14
|
-
export declare function stripEventDataRefs(event: Event, resolveData: ResolveData): Event;
|
|
15
3
|
export declare const EventTypeSchema: z.ZodEnum<{
|
|
16
4
|
run_created: "run_created";
|
|
5
|
+
run_started: "run_started";
|
|
17
6
|
run_completed: "run_completed";
|
|
18
7
|
run_failed: "run_failed";
|
|
8
|
+
run_cancelled: "run_cancelled";
|
|
9
|
+
attr_set: "attr_set";
|
|
19
10
|
step_created: "step_created";
|
|
20
11
|
step_completed: "step_completed";
|
|
21
12
|
step_failed: "step_failed";
|
|
22
13
|
step_retrying: "step_retrying";
|
|
14
|
+
step_started: "step_started";
|
|
23
15
|
hook_created: "hook_created";
|
|
24
16
|
hook_received: "hook_received";
|
|
25
|
-
run_started: "run_started";
|
|
26
|
-
run_cancelled: "run_cancelled";
|
|
27
|
-
attr_set: "attr_set";
|
|
28
|
-
step_started: "step_started";
|
|
29
17
|
hook_disposed: "hook_disposed";
|
|
30
18
|
hook_conflict: "hook_conflict";
|
|
31
19
|
wait_created: "wait_created";
|
|
32
20
|
wait_completed: "wait_completed";
|
|
33
21
|
}>;
|
|
34
22
|
export type EventType = z.infer<typeof EventTypeSchema>;
|
|
23
|
+
declare const RunEventTypeSchema: z.ZodEnum<{
|
|
24
|
+
run_created: "run_created";
|
|
25
|
+
run_started: "run_started";
|
|
26
|
+
run_completed: "run_completed";
|
|
27
|
+
run_failed: "run_failed";
|
|
28
|
+
run_cancelled: "run_cancelled";
|
|
29
|
+
}>;
|
|
30
|
+
export type RunEventType = z.infer<typeof RunEventTypeSchema>;
|
|
31
|
+
export declare const RUN_EVENT_TYPES: ("run_created" | "run_started" | "run_completed" | "run_failed" | "run_cancelled")[];
|
|
32
|
+
export declare function isRunEventType(eventType: string): eventType is RunEventType;
|
|
35
33
|
export declare const TerminalRunEventTypeSchema: z.ZodEnum<{
|
|
36
34
|
run_completed: "run_completed";
|
|
37
35
|
run_failed: "run_failed";
|
|
@@ -40,21 +38,101 @@ export declare const TerminalRunEventTypeSchema: z.ZodEnum<{
|
|
|
40
38
|
export type TerminalRunEventType = z.infer<typeof TerminalRunEventTypeSchema>;
|
|
41
39
|
export declare const TERMINAL_RUN_EVENT_TYPES: ("run_completed" | "run_failed" | "run_cancelled")[];
|
|
42
40
|
export declare function isTerminalRunEventType(eventType: string): eventType is TerminalRunEventType;
|
|
41
|
+
declare const StepEventTypeSchema: z.ZodEnum<{
|
|
42
|
+
step_created: "step_created";
|
|
43
|
+
step_completed: "step_completed";
|
|
44
|
+
step_failed: "step_failed";
|
|
45
|
+
step_retrying: "step_retrying";
|
|
46
|
+
step_started: "step_started";
|
|
47
|
+
}>;
|
|
48
|
+
export type StepEventType = z.infer<typeof StepEventTypeSchema>;
|
|
49
|
+
export declare const STEP_EVENT_TYPES: ("step_created" | "step_completed" | "step_failed" | "step_retrying" | "step_started")[];
|
|
50
|
+
export declare function isStepEventType(eventType: string): eventType is StepEventType;
|
|
51
|
+
declare const TerminalStepEventTypeSchema: z.ZodEnum<{
|
|
52
|
+
step_completed: "step_completed";
|
|
53
|
+
step_failed: "step_failed";
|
|
54
|
+
}>;
|
|
55
|
+
export type TerminalStepEventType = z.infer<typeof TerminalStepEventTypeSchema>;
|
|
56
|
+
export declare const TERMINAL_STEP_EVENT_TYPES: ("step_completed" | "step_failed")[];
|
|
57
|
+
export declare function isTerminalStepEventType(eventType: string): eventType is TerminalStepEventType;
|
|
58
|
+
declare const HookLifecycleEventTypeSchema: z.ZodEnum<{
|
|
59
|
+
hook_created: "hook_created";
|
|
60
|
+
hook_received: "hook_received";
|
|
61
|
+
hook_disposed: "hook_disposed";
|
|
62
|
+
}>;
|
|
63
|
+
export type HookLifecycleEventType = z.infer<typeof HookLifecycleEventTypeSchema>;
|
|
64
|
+
export declare const HOOK_LIFECYCLE_EVENT_TYPES: ("hook_created" | "hook_received" | "hook_disposed")[];
|
|
65
|
+
export declare function isHookLifecycleEventType(eventType: string): eventType is HookLifecycleEventType;
|
|
66
|
+
declare const HookEventRequiringExistenceTypeSchema: z.ZodEnum<{
|
|
67
|
+
hook_received: "hook_received";
|
|
68
|
+
hook_disposed: "hook_disposed";
|
|
69
|
+
}>;
|
|
70
|
+
export type HookEventRequiringExistenceType = z.infer<typeof HookEventRequiringExistenceTypeSchema>;
|
|
71
|
+
export declare const HOOK_EVENTS_REQUIRING_EXISTENCE: ("hook_received" | "hook_disposed")[];
|
|
72
|
+
export declare function isHookEventRequiringExistence(eventType: string): eventType is HookEventRequiringExistenceType;
|
|
73
|
+
declare const WaitEventTypeSchema: z.ZodEnum<{
|
|
74
|
+
wait_created: "wait_created";
|
|
75
|
+
wait_completed: "wait_completed";
|
|
76
|
+
}>;
|
|
77
|
+
export type WaitEventType = z.infer<typeof WaitEventTypeSchema>;
|
|
78
|
+
export declare const WAIT_EVENT_TYPES: ("wait_created" | "wait_completed")[];
|
|
79
|
+
export declare function isWaitEventType(eventType: string): eventType is WaitEventType;
|
|
80
|
+
declare const ChildEntityCreationEventTypeSchema: z.ZodEnum<{
|
|
81
|
+
step_created: "step_created";
|
|
82
|
+
hook_created: "hook_created";
|
|
83
|
+
wait_created: "wait_created";
|
|
84
|
+
}>;
|
|
85
|
+
export type ChildEntityCreationEventType = z.infer<typeof ChildEntityCreationEventTypeSchema>;
|
|
86
|
+
export declare const CHILD_ENTITY_CREATION_EVENT_TYPES: ("step_created" | "hook_created" | "wait_created")[];
|
|
87
|
+
export declare function isChildEntityCreationEventType(eventType: string): eventType is ChildEntityCreationEventType;
|
|
88
|
+
/**
|
|
89
|
+
* Field within eventData that carries the opaque user payload for event types
|
|
90
|
+
* that have one. V4 worlds split this field into the wire body while keeping
|
|
91
|
+
* the remaining eventData fields in metadata.
|
|
92
|
+
*/
|
|
93
|
+
export declare const EVENT_DATA_PAYLOAD_FIELD_BY_EVENT_TYPE: {
|
|
94
|
+
readonly run_created: "input";
|
|
95
|
+
readonly run_started: "input";
|
|
96
|
+
readonly run_completed: "output";
|
|
97
|
+
readonly run_failed: "error";
|
|
98
|
+
readonly step_created: "input";
|
|
99
|
+
readonly step_started: "input";
|
|
100
|
+
readonly step_completed: "result";
|
|
101
|
+
readonly step_failed: "error";
|
|
102
|
+
readonly step_retrying: "error";
|
|
103
|
+
readonly hook_created: "metadata";
|
|
104
|
+
readonly hook_received: "payload";
|
|
105
|
+
};
|
|
106
|
+
export type EventDataPayloadField = (typeof EVENT_DATA_PAYLOAD_FIELD_BY_EVENT_TYPE)[keyof typeof EVENT_DATA_PAYLOAD_FIELD_BY_EVENT_TYPE];
|
|
107
|
+
/**
|
|
108
|
+
* Fields within eventData that hold ref/payload data per event type.
|
|
109
|
+
* When resolveData is 'none', only these fields are stripped — all other
|
|
110
|
+
* metadata (stepName, workflowName, etc.) is preserved.
|
|
111
|
+
*/
|
|
112
|
+
export declare const EVENT_DATA_REF_FIELDS: Record<string, readonly EventDataPayloadField[]>;
|
|
113
|
+
export declare function getEventDataRefFields(eventType: string): readonly string[];
|
|
114
|
+
export declare function getEventDataPayloadField(eventType: string): EventDataPayloadField | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* Strip ref/payload fields from eventData based on resolveData setting.
|
|
117
|
+
* When resolveData is 'none', removes only large data fields (refs) from
|
|
118
|
+
* eventData while preserving metadata like stepName, workflowName, etc.
|
|
119
|
+
*/
|
|
120
|
+
export declare function stripEventDataRefs(event: Event, resolveData: ResolveData): Event;
|
|
43
121
|
export declare const BaseEventSchema: z.ZodObject<{
|
|
44
122
|
eventType: z.ZodEnum<{
|
|
45
123
|
run_created: "run_created";
|
|
124
|
+
run_started: "run_started";
|
|
46
125
|
run_completed: "run_completed";
|
|
47
126
|
run_failed: "run_failed";
|
|
127
|
+
run_cancelled: "run_cancelled";
|
|
128
|
+
attr_set: "attr_set";
|
|
48
129
|
step_created: "step_created";
|
|
49
130
|
step_completed: "step_completed";
|
|
50
131
|
step_failed: "step_failed";
|
|
51
132
|
step_retrying: "step_retrying";
|
|
133
|
+
step_started: "step_started";
|
|
52
134
|
hook_created: "hook_created";
|
|
53
135
|
hook_received: "hook_received";
|
|
54
|
-
run_started: "run_started";
|
|
55
|
-
run_cancelled: "run_cancelled";
|
|
56
|
-
attr_set: "attr_set";
|
|
57
|
-
step_started: "step_started";
|
|
58
136
|
hook_disposed: "hook_disposed";
|
|
59
137
|
hook_conflict: "hook_conflict";
|
|
60
138
|
wait_created: "wait_created";
|
|
@@ -164,6 +242,9 @@ export declare const CreateEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
164
242
|
correlationId: z.ZodOptional<z.ZodString>;
|
|
165
243
|
specVersion: z.ZodOptional<z.ZodNumber>;
|
|
166
244
|
eventType: z.ZodLiteral<"run_cancelled">;
|
|
245
|
+
eventData: z.ZodOptional<z.ZodObject<{
|
|
246
|
+
cancelReason: z.ZodOptional<z.ZodString>;
|
|
247
|
+
}, z.core.$strip>>;
|
|
167
248
|
}, z.core.$strip>, z.ZodObject<{
|
|
168
249
|
specVersion: z.ZodOptional<z.ZodNumber>;
|
|
169
250
|
eventType: z.ZodLiteral<"attr_set">;
|
|
@@ -196,6 +277,11 @@ export declare const CreateEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
196
277
|
eventType: z.ZodLiteral<"step_completed">;
|
|
197
278
|
correlationId: z.ZodString;
|
|
198
279
|
eventData: z.ZodObject<{
|
|
280
|
+
ttfs: z.ZodOptional<z.ZodNumber>;
|
|
281
|
+
stso: z.ZodOptional<z.ZodNumber>;
|
|
282
|
+
stepCount: z.ZodOptional<z.ZodNumber>;
|
|
283
|
+
eventCount: z.ZodOptional<z.ZodNumber>;
|
|
284
|
+
optimizations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
199
285
|
stepName: z.ZodOptional<z.ZodString>;
|
|
200
286
|
workflowName: z.ZodOptional<z.ZodString>;
|
|
201
287
|
result: z.ZodUnion<readonly [z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>]>;
|
|
@@ -205,6 +291,11 @@ export declare const CreateEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
205
291
|
eventType: z.ZodLiteral<"step_failed">;
|
|
206
292
|
correlationId: z.ZodString;
|
|
207
293
|
eventData: z.ZodObject<{
|
|
294
|
+
ttfs: z.ZodOptional<z.ZodNumber>;
|
|
295
|
+
stso: z.ZodOptional<z.ZodNumber>;
|
|
296
|
+
stepCount: z.ZodOptional<z.ZodNumber>;
|
|
297
|
+
eventCount: z.ZodOptional<z.ZodNumber>;
|
|
298
|
+
optimizations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
208
299
|
stepName: z.ZodOptional<z.ZodString>;
|
|
209
300
|
error: z.ZodUnion<readonly [z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>]>;
|
|
210
301
|
}, z.core.$strip>;
|
|
@@ -226,6 +317,7 @@ export declare const CreateEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
226
317
|
attempt: z.ZodOptional<z.ZodNumber>;
|
|
227
318
|
workflowName: z.ZodOptional<z.ZodString>;
|
|
228
319
|
input: z.ZodOptional<z.ZodUnion<readonly [z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>]>>;
|
|
320
|
+
ownerMessageId: z.ZodOptional<z.ZodString>;
|
|
229
321
|
}, z.core.$strip>>;
|
|
230
322
|
}, z.core.$strip>, z.ZodObject<{
|
|
231
323
|
specVersion: z.ZodOptional<z.ZodNumber>;
|
|
@@ -310,6 +402,9 @@ export declare const EventSchema: z.ZodIntersection<z.ZodDiscriminatedUnion<[z.Z
|
|
|
310
402
|
correlationId: z.ZodOptional<z.ZodString>;
|
|
311
403
|
specVersion: z.ZodOptional<z.ZodNumber>;
|
|
312
404
|
eventType: z.ZodLiteral<"run_cancelled">;
|
|
405
|
+
eventData: z.ZodOptional<z.ZodObject<{
|
|
406
|
+
cancelReason: z.ZodOptional<z.ZodString>;
|
|
407
|
+
}, z.core.$strip>>;
|
|
313
408
|
}, z.core.$strip>, z.ZodObject<{
|
|
314
409
|
specVersion: z.ZodOptional<z.ZodNumber>;
|
|
315
410
|
eventType: z.ZodLiteral<"attr_set">;
|
|
@@ -342,6 +437,11 @@ export declare const EventSchema: z.ZodIntersection<z.ZodDiscriminatedUnion<[z.Z
|
|
|
342
437
|
eventType: z.ZodLiteral<"step_completed">;
|
|
343
438
|
correlationId: z.ZodString;
|
|
344
439
|
eventData: z.ZodObject<{
|
|
440
|
+
ttfs: z.ZodOptional<z.ZodNumber>;
|
|
441
|
+
stso: z.ZodOptional<z.ZodNumber>;
|
|
442
|
+
stepCount: z.ZodOptional<z.ZodNumber>;
|
|
443
|
+
eventCount: z.ZodOptional<z.ZodNumber>;
|
|
444
|
+
optimizations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
345
445
|
stepName: z.ZodOptional<z.ZodString>;
|
|
346
446
|
workflowName: z.ZodOptional<z.ZodString>;
|
|
347
447
|
result: z.ZodUnion<readonly [z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>]>;
|
|
@@ -351,6 +451,11 @@ export declare const EventSchema: z.ZodIntersection<z.ZodDiscriminatedUnion<[z.Z
|
|
|
351
451
|
eventType: z.ZodLiteral<"step_failed">;
|
|
352
452
|
correlationId: z.ZodString;
|
|
353
453
|
eventData: z.ZodObject<{
|
|
454
|
+
ttfs: z.ZodOptional<z.ZodNumber>;
|
|
455
|
+
stso: z.ZodOptional<z.ZodNumber>;
|
|
456
|
+
stepCount: z.ZodOptional<z.ZodNumber>;
|
|
457
|
+
eventCount: z.ZodOptional<z.ZodNumber>;
|
|
458
|
+
optimizations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
354
459
|
stepName: z.ZodOptional<z.ZodString>;
|
|
355
460
|
error: z.ZodUnion<readonly [z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>]>;
|
|
356
461
|
}, z.core.$strip>;
|
|
@@ -372,6 +477,7 @@ export declare const EventSchema: z.ZodIntersection<z.ZodDiscriminatedUnion<[z.Z
|
|
|
372
477
|
attempt: z.ZodOptional<z.ZodNumber>;
|
|
373
478
|
workflowName: z.ZodOptional<z.ZodString>;
|
|
374
479
|
input: z.ZodOptional<z.ZodUnion<readonly [z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>]>>;
|
|
480
|
+
ownerMessageId: z.ZodOptional<z.ZodString>;
|
|
375
481
|
}, z.core.$strip>>;
|
|
376
482
|
}, z.core.$strip>, z.ZodObject<{
|
|
377
483
|
specVersion: z.ZodOptional<z.ZodNumber>;
|
|
@@ -428,7 +534,14 @@ export declare const EventSchema: z.ZodIntersection<z.ZodDiscriminatedUnion<[z.Z
|
|
|
428
534
|
specVersion: z.ZodOptional<z.ZodNumber>;
|
|
429
535
|
}, z.core.$strip>>;
|
|
430
536
|
export type Event = z.infer<typeof EventSchema>;
|
|
431
|
-
export type
|
|
537
|
+
export type EventOfType<T extends EventType> = Extract<Event, {
|
|
538
|
+
eventType: T;
|
|
539
|
+
}>;
|
|
540
|
+
export type EventRequestOfType<T extends EventType> = Extract<AnyEventRequest, {
|
|
541
|
+
eventType: T;
|
|
542
|
+
}>;
|
|
543
|
+
export type HookCreatedEvent = EventOfType<'hook_created'>;
|
|
544
|
+
export type HookCreatedEventRequest = EventRequestOfType<'hook_created'>;
|
|
432
545
|
export type HookReceivedEvent = z.infer<typeof HookReceivedEventSchema>;
|
|
433
546
|
export type HookConflictEvent = z.infer<typeof HookConflictEventSchema>;
|
|
434
547
|
/**
|
|
@@ -436,6 +549,14 @@ export type HookConflictEvent = z.infer<typeof HookConflictEventSchema>;
|
|
|
436
549
|
* @internal Use CreateEventRequest or RunCreatedEventRequest instead.
|
|
437
550
|
*/
|
|
438
551
|
export type AnyEventRequest = z.infer<typeof CreateEventSchema>;
|
|
552
|
+
type ChildEntityCreationEventRequest = EventRequestOfType<ChildEntityCreationEventType> | (EventRequestOfType<'step_started'> & {
|
|
553
|
+
eventData: {
|
|
554
|
+
stepName: string;
|
|
555
|
+
input: unknown;
|
|
556
|
+
};
|
|
557
|
+
});
|
|
558
|
+
/** Includes lazy step_started requests that create their step on demand. */
|
|
559
|
+
export declare function isChildEntityCreationEvent(event: AnyEventRequest): event is ChildEntityCreationEventRequest;
|
|
439
560
|
/**
|
|
440
561
|
* Event request for creating a new workflow run.
|
|
441
562
|
* Can be used with a client-generated runId or null for server-generated.
|
|
@@ -28,30 +28,7 @@ export declare const HookSchema: z.ZodObject<{
|
|
|
28
28
|
* - specVersion >= 2: Uint8Array (binary devalue format)
|
|
29
29
|
* - specVersion 1: unknown (legacy JSON format)
|
|
30
30
|
*/
|
|
31
|
-
export type Hook = z.infer<typeof HookSchema
|
|
32
|
-
/** The unique identifier of the workflow run this hook belongs to. */
|
|
33
|
-
runId: string;
|
|
34
|
-
/** The unique identifier of this hook within the workflow run. */
|
|
35
|
-
hookId: string;
|
|
36
|
-
/** The secret token used to reference this hook. */
|
|
37
|
-
token: string;
|
|
38
|
-
/** The owner ID (team or user) that owns this hook. */
|
|
39
|
-
ownerId: string;
|
|
40
|
-
/** The project ID this hook belongs to. */
|
|
41
|
-
projectId: string;
|
|
42
|
-
/** The environment (e.g., "production", "preview", "development") where this hook was created. */
|
|
43
|
-
environment: string;
|
|
44
|
-
/** Optional metadata associated with the hook, set when the hook was created. */
|
|
45
|
-
metadata?: SerializedData;
|
|
46
|
-
/** The timestamp when this hook was created. */
|
|
47
|
-
createdAt: Date;
|
|
48
|
-
/** The spec version when this hook was created. */
|
|
49
|
-
specVersion?: number;
|
|
50
|
-
/** Whether this hook is resumable via the public webhook endpoint. undefined = legacy (treated as true for backwards compat). */
|
|
51
|
-
isWebhook?: boolean;
|
|
52
|
-
/** Whether this hook is a system-managed hook (e.g., for abort signals). */
|
|
53
|
-
isSystem?: boolean;
|
|
54
|
-
};
|
|
31
|
+
export type Hook = z.infer<typeof HookSchema>;
|
|
55
32
|
export interface CreateHookRequest {
|
|
56
33
|
hookId: string;
|
|
57
34
|
token: string;
|
|
@@ -4,7 +4,7 @@ export type * from './attributes.js';
|
|
|
4
4
|
export { ATTRIBUTE_KEY_MAX_LENGTH, ATTRIBUTE_MAX_PER_RUN, ATTRIBUTE_VALUE_MAX_BYTES, AttributeChangeSchema, AttributeChangesSchema, AttributeValidationError, applyAttributeChanges, RESERVED_ATTRIBUTE_KEY_PREFIX, validateAttributeChanges, validateAttributeKey, validateAttributeValue, } from './attributes.js';
|
|
5
5
|
export { _resetEnvWarnCacheForTests, type EnvNumberOptions, envNumber, } from './env-config.js';
|
|
6
6
|
export type * from './events.js';
|
|
7
|
-
export { BaseEventSchema, CreateEventSchema, EVENT_DATA_REF_FIELDS, EventSchema, EventTypeSchema, HookCreatedEventSchema, isTerminalRunEventType, stripEventDataRefs, TERMINAL_RUN_EVENT_TYPES, TerminalRunEventTypeSchema, } from './events.js';
|
|
7
|
+
export { BaseEventSchema, CHILD_ENTITY_CREATION_EVENT_TYPES, CreateEventSchema, EVENT_DATA_PAYLOAD_FIELD_BY_EVENT_TYPE, EVENT_DATA_REF_FIELDS, EventSchema, EventTypeSchema, getEventDataPayloadField, getEventDataRefFields, HOOK_EVENTS_REQUIRING_EXISTENCE, HOOK_LIFECYCLE_EVENT_TYPES, HookCreatedEventSchema, isChildEntityCreationEvent, isChildEntityCreationEventType, isHookEventRequiringExistence, isHookLifecycleEventType, isRunEventType, isStepEventType, isTerminalRunEventType, isTerminalStepEventType, isWaitEventType, RUN_EVENT_TYPES, STEP_EVENT_TYPES, stripEventDataRefs, TERMINAL_RUN_EVENT_TYPES, TERMINAL_STEP_EVENT_TYPES, TerminalRunEventTypeSchema, WAIT_EVENT_TYPES, } from './events.js';
|
|
8
8
|
export type * from './hooks.js';
|
|
9
9
|
export { HookSchema } from './hooks.js';
|
|
10
10
|
export type * from './interfaces.js';
|
|
@@ -22,7 +22,8 @@ export type { SpecVersion } from './spec-version.js';
|
|
|
22
22
|
export { isLegacySpecVersion, requiresNewerWorld, SPEC_VERSION_CURRENT, SPEC_VERSION_LEGACY, SPEC_VERSION_SUPPORTS_ATTRIBUTES, SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT, SPEC_VERSION_SUPPORTS_COMPRESSION, SPEC_VERSION_SUPPORTS_EVENT_SOURCING, } from './spec-version.js';
|
|
23
23
|
export type * from './steps.js';
|
|
24
24
|
export { isTerminalStepStatus, StepSchema, StepStatusSchema, TERMINAL_STEP_STATUSES, TerminalStepStatusSchema, } from './steps.js';
|
|
25
|
-
export { DEFAULT_TIMESTAMP_THRESHOLD_FUTURE_MS, DEFAULT_TIMESTAMP_THRESHOLD_MS, DEFAULT_TIMESTAMP_THRESHOLD_PAST_MS, ulidToDate, validateUlidTimestamp, } from './ulid.js';
|
|
25
|
+
export { DEFAULT_TIMESTAMP_THRESHOLD_FUTURE_MS, DEFAULT_TIMESTAMP_THRESHOLD_MS, DEFAULT_TIMESTAMP_THRESHOLD_PAST_MS, ulidToDate, validateUlidTimestamp, workflowRunIdSchema, } from './ulid.js';
|
|
26
|
+
export type { WorkflowRunId } from './ulid.js';
|
|
26
27
|
export type * from './waits.js';
|
|
27
28
|
export { WaitSchema, WaitStatusSchema } from './waits.js';
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -147,6 +147,16 @@ export interface Queue {
|
|
|
147
147
|
}>;
|
|
148
148
|
/**
|
|
149
149
|
* Creates an HTTP queue handler for processing messages from a specific queue.
|
|
150
|
+
*
|
|
151
|
+
* `meta.messageId` SHOULD be stable across redeliveries of the same message
|
|
152
|
+
* (one ID per enqueued message, reused on every delivery attempt). The
|
|
153
|
+
* runtime's inline step ownership uses it as a liveness lease: the lazy
|
|
154
|
+
* `step_started` records the handling invocation's messageId, and only a
|
|
155
|
+
* delivery of that same message may re-execute the step before the
|
|
156
|
+
* ownership lease expires (crash recovery via queue redelivery). A World
|
|
157
|
+
* whose queue mints a fresh ID per delivery degrades gracefully — owner
|
|
158
|
+
* redeliveries fall back to the delayed-backstop path instead of executing
|
|
159
|
+
* immediately, adding recovery latency but never wedging or duplicating.
|
|
150
160
|
*/
|
|
151
161
|
createQueueHandler(queueNamePrefix: QueuePrefix, handler: (message: unknown, meta: {
|
|
152
162
|
attempt: number;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { z } from '#compiled/zod/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A workflow run ID: the `wrun_` prefix followed by a 26-char ULID (minted
|
|
4
|
+
* client-side in core's `start()`). Validates the exact shape — prefix plus a
|
|
5
|
+
* well-formed ULID — rather than a loose length bound, so callers can't smuggle
|
|
6
|
+
* arbitrary strings through APIs that persist a run ID verbatim.
|
|
7
|
+
*/
|
|
8
|
+
export declare const workflowRunIdSchema: z.ZodTemplateLiteral<`wrun_${string}`>;
|
|
9
|
+
export type WorkflowRunId = z.infer<typeof workflowRunIdSchema>;
|
|
1
10
|
/**
|
|
2
11
|
* Default threshold for ULID timestamps in the past (24 hours).
|
|
3
12
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,i as t,t as n}from"../../_chunks/workflow/chunk-BHKSVoKr.js";import{i as r,n as i,r as a,t as o}from"../../_chunks/workflow/dist-CttsoN4D.js";import{C as s,T as c,h as l,l as u,o as d,r as f,u as p}from"../../_chunks/workflow/dist-DpDDcpTl.js";import{A as m,
|
|
2
|
-
`);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=
|
|
3
|
-
`).slice(1);for(let e of t){if(!e.trim())continue;let t=e.trim().split(/\s+/);if(t.length<10)continue;let n=t[1],i=t[3],o=t[9];if(!n||i!==`0A`||!o||!r.has(o))continue;let s=n.indexOf(`:`);if(s===-1)continue;let c=n.slice(s+1);if(!c)continue;let l=
|
|
4
|
-
`);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Ce(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function De(e){try{let{stdout:t}=await Se(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return xe(t,e)}catch{return[]}}async function Oe(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Te(e);case`darwin`:return await Ee(e);case`win32`:return await De(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const ke=`${o}/flow?__health`;async function Ae(e,t={}){let{endpoint:n=ke,timeout:r=500}=t,i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return(await fetch(`http://localhost:${e}${n}`,{method:`HEAD`,signal:i.signal})).status===200}catch{return!1}finally{clearTimeout(a)}}async function je(e){let t=await Oe();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await Ae(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Me(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Ne=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,Pe=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Fe=Me(()=>({dataDir:Ne(),baseUrl:Pe()}));function Ie(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??i(`http://localhost`)}async function Le(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return i(`http://localhost:${e.port}`);if(process.env.PORT)return i(`http://localhost:${process.env.PORT}`);let t=await je({endpoint:a()});if(t)return i(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const Re=E(()=>Math.random());function ze(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var Be=class extends c{constructor(e,t){super(`Unsafe ${e} "${ze(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function z(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new Be(e,t)}function B(e,...t){let n=R.resolve(e),r=R.resolve(e,...t);if(r!==n&&!r.startsWith(n+R.sep))throw new Be(`path`,t.join(`/`));return r}const Ve=process.platform===`win32`;async function He(e,t=5){if(!Ve)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const Ue=new Set,We=new Set;function Ge(){Ue.clear(),We.clear()}const Ke=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function qe(e){return e.replace(Ke,``)}function Je(e,t){return e.endsWith(`.${t}`)}function Ye(e){return!Ke.test(e)}function V(e,t,n,r){return z(`fileId`,n),r!==void 0&&z(`tag`,r),B(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function H(e,t,n,r,i){if(z(`fileId`,n),i!==void 0&&z(`tag`,i),i){let a=await K(B(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return K(B(e,t,`${n}.json`),r)}async function Xe(e,t){let n=`.${t}.json`;try{return(await F.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function Ze(e,t,n){let r=`.${t}${n}`;try{return(await F.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function Qe(e){let t=R.resolve(e);if(!We.has(t))try{await F.mkdir(t,{recursive:!0}),We.add(t)}catch{}}async function $e(e,t){await Qe(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return We.delete(R.resolve(e)),await Qe(e),t()}}function U(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function et(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function W(e,t,n){return G(e,JSON.stringify(t,U,2),n)}async function G(e,t,n){if(!n?.overwrite){if(Ue.has(e))throw new f(`File ${e} already exists and 'overwrite' is false`);try{throw await F.access(e),Ue.add(e),new f(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${Re()}`,i=!1;try{await $e(R.dirname(e),async()=>{await F.writeFile(r,t),i=!0,await He(()=>F.rename(r,e))}),Ue.add(e)}catch(e){throw i&&await He(()=>F.unlink(r),3).catch(()=>{}),e}}async function K(e,t){try{let n=await F.readFile(e,`utf-8`);return t.parse(JSON.parse(n,et))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function tt(e){return await F.readFile(e)}async function nt(e){let t=await F.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function q(e){try{await F.unlink(e)}catch(e){if(e.code!==`ENOENT`)throw e}}async function J(e,t){let n=`${e}.tmp.${Re()}`,r=!1;try{return await $e(R.dirname(e),async()=>{await F.writeFile(n,t,{flag:`wx`}),r=!0;try{return await He(()=>F.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await He(()=>F.unlink(n),3).catch(()=>{})}}async function rt(e){return it(e,`.json`)}async function it(e,t){try{return(await F.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function at(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function ot(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function Y(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&z(`filePrefix`,i);let f=R.resolve(t),p=await rt(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=at(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e of _){let t=R.join(f,`${e}.json`),i=null;try{let e=r?.get(t);i=e===void 0?await K(t,n):structuredClone(e)}catch(t){if(t instanceof T){console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`);continue}throw t}if(i){if(o&&!o(i))continue;if(g){let e=i.createdAt.getTime(),t=g.timestamp.getTime();if(s===`desc`){if(e>t||e===t&&g.id&&d&&d(i)>=g.id)continue}else if(e<t||e===t&&g.id&&d&&d(i)<=g.id)continue}v.push(i)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let y=v.length>c,b=y?v.slice(0,c):v;return{data:b,cursor:b.length>0?ot(b[b.length-1].createdAt,d?.(b[b.length-1])):null,hasMore:y}}let X=null;function st(){return typeof import.meta.url==`string`&&import.meta.url?R.dirname(ce(import.meta.url)):null}async function ct(){if(X)return X;let e=st();if(e)try{let t=await L(R.join(e,`../package.json`),`utf-8`);return X=JSON.parse(t),X}catch{}return X={name:`@workflow/world-local`,version:`5.0.0-beta.24`},X}const lt=`version.txt`;var ut=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},dt=class extends Error{oldVersion;newVersion;suggestedVersion;constructor(e,t,n,r){super(e),this.name=`DataDirVersionError`,this.oldVersion=t,this.newVersion=n,this.suggestedVersion=r}};function ft(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Z(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function pt(e){let t=e.trim(),n=t.lastIndexOf(`@`);if(n<=0)throw Error(`Invalid version file content: "${e}"`);return{packageName:t.substring(0,n),version:ft(t.substring(n+1))}}function mt(e,t){return`${e}@${Z(t)}`}function ht(e,t){console.log(`[world-local] Upgrading from version ${Z(e)} to ${Z(t)}`)}async function gt(e){let t=R.resolve(e);try{await de(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new ut(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await le(t,ue.R_OK)}catch(e){let n=e;throw new ut(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=R.join(t,`.workflow-write-test-${Date.now()}`);try{await ge(n,``),await he(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new ut(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function _t(e){let t=R.join(R.resolve(e),lt);try{return pt(await L(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function vt(e,t){await ge(R.join(R.resolve(e),lt),mt((await ct()).name,t))}function yt(e,t){return t||Z(e)}async function bt(e){await gt(e);let t=await ct(),n=ft(t.version),r=await _t(e);if(r===null){await vt(e,n);return}let{version:i}=r;if(Z(i)!==Z(n))try{ht(i,n),await vt(e,n)}catch(e){let r=yt(i,e instanceof dt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Z(i)} to ${Z(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let xt=null;async function St(){return xt||=import(`../../_chunks/workflow/src-CQuMexnO.js`).then(t=>e(t.t(),1)).catch(()=>null),xt}let Ct=null;async function wt(){return Ct||=St().then(e=>e?e.trace.getTracer(`workflow`):null),Ct}async function Tt(e,...t){let[n,r]=await Promise.all([wt(),St()]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),t}finally{e.end()}})}async function Et(e){let t=await St();if(t)return t.SpanKind[e]}function Q(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Dt=Q(`peer.service`),Ot=Q(`rpc.system`),kt=Q(`rpc.service`),At=Q(`rpc.method`),jt=Q(`workflow.run.id`),Mt=Q(`step.id`),Nt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},Pt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},Ft=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function It(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function Lt(e,t){return typeof e[t]==`string`?e[t]:void 0}function Rt(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function zt(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function Bt(e,t,n){let r=`${e}.${t}`,i={},a=Pt[r],o=a===void 0?Ft.has(r)?Rt(n[0]):void 0:Lt(n,a);if(o&&Object.assign(i,jt(o)),r===`world.steps.get`){let e=Lt(n,1);e&&Object.assign(i,Mt(e))}return i}function Vt(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=It(t);r&&(n=`${e}.${a} ${r}`)}return Tt(n,{kind:await Et(`INTERNAL`)},async r=>{r?.setAttributes({...Dt(Nt.peerService),...Ot(Nt.rpcSystem),...kt(Nt.rpcService),...At(n),...Bt(e,a,t)});let o=await i(...t),s=zt(o);return s&&r?.setAttributes(jt(s)),o})}}return n}var Ht=n((e=>{var n=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.RateLimit=e.Sema=void 0;let r=n(t(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};e.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}e.RateLimit=f}))(),Ut=P(),Wt=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,U))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,et)}};const Gt=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,Kt=2147483647,qt=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3,Jt=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function Yt(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes(Jt))return!0;t=`cause`in t?t.cause:void 0}return!1}function Xt(e){let{kind:t,prefix:n}=O(e);return{pathname:t===`workflow`?`flow`:`step`,prefix:n}}function Zt(e){let t=new Ut.Agent({headersTimeout:0,connections:1e3,keepAliveTimeout:3e4}),n=new Wt,i=E(),a=new Ht.Sema(qt),o=new AbortController,s=o.signal,c=new Map,l=new Map,u=async(o,u,d)=>{let f=[];if(d?.idempotencyKey){let e=c.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(u),{pathname:m,prefix:h}=Xt(o),g=D.parse(`msg_${i()}`),_=u,v=_.runId??_.workflowRunId??void 0,y=_.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;c.set(e,g),f.push(()=>{c.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await ve(Math.min(d.delaySeconds*1e3,Kt),void 0,{signal:s}),a.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${qt}) reached, waiting for queue to free up`),await a.acquire());let n=0;try{for(let i=0;i<256;i++){let a={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":o,"x-vqs-message-id":g,"x-vqs-message-attempt":String(n+1)},c=l.get(h),u;try{if(c)u=await c(new Request(r(Ie(e),{type:m}),{method:`POST`,headers:a,body:p}));else{let n=await Le(e);u=await fetch(r(n,{type:m}),{method:`POST`,duplex:`half`,dispatcher:t,headers:a,body:p})}}catch(e){let t=e?.name;if(s.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(Yt(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${i+1}), retrying`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},error:String(e)}),await ve(5e3,void 0,{signal:s});continue}n++;let f=await u.text();if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await ve(Math.min(e*1e3,Kt),void 0,{signal:s});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${u.status})`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},handlerError:f}),await ve(5e3,void 0,{signal:s})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y}})}finally{a.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(Yt(e)?console.error(`[local world] Queue operation failed: detected "${Jt}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:g}},d=M({"x-vqs-queue-name":j,"x-vqs-message-id":D,"x-vqs-message-attempt":S()});return{queue:u,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new Wt().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,Gt)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await ct()).version}`,registerHandler(e,t){l.set(e,t)},async close(){s.aborted||(o.abort(),await t.close())}}}function Qt(e){return oe(`sha256`).update(e).digest(`hex`)}function $t(e,t,n){return B(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function en(e,t,n){let r=[$t(e,t)];n&&r.push($t(e,t,n));for(let e of r)try{return await I.access(e),!0}catch{}return!1}function tn(e,t){return R.join(e,`hooks`,`tokens`,`${Qt(t)}.json`)}async function nn(e,t,n,r){let i=tn(e,t),a;try{a=JSON.parse(await I.readFile(i,`utf8`))}catch{return}a.runId!==n||a.hookId!==r||await I.unlink(i).catch(()=>{})}function rn(e,t,n,r){let i=oe(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return R.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const an=E(()=>Math.random()),$=e=>t=>{let n=qe(t.replace(/\.json$/,``))+`.json`,r=RegExp(`^${e}_`,`g`),i=n.indexOf(`-`);return i===-1?te(n.replace(/\.json$/,``).replace(r,``)):e===`step`?null:te(n.substring(i+1).replace(/\.json$/,``).replace(r,``))};function on(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function sn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function cn(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function ln(e,t){return t?Ye(e)||Je(e,t):Ye(e)}function un(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function dn(e){let{token:t,metadata:n,isWebhook:r,isSystem:i}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1}}function fn(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}function pn(e,t){return e.runId===t.runId?e.eventType===`hook_disposed`&&e.correlationId===t.correlationId||b(e.eventType):!1}async function mn(e){try{return await K(e,y)}catch(e){if(e instanceof SyntaxError||e instanceof T)return null;throw e}}async function hn(e,t,n){let r=await H(e,`runs`,t,k,n);return r?m(r.status):!1}async function gn(e,t,n){let r=R.join(e,`events`),i=[];for(let e of await rt(r)){if(!ln(e,n))continue;let t=await mn(R.join(r,`${e}.json`));t&&i.push(t)}i.sort((e,t)=>{let n=e.createdAt.getTime()-t.createdAt.getTime();return n===0?e.eventId.localeCompare(t.eventId):n});let a=null;for(let e of i){if(fn(e,t)){a=e;continue}a&&pn(e,a)&&(a=null)}return a&&await hn(e,a.runId,n)||a&&await en(e,a.correlationId,n)?null:a}async function _n(e,t,n){let r=dn(t);return await J(R.join(e,`hooks`,`tokens`,`${Qt(r.token)}.json`),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId})),await J(V(e,`hooks`,r.hookId,n),JSON.stringify(r,U,2)),r}async function vn(e,t,n){let r=await gn(e,e=>un(e)===t,n);return r?_n(e,r,n):null}async function yn(e,t,n){let r=await gn(e,e=>e.correlationId===t,n);return r?_n(e,r,n):null}function bn(e,t){async function n(t){let n=R.join(e,`hooks`),r=await rt(n);for(let e of r){let r=await K(R.join(n,`${e}.json`),N);if(r&&r.token===t)return{...r,isWebhook:r.isWebhook??!0}}return null}async function r(n,r){z(`hookId`,n);let i=await H(e,`hooks`,n,N,t);if(!i){let i=await yn(e,n,t);if(!i)throw new d(n);let a=r?.resolveData||`all`;return cn({...i,isWebhook:i.isWebhook??!0},a)}let a=r?.resolveData||`all`;return cn({...i,isWebhook:i.isWebhook??!0},a)}async function i(r){let i=await n(r)??await vn(e,r,t);if(!i)throw new d(r);return i}async function a(t){let n=R.join(e,`hooks`),r=t.resolveData||`all`,i=await Y({directory:n,schema:N,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:e=>!(t.runId&&e.runId!==t.runId),getCreatedAt:()=>null,getId:e=>e.hookId});return{...i,data:i.data.map(e=>cn(e,r))}}return{get:r,getByToken:i,list:a}}async function xn(e,t){let n=R.join(e,`hooks`),r=await rt(n);for(let i of r){let r=R.join(n,`${i}.json`),a=await K(r,N);a&&a.runId===t&&(await nn(e,a.token,a.runId,a.hookId),await q(rn(e,a.token,a.runId,a.hookId)),await q(r))}}async function Sn(e,t,n,r,i){z(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await W(B(e,`runs`,`${t}.json`),i,{overwrite:!0}),await xn(e,t),{event:void 0,run:on(i,a)}}case`wait_completed`:case`hook_received`:{let r=`evnt_${an()}`,i=new Date,o={...n,runId:t,eventId:r,createdAt:i,specVersion:5};return await W(B(e,`events`,`${`${t}-${r}`}.json`),o),{event:_(o,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Cn=new Map;function wn(e,t){let n=Cn.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Cn.get(e)===r.task&&Cn.delete(e)}})();return r.task=i,Cn.set(e,i),i}function Tn(e,t){return{get:(async(n,r)=>{z(`runId`,n);let i=await H(e,`runs`,n,k,t);if(!i)throw new s(n);return on(i,r?.resolveData??`all`)}),list:(async t=>{let n=t?.resolveData??`all`,r=await Y({directory:R.join(e,`runs`),schema:k,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(z(`runId`,n),wn(n,async()=>{let a=await H(e,`runs`,n,k,t);if(!a)throw new s(n);try{ae(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof v,e}let o=x(a.attributes,r),c={...a,attributes:o,updatedAt:new Date};return await W(V(e,`runs`,n,t),c,{overwrite:!0}),{attributes:o}}))}}const En=M({hookId:w().optional(),runId:w(),eventId:w().optional()}),Dn=M({eventId:w()});async function On(e){try{return await K(e,En)}catch(e){if(e instanceof SyntaxError||e instanceof T)return null;throw e}}async function kn(e,t,n){if(t.hookId&&await en(e,t.hookId,n))return!0;let r=await H(e,`runs`,t.runId,k,n);return r?m(r.status):!0}async function An(e){try{return await K(e,Dn)}catch(e){if(e instanceof SyntaxError||e instanceof T)return null;throw e}}async function jn(e,t,n){return(await Y({directory:R.join(e,`events`),schema:y,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Mn(e,t,n,r,i){let a=await H(e,`events`,`${t}-${r}`,y,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await H(e,`hooks`,n,N,i))return;let o=a.eventData??{};if(typeof o.token!=`string`)return;let s={runId:t,hookId:n,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:a.createdAt,specVersion:a.specVersion,isWebhook:o.isWebhook??!0,isSystem:o.isSystem??!1};await J(V(e,`hooks`,n,i),JSON.stringify(s,U,2))}async function Nn(e,t,n,r,i){let a=rn(e,t,n,r);return await J(a,JSON.stringify({eventId:i}))?i:(await An(a))?.eventId??null}function Pn(e,t,n){let r=e.get(t),i={},a=(async()=>{r&&await r.catch(()=>void 0);try{return await n()}finally{e.get(t)===i.task&&e.delete(t)}})();return i.task=a,e.set(t,a),a}async function Fn(e,t){let n=R.join(e,`waits`),r=await rt(n);for(let e of r)e.startsWith(`${t}-`)&&await q(R.join(n,`${e}.json`))}async function In(e,t,n,r){return wn(t,async()=>{let i=await K(V(e,`runs`,t,n),k),a={...r,attributes:i?.attributes??r.attributes};return await W(V(e,`runs`,t,n),a,{overwrite:!0}),a})}function Ln(e,t){let n=4*1024*1024,r=new Map,i=new Map,a=new Map,o=0;function v(e){let t=r.get(e);if(!t)return;r.delete(e),o-=i.get(e)??0,i.delete(e);let n=a.get(t.runId);n?.delete(e),n?.size===0&&a.delete(t.runId)}function S(e){for(let t of a.get(e)??[])v(t)}function C(){r.clear(),i.clear(),a.clear(),o=0}function w(e,t,s){if(s>n)return;for(;r.size>0&&(r.size>=1e3||o+s>n);){let e=r.keys().next().value;v(e)}r.set(e,t),i.set(e,s),o+=s;let c=a.get(t.runId)??new Set;c.add(e),a.set(t.runId,c)}function T(e,t,r){if(b(e.eventType)){S(e.runId);return}let i=Buffer.byteLength(r);if(i>n)return;let a=y.safeParse(JSON.parse(r,et));a.success&&w(t,a.data,i)}async function E(n){let r=V(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,U,2);await G(r,i),T(n,r,i)}let D=new Map,O=new Map;return{clearCache:C,async create(n,i,a){if(n!=null&&n!==``&&z(`runId`,n),`correlationId`in i&&typeof i.correlationId==`string`&&z(`correlationId`,i.correlationId),(i.eventType===`step_created`||i.eventType===`step_started`||i.eventType===`step_completed`||i.eventType===`step_failed`||i.eventType===`step_retrying`)&&n&&i.correlationId)return Pn(D,t?`${n}-${i.correlationId}.${t}`:`${n}-${i.correlationId}`,()=>o());if((i.eventType===`hook_created`||i.eventType===`hook_received`||i.eventType===`hook_disposed`)&&n&&i.correlationId)return Pn(O,t?`${n}-${i.correlationId}.hook.${t}`:`${n}-${i.correlationId}.hook`,()=>o());return o();async function o(){let o=`evnt_${an()}`,v=new Date,b;if(i.eventType===`run_created`&&(!n||n===``))b=`wrun_${an()}`;else if(n)b=n;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&n&&n!==``){let e=re(b,`wrun_`);if(e)throw new c(e)}let S=i.specVersion??5,C=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(C=await H(e,`runs`,b,k,t),i.eventType===`run_started`&&!C&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){ae(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:b,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:S,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:v,updatedAt:v};if(await J(V(e,`runs`,b,t),JSON.stringify(r,U))){let e=`evnt_${an()}`;await E({eventType:`run_created`,runId:b,eventId:e,createdAt:v,specVersion:S,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes}}),C=r}else C=await H(e,`runs`,b,k,t)}}if(i.eventType===`run_failed`&&!C||i.eventType===`attr_set`&&!C)throw new s(b);if(C){if(ie(C.specVersion))throw new p(C.specVersion,5);if(ne(C.specVersion))return Sn(e,b,i,C,a)}let w=i.eventType===`step_started`&&`eventData`in i&&!!i.eventData&&typeof i.eventData.stepName==`string`&&i.eventData.input!==void 0;if(C&&m(C.status)){let e=[`run_started`,`run_completed`,`run_failed`];if(i.eventType===`run_cancelled`&&C.status===`cancelled`){let e={...i,runId:b,eventId:o,createdAt:v,specVersion:S};return await E(e),{event:_(e,a?.resolveData??`all`),run:C}}if(i.eventType===`run_started`)throw new u(`Workflow run "${b}" is already in terminal state "${C.status}"`);if(e.includes(i.eventType)||i.eventType===`run_cancelled`)throw new f(`Cannot transition run from terminal state "${C.status}"`);if(i.eventType===`step_created`||i.eventType===`hook_created`||i.eventType===`wait_created`||w)throw new f(`Cannot create new entities on run in terminal state "${C.status}"`);if(i.eventType===`attr_set`)throw new f(`Cannot set attributes on run in terminal state "${C.status}"`)}let D=null;if([`step_started`,`step_completed`,`step_failed`,`step_retrying`].includes(i.eventType)&&i.correlationId){if(D=await H(e,`steps`,`${b}-${i.correlationId}`,g,t),!D&&!w)throw new c(`Step "${i.correlationId}" not found`);if(w&&D)throw new f(`Step "${i.correlationId}" already created`);if(D){if(h(D.status))throw new f(`Cannot modify step in terminal state "${D.status}"`);if(C&&m(C.status)&&D.status!==`running`)throw new u(`Cannot modify non-running step on run in terminal state "${C.status}"`)}}if([`hook_disposed`,`hook_received`].includes(i.eventType)&&i.correlationId&&(i.eventType===`hook_received`&&await en(e,i.correlationId,t)||!await H(e,`hooks`,i.correlationId,N,t)))throw new d(i.correlationId);let O={...i,runId:b,eventId:o,createdAt:v,specVersion:S};if(i.eventType===`run_started`&&`eventData`in O&&delete O.eventData,w&&`eventData`in O&&O.eventData){let{input:e,...t}=O.eventData;O.eventData=t}let A,j,M,P,oe=!1,se;if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(ae(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),A={runId:b,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:S,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:v,updatedAt:v},!await J(V(e,`runs`,b,t),JSON.stringify(A,U,2)))throw new f(`Workflow run "${b}" already exists`)}else if(i.eventType===`run_started`){if(C){if(C.status===`running`)return{run:C};A=await In(e,b,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:C.startedAt??v,updatedAt:v,attributes:C.attributes})}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;C&&(A=await In(e,b,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,startedAt:C.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:v,updatedAt:v,attributes:C.attributes}),await Promise.all([xn(e,b),Fn(e,b)]))}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;C&&(A=await In(e,b,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,startedAt:C.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:v,updatedAt:v,attributes:C.attributes}),await Promise.all([xn(e,b),Fn(e,b)]))}else if(i.eventType===`run_cancelled`)C&&(A=await In(e,b,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,startedAt:C.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:v,updatedAt:v,attributes:C.attributes}),await Promise.all([xn(e,b),Fn(e,b)]));else if(i.eventType===`attr_set`&&C)A=await wn(b,async()=>{let n=await K(V(e,`runs`,b,t),k);if(!n)throw new s(b);if(ae(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await J(B(e,`.locks`,`attributes`,t?`${b}-${i.correlationId}.created.${t}`:`${b}-${i.correlationId}.created`),``))throw new f(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:x(n.attributes,i.eventData.changes),updatedAt:v};return await W(V(e,`runs`,b,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await J(B(e,`.locks`,`steps`,t?`${b}-${i.correlationId}.created.${t}`:`${b}-${i.correlationId}.created`),``))throw new f(`Step "${i.correlationId}" already created`);let n=i.eventData;j={runId:b,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:v,updatedAt:v,specVersion:S},await W(V(e,`steps`,`${b}-${i.correlationId}`,t),j)}else if(i.eventType===`step_started`){if(!D&&w){let n=i.eventData;if(await J(B(e,`.locks`,`steps`,t?`${b}-${i.correlationId}.created.${t}`:`${b}-${i.correlationId}.created`),``)){let r={runId:b,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:v,updatedAt:v,specVersion:S};await W(V(e,`steps`,`${b}-${i.correlationId}`,t),r);let a=`evnt_${an()}`,o={eventType:`step_created`,runId:b,eventId:a,createdAt:v,specVersion:S,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}};await W(V(e,`events`,`${b}-${a}`,t),o),D=r,oe=!0}else throw new f(`Step "${i.correlationId}" already created`)}if(D){if(D.retryAfter&&D.retryAfter.getTime()>Date.now())throw new l(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((D.retryAfter.getTime()-Date.now())/1e3)});let n=`${b}-${i.correlationId}`,r=await H(e,`steps`,n,g,t);if(r&&h(r.status))throw new f(`Cannot modify step in terminal state "${r.status}"`);j={...D,status:`running`,startedAt:D.startedAt??v,attempt:D.attempt+1,retryAfter:void 0,updatedAt:v},await W(V(e,`steps`,n,t),j,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(D){let r=`${b}-${i.correlationId}`;if(!await J(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new f(`Cannot modify step in terminal state`);j={...D,status:`completed`,output:n.result,completedAt:v,updatedAt:v},await W(V(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(D){let r=`${b}-${i.correlationId}`;if(!await J(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new f(`Cannot modify step in terminal state`);j={...D,status:`failed`,error:n.error,completedAt:v,updatedAt:v},await W(V(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(D){let r=`${b}-${i.correlationId}`;j={...D,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:v},await W(V(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let n=i.eventData,r=tn(e,n.token),s=JSON.stringify({token:n.token,hookId:i.correlationId,runId:b,eventId:o}),c=!1,l=null,u=0,d=0;for(let a=0;a<10&&(await On(r)||await vn(e,n.token,t),c=await J(r,s),!c);a++){if(l=await On(r),!l){d++,d>=3&&await q(r);continue}if(l.runId===b&&l.hookId===i.correlationId||!await kn(e,l,t))break;u++,u<3?await new Promise(e=>setTimeout(e,10)):(await q(r),l.hookId&&(await q(V(e,`hooks`,l.hookId,t)),await q(rn(e,n.token,l.runId,l.hookId)))),l=null}let p=!1;if(!c)if(l?.runId===b&&l.hookId===i.correlationId){let r;if(l.eventId)r=l.eventId;else{let a=await jn(e,b,i.correlationId);if(a!==null)throw await Mn(e,b,i.correlationId,a,t),new f(`Hook "${i.correlationId}" already created`);let s=await Nn(e,n.token,b,i.correlationId,o);if(s===null)throw new f(`Hook "${i.correlationId}" already created`);r=s}o=r;let a=te(o.replace(/^evnt_/,``))??v;O={...i,runId:b,eventId:o,createdAt:a,specVersion:S},p=!0}else{let e={eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:n.token,...l?{conflictingRunId:l.runId}:{}},runId:b,eventId:o,createdAt:v,specVersion:S};return await E(e),{event:_(e,a?.resolveData??`all`),run:A,step:j,hook:void 0}}M={runId:b,hookId:i.correlationId,token:n.token,metadata:n.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:O.createdAt,specVersion:S,isWebhook:n.isWebhook??!1,isSystem:n.isSystem??!1},se=p?{overwrite:!0}:void 0}else if(i.eventType===`hook_disposed`){if(!await J($t(e,i.correlationId,t),``))throw new f(`Hook "${i.correlationId}" already disposed`);let n=V(e,`hooks`,i.correlationId,t),r=await H(e,`hooks`,i.correlationId,N,t);r&&(await nn(e,r.token,r.runId,r.hookId),await q(rn(e,r.token,r.runId,r.hookId))),await q(n)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${b}-${i.correlationId}`;if(!await J(B(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new f(`Wait "${i.correlationId}" already exists`);let r=i.eventData;P={waitId:n,runId:b,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:v,updatedAt:v,specVersion:S},await W(V(e,`waits`,n,t),P)}else if(i.eventType===`wait_completed`){let n=`${b}-${i.correlationId}`,r=B(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await J(r,``))throw new f(`Wait "${i.correlationId}" already completed`);let a=await H(e,`waits`,n,ee,t);if(!a)throw await I.unlink(r).catch(()=>{}),new c(`Wait "${i.correlationId}" not found`);P={...a,status:`completed`,completedAt:v,updatedAt:v},await W(V(e,`waits`,n,t),P,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await en(e,i.correlationId,t))throw new d(i.correlationId);let ce=V(e,`events`,`${b}-${o}`,t),F=JSON.stringify(O,U,2);if(!await J(ce,F))throw i.eventType===`hook_created`&&i.correlationId&&await Mn(e,b,i.correlationId,o,t),new f(`Event "${o}" already exists for run "${b}"`);T(O,ce,F),M&&i.eventType===`hook_created`&&await W(V(e,`hooks`,M.hookId,t),M,se);let le=a?.resolveData??`all`,ue=_(O,le),de,L,fe;if(i.eventType===`run_started`&&A){let t=await Y({directory:R.join(e,`events`),schema:y,cachedItems:r,filePrefix:`${b}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});de=t.data,L=t.cursor,fe=t.hasMore}if((i.eventType===`step_completed`||i.eventType===`step_failed`)&&typeof a?.sinceCursor==`string`){let t=await Y({directory:R.join(e,`events`),schema:y,filePrefix:`${b}-`,sortOrder:`asc`,cursor:a.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});de=le===`none`?t.data.map(e=>_(e,le)):t.data,L=t.cursor,fe=t.hasMore}return{event:ue,run:A,step:j,hook:M,wait:P,events:de,cursor:L,hasMore:fe,...oe?{stepCreated:!0}:{}}}},async get(n,r,i){z(`runId`,n),z(`eventId`,r);let a=await H(e,`events`,`${n}-${r}`,y,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return _(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;z(`runId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:y,cachedItems:r,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>_(e,i))}:a},async listByCorrelationId(t){let n=t.correlationId;z(`correlationId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:y,cachedItems:r,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>_(e,i))}:a}}}function Rn(e,t){return{get:(async(n,r,i)=>{z(`runId`,n),z(`stepId`,r);let a=await H(e,`steps`,`${n}-${r}`,g,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return sn(a,i?.resolveData??`all`)}),list:(async t=>{z(`runId`,t.runId);let n=t.resolveData??`all`,r=await Y({directory:R.join(e,`steps`),schema:g,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function zn(e,t){let n=Tn(e,t),r=Rn(e,t),i=Ln(e,t),a=bn(e,t);return{runs:Vt(`world.runs`,n),steps:Vt(`world.steps`,r),events:Vt(`world.events`,i),hooks:Vt(`world.hooks`,a),clearCache:()=>i.clearCache()}}const Bn=E(()=>Math.random()),Vn=M({streams:C(w())});function Hn(e){return e===1}function Un(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Wn(e){return Hn(e[0])}function Gn(e){return{eof:Wn(e),chunk:Buffer.from(e.subarray(1))}}async function Kn(e){try{return await I.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function qn(e,t,n,r=n,i=()=>!0){for(let a of t){if(!a.endsWith(n))continue;let t=a.slice(0,-n.length);i(t)&&e.set(t,r)}}function Jn(e,t){return z(`streamName`,t),R.join(e,t)}async function Yn(e,t,n){let r=Jn(e,t),i=await Kn(r),a=new Map;return qn(a,i,`.json`),qn(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&qn(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function Xn(e,t){let n=t?`.${t}`:``,r=new ye,i=new Set;async function a(n,r){z(`runId`,n),z(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=V(e,`streams/runs`,n,t),s=(await H(e,`streams/runs`,n,Vn,t))?.streams??[];s.includes(r)||(s.push(r),await W(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${Bn()}`;await a(await t,i);let l=o(s),u=Un({chunk:l,eof:!1});await G(R.join(Jn(R.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${Bn()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Un({chunk:t,eof:!1});return await G(R.join(Jn(R.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${Bn()}`;await a(await t,i),await G(R.join(Jn(R.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Un({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return z(`runId`,n),(await H(e,`streams/runs`,n,Vn,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await Yn(R.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=R.join(c,`${e}${t}`);if(f<l){if(Hn(await nt(n))){u=!0;break}f++;continue}if(d.length>=a){Hn(await nt(n))?u=!0:f++;break}let r=Gn(await tt(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await Yn(R.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Hn(await nt(R.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=R.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await Yn(o,i,t),v=h.length;if(typeof a==`number`&&a<0&&h.length>0){let e=h[h.length-1],t=g.get(e)??`.bin`;Hn(await nt(R.join(_,`${e}${t}`)))&&v--}let y=typeof a==`number`&&a<0?Math.max(0,v+a):a,b=!1;for(let t=y;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=Gn(await tt(R.join(_,`${r}${a}`)));if(o?.eof===!0){b=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(b){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<y&&e<h.length;e++)n.add(h[e]);if(l){s();return}let x=!1;c=setInterval(async()=>{if(!x){x=!0;try{let{files:r,extMap:a}=await Yn(o,i,t);for(let t of r){let r=t;if(n.has(r))continue;n.add(r);let i=a.get(t)??`.bin`,o=Gn(await tt(R.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function Zn(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Fe.value,...t},r=n.tag,i=Zt(n),{clearCache:a,...o}=zn(n.dataDir,r),s=n.recoverActiveRuns??!0;return{specVersion:5,...i,...o,...Vt(`world.streams`,{...Xn(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await bt(n.dataDir),!s)return;let e=r?e=>Je(e,r):Ye;await A({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=R.join(e,`hooks`),i=await Xe(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-DJU_7R9s.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await K(R.join(t,n),a);r?.token&&(await q(R.join(t,`tokens`,`${Qt(r.token)}.json`)),await q(rn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`waits`,`streams/runs`].map(async t=>{let n=R.join(e,t),i=await Xe(n,r);await Promise.all(i.map(e=>q(R.join(n,e))))})),await F.rm(R.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=R.join(e,`streams`,`chunks`),s;try{s=await F.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(o,e.name),n=await Ze(t,r,`.bin`);await Promise.all(n.map(e=>F.unlink(R.join(t,e)).catch(()=>{})))})),Ge()}else Ge(),await me(n.dataDir,{recursive:!0,force:!0}),await bt(n.dataDir)}}}function Qn(e){return Zn(e)}export{ut as DataDirAccessError,dt as DataDirVersionError,Qn as createLocalWorld,Zn as createWorld,gt as ensureDataDir,bt as initDataDir,ft as parseVersion};
|
|
1
|
+
import{a as e,i as t,t as n}from"../../_chunks/workflow/chunk-BHKSVoKr.js";import{i as r,n as i,r as a,t as o}from"../../_chunks/workflow/dist-CttsoN4D.js";import{C as s,T as c,h as l,l as u,o as d,r as f,u as p}from"../../_chunks/workflow/dist-DpDDcpTl.js";import{A as m,B as h,D as g,E as _,G as v,H as y,I as b,J as x,K as ee,L as te,M as S,O as ne,R as C,V as re,W as w,Z as T,_ as ie,c as ae,et as E,f as oe,it as D,j as se,m as O,n as ce,nt as k,o as A,r as le,s as ue,u as j,y as M,z as de}from"../../_chunks/workflow/dist-DnBjuNAZ.js";import{t as N}from"../../_chunks/workflow/undici-fb54XL8i.js";import{createHash as P}from"node:crypto";import{promisify as fe}from"node:util";import{fileURLToPath as pe}from"node:url";import{promises as F}from"node:fs";import I,{access as me,constants as he,mkdir as ge,readFile as L,readdir as _e,readlink as ve,rm as ye,unlink as be,writeFile as xe}from"node:fs/promises";import R from"node:path";import{execFile as Se}from"node:child_process";import{setTimeout as Ce}from"node:timers/promises";import{EventEmitter as we}from"node:events";function Te(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Ee(e,t){let n=[],r=e.trim().split(`
|
|
2
|
+
`);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=Te(i.slice(s+1));c!==void 0&&n.push(c)}return n}const De=fe(Se);function Oe(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const ke=((e,t)=>e.join(t))([``,`proc`],`/`);async function Ae(e){let t=[`${ke}/net/tcp`,`${ke}/net/tcp6`],n=[],r=new Set,i=`${ke}/${e}/fd`;try{let e=(await _e(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await ve(`${i}/${e}`)).match(/^socket:\[(\d+)\]$/)?.[1]??null));for(let e of t)e.status===`fulfilled`&&e.value&&(n.push(e.value),r.add(e.value))}catch{return[]}if(n.length===0)return[];let a=new Map;for(let e of t)try{let t=(await L(e,`utf8`)).split(`
|
|
3
|
+
`).slice(1);for(let e of t){if(!e.trim())continue;let t=e.trim().split(/\s+/);if(t.length<10)continue;let n=t[1],i=t[3],o=t[9];if(!n||i!==`0A`||!o||!r.has(o))continue;let s=n.indexOf(`:`);if(s===-1)continue;let c=n.slice(s+1);if(!c)continue;let l=Oe(c,16);l!==void 0&&a.set(o,l)}}catch{}let o=[];for(let e of n){let t=a.get(e);t!==void 0&&o.push(t)}return o}async function je(e){try{let{stdout:t}=await De(`lsof`,[`-a`,`-i`,`-P`,`-n`,`-p`,e.toString()]),n=[],r=t.split(`
|
|
4
|
+
`);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Oe(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Me(e){try{let{stdout:t}=await De(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Ee(t,e)}catch{return[]}}async function Ne(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Ae(e);case`darwin`:return await je(e);case`win32`:return await Me(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const Pe=`${o}/flow?__health`;async function Fe(e,t={}){let{endpoint:n=Pe,timeout:r=500}=t,i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return(await fetch(`http://localhost:${e}${n}`,{method:`HEAD`,signal:i.signal})).status===200}catch{return!1}finally{clearTimeout(a)}}async function Ie(e){let t=await Ne();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await Fe(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Le(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Re=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,ze=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Be=Le(()=>({dataDir:Re(),baseUrl:ze()}));function Ve(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??i(`http://localhost`)}async function He(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return i(`http://localhost:${e.port}`);if(process.env.PORT)return i(`http://localhost:${process.env.PORT}`);let t=await Ie({endpoint:a()});if(t)return i(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const Ue=A(()=>Math.random());function We(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var Ge=class extends c{constructor(e,t){super(`Unsafe ${e} "${We(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function z(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new Ge(e,t)}function B(e,...t){let n=R.resolve(e),r=R.resolve(e,...t);if(r!==n&&!r.startsWith(n+R.sep))throw new Ge(`path`,t.join(`/`));return r}const Ke=process.platform===`win32`;async function qe(e,t=5){if(!Ke)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const Je=new Set,Ye=new Set;function Xe(){Je.clear(),Ye.clear()}const Ze=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function Qe(e){return e.replace(Ze,``)}function $e(e,t){return e.endsWith(`.${t}`)}function et(e){return!Ze.test(e)}function V(e,t,n,r){return z(`fileId`,n),r!==void 0&&z(`tag`,r),B(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function H(e,t,n,r,i){if(z(`fileId`,n),i!==void 0&&z(`tag`,i),i){let a=await G(B(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return G(B(e,t,`${n}.json`),r)}async function tt(e,t){let n=`.${t}.json`;try{return(await F.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function nt(e,t,n){let r=`.${t}${n}`;try{return(await F.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function rt(e){let t=R.resolve(e);if(!Ye.has(t))try{await F.mkdir(t,{recursive:!0}),Ye.add(t)}catch{}}async function it(e,t){await rt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return Ye.delete(R.resolve(e)),await rt(e),t()}}function U(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function at(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function W(e,t,n){return ot(e,JSON.stringify(t,U,2),n)}async function ot(e,t,n){if(!n?.overwrite){if(Je.has(e))throw new f(`File ${e} already exists and 'overwrite' is false`);try{throw await F.access(e),Je.add(e),new f(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${Ue()}`,i=!1;try{await it(R.dirname(e),async()=>{await F.writeFile(r,t),i=!0,await qe(()=>F.rename(r,e))}),Je.add(e)}catch(e){throw i&&await qe(()=>F.unlink(r),3).catch(()=>{}),e}}async function G(e,t){try{let n=await F.readFile(e,`utf-8`);return t.parse(JSON.parse(n,at))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function st(e){return await F.readFile(e)}async function ct(e){let t=await F.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function K(e){try{await F.unlink(e)}catch(e){if(e.code!==`ENOENT`)throw e}}async function q(e,t){let n=`${e}.tmp.${Ue()}`,r=!1;try{return await it(R.dirname(e),async()=>{await F.writeFile(n,t,{flag:`wx`}),r=!0;try{return await qe(()=>F.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await qe(()=>F.unlink(n),3).catch(()=>{})}}async function J(e){return lt(e,`.json`)}async function lt(e,t){try{return(await F.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function ut(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function dt(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function Y(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&z(`filePrefix`,i);let f=R.resolve(t),p=await J(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=ut(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=R.join(f,`${e}.json`);try{let e=r?.get(t);return e===void 0?await G(t,n):structuredClone(e)}catch(t){if(t instanceof D)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}}));for(let e of i)if(e&&!(o&&!o(e))){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let y=v.length>c,b=y?v.slice(0,c):v;return{data:b,cursor:b.length>0?dt(b[b.length-1].createdAt,d?.(b[b.length-1])):null,hasMore:y}}let X=null;function ft(){return typeof import.meta.url==`string`&&import.meta.url?R.dirname(pe(import.meta.url)):null}async function pt(){if(X)return X;let e=ft();if(e)try{let t=await L(R.join(e,`../package.json`),`utf-8`);return X=JSON.parse(t),X}catch{}return X={name:`@workflow/world-local`,version:`5.0.0-beta.26`},X}const mt=`version.txt`;var ht=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},gt=class extends Error{oldVersion;newVersion;suggestedVersion;constructor(e,t,n,r){super(e),this.name=`DataDirVersionError`,this.oldVersion=t,this.newVersion=n,this.suggestedVersion=r}};function _t(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Z(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function vt(e){let t=e.trim(),n=t.lastIndexOf(`@`);if(n<=0)throw Error(`Invalid version file content: "${e}"`);return{packageName:t.substring(0,n),version:_t(t.substring(n+1))}}function yt(e,t){return`${e}@${Z(t)}`}function bt(e,t){console.log(`[world-local] Upgrading from version ${Z(e)} to ${Z(t)}`)}async function xt(e){let t=R.resolve(e);try{await ge(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new ht(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await me(t,he.R_OK)}catch(e){let n=e;throw new ht(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=R.join(t,`.workflow-write-test-${Date.now()}`);try{await xe(n,``),await be(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new ht(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function St(e){let t=R.join(R.resolve(e),mt);try{return vt(await L(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Ct(e,t){await xe(R.join(R.resolve(e),mt),yt((await pt()).name,t))}function wt(e,t){return t||Z(e)}async function Tt(e){await xt(e);let t=await pt(),n=_t(t.version),r=await St(e);if(r===null){await Ct(e,n);return}let{version:i}=r;if(Z(i)!==Z(n))try{bt(i,n),await Ct(e,n)}catch(e){let r=wt(i,e instanceof gt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Z(i)} to ${Z(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Et=null;async function Dt(){return Et||=import(`../../_chunks/workflow/src-CQuMexnO.js`).then(t=>e(t.t(),1)).catch(()=>null),Et}let Ot=null;async function kt(){return Ot||=Dt().then(e=>e?e.trace.getTracer(`workflow`):null),Ot}async function At(e,...t){let[n,r]=await Promise.all([kt(),Dt()]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),t}finally{e.end()}})}async function jt(e){let t=await Dt();if(t)return t.SpanKind[e]}function Q(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Mt=Q(`peer.service`),Nt=Q(`rpc.system`),Pt=Q(`rpc.service`),Ft=Q(`rpc.method`),It=Q(`workflow.run.id`),Lt=Q(`step.id`),Rt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},zt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},Bt=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function Vt(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function Ht(e,t){return typeof e[t]==`string`?e[t]:void 0}function Ut(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function Wt(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function Gt(e,t,n){let r=`${e}.${t}`,i={},a=zt[r],o=a===void 0?Bt.has(r)?Ut(n[0]):void 0:Ht(n,a);if(o&&Object.assign(i,It(o)),r===`world.steps.get`){let e=Ht(n,1);e&&Object.assign(i,Lt(e))}return i}function Kt(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=Vt(t);r&&(n=`${e}.${a} ${r}`)}return At(n,{kind:await jt(`INTERNAL`)},async r=>{r?.setAttributes({...Mt(Rt.peerService),...Nt(Rt.rpcSystem),...Pt(Rt.rpcService),...Ft(n),...Gt(e,a,t)});let o=await i(...t),s=Wt(o);return s&&r?.setAttributes(It(s)),o})}}return n}var qt=n((e=>{var n=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.RateLimit=e.Sema=void 0;let r=n(t(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};e.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}e.RateLimit=f}))(),Jt=N(),Yt=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,U))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,at)}};const Xt=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,Zt=2147483647,Qt=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3,$t=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function en(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes($t))return!0;t=`cause`in t?t.cause:void 0}return!1}function tn(e){let{kind:t,prefix:n}=ie(e);return{pathname:t===`workflow`?`flow`:`step`,prefix:n}}function nn(e){let t=new Jt.Agent({headersTimeout:0,connections:1e3,keepAliveTimeout:3e4}),n=new Yt,i=A(),a=new qt.Sema(Qt),o=new AbortController,s=o.signal,c=new Map,l=new Map,u=async(o,u,d)=>{let f=[];if(d?.idempotencyKey){let e=c.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(u),{pathname:m,prefix:h}=tn(o),g=oe.parse(`msg_${i()}`),_=u,v=_.runId??_.workflowRunId??void 0,y=_.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;c.set(e,g),f.push(()=>{c.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await Ce(Math.min(d.delaySeconds*1e3,Zt),void 0,{signal:s}),a.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${Qt}) reached, waiting for queue to free up`),await a.acquire());let n=0;try{for(let i=0;i<256;i++){let a={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":o,"x-vqs-message-id":g,"x-vqs-message-attempt":String(n+1)},c=l.get(h),u;try{if(c)u=await c(new Request(r(Ve(e),{type:m}),{method:`POST`,headers:a,body:p}));else{let n=await He(e);u=await fetch(r(n,{type:m}),{method:`POST`,duplex:`half`,dispatcher:t,headers:a,body:p})}}catch(e){let t=e?.name;if(s.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(en(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${i+1}), retrying`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},error:String(e)}),await Ce(5e3,void 0,{signal:s});continue}n++;let f=await u.text();if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Ce(Math.min(e*1e3,Zt),void 0,{signal:s});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${u.status})`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},handlerError:f}),await Ce(5e3,void 0,{signal:s})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y}})}finally{a.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(en(e)?console.error(`[local world] Queue operation failed: detected "${$t}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:g}},d=E({"x-vqs-queue-name":O,"x-vqs-message-id":oe,"x-vqs-message-attempt":x()});return{queue:u,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new Yt().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,Xt)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await pt()).version}`,registerHandler(e,t){l.set(e,t)},async close(){s.aborted||(o.abort(),await t.close())}}}function rn(e){return P(`sha256`).update(e).digest(`hex`)}function an(e,t,n){return B(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function on(e,t,n){let r=[an(e,t)];n&&r.push(an(e,t,n));for(let e of r)try{return await I.access(e),!0}catch{}return!1}function sn(e,t){return R.join(e,`hooks`,`tokens`,`${rn(t)}.json`)}async function cn(e,t,n,r){let i=sn(e,t),a;try{a=JSON.parse(await I.readFile(i,`utf8`))}catch{return}a.runId!==n||a.hookId!==r||await I.unlink(i).catch(()=>{})}function ln(e,t,n,r){let i=P(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return R.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const un=A(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=Qe(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?ce(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:ce(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},dn=E({runId:k()}),fn=E({hookId:k(),tag:k().optional()});function pn(e,t){return B(e,`hooks`,`token-index`,rn(t))}function mn(e,t){return z(`hookId`,t),B(e,`hooks`,`id-index`,t)}function hn(e){return B(e,`hooks`,`by-run`)}function gn(e){let t=Qe(e);return t===e?void 0:e.slice(t.length+1)}function _n(e,t){return t?et(e)||$e(e,t):et(e)}async function vn(e){try{return await G(e,S)}catch(e){if(e instanceof SyntaxError||e instanceof D)return null;throw e}}async function yn(e,t,n,r,i,a){z(`runId`,n),z(`eventId`,i),a!==void 0&&z(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([q(R.join(pn(e,t),o),s),q(R.join(mn(e,r),o),s)])}function bn(e,t,n,r){return V(e,`hooks/by-run`,`${t}-${n}`,r)}async function xn(e,t,n,r){await q(bn(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function Sn(e,t,n,r){await K(bn(e,t,n,r)),r&&await K(bn(e,t,n))}async function Cn(e,t){z(`runId`,t);let n=hn(e),r=`${t}-`,i=[];for(let e of await J(n)){if(!e.startsWith(r))continue;let t=null;try{t=await G(R.join(n,`${e}.json`),fn)}catch(e){if(!(e instanceof SyntaxError||e instanceof D))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function wn(e,t){await K(R.join(hn(e),`${t}.json`))}const Tn=new Map;function En(){Tn.clear()}async function Dn(e){let t=R.resolve(e),n=Tn.get(t);return n||(n=kn(t).catch(e=>{throw Tn.delete(t),e}),Tn.set(t,n)),n}async function On(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function kn(e){let t=R.join(e,`hooks`,`.hook-index-complete`);try{await I.access(t);return}catch{}let n=R.join(e,`events`);await On(await J(n),32,async t=>{let r=await vn(R.join(n,`${t}.json`));if(!r||r.eventType!==`hook_created`||typeof r.correlationId!=`string`)return;let i=r.eventData?.token;if(typeof i==`string`)try{await yn(e,i,r.runId,r.correlationId,r.eventId,gn(t))}catch{}});let r=R.join(e,`hooks`);await On(await J(r),32,async t=>{let n=null;try{n=await G(R.join(r,`${t}.json`),M)}catch(e){if(!(e instanceof SyntaxError||e instanceof D))throw e}if(n)try{await xn(e,n.runId,n.hookId,gn(t))}catch{}}),await q(t,``)}async function An(e,t,n,r){await Dn(e);let i;try{i=t.kind===`token`?pn(e,t.token):mn(e,t.hookId)}catch{return null}let a=(await J(i)).filter(e=>_n(e,r)).sort((e,t)=>Qe(t).localeCompare(Qe(e)));for(let t of a){let r=null;try{r=await G(R.join(i,`${t}.json`),dn)}catch(e){if(!(e instanceof SyntaxError||e instanceof D))throw e}if(!r)continue;let a=Qe(t),o;try{o=V(e,`events`,`${r.runId}-${a}`,gn(t))}catch{continue}let s=await vn(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function jn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Mn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Nn(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Pn(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Fn(e){let{token:t,metadata:n,isWebhook:r,isSystem:i}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1}}function In(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Ln(e,t,n){let r=await H(e,`runs`,t,m,n);return r?se(r.status):!1}async function Rn(e,t,n,r){let i=await An(e,t,e=>In(e,n),r);return!i||!In(i,n)||await Ln(e,i.runId,r)||await on(e,i.correlationId,r)?null:i}async function zn(e,t,n){let r=Fn(t);return await q(R.join(e,`hooks`,`tokens`,`${rn(r.token)}.json`),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId})),await xn(e,r.runId,r.hookId,n),await q(V(e,`hooks`,r.hookId,n),JSON.stringify(r,U,2)),r}async function Bn(e,t,n){let r=await Rn(e,{kind:`token`,token:t},e=>Pn(e)===t,n);return r?zn(e,r,n):null}async function Vn(e,t,n){let r=await Rn(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?zn(e,r,n):null}function Hn(e,t){let n=E({hookId:k().optional()});async function r(r){let i=null;try{i=await G(sn(e,r),n)}catch(e){if(!(e instanceof SyntaxError||e instanceof D))throw e}if(i?.hookId)try{let n=await H(e,`hooks`,i.hookId,M,t);if(n&&n.token===r)return{...n,isWebhook:n.isWebhook??!0}}catch(e){if(!Ge.is(e))throw e}let a=R.join(e,`hooks`),o=await J(a);for(let e of o){let t=await G(R.join(a,`${e}.json`),M);if(t&&t.token===r)return{...t,isWebhook:t.isWebhook??!0}}return null}async function i(n,r){z(`hookId`,n);let i=await H(e,`hooks`,n,M,t);if(!i){let i=await Vn(e,n,t);if(!i)throw new d(n);let a=r?.resolveData||`all`;return Nn({...i,isWebhook:i.isWebhook??!0},a)}let a=r?.resolveData||`all`;return Nn({...i,isWebhook:i.isWebhook??!0},a)}async function a(n){let i=await r(n)??await Bn(e,n,t);if(!i)throw new d(n);return i}async function o(t){let n=R.join(e,`hooks`),r=t.resolveData||`all`,i=await Y({directory:n,schema:M,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:e=>!(t.runId&&e.runId!==t.runId),getCreatedAt:()=>null,getId:e=>e.hookId});return{...i,data:i.data.map(e=>Nn(e,r))}}return{get:i,getByToken:a,list:o}}async function Un(e,t){await Dn(e);for(let n of await Cn(e,t)){if(n.hookId){let r=null,i=null;try{i=V(e,`hooks`,n.hookId,n.tag),r=await G(i,M)}catch(e){if(!Ge.is(e)&&!(e instanceof SyntaxError||e instanceof D))throw e}r&&i&&r.runId===t&&(await cn(e,r.token,r.runId,r.hookId),await K(ln(e,r.token,r.runId,r.hookId)),await K(i))}await wn(e,n.fileId)}}async function Wn(e,t,n,r,i){z(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await W(B(e,`runs`,`${t}.json`),i,{overwrite:!0}),await Un(e,t),{event:void 0,run:jn(i,a)}}case`wait_completed`:case`hook_received`:{let r=`evnt_${un()}`,i=new Date,o={...n,runId:t,eventId:r,createdAt:i,specVersion:5};return await W(B(e,`events`,`${`${t}-${r}`}.json`),o),{event:y(o,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Gn=new Map;function Kn(e,t){let n=Gn.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Gn.get(e)===r.task&&Gn.delete(e)}})();return r.task=i,Gn.set(e,i),i}function qn(e,t){return{get:(async(n,r)=>{z(`runId`,n);let i=await H(e,`runs`,n,m,t);if(!i)throw new s(n);return jn(i,r?.resolveData??`all`)}),list:(async t=>{let n=t?.resolveData??`all`,r=await Y({directory:R.join(e,`runs`),schema:m,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(z(`runId`,n),Kn(n,async()=>{let a=await H(e,`runs`,n,m,t);if(!a)throw new s(n);try{ee(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof w,e}let o=v(a.attributes,r),c={...a,attributes:o,updatedAt:new Date};return await W(V(e,`runs`,n,t),c,{overwrite:!0}),{attributes:o}}))}}const Jn=E({hookId:k().optional(),runId:k(),eventId:k().optional()}),Yn=E({eventId:k()});async function Xn(e){try{return await G(e,Jn)}catch(e){if(e instanceof SyntaxError||e instanceof D)return null;throw e}}async function Zn(e,t,n){if(t.hookId&&await on(e,t.hookId,n))return!0;let r=await H(e,`runs`,t.runId,m,n);return r?se(r.status):!0}async function Qn(e){try{return await G(e,Yn)}catch(e){if(e instanceof SyntaxError||e instanceof D)return null;throw e}}async function $n(e,t,n){return(await Y({directory:R.join(e,`events`),schema:S,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function er(e,t,n,r,i){let a=await H(e,`events`,`${t}-${r}`,S,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await H(e,`hooks`,n,M,i))return;let o=a.eventData??{};if(typeof o.token!=`string`)return;let s={runId:t,hookId:n,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:a.createdAt,specVersion:a.specVersion,isWebhook:o.isWebhook??!0,isSystem:o.isSystem??!1};await yn(e,o.token,t,n,r,i),await xn(e,t,n,i),await q(V(e,`hooks`,n,i),JSON.stringify(s,U,2))}async function tr(e,t,n,r,i){let a=ln(e,t,n,r);return await q(a,JSON.stringify({eventId:i}))?i:(await Qn(a))?.eventId??null}function nr(e,t,n){let r=e.get(t),i={},a=(async()=>{r&&await r.catch(()=>void 0);try{return await n()}finally{e.get(t)===i.task&&e.delete(t)}})();return i.task=a,e.set(t,a),a}async function rr(e,t){let n=R.join(e,`waits`),r=await J(n);for(let e of r)e.startsWith(`${t}-`)&&await K(R.join(n,`${e}.json`))}async function ir(e,t,n,r){return Kn(t,async()=>{let i=await G(V(e,`runs`,t,n),m),a={...r,attributes:i?.attributes??r.attributes};return await W(V(e,`runs`,t,n),a,{overwrite:!0}),a})}function ar(e,t){let n=4*1024*1024,r=new Map,i=new Map,a=new Map,o=0;function x(e){let t=r.get(e);if(!t)return;r.delete(e),o-=i.get(e)??0,i.delete(e);let n=a.get(t.runId);n?.delete(e),n?.size===0&&a.delete(t.runId)}function w(e){for(let t of a.get(e)??[])x(t)}function T(){r.clear(),i.clear(),a.clear(),o=0}function ie(e,t,s){if(s>n)return;for(;r.size>0&&(r.size>=1e3||o+s>n);){let e=r.keys().next().value;x(e)}r.set(e,t),i.set(e,s),o+=s;let c=a.get(t.runId)??new Set;c.add(e),a.set(t.runId,c)}function E(e,t,r){if(h(e.eventType)){w(e.runId);return}let i=Buffer.byteLength(r);if(i>n)return;let a=S.safeParse(JSON.parse(r,at));a.success&&ie(t,a.data,i)}async function oe(n){let r=V(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,U,2);await ot(r,i),E(n,r,i)}let D=new Map,O=new Map;return{clearCache:T,async create(n,i,a){if(n!=null&&n!==``&&z(`runId`,n),`correlationId`in i&&typeof i.correlationId==`string`&&z(`correlationId`,i.correlationId),de(i.eventType)&&n&&i.correlationId)return nr(D,t?`${n}-${i.correlationId}.${t}`:`${n}-${i.correlationId}`,()=>o());if(C(i.eventType)&&n&&i.correlationId)return nr(O,t?`${n}-${i.correlationId}.hook.${t}`:`${n}-${i.correlationId}.hook`,()=>o());return o();async function o(){let o=`evnt_${un()}`,x=new Date,C;if(i.eventType===`run_created`&&(!n||n===``))C=`wrun_${un()}`;else if(n)C=n;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&n&&n!==``){let e=le(C,`wrun_`);if(e)throw new c(e)}let w=i.specVersion??5,T=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(T=await H(e,`runs`,C,m,t),i.eventType===`run_started`&&!T&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){ee(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:C,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:x,updatedAt:x};if(await q(V(e,`runs`,C,t),JSON.stringify(r,U))){let e=`evnt_${un()}`;await oe({eventType:`run_created`,runId:C,eventId:e,createdAt:x,specVersion:w,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes}}),T=r}else T=await H(e,`runs`,C,m,t)}}if(i.eventType===`run_failed`&&!T||i.eventType===`attr_set`&&!T)throw new s(C);if(T){if(ae(T.specVersion))throw new p(T.specVersion,5);if(ue(T.specVersion))return Wn(e,C,i,T,a)}let ie=b(i),D=ie&&i.eventType===`step_started`;if(T&&se(T.status)){if(i.eventType===`run_cancelled`&&T.status===`cancelled`){let e={...i,runId:C,eventId:o,createdAt:x,specVersion:w};return await oe(e),{event:y(e,a?.resolveData??`all`),run:T}}if(i.eventType===`run_started`)throw new u(`Workflow run "${C}" is already in terminal state "${T.status}"`);if(h(i.eventType))throw new f(`Cannot transition run from terminal state "${T.status}"`);if(ie)throw new f(`Cannot create new entities on run in terminal state "${T.status}"`);if(i.eventType===`attr_set`)throw new f(`Cannot set attributes on run in terminal state "${T.status}"`)}let O=null;if(de(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(O=await H(e,`steps`,`${C}-${i.correlationId}`,g,t),!O&&!D)throw new c(`Step "${i.correlationId}" not found`);if(D&&O)throw new f(`Step "${i.correlationId}" already created`);if(O){if(ne(O.status))throw new f(`Cannot modify step in terminal state "${O.status}"`);if(T&&se(T.status)&&O.status!==`running`)throw new u(`Cannot modify non-running step on run in terminal state "${T.status}"`)}}if(te(i.eventType)&&i.correlationId&&(i.eventType===`hook_received`&&await on(e,i.correlationId,t)||!await H(e,`hooks`,i.correlationId,M,t)))throw new d(i.correlationId);let k={...i,runId:C,eventId:o,createdAt:x,specVersion:w};if(i.eventType===`run_started`&&`eventData`in k&&delete k.eventData,D&&k.eventType===`step_started`&&k.eventData){let{input:e,...t}=k.eventData;k={...k,eventData:t}}let A,j,N,P,fe=!1,pe;if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(ee(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),A={runId:C,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:x,updatedAt:x},!await q(V(e,`runs`,C,t),JSON.stringify(A,U,2)))throw new f(`Workflow run "${C}" already exists`)}else if(i.eventType===`run_started`){if(T){if(T.status===`running`)return{run:T};A=await ir(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:T.startedAt??x,updatedAt:x,attributes:T.attributes})}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;T&&(A=await ir(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:x,updatedAt:x,attributes:T.attributes}),await Promise.all([Un(e,C),rr(e,C)]))}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;T&&(A=await ir(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:x,updatedAt:x,attributes:T.attributes}),await Promise.all([Un(e,C),rr(e,C)]))}else if(i.eventType===`run_cancelled`)T&&(A=await ir(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:x,updatedAt:x,attributes:T.attributes}),await Promise.all([Un(e,C),rr(e,C)]));else if(i.eventType===`attr_set`&&T)A=await Kn(C,async()=>{let n=await G(V(e,`runs`,C,t),m);if(!n)throw new s(C);if(ee(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await q(B(e,`.locks`,`attributes`,t?`${C}-${i.correlationId}.created.${t}`:`${C}-${i.correlationId}.created`),``))throw new f(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:v(n.attributes,i.eventData.changes),updatedAt:x};return await W(V(e,`runs`,C,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await q(B(e,`.locks`,`steps`,t?`${C}-${i.correlationId}.created.${t}`:`${C}-${i.correlationId}.created`),``))throw new f(`Step "${i.correlationId}" already created`);let n=i.eventData;j={runId:C,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:x,updatedAt:x,specVersion:w},await W(V(e,`steps`,`${C}-${i.correlationId}`,t),j)}else if(i.eventType===`step_started`){if(!O&&D){let n=i.eventData;if(await q(B(e,`.locks`,`steps`,t?`${C}-${i.correlationId}.created.${t}`:`${C}-${i.correlationId}.created`),``)){let r={runId:C,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:x,updatedAt:x,specVersion:w};await W(V(e,`steps`,`${C}-${i.correlationId}`,t),r);let a=`evnt_${un()}`,o={eventType:`step_created`,runId:C,eventId:a,createdAt:x,specVersion:w,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}};await W(V(e,`events`,`${C}-${a}`,t),o),O=r,fe=!0}else throw new f(`Step "${i.correlationId}" already created`)}if(O){if(O.retryAfter&&O.retryAfter.getTime()>Date.now())throw new l(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((O.retryAfter.getTime()-Date.now())/1e3)});let n=`${C}-${i.correlationId}`,r=await H(e,`steps`,n,g,t);if(r&&ne(r.status))throw new f(`Cannot modify step in terminal state "${r.status}"`);j={...O,status:`running`,startedAt:O.startedAt??x,attempt:O.attempt+1,retryAfter:void 0,updatedAt:x},await W(V(e,`steps`,n,t),j,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${C}-${i.correlationId}`;if(!await q(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new f(`Cannot modify step in terminal state`);j={...O,status:`completed`,output:n.result,completedAt:x,updatedAt:x},await W(V(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${C}-${i.correlationId}`;if(!await q(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new f(`Cannot modify step in terminal state`);j={...O,status:`failed`,error:n.error,completedAt:x,updatedAt:x},await W(V(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(O){let r=`${C}-${i.correlationId}`;j={...O,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:x},await W(V(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let n=i.eventData,r=sn(e,n.token),s=JSON.stringify({token:n.token,hookId:i.correlationId,runId:C,eventId:o}),c=!1,l=null,u=0,d=0;for(let a=0;a<10&&(await Xn(r)||await Bn(e,n.token,t),c=await q(r,s),!c);a++){if(l=await Xn(r),!l){d++,d>=3&&await K(r);continue}if(l.runId===C&&l.hookId===i.correlationId||!await Zn(e,l,t))break;u++,u<3?await new Promise(e=>setTimeout(e,10)):(await K(r),l.hookId&&(await K(V(e,`hooks`,l.hookId,t)),await K(ln(e,n.token,l.runId,l.hookId)))),l=null}let p=!1;if(!c)if(l?.runId===C&&l.hookId===i.correlationId){let r;if(l.eventId)r=l.eventId;else{let a=await $n(e,C,i.correlationId);if(a!==null)throw await er(e,C,i.correlationId,a,t),new f(`Hook "${i.correlationId}" already created`);let s=await tr(e,n.token,C,i.correlationId,o);if(s===null)throw new f(`Hook "${i.correlationId}" already created`);r=s}o=r;let a=ce(o.replace(/^evnt_/,``))??x;k={...i,runId:C,eventId:o,createdAt:a,specVersion:w},p=!0}else{let e={eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:n.token,...l?{conflictingRunId:l.runId}:{}},runId:C,eventId:o,createdAt:x,specVersion:w};return await oe(e),{event:y(e,a?.resolveData??`all`),run:A,step:j,hook:void 0}}N={runId:C,hookId:i.correlationId,token:n.token,metadata:n.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:k.createdAt,specVersion:w,isWebhook:n.isWebhook??!1,isSystem:n.isSystem??!1},pe=p?{overwrite:!0}:void 0,await yn(e,n.token,C,i.correlationId,o,t)}else if(i.eventType===`hook_disposed`){if(!await q(an(e,i.correlationId,t),``))throw new f(`Hook "${i.correlationId}" already disposed`);let n=V(e,`hooks`,i.correlationId,t),r=await H(e,`hooks`,i.correlationId,M,t);r&&(await cn(e,r.token,r.runId,r.hookId),await K(ln(e,r.token,r.runId,r.hookId))),await K(n),await Sn(e,C,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${C}-${i.correlationId}`;if(!await q(B(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new f(`Wait "${i.correlationId}" already exists`);let r=i.eventData;P={waitId:n,runId:C,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:x,updatedAt:x,specVersion:w},await W(V(e,`waits`,n,t),P)}else if(i.eventType===`wait_completed`){let n=`${C}-${i.correlationId}`,r=B(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await q(r,``))throw new f(`Wait "${i.correlationId}" already completed`);let a=await H(e,`waits`,n,_,t);if(!a)throw await I.unlink(r).catch(()=>{}),new c(`Wait "${i.correlationId}" not found`);P={...a,status:`completed`,completedAt:x,updatedAt:x},await W(V(e,`waits`,n,t),P,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await on(e,i.correlationId,t))throw new d(i.correlationId);let F=V(e,`events`,`${C}-${o}`,t),me=JSON.stringify(k,U,2);if(!await q(F,me))throw i.eventType===`hook_created`&&i.correlationId&&await er(e,C,i.correlationId,o,t),new f(`Event "${o}" already exists for run "${C}"`);E(k,F,me),N&&i.eventType===`hook_created`&&(await xn(e,N.runId,N.hookId,t),await W(V(e,`hooks`,N.hookId,t),N,pe));let he=a?.resolveData??`all`,ge=y(k,he),L,_e,ve;if(i.eventType===`run_started`&&A){let t=await Y({directory:R.join(e,`events`),schema:S,cachedItems:r,filePrefix:`${C}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=t.data,_e=t.cursor,ve=t.hasMore}if(re(i.eventType)&&typeof a?.sinceCursor==`string`){let t=await Y({directory:R.join(e,`events`),schema:S,filePrefix:`${C}-`,sortOrder:`asc`,cursor:a.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=he===`none`?t.data.map(e=>y(e,he)):t.data,_e=t.cursor,ve=t.hasMore}return{event:ge,run:A,step:j,hook:N,wait:P,events:L,cursor:_e,hasMore:ve,...fe?{stepCreated:!0}:{}}}},async get(n,r,i){z(`runId`,n),z(`eventId`,r);let a=await H(e,`events`,`${n}-${r}`,S,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return y(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;z(`runId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:S,cachedItems:r,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>y(e,i))}:a},async listByCorrelationId(t){let n=t.correlationId;z(`correlationId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:S,cachedItems:r,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>y(e,i))}:a}}}function or(e,t){return{get:(async(n,r,i)=>{z(`runId`,n),z(`stepId`,r);let a=await H(e,`steps`,`${n}-${r}`,g,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Mn(a,i?.resolveData??`all`)}),list:(async t=>{z(`runId`,t.runId);let n=t.resolveData??`all`,r=await Y({directory:R.join(e,`steps`),schema:g,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function sr(e,t){let n=qn(e,t),r=or(e,t),i=ar(e,t),a=Hn(e,t);return{runs:Kt(`world.runs`,n),steps:Kt(`world.steps`,r),events:Kt(`world.events`,i),hooks:Kt(`world.hooks`,a),clearCache:()=>i.clearCache()}}const cr=A(()=>Math.random()),lr=E({streams:T(k())});function ur(e){return e===1}function dr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function fr(e){return ur(e[0])}function pr(e){return{eof:fr(e),chunk:Buffer.from(e.subarray(1))}}async function mr(e){try{return await I.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function hr(e,t,n,r=n,i=()=>!0){for(let a of t){if(!a.endsWith(n))continue;let t=a.slice(0,-n.length);i(t)&&e.set(t,r)}}function gr(e,t){return z(`streamName`,t),R.join(e,t)}async function _r(e,t,n){let r=gr(e,t),i=await mr(r),a=new Map;return hr(a,i,`.json`),hr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&hr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function vr(e,t){let n=t?`.${t}`:``,r=new we,i=new Set;async function a(n,r){z(`runId`,n),z(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=V(e,`streams/runs`,n,t),s=(await H(e,`streams/runs`,n,lr,t))?.streams??[];s.includes(r)||(s.push(r),await W(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${cr()}`;await a(await t,i);let l=o(s),u=dr({chunk:l,eof:!1});await ot(R.join(gr(R.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${cr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=dr({chunk:t,eof:!1});return await ot(R.join(gr(R.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${cr()}`;await a(await t,i),await ot(R.join(gr(R.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),dr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return z(`runId`,n),(await H(e,`streams/runs`,n,lr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await _r(R.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=R.join(c,`${e}${t}`);if(f<l){if(ur(await ct(n))){u=!0;break}f++;continue}if(d.length>=a){ur(await ct(n))?u=!0:f++;break}let r=pr(await st(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await _r(R.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(ur(await ct(R.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=R.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await _r(o,i,t),v=h.length;if(typeof a==`number`&&a<0&&h.length>0){let e=h[h.length-1],t=g.get(e)??`.bin`;ur(await ct(R.join(_,`${e}${t}`)))&&v--}let y=typeof a==`number`&&a<0?Math.max(0,v+a):a,b=!1;for(let t=y;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=pr(await st(R.join(_,`${r}${a}`)));if(o?.eof===!0){b=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(b){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<y&&e<h.length;e++)n.add(h[e]);if(l){s();return}let x=!1;c=setInterval(async()=>{if(!x){x=!0;try{let{files:r,extMap:a}=await _r(o,i,t);for(let t of r){let r=t;if(n.has(r))continue;n.add(r);let i=a.get(t)??`.bin`,o=pr(await st(R.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function yr(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Be.value,...t},r=n.tag,i=nn(n),{clearCache:a,...o}=sr(n.dataDir,r),s=n.recoverActiveRuns??!0;return{specVersion:5,...i,...o,...Kt(`world.streams`,{...vr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Tt(n.dataDir),!s)return;let e=r?e=>$e(e,r):et;await j({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=R.join(e,`hooks`),i=await tt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-DnBjuNAZ.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await G(R.join(t,n),a);r?.token&&(await K(R.join(t,`tokens`,`${rn(r.token)}.json`)),await K(ln(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=R.join(e,t),i=await tt(n,r);await Promise.all(i.map(e=>K(R.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=R.join(e,`hooks`,t),i;try{i=await F.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(n,e.name),i=await tt(t,r);await Promise.all(i.map(e=>K(R.join(t,e))))}))}await F.rm(R.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=R.join(e,`streams`,`chunks`),s;try{s=await F.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(o,e.name),n=await nt(t,r,`.bin`);await Promise.all(n.map(e=>F.unlink(R.join(t,e)).catch(()=>{})))})),Xe()}else Xe(),En(),await ye(n.dataDir,{recursive:!0,force:!0}),await Tt(n.dataDir)}}}function br(e){return yr(e)}export{ht as DataDirAccessError,gt as DataDirVersionError,br as createLocalWorld,yr as createWorld,xt as ensureDataDir,Tt as initDataDir,_t as parseVersion};
|