@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,31 @@
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 { serializeCLITypes } from './serialize-cli-types.js';
6
+ import { checkRequiredTypes } from '../../../utils/check-required-types.js';
7
+ export const pikkuCLITypes = pikkuSessionlessFunc({
8
+ func: async ({ logger, config, getInspectorState }) => {
9
+ const { cliTypesFile, functionTypesFile, packageMappings } = config;
10
+ const visitState = await getInspectorState();
11
+ const functionTypesImportPath = getFileImportRelativePath(cliTypesFile, functionTypesFile, packageMappings);
12
+ // Check for required types
13
+ checkRequiredTypes(visitState.filesAndMethodsErrors, {
14
+ userSessionType: true,
15
+ sessionServiceType: true,
16
+ singletonServicesType: true,
17
+ });
18
+ const { userSessionType, singletonServicesType } = visitState.filesAndMethods;
19
+ if (!userSessionType || !singletonServicesType) {
20
+ throw new Error('Required types not found');
21
+ }
22
+ const content = serializeCLITypes(functionTypesImportPath, `import type { ${userSessionType.type} } from '${getFileImportRelativePath(cliTypesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(cliTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type);
23
+ await writeFileInDir(logger, cliTypesFile, content);
24
+ },
25
+ middleware: [
26
+ logCommandInfoAndTime({
27
+ commandStart: 'Creating CLI types',
28
+ commandEnd: 'Created CLI types',
29
+ }),
30
+ ],
31
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuCLI: any;
@@ -0,0 +1,22 @@
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
+ export const pikkuCLI = pikkuSessionlessFunc({
6
+ func: async ({ logger, config, getInspectorState }) => {
7
+ const visitState = await getInspectorState();
8
+ const { cliWiringsFile, cliWiringMetaFile, packageMappings } = config;
9
+ const { cli } = visitState;
10
+ // Generate CLI wirings file
11
+ await writeFileInDir(logger, cliWiringsFile, serializeFileImports('wireCLI', cliWiringsFile, cli.files, packageMappings));
12
+ // Generate CLI metadata file
13
+ await writeFileInDir(logger, cliWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('cli', 'meta', ${JSON.stringify(cli.meta, null, 2)})`);
14
+ return true;
15
+ },
16
+ middleware: [
17
+ logCommandInfoAndTime({
18
+ commandStart: 'Finding CLI commands',
19
+ commandEnd: 'Found CLI commands',
20
+ }),
21
+ ],
22
+ });
@@ -0,0 +1,11 @@
1
+ import { CLIProgramMeta } from '@pikku/core/cli';
2
+ import { Config } from '../../../../types/application-types.js';
3
+ /**
4
+ * Collect all unique renderer names from CLI metadata (populated by inspector)
5
+ */
6
+ export declare function collectRendererNames(programMeta: CLIProgramMeta): Set<string>;
7
+ /**
8
+ * Serializes a CLI-over-Channel client bootstrap file
9
+ * Similar to local CLI bootstrap but uses WebSocket connection
10
+ */
11
+ export declare function serializeChannelCLIClient(programName: string, programMeta: CLIProgramMeta, clientFile: string, config: Config, cliBootstrapPath: string, channelRoute?: string, renderersMeta?: Record<string, any>): string;
@@ -0,0 +1,131 @@
1
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
2
+ /**
3
+ * Collect all unique renderer names from CLI metadata (populated by inspector)
4
+ */
5
+ export function collectRendererNames(programMeta) {
6
+ const rendererNames = new Set();
7
+ // Add program-level default renderer
8
+ if (programMeta.defaultRenderName) {
9
+ rendererNames.add(programMeta.defaultRenderName);
10
+ }
11
+ // Recursively collect renderer names from commands
12
+ function collectFromCommand(command) {
13
+ if (command.renderName) {
14
+ rendererNames.add(command.renderName);
15
+ }
16
+ // Recursively process subcommands
17
+ if (command.subcommands) {
18
+ for (const subCommand of Object.values(command.subcommands)) {
19
+ collectFromCommand(subCommand);
20
+ }
21
+ }
22
+ }
23
+ // Process all commands
24
+ for (const command of Object.values(programMeta.commands)) {
25
+ collectFromCommand(command);
26
+ }
27
+ return rendererNames;
28
+ }
29
+ /**
30
+ * Build a renderers map for CLI commands
31
+ */
32
+ function buildRenderersMap(programMeta) {
33
+ const entries = [];
34
+ // Build map entries for each command that has a renderer
35
+ function addCommandRenderer(command, path) {
36
+ const commandId = path.join('.');
37
+ if (command.renderName) {
38
+ entries.push(` '${commandId}': ${command.renderName}`);
39
+ }
40
+ // Recursively process subcommands
41
+ if (command.subcommands) {
42
+ for (const [subName, subCommand] of Object.entries(command.subcommands)) {
43
+ addCommandRenderer(subCommand, [...path, subName]);
44
+ }
45
+ }
46
+ }
47
+ // Process all commands
48
+ for (const [commandName, command] of Object.entries(programMeta.commands)) {
49
+ addCommandRenderer(command, [commandName]);
50
+ }
51
+ if (entries.length === 0) {
52
+ return '{}';
53
+ }
54
+ return `{\n${entries.join(',\n')}\n }`;
55
+ }
56
+ /**
57
+ * Serializes a CLI-over-Channel client bootstrap file
58
+ * Similar to local CLI bootstrap but uses WebSocket connection
59
+ */
60
+ export function serializeChannelCLIClient(programName, programMeta, clientFile, config, cliBootstrapPath, channelRoute, renderersMeta) {
61
+ const capitalizedName = programName.charAt(0).toUpperCase() + programName.slice(1).replace(/-/g, '');
62
+ const finalChannelRoute = channelRoute || `/cli/${programName}`;
63
+ // Get relative import path to CLI bootstrap (for metadata)
64
+ const bootstrapImportPath = getFileImportRelativePath(clientFile, cliBootstrapPath, config.packageMappings);
65
+ // Collect all unique renderer names from CLI metadata (populated by inspector)
66
+ const rendererNames = collectRendererNames(programMeta);
67
+ // Generate renderer imports from their source files
68
+ let rendererImports = '';
69
+ if (rendererNames.size > 0 && renderersMeta) {
70
+ const importsByFile = new Map();
71
+ for (const rendererName of rendererNames) {
72
+ const meta = renderersMeta[rendererName];
73
+ if (meta?.exportedName && meta?.filePath) {
74
+ const relativePath = getFileImportRelativePath(clientFile, meta.filePath, config.packageMappings);
75
+ if (!importsByFile.has(relativePath)) {
76
+ importsByFile.set(relativePath, []);
77
+ }
78
+ importsByFile.get(relativePath).push(meta.exportedName);
79
+ }
80
+ }
81
+ // Generate import statements
82
+ for (const [path, names] of importsByFile) {
83
+ rendererImports += `import { ${names.join(', ')} } from '${path}'\n`;
84
+ }
85
+ }
86
+ // Build renderers map
87
+ const renderersMap = buildRenderersMap(programMeta);
88
+ // Determine default renderer
89
+ const defaultRendererCode = programMeta.defaultRenderName
90
+ ? `,\n defaultRenderer: ${programMeta.defaultRenderName}`
91
+ : '';
92
+ return `
93
+ import { executeCLIViaChannel } from '@pikku/core/cli/channel'
94
+ import { CorePikkuWebsocket } from '@pikku/websocket'
95
+ import '${bootstrapImportPath}'
96
+ ${rendererImports}
97
+ /**
98
+ * ${capitalizedName} CLI Client (via WebSocket Channel)
99
+ * Executes CLI commands over a WebSocket connection
100
+ */
101
+ export async function ${capitalizedName}CLIClient(
102
+ url: string,
103
+ args?: string[]
104
+ ): Promise<void> {
105
+ // Create WebSocket connection
106
+ const pikkuWS = new CorePikkuWebsocket(url)
107
+
108
+ // Register renderers for CLI commands
109
+ const renderers = ${renderersMap}
110
+
111
+ await executeCLIViaChannel({
112
+ programName: '${programName}',
113
+ pikkuWS,
114
+ args,
115
+ renderers${defaultRendererCode},
116
+ })
117
+ }
118
+
119
+ // Export as default for easy importing
120
+ export default ${capitalizedName}CLIClient
121
+
122
+ // For direct execution (if this file is run directly)
123
+ if (import.meta.url === \`file://\${process.argv[1]}\`) {
124
+ const url = process.env.PIKKU_WS_URL || 'ws://localhost:3000${finalChannelRoute}'
125
+ ${capitalizedName}CLIClient(url, process.argv.slice(2)).catch(error => {
126
+ console.error('Fatal error:', error.message)
127
+ process.exit(1)
128
+ })
129
+ }
130
+ `;
131
+ }
@@ -0,0 +1,9 @@
1
+ import { CLIProgramMeta } from '@pikku/core/cli';
2
+ /**
3
+ * Serializes a wireChannel call from CLI metadata
4
+ * This creates a WebSocket backend for all CLI commands
5
+ */
6
+ export declare function serializeChannelCLI(programName: string, programMeta: CLIProgramMeta, channelFile: string, functionFiles: Map<string, {
7
+ path: string;
8
+ exportedName: string;
9
+ }>, packageMappings: Record<string, string>, channelTypesFile: string, functionTypesFile: string, channelName?: string, channelRoute?: string): string;
@@ -0,0 +1,67 @@
1
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
2
+ /**
3
+ * Serializes a wireChannel call from CLI metadata
4
+ * This creates a WebSocket backend for all CLI commands
5
+ */
6
+ export function serializeChannelCLI(programName, programMeta, channelFile, functionFiles, packageMappings, channelTypesFile, functionTypesFile, channelName, channelRoute) {
7
+ const finalChannelName = channelName || `${programName}-cli`;
8
+ const finalChannelRoute = channelRoute || `/cli/${programName}`;
9
+ // Flatten all commands into a single routing map
10
+ const commandMap = {};
11
+ const collectCommands = (commands, path = []) => {
12
+ for (const [name, cmd] of Object.entries(commands)) {
13
+ const fullPath = [...path, name];
14
+ const commandKey = fullPath.join('.');
15
+ if (cmd.pikkuFuncName) {
16
+ commandMap[commandKey] = {
17
+ pikkuFuncName: cmd.pikkuFuncName,
18
+ };
19
+ }
20
+ // Recursively process subcommands
21
+ if (cmd.subcommands) {
22
+ collectCommands(cmd.subcommands, fullPath);
23
+ }
24
+ }
25
+ };
26
+ collectCommands(programMeta.commands);
27
+ // Generate the wireChannel call
28
+ const commandEntries = Object.entries(commandMap)
29
+ .map(([commandKey, { pikkuFuncName }]) => {
30
+ return ` '${commandKey}': ${pikkuFuncName}`;
31
+ })
32
+ .join(',\n');
33
+ // Generate imports from function file locations
34
+ const funcNames = [
35
+ ...new Set(Object.values(commandMap).map((v) => v.pikkuFuncName)),
36
+ ];
37
+ const imports = funcNames
38
+ .map((pikkuFuncName) => {
39
+ const fileInfo = functionFiles.get(pikkuFuncName);
40
+ if (!fileInfo) {
41
+ throw new Error(`Function not found in files map: ${pikkuFuncName}`);
42
+ }
43
+ const importPath = getFileImportRelativePath(channelFile, fileInfo.path, packageMappings);
44
+ return `import { ${fileInfo.exportedName} } from '${importPath}'`;
45
+ })
46
+ .join('\n');
47
+ // Get relative path to channel types file
48
+ const channelTypesPath = getFileImportRelativePath(channelFile, channelTypesFile, packageMappings);
49
+ return `/**
50
+ * WebSocket channel backend for '${programName}' CLI commands
51
+ */
52
+ import { wireChannel } from '${channelTypesPath}'
53
+ ${imports}
54
+
55
+ wireChannel({
56
+ name: '${finalChannelName}',
57
+ route: '${finalChannelRoute}',
58
+ auth: false,
59
+ onMessageWiring: {
60
+ command: {
61
+ ${commandEntries}
62
+ }
63
+ },
64
+ tags: ['cli', '${programName}']
65
+ })
66
+ `;
67
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generates type definitions for CLI wirings
3
+ */
4
+ export declare const serializeCLITypes: (functionTypesImportPath: string, userSessionTypeImport: string, userSessionTypeName: string, singletonServicesTypeImport: string, singletonServicesTypeName: string) => string;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Generates type definitions for CLI wirings
3
+ */
4
+ export const serializeCLITypes = (functionTypesImportPath, userSessionTypeImport, userSessionTypeName, singletonServicesTypeImport, singletonServicesTypeName) => {
5
+ return `/**
6
+
7
+ * CLI-specific type definitions for tree-shaking optimization
8
+ */
9
+
10
+ import { CoreCLI, wireCLI as wireCLICore, CorePikkuCLIRender, CoreCLICommandConfig } from '@pikku/core/cli'
11
+ import type { PikkuFunctionConfig, PikkuMiddleware } from '${functionTypesImportPath}'
12
+ ${userSessionTypeImport}
13
+ ${singletonServicesTypeImport}
14
+
15
+ ${singletonServicesTypeName !== 'SingletonServices' ? `type SingletonServices = ${singletonServicesTypeName}` : ''}
16
+ ${userSessionTypeName !== 'Session' ? `type Session = ${userSessionTypeName}` : ''}
17
+
18
+ /**
19
+ * Type-safe CLI renderer definition that can access your application's services.
20
+ * Use this to define custom renderers for CLI command output.
21
+ *
22
+ * @template Data - The output data type from the CLI command
23
+ * @template RequiredServices - The services required for this renderer
24
+ */
25
+ type PikkuCLIRender<Data, RequiredServices extends SingletonServices = SingletonServices> = CorePikkuCLIRender<Data, RequiredServices, Session>
26
+
27
+ /**
28
+ * CLI command configuration with project-specific types.
29
+ * Uses CoreCLICommandConfig from @pikku/core with local middleware and render types.
30
+ */
31
+ type CLICommandConfig<Func extends PikkuFunctionConfig<In, Out>, In = any, Out = any, Params extends string = string> = CoreCLICommandConfig<Func, PikkuMiddleware, PikkuCLIRender<any>, Params>
32
+
33
+ /**
34
+ * Type definition for CLI applications with commands and global options.
35
+ *
36
+ * @template Commands - Type describing the command structure
37
+ * @template GlobalOptions - Type for global CLI options
38
+ */
39
+ type CLIWiring<Commands extends Record<string, CoreCLICommandConfig<any, PikkuMiddleware, PikkuCLIRender<any>, any>>, GlobalOptions> = CoreCLI<Commands, GlobalOptions, PikkuMiddleware, PikkuCLIRender<any>>
40
+
41
+ /**
42
+ * Registers a CLI application with the Pikku framework.
43
+ * Creates command-line interfaces with type-safe commands and options.
44
+ *
45
+ * @template Commands - Type describing the command structure
46
+ * @template GlobalOptions - Type for global CLI options
47
+ * @param cli - CLI definition with program name, commands, and global options
48
+ */
49
+ export const wireCLI = <Commands extends Record<string, CoreCLICommandConfig<any, PikkuMiddleware, PikkuCLIRender<any>, any>>, GlobalOptions>(
50
+ cli: CLIWiring<Commands, GlobalOptions>
51
+ ) => {
52
+ wireCLICore(cli as any)
53
+ }
54
+
55
+ /**
56
+ * Creates a CLI command definition with automatic option inference from the function's input type.
57
+ * This allows TypeScript to automatically derive CLI options from the function signature.
58
+ *
59
+ * @template FuncConfig - The Pikku function config type
60
+ * @template Params - The parameters string literal type
61
+ * @param config - CLI command configuration
62
+ * @returns CLI command configuration with inferred types
63
+ */
64
+ export const pikkuCLICommand = <
65
+ FuncConfig extends PikkuFunctionConfig<any, any>,
66
+ Params extends string
67
+ >(
68
+ config: CLICommandConfig<FuncConfig, any, any, Params>
69
+ ): CoreCLICommandConfig<FuncConfig, PikkuMiddleware, PikkuCLIRender<any>, string> => {
70
+ return config as any
71
+ }
72
+ `;
73
+ };
@@ -0,0 +1,14 @@
1
+ import { Config } from '../../../../types/application-types.js';
2
+ /**
3
+ * Serializes the local (in-program) CLI bootstrap code
4
+ */
5
+ export declare function serializeLocalCLIBootstrap(programName: string, _programMeta: any, bootstrapFile: string, config: Config, pikkuConfigFactory: {
6
+ file: string;
7
+ variable: string;
8
+ }, singletonServicesFactory: {
9
+ file: string;
10
+ variable: string;
11
+ }, sessionServicesFactory: {
12
+ file: string;
13
+ variable: string;
14
+ }): string;
@@ -0,0 +1,51 @@
1
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
2
+ /**
3
+ * Serializes the local (in-program) CLI bootstrap code
4
+ */
5
+ export function serializeLocalCLIBootstrap(programName, _programMeta, bootstrapFile, config, pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory) {
6
+ const capitalizedName = programName.charAt(0).toUpperCase() + programName.slice(1).replace(/-/g, '');
7
+ // Get relative import paths
8
+ const pikkuConfigPath = getFileImportRelativePath(bootstrapFile, pikkuConfigFactory.file, config.packageMappings);
9
+ const singletonServicesPath = getFileImportRelativePath(bootstrapFile, singletonServicesFactory.file, config.packageMappings);
10
+ const sessionServicesPath = getFileImportRelativePath(bootstrapFile, sessionServicesFactory.file, config.packageMappings);
11
+ const cliBootstrapPath = getFileImportRelativePath(bootstrapFile, config.bootstrapFile, config.packageMappings);
12
+ return `
13
+ import { executeCLI, CLIError } from '@pikku/core/cli'
14
+ import { ${pikkuConfigFactory.variable} as createConfig } from '${pikkuConfigPath}'
15
+ import { ${singletonServicesFactory.variable} as createSingletonServices } from '${singletonServicesPath}'
16
+ import { ${sessionServicesFactory.variable} as createSessionServices } from '${sessionServicesPath}'
17
+ import '${cliBootstrapPath}'
18
+
19
+ /**
20
+ * ${capitalizedName} CLI function
21
+ * Handles command line arguments and executes the appropriate function
22
+ */
23
+ export async function ${capitalizedName}CLI(args: string[]): Promise<void> {
24
+ try {
25
+ await executeCLI({
26
+ programName: '${programName}',
27
+ args: args || process.argv.slice(2),
28
+ createConfig,
29
+ createSingletonServices,
30
+ createSessionServices,
31
+ })
32
+ } catch (error) {
33
+ if (error instanceof CLIError) {
34
+ process.exit(error.exitCode)
35
+ }
36
+ throw error
37
+ }
38
+ }
39
+
40
+ // Export as default for easy importing
41
+ export default ${capitalizedName}CLI
42
+
43
+ // For direct execution (if this file is run directly)
44
+ if (import.meta.url === \`file://\${process.argv[1]}\`) {
45
+ ${capitalizedName}CLI(process.argv.slice(2)).catch(error => {
46
+ console.error('Fatal error:', error.message)
47
+ process.exit(1)
48
+ })
49
+ }
50
+ `;
51
+ }
@@ -0,0 +1 @@
1
+ export declare const pikkuFetch: any;
@@ -0,0 +1,27 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { serializeFetchWrapper } from '../http/serialize-fetch-wrapper.js';
3
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
4
+ import { writeFileInDir } from '../../../utils/file-writer.js';
5
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
6
+ export const pikkuFetch = pikkuSessionlessFunc({
7
+ func: async ({ logger, config }) => {
8
+ const { fetchFile, httpMapDeclarationFile, packageMappings } = config;
9
+ // If fetchFile is not set, clean up any existing file and return
10
+ if (!fetchFile) {
11
+ logger.info({
12
+ message: "Skipping generating fetch wrapper since fetchFile isn't set in the pikku config.",
13
+ type: 'skip',
14
+ });
15
+ return;
16
+ }
17
+ const routesMapDeclarationPath = getFileImportRelativePath(fetchFile, httpMapDeclarationFile, packageMappings);
18
+ const content = [serializeFetchWrapper(routesMapDeclarationPath)];
19
+ await writeFileInDir(logger, fetchFile, content.join('\n'));
20
+ },
21
+ middleware: [
22
+ logCommandInfoAndTime({
23
+ commandStart: 'Generating fetch wrapper',
24
+ commandEnd: 'Generated fetch wrapper',
25
+ }),
26
+ ],
27
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctionTypesSplit: any;
@@ -0,0 +1,33 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
+ import { writeFileInDir } from '../../../utils/file-writer.js';
5
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
6
+ import { serializeFunctionTypes } from './serialize-function-types.js';
7
+ export const pikkuFunctionTypesSplit = pikkuSessionlessFunc({
8
+ func: async ({ logger, config, getInspectorState }) => {
9
+ const visitState = await getInspectorState();
10
+ const { functionTypesFile, packageMappings, rpcInternalMapDeclarationFile, servicesFile, } = config;
11
+ // Check for required types
12
+ checkRequiredTypes(visitState.filesAndMethodsErrors, {
13
+ userSessionType: true,
14
+ sessionServiceType: true,
15
+ singletonServicesType: true,
16
+ });
17
+ const { userSessionType, sessionServicesType, singletonServicesType, pikkuConfigType, } = visitState.filesAndMethods;
18
+ if (!userSessionType || !sessionServicesType || !singletonServicesType) {
19
+ throw new Error('Required types not found');
20
+ }
21
+ const configTypeImport = pikkuConfigType
22
+ ? `import type { ${pikkuConfigType.type} } from '${getFileImportRelativePath(functionTypesFile, pikkuConfigType.typePath, packageMappings)}'`
23
+ : '// Config type not found, will use fallback';
24
+ const content = serializeFunctionTypes(`import type { ${userSessionType.type} } from '${getFileImportRelativePath(functionTypesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, sessionServicesType.typePath, packageMappings)}'`, sessionServicesType.type, `import type { TypedPikkuRPC } from '${getFileImportRelativePath(functionTypesFile, rpcInternalMapDeclarationFile, packageMappings)}'`, `import type { RequiredSingletonServices, RequiredSessionServices } from '${getFileImportRelativePath(functionTypesFile, servicesFile, packageMappings)}'`, configTypeImport);
25
+ await writeFileInDir(logger, functionTypesFile, content);
26
+ },
27
+ middleware: [
28
+ logCommandInfoAndTime({
29
+ commandStart: 'Creating function types',
30
+ commandEnd: 'Created function types',
31
+ }),
32
+ ],
33
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctionTypes: any;
@@ -0,0 +1,18 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { writeFileInDir } from '../../../utils/file-writer.js';
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { serializePikkuTypesHub } from './serialize-pikku-types-hub.js';
6
+ export const pikkuFunctionTypes = pikkuSessionlessFunc({
7
+ func: async ({ logger, config }) => {
8
+ const { typesDeclarationFile: typesFile, packageMappings, functionTypesFile, httpTypesFile, channelsTypesFile, schedulersTypesFile, queueTypesFile, mcpTypesFile, cliTypesFile, } = config;
9
+ const content = serializePikkuTypesHub(getFileImportRelativePath(typesFile, functionTypesFile, packageMappings), getFileImportRelativePath(typesFile, httpTypesFile, packageMappings), getFileImportRelativePath(typesFile, channelsTypesFile, packageMappings), getFileImportRelativePath(typesFile, schedulersTypesFile, packageMappings), getFileImportRelativePath(typesFile, queueTypesFile, packageMappings), getFileImportRelativePath(typesFile, mcpTypesFile, packageMappings), getFileImportRelativePath(typesFile, cliTypesFile, packageMappings));
10
+ await writeFileInDir(logger, typesFile, content);
11
+ },
12
+ middleware: [
13
+ logCommandInfoAndTime({
14
+ commandStart: 'Creating api types hub',
15
+ commandEnd: 'Created api types hub',
16
+ }),
17
+ ],
18
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctions: any;
@@ -0,0 +1,26 @@
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 { generateRuntimeMeta, serializeFunctionImports, } from './serialize-function-imports.js';
5
+ export const pikkuFunctions = pikkuSessionlessFunc({
6
+ func: async ({ logger, config, getInspectorState }) => {
7
+ const { functions, rpc } = await getInspectorState();
8
+ const { functionsMetaFile, functionsMetaMinFile, functionsFile, packageMappings, } = config;
9
+ // Generate full metadata
10
+ await writeFileInDir(logger, functionsMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(functions.meta, null, 2)})`);
11
+ // Generate minimal metadata (runtime)
12
+ const runtimeMeta = generateRuntimeMeta(functions.meta);
13
+ await writeFileInDir(logger, functionsMetaMinFile, `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(runtimeMeta, null, 2)})`);
14
+ const hasRPCs = rpc.exposedFiles.size > 0 || rpc.internalFiles.size > 0;
15
+ if (hasRPCs) {
16
+ await writeFileInDir(logger, functionsFile, serializeFunctionImports(functionsFile, rpc.internalFiles, functions.meta, packageMappings));
17
+ }
18
+ return hasRPCs;
19
+ },
20
+ middleware: [
21
+ logCommandInfoAndTime({
22
+ commandStart: 'Serializing Pikku functions',
23
+ commandEnd: 'Serialized Pikku functions',
24
+ }),
25
+ ],
26
+ });
@@ -0,0 +1,2 @@
1
+ export declare const serializeServicesMap: (requiredServices: Set<string>, forceRequiredServices: string[] | undefined, servicesImport: string, sessionServicesImport: string) => string;
2
+ export declare const pikkuServices: any;
@@ -1,21 +1,20 @@
1
- import { getFileImportRelativePath, getPikkuFilesAndMethods, logCommandInfoAndTime, writeFileInDir, } from '../../utils.js';
2
- export const serializeServicesMap = (functionsMetaData, middlewareServices = [], servicesImport, sessionServicesImport) => {
3
- // Extract all unique services from all functions
4
- const usedServices = new Set();
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
+ import { writeFileInDir } from '../../../utils/file-writer.js';
5
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
6
+ export const serializeServicesMap = (requiredServices, forceRequiredServices = [], servicesImport, sessionServicesImport) => {
7
+ // Use pre-aggregated services from inspector state
8
+ // This includes services from:
9
+ // - Wired functions (HTTP, channels, queues, schedulers, MCP, CLI, RPC)
10
+ // - Middleware used by wired functions
11
+ // - Permissions used by wired functions
12
+ // - Session factories
13
+ const usedServices = new Set(requiredServices);
5
14
  // Internal services that are created internally and not via the create service script
6
15
  const internalServices = new Set(['rpc', 'mcp', 'channel', 'userSession']);
7
- for (const funcMeta of Object.values(functionsMetaData)) {
8
- if (funcMeta.services && Array.isArray(funcMeta.services.services)) {
9
- funcMeta.services.services.forEach((service) => {
10
- // Only include services that are not internal
11
- if (!internalServices.has(service)) {
12
- usedServices.add(service);
13
- }
14
- });
15
- }
16
- }
17
- // Add middleware services that might not be detected from function inspection
18
- middlewareServices.forEach((service) => {
16
+ // Add force-required services that might not be detected from function inspection
17
+ forceRequiredServices.forEach((service) => {
19
18
  if (!internalServices.has(service)) {
20
19
  usedServices.add(service);
21
20
  }
@@ -36,10 +35,6 @@ export const serializeServicesMap = (functionsMetaData, middlewareServices = [],
36
35
  // This will be resolved at compile time based on what's actually in the SingletonServices interface
37
36
  // We don't need to hardcode which services are singletons beyond the core framework ones
38
37
  const code = [
39
- '/**',
40
- ' * This file was generated by the @pikku/cli',
41
- ' */',
42
- '',
43
38
  servicesImport,
44
39
  sessionServicesImport,
45
40
  "import type { PikkuInteraction } from '@pikku/core'",
@@ -59,15 +54,27 @@ export const serializeServicesMap = (functionsMetaData, middlewareServices = [],
59
54
  ].join('\n');
60
55
  return code;
61
56
  };
62
- export const pikkuServices = async (logger, cliConfig, visitState) => {
63
- return await logCommandInfoAndTime(logger, 'Generating Pikku services map', 'Generated Pikku services map', [false], async () => {
64
- const { sessionServicesType, singletonServicesType } = await getPikkuFilesAndMethods(logger, visitState, cliConfig.packageMappings, cliConfig.typesDeclarationFile, {}, {
57
+ export const pikkuServices = pikkuSessionlessFunc({
58
+ func: async ({ logger, config, getInspectorState }) => {
59
+ const visitState = await getInspectorState();
60
+ // Check for required types
61
+ checkRequiredTypes(visitState.filesAndMethodsErrors, {
65
62
  sessionServiceType: true,
66
63
  singletonServicesType: true,
67
64
  });
68
- const servicesImport = `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(cliConfig.typesDeclarationFile, singletonServicesType.typePath, cliConfig.packageMappings)}'`;
69
- const sessionServicesImport = `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(cliConfig.typesDeclarationFile, sessionServicesType.typePath, cliConfig.packageMappings)}'`;
70
- const servicesCode = serializeServicesMap(visitState.functions.meta, cliConfig.middlewareServices, servicesImport, sessionServicesImport);
71
- await writeFileInDir(logger, cliConfig.servicesFile, servicesCode);
72
- });
73
- };
65
+ const { sessionServicesType, singletonServicesType } = visitState.filesAndMethods;
66
+ if (!sessionServicesType || !singletonServicesType) {
67
+ throw new Error('Required types not found: sessionServicesType or singletonServicesType');
68
+ }
69
+ const servicesImport = `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(config.typesDeclarationFile, singletonServicesType.typePath, config.packageMappings)}'`;
70
+ const sessionServicesImport = `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(config.typesDeclarationFile, sessionServicesType.typePath, config.packageMappings)}'`;
71
+ const servicesCode = serializeServicesMap(visitState.serviceAggregation.requiredServices, config.forceRequiredServices, servicesImport, sessionServicesImport);
72
+ await writeFileInDir(logger, config.servicesFile, servicesCode);
73
+ },
74
+ middleware: [
75
+ logCommandInfoAndTime({
76
+ commandStart: 'Generating Pikku services map',
77
+ commandEnd: 'Generated Pikku services map',
78
+ }),
79
+ ],
80
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctionTypes: any;