@pikku/cli 0.9.15 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +91 -0
  2. package/.pikku/channel/pikku-channels-map.gen.d.ts +44 -0
  3. package/.pikku/channel/pikku-channels-meta.gen.ts +5 -0
  4. package/.pikku/channel/pikku-channels.gen.ts +4 -0
  5. package/.pikku/cli/pikku-cli-channel.gen.ts +34 -0
  6. package/.pikku/cli/pikku-cli-client.gen.ts +43 -0
  7. package/.pikku/cli/pikku-cli-types.gen.ts +70 -0
  8. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +145 -0
  9. package/.pikku/cli/pikku-cli-wirings.gen.ts +6 -0
  10. package/.pikku/cli/pikku-cli.gen.ts +41 -0
  11. package/.pikku/function/pikku-function-types.gen.ts +440 -0
  12. package/.pikku/function/pikku-functions-meta.gen.ts +845 -0
  13. package/.pikku/function/pikku-functions-meta.min.gen.ts +181 -0
  14. package/.pikku/function/pikku-functions.gen.ts +76 -0
  15. package/.pikku/http/pikku-http-types.gen.ts +86 -0
  16. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +43 -0
  17. package/.pikku/http/pikku-http-wirings-meta.gen.ts +13 -0
  18. package/.pikku/http/pikku-http-wirings.gen.ts +4 -0
  19. package/.pikku/mcp/pikku-mcp-types.gen.ts +140 -0
  20. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +7 -0
  21. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +4 -0
  22. package/.pikku/mcp/pikku-mcp.gen.json +5 -0
  23. package/.pikku/pikku-bootstrap.gen.ts +19 -0
  24. package/.pikku/pikku-services.gen.ts +20 -0
  25. package/.pikku/pikku-types.gen.ts +27 -0
  26. package/.pikku/pikku-websocket.gen.ts +76 -0
  27. package/.pikku/queue/pikku-queue-types.gen.ts +27 -0
  28. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +57 -0
  29. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -0
  30. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +4 -0
  31. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +47 -0
  32. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +82 -0
  33. package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +41 -0
  34. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +25 -0
  35. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -0
  36. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +4 -0
  37. package/.pikku/schemas/register.gen.ts +51 -0
  38. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  39. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  40. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  41. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  42. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  43. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  44. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  45. package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
  46. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  47. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  48. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  49. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  50. package/CHANGELOG.md +15 -0
  51. package/bin/pikku.ts +97 -14
  52. package/build.sh +53 -0
  53. package/cli.schema.json +1 -382
  54. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +56 -0
  55. package/dist/.pikku/channel/pikku-channel-types.gen.js +52 -0
  56. package/dist/.pikku/channel/pikku-channels-meta.gen.js +5 -0
  57. package/dist/.pikku/channel/pikku-channels.gen.d.ts +4 -0
  58. package/dist/.pikku/channel/pikku-channels.gen.js +5 -0
  59. package/dist/.pikku/cli/pikku-cli-channel.gen.d.ts +1 -0
  60. package/dist/.pikku/cli/pikku-cli-channel.gen.js +33 -0
  61. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +10 -0
  62. package/dist/.pikku/cli/pikku-cli-client.gen.js +34 -0
  63. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +52 -0
  64. package/dist/.pikku/cli/pikku-cli-types.gen.js +31 -0
  65. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.d.ts +1 -0
  66. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +145 -0
  67. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +5 -0
  68. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +6 -0
  69. package/dist/.pikku/cli/pikku-cli.gen.d.ts +10 -0
  70. package/dist/.pikku/cli/pikku-cli.gen.js +38 -0
  71. package/dist/.pikku/function/pikku-function-types.gen.d.ts +380 -0
  72. package/dist/.pikku/function/pikku-function-types.gen.js +271 -0
  73. package/dist/.pikku/function/pikku-functions-meta.gen.d.ts +1 -0
  74. package/dist/.pikku/function/pikku-functions-meta.gen.js +845 -0
  75. package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +1 -0
  76. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +181 -0
  77. package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
  78. package/dist/.pikku/function/pikku-functions.gen.js +75 -0
  79. package/dist/.pikku/http/pikku-http-types.gen.d.ts +68 -0
  80. package/dist/.pikku/http/pikku-http-types.gen.js +62 -0
  81. package/dist/.pikku/http/pikku-http-wirings-meta.gen.d.ts +1 -0
  82. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +13 -0
  83. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +4 -0
  84. package/dist/.pikku/http/pikku-http-wirings.gen.js +5 -0
  85. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +91 -0
  86. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +71 -0
  87. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.d.ts +1 -0
  88. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +7 -0
  89. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +4 -0
  90. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +5 -0
  91. package/dist/.pikku/pikku-bootstrap.gen.d.ts +19 -0
  92. package/dist/.pikku/pikku-bootstrap.gen.js +19 -0
  93. package/dist/.pikku/pikku-services.gen.d.ts +13 -0
  94. package/dist/.pikku/pikku-services.gen.js +5 -0
  95. package/dist/.pikku/pikku-types.gen.d.ts +13 -0
  96. package/dist/.pikku/pikku-types.gen.js +20 -0
  97. package/dist/.pikku/pikku-websocket.gen.d.ts +31 -0
  98. package/dist/.pikku/pikku-websocket.gen.js +49 -0
  99. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +23 -0
  100. package/dist/.pikku/queue/pikku-queue-types.gen.js +16 -0
  101. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +1 -0
  102. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +5 -0
  103. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +4 -0
  104. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +5 -0
  105. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
  106. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +41 -0
  107. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +21 -0
  108. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +16 -0
  109. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.d.ts +1 -0
  110. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +5 -0
  111. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +4 -0
  112. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +5 -0
  113. package/dist/.pikku/schemas/register.gen.d.ts +1 -0
  114. package/dist/.pikku/schemas/register.gen.js +28 -0
  115. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  116. package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  117. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  118. package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  119. package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  120. package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  121. package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  122. package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
  123. package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  124. package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  125. package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  126. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  127. package/dist/bin/pikku.js +63 -14
  128. package/dist/src/cli.wiring.d.ts +1 -0
  129. package/dist/src/cli.wiring.js +99 -0
  130. package/dist/src/functions/commands/all.d.ts +1 -0
  131. package/dist/src/functions/commands/all.js +114 -0
  132. package/dist/src/functions/commands/watch.d.ts +1 -0
  133. package/dist/src/functions/commands/watch.js +47 -0
  134. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -0
  135. package/dist/src/{runtimes → functions/runtimes}/nextjs/pikku-command-nextjs.js +33 -12
  136. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -0
  137. package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.js +2 -2
  138. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -0
  139. package/dist/src/functions/wirings/channels/pikku-channels.js +19 -0
  140. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -0
  141. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +19 -0
  142. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -0
  143. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +18 -0
  144. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -0
  145. package/dist/src/functions/wirings/channels/pikku-command-channels.js +20 -0
  146. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +1 -0
  147. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.js +27 -0
  148. package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +4 -0
  149. package/dist/src/functions/wirings/channels/serialize-channel-types.js +94 -0
  150. package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.js +6 -3
  151. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -0
  152. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +123 -0
  153. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -0
  154. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +31 -0
  155. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -0
  156. package/dist/src/functions/wirings/cli/pikku-command-cli.js +22 -0
  157. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +11 -0
  158. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +131 -0
  159. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +9 -0
  160. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +67 -0
  161. package/dist/src/functions/wirings/cli/serialize-cli-types.d.ts +4 -0
  162. package/dist/src/functions/wirings/cli/serialize-cli-types.js +73 -0
  163. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +14 -0
  164. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +51 -0
  165. package/dist/src/functions/wirings/fetch/index.d.ts +1 -0
  166. package/dist/src/functions/wirings/fetch/index.js +27 -0
  167. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -0
  168. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +33 -0
  169. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -0
  170. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +18 -0
  171. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -0
  172. package/dist/src/functions/wirings/functions/pikku-command-functions.js +26 -0
  173. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +2 -0
  174. package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.js +36 -29
  175. package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +1 -0
  176. package/dist/src/functions/wirings/functions/pikku-function-types.js +18 -0
  177. package/dist/src/functions/wirings/functions/schemas.d.ts +4 -0
  178. package/dist/src/functions/wirings/functions/schemas.js +20 -0
  179. package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.js +4 -21
  180. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +4 -0
  181. package/dist/src/functions/wirings/functions/serialize-function-types.js +443 -0
  182. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +4 -0
  183. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +30 -0
  184. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.d.ts +4 -2
  185. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.js +2 -2
  186. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -0
  187. package/dist/src/functions/wirings/http/pikku-command-http-map.js +18 -0
  188. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -0
  189. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +20 -0
  190. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -0
  191. package/dist/src/functions/wirings/http/pikku-command-http-types.js +19 -0
  192. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -0
  193. package/dist/src/functions/wirings/http/pikku-command-openapi.js +37 -0
  194. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -0
  195. package/dist/src/functions/wirings/http/pikku-http-routes.js +20 -0
  196. package/dist/src/functions/wirings/http/serialize-http-types.d.ts +4 -0
  197. package/dist/src/functions/wirings/http/serialize-http-types.js +89 -0
  198. package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.js +2 -2
  199. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -0
  200. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +23 -0
  201. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -0
  202. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +19 -0
  203. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -0
  204. package/dist/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.js +17 -5
  205. package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.d.ts +2 -2
  206. package/dist/src/functions/wirings/mcp/serialize-mcp-types.d.ts +4 -0
  207. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +143 -0
  208. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -0
  209. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +36 -0
  210. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +8 -0
  211. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +44 -0
  212. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.d.ts +2 -0
  213. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +43 -0
  214. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -0
  215. package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +28 -0
  216. package/dist/src/functions/wirings/permissions/serialize-permissions-imports.d.ts +2 -0
  217. package/dist/src/functions/wirings/permissions/serialize-permissions-imports.js +43 -0
  218. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -0
  219. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +18 -0
  220. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -0
  221. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +27 -0
  222. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -0
  223. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +19 -0
  224. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -0
  225. package/dist/src/functions/wirings/queue/pikku-command-queue.js +21 -0
  226. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -0
  227. package/dist/src/functions/wirings/queue/pikku-queue-map.js +18 -0
  228. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -0
  229. package/dist/src/functions/wirings/queue/pikku-queue.js +21 -0
  230. package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.js +2 -2
  231. package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.d.ts +1 -1
  232. package/dist/src/functions/wirings/queue/serialize-queue-types.d.ts +4 -0
  233. package/dist/src/functions/wirings/queue/serialize-queue-types.js +30 -0
  234. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -0
  235. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +27 -0
  236. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -0
  237. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +32 -0
  238. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -0
  239. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +20 -0
  240. package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.js +2 -2
  241. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -0
  242. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +19 -0
  243. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -0
  244. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +21 -0
  245. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.d.ts +4 -0
  246. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +28 -0
  247. package/dist/src/middleware/log-command-info-and-time.d.ts +13 -0
  248. package/dist/src/middleware/log-command-info-and-time.js +15 -0
  249. package/dist/src/services/cli-logger-forwarder.service.d.ts +30 -0
  250. package/dist/src/services/cli-logger-forwarder.service.js +64 -0
  251. package/dist/src/services/cli-logger.service.d.ts +23 -0
  252. package/dist/src/services/cli-logger.service.js +77 -0
  253. package/dist/src/services.d.ts +20 -0
  254. package/dist/src/services.js +162 -0
  255. package/dist/src/utils/check-required-types.d.ts +10 -0
  256. package/dist/src/utils/check-required-types.js +31 -0
  257. package/dist/src/utils/custom-types-generator.d.ts +2 -0
  258. package/dist/src/utils/custom-types-generator.js +43 -0
  259. package/dist/src/utils/file-import-path.d.ts +1 -0
  260. package/dist/src/utils/file-import-path.js +43 -0
  261. package/dist/src/utils/file-imports-serializer.d.ts +1 -0
  262. package/dist/src/utils/file-imports-serializer.js +13 -0
  263. package/dist/src/utils/file-writer.d.ts +9 -0
  264. package/dist/src/utils/file-writer.js +50 -0
  265. package/dist/src/utils/generate-bootstrap-file.d.ts +3 -0
  266. package/dist/src/utils/generate-bootstrap-file.js +21 -0
  267. package/dist/src/utils/get-cli-version.d.ts +5 -0
  268. package/dist/src/utils/get-cli-version.js +27 -0
  269. package/dist/src/utils/pikku-cli-config.d.ts +4 -0
  270. package/dist/src/utils/pikku-cli-config.js +224 -0
  271. package/dist/src/utils/pikku-files-and-methods.d.ts +21 -0
  272. package/dist/src/utils/pikku-files-and-methods.js +70 -0
  273. package/dist/src/{schema-generator.d.ts → utils/schema-generator.d.ts} +1 -1
  274. package/dist/src/{schema-generator.js → utils/schema-generator.js} +4 -3
  275. package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +1 -4
  276. package/dist/tsconfig.tsbuildinfo +1 -1
  277. package/package.json +13 -11
  278. package/pikku.config.json +26 -0
  279. package/src/cli.wiring.ts +102 -0
  280. package/src/functions/commands/all.ts +153 -0
  281. package/src/functions/commands/watch.ts +58 -0
  282. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +111 -0
  283. package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.ts +2 -2
  284. package/src/functions/wirings/channels/pikku-channels.ts +35 -0
  285. package/src/functions/wirings/channels/pikku-command-channel-types.ts +25 -0
  286. package/src/functions/wirings/channels/pikku-command-channels-map.ts +26 -0
  287. package/src/functions/wirings/channels/pikku-command-channels.ts +40 -0
  288. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +37 -0
  289. package/src/functions/wirings/channels/serialize-channel-types.ts +94 -0
  290. package/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.ts +6 -3
  291. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +216 -0
  292. package/src/functions/wirings/cli/pikku-command-cli-types.ts +48 -0
  293. package/src/functions/wirings/cli/pikku-command-cli.ts +39 -0
  294. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +171 -0
  295. package/src/functions/wirings/cli/serialize-channel-cli.ts +102 -0
  296. package/src/functions/wirings/cli/serialize-cli-types.ts +79 -0
  297. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +80 -0
  298. package/src/functions/wirings/fetch/index.ts +36 -0
  299. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +60 -0
  300. package/src/functions/wirings/functions/pikku-command-function-types.ts +43 -0
  301. package/src/functions/wirings/functions/pikku-command-functions.ts +59 -0
  302. package/src/functions/wirings/functions/pikku-command-services.ts +111 -0
  303. package/src/functions/wirings/functions/pikku-function-types.ts +43 -0
  304. package/src/functions/wirings/functions/schemas.ts +45 -0
  305. package/src/{wirings → functions/wirings}/functions/serialize-function-imports.ts +4 -30
  306. package/src/functions/wirings/functions/serialize-function-types.ts +453 -0
  307. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +38 -0
  308. package/src/{wirings → functions/wirings}/http/openapi-spec-generator.ts +5 -2
  309. package/src/functions/wirings/http/pikku-command-http-map.ts +27 -0
  310. package/src/functions/wirings/http/pikku-command-http-routes.ts +36 -0
  311. package/src/functions/wirings/http/pikku-command-http-types.ts +25 -0
  312. package/src/functions/wirings/http/pikku-command-openapi.ts +62 -0
  313. package/src/functions/wirings/http/pikku-http-routes.ts +35 -0
  314. package/src/functions/wirings/http/serialize-http-types.ts +89 -0
  315. package/src/{wirings → functions/wirings}/http/serialize-typed-http-map.ts +2 -2
  316. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +33 -0
  317. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +25 -0
  318. package/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.ts +50 -46
  319. package/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.ts +2 -2
  320. package/src/functions/wirings/mcp/serialize-mcp-types.ts +143 -0
  321. package/src/functions/wirings/middleware/pikku-command-middleware.ts +63 -0
  322. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +55 -0
  323. package/src/functions/wirings/middleware/serialize-middleware-imports.ts +78 -0
  324. package/src/functions/wirings/permissions/pikku-command-permissions.ts +49 -0
  325. package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +274 -0
  326. package/src/functions/wirings/permissions/serialize-permissions-imports.ts +78 -0
  327. package/src/functions/wirings/queue/pikku-command-queue-map.ts +26 -0
  328. package/src/functions/wirings/queue/pikku-command-queue-service.ts +37 -0
  329. package/src/functions/wirings/queue/pikku-command-queue-types.ts +25 -0
  330. package/src/functions/wirings/queue/pikku-command-queue.ts +41 -0
  331. package/src/functions/wirings/queue/pikku-queue-map.ts +26 -0
  332. package/src/functions/wirings/queue/pikku-queue.ts +41 -0
  333. package/src/{wirings → functions/wirings}/queue/serialize-queue-map.ts +2 -2
  334. package/src/{wirings → functions/wirings}/queue/serialize-queue-meta.ts +1 -1
  335. package/src/functions/wirings/queue/serialize-queue-types.ts +30 -0
  336. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +35 -0
  337. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +48 -0
  338. package/src/functions/wirings/rpc/pikku-command-rpc.ts +26 -0
  339. package/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.ts +2 -2
  340. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +25 -0
  341. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +41 -0
  342. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +28 -0
  343. package/src/middleware/log-command-info-and-time.ts +35 -0
  344. package/src/services/cli-logger-forwarder.service.ts +90 -0
  345. package/src/services/cli-logger.service.ts +93 -0
  346. package/src/services.ts +240 -0
  347. package/src/utils/check-required-types.ts +53 -0
  348. package/src/utils/custom-types-generator.ts +55 -0
  349. package/src/{utils.test.ts → utils/file-import-path.test.ts} +1 -1
  350. package/src/utils/file-import-path.ts +53 -0
  351. package/src/utils/file-imports-serializer.ts +25 -0
  352. package/src/utils/file-writer.ts +72 -0
  353. package/src/utils/generate-bootstrap-file.ts +43 -0
  354. package/src/utils/get-cli-version.ts +28 -0
  355. package/src/utils/pikku-cli-config.ts +327 -0
  356. package/src/utils/pikku-files-and-methods.ts +148 -0
  357. package/src/{schema-generator.ts → utils/schema-generator.ts} +10 -4
  358. package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +1 -5
  359. package/tsconfig.json +2 -2
  360. package/types/application-types.d.ts +23 -0
  361. package/types/config.d.ts +204 -0
  362. package/bin/pikku-all.ts +0 -349
  363. package/bin/pikku-fetch.ts +0 -27
  364. package/bin/pikku-nextjs.ts +0 -44
  365. package/bin/pikku-openapi.ts +0 -31
  366. package/bin/pikku-queue-service.ts +0 -28
  367. package/bin/pikku-rpc.ts +0 -28
  368. package/bin/pikku-schemas.ts +0 -31
  369. package/bin/pikku-websocket.ts +0 -28
  370. package/dist/bin/pikku-all.d.ts +0 -4
  371. package/dist/bin/pikku-all.js +0 -194
  372. package/dist/bin/pikku-fetch.d.ts +0 -4
  373. package/dist/bin/pikku-fetch.js +0 -19
  374. package/dist/bin/pikku-nextjs.d.ts +0 -4
  375. package/dist/bin/pikku-nextjs.js +0 -24
  376. package/dist/bin/pikku-openapi.d.ts +0 -2
  377. package/dist/bin/pikku-openapi.js +0 -19
  378. package/dist/bin/pikku-queue-service.d.ts +0 -4
  379. package/dist/bin/pikku-queue-service.js +0 -19
  380. package/dist/bin/pikku-rpc.d.ts +0 -4
  381. package/dist/bin/pikku-rpc.js +0 -19
  382. package/dist/bin/pikku-schemas.d.ts +0 -2
  383. package/dist/bin/pikku-schemas.js +0 -21
  384. package/dist/bin/pikku-websocket.d.ts +0 -4
  385. package/dist/bin/pikku-websocket.js +0 -19
  386. package/dist/src/inspector-glob.d.ts +0 -2
  387. package/dist/src/inspector-glob.js +0 -12
  388. package/dist/src/pikku-cli-config.d.ts +0 -56
  389. package/dist/src/pikku-cli-config.js +0 -203
  390. package/dist/src/pikku-command-schemas.d.ts +0 -2
  391. package/dist/src/pikku-command-schemas.js +0 -8
  392. package/dist/src/runtimes/nextjs/pikku-command-nextjs.d.ts +0 -2
  393. package/dist/src/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +0 -1
  394. package/dist/src/schemas.d.ts +0 -2
  395. package/dist/src/schemas.js +0 -8
  396. package/dist/src/serialize-pikku-types.d.ts +0 -4
  397. package/dist/src/serialize-pikku-types.js +0 -605
  398. package/dist/src/types.d.ts +0 -5
  399. package/dist/src/utils.d.ts +0 -60
  400. package/dist/src/utils.js +0 -248
  401. package/dist/src/wirings/channels/pikku-channels.d.ts +0 -2
  402. package/dist/src/wirings/channels/pikku-channels.js +0 -9
  403. package/dist/src/wirings/channels/pikku-command-channels-map.d.ts +0 -2
  404. package/dist/src/wirings/channels/pikku-command-channels-map.js +0 -8
  405. package/dist/src/wirings/channels/pikku-command-channels.d.ts +0 -2
  406. package/dist/src/wirings/channels/pikku-command-channels.js +0 -9
  407. package/dist/src/wirings/channels/pikku-command-websocket-typed.d.ts +0 -2
  408. package/dist/src/wirings/channels/pikku-command-websocket-typed.js +0 -15
  409. package/dist/src/wirings/fetch/index.d.ts +0 -2
  410. package/dist/src/wirings/fetch/index.js +0 -12
  411. package/dist/src/wirings/functions/pikku-command-function-types.d.ts +0 -2
  412. package/dist/src/wirings/functions/pikku-command-function-types.js +0 -13
  413. package/dist/src/wirings/functions/pikku-command-functions.d.ts +0 -2
  414. package/dist/src/wirings/functions/pikku-command-functions.js +0 -14
  415. package/dist/src/wirings/functions/pikku-command-services.d.ts +0 -3
  416. package/dist/src/wirings/functions/pikku-function-types.d.ts +0 -2
  417. package/dist/src/wirings/functions/pikku-function-types.js +0 -13
  418. package/dist/src/wirings/http/pikku-command-http-map.d.ts +0 -2
  419. package/dist/src/wirings/http/pikku-command-http-map.js +0 -8
  420. package/dist/src/wirings/http/pikku-command-http-routes.d.ts +0 -2
  421. package/dist/src/wirings/http/pikku-command-http-routes.js +0 -9
  422. package/dist/src/wirings/http/pikku-command-openapi.d.ts +0 -2
  423. package/dist/src/wirings/http/pikku-command-openapi.js +0 -20
  424. package/dist/src/wirings/http/pikku-http-routes.d.ts +0 -2
  425. package/dist/src/wirings/http/pikku-http-routes.js +0 -9
  426. package/dist/src/wirings/mcp/pikku-command-mcp-json.d.ts +0 -2
  427. package/dist/src/wirings/mcp/pikku-command-mcp-json.js +0 -13
  428. package/dist/src/wirings/mcp/pikku-command-mcp.d.ts +0 -2
  429. package/dist/src/wirings/queue/pikku-command-queue-map.d.ts +0 -2
  430. package/dist/src/wirings/queue/pikku-command-queue-map.js +0 -8
  431. package/dist/src/wirings/queue/pikku-command-queue-service.d.ts +0 -2
  432. package/dist/src/wirings/queue/pikku-command-queue-service.js +0 -15
  433. package/dist/src/wirings/queue/pikku-command-queue.d.ts +0 -2
  434. package/dist/src/wirings/queue/pikku-command-queue.js +0 -10
  435. package/dist/src/wirings/queue/pikku-queue-map.d.ts +0 -2
  436. package/dist/src/wirings/queue/pikku-queue-map.js +0 -8
  437. package/dist/src/wirings/queue/pikku-queue.d.ts +0 -2
  438. package/dist/src/wirings/queue/pikku-queue.js +0 -10
  439. package/dist/src/wirings/rpc/pikku-command-rpc-client.d.ts +0 -2
  440. package/dist/src/wirings/rpc/pikku-command-rpc-client.js +0 -15
  441. package/dist/src/wirings/rpc/pikku-command-rpc-map.d.ts +0 -3
  442. package/dist/src/wirings/rpc/pikku-command-rpc-map.js +0 -14
  443. package/dist/src/wirings/rpc/pikku-command-rpc.d.ts +0 -2
  444. package/dist/src/wirings/rpc/pikku-command-rpc.js +0 -8
  445. package/dist/src/wirings/scheduler/pikku-command-scheduler.d.ts +0 -2
  446. package/dist/src/wirings/scheduler/pikku-command-scheduler.js +0 -10
  447. package/src/inspector-glob.ts +0 -30
  448. package/src/pikku-cli-config.ts +0 -387
  449. package/src/pikku-command-schemas.ts +0 -35
  450. package/src/runtimes/nextjs/pikku-command-nextjs.ts +0 -110
  451. package/src/schemas.ts +0 -35
  452. package/src/serialize-pikku-types.ts +0 -613
  453. package/src/types.ts +0 -16
  454. package/src/utils.ts +0 -420
  455. package/src/wirings/channels/pikku-channels.ts +0 -41
  456. package/src/wirings/channels/pikku-command-channels-map.ts +0 -26
  457. package/src/wirings/channels/pikku-command-channels.ts +0 -39
  458. package/src/wirings/channels/pikku-command-websocket-typed.ts +0 -36
  459. package/src/wirings/fetch/index.ts +0 -33
  460. package/src/wirings/functions/pikku-command-function-types.ts +0 -53
  461. package/src/wirings/functions/pikku-command-functions.ts +0 -48
  462. package/src/wirings/functions/pikku-command-services.ts +0 -125
  463. package/src/wirings/functions/pikku-function-types.ts +0 -52
  464. package/src/wirings/http/pikku-command-http-map.ts +0 -27
  465. package/src/wirings/http/pikku-command-http-routes.ts +0 -40
  466. package/src/wirings/http/pikku-command-openapi.ts +0 -55
  467. package/src/wirings/http/pikku-http-routes.ts +0 -40
  468. package/src/wirings/mcp/pikku-command-mcp-json.ts +0 -33
  469. package/src/wirings/queue/pikku-command-queue-map.ts +0 -26
  470. package/src/wirings/queue/pikku-command-queue-service.ts +0 -36
  471. package/src/wirings/queue/pikku-command-queue.ts +0 -45
  472. package/src/wirings/queue/pikku-queue-map.ts +0 -26
  473. package/src/wirings/queue/pikku-queue.ts +0 -43
  474. package/src/wirings/rpc/pikku-command-rpc-client.ts +0 -35
  475. package/src/wirings/rpc/pikku-command-rpc-map.ts +0 -49
  476. package/src/wirings/rpc/pikku-command-rpc.ts +0 -24
  477. package/src/wirings/scheduler/pikku-command-scheduler.ts +0 -43
  478. /package/dist/{src/types.js → .pikku/channel/pikku-channels-meta.gen.d.ts} +0 -0
  479. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.d.ts +0 -0
  480. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.js +0 -0
  481. /package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.d.ts +0 -0
  482. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.d.ts +0 -0
  483. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.js +0 -0
  484. /package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.d.ts +0 -0
  485. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.d.ts +0 -0
  486. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.js +0 -0
  487. /package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.d.ts +0 -0
  488. /package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.js +0 -0
  489. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.d.ts +0 -0
  490. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.js +0 -0
  491. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.d.ts +0 -0
  492. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.js +0 -0
  493. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.d.ts +0 -0
  494. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.js +0 -0
  495. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.d.ts +0 -0
  496. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.d.ts +0 -0
  497. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.js +0 -0
  498. /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
  499. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.ts +0 -0
  500. /package/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.ts +0 -0
  501. /package/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.ts +0 -0
  502. /package/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.ts +0 -0
  503. /package/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.ts +0 -0
  504. /package/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.ts +0 -0
@@ -0,0 +1,35 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
3
+ import { writeFileInDir } from '../../../utils/file-writer.js'
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
5
+
6
+ export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean>({
7
+ func: async ({ logger, config, getInspectorState }) => {
8
+ const visitState = await getInspectorState()
9
+ const { httpWiringsFile, httpWiringMetaFile, packageMappings } = config
10
+ const { http } = visitState
11
+
12
+ await writeFileInDir(
13
+ logger,
14
+ httpWiringsFile,
15
+ serializeFileImports(
16
+ 'wireHTTP',
17
+ httpWiringsFile,
18
+ http.files,
19
+ packageMappings
20
+ )
21
+ )
22
+ await writeFileInDir(
23
+ logger,
24
+ httpWiringMetaFile,
25
+ `import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`
26
+ )
27
+ return true
28
+ },
29
+ middleware: [
30
+ logCommandInfoAndTime({
31
+ commandStart: 'Finding HTTP routes',
32
+ commandEnd: 'Found HTTP routes',
33
+ }),
34
+ ],
35
+ })
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Generates type definitions for HTTP wirings
3
+ */
4
+ export const serializeHTTPTypes = (functionTypesImportPath: string) => {
5
+ return `/**
6
+ * HTTP-specific type definitions for tree-shaking optimization
7
+ */
8
+
9
+ import { AssertHTTPWiringParams, wireHTTP as wireHTTPCore, addHTTPMiddleware as addHTTPMiddlewareCore, addHTTPPermission as addHTTPPermissionCore } from '@pikku/core/http'
10
+ import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
11
+ import type { CoreHTTPFunctionWiring } from '@pikku/core/http'
12
+
13
+ /**
14
+ * Type definition for HTTP API wirings with type-safe path parameters.
15
+ * Supports both authenticated and unauthenticated functions.
16
+ *
17
+ * @template In - Input type for the HTTP wiring
18
+ * @template Out - Output type for the HTTP wiring
19
+ * @template Route - String literal type for the HTTP path (e.g., "/users/:id")
20
+ */
21
+ type HTTPWiring<In, Out, Route extends string> = CoreHTTPFunctionWiring<In, Out, Route, PikkuFunction<In, Out>, PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
22
+
23
+ /**
24
+ * Registers an HTTP wiring with the Pikku framework.
25
+ *
26
+ * @template In - Input type for the HTTP wiring
27
+ * @template Out - Output type for the HTTP wiring
28
+ * @template Route - String literal type for the HTTP path (e.g., "/users/:id")
29
+ * @param httpWiring - HTTP wiring definition with handler, method, and optional middleware
30
+ */
31
+ export const wireHTTP = <In, Out, Route extends string>(
32
+ httpWiring: HTTPWiring<In, Out, Route> & AssertHTTPWiringParams<In, Route>
33
+ ) => {
34
+ wireHTTPCore(httpWiring as any)
35
+ }
36
+
37
+ /**
38
+ * Registers HTTP middleware either globally or for a specific route pattern.
39
+ *
40
+ * When a string route pattern is provided along with middleware, the middleware
41
+ * is applied only to that route. Otherwise, if an array is provided, it is treated
42
+ * as global middleware (applied to all routes).
43
+ *
44
+ * @param routeOrMiddleware - Either a global middleware array or a route pattern string
45
+ * @param middleware - The middleware array to apply when a route pattern is specified
46
+ *
47
+ * @example
48
+ * \`\`\`typescript
49
+ * // Add global HTTP middleware
50
+ * addHTTPMiddleware([authMiddleware, loggingMiddleware])
51
+ *
52
+ * // Add route-specific middleware
53
+ * addHTTPMiddleware('/api/admin/*', [adminAuthMiddleware])
54
+ * \`\`\`
55
+ */
56
+ export const addHTTPMiddleware = (
57
+ routeOrMiddleware: PikkuMiddleware[] | string,
58
+ middleware?: PikkuMiddleware[]
59
+ ) => {
60
+ addHTTPMiddlewareCore(routeOrMiddleware as any, middleware as any)
61
+ }
62
+
63
+ /**
64
+ * Registers HTTP permissions either globally or for a specific route pattern.
65
+ *
66
+ * When a string route pattern is provided along with permissions, the permissions
67
+ * are applied only to that route. Permissions can be passed as an array or as a
68
+ * permission group object.
69
+ *
70
+ * @param pattern - Route pattern string (e.g., '*' for all routes, '/api/*' for specific routes)
71
+ * @param permissions - The permissions to apply for the specified route pattern
72
+ *
73
+ * @example
74
+ * \`\`\`typescript
75
+ * // Add global HTTP permissions
76
+ * addHTTPPermission('*', { global: globalPermission })
77
+ *
78
+ * // Add route-specific permissions
79
+ * addHTTPPermission('/api/admin/*', { admin: adminPermission })
80
+ * \`\`\`
81
+ */
82
+ export const addHTTPPermission = <In = unknown>(
83
+ pattern: string,
84
+ permissions: Record<string, PikkuPermission<In>> | PikkuPermission<In>[]
85
+ ) => {
86
+ addHTTPPermissionCore(pattern, permissions as any)
87
+ }
88
+ `
89
+ }
@@ -1,8 +1,8 @@
1
1
  import { HTTPWiringsMeta } from '@pikku/core/http'
2
- import { serializeImportMap } from '../../serialize-import-map.js'
2
+ import { serializeImportMap } from '../../../utils/serialize-import-map.js'
3
3
  import { MetaInputTypes, TypesMap } from '@pikku/inspector'
4
4
  import { FunctionsMeta } from '@pikku/core'
5
- import { generateCustomTypes } from '../../utils.js'
5
+ import { generateCustomTypes } from '../../../utils/custom-types-generator.js'
6
6
 
7
7
  export const serializeTypedHTTPWiringsMap = (
8
8
  relativeToPath: string,
@@ -0,0 +1,33 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { writeFileInDir } from '../../../utils/file-writer.js'
3
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
4
+ import { serializeMCPJson } from './serialize-mcp-json.js'
5
+
6
+ export const pikkuMCPJSON: any = pikkuSessionlessFunc<void, void>({
7
+ func: async ({ logger, config, getInspectorState }) => {
8
+ const { mcpEndpoints, functions } = await getInspectorState()
9
+ const { mcpJsonFile, schemaDirectory } = config
10
+
11
+ // Generate MCP JSON file
12
+ if (mcpJsonFile) {
13
+ const mcpJson = await serializeMCPJson(
14
+ logger,
15
+ schemaDirectory,
16
+ functions.meta,
17
+ functions.typesMap,
18
+ mcpEndpoints.resourcesMeta,
19
+ mcpEndpoints.toolsMeta,
20
+ mcpEndpoints.promptsMeta
21
+ )
22
+ await writeFileInDir(logger, mcpJsonFile, mcpJson, {
23
+ ignoreModifyComment: true,
24
+ })
25
+ }
26
+ },
27
+ middleware: [
28
+ logCommandInfoAndTime({
29
+ commandStart: 'Generating MCP JSON',
30
+ commandEnd: 'Generated MCP JSON',
31
+ }),
32
+ ],
33
+ })
@@ -0,0 +1,25 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { writeFileInDir } from '../../../utils/file-writer.js'
3
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
5
+ import { serializeMCPTypes } from './serialize-mcp-types.js'
6
+
7
+ export const pikkuMCPTypes: any = pikkuSessionlessFunc<void, void>({
8
+ func: async ({ logger, config }) => {
9
+ const { mcpTypesFile, functionTypesFile, packageMappings } = config
10
+
11
+ const functionTypesImportPath = getFileImportRelativePath(
12
+ mcpTypesFile,
13
+ functionTypesFile,
14
+ packageMappings
15
+ )
16
+ const content = serializeMCPTypes(functionTypesImportPath)
17
+ await writeFileInDir(logger, mcpTypesFile, content)
18
+ },
19
+ middleware: [
20
+ logCommandInfoAndTime({
21
+ commandStart: 'Creating MCP types',
22
+ commandEnd: 'Created MCP types',
23
+ }),
24
+ ],
25
+ })
@@ -1,9 +1,7 @@
1
- import {
2
- logCommandInfoAndTime,
3
- serializeFileImports,
4
- writeFileInDir,
5
- } from '../../utils.js'
6
- import { PikkuCommand } from '../../types.js'
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
3
+ import { writeFileInDir } from '../../../utils/file-writer.js'
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
7
5
  import { readFile } from 'fs/promises'
8
6
  import { join } from 'path'
9
7
 
@@ -60,51 +58,57 @@ const generateArgumentsFromSchema = async (
60
58
  }
61
59
  }
62
60
 
63
- export const pikkuMCP: PikkuCommand = async (
64
- logger,
65
- { mcpWiringsFile, mcpWiringsMetaFile, packageMappings, schemaDirectory },
66
- { mcpEndpoints, functions }
67
- ) => {
68
- return await logCommandInfoAndTime(
69
- logger,
70
- 'Finding MCP endpoints',
71
- 'Found MCP endpoints',
72
- [mcpEndpoints.files.size === 0],
73
- async () => {
74
- await writeFileInDir(
75
- logger,
61
+ export const pikkuMCP: any = pikkuSessionlessFunc<void, boolean | undefined>({
62
+ func: async ({ logger, config, getInspectorState }) => {
63
+ const { mcpEndpoints, functions } = await getInspectorState()
64
+ const {
65
+ mcpWiringsFile,
66
+ mcpWiringsMetaFile,
67
+ packageMappings,
68
+ schemaDirectory,
69
+ } = config
70
+
71
+ await writeFileInDir(
72
+ logger,
73
+ mcpWiringsFile,
74
+ serializeFileImports(
75
+ 'wireMCPResource or wireMCPTool',
76
76
  mcpWiringsFile,
77
- serializeFileImports(
78
- 'wireMCPResource or wireMCPTool',
79
- mcpWiringsFile,
80
- mcpEndpoints.files,
81
- packageMappings
82
- )
77
+ mcpEndpoints.files,
78
+ packageMappings
83
79
  )
80
+ )
84
81
 
85
- // Populate arguments for prompts meta before serializing
86
- const promptsMetaWithArguments = { ...mcpEndpoints.promptsMeta }
87
- for (const promptMeta of Object.values(promptsMetaWithArguments)) {
88
- const functionMeta = functions.meta[promptMeta.pikkuFuncName]
89
- if (functionMeta) {
90
- const inputType = functionMeta.inputs?.[0]
91
- promptMeta.arguments = await generateArgumentsFromSchema(
92
- inputType || null,
93
- schemaDirectory || '',
94
- functions.typesMap,
95
- logger
96
- )
97
- }
82
+ // Populate arguments for prompts meta before serializing
83
+ const promptsMetaWithArguments = { ...mcpEndpoints.promptsMeta }
84
+ for (const promptMeta of Object.values(promptsMetaWithArguments)) {
85
+ const functionMeta = functions.meta[promptMeta.pikkuFuncName]
86
+ if (functionMeta) {
87
+ const inputType = functionMeta.inputs?.[0]
88
+ promptMeta.arguments = await generateArgumentsFromSchema(
89
+ inputType || null,
90
+ schemaDirectory || '',
91
+ functions.typesMap,
92
+ logger
93
+ )
98
94
  }
95
+ }
99
96
 
100
- await writeFileInDir(
101
- logger,
102
- mcpWiringsMetaFile,
103
- `import { pikkuState } from '@pikku/core'
97
+ await writeFileInDir(
98
+ logger,
99
+ mcpWiringsMetaFile,
100
+ `import { pikkuState } from '@pikku/core'
104
101
  pikkuState('mcp', 'resourcesMeta', ${JSON.stringify(mcpEndpoints.resourcesMeta, null, 2)})
105
102
  pikkuState('mcp', 'toolsMeta', ${JSON.stringify(mcpEndpoints.toolsMeta, null, 2)})
106
103
  pikkuState('mcp', 'promptsMeta', ${JSON.stringify(promptsMetaWithArguments, null, 2)})`
107
- )
108
- }
109
- )
110
- }
104
+ )
105
+
106
+ return true
107
+ },
108
+ middleware: [
109
+ logCommandInfoAndTime({
110
+ commandStart: 'Finding MCP endpoints',
111
+ commandEnd: 'Found MCP endpoints',
112
+ }),
113
+ ],
114
+ })
@@ -1,9 +1,9 @@
1
1
  import { readFile } from 'fs/promises'
2
2
  import { join } from 'path'
3
- import { MCPResourceMeta, MCPToolMeta, MCPPromptMeta } from '@pikku/core'
3
+ import { MCPResourceMeta, MCPToolMeta, MCPPromptMeta } from '@pikku/core/mcp'
4
4
  import { FunctionsMeta, JSONValue } from '@pikku/core'
5
5
  import { TypesMap } from '@pikku/inspector'
6
- import { CLILogger } from '../../utils.js'
6
+ import { CLILogger } from '../../../services/cli-logger.service.js'
7
7
 
8
8
  interface MCPEndpoint {
9
9
  name: string
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Generates type definitions for MCP wirings
3
+ */
4
+ export const serializeMCPTypes = (functionTypesImportPath: string) => {
5
+ return `/**
6
+ * MCP-specific type definitions for tree-shaking optimization
7
+ */
8
+
9
+ import {
10
+ CoreMCPResource,
11
+ CoreMCPTool,
12
+ CoreMCPPrompt,
13
+ wireMCPResource as wireMCPResourceCore,
14
+ wireMCPTool as wireMCPToolCore,
15
+ wireMCPPrompt as wireMCPPromptCore,
16
+ MCPResourceResponse,
17
+ MCPToolResponse,
18
+ MCPPromptResponse,
19
+ AssertMCPResourceURIParams
20
+ } from '@pikku/core/mcp'
21
+
22
+ import type { PikkuFunctionConfig, PikkuFunctionSessionless } from '${functionTypesImportPath}'
23
+
24
+ /**
25
+ * Type definition for MCP resources that provide data to AI models.
26
+ *
27
+ * @template In - Input type for the resource request
28
+ * @template URI - URI template string type for compile-time parameter validation
29
+ */
30
+ type MCPResourceWiring<In, URI extends string> = CoreMCPResource<PikkuFunctionConfig<In, MCPResourceResponse>> & { uri: URI }
31
+
32
+ /**
33
+ * Type definition for MCP tools that AI models can invoke.
34
+ *
35
+ * @template In - Input type for the tool invocation
36
+ */
37
+ type MCPToolWiring<In> = CoreMCPTool<PikkuFunctionConfig<In, MCPToolResponse>>
38
+
39
+ /**
40
+ * Type definition for MCP prompts that provide templates to AI models.
41
+ *
42
+ * @template In - Input type for the prompt parameters
43
+ */
44
+ type MCPPromptWiring<In> = CoreMCPPrompt<PikkuFunctionConfig<In, MCPPromptResponse>>
45
+
46
+ /**
47
+ * Registers an MCP resource with the Pikku framework.
48
+ * Resources provide data that AI models can access.
49
+ *
50
+ * @template In - Input type for the resource request
51
+ * @template URI - URI template string for compile-time parameter validation
52
+ * @param mcpResource - MCP resource definition with data provider function
53
+ */
54
+ export const wireMCPResource = <In, URI extends string>(
55
+ mcpResource: MCPResourceWiring<In, URI> & AssertMCPResourceURIParams<In, URI>
56
+ ) => {
57
+ wireMCPResourceCore(mcpResource as any)
58
+ }
59
+
60
+ /**
61
+ * Registers an MCP tool with the Pikku framework.
62
+ * Tools are functions that AI models can invoke.
63
+ *
64
+ * @template In - Input type for the tool invocation
65
+ * @param mcpTool - MCP tool definition with action function
66
+ */
67
+ export const wireMCPTool = <In>(
68
+ mcpTool: MCPToolWiring<In>
69
+ ) => {
70
+ wireMCPToolCore(mcpTool as any)
71
+ }
72
+
73
+ /**
74
+ * Registers an MCP prompt with the Pikku framework.
75
+ * Prompts provide templates that AI models can use.
76
+ *
77
+ * @template In - Input type for the prompt parameters
78
+ * @param mcpPrompt - MCP prompt definition with template function
79
+ */
80
+ export const wireMCPPrompt = <In>(
81
+ mcpPrompt: MCPPromptWiring<In>
82
+ ) => {
83
+ wireMCPPromptCore(mcpPrompt as any)
84
+ }
85
+
86
+ /**
87
+ * Creates a function for handling MCP prompt requests.
88
+ * These functions generate prompt templates for AI models.
89
+ *
90
+ * @template In - Input type for the prompt parameters
91
+ * @param func - Function definition, either direct function or configuration object
92
+ * @returns The unwrapped function for internal use
93
+ */
94
+ export const pikkuMCPPromptFunc = <In>(
95
+ func:
96
+ | PikkuFunctionSessionless<In, MCPPromptResponse>
97
+ | {
98
+ func: PikkuFunctionSessionless<In, MCPPromptResponse>
99
+ name?: string
100
+ }
101
+ ): PikkuFunctionConfig<In, MCPPromptResponse> => {
102
+ return typeof func === 'function' ? { func } : func
103
+ }
104
+
105
+ /**
106
+ * Creates a function for handling MCP tool invocations.
107
+ * These functions perform actions that AI models can request.
108
+ *
109
+ * @template In - Input type for the tool invocation
110
+ * @param func - Function definition, either direct function or configuration object
111
+ * @returns The unwrapped function for internal use
112
+ */
113
+ export const pikkuMCPToolFunc = <In>(
114
+ func:
115
+ | PikkuFunctionSessionless<In, MCPToolResponse, null, true>
116
+ | {
117
+ func: PikkuFunctionSessionless<In, MCPToolResponse, null, true>
118
+ name?: string
119
+ }
120
+ ): PikkuFunctionConfig<In, MCPToolResponse> => {
121
+ return typeof func === 'function' ? { func } : func
122
+ }
123
+
124
+ /**
125
+ * Creates a function for handling MCP resource requests.
126
+ * These functions provide data that AI models can access.
127
+ *
128
+ * @template In - Input type for the resource request
129
+ * @param func - Function definition, either direct function or configuration object
130
+ * @returns The unwrapped function for internal use
131
+ */
132
+ export const pikkuMCPResourceFunc = <In>(
133
+ func:
134
+ | PikkuFunctionSessionless<In, MCPResourceResponse, null, true>
135
+ | {
136
+ func: PikkuFunctionSessionless<In, MCPResourceResponse, null, true>
137
+ name?: string
138
+ }
139
+ ): PikkuFunctionConfig<In, MCPResourceResponse> => {
140
+ return typeof func === 'function' ? { func } : func
141
+ }
142
+ `
143
+ }
@@ -0,0 +1,63 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { writeFileInDir } from '../../../utils/file-writer.js'
3
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
4
+ import { serializeMiddlewareImports } from './serialize-middleware-imports.js'
5
+ import { serializeMiddlewareGroupsMeta } from './serialize-middleware-groups-meta.js'
6
+
7
+ export const pikkuMiddleware: any = pikkuSessionlessFunc<
8
+ void,
9
+ boolean | undefined
10
+ >({
11
+ func: async ({ logger, config, getInspectorState }) => {
12
+ const state = await getInspectorState()
13
+ const { middleware } = state
14
+ const { middlewareFile, packageMappings } = config
15
+
16
+ let filesGenerated = false
17
+
18
+ // Check if there are any middleware group factories
19
+ const hasHTTPFactories = Array.from(
20
+ state.http.routeMiddleware.values()
21
+ ).some((meta) => meta.exportName && meta.isFactory)
22
+ const hasTagFactories = Array.from(
23
+ state.middleware.tagMiddleware.values()
24
+ ).some((meta) => meta.exportName && meta.isFactory)
25
+ const hasFactories = hasHTTPFactories || hasTagFactories
26
+
27
+ // Generate middleware imports file if there are factories
28
+ if (hasFactories) {
29
+ await writeFileInDir(
30
+ logger,
31
+ middlewareFile,
32
+ serializeMiddlewareImports(
33
+ middlewareFile,
34
+ middleware,
35
+ state.http,
36
+ packageMappings
37
+ )
38
+ )
39
+ filesGenerated = true
40
+ }
41
+
42
+ // Generate middleware groups metadata file
43
+ const hasHTTPGroups = state.http.routeMiddleware.size > 0
44
+ const hasTagGroups = state.middleware.tagMiddleware.size > 0
45
+
46
+ if (hasHTTPGroups || hasTagGroups) {
47
+ await writeFileInDir(
48
+ logger,
49
+ config.middlewareGroupsMetaFile,
50
+ serializeMiddlewareGroupsMeta(state)
51
+ )
52
+ filesGenerated = true
53
+ }
54
+
55
+ return filesGenerated
56
+ },
57
+ middleware: [
58
+ logCommandInfoAndTime({
59
+ commandStart: 'Serializing Pikku middleware',
60
+ commandEnd: 'Serialized Pikku middleware',
61
+ }),
62
+ ],
63
+ })
@@ -0,0 +1,55 @@
1
+ import type { InspectorState } from '@pikku/inspector'
2
+
3
+ /**
4
+ * Generates the middleware groups metadata file that stores metadata about
5
+ * tag-based and HTTP middleware groups for visualization and inspection.
6
+ *
7
+ * This includes services, middleware count, factory status, etc.
8
+ */
9
+ export const serializeMiddlewareGroupsMeta = (state: InspectorState) => {
10
+ const lines: string[] = [`import { pikkuState } from '@pikku/core'`, ``]
11
+
12
+ // Serialize HTTP middleware groups metadata
13
+ const httpGroups: Record<string, any> = {}
14
+ for (const [pattern, meta] of state.http.routeMiddleware.entries()) {
15
+ httpGroups[pattern] = {
16
+ exportName: meta.exportName,
17
+ sourceFile: meta.sourceFile,
18
+ position: meta.position,
19
+ services: meta.services,
20
+ middlewareCount: meta.middlewareCount,
21
+ isFactory: meta.isFactory,
22
+ }
23
+ }
24
+
25
+ if (Object.keys(httpGroups).length > 0) {
26
+ lines.push(`// HTTP middleware groups metadata`)
27
+ lines.push(
28
+ `pikkuState('middleware', 'httpGroupMeta', ${JSON.stringify(httpGroups, null, 2)})`
29
+ )
30
+ lines.push(``)
31
+ }
32
+
33
+ // Serialize tag middleware groups metadata
34
+ const tagGroups: Record<string, any> = {}
35
+ for (const [tag, meta] of state.middleware.tagMiddleware.entries()) {
36
+ tagGroups[tag] = {
37
+ exportName: meta.exportName,
38
+ sourceFile: meta.sourceFile,
39
+ position: meta.position,
40
+ services: meta.services,
41
+ middlewareCount: meta.middlewareCount,
42
+ isFactory: meta.isFactory,
43
+ }
44
+ }
45
+
46
+ if (Object.keys(tagGroups).length > 0) {
47
+ lines.push(`// Tag middleware groups metadata`)
48
+ lines.push(
49
+ `pikkuState('middleware', 'tagGroupMeta', ${JSON.stringify(tagGroups, null, 2)})`
50
+ )
51
+ lines.push(``)
52
+ }
53
+
54
+ return lines.join('\n')
55
+ }
@@ -0,0 +1,78 @@
1
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
2
+ import type {
3
+ InspectorMiddlewareState,
4
+ InspectorHTTPState,
5
+ InspectorState,
6
+ } from '@pikku/inspector'
7
+
8
+ export const serializeMiddlewareImports = (
9
+ outputPath: string,
10
+ middlewareState: InspectorMiddlewareState,
11
+ httpState: InspectorHTTPState,
12
+ packageMappings: Record<string, string> = {},
13
+ fullState?: InspectorState
14
+ ) => {
15
+ const serializedImports: string[] = []
16
+ const serializedFactoryCalls: string[] = []
17
+
18
+ // Collect factory imports and calls for HTTP middleware groups
19
+ const httpFactories = new Map<
20
+ string,
21
+ { exportName: string; filePath: string }
22
+ >()
23
+ for (const [, groupMeta] of httpState.routeMiddleware.entries()) {
24
+ if (groupMeta.exportName && groupMeta.isFactory) {
25
+ const filePath = getFileImportRelativePath(
26
+ outputPath,
27
+ groupMeta.sourceFile,
28
+ packageMappings
29
+ )
30
+ httpFactories.set(groupMeta.exportName, {
31
+ exportName: groupMeta.exportName,
32
+ filePath,
33
+ })
34
+ }
35
+ }
36
+
37
+ // Collect factory imports and calls for tag middleware groups
38
+ const tagFactories = new Map<
39
+ string,
40
+ { exportName: string; filePath: string }
41
+ >()
42
+ for (const [, groupMeta] of middlewareState.tagMiddleware.entries()) {
43
+ if (groupMeta.exportName && groupMeta.isFactory) {
44
+ const filePath = getFileImportRelativePath(
45
+ outputPath,
46
+ groupMeta.sourceFile,
47
+ packageMappings
48
+ )
49
+ tagFactories.set(groupMeta.exportName, {
50
+ exportName: groupMeta.exportName,
51
+ filePath,
52
+ })
53
+ }
54
+ }
55
+
56
+ // Combine all factories and deduplicate by exportName (same factory might be used in multiple groups)
57
+ const allFactories = new Map([...httpFactories, ...tagFactories])
58
+
59
+ // Add factory imports and calls
60
+ if (allFactories.size > 0) {
61
+ serializedImports.push(
62
+ '/* Call middleware group factories to register at module evaluation */'
63
+ )
64
+
65
+ // Import factories
66
+ for (const [exportName, { filePath }] of allFactories) {
67
+ serializedImports.push(`import { ${exportName} } from '${filePath}'`)
68
+ }
69
+
70
+ // Call factories
71
+ for (const [exportName] of allFactories) {
72
+ serializedFactoryCalls.push(`${exportName}()`)
73
+ }
74
+ }
75
+
76
+ // Return combined output
77
+ return [...serializedImports, ...serializedFactoryCalls].join('\n')
78
+ }