@pikku/cli 0.12.133 → 0.12.136

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 (241) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/console-app/assets/{abnfDiagram-N423BO3Z-BQPUva28.js → abnfDiagram-N423BO3Z-W1UI4BWy.js} +1 -1
  3. package/console-app/assets/architecture-TIHT7OUA-ChuyZvLt.js +1 -0
  4. package/console-app/assets/{architectureDiagram-T3A2C74G-Cjzy66o9.js → architectureDiagram-T3A2C74G-Dgnhu9J8.js} +1 -1
  5. package/console-app/assets/{blockDiagram-VBNYF7ZC-DVasSXpX.js → blockDiagram-VBNYF7ZC-Da-H9pFU.js} +1 -1
  6. package/console-app/assets/{c4Diagram-5PPSVZJV-FB0YMoOr.js → c4Diagram-5PPSVZJV-CPQ006DM.js} +1 -1
  7. package/console-app/assets/channel-Bk5Nkkn2.js +1 -0
  8. package/console-app/assets/{chunk-2GRJ4B5K-BLGsmyy4.js → chunk-2GRJ4B5K-B3QE8g_6.js} +1 -1
  9. package/console-app/assets/{chunk-4I5QYGJK-DCgTj78f.js → chunk-4I5QYGJK-D04DssN0.js} +1 -1
  10. package/console-app/assets/{chunk-5RXB4S5H-CX9hS68x.js → chunk-5RXB4S5H-CXe_vAKZ.js} +1 -1
  11. package/console-app/assets/{chunk-6Q2QTUOP-xrgFRP4Y.js → chunk-6Q2QTUOP-DhpMC5UR.js} +1 -1
  12. package/console-app/assets/{chunk-7Z6QIM7H-CbBMe7ej.js → chunk-7Z6QIM7H-CtoQQGfm.js} +1 -1
  13. package/console-app/assets/{chunk-GF5L2VYU-BXraqZ7w.js → chunk-GF5L2VYU-BovriS0p.js} +1 -1
  14. package/console-app/assets/{chunk-I66GZJ75-CbpQtX8e.js → chunk-I66GZJ75-Goasace2.js} +1 -1
  15. package/console-app/assets/{chunk-JQJVKLGR-Cp9FHSH6.js → chunk-JQJVKLGR-Dy3HStoh.js} +1 -1
  16. package/console-app/assets/{chunk-KBJHAD2P-Brvmen34.js → chunk-KBJHAD2P-Cm5EwbeQ.js} +1 -1
  17. package/console-app/assets/{chunk-NSK5VX7P-Bo-dbDZD.js → chunk-NSK5VX7P-DZ-VVQUA.js} +1 -1
  18. package/console-app/assets/{chunk-QR6OTTB3-B5Al5KEo.js → chunk-QR6OTTB3-W5GRG-wW.js} +1 -1
  19. package/console-app/assets/{chunk-RYQCIY6F-WOZyn5It.js → chunk-RYQCIY6F-_xvZ8Hx8.js} +1 -1
  20. package/console-app/assets/{chunk-UBXNYLIW-D9OoHV5X.js → chunk-UBXNYLIW-C0L1Tpxq.js} +1 -1
  21. package/console-app/assets/{chunk-W5SLKNZC-BNTcVpi3.js → chunk-W5SLKNZC-DAyLbBQq.js} +1 -1
  22. package/console-app/assets/{chunk-WRU74C26-DXijYjrx.js → chunk-WRU74C26-BrL4inwu.js} +1 -1
  23. package/console-app/assets/chunk-XXDRQBXY-CCdCi2uV.js +1 -0
  24. package/console-app/assets/classDiagram-JCYQIIEL-Dgekxp3j.js +1 -0
  25. package/console-app/assets/classDiagram-v2-OCEON4UE-Dgekxp3j.js +1 -0
  26. package/console-app/assets/{cose-bilkent-JH36ORCC-CPN5VkQC.js → cose-bilkent-JH36ORCC-DxHzzMQL.js} +1 -1
  27. package/console-app/assets/{cynefin-VYW2F7L2-CuBPO3Z0.js → cynefin-VYW2F7L2-7ytt-CDO.js} +1 -1
  28. package/console-app/assets/{cynefinDiagram-MW4NZA55-BYc2PGXv.js → cynefinDiagram-MW4NZA55-Cq-zIV7s.js} +1 -1
  29. package/console-app/assets/{dagre-7HV9Jfb_.js → dagre-Dl-9JF5i.js} +1 -1
  30. package/console-app/assets/{dagre-VZM6K2ZE-BpPyuM7i.js → dagre-VZM6K2ZE-DLlanPb9.js} +1 -1
  31. package/console-app/assets/{diagram-7IWD3JNH-DTH9ID9z.js → diagram-7IWD3JNH-NTCRs_uw.js} +1 -1
  32. package/console-app/assets/{diagram-B4RE2ZJO-DwZb9gPm.js → diagram-B4RE2ZJO-Dwf7hoRU.js} +1 -1
  33. package/console-app/assets/{diagram-LBJQPF4R-DfvBayzk.js → diagram-LBJQPF4R-2h_a7jsr.js} +1 -1
  34. package/console-app/assets/{diagram-Q27KOJAE-hksFpSxs.js → diagram-Q27KOJAE-DuOfl1WJ.js} +1 -1
  35. package/console-app/assets/{diagram-UB23O5K3-5hEVCouO.js → diagram-UB23O5K3-Blp2hikL.js} +1 -1
  36. package/console-app/assets/{ebnfDiagram-BXEA7PRR-D0v6RJvf.js → ebnfDiagram-BXEA7PRR-BwdeYz2Z.js} +1 -1
  37. package/console-app/assets/{erDiagram-JOGREHBK-DGps-M4l.js → erDiagram-JOGREHBK-DY_x1XSg.js} +1 -1
  38. package/console-app/assets/eventmodeling-45OFAUF4-2ImzjrgM.js +1 -0
  39. package/console-app/assets/flowDiagram-UKHOOZJN-DmrgHe66.js +1 -0
  40. package/console-app/assets/{ganttDiagram-PKOTCBZU-Dok7ME1t.js → ganttDiagram-PKOTCBZU-DxiIwMWB.js} +1 -1
  41. package/console-app/assets/{gitGraph-TEB2WS4Q-8492lYYh.js → gitGraph-TEB2WS4Q-C3DsIpZV.js} +1 -1
  42. package/console-app/assets/{gitGraphDiagram-DS77QQ5N-sPOnBy5f.js → gitGraphDiagram-DS77QQ5N-C2pPy08m.js} +1 -1
  43. package/console-app/assets/{index-DqNqujdF.js → index-D6aBqNnO.js} +179 -179
  44. package/console-app/assets/{info-DKCQHKI2-U4uEmX4H.js → info-DKCQHKI2-FJuVYZ8D.js} +1 -1
  45. package/console-app/assets/{infoDiagram-6WML65LV-CNV12_Nx.js → infoDiagram-6WML65LV-Bih5T82B.js} +1 -1
  46. package/console-app/assets/{ishikawaDiagram-WSZJBQD7-CcnTBGLj.js → ishikawaDiagram-WSZJBQD7-jOkuIgMl.js} +1 -1
  47. package/console-app/assets/{journeyDiagram-NVQOT4AX-MX-UQBJ7.js → journeyDiagram-NVQOT4AX-CZ9yVscx.js} +1 -1
  48. package/console-app/assets/{kanban-definition-27J2QSJJ-BXh1Eu4D.js → kanban-definition-27J2QSJJ-Dpmgfv5c.js} +1 -1
  49. package/console-app/assets/{line-2B2dlQbw.js → line-DjmQl1gv.js} +1 -1
  50. package/console-app/assets/{linear-DAVRH-Dp.js → linear-B8fAzric.js} +1 -1
  51. package/console-app/assets/{mermaid-parser.core-DxPo1qbR.js → mermaid-parser.core-BxoecV24.js} +3 -3
  52. package/console-app/assets/{mermaid.core-DpvXaF3y.js → mermaid.core-D2Ux-Rs7.js} +4 -4
  53. package/console-app/assets/{mindmap-definition-FAOFIHXS-wIEKn4qe.js → mindmap-definition-FAOFIHXS-5xpWfvPY.js} +1 -1
  54. package/console-app/assets/{packet-7NZHBO7P-CXySycDQ.js → packet-7NZHBO7P-Bq9JPqWg.js} +1 -1
  55. package/console-app/assets/{pegDiagram-VL7TDLO6-CDGkzO6q.js → pegDiagram-VL7TDLO6-BKWLK1GI.js} +1 -1
  56. package/console-app/assets/{pie-RZYD4A2V-9woSahH7.js → pie-RZYD4A2V-CsGG-f-c.js} +1 -1
  57. package/console-app/assets/{pieDiagram-7S7Q4E2Y-DLoZWnVF.js → pieDiagram-7S7Q4E2Y-BRy6lUc2.js} +1 -1
  58. package/console-app/assets/{quadrantDiagram-CIZ2JOQS-NBGRoga7.js → quadrantDiagram-CIZ2JOQS-OcYHZLLg.js} +1 -1
  59. package/console-app/assets/{radar-I7S5WNFK-BYhW66ZA.js → radar-I7S5WNFK-8MO05jdC.js} +1 -1
  60. package/console-app/assets/{railroad-3IZDKUUU-BqHXlwF5.js → railroad-3IZDKUUU-CLs1yR0q.js} +1 -1
  61. package/console-app/assets/railroad-abnf-AHOZXSZD-CA9-7Fw1.js +1 -0
  62. package/console-app/assets/railroad-ebnf-EBAXGLYW-BhkwTTAW.js +1 -0
  63. package/console-app/assets/railroad-peg-LSFZ7HO6-BEaB8UlJ.js +1 -0
  64. package/console-app/assets/{railroadDiagram-AXF67PYL-FYQaHJ6A.js → railroadDiagram-AXF67PYL-DjpHDwhw.js} +1 -1
  65. package/console-app/assets/{requirementDiagram-LRYGKXZP-ihhW1kgC.js → requirementDiagram-LRYGKXZP-CyKaqOMR.js} +1 -1
  66. package/console-app/assets/{sankeyDiagram-W5VNT64P-Dw2EbW8v.js → sankeyDiagram-W5VNT64P-0WoWlmdY.js} +1 -1
  67. package/console-app/assets/{sequenceDiagram-SI44F4Z6-C6i_U4QX.js → sequenceDiagram-SI44F4Z6-kd31YoP4.js} +1 -1
  68. package/console-app/assets/{src-DF-84qwJ.js → src-CGPyCqg2.js} +1 -1
  69. package/console-app/assets/{stateDiagram-OKZ733FA-xH4wcMO4.js → stateDiagram-OKZ733FA-Cwy-Xwqp.js} +1 -1
  70. package/console-app/assets/stateDiagram-v2-UEYNNEHI-DExEOOCw.js +1 -0
  71. package/console-app/assets/{swimlanes-SLNWSIFB-CkFlU1Qc.js → swimlanes-SLNWSIFB-Cq0Pq-Qq.js} +1 -1
  72. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-B0RUxlCH.js +8 -0
  73. package/console-app/assets/{timeline-definition-Z64GVDOM-BQE9-7mm.js → timeline-definition-Z64GVDOM-CgFH2I_j.js} +1 -1
  74. package/console-app/assets/{treeView-QDETBFTQ-C4hse2Wn.js → treeView-QDETBFTQ-CmeHYUxi.js} +1 -1
  75. package/console-app/assets/{treemap-6X3UGDF4-Bi7ORgq6.js → treemap-6X3UGDF4-B6JWxyQe.js} +1 -1
  76. package/console-app/assets/{vennDiagram-T6HMQDX7-DbUdNREA.js → vennDiagram-T6HMQDX7-DdGYpKcz.js} +1 -1
  77. package/console-app/assets/{wardley-OPB4EBWU-BHqXIxRe.js → wardley-OPB4EBWU-BVF8AOCQ.js} +1 -1
  78. package/console-app/assets/{wardleyDiagram-T6FBY63Y-1VOvM_bb.js → wardleyDiagram-T6FBY63Y-BUFon1WP.js} +1 -1
  79. package/console-app/assets/{xychartDiagram-ELKLHX3M-C3DVfSR9.js → xychartDiagram-ELKLHX3M-Bu-WJdeF.js} +1 -1
  80. package/console-app/index.html +1 -1
  81. package/dist/.pikku/addon/index.d.ts +1 -1
  82. package/dist/.pikku/addon/index.js +1 -1
  83. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
  84. package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
  85. package/dist/.pikku/agent/index.d.ts +1 -1
  86. package/dist/.pikku/agent/index.js +1 -1
  87. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  88. package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
  89. package/dist/.pikku/auth/index.d.ts +1 -1
  90. package/dist/.pikku/auth/index.js +1 -1
  91. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
  92. package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
  93. package/dist/.pikku/channel/index.d.ts +1 -1
  94. package/dist/.pikku/channel/index.js +1 -1
  95. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  96. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  97. package/dist/.pikku/cli/index.d.ts +1 -1
  98. package/dist/.pikku/cli/index.js +1 -1
  99. package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
  100. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  101. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  102. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
  103. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
  104. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.json +13 -10
  105. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  106. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  107. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  108. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +13 -10
  109. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  110. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  111. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  112. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  113. package/dist/.pikku/error/index.d.ts +1 -1
  114. package/dist/.pikku/error/index.js +1 -1
  115. package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
  116. package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
  117. package/dist/.pikku/function/index.d.ts +1 -1
  118. package/dist/.pikku/function/index.js +1 -1
  119. package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
  120. package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
  121. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  122. package/dist/.pikku/function/pikku-functions-meta.gen.json +4 -28
  123. package/dist/.pikku/function/pikku-functions.gen.js +1 -3
  124. package/dist/.pikku/gateway/index.d.ts +1 -1
  125. package/dist/.pikku/gateway/index.js +1 -1
  126. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
  127. package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
  128. package/dist/.pikku/http/index.d.ts +1 -1
  129. package/dist/.pikku/http/index.js +1 -1
  130. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  131. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  132. package/dist/.pikku/mcp/index.d.ts +1 -1
  133. package/dist/.pikku/mcp/index.js +1 -1
  134. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  135. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  136. package/dist/.pikku/middleware/index.d.ts +1 -1
  137. package/dist/.pikku/middleware/index.js +1 -1
  138. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
  139. package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
  140. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
  141. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
  142. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  143. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  144. package/dist/.pikku/pikku-services.gen.d.ts +1 -1
  145. package/dist/.pikku/queue/index.d.ts +1 -1
  146. package/dist/.pikku/queue/index.js +1 -1
  147. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  148. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  149. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
  150. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  151. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  152. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  153. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +0 -1
  154. package/dist/.pikku/scenarios/index.d.ts +1 -1
  155. package/dist/.pikku/scenarios/index.js +1 -1
  156. package/dist/.pikku/scenarios/pikku-personas.gen.js +1 -1
  157. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
  158. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
  159. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
  160. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
  161. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
  162. package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
  163. package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
  164. package/dist/.pikku/scheduler/index.d.ts +1 -1
  165. package/dist/.pikku/scheduler/index.js +1 -1
  166. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  167. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  168. package/dist/.pikku/schemas/register.gen.js +1 -3
  169. package/dist/.pikku/schemas/schemas/FabricDeployApplyInput.schema.json +1 -1
  170. package/dist/.pikku/scopes/index.d.ts +1 -1
  171. package/dist/.pikku/scopes/index.js +1 -1
  172. package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
  173. package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
  174. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
  175. package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
  176. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
  177. package/dist/.pikku/secrets/index.d.ts +1 -1
  178. package/dist/.pikku/secrets/index.js +1 -1
  179. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  180. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  181. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  182. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  183. package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
  184. package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
  185. package/dist/.pikku/setup/index.d.ts +1 -1
  186. package/dist/.pikku/setup/index.js +1 -1
  187. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
  188. package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
  189. package/dist/.pikku/trigger/index.d.ts +1 -1
  190. package/dist/.pikku/trigger/index.js +1 -1
  191. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  192. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  193. package/dist/.pikku/variables/index.d.ts +1 -1
  194. package/dist/.pikku/variables/index.js +1 -1
  195. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  196. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  197. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  198. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  199. package/dist/.pikku/workflow/index.d.ts +1 -1
  200. package/dist/.pikku/workflow/index.js +1 -1
  201. package/dist/.pikku/workflow/meta/allWorkflow.gen.json +2 -8
  202. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  203. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  204. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  205. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  206. package/dist/bin/pikku-bin.mjs +2 -2
  207. package/dist/src/deploy/bundler/bundler.d.ts +9 -0
  208. package/dist/src/deploy/bundler/bundler.js +38 -13
  209. package/dist/src/deploy/bundler/service-module-map.d.ts +0 -16
  210. package/dist/src/deploy/bundler/service-module-map.js +20 -3
  211. package/dist/src/fabric/fabric-commands.d.ts +3 -3
  212. package/dist/src/fabric/fabric-commands.js +7 -6
  213. package/dist/src/fabric/functions/deploy.function.d.ts +14 -5
  214. package/dist/src/fabric/functions/deploy.function.js +49 -20
  215. package/dist/src/fabric/lib/stage.js +1 -1
  216. package/dist/src/functions/validate/shared-checks.js +6 -4
  217. package/dist/src/functions/workflows/all.workflow.js +0 -6
  218. package/dist/src/utils/pikku-cli-config.js +1 -7
  219. package/dist/src/utils/remove-legacy-scaffold-file.d.ts +5 -0
  220. package/dist/src/utils/remove-legacy-scaffold-file.js +11 -2
  221. package/dist/tsconfig.tsbuildinfo +1 -1
  222. package/package.json +3 -3
  223. package/snippets.json +1 -1
  224. package/surface.json +2 -2
  225. package/console-app/assets/architecture-TIHT7OUA-G_ldr-C2.js +0 -1
  226. package/console-app/assets/channel-CuDpOUYn.js +0 -1
  227. package/console-app/assets/chunk-XXDRQBXY-DRMEt0Gf.js +0 -1
  228. package/console-app/assets/classDiagram-JCYQIIEL-Bjgk6QkN.js +0 -1
  229. package/console-app/assets/classDiagram-v2-OCEON4UE-Bjgk6QkN.js +0 -1
  230. package/console-app/assets/eventmodeling-45OFAUF4-DWRslJcU.js +0 -1
  231. package/console-app/assets/flowDiagram-UKHOOZJN-CE3qN_pH.js +0 -1
  232. package/console-app/assets/railroad-abnf-AHOZXSZD-BfGOy69e.js +0 -1
  233. package/console-app/assets/railroad-ebnf-EBAXGLYW-BbGv9WfS.js +0 -1
  234. package/console-app/assets/railroad-peg-LSFZ7HO6-CCiPI8BL.js +0 -1
  235. package/console-app/assets/stateDiagram-v2-UEYNNEHI-BJln5PLd.js +0 -1
  236. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-CSLhmtbh.js +0 -8
  237. package/dist/.pikku/schemas/schemas/PikkuUserAdminFunctionsOutput.schema.json +0 -1
  238. package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.d.ts +0 -1
  239. package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.js +0 -55
  240. package/dist/src/functions/wirings/user-admin/serialize-user-admin-functions.d.ts +0 -25
  241. package/dist/src/functions/wirings/user-admin/serialize-user-admin-functions.js +0 -294
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { pikkuSessionlessFunc } from '../../../.pikku/function/index.js';
3
3
  import { resolveApiContext } from '../lib/config.js';
4
4
  import { getFabricRPC } from '../lib/http.js';
5
- import { assertNamedBranchDeploySafety, resolveRef } from '../lib/git.js';
5
+ import { assertNamedBranchDeploySafety, currentBranch, resolveRef, } from '../lib/git.js';
6
6
  import { promptConfirm } from '../lib/prompt.js';
7
7
  import { added, changed, removed, dim, table } from '../lib/output.js';
8
8
  import { blockedReason, blockedSummary, missingConfigHints, changesAreEmpty, classifyStatus, describeDeployment, destructiveMigrations, isApprovable, readDeploymentStatus, readWorkers, reconcileDeployedRef, stateLabel, waitForDeployment, } from '../lib/deployment.js';
@@ -12,7 +12,7 @@ export const FabricDeployInput = z.object({
12
12
  production: z.boolean().optional(),
13
13
  ref: z.string().optional(),
14
14
  deploymentId: z.string().optional(),
15
- sync: z.boolean().optional(),
15
+ detach: z.boolean().optional(),
16
16
  autoApprove: z.boolean().optional(),
17
17
  allowDestructive: z.boolean().optional(),
18
18
  timeout: z.number().optional(),
@@ -23,15 +23,15 @@ export const FabricDeployValidatedInput = FabricDeployInput.superRefine((value,
23
23
  if (value.branch || value.production) {
24
24
  ctx.addIssue({
25
25
  code: z.ZodIssueCode.custom,
26
- message: '--deployment-id already names its target — drop --branch/--production.',
26
+ message: '--deployment-id already names its target — drop the branch/--production.',
27
27
  });
28
28
  }
29
29
  return;
30
30
  }
31
- if (!!value.branch === !!value.production) {
31
+ if (value.branch && value.production) {
32
32
  ctx.addIssue({
33
33
  code: z.ZodIssueCode.custom,
34
- message: 'Pass exactly one of --branch or --production.',
34
+ message: 'Pass a branch or --production, not both — --production is always main.',
35
35
  });
36
36
  }
37
37
  });
@@ -96,16 +96,25 @@ async function prepDeploy({ branch, production, ref }) {
96
96
  if (!ctx.projectId) {
97
97
  throw new Error('No fabric project linked. Run `pikku fabric link` first.');
98
98
  }
99
- // Guarded rather than asserted: the schema-level refine is bypassed whenever
100
- // the function is called outside CLI arg parsing, and `branch!` turned that
101
- // into "local branch undefined does not exist" — an error that names nothing.
102
- if (!production && !branch) {
103
- throw new Error('Pass exactly one of --branch or --production.');
104
- }
105
- const targetBranch = production ? 'main' : branch;
99
+ // With no target named, deploy the branch that is checked out — the common
100
+ // case, and the one worth not making people type twice. It is only safe to
101
+ // infer because `assertNamedBranchDeploySafety` below refuses any branch that
102
+ // is missing an upstream or out of sync with it, so an inferred target cannot
103
+ // ship something that was never pushed.
104
+ const inferred = !production && !branch;
105
+ const targetBranch = production
106
+ ? 'main'
107
+ : (branch ?? branchFromHead(await currentBranch()));
106
108
  const safety = await assertNamedBranchDeploySafety(targetBranch);
107
109
  const resolved = ref ? ((await resolveRef(ref)) ?? ref) : safety.headSha;
108
- return { ctx, projectId: ctx.projectId, targetBranch, resolved, safety };
110
+ return {
111
+ ctx,
112
+ projectId: ctx.projectId,
113
+ targetBranch,
114
+ resolved,
115
+ safety,
116
+ inferred,
117
+ };
109
118
  }
110
119
  async function prepAttach() {
111
120
  const ctx = await resolveApiContext();
@@ -124,6 +133,20 @@ const EXIT_BY_OUTCOME = {
124
133
  blocked: 3,
125
134
  timeout: 4,
126
135
  };
136
+ /**
137
+ * The branch to deploy when none was named, read off the checkout.
138
+ *
139
+ * `git rev-parse --abbrev-ref HEAD` answers the literal string `HEAD` on a
140
+ * detached checkout, which is not a branch and would be reported downstream as
141
+ * a branch that does not exist locally. Naming the real problem here is the
142
+ * difference between "check out a branch" and a puzzle.
143
+ */
144
+ export const branchFromHead = (head) => {
145
+ if (head === 'HEAD' || head === '') {
146
+ throw new Error('Deployment blocked: HEAD is detached, so there is no current branch to deploy.\nCheck out a branch, or name the target: `pikku fabric deploy apply <branch>`.');
147
+ }
148
+ return head;
149
+ };
127
150
  export const FabricDeployApply = pikkuSessionlessFunc({
128
151
  description: 'Build + deploy a named branch or production (main), or attach to an existing deployment.',
129
152
  input: FabricDeployValidatedInput,
@@ -137,7 +160,7 @@ export const FabricDeployApply = pikkuSessionlessFunc({
137
160
  throw new Error('--timeout must be a positive number of seconds.');
138
161
  }
139
162
  if (input.deploymentId && (input.branch || input.production)) {
140
- throw new Error('--deployment-id already names its target — drop --branch/--production.');
163
+ throw new Error('--deployment-id already names its target — drop the branch/--production.');
141
164
  }
142
165
  const attaching = Boolean(input.deploymentId);
143
166
  let projectId;
@@ -158,11 +181,17 @@ export const FabricDeployApply = pikkuSessionlessFunc({
158
181
  emit({ event: 'attached', deploymentId, status: current.status });
159
182
  }
160
183
  else {
161
- const { ctx, projectId: id, targetBranch, resolved, safety, } = await prepDeploy(input);
184
+ const { ctx, projectId: id, targetBranch, resolved, safety, inferred, } = await prepDeploy(input);
162
185
  projectId = id;
163
186
  branch = targetBranch;
164
187
  ref = resolved;
165
188
  rpc = getFabricRPC({ apiUrl: ctx.apiUrl, token: ctx.token });
189
+ // An inferred target is said out loud before anything is built. Under -y
190
+ // there is no confirmation prompt to name it, and a deploy that never
191
+ // told you which branch it picked is the one that ships the wrong branch.
192
+ if (inferred && !input.json) {
193
+ console.log(dim(`Deploying the current branch: ${targetBranch}`));
194
+ }
166
195
  if (!input.autoApprove) {
167
196
  const target = `${branch} @ ${resolved.slice(0, 8)}`;
168
197
  if (!process.stdin.isTTY) {
@@ -202,7 +231,7 @@ export const FabricDeployApply = pikkuSessionlessFunc({
202
231
  ...(stageId ? { stageId } : {}),
203
232
  ...(runId ? { runId } : {}),
204
233
  };
205
- if (!input.sync && !attaching) {
234
+ if (input.detach && !attaching) {
206
235
  return { ...base, outcome: 'queued' };
207
236
  }
208
237
  let approvalWithheld;
@@ -225,7 +254,7 @@ export const FabricDeployApply = pikkuSessionlessFunc({
225
254
  : '';
226
255
  return promptConfirm(`Plan for ${branch ?? deploymentId} is ready to publish (${stateLabel(status.status, status.statusReason)}).${warning} Approve?`);
227
256
  };
228
- if (!input.sync) {
257
+ if (input.detach) {
229
258
  const status = await readDeploymentStatus(rpc, deploymentId);
230
259
  const klass = classifyStatus(status.status);
231
260
  const outcome = klass === 'in_flight' ? 'queued' : klass;
@@ -324,7 +353,7 @@ const missingLines = (label, entries) => {
324
353
  ...entries.map((e) => ` ${e.name}${e.displayName ? dim(` (${e.displayName})`) : ''}${e.docsUrl ? dim(` — ${e.docsUrl}`) : ''}`),
325
354
  ];
326
355
  };
327
- const reattachHint = (deploymentId) => dim(`Re-attach with \`pikku fabric deploy apply --deployment-id ${deploymentId} --sync\`.`);
356
+ const reattachHint = (deploymentId) => dim(`Re-attach with \`pikku fabric deploy apply --deployment-id ${deploymentId}\`.`);
328
357
  export const renderDeployApply = (_s, result) => {
329
358
  const { outcome, branch, ref, deploymentId, status, statusReason, changes, workers, url, elapsedMs, timeoutSeconds, approved, } = result;
330
359
  const where = branch ?? 'deployment';
@@ -363,10 +392,10 @@ export const renderDeployApply = (_s, result) => {
363
392
  console.log(line);
364
393
  if (result.approvalWithheld === 'destructive_migrations') {
365
394
  console.log(dim('The plan drops or rewrites data. Nothing was published — review the migrations above, then re-run with `--allow-destructive` to accept them.'));
366
- console.log(dim(`\`pikku fabric deploy apply --deployment-id ${deploymentId} --sync --auto-approve --allow-destructive\``));
395
+ console.log(dim(`\`pikku fabric deploy apply --deployment-id ${deploymentId} -y --allow-destructive\``));
367
396
  }
368
397
  else if (isApprovable(reason) && !approved) {
369
- console.log(dim(`Approve it with \`pikku fabric deploy apply --deployment-id ${deploymentId} --sync --auto-approve\`.`));
398
+ console.log(dim(`Approve it with \`pikku fabric deploy apply --deployment-id ${deploymentId} -y\`.`));
370
399
  }
371
400
  else if (reason === 'needs_config') {
372
401
  for (const hint of missingConfigHints(result.missingSecrets, result.missingVariables)) {
@@ -23,7 +23,7 @@ export async function resolveStage(rpc, projectId, branch) {
23
23
  return { stageId: only.stageId, branch: only.branch };
24
24
  }
25
25
  throw new Error(stages.length === 0
26
- ? 'No stages deployed for this project yet — run `pikku fabric deploy apply --branch <branch>` first.'
26
+ ? 'No stages deployed for this project yet — run `pikku fabric deploy apply <branch>` first.'
27
27
  : `--branch is required — this project has ${stages.length} stages: ${known.join(', ')}`);
28
28
  }
29
29
  const stage = stages.find((s) => s.branch === branch);
@@ -118,10 +118,12 @@ export const staticStubbedImports = (code) => {
118
118
  .every((binding) => /^type\s/.test(binding.trim()))) {
119
119
  continue;
120
120
  }
121
- for (const [service, patterns] of Object.entries(SERVICE_MODULE_MAP)) {
122
- if (patterns.some((pattern) => pattern.test(specifier))) {
123
- found.push({ module: specifier, service });
124
- }
121
+ // Services share pattern arrays — the AI SDKs gate on both `agentRunner`
122
+ // and `ai` — so a per-service push reports one import as many findings.
123
+ // The remedy is the same whichever service names it: one entry per import.
124
+ const service = Object.entries(SERVICE_MODULE_MAP).find(([, patterns]) => patterns.some((pattern) => pattern.test(specifier)))?.[0];
125
+ if (service) {
126
+ found.push({ module: specifier, service });
125
127
  }
126
128
  }
127
129
  return found;
@@ -20,11 +20,6 @@ const scaffoldFiles = (config) => {
20
20
  file: config.consoleFunctionsFile,
21
21
  generator: 'pikkuConsoleFunctions',
22
22
  });
23
- if (config.scaffold?.userAdmin && config.userAdminFunctionsFile)
24
- files.push({
25
- file: config.userAdminFunctionsFile,
26
- generator: 'pikkuUserAdminFunctions',
27
- });
28
23
  if (config.scaffold?.virtualUser && config.virtualUserFunctionsFile)
29
24
  files.push({
30
25
  file: config.virtualUserFunctionsFile,
@@ -209,7 +204,6 @@ export const allWorkflow = pikkuWorkflowComplexFunc({
209
204
  workflow.do('Graph wirings', 'pikkuGraphWirings', null),
210
205
  workflow.do('Public RPC', 'pikkuPublicRPC', null),
211
206
  workflow.do('Console functions', 'pikkuConsoleFunctions', null),
212
- workflow.do('User admin functions', 'pikkuUserAdminFunctions', null),
213
207
  workflow.do('Virtual user functions', 'pikkuVirtualUserFunctions', null),
214
208
  workflow.do('Events scaffold', 'pikkuEventsScaffold', null),
215
209
  workflow.do('Emails', 'pikkuEmails', null),
@@ -365,6 +365,7 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
365
365
  const resolvedScaffoldDir = isAbsolute(scaffoldDir)
366
366
  ? scaffoldDir
367
367
  : join(result.rootDir, scaffoldDir);
368
+ result.resolvedScaffoldDir = resolvedScaffoldDir;
368
369
  // Per-unit deploy codegen re-runs the whole of `pikku all` with `--outDir`
369
370
  // pointed at one unit's `.pikku`. It needs the `.pikku` artifacts and
370
371
  // nothing else — the scaffold is project source, and regenerating it under
@@ -385,7 +386,6 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
385
386
  agent: 'publicAgentFile',
386
387
  console: 'consoleFunctionsFile',
387
388
  scenarios: 'scenariosFunctionsFile',
388
- userAdmin: 'userAdminFunctionsFile',
389
389
  virtualUser: 'virtualUserFunctionsFile',
390
390
  workflow: 'workflowRoutesFile',
391
391
  events: 'eventsChannelFile',
@@ -439,12 +439,6 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
439
439
  if (result.scaffold?.console && !result.consoleSchemasFile) {
440
440
  result.consoleSchemasFile = join(resolvedScaffoldDir, 'console', 'console.schemas.gen.ts');
441
441
  }
442
- if (result.scaffold?.userAdmin && !result.userAdminFunctionsFile) {
443
- result.userAdminFunctionsFile = join(resolvedScaffoldDir, 'admin', 'user-admin.gen.ts');
444
- }
445
- if (result.scaffold?.userAdmin && !result.userAdminSchemasFile) {
446
- result.userAdminSchemasFile = join(resolvedScaffoldDir, 'admin', 'user-admin.schemas.gen.ts');
447
- }
448
442
  if (result.scaffold?.virtualUser && !result.virtualUserFunctionsFile) {
449
443
  result.virtualUserFunctionsFile = join(resolvedScaffoldDir, 'virtual-user', 'virtual-user.gen.ts');
450
444
  }
@@ -10,6 +10,11 @@ export declare const removeLegacyScaffoldFile: (file: string) => Promise<void>;
10
10
  * an unregenerated project is already safe, but the file is then dead code that
11
11
  * still imports `zod`, so it goes.
12
12
  *
13
+ * A leftover user-admin scaffold still registers `pikkuAdminListUsers` and its
14
+ * five siblings, so a project installing `@pikku/addon-admin` would answer to
15
+ * two spellings of the same six calls. Named by path: there is no longer a
16
+ * `scaffold.userAdmin` field to derive one from.
17
+ *
13
18
  * Unlike `pruneLegacyScaffoldFiles`, which removes a file from a path pikku used
14
19
  * to write to, this removes a file pikku no longer writes at all.
15
20
  */
@@ -19,8 +19,6 @@ const scaffoldFiles = (config) => {
19
19
  config.consoleSchemasFile,
20
20
  config.scenariosFunctionsFile,
21
21
  config.scenariosSchemasFile,
22
- config.userAdminFunctionsFile,
23
- config.userAdminSchemasFile,
24
22
  config.eventsChannelFile,
25
23
  config.eventsSchemasFile,
26
24
  config.authFile,
@@ -44,6 +42,11 @@ export const removeLegacyScaffoldFile = async (file) => {
44
42
  * an unregenerated project is already safe, but the file is then dead code that
45
43
  * still imports `zod`, so it goes.
46
44
  *
45
+ * A leftover user-admin scaffold still registers `pikkuAdminListUsers` and its
46
+ * five siblings, so a project installing `@pikku/addon-admin` would answer to
47
+ * two spellings of the same six calls. Named by path: there is no longer a
48
+ * `scaffold.userAdmin` field to derive one from.
49
+ *
47
50
  * Unlike `pruneLegacyScaffoldFiles`, which removes a file from a path pikku used
48
51
  * to write to, this removes a file pikku no longer writes at all.
49
52
  */
@@ -51,6 +54,12 @@ export const removeRetiredScaffoldFiles = async (config) => {
51
54
  for (const file of [
52
55
  config.scenariosFunctionsFile,
53
56
  config.scenariosSchemasFile,
57
+ ...(config.resolvedScaffoldDir
58
+ ? [
59
+ join(config.resolvedScaffoldDir, 'admin', 'user-admin.gen.ts'),
60
+ join(config.resolvedScaffoldDir, 'admin', 'user-admin.schemas.gen.ts'),
61
+ ]
62
+ : []),
54
63
  ]) {
55
64
  if (file && existsSync(file)) {
56
65
  await rm(file, { force: true });
@@ -1 +1 @@
1
- {"root":["../bin/pikku.ts","../src/cli.wiring.ts","../src/services.ts","../src/deploy/build-pipeline.ts","../src/deploy/frontend-assets.ts","../src/deploy/server-entry.ts","../src/deploy/analyzer/analyzer.ts","../src/deploy/analyzer/index.ts","../src/deploy/bundler/bun-bundler.ts","../src/deploy/bundler/bundler.interface.ts","../src/deploy/bundler/bundler.ts","../src/deploy/bundler/dep-extractor.ts","../src/deploy/bundler/index.ts","../src/deploy/bundler/node-bundler.ts","../src/deploy/bundler/service-module-map.ts","../src/deploy/bundler/types.ts","../src/deploy/codegen/index.ts","../src/deploy/codegen/per-unit-codegen.ts","../src/deploy/plan/executor.ts","../src/deploy/plan/formatter.ts","../src/deploy/plan/index.ts","../src/deploy/plan/planner.ts","../src/deploy/plan/provider.ts","../src/deploy/plan/types.ts","../src/fabric/fabric-commands.ts","../src/fabric/functions/add.function.ts","../src/fabric/functions/addon-verify.function.ts","../src/fabric/functions/db-schema.function.ts","../src/fabric/functions/deploy-list.function.ts","../src/fabric/functions/deploy-units.function.ts","../src/fabric/functions/deploy.function.ts","../src/fabric/functions/domains-add.function.ts","../src/fabric/functions/domains-list.function.ts","../src/fabric/functions/domains-remove.function.ts","../src/fabric/functions/errors.function.ts","../src/fabric/functions/findings-clear.function.ts","../src/fabric/functions/findings-flush.function.ts","../src/fabric/functions/findings-list.function.ts","../src/fabric/functions/init.function.ts","../src/fabric/functions/link.function.ts","../src/fabric/functions/llm-key.function.ts","../src/fabric/functions/login.function.ts","../src/fabric/functions/logs.function.ts","../src/fabric/functions/metrics.function.ts","../src/fabric/functions/projects-list.function.ts","../src/fabric/functions/publish.function.ts","../src/fabric/functions/report.function.ts","../src/fabric/functions/rollback.function.ts","../src/fabric/functions/secrets-delete.function.ts","../src/fabric/functions/secrets-list.function.ts","../src/fabric/functions/secrets-rotate.function.ts","../src/fabric/functions/secrets-set.function.ts","../src/fabric/functions/smoke.function.ts","../src/fabric/functions/status.function.ts","../src/fabric/functions/trace.function.ts","../src/fabric/functions/validate.function.ts","../src/fabric/functions/variables-get.function.ts","../src/fabric/functions/variables-set.function.ts","../src/fabric/lib/blank-comments.ts","../src/fabric/lib/blank-scenario-meta.ts","../src/fabric/lib/config.ts","../src/fabric/lib/console-url.ts","../src/fabric/lib/deployment.ts","../src/fabric/lib/finding-spool.ts","../src/fabric/lib/finding.ts","../src/fabric/lib/frontend-typecheck.ts","../src/fabric/lib/git.ts","../src/fabric/lib/http.ts","../src/fabric/lib/not-implemented.ts","../src/fabric/lib/output.ts","../src/fabric/lib/prompt.ts","../src/fabric/lib/report-environment.ts","../src/fabric/lib/sealed-box.ts","../src/fabric/lib/stage.ts","../src/fabric/lib/variable-value.ts","../src/fabric/sdk/http-map.gen.d.ts","../src/fabric/sdk/pikku-fetch.gen.ts","../src/fabric/sdk/pikku-rpc.gen.ts","../src/fabric/sdk/rpc-map.gen.d.ts","../src/functions/commands/all.ts","../src/functions/commands/audit.ts","../src/functions/commands/binary.ts","../src/functions/commands/bootstrap.ts","../src/functions/commands/bun-coverage-loader.ts","../src/functions/commands/db-audit.ts","../src/functions/commands/db-baseline.ts","../src/functions/commands/db-check.ts","../src/functions/commands/db-codegen.ts","../src/functions/commands/db-export.ts","../src/functions/commands/db-generate.ts","../src/functions/commands/db-migrate.ts","../src/functions/commands/db-reset.ts","../src/functions/commands/db-shared.ts","../src/functions/commands/deploy-apply.ts","../src/functions/commands/deploy-info.ts","../src/functions/commands/deploy-plan.ts","../src/functions/commands/dev-agent-runner.ts","../src/functions/commands/dev.ts","../src/functions/commands/dist.ts","../src/functions/commands/doc.ts","../src/functions/commands/emails-init.ts","../src/functions/commands/enable.ts","../src/functions/commands/environment.ts","../src/functions/commands/import-n8n.ts","../src/functions/commands/info.ts","../src/functions/commands/knowledge-index.ts","../src/functions/commands/knowledge-plan.ts","../src/functions/commands/knowledge-validate.ts","../src/functions/commands/load-user-project.ts","../src/functions/commands/login.ts","../src/functions/commands/meta.ts","../src/functions/commands/new-addon.ts","../src/functions/commands/new-function.ts","../src/functions/commands/new-middleware.ts","../src/functions/commands/new-permission.ts","../src/functions/commands/new-wiring.ts","../src/functions/commands/persona-sync.ts","../src/functions/commands/persona.ts","../src/functions/commands/pikku-command-bootstrap.ts","../src/functions/commands/pikku-command-summary.ts","../src/functions/commands/roles-audit.ts","../src/functions/commands/roles-prune.ts","../src/functions/commands/roles-shared.ts","../src/functions/commands/scenario-browser.ts","../src/functions/commands/scenario-formatter.ts","../src/functions/commands/scenario-ladder.ts","../src/functions/commands/scenario-plan.ts","../src/functions/commands/scenario.ts","../src/functions/commands/scopes-audit.ts","../src/functions/commands/scopes-prune.ts","../src/functions/commands/scopes-shared.ts","../src/functions/commands/semver-render.ts","../src/functions/commands/semver.ts","../src/functions/commands/serve-console.ts","../src/functions/commands/serve-frontend.ts","../src/functions/commands/serve.ts","../src/functions/commands/skills.ts","../src/functions/commands/start-coverage.ts","../src/functions/commands/update-render.ts","../src/functions/commands/update.ts","../src/functions/commands/validate.ts","../src/functions/commands/versions-check.ts","../src/functions/commands/versions-init.ts","../src/functions/commands/versions-update.ts","../src/functions/commands/virtual-user-formatter.ts","../src/functions/commands/watch.ts","../src/functions/db/annotation-parser.ts","../src/functions/db/better-auth-schema.ts","../src/functions/db/check-enums.ts","../src/functions/db/db-codegen.ts","../src/functions/db/db-introspector.ts","../src/functions/db/local-db.ts","../src/functions/db/migration-provenance.ts","../src/functions/db/zod-codegen.ts","../src/functions/db/postgres/pglite-kysely.ts","../src/functions/db/postgres/postgres-introspector.ts","../src/functions/db/sqlite/dev-seed.ts","../src/functions/db/sqlite/sqlite-introspector.ts","../src/functions/db/sqlite/sqlite-kysely.ts","../src/functions/knowledge/render.ts","../src/functions/knowledge/schemas.ts","../src/functions/runtimes/fetch/index.ts","../src/functions/runtimes/nextjs/pikku-command-nextjs.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.ts","../src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.ts","../src/functions/runtimes/websocket/pikku-command-websocket-typed.ts","../src/functions/runtimes/websocket/serialize-websocket-wrapper.ts","../src/functions/surface/build-surface-doc.ts","../src/functions/surface/collect-snippets.ts","../src/functions/surface/collect-surface-usage.ts","../src/functions/surface/collect-surface.ts","../src/functions/surface/generate-surface-doc.ts","../src/functions/surface/render-surface-doc.ts","../src/functions/surface/shipped-surface-doc.ts","../src/functions/surface/surface-doc.types.ts","../src/functions/surface/surface-editorial.ts","../src/functions/surface/write-surface-usage.ts","../src/functions/validate/addon-package-checks.ts","../src/functions/validate/auth-plugin-checks.ts","../src/functions/validate/bootstrap-checks.ts","../src/functions/validate/persona-checks.ts","../src/functions/validate/pikku-barrel-checks.ts","../src/functions/validate/scenario-file-checks.ts","../src/functions/validate/shared-checks.ts","../src/functions/validate/type-identity-checks.ts","../src/functions/validate/validate-registry.ts","../src/functions/validate/validate.ts","../src/functions/validate/websocket-deps-checks.ts","../src/functions/validate/workspace-exports-checks.ts","../src/functions/wirings/agent/pikku-command-agent-types.ts","../src/functions/wirings/agent/pikku-command-agent.ts","../src/functions/wirings/agent/pikku-command-public-agent.ts","../src/functions/wirings/agent/serialize-agent-map.ts","../src/functions/wirings/agent/serialize-agent-types.ts","../src/functions/wirings/agent/serialize-model-aliases.ts","../src/functions/wirings/agent/serialize-public-agent.ts","../src/functions/wirings/agent-scorer/pikku-command-agent-scorer.ts","../src/functions/wirings/agent-scorer/serialize-scorer-names.ts","../src/functions/wirings/auth/pikku-command-auth.ts","../src/functions/wirings/auth/serialize-auth-gen.ts","../src/functions/wirings/auth/serialize-auth-guards.ts","../src/functions/wirings/auth/serialize-auth-meta.ts","../src/functions/wirings/auth/serialize-auth-types.ts","../src/functions/wirings/channels/pikku-channels.ts","../src/functions/wirings/channels/pikku-command-channel-types.ts","../src/functions/wirings/channels/pikku-command-channels-map.ts","../src/functions/wirings/channels/pikku-command-channels.ts","../src/functions/wirings/channels/serialize-channel-types.ts","../src/functions/wirings/channels/serialize-typed-channel-map.ts","../src/functions/wirings/cli/pikku-command-cli-entry.ts","../src/functions/wirings/cli/pikku-command-cli-types.ts","../src/functions/wirings/cli/pikku-command-cli.ts","../src/functions/wirings/cli/serialize-channel-cli-client.ts","../src/functions/wirings/cli/serialize-channel-cli.ts","../src/functions/wirings/cli/serialize-cli-entrypoint-guard.ts","../src/functions/wirings/cli/serialize-cli-types.ts","../src/functions/wirings/cli/serialize-local-cli-bootstrap.ts","../src/functions/wirings/console/pikku-command-console-functions.ts","../src/functions/wirings/console/pikku-command-nodes-meta.ts","../src/functions/wirings/console/serialize-console-functions.ts","../src/functions/wirings/credentials/pikku-command-credentials.ts","../src/functions/wirings/credentials/serialize-credentials-types.ts","../src/functions/wirings/emails/pikku-command-emails.ts","../src/functions/wirings/emails/serialize-emails.ts","../src/functions/wirings/errors/pikku-command-error-types.ts","../src/functions/wirings/errors/serialize-error-types.ts","../src/functions/wirings/functions/pikku-command-addon-types.ts","../src/functions/wirings/functions/pikku-command-function-types-split.ts","../src/functions/wirings/functions/pikku-command-functions.ts","../src/functions/wirings/functions/pikku-command-leaf-indexes.ts","../src/functions/wirings/functions/pikku-command-services.ts","../src/functions/wirings/functions/schemas.ts","../src/functions/wirings/functions/serialize-addon-refs.ts","../src/functions/wirings/functions/serialize-addon-types.ts","../src/functions/wirings/functions/serialize-function-imports.ts","../src/functions/wirings/functions/serialize-function-types.ts","../src/functions/wirings/functions/serialize-leaf-index.ts","../src/functions/wirings/gateway/pikku-command-gateway-types.ts","../src/functions/wirings/gateway/pikku-command-gateway.ts","../src/functions/wirings/gateway/serialize-gateway-meta.ts","../src/functions/wirings/gateway/serialize-gateway-types.ts","../src/functions/wirings/graph/pikku-command-graph-wirings.ts","../src/functions/wirings/graph/serialize-graph-wirings.ts","../src/functions/wirings/http/pikku-command-http-map.ts","../src/functions/wirings/http/pikku-command-http-routes.ts","../src/functions/wirings/http/pikku-command-http-types.ts","../src/functions/wirings/http/pikku-command-openapi.ts","../src/functions/wirings/http/pikku-http-routes.ts","../src/functions/wirings/http/serialize-fetch-wrapper.ts","../src/functions/wirings/http/serialize-http-types.ts","../src/functions/wirings/http/serialize-typed-http-map.ts","../src/functions/wirings/mcp/pikku-command-mcp-json.ts","../src/functions/wirings/mcp/pikku-command-mcp-types.ts","../src/functions/wirings/mcp/pikku-command-mcp.ts","../src/functions/wirings/mcp/serialize-mcp-types.ts","../src/functions/wirings/middleware/pikku-command-middleware.ts","../src/functions/wirings/middleware/serialize-middleware-imports.ts","../src/functions/wirings/middleware/serialize-middleware-types.ts","../src/functions/wirings/package/pikku-command-package-types.ts","../src/functions/wirings/package/pikku-command-package.ts","../src/functions/wirings/package/serialize-package-types.ts","../src/functions/wirings/package/serialize-package.ts","../src/functions/wirings/permissions/pikku-command-permissions.ts","../src/functions/wirings/permissions/serialize-permissions-imports.ts","../src/functions/wirings/personas/personas-secrets-file.ts","../src/functions/wirings/personas/pikku-command-personas.ts","../src/functions/wirings/personas/serialize-personas-secrets.ts","../src/functions/wirings/personas/serialize-personas-types.ts","../src/functions/wirings/queue/pikku-command-queue-map.ts","../src/functions/wirings/queue/pikku-command-queue-service.ts","../src/functions/wirings/queue/pikku-command-queue-types.ts","../src/functions/wirings/queue/pikku-command-queue.ts","../src/functions/wirings/queue/pikku-queue-map.ts","../src/functions/wirings/queue/pikku-queue.ts","../src/functions/wirings/queue/serialize-queue-map.ts","../src/functions/wirings/queue/serialize-queue-meta.ts","../src/functions/wirings/queue/serialize-queue-types.ts","../src/functions/wirings/queue/serialize-queue-wrapper.ts","../src/functions/wirings/realtime/pikku-command-events-scaffold.ts","../src/functions/wirings/realtime/pikku-command-realtime.ts","../src/functions/wirings/realtime/serialize-events-scaffold.ts","../src/functions/wirings/realtime/serialize-realtime-client.ts","../src/functions/wirings/roles/pikku-command-roles.ts","../src/functions/wirings/roles/serialize-roles-types.ts","../src/functions/wirings/rpc/pikku-command-public-rpc.ts","../src/functions/wirings/rpc/pikku-command-react-query.ts","../src/functions/wirings/rpc/pikku-command-remote-rpc.ts","../src/functions/wirings/rpc/pikku-command-rpc-client.ts","../src/functions/wirings/rpc/pikku-command-rpc-map.ts","../src/functions/wirings/rpc/pikku-command-rpc.ts","../src/functions/wirings/rpc/serialize-public-rpc.ts","../src/functions/wirings/rpc/serialize-react-query-hooks.ts","../src/functions/wirings/rpc/serialize-remote-rpc.ts","../src/functions/wirings/rpc/serialize-rpc-wrapper.ts","../src/functions/wirings/rpc/serialize-typed-rpc-map.ts","../src/functions/wirings/scenarios/register-scenario-instrumentation.ts","../src/functions/wirings/scenarios/scenario-partition.ts","../src/functions/wirings/scenarios/scenario-schema-partition.ts","../src/functions/wirings/scenarios/serialize-feature-meta.ts","../src/functions/wirings/scenarios/serialize-scenario-meta.ts","../src/functions/wirings/scenarios/serialize-scenario-registration.ts","../src/functions/wirings/scheduler/pikku-command-scheduler-types.ts","../src/functions/wirings/scheduler/pikku-command-scheduler.ts","../src/functions/wirings/scheduler/serialize-scheduler-meta.ts","../src/functions/wirings/scheduler/serialize-scheduler-types.ts","../src/functions/wirings/scopes/pikku-command-scopes.ts","../src/functions/wirings/scopes/serialize-scopes-client.ts","../src/functions/wirings/scopes/serialize-scopes-types.ts","../src/functions/wirings/secrets/pikku-command-secrets.ts","../src/functions/wirings/secrets/serialize-secrets-types.ts","../src/functions/wirings/setup/serialize-setup-types.ts","../src/functions/wirings/triggers/pikku-command-trigger-types.ts","../src/functions/wirings/triggers/pikku-command-trigger.ts","../src/functions/wirings/triggers/serialize-trigger-meta.ts","../src/functions/wirings/triggers/serialize-trigger-types.ts","../src/functions/wirings/user-admin/pikku-command-user-admin-functions.ts","../src/functions/wirings/user-admin/serialize-user-admin-functions.ts","../src/functions/wirings/variables/pikku-command-variables.ts","../src/functions/wirings/variables/serialize-variables-types.ts","../src/functions/wirings/virtual-user/pikku-command-virtual-user-functions.ts","../src/functions/wirings/virtual-user/serialize-virtual-user-functions.ts","../src/functions/wirings/webhook/pikku-command-webhook.ts","../src/functions/wirings/webhook/serialize-webhook.ts","../src/functions/wirings/workflow/pikku-command-workflow-routes.ts","../src/functions/wirings/workflow/pikku-command-workflow.ts","../src/functions/wirings/workflow/serialize-personas.ts","../src/functions/wirings/workflow/serialize-scenario-step-map.ts","../src/functions/wirings/workflow/serialize-scenario-types.ts","../src/functions/wirings/workflow/serialize-workflow-bootstrap-map.ts","../src/functions/wirings/workflow/serialize-workflow-map.ts","../src/functions/wirings/workflow/serialize-workflow-meta.ts","../src/functions/wirings/workflow/serialize-workflow-registration.ts","../src/functions/wirings/workflow/serialize-workflow-routes.ts","../src/functions/wirings/workflow/serialize-workflow-types.ts","../src/functions/workflows/all.workflow.ts","../src/middleware/log-command-info-and-time.ts","../src/server/actor-sign-in.ts","../src/server/bun-server-runner.ts","../src/server/content-signing-jwt.ts","../src/server/dev-server-runner.interface.ts","../src/server/node-server-runner.ts","../src/server/server-ready.ts","../src/server/spawn-dev-server.ts","../src/services/cli-logger-forwarder.service.ts","../src/services/cli-logger.service.ts","../src/utils/assert-single-core-version.ts","../src/utils/check-required-types.ts","../src/utils/cli-session.ts","../src/utils/command-summary.ts","../src/utils/contract-versions.ts","../src/utils/detect-better-auth.ts","../src/utils/device-auth.ts","../src/utils/file-import-path.ts","../src/utils/file-imports-serializer.ts","../src/utils/file-writer.ts","../src/utils/frontend.ts","../src/utils/generate-bootstrap-file.ts","../src/utils/get-cli-version.ts","../src/utils/is-deploy-codegen.ts","../src/utils/leaf-import-path.ts","../src/utils/meta-diff.ts","../src/utils/model-alias-override.ts","../src/utils/parse-cli-filters.ts","../src/utils/persona-credentials.ts","../src/utils/pikku-cli-config-error.ts","../src/utils/pikku-cli-config.ts","../src/utils/pikku-files-and-methods.ts","../src/utils/precise-coverage-map.ts","../src/utils/remove-legacy-scaffold-file.ts","../src/utils/resolve-from-project.ts","../src/utils/resolve-personas.ts","../src/utils/resolve-scaffold-feature.ts","../src/utils/schema-diff.ts","../src/utils/serialize-import-map.ts","../src/utils/serialize-meta-ts.ts","../src/utils/serialize-schemas.ts","../src/utils/strip-verbose-meta.ts","../src/utils/surface-diff.ts","../src/utils/surface.ts","../src/utils/tsc-check.ts","../.pikku/pikku-bootstrap-scenarios.gen.ts","../.pikku/pikku-bootstrap.gen.ts","../.pikku/pikku-services.gen.ts","../.pikku/addon/index.ts","../.pikku/addon/pikku-addon-types.gen.ts","../.pikku/agent/index.ts","../.pikku/agent/pikku-agent-map.gen.d.ts","../.pikku/agent/pikku-agent-types.gen.ts","../.pikku/agent/pikku-model-aliases.gen.ts","../.pikku/agent/pikku-scorer-names.gen.d.ts","../.pikku/auth/auth.types.ts","../.pikku/auth/index.ts","../.pikku/auth/pikku-auth-types.gen.ts","../.pikku/channel/index.ts","../.pikku/channel/pikku-channel-types.gen.ts","../.pikku/cli/index.ts","../.pikku/cli/pikku-cli-channel.ts","../.pikku/cli/pikku-cli-client.gen.ts","../.pikku/cli/pikku-cli-contracts-meta.gen.ts","../.pikku/cli/pikku-cli-types.gen.ts","../.pikku/cli/pikku-cli-wirings-meta.gen.ts","../.pikku/cli/pikku-cli-wirings.gen.ts","../.pikku/cli/pikku-cli.gen.ts","../.pikku/error/index.ts","../.pikku/error/pikku-error-types.gen.ts","../.pikku/function/index.ts","../.pikku/function/pikku-function-types.gen.ts","../.pikku/function/pikku-functions-meta.gen.ts","../.pikku/function/pikku-functions.gen.ts","../.pikku/gateway/index.ts","../.pikku/gateway/pikku-gateway-types.gen.ts","../.pikku/http/index.ts","../.pikku/http/pikku-http-types.gen.ts","../.pikku/mcp/index.ts","../.pikku/mcp/pikku-mcp-types.gen.ts","../.pikku/middleware/index.ts","../.pikku/middleware/pikku-middleware-types.gen.ts","../.pikku/node/pikku-node-types.gen.ts","../.pikku/queue/index.ts","../.pikku/queue/pikku-queue-types.gen.ts","../.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts","../.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts","../.pikku/queue/pikku-queue-workers-wirings.gen.ts","../.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-map.remote.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts","../.pikku/scenarios/index.ts","../.pikku/scenarios/pikku-personas.gen.ts","../.pikku/scenarios/pikku-scenario-functions-meta.gen.ts","../.pikku/scenarios/pikku-scenario-functions.gen.ts","../.pikku/scenarios/pikku-scenario-types.gen.ts","../.pikku/scenarios/pikku-scenario-wirings-meta.gen.ts","../.pikku/scenarios/pikku-scenario-wirings.gen.ts","../.pikku/scenarios/schemas/register.gen.ts","../.pikku/scheduler/index.ts","../.pikku/scheduler/pikku-scheduler-types.gen.ts","../.pikku/schemas/register.gen.ts","../.pikku/scopes/index.ts","../.pikku/scopes/pikku-personas.gen.ts","../.pikku/scopes/pikku-roles.gen.ts","../.pikku/scopes/pikku-scope-types.gen.ts","../.pikku/scopes/pikku-scopes.gen.ts","../.pikku/secrets/index.ts","../.pikku/secrets/pikku-secret-types.gen.ts","../.pikku/secrets/pikku-secrets.gen.ts","../.pikku/services/pikku-meta-service.gen.ts","../.pikku/setup/index.ts","../.pikku/setup/pikku-setup-types.gen.ts","../.pikku/trigger/index.ts","../.pikku/trigger/pikku-trigger-types.gen.ts","../.pikku/variables/index.ts","../.pikku/variables/pikku-variable-types.gen.ts","../.pikku/variables/pikku-variables.gen.ts","../.pikku/workflow/index.ts","../.pikku/workflow/pikku-scenario-step-map.gen.d.ts","../.pikku/workflow/pikku-workflow-map.gen.d.ts","../.pikku/workflow/pikku-workflow-types.gen.ts","../.pikku/workflow/pikku-workflow-wirings-meta.gen.ts","../.pikku/workflow/pikku-workflow-wirings.gen.ts","../types/application-types.d.ts","../types/bun-sqlite.d.ts","../types/config.d.ts"],"version":"6.0.3"}
1
+ {"root":["../bin/pikku.ts","../src/cli.wiring.ts","../src/services.ts","../src/deploy/build-pipeline.ts","../src/deploy/frontend-assets.ts","../src/deploy/server-entry.ts","../src/deploy/analyzer/analyzer.ts","../src/deploy/analyzer/index.ts","../src/deploy/bundler/bun-bundler.ts","../src/deploy/bundler/bundler.interface.ts","../src/deploy/bundler/bundler.ts","../src/deploy/bundler/dep-extractor.ts","../src/deploy/bundler/index.ts","../src/deploy/bundler/node-bundler.ts","../src/deploy/bundler/service-module-map.ts","../src/deploy/bundler/types.ts","../src/deploy/codegen/index.ts","../src/deploy/codegen/per-unit-codegen.ts","../src/deploy/plan/executor.ts","../src/deploy/plan/formatter.ts","../src/deploy/plan/index.ts","../src/deploy/plan/planner.ts","../src/deploy/plan/provider.ts","../src/deploy/plan/types.ts","../src/fabric/fabric-commands.ts","../src/fabric/functions/add.function.ts","../src/fabric/functions/addon-verify.function.ts","../src/fabric/functions/db-schema.function.ts","../src/fabric/functions/deploy-list.function.ts","../src/fabric/functions/deploy-units.function.ts","../src/fabric/functions/deploy.function.ts","../src/fabric/functions/domains-add.function.ts","../src/fabric/functions/domains-list.function.ts","../src/fabric/functions/domains-remove.function.ts","../src/fabric/functions/errors.function.ts","../src/fabric/functions/findings-clear.function.ts","../src/fabric/functions/findings-flush.function.ts","../src/fabric/functions/findings-list.function.ts","../src/fabric/functions/init.function.ts","../src/fabric/functions/link.function.ts","../src/fabric/functions/llm-key.function.ts","../src/fabric/functions/login.function.ts","../src/fabric/functions/logs.function.ts","../src/fabric/functions/metrics.function.ts","../src/fabric/functions/projects-list.function.ts","../src/fabric/functions/publish.function.ts","../src/fabric/functions/report.function.ts","../src/fabric/functions/rollback.function.ts","../src/fabric/functions/secrets-delete.function.ts","../src/fabric/functions/secrets-list.function.ts","../src/fabric/functions/secrets-rotate.function.ts","../src/fabric/functions/secrets-set.function.ts","../src/fabric/functions/smoke.function.ts","../src/fabric/functions/status.function.ts","../src/fabric/functions/trace.function.ts","../src/fabric/functions/validate.function.ts","../src/fabric/functions/variables-get.function.ts","../src/fabric/functions/variables-set.function.ts","../src/fabric/lib/blank-comments.ts","../src/fabric/lib/blank-scenario-meta.ts","../src/fabric/lib/config.ts","../src/fabric/lib/console-url.ts","../src/fabric/lib/deployment.ts","../src/fabric/lib/finding-spool.ts","../src/fabric/lib/finding.ts","../src/fabric/lib/frontend-typecheck.ts","../src/fabric/lib/git.ts","../src/fabric/lib/http.ts","../src/fabric/lib/not-implemented.ts","../src/fabric/lib/output.ts","../src/fabric/lib/prompt.ts","../src/fabric/lib/report-environment.ts","../src/fabric/lib/sealed-box.ts","../src/fabric/lib/stage.ts","../src/fabric/lib/variable-value.ts","../src/fabric/sdk/http-map.gen.d.ts","../src/fabric/sdk/pikku-fetch.gen.ts","../src/fabric/sdk/pikku-rpc.gen.ts","../src/fabric/sdk/rpc-map.gen.d.ts","../src/functions/commands/all.ts","../src/functions/commands/audit.ts","../src/functions/commands/binary.ts","../src/functions/commands/bootstrap.ts","../src/functions/commands/bun-coverage-loader.ts","../src/functions/commands/db-audit.ts","../src/functions/commands/db-baseline.ts","../src/functions/commands/db-check.ts","../src/functions/commands/db-codegen.ts","../src/functions/commands/db-export.ts","../src/functions/commands/db-generate.ts","../src/functions/commands/db-migrate.ts","../src/functions/commands/db-reset.ts","../src/functions/commands/db-shared.ts","../src/functions/commands/deploy-apply.ts","../src/functions/commands/deploy-info.ts","../src/functions/commands/deploy-plan.ts","../src/functions/commands/dev-agent-runner.ts","../src/functions/commands/dev.ts","../src/functions/commands/dist.ts","../src/functions/commands/doc.ts","../src/functions/commands/emails-init.ts","../src/functions/commands/enable.ts","../src/functions/commands/environment.ts","../src/functions/commands/import-n8n.ts","../src/functions/commands/info.ts","../src/functions/commands/knowledge-index.ts","../src/functions/commands/knowledge-plan.ts","../src/functions/commands/knowledge-validate.ts","../src/functions/commands/load-user-project.ts","../src/functions/commands/login.ts","../src/functions/commands/meta.ts","../src/functions/commands/new-addon.ts","../src/functions/commands/new-function.ts","../src/functions/commands/new-middleware.ts","../src/functions/commands/new-permission.ts","../src/functions/commands/new-wiring.ts","../src/functions/commands/persona-sync.ts","../src/functions/commands/persona.ts","../src/functions/commands/pikku-command-bootstrap.ts","../src/functions/commands/pikku-command-summary.ts","../src/functions/commands/roles-audit.ts","../src/functions/commands/roles-prune.ts","../src/functions/commands/roles-shared.ts","../src/functions/commands/scenario-browser.ts","../src/functions/commands/scenario-formatter.ts","../src/functions/commands/scenario-ladder.ts","../src/functions/commands/scenario-plan.ts","../src/functions/commands/scenario.ts","../src/functions/commands/scopes-audit.ts","../src/functions/commands/scopes-prune.ts","../src/functions/commands/scopes-shared.ts","../src/functions/commands/semver-render.ts","../src/functions/commands/semver.ts","../src/functions/commands/serve-console.ts","../src/functions/commands/serve-frontend.ts","../src/functions/commands/serve.ts","../src/functions/commands/skills.ts","../src/functions/commands/start-coverage.ts","../src/functions/commands/update-render.ts","../src/functions/commands/update.ts","../src/functions/commands/validate.ts","../src/functions/commands/versions-check.ts","../src/functions/commands/versions-init.ts","../src/functions/commands/versions-update.ts","../src/functions/commands/virtual-user-formatter.ts","../src/functions/commands/watch.ts","../src/functions/db/annotation-parser.ts","../src/functions/db/better-auth-schema.ts","../src/functions/db/check-enums.ts","../src/functions/db/db-codegen.ts","../src/functions/db/db-introspector.ts","../src/functions/db/local-db.ts","../src/functions/db/migration-provenance.ts","../src/functions/db/zod-codegen.ts","../src/functions/db/postgres/pglite-kysely.ts","../src/functions/db/postgres/postgres-introspector.ts","../src/functions/db/sqlite/dev-seed.ts","../src/functions/db/sqlite/sqlite-introspector.ts","../src/functions/db/sqlite/sqlite-kysely.ts","../src/functions/knowledge/render.ts","../src/functions/knowledge/schemas.ts","../src/functions/runtimes/fetch/index.ts","../src/functions/runtimes/nextjs/pikku-command-nextjs.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.ts","../src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.ts","../src/functions/runtimes/websocket/pikku-command-websocket-typed.ts","../src/functions/runtimes/websocket/serialize-websocket-wrapper.ts","../src/functions/surface/build-surface-doc.ts","../src/functions/surface/collect-snippets.ts","../src/functions/surface/collect-surface-usage.ts","../src/functions/surface/collect-surface.ts","../src/functions/surface/generate-surface-doc.ts","../src/functions/surface/render-surface-doc.ts","../src/functions/surface/shipped-surface-doc.ts","../src/functions/surface/surface-doc.types.ts","../src/functions/surface/surface-editorial.ts","../src/functions/surface/write-surface-usage.ts","../src/functions/validate/addon-package-checks.ts","../src/functions/validate/auth-plugin-checks.ts","../src/functions/validate/bootstrap-checks.ts","../src/functions/validate/persona-checks.ts","../src/functions/validate/pikku-barrel-checks.ts","../src/functions/validate/scenario-file-checks.ts","../src/functions/validate/shared-checks.ts","../src/functions/validate/type-identity-checks.ts","../src/functions/validate/validate-registry.ts","../src/functions/validate/validate.ts","../src/functions/validate/websocket-deps-checks.ts","../src/functions/validate/workspace-exports-checks.ts","../src/functions/wirings/agent/pikku-command-agent-types.ts","../src/functions/wirings/agent/pikku-command-agent.ts","../src/functions/wirings/agent/pikku-command-public-agent.ts","../src/functions/wirings/agent/serialize-agent-map.ts","../src/functions/wirings/agent/serialize-agent-types.ts","../src/functions/wirings/agent/serialize-model-aliases.ts","../src/functions/wirings/agent/serialize-public-agent.ts","../src/functions/wirings/agent-scorer/pikku-command-agent-scorer.ts","../src/functions/wirings/agent-scorer/serialize-scorer-names.ts","../src/functions/wirings/auth/pikku-command-auth.ts","../src/functions/wirings/auth/serialize-auth-gen.ts","../src/functions/wirings/auth/serialize-auth-guards.ts","../src/functions/wirings/auth/serialize-auth-meta.ts","../src/functions/wirings/auth/serialize-auth-types.ts","../src/functions/wirings/channels/pikku-channels.ts","../src/functions/wirings/channels/pikku-command-channel-types.ts","../src/functions/wirings/channels/pikku-command-channels-map.ts","../src/functions/wirings/channels/pikku-command-channels.ts","../src/functions/wirings/channels/serialize-channel-types.ts","../src/functions/wirings/channels/serialize-typed-channel-map.ts","../src/functions/wirings/cli/pikku-command-cli-entry.ts","../src/functions/wirings/cli/pikku-command-cli-types.ts","../src/functions/wirings/cli/pikku-command-cli.ts","../src/functions/wirings/cli/serialize-channel-cli-client.ts","../src/functions/wirings/cli/serialize-channel-cli.ts","../src/functions/wirings/cli/serialize-cli-entrypoint-guard.ts","../src/functions/wirings/cli/serialize-cli-types.ts","../src/functions/wirings/cli/serialize-local-cli-bootstrap.ts","../src/functions/wirings/console/pikku-command-console-functions.ts","../src/functions/wirings/console/pikku-command-nodes-meta.ts","../src/functions/wirings/console/serialize-console-functions.ts","../src/functions/wirings/credentials/pikku-command-credentials.ts","../src/functions/wirings/credentials/serialize-credentials-types.ts","../src/functions/wirings/emails/pikku-command-emails.ts","../src/functions/wirings/emails/serialize-emails.ts","../src/functions/wirings/errors/pikku-command-error-types.ts","../src/functions/wirings/errors/serialize-error-types.ts","../src/functions/wirings/functions/pikku-command-addon-types.ts","../src/functions/wirings/functions/pikku-command-function-types-split.ts","../src/functions/wirings/functions/pikku-command-functions.ts","../src/functions/wirings/functions/pikku-command-leaf-indexes.ts","../src/functions/wirings/functions/pikku-command-services.ts","../src/functions/wirings/functions/schemas.ts","../src/functions/wirings/functions/serialize-addon-refs.ts","../src/functions/wirings/functions/serialize-addon-types.ts","../src/functions/wirings/functions/serialize-function-imports.ts","../src/functions/wirings/functions/serialize-function-types.ts","../src/functions/wirings/functions/serialize-leaf-index.ts","../src/functions/wirings/gateway/pikku-command-gateway-types.ts","../src/functions/wirings/gateway/pikku-command-gateway.ts","../src/functions/wirings/gateway/serialize-gateway-meta.ts","../src/functions/wirings/gateway/serialize-gateway-types.ts","../src/functions/wirings/graph/pikku-command-graph-wirings.ts","../src/functions/wirings/graph/serialize-graph-wirings.ts","../src/functions/wirings/http/pikku-command-http-map.ts","../src/functions/wirings/http/pikku-command-http-routes.ts","../src/functions/wirings/http/pikku-command-http-types.ts","../src/functions/wirings/http/pikku-command-openapi.ts","../src/functions/wirings/http/pikku-http-routes.ts","../src/functions/wirings/http/serialize-fetch-wrapper.ts","../src/functions/wirings/http/serialize-http-types.ts","../src/functions/wirings/http/serialize-typed-http-map.ts","../src/functions/wirings/mcp/pikku-command-mcp-json.ts","../src/functions/wirings/mcp/pikku-command-mcp-types.ts","../src/functions/wirings/mcp/pikku-command-mcp.ts","../src/functions/wirings/mcp/serialize-mcp-types.ts","../src/functions/wirings/middleware/pikku-command-middleware.ts","../src/functions/wirings/middleware/serialize-middleware-imports.ts","../src/functions/wirings/middleware/serialize-middleware-types.ts","../src/functions/wirings/package/pikku-command-package-types.ts","../src/functions/wirings/package/pikku-command-package.ts","../src/functions/wirings/package/serialize-package-types.ts","../src/functions/wirings/package/serialize-package.ts","../src/functions/wirings/permissions/pikku-command-permissions.ts","../src/functions/wirings/permissions/serialize-permissions-imports.ts","../src/functions/wirings/personas/personas-secrets-file.ts","../src/functions/wirings/personas/pikku-command-personas.ts","../src/functions/wirings/personas/serialize-personas-secrets.ts","../src/functions/wirings/personas/serialize-personas-types.ts","../src/functions/wirings/queue/pikku-command-queue-map.ts","../src/functions/wirings/queue/pikku-command-queue-service.ts","../src/functions/wirings/queue/pikku-command-queue-types.ts","../src/functions/wirings/queue/pikku-command-queue.ts","../src/functions/wirings/queue/pikku-queue-map.ts","../src/functions/wirings/queue/pikku-queue.ts","../src/functions/wirings/queue/serialize-queue-map.ts","../src/functions/wirings/queue/serialize-queue-meta.ts","../src/functions/wirings/queue/serialize-queue-types.ts","../src/functions/wirings/queue/serialize-queue-wrapper.ts","../src/functions/wirings/realtime/pikku-command-events-scaffold.ts","../src/functions/wirings/realtime/pikku-command-realtime.ts","../src/functions/wirings/realtime/serialize-events-scaffold.ts","../src/functions/wirings/realtime/serialize-realtime-client.ts","../src/functions/wirings/roles/pikku-command-roles.ts","../src/functions/wirings/roles/serialize-roles-types.ts","../src/functions/wirings/rpc/pikku-command-public-rpc.ts","../src/functions/wirings/rpc/pikku-command-react-query.ts","../src/functions/wirings/rpc/pikku-command-remote-rpc.ts","../src/functions/wirings/rpc/pikku-command-rpc-client.ts","../src/functions/wirings/rpc/pikku-command-rpc-map.ts","../src/functions/wirings/rpc/pikku-command-rpc.ts","../src/functions/wirings/rpc/serialize-public-rpc.ts","../src/functions/wirings/rpc/serialize-react-query-hooks.ts","../src/functions/wirings/rpc/serialize-remote-rpc.ts","../src/functions/wirings/rpc/serialize-rpc-wrapper.ts","../src/functions/wirings/rpc/serialize-typed-rpc-map.ts","../src/functions/wirings/scenarios/register-scenario-instrumentation.ts","../src/functions/wirings/scenarios/scenario-partition.ts","../src/functions/wirings/scenarios/scenario-schema-partition.ts","../src/functions/wirings/scenarios/serialize-feature-meta.ts","../src/functions/wirings/scenarios/serialize-scenario-meta.ts","../src/functions/wirings/scenarios/serialize-scenario-registration.ts","../src/functions/wirings/scheduler/pikku-command-scheduler-types.ts","../src/functions/wirings/scheduler/pikku-command-scheduler.ts","../src/functions/wirings/scheduler/serialize-scheduler-meta.ts","../src/functions/wirings/scheduler/serialize-scheduler-types.ts","../src/functions/wirings/scopes/pikku-command-scopes.ts","../src/functions/wirings/scopes/serialize-scopes-client.ts","../src/functions/wirings/scopes/serialize-scopes-types.ts","../src/functions/wirings/secrets/pikku-command-secrets.ts","../src/functions/wirings/secrets/serialize-secrets-types.ts","../src/functions/wirings/setup/serialize-setup-types.ts","../src/functions/wirings/triggers/pikku-command-trigger-types.ts","../src/functions/wirings/triggers/pikku-command-trigger.ts","../src/functions/wirings/triggers/serialize-trigger-meta.ts","../src/functions/wirings/triggers/serialize-trigger-types.ts","../src/functions/wirings/variables/pikku-command-variables.ts","../src/functions/wirings/variables/serialize-variables-types.ts","../src/functions/wirings/virtual-user/pikku-command-virtual-user-functions.ts","../src/functions/wirings/virtual-user/serialize-virtual-user-functions.ts","../src/functions/wirings/webhook/pikku-command-webhook.ts","../src/functions/wirings/webhook/serialize-webhook.ts","../src/functions/wirings/workflow/pikku-command-workflow-routes.ts","../src/functions/wirings/workflow/pikku-command-workflow.ts","../src/functions/wirings/workflow/serialize-personas.ts","../src/functions/wirings/workflow/serialize-scenario-step-map.ts","../src/functions/wirings/workflow/serialize-scenario-types.ts","../src/functions/wirings/workflow/serialize-workflow-bootstrap-map.ts","../src/functions/wirings/workflow/serialize-workflow-map.ts","../src/functions/wirings/workflow/serialize-workflow-meta.ts","../src/functions/wirings/workflow/serialize-workflow-registration.ts","../src/functions/wirings/workflow/serialize-workflow-routes.ts","../src/functions/wirings/workflow/serialize-workflow-types.ts","../src/functions/workflows/all.workflow.ts","../src/middleware/log-command-info-and-time.ts","../src/server/actor-sign-in.ts","../src/server/bun-server-runner.ts","../src/server/content-signing-jwt.ts","../src/server/dev-server-runner.interface.ts","../src/server/node-server-runner.ts","../src/server/server-ready.ts","../src/server/spawn-dev-server.ts","../src/services/cli-logger-forwarder.service.ts","../src/services/cli-logger.service.ts","../src/utils/assert-single-core-version.ts","../src/utils/check-required-types.ts","../src/utils/cli-session.ts","../src/utils/command-summary.ts","../src/utils/contract-versions.ts","../src/utils/detect-better-auth.ts","../src/utils/device-auth.ts","../src/utils/file-import-path.ts","../src/utils/file-imports-serializer.ts","../src/utils/file-writer.ts","../src/utils/frontend.ts","../src/utils/generate-bootstrap-file.ts","../src/utils/get-cli-version.ts","../src/utils/is-deploy-codegen.ts","../src/utils/leaf-import-path.ts","../src/utils/meta-diff.ts","../src/utils/model-alias-override.ts","../src/utils/parse-cli-filters.ts","../src/utils/persona-credentials.ts","../src/utils/pikku-cli-config-error.ts","../src/utils/pikku-cli-config.ts","../src/utils/pikku-files-and-methods.ts","../src/utils/precise-coverage-map.ts","../src/utils/remove-legacy-scaffold-file.ts","../src/utils/resolve-from-project.ts","../src/utils/resolve-personas.ts","../src/utils/resolve-scaffold-feature.ts","../src/utils/schema-diff.ts","../src/utils/serialize-import-map.ts","../src/utils/serialize-meta-ts.ts","../src/utils/serialize-schemas.ts","../src/utils/strip-verbose-meta.ts","../src/utils/surface-diff.ts","../src/utils/surface.ts","../src/utils/tsc-check.ts","../.pikku/pikku-bootstrap-scenarios.gen.ts","../.pikku/pikku-bootstrap.gen.ts","../.pikku/pikku-services.gen.ts","../.pikku/addon/index.ts","../.pikku/addon/pikku-addon-types.gen.ts","../.pikku/agent/index.ts","../.pikku/agent/pikku-agent-map.gen.d.ts","../.pikku/agent/pikku-agent-types.gen.ts","../.pikku/agent/pikku-model-aliases.gen.ts","../.pikku/agent/pikku-scorer-names.gen.d.ts","../.pikku/auth/auth.types.ts","../.pikku/auth/index.ts","../.pikku/auth/pikku-auth-types.gen.ts","../.pikku/channel/index.ts","../.pikku/channel/pikku-channel-types.gen.ts","../.pikku/cli/index.ts","../.pikku/cli/pikku-cli-channel.ts","../.pikku/cli/pikku-cli-client.gen.ts","../.pikku/cli/pikku-cli-contracts-meta.gen.ts","../.pikku/cli/pikku-cli-types.gen.ts","../.pikku/cli/pikku-cli-wirings-meta.gen.ts","../.pikku/cli/pikku-cli-wirings.gen.ts","../.pikku/cli/pikku-cli.gen.ts","../.pikku/error/index.ts","../.pikku/error/pikku-error-types.gen.ts","../.pikku/function/index.ts","../.pikku/function/pikku-function-types.gen.ts","../.pikku/function/pikku-functions-meta.gen.ts","../.pikku/function/pikku-functions.gen.ts","../.pikku/gateway/index.ts","../.pikku/gateway/pikku-gateway-types.gen.ts","../.pikku/http/index.ts","../.pikku/http/pikku-http-types.gen.ts","../.pikku/mcp/index.ts","../.pikku/mcp/pikku-mcp-types.gen.ts","../.pikku/middleware/index.ts","../.pikku/middleware/pikku-middleware-types.gen.ts","../.pikku/node/pikku-node-types.gen.ts","../.pikku/queue/index.ts","../.pikku/queue/pikku-queue-types.gen.ts","../.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts","../.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts","../.pikku/queue/pikku-queue-workers-wirings.gen.ts","../.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-map.remote.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts","../.pikku/scenarios/index.ts","../.pikku/scenarios/pikku-personas.gen.ts","../.pikku/scenarios/pikku-scenario-functions-meta.gen.ts","../.pikku/scenarios/pikku-scenario-functions.gen.ts","../.pikku/scenarios/pikku-scenario-types.gen.ts","../.pikku/scenarios/pikku-scenario-wirings-meta.gen.ts","../.pikku/scenarios/pikku-scenario-wirings.gen.ts","../.pikku/scenarios/schemas/register.gen.ts","../.pikku/scheduler/index.ts","../.pikku/scheduler/pikku-scheduler-types.gen.ts","../.pikku/schemas/register.gen.ts","../.pikku/scopes/index.ts","../.pikku/scopes/pikku-personas.gen.ts","../.pikku/scopes/pikku-roles.gen.ts","../.pikku/scopes/pikku-scope-types.gen.ts","../.pikku/scopes/pikku-scopes.gen.ts","../.pikku/secrets/index.ts","../.pikku/secrets/pikku-secret-types.gen.ts","../.pikku/secrets/pikku-secrets.gen.ts","../.pikku/services/pikku-meta-service.gen.ts","../.pikku/setup/index.ts","../.pikku/setup/pikku-setup-types.gen.ts","../.pikku/trigger/index.ts","../.pikku/trigger/pikku-trigger-types.gen.ts","../.pikku/variables/index.ts","../.pikku/variables/pikku-variable-types.gen.ts","../.pikku/variables/pikku-variables.gen.ts","../.pikku/workflow/index.ts","../.pikku/workflow/pikku-scenario-step-map.gen.d.ts","../.pikku/workflow/pikku-workflow-map.gen.d.ts","../.pikku/workflow/pikku-workflow-types.gen.ts","../.pikku/workflow/pikku-workflow-wirings-meta.gen.ts","../.pikku/workflow/pikku-workflow-wirings.gen.ts","../types/application-types.d.ts","../types/bun-sqlite.d.ts","../types/config.d.ts"],"version":"6.0.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pikku/cli",
3
- "version": "0.12.133",
3
+ "version": "0.12.136",
4
4
  "description": "Pikku CLI — code generation, dev server, migrations and deployment",
5
5
  "author": "yasser.fadl@gmail.com",
6
6
  "license": "BUSL-1.1",
@@ -31,14 +31,14 @@
31
31
  "@jridgewell/trace-mapping": "^0.3.31",
32
32
  "@openapi-contrib/json-schema-to-openapi-schema": "^4.3.4",
33
33
  "@pikku/ai-vercel": "^0.12.13",
34
- "@pikku/better-auth": "^0.12.36",
34
+ "@pikku/better-auth": "^0.12.38",
35
35
  "@pikku/bun-server": "^0.12.11",
36
36
  "@pikku/code-edit": "^0.12.1",
37
37
  "@pikku/deploy": "^0.12.5",
38
38
  "@pikku/deploy-cloudflare": "^0.12.13",
39
39
  "@pikku/fetch": "^0.12.10",
40
40
  "@pikku/inspector": "^0.12.71",
41
- "@pikku/knowledge": "^0.12.9",
41
+ "@pikku/knowledge": "^0.12.10",
42
42
  "@pikku/kysely": "^0.13.23",
43
43
  "@pikku/migrator-sql": "^0.12.3",
44
44
  "@pikku/n8n-import": "^0.0.7",
package/snippets.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "aiAgentStream": "// Streaming endpoint — sends text-delta, tool-call, and usage events as they arrive.\nwireHTTP({\n method: 'post',\n route: '/agents/shop/stream',\n func: agentStream('shopAssistant'),\n auth: true,\n})",
15
15
  "aiAgentStreamClient": "export async function agentStreamExamples() {\n pikkuRPC.setServerUrl('http://localhost:4000')\n pikkuRPC.setAuthorizationJWT('user-jwt-token')\n\n const stream = await pikkuRPC.agent.stream('shopAssistant', {\n message: 'Add the cheapest USB hub to my basket',\n threadId: 'thread-123',\n resourceId: 'user-456',\n })\n return stream\n}",
16
16
  "auditDispatch": "await audit?.audit({\n type: 'order.created',\n source: 'explicit',\n occurredAt: new Date().toISOString(),\n metadata: { orderId, userId },\n})",
17
- "betterAuthConfig": "export const auth = pikkuBetterAuth(\n async ({\n kysely,\n secrets,\n variables,\n emailService,\n scopeService,\n logger,\n }) => {\n // `.reveal()` at the sink, not earlier: getSecret hands back a nominal\n // SecretValue that no concretely-typed parameter accepts, so every disclosure\n // is one greppable call. Better Auth wants the raw string, and this is where\n // it stops being a secret in the type system.\n const BETTER_AUTH_SECRET = (\n await secrets.getSecret('BETTER_AUTH_SECRET')\n ).reveal()\n // Genuinely optional: unset simply disables /api/auth/sign-in/actor (scenarios\n // off for this deployment) — the actor plugin refuses all sign-ins\n // without it.\n const SCENARIO_ACTOR_SECRET = await secrets\n .getSecret('SCENARIO_ACTOR_SECRET')\n .then((value) => value?.reveal())\n .catch(() => undefined)\n // Fabric operator admin: the RSA public key the control plane's token is\n // verified against. The Fabric deployer pushes FABRIC_AUTH_PUBLIC_KEY onto\n // every stage; locally it's simply absent, which disables /sign-in/fabric.\n // Asymmetric — the app verifies, it can never forge an operator login.\n const FABRIC_AUTH_PUBLIC_KEY = await variables.get('FABRIC_AUTH_PUBLIC_KEY')\n\n return betterAuth({\n secret: BETTER_AUTH_SECRET,\n database: { db: kysely, type: 'sqlite' },\n emailAndPassword: {\n enabled: true,\n // Without this, `requestPasswordReset` succeeds on the client and silently\n // sends nothing — the \"Forgot password?\" flow looks wired and dead-ends.\n // Better Auth builds `url` from its baseURL + the client's redirectTo, so\n // the app only supplies the message. Errors are logged, never swallowed:\n // a reset the user never receives must be visible in the logs.\n sendResetPassword: async ({ user, url }) => {\n await emailService.send({\n to: user.email,\n template: {\n name: 'reset-password',\n data: { email: user.email, resetUrl: url },\n },\n })\n },\n },\n // Stateless session: CLI splits out betterAuthStatelessSession so non-auth\n // units verify the signed cookie instead of bundling better-auth. pikku #737.\n session: { cookieCache: { enabled: true } },\n advanced: { database: { generateId: 'uuid' } },\n // Scenario actors: synthetic users (user.actor = true, see\n // db/sqlite/0002-user-actor.sql) signed in by pikkuScenario via\n // POST /api/auth/sign-in/actor { email, secret }. Never signs in real users.\n //\n // pikkuBan(): adds the banned/banExpires/banReason columns (see\n // db/sqlite/0003-admin.sql) and the session hook that refuses a banned\n // user a session. better-auth's own admin() is refused by the inspector:\n // it authorizes on a `user.role` column while pikku authorizes on scopes,\n // and everything else it offered — list, create, ban, remove, revoke\n // sessions, set password — is scoped RPCs in @pikku/addon-admin.\n //\n // pikkuFabric(): exposes /api/auth/sign-in/fabric — the Fabric control plane\n // mints a short-lived RS256 token and signs in as a synthetic `fabric: true`\n // admin operator (db/sqlite/0004-fabric.sql), so the console Users tab can\n // list/impersonate real users without the operator being one of them. It\n // verifies against FABRIC_AUTH_PUBLIC_KEY; a missing key disables the\n // endpoint.\n //\n // `personas` is what provisions the scenario actors. The plugin creates a\n // declared persona's account the first time an operator asks to act as an\n // address the stage has no row for, so a deploy carries its actors with it\n // without a bootstrap step. This does NOT belong in `pikkuServerLifecycle`'s\n // afterStart: that hook only ever runs under `pikku dev` and `pikku serve`,\n // so a deployed stage would provision nobody.\n plugins: [\n pikkuActor({ secret: SCENARIO_ACTOR_SECRET }),\n pikkuBan(),\n pikkuFabric({\n publicKey: FABRIC_AUTH_PUBLIC_KEY,\n scopeService,\n logger,\n personas: {\n personas: personaConfigs,\n environments: personaEnvironments,\n },\n }),\n ],\n })\n }\n)",
17
+ "betterAuthConfig": "export const auth = pikkuBetterAuth(\n async ({\n kysely,\n secrets,\n variables,\n emailService,\n scopeService,\n logger,\n }) => {\n // `.reveal()` at the sink, not earlier: getSecret hands back a nominal\n // SecretValue that no concretely-typed parameter accepts, so every disclosure\n // is one greppable call. Better Auth wants the raw string, and this is where\n // it stops being a secret in the type system.\n const BETTER_AUTH_SECRET = (\n await secrets.getSecret('BETTER_AUTH_SECRET')\n ).reveal()\n // Genuinely optional: unset simply disables /api/auth/sign-in/actor (scenarios\n // off for this deployment) — the actor plugin refuses all sign-ins\n // without it.\n const SCENARIO_ACTOR_SECRET = await secrets\n .getSecret('SCENARIO_ACTOR_SECRET')\n .then((value) => value?.reveal())\n .catch(() => undefined)\n // Fabric operator admin: the RSA public key the control plane's token is\n // verified against. The Fabric deployer pushes FABRIC_AUTH_PUBLIC_KEY onto\n // every stage; locally it's simply absent, which disables /sign-in/fabric.\n // Asymmetric — the app verifies, it can never forge an operator login.\n const FABRIC_AUTH_PUBLIC_KEY = await variables.get('FABRIC_AUTH_PUBLIC_KEY')\n // The opt-in that lets a deployed stage run scenarios. Read through\n // `variables` rather than left to `process.env`, because a Worker receives\n // it as a binding and has no populated environment to find it in.\n const ALLOW_ACTOR_SIGN_IN = await variables.get(ACTOR_SIGN_IN_OPT_IN_ENV)\n\n return betterAuth({\n secret: BETTER_AUTH_SECRET,\n database: { db: kysely, type: 'sqlite' },\n emailAndPassword: {\n enabled: true,\n // Without this, `requestPasswordReset` succeeds on the client and silently\n // sends nothing — the \"Forgot password?\" flow looks wired and dead-ends.\n // Better Auth builds `url` from its baseURL + the client's redirectTo, so\n // the app only supplies the message. Errors are logged, never swallowed:\n // a reset the user never receives must be visible in the logs.\n sendResetPassword: async ({ user, url }) => {\n await emailService.send({\n to: user.email,\n template: {\n name: 'reset-password',\n data: { email: user.email, resetUrl: url },\n },\n })\n },\n },\n // Stateless session: CLI splits out betterAuthStatelessSession so non-auth\n // units verify the signed cookie instead of bundling better-auth. pikku #737.\n session: { cookieCache: { enabled: true } },\n advanced: { database: { generateId: 'uuid' } },\n // Scenario actors: synthetic users (user.actor = true, see\n // db/sqlite/0002-user-actor.sql) signed in by pikkuScenario via\n // POST /api/auth/sign-in/actor { email, secret }. Never signs in real users.\n //\n // pikkuBan(): adds the banned/banExpires/banReason columns (see\n // db/sqlite/0003-admin.sql) and the session hook that refuses a banned\n // user a session. better-auth's own admin() is refused by the inspector:\n // it authorizes on a `user.role` column while pikku authorizes on scopes,\n // and everything else it offered — list, create, ban, remove, revoke\n // sessions, set password — is scoped RPCs in @pikku/addon-admin.\n //\n // pikkuFabric(): exposes /api/auth/sign-in/fabric — the Fabric control plane\n // mints a short-lived RS256 token and signs in as a synthetic `fabric: true`\n // admin operator (db/sqlite/0004-fabric.sql), so the console Users tab can\n // list/impersonate real users without the operator being one of them. It\n // verifies against FABRIC_AUTH_PUBLIC_KEY; a missing key disables the\n // endpoint.\n //\n // `personas` is what provisions the scenario actors. The plugin creates a\n // declared persona's account the first time an operator asks to act as an\n // address the stage has no row for, so a deploy carries its actors with it\n // without a bootstrap step. This does NOT belong in `pikkuServerLifecycle`'s\n // afterStart: that hook only ever runs under `pikku dev` and `pikku serve`,\n // so a deployed stage would provision nobody.\n plugins: [\n pikkuActor({\n secret: SCENARIO_ACTOR_SECRET,\n allowSignIn: ALLOW_ACTOR_SIGN_IN,\n }),\n pikkuBan(),\n pikkuFabric({\n publicKey: FABRIC_AUTH_PUBLIC_KEY,\n scopeService,\n logger,\n personas: {\n personas: personaConfigs,\n environments: personaEnvironments,\n },\n }),\n ],\n })\n }\n)",
18
18
  "cancelOrder": "export const cancelOrder = pikkuFunc({\n expose: true,\n description: 'Cancel a pending order and restore stock.',\n input: CancelOrderInput,\n // Authorization is declared, not written. `scopes` is what the role\n // entitles the caller to and is AND-ed; `permissions` is what is true of\n // this particular row and is OR-ed across keys. Both run before the body,\n // so the function below only ever sees a caller who is allowed to be there.\n //\n // The `support` role holds `orders:cancel` without owning the order, so it\n // passes on the scope; a customer passes on ownership. Neither case needs a\n // branch in the body.\n scopes: ['orders:cancel'],\n permissions: {\n owner: isOrderOwner,\n },\n // `node` describes this function as a step someone can drop into a visual\n // flow: what to call it, where it files, and whether it starts a flow\n // ('trigger'), continues one ('action') or ends it ('end'). Without it the\n // function still works everywhere else — it just does not appear as a node.\n node: {\n displayName: 'Cancel Order',\n category: 'Orders',\n type: 'action',\n },\n func: async ({ kysely, queueService }, { orderId }, { session }) => {\n const order = await kysely\n .selectFrom('order')\n .select(['orderId', 'userId', 'status'])\n .where('orderId', '=', orderId)\n .executeTakeFirst()\n\n if (!order) throw new Error('Order not found')\n if (!['pending', 'paid'].includes(order.status)) {\n throw new Error(`Cannot cancel order in status: ${order.status}`)\n }\n\n // Restore stock\n const items = await kysely\n .selectFrom('orderItem')\n .select(['itemId', 'quantity'])\n .where('orderId', '=', orderId)\n .execute()\n\n const now = new Date().toISOString()\n for (const item of items) {\n await kysely\n .updateTable('item')\n .set((eb) => ({\n stock: eb('stock', '+', item.quantity),\n updatedAt: now,\n }))\n .where('itemId', '=', item.itemId)\n .execute()\n }\n\n await kysely\n .updateTable('order')\n .set({ status: 'cancelled', updatedAt: now })\n .where('orderId', '=', orderId)\n .execute()\n\n await queueService.add('audit-event', {\n entityType: 'order',\n entityId: orderId,\n action: 'cancelled',\n actorId: session.userId,\n })\n },\n})",
19
19
  "channelLifecycle": "export const onConnect = pikkuChannelConnectionFunc(\n async ({ logger }, _, { channel }) => {\n logger.info({ event: 'ws_connected', channelId: channel.channelId })\n }\n)\n\nexport const onDisconnect = pikkuChannelDisconnectionFunc(\n async ({ logger }, _, { channel }) => {\n logger.info({ event: 'ws_disconnected', channelId: channel.channelId })\n }\n)",
20
20
  "channelMiddleware": "export const traceAgentStream = pikkuChannelMiddleware<any, AgentStreamEvent>(\n async ({ logger }, event, next) => {\n logger.debug({ event: 'agent_stream', type: event.type })\n await next(event)\n }\n)",
package/surface.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.12.133",
2
+ "version": "0.12.136",
3
3
  "entryPoints": [
4
4
  {
5
5
  "id": "app",
@@ -3356,7 +3356,7 @@
3356
3356
  "docs": "Builds this project's Better Auth instance. The factory is handed the\nsingleton services, with typed `secrets` and `variables`, and is called\nlazily so config and secrets are resolved before auth is constructed.",
3357
3357
  "signature": "<I extends BetterAuthInstance>(factory: (services: AuthSingletonServices) => I | Promise<I>) => PikkuBetterAuthFactory<I>",
3358
3358
  "examples": [
3359
- "export const auth = pikkuBetterAuth(\n async ({\n kysely,\n secrets,\n variables,\n emailService,\n scopeService,\n logger,\n }) => {\n // `.reveal()` at the sink, not earlier: getSecret hands back a nominal\n // SecretValue that no concretely-typed parameter accepts, so every disclosure\n // is one greppable call. Better Auth wants the raw string, and this is where\n // it stops being a secret in the type system.\n const BETTER_AUTH_SECRET = (\n await secrets.getSecret('BETTER_AUTH_SECRET')\n ).reveal()\n // Genuinely optional: unset simply disables /api/auth/sign-in/actor (scenarios\n // off for this deployment) — the actor plugin refuses all sign-ins\n // without it.\n const SCENARIO_ACTOR_SECRET = await secrets\n .getSecret('SCENARIO_ACTOR_SECRET')\n .then((value) => value?.reveal())\n .catch(() => undefined)\n // Fabric operator admin: the RSA public key the control plane's token is\n // verified against. The Fabric deployer pushes FABRIC_AUTH_PUBLIC_KEY onto\n // every stage; locally it's simply absent, which disables /sign-in/fabric.\n // Asymmetric — the app verifies, it can never forge an operator login.\n const FABRIC_AUTH_PUBLIC_KEY = await variables.get('FABRIC_AUTH_PUBLIC_KEY')\n\n return betterAuth({\n secret: BETTER_AUTH_SECRET,\n database: { db: kysely, type: 'sqlite' },\n emailAndPassword: {\n enabled: true,\n // Without this, `requestPasswordReset` succeeds on the client and silently\n // sends nothing — the \"Forgot password?\" flow looks wired and dead-ends.\n // Better Auth builds `url` from its baseURL + the client's redirectTo, so\n // the app only supplies the message. Errors are logged, never swallowed:\n // a reset the user never receives must be visible in the logs.\n sendResetPassword: async ({ user, url }) => {\n await emailService.send({\n to: user.email,\n template: {\n name: 'reset-password',\n data: { email: user.email, resetUrl: url },\n },\n })\n },\n },\n // Stateless session: CLI splits out betterAuthStatelessSession so non-auth\n // units verify the signed cookie instead of bundling better-auth. pikku #737.\n session: { cookieCache: { enabled: true } },\n advanced: { database: { generateId: 'uuid' } },\n // Scenario actors: synthetic users (user.actor = true, see\n // db/sqlite/0002-user-actor.sql) signed in by pikkuScenario via\n // POST /api/auth/sign-in/actor { email, secret }. Never signs in real users.\n //\n // pikkuBan(): adds the banned/banExpires/banReason columns (see\n // db/sqlite/0003-admin.sql) and the session hook that refuses a banned\n // user a session. better-auth's own admin() is refused by the inspector:\n // it authorizes on a `user.role` column while pikku authorizes on scopes,\n // and everything else it offered — list, create, ban, remove, revoke\n // sessions, set password — is scoped RPCs in @pikku/addon-admin.\n //\n // pikkuFabric(): exposes /api/auth/sign-in/fabric — the Fabric control plane\n // mints a short-lived RS256 token and signs in as a synthetic `fabric: true`\n // admin operator (db/sqlite/0004-fabric.sql), so the console Users tab can\n // list/impersonate real users without the operator being one of them. It\n // verifies against FABRIC_AUTH_PUBLIC_KEY; a missing key disables the\n // endpoint.\n //\n // `personas` is what provisions the scenario actors. The plugin creates a\n // declared persona's account the first time an operator asks to act as an\n // address the stage has no row for, so a deploy carries its actors with it\n // without a bootstrap step. This does NOT belong in `pikkuServerLifecycle`'s\n // afterStart: that hook only ever runs under `pikku dev` and `pikku serve`,\n // so a deployed stage would provision nobody.\n plugins: [\n pikkuActor({ secret: SCENARIO_ACTOR_SECRET }),\n pikkuBan(),\n pikkuFabric({\n publicKey: FABRIC_AUTH_PUBLIC_KEY,\n scopeService,\n logger,\n personas: {\n personas: personaConfigs,\n environments: personaEnvironments,\n },\n }),\n ],\n })\n }\n)"
3359
+ "export const auth = pikkuBetterAuth(\n async ({\n kysely,\n secrets,\n variables,\n emailService,\n scopeService,\n logger,\n }) => {\n // `.reveal()` at the sink, not earlier: getSecret hands back a nominal\n // SecretValue that no concretely-typed parameter accepts, so every disclosure\n // is one greppable call. Better Auth wants the raw string, and this is where\n // it stops being a secret in the type system.\n const BETTER_AUTH_SECRET = (\n await secrets.getSecret('BETTER_AUTH_SECRET')\n ).reveal()\n // Genuinely optional: unset simply disables /api/auth/sign-in/actor (scenarios\n // off for this deployment) — the actor plugin refuses all sign-ins\n // without it.\n const SCENARIO_ACTOR_SECRET = await secrets\n .getSecret('SCENARIO_ACTOR_SECRET')\n .then((value) => value?.reveal())\n .catch(() => undefined)\n // Fabric operator admin: the RSA public key the control plane's token is\n // verified against. The Fabric deployer pushes FABRIC_AUTH_PUBLIC_KEY onto\n // every stage; locally it's simply absent, which disables /sign-in/fabric.\n // Asymmetric — the app verifies, it can never forge an operator login.\n const FABRIC_AUTH_PUBLIC_KEY = await variables.get('FABRIC_AUTH_PUBLIC_KEY')\n // The opt-in that lets a deployed stage run scenarios. Read through\n // `variables` rather than left to `process.env`, because a Worker receives\n // it as a binding and has no populated environment to find it in.\n const ALLOW_ACTOR_SIGN_IN = await variables.get(ACTOR_SIGN_IN_OPT_IN_ENV)\n\n return betterAuth({\n secret: BETTER_AUTH_SECRET,\n database: { db: kysely, type: 'sqlite' },\n emailAndPassword: {\n enabled: true,\n // Without this, `requestPasswordReset` succeeds on the client and silently\n // sends nothing — the \"Forgot password?\" flow looks wired and dead-ends.\n // Better Auth builds `url` from its baseURL + the client's redirectTo, so\n // the app only supplies the message. Errors are logged, never swallowed:\n // a reset the user never receives must be visible in the logs.\n sendResetPassword: async ({ user, url }) => {\n await emailService.send({\n to: user.email,\n template: {\n name: 'reset-password',\n data: { email: user.email, resetUrl: url },\n },\n })\n },\n },\n // Stateless session: CLI splits out betterAuthStatelessSession so non-auth\n // units verify the signed cookie instead of bundling better-auth. pikku #737.\n session: { cookieCache: { enabled: true } },\n advanced: { database: { generateId: 'uuid' } },\n // Scenario actors: synthetic users (user.actor = true, see\n // db/sqlite/0002-user-actor.sql) signed in by pikkuScenario via\n // POST /api/auth/sign-in/actor { email, secret }. Never signs in real users.\n //\n // pikkuBan(): adds the banned/banExpires/banReason columns (see\n // db/sqlite/0003-admin.sql) and the session hook that refuses a banned\n // user a session. better-auth's own admin() is refused by the inspector:\n // it authorizes on a `user.role` column while pikku authorizes on scopes,\n // and everything else it offered — list, create, ban, remove, revoke\n // sessions, set password — is scoped RPCs in @pikku/addon-admin.\n //\n // pikkuFabric(): exposes /api/auth/sign-in/fabric — the Fabric control plane\n // mints a short-lived RS256 token and signs in as a synthetic `fabric: true`\n // admin operator (db/sqlite/0004-fabric.sql), so the console Users tab can\n // list/impersonate real users without the operator being one of them. It\n // verifies against FABRIC_AUTH_PUBLIC_KEY; a missing key disables the\n // endpoint.\n //\n // `personas` is what provisions the scenario actors. The plugin creates a\n // declared persona's account the first time an operator asks to act as an\n // address the stage has no row for, so a deploy carries its actors with it\n // without a bootstrap step. This does NOT belong in `pikkuServerLifecycle`'s\n // afterStart: that hook only ever runs under `pikku dev` and `pikku serve`,\n // so a deployed stage would provision nobody.\n plugins: [\n pikkuActor({\n secret: SCENARIO_ACTOR_SECRET,\n allowSignIn: ALLOW_ACTOR_SIGN_IN,\n }),\n pikkuBan(),\n pikkuFabric({\n publicKey: FABRIC_AUTH_PUBLIC_KEY,\n scopeService,\n logger,\n personas: {\n personas: personaConfigs,\n environments: personaEnvironments,\n },\n }),\n ],\n })\n }\n)"
3360
3360
  ]
3361
3361
  },
3362
3362
  {
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-BICK3FdT.js";import{M as e}from"./mermaid-parser.core-DxPo1qbR.js";export{e as createArchitectureServices};
@@ -1 +0,0 @@
1
- import{at as e,ot as t}from"./chunk-I66GZJ75-CbpQtX8e.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
@@ -1 +0,0 @@
1
- import{p as e}from"./index-DqNqujdF.js";import{n as t}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-DF-84qwJ.js";var n=t((t,n)=>{let r;return n===`sandbox`&&(r=e(`#i`+t)),e(n===`sandbox`?r.nodes()[0].contentDocument.body:`body`).select(`[id="${t}"]`)},`getDiagramElement`);export{n as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-DF-84qwJ.js";import"./chunk-I66GZJ75-CbpQtX8e.js";import"./chunk-NSK5VX7P-Bo-dbDZD.js";import"./chunk-4I5QYGJK-DCgTj78f.js";import"./chunk-WRU74C26-DXijYjrx.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D9OoHV5X.js";import"./chunk-2GRJ4B5K-BLGsmyy4.js";import"./chunk-XXDRQBXY-DRMEt0Gf.js";import"./chunk-KBJHAD2P-Brvmen34.js";import"./chunk-W5SLKNZC-BNTcVpi3.js";import"./chunk-QR6OTTB3-B5Al5KEo.js";import"./chunk-7Z6QIM7H-CbBMe7ej.js";import{i as t,n,r,t as i}from"./chunk-GF5L2VYU-BXraqZ7w.js";import"./mermaid.core-DpvXaF3y.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-DF-84qwJ.js";import"./chunk-I66GZJ75-CbpQtX8e.js";import"./chunk-NSK5VX7P-Bo-dbDZD.js";import"./chunk-4I5QYGJK-DCgTj78f.js";import"./chunk-WRU74C26-DXijYjrx.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D9OoHV5X.js";import"./chunk-2GRJ4B5K-BLGsmyy4.js";import"./chunk-XXDRQBXY-DRMEt0Gf.js";import"./chunk-KBJHAD2P-Brvmen34.js";import"./chunk-W5SLKNZC-BNTcVpi3.js";import"./chunk-QR6OTTB3-B5Al5KEo.js";import"./chunk-7Z6QIM7H-CbBMe7ej.js";import{i as t,n,r,t as i}from"./chunk-GF5L2VYU-BXraqZ7w.js";import"./mermaid.core-DpvXaF3y.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-BICK3FdT.js";import{O as e}from"./mermaid-parser.core-DxPo1qbR.js";export{e as createEventModelingServices};
@@ -1 +0,0 @@
1
- import"./src-DF-84qwJ.js";import"./chunk-I66GZJ75-CbpQtX8e.js";import"./chunk-NSK5VX7P-Bo-dbDZD.js";import"./chunk-4I5QYGJK-DCgTj78f.js";import"./chunk-WRU74C26-DXijYjrx.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D9OoHV5X.js";import"./chunk-2GRJ4B5K-BLGsmyy4.js";import"./chunk-XXDRQBXY-DRMEt0Gf.js";import"./chunk-KBJHAD2P-Brvmen34.js";import"./chunk-W5SLKNZC-BNTcVpi3.js";import"./chunk-QR6OTTB3-B5Al5KEo.js";import"./chunk-7Z6QIM7H-CbBMe7ej.js";import{n as e}from"./chunk-JQJVKLGR-Cp9FHSH6.js";import"./mermaid.core-DpvXaF3y.js";export{e as diagram};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-BICK3FdT.js";import{m as e}from"./mermaid-parser.core-DxPo1qbR.js";export{e as createRailroadAbnfServices};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-BICK3FdT.js";import{f as e}from"./mermaid-parser.core-DxPo1qbR.js";export{e as createRailroadEbnfServices};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-BICK3FdT.js";import{u as e}from"./mermaid-parser.core-DxPo1qbR.js";export{e as createRailroadPegServices};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-DF-84qwJ.js";import"./chunk-I66GZJ75-CbpQtX8e.js";import"./chunk-NSK5VX7P-Bo-dbDZD.js";import"./chunk-4I5QYGJK-DCgTj78f.js";import"./chunk-WRU74C26-DXijYjrx.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D9OoHV5X.js";import"./chunk-2GRJ4B5K-BLGsmyy4.js";import"./chunk-XXDRQBXY-DRMEt0Gf.js";import"./chunk-KBJHAD2P-Brvmen34.js";import"./chunk-W5SLKNZC-BNTcVpi3.js";import"./chunk-QR6OTTB3-B5Al5KEo.js";import"./chunk-7Z6QIM7H-CbBMe7ej.js";import{i as t,n,r,t as i}from"./chunk-5RXB4S5H-CX9hS68x.js";import"./mermaid.core-DpvXaF3y.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};