@pikku/core 0.11.1 → 0.12.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 (363) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/crypto-utils.d.ts +2 -0
  3. package/dist/crypto-utils.js +78 -0
  4. package/dist/errors/error-handler.js +3 -3
  5. package/dist/errors/errors.d.ts +8 -0
  6. package/dist/errors/errors.js +16 -0
  7. package/dist/errors/index.d.ts +0 -1
  8. package/dist/errors/index.js +0 -1
  9. package/dist/function/function-runner.d.ts +10 -3
  10. package/dist/function/function-runner.js +136 -31
  11. package/dist/function/functions.types.d.ts +35 -12
  12. package/dist/function/functions.types.js +16 -6
  13. package/dist/function/index.d.ts +2 -2
  14. package/dist/function/index.js +1 -2
  15. package/dist/handle-error.js +1 -10
  16. package/dist/index.d.ts +30 -24
  17. package/dist/index.js +19 -27
  18. package/dist/middleware/auth-apikey.d.ts +1 -1
  19. package/dist/middleware/auth-apikey.js +3 -3
  20. package/dist/middleware/auth-bearer.d.ts +1 -1
  21. package/dist/middleware/auth-bearer.js +3 -6
  22. package/dist/middleware/auth-cookie.d.ts +1 -1
  23. package/dist/middleware/auth-cookie.js +6 -8
  24. package/dist/middleware/cors.d.ts +46 -0
  25. package/dist/middleware/cors.js +73 -0
  26. package/dist/middleware/index.d.ts +5 -3
  27. package/dist/middleware/index.js +5 -3
  28. package/dist/middleware/remote-auth.d.ts +5 -0
  29. package/dist/middleware/remote-auth.js +55 -0
  30. package/dist/middleware/timeout.d.ts +1 -1
  31. package/dist/middleware-runner.d.ts +3 -14
  32. package/dist/middleware-runner.js +14 -16
  33. package/dist/permissions.d.ts +3 -86
  34. package/dist/permissions.js +20 -80
  35. package/dist/pikku-state.d.ts +33 -104
  36. package/dist/pikku-state.js +150 -66
  37. package/dist/schema.d.ts +8 -6
  38. package/dist/schema.js +31 -18
  39. package/dist/services/ai-agent-runner-service.d.ts +24 -0
  40. package/dist/services/ai-agent-runner-service.js +1 -0
  41. package/dist/services/ai-run-state-service.d.ts +13 -0
  42. package/dist/services/ai-run-state-service.js +1 -0
  43. package/dist/services/ai-storage-service.d.ts +18 -0
  44. package/dist/services/ai-storage-service.js +1 -0
  45. package/dist/services/deployment-service.d.ts +19 -0
  46. package/dist/services/deployment-service.js +1 -0
  47. package/dist/services/gopass-secrets.d.ts +47 -0
  48. package/dist/services/gopass-secrets.js +94 -0
  49. package/dist/services/in-memory-trigger-service.d.ts +23 -0
  50. package/dist/services/in-memory-trigger-service.js +50 -0
  51. package/dist/services/in-memory-workflow-service.d.ts +59 -0
  52. package/dist/services/in-memory-workflow-service.js +287 -0
  53. package/dist/services/index.d.ts +25 -11
  54. package/dist/services/index.js +10 -13
  55. package/dist/services/local-secrets.d.ts +23 -0
  56. package/dist/services/local-secrets.js +45 -0
  57. package/dist/services/local-variables.d.ts +5 -0
  58. package/dist/services/local-variables.js +18 -0
  59. package/dist/services/scheduler-service.d.ts +21 -1
  60. package/dist/services/scheduler-service.js +14 -0
  61. package/dist/services/schema-service.d.ts +6 -0
  62. package/dist/services/scoped-secret-service.d.ts +16 -0
  63. package/dist/services/scoped-secret-service.js +35 -0
  64. package/dist/services/secret-service.d.ts +25 -4
  65. package/dist/services/trigger-service.d.ts +23 -0
  66. package/dist/services/trigger-service.js +1 -0
  67. package/dist/services/typed-secret-service.d.ts +30 -0
  68. package/dist/services/typed-secret-service.js +40 -0
  69. package/dist/services/typed-variables-service.d.ts +27 -0
  70. package/dist/services/typed-variables-service.js +46 -0
  71. package/dist/services/user-session-service.d.ts +13 -0
  72. package/dist/services/user-session-service.js +17 -0
  73. package/dist/services/variables-service.d.ts +5 -0
  74. package/dist/services/workflow-service.d.ts +43 -0
  75. package/dist/services/workflow-service.js +1 -0
  76. package/dist/types/core.types.d.ts +54 -10
  77. package/dist/types/core.types.js +7 -0
  78. package/dist/types/state.types.d.ts +127 -0
  79. package/dist/types/state.types.js +1 -0
  80. package/dist/utils.d.ts +10 -1
  81. package/dist/utils.js +60 -3
  82. package/dist/version.d.ts +6 -0
  83. package/dist/version.js +19 -0
  84. package/dist/wirings/ai-agent/ai-agent-memory.d.ts +29 -0
  85. package/dist/wirings/ai-agent/ai-agent-memory.js +199 -0
  86. package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +9 -0
  87. package/dist/wirings/ai-agent/ai-agent-model-config.js +36 -0
  88. package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +60 -0
  89. package/dist/wirings/ai-agent/ai-agent-prepare.js +312 -0
  90. package/dist/wirings/ai-agent/ai-agent-registry.d.ts +15 -0
  91. package/dist/wirings/ai-agent/ai-agent-registry.js +47 -0
  92. package/dist/wirings/ai-agent/ai-agent-runner.d.ts +3 -0
  93. package/dist/wirings/ai-agent/ai-agent-runner.js +96 -0
  94. package/dist/wirings/ai-agent/ai-agent-stream.d.ts +11 -0
  95. package/dist/wirings/ai-agent/ai-agent-stream.js +503 -0
  96. package/dist/wirings/ai-agent/ai-agent.types.d.ts +254 -0
  97. package/dist/wirings/ai-agent/ai-agent.types.js +1 -0
  98. package/dist/wirings/ai-agent/index.d.ts +5 -0
  99. package/dist/wirings/ai-agent/index.js +4 -0
  100. package/dist/wirings/channel/channel-common.d.ts +7 -4
  101. package/dist/wirings/channel/channel-common.js +15 -8
  102. package/dist/wirings/channel/channel-handler.js +13 -4
  103. package/dist/wirings/channel/channel-middleware-runner.d.ts +9 -0
  104. package/dist/wirings/channel/channel-middleware-runner.js +73 -0
  105. package/dist/wirings/channel/channel-runner.js +12 -12
  106. package/dist/wirings/channel/channel.types.d.ts +5 -1
  107. package/dist/wirings/channel/define-channel-routes.d.ts +21 -0
  108. package/dist/wirings/channel/define-channel-routes.js +23 -0
  109. package/dist/wirings/channel/index.d.ts +10 -8
  110. package/dist/wirings/channel/index.js +7 -8
  111. package/dist/wirings/channel/local/index.d.ts +3 -3
  112. package/dist/wirings/channel/local/index.js +3 -3
  113. package/dist/wirings/channel/local/local-channel-runner.js +18 -6
  114. package/dist/wirings/channel/log-channels.js +1 -1
  115. package/dist/wirings/channel/serverless/index.d.ts +1 -1
  116. package/dist/wirings/channel/serverless/index.js +1 -1
  117. package/dist/wirings/channel/serverless/serverless-channel-runner.js +17 -6
  118. package/dist/wirings/cli/channel/cli-channel-runner.js +3 -2
  119. package/dist/wirings/cli/channel/index.d.ts +1 -1
  120. package/dist/wirings/cli/channel/index.js +1 -1
  121. package/dist/wirings/cli/cli-runner.d.ts +1 -1
  122. package/dist/wirings/cli/cli-runner.js +22 -18
  123. package/dist/wirings/cli/cli.types.d.ts +7 -6
  124. package/dist/wirings/cli/define-cli-commands.d.ts +19 -0
  125. package/dist/wirings/cli/define-cli-commands.js +20 -0
  126. package/dist/wirings/cli/index.d.ts +2 -3
  127. package/dist/wirings/cli/index.js +1 -3
  128. package/dist/wirings/http/http-routes.d.ts +69 -0
  129. package/dist/wirings/http/http-routes.js +139 -0
  130. package/dist/wirings/http/http-runner.d.ts +2 -2
  131. package/dist/wirings/http/http-runner.js +62 -27
  132. package/dist/wirings/http/http.types.d.ts +77 -24
  133. package/dist/wirings/http/index.d.ts +5 -4
  134. package/dist/wirings/http/index.js +4 -3
  135. package/dist/wirings/http/log-http-routes.js +1 -1
  136. package/dist/wirings/http/routers/path-to-regex.js +2 -2
  137. package/dist/wirings/mcp/index.d.ts +4 -3
  138. package/dist/wirings/mcp/index.js +3 -3
  139. package/dist/wirings/mcp/mcp-runner.d.ts +1 -3
  140. package/dist/wirings/mcp/mcp-runner.js +42 -56
  141. package/dist/wirings/mcp/mcp.types.d.ts +3 -3
  142. package/dist/wirings/node/index.d.ts +2 -0
  143. package/dist/wirings/node/index.js +1 -0
  144. package/dist/wirings/node/node.types.d.ts +20 -0
  145. package/dist/wirings/node/node.types.js +1 -0
  146. package/dist/wirings/oauth2/index.d.ts +3 -0
  147. package/dist/wirings/oauth2/index.js +2 -0
  148. package/dist/wirings/oauth2/oauth2-client.d.ts +47 -0
  149. package/dist/wirings/oauth2/oauth2-client.js +267 -0
  150. package/dist/wirings/oauth2/oauth2.types.d.ts +65 -0
  151. package/dist/wirings/oauth2/oauth2.types.js +4 -0
  152. package/dist/wirings/oauth2/wire-oauth2-credential.d.ts +20 -0
  153. package/dist/wirings/oauth2/wire-oauth2-credential.js +21 -0
  154. package/dist/wirings/queue/index.d.ts +2 -2
  155. package/dist/wirings/queue/index.js +1 -1
  156. package/dist/wirings/queue/queue-runner.d.ts +7 -0
  157. package/dist/wirings/queue/queue-runner.js +23 -12
  158. package/dist/wirings/queue/queue.types.d.ts +8 -2
  159. package/dist/wirings/rpc/index.d.ts +1 -1
  160. package/dist/wirings/rpc/index.js +1 -1
  161. package/dist/wirings/rpc/rpc-runner.d.ts +40 -13
  162. package/dist/wirings/rpc/rpc-runner.js +191 -25
  163. package/dist/wirings/rpc/rpc-types.d.ts +15 -4
  164. package/dist/wirings/scheduler/index.d.ts +3 -3
  165. package/dist/wirings/scheduler/index.js +2 -3
  166. package/dist/wirings/scheduler/log-schedulers.js +1 -1
  167. package/dist/wirings/scheduler/scheduler-runner.d.ts +5 -0
  168. package/dist/wirings/scheduler/scheduler-runner.js +28 -10
  169. package/dist/wirings/secret/index.d.ts +3 -0
  170. package/dist/wirings/secret/index.js +2 -0
  171. package/dist/wirings/secret/secret.types.d.ts +27 -0
  172. package/dist/wirings/secret/secret.types.js +1 -0
  173. package/dist/wirings/secret/validate-secret-definitions.d.ts +6 -0
  174. package/dist/wirings/secret/validate-secret-definitions.js +55 -0
  175. package/dist/wirings/trigger/index.d.ts +3 -0
  176. package/dist/wirings/trigger/index.js +2 -0
  177. package/dist/wirings/trigger/pikku-trigger-service.d.ts +26 -0
  178. package/dist/wirings/trigger/pikku-trigger-service.js +75 -0
  179. package/dist/wirings/trigger/trigger-runner.d.ts +42 -0
  180. package/dist/wirings/trigger/trigger-runner.js +85 -0
  181. package/dist/wirings/trigger/trigger.types.d.ts +130 -0
  182. package/dist/wirings/trigger/trigger.types.js +40 -0
  183. package/dist/wirings/variable/index.d.ts +3 -0
  184. package/dist/wirings/variable/index.js +2 -0
  185. package/dist/wirings/variable/validate-variable-definitions.d.ts +6 -0
  186. package/dist/wirings/variable/validate-variable-definitions.js +45 -0
  187. package/dist/wirings/variable/variable.types.d.ts +18 -0
  188. package/dist/wirings/variable/variable.types.js +1 -0
  189. package/dist/wirings/workflow/dsl/index.d.ts +5 -0
  190. package/dist/wirings/workflow/dsl/index.js +4 -0
  191. package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +292 -0
  192. package/dist/wirings/workflow/dsl/workflow-dsl.types.js +5 -0
  193. package/dist/wirings/workflow/dsl/workflow-runner.d.ts +5 -0
  194. package/dist/wirings/workflow/dsl/workflow-runner.js +23 -0
  195. package/dist/wirings/workflow/graph/graph-node.d.ts +117 -0
  196. package/dist/wirings/workflow/graph/graph-node.js +58 -0
  197. package/dist/wirings/workflow/graph/graph-runner.d.ts +9 -0
  198. package/dist/wirings/workflow/graph/graph-runner.js +540 -0
  199. package/dist/wirings/workflow/graph/index.d.ts +4 -0
  200. package/dist/wirings/workflow/graph/index.js +3 -0
  201. package/dist/wirings/workflow/graph/template.d.ts +15 -0
  202. package/dist/wirings/workflow/graph/template.js +27 -0
  203. package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +15 -0
  204. package/dist/wirings/workflow/graph/wire-workflow-graph.js +8 -0
  205. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +82 -0
  206. package/dist/wirings/workflow/graph/workflow-graph.types.js +15 -0
  207. package/dist/wirings/workflow/index.d.ts +7 -12
  208. package/dist/wirings/workflow/index.js +8 -11
  209. package/dist/wirings/workflow/pikku-workflow-service.d.ts +114 -10
  210. package/dist/wirings/workflow/pikku-workflow-service.js +386 -115
  211. package/dist/wirings/workflow/workflow-helpers.d.ts +36 -0
  212. package/dist/wirings/workflow/workflow-helpers.js +38 -0
  213. package/dist/wirings/workflow/workflow-utils.d.ts +1 -0
  214. package/dist/wirings/workflow/workflow-utils.js +1 -0
  215. package/dist/wirings/workflow/workflow.types.d.ts +83 -214
  216. package/package.json +13 -6
  217. package/run-tests.sh +4 -1
  218. package/src/crypto-utils.ts +99 -0
  219. package/src/errors/error-handler.ts +3 -3
  220. package/src/errors/errors.ts +17 -0
  221. package/src/errors/index.ts +0 -1
  222. package/src/factory-functions.test.ts +42 -2
  223. package/src/function/function-runner.test.ts +5 -12
  224. package/src/function/function-runner.ts +195 -40
  225. package/src/function/functions.types.ts +66 -14
  226. package/src/function/index.ts +5 -2
  227. package/src/handle-error.ts +2 -10
  228. package/src/index.ts +106 -27
  229. package/src/middleware/auth-apikey.test.ts +15 -12
  230. package/src/middleware/auth-apikey.ts +3 -3
  231. package/src/middleware/auth-bearer.test.ts +17 -14
  232. package/src/middleware/auth-bearer.ts +25 -27
  233. package/src/middleware/auth-cookie.test.ts +16 -13
  234. package/src/middleware/auth-cookie.ts +6 -8
  235. package/src/middleware/cors.ts +96 -0
  236. package/src/middleware/index.ts +5 -3
  237. package/src/middleware/remote-auth.ts +68 -0
  238. package/src/middleware-runner.test.ts +122 -0
  239. package/src/middleware-runner.ts +24 -17
  240. package/src/permissions.test.ts +102 -86
  241. package/src/permissions.ts +32 -93
  242. package/src/pikku-state.ts +168 -201
  243. package/src/run-tests-script.test.ts +49 -0
  244. package/src/schema.ts +50 -18
  245. package/src/services/ai-agent-runner-service.ts +29 -0
  246. package/src/services/ai-run-state-service.ts +20 -0
  247. package/src/services/ai-storage-service.ts +39 -0
  248. package/src/services/deployment-service.ts +22 -0
  249. package/src/services/gopass-secrets.ts +95 -0
  250. package/src/services/in-memory-trigger-service.ts +68 -0
  251. package/src/services/in-memory-workflow-service.ts +395 -0
  252. package/src/services/index.ts +49 -14
  253. package/src/services/local-secrets.ts +51 -0
  254. package/src/services/local-variables.ts +22 -0
  255. package/src/services/scheduler-service.ts +29 -1
  256. package/src/services/schema-service.ts +7 -0
  257. package/src/services/scoped-secret-service.ts +41 -0
  258. package/src/services/secret-service.ts +25 -4
  259. package/src/services/trigger-service.ts +38 -0
  260. package/src/services/typed-secret-service.ts +70 -0
  261. package/src/services/typed-variables-service.ts +81 -0
  262. package/src/services/user-session-service.ts +23 -0
  263. package/src/services/variables-service.ts +5 -0
  264. package/src/services/workflow-service.ts +94 -0
  265. package/src/types/core.types.ts +82 -8
  266. package/src/types/state.types.ts +169 -0
  267. package/src/utils.ts +74 -5
  268. package/src/version.test.ts +80 -0
  269. package/src/version.ts +25 -0
  270. package/src/wirings/ai-agent/ai-agent-memory.ts +300 -0
  271. package/src/wirings/ai-agent/ai-agent-model-config.ts +43 -0
  272. package/src/wirings/ai-agent/ai-agent-prepare.ts +470 -0
  273. package/src/wirings/ai-agent/ai-agent-registry.test.ts +37 -0
  274. package/src/wirings/ai-agent/ai-agent-registry.ts +82 -0
  275. package/src/wirings/ai-agent/ai-agent-runner.test.ts +75 -0
  276. package/src/wirings/ai-agent/ai-agent-runner.ts +137 -0
  277. package/src/wirings/ai-agent/ai-agent-stream.test.ts +246 -0
  278. package/src/wirings/ai-agent/ai-agent-stream.ts +774 -0
  279. package/src/wirings/ai-agent/ai-agent.types.ts +273 -0
  280. package/src/wirings/ai-agent/index.ts +28 -0
  281. package/src/wirings/channel/channel-common.ts +32 -19
  282. package/src/wirings/channel/channel-handler.ts +18 -5
  283. package/src/wirings/channel/channel-middleware-runner.ts +119 -0
  284. package/src/wirings/channel/channel-runner.ts +14 -15
  285. package/src/wirings/channel/channel.types.ts +17 -1
  286. package/src/wirings/channel/define-channel-routes.ts +25 -0
  287. package/src/wirings/channel/index.ts +23 -8
  288. package/src/wirings/channel/local/index.ts +3 -3
  289. package/src/wirings/channel/local/local-channel-runner.test.ts +47 -2
  290. package/src/wirings/channel/local/local-channel-runner.ts +22 -6
  291. package/src/wirings/channel/log-channels.ts +1 -1
  292. package/src/wirings/channel/serverless/index.ts +5 -1
  293. package/src/wirings/channel/serverless/serverless-channel-runner.ts +22 -6
  294. package/src/wirings/cli/channel/cli-channel-runner.ts +4 -3
  295. package/src/wirings/cli/channel/index.ts +1 -1
  296. package/src/wirings/cli/cli-runner.test.ts +28 -28
  297. package/src/wirings/cli/cli-runner.ts +27 -19
  298. package/src/wirings/cli/cli.types.ts +12 -11
  299. package/src/wirings/cli/command-parser.test.ts +8 -8
  300. package/src/wirings/cli/define-cli-commands.ts +24 -0
  301. package/src/wirings/cli/index.ts +10 -4
  302. package/src/wirings/http/http-routes.test.ts +322 -0
  303. package/src/wirings/http/http-routes.ts +198 -0
  304. package/src/wirings/http/http-runner.test.ts +5 -5
  305. package/src/wirings/http/http-runner.ts +80 -29
  306. package/src/wirings/http/http.types.ts +121 -23
  307. package/src/wirings/http/index.ts +16 -4
  308. package/src/wirings/http/log-http-routes.ts +1 -1
  309. package/src/wirings/http/routers/path-to-regex.test.ts +30 -19
  310. package/src/wirings/http/routers/path-to-regex.ts +2 -2
  311. package/src/wirings/mcp/index.ts +27 -3
  312. package/src/wirings/mcp/mcp-endpoint-registry.test.ts +3 -3
  313. package/src/wirings/mcp/mcp-runner.ts +56 -67
  314. package/src/wirings/mcp/mcp.types.ts +3 -3
  315. package/src/wirings/node/index.ts +2 -0
  316. package/src/wirings/node/node.types.ts +23 -0
  317. package/src/wirings/oauth2/index.ts +3 -0
  318. package/src/wirings/oauth2/oauth2-client.test.ts +929 -0
  319. package/src/wirings/oauth2/oauth2-client.ts +335 -0
  320. package/src/wirings/oauth2/oauth2.types.ts +69 -0
  321. package/src/wirings/oauth2/wire-oauth2-credential.ts +23 -0
  322. package/src/wirings/queue/index.ts +14 -2
  323. package/src/wirings/queue/queue-runner.test.ts +115 -73
  324. package/src/wirings/queue/queue-runner.ts +39 -13
  325. package/src/wirings/queue/queue.types.ts +12 -2
  326. package/src/wirings/rpc/index.ts +1 -1
  327. package/src/wirings/rpc/rpc-runner.ts +270 -34
  328. package/src/wirings/rpc/rpc-types.ts +21 -4
  329. package/src/wirings/scheduler/index.ts +7 -4
  330. package/src/wirings/scheduler/log-schedulers.ts +1 -1
  331. package/src/wirings/scheduler/scheduler-runner.test.ts +97 -53
  332. package/src/wirings/scheduler/scheduler-runner.ts +50 -10
  333. package/src/wirings/secret/index.ts +9 -0
  334. package/src/wirings/secret/secret.types.ts +32 -0
  335. package/src/wirings/secret/validate-secret-definitions.ts +82 -0
  336. package/src/wirings/trigger/index.ts +10 -0
  337. package/src/wirings/trigger/pikku-trigger-service.ts +134 -0
  338. package/src/wirings/trigger/trigger-runner.ts +138 -0
  339. package/src/wirings/trigger/trigger.types.ts +178 -0
  340. package/src/wirings/variable/index.ts +8 -0
  341. package/src/wirings/variable/validate-variable-definitions.ts +69 -0
  342. package/src/wirings/variable/variable.types.ts +22 -0
  343. package/src/wirings/workflow/dsl/index.ts +31 -0
  344. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +320 -0
  345. package/src/wirings/workflow/dsl/workflow-runner.ts +28 -0
  346. package/src/wirings/workflow/graph/graph-node.ts +222 -0
  347. package/src/wirings/workflow/graph/graph-runner.test.ts +495 -0
  348. package/src/wirings/workflow/graph/graph-runner.ts +816 -0
  349. package/src/wirings/workflow/graph/index.ts +14 -0
  350. package/src/wirings/workflow/graph/template.ts +42 -0
  351. package/src/wirings/workflow/graph/wire-workflow-graph.ts +29 -0
  352. package/src/wirings/workflow/graph/workflow-graph.types.ts +104 -0
  353. package/src/wirings/workflow/index.ts +64 -26
  354. package/src/wirings/workflow/pikku-workflow-service.test.ts +212 -0
  355. package/src/wirings/workflow/pikku-workflow-service.ts +571 -136
  356. package/src/wirings/workflow/workflow-helpers.ts +79 -0
  357. package/src/wirings/workflow/workflow-utils.ts +0 -0
  358. package/src/wirings/workflow/workflow.types.ts +123 -279
  359. package/tsconfig.tsbuildinfo +1 -1
  360. package/dist/wirings/workflow/workflow-runner.d.ts +0 -34
  361. package/dist/wirings/workflow/workflow-runner.js +0 -65
  362. package/src/function/function-runner.ts.bak +0 -188
  363. package/src/wirings/workflow/workflow-runner.ts +0 -72
@@ -0,0 +1,79 @@
1
+ import { WorkflowRunNotFoundError } from './pikku-workflow-service.js'
2
+
3
+ export function workflow<
4
+ TWorkflowMap extends Record<string, { input: any; output: any }>,
5
+ >(
6
+ workflowName: string & keyof TWorkflowMap,
7
+ options?: { pollIntervalMs?: number }
8
+ ): { func: (services: any, data: any, wire: any) => Promise<any> } {
9
+ return {
10
+ func: async (services: any, data: any, { rpc }: any) => {
11
+ return services.workflowService.runToCompletion(
12
+ workflowName,
13
+ data,
14
+ rpc,
15
+ options
16
+ )
17
+ },
18
+ }
19
+ }
20
+
21
+ export function workflowStart<
22
+ TWorkflowMap extends Record<string, { input: any; output: any }>,
23
+ >(
24
+ workflowName: string & keyof TWorkflowMap
25
+ ): {
26
+ func: (services: any, data: any, wire: any) => Promise<{ runId: string }>
27
+ } {
28
+ return {
29
+ func: async (_services: any, data: any, { rpc }: any) => {
30
+ return rpc.startWorkflow(workflowName, data)
31
+ },
32
+ }
33
+ }
34
+
35
+ export function workflowStatus<
36
+ TWorkflowMap extends Record<string, { input: any; output: any }>,
37
+ >(
38
+ _workflowName: string & keyof TWorkflowMap
39
+ ): {
40
+ func: (
41
+ services: any,
42
+ data: { runId: string }
43
+ ) => Promise<{
44
+ id: string
45
+ status: 'running' | 'suspended' | 'completed' | 'failed' | 'cancelled'
46
+ output?: any
47
+ error?: { message?: string }
48
+ }>
49
+ } {
50
+ return {
51
+ func: async (services: any, data: { runId: string }) => {
52
+ const run = await services.workflowService.getRun(data.runId)
53
+ if (!run) {
54
+ throw new WorkflowRunNotFoundError(data.runId)
55
+ }
56
+ return {
57
+ id: run.id,
58
+ status: run.status,
59
+ output: run.output,
60
+ error: run.error ? { message: run.error.message } : undefined,
61
+ }
62
+ },
63
+ }
64
+ }
65
+
66
+ export function graphStart<
67
+ TGraphsMap extends Record<string, Record<string, any>>,
68
+ >(
69
+ graphName: string & keyof TGraphsMap,
70
+ startNode: string
71
+ ): {
72
+ func: (services: any, data: any, wire: any) => Promise<{ runId: string }>
73
+ } {
74
+ return {
75
+ func: async (_services: any, data: any, { rpc }: any) => {
76
+ return rpc.startWorkflow(graphName, data, { startNode })
77
+ },
78
+ }
79
+ }
File without changes
@@ -1,12 +1,47 @@
1
- import {
2
- SerializedError,
3
- CoreSingletonServices,
4
- CreateWireServices,
5
- CoreConfig,
6
- CommonWireMeta,
7
- } from '../../types/core.types.js'
1
+ import { SerializedError, CommonWireMeta } from '../../types/core.types.js'
8
2
  import { CorePikkuFunctionConfig } from '../../function/functions.types.js'
9
3
 
4
+ // Re-export WorkflowService from services module
5
+ export type { WorkflowService } from '../../services/workflow-service.js'
6
+
7
+ // Re-export DSL types from dsl module
8
+ export type {
9
+ WorkflowStepOptions,
10
+ WorkflowWireDoRPC,
11
+ WorkflowWireDoInline,
12
+ WorkflowWireSleep,
13
+ WorkflowWireSuspend,
14
+ InputSource,
15
+ OutputBinding,
16
+ RpcStepMeta,
17
+ SimpleCondition,
18
+ Condition,
19
+ BranchCase,
20
+ BranchStepMeta,
21
+ ParallelGroupStepMeta,
22
+ FanoutStepMeta,
23
+ ReturnStepMeta,
24
+ InlineStepMeta,
25
+ SleepStepMeta,
26
+ CancelStepMeta,
27
+ SetStepMeta,
28
+ SwitchCaseMeta,
29
+ SwitchStepMeta,
30
+ FilterStepMeta,
31
+ ArrayPredicateStepMeta,
32
+ WorkflowStepMeta,
33
+ WorkflowStepWire,
34
+ PikkuWorkflowWire,
35
+ } from './dsl/workflow-dsl.types.js'
36
+
37
+ import type { WorkflowStepMeta } from './dsl/workflow-dsl.types.js'
38
+
39
+ export interface WorkflowRunWire {
40
+ type: string
41
+ id?: string
42
+ parentRunId?: string
43
+ }
44
+
10
45
  export interface WorkflowServiceConfig {
11
46
  retries: number
12
47
  retryDelay: number
@@ -18,7 +53,12 @@ export interface WorkflowServiceConfig {
18
53
  /**
19
54
  * Workflow run status
20
55
  */
21
- export type WorkflowStatus = 'running' | 'completed' | 'failed' | 'cancelled'
56
+ export type WorkflowStatus =
57
+ | 'running'
58
+ | 'suspended'
59
+ | 'completed'
60
+ | 'failed'
61
+ | 'cancelled'
22
62
 
23
63
  /**
24
64
  * Workflow step status
@@ -29,6 +69,7 @@ export type StepStatus =
29
69
  | 'scheduled'
30
70
  | 'succeeded'
31
71
  | 'failed'
72
+ | 'suspended'
32
73
 
33
74
  /**
34
75
  * Workflow run representation
@@ -46,6 +87,12 @@ export interface WorkflowRun {
46
87
  output?: any
47
88
  /** Error (if failed) */
48
89
  error?: SerializedError
90
+ /** If true, workflow executes inline without queues */
91
+ inline?: boolean
92
+ /** Graph hash of the workflow definition at run creation time */
93
+ graphHash?: string
94
+ /** Wire origin info (how this run was started) */
95
+ wire: WorkflowRunWire
49
96
  /** Creation timestamp */
50
97
  createdAt: Date
51
98
  /** Last update timestamp */
@@ -84,6 +131,28 @@ export interface StepState {
84
131
  failedAt?: Date
85
132
  }
86
133
 
134
+ export interface WorkflowRunService {
135
+ listRuns(options?: {
136
+ workflowName?: string
137
+ status?: string
138
+ limit?: number
139
+ offset?: number
140
+ }): Promise<WorkflowRun[]>
141
+ getRun(id: string): Promise<WorkflowRun | null>
142
+ getRunSteps(
143
+ runId: string
144
+ ): Promise<
145
+ Array<StepState & { stepName: string; rpcName?: string; data?: any }>
146
+ >
147
+ getRunHistory(runId: string): Promise<Array<StepState & { stepName: string }>>
148
+ getDistinctWorkflowNames(): Promise<string[]>
149
+ getWorkflowVersion(
150
+ name: string,
151
+ graphHash: string
152
+ ): Promise<{ graph: any; source: string } | null>
153
+ deleteRun(id: string): Promise<boolean>
154
+ }
155
+
87
156
  /**
88
157
  * Core workflow definition
89
158
  */
@@ -106,215 +175,6 @@ export type CoreWorkflow<
106
175
  tags?: string[]
107
176
  }
108
177
 
109
- /**
110
- * Workflow step options
111
- */
112
- export interface WorkflowStepOptions {
113
- /** Display name for logs/UI (optional, doesn't affect execution) */
114
- description?: string
115
- /** Number of retry attempts for failed steps (only applies to local execution) */
116
- retries?: number
117
- /** Delay between retry attempts (e.g., '1s', '2s', '2min') */
118
- retryDelay?: string | number
119
- // Future: timeout, failFast, priority
120
- }
121
-
122
- /**
123
- * Type signature for workflow.do() RPC form - used by inspector
124
- */
125
- export type WorkflowWireDoRPC = <TOutput = any, TInput = any>(
126
- stepName: string,
127
- rpcName: string,
128
- data: TInput,
129
- options?: WorkflowStepOptions
130
- ) => Promise<TOutput>
131
-
132
- /**
133
- * Type signature for workflow.do() inline form - used by inspector
134
- */
135
- export type WorkflowWireDoInline = <T>(
136
- stepName: string,
137
- fn: () => Promise<T> | T,
138
- options?: WorkflowStepOptions
139
- ) => Promise<T>
140
-
141
- /**
142
- * Type signature for workflow.sleep() - used by inspector
143
- */
144
- export type WorkflowWireSleep = (
145
- stepName: string,
146
- duration: string
147
- ) => Promise<void>
148
-
149
- /**
150
- * Input source for step arguments in simple workflows
151
- */
152
- export type InputSource =
153
- | { from: 'input'; path: string }
154
- | { from: 'outputVar'; name: string; path?: string }
155
- | { from: 'item'; path: string }
156
- | { from: 'literal'; value: unknown }
157
-
158
- /**
159
- * Output binding for return statements in simple workflows
160
- */
161
- export interface OutputBinding {
162
- from: 'outputVar' | 'input'
163
- name?: string
164
- path?: string
165
- }
166
-
167
- /**
168
- * RPC step metadata (base form)
169
- */
170
- export interface RpcStepMeta {
171
- /** RPC form - generates queue worker */
172
- type: 'rpc'
173
- /** Cache key (stepName from workflow.do) */
174
- stepName: string
175
- /** RPC to invoke */
176
- rpcName: string
177
- /** Output variable name (if assigned) */
178
- outputVar?: string
179
- /** Input source mappings */
180
- inputs?: Record<string, InputSource>
181
- /** Step options */
182
- options?: WorkflowStepOptions
183
- }
184
-
185
- /**
186
- * Branch step metadata (if/else control flow)
187
- */
188
- export interface BranchStepMeta {
189
- type: 'branch'
190
- /** Condition expression (as source string) */
191
- condition: string
192
- /** Branch paths */
193
- branches: {
194
- then: WorkflowStepMeta[]
195
- else?: WorkflowStepMeta[]
196
- }
197
- }
198
-
199
- /**
200
- * Parallel group step metadata (Promise.all with multiple steps)
201
- */
202
- export interface ParallelGroupStepMeta {
203
- type: 'parallel'
204
- /** Child steps to execute in parallel */
205
- children: RpcStepMeta[]
206
- }
207
-
208
- /**
209
- * Fanout step metadata (parallel or sequential iteration)
210
- */
211
- export interface FanoutStepMeta {
212
- type: 'fanout'
213
- /** Step name for this fanout */
214
- stepName: string
215
- /** Source array variable name */
216
- sourceVar: string
217
- /** Iterator variable name */
218
- itemVar: string
219
- /** Execution mode */
220
- mode: 'parallel' | 'sequential'
221
- /** Child step to execute per iteration */
222
- child: RpcStepMeta
223
- /** Time between iterations (sequential mode only) */
224
- timeBetween?: string
225
- }
226
-
227
- /**
228
- * Return step metadata (workflow output)
229
- */
230
- export interface ReturnStepMeta {
231
- type: 'return'
232
- /** Output bindings */
233
- outputs: Record<string, OutputBinding>
234
- }
235
-
236
- /**
237
- * Inline step metadata (legacy support)
238
- */
239
- export interface InlineStepMeta {
240
- /** Inline form - local execution */
241
- type: 'inline'
242
- /** Cache key (stepName from workflow.do) */
243
- stepName: string
244
- /** Display name */
245
- description?: string
246
- /** Step options */
247
- options?: WorkflowStepOptions
248
- }
249
-
250
- /**
251
- * Sleep step metadata
252
- */
253
- export interface SleepStepMeta {
254
- /** Sleep step */
255
- type: 'sleep'
256
- /** Cache key (stepName from workflow.sleep) */
257
- stepName: string
258
- /** Sleep duration */
259
- duration: string | number
260
- }
261
-
262
- /**
263
- * Cancel step metadata
264
- */
265
- export interface CancelStepMeta {
266
- /** Cancel step */
267
- type: 'cancel'
268
- }
269
-
270
- /**
271
- * Workflow step metadata (extracted by inspector)
272
- */
273
- export type WorkflowStepMeta =
274
- | RpcStepMeta
275
- | BranchStepMeta
276
- | ParallelGroupStepMeta
277
- | FanoutStepMeta
278
- | ReturnStepMeta
279
- | InlineStepMeta
280
- | SleepStepMeta
281
- | CancelStepMeta
282
-
283
- /**
284
- * Workflow step wire context for RPC functions
285
- * Provides step-level metadata including retry attempt tracking
286
- */
287
- export interface WorkflowStepWire {
288
- /** The workflow run ID */
289
- runId: string
290
- /** The unique step ID */
291
- stepId: string
292
- /** Current attempt number (1-indexed, increments on retry) */
293
- attemptCount: number
294
- }
295
-
296
- /**
297
- * Workflow wire object for middleware
298
- * Provides workflow-specific capabilities to function execution
299
- */
300
- export interface PikkuWorkflowWire {
301
- /** The workflow name */
302
- workflowName: string
303
- /** The current run ID */
304
- runId: string
305
- /** Get the current workflow run */
306
- getRun: () => Promise<WorkflowRun>
307
-
308
- /** Execute a workflow step (overloaded - RPC or inline form) */
309
- do: WorkflowWireDoRPC & WorkflowWireDoInline
310
-
311
- /** Sleep for a duration */
312
- sleep: WorkflowWireSleep
313
-
314
- /** Cancel the current workflow run */
315
- cancel: (reason?: string) => Promise<void>
316
- }
317
-
318
178
  /**
319
179
  * Workflow client interface
320
180
  */
@@ -328,80 +188,64 @@ export interface PikkuWorkflow {
328
188
  }
329
189
 
330
190
  /**
331
- * Workflows metadata for inspector/CLI
191
+ * Context variable definition (serialized from Zod schema or type inference)
192
+ */
193
+ export interface ContextVariable {
194
+ /** Variable type */
195
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array'
196
+ /** Default value */
197
+ default?: unknown
198
+ /** Description for UI/docs */
199
+ description?: string
200
+ }
201
+
202
+ /**
203
+ * Workflow context - state variables with defaults and types
204
+ */
205
+ export type WorkflowContext = Record<string, ContextVariable>
206
+
207
+ /**
208
+ * Workflows metadata for inspector/CLI (DSL step-based format)
332
209
  */
333
210
  export type WorkflowsMeta = Record<
334
211
  string,
335
212
  CommonWireMeta & {
336
- workflowName: string
213
+ name: string
337
214
  steps: WorkflowStepMeta[]
338
- /** Whether this workflow conforms to simple workflow DSL */
339
- simple?: boolean
215
+ context?: WorkflowContext
216
+ dsl?: boolean
340
217
  }
341
218
  >
342
219
 
343
220
  /**
344
- * Interface for workflow orchestration
345
- * Handles workflow execution, replay, orchestration logic, and run-level state
221
+ * Unified workflow runtime meta (used by runtime to execute workflows)
222
+ * This is the format stored in pikkuState('workflows', 'meta')
223
+ * Both DSL and graph-based workflows are converted to this format
346
224
  */
347
- export interface WorkflowService {
348
- // Run-level state operations
349
- createRun(workflowName: string, input: any): Promise<string>
350
- getRun(id: string): Promise<WorkflowRun | null>
351
- getRunHistory(runId: string): Promise<Array<StepState & { stepName: string }>>
352
- updateRunStatus(
353
- id: string,
354
- status: WorkflowStatus,
355
- output?: any,
356
- error?: SerializedError
357
- ): Promise<void>
358
- withRunLock<T>(id: string, fn: () => Promise<T>): Promise<T>
359
- close(): Promise<void>
360
-
361
- // Orchestration operations
362
- resumeWorkflow(runId: string): Promise<void>
363
- setServices(
364
- singletonServices: CoreSingletonServices,
365
- createWireServices: CreateWireServices,
366
- config: CoreConfig
367
- ): void
368
- startWorkflow<I>(
369
- name: string,
370
- input: I,
371
- rpcService: any
372
- ): Promise<{ runId: string }>
373
- runWorkflowJob(runId: string, rpcService: any): Promise<void>
374
- orchestrateWorkflow(runId: string, rpcService: any): Promise<void>
375
- executeWorkflowSleep(runId: string, stepId: string): Promise<void>
376
-
377
- // Step-level state operations
378
- insertStepState(
379
- runId: string,
380
- stepName: string,
381
- rpcName: string,
382
- data: any,
383
- stepOptions?: { retries?: number; retryDelay?: string | number }
384
- ): Promise<StepState>
385
- getStepState(runId: string, stepName: string): Promise<StepState>
386
- setStepRunning(stepId: string): Promise<void>
387
- setStepScheduled(stepId: string): Promise<void>
388
- setStepResult(stepId: string, result: any): Promise<void>
389
- setStepError(stepId: string, error: Error): Promise<void>
390
- createRetryAttempt(
391
- stepId: string,
392
- status: 'pending' | 'running'
393
- ): Promise<StepState>
394
-
395
- // Step execution
396
- executeWorkflowStep(
397
- runId: string,
398
- stepName: string,
399
- rpcName: string | null,
400
- data: any,
401
- rpcService: any
402
- ): Promise<void>
225
+ export interface WorkflowRuntimeMeta {
226
+ /** Workflow name (used as key in registrations) */
227
+ name: string
228
+ /** Pikku function name (for execution) */
229
+ pikkuFuncId: string
230
+ /** Source type: 'dsl' (serializable), 'complex' (has inline steps), 'graph' */
231
+ source: 'dsl' | 'complex' | 'graph'
232
+ /** Optional description */
233
+ description?: string
234
+ /** Tags for organization */
235
+ tags?: string[]
236
+ /** Serialized nodes */
237
+ nodes?: Record<string, any>
238
+ /** Entry node IDs for graph workflows (computed at build time) */
239
+ entryNodeIds?: string[]
240
+ /** Hash of graph topology (nodes, edges, input mappings) */
241
+ graphHash?: string
403
242
  }
404
243
 
244
+ /**
245
+ * Unified workflow runtime metadata map
246
+ */
247
+ export type WorkflowsRuntimeMeta = Record<string, WorkflowRuntimeMeta>
248
+
405
249
  /**
406
250
  * Worker input types for generated queue workers
407
251
  */