@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
@@ -29,10 +29,10 @@ ${template.variables
29
29
  .join('\n')}
30
30
  }
31
31
 
32
- export type EmailTemplateVariables<TName extends EmailTemplateName> =
32
+ type EmailTemplateVariables<TName extends EmailTemplateName> =
33
33
  TemplateVariableMap[TName]
34
34
 
35
- export type RenderEmailInput<TName extends EmailTemplateName> = {
35
+ type RenderEmailInput<TName extends EmailTemplateName> = {
36
36
  name: TName
37
37
  locale?: EmailLocale
38
38
  data: EmailTemplateVariables<TName>
@@ -62,32 +62,103 @@ function getNestedValue(source: Record<string, unknown>, path: string): string {
62
62
  : ''
63
63
  }
64
64
 
65
- function applyTemplate(source: string, context: Record<string, unknown>): string {
66
- return source.replace(/\\{\\{\\s*([^}]+?)\\s*\\}\\}/g, (_match, rawKey) => {
67
- const key = String(rawKey).trim()
68
- if (key === 'content') {
69
- return typeof context.content === 'string' ? context.content : ''
70
- }
71
- if (key.startsWith('>')) {
72
- return ''
73
- }
74
- return getNestedValue(context, key)
65
+ const HTML_ESCAPES: Record<string, string> = {
66
+ '&': '&amp;',
67
+ '<': '&lt;',
68
+ '>': '&gt;',
69
+ '"': '&quot;',
70
+ "'": '&#39;',
71
+ }
72
+
73
+ function escapeHtml(value: string): string {
74
+ return value.replace(/[&<>"']/g, (char) => HTML_ESCAPES[char] ?? char)
75
+ }
76
+
77
+ // Matches the raw {{{ value }}} form before the escaped {{ value }} form, so the
78
+ // opt-in escape hatch is never mistaken for a normal substitution.
79
+ const TEMPLATE_TOKEN = /\\{\\{\\{\\s*([^{}]+?)\\s*\\}\\}\\}|\\{\\{\\s*([^}]+?)\\s*\\}\\}/g
80
+
81
+ const PARTIAL_TOKEN = /\\{\\{\\s*>\\s*([a-zA-Z0-9-_/.]+)\\s*\\}\\}/g
82
+
83
+ const MAX_TEMPLATE_DEPTH = 5
84
+
85
+ // theme.json and the locale files ship with the templates, so they are treated as
86
+ // template-author input: expanded before caller data and allowed to contain their
87
+ // own placeholders. Everything else is caller-supplied.
88
+ const TRUSTED_ROOTS = ['theme', 't']
89
+
90
+ function isTrustedKey(key: string): boolean {
91
+ return TRUSTED_ROOTS.includes(String(key.split('.')[0]))
92
+ }
93
+
94
+ function readToken(rawTriple: unknown, rawDouble: unknown) {
95
+ const raw = typeof rawTriple === 'string'
96
+ return { raw, key: String(raw ? rawTriple : rawDouble).trim() }
97
+ }
98
+
99
+ function expandPartials(source: string, depth = 0): string {
100
+ if (depth >= MAX_TEMPLATE_DEPTH) return source
101
+ let found = false
102
+ const expanded = source.replace(PARTIAL_TOKEN, (_match, partialName) => {
103
+ found = true
104
+ const partial =
105
+ EMAIL_PARTIALS[String(partialName).trim() as keyof typeof EMAIL_PARTIALS]
106
+ return typeof partial === 'string' ? partial : ''
75
107
  })
108
+ return found ? expandPartials(expanded, depth + 1) : expanded
76
109
  }
77
110
 
78
- function renderTemplate(source: string, context: Record<string, unknown>): string {
111
+ function expandTrusted(
112
+ source: string,
113
+ context: Record<string, unknown>,
114
+ escape: boolean
115
+ ): string {
79
116
  let rendered = source
80
- for (let i = 0; i < 5; i += 1) {
81
- const next = applyTemplate(rendered, context)
82
- if (next === rendered) break
117
+ for (let i = 0; i < MAX_TEMPLATE_DEPTH; i += 1) {
118
+ let found = false
119
+ const next = rendered.replace(
120
+ TEMPLATE_TOKEN,
121
+ (match, rawTriple, rawDouble) => {
122
+ const { raw, key } = readToken(rawTriple, rawDouble)
123
+ if (!isTrustedKey(key)) return match
124
+ found = true
125
+ const value = getNestedValue(context, key)
126
+ return raw || !escape ? value : escapeHtml(value)
127
+ }
128
+ )
129
+ if (!found || next === rendered) break
83
130
  rendered = next
84
131
  }
85
132
  return rendered
86
133
  }
87
134
 
88
- function renderPartial(name: string, context: Record<string, unknown>): string {
89
- const partial = EMAIL_PARTIALS[name as keyof typeof EMAIL_PARTIALS]
90
- return partial ? renderTemplate(partial, context) : ''
135
+ // A single substitution pass — the replacement text is never rescanned, so a
136
+ // caller-supplied value can never be reinterpreted as a template.
137
+ function substitute(
138
+ source: string,
139
+ context: Record<string, unknown>,
140
+ escape: boolean
141
+ ): string {
142
+ return source.replace(TEMPLATE_TOKEN, (_match, rawTriple, rawDouble) => {
143
+ const { raw, key } = readToken(rawTriple, rawDouble)
144
+ if (key === 'content') {
145
+ return typeof context.content === 'string' ? context.content : ''
146
+ }
147
+ if (key.startsWith('>')) {
148
+ return ''
149
+ }
150
+ const value = getNestedValue(context, key)
151
+ return raw || !escape ? value : escapeHtml(value)
152
+ })
153
+ }
154
+
155
+ function renderTemplate(
156
+ source: string,
157
+ context: Record<string, unknown>,
158
+ escape: boolean
159
+ ): string {
160
+ const composed = expandTrusted(expandPartials(source), context, escape)
161
+ return substitute(composed, context, escape)
91
162
  }
92
163
 
93
164
  export const EMAILS = EMAIL_TEMPLATES
@@ -119,39 +190,38 @@ export function renderEmailTemplate<TName extends EmailTemplateName>(
119
190
  appName,
120
191
  }
121
192
 
122
- const subject = renderTemplate(template.subject, baseContext).trim()
123
- const htmlWithPartials = template.html.replace(
124
- /\\{\\{\\s*>\\s*([a-zA-Z0-9-_/.]+)\\s*\\}\\}/g,
125
- (_match, partialName) => \`@@PARTIAL:\${String(partialName).trim()}@@\`
126
- )
127
-
128
- let htmlBody = renderTemplate(htmlWithPartials, {
129
- ...baseContext,
130
- subject,
131
- })
193
+ const subject = renderTemplate(template.subject, baseContext, false).trim()
132
194
 
133
- const partialMatches = [...htmlBody.matchAll(/@@PARTIAL:([^@]+)@@/g)]
134
- for (const match of partialMatches) {
135
- const rendered = renderPartial(match[1], {
195
+ const htmlBody = renderTemplate(
196
+ template.html,
197
+ {
136
198
  ...baseContext,
137
199
  subject,
138
- })
139
- htmlBody = htmlBody.replace(match[0], rendered)
140
- }
200
+ },
201
+ true
202
+ )
141
203
 
142
204
  const html = EMAIL_PARTIALS.layout
143
- ? renderTemplate(EMAIL_PARTIALS.layout, {
144
- ...baseContext,
145
- subject,
146
- content: htmlBody,
147
- })
205
+ ? renderTemplate(
206
+ EMAIL_PARTIALS.layout,
207
+ {
208
+ ...baseContext,
209
+ subject,
210
+ content: htmlBody,
211
+ },
212
+ true
213
+ )
148
214
  : htmlBody
149
215
 
150
216
  const text = template.text
151
- ? renderTemplate(template.text, {
152
- ...baseContext,
153
- subject,
154
- }).trim()
217
+ ? renderTemplate(
218
+ template.text,
219
+ {
220
+ ...baseContext,
221
+ subject,
222
+ },
223
+ false
224
+ ).trim()
155
225
  : undefined
156
226
  const hash = (template.hashes[locale]?.contentHash ??
157
227
  '') as RenderedEmail<TName>['hash']
@@ -0,0 +1 @@
1
+ export declare const pikkuErrorTypes: 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>;
@@ -0,0 +1,17 @@
1
+ import { pikkuVoidFunc } from '#pikku/function';
2
+ import { writeFileInDir } from '../../../utils/file-writer.js';
3
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
4
+ import { serializeErrorTypes } from './serialize-error-types.js';
5
+ export const pikkuErrorTypes = pikkuVoidFunc({
6
+ func: async ({ logger, config }) => {
7
+ const { errorTypesFile } = config;
8
+ const content = serializeErrorTypes();
9
+ await writeFileInDir(logger, errorTypesFile, content);
10
+ },
11
+ middleware: [
12
+ logCommandInfoAndTime({
13
+ commandStart: 'Creating error types',
14
+ commandEnd: 'Created error types',
15
+ }),
16
+ ],
17
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generates the error leaf — the file `#pikku/error` resolves to.
3
+ *
4
+ * Unlike the wiring leaves there is nothing project-specific to generate: the
5
+ * catalogue, `PikkuError` and `addError` all come from core as they are. The
6
+ * leaf exists so an application names one door for every Pikku import it makes,
7
+ * rather than reaching past `#pikku` into `@pikku/core` for errors alone.
8
+ */
9
+ export declare const serializeErrorTypes: () => string;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Generates the error leaf — the file `#pikku/error` resolves to.
3
+ *
4
+ * Unlike the wiring leaves there is nothing project-specific to generate: the
5
+ * catalogue, `PikkuError` and `addError` all come from core as they are. The
6
+ * leaf exists so an application names one door for every Pikku import it makes,
7
+ * rather than reaching past `#pikku` into `@pikku/core` for errors alone.
8
+ */
9
+ export const serializeErrorTypes = () => {
10
+ return `/**
11
+ * Error catalogue — \`#pikku/error\` resolves here.
12
+ */
13
+
14
+ export * from '@pikku/core/errors'
15
+ `;
16
+ };
@@ -1,5 +1,5 @@
1
1
  type AddonTypesCommandInput = {
2
2
  bootstrap?: boolean;
3
3
  };
4
- export declare const pikkuAddonTypes: import("#pikku").PikkuFunctionConfig<AddonTypesCommandInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<AddonTypesCommandInput, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<AddonTypesCommandInput, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
4
+ export declare const pikkuAddonTypes: import("#pikku/function").PikkuFunctionConfig<AddonTypesCommandInput, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<AddonTypesCommandInput, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<AddonTypesCommandInput, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
5
5
  export {};
@@ -1,18 +1,30 @@
1
- import { pikkuSessionlessFunc } from '#pikku';
1
+ import { pikkuSessionlessFunc } from '#pikku/function';
2
+ import { rm } from 'fs/promises';
2
3
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
4
  import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
5
  import { writeFileInDir } from '../../../utils/file-writer.js';
5
6
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
6
- import { serializeAddonTypes } from './serialize-addon-types.js';
7
+ import { serializeAddonInstallTypes, serializeAddonTypes, } from './serialize-addon-types.js';
7
8
  export const pikkuAddonTypes = pikkuSessionlessFunc({
8
9
  func: async ({ logger, config, getInspectorState }, input) => {
10
+ const { addonTypesFile, addonSetupTypesFile, packageMappings, servicesFile, secretsFile, credentialsFile, variablesFile, } = config;
11
+ // A project is one or the other, so the half it is not keeps no file on
12
+ // disk. A tree generated before it changed kind still has that file, and
13
+ // `existsSync` is what decides a leaf is alive — so left behind it would
14
+ // keep the wrong `#pikku/addon` resolving forever.
15
+ await rm(config.addon ? addonTypesFile : addonSetupTypesFile, {
16
+ force: true,
17
+ });
18
+ // An application installs addons; an addon package declares itself. Both
19
+ // halves are static, so the app half needs no inspector pass and is written
20
+ // on the bootstrap run as readily as on the full one.
9
21
  if (!config.addon) {
22
+ await writeFileInDir(logger, addonTypesFile, serializeAddonInstallTypes());
10
23
  return;
11
24
  }
12
- const { addonTypesFile, packageMappings, servicesFile, secretsFile, credentialsFile, variablesFile, } = config;
13
25
  const bootstrap = input?.bootstrap === true;
14
26
  if (bootstrap) {
15
- await writeFileInDir(logger, addonTypesFile, 'export {}\n');
27
+ await writeFileInDir(logger, addonSetupTypesFile, 'export {}\n');
16
28
  return;
17
29
  }
18
30
  const visitState = await getInspectorState();
@@ -24,12 +36,12 @@ export const pikkuAddonTypes = pikkuSessionlessFunc({
24
36
  throw new Error('Required types not found');
25
37
  }
26
38
  const configTypeImport = pikkuConfigType
27
- ? `import type { ${pikkuConfigType.type} } from '${getFileImportRelativePath(addonTypesFile, pikkuConfigType.typePath, packageMappings)}'`
39
+ ? `import type { ${pikkuConfigType.type} } from '${getFileImportRelativePath(addonSetupTypesFile, pikkuConfigType.typePath, packageMappings)}'`
28
40
  : '// Config type not found, will use fallback';
29
- const content = serializeAddonTypes(`import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(addonTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, configTypeImport, `import type { RequiredSingletonServices } from '${getFileImportRelativePath(addonTypesFile, servicesFile, packageMappings)}'`, `import { TypedSecretService } from '${getFileImportRelativePath(addonTypesFile, secretsFile, packageMappings)}'`, `import { TypedVariablesService } from '${getFileImportRelativePath(addonTypesFile, variablesFile, packageMappings)}'`, visitState.credentials?.definitions?.length > 0
30
- ? `import { TypedCredentialService } from '${getFileImportRelativePath(addonTypesFile, credentialsFile, packageMappings)}'`
41
+ const content = serializeAddonTypes(`import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(addonSetupTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, configTypeImport, `import type { RequiredSingletonServices } from '${getFileImportRelativePath(addonSetupTypesFile, servicesFile, packageMappings)}'`, `import { TypedSecretService } from '${getFileImportRelativePath(addonSetupTypesFile, secretsFile, packageMappings)}'`, `import { TypedVariablesService } from '${getFileImportRelativePath(addonSetupTypesFile, variablesFile, packageMappings)}'`, visitState.credentials?.definitions?.length > 0
42
+ ? `import { TypedCredentialService } from '${getFileImportRelativePath(addonSetupTypesFile, credentialsFile, packageMappings)}'`
31
43
  : null);
32
- await writeFileInDir(logger, addonTypesFile, content);
44
+ await writeFileInDir(logger, addonSetupTypesFile, content);
33
45
  },
34
46
  middleware: [
35
47
  logCommandInfoAndTime({
@@ -1,7 +1,7 @@
1
- export declare const pikkuFunctionTypesSplit: import("#pikku").PikkuFunctionConfig<{
1
+ export declare const pikkuFunctionTypesSplit: import("#pikku/function").PikkuFunctionConfig<{
2
2
  bootstrap?: boolean;
3
- }, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
3
+ }, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
4
4
  bootstrap?: boolean;
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
  bootstrap?: boolean;
7
- }, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
7
+ }, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,14 +1,17 @@
1
- import { pikkuSessionlessFunc } from '#pikku';
1
+ import { pikkuSessionlessFunc } from '#pikku/function';
2
2
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
3
  import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
4
  import { writeFileInDir } from '../../../utils/file-writer.js';
5
5
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
6
6
  import { serializeFunctionTypes } from './serialize-function-types.js';
7
7
  import { serializeAddonRefs } from './serialize-addon-refs.js';
8
+ import { serializeMiddlewareTypes } from '../middleware/serialize-middleware-types.js';
9
+ import { serializeSetupTypes } from '../setup/serialize-setup-types.js';
10
+ import { serializeAuthGuards } from '../auth/serialize-auth-guards.js';
8
11
  export const pikkuFunctionTypesSplit = pikkuSessionlessFunc({
9
12
  func: async ({ logger, config, getInspectorState }, data) => {
10
13
  const visitState = await getInspectorState(false, true, data?.bootstrap ?? false);
11
- const { functionTypesFile, packageMappings, rpcInternalMapDeclarationFile, servicesFile, } = config;
14
+ const { functionTypesFile, middlewareTypesFile, setupTypesFile, authGuardsFile, packageMappings, rpcInternalMapDeclarationFile, servicesFile, credentialsFile, } = config;
12
15
  // Check for required types
13
16
  checkRequiredTypes(visitState.filesAndMethodsErrors, {
14
17
  userSessionType: true,
@@ -19,10 +22,21 @@ export const pikkuFunctionTypesSplit = pikkuSessionlessFunc({
19
22
  if (!userSessionType || !wireServicesType || !singletonServicesType) {
20
23
  throw new Error('Required types not found');
21
24
  }
25
+ // The credentials leaf is only written when the project declares at least
26
+ // one credential, so importing from it unconditionally would emit a broken
27
+ // import for every project that declares none.
28
+ const credentialsTypeImport = credentialsFile && visitState.credentials?.definitions.length
29
+ ? `import type { CredentialsMap } from '${getFileImportRelativePath(functionTypesFile, credentialsFile, packageMappings)}'`
30
+ : undefined;
22
31
  const configTypeImport = pikkuConfigType
23
32
  ? `import type { ${pikkuConfigType.type} } from '${getFileImportRelativePath(functionTypesFile, pikkuConfigType.typePath, packageMappings)}'`
24
33
  : '// Config type not found, will use fallback';
25
- const content = serializeFunctionTypes(`import type { ${userSessionType.type} } from '${getFileImportRelativePath(functionTypesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, `import type { ${wireServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, wireServicesType.typePath, packageMappings)}'`, wireServicesType.type, `import type { TypedPikkuRPC, FlattenedRPCMap } from '${getFileImportRelativePath(functionTypesFile, rpcInternalMapDeclarationFile, packageMappings)}'`, `import type { RequiredSingletonServices, RequiredWireServices } from '${getFileImportRelativePath(functionTypesFile, servicesFile, packageMappings)}'`, configTypeImport, config.addonName, undefined, typeof config.addon === 'object' ? config.addon?.categories : undefined, `import type { ScopeId } from '${getFileImportRelativePath(functionTypesFile, config.scopesFile, packageMappings)}'`);
34
+ const content = serializeFunctionTypes(`import type { ${userSessionType.type} } from '${getFileImportRelativePath(functionTypesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, `import type { ${wireServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, wireServicesType.typePath, packageMappings)}'`, wireServicesType.type, `import type { TypedPikkuRPC, FlattenedRPCMap } from '${getFileImportRelativePath(functionTypesFile, rpcInternalMapDeclarationFile, packageMappings)}'`, `import type { RequiredSingletonServices } from '${getFileImportRelativePath(functionTypesFile, servicesFile, packageMappings)}'`, configTypeImport, getFileImportRelativePath(functionTypesFile, authGuardsFile, packageMappings), undefined, typeof config.addon === 'object' ? config.addon?.categories : undefined, `import type { ScopeId } from '${getFileImportRelativePath(functionTypesFile, config.scopesFile, packageMappings)}'`, credentialsTypeImport, getFileImportRelativePath(functionTypesFile, middlewareTypesFile, packageMappings), { addon: !!config.addon });
35
+ await writeFileInDir(logger, middlewareTypesFile, serializeMiddlewareTypes(getFileImportRelativePath(middlewareTypesFile, functionTypesFile, packageMappings), config.addonName));
36
+ await writeFileInDir(logger, setupTypesFile, serializeSetupTypes(getFileImportRelativePath(setupTypesFile, functionTypesFile, packageMappings), pikkuConfigType
37
+ ? `import type { ${pikkuConfigType.type} } from '${getFileImportRelativePath(setupTypesFile, pikkuConfigType.typePath, packageMappings)}'`
38
+ : '// Config type not found, will use fallback', pikkuConfigType?.type, `import type { RequiredSingletonServices, RequiredWireServices } from '${getFileImportRelativePath(setupTypesFile, servicesFile, packageMappings)}'`));
39
+ await writeFileInDir(logger, authGuardsFile, serializeAuthGuards(getFileImportRelativePath(authGuardsFile, functionTypesFile, packageMappings), config.addonName));
26
40
  const addonRefs = serializeAddonRefs({
27
41
  addonHttp: visitState.exportedContracts.addonHttp,
28
42
  addonChannel: visitState.exportedContracts.addonChannel,
@@ -1 +1 @@
1
- export declare const pikkuFunctions: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
1
+ export declare const pikkuFunctions: import("#pikku/function").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<void, boolean | undefined, "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 { writeFileInDir } from '../../../utils/file-writer.js';
3
3
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
4
4
  import { serializeFunctionImports } from './serialize-function-imports.js';
@@ -27,7 +27,7 @@ export const pikkuFunctions = pikkuSessionlessFunc({
27
27
  ? `import metaData from '${jsonImportPath}' with { type: 'json' }`
28
28
  : `import metaData from '${jsonImportPath}'`;
29
29
  const packageName = config.addonName ? `'${config.addonName}'` : 'null';
30
- await writeFileInDir(logger, functionsMetaFile, `import { pikkuState } from '@pikku/core/ecosystem'\nimport type { FunctionsMeta } from '@pikku/core/ecosystem/services'\n${importStatement}\npikkuState(${packageName}, 'function', 'meta', metaData as FunctionsMeta)`);
30
+ await writeFileInDir(logger, functionsMetaFile, `import { pikkuState } from '@pikku/core/state'\nimport type { FunctionsMeta } from '@pikku/core/services'\n${importStatement}\npikkuState(${packageName}, 'function', 'meta', metaData as FunctionsMeta)`);
31
31
  // For addon packages, register ALL functions (they'll be invoked by consumers)
32
32
  // For main packages, only register functions that are invoked via internal RPCs
33
33
  const isAddon = !!config.addonName;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The entry files a wiring's leaf is reached by. An addon never generates
3
+ * the wiring leaves, so those indexes are simply absent and `#pikku/http`
4
+ * fails to resolve rather than resolving to a module missing the export.
5
+ *
6
+ * Most leaves have a single entry. `secrets` and `variables` split their definer
7
+ * from their typed-service map across two generated files, `auth` pairs its
8
+ * always-written permission surface with a better-auth wrapper only some
9
+ * projects have, and `setup` holds the application's definers or the addon's —
10
+ * a project being only ever one kind — so each entry is listed and the index
11
+ * re-exports whichever of them the project actually generated.
12
+ */
13
+ export declare const leafEntries: readonly [readonly ["function", readonly ["functionTypesFile"]], readonly ["middleware", readonly ["middlewareTypesFile"]], readonly ["setup", readonly ["setupTypesFile", "addonSetupTypesFile"]], readonly ["error", readonly ["errorTypesFile"]], readonly ["http", readonly ["httpTypesFile"]], readonly ["channel", readonly ["channelsTypesFile"]], readonly ["gateway", readonly ["gatewaysTypesFile"]], readonly ["trigger", readonly ["triggersTypesFile"]], readonly ["scheduler", readonly ["schedulersTypesFile"]], readonly ["queue", readonly ["queueTypesFile"]], readonly ["workflow", readonly ["workflowTypesFile"]], readonly ["scenarios", readonly ["scenarioTypesFile"]], readonly ["mcp", readonly ["mcpTypesFile"]], readonly ["agent", readonly ["agentTypesFile"]], readonly ["cli", readonly ["cliTypesFile"]], readonly ["addon", readonly ["addonTypesFile"]], readonly ["secrets", readonly ["secretTypesFile", "secretsFile"]], readonly ["credentials", readonly ["credentialsFile"]], readonly ["scopes", readonly ["scopeTypesFile"]], readonly ["variables", readonly ["variableTypesFile", "variablesFile"]], readonly ["auth", readonly ["authGuardsFile", "authTypesFile"]]];
14
+ export declare const pikkuLeafIndexes: 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>;
@@ -0,0 +1,119 @@
1
+ import { pikkuSessionlessFunc } from '#pikku/function';
2
+ import { existsSync } from 'fs';
3
+ import { readdir, rm } from 'fs/promises';
4
+ import { basename, dirname, join } from 'path';
5
+ import { writeFileInDir } from '../../../utils/file-writer.js';
6
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
7
+ import { serializeLeafIndex } from './serialize-leaf-index.js';
8
+ /**
9
+ * The entry files a wiring's leaf is reached by. An addon never generates
10
+ * the wiring leaves, so those indexes are simply absent and `#pikku/http`
11
+ * fails to resolve rather than resolving to a module missing the export.
12
+ *
13
+ * Most leaves have a single entry. `secrets` and `variables` split their definer
14
+ * from their typed-service map across two generated files, `auth` pairs its
15
+ * always-written permission surface with a better-auth wrapper only some
16
+ * projects have, and `setup` holds the application's definers or the addon's —
17
+ * a project being only ever one kind — so each entry is listed and the index
18
+ * re-exports whichever of them the project actually generated.
19
+ */
20
+ export const leafEntries = [
21
+ ['function', ['functionTypesFile']],
22
+ ['middleware', ['middlewareTypesFile']],
23
+ ['setup', ['setupTypesFile', 'addonSetupTypesFile']],
24
+ ['error', ['errorTypesFile']],
25
+ ['http', ['httpTypesFile']],
26
+ ['channel', ['channelsTypesFile']],
27
+ ['gateway', ['gatewaysTypesFile']],
28
+ ['trigger', ['triggersTypesFile']],
29
+ ['scheduler', ['schedulersTypesFile']],
30
+ ['queue', ['queueTypesFile']],
31
+ ['workflow', ['workflowTypesFile']],
32
+ ['scenarios', ['scenarioTypesFile']],
33
+ ['mcp', ['mcpTypesFile']],
34
+ ['agent', ['agentTypesFile']],
35
+ ['cli', ['cliTypesFile']],
36
+ ['addon', ['addonTypesFile']],
37
+ ['secrets', ['secretTypesFile', 'secretsFile']],
38
+ ['credentials', ['credentialsFile']],
39
+ ['scopes', ['scopeTypesFile']],
40
+ ['variables', ['variableTypesFile', 'variablesFile']],
41
+ ['auth', ['authGuardsFile', 'authTypesFile']],
42
+ ];
43
+ /**
44
+ * Leaves whose entire content is a wiring an addon has no registry to reach, so
45
+ * the addon half of the leaf would export nothing at all. They are named rather
46
+ * than inferred from what is on disk: a project that used to be an application
47
+ * still has the files an earlier run wrote, which would otherwise keep the leaf
48
+ * looking alive to `existsSync` forever.
49
+ */
50
+ const ADDON_RETIRED_LEAVES = new Set(['queue', 'scheduler', 'gateway', 'cli']);
51
+ export const pikkuLeafIndexes = pikkuSessionlessFunc({
52
+ func: async ({ logger, config }) => {
53
+ const written = new Set();
54
+ const retired = [];
55
+ for (const [leaf, keys] of leafEntries) {
56
+ const entryFiles = config.addon && ADDON_RETIRED_LEAVES.has(leaf)
57
+ ? []
58
+ : keys
59
+ .map((key) => config[key])
60
+ .filter((entryFile) => Boolean(entryFile && existsSync(entryFile)));
61
+ if (entryFiles.length === 0) {
62
+ // A leaf this project stopped generating — the wiring leaves an addon
63
+ // never gets, most often. Its directory is still full of the files an
64
+ // earlier run wrote, and tsc compiles every file in the output tree
65
+ // whether a barrel re-exports it or not, so they have to go with it.
66
+ retired.push(...keys.map((key) => config[key]).filter(Boolean));
67
+ continue;
68
+ }
69
+ const indexFile = join(dirname(entryFiles[0]), 'index.ts');
70
+ const entryImportPaths = entryFiles
71
+ .filter((entryFile) => entryFile !== indexFile)
72
+ .map((entryFile) => `./${basename(entryFile).replace(/\.ts$/, '.js')}`);
73
+ if (entryImportPaths.length === 0)
74
+ continue;
75
+ await writeFileInDir(logger, indexFile, serializeLeafIndex(leaf, entryImportPaths));
76
+ written.add(indexFile);
77
+ }
78
+ // This command owns the leaf surface outright. An index it did not write is
79
+ // one whose entry file is gone — a wiring the project stopped generating,
80
+ // or a directory that was never a leaf — and left in place it keeps
81
+ // `#pikku/<name>` resolving to a module that no longer compiles.
82
+ const outDirEntries = existsSync(config.outDir)
83
+ ? await readdir(config.outDir, { withFileTypes: true })
84
+ : [];
85
+ for (const entry of outDirEntries) {
86
+ if (!entry.isDirectory())
87
+ continue;
88
+ const indexFile = join(config.outDir, entry.name, 'index.ts');
89
+ if (written.has(indexFile) || !existsSync(indexFile))
90
+ continue;
91
+ await rm(indexFile, { force: true });
92
+ }
93
+ for (const entryFile of retired) {
94
+ await rm(entryFile, { force: true });
95
+ await rm(join(dirname(entryFile), 'index.ts'), { force: true });
96
+ }
97
+ // `console/pikku-node-types.gen.ts` held only `NodeCategory` and
98
+ // `NodeRPCName`, which nothing derived from. A project generated before it
99
+ // was dropped still has the file, and tsc compiles every file in the output
100
+ // tree whether anything re-exports it or not.
101
+ await rm(join(config.outDir, 'console', 'pikku-node-types.gen.ts'), {
102
+ force: true,
103
+ });
104
+ // `defineCredential` moved to the auth leaf, next to the permissions and
105
+ // auth gates it is declared alongside. A project generated before the move
106
+ // still has the file, and tsc compiles every file in the output tree.
107
+ await rm(join(config.outDir, 'credentials', 'pikku-credential-types.gen.ts'), { force: true });
108
+ // The re-export hub every leaf now replaces. A project generated before the
109
+ // split still has it, and it would keep resolving `#pikku` while pulling in
110
+ // every wiring's core dependencies.
111
+ await rm(join(config.outDir, 'pikku-types.gen.ts'), { force: true });
112
+ },
113
+ middleware: [
114
+ logCommandInfoAndTime({
115
+ commandStart: 'Creating leaf subpath entries',
116
+ commandEnd: 'Created leaf subpath entries',
117
+ }),
118
+ ],
119
+ });
@@ -1,2 +1,2 @@
1
1
  export declare const serializeServicesMap: (allSingletonServices: string[], allWireServices: string[], requiredServices: Set<string>, forceRequiredServices: string[] | undefined, servicesImport: string, wireServicesImport: string, addonRequiredParentServices?: string[], authInjected?: boolean, agentScaffoldEnabled?: boolean) => string;
2
- export declare const pikkuServices: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
2
+ export declare const pikkuServices: 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,5 @@
1
- import { pikkuSessionlessFunc } from '#pikku';
1
+ import { pikkuSessionlessFunc } from '#pikku/function';
2
+ import { ErrorCode } from '@pikku/inspector';
2
3
  import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
4
  import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
5
  import { writeFileInDir } from '../../../utils/file-writer.js';
@@ -116,8 +117,22 @@ export const pikkuServices = pikkuSessionlessFunc({
116
117
  if (!wireServicesType || !singletonServicesType) {
117
118
  throw new Error('Required types not found: wireServicesType or singletonServicesType');
118
119
  }
119
- const servicesImport = `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(config.typesDeclarationFile, singletonServicesType.typePath, config.packageMappings)}'`;
120
- const wireServicesImport = `import type { ${wireServicesType.type} } from '${getFileImportRelativePath(config.typesDeclarationFile, wireServicesType.typePath, config.packageMappings)}'`;
120
+ // `SingletonServices` always carries the framework's own singletons, so an
121
+ // empty list is never a project with no services it is the inspector's
122
+ // program failing to resolve the type, usually because a `#pikku/*` leaf it
123
+ // imports does not exist yet. Written out, every service becomes optional in
124
+ // `RequiredSingletonServices`, and the failure resurfaces as dozens of
125
+ // unrelated "possibly undefined" errors in files nobody touched.
126
+ if (visitState.serviceAggregation.allSingletonServices.length === 0) {
127
+ throw new Error(`[${ErrorCode.SINGLETON_SERVICES_TYPE_UNRESOLVED}] '${singletonServicesType.type}' resolved to no services at all, which means it did not resolve.\n` +
128
+ `Declared in ${singletonServicesType.typePath}.\n\n` +
129
+ 'This is usually a stale or partial generated tree: a source file imports a ' +
130
+ '`#pikku/*` leaf that the current output no longer writes, so the type it ' +
131
+ 'feeds resolves to an error type. Delete the output directory and re-run to ' +
132
+ 'rebuild it from scratch.');
133
+ }
134
+ const servicesImport = `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(config.servicesFile, singletonServicesType.typePath, config.packageMappings)}'`;
135
+ const wireServicesImport = `import type { ${wireServicesType.type} } from '${getFileImportRelativePath(config.servicesFile, wireServicesType.typePath, config.packageMappings)}'`;
121
136
  const servicesCode = serializeServicesMap(visitState.serviceAggregation.allSingletonServices, visitState.serviceAggregation.allWireServices, visitState.serviceAggregation.requiredServices, config.forceRequiredServices, servicesImport, wireServicesImport, config.addonName ? visitState.addonRequiredParentServices : [], Boolean(visitState.auth?.definition), Boolean(config.scaffold?.agent));
122
137
  await writeFileInDir(logger, config.servicesFile, servicesCode);
123
138
  },
@@ -1 +1 @@
1
- export declare const pikkuSchemas: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, boolean | undefined, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
1
+ export declare const pikkuSchemas: import("#pikku/function").PikkuFunctionConfig<void, boolean | undefined, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<void, boolean | undefined, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<void, boolean | undefined, "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 { saveSchemas } from '../../../utils/serialize-schemas.js';
3
3
  import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
4
4
  import { partitionRequiredSchemas } from '../scenarios/scenario-schema-partition.js';
@@ -1 +1,14 @@
1
+ /**
2
+ * The install side of `#pikku/addon`, written for an application rather than an
3
+ * addon. Installing an addon and authoring one are the same concept approached
4
+ * from opposite ends, and a project is only ever one of the two — but they
5
+ * cannot share a tree, because a runtime template maps `#pikku/*` onto a
6
+ * sibling package through tsconfig `paths`, and `paths` are global to a tsx
7
+ * process rather than scoped to the package that declared them. A linked
8
+ * addon's leaves would otherwise resolve against the host application's, so an
9
+ * addon generates its whole tree one level down and authors against
10
+ * `#pikku/addon/<leaf>` — a depth at which an application has nothing to match,
11
+ * leaving the resolver to fall back to Node's per-package `imports`.
12
+ */
13
+ export declare const serializeAddonInstallTypes: () => string;
1
14
  export declare const serializeAddonTypes: (singletonServicesTypeImport: string, singletonServicesTypeName: string, configTypeImport: string, requiredServicesTypeImport: string, typedSecretServiceImport: string, typedVariablesServiceImport: string, typedCredentialServiceImport?: string | null) => string;