@pikku/cli 0.12.83 → 0.12.86

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 (274) hide show
  1. package/console-app/assets/index-CSzCJzBb.css +1 -0
  2. package/console-app/assets/{index-CN_U0k_D.js → index-Cr3_cO3Z.js} +161 -150
  3. package/console-app/index.html +2 -2
  4. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +3 -2
  5. package/dist/.pikku/{http/pikku-http-wirings.gen.d.ts → auth/auth.types.d.ts} +1 -1
  6. package/dist/.pikku/auth/auth.types.js +5 -0
  7. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  8. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  9. package/dist/.pikku/cli/pikku-cli-channel.d.ts +4 -4
  10. package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
  11. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  12. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  13. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
  14. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
  15. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.json +4 -0
  16. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  17. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  18. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  19. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +4 -0
  20. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  21. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  22. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  23. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  24. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  25. package/dist/.pikku/function/pikku-function-types.gen.d.ts +24 -14
  26. package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
  27. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  28. package/dist/.pikku/function/pikku-functions-meta.gen.json +45 -36
  29. package/dist/.pikku/function/pikku-functions.gen.js +3 -3
  30. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  31. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  32. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  33. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  34. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -5
  35. package/dist/.pikku/pikku-bootstrap.gen.js +1 -5
  36. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  37. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  38. package/dist/.pikku/pikku-services.gen.d.ts +2 -1
  39. package/dist/.pikku/pikku-services.gen.js +1 -0
  40. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  41. package/dist/.pikku/pikku-types.gen.js +1 -1
  42. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  43. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  44. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  45. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +2 -2
  46. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  47. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  48. package/dist/.pikku/schemas/register.gen.js +3 -7
  49. package/dist/.pikku/schemas/schemas/FabricLoginInput.schema.json +1 -1
  50. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  51. package/dist/.pikku/schemas/schemas/PikkuUserAdminFunctionsOutput.schema.json +1 -0
  52. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
  53. package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
  54. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
  55. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  56. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  57. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  58. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  59. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  60. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  61. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  62. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  63. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  64. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  65. package/dist/.pikku/workflow/meta/allWorkflow.gen.json +9 -3
  66. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +8 -2
  67. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  68. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  69. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  70. package/dist/bin/pikku-bin.mjs +2 -2
  71. package/dist/src/fabric/fabric-commands.d.ts +56 -53
  72. package/dist/src/fabric/fabric-commands.js +4 -0
  73. package/dist/src/fabric/functions/add.function.d.ts +2 -2
  74. package/dist/src/fabric/functions/addon-verify.function.d.ts +2 -2
  75. package/dist/src/fabric/functions/db-schema.function.d.ts +2 -2
  76. package/dist/src/fabric/functions/deploy-list.function.d.ts +2 -2
  77. package/dist/src/fabric/functions/deploy-units.function.d.ts +2 -2
  78. package/dist/src/fabric/functions/deploy.function.d.ts +4 -4
  79. package/dist/src/fabric/functions/domains-add.function.d.ts +2 -2
  80. package/dist/src/fabric/functions/domains-list.function.d.ts +2 -2
  81. package/dist/src/fabric/functions/domains-remove.function.d.ts +2 -2
  82. package/dist/src/fabric/functions/errors.function.d.ts +2 -2
  83. package/dist/src/fabric/functions/init.function.d.ts +2 -2
  84. package/dist/src/fabric/functions/link.function.d.ts +2 -2
  85. package/dist/src/fabric/functions/llm-key.function.d.ts +6 -6
  86. package/dist/src/fabric/functions/login.function.d.ts +6 -2
  87. package/dist/src/fabric/functions/login.function.js +45 -4
  88. package/dist/src/fabric/functions/logs.function.d.ts +2 -2
  89. package/dist/src/fabric/functions/metrics.function.d.ts +2 -2
  90. package/dist/src/fabric/functions/publish.function.d.ts +2 -2
  91. package/dist/src/fabric/functions/rollback.function.d.ts +2 -2
  92. package/dist/src/fabric/functions/secrets-list.function.d.ts +2 -2
  93. package/dist/src/fabric/functions/secrets-set.function.d.ts +2 -2
  94. package/dist/src/fabric/functions/smoke.function.d.ts +2 -2
  95. package/dist/src/fabric/functions/status.function.d.ts +2 -2
  96. package/dist/src/fabric/functions/trace.function.d.ts +2 -2
  97. package/dist/src/fabric/functions/validate.function.d.ts +2 -2
  98. package/dist/src/functions/commands/all.d.ts +1 -1
  99. package/dist/src/functions/commands/audit.d.ts +1 -1
  100. package/dist/src/functions/commands/binary.d.ts +2 -2
  101. package/dist/src/functions/commands/bootstrap.d.ts +1 -1
  102. package/dist/src/functions/commands/db-audit.d.ts +1 -1
  103. package/dist/src/functions/commands/db-generate.d.ts +1 -1
  104. package/dist/src/functions/commands/db-migrate.d.ts +1 -1
  105. package/dist/src/functions/commands/db-reset.d.ts +1 -1
  106. package/dist/src/functions/commands/db-seed.d.ts +1 -1
  107. package/dist/src/functions/commands/deploy-apply.d.ts +2 -2
  108. package/dist/src/functions/commands/deploy-info.d.ts +1 -1
  109. package/dist/src/functions/commands/deploy-plan.d.ts +2 -2
  110. package/dist/src/functions/commands/dev.d.ts +2 -2
  111. package/dist/src/functions/commands/emails-init.d.ts +1 -1
  112. package/dist/src/functions/commands/enable.d.ts +8 -8
  113. package/dist/src/functions/commands/import-n8n.d.ts +2 -2
  114. package/dist/src/functions/commands/info.d.ts +4 -4
  115. package/dist/src/functions/commands/login.d.ts +5 -5
  116. package/dist/src/functions/commands/meta.d.ts +25 -25
  117. package/dist/src/functions/commands/new-addon.d.ts +13 -2
  118. package/dist/src/functions/commands/new-addon.js +38 -4
  119. package/dist/src/functions/commands/new-function.d.ts +2 -2
  120. package/dist/src/functions/commands/new-middleware.d.ts +2 -2
  121. package/dist/src/functions/commands/new-permission.d.ts +2 -2
  122. package/dist/src/functions/commands/new-wiring.d.ts +2 -2
  123. package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +1 -1
  124. package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -1
  125. package/dist/src/functions/commands/scenario.d.ts +3 -3
  126. package/dist/src/functions/commands/scopes-audit.d.ts +1 -1
  127. package/dist/src/functions/commands/scopes-prune.d.ts +2 -2
  128. package/dist/src/functions/commands/serve.d.ts +2 -2
  129. package/dist/src/functions/commands/skills.d.ts +4 -4
  130. package/dist/src/functions/commands/versions-check.d.ts +1 -1
  131. package/dist/src/functions/commands/versions-init.d.ts +2 -2
  132. package/dist/src/functions/commands/versions-update.d.ts +1 -1
  133. package/dist/src/functions/commands/watch.d.ts +2 -2
  134. package/dist/src/functions/commands/workspace-validate.d.ts +2 -2
  135. package/dist/src/functions/runtimes/fetch/index.d.ts +1 -1
  136. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
  137. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.d.ts +1 -1
  138. package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -1
  139. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -1
  140. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +3 -2
  141. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -1
  142. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -1
  143. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.js +6 -2
  144. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -1
  145. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +3 -2
  146. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.d.ts +5 -1
  147. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +112 -40
  148. package/dist/src/functions/wirings/auth/pikku-command-auth.d.ts +2 -2
  149. package/dist/src/functions/wirings/auth/pikku-command-auth.js +4 -0
  150. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
  151. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
  152. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
  153. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
  154. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
  155. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
  156. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
  157. package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -1
  158. package/dist/src/functions/wirings/console/pikku-command-console-functions.js +6 -2
  159. package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -1
  160. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -1
  161. package/dist/src/functions/wirings/console/serialize-console-functions.d.ts +5 -1
  162. package/dist/src/functions/wirings/console/serialize-console-functions.js +55 -23
  163. package/dist/src/functions/wirings/credentials/pikku-command-credentials.d.ts +1 -1
  164. package/dist/src/functions/wirings/emails/pikku-command-emails.d.ts +1 -1
  165. package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -1
  166. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +2 -2
  167. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +2 -2
  168. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
  169. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +2 -2
  170. package/dist/src/functions/wirings/functions/pikku-command-services.js +9 -2
  171. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
  172. package/dist/src/functions/wirings/functions/schemas.js +10 -1
  173. package/dist/src/functions/wirings/functions/serialize-function-types.js +23 -12
  174. package/dist/src/functions/wirings/gateway/pikku-command-gateway.d.ts +1 -1
  175. package/dist/src/functions/wirings/graph/pikku-command-graph-wirings.d.ts +1 -1
  176. package/dist/src/functions/wirings/graph/pikku-command-graph-wirings.js +2 -0
  177. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
  178. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
  179. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
  180. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
  181. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
  182. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
  183. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
  184. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
  185. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
  186. package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +3 -3
  187. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
  188. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
  189. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
  190. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
  191. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
  192. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
  193. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
  194. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
  195. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.d.ts +1 -1
  196. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.js +8 -2
  197. package/dist/src/functions/wirings/realtime/pikku-command-realtime.d.ts +1 -1
  198. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.d.ts +5 -4
  199. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.js +17 -7
  200. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
  201. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +6 -2
  202. package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -1
  203. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
  204. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.js +6 -2
  205. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
  206. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +3 -3
  207. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
  208. package/dist/src/functions/wirings/rpc/serialize-public-rpc.d.ts +5 -1
  209. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +16 -5
  210. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.d.ts +5 -1
  211. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +16 -5
  212. package/dist/src/functions/wirings/scenarios/pikku-command-scenario-functions.d.ts +1 -1
  213. package/dist/src/functions/wirings/scenarios/pikku-command-scenario-functions.js +8 -2
  214. package/dist/src/functions/wirings/scenarios/serialize-scenario-functions.d.ts +5 -1
  215. package/dist/src/functions/wirings/scenarios/serialize-scenario-functions.js +22 -16
  216. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
  217. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
  218. package/dist/src/functions/wirings/scopes/pikku-command-scopes.d.ts +2 -2
  219. package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -1
  220. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +2 -2
  221. package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -1
  222. package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.d.ts +1 -0
  223. package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.js +49 -0
  224. package/dist/src/functions/wirings/user-admin/serialize-user-admin-functions.d.ts +24 -0
  225. package/dist/src/functions/wirings/user-admin/serialize-user-admin-functions.js +283 -0
  226. package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -1
  227. package/dist/src/functions/wirings/webhook/pikku-command-webhook.d.ts +1 -1
  228. package/dist/src/functions/wirings/webhook/pikku-command-webhook.js +6 -2
  229. package/dist/src/functions/wirings/webhook/serialize-webhook.d.ts +5 -8
  230. package/dist/src/functions/wirings/webhook/serialize-webhook.js +19 -12
  231. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.d.ts +1 -1
  232. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.js +8 -2
  233. package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
  234. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +2 -1
  235. package/dist/src/functions/wirings/workflow/serialize-workflow-routes.d.ts +5 -1
  236. package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +61 -31
  237. package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -1
  238. package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +8 -2
  239. package/dist/src/functions/workflows/all.workflow.js +8 -0
  240. package/dist/src/utils/pikku-cli-config.js +40 -10
  241. package/dist/src/utils/remove-legacy-scaffold-file.d.ts +3 -0
  242. package/dist/src/utils/remove-legacy-scaffold-file.js +43 -0
  243. package/dist/src/utils/serialize-schemas.js +57 -2
  244. package/dist/tsconfig.tsbuildinfo +1 -1
  245. package/package.json +6 -6
  246. package/skills/pikku-addon/SKILL.md +1 -0
  247. package/skills/pikku-ai-agent/SKILL.md +5 -4
  248. package/skills/pikku-ai-vercel/SKILL.md +1 -0
  249. package/skills/pikku-better-auth/SKILL.md +57 -0
  250. package/skills/pikku-concepts/SKILL.md +1 -1
  251. package/skills/pikku-concepts/references/concept-mapping.md +11 -9
  252. package/skills/pikku-emails/SKILL.md +1 -0
  253. package/skills/pikku-fabric-debug/SKILL.md +112 -0
  254. package/skills/pikku-permissions/SKILL.md +8 -8
  255. package/skills/pikku-react/SKILL.md +32 -3
  256. package/skills/pikku-react-query/SKILL.md +38 -1
  257. package/skills/pikku-realtime/SKILL.md +1 -1
  258. package/skills/pikku-security/SKILL.md +3 -3
  259. package/skills/pikku-services/SKILL.md +34 -0
  260. package/skills/pikku-template-clone/SKILL.md +1 -0
  261. package/cli.schema.json +0 -1
  262. package/console-app/assets/index-CpHRlBt-.css +0 -1
  263. package/dist/.pikku/http/pikku-http-wirings-meta.gen.d.ts +0 -1
  264. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +0 -6
  265. package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +0 -26
  266. package/dist/.pikku/http/pikku-http-wirings.gen.js +0 -5
  267. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +0 -1
  268. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +0 -6
  269. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +0 -10
  270. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +0 -4
  271. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +0 -5
  272. package/dist/.pikku/schemas/schemas/RemoteRPCHandlerInput.schema.json +0 -1
  273. package/dist/src/scaffold/rpc-remote.gen.d.ts +0 -10
  274. package/dist/src/scaffold/rpc-remote.gen.js +0 -27
@@ -42,6 +42,17 @@ ${wireServicesTypeName !== 'Services' ? `export type Services = ${wireServicesTy
42
42
  ${userSessionTypeName !== 'Session' ? `export type Session = ${userSessionTypeName}` : `export type { ${userSessionTypeName} as Session }`}
43
43
  ${configTypeImport.includes('Config type not found') ? 'export type Config = any' : ''}
44
44
 
45
+ /**
46
+ * The services a wired function actually receives. The inspector records which
47
+ * services each wired \`func\`, \`permissions\` and \`middleware\` destructures and
48
+ * emits them as \`RequiredSingletonServices\`; intersecting that here makes those
49
+ * services **non-optional** at every call site. A service is optional only when
50
+ * nothing destructures it — in which case it is never created either. This is
51
+ * why an \`if (!service)\` guard inside a function body is always dead code.
52
+ */
53
+ export type WiredSingletonServices = RequiredSingletonServices & SingletonServices
54
+ export type WiredServices = RequiredSingletonServices & Services
55
+
45
56
  /**
46
57
  * Inline node configuration for function definitions.
47
58
  */
@@ -59,7 +70,7 @@ export type NodeConfig = {
59
70
  * @template In - The input type that the permission check will receive
60
71
  * @template RequiredServices - The services required for this permission check
61
72
  */
62
- export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, PikkuWire<In, never, false, Session>>
73
+ export type PikkuPermission<In = unknown, RequiredServices extends Services = WiredServices> = CorePikkuPermission<In, RequiredServices, PikkuWire<In, never, false, Session>>
63
74
 
64
75
  /**
65
76
  * Type-safe middleware definition that can access your application's services and session.
@@ -67,12 +78,12 @@ export type PikkuPermission<In = unknown, RequiredServices extends Services = Se
67
78
  *
68
79
  * @template RequiredServices - The services required for this middleware
69
80
  */
70
- export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices>
81
+ export type PikkuMiddleware<RequiredServices extends SingletonServices = WiredSingletonServices> = CorePikkuMiddleware<RequiredServices>
71
82
 
72
83
  /**
73
84
  * Configuration object for creating a permission with metadata
74
85
  */
75
- export type PikkuPermissionConfig<In = unknown, RequiredServices extends Services = Services> = {
86
+ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Services = WiredServices> = {
76
87
  /** The permission function */
77
88
  func: PikkuPermission<In, RequiredServices>
78
89
  /** Optional human-readable name for the permission */
@@ -117,12 +128,12 @@ export const pikkuPermission = <In>(
117
128
  *
118
129
  * @template RequiredServices - The services required for this auth check
119
130
  */
120
- export type PikkuAuth<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuAuth<RequiredServices, Session>
131
+ export type PikkuAuth<RequiredServices extends SingletonServices = WiredSingletonServices> = CorePikkuAuth<RequiredServices, Session>
121
132
 
122
133
  /**
123
134
  * Configuration object for creating an auth permission with metadata
124
135
  */
125
- export type PikkuAuthConfig<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuAuthConfig<RequiredServices, Session>
136
+ export type PikkuAuthConfig<RequiredServices extends SingletonServices = WiredSingletonServices> = CorePikkuAuthConfig<RequiredServices, Session>
126
137
 
127
138
  /**
128
139
  * Factory function for creating auth-only permissions with tree-shaking support.
@@ -144,7 +155,7 @@ export type PikkuAuthConfig<RequiredServices extends SingletonServices = Singlet
144
155
  * })
145
156
  * \\\`\\\`\\\`
146
157
  */
147
- export const pikkuAuth = <RequiredServices extends SingletonServices = SingletonServices>(
158
+ export const pikkuAuth = <RequiredServices extends SingletonServices = WiredSingletonServices>(
148
159
  auth: PikkuAuth<RequiredServices> | PikkuAuthConfig<RequiredServices>
149
160
  ): PikkuPermission<any, any> => {
150
161
  return pikkuAuthCore(auth as any) as any
@@ -153,7 +164,7 @@ export const pikkuAuth = <RequiredServices extends SingletonServices = Singleton
153
164
  /**
154
165
  * Configuration object for creating middleware with metadata
155
166
  */
156
- export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = SingletonServices> = {
167
+ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = WiredSingletonServices> = {
157
168
  /** The middleware function */
158
169
  func: PikkuMiddleware<RequiredServices>
159
170
  /** Optional human-readable name for the middleware */
@@ -185,7 +196,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
185
196
  * })
186
197
  * \`\`\`
187
198
  */
188
- export const pikkuMiddleware = <RequiredServices extends SingletonServices = SingletonServices>(
199
+ export const pikkuMiddleware = <RequiredServices extends SingletonServices = WiredSingletonServices>(
189
200
  middleware: PikkuMiddleware<RequiredServices> | PikkuMiddlewareConfig<RequiredServices>
190
201
  ): PikkuMiddleware<RequiredServices> => {
191
202
  return typeof middleware === 'function' ? middleware : middleware.func
@@ -246,7 +257,7 @@ export const pikkuPermissionFactory = <In = any>(
246
257
  * @template In - The input type (same as the function it describes)
247
258
  * @template RequiredServices - The services required for this description function
248
259
  */
249
- export type PikkuApprovalDescription<In = unknown, RequiredServices extends Services = Services> = (
260
+ export type PikkuApprovalDescription<In = unknown, RequiredServices extends Services = WiredServices> = (
250
261
  services: RequiredServices,
251
262
  data: In
252
263
  ) => Promise<string>
@@ -264,7 +275,7 @@ export type PikkuApprovalDescription<In = unknown, RequiredServices extends Serv
264
275
  * )
265
276
  * \`\`\`
266
277
  */
267
- export const pikkuApprovalDescription = <In = unknown, RequiredServices extends Services = Services>(
278
+ export const pikkuApprovalDescription = <In = unknown, RequiredServices extends Services = WiredServices>(
268
279
  fn: PikkuApprovalDescription<In, RequiredServices>
269
280
  ): PikkuApprovalDescription<In, RequiredServices> => {
270
281
  return fn
@@ -282,7 +293,7 @@ export type PikkuFunctionSessionless<
282
293
  In = unknown,
283
294
  Out = never,
284
295
  RequiredWires extends keyof PikkuWire = never,
285
- RequiredServices extends Services = Services
296
+ RequiredServices extends Services = WiredServices
286
297
  > = CorePikkuFunctionSessionless<
287
298
  In,
288
299
  Out,
@@ -303,7 +314,7 @@ export type PikkuFunction<
303
314
  In = unknown,
304
315
  Out = never,
305
316
  RequiredWires extends keyof PikkuWire = 'session',
306
- RequiredServices extends Services = Services
317
+ RequiredServices extends Services = WiredServices
307
318
  > = CorePikkuFunction<
308
319
  In,
309
320
  Out,
@@ -1 +1 @@
1
- export declare const pikkuGateway: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuGateway: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuGraphWirings: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuGraphWirings: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -2,12 +2,14 @@ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
3
  import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { removeLegacyScaffoldFile } from '../../../utils/remove-legacy-scaffold-file.js';
5
6
  import { serializeGraphWirings } from './serialize-graph-wirings.js';
6
7
  export const pikkuGraphWirings = pikkuSessionlessFunc({
7
8
  func: async ({ logger, config }) => {
8
9
  if (config.scaffold?.graph && config.graphWiringsFile) {
9
10
  const pathToPikkuTypes = getFileImportRelativePath(config.graphWiringsFile, config.typesDeclarationFile, config.packageMappings);
10
11
  await writeFileInDir(logger, config.graphWiringsFile, serializeGraphWirings(pathToPikkuTypes));
12
+ await removeLegacyScaffoldFile(config.graphWiringsFile);
11
13
  return true;
12
14
  }
13
15
  return false;
@@ -1 +1 @@
1
- export declare const pikkuHTTPMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuHTTPMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuCommandHTTP: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuCommandHTTP: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuHTTPTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuHTTPTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuOpenAPI: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuOpenAPI: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuHTTP: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuHTTP: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuMCPJSON: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuMCPJSON: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuMCPTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuMCPTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuMCP: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuMCP: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuMiddleware: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuMiddleware: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1,3 +1,3 @@
1
- export declare const pikkuSecretDefinitionTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
2
- export declare const pikkuScopeDefinitionTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
3
- export declare const pikkuVariableDefinitionTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuSecretDefinitionTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
2
+ export declare const pikkuScopeDefinitionTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
3
+ export declare const pikkuVariableDefinitionTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuPackage: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuPackage: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuPermissions: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuPermissions: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuCommandQueueMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuCommandQueueMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuQueueService: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuQueueService: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuQueueTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuQueueTypes: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuCommandQueue: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuCommandQueue: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuQueueMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuQueueMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuQueue: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuQueue: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuEventsScaffold: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuEventsScaffold: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -2,10 +2,13 @@ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
3
  import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { removeLegacyScaffoldFile } from '../../../utils/remove-legacy-scaffold-file.js';
5
6
  import { serializeEventsScaffold } from './serialize-events-scaffold.js';
6
7
  export const pikkuEventsScaffold = pikkuSessionlessFunc({
7
8
  func: async ({ logger, config }) => {
8
- if (!config.scaffold?.events || !config.eventsChannelFile) {
9
+ if (!config.scaffold?.events ||
10
+ !config.eventsChannelFile ||
11
+ !config.eventsSchemasFile) {
9
12
  logger.debug({
10
13
  message: 'Skipping events scaffold (set scaffold.events in pikku.config.json to enable).',
11
14
  type: 'skip',
@@ -14,7 +17,10 @@ export const pikkuEventsScaffold = pikkuSessionlessFunc({
14
17
  }
15
18
  const authRequired = config.scaffold.events === 'auth';
16
19
  const pikkuTypesImportPath = getFileImportRelativePath(config.eventsChannelFile, config.typesDeclarationFile, config.packageMappings);
17
- await writeFileInDir(logger, config.eventsChannelFile, serializeEventsScaffold(authRequired, pikkuTypesImportPath));
20
+ const { schemas, functions } = serializeEventsScaffold(authRequired, pikkuTypesImportPath);
21
+ await writeFileInDir(logger, config.eventsSchemasFile, schemas);
22
+ await writeFileInDir(logger, config.eventsChannelFile, functions);
23
+ await removeLegacyScaffoldFile(config.eventsChannelFile);
18
24
  return true;
19
25
  },
20
26
  middleware: [
@@ -1 +1 @@
1
- export declare const pikkuRealtime: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuRealtime: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1,3 +1,7 @@
1
+ export interface EventsGenOutput {
2
+ schemas: string;
3
+ functions: string;
4
+ }
1
5
  /**
2
6
  * Generates the server-side `events.gen.ts` scaffold.
3
7
  *
@@ -16,8 +20,5 @@
16
20
  * Both routes call `eventHub.subscribe`/`unsubscribe` with the channel id;
17
21
  * publish-side ergonomics (envelope shape) are documented in the
18
22
  * pikku-realtime skill.
19
- *
20
- * Uses TypeScript generics (not named Zod schema constants) so schemas and
21
- * wiring calls can safely coexist in a single generated file.
22
23
  */
23
- export declare const serializeEventsScaffold: (authRequired: boolean, pikkuTypesImportPath: string) => string;
24
+ export declare const serializeEventsScaffold: (authRequired: boolean, pikkuTypesImportPath: string) => EventsGenOutput;
@@ -16,19 +16,25 @@
16
16
  * Both routes call `eventHub.subscribe`/`unsubscribe` with the channel id;
17
17
  * publish-side ergonomics (envelope shape) are documented in the
18
18
  * pikku-realtime skill.
19
- *
20
- * Uses TypeScript generics (not named Zod schema constants) so schemas and
21
- * wiring calls can safely coexist in a single generated file.
22
19
  */
23
20
  export const serializeEventsScaffold = (authRequired, pikkuTypesImportPath) => {
24
21
  const auth = authRequired ? 'true' : 'false';
25
- return `import {
22
+ const schemas = `/**
23
+ * Auto-generated realtime event schemas
24
+ * Do not edit manually - regenerate with 'npx pikku'
25
+ */
26
+ import { z } from 'zod'
27
+
28
+ export const TopicRef = z.object({ topic: z.string() })
29
+ `;
30
+ const functions = `import {
26
31
  pikkuChannelFunc,
27
32
  pikkuSessionlessFunc,
28
33
  wireChannel,
29
34
  wireHTTP,
30
35
  defineChannelRoutes,
31
36
  } from '${pikkuTypesImportPath}'
37
+ import { TopicRef } from './events.schemas.gen.js'
32
38
 
33
39
  /**
34
40
  * Topic envelope clients receive: \`{ topic, data }\`. Functions that publish
@@ -40,13 +46,15 @@ export const serializeEventsScaffold = (authRequired, pikkuTypesImportPath) => {
40
46
  * the duplication; pick whichever style your project prefers.
41
47
  */
42
48
 
43
- export const realtimeSubscribe = pikkuChannelFunc<{ topic: string }>({
49
+ export const realtimeSubscribe = pikkuChannelFunc({
50
+ input: TopicRef,
44
51
  func: async ({ eventHub }, { topic }, { channel }) => {
45
52
  await eventHub?.subscribe(topic, channel.channelId)
46
53
  },
47
54
  })
48
55
 
49
- export const realtimeUnsubscribe = pikkuChannelFunc<{ topic: string }>({
56
+ export const realtimeUnsubscribe = pikkuChannelFunc({
57
+ input: TopicRef,
50
58
  func: async ({ eventHub }, { topic }, { channel }) => {
51
59
  await eventHub?.unsubscribe(topic, channel.channelId)
52
60
  },
@@ -74,7 +82,8 @@ wireChannel({
74
82
  * SSE per-topic stream. One connection = one subscription. The eventHub
75
83
  * cleans up automatically when the channel closes (onChannelClosed).
76
84
  */
77
- export const realtimeEventStream = pikkuSessionlessFunc<{ topic: string }, void>({
85
+ export const realtimeEventStream = pikkuSessionlessFunc({
86
+ input: TopicRef,
78
87
  description: 'Auto-generated SSE stream for a single event-hub topic',
79
88
  func: async ({ eventHub }, { topic }, { channel }) => {
80
89
  if (!channel) {
@@ -95,4 +104,5 @@ wireHTTP({
95
104
  tags: ['pikku:realtime', 'sse'],
96
105
  })
97
106
  `;
107
+ return { schemas, functions };
98
108
  };
@@ -1 +1 @@
1
- export declare const pikkuPublicRPC: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuPublicRPC: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -2,6 +2,7 @@ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
3
  import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { removeLegacyScaffoldFile } from '../../../utils/remove-legacy-scaffold-file.js';
5
6
  import { serializePublicRPC } from './serialize-public-rpc.js';
6
7
  export const pikkuPublicRPC = pikkuSessionlessFunc({
7
8
  func: async ({ logger, config, variables }) => {
@@ -9,9 +10,12 @@ export const pikkuPublicRPC = pikkuSessionlessFunc({
9
10
  if (deployCodegenFlag === '1') {
10
11
  return false;
11
12
  }
12
- if (config.scaffold?.rpc) {
13
+ if (config.scaffold?.rpc && config.publicRpcSchemasFile) {
13
14
  const pathToPikkuTypes = getFileImportRelativePath(config.publicRpcFile, config.typesDeclarationFile, config.packageMappings);
14
- await writeFileInDir(logger, config.publicRpcFile, serializePublicRPC(pathToPikkuTypes, config.scaffold.rpc === 'auth', config.globalHTTPPrefix || ''));
15
+ const { schemas, functions } = serializePublicRPC(pathToPikkuTypes, config.scaffold.rpc === 'auth', config.globalHTTPPrefix || '');
16
+ await writeFileInDir(logger, config.publicRpcSchemasFile, schemas);
17
+ await writeFileInDir(logger, config.publicRpcFile, functions);
18
+ await removeLegacyScaffoldFile(config.publicRpcFile);
15
19
  return true;
16
20
  }
17
21
  return false;
@@ -1 +1 @@
1
- export declare const pikkuReactQuery: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuReactQuery: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1 +1 @@
1
- export declare const pikkuRemoteRPC: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuRemoteRPC: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -2,6 +2,7 @@ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
3
  import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { removeLegacyScaffoldFile } from '../../../utils/remove-legacy-scaffold-file.js';
5
6
  import { serializeRemoteRPC } from './serialize-remote-rpc.js';
6
7
  export const pikkuRemoteRPC = pikkuSessionlessFunc({
7
8
  func: async ({ logger, config, variables }) => {
@@ -9,9 +10,12 @@ export const pikkuRemoteRPC = pikkuSessionlessFunc({
9
10
  if (deployCodegenFlag === '1') {
10
11
  return false;
11
12
  }
12
- if (config.remoteRpcWorkersFile) {
13
+ if (config.remoteRpcWorkersFile && config.remoteRpcSchemasFile) {
13
14
  const pathToPikkuTypes = getFileImportRelativePath(config.remoteRpcWorkersFile, config.typesDeclarationFile, config.packageMappings);
14
- await writeFileInDir(logger, config.remoteRpcWorkersFile, serializeRemoteRPC(pathToPikkuTypes));
15
+ const { schemas, functions } = serializeRemoteRPC(pathToPikkuTypes);
16
+ await writeFileInDir(logger, config.remoteRpcSchemasFile, schemas);
17
+ await writeFileInDir(logger, config.remoteRpcWorkersFile, functions);
18
+ await removeLegacyScaffoldFile(config.remoteRpcWorkersFile);
15
19
  return true;
16
20
  }
17
21
  return false;
@@ -1 +1 @@
1
- export declare const pikkuRPCClient: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuRPCClient: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1,7 +1,7 @@
1
- export declare const pikkuRPCInternalMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
2
- export declare const pikkuRPCExposedMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuRPCInternalMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
2
+ export declare const pikkuRPCExposedMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
3
3
  /**
4
4
  * The `remote: true` surface — what a `wireRemoteAddon` consumer imports.
5
5
  * Mirrors the exposed map but is fed from `rpc.remoteMeta`.
6
6
  */
7
- export declare const pikkuRPCRemoteMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
7
+ export declare const pikkuRPCRemoteMap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1,2 +1,2 @@
1
1
  export declare function filterInternalRPCMeta(internalMeta: Record<string, string>, functionsMeta: Record<string, unknown>): Record<string, string>;
2
- export declare const pikkuRPC: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
2
+ export declare const pikkuRPC: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -1,4 +1,8 @@
1
+ export interface PublicRPCGenOutput {
2
+ schemas: string;
3
+ functions: string;
4
+ }
1
5
  /**
2
6
  * Generate public RPC HTTP endpoint
3
7
  */
4
- export declare const serializePublicRPC: (pathToPikkuTypes: string, requireAuth?: boolean, globalHTTPPrefix?: string) => string;
8
+ export declare const serializePublicRPC: (pathToPikkuTypes: string, requireAuth?: boolean, globalHTTPPrefix?: string) => PublicRPCGenOutput;
@@ -3,18 +3,28 @@
3
3
  */
4
4
  export const serializePublicRPC = (pathToPikkuTypes, requireAuth = true, globalHTTPPrefix = '') => {
5
5
  const authFlag = requireAuth ? 'true' : 'false';
6
- return `/**
6
+ const schemas = `/**
7
+ * Auto-generated public RPC endpoint schemas
8
+ * Do not edit manually - regenerate with 'npx pikku'
9
+ */
10
+ import { z } from 'zod'
11
+
12
+ export const RPCCall = z.object({
13
+ rpcName: z.string(),
14
+ data: z.unknown().optional(),
15
+ })
16
+ `;
17
+ const functions = `/**
7
18
  * Auto-generated public RPC HTTP endpoint
8
19
  * Do not edit manually - regenerate with 'npx pikku'
9
20
  */
10
21
  import { pikkuSessionlessFunc, wireHTTP } from '${pathToPikkuTypes}'
22
+ import { RPCCall } from './rpc-public.schemas.gen.js'
11
23
 
12
- export const rpcCaller = pikkuSessionlessFunc<
13
- { rpcName: string; data?: unknown },
14
- unknown
15
- >({
24
+ export const rpcCaller = pikkuSessionlessFunc({
16
25
  tags: ['pikku'],
17
26
  auth: ${authFlag},
27
+ input: RPCCall,
18
28
  func: async (_services, { rpcName, data }, { rpc }) => {
19
29
  return await rpc.exposed(rpcName, data)
20
30
  },
@@ -28,4 +38,5 @@ wireHTTP({
28
38
  func: rpcCaller,
29
39
  })
30
40
  `;
41
+ return { schemas, functions };
31
42
  };
@@ -1,4 +1,8 @@
1
+ export interface RemoteRPCGenOutput {
2
+ schemas: string;
3
+ functions: string;
4
+ }
1
5
  /**
2
6
  * Generate remote internal RPC queue worker and HTTP endpoint
3
7
  */
4
- export declare const serializeRemoteRPC: (pathToPikkuTypes: string) => string;
8
+ export declare const serializeRemoteRPC: (pathToPikkuTypes: string) => RemoteRPCGenOutput;
@@ -2,18 +2,28 @@
2
2
  * Generate remote internal RPC queue worker and HTTP endpoint
3
3
  */
4
4
  export const serializeRemoteRPC = (pathToPikkuTypes) => {
5
- return `/**
5
+ const schemas = `/**
6
+ * Auto-generated remote internal RPC schemas
7
+ * Do not edit manually - regenerate with 'npx pikku'
8
+ */
9
+ import { z } from 'zod'
10
+
11
+ export const RemoteRPCCall = z.object({
12
+ rpcName: z.string(),
13
+ data: z.unknown().optional(),
14
+ })
15
+ `;
16
+ const functions = `/**
6
17
  * Auto-generated remote internal RPC queue worker and HTTP endpoint
7
18
  * Do not edit manually - regenerate with 'npx pikku'
8
19
  */
9
20
  import { pikkuSessionlessFunc, wireHTTP, wireQueueWorker } from '${pathToPikkuTypes}'
10
21
  import { pikkuRemoteAuthMiddleware } from '@pikku/core/middleware'
22
+ import { RemoteRPCCall } from './rpc-remote.schemas.gen.js'
11
23
 
12
- export const remoteRPCHandler = pikkuSessionlessFunc<
13
- { rpcName: string, data?: unknown },
14
- unknown
15
- >({
24
+ export const remoteRPCHandler = pikkuSessionlessFunc({
16
25
  tags: ['pikku'],
26
+ input: RemoteRPCCall,
17
27
  func: async (_services, { rpcName, data }, { rpc }) => {
18
28
  return await (rpc.invoke as any)(rpcName, data)
19
29
  },
@@ -35,4 +45,5 @@ wireHTTP({
35
45
  func: remoteRPCHandler,
36
46
  })
37
47
  `;
48
+ return { schemas, functions };
38
49
  };
@@ -1 +1 @@
1
- export declare const pikkuScenarioFunctions: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuScenarioFunctions: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
@@ -2,6 +2,7 @@ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
3
  import { writeFileInDir } from '../../../utils/file-writer.js';
4
4
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { removeLegacyScaffoldFile } from '../../../utils/remove-legacy-scaffold-file.js';
5
6
  import { serializeScenarioFunctions } from './serialize-scenario-functions.js';
6
7
  export const pikkuScenarioFunctions = pikkuSessionlessFunc({
7
8
  func: async ({ logger, config, variables }) => {
@@ -9,9 +10,14 @@ export const pikkuScenarioFunctions = pikkuSessionlessFunc({
9
10
  if (deployCodegenFlag === '1') {
10
11
  return false;
11
12
  }
12
- if (config.scaffold?.scenarios && config.scenariosFunctionsFile) {
13
+ if (config.scaffold?.scenarios &&
14
+ config.scenariosFunctionsFile &&
15
+ config.scenariosSchemasFile) {
13
16
  const pathToPikkuTypes = getFileImportRelativePath(config.scenariosFunctionsFile, config.typesDeclarationFile, config.packageMappings);
14
- await writeFileInDir(logger, config.scenariosFunctionsFile, serializeScenarioFunctions(pathToPikkuTypes, config.scaffold.scenarios === 'auth'));
17
+ const { schemas, functions } = serializeScenarioFunctions(pathToPikkuTypes, config.scaffold.scenarios === 'auth');
18
+ await writeFileInDir(logger, config.scenariosSchemasFile, schemas);
19
+ await writeFileInDir(logger, config.scenariosFunctionsFile, functions);
20
+ await removeLegacyScaffoldFile(config.scenariosFunctionsFile);
15
21
  return true;
16
22
  }
17
23
  return false;