@pikku/cli 0.12.124 → 0.12.125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +79 -0
- package/console-app/assets/{abnfDiagram-N423BO3Z-BP7zxMq6.js → abnfDiagram-N423BO3Z-B2suyn6i.js} +1 -1
- package/console-app/assets/architecture-TIHT7OUA-DmG0bXDT.js +1 -0
- package/console-app/assets/{architectureDiagram-T3A2C74G-mvqdkIfF.js → architectureDiagram-T3A2C74G-BQ5Dfvpo.js} +1 -1
- package/console-app/assets/{blockDiagram-VBNYF7ZC-daD8h3VT.js → blockDiagram-VBNYF7ZC-D4pVRDiF.js} +1 -1
- package/console-app/assets/{c4Diagram-5PPSVZJV-Bd0_wKJj.js → c4Diagram-5PPSVZJV-Da04jGpq.js} +1 -1
- package/console-app/assets/channel-BgCT5gon.js +1 -0
- package/console-app/assets/{chunk-2GRJ4B5K-BFRr_H2V.js → chunk-2GRJ4B5K-CwODIPP4.js} +1 -1
- package/console-app/assets/{chunk-4I5QYGJK-BXWo5Xyx.js → chunk-4I5QYGJK-Bep4akjR.js} +1 -1
- package/console-app/assets/{chunk-5RXB4S5H-BFnXfzzz.js → chunk-5RXB4S5H-CGyCRU9L.js} +1 -1
- package/console-app/assets/{chunk-6Q2QTUOP-Bswg4T3s.js → chunk-6Q2QTUOP-D0IK0SMT.js} +1 -1
- package/console-app/assets/{chunk-7Z6QIM7H-StNGH40U.js → chunk-7Z6QIM7H-D12vS1jX.js} +1 -1
- package/console-app/assets/{chunk-GF5L2VYU-QwXKtQxa.js → chunk-GF5L2VYU-kOLwTzIA.js} +1 -1
- package/console-app/assets/{chunk-I66GZJ75-DDQhhfA0.js → chunk-I66GZJ75-Cb2nDoa3.js} +1 -1
- package/console-app/assets/{chunk-JQJVKLGR-wFyF2bUv.js → chunk-JQJVKLGR-B3a_ctfQ.js} +1 -1
- package/console-app/assets/{chunk-KBJHAD2P-CQPQVDkD.js → chunk-KBJHAD2P-DeP2Lqwp.js} +1 -1
- package/console-app/assets/{chunk-NSK5VX7P-DZhjvnHm.js → chunk-NSK5VX7P-BO8vlGrO.js} +1 -1
- package/console-app/assets/{chunk-QR6OTTB3-D1-TbcCP.js → chunk-QR6OTTB3-sX5V0Lok.js} +1 -1
- package/console-app/assets/{chunk-RYQCIY6F-82OYF6U8.js → chunk-RYQCIY6F-DoCObEhk.js} +1 -1
- package/console-app/assets/{chunk-UBXNYLIW-D85x6Zh2.js → chunk-UBXNYLIW-BndMXU5r.js} +1 -1
- package/console-app/assets/{chunk-W5SLKNZC-B1Ps46_n.js → chunk-W5SLKNZC--VrZN8EC.js} +1 -1
- package/console-app/assets/{chunk-WRU74C26-Ct8XrToU.js → chunk-WRU74C26-DdS0mzXO.js} +1 -1
- package/console-app/assets/chunk-XXDRQBXY-EP2C9tTO.js +1 -0
- package/console-app/assets/classDiagram-JCYQIIEL-D9wGqB4J.js +1 -0
- package/console-app/assets/classDiagram-v2-OCEON4UE-D9wGqB4J.js +1 -0
- package/console-app/assets/{cose-bilkent-JH36ORCC-DdevwV5Y.js → cose-bilkent-JH36ORCC-C5EnHkFn.js} +1 -1
- package/console-app/assets/{cynefin-VYW2F7L2-Dj55csoo.js → cynefin-VYW2F7L2-9irdkTt4.js} +1 -1
- package/console-app/assets/{cynefinDiagram-MW4NZA55-XWSzdajo.js → cynefinDiagram-MW4NZA55-DY19660c.js} +1 -1
- package/console-app/assets/{dagre-VZM6K2ZE-BV2l3zSF.js → dagre-VZM6K2ZE-BYFZSaSb.js} +1 -1
- package/console-app/assets/{dagre-CLoXIMX5.js → dagre-nXgDYqvf.js} +1 -1
- package/console-app/assets/{diagram-7IWD3JNH-DC9NK-nv.js → diagram-7IWD3JNH-oDftiTp1.js} +1 -1
- package/console-app/assets/{diagram-B4RE2ZJO-Cirfb0aN.js → diagram-B4RE2ZJO-Cbj-pPbH.js} +1 -1
- package/console-app/assets/{diagram-LBJQPF4R-BuRRy5X5.js → diagram-LBJQPF4R-Ch53oSKw.js} +1 -1
- package/console-app/assets/{diagram-Q27KOJAE-CAOKQ2xs.js → diagram-Q27KOJAE-DA7K814v.js} +1 -1
- package/console-app/assets/{diagram-UB23O5K3-Bto5kBJo.js → diagram-UB23O5K3-B-_C-ctS.js} +1 -1
- package/console-app/assets/{ebnfDiagram-BXEA7PRR-C5OndYGC.js → ebnfDiagram-BXEA7PRR-DsOdsKXy.js} +1 -1
- package/console-app/assets/{erDiagram-JOGREHBK-DqU4xV4C.js → erDiagram-JOGREHBK-XB1mP5_A.js} +1 -1
- package/console-app/assets/eventmodeling-45OFAUF4-NKFCZ8Fj.js +1 -0
- package/console-app/assets/flowDiagram-UKHOOZJN-BpdPkmum.js +1 -0
- package/console-app/assets/{ganttDiagram-PKOTCBZU-D5_DE9R0.js → ganttDiagram-PKOTCBZU-knk0XSHi.js} +1 -1
- package/console-app/assets/{gitGraph-TEB2WS4Q-nuqfz7Fd.js → gitGraph-TEB2WS4Q-COJnK2tM.js} +1 -1
- package/console-app/assets/{gitGraphDiagram-DS77QQ5N-BtJwp2Y3.js → gitGraphDiagram-DS77QQ5N-sF0v605q.js} +1 -1
- package/console-app/assets/{index-DXcH2K9z.css → index-C8MC-uMB.css} +1 -1
- package/console-app/assets/{index-DRfts2XF.js → index-DMnbsgzs.js} +3 -3
- package/console-app/assets/{info-DKCQHKI2-CIfPVqHr.js → info-DKCQHKI2-Cbatr0w6.js} +1 -1
- package/console-app/assets/{infoDiagram-6WML65LV-B-gTHQad.js → infoDiagram-6WML65LV-93TFPCu2.js} +1 -1
- package/console-app/assets/{ishikawaDiagram-WSZJBQD7-CCwAWb1g.js → ishikawaDiagram-WSZJBQD7-BBR8_Qms.js} +1 -1
- package/console-app/assets/{journeyDiagram-NVQOT4AX-DhqNj_ci.js → journeyDiagram-NVQOT4AX-zG55yDoc.js} +1 -1
- package/console-app/assets/{kanban-definition-27J2QSJJ-DspZ1b3Y.js → kanban-definition-27J2QSJJ-DonGcEAY.js} +1 -1
- package/console-app/assets/{line-D7ZCpNkR.js → line-D1WdVm1S.js} +1 -1
- package/console-app/assets/{linear-B5jMy_q9.js → linear-D2GQL4Cm.js} +1 -1
- package/console-app/assets/{mermaid-parser.core-CMBFGJ0U.js → mermaid-parser.core-b4yKyO56.js} +3 -3
- package/console-app/assets/{mermaid.core-DYoDrSEJ.js → mermaid.core-Cwfec1gr.js} +4 -4
- package/console-app/assets/{mindmap-definition-FAOFIHXS-DsHwd2K9.js → mindmap-definition-FAOFIHXS-D0G4yKgw.js} +1 -1
- package/console-app/assets/{packet-7NZHBO7P-BSRRjf4H.js → packet-7NZHBO7P-DDa4HL2T.js} +1 -1
- package/console-app/assets/{pegDiagram-VL7TDLO6-Bi0OlzgS.js → pegDiagram-VL7TDLO6-fPdN5VZs.js} +1 -1
- package/console-app/assets/{pie-RZYD4A2V-D-8tgqYW.js → pie-RZYD4A2V-DRHURUqo.js} +1 -1
- package/console-app/assets/{pieDiagram-7S7Q4E2Y-CsYbVqaR.js → pieDiagram-7S7Q4E2Y-DMYn8ga_.js} +1 -1
- package/console-app/assets/{quadrantDiagram-CIZ2JOQS-LkLWrWKK.js → quadrantDiagram-CIZ2JOQS-C190OamC.js} +1 -1
- package/console-app/assets/{radar-I7S5WNFK-Bst62XZP.js → radar-I7S5WNFK-Djvqzz9A.js} +1 -1
- package/console-app/assets/{railroad-3IZDKUUU-zJswMQYF.js → railroad-3IZDKUUU-C9YvFeFq.js} +1 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-B3CYVW4p.js +1 -0
- package/console-app/assets/railroad-ebnf-EBAXGLYW-DrZ2yF62.js +1 -0
- package/console-app/assets/railroad-peg-LSFZ7HO6-CWAmMyxd.js +1 -0
- package/console-app/assets/{railroadDiagram-AXF67PYL-C0QZkg7m.js → railroadDiagram-AXF67PYL-IRFg1VrU.js} +1 -1
- package/console-app/assets/{requirementDiagram-LRYGKXZP-BQg0AbLI.js → requirementDiagram-LRYGKXZP-L-7ubbcT.js} +1 -1
- package/console-app/assets/{sankeyDiagram-W5VNT64P-CQb0BMMi.js → sankeyDiagram-W5VNT64P-DBttV6Gt.js} +1 -1
- package/console-app/assets/{sequenceDiagram-SI44F4Z6-BzgBi0a5.js → sequenceDiagram-SI44F4Z6-Bg15oKAB.js} +1 -1
- package/console-app/assets/{src-Dg-KiSsV.js → src-DUC7tLWb.js} +1 -1
- package/console-app/assets/{stateDiagram-OKZ733FA-BiqXn68g.js → stateDiagram-OKZ733FA-PWl0XGs5.js} +1 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-Celbgz4u.js +1 -0
- package/console-app/assets/{swimlanes-SLNWSIFB-Dy7wDP1q.js → swimlanes-SLNWSIFB-CyXEtGBV.js} +1 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-zxpNaB4U.js +8 -0
- package/console-app/assets/{timeline-definition-Z64GVDOM-DSWXli8X.js → timeline-definition-Z64GVDOM-BLA-DhBt.js} +1 -1
- package/console-app/assets/{treeView-QDETBFTQ-CeWwcs9r.js → treeView-QDETBFTQ-Bfnmn2UY.js} +1 -1
- package/console-app/assets/{treemap-6X3UGDF4-BfrumiJh.js → treemap-6X3UGDF4-DTA0wveO.js} +1 -1
- package/console-app/assets/{vennDiagram-T6HMQDX7-BsuldZ1n.js → vennDiagram-T6HMQDX7-CLXYZln0.js} +1 -1
- package/console-app/assets/{wardley-OPB4EBWU-oZldxS8z.js → wardley-OPB4EBWU-zwxqisG0.js} +1 -1
- package/console-app/assets/{wardleyDiagram-T6FBY63Y-C5LXyHMj.js → wardleyDiagram-T6FBY63Y-hKtKvNlv.js} +1 -1
- package/console-app/assets/{xychartDiagram-ELKLHX3M-CwhqhNkO.js → xychartDiagram-ELKLHX3M-BGf8p4bo.js} +1 -1
- package/console-app/index.html +2 -2
- package/dist/.pikku/addon/index.d.ts +1 -1
- package/dist/.pikku/addon/index.js +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
- package/dist/.pikku/agent/index.d.ts +1 -1
- package/dist/.pikku/agent/index.js +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
- package/dist/.pikku/auth/index.d.ts +1 -1
- package/dist/.pikku/auth/index.js +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
- package/dist/.pikku/channel/index.d.ts +1 -1
- package/dist/.pikku/channel/index.js +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/index.d.ts +1 -1
- package/dist/.pikku/cli/index.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +6 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.json +7 -0
- 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 +14 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- package/dist/.pikku/error/index.d.ts +1 -1
- package/dist/.pikku/error/index.js +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
- package/dist/.pikku/function/index.d.ts +1 -1
- package/dist/.pikku/function/index.js +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +25 -6
- package/dist/.pikku/function/pikku-functions.gen.js +1 -1
- package/dist/.pikku/gateway/index.d.ts +1 -1
- package/dist/.pikku/gateway/index.js +1 -1
- package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
- package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
- package/dist/.pikku/http/index.d.ts +1 -1
- package/dist/.pikku/http/index.js +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/mcp/index.d.ts +1 -1
- package/dist/.pikku/mcp/index.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/middleware/index.d.ts +1 -1
- package/dist/.pikku/middleware/index.js +1 -1
- package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
- package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
- package/dist/.pikku/pikku-services.gen.d.ts +1 -1
- package/dist/.pikku/queue/index.d.ts +1 -1
- package/dist/.pikku/queue/index.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +1 -0
- package/dist/.pikku/scenarios/index.d.ts +1 -1
- package/dist/.pikku/scenarios/index.js +1 -1
- package/dist/.pikku/scenarios/pikku-personas.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
- package/dist/.pikku/scheduler/index.d.ts +1 -1
- package/dist/.pikku/scheduler/index.js +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +5 -1
- package/dist/.pikku/schemas/schemas/DeployApplyInput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/FabricProjectsListInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/FabricProjectsListOutput.schema.json +1 -0
- package/dist/.pikku/scopes/index.d.ts +1 -1
- package/dist/.pikku/scopes/index.js +1 -1
- package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
- package/dist/.pikku/secrets/index.d.ts +1 -1
- package/dist/.pikku/secrets/index.js +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/setup/index.d.ts +1 -1
- package/dist/.pikku/setup/index.js +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
- package/dist/.pikku/trigger/index.d.ts +1 -1
- package/dist/.pikku/trigger/index.js +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/index.d.ts +1 -1
- package/dist/.pikku/variables/index.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
- package/dist/.pikku/workflow/index.d.ts +1 -1
- package/dist/.pikku/workflow/index.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/cli.wiring.js +7 -0
- package/dist/src/deploy/build-pipeline.d.ts +10 -0
- package/dist/src/deploy/build-pipeline.js +16 -1
- package/dist/src/deploy/frontend-assets.d.ts +50 -0
- package/dist/src/deploy/frontend-assets.js +82 -0
- package/dist/src/fabric/fabric-commands.d.ts +40 -0
- package/dist/src/fabric/fabric-commands.js +6 -0
- package/dist/src/fabric/functions/projects-list.function.d.ts +72 -0
- package/dist/src/fabric/functions/projects-list.function.js +63 -0
- package/dist/src/functions/commands/deploy-apply.d.ts +10 -0
- package/dist/src/functions/commands/deploy-apply.js +8 -0
- package/dist/src/functions/commands/deploy-plan.js +1 -0
- package/dist/src/functions/commands/dev.js +13 -2
- package/dist/src/functions/commands/environment.d.ts +10 -0
- package/dist/src/functions/commands/environment.js +24 -0
- package/dist/src/functions/commands/serve-frontend.d.ts +11 -0
- package/dist/src/functions/commands/serve-frontend.js +17 -0
- package/dist/src/functions/commands/serve.js +16 -3
- package/dist/src/functions/db/annotation-parser.d.ts +8 -0
- package/dist/src/functions/db/annotation-parser.js +2 -0
- package/dist/src/functions/db/db-codegen.js +20 -1
- package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.js +6 -3
- package/dist/src/server/dev-server-runner.interface.d.ts +9 -0
- package/dist/src/server/node-server-runner.js +3 -0
- package/dist/src/server/server-ready.d.ts +6 -9
- package/dist/src/server/server-ready.js +6 -9
- package/dist/src/utils/frontend.d.ts +9 -0
- package/dist/src/utils/frontend.js +18 -0
- package/dist/src/utils/pikku-cli-config.d.ts +10 -1
- package/dist/src/utils/pikku-cli-config.js +27 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/snippets.json +2 -2
- package/surface.json +1 -1
- package/console-app/assets/architecture-TIHT7OUA-D4Hj6824.js +0 -1
- package/console-app/assets/channel-09aKDzM0.js +0 -1
- package/console-app/assets/chunk-XXDRQBXY-C1KaR4pt.js +0 -1
- package/console-app/assets/classDiagram-JCYQIIEL-23nagJMi.js +0 -1
- package/console-app/assets/classDiagram-v2-OCEON4UE-23nagJMi.js +0 -1
- package/console-app/assets/eventmodeling-45OFAUF4-RyG54ZHy.js +0 -1
- package/console-app/assets/flowDiagram-UKHOOZJN-DNdfrnRg.js +0 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-DX4FqVY6.js +0 -1
- package/console-app/assets/railroad-ebnf-EBAXGLYW-DdyOtX1l.js +0 -1
- package/console-app/assets/railroad-peg-LSFZ7HO6-CclC1sXF.js +0 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-I34jrzP0.js +0 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-C1PrPB0G.js +0 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pikku/cli",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.125",
|
|
4
4
|
"description": "Pikku CLI — code generation, dev server, migrations and deployment",
|
|
5
5
|
"author": "yasser.fadl@gmail.com",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
"@jridgewell/trace-mapping": "^0.3.31",
|
|
32
32
|
"@openapi-contrib/json-schema-to-openapi-schema": "^4.3.4",
|
|
33
33
|
"@pikku/ai-vercel": "^0.12.13",
|
|
34
|
-
"@pikku/better-auth": "^0.12.
|
|
35
|
-
"@pikku/bun-server": "^0.12.
|
|
34
|
+
"@pikku/better-auth": "^0.12.32",
|
|
35
|
+
"@pikku/bun-server": "^0.12.10",
|
|
36
36
|
"@pikku/code-edit": "^0.12.1",
|
|
37
|
-
"@pikku/deploy": "^0.12.
|
|
37
|
+
"@pikku/deploy": "^0.12.2",
|
|
38
38
|
"@pikku/deploy-cloudflare": "^0.12.13",
|
|
39
39
|
"@pikku/fetch": "^0.12.10",
|
|
40
40
|
"@pikku/inspector": "^0.12.67",
|
|
41
41
|
"@pikku/knowledge": "^0.12.7",
|
|
42
|
-
"@pikku/kysely": "^0.13.
|
|
42
|
+
"@pikku/kysely": "^0.13.23",
|
|
43
43
|
"@pikku/n8n-import": "^0.0.7",
|
|
44
|
-
"@pikku/node-http-server": "^0.12.
|
|
44
|
+
"@pikku/node-http-server": "^0.12.12",
|
|
45
45
|
"@pikku/openapi-parser": "^0.12.20",
|
|
46
46
|
"@pikku/schedule": "^0.12.7",
|
|
47
47
|
"@pikku/skills": "^0.12.19",
|
|
@@ -67,14 +67,14 @@
|
|
|
67
67
|
"zod-to-ts": "^2.1.0"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
|
-
"@pikku/core": "^0.12.
|
|
70
|
+
"@pikku/core": "^0.12.98",
|
|
71
71
|
"@pikku/playwright": "^0.12.79",
|
|
72
72
|
"@pikku/ws": "^0.12.9",
|
|
73
73
|
"better-auth": "^1.6.0",
|
|
74
74
|
"ws": "^8.21.3"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@pikku/core": "^0.12.
|
|
77
|
+
"@pikku/core": "^0.12.98",
|
|
78
78
|
"@pikku/playwright": "^0.12.79",
|
|
79
79
|
"@pikku/ws": "^0.12.9",
|
|
80
80
|
"@playwright/test": "^1.50.0",
|
package/snippets.json
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"cronWirings": "wireScheduler({\n name: 'dailySalesReport',\n schedule: '0 6 * * *', // 06:00 UTC every day\n func: dailySalesReport,\n middleware: [timingMiddleware],\n})\n\nwireScheduler({\n name: 'cleanupAbandonedBaskets',\n schedule: '0 3 * * *', // 03:00 UTC every day\n func: cleanupAbandonedBaskets,\n})",
|
|
41
41
|
"dailySalesReport": "export const dailySalesReport = pikkuVoidFunc({\n // Exposed so an operator can run the sweep on demand and a scenario can\n // prove it still works. A job reachable only by its schedule is a job\n // nobody can test and nobody can force when it matters.\n expose: true,\n description: 'Cron job: compute and log a daily sales summary.',\n func: async ({ kysely, logger }) => {\n const yesterday = new Date()\n yesterday.setDate(yesterday.getDate() - 1)\n yesterday.setHours(0, 0, 0, 0)\n const dayStart = yesterday.toISOString()\n\n const today = new Date(yesterday)\n today.setDate(today.getDate() + 1)\n const dayEnd = today.toISOString()\n\n const [summary, topItems] = await Promise.all([\n kysely\n .selectFrom('order')\n .select([\n (eb) => eb.fn.countAll<number>().as('orderCount'),\n (eb) => eb.fn.sum<number>('totalCents').as('revenueCents'),\n ])\n .where('status', '=', 'paid')\n .where('createdAt', '>=', dayStart)\n .where('createdAt', '<', dayEnd)\n .executeTakeFirst(),\n kysely\n .selectFrom('orderItem')\n .innerJoin('order', 'order.orderId', 'orderItem.orderId')\n .innerJoin('item', 'item.itemId', 'orderItem.itemId')\n .select([\n 'item.name',\n (eb) => eb.fn.sum<number>('orderItem.quantity').as('unitsSold'),\n ])\n .where('order.status', '=', 'paid')\n .where('order.createdAt', '>=', dayStart)\n .where('order.createdAt', '<', dayEnd)\n .groupBy('orderItem.itemId')\n .orderBy('unitsSold', 'desc')\n .limit(5)\n .execute(),\n ])\n\n logger.info({\n event: 'daily_sales_report',\n date: yesterday.toISOString().split('T')[0],\n orders: Number(summary?.orderCount ?? 0),\n revenueCents: Number(summary?.revenueCents ?? 0),\n topItems,\n })\n },\n})",
|
|
42
42
|
"definePersonas": "definePersonas({\n visitor: {\n // A customer, like the people this app is for. The catalogue happens to be\n // readable without a session, so this is not what makes the smoke gate\n // pass — it is what stops the gate depending on that staying true.\n name: 'Visitor',\n jobTitle: 'Synthetic health-check user',\n roles: ['customer'],\n personality:\n 'Signs in and checks their own session — proves auth end to end',\n account: {},\n },\n shopper: {\n name: 'Susan',\n jobTitle: 'Buys for a small caf\\u00e9',\n description: 'Orders stock every week and watches the margins',\n roles: ['customer'],\n personality:\n 'Hunts cheap deals. Tries three coupon codes before giving up, and abandons a basket if checkout asks for anything unexpected.',\n goals: ['Get the weekly order in under five minutes'],\n disposition: 'careless',\n account: {},\n },\n /**\n * Holds `orders:refund` without owning any order — the seam that makes the\n * scope-versus-permission split worth demonstrating. A scenario run as Priya\n * proves support can act on somebody else's order; one run as Susan proves a\n * customer cannot.\n */\n priya: {\n name: 'Priya from Support',\n jobTitle: 'Customer support',\n description:\n 'Handles refunds and cancellations for other people\\u2019s orders',\n roles: ['support'],\n personality:\n 'Methodical. Reads the order history before touching anything, and says what she changed.',\n goals: ['Resolve the customer\\u2019s problem without escalating'],\n account: {},\n },\n alex: {\n name: 'Alex the Owner',\n jobTitle: 'Shop owner',\n description: 'Runs the shop \\u2014 prices, stock and who works here',\n roles: ['admin'],\n personality:\n 'Impatient. Knows the catalogue by heart and expects bulk actions to exist.',\n goals: ['Keep stock accurate', 'See what sold this week'],\n account: {},\n },\n})",
|
|
43
|
-
"defineRoles": "defineSystemRole({\n customer: {\n displayName: 'Customer',\n description: 'Browse the catalogue, place and track their own orders',\n scopes: [\n 'catalogue:read',\n 'orders:create',\n 'orders:read',\n 'payments:charge',\n ],\n },\n /**\n * Handles orders but cannot change what is for sale. `orders:refund` without\n * `catalogue:write` is the seam worth having in a template: support staff\n * routinely need to undo a payment and routinely should not be able to\n * reprice the shop.\n */\n support: {\n displayName: 'Support',\n description: 'Handle customer orders, including refunds',\n scopes: [\n 'catalogue:read',\n 'orders:read',\n 'orders:cancel',\n 'orders:refund',\n 'payments:manage',\n ],\n },\n /**\n * Names the parents rather than enumerating their children — pikku's\n * parent-grant rule means holding a node grants everything beneath it, so\n * `catalogue` is `catalogue:read` and `catalogue:write` in one word instead\n * of a list that drifts as the tree grows.\n *\n * `pikku:console` comes from `@pikku/addon-console`, not from this app
|
|
43
|
+
"defineRoles": "defineSystemRole({\n customer: {\n displayName: 'Customer',\n description: 'Browse the catalogue, place and track their own orders',\n scopes: [\n 'catalogue:read',\n 'orders:create',\n 'orders:read',\n 'payments:charge',\n ],\n },\n /**\n * Handles orders but cannot change what is for sale. `orders:refund` without\n * `catalogue:write` is the seam worth having in a template: support staff\n * routinely need to undo a payment and routinely should not be able to\n * reprice the shop.\n */\n support: {\n displayName: 'Support',\n description: 'Handle customer orders, including refunds',\n scopes: [\n 'catalogue:read',\n 'orders:read',\n 'orders:cancel',\n 'orders:refund',\n 'payments:manage',\n ],\n },\n /**\n * Names the parents rather than enumerating their children — pikku's\n * parent-grant rule means holding a node grants everything beneath it, so\n * `catalogue` is `catalogue:read` and `catalogue:write` in one word instead\n * of a list that drifts as the tree grows.\n *\n * `pikku:console` comes from `@pikku/addon-console`, not from this app, and\n * `virtualUser` from the virtual-user scaffold, whose RPCs no role could\n * otherwise reach. Both are parents rather than `virtualUser:*`: a wildcard\n * has no row in pikku_scopes for pikku_role_scopes to reference.\n */\n admin: {\n displayName: 'Administrator',\n description: 'Everything the shop can do, plus console administration',\n scopes: [\n 'catalogue',\n 'orders',\n 'payments',\n 'reports',\n 'pikku:console',\n 'virtualUser',\n ],\n },\n})",
|
|
44
44
|
"defineScopes": "defineScope({\n catalogue: {\n displayName: 'Catalogue',\n description: 'Browse and manage what is for sale',\n scopes: {\n read: { description: 'Browse items and categories' },\n write: { description: 'Create, edit and withdraw items' },\n },\n },\n orders: {\n displayName: 'Orders',\n description: 'Placing and handling orders',\n scopes: {\n read: { description: 'Read orders' },\n create: { description: 'Place an order' },\n cancel: { description: 'Cancel an order before it ships' },\n refund: { description: 'Refund a paid order' },\n },\n },\n payments: {\n displayName: 'Payments',\n description: 'Reaching the payment provider',\n scopes: {\n charge: { description: 'Create a payment intent for your own order' },\n manage: {\n description: 'Refunds, customers and everything else Stripe offers',\n },\n },\n },\n reports: {\n displayName: 'Reports',\n description: 'Sales and stock reporting',\n scopes: {\n read: { description: 'Read sales and stock reports' },\n },\n },\n})",
|
|
45
45
|
"fetchClient": "export async function shopApiExamples() {\n pikkuFetch.setServerUrl('http://localhost:4000')\n\n const categories = await pikkuFetch.get('/categories')\n const item = await pikkuFetch.get('/items/:itemId', { itemId: 'item-001' })\n\n pikkuFetch.setAuthorizationJWT('user-jwt-token')\n const order = await pikkuFetch.post('/orders', {\n basketId: 'basket-123',\n shippingAddress: {\n line1: '1 High St',\n city: 'London',\n postcode: 'SW1A 1AA',\n country: 'GB',\n },\n })\n\n return { categories, item, order }\n}",
|
|
46
46
|
"funcMultiWire": "// The same function can be wired to multiple transports without any changes.\n// Define once, wire everywhere.\nwireHTTP({ method: 'get', route: '/items/:itemId', func: getItem, auth: false })",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"shopIsOrderOwner": "export const isOrderOwner = pikkuPermission(\n async ({ kysely }, { orderId }: { orderId: string }, { session }) => {\n const order = await kysely\n .selectFrom('order')\n .select('userId')\n .where('orderId', '=', orderId)\n .executeTakeFirst()\n return order?.userId === session?.userId\n }\n)",
|
|
106
106
|
"shopRoutes": "export const shopRoutes = defineHTTPRoutes({\n auth: false,\n routes: {\n // Categories\n listCategories: {\n method: 'get',\n route: '/categories',\n func: listCategories,\n },\n createCategory: {\n method: 'post',\n route: '/categories',\n func: createCategory,\n auth: true,\n },\n\n // Items\n listItems: { method: 'get', route: '/items', func: listItems },\n getItem: { method: 'get', route: '/items/:itemId', func: getItem },\n createItem: {\n method: 'post',\n route: '/items',\n func: createItem,\n auth: true,\n },\n updateItem: {\n method: 'patch',\n route: '/items/:itemId',\n func: updateItem,\n auth: true,\n },\n\n // Account\n getProfile: {\n method: 'get',\n route: '/profile',\n func: getProfile,\n auth: true,\n },\n\n // Basket (sessionless — works for guests too)\n getBasket: { method: 'get', route: '/basket', func: getBasket },\n addToBasket: { method: 'post', route: '/basket/items', func: addToBasket },\n removeFromBasket: {\n method: 'delete',\n route: '/basket/items/:itemId',\n func: removeFromBasket,\n },\n\n // Orders (require auth)\n createOrder: {\n method: 'post',\n route: '/orders',\n func: createOrder,\n auth: true,\n },\n listOrders: {\n method: 'get',\n route: '/orders',\n func: listOrders,\n auth: true,\n },\n getOrder: {\n method: 'get',\n route: '/orders/:orderId',\n func: getOrder,\n auth: true,\n },\n cancelOrder: {\n method: 'post',\n route: '/orders/:orderId/cancel',\n func: cancelOrder,\n auth: true,\n },\n },\n})",
|
|
107
107
|
"shopSecretUsage": "// Note what is *absent* here: `secrets`.\n//\n// Every function-, permission- and auth-facing services type in pikku is\n// bounded by `SecretlessServices`, which omits `secrets` outright. A function\n// cannot read one, so a secret cannot leak through a return value, a log line\n// or an error thrown from business logic — the class of bug you only find in\n// somebody else's incident report.\n//\n// Secrets are read once, where they are needed. `chargeCard` asks the Stripe\n// addon to create a payment intent; `STRIPE_SECRET_KEY` is the addon's secret\n// and never crosses into this function, so it cannot be logged here, returned\n// here, or attached to an error thrown here.\n//\n// This is the step the checkout workflow actually runs. The point used to be\n// made by a second, unwired copy of the same call that existed only to be\n// quoted — so the documented example was the one piece of payment code no\n// shopper ever reached.\nexport const chargeCard = pikkuSessionlessFunc({\n // Invoked by name from `createOrder` as well as by the workflow, so one\n // charge path exists rather than two that can drift.\n expose: true,\n description: 'Charge the card through Stripe.',\n func: async (\n { logger },\n data: { orderId: string; totalCents: number; cardToken?: string },\n { rpc }\n ) => {\n // The order id goes in the payment intent's metadata because that is the\n // only way it comes back: `applyStripeEvent` reads it off the verified\n // webhook event to decide which order was paid. Stripe knows nothing about\n // our ids otherwise.\n const intent = await rpc.invoke('stripe:paymentIntentCreate', {\n amount: data.totalCents,\n currency: 'gbp',\n ...(data.cardToken\n ? { paymentMethod: data.cardToken, confirm: true }\n : {}),\n metadata: { orderId: data.orderId },\n // Charging twice for one order is the expensive failure here, and a\n // workflow step is retried by design.\n idempotencyKey: `order_${data.orderId}`,\n description: `Order ${data.orderId}`,\n })\n\n logger.info({\n event: 'payment_intent_created',\n orderId: data.orderId,\n status: intent.status,\n })\n\n return intent.status === 'succeeded'\n ? { status: 'succeeded' as const, providerRef: intent.id }\n : { status: 'failed' as const, reason: intent.status }\n },\n})",
|
|
108
|
-
"shopServices": "export const createSingletonServices = pikkuServices(\n async (config, existingServices) => {\n const variables =\n existingServices?.variables ??\n new TypedVariablesService(new LocalVariablesService())\n const secrets =\n existingServices?.secrets ??\n new TypedSecretService(new LocalSecretService(variables))\n const logger = existingServices?.logger ?? new JsonConsoleLogger()\n const schema = existingServices?.schema ?? new CFWorkerSchemaService(logger)\n const emailService =\n existingServices?.emailService ??\n new GeneratedTemplateEmailService({\n delegate: new LocalEmailService(),\n })\n // The durable audit sink. In a deployed stage fabric injects the platform's\n // audit service; locally it falls back to a no-op so nothing is persisted.\n const audit = existingServices?.audit ?? new NoopAuditService()\n // kysely is injected by pikku dev (node:sqlite) or the CF Worker workflow (libsql).\n // The template never constructs its own dialect — dialects are fabric/runtime\n // concerns — so it must always be provided by the runtime.\n if (!existingServices?.kysely) {\n throw new Error(\n 'kysely service was not injected by the runtime (pikku dev / fabric)'\n )\n }\n const kysely: Kysely<DB> = existingServices.kysely\n\n // Per-user credential store (wire.getCredential) — needed by addons imported\n // with --auth per-user/delegated. A deployed stage injects it: credentials are\n // sealed to the stage, and only its secrets Worker holds the key. There is no\n // fallback because there is no key to fall back to — the template used to\n // build a `KyselyCredentialService` from a `CREDENTIALS_KEY` secret, which was\n // the stage's own KEK handed to every unit. Outside a stage the app runs fine\n // and credential-using addon calls fail with a clear error from the addon's\n // wire services; wire your own `credentialService` here if you need one.\n const credentialService = existingServices?.credentialService\n\n const litellmProxyUrl = process.env.LITELLM_PROXY_URL ?? null\n const litellmApiKey = process.env.LITELLM_API_KEY ?? null\n let aiAgentRunner: VercelAgentRunner | undefined\n if (litellmProxyUrl && litellmApiKey) {\n // The AI SDKs (~3MB) are stubbed out of non-agent units at bundle time —\n // only units with the `ai-model` capability keep them. So import them\n // dynamically and guard on the module resolving to a real export; in a\n // stubbed unit the import yields `{}` and the runner is simply not built.\n const aiVercel = await import('@pikku/ai-vercel')\n const aiSdk = await import('@ai-sdk/openai-compatible')\n if (aiVercel.VercelAgentRunner && aiSdk.createOpenAICompatible) {\n const litellmProvider = aiSdk.createOpenAICompatible({\n name: 'litellm',\n baseURL: litellmProxyUrl,\n apiKey: litellmApiKey,\n })\n aiAgentRunner = new aiVercel.VercelAgentRunner({\n openai: (modelId: string) => litellmProvider.chatModel(modelId),\n anthropic: (modelId: string) => litellmProvider.chatModel(modelId),\n google: (modelId: string) => litellmProvider.chatModel(modelId),\n deepseek: (modelId: string) => litellmProvider.chatModel(modelId),\n })\n }\n }\n\n // Without a ScopeService no user can hold any scope, so every function that\n // requires one denies everybody — `defineScope`, `defineSystemRole` and the\n // role grants `pikku persona sync` writes all exist and none of them reach a\n // request. It resolves userId -> roles -> scopes out of the four pikku_* tables.\n //\n // Built as the concrete class rather than the `ScopeService` interface because\n // `init()` (which creates those tables if they are absent) is the\n // implementation's, not the contract's. The cast is the app's own `DB` — which\n // includes the pikku_* tables — against the narrower shape the service\n // declares; the two differ only in kysely's internal builder generics.\n let scopeService = existingServices?.scopeService\n if (!scopeService) {\n const kyselyScopes = new KyselyScopeService(\n kysely as unknown as Kysely<KyselyPikkuDB>\n )\n await kyselyScopes.init()\n scopeService = kyselyScopes\n }\n\n return {\n ...(existingServices ?? {}),\n config,\n scopeService,\n workflowService: existingServices?.workflowService,\n workflowRunService: existingServices?.workflowRunService,\n variables,\n secrets,\n schema,\n logger,\n emailService,\n audit,\n kysely,\n // Constructed once here rather than read per call: the payment provider's\n // credentials belong to service construction, and functions cannot reach\n // `secrets` at all (every function-facing services type is bounded by\n // SecretlessServices).\n ...(credentialService ? { credentialService } : {}),\n ...(aiAgentRunner ? { aiAgentRunner } : {}),\n }\n }\n)",
|
|
108
|
+
"shopServices": "export const createSingletonServices = pikkuServices(\n async (config, existingServices) => {\n const variables =\n existingServices?.variables ??\n new TypedVariablesService(new LocalVariablesService())\n const secrets =\n existingServices?.secrets ??\n new TypedSecretService(new LocalSecretService(variables))\n const logger = existingServices?.logger ?? new JsonConsoleLogger()\n const schema = existingServices?.schema ?? new CFWorkerSchemaService(logger)\n const emailService =\n existingServices?.emailService ??\n new GeneratedTemplateEmailService({\n delegate: new LocalEmailService(),\n })\n // The durable audit sink. In a deployed stage fabric injects the platform's\n // audit service; locally it falls back to a no-op so nothing is persisted.\n const audit = existingServices?.audit ?? new NoopAuditService()\n // kysely is injected by pikku dev (node:sqlite) or the CF Worker workflow (libsql).\n // The template never constructs its own dialect — dialects are fabric/runtime\n // concerns — so it must always be provided by the runtime.\n if (!existingServices?.kysely) {\n throw new Error(\n 'kysely service was not injected by the runtime (pikku dev / fabric)'\n )\n }\n const kysely: Kysely<DB> = existingServices.kysely\n\n // Per-user credential store (wire.getCredential) — needed by addons imported\n // with --auth per-user/delegated. A deployed stage injects it: credentials are\n // sealed to the stage, and only its secrets Worker holds the key. There is no\n // fallback because there is no key to fall back to — the template used to\n // build a `KyselyCredentialService` from a `CREDENTIALS_KEY` secret, which was\n // the stage's own KEK handed to every unit. Outside a stage the app runs fine\n // and credential-using addon calls fail with a clear error from the addon's\n // wire services; wire your own `credentialService` here if you need one.\n const credentialService = existingServices?.credentialService\n\n const litellmProxyUrl = process.env.LITELLM_PROXY_URL ?? null\n const litellmApiKey = process.env.LITELLM_API_KEY ?? null\n let aiAgentRunner: VercelAgentRunner | undefined\n if (litellmProxyUrl && litellmApiKey) {\n // The AI SDKs (~3MB) are stubbed out of non-agent units at bundle time —\n // only units with the `ai-model` capability keep them. So import them\n // dynamically and guard on the module resolving to a real export; in a\n // stubbed unit the import yields `{}` and the runner is simply not built.\n const aiVercel = await import('@pikku/ai-vercel')\n const aiSdk = await import('@ai-sdk/openai-compatible')\n if (aiVercel.VercelAgentRunner && aiSdk.createOpenAICompatible) {\n const litellmProvider = aiSdk.createOpenAICompatible({\n name: 'litellm',\n baseURL: litellmProxyUrl,\n apiKey: litellmApiKey,\n })\n aiAgentRunner = new aiVercel.VercelAgentRunner({\n openai: (modelId: string) => litellmProvider.chatModel(modelId),\n anthropic: (modelId: string) => litellmProvider.chatModel(modelId),\n google: (modelId: string) => litellmProvider.chatModel(modelId),\n deepseek: (modelId: string) => litellmProvider.chatModel(modelId),\n })\n }\n }\n\n // Without a ScopeService no user can hold any scope, so every function that\n // requires one denies everybody — `defineScope`, `defineSystemRole` and the\n // role grants `pikku persona sync` writes all exist and none of them reach a\n // request. It resolves userId -> roles -> scopes out of the four pikku_* tables.\n //\n // Built as the concrete class rather than the `ScopeService` interface because\n // `init()` (which creates those tables if they are absent) is the\n // implementation's, not the contract's. The cast is the app's own `DB` — which\n // includes the pikku_* tables — against the narrower shape the service\n // declares; the two differ only in kysely's internal builder generics.\n let scopeService = existingServices?.scopeService\n if (!scopeService) {\n const kyselyScopes = new KyselyScopeService(\n kysely as unknown as Kysely<KyselyPikkuDB>\n )\n await kyselyScopes.init()\n scopeService = kyselyScopes\n }\n\n // The definitions in scopes.ts and roles.ts are declarations until something\n // writes them down. Nothing else does, and a role with no row cannot be\n // granted — `addUserToRole` fails the pikku_role_scopes foreign key, which is\n // how persona provisioning discovers it.\n await scopeService.syncScopes(SCOPES)\n await scopeService.syncSystemRoles(SYSTEM_ROLES)\n\n return {\n ...(existingServices ?? {}),\n config,\n scopeService,\n workflowService: existingServices?.workflowService,\n workflowRunService: existingServices?.workflowRunService,\n variables,\n secrets,\n schema,\n logger,\n emailService,\n audit,\n kysely,\n // Constructed once here rather than read per call: the payment provider's\n // credentials belong to service construction, and functions cannot reach\n // `secrets` at all (every function-facing services type is bounded by\n // SecretlessServices).\n ...(credentialService ? { credentialService } : {}),\n ...(aiAgentRunner ? { aiAgentRunner } : {}),\n }\n }\n)",
|
|
109
109
|
"shopVersionedItem": "export const GetItemOutputV1 = z.object({\n itemId: z.string(),\n name: z.string(),\n priceCents: z.number(),\n})\n\nexport const getItemV1 = pikkuSessionlessFunc({\n expose: true,\n version: 1,\n input: GetItemInput,\n output: GetItemOutputV1,\n func: async ({ kysely }, { itemId }) => {\n const row = await kysely\n .selectFrom('item')\n .select(['itemId', 'name', 'priceCents'])\n .where('itemId', '=', itemId)\n .executeTakeFirstOrThrow()\n return row\n },\n})\n\n// v2 — adds stock and imageUrl to the response\nexport const getItemV2 = pikkuSessionlessFunc({\n expose: true,\n version: 2,\n input: GetItemInput,\n output: GetItemOutput,\n func: async ({ kysely }, { itemId }) => {\n const row = await kysely\n .selectFrom('item')\n .innerJoin('category', 'category.categoryId', 'item.categoryId')\n .select([\n 'item.itemId',\n 'item.name',\n 'item.slug',\n 'item.description',\n 'item.priceCents',\n 'item.stock',\n 'item.imageUrl',\n 'item.isActive',\n 'item.createdAt',\n 'item.updatedAt',\n 'category.categoryId',\n 'category.name as categoryName',\n 'category.slug as categorySlug',\n ])\n .where('item.itemId', '=', itemId)\n .executeTakeFirstOrThrow()\n return {\n ...row,\n category: {\n categoryId: row.categoryId,\n name: row.categoryName,\n slug: row.categorySlug,\n },\n }\n },\n})",
|
|
110
110
|
"shopWireServices": "export const createWireServices = pikkuWireServices(\n async (singletonServices, wire) => {\n if (!singletonServices.audit) {\n return {}\n }\n const auditLog = createInvocationAudit(singletonServices.audit, wire)\n // auditLog is ALWAYS injected, but `auditLog.write(...)` only PERSISTS when this\n // function set `audit: true` — createInvocationAudit gates on wire.audit, so\n // without it write() is a warn-only no-op (see @pikku/core audit-service.ts).\n // `auditLog.config` is set ONLY when audit: true is on, and when it is, ALSO wrap\n // kysely so every query is captured and the runner flushes the buffer on close.\n // Without audit: true, leave the plain kysely untouched — no per-query overhead.\n if (!auditLog.config) {\n return { auditLog }\n }\n return {\n auditLog,\n kysely: createAuditedKysely(singletonServices.kysely, {\n audit: auditLog,\n }),\n }\n }\n)",
|
|
111
111
|
"tagMiddleware": "addTagMiddleware('checkout', [auditMiddleware('checkout')])",
|
package/surface.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BICK3FdT.js";import{M as e}from"./mermaid-parser.core-CMBFGJ0U.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as e,ot as t}from"./chunk-I66GZJ75-DDQhhfA0.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{p as e}from"./index-DRfts2XF.js";import{n as t}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-Dg-KiSsV.js";var n=t((t,n)=>{let r;return n===`sandbox`&&(r=e(`#i`+t)),e(n===`sandbox`?r.nodes()[0].contentDocument.body:`body`).select(`[id="${t}"]`)},`getDiagramElement`);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-Dg-KiSsV.js";import"./chunk-I66GZJ75-DDQhhfA0.js";import"./chunk-NSK5VX7P-DZhjvnHm.js";import"./chunk-4I5QYGJK-BXWo5Xyx.js";import"./chunk-WRU74C26-Ct8XrToU.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D85x6Zh2.js";import"./chunk-2GRJ4B5K-BFRr_H2V.js";import"./chunk-XXDRQBXY-C1KaR4pt.js";import"./chunk-KBJHAD2P-CQPQVDkD.js";import"./chunk-W5SLKNZC-B1Ps46_n.js";import"./chunk-QR6OTTB3-D1-TbcCP.js";import"./chunk-7Z6QIM7H-StNGH40U.js";import{i as t,n,r,t as i}from"./chunk-GF5L2VYU-QwXKtQxa.js";import"./mermaid.core-DYoDrSEJ.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-Dg-KiSsV.js";import"./chunk-I66GZJ75-DDQhhfA0.js";import"./chunk-NSK5VX7P-DZhjvnHm.js";import"./chunk-4I5QYGJK-BXWo5Xyx.js";import"./chunk-WRU74C26-Ct8XrToU.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D85x6Zh2.js";import"./chunk-2GRJ4B5K-BFRr_H2V.js";import"./chunk-XXDRQBXY-C1KaR4pt.js";import"./chunk-KBJHAD2P-CQPQVDkD.js";import"./chunk-W5SLKNZC-B1Ps46_n.js";import"./chunk-QR6OTTB3-D1-TbcCP.js";import"./chunk-7Z6QIM7H-StNGH40U.js";import{i as t,n,r,t as i}from"./chunk-GF5L2VYU-QwXKtQxa.js";import"./mermaid.core-DYoDrSEJ.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BICK3FdT.js";import{O as e}from"./mermaid-parser.core-CMBFGJ0U.js";export{e as createEventModelingServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./src-Dg-KiSsV.js";import"./chunk-I66GZJ75-DDQhhfA0.js";import"./chunk-NSK5VX7P-DZhjvnHm.js";import"./chunk-4I5QYGJK-BXWo5Xyx.js";import"./chunk-WRU74C26-Ct8XrToU.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D85x6Zh2.js";import"./chunk-2GRJ4B5K-BFRr_H2V.js";import"./chunk-XXDRQBXY-C1KaR4pt.js";import"./chunk-KBJHAD2P-CQPQVDkD.js";import"./chunk-W5SLKNZC-B1Ps46_n.js";import"./chunk-QR6OTTB3-D1-TbcCP.js";import"./chunk-7Z6QIM7H-StNGH40U.js";import{n as e}from"./chunk-JQJVKLGR-wFyF2bUv.js";import"./mermaid.core-DYoDrSEJ.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BICK3FdT.js";import{m as e}from"./mermaid-parser.core-CMBFGJ0U.js";export{e as createRailroadAbnfServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BICK3FdT.js";import{f as e}from"./mermaid-parser.core-CMBFGJ0U.js";export{e as createRailroadEbnfServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BICK3FdT.js";import{u as e}from"./mermaid-parser.core-CMBFGJ0U.js";export{e as createRailroadPegServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-Dg-KiSsV.js";import"./chunk-I66GZJ75-DDQhhfA0.js";import"./chunk-NSK5VX7P-DZhjvnHm.js";import"./chunk-4I5QYGJK-BXWo5Xyx.js";import"./chunk-WRU74C26-Ct8XrToU.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D85x6Zh2.js";import"./chunk-2GRJ4B5K-BFRr_H2V.js";import"./chunk-XXDRQBXY-C1KaR4pt.js";import"./chunk-KBJHAD2P-CQPQVDkD.js";import"./chunk-W5SLKNZC-B1Ps46_n.js";import"./chunk-QR6OTTB3-D1-TbcCP.js";import"./chunk-7Z6QIM7H-StNGH40U.js";import{i as t,n,r,t as i}from"./chunk-5RXB4S5H-BFnXfzzz.js";import"./mermaid.core-DYoDrSEJ.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-Dg-KiSsV.js";import"./chunk-I66GZJ75-DDQhhfA0.js";import"./chunk-NSK5VX7P-DZhjvnHm.js";import"./chunk-4I5QYGJK-BXWo5Xyx.js";import"./chunk-WRU74C26-Ct8XrToU.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-D85x6Zh2.js";import"./chunk-2GRJ4B5K-BFRr_H2V.js";import"./chunk-XXDRQBXY-C1KaR4pt.js";import"./chunk-KBJHAD2P-CQPQVDkD.js";import"./chunk-W5SLKNZC-B1Ps46_n.js";import"./chunk-QR6OTTB3-D1-TbcCP.js";import"./chunk-7Z6QIM7H-StNGH40U.js";import{r as t,t as n}from"./chunk-JQJVKLGR-wFyF2bUv.js";import"./mermaid.core-DYoDrSEJ.js";var r=n({defaultLayout:`swimlane`,styles:e(e=>`${t(e)}
|
|
2
|
-
.swimlane.cluster rect {
|
|
3
|
-
stroke: ${e.clusterBorder} !important;
|
|
4
|
-
}
|
|
5
|
-
[data-look="neo"].cluster rect {
|
|
6
|
-
filter: none;
|
|
7
|
-
}
|
|
8
|
-
`,`getStyles`)});export{r as diagram};
|