@bluelibs/runner 5.3.0 → 5.5.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 (189) hide show
  1. package/README.md +23 -22
  2. package/dist/browser/index.cjs +6159 -3049
  3. package/dist/browser/index.cjs.map +1 -1
  4. package/dist/browser/index.mjs +6157 -3046
  5. package/dist/browser/index.mjs.map +1 -1
  6. package/dist/edge/index.cjs +6159 -3049
  7. package/dist/edge/index.cjs.map +1 -1
  8. package/dist/edge/index.mjs +6157 -3046
  9. package/dist/edge/index.mjs.map +1 -1
  10. package/dist/node/node.cjs +10843 -10814
  11. package/dist/node/node.cjs.map +1 -1
  12. package/dist/node/node.mjs +10801 -10770
  13. package/dist/node/node.mjs.map +1 -1
  14. package/dist/types/definers/builders/asyncContext/fluent-builder.interface.d.ts +4 -0
  15. package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +8 -1
  16. package/dist/types/definers/builders/error/index.d.ts +1 -0
  17. package/dist/types/definers/builders/error/types.d.ts +2 -1
  18. package/dist/types/definers/builders/error/utils.d.ts +1 -0
  19. package/dist/types/definers/builders/event/fluent-builder.interface.d.ts +10 -0
  20. package/dist/types/definers/builders/event/utils.d.ts +1 -4
  21. package/dist/types/definers/builders/hook/fluent-builder.interface.d.ts +3 -0
  22. package/dist/types/definers/builders/hook/types.d.ts +3 -0
  23. package/dist/types/definers/builders/hook/utils.d.ts +1 -4
  24. package/dist/types/definers/builders/middleware/index.d.ts +4 -2
  25. package/dist/types/definers/builders/middleware/resource.interface.d.ts +7 -0
  26. package/dist/types/definers/builders/middleware/task.interface.d.ts +7 -0
  27. package/dist/types/definers/builders/middleware/types.d.ts +22 -3
  28. package/dist/types/definers/builders/middleware/utils.d.ts +3 -4
  29. package/dist/types/definers/builders/override/hook.d.ts +3 -0
  30. package/dist/types/definers/builders/override/index.d.ts +5 -0
  31. package/dist/types/definers/builders/resource/fluent-builder.interface.d.ts +15 -0
  32. package/dist/types/definers/builders/resource/index.d.ts +0 -1
  33. package/dist/types/definers/builders/resource/types.d.ts +1 -0
  34. package/dist/types/definers/builders/resource/utils.d.ts +1 -4
  35. package/dist/types/definers/builders/shared/mergeUtils.d.ts +5 -0
  36. package/dist/types/definers/builders/tag/fluent-builder.interface.d.ts +4 -0
  37. package/dist/types/definers/builders/tag/utils.d.ts +1 -0
  38. package/dist/types/definers/builders/task/fluent-builder.interface.d.ts +4 -0
  39. package/dist/types/definers/builders/task/index.d.ts +2 -2
  40. package/dist/types/definers/builders/task/utils.d.ts +1 -4
  41. package/dist/types/definers/builders/utils.d.ts +7 -2
  42. package/dist/types/definers/defineError.d.ts +12 -2
  43. package/dist/types/definers/resourceFork.d.ts +3 -1
  44. package/dist/types/definers/tools.d.ts +12 -12
  45. package/dist/types/errors/domain-error-ids.d.ts +44 -0
  46. package/dist/types/errors/domain-runtime.errors.d.ts +136 -0
  47. package/dist/types/errors/foundation.errors.d.ts +125 -0
  48. package/dist/types/errors/generic.errors.d.ts +1 -0
  49. package/dist/types/errors/model-runtime.errors.d.ts +20 -0
  50. package/dist/types/errors.d.ts +5 -74
  51. package/dist/types/globals/cron/cron-parser.d.ts +4 -0
  52. package/dist/types/globals/cron/cron.errors.d.ts +8 -0
  53. package/dist/types/globals/cron/cron.resource.d.ts +12 -0
  54. package/dist/types/globals/cron/cron.tag.d.ts +2 -0
  55. package/dist/types/globals/cron/types.d.ts +25 -0
  56. package/dist/types/globals/globalMiddleware.d.ts +87 -13
  57. package/dist/types/globals/globalResources.d.ts +110 -24
  58. package/dist/types/globals/globalTags.d.ts +10 -2
  59. package/dist/types/globals/middleware/cache.middleware.d.ts +173 -13
  60. package/dist/types/globals/middleware/circuitBreaker.middleware.d.ts +5 -1
  61. package/dist/types/globals/middleware/concurrency.middleware.d.ts +3 -0
  62. package/dist/types/globals/middleware/fallback.middleware.d.ts +8 -1
  63. package/dist/types/globals/middleware/rateLimit.middleware.d.ts +4 -1
  64. package/dist/types/globals/middleware/retry.middleware.d.ts +5 -0
  65. package/dist/types/globals/middleware/temporal.middleware.d.ts +19 -19
  66. package/dist/types/globals/middleware/timeout.middleware.d.ts +4 -1
  67. package/dist/types/globals/resources/eventManager.resource.d.ts +2 -0
  68. package/dist/types/globals/resources/logger.resource.d.ts +2 -0
  69. package/dist/types/globals/resources/middlewareManager.resource.d.ts +2 -0
  70. package/dist/types/globals/resources/queue.resource.d.ts +2 -0
  71. package/dist/types/globals/resources/runtime.resource.d.ts +2 -0
  72. package/dist/types/globals/resources/serializer.resource.d.ts +2 -0
  73. package/dist/types/globals/resources/store.resource.d.ts +2 -0
  74. package/dist/types/globals/resources/taskRunner.resource.d.ts +2 -0
  75. package/dist/types/globals/resources/tunnel/plan.d.ts +6 -3
  76. package/dist/types/globals/resources/tunnel/tunnel.policy.tag.d.ts +2 -0
  77. package/dist/types/globals/resources/tunnel/types.d.ts +7 -2
  78. package/dist/types/globals/types.d.ts +6 -1
  79. package/dist/types/models/BuiltinsRegistry.d.ts +2 -0
  80. package/dist/types/models/DependencyProcessor.d.ts +27 -6
  81. package/dist/types/models/EventManager.d.ts +9 -9
  82. package/dist/types/models/LogPrinter.d.ts +5 -5
  83. package/dist/types/models/Logger.d.ts +16 -16
  84. package/dist/types/models/MiddlewareManager.d.ts +20 -2
  85. package/dist/types/models/OverrideManager.d.ts +4 -1
  86. package/dist/types/models/Queue.d.ts +2 -0
  87. package/dist/types/models/RunResult.d.ts +290 -26
  88. package/dist/types/models/Store.d.ts +29 -12
  89. package/dist/types/models/StoreRegistry.d.ts +16 -13
  90. package/dist/types/models/StoreValidator.d.ts +2 -0
  91. package/dist/types/models/TaskRunner.d.ts +3 -1
  92. package/dist/types/models/VisibilityTracker.d.ts +75 -0
  93. package/dist/types/models/dependency-processor/DependencyExtractor.d.ts +23 -0
  94. package/dist/types/models/dependency-processor/HookEventBuffer.d.ts +15 -0
  95. package/dist/types/models/dependency-processor/ResourceScheduler.d.ts +10 -0
  96. package/dist/types/models/event/EmissionExecutor.d.ts +5 -4
  97. package/dist/types/models/event/ListenerRegistry.d.ts +2 -0
  98. package/dist/types/models/index.d.ts +1 -3
  99. package/dist/types/models/middleware/InterceptorRegistry.d.ts +13 -4
  100. package/dist/types/models/middleware/ResourceMiddlewareComposer.d.ts +3 -2
  101. package/dist/types/models/middleware/ValidationHelper.d.ts +3 -6
  102. package/dist/types/models/utils/buildDependencyGraph.d.ts +12 -0
  103. package/dist/types/models/utils/dependencyStrategies.d.ts +15 -0
  104. package/dist/types/models/utils/disposeOrder.d.ts +11 -0
  105. package/dist/types/models/utils/resourceDependencyIds.d.ts +1 -0
  106. package/dist/types/node/durable/bus/MemoryEventBus.d.ts +10 -1
  107. package/dist/types/node/durable/bus/NoopEventBus.d.ts +1 -1
  108. package/dist/types/node/durable/bus/RedisEventBus.d.ts +8 -2
  109. package/dist/types/node/durable/core/CronParser.d.ts +2 -13
  110. package/dist/types/node/durable/core/DurableResource.d.ts +15 -32
  111. package/dist/types/node/durable/core/DurableService.d.ts +1 -0
  112. package/dist/types/node/durable/core/DurableWorker.d.ts +4 -2
  113. package/dist/types/node/durable/core/createRunnerDurableRuntime.d.ts +2 -0
  114. package/dist/types/node/durable/core/interfaces/bus.d.ts +1 -1
  115. package/dist/types/node/durable/core/interfaces/resource.d.ts +61 -0
  116. package/dist/types/node/durable/core/interfaces/service.d.ts +2 -0
  117. package/dist/types/node/durable/core/interfaces/store.d.ts +5 -0
  118. package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +1 -0
  119. package/dist/types/node/durable/core/managers/PollingManager.d.ts +3 -1
  120. package/dist/types/node/durable/core/resource.d.ts +6 -5
  121. package/dist/types/node/durable/core/utils.d.ts +11 -1
  122. package/dist/types/node/durable/queue/RabbitMQQueue.d.ts +4 -0
  123. package/dist/types/node/durable/resources/memoryDurableResource.d.ts +7 -5
  124. package/dist/types/node/durable/resources/redisDurableResource.d.ts +7 -5
  125. package/dist/types/node/durable/store/MemoryStore.d.ts +2 -0
  126. package/dist/types/node/durable/store/RedisStore.d.ts +1 -0
  127. package/dist/types/node/durable/tags/durableWorkflow.tag.d.ts +6 -1
  128. package/dist/types/node/exposure/allowList.d.ts +2 -1
  129. package/dist/types/node/exposure/handlers/contextWrapper.d.ts +6 -2
  130. package/dist/types/node/exposure/handlers/errorHandlers.d.ts +1 -0
  131. package/dist/types/node/exposure/handlers/eventHandler.d.ts +1 -0
  132. package/dist/types/node/exposure/handlers/taskHandler.d.ts +3 -1
  133. package/dist/types/node/exposure/logging.d.ts +1 -0
  134. package/dist/types/node/exposure/requestContext.d.ts +1 -1
  135. package/dist/types/node/exposure/requestHandlers.d.ts +3 -1
  136. package/dist/types/node/exposure/requestIdentity.d.ts +3 -0
  137. package/dist/types/node/exposure/resource.d.ts +7 -7
  138. package/dist/types/node/exposure/resourceTypes.d.ts +6 -0
  139. package/dist/types/node/exposure/serverLifecycle.d.ts +2 -0
  140. package/dist/types/node/http/http-mixed-client.factory.resource.d.ts +1 -1
  141. package/dist/types/node/http/http-smart-client.factory.resource.d.ts +1 -1
  142. package/dist/types/node/node.d.ts +1 -184
  143. package/dist/types/node/tunnel/allowlist.d.ts +10 -1
  144. package/dist/types/platform/adapters/browser.d.ts +1 -1
  145. package/dist/types/platform/adapters/edge.d.ts +17 -0
  146. package/dist/types/platform/adapters/node-als.d.ts +1 -1
  147. package/dist/types/platform/adapters/node.d.ts +1 -1
  148. package/dist/types/platform/adapters/universal-generic.d.ts +5 -2
  149. package/dist/types/platform/adapters/universal.d.ts +1 -1
  150. package/dist/types/platform/index.d.ts +3 -2
  151. package/dist/types/platform/types.d.ts +8 -2
  152. package/dist/types/public.d.ts +376 -20
  153. package/dist/types/run.d.ts +17 -1
  154. package/dist/types/serializer/Serializer.d.ts +1 -41
  155. package/dist/types/serializer/errors.d.ts +8 -0
  156. package/dist/types/serializer/marker-key-escapes.d.ts +2 -0
  157. package/dist/types/serializer/serialize-utils.d.ts +1 -1
  158. package/dist/types/serializer/type-registry.d.ts +0 -1
  159. package/dist/types/serializer/types.d.ts +7 -6
  160. package/dist/types/testing.d.ts +1 -0
  161. package/dist/types/tools/LockableMap.d.ts +20 -0
  162. package/dist/types/tools/getAllThrows.d.ts +13 -0
  163. package/dist/types/tools/throws.d.ts +1 -1
  164. package/dist/types/types/error.d.ts +25 -2
  165. package/dist/types/types/event.d.ts +35 -0
  166. package/dist/types/types/hook.d.ts +8 -0
  167. package/dist/types/types/resource.d.ts +13 -1
  168. package/dist/types/types/resourceMiddleware.d.ts +8 -0
  169. package/dist/types/types/runner.d.ts +56 -0
  170. package/dist/types/types/storeTypes.d.ts +5 -1
  171. package/dist/types/types/symbols.d.ts +1 -1
  172. package/dist/types/types/tag.d.ts +1 -0
  173. package/dist/types/types/tagged.d.ts +2 -2
  174. package/dist/types/types/task.d.ts +3 -3
  175. package/dist/types/types/taskMiddleware.d.ts +8 -0
  176. package/dist/types/types/utilities.d.ts +25 -3
  177. package/dist/ui/assets/index-B4lZaXFJ.js +141 -0
  178. package/dist/ui/assets/index-Y_9aLumt.css +1 -0
  179. package/dist/ui/index.html +2 -3
  180. package/dist/universal/index.cjs +6159 -3049
  181. package/dist/universal/index.cjs.map +1 -1
  182. package/dist/universal/index.mjs +6157 -3046
  183. package/dist/universal/index.mjs.map +1 -1
  184. package/package.json +18 -15
  185. package/readmes/AI.md +181 -45
  186. package/dist/ui/assets/index-2cb8f39f.js +0 -141
  187. package/dist/ui/assets/index-b1f988bf.css +0 -1
  188. /package/dist/types/{tunnels → tools}/buildUniversalManifest.d.ts +0 -0
  189. /package/dist/types/{processHooks.d.ts → tools/processShutdownHooks.d.ts} +0 -0
@@ -9,6 +9,7 @@ export declare class MemoryStore implements IDurableStore {
9
9
  private timers;
10
10
  private schedules;
11
11
  private locks;
12
+ private pruneExpiredLocks;
12
13
  private getIdempotencyMapKey;
13
14
  getExecutionIdByIdempotencyKey(params: {
14
15
  taskId: string;
@@ -52,5 +53,6 @@ export declare class MemoryStore implements IDurableStore {
52
53
  listSchedules(): Promise<Schedule[]>;
53
54
  listActiveSchedules(): Promise<Schedule[]>;
54
55
  acquireLock(resource: string, ttlMs: number): Promise<string | null>;
56
+ renewLock(resource: string, lockId: string, ttlMs: number): Promise<boolean>;
55
57
  releaseLock(resource: string, lockId: string): Promise<void>;
56
58
  }
@@ -85,5 +85,6 @@ export declare class RedisStore implements IDurableStore {
85
85
  listActiveSchedules(): Promise<Schedule[]>;
86
86
  acquireLock(resource: string, ttlMs: number): Promise<string | null>;
87
87
  releaseLock(resource: string, lockId: string): Promise<void>;
88
+ renewLock(resource: string, lockId: string, ttlMs: number): Promise<boolean>;
88
89
  dispose(): Promise<void>;
89
90
  }
@@ -3,6 +3,11 @@ export interface DurableWorkflowTagConfig {
3
3
  * Optional domain/category to group workflows (eg. "orders", "billing").
4
4
  */
5
5
  category?: string;
6
+ /**
7
+ * Optional default input used by `durable.describe(task)` when no explicit
8
+ * input argument is provided.
9
+ */
10
+ defaults?: Record<string, unknown>;
6
11
  /**
7
12
  * Optional metadata for dashboards/tooling.
8
13
  */
@@ -11,4 +16,4 @@ export interface DurableWorkflowTagConfig {
11
16
  /**
12
17
  * Marks a task as a durable workflow for runtime discovery.
13
18
  */
14
- export declare const durableWorkflowTag: import("../..").ITag<DurableWorkflowTagConfig, void, void>;
19
+ export declare const durableWorkflowTag: import("../../..").ITag<DurableWorkflowTagConfig, void, void>;
@@ -1,3 +1,4 @@
1
1
  import type { Store } from "../../models/Store";
2
+ import type { Logger } from "../../models/Logger";
2
3
  import type { AllowListGuard } from "./types";
3
- export declare function createAllowListGuard(store: Store, allowOpen?: boolean): AllowListGuard;
4
+ export declare function createAllowListGuard(store: Store, allowOpen?: boolean, logger?: Logger): AllowListGuard;
@@ -8,11 +8,15 @@ export interface ExposureContextDeps {
8
8
  };
9
9
  serializer: SerializerLike;
10
10
  }
11
+ interface AsyncContextHydrationOptions {
12
+ allowAsyncContext?: boolean;
13
+ }
11
14
  /**
12
15
  * Builds a composed provider: first user async contexts (if any), then exposure context
13
16
  */
14
- export declare const withExposureContext: <T>(req: IncomingMessage, res: ServerResponse, controller: AbortController, deps: ExposureContextDeps, fn: () => Promise<T>) => Promise<T>;
17
+ export declare const withExposureContext: <T>(req: IncomingMessage, res: ServerResponse, controller: AbortController, deps: ExposureContextDeps, fn: () => Promise<T>, options?: AsyncContextHydrationOptions) => Promise<T>;
15
18
  /**
16
19
  * Builds user async contexts (if any), without exposure context (for events)
17
20
  */
18
- export declare const withUserContexts: <T>(req: IncomingMessage, deps: Pick<ExposureContextDeps, "store" | "serializer">, fn: () => Promise<T>) => Promise<T>;
21
+ export declare const withUserContexts: <T>(req: IncomingMessage, deps: Pick<ExposureContextDeps, "store" | "serializer">, fn: () => Promise<T>, options?: AsyncContextHydrationOptions) => Promise<T>;
22
+ export {};
@@ -19,5 +19,6 @@ export interface HandleRequestErrorOptions {
19
19
  cors?: NodeExposureHttpCorsConfig;
20
20
  serializer: SerializerLike;
21
21
  logKey: ExposureErrorLogKey;
22
+ requestId?: string;
22
23
  }
23
24
  export declare const handleRequestError: (options: HandleRequestErrorOptions) => void;
@@ -15,6 +15,7 @@ interface EventHandlerDeps {
15
15
  maxSize?: number;
16
16
  };
17
17
  };
18
+ allowAsyncContext?: (eventId: string) => boolean;
18
19
  }
19
20
  export declare const createEventHandler: (deps: EventHandlerDeps) => (req: IncomingMessage, res: ServerResponse, eventId: string) => Promise<void>;
20
21
  export {};
@@ -2,6 +2,7 @@ import type { IncomingMessage, ServerResponse } from "http";
2
2
  import type { SerializerLike } from "../../../serializer";
3
3
  import type { Authenticator, AllowListGuard } from "../types";
4
4
  import type { NodeExposureDeps, NodeExposureHttpCorsConfig } from "../resourceTypes";
5
+ import type { MultipartLimits } from "../multipart";
5
6
  interface TaskHandlerDeps {
6
7
  store: NodeExposureDeps["store"];
7
8
  taskRunner: NodeExposureDeps["taskRunner"];
@@ -17,8 +18,9 @@ interface TaskHandlerDeps {
17
18
  json?: {
18
19
  maxSize?: number;
19
20
  };
20
- multipart?: any;
21
+ multipart?: MultipartLimits;
21
22
  };
23
+ allowAsyncContext?: (taskId: string) => boolean;
22
24
  }
23
25
  export declare const createTaskHandler: (deps: TaskHandlerDeps) => (req: IncomingMessage, res: ServerResponse, taskId: string) => Promise<void>;
24
26
  export {};
@@ -1,4 +1,5 @@
1
1
  import type { Logger } from "../../models/Logger";
2
2
  export declare function safeLogError(logger: Logger, message: string, data: Record<string, unknown>): void;
3
3
  export declare function safeLogInfo(logger: Logger, message: string, data: Record<string, unknown>): void;
4
+ export declare function safeLogWarn(logger: Logger, message: string, data: Record<string, unknown>): void;
4
5
  export declare function errorMessage(error: unknown): string;
@@ -8,7 +8,7 @@ export interface ExposureRequestContextValue {
8
8
  method?: string;
9
9
  signal: AbortSignal;
10
10
  }
11
- export declare const ExposureRequestContext: import("..").IAsyncContext<ExposureRequestContextValue>;
11
+ export declare const ExposureRequestContext: import("../..").IAsyncContext<ExposureRequestContextValue>;
12
12
  export declare function useExposureContext(): ExposureRequestContextValue;
13
13
  /**
14
14
  * Checks if the exposure request context is currently available without throwing an error.
@@ -3,6 +3,7 @@ import type { SerializerLike } from "../../serializer";
3
3
  import type { Authenticator, AllowListGuard, RequestHandler } from "./types";
4
4
  import type { ExposureRouter } from "./router";
5
5
  import type { NodeExposureDeps, NodeExposureHttpCorsConfig } from "./resourceTypes";
6
+ import type { MultipartLimits } from "./multipart";
6
7
  export interface RequestProcessingDeps {
7
8
  store: NodeExposureDeps["store"];
8
9
  taskRunner: NodeExposureDeps["taskRunner"];
@@ -17,8 +18,9 @@ export interface RequestProcessingDeps {
17
18
  json?: {
18
19
  maxSize?: number;
19
20
  };
20
- multipart?: any;
21
+ multipart?: MultipartLimits;
21
22
  };
23
+ disableDiscovery?: boolean;
22
24
  }
23
25
  export interface NodeExposureRequestHandlers {
24
26
  handleTask: (req: IncomingMessage, res: ServerResponse) => Promise<void>;
@@ -0,0 +1,3 @@
1
+ import type { IncomingMessage, ServerResponse } from "http";
2
+ export declare function getRequestId(req: IncomingMessage): string | undefined;
3
+ export declare function ensureRequestId(req: IncomingMessage, res: ServerResponse): string;
@@ -1,12 +1,12 @@
1
1
  import type { NodeExposureConfig } from "./resourceTypes";
2
2
  export type { NodeExposureHttpAuthConfig } from "./authenticator";
3
- export declare const nodeExposure: import("..").IResource<NodeExposureConfig, Promise<import("./resourceTypes").NodeExposureHandlers>, {
4
- store: import("..").IResource<void, Promise<import("..").Store>, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
5
- taskRunner: import("..").IResource<void, Promise<import("..").TaskRunner>, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
6
- eventManager: import("..").IResource<void, Promise<import("..").EventManager>, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
7
- logger: import("..").IResource<void, Promise<import("..").Logger>, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
8
- serializer: import("..").IResource<void, Promise<import("..").SerializerLike>, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
3
+ export declare const nodeExposure: import("../..").IResource<NodeExposureConfig, Promise<import("./resourceTypes").NodeExposureHandlers>, {
4
+ store: import("../..").IResource<void, Promise<import("..").Store>, {}, any, any, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
5
+ taskRunner: import("../..").IResource<void, Promise<import("..").TaskRunner>, {}, any, any, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
6
+ eventManager: import("../..").IResource<void, Promise<import("..").EventManager>, {}, any, any, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
7
+ logger: import("../..").IResource<void, Promise<import("..").Logger>, {}, any, any, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
8
+ serializer: import("../..").IResource<void, Promise<import("../..").SerializerLike>, {}, any, any, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
9
9
  }, any, {
10
10
  title: string;
11
11
  description: string;
12
- }, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
12
+ }, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
@@ -33,6 +33,12 @@ export interface NodeExposureHttpConfig {
33
33
  * When true and no server-mode tunnel is registered, exposure is open.
34
34
  */
35
35
  dangerouslyAllowOpenExposure?: boolean;
36
+ /**
37
+ * Disable the discovery endpoint that enumerates registered task/event IDs.
38
+ * When true, the /__runner/discovery endpoint returns 404.
39
+ * @default false
40
+ */
41
+ disableDiscovery?: boolean;
36
42
  }
37
43
  export interface NodeExposureConfig {
38
44
  http?: NodeExposureHttpConfig;
@@ -1,10 +1,12 @@
1
1
  import * as http from "http";
2
2
  import type { RequestHandler } from "./types";
3
3
  import type { Logger } from "../../models/Logger";
4
+ import type { NodeExposureHttpCorsConfig } from "./resourceTypes";
4
5
  export declare function makeRequestListener(options: {
5
6
  handler: RequestHandler;
6
7
  respondOnMiss: boolean;
7
8
  logger: Logger;
9
+ cors?: NodeExposureHttpCorsConfig;
8
10
  }): http.RequestListener;
9
11
  export declare function startHttpServer(server: http.Server, listen: {
10
12
  port: number;
@@ -13,5 +13,5 @@ export interface HttpMixedClientFactoryConfig {
13
13
  }) => void | Promise<void>;
14
14
  }
15
15
  export type HttpMixedClientFactory = (config: HttpMixedClientFactoryConfig) => MixedHttpClient;
16
- export declare const httpMixedClientFactory: import("..").IResource<void, Promise<HttpMixedClientFactory>, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
16
+ export declare const httpMixedClientFactory: import("../..").IResource<void, Promise<HttpMixedClientFactory>, {}, any, any, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
17
17
  export type { MixedHttpClient };
@@ -12,5 +12,5 @@ export interface HttpSmartClientFactoryConfig {
12
12
  }) => void | Promise<void>;
13
13
  }
14
14
  export type HttpSmartClientFactory = (config: HttpSmartClientFactoryConfig) => HttpSmartClient;
15
- export declare const httpSmartClientFactory: import("..").IResource<void, Promise<HttpSmartClientFactory>, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
15
+ export declare const httpSmartClientFactory: import("../..").IResource<void, Promise<HttpSmartClientFactory>, {}, any, any, import("../..").TagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
16
16
  export type { HttpSmartClient };
@@ -1,6 +1,4 @@
1
- export * from "../index";
2
- import type { RunResult } from "../models/RunResult";
3
- import type { SerializerLike } from "../serializer";
1
+ export * from "../public";
4
2
  export { nodeExposure } from "./exposure";
5
3
  export { hasExposureContext, useExposureContext, } from "./exposure/requestContext";
6
4
  export type * from "./exposure/resourceTypes";
@@ -10,184 +8,3 @@ export { readInputFileToBuffer, writeInputFileToPath } from "./files";
10
8
  export { createHttpSmartClient, createHttpMixedClient } from "./http";
11
9
  export type { HttpSmartClient, HttpSmartClientAuthConfig, HttpSmartClientConfig, MixedHttpClient, MixedHttpClientAuthConfig, MixedHttpClientConfig, Readable, } from "./http";
12
10
  export * from "./durable";
13
- export declare const globals: {
14
- resources: {
15
- httpSmartClientFactory: import("./node").IResource<void, Promise<import("./http").HttpSmartClientFactory>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
16
- httpMixedClientFactory: import("./node").IResource<void, Promise<import("./http").HttpMixedClientFactory>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
17
- store: import("./node").IResource<void, Promise<import("./node").Store>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
18
- middlewareManager: import("./node").IResource<void, Promise<import("./node").MiddlewareManager>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
19
- eventManager: import("./node").IResource<void, Promise<import("./node").EventManager>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
20
- taskRunner: import("./node").IResource<void, Promise<import("./node").TaskRunner>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
21
- logger: import("./node").IResource<void, Promise<import("./node").Logger>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
22
- serializer: import("./node").IResource<void, Promise<SerializerLike>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
23
- cache: import("./node").IResource<import("./node").CacheResourceConfig, Promise<{
24
- map: Map<string, import("./node").ICacheInstance>;
25
- cacheFactoryTask: import("./node").TaskDependencyWithIntercept<import("lru-cache").LRUCache.Options<any, any, any>, Promise<import("./node").ICacheInstance>>;
26
- defaultOptions: any;
27
- }>, {
28
- cacheFactoryTask: import("./node").ITask<import("lru-cache").LRUCache.Options<any, any, any>, Promise<import("./node").ICacheInstance>, any, any, import("./node").TagType[], import("./node").TaskMiddlewareAttachmentType[]>;
29
- }, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
30
- queue: import("./node").IResource<void, Promise<{
31
- map: Map<string, import("./node").Queue>;
32
- run: <T>(id: string, task: (signal: AbortSignal) => Promise<T>) => Promise<T>;
33
- }>, {}, {
34
- map: Map<string, import("./node").Queue>;
35
- }, {
36
- title: string;
37
- description: string;
38
- }, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
39
- httpClientFactory: import("./node").IResource<void, Promise<import("./node").HttpClientFactory>, {
40
- serializer: import("./node").IResource<void, Promise<SerializerLike>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
41
- store: import("./node").IResource<void, Promise<import("./node").Store>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
42
- }, any, {
43
- title: string;
44
- description: string;
45
- }, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
46
- rateLimit: import("./node").IResource<void, Promise<{
47
- states: WeakMap<import("./node").RateLimitMiddlewareConfig, import("./node").RateLimitState>;
48
- }>, {}, any, any, import("./node").ITag<{
49
- metadata?: Record<string, any>;
50
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
51
- circuitBreaker: import("./node").IResource<void, Promise<{
52
- statusMap: Map<string, import("./node").CircuitBreakerStatus>;
53
- }>, {}, any, any, import("./node").ITag<{
54
- metadata?: Record<string, any>;
55
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
56
- temporal: import("./node").IResource<void, Promise<{
57
- debounceStates: WeakMap<import("./node").TemporalMiddlewareConfig, import("./node").DebounceState>;
58
- throttleStates: WeakMap<import("./node").TemporalMiddlewareConfig, import("./node").ThrottleState>;
59
- }>, {}, any, any, import("./node").ITag<{
60
- metadata?: Record<string, any>;
61
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
62
- concurrency: import("./node").IResource<void, Promise<{
63
- semaphoresByConfig: WeakMap<import("./node").ConcurrencyMiddlewareConfig, import("./node").Semaphore>;
64
- semaphoresByKey: Map<string, {
65
- semaphore: import("./node").Semaphore;
66
- limit: number;
67
- }>;
68
- }>, {}, any, any, import("./node").ITag<{
69
- metadata?: Record<string, any>;
70
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
71
- };
72
- events: {
73
- readonly ready: import("./node").IEvent<void>;
74
- };
75
- middleware: {
76
- requireContext: import("./node").ITaskMiddleware<import("./node").RequireContextMiddlewareConfig, void, void, any>;
77
- task: {
78
- requireContext: import("./node").ITaskMiddleware<import("./node").RequireContextMiddlewareConfig, void, void, any>;
79
- cache: import("./node").ITaskMiddleware<any, void, void, {
80
- cache: import("./node").IResource<import("./node").CacheResourceConfig, Promise<{
81
- map: Map<string, import("./node").ICacheInstance>;
82
- cacheFactoryTask: import("./node").TaskDependencyWithIntercept<import("lru-cache").LRUCache.Options<any, any, any>, Promise<import("./node").ICacheInstance>>;
83
- defaultOptions: any;
84
- }>, {
85
- cacheFactoryTask: import("./node").ITask<import("lru-cache").LRUCache.Options<any, any, any>, Promise<import("./node").ICacheInstance>, any, any, import("./node").TagType[], import("./node").TaskMiddlewareAttachmentType[]>;
86
- }, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
87
- }> & {
88
- journalKeys: {
89
- readonly hit: import("./node").JournalKey<boolean>;
90
- };
91
- };
92
- concurrency: import("./node").ITaskMiddleware<import("./node").ConcurrencyMiddlewareConfig, void, void, {
93
- state: import("./node").IResource<void, Promise<{
94
- semaphoresByConfig: WeakMap<import("./node").ConcurrencyMiddlewareConfig, import("./node").Semaphore>;
95
- semaphoresByKey: Map<string, {
96
- semaphore: import("./node").Semaphore;
97
- limit: number;
98
- }>;
99
- }>, {}, any, any, import("./node").ITag<{
100
- metadata?: Record<string, any>;
101
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
102
- }>;
103
- debounce: import("./node").ITaskMiddleware<import("./node").TemporalMiddlewareConfig, void, void, {
104
- state: import("./node").IResource<void, Promise<{
105
- debounceStates: WeakMap<import("./node").TemporalMiddlewareConfig, import("./node").DebounceState>;
106
- throttleStates: WeakMap<import("./node").TemporalMiddlewareConfig, import("./node").ThrottleState>;
107
- }>, {}, any, any, import("./node").ITag<{
108
- metadata?: Record<string, any>;
109
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
110
- }>;
111
- throttle: import("./node").ITaskMiddleware<import("./node").TemporalMiddlewareConfig, void, void, {
112
- state: import("./node").IResource<void, Promise<{
113
- debounceStates: WeakMap<import("./node").TemporalMiddlewareConfig, import("./node").DebounceState>;
114
- throttleStates: WeakMap<import("./node").TemporalMiddlewareConfig, import("./node").ThrottleState>;
115
- }>, {}, any, any, import("./node").ITag<{
116
- metadata?: Record<string, any>;
117
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
118
- }>;
119
- fallback: import("./node").ITaskMiddleware<import("./node").FallbackMiddlewareConfig, void, void, {
120
- taskRunner: import("./node").IResource<void, Promise<import("./node").TaskRunner>, {}, any, any, import("./node").TagType[], import("./node").ResourceMiddlewareAttachmentType[]>;
121
- }> & {
122
- journalKeys: {
123
- readonly active: import("./node").JournalKey<boolean>;
124
- readonly error: import("./node").JournalKey<Error>;
125
- };
126
- };
127
- rateLimit: import("./node").ITaskMiddleware<import("./node").RateLimitMiddlewareConfig, void, void, {
128
- state: import("./node").IResource<void, Promise<{
129
- states: WeakMap<import("./node").RateLimitMiddlewareConfig, import("./node").RateLimitState>;
130
- }>, {}, any, any, import("./node").ITag<{
131
- metadata?: Record<string, any>;
132
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
133
- }> & {
134
- journalKeys: {
135
- readonly remaining: import("./node").JournalKey<number>;
136
- readonly resetTime: import("./node").JournalKey<number>;
137
- readonly limit: import("./node").JournalKey<number>;
138
- };
139
- };
140
- retry: import("./node").ITaskMiddleware<import("./node").RetryMiddlewareConfig, void, void, any> & {
141
- journalKeys: {
142
- readonly attempt: import("./node").JournalKey<number>;
143
- readonly lastError: import("./node").JournalKey<Error>;
144
- };
145
- };
146
- timeout: import("./node").ITaskMiddleware<import("./node").TimeoutMiddlewareConfig, void, void, any> & {
147
- journalKeys: {
148
- readonly abortController: import("./node").JournalKey<AbortController>;
149
- };
150
- };
151
- circuitBreaker: import("./node").ITaskMiddleware<import("./node").CircuitBreakerMiddlewareConfig, void, void, {
152
- state: import("./node").IResource<void, Promise<{
153
- statusMap: Map<string, import("./node").CircuitBreakerStatus>;
154
- }>, {}, any, any, import("./node").ITag<{
155
- metadata?: Record<string, any>;
156
- }, void, void>[], import("./node").ResourceMiddlewareAttachmentType[]>;
157
- }> & {
158
- journalKeys: {
159
- readonly state: import("./node").JournalKey<import("./node").CircuitBreakerState>;
160
- readonly failures: import("./node").JournalKey<number>;
161
- };
162
- };
163
- };
164
- resource: {
165
- retry: import("./node").IResourceMiddleware<import("./node").RetryMiddlewareConfig, void, void, any>;
166
- timeout: import("./node").IResourceMiddleware<import("./node").TimeoutMiddlewareConfig, void, void, any>;
167
- };
168
- };
169
- tags: {
170
- system: import("./node").ITag<{
171
- metadata?: Record<string, any>;
172
- }, void, void>;
173
- excludeFromGlobalHooks: import("./node").ITag<{
174
- metadata?: Record<string, any>;
175
- }, void, void>;
176
- debug: import("./node").ITag<import("./node").DebugFriendlyConfig, void, void>;
177
- tunnel: import("./node").ITag<void, void, import("./node").TunnelRunner>;
178
- tunnelPolicy: import("./node").ITag<import("./node").TunnelTaskMiddlewarePolicyConfig, void, void>;
179
- authValidator: import("./node").ITag<void, void, void>;
180
- };
181
- tunnels: Readonly<{
182
- http: Readonly<{
183
- createClient(cfg: import("./node").HttpCreateClientConfig): import("./node").ExposureFetchClient;
184
- }>;
185
- }>;
186
- debug: {
187
- levels: {
188
- normal: import("./node").DebugConfig;
189
- verbose: import("./node").DebugConfig;
190
- };
191
- };
192
- };
193
- export declare function run(root: any, config?: any): Promise<RunResult<any>>;
@@ -3,5 +3,14 @@ export interface TunnelAllowList {
3
3
  enabled: boolean;
4
4
  taskIds: Set<string>;
5
5
  eventIds: Set<string>;
6
+ taskAcceptsAsyncContext: Map<string, boolean>;
7
+ eventAcceptsAsyncContext: Map<string, boolean>;
6
8
  }
7
- export declare function computeAllowList(store: Store): TunnelAllowList;
9
+ export interface AllowListSelectorErrorInfo {
10
+ selectorKind: "task" | "event";
11
+ candidateId: string;
12
+ tunnelResourceId: string;
13
+ error: unknown;
14
+ }
15
+ export type AllowListSelectorErrorReporter = (info: AllowListSelectorErrorInfo) => void;
16
+ export declare function computeAllowList(store: Store, onSelectorError?: AllowListSelectorErrorReporter): TunnelAllowList;
@@ -2,7 +2,7 @@ import type { IAsyncLocalStorage, IPlatformAdapter, PlatformId } from "../types"
2
2
  export declare class BrowserPlatformAdapter implements IPlatformAdapter {
3
3
  readonly id: PlatformId;
4
4
  init(): Promise<void>;
5
- onUncaughtException(handler: (error: Error) => void): () => void | undefined;
5
+ onUncaughtException(handler: (error: unknown) => void): () => void | undefined;
6
6
  onUnhandledRejection(handler: (reason: unknown) => void): () => void | undefined;
7
7
  onShutdownSignal(handler: () => void): () => void;
8
8
  exit(): void;
@@ -1,5 +1,22 @@
1
+ import type { IAsyncLocalStorage } from "../types";
1
2
  import { BrowserPlatformAdapter } from "./browser";
3
+ /**
4
+ * Edge runtimes (workers) are closer to browsers but may support
5
+ * AsyncLocalStorage via the `node:async_hooks` compat layer
6
+ * (e.g. Cloudflare Workers, Vercel Edge).
7
+ */
2
8
  export declare class EdgePlatformAdapter extends BrowserPlatformAdapter {
3
9
  readonly id: "edge";
10
+ private alsClass;
11
+ private alsProbed;
12
+ init(): Promise<void>;
13
+ /**
14
+ * Attempt to discover AsyncLocalStorage from the runtime.
15
+ * Checks globalThis first, then tries `import("node:async_hooks")`.
16
+ */
17
+ private probeGlobalAsyncLocalStorage;
18
+ private probeAsyncLocalStorage;
4
19
  onShutdownSignal(_handler: () => void): () => void;
20
+ hasAsyncLocalStorage(): boolean;
21
+ createAsyncLocalStorage<T>(): IAsyncLocalStorage<T>;
5
22
  }
@@ -1 +1 @@
1
- export declare function loadAsyncLocalStorageClass(): Promise<typeof import("async_hooks").AsyncLocalStorage>;
1
+ export declare function loadAsyncLocalStorageClass(): Promise<typeof import("node:async_hooks").AsyncLocalStorage>;
@@ -3,7 +3,7 @@ export declare class NodePlatformAdapter implements IPlatformAdapter {
3
3
  readonly id: "node";
4
4
  private alsClass;
5
5
  init(): Promise<void>;
6
- onUncaughtException(handler: (error: Error) => void): () => NodeJS.Process;
6
+ onUncaughtException(handler: (error: unknown) => void): () => NodeJS.Process;
7
7
  onUnhandledRejection(handler: (reason: unknown) => void): () => NodeJS.Process;
8
8
  onShutdownSignal(handler: () => void): () => void;
9
9
  exit(code: number): void;
@@ -1,9 +1,12 @@
1
1
  import type { IAsyncLocalStorage, IPlatformAdapter } from "../types";
2
2
  export declare class GenericUniversalPlatformAdapter implements IPlatformAdapter {
3
3
  readonly id: "universal";
4
+ private alsClass;
5
+ private alsProbed;
4
6
  init(): Promise<void>;
5
- onUncaughtException(handler: (error: any) => void): () => any;
6
- onUnhandledRejection(handler: (reason: any) => void): () => any;
7
+ private probeAsyncLocalStorage;
8
+ onUncaughtException(handler: (error: unknown) => void): () => void | undefined;
9
+ onUnhandledRejection(handler: (reason: unknown) => void): () => void | undefined;
7
10
  onShutdownSignal(handler: () => void): () => void;
8
11
  exit(): void;
9
12
  getEnv(key: string): string | undefined;
@@ -6,7 +6,7 @@ export declare class UniversalPlatformAdapter implements IPlatformAdapter {
6
6
  init(): Promise<void>;
7
7
  private ensureInner;
8
8
  private get;
9
- onUncaughtException(handler: (error: Error) => void): () => void;
9
+ onUncaughtException(handler: (error: unknown) => void): () => void;
10
10
  onUnhandledRejection(handler: (reason: unknown) => void): () => void;
11
11
  onShutdownSignal(handler: () => void): () => void;
12
12
  exit(code: number): void;
@@ -8,6 +8,7 @@ export declare function getDetectedEnvironment(): PlatformId;
8
8
  export declare function isNode(): boolean;
9
9
  export declare function isBrowser(): boolean;
10
10
  export declare function isUniversal(): boolean;
11
+ export declare function isEdge(): boolean;
11
12
  export type { IPlatformAdapter, IAsyncLocalStorage, PlatformId, PlatformSetTimeout, PlatformClearTimeout, } from "./types";
12
13
  export declare class PlatformAdapter implements IPlatformAdapter {
13
14
  private inner;
@@ -17,8 +18,8 @@ export declare class PlatformAdapter implements IPlatformAdapter {
17
18
  readonly clearTimeout: PlatformClearTimeout;
18
19
  constructor(env?: PlatformId);
19
20
  init(): Promise<void>;
20
- onUncaughtException(handler: (error: any) => void): () => void;
21
- onUnhandledRejection(handler: (reason: any) => void): () => void;
21
+ onUncaughtException(handler: (error: unknown) => void): () => void;
22
+ onUnhandledRejection(handler: (reason: unknown) => void): () => void;
22
23
  onShutdownSignal(handler: () => void): () => void;
23
24
  exit(code: number): void;
24
25
  getEnv(key: string): string | undefined;
@@ -7,7 +7,7 @@ export type PlatformSetTimeout = (...args: Parameters<typeof globalThis.setTimeo
7
7
  export type PlatformClearTimeout = (timeout: ReturnType<PlatformSetTimeout>) => void;
8
8
  export interface IPlatformAdapter {
9
9
  readonly id: PlatformId;
10
- onUncaughtException(handler: (error: Error) => void): () => void;
10
+ onUncaughtException(handler: (error: unknown) => void): () => void;
11
11
  onUnhandledRejection(handler: (reason: unknown) => void): () => void;
12
12
  onShutdownSignal(handler: () => void): () => void;
13
13
  exit(code: number): void;
@@ -23,9 +23,15 @@ export interface IAsyncLocalStorage<T> {
23
23
  run<R>(store: T, callback: () => R): R;
24
24
  }
25
25
  /**
26
- * Utility functions for environment detection
26
+ * Backward-compatible utility functions retained for consumers
27
+ * importing environment guards from `platform/types`.
27
28
  */
28
29
  export declare function isNode(): boolean;
29
30
  export declare function isBrowser(): boolean;
31
+ /**
32
+ * Legacy alias kept for compatibility.
33
+ * Worker-like runtimes are now modeled under the "edge" platform id.
34
+ */
30
35
  export declare function isWebWorker(): boolean;
36
+ export declare function isEdge(): boolean;
31
37
  export declare function isUniversal(): boolean;