@pikku/cli 0.11.2 → 0.12.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 (538) hide show
  1. package/cli.schema.json +1 -1
  2. package/console-app/android-chrome-192x192.png +0 -0
  3. package/console-app/android-chrome-512x512.png +0 -0
  4. package/console-app/apple-touch-icon.png +0 -0
  5. package/console-app/assets/index-0Ui5UudO.css +1 -0
  6. package/console-app/assets/index-C19L3UJu.js +637 -0
  7. package/console-app/favicon-16x16.png +0 -0
  8. package/console-app/favicon-32x32.png +0 -0
  9. package/console-app/favicon.ico +0 -0
  10. package/console-app/index.html +29 -0
  11. package/console-app/pikku-console-logo.png +0 -0
  12. package/console-app/site.webmanifest +19 -0
  13. package/console-app/wiring-icons/cron.svg +6 -0
  14. package/console-app/wiring-icons/function.png +0 -0
  15. package/console-app/wiring-icons/http.svg +2 -0
  16. package/console-app/wiring-icons/mcp.svg +1 -0
  17. package/console-app/wiring-icons/queue.svg +18 -0
  18. package/console-app/wiring-icons/sse.svg +5 -0
  19. package/console-app/wiring-icons/websocket.svg +8 -0
  20. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +19 -0
  21. package/dist/.pikku/agent/pikku-agent-types.gen.js +4 -0
  22. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.js +6 -0
  23. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.json +3 -0
  24. package/dist/.pikku/agent/pikku-agent-wirings.gen.d.ts +4 -0
  25. package/dist/.pikku/agent/pikku-agent-wirings.gen.js +4 -0
  26. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +65 -10
  27. package/dist/.pikku/channel/pikku-channel-types.gen.js +23 -16
  28. package/dist/.pikku/channel/pikku-channels-meta.gen.js +3 -2
  29. package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
  30. package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
  31. package/dist/.pikku/cli/pikku-cli-channel.js +18 -3
  32. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  33. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  34. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +9 -1
  35. package/dist/.pikku/cli/pikku-cli-types.gen.js +12 -2
  36. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
  37. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +45 -12
  38. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  39. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  40. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -5
  41. package/dist/.pikku/cli/pikku-cli.gen.js +1 -5
  42. package/dist/.pikku/console/pikku-node-types.gen.d.ts +6 -0
  43. package/dist/.pikku/console/pikku-node-types.gen.js +1 -0
  44. package/dist/.pikku/function/pikku-function-types.gen.d.ts +180 -37
  45. package/dist/.pikku/function/pikku-function-types.gen.js +63 -53
  46. package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
  47. package/dist/.pikku/function/pikku-functions-meta.gen.json +624 -506
  48. package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
  49. package/dist/.pikku/function/pikku-functions.gen.js +119 -0
  50. package/dist/.pikku/http/pikku-http-types.gen.d.ts +54 -3
  51. package/dist/.pikku/http/pikku-http-types.gen.js +11 -2
  52. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +3 -10
  53. package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
  54. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
  55. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
  56. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +68 -29
  57. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +8 -42
  58. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +4 -4
  59. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
  60. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +2 -2
  61. package/dist/.pikku/node/pikku-node-types.gen.d.ts +1 -0
  62. package/dist/.pikku/node/pikku-node-types.gen.js +1 -0
  63. package/dist/.pikku/pikku-bootstrap.gen.d.ts +9 -10
  64. package/dist/.pikku/pikku-bootstrap.gen.js +17 -8
  65. package/dist/.pikku/pikku-services.gen.d.ts +7 -2
  66. package/dist/.pikku/pikku-services.gen.js +5 -0
  67. package/dist/.pikku/pikku-types.gen.d.ts +4 -1
  68. package/dist/.pikku/pikku-types.gen.js +7 -1
  69. package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
  70. package/dist/.pikku/pikku-websocket.gen.js +1 -1
  71. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  72. package/dist/.pikku/queue/pikku-queue-types.gen.js +2 -2
  73. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +2 -2
  74. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  75. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  76. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +6 -3
  77. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +6 -3
  78. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
  79. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +6 -0
  80. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +61 -0
  81. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  82. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +2 -2
  83. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +2 -2
  84. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
  85. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
  86. package/dist/.pikku/schemas/register.gen.js +33 -15
  87. package/dist/.pikku/schemas/schemas/BootstrapInput.schema.json +1 -0
  88. package/dist/.pikku/schemas/schemas/ConsoleCommandInput.schema.json +1 -0
  89. package/dist/.pikku/schemas/schemas/PikkuAIAgentOutput.schema.json +1 -0
  90. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  91. package/dist/.pikku/schemas/schemas/PikkuConsoleFunctionsOutput.schema.json +1 -0
  92. package/dist/.pikku/schemas/schemas/PikkuNodesMetaOutput.schema.json +1 -0
  93. package/dist/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
  94. package/dist/.pikku/schemas/schemas/PikkuPublicAgentOutput.schema.json +1 -0
  95. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  96. package/dist/.pikku/schemas/schemas/PikkuTriggerOutput.schema.json +1 -0
  97. package/dist/.pikku/schemas/schemas/PikkuVersionsInitInput.schema.json +1 -0
  98. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +5 -0
  99. package/dist/.pikku/secrets/pikku-secret-types.gen.js +4 -0
  100. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -0
  101. package/dist/.pikku/secrets/pikku-secrets.gen.js +10 -0
  102. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +113 -0
  103. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +33 -0
  104. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +5 -0
  105. package/dist/.pikku/variables/pikku-variable-types.gen.js +4 -0
  106. package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -0
  107. package/dist/.pikku/variables/pikku-variables.gen.js +10 -0
  108. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +71 -53
  109. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +23 -35
  110. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -3
  111. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +2 -6
  112. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +2 -6
  113. package/dist/bin/pikku.js +20 -47
  114. package/dist/src/cli.wiring.js +29 -2
  115. package/dist/src/functions/commands/all.d.ts +1 -1
  116. package/dist/src/functions/commands/all.js +109 -168
  117. package/dist/src/functions/commands/bootstrap.d.ts +1 -1
  118. package/dist/src/functions/commands/bootstrap.js +13 -29
  119. package/dist/src/functions/commands/console.d.ts +7 -0
  120. package/dist/src/functions/commands/console.js +106 -0
  121. package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +4 -0
  122. package/dist/src/functions/commands/pikku-command-bootstrap.js +67 -0
  123. package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -0
  124. package/dist/src/functions/commands/pikku-command-summary.js +55 -0
  125. package/dist/src/functions/commands/versions-check.d.ts +1 -0
  126. package/dist/src/functions/commands/versions-check.js +17 -0
  127. package/dist/src/functions/commands/versions-init.d.ts +7 -0
  128. package/dist/src/functions/commands/versions-init.js +15 -0
  129. package/dist/src/functions/commands/versions-update.d.ts +1 -0
  130. package/dist/src/functions/commands/versions-update.js +20 -0
  131. package/dist/src/functions/commands/watch.d.ts +1 -1
  132. package/dist/src/functions/commands/watch.js +4 -5
  133. package/dist/src/functions/runtimes/fetch/index.d.ts +1 -0
  134. package/dist/src/functions/{wirings → runtimes}/fetch/index.js +3 -3
  135. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
  136. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +6 -8
  137. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
  138. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +49 -43
  139. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +45 -35
  140. package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -0
  141. package/dist/src/functions/{wirings/channels → runtimes/websocket}/pikku-command-websocket-typed.js +2 -2
  142. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -0
  143. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +19 -0
  144. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -0
  145. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +68 -0
  146. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -0
  147. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.js +23 -0
  148. package/dist/src/functions/wirings/ai-agent/serialize-agent-map.d.ts +4 -0
  149. package/dist/src/functions/wirings/ai-agent/serialize-agent-map.js +48 -0
  150. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -0
  151. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +31 -0
  152. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.d.ts +1 -0
  153. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +90 -0
  154. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
  155. package/dist/src/functions/wirings/channels/pikku-channels.js +2 -2
  156. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
  157. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +3 -3
  158. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
  159. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +2 -2
  160. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
  161. package/dist/src/functions/wirings/channels/pikku-command-channels.js +19 -3
  162. package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +1 -1
  163. package/dist/src/functions/wirings/channels/serialize-channel-types.js +97 -10
  164. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.d.ts +2 -1
  165. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +9 -10
  166. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
  167. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +3 -7
  168. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
  169. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
  170. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
  171. package/dist/src/functions/wirings/cli/pikku-command-cli.js +11 -3
  172. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +8 -8
  173. package/dist/src/functions/wirings/cli/serialize-cli-types.js +14 -1
  174. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +2 -2
  175. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +10 -11
  176. package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -0
  177. package/dist/src/functions/wirings/console/pikku-command-console-functions.js +23 -0
  178. package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -0
  179. package/dist/src/functions/wirings/console/pikku-command-node-types.js +21 -0
  180. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -0
  181. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.js +79 -0
  182. package/dist/src/functions/wirings/console/serialize-console-functions.d.ts +1 -0
  183. package/dist/src/functions/wirings/console/serialize-console-functions.js +229 -0
  184. package/dist/src/functions/wirings/console/serialize-node-types.d.ts +1 -0
  185. package/dist/src/functions/wirings/console/serialize-node-types.js +11 -0
  186. package/dist/src/functions/wirings/functions/pikku-command-external-types.d.ts +1 -0
  187. package/dist/src/functions/wirings/functions/pikku-command-external-types.js +33 -0
  188. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -1
  189. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +2 -2
  190. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -1
  191. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +8 -3
  192. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
  193. package/dist/src/functions/wirings/functions/pikku-command-functions.js +34 -19
  194. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  195. package/dist/src/functions/wirings/functions/pikku-command-services.js +2 -2
  196. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -4
  197. package/dist/src/functions/wirings/functions/schemas.js +8 -9
  198. package/dist/src/functions/wirings/functions/serialize-external-types.d.ts +1 -0
  199. package/dist/src/functions/wirings/functions/serialize-external-types.js +77 -0
  200. package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +4 -3
  201. package/dist/src/functions/wirings/functions/serialize-function-imports.js +16 -19
  202. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
  203. package/dist/src/functions/wirings/functions/serialize-function-types.js +256 -42
  204. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +1 -1
  205. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +22 -21
  206. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
  207. package/dist/src/functions/wirings/http/pikku-command-http-map.js +4 -4
  208. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
  209. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +19 -3
  210. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
  211. package/dist/src/functions/wirings/http/pikku-command-http-types.js +1 -1
  212. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
  213. package/dist/src/functions/wirings/http/pikku-command-openapi.js +11 -9
  214. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
  215. package/dist/src/functions/wirings/http/pikku-http-routes.js +2 -2
  216. package/dist/src/functions/wirings/http/serialize-http-types.js +64 -3
  217. package/dist/src/functions/wirings/http/serialize-typed-http-map.d.ts +5 -2
  218. package/dist/src/functions/wirings/http/serialize-typed-http-map.js +43 -31
  219. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
  220. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +5 -6
  221. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
  222. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +1 -1
  223. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
  224. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +28 -10
  225. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +81 -38
  226. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
  227. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +11 -31
  228. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +19 -24
  229. package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +2 -0
  230. package/dist/src/functions/wirings/package/pikku-command-package-types.js +30 -0
  231. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -0
  232. package/dist/src/functions/wirings/package/pikku-command-package.js +58 -0
  233. package/dist/src/functions/wirings/package/serialize-package-types.d.ts +2 -0
  234. package/dist/src/functions/wirings/package/serialize-package-types.js +10 -0
  235. package/dist/src/functions/wirings/package/serialize-package.d.ts +5 -0
  236. package/dist/src/functions/wirings/package/serialize-package.js +32 -0
  237. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
  238. package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +10 -5
  239. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
  240. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +3 -3
  241. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
  242. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +2 -2
  243. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
  244. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +1 -1
  245. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
  246. package/dist/src/functions/wirings/queue/pikku-command-queue.js +11 -3
  247. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
  248. package/dist/src/functions/wirings/queue/pikku-queue-map.js +3 -3
  249. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
  250. package/dist/src/functions/wirings/queue/pikku-queue.js +2 -10
  251. package/dist/src/functions/wirings/queue/serialize-queue-map.d.ts +5 -2
  252. package/dist/src/functions/wirings/queue/serialize-queue-map.js +13 -24
  253. package/dist/src/functions/wirings/queue/serialize-queue-meta.js +9 -10
  254. package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
  255. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
  256. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +2 -2
  257. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
  258. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.js +1 -1
  259. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
  260. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +2 -2
  261. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -2
  262. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +12 -7
  263. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
  264. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +5 -2
  265. package/dist/src/functions/wirings/rpc/serialize-public-rpc.d.ts +1 -1
  266. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +11 -6
  267. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +5 -2
  268. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +19 -8
  269. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +6 -3
  270. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +130 -59
  271. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
  272. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +1 -1
  273. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
  274. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +11 -2
  275. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +1 -1
  276. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +13 -12
  277. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
  278. package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -0
  279. package/dist/src/functions/wirings/secrets/pikku-command-secrets.js +31 -0
  280. package/dist/src/functions/wirings/secrets/serialize-secrets-types.d.ts +9 -0
  281. package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +64 -0
  282. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +1 -0
  283. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.js +24 -0
  284. package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -0
  285. package/dist/src/functions/wirings/triggers/pikku-command-trigger.js +40 -0
  286. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.d.ts +5 -0
  287. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.js +35 -0
  288. package/dist/src/functions/wirings/triggers/serialize-trigger-types.d.ts +4 -0
  289. package/dist/src/functions/wirings/triggers/serialize-trigger-types.js +163 -0
  290. package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -0
  291. package/dist/src/functions/wirings/variables/pikku-command-variables.js +31 -0
  292. package/dist/src/functions/wirings/variables/serialize-variables-types.d.ts +9 -0
  293. package/dist/src/functions/wirings/variables/serialize-variables-types.js +53 -0
  294. package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
  295. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +29 -20
  296. package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +7 -2
  297. package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +87 -38
  298. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +1 -3
  299. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +42 -18
  300. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +7 -0
  301. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +26 -0
  302. package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -4
  303. package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +121 -63
  304. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.d.ts +1 -1
  305. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +15 -28
  306. package/dist/src/services/cli-logger-forwarder.service.d.ts +1 -1
  307. package/dist/src/services/cli-logger-forwarder.service.js +1 -1
  308. package/dist/src/services/cli-logger.service.d.ts +1 -1
  309. package/dist/src/services/cli-logger.service.js +1 -1
  310. package/dist/src/services.d.ts +1 -1
  311. package/dist/src/services.js +56 -6
  312. package/dist/src/utils/command-summary.d.ts +3 -0
  313. package/dist/src/utils/command-summary.js +3 -0
  314. package/dist/src/utils/contract-versions.d.ts +6 -0
  315. package/dist/src/utils/contract-versions.js +25 -0
  316. package/dist/src/utils/file-import-path.js +20 -6
  317. package/dist/src/utils/generate-bootstrap-file.js +1 -1
  318. package/dist/src/utils/pikku-cli-config.js +104 -13
  319. package/dist/src/utils/pikku-files-and-methods.d.ts +0 -1
  320. package/dist/src/utils/pikku-files-and-methods.js +15 -60
  321. package/dist/src/utils/serialize-import-map.d.ts +2 -1
  322. package/dist/src/utils/serialize-import-map.js +3 -54
  323. package/dist/src/utils/serialize-meta-ts.d.ts +8 -0
  324. package/dist/src/utils/serialize-meta-ts.js +12 -0
  325. package/dist/src/utils/serialize-schemas.d.ts +3 -0
  326. package/dist/src/utils/serialize-schemas.js +38 -0
  327. package/dist/src/utils/strip-verbose-meta.d.ts +43 -0
  328. package/dist/src/utils/strip-verbose-meta.js +210 -0
  329. package/dist/tsconfig.tsbuildinfo +1 -1
  330. package/package.json +20 -8
  331. package/.pikku/channel/pikku-channel-types.gen.ts +0 -91
  332. package/.pikku/channel/pikku-channels-map.gen.d.ts +0 -47
  333. package/.pikku/channel/pikku-channels-meta.gen.ts +0 -5
  334. package/.pikku/channel/pikku-channels.gen.ts +0 -4
  335. package/.pikku/cli/pikku-cli-channel.ts +0 -92
  336. package/.pikku/cli/pikku-cli-client.gen.ts +0 -54
  337. package/.pikku/cli/pikku-cli-types.gen.ts +0 -92
  338. package/.pikku/cli/pikku-cli-wirings-meta.gen.json +0 -146
  339. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +0 -7
  340. package/.pikku/cli/pikku-cli-wirings.gen.ts +0 -6
  341. package/.pikku/cli/pikku-cli.gen.ts +0 -41
  342. package/.pikku/function/pikku-function-types.gen.ts +0 -426
  343. package/.pikku/function/pikku-functions-meta.gen.json +0 -988
  344. package/.pikku/function/pikku-functions-meta.gen.ts +0 -6
  345. package/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
  346. package/.pikku/function/pikku-functions-meta.min.gen.ts +0 -6
  347. package/.pikku/http/pikku-http-types.gen.ts +0 -86
  348. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +0 -46
  349. package/.pikku/http/pikku-http-wirings-meta.gen.ts +0 -13
  350. package/.pikku/http/pikku-http-wirings.gen.ts +0 -4
  351. package/.pikku/mcp/pikku-mcp-types.gen.ts +0 -140
  352. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +0 -5
  353. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +0 -9
  354. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +0 -4
  355. package/.pikku/mcp/pikku-mcp.gen.json +0 -5
  356. package/.pikku/pikku-bootstrap.gen.ts +0 -19
  357. package/.pikku/pikku-services.gen.ts +0 -27
  358. package/.pikku/pikku-types.gen.ts +0 -27
  359. package/.pikku/pikku-websocket.gen.ts +0 -90
  360. package/.pikku/queue/pikku-queue-types.gen.ts +0 -27
  361. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +0 -60
  362. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +0 -1
  363. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +0 -8
  364. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +0 -4
  365. package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +0 -27
  366. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +0 -57
  367. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +0 -99
  368. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +0 -25
  369. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +0 -1
  370. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +0 -8
  371. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +0 -4
  372. package/.pikku/schemas/register.gen.ts +0 -63
  373. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +0 -1
  374. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +0 -1
  375. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +0 -1
  376. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +0 -1
  377. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +0 -1
  378. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +0 -1
  379. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +0 -1
  380. package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +0 -1
  381. package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +0 -1
  382. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +0 -1
  383. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +0 -1
  384. package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +0 -1
  385. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +0 -1
  386. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +0 -1
  387. package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +0 -1
  388. package/.pikku/services/config.gen.json +0 -99
  389. package/.pikku/services/getInspectorState.gen.json +0 -10
  390. package/.pikku/services/jwt.gen.json +0 -13
  391. package/.pikku/services/logger.gen.json +0 -25
  392. package/.pikku/services/queueService.gen.json +0 -14
  393. package/.pikku/services/schedulerService.gen.json +0 -17
  394. package/.pikku/services/schema.gen.json +0 -14
  395. package/.pikku/services/variables.gen.json +0 -13
  396. package/.pikku/services/workflowService.gen.json +0 -31
  397. package/.pikku/workflow/pikku-workflow-map.gen.d.ts +0 -62
  398. package/.pikku/workflow/pikku-workflow-types.gen.ts +0 -97
  399. package/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +0 -1
  400. package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +0 -8
  401. package/.pikku/workflow/pikku-workflow-wirings.gen.ts +0 -8
  402. package/CHANGELOG.md +0 -935
  403. package/bin/pikku.ts +0 -88
  404. package/build.sh +0 -75
  405. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +0 -6
  406. package/dist/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
  407. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +0 -1
  408. package/dist/src/functions/wirings/fetch/index.d.ts +0 -1
  409. package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +0 -1
  410. package/dist/src/functions/wirings/functions/pikku-function-types.js +0 -18
  411. package/dist/src/functions/wirings/http/openapi-spec-generator.d.ts +0 -81
  412. package/dist/src/functions/wirings/http/openapi-spec-generator.js +0 -152
  413. package/dist/src/functions/wirings/mcp/serialize-mcp-json.d.ts +0 -5
  414. package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +0 -101
  415. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +0 -11
  416. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +0 -36
  417. package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +0 -1
  418. package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +0 -22
  419. package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.d.ts +0 -1
  420. package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.js +0 -12
  421. package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.d.ts +0 -1
  422. package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.js +0 -13
  423. package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.d.ts +0 -8
  424. package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.js +0 -30
  425. package/dist/src/utils/custom-types-generator.d.ts +0 -2
  426. package/dist/src/utils/custom-types-generator.js +0 -43
  427. package/dist/src/utils/schema-generator.d.ts +0 -6
  428. package/dist/src/utils/schema-generator.js +0 -118
  429. package/pikku.config.json +0 -29
  430. package/run-tests.sh +0 -53
  431. package/src/cli.wiring.ts +0 -112
  432. package/src/functions/commands/all.ts +0 -266
  433. package/src/functions/commands/bootstrap.ts +0 -43
  434. package/src/functions/commands/watch.ts +0 -61
  435. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +0 -132
  436. package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +0 -268
  437. package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +0 -201
  438. package/src/functions/wirings/channels/pikku-channels.ts +0 -59
  439. package/src/functions/wirings/channels/pikku-command-channel-types.ts +0 -25
  440. package/src/functions/wirings/channels/pikku-command-channels-map.ts +0 -26
  441. package/src/functions/wirings/channels/pikku-command-channels.ts +0 -40
  442. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +0 -37
  443. package/src/functions/wirings/channels/serialize-channel-types.ts +0 -94
  444. package/src/functions/wirings/channels/serialize-typed-channel-map.ts +0 -172
  445. package/src/functions/wirings/channels/serialize-websocket-wrapper.ts +0 -89
  446. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +0 -216
  447. package/src/functions/wirings/cli/pikku-command-cli-types.ts +0 -48
  448. package/src/functions/wirings/cli/pikku-command-cli.ts +0 -62
  449. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +0 -184
  450. package/src/functions/wirings/cli/serialize-channel-cli.ts +0 -134
  451. package/src/functions/wirings/cli/serialize-cli-types.ts +0 -101
  452. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +0 -80
  453. package/src/functions/wirings/fetch/index.ts +0 -36
  454. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +0 -60
  455. package/src/functions/wirings/functions/pikku-command-function-types.ts +0 -43
  456. package/src/functions/wirings/functions/pikku-command-functions.ts +0 -94
  457. package/src/functions/wirings/functions/pikku-command-services.ts +0 -140
  458. package/src/functions/wirings/functions/pikku-function-types.ts +0 -43
  459. package/src/functions/wirings/functions/schemas.ts +0 -46
  460. package/src/functions/wirings/functions/serialize-function-imports.ts +0 -71
  461. package/src/functions/wirings/functions/serialize-function-types.ts +0 -439
  462. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +0 -38
  463. package/src/functions/wirings/http/openapi-spec-generator.ts +0 -265
  464. package/src/functions/wirings/http/pikku-command-http-map.ts +0 -27
  465. package/src/functions/wirings/http/pikku-command-http-routes.ts +0 -36
  466. package/src/functions/wirings/http/pikku-command-http-types.ts +0 -25
  467. package/src/functions/wirings/http/pikku-command-openapi.ts +0 -63
  468. package/src/functions/wirings/http/pikku-http-routes.ts +0 -61
  469. package/src/functions/wirings/http/serialize-fetch-wrapper.ts +0 -67
  470. package/src/functions/wirings/http/serialize-http-types.ts +0 -89
  471. package/src/functions/wirings/http/serialize-typed-http-map.ts +0 -154
  472. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +0 -33
  473. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +0 -25
  474. package/src/functions/wirings/mcp/pikku-command-mcp.ts +0 -140
  475. package/src/functions/wirings/mcp/serialize-mcp-json.ts +0 -159
  476. package/src/functions/wirings/mcp/serialize-mcp-types.ts +0 -143
  477. package/src/functions/wirings/middleware/pikku-command-middleware.ts +0 -85
  478. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +0 -40
  479. package/src/functions/wirings/middleware/serialize-middleware-imports.ts +0 -78
  480. package/src/functions/wirings/permissions/pikku-command-permissions.ts +0 -49
  481. package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +0 -274
  482. package/src/functions/wirings/permissions/serialize-permissions-imports.ts +0 -78
  483. package/src/functions/wirings/queue/pikku-command-queue-map.ts +0 -26
  484. package/src/functions/wirings/queue/pikku-command-queue-service.ts +0 -37
  485. package/src/functions/wirings/queue/pikku-command-queue-types.ts +0 -25
  486. package/src/functions/wirings/queue/pikku-command-queue.ts +0 -66
  487. package/src/functions/wirings/queue/pikku-queue-map.ts +0 -26
  488. package/src/functions/wirings/queue/pikku-queue.ts +0 -75
  489. package/src/functions/wirings/queue/serialize-queue-map.ts +0 -119
  490. package/src/functions/wirings/queue/serialize-queue-meta.ts +0 -24
  491. package/src/functions/wirings/queue/serialize-queue-types.ts +0 -30
  492. package/src/functions/wirings/queue/serialize-queue-wrapper.ts +0 -35
  493. package/src/functions/wirings/rpc/pikku-command-public-rpc.ts +0 -32
  494. package/src/functions/wirings/rpc/pikku-command-remote-rpc.ts +0 -35
  495. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +0 -35
  496. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +0 -48
  497. package/src/functions/wirings/rpc/pikku-command-rpc.ts +0 -49
  498. package/src/functions/wirings/rpc/serialize-public-rpc.ts +0 -37
  499. package/src/functions/wirings/rpc/serialize-remote-rpc.ts +0 -30
  500. package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +0 -68
  501. package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +0 -128
  502. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +0 -25
  503. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +0 -67
  504. package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +0 -37
  505. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +0 -28
  506. package/src/functions/wirings/services/pikku-command-service-metadata.ts +0 -25
  507. package/src/functions/wirings/workflow/pikku-command-workflow-map.ts +0 -24
  508. package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +0 -29
  509. package/src/functions/wirings/workflow/pikku-command-workflow.ts +0 -151
  510. package/src/functions/wirings/workflow/serialize-workflow-map.ts +0 -123
  511. package/src/functions/wirings/workflow/serialize-workflow-meta.ts +0 -33
  512. package/src/functions/wirings/workflow/serialize-workflow-types.ts +0 -103
  513. package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +0 -47
  514. package/src/functions/wirings/workflow/serialize-workflow-workers.ts +0 -60
  515. package/src/middleware/log-command-info-and-time.ts +0 -35
  516. package/src/services/cli-logger-forwarder.service.ts +0 -99
  517. package/src/services/cli-logger.service.ts +0 -108
  518. package/src/services.ts +0 -315
  519. package/src/utils/check-required-types.ts +0 -65
  520. package/src/utils/command-summary.ts +0 -103
  521. package/src/utils/custom-types-generator.ts +0 -55
  522. package/src/utils/file-import-path.test.ts +0 -175
  523. package/src/utils/file-import-path.ts +0 -53
  524. package/src/utils/file-imports-serializer.ts +0 -25
  525. package/src/utils/file-writer.ts +0 -72
  526. package/src/utils/generate-bootstrap-file.ts +0 -43
  527. package/src/utils/get-cli-version.ts +0 -28
  528. package/src/utils/pikku-cli-config.ts +0 -462
  529. package/src/utils/pikku-files-and-methods.ts +0 -145
  530. package/src/utils/schema-generator.ts +0 -172
  531. package/src/utils/serialize-import-map.ts +0 -102
  532. package/tsconfig.json +0 -21
  533. package/types/application-types.d.ts +0 -27
  534. package/types/config.d.ts +0 -270
  535. /package/dist/.pikku/{function/pikku-functions-meta.min.gen.d.ts → agent/pikku-agent-wirings-meta.gen.d.ts} +0 -0
  536. /package/dist/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
  537. /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.d.ts +0 -0
  538. /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.js +0 -0
@@ -6,9 +6,9 @@ export const serializeHTTPTypes = (functionTypesImportPath) => {
6
6
  * HTTP-specific type definitions for tree-shaking optimization
7
7
  */
8
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'
9
+ import { AssertHTTPWiringParams, wireHTTP as wireHTTPCore, addHTTPMiddleware as addHTTPMiddlewareCore, addHTTPPermission as addHTTPPermissionCore, wireHTTPRoutes as wireHTTPRoutesCore, defineHTTPRoutes as defineHTTPRoutesCore } from '@pikku/core/http'
10
+ import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware, PikkuFunctionConfig } from '${functionTypesImportPath}'
11
+ import type { CoreHTTPFunctionWiring, HTTPMethod, HTTPRouteBaseConfig } from '@pikku/core/http'
12
12
 
13
13
  /**
14
14
  * Type definition for HTTP API wirings with type-safe path parameters.
@@ -85,5 +85,66 @@ export const addHTTPPermission = <In = unknown>(
85
85
  ) => {
86
86
  addHTTPPermissionCore(pattern, permissions as any)
87
87
  }
88
+
89
+ /**
90
+ * Route configuration for wireHTTPRoutes with proper typing
91
+ */
92
+ type HTTPRouteConfig = HTTPRouteBaseConfig & {
93
+ method: HTTPMethod
94
+ route: string
95
+ func: PikkuFunctionConfig<any, any, any, any, any, any>
96
+ auth?: boolean
97
+ permissions?: Record<string, PikkuPermission | PikkuPermission[]>
98
+ middleware?: PikkuMiddleware[]
99
+ sse?: boolean
100
+ }
101
+
102
+ /**
103
+ * Typed route map for wireHTTPRoutes
104
+ */
105
+ type TypedHTTPRouteMap = {
106
+ [key: string]: HTTPRouteConfig | TypedHTTPRouteMap | TypedHTTPRouteContract
107
+ }
108
+
109
+ /**
110
+ * Typed route contract for defineHTTPRoutes
111
+ */
112
+ type TypedHTTPRouteContract<T extends TypedHTTPRouteMap = TypedHTTPRouteMap> = TypedHTTPRoutesGroupConfig & {
113
+ routes: T
114
+ }
115
+
116
+ /**
117
+ * Group config with typed middleware/permissions
118
+ */
119
+ type TypedHTTPRoutesGroupConfig = {
120
+ basePath?: string
121
+ tags?: string[]
122
+ auth?: boolean
123
+ middleware?: PikkuMiddleware[]
124
+ permissions?: Record<string, PikkuPermission | PikkuPermission[]>
125
+ }
126
+
127
+ /**
128
+ * Full config for wireHTTPRoutes
129
+ */
130
+ type TypedWireHTTPRoutesConfig = TypedHTTPRoutesGroupConfig & {
131
+ routes: TypedHTTPRouteMap | HTTPRouteConfig[]
132
+ }
133
+
134
+ /**
135
+ * Type-safe helper for defining route contracts that can be composed.
136
+ */
137
+ export function defineHTTPRoutes<T extends TypedHTTPRouteMap>(routes: T): TypedHTTPRouteContract<T>
138
+ export function defineHTTPRoutes<T extends TypedHTTPRouteMap>(config: TypedHTTPRoutesGroupConfig & { routes: T }): TypedHTTPRouteContract<T>
139
+ export function defineHTTPRoutes<T extends TypedHTTPRouteMap>(configOrRoutes: T | (TypedHTTPRoutesGroupConfig & { routes: T })): TypedHTTPRouteContract<T> {
140
+ return defineHTTPRoutesCore(configOrRoutes as any) as unknown as TypedHTTPRouteContract<T>
141
+ }
142
+
143
+ /**
144
+ * Wires multiple HTTP routes from a nested map or array configuration.
145
+ */
146
+ export const wireHTTPRoutes = (config: TypedWireHTTPRoutesConfig): void => {
147
+ wireHTTPRoutesCore(config as any)
148
+ }
88
149
  `;
89
150
  };
@@ -1,4 +1,7 @@
1
1
  import { HTTPWiringsMeta } from '@pikku/core/http';
2
2
  import { MetaInputTypes, TypesMap } from '@pikku/inspector';
3
- import { FunctionsMeta } from '@pikku/core';
4
- export declare const serializeTypedHTTPWiringsMap: (relativeToPath: string, packageMappings: Record<string, string>, typesMap: TypesMap, functionsMeta: FunctionsMeta, wiringsMeta: HTTPWiringsMeta, metaTypes: MetaInputTypes) => string;
3
+ import { Logger } from '@pikku/core/services';
4
+ export declare const serializeTypedHTTPWiringsMap: (logger: Logger, relativeToPath: string, packageMappings: Record<string, string>, typesMap: TypesMap, wiringsMeta: HTTPWiringsMeta, metaTypes: MetaInputTypes, resolvedIOTypes: Record<string, {
5
+ inputType: string;
6
+ outputType: string;
7
+ }>, rpcInternalMapDeclarationFile: string) => string;
@@ -1,17 +1,34 @@
1
1
  import { serializeImportMap } from '../../../utils/serialize-import-map.js';
2
- import { generateCustomTypes } from '../../../utils/custom-types-generator.js';
3
- export const serializeTypedHTTPWiringsMap = (relativeToPath, packageMappings, typesMap, functionsMeta, wiringsMeta, metaTypes) => {
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { generateCustomTypes } from '@pikku/inspector';
4
+ export const serializeTypedHTTPWiringsMap = (logger, relativeToPath, packageMappings, typesMap, wiringsMeta, metaTypes, resolvedIOTypes, rpcInternalMapDeclarationFile) => {
4
5
  const requiredTypes = new Set();
5
6
  const serializedCustomTypes = generateCustomTypes(typesMap, requiredTypes);
6
- const serializedMetaTypes = generateMetaTypes(metaTypes, typesMap);
7
- const serializedHTTPWirings = generateHTTPWirings(wiringsMeta, functionsMeta, typesMap, requiredTypes);
8
- const serializedImportMap = serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes);
7
+ const serializedMetaTypes = generateMetaTypes(metaTypes, typesMap, requiredTypes);
8
+ const serializedHTTPWirings = generateHTTPWirings(wiringsMeta, resolvedIOTypes, requiredTypes);
9
+ const needsFlattenedRPCMap = Array.from(requiredTypes).some((t) => t.includes('FlattenedRPCMap'));
10
+ if (needsFlattenedRPCMap) {
11
+ for (const t of Array.from(requiredTypes)) {
12
+ if (t.includes('FlattenedRPCMap')) {
13
+ requiredTypes.delete(t);
14
+ }
15
+ }
16
+ }
17
+ const serializedImportMap = serializeImportMap(logger, relativeToPath, packageMappings, typesMap, requiredTypes);
18
+ const rpcMapImport = needsFlattenedRPCMap
19
+ ? `import type { FlattenedRPCMap } from '${getFileImportRelativePath(relativeToPath, rpcInternalMapDeclarationFile, packageMappings)}'`
20
+ : '';
21
+ const serializedCustomTypesDeclarationsOnly = serializedCustomTypes
22
+ .split('\n')
23
+ .filter((line) => !line.startsWith('import '))
24
+ .join('\n');
9
25
  return `/**
10
26
  * This provides the structure needed for typescript to be aware of routes and their return types
11
27
  */
12
-
28
+
13
29
  ${serializedImportMap}
14
- ${serializedCustomTypes}
30
+ ${rpcMapImport}
31
+ ${serializedCustomTypesDeclarationsOnly}
15
32
  ${serializedMetaTypes}
16
33
 
17
34
  interface HTTPWiringHandler<I, O> {
@@ -31,34 +48,21 @@ export type HTTPWiringsWithMethod<Method extends string> = {
31
48
  }[keyof HTTPWiringsMap];
32
49
  `;
33
50
  };
34
- function generateHTTPWirings(routesMeta, functionsMeta, typesMap, requiredTypes) {
35
- // Initialize an object to collect routes
51
+ function generateHTTPWirings(routesMeta, resolvedIOTypes, requiredTypes) {
36
52
  const routesObj = {};
37
53
  for (const methods of Object.values(routesMeta)) {
38
54
  for (const meta of Object.values(methods)) {
39
- const { route, method, pikkuFuncName } = meta;
40
- const functionMeta = functionsMeta[pikkuFuncName];
41
- if (!functionMeta) {
42
- throw new Error(`Function ${pikkuFuncName} not found in functionsMeta. Please check your configuration.`);
43
- }
44
- const input = functionMeta.inputs ? functionMeta.inputs[0] : undefined;
45
- const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined;
46
- // Initialize the route entry if it doesn't exist
55
+ const { route, method, pikkuFuncId } = meta;
47
56
  if (!routesObj[route]) {
48
57
  routesObj[route] = {};
49
58
  }
50
- // Store the input and output types separately for RouteHandler
51
- const inputType = input ? typesMap.getTypeMeta(input).uniqueName : 'null';
52
- const outputType = output
53
- ? typesMap.getTypeMeta(output).uniqueName
54
- : 'null';
55
- requiredTypes.add(inputType);
56
- requiredTypes.add(outputType);
57
- // Add method entry
58
- routesObj[route][method] = {
59
- inputType,
60
- outputType,
61
- };
59
+ const resolved = resolvedIOTypes[pikkuFuncId];
60
+ if (!resolved) {
61
+ throw new Error(`Function ${pikkuFuncId} not found in resolvedIOTypes. Please check your configuration.`);
62
+ }
63
+ requiredTypes.add(resolved.inputType);
64
+ requiredTypes.add(resolved.outputType);
65
+ routesObj[route][method] = resolved;
62
66
  }
63
67
  }
64
68
  // Build the routes object as a string
@@ -73,9 +77,17 @@ function generateHTTPWirings(routesMeta, functionsMeta, typesMap, requiredTypes)
73
77
  routesStr += '};';
74
78
  return routesStr;
75
79
  }
76
- const generateMetaTypes = (metaTypes, typesMap) => {
80
+ const generateMetaTypes = (metaTypes, typesMap, requiredTypes) => {
77
81
  const nameToTypeMap = Array.from(metaTypes.entries()).reduce((result, [_name, { query, body, params }]) => {
78
- const { uniqueName } = typesMap.getTypeMeta(_name);
82
+ let uniqueName;
83
+ try {
84
+ uniqueName = typesMap.getTypeMeta(_name).uniqueName;
85
+ }
86
+ catch {
87
+ // Zod-derived schema - use the name directly
88
+ uniqueName = _name;
89
+ }
90
+ requiredTypes.add(uniqueName);
79
91
  const queryType = query && query.length > 0
80
92
  ? `Pick<${uniqueName}, '${query?.join("' | '")}'>`
81
93
  : undefined;
@@ -1 +1 @@
1
- export declare const pikkuMCPJSON: any;
1
+ export declare const pikkuMCPJSON: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
@@ -1,14 +1,13 @@
1
- import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
1
+ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { writeFileInDir } from '../../../utils/file-writer.js';
3
3
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
4
- import { serializeMCPJson } from './serialize-mcp-json.js';
4
+ import { serializeMCPJson } from '@pikku/inspector';
5
5
  export const pikkuMCPJSON = pikkuSessionlessFunc({
6
6
  func: async ({ logger, config, getInspectorState }) => {
7
- const { mcpEndpoints, functions } = await getInspectorState();
8
- const { mcpJsonFile, schemaDirectory } = config;
9
- // Generate MCP JSON file
7
+ const state = await getInspectorState();
8
+ const { mcpJsonFile } = config;
10
9
  if (mcpJsonFile) {
11
- const mcpJson = await serializeMCPJson(logger, schemaDirectory, functions.meta, functions.typesMap, mcpEndpoints.resourcesMeta, mcpEndpoints.toolsMeta, mcpEndpoints.promptsMeta);
10
+ const mcpJson = serializeMCPJson(logger, state);
12
11
  await writeFileInDir(logger, mcpJsonFile, mcpJson, {
13
12
  ignoreModifyComment: true,
14
13
  });
@@ -1 +1 @@
1
- export declare const pikkuMCPTypes: any;
1
+ export declare const pikkuMCPTypes: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
@@ -1,4 +1,4 @@
1
- import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
1
+ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { writeFileInDir } from '../../../utils/file-writer.js';
3
3
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
@@ -1 +1 @@
1
- export declare const pikkuMCP: any;
1
+ export declare const pikkuMCP: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
@@ -1,22 +1,32 @@
1
- import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
1
+ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { serializeFileImports } from '../../../utils/file-imports-serializer.js';
3
3
  import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
5
  import { readFile } from 'fs/promises';
6
6
  import { join } from 'path';
7
7
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
8
+ import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
8
9
  // Helper function to generate arguments from schema
9
10
  const generateArgumentsFromSchema = async (inputSchema, schemaDirectory, typesMap, logger) => {
10
11
  if (!inputSchema)
11
12
  return [];
12
- if (['boolean', 'string', 'number', 'null', 'undefined', 'void'].includes(inputSchema)) {
13
+ if ([
14
+ 'boolean',
15
+ 'string',
16
+ 'number',
17
+ 'null',
18
+ 'undefined',
19
+ 'void',
20
+ 'unknown',
21
+ 'never',
22
+ ].includes(inputSchema)) {
13
23
  return [];
14
24
  }
15
25
  const uniqueName = typesMap.getUniqueName(inputSchema);
16
26
  if (!uniqueName)
17
27
  return [];
28
+ const schemaPath = join(schemaDirectory, 'schemas', `${uniqueName}.schema.json`);
18
29
  try {
19
- const schemaPath = join(schemaDirectory, 'schemas', `${uniqueName}.schema.json`);
20
30
  const schemaContent = await readFile(schemaPath, 'utf-8');
21
31
  const schema = JSON.parse(schemaContent);
22
32
  const argumentsArray = [];
@@ -34,7 +44,8 @@ const generateArgumentsFromSchema = async (inputSchema, schemaDirectory, typesMa
34
44
  return argumentsArray;
35
45
  }
36
46
  catch (e) {
37
- logger.warn(`Could not load schema for type: ${uniqueName}`);
47
+ logger.warn(`Command MCP: Could not load schema for type: ${uniqueName} from ${schemaPath}`);
48
+ console.error(e);
38
49
  return [];
39
50
  }
40
51
  };
@@ -42,11 +53,11 @@ export const pikkuMCP = pikkuSessionlessFunc({
42
53
  func: async ({ logger, config, getInspectorState }) => {
43
54
  const { mcpEndpoints, functions } = await getInspectorState();
44
55
  const { mcpWiringsFile, mcpWiringsMetaFile, packageMappings, schemaDirectory, schema, } = config;
45
- await writeFileInDir(logger, mcpWiringsFile, serializeFileImports('wireMCPResource or wireMCPTool', mcpWiringsFile, mcpEndpoints.files, packageMappings));
56
+ await writeFileInDir(logger, mcpWiringsFile, serializeFileImports('wireMCPResource', mcpWiringsFile, mcpEndpoints.files, packageMappings));
46
57
  // Populate arguments for prompts meta before serializing
47
58
  const promptsMetaWithArguments = { ...mcpEndpoints.promptsMeta };
48
59
  for (const promptMeta of Object.values(promptsMetaWithArguments)) {
49
- const functionMeta = functions.meta[promptMeta.pikkuFuncName];
60
+ const functionMeta = functions.meta[promptMeta.pikkuFuncId];
50
61
  if (functionMeta) {
51
62
  const inputType = functionMeta.inputs?.[0];
52
63
  promptMeta.arguments = await generateArgumentsFromSchema(inputType || null, schemaDirectory || '', functions.typesMap, logger);
@@ -57,7 +68,14 @@ export const pikkuMCP = pikkuSessionlessFunc({
57
68
  toolsMeta: mcpEndpoints.toolsMeta,
58
69
  promptsMeta: promptsMetaWithArguments,
59
70
  };
60
- await writeFileInDir(logger, config.mcpWiringsMetaJsonFile, JSON.stringify(metaData, null, 2));
71
+ // Write minimal JSON (runtime-only fields)
72
+ const minimalMeta = stripVerboseFields(metaData);
73
+ await writeFileInDir(logger, config.mcpWiringsMetaJsonFile, JSON.stringify(minimalMeta, null, 2));
74
+ // Write verbose JSON only if it has additional fields
75
+ if (hasVerboseFields(metaData)) {
76
+ const verbosePath = config.mcpWiringsMetaJsonFile.replace(/\.gen\.json$/, '-verbose.gen.json');
77
+ await writeFileInDir(logger, verbosePath, JSON.stringify(metaData, null, 2));
78
+ }
61
79
  const jsonImportPath = getFileImportRelativePath(mcpWiringsMetaFile, config.mcpWiringsMetaJsonFile, packageMappings);
62
80
  const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
63
81
  const importStatement = supportsImportAttributes
@@ -66,9 +84,9 @@ export const pikkuMCP = pikkuSessionlessFunc({
66
84
  await writeFileInDir(logger, mcpWiringsMetaFile, `import { pikkuState } from '@pikku/core'
67
85
  import type { MCPResourceMeta, MCPToolMeta, MCPPromptMeta } from '@pikku/core/mcp'
68
86
  ${importStatement}
69
- pikkuState('mcp', 'resourcesMeta', metaData.resourcesMeta as MCPResourceMeta)
70
- pikkuState('mcp', 'toolsMeta', metaData.toolsMeta as MCPToolMeta)
71
- pikkuState('mcp', 'promptsMeta', metaData.promptsMeta as MCPPromptMeta)`);
87
+ pikkuState(null, 'mcp', 'resourcesMeta', metaData.resourcesMeta as MCPResourceMeta)
88
+ pikkuState(null, 'mcp', 'toolsMeta', metaData.toolsMeta as MCPToolMeta)
89
+ pikkuState(null, 'mcp', 'promptsMeta', metaData.promptsMeta as MCPPromptMeta)`);
72
90
  return true;
73
91
  },
74
92
  middleware: [
@@ -8,10 +8,8 @@ export const serializeMCPTypes = (functionTypesImportPath) => {
8
8
 
9
9
  import {
10
10
  CoreMCPResource,
11
- CoreMCPTool,
12
11
  CoreMCPPrompt,
13
12
  wireMCPResource as wireMCPResourceCore,
14
- wireMCPTool as wireMCPToolCore,
15
13
  wireMCPPrompt as wireMCPPromptCore,
16
14
  MCPResourceResponse,
17
15
  MCPToolResponse,
@@ -19,7 +17,9 @@ import {
19
17
  AssertMCPResourceURIParams
20
18
  } from '@pikku/core/mcp'
21
19
 
22
- import type { PikkuFunctionConfig, PikkuFunctionSessionless } from '${functionTypesImportPath}'
20
+ import type { PikkuFunctionConfig, PikkuFunctionSessionless, PikkuMiddleware, PikkuPermission, InferSchemaOutput } from '${functionTypesImportPath}'
21
+ import type { CorePermissionGroup } from '@pikku/core'
22
+ import type { StandardSchemaV1 } from '@standard-schema/spec'
23
23
 
24
24
  /**
25
25
  * Type definition for MCP resources that provide data to AI models.
@@ -29,13 +29,6 @@ import type { PikkuFunctionConfig, PikkuFunctionSessionless } from '${functionTy
29
29
  */
30
30
  type MCPResourceWiring<In, URI extends string> = CoreMCPResource<PikkuFunctionConfig<In, MCPResourceResponse, 'rpc' | 'session' | 'mcp'>> & { uri: URI }
31
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, 'rpc' | 'session' | 'mcp'>>
38
-
39
32
  /**
40
33
  * Type definition for MCP prompts that provide templates to AI models.
41
34
  *
@@ -57,19 +50,6 @@ export const wireMCPResource = <In, URI extends string>(
57
50
  wireMCPResourceCore(mcpResource as any)
58
51
  }
59
52
 
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
53
  /**
74
54
  * Registers an MCP prompt with the Pikku framework.
75
55
  * Prompts provide templates that AI models can use.
@@ -83,60 +63,123 @@ export const wireMCPPrompt = <In>(
83
63
  wireMCPPromptCore(mcpPrompt as any)
84
64
  }
85
65
 
66
+ /**
67
+ * Configuration for MCP prompt with Zod schema input validation.
68
+ */
69
+ type MCPPromptFuncConfigWithSchema<InputSchema extends StandardSchemaV1> = {
70
+ func: PikkuFunctionSessionless<InferSchemaOutput<InputSchema>, MCPPromptResponse, 'mcp' | 'rpc'>
71
+ name?: string
72
+ input: InputSchema
73
+ }
74
+
86
75
  /**
87
76
  * Creates a function for handling MCP prompt requests.
88
77
  * These functions generate prompt templates for AI models.
89
78
  *
90
- * @template In - Input type for the prompt parameters
79
+ * Supports two patterns:
80
+ * 1. Generic types: \`pikkuMCPPromptFunc<Input>({ func: ... })\`
81
+ * 2. Zod schemas: \`pikkuMCPPromptFunc({ input: z.object(...), func: ... })\`
82
+ *
83
+ * @template In - Input type for the prompt parameters (inferred from schema if provided)
91
84
  * @param func - Function definition, either direct function or configuration object
92
85
  * @returns The unwrapped function for internal use
93
86
  */
94
- export const pikkuMCPPromptFunc = <In>(
87
+ export function pikkuMCPPromptFunc<InputSchema extends StandardSchemaV1>(
88
+ config: MCPPromptFuncConfigWithSchema<InputSchema>
89
+ ): PikkuFunctionConfig<InferSchemaOutput<InputSchema>, MCPPromptResponse, 'mcp' | 'rpc'>
90
+ export function pikkuMCPPromptFunc<In>(
95
91
  func:
96
- | PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp'>
92
+ | PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp' | 'rpc'>
97
93
  | {
98
- func: PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp'>
94
+ func: PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp' | 'rpc'>
99
95
  name?: string
100
96
  }
101
- ): PikkuFunctionConfig<In, MCPPromptResponse, 'mcp'> => {
97
+ ): PikkuFunctionConfig<In, MCPPromptResponse, 'mcp' | 'rpc'>
98
+ export function pikkuMCPPromptFunc(func: any): any {
102
99
  return typeof func === 'function' ? { func } : func
103
100
  }
104
101
 
102
+ /**
103
+ * Configuration for MCP tool with Zod schema input validation.
104
+ */
105
+ type MCPToolFuncConfigWithSchema<InputSchema extends StandardSchemaV1> = {
106
+ func: PikkuFunctionSessionless<InferSchemaOutput<InputSchema>, MCPToolResponse, 'mcp' | 'rpc'>
107
+ description?: string
108
+ tags?: string[]
109
+ title?: string
110
+ summary?: string
111
+ name?: string
112
+ middleware?: PikkuMiddleware[]
113
+ permissions?: CorePermissionGroup<PikkuPermission<InferSchemaOutput<InputSchema>>>
114
+ input: InputSchema
115
+ }
116
+
105
117
  /**
106
118
  * Creates a function for handling MCP tool invocations.
107
119
  * These functions perform actions that AI models can request.
108
120
  *
109
- * @template In - Input type for the tool invocation
121
+ * Supports two patterns:
122
+ * 1. Generic types: \`pikkuMCPToolFunc<Input>({ func: ... })\`
123
+ * 2. Zod schemas: \`pikkuMCPToolFunc({ input: z.object(...), func: ... })\`
124
+ *
125
+ * @template In - Input type for the tool invocation (inferred from schema if provided)
110
126
  * @param func - Function definition, either direct function or configuration object
111
127
  * @returns The unwrapped function for internal use
112
128
  */
113
- export const pikkuMCPToolFunc = <In>(
129
+ export function pikkuMCPToolFunc<InputSchema extends StandardSchemaV1>(
130
+ config: MCPToolFuncConfigWithSchema<InputSchema>
131
+ ): PikkuFunctionConfig<InferSchemaOutput<InputSchema>, MCPToolResponse, 'mcp' | 'rpc'>
132
+ export function pikkuMCPToolFunc<In>(
114
133
  func:
115
- | PikkuFunctionSessionless<In, MCPToolResponse, 'mcp'>
134
+ | PikkuFunctionSessionless<In, MCPToolResponse, 'mcp' | 'rpc'>
116
135
  | {
117
- func: PikkuFunctionSessionless<In, MCPToolResponse, 'mcp'>
136
+ func: PikkuFunctionSessionless<In, MCPToolResponse, 'mcp' | 'rpc'>
137
+ description?: string
138
+ tags?: string[]
139
+ title?: string
140
+ summary?: string
118
141
  name?: string
142
+ middleware?: PikkuMiddleware[]
143
+ permissions?: CorePermissionGroup<PikkuPermission<In>>
119
144
  }
120
- ): PikkuFunctionConfig<In, MCPToolResponse, 'mcp'> => {
145
+ ): PikkuFunctionConfig<In, MCPToolResponse, 'mcp' | 'rpc'>
146
+ export function pikkuMCPToolFunc(func: any): any {
121
147
  return typeof func === 'function' ? { func } : func
122
148
  }
123
149
 
150
+ /**
151
+ * Configuration for MCP resource with Zod schema input validation.
152
+ */
153
+ type MCPResourceFuncConfigWithSchema<InputSchema extends StandardSchemaV1> = {
154
+ func: PikkuFunctionSessionless<InferSchemaOutput<InputSchema>, MCPResourceResponse, 'mcp' | 'rpc'>
155
+ name?: string
156
+ input: InputSchema
157
+ }
158
+
124
159
  /**
125
160
  * Creates a function for handling MCP resource requests.
126
161
  * These functions provide data that AI models can access.
127
162
  *
128
- * @template In - Input type for the resource request
163
+ * Supports two patterns:
164
+ * 1. Generic types: \`pikkuMCPResourceFunc<Input>({ func: ... })\`
165
+ * 2. Zod schemas: \`pikkuMCPResourceFunc({ input: z.object(...), func: ... })\`
166
+ *
167
+ * @template In - Input type for the resource request (inferred from schema if provided)
129
168
  * @param func - Function definition, either direct function or configuration object
130
169
  * @returns The unwrapped function for internal use
131
170
  */
132
- export const pikkuMCPResourceFunc = <In>(
171
+ export function pikkuMCPResourceFunc<InputSchema extends StandardSchemaV1>(
172
+ config: MCPResourceFuncConfigWithSchema<InputSchema>
173
+ ): PikkuFunctionConfig<InferSchemaOutput<InputSchema>, MCPResourceResponse, 'mcp' | 'rpc'>
174
+ export function pikkuMCPResourceFunc<In>(
133
175
  func:
134
- | PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp'>
176
+ | PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp' | 'rpc'>
135
177
  | {
136
- func: PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp'>
178
+ func: PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp' | 'rpc'>
137
179
  name?: string
138
180
  }
139
- ): PikkuFunctionConfig<In, MCPResourceResponse, 'mcp'> => {
181
+ ): PikkuFunctionConfig<In, MCPResourceResponse, 'mcp' | 'rpc'>
182
+ export function pikkuMCPResourceFunc(func: any): any {
140
183
  return typeof func === 'function' ? { func } : func
141
184
  }
142
185
  `;
@@ -1 +1 @@
1
- export declare const pikkuMiddleware: any;
1
+ export declare const pikkuMiddleware: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
@@ -1,45 +1,25 @@
1
- import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
1
+ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { writeFileInDir } from '../../../utils/file-writer.js';
3
3
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
4
4
  import { serializeMiddlewareImports } from './serialize-middleware-imports.js';
5
- import { serializeMiddlewareGroupsMeta } from './serialize-middleware-groups-meta.js';
6
- import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
7
5
  export const pikkuMiddleware = pikkuSessionlessFunc({
8
6
  func: async ({ logger, config, getInspectorState }) => {
9
7
  const state = await getInspectorState();
10
8
  const { middleware } = state;
11
- const { middlewareFile, packageMappings, schema } = config;
9
+ const { middlewareFile, packageMappings } = config;
12
10
  let filesGenerated = false;
13
- // Check if there are any middleware groups
14
11
  const hasHTTPGroups = state.http.routeMiddleware.size > 0;
15
12
  const hasTagGroups = state.middleware.tagMiddleware.size > 0;
16
- if (hasHTTPGroups || hasTagGroups) {
17
- const metaData = serializeMiddlewareGroupsMeta(state);
18
- // Write JSON file
13
+ const hasDefinitions = Object.keys(state.middleware.definitions).length > 0;
14
+ const hasChannelMiddleware = state.channelMiddleware.tagMiddleware.size > 0 ||
15
+ Object.keys(state.channelMiddleware.definitions).length > 0;
16
+ if (hasHTTPGroups ||
17
+ hasTagGroups ||
18
+ hasDefinitions ||
19
+ hasChannelMiddleware) {
20
+ const metaData = state.middlewareGroupsMeta;
19
21
  await writeFileInDir(logger, config.middlewareGroupsMetaJsonFile, JSON.stringify(metaData, null, 2));
20
- // Calculate relative path from TS file to JSON file
21
- const jsonImportPath = getFileImportRelativePath(config.middlewareGroupsMetaFile, config.middlewareGroupsMetaJsonFile, packageMappings);
22
- // Write TypeScript file that imports JSON
23
- const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
24
- const importStatement = supportsImportAttributes
25
- ? `import metaData from '${jsonImportPath}' with { type: 'json' }`
26
- : `import metaData from '${jsonImportPath}'`;
27
- const tsContent = `import { pikkuState } from '@pikku/core'
28
- ${importStatement}
29
-
30
- // HTTP middleware groups metadata
31
- if (metaData.httpGroups && Object.keys(metaData.httpGroups).length > 0) {
32
- pikkuState('middleware', 'httpGroupMeta', metaData.httpGroups)
33
- }
34
-
35
- // Tag middleware groups metadata
36
- if (metaData.tagGroups && Object.keys(metaData.tagGroups).length > 0) {
37
- pikkuState('middleware', 'tagGroupMeta', metaData.tagGroups)
38
- }
39
- `;
40
- await writeFileInDir(logger, config.middlewareGroupsMetaFile, tsContent);
41
- // Always generate middleware imports file when groups exist (even if empty)
42
- await writeFileInDir(logger, middlewareFile, serializeMiddlewareImports(middlewareFile, middleware, state.http, packageMappings));
22
+ await writeFileInDir(logger, middlewareFile, serializeMiddlewareImports(middlewareFile, middleware, state.http, packageMappings, state));
43
23
  filesGenerated = true;
44
24
  }
45
25
  return filesGenerated;
@@ -1,43 +1,38 @@
1
1
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
2
- export const serializeMiddlewareImports = (outputPath, middlewareState, httpState, packageMappings = {}, fullState) => {
3
- const serializedImports = [];
4
- const serializedFactoryCalls = [];
5
- // Collect factory imports and calls for HTTP middleware groups
6
- const httpFactories = new Map();
7
- for (const [, groupMeta] of httpState.routeMiddleware.entries()) {
8
- if (groupMeta.exportName && groupMeta.isFactory) {
9
- const filePath = getFileImportRelativePath(outputPath, groupMeta.sourceFile, packageMappings);
10
- httpFactories.set(groupMeta.exportName, {
11
- exportName: groupMeta.exportName,
12
- filePath,
13
- });
14
- }
15
- }
16
- // Collect factory imports and calls for tag middleware groups
17
- const tagFactories = new Map();
18
- for (const [, groupMeta] of middlewareState.tagMiddleware.entries()) {
2
+ const collectFactories = (groupMap, outputPath, packageMappings) => {
3
+ const factories = new Map();
4
+ for (const [, groupMeta] of groupMap.entries()) {
19
5
  if (groupMeta.exportName && groupMeta.isFactory) {
20
6
  const filePath = getFileImportRelativePath(outputPath, groupMeta.sourceFile, packageMappings);
21
- tagFactories.set(groupMeta.exportName, {
7
+ factories.set(groupMeta.exportName, {
22
8
  exportName: groupMeta.exportName,
23
9
  filePath,
24
10
  });
25
11
  }
26
12
  }
27
- // Combine all factories and deduplicate by exportName (same factory might be used in multiple groups)
28
- const allFactories = new Map([...httpFactories, ...tagFactories]);
29
- // Add factory imports and calls
13
+ return factories;
14
+ };
15
+ export const serializeMiddlewareImports = (outputPath, middlewareState, httpState, packageMappings = {}, fullState) => {
16
+ const serializedImports = [];
17
+ const serializedFactoryCalls = [];
18
+ const httpFactories = collectFactories(httpState.routeMiddleware, outputPath, packageMappings);
19
+ const tagFactories = collectFactories(middlewareState.tagMiddleware, outputPath, packageMappings);
20
+ const channelMiddlewareFactories = fullState
21
+ ? collectFactories(fullState.channelMiddleware.tagMiddleware, outputPath, packageMappings)
22
+ : new Map();
23
+ const allFactories = new Map([
24
+ ...httpFactories,
25
+ ...tagFactories,
26
+ ...channelMiddlewareFactories,
27
+ ]);
30
28
  if (allFactories.size > 0) {
31
29
  serializedImports.push('/* Call middleware group factories to register at module evaluation */');
32
- // Import factories
33
30
  for (const [exportName, { filePath }] of allFactories) {
34
31
  serializedImports.push(`import { ${exportName} } from '${filePath}'`);
35
32
  }
36
- // Call factories
37
33
  for (const [exportName] of allFactories) {
38
34
  serializedFactoryCalls.push(`${exportName}()`);
39
35
  }
40
36
  }
41
- // Return combined output
42
37
  return [...serializedImports, ...serializedFactoryCalls].join('\n');
43
38
  };