@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
@@ -1,19 +1,17 @@
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
5
  * Core function, middleware, and permission types for all wirings
6
6
  */
7
- import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup } from '@pikku/core';
7
+ import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, PikkuWire, PickRequired, ZodLike, CreateWireServices } from '@pikku/core';
8
8
  import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function';
9
- import { PikkuChannel } from '@pikku/core/channel';
10
- import { PikkuMCP } from '@pikku/core/mcp';
11
9
  import type { UserSession } from '../../types/application-types.d.js';
12
10
  import type { SingletonServices } from '../../types/application-types.d.js';
13
11
  import type { Services } from '../../types/application-types.d.js';
14
12
  import type { Config } from '../../types/application-types.d.js';
15
- import type { TypedPikkuRPC } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js';
16
- import type { RequiredSingletonServices, RequiredSessionServices } from '../pikku-services.gen.js';
13
+ import type { TypedPikkuRPC, FlattenedRPCMap } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js';
14
+ import type { RequiredSingletonServices, RequiredWireServices } from '../pikku-services.gen.js';
17
15
  type Session = UserSession;
18
16
  /**
19
17
  * Type-safe API permission definition that integrates with your application's session type.
@@ -22,14 +20,14 @@ type Session = UserSession;
22
20
  * @template In - The input type that the permission check will receive
23
21
  * @template RequiredServices - The services required for this permission check
24
22
  */
25
- export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session>;
23
+ export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, PikkuWire<In, never, false, Session>>;
26
24
  /**
27
25
  * Type-safe middleware definition that can access your application's services and session.
28
26
  * Use this to define reusable middleware that can be applied to multiple wirings.
29
27
  *
30
28
  * @template RequiredServices - The services required for this middleware
31
29
  */
32
- export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices, Session>;
30
+ export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices>;
33
31
  /**
34
32
  * Configuration object for creating a permission with metadata
35
33
  */
@@ -48,7 +46,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
48
46
  * @example
49
47
  * ```typescript
50
48
  * // Direct function syntax
51
- * const permission = pikkuPermission(({ logger }, data, session) => {
49
+ * const permission = pikkuPermission(async ({ logger }, data, { session }) => {
50
+ * const session = await session?.get()
52
51
  * return session?.role === 'admin'
53
52
  * })
54
53
  *
@@ -56,7 +55,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
56
55
  * const adminPermission = pikkuPermission({
57
56
  * name: 'Admin Permission',
58
57
  * description: 'Checks if user has admin role',
59
- * func: async ({ logger }, data, session) => {
58
+ * func: async ({ logger }, data, { session }) => {
59
+ * const session = await session?.get()
60
60
  * return session?.role === 'admin'
61
61
  * }
62
62
  * })
@@ -81,7 +81,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
81
81
  * @example
82
82
  * ```typescript
83
83
  * // Direct function syntax
84
- * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
84
+ * const middleware = pikkuMiddleware(({ logger }, wires, next) => {
85
85
  * logger.info('Middleware executed')
86
86
  * await next()
87
87
  * })
@@ -90,7 +90,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
90
90
  * const logMiddleware = pikkuMiddleware({
91
91
  * name: 'Request Logger',
92
92
  * description: 'Logs all incoming requests',
93
- * func: async ({ logger }, interactions, next) => {
93
+ * func: async ({ logger }, wires, next) => {
94
94
  * logger.info('Request started')
95
95
  * await next()
96
96
  * }
@@ -108,7 +108,7 @@ export declare const pikkuMiddleware: <RequiredServices extends SingletonService
108
108
  * message,
109
109
  * level = 'info'
110
110
  * }) => {
111
- * return pikkuMiddleware(async ({ logger }, _interaction, next) => {
111
+ * return pikkuMiddleware(async ({ logger }, next) => {
112
112
  * logger[level](message)
113
113
  * await next()
114
114
  * })
@@ -125,8 +125,8 @@ export declare const pikkuMiddlewareFactory: <In = any>(factory: (input: In) =>
125
125
  * export const requireRole = pikkuPermissionFactory<{ role: string }>(({
126
126
  * role
127
127
  * }) => {
128
- * return pikkuPermission(async ({ logger }, data, session) => {
129
- * if (!session || session.role !== role) {
128
+ * return pikkuPermission(async ({ logger }, data, { initialSession }) => {
129
+ * if (!initialSession || initialSession.role !== role) {
130
130
  * logger.warn(`Permission denied: required role '${role}'`)
131
131
  * return false
132
132
  * }
@@ -142,116 +142,141 @@ export declare const pikkuPermissionFactory: <In = any>(factory: (input: In) =>
142
142
  *
143
143
  * @template In - The input type
144
144
  * @template Out - The output type that the function returns
145
- * @template ChannelData - Channel data type (null = optional channel)
146
- * @template MCPData - MCP data type (null = optional MCP)
147
145
  * @template RequiredServices - Services required by this function
148
146
  */
149
- export type PikkuFunctionSessionless<In = unknown, Out = never, ChannelData = null, // null means optional channel
150
- MCPData = null, // null means optional MCP
151
- RequiredServices extends Services = Omit<Services, 'rpc' | 'channel' | 'mcp'> & {
152
- rpc: TypedPikkuRPC;
153
- } & ([
154
- ChannelData
155
- ] extends [null] ? {
156
- channel?: PikkuChannel<unknown, Out>;
157
- } : {
158
- channel: PikkuChannel<ChannelData, Out>;
159
- }) & ([MCPData] extends [null] ? {
160
- mcp?: PikkuMCP;
161
- } : {
162
- mcp: PikkuMCP;
163
- })> = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>;
147
+ export type PikkuFunctionSessionless<In = unknown, Out = never, RequiredWires extends keyof PikkuWire = never, RequiredServices extends Services = Services> = CorePikkuFunctionSessionless<In, Out, RequiredServices, PickRequired<PikkuWire<In, Out, false, Session, TypedPikkuRPC, null, any>, RequiredWires>>;
164
148
  /**
165
149
  * A session-aware API function that requires user authentication.
166
150
  * Use this for protected endpoints that need access to user session data.
167
151
  *
168
152
  * @template In - The input type
169
153
  * @template Out - The output type that the function returns
170
- * @template ChannelData - Channel data type (null = optional channel)
171
- * @template MCPData - MCP data type (null = optional MCP)
172
154
  * @template RequiredServices - Services required by this function
173
155
  */
174
- export type PikkuFunction<In = unknown, Out = never, ChannelData = null, // null means optional channel
175
- MCPData = null, // null means optional MCP
176
- RequiredServices extends Services = Omit<Services, 'rpc' | 'channel' | 'mcp'> & {
177
- rpc: TypedPikkuRPC;
178
- } & ([
179
- ChannelData
180
- ] extends [null] ? {
181
- channel?: PikkuChannel<unknown, Out>;
182
- } : {
183
- channel: PikkuChannel<ChannelData, Out>;
184
- }) & ([MCPData] extends [null] ? {
185
- mcp?: PikkuMCP;
186
- } : {
187
- mcp: PikkuMCP;
188
- })> = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>;
156
+ export type PikkuFunction<In = unknown, Out = never, RequiredWires extends keyof PikkuWire = 'session', RequiredServices extends Services = Services> = CorePikkuFunction<In, Out, RequiredServices, PickRequired<PikkuWire<In, Out, true, Session, TypedPikkuRPC, null, any>, RequiredWires>>;
157
+ /**
158
+ * Helper type to infer the output type from a Zod schema
159
+ */
160
+ export type InferZodOutput<T> = T extends ZodLike<infer U> ? U : never;
189
161
  /**
190
162
  * Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
191
163
  * This type wraps CorePikkuFunctionConfig with the user's custom types.
192
164
  *
193
165
  * @template In - The input type
194
166
  * @template Out - The output type
195
- * @template ChannelData - Channel data type
196
- * @template MCPData - MCP data type
197
167
  * @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
198
168
  */
199
- export type PikkuFunctionConfig<In = unknown, Out = unknown, ChannelData = unknown, MCPData = unknown, PikkuFunc extends PikkuFunction<In, Out, ChannelData, MCPData> | PikkuFunctionSessionless<In, Out, ChannelData, MCPData> = PikkuFunction<In, Out, ChannelData, MCPData> | PikkuFunctionSessionless<In, Out, ChannelData, MCPData>> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>;
169
+ export type PikkuFunctionConfig<In = unknown, Out = unknown, RequiredWires extends keyof PikkuWire = never, PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires>, InputSchema extends ZodLike | undefined = undefined, OutputSchema extends ZodLike | undefined = undefined> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware, InputSchema, OutputSchema>;
170
+ /**
171
+ * Configuration object for Pikku functions with Zod schema validation.
172
+ * Use this when you want to define input/output schemas using Zod.
173
+ * Types are automatically inferred from the schemas.
174
+ */
175
+ export type PikkuFunctionConfigWithSchema<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined, RequiredWires extends keyof PikkuWire = never> = {
176
+ name?: string;
177
+ tags?: string[];
178
+ expose?: boolean;
179
+ internal?: boolean;
180
+ func: PikkuFunction<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, RequiredWires> | PikkuFunctionSessionless<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, RequiredWires>;
181
+ auth?: boolean;
182
+ permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>;
183
+ middleware?: PikkuMiddleware[];
184
+ input: InputSchema;
185
+ output?: OutputSchema;
186
+ };
200
187
  /**
201
188
  * Creates a Pikku function that can be either session-aware or sessionless.
202
189
  * This is the main function wrapper for creating API endpoints.
203
190
  *
204
- * @template In - Input type for the function
205
- * @template Out - Output type for the function
191
+ * Supports two patterns:
192
+ * 1. Generic types: `pikkuFunc<Input, Output>({ func: ... })`
193
+ * 2. Zod schemas: `pikkuFunc({ input: z.object(...), output: z.object(...), func: ... })`
194
+ *
195
+ * @template In - Input type for the function (inferred from schema if provided)
196
+ * @template Out - Output type for the function (inferred from schema if provided)
206
197
  * @param func - Function definition, either direct function or configuration object
207
198
  * @returns The normalized configuration object
208
199
  *
209
200
  * @example
210
- * \`\`\`typescript
211
- * const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
212
- * func: async ({db, logger}, input) => {
213
- * logger.info('Creating user', input.name)
201
+ * ```typescript
202
+ * // Pattern 1: Using generic types
203
+ * const createUser = pikkuFunc<{name: string, email: string}, {id: number}>({
204
+ * func: async ({db}, input) => {
214
205
  * const user = await db.users.create(input)
215
- * return {id: user.id, message: \`User \${input.name} created successfully\`}
216
- * },
217
- * auth: true
206
+ * return { id: user.id }
207
+ * }
218
208
  * })
219
- * \`\`\`
209
+ *
210
+ * // Pattern 2: Using Zod schemas (types inferred automatically)
211
+ * const createUserInput = z.object({ name: z.string(), email: z.string() })
212
+ * const createUserOutput = z.object({ id: z.number() })
213
+ *
214
+ * const createUser = pikkuFunc({
215
+ * input: createUserInput,
216
+ * output: createUserOutput,
217
+ * func: async ({db}, input) => {
218
+ * // input is typed as { name: string, email: string }
219
+ * const user = await db.users.create(input)
220
+ * return { id: user.id } // must match output schema
221
+ * }
222
+ * })
223
+ * ```
220
224
  */
221
- export declare const pikkuFunc: <In, Out = unknown>(func: PikkuFunction<In, Out> | CorePikkuFunctionConfig<PikkuFunction<In, Out>, PikkuPermission<In>, PikkuMiddleware>) => CorePikkuFunctionConfig<PikkuFunction<In, Out, null, null, Omit<Services, "rpc" | "channel" | "mcp"> & {
222
- rpc: TypedPikkuRPC;
223
- } & {
224
- channel?: PikkuChannel<unknown, Out> | undefined;
225
- } & {
226
- mcp?: PikkuMCP;
227
- }>, PikkuPermission<In, Services>, PikkuMiddleware<SingletonServices>>;
225
+ export declare function pikkuFunc<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined>(config: PikkuFunctionConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>;
226
+ export declare function pikkuFunc<In, Out = unknown>(func: PikkuFunction<In, Out, 'session' | 'rpc'> | PikkuFunctionConfig<In, Out, 'session' | 'rpc'>): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>;
227
+ /**
228
+ * Configuration object for sessionless Pikku functions with Zod schema validation.
229
+ */
230
+ export type PikkuFunctionSessionlessConfigWithSchema<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined, RequiredWires extends keyof PikkuWire = never> = {
231
+ name?: string;
232
+ description?: string;
233
+ tags?: string[];
234
+ expose?: boolean;
235
+ internal?: boolean;
236
+ func: PikkuFunctionSessionless<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, RequiredWires>;
237
+ auth?: boolean;
238
+ permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>;
239
+ middleware?: PikkuMiddleware[];
240
+ input: InputSchema;
241
+ output?: OutputSchema;
242
+ };
228
243
  /**
229
244
  * Creates a sessionless Pikku function that doesn't require user authentication.
230
245
  * Use this for public endpoints, webhooks, or background tasks.
231
246
  *
232
- * @template In - Input type for the function
233
- * @template Out - Output type for the function
247
+ * Supports two patterns:
248
+ * 1. Generic types: `pikkuSessionlessFunc<Input, Output>({ func: ... })`
249
+ * 2. Zod schemas: `pikkuSessionlessFunc({ input: z.object(...), func: ... })`
250
+ *
251
+ * @template In - Input type for the function (inferred from schema if provided)
252
+ * @template Out - Output type for the function (inferred from schema if provided)
234
253
  * @param func - Function definition, either direct function or configuration object
235
254
  * @returns The normalized configuration object
236
255
  *
237
256
  * @example
238
- * \`\`\`typescript
239
- * const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
257
+ * ```typescript
258
+ * // Pattern 1: Using generic types
259
+ * const healthCheck = pikkuSessionlessFunc<void, {status: string}>({
240
260
  * func: async ({logger}) => {
241
- * logger.info('Health check requested')
242
- * return {status: 'healthy', timestamp: new Date().toISOString()}
243
- * },
244
- * name: 'healthCheck'
261
+ * return { status: 'healthy' }
262
+ * }
263
+ * })
264
+ *
265
+ * // Pattern 2: Using Zod schemas
266
+ * const greetInput = z.object({ name: z.string() })
267
+ * const greetOutput = z.object({ message: z.string() })
268
+ *
269
+ * const greet = pikkuSessionlessFunc({
270
+ * input: greetInput,
271
+ * output: greetOutput,
272
+ * func: async (_services, { name }) => {
273
+ * return { message: `Hello, ${name}!` }
274
+ * }
245
275
  * })
246
- * \`\`\`
276
+ * ```
247
277
  */
248
- export declare const pikkuSessionlessFunc: <In, Out = unknown>(func: PikkuFunctionSessionless<In, Out> | CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>) => CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out, null, null, Omit<Services, "rpc" | "channel" | "mcp"> & {
249
- rpc: TypedPikkuRPC;
250
- } & {
251
- channel?: PikkuChannel<unknown, Out> | undefined;
252
- } & {
253
- mcp?: PikkuMCP;
254
- }>, PikkuPermission<In, Services>, PikkuMiddleware<SingletonServices>>;
278
+ export declare function pikkuSessionlessFunc<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined>(config: PikkuFunctionSessionlessConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>;
279
+ export declare function pikkuSessionlessFunc<In, Out = unknown>(func: PikkuFunctionSessionless<In, Out, 'session' | 'rpc'> | PikkuFunctionConfig<In, Out, 'session' | 'rpc'>): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>;
255
280
  /**
256
281
  * Creates a function that takes no input and returns no output.
257
282
  * Useful for health checks, triggers, or cleanup operations.
@@ -260,21 +285,37 @@ export declare const pikkuSessionlessFunc: <In, Out = unknown>(func: PikkuFuncti
260
285
  * @returns The normalized configuration object
261
286
  *
262
287
  * @example
263
- * \`\`\`typescript
288
+ * ```typescript
264
289
  * const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
265
290
  * logger.info('Starting cleanup of temporary files')
266
291
  * await fileSystem.deleteDirectory('/tmp/uploads')
267
292
  * logger.info('Cleanup completed')
268
293
  * })
269
- * \`\`\`
294
+ * ```
295
+ */
296
+ export declare const pikkuVoidFunc: (func: PikkuFunctionSessionless<void, void, "session" | "rpc"> | PikkuFunctionConfig<void, void, "session" | "rpc">) => PikkuFunctionConfig<void, void, "rpc" | "session", PikkuFunctionSessionless<void, void, "rpc" | "session", Services> | PikkuFunction<void, void, "rpc" | "session", Services>, undefined, undefined>;
297
+ /**
298
+ * Creates a wrapper function for external package functions that are exposed via RPC.
299
+ * This allows you to wire external functions to any wiring type (HTTP, queue, etc.)
300
+ * without type compatibility issues.
301
+ *
302
+ * @template Name - The RPC method name (must be a key in FlattenedRPCMap)
303
+ * @param rpcName - The name of the RPC method to invoke
304
+ * @returns A Pikku function that proxies calls to the external RPC method
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * // Wire an external function via HTTP
309
+ * wireHTTP({
310
+ * auth: false,
311
+ * method: 'get',
312
+ * route: '/external/hello',
313
+ * func: external('ext:hello'),
314
+ * tags: ['external'],
315
+ * })
316
+ * ```
270
317
  */
271
- export declare const pikkuVoidFunc: (func: PikkuFunctionSessionless<void, void> | CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void>, PikkuPermission<void>>) => CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void, null, null, Omit<Services, "rpc" | "channel" | "mcp"> & {
272
- rpc: TypedPikkuRPC;
273
- } & {
274
- channel?: PikkuChannel<unknown, void> | undefined;
275
- } & {
276
- mcp?: PikkuMCP;
277
- }>, PikkuPermission<void, Services>>;
318
+ export declare const external: <Name extends keyof FlattenedRPCMap>(rpcName: Name) => PikkuFunctionConfig<FlattenedRPCMap[Name]["input"], FlattenedRPCMap[Name]["output"], "session" | "rpc">;
278
319
  /**
279
320
  * Creates a Pikku config factory.
280
321
  * Use this to define your application's configuration factory.
@@ -313,22 +354,23 @@ export declare const pikkuConfig: (func: (variables?: any, ...args: any[]) => Pr
313
354
  */
314
355
  export declare const pikkuServices: (func: (config: Config, existingServices?: Partial<SingletonServices>) => Promise<RequiredSingletonServices>) => (config: Config, existingServices?: Partial<SingletonServices>) => Promise<RequiredSingletonServices>;
315
356
  /**
316
- * Creates a Pikku session services factory.
357
+ * Creates a Pikku wire services factory.
317
358
  * Use this to define services that are created per-request/session.
318
359
  *
319
- * @param func - Session services factory function
320
- * @returns The session services factory function
360
+ * @param func - Wire services factory function
361
+ * @returns The wire services factory function
321
362
  *
322
363
  * @example
323
364
  * ```typescript
324
- * export const createSessionServices = pikkuSessionServices(async (services, interaction, session) => {
365
+ * export const createWireServices = pikkuWireServices(async (services, wire) => {
366
+ * const session = await wire.session?.get()
325
367
  * return {
326
368
  * userCache: new UserCache(session?.userId)
327
369
  * }
328
370
  * })
329
371
  * ```
330
372
  */
331
- export declare const pikkuSessionServices: (func: (services: SingletonServices, interaction: any, session: Session | undefined) => Promise<RequiredSessionServices>) => (services: SingletonServices, interaction: any, session: Session | undefined) => Promise<RequiredSessionServices>;
373
+ export declare const pikkuWireServices: (func: (services: SingletonServices, wire: any) => Promise<RequiredWireServices>) => CreateWireServices;
332
374
  /**
333
375
  * Adds global middleware for a specific tag.
334
376
  *
@@ -1,5 +1,5 @@
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
5
  * Core function, middleware, and permission types for all wirings
@@ -12,7 +12,8 @@ import { addMiddleware as addMiddlewareCore, addPermission as addPermissionCore
12
12
  * @example
13
13
  * ```typescript
14
14
  * // Direct function syntax
15
- * const permission = pikkuPermission(({ logger }, data, session) => {
15
+ * const permission = pikkuPermission(async ({ logger }, data, { session }) => {
16
+ * const session = await session?.get()
16
17
  * return session?.role === 'admin'
17
18
  * })
18
19
  *
@@ -20,7 +21,8 @@ import { addMiddleware as addMiddlewareCore, addPermission as addPermissionCore
20
21
  * const adminPermission = pikkuPermission({
21
22
  * name: 'Admin Permission',
22
23
  * description: 'Checks if user has admin role',
23
- * func: async ({ logger }, data, session) => {
24
+ * func: async ({ logger }, data, { session }) => {
25
+ * const session = await session?.get()
24
26
  * return session?.role === 'admin'
25
27
  * }
26
28
  * })
@@ -36,7 +38,7 @@ export const pikkuPermission = (permission) => {
36
38
  * @example
37
39
  * ```typescript
38
40
  * // Direct function syntax
39
- * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
41
+ * const middleware = pikkuMiddleware(({ logger }, wires, next) => {
40
42
  * logger.info('Middleware executed')
41
43
  * await next()
42
44
  * })
@@ -45,7 +47,7 @@ export const pikkuPermission = (permission) => {
45
47
  * const logMiddleware = pikkuMiddleware({
46
48
  * name: 'Request Logger',
47
49
  * description: 'Logs all incoming requests',
48
- * func: async ({ logger }, interactions, next) => {
50
+ * func: async ({ logger }, wires, next) => {
49
51
  * logger.info('Request started')
50
52
  * await next()
51
53
  * }
@@ -65,7 +67,7 @@ export const pikkuMiddleware = (middleware) => {
65
67
  * message,
66
68
  * level = 'info'
67
69
  * }) => {
68
- * return pikkuMiddleware(async ({ logger }, _interaction, next) => {
70
+ * return pikkuMiddleware(async ({ logger }, next) => {
69
71
  * logger[level](message)
70
72
  * await next()
71
73
  * })
@@ -84,8 +86,8 @@ export const pikkuMiddlewareFactory = (factory) => {
84
86
  * export const requireRole = pikkuPermissionFactory<{ role: string }>(({
85
87
  * role
86
88
  * }) => {
87
- * return pikkuPermission(async ({ logger }, data, session) => {
88
- * if (!session || session.role !== role) {
89
+ * return pikkuPermission(async ({ logger }, data, { initialSession }) => {
90
+ * if (!initialSession || initialSession.role !== role) {
89
91
  * logger.warn(`Permission denied: required role '${role}'`)
90
92
  * return false
91
93
  * }
@@ -97,53 +99,12 @@ export const pikkuMiddlewareFactory = (factory) => {
97
99
  export const pikkuPermissionFactory = (factory) => {
98
100
  return factory;
99
101
  };
100
- /**
101
- * Creates a Pikku function that can be either session-aware or sessionless.
102
- * This is the main function wrapper for creating API endpoints.
103
- *
104
- * @template In - Input type for the function
105
- * @template Out - Output type for the function
106
- * @param func - Function definition, either direct function or configuration object
107
- * @returns The normalized configuration object
108
- *
109
- * @example
110
- * \`\`\`typescript
111
- * const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
112
- * func: async ({db, logger}, input) => {
113
- * logger.info('Creating user', input.name)
114
- * const user = await db.users.create(input)
115
- * return {id: user.id, message: \`User \${input.name} created successfully\`}
116
- * },
117
- * auth: true
118
- * })
119
- * \`\`\`
120
- */
121
- export const pikkuFunc = (func) => {
102
+ export function pikkuFunc(func) {
122
103
  return typeof func === 'function' ? { func } : func;
123
- };
124
- /**
125
- * Creates a sessionless Pikku function that doesn't require user authentication.
126
- * Use this for public endpoints, webhooks, or background tasks.
127
- *
128
- * @template In - Input type for the function
129
- * @template Out - Output type for the function
130
- * @param func - Function definition, either direct function or configuration object
131
- * @returns The normalized configuration object
132
- *
133
- * @example
134
- * \`\`\`typescript
135
- * const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
136
- * func: async ({logger}) => {
137
- * logger.info('Health check requested')
138
- * return {status: 'healthy', timestamp: new Date().toISOString()}
139
- * },
140
- * name: 'healthCheck'
141
- * })
142
- * \`\`\`
143
- */
144
- export const pikkuSessionlessFunc = (func) => {
104
+ }
105
+ export function pikkuSessionlessFunc(func) {
145
106
  return typeof func === 'function' ? { func } : func;
146
- };
107
+ }
147
108
  /**
148
109
  * Creates a function that takes no input and returns no output.
149
110
  * Useful for health checks, triggers, or cleanup operations.
@@ -152,17 +113,45 @@ export const pikkuSessionlessFunc = (func) => {
152
113
  * @returns The normalized configuration object
153
114
  *
154
115
  * @example
155
- * \`\`\`typescript
116
+ * ```typescript
156
117
  * const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
157
118
  * logger.info('Starting cleanup of temporary files')
158
119
  * await fileSystem.deleteDirectory('/tmp/uploads')
159
120
  * logger.info('Cleanup completed')
160
121
  * })
161
- * \`\`\`
122
+ * ```
162
123
  */
163
124
  export const pikkuVoidFunc = (func) => {
164
125
  return typeof func === 'function' ? { func } : func;
165
126
  };
127
+ /**
128
+ * Creates a wrapper function for external package functions that are exposed via RPC.
129
+ * This allows you to wire external functions to any wiring type (HTTP, queue, etc.)
130
+ * without type compatibility issues.
131
+ *
132
+ * @template Name - The RPC method name (must be a key in FlattenedRPCMap)
133
+ * @param rpcName - The name of the RPC method to invoke
134
+ * @returns A Pikku function that proxies calls to the external RPC method
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * // Wire an external function via HTTP
139
+ * wireHTTP({
140
+ * auth: false,
141
+ * method: 'get',
142
+ * route: '/external/hello',
143
+ * func: external('ext:hello'),
144
+ * tags: ['external'],
145
+ * })
146
+ * ```
147
+ */
148
+ export const external = (rpcName) => {
149
+ return {
150
+ func: (async (_services, data, { rpc }) => {
151
+ return rpc.invoke(rpcName, data);
152
+ })
153
+ };
154
+ };
166
155
  /**
167
156
  * Creates a Pikku config factory.
168
157
  * Use this to define your application's configuration factory.
@@ -201,22 +190,23 @@ export const pikkuConfig = (func) => func;
201
190
  */
202
191
  export const pikkuServices = (func) => func;
203
192
  /**
204
- * Creates a Pikku session services factory.
193
+ * Creates a Pikku wire services factory.
205
194
  * Use this to define services that are created per-request/session.
206
195
  *
207
- * @param func - Session services factory function
208
- * @returns The session services factory function
196
+ * @param func - Wire services factory function
197
+ * @returns The wire services factory function
209
198
  *
210
199
  * @example
211
200
  * ```typescript
212
- * export const createSessionServices = pikkuSessionServices(async (services, interaction, session) => {
201
+ * export const createWireServices = pikkuWireServices(async (services, wire) => {
202
+ * const session = await wire.session?.get()
213
203
  * return {
214
204
  * userCache: new UserCache(session?.userId)
215
205
  * }
216
206
  * })
217
207
  * ```
218
208
  */
219
- export const pikkuSessionServices = (func) => func;
209
+ export const pikkuWireServices = (func) => func;
220
210
  /**
221
211
  * Adds global middleware for a specific tag.
222
212
  *
@@ -241,7 +231,7 @@ export const pikkuSessionServices = (func) => func;
241
231
  * ```
242
232
  */
243
233
  export const addMiddleware = (tag, middleware) => {
244
- addMiddlewareCore(tag, middleware);
234
+ addMiddlewareCore(tag, middleware, null);
245
235
  };
246
236
  /**
247
237
  * Adds global permissions for a specific tag.
@@ -267,5 +257,5 @@ export const addMiddleware = (tag, middleware) => {
267
257
  * ```
268
258
  */
269
259
  export const addPermission = (tag, permissions) => {
270
- addPermissionCore(tag, permissions);
260
+ addPermissionCore(tag, permissions, null);
271
261
  };