@blokjs/runner 0.6.20 → 0.7.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 +2 -0
- package/dist/Blok.js +42 -110
- package/dist/Blok.js.map +1 -1
- package/dist/DefaultLogger.d.ts +13 -0
- package/dist/DefaultLogger.js +25 -0
- package/dist/DefaultLogger.js.map +1 -1
- package/dist/RunnerSteps.d.ts +23 -0
- package/dist/RunnerSteps.js +128 -87
- package/dist/RunnerSteps.js.map +1 -1
- package/dist/SubworkflowNode.js +19 -0
- package/dist/SubworkflowNode.js.map +1 -1
- package/dist/TriggerBase.d.ts +12 -0
- package/dist/TriggerBase.js +216 -181
- package/dist/TriggerBase.js.map +1 -1
- package/dist/adapters/grpc/GrpcRuntimeAdapter.d.ts +9 -0
- package/dist/adapters/grpc/GrpcRuntimeAdapter.js +76 -6
- package/dist/adapters/grpc/GrpcRuntimeAdapter.js.map +1 -1
- package/dist/index.d.ts +4 -39
- package/dist/index.js +7 -32
- package/dist/index.js.map +1 -1
- package/dist/monitoring/JanitorMetrics.d.ts +3 -0
- package/dist/monitoring/JanitorMetrics.js +11 -0
- package/dist/monitoring/JanitorMetrics.js.map +1 -1
- package/dist/monitoring/ProcessErrorMetrics.d.ts +32 -0
- package/dist/monitoring/ProcessErrorMetrics.js +43 -0
- package/dist/monitoring/ProcessErrorMetrics.js.map +1 -0
- package/dist/monitoring/PrometheusMetricsBridge.d.ts +7 -0
- package/dist/monitoring/PrometheusMetricsBridge.js +8 -2
- package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -1
- package/dist/monitoring/SubworkflowMetrics.d.ts +25 -0
- package/dist/monitoring/SubworkflowMetrics.js +38 -0
- package/dist/monitoring/SubworkflowMetrics.js.map +1 -0
- package/dist/observability/ErrorSink.d.ts +23 -0
- package/dist/observability/ErrorSink.js +32 -0
- package/dist/observability/ErrorSink.js.map +1 -0
- package/dist/observability/SentryIntegration.d.ts +9 -0
- package/dist/observability/SentryIntegration.js +31 -0
- package/dist/observability/SentryIntegration.js.map +1 -0
- package/dist/scheduling/DebounceCoordinator.d.ts +7 -53
- package/dist/scheduling/DebounceCoordinator.js +8 -207
- package/dist/scheduling/DebounceCoordinator.js.map +1 -1
- package/dist/tracing/InMemoryRunStore.d.ts +5 -1
- package/dist/tracing/InMemoryRunStore.js +14 -0
- package/dist/tracing/InMemoryRunStore.js.map +1 -1
- package/dist/tracing/Janitor.js +3 -0
- package/dist/tracing/Janitor.js.map +1 -1
- package/dist/tracing/PostgresRunStore.d.ts +4 -1
- package/dist/tracing/PostgresRunStore.js +73 -3
- package/dist/tracing/PostgresRunStore.js.map +1 -1
- package/dist/tracing/RunStore.d.ts +17 -1
- package/dist/tracing/RunTracker.d.ts +13 -34
- package/dist/tracing/RunTracker.js +62 -32
- package/dist/tracing/RunTracker.js.map +1 -1
- package/dist/tracing/SqliteRunStore.d.ts +4 -1
- package/dist/tracing/SqliteRunStore.js +60 -0
- package/dist/tracing/SqliteRunStore.js.map +1 -1
- package/dist/tracing/TraceRouter.d.ts +13 -0
- package/dist/tracing/TraceRouter.js +43 -11
- package/dist/tracing/TraceRouter.js.map +1 -1
- package/dist/tracing/TracingLogger.js +22 -0
- package/dist/tracing/TracingLogger.js.map +1 -1
- package/dist/tracing/createStore.js +51 -22
- package/dist/tracing/createStore.js.map +1 -1
- package/dist/tracing/types.d.ts +22 -0
- package/dist/types/GlobalOptions.d.ts +5 -7
- package/dist/workflow/WorkflowNormalizer.js +63 -0
- package/dist/workflow/WorkflowNormalizer.js.map +1 -1
- package/package.json +7 -4
- package/dist/cache/NodeResultCache.d.ts +0 -286
- package/dist/cache/NodeResultCache.js +0 -506
- package/dist/cache/NodeResultCache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -1
- package/dist/cache/index.js +0 -2
- package/dist/cache/index.js.map +0 -1
- package/dist/concurrency/ConcurrencyBackend.d.ts +0 -61
- package/dist/concurrency/ConcurrencyBackend.js +0 -20
- package/dist/concurrency/ConcurrencyBackend.js.map +0 -1
- package/dist/concurrency/NatsKvConcurrencyBackend.d.ts +0 -64
- package/dist/concurrency/NatsKvConcurrencyBackend.js +0 -310
- package/dist/concurrency/NatsKvConcurrencyBackend.js.map +0 -1
- package/dist/concurrency/RedisConcurrencyBackend.d.ts +0 -64
- package/dist/concurrency/RedisConcurrencyBackend.js +0 -374
- package/dist/concurrency/RedisConcurrencyBackend.js.map +0 -1
- package/dist/concurrency/createConcurrencyBackend.d.ts +0 -24
- package/dist/concurrency/createConcurrencyBackend.js +0 -38
- package/dist/concurrency/createConcurrencyBackend.js.map +0 -1
- package/dist/graphql/GraphQLSchemaGenerator.d.ts +0 -129
- package/dist/graphql/GraphQLSchemaGenerator.js +0 -425
- package/dist/graphql/GraphQLSchemaGenerator.js.map +0 -1
- package/dist/integrations/APMIntegration.d.ts +0 -141
- package/dist/integrations/APMIntegration.js +0 -212
- package/dist/integrations/APMIntegration.js.map +0 -1
- package/dist/integrations/AzureMonitorIntegration.d.ts +0 -118
- package/dist/integrations/AzureMonitorIntegration.js +0 -254
- package/dist/integrations/AzureMonitorIntegration.js.map +0 -1
- package/dist/integrations/CloudWatchIntegration.d.ts +0 -135
- package/dist/integrations/CloudWatchIntegration.js +0 -293
- package/dist/integrations/CloudWatchIntegration.js.map +0 -1
- package/dist/integrations/SentryIntegration.d.ts +0 -153
- package/dist/integrations/SentryIntegration.js +0 -200
- package/dist/integrations/SentryIntegration.js.map +0 -1
- package/dist/integrations/index.d.ts +0 -19
- package/dist/integrations/index.js +0 -16
- package/dist/integrations/index.js.map +0 -1
- package/dist/marketplace/RuntimeAutoScaler.d.ts +0 -148
- package/dist/marketplace/RuntimeAutoScaler.js +0 -366
- package/dist/marketplace/RuntimeAutoScaler.js.map +0 -1
- package/dist/marketplace/RuntimeCatalog.d.ts +0 -180
- package/dist/marketplace/RuntimeCatalog.js +0 -339
- package/dist/marketplace/RuntimeCatalog.js.map +0 -1
- package/dist/marketplace/RuntimeDiscovery.d.ts +0 -86
- package/dist/marketplace/RuntimeDiscovery.js +0 -231
- package/dist/marketplace/RuntimeDiscovery.js.map +0 -1
- package/dist/marketplace/RuntimeHealthMonitor.d.ts +0 -100
- package/dist/marketplace/RuntimeHealthMonitor.js +0 -241
- package/dist/marketplace/RuntimeHealthMonitor.js.map +0 -1
- package/dist/marketplace/RuntimeMetricsDashboard.d.ts +0 -113
- package/dist/marketplace/RuntimeMetricsDashboard.js +0 -293
- package/dist/marketplace/RuntimeMetricsDashboard.js.map +0 -1
- package/dist/openapi/OpenAPIGenerator.d.ts +0 -192
- package/dist/openapi/OpenAPIGenerator.js +0 -378
- package/dist/openapi/OpenAPIGenerator.js.map +0 -1
- package/dist/openapi/index.d.ts +0 -20
- package/dist/openapi/index.js +0 -20
- package/dist/openapi/index.js.map +0 -1
- package/dist/scheduling/DebounceBackend.d.ts +0 -108
- package/dist/scheduling/DebounceBackend.js +0 -23
- package/dist/scheduling/DebounceBackend.js.map +0 -1
- package/dist/scheduling/NatsKvDebounceBackend.d.ts +0 -53
- package/dist/scheduling/NatsKvDebounceBackend.js +0 -334
- package/dist/scheduling/NatsKvDebounceBackend.js.map +0 -1
- package/dist/scheduling/RedisDebounceBackend.d.ts +0 -49
- package/dist/scheduling/RedisDebounceBackend.js +0 -356
- package/dist/scheduling/RedisDebounceBackend.js.map +0 -1
- package/dist/scheduling/createDebounceBackend.d.ts +0 -25
- package/dist/scheduling/createDebounceBackend.js +0 -39
- package/dist/scheduling/createDebounceBackend.js.map +0 -1
- package/dist/security/ABAC.d.ts +0 -224
- package/dist/security/ABAC.js +0 -380
- package/dist/security/ABAC.js.map +0 -1
- package/dist/security/AuditLogger.d.ts +0 -242
- package/dist/security/AuditLogger.js +0 -317
- package/dist/security/AuditLogger.js.map +0 -1
- package/dist/security/AuthMiddleware.d.ts +0 -162
- package/dist/security/AuthMiddleware.js +0 -289
- package/dist/security/AuthMiddleware.js.map +0 -1
- package/dist/security/EncryptionAtRest.d.ts +0 -206
- package/dist/security/EncryptionAtRest.js +0 -236
- package/dist/security/EncryptionAtRest.js.map +0 -1
- package/dist/security/OAuthProvider.d.ts +0 -334
- package/dist/security/OAuthProvider.js +0 -719
- package/dist/security/OAuthProvider.js.map +0 -1
- package/dist/security/PIIDetector.d.ts +0 -233
- package/dist/security/PIIDetector.js +0 -354
- package/dist/security/PIIDetector.js.map +0 -1
- package/dist/security/RBAC.d.ts +0 -143
- package/dist/security/RBAC.js +0 -285
- package/dist/security/RBAC.js.map +0 -1
- package/dist/security/SecretManager.d.ts +0 -652
- package/dist/security/SecretManager.js +0 -1147
- package/dist/security/SecretManager.js.map +0 -1
- package/dist/security/TLSConfig.d.ts +0 -305
- package/dist/security/TLSConfig.js +0 -550
- package/dist/security/TLSConfig.js.map +0 -1
- package/dist/security/index.d.ts +0 -81
- package/dist/security/index.js +0 -82
- package/dist/security/index.js.map +0 -1
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RuntimeMetricsDashboard - Aggregated Execution Metrics for Blok Runtimes
|
|
3
|
-
*
|
|
4
|
-
* Collects and aggregates execution metrics across all runtimes with
|
|
5
|
-
* latency percentiles, throughput tracking, and resource monitoring
|
|
6
|
-
* following the same patterns as TriggerMetricsCollector.
|
|
7
|
-
*/
|
|
8
|
-
const MAX_LATENCY_SAMPLES = 10_000;
|
|
9
|
-
const RPS_WINDOW_MS = 60_000; // 1 minute window for RPS calculation
|
|
10
|
-
function createEmptyMetricsData() {
|
|
11
|
-
return {
|
|
12
|
-
latencySamples: [],
|
|
13
|
-
requestTimestamps: [],
|
|
14
|
-
cpuSamples: [],
|
|
15
|
-
memorySamples: [],
|
|
16
|
-
peakMemoryBytes: 0,
|
|
17
|
-
successCount: 0,
|
|
18
|
-
failureCount: 0,
|
|
19
|
-
peakRps: 0,
|
|
20
|
-
lastExecution: 0,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export class RuntimeMetricsDashboard {
|
|
24
|
-
metrics = new Map();
|
|
25
|
-
/**
|
|
26
|
-
* Record an execution result for a runtime.
|
|
27
|
-
*/
|
|
28
|
-
recordExecution(runtime, result) {
|
|
29
|
-
let data = this.metrics.get(runtime);
|
|
30
|
-
if (!data) {
|
|
31
|
-
data = createEmptyMetricsData();
|
|
32
|
-
this.metrics.set(runtime, data);
|
|
33
|
-
}
|
|
34
|
-
const now = Date.now();
|
|
35
|
-
data.lastExecution = now;
|
|
36
|
-
// Track success/failure
|
|
37
|
-
if (result.success) {
|
|
38
|
-
data.successCount++;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
data.failureCount++;
|
|
42
|
-
}
|
|
43
|
-
// Record latency sample from execution metrics
|
|
44
|
-
if (result.metrics?.duration_ms !== undefined) {
|
|
45
|
-
data.latencySamples.push(result.metrics.duration_ms);
|
|
46
|
-
if (data.latencySamples.length > MAX_LATENCY_SAMPLES) {
|
|
47
|
-
// Keep only the most recent half
|
|
48
|
-
data.latencySamples = data.latencySamples.slice(-MAX_LATENCY_SAMPLES / 2);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Record resource usage samples
|
|
52
|
-
if (result.metrics?.cpu_ms !== undefined) {
|
|
53
|
-
data.cpuSamples.push(result.metrics.cpu_ms);
|
|
54
|
-
if (data.cpuSamples.length > MAX_LATENCY_SAMPLES) {
|
|
55
|
-
data.cpuSamples = data.cpuSamples.slice(-MAX_LATENCY_SAMPLES / 2);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (result.metrics?.memory_bytes !== undefined) {
|
|
59
|
-
data.memorySamples.push(result.metrics.memory_bytes);
|
|
60
|
-
if (result.metrics.memory_bytes > data.peakMemoryBytes) {
|
|
61
|
-
data.peakMemoryBytes = result.metrics.memory_bytes;
|
|
62
|
-
}
|
|
63
|
-
if (data.memorySamples.length > MAX_LATENCY_SAMPLES) {
|
|
64
|
-
data.memorySamples = data.memorySamples.slice(-MAX_LATENCY_SAMPLES / 2);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// Record request timestamp for RPS calculation
|
|
68
|
-
data.requestTimestamps.push(now);
|
|
69
|
-
const cutoff = now - RPS_WINDOW_MS;
|
|
70
|
-
while (data.requestTimestamps.length > 0 && data.requestTimestamps[0] < cutoff) {
|
|
71
|
-
data.requestTimestamps.shift();
|
|
72
|
-
}
|
|
73
|
-
// Update peak RPS
|
|
74
|
-
const currentRps = data.requestTimestamps.length / (RPS_WINDOW_MS / 1000);
|
|
75
|
-
if (currentRps > data.peakRps) {
|
|
76
|
-
data.peakRps = currentRps;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Get computed metrics for a specific runtime.
|
|
81
|
-
*/
|
|
82
|
-
getMetrics(runtime) {
|
|
83
|
-
const data = this.metrics.get(runtime);
|
|
84
|
-
if (!data) {
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
return this.computeMetrics(runtime, data);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Get computed metrics for all tracked runtimes.
|
|
91
|
-
*/
|
|
92
|
-
getAllMetrics() {
|
|
93
|
-
const result = [];
|
|
94
|
-
this.metrics.forEach((data, runtime) => {
|
|
95
|
-
result.push(this.computeMetrics(runtime, data));
|
|
96
|
-
});
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Get a full dashboard snapshot with per-runtime and aggregate metrics.
|
|
101
|
-
*/
|
|
102
|
-
getSnapshot() {
|
|
103
|
-
const runtimes = this.getAllMetrics();
|
|
104
|
-
const aggregate = this.computeAggregate(runtimes);
|
|
105
|
-
return {
|
|
106
|
-
timestamp: Date.now(),
|
|
107
|
-
runtimes,
|
|
108
|
-
aggregate,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Get top runtimes ranked by a specific metric.
|
|
113
|
-
*/
|
|
114
|
-
getTopRuntimes(by, limit = 10) {
|
|
115
|
-
const all = this.getAllMetrics();
|
|
116
|
-
switch (by) {
|
|
117
|
-
case "executions":
|
|
118
|
-
all.sort((a, b) => b.totalExecutions - a.totalExecutions);
|
|
119
|
-
break;
|
|
120
|
-
case "successRate":
|
|
121
|
-
all.sort((a, b) => b.successRate - a.successRate);
|
|
122
|
-
break;
|
|
123
|
-
case "latency":
|
|
124
|
-
// Lower latency is better, sort ascending
|
|
125
|
-
all.sort((a, b) => a.latency.avg - b.latency.avg);
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
return all.slice(0, limit);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get execution count trend over time windows for a specific runtime.
|
|
132
|
-
*
|
|
133
|
-
* @param runtime - The runtime to get trends for
|
|
134
|
-
* @param intervalMs - Size of each time window in ms (default: 60000 = 1 min)
|
|
135
|
-
* @param windowCount - Number of time windows to return (default: 10)
|
|
136
|
-
* @returns Array of execution counts, one per time window (oldest first)
|
|
137
|
-
*/
|
|
138
|
-
getExecutionTrend(runtime, intervalMs = 60_000, windowCount = 10) {
|
|
139
|
-
const data = this.metrics.get(runtime);
|
|
140
|
-
if (!data) {
|
|
141
|
-
return new Array(windowCount).fill(0);
|
|
142
|
-
}
|
|
143
|
-
const now = Date.now();
|
|
144
|
-
const trend = new Array(windowCount).fill(0);
|
|
145
|
-
for (const timestamp of data.requestTimestamps) {
|
|
146
|
-
const age = now - timestamp;
|
|
147
|
-
const windowIndex = windowCount - 1 - Math.floor(age / intervalMs);
|
|
148
|
-
if (windowIndex >= 0 && windowIndex < windowCount) {
|
|
149
|
-
trend[windowIndex]++;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return trend;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Clear all metrics for all runtimes.
|
|
156
|
-
*/
|
|
157
|
-
reset() {
|
|
158
|
-
this.metrics.clear();
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Clear metrics for a specific runtime.
|
|
162
|
-
*/
|
|
163
|
-
resetRuntime(runtime) {
|
|
164
|
-
this.metrics.delete(runtime);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Compute RuntimeExecutionMetrics from raw data for a single runtime.
|
|
168
|
-
*/
|
|
169
|
-
computeMetrics(runtime, data) {
|
|
170
|
-
const totalExecutions = data.successCount + data.failureCount;
|
|
171
|
-
const successRate = totalExecutions > 0 ? data.successCount / totalExecutions : 1;
|
|
172
|
-
// Prune old request timestamps before computing throughput
|
|
173
|
-
const now = Date.now();
|
|
174
|
-
const cutoff = now - RPS_WINDOW_MS;
|
|
175
|
-
while (data.requestTimestamps.length > 0 && data.requestTimestamps[0] < cutoff) {
|
|
176
|
-
data.requestTimestamps.shift();
|
|
177
|
-
}
|
|
178
|
-
const currentRps = data.requestTimestamps.length / (RPS_WINDOW_MS / 1000);
|
|
179
|
-
return {
|
|
180
|
-
runtime,
|
|
181
|
-
totalExecutions,
|
|
182
|
-
successfulExecutions: data.successCount,
|
|
183
|
-
failedExecutions: data.failureCount,
|
|
184
|
-
successRate,
|
|
185
|
-
latency: this.computeLatencyPercentiles(data.latencySamples),
|
|
186
|
-
throughput: {
|
|
187
|
-
requestsPerSecond: currentRps,
|
|
188
|
-
peakRps: data.peakRps,
|
|
189
|
-
windowSizeMs: RPS_WINDOW_MS,
|
|
190
|
-
},
|
|
191
|
-
resourceUsage: this.computeResourceMetrics(data),
|
|
192
|
-
lastExecution: data.lastExecution,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Compute latency percentiles from a samples array.
|
|
197
|
-
*/
|
|
198
|
-
computeLatencyPercentiles(samples) {
|
|
199
|
-
if (samples.length === 0) {
|
|
200
|
-
return { count: 0, min: 0, max: 0, avg: 0, p50: 0, p95: 0, p99: 0 };
|
|
201
|
-
}
|
|
202
|
-
const sorted = [...samples].sort((a, b) => a - b);
|
|
203
|
-
const count = sorted.length;
|
|
204
|
-
const sum = sorted.reduce((a, b) => a + b, 0);
|
|
205
|
-
return {
|
|
206
|
-
count,
|
|
207
|
-
min: sorted[0],
|
|
208
|
-
max: sorted[count - 1],
|
|
209
|
-
avg: sum / count,
|
|
210
|
-
p50: this.percentile(sorted, 50),
|
|
211
|
-
p95: this.percentile(sorted, 95),
|
|
212
|
-
p99: this.percentile(sorted, 99),
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Compute the p-th percentile from a pre-sorted array.
|
|
217
|
-
*/
|
|
218
|
-
percentile(sorted, p) {
|
|
219
|
-
if (sorted.length === 0)
|
|
220
|
-
return 0;
|
|
221
|
-
const index = Math.ceil((p / 100) * sorted.length) - 1;
|
|
222
|
-
return sorted[Math.max(0, Math.min(index, sorted.length - 1))];
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Compute resource usage metrics from raw data.
|
|
226
|
-
*/
|
|
227
|
-
computeResourceMetrics(data) {
|
|
228
|
-
const avgCpuMs = data.cpuSamples.length > 0 ? data.cpuSamples.reduce((a, b) => a + b, 0) / data.cpuSamples.length : 0;
|
|
229
|
-
const avgMemoryBytes = data.memorySamples.length > 0 ? data.memorySamples.reduce((a, b) => a + b, 0) / data.memorySamples.length : 0;
|
|
230
|
-
return {
|
|
231
|
-
avgCpuMs,
|
|
232
|
-
avgMemoryBytes,
|
|
233
|
-
peakMemoryBytes: data.peakMemoryBytes,
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Compute aggregate metrics across all runtimes.
|
|
238
|
-
*/
|
|
239
|
-
computeAggregate(runtimes) {
|
|
240
|
-
if (runtimes.length === 0) {
|
|
241
|
-
return {
|
|
242
|
-
totalExecutions: 0,
|
|
243
|
-
totalSuccess: 0,
|
|
244
|
-
totalFailures: 0,
|
|
245
|
-
overallSuccessRate: 1,
|
|
246
|
-
avgLatencyMs: 0,
|
|
247
|
-
activeRuntimes: 0,
|
|
248
|
-
busiestRuntime: null,
|
|
249
|
-
slowestRuntime: null,
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
let totalExecutions = 0;
|
|
253
|
-
let totalSuccess = 0;
|
|
254
|
-
let totalFailures = 0;
|
|
255
|
-
let latencySum = 0;
|
|
256
|
-
let latencyCount = 0;
|
|
257
|
-
let busiestRuntime = null;
|
|
258
|
-
let busiestCount = -1;
|
|
259
|
-
let slowestRuntime = null;
|
|
260
|
-
let slowestLatency = -1;
|
|
261
|
-
for (const m of runtimes) {
|
|
262
|
-
totalExecutions += m.totalExecutions;
|
|
263
|
-
totalSuccess += m.successfulExecutions;
|
|
264
|
-
totalFailures += m.failedExecutions;
|
|
265
|
-
if (m.latency.count > 0) {
|
|
266
|
-
latencySum += m.latency.avg * m.latency.count;
|
|
267
|
-
latencyCount += m.latency.count;
|
|
268
|
-
}
|
|
269
|
-
if (m.totalExecutions > busiestCount) {
|
|
270
|
-
busiestCount = m.totalExecutions;
|
|
271
|
-
busiestRuntime = m.runtime;
|
|
272
|
-
}
|
|
273
|
-
if (m.latency.avg > slowestLatency && m.latency.count > 0) {
|
|
274
|
-
slowestLatency = m.latency.avg;
|
|
275
|
-
slowestRuntime = m.runtime;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
const overallSuccessRate = totalExecutions > 0 ? totalSuccess / totalExecutions : 1;
|
|
279
|
-
const avgLatencyMs = latencyCount > 0 ? latencySum / latencyCount : 0;
|
|
280
|
-
const activeRuntimes = runtimes.filter((m) => m.totalExecutions > 0).length;
|
|
281
|
-
return {
|
|
282
|
-
totalExecutions,
|
|
283
|
-
totalSuccess,
|
|
284
|
-
totalFailures,
|
|
285
|
-
overallSuccessRate,
|
|
286
|
-
avgLatencyMs,
|
|
287
|
-
activeRuntimes,
|
|
288
|
-
busiestRuntime,
|
|
289
|
-
slowestRuntime,
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
//# sourceMappingURL=RuntimeMetricsDashboard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeMetricsDashboard.js","sourceRoot":"","sources":["../../src/marketplace/RuntimeMetricsDashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAPI Schema Generator for Blok Workflows
|
|
3
|
-
*
|
|
4
|
-
* Automatically generates OpenAPI 3.1 specifications from workflow definitions.
|
|
5
|
-
* Introspects HTTP trigger configurations, node schemas, and context types
|
|
6
|
-
* to produce a complete API specification.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* const generator = new OpenAPIGenerator({
|
|
11
|
-
* title: "My Blok API",
|
|
12
|
-
* version: "1.0.0",
|
|
13
|
-
* description: "Auto-generated from Blok workflows",
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* // Add workflows
|
|
17
|
-
* generator.addWorkflow({
|
|
18
|
-
* name: "get-user",
|
|
19
|
-
* version: "1.0.0",
|
|
20
|
-
* trigger: { http: { method: "GET", path: "/users/:id" } },
|
|
21
|
-
* steps: [...],
|
|
22
|
-
* nodes: {...},
|
|
23
|
-
* });
|
|
24
|
-
*
|
|
25
|
-
* // Generate OpenAPI spec
|
|
26
|
-
* const spec = generator.generate();
|
|
27
|
-
* console.log(JSON.stringify(spec, null, 2));
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export interface OpenAPIGeneratorConfig {
|
|
31
|
-
/** API title */
|
|
32
|
-
title: string;
|
|
33
|
-
/** API version */
|
|
34
|
-
version: string;
|
|
35
|
-
/** API description */
|
|
36
|
-
description?: string;
|
|
37
|
-
/** Server URLs */
|
|
38
|
-
servers?: Array<{
|
|
39
|
-
url: string;
|
|
40
|
-
description?: string;
|
|
41
|
-
}>;
|
|
42
|
-
/** Contact information */
|
|
43
|
-
contact?: {
|
|
44
|
-
name?: string;
|
|
45
|
-
email?: string;
|
|
46
|
-
url?: string;
|
|
47
|
-
};
|
|
48
|
-
/** License */
|
|
49
|
-
license?: {
|
|
50
|
-
name: string;
|
|
51
|
-
url?: string;
|
|
52
|
-
};
|
|
53
|
-
/** Base path prefix */
|
|
54
|
-
basePath?: string;
|
|
55
|
-
/** Tags to categorize endpoints */
|
|
56
|
-
tags?: Array<{
|
|
57
|
-
name: string;
|
|
58
|
-
description?: string;
|
|
59
|
-
}>;
|
|
60
|
-
/** Include security schemes */
|
|
61
|
-
securitySchemes?: Record<string, OpenAPISecurityScheme>;
|
|
62
|
-
}
|
|
63
|
-
export interface OpenAPISecurityScheme {
|
|
64
|
-
type: "http" | "apiKey" | "oauth2" | "openIdConnect";
|
|
65
|
-
scheme?: string;
|
|
66
|
-
bearerFormat?: string;
|
|
67
|
-
name?: string;
|
|
68
|
-
in?: "header" | "query" | "cookie";
|
|
69
|
-
description?: string;
|
|
70
|
-
}
|
|
71
|
-
export interface WorkflowDefinition {
|
|
72
|
-
name: string;
|
|
73
|
-
version: string;
|
|
74
|
-
description?: string;
|
|
75
|
-
trigger: {
|
|
76
|
-
http?: {
|
|
77
|
-
method: string;
|
|
78
|
-
path: string;
|
|
79
|
-
accept?: string;
|
|
80
|
-
};
|
|
81
|
-
grpc?: {
|
|
82
|
-
service: string;
|
|
83
|
-
method: string;
|
|
84
|
-
};
|
|
85
|
-
[key: string]: unknown;
|
|
86
|
-
};
|
|
87
|
-
steps: unknown[];
|
|
88
|
-
nodes: Record<string, unknown>;
|
|
89
|
-
}
|
|
90
|
-
export interface OpenAPISpec {
|
|
91
|
-
openapi: string;
|
|
92
|
-
info: {
|
|
93
|
-
title: string;
|
|
94
|
-
version: string;
|
|
95
|
-
description?: string;
|
|
96
|
-
contact?: {
|
|
97
|
-
name?: string;
|
|
98
|
-
email?: string;
|
|
99
|
-
url?: string;
|
|
100
|
-
};
|
|
101
|
-
license?: {
|
|
102
|
-
name: string;
|
|
103
|
-
url?: string;
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
|
-
servers?: Array<{
|
|
107
|
-
url: string;
|
|
108
|
-
description?: string;
|
|
109
|
-
}>;
|
|
110
|
-
paths: Record<string, Record<string, OpenAPIOperation>>;
|
|
111
|
-
components: {
|
|
112
|
-
schemas: Record<string, unknown>;
|
|
113
|
-
securitySchemes?: Record<string, OpenAPISecurityScheme>;
|
|
114
|
-
};
|
|
115
|
-
tags?: Array<{
|
|
116
|
-
name: string;
|
|
117
|
-
description?: string;
|
|
118
|
-
}>;
|
|
119
|
-
security?: Array<Record<string, string[]>>;
|
|
120
|
-
}
|
|
121
|
-
interface OpenAPIOperation {
|
|
122
|
-
summary: string;
|
|
123
|
-
description?: string;
|
|
124
|
-
operationId: string;
|
|
125
|
-
tags?: string[];
|
|
126
|
-
parameters?: OpenAPIParameter[];
|
|
127
|
-
requestBody?: {
|
|
128
|
-
required?: boolean;
|
|
129
|
-
content: Record<string, {
|
|
130
|
-
schema: unknown;
|
|
131
|
-
}>;
|
|
132
|
-
};
|
|
133
|
-
responses: Record<string, {
|
|
134
|
-
description: string;
|
|
135
|
-
content?: Record<string, {
|
|
136
|
-
schema: unknown;
|
|
137
|
-
}>;
|
|
138
|
-
}>;
|
|
139
|
-
security?: Array<Record<string, string[]>>;
|
|
140
|
-
}
|
|
141
|
-
interface OpenAPIParameter {
|
|
142
|
-
name: string;
|
|
143
|
-
in: "path" | "query" | "header";
|
|
144
|
-
required: boolean;
|
|
145
|
-
schema: {
|
|
146
|
-
type: string;
|
|
147
|
-
};
|
|
148
|
-
description?: string;
|
|
149
|
-
}
|
|
150
|
-
export declare class OpenAPIGenerator {
|
|
151
|
-
private config;
|
|
152
|
-
private workflows;
|
|
153
|
-
private schemas;
|
|
154
|
-
constructor(config: OpenAPIGeneratorConfig);
|
|
155
|
-
/**
|
|
156
|
-
* Add a workflow definition to the generator
|
|
157
|
-
*/
|
|
158
|
-
addWorkflow(workflow: WorkflowDefinition): void;
|
|
159
|
-
/**
|
|
160
|
-
* Add multiple workflows
|
|
161
|
-
*/
|
|
162
|
-
addWorkflows(workflows: WorkflowDefinition[]): void;
|
|
163
|
-
/**
|
|
164
|
-
* Add a custom schema component
|
|
165
|
-
*/
|
|
166
|
-
addSchema(name: string, schema: unknown): void;
|
|
167
|
-
/**
|
|
168
|
-
* Generate OpenAPI 3.1 specification
|
|
169
|
-
*/
|
|
170
|
-
generate(): OpenAPISpec;
|
|
171
|
-
/**
|
|
172
|
-
* Generate OpenAPI spec as JSON string
|
|
173
|
-
*/
|
|
174
|
-
toJSON(pretty?: boolean): string;
|
|
175
|
-
/**
|
|
176
|
-
* Generate OpenAPI spec as YAML string
|
|
177
|
-
*/
|
|
178
|
-
toYAML(): string;
|
|
179
|
-
private buildOperation;
|
|
180
|
-
private buildRequestSchema;
|
|
181
|
-
private buildResponseSchema;
|
|
182
|
-
private getFirstNodeInputs;
|
|
183
|
-
private convertPath;
|
|
184
|
-
private extractPathParams;
|
|
185
|
-
private toOperationId;
|
|
186
|
-
private inferTag;
|
|
187
|
-
/**
|
|
188
|
-
* Simple JSON to YAML converter (basic, no external deps)
|
|
189
|
-
*/
|
|
190
|
-
private jsonToYaml;
|
|
191
|
-
}
|
|
192
|
-
export {};
|