@pikku/cli 0.12.127 → 0.12.133

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 (289) hide show
  1. package/CHANGELOG.md +322 -0
  2. package/console-app/assets/{abnfDiagram-N423BO3Z-BY2LM8wi.js → abnfDiagram-N423BO3Z-BQPUva28.js} +1 -1
  3. package/console-app/assets/architecture-TIHT7OUA-G_ldr-C2.js +1 -0
  4. package/console-app/assets/{architectureDiagram-T3A2C74G-CeqjY3Kw.js → architectureDiagram-T3A2C74G-Cjzy66o9.js} +1 -1
  5. package/console-app/assets/{blockDiagram-VBNYF7ZC-BW5174xj.js → blockDiagram-VBNYF7ZC-DVasSXpX.js} +1 -1
  6. package/console-app/assets/{c4Diagram-5PPSVZJV-B7zXAFL0.js → c4Diagram-5PPSVZJV-FB0YMoOr.js} +1 -1
  7. package/console-app/assets/channel-CuDpOUYn.js +1 -0
  8. package/console-app/assets/{chunk-2GRJ4B5K-BfRYzQ4t.js → chunk-2GRJ4B5K-BLGsmyy4.js} +1 -1
  9. package/console-app/assets/{chunk-4I5QYGJK-DBA7-Nu4.js → chunk-4I5QYGJK-DCgTj78f.js} +1 -1
  10. package/console-app/assets/{chunk-5RXB4S5H-D03lNzwi.js → chunk-5RXB4S5H-CX9hS68x.js} +1 -1
  11. package/console-app/assets/{chunk-6Q2QTUOP-DloGRHJZ.js → chunk-6Q2QTUOP-xrgFRP4Y.js} +1 -1
  12. package/console-app/assets/{chunk-7Z6QIM7H-DH3uHtl2.js → chunk-7Z6QIM7H-CbBMe7ej.js} +1 -1
  13. package/console-app/assets/{chunk-GF5L2VYU-Cu252lza.js → chunk-GF5L2VYU-BXraqZ7w.js} +1 -1
  14. package/console-app/assets/{chunk-I66GZJ75-DH54FcuO.js → chunk-I66GZJ75-CbpQtX8e.js} +1 -1
  15. package/console-app/assets/{chunk-JQJVKLGR-CeFuTL-V.js → chunk-JQJVKLGR-Cp9FHSH6.js} +1 -1
  16. package/console-app/assets/{chunk-KBJHAD2P-B-prFo0-.js → chunk-KBJHAD2P-Brvmen34.js} +1 -1
  17. package/console-app/assets/{chunk-NSK5VX7P-C10iA4GS.js → chunk-NSK5VX7P-Bo-dbDZD.js} +1 -1
  18. package/console-app/assets/{chunk-QR6OTTB3-Cd8apAsA.js → chunk-QR6OTTB3-B5Al5KEo.js} +1 -1
  19. package/console-app/assets/{chunk-RYQCIY6F-rfPUp2Fj.js → chunk-RYQCIY6F-WOZyn5It.js} +1 -1
  20. package/console-app/assets/{chunk-UBXNYLIW-D25wqJBc.js → chunk-UBXNYLIW-D9OoHV5X.js} +1 -1
  21. package/console-app/assets/{chunk-W5SLKNZC-CJvxkxuK.js → chunk-W5SLKNZC-BNTcVpi3.js} +1 -1
  22. package/console-app/assets/{chunk-WRU74C26-B9Wju92P.js → chunk-WRU74C26-DXijYjrx.js} +1 -1
  23. package/console-app/assets/chunk-XXDRQBXY-DRMEt0Gf.js +1 -0
  24. package/console-app/assets/classDiagram-JCYQIIEL-Bjgk6QkN.js +1 -0
  25. package/console-app/assets/classDiagram-v2-OCEON4UE-Bjgk6QkN.js +1 -0
  26. package/console-app/assets/{cose-bilkent-JH36ORCC-CwA1VCP5.js → cose-bilkent-JH36ORCC-CPN5VkQC.js} +1 -1
  27. package/console-app/assets/{cynefin-VYW2F7L2-C_qsD7eR.js → cynefin-VYW2F7L2-CuBPO3Z0.js} +1 -1
  28. package/console-app/assets/{cynefinDiagram-MW4NZA55-CkSLreFW.js → cynefinDiagram-MW4NZA55-BYc2PGXv.js} +1 -1
  29. package/console-app/assets/{dagre-WqgBlKb7.js → dagre-7HV9Jfb_.js} +1 -1
  30. package/console-app/assets/{dagre-VZM6K2ZE-0ssqLoHs.js → dagre-VZM6K2ZE-BpPyuM7i.js} +1 -1
  31. package/console-app/assets/{diagram-7IWD3JNH-DmRL3lmL.js → diagram-7IWD3JNH-DTH9ID9z.js} +1 -1
  32. package/console-app/assets/{diagram-B4RE2ZJO-Bsr9wG4I.js → diagram-B4RE2ZJO-DwZb9gPm.js} +1 -1
  33. package/console-app/assets/{diagram-LBJQPF4R-DdMw1FSY.js → diagram-LBJQPF4R-DfvBayzk.js} +1 -1
  34. package/console-app/assets/{diagram-Q27KOJAE-TPx5TB2B.js → diagram-Q27KOJAE-hksFpSxs.js} +1 -1
  35. package/console-app/assets/{diagram-UB23O5K3-e_1zSlZR.js → diagram-UB23O5K3-5hEVCouO.js} +1 -1
  36. package/console-app/assets/{ebnfDiagram-BXEA7PRR-BACajh2b.js → ebnfDiagram-BXEA7PRR-D0v6RJvf.js} +1 -1
  37. package/console-app/assets/{erDiagram-JOGREHBK-CojomKqL.js → erDiagram-JOGREHBK-DGps-M4l.js} +1 -1
  38. package/console-app/assets/eventmodeling-45OFAUF4-DWRslJcU.js +1 -0
  39. package/console-app/assets/flowDiagram-UKHOOZJN-CE3qN_pH.js +1 -0
  40. package/console-app/assets/{ganttDiagram-PKOTCBZU-yoOX4Xj2.js → ganttDiagram-PKOTCBZU-Dok7ME1t.js} +1 -1
  41. package/console-app/assets/{gitGraph-TEB2WS4Q-BcUY5hIc.js → gitGraph-TEB2WS4Q-8492lYYh.js} +1 -1
  42. package/console-app/assets/{gitGraphDiagram-DS77QQ5N-BtuIPjuB.js → gitGraphDiagram-DS77QQ5N-sPOnBy5f.js} +1 -1
  43. package/console-app/assets/{index-CzWW052c.js → index-DqNqujdF.js} +184 -184
  44. package/console-app/assets/{info-DKCQHKI2-B-iR9PUz.js → info-DKCQHKI2-U4uEmX4H.js} +1 -1
  45. package/console-app/assets/{infoDiagram-6WML65LV-CuXKIFH2.js → infoDiagram-6WML65LV-CNV12_Nx.js} +1 -1
  46. package/console-app/assets/{ishikawaDiagram-WSZJBQD7-CSueMFD6.js → ishikawaDiagram-WSZJBQD7-CcnTBGLj.js} +1 -1
  47. package/console-app/assets/{journeyDiagram-NVQOT4AX-kvnKStZp.js → journeyDiagram-NVQOT4AX-MX-UQBJ7.js} +1 -1
  48. package/console-app/assets/{kanban-definition-27J2QSJJ-CGGDEz30.js → kanban-definition-27J2QSJJ-BXh1Eu4D.js} +1 -1
  49. package/console-app/assets/{line-mtMM5-xO.js → line-2B2dlQbw.js} +1 -1
  50. package/console-app/assets/{linear-CLSje0O_.js → linear-DAVRH-Dp.js} +1 -1
  51. package/console-app/assets/{mermaid-parser.core-Cx6yvn3j.js → mermaid-parser.core-DxPo1qbR.js} +3 -3
  52. package/console-app/assets/{mermaid.core-BebGyklS.js → mermaid.core-DpvXaF3y.js} +4 -4
  53. package/console-app/assets/{mindmap-definition-FAOFIHXS-C2_WUUJ9.js → mindmap-definition-FAOFIHXS-wIEKn4qe.js} +1 -1
  54. package/console-app/assets/{packet-7NZHBO7P-Dh5yNCA8.js → packet-7NZHBO7P-CXySycDQ.js} +1 -1
  55. package/console-app/assets/{pegDiagram-VL7TDLO6-XgUxesi8.js → pegDiagram-VL7TDLO6-CDGkzO6q.js} +1 -1
  56. package/console-app/assets/{pie-RZYD4A2V-D2x2RAXI.js → pie-RZYD4A2V-9woSahH7.js} +1 -1
  57. package/console-app/assets/{pieDiagram-7S7Q4E2Y-Bbor0KbG.js → pieDiagram-7S7Q4E2Y-DLoZWnVF.js} +1 -1
  58. package/console-app/assets/{quadrantDiagram-CIZ2JOQS-DZmnMHpM.js → quadrantDiagram-CIZ2JOQS-NBGRoga7.js} +1 -1
  59. package/console-app/assets/{radar-I7S5WNFK-CPeriDtN.js → radar-I7S5WNFK-BYhW66ZA.js} +1 -1
  60. package/console-app/assets/{railroad-3IZDKUUU-2iKAyaie.js → railroad-3IZDKUUU-BqHXlwF5.js} +1 -1
  61. package/console-app/assets/railroad-abnf-AHOZXSZD-BfGOy69e.js +1 -0
  62. package/console-app/assets/railroad-ebnf-EBAXGLYW-BbGv9WfS.js +1 -0
  63. package/console-app/assets/railroad-peg-LSFZ7HO6-CCiPI8BL.js +1 -0
  64. package/console-app/assets/{railroadDiagram-AXF67PYL-DVEqCXoo.js → railroadDiagram-AXF67PYL-FYQaHJ6A.js} +1 -1
  65. package/console-app/assets/{requirementDiagram-LRYGKXZP-CSgSNL8p.js → requirementDiagram-LRYGKXZP-ihhW1kgC.js} +1 -1
  66. package/console-app/assets/{sankeyDiagram-W5VNT64P-CFk11odN.js → sankeyDiagram-W5VNT64P-Dw2EbW8v.js} +1 -1
  67. package/console-app/assets/{sequenceDiagram-SI44F4Z6-Cb5u6FsJ.js → sequenceDiagram-SI44F4Z6-C6i_U4QX.js} +1 -1
  68. package/console-app/assets/{src-LceHEY_Q.js → src-DF-84qwJ.js} +1 -1
  69. package/console-app/assets/{stateDiagram-OKZ733FA-DM1jWlkU.js → stateDiagram-OKZ733FA-xH4wcMO4.js} +1 -1
  70. package/console-app/assets/stateDiagram-v2-UEYNNEHI-BJln5PLd.js +1 -0
  71. package/console-app/assets/{swimlanes-SLNWSIFB-DD6MchlE.js → swimlanes-SLNWSIFB-CkFlU1Qc.js} +1 -1
  72. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-CSLhmtbh.js +8 -0
  73. package/console-app/assets/{timeline-definition-Z64GVDOM-zu5cNnVv.js → timeline-definition-Z64GVDOM-BQE9-7mm.js} +1 -1
  74. package/console-app/assets/{treeView-QDETBFTQ-D_4IbvCG.js → treeView-QDETBFTQ-C4hse2Wn.js} +1 -1
  75. package/console-app/assets/{treemap-6X3UGDF4-DNc6bjUc.js → treemap-6X3UGDF4-Bi7ORgq6.js} +1 -1
  76. package/console-app/assets/{vennDiagram-T6HMQDX7-DfqoG28f.js → vennDiagram-T6HMQDX7-DbUdNREA.js} +1 -1
  77. package/console-app/assets/{wardley-OPB4EBWU-BqpI2Lx-.js → wardley-OPB4EBWU-BHqXIxRe.js} +1 -1
  78. package/console-app/assets/{wardleyDiagram-T6FBY63Y-CLIZSvNi.js → wardleyDiagram-T6FBY63Y-1VOvM_bb.js} +1 -1
  79. package/console-app/assets/{xychartDiagram-ELKLHX3M-Cni-XXa6.js → xychartDiagram-ELKLHX3M-C3DVfSR9.js} +1 -1
  80. package/console-app/index.html +1 -1
  81. package/dist/.pikku/addon/index.d.ts +1 -1
  82. package/dist/.pikku/addon/index.js +1 -1
  83. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
  84. package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
  85. package/dist/.pikku/agent/index.d.ts +1 -1
  86. package/dist/.pikku/agent/index.js +1 -1
  87. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  88. package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
  89. package/dist/.pikku/auth/index.d.ts +1 -1
  90. package/dist/.pikku/auth/index.js +1 -1
  91. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
  92. package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
  93. package/dist/.pikku/channel/index.d.ts +1 -1
  94. package/dist/.pikku/channel/index.js +1 -1
  95. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  96. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  97. package/dist/.pikku/cli/index.d.ts +1 -1
  98. package/dist/.pikku/cli/index.js +1 -1
  99. package/dist/.pikku/cli/pikku-cli-channel.js +36 -1
  100. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  101. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  102. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
  103. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
  104. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.json +21 -0
  105. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  106. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  107. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  108. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +122 -1
  109. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  110. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  111. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  112. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  113. package/dist/.pikku/error/index.d.ts +1 -1
  114. package/dist/.pikku/error/index.js +1 -1
  115. package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
  116. package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
  117. package/dist/.pikku/function/index.d.ts +1 -1
  118. package/dist/.pikku/function/index.js +1 -1
  119. package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
  120. package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
  121. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  122. package/dist/.pikku/function/pikku-functions-meta.gen.json +137 -6
  123. package/dist/.pikku/function/pikku-functions.gen.js +1 -1
  124. package/dist/.pikku/gateway/index.d.ts +1 -1
  125. package/dist/.pikku/gateway/index.js +1 -1
  126. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
  127. package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
  128. package/dist/.pikku/http/index.d.ts +1 -1
  129. package/dist/.pikku/http/index.js +1 -1
  130. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  131. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  132. package/dist/.pikku/mcp/index.d.ts +1 -1
  133. package/dist/.pikku/mcp/index.js +1 -1
  134. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  135. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  136. package/dist/.pikku/middleware/index.d.ts +1 -1
  137. package/dist/.pikku/middleware/index.js +1 -1
  138. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
  139. package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
  140. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
  141. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
  142. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  143. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  144. package/dist/.pikku/pikku-services.gen.d.ts +1 -1
  145. package/dist/.pikku/queue/index.d.ts +1 -1
  146. package/dist/.pikku/queue/index.js +1 -1
  147. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  148. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  149. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
  150. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  151. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  152. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  153. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +7 -0
  154. package/dist/.pikku/scenarios/index.d.ts +1 -1
  155. package/dist/.pikku/scenarios/index.js +1 -1
  156. package/dist/.pikku/scenarios/pikku-personas.gen.js +1 -1
  157. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
  158. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
  159. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
  160. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
  161. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
  162. package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
  163. package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
  164. package/dist/.pikku/scheduler/index.d.ts +1 -1
  165. package/dist/.pikku/scheduler/index.js +1 -1
  166. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  167. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  168. package/dist/.pikku/schemas/register.gen.js +27 -1
  169. package/dist/.pikku/schemas/schemas/FabricSecretsDeleteInput.schema.json +1 -0
  170. package/dist/.pikku/schemas/schemas/FabricSecretsDeleteOutput.schema.json +1 -0
  171. package/dist/.pikku/schemas/schemas/KnowledgePlanDeferInput.schema.json +1 -0
  172. package/dist/.pikku/schemas/schemas/KnowledgePlanDeferOutput.schema.json +1 -0
  173. package/dist/.pikku/schemas/schemas/KnowledgePlanProgressInput.schema.json +1 -0
  174. package/dist/.pikku/schemas/schemas/KnowledgePlanProgressOutput.schema.json +1 -0
  175. package/dist/.pikku/schemas/schemas/KnowledgePlanSchemaInput.schema.json +1 -0
  176. package/dist/.pikku/schemas/schemas/KnowledgePlanSchemaOutput.schema.json +1 -0
  177. package/dist/.pikku/schemas/schemas/KnowledgePlanSetInput.schema.json +1 -0
  178. package/dist/.pikku/schemas/schemas/KnowledgePlanSetOutput.schema.json +1 -0
  179. package/dist/.pikku/schemas/schemas/KnowledgePlanShowInput.schema.json +1 -0
  180. package/dist/.pikku/schemas/schemas/KnowledgePlanShowOutput.schema.json +1 -0
  181. package/dist/.pikku/schemas/schemas/PikkuDistInput.schema.json +1 -0
  182. package/dist/.pikku/schemas/schemas/PikkuNewAddonInput.schema.json +1 -1
  183. package/dist/.pikku/scopes/index.d.ts +1 -1
  184. package/dist/.pikku/scopes/index.js +1 -1
  185. package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
  186. package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
  187. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
  188. package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
  189. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
  190. package/dist/.pikku/secrets/index.d.ts +1 -1
  191. package/dist/.pikku/secrets/index.js +1 -1
  192. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  193. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  194. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  195. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  196. package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
  197. package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
  198. package/dist/.pikku/setup/index.d.ts +1 -1
  199. package/dist/.pikku/setup/index.js +1 -1
  200. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
  201. package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
  202. package/dist/.pikku/trigger/index.d.ts +1 -1
  203. package/dist/.pikku/trigger/index.js +1 -1
  204. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  205. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  206. package/dist/.pikku/variables/index.d.ts +1 -1
  207. package/dist/.pikku/variables/index.js +1 -1
  208. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  209. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  210. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  211. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  212. package/dist/.pikku/workflow/index.d.ts +1 -1
  213. package/dist/.pikku/workflow/index.js +1 -1
  214. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  215. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  216. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  217. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  218. package/dist/bin/pikku-bin.mjs +2 -2
  219. package/dist/src/cli.wiring.js +63 -1
  220. package/dist/src/deploy/analyzer/analyzer.js +42 -6
  221. package/dist/src/deploy/build-pipeline.js +92 -4
  222. package/dist/src/deploy/codegen/per-unit-codegen.d.ts +10 -0
  223. package/dist/src/deploy/codegen/per-unit-codegen.js +12 -1
  224. package/dist/src/deploy/server-entry.js +14 -1
  225. package/dist/src/fabric/fabric-commands.d.ts +25 -0
  226. package/dist/src/fabric/fabric-commands.js +13 -0
  227. package/dist/src/fabric/functions/secrets-delete.function.d.ts +36 -0
  228. package/dist/src/fabric/functions/secrets-delete.function.js +51 -0
  229. package/dist/src/functions/commands/dev.js +2 -1
  230. package/dist/src/functions/commands/dist.d.ts +28 -0
  231. package/dist/src/functions/commands/dist.js +58 -0
  232. package/dist/src/functions/commands/knowledge-plan.d.ts +112 -0
  233. package/dist/src/functions/commands/knowledge-plan.js +35 -0
  234. package/dist/src/functions/commands/new-addon.d.ts +30 -0
  235. package/dist/src/functions/commands/new-addon.js +81 -3
  236. package/dist/src/functions/commands/persona-sync.d.ts +5 -4
  237. package/dist/src/functions/commands/persona-sync.js +6 -5
  238. package/dist/src/functions/commands/persona.js +6 -2
  239. package/dist/src/functions/db/local-db.d.ts +1 -1
  240. package/dist/src/functions/db/local-db.js +5 -5
  241. package/dist/src/functions/db/postgres/postgres-introspector.js +1 -1
  242. package/dist/src/functions/db/sqlite/dev-seed.d.ts +1 -1
  243. package/dist/src/functions/db/sqlite/sqlite-introspector.d.ts +1 -1
  244. package/dist/src/functions/db/sqlite/sqlite-introspector.js +1 -1
  245. package/dist/src/functions/db/sqlite/sqlite-kysely.d.ts +1 -1
  246. package/dist/src/functions/knowledge/render.d.ts +6 -1
  247. package/dist/src/functions/knowledge/render.js +74 -0
  248. package/dist/src/functions/knowledge/schemas.d.ts +45 -0
  249. package/dist/src/functions/knowledge/schemas.js +11 -1
  250. package/dist/src/functions/surface/surface-editorial.js +12 -12
  251. package/dist/src/functions/validate/auth-plugin-checks.js +3 -2
  252. package/dist/src/functions/validate/persona-checks.js +2 -1
  253. package/dist/src/functions/validate/shared-checks.js +1 -1
  254. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.d.ts +1 -1
  255. package/dist/src/functions/wirings/realtime/serialize-events-scaffold.js +2 -2
  256. package/dist/src/utils/persona-credentials.d.ts +0 -2
  257. package/dist/src/utils/persona-credentials.js +1 -8
  258. package/dist/tsconfig.tsbuildinfo +1 -1
  259. package/package.json +11 -10
  260. package/snippets.json +1 -1
  261. package/surface.json +1245 -4866
  262. package/console-app/assets/architecture-TIHT7OUA-CWwmvxZF.js +0 -1
  263. package/console-app/assets/channel-pOkwZ_Ot.js +0 -1
  264. package/console-app/assets/chunk-XXDRQBXY-BU_UP6f5.js +0 -1
  265. package/console-app/assets/classDiagram-JCYQIIEL-CLBKUuxj.js +0 -1
  266. package/console-app/assets/classDiagram-v2-OCEON4UE-CLBKUuxj.js +0 -1
  267. package/console-app/assets/eventmodeling-45OFAUF4-DkN2KCrT.js +0 -1
  268. package/console-app/assets/flowDiagram-UKHOOZJN-DL0M9lBc.js +0 -1
  269. package/console-app/assets/railroad-abnf-AHOZXSZD-D26xz4MM.js +0 -1
  270. package/console-app/assets/railroad-ebnf-EBAXGLYW-CCAiMPWc.js +0 -1
  271. package/console-app/assets/railroad-peg-LSFZ7HO6-BA1zcisq.js +0 -1
  272. package/console-app/assets/stateDiagram-v2-UEYNNEHI-COVnPYic.js +0 -1
  273. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-B5q8iRCQ.js +0 -8
  274. package/dist/src/functions/db/db-migrator.d.ts +0 -63
  275. package/dist/src/functions/db/db-migrator.js +0 -136
  276. package/dist/src/functions/db/migration-identifiers.d.ts +0 -58
  277. package/dist/src/functions/db/migration-identifiers.js +0 -262
  278. package/dist/src/functions/db/postgres/postgres-migrator.d.ts +0 -15
  279. package/dist/src/functions/db/postgres/postgres-migrator.js +0 -40
  280. package/dist/src/functions/db/schema-sql.d.ts +0 -43
  281. package/dist/src/functions/db/schema-sql.js +0 -135
  282. package/dist/src/functions/db/sqlite/sqlite-migrator.d.ts +0 -11
  283. package/dist/src/functions/db/sqlite/sqlite-migrator.js +0 -41
  284. package/dist/src/functions/db/sqlite/sqlite-runtime-bun.d.ts +0 -2
  285. package/dist/src/functions/db/sqlite/sqlite-runtime-bun.js +0 -62
  286. package/dist/src/functions/db/sqlite/sqlite-runtime-node.d.ts +0 -2
  287. package/dist/src/functions/db/sqlite/sqlite-runtime-node.js +0 -78
  288. package/dist/src/functions/db/sqlite/sqlite-runtime.d.ts +0 -20
  289. package/dist/src/functions/db/sqlite/sqlite-runtime.js +0 -13
@@ -0,0 +1,112 @@
1
+ import { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow } from '../knowledge/render.js';
2
+ export declare const knowledgePlanSchema: import("#pikku/function").PikkuFunctionConfig<Record<string, never>, {
3
+ schema: string;
4
+ }, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<Record<string, never>, {
5
+ schema: string;
6
+ }, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<Record<string, never>, {
7
+ schema: string;
8
+ }, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
9
+ export declare const knowledgePlanShow: import("#pikku/function").PikkuFunctionConfig<{
10
+ milestone: string;
11
+ forBuild?: boolean | undefined;
12
+ }, {
13
+ ok: boolean;
14
+ path: string;
15
+ body: string;
16
+ }, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
17
+ milestone: string;
18
+ forBuild?: boolean | undefined;
19
+ }, {
20
+ ok: boolean;
21
+ path: string;
22
+ body: string;
23
+ }, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
24
+ milestone: string;
25
+ forBuild?: boolean | undefined;
26
+ }, {
27
+ ok: boolean;
28
+ path: string;
29
+ body: string;
30
+ }, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
31
+ export declare const knowledgePlanProgress: import("#pikku/function").PikkuFunctionConfig<{
32
+ milestone: string;
33
+ }, {
34
+ ok: boolean;
35
+ path: string;
36
+ message: string;
37
+ done: string[];
38
+ missing: string[];
39
+ deferred: string[];
40
+ problems: string[];
41
+ }, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
42
+ milestone: string;
43
+ }, {
44
+ ok: boolean;
45
+ path: string;
46
+ message: string;
47
+ done: string[];
48
+ missing: string[];
49
+ deferred: string[];
50
+ problems: string[];
51
+ }, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
52
+ milestone: string;
53
+ }, {
54
+ ok: boolean;
55
+ path: string;
56
+ message: string;
57
+ done: string[];
58
+ missing: string[];
59
+ deferred: string[];
60
+ problems: string[];
61
+ }, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
62
+ export declare const knowledgePlanSet: import("#pikku/function").PikkuFunctionConfig<{
63
+ milestone: string;
64
+ file: string;
65
+ }, {
66
+ ok: boolean;
67
+ path: string;
68
+ problems: string[];
69
+ schema?: string | undefined;
70
+ }, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
71
+ milestone: string;
72
+ file: string;
73
+ }, {
74
+ ok: boolean;
75
+ path: string;
76
+ problems: string[];
77
+ schema?: string | undefined;
78
+ }, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
79
+ milestone: string;
80
+ file: string;
81
+ }, {
82
+ ok: boolean;
83
+ path: string;
84
+ problems: string[];
85
+ schema?: string | undefined;
86
+ }, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
87
+ export declare const knowledgePlanDefer: import("#pikku/function").PikkuFunctionConfig<{
88
+ milestone: string;
89
+ item: string;
90
+ reason: string;
91
+ }, {
92
+ ok: boolean;
93
+ path: string;
94
+ message: string;
95
+ }, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
96
+ milestone: string;
97
+ item: string;
98
+ reason: string;
99
+ }, {
100
+ ok: boolean;
101
+ path: string;
102
+ message: string;
103
+ }, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
104
+ milestone: string;
105
+ item: string;
106
+ reason: string;
107
+ }, {
108
+ ok: boolean;
109
+ path: string;
110
+ message: string;
111
+ }, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
112
+ export { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow, };
@@ -0,0 +1,35 @@
1
+ import { pikkuSessionlessFunc } from '#pikku/function';
2
+ import { runKnowledgePlanDefer, runKnowledgePlanProgress, runKnowledgePlanSchema, runKnowledgePlanSet, runKnowledgePlanShow, } from '@pikku/knowledge';
3
+ import { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow, } from '../knowledge/render.js';
4
+ import { KnowledgePlanDeferInputSchema, KnowledgePlanDeferOutputSchema, KnowledgePlanProgressInputSchema, KnowledgePlanProgressOutputSchema, KnowledgePlanSchemaInputSchema, KnowledgePlanSchemaOutputSchema, KnowledgePlanSetInputSchema, KnowledgePlanSetOutputSchema, KnowledgePlanShowInputSchema, KnowledgePlanShowOutputSchema, } from '../knowledge/schemas.js';
5
+ export const knowledgePlanSchema = pikkuSessionlessFunc({
6
+ description: 'Print the plan schema, so a plan is written against what is actually enforced rather than guessed at.',
7
+ input: KnowledgePlanSchemaInputSchema,
8
+ output: KnowledgePlanSchemaOutputSchema,
9
+ func: async () => runKnowledgePlanSchema(),
10
+ });
11
+ export const knowledgePlanShow = pikkuSessionlessFunc({
12
+ description: "Print a milestone's plan, either as it is stored or as the ordered list of work a build follows.",
13
+ input: KnowledgePlanShowInputSchema,
14
+ output: KnowledgePlanShowOutputSchema,
15
+ func: async ({ config }, input) => runKnowledgePlanShow(config.rootDir, input),
16
+ });
17
+ export const knowledgePlanProgress = pikkuSessionlessFunc({
18
+ description: "Reconcile a milestone's plan against the generated meta and say what is still owed, so a milestone closes on what exists rather than on what was claimed.",
19
+ input: KnowledgePlanProgressInputSchema,
20
+ output: KnowledgePlanProgressOutputSchema,
21
+ func: async ({ config }, input) => runKnowledgePlanProgress(config.rootDir, input),
22
+ });
23
+ export const knowledgePlanSet = pikkuSessionlessFunc({
24
+ description: 'Validate a plan against its milestone note and write it, or write nothing and say what is wrong.',
25
+ input: KnowledgePlanSetInputSchema,
26
+ output: KnowledgePlanSetOutputSchema,
27
+ func: async ({ config }, input) => runKnowledgePlanSet(config.rootDir, input),
28
+ });
29
+ export const knowledgePlanDefer = pikkuSessionlessFunc({
30
+ description: 'Move one first-pass item to the next pass with the reason on the record, so it stops blocking the milestone.',
31
+ input: KnowledgePlanDeferInputSchema,
32
+ output: KnowledgePlanDeferOutputSchema,
33
+ func: async ({ config }, input) => runKnowledgePlanDefer(config.rootDir, input),
34
+ });
35
+ export { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow, };
@@ -28,6 +28,33 @@ export declare function getAddonFiles(vars: AddonVars, flags: {
28
28
  delegated?: boolean;
29
29
  }): Record<string, string>;
30
30
  export declare function getTestFiles(vars: AddonVars): Record<string, string>;
31
+ /**
32
+ * Does `root`'s `workspaces` field cover `dir`?
33
+ *
34
+ * Declaring workspaces is not enough — a root with `packages/*` does not own an
35
+ * addon written to `addons/crm`, and yarn, npm and pnpm all skip a nested
36
+ * package they were never told about.
37
+ */
38
+ export declare function workspaceCovers(root: string, dir: string): boolean;
39
+ /**
40
+ * An addon that has not been built is dead at runtime.
41
+ *
42
+ * The generated package exports `./dist/...` — that is what an installed
43
+ * consumer resolves, and what the app's own `pikku-bootstrap.gen.ts` imports.
44
+ * Until `build` has run, every `ref('<addon>:...')` resolves to nothing and the
45
+ * app fails at boot with PKU340 plus an ERR_MODULE_NOT_FOUND on a dist path
46
+ * nobody wrote. Nothing about the generated files shows the problem, so the
47
+ * generator finishes the job: install at the root that owns the lockfile, then
48
+ * run the addon's own `build` script (whose `prebuild` is `pikku all`).
49
+ */
50
+ export type AddonBuildRunner = (command: string, args: string[], cwd: string) => {
51
+ status: number | null;
52
+ error?: Error;
53
+ };
54
+ export declare const buildGeneratedAddon: (addonDir: string, logger: {
55
+ info: (message: string) => void;
56
+ error: (message: string) => void;
57
+ }, run?: AddonBuildRunner) => boolean;
31
58
  export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfig<{
32
59
  name: string;
33
60
  displayName?: string;
@@ -43,6 +70,7 @@ export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfi
43
70
  authConfig?: string;
44
71
  mcp?: boolean;
45
72
  camelCase?: boolean;
73
+ build?: boolean;
46
74
  }, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
47
75
  name: string;
48
76
  displayName?: string;
@@ -58,6 +86,7 @@ export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfi
58
86
  authConfig?: string;
59
87
  mcp?: boolean;
60
88
  camelCase?: boolean;
89
+ build?: boolean;
61
90
  }, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
62
91
  name: string;
63
92
  displayName?: string;
@@ -73,4 +102,5 @@ export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfi
73
102
  authConfig?: string;
74
103
  mcp?: boolean;
75
104
  camelCase?: boolean;
105
+ build?: boolean;
76
106
  }, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,6 +1,8 @@
1
1
  import { existsSync, readFileSync } from 'fs';
2
- import { dirname, join } from 'path';
2
+ import { dirname, join, relative as relativePath, sep } from 'path';
3
3
  import { mkdir, writeFile } from 'fs/promises';
4
+ import { spawnSync } from 'node:child_process';
5
+ import { findInstallRoot } from './update.js';
4
6
  import { createEmptyManifest, saveManifest, } from '../../utils/contract-versions.js';
5
7
  import { pikkuSessionlessFunc } from '#pikku/function';
6
8
  import { parseOpenAPISpec, computeContractHash, generateAddonFromOpenAPI, loadAuthConfig, } from '@pikku/openapi-parser';
@@ -159,7 +161,7 @@ export function getAddonFiles(vars, flags) {
159
161
  scripts: {
160
162
  prepublishOnly: 'yarn build',
161
163
  prebuild: 'pikku all',
162
- build: 'tsc && cp -r .pikku types dist/',
164
+ build: 'tsc && pikku dist',
163
165
  pikku: 'pikku all',
164
166
  },
165
167
  peerDependencies: {
@@ -851,8 +853,81 @@ async function writeFiles(baseDir, files) {
851
853
  }
852
854
  return written;
853
855
  }
856
+ /**
857
+ * Does `root`'s `workspaces` field cover `dir`?
858
+ *
859
+ * Declaring workspaces is not enough — a root with `packages/*` does not own an
860
+ * addon written to `addons/crm`, and yarn, npm and pnpm all skip a nested
861
+ * package they were never told about.
862
+ */
863
+ export function workspaceCovers(root, dir) {
864
+ const relative = relativePath(root, dir).split(sep).join('/');
865
+ if (relative === '' || relative.startsWith('..')) {
866
+ return false;
867
+ }
868
+ let patterns;
869
+ try {
870
+ const manifest = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'));
871
+ patterns = Array.isArray(manifest.workspaces)
872
+ ? manifest.workspaces
873
+ : manifest.workspaces?.packages;
874
+ }
875
+ catch {
876
+ return false;
877
+ }
878
+ if (!Array.isArray(patterns)) {
879
+ return false;
880
+ }
881
+ return patterns.some((pattern) => {
882
+ if (typeof pattern !== 'string') {
883
+ return false;
884
+ }
885
+ const source = pattern
886
+ .split('/')
887
+ .map((segment) => segment === '**'
888
+ ? '.*'
889
+ : segment.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^/]*'))
890
+ .join('/');
891
+ return new RegExp(`^${source}$`).test(relative);
892
+ });
893
+ }
894
+ const spawnAddonBuildStep = (command, args, cwd) => {
895
+ const { status, error } = spawnSync(command, args, {
896
+ cwd,
897
+ stdio: 'inherit',
898
+ shell: process.platform === 'win32',
899
+ });
900
+ return { status, error };
901
+ };
902
+ export const buildGeneratedAddon = (addonDir, logger, run = spawnAddonBuildStep) => {
903
+ const { dir: installDir, packageManager } = findInstallRoot(addonDir);
904
+ if (packageManager === 'unknown') {
905
+ logger.error(`Could not tell which package manager owns ${addonDir} — the addon is generated but NOT built. Run install, then the addon's build script, in ${addonDir} before using it.`);
906
+ return false;
907
+ }
908
+ // A root install only reaches the addon when the root's workspace patterns
909
+ // cover it. A root that owns the lockfile but not this package installs
910
+ // nothing for it, so its devDependencies — `@pikku/cli` and `typescript`,
911
+ // which the build script needs — would never arrive.
912
+ const installIn = workspaceCovers(installDir, addonDir)
913
+ ? installDir
914
+ : addonDir;
915
+ const steps = [
916
+ [installIn, ['install']],
917
+ [addonDir, ['run', 'build']],
918
+ ];
919
+ for (const [cwd, args] of steps) {
920
+ logger.info(`${packageManager} ${args.join(' ')} (${cwd})`);
921
+ const result = run(packageManager, args, cwd);
922
+ if (result.status !== 0) {
923
+ logger.error(`${packageManager} ${args.join(' ')} failed in ${cwd}: ${result.error?.message ?? `exit ${result.status}`}`);
924
+ return false;
925
+ }
926
+ }
927
+ return true;
928
+ };
854
929
  export const pikkuNewAddon = pikkuSessionlessFunc({
855
- func: async ({ logger, config }, { name, displayName, description, category = 'General', dir, secret = false, variable = false, oauth = false, credential, test = true, openapi, authConfig, mcp = false, camelCase = false, }) => {
930
+ func: async ({ logger, config }, { name, displayName, description, category = 'General', dir, secret = false, variable = false, oauth = false, credential, test = true, openapi, authConfig, mcp = false, camelCase = false, build = true, }) => {
856
931
  name = sanitizeAddonName(name);
857
932
  if (!/^[a-z][a-z0-9_-]*$/.test(name)) {
858
933
  logger.error(`Invalid addon name "${name}": must start with a lowercase letter and contain only lowercase alphanumerics, hyphens, and underscores`);
@@ -949,6 +1024,9 @@ export const pikkuNewAddon = pikkuSessionlessFunc({
949
1024
  for (const f of written) {
950
1025
  logger.debug({ message: ` ${f}`, type: 'success' });
951
1026
  }
1027
+ if (build && !buildGeneratedAddon(addonDir, logger)) {
1028
+ process.exit(1);
1029
+ }
952
1030
  console.log(addonDir);
953
1031
  },
954
1032
  });
@@ -9,10 +9,11 @@
9
9
  * config and write through it, which provisioned a local stage correctly and
10
10
  * silently provisioned the wrong database for every other environment.
11
11
  *
12
- * So the deployment provisions itself: an app calls `provisionPersonas` from
13
- * `@pikku/better-auth` in its server lifecycle, where the database connection
14
- * and better-auth's own adapter are both already open, and a deploy carries its
15
- * personas with it. What is left here is the half that needs no database — the
12
+ * So the deployment provisions itself: an app hands its personas to
13
+ * `pikkuFabric` from `@pikku/better-auth`, and the plugin creates a missing one
14
+ * on the operator handshake that asks for it, where the database connection and
15
+ * better-auth's own adapter are both already open. What is left here is the
16
+ * half that needs no database — the
16
17
  * declaration, and the environment rule applied to it — which is what tells you
17
18
  * before a deploy whether the accounts you expect will appear.
18
19
  */
@@ -12,10 +12,11 @@ import { resolvePersonas } from '../../utils/resolve-personas.js';
12
12
  * config and write through it, which provisioned a local stage correctly and
13
13
  * silently provisioned the wrong database for every other environment.
14
14
  *
15
- * So the deployment provisions itself: an app calls `provisionPersonas` from
16
- * `@pikku/better-auth` in its server lifecycle, where the database connection
17
- * and better-auth's own adapter are both already open, and a deploy carries its
18
- * personas with it. What is left here is the half that needs no database — the
15
+ * So the deployment provisions itself: an app hands its personas to
16
+ * `pikkuFabric` from `@pikku/better-auth`, and the plugin creates a missing one
17
+ * on the operator handshake that asks for it, where the database connection and
18
+ * better-auth's own adapter are both already open. What is left here is the
19
+ * half that needs no database — the
19
20
  * declaration, and the environment rule applied to it — which is what tells you
20
21
  * before a deploy whether the accounts you expect will appear.
21
22
  */
@@ -65,6 +66,6 @@ export const personaSync = pikkuSessionlessFunc({
65
66
  for (const refusal of skipped) {
66
67
  logger.info(` skipped: ${refusal}`);
67
68
  }
68
- logger.info(" Provisioning runs in the deployment: call `provisionPersonas` from '@pikku/better-auth' in your server lifecycle, passing `personaConfigs` and `personaEnvironments` from the generated personas file.");
69
+ logger.info(" Provisioning runs in the deployment: pass `personas: { personas: personaConfigs, environments: personaEnvironments }` from the generated personas file to `pikkuFabric` from '@pikku/better-auth'.");
69
70
  },
70
71
  });
@@ -4,6 +4,7 @@ import { pikkuSessionlessFunc } from '#pikku/function';
4
4
  import { createHttpPersonas, deriveActorSecret, personaEnvironmentRefusal, roleMismatchMessage, verifyPersonaRoles, } from '@pikku/core/persona';
5
5
  import { personaVirtualUserTarget, runVirtualUser, catalogueClassification, DISPOSITIONS, prepareVirtualUserRun, } from '@pikku/core/virtual-user';
6
6
  import { getSingletonServices, setSingletonServices } from '@pikku/core/state';
7
+ import { PikkuError } from '@pikku/core/errors';
7
8
  import { resolvePersonas } from '../../utils/resolve-personas.js';
8
9
  import { ACTOR_SECRET_VARIABLE, PERSONA_SECRETS_VARIABLE, resolvePersonaCredentials, } from '../../utils/persona-credentials.js';
9
10
  import { resolveEnvironment } from './environment.js';
@@ -108,7 +109,7 @@ export const personaRun = pikkuSessionlessFunc({
108
109
  agentsMeta: state.agents?.agentsMeta ?? {},
109
110
  });
110
111
  if (catalogue.length === 0) {
111
- throw new Error('This project exposes no RPCs, so there is nothing for a virtual user to do.');
112
+ throw new PikkuError('This project exposes no RPCs, so there is nothing for a virtual user to do.');
112
113
  }
113
114
  const signedIn = createHttpPersonas({
114
115
  apiUrl: env.apiUrl,
@@ -132,7 +133,10 @@ export const personaRun = pikkuSessionlessFunc({
132
133
  else {
133
134
  const message = roleMismatchMessage(verifyPersonaRoles(personaId, persona.roles, actual));
134
135
  if (message) {
135
- throw new Error(message);
136
+ // A refusal, not a crash: `PikkuError` is what tells the CLI to print
137
+ // the message on its own, since the seed drift it names is the whole
138
+ // finding and the frames underneath it are noise.
139
+ throw new PikkuError(message);
136
140
  }
137
141
  }
138
142
  }
@@ -1,5 +1,5 @@
1
1
  import { Kysely } from 'kysely';
2
- import { type MigrateResult } from './db-migrator.js';
2
+ import { type MigrateResult } from '@pikku/migrator-sql';
3
3
  import type { ColumnInfo } from './db-introspector.js';
4
4
  import { type CodegenResult } from './db-codegen.js';
5
5
  import { type ZodCodegenResult } from './zod-codegen.js';
@@ -5,18 +5,18 @@ import { pathToFileURL } from 'node:url';
5
5
  import { runInNewContext } from 'node:vm';
6
6
  import { transformSync } from 'esbuild';
7
7
  import { CamelCasePlugin, Kysely, PostgresDialect } from 'kysely';
8
- import { migrate, baselineMigrations, } from './db-migrator.js';
8
+ import { migrate, baselineMigrations, } from '@pikku/migrator-sql';
9
9
  import { applyPikkuSchemas, compilePikkuSchemas, pikkuSchemas, requiredPikkuSchemas, resolveRequirements, createCoercionPlugin, } from '@pikku/kysely';
10
10
  import { loadAuthOptions, getAuthMigrations } from './better-auth-schema.js';
11
11
  import { generateSchemaTypes } from './db-codegen.js';
12
12
  import { generateZodTypes } from './zod-codegen.js';
13
- import { tableCreationSql } from './schema-sql.js';
14
- import { SqliteMigrationExecutor } from './sqlite/sqlite-migrator.js';
13
+ import { tableCreationSql } from '@pikku/migrator-sql';
14
+ import { SqliteMigrationExecutor } from '@pikku/migrator-sql/sqlite';
15
15
  import { SqliteIntrospector } from './sqlite/sqlite-introspector.js';
16
16
  import { createSqliteKysely } from './sqlite/sqlite-kysely.js';
17
- import { loadSqliteRuntime } from './sqlite/sqlite-runtime.js';
17
+ import { loadSqliteRuntime } from '@pikku/migrator-sql/sqlite';
18
18
  import { devSeed as runDevSeed } from './sqlite/dev-seed.js';
19
- import { PostgresMigrationExecutor } from './postgres/postgres-migrator.js';
19
+ import { PostgresMigrationExecutor } from '@pikku/migrator-sql/postgres';
20
20
  import { createPGliteKysely } from './postgres/pglite-kysely.js';
21
21
  import { PostgresIntrospector } from './postgres/postgres-introspector.js';
22
22
  // ─── Resolution ───────────────────────────────────────────────────────────────
@@ -1,5 +1,5 @@
1
1
  import { Pool } from 'pg';
2
- import { MIGRATION_TRACKING_TABLE } from '../db-migrator.js';
2
+ import { MIGRATION_TRACKING_TABLE } from '@pikku/migrator-sql';
3
3
  import { parseCheckEnumValues } from '../check-enums.js';
4
4
  /** Table display name matching `listTables` (schema-qualified unless `public`). */
5
5
  function tableKey(schema, table) {
@@ -1,4 +1,4 @@
1
- import type { SyncSqliteDatabase } from './sqlite-runtime.js';
1
+ import type { SyncSqliteDatabase } from '@pikku/migrator-sql/sqlite';
2
2
  export interface DevSeedResult {
3
3
  applied: boolean;
4
4
  bytes: number;
@@ -1,5 +1,5 @@
1
1
  import type { DbIntrospector, ColumnInfo, ForeignKeyInfo, EnumInfo } from '../db-introspector.js';
2
- import type { SyncSqliteDatabase } from './sqlite-runtime.js';
2
+ import type { SyncSqliteDatabase } from '@pikku/migrator-sql/sqlite';
3
3
  export declare class SqliteIntrospector implements DbIntrospector {
4
4
  private readonly db;
5
5
  constructor(db: SyncSqliteDatabase);
@@ -1,4 +1,4 @@
1
- import { MIGRATION_TRACKING_TABLE } from '../db-migrator.js';
1
+ import { MIGRATION_TRACKING_TABLE } from '@pikku/migrator-sql';
2
2
  import { parseCheckEnumsFromDdl } from '../check-enums.js';
3
3
  const SKIP_TABLES = new Set(['sqlite_sequence', MIGRATION_TRACKING_TABLE]);
4
4
  export class SqliteIntrospector {
@@ -1,5 +1,5 @@
1
1
  import { Kysely, type KyselyPlugin } from 'kysely';
2
- import type { SyncSqliteDatabase } from './sqlite-runtime.js';
2
+ import type { SyncSqliteDatabase } from '@pikku/migrator-sql/sqlite';
3
3
  export interface CreateSqliteKyselyOptions {
4
4
  db: SyncSqliteDatabase;
5
5
  camelCase?: boolean;
@@ -1,3 +1,8 @@
1
- import type { KnowledgeIndexResult, KnowledgeValidateResult } from '@pikku/knowledge';
1
+ import type { KnowledgeIndexResult, KnowledgePlanDeferResult, KnowledgePlanProgressResult, KnowledgePlanSchemaResult, KnowledgePlanSetResult, KnowledgePlanShowResult, KnowledgeValidateResult } from '@pikku/knowledge';
2
2
  export declare const renderKnowledgeValidate: (_services: unknown, { ok, notes, findings }: KnowledgeValidateResult) => void;
3
3
  export declare const renderKnowledgeIndex: (_services: unknown, { ok, check, files }: KnowledgeIndexResult) => void;
4
+ export declare const renderKnowledgePlanSchema: (_services: unknown, { schema }: KnowledgePlanSchemaResult) => void;
5
+ export declare const renderKnowledgePlanShow: (_services: unknown, { ok, path, body }: KnowledgePlanShowResult) => void;
6
+ export declare const renderKnowledgePlanProgress: (_services: unknown, { ok, path, message, done, missing, deferred, problems, }: KnowledgePlanProgressResult) => void;
7
+ export declare const renderKnowledgePlanSet: (_services: unknown, { ok, path, problems, schema }: KnowledgePlanSetResult) => void;
8
+ export declare const renderKnowledgePlanDefer: (_services: unknown, { ok, message }: KnowledgePlanDeferResult) => void;
@@ -64,3 +64,77 @@ export const renderKnowledgeIndex = (_services, { ok, check, files }) => {
64
64
  process.exitCode = 1;
65
65
  }
66
66
  };
67
+ export const renderKnowledgePlanSchema = (_services, { schema }) => {
68
+ console.log(schema);
69
+ };
70
+ export const renderKnowledgePlanShow = (_services, { ok, path, body }) => {
71
+ if (!ok) {
72
+ console.log(`${removed('✗')} ${body}`);
73
+ process.exitCode = 1;
74
+ return;
75
+ }
76
+ console.log(dim(path));
77
+ console.log(body);
78
+ };
79
+ const list = (label, entries, colour) => {
80
+ if (entries.length === 0)
81
+ return;
82
+ console.log(colour(`${label} (${entries.length})`));
83
+ for (const entry of entries)
84
+ console.log(` ${entry}`);
85
+ console.log();
86
+ };
87
+ export const renderKnowledgePlanProgress = (_services, { ok, path, message, done, missing, deferred, problems, }) => {
88
+ if (message) {
89
+ console.log(`${removed('✗')} ${message}`);
90
+ process.exitCode = 1;
91
+ return;
92
+ }
93
+ console.log(dim(path));
94
+ console.log();
95
+ list('DONE', done, added);
96
+ list('MISSING', missing, removed);
97
+ list('DEFERRED to a later pass', deferred, dim);
98
+ list('PROBLEMS', problems, changed);
99
+ console.log('─'.repeat(40));
100
+ if (ok) {
101
+ console.log(`${added('✓')} the plan's first pass is built`);
102
+ return;
103
+ }
104
+ if (missing.length > 0) {
105
+ console.log(`${removed('✗')} the milestone is not built yet — build each missing item, or move it out with ` +
106
+ dim('pikku knowledge plan defer <milestone> <item> -r "<why>"'));
107
+ }
108
+ // A problem is something that EXISTS and does not do what was planned, so there is
109
+ // nothing to defer — saying "defer it" here sends the reader to a command that will
110
+ // refuse them.
111
+ if (problems.length > 0) {
112
+ console.log(`${removed('✗')} the milestone is not built yet — fix what the problems above name. ` +
113
+ dim('A problem is never deferred; the thing exists, it just does something else.'));
114
+ }
115
+ // A build closes a milestone on this exit code, so it has to be readable by a shell
116
+ // and not only by whoever is reading the output.
117
+ process.exitCode = 1;
118
+ };
119
+ export const renderKnowledgePlanSet = (_services, { ok, path, problems, schema }) => {
120
+ if (ok) {
121
+ console.log(`${added('✓')} plan written to ${path}`);
122
+ console.log(dim('the build is measured against it'));
123
+ return;
124
+ }
125
+ console.log(`${removed('✗')} not written:`);
126
+ for (const problem of problems) {
127
+ console.log(` ${problem}`);
128
+ }
129
+ if (schema) {
130
+ console.log();
131
+ console.log(dim('the schema, in full — build the plan to match it:'));
132
+ console.log(schema);
133
+ }
134
+ process.exitCode = 1;
135
+ };
136
+ export const renderKnowledgePlanDefer = (_services, { ok, message }) => {
137
+ console.log(`${ok ? added('✓') : removed('✗')} ${message}`);
138
+ if (!ok)
139
+ process.exitCode = 1;
140
+ };
@@ -49,3 +49,48 @@ export declare const KnowledgeValidateOutputSchema: import("zod").ZodObject<{
49
49
  fixHint: import("zod").ZodString;
50
50
  }, import("zod/v4/core").$strip>>;
51
51
  }, import("zod/v4/core").$strip>;
52
+ export declare const KnowledgePlanSchemaInputSchema: import("zod").ZodObject<{}, import("zod/v4/core").$strip>;
53
+ export declare const KnowledgePlanSchemaOutputSchema: import("zod").ZodObject<{
54
+ schema: import("zod").ZodString;
55
+ }, import("zod/v4/core").$strip>;
56
+ export declare const KnowledgePlanProgressInputSchema: import("zod").ZodObject<{
57
+ milestone: import("zod").ZodString;
58
+ }, import("zod/v4/core").$strip>;
59
+ export declare const KnowledgePlanProgressOutputSchema: import("zod").ZodObject<{
60
+ ok: import("zod").ZodBoolean;
61
+ path: import("zod").ZodString;
62
+ message: import("zod").ZodString;
63
+ done: import("zod").ZodArray<import("zod").ZodString>;
64
+ missing: import("zod").ZodArray<import("zod").ZodString>;
65
+ deferred: import("zod").ZodArray<import("zod").ZodString>;
66
+ problems: import("zod").ZodArray<import("zod").ZodString>;
67
+ }, import("zod/v4/core").$strip>;
68
+ export declare const KnowledgePlanShowInputSchema: import("zod").ZodObject<{
69
+ milestone: import("zod").ZodString;
70
+ forBuild: import("zod").ZodOptional<import("zod").ZodBoolean>;
71
+ }, import("zod/v4/core").$strip>;
72
+ export declare const KnowledgePlanShowOutputSchema: import("zod").ZodObject<{
73
+ ok: import("zod").ZodBoolean;
74
+ path: import("zod").ZodString;
75
+ body: import("zod").ZodString;
76
+ }, import("zod/v4/core").$strip>;
77
+ export declare const KnowledgePlanSetInputSchema: import("zod").ZodObject<{
78
+ milestone: import("zod").ZodString;
79
+ file: import("zod").ZodString;
80
+ }, import("zod/v4/core").$strip>;
81
+ export declare const KnowledgePlanSetOutputSchema: import("zod").ZodObject<{
82
+ ok: import("zod").ZodBoolean;
83
+ path: import("zod").ZodString;
84
+ problems: import("zod").ZodArray<import("zod").ZodString>;
85
+ schema: import("zod").ZodOptional<import("zod").ZodString>;
86
+ }, import("zod/v4/core").$strip>;
87
+ export declare const KnowledgePlanDeferInputSchema: import("zod").ZodObject<{
88
+ milestone: import("zod").ZodString;
89
+ item: import("zod").ZodString;
90
+ reason: import("zod").ZodString;
91
+ }, import("zod/v4/core").$strip>;
92
+ export declare const KnowledgePlanDeferOutputSchema: import("zod").ZodObject<{
93
+ ok: import("zod").ZodBoolean;
94
+ path: import("zod").ZodString;
95
+ message: import("zod").ZodString;
96
+ }, import("zod/v4/core").$strip>;
@@ -1,4 +1,4 @@
1
- import { KnowledgeIndexInput, KnowledgeIndexOutput, KnowledgeValidateInput, KnowledgeValidateOutput, } from '@pikku/knowledge';
1
+ import { KnowledgeIndexInput, KnowledgeIndexOutput, KnowledgePlanDeferInput, KnowledgePlanDeferOutput, KnowledgePlanProgressInput, KnowledgePlanProgressOutput, KnowledgePlanSchemaInput, KnowledgePlanSchemaOutput, KnowledgePlanSetInput, KnowledgePlanSetOutput, KnowledgePlanShowInput, KnowledgePlanShowOutput, KnowledgeValidateInput, KnowledgeValidateOutput, } from '@pikku/knowledge';
2
2
  /**
3
3
  * The knowledge command schemas, re-bound to variables declared HERE rather than
4
4
  * imported straight into the command files.
@@ -23,3 +23,13 @@ export const KnowledgeIndexInputSchema = KnowledgeIndexInput;
23
23
  export const KnowledgeIndexOutputSchema = KnowledgeIndexOutput;
24
24
  export const KnowledgeValidateInputSchema = KnowledgeValidateInput;
25
25
  export const KnowledgeValidateOutputSchema = KnowledgeValidateOutput;
26
+ export const KnowledgePlanSchemaInputSchema = KnowledgePlanSchemaInput;
27
+ export const KnowledgePlanSchemaOutputSchema = KnowledgePlanSchemaOutput;
28
+ export const KnowledgePlanProgressInputSchema = KnowledgePlanProgressInput;
29
+ export const KnowledgePlanProgressOutputSchema = KnowledgePlanProgressOutput;
30
+ export const KnowledgePlanShowInputSchema = KnowledgePlanShowInput;
31
+ export const KnowledgePlanShowOutputSchema = KnowledgePlanShowOutput;
32
+ export const KnowledgePlanSetInputSchema = KnowledgePlanSetInput;
33
+ export const KnowledgePlanSetOutputSchema = KnowledgePlanSetOutput;
34
+ export const KnowledgePlanDeferInputSchema = KnowledgePlanDeferInput;
35
+ export const KnowledgePlanDeferOutputSchema = KnowledgePlanDeferOutput;