@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,18 @@
1
+ export type CoreVariable<T = unknown> = {
2
+ name: string;
3
+ displayName: string;
4
+ description?: string;
5
+ variableId: string;
6
+ schema: T;
7
+ };
8
+ export type VariableDefinitionMeta = {
9
+ name: string;
10
+ displayName: string;
11
+ description?: string;
12
+ variableId: string;
13
+ schema?: Record<string, unknown> | string;
14
+ sourceFile?: string;
15
+ };
16
+ export type VariableDefinitionsMeta = Record<string, VariableDefinitionMeta>;
17
+ export type VariableDefinitions = VariableDefinitionMeta[];
18
+ export declare const wireVariable: <T>(_config: CoreVariable<T>) => void;
@@ -0,0 +1 @@
1
+ export const wireVariable = (_config) => { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * DSL (Domain Specific Language) workflow exports
3
+ */
4
+ export { addWorkflow } from './workflow-runner.js';
5
+ export type { WorkflowStepOptions, WorkflowWireDoRPC, WorkflowWireDoInline, WorkflowWireSleep, WorkflowWireSuspend, InputSource, OutputBinding, RpcStepMeta, SimpleCondition, Condition, BranchStepMeta, ParallelGroupStepMeta, FanoutStepMeta, ReturnStepMeta, InlineStepMeta, SleepStepMeta, CancelStepMeta, SwitchCaseMeta, SwitchStepMeta, FilterStepMeta, ArrayPredicateStepMeta, WorkflowStepMeta, WorkflowStepWire, PikkuWorkflowWire, } from './workflow-dsl.types.js';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * DSL (Domain Specific Language) workflow exports
3
+ */
4
+ export { addWorkflow } from './workflow-runner.js';
@@ -0,0 +1,292 @@
1
+ /**
2
+ * DSL (Domain Specific Language) workflow types
3
+ * These types define the step-based workflow format extracted by the inspector
4
+ */
5
+ import type { WorkflowRun } from '../workflow.types.js';
6
+ /**
7
+ * Workflow step options
8
+ */
9
+ export interface WorkflowStepOptions {
10
+ /** Display name for logs/UI (optional, doesn't affect execution) */
11
+ description?: string;
12
+ /** Number of retry attempts for failed steps (only applies to local execution) */
13
+ retries?: number;
14
+ /** Delay between retry attempts (e.g., '1s', '2s', '2min') */
15
+ retryDelay?: string | number;
16
+ }
17
+ /**
18
+ * Type signature for workflow.do() RPC form - used by inspector
19
+ */
20
+ export type WorkflowWireDoRPC = <TOutput = any, TInput = any>(stepName: string, rpcName: string, data: TInput, options?: WorkflowStepOptions) => Promise<TOutput>;
21
+ /**
22
+ * Type signature for workflow.do() inline form - used by inspector
23
+ */
24
+ export type WorkflowWireDoInline = <T>(stepName: string, fn: () => Promise<T> | T, options?: WorkflowStepOptions) => Promise<T>;
25
+ /**
26
+ * Type signature for workflow.sleep() - used by inspector
27
+ */
28
+ export type WorkflowWireSleep = (stepName: string, duration: string) => Promise<void>;
29
+ /**
30
+ * Type signature for workflow.suspend() - used by inspector
31
+ */
32
+ export type WorkflowWireSuspend = (reason: string) => Promise<void>;
33
+ /**
34
+ * Input source for step arguments in DSL workflows
35
+ */
36
+ export type InputSource = {
37
+ from: 'input';
38
+ path: string;
39
+ } | {
40
+ from: 'outputVar';
41
+ name: string;
42
+ path?: string;
43
+ } | {
44
+ from: 'item';
45
+ path: string;
46
+ } | {
47
+ from: 'literal';
48
+ value: unknown;
49
+ } | {
50
+ from: 'template';
51
+ parts: string[];
52
+ expressions: InputSource[];
53
+ };
54
+ /**
55
+ * Output binding for return statements in DSL workflows
56
+ */
57
+ export type OutputBinding = {
58
+ from: 'outputVar';
59
+ name: string;
60
+ path?: string;
61
+ } | {
62
+ from: 'stateVar';
63
+ name: string;
64
+ path?: string;
65
+ } | {
66
+ from: 'input';
67
+ path: string;
68
+ } | {
69
+ from: 'literal';
70
+ value: unknown;
71
+ } | {
72
+ from: 'expression';
73
+ expression: string;
74
+ };
75
+ /**
76
+ * RPC step metadata (base form)
77
+ */
78
+ export interface RpcStepMeta {
79
+ /** RPC form - generates queue worker */
80
+ type: 'rpc';
81
+ /** Cache key (stepName from workflow.do) */
82
+ stepName: string;
83
+ /** RPC to invoke */
84
+ rpcName: string;
85
+ /** Output variable name (if assigned) */
86
+ outputVar?: string;
87
+ /** Input source mappings, or 'passthrough' when entire data is passed */
88
+ inputs?: Record<string, InputSource> | 'passthrough';
89
+ /** Step options */
90
+ options?: WorkflowStepOptions;
91
+ }
92
+ /**
93
+ * Simple condition expression (leaf node)
94
+ */
95
+ export interface SimpleCondition {
96
+ type: 'simple';
97
+ expression: string;
98
+ }
99
+ /**
100
+ * Nested condition structure supporting AND/OR operations
101
+ */
102
+ export type Condition = SimpleCondition | {
103
+ type: 'and';
104
+ conditions: Condition[];
105
+ } | {
106
+ type: 'or';
107
+ conditions: Condition[];
108
+ };
109
+ /**
110
+ * A single branch in an if/else-if chain
111
+ */
112
+ export interface BranchCase {
113
+ /** Condition for this branch */
114
+ condition: Condition;
115
+ /** Steps to execute when condition is true */
116
+ steps: WorkflowStepMeta[];
117
+ }
118
+ /**
119
+ * Branch step metadata (if/else-if/else control flow)
120
+ */
121
+ export interface BranchStepMeta {
122
+ type: 'branch';
123
+ /** Branches in order: first is "if", rest are "else if" */
124
+ branches: BranchCase[];
125
+ /** Else branch steps (when no conditions match) */
126
+ elseSteps?: WorkflowStepMeta[];
127
+ }
128
+ /**
129
+ * Parallel group step metadata (Promise.all with multiple steps)
130
+ */
131
+ export interface ParallelGroupStepMeta {
132
+ type: 'parallel';
133
+ /** Child steps to execute in parallel */
134
+ children: RpcStepMeta[];
135
+ }
136
+ /**
137
+ * Fanout step metadata (parallel or sequential iteration)
138
+ */
139
+ export interface FanoutStepMeta {
140
+ type: 'fanout';
141
+ /** Step name for this fanout */
142
+ stepName: string;
143
+ /** Source array variable name */
144
+ sourceVar: string;
145
+ /** Iterator variable name */
146
+ itemVar: string;
147
+ /** Execution mode */
148
+ mode: 'parallel' | 'sequential';
149
+ /** Child step to execute per iteration */
150
+ child: RpcStepMeta;
151
+ /** Time between iterations (sequential mode only) */
152
+ timeBetween?: string;
153
+ }
154
+ /**
155
+ * Return step metadata (workflow output)
156
+ */
157
+ export interface ReturnStepMeta {
158
+ type: 'return';
159
+ /** Output bindings */
160
+ outputs: Record<string, OutputBinding>;
161
+ }
162
+ /**
163
+ * Inline step metadata (legacy support)
164
+ */
165
+ export interface InlineStepMeta {
166
+ /** Inline form - local execution */
167
+ type: 'inline';
168
+ /** Cache key (stepName from workflow.do) */
169
+ stepName: string;
170
+ /** Display name */
171
+ description?: string;
172
+ /** Step options */
173
+ options?: WorkflowStepOptions;
174
+ }
175
+ /**
176
+ * Sleep step metadata
177
+ */
178
+ export interface SleepStepMeta {
179
+ /** Sleep step */
180
+ type: 'sleep';
181
+ /** Cache key (stepName from workflow.sleep) */
182
+ stepName: string;
183
+ /** Sleep duration */
184
+ duration: string | number;
185
+ }
186
+ /**
187
+ * Cancel step metadata
188
+ */
189
+ export interface CancelStepMeta {
190
+ /** Cancel step */
191
+ type: 'cancel';
192
+ /** Optional cancellation reason */
193
+ reason?: string;
194
+ }
195
+ /**
196
+ * Set step metadata (context variable assignment)
197
+ */
198
+ export interface SetStepMeta {
199
+ /** Set step */
200
+ type: 'set';
201
+ /** Variable name to set (must be in context) */
202
+ variable: string;
203
+ /** Value to assign (literal or expression) */
204
+ value: unknown;
205
+ }
206
+ /**
207
+ * Switch case metadata
208
+ */
209
+ export interface SwitchCaseMeta {
210
+ /** Case value (literal) or expression */
211
+ value?: string | number | boolean | null;
212
+ /** Case expression (for complex cases) */
213
+ expression?: string;
214
+ /** Steps to execute for this case */
215
+ steps: WorkflowStepMeta[];
216
+ }
217
+ /**
218
+ * Switch step metadata (switch/case control flow)
219
+ */
220
+ export interface SwitchStepMeta {
221
+ type: 'switch';
222
+ /** Expression being switched on */
223
+ expression: string;
224
+ /** Case branches */
225
+ cases: SwitchCaseMeta[];
226
+ /** Default case steps (optional) */
227
+ defaultSteps?: WorkflowStepMeta[];
228
+ }
229
+ /**
230
+ * Filter step metadata (array.filter)
231
+ */
232
+ export interface FilterStepMeta {
233
+ type: 'filter';
234
+ /** Source array variable name */
235
+ sourceVar: string;
236
+ /** Iterator variable name */
237
+ itemVar: string;
238
+ /** Filter condition */
239
+ condition: Condition;
240
+ /** Output variable name (if assigned) */
241
+ outputVar?: string;
242
+ }
243
+ /**
244
+ * Array predicate step metadata (array.some, array.every)
245
+ */
246
+ export interface ArrayPredicateStepMeta {
247
+ type: 'arrayPredicate';
248
+ /** Predicate mode */
249
+ mode: 'some' | 'every';
250
+ /** Source array variable name */
251
+ sourceVar: string;
252
+ /** Iterator variable name */
253
+ itemVar: string;
254
+ /** Predicate condition */
255
+ condition: Condition;
256
+ /** Output variable name (if assigned) */
257
+ outputVar?: string;
258
+ }
259
+ /**
260
+ * Workflow step metadata (extracted by inspector)
261
+ */
262
+ export type WorkflowStepMeta = RpcStepMeta | BranchStepMeta | ParallelGroupStepMeta | FanoutStepMeta | ReturnStepMeta | InlineStepMeta | SleepStepMeta | CancelStepMeta | SwitchStepMeta | FilterStepMeta | ArrayPredicateStepMeta | SetStepMeta;
263
+ /**
264
+ * Workflow step wire context for RPC functions
265
+ * Provides step-level metadata including retry attempt tracking
266
+ */
267
+ export interface WorkflowStepWire {
268
+ /** The workflow run ID */
269
+ runId: string;
270
+ /** The unique step ID */
271
+ stepId: string;
272
+ /** Current attempt number (1-indexed, increments on retry) */
273
+ attemptCount: number;
274
+ }
275
+ /**
276
+ * Workflow wire object for DSL workflows
277
+ * Provides workflow-specific capabilities to function execution
278
+ */
279
+ export interface PikkuWorkflowWire {
280
+ /** The workflow name */
281
+ name: string;
282
+ /** The current run ID */
283
+ runId: string;
284
+ /** Get the current workflow run */
285
+ getRun: () => Promise<WorkflowRun>;
286
+ /** Execute a workflow step (overloaded - RPC or inline form) */
287
+ do: WorkflowWireDoRPC & WorkflowWireDoInline;
288
+ /** Sleep for a duration */
289
+ sleep: WorkflowWireSleep;
290
+ /** Suspend workflow until explicitly resumed */
291
+ suspend: WorkflowWireSuspend;
292
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * DSL (Domain Specific Language) workflow types
3
+ * These types define the step-based workflow format extracted by the inspector
4
+ */
5
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Add a workflow to the system
3
+ * This is called by the generated workflow wirings
4
+ */
5
+ export declare const addWorkflow: (workflowName: string, workflowFunc: any) => void;
@@ -0,0 +1,23 @@
1
+ import { pikkuState } from '../../../pikku-state.js';
2
+ import { addFunction } from '../../../function/function-runner.js';
3
+ import { PikkuMissingMetaError } from '../../../errors/errors.js';
4
+ /**
5
+ * Add a workflow to the system
6
+ * This is called by the generated workflow wirings
7
+ */
8
+ export const addWorkflow = (workflowName, workflowFunc) => {
9
+ // Get workflow metadata from inspector
10
+ const meta = pikkuState(null, 'workflows', 'meta');
11
+ const workflowMeta = meta[workflowName];
12
+ if (!workflowMeta) {
13
+ throw new PikkuMissingMetaError(`Missing generated metadata for workflow '${workflowName}'`);
14
+ }
15
+ // Store workflow definition in state
16
+ const registrations = pikkuState(null, 'workflows', 'registrations');
17
+ registrations.set(workflowName, {
18
+ name: workflowName,
19
+ func: workflowFunc,
20
+ });
21
+ // Register the function with pikku
22
+ addFunction(workflowMeta.pikkuFuncId, workflowFunc);
23
+ };
@@ -0,0 +1,117 @@
1
+ import type { GraphNodeConfig, NextConfig, RefValue } from './workflow-graph.types.js';
2
+ /**
3
+ * Standard RPC handler interface (matches generated FlattenedRPCMap entries)
4
+ */
5
+ export interface RPCHandler<I = any, O = any> {
6
+ input: I;
7
+ output: O;
8
+ }
9
+ /**
10
+ * Compute output types for all nodes based on their func (RPC name)
11
+ */
12
+ export type NodeOutputMap<Nodes extends Record<string, {
13
+ func: string;
14
+ }>, RPCMap extends Record<string, RPCHandler>> = {
15
+ [K in keyof Nodes]: Nodes[K]['func'] extends keyof RPCMap ? RPCMap[Nodes[K]['func']]['output'] : unknown;
16
+ };
17
+ /**
18
+ * Node definition with RPC name reference
19
+ */
20
+ export interface GraphNodeDef<RPCMap extends Record<string, RPCHandler>, NodeIds extends string = string, NodeOutputs extends Record<string, any> = Record<string, any>> {
21
+ /** RPC function name (must be a key in RPCMap) */
22
+ func: keyof RPCMap & string;
23
+ /** Input mapping - reference outputs from other nodes with autocomplete */
24
+ input?: (ref: <N extends keyof NodeOutputs & string>(nodeId: N, path: keyof NodeOutputs[N] & string) => RefValue) => Record<string, unknown>;
25
+ /** Next node(s) to execute */
26
+ next?: NextConfig<NodeIds>;
27
+ /** Error handling - node(s) to execute on error */
28
+ onError?: NodeIds | NodeIds[];
29
+ }
30
+ /**
31
+ * Helper to create a type-safe graph definition with RPC autocomplete.
32
+ * Pass node IDs as first type parameter for type-safe next/ref/output key completion.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * // Import the typed graph from generated types
37
+ * import { pikkuWorkflowGraph } from './.pikku/workflow/pikku-workflow-types.gen.js'
38
+ *
39
+ * export const myGraph = pikkuWorkflowGraph({
40
+ * name: 'myWorkflow',
41
+ * nodes: {
42
+ * entry: 'createUserProfile', // autocompletes RPC names
43
+ * sendWelcome: 'sendEmail',
44
+ * },
45
+ * config: {
46
+ * entry: { next: 'sendWelcome' },
47
+ * sendWelcome: {
48
+ * input: (ref) => ({
49
+ * to: ref('entry', 'email'), // 'entry' and 'email' both autocomplete
50
+ * }),
51
+ * },
52
+ * },
53
+ * })
54
+ * ```
55
+ */
56
+ /**
57
+ * Type to compute output types for all nodes based on their func mapping
58
+ */
59
+ type ComputeNodeOutputs<FuncMap extends Record<string, string>, RPCMap extends Record<string, RPCHandler>> = {
60
+ [K in keyof FuncMap]: FuncMap[K] extends keyof RPCMap ? RPCMap[FuncMap[K]]['output'] : unknown;
61
+ };
62
+ /**
63
+ * Type to compute input types for all nodes based on their func mapping
64
+ */
65
+ type ComputeNodeInputs<FuncMap extends Record<string, string>, RPCMap extends Record<string, RPCHandler>> = {
66
+ [K in keyof FuncMap]: FuncMap[K] extends keyof RPCMap ? RPCMap[FuncMap[K]]['input'] : unknown;
67
+ };
68
+ /**
69
+ * Typed ref value - carries the type of the referenced field as a phantom type.
70
+ * At runtime this is just RefValue, but TypeScript tracks the type T.
71
+ */
72
+ export type TypedRef<T> = RefValue & {
73
+ __phantomType?: T;
74
+ };
75
+ /**
76
+ * Map input type fields to allow TypedRef of matching type as an alternative
77
+ */
78
+ type InputWithRefs<T> = {
79
+ [K in keyof T]: T[K] | TypedRef<T[K]>;
80
+ };
81
+ export declare function createGraph<RPCMap extends Record<string, RPCHandler>>(): <const FuncMap extends Record<string, keyof RPCMap & string>>(funcMap: FuncMap, nodesOrBuilder?: GraphNodeConfigMap<FuncMap, RPCMap> | ((nodes: FuncMap) => GraphNodeConfigMap<FuncMap, RPCMap>)) => Record<Extract<keyof FuncMap, string>, GraphNodeConfig<Extract<keyof FuncMap, string>>>;
82
+ /**
83
+ * Type helper for node configuration map
84
+ */
85
+ type GraphNodeConfigMap<FuncMap extends Record<string, string>, RPCMap extends Record<string, RPCHandler>> = {
86
+ [K in Extract<keyof FuncMap, string>]?: {
87
+ next?: NextConfig<Extract<keyof FuncMap, string>>;
88
+ input?: (ref: <N extends Extract<keyof FuncMap, string>, P extends keyof ComputeNodeOutputs<FuncMap, RPCMap>[N] & string>(nodeId: N, path: P) => TypedRef<ComputeNodeOutputs<FuncMap, RPCMap>[N][P]>) => InputWithRefs<ComputeNodeInputs<FuncMap, RPCMap>[K]>;
89
+ onError?: Extract<keyof FuncMap, string> | Extract<keyof FuncMap, string>[];
90
+ };
91
+ };
92
+ /**
93
+ * Untyped graph for use without RPC map.
94
+ * Pass node IDs as type parameter for type-safe next/ref, or omit for untyped usage.
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * // Typed usage - next and ref are type-checked
99
+ * graph<'entry' | 'sendWelcome'>({
100
+ * entry: { func: 'createUserProfile', next: 'sendWelcome' },
101
+ * sendWelcome: { func: 'sendEmail', input: (ref) => ({ to: ref('entry', 'email') }) },
102
+ * })
103
+ *
104
+ * // Untyped usage - no type checking on next/ref
105
+ * graph({
106
+ * entry: { func: 'createUserProfile', next: 'sendWelcome' },
107
+ * sendWelcome: { func: 'sendEmail' },
108
+ * })
109
+ * ```
110
+ */
111
+ export declare function graph<NodeIds extends string = string>(nodes: Record<NodeIds, {
112
+ func: string;
113
+ next?: NextConfig<NodeIds>;
114
+ input?: (ref: (nodeId: NodeIds, path: string) => RefValue) => Record<string, unknown>;
115
+ onError?: NodeIds | NodeIds[];
116
+ }>): Record<NodeIds, GraphNodeConfig<NodeIds>>;
117
+ export {};
@@ -0,0 +1,58 @@
1
+ export function createGraph() {
2
+ return (funcMap, nodesOrBuilder) => {
3
+ // If no nodes provided, return just the funcMap converted to graph nodes
4
+ if (!nodesOrBuilder) {
5
+ const result = {};
6
+ for (const [nodeId, rpcName] of Object.entries(funcMap)) {
7
+ result[nodeId] = {
8
+ func: rpcName,
9
+ };
10
+ }
11
+ return result;
12
+ }
13
+ const nodes = typeof nodesOrBuilder === 'function'
14
+ ? nodesOrBuilder(funcMap)
15
+ : nodesOrBuilder;
16
+ const result = {};
17
+ for (const [nodeId, def] of Object.entries(nodes)) {
18
+ result[nodeId] = {
19
+ func: funcMap[nodeId],
20
+ input: def?.input,
21
+ next: def?.next,
22
+ onError: def?.onError,
23
+ };
24
+ }
25
+ return result;
26
+ };
27
+ }
28
+ /**
29
+ * Untyped graph for use without RPC map.
30
+ * Pass node IDs as type parameter for type-safe next/ref, or omit for untyped usage.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Typed usage - next and ref are type-checked
35
+ * graph<'entry' | 'sendWelcome'>({
36
+ * entry: { func: 'createUserProfile', next: 'sendWelcome' },
37
+ * sendWelcome: { func: 'sendEmail', input: (ref) => ({ to: ref('entry', 'email') }) },
38
+ * })
39
+ *
40
+ * // Untyped usage - no type checking on next/ref
41
+ * graph({
42
+ * entry: { func: 'createUserProfile', next: 'sendWelcome' },
43
+ * sendWelcome: { func: 'sendEmail' },
44
+ * })
45
+ * ```
46
+ */
47
+ export function graph(nodes) {
48
+ const result = {};
49
+ for (const [nodeId, def] of Object.entries(nodes)) {
50
+ result[nodeId] = {
51
+ func: def.func,
52
+ input: def.input,
53
+ next: def.next,
54
+ onError: def.onError,
55
+ };
56
+ }
57
+ return result;
58
+ }
@@ -0,0 +1,9 @@
1
+ import type { PikkuWorkflowService } from '../pikku-workflow-service.js';
2
+ import type { WorkflowRuntimeMeta, WorkflowRunWire } from '../workflow.types.js';
3
+ export declare function continueGraph(workflowService: PikkuWorkflowService, runId: string, graphName: string, overrideMeta?: WorkflowRuntimeMeta): Promise<void>;
4
+ export declare function executeGraphStep(workflowService: PikkuWorkflowService, rpcService: any, runId: string, stepId: string, nodeId: string, rpcName: string, data: any, graphName: string): Promise<any>;
5
+ export declare function onGraphNodeComplete(workflowService: PikkuWorkflowService, runId: string, graphName: string): Promise<void>;
6
+ export declare function runFromMeta(workflowService: PikkuWorkflowService, runId: string, meta: WorkflowRuntimeMeta, _rpcService: any): Promise<void>;
7
+ export declare function runWorkflowGraph(workflowService: PikkuWorkflowService, graphName: string, triggerInput: any, rpcService?: any, inline?: boolean, startNode?: string, wire?: WorkflowRunWire): Promise<{
8
+ runId: string;
9
+ }>;