@pikku/cli 0.11.1 → 0.11.3

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 (358) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +73 -17
  2. package/.pikku/channel/pikku-channels-map.gen.d.ts +11 -11
  3. package/.pikku/channel/pikku-channels-meta.gen.json +1 -0
  4. package/.pikku/channel/pikku-channels-meta.gen.ts +4 -2
  5. package/.pikku/channel/pikku-channels.gen.ts +1 -1
  6. package/.pikku/cli/pikku-cli-channel.ts +2 -2
  7. package/.pikku/cli/pikku-cli-client.gen.ts +1 -3
  8. package/.pikku/cli/pikku-cli-types.gen.ts +3 -3
  9. package/.pikku/cli/pikku-cli-wirings-meta.gen.json +147 -0
  10. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +4 -157
  11. package/.pikku/cli/pikku-cli-wirings.gen.ts +3 -3
  12. package/.pikku/cli/pikku-cli.gen.ts +3 -3
  13. package/.pikku/forge/pikku-forge-types.gen.ts +83 -0
  14. package/.pikku/function/pikku-function-types.gen.ts +223 -91
  15. package/.pikku/function/pikku-functions-meta-verbose.gen.json +1030 -0
  16. package/.pikku/function/pikku-functions-meta.gen.json +656 -0
  17. package/.pikku/function/pikku-functions-meta.gen.ts +4 -970
  18. package/.pikku/http/pikku-http-types.gen.ts +20 -4
  19. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +11 -11
  20. package/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
  21. package/.pikku/http/pikku-http-wirings-meta.gen.ts +4 -10
  22. package/.pikku/http/pikku-http-wirings.gen.ts +1 -1
  23. package/.pikku/mcp/pikku-mcp-types.gen.ts +72 -20
  24. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
  25. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +6 -4
  26. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +1 -1
  27. package/.pikku/pikku-bootstrap.gen.ts +7 -12
  28. package/.pikku/pikku-services.gen.ts +6 -7
  29. package/.pikku/pikku-types.gen.ts +4 -1
  30. package/.pikku/pikku-websocket.gen.ts +1 -1
  31. package/.pikku/queue/pikku-queue-types.gen.ts +2 -2
  32. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +11 -11
  33. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
  34. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -7
  35. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +1 -1
  36. package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +5 -2
  37. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +19 -14
  38. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +46 -39
  39. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +2 -2
  40. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
  41. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -2
  42. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +1 -1
  43. package/.pikku/schemas/register.gen.ts +31 -23
  44. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  45. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
  46. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  47. package/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +1 -0
  48. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
  49. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
  50. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
  51. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
  52. package/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
  53. package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
  54. package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
  55. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
  56. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
  57. package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
  58. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
  59. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  60. package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
  61. package/.pikku/services/config.gen.json +104 -0
  62. package/.pikku/services/getInspectorState.gen.json +10 -0
  63. package/.pikku/services/jwt.gen.json +13 -0
  64. package/.pikku/services/logger.gen.json +25 -0
  65. package/.pikku/services/queueService.gen.json +14 -0
  66. package/.pikku/services/schedulerService.gen.json +17 -0
  67. package/.pikku/services/schema.gen.json +14 -0
  68. package/.pikku/services/secrets.gen.json +13 -0
  69. package/.pikku/services/variables.gen.json +13 -0
  70. package/.pikku/services/workflowService.gen.json +31 -0
  71. package/.pikku/workflow/pikku-workflow-map.gen.d.ts +2 -36
  72. package/.pikku/workflow/pikku-workflow-types.gen.ts +305 -48
  73. package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +6 -2
  74. package/.pikku/workflow/pikku-workflow-wirings.gen.ts +1 -2
  75. package/CHANGELOG.md +44 -1
  76. package/bin/pikku.ts +6 -32
  77. package/build.sh +53 -31
  78. package/cli.schema.json +1 -1
  79. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +51 -10
  80. package/dist/.pikku/channel/pikku-channel-types.gen.js +3 -13
  81. package/dist/.pikku/channel/pikku-channels-meta.gen.js +3 -2
  82. package/dist/.pikku/channel/pikku-channels-meta.gen.json +1 -0
  83. package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
  84. package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
  85. package/dist/.pikku/cli/pikku-cli-channel.js +2 -2
  86. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  87. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -3
  88. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +3 -3
  89. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  90. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +3 -157
  91. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +147 -0
  92. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +2 -2
  93. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +2 -2
  94. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  95. package/dist/.pikku/cli/pikku-cli.gen.js +3 -3
  96. package/dist/.pikku/forge/pikku-forge-types.gen.d.ts +72 -0
  97. package/dist/.pikku/forge/pikku-forge-types.gen.js +55 -0
  98. package/dist/.pikku/function/pikku-function-types.gen.d.ts +141 -99
  99. package/dist/.pikku/function/pikku-function-types.gen.js +52 -62
  100. package/dist/.pikku/function/pikku-functions-meta.gen.js +3 -969
  101. package/dist/.pikku/function/pikku-functions-meta.gen.json +656 -0
  102. package/dist/.pikku/http/pikku-http-types.gen.d.ts +19 -4
  103. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  104. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +3 -10
  105. package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
  106. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
  107. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
  108. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +57 -17
  109. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +7 -31
  110. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +5 -4
  111. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
  112. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
  113. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +1 -1
  114. package/dist/.pikku/pikku-bootstrap.gen.d.ts +7 -12
  115. package/dist/.pikku/pikku-bootstrap.gen.js +7 -12
  116. package/dist/.pikku/pikku-services.gen.d.ts +5 -7
  117. package/dist/.pikku/pikku-services.gen.js +3 -5
  118. package/dist/.pikku/pikku-types.gen.d.ts +2 -1
  119. package/dist/.pikku/pikku-types.gen.js +3 -1
  120. package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
  121. package/dist/.pikku/pikku-websocket.gen.js +1 -1
  122. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +2 -2
  123. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  124. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +3 -7
  125. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
  126. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  127. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  128. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +9 -9
  129. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +5 -2
  130. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +2 -2
  131. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  132. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +3 -2
  133. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
  134. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
  135. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
  136. package/dist/.pikku/schemas/register.gen.js +19 -15
  137. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  138. package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
  139. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  140. package/dist/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +1 -0
  141. package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
  142. package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
  143. package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
  144. package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
  145. package/dist/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
  146. package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
  147. package/dist/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
  148. package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
  149. package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
  150. package/dist/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
  151. package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
  152. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  153. package/dist/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
  154. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +213 -39
  155. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +106 -16
  156. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -2
  157. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
  158. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -2
  159. package/dist/bin/pikku.js +5 -26
  160. package/dist/src/cli.wiring.js +4 -4
  161. package/dist/src/functions/commands/all.js +172 -94
  162. package/dist/src/functions/commands/bootstrap.js +21 -16
  163. package/dist/src/functions/commands/watch.js +6 -3
  164. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +12 -8
  165. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
  166. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +74 -22
  167. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.d.ts +1 -1
  168. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +72 -20
  169. package/dist/src/functions/wirings/channels/pikku-channels.js +9 -2
  170. package/dist/src/functions/wirings/channels/pikku-command-channels.js +18 -2
  171. package/dist/src/functions/wirings/channels/serialize-channel-types.js +72 -16
  172. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +1 -2
  173. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +4 -4
  174. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
  175. package/dist/src/functions/wirings/cli/pikku-command-cli.js +17 -3
  176. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +1 -1
  177. package/dist/src/functions/wirings/cli/serialize-cli-types.js +2 -2
  178. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +1 -1
  179. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +4 -4
  180. package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.d.ts +1 -0
  181. package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.js +90 -0
  182. package/dist/src/functions/wirings/forge/pikku-command-forge-types.d.ts +1 -0
  183. package/dist/src/functions/wirings/forge/pikku-command-forge-types.js +26 -0
  184. package/dist/src/functions/wirings/forge/serialize-forge-types.d.ts +4 -0
  185. package/dist/src/functions/wirings/forge/serialize-forge-types.js +90 -0
  186. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +4 -4
  187. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +7 -2
  188. package/dist/src/functions/wirings/functions/pikku-command-functions.js +35 -10
  189. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  190. package/dist/src/functions/wirings/functions/pikku-command-services.js +24 -24
  191. package/dist/src/functions/wirings/functions/pikku-function-types.js +2 -2
  192. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
  193. package/dist/src/functions/wirings/functions/schemas.js +5 -4
  194. package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +3 -1
  195. package/dist/src/functions/wirings/functions/serialize-function-imports.js +7 -3
  196. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
  197. package/dist/src/functions/wirings/functions/serialize-function-types.js +224 -91
  198. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +1 -1
  199. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +19 -21
  200. package/dist/src/functions/wirings/http/openapi-spec-generator.js +5 -5
  201. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +18 -2
  202. package/dist/src/functions/wirings/http/pikku-command-openapi.js +2 -2
  203. package/dist/src/functions/wirings/http/pikku-http-routes.js +9 -2
  204. package/dist/src/functions/wirings/http/serialize-http-types.js +19 -3
  205. package/dist/src/functions/wirings/http/serialize-typed-http-map.js +33 -8
  206. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +29 -6
  207. package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +3 -2
  208. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +71 -19
  209. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +29 -2
  210. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +5 -2
  211. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +5 -13
  212. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -0
  213. package/dist/src/functions/wirings/package/pikku-command-package.js +58 -0
  214. package/dist/src/functions/wirings/package/serialize-package.d.ts +5 -0
  215. package/dist/src/functions/wirings/package/serialize-package.js +32 -0
  216. package/dist/src/functions/wirings/queue/pikku-command-queue.js +17 -3
  217. package/dist/src/functions/wirings/queue/pikku-queue.js +9 -11
  218. package/dist/src/functions/wirings/queue/serialize-queue-map.js +20 -3
  219. package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +2 -1
  220. package/dist/src/functions/wirings/queue/serialize-queue-meta.js +10 -1
  221. package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
  222. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +4 -4
  223. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +9 -2
  224. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +11 -4
  225. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +4 -1
  226. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +3 -3
  227. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +1 -1
  228. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +54 -8
  229. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +15 -3
  230. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +2 -1
  231. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +11 -1
  232. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
  233. package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +1 -0
  234. package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +22 -0
  235. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +58 -16
  236. package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +3 -0
  237. package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +30 -32
  238. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +1 -2
  239. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +43 -8
  240. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +7 -0
  241. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +53 -0
  242. package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +4 -2
  243. package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +308 -49
  244. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.d.ts +1 -1
  245. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +16 -29
  246. package/dist/src/middleware/log-command-info-and-time.d.ts +2 -2
  247. package/dist/src/middleware/log-command-info-and-time.js +1 -4
  248. package/dist/src/services/cli-logger-forwarder.service.js +1 -1
  249. package/dist/src/services.d.ts +2 -7
  250. package/dist/src/services.js +18 -13
  251. package/dist/src/utils/check-required-types.d.ts +2 -2
  252. package/dist/src/utils/check-required-types.js +2 -3
  253. package/dist/src/utils/command-summary.d.ts +2 -0
  254. package/dist/src/utils/command-summary.js +2 -0
  255. package/dist/src/utils/custom-types-generator.js +13 -15
  256. package/dist/src/utils/generate-bootstrap-file.js +1 -1
  257. package/dist/src/utils/pikku-cli-config.js +65 -4
  258. package/dist/src/utils/pikku-files-and-methods.d.ts +2 -2
  259. package/dist/src/utils/pikku-files-and-methods.js +4 -4
  260. package/dist/src/utils/schema-generator.d.ts +4 -3
  261. package/dist/src/utils/schema-generator.js +135 -15
  262. package/dist/src/utils/strip-verbose-meta.d.ts +43 -0
  263. package/dist/src/utils/strip-verbose-meta.js +210 -0
  264. package/dist/tsconfig.tsbuildinfo +1 -1
  265. package/package.json +11 -9
  266. package/src/cli.wiring.ts +4 -4
  267. package/src/functions/commands/all.ts +203 -107
  268. package/src/functions/commands/bootstrap.ts +23 -16
  269. package/src/functions/commands/watch.ts +6 -3
  270. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +26 -6
  271. package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +75 -22
  272. package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +72 -19
  273. package/src/functions/wirings/channels/pikku-channels.ts +27 -3
  274. package/src/functions/wirings/channels/pikku-command-channels.ts +46 -3
  275. package/src/functions/wirings/channels/serialize-channel-types.ts +72 -16
  276. package/src/functions/wirings/channels/serialize-typed-channel-map.ts +3 -2
  277. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +4 -4
  278. package/src/functions/wirings/cli/pikku-command-cli-types.ts +1 -1
  279. package/src/functions/wirings/cli/pikku-command-cli.ts +45 -3
  280. package/src/functions/wirings/cli/serialize-channel-cli.ts +1 -1
  281. package/src/functions/wirings/cli/serialize-cli-types.ts +2 -2
  282. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +5 -5
  283. package/src/functions/wirings/forge/pikku-command-forge-nodes.ts +135 -0
  284. package/src/functions/wirings/forge/pikku-command-forge-types.ts +38 -0
  285. package/src/functions/wirings/forge/serialize-forge-types.ts +94 -0
  286. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +9 -8
  287. package/src/functions/wirings/functions/pikku-command-function-types.ts +17 -10
  288. package/src/functions/wirings/functions/pikku-command-functions.ts +59 -14
  289. package/src/functions/wirings/functions/pikku-command-services.ts +26 -26
  290. package/src/functions/wirings/functions/pikku-function-types.ts +3 -1
  291. package/src/functions/wirings/functions/schemas.ts +14 -4
  292. package/src/functions/wirings/functions/serialize-function-imports.ts +12 -3
  293. package/src/functions/wirings/functions/serialize-function-types.ts +227 -93
  294. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +27 -26
  295. package/src/functions/wirings/http/openapi-spec-generator.ts +15 -6
  296. package/src/functions/wirings/http/pikku-command-http-routes.ts +46 -2
  297. package/src/functions/wirings/http/pikku-command-openapi.ts +3 -2
  298. package/src/functions/wirings/http/pikku-http-routes.ts +28 -2
  299. package/src/functions/wirings/http/serialize-http-types.ts +19 -3
  300. package/src/functions/wirings/http/serialize-typed-http-map.ts +32 -8
  301. package/src/functions/wirings/mcp/pikku-command-mcp.ts +58 -10
  302. package/src/functions/wirings/mcp/serialize-mcp-json.ts +8 -6
  303. package/src/functions/wirings/mcp/serialize-mcp-types.ts +71 -19
  304. package/src/functions/wirings/middleware/pikku-command-middleware.ts +39 -2
  305. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +4 -19
  306. package/src/functions/wirings/package/pikku-command-package.ts +81 -0
  307. package/src/functions/wirings/package/serialize-package.ts +69 -0
  308. package/src/functions/wirings/permissions/pikku-command-permissions.ts +2 -2
  309. package/src/functions/wirings/queue/pikku-command-queue.ts +47 -2
  310. package/src/functions/wirings/queue/pikku-queue.ts +26 -10
  311. package/src/functions/wirings/queue/serialize-queue-map.ts +18 -3
  312. package/src/functions/wirings/queue/serialize-queue-meta.ts +15 -1
  313. package/src/functions/wirings/queue/serialize-queue-types.ts +1 -1
  314. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +7 -4
  315. package/src/functions/wirings/rpc/pikku-command-rpc.ts +25 -2
  316. package/src/functions/wirings/rpc/serialize-public-rpc.ts +11 -4
  317. package/src/functions/wirings/rpc/serialize-remote-rpc.ts +4 -1
  318. package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +3 -3
  319. package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +74 -8
  320. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +51 -4
  321. package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +20 -1
  322. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +1 -1
  323. package/src/functions/wirings/services/pikku-command-service-metadata.ts +25 -0
  324. package/src/functions/wirings/workflow/pikku-command-workflow.ts +114 -19
  325. package/src/functions/wirings/workflow/serialize-workflow-map.ts +38 -40
  326. package/src/functions/wirings/workflow/serialize-workflow-meta.ts +68 -11
  327. package/src/functions/wirings/workflow/serialize-workflow-registration.ts +83 -0
  328. package/src/functions/wirings/workflow/serialize-workflow-types.ts +311 -49
  329. package/src/functions/wirings/workflow/serialize-workflow-workers.ts +16 -29
  330. package/src/middleware/log-command-info-and-time.ts +3 -6
  331. package/src/services/cli-logger-forwarder.service.ts +1 -1
  332. package/src/services.ts +23 -16
  333. package/src/utils/check-required-types.ts +4 -7
  334. package/src/utils/command-summary.ts +4 -0
  335. package/src/utils/custom-types-generator.ts +15 -15
  336. package/src/utils/generate-bootstrap-file.ts +1 -1
  337. package/src/utils/pikku-cli-config.ts +105 -5
  338. package/src/utils/pikku-files-and-methods.ts +10 -13
  339. package/src/utils/schema-generator.ts +185 -22
  340. package/src/utils/strip-verbose-meta.ts +254 -0
  341. package/types/application-types.d.ts +1 -1
  342. package/types/config.d.ts +47 -2
  343. package/.pikku/function/pikku-functions-meta.min.gen.ts +0 -211
  344. package/.pikku/function/pikku-functions.gen.ts +0 -84
  345. package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +0 -47
  346. package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +0 -1
  347. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +0 -211
  348. package/dist/.pikku/function/pikku-functions.gen.d.ts +0 -1
  349. package/dist/.pikku/function/pikku-functions.gen.js +0 -83
  350. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +0 -1
  351. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +0 -47
  352. package/dist/.pikku/schemas/schemas/PikkuRemoteInternalRPCInput.schema.json +0 -1
  353. package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.d.ts +0 -1
  354. package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.js +0 -12
  355. package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.d.ts +0 -1
  356. package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.js +0 -11
  357. package/src/functions/wirings/workflow/pikku-command-workflow-map.ts +0 -24
  358. package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +0 -22
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "secrets",
3
+ "summary": "Interface for retrieving secrets.",
4
+ "description": "",
5
+ "package": "@pikku/core",
6
+ "path": "../core/dist/types/core.types.d.ts",
7
+ "version": "0.11.2",
8
+ "interface": "export interface SecretService {\n /**\n * Retrieves a secret by key.\n * @param key - The key of the secret to retrieve.\n * @returns A promise that resolves to the secret value.\n */\n getSecretJSON<Return = {}>(key: string): Promise<Return>;\n /**\n * Retrieves a secret by key.\n * @param key - The key of the secret to retrieve.\n * @returns A promise that resolves to the secret value.\n */\n getSecret(key: string): Promise<string>;\n}",
9
+ "expandedProperties": {
10
+ "getSecretJSON": "<Return = {}>(key: string) => Promise<Return>",
11
+ "getSecret": "(key: string) => Promise<string>"
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "variables",
3
+ "summary": "",
4
+ "description": "",
5
+ "package": "@pikku/core",
6
+ "path": "../core/dist/types/core.types.d.ts",
7
+ "version": "0.11.2",
8
+ "interface": "export interface VariablesService {\n get: (name: string) => Promise<string | undefined> | string | undefined;\n getAll: () => Promise<Record<string, string | undefined>> | Record<string, string | undefined>;\n}",
9
+ "expandedProperties": {
10
+ "get": "(name: string) => Promise<string | undefined> | string | undefined",
11
+ "getAll": "() => Promise<Record<string, string | undefined>> | Record<string, string | undefined>"
12
+ }
13
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "workflowService",
3
+ "summary": "Interface for workflow orchestration",
4
+ "description": "Handles workflow execution, replay, orchestration logic, and run-level state",
5
+ "package": "@pikku/core",
6
+ "path": "../core/dist/types/core.types.d.ts",
7
+ "version": "0.11.2",
8
+ "interface": "export interface WorkflowService {\n createRun(workflowName: string, input: any, inline?: boolean): Promise<string>;\n getRun(id: string): Promise<WorkflowRun | null>;\n getRunHistory(runId: string): Promise<Array<StepState & {\n stepName: string;\n }>>;\n updateRunStatus(id: string, status: WorkflowStatus, output?: any, error?: SerializedError): Promise<void>;\n withRunLock<T>(id: string, fn: () => Promise<T>): Promise<T>;\n close(): Promise<void>;\n resumeWorkflow(runId: string): Promise<void>;\n setServices(singletonServices: CoreSingletonServices, createWireServices: CreateWireServices, config: CoreConfig): void;\n startWorkflow<I>(name: string, input: I, rpcService: any, options?: {\n inline?: boolean;\n startNode?: string;\n }): Promise<{\n runId: string;\n }>;\n runWorkflowJob(runId: string, rpcService: any): Promise<void>;\n orchestrateWorkflow(runId: string, rpcService: any): Promise<void>;\n executeWorkflowSleepCompleted(runId: string, stepId: string): Promise<void>;\n insertStepState(runId: string, stepName: string, rpcName: string, data: any, stepOptions?: {\n retries?: number;\n retryDelay?: string | number;\n }): Promise<StepState>;\n getStepState(runId: string, stepName: string): Promise<StepState>;\n setStepRunning(stepId: string): Promise<void>;\n setStepScheduled(stepId: string): Promise<void>;\n setStepResult(stepId: string, result: any): Promise<void>;\n setStepError(stepId: string, error: Error): Promise<void>;\n createRetryAttempt(stepId: string, status: 'pending' | 'running'): Promise<StepState>;\n executeWorkflowStep(runId: string, stepName: string, rpcName: string | null, data: any, rpcService: any): Promise<void>;\n}",
9
+ "expandedProperties": {
10
+ "createRun": "(workflowName: string, input: any, inline?: boolean) => Promise<string>",
11
+ "getRun": "(id: string) => Promise<WorkflowRun | null>",
12
+ "getRunHistory": "(runId: string) => Promise<Array<StepState & { stepName: string; }>>",
13
+ "updateRunStatus": "(id: string, status: WorkflowStatus, output?: any, error?: SerializedError) => Promise<void>",
14
+ "withRunLock": "<T>(id: string, fn: () => Promise<T>) => Promise<T>",
15
+ "close": "() => Promise<void>",
16
+ "resumeWorkflow": "(runId: string) => Promise<void>",
17
+ "setServices": "(singletonServices: CoreSingletonServices, createWireServices: CreateWireServices, config: CoreConfig) => void",
18
+ "startWorkflow": "<I>(name: string, input: I, rpcService: any, options?: { inline?: boolean; startNode?: string; }) => Promise<{ runId: string; }>",
19
+ "runWorkflowJob": "(runId: string, rpcService: any) => Promise<void>",
20
+ "orchestrateWorkflow": "(runId: string, rpcService: any) => Promise<void>",
21
+ "executeWorkflowSleepCompleted": "(runId: string, stepId: string) => Promise<void>",
22
+ "insertStepState": "(runId: string, stepName: string, rpcName: string, data: any, stepOptions?: { retries?: number; retryDelay?: string | number; }) => Promise<StepState>",
23
+ "getStepState": "(runId: string, stepName: string) => Promise<StepState>",
24
+ "setStepRunning": "(stepId: string) => Promise<void>",
25
+ "setStepScheduled": "(stepId: string) => Promise<void>",
26
+ "setStepResult": "(stepId: string, result: any) => Promise<void>",
27
+ "setStepError": "(stepId: string, error: Error) => Promise<void>",
28
+ "createRetryAttempt": "(stepId: string, status: \"pending\" | \"running\") => Promise<StepState>",
29
+ "executeWorkflowStep": "(runId: string, stepName: string, rpcName: string | null, data: any, rpcService: any) => Promise<void>"
30
+ }
31
+ }
@@ -1,28 +1,12 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.11.1
2
+ * This file was generated by @pikku/cli@0.11.3
3
3
  */
4
4
  /**
5
- * This provides the structure needed for TypeScript to be aware of workflows and their input/output types
5
+ * Workflow type map with input/output types for each workflow
6
6
  */
7
7
 
8
8
 
9
9
 
10
- // Custom types are those that are defined directly within generics
11
- // or are broken into simpler types
12
- export type PikkuSchemasOutput = false | true
13
- export type PikkuChannelsOutput = false | true
14
- export type PikkuCLIOutput = false | true
15
- export type PikkuFunctionsOutput = false | true
16
- export type PikkuHTTPOutput = false | true
17
- export type PikkuMCPOutput = false | true
18
- export type PikkuMiddlewareOutput = false | true
19
- export type PikkuPermissionsOutput = false | true
20
- export type PikkuQueueOutput = false | true
21
- export type PikkuPublicRPCOutput = false | true
22
- export type PikkuRemoteRPCOutput = false | true
23
- export type PikkuRPCOutput = false | true
24
- export type PikkuSchedulerOutput = false | true
25
- export type PikkuWorkflowOutput = false | true
26
10
 
27
11
  interface WorkflowHandler<I, O> {
28
12
  input: I;
@@ -33,30 +17,12 @@ export type WorkflowMap = {
33
17
  };
34
18
 
35
19
 
36
- /**
37
- * Type-safe workflow client API
38
- */
39
20
  export type WorkflowClient<Name extends keyof WorkflowMap> = {
40
- /**
41
- * Start a new workflow run
42
- */
43
21
  start: (input: WorkflowMap[Name]['input']) => Promise<{ runId: string }>;
44
-
45
- /**
46
- * Get a workflow run by ID
47
- */
48
22
  getRun: <output extends keyof WorkflowMap[Name]>(runId: string) => Promise<WorkflowMap[Name][output]>;
49
-
50
- /**
51
- * Cancel a running workflow
52
- */
53
23
  cancelRun: (runId: string) => Promise<boolean>;
54
24
  }
55
25
 
56
- /**
57
- * Map of all registered workflows with type-safe client APIs
58
- */
59
26
  export type TypedWorkflowClients = {
60
27
  [Name in keyof WorkflowMap]: WorkflowClient<Name>;
61
28
  }
62
-
@@ -1,33 +1,29 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.11.1
2
+ * This file was generated by @pikku/cli@0.11.3
3
3
  */
4
4
  /**
5
- * Workflow-specific type definitions for tree-shaking optimization
5
+ * Workflow type definitions and helpers
6
+ * Used for authoring both DSL and graph-based workflows
6
7
  */
7
8
 
8
- import { CoreWorkflow, wireWorkflow as wireWorkflowCore, PikkuWorkflowInteraction, WorkflowStepOptions } from '@pikku/core/workflow'
9
- import { CorePikkuFunctionConfig, CorePikkuFunctionSessionless } from '@pikku/core'
10
- import type { PikkuPermission, PikkuMiddleware } from '../function/pikku-function-types.gen.js'
11
- import type { UserSession, SingletonServices } from '../../types/application-types.d.js'
12
- import type { TypedPikkuRPC, RPCMap } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js'
9
+ import { PikkuWorkflowWire, WorkflowStepOptions, WorkflowCancelledException } from '@pikku/core/workflow'
13
10
 
14
- /**
15
- * Type definition for workflows that orchestrate multi-step processes.
16
- * Workflows support both inline and remote execution modes with step caching.
17
- */
18
- type WorkflowWiring = CoreWorkflow<
19
- CorePikkuFunctionConfig<PikkuFunctionWorkflow<any, any>, PikkuPermission<any>, PikkuMiddleware>
20
- >
11
+ // Re-export WorkflowCancelledException for use in workflow functions
12
+ export { WorkflowCancelledException }
13
+ import type { PikkuFunctionSessionless, PikkuFunctionConfig } from '../function/pikku-function-types.gen.js'
14
+ import type { RPCMap, FlattenedRPCMap } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js'
15
+ import type { GraphNodeConfig, HTTPMethod } from '@pikku/core'
16
+ import { createGraph, wireWorkflow as coreWireWorkflow } from '@pikku/core'
17
+
18
+ // ============================================================================
19
+ // DSL Workflow Types (pikkuWorkflowFunc, pikkuWorkflowComplexFunc)
20
+ // ============================================================================
21
21
 
22
22
  /**
23
- * Typed workflow interaction with RPC awareness
23
+ * Typed workflow wire with RPC awareness
24
24
  * Provides type-safe workflow.do() for RPC steps
25
25
  */
26
- export interface TypedWorkflow extends PikkuWorkflowInteraction {
27
- /**
28
- * Execute a workflow step with RPC invocation (typed based on available RPCs)
29
- * @template K - RPC name from the RPC map
30
- */
26
+ export interface TypedWorkflow extends PikkuWorkflowWire {
31
27
  do<K extends keyof RPCMap>(
32
28
  stepName: string,
33
29
  rpcName: K,
@@ -35,10 +31,6 @@ export interface TypedWorkflow extends PikkuWorkflowInteraction {
35
31
  options?: WorkflowStepOptions
36
32
  ): Promise<RPCMap[K]['output']>
37
33
 
38
- /**
39
- * Execute a workflow step with inline function
40
- * @template T - Return type of the inline function
41
- */
42
34
  do<T>(
43
35
  stepName: string,
44
36
  fn: () => T | Promise<T>,
@@ -48,45 +40,310 @@ export interface TypedWorkflow extends PikkuWorkflowInteraction {
48
40
 
49
41
  /**
50
42
  * Workflow function type with typed workflow service
51
- * Includes the workflow interaction object with typed RPC methods
52
43
  */
53
44
  export type PikkuFunctionWorkflow<
54
45
  In = unknown,
55
46
  Out = never
56
- > = CorePikkuFunctionSessionless<
57
- In,
58
- Out,
59
- null,
60
- SingletonServices & {
61
- rpc: TypedPikkuRPC
62
- workflow: TypedWorkflow
63
- },
64
- UserSession
65
- >
47
+ > = PikkuFunctionSessionless<In, Out, 'workflow'>
66
48
 
67
49
  /**
68
- * Creates a workflow function with typed input and output.
69
- * Workflow functions have access to the workflow interaction object for step execution.
70
- *
71
- * @template In - Input type for the workflow
72
- * @template Out - Output type for the workflow
73
- * @param func - Function definition, either direct function or configuration object
74
- * @returns The normalized configuration object
50
+ * Creates a DSL-compatible workflow function (serializable, shows in Forge UI)
75
51
  */
76
52
  export const pikkuWorkflowFunc = <In, Out = unknown>(
77
53
  func:
78
54
  | PikkuFunctionWorkflow<In, Out>
79
- | CorePikkuFunctionConfig<PikkuFunctionWorkflow<In, Out>, PikkuPermission<In>, PikkuMiddleware>
55
+ | PikkuFunctionConfig<In, Out, 'workflow', PikkuFunctionWorkflow<In, Out>>
56
+ ) => {
57
+ return typeof func === 'function' ? { func } : func
58
+ }
59
+
60
+ /**
61
+ * Creates a complex workflow function (arbitrary code, hidden from Forge UI)
62
+ */
63
+ export const pikkuWorkflowComplexFunc = <In, Out = unknown>(
64
+ func:
65
+ | PikkuFunctionWorkflow<In, Out>
66
+ | PikkuFunctionConfig<In, Out, 'workflow', PikkuFunctionWorkflow<In, Out>>
80
67
  ) => {
81
68
  return typeof func === 'function' ? { func } : func
82
69
  }
83
70
 
71
+ // ============================================================================
72
+ // Graph Workflow Types (pikkuWorkflowGraph)
73
+ // ============================================================================
74
+
75
+ /**
76
+ * Type-safe graph builder with full RPC autocomplete
77
+ */
78
+ const graphBuilder = createGraph<FlattenedRPCMap>()
79
+
80
+ /** HTTP wire configuration for graph workflows */
81
+ interface GraphHttpWire<NodeIds extends string> {
82
+ route: string
83
+ method: HTTPMethod
84
+ startNode: NodeIds
85
+ }
86
+
87
+ /** Channel wire configuration for graph workflows */
88
+ interface GraphChannelWire<NodeIds extends string> {
89
+ name: string
90
+ onConnect?: NodeIds
91
+ onDisconnect?: NodeIds
92
+ onMessage?: NodeIds
93
+ }
94
+
95
+ /** Queue wire configuration for graph workflows */
96
+ interface GraphQueueWire<NodeIds extends string> {
97
+ name: string
98
+ startNode: NodeIds
99
+ }
100
+
101
+ /** CLI wire configuration for graph workflows */
102
+ interface GraphCliWire<NodeIds extends string> {
103
+ command: string
104
+ startNode: NodeIds
105
+ }
106
+
107
+ /** MCP wire configurations for graph workflows */
108
+ interface GraphMcpWires<NodeIds extends string> {
109
+ tool?: Array<{ name: string; startNode: NodeIds }>
110
+ prompt?: Array<{ name: string; startNode: NodeIds }>
111
+ resource?: Array<{ uri: string; startNode: NodeIds }>
112
+ }
113
+
114
+ /** Schedule wire configuration for graph workflows */
115
+ interface GraphScheduleWire<NodeIds extends string> {
116
+ cron?: string
117
+ interval?: string
118
+ startNode: NodeIds
119
+ }
120
+
121
+ /** Trigger wire configuration for graph workflows */
122
+ interface GraphTriggerWire<NodeIds extends string> {
123
+ name: string // RPC name of the trigger function
124
+ startNode: NodeIds
125
+ }
126
+
127
+ /** All wire configurations for graph workflows */
128
+ interface GraphWiresConfig<NodeIds extends string> {
129
+ http?: Array<GraphHttpWire<NodeIds>>
130
+ channel?: Array<GraphChannelWire<NodeIds>>
131
+ queue?: Array<GraphQueueWire<NodeIds>>
132
+ cli?: Array<GraphCliWire<NodeIds>>
133
+ mcp?: GraphMcpWires<NodeIds>
134
+ schedule?: Array<GraphScheduleWire<NodeIds>>
135
+ trigger?: Array<GraphTriggerWire<NodeIds>>
136
+ }
137
+
138
+ /** Configuration for graph-based workflow */
139
+ export interface PikkuWorkflowGraphConfig<
140
+ FuncMap extends Record<string, keyof FlattenedRPCMap & string>,
141
+ T
142
+ > {
143
+ /** Workflow name (optional - defaults to exported variable name) */
144
+ name?: string
145
+ /** Optional description */
146
+ description?: string
147
+ /** Optional tags for organization */
148
+ tags?: string[]
149
+ /** Node to RPC function mapping */
150
+ nodes: FuncMap
151
+ /** Wire configurations - how this workflow can be triggered */
152
+ wires?: GraphWiresConfig<Extract<keyof FuncMap, string>>
153
+ /** Node configurations (next, input, onError) */
154
+ config?: T
155
+ }
156
+
157
+ /** Result of pikkuWorkflowGraph - includes metadata for wiring */
158
+ export interface PikkuWorkflowGraphResult<T, NodeIds extends string = string> {
159
+ __type: 'pikkuWorkflowGraph'
160
+ name?: string
161
+ description?: string
162
+ tags?: string[]
163
+ wires?: GraphWiresConfig<NodeIds>
164
+ graph: T
165
+ }
166
+
84
167
  /**
85
- * Registers a workflow with the Pikku framework.
86
- * Workflows can run in 'inline' (synchronous) or 'remote' (queue-based) execution modes.
168
+ * Creates a graph-based workflow definition with metadata
169
+ * Name defaults to the exported variable name if not provided.
170
+ *
171
+ * @example
172
+ * // Name inferred from exported variable name
173
+ * export const myWorkflow = pikkuWorkflowGraph({
174
+ * description: 'Handles user onboarding',
175
+ * tags: ['onboarding'],
176
+ * nodes: {
177
+ * entry: 'createUser',
178
+ * sendEmail: 'sendWelcomeEmail',
179
+ * },
180
+ * config: {
181
+ * entry: { next: 'sendEmail' },
182
+ * sendEmail: { input: (ref) => ({ to: ref('entry', 'email') }) },
183
+ * },
184
+ * })
185
+ */
186
+ export function pikkuWorkflowGraph<
187
+ const FuncMap extends Record<string, keyof FlattenedRPCMap & string>
188
+ >(
189
+ config: PikkuWorkflowGraphConfig<FuncMap, GraphNodeConfigMap<FuncMap>>
190
+ ): PikkuWorkflowGraphResult<Record<Extract<keyof FuncMap, string>, GraphNodeConfig<Extract<keyof FuncMap, string>>>, Extract<keyof FuncMap, string>> {
191
+ return {
192
+ __type: 'pikkuWorkflowGraph',
193
+ name: config.name,
194
+ description: config.description,
195
+ tags: config.tags,
196
+ wires: config.wires,
197
+ graph: graphBuilder(config.nodes, config.config as any),
198
+ }
199
+ }
200
+
201
+ /** Typed ref value */
202
+ type TypedRef<T> = { $ref: string; path?: string } & { __phantomType?: T }
203
+
204
+ /** Template string type - assignable to string fields */
205
+ type TemplateString = {
206
+ $template: {
207
+ parts: string[]
208
+ expressions: Array<{ $ref: string; path?: string }>
209
+ }
210
+ } & { __brand: 'TemplateString' }
211
+
212
+ /**
213
+ * Creates a template string with variable interpolation
214
+ * Uses indexed placeholders $0, $1, etc. with refs array
215
+ *
216
+ * @example
217
+ * template('Hello $0, your order $1 is ready', [ref('trigger', 'name'), ref('step_0', 'orderId')])
218
+ */
219
+ export function template(templateStr: string, refs: TypedRef<unknown>[]): TemplateString {
220
+ const parts: string[] = []
221
+ const expressions: Array<{ $ref: string; path?: string }> = []
222
+
223
+ // Parse template string: "Hello $0" -> parts: ["Hello ", ""], use refs[0] for expression
224
+ const regex = /$(d+)/g
225
+ let lastIndex = 0
226
+ let match
227
+
228
+ while ((match = regex.exec(templateStr)) !== null) {
229
+ // Add the part before this match
230
+ parts.push(templateStr.slice(lastIndex, match.index))
231
+
232
+ // Get the ref by index
233
+ const refIndex = parseInt(match[1]!, 10)
234
+ const refValue = refs[refIndex]
235
+ if (refValue) {
236
+ const expr: { $ref: string; path?: string } = { $ref: refValue.$ref }
237
+ if (refValue.path) {
238
+ expr.path = refValue.path
239
+ }
240
+ expressions.push(expr)
241
+ } else {
242
+ expressions.push({ $ref: 'unknown' })
243
+ }
244
+
245
+ lastIndex = regex.lastIndex
246
+ }
247
+
248
+ // Add the remaining part
249
+ parts.push(templateStr.slice(lastIndex))
250
+
251
+ return {
252
+ $template: { parts, expressions }
253
+ } as TemplateString
254
+ }
255
+
256
+ /** Map input type fields to allow TypedRef or TemplateString for any field */
257
+ type InputWithRefs<T> = {
258
+ [K in keyof T]?: T[K] | TypedRef<T[K]> | TypedRef<unknown> | TemplateString
259
+ }
260
+
261
+ /** Get the input type for a node based on its RPC mapping */
262
+ type NodeInputType<FuncMap extends Record<string, string>, K extends keyof FuncMap> =
263
+ FuncMap[K] extends keyof FlattenedRPCMap
264
+ ? InputWithRefs<FlattenedRPCMap[FuncMap[K]]['input']>
265
+ : Record<string, unknown>
266
+
267
+ /** Get the output type keys for a node based on its RPC mapping */
268
+ type NodeOutputKeys<FuncMap extends Record<string, string>, N extends string> =
269
+ N extends keyof FuncMap
270
+ ? FuncMap[N] extends keyof FlattenedRPCMap
271
+ ? keyof FlattenedRPCMap[FuncMap[N]]['output'] & string
272
+ : string
273
+ : string
274
+
275
+ /** Ref function type with path validation */
276
+ type RefFunction<FuncMap extends Record<string, string>> = {
277
+ <N extends Extract<keyof FuncMap, string>>(
278
+ nodeId: N,
279
+ path: NodeOutputKeys<FuncMap, N>
280
+ ): TypedRef<unknown>
281
+ (nodeId: 'trigger' | '$item', path?: string): TypedRef<unknown>
282
+ }
283
+
284
+ /** Template function type */
285
+ type TemplateFunction = (templateStr: string, refs: TypedRef<unknown>[]) => TemplateString
286
+
287
+ /** Type helper for node configuration */
288
+ type GraphNodeConfigMap<FuncMap extends Record<string, string>> = {
289
+ [K in Extract<keyof FuncMap, string>]?: {
290
+ next?: NextConfig<Extract<keyof FuncMap, string>>
291
+ input?:
292
+ | NodeInputType<FuncMap, K>
293
+ | (() => NodeInputType<FuncMap, K>)
294
+ | ((ref: RefFunction<FuncMap>, template: TemplateFunction) => NodeInputType<FuncMap, K>)
295
+ onError?: Extract<keyof FuncMap, string> | Extract<keyof FuncMap, string>[]
296
+ }
297
+ }
298
+
299
+ type NextConfig<NodeIds extends string> = NodeIds | NodeIds[] | { if: string; then: NodeIds; else?: NodeIds }
300
+
301
+ // ============================================================================
302
+ // Unified wireWorkflow
303
+ // ============================================================================
304
+
305
+ /** Workflow definition with DSL function */
306
+ interface WorkflowDefinitionFunc {
307
+ /** Whether this workflow wiring is enabled (default: true) */
308
+ enabled?: boolean
309
+ /** Wire configurations for the workflow */
310
+ wires: {
311
+ http?: { route: string; method: HTTPMethod }
312
+ channel?: string
313
+ queue?: string
314
+ }
315
+ /** DSL workflow function */
316
+ func: PikkuFunctionConfig<any, any, 'workflow', PikkuFunctionWorkflow<any, any>>
317
+ }
318
+
319
+ /** Workflow definition with graph */
320
+ interface WorkflowDefinitionGraph<T, NodeIds extends string = string> {
321
+ /** Whether this workflow wiring is enabled (default: true) */
322
+ enabled?: boolean
323
+ /** Graph workflow definition - wires are defined in the graph itself */
324
+ graph: PikkuWorkflowGraphResult<T, NodeIds>
325
+ }
326
+
327
+ /**
328
+ * Wire a workflow with wires
329
+ * Accepts either a DSL function (func) or a graph definition (graph)
330
+ *
331
+ * @example
332
+ * // DSL workflow
333
+ * wireWorkflow({
334
+ * wires: { http: { route: '/start', method: 'post' } },
335
+ * func: myWorkflowFunc,
336
+ * })
87
337
  *
88
- * @param workflow - Workflow definition with name, execution mode, and handler function
338
+ * @example
339
+ * // Graph workflow - wires are defined in the graph itself
340
+ * wireWorkflow({
341
+ * enabled: true, // default: true
342
+ * graph: myGraphWorkflow,
343
+ * })
89
344
  */
90
- export const wireWorkflow = (workflow: WorkflowWiring) => {
91
- wireWorkflowCore(workflow as any)
345
+ export function wireWorkflow<T extends Record<string, GraphNodeConfig<Extract<keyof T, string>>>, NodeIds extends string = string>(
346
+ definition: WorkflowDefinitionFunc | WorkflowDefinitionGraph<T, NodeIds>
347
+ ): void {
348
+ coreWireWorkflow(definition as any)
92
349
  }
@@ -1,5 +1,9 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.11.1
2
+ * This file was generated by @pikku/cli@0.11.3
3
3
  */
4
4
  import { pikkuState } from '@pikku/core'
5
- pikkuState('workflows', 'meta', {})
5
+ import type { SerializedWorkflowGraphs } from '@pikku/inspector/workflow-graph'
6
+
7
+ const workflowsMeta: SerializedWorkflowGraphs = {}
8
+
9
+ pikkuState(null, 'workflows', 'meta', workflowsMeta)
@@ -1,4 +1,3 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.11.1
2
+ * This file was generated by @pikku/cli@0.11.3
3
3
  */
4
- /* The files with an wireWorkflow function call */
package/CHANGELOG.md CHANGED
@@ -1,4 +1,47 @@
1
- ## 0.11.0
1
+ ## 0.11.3
2
+
3
+ ## 0.11.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 14a3dcd: fix: nextjs rpc route wasn't working
8
+ - db9c7bf: Add workflow graph code generation and fix HTTP routes count
9
+ - Updated dependencies [db9c7bf]
10
+ - Updated dependencies [db9c7bf]
11
+ - @pikku/core@0.11.2
12
+ - @pikku/inspector@0.11.2
13
+
14
+ ### Features
15
+
16
+ - f35e89da: Add workflow graph code generation
17
+ - Workflow graph serialization and type generation
18
+ - DSL to graph conversion for workflow metadata
19
+
20
+ ### Fixes
21
+
22
+ - ddd87eaf: Make CreateWireServices type compatible with custom Config types
23
+ - c42aad80: Correct HTTP routes count in CLI summary (was showing method count instead of route count)
24
+
25
+ ## 0.11.2
26
+
27
+ ### Patch Changes
28
+
29
+ - 4b811db: chore: updating all dependencies
30
+ - ce902b1: feat: serialize json files seperate to pikku meta state calls
31
+ - e12a00c: feat: adding initialSession to PikkuWire which is correctly typed (undefined / not depending on function type)
32
+ - ce902b1: feat: adding rpcName to rpc url so its nicer in network tabs
33
+ - 4579434: breaking: changing the signature of functions
34
+ - 28aeb7f: breaking: extract docs in the wiring meta
35
+ - ce902b1: feat: adding in pikkuSimpleWorkflowFunc
36
+ - 06e1a31: breaking: change session services to wire services
37
+ - Updated dependencies [4b811db]
38
+ - Updated dependencies [e12a00c]
39
+ - Updated dependencies [4579434]
40
+ - Updated dependencies [28aeb7f]
41
+ - Updated dependencies [ce902b1]
42
+ - Updated dependencies [06e1a31]
43
+ - @pikku/inspector@0.11.1
44
+ - @pikku/core@0.11.1
2
45
 
3
46
  ## 0.11.1
4
47
 
package/bin/pikku.ts CHANGED
@@ -1,34 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander'
3
3
  import { createConfig, createSingletonServices } from '../src/services.js'
4
- import { PikkuRPCService } from '@pikku/core/rpc'
5
4
  import { LocalVariablesService } from '@pikku/core/services'
6
- import { existsSync } from 'fs'
7
- import { fileURLToPath } from 'url'
8
- import { dirname, join } from 'path'
5
+ import { all as allCommand } from '../src/functions/commands/all.js'
6
+ import { watch as watchCommand } from '../src/functions/commands/watch.js'
9
7
 
10
- const __filename = fileURLToPath(import.meta.url)
11
- const __dirname = dirname(__filename)
12
-
13
- // Check if Pikku CLI is available
14
- const pikkuCliPath = join(__dirname, '../.pikku/cli/pikku-cli.gen.js')
15
-
16
- if (existsSync(pikkuCliPath)) {
17
- try {
18
- // Use the generated Pikku CLI
19
- const { PikkuCLI } = await import(pikkuCliPath)
20
- await PikkuCLI(process.argv.slice(2))
21
- process.exit(0)
22
- } catch (error) {
23
- // If import fails, fall back to Commander.js
24
- console.warn(
25
- 'Failed to load Pikku CLI, using fallback mode:',
26
- error.message
27
- )
28
- }
29
- }
30
-
31
- // Fallback to Commander.js for initial setup
32
8
  // Import bootstrap if it exists
33
9
  try {
34
10
  await import('../.pikku/pikku-bootstrap.gen.js')
@@ -36,16 +12,14 @@ try {
36
12
  // Bootstrap doesn't exist yet, continue anyway
37
13
  }
38
14
 
39
- const action = async (command, cliConfig) => {
15
+ const action = async (command: string, cliConfig: any) => {
40
16
  const config = await createConfig(new LocalVariablesService(), cliConfig)
41
17
  const services = await createSingletonServices(config)
42
- const rpcWrapper = new PikkuRPCService()
43
- const { rpc } = await rpcWrapper.injectRPCService(services, {}, false)
44
18
 
45
19
  if (command === 'watch') {
46
- await rpc.invoke('watch', null)
20
+ await watchCommand.func(services)
47
21
  } else {
48
- await rpc.invoke('all', null)
22
+ await allCommand.func(services)
49
23
  }
50
24
  }
51
25
 
@@ -60,7 +34,7 @@ const all = (program, name, description) => {
60
34
  )
61
35
  .option(
62
36
  '--session-services-factory-type',
63
- 'The type of your session services factory'
37
+ 'The type of your wire services factory'
64
38
  )
65
39
  .option('-c, --config <string>', 'The path to pikku cli config file')
66
40
  .option('-t, --tags <tags...>', 'Which tags to filter by')