@pikku/cli 0.12.111 → 0.12.112

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 (218) hide show
  1. package/CHANGELOG.md +151 -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 +1 -1
  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/persona.js +6 -0
  204. package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.js +485 -102
  205. package/package.json +4 -4
  206. package/surface.json +1 -1
  207. package/console-app/assets/architecture-TIHT7OUA-5QhJKy4P.js +0 -1
  208. package/console-app/assets/channel-DoE3nnYB.js +0 -1
  209. package/console-app/assets/chunk-XXDRQBXY-BDALKVU4.js +0 -1
  210. package/console-app/assets/classDiagram-JCYQIIEL-BgrrHQtN.js +0 -1
  211. package/console-app/assets/classDiagram-v2-OCEON4UE-BgrrHQtN.js +0 -1
  212. package/console-app/assets/eventmodeling-45OFAUF4-D2SxzJUl.js +0 -1
  213. package/console-app/assets/flowDiagram-UKHOOZJN-CQXuJ0z2.js +0 -1
  214. package/console-app/assets/railroad-abnf-AHOZXSZD-CCRXsRRD.js +0 -1
  215. package/console-app/assets/railroad-ebnf-EBAXGLYW-DVRSVgn8.js +0 -1
  216. package/console-app/assets/railroad-peg-LSFZ7HO6-COUBoNH3.js +0 -1
  217. package/console-app/assets/stateDiagram-v2-UEYNNEHI-CTXOGDRR.js +0 -1
  218. package/console-app/assets/swimlanesDiagram-ULZ7WXOC-DRrggQgK.js +0 -8
package/CHANGELOG.md CHANGED
@@ -1,3 +1,154 @@
1
+ ## 0.12.112
2
+
3
+ ### Patch Changes
4
+
5
+ - 05e47cf: fix(persona): give `persona run` a singleton agent runner, so `talkTo` works
6
+
7
+ `pikku persona run` built a dev agent runner and handed it to the virtual-user
8
+ engine as `llm`, which covers the persona's own thinking and nothing else. The
9
+ `talkTo` tool does not go through that handle: `HttpPersona.converse` asks
10
+ `getSingletonServices()` for an `agentRunner`, and the CLI had never put one
11
+ there. So a persona whose scopes reached one of the app's agents threw
12
+ `AIProviderNotConfiguredError` on its first turn and took the whole run with
13
+ it, while the same project ran fine as a persona holding no agent scopes —
14
+ which reads as the app being broken for its privileged users rather than as a
15
+ missing wire in the runner.
16
+
17
+ The runner is now registered on the singleton services before the run starts.
18
+ Nothing else about the run changes; a project with no agents behaves exactly as
19
+ it did.
20
+
21
+ - 05e47cf: feat(virtual-user): make a run's history readable
22
+
23
+ There was no way to ask what the virtual users had been doing. The scaffold
24
+ generated a way to start a run and a way to read one back by id, and
25
+ `VirtualUserRunStore.list()` — which takes a persona filter — had no caller at
26
+ all. The console's Virtual Users screen was built entirely from static meta, so
27
+ it could say who a persona was and what they could reach, and nothing about
28
+ whether anybody had ever turned them loose.
29
+
30
+ The scaffold now also generates `listVirtualUserRuns` and
31
+ `getVirtualUserRunSteps`, both behind the existing `virtualUser:read` scope —
32
+ the transcript is strictly more sensitive than the summary it belongs to, since
33
+ it carries the live ids and payloads the run actually sent.
34
+
35
+ The console reads the same two things through the console addon
36
+ (`console:getVirtualUserRuns`, `console:getVirtualUserRunSteps`) off the host's
37
+ own `virtualUserRunStore`, under a new `pikku:console:virtualUsers:read` scope.
38
+ Going through the store rather than the scaffolded RPCs means a project's runs
39
+ show up whether or not it turned `scaffold.virtualUser` on — wiring the store is
40
+ all a run has ever needed. A host with no store answers with an empty list
41
+ rather than an error: it has no runs, which is a true answer.
42
+
43
+ Each persona now shows its recent runs under the declaration — status, when,
44
+ steps and mutations, findings, disposition and seed — and opening one fetches
45
+ its transcript. The steps are fetched only on open, because the history is read
46
+ far more often than any single run is.
47
+
48
+ - 05e47cf: feat(virtual-user): keep the transcript a run already produced
49
+
50
+ The engine returns `intents` and `steps` on every run — what the user set out
51
+ to do, and every turn it took getting there — and `VirtualUserRunOutcome` kept
52
+ neither. The record held counts and findings, so the one question anybody
53
+ actually asks of a completed run ("what did it _do_?") had no answer anywhere,
54
+ even though the answer had been computed and thrown away a moment earlier.
55
+
56
+ `VirtualUserRunOutcome` now carries both, and `VirtualUserRunStore` gains a
57
+ `steps(runId, options?)` read. Intents ride on the run record: there are a
58
+ handful of them and every read of the run wants them. Steps get their own
59
+ `virtualUserRunStep` table, because a run at a 500-step budget carries more
60
+ transcript than every other column together and `list()` would pay for it on
61
+ every row.
62
+
63
+ Three things the kysely store had to get right, all of them driver differences
64
+ rather than design:
65
+
66
+ - steps are inserted in chunks of 50, because a bare sqlite driver binds at
67
+ most 999 variables per statement and ten columns times a 500-step budget is
68
+ five thousand — an un-chunked insert fails on long runs, which are the
69
+ interesting ones;
70
+ - `ok` is stored as 0 or 1, since a bare driver cannot bind a boolean at all
71
+ and `SerializePlugin` is not installed everywhere;
72
+ - `response` is stored JSON-encoded, because a truncated API response usually
73
+ starts with a brace and `SerializePlugin` would otherwise read it back as an
74
+ object rather than the string the engine saw.
75
+
76
+ Completing a run that does not exist no longer writes steps: there is no
77
+ foreign key to refuse them and nothing would ever read or reap them.
78
+
79
+ **This adds a table to the `virtualUser` schema**, and the runtime creates
80
+ nothing: a database that already has `virtualUserRun` gets the store's own
81
+ refusal at startup until `pikku db generate` writes the migration and
82
+ `pikku db migrate` applies it. Landing it now costs nothing, because
83
+ `scaffold.virtualUser` is not yet switched on anywhere.
84
+
85
+ - 05e47cf: feat(virtual-user): put each persona on its own clock
86
+
87
+ A budget says where one run stops. Nothing said how often a persona should use
88
+ the application, so in practice each one ran whenever somebody remembered — and
89
+ what actually tells you about a product is the same user coming back over a
90
+ fortnight.
91
+
92
+ Each persona now gets a row rather than a bigger budget. `virtualUserSchedule`
93
+ holds `enabled`, the disposition and goals to run with, an interval **range**,
94
+ and `nextRunAt`. `tickVirtualUserSchedules` acts on whichever rows are due:
95
+
96
+ ```ts
97
+ wireScheduler({
98
+ name: 'virtualUsers',
99
+ schedule: '0 * * * *',
100
+ func: tickVirtualUserSchedules,
101
+ })
102
+ ```
103
+
104
+ The tick is generated and wired by nobody, deliberately. A scaffolded
105
+ `wireScheduler` would start spending an application's model budget the moment
106
+ somebody ran `pikku all`, on a host that may not run schedulers at all. Tick
107
+ resolution bounds how late a due persona is, never how often it runs.
108
+
109
+ Three things it does that are easy to leave out:
110
+
111
+ - The next due time is written **before** the run is dispatched, so a tick that
112
+ dies halfway cannot hand the same persona to the next one. A dispatch that
113
+ throws waits a full interval instead of retrying every minute for a week.
114
+ That write is a compare-and-set against the `nextRunAt` the tick read, so it
115
+ is also how a tick _wins_ the persona: two processes on the same cron see the
116
+ same due row, and only the one whose claim lands dispatches.
117
+ - A persona whose previous run is still `running` is skipped, not queued. Two
118
+ copies of the same user acting at once is a different test, and its findings
119
+ do not reproduce.
120
+ - A run still `running` after two hours is failed. Without that, one restart
121
+ mid-run blocks that persona's schedule permanently — which is where the
122
+ stranded-record cost of not using a queue finally gets paid.
123
+
124
+ Reschedule-on-completion was the other candidate and is worse in exactly one
125
+ way, fatally: a crash between finishing and scheduling ends the persona forever,
126
+ and the evidence is an absence.
127
+
128
+ New: `VirtualUserScheduleStore` in core (with the tick, `isDue` and `nextRunAt`
129
+ as pure functions), `KyselyVirtualUserScheduleStore` and its own schema —
130
+ its own rather than a third table in `virtualUserSchema`, and owned by its own
131
+ store, so a project that records runs and never wants them unattended carries no
132
+ cadence table. `scaffold.virtualUser` gains `setVirtualUserSchedule`,
133
+ `listVirtualUserSchedules` and the tick, behind a new `virtualUser:schedule`
134
+ scope: starting a run spends money once with a caller watching, while writing a
135
+ schedule spends it repeatedly with nobody there.
136
+
137
+ The console's Virtual Users screen gains a **Run now** button beside a persona's
138
+ run history, gated on `pikku:console:virtualUsers:run`. It dispatches the
139
+ project's own `runVirtualUser` rather than starting a run itself, so a run the
140
+ application would refuse — an acted-upon persona, a non-accountable disposition
141
+ in production — is still refused.
142
+
143
+ - Updated dependencies [3c0012c]
144
+ - Updated dependencies [05e47cf]
145
+ - Updated dependencies [cfd364a]
146
+ - Updated dependencies [05e47cf]
147
+ - Updated dependencies [05e47cf]
148
+ - Updated dependencies [05e47cf]
149
+ - @pikku/core@0.12.90
150
+ - @pikku/kysely@0.13.21
151
+
1
152
  ## 0.12.111
2
153
 
3
154
  ### 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};