@blokjs/runner 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/dist/Blok.d.ts +19 -0
  2. package/dist/Blok.js +184 -0
  3. package/dist/Blok.js.map +1 -0
  4. package/dist/BlokResponse.d.ts +16 -0
  5. package/dist/BlokResponse.js +28 -0
  6. package/dist/BlokResponse.js.map +1 -0
  7. package/dist/Configuration.d.ts +37 -0
  8. package/dist/Configuration.js +248 -0
  9. package/dist/Configuration.js.map +1 -0
  10. package/dist/ConfigurationResolver.d.ts +7 -0
  11. package/dist/ConfigurationResolver.js +15 -0
  12. package/dist/ConfigurationResolver.js.map +1 -0
  13. package/dist/DefaultLogger.d.ts +65 -0
  14. package/dist/DefaultLogger.js +101 -0
  15. package/dist/DefaultLogger.js.map +1 -0
  16. package/dist/LocalStorage.d.ts +7 -0
  17. package/dist/LocalStorage.js +56 -0
  18. package/dist/LocalStorage.js.map +1 -0
  19. package/dist/MemoryUsage.d.ts +22 -0
  20. package/dist/MemoryUsage.js +83 -0
  21. package/dist/MemoryUsage.js.map +1 -0
  22. package/dist/NodeMap.d.ts +7 -0
  23. package/dist/NodeMap.js +13 -0
  24. package/dist/NodeMap.js.map +1 -0
  25. package/dist/ResolverBase.d.ts +8 -0
  26. package/dist/ResolverBase.js +18 -0
  27. package/dist/ResolverBase.js.map +1 -0
  28. package/dist/Runner.d.ts +25 -0
  29. package/dist/Runner.js +32 -0
  30. package/dist/Runner.js.map +1 -0
  31. package/dist/RunnerNode.d.ts +9 -0
  32. package/dist/RunnerNode.js +8 -0
  33. package/dist/RunnerNode.js.map +1 -0
  34. package/dist/RunnerNodeBase.d.ts +4 -0
  35. package/dist/RunnerNodeBase.js +3 -0
  36. package/dist/RunnerNodeBase.js.map +1 -0
  37. package/dist/RunnerSteps.d.ts +14 -0
  38. package/dist/RunnerSteps.js +110 -0
  39. package/dist/RunnerSteps.js.map +1 -0
  40. package/dist/RuntimeAdapterNode.d.ts +19 -0
  41. package/dist/RuntimeAdapterNode.js +87 -0
  42. package/dist/RuntimeAdapterNode.js.map +1 -0
  43. package/dist/RuntimeRegistry.d.ts +61 -0
  44. package/dist/RuntimeRegistry.js +87 -0
  45. package/dist/RuntimeRegistry.js.map +1 -0
  46. package/dist/TriggerBase.d.ts +119 -0
  47. package/dist/TriggerBase.js +413 -0
  48. package/dist/TriggerBase.js.map +1 -0
  49. package/dist/adapters/BunRuntimeAdapter.d.ts +38 -0
  50. package/dist/adapters/BunRuntimeAdapter.js +169 -0
  51. package/dist/adapters/BunRuntimeAdapter.js.map +1 -0
  52. package/dist/adapters/DockerRuntimeAdapter.d.ts +85 -0
  53. package/dist/adapters/DockerRuntimeAdapter.js +298 -0
  54. package/dist/adapters/DockerRuntimeAdapter.js.map +1 -0
  55. package/dist/adapters/HttpRuntimeAdapter.d.ts +58 -0
  56. package/dist/adapters/HttpRuntimeAdapter.js +152 -0
  57. package/dist/adapters/HttpRuntimeAdapter.js.map +1 -0
  58. package/dist/adapters/NodeJsRuntimeAdapter.d.ts +23 -0
  59. package/dist/adapters/NodeJsRuntimeAdapter.js +67 -0
  60. package/dist/adapters/NodeJsRuntimeAdapter.js.map +1 -0
  61. package/dist/adapters/RuntimeAdapter.d.ts +42 -0
  62. package/dist/adapters/RuntimeAdapter.js +2 -0
  63. package/dist/adapters/RuntimeAdapter.js.map +1 -0
  64. package/dist/adapters/WasmRuntimeAdapter.d.ts +69 -0
  65. package/dist/adapters/WasmRuntimeAdapter.js +279 -0
  66. package/dist/adapters/WasmRuntimeAdapter.js.map +1 -0
  67. package/dist/cache/NodeResultCache.d.ts +286 -0
  68. package/dist/cache/NodeResultCache.js +499 -0
  69. package/dist/cache/NodeResultCache.js.map +1 -0
  70. package/dist/cache/index.d.ts +1 -0
  71. package/dist/cache/index.js +2 -0
  72. package/dist/cache/index.js.map +1 -0
  73. package/dist/cost/CostEstimator.d.ts +57 -0
  74. package/dist/cost/CostEstimator.js +171 -0
  75. package/dist/cost/CostEstimator.js.map +1 -0
  76. package/dist/cost/index.d.ts +4 -0
  77. package/dist/cost/index.js +3 -0
  78. package/dist/cost/index.js.map +1 -0
  79. package/dist/cost/pricing.d.ts +24 -0
  80. package/dist/cost/pricing.js +169 -0
  81. package/dist/cost/pricing.js.map +1 -0
  82. package/dist/defineNode.d.ts +155 -0
  83. package/dist/defineNode.js +191 -0
  84. package/dist/defineNode.js.map +1 -0
  85. package/dist/graphql/GraphQLSchemaGenerator.d.ts +129 -0
  86. package/dist/graphql/GraphQLSchemaGenerator.js +425 -0
  87. package/dist/graphql/GraphQLSchemaGenerator.js.map +1 -0
  88. package/dist/hmr/FileWatcher.d.ts +62 -0
  89. package/dist/hmr/FileWatcher.js +185 -0
  90. package/dist/hmr/FileWatcher.js.map +1 -0
  91. package/dist/hmr/HmrDevConsole.d.ts +13 -0
  92. package/dist/hmr/HmrDevConsole.js +46 -0
  93. package/dist/hmr/HmrDevConsole.js.map +1 -0
  94. package/dist/hmr/HotReloadManager.d.ts +84 -0
  95. package/dist/hmr/HotReloadManager.js +195 -0
  96. package/dist/hmr/HotReloadManager.js.map +1 -0
  97. package/dist/hmr/index.d.ts +39 -0
  98. package/dist/hmr/index.js +38 -0
  99. package/dist/hmr/index.js.map +1 -0
  100. package/dist/index.d.ts +107 -0
  101. package/dist/index.js +107 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/integrations/APMIntegration.d.ts +141 -0
  104. package/dist/integrations/APMIntegration.js +212 -0
  105. package/dist/integrations/APMIntegration.js.map +1 -0
  106. package/dist/integrations/AzureMonitorIntegration.d.ts +118 -0
  107. package/dist/integrations/AzureMonitorIntegration.js +254 -0
  108. package/dist/integrations/AzureMonitorIntegration.js.map +1 -0
  109. package/dist/integrations/CloudWatchIntegration.d.ts +135 -0
  110. package/dist/integrations/CloudWatchIntegration.js +293 -0
  111. package/dist/integrations/CloudWatchIntegration.js.map +1 -0
  112. package/dist/integrations/SentryIntegration.d.ts +153 -0
  113. package/dist/integrations/SentryIntegration.js +200 -0
  114. package/dist/integrations/SentryIntegration.js.map +1 -0
  115. package/dist/integrations/index.d.ts +19 -0
  116. package/dist/integrations/index.js +16 -0
  117. package/dist/integrations/index.js.map +1 -0
  118. package/dist/marketplace/RuntimeAutoScaler.d.ts +148 -0
  119. package/dist/marketplace/RuntimeAutoScaler.js +366 -0
  120. package/dist/marketplace/RuntimeAutoScaler.js.map +1 -0
  121. package/dist/marketplace/RuntimeCatalog.d.ts +174 -0
  122. package/dist/marketplace/RuntimeCatalog.js +339 -0
  123. package/dist/marketplace/RuntimeCatalog.js.map +1 -0
  124. package/dist/marketplace/RuntimeDiscovery.d.ts +86 -0
  125. package/dist/marketplace/RuntimeDiscovery.js +219 -0
  126. package/dist/marketplace/RuntimeDiscovery.js.map +1 -0
  127. package/dist/marketplace/RuntimeHealthMonitor.d.ts +100 -0
  128. package/dist/marketplace/RuntimeHealthMonitor.js +241 -0
  129. package/dist/marketplace/RuntimeHealthMonitor.js.map +1 -0
  130. package/dist/marketplace/RuntimeMetricsDashboard.d.ts +113 -0
  131. package/dist/marketplace/RuntimeMetricsDashboard.js +293 -0
  132. package/dist/marketplace/RuntimeMetricsDashboard.js.map +1 -0
  133. package/dist/monitoring/CircuitBreaker.d.ts +107 -0
  134. package/dist/monitoring/CircuitBreaker.js +238 -0
  135. package/dist/monitoring/CircuitBreaker.js.map +1 -0
  136. package/dist/monitoring/DistributedTracer.d.ts +125 -0
  137. package/dist/monitoring/DistributedTracer.js +230 -0
  138. package/dist/monitoring/DistributedTracer.js.map +1 -0
  139. package/dist/monitoring/HealthCheck.d.ts +54 -0
  140. package/dist/monitoring/HealthCheck.js +102 -0
  141. package/dist/monitoring/HealthCheck.js.map +1 -0
  142. package/dist/monitoring/PerformanceProfiler.d.ts +63 -0
  143. package/dist/monitoring/PerformanceProfiler.js +229 -0
  144. package/dist/monitoring/PerformanceProfiler.js.map +1 -0
  145. package/dist/monitoring/PrometheusBootstrap.d.ts +30 -0
  146. package/dist/monitoring/PrometheusBootstrap.js +71 -0
  147. package/dist/monitoring/PrometheusBootstrap.js.map +1 -0
  148. package/dist/monitoring/PrometheusMetricsBridge.d.ts +60 -0
  149. package/dist/monitoring/PrometheusMetricsBridge.js +216 -0
  150. package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -0
  151. package/dist/monitoring/RateLimiter.d.ts +58 -0
  152. package/dist/monitoring/RateLimiter.js +128 -0
  153. package/dist/monitoring/RateLimiter.js.map +1 -0
  154. package/dist/monitoring/StructuredLogger.d.ts +131 -0
  155. package/dist/monitoring/StructuredLogger.js +207 -0
  156. package/dist/monitoring/StructuredLogger.js.map +1 -0
  157. package/dist/monitoring/TracingBootstrap.d.ts +69 -0
  158. package/dist/monitoring/TracingBootstrap.js +129 -0
  159. package/dist/monitoring/TracingBootstrap.js.map +1 -0
  160. package/dist/monitoring/TriggerMetricsCollector.d.ts +94 -0
  161. package/dist/monitoring/TriggerMetricsCollector.js +174 -0
  162. package/dist/monitoring/TriggerMetricsCollector.js.map +1 -0
  163. package/dist/monitoring/index.d.ts +9 -0
  164. package/dist/monitoring/index.js +10 -0
  165. package/dist/monitoring/index.js.map +1 -0
  166. package/dist/openapi/OpenAPIGenerator.d.ts +192 -0
  167. package/dist/openapi/OpenAPIGenerator.js +373 -0
  168. package/dist/openapi/OpenAPIGenerator.js.map +1 -0
  169. package/dist/openapi/index.d.ts +20 -0
  170. package/dist/openapi/index.js +20 -0
  171. package/dist/openapi/index.js.map +1 -0
  172. package/dist/security/ABAC.d.ts +224 -0
  173. package/dist/security/ABAC.js +380 -0
  174. package/dist/security/ABAC.js.map +1 -0
  175. package/dist/security/AuditLogger.d.ts +242 -0
  176. package/dist/security/AuditLogger.js +317 -0
  177. package/dist/security/AuditLogger.js.map +1 -0
  178. package/dist/security/AuthMiddleware.d.ts +163 -0
  179. package/dist/security/AuthMiddleware.js +274 -0
  180. package/dist/security/AuthMiddleware.js.map +1 -0
  181. package/dist/security/EncryptionAtRest.d.ts +206 -0
  182. package/dist/security/EncryptionAtRest.js +236 -0
  183. package/dist/security/EncryptionAtRest.js.map +1 -0
  184. package/dist/security/OAuthProvider.d.ts +334 -0
  185. package/dist/security/OAuthProvider.js +719 -0
  186. package/dist/security/OAuthProvider.js.map +1 -0
  187. package/dist/security/PIIDetector.d.ts +233 -0
  188. package/dist/security/PIIDetector.js +354 -0
  189. package/dist/security/PIIDetector.js.map +1 -0
  190. package/dist/security/RBAC.d.ts +143 -0
  191. package/dist/security/RBAC.js +285 -0
  192. package/dist/security/RBAC.js.map +1 -0
  193. package/dist/security/SecretManager.d.ts +652 -0
  194. package/dist/security/SecretManager.js +1146 -0
  195. package/dist/security/SecretManager.js.map +1 -0
  196. package/dist/security/TLSConfig.d.ts +305 -0
  197. package/dist/security/TLSConfig.js +550 -0
  198. package/dist/security/TLSConfig.js.map +1 -0
  199. package/dist/security/index.d.ts +79 -0
  200. package/dist/security/index.js +80 -0
  201. package/dist/security/index.js.map +1 -0
  202. package/dist/testing/TestHarness.d.ts +189 -0
  203. package/dist/testing/TestHarness.js +272 -0
  204. package/dist/testing/TestHarness.js.map +1 -0
  205. package/dist/testing/TestLogger.d.ts +103 -0
  206. package/dist/testing/TestLogger.js +153 -0
  207. package/dist/testing/TestLogger.js.map +1 -0
  208. package/dist/testing/WorkflowTestRunner.d.ts +172 -0
  209. package/dist/testing/WorkflowTestRunner.js +355 -0
  210. package/dist/testing/WorkflowTestRunner.js.map +1 -0
  211. package/dist/testing/index.d.ts +21 -0
  212. package/dist/testing/index.js +22 -0
  213. package/dist/testing/index.js.map +1 -0
  214. package/dist/tracing/InMemoryRunStore.d.ts +44 -0
  215. package/dist/tracing/InMemoryRunStore.js +341 -0
  216. package/dist/tracing/InMemoryRunStore.js.map +1 -0
  217. package/dist/tracing/PostgresRunStore.d.ts +82 -0
  218. package/dist/tracing/PostgresRunStore.js +640 -0
  219. package/dist/tracing/PostgresRunStore.js.map +1 -0
  220. package/dist/tracing/RunStore.d.ts +38 -0
  221. package/dist/tracing/RunStore.js +2 -0
  222. package/dist/tracing/RunStore.js.map +1 -0
  223. package/dist/tracing/RunTracker.d.ts +75 -0
  224. package/dist/tracing/RunTracker.js +374 -0
  225. package/dist/tracing/RunTracker.js.map +1 -0
  226. package/dist/tracing/SqliteRunStore.d.ts +53 -0
  227. package/dist/tracing/SqliteRunStore.js +703 -0
  228. package/dist/tracing/SqliteRunStore.js.map +1 -0
  229. package/dist/tracing/TraceRouter.d.ts +47 -0
  230. package/dist/tracing/TraceRouter.js +904 -0
  231. package/dist/tracing/TraceRouter.js.map +1 -0
  232. package/dist/tracing/TracingLogger.d.ts +21 -0
  233. package/dist/tracing/TracingLogger.js +62 -0
  234. package/dist/tracing/TracingLogger.js.map +1 -0
  235. package/dist/tracing/createStore.d.ts +30 -0
  236. package/dist/tracing/createStore.js +75 -0
  237. package/dist/tracing/createStore.js.map +1 -0
  238. package/dist/tracing/index.d.ts +13 -0
  239. package/dist/tracing/index.js +9 -0
  240. package/dist/tracing/index.js.map +1 -0
  241. package/dist/tracing/sanitize.d.ts +7 -0
  242. package/dist/tracing/sanitize.js +95 -0
  243. package/dist/tracing/sanitize.js.map +1 -0
  244. package/dist/tracing/types.d.ts +178 -0
  245. package/dist/tracing/types.js +3 -0
  246. package/dist/tracing/types.js.map +1 -0
  247. package/dist/types/Average.d.ts +11 -0
  248. package/dist/types/Average.js +2 -0
  249. package/dist/types/Average.js.map +1 -0
  250. package/dist/types/Condition.d.ts +8 -0
  251. package/dist/types/Condition.js +2 -0
  252. package/dist/types/Condition.js.map +1 -0
  253. package/dist/types/Conditions.d.ts +5 -0
  254. package/dist/types/Conditions.js +2 -0
  255. package/dist/types/Conditions.js.map +1 -0
  256. package/dist/types/Config.d.ts +12 -0
  257. package/dist/types/Config.js +2 -0
  258. package/dist/types/Config.js.map +1 -0
  259. package/dist/types/Flow.d.ts +5 -0
  260. package/dist/types/Flow.js +2 -0
  261. package/dist/types/Flow.js.map +1 -0
  262. package/dist/types/GlobalOptions.d.ts +11 -0
  263. package/dist/types/GlobalOptions.js +2 -0
  264. package/dist/types/GlobalOptions.js.map +1 -0
  265. package/dist/types/Inputs.d.ts +5 -0
  266. package/dist/types/Inputs.js +2 -0
  267. package/dist/types/Inputs.js.map +1 -0
  268. package/dist/types/JsonLikeObject.d.ts +3 -0
  269. package/dist/types/JsonLikeObject.js +2 -0
  270. package/dist/types/JsonLikeObject.js.map +1 -0
  271. package/dist/types/Mapper.d.ts +5 -0
  272. package/dist/types/Mapper.js +2 -0
  273. package/dist/types/Mapper.js.map +1 -0
  274. package/dist/types/Node.d.ts +10 -0
  275. package/dist/types/Node.js +2 -0
  276. package/dist/types/Node.js.map +1 -0
  277. package/dist/types/ParamsDictionary.d.ts +3 -0
  278. package/dist/types/ParamsDictionary.js +2 -0
  279. package/dist/types/ParamsDictionary.js.map +1 -0
  280. package/dist/types/Properties.d.ts +5 -0
  281. package/dist/types/Properties.js +2 -0
  282. package/dist/types/Properties.js.map +1 -0
  283. package/dist/types/Targets.d.ts +5 -0
  284. package/dist/types/Targets.js +2 -0
  285. package/dist/types/Targets.js.map +1 -0
  286. package/dist/types/Trigger.d.ts +5 -0
  287. package/dist/types/Trigger.js +2 -0
  288. package/dist/types/Trigger.js.map +1 -0
  289. package/dist/types/TriggerHttp.d.ts +7 -0
  290. package/dist/types/TriggerHttp.js +2 -0
  291. package/dist/types/TriggerHttp.js.map +1 -0
  292. package/dist/types/TriggerResponse.d.ts +6 -0
  293. package/dist/types/TriggerResponse.js +2 -0
  294. package/dist/types/TriggerResponse.js.map +1 -0
  295. package/dist/types/Triggers.d.ts +5 -0
  296. package/dist/types/Triggers.js +2 -0
  297. package/dist/types/Triggers.js.map +1 -0
  298. package/dist/types/TryCatch.d.ts +6 -0
  299. package/dist/types/TryCatch.js +2 -0
  300. package/dist/types/TryCatch.js.map +1 -0
  301. package/dist/visualization/NodeDependencyGraph.d.ts +76 -0
  302. package/dist/visualization/NodeDependencyGraph.js +418 -0
  303. package/dist/visualization/NodeDependencyGraph.js.map +1 -0
  304. package/dist/visualization/WorkflowVisualizer.d.ts +144 -0
  305. package/dist/visualization/WorkflowVisualizer.js +446 -0
  306. package/dist/visualization/WorkflowVisualizer.js.map +1 -0
  307. package/package.json +95 -0
@@ -0,0 +1,19 @@
1
+ import type { Context, ResponseContext } from "@blokjs/shared";
2
+ import RunnerNode from "./RunnerNode";
3
+ import type { RuntimeAdapter } from "./adapters/RuntimeAdapter";
4
+ /**
5
+ * RuntimeAdapterNode is a wrapper that bridges the existing RunnerNode interface
6
+ * with the new RuntimeAdapter system.
7
+ *
8
+ * This allows runtime adapters to be used seamlessly within the existing
9
+ * workflow execution engine without breaking changes.
10
+ */
11
+ export declare class RuntimeAdapterNode extends RunnerNode {
12
+ private adapter;
13
+ private targetNode;
14
+ constructor(adapter: RuntimeAdapter, targetNode: RunnerNode);
15
+ /**
16
+ * Execute the node using the runtime adapter
17
+ */
18
+ run(ctx: Context): Promise<ResponseContext>;
19
+ }
@@ -0,0 +1,87 @@
1
+ import { GlobalError } from "@blokjs/shared";
2
+ import RunnerNode from "./RunnerNode";
3
+ import { RunTracker } from "./tracing/RunTracker";
4
+ /**
5
+ * RuntimeAdapterNode is a wrapper that bridges the existing RunnerNode interface
6
+ * with the new RuntimeAdapter system.
7
+ *
8
+ * This allows runtime adapters to be used seamlessly within the existing
9
+ * workflow execution engine without breaking changes.
10
+ */
11
+ export class RuntimeAdapterNode extends RunnerNode {
12
+ adapter;
13
+ targetNode;
14
+ constructor(adapter, targetNode) {
15
+ super();
16
+ this.adapter = adapter;
17
+ this.targetNode = targetNode;
18
+ // Copy properties from target node
19
+ this.node = targetNode.node;
20
+ this.name = targetNode.name;
21
+ this.type = targetNode.type;
22
+ this.runtime = targetNode.runtime;
23
+ this.active = targetNode.active;
24
+ this.stop = targetNode.stop;
25
+ this.set_var = targetNode.set_var;
26
+ }
27
+ /**
28
+ * Execute the node using the runtime adapter
29
+ */
30
+ async run(ctx) {
31
+ const result = await this.adapter.execute(this.targetNode, ctx);
32
+ // --- Trace: capture runtime metrics ---
33
+ const traceNodeId = ctx._traceNodeId;
34
+ if (traceNodeId && result.metrics) {
35
+ const tracker = RunTracker.getInstance();
36
+ const nodeRun = tracker.getNodeRun(traceNodeId);
37
+ if (nodeRun) {
38
+ nodeRun.metrics = {
39
+ duration_ms: result.metrics.duration_ms,
40
+ cpu_ms: result.metrics.cpu_ms,
41
+ memory_bytes: result.metrics.memory_bytes,
42
+ };
43
+ nodeRun.runtimeKind = this.adapter.kind;
44
+ }
45
+ }
46
+ // Ensure ctx.vars exists
47
+ if (!ctx.vars) {
48
+ ctx.vars = {};
49
+ }
50
+ const vars = ctx.vars;
51
+ // Merge SDK-returned vars into ctx.vars (if the SDK server includes them)
52
+ if (result.vars && typeof result.vars === "object") {
53
+ Object.assign(vars, result.vars);
54
+ }
55
+ // Auto-save the step's result data into ctx.vars[stepName]
56
+ // This ensures each runtime step's output is accessible downstream,
57
+ // even if the SDK server doesn't explicitly return vars
58
+ if (result.data != null) {
59
+ vars[this.name] = result.data;
60
+ }
61
+ // Convert errors to GlobalError if present
62
+ let error = null;
63
+ if (result.errors) {
64
+ if (result.errors instanceof GlobalError) {
65
+ error = result.errors;
66
+ }
67
+ else if (typeof result.errors === "object" && result.errors !== null) {
68
+ const err = result.errors;
69
+ error = new GlobalError(err.message || "Runtime execution error");
70
+ if (err.stack)
71
+ error.setStack(err.stack);
72
+ if (err.name)
73
+ error.setName(err.name);
74
+ }
75
+ else {
76
+ error = new GlobalError(String(result.errors));
77
+ }
78
+ }
79
+ // Convert ExecutionResult to ResponseContext
80
+ return {
81
+ success: result.success,
82
+ data: result.data,
83
+ error,
84
+ };
85
+ }
86
+ }
87
+ //# sourceMappingURL=RuntimeAdapterNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeAdapterNode.js","sourceRoot":"","sources":["../src/RuntimeAdapterNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { RuntimeAdapter, RuntimeKind } from "./adapters/RuntimeAdapter";
2
+ /**
3
+ * RuntimeRegistry is a singleton that manages all runtime adapters
4
+ *
5
+ * Usage:
6
+ * ```typescript
7
+ * const registry = RuntimeRegistry.getInstance();
8
+ * registry.register(new NodeJsRuntimeAdapter());
9
+ * registry.register(new HttpRuntimeAdapter("python3", "localhost", 9007));
10
+ *
11
+ * const adapter = registry.get("nodejs");
12
+ * const result = await adapter.execute(node, ctx);
13
+ * ```
14
+ */
15
+ export declare class RuntimeRegistry {
16
+ private static instance;
17
+ private adapters;
18
+ private constructor();
19
+ /**
20
+ * Get the singleton instance of RuntimeRegistry
21
+ */
22
+ static getInstance(): RuntimeRegistry;
23
+ /**
24
+ * Register a runtime adapter
25
+ *
26
+ * @param adapter - The runtime adapter to register
27
+ * @throws Error if adapter with same kind is already registered
28
+ */
29
+ register(adapter: RuntimeAdapter): void;
30
+ /**
31
+ * Get a runtime adapter by kind
32
+ *
33
+ * @param kind - The runtime kind (nodejs, python3, go, etc.)
34
+ * @returns The runtime adapter for the specified kind
35
+ * @throws Error if no adapter is registered for the specified kind
36
+ */
37
+ get(kind: RuntimeKind): RuntimeAdapter;
38
+ /**
39
+ * Check if a runtime adapter is registered
40
+ *
41
+ * @param kind - The runtime kind to check
42
+ * @returns true if adapter is registered, false otherwise
43
+ */
44
+ has(kind: RuntimeKind): boolean;
45
+ /**
46
+ * Get all registered runtime kinds
47
+ *
48
+ * @returns Array of registered runtime kinds
49
+ */
50
+ getRegisteredKinds(): RuntimeKind[];
51
+ /**
52
+ * Clear all registered adapters (useful for testing)
53
+ */
54
+ clear(): void;
55
+ /**
56
+ * Replace an existing adapter (useful for testing or hot-reload)
57
+ *
58
+ * @param adapter - The runtime adapter to replace
59
+ */
60
+ replace(adapter: RuntimeAdapter): void;
61
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * RuntimeRegistry is a singleton that manages all runtime adapters
3
+ *
4
+ * Usage:
5
+ * ```typescript
6
+ * const registry = RuntimeRegistry.getInstance();
7
+ * registry.register(new NodeJsRuntimeAdapter());
8
+ * registry.register(new HttpRuntimeAdapter("python3", "localhost", 9007));
9
+ *
10
+ * const adapter = registry.get("nodejs");
11
+ * const result = await adapter.execute(node, ctx);
12
+ * ```
13
+ */
14
+ export class RuntimeRegistry {
15
+ static instance;
16
+ adapters;
17
+ constructor() {
18
+ this.adapters = new Map();
19
+ }
20
+ /**
21
+ * Get the singleton instance of RuntimeRegistry
22
+ */
23
+ static getInstance() {
24
+ if (!RuntimeRegistry.instance) {
25
+ RuntimeRegistry.instance = new RuntimeRegistry();
26
+ }
27
+ return RuntimeRegistry.instance;
28
+ }
29
+ /**
30
+ * Register a runtime adapter
31
+ *
32
+ * @param adapter - The runtime adapter to register
33
+ * @throws Error if adapter with same kind is already registered
34
+ */
35
+ register(adapter) {
36
+ if (this.adapters.has(adapter.kind)) {
37
+ throw new Error(`Runtime adapter for '${adapter.kind}' is already registered`);
38
+ }
39
+ this.adapters.set(adapter.kind, adapter);
40
+ }
41
+ /**
42
+ * Get a runtime adapter by kind
43
+ *
44
+ * @param kind - The runtime kind (nodejs, python3, go, etc.)
45
+ * @returns The runtime adapter for the specified kind
46
+ * @throws Error if no adapter is registered for the specified kind
47
+ */
48
+ get(kind) {
49
+ const adapter = this.adapters.get(kind);
50
+ if (!adapter) {
51
+ throw new Error(`No runtime adapter registered for '${kind}'. Available runtimes: ${Array.from(this.adapters.keys()).join(", ")}`);
52
+ }
53
+ return adapter;
54
+ }
55
+ /**
56
+ * Check if a runtime adapter is registered
57
+ *
58
+ * @param kind - The runtime kind to check
59
+ * @returns true if adapter is registered, false otherwise
60
+ */
61
+ has(kind) {
62
+ return this.adapters.has(kind);
63
+ }
64
+ /**
65
+ * Get all registered runtime kinds
66
+ *
67
+ * @returns Array of registered runtime kinds
68
+ */
69
+ getRegisteredKinds() {
70
+ return Array.from(this.adapters.keys());
71
+ }
72
+ /**
73
+ * Clear all registered adapters (useful for testing)
74
+ */
75
+ clear() {
76
+ this.adapters.clear();
77
+ }
78
+ /**
79
+ * Replace an existing adapter (useful for testing or hot-reload)
80
+ *
81
+ * @param adapter - The runtime adapter to replace
82
+ */
83
+ replace(adapter) {
84
+ this.adapters.set(adapter.kind, adapter);
85
+ }
86
+ }
87
+ //# sourceMappingURL=RuntimeRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeRegistry.js","sourceRoot":"","sources":["../src/RuntimeRegistry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,eAAe;IACnB,MAAM,CAAC,QAAQ,CAAkB;IACjC,QAAQ,CAAmC;IAEnD;QACC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW;QACxB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC/B,eAAe,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,eAAe,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,QAAQ,CAAC,OAAuB;QACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACI,GAAG,CAAC,IAAiB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACd,sCAAsC,IAAI,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjH,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,IAAiB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,kBAAkB;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,KAAK;QACX,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,OAAuB;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACD"}
@@ -0,0 +1,119 @@
1
+ import { type Context, type LoggerContext, Trigger } from "@blokjs/shared";
2
+ import Configuration from "./Configuration";
3
+ import Runner from "./Runner";
4
+ import type { HMREvent } from "./hmr/FileWatcher";
5
+ import { HotReloadManager, type HotReloadManagerConfig, type HotReloadStats } from "./hmr/HotReloadManager";
6
+ import { CircuitBreaker } from "./monitoring/CircuitBreaker";
7
+ import type { CircuitBreakerConfig } from "./monitoring/CircuitBreaker";
8
+ import { HealthCheck } from "./monitoring/HealthCheck";
9
+ import type { DependencyCheckFn } from "./monitoring/HealthCheck";
10
+ import { PrometheusMetricsBridge } from "./monitoring/PrometheusMetricsBridge";
11
+ import { RateLimiter } from "./monitoring/RateLimiter";
12
+ import type { RateLimitConfig, RateLimitResult } from "./monitoring/RateLimiter";
13
+ import { TriggerMetricsCollector } from "./monitoring/TriggerMetricsCollector";
14
+ import type TriggerResponse from "./types/TriggerResponse";
15
+ export default abstract class TriggerBase extends Trigger {
16
+ configuration: Configuration;
17
+ /** Health check instance for this trigger */
18
+ protected healthCheck: HealthCheck;
19
+ /** Rate limiter instance - null if rate limiting is disabled */
20
+ protected rateLimiter: RateLimiter | null;
21
+ /** Circuit breaker instance - null if circuit breaker is disabled */
22
+ protected circuitBreaker: CircuitBreaker | null;
23
+ /** Enhanced metrics collector */
24
+ protected metricsCollector: TriggerMetricsCollector;
25
+ /** Prometheus metrics bridge for exporting to /metrics */
26
+ protected metricsBridge: PrometheusMetricsBridge;
27
+ /** Hot reload manager - null if HMR is disabled */
28
+ protected hmr: HotReloadManager | null;
29
+ /** Number of currently in-flight requests (for zero-downtime reload) */
30
+ protected inFlightRequests: number;
31
+ constructor();
32
+ abstract listen(): Promise<number>;
33
+ getConfiguration(): Configuration;
34
+ getRunner(): Runner;
35
+ /**
36
+ * Enable hot reload for this trigger. Only active in development
37
+ * (NODE_ENV !== 'production') unless BLOK_HMR=true is explicitly set.
38
+ */
39
+ enableHotReload(config?: Partial<HotReloadManagerConfig>): Promise<void>;
40
+ /**
41
+ * Called when a node file changes. Default: invalidates module cache.
42
+ * Override in subclasses for custom behavior (e.g., re-running loadNodes).
43
+ */
44
+ protected onHmrNodeChange(event: HMREvent): Promise<void>;
45
+ /**
46
+ * Called when a workflow file changes. Default: no-op.
47
+ * HTTP trigger re-reads per request so needs no action.
48
+ * Non-HTTP triggers should override to reload workflow lists.
49
+ */
50
+ protected onHmrWorkflowChange(_event: HMREvent): Promise<void>;
51
+ /**
52
+ * Called when a trigger config file changes. Default: no-op.
53
+ * Override for graceful stop + restart behavior.
54
+ */
55
+ protected onHmrTriggerChange(_event: HMREvent): Promise<void>;
56
+ /**
57
+ * Wait for all in-flight requests to complete before proceeding.
58
+ * Used during graceful reload to avoid dropping connections.
59
+ */
60
+ protected waitForInFlightRequests(timeoutMs?: number): Promise<void>;
61
+ /**
62
+ * Get HMR statistics. Returns null if HMR is not enabled.
63
+ */
64
+ getHmrStats(): HotReloadStats | null;
65
+ /**
66
+ * Stop the HMR system and clean up watchers.
67
+ */
68
+ destroyHmr(): Promise<void>;
69
+ run(ctx: Context): Promise<TriggerResponse>;
70
+ /**
71
+ * Build a human-readable trigger summary for trace display.
72
+ */
73
+ protected buildTraceTriggerSummary(ctx: Context): string;
74
+ createContext(logger?: LoggerContext, blueprintPath?: string, id?: string): Context;
75
+ startCounter(): number;
76
+ endCounter(start: number): number;
77
+ /**
78
+ * Enable rate limiting for this trigger.
79
+ */
80
+ enableRateLimiting(config: RateLimitConfig): void;
81
+ /**
82
+ * Check rate limit for a given key. Returns the result without blocking.
83
+ */
84
+ checkRateLimit(key: string): RateLimitResult;
85
+ /**
86
+ * Enable circuit breaker for this trigger.
87
+ */
88
+ enableCircuitBreaker(config: CircuitBreakerConfig): void;
89
+ /**
90
+ * Register a dependency health check (e.g., database, queue broker).
91
+ */
92
+ registerHealthDependency(name: string, checkFn: DependencyCheckFn): void;
93
+ /**
94
+ * Get full health status including all dependencies.
95
+ */
96
+ getHealth(): Promise<import(".").HealthCheckResult>;
97
+ /**
98
+ * Get liveness probe result.
99
+ */
100
+ getLiveness(): {
101
+ status: "ok";
102
+ uptime: number;
103
+ };
104
+ /**
105
+ * Get readiness probe result.
106
+ */
107
+ getReadiness(): Promise<{
108
+ ready: boolean;
109
+ status: import(".").HealthStatus;
110
+ }>;
111
+ /**
112
+ * Get enhanced trigger metrics snapshot.
113
+ */
114
+ getTriggerMetrics(): import(".").TriggerMetrics;
115
+ /**
116
+ * Clean up monitoring resources on shutdown.
117
+ */
118
+ destroyMonitoring(): void;
119
+ }