@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.
- package/CHANGELOG.md +172 -0
- package/console-app/assets/{abnfDiagram-N423BO3Z-Bz2Ycfpe.js → abnfDiagram-N423BO3Z-Bltf5dmS.js} +1 -1
- package/console-app/assets/architecture-TIHT7OUA-DgRqRaqo.js +1 -0
- package/console-app/assets/{architectureDiagram-T3A2C74G-CvAkxhy0.js → architectureDiagram-T3A2C74G-BTtx6R7-.js} +1 -1
- package/console-app/assets/{blockDiagram-VBNYF7ZC-CuVOo2PB.js → blockDiagram-VBNYF7ZC-DgeTIOaM.js} +1 -1
- package/console-app/assets/{c4Diagram-5PPSVZJV-4Vg8SxCa.js → c4Diagram-5PPSVZJV-CaswnNob.js} +1 -1
- package/console-app/assets/channel-37lNznWk.js +1 -0
- package/console-app/assets/{chunk-2GRJ4B5K-CKKR4_dC.js → chunk-2GRJ4B5K-OnpnkpQT.js} +1 -1
- package/console-app/assets/{chunk-4I5QYGJK-C-m_kVjm.js → chunk-4I5QYGJK-CWmfNXFr.js} +1 -1
- package/console-app/assets/{chunk-5RXB4S5H-CyUGtd0h.js → chunk-5RXB4S5H-M8QmKeuk.js} +1 -1
- package/console-app/assets/{chunk-6Q2QTUOP-BuzItInf.js → chunk-6Q2QTUOP-C_h5lS68.js} +1 -1
- package/console-app/assets/{chunk-7Z6QIM7H-BGiBPuWt.js → chunk-7Z6QIM7H-DSnVb09k.js} +1 -1
- package/console-app/assets/{chunk-GF5L2VYU-D8jaliB9.js → chunk-GF5L2VYU-BkX038sq.js} +1 -1
- package/console-app/assets/{chunk-I66GZJ75-C-Lq_UXl.js → chunk-I66GZJ75-b3yMIljX.js} +1 -1
- package/console-app/assets/{chunk-JQJVKLGR-D7viK-tf.js → chunk-JQJVKLGR-Bihcz4nv.js} +1 -1
- package/console-app/assets/{chunk-KBJHAD2P-BS9N9gG4.js → chunk-KBJHAD2P-CS7eflbk.js} +1 -1
- package/console-app/assets/{chunk-NSK5VX7P-Fi_H0vaS.js → chunk-NSK5VX7P-CfigFGDQ.js} +1 -1
- package/console-app/assets/{chunk-QR6OTTB3-BJdg-tcL.js → chunk-QR6OTTB3-BBy8NfTW.js} +1 -1
- package/console-app/assets/{chunk-RYQCIY6F-CVbGA6YZ.js → chunk-RYQCIY6F-BCfZVQef.js} +1 -1
- package/console-app/assets/{chunk-UBXNYLIW-BF-sAqEK.js → chunk-UBXNYLIW-DkMKDHW4.js} +1 -1
- package/console-app/assets/{chunk-W5SLKNZC-CXrJJ0BX.js → chunk-W5SLKNZC-BSLytTSJ.js} +1 -1
- package/console-app/assets/{chunk-WRU74C26-CGzysGBy.js → chunk-WRU74C26-Dic7ZP8H.js} +1 -1
- package/console-app/assets/chunk-XXDRQBXY-B1prMCvW.js +1 -0
- package/console-app/assets/classDiagram-JCYQIIEL-BDCX9ZLm.js +1 -0
- package/console-app/assets/classDiagram-v2-OCEON4UE-BDCX9ZLm.js +1 -0
- package/console-app/assets/{cose-bilkent-JH36ORCC-BvFZIDHb.js → cose-bilkent-JH36ORCC-CEpWcE3M.js} +1 -1
- package/console-app/assets/{cynefin-VYW2F7L2-DRQ8xGmN.js → cynefin-VYW2F7L2-irPiPhgz.js} +1 -1
- package/console-app/assets/{cynefinDiagram-MW4NZA55-BwxQ4C1z.js → cynefinDiagram-MW4NZA55-CIkqQ912.js} +1 -1
- package/console-app/assets/{dagre-J22zmNeE.js → dagre-FZyyw3H3.js} +1 -1
- package/console-app/assets/{dagre-VZM6K2ZE-DPtUyvjD.js → dagre-VZM6K2ZE-Dxnnu7Rh.js} +1 -1
- package/console-app/assets/{diagram-7IWD3JNH-DGAzJ2Ln.js → diagram-7IWD3JNH-DaT47sVs.js} +1 -1
- package/console-app/assets/{diagram-B4RE2ZJO-D14cIfto.js → diagram-B4RE2ZJO-Dmht03tx.js} +1 -1
- package/console-app/assets/{diagram-LBJQPF4R-CUscJ_pO.js → diagram-LBJQPF4R-B--jwILh.js} +1 -1
- package/console-app/assets/{diagram-Q27KOJAE-CehBHMt3.js → diagram-Q27KOJAE-D9H0euUr.js} +1 -1
- package/console-app/assets/{diagram-UB23O5K3-BvazI_qH.js → diagram-UB23O5K3-DloUQ8tO.js} +1 -1
- package/console-app/assets/{ebnfDiagram-BXEA7PRR-CBZPYFwZ.js → ebnfDiagram-BXEA7PRR-gaOXzNBU.js} +1 -1
- package/console-app/assets/{erDiagram-JOGREHBK-BN3FevvT.js → erDiagram-JOGREHBK-3X9eTLsh.js} +1 -1
- package/console-app/assets/eventmodeling-45OFAUF4-BarrKD55.js +1 -0
- package/console-app/assets/flowDiagram-UKHOOZJN-B6RiRjcD.js +1 -0
- package/console-app/assets/{ganttDiagram-PKOTCBZU-03mWH2kB.js → ganttDiagram-PKOTCBZU-khAFwSBy.js} +1 -1
- package/console-app/assets/{gitGraph-TEB2WS4Q-By2486wn.js → gitGraph-TEB2WS4Q-Bb7uENmk.js} +1 -1
- package/console-app/assets/{gitGraphDiagram-DS77QQ5N-CCzKPRBJ.js → gitGraphDiagram-DS77QQ5N-OkSBM0h0.js} +1 -1
- package/console-app/assets/{index-snBzz_U8.js → index-Bn1BoT3w.js} +184 -184
- package/console-app/assets/{info-DKCQHKI2-C_vsavqC.js → info-DKCQHKI2-BH5dbX2B.js} +1 -1
- package/console-app/assets/{infoDiagram-6WML65LV-BKvU8du7.js → infoDiagram-6WML65LV-IbUl8J2C.js} +1 -1
- package/console-app/assets/{ishikawaDiagram-WSZJBQD7-CnF0qm0n.js → ishikawaDiagram-WSZJBQD7-CX0gA3de.js} +1 -1
- package/console-app/assets/{journeyDiagram-NVQOT4AX-DxKe9OZ7.js → journeyDiagram-NVQOT4AX--k2etXu8.js} +1 -1
- package/console-app/assets/{kanban-definition-27J2QSJJ-CB8lgPxU.js → kanban-definition-27J2QSJJ-D1FvtPpN.js} +1 -1
- package/console-app/assets/{line-DFNLso1I.js → line-JLMY_DDK.js} +1 -1
- package/console-app/assets/{linear-D1cspVtk.js → linear-CSvLB3cd.js} +1 -1
- package/console-app/assets/{mermaid-parser.core-BtmN233C.js → mermaid-parser.core-CwwjcAjz.js} +3 -3
- package/console-app/assets/{mermaid.core-37H5_HoB.js → mermaid.core-hmS_M4K5.js} +4 -4
- package/console-app/assets/{mindmap-definition-FAOFIHXS-Czf82JOB.js → mindmap-definition-FAOFIHXS-rTDa_CTp.js} +1 -1
- package/console-app/assets/{packet-7NZHBO7P-CErYxAQM.js → packet-7NZHBO7P-DBUJcYfI.js} +1 -1
- package/console-app/assets/{pegDiagram-VL7TDLO6-CRKX6HOt.js → pegDiagram-VL7TDLO6-D42PxXnS.js} +1 -1
- package/console-app/assets/{pie-RZYD4A2V-YmMmh6Nq.js → pie-RZYD4A2V-dM0uFAE4.js} +1 -1
- package/console-app/assets/{pieDiagram-7S7Q4E2Y-Cot0Fu5q.js → pieDiagram-7S7Q4E2Y-wCln1ucl.js} +1 -1
- package/console-app/assets/{quadrantDiagram-CIZ2JOQS-DPEonVYT.js → quadrantDiagram-CIZ2JOQS-DrRwS1g5.js} +1 -1
- package/console-app/assets/{radar-I7S5WNFK-Pf_KiQJM.js → radar-I7S5WNFK-BW0V-EGR.js} +1 -1
- package/console-app/assets/{railroad-3IZDKUUU-BYoOMoQY.js → railroad-3IZDKUUU-FiTHaDbb.js} +1 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-lmUjOixE.js +1 -0
- package/console-app/assets/railroad-ebnf-EBAXGLYW-ZjdA7OHp.js +1 -0
- package/console-app/assets/railroad-peg-LSFZ7HO6-VHSlvwI8.js +1 -0
- package/console-app/assets/{railroadDiagram-AXF67PYL-Di8N9tHD.js → railroadDiagram-AXF67PYL-9ef7j5U7.js} +1 -1
- package/console-app/assets/{requirementDiagram-LRYGKXZP-2yZZ753q.js → requirementDiagram-LRYGKXZP-Cu90DbEZ.js} +1 -1
- package/console-app/assets/{sankeyDiagram-W5VNT64P-BwYA-xq1.js → sankeyDiagram-W5VNT64P-Bhxmyxaw.js} +1 -1
- package/console-app/assets/{sequenceDiagram-SI44F4Z6-odIxlx8J.js → sequenceDiagram-SI44F4Z6-CBsbRTz8.js} +1 -1
- package/console-app/assets/{src-CxJwpjvz.js → src-BR8qR3lM.js} +1 -1
- package/console-app/assets/{stateDiagram-OKZ733FA-Du2S0qU9.js → stateDiagram-OKZ733FA-Dr0frETZ.js} +1 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-BSXWhCvf.js +1 -0
- package/console-app/assets/{swimlanes-SLNWSIFB-JZ3swzI2.js → swimlanes-SLNWSIFB-CXMjvd_a.js} +1 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-BUdsPDKC.js +8 -0
- package/console-app/assets/{timeline-definition-Z64GVDOM-CsppAEWi.js → timeline-definition-Z64GVDOM-DpmEZPV0.js} +1 -1
- package/console-app/assets/{treeView-QDETBFTQ-DkkO8peQ.js → treeView-QDETBFTQ-CjmuinMk.js} +1 -1
- package/console-app/assets/{treemap-6X3UGDF4-hjLkPCJI.js → treemap-6X3UGDF4-BP_fU6Cn.js} +1 -1
- package/console-app/assets/{vennDiagram-T6HMQDX7-BOfgM1xp.js → vennDiagram-T6HMQDX7-DgZS7iuW.js} +1 -1
- package/console-app/assets/{wardley-OPB4EBWU-C5ZtGfBa.js → wardley-OPB4EBWU-CgMPoouN.js} +1 -1
- package/console-app/assets/{wardleyDiagram-T6FBY63Y-ymf3Vm6A.js → wardleyDiagram-T6FBY63Y-6y-xxP1R.js} +1 -1
- package/console-app/assets/{xychartDiagram-ELKLHX3M-DdxXIoKz.js → xychartDiagram-ELKLHX3M-DOeIQjYI.js} +1 -1
- package/console-app/index.html +1 -1
- package/dist/.pikku/addon/index.d.ts +1 -1
- package/dist/.pikku/addon/index.js +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
- package/dist/.pikku/agent/index.d.ts +1 -1
- package/dist/.pikku/agent/index.js +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
- package/dist/.pikku/auth/index.d.ts +1 -1
- package/dist/.pikku/auth/index.js +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
- package/dist/.pikku/channel/index.d.ts +1 -1
- package/dist/.pikku/channel/index.js +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/index.d.ts +1 -1
- package/dist/.pikku/cli/index.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- package/dist/.pikku/error/index.d.ts +1 -1
- package/dist/.pikku/error/index.js +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
- package/dist/.pikku/function/index.d.ts +1 -1
- package/dist/.pikku/function/index.js +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +3 -3
- package/dist/.pikku/function/pikku-functions.gen.js +1 -1
- package/dist/.pikku/gateway/index.d.ts +1 -1
- package/dist/.pikku/gateway/index.js +1 -1
- package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
- package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
- package/dist/.pikku/http/index.d.ts +1 -1
- package/dist/.pikku/http/index.js +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/mcp/index.d.ts +1 -1
- package/dist/.pikku/mcp/index.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/middleware/index.d.ts +1 -1
- package/dist/.pikku/middleware/index.js +1 -1
- package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
- package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
- package/dist/.pikku/pikku-services.gen.d.ts +2 -1
- package/dist/.pikku/pikku-services.gen.js +1 -0
- package/dist/.pikku/queue/index.d.ts +1 -1
- package/dist/.pikku/queue/index.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/scenarios/index.d.ts +1 -1
- package/dist/.pikku/scenarios/index.js +1 -1
- package/dist/.pikku/scenarios/pikku-personas.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
- package/dist/.pikku/scheduler/index.d.ts +1 -1
- package/dist/.pikku/scheduler/index.js +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +1 -1
- package/dist/.pikku/scopes/index.d.ts +1 -1
- package/dist/.pikku/scopes/index.js +1 -1
- package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
- package/dist/.pikku/secrets/index.d.ts +1 -1
- package/dist/.pikku/secrets/index.js +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/setup/index.d.ts +1 -1
- package/dist/.pikku/setup/index.js +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
- package/dist/.pikku/trigger/index.d.ts +1 -1
- package/dist/.pikku/trigger/index.js +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/index.d.ts +1 -1
- package/dist/.pikku/variables/index.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
- package/dist/.pikku/workflow/index.d.ts +1 -1
- package/dist/.pikku/workflow/index.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/functions/commands/dev.js +72 -62
- package/dist/src/functions/commands/persona.js +6 -0
- package/dist/src/functions/commands/watch.js +56 -37
- package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.js +485 -102
- package/package.json +4 -4
- package/surface.json +1 -1
- package/console-app/assets/architecture-TIHT7OUA-5QhJKy4P.js +0 -1
- package/console-app/assets/channel-DoE3nnYB.js +0 -1
- package/console-app/assets/chunk-XXDRQBXY-BDALKVU4.js +0 -1
- package/console-app/assets/classDiagram-JCYQIIEL-BgrrHQtN.js +0 -1
- package/console-app/assets/classDiagram-v2-OCEON4UE-BgrrHQtN.js +0 -1
- package/console-app/assets/eventmodeling-45OFAUF4-D2SxzJUl.js +0 -1
- package/console-app/assets/flowDiagram-UKHOOZJN-CQXuJ0z2.js +0 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-CCRXsRRD.js +0 -1
- package/console-app/assets/railroad-ebnf-EBAXGLYW-DVRSVgn8.js +0 -1
- package/console-app/assets/railroad-peg-LSFZ7HO6-COUBoNH3.js +0 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-CTXOGDRR.js +0 -1
- 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
|
package/console-app/assets/{abnfDiagram-N423BO3Z-Bz2Ycfpe.js → abnfDiagram-N423BO3Z-Bltf5dmS.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e,t}from"./mermaid-parser.core-
|
|
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};
|