blokctl 1.2.0 → 1.4.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 (693) hide show
  1. package/dist/commands/create/project.d.ts +3 -0
  2. package/dist/commands/create/project.js +166 -21
  3. package/dist/commands/create/utils/Examples.d.ts +2 -2
  4. package/dist/commands/create/utils/Examples.js +9 -3
  5. package/dist/commands/dev/index.js +13 -1
  6. package/dist/commands/runtime/add.js +92 -29
  7. package/dist/commands/runtime/index.js +1 -0
  8. package/dist/commands/runtime/shared.js +4 -0
  9. package/dist/scaffold-repo/examples/ts-workflows/mcp-greeter.ts +59 -0
  10. package/dist/scaffold-repo/examples/ts-workflows/runtime-csharp-hello.ts +36 -0
  11. package/dist/scaffold-repo/examples/ts-workflows/runtime-go-hello.ts +36 -0
  12. package/dist/scaffold-repo/examples/ts-workflows/runtime-java-hello.ts +36 -0
  13. package/dist/scaffold-repo/examples/ts-workflows/runtime-php-hello.ts +36 -0
  14. package/dist/scaffold-repo/examples/ts-workflows/runtime-python3-hello.ts +36 -0
  15. package/dist/scaffold-repo/examples/ts-workflows/runtime-ruby-hello.ts +36 -0
  16. package/dist/scaffold-repo/examples/ts-workflows/runtime-rust-hello.ts +36 -0
  17. package/dist/scaffold-repo/infra/development/3055.dat +602 -0
  18. package/dist/scaffold-repo/infra/development/3057.dat +203 -0
  19. package/dist/scaffold-repo/infra/development/3059.dat +19 -0
  20. package/dist/scaffold-repo/infra/development/3061.dat +1003 -0
  21. package/dist/scaffold-repo/infra/development/3062.dat +5465 -0
  22. package/dist/scaffold-repo/infra/development/3063.dat +1003 -0
  23. package/dist/scaffold-repo/infra/development/3065.dat +606 -0
  24. package/dist/scaffold-repo/infra/development/3067.dat +603 -0
  25. package/dist/scaffold-repo/infra/development/3069.dat +112 -0
  26. package/dist/scaffold-repo/infra/development/3071.dat +4584 -0
  27. package/dist/scaffold-repo/infra/development/3073.dat +9 -0
  28. package/dist/scaffold-repo/infra/development/3075.dat +14599 -0
  29. package/dist/scaffold-repo/infra/development/3077.dat +16047 -0
  30. package/dist/scaffold-repo/infra/development/3079.dat +5 -0
  31. package/dist/scaffold-repo/infra/development/3081.dat +5 -0
  32. package/dist/scaffold-repo/infra/development/docker-compose.yml +106 -0
  33. package/dist/scaffold-repo/infra/development/schema.sql +1616 -0
  34. package/dist/scaffold-repo/infra/development/toc.dat +0 -0
  35. package/dist/scaffold-repo/infra/metrics/alertmanager.yml +43 -0
  36. package/dist/scaffold-repo/infra/metrics/alloy-config.alloy +75 -0
  37. package/dist/scaffold-repo/infra/metrics/dashboard.json +1152 -0
  38. package/dist/scaffold-repo/infra/metrics/dashboards/blok-overview.json +314 -0
  39. package/dist/scaffold-repo/infra/metrics/dashboards/blok-system.json +175 -0
  40. package/dist/scaffold-repo/infra/metrics/dashboards/blok-tracing.json +235 -0
  41. package/dist/scaffold-repo/infra/metrics/dashboards/blok-triggers.json +258 -0
  42. package/dist/scaffold-repo/infra/metrics/datasources.yml +43 -0
  43. package/dist/scaffold-repo/infra/metrics/default.yaml +8 -0
  44. package/dist/scaffold-repo/infra/metrics/docker-compose.yml +193 -0
  45. package/dist/scaffold-repo/infra/metrics/loki-config.yaml +50 -0
  46. package/dist/scaffold-repo/infra/metrics/nginx.conf +25 -0
  47. package/dist/scaffold-repo/infra/metrics/prometheus.yml +51 -0
  48. package/dist/scaffold-repo/infra/metrics/rules/blok-alerts.yml +114 -0
  49. package/dist/scaffold-repo/infra/metrics/telegraf.conf +41 -0
  50. package/dist/scaffold-repo/infra/metrics/tempo.yaml +81 -0
  51. package/dist/scaffold-repo/infra/milvus/docker-compose.yml +73 -0
  52. package/dist/scaffold-repo/sdk/javascript/README.md +151 -0
  53. package/dist/scaffold-repo/sdk/javascript/bootstrap.min.css +11660 -0
  54. package/dist/scaffold-repo/sdk/javascript/image-ai.html +316 -0
  55. package/dist/scaffold-repo/sdk/javascript/nanosdk.js +180 -0
  56. package/dist/scaffold-repo/sdk/javascript/nanosdk.min.js +100 -0
  57. package/dist/scaffold-repo/sdk/javascript/pdf.html +63 -0
  58. package/dist/scaffold-repo/sdk/javascript/test.html +68 -0
  59. package/dist/scaffold-repo/sdks/CLAUDE.md +67 -0
  60. package/dist/scaffold-repo/sdks/csharp/.dockerignore +7 -0
  61. package/dist/scaffold-repo/sdks/csharp/Blok.Core.sln +24 -0
  62. package/dist/scaffold-repo/sdks/csharp/Dockerfile +42 -0
  63. package/dist/scaffold-repo/sdks/csharp/README.md +138 -0
  64. package/dist/scaffold-repo/sdks/csharp/proto/blok/runtime/v1/runtime.proto +302 -0
  65. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Blok.Core.csproj +39 -0
  66. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Config/ServerConfig.cs +90 -0
  67. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BlokError.cs +538 -0
  68. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BlokErrorCategory.cs +112 -0
  69. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BlokErrorSeverity.cs +40 -0
  70. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BuildContextSnapshot.cs +168 -0
  71. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/ErrorCategory.cs +13 -0
  72. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/NodeException.cs +44 -0
  73. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Logging/LogEntry.cs +34 -0
  74. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Logging/LogLevel.cs +12 -0
  75. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Logging/Logger.cs +92 -0
  76. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/IMiddleware.cs +14 -0
  77. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/LoggingMiddleware.cs +46 -0
  78. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/MiddlewareChain.cs +35 -0
  79. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/RecoveryMiddleware.cs +63 -0
  80. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Node/INodeHandler.cs +17 -0
  81. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Node/NodeRegistry.cs +128 -0
  82. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Node/TypedNode.cs +140 -0
  83. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/ApiCallNode.cs +129 -0
  84. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/BlokErrorDemoNode.cs +125 -0
  85. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/ChainTestNode.cs +79 -0
  86. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/HelloWorldNode.cs +45 -0
  87. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/TransformDataNode.cs +119 -0
  88. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/TypedGreetNode.cs +23 -0
  89. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Program.cs +26 -0
  90. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Server/BlokNodeRuntimeService.cs +536 -0
  91. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Server/RuntimeServer.cs +183 -0
  92. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Testing/MockContextBuilder.cs +117 -0
  93. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Testing/TestNodeRunner.cs +50 -0
  94. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/Context.cs +56 -0
  95. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/ExecutionMetrics.cs +21 -0
  96. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/ExecutionRequest.cs +15 -0
  97. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/ExecutionResult.cs +104 -0
  98. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/HealthStatus.cs +18 -0
  99. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/NodeConfig.cs +59 -0
  100. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/Request.cs +57 -0
  101. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/Response.cs +24 -0
  102. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/UserNodeRegistry.cs +17 -0
  103. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Validation/SchemaValidator.cs +198 -0
  104. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Blok.Core.Tests.csproj +25 -0
  105. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Errors/BlokErrorTests.cs +458 -0
  106. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Logging/LoggerTests.cs +129 -0
  107. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Node/NodeRegistryTests.cs +145 -0
  108. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Testing/MockContextTests.cs +153 -0
  109. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/TypedNodeTests.cs +69 -0
  110. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Types/ExecutionResultTests.cs +110 -0
  111. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Validation/SchemaValidatorTests.cs +233 -0
  112. package/dist/scaffold-repo/sdks/go/Dockerfile +33 -0
  113. package/dist/scaffold-repo/sdks/go/README.md +255 -0
  114. package/dist/scaffold-repo/sdks/go/blok_error.go +803 -0
  115. package/dist/scaffold-repo/sdks/go/blok_error_test.go +433 -0
  116. package/dist/scaffold-repo/sdks/go/cmd/server/main.go +45 -0
  117. package/dist/scaffold-repo/sdks/go/cmd/server/register_user_nodes.go +12 -0
  118. package/dist/scaffold-repo/sdks/go/config.go +157 -0
  119. package/dist/scaffold-repo/sdks/go/config_test.go +129 -0
  120. package/dist/scaffold-repo/sdks/go/define_node.go +87 -0
  121. package/dist/scaffold-repo/sdks/go/define_node_test.go +75 -0
  122. package/dist/scaffold-repo/sdks/go/errors.go +104 -0
  123. package/dist/scaffold-repo/sdks/go/errors_test.go +95 -0
  124. package/dist/scaffold-repo/sdks/go/examples/nodes/apicall.go +117 -0
  125. package/dist/scaffold-repo/sdks/go/examples/nodes/blokerrordemo.go +80 -0
  126. package/dist/scaffold-repo/sdks/go/examples/nodes/chaintest.go +63 -0
  127. package/dist/scaffold-repo/sdks/go/examples/nodes/helloworld.go +41 -0
  128. package/dist/scaffold-repo/sdks/go/examples/nodes/transformdata.go +176 -0
  129. package/dist/scaffold-repo/sdks/go/examples/nodes/typedgreet.go +34 -0
  130. package/dist/scaffold-repo/sdks/go/genpb/blok/runtime/v1/runtime.pb.go +2070 -0
  131. package/dist/scaffold-repo/sdks/go/genpb/blok/runtime/v1/runtime_grpc.pb.go +273 -0
  132. package/dist/scaffold-repo/sdks/go/go.mod +25 -0
  133. package/dist/scaffold-repo/sdks/go/go.sum +66 -0
  134. package/dist/scaffold-repo/sdks/go/grpc_server.go +670 -0
  135. package/dist/scaffold-repo/sdks/go/grpc_server_test.go +474 -0
  136. package/dist/scaffold-repo/sdks/go/logging.go +144 -0
  137. package/dist/scaffold-repo/sdks/go/logging_test.go +139 -0
  138. package/dist/scaffold-repo/sdks/go/middleware.go +152 -0
  139. package/dist/scaffold-repo/sdks/go/middleware_test.go +222 -0
  140. package/dist/scaffold-repo/sdks/go/node.go +50 -0
  141. package/dist/scaffold-repo/sdks/go/proto/blok/runtime/v1/runtime.proto +302 -0
  142. package/dist/scaffold-repo/sdks/go/registry.go +156 -0
  143. package/dist/scaffold-repo/sdks/go/registry_test.go +195 -0
  144. package/dist/scaffold-repo/sdks/go/server.go +207 -0
  145. package/dist/scaffold-repo/sdks/go/server_test.go +186 -0
  146. package/dist/scaffold-repo/sdks/go/shutdown.go +32 -0
  147. package/dist/scaffold-repo/sdks/go/testutil.go +169 -0
  148. package/dist/scaffold-repo/sdks/go/testutil_test.go +124 -0
  149. package/dist/scaffold-repo/sdks/go/types.go +295 -0
  150. package/dist/scaffold-repo/sdks/go/types_test.go +251 -0
  151. package/dist/scaffold-repo/sdks/go/validation.go +210 -0
  152. package/dist/scaffold-repo/sdks/go/validation_test.go +262 -0
  153. package/dist/scaffold-repo/sdks/go/worker.go +577 -0
  154. package/dist/scaffold-repo/sdks/java/Dockerfile +33 -0
  155. package/dist/scaffold-repo/sdks/java/README.md +221 -0
  156. package/dist/scaffold-repo/sdks/java/pom.xml +163 -0
  157. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/Main.java +90 -0
  158. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/UserNodeRegistry.java +19 -0
  159. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/config/ServerConfig.java +244 -0
  160. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BlokError.java +576 -0
  161. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BlokErrorCategory.java +68 -0
  162. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BlokErrorSeverity.java +31 -0
  163. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BuildContextSnapshot.java +132 -0
  164. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/ErrorCategory.java +22 -0
  165. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/NodeException.java +176 -0
  166. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/logging/LogEntry.java +78 -0
  167. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/logging/LogLevel.java +48 -0
  168. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/logging/Logger.java +160 -0
  169. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/LoggingMiddleware.java +65 -0
  170. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/Middleware.java +29 -0
  171. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/MiddlewareChain.java +59 -0
  172. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/RecoveryMiddleware.java +53 -0
  173. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/NodeHandler.java +40 -0
  174. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/NodeReflector.java +18 -0
  175. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/NodeRegistry.java +205 -0
  176. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/TypedNode.java +143 -0
  177. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/ApiCallNode.java +145 -0
  178. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/BlokErrorDemoNode.java +109 -0
  179. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/ChainTestNode.java +65 -0
  180. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/HelloWorldNode.java +62 -0
  181. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/TransformDataNode.java +121 -0
  182. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/TypedGreetNode.java +41 -0
  183. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/server/BlokGrpcServer.java +103 -0
  184. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/server/BlokNodeRuntimeService.java +501 -0
  185. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/server/RuntimeServer.java +176 -0
  186. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/testing/MockContext.java +120 -0
  187. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/testing/TestRunner.java +59 -0
  188. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/Context.java +167 -0
  189. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/ExecutionMetrics.java +80 -0
  190. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/ExecutionRequest.java +61 -0
  191. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/ExecutionResult.java +188 -0
  192. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/HealthStatus.java +77 -0
  193. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/NodeConfig.java +139 -0
  194. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/Request.java +154 -0
  195. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/Response.java +77 -0
  196. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/validation/SchemaValidator.java +178 -0
  197. package/dist/scaffold-repo/sdks/java/src/main/proto/blok/runtime/v1/runtime.proto +302 -0
  198. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/errors/BlokErrorTest.java +416 -0
  199. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/logging/LoggerTest.java +176 -0
  200. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/node/NodeRegistryTest.java +227 -0
  201. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/node/TypedNodeTest.java +76 -0
  202. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/server/RuntimeServerTest.java +197 -0
  203. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/types/ExecutionResultTest.java +194 -0
  204. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/validation/SchemaValidatorTest.java +246 -0
  205. package/dist/scaffold-repo/sdks/php/.rr.yaml +29 -0
  206. package/dist/scaffold-repo/sdks/php/Dockerfile +61 -0
  207. package/dist/scaffold-repo/sdks/php/README.md +387 -0
  208. package/dist/scaffold-repo/sdks/php/composer.json +41 -0
  209. package/dist/scaffold-repo/sdks/php/examples/ApiCallNode.php +103 -0
  210. package/dist/scaffold-repo/sdks/php/examples/BlokErrorDemoNode.php +90 -0
  211. package/dist/scaffold-repo/sdks/php/examples/ChainTestNode.php +56 -0
  212. package/dist/scaffold-repo/sdks/php/examples/HelloWorldNode.php +39 -0
  213. package/dist/scaffold-repo/sdks/php/examples/TransformDataNode.php +94 -0
  214. package/dist/scaffold-repo/sdks/php/examples/TypedGreetNode.php +57 -0
  215. package/dist/scaffold-repo/sdks/php/phpunit.xml +23 -0
  216. package/dist/scaffold-repo/sdks/php/proto/blok/runtime/v1/runtime.proto +302 -0
  217. package/dist/scaffold-repo/sdks/php/src/Config/ServerConfig.php +83 -0
  218. package/dist/scaffold-repo/sdks/php/src/Errors/BlokError.php +467 -0
  219. package/dist/scaffold-repo/sdks/php/src/Errors/BlokErrorBuilder.php +121 -0
  220. package/dist/scaffold-repo/sdks/php/src/Errors/BlokErrorCategory.php +83 -0
  221. package/dist/scaffold-repo/sdks/php/src/Errors/BlokErrorSeverity.php +30 -0
  222. package/dist/scaffold-repo/sdks/php/src/Errors/BuildContextSnapshot.php +141 -0
  223. package/dist/scaffold-repo/sdks/php/src/Errors/ErrorCategory.php +17 -0
  224. package/dist/scaffold-repo/sdks/php/src/Errors/NodeException.php +107 -0
  225. package/dist/scaffold-repo/sdks/php/src/Errors/Origin.php +35 -0
  226. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ErrorCategory.php +118 -0
  227. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ErrorSeverity.php +72 -0
  228. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteEvent.php +181 -0
  229. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteOptions.php +159 -0
  230. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteRequest.php +328 -0
  231. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteResponse.php +288 -0
  232. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/HealthRequest.php +59 -0
  233. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/HealthResponse/Status.php +54 -0
  234. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/HealthResponse.php +113 -0
  235. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ListNodesRequest.php +32 -0
  236. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ListNodesResponse.php +154 -0
  237. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/LogLine.php +156 -0
  238. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/Metrics.php +165 -0
  239. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeDescriptor.php +174 -0
  240. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeError.php +627 -0
  241. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeRef.php +134 -0
  242. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeRuntimeClient.php +101 -0
  243. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeStarted.php +68 -0
  244. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/PartialResult.php +59 -0
  245. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/Progress.php +85 -0
  246. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/RuntimeState.php +142 -0
  247. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/StepInfo.php +168 -0
  248. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/TriggerInfo.php +289 -0
  249. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/WorkflowInfo.php +176 -0
  250. package/dist/scaffold-repo/sdks/php/src/Genpb/GPBMetadata/Blok/Runtime/V1/Runtime.php +26 -0
  251. package/dist/scaffold-repo/sdks/php/src/Logging/LogEntry.php +47 -0
  252. package/dist/scaffold-repo/sdks/php/src/Logging/LogLevel.php +50 -0
  253. package/dist/scaffold-repo/sdks/php/src/Logging/Logger.php +133 -0
  254. package/dist/scaffold-repo/sdks/php/src/Node/NodeHandler.php +35 -0
  255. package/dist/scaffold-repo/sdks/php/src/Node/NodeReflector.php +21 -0
  256. package/dist/scaffold-repo/sdks/php/src/Node/NodeRegistry.php +172 -0
  257. package/dist/scaffold-repo/sdks/php/src/Node/TypedNode.php +159 -0
  258. package/dist/scaffold-repo/sdks/php/src/Server/BlokNodeRuntimeService.php +504 -0
  259. package/dist/scaffold-repo/sdks/php/src/Server/DecodeException.php +13 -0
  260. package/dist/scaffold-repo/sdks/php/src/Server/Middleware.php +18 -0
  261. package/dist/scaffold-repo/sdks/php/src/Server/MiddlewarePipeline.php +33 -0
  262. package/dist/scaffold-repo/sdks/php/src/Server/NodeRuntimeInterface.php +40 -0
  263. package/dist/scaffold-repo/sdks/php/src/Server/Server.php +157 -0
  264. package/dist/scaffold-repo/sdks/php/src/Testing/MockContext.php +161 -0
  265. package/dist/scaffold-repo/sdks/php/src/Testing/TestRunner.php +78 -0
  266. package/dist/scaffold-repo/sdks/php/src/Types/Context.php +80 -0
  267. package/dist/scaffold-repo/sdks/php/src/Types/ExecutionMetrics.php +48 -0
  268. package/dist/scaffold-repo/sdks/php/src/Types/ExecutionRequest.php +38 -0
  269. package/dist/scaffold-repo/sdks/php/src/Types/ExecutionResult.php +143 -0
  270. package/dist/scaffold-repo/sdks/php/src/Types/HealthStatus.php +42 -0
  271. package/dist/scaffold-repo/sdks/php/src/Types/NodeConfig.php +72 -0
  272. package/dist/scaffold-repo/sdks/php/src/Types/Request.php +82 -0
  273. package/dist/scaffold-repo/sdks/php/src/Types/Response.php +44 -0
  274. package/dist/scaffold-repo/sdks/php/src/Validation/SchemaValidator.php +197 -0
  275. package/dist/scaffold-repo/sdks/php/tests/Errors/BlokErrorTest.php +402 -0
  276. package/dist/scaffold-repo/sdks/php/tests/Logging/LoggerTest.php +165 -0
  277. package/dist/scaffold-repo/sdks/php/tests/Node/NodeRegistryTest.php +139 -0
  278. package/dist/scaffold-repo/sdks/php/tests/Node/TypedNodeTest.php +84 -0
  279. package/dist/scaffold-repo/sdks/php/tests/Server/BlokNodeRuntimeServiceTest.php +288 -0
  280. package/dist/scaffold-repo/sdks/php/tests/Testing/MockContextTest.php +184 -0
  281. package/dist/scaffold-repo/sdks/php/tests/Types/ExecutionResultTest.php +136 -0
  282. package/dist/scaffold-repo/sdks/php/tests/Validation/SchemaValidatorTest.php +191 -0
  283. package/dist/scaffold-repo/sdks/python3/Dockerfile +62 -0
  284. package/dist/scaffold-repo/sdks/python3/blok/__init__.py +61 -0
  285. package/dist/scaffold-repo/sdks/python3/blok/config/__init__.py +3 -0
  286. package/dist/scaffold-repo/sdks/python3/blok/config/server_config.py +116 -0
  287. package/dist/scaffold-repo/sdks/python3/blok/errors/__init__.py +50 -0
  288. package/dist/scaffold-repo/sdks/python3/blok/errors/blok_error.py +555 -0
  289. package/dist/scaffold-repo/sdks/python3/blok/errors/node_error.py +64 -0
  290. package/dist/scaffold-repo/sdks/python3/blok/logging/__init__.py +3 -0
  291. package/dist/scaffold-repo/sdks/python3/blok/logging/logger.py +82 -0
  292. package/dist/scaffold-repo/sdks/python3/blok/middleware/__init__.py +4 -0
  293. package/dist/scaffold-repo/sdks/python3/blok/middleware/logging_middleware.py +35 -0
  294. package/dist/scaffold-repo/sdks/python3/blok/middleware/recovery_middleware.py +36 -0
  295. package/dist/scaffold-repo/sdks/python3/blok/node/__init__.py +4 -0
  296. package/dist/scaffold-repo/sdks/python3/blok/node/define_node.py +239 -0
  297. package/dist/scaffold-repo/sdks/python3/blok/node/node_handler.py +35 -0
  298. package/dist/scaffold-repo/sdks/python3/blok/node/node_registry.py +136 -0
  299. package/dist/scaffold-repo/sdks/python3/blok/runtime/__init__.py +0 -0
  300. package/dist/scaffold-repo/sdks/python3/blok/runtime/v1/__init__.py +0 -0
  301. package/dist/scaffold-repo/sdks/python3/blok/runtime/v1/runtime_pb2.py +112 -0
  302. package/dist/scaffold-repo/sdks/python3/blok/runtime/v1/runtime_pb2_grpc.py +259 -0
  303. package/dist/scaffold-repo/sdks/python3/blok/server/__init__.py +3 -0
  304. package/dist/scaffold-repo/sdks/python3/blok/server/grpc_server.py +757 -0
  305. package/dist/scaffold-repo/sdks/python3/blok/server/runtime_server.py +165 -0
  306. package/dist/scaffold-repo/sdks/python3/blok/types/__init__.py +13 -0
  307. package/dist/scaffold-repo/sdks/python3/blok/types/context.py +162 -0
  308. package/dist/scaffold-repo/sdks/python3/blok/types/execution_request.py +74 -0
  309. package/dist/scaffold-repo/sdks/python3/blok/types/execution_result.py +103 -0
  310. package/dist/scaffold-repo/sdks/python3/blok/worker/__init__.py +10 -0
  311. package/dist/scaffold-repo/sdks/python3/blok/worker/job_message.py +34 -0
  312. package/dist/scaffold-repo/sdks/python3/blok/worker/worker.py +451 -0
  313. package/dist/scaffold-repo/sdks/python3/blok/worker/worker_config.py +129 -0
  314. package/dist/scaffold-repo/sdks/python3/examples/__init__.py +32 -0
  315. package/dist/scaffold-repo/sdks/python3/examples/api_call_node.py +85 -0
  316. package/dist/scaffold-repo/sdks/python3/examples/blok_error_demo_node.py +79 -0
  317. package/dist/scaffold-repo/sdks/python3/examples/chain_test_node.py +51 -0
  318. package/dist/scaffold-repo/sdks/python3/examples/hello_world_node.py +44 -0
  319. package/dist/scaffold-repo/sdks/python3/examples/transform_data_node.py +71 -0
  320. package/dist/scaffold-repo/sdks/python3/examples/typed_greet_node.py +25 -0
  321. package/dist/scaffold-repo/sdks/python3/proto/blok/runtime/v1/runtime.proto +302 -0
  322. package/dist/scaffold-repo/sdks/python3/pyproject.toml +47 -0
  323. package/dist/scaffold-repo/sdks/python3/requirements.txt +17 -0
  324. package/dist/scaffold-repo/sdks/python3/tests/__init__.py +0 -0
  325. package/dist/scaffold-repo/sdks/python3/tests/test_blok_error.py +341 -0
  326. package/dist/scaffold-repo/sdks/python3/tests/test_define_node.py +135 -0
  327. package/dist/scaffold-repo/sdks/python3/tests/test_discovery.py +99 -0
  328. package/dist/scaffold-repo/sdks/python3/tests/test_grpc_codec.py +260 -0
  329. package/dist/scaffold-repo/sdks/python3/tests/test_grpc_server.py +398 -0
  330. package/dist/scaffold-repo/sdks/ruby/Dockerfile +37 -0
  331. package/dist/scaffold-repo/sdks/ruby/Gemfile +5 -0
  332. package/dist/scaffold-repo/sdks/ruby/README.md +210 -0
  333. package/dist/scaffold-repo/sdks/ruby/Rakefile +11 -0
  334. package/dist/scaffold-repo/sdks/ruby/blok.gemspec +43 -0
  335. package/dist/scaffold-repo/sdks/ruby/config.ru +15 -0
  336. package/dist/scaffold-repo/sdks/ruby/examples/api_call_node.rb +99 -0
  337. package/dist/scaffold-repo/sdks/ruby/examples/blok_error_demo_node.rb +79 -0
  338. package/dist/scaffold-repo/sdks/ruby/examples/chain_test_node.rb +51 -0
  339. package/dist/scaffold-repo/sdks/ruby/examples/hello_world_node.rb +40 -0
  340. package/dist/scaffold-repo/sdks/ruby/examples/transform_data_node.rb +82 -0
  341. package/dist/scaffold-repo/sdks/ruby/examples/typed_greet_node.rb +25 -0
  342. package/dist/scaffold-repo/sdks/ruby/lib/blok/config/server_config.rb +76 -0
  343. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/blok_error.rb +476 -0
  344. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/build_context_snapshot.rb +99 -0
  345. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/error_category.rb +16 -0
  346. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/node_error.rb +84 -0
  347. package/dist/scaffold-repo/sdks/ruby/lib/blok/logging/log_entry.rb +46 -0
  348. package/dist/scaffold-repo/sdks/ruby/lib/blok/logging/log_level.rb +49 -0
  349. package/dist/scaffold-repo/sdks/ruby/lib/blok/logging/logger.rb +71 -0
  350. package/dist/scaffold-repo/sdks/ruby/lib/blok/middleware/logging_middleware.rb +45 -0
  351. package/dist/scaffold-repo/sdks/ruby/lib/blok/middleware/middleware.rb +36 -0
  352. package/dist/scaffold-repo/sdks/ruby/lib/blok/middleware/recovery_middleware.rb +31 -0
  353. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/discovery.rb +59 -0
  354. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/node_handler.rb +43 -0
  355. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/node_registry.rb +107 -0
  356. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/typed_node.rb +180 -0
  357. package/dist/scaffold-repo/sdks/ruby/lib/blok/runtime/v1/runtime_pb.rb +43 -0
  358. package/dist/scaffold-repo/sdks/ruby/lib/blok/runtime/v1/runtime_services_pb.rb +55 -0
  359. package/dist/scaffold-repo/sdks/ruby/lib/blok/server/grpc_server.rb +435 -0
  360. package/dist/scaffold-repo/sdks/ruby/lib/blok/server/runtime_app.rb +86 -0
  361. package/dist/scaffold-repo/sdks/ruby/lib/blok/testing/mock_context.rb +109 -0
  362. package/dist/scaffold-repo/sdks/ruby/lib/blok/testing/test_runner.rb +40 -0
  363. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/context.rb +82 -0
  364. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/execution_metrics.rb +43 -0
  365. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/execution_request.rb +39 -0
  366. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/execution_result.rb +117 -0
  367. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/health_status.rb +42 -0
  368. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/node_config.rb +73 -0
  369. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/request.rb +71 -0
  370. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/response.rb +46 -0
  371. package/dist/scaffold-repo/sdks/ruby/lib/blok/validation/schema_validator.rb +142 -0
  372. package/dist/scaffold-repo/sdks/ruby/lib/blok/version.rb +5 -0
  373. package/dist/scaffold-repo/sdks/ruby/lib/blok.rb +53 -0
  374. package/dist/scaffold-repo/sdks/ruby/proto/blok/runtime/v1/runtime.proto +302 -0
  375. package/dist/scaffold-repo/sdks/ruby/test/errors/blok_error_test.rb +339 -0
  376. package/dist/scaffold-repo/sdks/ruby/test/logging/logger_test.rb +155 -0
  377. package/dist/scaffold-repo/sdks/ruby/test/node/node_registry_test.rb +132 -0
  378. package/dist/scaffold-repo/sdks/ruby/test/node/typed_node_test.rb +67 -0
  379. package/dist/scaffold-repo/sdks/ruby/test/test_helper.rb +6 -0
  380. package/dist/scaffold-repo/sdks/ruby/test/testing/mock_context_test.rb +150 -0
  381. package/dist/scaffold-repo/sdks/ruby/test/types/execution_result_test.rb +129 -0
  382. package/dist/scaffold-repo/sdks/ruby/test/validation/schema_validator_test.rb +270 -0
  383. package/dist/scaffold-repo/sdks/rust/Cargo.lock +3044 -0
  384. package/dist/scaffold-repo/sdks/rust/Cargo.toml +82 -0
  385. package/dist/scaffold-repo/sdks/rust/Dockerfile +40 -0
  386. package/dist/scaffold-repo/sdks/rust/README.md +73 -0
  387. package/dist/scaffold-repo/sdks/rust/build.rs +32 -0
  388. package/dist/scaffold-repo/sdks/rust/proto/blok/runtime/v1/runtime.proto +302 -0
  389. package/dist/scaffold-repo/sdks/rust/src/blok_error.rs +1168 -0
  390. package/dist/scaffold-repo/sdks/rust/src/config.rs +158 -0
  391. package/dist/scaffold-repo/sdks/rust/src/errors.rs +142 -0
  392. package/dist/scaffold-repo/sdks/rust/src/grpc_server.rs +635 -0
  393. package/dist/scaffold-repo/sdks/rust/src/lib.rs +65 -0
  394. package/dist/scaffold-repo/sdks/rust/src/logging.rs +195 -0
  395. package/dist/scaffold-repo/sdks/rust/src/main.rs +79 -0
  396. package/dist/scaffold-repo/sdks/rust/src/middleware.rs +181 -0
  397. package/dist/scaffold-repo/sdks/rust/src/node.rs +172 -0
  398. package/dist/scaffold-repo/sdks/rust/src/nodes/api_call.rs +93 -0
  399. package/dist/scaffold-repo/sdks/rust/src/nodes/blok_error_demo.rs +151 -0
  400. package/dist/scaffold-repo/sdks/rust/src/nodes/chain_test.rs +57 -0
  401. package/dist/scaffold-repo/sdks/rust/src/nodes/hello_world.rs +83 -0
  402. package/dist/scaffold-repo/sdks/rust/src/nodes/mod.rs +18 -0
  403. package/dist/scaffold-repo/sdks/rust/src/nodes/transform_data.rs +142 -0
  404. package/dist/scaffold-repo/sdks/rust/src/nodes/typed_greet.rs +56 -0
  405. package/dist/scaffold-repo/sdks/rust/src/registry.rs +204 -0
  406. package/dist/scaffold-repo/sdks/rust/src/server.rs +63 -0
  407. package/dist/scaffold-repo/sdks/rust/src/testing.rs +175 -0
  408. package/dist/scaffold-repo/sdks/rust/src/types.rs +338 -0
  409. package/dist/scaffold-repo/sdks/rust/src/user_nodes/mod.rs +10 -0
  410. package/dist/scaffold-repo/sdks/rust/src/validation.rs +232 -0
  411. package/dist/scaffold-repo/sdks/rust/src/worker.rs +509 -0
  412. package/dist/scaffold-repo/sdks/rust/tests/grpc_integration.rs +306 -0
  413. package/dist/scaffold-repo/sdks/rust/tests/typed_node.rs +104 -0
  414. package/dist/scaffold-repo/triggers/cron/CHANGELOG.md +22 -0
  415. package/dist/scaffold-repo/triggers/cron/package.json +36 -0
  416. package/dist/scaffold-repo/triggers/cron/src/CronTrigger.ts +552 -0
  417. package/dist/scaffold-repo/triggers/cron/src/index.ts +77 -0
  418. package/dist/scaffold-repo/triggers/cron/tsconfig.json +32 -0
  419. package/dist/scaffold-repo/triggers/grpc/.env.example +8 -0
  420. package/dist/scaffold-repo/triggers/grpc/CHANGELOG.md +143 -0
  421. package/dist/scaffold-repo/triggers/grpc/README.md +25 -0
  422. package/dist/scaffold-repo/triggers/grpc/buf.gen.yaml +11 -0
  423. package/dist/scaffold-repo/triggers/grpc/buf.yaml +9 -0
  424. package/dist/scaffold-repo/triggers/grpc/localhost+2-key.pem +28 -0
  425. package/dist/scaffold-repo/triggers/grpc/localhost+2.pem +27 -0
  426. package/dist/scaffold-repo/triggers/grpc/package.json +61 -0
  427. package/dist/scaffold-repo/triggers/grpc/proto/workflow.proto +33 -0
  428. package/dist/scaffold-repo/triggers/grpc/src/GRpcTrigger.ts +297 -0
  429. package/dist/scaffold-repo/triggers/grpc/src/GrpcClient.ts +87 -0
  430. package/dist/scaffold-repo/triggers/grpc/src/GrpcServer.ts +68 -0
  431. package/dist/scaffold-repo/triggers/grpc/src/MessageDecode.ts +142 -0
  432. package/dist/scaffold-repo/triggers/grpc/src/NanoSDK.ts +146 -0
  433. package/dist/scaffold-repo/triggers/grpc/src/Nodes.ts +10 -0
  434. package/dist/scaffold-repo/triggers/grpc/src/Workflows.ts +5 -0
  435. package/dist/scaffold-repo/triggers/grpc/src/gen/workflow_pb.ts +142 -0
  436. package/dist/scaffold-repo/triggers/grpc/src/index.ts +22 -0
  437. package/dist/scaffold-repo/triggers/grpc/src/server.ts +8 -0
  438. package/dist/scaffold-repo/triggers/grpc/src/types/Message.ts +0 -0
  439. package/dist/scaffold-repo/triggers/grpc/src/types/RuntimeWorkflow.ts +7 -0
  440. package/dist/scaffold-repo/triggers/grpc/src/types/Workflows.ts +7 -0
  441. package/dist/scaffold-repo/triggers/grpc/tsconfig.json +34 -0
  442. package/dist/scaffold-repo/triggers/grpc/vitest.config.ts +29 -0
  443. package/dist/scaffold-repo/triggers/grpc/workflows/countries.json +27 -0
  444. package/dist/scaffold-repo/triggers/http/.blok/trace.db +0 -0
  445. package/dist/scaffold-repo/triggers/http/.blok/trace.db-shm +0 -0
  446. package/dist/scaffold-repo/triggers/http/.blok/trace.db-wal +0 -0
  447. package/dist/scaffold-repo/triggers/http/.dockerignore +23 -0
  448. package/dist/scaffold-repo/triggers/http/.env.example +8 -0
  449. package/dist/scaffold-repo/triggers/http/CHANGELOG.md +326 -0
  450. package/dist/scaffold-repo/triggers/http/Dockerfile +49 -0
  451. package/dist/scaffold-repo/triggers/http/Dockerfile.dev +34 -0
  452. package/dist/scaffold-repo/triggers/http/infra/docker-compose.yml +38 -0
  453. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Authentication.md +74 -0
  454. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Building.md +52 -0
  455. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Create_Node.md +123 -0
  456. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Create_Workflow.md +177 -0
  457. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Deployment.md +69 -0
  458. package/dist/scaffold-repo/triggers/http/notes/Core_Concepts/Context.md +156 -0
  459. package/dist/scaffold-repo/triggers/http/notes/examples.md +104 -0
  460. package/dist/scaffold-repo/triggers/http/notes/index.md +51 -0
  461. package/dist/scaffold-repo/triggers/http/package.json +62 -0
  462. package/dist/scaffold-repo/triggers/http/public/favicon.ico +0 -0
  463. package/dist/scaffold-repo/triggers/http/public/metric/index.html +2101 -0
  464. package/dist/scaffold-repo/triggers/http/request.http +7 -0
  465. package/dist/scaffold-repo/triggers/http/src/AppRoutes.ts +64 -0
  466. package/dist/scaffold-repo/triggers/http/src/Nodes.ts +38 -0
  467. package/dist/scaffold-repo/triggers/http/src/Workflows.ts +18 -0
  468. package/dist/scaffold-repo/triggers/http/src/index.ts +86 -0
  469. package/dist/scaffold-repo/triggers/http/src/nodes/chain-init/index.ts +48 -0
  470. package/dist/scaffold-repo/triggers/http/src/nodes/chain-verify/index.ts +123 -0
  471. package/dist/scaffold-repo/triggers/http/src/nodes/eval/index.ts +69 -0
  472. package/dist/scaffold-repo/triggers/http/src/nodes/examples/README.md +14 -0
  473. package/dist/scaffold-repo/triggers/http/src/nodes/examples/chat-ui/index.html +228 -0
  474. package/dist/scaffold-repo/triggers/http/src/nodes/examples/chat-ui/index.ts +65 -0
  475. package/dist/scaffold-repo/triggers/http/src/nodes/examples/index.ts +14 -0
  476. package/dist/scaffold-repo/triggers/http/src/nodes/runtime-bridge/index.ts +84 -0
  477. package/dist/scaffold-repo/triggers/http/src/runner/HonoTraceRouterAdapter.ts +199 -0
  478. package/dist/scaffold-repo/triggers/http/src/runner/HttpTrigger.ts +2039 -0
  479. package/dist/scaffold-repo/triggers/http/src/runner/MessageDecode.ts +57 -0
  480. package/dist/scaffold-repo/triggers/http/src/runner/Util.ts +52 -0
  481. package/dist/scaffold-repo/triggers/http/src/runner/WorkflowRouter.ts +411 -0
  482. package/dist/scaffold-repo/triggers/http/src/runner/metrics/opentelemetry_metrics.ts +84 -0
  483. package/dist/scaffold-repo/triggers/http/src/runner/metrics/opentelemetry_traces.ts +30 -0
  484. package/dist/scaffold-repo/triggers/http/src/runner/nodeCatalog.ts +128 -0
  485. package/dist/scaffold-repo/triggers/http/src/runner/responseEmitter.ts +138 -0
  486. package/dist/scaffold-repo/triggers/http/src/runner/scanWorkflows.ts +201 -0
  487. package/dist/scaffold-repo/triggers/http/src/runner/types/ErrorResponse.ts +3 -0
  488. package/dist/scaffold-repo/triggers/http/src/runner/types/NodeTypes.ts +13 -0
  489. package/dist/scaffold-repo/triggers/http/src/runner/types/Nodes.ts +5 -0
  490. package/dist/scaffold-repo/triggers/http/src/runner/types/RuntimeWorkflow.ts +7 -0
  491. package/dist/scaffold-repo/triggers/http/src/runner/types/WorkflowRequest.ts +8 -0
  492. package/dist/scaffold-repo/triggers/http/src/runner/types/WorkflowResponse.ts +7 -0
  493. package/dist/scaffold-repo/triggers/http/src/runner/types/Workflows.ts +14 -0
  494. package/dist/scaffold-repo/triggers/http/src/workflows/countries-cats-helper.ts +30 -0
  495. package/dist/scaffold-repo/triggers/http/src/workflows/countries-handle-dsl.ts +25 -0
  496. package/dist/scaffold-repo/triggers/http/src/workflows/countries-helper.ts +18 -0
  497. package/dist/scaffold-repo/triggers/http/src/workflows/empty.ts +16 -0
  498. package/dist/scaffold-repo/triggers/http/src/workflows/eval/eval-retrieve.ts +23 -0
  499. package/dist/scaffold-repo/triggers/http/src/workflows/eval/eval-run.ts +39 -0
  500. package/dist/scaffold-repo/triggers/http/src/workflows/eval/foreign-auth.ts +24 -0
  501. package/dist/scaffold-repo/triggers/http/tsconfig.json +39 -0
  502. package/dist/scaffold-repo/triggers/http/vitest.config.ts +39 -0
  503. package/dist/scaffold-repo/triggers/http/workflows/json/agent-message.json +87 -0
  504. package/dist/scaffold-repo/triggers/http/workflows/json/agent-page.json +25 -0
  505. package/dist/scaffold-repo/triggers/http/workflows/json/agent-stream.json +30 -0
  506. package/dist/scaffold-repo/triggers/http/workflows/json/agent-tool-calculator.json +22 -0
  507. package/dist/scaffold-repo/triggers/http/workflows/json/agent-tool-weather.json +22 -0
  508. package/dist/scaffold-repo/triggers/http/workflows/json/chat-memory-message.json +54 -0
  509. package/dist/scaffold-repo/triggers/http/workflows/json/chat-memory-page.json +25 -0
  510. package/dist/scaffold-repo/triggers/http/workflows/json/chat-memory-stream.json +30 -0
  511. package/dist/scaffold-repo/triggers/http/workflows/json/chat-message.json +25 -0
  512. package/dist/scaffold-repo/triggers/http/workflows/json/chat-page.json +20 -0
  513. package/dist/scaffold-repo/triggers/http/workflows/json/chat-stream.json +30 -0
  514. package/dist/scaffold-repo/triggers/http/workflows/json/countries-py.json +27 -0
  515. package/dist/scaffold-repo/triggers/http/workflows/json/countries-vs-facts.json +50 -0
  516. package/dist/scaffold-repo/triggers/http/workflows/json/countries.json +27 -0
  517. package/dist/scaffold-repo/triggers/http/workflows/json/cross-runtime-chain.json +89 -0
  518. package/dist/scaffold-repo/triggers/http/workflows/json/dashboard-gen.json +34 -0
  519. package/dist/scaffold-repo/triggers/http/workflows/json/db-manager.json +34 -0
  520. package/dist/scaffold-repo/triggers/http/workflows/json/empty.json +13 -0
  521. package/dist/scaffold-repo/triggers/http/workflows/json/fanout-enqueue.json +48 -0
  522. package/dist/scaffold-repo/triggers/http/workflows/json/fanout-worker.json +41 -0
  523. package/dist/scaffold-repo/triggers/http/workflows/json/feedback.json +34 -0
  524. package/dist/scaffold-repo/triggers/http/workflows/json/films.json +27 -0
  525. package/dist/scaffold-repo/triggers/http/workflows/json/image-capture.json +34 -0
  526. package/dist/scaffold-repo/triggers/http/workflows/json/launches-by-year.json +27 -0
  527. package/dist/scaffold-repo/triggers/http/workflows/json/loadtest.json +24 -0
  528. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/admin-only.json +31 -0
  529. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/auth-check.json +59 -0
  530. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/github-webhook-verify.json +34 -0
  531. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/jwt-auth.json +46 -0
  532. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/rate-limit.json +70 -0
  533. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/redis-rate-limit.json +71 -0
  534. package/dist/scaffold-repo/triggers/http/workflows/json/mongodb.json +24 -0
  535. package/dist/scaffold-repo/triggers/http/workflows/json/rentals-pdf.json +65 -0
  536. package/dist/scaffold-repo/triggers/http/workflows/json/v05-admin-delete-user.json +42 -0
  537. package/dist/scaffold-repo/triggers/http/workflows/json/v05-async-job-poller.json +45 -0
  538. package/dist/scaffold-repo/triggers/http/workflows/json/v05-csv-import.json +122 -0
  539. package/dist/scaffold-repo/triggers/http/workflows/json/v05-data-export.json +105 -0
  540. package/dist/scaffold-repo/triggers/http/workflows/json/v05-event-router.json +97 -0
  541. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-handler-issues.json +22 -0
  542. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-handler-pr.json +22 -0
  543. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-handler-push.json +22 -0
  544. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-webhook-router.json +88 -0
  545. package/dist/scaffold-repo/triggers/http/workflows/json/v05-hello-global-mw.json +22 -0
  546. package/dist/scaffold-repo/triggers/http/workflows/json/v05-hello-with-mw.json +23 -0
  547. package/dist/scaffold-repo/triggers/http/workflows/json/v05-jwt-protected.json +23 -0
  548. package/dist/scaffold-repo/triggers/http/workflows/json/v05-multi-tenant-router.json +90 -0
  549. package/dist/scaffold-repo/triggers/http/workflows/json/v05-nested-control-flow.json +207 -0
  550. package/dist/scaffold-repo/triggers/http/workflows/json/v05-order-fulfillment.json +211 -0
  551. package/dist/scaffold-repo/triggers/http/workflows/json/v05-parallel-foreach-with-wait.json +47 -0
  552. package/dist/scaffold-repo/triggers/http/workflows/json/v05-polling-with-backoff.json +55 -0
  553. package/dist/scaffold-repo/triggers/http/workflows/json/v05-protected.json +23 -0
  554. package/dist/scaffold-repo/triggers/http/workflows/json/v05-redis-protected.json +23 -0
  555. package/dist/scaffold-repo/triggers/http/workflows/json/v05-saga.json +122 -0
  556. package/dist/scaffold-repo/triggers/http/workflows/json/v05-tenant-acme.json +22 -0
  557. package/dist/scaffold-repo/triggers/http/workflows/json/v05-tenant-beta.json +22 -0
  558. package/dist/scaffold-repo/triggers/http/workflows/json/v05-tenant-gamma.json +22 -0
  559. package/dist/scaffold-repo/triggers/http/workflows/json/v05-travel-booking.json +200 -0
  560. package/dist/scaffold-repo/triggers/http/workflows/json/v05-user-signup-saga.json +186 -0
  561. package/dist/scaffold-repo/triggers/http/workflows/json/v05-webhook-fanout.json +49 -0
  562. package/dist/scaffold-repo/triggers/http/workflows/json/v06-reliability-showcase.json +80 -0
  563. package/dist/scaffold-repo/triggers/http/workflows/json/v07-sse-publish.json +24 -0
  564. package/dist/scaffold-repo/triggers/http/workflows/json/v07-sse-stream.json +26 -0
  565. package/dist/scaffold-repo/triggers/http/workflows/json/v07-ws-echo.json +38 -0
  566. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github-issues.json +22 -0
  567. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github-pr.json +22 -0
  568. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github-push.json +32 -0
  569. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github.json +87 -0
  570. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-linear-comment.json +22 -0
  571. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-linear-issue.json +22 -0
  572. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-linear.json +74 -0
  573. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-stripe-customer-created.json +22 -0
  574. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-stripe-invoice-paid.json +32 -0
  575. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-stripe.json +24 -0
  576. package/dist/scaffold-repo/triggers/http/workflows/json/workflow-docs.json +34 -0
  577. package/dist/scaffold-repo/triggers/http/workflows/toml/countries.toml +21 -0
  578. package/dist/scaffold-repo/triggers/http/workflows/xml/countries.xml +23 -0
  579. package/dist/scaffold-repo/triggers/http/workflows/yaml/countries.yaml +19 -0
  580. package/dist/scaffold-repo/triggers/mcp/README.md +131 -0
  581. package/dist/scaffold-repo/triggers/mcp/package.json +39 -0
  582. package/dist/scaffold-repo/triggers/mcp/src/McpTrigger.ts +581 -0
  583. package/dist/scaffold-repo/triggers/mcp/src/index.ts +41 -0
  584. package/dist/scaffold-repo/triggers/mcp/tsconfig.json +32 -0
  585. package/dist/scaffold-repo/triggers/pubsub/CHANGELOG.md +22 -0
  586. package/dist/scaffold-repo/triggers/pubsub/package.json +66 -0
  587. package/dist/scaffold-repo/triggers/pubsub/src/PubSubTrigger.ts +424 -0
  588. package/dist/scaffold-repo/triggers/pubsub/src/adapters/AWSSNSAdapter.ts +352 -0
  589. package/dist/scaffold-repo/triggers/pubsub/src/adapters/AzureServiceBusAdapter.ts +303 -0
  590. package/dist/scaffold-repo/triggers/pubsub/src/adapters/GCPPubSubAdapter.ts +327 -0
  591. package/dist/scaffold-repo/triggers/pubsub/src/adapters/KafkaPubSubAdapter.ts +247 -0
  592. package/dist/scaffold-repo/triggers/pubsub/src/adapters/KafkaPubSubAdapter.ts.bak +251 -0
  593. package/dist/scaffold-repo/triggers/pubsub/src/adapters/NATSPubSubAdapter.ts +333 -0
  594. package/dist/scaffold-repo/triggers/pubsub/src/adapters/RedisStreamsPubSubAdapter.ts +256 -0
  595. package/dist/scaffold-repo/triggers/pubsub/src/adapters/factory.ts +88 -0
  596. package/dist/scaffold-repo/triggers/pubsub/src/index.ts +67 -0
  597. package/dist/scaffold-repo/triggers/pubsub/template/.env.example +8 -0
  598. package/dist/scaffold-repo/triggers/pubsub/template/package.json +45 -0
  599. package/dist/scaffold-repo/triggers/pubsub/template/src/Nodes.ts +20 -0
  600. package/dist/scaffold-repo/triggers/pubsub/template/src/Workflows.ts +8 -0
  601. package/dist/scaffold-repo/triggers/pubsub/template/src/index.ts +41 -0
  602. package/dist/scaffold-repo/triggers/pubsub/template/src/runner/PubSubServer.ts +39 -0
  603. package/dist/scaffold-repo/triggers/pubsub/template/src/runner/types/Workflows.ts +7 -0
  604. package/dist/scaffold-repo/triggers/pubsub/template/src/workflows/messages/on-message.ts +42 -0
  605. package/dist/scaffold-repo/triggers/pubsub/template/src/workflows/publish-order.ts +22 -0
  606. package/dist/scaffold-repo/triggers/pubsub/template/tsconfig.json +31 -0
  607. package/dist/scaffold-repo/triggers/pubsub/template/vitest.config.ts +39 -0
  608. package/dist/scaffold-repo/triggers/pubsub/tsconfig.json +32 -0
  609. package/dist/scaffold-repo/triggers/sse/.env.example +8 -0
  610. package/dist/scaffold-repo/triggers/sse/CHANGELOG.md +12 -0
  611. package/dist/scaffold-repo/triggers/sse/Dockerfile +47 -0
  612. package/dist/scaffold-repo/triggers/sse/Dockerfile.dev +33 -0
  613. package/dist/scaffold-repo/triggers/sse/package.json +37 -0
  614. package/dist/scaffold-repo/triggers/sse/src/SSETrigger.ts +489 -0
  615. package/dist/scaffold-repo/triggers/sse/src/bus.ts +208 -0
  616. package/dist/scaffold-repo/triggers/sse/src/index.ts +38 -0
  617. package/dist/scaffold-repo/triggers/sse/src/workflows/events/README.md +129 -0
  618. package/dist/scaffold-repo/triggers/sse/src/workflows/events/publish-demo.ts +40 -0
  619. package/dist/scaffold-repo/triggers/sse/src/workflows/events/stream-demo.ts +43 -0
  620. package/dist/scaffold-repo/triggers/sse/tsconfig.json +22 -0
  621. package/dist/scaffold-repo/triggers/sse/vitest.config.ts +39 -0
  622. package/dist/scaffold-repo/triggers/webhook/CHANGELOG.md +22 -0
  623. package/dist/scaffold-repo/triggers/webhook/package.json +36 -0
  624. package/dist/scaffold-repo/triggers/webhook/src/WebhookTrigger.ts +465 -0
  625. package/dist/scaffold-repo/triggers/webhook/src/index.ts +51 -0
  626. package/dist/scaffold-repo/triggers/webhook/src/verifiers.ts +394 -0
  627. package/dist/scaffold-repo/triggers/webhook/tsconfig.json +32 -0
  628. package/dist/scaffold-repo/triggers/websocket/.env.example +8 -0
  629. package/dist/scaffold-repo/triggers/websocket/CHANGELOG.md +22 -0
  630. package/dist/scaffold-repo/triggers/websocket/package.json +50 -0
  631. package/dist/scaffold-repo/triggers/websocket/src/Backplane.ts +167 -0
  632. package/dist/scaffold-repo/triggers/websocket/src/WebSocketTrigger.ts +910 -0
  633. package/dist/scaffold-repo/triggers/websocket/src/index.ts +50 -0
  634. package/dist/scaffold-repo/triggers/websocket/src/workflows/events/README.md +93 -0
  635. package/dist/scaffold-repo/triggers/websocket/src/workflows/events/echo-demo.ts +56 -0
  636. package/dist/scaffold-repo/triggers/websocket/tsconfig.json +22 -0
  637. package/dist/scaffold-repo/triggers/websocket/vitest.config.ts +39 -0
  638. package/dist/scaffold-repo/triggers/worker/CHANGELOG.md +22 -0
  639. package/dist/scaffold-repo/triggers/worker/package.json +68 -0
  640. package/dist/scaffold-repo/triggers/worker/src/WorkerTrigger.ts +943 -0
  641. package/dist/scaffold-repo/triggers/worker/src/adapters/BullMQAdapter.ts +296 -0
  642. package/dist/scaffold-repo/triggers/worker/src/adapters/InMemoryAdapter.ts +280 -0
  643. package/dist/scaffold-repo/triggers/worker/src/adapters/KafkaAdapter.ts +347 -0
  644. package/dist/scaffold-repo/triggers/worker/src/adapters/NATSAdapter.ts +505 -0
  645. package/dist/scaffold-repo/triggers/worker/src/adapters/PgBossAdapter.ts +319 -0
  646. package/dist/scaffold-repo/triggers/worker/src/adapters/RabbitMQAdapter.ts +318 -0
  647. package/dist/scaffold-repo/triggers/worker/src/adapters/RedisStreamsAdapter.ts +513 -0
  648. package/dist/scaffold-repo/triggers/worker/src/adapters/SQSAdapter.ts +314 -0
  649. package/dist/scaffold-repo/triggers/worker/src/adapters/factory.ts +111 -0
  650. package/dist/scaffold-repo/triggers/worker/src/index.ts +95 -0
  651. package/dist/scaffold-repo/triggers/worker/template/.env.example +18 -0
  652. package/dist/scaffold-repo/triggers/worker/template/package.json +46 -0
  653. package/dist/scaffold-repo/triggers/worker/template/src/Nodes.ts +20 -0
  654. package/dist/scaffold-repo/triggers/worker/template/src/Workflows.ts +8 -0
  655. package/dist/scaffold-repo/triggers/worker/template/src/index.ts +41 -0
  656. package/dist/scaffold-repo/triggers/worker/template/src/runner/WorkerServer.ts +34 -0
  657. package/dist/scaffold-repo/triggers/worker/template/src/runner/types/Workflows.ts +7 -0
  658. package/dist/scaffold-repo/triggers/worker/template/src/workflows/jobs/process-job.ts +40 -0
  659. package/dist/scaffold-repo/triggers/worker/template/tsconfig.json +31 -0
  660. package/dist/scaffold-repo/triggers/worker/template/vitest.config.ts +39 -0
  661. package/dist/scaffold-repo/triggers/worker/tsconfig.json +32 -0
  662. package/dist/scaffold-repo/workflows/json/agent-message.json +87 -0
  663. package/dist/scaffold-repo/workflows/json/agent-page.json +25 -0
  664. package/dist/scaffold-repo/workflows/json/agent-stream.json +30 -0
  665. package/dist/scaffold-repo/workflows/json/agent-tool-calculator.json +22 -0
  666. package/dist/scaffold-repo/workflows/json/agent-tool-weather.json +22 -0
  667. package/dist/scaffold-repo/workflows/json/chat-memory-message.json +54 -0
  668. package/dist/scaffold-repo/workflows/json/chat-memory-page.json +25 -0
  669. package/dist/scaffold-repo/workflows/json/chat-memory-stream.json +30 -0
  670. package/dist/scaffold-repo/workflows/json/chat-message.json +25 -0
  671. package/dist/scaffold-repo/workflows/json/chat-page.json +20 -0
  672. package/dist/scaffold-repo/workflows/json/chat-stream.json +30 -0
  673. package/dist/scaffold-repo/workflows/json/countries-vs-facts.json +50 -0
  674. package/dist/scaffold-repo/workflows/json/countries.json +27 -0
  675. package/dist/scaffold-repo/workflows/json/cron-heartbeat.json +15 -0
  676. package/dist/scaffold-repo/workflows/json/fanout-enqueue.json +48 -0
  677. package/dist/scaffold-repo/workflows/json/fanout-worker.json +41 -0
  678. package/dist/scaffold-repo/workflows/json/pubsub-on-order.json +24 -0
  679. package/dist/scaffold-repo/workflows/json/webhook-github-issues.json +22 -0
  680. package/dist/scaffold-repo/workflows/json/webhook-github-pr.json +22 -0
  681. package/dist/scaffold-repo/workflows/json/webhook-github-push.json +32 -0
  682. package/dist/scaffold-repo/workflows/json/webhook-github.json +87 -0
  683. package/dist/scaffold-repo/workflows/json/webhook-linear-comment.json +22 -0
  684. package/dist/scaffold-repo/workflows/json/webhook-linear-issue.json +22 -0
  685. package/dist/scaffold-repo/workflows/json/webhook-linear.json +74 -0
  686. package/dist/scaffold-repo/workflows/json/webhook-stripe-customer-created.json +22 -0
  687. package/dist/scaffold-repo/workflows/json/webhook-stripe-invoice-paid.json +32 -0
  688. package/dist/scaffold-repo/workflows/json/webhook-stripe.json +24 -0
  689. package/dist/services/runtime-detector.d.ts +2 -0
  690. package/dist/services/runtime-detector.js +35 -11
  691. package/dist/services/runtime-setup.d.ts +1 -0
  692. package/dist/services/runtime-setup.js +17 -7
  693. package/package.json +4 -4
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # Context represents the workflow execution context passed between nodes.
6
+ # It carries the request data, response state, variables, and environment.
7
+ class Context
8
+ attr_accessor :id, :workflow_name, :workflow_path, :request, :response, :vars, :env
9
+
10
+ # @param id [String] Unique execution identifier
11
+ # @param workflow_name [String] Name of the executing workflow
12
+ # @param workflow_path [String] Path of the executing workflow
13
+ # @param request [Request] Incoming request data
14
+ # @param response [Response] Accumulated response data
15
+ # @param vars [Hash] Variables shared between nodes
16
+ # @param env [Hash] Environment variables
17
+ def initialize(id: "", workflow_name: "", workflow_path: "",
18
+ request: nil, response: nil, vars: {}, env: {})
19
+ @id = id
20
+ @workflow_name = workflow_name
21
+ @workflow_path = workflow_path
22
+ @request = request || Request.new
23
+ @response = response || Response.new
24
+ @vars = vars
25
+ @env = env
26
+ end
27
+
28
+ # Build a Context from a Hash (JSON-parsed).
29
+ # @param hash [Hash] the parsed JSON hash
30
+ # @return [Context]
31
+ def self.from_hash(hash)
32
+ return new if hash.nil?
33
+
34
+ new(
35
+ id: hash["id"] || "",
36
+ workflow_name: hash["workflow_name"] || "",
37
+ workflow_path: hash["workflow_path"] || "",
38
+ request: Request.from_hash(hash["request"]),
39
+ response: Response.from_hash(hash["response"]),
40
+ vars: hash["vars"] || {},
41
+ env: hash["env"] || {}
42
+ )
43
+ end
44
+
45
+ # Serialize to a Hash suitable for JSON output.
46
+ # @return [Hash]
47
+ def to_hash
48
+ {
49
+ "id" => @id,
50
+ "workflow_name" => @workflow_name,
51
+ "workflow_path" => @workflow_path,
52
+ "request" => @request.to_hash,
53
+ "response" => @response.to_hash,
54
+ "vars" => @vars,
55
+ "env" => @env
56
+ }
57
+ end
58
+
59
+ # Store a variable in context for downstream nodes.
60
+ # @param key [String] Variable name
61
+ # @param value [Object] Variable value
62
+ def set_var(key, value)
63
+ @vars[key] = value
64
+ end
65
+
66
+ # Retrieve a variable from context.
67
+ # @param key [String] Variable name
68
+ # @return [Object, nil]
69
+ def get_var(key)
70
+ @vars[key]
71
+ end
72
+
73
+ # Retrieve a string variable from context.
74
+ # @param key [String] Variable name
75
+ # @return [String, nil]
76
+ def get_var_str(key)
77
+ val = @vars[key]
78
+ val.is_a?(String) ? val : nil
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # ExecutionMetrics captures performance metrics for a node execution.
6
+ class ExecutionMetrics
7
+ attr_accessor :duration_ms, :cpu_ms, :memory_bytes
8
+
9
+ # @param duration_ms [Float, nil] Wall-clock execution time in milliseconds
10
+ # @param cpu_ms [Float, nil] CPU time in milliseconds
11
+ # @param memory_bytes [Integer, nil] Peak memory usage in bytes
12
+ def initialize(duration_ms: nil, cpu_ms: nil, memory_bytes: nil)
13
+ @duration_ms = duration_ms
14
+ @cpu_ms = cpu_ms
15
+ @memory_bytes = memory_bytes
16
+ end
17
+
18
+ # Build an ExecutionMetrics from a Hash (JSON-parsed).
19
+ # @param hash [Hash] the parsed JSON hash
20
+ # @return [ExecutionMetrics]
21
+ def self.from_hash(hash)
22
+ return new if hash.nil?
23
+
24
+ new(
25
+ duration_ms: hash["duration_ms"],
26
+ cpu_ms: hash["cpu_ms"],
27
+ memory_bytes: hash["memory_bytes"]
28
+ )
29
+ end
30
+
31
+ # Serialize to a Hash suitable for JSON output.
32
+ # Omits nil values to keep the payload compact.
33
+ # @return [Hash]
34
+ def to_hash
35
+ h = {}
36
+ h["duration_ms"] = @duration_ms unless @duration_ms.nil?
37
+ h["cpu_ms"] = @cpu_ms unless @cpu_ms.nil?
38
+ h["memory_bytes"] = @memory_bytes unless @memory_bytes.nil?
39
+ h
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # ExecutionRequest is the request received from the Blok runner.
6
+ # It wraps the node configuration and the workflow execution context.
7
+ class ExecutionRequest
8
+ attr_accessor :node, :context
9
+
10
+ # @param node [NodeConfig] Node configuration
11
+ # @param context [Context] Workflow execution context
12
+ def initialize(node: nil, context: nil)
13
+ @node = node || NodeConfig.new
14
+ @context = context || Context.new
15
+ end
16
+
17
+ # Build an ExecutionRequest from a Hash (JSON-parsed).
18
+ # @param hash [Hash] the parsed JSON hash
19
+ # @return [ExecutionRequest]
20
+ def self.from_hash(hash)
21
+ return new if hash.nil?
22
+
23
+ new(
24
+ node: NodeConfig.from_hash(hash["node"]),
25
+ context: Context.from_hash(hash["context"])
26
+ )
27
+ end
28
+
29
+ # Serialize to a Hash suitable for JSON output.
30
+ # @return [Hash]
31
+ def to_hash
32
+ {
33
+ "node" => @node.to_hash,
34
+ "context" => @context.to_hash
35
+ }
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,117 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # ExecutionResult is the response returned to the Blok runner after node execution.
6
+ class ExecutionResult
7
+ attr_accessor :success, :data, :errors, :logs, :metrics, :vars
8
+
9
+ # @param success [Boolean] Whether execution succeeded
10
+ # @param data [Object] Result data payload
11
+ # @param errors [Object, nil] Error information
12
+ # @param logs [Array<String>, nil] Log lines captured during execution
13
+ # @param metrics [ExecutionMetrics, nil] Performance metrics
14
+ def initialize(success:, data:, errors: nil, logs: nil, metrics: nil, vars: nil)
15
+ @success = success
16
+ @data = data
17
+ @errors = errors
18
+ @logs = logs
19
+ @metrics = metrics
20
+ @vars = vars
21
+ end
22
+
23
+ # Create a successful result.
24
+ # @param data [Object] Result data payload
25
+ # @return [ExecutionResult]
26
+ def self.success(data)
27
+ new(success: true, data: data)
28
+ end
29
+
30
+ # Create a successful result with metrics.
31
+ # @param data [Object] Result data payload
32
+ # @param metrics [ExecutionMetrics] Performance metrics
33
+ # @return [ExecutionResult]
34
+ def self.success_with_metrics(data, metrics)
35
+ new(success: true, data: data, metrics: metrics)
36
+ end
37
+
38
+ # Create an error result.
39
+ # @param message [String] Error message
40
+ # @return [ExecutionResult]
41
+ def self.error(message)
42
+ new(
43
+ success: false,
44
+ data: nil,
45
+ errors: { "message" => message }
46
+ )
47
+ end
48
+
49
+ # Create an error result with details.
50
+ # @param message [String] Error message
51
+ # @param details [Object] Additional error details
52
+ # @return [ExecutionResult]
53
+ def self.error_with_details(message, details)
54
+ new(
55
+ success: false,
56
+ data: nil,
57
+ errors: { "message" => message, "details" => details }
58
+ )
59
+ end
60
+
61
+ # Attach log entries to the result.
62
+ # @param logs [Array<String>] Log lines
63
+ # @return [self]
64
+ def with_logs(logs)
65
+ @logs = logs
66
+ self
67
+ end
68
+
69
+ # Attach metrics to the result.
70
+ # @param metrics [ExecutionMetrics] Performance metrics
71
+ # @return [self]
72
+ def with_metrics(metrics)
73
+ @metrics = metrics
74
+ self
75
+ end
76
+
77
+ # Attach context variables to the result.
78
+ # @param vars [Hash] Context variables
79
+ # @return [self]
80
+ def with_vars(vars)
81
+ @vars = vars
82
+ self
83
+ end
84
+
85
+ # Build an ExecutionResult from a Hash (JSON-parsed).
86
+ # @param hash [Hash] the parsed JSON hash
87
+ # @return [ExecutionResult]
88
+ def self.from_hash(hash)
89
+ return error("unknown error") if hash.nil?
90
+
91
+ new(
92
+ success: hash["success"] || false,
93
+ data: hash["data"],
94
+ errors: hash["errors"],
95
+ logs: hash["logs"],
96
+ metrics: hash["metrics"] ? ExecutionMetrics.from_hash(hash["metrics"]) : nil,
97
+ vars: hash["vars"]
98
+ )
99
+ end
100
+
101
+ # Serialize to a Hash suitable for JSON output.
102
+ # Omits nil optional fields to keep the payload compact.
103
+ # @return [Hash]
104
+ def to_hash
105
+ h = {
106
+ "success" => @success,
107
+ "data" => @data
108
+ }
109
+ h["errors"] = @errors unless @errors.nil?
110
+ h["logs"] = @logs unless @logs.nil?
111
+ h["metrics"] = @metrics.to_hash unless @metrics.nil?
112
+ h["vars"] = @vars unless @vars.nil?
113
+ h
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # HealthStatus represents the health status of the blok runtime.
6
+ class HealthStatus
7
+ attr_accessor :status, :version, :nodes_loaded
8
+
9
+ # @param status [String] Health status ("healthy" or "unhealthy")
10
+ # @param version [String] Runtime version
11
+ # @param nodes_loaded [Array<String>] Names of registered nodes
12
+ def initialize(status: "healthy", version: "1.0.0", nodes_loaded: [])
13
+ @status = status
14
+ @version = version
15
+ @nodes_loaded = nodes_loaded
16
+ end
17
+
18
+ # Build a HealthStatus from a Hash (JSON-parsed).
19
+ # @param hash [Hash] the parsed JSON hash
20
+ # @return [HealthStatus]
21
+ def self.from_hash(hash)
22
+ return new if hash.nil?
23
+
24
+ new(
25
+ status: hash["status"] || "healthy",
26
+ version: hash["version"] || "1.0.0",
27
+ nodes_loaded: hash["nodes_loaded"] || []
28
+ )
29
+ end
30
+
31
+ # Serialize to a Hash suitable for JSON output.
32
+ # @return [Hash]
33
+ def to_hash
34
+ {
35
+ "status" => @status,
36
+ "version" => @version,
37
+ "nodes_loaded" => @nodes_loaded
38
+ }
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # NodeConfig represents node-specific configuration from the runner.
6
+ class NodeConfig
7
+ attr_accessor :name, :path, :node_type, :config
8
+
9
+ # @param name [String] Node name (used for registry lookup)
10
+ # @param path [String] Node path in the workflow
11
+ # @param node_type [String] Type of the node
12
+ # @param config [Hash] Key-value configuration for the node
13
+ def initialize(name: "", path: "", node_type: "", config: {})
14
+ @name = name
15
+ @path = path
16
+ @node_type = node_type
17
+ @config = config
18
+ end
19
+
20
+ # Build a NodeConfig from a Hash (JSON-parsed).
21
+ # @param hash [Hash] the parsed JSON hash
22
+ # @return [NodeConfig]
23
+ def self.from_hash(hash)
24
+ return new if hash.nil?
25
+
26
+ new(
27
+ name: hash["name"] || "",
28
+ path: hash["path"] || "",
29
+ node_type: hash["type"] || "",
30
+ config: hash["config"] || {}
31
+ )
32
+ end
33
+
34
+ # Serialize to a Hash suitable for JSON output.
35
+ # @return [Hash]
36
+ def to_hash
37
+ {
38
+ "name" => @name,
39
+ "path" => @path,
40
+ "type" => @node_type,
41
+ "config" => @config
42
+ }
43
+ end
44
+
45
+ # Get a string config value with a default.
46
+ # @param key [String] Config key
47
+ # @param default [String] Default value
48
+ # @return [String]
49
+ def config_str(key, default = "")
50
+ val = @config[key]
51
+ val.is_a?(String) ? val : default
52
+ end
53
+
54
+ # Get an integer config value with a default.
55
+ # @param key [String] Config key
56
+ # @param default [Integer] Default value
57
+ # @return [Integer]
58
+ def config_int(key, default = 0)
59
+ val = @config[key]
60
+ val.is_a?(Integer) ? val : default
61
+ end
62
+
63
+ # Get a boolean config value with a default.
64
+ # @param key [String] Config key
65
+ # @param default [Boolean] Default value
66
+ # @return [Boolean]
67
+ def config_bool(key, default = false)
68
+ val = @config[key]
69
+ val == true || val == false ? val : default
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # Request represents the incoming HTTP request data passed through the workflow context.
6
+ class Request
7
+ attr_accessor :body, :headers, :params, :query, :method, :url, :cookies, :base_url
8
+
9
+ # @param body [Hash, nil] The request body
10
+ # @param headers [Hash] HTTP headers
11
+ # @param params [Hash] URL path parameters
12
+ # @param query [Hash] URL query parameters
13
+ # @param method [String] HTTP method
14
+ # @param url [String] Request URL
15
+ # @param cookies [Hash] Request cookies
16
+ # @param base_url [String] Base URL of the request
17
+ def initialize(body: {}, headers: {}, params: {}, query: {},
18
+ method: "", url: "", cookies: {}, base_url: "")
19
+ @body = body
20
+ @headers = headers
21
+ @params = params
22
+ @query = query
23
+ @method = method
24
+ @url = url
25
+ @cookies = cookies
26
+ @base_url = base_url
27
+ end
28
+
29
+ # Build a Request from a Hash (JSON-parsed).
30
+ # @param hash [Hash] the parsed JSON hash
31
+ # @return [Request]
32
+ def self.from_hash(hash)
33
+ return new if hash.nil?
34
+
35
+ new(
36
+ body: hash["body"] || {},
37
+ headers: hash["headers"] || {},
38
+ params: hash["params"] || {},
39
+ query: hash["query"] || {},
40
+ method: hash["method"] || "",
41
+ url: hash["url"] || "",
42
+ cookies: hash["cookies"] || {},
43
+ base_url: hash["baseUrl"] || ""
44
+ )
45
+ end
46
+
47
+ # Serialize to a Hash suitable for JSON output.
48
+ # @return [Hash]
49
+ def to_hash
50
+ {
51
+ "body" => @body,
52
+ "headers" => @headers,
53
+ "params" => @params,
54
+ "query" => @query,
55
+ "method" => @method,
56
+ "url" => @url,
57
+ "cookies" => @cookies,
58
+ "baseUrl" => @base_url
59
+ }
60
+ end
61
+
62
+ # Get a string value from the body by key.
63
+ # @param key [String] the body field key
64
+ # @return [String, nil]
65
+ def body_str(key)
66
+ val = @body.is_a?(Hash) ? @body[key] : nil
67
+ val.is_a?(String) ? val : nil
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Types
5
+ # Response represents the workflow response accumulated through node execution.
6
+ class Response
7
+ attr_accessor :data, :content_type, :success, :error
8
+
9
+ # @param data [Object] Response data
10
+ # @param content_type [String] Content type of the response
11
+ # @param success [Boolean] Whether the response is successful
12
+ # @param error [Object, nil] Error information
13
+ def initialize(data: nil, content_type: "", success: false, error: nil)
14
+ @data = data
15
+ @content_type = content_type
16
+ @success = success
17
+ @error = error
18
+ end
19
+
20
+ # Build a Response from a Hash (JSON-parsed).
21
+ # @param hash [Hash] the parsed JSON hash
22
+ # @return [Response]
23
+ def self.from_hash(hash)
24
+ return new if hash.nil?
25
+
26
+ new(
27
+ data: hash["data"],
28
+ content_type: hash["contentType"] || "",
29
+ success: hash["success"] || false,
30
+ error: hash["error"]
31
+ )
32
+ end
33
+
34
+ # Serialize to a Hash suitable for JSON output.
35
+ # @return [Hash]
36
+ def to_hash
37
+ {
38
+ "data" => @data,
39
+ "contentType" => @content_type,
40
+ "success" => @success,
41
+ "error" => @error
42
+ }
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,142 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ module Validation
5
+ # SchemaValidator validates data against a JSON Schema (Draft 7 subset).
6
+ # Supports type checking, required fields, nested properties, enum,
7
+ # string length constraints, numeric range constraints, and array item validation.
8
+ class SchemaValidator
9
+ # Validate data against a schema.
10
+ # @param data [Object] The data to validate (parsed JSON)
11
+ # @param schema [Hash] The JSON Schema definition
12
+ # @return [Array<String>] List of validation error messages (empty if valid)
13
+ def validate(data, schema)
14
+ errors = []
15
+ validate_value(data, schema, "$", errors)
16
+ errors
17
+ end
18
+
19
+ private
20
+
21
+ def validate_value(data, schema, path, errors)
22
+ return unless schema.is_a?(Hash)
23
+
24
+ # Type check
25
+ if schema.key?("type")
26
+ expected_type = schema["type"]
27
+ unless check_type(data, expected_type)
28
+ errors << "#{path}: expected type \"#{expected_type}\", got #{type_name(data)}"
29
+ return
30
+ end
31
+ end
32
+
33
+ # Enum check
34
+ if schema.key?("enum")
35
+ enum_values = schema["enum"]
36
+ if enum_values.is_a?(Array) && !enum_values.include?(data)
37
+ errors << "#{path}: value not in allowed enum values"
38
+ end
39
+ end
40
+
41
+ # Object: required fields
42
+ if schema.key?("required") && data.is_a?(Hash)
43
+ schema["required"].each do |field|
44
+ unless data.key?(field)
45
+ errors << "#{path}: missing required field \"#{field}\""
46
+ end
47
+ end
48
+ end
49
+
50
+ # Object: properties
51
+ if schema.key?("properties") && data.is_a?(Hash)
52
+ schema["properties"].each do |prop_name, prop_schema|
53
+ if data.key?(prop_name)
54
+ validate_value(data[prop_name], prop_schema, "#{path}.#{prop_name}", errors)
55
+ end
56
+ end
57
+ end
58
+
59
+ # String constraints
60
+ if data.is_a?(String)
61
+ if schema.key?("min_length") || schema.key?("minLength")
62
+ min = schema["min_length"] || schema["minLength"]
63
+ if data.length < min
64
+ errors << "#{path}: string length #{data.length} is less than minimum #{min}"
65
+ end
66
+ end
67
+ if schema.key?("max_length") || schema.key?("maxLength")
68
+ max = schema["max_length"] || schema["maxLength"]
69
+ if data.length > max
70
+ errors << "#{path}: string length #{data.length} exceeds maximum #{max}"
71
+ end
72
+ end
73
+ end
74
+
75
+ # Numeric constraints
76
+ if data.is_a?(Numeric)
77
+ if schema.key?("minimum")
78
+ min = schema["minimum"]
79
+ if data < min
80
+ errors << "#{path}: value #{data} is less than minimum #{min}"
81
+ end
82
+ end
83
+ if schema.key?("maximum")
84
+ max = schema["maximum"]
85
+ if data > max
86
+ errors << "#{path}: value #{data} exceeds maximum #{max}"
87
+ end
88
+ end
89
+ end
90
+
91
+ # Array items
92
+ if schema.key?("items") && data.is_a?(Array)
93
+ data.each_with_index do |item, i|
94
+ validate_value(item, schema["items"], "#{path}[#{i}]", errors)
95
+ end
96
+ end
97
+
98
+ # Array constraints
99
+ if data.is_a?(Array)
100
+ if schema.key?("min_items") || schema.key?("minItems")
101
+ min = schema["min_items"] || schema["minItems"]
102
+ if data.length < min
103
+ errors << "#{path}: array length #{data.length} is less than minimum #{min}"
104
+ end
105
+ end
106
+ if schema.key?("max_items") || schema.key?("maxItems")
107
+ max = schema["max_items"] || schema["maxItems"]
108
+ if data.length > max
109
+ errors << "#{path}: array length #{data.length} exceeds maximum #{max}"
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ def check_type(data, expected)
116
+ case expected
117
+ when "string" then data.is_a?(String)
118
+ when "number" then data.is_a?(Numeric)
119
+ when "integer" then data.is_a?(Integer)
120
+ when "boolean" then data == true || data == false
121
+ when "object" then data.is_a?(Hash)
122
+ when "array" then data.is_a?(Array)
123
+ when "null" then data.nil?
124
+ else true
125
+ end
126
+ end
127
+
128
+ def type_name(data)
129
+ case data
130
+ when nil then "null"
131
+ when true, false then "boolean"
132
+ when Integer then "integer"
133
+ when Numeric then "number"
134
+ when String then "string"
135
+ when Array then "array"
136
+ when Hash then "object"
137
+ else data.class.name
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blok
4
+ VERSION = "1.0.0"
5
+ end