@pikku/cli 0.11.2 → 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 (301) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +63 -6
  2. package/.pikku/channel/pikku-channels-map.gen.d.ts +4 -4
  3. package/.pikku/channel/pikku-channels-meta.gen.ts +4 -2
  4. package/.pikku/channel/pikku-channels.gen.ts +1 -1
  5. package/.pikku/cli/pikku-cli-channel.ts +1 -1
  6. package/.pikku/cli/pikku-cli-client.gen.ts +1 -1
  7. package/.pikku/cli/pikku-cli-types.gen.ts +1 -1
  8. package/.pikku/cli/pikku-cli-wirings-meta.gen.json +2 -1
  9. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +2 -2
  10. package/.pikku/cli/pikku-cli-wirings.gen.ts +1 -1
  11. package/.pikku/cli/pikku-cli.gen.ts +1 -1
  12. package/.pikku/forge/pikku-forge-types.gen.ts +83 -0
  13. package/.pikku/function/pikku-function-types.gen.ts +181 -35
  14. package/.pikku/function/pikku-functions-meta-verbose.gen.json +1030 -0
  15. package/.pikku/function/pikku-functions-meta.gen.json +88 -420
  16. package/.pikku/function/pikku-functions-meta.gen.ts +2 -2
  17. package/.pikku/http/pikku-http-types.gen.ts +19 -3
  18. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +4 -4
  19. package/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
  20. package/.pikku/http/pikku-http-wirings-meta.gen.ts +4 -10
  21. package/.pikku/http/pikku-http-wirings.gen.ts +1 -1
  22. package/.pikku/mcp/pikku-mcp-types.gen.ts +69 -17
  23. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +4 -4
  24. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +1 -1
  25. package/.pikku/pikku-bootstrap.gen.ts +7 -9
  26. package/.pikku/pikku-services.gen.ts +3 -2
  27. package/.pikku/pikku-types.gen.ts +4 -1
  28. package/.pikku/pikku-websocket.gen.ts +1 -1
  29. package/.pikku/queue/pikku-queue-types.gen.ts +1 -1
  30. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +4 -4
  31. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +2 -2
  32. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +1 -1
  33. package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +4 -1
  34. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +12 -7
  35. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +15 -9
  36. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +1 -1
  37. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +2 -2
  38. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +1 -1
  39. package/.pikku/schemas/register.gen.ts +9 -1
  40. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  41. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
  42. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  43. package/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +1 -0
  44. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
  45. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
  46. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
  47. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
  48. package/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
  49. package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
  50. package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
  51. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
  52. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
  53. package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
  54. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
  55. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  56. package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
  57. package/.pikku/services/config.gen.json +11 -6
  58. package/.pikku/services/getInspectorState.gen.json +2 -2
  59. package/.pikku/services/jwt.gen.json +2 -2
  60. package/.pikku/services/logger.gen.json +2 -2
  61. package/.pikku/services/queueService.gen.json +2 -2
  62. package/.pikku/services/schedulerService.gen.json +2 -2
  63. package/.pikku/services/schema.gen.json +2 -2
  64. package/.pikku/services/secrets.gen.json +13 -0
  65. package/.pikku/services/variables.gen.json +2 -2
  66. package/.pikku/services/workflowService.gen.json +6 -6
  67. package/.pikku/workflow/pikku-workflow-map.gen.d.ts +2 -36
  68. package/.pikku/workflow/pikku-workflow-types.gen.ts +297 -45
  69. package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +5 -4
  70. package/.pikku/workflow/pikku-workflow-wirings.gen.ts +1 -6
  71. package/CHANGELOG.md +23 -1
  72. package/cli.schema.json +1 -1
  73. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +47 -5
  74. package/dist/.pikku/channel/pikku-channel-types.gen.js +3 -13
  75. package/dist/.pikku/channel/pikku-channels-meta.gen.js +3 -2
  76. package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
  77. package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
  78. package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
  79. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  80. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  81. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  82. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  83. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
  84. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +2 -1
  85. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  86. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  87. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  88. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  89. package/dist/.pikku/forge/pikku-forge-types.gen.d.ts +72 -0
  90. package/dist/.pikku/forge/pikku-forge-types.gen.js +55 -0
  91. package/dist/.pikku/function/pikku-function-types.gen.d.ts +123 -31
  92. package/dist/.pikku/function/pikku-function-types.gen.js +37 -51
  93. package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
  94. package/dist/.pikku/function/pikku-functions-meta.gen.json +88 -420
  95. package/dist/.pikku/http/pikku-http-types.gen.d.ts +18 -3
  96. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  97. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +3 -10
  98. package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
  99. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
  100. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
  101. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +54 -14
  102. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +7 -31
  103. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +4 -4
  104. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
  105. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +1 -1
  106. package/dist/.pikku/pikku-bootstrap.gen.d.ts +7 -9
  107. package/dist/.pikku/pikku-bootstrap.gen.js +7 -9
  108. package/dist/.pikku/pikku-services.gen.d.ts +3 -2
  109. package/dist/.pikku/pikku-services.gen.js +1 -0
  110. package/dist/.pikku/pikku-types.gen.d.ts +2 -1
  111. package/dist/.pikku/pikku-types.gen.js +3 -1
  112. package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
  113. package/dist/.pikku/pikku-websocket.gen.js +1 -1
  114. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  115. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  116. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +2 -2
  117. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  118. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  119. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +4 -1
  120. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +4 -1
  121. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  122. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  123. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +2 -2
  124. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
  125. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
  126. package/dist/.pikku/schemas/register.gen.js +5 -1
  127. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  128. package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
  129. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  130. package/dist/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +1 -0
  131. package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
  132. package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
  133. package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
  134. package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
  135. package/dist/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
  136. package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
  137. package/dist/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
  138. package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
  139. package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
  140. package/dist/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
  141. package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
  142. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  143. package/dist/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
  144. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +207 -37
  145. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +104 -28
  146. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -3
  147. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +2 -6
  148. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +2 -6
  149. package/dist/src/functions/commands/all.js +117 -79
  150. package/dist/src/functions/commands/bootstrap.js +2 -9
  151. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +0 -1
  152. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +49 -35
  153. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +49 -35
  154. package/dist/src/functions/wirings/channels/pikku-channels.js +1 -1
  155. package/dist/src/functions/wirings/channels/pikku-command-channels.js +18 -2
  156. package/dist/src/functions/wirings/channels/serialize-channel-types.js +62 -5
  157. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +1 -2
  158. package/dist/src/functions/wirings/cli/pikku-command-cli.js +10 -2
  159. package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.d.ts +1 -0
  160. package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.js +90 -0
  161. package/dist/src/functions/wirings/forge/pikku-command-forge-types.d.ts +1 -0
  162. package/dist/src/functions/wirings/forge/pikku-command-forge-types.js +26 -0
  163. package/dist/src/functions/wirings/forge/serialize-forge-types.d.ts +4 -0
  164. package/dist/src/functions/wirings/forge/serialize-forge-types.js +90 -0
  165. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +1 -1
  166. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +7 -2
  167. package/dist/src/functions/wirings/functions/pikku-command-functions.js +33 -18
  168. package/dist/src/functions/wirings/functions/pikku-command-services.js +1 -1
  169. package/dist/src/functions/wirings/functions/pikku-function-types.js +2 -2
  170. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
  171. package/dist/src/functions/wirings/functions/schemas.js +5 -4
  172. package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +3 -1
  173. package/dist/src/functions/wirings/functions/serialize-function-imports.js +7 -3
  174. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
  175. package/dist/src/functions/wirings/functions/serialize-function-types.js +181 -34
  176. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +1 -1
  177. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +19 -21
  178. package/dist/src/functions/wirings/http/openapi-spec-generator.js +1 -1
  179. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +18 -2
  180. package/dist/src/functions/wirings/http/pikku-command-openapi.js +2 -2
  181. package/dist/src/functions/wirings/http/pikku-http-routes.js +1 -1
  182. package/dist/src/functions/wirings/http/serialize-http-types.js +18 -2
  183. package/dist/src/functions/wirings/http/serialize-typed-http-map.js +33 -8
  184. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +15 -6
  185. package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +3 -2
  186. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +68 -16
  187. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +5 -2
  188. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -0
  189. package/dist/src/functions/wirings/package/pikku-command-package.js +58 -0
  190. package/dist/src/functions/wirings/package/serialize-package.d.ts +5 -0
  191. package/dist/src/functions/wirings/package/serialize-package.js +32 -0
  192. package/dist/src/functions/wirings/queue/pikku-command-queue.js +10 -2
  193. package/dist/src/functions/wirings/queue/pikku-queue.js +1 -9
  194. package/dist/src/functions/wirings/queue/serialize-queue-map.js +20 -3
  195. package/dist/src/functions/wirings/queue/serialize-queue-meta.js +1 -1
  196. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +4 -4
  197. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +1 -1
  198. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +3 -0
  199. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +1 -1
  200. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +1 -1
  201. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +54 -8
  202. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +10 -1
  203. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +1 -1
  204. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +56 -18
  205. package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +3 -0
  206. package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +30 -32
  207. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +1 -3
  208. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +43 -18
  209. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +7 -0
  210. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +53 -0
  211. package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +3 -1
  212. package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +299 -45
  213. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.d.ts +1 -1
  214. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +14 -27
  215. package/dist/src/services.js +4 -1
  216. package/dist/src/utils/command-summary.d.ts +2 -0
  217. package/dist/src/utils/command-summary.js +2 -0
  218. package/dist/src/utils/custom-types-generator.js +13 -15
  219. package/dist/src/utils/generate-bootstrap-file.js +1 -1
  220. package/dist/src/utils/pikku-cli-config.js +37 -9
  221. package/dist/src/utils/schema-generator.d.ts +4 -3
  222. package/dist/src/utils/schema-generator.js +135 -15
  223. package/dist/src/utils/strip-verbose-meta.d.ts +43 -0
  224. package/dist/src/utils/strip-verbose-meta.js +210 -0
  225. package/dist/tsconfig.tsbuildinfo +1 -1
  226. package/package.json +7 -4
  227. package/src/functions/commands/all.ts +144 -97
  228. package/src/functions/commands/bootstrap.ts +2 -10
  229. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +0 -1
  230. package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +49 -35
  231. package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +49 -35
  232. package/src/functions/wirings/channels/pikku-channels.ts +1 -1
  233. package/src/functions/wirings/channels/pikku-command-channels.ts +46 -3
  234. package/src/functions/wirings/channels/serialize-channel-types.ts +62 -5
  235. package/src/functions/wirings/channels/serialize-typed-channel-map.ts +3 -2
  236. package/src/functions/wirings/cli/pikku-command-cli.ts +21 -2
  237. package/src/functions/wirings/forge/pikku-command-forge-nodes.ts +135 -0
  238. package/src/functions/wirings/forge/pikku-command-forge-types.ts +38 -0
  239. package/src/functions/wirings/forge/serialize-forge-types.ts +94 -0
  240. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +3 -2
  241. package/src/functions/wirings/functions/pikku-command-function-types.ts +17 -10
  242. package/src/functions/wirings/functions/pikku-command-functions.ts +47 -37
  243. package/src/functions/wirings/functions/pikku-command-services.ts +1 -1
  244. package/src/functions/wirings/functions/pikku-function-types.ts +3 -1
  245. package/src/functions/wirings/functions/schemas.ts +14 -4
  246. package/src/functions/wirings/functions/serialize-function-imports.ts +12 -3
  247. package/src/functions/wirings/functions/serialize-function-types.ts +182 -34
  248. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +27 -26
  249. package/src/functions/wirings/http/openapi-spec-generator.ts +1 -1
  250. package/src/functions/wirings/http/pikku-command-http-routes.ts +46 -2
  251. package/src/functions/wirings/http/pikku-command-openapi.ts +3 -2
  252. package/src/functions/wirings/http/pikku-http-routes.ts +1 -1
  253. package/src/functions/wirings/http/serialize-http-types.ts +18 -2
  254. package/src/functions/wirings/http/serialize-typed-http-map.ts +32 -8
  255. package/src/functions/wirings/mcp/pikku-command-mcp.ts +32 -10
  256. package/src/functions/wirings/mcp/serialize-mcp-json.ts +8 -6
  257. package/src/functions/wirings/mcp/serialize-mcp-types.ts +68 -16
  258. package/src/functions/wirings/middleware/pikku-command-middleware.ts +6 -2
  259. package/src/functions/wirings/package/pikku-command-package.ts +81 -0
  260. package/src/functions/wirings/package/serialize-package.ts +69 -0
  261. package/src/functions/wirings/queue/pikku-command-queue.ts +22 -2
  262. package/src/functions/wirings/queue/pikku-queue.ts +1 -10
  263. package/src/functions/wirings/queue/serialize-queue-map.ts +18 -3
  264. package/src/functions/wirings/queue/serialize-queue-meta.ts +1 -1
  265. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +7 -4
  266. package/src/functions/wirings/rpc/pikku-command-rpc.ts +1 -1
  267. package/src/functions/wirings/rpc/serialize-remote-rpc.ts +3 -0
  268. package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +1 -1
  269. package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +74 -8
  270. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +22 -1
  271. package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +1 -1
  272. package/src/functions/wirings/workflow/pikku-command-workflow.ts +104 -37
  273. package/src/functions/wirings/workflow/serialize-workflow-map.ts +38 -40
  274. package/src/functions/wirings/workflow/serialize-workflow-meta.ts +66 -26
  275. package/src/functions/wirings/workflow/serialize-workflow-registration.ts +83 -0
  276. package/src/functions/wirings/workflow/serialize-workflow-types.ts +299 -45
  277. package/src/functions/wirings/workflow/serialize-workflow-workers.ts +14 -27
  278. package/src/services.ts +8 -1
  279. package/src/utils/command-summary.ts +4 -0
  280. package/src/utils/custom-types-generator.ts +15 -15
  281. package/src/utils/generate-bootstrap-file.ts +1 -1
  282. package/src/utils/pikku-cli-config.ts +51 -18
  283. package/src/utils/schema-generator.ts +185 -22
  284. package/src/utils/strip-verbose-meta.ts +254 -0
  285. package/types/config.d.ts +37 -3
  286. package/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
  287. package/.pikku/function/pikku-functions-meta.min.gen.ts +0 -6
  288. package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +0 -1
  289. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +0 -6
  290. package/dist/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
  291. package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.d.ts +0 -1
  292. package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.js +0 -12
  293. package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.d.ts +0 -1
  294. package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.js +0 -13
  295. package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.d.ts +0 -8
  296. package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.js +0 -30
  297. package/src/functions/wirings/workflow/pikku-command-workflow-map.ts +0 -24
  298. package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +0 -29
  299. package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +0 -47
  300. /package/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
  301. /package/dist/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
@@ -1,14 +1,16 @@
1
1
  import { serializeImportMap } from '../../../utils/serialize-import-map.js';
2
2
  import { generateCustomTypes } from '../../../utils/custom-types-generator.js';
3
- export const serializeTypedRPCMap = (relativeToPath, packageMappings, typesMap, functionsMeta, rpcMeta) => {
3
+ export const serializeTypedRPCMap = (relativeToPath, packageMappings, typesMap, functionsMeta, rpcMeta, externalPackages) => {
4
4
  const requiredTypes = new Set();
5
5
  const serializedCustomTypes = generateCustomTypes(typesMap, requiredTypes);
6
6
  const serializedRPCs = generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes);
7
7
  const serializedImportMap = serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes);
8
+ const externalPackageImports = generateExternalPackageImports(externalPackages, relativeToPath);
9
+ const mergedRPCMap = generateMergedRPCMap(externalPackages);
8
10
  return `/**
9
11
  * This provides the structure needed for typescript to be aware of RPCs and their return types
10
12
  */
11
-
13
+
12
14
  ${serializedImportMap}
13
15
  ${serializedCustomTypes}
14
16
 
@@ -18,14 +20,16 @@ interface RPCHandler<I, O> {
18
20
  }
19
21
 
20
22
  ${serializedRPCs}
23
+ ${externalPackageImports}
24
+ ${mergedRPCMap}
21
25
 
22
- export type RPCInvoke = <Name extends keyof RPCMap>(
26
+ export type RPCInvoke = <Name extends keyof FlattenedRPCMap>(
23
27
  name: Name,
24
- data: RPCMap[Name]['input'],
28
+ data: FlattenedRPCMap[Name]['input'],
25
29
  options?: {
26
30
  location?: 'local' | 'remote' | 'auto'
27
31
  }
28
- ) => Promise<RPCMap[Name]['output']>
32
+ ) => Promise<FlattenedRPCMap[Name]['output']>
29
33
 
30
34
  // Import WorkflowMap for workflow typing
31
35
  import type { WorkflowMap } from '../workflow/pikku-workflow-map.gen.js'
@@ -42,6 +46,46 @@ export type TypedPikkuRPC = {
42
46
  }
43
47
  `;
44
48
  };
49
+ function generateExternalPackageImports(externalPackages, relativeToPath) {
50
+ if (!externalPackages || Object.keys(externalPackages).length === 0) {
51
+ return '';
52
+ }
53
+ let imports = '\n// External package RPC maps\n';
54
+ for (const [namespace, packageName] of Object.entries(externalPackages)) {
55
+ // Import the RPCMap from each external package's internal RPC map
56
+ // Use .js extension - package.json exports will resolve to .d.ts for types
57
+ imports += `import type { RPCMap as ${toPascalCase(namespace)}RPCMap } from '${packageName}/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.js'\n`;
58
+ }
59
+ return imports;
60
+ }
61
+ function generateMergedRPCMap(externalPackages) {
62
+ if (!externalPackages || Object.keys(externalPackages).length === 0) {
63
+ return `
64
+ // No external packages, use RPCMap directly
65
+ export type FlattenedRPCMap = RPCMap
66
+ `;
67
+ }
68
+ // TypeScript utility to flatten namespaced RPC maps
69
+ const utilityTypes = `
70
+ // Utility type to prefix keys with namespace
71
+ type PrefixKeys<T, Prefix extends string> = {
72
+ [K in keyof T as \`\${Prefix}:\${string & K}\`]: T[K]
73
+ }
74
+
75
+ // Merge all RPC maps with namespace prefixes
76
+ export type FlattenedRPCMap =
77
+ RPCMap${Object.keys(externalPackages)
78
+ .map((namespace) => ` & PrefixKeys<${toPascalCase(namespace)}RPCMap, '${namespace}'>`)
79
+ .join('')}
80
+ `;
81
+ return utilityTypes;
82
+ }
83
+ function toPascalCase(str) {
84
+ return str
85
+ .split(/[-_]/)
86
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
87
+ .join('');
88
+ }
45
89
  function generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes) {
46
90
  // Initialize an object to collect RPCs
47
91
  const rpcsObj = {};
@@ -54,14 +98,15 @@ function generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes) {
54
98
  const input = functionMeta.inputs ? functionMeta.inputs[0] : undefined;
55
99
  const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined;
56
100
  // Store the input and output types for RPCHandler
57
- // Use 'any' for types not in typesMap (e.g., inline types in generated workflow workers)
101
+ // For zod-derived schemas, the type might not be in typesMap, so use the schema name directly
58
102
  let inputType = 'null';
59
103
  if (input) {
60
104
  try {
61
105
  inputType = typesMap.getTypeMeta(input).uniqueName;
62
106
  }
63
107
  catch {
64
- inputType = 'any';
108
+ // Type not in typesMap - use the name directly (e.g., zod-derived types)
109
+ inputType = input;
65
110
  }
66
111
  }
67
112
  let outputType = 'null';
@@ -70,7 +115,8 @@ function generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes) {
70
115
  outputType = typesMap.getTypeMeta(output).uniqueName;
71
116
  }
72
117
  catch {
73
- outputType = 'any';
118
+ // Type not in typesMap - use the name directly (e.g., zod-derived types)
119
+ outputType = output;
74
120
  }
75
121
  }
76
122
  requiredTypes.add(inputType);
@@ -4,12 +4,21 @@ import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
5
  import { serializeSchedulerMeta, serializeSchedulerMetaTS, } from './serialize-scheduler-meta.js';
6
6
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
7
+ import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
7
8
  export const pikkuScheduler = pikkuSessionlessFunc({
8
9
  func: async ({ logger, config, getInspectorState }) => {
9
10
  const visitState = await getInspectorState();
10
11
  const { schedulersWiringFile, schedulersWiringMetaFile, schedulersWiringMetaJsonFile, packageMappings, schema, } = config;
11
12
  const { scheduledTasks } = visitState;
12
- await writeFileInDir(logger, schedulersWiringMetaJsonFile, JSON.stringify(serializeSchedulerMeta(scheduledTasks.meta), null, 2));
13
+ const fullMeta = serializeSchedulerMeta(scheduledTasks.meta);
14
+ // Write minimal JSON (runtime-only fields)
15
+ const minimalMeta = stripVerboseFields(fullMeta);
16
+ await writeFileInDir(logger, schedulersWiringMetaJsonFile, JSON.stringify(minimalMeta, null, 2));
17
+ // Write verbose JSON only if it has additional fields
18
+ if (hasVerboseFields(fullMeta)) {
19
+ const verbosePath = schedulersWiringMetaJsonFile.replace(/\.gen\.json$/, '-verbose.gen.json');
20
+ await writeFileInDir(logger, verbosePath, JSON.stringify(fullMeta, null, 2));
21
+ }
13
22
  const jsonImportPath = getFileImportRelativePath(schedulersWiringMetaFile, schedulersWiringMetaJsonFile, packageMappings);
14
23
  await writeFileInDir(logger, schedulersWiringMetaFile, serializeSchedulerMetaTS(scheduledTasks.meta, jsonImportPath, schema?.supportsImportAttributes ?? false));
15
24
  await writeFileInDir(logger, schedulersWiringFile, serializeFileImports('addScheduledTasks', schedulersWiringFile, scheduledTasks.files, packageMappings));
@@ -10,7 +10,7 @@ export const serializeSchedulerMetaTS = (scheduledTasksMeta, jsonImportPath, sup
10
10
  serializedOutput.push("import { ScheduledTasksMeta } from '@pikku/core/scheduler'");
11
11
  serializedOutput.push(importStatement);
12
12
  serializedOutput.push('');
13
- serializedOutput.push("pikkuState('scheduler', 'meta', metaData as ScheduledTasksMeta)");
13
+ serializedOutput.push("pikkuState(null, 'scheduler', 'meta', metaData as ScheduledTasksMeta)");
14
14
  serializedOutput.push('');
15
15
  const scheduledTasksMetaValues = Object.values(scheduledTasksMeta);
16
16
  if (scheduledTasksMetaValues.length > 0) {
@@ -1,22 +1,29 @@
1
1
  import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
- import { ErrorCode } from '@pikku/inspector';
2
+ import { convertDslToGraph, ErrorCode } from '@pikku/inspector';
3
3
  import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
- import { serializeWorkflowMeta, serializeWorkflowMetaTS, } from './serialize-workflow-meta.js';
6
5
  import { serializeWorkflowTypes } from './serialize-workflow-types.js';
6
+ import { serializeWorkflowRegistration } from './serialize-workflow-registration.js';
7
7
  import { serializeWorkflowMap } from './serialize-workflow-map.js';
8
+ import { serializeWorkflowMeta } from './serialize-workflow-meta.js';
8
9
  import { serializeWorkflowWorkers } from './serialize-workflow-workers.js';
9
- import { serializeWorkflowWirings } from './serialize-workflow-wirings.js';
10
10
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
11
+ import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
11
12
  import { join } from 'path';
12
13
  export const pikkuWorkflow = pikkuSessionlessFunc({
13
14
  func: async ({ logger, config, getInspectorState }) => {
14
15
  const visitState = await getInspectorState();
15
- const { workflowsWiringFile, workflowsWiringMetaFile, workflowsWiringMetaJsonFile, workflowMapDeclarationFile, workflowTypesFile, functionTypesFile, typesDeclarationFile, packageMappings, schema, } = config;
16
+ const { workflowsWiringFile, workflowsWiringMetaFile, workflowMetaDir, workflowMapDeclarationFile, workflowTypesFile, functionTypesFile, typesDeclarationFile, packageMappings, schema, } = config;
16
17
  const { workflows, functions: functionState } = visitState;
17
18
  const { typesMap } = functionState;
18
- // Validate that workflowService service is configured if workflows are defined
19
- const hasWorkflows = Object.keys(workflows.meta).length > 0;
19
+ // Get all workflow names (both DSL and graph-based)
20
+ const dslWorkflowNames = Object.keys(workflows.meta);
21
+ const graphWorkflowNames = Object.keys(workflows.graphMeta);
22
+ const allWorkflowNames = [
23
+ ...new Set([...dslWorkflowNames, ...graphWorkflowNames]),
24
+ ];
25
+ const hasWorkflows = allWorkflowNames.length > 0;
26
+ // Validate that workflowService is configured if workflows are defined
20
27
  if (hasWorkflows) {
21
28
  const hasWorkflowState = visitState.serviceAggregation.allSingletonServices.includes('workflowService');
22
29
  if (!hasWorkflowState) {
@@ -24,19 +31,50 @@ export const pikkuWorkflow = pikkuSessionlessFunc({
24
31
  throw new Error('WorkflowState service not configured but workflows are defined');
25
32
  }
26
33
  }
27
- await writeFileInDir(logger, workflowsWiringMetaJsonFile, JSON.stringify(serializeWorkflowMeta(workflows.meta), null, 2));
28
- const jsonImportPath = getFileImportRelativePath(workflowsWiringMetaFile, workflowsWiringMetaJsonFile, packageMappings);
29
- // Write workflow metadata TypeScript file that imports JSON
30
- await writeFileInDir(logger, workflowsWiringMetaFile, serializeWorkflowMetaTS(workflows.meta, jsonImportPath, schema?.supportsImportAttributes ?? false));
31
- // Write workflow wirings (imports and addWorkflow calls)
32
- await writeFileInDir(logger, workflowsWiringFile, serializeWorkflowWirings(workflowsWiringFile, workflows.files, packageMappings));
33
- // Write workflow types
34
+ // Generate individual JSON files for each workflow (convert DSL to graph format)
35
+ if (hasWorkflows && workflowMetaDir) {
36
+ // Write individual JSON files for DSL workflows
37
+ const dslMeta = workflows.meta;
38
+ for (const [name, meta] of Object.entries(dslMeta)) {
39
+ const graphMeta = convertDslToGraph(name, meta);
40
+ // Write minimal version (runtime-only fields)
41
+ const minimalMeta = stripVerboseFields(graphMeta);
42
+ const minimalPath = join(workflowMetaDir, `${name}.gen.json`);
43
+ await writeFileInDir(logger, minimalPath, JSON.stringify(minimalMeta, null, 2), { ignoreModifyComment: true });
44
+ // Write verbose version only if it has additional fields
45
+ if (hasVerboseFields(graphMeta)) {
46
+ const verbosePath = join(workflowMetaDir, `${name}-verbose.gen.json`);
47
+ await writeFileInDir(logger, verbosePath, JSON.stringify(graphMeta, null, 2), { ignoreModifyComment: true });
48
+ }
49
+ }
50
+ // Write individual JSON files for graph workflows
51
+ for (const [name, graphMeta] of Object.entries(workflows.graphMeta)) {
52
+ // Write minimal version (runtime-only fields)
53
+ const minimalMeta = stripVerboseFields(graphMeta);
54
+ const minimalPath = join(workflowMetaDir, `${name}.gen.json`);
55
+ await writeFileInDir(logger, minimalPath, JSON.stringify(minimalMeta, null, 2), { ignoreModifyComment: true });
56
+ // Write verbose version only if it has additional fields
57
+ if (hasVerboseFields(graphMeta)) {
58
+ const verbosePath = join(workflowMetaDir, `${name}-verbose.gen.json`);
59
+ await writeFileInDir(logger, verbosePath, JSON.stringify(graphMeta, null, 2), { ignoreModifyComment: true });
60
+ }
61
+ }
62
+ }
63
+ // Generate workflow meta aggregation file
64
+ if (workflowsWiringMetaFile && workflowMetaDir) {
65
+ await writeFileInDir(logger, workflowsWiringMetaFile, serializeWorkflowMeta(workflowsWiringMetaFile, workflowMetaDir, allWorkflowNames, packageMappings, schema?.supportsImportAttributes ?? false, config.externalPackageName));
66
+ }
67
+ // Generate workflow registration (meta + DSL workflow registrations)
68
+ const metaImportPath = getFileImportRelativePath(workflowsWiringFile, workflowsWiringMetaFile, packageMappings);
69
+ await writeFileInDir(logger, workflowsWiringFile, serializeWorkflowRegistration(workflowsWiringFile, metaImportPath, allWorkflowNames, workflows.files, workflows.graphFiles, packageMappings, config.externalPackageName));
70
+ // Generate workflow types (DSL + graph helpers in one file)
34
71
  const functionTypesImportPath = getFileImportRelativePath(workflowTypesFile, functionTypesFile, packageMappings);
35
- // Get RPC map import path
36
72
  const rpcMapImportPath = getFileImportRelativePath(workflowTypesFile, config.rpcInternalMapDeclarationFile, packageMappings);
37
73
  await writeFileInDir(logger, workflowTypesFile, serializeWorkflowTypes(functionTypesImportPath, rpcMapImportPath));
38
- // Write workflow map (type-safe client API)
74
+ // Generate workflow map (I/O types for type-safe client)
75
+ // Always generate even if empty - RPC map imports WorkflowMap
39
76
  await writeFileInDir(logger, workflowMapDeclarationFile, serializeWorkflowMap(workflowMapDeclarationFile, packageMappings, typesMap, functionState.meta, workflows.meta));
77
+ // Generate workflow workers if configured
40
78
  if (config.workflows) {
41
79
  if (config.workflows.singleQueue) {
42
80
  const workflowPath = join(config.rootDir, config.workflows.path);
@@ -48,12 +86,12 @@ export const pikkuWorkflow = pikkuSessionlessFunc({
48
86
  return false;
49
87
  }
50
88
  }
51
- return true;
89
+ return hasWorkflows;
52
90
  },
53
91
  middleware: [
54
92
  logCommandInfoAndTime({
55
- commandStart: 'Finding Workflows',
56
- commandEnd: 'Found Workflows',
93
+ commandStart: 'Generating Workflows',
94
+ commandEnd: 'Generated Workflows',
57
95
  }),
58
96
  ],
59
97
  });
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Generate workflow map type definitions for type-safe client API
3
+ */
1
4
  import type { WorkflowsMeta } from '@pikku/core/workflow';
2
5
  import { TypesMap } from '@pikku/inspector';
3
6
  import { FunctionsMeta } from '@pikku/core';
@@ -2,11 +2,18 @@ import { serializeImportMap } from '../../../utils/serialize-import-map.js';
2
2
  import { generateCustomTypes } from '../../../utils/custom-types-generator.js';
3
3
  export const serializeWorkflowMap = (relativeToPath, packageMappings, typesMap, functionsMeta, workflowsMeta) => {
4
4
  const requiredTypes = new Set();
5
- const serializedCustomTypes = generateCustomTypes(typesMap, requiredTypes);
5
+ // First generate workflows to collect required types
6
6
  const serializedWorkflows = generateWorkflows(workflowsMeta, functionsMeta, typesMap, requiredTypes);
7
- const serializedImportMap = serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes);
7
+ // Only generate custom types if we have workflows with types
8
+ const hasWorkflows = Object.keys(workflowsMeta).length > 0;
9
+ const serializedCustomTypes = hasWorkflows
10
+ ? generateCustomTypes(typesMap, requiredTypes)
11
+ : '';
12
+ const serializedImportMap = hasWorkflows
13
+ ? serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes)
14
+ : '';
8
15
  return `/**
9
- * This provides the structure needed for TypeScript to be aware of workflows and their input/output types
16
+ * Workflow type map with input/output types for each workflow
10
17
  */
11
18
 
12
19
  ${serializedImportMap}
@@ -19,38 +26,19 @@ interface WorkflowHandler<I, O> {
19
26
 
20
27
  ${serializedWorkflows}
21
28
 
22
- /**
23
- * Type-safe workflow client API
24
- */
25
29
  export type WorkflowClient<Name extends keyof WorkflowMap> = {
26
- /**
27
- * Start a new workflow run
28
- */
29
30
  start: (input: WorkflowMap[Name]['input']) => Promise<{ runId: string }>;
30
-
31
- /**
32
- * Get a workflow run by ID
33
- */
34
31
  getRun: <output extends keyof WorkflowMap[Name]>(runId: string) => Promise<WorkflowMap[Name][output]>;
35
-
36
- /**
37
- * Cancel a running workflow
38
- */
39
32
  cancelRun: (runId: string) => Promise<boolean>;
40
33
  }
41
34
 
42
- /**
43
- * Map of all registered workflows with type-safe client APIs
44
- */
45
35
  export type TypedWorkflowClients = {
46
36
  [Name in keyof WorkflowMap]: WorkflowClient<Name>;
47
37
  }
48
- `;
38
+ `;
49
39
  };
50
40
  function generateWorkflows(workflowsMeta, functionsMeta, typesMap, requiredTypes) {
51
- // Initialize an object to collect workflows
52
41
  const workflowsObj = {};
53
- // Iterate through workflow metadata
54
42
  for (const [workflowName, { pikkuFuncName }] of Object.entries(workflowsMeta)) {
55
43
  const functionMeta = functionsMeta[pikkuFuncName];
56
44
  if (!functionMeta) {
@@ -58,18 +46,28 @@ function generateWorkflows(workflowsMeta, functionsMeta, typesMap, requiredTypes
58
46
  }
59
47
  const input = functionMeta.inputs ? functionMeta.inputs[0] : undefined;
60
48
  const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined;
61
- // Store the input and output types for WorkflowHandler
62
- const inputType = input ? typesMap.getTypeMeta(input).uniqueName : 'void';
63
- const outputType = output ? typesMap.getTypeMeta(output).uniqueName : 'void';
49
+ let inputType = 'void';
50
+ if (input) {
51
+ try {
52
+ inputType = typesMap.getTypeMeta(input).uniqueName;
53
+ }
54
+ catch {
55
+ inputType = input;
56
+ }
57
+ }
58
+ let outputType = 'void';
59
+ if (output) {
60
+ try {
61
+ outputType = typesMap.getTypeMeta(output).uniqueName;
62
+ }
63
+ catch {
64
+ outputType = output;
65
+ }
66
+ }
64
67
  requiredTypes.add(inputType);
65
68
  requiredTypes.add(outputType);
66
- // Add workflow entry
67
- workflowsObj[workflowName] = {
68
- inputType,
69
- outputType,
70
- };
69
+ workflowsObj[workflowName] = { inputType, outputType };
71
70
  }
72
- // Build the Workflows object as a string
73
71
  let workflowsStr = 'export type WorkflowMap = {\n';
74
72
  for (const [workflowName, handler] of Object.entries(workflowsObj)) {
75
73
  workflowsStr += ` readonly '${workflowName}': WorkflowHandler<${handler.inputType}, ${handler.outputType}>,\n`;
@@ -1,3 +1 @@
1
- import { WorkflowsMeta } from '@pikku/core/workflow';
2
- export declare const serializeWorkflowMeta: (workflowsMeta: WorkflowsMeta) => WorkflowsMeta;
3
- export declare const serializeWorkflowMetaTS: (workflowsMeta: WorkflowsMeta, jsonImportPath: string, supportsImportAttributes: boolean) => string;
1
+ export declare const serializeWorkflowMeta: (outputPath: string, metaDir: string, workflowNames: string[], packageMappings: Record<string, string>, supportsImportAttributes: boolean, packageName?: string) => string;
@@ -1,20 +1,45 @@
1
- export const serializeWorkflowMeta = (workflowsMeta) => {
2
- return workflowsMeta;
3
- };
4
- export const serializeWorkflowMetaTS = (workflowsMeta, jsonImportPath, supportsImportAttributes) => {
5
- const importStatement = supportsImportAttributes
6
- ? `import metaData from '${jsonImportPath}' with { type: 'json' }`
7
- : `import metaData from '${jsonImportPath}'`;
8
- const serializedOutput = [];
9
- serializedOutput.push("import { pikkuState } from '@pikku/core'");
10
- serializedOutput.push("import { WorkflowsMeta } from '@pikku/core/workflow'");
11
- serializedOutput.push(importStatement);
12
- serializedOutput.push('');
13
- serializedOutput.push("pikkuState('workflows', 'meta', metaData as WorkflowsMeta)");
14
- serializedOutput.push('');
15
- const workflowsMetaValues = Object.values(workflowsMeta);
16
- if (workflowsMetaValues.length > 0) {
17
- serializedOutput.push(`export type WorkflowNames = '${workflowsMetaValues.map((w) => w.workflowName).join("' | '")}'`);
1
+ /**
2
+ * Generate workflow meta aggregation file that imports individual workflow JSON files
3
+ * and registers them with pikkuState
4
+ */
5
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
6
+ export const serializeWorkflowMeta = (outputPath, metaDir, workflowNames, packageMappings, supportsImportAttributes, packageName) => {
7
+ const lines = [];
8
+ if (workflowNames.length === 0) {
9
+ // Empty meta file - still need to register empty meta
10
+ lines.push("import { pikkuState } from '@pikku/core'");
11
+ lines.push("import type { SerializedWorkflowGraphs } from '@pikku/inspector/workflow-graph'");
12
+ lines.push('');
13
+ lines.push('const workflowsMeta: SerializedWorkflowGraphs = {}');
14
+ lines.push('');
15
+ const packageNameValue = packageName ? `'${packageName}'` : 'null';
16
+ lines.push(`pikkuState(${packageNameValue}, 'workflows', 'meta', workflowsMeta)`);
17
+ return lines.join('\n');
18
+ }
19
+ // Imports
20
+ lines.push("import { pikkuState } from '@pikku/core'");
21
+ lines.push("import type { SerializedWorkflowGraphs } from '@pikku/inspector/workflow-graph'");
22
+ lines.push('');
23
+ // Import each workflow meta JSON
24
+ const sortedNames = [...workflowNames].sort();
25
+ for (const name of sortedNames) {
26
+ const jsonPath = `${metaDir}/${name}.gen.json`;
27
+ const importPath = getFileImportRelativePath(outputPath, jsonPath, packageMappings);
28
+ const importStatement = supportsImportAttributes
29
+ ? `import ${name}Meta from '${importPath}' with { type: 'json' }`
30
+ : `import ${name}Meta from '${importPath}'`;
31
+ lines.push(importStatement);
32
+ }
33
+ lines.push('');
34
+ // Create aggregated meta object (cast JSON imports to proper types)
35
+ lines.push('const workflowsMeta = {');
36
+ for (const name of sortedNames) {
37
+ lines.push(` '${name}': ${name}Meta,`);
18
38
  }
19
- return serializedOutput.join('\n');
39
+ lines.push('} as SerializedWorkflowGraphs');
40
+ lines.push('');
41
+ // Register meta with pikkuState
42
+ const packageNameValue = packageName ? `'${packageName}'` : 'null';
43
+ lines.push(`pikkuState(${packageNameValue}, 'workflows', 'meta', workflowsMeta)`);
44
+ return lines.join('\n');
20
45
  };
@@ -0,0 +1,7 @@
1
+ export declare const serializeWorkflowRegistration: (outputPath: string, metaImportPath: string, workflowNames: string[], workflowFiles: Map<string, {
2
+ path: string;
3
+ exportedName: string;
4
+ }>, graphFiles: Map<string, {
5
+ path: string;
6
+ exportedName: string;
7
+ }>, packageMappings: Record<string, string>, _packageName?: string) => string;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Generate workflow runtime registration
3
+ * Imports meta (which registers with pikkuState) and registers DSL workflows (addWorkflow) and graph workflows (addWorkflowGraph)
4
+ */
5
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
6
+ export const serializeWorkflowRegistration = (outputPath, metaImportPath, workflowNames, workflowFiles, graphFiles, packageMappings, _packageName) => {
7
+ const lines = [];
8
+ const hasWorkflows = workflowNames.length > 0;
9
+ const hasDslWorkflows = workflowFiles.size > 0;
10
+ const hasGraphWorkflows = graphFiles.size > 0;
11
+ // Imports
12
+ const imports = [];
13
+ if (hasDslWorkflows) {
14
+ imports.push('addWorkflow');
15
+ }
16
+ if (hasGraphWorkflows) {
17
+ imports.push('addWorkflowGraph');
18
+ }
19
+ if (imports.length > 0) {
20
+ lines.push(`import { ${imports.join(', ')} } from '@pikku/core/workflow'`);
21
+ }
22
+ // Import meta file (which registers meta with pikkuState)
23
+ if (hasWorkflows) {
24
+ lines.push(`import '${metaImportPath}'`);
25
+ }
26
+ // Import DSL workflow functions
27
+ const sortedWorkflows = Array.from(workflowFiles.entries()).sort((a, b) => a[0].localeCompare(b[0]));
28
+ for (const [, { path, exportedName }] of sortedWorkflows) {
29
+ const importPath = getFileImportRelativePath(outputPath, path, packageMappings);
30
+ lines.push(`import { ${exportedName} } from '${importPath}'`);
31
+ }
32
+ // Import graph workflow definitions
33
+ const sortedGraphWorkflows = Array.from(graphFiles.entries()).sort((a, b) => a[0].localeCompare(b[0]));
34
+ for (const [, { path, exportedName }] of sortedGraphWorkflows) {
35
+ const importPath = getFileImportRelativePath(outputPath, path, packageMappings);
36
+ lines.push(`import { ${exportedName} } from '${importPath}'`);
37
+ }
38
+ lines.push('');
39
+ // Register DSL workflows
40
+ for (const [pikkuFuncName, { exportedName }] of sortedWorkflows) {
41
+ lines.push(`addWorkflow('${pikkuFuncName}', ${exportedName})`);
42
+ }
43
+ // Register graph workflows
44
+ for (const [workflowName, { exportedName }] of sortedGraphWorkflows) {
45
+ lines.push(`addWorkflowGraph('${workflowName}', ${exportedName})`);
46
+ }
47
+ // Export workflow names type
48
+ if (hasWorkflows) {
49
+ lines.push('');
50
+ lines.push(`export type WorkflowNames = '${workflowNames.join("' | '")}'`);
51
+ }
52
+ return lines.join('\n');
53
+ };
@@ -1,4 +1,6 @@
1
1
  /**
2
- * Generates type definitions for workflow wirings
2
+ * Generate all workflow type helpers for authoring workflows
3
+ * Combines DSL helpers (pikkuWorkflowFunc, pikkuWorkflowComplexFunc) and
4
+ * graph helpers (pikkuWorkflowGraph) with unified wireWorkflow
3
5
  */
4
6
  export declare const serializeWorkflowTypes: (functionTypesImportPath: string, rpcMapImportPath: string) => string;