@pikku/cli 0.12.105 → 0.12.109

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 (803) hide show
  1. package/CHANGELOG.md +7433 -0
  2. package/console-app/assets/abnfDiagram-N423BO3Z-Bz2Ycfpe.js +1 -0
  3. package/console-app/assets/arc-D8VmsdJb.js +1 -0
  4. package/console-app/assets/architecture-TIHT7OUA-5QhJKy4P.js +1 -0
  5. package/console-app/assets/architectureDiagram-T3A2C74G-CvAkxhy0.js +36 -0
  6. package/console-app/assets/{blockDiagram-677ZJIJ3-CMNoQhwm.js → blockDiagram-VBNYF7ZC-CuVOo2PB.js} +5 -5
  7. package/console-app/assets/c4Diagram-5PPSVZJV-4Vg8SxCa.js +10 -0
  8. package/console-app/assets/channel-DoE3nnYB.js +1 -0
  9. package/console-app/assets/{chunk-32BRIVSS-DC3ZGIPN.js → chunk-2GRJ4B5K-CKKR4_dC.js} +1 -1
  10. package/console-app/assets/{chunk-HOUHSVGY-DMorD8Ib.js → chunk-4I5QYGJK-C-m_kVjm.js} +1 -1
  11. package/console-app/assets/chunk-5RXB4S5H-CyUGtd0h.js +231 -0
  12. package/console-app/assets/{chunk-MOJQB5TN-6BhXmDyj.js → chunk-6Q2QTUOP-BuzItInf.js} +1 -1
  13. package/console-app/assets/chunk-7Z6QIM7H-BGiBPuWt.js +10 -0
  14. package/console-app/assets/{chunk-V7JOEXUC-JMjbqEgu.js → chunk-GF5L2VYU-D8jaliB9.js} +3 -3
  15. package/console-app/assets/chunk-I66GZJ75-C-Lq_UXl.js +127 -0
  16. package/console-app/assets/chunk-JQJVKLGR-D7viK-tf.js +156 -0
  17. package/console-app/assets/{chunk-VR4S4FIN-BcHHugM0.js → chunk-KBJHAD2P-BS9N9gG4.js} +1 -1
  18. package/console-app/assets/{chunk-KEIR6QF5-DNzq6p3w.js → chunk-KEIR6QF5-BICK3FdT.js} +32 -32
  19. package/console-app/assets/chunk-NSK5VX7P-Fi_H0vaS.js +2 -0
  20. package/console-app/assets/{chunk-ZGVPDNZ5-CENGdlFJ.js → chunk-QR6OTTB3-BJdg-tcL.js} +3 -3
  21. package/console-app/assets/chunk-RYQCIY6F-CVbGA6YZ.js +1 -0
  22. package/console-app/assets/chunk-UBXNYLIW-BF-sAqEK.js +1 -0
  23. package/console-app/assets/{chunk-C7G6YPKG-BVtRZIEZ.js → chunk-W5SLKNZC-CXrJJ0BX.js} +1 -1
  24. package/console-app/assets/{chunk-Q4XR5HBZ-i4zkt4cc.js → chunk-WRU74C26-CGzysGBy.js} +7 -7
  25. package/console-app/assets/chunk-XXDRQBXY-BDALKVU4.js +1 -0
  26. package/console-app/assets/classDiagram-JCYQIIEL-BgrrHQtN.js +1 -0
  27. package/console-app/assets/classDiagram-v2-OCEON4UE-BgrrHQtN.js +1 -0
  28. package/console-app/assets/cose-bilkent-JH36ORCC-BvFZIDHb.js +1 -0
  29. package/console-app/assets/cynefin-VYW2F7L2-DRQ8xGmN.js +1 -0
  30. package/console-app/assets/cynefinDiagram-MW4NZA55-BwxQ4C1z.js +62 -0
  31. package/console-app/assets/cytoscape.esm-B-NFISlW.js +321 -0
  32. package/console-app/assets/dagre-J22zmNeE.js +1 -0
  33. package/console-app/assets/dagre-VZM6K2ZE-DPtUyvjD.js +4 -0
  34. package/console-app/assets/defaultLocale-BFoDCU3G.js +1 -0
  35. package/console-app/assets/{diagram-OA4YK3LP-BmjCoGBZ.js → diagram-7IWD3JNH-DGAzJ2Ln.js} +3 -3
  36. package/console-app/assets/{diagram-FQU43EPY-C667dC19.js → diagram-B4RE2ZJO-D14cIfto.js} +1 -1
  37. package/console-app/assets/diagram-LBJQPF4R-CUscJ_pO.js +24 -0
  38. package/console-app/assets/diagram-Q27KOJAE-CehBHMt3.js +24 -0
  39. package/console-app/assets/diagram-UB23O5K3-BvazI_qH.js +41 -0
  40. package/console-app/assets/dist-CsdsWTxp.js +1 -0
  41. package/console-app/assets/ebnfDiagram-BXEA7PRR-CBZPYFwZ.js +1 -0
  42. package/console-app/assets/{erDiagram-Q63AITRT-BAtdfbq3.js → erDiagram-JOGREHBK-BN3FevvT.js} +3 -3
  43. package/console-app/assets/eventmodeling-45OFAUF4-D2SxzJUl.js +1 -0
  44. package/console-app/assets/flowDiagram-UKHOOZJN-CQXuJ0z2.js +1 -0
  45. package/console-app/assets/ganttDiagram-PKOTCBZU-03mWH2kB.js +292 -0
  46. package/console-app/assets/gitGraph-TEB2WS4Q-By2486wn.js +1 -0
  47. package/console-app/assets/{gitGraphDiagram-IHSO6WYX-D9fpmYRm.js → gitGraphDiagram-DS77QQ5N-CCzKPRBJ.js} +4 -4
  48. package/console-app/assets/graphlib-IlWVLY3o.js +1 -0
  49. package/console-app/assets/index-snBzz_U8.js +290 -0
  50. package/console-app/assets/index-suVNAhyL.css +1 -0
  51. package/console-app/assets/info-DKCQHKI2-C_vsavqC.js +1 -0
  52. package/console-app/assets/infoDiagram-6WML65LV-BKvU8du7.js +2 -0
  53. package/console-app/assets/init-C-OQMol4.js +1 -0
  54. package/console-app/assets/isUndefined-T4snU1Mx.js +1 -0
  55. package/console-app/assets/{ishikawaDiagram-FXEZZL3T-CWHvEncb.js → ishikawaDiagram-WSZJBQD7-CnF0qm0n.js} +3 -3
  56. package/console-app/assets/{journeyDiagram-5HDEW3XC-DKH8UvEq.js → journeyDiagram-NVQOT4AX-DxKe9OZ7.js} +3 -3
  57. package/console-app/assets/{kanban-definition-HUTT4EX6-BODtp_fB.js → kanban-definition-27J2QSJJ-CB8lgPxU.js} +6 -6
  58. package/console-app/assets/{katex-Vhh-h91d.js → katex-CXMH3UgJ.js} +3 -3
  59. package/console-app/assets/{line-Do9j3HRL.js → line-DFNLso1I.js} +1 -1
  60. package/console-app/assets/linear-D1cspVtk.js +1 -0
  61. package/console-app/assets/map-BmPfXn7V.js +1 -0
  62. package/console-app/assets/{mermaid-parser.core-CYJsdwMO.js → mermaid-parser.core-BtmN233C.js} +3 -3
  63. package/console-app/assets/mermaid.core-37H5_HoB.js +42 -0
  64. package/console-app/assets/{mindmap-definition-LN4V7U3C-D7IWNYnf.js → mindmap-definition-FAOFIHXS-Czf82JOB.js} +3 -3
  65. package/console-app/assets/{ordinal-hYBb2elL.js → ordinal-BDEzSJ7C.js} +1 -1
  66. package/console-app/assets/packet-7NZHBO7P-CErYxAQM.js +1 -0
  67. package/console-app/assets/path-fybaL0A-.js +1 -0
  68. package/console-app/assets/pegDiagram-VL7TDLO6-CRKX6HOt.js +1 -0
  69. package/console-app/assets/pie-RZYD4A2V-YmMmh6Nq.js +1 -0
  70. package/console-app/assets/pieDiagram-7S7Q4E2Y-Cot0Fu5q.js +39 -0
  71. package/console-app/assets/{quadrantDiagram-ABIIQ3AL-CI840rae.js → quadrantDiagram-CIZ2JOQS-DPEonVYT.js} +2 -2
  72. package/console-app/assets/radar-I7S5WNFK-Pf_KiQJM.js +1 -0
  73. package/console-app/assets/railroad-3IZDKUUU-BYoOMoQY.js +1 -0
  74. package/console-app/assets/railroad-abnf-AHOZXSZD-CCRXsRRD.js +1 -0
  75. package/console-app/assets/railroad-ebnf-EBAXGLYW-DVRSVgn8.js +1 -0
  76. package/console-app/assets/railroad-peg-LSFZ7HO6-COUBoNH3.js +1 -0
  77. package/console-app/assets/railroadDiagram-AXF67PYL-Di8N9tHD.js +1 -0
  78. package/console-app/assets/{requirementDiagram-TGXJPOKE-CyHrMdrC.js → requirementDiagram-LRYGKXZP-2yZZ753q.js} +2 -2
  79. package/console-app/assets/rolldown-runtime-BcKkbAw3.js +1 -0
  80. package/console-app/assets/{rough.esm-CSKSodPl.js → rough.esm-Dy-Kn_BL.js} +1 -1
  81. package/console-app/assets/{sankeyDiagram-HTMAVEWB-DL0eJ1aK.js → sankeyDiagram-W5VNT64P-BwYA-xq1.js} +2 -2
  82. package/console-app/assets/sequenceDiagram-SI44F4Z6-odIxlx8J.js +162 -0
  83. package/console-app/assets/src-CxJwpjvz.js +1 -0
  84. package/console-app/assets/stateDiagram-OKZ733FA-Du2S0qU9.js +1 -0
  85. package/console-app/assets/stateDiagram-v2-UEYNNEHI-CTXOGDRR.js +1 -0
  86. package/console-app/assets/swimlanes-SLNWSIFB-JZ3swzI2.js +2 -0
  87. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-DRrggQgK.js +8 -0
  88. package/console-app/assets/timeline-definition-Z64GVDOM-CsppAEWi.js +120 -0
  89. package/console-app/assets/treeView-QDETBFTQ-DkkO8peQ.js +1 -0
  90. package/console-app/assets/treemap-6X3UGDF4-hjLkPCJI.js +1 -0
  91. package/console-app/assets/vennDiagram-T6HMQDX7-BOfgM1xp.js +34 -0
  92. package/console-app/assets/wardley-OPB4EBWU-C5ZtGfBa.js +1 -0
  93. package/console-app/assets/{wardleyDiagram-EHGQE667-Cw2M8s0p.js → wardleyDiagram-T6FBY63Y-ymf3Vm6A.js} +36 -36
  94. package/console-app/assets/{xychartDiagram-FW5EYKEG-BxMLZdbF.js → xychartDiagram-ELKLHX3M-DdxXIoKz.js} +4 -4
  95. package/console-app/index.html +4 -2
  96. package/dist/.pikku/addon/index.d.ts +7 -0
  97. package/dist/.pikku/addon/index.js +7 -0
  98. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +7 -0
  99. package/dist/.pikku/addon/pikku-addon-types.gen.js +7 -0
  100. package/dist/.pikku/agent/index.d.ts +7 -0
  101. package/dist/.pikku/agent/index.js +7 -0
  102. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +9 -8
  103. package/dist/.pikku/agent/pikku-agent-types.gen.js +2 -3
  104. package/dist/.pikku/agent/pikku-model-aliases.gen.js +2 -2
  105. package/dist/.pikku/auth/index.d.ts +8 -0
  106. package/dist/.pikku/auth/index.js +8 -0
  107. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +118 -0
  108. package/dist/.pikku/auth/pikku-auth-types.gen.js +92 -0
  109. package/dist/.pikku/channel/index.d.ts +7 -0
  110. package/dist/.pikku/channel/index.js +7 -0
  111. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +7 -9
  112. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -9
  113. package/dist/.pikku/cli/index.d.ts +7 -0
  114. package/dist/.pikku/cli/index.js +7 -0
  115. package/dist/.pikku/cli/pikku-cli-channel.d.ts +1 -1
  116. package/dist/.pikku/cli/pikku-cli-channel.js +6 -5
  117. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +2 -2
  118. package/dist/.pikku/cli/pikku-cli-client.gen.js +2 -2
  119. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
  120. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
  121. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +4 -3
  122. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  123. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
  124. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +45 -60
  125. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  126. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  127. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  128. package/dist/.pikku/cli/pikku-cli.gen.js +2 -2
  129. package/dist/.pikku/console/index.d.ts +1 -0
  130. package/dist/.pikku/console/index.js +1 -0
  131. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  132. package/dist/.pikku/error/index.d.ts +7 -0
  133. package/dist/.pikku/error/index.js +7 -0
  134. package/dist/.pikku/error/pikku-error-types.gen.d.ts +7 -0
  135. package/dist/.pikku/error/pikku-error-types.gen.js +7 -0
  136. package/dist/.pikku/function/index.d.ts +7 -0
  137. package/dist/.pikku/function/index.js +7 -0
  138. package/dist/.pikku/function/pikku-function-types.gen.d.ts +28 -262
  139. package/dist/.pikku/function/pikku-function-types.gen.js +2 -237
  140. package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
  141. package/dist/.pikku/function/pikku-functions-meta.gen.json +124 -102
  142. package/dist/.pikku/function/pikku-functions.gen.js +7 -5
  143. package/dist/.pikku/gateway/index.d.ts +7 -0
  144. package/dist/.pikku/gateway/index.js +7 -0
  145. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +36 -0
  146. package/dist/.pikku/gateway/pikku-gateway-types.gen.js +25 -0
  147. package/dist/.pikku/http/index.d.ts +7 -0
  148. package/dist/.pikku/http/index.js +7 -0
  149. package/dist/.pikku/http/pikku-http-types.gen.d.ts +6 -24
  150. package/dist/.pikku/http/pikku-http-types.gen.js +2 -24
  151. package/dist/.pikku/mcp/index.d.ts +7 -0
  152. package/dist/.pikku/mcp/index.js +7 -0
  153. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +6 -4
  154. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  155. package/dist/.pikku/middleware/index.d.ts +7 -0
  156. package/dist/.pikku/middleware/index.js +7 -0
  157. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +117 -0
  158. package/dist/.pikku/middleware/pikku-middleware-types.gen.js +108 -0
  159. package/dist/.pikku/node/index.d.ts +1 -0
  160. package/dist/.pikku/node/index.js +1 -0
  161. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
  162. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
  163. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  164. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  165. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  166. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  167. package/dist/.pikku/pikku-services.gen.d.ts +1 -1
  168. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  169. package/dist/.pikku/pikku-types.gen.js +1 -1
  170. package/dist/.pikku/queue/index.d.ts +7 -0
  171. package/dist/.pikku/queue/index.js +7 -0
  172. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +2 -2
  173. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  174. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +2 -2
  175. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  176. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  177. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +2 -2
  178. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +3 -2
  179. package/dist/.pikku/scenarios/index.d.ts +7 -0
  180. package/dist/.pikku/scenarios/index.js +7 -0
  181. package/dist/.pikku/scenarios/pikku-personas.gen.d.ts +17 -0
  182. package/dist/.pikku/scenarios/pikku-personas.gen.js +17 -0
  183. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +2 -2
  184. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
  185. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +310 -0
  186. package/dist/.pikku/scenarios/pikku-scenario-types.gen.js +71 -0
  187. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +2 -2
  188. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
  189. package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
  190. package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
  191. package/dist/.pikku/scheduler/index.d.ts +7 -0
  192. package/dist/.pikku/scheduler/index.js +7 -0
  193. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +4 -3
  194. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  195. package/dist/.pikku/schemas/register.gen.js +4 -4
  196. package/dist/.pikku/scopes/index.d.ts +7 -0
  197. package/dist/.pikku/scopes/index.js +7 -0
  198. package/dist/.pikku/scopes/pikku-personas.gen.d.ts +4 -13
  199. package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
  200. package/dist/.pikku/scopes/pikku-roles.gen.d.ts +2 -2
  201. package/dist/.pikku/scopes/pikku-roles.gen.js +1 -1
  202. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +3 -5
  203. package/dist/.pikku/scopes/pikku-scope-types.gen.js +3 -3
  204. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +2 -2
  205. package/dist/.pikku/scopes/pikku-scopes.gen.js +1 -1
  206. package/dist/.pikku/secrets/index.d.ts +8 -0
  207. package/dist/.pikku/secrets/index.js +8 -0
  208. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -3
  209. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  210. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +8 -12
  211. package/dist/.pikku/secrets/pikku-secrets.gen.js +7 -9
  212. package/dist/.pikku/services/pikku-meta-service.gen.d.ts +7 -0
  213. package/dist/.pikku/services/pikku-meta-service.gen.js +9 -0
  214. package/dist/.pikku/setup/index.d.ts +7 -0
  215. package/dist/.pikku/setup/index.js +7 -0
  216. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +66 -0
  217. package/dist/.pikku/setup/pikku-setup-types.gen.js +87 -0
  218. package/dist/.pikku/trigger/index.d.ts +7 -0
  219. package/dist/.pikku/trigger/index.js +7 -0
  220. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +8 -8
  221. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  222. package/dist/.pikku/variables/index.d.ts +8 -0
  223. package/dist/.pikku/variables/index.js +8 -0
  224. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -2
  225. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  226. package/dist/.pikku/variables/pikku-variables.gen.d.ts +8 -11
  227. package/dist/.pikku/variables/pikku-variables.gen.js +8 -10
  228. package/dist/.pikku/workflow/index.d.ts +7 -0
  229. package/dist/.pikku/workflow/index.js +7 -0
  230. package/dist/.pikku/workflow/meta/allWorkflow.gen.json +97 -74
  231. package/dist/.pikku/workflow/pikku-personas.gen.d.ts +1 -3
  232. package/dist/.pikku/workflow/pikku-personas.gen.js +2 -2
  233. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +22 -264
  234. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -64
  235. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +2 -2
  236. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +0 -1
  237. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  238. package/dist/bin/pikku-bin.mjs +2 -2
  239. package/dist/src/cli.wiring.js +19 -45
  240. package/dist/src/deploy/analyzer/analyzer.js +34 -12
  241. package/dist/src/deploy/build-pipeline.d.ts +13 -0
  242. package/dist/src/deploy/build-pipeline.js +22 -0
  243. package/dist/src/deploy/server-entry.js +1 -1
  244. package/dist/src/fabric/fabric-commands.d.ts +104 -104
  245. package/dist/src/fabric/functions/add.function.d.ts +4 -4
  246. package/dist/src/fabric/functions/add.function.js +1 -1
  247. package/dist/src/fabric/functions/addon-verify.function.d.ts +4 -4
  248. package/dist/src/fabric/functions/addon-verify.function.js +1 -1
  249. package/dist/src/fabric/functions/db-schema.function.d.ts +4 -4
  250. package/dist/src/fabric/functions/db-schema.function.js +1 -1
  251. package/dist/src/fabric/functions/deploy-list.function.d.ts +4 -4
  252. package/dist/src/fabric/functions/deploy-list.function.js +1 -1
  253. package/dist/src/fabric/functions/deploy-units.function.d.ts +4 -4
  254. package/dist/src/fabric/functions/deploy-units.function.js +1 -1
  255. package/dist/src/fabric/functions/deploy.function.d.ts +8 -8
  256. package/dist/src/fabric/functions/deploy.function.js +1 -1
  257. package/dist/src/fabric/functions/domains-add.function.d.ts +4 -4
  258. package/dist/src/fabric/functions/domains-add.function.js +1 -1
  259. package/dist/src/fabric/functions/domains-list.function.d.ts +4 -4
  260. package/dist/src/fabric/functions/domains-list.function.js +1 -1
  261. package/dist/src/fabric/functions/domains-remove.function.d.ts +4 -4
  262. package/dist/src/fabric/functions/domains-remove.function.js +1 -1
  263. package/dist/src/fabric/functions/errors.function.d.ts +4 -4
  264. package/dist/src/fabric/functions/errors.function.js +1 -1
  265. package/dist/src/fabric/functions/init.function.d.ts +4 -4
  266. package/dist/src/fabric/functions/init.function.js +1 -1
  267. package/dist/src/fabric/functions/link.function.d.ts +4 -4
  268. package/dist/src/fabric/functions/link.function.js +1 -1
  269. package/dist/src/fabric/functions/llm-key.function.d.ts +4 -4
  270. package/dist/src/fabric/functions/llm-key.function.js +1 -1
  271. package/dist/src/fabric/functions/login.function.d.ts +4 -4
  272. package/dist/src/fabric/functions/login.function.js +1 -1
  273. package/dist/src/fabric/functions/logs.function.d.ts +4 -4
  274. package/dist/src/fabric/functions/logs.function.js +1 -1
  275. package/dist/src/fabric/functions/metrics.function.d.ts +4 -4
  276. package/dist/src/fabric/functions/metrics.function.js +1 -1
  277. package/dist/src/fabric/functions/publish.function.d.ts +4 -4
  278. package/dist/src/fabric/functions/publish.function.js +1 -1
  279. package/dist/src/fabric/functions/rollback.function.d.ts +4 -4
  280. package/dist/src/fabric/functions/rollback.function.js +1 -1
  281. package/dist/src/fabric/functions/secrets-list.function.d.ts +4 -4
  282. package/dist/src/fabric/functions/secrets-list.function.js +1 -1
  283. package/dist/src/fabric/functions/secrets-rotate.function.d.ts +4 -4
  284. package/dist/src/fabric/functions/secrets-rotate.function.js +1 -1
  285. package/dist/src/fabric/functions/secrets-set.function.d.ts +4 -4
  286. package/dist/src/fabric/functions/secrets-set.function.js +1 -1
  287. package/dist/src/fabric/functions/smoke.function.d.ts +4 -4
  288. package/dist/src/fabric/functions/smoke.function.js +13 -13
  289. package/dist/src/fabric/functions/status.function.d.ts +4 -4
  290. package/dist/src/fabric/functions/status.function.js +1 -1
  291. package/dist/src/fabric/functions/trace.function.d.ts +4 -4
  292. package/dist/src/fabric/functions/trace.function.js +1 -1
  293. package/dist/src/fabric/functions/validate.function.d.ts +4 -4
  294. package/dist/src/fabric/functions/validate.function.js +114 -31
  295. package/dist/src/fabric/lib/git.d.ts +23 -0
  296. package/dist/src/fabric/lib/git.js +39 -0
  297. package/dist/src/functions/commands/all.d.ts +1 -1
  298. package/dist/src/functions/commands/all.js +1 -1
  299. package/dist/src/functions/commands/audit.d.ts +11 -1
  300. package/dist/src/functions/commands/audit.js +26 -14
  301. package/dist/src/functions/commands/binary.d.ts +4 -4
  302. package/dist/src/functions/commands/binary.js +1 -1
  303. package/dist/src/functions/commands/bootstrap.d.ts +1 -1
  304. package/dist/src/functions/commands/bootstrap.js +4 -3
  305. package/dist/src/functions/commands/bun-coverage-loader.js +4 -1
  306. package/dist/src/functions/commands/db-audit.d.ts +1 -1
  307. package/dist/src/functions/commands/db-audit.js +1 -1
  308. package/dist/src/functions/commands/db-baseline.d.ts +1 -1
  309. package/dist/src/functions/commands/db-baseline.js +1 -1
  310. package/dist/src/functions/commands/db-check.d.ts +1 -1
  311. package/dist/src/functions/commands/db-check.js +1 -1
  312. package/dist/src/functions/commands/db-codegen.d.ts +1 -1
  313. package/dist/src/functions/commands/db-codegen.js +1 -1
  314. package/dist/src/functions/commands/db-export.d.ts +1 -1
  315. package/dist/src/functions/commands/db-export.js +1 -1
  316. package/dist/src/functions/commands/db-generate.d.ts +1 -1
  317. package/dist/src/functions/commands/db-generate.js +1 -1
  318. package/dist/src/functions/commands/db-migrate.d.ts +1 -1
  319. package/dist/src/functions/commands/db-migrate.js +1 -1
  320. package/dist/src/functions/commands/db-reset.d.ts +4 -4
  321. package/dist/src/functions/commands/db-reset.js +1 -1
  322. package/dist/src/functions/commands/deploy-apply.d.ts +4 -4
  323. package/dist/src/functions/commands/deploy-apply.js +14 -2
  324. package/dist/src/functions/commands/deploy-info.d.ts +1 -1
  325. package/dist/src/functions/commands/deploy-info.js +1 -1
  326. package/dist/src/functions/commands/deploy-plan.d.ts +4 -4
  327. package/dist/src/functions/commands/deploy-plan.js +6 -2
  328. package/dist/src/functions/commands/dev-agent-runner.d.ts +2 -1
  329. package/dist/src/functions/commands/dev-agent-runner.js +48 -13
  330. package/dist/src/functions/commands/dev.d.ts +4 -4
  331. package/dist/src/functions/commands/dev.js +10 -10
  332. package/dist/src/functions/commands/emails-init.d.ts +1 -1
  333. package/dist/src/functions/commands/emails-init.js +19 -6
  334. package/dist/src/functions/commands/enable.d.ts +8 -8
  335. package/dist/src/functions/commands/enable.js +12 -26
  336. package/dist/src/functions/commands/environment.d.ts +27 -0
  337. package/dist/src/functions/commands/environment.js +36 -2
  338. package/dist/src/functions/commands/import-n8n.d.ts +4 -4
  339. package/dist/src/functions/commands/import-n8n.js +1 -1
  340. package/dist/src/functions/commands/info.d.ts +4 -4
  341. package/dist/src/functions/commands/info.js +1 -1
  342. package/dist/src/functions/commands/knowledge-index.d.ts +4 -4
  343. package/dist/src/functions/commands/knowledge-index.js +1 -1
  344. package/dist/src/functions/commands/knowledge-validate.d.ts +4 -4
  345. package/dist/src/functions/commands/knowledge-validate.js +1 -1
  346. package/dist/src/functions/commands/login.d.ts +9 -9
  347. package/dist/src/functions/commands/login.js +1 -1
  348. package/dist/src/functions/commands/meta.d.ts +37 -37
  349. package/dist/src/functions/commands/meta.js +1 -1
  350. package/dist/src/functions/commands/new-addon.d.ts +5 -4
  351. package/dist/src/functions/commands/new-addon.js +27 -25
  352. package/dist/src/functions/commands/new-function.d.ts +4 -4
  353. package/dist/src/functions/commands/new-function.js +4 -4
  354. package/dist/src/functions/commands/new-middleware.d.ts +4 -4
  355. package/dist/src/functions/commands/new-middleware.js +3 -3
  356. package/dist/src/functions/commands/new-permission.d.ts +4 -4
  357. package/dist/src/functions/commands/new-permission.js +3 -3
  358. package/dist/src/functions/commands/new-wiring.d.ts +4 -4
  359. package/dist/src/functions/commands/new-wiring.js +8 -8
  360. package/dist/src/functions/commands/persona-sync.d.ts +4 -4
  361. package/dist/src/functions/commands/persona-sync.js +3 -3
  362. package/dist/src/functions/commands/persona.d.ts +5 -5
  363. package/dist/src/functions/commands/persona.js +3 -4
  364. package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +1 -1
  365. package/dist/src/functions/commands/pikku-command-bootstrap.js +7 -2
  366. package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -1
  367. package/dist/src/functions/commands/pikku-command-summary.js +2 -2
  368. package/dist/src/functions/commands/roles-audit.d.ts +1 -1
  369. package/dist/src/functions/commands/roles-audit.js +1 -1
  370. package/dist/src/functions/commands/roles-prune.d.ts +4 -4
  371. package/dist/src/functions/commands/roles-prune.js +1 -1
  372. package/dist/src/functions/commands/roles-shared.d.ts +1 -1
  373. package/dist/src/functions/commands/roles-shared.js +1 -1
  374. package/dist/src/functions/commands/scenario-browser.d.ts +19 -13
  375. package/dist/src/functions/commands/scenario-browser.js +20 -6
  376. package/dist/src/functions/commands/scenario-formatter.d.ts +6 -52
  377. package/dist/src/functions/commands/scenario-ladder.d.ts +4 -5
  378. package/dist/src/functions/commands/scenario-ladder.js +1 -1
  379. package/dist/src/functions/commands/scenario-plan.d.ts +2 -2
  380. package/dist/src/functions/commands/scenario-plan.js +1 -1
  381. package/dist/src/functions/commands/scenario.d.ts +8 -8
  382. package/dist/src/functions/commands/scenario.js +73 -23
  383. package/dist/src/functions/commands/scopes-audit.d.ts +1 -1
  384. package/dist/src/functions/commands/scopes-audit.js +1 -1
  385. package/dist/src/functions/commands/scopes-prune.d.ts +4 -4
  386. package/dist/src/functions/commands/scopes-prune.js +1 -1
  387. package/dist/src/functions/commands/scopes-shared.d.ts +1 -1
  388. package/dist/src/functions/commands/scopes-shared.js +1 -1
  389. package/dist/src/functions/commands/semver.d.ts +1 -1
  390. package/dist/src/functions/commands/semver.js +1 -1
  391. package/dist/src/functions/commands/serve.d.ts +4 -4
  392. package/dist/src/functions/commands/serve.js +9 -8
  393. package/dist/src/functions/commands/skills.d.ts +8 -8
  394. package/dist/src/functions/commands/skills.js +1 -1
  395. package/dist/src/functions/commands/start-coverage.d.ts +1 -1
  396. package/dist/src/functions/commands/start-coverage.js +2 -2
  397. package/dist/src/functions/commands/update.d.ts +1 -1
  398. package/dist/src/functions/commands/update.js +1 -1
  399. package/dist/src/functions/commands/validate.d.ts +4 -4
  400. package/dist/src/functions/commands/validate.js +1 -1
  401. package/dist/src/functions/commands/versions-check.d.ts +1 -1
  402. package/dist/src/functions/commands/versions-check.js +1 -1
  403. package/dist/src/functions/commands/versions-init.d.ts +4 -4
  404. package/dist/src/functions/commands/versions-init.js +1 -1
  405. package/dist/src/functions/commands/versions-update.d.ts +1 -1
  406. package/dist/src/functions/commands/versions-update.js +1 -1
  407. package/dist/src/functions/commands/virtual-user-formatter.d.ts +1 -1
  408. package/dist/src/functions/commands/watch.d.ts +4 -4
  409. package/dist/src/functions/commands/watch.js +1 -1
  410. package/dist/src/functions/db/annotation-parser.d.ts +11 -3
  411. package/dist/src/functions/db/better-auth-schema.js +1 -1
  412. package/dist/src/functions/db/db-codegen.js +4 -2
  413. package/dist/src/functions/db/local-db.js +3 -3
  414. package/dist/src/functions/runtimes/fetch/index.d.ts +1 -1
  415. package/dist/src/functions/runtimes/fetch/index.js +1 -1
  416. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
  417. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +1 -1
  418. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.d.ts +1 -1
  419. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.js +7 -7
  420. package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -1
  421. package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.js +1 -1
  422. package/dist/src/functions/surface/build-surface-doc.d.ts +22 -0
  423. package/dist/src/functions/surface/build-surface-doc.js +151 -0
  424. package/dist/src/functions/surface/collect-surface-usage.d.ts +16 -0
  425. package/dist/src/functions/surface/collect-surface-usage.js +35 -0
  426. package/dist/src/functions/surface/collect-surface.d.ts +19 -1
  427. package/dist/src/functions/surface/collect-surface.js +104 -16
  428. package/dist/src/functions/surface/generate-surface-doc.d.ts +1 -0
  429. package/dist/src/functions/surface/generate-surface-doc.js +46 -0
  430. package/dist/src/functions/surface/shipped-surface-doc.d.ts +16 -0
  431. package/dist/src/functions/surface/shipped-surface-doc.js +44 -0
  432. package/dist/src/functions/surface/surface-doc.types.d.ts +69 -0
  433. package/dist/src/functions/surface/surface-doc.types.js +1 -0
  434. package/dist/src/functions/surface/surface-editorial.d.ts +25 -0
  435. package/dist/src/functions/surface/surface-editorial.js +101 -0
  436. package/dist/src/functions/surface/write-surface-usage.d.ts +12 -0
  437. package/dist/src/functions/surface/write-surface-usage.js +18 -0
  438. package/dist/src/functions/validate/pikku-barrel-checks.d.ts +12 -0
  439. package/dist/src/functions/validate/pikku-barrel-checks.js +97 -0
  440. package/dist/src/functions/validate/shared-checks.d.ts +10 -0
  441. package/dist/src/functions/validate/shared-checks.js +17 -3
  442. package/dist/src/functions/validate/validate-registry.js +10 -0
  443. package/dist/src/functions/wirings/agent/pikku-command-agent-types.d.ts +1 -1
  444. package/dist/src/functions/wirings/agent/pikku-command-agent-types.js +3 -2
  445. package/dist/src/functions/wirings/agent/pikku-command-agent.d.ts +1 -1
  446. package/dist/src/functions/wirings/agent/pikku-command-agent.js +4 -4
  447. package/dist/src/functions/wirings/agent/pikku-command-public-agent.d.ts +1 -1
  448. package/dist/src/functions/wirings/agent/pikku-command-public-agent.js +4 -5
  449. package/dist/src/functions/wirings/agent/serialize-agent-map.d.ts +1 -1
  450. package/dist/src/functions/wirings/agent/serialize-agent-types.d.ts +1 -1
  451. package/dist/src/functions/wirings/agent/serialize-agent-types.js +17 -12
  452. package/dist/src/functions/wirings/agent/serialize-model-aliases.js +1 -1
  453. package/dist/src/functions/wirings/agent/serialize-public-agent.d.ts +1 -1
  454. package/dist/src/functions/wirings/agent/serialize-public-agent.js +14 -13
  455. package/dist/src/functions/wirings/agent-scorer/pikku-command-agent-scorer.d.ts +1 -1
  456. package/dist/src/functions/wirings/agent-scorer/pikku-command-agent-scorer.js +4 -4
  457. package/dist/src/functions/wirings/agent-scorer/serialize-scorer-names.d.ts +1 -1
  458. package/dist/src/functions/wirings/auth/pikku-command-auth.d.ts +4 -4
  459. package/dist/src/functions/wirings/auth/pikku-command-auth.js +5 -4
  460. package/dist/src/functions/wirings/auth/serialize-auth-gen.d.ts +1 -1
  461. package/dist/src/functions/wirings/auth/serialize-auth-gen.js +3 -8
  462. package/dist/src/functions/wirings/auth/serialize-auth-guards.d.ts +12 -0
  463. package/dist/src/functions/wirings/auth/serialize-auth-guards.js +168 -0
  464. package/dist/src/functions/wirings/auth/serialize-auth-types.d.ts +4 -4
  465. package/dist/src/functions/wirings/auth/serialize-auth-types.js +4 -4
  466. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
  467. package/dist/src/functions/wirings/channels/pikku-channels.js +2 -2
  468. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
  469. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +6 -3
  470. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
  471. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +1 -1
  472. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
  473. package/dist/src/functions/wirings/channels/pikku-command-channels.js +2 -2
  474. package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +3 -1
  475. package/dist/src/functions/wirings/channels/serialize-channel-types.js +18 -25
  476. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.d.ts +2 -3
  477. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
  478. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +2 -2
  479. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
  480. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +3 -3
  481. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
  482. package/dist/src/functions/wirings/cli/pikku-command-cli.js +2 -2
  483. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +1 -1
  484. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +3 -3
  485. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +2 -2
  486. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +11 -5
  487. package/dist/src/functions/wirings/cli/serialize-cli-types.d.ts +1 -1
  488. package/dist/src/functions/wirings/cli/serialize-cli-types.js +8 -3
  489. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +1 -1
  490. package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -1
  491. package/dist/src/functions/wirings/console/pikku-command-console-functions.js +6 -5
  492. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -1
  493. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.js +2 -2
  494. package/dist/src/functions/wirings/console/serialize-console-functions.d.ts +1 -1
  495. package/dist/src/functions/wirings/console/serialize-console-functions.js +20 -4
  496. package/dist/src/functions/wirings/credentials/pikku-command-credentials.d.ts +1 -1
  497. package/dist/src/functions/wirings/credentials/pikku-command-credentials.js +2 -2
  498. package/dist/src/functions/wirings/credentials/serialize-credentials-types.d.ts +1 -1
  499. package/dist/src/functions/wirings/credentials/serialize-credentials-types.js +4 -6
  500. package/dist/src/functions/wirings/emails/pikku-command-emails.d.ts +1 -1
  501. package/dist/src/functions/wirings/emails/pikku-command-emails.js +3 -3
  502. package/dist/src/functions/wirings/emails/serialize-emails.js +114 -44
  503. package/dist/src/functions/wirings/errors/pikku-command-error-types.d.ts +1 -0
  504. package/dist/src/functions/wirings/errors/pikku-command-error-types.js +17 -0
  505. package/dist/src/functions/wirings/errors/serialize-error-types.d.ts +9 -0
  506. package/dist/src/functions/wirings/errors/serialize-error-types.js +16 -0
  507. package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -1
  508. package/dist/src/functions/wirings/functions/pikku-command-addon-types.js +20 -8
  509. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +4 -4
  510. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +17 -3
  511. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
  512. package/dist/src/functions/wirings/functions/pikku-command-functions.js +2 -2
  513. package/dist/src/functions/wirings/functions/pikku-command-leaf-indexes.d.ts +14 -0
  514. package/dist/src/functions/wirings/functions/pikku-command-leaf-indexes.js +119 -0
  515. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  516. package/dist/src/functions/wirings/functions/pikku-command-services.js +18 -3
  517. package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
  518. package/dist/src/functions/wirings/functions/schemas.js +1 -1
  519. package/dist/src/functions/wirings/functions/serialize-addon-types.d.ts +13 -0
  520. package/dist/src/functions/wirings/functions/serialize-addon-types.js +20 -2
  521. package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +1 -1
  522. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +7 -2
  523. package/dist/src/functions/wirings/functions/serialize-function-types.js +47 -361
  524. package/dist/src/functions/wirings/functions/serialize-leaf-index.d.ts +17 -0
  525. package/dist/src/functions/wirings/functions/serialize-leaf-index.js +27 -0
  526. package/dist/src/functions/wirings/gateway/pikku-command-gateway-types.d.ts +7 -0
  527. package/dist/src/functions/wirings/gateway/pikku-command-gateway-types.js +24 -0
  528. package/dist/src/functions/wirings/gateway/pikku-command-gateway.d.ts +1 -1
  529. package/dist/src/functions/wirings/gateway/pikku-command-gateway.js +1 -1
  530. package/dist/src/functions/wirings/gateway/serialize-gateway-meta.d.ts +1 -1
  531. package/dist/src/functions/wirings/gateway/serialize-gateway-types.d.ts +6 -0
  532. package/dist/src/functions/wirings/gateway/serialize-gateway-types.js +55 -0
  533. package/dist/src/functions/wirings/graph/pikku-command-graph-wirings.d.ts +1 -1
  534. package/dist/src/functions/wirings/graph/pikku-command-graph-wirings.js +3 -4
  535. package/dist/src/functions/wirings/graph/serialize-graph-wirings.d.ts +1 -1
  536. package/dist/src/functions/wirings/graph/serialize-graph-wirings.js +2 -2
  537. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
  538. package/dist/src/functions/wirings/http/pikku-command-http-map.js +3 -3
  539. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
  540. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +2 -2
  541. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
  542. package/dist/src/functions/wirings/http/pikku-command-http-types.js +7 -3
  543. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
  544. package/dist/src/functions/wirings/http/pikku-command-openapi.js +1 -1
  545. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
  546. package/dist/src/functions/wirings/http/pikku-http-routes.js +2 -2
  547. package/dist/src/functions/wirings/http/serialize-http-types.d.ts +3 -1
  548. package/dist/src/functions/wirings/http/serialize-http-types.js +20 -36
  549. package/dist/src/functions/wirings/http/serialize-typed-http-map.d.ts +6 -2
  550. package/dist/src/functions/wirings/http/serialize-typed-http-map.js +5 -4
  551. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
  552. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +1 -1
  553. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
  554. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +5 -2
  555. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
  556. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +7 -3
  557. package/dist/src/functions/wirings/mcp/serialize-mcp-types.d.ts +3 -1
  558. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +17 -9
  559. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
  560. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +1 -1
  561. package/dist/src/functions/wirings/middleware/serialize-middleware-types.d.ts +9 -0
  562. package/dist/src/functions/wirings/middleware/serialize-middleware-types.js +176 -0
  563. package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +3 -3
  564. package/dist/src/functions/wirings/package/pikku-command-package-types.js +1 -1
  565. package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
  566. package/dist/src/functions/wirings/package/pikku-command-package.js +1 -1
  567. package/dist/src/functions/wirings/package/serialize-package-types.js +2 -7
  568. package/dist/src/functions/wirings/package/serialize-package.js +1 -1
  569. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
  570. package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +1 -1
  571. package/dist/src/functions/wirings/personas/pikku-command-personas.d.ts +4 -4
  572. package/dist/src/functions/wirings/personas/pikku-command-personas.js +2 -2
  573. package/dist/src/functions/wirings/personas/serialize-personas-secrets.d.ts +5 -0
  574. package/dist/src/functions/wirings/personas/serialize-personas-secrets.js +6 -0
  575. package/dist/src/functions/wirings/personas/serialize-personas-types.d.ts +2 -2
  576. package/dist/src/functions/wirings/personas/serialize-personas-types.js +4 -27
  577. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
  578. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +1 -1
  579. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
  580. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +1 -1
  581. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
  582. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +4 -2
  583. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
  584. package/dist/src/functions/wirings/queue/pikku-command-queue.js +1 -1
  585. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
  586. package/dist/src/functions/wirings/queue/pikku-queue-map.js +1 -1
  587. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
  588. package/dist/src/functions/wirings/queue/pikku-queue.js +1 -1
  589. package/dist/src/functions/wirings/queue/serialize-queue-map.d.ts +1 -1
  590. package/dist/src/functions/wirings/queue/serialize-queue-map.js +1 -1
  591. package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +1 -1
  592. package/dist/src/functions/wirings/queue/serialize-queue-types.d.ts +3 -1
  593. package/dist/src/functions/wirings/queue/serialize-queue-types.js +8 -6
  594. package/dist/src/functions/wirings/queue/serialize-queue-wrapper.js +1 -1
  595. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.d.ts +1 -1
  596. package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.js +3 -6
  597. package/dist/src/functions/wirings/realtime/pikku-command-realtime.d.ts +1 -1
  598. package/dist/src/functions/wirings/realtime/pikku-command-realtime.js +1 -1
  599. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.d.ts +1 -1
  600. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.js +6 -11
  601. package/dist/src/functions/wirings/roles/pikku-command-roles.d.ts +4 -4
  602. package/dist/src/functions/wirings/roles/pikku-command-roles.js +3 -3
  603. package/dist/src/functions/wirings/roles/serialize-roles-types.d.ts +1 -1
  604. package/dist/src/functions/wirings/roles/serialize-roles-types.js +2 -2
  605. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
  606. package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +6 -7
  607. package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -1
  608. package/dist/src/functions/wirings/rpc/pikku-command-react-query.js +1 -1
  609. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
  610. package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.js +6 -6
  611. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
  612. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +1 -1
  613. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +3 -3
  614. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +1 -1
  615. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
  616. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +2 -2
  617. package/dist/src/functions/wirings/rpc/serialize-public-rpc.d.ts +1 -1
  618. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +5 -5
  619. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.d.ts +1 -1
  620. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +5 -3
  621. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +1 -1
  622. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +1 -1
  623. package/dist/src/functions/wirings/scenarios/register-scenario-instrumentation.d.ts +4 -5
  624. package/dist/src/functions/wirings/scenarios/register-scenario-instrumentation.js +8 -10
  625. package/dist/src/functions/wirings/scenarios/scenario-partition.d.ts +1 -1
  626. package/dist/src/functions/wirings/scenarios/scenario-schema-partition.d.ts +1 -1
  627. package/dist/src/functions/wirings/scenarios/serialize-feature-meta.d.ts +1 -1
  628. package/dist/src/functions/wirings/scenarios/serialize-scenario-meta.js +4 -4
  629. package/dist/src/functions/wirings/scenarios/serialize-scenario-registration.js +1 -1
  630. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
  631. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +5 -2
  632. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
  633. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +1 -1
  634. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +1 -1
  635. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.d.ts +3 -1
  636. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +10 -6
  637. package/dist/src/functions/wirings/scopes/pikku-command-scopes.d.ts +4 -4
  638. package/dist/src/functions/wirings/scopes/pikku-command-scopes.js +10 -4
  639. package/dist/src/functions/wirings/scopes/serialize-scopes-client.d.ts +16 -0
  640. package/dist/src/functions/wirings/scopes/serialize-scopes-client.js +72 -0
  641. package/dist/src/functions/wirings/scopes/serialize-scopes-types.d.ts +1 -1
  642. package/dist/src/functions/wirings/scopes/serialize-scopes-types.js +3 -3
  643. package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -1
  644. package/dist/src/functions/wirings/secrets/pikku-command-secrets.js +2 -2
  645. package/dist/src/functions/wirings/secrets/serialize-secrets-types.d.ts +1 -1
  646. package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +14 -21
  647. package/dist/src/functions/wirings/setup/serialize-setup-types.d.ts +7 -0
  648. package/dist/src/functions/wirings/setup/serialize-setup-types.js +111 -0
  649. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +4 -4
  650. package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.js +2 -2
  651. package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -1
  652. package/dist/src/functions/wirings/triggers/pikku-command-trigger.js +1 -1
  653. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.d.ts +1 -1
  654. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.js +4 -4
  655. package/dist/src/functions/wirings/triggers/serialize-trigger-types.d.ts +3 -1
  656. package/dist/src/functions/wirings/triggers/serialize-trigger-types.js +19 -13
  657. package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.d.ts +1 -1
  658. package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.js +18 -18
  659. package/dist/src/functions/wirings/user-admin/serialize-user-admin-functions.d.ts +10 -9
  660. package/dist/src/functions/wirings/user-admin/serialize-user-admin-functions.js +67 -56
  661. package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -1
  662. package/dist/src/functions/wirings/variables/pikku-command-variables.js +2 -2
  663. package/dist/src/functions/wirings/variables/serialize-variables-types.d.ts +1 -1
  664. package/dist/src/functions/wirings/variables/serialize-variables-types.js +13 -17
  665. package/dist/src/functions/wirings/virtual-user/pikku-command-virtual-user-functions.d.ts +1 -1
  666. package/dist/src/functions/wirings/virtual-user/pikku-command-virtual-user-functions.js +4 -4
  667. package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.d.ts +1 -1
  668. package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.js +7 -6
  669. package/dist/src/functions/wirings/webhook/pikku-command-webhook.d.ts +1 -1
  670. package/dist/src/functions/wirings/webhook/pikku-command-webhook.js +6 -6
  671. package/dist/src/functions/wirings/webhook/serialize-webhook.d.ts +1 -1
  672. package/dist/src/functions/wirings/webhook/serialize-webhook.js +4 -3
  673. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.d.ts +1 -1
  674. package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.js +4 -5
  675. package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
  676. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +14 -5
  677. package/dist/src/functions/wirings/workflow/serialize-personas.d.ts +1 -1
  678. package/dist/src/functions/wirings/workflow/serialize-personas.js +3 -3
  679. package/dist/src/functions/wirings/workflow/serialize-scenario-step-map.d.ts +1 -2
  680. package/dist/src/functions/wirings/workflow/serialize-scenario-types.d.ts +2 -0
  681. package/dist/src/functions/wirings/workflow/serialize-scenario-types.js +511 -0
  682. package/dist/src/functions/wirings/workflow/serialize-workflow-bootstrap-map.d.ts +1 -1
  683. package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +2 -3
  684. package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +1 -1
  685. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +4 -4
  686. package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +0 -4
  687. package/dist/src/functions/wirings/workflow/serialize-workflow-routes.d.ts +1 -1
  688. package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +11 -11
  689. package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -1
  690. package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +28 -438
  691. package/dist/src/functions/workflows/all.workflow.d.ts +1 -1
  692. package/dist/src/functions/workflows/all.workflow.js +77 -22
  693. package/dist/src/middleware/log-command-info-and-time.d.ts +1 -1
  694. package/dist/src/server/bun-server-runner.d.ts +1 -1
  695. package/dist/src/server/content-signing-jwt.js +1 -1
  696. package/dist/src/server/dev-server-runner.interface.d.ts +1 -1
  697. package/dist/src/server/node-server-runner.d.ts +1 -1
  698. package/dist/src/services/cli-logger.service.d.ts +1 -1
  699. package/dist/src/services/cli-logger.service.js +1 -1
  700. package/dist/src/services.d.ts +9 -6
  701. package/dist/src/services.js +22 -6
  702. package/dist/src/utils/file-writer.d.ts +2 -0
  703. package/dist/src/utils/file-writer.js +37 -1
  704. package/dist/src/utils/is-deploy-codegen.d.ts +21 -0
  705. package/dist/src/utils/is-deploy-codegen.js +23 -0
  706. package/dist/src/utils/leaf-import-path.d.ts +16 -0
  707. package/dist/src/utils/leaf-import-path.js +15 -0
  708. package/dist/src/utils/parse-cli-filters.js +15 -35
  709. package/dist/src/utils/pikku-cli-config.d.ts +11 -0
  710. package/dist/src/utils/pikku-cli-config.js +90 -16
  711. package/dist/src/utils/precise-coverage-map.d.ts +1 -1
  712. package/dist/src/utils/remove-legacy-scaffold-file.d.ts +1 -1
  713. package/dist/src/utils/remove-legacy-scaffold-file.js +11 -3
  714. package/dist/src/utils/resolve-personas.d.ts +3 -3
  715. package/dist/src/utils/resolve-personas.js +2 -2
  716. package/dist/src/utils/resolve-scaffold-feature.d.ts +7 -6
  717. package/dist/src/utils/resolve-scaffold-feature.js +11 -31
  718. package/dist/src/utils/serialize-meta-ts.js +1 -1
  719. package/dist/src/utils/serialize-schemas.d.ts +1 -1
  720. package/dist/src/utils/serialize-schemas.js +1 -1
  721. package/dist/src/utils/surface.js +1 -1
  722. package/dist/src/utils/tsc-check.d.ts +1 -1
  723. package/dist/src/utils/tsc-check.js +1 -1
  724. package/dist/tsconfig.tsbuildinfo +1 -1
  725. package/package.json +48 -47
  726. package/surface.json +4464 -0
  727. package/console-app/assets/abnfDiagram-VRR7QNED-QRjCVsso.js +0 -1
  728. package/console-app/assets/arc-CloGjkHW.js +0 -1
  729. package/console-app/assets/architecture-TIHT7OUA-Cz78Qi5H.js +0 -1
  730. package/console-app/assets/architectureDiagram-ZJ3FMSHR-Dl10fVqw.js +0 -36
  731. package/console-app/assets/c4Diagram-LMCZKHZV-C2pWYCa6.js +0 -10
  732. package/console-app/assets/channel-Bm4o-pNB.js +0 -1
  733. package/console-app/assets/chunk-52WLFC77-DuAheIlc.js +0 -10
  734. package/console-app/assets/chunk-EX3LRPZG-CWXF7N33.js +0 -231
  735. package/console-app/assets/chunk-FWX5IMBZ-UN3i5qMG.js +0 -2
  736. package/console-app/assets/chunk-ICXQ74PX-BiuzWyj2.js +0 -2
  737. package/console-app/assets/chunk-OGEWGWER-BNi3Gsmc.js +0 -1
  738. package/console-app/assets/chunk-PUDLZKDR-DNWGCeoL.js +0 -156
  739. package/console-app/assets/chunk-RYQCIY6F-DvRUzuDz.js +0 -1
  740. package/console-app/assets/chunk-VAUOI2AC-D4_whP-t.js +0 -1
  741. package/console-app/assets/chunk-WYO6CB5R-COKjEQwP.js +0 -127
  742. package/console-app/assets/chunk-XXDRQBXY-mkAF2YHU.js +0 -1
  743. package/console-app/assets/chunk-ZIRB5QZD-H-kepumB.js +0 -32
  744. package/console-app/assets/classDiagram-OUVF2IWQ-B2cEvfK0.js +0 -1
  745. package/console-app/assets/classDiagram-v2-EOCWNBFH-B2cEvfK0.js +0 -1
  746. package/console-app/assets/cose-bilkent-JH36ORCC-D6F1MghO.js +0 -1
  747. package/console-app/assets/cynefin-VYW2F7L2-BIhff1Ln.js +0 -1
  748. package/console-app/assets/cynefinDiagram-TSTJHNR4-DrlBq_QP.js +0 -62
  749. package/console-app/assets/cytoscape.esm-h6BdjjI9.js +0 -321
  750. package/console-app/assets/dagre-CXRCoUWR.js +0 -1
  751. package/console-app/assets/dagre-VKFMJZFB-Cm2eP0ez.js +0 -4
  752. package/console-app/assets/defaultLocale-C8Fc0cco.js +0 -1
  753. package/console-app/assets/diagram-G47NLZAW-3K3OPEuG.js +0 -24
  754. package/console-app/assets/diagram-NH7WQ7WH-CUK-d5iT.js +0 -24
  755. package/console-app/assets/diagram-WEI45ONY-D33qA2d9.js +0 -41
  756. package/console-app/assets/dist-jqlCD26w.js +0 -1
  757. package/console-app/assets/ebnfDiagram-CCIWWBDH-DUHkt7z6.js +0 -1
  758. package/console-app/assets/eventmodeling-45OFAUF4-iK6rmyk3.js +0 -1
  759. package/console-app/assets/flowDiagram-23GEKE2U-CSYhKO9Y.js +0 -1
  760. package/console-app/assets/ganttDiagram-NO4QXBWP-64_vh9rj.js +0 -292
  761. package/console-app/assets/gitGraph-TEB2WS4Q-DlFJY0cQ.js +0 -1
  762. package/console-app/assets/graphlib-B8gBHxth.js +0 -1
  763. package/console-app/assets/index-Byf4wkdP.js +0 -261
  764. package/console-app/assets/index-CTO5cTAD.css +0 -1
  765. package/console-app/assets/info-DKCQHKI2-DhyT_-b1.js +0 -1
  766. package/console-app/assets/infoDiagram-FWYZ7A6U-ufTemVSR.js +0 -2
  767. package/console-app/assets/init-D6jRqBbL.js +0 -1
  768. package/console-app/assets/linear-5Z8stnH-.js +0 -1
  769. package/console-app/assets/map-DsCK-0Cs.js +0 -1
  770. package/console-app/assets/mermaid.core-DwI4IdKs.js +0 -11
  771. package/console-app/assets/packet-7NZHBO7P-comMLvz_.js +0 -1
  772. package/console-app/assets/path-BWPyau1x.js +0 -1
  773. package/console-app/assets/pegDiagram-2B236MQR-CbqiI_m5.js +0 -1
  774. package/console-app/assets/pie-RZYD4A2V-VZXoX73g.js +0 -1
  775. package/console-app/assets/pieDiagram-ENE6RG2P-SA-sCnrt.js +0 -39
  776. package/console-app/assets/radar-I7S5WNFK-W0UH9BdP.js +0 -1
  777. package/console-app/assets/railroad-3IZDKUUU-_HEtbruA.js +0 -1
  778. package/console-app/assets/railroad-abnf-AHOZXSZD-ghLnUEfg.js +0 -1
  779. package/console-app/assets/railroad-ebnf-EBAXGLYW-D8JHCZD5.js +0 -1
  780. package/console-app/assets/railroad-peg-LSFZ7HO6-C9eC4l2D.js +0 -1
  781. package/console-app/assets/railroadDiagram-RFXS5EU6-Cm2SfP9Z.js +0 -1
  782. package/console-app/assets/sequenceDiagram-DBY2YBRQ-B2AvEvXu.js +0 -162
  783. package/console-app/assets/src-72nNqhBu.js +0 -1
  784. package/console-app/assets/stateDiagram-2N3HPSRC-vgyc-CMC.js +0 -1
  785. package/console-app/assets/stateDiagram-v2-6OUMAXLB-B2WCkCZh.js +0 -1
  786. package/console-app/assets/swimlanes-5IMT3BWC-GiOMMhZh.js +0 -2
  787. package/console-app/assets/swimlanesDiagram-G3AALYLV-CkCbtoLb.js +0 -8
  788. package/console-app/assets/timeline-definition-FHXFAJF6-DTJQsTn8.js +0 -120
  789. package/console-app/assets/treeView-QDETBFTQ-aizmbgl7.js +0 -1
  790. package/console-app/assets/treemap-6X3UGDF4-DIBl6bfV.js +0 -1
  791. package/console-app/assets/vennDiagram-L72KCM5P-C4Ngu7VX.js +0 -34
  792. package/console-app/assets/wardley-OPB4EBWU-BqdXyJTm.js +0 -1
  793. package/dist/src/functions/db/coercion-plugin.d.ts +0 -7
  794. package/dist/src/functions/db/coercion-plugin.js +0 -103
  795. package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +0 -1
  796. package/dist/src/functions/wirings/console/pikku-command-node-types.js +0 -21
  797. package/dist/src/functions/wirings/console/serialize-node-types.d.ts +0 -1
  798. package/dist/src/functions/wirings/console/serialize-node-types.js +0 -11
  799. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +0 -7
  800. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +0 -43
  801. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +0 -4
  802. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +0 -36
  803. /package/dist/.pikku/schemas/schemas/{PikkuFunctionTypesInput.schema.json → PikkuGatewayTypesInput.schema.json} +0 -0
@@ -3,11 +3,13 @@ import { readFile, readdir } from 'node:fs/promises';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { dirname, join } from 'node:path';
5
5
  import { createRequire } from 'node:module';
6
- import { pikkuSessionlessFunc } from '../../../.pikku/pikku-types.gen.js';
6
+ import { pikkuSessionlessFunc } from '../../../.pikku/function/index.js';
7
7
  import { added, changed, removed, dim } from '../lib/output.js';
8
8
  import { typeCheckFrontends } from '../lib/frontend-typecheck.js';
9
9
  import { readJsonSafe, readTextSafe, runSharedProjectChecks, } from '../../functions/validate/shared-checks.js';
10
10
  import { runTypeIdentityChecks } from '../../functions/validate/type-identity-checks.js';
11
+ import { migrationCreatesTable } from '../../functions/validate/shared-checks.js';
12
+ import { isGitRepo, isTracked } from '../lib/git.js';
11
13
  const FindingSchema = z.object({
12
14
  id: z.string(),
13
15
  severity: z.enum(['error', 'warn', 'info']),
@@ -132,11 +134,17 @@ const LOGIN_FILE_PATTERN = /(?:^|\/)[\w[\]-]*(?:login|sign-?in)[\w[\]-]*(?:\/|\.
132
134
  // these means the app actually wires actor sign-in — the component's own
133
135
  // definition is excluded, since defining it without rendering it locks the
134
136
  // reviewer out just as thoroughly.
135
- // Canonical implementation: starter-template's DevActorSwitcher, rendered from
136
- // LoginPage and backed by signInAsActor() POST /auth/sign-in/actor.
137
+ //
138
+ // Canonical implementation is now `<DevActorSwitcher>` from `@pikku/mantine/dev`
139
+ // (built on `useDevActors` from `@pikku/react`), rendered from the login screen.
140
+ // The hand-rolled shape the templates used to copy — a local component backed by
141
+ // `signInAsActor()` → POST /auth/sign-in/actor — still passes: apps that predate
142
+ // the package keep working, and the useDevActors call site is matched for apps
143
+ // that want their own UI on the shared logic.
137
144
  const ACTOR_QUICK_LOGIN_PATTERNS = [
138
145
  /<\s*DevActorSwitcher\b/,
139
146
  /(?<!function\s)\bsignInAsActor\s*\(/,
147
+ /(?<!function\s)\buseDevActors\s*\(/,
140
148
  /\/auth\/sign-in\/actor/,
141
149
  ];
142
150
  // Minimum @pikku/* versions Fabric requires. The pikku packages are versioned
@@ -148,9 +156,14 @@ const ACTOR_QUICK_LOGIN_PATTERNS = [
148
156
  // listening (the sandbox never serves routes).
149
157
  // - @pikku/core mismatches split pikkuState into duplicate copies, so app
150
158
  // and console routes 404; pin the floor that matches the runtime.
159
+ // - @pikku/cloudflare < 0.12.20 imports '@pikku/core/internal', a subpath no
160
+ // published @pikku/core exports, so every worker fails to resolve and the
161
+ // deploy ends at "0 workers bundled (0B total)". The broken import is in
162
+ // the dependency's own dist, which no source-level check can see.
151
163
  const PIKKU_MIN_VERSIONS = {
152
164
  '@pikku/cli': '0.12.43',
153
165
  '@pikku/core': '0.12.34',
166
+ '@pikku/cloudflare': '0.12.20',
154
167
  };
155
168
  // Pull major.minor.patch from a spec, ignoring range prefixes (^ ~ >=),
156
169
  // npm: aliases, and pre-release/build suffixes. null if no semver is present
@@ -213,6 +226,21 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
213
226
  const pikkuConfigPath = join(root, 'pikku.config.json');
214
227
  const rootPkgPath = join(root, 'package.json');
215
228
  const rootPkg = await readJsonSafe(rootPkgPath);
229
+ // ── packageManager ─────────────────────────────────────────────────────
230
+ // The build container is bun-only end to end — install, pikku codegen and
231
+ // the frontend build all run under bun — and it refuses the repository
232
+ // before cloning finishes if package.json declares anything else. Nothing
233
+ // else in validate reads packageManager, so a yarn or pnpm project passed
234
+ // every check here and then died on the first line of the deploy.
235
+ {
236
+ const declared = rootPkg?.packageManager;
237
+ if (!declared) {
238
+ e('package-manager-undeclared', 'package.json does not declare "packageManager" — Fabric is bun-only and the build container aborts with "Unsupported packageManager"', rootPkgPath, lines('Add it to the root package.json:', ' "packageManager": "bun@1.3.14"', 'then run `bun install` to generate bun.lock and commit both.'));
239
+ }
240
+ else if (!declared.startsWith('bun@')) {
241
+ e('package-manager-not-bun', `package.json declares packageManager "${declared}" — Fabric is bun-only and the build container aborts with "Unsupported packageManager"`, rootPkgPath, lines('Set the root package.json to bun:', ' "packageManager": "bun@1.3.14"', 'then migrate the lockfile:', ' bun install && rm -f yarn.lock pnpm-lock.yaml package-lock.json', 'and commit bun.lock.'));
242
+ }
243
+ }
216
244
  // ── pikkufabric.config.json ────────────────────────────────────────────
217
245
  // Not required to run validate — downgraded to info so any pikku project
218
246
  // can be checked for compatibility before it is linked to a fabric account.
@@ -224,6 +252,18 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
224
252
  else if (!fabricConfig.projectId) {
225
253
  info('fabric-config-no-project-id', 'pikkufabric.config.json is missing "projectId"', fabricConfigPath, lines('Edit `pikkufabric.config.json` and add:', '{', ' "projectId": "<your-project-id>"', '}', 'If you do not know the id yet, run `pikku fabric link`.'));
226
254
  }
255
+ else if ((await isGitRepo(root)) &&
256
+ !(await isTracked('pikkufabric.config.json', root))) {
257
+ // An error, unlike the three states around it. Those describe a project
258
+ // that has not been linked yet, which is a legitimate thing to validate.
259
+ // This one is a project that *is* linked and still cannot deploy: the build
260
+ // container clones the repository, so a config that exists only in the
261
+ // working tree is absent the moment it matters. Locally everything passes;
262
+ // remotely the deploy aborts with "pikkufabric.config.json not found in
263
+ // repository root". Nothing downstream of here can detect that, which is
264
+ // why it is caught at the one point that can.
265
+ e('fabric-config-untracked', 'pikkufabric.config.json is not committed — deploy clones the repository, so the build container will not see it and aborts with "pikkufabric.config.json not found in repository root"', fabricConfigPath, lines('Commit the file:', ' git add pikkufabric.config.json && git commit -m "chore: link to fabric"', 'Then check it is not being excluded:', ' git check-ignore -v pikkufabric.config.json', 'A .gitignore rule such as `*.config.json` or a broad `*.json` will swallow it.'));
266
+ }
227
267
  else if (fabricConfig.projectId === '__PROJECT_ID__') {
228
268
  info('fabric-config-placeholder-project-id', 'pikkufabric.config.json has a placeholder projectId ("__PROJECT_ID__") — project is not linked', fabricConfigPath, lines('The file exists but still contains the placeholder project id.', 'Run `pikku fabric link` to replace it automatically, or edit the file and set:', '"projectId": "<real-project-id>"'));
229
269
  }
@@ -315,7 +355,7 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
315
355
  const floorStr = PIKKU_MIN_VERSIONS[pkg];
316
356
  const floor = parseSemver(floorStr);
317
357
  if (floor && semverLt(seen.version, floor)) {
318
- e(`pikku-version-below-min-${pkg.replace(/[@/]/g, '-')}`, `${pkg} is ${seen.version.join('.')} (spec "${seen.spec}") — Fabric requires >= ${floorStr}`, seen.manifest, lines(`Bump ${pkg} to ^${floorStr} (or newer) and reinstall:`, ` yarn up ${pkg}@^${floorStr}`, 'Then run `yarn install` and re-run `pikku fabric validate`.'));
358
+ e(`pikku-version-below-min-${pkg.replace(/[@/]/g, '-')}`, `${pkg} is ${seen.version.join('.')} (spec "${seen.spec}") — Fabric requires >= ${floorStr}`, seen.manifest, lines(`Bump ${pkg} to ^${floorStr} (or newer) and reinstall:`, ` bun add ${pkg}@^${floorStr}`, 'Then run `bun install` and re-run `pikku fabric validate`.'));
319
359
  }
320
360
  }
321
361
  }
@@ -505,30 +545,34 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
505
545
  const fnPkgPath = join(fnDir, 'package.json');
506
546
  const fnPkg = await readJsonSafe(fnPkgPath);
507
547
  if (fnPkg) {
508
- // #pikku bare import required by the injected fabric-telemetry.wiring.ts
509
- if (!fnPkg.imports?.['#pikku']) {
510
- e('functions-pkg-missing-pikku-import', 'packages/functions/package.json is missing a bare "#pikku" entry in "imports" — the Fabric-injected telemetry middleware imports from "#pikku" and will fail to bundle without it', fnPkgPath, 'Add to "imports": { "#pikku": "./.pikku/pikku-types.gen.ts", "#pikku/*": "./.pikku/*" }');
548
+ // Both patterns are required, and both are load-bearing: the `.js`-suffixed
549
+ // key resolves a deep generated file, the bare wildcard resolves a leaf
550
+ // name at that leaf's index. Node picks the longer suffix, so declaring
551
+ // only one silently loses half the surface.
552
+ const PIKKU_IMPORTS = 'Add to "imports": { "#pikku/*.js": "./.pikku/*.ts", "#pikku/*": "./.pikku/*/index.ts" }';
553
+ if (!fnPkg.imports?.['#pikku/*.js']) {
554
+ e('functions-pkg-missing-pikku-import', 'packages/functions/package.json is missing "#pikku/*.js" in "imports" — wiring files that import e.g. "#pikku/pikku-fetch.gen.js" fail at runtime with "Cannot find module"', fnPkgPath, PIKKU_IMPORTS);
511
555
  }
512
556
  if (!fnPkg.imports?.['#pikku/*']) {
513
- e('functions-pkg-missing-pikku-wildcard-import', 'packages/functions/package.json is missing "#pikku/*" in "imports" — wiring files that import e.g. "#pikku/pikku-types.gen.js" fail at runtime with "Cannot find module"', fnPkgPath, 'Add to "imports": { "#pikku": "./.pikku/pikku-types.gen.ts", "#pikku/*": "./.pikku/*" }');
557
+ e('functions-pkg-missing-pikku-wildcard-import', 'packages/functions/package.json is missing "#pikku/*" in "imports" — files that import a leaf such as "#pikku/function" fail at runtime with "Cannot find module"', fnPkgPath, PIKKU_IMPORTS);
514
558
  }
515
- // .pikku/pikku-types.gen.js wrapper — the sandbox runs `pikku dev` via
516
- // bare Node.js (no tsx), which cannot load .ts files. Every .gen.ts in
517
- // .pikku/ needs a matching .gen.js wrapper. The sandbox entrypoint creates
559
+ // .pikku leaf index .js wrapper — the sandbox runs `pikku dev` via
560
+ // bare Node.js (no tsx), which cannot load .ts files. Every .ts in
561
+ // .pikku/ needs a matching .js wrapper. The sandbox entrypoint creates
518
562
  // these during provisioning but NOT on subsequent restarts after agent
519
563
  // edits — so after any restart pikku dev crashes with
520
- // "Cannot find module '#pikku/pikku-types.gen.js'". Run `pikku fabric smoke`
564
+ // "Cannot find module '#pikku/function'". Run `pikku fabric smoke`
521
565
  // to test locally; the smoke command recreates the wrappers automatically.
522
566
  {
523
- const pikkuGenDir = join(fnDir, '.pikku');
524
- const typesGenTs = join(pikkuGenDir, 'pikku-types.gen.ts');
525
- const typesGenJs = join(pikkuGenDir, 'pikku-types.gen.js');
567
+ const leafDir = join(fnDir, '.pikku', 'function');
568
+ const indexTs = join(leafDir, 'index.ts');
569
+ const indexJs = join(leafDir, 'index.js');
526
570
  // A warning, not an error: the wrapper is gitignored and recreated by
527
571
  // the sandbox entrypoint and `fabric smoke`, so a freshly cloned or
528
572
  // freshly scaffolded project never has it. As an error, "validate must
529
573
  // pass clean" was unachievable from a clean checkout.
530
- if (existsSync(typesGenTs) && !existsSync(typesGenJs)) {
531
- w('pikku-types-js-wrapper-missing', 'packages/functions/.pikku/pikku-types.gen.js is missing — the sandbox runs pikku dev via bare Node.js, which cannot load .ts files; without the .js wrapper it crashes with "Cannot find module \'#pikku/pikku-types.gen.js\'" on every restart', typesGenTs, lines('Create packages/functions/.pikku/pikku-types.gen.js:', " import './pikku-types.gen.ts';", " export * from './pikku-types.gen.ts';", 'Or run `pikku fabric smoke` to test the full boot locally (it creates the wrappers).', 'This file is gitignored — it must be recreated after every `pikku all` run.'));
574
+ if (existsSync(indexTs) && !existsSync(indexJs)) {
575
+ w('pikku-types-js-wrapper-missing', 'packages/functions/.pikku/function/index.js is missing — the sandbox runs pikku dev via bare Node.js, which cannot load .ts files; without the .js wrapper it crashes with "Cannot find module \'#pikku/function\'" on every restart', indexTs, lines('Create packages/functions/.pikku/function/index.js:', " import './index.ts';", " export * from './index.ts';", 'Or run `pikku fabric smoke` to test the full boot locally (it creates the wrappers).', 'This file is gitignored — it must be recreated after every `pikku all` run.'));
532
576
  }
533
577
  }
534
578
  const fnAllDeps = {
@@ -542,10 +586,10 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
542
586
  // CF worker runtime deps — must be in dependencies (not dev), every
543
587
  // worker entry resolves them at deploy time.
544
588
  if (!fnPkg.dependencies?.['@pikku/schema-cfworker']) {
545
- e('missing-schema-cfworker', '@pikku/schema-cfworker is not in packages/functions dependencies — every Cloudflare worker entry requires it', fnPkgPath, 'Run `yarn add @pikku/schema-cfworker` in packages/functions — must be in dependencies, not devDependencies');
589
+ e('missing-schema-cfworker', '@pikku/schema-cfworker is not in packages/functions dependencies — every Cloudflare worker entry requires it', fnPkgPath, 'Run `bun add @pikku/schema-cfworker` in packages/functions — must be in dependencies, not devDependencies');
546
590
  }
547
591
  if (!fnPkg.dependencies?.['@pikku/kysely']) {
548
- e('missing-pikku-kysely', '@pikku/kysely is not in packages/functions dependencies — every Cloudflare worker entry requires it (KyselySecretService)', fnPkgPath, 'Run `yarn add @pikku/kysely` in packages/functions — must be in dependencies, not devDependencies');
592
+ e('missing-pikku-kysely', '@pikku/kysely is not in packages/functions dependencies — every Cloudflare worker entry requires it (KyselySecretService)', fnPkgPath, 'Run `bun add @pikku/kysely` in packages/functions — must be in dependencies, not devDependencies');
549
593
  }
550
594
  }
551
595
  // Agent units require the AI SDK deps explicitly (not CI-injected). Gate on
@@ -554,16 +598,16 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
554
598
  if (agentMeta && Object.keys(agentMeta.agentsMeta ?? {}).length > 0) {
555
599
  const fnPkgPath = join(fnDir, 'package.json');
556
600
  if (!fnPkg?.dependencies?.['@pikku/ai-vercel']) {
557
- e('missing-ai-vercel', 'Project declares agent units but @pikku/ai-vercel is not in packages/functions dependencies', fnPkgPath, 'Run `yarn add @pikku/ai-vercel` in packages/functions — must be in dependencies, not devDependencies');
601
+ e('missing-ai-vercel', 'Project declares agent units but @pikku/ai-vercel is not in packages/functions dependencies', fnPkgPath, 'Run `bun add @pikku/ai-vercel` in packages/functions — must be in dependencies, not devDependencies');
558
602
  }
559
603
  if (!fnPkg?.dependencies?.['@ai-sdk/openai-compatible']) {
560
- e('missing-ai-sdk-openai-compatible', 'Project declares agent units but @ai-sdk/openai-compatible is not in packages/functions dependencies', fnPkgPath, 'Run `yarn add @ai-sdk/openai-compatible` in packages/functions — must be in dependencies, not devDependencies');
604
+ e('missing-ai-sdk-openai-compatible', 'Project declares agent units but @ai-sdk/openai-compatible is not in packages/functions dependencies', fnPkgPath, 'Run `bun add @ai-sdk/openai-compatible` in packages/functions — must be in dependencies, not devDependencies');
561
605
  }
562
606
  // `ai` is a peer dep of @pikku/ai-vercel — not auto-installed. Without it
563
607
  // `pikku dev` can't construct the agent runner and agents 503 with
564
608
  // AIProviderNotConfiguredError.
565
609
  if (!fnPkg?.dependencies?.['ai']) {
566
- e('missing-ai-sdk-core', 'Project declares agent units but `ai` (the Vercel AI SDK) is not in packages/functions dependencies — it is a peer dependency of @pikku/ai-vercel and is not installed automatically', fnPkgPath, 'Run `yarn add ai` in packages/functions — must be in dependencies, not devDependencies');
610
+ e('missing-ai-sdk-core', 'Project declares agent units but `ai` (the Vercel AI SDK) is not in packages/functions dependencies — it is a peer dependency of @pikku/ai-vercel and is not installed automatically', fnPkgPath, 'Run `bun add ai` in packages/functions — must be in dependencies, not devDependencies');
567
611
  }
568
612
  }
569
613
  // services.ts — its absence is reported by runSharedProjectChecks; what
@@ -718,8 +762,7 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
718
762
  if (existsSync(migrationsDir)) {
719
763
  try {
720
764
  const migFiles = (await readdir(migrationsDir)).filter((f) => f.endsWith('.sql'));
721
- const hasAuditTable = (await Promise.all(migFiles.map((f) => readTextSafe(join(migrationsDir, f))))).some((sql) => sql &&
722
- /CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?audit\b/i.test(sql));
765
+ const hasAuditTable = (await Promise.all(migFiles.map((f) => readTextSafe(join(migrationsDir, f))))).some((sql) => !!sql && migrationCreatesTable(sql, 'audit'));
723
766
  if (!hasAuditTable) {
724
767
  info('audit-table-missing', 'No migration creates the audit table — Fabric audit events will be dropped', migrationsDir, lines('Add a new migration in this directory that creates an `audit` table.', 'Use the starter-template audit migration as the reference shape.', 'Expected columns come from `AuditEvent`:', '- eventId', '- type', '- source', '- outcome', '- occurredAt', '- functionId', '- wireType', '- wireId', '- traceId', '- transactionId', '- queryId', '- actor', '- input', '- metadata', 'At minimum, create the table so Fabric audit writes are not silently dropped.'));
725
768
  }
@@ -736,6 +779,7 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
736
779
  // was supposed to report the broken config. Shape-check the entries once here
737
780
  // and let the apps/ and type-check passes consume the narrowed list.
738
781
  const declaredFrontends = [];
782
+ let hasMantineFrontend = false;
739
783
  /** every syntactically valid cwd, including ones whose directory is missing */
740
784
  const declaredCwdList = [];
741
785
  const rawFrontends = fabricConfig?.frontends;
@@ -821,6 +865,9 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
821
865
  const isReactFrontend = !!(appAllDeps['@mantine/core'] ||
822
866
  appAllDeps['@pikku/mantine'] ||
823
867
  appAllDeps['react']);
868
+ if (appAllDeps['@mantine/core'] || appAllDeps['@pikku/mantine']) {
869
+ hasMantineFrontend = true;
870
+ }
824
871
  if (isReactFrontend) {
825
872
  const srcFiles = await listSourceFiles(join(appPath, 'src'));
826
873
  let usesMessages = false;
@@ -914,7 +961,7 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
914
961
  }
915
962
  }
916
963
  if (loginFiles.length > 0 && !hasQuickLogin) {
917
- e(`app-missing-actor-quick-login-${name}`, `apps/${name} has a login screen (${loginFiles[0]}) but no one-click actor sign-in — nobody can view the app as a scenario persona without a password`, join(appPath, loginFiles[0]), lines('Add the dev-only "Sign in as …" switcher and render it from the login screen:', '1. lib/auth: devActors() reading the DEV_ACTORS env var, and', ' signInAsActor(email) POST `${apiUrl()}/auth/sign-in/actor`', ' with { email, secret } and credentials: "include".', '2. components/DevActorSwitcher.tsx: a Menu of the declared actors,', ' each Menu.Item signing in as that persona. Render null when', ' devActors() is empty, so it disappears in production.', `3. Render <DevActorSwitcher /> from ${loginFiles[0]}.`, 'Reference: templates/starter-template/apps/app/src/components/DevActorSwitcher.tsx.'));
964
+ e(`app-missing-actor-quick-login-${name}`, `apps/${name} has a login screen (${loginFiles[0]}) but no one-click actor sign-in — nobody can view the app as a scenario persona without a password`, join(appPath, loginFiles[0]), lines('Render the dev-only "Sign in as …" switcher from the login screen.', `In ${loginFiles[0]}:`, " import { DevActorSwitcher } from '@pikku/mantine/dev'", ' <DevActorSwitcher', ' actors={import.meta.env.DEV ? import.meta.env.VITE_DEV_ACTORS : undefined}', ' secret={import.meta.env.DEV ? import.meta.env.VITE_SCENARIO_ACTOR_SECRET : undefined}', ' apiUrl={apiUrl()}', " onSignedIn={() => navigate({ to: '/' })}", ' />', 'The sandbox dev server bakes both env vars from your declared personas;', 'neither is set in production, so the control renders null there.', 'Gate the reads on import.meta.env.DEV as above so the secret never', 'reaches a production bundle. Next.js apps read the NEXT_PUBLIC_* pair.', 'For custom UI, build on useDevActors() from @pikku/react instead.'));
918
965
  }
919
966
  }
920
967
  }
@@ -943,7 +990,7 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
943
990
  }
944
991
  }
945
992
  if (installDirs.size > 1) {
946
- e(`dup-physical-copy-${name}-${pkg.replace(/[@/]/g, '-')}`, `apps/${name}: "${pkg}" resolves to ${installDirs.size} distinct physical copies — a module-singleton split (breaks TanStack Start dev SSR → frontend 404)`, appPath, lines(`"${pkg}" is installed more than once (e.g. one hoisted to the repo root and one nested under apps/${name}).`, `Declare "${pkg}" in exactly ONE workspace manifest (the root OR apps/${name}, not both), delete yarn.lock, and reinstall so it hoists to a single copy.`, '`resolutions` version-pins do NOT collapse a peer-virtualized duplicate.'));
993
+ e(`dup-physical-copy-${name}-${pkg.replace(/[@/]/g, '-')}`, `apps/${name}: "${pkg}" resolves to ${installDirs.size} distinct physical copies — a module-singleton split (breaks TanStack Start dev SSR → frontend 404)`, appPath, lines(`"${pkg}" is installed more than once (e.g. one hoisted to the repo root and one nested under apps/${name}).`, `Declare "${pkg}" in exactly ONE workspace manifest (the root OR apps/${name}, not both), delete bun.lock, and reinstall so it hoists to a single copy.`, '`resolutions` version-pins do NOT collapse a peer-virtualized duplicate.'));
947
994
  }
948
995
  }
949
996
  }
@@ -1016,9 +1063,12 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
1016
1063
  }
1017
1064
  // ── packages/theme + packages/components ──────────────────────────────
1018
1065
  const designDocUrl = 'https://pikkufabric.dev/docs/design';
1066
+ const designSeverity = hasMantineFrontend ? w : info;
1019
1067
  const themePkgDir = join(root, 'packages', 'mantine-theme');
1020
1068
  if (!existsSync(themePkgDir)) {
1021
- info('theme-missing', 'packages/mantine-theme/ not found — Fabric design features require a theme package', themePkgDir, `Create packages/mantine-theme/ with your Mantine theme tokens. See ${designDocUrl}`);
1069
+ designSeverity('theme-missing', hasMantineFrontend
1070
+ ? 'packages/mantine-theme/ not found — the Fabric console Design tab has no themes to list and reports "No themes yet"'
1071
+ : 'packages/mantine-theme/ not found — Fabric design features require a theme package', themePkgDir, `Create packages/mantine-theme/ with your Mantine theme tokens. See ${designDocUrl}`);
1022
1072
  }
1023
1073
  else {
1024
1074
  // The Fabric console's Design tab lists a theme only when it can read a
@@ -1042,7 +1092,7 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
1042
1092
  }
1043
1093
  }
1044
1094
  if (specIds.length === 0) {
1045
- info('theme-no-spec', 'packages/mantine-theme/ has no themes/<id>.json spec — the Fabric console Design tab reports "no theme set" (and cannot edit the theme) even if the app is branded via a hand-written createTheme()', themesDir, lines('Add a theme spec the console can read:', '1. Create packages/mantine-theme/themes/<id>.json (id is kebab-case), e.g.:', '{', ' "name": "My Brand",', ' "brand": { "colors": { "primary": "#4f46e5" }, "fonts": { "body": "Inter" } },', ' "structure": { "defaultRadius": "md", "defaultColorScheme": "light" }', '}', '2. Create packages/mantine-theme/active.json: { "id": "<id>" }', '3. Build the Mantine theme from the active spec in index.ts.', `See ${designDocUrl}`));
1095
+ designSeverity('theme-no-spec', 'packages/mantine-theme/ has no themes/<id>.json spec — the Fabric console Design tab reports "no theme set" (and cannot edit the theme) even if the app is branded via a hand-written createTheme()', themesDir, lines('Add a theme spec the console can read:', '1. Create packages/mantine-theme/themes/<id>.json (id is kebab-case), e.g.:', '{', ' "name": "My Brand",', ' "brand": { "colors": { "primary": "#4f46e5" }, "fonts": { "body": "Inter" } },', ' "structure": { "defaultRadius": "md", "defaultColorScheme": "light" }', '}', '2. Create packages/mantine-theme/active.json: { "id": "<id>" }', '3. Build the Mantine theme from the active spec in index.ts.', `See ${designDocUrl}`));
1046
1096
  }
1047
1097
  else {
1048
1098
  // A spec exists — active.json must point at one, else the console has no
@@ -1059,8 +1109,21 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
1059
1109
  }
1060
1110
  }
1061
1111
  }
1062
- if (!existsSync(join(root, 'packages', 'components'))) {
1063
- info('components-missing', 'packages/components/ not found — Fabric design features require a components package', join(root, 'packages', 'components'), `Create packages/components/ with your shared UI components. See ${designDocUrl}`);
1112
+ // The design server globs stories from apps/*/src/components, not packages/components.
1113
+ const storyFiles = [];
1114
+ let hasComponentKit = false;
1115
+ for (const name of existsSync(appsDir) ? await readdir(appsDir) : []) {
1116
+ const kitDir = join(appsDir, name, 'src', 'components');
1117
+ if (!existsSync(kitDir))
1118
+ continue;
1119
+ hasComponentKit = true;
1120
+ for (const file of await listSourceFiles(kitDir)) {
1121
+ if (file.endsWith('.stories.tsx'))
1122
+ storyFiles.push(file);
1123
+ }
1124
+ }
1125
+ if (hasComponentKit && storyFiles.length === 0) {
1126
+ designSeverity('design-no-stories', "no apps/*/src/components/**/*.stories.tsx found — the Fabric console Design tab's Library and App lenses have nothing to show", join(appsDir, '*', 'src', 'components'), lines('Add a story beside a component. The Library lens reads <Name>.stories.tsx', '(each named export is a visual variant); the App lens reads', '<Name>.app.stories.tsx (each named export is one data state of the query', 'or mutation the page drives it with). A minimal Library story:', '', " import type { Story, StoryMeta } from './csf.types'", " import { Wordmark } from './Wordmark'", '', ' export default {', " title: 'Wordmark',", ' component: Wordmark,', ' } satisfies StoryMeta', '', " export const Default: Story = { args: { name: 'Acme' } }", `See ${designDocUrl}`));
1064
1127
  }
1065
1128
  // ── frontend type-check (what the build container actually runs) ───────
1066
1129
  // Every check above is a heuristic standing in for this compile. The build
@@ -1129,6 +1192,26 @@ export const renderValidate = (_s, { ok, root, findings }) => {
1129
1192
  console.log(counts.join(' '));
1130
1193
  if (ok) {
1131
1194
  console.log();
1132
- console.log(added('✓') + ' ' + dim('no errors project can be linked to fabric'));
1195
+ // "can be linked" is not "will deploy", and conflating them is how a green
1196
+ // validate is followed straight by a failed deploy. The three
1197
+ // fabric-config findings are info on purpose — an unlinked project is
1198
+ // still worth validating — but reporting unqualified success while the
1199
+ // build container is guaranteed to abort on a missing config is the part
1200
+ // that misleads. So the success line says which of the two it earned.
1201
+ const notLinked = findings.find((f) => [
1202
+ 'fabric-config-missing',
1203
+ 'fabric-config-no-project-id',
1204
+ 'fabric-config-placeholder-project-id',
1205
+ ].includes(f.id));
1206
+ if (notLinked) {
1207
+ console.log(added('✓') +
1208
+ ' ' +
1209
+ dim('no errors — but the project is not linked, so it cannot deploy yet'));
1210
+ console.log(' ' +
1211
+ dim(`${notLinked.message.split(' — ')[0]}. Run \`pikku fabric link\`.`));
1212
+ }
1213
+ else {
1214
+ console.log(added('✓') + ' ' + dim('no errors — project can be linked to fabric'));
1215
+ }
1133
1216
  }
1134
1217
  };
@@ -51,3 +51,26 @@ export declare function assertDeploySafety(cwd?: string): Promise<DeploySafetyRe
51
51
  * target branch, not "whatever branch I happen to be on".
52
52
  */
53
53
  export declare function assertNamedBranchDeploySafety(branch: string, cwd?: string): Promise<DeploySafetyResult>;
54
+ /**
55
+ * Is `relPath` tracked by git in `cwd`?
56
+ *
57
+ * Deploy clones the repository rather than uploading the working tree, so a
58
+ * file that exists only on disk does not exist for the build container. Any
59
+ * check that reads a required file locally has to ask this too, or it passes
60
+ * on the developer's machine and fails after the clone.
61
+ *
62
+ * Returns false rather than throwing when `cwd` is not a git repository. Note
63
+ * what that means for a caller: "not tracked" and "no repository at all" are
64
+ * the same answer, and only the first is a problem worth reporting — a project
65
+ * with no repository cannot be deployed by a clone in any case, and flagging an
66
+ * uncommitted file there is noise. Pair this with `isGitRepo` when the
67
+ * distinction matters.
68
+ */
69
+ export declare function isTracked(relPath: string, cwd?: string): Promise<boolean>;
70
+ /**
71
+ * Is `cwd` inside a git working tree?
72
+ *
73
+ * Separate from `isTracked` so a caller can tell "this repository does not have
74
+ * the file" from "there is no repository", which are the same `false` there.
75
+ */
76
+ export declare function isGitRepo(cwd?: string): Promise<boolean>;
@@ -149,3 +149,42 @@ export async function assertNamedBranchDeploySafety(branch, cwd) {
149
149
  }
150
150
  return { branch, headSha: head, upstream, remoteSha: remote };
151
151
  }
152
+ /**
153
+ * Is `relPath` tracked by git in `cwd`?
154
+ *
155
+ * Deploy clones the repository rather than uploading the working tree, so a
156
+ * file that exists only on disk does not exist for the build container. Any
157
+ * check that reads a required file locally has to ask this too, or it passes
158
+ * on the developer's machine and fails after the clone.
159
+ *
160
+ * Returns false rather than throwing when `cwd` is not a git repository. Note
161
+ * what that means for a caller: "not tracked" and "no repository at all" are
162
+ * the same answer, and only the first is a problem worth reporting — a project
163
+ * with no repository cannot be deployed by a clone in any case, and flagging an
164
+ * uncommitted file there is noise. Pair this with `isGitRepo` when the
165
+ * distinction matters.
166
+ */
167
+ export async function isTracked(relPath, cwd = process.cwd()) {
168
+ try {
169
+ await git(['ls-files', '--error-unmatch', '--', relPath], cwd);
170
+ return true;
171
+ }
172
+ catch {
173
+ return false;
174
+ }
175
+ }
176
+ /**
177
+ * Is `cwd` inside a git working tree?
178
+ *
179
+ * Separate from `isTracked` so a caller can tell "this repository does not have
180
+ * the file" from "there is no repository", which are the same `false` there.
181
+ */
182
+ export async function isGitRepo(cwd = process.cwd()) {
183
+ try {
184
+ const out = await git(['rev-parse', '--is-inside-work-tree'], cwd);
185
+ return out.trim() === 'true';
186
+ }
187
+ catch {
188
+ return false;
189
+ }
190
+ }
@@ -1 +1 @@
1
- export declare const all: import("#pikku").PikkuFunctionSessionlessConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown>, undefined, undefined>;
1
+ export declare const all: import("#pikku/function").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<void, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,4 +1,4 @@
1
- import { pikkuVoidFunc } from '#pikku';
1
+ import { pikkuVoidFunc } from '#pikku/function';
2
2
  import { computeMetaDiff, readMetaSnapshot } from '../../utils/meta-diff.js';
3
3
  export const all = pikkuVoidFunc({
4
4
  remote: true,
@@ -1,5 +1,15 @@
1
+ import type { SecurityAuditIssue, SecurityAuditReport, SecurityAuditUpdate } from '@pikku/core/types';
1
2
  type AuditInput = {
2
3
  outdated?: boolean;
3
4
  };
4
- export declare const pikkuAudit: import("#pikku").PikkuFunctionConfig<AuditInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<AuditInput, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<AuditInput, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
5
+ type PackageManager = 'bun' | 'npm' | 'yarn' | 'pnpm' | 'unknown';
6
+ export declare function findProjectRoot(startDir: string): {
7
+ root: string;
8
+ pm: PackageManager;
9
+ };
10
+ export declare function parseBunAudit(raw: string): SecurityAuditIssue[];
11
+ export declare function semverLevel(current: string, latest: string): SecurityAuditUpdate['level'];
12
+ export declare function parseBunOutdated(raw: string): SecurityAuditUpdate[];
13
+ export declare function summarise(tool: PackageManager, issues: SecurityAuditIssue[], updates: SecurityAuditUpdate[], note?: string): SecurityAuditReport;
14
+ export declare const pikkuAudit: import("#pikku/function").PikkuFunctionConfig<AuditInput, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<AuditInput, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<AuditInput, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
5
15
  export {};
@@ -1,7 +1,7 @@
1
1
  import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { spawnSync } from 'node:child_process';
4
- import { pikkuSessionlessFunc } from '#pikku';
4
+ import { pikkuSessionlessFunc } from '#pikku/function';
5
5
  const SCHEMA_VERSION = 1;
6
6
  const SEVERITY_ORDER = ['critical', 'high', 'moderate', 'low', 'info'];
7
7
  // Artifact shape (SecurityAuditReport / …Issue / …Update) is the canonical type
@@ -10,7 +10,7 @@ const SEVERITY_ORDER = ['critical', 'high', 'moderate', 'low', 'info'];
10
10
  const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*m/g, '');
11
11
  // Walk up from startDir to the nearest workspace root — the dir whose lockfile
12
12
  // the package manager audits. Falls back to startDir.
13
- function findProjectRoot(startDir) {
13
+ export function findProjectRoot(startDir) {
14
14
  let dir = startDir;
15
15
  for (let i = 0; i < 12; i++) {
16
16
  if (existsSync(join(dir, 'bun.lock')) || existsSync(join(dir, 'bun.lockb')))
@@ -53,7 +53,7 @@ function normaliseSeverity(sev) {
53
53
  : 'info';
54
54
  }
55
55
  // bun audit --json → { "<pkg>": [ { id, url, title, severity, vulnerable_versions, cwe[], cvss:{score} } ] }
56
- function parseBunAudit(raw) {
56
+ export function parseBunAudit(raw) {
57
57
  const issues = [];
58
58
  let obj;
59
59
  try {
@@ -90,7 +90,7 @@ function parseBunAudit(raw) {
90
90
  }
91
91
  return issues;
92
92
  }
93
- function semverLevel(current, latest) {
93
+ export function semverLevel(current, latest) {
94
94
  const c = String(current)
95
95
  .replace(/^[^\d]*/, '')
96
96
  .split('.')
@@ -101,16 +101,24 @@ function semverLevel(current, latest) {
101
101
  .map((n) => parseInt(n, 10));
102
102
  if (Number.isNaN(c[0]) || Number.isNaN(l[0]))
103
103
  return 'unknown';
104
- if (l[0] > c[0])
105
- return 'major';
106
- if ((l[1] || 0) > (c[1] || 0))
107
- return 'minor';
108
- if ((l[2] || 0) > (c[2] || 0))
109
- return 'patch';
104
+ // Compare component by component, stopping at the first that differs. Testing
105
+ // each component independently would read 2.0.0 → 1.9.9 as a "minor" bump,
106
+ // and the console offers `patch`/`minor` as the safe one-click update.
107
+ const pairs = [
108
+ [0, 'major'],
109
+ [1, 'minor'],
110
+ [2, 'patch'],
111
+ ];
112
+ for (const [i, level] of pairs) {
113
+ const from = c[i] || 0;
114
+ const to = l[i] || 0;
115
+ if (to !== from)
116
+ return to > from ? level : 'unknown';
117
+ }
110
118
  return 'unknown';
111
119
  }
112
120
  // bun outdated has no --json; it prints a table: | Package | Current | Update | Latest |
113
- function parseBunOutdated(raw) {
121
+ export function parseBunOutdated(raw) {
114
122
  const updates = [];
115
123
  const seen = new Set();
116
124
  for (const line of stripAnsi(raw).split('\n')) {
@@ -122,9 +130,13 @@ function parseBunOutdated(raw) {
122
130
  .filter((c) => c.length > 0);
123
131
  if (cells.length !== 4)
124
132
  continue;
125
- const [pkg, current, , latest] = cells;
126
- if (pkg === 'Package' || /^-+$/.test(pkg))
133
+ const [cell, current, , latest] = cells;
134
+ if (cell === 'Package' || /^-+$/.test(cell))
127
135
  continue;
136
+ // bun annotates the section a dependency comes from — `lodash (dev)`. The
137
+ // name is the key everything downstream joins on (package.json bumps, the
138
+ // advisory → update join), so the annotation cannot travel with it.
139
+ const pkg = cell.replace(/\s+\((?:dev|peer|optional)\)$/, '');
128
140
  if (!/^\d/.test(current) || !/^\d/.test(latest))
129
141
  continue;
130
142
  if (seen.has(pkg))
@@ -139,7 +151,7 @@ function parseBunOutdated(raw) {
139
151
  }
140
152
  return updates;
141
153
  }
142
- function summarise(tool, issues, updates, note) {
154
+ export function summarise(tool, issues, updates, note) {
143
155
  issues.sort((a, b) => SEVERITY_ORDER.indexOf(a.severity) - SEVERITY_ORDER.indexOf(b.severity));
144
156
  const count = (arr, key, val) => arr.filter((x) => x[key] === val).length;
145
157
  return {
@@ -1,7 +1,7 @@
1
- export declare const binary: import("#pikku").PikkuFunctionConfig<{
1
+ export declare const binary: import("#pikku/function").PikkuFunctionConfig<{
2
2
  compileTarget?: string;
3
- }, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
3
+ }, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
4
4
  compileTarget?: string;
5
- }, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
5
+ }, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
6
6
  compileTarget?: string;
7
- }, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
7
+ }, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,7 +1,7 @@
1
1
  import { resolve, dirname } from 'node:path';
2
2
  import { existsSync, mkdirSync } from 'node:fs';
3
3
  import { execFileSync } from 'node:child_process';
4
- import { pikkuSessionlessFunc } from '#pikku';
4
+ import { pikkuSessionlessFunc } from '#pikku/function';
5
5
  function targetSuffix(target) {
6
6
  return target.replace(/^bun-/, '').replace(/[^a-z0-9_-]/g, '-');
7
7
  }
@@ -1 +1 @@
1
- export declare const bootstrap: import("#pikku").PikkuFunctionSessionlessConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown>, undefined, undefined>;
1
+ export declare const bootstrap: import("#pikku/function").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<void, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,4 +1,4 @@
1
- import { pikkuVoidFunc } from '#pikku';
1
+ import { pikkuVoidFunc } from '#pikku/function';
2
2
  export const bootstrap = pikkuVoidFunc({
3
3
  remote: true,
4
4
  func: async ({ logger, getInspectorState }, _data, { rpc }) => {
@@ -12,19 +12,20 @@ export const bootstrap = pikkuVoidFunc({
12
12
  // Stub auth.types.ts (if better-auth is used) so the pikkuBetterAuth
13
13
  // re-export resolves before any user file is imported.
14
14
  await rpc.invoke('pikkuAuth', { bootstrap: true });
15
- await rpc.invoke('pikkuFunctionTypes', { bootstrap: true });
16
15
  await rpc.invoke('pikkuHTTPTypes');
17
16
  await rpc.invoke('pikkuChannelTypes');
18
17
  await rpc.invoke('pikkuSchedulerTypes');
19
18
  await rpc.invoke('pikkuQueueTypes');
20
19
  await rpc.invoke('pikkuWorkflow', { bootstrap: true });
21
20
  await rpc.invoke('pikkuTriggerTypes', { bootstrap: true });
21
+ await rpc.invoke('pikkuGatewayTypes', { bootstrap: true });
22
22
  await rpc.invoke('pikkuMCPTypes');
23
23
  await rpc.invoke('pikkuAgentTypes');
24
- await rpc.invoke('pikkuNodeTypes');
25
24
  await rpc.invoke('pikkuSecretDefinitionTypes');
25
+ await rpc.invoke('pikkuVariableDefinitionTypes');
26
26
  await rpc.invoke('pikkuScopeDefinitionTypes');
27
27
  await rpc.invoke('pikkuCLITypes', { bootstrap: true });
28
+ await rpc.invoke('pikkuLeafIndexes');
28
29
  if (logger.hasCriticalErrors()) {
29
30
  process.exit(1);
30
31
  }
@@ -38,7 +38,10 @@ export async function registerBunCoverageLoader({ rootDir, }) {
38
38
  const loader = args.path.endsWith('.tsx') ? 'tsx' : 'ts';
39
39
  if (!shouldInstrument(args.path))
40
40
  return { contents: source, loader };
41
- return { contents: instrumenter.instrumentSync(source, args.path), loader };
41
+ return {
42
+ contents: instrumenter.instrumentSync(source, args.path),
43
+ loader,
44
+ };
42
45
  });
43
46
  },
44
47
  });
@@ -1 +1 @@
1
- export declare const dbAudit: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
1
+ export declare const dbAudit: import("#pikku/function").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{}, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,4 +1,4 @@
1
- import { pikkuSessionlessFunc } from '#pikku';
1
+ import { pikkuSessionlessFunc } from '#pikku/function';
2
2
  import { resolveDb } from '../db/local-db.js';
3
3
  import { loadUserConfigForDb } from './db-shared.js';
4
4
  export const dbAudit = pikkuSessionlessFunc({
@@ -10,4 +10,4 @@
10
10
  * premise. A database that is behind gets the same report `db check` gives —
11
11
  * baselining it would bury a real gap under a history claiming otherwise.
12
12
  */
13
- export declare const dbBaseline: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
13
+ export declare const dbBaseline: import("#pikku/function").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{}, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,4 +1,4 @@
1
- import { pikkuSessionlessFunc } from '#pikku';
1
+ import { pikkuSessionlessFunc } from '#pikku/function';
2
2
  import { resolveDb, baseline } from '../db/local-db.js';
3
3
  import { loadUserConfigForDb } from './db-shared.js';
4
4
  /**