@pikku/cli 0.12.99 → 0.12.102
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 → abnfDiagram-VRR7QNED-BneJZPuq.js} +1 -1
- package/console-app/assets/{arc-C5PvmnaA.js → arc-B6oXAx95.js} +1 -1
- package/console-app/assets/architecture-TIHT7OUA-BIpQbDwm.js +1 -0
- package/console-app/assets/{architectureDiagram-ZJ3FMSHR-CJ2xb7C-.js → architectureDiagram-ZJ3FMSHR-Dn6JKcGL.js} +1 -1
- package/console-app/assets/{blockDiagram-677ZJIJ3-CCecrBrk.js → blockDiagram-677ZJIJ3-CQtakjN5.js} +1 -1
- package/console-app/assets/{c4Diagram-LMCZKHZV-CBnpukvQ.js → c4Diagram-LMCZKHZV-DRBlz-sO.js} +1 -1
- package/console-app/assets/channel-D9eZ2wja.js +1 -0
- package/console-app/assets/{chunk-32BRIVSS-D8qWWZRQ.js → chunk-32BRIVSS-DIionvWe.js} +1 -1
- package/console-app/assets/{chunk-52WLFC77-BEpXHMsp.js → chunk-52WLFC77-DwrMMV53.js} +1 -1
- package/console-app/assets/{chunk-C7G6YPKG-DsHUMkOp.js → chunk-C7G6YPKG-C7_SHoee.js} +1 -1
- package/console-app/assets/{chunk-EX3LRPZG-mM7TjVx9.js → chunk-EX3LRPZG-Brqi3de0.js} +1 -1
- package/console-app/assets/{chunk-FWX5IMBZ-CndRAn18.js → chunk-FWX5IMBZ-CGXYdLJv.js} +2 -2
- package/console-app/assets/{chunk-HOUHSVGY-D1kT8umn.js → chunk-HOUHSVGY-C-mHnXIa.js} +1 -1
- package/console-app/assets/{chunk-ICXQ74PX-CeSaGyro.js → chunk-ICXQ74PX-x3psPzuY.js} +1 -1
- package/console-app/assets/{chunk-MOJQB5TN-CaZOCHYr.js → chunk-MOJQB5TN-2uXUItkq.js} +1 -1
- package/console-app/assets/{chunk-OGEWGWER-CnB1CsPt.js → chunk-OGEWGWER-eXRvfFkE.js} +1 -1
- package/console-app/assets/{chunk-PUDLZKDR-BbGulHJm.js → chunk-PUDLZKDR-CyN33Wwe.js} +1 -1
- package/console-app/assets/{chunk-Q4XR5HBZ-BywwzeeR.js → chunk-Q4XR5HBZ-uyzxeIyh.js} +1 -1
- package/console-app/assets/{chunk-RYQCIY6F-CV0R1Adv.js → chunk-RYQCIY6F-CB9wv1YB.js} +1 -1
- package/console-app/assets/{chunk-V7JOEXUC-DGFaAWzB.js → chunk-V7JOEXUC-DLMzjIkb.js} +1 -1
- package/console-app/assets/chunk-VAUOI2AC--YVrsYCZ.js +1 -0
- package/console-app/assets/{chunk-VR4S4FIN-D4-UaW_J.js → chunk-VR4S4FIN-DtBvdHYI.js} +1 -1
- package/console-app/assets/{chunk-WYO6CB5R-D_TFN0d9.js → chunk-WYO6CB5R-B_EVxwHf.js} +1 -1
- package/console-app/assets/chunk-XXDRQBXY-By-5aH9h.js +1 -0
- package/console-app/assets/{chunk-ZGVPDNZ5-C6hdkGQb.js → chunk-ZGVPDNZ5-CGfMGxHR.js} +1 -1
- package/console-app/assets/classDiagram-OUVF2IWQ-Bg6U871E.js +1 -0
- package/console-app/assets/classDiagram-v2-EOCWNBFH-Bg6U871E.js +1 -0
- package/console-app/assets/{cose-bilkent-JH36ORCC-B6ZPxN6v.js → cose-bilkent-JH36ORCC-B_3kCkWC.js} +1 -1
- package/console-app/assets/{cynefin-VYW2F7L2-D_nmxNz_.js → cynefin-VYW2F7L2-Buqf60VA.js} +1 -1
- package/console-app/assets/{cynefinDiagram-TSTJHNR4-CHy5QN0S.js → cynefinDiagram-TSTJHNR4-DOjw2x6X.js} +1 -1
- package/console-app/assets/{dagre-VKFMJZFB-DYfukM34.js → dagre-VKFMJZFB-CTZTYT0b.js} +1 -1
- package/console-app/assets/{diagram-FQU43EPY-Dgb9TPSB.js → diagram-FQU43EPY-BZh4LC_G.js} +1 -1
- package/console-app/assets/{diagram-G47NLZAW-CnFNZs9Z.js → diagram-G47NLZAW-DDHD69gC.js} +1 -1
- package/console-app/assets/{diagram-NH7WQ7WH-DN7h2DU-.js → diagram-NH7WQ7WH-YnfI_N0A.js} +1 -1
- package/console-app/assets/{diagram-OA4YK3LP-RLaQaNtK.js → diagram-OA4YK3LP-ByfLxp7x.js} +1 -1
- package/console-app/assets/{diagram-WEI45ONY-DxHWhVGd.js → diagram-WEI45ONY-CghNIRYp.js} +1 -1
- package/console-app/assets/{dist-BaJNIo4I.js → dist-DCLZxlZv.js} +1 -1
- package/console-app/assets/{ebnfDiagram-CCIWWBDH-UN3Z81-l.js → ebnfDiagram-CCIWWBDH-D5_G_ZqU.js} +1 -1
- package/console-app/assets/{erDiagram-Q63AITRT-C9lGAY3i.js → erDiagram-Q63AITRT-B5ZtoDJs.js} +1 -1
- package/console-app/assets/eventmodeling-45OFAUF4-eU2Q2DYK.js +1 -0
- package/console-app/assets/flowDiagram-23GEKE2U-CtRJ8nYJ.js +1 -0
- package/console-app/assets/{ganttDiagram-NO4QXBWP-CvBjBcdK.js → ganttDiagram-NO4QXBWP-R-TggPMB.js} +1 -1
- package/console-app/assets/{gitGraph-TEB2WS4Q-Cs5Z9jMo.js → gitGraph-TEB2WS4Q-Cjhl-pwb.js} +1 -1
- package/console-app/assets/{gitGraphDiagram-IHSO6WYX-B0i_IJ5r.js → gitGraphDiagram-IHSO6WYX-DnQe5wWr.js} +1 -1
- package/console-app/assets/{index-71U8EEj7.js → index-BZTTf18Y.js} +150 -164
- package/console-app/assets/{index-BXMjqLQ5.css → index-r763CZB4.css} +1 -1
- package/console-app/assets/{info-DKCQHKI2-DHL0afNl.js → info-DKCQHKI2-DlSWT4UP.js} +1 -1
- package/console-app/assets/{infoDiagram-FWYZ7A6U-CBWykodX.js → infoDiagram-FWYZ7A6U-xqpfzGnj.js} +1 -1
- package/console-app/assets/{ishikawaDiagram-FXEZZL3T-DM377eW_.js → ishikawaDiagram-FXEZZL3T-M_pUeGWs.js} +1 -1
- package/console-app/assets/{journeyDiagram-5HDEW3XC-BpX_-Cns.js → journeyDiagram-5HDEW3XC-Dm6FR2DD.js} +1 -1
- package/console-app/assets/{kanban-definition-HUTT4EX6-D3xFsQkO.js → kanban-definition-HUTT4EX6-CbhkDdQH.js} +1 -1
- package/console-app/assets/{line-CTSKHTE0.js → line-C98Z2IVv.js} +1 -1
- package/console-app/assets/{linear-R5GlBvXT.js → linear-fYIkDCbB.js} +1 -1
- package/console-app/assets/{mermaid-parser.core-CkHk4BPi.js → mermaid-parser.core-Dkioi2z2.js} +3 -3
- package/console-app/assets/{mermaid.core-CcjGXuV6.js → mermaid.core-CeJcbw8_.js} +3 -3
- package/console-app/assets/{mindmap-definition-LN4V7U3C-CtolazqQ.js → mindmap-definition-LN4V7U3C-DDitGESW.js} +1 -1
- package/console-app/assets/{packet-7NZHBO7P-BxSOj_Ny.js → packet-7NZHBO7P-DWZKJ9Us.js} +1 -1
- package/console-app/assets/{pegDiagram-2B236MQR-BNsMtxsM.js → pegDiagram-2B236MQR-CZGjPLXH.js} +1 -1
- package/console-app/assets/{pie-RZYD4A2V-BbkKQBA5.js → pie-RZYD4A2V-DT4-E-uE.js} +1 -1
- package/console-app/assets/{pieDiagram-ENE6RG2P-BAZLIz2f.js → pieDiagram-ENE6RG2P-bgr82Jyt.js} +1 -1
- package/console-app/assets/{quadrantDiagram-ABIIQ3AL-Dpvn-1Fs.js → quadrantDiagram-ABIIQ3AL-Dcw3uNG0.js} +1 -1
- package/console-app/assets/{radar-I7S5WNFK-B-uKXIAH.js → radar-I7S5WNFK-CFAbRVFk.js} +1 -1
- package/console-app/assets/{railroad-3IZDKUUU-BHXXK04t.js → railroad-3IZDKUUU-CjkCoEjH.js} +1 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-BM21cj3I.js +1 -0
- package/console-app/assets/railroad-ebnf-EBAXGLYW-CDjo5TUI.js +1 -0
- package/console-app/assets/railroad-peg-LSFZ7HO6-CiKQmfgW.js +1 -0
- package/console-app/assets/{railroadDiagram-RFXS5EU6-DfUApEQj.js → railroadDiagram-RFXS5EU6-BUoL0dsw.js} +1 -1
- package/console-app/assets/{requirementDiagram-TGXJPOKE-B2zX0jqo.js → requirementDiagram-TGXJPOKE-C27qMKlr.js} +1 -1
- package/console-app/assets/{sankeyDiagram-HTMAVEWB-CbQ2zc7z.js → sankeyDiagram-HTMAVEWB-BYEhrrY0.js} +1 -1
- package/console-app/assets/{sequenceDiagram-DBY2YBRQ-BLT8PXI_.js → sequenceDiagram-DBY2YBRQ-BCuL4Pl6.js} +1 -1
- package/console-app/assets/{src-BLuPUFWW.js → src-jNbD6Nj3.js} +1 -1
- package/console-app/assets/{stateDiagram-2N3HPSRC-BvEyVp85.js → stateDiagram-2N3HPSRC-C8Ywa3Ah.js} +1 -1
- package/console-app/assets/stateDiagram-v2-6OUMAXLB-BIGwMDyj.js +1 -0
- package/console-app/assets/{swimlanes-5IMT3BWC-1AZ459s6.js → swimlanes-5IMT3BWC-C12iYfdp.js} +1 -1
- package/console-app/assets/swimlanesDiagram-G3AALYLV-BsoUfqN-.js +8 -0
- package/console-app/assets/{timeline-definition-FHXFAJF6-dLuvH4s2.js → timeline-definition-FHXFAJF6-BFQotHp7.js} +1 -1
- package/console-app/assets/{treeView-QDETBFTQ-xL2msjo2.js → treeView-QDETBFTQ-CGbwDLTd.js} +1 -1
- package/console-app/assets/{treemap-6X3UGDF4-C98ichVP.js → treemap-6X3UGDF4-DxSGskiF.js} +1 -1
- package/console-app/assets/{vennDiagram-L72KCM5P-HbUmidhv.js → vennDiagram-L72KCM5P-D4hlUYc9.js} +1 -1
- package/console-app/assets/{wardley-OPB4EBWU-C4gJS-m2.js → wardley-OPB4EBWU-XlXl32Vn.js} +1 -1
- package/console-app/assets/{wardleyDiagram-EHGQE667-B7b-LB02.js → wardleyDiagram-EHGQE667-ttCeFzYx.js} +1 -1
- package/console-app/assets/{xychartDiagram-FW5EYKEG-Cm03zUGy.js → xychartDiagram-FW5EYKEG-BMG4kbfv.js} +1 -1
- package/console-app/index.html +2 -2
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +6 -2
- package/dist/.pikku/agent/pikku-agent-types.gen.js +3 -0
- package/dist/.pikku/agent/pikku-model-aliases.gen.d.ts +1 -0
- package/dist/.pikku/agent/pikku-model-aliases.gen.js +5 -0
- 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 +11 -2
- package/dist/.pikku/cli/pikku-cli-channel.js +34 -9
- 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 +2 -2
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +18 -12
- 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/console/pikku-node-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +10 -20
- package/dist/.pikku/function/pikku-function-types.gen.js +2 -2
- package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
- package/dist/.pikku/function/pikku-functions-meta.gen.json +59 -35
- package/dist/.pikku/function/pikku-functions.gen.js +3 -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/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 +2 -1
- package/dist/.pikku/pikku-bootstrap.gen.js +2 -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 +1 -1
- 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 +2 -2
- 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 +2 -2
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +2 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +2 -2
- package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +2 -2
- 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 +7 -5
- package/dist/.pikku/schemas/schemas/DevInput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuAIScorerOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ServeInput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/ValidateOutput.schema.json +1 -0
- 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/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/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 +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/meta/allWorkflow.gen.json +8 -2
- package/dist/.pikku/workflow/pikku-personas.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +18 -10
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +2 -2
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/cli.wiring.js +20 -11
- package/dist/src/deploy/analyzer/analyzer.js +21 -6
- package/dist/src/deploy/analyzer/manifest.d.ts +18 -0
- package/dist/src/deploy/codegen/per-unit-codegen.js +0 -3
- package/dist/src/deploy/server-entry.js +1 -1
- package/dist/src/fabric/fabric-commands.d.ts +26 -26
- package/dist/src/fabric/functions/add.function.d.ts +1 -1
- package/dist/src/fabric/functions/addon-verify.function.d.ts +1 -1
- package/dist/src/fabric/functions/db-schema.function.d.ts +1 -1
- package/dist/src/fabric/functions/deploy-list.function.d.ts +1 -1
- package/dist/src/fabric/functions/deploy-units.function.d.ts +1 -1
- package/dist/src/fabric/functions/deploy.function.d.ts +2 -2
- package/dist/src/fabric/functions/domains-add.function.d.ts +1 -1
- package/dist/src/fabric/functions/domains-list.function.d.ts +1 -1
- package/dist/src/fabric/functions/domains-remove.function.d.ts +1 -1
- package/dist/src/fabric/functions/errors.function.d.ts +1 -1
- package/dist/src/fabric/functions/init.function.d.ts +1 -1
- package/dist/src/fabric/functions/link.function.d.ts +1 -1
- package/dist/src/fabric/functions/llm-key.function.d.ts +1 -1
- package/dist/src/fabric/functions/login.function.d.ts +1 -1
- package/dist/src/fabric/functions/logs.function.d.ts +1 -1
- package/dist/src/fabric/functions/metrics.function.d.ts +1 -1
- package/dist/src/fabric/functions/publish.function.d.ts +1 -1
- package/dist/src/fabric/functions/rollback.function.d.ts +1 -1
- package/dist/src/fabric/functions/secrets-list.function.d.ts +1 -1
- package/dist/src/fabric/functions/secrets-rotate.function.d.ts +1 -1
- package/dist/src/fabric/functions/secrets-set.function.d.ts +1 -1
- package/dist/src/fabric/functions/smoke.function.d.ts +1 -1
- package/dist/src/fabric/functions/smoke.function.js +7 -4
- package/dist/src/fabric/functions/status.function.d.ts +1 -1
- package/dist/src/fabric/functions/trace.function.d.ts +1 -1
- package/dist/src/fabric/functions/validate.function.d.ts +1 -1
- package/dist/src/fabric/functions/validate.function.js +1 -1
- package/dist/src/functions/commands/all.d.ts +1 -1
- package/dist/src/functions/commands/audit.d.ts +1 -1
- package/dist/src/functions/commands/binary.d.ts +1 -1
- package/dist/src/functions/commands/bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/db-audit.d.ts +1 -1
- package/dist/src/functions/commands/db-baseline.d.ts +1 -1
- package/dist/src/functions/commands/db-check.d.ts +1 -1
- package/dist/src/functions/commands/db-codegen.d.ts +1 -1
- package/dist/src/functions/commands/db-export.d.ts +1 -1
- package/dist/src/functions/commands/db-export.js +1 -1
- package/dist/src/functions/commands/db-generate.d.ts +1 -1
- package/dist/src/functions/commands/db-migrate.d.ts +1 -1
- package/dist/src/functions/commands/db-reset.d.ts +1 -1
- package/dist/src/functions/commands/db-shared.d.ts +0 -14
- package/dist/src/functions/commands/deploy-apply.d.ts +1 -1
- package/dist/src/functions/commands/deploy-info.d.ts +1 -1
- package/dist/src/functions/commands/deploy-plan.d.ts +1 -1
- package/dist/src/functions/commands/dev.d.ts +4 -1
- package/dist/src/functions/commands/dev.js +42 -3
- package/dist/src/functions/commands/emails-init.d.ts +1 -1
- package/dist/src/functions/commands/enable.d.ts +8 -8
- package/dist/src/functions/commands/import-n8n.d.ts +1 -1
- package/dist/src/functions/commands/info.d.ts +4 -4
- package/dist/src/functions/commands/knowledge-index.d.ts +4 -4
- package/dist/src/functions/commands/knowledge-validate.d.ts +1 -1
- package/dist/src/functions/commands/login.d.ts +3 -3
- package/dist/src/functions/commands/meta.d.ts +19 -19
- package/dist/src/functions/commands/new-addon.d.ts +1 -1
- package/dist/src/functions/commands/new-addon.js +6 -3
- package/dist/src/functions/commands/new-function.d.ts +1 -1
- package/dist/src/functions/commands/new-middleware.d.ts +1 -1
- package/dist/src/functions/commands/new-permission.d.ts +1 -1
- package/dist/src/functions/commands/new-wiring.d.ts +1 -1
- package/dist/src/functions/commands/persona-sync.d.ts +1 -1
- package/dist/src/functions/commands/persona.d.ts +2 -2
- package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -1
- package/dist/src/functions/commands/roles-audit.d.ts +1 -1
- package/dist/src/functions/commands/roles-prune.d.ts +1 -1
- package/dist/src/functions/commands/scenario-browser.d.ts +24 -1
- package/dist/src/functions/commands/scenario-browser.js +5 -1
- package/dist/src/functions/commands/scenario.d.ts +8 -2
- package/dist/src/functions/commands/scenario.js +58 -10
- package/dist/src/functions/commands/scopes-audit.d.ts +1 -1
- package/dist/src/functions/commands/scopes-prune.d.ts +1 -1
- package/dist/src/functions/commands/serve.d.ts +4 -1
- package/dist/src/functions/commands/serve.js +16 -2
- package/dist/src/functions/commands/skills.d.ts +2 -2
- package/dist/src/functions/commands/{workspace-validate.d.ts → validate.d.ts} +19 -4
- package/dist/src/functions/commands/validate.js +9 -0
- package/dist/src/functions/commands/versions-check.d.ts +1 -1
- package/dist/src/functions/commands/versions-init.d.ts +1 -1
- package/dist/src/functions/commands/versions-update.d.ts +1 -1
- package/dist/src/functions/commands/watch.d.ts +1 -1
- package/dist/src/functions/db/local-db.d.ts +2 -1
- package/dist/src/functions/db/local-db.js +2 -2
- package/dist/src/functions/runtimes/fetch/index.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
- package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.d.ts +1 -1
- package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -1
- package/dist/src/functions/validate/addon-package-checks.d.ts +26 -0
- package/dist/src/functions/validate/addon-package-checks.js +258 -0
- package/dist/src/functions/validate/persona-checks.d.ts +1 -1
- package/dist/src/functions/validate/persona-checks.js +1 -1
- package/dist/src/functions/validate/scenario-file-checks.js +33 -0
- package/dist/src/functions/validate/shared-checks.d.ts +1 -1
- package/dist/src/functions/validate/shared-checks.js +1 -1
- package/dist/src/functions/validate/validate-registry.d.ts +52 -0
- package/dist/src/functions/validate/validate-registry.js +100 -0
- package/dist/src/functions/validate/validate.d.ts +47 -0
- package/dist/src/functions/validate/{workspace-validate.js → validate.js} +46 -12
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +3 -2
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +6 -2
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +15 -2
- package/dist/src/functions/wirings/ai-agent/serialize-model-aliases.d.ts +5 -0
- package/dist/src/functions/wirings/ai-agent/serialize-model-aliases.js +12 -0
- package/dist/src/functions/wirings/ai-scorer/pikku-command-ai-scorer.d.ts +1 -0
- package/dist/src/functions/wirings/ai-scorer/pikku-command-ai-scorer.js +51 -0
- package/dist/src/functions/wirings/ai-scorer/serialize-scorer-names.d.ts +10 -0
- package/dist/src/functions/wirings/ai-scorer/serialize-scorer-names.js +17 -0
- package/dist/src/functions/wirings/auth/pikku-command-auth.d.ts +1 -1
- package/dist/src/functions/wirings/auth/serialize-auth-gen.js +27 -10
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-channels.js +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +1 -1
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +12 -7
- package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -1
- package/dist/src/functions/wirings/console/serialize-console-functions.js +9 -56
- package/dist/src/functions/wirings/credentials/pikku-command-credentials.d.ts +1 -1
- package/dist/src/functions/wirings/emails/pikku-command-emails.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
- package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +12 -21
- package/dist/src/functions/wirings/gateway/pikku-command-gateway.d.ts +1 -1
- package/dist/src/functions/wirings/graph/pikku-command-graph-wirings.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-routes.js +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-http-routes.js +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +1 -1
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
- package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +5 -1
- package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +3 -3
- package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
- package/dist/src/functions/wirings/package/pikku-command-package.js +12 -1
- package/dist/src/functions/wirings/package/serialize-package.d.ts +1 -1
- package/dist/src/functions/wirings/package/serialize-package.js +6 -3
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
- package/dist/src/functions/wirings/personas/pikku-command-personas.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
- package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.d.ts +1 -1
- package/dist/src/functions/wirings/realtime/pikku-command-realtime.d.ts +1 -1
- package/dist/src/functions/wirings/roles/pikku-command-roles.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +3 -3
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +1 -1
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +1 -6
- package/dist/src/functions/wirings/scenarios/register-scenario-instrumentation.js +31 -1
- package/dist/src/functions/wirings/scenarios/serialize-scenario-meta.js +2 -2
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
- package/dist/src/functions/wirings/scopes/pikku-command-scopes.d.ts +1 -1
- package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -1
- package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +1 -1
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -1
- package/dist/src/functions/wirings/triggers/serialize-trigger-meta.js +2 -2
- package/dist/src/functions/wirings/user-admin/pikku-command-user-admin-functions.d.ts +1 -1
- package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -1
- package/dist/src/functions/wirings/virtual-user/pikku-command-virtual-user-functions.d.ts +1 -1
- package/dist/src/functions/wirings/webhook/pikku-command-webhook.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +2 -2
- package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +23 -32
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +25 -14
- package/dist/src/functions/workflows/all.workflow.js +6 -1
- package/dist/src/server/bun-server-runner.js +3 -0
- package/dist/src/server/dev-server-runner.interface.d.ts +10 -0
- package/dist/src/server/node-server-runner.js +3 -0
- package/dist/src/services.d.ts +1 -1
- package/dist/src/services.js +1 -0
- package/dist/src/utils/meta-diff.d.ts +1 -1
- package/dist/src/utils/meta-diff.js +2 -0
- package/dist/src/utils/model-alias-override.d.ts +7 -0
- package/dist/src/utils/model-alias-override.js +33 -0
- package/dist/src/utils/pikku-cli-config.js +16 -0
- package/dist/src/utils/serialize-meta-ts.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -19
- package/console-app/assets/architecture-TIHT7OUA-C1_ScvPX.js +0 -1
- package/console-app/assets/channel-CwDOkXGI.js +0 -1
- package/console-app/assets/chunk-VAUOI2AC-DxPUd8Yb.js +0 -1
- package/console-app/assets/chunk-XXDRQBXY-BzVuweA_.js +0 -1
- package/console-app/assets/classDiagram-OUVF2IWQ-CTYJkTT0.js +0 -1
- package/console-app/assets/classDiagram-v2-EOCWNBFH-CTYJkTT0.js +0 -1
- package/console-app/assets/eventmodeling-45OFAUF4-Dc5wNSSK.js +0 -1
- package/console-app/assets/flowDiagram-23GEKE2U-zPyGHMi4.js +0 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-tXSQaBvY.js +0 -1
- package/console-app/assets/railroad-ebnf-EBAXGLYW-DG3aohR0.js +0 -1
- package/console-app/assets/railroad-peg-LSFZ7HO6-DY_gBA-x.js +0 -1
- package/console-app/assets/stateDiagram-v2-6OUMAXLB-RGKS9iU4.js +0 -1
- package/console-app/assets/swimlanesDiagram-G3AALYLV-Ck_0-rfN.js +0 -8
- package/dist/.pikku/schemas/schemas/WorkspaceValidateOutput.schema.json +0 -1
- package/dist/src/functions/commands/workspace-validate.js +0 -9
- package/dist/src/functions/validate/workspace-validate.d.ts +0 -33
- /package/dist/.pikku/schemas/schemas/{WorkspaceValidateInput.schema.json → ValidateInput.schema.json} +0 -0
|
@@ -16,6 +16,7 @@ export interface ScenarioBrowserDriverOptions {
|
|
|
16
16
|
actors: Record<string, ResolvedPersona>;
|
|
17
17
|
signInPath?: string;
|
|
18
18
|
failureDir?: string;
|
|
19
|
+
capture?: ScenarioCaptureOptions;
|
|
19
20
|
config: unknown;
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
@@ -43,6 +44,21 @@ export interface ScenarioBrowserDriver {
|
|
|
43
44
|
apiUrl: string;
|
|
44
45
|
}) => unknown;
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Artifacts a run may produce. Mirrors the driver's own CaptureOptions rather
|
|
49
|
+
* than importing it: the CLI must not depend on a driver package it resolves
|
|
50
|
+
* dynamically, and this shape is the contract between them.
|
|
51
|
+
*/
|
|
52
|
+
export interface ScenarioCaptureOptions {
|
|
53
|
+
/** Root directory for the run's artifacts. */
|
|
54
|
+
dir: string;
|
|
55
|
+
/** The invocation these artifacts belong to. */
|
|
56
|
+
runId: string;
|
|
57
|
+
/** Record a video per scenario. */
|
|
58
|
+
video?: boolean;
|
|
59
|
+
/** Re-encode with ffmpeg when available. Defaults on — the footage is nearly static. */
|
|
60
|
+
compress?: boolean;
|
|
61
|
+
}
|
|
46
62
|
export interface ResolveScenarioBrowserProviderOptions {
|
|
47
63
|
/** The environment name, for error messages that tell the user what to edit. */
|
|
48
64
|
environment: string;
|
|
@@ -53,6 +69,12 @@ export interface ResolveScenarioBrowserProviderOptions {
|
|
|
53
69
|
signInPath?: string;
|
|
54
70
|
/** Where failure screenshots are written. */
|
|
55
71
|
failureDir: string;
|
|
72
|
+
/**
|
|
73
|
+
* Artifacts for this run — named screenshots, and optionally a video per
|
|
74
|
+
* scenario. Undefined leaves capture off, which is the default: most runs
|
|
75
|
+
* ask a pass/fail question and writing video to answer it is waste.
|
|
76
|
+
*/
|
|
77
|
+
capture?: ScenarioCaptureOptions;
|
|
56
78
|
/** The scenarios that declared browser steps, named in the missing-driver error. */
|
|
57
79
|
browserScenarios: string[];
|
|
58
80
|
/** Package to drive the browser. Defaults to `@pikku/playwright`. */
|
|
@@ -71,13 +93,14 @@ export interface ResolveScenarioBrowserProviderOptions {
|
|
|
71
93
|
* because a run against a placeholder URL is worse than one that refuses to
|
|
72
94
|
* start.
|
|
73
95
|
*/
|
|
74
|
-
export declare const resolveScenarioBrowserProvider: ({ environment, apiUrl, appUrl, secret, actors, signInPath, failureDir, browserScenarios, driver, importDriver, }: ResolveScenarioBrowserProviderOptions) => Promise<ScenarioBrowserProvider>;
|
|
96
|
+
export declare const resolveScenarioBrowserProvider: ({ environment, apiUrl, appUrl, secret, actors, signInPath, failureDir, capture, browserScenarios, driver, importDriver, }: ResolveScenarioBrowserProviderOptions) => Promise<ScenarioBrowserProvider>;
|
|
75
97
|
/**
|
|
76
98
|
* The three calls the run loop makes, safe against a run with no browser and
|
|
77
99
|
* against a driver that implements neither optional member.
|
|
78
100
|
*/
|
|
79
101
|
export interface ScenarioBrowserLifecycle {
|
|
80
102
|
reset(): Promise<void>;
|
|
103
|
+
beginScenario(scenario: string): void;
|
|
81
104
|
captureFailure(label: string): Promise<ScenarioBrowserFailure[]>;
|
|
82
105
|
close(): Promise<void>;
|
|
83
106
|
}
|
|
@@ -12,7 +12,7 @@ export const DEFAULT_BROWSER_DRIVER = '@pikku/playwright';
|
|
|
12
12
|
* because a run against a placeholder URL is worse than one that refuses to
|
|
13
13
|
* start.
|
|
14
14
|
*/
|
|
15
|
-
export const resolveScenarioBrowserProvider = async ({ environment, apiUrl, appUrl, secret, actors, signInPath, failureDir, browserScenarios, driver = DEFAULT_BROWSER_DRIVER, importDriver = (specifier) => import(specifier), }) => {
|
|
15
|
+
export const resolveScenarioBrowserProvider = async ({ environment, apiUrl, appUrl, secret, actors, signInPath, failureDir, capture, browserScenarios, driver = DEFAULT_BROWSER_DRIVER, importDriver = (specifier) => import(specifier), }) => {
|
|
16
16
|
const module = await importDriver(driver).catch(() => {
|
|
17
17
|
const install = driver === DEFAULT_BROWSER_DRIVER
|
|
18
18
|
? `Run 'yarn add -D ${driver} @playwright/test'`
|
|
@@ -33,6 +33,7 @@ export const resolveScenarioBrowserProvider = async ({ environment, apiUrl, appU
|
|
|
33
33
|
actors,
|
|
34
34
|
signInPath,
|
|
35
35
|
failureDir,
|
|
36
|
+
capture,
|
|
36
37
|
config,
|
|
37
38
|
};
|
|
38
39
|
if (module.createScenarioBrowserProvider) {
|
|
@@ -52,6 +53,9 @@ export const scenarioBrowserLifecycle = (provider) => ({
|
|
|
52
53
|
reset: async () => {
|
|
53
54
|
await provider?.reset?.();
|
|
54
55
|
},
|
|
56
|
+
beginScenario: (scenario) => {
|
|
57
|
+
provider?.beginScenario?.(scenario);
|
|
58
|
+
},
|
|
55
59
|
captureFailure: async (label) => {
|
|
56
60
|
try {
|
|
57
61
|
return (await provider?.captureFailure?.(label)) ?? [];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ScenarioSurface } from '@pikku/core/workflow';
|
|
2
|
-
export declare const scenarioList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
2
|
+
export declare const scenarioList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
3
3
|
export declare const scenarioRun: import("#pikku").PikkuFunctionConfig<{
|
|
4
4
|
environment: string;
|
|
5
5
|
flows?: string;
|
|
@@ -13,6 +13,8 @@ export declare const scenarioRun: import("#pikku").PikkuFunctionConfig<{
|
|
|
13
13
|
spawn?: boolean;
|
|
14
14
|
keepAlive?: boolean;
|
|
15
15
|
trace?: boolean;
|
|
16
|
+
screenshots?: boolean;
|
|
17
|
+
video?: boolean;
|
|
16
18
|
apiUrl?: string;
|
|
17
19
|
appUrl?: string;
|
|
18
20
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
@@ -28,9 +30,11 @@ export declare const scenarioRun: import("#pikku").PikkuFunctionConfig<{
|
|
|
28
30
|
spawn?: boolean;
|
|
29
31
|
keepAlive?: boolean;
|
|
30
32
|
trace?: boolean;
|
|
33
|
+
screenshots?: boolean;
|
|
34
|
+
video?: boolean;
|
|
31
35
|
apiUrl?: string;
|
|
32
36
|
appUrl?: string;
|
|
33
|
-
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
37
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
|
|
34
38
|
environment: string;
|
|
35
39
|
flows?: string;
|
|
36
40
|
features?: string;
|
|
@@ -43,6 +47,8 @@ export declare const scenarioRun: import("#pikku").PikkuFunctionConfig<{
|
|
|
43
47
|
spawn?: boolean;
|
|
44
48
|
keepAlive?: boolean;
|
|
45
49
|
trace?: boolean;
|
|
50
|
+
screenshots?: boolean;
|
|
51
|
+
video?: boolean;
|
|
46
52
|
apiUrl?: string;
|
|
47
53
|
appUrl?: string;
|
|
48
54
|
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
1
2
|
import { resolve, join } from 'node:path';
|
|
2
3
|
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
3
4
|
import { pikkuSessionlessFunc } from '#pikku';
|
|
4
5
|
import { InMemoryWorkflowService } from '@pikku/core/services';
|
|
5
6
|
import { createHttpPersonas } from '@pikku/core/persona';
|
|
6
7
|
import { PikkuScenarioService } from '@pikku/core/scenario';
|
|
7
|
-
import { pikkuState, getAllPackageStates } from '@pikku/core/
|
|
8
|
+
import { pikkuState, getAllPackageStates } from '@pikku/core/ecosystem';
|
|
8
9
|
import { resolveFeatureScenarios } from '@pikku/core/workflow';
|
|
9
10
|
import { loadScenarioBootstrap } from './load-user-project.js';
|
|
10
11
|
import { collectScenarioStepProse, scenarioBrowserSteps, scenarioFailureFromSteps, scenarioStepRows, scenarioStepsWithoutBinding, scenarioSurfaceCoverage, } from './scenario-ladder.js';
|
|
@@ -87,7 +88,7 @@ export const scenarioList = pikkuSessionlessFunc({
|
|
|
87
88
|
},
|
|
88
89
|
});
|
|
89
90
|
export const scenarioRun = pikkuSessionlessFunc({
|
|
90
|
-
func: async ({ logger, config, getInspectorState, variables }, { environment, flows, features, tags, excludeTags, coverage, browser = true, run: runSurface = 'default', strict = false, spawn = false, keepAlive = false, trace = false, apiUrl, appUrl, }) => {
|
|
91
|
+
func: async ({ logger, config, getInspectorState, variables }, { environment, flows, features, tags, excludeTags, coverage, browser = true, run: runSurface = 'default', strict = false, spawn = false, keepAlive = false, trace = false, screenshots = false, video = false, apiUrl, appUrl, }) => {
|
|
91
92
|
if (!SCENARIO_SURFACES.includes(runSurface)) {
|
|
92
93
|
throw new Error(`Unknown --run surface '${runSurface}'. Expected one of: ${SCENARIO_SURFACES.join(', ')}.`);
|
|
93
94
|
}
|
|
@@ -254,11 +255,29 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
254
255
|
workflowRunService: workflowService,
|
|
255
256
|
...(aiAgentRunner ? { aiAgentRunner } : {}),
|
|
256
257
|
});
|
|
258
|
+
const refuseInternal = (rpcName) => {
|
|
259
|
+
throw new Error(`Scenario tried to run '${rpcName}' as an internal step. Every workflow.do ` +
|
|
260
|
+
`in a scenario must carry { actor: actors.x } so it executes against ` +
|
|
261
|
+
`'${environment}' (${env.apiUrl}), not local services.`);
|
|
262
|
+
};
|
|
263
|
+
// `rpcWithWire` is named alongside `PikkuRPC` rather than left to it: the
|
|
264
|
+
// workflow runner reaches for that member through an internally untyped
|
|
265
|
+
// path, so it is the one the guard actually has to answer, and the type
|
|
266
|
+
// that declares it publicly arrives later in this stack.
|
|
257
267
|
const guardRpc = {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
268
|
+
depth: 0,
|
|
269
|
+
global: false,
|
|
270
|
+
invoke: async (rpcName) => refuseInternal(rpcName),
|
|
271
|
+
remote: async (rpcName) => refuseInternal(rpcName),
|
|
272
|
+
exposed: async (rpcName) => refuseInternal(rpcName),
|
|
273
|
+
rpcWithWire: async (rpcName) => refuseInternal(rpcName),
|
|
274
|
+
startWorkflow: async (name) => refuseInternal(name),
|
|
275
|
+
agent: {
|
|
276
|
+
run: async (name) => refuseInternal(name),
|
|
277
|
+
stream: async (name) => refuseInternal(name),
|
|
278
|
+
resume: async (runId) => refuseInternal(runId),
|
|
279
|
+
approve: async (runId) => refuseInternal(runId),
|
|
280
|
+
interrupt: async (runId) => refuseInternal(runId),
|
|
262
281
|
},
|
|
263
282
|
};
|
|
264
283
|
// Only a browser run launches one. Under `--run default` a step with a
|
|
@@ -267,6 +286,17 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
267
286
|
const needsBrowser = effectiveSurface === 'browser' &&
|
|
268
287
|
groups.some((group) => group.entries.some((entry) => browserStepsByFlow.has(entry.scenarioName)));
|
|
269
288
|
const failureDir = join(resolve(config.rootDir, config.outDir), 'scenario-failures');
|
|
289
|
+
// Artifacts are filed under the run, not the scenario, so one run's output
|
|
290
|
+
// is one folder to open, keep or delete. `--video` implies capture is on:
|
|
291
|
+
// recording without somewhere to put it is not a thing anyone wants.
|
|
292
|
+
const captureDir = join(resolve(config.rootDir, config.outDir), 'scenario-runs');
|
|
293
|
+
// One id for the whole invocation, distinct from a scenario's own runId:
|
|
294
|
+
// reviewing artifacts means opening what `pikku scenario run` just produced,
|
|
295
|
+
// not hunting for one scenario's folder among many.
|
|
296
|
+
const captureRunId = randomUUID();
|
|
297
|
+
const capture = screenshots || video
|
|
298
|
+
? { dir: captureDir, runId: captureRunId, video, compress: true }
|
|
299
|
+
: undefined;
|
|
270
300
|
const browserLifecycle = scenarioBrowserLifecycle(needsBrowser
|
|
271
301
|
? await (async () => {
|
|
272
302
|
const provider = await resolveScenarioBrowserProvider({
|
|
@@ -277,6 +307,7 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
277
307
|
actors: scenarioActors,
|
|
278
308
|
signInPath: env.signInPath,
|
|
279
309
|
failureDir,
|
|
310
|
+
capture,
|
|
280
311
|
browserScenarios: [...browserStepsByFlow.keys()],
|
|
281
312
|
driver: config.scenarios?.browserDriver,
|
|
282
313
|
});
|
|
@@ -334,10 +365,17 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
334
365
|
* grouping, not something durable. It gets the same three arguments a
|
|
335
366
|
* scenario body gets, the CLI's own singletons included, and its result is
|
|
336
367
|
* discarded.
|
|
368
|
+
*
|
|
369
|
+
* Its context is *feature*-scoped — shared by that feature's `before` and
|
|
370
|
+
* `after`, and deliberately not the context the group's scenarios see:
|
|
371
|
+
* one bag across a group is the invisible coupling a Cucumber world had.
|
|
337
372
|
*/
|
|
338
373
|
const singletonServices = pikkuState(null, 'package', 'singletonServices');
|
|
339
|
-
const runFeatureHook = async (hook) => {
|
|
340
|
-
await hook(singletonServices, undefined, {
|
|
374
|
+
const runFeatureHook = async (hook, context) => {
|
|
375
|
+
await hook(singletonServices, undefined, {
|
|
376
|
+
actors,
|
|
377
|
+
scenario: { context },
|
|
378
|
+
});
|
|
341
379
|
};
|
|
342
380
|
const hookFailures = [];
|
|
343
381
|
const runEntry = async (label, scenarioName, data) => {
|
|
@@ -345,6 +383,9 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
345
383
|
// Before the scenario, not after it: the last scenario's window is left
|
|
346
384
|
// open for headed debugging, while this one still starts clean.
|
|
347
385
|
await browserLifecycle.reset();
|
|
386
|
+
// After the reset, which is what closes the previous scenario's context
|
|
387
|
+
// and finalises its video.
|
|
388
|
+
browserLifecycle.beginScenario(label);
|
|
348
389
|
if (coverageActive) {
|
|
349
390
|
const reset = await invokeCoverage('pikkuScenarioResetLiveCoverage');
|
|
350
391
|
if (reset && reset.enabled === false) {
|
|
@@ -428,10 +469,11 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
428
469
|
? `${groupName} › ${entry.scenarioName}${data}`
|
|
429
470
|
: entry.scenarioName;
|
|
430
471
|
};
|
|
472
|
+
const featureContext = {};
|
|
431
473
|
let beforeError;
|
|
432
474
|
if (group.before) {
|
|
433
475
|
try {
|
|
434
|
-
await runFeatureHook(group.before);
|
|
476
|
+
await runFeatureHook(group.before, featureContext);
|
|
435
477
|
}
|
|
436
478
|
catch (e) {
|
|
437
479
|
beforeError = e;
|
|
@@ -459,7 +501,7 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
459
501
|
finally {
|
|
460
502
|
if (group.after) {
|
|
461
503
|
try {
|
|
462
|
-
await runFeatureHook(group.after);
|
|
504
|
+
await runFeatureHook(group.after, featureContext);
|
|
463
505
|
}
|
|
464
506
|
catch (e) {
|
|
465
507
|
hookFailures.push(`feature '${groupName}' after hook failed: ${e?.message ?? e}`);
|
|
@@ -468,6 +510,12 @@ export const scenarioRun = pikkuSessionlessFunc({
|
|
|
468
510
|
}
|
|
469
511
|
}
|
|
470
512
|
await browserLifecycle.close();
|
|
513
|
+
// Reported after the browser has closed, because video is only finalised
|
|
514
|
+
// when its context is. A capture nobody can find is a capture nobody
|
|
515
|
+
// looks at, and looking at them is the entire point of the flags.
|
|
516
|
+
if (capture) {
|
|
517
|
+
logger.info(`Captures → ${join(capture.dir, capture.runId)}`);
|
|
518
|
+
}
|
|
471
519
|
if (coverage && Object.keys(scenarioCoverage).length > 0) {
|
|
472
520
|
const coverageDir = join(resolve(config.rootDir, config.outDir), 'coverage');
|
|
473
521
|
mkdirSync(coverageDir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const scopesAudit: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
1
|
+
export declare const scopesAudit: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -9,6 +9,6 @@ export declare const scopesPrune: import("#pikku").PikkuFunctionConfig<{
|
|
|
9
9
|
yes?: boolean;
|
|
10
10
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
11
11
|
yes?: boolean;
|
|
12
|
-
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
12
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
|
|
13
13
|
yes?: boolean;
|
|
14
14
|
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
export declare const serve: import("#pikku").PikkuFunctionConfig<{
|
|
2
2
|
port?: string;
|
|
3
3
|
console?: boolean;
|
|
4
|
+
model?: string;
|
|
4
5
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
5
6
|
port?: string;
|
|
6
7
|
console?: boolean;
|
|
7
|
-
|
|
8
|
+
model?: string;
|
|
9
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
|
|
8
10
|
port?: string;
|
|
9
11
|
console?: boolean;
|
|
12
|
+
model?: string;
|
|
10
13
|
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -3,20 +3,25 @@ import { pikkuSessionlessFunc } from '#pikku';
|
|
|
3
3
|
import { ConsoleLogger, LocalEmailService, InMemoryQueueService, InMemoryWorkflowService, InMemoryTriggerService, InMemoryAIRunStateService, QueueWebhookService, } from '@pikku/core/services';
|
|
4
4
|
import { KyselyAIStorageService, KyselyAIRunStateService, KyselyAgentRunService, } from '@pikku/kysely';
|
|
5
5
|
import { stopSingletonServices } from '@pikku/core';
|
|
6
|
-
import { pikkuState } from '@pikku/core/
|
|
6
|
+
import { pikkuState } from '@pikku/core/ecosystem';
|
|
7
|
+
import { wireAIScorerQueueWorkers } from '@pikku/core/ai-scorer';
|
|
7
8
|
import { LocalMetaService } from '@pikku/core/services/local-meta';
|
|
8
9
|
import { LocalContent, } from '@pikku/core/services/local-content';
|
|
9
10
|
import { InMemorySchedulerService } from '@pikku/schedule';
|
|
10
11
|
import { resolveDb, createKysely, parseDatabaseUrl, } from '../db/local-db.js';
|
|
11
12
|
import { loadUserBootstrap, loadUserModule } from './load-user-project.js';
|
|
13
|
+
import { registerScenarioInstrumentation } from '../wirings/scenarios/register-scenario-instrumentation.js';
|
|
14
|
+
import { resolveScaffoldFeature } from '../../utils/resolve-scaffold-feature.js';
|
|
12
15
|
import { createDevAIAgentRunner } from './dev-ai-runner.js';
|
|
13
16
|
import { resolveConsoleMount } from './serve-console.js';
|
|
14
17
|
import { serverReadyLine } from '../../server/server-ready.js';
|
|
15
18
|
import { createEphemeralContentSigningJWT } from '../../server/content-signing-jwt.js';
|
|
19
|
+
import { applyModelAliasOverride } from '../../utils/model-alias-override.js';
|
|
16
20
|
export const serve = pikkuSessionlessFunc({
|
|
17
21
|
remote: true,
|
|
18
|
-
func: async ({ logger, config, getInspectorState, variables, devServerRunner }, { port, console: serveConsole }) => {
|
|
22
|
+
func: async ({ logger, config, getInspectorState, variables, devServerRunner }, { port, console: serveConsole, model }) => {
|
|
19
23
|
process.env.PIKKU_DEV_QUICK_LOGIN ??= 'true';
|
|
24
|
+
applyModelAliasOverride(logger, model, config.models);
|
|
20
25
|
const resolvedPort = parseInt(port || '3000', 10);
|
|
21
26
|
const hostname = 'localhost';
|
|
22
27
|
const bindHostname = '127.0.0.1';
|
|
@@ -28,6 +33,14 @@ export const serve = pikkuSessionlessFunc({
|
|
|
28
33
|
return;
|
|
29
34
|
}
|
|
30
35
|
await loadUserBootstrap(pikkuDir);
|
|
36
|
+
// Scenario instrumentation exists only on a locally served project: the
|
|
37
|
+
// runner calls it over RPC to reset and snapshot coverage and stub calls.
|
|
38
|
+
// It is registered here, after the app bootstrap, rather than generated
|
|
39
|
+
// into the project — an app bootstrap is what a deployed bundle imports,
|
|
40
|
+
// and coverage endpoints have no business in one.
|
|
41
|
+
if (config.scaffold?.scenarios) {
|
|
42
|
+
registerScenarioInstrumentation(resolveScaffoldFeature('scenarios', config.scaffold.scenarios).auth);
|
|
43
|
+
}
|
|
31
44
|
const workflowService = new InMemoryWorkflowService();
|
|
32
45
|
const configModule = await loadUserModule(pikkuConfigFactory.file);
|
|
33
46
|
const servicesModule = await loadUserModule(singletonServicesFactory.file);
|
|
@@ -115,6 +128,7 @@ export const serve = pikkuSessionlessFunc({
|
|
|
115
128
|
};
|
|
116
129
|
pikkuState(null, 'package', 'singletonServices', resolvedServices);
|
|
117
130
|
resolvedServices.workflowService?.wireQueueWorkers?.();
|
|
131
|
+
wireAIScorerQueueWorkers();
|
|
118
132
|
const { serverLifecycleFactory } = inspectorState.filesAndMethods;
|
|
119
133
|
const loadLifecycle = async () => {
|
|
120
134
|
if (!serverLifecycleFactory)
|
|
@@ -2,7 +2,7 @@ export declare const pikkuSkillsList: import("#pikku").PikkuFunctionConfig<{
|
|
|
2
2
|
target?: string;
|
|
3
3
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
4
4
|
target?: string;
|
|
5
|
-
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
5
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
|
|
6
6
|
target?: string;
|
|
7
7
|
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
8
8
|
export declare const pikkuSkillsInstall: import("#pikku").PikkuFunctionConfig<{
|
|
@@ -17,7 +17,7 @@ export declare const pikkuSkillsInstall: import("#pikku").PikkuFunctionConfig<{
|
|
|
17
17
|
core?: boolean;
|
|
18
18
|
fabric?: boolean;
|
|
19
19
|
update?: boolean;
|
|
20
|
-
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
20
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
|
|
21
21
|
agent?: string;
|
|
22
22
|
only?: string;
|
|
23
23
|
core?: boolean;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
1
|
+
import { renderValidate } from '../validate/validate.js';
|
|
2
|
+
export declare const validate: import("#pikku").PikkuFunctionConfig<Record<string, never>, {
|
|
3
3
|
ok: boolean;
|
|
4
4
|
root: string;
|
|
5
|
+
ran: {
|
|
6
|
+
checkId: string;
|
|
7
|
+
subject: string;
|
|
8
|
+
target: string;
|
|
9
|
+
}[];
|
|
5
10
|
findings: {
|
|
6
11
|
id: string;
|
|
7
12
|
severity: "warn" | "error" | "info";
|
|
@@ -12,6 +17,11 @@ export declare const workspaceValidate: import("#pikku").PikkuFunctionConfig<Rec
|
|
|
12
17
|
}, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<Record<string, never>, {
|
|
13
18
|
ok: boolean;
|
|
14
19
|
root: string;
|
|
20
|
+
ran: {
|
|
21
|
+
checkId: string;
|
|
22
|
+
subject: string;
|
|
23
|
+
target: string;
|
|
24
|
+
}[];
|
|
15
25
|
findings: {
|
|
16
26
|
id: string;
|
|
17
27
|
severity: "warn" | "error" | "info";
|
|
@@ -19,9 +29,14 @@ export declare const workspaceValidate: import("#pikku").PikkuFunctionConfig<Rec
|
|
|
19
29
|
path: string;
|
|
20
30
|
fixHint: string;
|
|
21
31
|
}[];
|
|
22
|
-
}, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<Record<string, never>, {
|
|
32
|
+
}, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<Record<string, never>, {
|
|
23
33
|
ok: boolean;
|
|
24
34
|
root: string;
|
|
35
|
+
ran: {
|
|
36
|
+
checkId: string;
|
|
37
|
+
subject: string;
|
|
38
|
+
target: string;
|
|
39
|
+
}[];
|
|
25
40
|
findings: {
|
|
26
41
|
id: string;
|
|
27
42
|
severity: "warn" | "error" | "info";
|
|
@@ -30,4 +45,4 @@ export declare const workspaceValidate: import("#pikku").PikkuFunctionConfig<Rec
|
|
|
30
45
|
fixHint: string;
|
|
31
46
|
}[];
|
|
32
47
|
}, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
33
|
-
export {
|
|
48
|
+
export { renderValidate };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
2
|
+
import { ValidateInput, ValidateOutput, renderValidate, runProjectValidate, } from '../validate/validate.js';
|
|
3
|
+
export const validate = pikkuSessionlessFunc({
|
|
4
|
+
description: 'Check this project against every Pikku check that applies to it — app structure, and the published file set of any addon it contains. Prints what was checked, with fix hints for anything wrong.',
|
|
5
|
+
input: ValidateInput,
|
|
6
|
+
output: ValidateOutput,
|
|
7
|
+
func: async () => runProjectValidate(),
|
|
8
|
+
});
|
|
9
|
+
export { renderValidate };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuVersionsCheck: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
1
|
+
export declare const pikkuVersionsCheck: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -2,6 +2,6 @@ export declare const pikkuVersionsInit: import("#pikku").PikkuFunctionConfig<{
|
|
|
2
2
|
force?: boolean;
|
|
3
3
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
4
4
|
force?: boolean;
|
|
5
|
-
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
5
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
|
|
6
6
|
force?: boolean;
|
|
7
7
|
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuVersionsUpdate: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
1
|
+
export declare const pikkuVersionsUpdate: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -2,6 +2,6 @@ export declare const watch: import("#pikku").PikkuFunctionConfig<{
|
|
|
2
2
|
hmr?: boolean;
|
|
3
3
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
4
4
|
hmr?: boolean;
|
|
5
|
-
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
5
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<{
|
|
6
6
|
hmr?: boolean;
|
|
7
7
|
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -40,7 +40,7 @@ export interface ResolvedPostgresDb extends ResolvedDbBase {
|
|
|
40
40
|
devSeedFile: string;
|
|
41
41
|
/**
|
|
42
42
|
* Postgres extensions the embedded PGlite databases must load, as declared by
|
|
43
|
-
* `pgliteExtensions` in the project's config. See
|
|
43
|
+
* `db.pgliteExtensions` in the project's pikku.config.json. See
|
|
44
44
|
* {@link loadPGliteExtensions}.
|
|
45
45
|
*
|
|
46
46
|
* Carried even in `url` mode: the shadow database the CLI migrates and
|
|
@@ -72,6 +72,7 @@ export declare function parseDatabaseUrl(url: string): Pick<UserConfigShape, 'sq
|
|
|
72
72
|
export declare function resolveDb(userConfig: UserConfigShape, rootDir: string, outDir: string, runtimeDir?: string, dbConfig?: {
|
|
73
73
|
schema?: string;
|
|
74
74
|
defaultSchema?: string;
|
|
75
|
+
pgliteExtensions?: string[];
|
|
75
76
|
} | string): ResolvedDb | null;
|
|
76
77
|
/** @deprecated Use resolveDb(userConfig, ...) instead. */
|
|
77
78
|
export declare function resolveLocalDb(sqliteDb: string | undefined, rootDir: string, outDir: string, runtimeDir?: string): ResolvedSqliteDb | null;
|
|
@@ -68,7 +68,7 @@ export function resolveDb(userConfig, rootDir, outDir, runtimeDir, dbConfig) {
|
|
|
68
68
|
if (userConfig.postgresUrl && userConfig.sqliteDb) {
|
|
69
69
|
throw new Error('Both postgresUrl and sqliteDb are set. Configure exactly one database dialect.');
|
|
70
70
|
}
|
|
71
|
-
const pgliteExtensions =
|
|
71
|
+
const pgliteExtensions = (typeof dbConfig === 'string' ? undefined : dbConfig?.pgliteExtensions) ?? [];
|
|
72
72
|
if (userConfig.postgresUrl) {
|
|
73
73
|
return {
|
|
74
74
|
dialect: 'postgres',
|
|
@@ -268,7 +268,7 @@ function explainMissingExtension(error, declared) {
|
|
|
268
268
|
return new Error(`The embedded PGlite database has no '${name}' extension. ` +
|
|
269
269
|
`The CLI migrates a PGlite shadow database to type and diff your schema, ` +
|
|
270
270
|
`so every extension your migrations use has to be declared as ` +
|
|
271
|
-
`pgliteExtensions in
|
|
271
|
+
`db.pgliteExtensions in pikku.config.json — e.g. "db": { "pgliteExtensions": ["${name}"] } ` +
|
|
272
272
|
`for a PGlite contrib extension, or the package that publishes it ` +
|
|
273
273
|
`('@electric-sql/pglite-pgvector' for pgvector).` +
|
|
274
274
|
(declared.length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuFetch: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
1
|
+
export declare const pikkuFetch: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuNext: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
1
|
+
export declare const pikkuNext: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuTanStackStart: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
1
|
+
export declare const pikkuTanStackStart: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuWebSocketTyped: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
1
|
+
export declare const pikkuWebSocketTyped: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices, unknown> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ValidateFinding as Finding } from './persona-checks.js';
|
|
2
|
+
/**
|
|
3
|
+
* A package that publishes generated pikku output.
|
|
4
|
+
*
|
|
5
|
+
* The generated files carry relative imports to hand-written sources, so what
|
|
6
|
+
* the package ships and what it references have to agree — which is what the
|
|
7
|
+
* checks below are for.
|
|
8
|
+
*
|
|
9
|
+
* Having a `.pikku` directory is not enough on its own: an app's
|
|
10
|
+
* packages/functions has one too, and it is codegen output for that app rather
|
|
11
|
+
* than something anybody installs. The question is whether the package *ships*
|
|
12
|
+
* it, so the signal is a `files`/`exports` that carries it into the tarball.
|
|
13
|
+
* A private package is excluded for the same reason — nobody installs it, so
|
|
14
|
+
* its published file set is not a thing that can be wrong.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isAddonPackage(pkgDir: string): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* Every relative import in a shipped generated file must resolve to a file
|
|
19
|
+
* that is itself shipped.
|
|
20
|
+
*
|
|
21
|
+
* Stated as a property rather than as "the build script must copy types/",
|
|
22
|
+
* because the build script is not the only way to get this wrong and will not
|
|
23
|
+
* always be a `cp`. The generated files declare what they need; the check just
|
|
24
|
+
* holds the package to it.
|
|
25
|
+
*/
|
|
26
|
+
export declare function runAddonPackageChecks(pkgDir: string): Promise<Finding[]>;
|