stitchkit 0.59.3 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +14 -4
  2. package/dist/agent-runtime/admission-lanes.d.ts +35 -0
  3. package/dist/agent-runtime/admission-lanes.d.ts.map +1 -0
  4. package/dist/agent-runtime/coordinator.d.ts +36 -2
  5. package/dist/agent-runtime/coordinator.d.ts.map +1 -1
  6. package/dist/agent-runtime/events.d.ts +7 -0
  7. package/dist/agent-runtime/events.d.ts.map +1 -1
  8. package/dist/agent-runtime/history.d.ts +7 -0
  9. package/dist/agent-runtime/history.d.ts.map +1 -1
  10. package/dist/agent-runtime/models.d.ts +2 -3
  11. package/dist/agent-runtime/models.d.ts.map +1 -1
  12. package/dist/agent-runtime/observability.d.ts.map +1 -1
  13. package/dist/agent-runtime/run-execution.d.ts +31 -0
  14. package/dist/agent-runtime/run-execution.d.ts.map +1 -0
  15. package/dist/agent-runtime/runtime-internals.d.ts +25 -0
  16. package/dist/agent-runtime/runtime-internals.d.ts.map +1 -0
  17. package/dist/agent-runtime/runtime-result.d.ts +11 -0
  18. package/dist/agent-runtime/runtime-result.d.ts.map +1 -0
  19. package/dist/agent-runtime/runtime.d.ts +16 -15
  20. package/dist/agent-runtime/runtime.d.ts.map +1 -1
  21. package/dist/agent-runtime/schemas.d.ts.map +1 -1
  22. package/dist/agent-runtime/store-driver.d.ts.map +1 -1
  23. package/dist/agent-runtime/store.d.ts +9 -2
  24. package/dist/agent-runtime/store.d.ts.map +1 -1
  25. package/dist/agent-runtime/terminal-commit.d.ts.map +1 -1
  26. package/dist/agent-runtime/terminal-status.d.ts +13 -0
  27. package/dist/agent-runtime/terminal-status.d.ts.map +1 -0
  28. package/dist/agent-runtime.d.ts +5 -3
  29. package/dist/agent-runtime.d.ts.map +1 -1
  30. package/dist/agent-runtime.js +211 -156
  31. package/dist/application/activity.d.ts +7 -2
  32. package/dist/application/activity.d.ts.map +1 -1
  33. package/dist/application/grammy.d.ts +6 -0
  34. package/dist/application/grammy.d.ts.map +1 -1
  35. package/dist/application/health.d.ts +20 -1
  36. package/dist/application/health.d.ts.map +1 -1
  37. package/dist/application/kernel.d.ts +49 -3
  38. package/dist/application/kernel.d.ts.map +1 -1
  39. package/dist/application/opentelemetry.d.ts +25 -0
  40. package/dist/application/opentelemetry.d.ts.map +1 -0
  41. package/dist/application/schemas.d.ts +42 -0
  42. package/dist/application/schemas.d.ts.map +1 -1
  43. package/dist/application-opentelemetry.d.ts +2 -0
  44. package/dist/application-opentelemetry.d.ts.map +1 -0
  45. package/dist/application-opentelemetry.js +248 -0
  46. package/dist/application.d.ts +4 -4
  47. package/dist/application.d.ts.map +1 -1
  48. package/dist/application.js +69 -1243
  49. package/dist/cli.js +6 -6
  50. package/dist/contract/errors.d.ts +6 -0
  51. package/dist/contract/errors.d.ts.map +1 -1
  52. package/dist/contract/index.js +1 -1
  53. package/dist/declaration.d.ts +345 -0
  54. package/dist/declaration.d.ts.map +1 -0
  55. package/dist/declaration.js +183 -0
  56. package/dist/index-1zencgcb.js +651 -0
  57. package/dist/{index-sa2mbwa7.js → index-2akar0rq.js} +2 -2
  58. package/dist/{index-41wm56v0.js → index-3hn10n4c.js} +1 -1
  59. package/dist/{index-f6pymtqe.js → index-3w74r08v.js} +2 -2
  60. package/dist/{index-7c0gkyvj.js → index-6fbp58g8.js} +2 -2
  61. package/dist/{index-gnvzyw0k.js → index-8es1hrv4.js} +2 -2
  62. package/dist/index-8eywc9zv.js +100 -0
  63. package/dist/{index-3nwng7hs.js → index-8pc5s3pz.js} +4 -4
  64. package/dist/{index-28cqssm3.js → index-9h1vba8n.js} +6 -0
  65. package/dist/{index-0nc0cddp.js → index-a59da114.js} +17 -28
  66. package/dist/{index-0tszzfxp.js → index-f7521k0x.js} +25 -19
  67. package/dist/{index-y2rb7dwx.js → index-pzyt11ch.js} +5 -1
  68. package/dist/{index-mr617n62.js → index-svqhcrrj.js} +1 -1
  69. package/dist/{index-ps5pxp3h.js → index-v6e8hnkx.js} +7 -1
  70. package/dist/{index-1tkyng3g.js → index-vkk06pv1.js} +1 -9
  71. package/dist/index-x8v8b7rc.js +560 -0
  72. package/dist/index.js +1 -1
  73. package/dist/internal/observability-sink.d.ts.map +1 -1
  74. package/dist/internal/route-pattern.d.ts +9 -0
  75. package/dist/internal/route-pattern.d.ts.map +1 -1
  76. package/dist/node.d.ts +1 -1
  77. package/dist/node.d.ts.map +1 -1
  78. package/dist/node.js +12 -12
  79. package/dist/observability/index.js +5 -5
  80. package/dist/observability/sanitize.d.ts +3 -1
  81. package/dist/observability/sanitize.d.ts.map +1 -1
  82. package/dist/remote.js +3 -3
  83. package/dist/server/error-hook.d.ts +10 -3
  84. package/dist/server/error-hook.d.ts.map +1 -1
  85. package/dist/server/index.d.ts +1 -1
  86. package/dist/server/index.d.ts.map +1 -1
  87. package/dist/server/index.js +16 -19
  88. package/dist/server/middleware/cors.d.ts +5 -2
  89. package/dist/server/middleware/cors.d.ts.map +1 -1
  90. package/dist/server/openapi.d.ts.map +1 -1
  91. package/dist/server/router.d.ts.map +1 -1
  92. package/dist/server/socket-io-config.d.ts +68 -3
  93. package/dist/server/socket-io-config.d.ts.map +1 -1
  94. package/dist/server/socket-io-node.d.ts +1 -1
  95. package/dist/server/socket-io-node.d.ts.map +1 -1
  96. package/dist/server/socket-io.d.ts +1 -1
  97. package/dist/server/socket-io.d.ts.map +1 -1
  98. package/dist/testing/managed-resource-conformance-contract.d.ts +114 -0
  99. package/dist/testing/managed-resource-conformance-contract.d.ts.map +1 -0
  100. package/dist/testing/managed-resource-conformance-driver.d.ts +20 -0
  101. package/dist/testing/managed-resource-conformance-driver.d.ts.map +1 -0
  102. package/dist/testing/managed-resource-conformance-scenarios.d.ts +33 -0
  103. package/dist/testing/managed-resource-conformance-scenarios.d.ts.map +1 -0
  104. package/dist/testing/managed-resource-conformance.d.ts +5 -0
  105. package/dist/testing/managed-resource-conformance.d.ts.map +1 -0
  106. package/dist/testing/surface-manifest.d.ts.map +1 -1
  107. package/dist/testing.d.ts +1 -0
  108. package/dist/testing.d.ts.map +1 -1
  109. package/dist/testing.js +664 -78
  110. package/dist/tools/flatten-join.d.ts +2 -0
  111. package/dist/tools/flatten-join.d.ts.map +1 -1
  112. package/dist/tools/flatten.d.ts.map +1 -1
  113. package/dist/tools/mcp-prepare.d.ts +0 -2
  114. package/dist/tools/mcp-prepare.d.ts.map +1 -1
  115. package/dist/tools/runtime-tool.d.ts +0 -3
  116. package/dist/tools/runtime-tool.d.ts.map +1 -1
  117. package/dist/tools/schema.d.ts +0 -4
  118. package/dist/tools/schema.d.ts.map +1 -1
  119. package/dist/tools.js +9 -9
  120. package/llms-full.txt +1212 -67
  121. package/llms.txt +2 -0
  122. package/package.json +16 -3
@@ -0,0 +1,560 @@
1
+ import {
2
+ ApplicationIdSchema
3
+ } from "./index-8eywc9zv.js";
4
+
5
+ // src/application/latest-sink.ts
6
+ import { z } from "zod";
7
+ var SnapshotRevisionSchema = z.number().int().nonnegative();
8
+ var ApplicationSnapshotSinkStatusSchema = z.object({
9
+ accepting: z.boolean(),
10
+ received: z.number().int().nonnegative(),
11
+ accepted: z.number().int().nonnegative(),
12
+ rejected: z.number().int().nonnegative(),
13
+ delivered: z.number().int().nonnegative(),
14
+ coalesced: z.number().int().nonnegative(),
15
+ failed: z.number().int().nonnegative(),
16
+ inFlight: z.boolean(),
17
+ pending: z.boolean(),
18
+ lastAcceptedRevision: SnapshotRevisionSchema.optional(),
19
+ lastDeliveredRevision: SnapshotRevisionSchema.optional()
20
+ }).strict().readonly();
21
+ function createApplicationSnapshotSink(config) {
22
+ let accepting = true;
23
+ let received = 0;
24
+ let accepted = 0;
25
+ let rejected = 0;
26
+ let delivered = 0;
27
+ let coalesced = 0;
28
+ let failed = 0;
29
+ let lastAcceptedRevision;
30
+ let lastDeliveredRevision;
31
+ let inFlight;
32
+ let pending;
33
+ let closePromise;
34
+ let resolveClose;
35
+ const getStatus = () => ApplicationSnapshotSinkStatusSchema.parse({
36
+ accepting,
37
+ received,
38
+ accepted,
39
+ rejected,
40
+ delivered,
41
+ coalesced,
42
+ failed,
43
+ inFlight: inFlight !== undefined,
44
+ pending: pending !== undefined,
45
+ ...lastAcceptedRevision !== undefined && { lastAcceptedRevision },
46
+ ...lastDeliveredRevision !== undefined && { lastDeliveredRevision }
47
+ });
48
+ const reportFailure = (error, snapshot) => {
49
+ if (!config.onSinkError)
50
+ return;
51
+ Promise.resolve().then(() => config.onSinkError?.({ error, snapshot })).catch(() => {
52
+ return;
53
+ });
54
+ };
55
+ const settleCloseIfIdle = () => {
56
+ if (accepting || inFlight || pending || !resolveClose)
57
+ return;
58
+ const resolve = resolveClose;
59
+ resolveClose = undefined;
60
+ resolve(getStatus());
61
+ };
62
+ const startWrite = (snapshot) => {
63
+ const write = Promise.resolve().then(() => config.write(snapshot)).then(() => {
64
+ delivered += 1;
65
+ lastDeliveredRevision = snapshot.revision;
66
+ }).catch((error) => {
67
+ failed += 1;
68
+ reportFailure(error, snapshot);
69
+ }).finally(() => {
70
+ inFlight = undefined;
71
+ const next = pending;
72
+ pending = undefined;
73
+ if (next)
74
+ startWrite(next);
75
+ else
76
+ settleCloseIfIdle();
77
+ });
78
+ inFlight = write;
79
+ };
80
+ return {
81
+ publish(snapshot) {
82
+ received += 1;
83
+ const revision = SnapshotRevisionSchema.parse(snapshot.revision);
84
+ if (!accepting || lastAcceptedRevision !== undefined && revision <= lastAcceptedRevision) {
85
+ rejected += 1;
86
+ return false;
87
+ }
88
+ accepted += 1;
89
+ lastAcceptedRevision = revision;
90
+ if (!inFlight) {
91
+ startWrite(snapshot);
92
+ } else {
93
+ if (pending)
94
+ coalesced += 1;
95
+ pending = snapshot;
96
+ }
97
+ return true;
98
+ },
99
+ getStatus,
100
+ close() {
101
+ if (closePromise)
102
+ return closePromise;
103
+ accepting = false;
104
+ closePromise = new Promise((resolve) => {
105
+ resolveClose = resolve;
106
+ settleCloseIfIdle();
107
+ });
108
+ return closePromise;
109
+ }
110
+ };
111
+ }
112
+
113
+ // src/application/activity.ts
114
+ import { z as z2 } from "zod";
115
+ var BoundedOperationalIdSchema = z2.string().min(1).max(64).regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]*$/);
116
+ var NonNegativeIntegerSchema = z2.number().int().nonnegative();
117
+ var ActivityIdSchema = BoundedOperationalIdSchema;
118
+ var ActivityStageIdSchema = BoundedOperationalIdSchema;
119
+ var ActivityStageSnapshotSchema = z2.object({
120
+ id: ActivityStageIdSchema,
121
+ active: NonNegativeIntegerSchema,
122
+ queued: NonNegativeIntegerSchema,
123
+ completed: NonNegativeIntegerSchema,
124
+ failed: NonNegativeIntegerSchema
125
+ }).strict().readonly();
126
+ var ActivityTotalsSchema = z2.object({
127
+ active: NonNegativeIntegerSchema,
128
+ queued: NonNegativeIntegerSchema,
129
+ completed: NonNegativeIntegerSchema,
130
+ failed: NonNegativeIntegerSchema
131
+ }).strict().readonly();
132
+ var ActivitySnapshotSchema = z2.object({
133
+ id: ActivityIdSchema,
134
+ epoch: z2.string().uuid(),
135
+ revision: NonNegativeIntegerSchema,
136
+ capturedAt: z2.string().datetime({ offset: true }),
137
+ changedAt: z2.string().datetime({ offset: true }),
138
+ stages: z2.array(ActivityStageSnapshotSchema).min(1).max(64).readonly(),
139
+ totals: ActivityTotalsSchema
140
+ }).strict().readonly();
141
+ var ActivityLiveStateSchema = z2.enum(["active", "queued"]);
142
+ var ActivityTokenBrand = Symbol("stitchkit.application.activity");
143
+ function emptyCounters() {
144
+ return { active: 0, queued: 0, completed: 0, failed: 0 };
145
+ }
146
+ function totalsOf(stages) {
147
+ return stages.reduce((totals, stage) => ({
148
+ active: totals.active + stage.active,
149
+ queued: totals.queued + stage.queued,
150
+ completed: totals.completed + stage.completed,
151
+ failed: totals.failed + stage.failed
152
+ }), emptyCounters());
153
+ }
154
+ function createActivityProjection(config) {
155
+ const id = ActivityIdSchema.parse(config.id);
156
+ const declaredStages = z2.array(ActivityStageIdSchema).min(1).max(64).parse(config.stages);
157
+ const uniqueStages = new Set(declaredStages);
158
+ if (uniqueStages.size !== declaredStages.length) {
159
+ throw new Error("[stitchkit] createActivityProjection: stage ids must be unique");
160
+ }
161
+ const epoch = z2.string().uuid().parse(config.epoch ?? crypto.randomUUID());
162
+ const now = config.now ?? (() => new Date);
163
+ const counters = new Map(declaredStages.map((stage) => [stage, emptyCounters()]));
164
+ const activities = new WeakMap;
165
+ const subscribers = new Set;
166
+ let revision = 0;
167
+ let changedAt = now().toISOString();
168
+ const countersFor = (stage) => {
169
+ const value = counters.get(stage);
170
+ if (!value) {
171
+ throw new Error(`[stitchkit] createActivityProjection: undeclared stage "${stage}"`);
172
+ }
173
+ return value;
174
+ };
175
+ const getSnapshot = () => {
176
+ const stages = declaredStages.map((stage) => ({ id: stage, ...countersFor(stage) }));
177
+ return ActivitySnapshotSchema.parse({
178
+ id,
179
+ epoch,
180
+ revision,
181
+ capturedAt: now().toISOString(),
182
+ changedAt,
183
+ stages,
184
+ totals: totalsOf(stages)
185
+ });
186
+ };
187
+ const publishChange = () => {
188
+ revision += 1;
189
+ changedAt = now().toISOString();
190
+ const snapshot = getSnapshot();
191
+ for (const subscriber of subscribers)
192
+ subscriber.publish(snapshot);
193
+ };
194
+ const requireActivity = (token) => {
195
+ const activity = activities.get(token);
196
+ if (!activity) {
197
+ throw new Error("[stitchkit] activity token belongs to another projection");
198
+ }
199
+ return activity;
200
+ };
201
+ const leaveLiveState = (activity) => {
202
+ if (activity.state === "active" || activity.state === "queued") {
203
+ countersFor(activity.stage)[activity.state] -= 1;
204
+ }
205
+ };
206
+ const settle = (token, terminal) => {
207
+ const activity = requireActivity(token);
208
+ if (activity.state === "completed" || activity.state === "failed")
209
+ return false;
210
+ leaveLiveState(activity);
211
+ countersFor(activity.stage)[terminal] += 1;
212
+ activity.state = terminal;
213
+ publishChange();
214
+ return true;
215
+ };
216
+ return {
217
+ open(stage, rawState = "active") {
218
+ const parsedStage = ActivityStageIdSchema.parse(stage);
219
+ const state = ActivityLiveStateSchema.parse(rawState);
220
+ countersFor(parsedStage)[state] += 1;
221
+ const token = Object.freeze({
222
+ get [ActivityTokenBrand]() {
223
+ return true;
224
+ }
225
+ });
226
+ activities.set(token, { stage: parsedStage, state });
227
+ publishChange();
228
+ return token;
229
+ },
230
+ transition(token, input) {
231
+ const activity = requireActivity(token);
232
+ if (activity.state === "completed" || activity.state === "failed") {
233
+ throw new Error("[stitchkit] cannot transition a terminal activity");
234
+ }
235
+ const stage = ActivityStageIdSchema.parse(input.stage);
236
+ const state = ActivityLiveStateSchema.parse(input.state);
237
+ countersFor(stage);
238
+ if (activity.stage === stage && activity.state === state)
239
+ return false;
240
+ leaveLiveState(activity);
241
+ countersFor(stage)[state] += 1;
242
+ activity.stage = stage;
243
+ activity.state = state;
244
+ publishChange();
245
+ return true;
246
+ },
247
+ complete: (token) => settle(token, "completed"),
248
+ fail: (token) => settle(token, "failed"),
249
+ getSnapshot,
250
+ subscribe(listener) {
251
+ const sink = createApplicationSnapshotSink({
252
+ write: listener,
253
+ ...config.onSubscriberError && { onSinkError: config.onSubscriberError }
254
+ });
255
+ subscribers.add(sink);
256
+ sink.publish(getSnapshot());
257
+ return () => {
258
+ subscribers.delete(sink);
259
+ sink.close();
260
+ };
261
+ }
262
+ };
263
+ }
264
+
265
+ // src/application/schedule.ts
266
+ import { z as z3 } from "zod";
267
+ var NonNegativeSafeIntegerSchema = z3.number().int().nonnegative().refine(Number.isSafeInteger, "Expected a safe integer");
268
+ var PositiveSafeIntegerSchema = NonNegativeSafeIntegerSchema.refine((value) => value > 0, "Expected a positive integer");
269
+ var ManagedScheduleOverlapSchema = z3.discriminatedUnion("mode", [
270
+ z3.object({ mode: z3.literal("skip") }).readonly(),
271
+ z3.object({ mode: z3.literal("queue-one") }).readonly(),
272
+ z3.object({
273
+ mode: z3.literal("parallel"),
274
+ maxConcurrent: PositiveSafeIntegerSchema
275
+ }).readonly()
276
+ ]);
277
+ var ManagedScheduleErrorPolicySchema = z3.enum(["continue", "stop-schedule"]);
278
+ var ManagedScheduleDescriptorSchema = z3.object({
279
+ id: ApplicationIdSchema,
280
+ everyMs: PositiveSafeIntegerSchema,
281
+ startAfterMs: NonNegativeSafeIntegerSchema,
282
+ overlap: ManagedScheduleOverlapSchema,
283
+ errorPolicy: ManagedScheduleErrorPolicySchema
284
+ }).readonly();
285
+ var ManagedScheduleStatusSchema = z3.object({
286
+ descriptor: ManagedScheduleDescriptorSchema,
287
+ state: z3.enum(["inactive", "scheduled", "running", "draining", "stopped"]),
288
+ revision: NonNegativeSafeIntegerSchema,
289
+ capturedAt: z3.string().datetime({ offset: true }),
290
+ changedAt: z3.string().datetime({ offset: true }),
291
+ accepting: z3.boolean(),
292
+ active: NonNegativeSafeIntegerSchema,
293
+ queued: z3.boolean(),
294
+ runsStarted: NonNegativeSafeIntegerSchema,
295
+ runsCompleted: NonNegativeSafeIntegerSchema,
296
+ runsFailed: NonNegativeSafeIntegerSchema,
297
+ ticksSkipped: NonNegativeSafeIntegerSchema,
298
+ nextRunAt: z3.string().datetime({ offset: true }).nullable(),
299
+ lastScheduledAt: z3.string().datetime({ offset: true }).nullable(),
300
+ lastStartedAt: z3.string().datetime({ offset: true }).nullable(),
301
+ lastFinishedAt: z3.string().datetime({ offset: true }).nullable()
302
+ }).readonly();
303
+ var systemClock = {
304
+ now: () => performance.now(),
305
+ wallNow: () => new Date,
306
+ schedule(callback, delayMs) {
307
+ const timer = setTimeout(callback, delayMs);
308
+ return { cancel: () => clearTimeout(timer) };
309
+ }
310
+ };
311
+ var DEFAULT_OVERLAP = { mode: "skip" };
312
+ function createManagedSchedule(config) {
313
+ const descriptor = ManagedScheduleDescriptorSchema.parse({
314
+ id: config.id,
315
+ everyMs: config.everyMs,
316
+ startAfterMs: config.startAfterMs ?? config.everyMs,
317
+ overlap: config.overlap ?? DEFAULT_OVERLAP,
318
+ errorPolicy: config.errorPolicy ?? "continue"
319
+ });
320
+ const dependsOn = config.dependsOn?.map((id) => ApplicationIdSchema.parse(id));
321
+ const clock = config.clock ?? systemClock;
322
+ let revision = 0;
323
+ let accepting = false;
324
+ let activated = false;
325
+ let stopped = false;
326
+ let timer = null;
327
+ let activationContext = null;
328
+ let nextRunAt = null;
329
+ let queuedAt = null;
330
+ let runsStarted = 0;
331
+ let runsCompleted = 0;
332
+ let runsFailed = 0;
333
+ let ticksSkipped = 0;
334
+ let lastScheduledAt = null;
335
+ let lastStartedAt = null;
336
+ let lastFinishedAt = null;
337
+ let changedAt = clock.wallNow().toISOString();
338
+ const active = new Set;
339
+ const changed = () => {
340
+ revision += 1;
341
+ changedAt = clock.wallNow().toISOString();
342
+ };
343
+ const cancelFuture = () => {
344
+ timer?.cancel();
345
+ timer = null;
346
+ nextRunAt = null;
347
+ queuedAt = null;
348
+ };
349
+ const stopAdmission = () => {
350
+ if (!accepting && stopped)
351
+ return;
352
+ accepting = false;
353
+ stopped = true;
354
+ cancelFuture();
355
+ changed();
356
+ };
357
+ const reportError = (error, context) => {
358
+ if (!config.onError)
359
+ return;
360
+ Promise.resolve().then(() => config.onError?.(error, context)).catch(() => {});
361
+ };
362
+ const state = () => {
363
+ if (!activated)
364
+ return stopped ? "stopped" : "inactive";
365
+ if (!accepting)
366
+ return active.size > 0 ? "draining" : "stopped";
367
+ return active.size > 0 ? "running" : "scheduled";
368
+ };
369
+ const wallAt = (monotonicAt, anchor) => {
370
+ if (monotonicAt === null)
371
+ return null;
372
+ return new Date(anchor.wallNow + monotonicAt - anchor.monotonicNow).toISOString();
373
+ };
374
+ const status = () => {
375
+ const captured = clock.wallNow();
376
+ const anchor = { monotonicNow: clock.now(), wallNow: captured.getTime() };
377
+ return ManagedScheduleStatusSchema.parse({
378
+ descriptor,
379
+ state: state(),
380
+ revision,
381
+ capturedAt: captured.toISOString(),
382
+ changedAt,
383
+ accepting,
384
+ active: active.size,
385
+ queued: queuedAt !== null,
386
+ runsStarted,
387
+ runsCompleted,
388
+ runsFailed,
389
+ ticksSkipped,
390
+ nextRunAt: wallAt(nextRunAt, anchor),
391
+ lastScheduledAt,
392
+ lastStartedAt,
393
+ lastFinishedAt
394
+ });
395
+ };
396
+ let startExecution = () => {
397
+ return;
398
+ };
399
+ const settleExecution = () => {
400
+ if (!accepting || queuedAt === null || active.size !== 0)
401
+ return;
402
+ const successorAt = queuedAt;
403
+ queuedAt = null;
404
+ changed();
405
+ startExecution(successorAt);
406
+ };
407
+ startExecution = (scheduledAt) => {
408
+ const resourceContext = activationContext;
409
+ if (!accepting || !resourceContext)
410
+ return;
411
+ const startedAt = clock.now();
412
+ const wallStartedAt = clock.wallNow().getTime();
413
+ const runContext = {
414
+ applicationId: resourceContext.applicationId,
415
+ signal: resourceContext.signal,
416
+ scheduledAt,
417
+ startedAt,
418
+ now: () => clock.now()
419
+ };
420
+ runsStarted += 1;
421
+ lastScheduledAt = new Date(wallStartedAt + scheduledAt - startedAt).toISOString();
422
+ lastStartedAt = new Date(wallStartedAt).toISOString();
423
+ changed();
424
+ let tracked;
425
+ tracked = Promise.resolve().then(() => config.run(runContext)).then(() => {
426
+ runsCompleted += 1;
427
+ lastFinishedAt = clock.wallNow().toISOString();
428
+ if (descriptor.errorPolicy === "continue" && accepting) {
429
+ resourceContext.reportHealth("healthy");
430
+ }
431
+ }, (error) => {
432
+ runsFailed += 1;
433
+ lastFinishedAt = clock.wallNow().toISOString();
434
+ reportError(error, runContext);
435
+ if (descriptor.errorPolicy === "stop-schedule") {
436
+ resourceContext.reportHealth("unhealthy");
437
+ stopAdmission();
438
+ } else {
439
+ resourceContext.reportHealth("degraded");
440
+ }
441
+ }).finally(() => {
442
+ active.delete(tracked);
443
+ changed();
444
+ settleExecution();
445
+ });
446
+ active.add(tracked);
447
+ };
448
+ const dispatchTick = (scheduledAt) => {
449
+ if (!accepting)
450
+ return;
451
+ if (descriptor.overlap.mode === "skip") {
452
+ if (active.size > 0) {
453
+ ticksSkipped += 1;
454
+ changed();
455
+ return;
456
+ }
457
+ startExecution(scheduledAt);
458
+ return;
459
+ }
460
+ if (descriptor.overlap.mode === "queue-one") {
461
+ if (active.size > 0) {
462
+ queuedAt = scheduledAt;
463
+ changed();
464
+ return;
465
+ }
466
+ startExecution(scheduledAt);
467
+ return;
468
+ }
469
+ if (active.size >= descriptor.overlap.maxConcurrent) {
470
+ ticksSkipped += 1;
471
+ changed();
472
+ return;
473
+ }
474
+ startExecution(scheduledAt);
475
+ };
476
+ const arm = () => {
477
+ if (!accepting || nextRunAt === null)
478
+ return;
479
+ const delayMs = Math.max(0, nextRunAt - clock.now());
480
+ timer = clock.schedule(() => {
481
+ timer = null;
482
+ if (!accepting || nextRunAt === null)
483
+ return;
484
+ const scheduledAt = nextRunAt;
485
+ const observedAt = clock.now();
486
+ const elapsedIntervals = Math.max(1, Math.floor((observedAt - scheduledAt) / descriptor.everyMs) + 1);
487
+ if (elapsedIntervals > 1) {
488
+ ticksSkipped += elapsedIntervals - 1;
489
+ changed();
490
+ }
491
+ nextRunAt = scheduledAt + elapsedIntervals * descriptor.everyMs;
492
+ arm();
493
+ dispatchTick(scheduledAt);
494
+ }, delayMs);
495
+ };
496
+ const waitForActive = async (context, deadlineAt) => {
497
+ if (active.size === 0 || context.signal.aborted)
498
+ return;
499
+ await new Promise((resolve) => {
500
+ let settled = false;
501
+ let deadlineTimer = null;
502
+ const finish = () => {
503
+ if (settled)
504
+ return;
505
+ settled = true;
506
+ deadlineTimer?.cancel();
507
+ context.signal.removeEventListener("abort", finish);
508
+ resolve();
509
+ };
510
+ context.signal.addEventListener("abort", finish, { once: true });
511
+ if (deadlineAt !== undefined) {
512
+ deadlineTimer = clock.schedule(finish, Math.max(0, deadlineAt - context.now()));
513
+ }
514
+ Promise.allSettled([...active]).then(finish);
515
+ });
516
+ };
517
+ const drain = async (context) => {
518
+ stopAdmission();
519
+ await waitForActive(context, context.deadlineAt);
520
+ };
521
+ return {
522
+ id: descriptor.id,
523
+ ...dependsOn && { dependsOn },
524
+ ...config.required !== undefined && { required: config.required },
525
+ get status() {
526
+ return status();
527
+ },
528
+ start() {
529
+ if (stopped)
530
+ throw new Error(`[stitchkit] schedule "${descriptor.id}" is stopped`);
531
+ },
532
+ activate(context) {
533
+ if (activated || stopped)
534
+ return;
535
+ activated = true;
536
+ accepting = true;
537
+ activationContext = context;
538
+ nextRunAt = clock.now() + descriptor.startAfterMs;
539
+ context.reportHealth("healthy");
540
+ changed();
541
+ arm();
542
+ },
543
+ stopAdmission() {
544
+ stopAdmission();
545
+ },
546
+ drain,
547
+ close() {
548
+ stopAdmission();
549
+ },
550
+ async force(context) {
551
+ stopAdmission();
552
+ await waitForActive(context, context.forceDeadlineAt);
553
+ if (active.size > 0) {
554
+ throw new Error(`[stitchkit] schedule "${descriptor.id}" still has active executions`);
555
+ }
556
+ }
557
+ };
558
+ }
559
+
560
+ export { ApplicationSnapshotSinkStatusSchema, createApplicationSnapshotSink, ActivityIdSchema, ActivityStageIdSchema, ActivityStageSnapshotSchema, ActivitySnapshotSchema, ActivityLiveStateSchema, ActivityTokenBrand, createActivityProjection, ManagedScheduleOverlapSchema, ManagedScheduleErrorPolicySchema, ManagedScheduleDescriptorSchema, ManagedScheduleStatusSchema, createManagedSchedule };
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ import {
19
19
  parseTrailingWildcard,
20
20
  rateLimited,
21
21
  unauthorized
22
- } from "./index-28cqssm3.js";
22
+ } from "./index-9h1vba8n.js";
23
23
  import {
24
24
  isRecord,
25
25
  mapObject,
@@ -1 +1 @@
1
- {"version":3,"file":"observability-sink.d.ts","sourceRoot":"","sources":["../../src/internal/observability-sink.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,eAAe,CAAC,KAAK;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,kBAAkB,CAAC,KAAK;IACvC,MAAM,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,SAAS,IAAI,uBAAuB,CAAC;IACrC,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC3C;AAaD,wBAAgB,wBAAwB,CAAC,KAAK,EAC5C,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAC/B,kBAAkB,CAAC,KAAK,CAAC,CAuI3B"}
1
+ {"version":3,"file":"observability-sink.d.ts","sourceRoot":"","sources":["../../src/internal/observability-sink.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,eAAe,CAAC,KAAK;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,kBAAkB,CAAC,KAAK;IACvC,MAAM,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,SAAS,IAAI,uBAAuB,CAAC;IACrC,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC3C;AAaD,wBAAgB,wBAAwB,CAAC,KAAK,EAC5C,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAC/B,kBAAkB,CAAC,KAAK,CAAC,CA8H3B"}
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Join route parts into one absolute path, tolerating stray slashes on either
3
+ * side of every part.
4
+ *
5
+ * One home rather than three. The router, the OpenAPI generator and the surface
6
+ * manifest each carried a byte-identical copy, and a route path that all three
7
+ * must agree on is exactly the thing that must not be computed three ways.
8
+ */
9
+ export declare function joinRoutePath(...parts: Array<string | undefined>): string;
1
10
  export interface TrailingWildcard {
2
11
  name: string;
3
12
  segmentIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"route-pattern.d.ts","sourceRoot":"","sources":["../../src/internal/route-pattern.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA2C3E"}
1
+ {"version":3,"file":"route-pattern.d.ts","sourceRoot":"","sources":["../../src/internal/route-pattern.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAOzE;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA2C3E"}
package/dist/node.d.ts CHANGED
@@ -12,6 +12,6 @@ export { type NodeRuntimeServer, type NodeServerConfig, type NodeServerHandle, t
12
12
  export { bindProcessSignals, type ProcessSignalName, type ProcessSignalsBinding, type ProcessSignalsErrorPhase, type ProcessSignalsOptions, type ShutdownTarget, type SignalSource, } from './server/process-signals';
13
13
  export { bindRealtimeServer, type RealtimeServer, type RealtimeServerConnection, type RealtimeServerHandle, } from './server/realtime';
14
14
  export { type ManagedServerHandle, type ShutdownOptions, ShutdownOptionsSchema, type ShutdownResult, ShutdownResultSchema, type ShutdownState, ShutdownStateSchema, type ShutdownStatus, ShutdownStatusSchema, } from './server/shutdown';
15
- export { createNodeSocketIOServer as createSocketIOServer, type NodeSocketIOServerHandle as SocketIOServerHandle, type SocketIOHandshakeConfig, type SocketIORequestPolicy, type SocketIOServerConfig, } from './server/socket-io-node';
15
+ export { createNodeSocketIOServer as createSocketIOServer, type NodeSocketIOServerHandle as SocketIOServerHandle, type SocketIOHandshakeConfig, type SocketIOPeerLoaders, type SocketIORequestPolicy, type SocketIOServerConfig, } from './server/socket-io-node';
16
16
  export type { EffectiveScope, FetchComposition, FetchHandler, HandlerConfig, LoggingConfig, LogOutcome, RawRoute, RawRouteContext, ScopeContexts, ScopedHandlers, ServiceDef, } from './server/types';
17
17
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,SAAS,EACT,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,IAAI,oBAAoB,EAChD,KAAK,wBAAwB,IAAI,oBAAoB,EACrD,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,SAAS,EACT,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,IAAI,oBAAoB,EAChD,KAAK,wBAAwB,IAAI,oBAAoB,EACrD,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC"}
package/dist/node.js CHANGED
@@ -3,14 +3,7 @@ import {
3
3
  bindRealtimeServer,
4
4
  createHandler,
5
5
  createSocketIOServer
6
- } from "./index-0tszzfxp.js";
7
- import {
8
- ShutdownOptionsSchema,
9
- ShutdownResultSchema,
10
- ShutdownStateSchema,
11
- ShutdownStatusSchema,
12
- createServerLifecycle
13
- } from "./index-dk6e56g0.js";
6
+ } from "./index-f7521k0x.js";
14
7
  import {
15
8
  createImplement,
16
9
  createImplementRegistry,
@@ -19,9 +12,16 @@ import {
19
12
  createScopedImplementRegistry,
20
13
  implement,
21
14
  implementRegistry
22
- } from "./index-41wm56v0.js";
15
+ } from "./index-3hn10n4c.js";
23
16
  import"./index-557by2db.js";
24
- import"./index-7c0gkyvj.js";
17
+ import {
18
+ ShutdownOptionsSchema,
19
+ ShutdownResultSchema,
20
+ ShutdownStateSchema,
21
+ ShutdownStatusSchema,
22
+ createServerLifecycle
23
+ } from "./index-dk6e56g0.js";
24
+ import"./index-6fbp58g8.js";
25
25
  import {
26
26
  AppError,
27
27
  appError,
@@ -31,9 +31,9 @@ import {
31
31
  notFound,
32
32
  rateLimited,
33
33
  unauthorized
34
- } from "./index-ps5pxp3h.js";
34
+ } from "./index-v6e8hnkx.js";
35
35
  import"./index-6k1937bx.js";
36
- import"./index-y2rb7dwx.js";
36
+ import"./index-pzyt11ch.js";
37
37
  import"./index-smpbdg6k.js";
38
38
  // src/server/node.ts
39
39
  import { serve } from "srvx/node";
@@ -4,13 +4,13 @@ import {
4
4
  ObservabilityStatusSchema,
5
5
  aggregateObservabilityStatus,
6
6
  createBoundedSinkManager
7
- } from "../index-0nc0cddp.js";
7
+ } from "../index-a59da114.js";
8
8
  import {
9
9
  measureSize,
10
10
  redact,
11
11
  sanitizePayload,
12
12
  truncatePreview
13
- } from "../index-gnvzyw0k.js";
13
+ } from "../index-8es1hrv4.js";
14
14
  import {
15
15
  getRequestContext,
16
16
  getTraceId,
@@ -22,8 +22,8 @@ import {
22
22
  setRequestError,
23
23
  setRequestUser,
24
24
  wrapInRequestContext
25
- } from "../index-7c0gkyvj.js";
26
- import"../index-ps5pxp3h.js";
25
+ } from "../index-6fbp58g8.js";
26
+ import"../index-v6e8hnkx.js";
27
27
  import"../index-6k1937bx.js";
28
28
  import {
29
29
  childSpan,
@@ -32,7 +32,7 @@ import {
32
32
  parseTraceparent,
33
33
  resolvePropagationContext,
34
34
  resolveTraceContext
35
- } from "../index-y2rb7dwx.js";
35
+ } from "../index-pzyt11ch.js";
36
36
  import {
37
37
  isRecord
38
38
  } from "../index-smpbdg6k.js";