@pikku/cli 0.12.117 → 0.12.119

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 (253) hide show
  1. package/CHANGELOG.md +216 -0
  2. package/console-app/assets/{abnfDiagram-N423BO3Z-WNIAg_Oa.js → abnfDiagram-N423BO3Z-CiK5F2ml.js} +1 -1
  3. package/console-app/assets/architecture-TIHT7OUA-FMO1RByN.js +1 -0
  4. package/console-app/assets/{architectureDiagram-T3A2C74G-DM698mgf.js → architectureDiagram-T3A2C74G-g4Elcs_0.js} +1 -1
  5. package/console-app/assets/{blockDiagram-VBNYF7ZC-DPfy9K5S.js → blockDiagram-VBNYF7ZC-CI6muc3M.js} +1 -1
  6. package/console-app/assets/{c4Diagram-5PPSVZJV-DhLbbBbX.js → c4Diagram-5PPSVZJV-CjzL9yGp.js} +1 -1
  7. package/console-app/assets/channel-Dp8A5NJg.js +1 -0
  8. package/console-app/assets/{chunk-2GRJ4B5K-C1RQ1gvs.js → chunk-2GRJ4B5K-C68TKOLb.js} +1 -1
  9. package/console-app/assets/{chunk-4I5QYGJK-BkzSdNc_.js → chunk-4I5QYGJK-D_DINIPO.js} +1 -1
  10. package/console-app/assets/{chunk-5RXB4S5H-DZpBpdcU.js → chunk-5RXB4S5H-D8mEuiea.js} +1 -1
  11. package/console-app/assets/{chunk-6Q2QTUOP-mZObxdld.js → chunk-6Q2QTUOP-CVNqLnb8.js} +1 -1
  12. package/console-app/assets/{chunk-7Z6QIM7H-C0HbxZEa.js → chunk-7Z6QIM7H-Bnih6HyS.js} +1 -1
  13. package/console-app/assets/{chunk-GF5L2VYU-DXPVwWqW.js → chunk-GF5L2VYU-C5efrbFt.js} +1 -1
  14. package/console-app/assets/{chunk-I66GZJ75-pVpq9ckD.js → chunk-I66GZJ75-dckv50K3.js} +1 -1
  15. package/console-app/assets/{chunk-JQJVKLGR-DJQ8K4wK.js → chunk-JQJVKLGR-HirBo6LQ.js} +1 -1
  16. package/console-app/assets/{chunk-KBJHAD2P-B8XuxRCO.js → chunk-KBJHAD2P-lknhmPj0.js} +1 -1
  17. package/console-app/assets/{chunk-NSK5VX7P-cYzQU4bD.js → chunk-NSK5VX7P-tGAl7zxF.js} +1 -1
  18. package/console-app/assets/{chunk-QR6OTTB3-CNoTFsqn.js → chunk-QR6OTTB3-BlSKCrEq.js} +1 -1
  19. package/console-app/assets/{chunk-RYQCIY6F-DoKRUO_N.js → chunk-RYQCIY6F-CwQmwEV-.js} +1 -1
  20. package/console-app/assets/{chunk-UBXNYLIW-BqcIoUpU.js → chunk-UBXNYLIW-D1Dn6ZK0.js} +1 -1
  21. package/console-app/assets/{chunk-W5SLKNZC-p0Qalbjj.js → chunk-W5SLKNZC-DOkZHhST.js} +1 -1
  22. package/console-app/assets/{chunk-WRU74C26-DUMn96Dr.js → chunk-WRU74C26-CB4orIKm.js} +1 -1
  23. package/console-app/assets/chunk-XXDRQBXY-BMybY6E-.js +1 -0
  24. package/console-app/assets/classDiagram-JCYQIIEL-C-K-UAUR.js +1 -0
  25. package/console-app/assets/classDiagram-v2-OCEON4UE-C-K-UAUR.js +1 -0
  26. package/console-app/assets/{cose-bilkent-JH36ORCC-BCh3BlPI.js → cose-bilkent-JH36ORCC-stBhaqpU.js} +1 -1
  27. package/console-app/assets/{cynefin-VYW2F7L2-ZfghUZsD.js → cynefin-VYW2F7L2-Bb1nmKWZ.js} +1 -1
  28. package/console-app/assets/{cynefinDiagram-MW4NZA55-DcV3QXCe.js → cynefinDiagram-MW4NZA55-Bp8fMJi-.js} +1 -1
  29. package/console-app/assets/{dagre-BPFWXLBN.js → dagre-DshmzimC.js} +1 -1
  30. package/console-app/assets/{dagre-VZM6K2ZE-DETshBO-.js → dagre-VZM6K2ZE-DIl1klf5.js} +1 -1
  31. package/console-app/assets/{diagram-7IWD3JNH-CsLX3P2o.js → diagram-7IWD3JNH-DdkSOxKT.js} +1 -1
  32. package/console-app/assets/{diagram-B4RE2ZJO-o2zcxm5S.js → diagram-B4RE2ZJO-9Dj9O4L8.js} +1 -1
  33. package/console-app/assets/{diagram-LBJQPF4R-BD2zKU21.js → diagram-LBJQPF4R-CxBb73tU.js} +1 -1
  34. package/console-app/assets/{diagram-Q27KOJAE-DHaacyna.js → diagram-Q27KOJAE-CPpUmnvb.js} +1 -1
  35. package/console-app/assets/{diagram-UB23O5K3-pSLCMUyV.js → diagram-UB23O5K3-7wV_Db6W.js} +1 -1
  36. package/console-app/assets/{ebnfDiagram-BXEA7PRR-BDzawX3O.js → ebnfDiagram-BXEA7PRR-Cxzbf8pk.js} +1 -1
  37. package/console-app/assets/{erDiagram-JOGREHBK-CyYnPmbN.js → erDiagram-JOGREHBK-BBPLq83P.js} +1 -1
  38. package/console-app/assets/eventmodeling-45OFAUF4-CLUnygIv.js +1 -0
  39. package/console-app/assets/flowDiagram-UKHOOZJN-D3mDcWWx.js +1 -0
  40. package/console-app/assets/{ganttDiagram-PKOTCBZU-3fhCBbPA.js → ganttDiagram-PKOTCBZU-Erh7WK4H.js} +1 -1
  41. package/console-app/assets/{gitGraph-TEB2WS4Q-CdLRkVux.js → gitGraph-TEB2WS4Q-o5FLRF57.js} +1 -1
  42. package/console-app/assets/{gitGraphDiagram-DS77QQ5N-CC1epdKw.js → gitGraphDiagram-DS77QQ5N-BFbsaenX.js} +1 -1
  43. package/console-app/assets/{index-GruDnAhJ.css → index-Mq-YbqNO.css} +1 -1
  44. package/console-app/assets/{index-BRmokG9t.js → index-w2ZoJr8X.js} +178 -178
  45. package/console-app/assets/{info-DKCQHKI2-BJs8WkzC.js → info-DKCQHKI2-Dkcrdr1w.js} +1 -1
  46. package/console-app/assets/{infoDiagram-6WML65LV-uoOwoIeI.js → infoDiagram-6WML65LV-iZVC5Wzy.js} +1 -1
  47. package/console-app/assets/{ishikawaDiagram-WSZJBQD7-vCUJhwTi.js → ishikawaDiagram-WSZJBQD7-BjV8LLeA.js} +1 -1
  48. package/console-app/assets/{journeyDiagram-NVQOT4AX-D2QcIlLG.js → journeyDiagram-NVQOT4AX-D3rpLjYi.js} +1 -1
  49. package/console-app/assets/{kanban-definition-27J2QSJJ-JwwKowmR.js → kanban-definition-27J2QSJJ-Dds5TFyv.js} +1 -1
  50. package/console-app/assets/{line-h2oRreYF.js → line-D1rUAT18.js} +1 -1
  51. package/console-app/assets/{linear-Dz002X_a.js → linear-fQ_6Sc79.js} +1 -1
  52. package/console-app/assets/{mermaid-parser.core-DTgmT0AA.js → mermaid-parser.core-B9Q-4IXF.js} +3 -3
  53. package/console-app/assets/{mermaid.core-1jSEDr-j.js → mermaid.core-bPhADShw.js} +4 -4
  54. package/console-app/assets/{mindmap-definition-FAOFIHXS-C3Txxhj4.js → mindmap-definition-FAOFIHXS-CULlU6Fy.js} +1 -1
  55. package/console-app/assets/{packet-7NZHBO7P-BGG7zIK2.js → packet-7NZHBO7P-DpwzoQpc.js} +1 -1
  56. package/console-app/assets/{pegDiagram-VL7TDLO6--g1r_rov.js → pegDiagram-VL7TDLO6-B9fKKc4F.js} +1 -1
  57. package/console-app/assets/{pie-RZYD4A2V-C5OepMH7.js → pie-RZYD4A2V-DkXpqWAI.js} +1 -1
  58. package/console-app/assets/{pieDiagram-7S7Q4E2Y-DGD_LzGm.js → pieDiagram-7S7Q4E2Y-Bcpn2rUM.js} +1 -1
  59. package/console-app/assets/{quadrantDiagram-CIZ2JOQS-CyBQQlD2.js → quadrantDiagram-CIZ2JOQS-Bd5wWFj_.js} +1 -1
  60. package/console-app/assets/{radar-I7S5WNFK-CaBOAO95.js → radar-I7S5WNFK-ylw-u3HI.js} +1 -1
  61. package/console-app/assets/{railroad-3IZDKUUU-2aTWN4Pw.js → railroad-3IZDKUUU-D4LMucL-.js} +1 -1
  62. package/console-app/assets/railroad-abnf-AHOZXSZD-CRTVzK1g.js +1 -0
  63. package/console-app/assets/railroad-ebnf-EBAXGLYW-CB13ugAF.js +1 -0
  64. package/console-app/assets/railroad-peg-LSFZ7HO6-AN8zyQYp.js +1 -0
  65. package/console-app/assets/{railroadDiagram-AXF67PYL-3Nr0rlTp.js → railroadDiagram-AXF67PYL-CZukQql9.js} +1 -1
  66. package/console-app/assets/{requirementDiagram-LRYGKXZP-BN7sEwSa.js → requirementDiagram-LRYGKXZP-Ou4nRENK.js} +1 -1
  67. package/console-app/assets/{sankeyDiagram-W5VNT64P-CXZR46wO.js → sankeyDiagram-W5VNT64P-BKdG-c_o.js} +1 -1
  68. package/console-app/assets/{sequenceDiagram-SI44F4Z6-DNtmdJ4U.js → sequenceDiagram-SI44F4Z6-Dc7d5obe.js} +1 -1
  69. package/console-app/assets/{src-x1E3pJJ-.js → src-BFb2oeKx.js} +1 -1
  70. package/console-app/assets/{stateDiagram-OKZ733FA-B_GyYdl_.js → stateDiagram-OKZ733FA-BA9fuN7b.js} +1 -1
  71. package/console-app/assets/stateDiagram-v2-UEYNNEHI-D13a6mUd.js +1 -0
  72. package/console-app/assets/{swimlanes-SLNWSIFB-D4N7VdF7.js → swimlanes-SLNWSIFB-l-ETgM83.js} +1 -1
  73. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-BsC-B2Z9.js +8 -0
  74. package/console-app/assets/{timeline-definition-Z64GVDOM-DU5rsOWQ.js → timeline-definition-Z64GVDOM-Uj_ByeVr.js} +1 -1
  75. package/console-app/assets/{treeView-QDETBFTQ-DaKM_9sB.js → treeView-QDETBFTQ-BvFRkVGY.js} +1 -1
  76. package/console-app/assets/{treemap-6X3UGDF4-BabsKtZY.js → treemap-6X3UGDF4-BV5T7Dw9.js} +1 -1
  77. package/console-app/assets/{vennDiagram-T6HMQDX7-Dniftpq0.js → vennDiagram-T6HMQDX7-DAFU8gAo.js} +1 -1
  78. package/console-app/assets/{wardley-OPB4EBWU-BWffQNys.js → wardley-OPB4EBWU-MLNuhuiA.js} +1 -1
  79. package/console-app/assets/{wardleyDiagram-T6FBY63Y-CQ74fVdn.js → wardleyDiagram-T6FBY63Y-B1lCTfi1.js} +1 -1
  80. package/console-app/assets/{xychartDiagram-ELKLHX3M-D-XxbGIL.js → xychartDiagram-ELKLHX3M-Bw3zhuWc.js} +1 -1
  81. package/console-app/index.html +2 -2
  82. package/dist/.pikku/addon/index.d.ts +1 -1
  83. package/dist/.pikku/addon/index.js +1 -1
  84. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
  85. package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
  86. package/dist/.pikku/agent/index.d.ts +1 -1
  87. package/dist/.pikku/agent/index.js +1 -1
  88. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  89. package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
  90. package/dist/.pikku/auth/index.d.ts +1 -1
  91. package/dist/.pikku/auth/index.js +1 -1
  92. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
  93. package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
  94. package/dist/.pikku/channel/index.d.ts +1 -1
  95. package/dist/.pikku/channel/index.js +1 -1
  96. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  97. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  98. package/dist/.pikku/cli/index.d.ts +1 -1
  99. package/dist/.pikku/cli/index.js +1 -1
  100. package/dist/.pikku/cli/pikku-cli-channel.js +6 -1
  101. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  102. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  103. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
  104. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
  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 +14 -9
  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 +26 -7
  123. package/dist/.pikku/function/pikku-functions.gen.js +1 -3
  124. package/dist/.pikku/gateway/index.d.ts +1 -1
  125. package/dist/.pikku/gateway/index.js +1 -1
  126. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
  127. package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
  128. package/dist/.pikku/http/index.d.ts +1 -1
  129. package/dist/.pikku/http/index.js +1 -1
  130. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  131. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  132. package/dist/.pikku/mcp/index.d.ts +1 -1
  133. package/dist/.pikku/mcp/index.js +1 -1
  134. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  135. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  136. package/dist/.pikku/middleware/index.d.ts +1 -1
  137. package/dist/.pikku/middleware/index.js +1 -1
  138. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
  139. package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
  140. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
  141. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
  142. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  143. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  144. package/dist/.pikku/pikku-services.gen.d.ts +1 -1
  145. package/dist/.pikku/queue/index.d.ts +1 -1
  146. package/dist/.pikku/queue/index.js +1 -1
  147. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  148. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  149. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
  150. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  151. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  152. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  153. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +1 -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.d.ts +11 -0
  157. package/dist/.pikku/scenarios/pikku-personas.gen.js +12 -1
  158. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
  159. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
  160. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
  161. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
  162. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
  163. package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
  164. package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
  165. package/dist/.pikku/scheduler/index.d.ts +1 -1
  166. package/dist/.pikku/scheduler/index.js +1 -1
  167. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  168. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  169. package/dist/.pikku/schemas/register.gen.js +3 -1
  170. package/dist/.pikku/schemas/schemas/PersonaSyncInput.schema.json +1 -1
  171. package/dist/.pikku/schemas/schemas/PikkuMetaApplyInput.schema.json +1 -0
  172. package/dist/.pikku/scopes/index.d.ts +1 -1
  173. package/dist/.pikku/scopes/index.js +1 -1
  174. package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
  175. package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
  176. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
  177. package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
  178. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
  179. package/dist/.pikku/secrets/index.d.ts +1 -1
  180. package/dist/.pikku/secrets/index.js +1 -1
  181. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  182. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  183. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  184. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  185. package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
  186. package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
  187. package/dist/.pikku/setup/index.d.ts +1 -1
  188. package/dist/.pikku/setup/index.js +1 -1
  189. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
  190. package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
  191. package/dist/.pikku/trigger/index.d.ts +1 -1
  192. package/dist/.pikku/trigger/index.js +1 -1
  193. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  194. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  195. package/dist/.pikku/variables/index.d.ts +1 -1
  196. package/dist/.pikku/variables/index.js +1 -1
  197. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  198. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  199. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  200. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  201. package/dist/.pikku/workflow/index.d.ts +1 -1
  202. package/dist/.pikku/workflow/index.js +1 -1
  203. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  204. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  205. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  206. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  207. package/dist/bin/pikku-bin.mjs +2 -2
  208. package/dist/src/cli.wiring.js +7 -10
  209. package/dist/src/fabric/functions/smoke.function.js +2 -2
  210. package/dist/src/fabric/functions/validate.function.js +2 -2
  211. package/dist/src/fabric/lib/git.js +31 -1
  212. package/dist/src/functions/commands/dev.js +2 -0
  213. package/dist/src/functions/commands/meta.d.ts +7 -0
  214. package/dist/src/functions/commands/meta.js +65 -0
  215. package/dist/src/functions/commands/persona-sync.d.ts +14 -22
  216. package/dist/src/functions/commands/persona-sync.js +29 -107
  217. package/dist/src/functions/commands/serve.js +2 -0
  218. package/dist/src/functions/validate/auth-plugin-checks.d.ts +16 -0
  219. package/dist/src/functions/validate/auth-plugin-checks.js +165 -0
  220. package/dist/src/functions/validate/persona-checks.js +1 -1
  221. package/dist/src/functions/validate/shared-checks.js +12 -0
  222. package/dist/src/functions/validate/websocket-deps-checks.d.ts +30 -0
  223. package/dist/src/functions/validate/websocket-deps-checks.js +42 -0
  224. package/dist/src/functions/wirings/personas/serialize-personas-secrets.d.ts +1 -1
  225. package/dist/src/functions/wirings/personas/serialize-personas-secrets.js +1 -1
  226. package/dist/src/functions/wirings/scopes/pikku-command-scopes.d.ts +10 -0
  227. package/dist/src/functions/wirings/scopes/pikku-command-scopes.js +20 -3
  228. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +1 -1
  229. package/dist/src/functions/wirings/workflow/serialize-personas.d.ts +2 -1
  230. package/dist/src/functions/wirings/workflow/serialize-personas.js +20 -1
  231. package/dist/src/server/actor-sign-in.d.ts +5 -0
  232. package/dist/src/server/actor-sign-in.js +27 -0
  233. package/dist/src/server/node-server-runner.d.ts +11 -0
  234. package/dist/src/server/node-server-runner.js +33 -8
  235. package/dist/src/services.js +3 -1
  236. package/dist/src/utils/resolve-from-project.d.ts +29 -0
  237. package/dist/src/utils/resolve-from-project.js +45 -0
  238. package/dist/tsconfig.tsbuildinfo +1 -1
  239. package/package.json +20 -11
  240. package/snippets.json +1 -1
  241. package/surface.json +2 -2
  242. package/console-app/assets/architecture-TIHT7OUA-CIT-Nug2.js +0 -1
  243. package/console-app/assets/channel-DQC6cL1c.js +0 -1
  244. package/console-app/assets/chunk-XXDRQBXY-Dgz5VbWO.js +0 -1
  245. package/console-app/assets/classDiagram-JCYQIIEL-1ASFocNV.js +0 -1
  246. package/console-app/assets/classDiagram-v2-OCEON4UE-1ASFocNV.js +0 -1
  247. package/console-app/assets/eventmodeling-45OFAUF4-BYJ0A5k-.js +0 -1
  248. package/console-app/assets/flowDiagram-UKHOOZJN-CVn87uiP.js +0 -1
  249. package/console-app/assets/railroad-abnf-AHOZXSZD-TU7k5gB_.js +0 -1
  250. package/console-app/assets/railroad-ebnf-EBAXGLYW-DbArPBkM.js +0 -1
  251. package/console-app/assets/railroad-peg-LSFZ7HO6-TzB93z4K.js +0 -1
  252. package/console-app/assets/stateDiagram-v2-UEYNNEHI-D7V_HITc.js +0 -1
  253. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-C4XcIHKT.js +0 -8
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  export { defineScope } from '@pikku/core/scope';
5
5
  export { defineSystemRole } from '@pikku/core/role';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * This file was generated by the @pikku/cli
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/secrets` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/secrets` resolves here.
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  export { defineSecret } from '@pikku/core/secret';
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  export { defineSecret } from '@pikku/core/secret';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { TypedSecretService as CoreTypedSecretService } from '@pikku/core/services';
5
5
  import type { SecretService } from '@pikku/core/services';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { TypedSecretService as CoreTypedSecretService } from '@pikku/core/services';
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { LocalMetaService } from '@pikku/core/services/local-meta';
5
5
  export declare class PikkuMetaService extends LocalMetaService {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { LocalMetaService } from '@pikku/core/services/local-meta';
5
5
  export class PikkuMetaService extends LocalMetaService {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/setup` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/setup` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Config and service factory definitions, declared once per application
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Config and service factory definitions, declared once per application
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/trigger` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/trigger` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Trigger-specific type definitions for tree-shaking optimization
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Trigger-specific type definitions for tree-shaking optimization
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/variables` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/variables` resolves here.
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  export { defineVariable } from '@pikku/core/variable';
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  export { defineVariable } from '@pikku/core/variable';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { TypedVariablesService as CoreTypedVariablesService } from '@pikku/core/services';
5
5
  import type { VariablesService } from '@pikku/core/services';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { TypedVariablesService as CoreTypedVariablesService, } from '@pikku/core/services';
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/workflow` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/workflow` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { WorkflowCancelledException } from '@pikku/core/workflow';
5
5
  import type { PikkuWorkflowGraphConfig, PikkuWorkflowGraphResult } from '@pikku/core/workflow';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { WorkflowCancelledException } from '@pikku/core/workflow';
5
5
  import { pikkuWorkflowGraph as corePikkuWorkflowGraph } from '@pikku/core/workflow';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { pikkuState } from '@pikku/core/state';
5
5
  import allWorkflowMeta from './meta/allWorkflow.gen.json' with { type: 'json' };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.117
2
+ * This file was generated by @pikku/cli@0.12.119
3
3
  */
4
4
  import { addWorkflow } from '@pikku/core/workflow';
5
5
  import './pikku-workflow-wirings-meta.gen.js';
@@ -11,8 +11,8 @@ async function checkForUpdate() {
11
11
  })
12
12
  if (!res.ok) return
13
13
  const { version: latest } = await res.json()
14
- if (latest !== '0.12.117') {
15
- process.stderr.write(`\n Update available 0.12.117 → ${latest}\n brew upgrade pikku or npm install -g @pikku/cli\n\n`)
14
+ if (latest !== '0.12.119') {
15
+ process.stderr.write(`\n Update available 0.12.119 → ${latest}\n brew upgrade pikku or npm install -g @pikku/cli\n\n`)
16
16
  }
17
17
  } catch {}
18
18
  }
@@ -58,7 +58,7 @@ import { deployPlan } from './functions/commands/deploy-plan.js';
58
58
  import { deployApply } from './functions/commands/deploy-apply.js';
59
59
  import { deployInfo } from './functions/commands/deploy-info.js';
60
60
  import { pikkuSkillsInstall, pikkuSkillsList, } from './functions/commands/skills.js';
61
- import { pikkuMetaFunctionsGet, pikkuMetaFunctionsList, pikkuMetaSchemasGet, pikkuMetaSchemasList, pikkuMetaMiddlewareGet, pikkuMetaMiddlewareList, pikkuMetaPermissionsGet, pikkuMetaPermissionsList, pikkuMetaWiresList, pikkuMetaWiresHttp, pikkuMetaWiresScheduler, pikkuMetaWiresQueue, pikkuMetaWiresChannel, pikkuMetaWiresTrigger, pikkuMetaWiresType, pikkuMetaWorkflowsGet, pikkuMetaWorkflowsList, pikkuMetaContext, pikkuMetaClients, } from './functions/commands/meta.js';
61
+ import { pikkuMetaFunctionsGet, pikkuMetaFunctionsList, pikkuMetaSchemasGet, pikkuMetaSchemasList, pikkuMetaMiddlewareGet, pikkuMetaMiddlewareList, pikkuMetaPermissionsGet, pikkuMetaPermissionsList, pikkuMetaWiresList, pikkuMetaWiresHttp, pikkuMetaWiresScheduler, pikkuMetaWiresQueue, pikkuMetaWiresChannel, pikkuMetaWiresTrigger, pikkuMetaWiresType, pikkuMetaWorkflowsGet, pikkuMetaWorkflowsList, pikkuMetaContext, pikkuMetaClients, pikkuMetaApply, } from './functions/commands/meta.js';
62
62
  import { defaultCLIRenderer } from './services.js';
63
63
  wireCLI({
64
64
  program: 'pikku',
@@ -635,16 +635,8 @@ wireCLI({
635
635
  }),
636
636
  sync: pikkuCLICommand({
637
637
  func: personaSync,
638
- description: "Provision the declared personas into an environment: create each account and apply the roles it declares. Additive — it never revokes. Needs both the environment's API (to sign in) and its database (to write the grants), and the sign-in secret from SCENARIO_ACTOR_SECRET.",
638
+ description: "Report which personas an environment will provision, with which roles, and why any of them were skipped. The provisioning itself happens in the deployment — call provisionPersonas from '@pikku/better-auth' in your server lifecycle — because the CLI has no connection to a deployed environment's database.",
639
639
  parameters: '<environment>',
640
- options: {
641
- dryRun: {
642
- description: 'Report who would be provisioned, with which roles, and why anyone was skipped — without touching anything',
643
- },
644
- apiUrl: {
645
- description: "Override the environment's apiUrl — for a target that only exists at run time, such as a freshly deployed sandbox",
646
- },
647
- },
648
640
  }),
649
641
  list: pikkuCLICommand({
650
642
  func: personaList,
@@ -988,6 +980,11 @@ wireCLI({
988
980
  func: pikkuMetaClients,
989
981
  description: 'Frontend-targeted metadata: exposed RPCs, workflows, channels with their input/output type names and descriptions',
990
982
  }),
983
+ apply: pikkuCLICommand({
984
+ func: pikkuMetaApply,
985
+ description: 'Apply a batch of edits to your own source, all-or-nothing. Takes JSON — a file, or stdin — of {operations: [{kind, sourceFile, exportedName, ...}]}, where kind is functionConfig, functionBody or agentConfig. Config edits are spliced into the original text, so formatting and comments survive, and a permission or tool written as an identifier brings its import with it. Nothing is written unless every operation resolves, so a batch either lands whole or not at all. Run `pikku all` once afterwards to refresh generated metadata.',
986
+ parameters: '[file]',
987
+ }),
991
988
  functions: {
992
989
  func: pikkuMetaFunctionsList,
993
990
  description: 'Inspect function metadata',
@@ -11,7 +11,7 @@ import { pikkuSessionlessFunc } from '../../../.pikku/function/index.js';
11
11
  import { findProjectRoot, readJsonSafe, } from '../../functions/validate/validate.js';
12
12
  import { headSha, isWorkingTreeClean } from '../lib/git.js';
13
13
  import { added, changed, dim, removed } from '../lib/output.js';
14
- const DEFAULT_BUN_VERSION = 'bun@1.3.14';
14
+ const DEFAULT_BUN_VERSION = 'bun@1.4.0';
15
15
  const DEFAULT_STEP_TIMEOUT_SECONDS = 300;
16
16
  const DEFAULT_STARTUP_TIMEOUT_SECONDS = 60;
17
17
  const DEV_LOG_TAIL_BYTES = 16_000;
@@ -555,7 +555,7 @@ export const FabricSmoke = pikkuSessionlessFunc({
555
555
  notes,
556
556
  steps,
557
557
  failure: `Unsupported packageManager for Fabric smoke: ${packageManager}`,
558
- logTail: 'Fabric is bun-only, so smoke runs the same way the build container does. Declare "packageManager": "bun@1.3.14" in package.json.',
558
+ logTail: 'Fabric is bun-only, so smoke runs the same way the build container does. Declare "packageManager": "bun@1.4.0" in package.json.',
559
559
  };
560
560
  process.exitCode = 1;
561
561
  return result;
@@ -235,10 +235,10 @@ export async function runValidate(startDir = process.cwd(), opts = {}) {
235
235
  {
236
236
  const declared = rootPkg?.packageManager;
237
237
  if (!declared) {
238
- e('package-manager-undeclared', 'package.json does not declare "packageManager" — Fabric is bun-only and the build container aborts with "Unsupported packageManager"', rootPkgPath, lines('Add it to the root package.json:', ' "packageManager": "bun@1.3.14"', 'then run `bun install` to generate bun.lock and commit both.'));
238
+ e('package-manager-undeclared', 'package.json does not declare "packageManager" — Fabric is bun-only and the build container aborts with "Unsupported packageManager"', rootPkgPath, lines('Add it to the root package.json:', ' "packageManager": "bun@1.4.0"', 'then run `bun install` to generate bun.lock and commit both.'));
239
239
  }
240
240
  else if (!declared.startsWith('bun@')) {
241
- e('package-manager-not-bun', `package.json declares packageManager "${declared}" — Fabric is bun-only and the build container aborts with "Unsupported packageManager"`, rootPkgPath, lines('Set the root package.json to bun:', ' "packageManager": "bun@1.3.14"', 'then migrate the lockfile:', ' bun install && rm -f yarn.lock pnpm-lock.yaml package-lock.json', 'and commit bun.lock.'));
241
+ e('package-manager-not-bun', `package.json declares packageManager "${declared}" — Fabric is bun-only and the build container aborts with "Unsupported packageManager"`, rootPkgPath, lines('Set the root package.json to bun:', ' "packageManager": "bun@1.4.0"', 'then migrate the lockfile:', ' bun install && rm -f yarn.lock pnpm-lock.yaml package-lock.json', 'and commit bun.lock.'));
242
242
  }
243
243
  }
244
244
  // ── pikkufabric.config.json ────────────────────────────────────────────
@@ -15,9 +15,39 @@ export class GitError extends Error {
15
15
  this.stderr = stderr;
16
16
  }
17
17
  }
18
+ /**
19
+ * Repository-location variables git exports to its hooks. `git push` from a
20
+ * worktree sets GIT_DIR, and a hook's children inherit it — after which git
21
+ * answers about the hook's repository no matter which directory it is run in,
22
+ * so a probe given a `cwd` outside any repository reports that repository's
23
+ * state instead of "no repository". Every probe below picks its repository by
24
+ * `cwd`, so the inherited pointer is always wrong here and is dropped.
25
+ */
26
+ const REPO_LOCATION_ENV = [
27
+ 'GIT_DIR',
28
+ 'GIT_COMMON_DIR',
29
+ 'GIT_WORK_TREE',
30
+ 'GIT_INDEX_FILE',
31
+ 'GIT_PREFIX',
32
+ 'GIT_NAMESPACE',
33
+ 'GIT_OBJECT_DIRECTORY',
34
+ 'GIT_ALTERNATE_OBJECT_DIRECTORIES',
35
+ 'GIT_CEILING_DIRECTORIES',
36
+ ];
37
+ function envWithoutInheritedRepo() {
38
+ const env = { ...process.env };
39
+ for (const key of REPO_LOCATION_ENV) {
40
+ delete env[key];
41
+ }
42
+ return env;
43
+ }
18
44
  function git(args, cwd = process.cwd()) {
19
45
  return new Promise((resolve, reject) => {
20
- const child = spawn('git', args, { cwd, stdio: ['ignore', 'pipe', 'pipe'] });
46
+ const child = spawn('git', args, {
47
+ cwd,
48
+ env: envWithoutInheritedRepo(),
49
+ stdio: ['ignore', 'pipe', 'pipe'],
50
+ });
21
51
  let stdout = '';
22
52
  let stderr = '';
23
53
  child.stdout.on('data', (b) => (stdout += b.toString()));
@@ -22,11 +22,13 @@ import { createDevAgentRunner } from './dev-agent-runner.js';
22
22
  import { resolveConsoleMount } from './serve-console.js';
23
23
  import { serverReadyLine } from '../../server/server-ready.js';
24
24
  import { createEphemeralContentSigningJWT } from '../../server/content-signing-jwt.js';
25
+ import { enableDevActorSignIn } from '../../server/actor-sign-in.js';
25
26
  import { applyModelAliasOverride } from '../../utils/model-alias-override.js';
26
27
  export const dev = pikkuSessionlessFunc({
27
28
  remote: true,
28
29
  func: async ({ logger, config, getInspectorState, invalidateInspectorState, variables, devServerRunner, }, { port, watch, hmr, coverage, test, model }, { rpc }) => {
29
30
  process.env.PIKKU_DEV_QUICK_LOGIN ??= 'true';
31
+ enableDevActorSignIn(logger);
30
32
  applyModelAliasOverride(logger, model, config.models);
31
33
  if (test) {
32
34
  process.env.PIKKU_TEST_RUN = 'true';
@@ -80,3 +80,10 @@ export declare const pikkuMetaContext: import("#pikku/function").PikkuFunctionCo
80
80
  * `pikku meta context`.
81
81
  */
82
82
  export declare const pikkuMetaClients: import("#pikku/function").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{}, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
83
+ export declare const pikkuMetaApply: import("#pikku/function").PikkuFunctionConfig<{
84
+ file?: string;
85
+ }, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
86
+ file?: string;
87
+ }, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
88
+ file?: string;
89
+ }, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
@@ -1,5 +1,8 @@
1
1
  import { pikkuSessionlessFunc } from '#pikku/function';
2
2
  import { getSchema } from '@pikku/core/schema';
3
+ import { CodeEditService } from '@pikku/code-edit';
4
+ import { readFile } from 'node:fs/promises';
5
+ import { relative, resolve } from 'node:path';
3
6
  function out(value) {
4
7
  console.log(JSON.stringify(value));
5
8
  }
@@ -452,3 +455,65 @@ export const pikkuMetaClients = pikkuSessionlessFunc({
452
455
  });
453
456
  },
454
457
  });
458
+ async function readOperationsInput(file) {
459
+ const raw = file
460
+ ? await readFile(resolve(file), 'utf-8')
461
+ : await new Promise((res, rej) => {
462
+ let buffer = '';
463
+ process.stdin.setEncoding('utf-8');
464
+ process.stdin.on('data', (chunk) => (buffer += chunk));
465
+ process.stdin.on('end', () => res(buffer));
466
+ process.stdin.on('error', rej);
467
+ });
468
+ if (!raw.trim()) {
469
+ throw new Error(file
470
+ ? `${file} is empty`
471
+ : 'No operations on stdin. Pass a file, or pipe JSON in.');
472
+ }
473
+ try {
474
+ return JSON.parse(raw);
475
+ }
476
+ catch (e) {
477
+ throw new Error(`Could not parse operations as JSON: ${e.message}`);
478
+ }
479
+ }
480
+ function parseOperations(input) {
481
+ const operations = Array.isArray(input)
482
+ ? input
483
+ : input?.operations;
484
+ if (!Array.isArray(operations)) {
485
+ throw new Error('Expected an array of operations, or an object with an "operations" array');
486
+ }
487
+ const kinds = ['functionConfig', 'functionBody', 'agentConfig'];
488
+ operations.forEach((operation, index) => {
489
+ const at = `operations[${index}]`;
490
+ if (!operation || typeof operation !== 'object') {
491
+ throw new Error(`${at} is not an object`);
492
+ }
493
+ const { kind, sourceFile, exportedName } = operation;
494
+ if (typeof kind !== 'string' || !kinds.includes(kind)) {
495
+ throw new Error(`${at}.kind must be one of ${kinds.join(', ')}`);
496
+ }
497
+ if (typeof sourceFile !== 'string' || !sourceFile) {
498
+ throw new Error(`${at}.sourceFile must be a non-empty string`);
499
+ }
500
+ if (typeof exportedName !== 'string' || !exportedName) {
501
+ throw new Error(`${at}.exportedName must be a non-empty string`);
502
+ }
503
+ });
504
+ return operations;
505
+ }
506
+ export const pikkuMetaApply = pikkuSessionlessFunc({
507
+ func: async ({ config }, data) => {
508
+ const operations = parseOperations(await readOperationsInput(data.file));
509
+ const rootDir = config.rootDir ?? process.cwd();
510
+ const codeEdit = new CodeEditService(rootDir);
511
+ const files = await codeEdit.applyOperations(operations);
512
+ out({
513
+ schemaVersion: 'meta-apply.v1',
514
+ applied: operations.length,
515
+ files: files.map((f) => relative(rootDir, f)),
516
+ generatedMetaIsStale: operations.some((o) => o.kind !== 'functionBody'),
517
+ });
518
+ },
519
+ });
@@ -1,33 +1,25 @@
1
1
  /**
2
- * Provision the declared personas into an environment: their accounts, and the
3
- * roles they declare.
2
+ * Report which personas an environment will provision, and which it will not.
4
3
  *
5
- * This is deployment, not seeding. `pikku db reset` applies a project's test
6
- * fixtures and does not run in production; an accountable persona doing a real
7
- * job in production still needs an account and its grants, and this is where
8
- * they come from.
4
+ * It reports rather than writes, because the writing happens somewhere this
5
+ * command cannot reach. Provisioning a persona means creating a user row and
6
+ * granting it roles, and both of those live in the deployment's database — one
7
+ * the CLI has no connection to for any environment that is not the developer's
8
+ * own. This command used to open a Kysely connection from the local project
9
+ * config and write through it, which provisioned a local stage correctly and
10
+ * silently provisioned the wrong database for every other environment.
9
11
  *
10
- * Additive in the same way `syncSystemRoles` is: it creates and grants, and
11
- * never deletes or revokes. Removing a persona from the code leaves their
12
- * account and their grants standing until somebody decides otherwise — which is
13
- * the point, because the alternative is a rolling deploy quietly locking out the
14
- * teammate that the older replica is still running.
15
- *
16
- * It needs both halves of an environment: its API, to sign the persona in, and
17
- * its database, to write the grants. They must be the same deployment — the
18
- * command has no way to check that, so pointing it at a stage's API and a local
19
- * database provisions nobody usefully.
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
16
+ * declaration, and the environment rule applied to it — which is what tells you
17
+ * before a deploy whether the accounts you expect will appear.
20
18
  */
21
19
  export declare const personaSync: import("#pikku/function").PikkuFunctionConfig<{
22
20
  environment: string;
23
- apiUrl?: string;
24
- dryRun?: boolean;
25
21
  }, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
26
22
  environment: string;
27
- apiUrl?: string;
28
- dryRun?: boolean;
29
23
  }, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
30
24
  environment: string;
31
- apiUrl?: string;
32
- dryRun?: boolean;
33
25
  }, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;