@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.
Files changed (167) hide show
  1. package/dist/Blok.d.ts +2 -0
  2. package/dist/Blok.js +42 -110
  3. package/dist/Blok.js.map +1 -1
  4. package/dist/DefaultLogger.d.ts +13 -0
  5. package/dist/DefaultLogger.js +25 -0
  6. package/dist/DefaultLogger.js.map +1 -1
  7. package/dist/RunnerSteps.d.ts +23 -0
  8. package/dist/RunnerSteps.js +128 -87
  9. package/dist/RunnerSteps.js.map +1 -1
  10. package/dist/SubworkflowNode.js +19 -0
  11. package/dist/SubworkflowNode.js.map +1 -1
  12. package/dist/TriggerBase.d.ts +12 -0
  13. package/dist/TriggerBase.js +216 -181
  14. package/dist/TriggerBase.js.map +1 -1
  15. package/dist/adapters/grpc/GrpcRuntimeAdapter.d.ts +9 -0
  16. package/dist/adapters/grpc/GrpcRuntimeAdapter.js +76 -6
  17. package/dist/adapters/grpc/GrpcRuntimeAdapter.js.map +1 -1
  18. package/dist/index.d.ts +4 -39
  19. package/dist/index.js +7 -32
  20. package/dist/index.js.map +1 -1
  21. package/dist/monitoring/JanitorMetrics.d.ts +3 -0
  22. package/dist/monitoring/JanitorMetrics.js +11 -0
  23. package/dist/monitoring/JanitorMetrics.js.map +1 -1
  24. package/dist/monitoring/ProcessErrorMetrics.d.ts +32 -0
  25. package/dist/monitoring/ProcessErrorMetrics.js +43 -0
  26. package/dist/monitoring/ProcessErrorMetrics.js.map +1 -0
  27. package/dist/monitoring/PrometheusMetricsBridge.d.ts +7 -0
  28. package/dist/monitoring/PrometheusMetricsBridge.js +8 -2
  29. package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -1
  30. package/dist/monitoring/SubworkflowMetrics.d.ts +25 -0
  31. package/dist/monitoring/SubworkflowMetrics.js +38 -0
  32. package/dist/monitoring/SubworkflowMetrics.js.map +1 -0
  33. package/dist/observability/ErrorSink.d.ts +23 -0
  34. package/dist/observability/ErrorSink.js +32 -0
  35. package/dist/observability/ErrorSink.js.map +1 -0
  36. package/dist/observability/SentryIntegration.d.ts +9 -0
  37. package/dist/observability/SentryIntegration.js +31 -0
  38. package/dist/observability/SentryIntegration.js.map +1 -0
  39. package/dist/scheduling/DebounceCoordinator.d.ts +7 -53
  40. package/dist/scheduling/DebounceCoordinator.js +8 -207
  41. package/dist/scheduling/DebounceCoordinator.js.map +1 -1
  42. package/dist/tracing/InMemoryRunStore.d.ts +5 -1
  43. package/dist/tracing/InMemoryRunStore.js +14 -0
  44. package/dist/tracing/InMemoryRunStore.js.map +1 -1
  45. package/dist/tracing/Janitor.js +3 -0
  46. package/dist/tracing/Janitor.js.map +1 -1
  47. package/dist/tracing/PostgresRunStore.d.ts +4 -1
  48. package/dist/tracing/PostgresRunStore.js +73 -3
  49. package/dist/tracing/PostgresRunStore.js.map +1 -1
  50. package/dist/tracing/RunStore.d.ts +17 -1
  51. package/dist/tracing/RunTracker.d.ts +13 -34
  52. package/dist/tracing/RunTracker.js +62 -32
  53. package/dist/tracing/RunTracker.js.map +1 -1
  54. package/dist/tracing/SqliteRunStore.d.ts +4 -1
  55. package/dist/tracing/SqliteRunStore.js +60 -0
  56. package/dist/tracing/SqliteRunStore.js.map +1 -1
  57. package/dist/tracing/TraceRouter.d.ts +13 -0
  58. package/dist/tracing/TraceRouter.js +43 -11
  59. package/dist/tracing/TraceRouter.js.map +1 -1
  60. package/dist/tracing/TracingLogger.js +22 -0
  61. package/dist/tracing/TracingLogger.js.map +1 -1
  62. package/dist/tracing/createStore.js +51 -22
  63. package/dist/tracing/createStore.js.map +1 -1
  64. package/dist/tracing/types.d.ts +22 -0
  65. package/dist/types/GlobalOptions.d.ts +5 -7
  66. package/dist/workflow/WorkflowNormalizer.js +63 -0
  67. package/dist/workflow/WorkflowNormalizer.js.map +1 -1
  68. package/package.json +7 -4
  69. package/dist/cache/NodeResultCache.d.ts +0 -286
  70. package/dist/cache/NodeResultCache.js +0 -506
  71. package/dist/cache/NodeResultCache.js.map +0 -1
  72. package/dist/cache/index.d.ts +0 -1
  73. package/dist/cache/index.js +0 -2
  74. package/dist/cache/index.js.map +0 -1
  75. package/dist/concurrency/ConcurrencyBackend.d.ts +0 -61
  76. package/dist/concurrency/ConcurrencyBackend.js +0 -20
  77. package/dist/concurrency/ConcurrencyBackend.js.map +0 -1
  78. package/dist/concurrency/NatsKvConcurrencyBackend.d.ts +0 -64
  79. package/dist/concurrency/NatsKvConcurrencyBackend.js +0 -310
  80. package/dist/concurrency/NatsKvConcurrencyBackend.js.map +0 -1
  81. package/dist/concurrency/RedisConcurrencyBackend.d.ts +0 -64
  82. package/dist/concurrency/RedisConcurrencyBackend.js +0 -374
  83. package/dist/concurrency/RedisConcurrencyBackend.js.map +0 -1
  84. package/dist/concurrency/createConcurrencyBackend.d.ts +0 -24
  85. package/dist/concurrency/createConcurrencyBackend.js +0 -38
  86. package/dist/concurrency/createConcurrencyBackend.js.map +0 -1
  87. package/dist/graphql/GraphQLSchemaGenerator.d.ts +0 -129
  88. package/dist/graphql/GraphQLSchemaGenerator.js +0 -425
  89. package/dist/graphql/GraphQLSchemaGenerator.js.map +0 -1
  90. package/dist/integrations/APMIntegration.d.ts +0 -141
  91. package/dist/integrations/APMIntegration.js +0 -212
  92. package/dist/integrations/APMIntegration.js.map +0 -1
  93. package/dist/integrations/AzureMonitorIntegration.d.ts +0 -118
  94. package/dist/integrations/AzureMonitorIntegration.js +0 -254
  95. package/dist/integrations/AzureMonitorIntegration.js.map +0 -1
  96. package/dist/integrations/CloudWatchIntegration.d.ts +0 -135
  97. package/dist/integrations/CloudWatchIntegration.js +0 -293
  98. package/dist/integrations/CloudWatchIntegration.js.map +0 -1
  99. package/dist/integrations/SentryIntegration.d.ts +0 -153
  100. package/dist/integrations/SentryIntegration.js +0 -200
  101. package/dist/integrations/SentryIntegration.js.map +0 -1
  102. package/dist/integrations/index.d.ts +0 -19
  103. package/dist/integrations/index.js +0 -16
  104. package/dist/integrations/index.js.map +0 -1
  105. package/dist/marketplace/RuntimeAutoScaler.d.ts +0 -148
  106. package/dist/marketplace/RuntimeAutoScaler.js +0 -366
  107. package/dist/marketplace/RuntimeAutoScaler.js.map +0 -1
  108. package/dist/marketplace/RuntimeCatalog.d.ts +0 -180
  109. package/dist/marketplace/RuntimeCatalog.js +0 -339
  110. package/dist/marketplace/RuntimeCatalog.js.map +0 -1
  111. package/dist/marketplace/RuntimeDiscovery.d.ts +0 -86
  112. package/dist/marketplace/RuntimeDiscovery.js +0 -231
  113. package/dist/marketplace/RuntimeDiscovery.js.map +0 -1
  114. package/dist/marketplace/RuntimeHealthMonitor.d.ts +0 -100
  115. package/dist/marketplace/RuntimeHealthMonitor.js +0 -241
  116. package/dist/marketplace/RuntimeHealthMonitor.js.map +0 -1
  117. package/dist/marketplace/RuntimeMetricsDashboard.d.ts +0 -113
  118. package/dist/marketplace/RuntimeMetricsDashboard.js +0 -293
  119. package/dist/marketplace/RuntimeMetricsDashboard.js.map +0 -1
  120. package/dist/openapi/OpenAPIGenerator.d.ts +0 -192
  121. package/dist/openapi/OpenAPIGenerator.js +0 -378
  122. package/dist/openapi/OpenAPIGenerator.js.map +0 -1
  123. package/dist/openapi/index.d.ts +0 -20
  124. package/dist/openapi/index.js +0 -20
  125. package/dist/openapi/index.js.map +0 -1
  126. package/dist/scheduling/DebounceBackend.d.ts +0 -108
  127. package/dist/scheduling/DebounceBackend.js +0 -23
  128. package/dist/scheduling/DebounceBackend.js.map +0 -1
  129. package/dist/scheduling/NatsKvDebounceBackend.d.ts +0 -53
  130. package/dist/scheduling/NatsKvDebounceBackend.js +0 -334
  131. package/dist/scheduling/NatsKvDebounceBackend.js.map +0 -1
  132. package/dist/scheduling/RedisDebounceBackend.d.ts +0 -49
  133. package/dist/scheduling/RedisDebounceBackend.js +0 -356
  134. package/dist/scheduling/RedisDebounceBackend.js.map +0 -1
  135. package/dist/scheduling/createDebounceBackend.d.ts +0 -25
  136. package/dist/scheduling/createDebounceBackend.js +0 -39
  137. package/dist/scheduling/createDebounceBackend.js.map +0 -1
  138. package/dist/security/ABAC.d.ts +0 -224
  139. package/dist/security/ABAC.js +0 -380
  140. package/dist/security/ABAC.js.map +0 -1
  141. package/dist/security/AuditLogger.d.ts +0 -242
  142. package/dist/security/AuditLogger.js +0 -317
  143. package/dist/security/AuditLogger.js.map +0 -1
  144. package/dist/security/AuthMiddleware.d.ts +0 -162
  145. package/dist/security/AuthMiddleware.js +0 -289
  146. package/dist/security/AuthMiddleware.js.map +0 -1
  147. package/dist/security/EncryptionAtRest.d.ts +0 -206
  148. package/dist/security/EncryptionAtRest.js +0 -236
  149. package/dist/security/EncryptionAtRest.js.map +0 -1
  150. package/dist/security/OAuthProvider.d.ts +0 -334
  151. package/dist/security/OAuthProvider.js +0 -719
  152. package/dist/security/OAuthProvider.js.map +0 -1
  153. package/dist/security/PIIDetector.d.ts +0 -233
  154. package/dist/security/PIIDetector.js +0 -354
  155. package/dist/security/PIIDetector.js.map +0 -1
  156. package/dist/security/RBAC.d.ts +0 -143
  157. package/dist/security/RBAC.js +0 -285
  158. package/dist/security/RBAC.js.map +0 -1
  159. package/dist/security/SecretManager.d.ts +0 -652
  160. package/dist/security/SecretManager.js +0 -1147
  161. package/dist/security/SecretManager.js.map +0 -1
  162. package/dist/security/TLSConfig.d.ts +0 -305
  163. package/dist/security/TLSConfig.js +0 -550
  164. package/dist/security/TLSConfig.js.map +0 -1
  165. package/dist/security/index.d.ts +0 -81
  166. package/dist/security/index.js +0 -82
  167. 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 {};