@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.
- package/dist/Blok.d.ts +19 -0
- package/dist/Blok.js +184 -0
- package/dist/Blok.js.map +1 -0
- package/dist/BlokResponse.d.ts +16 -0
- package/dist/BlokResponse.js +28 -0
- package/dist/BlokResponse.js.map +1 -0
- package/dist/Configuration.d.ts +37 -0
- package/dist/Configuration.js +248 -0
- package/dist/Configuration.js.map +1 -0
- package/dist/ConfigurationResolver.d.ts +7 -0
- package/dist/ConfigurationResolver.js +15 -0
- package/dist/ConfigurationResolver.js.map +1 -0
- package/dist/DefaultLogger.d.ts +65 -0
- package/dist/DefaultLogger.js +101 -0
- package/dist/DefaultLogger.js.map +1 -0
- package/dist/LocalStorage.d.ts +7 -0
- package/dist/LocalStorage.js +56 -0
- package/dist/LocalStorage.js.map +1 -0
- package/dist/MemoryUsage.d.ts +22 -0
- package/dist/MemoryUsage.js +83 -0
- package/dist/MemoryUsage.js.map +1 -0
- package/dist/NodeMap.d.ts +7 -0
- package/dist/NodeMap.js +13 -0
- package/dist/NodeMap.js.map +1 -0
- package/dist/ResolverBase.d.ts +8 -0
- package/dist/ResolverBase.js +18 -0
- package/dist/ResolverBase.js.map +1 -0
- package/dist/Runner.d.ts +25 -0
- package/dist/Runner.js +32 -0
- package/dist/Runner.js.map +1 -0
- package/dist/RunnerNode.d.ts +9 -0
- package/dist/RunnerNode.js +8 -0
- package/dist/RunnerNode.js.map +1 -0
- package/dist/RunnerNodeBase.d.ts +4 -0
- package/dist/RunnerNodeBase.js +3 -0
- package/dist/RunnerNodeBase.js.map +1 -0
- package/dist/RunnerSteps.d.ts +14 -0
- package/dist/RunnerSteps.js +110 -0
- package/dist/RunnerSteps.js.map +1 -0
- package/dist/RuntimeAdapterNode.d.ts +19 -0
- package/dist/RuntimeAdapterNode.js +87 -0
- package/dist/RuntimeAdapterNode.js.map +1 -0
- package/dist/RuntimeRegistry.d.ts +61 -0
- package/dist/RuntimeRegistry.js +87 -0
- package/dist/RuntimeRegistry.js.map +1 -0
- package/dist/TriggerBase.d.ts +119 -0
- package/dist/TriggerBase.js +413 -0
- package/dist/TriggerBase.js.map +1 -0
- package/dist/adapters/BunRuntimeAdapter.d.ts +38 -0
- package/dist/adapters/BunRuntimeAdapter.js +169 -0
- package/dist/adapters/BunRuntimeAdapter.js.map +1 -0
- package/dist/adapters/DockerRuntimeAdapter.d.ts +85 -0
- package/dist/adapters/DockerRuntimeAdapter.js +298 -0
- package/dist/adapters/DockerRuntimeAdapter.js.map +1 -0
- package/dist/adapters/HttpRuntimeAdapter.d.ts +58 -0
- package/dist/adapters/HttpRuntimeAdapter.js +152 -0
- package/dist/adapters/HttpRuntimeAdapter.js.map +1 -0
- package/dist/adapters/NodeJsRuntimeAdapter.d.ts +23 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js +67 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js.map +1 -0
- package/dist/adapters/RuntimeAdapter.d.ts +42 -0
- package/dist/adapters/RuntimeAdapter.js +2 -0
- package/dist/adapters/RuntimeAdapter.js.map +1 -0
- package/dist/adapters/WasmRuntimeAdapter.d.ts +69 -0
- package/dist/adapters/WasmRuntimeAdapter.js +279 -0
- package/dist/adapters/WasmRuntimeAdapter.js.map +1 -0
- package/dist/cache/NodeResultCache.d.ts +286 -0
- package/dist/cache/NodeResultCache.js +499 -0
- package/dist/cache/NodeResultCache.js.map +1 -0
- package/dist/cache/index.d.ts +1 -0
- package/dist/cache/index.js +2 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cost/CostEstimator.d.ts +57 -0
- package/dist/cost/CostEstimator.js +171 -0
- package/dist/cost/CostEstimator.js.map +1 -0
- package/dist/cost/index.d.ts +4 -0
- package/dist/cost/index.js +3 -0
- package/dist/cost/index.js.map +1 -0
- package/dist/cost/pricing.d.ts +24 -0
- package/dist/cost/pricing.js +169 -0
- package/dist/cost/pricing.js.map +1 -0
- package/dist/defineNode.d.ts +155 -0
- package/dist/defineNode.js +191 -0
- package/dist/defineNode.js.map +1 -0
- package/dist/graphql/GraphQLSchemaGenerator.d.ts +129 -0
- package/dist/graphql/GraphQLSchemaGenerator.js +425 -0
- package/dist/graphql/GraphQLSchemaGenerator.js.map +1 -0
- package/dist/hmr/FileWatcher.d.ts +62 -0
- package/dist/hmr/FileWatcher.js +185 -0
- package/dist/hmr/FileWatcher.js.map +1 -0
- package/dist/hmr/HmrDevConsole.d.ts +13 -0
- package/dist/hmr/HmrDevConsole.js +46 -0
- package/dist/hmr/HmrDevConsole.js.map +1 -0
- package/dist/hmr/HotReloadManager.d.ts +84 -0
- package/dist/hmr/HotReloadManager.js +195 -0
- package/dist/hmr/HotReloadManager.js.map +1 -0
- package/dist/hmr/index.d.ts +39 -0
- package/dist/hmr/index.js +38 -0
- package/dist/hmr/index.js.map +1 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/APMIntegration.d.ts +141 -0
- package/dist/integrations/APMIntegration.js +212 -0
- package/dist/integrations/APMIntegration.js.map +1 -0
- package/dist/integrations/AzureMonitorIntegration.d.ts +118 -0
- package/dist/integrations/AzureMonitorIntegration.js +254 -0
- package/dist/integrations/AzureMonitorIntegration.js.map +1 -0
- package/dist/integrations/CloudWatchIntegration.d.ts +135 -0
- package/dist/integrations/CloudWatchIntegration.js +293 -0
- package/dist/integrations/CloudWatchIntegration.js.map +1 -0
- package/dist/integrations/SentryIntegration.d.ts +153 -0
- package/dist/integrations/SentryIntegration.js +200 -0
- package/dist/integrations/SentryIntegration.js.map +1 -0
- package/dist/integrations/index.d.ts +19 -0
- package/dist/integrations/index.js +16 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/marketplace/RuntimeAutoScaler.d.ts +148 -0
- package/dist/marketplace/RuntimeAutoScaler.js +366 -0
- package/dist/marketplace/RuntimeAutoScaler.js.map +1 -0
- package/dist/marketplace/RuntimeCatalog.d.ts +174 -0
- package/dist/marketplace/RuntimeCatalog.js +339 -0
- package/dist/marketplace/RuntimeCatalog.js.map +1 -0
- package/dist/marketplace/RuntimeDiscovery.d.ts +86 -0
- package/dist/marketplace/RuntimeDiscovery.js +219 -0
- package/dist/marketplace/RuntimeDiscovery.js.map +1 -0
- package/dist/marketplace/RuntimeHealthMonitor.d.ts +100 -0
- package/dist/marketplace/RuntimeHealthMonitor.js +241 -0
- package/dist/marketplace/RuntimeHealthMonitor.js.map +1 -0
- package/dist/marketplace/RuntimeMetricsDashboard.d.ts +113 -0
- package/dist/marketplace/RuntimeMetricsDashboard.js +293 -0
- package/dist/marketplace/RuntimeMetricsDashboard.js.map +1 -0
- package/dist/monitoring/CircuitBreaker.d.ts +107 -0
- package/dist/monitoring/CircuitBreaker.js +238 -0
- package/dist/monitoring/CircuitBreaker.js.map +1 -0
- package/dist/monitoring/DistributedTracer.d.ts +125 -0
- package/dist/monitoring/DistributedTracer.js +230 -0
- package/dist/monitoring/DistributedTracer.js.map +1 -0
- package/dist/monitoring/HealthCheck.d.ts +54 -0
- package/dist/monitoring/HealthCheck.js +102 -0
- package/dist/monitoring/HealthCheck.js.map +1 -0
- package/dist/monitoring/PerformanceProfiler.d.ts +63 -0
- package/dist/monitoring/PerformanceProfiler.js +229 -0
- package/dist/monitoring/PerformanceProfiler.js.map +1 -0
- package/dist/monitoring/PrometheusBootstrap.d.ts +30 -0
- package/dist/monitoring/PrometheusBootstrap.js +71 -0
- package/dist/monitoring/PrometheusBootstrap.js.map +1 -0
- package/dist/monitoring/PrometheusMetricsBridge.d.ts +60 -0
- package/dist/monitoring/PrometheusMetricsBridge.js +216 -0
- package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -0
- package/dist/monitoring/RateLimiter.d.ts +58 -0
- package/dist/monitoring/RateLimiter.js +128 -0
- package/dist/monitoring/RateLimiter.js.map +1 -0
- package/dist/monitoring/StructuredLogger.d.ts +131 -0
- package/dist/monitoring/StructuredLogger.js +207 -0
- package/dist/monitoring/StructuredLogger.js.map +1 -0
- package/dist/monitoring/TracingBootstrap.d.ts +69 -0
- package/dist/monitoring/TracingBootstrap.js +129 -0
- package/dist/monitoring/TracingBootstrap.js.map +1 -0
- package/dist/monitoring/TriggerMetricsCollector.d.ts +94 -0
- package/dist/monitoring/TriggerMetricsCollector.js +174 -0
- package/dist/monitoring/TriggerMetricsCollector.js.map +1 -0
- package/dist/monitoring/index.d.ts +9 -0
- package/dist/monitoring/index.js +10 -0
- package/dist/monitoring/index.js.map +1 -0
- package/dist/openapi/OpenAPIGenerator.d.ts +192 -0
- package/dist/openapi/OpenAPIGenerator.js +373 -0
- package/dist/openapi/OpenAPIGenerator.js.map +1 -0
- package/dist/openapi/index.d.ts +20 -0
- package/dist/openapi/index.js +20 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/security/ABAC.d.ts +224 -0
- package/dist/security/ABAC.js +380 -0
- package/dist/security/ABAC.js.map +1 -0
- package/dist/security/AuditLogger.d.ts +242 -0
- package/dist/security/AuditLogger.js +317 -0
- package/dist/security/AuditLogger.js.map +1 -0
- package/dist/security/AuthMiddleware.d.ts +163 -0
- package/dist/security/AuthMiddleware.js +274 -0
- package/dist/security/AuthMiddleware.js.map +1 -0
- package/dist/security/EncryptionAtRest.d.ts +206 -0
- package/dist/security/EncryptionAtRest.js +236 -0
- package/dist/security/EncryptionAtRest.js.map +1 -0
- package/dist/security/OAuthProvider.d.ts +334 -0
- package/dist/security/OAuthProvider.js +719 -0
- package/dist/security/OAuthProvider.js.map +1 -0
- package/dist/security/PIIDetector.d.ts +233 -0
- package/dist/security/PIIDetector.js +354 -0
- package/dist/security/PIIDetector.js.map +1 -0
- package/dist/security/RBAC.d.ts +143 -0
- package/dist/security/RBAC.js +285 -0
- package/dist/security/RBAC.js.map +1 -0
- package/dist/security/SecretManager.d.ts +652 -0
- package/dist/security/SecretManager.js +1146 -0
- package/dist/security/SecretManager.js.map +1 -0
- package/dist/security/TLSConfig.d.ts +305 -0
- package/dist/security/TLSConfig.js +550 -0
- package/dist/security/TLSConfig.js.map +1 -0
- package/dist/security/index.d.ts +79 -0
- package/dist/security/index.js +80 -0
- package/dist/security/index.js.map +1 -0
- package/dist/testing/TestHarness.d.ts +189 -0
- package/dist/testing/TestHarness.js +272 -0
- package/dist/testing/TestHarness.js.map +1 -0
- package/dist/testing/TestLogger.d.ts +103 -0
- package/dist/testing/TestLogger.js +153 -0
- package/dist/testing/TestLogger.js.map +1 -0
- package/dist/testing/WorkflowTestRunner.d.ts +172 -0
- package/dist/testing/WorkflowTestRunner.js +355 -0
- package/dist/testing/WorkflowTestRunner.js.map +1 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.js +22 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tracing/InMemoryRunStore.d.ts +44 -0
- package/dist/tracing/InMemoryRunStore.js +341 -0
- package/dist/tracing/InMemoryRunStore.js.map +1 -0
- package/dist/tracing/PostgresRunStore.d.ts +82 -0
- package/dist/tracing/PostgresRunStore.js +640 -0
- package/dist/tracing/PostgresRunStore.js.map +1 -0
- package/dist/tracing/RunStore.d.ts +38 -0
- package/dist/tracing/RunStore.js +2 -0
- package/dist/tracing/RunStore.js.map +1 -0
- package/dist/tracing/RunTracker.d.ts +75 -0
- package/dist/tracing/RunTracker.js +374 -0
- package/dist/tracing/RunTracker.js.map +1 -0
- package/dist/tracing/SqliteRunStore.d.ts +53 -0
- package/dist/tracing/SqliteRunStore.js +703 -0
- package/dist/tracing/SqliteRunStore.js.map +1 -0
- package/dist/tracing/TraceRouter.d.ts +47 -0
- package/dist/tracing/TraceRouter.js +904 -0
- package/dist/tracing/TraceRouter.js.map +1 -0
- package/dist/tracing/TracingLogger.d.ts +21 -0
- package/dist/tracing/TracingLogger.js +62 -0
- package/dist/tracing/TracingLogger.js.map +1 -0
- package/dist/tracing/createStore.d.ts +30 -0
- package/dist/tracing/createStore.js +75 -0
- package/dist/tracing/createStore.js.map +1 -0
- package/dist/tracing/index.d.ts +13 -0
- package/dist/tracing/index.js +9 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/sanitize.d.ts +7 -0
- package/dist/tracing/sanitize.js +95 -0
- package/dist/tracing/sanitize.js.map +1 -0
- package/dist/tracing/types.d.ts +178 -0
- package/dist/tracing/types.js +3 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/types/Average.d.ts +11 -0
- package/dist/types/Average.js +2 -0
- package/dist/types/Average.js.map +1 -0
- package/dist/types/Condition.d.ts +8 -0
- package/dist/types/Condition.js +2 -0
- package/dist/types/Condition.js.map +1 -0
- package/dist/types/Conditions.d.ts +5 -0
- package/dist/types/Conditions.js +2 -0
- package/dist/types/Conditions.js.map +1 -0
- package/dist/types/Config.d.ts +12 -0
- package/dist/types/Config.js +2 -0
- package/dist/types/Config.js.map +1 -0
- package/dist/types/Flow.d.ts +5 -0
- package/dist/types/Flow.js +2 -0
- package/dist/types/Flow.js.map +1 -0
- package/dist/types/GlobalOptions.d.ts +11 -0
- package/dist/types/GlobalOptions.js +2 -0
- package/dist/types/GlobalOptions.js.map +1 -0
- package/dist/types/Inputs.d.ts +5 -0
- package/dist/types/Inputs.js +2 -0
- package/dist/types/Inputs.js.map +1 -0
- package/dist/types/JsonLikeObject.d.ts +3 -0
- package/dist/types/JsonLikeObject.js +2 -0
- package/dist/types/JsonLikeObject.js.map +1 -0
- package/dist/types/Mapper.d.ts +5 -0
- package/dist/types/Mapper.js +2 -0
- package/dist/types/Mapper.js.map +1 -0
- package/dist/types/Node.d.ts +10 -0
- package/dist/types/Node.js +2 -0
- package/dist/types/Node.js.map +1 -0
- package/dist/types/ParamsDictionary.d.ts +3 -0
- package/dist/types/ParamsDictionary.js +2 -0
- package/dist/types/ParamsDictionary.js.map +1 -0
- package/dist/types/Properties.d.ts +5 -0
- package/dist/types/Properties.js +2 -0
- package/dist/types/Properties.js.map +1 -0
- package/dist/types/Targets.d.ts +5 -0
- package/dist/types/Targets.js +2 -0
- package/dist/types/Targets.js.map +1 -0
- package/dist/types/Trigger.d.ts +5 -0
- package/dist/types/Trigger.js +2 -0
- package/dist/types/Trigger.js.map +1 -0
- package/dist/types/TriggerHttp.d.ts +7 -0
- package/dist/types/TriggerHttp.js +2 -0
- package/dist/types/TriggerHttp.js.map +1 -0
- package/dist/types/TriggerResponse.d.ts +6 -0
- package/dist/types/TriggerResponse.js +2 -0
- package/dist/types/TriggerResponse.js.map +1 -0
- package/dist/types/Triggers.d.ts +5 -0
- package/dist/types/Triggers.js +2 -0
- package/dist/types/Triggers.js.map +1 -0
- package/dist/types/TryCatch.d.ts +6 -0
- package/dist/types/TryCatch.js +2 -0
- package/dist/types/TryCatch.js.map +1 -0
- package/dist/visualization/NodeDependencyGraph.d.ts +76 -0
- package/dist/visualization/NodeDependencyGraph.js +418 -0
- package/dist/visualization/NodeDependencyGraph.js.map +1 -0
- package/dist/visualization/WorkflowVisualizer.d.ts +144 -0
- package/dist/visualization/WorkflowVisualizer.js +446 -0
- package/dist/visualization/WorkflowVisualizer.js.map +1 -0
- 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":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IACzC,OAAO,CAAiB;IACxB,UAAU,CAAa;IAE/B,YAAY,OAAuB,EAAE,UAAsB;QAC1D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,mCAAmC;QACnC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,GAAY;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEhE,yCAAyC;QACzC,MAAM,WAAW,GAAI,GAA+B,CAAC,YAAkC,CAAC;QACxF,IAAI,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,OAAO,GAAG;oBACjB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW;oBACvC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;oBAC7B,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY;iBACzC,CAAC;gBACF,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACzC,CAAC;QACF,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,GAA+B,CAAC,IAAI,GAAG,EAAE,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAA+B,CAAC;QAEjD,0EAA0E;QAC1E,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,2DAA2D;QAC3D,oEAAoE;QACpE,wDAAwD;QACxD,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,CAAC;QAED,2CAA2C;QAC3C,IAAI,KAAK,GAAuB,IAAI,CAAC;QACrC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,MAAM,CAAC,MAAM,YAAY,WAAW,EAAE,CAAC;gBAC1C,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YACvB,CAAC;iBAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACxE,MAAM,GAAG,GAAG,MAAM,CAAC,MAA6D,CAAC;gBACjF,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,IAAI,yBAAyB,CAAC,CAAC;gBAClE,IAAI,GAAG,CAAC,KAAK;oBAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,GAAG,CAAC,IAAI;oBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACP,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;QAED,6CAA6C;QAC7C,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK;SACL,CAAC;IACH,CAAC;CACD"}
|
|
@@ -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
|
+
}
|