@pikku/cli 0.12.93 → 0.12.99
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/console-app/assets/abnfDiagram-VRR7QNED-CytV-CG1.js +1 -0
- package/console-app/assets/arc-C5PvmnaA.js +1 -0
- package/console-app/assets/architecture-TIHT7OUA-C1_ScvPX.js +1 -0
- package/console-app/assets/architectureDiagram-ZJ3FMSHR-CJ2xb7C-.js +36 -0
- package/console-app/assets/array-BifhSqXX.js +1 -0
- package/console-app/assets/blockDiagram-677ZJIJ3-CCecrBrk.js +132 -0
- package/console-app/assets/c4Diagram-LMCZKHZV-CBnpukvQ.js +10 -0
- package/console-app/assets/channel-CwDOkXGI.js +1 -0
- package/console-app/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/console-app/assets/chunk-32BRIVSS-D8qWWZRQ.js +1 -0
- package/console-app/assets/chunk-52WLFC77-BEpXHMsp.js +10 -0
- package/console-app/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/console-app/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
- package/console-app/assets/chunk-C7G6YPKG-DsHUMkOp.js +1 -0
- package/console-app/assets/chunk-EX3LRPZG-mM7TjVx9.js +231 -0
- package/console-app/assets/chunk-FWX5IMBZ-CndRAn18.js +2 -0
- package/console-app/assets/chunk-HOUHSVGY-D1kT8umn.js +1 -0
- package/console-app/assets/chunk-ICXQ74PX-CeSaGyro.js +2 -0
- package/console-app/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/console-app/assets/chunk-KEIR6QF5-DNzq6p3w.js +161 -0
- package/console-app/assets/chunk-MOJQB5TN-CaZOCHYr.js +88 -0
- package/console-app/assets/chunk-OGEWGWER-CnB1CsPt.js +1 -0
- package/console-app/assets/chunk-PUDLZKDR-BbGulHJm.js +156 -0
- package/console-app/assets/chunk-Q4XR5HBZ-BywwzeeR.js +70 -0
- package/console-app/assets/chunk-RYQCIY6F-CV0R1Adv.js +1 -0
- package/console-app/assets/chunk-V7JOEXUC-DGFaAWzB.js +206 -0
- package/console-app/assets/chunk-VAUOI2AC-DxPUd8Yb.js +1 -0
- package/console-app/assets/chunk-VR4S4FIN-D4-UaW_J.js +1 -0
- package/console-app/assets/chunk-WYO6CB5R-D_TFN0d9.js +127 -0
- package/console-app/assets/chunk-XXDRQBXY-BzVuweA_.js +1 -0
- package/console-app/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/console-app/assets/chunk-ZGVPDNZ5-C6hdkGQb.js +62 -0
- package/console-app/assets/chunk-ZIRB5QZD-H-kepumB.js +32 -0
- package/console-app/assets/classDiagram-OUVF2IWQ-CTYJkTT0.js +1 -0
- package/console-app/assets/classDiagram-v2-EOCWNBFH-CTYJkTT0.js +1 -0
- package/console-app/assets/cose-bilkent-JH36ORCC-B6ZPxN6v.js +1 -0
- package/console-app/assets/cynefin-VYW2F7L2-D_nmxNz_.js +1 -0
- package/console-app/assets/cynefinDiagram-TSTJHNR4-CHy5QN0S.js +62 -0
- package/console-app/assets/cytoscape.esm-h6BdjjI9.js +321 -0
- package/console-app/assets/dagre-CXRCoUWR.js +1 -0
- package/console-app/assets/dagre-VKFMJZFB-DYfukM34.js +4 -0
- package/console-app/assets/defaultLocale-C8Fc0cco.js +1 -0
- package/console-app/assets/diagram-FQU43EPY-Dgb9TPSB.js +3 -0
- package/console-app/assets/diagram-G47NLZAW-CnFNZs9Z.js +24 -0
- package/console-app/assets/diagram-NH7WQ7WH-DN7h2DU-.js +24 -0
- package/console-app/assets/diagram-OA4YK3LP-RLaQaNtK.js +30 -0
- package/console-app/assets/diagram-WEI45ONY-DxHWhVGd.js +41 -0
- package/console-app/assets/dist-BaJNIo4I.js +1 -0
- package/console-app/assets/ebnfDiagram-CCIWWBDH-UN3Z81-l.js +1 -0
- package/console-app/assets/erDiagram-Q63AITRT-C9lGAY3i.js +85 -0
- package/console-app/assets/eventmodeling-45OFAUF4-Dc5wNSSK.js +1 -0
- package/console-app/assets/flowDiagram-23GEKE2U-zPyGHMi4.js +1 -0
- package/console-app/assets/ganttDiagram-NO4QXBWP-CvBjBcdK.js +292 -0
- package/console-app/assets/gitGraph-TEB2WS4Q-Cs5Z9jMo.js +1 -0
- package/console-app/assets/gitGraphDiagram-IHSO6WYX-B0i_IJ5r.js +106 -0
- package/console-app/assets/graphlib-B8gBHxth.js +1 -0
- package/console-app/assets/{index-CmAplHjZ.js → index-71U8EEj7.js} +155 -153
- package/console-app/assets/{index-BYj7ZbUU.css → index-BXMjqLQ5.css} +1 -1
- package/console-app/assets/info-DKCQHKI2-DHL0afNl.js +1 -0
- package/console-app/assets/infoDiagram-FWYZ7A6U-CBWykodX.js +2 -0
- package/console-app/assets/init-D6jRqBbL.js +1 -0
- package/console-app/assets/ishikawaDiagram-FXEZZL3T-DM377eW_.js +70 -0
- package/console-app/assets/journeyDiagram-5HDEW3XC-BpX_-Cns.js +139 -0
- package/console-app/assets/kanban-definition-HUTT4EX6-D3xFsQkO.js +89 -0
- package/console-app/assets/katex-Vhh-h91d.js +257 -0
- package/console-app/assets/line-CTSKHTE0.js +1 -0
- package/console-app/assets/linear-R5GlBvXT.js +1 -0
- package/console-app/assets/map-DsCK-0Cs.js +1 -0
- package/console-app/assets/mermaid-parser.core-CkHk4BPi.js +7 -0
- package/console-app/assets/mermaid.core-CcjGXuV6.js +11 -0
- package/console-app/assets/mindmap-definition-LN4V7U3C-CtolazqQ.js +96 -0
- package/console-app/assets/ordinal-hYBb2elL.js +1 -0
- package/console-app/assets/packet-7NZHBO7P-BxSOj_Ny.js +1 -0
- package/console-app/assets/path-BWPyau1x.js +1 -0
- package/console-app/assets/pegDiagram-2B236MQR-BNsMtxsM.js +1 -0
- package/console-app/assets/pie-RZYD4A2V-BbkKQBA5.js +1 -0
- package/console-app/assets/pieDiagram-ENE6RG2P-BAZLIz2f.js +39 -0
- package/console-app/assets/quadrantDiagram-ABIIQ3AL-Dpvn-1Fs.js +7 -0
- package/console-app/assets/radar-I7S5WNFK-B-uKXIAH.js +1 -0
- package/console-app/assets/railroad-3IZDKUUU-BHXXK04t.js +1 -0
- package/console-app/assets/railroad-abnf-AHOZXSZD-tXSQaBvY.js +1 -0
- package/console-app/assets/railroad-ebnf-EBAXGLYW-DG3aohR0.js +1 -0
- package/console-app/assets/railroad-peg-LSFZ7HO6-DY_gBA-x.js +1 -0
- package/console-app/assets/railroadDiagram-RFXS5EU6-DfUApEQj.js +1 -0
- package/console-app/assets/requirementDiagram-TGXJPOKE-B2zX0jqo.js +84 -0
- package/console-app/assets/rough.esm-CSKSodPl.js +1 -0
- package/console-app/assets/sankeyDiagram-HTMAVEWB-CbQ2zc7z.js +40 -0
- package/console-app/assets/sequenceDiagram-DBY2YBRQ-BLT8PXI_.js +162 -0
- package/console-app/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +1 -0
- package/console-app/assets/src-BLuPUFWW.js +1 -0
- package/console-app/assets/stateDiagram-2N3HPSRC-BvEyVp85.js +1 -0
- package/console-app/assets/stateDiagram-v2-6OUMAXLB-RGKS9iU4.js +1 -0
- package/console-app/assets/swimlanes-5IMT3BWC-1AZ459s6.js +2 -0
- package/console-app/assets/swimlanesDiagram-G3AALYLV-Ck_0-rfN.js +8 -0
- package/console-app/assets/timeline-definition-FHXFAJF6-dLuvH4s2.js +120 -0
- package/console-app/assets/treeView-QDETBFTQ-xL2msjo2.js +1 -0
- package/console-app/assets/treemap-6X3UGDF4-C98ichVP.js +1 -0
- package/console-app/assets/vennDiagram-L72KCM5P-HbUmidhv.js +34 -0
- package/console-app/assets/wardley-OPB4EBWU-C4gJS-m2.js +1 -0
- package/console-app/assets/wardleyDiagram-EHGQE667-B7b-LB02.js +78 -0
- package/console-app/assets/xychartDiagram-FW5EYKEG-Cm03zUGy.js +7 -0
- package/console-app/index.html +2 -2
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/auth/auth.types.d.ts +1 -1
- package/dist/.pikku/auth/auth.types.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/pikku-cli-channel.d.ts +13 -15
- package/dist/.pikku/cli/pikku-cli-channel.js +62 -8
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +14 -4
- package/dist/.pikku/cli/pikku-cli-client.gen.js +55 -18
- 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-meta.gen.json +136 -10
- 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 +18 -2
- package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +64 -23
- package/dist/.pikku/function/pikku-function-types.gen.js +27 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +171 -37
- package/dist/.pikku/function/pikku-functions.gen.js +13 -3
- 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/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-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-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/pikku-meta-service.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/pikku-types.gen.d.ts +1 -1
- package/dist/.pikku/pikku-types.gen.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/rpc/pikku-rpc-wirings-meta.internal.gen.json +8 -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-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/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 +15 -5
- package/dist/.pikku/schemas/schemas/DbResetInput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PersonaRunInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PersonaSyncInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPersonasInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuRolesInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuVirtualUserFunctionsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/RolesPruneInput.schema.json +1 -0
- package/dist/.pikku/scopes/pikku-personas-meta.gen.json +1 -0
- package/dist/.pikku/scopes/pikku-personas.gen.d.ts +36 -0
- package/dist/.pikku/scopes/pikku-personas.gen.js +17 -0
- package/dist/.pikku/scopes/pikku-roles-meta.gen.json +1 -0
- package/dist/.pikku/scopes/pikku-roles.gen.d.ts +30 -0
- package/dist/.pikku/scopes/pikku-roles.gen.js +18 -0
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +4 -2
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +3 -2
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +2 -2
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +2 -2
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.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/pikku-variable-types.gen.d.ts +2 -2
- package/dist/.pikku/variables/pikku-variable-types.gen.js +2 -2
- 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/meta/allWorkflow.gen.json +46 -16
- package/dist/.pikku/workflow/pikku-personas.gen.d.ts +15 -0
- package/dist/.pikku/workflow/pikku-personas.gen.js +17 -0
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +101 -24
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +22 -2
- 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/bin/pikku.js +0 -0
- package/dist/src/cli.wiring.js +108 -8
- package/dist/src/deploy/analyzer/analyzer.js +14 -0
- package/dist/src/deploy/analyzer/manifest.d.ts +11 -0
- package/dist/src/fabric/functions/validate.function.js +77 -177
- package/dist/src/functions/commands/all.d.ts +1 -1
- package/dist/src/functions/commands/bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/bootstrap.js +3 -0
- package/dist/src/functions/commands/db-audit.js +1 -1
- package/dist/src/functions/commands/db-baseline.js +1 -1
- package/dist/src/functions/commands/db-check.js +6 -5
- package/dist/src/functions/commands/db-codegen.js +1 -1
- package/dist/src/functions/commands/db-generate.js +1 -1
- package/dist/src/functions/commands/db-migrate.js +1 -1
- package/dist/src/functions/commands/db-reset.d.ts +15 -1
- package/dist/src/functions/commands/db-reset.js +18 -6
- package/dist/src/functions/commands/db-shared.d.ts +14 -0
- package/dist/src/functions/commands/deploy-info.d.ts +1 -1
- package/dist/src/functions/commands/dev-ai-runner.d.ts +16 -4
- package/dist/src/functions/commands/dev-ai-runner.js +63 -29
- package/dist/src/functions/commands/dev.js +10 -5
- package/dist/src/functions/commands/enable.d.ts +8 -8
- package/dist/src/functions/commands/enable.js +15 -19
- package/dist/src/functions/commands/{scenario-environment.d.ts → environment.d.ts} +9 -6
- package/dist/src/functions/commands/{scenario-environment.js → environment.js} +5 -4
- package/dist/src/functions/commands/new-addon.js +14 -14
- package/dist/src/functions/commands/persona-sync.d.ts +33 -0
- package/dist/src/functions/commands/persona-sync.js +151 -0
- package/dist/src/functions/commands/persona.d.ts +58 -0
- package/dist/src/functions/commands/persona.js +215 -0
- package/dist/src/functions/commands/roles-audit.d.ts +1 -0
- package/dist/src/functions/commands/roles-audit.js +37 -0
- package/dist/src/functions/commands/roles-prune.d.ts +16 -0
- package/dist/src/functions/commands/roles-prune.js +52 -0
- package/dist/src/functions/commands/roles-shared.d.ts +40 -0
- package/dist/src/functions/commands/roles-shared.js +77 -0
- package/dist/src/functions/commands/scenario-browser.d.ts +3 -3
- package/dist/src/functions/commands/scenario-browser.js +1 -1
- package/dist/src/functions/commands/scenario-ladder.d.ts +44 -2
- package/dist/src/functions/commands/scenario-ladder.js +52 -3
- package/dist/src/functions/commands/scenario.d.ts +7 -0
- package/dist/src/functions/commands/scenario.js +82 -18
- package/dist/src/functions/commands/scopes-shared.d.ts +12 -0
- package/dist/src/functions/commands/scopes-shared.js +2 -2
- package/dist/src/functions/commands/serve.js +8 -4
- package/dist/src/functions/commands/versions-check.js +3 -3
- package/dist/src/functions/commands/virtual-user-formatter.d.ts +30 -0
- package/dist/src/functions/commands/virtual-user-formatter.js +65 -0
- package/dist/src/functions/db/annotation-parser.d.ts +14 -0
- package/dist/src/functions/db/annotation-parser.js +50 -2
- package/dist/src/functions/db/better-auth-schema.js +2 -1
- package/dist/src/functions/db/db-codegen.d.ts +12 -0
- package/dist/src/functions/db/db-codegen.js +149 -16
- package/dist/src/functions/db/local-db.d.ts +87 -6
- package/dist/src/functions/db/local-db.js +239 -35
- package/dist/src/functions/db/sqlite/dev-seed.d.ts +12 -0
- package/dist/src/functions/db/sqlite/dev-seed.js +23 -0
- package/dist/src/functions/db/sqlite/sqlite-runtime-bun.js +1 -1
- package/dist/src/functions/validate/bootstrap-checks.d.ts +19 -0
- package/dist/src/functions/validate/bootstrap-checks.js +90 -0
- package/dist/src/functions/validate/persona-checks.d.ts +24 -0
- package/dist/src/functions/validate/persona-checks.js +136 -0
- package/dist/src/functions/validate/scenario-file-checks.d.ts +17 -0
- package/dist/src/functions/validate/scenario-file-checks.js +123 -0
- package/dist/src/functions/validate/shared-checks.d.ts +59 -0
- package/dist/src/functions/validate/shared-checks.js +311 -0
- package/dist/src/functions/validate/workspace-validate.d.ts +1 -2
- package/dist/src/functions/validate/workspace-validate.js +4 -196
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.js +2 -1
- package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +1 -0
- package/dist/src/functions/wirings/auth/serialize-auth-gen.d.ts +2 -2
- package/dist/src/functions/wirings/auth/serialize-auth-gen.js +24 -9
- package/dist/src/functions/wirings/auth/serialize-auth-types.d.ts +3 -1
- package/dist/src/functions/wirings/auth/serialize-auth-types.js +3 -1
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +10 -2
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +9 -4
- package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +7 -3
- package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +64 -28
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +63 -6
- package/dist/src/functions/wirings/cli/serialize-cli-entrypoint-guard.d.ts +12 -0
- package/dist/src/functions/wirings/cli/serialize-cli-entrypoint-guard.js +28 -0
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +4 -1
- package/dist/src/functions/wirings/console/serialize-console-functions.js +5 -8
- package/dist/src/functions/wirings/functions/serialize-addon-types.js +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +106 -32
- package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +25 -9
- package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +3 -3
- package/dist/src/functions/wirings/package/serialize-package-types.js +5 -3
- package/dist/src/functions/wirings/personas/personas-secrets-file.d.ts +8 -0
- package/dist/src/functions/wirings/personas/personas-secrets-file.js +9 -0
- package/dist/src/functions/wirings/personas/pikku-command-personas.d.ts +7 -0
- package/dist/src/functions/wirings/personas/pikku-command-personas.js +57 -0
- package/dist/src/functions/wirings/personas/serialize-personas-secrets.d.ts +16 -0
- package/dist/src/functions/wirings/personas/serialize-personas-secrets.js +34 -0
- package/dist/src/functions/wirings/personas/serialize-personas-types.d.ts +18 -0
- package/dist/src/functions/wirings/personas/serialize-personas-types.js +76 -0
- package/dist/src/functions/wirings/queue/serialize-queue-map.js +2 -1
- package/dist/src/functions/wirings/queue/serialize-queue-wrapper.js +2 -1
- package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.js +2 -1
- package/dist/src/functions/wirings/roles/pikku-command-roles.d.ts +7 -0
- package/dist/src/functions/wirings/roles/pikku-command-roles.js +33 -0
- package/dist/src/functions/wirings/roles/serialize-roles-types.d.ts +14 -0
- package/dist/src/functions/wirings/roles/serialize-roles-types.js +55 -0
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +2 -1
- package/dist/src/functions/wirings/scenarios/register-scenario-instrumentation.d.ts +3 -3
- package/dist/src/functions/wirings/scenarios/register-scenario-instrumentation.js +3 -3
- package/dist/src/functions/wirings/scopes/serialize-scopes-types.d.ts +1 -1
- package/dist/src/functions/wirings/scopes/serialize-scopes-types.js +1 -1
- package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.js +2 -1
- package/dist/src/functions/wirings/user-admin/serialize-user-admin-functions.js +2 -2
- package/dist/src/functions/wirings/virtual-user/pikku-command-virtual-user-functions.d.ts +1 -0
- package/dist/src/functions/wirings/virtual-user/pikku-command-virtual-user-functions.js +42 -0
- package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.d.ts +28 -0
- package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.js +439 -0
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.js +2 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +13 -13
- package/dist/src/functions/wirings/workflow/serialize-personas.d.ts +10 -0
- package/dist/src/functions/wirings/workflow/serialize-personas.js +46 -0
- package/dist/src/functions/wirings/workflow/serialize-scenario-step-map.js +13 -4
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +170 -40
- package/dist/src/functions/workflows/all.workflow.js +55 -16
- package/dist/src/server/bun-server-runner.d.ts +2 -2
- package/dist/src/server/bun-server-runner.js +5 -1
- package/dist/src/server/content-signing-jwt.d.ts +13 -0
- package/dist/src/server/content-signing-jwt.js +51 -0
- package/dist/src/server/dev-server-runner.interface.d.ts +10 -2
- package/dist/src/server/node-server-runner.d.ts +2 -2
- package/dist/src/server/node-server-runner.js +2 -1
- package/dist/src/services/cli-logger.service.d.ts +28 -16
- package/dist/src/services/cli-logger.service.js +25 -16
- package/dist/src/services.d.ts +3 -1
- package/dist/src/services.js +10 -1
- package/dist/src/utils/file-import-path.js +9 -0
- package/dist/src/utils/pikku-cli-config.js +52 -2
- package/dist/src/utils/resolve-personas.d.ts +27 -0
- package/dist/src/utils/resolve-personas.js +35 -0
- package/dist/src/utils/resolve-scaffold-feature.d.ts +19 -0
- package/dist/src/utils/resolve-scaffold-feature.js +49 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -17
- package/dist/.pikku/schemas/schemas/BootstrapInput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/ScenarioRunInput.schema.json +0 -1
- package/dist/.pikku/workflow/pikku-scenario-actors.gen.d.ts +0 -19
- package/dist/.pikku/workflow/pikku-scenario-actors.gen.js +0 -17
- package/dist/src/functions/commands/db-seed.d.ts +0 -1
- package/dist/src/functions/commands/db-seed.js +0 -24
- package/dist/src/functions/db/sqlite/seed.d.ts +0 -11
- package/dist/src/functions/db/sqlite/seed.js +0 -22
- package/dist/src/functions/wirings/workflow/serialize-scenario-actors.d.ts +0 -2
- package/dist/src/functions/wirings/workflow/serialize-scenario-actors.js +0 -40
- package/dist/src/utils/resolve-scenario-actors.d.ts +0 -23
- package/dist/src/utils/resolve-scenario-actors.js +0 -74
- /package/dist/.pikku/schemas/schemas/{DbSeedInput.schema.json → RolesAuditInput.schema.json} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const serializeQueueWrapper = (queueMapPath) => {
|
|
2
2
|
return `
|
|
3
3
|
import type { QueueService, QueueJob } from '@pikku/core/queue'
|
|
4
|
+
import type { Safe } from '@pikku/core'
|
|
4
5
|
import type { QueueMap, TypedPikkuQueue } from '${queueMapPath}'
|
|
5
6
|
|
|
6
7
|
export class PikkuQueue implements TypedPikkuQueue {
|
|
@@ -8,7 +9,7 @@ export class PikkuQueue implements TypedPikkuQueue {
|
|
|
8
9
|
|
|
9
10
|
public async add<Name extends keyof QueueMap>(
|
|
10
11
|
queueName: Name,
|
|
11
|
-
data: QueueMap[Name]['input']
|
|
12
|
+
data: Safe<QueueMap[Name]['input']>,
|
|
12
13
|
options?: {
|
|
13
14
|
priority?: number
|
|
14
15
|
delay?: number
|
|
@@ -4,6 +4,7 @@ import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
5
|
import { removeLegacyScaffoldFile } from '../../../utils/remove-legacy-scaffold-file.js';
|
|
6
6
|
import { serializeEventsScaffold } from './serialize-events-scaffold.js';
|
|
7
|
+
import { resolveScaffoldFeature } from '../../../utils/resolve-scaffold-feature.js';
|
|
7
8
|
export const pikkuEventsScaffold = pikkuSessionlessFunc({
|
|
8
9
|
func: async ({ logger, config }) => {
|
|
9
10
|
if (!config.scaffold?.events ||
|
|
@@ -15,7 +16,7 @@ export const pikkuEventsScaffold = pikkuSessionlessFunc({
|
|
|
15
16
|
});
|
|
16
17
|
return false;
|
|
17
18
|
}
|
|
18
|
-
const authRequired = config.scaffold.events
|
|
19
|
+
const authRequired = resolveScaffoldFeature('events', config.scaffold.events).auth;
|
|
19
20
|
const pikkuTypesImportPath = getFileImportRelativePath(config.eventsChannelFile, config.typesDeclarationFile, config.packageMappings);
|
|
20
21
|
const { schemas, functions } = serializeEventsScaffold(authRequired, pikkuTypesImportPath);
|
|
21
22
|
await writeFileInDir(logger, config.eventsSchemasFile, schemas);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const pikkuRoles: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
bootstrap?: boolean;
|
|
3
|
+
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
4
|
+
bootstrap?: boolean;
|
|
5
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
6
|
+
bootstrap?: boolean;
|
|
7
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
2
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
4
|
+
import { serializeRolesTypes } from './serialize-roles-types.js';
|
|
5
|
+
import { validateAndBuildSystemRoleDefinitionsMeta } from '@pikku/core/role';
|
|
6
|
+
export const pikkuRoles = pikkuSessionlessFunc({
|
|
7
|
+
func: async ({ logger, config, getInspectorState }, data) => {
|
|
8
|
+
const { rolesFile, rolesMetaJsonFile } = config;
|
|
9
|
+
if (!rolesFile) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
// Same cold-start reasoning as Scopes: on a bare .pikku this runs before
|
|
13
|
+
// pikku-types.gen.ts exists, so it takes the zero state. The file only has
|
|
14
|
+
// to exist so personas can import SystemRoleName; the real Roles step
|
|
15
|
+
// regenerates it with the declarations once setup has run.
|
|
16
|
+
const bootstrap = data?.bootstrap ?? false;
|
|
17
|
+
const state = await getInspectorState(false, bootstrap, bootstrap);
|
|
18
|
+
const content = serializeRolesTypes({
|
|
19
|
+
definitions: state.systemRoles.definitions,
|
|
20
|
+
});
|
|
21
|
+
await writeFileInDir(logger, rolesFile, content);
|
|
22
|
+
if (rolesMetaJsonFile) {
|
|
23
|
+
const meta = validateAndBuildSystemRoleDefinitionsMeta(state.systemRoles.definitions);
|
|
24
|
+
await writeFileInDir(logger, rolesMetaJsonFile, JSON.stringify(meta, null, 2));
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
middleware: [
|
|
28
|
+
logCommandInfoAndTime({
|
|
29
|
+
commandStart: 'Creating PikkuRoles types',
|
|
30
|
+
commandEnd: 'Created PikkuRoles types',
|
|
31
|
+
}),
|
|
32
|
+
],
|
|
33
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SystemRoleDefinitions } from '@pikku/core/role';
|
|
2
|
+
export interface SerializeRolesOptions {
|
|
3
|
+
definitions: SystemRoleDefinitions;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Generates the `SystemRoleName` union and role metadata from
|
|
7
|
+
* `defineSystemRole` declarations.
|
|
8
|
+
*
|
|
9
|
+
* The union is what makes a persona's `roles: ['buyer']` checkable. Custom
|
|
10
|
+
* roles are deliberately absent: an admin can delete one from the console, so
|
|
11
|
+
* a persona pinned to it would silently stop testing what it claims to — the
|
|
12
|
+
* failure would be a scatter of 403s rather than a build error.
|
|
13
|
+
*/
|
|
14
|
+
export declare const serializeRolesTypes: ({ definitions }: SerializeRolesOptions) => string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const quote = (value) => `'${value.replace(/'/g, "\\'")}'`;
|
|
2
|
+
/**
|
|
3
|
+
* Generates the `SystemRoleName` union and role metadata from
|
|
4
|
+
* `defineSystemRole` declarations.
|
|
5
|
+
*
|
|
6
|
+
* The union is what makes a persona's `roles: ['buyer']` checkable. Custom
|
|
7
|
+
* roles are deliberately absent: an admin can delete one from the console, so
|
|
8
|
+
* a persona pinned to it would silently stop testing what it claims to — the
|
|
9
|
+
* failure would be a scatter of 403s rather than a build error.
|
|
10
|
+
*/
|
|
11
|
+
export const serializeRolesTypes = ({ definitions }) => {
|
|
12
|
+
const names = [...new Set(definitions.map((d) => d.name))].sort();
|
|
13
|
+
const union = names.length > 0
|
|
14
|
+
? `\n${names.map((name) => ` | ${quote(name)}`).join('\n')}`
|
|
15
|
+
: ' never';
|
|
16
|
+
return `/**
|
|
17
|
+
* This file was generated by the @pikku/cli
|
|
18
|
+
*/
|
|
19
|
+
import type { SystemRole, SystemRoleDefinitionsMeta } from '@pikku/core/role'
|
|
20
|
+
import { flattenSystemRoleDefinitions } from '@pikku/core/role'
|
|
21
|
+
import definitions from './pikku-roles-meta.gen.json' with { type: 'json' }
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Every role that ships with this application.
|
|
25
|
+
*
|
|
26
|
+
* Roles an admin composes in the console are not here and cannot be: they do
|
|
27
|
+
* not exist at build time, and can be deleted after it.
|
|
28
|
+
*/
|
|
29
|
+
export type SystemRoleName =${union}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The declared role set, for a ScopeService to sync into its store.
|
|
33
|
+
*
|
|
34
|
+
* Derived from the metadata sidecar rather than inlined, so the import above
|
|
35
|
+
* forces tsc to emit the .json alongside this file — an addon publishes only
|
|
36
|
+
* its compiled output, and a host reads that .json to merge the addon's roles
|
|
37
|
+
* into its own union.
|
|
38
|
+
*
|
|
39
|
+
* Additive on removal: a deleted declaration leaves an inert row rather than
|
|
40
|
+
* revoking everyone's grant on deploy. Use \`pikku roles prune\` to remove them.
|
|
41
|
+
*/
|
|
42
|
+
export const SYSTEM_ROLES: SystemRole[] = flattenSystemRoleDefinitions(
|
|
43
|
+
Object.values(definitions as SystemRoleDefinitionsMeta)
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
/** Declared roles, keyed by name. Rendered by the console when granting. */
|
|
47
|
+
export const SYSTEM_ROLES_META: Record<string, SystemRole> = Object.fromEntries(
|
|
48
|
+
SYSTEM_ROLES.map((role) => [role.name, role])
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
/** Whether a role name is declared in code, and therefore not editable. */
|
|
52
|
+
export const isSystemRole = (name: string): boolean =>
|
|
53
|
+
Object.prototype.hasOwnProperty.call(SYSTEM_ROLES_META, name)
|
|
54
|
+
`;
|
|
55
|
+
};
|
|
@@ -4,6 +4,7 @@ import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
5
|
import { removeLegacyScaffoldFile } from '../../../utils/remove-legacy-scaffold-file.js';
|
|
6
6
|
import { serializePublicRPC } from './serialize-public-rpc.js';
|
|
7
|
+
import { resolveScaffoldFeature } from '../../../utils/resolve-scaffold-feature.js';
|
|
7
8
|
export const pikkuPublicRPC = pikkuSessionlessFunc({
|
|
8
9
|
func: async ({ logger, config, variables }) => {
|
|
9
10
|
const deployCodegenFlag = await variables.get('PIKKU_DEPLOY_CODEGEN');
|
|
@@ -12,7 +13,7 @@ export const pikkuPublicRPC = pikkuSessionlessFunc({
|
|
|
12
13
|
}
|
|
13
14
|
if (config.scaffold?.rpc && config.publicRpcSchemasFile) {
|
|
14
15
|
const pathToPikkuTypes = getFileImportRelativePath(config.publicRpcFile, config.typesDeclarationFile, config.packageMappings);
|
|
15
|
-
const { schemas, functions } = serializePublicRPC(pathToPikkuTypes, config.scaffold.rpc
|
|
16
|
+
const { schemas, functions } = serializePublicRPC(pathToPikkuTypes, resolveScaffoldFeature('rpc', config.scaffold.rpc).auth, config.globalHTTPPrefix || '');
|
|
16
17
|
await writeFileInDir(logger, config.publicRpcSchemasFile, schemas);
|
|
17
18
|
await writeFileInDir(logger, config.publicRpcFile, functions);
|
|
18
19
|
await removeLegacyScaffoldFile(config.publicRpcFile);
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* scenario runner can reach it over `/rpc/<name>` exactly as before.
|
|
4
4
|
*
|
|
5
5
|
* They are registered sessionless: `auth` decides whether a session is
|
|
6
|
-
* *required*, and a sessioned function would demand one regardless of the flag
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* *required*, and a sessioned function would demand one regardless of the flag.
|
|
7
|
+
* `scaffold.scenarios: true` therefore requires a session; `{ auth: false }` is
|
|
8
|
+
* what opens them.
|
|
9
9
|
*/
|
|
10
10
|
export declare const registerScenarioInstrumentation: (requireAuth: boolean) => void;
|
|
@@ -79,9 +79,9 @@ const instrumentation = {
|
|
|
79
79
|
* scenario runner can reach it over `/rpc/<name>` exactly as before.
|
|
80
80
|
*
|
|
81
81
|
* They are registered sessionless: `auth` decides whether a session is
|
|
82
|
-
* *required*, and a sessioned function would demand one regardless of the flag
|
|
83
|
-
*
|
|
84
|
-
*
|
|
82
|
+
* *required*, and a sessioned function would demand one regardless of the flag.
|
|
83
|
+
* `scaffold.scenarios: true` therefore requires a session; `{ auth: false }` is
|
|
84
|
+
* what opens them.
|
|
85
85
|
*/
|
|
86
86
|
export const registerScenarioInstrumentation = (requireAuth) => {
|
|
87
87
|
const meta = pikkuState(null, 'function', 'meta');
|
|
@@ -3,7 +3,7 @@ export interface SerializeScopesOptions {
|
|
|
3
3
|
definitions: ScopeDefinitions;
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
|
-
* Generates the `ScopeId` union and scope metadata from `
|
|
6
|
+
* Generates the `ScopeId` union and scope metadata from `defineScope`
|
|
7
7
|
* declarations.
|
|
8
8
|
*
|
|
9
9
|
* The union carries every declared node plus a wildcard form for each node that
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { flattenScopeDefinitions } from '@pikku/core/scope';
|
|
2
2
|
const quote = (value) => `'${value.replace(/'/g, "\\'")}'`;
|
|
3
3
|
/**
|
|
4
|
-
* Generates the `ScopeId` union and scope metadata from `
|
|
4
|
+
* Generates the `ScopeId` union and scope metadata from `defineScope`
|
|
5
5
|
* declarations.
|
|
6
6
|
*
|
|
7
7
|
* The union carries every declared node plus a wildcard form for each node that
|
|
@@ -3,6 +3,7 @@ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
5
|
import { serializeUserAdminFunctions } from './serialize-user-admin-functions.js';
|
|
6
|
+
import { resolveScaffoldFeature } from '../../../utils/resolve-scaffold-feature.js';
|
|
6
7
|
export const pikkuUserAdminFunctions = pikkuSessionlessFunc({
|
|
7
8
|
func: async ({ logger, config, getInspectorState }) => {
|
|
8
9
|
if (!config.scaffold?.userAdmin ||
|
|
@@ -35,7 +36,7 @@ export const pikkuUserAdminFunctions = pikkuSessionlessFunc({
|
|
|
35
36
|
`Then re-run codegen. Or remove "scaffold.userAdmin" from pikku.config.json.`);
|
|
36
37
|
}
|
|
37
38
|
const pathToPikkuTypes = getFileImportRelativePath(config.userAdminFunctionsFile, config.typesDeclarationFile, config.packageMappings);
|
|
38
|
-
const { schemas, functions } = serializeUserAdminFunctions(pathToPikkuTypes, config.scaffold.userAdmin
|
|
39
|
+
const { schemas, functions } = serializeUserAdminFunctions(pathToPikkuTypes, resolveScaffoldFeature('userAdmin', config.scaffold.userAdmin).auth);
|
|
39
40
|
await writeFileInDir(logger, config.userAdminSchemasFile, schemas);
|
|
40
41
|
await writeFileInDir(logger, config.userAdminFunctionsFile, functions);
|
|
41
42
|
return true;
|
|
@@ -86,7 +86,7 @@ export const Success = z.object({
|
|
|
86
86
|
* Auto-generated user management functions
|
|
87
87
|
* Do not edit manually - regenerate with 'npx pikku'
|
|
88
88
|
*/
|
|
89
|
-
import { pikkuFunc,
|
|
89
|
+
import { pikkuFunc, defineScope } from '${pathToPikkuTypes}'
|
|
90
90
|
import { callAdminApi } from '@pikku/better-auth'
|
|
91
91
|
import {
|
|
92
92
|
CreateUserInput,
|
|
@@ -103,7 +103,7 @@ import {
|
|
|
103
103
|
// this is the whole \`admin\` tree — not just the leaves gated below. It must stay
|
|
104
104
|
// byte-identical to ADMIN_SCOPE_TREE in @pikku/better-auth and to the copy in
|
|
105
105
|
// @pikku/addon-console, or codegen fails with conflicting declarations.
|
|
106
|
-
|
|
106
|
+
defineScope({
|
|
107
107
|
admin: {
|
|
108
108
|
displayName: 'Administration',
|
|
109
109
|
description: 'Capabilities that act on the application as a whole',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuVirtualUserFunctions: import("#pikku").PikkuFunctionConfig<void, boolean, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, boolean, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, boolean, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
2
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
3
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
import { serializeVirtualUserFunctions } from './serialize-virtual-user-functions.js';
|
|
6
|
+
import { resolveScaffoldFeature } from '../../../utils/resolve-scaffold-feature.js';
|
|
7
|
+
export const pikkuVirtualUserFunctions = pikkuSessionlessFunc({
|
|
8
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
9
|
+
if (!config.scaffold?.virtualUser ||
|
|
10
|
+
!config.virtualUserFunctionsFile ||
|
|
11
|
+
!config.virtualUserSchemasFile) {
|
|
12
|
+
logger.debug({
|
|
13
|
+
message: 'Skipping virtual user scaffold (set scaffold.virtualUser in pikku.config.json to enable).',
|
|
14
|
+
type: 'skip',
|
|
15
|
+
});
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const state = await getInspectorState();
|
|
19
|
+
// A virtual user IS a persona — the generated functions sign in as one and
|
|
20
|
+
// run as them. With none declared the scaffold would emit RPCs whose only
|
|
21
|
+
// possible answer is "unknown persona". Fail the codegen instead of
|
|
22
|
+
// shipping that.
|
|
23
|
+
if (Object.keys(state.personas?.definitions ?? {}).length === 0) {
|
|
24
|
+
throw new Error(`"scaffold.virtualUser" is enabled but no personas are declared.\n` +
|
|
25
|
+
`A virtual user runs AS a persona, so there is nobody to run.\n` +
|
|
26
|
+
`Fix: declare one with definePersonas({ ... }), or remove ` +
|
|
27
|
+
`"scaffold.virtualUser" from pikku.config.json.`);
|
|
28
|
+
}
|
|
29
|
+
const pathToPikkuTypes = getFileImportRelativePath(config.virtualUserFunctionsFile, config.typesDeclarationFile, config.packageMappings);
|
|
30
|
+
const pathToPersonas = getFileImportRelativePath(config.virtualUserFunctionsFile, config.personasWiringFile, config.packageMappings);
|
|
31
|
+
const { schemas, functions } = serializeVirtualUserFunctions(pathToPikkuTypes, pathToPersonas, resolveScaffoldFeature('virtualUser', config.scaffold.virtualUser).auth);
|
|
32
|
+
await writeFileInDir(logger, config.virtualUserSchemasFile, schemas);
|
|
33
|
+
await writeFileInDir(logger, config.virtualUserFunctionsFile, functions);
|
|
34
|
+
return true;
|
|
35
|
+
},
|
|
36
|
+
middleware: [
|
|
37
|
+
logCommandInfoAndTime({
|
|
38
|
+
commandStart: 'Generating virtual user functions',
|
|
39
|
+
commandEnd: 'Generated virtual user functions',
|
|
40
|
+
}),
|
|
41
|
+
],
|
|
42
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface VirtualUserGenOutput {
|
|
2
|
+
schemas: string;
|
|
3
|
+
functions: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Generate the virtual-user functions into the project scaffold: start a run,
|
|
7
|
+
* read one back, and the sessionless function that does the work.
|
|
8
|
+
*
|
|
9
|
+
* Scaffolded rather than shipped in an addon because the whole feature is
|
|
10
|
+
* derived from what the project already generates — its personas, its function
|
|
11
|
+
* meta, its scenarios — so there is nothing to configure and nothing to author.
|
|
12
|
+
* `pikku persona run` does the same thing from a terminal; this is the same run
|
|
13
|
+
* started over RPC, from CI or from a console, with the result kept.
|
|
14
|
+
*
|
|
15
|
+
* A virtual user is NOT a workflow and NOT a queued job. It explores, so no two
|
|
16
|
+
* attempts take the same steps and there is nothing to replay; and the run
|
|
17
|
+
* record already carries the progress a queue would only be holding on the way
|
|
18
|
+
* here. So `runVirtualUser` writes the record, kicks the run off without
|
|
19
|
+
* awaiting it, and returns the id. The one cost is stated on the record: a
|
|
20
|
+
* restart mid-run strands it at `running`.
|
|
21
|
+
*
|
|
22
|
+
* Emitted as two files. The schemas are zod, and the inspector reads a zod
|
|
23
|
+
* schema by importing the module that declares it — which it cannot do for the
|
|
24
|
+
* functions file, whose relative pikku-types import per-unit deploy codegen
|
|
25
|
+
* rewrites. Keeping the schemas in a sibling module that imports nothing but
|
|
26
|
+
* zod sidesteps that entirely.
|
|
27
|
+
*/
|
|
28
|
+
export declare const serializeVirtualUserFunctions: (pathToPikkuTypes: string, pathToPersonas: string, requireAuth?: boolean) => VirtualUserGenOutput;
|