@pikku/cli 0.12.20 → 0.12.22

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 (455) 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 +792 -8
  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 +44 -70
  20. package/dist/.pikku/function/pikku-function-types.gen.js +33 -40
  21. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  22. package/dist/.pikku/function/pikku-functions-meta.gen.json +1439 -316
  23. package/dist/.pikku/function/pikku-functions.gen.js +21 -9
  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.gen.d.ts +1 -1
  28. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
  29. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  30. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  31. package/dist/.pikku/pikku-bootstrap.gen.d.ts +3 -1
  32. package/dist/.pikku/pikku-bootstrap.gen.js +3 -1
  33. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  34. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  35. package/dist/.pikku/pikku-services.gen.d.ts +2 -1
  36. package/dist/.pikku/pikku-services.gen.js +1 -0
  37. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  38. package/dist/.pikku/pikku-types.gen.js +1 -1
  39. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  40. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  41. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +1 -0
  42. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +6 -0
  43. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +250 -0
  44. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +4 -0
  45. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +5 -0
  46. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  47. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +66 -10
  48. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  49. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  50. package/dist/.pikku/schemas/register.gen.js +157 -11
  51. package/dist/.pikku/schemas/schemas/BinaryInput.schema.json +1 -0
  52. package/dist/.pikku/schemas/schemas/DbMigrateInput.schema.json +1 -0
  53. package/dist/.pikku/schemas/schemas/DbResetInput.schema.json +1 -0
  54. package/dist/.pikku/schemas/schemas/DbSeedInput.schema.json +1 -0
  55. package/dist/.pikku/schemas/schemas/FabricDbSchemaInput.schema.json +1 -0
  56. package/dist/.pikku/schemas/schemas/FabricDbSchemaOutput.schema.json +1 -0
  57. package/dist/.pikku/schemas/schemas/FabricDeployApplyInput.schema.json +1 -0
  58. package/dist/.pikku/schemas/schemas/FabricDeployApplyOutput.schema.json +1 -0
  59. package/dist/.pikku/schemas/schemas/FabricDeployListInput.schema.json +1 -0
  60. package/dist/.pikku/schemas/schemas/FabricDeployListOutput.schema.json +1 -0
  61. package/dist/.pikku/schemas/schemas/FabricDeployPlanInput.schema.json +1 -0
  62. package/dist/.pikku/schemas/schemas/FabricDeployPlanOutput.schema.json +1 -0
  63. package/dist/.pikku/schemas/schemas/FabricDeployUnitsInput.schema.json +1 -0
  64. package/dist/.pikku/schemas/schemas/FabricDeployUnitsOutput.schema.json +1 -0
  65. package/dist/.pikku/schemas/schemas/FabricDomainsAddInput.schema.json +1 -0
  66. package/dist/.pikku/schemas/schemas/FabricDomainsAddOutput.schema.json +1 -0
  67. package/dist/.pikku/schemas/schemas/FabricDomainsListInput.schema.json +1 -0
  68. package/dist/.pikku/schemas/schemas/FabricDomainsListOutput.schema.json +1 -0
  69. package/dist/.pikku/schemas/schemas/FabricDomainsRemoveInput.schema.json +1 -0
  70. package/dist/.pikku/schemas/schemas/FabricDomainsRemoveOutput.schema.json +1 -0
  71. package/dist/.pikku/schemas/schemas/FabricErrorsInput.schema.json +1 -0
  72. package/dist/.pikku/schemas/schemas/FabricErrorsOutput.schema.json +1 -0
  73. package/dist/.pikku/schemas/schemas/FabricInitInput.schema.json +1 -0
  74. package/dist/.pikku/schemas/schemas/FabricInitOutput.schema.json +1 -0
  75. package/dist/.pikku/schemas/schemas/FabricLLMKeyInput.schema.json +1 -0
  76. package/dist/.pikku/schemas/schemas/FabricLLMKeyOutput.schema.json +1 -0
  77. package/dist/.pikku/schemas/schemas/FabricLinkInput.schema.json +1 -0
  78. package/dist/.pikku/schemas/schemas/FabricLinkOutput.schema.json +1 -0
  79. package/dist/.pikku/schemas/schemas/FabricLoginInput.schema.json +1 -0
  80. package/dist/.pikku/schemas/schemas/FabricLoginOutput.schema.json +1 -0
  81. package/dist/.pikku/schemas/schemas/FabricLogsInput.schema.json +1 -0
  82. package/dist/.pikku/schemas/schemas/FabricLogsOutput.schema.json +1 -0
  83. package/dist/.pikku/schemas/schemas/FabricMetricsInput.schema.json +1 -0
  84. package/dist/.pikku/schemas/schemas/FabricMetricsOutput.schema.json +1 -0
  85. package/dist/.pikku/schemas/schemas/FabricRollbackInput.schema.json +1 -0
  86. package/dist/.pikku/schemas/schemas/FabricRollbackOutput.schema.json +1 -0
  87. package/dist/.pikku/schemas/schemas/FabricSecretsListInput.schema.json +1 -0
  88. package/dist/.pikku/schemas/schemas/FabricSecretsListOutput.schema.json +1 -0
  89. package/dist/.pikku/schemas/schemas/FabricSecretsSetInput.schema.json +1 -0
  90. package/dist/.pikku/schemas/schemas/FabricSecretsSetOutput.schema.json +1 -0
  91. package/dist/.pikku/schemas/schemas/FabricStatusInput.schema.json +1 -0
  92. package/dist/.pikku/schemas/schemas/FabricStatusOutput.schema.json +1 -0
  93. package/dist/.pikku/schemas/schemas/FabricTraceInput.schema.json +1 -0
  94. package/dist/.pikku/schemas/schemas/FabricTraceOutput.schema.json +1 -0
  95. package/dist/.pikku/schemas/schemas/FabricValidateInput.schema.json +1 -0
  96. package/dist/.pikku/schemas/schemas/FabricValidateOutput.schema.json +1 -0
  97. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  98. package/dist/.pikku/schemas/schemas/PikkuCommandChannelsOutput.schema.json +1 -0
  99. package/dist/.pikku/schemas/schemas/PikkuCommandHTTPOutput.schema.json +1 -0
  100. package/dist/.pikku/schemas/schemas/PikkuCommandQueueOutput.schema.json +1 -0
  101. package/dist/.pikku/schemas/schemas/PikkuEventsScaffoldOutput.schema.json +1 -0
  102. package/dist/.pikku/schemas/schemas/PikkuMetaClientsInput.schema.json +1 -0
  103. package/dist/.pikku/schemas/schemas/PikkuMetaContextInput.schema.json +1 -0
  104. package/dist/.pikku/schemas/schemas/PikkuMetaFunctionsGetInput.schema.json +1 -0
  105. package/dist/.pikku/schemas/schemas/PikkuMetaFunctionsListInput.schema.json +1 -0
  106. package/dist/.pikku/schemas/schemas/PikkuMetaMiddlewareGetInput.schema.json +1 -0
  107. package/dist/.pikku/schemas/schemas/PikkuMetaMiddlewareListInput.schema.json +1 -0
  108. package/dist/.pikku/schemas/schemas/PikkuMetaPermissionsGetInput.schema.json +1 -0
  109. package/dist/.pikku/schemas/schemas/PikkuMetaPermissionsListInput.schema.json +1 -0
  110. package/dist/.pikku/schemas/schemas/PikkuMetaSchemasGetInput.schema.json +1 -0
  111. package/dist/.pikku/schemas/schemas/PikkuMetaSchemasListInput.schema.json +1 -0
  112. package/dist/.pikku/schemas/schemas/PikkuMetaWiresChannelInput.schema.json +1 -0
  113. package/dist/.pikku/schemas/schemas/PikkuMetaWiresHttpInput.schema.json +1 -0
  114. package/dist/.pikku/schemas/schemas/PikkuMetaWiresListInput.schema.json +1 -0
  115. package/dist/.pikku/schemas/schemas/PikkuMetaWiresQueueInput.schema.json +1 -0
  116. package/dist/.pikku/schemas/schemas/PikkuMetaWiresSchedulerInput.schema.json +1 -0
  117. package/dist/.pikku/schemas/schemas/PikkuMetaWiresTriggerInput.schema.json +1 -0
  118. package/dist/.pikku/schemas/schemas/PikkuMetaWiresTypeInput.schema.json +1 -0
  119. package/dist/.pikku/schemas/schemas/PikkuMetaWorkflowsGetInput.schema.json +1 -0
  120. package/dist/.pikku/schemas/schemas/PikkuMetaWorkflowsListInput.schema.json +1 -0
  121. package/dist/.pikku/schemas/schemas/PikkuSkillsInstallInput.schema.json +1 -0
  122. package/dist/.pikku/schemas/schemas/PikkuSkillsListInput.schema.json +1 -0
  123. package/dist/.pikku/schemas/schemas/PikkuTestsCoverageInput.schema.json +1 -0
  124. package/dist/.pikku/schemas/schemas/PikkuTestsInitInput.schema.json +1 -0
  125. package/dist/.pikku/schemas/schemas/WorkflowRunStatus.schema.json +1 -1
  126. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  127. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  128. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  129. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  130. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  131. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  132. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  133. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  134. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  135. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  136. package/dist/.pikku/workflow/meta/allWorkflow.gen.json +237 -629
  137. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  138. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  139. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  140. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  141. package/dist/bin/pikku-bin.mjs +23 -0
  142. package/dist/bin/pikku.js +28 -1
  143. package/dist/src/cli.wiring.js +286 -10
  144. package/dist/src/deploy/analyzer/analyzer.d.ts +16 -1
  145. package/dist/src/deploy/analyzer/analyzer.js +83 -43
  146. package/dist/src/deploy/analyzer/manifest.d.ts +10 -0
  147. package/dist/src/deploy/build-pipeline.d.ts +2 -0
  148. package/dist/src/deploy/build-pipeline.js +123 -19
  149. package/dist/src/deploy/bundler/bundler.d.ts +3 -1
  150. package/dist/src/deploy/bundler/bundler.js +40 -9
  151. package/dist/src/deploy/bundler/dep-extractor.d.ts +5 -2
  152. package/dist/src/deploy/bundler/dep-extractor.js +103 -23
  153. package/dist/src/deploy/bundler/types.d.ts +5 -1
  154. package/dist/src/deploy/codegen/per-unit-codegen.d.ts +11 -1
  155. package/dist/src/deploy/codegen/per-unit-codegen.js +49 -6
  156. package/dist/src/deploy/plan/planner.js +25 -3
  157. package/dist/src/deploy/plan/provider.d.ts +2 -0
  158. package/dist/src/deploy/provider-adapter.d.ts +34 -0
  159. package/dist/src/deploy/server-entry.d.ts +16 -0
  160. package/dist/src/deploy/server-entry.js +81 -0
  161. package/dist/src/fabric/fabric-commands.d.ts +522 -0
  162. package/dist/src/fabric/fabric-commands.js +299 -0
  163. package/dist/src/fabric/functions/db-schema.function.d.ts +35 -0
  164. package/dist/src/fabric/functions/db-schema.function.js +37 -0
  165. package/dist/src/fabric/functions/deploy-list.function.d.ts +41 -0
  166. package/dist/src/fabric/functions/deploy-list.function.js +43 -0
  167. package/dist/src/fabric/functions/deploy-units.function.d.ts +35 -0
  168. package/dist/src/fabric/functions/deploy-units.function.js +41 -0
  169. package/dist/src/fabric/functions/deploy.function.d.ts +105 -0
  170. package/dist/src/fabric/functions/deploy.function.js +122 -0
  171. package/dist/src/fabric/functions/domains-add.function.d.ts +35 -0
  172. package/dist/src/fabric/functions/domains-add.function.js +46 -0
  173. package/dist/src/fabric/functions/domains-list.function.d.ts +20 -0
  174. package/dist/src/fabric/functions/domains-list.function.js +50 -0
  175. package/dist/src/fabric/functions/domains-remove.function.d.ts +24 -0
  176. package/dist/src/fabric/functions/domains-remove.function.js +44 -0
  177. package/dist/src/fabric/functions/errors.function.d.ts +44 -0
  178. package/dist/src/fabric/functions/errors.function.js +50 -0
  179. package/dist/src/fabric/functions/init.function.d.ts +51 -0
  180. package/dist/src/fabric/functions/init.function.js +54 -0
  181. package/dist/src/fabric/functions/link.function.d.ts +28 -0
  182. package/dist/src/fabric/functions/link.function.js +77 -0
  183. package/dist/src/fabric/functions/llm-key.function.d.ts +46 -0
  184. package/dist/src/fabric/functions/llm-key.function.js +76 -0
  185. package/dist/src/fabric/functions/login.function.d.ts +42 -0
  186. package/dist/src/fabric/functions/login.function.js +68 -0
  187. package/dist/src/fabric/functions/logs.function.d.ts +40 -0
  188. package/dist/src/fabric/functions/logs.function.js +84 -0
  189. package/dist/src/fabric/functions/metrics.function.d.ts +32 -0
  190. package/dist/src/fabric/functions/metrics.function.js +49 -0
  191. package/dist/src/fabric/functions/rollback.function.d.ts +76 -0
  192. package/dist/src/fabric/functions/rollback.function.js +69 -0
  193. package/dist/src/fabric/functions/secrets-list.function.d.ts +24 -0
  194. package/dist/src/fabric/functions/secrets-list.function.js +37 -0
  195. package/dist/src/fabric/functions/secrets-set.function.d.ts +32 -0
  196. package/dist/src/fabric/functions/secrets-set.function.js +36 -0
  197. package/dist/src/fabric/functions/status.function.d.ts +34 -0
  198. package/dist/src/fabric/functions/status.function.js +43 -0
  199. package/dist/src/fabric/functions/trace.function.d.ts +28 -0
  200. package/dist/src/fabric/functions/trace.function.js +45 -0
  201. package/dist/src/fabric/functions/validate.function.d.ts +50 -0
  202. package/dist/src/fabric/functions/validate.function.js +363 -0
  203. package/dist/src/fabric/lib/config.d.ts +64 -0
  204. package/dist/src/fabric/lib/config.js +62 -0
  205. package/dist/src/fabric/lib/console-url.d.ts +5 -0
  206. package/dist/src/fabric/lib/console-url.js +13 -0
  207. package/dist/src/fabric/lib/git.d.ts +53 -0
  208. package/dist/src/fabric/lib/git.js +151 -0
  209. package/dist/src/fabric/lib/http.d.ts +4 -0
  210. package/dist/src/fabric/lib/http.js +12 -0
  211. package/dist/src/fabric/lib/not-implemented.d.ts +5 -0
  212. package/dist/src/fabric/lib/not-implemented.js +8 -0
  213. package/dist/src/fabric/lib/output.d.ts +23 -0
  214. package/dist/src/fabric/lib/output.js +39 -0
  215. package/dist/src/fabric/lib/prompt.d.ts +12 -0
  216. package/dist/src/fabric/lib/prompt.js +32 -0
  217. package/dist/src/fabric/lib/stage.d.ts +7 -0
  218. package/dist/src/fabric/lib/stage.js +14 -0
  219. package/dist/src/fabric/sdk/pikku-fetch.gen.d.ts +14 -0
  220. package/dist/src/fabric/sdk/pikku-fetch.gen.js +30 -0
  221. package/dist/src/fabric/sdk/pikku-rpc.gen.d.ts +105 -0
  222. package/dist/src/fabric/sdk/pikku-rpc.gen.js +126 -0
  223. package/dist/src/functions/commands/all.d.ts +1 -1
  224. package/dist/src/functions/commands/binary.d.ts +7 -0
  225. package/dist/src/functions/commands/binary.js +40 -0
  226. package/dist/src/functions/commands/bootstrap.d.ts +1 -1
  227. package/dist/src/functions/commands/bootstrap.js +7 -4
  228. package/dist/src/functions/commands/console.d.ts +3 -3
  229. package/dist/src/functions/commands/db-migrate.d.ts +1 -0
  230. package/dist/src/functions/commands/db-migrate.js +35 -0
  231. package/dist/src/functions/commands/db-reset.d.ts +1 -0
  232. package/dist/src/functions/commands/db-reset.js +36 -0
  233. package/dist/src/functions/commands/db-seed.d.ts +1 -0
  234. package/dist/src/functions/commands/db-seed.js +27 -0
  235. package/dist/src/functions/commands/db-shared.d.ts +32 -0
  236. package/dist/src/functions/commands/db-shared.js +26 -0
  237. package/dist/src/functions/commands/deploy-apply.d.ts +3 -3
  238. package/dist/src/functions/commands/deploy-apply.js +6 -4
  239. package/dist/src/functions/commands/deploy-info.d.ts +1 -1
  240. package/dist/src/functions/commands/deploy-plan.d.ts +3 -3
  241. package/dist/src/functions/commands/deploy-plan.js +7 -1
  242. package/dist/src/functions/commands/dev.d.ts +3 -3
  243. package/dist/src/functions/commands/dev.js +142 -86
  244. package/dist/src/functions/commands/enable.d.ts +5 -4
  245. package/dist/src/functions/commands/enable.js +4 -0
  246. package/dist/src/functions/commands/info.d.ts +4 -4
  247. package/dist/src/functions/commands/load-user-project.d.ts +11 -0
  248. package/dist/src/functions/commands/load-user-project.js +40 -0
  249. package/dist/src/functions/commands/meta.d.ts +82 -0
  250. package/dist/src/functions/commands/meta.js +454 -0
  251. package/dist/src/functions/commands/new-addon.d.ts +3 -3
  252. package/dist/src/functions/commands/new-function.d.ts +3 -3
  253. package/dist/src/functions/commands/new-middleware.d.ts +3 -3
  254. package/dist/src/functions/commands/new-permission.d.ts +3 -3
  255. package/dist/src/functions/commands/new-wiring.d.ts +3 -3
  256. package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +1 -1
  257. package/dist/src/functions/commands/pikku-command-bootstrap.js +15 -1
  258. package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -1
  259. package/dist/src/functions/commands/pikku-command-summary.js +7 -1
  260. package/dist/src/functions/commands/skills.d.ts +26 -0
  261. package/dist/src/functions/commands/skills.js +184 -0
  262. package/dist/src/functions/commands/tests-coverage.d.ts +7 -0
  263. package/dist/src/functions/commands/tests-coverage.js +231 -0
  264. package/dist/src/functions/commands/tests-init.d.ts +7 -0
  265. package/dist/src/functions/commands/tests-init.js +225 -0
  266. package/dist/src/functions/commands/versions-check.d.ts +1 -1
  267. package/dist/src/functions/commands/versions-init.d.ts +3 -3
  268. package/dist/src/functions/commands/versions-update.d.ts +1 -1
  269. package/dist/src/functions/commands/versions-update.js +4 -2
  270. package/dist/src/functions/commands/watch.d.ts +3 -3
  271. package/dist/src/functions/commands/watch.js +1 -1
  272. package/dist/src/functions/db/local-db.d.ts +48 -0
  273. package/dist/src/functions/db/local-db.js +106 -0
  274. package/dist/src/functions/db/seed.d.ts +11 -0
  275. package/dist/src/functions/db/seed.js +22 -0
  276. package/dist/src/functions/db/sql-migrator.d.ts +26 -0
  277. package/dist/src/functions/db/sql-migrator.js +104 -0
  278. package/dist/src/functions/db/sqlite-codegen.d.ts +45 -0
  279. package/dist/src/functions/db/sqlite-codegen.js +294 -0
  280. package/dist/src/functions/db/zod-codegen.d.ts +10 -0
  281. package/dist/src/functions/db/zod-codegen.js +109 -0
  282. package/dist/src/functions/runtimes/fetch/index.d.ts +1 -1
  283. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
  284. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +21 -2
  285. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.d.ts +1 -0
  286. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.js +163 -0
  287. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.d.ts +1 -1
  288. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +5 -2
  289. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.d.ts +1 -0
  290. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.js +32 -0
  291. package/dist/src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.d.ts +11 -0
  292. package/dist/src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.js +36 -0
  293. package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -1
  294. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -1
  295. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -1
  296. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +1 -10
  297. package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -1
  298. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +76 -1
  299. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
  300. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
  301. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
  302. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
  303. package/dist/src/functions/wirings/channels/pikku-command-channels.js +1 -1
  304. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
  305. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +5 -2
  306. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +5 -1
  307. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +8 -2
  308. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
  309. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +27 -9
  310. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +5 -1
  311. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +13 -3
  312. package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -1
  313. package/dist/src/functions/wirings/console/pikku-command-console-functions.js +5 -1
  314. package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -1
  315. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -1
  316. package/dist/src/functions/wirings/console/serialize-console-functions.js +5 -0
  317. package/dist/src/functions/wirings/credentials/pikku-command-credentials.d.ts +1 -1
  318. package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +5 -1
  319. package/dist/src/functions/wirings/functions/pikku-command-addon-types.js +7 -2
  320. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -1
  321. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +1 -1
  322. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -1
  323. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
  324. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  325. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
  326. package/dist/src/functions/wirings/functions/serialize-function-types.js +105 -80
  327. package/dist/src/functions/wirings/gateway/pikku-command-gateway.d.ts +1 -1
  328. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
  329. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
  330. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +1 -1
  331. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
  332. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
  333. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
  334. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
  335. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
  336. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
  337. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
  338. package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +2 -2
  339. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
  340. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
  341. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
  342. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +1 -1
  343. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
  344. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
  345. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
  346. package/dist/src/functions/wirings/queue/pikku-command-queue.js +1 -1
  347. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
  348. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
  349. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.d.ts +1 -0
  350. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.js +26 -0
  351. package/dist/src/functions/wirings/realtime/pikku-command-realtime.d.ts +1 -0
  352. package/dist/src/functions/wirings/realtime/pikku-command-realtime.js +35 -0
  353. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.d.ts +23 -0
  354. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.js +98 -0
  355. package/dist/src/functions/wirings/realtime/serialize-realtime-client.d.ts +22 -0
  356. package/dist/src/functions/wirings/realtime/serialize-realtime-client.js +337 -0
  357. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
  358. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +5 -1
  359. package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -1
  360. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
  361. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.js +5 -1
  362. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
  363. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +3 -1
  364. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -2
  365. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +2 -1
  366. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +13 -7
  367. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +1 -0
  368. package/dist/src/functions/wirings/rpc/serialize-react-query-hooks.js +1 -1
  369. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +7 -1
  370. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +16 -2
  371. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
  372. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
  373. package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -1
  374. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +1 -1
  375. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.js +1 -1
  376. package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -1
  377. package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -1
  378. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.d.ts +1 -1
  379. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.js +1 -1
  380. package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +5 -1
  381. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +18 -4
  382. package/dist/src/functions/wirings/workflow/serialize-workflow-bootstrap-map.d.ts +3 -0
  383. package/dist/src/functions/wirings/workflow/serialize-workflow-bootstrap-map.js +40 -0
  384. package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +56 -2
  385. package/dist/src/functions/workflows/all.workflow.js +45 -12
  386. package/dist/src/scaffold/rpc-remote.gen.d.ts +3 -3
  387. package/dist/src/scaffold/rpc-remote.gen.js +7 -2
  388. package/dist/src/scaffold/workflow-routes.gen.d.ts +18 -18
  389. package/dist/src/scaffold/workflow-routes.gen.js +33 -1
  390. package/dist/src/services/cli-logger.service.d.ts +22 -3
  391. package/dist/src/services/cli-logger.service.js +107 -41
  392. package/dist/src/services.js +32 -67
  393. package/dist/src/utils/generate-bootstrap-file.js +3 -0
  394. package/dist/src/utils/parse-cli-filters.d.ts +18 -0
  395. package/dist/src/utils/parse-cli-filters.js +99 -0
  396. package/dist/src/utils/pikku-cli-config.js +29 -9
  397. package/dist/tsconfig.tsbuildinfo +1 -1
  398. package/package.json +9 -4
  399. package/skills/pikku-addon/SKILL.md +330 -0
  400. package/skills/pikku-ai-agent/SKILL.md +227 -0
  401. package/skills/pikku-ai-vercel/SKILL.md +78 -0
  402. package/skills/pikku-ai-voice/SKILL.md +85 -0
  403. package/skills/pikku-auth-js/SKILL.md +106 -0
  404. package/skills/pikku-aws/SKILL.md +107 -0
  405. package/skills/pikku-backblaze/SKILL.md +70 -0
  406. package/skills/pikku-cli/SKILL.md +281 -0
  407. package/skills/pikku-concepts/SKILL.md +281 -0
  408. package/skills/pikku-concepts/references/concept-mapping.md +528 -0
  409. package/skills/pikku-config/SKILL.md +208 -0
  410. package/skills/pikku-cron/SKILL.md +211 -0
  411. package/skills/pikku-deploy-azure/SKILL.md +69 -0
  412. package/skills/pikku-deploy-cloudflare/SKILL.md +80 -0
  413. package/skills/pikku-deploy-express/SKILL.md +83 -0
  414. package/skills/pikku-deploy-fastify/SKILL.md +70 -0
  415. package/skills/pikku-deploy-lambda/SKILL.md +107 -0
  416. package/skills/pikku-deploy-nextjs/SKILL.md +76 -0
  417. package/skills/pikku-deploy-uws/SKILL.md +85 -0
  418. package/skills/pikku-fabric/SKILL.md +245 -0
  419. package/skills/pikku-feature/SKILL.md +258 -0
  420. package/skills/pikku-gateway-slack/SKILL.md +112 -0
  421. package/skills/pikku-http/SKILL.md +317 -0
  422. package/skills/pikku-i18n/SKILL.md +208 -0
  423. package/skills/pikku-info/SKILL.md +95 -0
  424. package/skills/pikku-jose/SKILL.md +102 -0
  425. package/skills/pikku-kysely/SKILL.md +145 -0
  426. package/skills/pikku-mcp/SKILL.md +237 -0
  427. package/skills/pikku-mongodb/SKILL.md +102 -0
  428. package/skills/pikku-n8n-addon-map/SKILL.md +178 -0
  429. package/skills/pikku-n8n-code-translate/SKILL.md +166 -0
  430. package/skills/pikku-pino/SKILL.md +77 -0
  431. package/skills/pikku-queue/SKILL.md +237 -0
  432. package/skills/pikku-react/SKILL.md +183 -0
  433. package/skills/pikku-react-query/SKILL.md +205 -0
  434. package/skills/pikku-realtime/SKILL.md +285 -0
  435. package/skills/pikku-redis/SKILL.md +87 -0
  436. package/skills/pikku-rpc/SKILL.md +168 -0
  437. package/skills/pikku-rtl/SKILL.md +205 -0
  438. package/skills/pikku-schedule/SKILL.md +54 -0
  439. package/skills/pikku-schema-ajv/SKILL.md +60 -0
  440. package/skills/pikku-schema-cfworker/SKILL.md +60 -0
  441. package/skills/pikku-security/SKILL.md +243 -0
  442. package/skills/pikku-services/SKILL.md +247 -0
  443. package/skills/pikku-template-clone/SKILL.md +39 -0
  444. package/skills/pikku-testing/SKILL.md +428 -0
  445. package/skills/pikku-trigger/SKILL.md +177 -0
  446. package/skills/pikku-versioning/SKILL.md +169 -0
  447. package/skills/pikku-websocket/SKILL.md +239 -0
  448. package/skills/pikku-workflow/SKILL.md +283 -0
  449. package/skills/pikku-workflows-client/SKILL.md +150 -0
  450. package/skills/pikku-ws/SKILL.md +45 -0
  451. package/console-app/assets/index-BpY2pSuA.css +0 -10
  452. package/console-app/assets/index-DXLy-_D4.js +0 -717
  453. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +0 -10
  454. package/dist/.pikku/cli/pikku-cli-client.gen.js +0 -44
  455. /package/dist/.pikku/schemas/schemas/{PikkuChannelsOutput.schema.json → PikkuCLIEntryOutput.schema.json} +0 -0
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ export declare const FabricLLMKeyInput: z.ZodObject<{
3
+ shell: z.ZodOptional<z.ZodBoolean>;
4
+ env: z.ZodOptional<z.ZodBoolean>;
5
+ json: z.ZodOptional<z.ZodBoolean>;
6
+ }, z.core.$strip>;
7
+ export declare const FabricLLMKeyOutput: z.ZodObject<{
8
+ proxyUrl: z.ZodString;
9
+ apiKey: z.ZodString;
10
+ format: z.ZodEnum<{
11
+ text: "text";
12
+ json: "json";
13
+ shell: "shell";
14
+ env: "env";
15
+ }>;
16
+ }, z.core.$strip>;
17
+ export declare const FabricLLMKey: import("../../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
18
+ shell?: boolean | undefined;
19
+ env?: boolean | undefined;
20
+ json?: boolean | undefined;
21
+ }, {
22
+ proxyUrl: string;
23
+ apiKey: string;
24
+ format: "text" | "json" | "shell" | "env";
25
+ }, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
26
+ shell?: boolean | undefined;
27
+ env?: boolean | undefined;
28
+ json?: boolean | undefined;
29
+ }, {
30
+ proxyUrl: string;
31
+ apiKey: string;
32
+ format: "text" | "json" | "shell" | "env";
33
+ }, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
34
+ shell?: boolean | undefined;
35
+ env?: boolean | undefined;
36
+ json?: boolean | undefined;
37
+ }, {
38
+ proxyUrl: string;
39
+ apiKey: string;
40
+ format: "text" | "json" | "shell" | "env";
41
+ }, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
42
+ export declare const renderLLMKey: (_services: unknown, data: {
43
+ proxyUrl: string;
44
+ apiKey: string;
45
+ format: "text" | "env" | "shell" | "json";
46
+ }) => void;
@@ -0,0 +1,76 @@
1
+ import { z } from 'zod';
2
+ import { BadRequestError, UnauthorizedError } from '@pikku/core/errors';
3
+ import { pikkuSessionlessFunc } from '../../../.pikku/pikku-types.gen.js';
4
+ import { resolveApiContext } from '../lib/config.js';
5
+ import { getFabricRPC } from '../lib/http.js';
6
+ export const FabricLLMKeyInput = z.object({
7
+ shell: z.boolean().optional(),
8
+ env: z.boolean().optional(),
9
+ json: z.boolean().optional(),
10
+ });
11
+ export const FabricLLMKeyOutput = z.object({
12
+ proxyUrl: z.string(),
13
+ apiKey: z.string(),
14
+ format: z.enum(['text', 'env', 'shell', 'json']),
15
+ });
16
+ function shellEscape(value) {
17
+ return `'${value.replace(/'/g, `'\\''`)}'`;
18
+ }
19
+ export const FabricLLMKey = pikkuSessionlessFunc({
20
+ description: 'Mint or reuse the current user Fabric AI gateway key.',
21
+ input: FabricLLMKeyInput,
22
+ output: FabricLLMKeyOutput,
23
+ func: async (_services, { shell, env, json }) => {
24
+ const selectedFormats = [shell, env, json].filter(Boolean).length;
25
+ if (selectedFormats > 1) {
26
+ throw new BadRequestError('Choose only one of `--shell`, `--env`, or `--json`.');
27
+ }
28
+ const ctx = await resolveApiContext();
29
+ if (!ctx.token) {
30
+ throw new UnauthorizedError('Not logged in. Run `pikku fabric login` first.');
31
+ }
32
+ const rpc = getFabricRPC({ apiUrl: ctx.apiUrl, token: ctx.token });
33
+ const result = (await rpc.invoke('getDeveloperLiteLLMKey', {}));
34
+ const format = shell
35
+ ? 'shell'
36
+ : env
37
+ ? 'env'
38
+ : json
39
+ ? 'json'
40
+ : 'text';
41
+ return {
42
+ proxyUrl: result.proxyUrl,
43
+ apiKey: result.apiKey,
44
+ format,
45
+ };
46
+ },
47
+ });
48
+ export const renderLLMKey = (_services, data) => {
49
+ if (data.format === 'json') {
50
+ console.log(JSON.stringify({
51
+ proxyUrl: data.proxyUrl,
52
+ apiKey: data.apiKey,
53
+ openaiBaseUrl: data.proxyUrl,
54
+ openaiApiKey: data.apiKey,
55
+ litellmProxyUrl: data.proxyUrl,
56
+ litellmApiKey: data.apiKey,
57
+ }, null, 2));
58
+ return;
59
+ }
60
+ const envLines = [
61
+ `OPENAI_BASE_URL=${data.proxyUrl}`,
62
+ `OPENAI_API_KEY=${data.apiKey}`,
63
+ `LITELLM_PROXY_URL=${data.proxyUrl}`,
64
+ `LITELLM_API_KEY=${data.apiKey}`,
65
+ ];
66
+ if (data.format === 'shell') {
67
+ console.log(envLines
68
+ .map((line) => {
69
+ const [key, ...rest] = line.split('=');
70
+ return `export ${key}=${shellEscape(rest.join('='))}`;
71
+ })
72
+ .join('\n'));
73
+ return;
74
+ }
75
+ console.log(envLines.join('\n'));
76
+ };
@@ -0,0 +1,42 @@
1
+ import { z } from 'zod';
2
+ export declare const FabricLoginInput: z.ZodObject<{
3
+ apiKey: z.ZodOptional<z.ZodString>;
4
+ token: z.ZodOptional<z.ZodString>;
5
+ apiUrl: z.ZodOptional<z.ZodString>;
6
+ consoleUrl: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ export declare const FabricLoginOutput: z.ZodObject<{
9
+ ok: z.ZodBoolean;
10
+ apiUrl: z.ZodString;
11
+ }, z.core.$strip>;
12
+ /**
13
+ * Device-authorization-style CLI login. Server mints a short code, user types
14
+ * it on the console's /cli-auth page (logging in via Auth.js if not already
15
+ * signed in). CLI polls until the row flips to 'confirmed' and grabs the
16
+ * one-shot bearer.
17
+ */
18
+ export declare const FabricLogin: import("../../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
19
+ apiKey?: string | undefined;
20
+ token?: string | undefined;
21
+ apiUrl?: string | undefined;
22
+ consoleUrl?: string | undefined;
23
+ }, {
24
+ ok: boolean;
25
+ apiUrl: string;
26
+ }, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
27
+ apiKey?: string | undefined;
28
+ token?: string | undefined;
29
+ apiUrl?: string | undefined;
30
+ consoleUrl?: string | undefined;
31
+ }, {
32
+ ok: boolean;
33
+ apiUrl: string;
34
+ }, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
35
+ apiKey?: string | undefined;
36
+ token?: string | undefined;
37
+ apiUrl?: string | undefined;
38
+ consoleUrl?: string | undefined;
39
+ }, {
40
+ ok: boolean;
41
+ apiUrl: string;
42
+ }, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '../../../.pikku/pikku-types.gen.js';
3
+ import { readAuthFile, writeAuthFile, resolveApiContext, } from '../lib/config.js';
4
+ import { getFabricRPC } from '../lib/http.js';
5
+ import { deriveConsoleUrl } from '../lib/console-url.js';
6
+ export const FabricLoginInput = z.object({
7
+ apiKey: z.string().optional(),
8
+ token: z.string().optional(),
9
+ apiUrl: z.string().optional(),
10
+ consoleUrl: z.string().optional(),
11
+ });
12
+ export const FabricLoginOutput = z.object({
13
+ ok: z.boolean(),
14
+ apiUrl: z.string(),
15
+ });
16
+ const POLL_INTERVAL_MS = 2000;
17
+ const POLL_TIMEOUT_MS = 5 * 60 * 1000;
18
+ /**
19
+ * Device-authorization-style CLI login. Server mints a short code, user types
20
+ * it on the console's /cli-auth page (logging in via Auth.js if not already
21
+ * signed in). CLI polls until the row flips to 'confirmed' and grabs the
22
+ * one-shot bearer.
23
+ */
24
+ export const FabricLogin = pikkuSessionlessFunc({
25
+ description: 'Authenticate the CLI against fabric-api via a one-time code.',
26
+ input: FabricLoginInput,
27
+ output: FabricLoginOutput,
28
+ func: async (_services, { apiKey, token, apiUrl: apiUrlOverride, consoleUrl: consoleUrlOverride }) => {
29
+ const ctx = await resolveApiContext({ apiUrlOverride });
30
+ const apiUrl = ctx.apiUrl;
31
+ // Static-token fast paths — useful for CI and "I already have a token".
32
+ const explicit = apiKey ?? token;
33
+ if (explicit) {
34
+ const auth = await readAuthFile();
35
+ auth.tokens[apiUrl] = explicit;
36
+ await writeAuthFile(auth);
37
+ console.log(`[fabric] saved token for ${apiUrl}`);
38
+ return { ok: true, apiUrl };
39
+ }
40
+ const consoleUrl = (consoleUrlOverride ?? deriveConsoleUrl(apiUrl)).replace(/\/$/, '');
41
+ const rpc = getFabricRPC({ apiUrl, token: null });
42
+ const { code, expiresAt } = await rpc.invoke('requestCliAuth');
43
+ console.log('');
44
+ console.log(' Enter this code at:');
45
+ console.log(` ${consoleUrl}/cli-auth`);
46
+ console.log('');
47
+ console.log(` Code: ${code}`);
48
+ console.log(` (expires ${new Date(expiresAt).toLocaleTimeString()})`);
49
+ console.log('');
50
+ console.log(' Waiting for confirmation…');
51
+ const deadline = Date.now() + POLL_TIMEOUT_MS;
52
+ while (Date.now() < deadline) {
53
+ await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
54
+ const result = await rpc.invoke('pollCliAuth', { code });
55
+ if (result.status === 'expired') {
56
+ throw new Error('Code expired before confirmation. Run `pikku fabric login` again.');
57
+ }
58
+ if (result.status === 'confirmed' && result.token) {
59
+ const auth = await readAuthFile();
60
+ auth.tokens[apiUrl] = result.token;
61
+ await writeAuthFile(auth);
62
+ console.log(`[fabric] logged in; token saved for ${apiUrl}`);
63
+ return { ok: true, apiUrl };
64
+ }
65
+ }
66
+ throw new Error('Login timed out.');
67
+ },
68
+ });
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ export declare const FabricLogsInput: z.ZodObject<{
3
+ branch: z.ZodOptional<z.ZodString>;
4
+ deployment: z.ZodOptional<z.ZodString>;
5
+ level: z.ZodOptional<z.ZodString>;
6
+ since: z.ZodOptional<z.ZodString>;
7
+ follow: z.ZodOptional<z.ZodBoolean>;
8
+ json: z.ZodOptional<z.ZodBoolean>;
9
+ }, z.core.$strip>;
10
+ export declare const FabricLogsOutput: z.ZodObject<{
11
+ count: z.ZodNumber;
12
+ }, z.core.$strip>;
13
+ export declare const FabricLogs: import("../../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
14
+ branch?: string | undefined;
15
+ deployment?: string | undefined;
16
+ level?: string | undefined;
17
+ since?: string | undefined;
18
+ follow?: boolean | undefined;
19
+ json?: boolean | undefined;
20
+ }, {
21
+ count: number;
22
+ }, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
23
+ branch?: string | undefined;
24
+ deployment?: string | undefined;
25
+ level?: string | undefined;
26
+ since?: string | undefined;
27
+ follow?: boolean | undefined;
28
+ json?: boolean | undefined;
29
+ }, {
30
+ count: number;
31
+ }, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
32
+ branch?: string | undefined;
33
+ deployment?: string | undefined;
34
+ level?: string | undefined;
35
+ since?: string | undefined;
36
+ follow?: boolean | undefined;
37
+ json?: boolean | undefined;
38
+ }, {
39
+ count: number;
40
+ }, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
@@ -0,0 +1,84 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '../../../.pikku/pikku-types.gen.js';
3
+ import { resolveApiContext } from '../lib/config.js';
4
+ import { getFabricRPC } from '../lib/http.js';
5
+ export const FabricLogsInput = z.object({
6
+ branch: z.string().optional(),
7
+ deployment: z.string().optional(),
8
+ level: z.string().optional(),
9
+ since: z.string().optional(),
10
+ follow: z.boolean().optional(),
11
+ json: z.boolean().optional(),
12
+ });
13
+ export const FabricLogsOutput = z.object({ count: z.number() });
14
+ function formatLog(log) {
15
+ return `${log.timestamp} ${log.level.toUpperCase().padEnd(5)} ${log.functionName} — ${log.message}`;
16
+ }
17
+ /**
18
+ * Stable identity for an entry across polls. OpenObserve doesn't expose a
19
+ * monotonic id we can dedup on, so we hash the few fields that should be
20
+ * unique together (timestamp + traceId + message). Keeps memory bounded —
21
+ * the `seen` set is pruned to the last cursorWindow entries between polls.
22
+ */
23
+ function logKey(log) {
24
+ return `${log.timestamp}|${log.traceId ?? ''}|${log.functionName}|${log.message}`;
25
+ }
26
+ export const FabricLogs = pikkuSessionlessFunc({
27
+ description: 'Stream or fetch logs for a stage / deployment via fabric-api.',
28
+ input: FabricLogsInput,
29
+ output: FabricLogsOutput,
30
+ func: async (_services, { branch, level, json, follow }) => {
31
+ const ctx = await resolveApiContext();
32
+ if (!ctx.token)
33
+ throw new Error('Not logged in. Run `pikku fabric login` first.');
34
+ if (!ctx.projectId)
35
+ throw new Error('No fabric project linked. Run `pikku fabric link` first.');
36
+ if (!branch)
37
+ throw new Error('Specify --branch <branch-name>.');
38
+ const seen = new Set();
39
+ const cursorWindow = 5_000;
40
+ const rpc = getFabricRPC({ apiUrl: ctx.apiUrl, token: ctx.token });
41
+ const projectId = ctx.projectId;
42
+ const fetchAndPrintNew = async () => {
43
+ const res = await rpc.invoke('getFabricLogsByStageKind', {
44
+ projectId,
45
+ branch,
46
+ level: level ?? undefined,
47
+ });
48
+ let printed = 0;
49
+ for (const log of res.logs) {
50
+ const k = logKey(log);
51
+ if (seen.has(k))
52
+ continue;
53
+ seen.add(k);
54
+ if (json) {
55
+ console.log(JSON.stringify(log));
56
+ }
57
+ else {
58
+ console.log(formatLog(log));
59
+ }
60
+ printed += 1;
61
+ }
62
+ // Bound memory — keep the most recent cursorWindow keys.
63
+ if (seen.size > cursorWindow) {
64
+ const trimmed = Array.from(seen).slice(seen.size - cursorWindow);
65
+ seen.clear();
66
+ for (const k of trimmed)
67
+ seen.add(k);
68
+ }
69
+ return printed;
70
+ };
71
+ let count = await fetchAndPrintNew();
72
+ if (follow) {
73
+ // Server-side SSE for logs is a planned upgrade — OpenObserve doesn't
74
+ // push natively without extra plumbing. For now we poll at 2s and
75
+ // dedup against entries already printed, which gives `tail -f`-ish
76
+ // behaviour without re-printing the full window each tick.
77
+ while (true) {
78
+ await new Promise((r) => setTimeout(r, 2000));
79
+ count += await fetchAndPrintNew();
80
+ }
81
+ }
82
+ return { count };
83
+ },
84
+ });
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ export declare const FabricMetricsInput: z.ZodObject<{
3
+ branch: z.ZodString;
4
+ hours: z.ZodOptional<z.ZodNumber>;
5
+ function: z.ZodOptional<z.ZodString>;
6
+ json: z.ZodOptional<z.ZodBoolean>;
7
+ }, z.core.$strip>;
8
+ export declare const FabricMetricsOutput: z.ZodObject<{
9
+ count: z.ZodNumber;
10
+ }, z.core.$strip>;
11
+ export declare const FabricMetrics: import("../../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
12
+ branch: string;
13
+ hours?: number | undefined;
14
+ function?: string | undefined;
15
+ json?: boolean | undefined;
16
+ }, {
17
+ count: number;
18
+ }, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
19
+ branch: string;
20
+ hours?: number | undefined;
21
+ function?: string | undefined;
22
+ json?: boolean | undefined;
23
+ }, {
24
+ count: number;
25
+ }, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
26
+ branch: string;
27
+ hours?: number | undefined;
28
+ function?: string | undefined;
29
+ json?: boolean | undefined;
30
+ }, {
31
+ count: number;
32
+ }, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '../../../.pikku/pikku-types.gen.js';
3
+ import { resolveApiContext } from '../lib/config.js';
4
+ import { getFabricRPC } from '../lib/http.js';
5
+ export const FabricMetricsInput = z.object({
6
+ branch: z.string(),
7
+ hours: z.number().optional(),
8
+ function: z.string().optional(),
9
+ json: z.boolean().optional(),
10
+ });
11
+ export const FabricMetricsOutput = z.object({ count: z.number() });
12
+ function formatRow(row) {
13
+ const errRate = row.requests > 0 ? ((row.errors / row.requests) * 100).toFixed(1) : '0.0';
14
+ return `${row.timestamp} reqs=${String(row.requests).padStart(5)} err=${String(row.errors).padStart(4)} (${errRate}%) avg=${row.avgDuration.toFixed(0)}ms min=${row.minDuration.toFixed(0)}ms max=${row.maxDuration.toFixed(0)}ms`;
15
+ }
16
+ export const FabricMetrics = pikkuSessionlessFunc({
17
+ description: 'Fetch aggregated request metrics for a stage via fabric-api.',
18
+ input: FabricMetricsInput,
19
+ output: FabricMetricsOutput,
20
+ func: async (_services, { branch, hours, function: functionName, json }) => {
21
+ const ctx = await resolveApiContext();
22
+ if (!ctx.token)
23
+ throw new Error('Not logged in. Run `pikku fabric login` first.');
24
+ if (!ctx.projectId)
25
+ throw new Error('No fabric project linked. Run `pikku fabric link` first.');
26
+ const rpc = getFabricRPC({ apiUrl: ctx.apiUrl, token: ctx.token });
27
+ const res = await rpc.invoke('getProjectMetricsByStageKind', {
28
+ projectId: ctx.projectId,
29
+ branch,
30
+ hours,
31
+ functionName,
32
+ });
33
+ if (json) {
34
+ const wireTypes = Object.fromEntries((res.wireTypes ?? []).map((r) => [
35
+ r.wireType,
36
+ r.requests,
37
+ ]));
38
+ console.log(JSON.stringify({ branch, metrics: res.metrics, wireTypes }, null, 2));
39
+ }
40
+ else if (res.metrics.length === 0) {
41
+ console.log(`[fabric] no metrics for ${branch} in the last ${hours ?? 24}h`);
42
+ }
43
+ else {
44
+ for (const row of res.metrics)
45
+ console.log(formatRow(row));
46
+ }
47
+ return { count: res.metrics.length };
48
+ },
49
+ });
@@ -0,0 +1,76 @@
1
+ import { z } from 'zod';
2
+ export declare const FabricRollbackInput: z.ZodObject<{
3
+ branch: z.ZodString;
4
+ target: z.ZodOptional<z.ZodString>;
5
+ list: z.ZodOptional<z.ZodBoolean>;
6
+ dryRun: z.ZodOptional<z.ZodBoolean>;
7
+ yes: z.ZodOptional<z.ZodBoolean>;
8
+ }, z.core.$strip>;
9
+ export declare const FabricRollbackOutput: z.ZodObject<{
10
+ deploymentId: z.ZodOptional<z.ZodString>;
11
+ rolledBackToDeploymentId: z.ZodOptional<z.ZodString>;
12
+ candidates: z.ZodArray<z.ZodObject<{
13
+ deploymentId: z.ZodString;
14
+ gitSha: z.ZodNullable<z.ZodString>;
15
+ artifactHash: z.ZodNullable<z.ZodString>;
16
+ deployedAt: z.ZodNullable<z.ZodString>;
17
+ versionMajor: z.ZodNumber;
18
+ versionMinor: z.ZodNumber;
19
+ versionPatch: z.ZodNumber;
20
+ }, z.core.$strip>>;
21
+ }, z.core.$strip>;
22
+ export declare const FabricRollback: import("../../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
23
+ branch: string;
24
+ target?: string | undefined;
25
+ list?: boolean | undefined;
26
+ dryRun?: boolean | undefined;
27
+ yes?: boolean | undefined;
28
+ }, {
29
+ candidates: {
30
+ deploymentId: string;
31
+ gitSha: string | null;
32
+ artifactHash: string | null;
33
+ deployedAt: string | null;
34
+ versionMajor: number;
35
+ versionMinor: number;
36
+ versionPatch: number;
37
+ }[];
38
+ deploymentId?: string | undefined;
39
+ rolledBackToDeploymentId?: string | undefined;
40
+ }, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
41
+ branch: string;
42
+ target?: string | undefined;
43
+ list?: boolean | undefined;
44
+ dryRun?: boolean | undefined;
45
+ yes?: boolean | undefined;
46
+ }, {
47
+ candidates: {
48
+ deploymentId: string;
49
+ gitSha: string | null;
50
+ artifactHash: string | null;
51
+ deployedAt: string | null;
52
+ versionMajor: number;
53
+ versionMinor: number;
54
+ versionPatch: number;
55
+ }[];
56
+ deploymentId?: string | undefined;
57
+ rolledBackToDeploymentId?: string | undefined;
58
+ }, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
59
+ branch: string;
60
+ target?: string | undefined;
61
+ list?: boolean | undefined;
62
+ dryRun?: boolean | undefined;
63
+ yes?: boolean | undefined;
64
+ }, {
65
+ candidates: {
66
+ deploymentId: string;
67
+ gitSha: string | null;
68
+ artifactHash: string | null;
69
+ deployedAt: string | null;
70
+ versionMajor: number;
71
+ versionMinor: number;
72
+ versionPatch: number;
73
+ }[];
74
+ deploymentId?: string | undefined;
75
+ rolledBackToDeploymentId?: string | undefined;
76
+ }, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
@@ -0,0 +1,69 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '../../../.pikku/pikku-types.gen.js';
3
+ import { resolveApiContext } from '../lib/config.js';
4
+ import { getFabricRPC } from '../lib/http.js';
5
+ export const FabricRollbackInput = z.object({
6
+ branch: z.string(),
7
+ target: z.string().optional(),
8
+ list: z.boolean().optional(),
9
+ dryRun: z.boolean().optional(),
10
+ yes: z.boolean().optional(),
11
+ });
12
+ export const FabricRollbackOutput = z.object({
13
+ deploymentId: z.string().optional(),
14
+ rolledBackToDeploymentId: z.string().optional(),
15
+ candidates: z.array(z.object({
16
+ deploymentId: z.string(),
17
+ gitSha: z.string().nullable(),
18
+ artifactHash: z.string().nullable(),
19
+ deployedAt: z.string().nullable(),
20
+ versionMajor: z.number(),
21
+ versionMinor: z.number(),
22
+ versionPatch: z.number(),
23
+ })),
24
+ });
25
+ export const FabricRollback = pikkuSessionlessFunc({
26
+ description: 'Roll live production back to a previous deployment artifact, gated by schema-snapshot compatibility.',
27
+ input: FabricRollbackInput,
28
+ output: FabricRollbackOutput,
29
+ func: async (_services, { target, list, dryRun }) => {
30
+ const ctx = await resolveApiContext();
31
+ if (!ctx.token)
32
+ throw new Error('Not logged in. Run `pikku fabric login` first.');
33
+ if (!ctx.projectId)
34
+ throw new Error('No fabric project linked. Run `pikku fabric link` first.');
35
+ const rpc = getFabricRPC({ apiUrl: ctx.apiUrl, token: ctx.token });
36
+ // --list (or no target) → just show candidates.
37
+ if (list || !target) {
38
+ const result = await rpc.invoke('rollbackDeployment', {
39
+ projectId: ctx.projectId,
40
+ });
41
+ if (result.candidates.length === 0) {
42
+ console.log('[fabric] no rollback candidates available');
43
+ }
44
+ else {
45
+ console.log('[fabric] rollback candidates (newest first):');
46
+ for (const c of result.candidates) {
47
+ const v = `v${c.versionMajor}.${c.versionMinor}.${c.versionPatch}`;
48
+ const sha = c.gitSha ? c.gitSha.slice(0, 8) : '—';
49
+ console.log(` ${c.deploymentId} ${v} sha=${sha} ${c.deployedAt ?? '—'}`);
50
+ }
51
+ }
52
+ return { candidates: result.candidates };
53
+ }
54
+ if (dryRun) {
55
+ console.log(`[fabric] dry-run: would roll back live → ${target}`);
56
+ return { candidates: [] };
57
+ }
58
+ const result = await rpc.invoke('rollbackDeployment', {
59
+ projectId: ctx.projectId,
60
+ target,
61
+ });
62
+ console.log(`[fabric] rollback queued: new live=${result.deploymentId} (artifact from ${result.rolledBackToDeploymentId})`);
63
+ return {
64
+ deploymentId: result.deploymentId,
65
+ rolledBackToDeploymentId: result.rolledBackToDeploymentId,
66
+ candidates: result.candidates,
67
+ };
68
+ },
69
+ });
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const FabricSecretsListInput: z.ZodObject<{
3
+ branch: z.ZodString;
4
+ json: z.ZodOptional<z.ZodBoolean>;
5
+ }, z.core.$strip>;
6
+ export declare const FabricSecretsListOutput: z.ZodObject<{
7
+ names: z.ZodArray<z.ZodString>;
8
+ }, z.core.$strip>;
9
+ export declare const FabricSecretsList: import("../../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
10
+ branch: string;
11
+ json?: boolean | undefined;
12
+ }, {
13
+ names: string[];
14
+ }, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
15
+ branch: string;
16
+ json?: boolean | undefined;
17
+ }, {
18
+ names: string[];
19
+ }, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
20
+ branch: string;
21
+ json?: boolean | undefined;
22
+ }, {
23
+ names: string[];
24
+ }, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
@@ -0,0 +1,37 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '../../../.pikku/pikku-types.gen.js';
3
+ import { resolveApiContext } from '../lib/config.js';
4
+ import { getFabricRPC } from '../lib/http.js';
5
+ export const FabricSecretsListInput = z.object({
6
+ branch: z.string(),
7
+ json: z.boolean().optional(),
8
+ });
9
+ export const FabricSecretsListOutput = z.object({ names: z.array(z.string()) });
10
+ export const FabricSecretsList = pikkuSessionlessFunc({
11
+ description: 'List secret names visible to a stage (values never leave the server).',
12
+ input: FabricSecretsListInput,
13
+ output: FabricSecretsListOutput,
14
+ func: async (_services, { branch, json }) => {
15
+ const ctx = await resolveApiContext();
16
+ if (!ctx.token)
17
+ throw new Error('Not logged in. Run `pikku fabric login` first.');
18
+ if (!ctx.projectId)
19
+ throw new Error('No fabric project linked. Run `pikku fabric link` first.');
20
+ const rpc = getFabricRPC({ apiUrl: ctx.apiUrl, token: ctx.token });
21
+ const result = await rpc.invoke('listStageSecrets', {
22
+ projectId: ctx.projectId,
23
+ branch,
24
+ });
25
+ if (json) {
26
+ console.log(JSON.stringify({ branch, names: result.names }, null, 2));
27
+ }
28
+ else if (result.names.length === 0) {
29
+ console.log(`[fabric] no secrets set on ${branch}`);
30
+ }
31
+ else {
32
+ for (const name of result.names)
33
+ console.log(name);
34
+ }
35
+ return result;
36
+ },
37
+ });