@pikku/cli 0.11.3 → 0.12.1

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 (587) 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-DiYPTQU_.js +676 -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 +34 -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 +46 -0
  21. package/dist/.pikku/agent/pikku-agent-types.gen.js +17 -0
  22. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.d.ts +1 -0
  23. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.js +6 -0
  24. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.json +3 -0
  25. package/dist/.pikku/agent/pikku-agent-wirings.gen.d.ts +4 -0
  26. package/dist/.pikku/agent/pikku-agent-wirings.gen.js +4 -0
  27. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +27 -14
  28. package/dist/.pikku/channel/pikku-channel-types.gen.js +21 -4
  29. package/dist/.pikku/channel/pikku-channels-meta.gen.js +2 -2
  30. package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
  31. package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
  32. package/dist/.pikku/cli/pikku-cli-channel.js +72 -3
  33. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  34. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  35. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +9 -1
  36. package/dist/.pikku/cli/pikku-cli-types.gen.js +12 -2
  37. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
  38. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +261 -11
  39. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  40. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  41. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -5
  42. package/dist/.pikku/cli/pikku-cli.gen.js +1 -5
  43. package/dist/.pikku/console/pikku-node-types.gen.d.ts +6 -0
  44. package/dist/.pikku/console/pikku-node-types.gen.js +1 -0
  45. package/dist/.pikku/function/pikku-function-types.gen.d.ts +83 -29
  46. package/dist/.pikku/function/pikku-function-types.gen.js +51 -15
  47. package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
  48. package/dist/.pikku/function/pikku-functions-meta.gen.json +896 -192
  49. package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
  50. package/dist/.pikku/function/pikku-functions.gen.js +119 -0
  51. package/dist/.pikku/http/pikku-http-types.gen.d.ts +55 -19
  52. package/dist/.pikku/http/pikku-http-types.gen.js +11 -2
  53. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +2 -2
  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 +26 -27
  57. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +2 -12
  58. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +2 -2
  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 +5 -4
  64. package/dist/.pikku/pikku-bootstrap.gen.js +13 -2
  65. package/dist/.pikku/pikku-services.gen.d.ts +6 -1
  66. package/dist/.pikku/pikku-services.gen.js +5 -0
  67. package/dist/.pikku/pikku-types.gen.d.ts +4 -2
  68. package/dist/.pikku/pikku-types.gen.js +7 -3
  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 +3 -3
  77. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +3 -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 +70 -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 +43 -19
  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/PikkuCLIOutput.schema.json +1 -1
  92. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  93. package/dist/.pikku/schemas/schemas/PikkuConsoleFunctionsOutput.schema.json +1 -0
  94. package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
  95. package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
  96. package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
  97. package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
  98. package/dist/.pikku/schemas/schemas/PikkuNewAddonInput.schema.json +1 -0
  99. package/dist/.pikku/schemas/schemas/PikkuNewFunctionInput.schema.json +1 -0
  100. package/dist/.pikku/schemas/schemas/PikkuNewMiddlewareInput.schema.json +1 -0
  101. package/dist/.pikku/schemas/schemas/PikkuNewPermissionInput.schema.json +1 -0
  102. package/dist/.pikku/schemas/schemas/PikkuNewWiringInput.schema.json +1 -0
  103. package/dist/.pikku/schemas/schemas/PikkuNodesMetaOutput.schema.json +1 -0
  104. package/dist/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -1
  105. package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
  106. package/dist/.pikku/schemas/schemas/PikkuPublicAgentOutput.schema.json +1 -0
  107. package/dist/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
  108. package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
  109. package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
  110. package/dist/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
  111. package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
  112. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  113. package/dist/.pikku/schemas/schemas/PikkuTriggerOutput.schema.json +1 -0
  114. package/dist/.pikku/schemas/schemas/PikkuVersionsInitInput.schema.json +1 -0
  115. package/dist/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
  116. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +5 -0
  117. package/dist/.pikku/secrets/pikku-secret-types.gen.js +4 -0
  118. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -0
  119. package/dist/.pikku/secrets/pikku-secrets.gen.js +10 -0
  120. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +113 -0
  121. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +33 -0
  122. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +5 -0
  123. package/dist/.pikku/variables/pikku-variable-types.gen.js +4 -0
  124. package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -0
  125. package/dist/.pikku/variables/pikku-variables.gen.js +10 -0
  126. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +28 -180
  127. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +18 -106
  128. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +2 -2
  129. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
  130. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  131. package/dist/bin/pikku.js +20 -47
  132. package/dist/src/cli.wiring.js +210 -2
  133. package/dist/src/functions/commands/all.d.ts +1 -1
  134. package/dist/src/functions/commands/all.js +83 -180
  135. package/dist/src/functions/commands/bootstrap.d.ts +1 -1
  136. package/dist/src/functions/commands/bootstrap.js +13 -22
  137. package/dist/src/functions/commands/console.d.ts +7 -0
  138. package/dist/src/functions/commands/console.js +106 -0
  139. package/dist/src/functions/commands/info.d.ts +9 -0
  140. package/dist/src/functions/commands/info.js +283 -0
  141. package/dist/src/functions/commands/new-addon.d.ts +34 -0
  142. package/dist/src/functions/commands/new-addon.js +636 -0
  143. package/dist/src/functions/commands/new-function.d.ts +10 -0
  144. package/dist/src/functions/commands/new-function.js +79 -0
  145. package/dist/src/functions/commands/new-middleware.d.ts +10 -0
  146. package/dist/src/functions/commands/new-middleware.js +48 -0
  147. package/dist/src/functions/commands/new-permission.d.ts +10 -0
  148. package/dist/src/functions/commands/new-permission.js +45 -0
  149. package/dist/src/functions/commands/new-wiring.d.ts +10 -0
  150. package/dist/src/functions/commands/new-wiring.js +102 -0
  151. package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +4 -0
  152. package/dist/src/functions/commands/pikku-command-bootstrap.js +38 -0
  153. package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -0
  154. package/dist/src/functions/commands/pikku-command-summary.js +55 -0
  155. package/dist/src/functions/commands/versions-check.d.ts +1 -0
  156. package/dist/src/functions/commands/versions-check.js +99 -0
  157. package/dist/src/functions/commands/versions-init.d.ts +7 -0
  158. package/dist/src/functions/commands/versions-init.js +15 -0
  159. package/dist/src/functions/commands/versions-update.d.ts +1 -0
  160. package/dist/src/functions/commands/versions-update.js +20 -0
  161. package/dist/src/functions/commands/watch.d.ts +1 -1
  162. package/dist/src/functions/commands/watch.js +4 -5
  163. package/dist/src/functions/runtimes/fetch/index.d.ts +1 -0
  164. package/dist/src/functions/{wirings → runtimes}/fetch/index.js +3 -3
  165. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
  166. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +6 -7
  167. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
  168. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +4 -16
  169. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +4 -8
  170. package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -0
  171. package/dist/src/functions/{wirings/channels → runtimes/websocket}/pikku-command-websocket-typed.js +2 -2
  172. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -0
  173. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +20 -0
  174. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -0
  175. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +68 -0
  176. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -0
  177. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.js +23 -0
  178. package/dist/src/functions/wirings/ai-agent/serialize-agent-map.d.ts +4 -0
  179. package/dist/src/functions/wirings/ai-agent/serialize-agent-map.js +48 -0
  180. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -0
  181. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +76 -0
  182. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.d.ts +1 -0
  183. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +68 -0
  184. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
  185. package/dist/src/functions/wirings/channels/pikku-channels.js +2 -2
  186. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
  187. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +3 -3
  188. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
  189. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +2 -2
  190. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
  191. package/dist/src/functions/wirings/channels/pikku-command-channels.js +2 -2
  192. package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +1 -1
  193. package/dist/src/functions/wirings/channels/serialize-channel-types.js +47 -17
  194. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.d.ts +5 -4
  195. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +8 -8
  196. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
  197. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +3 -7
  198. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
  199. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
  200. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
  201. package/dist/src/functions/wirings/cli/pikku-command-cli.js +2 -2
  202. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +2 -2
  203. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +1 -1
  204. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +8 -8
  205. package/dist/src/functions/wirings/cli/serialize-cli-types.js +14 -1
  206. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +3 -3
  207. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +10 -11
  208. package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -0
  209. package/dist/src/functions/wirings/console/pikku-command-console-functions.js +24 -0
  210. package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -0
  211. package/dist/src/functions/wirings/console/pikku-command-node-types.js +21 -0
  212. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -0
  213. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.js +79 -0
  214. package/dist/src/functions/wirings/console/serialize-console-functions.d.ts +1 -0
  215. package/dist/src/functions/wirings/console/serialize-console-functions.js +90 -0
  216. package/dist/src/functions/wirings/console/serialize-node-types.d.ts +1 -0
  217. package/dist/src/functions/wirings/console/serialize-node-types.js +11 -0
  218. package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -0
  219. package/dist/src/functions/wirings/functions/pikku-command-addon-types.js +33 -0
  220. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -1
  221. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +2 -2
  222. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -1
  223. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +6 -6
  224. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
  225. package/dist/src/functions/wirings/functions/pikku-command-functions.js +9 -15
  226. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  227. package/dist/src/functions/wirings/functions/pikku-command-services.js +1 -1
  228. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -4
  229. package/dist/src/functions/wirings/functions/schemas.js +8 -10
  230. package/dist/src/functions/wirings/functions/serialize-addon-types.d.ts +1 -0
  231. package/dist/src/functions/wirings/functions/serialize-addon-types.js +78 -0
  232. package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +3 -4
  233. package/dist/src/functions/wirings/functions/serialize-function-imports.js +13 -20
  234. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
  235. package/dist/src/functions/wirings/functions/serialize-function-types.js +126 -45
  236. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +1 -1
  237. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +5 -2
  238. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
  239. package/dist/src/functions/wirings/http/pikku-command-http-map.js +4 -4
  240. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
  241. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +2 -2
  242. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
  243. package/dist/src/functions/wirings/http/pikku-command-http-types.js +1 -1
  244. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
  245. package/dist/src/functions/wirings/http/pikku-command-openapi.js +11 -9
  246. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
  247. package/dist/src/functions/wirings/http/pikku-http-routes.js +2 -2
  248. package/dist/src/functions/wirings/http/serialize-http-types.js +65 -20
  249. package/dist/src/functions/wirings/http/serialize-typed-http-map.d.ts +7 -4
  250. package/dist/src/functions/wirings/http/serialize-typed-http-map.js +33 -46
  251. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
  252. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +5 -6
  253. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
  254. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +1 -1
  255. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
  256. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +14 -5
  257. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +27 -36
  258. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
  259. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +11 -34
  260. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +19 -24
  261. package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +2 -0
  262. package/dist/src/functions/wirings/package/pikku-command-package-types.js +30 -0
  263. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
  264. package/dist/src/functions/wirings/package/pikku-command-package.js +8 -8
  265. package/dist/src/functions/wirings/package/serialize-package-types.d.ts +2 -0
  266. package/dist/src/functions/wirings/package/serialize-package-types.js +10 -0
  267. package/dist/src/functions/wirings/package/serialize-package.js +2 -2
  268. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
  269. package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +7 -7
  270. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
  271. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +3 -3
  272. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
  273. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +2 -2
  274. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
  275. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +1 -1
  276. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
  277. package/dist/src/functions/wirings/queue/pikku-command-queue.js +1 -1
  278. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
  279. package/dist/src/functions/wirings/queue/pikku-queue-map.js +3 -3
  280. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
  281. package/dist/src/functions/wirings/queue/pikku-queue.js +1 -1
  282. package/dist/src/functions/wirings/queue/serialize-queue-map.d.ts +6 -3
  283. package/dist/src/functions/wirings/queue/serialize-queue-map.js +12 -40
  284. package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +1 -1
  285. package/dist/src/functions/wirings/queue/serialize-queue-meta.js +9 -10
  286. package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
  287. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
  288. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +2 -2
  289. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
  290. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.js +1 -1
  291. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
  292. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +2 -2
  293. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -2
  294. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +14 -9
  295. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
  296. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +3 -2
  297. package/dist/src/functions/wirings/rpc/serialize-public-rpc.d.ts +1 -1
  298. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +34 -20
  299. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +2 -2
  300. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +55 -8
  301. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +11 -3
  302. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +106 -71
  303. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
  304. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +1 -1
  305. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
  306. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +1 -1
  307. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +2 -2
  308. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +13 -12
  309. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
  310. package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -0
  311. package/dist/src/functions/wirings/secrets/pikku-command-secrets.js +31 -0
  312. package/dist/src/functions/wirings/secrets/serialize-secrets-types.d.ts +9 -0
  313. package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +64 -0
  314. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +1 -0
  315. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.js +24 -0
  316. package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -0
  317. package/dist/src/functions/wirings/triggers/pikku-command-trigger.js +40 -0
  318. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.d.ts +5 -0
  319. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.js +35 -0
  320. package/dist/src/functions/wirings/triggers/serialize-trigger-types.d.ts +4 -0
  321. package/dist/src/functions/wirings/triggers/serialize-trigger-types.js +163 -0
  322. package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -0
  323. package/dist/src/functions/wirings/variables/pikku-command-variables.js +31 -0
  324. package/dist/src/functions/wirings/variables/serialize-variables-types.d.ts +9 -0
  325. package/dist/src/functions/wirings/variables/serialize-variables-types.js +53 -0
  326. package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
  327. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +8 -37
  328. package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +5 -3
  329. package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +63 -12
  330. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +32 -33
  331. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +1 -1
  332. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +4 -31
  333. package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -6
  334. package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +60 -256
  335. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +5 -5
  336. package/dist/src/services/cli-logger-forwarder.service.d.ts +4 -3
  337. package/dist/src/services/cli-logger-forwarder.service.js +1 -1
  338. package/dist/src/services/cli-logger.service.d.ts +3 -2
  339. package/dist/src/services/cli-logger.service.js +1 -1
  340. package/dist/src/services.d.ts +5 -4
  341. package/dist/src/services.js +53 -7
  342. package/dist/src/utils/check-required-types.d.ts +1 -1
  343. package/dist/src/utils/command-summary.d.ts +2 -1
  344. package/dist/src/utils/command-summary.js +2 -1
  345. package/dist/src/utils/contract-versions.d.ts +6 -0
  346. package/dist/src/utils/contract-versions.js +25 -0
  347. package/dist/src/utils/file-import-path.js +20 -6
  348. package/dist/src/utils/file-writer.d.ts +6 -1
  349. package/dist/src/utils/file-writer.js +14 -1
  350. package/dist/src/utils/generate-bootstrap-file.d.ts +2 -2
  351. package/dist/src/utils/openapi/codegen.d.ts +19 -0
  352. package/dist/src/utils/openapi/codegen.js +288 -0
  353. package/dist/src/utils/openapi/naming.d.ts +30 -0
  354. package/dist/src/utils/openapi/naming.js +167 -0
  355. package/dist/src/utils/openapi/parse-openapi.d.ts +36 -0
  356. package/dist/src/utils/openapi/parse-openapi.js +196 -0
  357. package/dist/src/utils/openapi/zod-codegen.d.ts +53 -0
  358. package/dist/src/utils/openapi/zod-codegen.js +251 -0
  359. package/dist/src/utils/pikku-cli-config.d.ts +2 -2
  360. package/dist/src/utils/pikku-cli-config.js +80 -23
  361. package/dist/src/utils/pikku-files-and-methods.d.ts +1 -2
  362. package/dist/src/utils/pikku-files-and-methods.js +15 -60
  363. package/dist/src/utils/serialize-import-map.d.ts +3 -2
  364. package/dist/src/utils/serialize-import-map.js +4 -55
  365. package/dist/src/utils/serialize-meta-ts.d.ts +8 -0
  366. package/dist/src/utils/serialize-meta-ts.js +12 -0
  367. package/dist/src/utils/serialize-schemas.d.ts +3 -0
  368. package/dist/src/utils/serialize-schemas.js +38 -0
  369. package/dist/src/utils/strip-verbose-meta.d.ts +5 -5
  370. package/dist/src/utils/strip-verbose-meta.js +15 -15
  371. package/dist/tsconfig.tsbuildinfo +1 -1
  372. package/package.json +19 -10
  373. package/.pikku/channel/pikku-channel-types.gen.ts +0 -148
  374. package/.pikku/channel/pikku-channels-map.gen.d.ts +0 -47
  375. package/.pikku/channel/pikku-channels-meta.gen.json +0 -1
  376. package/.pikku/channel/pikku-channels-meta.gen.ts +0 -7
  377. package/.pikku/channel/pikku-channels.gen.ts +0 -4
  378. package/.pikku/cli/pikku-cli-channel.ts +0 -92
  379. package/.pikku/cli/pikku-cli-client.gen.ts +0 -54
  380. package/.pikku/cli/pikku-cli-types.gen.ts +0 -92
  381. package/.pikku/cli/pikku-cli-wirings-meta.gen.json +0 -147
  382. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +0 -7
  383. package/.pikku/cli/pikku-cli-wirings.gen.ts +0 -6
  384. package/.pikku/cli/pikku-cli.gen.ts +0 -41
  385. package/.pikku/forge/pikku-forge-types.gen.ts +0 -83
  386. package/.pikku/function/pikku-function-types.gen.ts +0 -572
  387. package/.pikku/function/pikku-functions-meta-verbose.gen.json +0 -1030
  388. package/.pikku/function/pikku-functions-meta.gen.json +0 -656
  389. package/.pikku/function/pikku-functions-meta.gen.ts +0 -6
  390. package/.pikku/http/pikku-http-types.gen.ts +0 -102
  391. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +0 -46
  392. package/.pikku/http/pikku-http-wirings-meta.gen.json +0 -9
  393. package/.pikku/http/pikku-http-wirings-meta.gen.ts +0 -7
  394. package/.pikku/http/pikku-http-wirings.gen.ts +0 -4
  395. package/.pikku/mcp/pikku-mcp-types.gen.ts +0 -192
  396. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +0 -5
  397. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +0 -9
  398. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +0 -4
  399. package/.pikku/mcp/pikku-mcp.gen.json +0 -5
  400. package/.pikku/pikku-bootstrap.gen.ts +0 -17
  401. package/.pikku/pikku-services.gen.ts +0 -28
  402. package/.pikku/pikku-types.gen.ts +0 -30
  403. package/.pikku/pikku-websocket.gen.ts +0 -90
  404. package/.pikku/queue/pikku-queue-types.gen.ts +0 -27
  405. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +0 -60
  406. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +0 -1
  407. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +0 -8
  408. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +0 -4
  409. package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +0 -30
  410. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +0 -62
  411. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +0 -105
  412. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +0 -25
  413. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +0 -1
  414. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +0 -8
  415. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +0 -4
  416. package/.pikku/schemas/register.gen.ts +0 -71
  417. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +0 -1
  418. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +0 -1
  419. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +0 -1
  420. package/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +0 -1
  421. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +0 -1
  422. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +0 -1
  423. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +0 -1
  424. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +0 -1
  425. package/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +0 -1
  426. package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +0 -1
  427. package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +0 -1
  428. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +0 -1
  429. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +0 -1
  430. package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +0 -1
  431. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +0 -1
  432. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +0 -1
  433. package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +0 -1
  434. package/.pikku/services/config.gen.json +0 -104
  435. package/.pikku/services/getInspectorState.gen.json +0 -10
  436. package/.pikku/services/jwt.gen.json +0 -13
  437. package/.pikku/services/logger.gen.json +0 -25
  438. package/.pikku/services/queueService.gen.json +0 -14
  439. package/.pikku/services/schedulerService.gen.json +0 -17
  440. package/.pikku/services/schema.gen.json +0 -14
  441. package/.pikku/services/secrets.gen.json +0 -13
  442. package/.pikku/services/variables.gen.json +0 -13
  443. package/.pikku/services/workflowService.gen.json +0 -31
  444. package/.pikku/workflow/pikku-workflow-map.gen.d.ts +0 -28
  445. package/.pikku/workflow/pikku-workflow-types.gen.ts +0 -349
  446. package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +0 -9
  447. package/.pikku/workflow/pikku-workflow-wirings.gen.ts +0 -3
  448. package/CHANGELOG.md +0 -957
  449. package/bin/pikku.ts +0 -88
  450. package/build.sh +0 -75
  451. package/dist/.pikku/forge/pikku-forge-types.gen.d.ts +0 -72
  452. package/dist/.pikku/forge/pikku-forge-types.gen.js +0 -55
  453. package/dist/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +0 -1
  454. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +0 -1
  455. package/dist/src/functions/wirings/fetch/index.d.ts +0 -1
  456. package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.d.ts +0 -1
  457. package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.js +0 -90
  458. package/dist/src/functions/wirings/forge/pikku-command-forge-types.d.ts +0 -1
  459. package/dist/src/functions/wirings/forge/pikku-command-forge-types.js +0 -26
  460. package/dist/src/functions/wirings/forge/serialize-forge-types.d.ts +0 -4
  461. package/dist/src/functions/wirings/forge/serialize-forge-types.js +0 -90
  462. package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +0 -1
  463. package/dist/src/functions/wirings/functions/pikku-function-types.js +0 -18
  464. package/dist/src/functions/wirings/http/openapi-spec-generator.d.ts +0 -81
  465. package/dist/src/functions/wirings/http/openapi-spec-generator.js +0 -152
  466. package/dist/src/functions/wirings/mcp/serialize-mcp-json.d.ts +0 -5
  467. package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +0 -102
  468. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +0 -11
  469. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +0 -36
  470. package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +0 -1
  471. package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +0 -22
  472. package/dist/src/utils/custom-types-generator.d.ts +0 -2
  473. package/dist/src/utils/custom-types-generator.js +0 -41
  474. package/dist/src/utils/schema-generator.d.ts +0 -7
  475. package/dist/src/utils/schema-generator.js +0 -238
  476. package/pikku.config.json +0 -29
  477. package/run-tests.sh +0 -53
  478. package/src/cli.wiring.ts +0 -112
  479. package/src/functions/commands/all.ts +0 -313
  480. package/src/functions/commands/bootstrap.ts +0 -35
  481. package/src/functions/commands/watch.ts +0 -61
  482. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +0 -131
  483. package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +0 -282
  484. package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +0 -215
  485. package/src/functions/wirings/channels/pikku-channels.ts +0 -59
  486. package/src/functions/wirings/channels/pikku-command-channel-types.ts +0 -25
  487. package/src/functions/wirings/channels/pikku-command-channels-map.ts +0 -26
  488. package/src/functions/wirings/channels/pikku-command-channels.ts +0 -83
  489. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +0 -37
  490. package/src/functions/wirings/channels/serialize-channel-types.ts +0 -151
  491. package/src/functions/wirings/channels/serialize-typed-channel-map.ts +0 -173
  492. package/src/functions/wirings/channels/serialize-websocket-wrapper.ts +0 -89
  493. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +0 -216
  494. package/src/functions/wirings/cli/pikku-command-cli-types.ts +0 -48
  495. package/src/functions/wirings/cli/pikku-command-cli.ts +0 -81
  496. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +0 -184
  497. package/src/functions/wirings/cli/serialize-channel-cli.ts +0 -134
  498. package/src/functions/wirings/cli/serialize-cli-types.ts +0 -101
  499. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +0 -80
  500. package/src/functions/wirings/fetch/index.ts +0 -36
  501. package/src/functions/wirings/forge/pikku-command-forge-nodes.ts +0 -135
  502. package/src/functions/wirings/forge/pikku-command-forge-types.ts +0 -38
  503. package/src/functions/wirings/forge/serialize-forge-types.ts +0 -94
  504. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +0 -61
  505. package/src/functions/wirings/functions/pikku-command-function-types.ts +0 -50
  506. package/src/functions/wirings/functions/pikku-command-functions.ts +0 -104
  507. package/src/functions/wirings/functions/pikku-command-services.ts +0 -140
  508. package/src/functions/wirings/functions/pikku-function-types.ts +0 -45
  509. package/src/functions/wirings/functions/schemas.ts +0 -56
  510. package/src/functions/wirings/functions/serialize-function-imports.ts +0 -80
  511. package/src/functions/wirings/functions/serialize-function-types.ts +0 -587
  512. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +0 -39
  513. package/src/functions/wirings/http/openapi-spec-generator.ts +0 -265
  514. package/src/functions/wirings/http/pikku-command-http-map.ts +0 -27
  515. package/src/functions/wirings/http/pikku-command-http-routes.ts +0 -80
  516. package/src/functions/wirings/http/pikku-command-http-types.ts +0 -25
  517. package/src/functions/wirings/http/pikku-command-openapi.ts +0 -64
  518. package/src/functions/wirings/http/pikku-http-routes.ts +0 -61
  519. package/src/functions/wirings/http/serialize-fetch-wrapper.ts +0 -67
  520. package/src/functions/wirings/http/serialize-http-types.ts +0 -105
  521. package/src/functions/wirings/http/serialize-typed-http-map.ts +0 -178
  522. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +0 -33
  523. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +0 -25
  524. package/src/functions/wirings/mcp/pikku-command-mcp.ts +0 -162
  525. package/src/functions/wirings/mcp/serialize-mcp-json.ts +0 -161
  526. package/src/functions/wirings/mcp/serialize-mcp-types.ts +0 -195
  527. package/src/functions/wirings/middleware/pikku-command-middleware.ts +0 -89
  528. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +0 -40
  529. package/src/functions/wirings/middleware/serialize-middleware-imports.ts +0 -78
  530. package/src/functions/wirings/package/pikku-command-package.ts +0 -81
  531. package/src/functions/wirings/package/serialize-package.ts +0 -69
  532. package/src/functions/wirings/permissions/pikku-command-permissions.ts +0 -49
  533. package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +0 -274
  534. package/src/functions/wirings/permissions/serialize-permissions-imports.ts +0 -78
  535. package/src/functions/wirings/queue/pikku-command-queue-map.ts +0 -26
  536. package/src/functions/wirings/queue/pikku-command-queue-service.ts +0 -37
  537. package/src/functions/wirings/queue/pikku-command-queue-types.ts +0 -25
  538. package/src/functions/wirings/queue/pikku-command-queue.ts +0 -86
  539. package/src/functions/wirings/queue/pikku-queue-map.ts +0 -26
  540. package/src/functions/wirings/queue/pikku-queue.ts +0 -66
  541. package/src/functions/wirings/queue/serialize-queue-map.ts +0 -134
  542. package/src/functions/wirings/queue/serialize-queue-meta.ts +0 -24
  543. package/src/functions/wirings/queue/serialize-queue-types.ts +0 -30
  544. package/src/functions/wirings/queue/serialize-queue-wrapper.ts +0 -35
  545. package/src/functions/wirings/rpc/pikku-command-public-rpc.ts +0 -32
  546. package/src/functions/wirings/rpc/pikku-command-remote-rpc.ts +0 -35
  547. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +0 -35
  548. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +0 -51
  549. package/src/functions/wirings/rpc/pikku-command-rpc.ts +0 -49
  550. package/src/functions/wirings/rpc/serialize-public-rpc.ts +0 -37
  551. package/src/functions/wirings/rpc/serialize-remote-rpc.ts +0 -33
  552. package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +0 -68
  553. package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +0 -194
  554. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +0 -25
  555. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +0 -88
  556. package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +0 -37
  557. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +0 -28
  558. package/src/functions/wirings/services/pikku-command-service-metadata.ts +0 -25
  559. package/src/functions/wirings/workflow/pikku-command-workflow.ts +0 -218
  560. package/src/functions/wirings/workflow/serialize-workflow-map.ts +0 -121
  561. package/src/functions/wirings/workflow/serialize-workflow-meta.ts +0 -73
  562. package/src/functions/wirings/workflow/serialize-workflow-registration.ts +0 -83
  563. package/src/functions/wirings/workflow/serialize-workflow-types.ts +0 -357
  564. package/src/functions/wirings/workflow/serialize-workflow-workers.ts +0 -47
  565. package/src/middleware/log-command-info-and-time.ts +0 -35
  566. package/src/services/cli-logger-forwarder.service.ts +0 -99
  567. package/src/services/cli-logger.service.ts +0 -108
  568. package/src/services.ts +0 -322
  569. package/src/utils/check-required-types.ts +0 -65
  570. package/src/utils/command-summary.ts +0 -107
  571. package/src/utils/custom-types-generator.ts +0 -55
  572. package/src/utils/file-import-path.test.ts +0 -175
  573. package/src/utils/file-import-path.ts +0 -53
  574. package/src/utils/file-imports-serializer.ts +0 -25
  575. package/src/utils/file-writer.ts +0 -72
  576. package/src/utils/generate-bootstrap-file.ts +0 -43
  577. package/src/utils/get-cli-version.ts +0 -28
  578. package/src/utils/pikku-cli-config.ts +0 -495
  579. package/src/utils/pikku-files-and-methods.ts +0 -145
  580. package/src/utils/schema-generator.ts +0 -335
  581. package/src/utils/serialize-import-map.ts +0 -102
  582. package/src/utils/strip-verbose-meta.ts +0 -254
  583. package/tsconfig.json +0 -21
  584. package/types/application-types.d.ts +0 -27
  585. package/types/config.d.ts +0 -304
  586. /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.d.ts +0 -0
  587. /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.js +0 -0
@@ -4,13 +4,27 @@ export const getFileImportRelativePath = (from, to, packageMappings) => {
4
4
  if (!/^\.+\//.test(filePath)) {
5
5
  filePath = `./${filePath}`;
6
6
  }
7
- // If the path includes node_modules, strip everything before and including node_modules/
8
- if (filePath.includes('node_modules')) {
9
- const nodeModulesIndex = filePath.indexOf('node_modules/');
10
- if (nodeModulesIndex !== -1) {
11
- filePath = filePath.substring(nodeModulesIndex + 'node_modules/'.length);
7
+ const posixPath = filePath.replace(/\\/g, '/');
8
+ if (posixPath.includes('node_modules/')) {
9
+ const nodeModulesIndex = posixPath.indexOf('node_modules/');
10
+ filePath = posixPath.substring(nodeModulesIndex + 'node_modules/'.length);
11
+ if (filePath.startsWith('@types/')) {
12
+ filePath = filePath.substring('@types/'.length);
13
+ const parts = filePath.split('/');
14
+ if (parts[0].includes('__')) {
15
+ const [scope, name] = parts[0].split('__');
16
+ parts[0] = `@${scope}/${name}`;
17
+ filePath = parts.join('/');
18
+ }
19
+ }
20
+ if (filePath.endsWith('.d.ts')) {
21
+ filePath = filePath.slice(0, -5);
22
+ }
23
+ else if (filePath.endsWith('.ts')) {
24
+ filePath = filePath.slice(0, -3) + '.js';
12
25
  }
13
- return filePath.replace('.ts', '.js');
26
+ filePath = filePath.replace(/\/index$/, '').replace(/\/index\.js$/, '');
27
+ return filePath;
14
28
  }
15
29
  const absolutePath = resolve(dirname(from), to);
16
30
  const fromAbsolutePath = resolve(dirname(from));
@@ -1,9 +1,14 @@
1
- import { CLILogger } from '../services/cli-logger.service.js';
1
+ import type { CLILogger } from '../services/cli-logger.service.js';
2
2
  export declare const DO_NOT_MODIFY_COMMENT: string;
3
3
  export declare const writeFileInDir: (logger: CLILogger, path: string, content: string, { ignoreModifyComment, logWrite, }?: {
4
4
  ignoreModifyComment?: boolean;
5
5
  logWrite?: boolean;
6
6
  }) => Promise<void>;
7
+ export declare function kebabCase(str: string): string;
8
+ export declare function scaffoldFilePath(config: {
9
+ rootDir: string;
10
+ srcDirectories: string[];
11
+ }, subdir: string, name: string, suffix: string, overrideDir?: string): string;
7
12
  export declare const removeFileInDir: (logger: CLILogger, path: string, { logRemove }?: {
8
13
  logRemove?: boolean;
9
14
  }) => Promise<void>;
@@ -1,4 +1,4 @@
1
- import { dirname } from 'path';
1
+ import { dirname, join } from 'path';
2
2
  import { mkdir, readFile, writeFile, rm } from 'fs/promises';
3
3
  import { existsSync } from 'fs';
4
4
  import { getCLIVersion } from './get-cli-version.js';
@@ -39,6 +39,19 @@ export const writeFileInDir = async (logger, path, content, { ignoreModifyCommen
39
39
  }
40
40
  }
41
41
  };
42
+ export function kebabCase(str) {
43
+ return str
44
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
45
+ .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')
46
+ .toLowerCase();
47
+ }
48
+ export function scaffoldFilePath(config, subdir, name, suffix, overrideDir) {
49
+ const fileName = kebabCase(name);
50
+ if (overrideDir) {
51
+ return join(overrideDir, subdir, `${fileName}${suffix}`);
52
+ }
53
+ return join(config.rootDir, config.srcDirectories[0], subdir, `${fileName}${suffix}`);
54
+ }
42
55
  export const removeFileInDir = async (logger, path, { logRemove = true } = {}) => {
43
56
  // Check if file exists before attempting removal
44
57
  if (existsSync(path)) {
@@ -1,3 +1,3 @@
1
- import { Config } from '../../types/application-types.js';
2
- import { CLILogger } from '../services/cli-logger.service.js';
1
+ import type { Config } from '../../types/application-types.js';
2
+ import type { CLILogger } from '../services/cli-logger.service.js';
3
3
  export declare const generateBootstrapFile: (logger: CLILogger, config: Config, bootstrapFile: string, specificImports: string[], schemas?: boolean, hasMiddleware?: boolean) => Promise<void>;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Generates addon files from a parsed OpenAPI spec.
3
+ * Returns Record<string, string> compatible with getAddonFiles output.
4
+ */
5
+ import type { ParsedSpec } from './parse-openapi.js';
6
+ interface AddonVars {
7
+ name: string;
8
+ camelName: string;
9
+ pascalName: string;
10
+ screamingName: string;
11
+ displayName: string;
12
+ description: string;
13
+ }
14
+ interface CodegenFlags {
15
+ oauth: boolean;
16
+ secret: boolean;
17
+ }
18
+ export declare function generateAddonFromOpenAPI(spec: ParsedSpec, vars: AddonVars, flags: CodegenFlags): Record<string, string>;
19
+ export {};
@@ -0,0 +1,288 @@
1
+ import { schemaToZod, schemaVarName, createContext, } from './zod-codegen.js';
2
+ import { generateOperationNames, detectCommonPrefix, } from './naming.js';
3
+ const GENERIC_SUMMARIES = new Set([
4
+ 'index', 'show', 'create', 'update', 'destroy', 'delete', 'list',
5
+ ]);
6
+ function capitalize(str) {
7
+ return str.charAt(0).toUpperCase() + str.slice(1);
8
+ }
9
+ function humanDescription(named, parsed) {
10
+ if (parsed.responseDescription) {
11
+ return capitalize(parsed.responseDescription);
12
+ }
13
+ const summary = parsed.summary?.trim();
14
+ if (summary && !GENERIC_SUMMARIES.has(summary.toLowerCase())) {
15
+ return capitalize(summary);
16
+ }
17
+ if (parsed.description && !GENERIC_SUMMARIES.has(parsed.description.trim().toLowerCase())) {
18
+ return capitalize(parsed.description.trim());
19
+ }
20
+ const words = named.functionName
21
+ .replace(/([A-Z])/g, ' $1')
22
+ .trim()
23
+ .toLowerCase();
24
+ return capitalize(words);
25
+ }
26
+ export function generateAddonFromOpenAPI(spec, vars, flags) {
27
+ const files = {};
28
+ const { name } = vars;
29
+ // Build context for Zod codegen with component schema refs
30
+ const schemaRefs = new Map();
31
+ for (const schemaName of Object.keys(spec.componentSchemas)) {
32
+ schemaRefs.set(schemaName, schemaVarName(schemaName));
33
+ }
34
+ const ctx = createContext(schemaRefs);
35
+ // Generate operation names
36
+ const paths = spec.operations.map((op) => op.path);
37
+ const commonPrefix = detectCommonPrefix(paths);
38
+ const namedOps = generateOperationNames(spec.operations.map((op) => ({
39
+ method: op.method,
40
+ path: op.path,
41
+ operationId: op.operationId,
42
+ })), commonPrefix);
43
+ // Pair named operations with their parsed data
44
+ const opPairs = namedOps.map((named, i) => ({ named, parsed: spec.operations[i] }));
45
+ // Generate types file with shared schemas (only if there are any)
46
+ if (Object.keys(spec.componentSchemas).length > 0) {
47
+ files[`src/${name}.types.ts`] = generateTypesFile(spec, ctx);
48
+ }
49
+ // Generate function files
50
+ const functionExports = [];
51
+ for (const { named, parsed } of opPairs) {
52
+ const funcCtx = createContext(schemaRefs);
53
+ const funcCode = generateFunctionFile(named, parsed, vars, funcCtx);
54
+ files[`src/functions/${named.functionName}.function.ts`] = funcCode;
55
+ functionExports.push(named.functionName);
56
+ }
57
+ // Generate index.ts with all exports
58
+ files['src/index.ts'] = generateIndexFile(functionExports);
59
+ // Generate typed API service class with route map
60
+ files[`src/${name}-api.service.ts`] = generateServiceFile(spec, opPairs, vars, flags);
61
+ return files;
62
+ }
63
+ function generateTypesFile(spec, ctx) {
64
+ const lines = [];
65
+ lines.push("import { z } from 'zod'");
66
+ lines.push('');
67
+ lines.push(`// Shared schemas from ${spec.info.title} v${spec.info.version}`);
68
+ lines.push('');
69
+ for (const [name, schema] of Object.entries(spec.componentSchemas)) {
70
+ const varName = schemaVarName(name);
71
+ const zodCode = schemaToZod(schema, ctx);
72
+ lines.push(`export const ${varName} = ${zodCode}`);
73
+ lines.push(`export type ${name} = z.infer<typeof ${varName}>`);
74
+ lines.push('');
75
+ }
76
+ return lines.join('\n');
77
+ }
78
+ function generateFunctionFile(named, parsed, vars, ctx) {
79
+ const lines = [];
80
+ const { camelName } = vars;
81
+ const hasInput = parsed.pathParams.length > 0 ||
82
+ parsed.queryParams.length > 0 ||
83
+ parsed.requestBody;
84
+ const pascalName = named.functionName.charAt(0).toUpperCase() + named.functionName.slice(1);
85
+ const inputName = `${pascalName}Input`;
86
+ const outputName = `${pascalName}Output`;
87
+ lines.push("import { z } from 'zod'");
88
+ lines.push("import { pikkuSessionlessFunc } from '#pikku'");
89
+ lines.push('');
90
+ // Build Input schema (exported for pikku schema discovery)
91
+ if (hasInput) {
92
+ const inputCode = buildInputSchema(parsed, ctx);
93
+ lines.push(`export const ${inputName} = ${inputCode}`);
94
+ lines.push('');
95
+ }
96
+ // Build Output schema (exported for pikku schema discovery)
97
+ if (parsed.responseSchema) {
98
+ const outputCode = schemaToZod(parsed.responseSchema, ctx);
99
+ lines.push(`export const ${outputName} = ${outputCode}`);
100
+ lines.push('');
101
+ }
102
+ const description = humanDescription(named, parsed);
103
+ const method = parsed.method.toUpperCase();
104
+ const funcConfig = [];
105
+ funcConfig.push(` description: ${JSON.stringify(description)},`);
106
+ if (hasInput)
107
+ funcConfig.push(` input: ${inputName},`);
108
+ if (parsed.responseSchema)
109
+ funcConfig.push(` output: ${outputName},`);
110
+ const funcParams = hasInput
111
+ ? `{ ${camelName} }, data`
112
+ : `{ ${camelName} }`;
113
+ const returnCast = parsed.responseSchema ? ' as any' : '';
114
+ funcConfig.push(` func: async (${funcParams}) => {`, ` return ${camelName}.call('${method}', '${parsed.path}'${hasInput ? ', data' : ''})${returnCast}`, ' },');
115
+ lines.push(`export const ${named.functionName} = pikkuSessionlessFunc({`);
116
+ lines.push(funcConfig.join('\n'));
117
+ lines.push('})');
118
+ lines.push('');
119
+ return lines.join('\n');
120
+ }
121
+ function buildInputSchema(parsed, ctx) {
122
+ const props = [];
123
+ for (const param of parsed.pathParams) {
124
+ const zodCode = schemaToZod(param.schema, ctx, { optional: !param.required });
125
+ const desc = param.description
126
+ ? `${zodCode}.describe(${JSON.stringify(param.description)})`
127
+ : zodCode;
128
+ props.push(` ${param.name}: ${desc},`);
129
+ }
130
+ for (const param of parsed.queryParams) {
131
+ const zodCode = schemaToZod(param.schema, ctx, { optional: !param.required });
132
+ const desc = param.description
133
+ ? `${zodCode}.describe(${JSON.stringify(param.description)})`
134
+ : zodCode;
135
+ props.push(` ${param.name}: ${desc},`);
136
+ }
137
+ if (parsed.requestBody) {
138
+ if (parsed.requestBody.properties) {
139
+ const requiredSet = new Set(parsed.requestBody.required ?? []);
140
+ for (const [key, propSchema] of Object.entries(parsed.requestBody.properties)) {
141
+ const isOptional = !requiredSet.has(key);
142
+ const zodCode = schemaToZod(propSchema, ctx, { optional: isOptional });
143
+ props.push(` ${key}: ${zodCode},`);
144
+ }
145
+ }
146
+ else {
147
+ const bodyZod = schemaToZod(parsed.requestBody, ctx);
148
+ props.push(` body: ${bodyZod},`);
149
+ }
150
+ }
151
+ return `z.object({\n${props.join('\n')}\n})`;
152
+ }
153
+ function generateIndexFile(functionExports) {
154
+ const lines = [];
155
+ for (const name of functionExports) {
156
+ lines.push(`export { ${name} } from './functions/${name}.function.js'`);
157
+ }
158
+ lines.push('');
159
+ return lines.join('\n');
160
+ }
161
+ function generateServiceFile(spec, opPairs, vars, flags) {
162
+ const { name, pascalName, screamingName, displayName } = vars;
163
+ const lines = [];
164
+ const baseUrl = spec.baseUrl || 'https://api.example.com';
165
+ if (flags.oauth) {
166
+ lines.push("import { OAuth2Client } from '@pikku/core/oauth2'");
167
+ lines.push("import type { TypedSecretService } from '#pikku/secrets/pikku-secrets.gen.js'");
168
+ }
169
+ else if (flags.secret) {
170
+ lines.push(`import type { ${pascalName}Secrets } from './${name}.secret.js'`);
171
+ }
172
+ lines.push('');
173
+ lines.push(`const BASE_URL = ${JSON.stringify(baseUrl)}`);
174
+ lines.push('');
175
+ if (flags.oauth) {
176
+ lines.push(`export const ${screamingName}_OAUTH2_CONFIG = {`);
177
+ lines.push(` tokenSecretId: '${screamingName}_TOKENS',`);
178
+ lines.push(` authorizationUrl: 'https://example.com/oauth2/authorize',`);
179
+ lines.push(` tokenUrl: 'https://example.com/oauth2/token',`);
180
+ lines.push(" scopes: ['read', 'write'],");
181
+ lines.push('}');
182
+ lines.push('');
183
+ }
184
+ // Generate route map from parsed operations
185
+ const routes = {};
186
+ for (const { parsed } of opPairs) {
187
+ const key = `${parsed.method.toUpperCase()} ${parsed.path}`;
188
+ routes[key] = {
189
+ path: parsed.pathParams.map((p) => p.name),
190
+ query: parsed.queryParams.map((p) => p.name),
191
+ };
192
+ }
193
+ lines.push(`const ROUTES: Record<string, { path: string[], query: string[] }> = ${JSON.stringify(routes, null, 2)}`);
194
+ lines.push('');
195
+ // Class declaration
196
+ lines.push(`export class ${pascalName}Service {`);
197
+ if (flags.oauth) {
198
+ lines.push(' private oauth: OAuth2Client');
199
+ lines.push('');
200
+ lines.push(` constructor(secrets: TypedSecretService) {`);
201
+ lines.push(' this.oauth = new OAuth2Client(');
202
+ lines.push(` ${screamingName}_OAUTH2_CONFIG,`);
203
+ lines.push(` '${screamingName}_APP_CREDENTIALS',`);
204
+ lines.push(' secrets');
205
+ lines.push(' )');
206
+ lines.push(' }');
207
+ }
208
+ else if (flags.secret) {
209
+ lines.push(` constructor(private creds: ${pascalName}Secrets) {}`);
210
+ }
211
+ lines.push('');
212
+ // call() method — splits data into path/query/body using route map
213
+ lines.push(' async call<T>(');
214
+ lines.push(" method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',");
215
+ lines.push(' path: string,');
216
+ lines.push(' data?: Record<string, unknown>');
217
+ lines.push(' ): Promise<T> {');
218
+ lines.push(' const route = ROUTES[`${method} ${path}`]');
219
+ lines.push(' let endpoint = path');
220
+ lines.push(' let body: Record<string, unknown> | undefined');
221
+ lines.push(' const query: Record<string, string> = {}');
222
+ lines.push('');
223
+ lines.push(' if (data && route) {');
224
+ lines.push(' // Interpolate path params');
225
+ lines.push(' for (const param of route.path) {');
226
+ lines.push(' if (data[param] !== undefined) {');
227
+ lines.push(' endpoint = endpoint.replace(`{${param}}`, String(data[param]))');
228
+ lines.push(' }');
229
+ lines.push(' }');
230
+ lines.push(' // Extract query params');
231
+ lines.push(' for (const param of route.query) {');
232
+ lines.push(' if (data[param] !== undefined) {');
233
+ lines.push(' query[param] = String(data[param])');
234
+ lines.push(' }');
235
+ lines.push(' }');
236
+ lines.push(' // Everything else goes into body');
237
+ lines.push(' const pathAndQuery = new Set([...route.path, ...route.query])');
238
+ lines.push(' const remaining = Object.fromEntries(');
239
+ lines.push(' Object.entries(data).filter(([k]) => !pathAndQuery.has(k))');
240
+ lines.push(' )');
241
+ lines.push(' if (Object.keys(remaining).length > 0) {');
242
+ lines.push(' body = remaining');
243
+ lines.push(' }');
244
+ lines.push(' }');
245
+ lines.push('');
246
+ lines.push(' const url = new URL(`${BASE_URL}${endpoint}`)');
247
+ lines.push(' for (const [key, value] of Object.entries(query)) {');
248
+ lines.push(' url.searchParams.set(key, value)');
249
+ lines.push(' }');
250
+ lines.push('');
251
+ if (flags.oauth) {
252
+ lines.push(' const response = await this.oauth.request(url.toString(), {');
253
+ lines.push(' method,');
254
+ lines.push(" headers: { 'Content-Type': 'application/json' },");
255
+ lines.push(' body: body ? JSON.stringify(body) : undefined,');
256
+ lines.push(' })');
257
+ }
258
+ else if (flags.secret) {
259
+ lines.push(' const response = await fetch(url.toString(), {');
260
+ lines.push(' method,');
261
+ lines.push(' headers: {');
262
+ lines.push(" 'Content-Type': 'application/json',");
263
+ lines.push(' Authorization: `Bearer ${this.creds.apiKey}`,');
264
+ lines.push(' },');
265
+ lines.push(' body: body ? JSON.stringify(body) : undefined,');
266
+ lines.push(' })');
267
+ }
268
+ else {
269
+ lines.push(' const response = await fetch(url.toString(), {');
270
+ lines.push(' method,');
271
+ lines.push(" headers: { 'Content-Type': 'application/json' },");
272
+ lines.push(' body: body ? JSON.stringify(body) : undefined,');
273
+ lines.push(' })');
274
+ }
275
+ lines.push('');
276
+ lines.push(' if (!response.ok) {');
277
+ lines.push(' const errorText = await response.text()');
278
+ lines.push(` throw new Error(\`${displayName} API error (\${response.status}): \${errorText}\`)`);
279
+ lines.push(' }');
280
+ lines.push('');
281
+ lines.push(' const text = await response.text()');
282
+ lines.push(" if (!text) return {} as T");
283
+ lines.push(' return JSON.parse(text) as T');
284
+ lines.push(' }');
285
+ lines.push('}');
286
+ lines.push('');
287
+ return lines.join('\n');
288
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Derives function/method names from HTTP method + path.
3
+ * Uses operationId when available, otherwise generates from path segments.
4
+ */
5
+ export declare function singularize(word: string): string;
6
+ export declare function toCamelCase(str: string): string;
7
+ export declare function toPascalCase(str: string): string;
8
+ /**
9
+ * Strip common API prefix from paths (e.g. /api/v2/).
10
+ * Uses majority voting — a prefix shared by >75% of paths is stripped,
11
+ * so a few outlier paths (e.g. /oauth/...) don't break detection.
12
+ */
13
+ export declare function detectCommonPrefix(paths: string[]): string;
14
+ interface OperationForNaming {
15
+ method: string;
16
+ path: string;
17
+ operationId?: string;
18
+ }
19
+ export interface NamedOperation {
20
+ method: string;
21
+ path: string;
22
+ functionName: string;
23
+ methodName: string;
24
+ }
25
+ /**
26
+ * Generate function names for a list of operations.
27
+ * Handles collision detection and auto-deduplication.
28
+ */
29
+ export declare function generateOperationNames(operations: OperationForNaming[], commonPrefix: string): NamedOperation[];
30
+ export {};
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Derives function/method names from HTTP method + path.
3
+ * Uses operationId when available, otherwise generates from path segments.
4
+ */
5
+ const IRREGULAR_PLURALS = {
6
+ addresses: 'address',
7
+ statuses: 'status',
8
+ indices: 'index',
9
+ analyses: 'analysis',
10
+ quizzes: 'quiz',
11
+ matrices: 'matrix',
12
+ vertices: 'vertex',
13
+ aliases: 'alias',
14
+ buses: 'bus',
15
+ };
16
+ export function singularize(word) {
17
+ const lower = word.toLowerCase();
18
+ if (IRREGULAR_PLURALS[lower]) {
19
+ const singular = IRREGULAR_PLURALS[lower];
20
+ return word[0] === word[0].toUpperCase()
21
+ ? singular.charAt(0).toUpperCase() + singular.slice(1)
22
+ : singular;
23
+ }
24
+ if (lower.endsWith('ies') && lower.length > 4) {
25
+ return word.slice(0, -3) + 'y';
26
+ }
27
+ // -shes, -ches, -xes, -zes, -sses → drop "es"
28
+ if (lower.endsWith('shes') || lower.endsWith('ches') || lower.endsWith('xes') || lower.endsWith('zes') || lower.endsWith('sses')) {
29
+ return word.slice(0, -2);
30
+ }
31
+ // General: drop trailing "s" (covers courses→course, products→product, etc.)
32
+ if (lower.endsWith('s') && !lower.endsWith('ss') && !lower.endsWith('us') && lower.length > 2) {
33
+ return word.slice(0, -1);
34
+ }
35
+ return word;
36
+ }
37
+ export function toCamelCase(str) {
38
+ return str
39
+ .replace(/[^a-zA-Z0-9]+(.)/g, (_, c) => c.toUpperCase())
40
+ .replace(/^[A-Z]/, (c) => c.toLowerCase());
41
+ }
42
+ export function toPascalCase(str) {
43
+ const camel = toCamelCase(str);
44
+ return camel.charAt(0).toUpperCase() + camel.slice(1);
45
+ }
46
+ /**
47
+ * Strip common API prefix from paths (e.g. /api/v2/).
48
+ * Uses majority voting — a prefix shared by >75% of paths is stripped,
49
+ * so a few outlier paths (e.g. /oauth/...) don't break detection.
50
+ */
51
+ export function detectCommonPrefix(paths) {
52
+ if (paths.length === 0)
53
+ return '';
54
+ const segments = paths.map((p) => p.replace(/^\//, '').split('/'));
55
+ const threshold = Math.ceil(paths.length * 0.75);
56
+ // Find the longest prefix shared by at least `threshold` paths
57
+ let prefixLen = 0;
58
+ for (let i = 0; i < 10; i++) {
59
+ // Count how many paths have the same segment at position i as the first path
60
+ const candidateSeg = segments[0][i];
61
+ if (!candidateSeg || candidateSeg.startsWith('{'))
62
+ break;
63
+ const count = segments.filter((s) => s.length > i + 1 && s[i] === candidateSeg).length;
64
+ if (count >= threshold) {
65
+ prefixLen = i + 1;
66
+ }
67
+ else {
68
+ break;
69
+ }
70
+ }
71
+ if (prefixLen === 0)
72
+ return '';
73
+ return '/' + segments[0].slice(0, prefixLen).join('/') + '/';
74
+ }
75
+ /** Convert operationId to camelCase function name */
76
+ function fromOperationId(operationId) {
77
+ // operationId might be snake_case, camelCase, PascalCase, or kebab-case
78
+ return toCamelCase(operationId
79
+ .replace(/[^a-zA-Z0-9_-]/g, '_')
80
+ .replace(/_+/g, '_')
81
+ .replace(/^_|_$/g, ''));
82
+ }
83
+ const METHOD_PREFIXES = {
84
+ get: 'get',
85
+ post: 'create',
86
+ put: 'update',
87
+ patch: 'update',
88
+ delete: 'delete',
89
+ };
90
+ /**
91
+ * Generate function names for a list of operations.
92
+ * Handles collision detection and auto-deduplication.
93
+ */
94
+ export function generateOperationNames(operations, commonPrefix) {
95
+ const results = [];
96
+ const usedNames = new Map();
97
+ for (const op of operations) {
98
+ let name;
99
+ if (op.operationId) {
100
+ name = fromOperationId(op.operationId);
101
+ }
102
+ else {
103
+ name = deriveNameFromPath(op.method, op.path, commonPrefix);
104
+ }
105
+ // Handle collisions
106
+ const existing = usedNames.get(name) ?? 0;
107
+ if (existing > 0) {
108
+ usedNames.set(name, existing + 1);
109
+ name = `${name}${existing + 1}`;
110
+ }
111
+ usedNames.set(name, (usedNames.get(name) ?? 0) || 1);
112
+ results.push({
113
+ method: op.method,
114
+ path: op.path,
115
+ functionName: name,
116
+ methodName: name,
117
+ });
118
+ }
119
+ return results;
120
+ }
121
+ function deriveNameFromPath(method, path, commonPrefix) {
122
+ // Strip common prefix
123
+ let cleanPath = path;
124
+ if (commonPrefix && cleanPath.startsWith(commonPrefix)) {
125
+ cleanPath = '/' + cleanPath.slice(commonPrefix.length);
126
+ }
127
+ const segments = cleanPath
128
+ .replace(/^\//, '')
129
+ .split('/')
130
+ .filter(Boolean);
131
+ const methodLower = method.toLowerCase();
132
+ const prefix = METHOD_PREFIXES[methodLower] || methodLower;
133
+ // Separate param and non-param segments
134
+ const nonParams = [];
135
+ let hasTrailingParam = false;
136
+ for (let i = 0; i < segments.length; i++) {
137
+ if (segments[i].startsWith('{')) {
138
+ if (i === segments.length - 1) {
139
+ hasTrailingParam = true;
140
+ }
141
+ }
142
+ else {
143
+ nonParams.push(segments[i]);
144
+ }
145
+ }
146
+ if (nonParams.length === 0) {
147
+ return prefix;
148
+ }
149
+ // For GET with trailing param: singularize the last non-param segment
150
+ // For GET without trailing param: keep plural (list)
151
+ // For POST without trailing param: use prefix (create)
152
+ const parts = nonParams.map((seg, i) => {
153
+ const isLast = i === nonParams.length - 1;
154
+ let word = seg;
155
+ if (isLast && hasTrailingParam) {
156
+ word = singularize(word);
157
+ }
158
+ // For GET on collection (no trailing param), use "list" prefix instead of "get"
159
+ return toPascalCase(word);
160
+ });
161
+ // For GET on collection, use "list" instead of "get"
162
+ let finalPrefix = prefix;
163
+ if (methodLower === 'get' && !hasTrailingParam) {
164
+ finalPrefix = 'list';
165
+ }
166
+ return finalPrefix + parts.join('');
167
+ }
@@ -0,0 +1,36 @@
1
+ import type { OpenAPISchema } from './zod-codegen.js';
2
+ export interface ParsedSpec {
3
+ info: {
4
+ title: string;
5
+ version: string;
6
+ description?: string;
7
+ };
8
+ baseUrl: string;
9
+ authType: 'bearer' | 'oauth2' | 'apiKey' | 'none';
10
+ operations: ParsedOperation[];
11
+ componentSchemas: Record<string, OpenAPISchema>;
12
+ }
13
+ export interface ParsedOperation {
14
+ operationId?: string;
15
+ method: string;
16
+ path: string;
17
+ summary?: string;
18
+ description?: string;
19
+ tags: string[];
20
+ pathParams: ParsedParam[];
21
+ queryParams: ParsedParam[];
22
+ requestBody?: OpenAPISchema;
23
+ responseSchema?: OpenAPISchema;
24
+ responseDescription?: string;
25
+ }
26
+ export interface ParsedParam {
27
+ name: string;
28
+ required: boolean;
29
+ schema: OpenAPISchema;
30
+ description?: string;
31
+ }
32
+ /**
33
+ * Read and parse an OpenAPI spec from a file path.
34
+ * Supports both YAML (.yaml, .yml) and JSON (.json) files.
35
+ */
36
+ export declare function parseOpenAPISpec(filePath: string): Promise<ParsedSpec>;