@pikku/cli 0.12.111 → 0.12.113

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 (220) hide show
  1. package/CHANGELOG.md +172 -0
  2. package/console-app/assets/{abnfDiagram-N423BO3Z-Bz2Ycfpe.js → abnfDiagram-N423BO3Z-Bltf5dmS.js} +1 -1
  3. package/console-app/assets/architecture-TIHT7OUA-DgRqRaqo.js +1 -0
  4. package/console-app/assets/{architectureDiagram-T3A2C74G-CvAkxhy0.js → architectureDiagram-T3A2C74G-BTtx6R7-.js} +1 -1
  5. package/console-app/assets/{blockDiagram-VBNYF7ZC-CuVOo2PB.js → blockDiagram-VBNYF7ZC-DgeTIOaM.js} +1 -1
  6. package/console-app/assets/{c4Diagram-5PPSVZJV-4Vg8SxCa.js → c4Diagram-5PPSVZJV-CaswnNob.js} +1 -1
  7. package/console-app/assets/channel-37lNznWk.js +1 -0
  8. package/console-app/assets/{chunk-2GRJ4B5K-CKKR4_dC.js → chunk-2GRJ4B5K-OnpnkpQT.js} +1 -1
  9. package/console-app/assets/{chunk-4I5QYGJK-C-m_kVjm.js → chunk-4I5QYGJK-CWmfNXFr.js} +1 -1
  10. package/console-app/assets/{chunk-5RXB4S5H-CyUGtd0h.js → chunk-5RXB4S5H-M8QmKeuk.js} +1 -1
  11. package/console-app/assets/{chunk-6Q2QTUOP-BuzItInf.js → chunk-6Q2QTUOP-C_h5lS68.js} +1 -1
  12. package/console-app/assets/{chunk-7Z6QIM7H-BGiBPuWt.js → chunk-7Z6QIM7H-DSnVb09k.js} +1 -1
  13. package/console-app/assets/{chunk-GF5L2VYU-D8jaliB9.js → chunk-GF5L2VYU-BkX038sq.js} +1 -1
  14. package/console-app/assets/{chunk-I66GZJ75-C-Lq_UXl.js → chunk-I66GZJ75-b3yMIljX.js} +1 -1
  15. package/console-app/assets/{chunk-JQJVKLGR-D7viK-tf.js → chunk-JQJVKLGR-Bihcz4nv.js} +1 -1
  16. package/console-app/assets/{chunk-KBJHAD2P-BS9N9gG4.js → chunk-KBJHAD2P-CS7eflbk.js} +1 -1
  17. package/console-app/assets/{chunk-NSK5VX7P-Fi_H0vaS.js → chunk-NSK5VX7P-CfigFGDQ.js} +1 -1
  18. package/console-app/assets/{chunk-QR6OTTB3-BJdg-tcL.js → chunk-QR6OTTB3-BBy8NfTW.js} +1 -1
  19. package/console-app/assets/{chunk-RYQCIY6F-CVbGA6YZ.js → chunk-RYQCIY6F-BCfZVQef.js} +1 -1
  20. package/console-app/assets/{chunk-UBXNYLIW-BF-sAqEK.js → chunk-UBXNYLIW-DkMKDHW4.js} +1 -1
  21. package/console-app/assets/{chunk-W5SLKNZC-CXrJJ0BX.js → chunk-W5SLKNZC-BSLytTSJ.js} +1 -1
  22. package/console-app/assets/{chunk-WRU74C26-CGzysGBy.js → chunk-WRU74C26-Dic7ZP8H.js} +1 -1
  23. package/console-app/assets/chunk-XXDRQBXY-B1prMCvW.js +1 -0
  24. package/console-app/assets/classDiagram-JCYQIIEL-BDCX9ZLm.js +1 -0
  25. package/console-app/assets/classDiagram-v2-OCEON4UE-BDCX9ZLm.js +1 -0
  26. package/console-app/assets/{cose-bilkent-JH36ORCC-BvFZIDHb.js → cose-bilkent-JH36ORCC-CEpWcE3M.js} +1 -1
  27. package/console-app/assets/{cynefin-VYW2F7L2-DRQ8xGmN.js → cynefin-VYW2F7L2-irPiPhgz.js} +1 -1
  28. package/console-app/assets/{cynefinDiagram-MW4NZA55-BwxQ4C1z.js → cynefinDiagram-MW4NZA55-CIkqQ912.js} +1 -1
  29. package/console-app/assets/{dagre-J22zmNeE.js → dagre-FZyyw3H3.js} +1 -1
  30. package/console-app/assets/{dagre-VZM6K2ZE-DPtUyvjD.js → dagre-VZM6K2ZE-Dxnnu7Rh.js} +1 -1
  31. package/console-app/assets/{diagram-7IWD3JNH-DGAzJ2Ln.js → diagram-7IWD3JNH-DaT47sVs.js} +1 -1
  32. package/console-app/assets/{diagram-B4RE2ZJO-D14cIfto.js → diagram-B4RE2ZJO-Dmht03tx.js} +1 -1
  33. package/console-app/assets/{diagram-LBJQPF4R-CUscJ_pO.js → diagram-LBJQPF4R-B--jwILh.js} +1 -1
  34. package/console-app/assets/{diagram-Q27KOJAE-CehBHMt3.js → diagram-Q27KOJAE-D9H0euUr.js} +1 -1
  35. package/console-app/assets/{diagram-UB23O5K3-BvazI_qH.js → diagram-UB23O5K3-DloUQ8tO.js} +1 -1
  36. package/console-app/assets/{ebnfDiagram-BXEA7PRR-CBZPYFwZ.js → ebnfDiagram-BXEA7PRR-gaOXzNBU.js} +1 -1
  37. package/console-app/assets/{erDiagram-JOGREHBK-BN3FevvT.js → erDiagram-JOGREHBK-3X9eTLsh.js} +1 -1
  38. package/console-app/assets/eventmodeling-45OFAUF4-BarrKD55.js +1 -0
  39. package/console-app/assets/flowDiagram-UKHOOZJN-B6RiRjcD.js +1 -0
  40. package/console-app/assets/{ganttDiagram-PKOTCBZU-03mWH2kB.js → ganttDiagram-PKOTCBZU-khAFwSBy.js} +1 -1
  41. package/console-app/assets/{gitGraph-TEB2WS4Q-By2486wn.js → gitGraph-TEB2WS4Q-Bb7uENmk.js} +1 -1
  42. package/console-app/assets/{gitGraphDiagram-DS77QQ5N-CCzKPRBJ.js → gitGraphDiagram-DS77QQ5N-OkSBM0h0.js} +1 -1
  43. package/console-app/assets/{index-snBzz_U8.js → index-Bn1BoT3w.js} +184 -184
  44. package/console-app/assets/{info-DKCQHKI2-C_vsavqC.js → info-DKCQHKI2-BH5dbX2B.js} +1 -1
  45. package/console-app/assets/{infoDiagram-6WML65LV-BKvU8du7.js → infoDiagram-6WML65LV-IbUl8J2C.js} +1 -1
  46. package/console-app/assets/{ishikawaDiagram-WSZJBQD7-CnF0qm0n.js → ishikawaDiagram-WSZJBQD7-CX0gA3de.js} +1 -1
  47. package/console-app/assets/{journeyDiagram-NVQOT4AX-DxKe9OZ7.js → journeyDiagram-NVQOT4AX--k2etXu8.js} +1 -1
  48. package/console-app/assets/{kanban-definition-27J2QSJJ-CB8lgPxU.js → kanban-definition-27J2QSJJ-D1FvtPpN.js} +1 -1
  49. package/console-app/assets/{line-DFNLso1I.js → line-JLMY_DDK.js} +1 -1
  50. package/console-app/assets/{linear-D1cspVtk.js → linear-CSvLB3cd.js} +1 -1
  51. package/console-app/assets/{mermaid-parser.core-BtmN233C.js → mermaid-parser.core-CwwjcAjz.js} +3 -3
  52. package/console-app/assets/{mermaid.core-37H5_HoB.js → mermaid.core-hmS_M4K5.js} +4 -4
  53. package/console-app/assets/{mindmap-definition-FAOFIHXS-Czf82JOB.js → mindmap-definition-FAOFIHXS-rTDa_CTp.js} +1 -1
  54. package/console-app/assets/{packet-7NZHBO7P-CErYxAQM.js → packet-7NZHBO7P-DBUJcYfI.js} +1 -1
  55. package/console-app/assets/{pegDiagram-VL7TDLO6-CRKX6HOt.js → pegDiagram-VL7TDLO6-D42PxXnS.js} +1 -1
  56. package/console-app/assets/{pie-RZYD4A2V-YmMmh6Nq.js → pie-RZYD4A2V-dM0uFAE4.js} +1 -1
  57. package/console-app/assets/{pieDiagram-7S7Q4E2Y-Cot0Fu5q.js → pieDiagram-7S7Q4E2Y-wCln1ucl.js} +1 -1
  58. package/console-app/assets/{quadrantDiagram-CIZ2JOQS-DPEonVYT.js → quadrantDiagram-CIZ2JOQS-DrRwS1g5.js} +1 -1
  59. package/console-app/assets/{radar-I7S5WNFK-Pf_KiQJM.js → radar-I7S5WNFK-BW0V-EGR.js} +1 -1
  60. package/console-app/assets/{railroad-3IZDKUUU-BYoOMoQY.js → railroad-3IZDKUUU-FiTHaDbb.js} +1 -1
  61. package/console-app/assets/railroad-abnf-AHOZXSZD-lmUjOixE.js +1 -0
  62. package/console-app/assets/railroad-ebnf-EBAXGLYW-ZjdA7OHp.js +1 -0
  63. package/console-app/assets/railroad-peg-LSFZ7HO6-VHSlvwI8.js +1 -0
  64. package/console-app/assets/{railroadDiagram-AXF67PYL-Di8N9tHD.js → railroadDiagram-AXF67PYL-9ef7j5U7.js} +1 -1
  65. package/console-app/assets/{requirementDiagram-LRYGKXZP-2yZZ753q.js → requirementDiagram-LRYGKXZP-Cu90DbEZ.js} +1 -1
  66. package/console-app/assets/{sankeyDiagram-W5VNT64P-BwYA-xq1.js → sankeyDiagram-W5VNT64P-Bhxmyxaw.js} +1 -1
  67. package/console-app/assets/{sequenceDiagram-SI44F4Z6-odIxlx8J.js → sequenceDiagram-SI44F4Z6-CBsbRTz8.js} +1 -1
  68. package/console-app/assets/{src-CxJwpjvz.js → src-BR8qR3lM.js} +1 -1
  69. package/console-app/assets/{stateDiagram-OKZ733FA-Du2S0qU9.js → stateDiagram-OKZ733FA-Dr0frETZ.js} +1 -1
  70. package/console-app/assets/stateDiagram-v2-UEYNNEHI-BSXWhCvf.js +1 -0
  71. package/console-app/assets/{swimlanes-SLNWSIFB-JZ3swzI2.js → swimlanes-SLNWSIFB-CXMjvd_a.js} +1 -1
  72. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-BUdsPDKC.js +8 -0
  73. package/console-app/assets/{timeline-definition-Z64GVDOM-CsppAEWi.js → timeline-definition-Z64GVDOM-DpmEZPV0.js} +1 -1
  74. package/console-app/assets/{treeView-QDETBFTQ-DkkO8peQ.js → treeView-QDETBFTQ-CjmuinMk.js} +1 -1
  75. package/console-app/assets/{treemap-6X3UGDF4-hjLkPCJI.js → treemap-6X3UGDF4-BP_fU6Cn.js} +1 -1
  76. package/console-app/assets/{vennDiagram-T6HMQDX7-BOfgM1xp.js → vennDiagram-T6HMQDX7-DgZS7iuW.js} +1 -1
  77. package/console-app/assets/{wardley-OPB4EBWU-C5ZtGfBa.js → wardley-OPB4EBWU-CgMPoouN.js} +1 -1
  78. package/console-app/assets/{wardleyDiagram-T6FBY63Y-ymf3Vm6A.js → wardleyDiagram-T6FBY63Y-6y-xxP1R.js} +1 -1
  79. package/console-app/assets/{xychartDiagram-ELKLHX3M-DdxXIoKz.js → xychartDiagram-ELKLHX3M-DOeIQjYI.js} +1 -1
  80. package/console-app/index.html +1 -1
  81. package/dist/.pikku/addon/index.d.ts +1 -1
  82. package/dist/.pikku/addon/index.js +1 -1
  83. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
  84. package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
  85. package/dist/.pikku/agent/index.d.ts +1 -1
  86. package/dist/.pikku/agent/index.js +1 -1
  87. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  88. package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
  89. package/dist/.pikku/auth/index.d.ts +1 -1
  90. package/dist/.pikku/auth/index.js +1 -1
  91. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
  92. package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
  93. package/dist/.pikku/channel/index.d.ts +1 -1
  94. package/dist/.pikku/channel/index.js +1 -1
  95. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  96. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  97. package/dist/.pikku/cli/index.d.ts +1 -1
  98. package/dist/.pikku/cli/index.js +1 -1
  99. package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
  100. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  101. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  102. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
  103. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
  104. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  105. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  106. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  107. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  108. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  109. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  110. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  111. package/dist/.pikku/error/index.d.ts +1 -1
  112. package/dist/.pikku/error/index.js +1 -1
  113. package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
  114. package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
  115. package/dist/.pikku/function/index.d.ts +1 -1
  116. package/dist/.pikku/function/index.js +1 -1
  117. package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
  118. package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
  119. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  120. package/dist/.pikku/function/pikku-functions-meta.gen.json +3 -3
  121. package/dist/.pikku/function/pikku-functions.gen.js +1 -1
  122. package/dist/.pikku/gateway/index.d.ts +1 -1
  123. package/dist/.pikku/gateway/index.js +1 -1
  124. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
  125. package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
  126. package/dist/.pikku/http/index.d.ts +1 -1
  127. package/dist/.pikku/http/index.js +1 -1
  128. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  129. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  130. package/dist/.pikku/mcp/index.d.ts +1 -1
  131. package/dist/.pikku/mcp/index.js +1 -1
  132. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  133. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  134. package/dist/.pikku/middleware/index.d.ts +1 -1
  135. package/dist/.pikku/middleware/index.js +1 -1
  136. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
  137. package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
  138. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
  139. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
  140. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  141. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  142. package/dist/.pikku/pikku-services.gen.d.ts +2 -1
  143. package/dist/.pikku/pikku-services.gen.js +1 -0
  144. package/dist/.pikku/queue/index.d.ts +1 -1
  145. package/dist/.pikku/queue/index.js +1 -1
  146. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  147. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  148. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
  149. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  150. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  151. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  152. package/dist/.pikku/scenarios/index.d.ts +1 -1
  153. package/dist/.pikku/scenarios/index.js +1 -1
  154. package/dist/.pikku/scenarios/pikku-personas.gen.js +1 -1
  155. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
  156. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
  157. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
  158. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
  159. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
  160. package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
  161. package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
  162. package/dist/.pikku/scheduler/index.d.ts +1 -1
  163. package/dist/.pikku/scheduler/index.js +1 -1
  164. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  165. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  166. package/dist/.pikku/schemas/register.gen.js +1 -1
  167. package/dist/.pikku/scopes/index.d.ts +1 -1
  168. package/dist/.pikku/scopes/index.js +1 -1
  169. package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
  170. package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
  171. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
  172. package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
  173. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
  174. package/dist/.pikku/secrets/index.d.ts +1 -1
  175. package/dist/.pikku/secrets/index.js +1 -1
  176. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  177. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  178. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  179. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  180. package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
  181. package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
  182. package/dist/.pikku/setup/index.d.ts +1 -1
  183. package/dist/.pikku/setup/index.js +1 -1
  184. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
  185. package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
  186. package/dist/.pikku/trigger/index.d.ts +1 -1
  187. package/dist/.pikku/trigger/index.js +1 -1
  188. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  189. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  190. package/dist/.pikku/variables/index.d.ts +1 -1
  191. package/dist/.pikku/variables/index.js +1 -1
  192. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  193. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  194. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  195. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  196. package/dist/.pikku/workflow/index.d.ts +1 -1
  197. package/dist/.pikku/workflow/index.js +1 -1
  198. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  199. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  200. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  201. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  202. package/dist/bin/pikku-bin.mjs +2 -2
  203. package/dist/src/functions/commands/dev.js +72 -62
  204. package/dist/src/functions/commands/persona.js +6 -0
  205. package/dist/src/functions/commands/watch.js +56 -37
  206. package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.js +485 -102
  207. package/package.json +4 -4
  208. package/surface.json +1 -1
  209. package/console-app/assets/architecture-TIHT7OUA-5QhJKy4P.js +0 -1
  210. package/console-app/assets/channel-DoE3nnYB.js +0 -1
  211. package/console-app/assets/chunk-XXDRQBXY-BDALKVU4.js +0 -1
  212. package/console-app/assets/classDiagram-JCYQIIEL-BgrrHQtN.js +0 -1
  213. package/console-app/assets/classDiagram-v2-OCEON4UE-BgrrHQtN.js +0 -1
  214. package/console-app/assets/eventmodeling-45OFAUF4-D2SxzJUl.js +0 -1
  215. package/console-app/assets/flowDiagram-UKHOOZJN-CQXuJ0z2.js +0 -1
  216. package/console-app/assets/railroad-abnf-AHOZXSZD-CCRXsRRD.js +0 -1
  217. package/console-app/assets/railroad-ebnf-EBAXGLYW-DVRSVgn8.js +0 -1
  218. package/console-app/assets/railroad-peg-LSFZ7HO6-COUBoNH3.js +0 -1
  219. package/console-app/assets/stateDiagram-v2-UEYNNEHI-CTXOGDRR.js +0 -1
  220. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-DRrggQgK.js +0 -8
package/CHANGELOG.md CHANGED
@@ -1,3 +1,175 @@
1
+ ## 0.12.113
2
+
3
+ ### Patch Changes
4
+
5
+ - f2c7969: Run one codegen pass per file change in `pikku dev`, not two
6
+
7
+ `configWatcher` watched the source directories and rebuilt the file watcher on
8
+ every change, whose `ready` handler immediately ran a full codegen — while the
9
+ old watcher's own `change` handler ran another. Each pass holds a whole
10
+ `ts.Program`, so the two overlapping passes doubled peak RSS and could OOM a
11
+ memory-capped sandbox. There is now a single long-lived watcher, and changes
12
+ arriving mid-pass coalesce into exactly one follow-up run.
13
+
14
+ - f2c7969: Keep `pikku watch` alive so it actually watches, and run one codegen pass per change
15
+
16
+ The command registered its chokidar handlers and returned, so the process exited
17
+ before `ready` ever fired and nothing was ever regenerated. It now stays alive the
18
+ way `pikku dev` does, and uses the same single-watcher, in-flight-coalescing shape,
19
+ so a change during a pass schedules exactly one more run instead of overlapping two
20
+ `ts.Program`s.
21
+
22
+ ## 0.12.112
23
+
24
+ ### Patch Changes
25
+
26
+ - 05e47cf: fix(persona): give `persona run` a singleton agent runner, so `talkTo` works
27
+
28
+ `pikku persona run` built a dev agent runner and handed it to the virtual-user
29
+ engine as `llm`, which covers the persona's own thinking and nothing else. The
30
+ `talkTo` tool does not go through that handle: `HttpPersona.converse` asks
31
+ `getSingletonServices()` for an `agentRunner`, and the CLI had never put one
32
+ there. So a persona whose scopes reached one of the app's agents threw
33
+ `AIProviderNotConfiguredError` on its first turn and took the whole run with
34
+ it, while the same project ran fine as a persona holding no agent scopes —
35
+ which reads as the app being broken for its privileged users rather than as a
36
+ missing wire in the runner.
37
+
38
+ The runner is now registered on the singleton services before the run starts.
39
+ Nothing else about the run changes; a project with no agents behaves exactly as
40
+ it did.
41
+
42
+ - 05e47cf: feat(virtual-user): make a run's history readable
43
+
44
+ There was no way to ask what the virtual users had been doing. The scaffold
45
+ generated a way to start a run and a way to read one back by id, and
46
+ `VirtualUserRunStore.list()` — which takes a persona filter — had no caller at
47
+ all. The console's Virtual Users screen was built entirely from static meta, so
48
+ it could say who a persona was and what they could reach, and nothing about
49
+ whether anybody had ever turned them loose.
50
+
51
+ The scaffold now also generates `listVirtualUserRuns` and
52
+ `getVirtualUserRunSteps`, both behind the existing `virtualUser:read` scope —
53
+ the transcript is strictly more sensitive than the summary it belongs to, since
54
+ it carries the live ids and payloads the run actually sent.
55
+
56
+ The console reads the same two things through the console addon
57
+ (`console:getVirtualUserRuns`, `console:getVirtualUserRunSteps`) off the host's
58
+ own `virtualUserRunStore`, under a new `pikku:console:virtualUsers:read` scope.
59
+ Going through the store rather than the scaffolded RPCs means a project's runs
60
+ show up whether or not it turned `scaffold.virtualUser` on — wiring the store is
61
+ all a run has ever needed. A host with no store answers with an empty list
62
+ rather than an error: it has no runs, which is a true answer.
63
+
64
+ Each persona now shows its recent runs under the declaration — status, when,
65
+ steps and mutations, findings, disposition and seed — and opening one fetches
66
+ its transcript. The steps are fetched only on open, because the history is read
67
+ far more often than any single run is.
68
+
69
+ - 05e47cf: feat(virtual-user): keep the transcript a run already produced
70
+
71
+ The engine returns `intents` and `steps` on every run — what the user set out
72
+ to do, and every turn it took getting there — and `VirtualUserRunOutcome` kept
73
+ neither. The record held counts and findings, so the one question anybody
74
+ actually asks of a completed run ("what did it _do_?") had no answer anywhere,
75
+ even though the answer had been computed and thrown away a moment earlier.
76
+
77
+ `VirtualUserRunOutcome` now carries both, and `VirtualUserRunStore` gains a
78
+ `steps(runId, options?)` read. Intents ride on the run record: there are a
79
+ handful of them and every read of the run wants them. Steps get their own
80
+ `virtualUserRunStep` table, because a run at a 500-step budget carries more
81
+ transcript than every other column together and `list()` would pay for it on
82
+ every row.
83
+
84
+ Three things the kysely store had to get right, all of them driver differences
85
+ rather than design:
86
+
87
+ - steps are inserted in chunks of 50, because a bare sqlite driver binds at
88
+ most 999 variables per statement and ten columns times a 500-step budget is
89
+ five thousand — an un-chunked insert fails on long runs, which are the
90
+ interesting ones;
91
+ - `ok` is stored as 0 or 1, since a bare driver cannot bind a boolean at all
92
+ and `SerializePlugin` is not installed everywhere;
93
+ - `response` is stored JSON-encoded, because a truncated API response usually
94
+ starts with a brace and `SerializePlugin` would otherwise read it back as an
95
+ object rather than the string the engine saw.
96
+
97
+ Completing a run that does not exist no longer writes steps: there is no
98
+ foreign key to refuse them and nothing would ever read or reap them.
99
+
100
+ **This adds a table to the `virtualUser` schema**, and the runtime creates
101
+ nothing: a database that already has `virtualUserRun` gets the store's own
102
+ refusal at startup until `pikku db generate` writes the migration and
103
+ `pikku db migrate` applies it. Landing it now costs nothing, because
104
+ `scaffold.virtualUser` is not yet switched on anywhere.
105
+
106
+ - 05e47cf: feat(virtual-user): put each persona on its own clock
107
+
108
+ A budget says where one run stops. Nothing said how often a persona should use
109
+ the application, so in practice each one ran whenever somebody remembered — and
110
+ what actually tells you about a product is the same user coming back over a
111
+ fortnight.
112
+
113
+ Each persona now gets a row rather than a bigger budget. `virtualUserSchedule`
114
+ holds `enabled`, the disposition and goals to run with, an interval **range**,
115
+ and `nextRunAt`. `tickVirtualUserSchedules` acts on whichever rows are due:
116
+
117
+ ```ts
118
+ wireScheduler({
119
+ name: 'virtualUsers',
120
+ schedule: '0 * * * *',
121
+ func: tickVirtualUserSchedules,
122
+ })
123
+ ```
124
+
125
+ The tick is generated and wired by nobody, deliberately. A scaffolded
126
+ `wireScheduler` would start spending an application's model budget the moment
127
+ somebody ran `pikku all`, on a host that may not run schedulers at all. Tick
128
+ resolution bounds how late a due persona is, never how often it runs.
129
+
130
+ Three things it does that are easy to leave out:
131
+
132
+ - The next due time is written **before** the run is dispatched, so a tick that
133
+ dies halfway cannot hand the same persona to the next one. A dispatch that
134
+ throws waits a full interval instead of retrying every minute for a week.
135
+ That write is a compare-and-set against the `nextRunAt` the tick read, so it
136
+ is also how a tick _wins_ the persona: two processes on the same cron see the
137
+ same due row, and only the one whose claim lands dispatches.
138
+ - A persona whose previous run is still `running` is skipped, not queued. Two
139
+ copies of the same user acting at once is a different test, and its findings
140
+ do not reproduce.
141
+ - A run still `running` after two hours is failed. Without that, one restart
142
+ mid-run blocks that persona's schedule permanently — which is where the
143
+ stranded-record cost of not using a queue finally gets paid.
144
+
145
+ Reschedule-on-completion was the other candidate and is worse in exactly one
146
+ way, fatally: a crash between finishing and scheduling ends the persona forever,
147
+ and the evidence is an absence.
148
+
149
+ New: `VirtualUserScheduleStore` in core (with the tick, `isDue` and `nextRunAt`
150
+ as pure functions), `KyselyVirtualUserScheduleStore` and its own schema —
151
+ its own rather than a third table in `virtualUserSchema`, and owned by its own
152
+ store, so a project that records runs and never wants them unattended carries no
153
+ cadence table. `scaffold.virtualUser` gains `setVirtualUserSchedule`,
154
+ `listVirtualUserSchedules` and the tick, behind a new `virtualUser:schedule`
155
+ scope: starting a run spends money once with a caller watching, while writing a
156
+ schedule spends it repeatedly with nobody there.
157
+
158
+ The console's Virtual Users screen gains a **Run now** button beside a persona's
159
+ run history, gated on `pikku:console:virtualUsers:run`. It dispatches the
160
+ project's own `runVirtualUser` rather than starting a run itself, so a run the
161
+ application would refuse — an acted-upon persona, a non-accountable disposition
162
+ in production — is still refused.
163
+
164
+ - Updated dependencies [3c0012c]
165
+ - Updated dependencies [05e47cf]
166
+ - Updated dependencies [cfd364a]
167
+ - Updated dependencies [05e47cf]
168
+ - Updated dependencies [05e47cf]
169
+ - Updated dependencies [05e47cf]
170
+ - @pikku/core@0.12.90
171
+ - @pikku/kysely@0.13.21
172
+
1
173
  ## 0.12.111
2
174
 
3
175
  ### Patch Changes
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-BtmN233C.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t as r}from"./src-CxJwpjvz.js";import"./chunk-I66GZJ75-C-Lq_UXl.js";import{n as i,r as a,t as o}from"./chunk-6Q2QTUOP-BuzItInf.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-37H5_HoB.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-CwwjcAjz.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t as r}from"./src-BR8qR3lM.js";import"./chunk-I66GZJ75-b3yMIljX.js";import{n as i,r as a,t as o}from"./chunk-6Q2QTUOP-C_h5lS68.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-hmS_M4K5.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -0,0 +1 @@
1
+ import"./chunk-KEIR6QF5-BICK3FdT.js";import{M as e}from"./mermaid-parser.core-CwwjcAjz.js";export{e as createArchitectureServices};