@pikku/cli 0.12.21 → 0.12.23

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 (442) hide show
  1. package/cli.schema.json +1 -1
  2. package/console-app/assets/index-C52h1B_L.css +1 -0
  3. package/console-app/assets/index-CAk106ji.js +232 -0
  4. package/console-app/index.html +3 -6
  5. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  6. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +3 -3
  7. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  8. package/dist/.pikku/cli/pikku-cli-channel.d.ts +6 -6
  9. package/dist/.pikku/cli/pikku-cli-channel.js +280 -1
  10. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  11. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  12. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  13. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +782 -7
  14. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  15. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  16. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  17. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  18. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  19. package/dist/.pikku/function/pikku-function-types.gen.d.ts +41 -73
  20. package/dist/.pikku/function/pikku-function-types.gen.js +30 -40
  21. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  22. package/dist/.pikku/function/pikku-functions-meta.gen.json +1305 -378
  23. package/dist/.pikku/function/pikku-functions.gen.js +13 -1
  24. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  25. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  26. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
  27. package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +1 -62
  28. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -2
  29. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -2
  30. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  31. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  32. package/dist/.pikku/pikku-bootstrap.gen.d.ts +3 -1
  33. package/dist/.pikku/pikku-bootstrap.gen.js +3 -1
  34. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  35. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  36. package/dist/.pikku/pikku-services.gen.d.ts +2 -1
  37. package/dist/.pikku/pikku-services.gen.js +1 -0
  38. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  39. package/dist/.pikku/pikku-types.gen.js +1 -1
  40. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  41. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  42. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +1 -0
  43. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +6 -0
  44. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +250 -0
  45. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +4 -0
  46. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +5 -0
  47. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  48. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +66 -20
  49. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  50. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  51. package/dist/.pikku/schemas/register.gen.js +153 -29
  52. package/dist/.pikku/schemas/schemas/BinaryInput.schema.json +1 -0
  53. package/dist/.pikku/schemas/schemas/DbMigrateInput.schema.json +1 -0
  54. package/dist/.pikku/schemas/schemas/DbResetInput.schema.json +1 -0
  55. package/dist/.pikku/schemas/schemas/DbSeedInput.schema.json +1 -0
  56. package/dist/.pikku/schemas/schemas/FabricDbSchemaInput.schema.json +1 -0
  57. package/dist/.pikku/schemas/schemas/FabricDbSchemaOutput.schema.json +1 -0
  58. package/dist/.pikku/schemas/schemas/FabricDeployApplyInput.schema.json +1 -0
  59. package/dist/.pikku/schemas/schemas/FabricDeployApplyOutput.schema.json +1 -0
  60. package/dist/.pikku/schemas/schemas/FabricDeployListInput.schema.json +1 -0
  61. package/dist/.pikku/schemas/schemas/FabricDeployListOutput.schema.json +1 -0
  62. package/dist/.pikku/schemas/schemas/FabricDeployPlanInput.schema.json +1 -0
  63. package/dist/.pikku/schemas/schemas/FabricDeployPlanOutput.schema.json +1 -0
  64. package/dist/.pikku/schemas/schemas/FabricDeployUnitsInput.schema.json +1 -0
  65. package/dist/.pikku/schemas/schemas/FabricDeployUnitsOutput.schema.json +1 -0
  66. package/dist/.pikku/schemas/schemas/FabricDomainsAddInput.schema.json +1 -0
  67. package/dist/.pikku/schemas/schemas/FabricDomainsAddOutput.schema.json +1 -0
  68. package/dist/.pikku/schemas/schemas/FabricDomainsListInput.schema.json +1 -0
  69. package/dist/.pikku/schemas/schemas/FabricDomainsListOutput.schema.json +1 -0
  70. package/dist/.pikku/schemas/schemas/FabricDomainsRemoveInput.schema.json +1 -0
  71. package/dist/.pikku/schemas/schemas/FabricDomainsRemoveOutput.schema.json +1 -0
  72. package/dist/.pikku/schemas/schemas/FabricErrorsInput.schema.json +1 -0
  73. package/dist/.pikku/schemas/schemas/FabricErrorsOutput.schema.json +1 -0
  74. package/dist/.pikku/schemas/schemas/FabricInitInput.schema.json +1 -0
  75. package/dist/.pikku/schemas/schemas/FabricInitOutput.schema.json +1 -0
  76. package/dist/.pikku/schemas/schemas/FabricLLMKeyInput.schema.json +1 -0
  77. package/dist/.pikku/schemas/schemas/FabricLLMKeyOutput.schema.json +1 -0
  78. package/dist/.pikku/schemas/schemas/FabricLinkInput.schema.json +1 -0
  79. package/dist/.pikku/schemas/schemas/FabricLinkOutput.schema.json +1 -0
  80. package/dist/.pikku/schemas/schemas/FabricLoginInput.schema.json +1 -0
  81. package/dist/.pikku/schemas/schemas/FabricLoginOutput.schema.json +1 -0
  82. package/dist/.pikku/schemas/schemas/FabricLogsInput.schema.json +1 -0
  83. package/dist/.pikku/schemas/schemas/FabricLogsOutput.schema.json +1 -0
  84. package/dist/.pikku/schemas/schemas/FabricMetricsInput.schema.json +1 -0
  85. package/dist/.pikku/schemas/schemas/FabricMetricsOutput.schema.json +1 -0
  86. package/dist/.pikku/schemas/schemas/FabricRollbackInput.schema.json +1 -0
  87. package/dist/.pikku/schemas/schemas/FabricRollbackOutput.schema.json +1 -0
  88. package/dist/.pikku/schemas/schemas/FabricSecretsListInput.schema.json +1 -0
  89. package/dist/.pikku/schemas/schemas/FabricSecretsListOutput.schema.json +1 -0
  90. package/dist/.pikku/schemas/schemas/FabricSecretsSetInput.schema.json +1 -0
  91. package/dist/.pikku/schemas/schemas/FabricSecretsSetOutput.schema.json +1 -0
  92. package/dist/.pikku/schemas/schemas/FabricStatusInput.schema.json +1 -0
  93. package/dist/.pikku/schemas/schemas/FabricStatusOutput.schema.json +1 -0
  94. package/dist/.pikku/schemas/schemas/FabricTraceInput.schema.json +1 -0
  95. package/dist/.pikku/schemas/schemas/FabricTraceOutput.schema.json +1 -0
  96. package/dist/.pikku/schemas/schemas/FabricValidateInput.schema.json +1 -0
  97. package/dist/.pikku/schemas/schemas/FabricValidateOutput.schema.json +1 -0
  98. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  99. package/dist/.pikku/schemas/schemas/PikkuCLIEntryOutput.schema.json +1 -0
  100. package/dist/.pikku/schemas/schemas/PikkuEventsScaffoldOutput.schema.json +1 -0
  101. package/dist/.pikku/schemas/schemas/PikkuMetaClientsInput.schema.json +1 -0
  102. package/dist/.pikku/schemas/schemas/PikkuMetaContextInput.schema.json +1 -0
  103. package/dist/.pikku/schemas/schemas/PikkuMetaFunctionsGetInput.schema.json +1 -0
  104. package/dist/.pikku/schemas/schemas/PikkuMetaFunctionsListInput.schema.json +1 -0
  105. package/dist/.pikku/schemas/schemas/PikkuMetaMiddlewareGetInput.schema.json +1 -0
  106. package/dist/.pikku/schemas/schemas/PikkuMetaMiddlewareListInput.schema.json +1 -0
  107. package/dist/.pikku/schemas/schemas/PikkuMetaPermissionsGetInput.schema.json +1 -0
  108. package/dist/.pikku/schemas/schemas/PikkuMetaPermissionsListInput.schema.json +1 -0
  109. package/dist/.pikku/schemas/schemas/PikkuMetaSchemasGetInput.schema.json +1 -0
  110. package/dist/.pikku/schemas/schemas/PikkuMetaSchemasListInput.schema.json +1 -0
  111. package/dist/.pikku/schemas/schemas/PikkuMetaWiresChannelInput.schema.json +1 -0
  112. package/dist/.pikku/schemas/schemas/PikkuMetaWiresHttpInput.schema.json +1 -0
  113. package/dist/.pikku/schemas/schemas/PikkuMetaWiresListInput.schema.json +1 -0
  114. package/dist/.pikku/schemas/schemas/PikkuMetaWiresQueueInput.schema.json +1 -0
  115. package/dist/.pikku/schemas/schemas/PikkuMetaWiresSchedulerInput.schema.json +1 -0
  116. package/dist/.pikku/schemas/schemas/PikkuMetaWiresTriggerInput.schema.json +1 -0
  117. package/dist/.pikku/schemas/schemas/PikkuMetaWiresTypeInput.schema.json +1 -0
  118. package/dist/.pikku/schemas/schemas/PikkuMetaWorkflowsGetInput.schema.json +1 -0
  119. package/dist/.pikku/schemas/schemas/PikkuMetaWorkflowsListInput.schema.json +1 -0
  120. package/dist/.pikku/schemas/schemas/PikkuSkillsInstallInput.schema.json +1 -0
  121. package/dist/.pikku/schemas/schemas/PikkuSkillsListInput.schema.json +1 -0
  122. package/dist/.pikku/schemas/schemas/PikkuTestsCoverageInput.schema.json +1 -0
  123. package/dist/.pikku/schemas/schemas/PikkuTestsInitInput.schema.json +1 -0
  124. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  125. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  126. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  127. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  128. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  129. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  130. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  131. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  132. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  133. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  134. package/dist/.pikku/workflow/meta/allWorkflow.gen.json +235 -627
  135. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  136. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  137. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  138. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  139. package/dist/bin/pikku-bin.mjs +23 -0
  140. package/dist/bin/pikku.js +28 -1
  141. package/dist/src/cli.wiring.js +274 -8
  142. package/dist/src/deploy/analyzer/analyzer.d.ts +16 -1
  143. package/dist/src/deploy/analyzer/analyzer.js +83 -43
  144. package/dist/src/deploy/build-pipeline.js +83 -17
  145. package/dist/src/deploy/bundler/bundler.d.ts +1 -0
  146. package/dist/src/deploy/bundler/bundler.js +13 -5
  147. package/dist/src/deploy/codegen/per-unit-codegen.d.ts +8 -0
  148. package/dist/src/deploy/codegen/per-unit-codegen.js +46 -5
  149. package/dist/src/deploy/provider-adapter.d.ts +34 -0
  150. package/dist/src/deploy/server-entry.d.ts +16 -0
  151. package/dist/src/deploy/server-entry.js +81 -0
  152. package/dist/src/fabric/fabric-commands.d.ts +522 -0
  153. package/dist/src/fabric/fabric-commands.js +299 -0
  154. package/dist/src/fabric/functions/db-schema.function.d.ts +35 -0
  155. package/dist/src/fabric/functions/db-schema.function.js +37 -0
  156. package/dist/src/fabric/functions/deploy-list.function.d.ts +41 -0
  157. package/dist/src/fabric/functions/deploy-list.function.js +43 -0
  158. package/dist/src/fabric/functions/deploy-units.function.d.ts +35 -0
  159. package/dist/src/fabric/functions/deploy-units.function.js +41 -0
  160. package/dist/src/fabric/functions/deploy.function.d.ts +105 -0
  161. package/dist/src/fabric/functions/deploy.function.js +122 -0
  162. package/dist/src/fabric/functions/domains-add.function.d.ts +35 -0
  163. package/dist/src/fabric/functions/domains-add.function.js +46 -0
  164. package/dist/src/fabric/functions/domains-list.function.d.ts +20 -0
  165. package/dist/src/fabric/functions/domains-list.function.js +50 -0
  166. package/dist/src/fabric/functions/domains-remove.function.d.ts +24 -0
  167. package/dist/src/fabric/functions/domains-remove.function.js +44 -0
  168. package/dist/src/fabric/functions/errors.function.d.ts +44 -0
  169. package/dist/src/fabric/functions/errors.function.js +50 -0
  170. package/dist/src/fabric/functions/init.function.d.ts +51 -0
  171. package/dist/src/fabric/functions/init.function.js +54 -0
  172. package/dist/src/fabric/functions/link.function.d.ts +28 -0
  173. package/dist/src/fabric/functions/link.function.js +77 -0
  174. package/dist/src/fabric/functions/llm-key.function.d.ts +46 -0
  175. package/dist/src/fabric/functions/llm-key.function.js +76 -0
  176. package/dist/src/fabric/functions/login.function.d.ts +42 -0
  177. package/dist/src/fabric/functions/login.function.js +68 -0
  178. package/dist/src/fabric/functions/logs.function.d.ts +40 -0
  179. package/dist/src/fabric/functions/logs.function.js +84 -0
  180. package/dist/src/fabric/functions/metrics.function.d.ts +32 -0
  181. package/dist/src/fabric/functions/metrics.function.js +49 -0
  182. package/dist/src/fabric/functions/rollback.function.d.ts +76 -0
  183. package/dist/src/fabric/functions/rollback.function.js +69 -0
  184. package/dist/src/fabric/functions/secrets-list.function.d.ts +24 -0
  185. package/dist/src/fabric/functions/secrets-list.function.js +37 -0
  186. package/dist/src/fabric/functions/secrets-set.function.d.ts +32 -0
  187. package/dist/src/fabric/functions/secrets-set.function.js +36 -0
  188. package/dist/src/fabric/functions/status.function.d.ts +34 -0
  189. package/dist/src/fabric/functions/status.function.js +43 -0
  190. package/dist/src/fabric/functions/trace.function.d.ts +28 -0
  191. package/dist/src/fabric/functions/trace.function.js +45 -0
  192. package/dist/src/fabric/functions/validate.function.d.ts +50 -0
  193. package/dist/src/fabric/functions/validate.function.js +363 -0
  194. package/dist/src/fabric/lib/config.d.ts +64 -0
  195. package/dist/src/fabric/lib/config.js +62 -0
  196. package/dist/src/fabric/lib/console-url.d.ts +5 -0
  197. package/dist/src/fabric/lib/console-url.js +13 -0
  198. package/dist/src/fabric/lib/git.d.ts +53 -0
  199. package/dist/src/fabric/lib/git.js +151 -0
  200. package/dist/src/fabric/lib/http.d.ts +4 -0
  201. package/dist/src/fabric/lib/http.js +12 -0
  202. package/dist/src/fabric/lib/not-implemented.d.ts +5 -0
  203. package/dist/src/fabric/lib/not-implemented.js +8 -0
  204. package/dist/src/fabric/lib/output.d.ts +23 -0
  205. package/dist/src/fabric/lib/output.js +39 -0
  206. package/dist/src/fabric/lib/prompt.d.ts +12 -0
  207. package/dist/src/fabric/lib/prompt.js +32 -0
  208. package/dist/src/fabric/lib/stage.d.ts +7 -0
  209. package/dist/src/fabric/lib/stage.js +14 -0
  210. package/dist/src/fabric/sdk/pikku-fetch.gen.d.ts +14 -0
  211. package/dist/src/fabric/sdk/pikku-fetch.gen.js +30 -0
  212. package/dist/src/fabric/sdk/pikku-rpc.gen.d.ts +105 -0
  213. package/dist/src/fabric/sdk/pikku-rpc.gen.js +126 -0
  214. package/dist/src/functions/commands/all.d.ts +1 -1
  215. package/dist/src/functions/commands/binary.d.ts +7 -0
  216. package/dist/src/functions/commands/binary.js +40 -0
  217. package/dist/src/functions/commands/bootstrap.d.ts +1 -1
  218. package/dist/src/functions/commands/bootstrap.js +7 -4
  219. package/dist/src/functions/commands/console.d.ts +3 -3
  220. package/dist/src/functions/commands/db-migrate.d.ts +1 -0
  221. package/dist/src/functions/commands/db-migrate.js +35 -0
  222. package/dist/src/functions/commands/db-reset.d.ts +1 -0
  223. package/dist/src/functions/commands/db-reset.js +36 -0
  224. package/dist/src/functions/commands/db-seed.d.ts +1 -0
  225. package/dist/src/functions/commands/db-seed.js +27 -0
  226. package/dist/src/functions/commands/db-shared.d.ts +32 -0
  227. package/dist/src/functions/commands/db-shared.js +26 -0
  228. package/dist/src/functions/commands/deploy-apply.d.ts +3 -3
  229. package/dist/src/functions/commands/deploy-info.d.ts +1 -1
  230. package/dist/src/functions/commands/deploy-plan.d.ts +3 -3
  231. package/dist/src/functions/commands/dev.d.ts +3 -3
  232. package/dist/src/functions/commands/dev.js +142 -86
  233. package/dist/src/functions/commands/enable.d.ts +5 -4
  234. package/dist/src/functions/commands/enable.js +4 -0
  235. package/dist/src/functions/commands/info.d.ts +4 -4
  236. package/dist/src/functions/commands/load-user-project.d.ts +11 -0
  237. package/dist/src/functions/commands/load-user-project.js +40 -0
  238. package/dist/src/functions/commands/meta.d.ts +82 -0
  239. package/dist/src/functions/commands/meta.js +454 -0
  240. package/dist/src/functions/commands/new-addon.d.ts +3 -3
  241. package/dist/src/functions/commands/new-function.d.ts +3 -3
  242. package/dist/src/functions/commands/new-middleware.d.ts +3 -3
  243. package/dist/src/functions/commands/new-permission.d.ts +3 -3
  244. package/dist/src/functions/commands/new-wiring.d.ts +3 -3
  245. package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +1 -1
  246. package/dist/src/functions/commands/pikku-command-bootstrap.js +15 -1
  247. package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -1
  248. package/dist/src/functions/commands/pikku-command-summary.js +3 -0
  249. package/dist/src/functions/commands/skills.d.ts +26 -0
  250. package/dist/src/functions/commands/skills.js +184 -0
  251. package/dist/src/functions/commands/tests-coverage.d.ts +7 -0
  252. package/dist/src/functions/commands/tests-coverage.js +231 -0
  253. package/dist/src/functions/commands/tests-init.d.ts +7 -0
  254. package/dist/src/functions/commands/tests-init.js +225 -0
  255. package/dist/src/functions/commands/versions-check.d.ts +1 -1
  256. package/dist/src/functions/commands/versions-init.d.ts +3 -3
  257. package/dist/src/functions/commands/versions-update.d.ts +1 -1
  258. package/dist/src/functions/commands/watch.d.ts +3 -3
  259. package/dist/src/functions/commands/watch.js +1 -1
  260. package/dist/src/functions/db/local-db.d.ts +48 -0
  261. package/dist/src/functions/db/local-db.js +106 -0
  262. package/dist/src/functions/db/seed.d.ts +11 -0
  263. package/dist/src/functions/db/seed.js +22 -0
  264. package/dist/src/functions/db/sql-migrator.d.ts +26 -0
  265. package/dist/src/functions/db/sql-migrator.js +104 -0
  266. package/dist/src/functions/db/sqlite-codegen.d.ts +45 -0
  267. package/dist/src/functions/db/sqlite-codegen.js +294 -0
  268. package/dist/src/functions/db/zod-codegen.d.ts +10 -0
  269. package/dist/src/functions/db/zod-codegen.js +109 -0
  270. package/dist/src/functions/runtimes/fetch/index.d.ts +1 -1
  271. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
  272. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +21 -2
  273. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.d.ts +1 -0
  274. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.js +163 -0
  275. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.d.ts +1 -1
  276. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +5 -2
  277. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.d.ts +1 -0
  278. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.js +32 -0
  279. package/dist/src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.d.ts +11 -0
  280. package/dist/src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.js +36 -0
  281. package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -1
  282. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -1
  283. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -1
  284. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +1 -10
  285. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -1
  286. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +76 -1
  287. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
  288. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
  289. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
  290. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
  291. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
  292. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +5 -2
  293. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +5 -1
  294. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +8 -2
  295. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
  296. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +27 -9
  297. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +5 -1
  298. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +13 -3
  299. package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -1
  300. package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -1
  301. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -1
  302. package/dist/src/functions/wirings/console/serialize-console-functions.js +5 -0
  303. package/dist/src/functions/wirings/credentials/pikku-command-credentials.d.ts +1 -1
  304. package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +5 -1
  305. package/dist/src/functions/wirings/functions/pikku-command-addon-types.js +7 -2
  306. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -1
  307. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +1 -1
  308. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -1
  309. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
  310. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  311. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
  312. package/dist/src/functions/wirings/functions/serialize-function-types.js +78 -83
  313. package/dist/src/functions/wirings/gateway/pikku-command-gateway.d.ts +1 -1
  314. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
  315. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
  316. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
  317. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
  318. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
  319. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
  320. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
  321. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
  322. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
  323. package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +2 -2
  324. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
  325. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
  326. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
  327. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
  328. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
  329. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
  330. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
  331. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
  332. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.d.ts +1 -0
  333. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.js +26 -0
  334. package/dist/src/functions/wirings/realtime/pikku-command-realtime.d.ts +1 -0
  335. package/dist/src/functions/wirings/realtime/pikku-command-realtime.js +35 -0
  336. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.d.ts +23 -0
  337. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.js +98 -0
  338. package/dist/src/functions/wirings/realtime/serialize-realtime-client.d.ts +22 -0
  339. package/dist/src/functions/wirings/realtime/serialize-realtime-client.js +337 -0
  340. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
  341. package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -1
  342. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
  343. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
  344. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +3 -1
  345. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -2
  346. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +2 -1
  347. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +13 -7
  348. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +1 -0
  349. package/dist/src/functions/wirings/rpc/serialize-react-query-hooks.js +1 -1
  350. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +7 -1
  351. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
  352. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
  353. package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -1
  354. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +1 -1
  355. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.js +1 -1
  356. package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -1
  357. package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -1
  358. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.d.ts +1 -1
  359. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.js +1 -1
  360. package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +5 -1
  361. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +18 -4
  362. package/dist/src/functions/wirings/workflow/serialize-workflow-bootstrap-map.d.ts +3 -0
  363. package/dist/src/functions/wirings/workflow/serialize-workflow-bootstrap-map.js +40 -0
  364. package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +14 -2
  365. package/dist/src/functions/workflows/all.workflow.js +41 -8
  366. package/dist/src/scaffold/rpc-remote.gen.d.ts +3 -3
  367. package/dist/src/scaffold/rpc-remote.gen.js +7 -2
  368. package/dist/src/services/cli-logger.service.d.ts +0 -1
  369. package/dist/src/services/cli-logger.service.js +12 -22
  370. package/dist/src/services.js +24 -66
  371. package/dist/src/utils/generate-bootstrap-file.js +3 -0
  372. package/dist/src/utils/parse-cli-filters.d.ts +18 -0
  373. package/dist/src/utils/parse-cli-filters.js +99 -0
  374. package/dist/src/utils/pikku-cli-config.js +29 -9
  375. package/dist/src/utils/serialize-schemas.js +1 -1
  376. package/dist/tsconfig.tsbuildinfo +1 -1
  377. package/package.json +9 -4
  378. package/skills/pikku-addon/SKILL.md +330 -0
  379. package/skills/pikku-ai-agent/SKILL.md +227 -0
  380. package/skills/pikku-ai-vercel/SKILL.md +78 -0
  381. package/skills/pikku-ai-voice/SKILL.md +85 -0
  382. package/skills/pikku-auth-js/SKILL.md +106 -0
  383. package/skills/pikku-aws/SKILL.md +107 -0
  384. package/skills/pikku-backblaze/SKILL.md +70 -0
  385. package/skills/pikku-cli/SKILL.md +281 -0
  386. package/skills/pikku-concepts/SKILL.md +281 -0
  387. package/skills/pikku-concepts/references/concept-mapping.md +528 -0
  388. package/skills/pikku-config/SKILL.md +208 -0
  389. package/skills/pikku-cron/SKILL.md +211 -0
  390. package/skills/pikku-deploy-azure/SKILL.md +69 -0
  391. package/skills/pikku-deploy-cloudflare/SKILL.md +80 -0
  392. package/skills/pikku-deploy-express/SKILL.md +83 -0
  393. package/skills/pikku-deploy-fastify/SKILL.md +70 -0
  394. package/skills/pikku-deploy-lambda/SKILL.md +107 -0
  395. package/skills/pikku-deploy-nextjs/SKILL.md +76 -0
  396. package/skills/pikku-deploy-uws/SKILL.md +85 -0
  397. package/skills/pikku-fabric/SKILL.md +245 -0
  398. package/skills/pikku-feature/SKILL.md +258 -0
  399. package/skills/pikku-gateway-slack/SKILL.md +112 -0
  400. package/skills/pikku-http/SKILL.md +317 -0
  401. package/skills/pikku-i18n/SKILL.md +217 -0
  402. package/skills/pikku-info/SKILL.md +95 -0
  403. package/skills/pikku-jose/SKILL.md +102 -0
  404. package/skills/pikku-kysely/SKILL.md +145 -0
  405. package/skills/pikku-mcp/SKILL.md +237 -0
  406. package/skills/pikku-mongodb/SKILL.md +102 -0
  407. package/skills/pikku-n8n-addon-map/SKILL.md +178 -0
  408. package/skills/pikku-n8n-code-translate/SKILL.md +166 -0
  409. package/skills/pikku-pino/SKILL.md +77 -0
  410. package/skills/pikku-queue/SKILL.md +237 -0
  411. package/skills/pikku-react/SKILL.md +183 -0
  412. package/skills/pikku-react-query/SKILL.md +205 -0
  413. package/skills/pikku-realtime/SKILL.md +285 -0
  414. package/skills/pikku-redis/SKILL.md +87 -0
  415. package/skills/pikku-rpc/SKILL.md +168 -0
  416. package/skills/pikku-rtl/SKILL.md +219 -0
  417. package/skills/pikku-schedule/SKILL.md +54 -0
  418. package/skills/pikku-schema-ajv/SKILL.md +60 -0
  419. package/skills/pikku-schema-cfworker/SKILL.md +60 -0
  420. package/skills/pikku-security/SKILL.md +243 -0
  421. package/skills/pikku-services/SKILL.md +247 -0
  422. package/skills/pikku-template-clone/SKILL.md +39 -0
  423. package/skills/pikku-testing/SKILL.md +428 -0
  424. package/skills/pikku-trigger/SKILL.md +177 -0
  425. package/skills/pikku-versioning/SKILL.md +169 -0
  426. package/skills/pikku-websocket/SKILL.md +239 -0
  427. package/skills/pikku-workflow/SKILL.md +283 -0
  428. package/skills/pikku-workflows-client/SKILL.md +150 -0
  429. package/skills/pikku-ws/SKILL.md +45 -0
  430. package/console-app/assets/index-BpY2pSuA.css +0 -10
  431. package/console-app/assets/index-DXLy-_D4.js +0 -717
  432. package/dist/.pikku/schemas/schemas/GraphStarterInput.schema.json +0 -1
  433. package/dist/.pikku/schemas/schemas/GraphStarterOutput.schema.json +0 -1
  434. package/dist/.pikku/schemas/schemas/WorkflowRunStatus.schema.json +0 -1
  435. package/dist/.pikku/schemas/schemas/WorkflowRunnerInput.schema.json +0 -1
  436. package/dist/.pikku/schemas/schemas/WorkflowStarterInput.schema.json +0 -1
  437. package/dist/.pikku/schemas/schemas/WorkflowStarterOutput.schema.json +0 -1
  438. package/dist/.pikku/schemas/schemas/WorkflowStatusCheckerInput.schema.json +0 -1
  439. package/dist/.pikku/schemas/schemas/WorkflowStatusStreamFullInput.schema.json +0 -1
  440. package/dist/.pikku/schemas/schemas/WorkflowStatusStreamInput.schema.json +0 -1
  441. package/dist/src/scaffold/workflow-routes.gen.d.ts +0 -84
  442. package/dist/src/scaffold/workflow-routes.gen.js +0 -229
@@ -2,17 +2,23 @@ import { pikkuSessionlessFunc } from '#pikku';
2
2
  import { writeFileInDir } from '../../../utils/file-writer.js';
3
3
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
4
4
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
5
+ export function filterInternalRPCMeta(internalMeta, functionsMeta) {
6
+ const filteredInternalMeta = {};
7
+ for (const [key, value] of Object.entries(internalMeta)) {
8
+ if (key in functionsMeta || value in functionsMeta) {
9
+ filteredInternalMeta[key] = value;
10
+ }
11
+ }
12
+ return filteredInternalMeta;
13
+ }
5
14
  export const pikkuRPC = pikkuSessionlessFunc({
6
15
  func: async ({ logger, config, getInspectorState }) => {
7
16
  const { rpc, functions } = await getInspectorState();
8
17
  const { rpcInternalWiringMetaFile, rpcInternalWiringMetaJsonFile, packageMappings, schema, } = config;
9
- // Filter internal RPC meta to only include functions in the filtered meta
10
- const filteredInternalMeta = {};
11
- for (const [key, value] of Object.entries(rpc.internalMeta)) {
12
- if (key in functions.meta) {
13
- filteredInternalMeta[key] = value;
14
- }
15
- }
18
+ // Keep direct function ids and unversioned aliases whose target function
19
+ // survived filtering. Without the second check, aliases like `listCards`
20
+ // get dropped even though `listCards@v2` still exists.
21
+ const filteredInternalMeta = filterInternalRPCMeta(rpc.internalMeta, functions.meta);
16
22
  if (Object.keys(filteredInternalMeta).length > 0) {
17
23
  await writeFileInDir(logger, rpcInternalWiringMetaJsonFile, JSON.stringify(filteredInternalMeta, null, 2));
18
24
  const jsonImportPath = getFileImportRelativePath(rpcInternalWiringMetaFile, rpcInternalWiringMetaJsonFile, packageMappings);
@@ -13,6 +13,7 @@ export const rpcCaller = pikkuSessionlessFunc<
13
13
  { rpcName: string; data?: unknown },
14
14
  unknown
15
15
  >({
16
+ tags: ['pikku'],
16
17
  auth: ${authFlag},
17
18
  func: async (_services, { rpcName, data }, { rpc }) => {
18
19
  return await rpc.exposed(rpcName, data)
@@ -98,7 +98,7 @@ export const usePikkuInfiniteQuery = <Name extends PaginatedKeys>(
98
98
  const rpc = usePikkuRPC<{ invoke: RPCInvoke }>()
99
99
  return useInfiniteQuery({
100
100
  queryKey: [name, data] as const,
101
- queryFn: ({ pageParam }: { pageParam: string | undefined }) => rpc.invoke(name, { ...data, nextCursor: pageParam } as FlattenedRPCMap[Name]['input']),
101
+ queryFn: ({ pageParam }: { pageParam: string | undefined }) => rpc.invoke(name, { ...data, nextCursor: pageParam } as unknown as FlattenedRPCMap[Name]['input']),
102
102
  initialPageParam: undefined as string | undefined,
103
103
  getNextPageParam: (lastPage: FlattenedRPCMap[Name]['output']) => (lastPage as { nextCursor?: string }).nextCursor ?? undefined,
104
104
  ...options,
@@ -6,19 +6,25 @@ export const serializeRemoteRPC = (pathToPikkuTypes) => {
6
6
  * Auto-generated remote internal RPC queue worker and HTTP endpoint
7
7
  * Do not edit manually - regenerate with 'npx pikku'
8
8
  */
9
- import { pikkuSessionlessFunc, wireHTTP } from '${pathToPikkuTypes}'
9
+ import { pikkuSessionlessFunc, wireHTTP, wireQueueWorker } from '${pathToPikkuTypes}'
10
10
  import { pikkuRemoteAuthMiddleware } from '@pikku/core/middleware'
11
11
 
12
12
  export const remoteRPCHandler = pikkuSessionlessFunc<
13
13
  { rpcName: string, data?: unknown },
14
14
  unknown
15
15
  >({
16
+ tags: ['pikku'],
16
17
  func: async (_services, { rpcName, data }, { rpc }) => {
17
18
  return await (rpc.invoke as any)(rpcName, data)
18
19
  },
19
20
  remote: true,
20
21
  })
21
22
 
23
+ wireQueueWorker({
24
+ name: 'pikku-remote-internal-rpc',
25
+ func: remoteRPCHandler,
26
+ })
27
+
22
28
  wireHTTP({
23
29
  route: '/remote/rpc/:rpcName',
24
30
  method: 'post',
@@ -1 +1 @@
1
- export declare const pikkuSchedulerTypes: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuSchedulerTypes: 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 +1 @@
1
- export declare const pikkuScheduler: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuScheduler: 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 +1 @@
1
- export declare const pikkuSecrets: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuSecrets: 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 +1 @@
1
- export declare const pikkuTriggerTypes: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuTriggerTypes: 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>;
@@ -6,7 +6,7 @@ import { serializeTriggerTypes } from './serialize-trigger-types.js';
6
6
  export const pikkuTriggerTypes = pikkuSessionlessFunc({
7
7
  func: async ({ logger, config, getInspectorState }) => {
8
8
  const { triggersTypesFile, packageMappings } = config;
9
- const visitState = await getInspectorState();
9
+ const visitState = await getInspectorState(false, true);
10
10
  const { singletonServicesType } = visitState.filesAndMethods;
11
11
  if (!singletonServicesType) {
12
12
  throw new Error('SingletonServices type not found');
@@ -1 +1 @@
1
- export declare const pikkuTrigger: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuTrigger: 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 +1 @@
1
- export declare const pikkuVariables: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuVariables: 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 +1 @@
1
- export declare const pikkuWorkflowRoutes: import("#pikku").PikkuFunctionConfig<void, boolean, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ export declare const pikkuWorkflowRoutes: 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>;
@@ -5,7 +5,7 @@ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-
5
5
  import { serializeWorkflowRoutes } from './serialize-workflow-routes.js';
6
6
  export const pikkuWorkflowRoutes = pikkuSessionlessFunc({
7
7
  func: async ({ logger, config }) => {
8
- if (config.workflowRoutesFile) {
8
+ if (config.scaffold?.workflow && config.workflowRoutesFile) {
9
9
  const pathToPikkuTypes = getFileImportRelativePath(config.workflowRoutesFile, config.typesDeclarationFile, config.packageMappings);
10
10
  await writeFileInDir(logger, config.workflowRoutesFile, serializeWorkflowRoutes(pathToPikkuTypes, config.scaffold?.workflow === 'auth'));
11
11
  return true;
@@ -1 +1,5 @@
1
- export declare const pikkuWorkflow: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
1
+ type WorkflowCommandInput = {
2
+ bootstrap?: boolean;
3
+ };
4
+ export declare const pikkuWorkflow: import("#pikku").PikkuFunctionConfig<WorkflowCommandInput, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<WorkflowCommandInput, boolean | undefined, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<WorkflowCommandInput, boolean | undefined, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
5
+ export {};
@@ -5,13 +5,17 @@ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-
5
5
  import { serializeWorkflowTypes } from './serialize-workflow-types.js';
6
6
  import { serializeWorkflowRegistration } from './serialize-workflow-registration.js';
7
7
  import { serializeWorkflowMap } from './serialize-workflow-map.js';
8
+ import { serializeWorkflowBootstrapMap } from './serialize-workflow-bootstrap-map.js';
8
9
  import { serializeWorkflowMeta } from './serialize-workflow-meta.js';
9
10
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
10
11
  import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
11
12
  import { join } from 'path';
12
13
  export const pikkuWorkflow = pikkuSessionlessFunc({
13
- func: async ({ logger, config, getInspectorState }) => {
14
- const visitState = await getInspectorState();
14
+ func: async ({ logger, config, getInspectorState }, input) => {
15
+ const bootstrap = input?.bootstrap === true;
16
+ const visitState = bootstrap
17
+ ? await getInspectorState(false, true, false)
18
+ : await getInspectorState();
15
19
  const { workflowsWiringFile, workflowsWiringMetaFile, workflowMetaDir, workflowMapDeclarationFile, workflowTypesFile, functionTypesFile, packageMappings, schema, } = config;
16
20
  const { workflows, functions: functionState } = visitState;
17
21
  const { typesMap } = functionState;
@@ -24,7 +28,15 @@ export const pikkuWorkflow = pikkuSessionlessFunc({
24
28
  const hasRelevantWorkflows = allWorkflowNames.length > 0;
25
29
  const hasWorkflows = hasRelevantWorkflows;
26
30
  if (hasWorkflows) {
27
- const hasWorkflowState = visitState.serviceAggregation.allSingletonServices.includes('workflowService');
31
+ const singletonServices = visitState.serviceAggregation.allSingletonServices.length > 0
32
+ ? visitState.serviceAggregation.allSingletonServices
33
+ : visitState.typesLookup?.get('SingletonServices')?.[0]
34
+ ? visitState.typesLookup
35
+ .get('SingletonServices')[0]
36
+ .getProperties()
37
+ .map((symbol) => symbol.getName())
38
+ : [];
39
+ const hasWorkflowState = singletonServices.includes('workflowService');
28
40
  if (!hasWorkflowState) {
29
41
  logger.critical(ErrorCode.WORKFLOW_ORCHESTRATOR_NOT_CONFIGURED, 'Workflows detected but workflowService service not configured. Please add workflowService to your singleton services');
30
42
  throw new Error('WorkflowState service not configured but workflows are defined');
@@ -50,7 +62,9 @@ export const pikkuWorkflow = pikkuSessionlessFunc({
50
62
  const rpcMapImportPath = getFileImportRelativePath(workflowTypesFile, config.rpcInternalMapDeclarationFile, packageMappings);
51
63
  const workflowMapImportPath = getFileImportRelativePath(workflowTypesFile, workflowMapDeclarationFile, packageMappings);
52
64
  await writeFileInDir(logger, workflowTypesFile, serializeWorkflowTypes(functionTypesImportPath, rpcMapImportPath, workflowMapImportPath));
53
- await writeFileInDir(logger, workflowMapDeclarationFile, serializeWorkflowMap(logger, workflowMapDeclarationFile, packageMappings, typesMap, functionState.meta, workflows.meta, workflows.graphMeta, visitState.rpc?.wireAddonDeclarations));
65
+ await writeFileInDir(logger, workflowMapDeclarationFile, bootstrap
66
+ ? serializeWorkflowBootstrapMap(workflows.meta, workflows.graphMeta)
67
+ : serializeWorkflowMap(logger, workflowMapDeclarationFile, packageMappings, typesMap, functionState.meta, workflows.meta, workflows.graphMeta, visitState.rpc?.wireAddonDeclarations));
54
68
  return hasWorkflows;
55
69
  },
56
70
  middleware: [
@@ -0,0 +1,3 @@
1
+ import type { WorkflowsMeta } from '@pikku/core/workflow';
2
+ import type { SerializedWorkflowGraphs } from '@pikku/inspector/workflow-graph';
3
+ export declare const serializeWorkflowBootstrapMap: (workflowsMeta: WorkflowsMeta, graphMeta: SerializedWorkflowGraphs) => string;
@@ -0,0 +1,40 @@
1
+ export const serializeWorkflowBootstrapMap = (workflowsMeta, graphMeta) => {
2
+ const workflowEntries = Object.keys(workflowsMeta)
3
+ .sort()
4
+ .map((workflowName) => ` readonly '${workflowName}': WorkflowHandler<unknown, unknown>,`)
5
+ .join('\n');
6
+ const graphEntries = Object.entries(graphMeta)
7
+ .sort(([a], [b]) => a.localeCompare(b))
8
+ .map(([graphName, graph]) => {
9
+ const nodeEntries = Object.keys(graph.nodes)
10
+ .sort()
11
+ .map((nodeId) => ` readonly '${nodeId}': GraphNodeHandler<unknown>,`)
12
+ .join('\n');
13
+ return ` readonly '${graphName}': {\n${nodeEntries}\n },`;
14
+ })
15
+ .join('\n');
16
+ return `/**
17
+ * Bootstrap-safe workflow type map.
18
+ * Full input/output types are populated by the later \`pikku all\` pass.
19
+ */
20
+
21
+ interface WorkflowHandler<I, O> {
22
+ input: I;
23
+ output: O;
24
+ }
25
+
26
+ interface GraphNodeHandler<I> {
27
+ input: I;
28
+ }
29
+
30
+ export type WorkflowMap = {
31
+ ${workflowEntries}
32
+ };
33
+
34
+ export type GraphsMap = {
35
+ ${graphEntries}
36
+ };
37
+
38
+ export type FlattenedWorkflowMap = WorkflowMap
39
+ `;
40
+ };
@@ -23,8 +23,13 @@ export const workflowStarter = pikkuSessionlessFunc<
23
23
  { workflowName: string; data?: unknown },
24
24
  { runId: string }
25
25
  >({
26
+ tags: ['pikku'],
26
27
  auth: ${authFlag},
27
- func: async (_services, { workflowName, data }, { rpc }) => {
28
+ // workflowService is destructured (even though we delegate via rpc) so the
29
+ // analyzer assigns workflow-state capability to this unit — without it,
30
+ // rpc.startWorkflow() runs against a container missing workflowService.
31
+ func: async ({ workflowService }, { workflowName, data }, { rpc }) => {
32
+ assertWorkflowService(workflowService)
28
33
  return await rpc.startWorkflow(workflowName as any, (data ?? {}) as any)
29
34
  },
30
35
  })
@@ -33,6 +38,7 @@ export const workflowRunner = pikkuSessionlessFunc<
33
38
  { workflowName: string; data?: unknown },
34
39
  unknown
35
40
  >({
41
+ tags: ['pikku'],
36
42
  auth: ${authFlag},
37
43
  func: async ({ workflowService }, { workflowName, data }, { rpc }) => {
38
44
  assertWorkflowService(workflowService)
@@ -44,6 +50,7 @@ export const workflowStatusChecker = pikkuSessionlessFunc<
44
50
  { workflowName: string; runId: string },
45
51
  WorkflowRunStatus
46
52
  >({
53
+ tags: ['pikku'],
47
54
  auth: ${authFlag},
48
55
  func: async ({ workflowService }, { runId }) => {
49
56
  assertWorkflowService(workflowService)
@@ -61,6 +68,7 @@ export const workflowStatusStream = pikkuSessionlessFunc<
61
68
  { workflowName: string; runId: string },
62
69
  unknown
63
70
  >({
71
+ tags: ['pikku'],
64
72
  auth: ${authFlag},
65
73
  func: async ({ workflowRunService }, { runId }, { channel }) => {
66
74
  assertWorkflowRunService(workflowRunService)
@@ -147,6 +155,7 @@ export const workflowStatusStreamFull = pikkuSessionlessFunc<
147
155
  { workflowName: string; runId: string },
148
156
  unknown
149
157
  >({
158
+ tags: ['pikku'],
150
159
  auth: ${authFlag},
151
160
  func: async ({ workflowRunService }, { runId }, { channel }) => {
152
161
  assertWorkflowRunService(workflowRunService)
@@ -234,7 +243,10 @@ export const graphStarter = pikkuSessionlessFunc<
234
243
  { runId: string }
235
244
  >({
236
245
  auth: ${authFlag},
237
- func: async (_services, { workflowName, nodeId, data }, { rpc }) => {
246
+ // See workflowStarter destructure workflowService so the analyzer
247
+ // assigns workflow-state capability to this unit.
248
+ func: async ({ workflowService }, { workflowName, nodeId, data }, { rpc }) => {
249
+ assertWorkflowService(workflowService)
238
250
  return await rpc.startWorkflow(workflowName as any, (data ?? {}) as any, { startNode: nodeId })
239
251
  },
240
252
  })
@@ -14,6 +14,11 @@ const scaffoldFiles = (config) => {
14
14
  file: config.publicAgentFile,
15
15
  generator: 'pikkuPublicAgent',
16
16
  });
17
+ if (config.scaffold?.events && config.eventsChannelFile)
18
+ files.push({
19
+ file: config.eventsChannelFile,
20
+ generator: 'pikkuEventsScaffold',
21
+ });
17
22
  return files;
18
23
  };
19
24
  export const allWorkflow = pikkuWorkflowComplexFunc({
@@ -23,20 +28,30 @@ export const allWorkflow = pikkuWorkflowComplexFunc({
23
28
  let typesDeclarationFileExists = true;
24
29
  if (!existsSync(config.outDir)) {
25
30
  logger.debug(`• .pikku directory not found, running bootstrap first...`);
26
- await workflow.do('Bootstrap inspect', async () => getInspectorState(false, false, true));
31
+ await workflow.do('Bootstrap inspect', async () => getInspectorState(false, true, true));
32
+ await workflow.do('Bootstrap function types split', 'pikkuFunctionTypesSplit', null);
27
33
  await workflow.do('Bootstrap function types', 'pikkuFunctionTypes', null);
34
+ await workflow.do('Bootstrap addon types', 'pikkuAddonTypes', {
35
+ bootstrap: true,
36
+ });
28
37
  await Promise.all([
29
- workflow.do('Bootstrap function types split', 'pikkuFunctionTypesSplit', null),
30
38
  workflow.do('Bootstrap HTTP types', 'pikkuHTTPTypes', null),
31
39
  workflow.do('Bootstrap channel types', 'pikkuChannelTypes', null),
32
40
  workflow.do('Bootstrap scheduler types', 'pikkuSchedulerTypes', null),
33
41
  workflow.do('Bootstrap queue types', 'pikkuQueueTypes', null),
34
- workflow.do('Bootstrap workflow', 'pikkuWorkflow', null),
42
+ workflow.do('Bootstrap workflow', 'pikkuWorkflow', {
43
+ bootstrap: true,
44
+ }),
45
+ workflow.do('Bootstrap Trigger types', 'pikkuTriggerTypes', null),
35
46
  workflow.do('Bootstrap MCP types', 'pikkuMCPTypes', null),
36
47
  workflow.do('Bootstrap AI agent types', 'pikkuAIAgentTypes', null),
37
- workflow.do('Bootstrap CLI types', 'pikkuCLITypes', null),
38
48
  ]);
39
- await workflow.do('Bootstrap re-inspect', async () => getInspectorState(true));
49
+ await workflow.do('Bootstrap Node types', 'pikkuNodeTypes', null);
50
+ await workflow.do('Bootstrap Secret definition types', 'pikkuSecretDefinitionTypes', null);
51
+ await workflow.do('Bootstrap CLI types', 'pikkuCLITypes', {
52
+ bootstrap: true,
53
+ });
54
+ await workflow.do('Bootstrap re-inspect', async () => getInspectorState(true, true));
40
55
  }
41
56
  if (!existsSync(config.typesDeclarationFile)) {
42
57
  typesDeclarationFileExists = false;
@@ -59,9 +74,13 @@ export const allWorkflow = pikkuWorkflowComplexFunc({
59
74
  workflow.do('AI agent types', 'pikkuAIAgentTypes', null),
60
75
  ];
61
76
  if (!config.addon) {
62
- typeGenerators.push(workflow.do('HTTP types', 'pikkuHTTPTypes', null), workflow.do('Channel types', 'pikkuChannelTypes', null), workflow.do('Scheduler types', 'pikkuSchedulerTypes', null), workflow.do('Queue types', 'pikkuQueueTypes', null), workflow.do('MCP types', 'pikkuMCPTypes', null), workflow.do('CLI types', 'pikkuCLITypes', null));
77
+ typeGenerators.push(workflow.do('HTTP types', 'pikkuHTTPTypes', null), workflow.do('Channel types', 'pikkuChannelTypes', null), workflow.do('Scheduler types', 'pikkuSchedulerTypes', null), workflow.do('Queue types', 'pikkuQueueTypes', null), workflow.do('MCP types', 'pikkuMCPTypes', null));
63
78
  }
64
79
  await Promise.all(typeGenerators);
80
+ await workflow.do('Node types', 'pikkuNodeTypes', null);
81
+ if (!config.addon) {
82
+ await workflow.do('CLI types', 'pikkuCLITypes', null);
83
+ }
65
84
  const [middleware, permissions] = await Promise.all([
66
85
  workflow.do('Middleware', 'pikkuMiddleware', null),
67
86
  workflow.do('Permissions', 'pikkuPermissions', null),
@@ -91,7 +110,7 @@ export const allWorkflow = pikkuWorkflowComplexFunc({
91
110
  await Promise.all([
92
111
  workflow.do('Public RPC', 'pikkuPublicRPC', null),
93
112
  workflow.do('Console functions', 'pikkuConsoleFunctions', null),
94
- workflow.do('Node types', 'pikkuNodeTypes', null),
113
+ workflow.do('Events scaffold', 'pikkuEventsScaffold', null),
95
114
  workflow.do('Secret definition types', 'pikkuSecretDefinitionTypes', null),
96
115
  workflow.do('Secrets', 'pikkuSecrets', null),
97
116
  workflow.do('Credentials', 'pikkuCredentials', null),
@@ -138,6 +157,8 @@ export const allWorkflow = pikkuWorkflowComplexFunc({
138
157
  workflow.do('Fetch', 'pikkuFetch', null),
139
158
  workflow.do('RPC client', 'pikkuRPCClient', null),
140
159
  workflow.do('React query', 'pikkuReactQuery', null),
160
+ workflow.do('TanStack Start', 'pikkuTanStackStart', null),
161
+ workflow.do('Realtime client', 'pikkuRealtime', null),
141
162
  ]);
142
163
  allImports.push(config.httpWiringMetaFile, config.httpWiringsFile);
143
164
  }
@@ -186,8 +207,20 @@ export const allWorkflow = pikkuWorkflowComplexFunc({
186
207
  allImports.push(config.mcpWiringsMetaFile, config.mcpWiringsFile);
187
208
  }
188
209
  if (cli) {
189
- await workflow.do('CLI entry', 'pikkuCLIEntry', null);
210
+ const cliChannelGenerated = await workflow.do('CLI entry', 'pikkuCLIEntry', null);
190
211
  allImports.push(config.cliWiringMetaFile, config.cliWiringsFile);
212
+ if (cliChannelGenerated) {
213
+ await workflow.do('Re-inspect after CLI channel', async () => getInspectorState(true));
214
+ const cliChannels = await workflow.do('Channels after CLI', 'pikkuCommandChannels', null);
215
+ await workflow.do('Functions after CLI', 'pikkuFunctions', null);
216
+ await workflow.do('Schemas after CLI', 'pikkuSchemas', null);
217
+ if (cliChannels) {
218
+ await workflow.do('Channels map after CLI', 'pikkuChannelsMap', null);
219
+ if (!channels) {
220
+ allImports.push(config.channelsWiringMetaFile, config.channelsWiringFile);
221
+ }
222
+ }
223
+ }
191
224
  }
192
225
  }
193
226
  await workflow.do('Nodes meta', 'pikkuNodesMeta', null);
@@ -1,10 +1,10 @@
1
1
  export declare const remoteRPCHandler: import("../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
2
2
  rpcName: string;
3
3
  data?: unknown;
4
- }, unknown, "session" | "rpc", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
4
+ }, unknown, "rpc" | "session", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
5
5
  rpcName: string;
6
6
  data?: unknown;
7
- }, unknown, "session" | "rpc", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
7
+ }, unknown, "rpc" | "session", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
8
8
  rpcName: string;
9
9
  data?: unknown;
10
- }, unknown, "session" | "rpc", import("../../types/application-types.js").Services>, undefined, undefined>;
10
+ }, unknown, "rpc" | "session", import("../../types/application-types.js").Services>, undefined, undefined>;
@@ -1,18 +1,23 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.21
2
+ * This file was generated by @pikku/cli@0.12.23
3
3
  */
4
4
  /**
5
5
  * Auto-generated remote internal RPC queue worker and HTTP endpoint
6
6
  * Do not edit manually - regenerate with 'npx pikku'
7
7
  */
8
- import { pikkuSessionlessFunc, wireHTTP } from '../../.pikku/pikku-types.gen.js';
8
+ import { pikkuSessionlessFunc, wireHTTP, wireQueueWorker } from '../../.pikku/pikku-types.gen.js';
9
9
  import { pikkuRemoteAuthMiddleware } from '@pikku/core/middleware';
10
10
  export const remoteRPCHandler = pikkuSessionlessFunc({
11
+ tags: ['pikku'],
11
12
  func: async (_services, { rpcName, data }, { rpc }) => {
12
13
  return await rpc.invoke(rpcName, data);
13
14
  },
14
15
  remote: true,
15
16
  });
17
+ wireQueueWorker({
18
+ name: 'pikku-remote-internal-rpc',
19
+ func: remoteRPCHandler,
20
+ });
16
21
  wireHTTP({
17
22
  route: '/remote/rpc/:rpcName',
18
23
  method: 'post',
@@ -45,5 +45,4 @@ export declare class CLILogger implements Logger {
45
45
  critical(code: ErrorCode, message: string): void;
46
46
  hasCriticalErrors(): boolean;
47
47
  logLogo(): void;
48
- private primary;
49
48
  }
@@ -1,18 +1,14 @@
1
1
  import chalk from 'chalk';
2
2
  import { LogLevel } from '@pikku/core/services';
3
- const logo = `
4
- ______ _ _ _
5
- (_____ (_) | | |
6
- _____) )| | _| | _ _ _
7
- | ____/ | |_/ ) |_/ ) | | |
8
- | | | | _ (| _ (| _ (| |_| |
9
- |_| |_|_| _)_| _)____/
10
- `;
3
+ // Compact one-line wordmark — the old multi-line ASCII art got cropped in
4
+ // short/narrow AI-agent panes. Coloured directly (not via the blue `info`
5
+ // path) so the cyan/bold render correctly.
6
+ const logo = `${chalk.cyan('◇◆')} ${chalk.bold('pikku')} ${chalk.cyan.bold('::')}`;
11
7
  const BASE_ERROR_URL = 'https://pikku.dev/docs/pikku-cli/errors';
12
8
  const ANSI_ESCAPE_REGEX = /\x1B\[[0-?]*[ -/]*[@-~]/g;
13
9
  export class CLILogger {
14
10
  silent;
15
- level = LogLevel.warn; // default to warn level
11
+ level = LogLevel.info; // default to info level
16
12
  criticalErrors = [];
17
13
  outputMode = 'text';
18
14
  jsonFlushHookRegistered = false;
@@ -54,7 +50,10 @@ export class CLILogger {
54
50
  return str;
55
51
  }
56
52
  writeJSONLine(payload) {
57
- process.stdout.write(`${JSON.stringify(payload)}\n`);
53
+ // Logs go to stderr so stdout is reserved for command data output.
54
+ // This lets consumers pipe `pikku <cmd> --json | jq` or
55
+ // `pikku meta context --json | pikku plan ingest -` without log noise.
56
+ process.stderr.write(`${JSON.stringify(payload)}\n`);
58
57
  }
59
58
  ensureJSONFlushHook() {
60
59
  if (this.jsonFlushHookRegistered)
@@ -149,17 +148,8 @@ export class CLILogger {
149
148
  return this.criticalErrors.length > 0;
150
149
  }
151
150
  logLogo() {
152
- this.primary(logo);
153
- // // When running from dist/, __filename is dist/src/services/cli-logger.service.js
154
- // // So we need to go up 3 levels: dist/src/services -> dist/src -> dist -> package.json
155
- // const packageJson = JSON.parse(
156
- // readFileSync(`${dirname(__filename)}/../../../package.json`, 'utf-8')
157
- // )
158
- // this.primary(`⚙️ Welcome to the Pikku CLI (v${packageJson.version})\n`)
159
- }
160
- primary(message) {
161
- if (!this.silent) {
162
- this.emit('info', message);
163
- }
151
+ if (this.silent || this.outputMode === 'json')
152
+ return;
153
+ console.log(`\n${logo}\n`);
164
154
  }
165
155
  }