blokctl 1.3.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 (685) hide show
  1. package/dist/commands/create/project.js +15 -4
  2. package/dist/commands/create/utils/Examples.d.ts +1 -1
  3. package/dist/commands/create/utils/Examples.js +1 -1
  4. package/dist/commands/runtime/shared.js +4 -0
  5. package/dist/scaffold-repo/examples/ts-workflows/mcp-greeter.ts +59 -0
  6. package/dist/scaffold-repo/examples/ts-workflows/runtime-csharp-hello.ts +36 -0
  7. package/dist/scaffold-repo/examples/ts-workflows/runtime-go-hello.ts +36 -0
  8. package/dist/scaffold-repo/examples/ts-workflows/runtime-java-hello.ts +36 -0
  9. package/dist/scaffold-repo/examples/ts-workflows/runtime-php-hello.ts +36 -0
  10. package/dist/scaffold-repo/examples/ts-workflows/runtime-python3-hello.ts +36 -0
  11. package/dist/scaffold-repo/examples/ts-workflows/runtime-ruby-hello.ts +36 -0
  12. package/dist/scaffold-repo/examples/ts-workflows/runtime-rust-hello.ts +36 -0
  13. package/dist/scaffold-repo/infra/development/3055.dat +602 -0
  14. package/dist/scaffold-repo/infra/development/3057.dat +203 -0
  15. package/dist/scaffold-repo/infra/development/3059.dat +19 -0
  16. package/dist/scaffold-repo/infra/development/3061.dat +1003 -0
  17. package/dist/scaffold-repo/infra/development/3062.dat +5465 -0
  18. package/dist/scaffold-repo/infra/development/3063.dat +1003 -0
  19. package/dist/scaffold-repo/infra/development/3065.dat +606 -0
  20. package/dist/scaffold-repo/infra/development/3067.dat +603 -0
  21. package/dist/scaffold-repo/infra/development/3069.dat +112 -0
  22. package/dist/scaffold-repo/infra/development/3071.dat +4584 -0
  23. package/dist/scaffold-repo/infra/development/3073.dat +9 -0
  24. package/dist/scaffold-repo/infra/development/3075.dat +14599 -0
  25. package/dist/scaffold-repo/infra/development/3077.dat +16047 -0
  26. package/dist/scaffold-repo/infra/development/3079.dat +5 -0
  27. package/dist/scaffold-repo/infra/development/3081.dat +5 -0
  28. package/dist/scaffold-repo/infra/development/docker-compose.yml +106 -0
  29. package/dist/scaffold-repo/infra/development/schema.sql +1616 -0
  30. package/dist/scaffold-repo/infra/development/toc.dat +0 -0
  31. package/dist/scaffold-repo/infra/metrics/alertmanager.yml +43 -0
  32. package/dist/scaffold-repo/infra/metrics/alloy-config.alloy +75 -0
  33. package/dist/scaffold-repo/infra/metrics/dashboard.json +1152 -0
  34. package/dist/scaffold-repo/infra/metrics/dashboards/blok-overview.json +314 -0
  35. package/dist/scaffold-repo/infra/metrics/dashboards/blok-system.json +175 -0
  36. package/dist/scaffold-repo/infra/metrics/dashboards/blok-tracing.json +235 -0
  37. package/dist/scaffold-repo/infra/metrics/dashboards/blok-triggers.json +258 -0
  38. package/dist/scaffold-repo/infra/metrics/datasources.yml +43 -0
  39. package/dist/scaffold-repo/infra/metrics/default.yaml +8 -0
  40. package/dist/scaffold-repo/infra/metrics/docker-compose.yml +193 -0
  41. package/dist/scaffold-repo/infra/metrics/loki-config.yaml +50 -0
  42. package/dist/scaffold-repo/infra/metrics/nginx.conf +25 -0
  43. package/dist/scaffold-repo/infra/metrics/prometheus.yml +51 -0
  44. package/dist/scaffold-repo/infra/metrics/rules/blok-alerts.yml +114 -0
  45. package/dist/scaffold-repo/infra/metrics/telegraf.conf +41 -0
  46. package/dist/scaffold-repo/infra/metrics/tempo.yaml +81 -0
  47. package/dist/scaffold-repo/infra/milvus/docker-compose.yml +73 -0
  48. package/dist/scaffold-repo/sdk/javascript/README.md +151 -0
  49. package/dist/scaffold-repo/sdk/javascript/bootstrap.min.css +11660 -0
  50. package/dist/scaffold-repo/sdk/javascript/image-ai.html +316 -0
  51. package/dist/scaffold-repo/sdk/javascript/nanosdk.js +180 -0
  52. package/dist/scaffold-repo/sdk/javascript/nanosdk.min.js +100 -0
  53. package/dist/scaffold-repo/sdk/javascript/pdf.html +63 -0
  54. package/dist/scaffold-repo/sdk/javascript/test.html +68 -0
  55. package/dist/scaffold-repo/sdks/CLAUDE.md +67 -0
  56. package/dist/scaffold-repo/sdks/csharp/.dockerignore +7 -0
  57. package/dist/scaffold-repo/sdks/csharp/Blok.Core.sln +24 -0
  58. package/dist/scaffold-repo/sdks/csharp/Dockerfile +42 -0
  59. package/dist/scaffold-repo/sdks/csharp/README.md +138 -0
  60. package/dist/scaffold-repo/sdks/csharp/proto/blok/runtime/v1/runtime.proto +302 -0
  61. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Blok.Core.csproj +39 -0
  62. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Config/ServerConfig.cs +90 -0
  63. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BlokError.cs +538 -0
  64. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BlokErrorCategory.cs +112 -0
  65. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BlokErrorSeverity.cs +40 -0
  66. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/BuildContextSnapshot.cs +168 -0
  67. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/ErrorCategory.cs +13 -0
  68. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Errors/NodeException.cs +44 -0
  69. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Logging/LogEntry.cs +34 -0
  70. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Logging/LogLevel.cs +12 -0
  71. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Logging/Logger.cs +92 -0
  72. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/IMiddleware.cs +14 -0
  73. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/LoggingMiddleware.cs +46 -0
  74. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/MiddlewareChain.cs +35 -0
  75. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Middleware/RecoveryMiddleware.cs +63 -0
  76. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Node/INodeHandler.cs +17 -0
  77. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Node/NodeRegistry.cs +128 -0
  78. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Node/TypedNode.cs +140 -0
  79. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/ApiCallNode.cs +129 -0
  80. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/BlokErrorDemoNode.cs +125 -0
  81. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/ChainTestNode.cs +79 -0
  82. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/HelloWorldNode.cs +45 -0
  83. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/TransformDataNode.cs +119 -0
  84. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Nodes/TypedGreetNode.cs +23 -0
  85. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Program.cs +26 -0
  86. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Server/BlokNodeRuntimeService.cs +536 -0
  87. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Server/RuntimeServer.cs +183 -0
  88. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Testing/MockContextBuilder.cs +117 -0
  89. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Testing/TestNodeRunner.cs +50 -0
  90. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/Context.cs +56 -0
  91. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/ExecutionMetrics.cs +21 -0
  92. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/ExecutionRequest.cs +15 -0
  93. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/ExecutionResult.cs +104 -0
  94. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/HealthStatus.cs +18 -0
  95. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/NodeConfig.cs +59 -0
  96. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/Request.cs +57 -0
  97. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Types/Response.cs +24 -0
  98. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/UserNodeRegistry.cs +17 -0
  99. package/dist/scaffold-repo/sdks/csharp/src/Blok.Core/Validation/SchemaValidator.cs +198 -0
  100. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Blok.Core.Tests.csproj +25 -0
  101. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Errors/BlokErrorTests.cs +458 -0
  102. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Logging/LoggerTests.cs +129 -0
  103. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Node/NodeRegistryTests.cs +145 -0
  104. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Testing/MockContextTests.cs +153 -0
  105. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/TypedNodeTests.cs +69 -0
  106. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Types/ExecutionResultTests.cs +110 -0
  107. package/dist/scaffold-repo/sdks/csharp/tests/Blok.Core.Tests/Validation/SchemaValidatorTests.cs +233 -0
  108. package/dist/scaffold-repo/sdks/go/Dockerfile +33 -0
  109. package/dist/scaffold-repo/sdks/go/README.md +255 -0
  110. package/dist/scaffold-repo/sdks/go/blok_error.go +803 -0
  111. package/dist/scaffold-repo/sdks/go/blok_error_test.go +433 -0
  112. package/dist/scaffold-repo/sdks/go/cmd/server/main.go +45 -0
  113. package/dist/scaffold-repo/sdks/go/cmd/server/register_user_nodes.go +12 -0
  114. package/dist/scaffold-repo/sdks/go/config.go +157 -0
  115. package/dist/scaffold-repo/sdks/go/config_test.go +129 -0
  116. package/dist/scaffold-repo/sdks/go/define_node.go +87 -0
  117. package/dist/scaffold-repo/sdks/go/define_node_test.go +75 -0
  118. package/dist/scaffold-repo/sdks/go/errors.go +104 -0
  119. package/dist/scaffold-repo/sdks/go/errors_test.go +95 -0
  120. package/dist/scaffold-repo/sdks/go/examples/nodes/apicall.go +117 -0
  121. package/dist/scaffold-repo/sdks/go/examples/nodes/blokerrordemo.go +80 -0
  122. package/dist/scaffold-repo/sdks/go/examples/nodes/chaintest.go +63 -0
  123. package/dist/scaffold-repo/sdks/go/examples/nodes/helloworld.go +41 -0
  124. package/dist/scaffold-repo/sdks/go/examples/nodes/transformdata.go +176 -0
  125. package/dist/scaffold-repo/sdks/go/examples/nodes/typedgreet.go +34 -0
  126. package/dist/scaffold-repo/sdks/go/genpb/blok/runtime/v1/runtime.pb.go +2070 -0
  127. package/dist/scaffold-repo/sdks/go/genpb/blok/runtime/v1/runtime_grpc.pb.go +273 -0
  128. package/dist/scaffold-repo/sdks/go/go.mod +25 -0
  129. package/dist/scaffold-repo/sdks/go/go.sum +66 -0
  130. package/dist/scaffold-repo/sdks/go/grpc_server.go +670 -0
  131. package/dist/scaffold-repo/sdks/go/grpc_server_test.go +474 -0
  132. package/dist/scaffold-repo/sdks/go/logging.go +144 -0
  133. package/dist/scaffold-repo/sdks/go/logging_test.go +139 -0
  134. package/dist/scaffold-repo/sdks/go/middleware.go +152 -0
  135. package/dist/scaffold-repo/sdks/go/middleware_test.go +222 -0
  136. package/dist/scaffold-repo/sdks/go/node.go +50 -0
  137. package/dist/scaffold-repo/sdks/go/proto/blok/runtime/v1/runtime.proto +302 -0
  138. package/dist/scaffold-repo/sdks/go/registry.go +156 -0
  139. package/dist/scaffold-repo/sdks/go/registry_test.go +195 -0
  140. package/dist/scaffold-repo/sdks/go/server.go +207 -0
  141. package/dist/scaffold-repo/sdks/go/server_test.go +186 -0
  142. package/dist/scaffold-repo/sdks/go/shutdown.go +32 -0
  143. package/dist/scaffold-repo/sdks/go/testutil.go +169 -0
  144. package/dist/scaffold-repo/sdks/go/testutil_test.go +124 -0
  145. package/dist/scaffold-repo/sdks/go/types.go +295 -0
  146. package/dist/scaffold-repo/sdks/go/types_test.go +251 -0
  147. package/dist/scaffold-repo/sdks/go/validation.go +210 -0
  148. package/dist/scaffold-repo/sdks/go/validation_test.go +262 -0
  149. package/dist/scaffold-repo/sdks/go/worker.go +577 -0
  150. package/dist/scaffold-repo/sdks/java/Dockerfile +33 -0
  151. package/dist/scaffold-repo/sdks/java/README.md +221 -0
  152. package/dist/scaffold-repo/sdks/java/pom.xml +163 -0
  153. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/Main.java +90 -0
  154. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/UserNodeRegistry.java +19 -0
  155. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/config/ServerConfig.java +244 -0
  156. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BlokError.java +576 -0
  157. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BlokErrorCategory.java +68 -0
  158. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BlokErrorSeverity.java +31 -0
  159. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/BuildContextSnapshot.java +132 -0
  160. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/ErrorCategory.java +22 -0
  161. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/errors/NodeException.java +176 -0
  162. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/logging/LogEntry.java +78 -0
  163. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/logging/LogLevel.java +48 -0
  164. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/logging/Logger.java +160 -0
  165. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/LoggingMiddleware.java +65 -0
  166. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/Middleware.java +29 -0
  167. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/MiddlewareChain.java +59 -0
  168. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/middleware/RecoveryMiddleware.java +53 -0
  169. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/NodeHandler.java +40 -0
  170. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/NodeReflector.java +18 -0
  171. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/NodeRegistry.java +205 -0
  172. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/node/TypedNode.java +143 -0
  173. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/ApiCallNode.java +145 -0
  174. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/BlokErrorDemoNode.java +109 -0
  175. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/ChainTestNode.java +65 -0
  176. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/HelloWorldNode.java +62 -0
  177. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/TransformDataNode.java +121 -0
  178. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/nodes/TypedGreetNode.java +41 -0
  179. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/server/BlokGrpcServer.java +103 -0
  180. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/server/BlokNodeRuntimeService.java +501 -0
  181. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/server/RuntimeServer.java +176 -0
  182. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/testing/MockContext.java +120 -0
  183. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/testing/TestRunner.java +59 -0
  184. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/Context.java +167 -0
  185. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/ExecutionMetrics.java +80 -0
  186. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/ExecutionRequest.java +61 -0
  187. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/ExecutionResult.java +188 -0
  188. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/HealthStatus.java +77 -0
  189. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/NodeConfig.java +139 -0
  190. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/Request.java +154 -0
  191. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/types/Response.java +77 -0
  192. package/dist/scaffold-repo/sdks/java/src/main/java/com/blok/blok/validation/SchemaValidator.java +178 -0
  193. package/dist/scaffold-repo/sdks/java/src/main/proto/blok/runtime/v1/runtime.proto +302 -0
  194. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/errors/BlokErrorTest.java +416 -0
  195. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/logging/LoggerTest.java +176 -0
  196. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/node/NodeRegistryTest.java +227 -0
  197. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/node/TypedNodeTest.java +76 -0
  198. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/server/RuntimeServerTest.java +197 -0
  199. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/types/ExecutionResultTest.java +194 -0
  200. package/dist/scaffold-repo/sdks/java/src/test/java/com/blok/blok/validation/SchemaValidatorTest.java +246 -0
  201. package/dist/scaffold-repo/sdks/php/.rr.yaml +29 -0
  202. package/dist/scaffold-repo/sdks/php/Dockerfile +61 -0
  203. package/dist/scaffold-repo/sdks/php/README.md +387 -0
  204. package/dist/scaffold-repo/sdks/php/composer.json +41 -0
  205. package/dist/scaffold-repo/sdks/php/examples/ApiCallNode.php +103 -0
  206. package/dist/scaffold-repo/sdks/php/examples/BlokErrorDemoNode.php +90 -0
  207. package/dist/scaffold-repo/sdks/php/examples/ChainTestNode.php +56 -0
  208. package/dist/scaffold-repo/sdks/php/examples/HelloWorldNode.php +39 -0
  209. package/dist/scaffold-repo/sdks/php/examples/TransformDataNode.php +94 -0
  210. package/dist/scaffold-repo/sdks/php/examples/TypedGreetNode.php +57 -0
  211. package/dist/scaffold-repo/sdks/php/phpunit.xml +23 -0
  212. package/dist/scaffold-repo/sdks/php/proto/blok/runtime/v1/runtime.proto +302 -0
  213. package/dist/scaffold-repo/sdks/php/src/Config/ServerConfig.php +83 -0
  214. package/dist/scaffold-repo/sdks/php/src/Errors/BlokError.php +467 -0
  215. package/dist/scaffold-repo/sdks/php/src/Errors/BlokErrorBuilder.php +121 -0
  216. package/dist/scaffold-repo/sdks/php/src/Errors/BlokErrorCategory.php +83 -0
  217. package/dist/scaffold-repo/sdks/php/src/Errors/BlokErrorSeverity.php +30 -0
  218. package/dist/scaffold-repo/sdks/php/src/Errors/BuildContextSnapshot.php +141 -0
  219. package/dist/scaffold-repo/sdks/php/src/Errors/ErrorCategory.php +17 -0
  220. package/dist/scaffold-repo/sdks/php/src/Errors/NodeException.php +107 -0
  221. package/dist/scaffold-repo/sdks/php/src/Errors/Origin.php +35 -0
  222. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ErrorCategory.php +118 -0
  223. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ErrorSeverity.php +72 -0
  224. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteEvent.php +181 -0
  225. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteOptions.php +159 -0
  226. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteRequest.php +328 -0
  227. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ExecuteResponse.php +288 -0
  228. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/HealthRequest.php +59 -0
  229. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/HealthResponse/Status.php +54 -0
  230. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/HealthResponse.php +113 -0
  231. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ListNodesRequest.php +32 -0
  232. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/ListNodesResponse.php +154 -0
  233. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/LogLine.php +156 -0
  234. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/Metrics.php +165 -0
  235. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeDescriptor.php +174 -0
  236. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeError.php +627 -0
  237. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeRef.php +134 -0
  238. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeRuntimeClient.php +101 -0
  239. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/NodeStarted.php +68 -0
  240. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/PartialResult.php +59 -0
  241. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/Progress.php +85 -0
  242. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/RuntimeState.php +142 -0
  243. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/StepInfo.php +168 -0
  244. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/TriggerInfo.php +289 -0
  245. package/dist/scaffold-repo/sdks/php/src/Genpb/Blok/Runtime/V1/WorkflowInfo.php +176 -0
  246. package/dist/scaffold-repo/sdks/php/src/Genpb/GPBMetadata/Blok/Runtime/V1/Runtime.php +26 -0
  247. package/dist/scaffold-repo/sdks/php/src/Logging/LogEntry.php +47 -0
  248. package/dist/scaffold-repo/sdks/php/src/Logging/LogLevel.php +50 -0
  249. package/dist/scaffold-repo/sdks/php/src/Logging/Logger.php +133 -0
  250. package/dist/scaffold-repo/sdks/php/src/Node/NodeHandler.php +35 -0
  251. package/dist/scaffold-repo/sdks/php/src/Node/NodeReflector.php +21 -0
  252. package/dist/scaffold-repo/sdks/php/src/Node/NodeRegistry.php +172 -0
  253. package/dist/scaffold-repo/sdks/php/src/Node/TypedNode.php +159 -0
  254. package/dist/scaffold-repo/sdks/php/src/Server/BlokNodeRuntimeService.php +504 -0
  255. package/dist/scaffold-repo/sdks/php/src/Server/DecodeException.php +13 -0
  256. package/dist/scaffold-repo/sdks/php/src/Server/Middleware.php +18 -0
  257. package/dist/scaffold-repo/sdks/php/src/Server/MiddlewarePipeline.php +33 -0
  258. package/dist/scaffold-repo/sdks/php/src/Server/NodeRuntimeInterface.php +40 -0
  259. package/dist/scaffold-repo/sdks/php/src/Server/Server.php +157 -0
  260. package/dist/scaffold-repo/sdks/php/src/Testing/MockContext.php +161 -0
  261. package/dist/scaffold-repo/sdks/php/src/Testing/TestRunner.php +78 -0
  262. package/dist/scaffold-repo/sdks/php/src/Types/Context.php +80 -0
  263. package/dist/scaffold-repo/sdks/php/src/Types/ExecutionMetrics.php +48 -0
  264. package/dist/scaffold-repo/sdks/php/src/Types/ExecutionRequest.php +38 -0
  265. package/dist/scaffold-repo/sdks/php/src/Types/ExecutionResult.php +143 -0
  266. package/dist/scaffold-repo/sdks/php/src/Types/HealthStatus.php +42 -0
  267. package/dist/scaffold-repo/sdks/php/src/Types/NodeConfig.php +72 -0
  268. package/dist/scaffold-repo/sdks/php/src/Types/Request.php +82 -0
  269. package/dist/scaffold-repo/sdks/php/src/Types/Response.php +44 -0
  270. package/dist/scaffold-repo/sdks/php/src/Validation/SchemaValidator.php +197 -0
  271. package/dist/scaffold-repo/sdks/php/tests/Errors/BlokErrorTest.php +402 -0
  272. package/dist/scaffold-repo/sdks/php/tests/Logging/LoggerTest.php +165 -0
  273. package/dist/scaffold-repo/sdks/php/tests/Node/NodeRegistryTest.php +139 -0
  274. package/dist/scaffold-repo/sdks/php/tests/Node/TypedNodeTest.php +84 -0
  275. package/dist/scaffold-repo/sdks/php/tests/Server/BlokNodeRuntimeServiceTest.php +288 -0
  276. package/dist/scaffold-repo/sdks/php/tests/Testing/MockContextTest.php +184 -0
  277. package/dist/scaffold-repo/sdks/php/tests/Types/ExecutionResultTest.php +136 -0
  278. package/dist/scaffold-repo/sdks/php/tests/Validation/SchemaValidatorTest.php +191 -0
  279. package/dist/scaffold-repo/sdks/python3/Dockerfile +62 -0
  280. package/dist/scaffold-repo/sdks/python3/blok/__init__.py +61 -0
  281. package/dist/scaffold-repo/sdks/python3/blok/config/__init__.py +3 -0
  282. package/dist/scaffold-repo/sdks/python3/blok/config/server_config.py +116 -0
  283. package/dist/scaffold-repo/sdks/python3/blok/errors/__init__.py +50 -0
  284. package/dist/scaffold-repo/sdks/python3/blok/errors/blok_error.py +555 -0
  285. package/dist/scaffold-repo/sdks/python3/blok/errors/node_error.py +64 -0
  286. package/dist/scaffold-repo/sdks/python3/blok/logging/__init__.py +3 -0
  287. package/dist/scaffold-repo/sdks/python3/blok/logging/logger.py +82 -0
  288. package/dist/scaffold-repo/sdks/python3/blok/middleware/__init__.py +4 -0
  289. package/dist/scaffold-repo/sdks/python3/blok/middleware/logging_middleware.py +35 -0
  290. package/dist/scaffold-repo/sdks/python3/blok/middleware/recovery_middleware.py +36 -0
  291. package/dist/scaffold-repo/sdks/python3/blok/node/__init__.py +4 -0
  292. package/dist/scaffold-repo/sdks/python3/blok/node/define_node.py +239 -0
  293. package/dist/scaffold-repo/sdks/python3/blok/node/node_handler.py +35 -0
  294. package/dist/scaffold-repo/sdks/python3/blok/node/node_registry.py +136 -0
  295. package/dist/scaffold-repo/sdks/python3/blok/runtime/__init__.py +0 -0
  296. package/dist/scaffold-repo/sdks/python3/blok/runtime/v1/__init__.py +0 -0
  297. package/dist/scaffold-repo/sdks/python3/blok/runtime/v1/runtime_pb2.py +112 -0
  298. package/dist/scaffold-repo/sdks/python3/blok/runtime/v1/runtime_pb2_grpc.py +259 -0
  299. package/dist/scaffold-repo/sdks/python3/blok/server/__init__.py +3 -0
  300. package/dist/scaffold-repo/sdks/python3/blok/server/grpc_server.py +757 -0
  301. package/dist/scaffold-repo/sdks/python3/blok/server/runtime_server.py +165 -0
  302. package/dist/scaffold-repo/sdks/python3/blok/types/__init__.py +13 -0
  303. package/dist/scaffold-repo/sdks/python3/blok/types/context.py +162 -0
  304. package/dist/scaffold-repo/sdks/python3/blok/types/execution_request.py +74 -0
  305. package/dist/scaffold-repo/sdks/python3/blok/types/execution_result.py +103 -0
  306. package/dist/scaffold-repo/sdks/python3/blok/worker/__init__.py +10 -0
  307. package/dist/scaffold-repo/sdks/python3/blok/worker/job_message.py +34 -0
  308. package/dist/scaffold-repo/sdks/python3/blok/worker/worker.py +451 -0
  309. package/dist/scaffold-repo/sdks/python3/blok/worker/worker_config.py +129 -0
  310. package/dist/scaffold-repo/sdks/python3/examples/__init__.py +32 -0
  311. package/dist/scaffold-repo/sdks/python3/examples/api_call_node.py +85 -0
  312. package/dist/scaffold-repo/sdks/python3/examples/blok_error_demo_node.py +79 -0
  313. package/dist/scaffold-repo/sdks/python3/examples/chain_test_node.py +51 -0
  314. package/dist/scaffold-repo/sdks/python3/examples/hello_world_node.py +44 -0
  315. package/dist/scaffold-repo/sdks/python3/examples/transform_data_node.py +71 -0
  316. package/dist/scaffold-repo/sdks/python3/examples/typed_greet_node.py +25 -0
  317. package/dist/scaffold-repo/sdks/python3/proto/blok/runtime/v1/runtime.proto +302 -0
  318. package/dist/scaffold-repo/sdks/python3/pyproject.toml +47 -0
  319. package/dist/scaffold-repo/sdks/python3/requirements.txt +17 -0
  320. package/dist/scaffold-repo/sdks/python3/tests/__init__.py +0 -0
  321. package/dist/scaffold-repo/sdks/python3/tests/test_blok_error.py +341 -0
  322. package/dist/scaffold-repo/sdks/python3/tests/test_define_node.py +135 -0
  323. package/dist/scaffold-repo/sdks/python3/tests/test_discovery.py +99 -0
  324. package/dist/scaffold-repo/sdks/python3/tests/test_grpc_codec.py +260 -0
  325. package/dist/scaffold-repo/sdks/python3/tests/test_grpc_server.py +398 -0
  326. package/dist/scaffold-repo/sdks/ruby/Dockerfile +37 -0
  327. package/dist/scaffold-repo/sdks/ruby/Gemfile +5 -0
  328. package/dist/scaffold-repo/sdks/ruby/README.md +210 -0
  329. package/dist/scaffold-repo/sdks/ruby/Rakefile +11 -0
  330. package/dist/scaffold-repo/sdks/ruby/blok.gemspec +43 -0
  331. package/dist/scaffold-repo/sdks/ruby/config.ru +15 -0
  332. package/dist/scaffold-repo/sdks/ruby/examples/api_call_node.rb +99 -0
  333. package/dist/scaffold-repo/sdks/ruby/examples/blok_error_demo_node.rb +79 -0
  334. package/dist/scaffold-repo/sdks/ruby/examples/chain_test_node.rb +51 -0
  335. package/dist/scaffold-repo/sdks/ruby/examples/hello_world_node.rb +40 -0
  336. package/dist/scaffold-repo/sdks/ruby/examples/transform_data_node.rb +82 -0
  337. package/dist/scaffold-repo/sdks/ruby/examples/typed_greet_node.rb +25 -0
  338. package/dist/scaffold-repo/sdks/ruby/lib/blok/config/server_config.rb +76 -0
  339. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/blok_error.rb +476 -0
  340. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/build_context_snapshot.rb +99 -0
  341. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/error_category.rb +16 -0
  342. package/dist/scaffold-repo/sdks/ruby/lib/blok/errors/node_error.rb +84 -0
  343. package/dist/scaffold-repo/sdks/ruby/lib/blok/logging/log_entry.rb +46 -0
  344. package/dist/scaffold-repo/sdks/ruby/lib/blok/logging/log_level.rb +49 -0
  345. package/dist/scaffold-repo/sdks/ruby/lib/blok/logging/logger.rb +71 -0
  346. package/dist/scaffold-repo/sdks/ruby/lib/blok/middleware/logging_middleware.rb +45 -0
  347. package/dist/scaffold-repo/sdks/ruby/lib/blok/middleware/middleware.rb +36 -0
  348. package/dist/scaffold-repo/sdks/ruby/lib/blok/middleware/recovery_middleware.rb +31 -0
  349. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/discovery.rb +59 -0
  350. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/node_handler.rb +43 -0
  351. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/node_registry.rb +107 -0
  352. package/dist/scaffold-repo/sdks/ruby/lib/blok/node/typed_node.rb +180 -0
  353. package/dist/scaffold-repo/sdks/ruby/lib/blok/runtime/v1/runtime_pb.rb +43 -0
  354. package/dist/scaffold-repo/sdks/ruby/lib/blok/runtime/v1/runtime_services_pb.rb +55 -0
  355. package/dist/scaffold-repo/sdks/ruby/lib/blok/server/grpc_server.rb +435 -0
  356. package/dist/scaffold-repo/sdks/ruby/lib/blok/server/runtime_app.rb +86 -0
  357. package/dist/scaffold-repo/sdks/ruby/lib/blok/testing/mock_context.rb +109 -0
  358. package/dist/scaffold-repo/sdks/ruby/lib/blok/testing/test_runner.rb +40 -0
  359. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/context.rb +82 -0
  360. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/execution_metrics.rb +43 -0
  361. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/execution_request.rb +39 -0
  362. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/execution_result.rb +117 -0
  363. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/health_status.rb +42 -0
  364. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/node_config.rb +73 -0
  365. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/request.rb +71 -0
  366. package/dist/scaffold-repo/sdks/ruby/lib/blok/types/response.rb +46 -0
  367. package/dist/scaffold-repo/sdks/ruby/lib/blok/validation/schema_validator.rb +142 -0
  368. package/dist/scaffold-repo/sdks/ruby/lib/blok/version.rb +5 -0
  369. package/dist/scaffold-repo/sdks/ruby/lib/blok.rb +53 -0
  370. package/dist/scaffold-repo/sdks/ruby/proto/blok/runtime/v1/runtime.proto +302 -0
  371. package/dist/scaffold-repo/sdks/ruby/test/errors/blok_error_test.rb +339 -0
  372. package/dist/scaffold-repo/sdks/ruby/test/logging/logger_test.rb +155 -0
  373. package/dist/scaffold-repo/sdks/ruby/test/node/node_registry_test.rb +132 -0
  374. package/dist/scaffold-repo/sdks/ruby/test/node/typed_node_test.rb +67 -0
  375. package/dist/scaffold-repo/sdks/ruby/test/test_helper.rb +6 -0
  376. package/dist/scaffold-repo/sdks/ruby/test/testing/mock_context_test.rb +150 -0
  377. package/dist/scaffold-repo/sdks/ruby/test/types/execution_result_test.rb +129 -0
  378. package/dist/scaffold-repo/sdks/ruby/test/validation/schema_validator_test.rb +270 -0
  379. package/dist/scaffold-repo/sdks/rust/Cargo.lock +3044 -0
  380. package/dist/scaffold-repo/sdks/rust/Cargo.toml +82 -0
  381. package/dist/scaffold-repo/sdks/rust/Dockerfile +40 -0
  382. package/dist/scaffold-repo/sdks/rust/README.md +73 -0
  383. package/dist/scaffold-repo/sdks/rust/build.rs +32 -0
  384. package/dist/scaffold-repo/sdks/rust/proto/blok/runtime/v1/runtime.proto +302 -0
  385. package/dist/scaffold-repo/sdks/rust/src/blok_error.rs +1168 -0
  386. package/dist/scaffold-repo/sdks/rust/src/config.rs +158 -0
  387. package/dist/scaffold-repo/sdks/rust/src/errors.rs +142 -0
  388. package/dist/scaffold-repo/sdks/rust/src/grpc_server.rs +635 -0
  389. package/dist/scaffold-repo/sdks/rust/src/lib.rs +65 -0
  390. package/dist/scaffold-repo/sdks/rust/src/logging.rs +195 -0
  391. package/dist/scaffold-repo/sdks/rust/src/main.rs +79 -0
  392. package/dist/scaffold-repo/sdks/rust/src/middleware.rs +181 -0
  393. package/dist/scaffold-repo/sdks/rust/src/node.rs +172 -0
  394. package/dist/scaffold-repo/sdks/rust/src/nodes/api_call.rs +93 -0
  395. package/dist/scaffold-repo/sdks/rust/src/nodes/blok_error_demo.rs +151 -0
  396. package/dist/scaffold-repo/sdks/rust/src/nodes/chain_test.rs +57 -0
  397. package/dist/scaffold-repo/sdks/rust/src/nodes/hello_world.rs +83 -0
  398. package/dist/scaffold-repo/sdks/rust/src/nodes/mod.rs +18 -0
  399. package/dist/scaffold-repo/sdks/rust/src/nodes/transform_data.rs +142 -0
  400. package/dist/scaffold-repo/sdks/rust/src/nodes/typed_greet.rs +56 -0
  401. package/dist/scaffold-repo/sdks/rust/src/registry.rs +204 -0
  402. package/dist/scaffold-repo/sdks/rust/src/server.rs +63 -0
  403. package/dist/scaffold-repo/sdks/rust/src/testing.rs +175 -0
  404. package/dist/scaffold-repo/sdks/rust/src/types.rs +338 -0
  405. package/dist/scaffold-repo/sdks/rust/src/user_nodes/mod.rs +10 -0
  406. package/dist/scaffold-repo/sdks/rust/src/validation.rs +232 -0
  407. package/dist/scaffold-repo/sdks/rust/src/worker.rs +509 -0
  408. package/dist/scaffold-repo/sdks/rust/tests/grpc_integration.rs +306 -0
  409. package/dist/scaffold-repo/sdks/rust/tests/typed_node.rs +104 -0
  410. package/dist/scaffold-repo/triggers/cron/CHANGELOG.md +22 -0
  411. package/dist/scaffold-repo/triggers/cron/package.json +36 -0
  412. package/dist/scaffold-repo/triggers/cron/src/CronTrigger.ts +552 -0
  413. package/dist/scaffold-repo/triggers/cron/src/index.ts +77 -0
  414. package/dist/scaffold-repo/triggers/cron/tsconfig.json +32 -0
  415. package/dist/scaffold-repo/triggers/grpc/.env.example +8 -0
  416. package/dist/scaffold-repo/triggers/grpc/CHANGELOG.md +143 -0
  417. package/dist/scaffold-repo/triggers/grpc/README.md +25 -0
  418. package/dist/scaffold-repo/triggers/grpc/buf.gen.yaml +11 -0
  419. package/dist/scaffold-repo/triggers/grpc/buf.yaml +9 -0
  420. package/dist/scaffold-repo/triggers/grpc/localhost+2-key.pem +28 -0
  421. package/dist/scaffold-repo/triggers/grpc/localhost+2.pem +27 -0
  422. package/dist/scaffold-repo/triggers/grpc/package.json +61 -0
  423. package/dist/scaffold-repo/triggers/grpc/proto/workflow.proto +33 -0
  424. package/dist/scaffold-repo/triggers/grpc/src/GRpcTrigger.ts +297 -0
  425. package/dist/scaffold-repo/triggers/grpc/src/GrpcClient.ts +87 -0
  426. package/dist/scaffold-repo/triggers/grpc/src/GrpcServer.ts +68 -0
  427. package/dist/scaffold-repo/triggers/grpc/src/MessageDecode.ts +142 -0
  428. package/dist/scaffold-repo/triggers/grpc/src/NanoSDK.ts +146 -0
  429. package/dist/scaffold-repo/triggers/grpc/src/Nodes.ts +10 -0
  430. package/dist/scaffold-repo/triggers/grpc/src/Workflows.ts +5 -0
  431. package/dist/scaffold-repo/triggers/grpc/src/gen/workflow_pb.ts +142 -0
  432. package/dist/scaffold-repo/triggers/grpc/src/index.ts +22 -0
  433. package/dist/scaffold-repo/triggers/grpc/src/server.ts +8 -0
  434. package/dist/scaffold-repo/triggers/grpc/src/types/Message.ts +0 -0
  435. package/dist/scaffold-repo/triggers/grpc/src/types/RuntimeWorkflow.ts +7 -0
  436. package/dist/scaffold-repo/triggers/grpc/src/types/Workflows.ts +7 -0
  437. package/dist/scaffold-repo/triggers/grpc/tsconfig.json +34 -0
  438. package/dist/scaffold-repo/triggers/grpc/vitest.config.ts +29 -0
  439. package/dist/scaffold-repo/triggers/grpc/workflows/countries.json +27 -0
  440. package/dist/scaffold-repo/triggers/http/.blok/trace.db +0 -0
  441. package/dist/scaffold-repo/triggers/http/.blok/trace.db-shm +0 -0
  442. package/dist/scaffold-repo/triggers/http/.blok/trace.db-wal +0 -0
  443. package/dist/scaffold-repo/triggers/http/.dockerignore +23 -0
  444. package/dist/scaffold-repo/triggers/http/.env.example +8 -0
  445. package/dist/scaffold-repo/triggers/http/CHANGELOG.md +326 -0
  446. package/dist/scaffold-repo/triggers/http/Dockerfile +49 -0
  447. package/dist/scaffold-repo/triggers/http/Dockerfile.dev +34 -0
  448. package/dist/scaffold-repo/triggers/http/infra/docker-compose.yml +38 -0
  449. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Authentication.md +74 -0
  450. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Building.md +52 -0
  451. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Create_Node.md +123 -0
  452. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Create_Workflow.md +177 -0
  453. package/dist/scaffold-repo/triggers/http/notes/CLI_Commands/Deployment.md +69 -0
  454. package/dist/scaffold-repo/triggers/http/notes/Core_Concepts/Context.md +156 -0
  455. package/dist/scaffold-repo/triggers/http/notes/examples.md +104 -0
  456. package/dist/scaffold-repo/triggers/http/notes/index.md +51 -0
  457. package/dist/scaffold-repo/triggers/http/package.json +62 -0
  458. package/dist/scaffold-repo/triggers/http/public/favicon.ico +0 -0
  459. package/dist/scaffold-repo/triggers/http/public/metric/index.html +2101 -0
  460. package/dist/scaffold-repo/triggers/http/request.http +7 -0
  461. package/dist/scaffold-repo/triggers/http/src/AppRoutes.ts +64 -0
  462. package/dist/scaffold-repo/triggers/http/src/Nodes.ts +38 -0
  463. package/dist/scaffold-repo/triggers/http/src/Workflows.ts +18 -0
  464. package/dist/scaffold-repo/triggers/http/src/index.ts +86 -0
  465. package/dist/scaffold-repo/triggers/http/src/nodes/chain-init/index.ts +48 -0
  466. package/dist/scaffold-repo/triggers/http/src/nodes/chain-verify/index.ts +123 -0
  467. package/dist/scaffold-repo/triggers/http/src/nodes/eval/index.ts +69 -0
  468. package/dist/scaffold-repo/triggers/http/src/nodes/examples/README.md +14 -0
  469. package/dist/scaffold-repo/triggers/http/src/nodes/examples/chat-ui/index.html +228 -0
  470. package/dist/scaffold-repo/triggers/http/src/nodes/examples/chat-ui/index.ts +65 -0
  471. package/dist/scaffold-repo/triggers/http/src/nodes/examples/index.ts +14 -0
  472. package/dist/scaffold-repo/triggers/http/src/nodes/runtime-bridge/index.ts +84 -0
  473. package/dist/scaffold-repo/triggers/http/src/runner/HonoTraceRouterAdapter.ts +199 -0
  474. package/dist/scaffold-repo/triggers/http/src/runner/HttpTrigger.ts +2039 -0
  475. package/dist/scaffold-repo/triggers/http/src/runner/MessageDecode.ts +57 -0
  476. package/dist/scaffold-repo/triggers/http/src/runner/Util.ts +52 -0
  477. package/dist/scaffold-repo/triggers/http/src/runner/WorkflowRouter.ts +411 -0
  478. package/dist/scaffold-repo/triggers/http/src/runner/metrics/opentelemetry_metrics.ts +84 -0
  479. package/dist/scaffold-repo/triggers/http/src/runner/metrics/opentelemetry_traces.ts +30 -0
  480. package/dist/scaffold-repo/triggers/http/src/runner/nodeCatalog.ts +128 -0
  481. package/dist/scaffold-repo/triggers/http/src/runner/responseEmitter.ts +138 -0
  482. package/dist/scaffold-repo/triggers/http/src/runner/scanWorkflows.ts +201 -0
  483. package/dist/scaffold-repo/triggers/http/src/runner/types/ErrorResponse.ts +3 -0
  484. package/dist/scaffold-repo/triggers/http/src/runner/types/NodeTypes.ts +13 -0
  485. package/dist/scaffold-repo/triggers/http/src/runner/types/Nodes.ts +5 -0
  486. package/dist/scaffold-repo/triggers/http/src/runner/types/RuntimeWorkflow.ts +7 -0
  487. package/dist/scaffold-repo/triggers/http/src/runner/types/WorkflowRequest.ts +8 -0
  488. package/dist/scaffold-repo/triggers/http/src/runner/types/WorkflowResponse.ts +7 -0
  489. package/dist/scaffold-repo/triggers/http/src/runner/types/Workflows.ts +14 -0
  490. package/dist/scaffold-repo/triggers/http/src/workflows/countries-cats-helper.ts +30 -0
  491. package/dist/scaffold-repo/triggers/http/src/workflows/countries-handle-dsl.ts +25 -0
  492. package/dist/scaffold-repo/triggers/http/src/workflows/countries-helper.ts +18 -0
  493. package/dist/scaffold-repo/triggers/http/src/workflows/empty.ts +16 -0
  494. package/dist/scaffold-repo/triggers/http/src/workflows/eval/eval-retrieve.ts +23 -0
  495. package/dist/scaffold-repo/triggers/http/src/workflows/eval/eval-run.ts +39 -0
  496. package/dist/scaffold-repo/triggers/http/src/workflows/eval/foreign-auth.ts +24 -0
  497. package/dist/scaffold-repo/triggers/http/tsconfig.json +39 -0
  498. package/dist/scaffold-repo/triggers/http/vitest.config.ts +39 -0
  499. package/dist/scaffold-repo/triggers/http/workflows/json/agent-message.json +87 -0
  500. package/dist/scaffold-repo/triggers/http/workflows/json/agent-page.json +25 -0
  501. package/dist/scaffold-repo/triggers/http/workflows/json/agent-stream.json +30 -0
  502. package/dist/scaffold-repo/triggers/http/workflows/json/agent-tool-calculator.json +22 -0
  503. package/dist/scaffold-repo/triggers/http/workflows/json/agent-tool-weather.json +22 -0
  504. package/dist/scaffold-repo/triggers/http/workflows/json/chat-memory-message.json +54 -0
  505. package/dist/scaffold-repo/triggers/http/workflows/json/chat-memory-page.json +25 -0
  506. package/dist/scaffold-repo/triggers/http/workflows/json/chat-memory-stream.json +30 -0
  507. package/dist/scaffold-repo/triggers/http/workflows/json/chat-message.json +25 -0
  508. package/dist/scaffold-repo/triggers/http/workflows/json/chat-page.json +20 -0
  509. package/dist/scaffold-repo/triggers/http/workflows/json/chat-stream.json +30 -0
  510. package/dist/scaffold-repo/triggers/http/workflows/json/countries-py.json +27 -0
  511. package/dist/scaffold-repo/triggers/http/workflows/json/countries-vs-facts.json +50 -0
  512. package/dist/scaffold-repo/triggers/http/workflows/json/countries.json +27 -0
  513. package/dist/scaffold-repo/triggers/http/workflows/json/cross-runtime-chain.json +89 -0
  514. package/dist/scaffold-repo/triggers/http/workflows/json/dashboard-gen.json +34 -0
  515. package/dist/scaffold-repo/triggers/http/workflows/json/db-manager.json +34 -0
  516. package/dist/scaffold-repo/triggers/http/workflows/json/empty.json +13 -0
  517. package/dist/scaffold-repo/triggers/http/workflows/json/fanout-enqueue.json +48 -0
  518. package/dist/scaffold-repo/triggers/http/workflows/json/fanout-worker.json +41 -0
  519. package/dist/scaffold-repo/triggers/http/workflows/json/feedback.json +34 -0
  520. package/dist/scaffold-repo/triggers/http/workflows/json/films.json +27 -0
  521. package/dist/scaffold-repo/triggers/http/workflows/json/image-capture.json +34 -0
  522. package/dist/scaffold-repo/triggers/http/workflows/json/launches-by-year.json +27 -0
  523. package/dist/scaffold-repo/triggers/http/workflows/json/loadtest.json +24 -0
  524. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/admin-only.json +31 -0
  525. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/auth-check.json +59 -0
  526. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/github-webhook-verify.json +34 -0
  527. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/jwt-auth.json +46 -0
  528. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/rate-limit.json +70 -0
  529. package/dist/scaffold-repo/triggers/http/workflows/json/middleware/redis-rate-limit.json +71 -0
  530. package/dist/scaffold-repo/triggers/http/workflows/json/mongodb.json +24 -0
  531. package/dist/scaffold-repo/triggers/http/workflows/json/rentals-pdf.json +65 -0
  532. package/dist/scaffold-repo/triggers/http/workflows/json/v05-admin-delete-user.json +42 -0
  533. package/dist/scaffold-repo/triggers/http/workflows/json/v05-async-job-poller.json +45 -0
  534. package/dist/scaffold-repo/triggers/http/workflows/json/v05-csv-import.json +122 -0
  535. package/dist/scaffold-repo/triggers/http/workflows/json/v05-data-export.json +105 -0
  536. package/dist/scaffold-repo/triggers/http/workflows/json/v05-event-router.json +97 -0
  537. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-handler-issues.json +22 -0
  538. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-handler-pr.json +22 -0
  539. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-handler-push.json +22 -0
  540. package/dist/scaffold-repo/triggers/http/workflows/json/v05-github-webhook-router.json +88 -0
  541. package/dist/scaffold-repo/triggers/http/workflows/json/v05-hello-global-mw.json +22 -0
  542. package/dist/scaffold-repo/triggers/http/workflows/json/v05-hello-with-mw.json +23 -0
  543. package/dist/scaffold-repo/triggers/http/workflows/json/v05-jwt-protected.json +23 -0
  544. package/dist/scaffold-repo/triggers/http/workflows/json/v05-multi-tenant-router.json +90 -0
  545. package/dist/scaffold-repo/triggers/http/workflows/json/v05-nested-control-flow.json +207 -0
  546. package/dist/scaffold-repo/triggers/http/workflows/json/v05-order-fulfillment.json +211 -0
  547. package/dist/scaffold-repo/triggers/http/workflows/json/v05-parallel-foreach-with-wait.json +47 -0
  548. package/dist/scaffold-repo/triggers/http/workflows/json/v05-polling-with-backoff.json +55 -0
  549. package/dist/scaffold-repo/triggers/http/workflows/json/v05-protected.json +23 -0
  550. package/dist/scaffold-repo/triggers/http/workflows/json/v05-redis-protected.json +23 -0
  551. package/dist/scaffold-repo/triggers/http/workflows/json/v05-saga.json +122 -0
  552. package/dist/scaffold-repo/triggers/http/workflows/json/v05-tenant-acme.json +22 -0
  553. package/dist/scaffold-repo/triggers/http/workflows/json/v05-tenant-beta.json +22 -0
  554. package/dist/scaffold-repo/triggers/http/workflows/json/v05-tenant-gamma.json +22 -0
  555. package/dist/scaffold-repo/triggers/http/workflows/json/v05-travel-booking.json +200 -0
  556. package/dist/scaffold-repo/triggers/http/workflows/json/v05-user-signup-saga.json +186 -0
  557. package/dist/scaffold-repo/triggers/http/workflows/json/v05-webhook-fanout.json +49 -0
  558. package/dist/scaffold-repo/triggers/http/workflows/json/v06-reliability-showcase.json +80 -0
  559. package/dist/scaffold-repo/triggers/http/workflows/json/v07-sse-publish.json +24 -0
  560. package/dist/scaffold-repo/triggers/http/workflows/json/v07-sse-stream.json +26 -0
  561. package/dist/scaffold-repo/triggers/http/workflows/json/v07-ws-echo.json +38 -0
  562. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github-issues.json +22 -0
  563. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github-pr.json +22 -0
  564. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github-push.json +32 -0
  565. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-github.json +87 -0
  566. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-linear-comment.json +22 -0
  567. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-linear-issue.json +22 -0
  568. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-linear.json +74 -0
  569. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-stripe-customer-created.json +22 -0
  570. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-stripe-invoice-paid.json +32 -0
  571. package/dist/scaffold-repo/triggers/http/workflows/json/webhook-stripe.json +24 -0
  572. package/dist/scaffold-repo/triggers/http/workflows/json/workflow-docs.json +34 -0
  573. package/dist/scaffold-repo/triggers/http/workflows/toml/countries.toml +21 -0
  574. package/dist/scaffold-repo/triggers/http/workflows/xml/countries.xml +23 -0
  575. package/dist/scaffold-repo/triggers/http/workflows/yaml/countries.yaml +19 -0
  576. package/dist/scaffold-repo/triggers/mcp/README.md +131 -0
  577. package/dist/scaffold-repo/triggers/mcp/package.json +39 -0
  578. package/dist/scaffold-repo/triggers/mcp/src/McpTrigger.ts +581 -0
  579. package/dist/scaffold-repo/triggers/mcp/src/index.ts +41 -0
  580. package/dist/scaffold-repo/triggers/mcp/tsconfig.json +32 -0
  581. package/dist/scaffold-repo/triggers/pubsub/CHANGELOG.md +22 -0
  582. package/dist/scaffold-repo/triggers/pubsub/package.json +66 -0
  583. package/dist/scaffold-repo/triggers/pubsub/src/PubSubTrigger.ts +424 -0
  584. package/dist/scaffold-repo/triggers/pubsub/src/adapters/AWSSNSAdapter.ts +352 -0
  585. package/dist/scaffold-repo/triggers/pubsub/src/adapters/AzureServiceBusAdapter.ts +303 -0
  586. package/dist/scaffold-repo/triggers/pubsub/src/adapters/GCPPubSubAdapter.ts +327 -0
  587. package/dist/scaffold-repo/triggers/pubsub/src/adapters/KafkaPubSubAdapter.ts +247 -0
  588. package/dist/scaffold-repo/triggers/pubsub/src/adapters/KafkaPubSubAdapter.ts.bak +251 -0
  589. package/dist/scaffold-repo/triggers/pubsub/src/adapters/NATSPubSubAdapter.ts +333 -0
  590. package/dist/scaffold-repo/triggers/pubsub/src/adapters/RedisStreamsPubSubAdapter.ts +256 -0
  591. package/dist/scaffold-repo/triggers/pubsub/src/adapters/factory.ts +88 -0
  592. package/dist/scaffold-repo/triggers/pubsub/src/index.ts +67 -0
  593. package/dist/scaffold-repo/triggers/pubsub/template/.env.example +8 -0
  594. package/dist/scaffold-repo/triggers/pubsub/template/package.json +45 -0
  595. package/dist/scaffold-repo/triggers/pubsub/template/src/Nodes.ts +20 -0
  596. package/dist/scaffold-repo/triggers/pubsub/template/src/Workflows.ts +8 -0
  597. package/dist/scaffold-repo/triggers/pubsub/template/src/index.ts +41 -0
  598. package/dist/scaffold-repo/triggers/pubsub/template/src/runner/PubSubServer.ts +39 -0
  599. package/dist/scaffold-repo/triggers/pubsub/template/src/runner/types/Workflows.ts +7 -0
  600. package/dist/scaffold-repo/triggers/pubsub/template/src/workflows/messages/on-message.ts +42 -0
  601. package/dist/scaffold-repo/triggers/pubsub/template/src/workflows/publish-order.ts +22 -0
  602. package/dist/scaffold-repo/triggers/pubsub/template/tsconfig.json +31 -0
  603. package/dist/scaffold-repo/triggers/pubsub/template/vitest.config.ts +39 -0
  604. package/dist/scaffold-repo/triggers/pubsub/tsconfig.json +32 -0
  605. package/dist/scaffold-repo/triggers/sse/.env.example +8 -0
  606. package/dist/scaffold-repo/triggers/sse/CHANGELOG.md +12 -0
  607. package/dist/scaffold-repo/triggers/sse/Dockerfile +47 -0
  608. package/dist/scaffold-repo/triggers/sse/Dockerfile.dev +33 -0
  609. package/dist/scaffold-repo/triggers/sse/package.json +37 -0
  610. package/dist/scaffold-repo/triggers/sse/src/SSETrigger.ts +489 -0
  611. package/dist/scaffold-repo/triggers/sse/src/bus.ts +208 -0
  612. package/dist/scaffold-repo/triggers/sse/src/index.ts +38 -0
  613. package/dist/scaffold-repo/triggers/sse/src/workflows/events/README.md +129 -0
  614. package/dist/scaffold-repo/triggers/sse/src/workflows/events/publish-demo.ts +40 -0
  615. package/dist/scaffold-repo/triggers/sse/src/workflows/events/stream-demo.ts +43 -0
  616. package/dist/scaffold-repo/triggers/sse/tsconfig.json +22 -0
  617. package/dist/scaffold-repo/triggers/sse/vitest.config.ts +39 -0
  618. package/dist/scaffold-repo/triggers/webhook/CHANGELOG.md +22 -0
  619. package/dist/scaffold-repo/triggers/webhook/package.json +36 -0
  620. package/dist/scaffold-repo/triggers/webhook/src/WebhookTrigger.ts +465 -0
  621. package/dist/scaffold-repo/triggers/webhook/src/index.ts +51 -0
  622. package/dist/scaffold-repo/triggers/webhook/src/verifiers.ts +394 -0
  623. package/dist/scaffold-repo/triggers/webhook/tsconfig.json +32 -0
  624. package/dist/scaffold-repo/triggers/websocket/.env.example +8 -0
  625. package/dist/scaffold-repo/triggers/websocket/CHANGELOG.md +22 -0
  626. package/dist/scaffold-repo/triggers/websocket/package.json +50 -0
  627. package/dist/scaffold-repo/triggers/websocket/src/Backplane.ts +167 -0
  628. package/dist/scaffold-repo/triggers/websocket/src/WebSocketTrigger.ts +910 -0
  629. package/dist/scaffold-repo/triggers/websocket/src/index.ts +50 -0
  630. package/dist/scaffold-repo/triggers/websocket/src/workflows/events/README.md +93 -0
  631. package/dist/scaffold-repo/triggers/websocket/src/workflows/events/echo-demo.ts +56 -0
  632. package/dist/scaffold-repo/triggers/websocket/tsconfig.json +22 -0
  633. package/dist/scaffold-repo/triggers/websocket/vitest.config.ts +39 -0
  634. package/dist/scaffold-repo/triggers/worker/CHANGELOG.md +22 -0
  635. package/dist/scaffold-repo/triggers/worker/package.json +68 -0
  636. package/dist/scaffold-repo/triggers/worker/src/WorkerTrigger.ts +943 -0
  637. package/dist/scaffold-repo/triggers/worker/src/adapters/BullMQAdapter.ts +296 -0
  638. package/dist/scaffold-repo/triggers/worker/src/adapters/InMemoryAdapter.ts +280 -0
  639. package/dist/scaffold-repo/triggers/worker/src/adapters/KafkaAdapter.ts +347 -0
  640. package/dist/scaffold-repo/triggers/worker/src/adapters/NATSAdapter.ts +505 -0
  641. package/dist/scaffold-repo/triggers/worker/src/adapters/PgBossAdapter.ts +319 -0
  642. package/dist/scaffold-repo/triggers/worker/src/adapters/RabbitMQAdapter.ts +318 -0
  643. package/dist/scaffold-repo/triggers/worker/src/adapters/RedisStreamsAdapter.ts +513 -0
  644. package/dist/scaffold-repo/triggers/worker/src/adapters/SQSAdapter.ts +314 -0
  645. package/dist/scaffold-repo/triggers/worker/src/adapters/factory.ts +111 -0
  646. package/dist/scaffold-repo/triggers/worker/src/index.ts +95 -0
  647. package/dist/scaffold-repo/triggers/worker/template/.env.example +18 -0
  648. package/dist/scaffold-repo/triggers/worker/template/package.json +46 -0
  649. package/dist/scaffold-repo/triggers/worker/template/src/Nodes.ts +20 -0
  650. package/dist/scaffold-repo/triggers/worker/template/src/Workflows.ts +8 -0
  651. package/dist/scaffold-repo/triggers/worker/template/src/index.ts +41 -0
  652. package/dist/scaffold-repo/triggers/worker/template/src/runner/WorkerServer.ts +34 -0
  653. package/dist/scaffold-repo/triggers/worker/template/src/runner/types/Workflows.ts +7 -0
  654. package/dist/scaffold-repo/triggers/worker/template/src/workflows/jobs/process-job.ts +40 -0
  655. package/dist/scaffold-repo/triggers/worker/template/tsconfig.json +31 -0
  656. package/dist/scaffold-repo/triggers/worker/template/vitest.config.ts +39 -0
  657. package/dist/scaffold-repo/triggers/worker/tsconfig.json +32 -0
  658. package/dist/scaffold-repo/workflows/json/agent-message.json +87 -0
  659. package/dist/scaffold-repo/workflows/json/agent-page.json +25 -0
  660. package/dist/scaffold-repo/workflows/json/agent-stream.json +30 -0
  661. package/dist/scaffold-repo/workflows/json/agent-tool-calculator.json +22 -0
  662. package/dist/scaffold-repo/workflows/json/agent-tool-weather.json +22 -0
  663. package/dist/scaffold-repo/workflows/json/chat-memory-message.json +54 -0
  664. package/dist/scaffold-repo/workflows/json/chat-memory-page.json +25 -0
  665. package/dist/scaffold-repo/workflows/json/chat-memory-stream.json +30 -0
  666. package/dist/scaffold-repo/workflows/json/chat-message.json +25 -0
  667. package/dist/scaffold-repo/workflows/json/chat-page.json +20 -0
  668. package/dist/scaffold-repo/workflows/json/chat-stream.json +30 -0
  669. package/dist/scaffold-repo/workflows/json/countries-vs-facts.json +50 -0
  670. package/dist/scaffold-repo/workflows/json/countries.json +27 -0
  671. package/dist/scaffold-repo/workflows/json/cron-heartbeat.json +15 -0
  672. package/dist/scaffold-repo/workflows/json/fanout-enqueue.json +48 -0
  673. package/dist/scaffold-repo/workflows/json/fanout-worker.json +41 -0
  674. package/dist/scaffold-repo/workflows/json/pubsub-on-order.json +24 -0
  675. package/dist/scaffold-repo/workflows/json/webhook-github-issues.json +22 -0
  676. package/dist/scaffold-repo/workflows/json/webhook-github-pr.json +22 -0
  677. package/dist/scaffold-repo/workflows/json/webhook-github-push.json +32 -0
  678. package/dist/scaffold-repo/workflows/json/webhook-github.json +87 -0
  679. package/dist/scaffold-repo/workflows/json/webhook-linear-comment.json +22 -0
  680. package/dist/scaffold-repo/workflows/json/webhook-linear-issue.json +22 -0
  681. package/dist/scaffold-repo/workflows/json/webhook-linear.json +74 -0
  682. package/dist/scaffold-repo/workflows/json/webhook-stripe-customer-created.json +22 -0
  683. package/dist/scaffold-repo/workflows/json/webhook-stripe-invoice-paid.json +32 -0
  684. package/dist/scaffold-repo/workflows/json/webhook-stripe.json +24 -0
  685. package/package.json +4 -4
@@ -0,0 +1,120 @@
1
+ package com.blok.blok.testing;
2
+
3
+ import com.blok.blok.types.Context;
4
+ import com.blok.blok.types.Request;
5
+ import com.blok.blok.types.Response;
6
+
7
+ import java.util.HashMap;
8
+ import java.util.Map;
9
+
10
+ /**
11
+ * Fluent builder for creating test {@link Context} instances with sensible defaults.
12
+ * <p>
13
+ * Example:
14
+ * <pre>{@code
15
+ * Context ctx = new MockContext()
16
+ * .withId("test-123")
17
+ * .withWorkflow("my-workflow", "/workflows/test")
18
+ * .withBody(Map.of("name", "World"))
19
+ * .withVar("key", "value")
20
+ * .build();
21
+ * }</pre>
22
+ */
23
+ public class MockContext {
24
+
25
+ private String id = "test-execution-id";
26
+ private String workflowName = "test-workflow";
27
+ private String workflowPath = "/workflows/test";
28
+ private Object body = new HashMap<String, Object>();
29
+ private Map<String, String> headers = new HashMap<>();
30
+ private Map<String, String> params = new HashMap<>();
31
+ private Map<String, String> query = new HashMap<>();
32
+ private String method = "POST";
33
+ private String url = "/test";
34
+ private Map<String, String> cookies = new HashMap<>();
35
+ private String baseUrl = "http://localhost:8080";
36
+ private Map<String, Object> vars = new HashMap<>();
37
+ private Map<String, String> env = new HashMap<>();
38
+
39
+ public MockContext() {
40
+ }
41
+
42
+ /**
43
+ * Sets the execution ID.
44
+ */
45
+ public MockContext withId(String id) {
46
+ this.id = id;
47
+ return this;
48
+ }
49
+
50
+ /**
51
+ * Sets the workflow name and path.
52
+ */
53
+ public MockContext withWorkflow(String name, String path) {
54
+ this.workflowName = name;
55
+ this.workflowPath = path;
56
+ return this;
57
+ }
58
+
59
+ /**
60
+ * Sets the request body.
61
+ */
62
+ public MockContext withBody(Object body) {
63
+ this.body = body;
64
+ return this;
65
+ }
66
+
67
+ /**
68
+ * Sets the request headers.
69
+ */
70
+ public MockContext withHeaders(Map<String, String> headers) {
71
+ this.headers = headers != null ? new HashMap<>(headers) : new HashMap<>();
72
+ return this;
73
+ }
74
+
75
+ /**
76
+ * Sets a single context variable.
77
+ */
78
+ public MockContext withVar(String key, Object value) {
79
+ this.vars.put(key, value);
80
+ return this;
81
+ }
82
+
83
+ /**
84
+ * Sets a single environment variable.
85
+ */
86
+ public MockContext withEnv(String key, String value) {
87
+ this.env.put(key, value);
88
+ return this;
89
+ }
90
+
91
+ /**
92
+ * Builds and returns the Context.
93
+ */
94
+ public Context build() {
95
+ Context ctx = new Context();
96
+ ctx.setId(id);
97
+ ctx.setWorkflowName(workflowName);
98
+ ctx.setWorkflowPath(workflowPath);
99
+
100
+ Request request = new Request();
101
+ request.setBody(body);
102
+ request.setHeaders(new HashMap<>(headers));
103
+ request.setParams(new HashMap<>(params));
104
+ request.setQuery(new HashMap<>(query));
105
+ request.setMethod(method);
106
+ request.setUrl(url);
107
+ request.setCookies(new HashMap<>(cookies));
108
+ request.setBaseUrl(baseUrl);
109
+ ctx.setRequest(request);
110
+
111
+ Response response = new Response();
112
+ response.setSuccess(true);
113
+ ctx.setResponse(response);
114
+
115
+ ctx.setVars(new HashMap<>(vars));
116
+ ctx.setEnv(new HashMap<>(env));
117
+
118
+ return ctx;
119
+ }
120
+ }
@@ -0,0 +1,59 @@
1
+ package com.blok.blok.testing;
2
+
3
+ import com.blok.blok.node.NodeHandler;
4
+ import com.blok.blok.node.NodeRegistry;
5
+ import com.blok.blok.types.*;
6
+
7
+ import java.util.Map;
8
+
9
+ /**
10
+ * Test runner for executing nodes in-process without starting an HTTP server.
11
+ * <p>
12
+ * Example:
13
+ * <pre>{@code
14
+ * TestRunner runner = new TestRunner();
15
+ * runner.register("hello", new HelloWorldNode());
16
+ *
17
+ * Context ctx = new MockContext().withBody(Map.of("name", "World")).build();
18
+ * ExecutionResult result = runner.execute("hello", ctx, Map.of("prefix", "Hi"));
19
+ *
20
+ * assert result.isSuccess();
21
+ * }</pre>
22
+ */
23
+ public class TestRunner {
24
+
25
+ private final NodeRegistry registry;
26
+
27
+ public TestRunner() {
28
+ this.registry = new NodeRegistry();
29
+ }
30
+
31
+ /**
32
+ * Registers a node handler for testing.
33
+ *
34
+ * @param name the node name
35
+ * @param handler the node handler
36
+ * @return this runner for fluent use
37
+ */
38
+ public TestRunner register(String name, NodeHandler handler) {
39
+ registry.register(name, handler);
40
+ return this;
41
+ }
42
+
43
+ /**
44
+ * Executes a node by name with the given context and config.
45
+ *
46
+ * @param name the node name
47
+ * @param ctx the execution context
48
+ * @param config the node config map
49
+ * @return the execution result
50
+ */
51
+ public ExecutionResult execute(String name, Context ctx, Map<String, Object> config) {
52
+ NodeConfig nodeConfig = new NodeConfig();
53
+ nodeConfig.setName(name);
54
+ nodeConfig.setConfig(config);
55
+
56
+ ExecutionRequest request = new ExecutionRequest(nodeConfig, ctx);
57
+ return registry.execute(request);
58
+ }
59
+ }
@@ -0,0 +1,167 @@
1
+ package com.blok.blok.types;
2
+
3
+ import com.google.gson.annotations.SerializedName;
4
+
5
+ import java.util.HashMap;
6
+ import java.util.Map;
7
+ import java.util.Objects;
8
+
9
+ /**
10
+ * Represents the workflow execution context passed between nodes.
11
+ * Contains request data, response state, variables, and environment configuration.
12
+ */
13
+ public class Context {
14
+
15
+ private String id;
16
+
17
+ @SerializedName("workflow_name")
18
+ private String workflowName;
19
+
20
+ @SerializedName("workflow_path")
21
+ private String workflowPath;
22
+
23
+ private Request request;
24
+ private Response response;
25
+ private Map<String, Object> vars;
26
+ private Map<String, String> env;
27
+
28
+ public Context() {
29
+ this.request = new Request();
30
+ this.response = new Response();
31
+ this.vars = new HashMap<>();
32
+ this.env = new HashMap<>();
33
+ }
34
+
35
+ /**
36
+ * Stores a variable in the context for downstream nodes.
37
+ *
38
+ * @param key the variable name
39
+ * @param value the variable value
40
+ */
41
+ public void setVar(String key, Object value) {
42
+ if (key == null) {
43
+ throw new IllegalArgumentException("key must not be null");
44
+ }
45
+ if (vars == null) {
46
+ vars = new HashMap<>();
47
+ }
48
+ vars.put(key, value);
49
+ }
50
+
51
+ /**
52
+ * Retrieves a variable from the context.
53
+ *
54
+ * @param key the variable name
55
+ * @return the value, or null if not present
56
+ */
57
+ public Object getVar(String key) {
58
+ if (key == null || vars == null) {
59
+ return null;
60
+ }
61
+ return vars.get(key);
62
+ }
63
+
64
+ /**
65
+ * Retrieves a string variable from the context.
66
+ *
67
+ * @param key the variable name
68
+ * @return the string value, or empty string if not present or not a string
69
+ */
70
+ public String getVarString(String key) {
71
+ Object value = getVar(key);
72
+ if (value instanceof String) {
73
+ return (String) value;
74
+ }
75
+ return "";
76
+ }
77
+
78
+ // Getters and setters
79
+
80
+ public String getId() {
81
+ return id;
82
+ }
83
+
84
+ public void setId(String id) {
85
+ this.id = id;
86
+ }
87
+
88
+ public String getWorkflowName() {
89
+ return workflowName;
90
+ }
91
+
92
+ public void setWorkflowName(String workflowName) {
93
+ this.workflowName = workflowName;
94
+ }
95
+
96
+ public String getWorkflowPath() {
97
+ return workflowPath;
98
+ }
99
+
100
+ public void setWorkflowPath(String workflowPath) {
101
+ this.workflowPath = workflowPath;
102
+ }
103
+
104
+ public Request getRequest() {
105
+ return request;
106
+ }
107
+
108
+ public void setRequest(Request request) {
109
+ this.request = request != null ? request : new Request();
110
+ }
111
+
112
+ public Response getResponse() {
113
+ return response;
114
+ }
115
+
116
+ public void setResponse(Response response) {
117
+ this.response = response != null ? response : new Response();
118
+ }
119
+
120
+ public Map<String, Object> getVars() {
121
+ return vars;
122
+ }
123
+
124
+ public void setVars(Map<String, Object> vars) {
125
+ this.vars = vars != null ? vars : new HashMap<>();
126
+ }
127
+
128
+ public Map<String, String> getEnv() {
129
+ return env;
130
+ }
131
+
132
+ public void setEnv(Map<String, String> env) {
133
+ this.env = env != null ? env : new HashMap<>();
134
+ }
135
+
136
+ @Override
137
+ public boolean equals(Object o) {
138
+ if (this == o) return true;
139
+ if (o == null || getClass() != o.getClass()) return false;
140
+ Context context = (Context) o;
141
+ return Objects.equals(id, context.id) &&
142
+ Objects.equals(workflowName, context.workflowName) &&
143
+ Objects.equals(workflowPath, context.workflowPath) &&
144
+ Objects.equals(request, context.request) &&
145
+ Objects.equals(response, context.response) &&
146
+ Objects.equals(vars, context.vars) &&
147
+ Objects.equals(env, context.env);
148
+ }
149
+
150
+ @Override
151
+ public int hashCode() {
152
+ return Objects.hash(id, workflowName, workflowPath, request, response, vars, env);
153
+ }
154
+
155
+ @Override
156
+ public String toString() {
157
+ return "Context{" +
158
+ "id='" + id + '\'' +
159
+ ", workflowName='" + workflowName + '\'' +
160
+ ", workflowPath='" + workflowPath + '\'' +
161
+ ", request=" + request +
162
+ ", response=" + response +
163
+ ", vars=" + vars +
164
+ ", env=" + env +
165
+ '}';
166
+ }
167
+ }
@@ -0,0 +1,80 @@
1
+ package com.blok.blok.types;
2
+
3
+ import com.google.gson.annotations.SerializedName;
4
+
5
+ import java.util.Objects;
6
+
7
+ /**
8
+ * Captures performance metrics for a node execution.
9
+ * Null fields are omitted during JSON serialization.
10
+ */
11
+ public class ExecutionMetrics {
12
+
13
+ @SerializedName("duration_ms")
14
+ private Double durationMs;
15
+
16
+ @SerializedName("cpu_ms")
17
+ private Double cpuMs;
18
+
19
+ @SerializedName("memory_bytes")
20
+ private Long memoryBytes;
21
+
22
+ public ExecutionMetrics() {
23
+ }
24
+
25
+ public ExecutionMetrics(Double durationMs, Double cpuMs, Long memoryBytes) {
26
+ this.durationMs = durationMs;
27
+ this.cpuMs = cpuMs;
28
+ this.memoryBytes = memoryBytes;
29
+ }
30
+
31
+ // Getters and setters
32
+
33
+ public Double getDurationMs() {
34
+ return durationMs;
35
+ }
36
+
37
+ public void setDurationMs(Double durationMs) {
38
+ this.durationMs = durationMs;
39
+ }
40
+
41
+ public Double getCpuMs() {
42
+ return cpuMs;
43
+ }
44
+
45
+ public void setCpuMs(Double cpuMs) {
46
+ this.cpuMs = cpuMs;
47
+ }
48
+
49
+ public Long getMemoryBytes() {
50
+ return memoryBytes;
51
+ }
52
+
53
+ public void setMemoryBytes(Long memoryBytes) {
54
+ this.memoryBytes = memoryBytes;
55
+ }
56
+
57
+ @Override
58
+ public boolean equals(Object o) {
59
+ if (this == o) return true;
60
+ if (o == null || getClass() != o.getClass()) return false;
61
+ ExecutionMetrics that = (ExecutionMetrics) o;
62
+ return Objects.equals(durationMs, that.durationMs) &&
63
+ Objects.equals(cpuMs, that.cpuMs) &&
64
+ Objects.equals(memoryBytes, that.memoryBytes);
65
+ }
66
+
67
+ @Override
68
+ public int hashCode() {
69
+ return Objects.hash(durationMs, cpuMs, memoryBytes);
70
+ }
71
+
72
+ @Override
73
+ public String toString() {
74
+ return "ExecutionMetrics{" +
75
+ "durationMs=" + durationMs +
76
+ ", cpuMs=" + cpuMs +
77
+ ", memoryBytes=" + memoryBytes +
78
+ '}';
79
+ }
80
+ }
@@ -0,0 +1,61 @@
1
+ package com.blok.blok.types;
2
+
3
+ import java.util.Objects;
4
+
5
+ /**
6
+ * Represents the execution request received from the Blok runner.
7
+ * Contains the node configuration and the workflow execution context.
8
+ */
9
+ public class ExecutionRequest {
10
+
11
+ private NodeConfig node;
12
+ private Context context;
13
+
14
+ public ExecutionRequest() {
15
+ }
16
+
17
+ public ExecutionRequest(NodeConfig node, Context context) {
18
+ this.node = node;
19
+ this.context = context;
20
+ }
21
+
22
+ // Getters and setters
23
+
24
+ public NodeConfig getNode() {
25
+ return node;
26
+ }
27
+
28
+ public void setNode(NodeConfig node) {
29
+ this.node = node;
30
+ }
31
+
32
+ public Context getContext() {
33
+ return context;
34
+ }
35
+
36
+ public void setContext(Context context) {
37
+ this.context = context;
38
+ }
39
+
40
+ @Override
41
+ public boolean equals(Object o) {
42
+ if (this == o) return true;
43
+ if (o == null || getClass() != o.getClass()) return false;
44
+ ExecutionRequest that = (ExecutionRequest) o;
45
+ return Objects.equals(node, that.node) &&
46
+ Objects.equals(context, that.context);
47
+ }
48
+
49
+ @Override
50
+ public int hashCode() {
51
+ return Objects.hash(node, context);
52
+ }
53
+
54
+ @Override
55
+ public String toString() {
56
+ return "ExecutionRequest{" +
57
+ "node=" + node +
58
+ ", context=" + context +
59
+ '}';
60
+ }
61
+ }
@@ -0,0 +1,188 @@
1
+ package com.blok.blok.types;
2
+
3
+ import java.util.HashMap;
4
+ import java.util.List;
5
+ import java.util.Map;
6
+ import java.util.Objects;
7
+
8
+ /**
9
+ * Represents the execution result returned to the Blok runner.
10
+ * <p>
11
+ * The {@code logs} and {@code metrics} fields are omitted from JSON when null
12
+ * (handled by Gson's null exclusion strategy configured in the server).
13
+ */
14
+ public class ExecutionResult {
15
+
16
+ private boolean success;
17
+ private Object data;
18
+ private Object errors;
19
+ private List<String> logs;
20
+ private ExecutionMetrics metrics;
21
+ private Map<String, Object> vars;
22
+
23
+ public ExecutionResult() {
24
+ }
25
+
26
+ private ExecutionResult(boolean success, Object data, Object errors) {
27
+ this.success = success;
28
+ this.data = data;
29
+ this.errors = errors;
30
+ }
31
+
32
+ /**
33
+ * Creates a successful execution result with the given data.
34
+ *
35
+ * @param data the result data
36
+ * @return a success result
37
+ */
38
+ public static ExecutionResult success(Object data) {
39
+ return new ExecutionResult(true, data, null);
40
+ }
41
+
42
+ /**
43
+ * Creates a failed execution result with an error message.
44
+ *
45
+ * @param message the error message
46
+ * @return an error result
47
+ */
48
+ public static ExecutionResult error(String message) {
49
+ if (message == null) {
50
+ message = "unknown error";
51
+ }
52
+ Map<String, String> errorMap = new HashMap<>();
53
+ errorMap.put("message", message);
54
+ return new ExecutionResult(false, null, errorMap);
55
+ }
56
+
57
+ /**
58
+ * Creates a failed execution result with an error message and additional details.
59
+ *
60
+ * @param message the error message
61
+ * @param details additional error details
62
+ * @return an error result with details
63
+ */
64
+ public static ExecutionResult errorWithDetails(String message, Map<String, Object> details) {
65
+ if (message == null) {
66
+ message = "unknown error";
67
+ }
68
+ Map<String, Object> errorMap = new HashMap<>();
69
+ errorMap.put("message", message);
70
+ if (details != null) {
71
+ errorMap.put("details", details);
72
+ }
73
+ return new ExecutionResult(false, null, errorMap);
74
+ }
75
+
76
+ /**
77
+ * Fluent setter to attach log lines to this result.
78
+ *
79
+ * @param logs the log lines
80
+ * @return this result
81
+ */
82
+ public ExecutionResult withLogs(List<String> logs) {
83
+ this.logs = logs;
84
+ return this;
85
+ }
86
+
87
+ /**
88
+ * Fluent setter to attach execution metrics to this result.
89
+ *
90
+ * @param metrics the execution metrics
91
+ * @return this result
92
+ */
93
+ public ExecutionResult withMetrics(ExecutionMetrics metrics) {
94
+ this.metrics = metrics;
95
+ return this;
96
+ }
97
+
98
+ // Getters and setters
99
+
100
+ public boolean isSuccess() {
101
+ return success;
102
+ }
103
+
104
+ public void setSuccess(boolean success) {
105
+ this.success = success;
106
+ }
107
+
108
+ public Object getData() {
109
+ return data;
110
+ }
111
+
112
+ public void setData(Object data) {
113
+ this.data = data;
114
+ }
115
+
116
+ public Object getErrors() {
117
+ return errors;
118
+ }
119
+
120
+ public void setErrors(Object errors) {
121
+ this.errors = errors;
122
+ }
123
+
124
+ public List<String> getLogs() {
125
+ return logs;
126
+ }
127
+
128
+ public void setLogs(List<String> logs) {
129
+ this.logs = logs;
130
+ }
131
+
132
+ public ExecutionMetrics getMetrics() {
133
+ return metrics;
134
+ }
135
+
136
+ public void setMetrics(ExecutionMetrics metrics) {
137
+ this.metrics = metrics;
138
+ }
139
+
140
+ public Map<String, Object> getVars() {
141
+ return vars;
142
+ }
143
+
144
+ public void setVars(Map<String, Object> vars) {
145
+ this.vars = vars;
146
+ }
147
+
148
+ /**
149
+ * Fluent setter to attach context variables to this result.
150
+ *
151
+ * @param vars the context variables
152
+ * @return this result
153
+ */
154
+ public ExecutionResult withVars(Map<String, Object> vars) {
155
+ this.vars = vars;
156
+ return this;
157
+ }
158
+
159
+ @Override
160
+ public boolean equals(Object o) {
161
+ if (this == o) return true;
162
+ if (o == null || getClass() != o.getClass()) return false;
163
+ ExecutionResult that = (ExecutionResult) o;
164
+ return success == that.success &&
165
+ Objects.equals(data, that.data) &&
166
+ Objects.equals(errors, that.errors) &&
167
+ Objects.equals(logs, that.logs) &&
168
+ Objects.equals(metrics, that.metrics) &&
169
+ Objects.equals(vars, that.vars);
170
+ }
171
+
172
+ @Override
173
+ public int hashCode() {
174
+ return Objects.hash(success, data, errors, logs, metrics, vars);
175
+ }
176
+
177
+ @Override
178
+ public String toString() {
179
+ return "ExecutionResult{" +
180
+ "success=" + success +
181
+ ", data=" + data +
182
+ ", errors=" + errors +
183
+ ", logs=" + logs +
184
+ ", metrics=" + metrics +
185
+ ", vars=" + vars +
186
+ '}';
187
+ }
188
+ }