@pikku/cli 0.12.127 → 0.12.133
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 +322 -0
- package/console-app/assets/{abnfDiagram-N423BO3Z-BY2LM8wi.js → abnfDiagram-N423BO3Z-BQPUva28.js} +1 -1
- package/console-app/assets/architecture-TIHT7OUA-G_ldr-C2.js +1 -0
- package/console-app/assets/{architectureDiagram-T3A2C74G-CeqjY3Kw.js → architectureDiagram-T3A2C74G-Cjzy66o9.js} +1 -1
- package/console-app/assets/{blockDiagram-VBNYF7ZC-BW5174xj.js → blockDiagram-VBNYF7ZC-DVasSXpX.js} +1 -1
- package/console-app/assets/{c4Diagram-5PPSVZJV-B7zXAFL0.js → c4Diagram-5PPSVZJV-FB0YMoOr.js} +1 -1
- package/console-app/assets/channel-CuDpOUYn.js +1 -0
- package/console-app/assets/{chunk-2GRJ4B5K-BfRYzQ4t.js → chunk-2GRJ4B5K-BLGsmyy4.js} +1 -1
- package/console-app/assets/{chunk-4I5QYGJK-DBA7-Nu4.js → chunk-4I5QYGJK-DCgTj78f.js} +1 -1
- package/console-app/assets/{chunk-5RXB4S5H-D03lNzwi.js → chunk-5RXB4S5H-CX9hS68x.js} +1 -1
- package/console-app/assets/{chunk-6Q2QTUOP-DloGRHJZ.js → chunk-6Q2QTUOP-xrgFRP4Y.js} +1 -1
- package/console-app/assets/{chunk-7Z6QIM7H-DH3uHtl2.js → chunk-7Z6QIM7H-CbBMe7ej.js} +1 -1
- package/console-app/assets/{chunk-GF5L2VYU-Cu252lza.js → chunk-GF5L2VYU-BXraqZ7w.js} +1 -1
- package/console-app/assets/{chunk-I66GZJ75-DH54FcuO.js → chunk-I66GZJ75-CbpQtX8e.js} +1 -1
- package/console-app/assets/{chunk-JQJVKLGR-CeFuTL-V.js → chunk-JQJVKLGR-Cp9FHSH6.js} +1 -1
- package/console-app/assets/{chunk-KBJHAD2P-B-prFo0-.js → chunk-KBJHAD2P-Brvmen34.js} +1 -1
- package/console-app/assets/{chunk-NSK5VX7P-C10iA4GS.js → chunk-NSK5VX7P-Bo-dbDZD.js} +1 -1
- package/console-app/assets/{chunk-QR6OTTB3-Cd8apAsA.js → chunk-QR6OTTB3-B5Al5KEo.js} +1 -1
- package/console-app/assets/{chunk-RYQCIY6F-rfPUp2Fj.js → chunk-RYQCIY6F-WOZyn5It.js} +1 -1
- package/console-app/assets/{chunk-UBXNYLIW-D25wqJBc.js → chunk-UBXNYLIW-D9OoHV5X.js} +1 -1
- package/console-app/assets/{chunk-W5SLKNZC-CJvxkxuK.js → chunk-W5SLKNZC-BNTcVpi3.js} +1 -1
- package/console-app/assets/{chunk-WRU74C26-B9Wju92P.js → chunk-WRU74C26-DXijYjrx.js} +1 -1
- package/console-app/assets/chunk-XXDRQBXY-DRMEt0Gf.js +1 -0
- package/console-app/assets/classDiagram-JCYQIIEL-Bjgk6QkN.js +1 -0
- package/console-app/assets/classDiagram-v2-OCEON4UE-Bjgk6QkN.js +1 -0
- package/console-app/assets/{cose-bilkent-JH36ORCC-CwA1VCP5.js → cose-bilkent-JH36ORCC-CPN5VkQC.js} +1 -1
- package/console-app/assets/{cynefin-VYW2F7L2-C_qsD7eR.js → cynefin-VYW2F7L2-CuBPO3Z0.js} +1 -1
- package/console-app/assets/{cynefinDiagram-MW4NZA55-CkSLreFW.js → cynefinDiagram-MW4NZA55-BYc2PGXv.js} +1 -1
- package/console-app/assets/{dagre-WqgBlKb7.js → dagre-7HV9Jfb_.js} +1 -1
- package/console-app/assets/{dagre-VZM6K2ZE-0ssqLoHs.js → dagre-VZM6K2ZE-BpPyuM7i.js} +1 -1
- package/console-app/assets/{diagram-7IWD3JNH-DmRL3lmL.js → diagram-7IWD3JNH-DTH9ID9z.js} +1 -1
- package/console-app/assets/{diagram-B4RE2ZJO-Bsr9wG4I.js → diagram-B4RE2ZJO-DwZb9gPm.js} +1 -1
- package/console-app/assets/{diagram-LBJQPF4R-DdMw1FSY.js → diagram-LBJQPF4R-DfvBayzk.js} +1 -1
- package/console-app/assets/{diagram-Q27KOJAE-TPx5TB2B.js → diagram-Q27KOJAE-hksFpSxs.js} +1 -1
- package/console-app/assets/{diagram-UB23O5K3-e_1zSlZR.js → diagram-UB23O5K3-5hEVCouO.js} +1 -1
- package/console-app/assets/{ebnfDiagram-BXEA7PRR-BACajh2b.js → ebnfDiagram-BXEA7PRR-D0v6RJvf.js} +1 -1
- package/console-app/assets/{erDiagram-JOGREHBK-CojomKqL.js → erDiagram-JOGREHBK-DGps-M4l.js} +1 -1
- package/console-app/assets/eventmodeling-45OFAUF4-DWRslJcU.js +1 -0
- package/console-app/assets/flowDiagram-UKHOOZJN-CE3qN_pH.js +1 -0
- package/console-app/assets/{ganttDiagram-PKOTCBZU-yoOX4Xj2.js → ganttDiagram-PKOTCBZU-Dok7ME1t.js} +1 -1
- package/console-app/assets/{gitGraph-TEB2WS4Q-BcUY5hIc.js → gitGraph-TEB2WS4Q-8492lYYh.js} +1 -1
- package/console-app/assets/{gitGraphDiagram-DS77QQ5N-BtuIPjuB.js → gitGraphDiagram-DS77QQ5N-sPOnBy5f.js} +1 -1
- package/console-app/assets/{index-CzWW052c.js → index-DqNqujdF.js} +184 -184
- package/console-app/assets/{info-DKCQHKI2-B-iR9PUz.js → info-DKCQHKI2-U4uEmX4H.js} +1 -1
- package/console-app/assets/{infoDiagram-6WML65LV-CuXKIFH2.js → infoDiagram-6WML65LV-CNV12_Nx.js} +1 -1
- package/console-app/assets/{ishikawaDiagram-WSZJBQD7-CSueMFD6.js → ishikawaDiagram-WSZJBQD7-CcnTBGLj.js} +1 -1
- package/console-app/assets/{journeyDiagram-NVQOT4AX-kvnKStZp.js → journeyDiagram-NVQOT4AX-MX-UQBJ7.js} +1 -1
- package/console-app/assets/{kanban-definition-27J2QSJJ-CGGDEz30.js → kanban-definition-27J2QSJJ-BXh1Eu4D.js} +1 -1
- package/console-app/assets/{line-mtMM5-xO.js → line-2B2dlQbw.js} +1 -1
- package/console-app/assets/{linear-CLSje0O_.js → linear-DAVRH-Dp.js} +1 -1
- package/console-app/assets/{mermaid-parser.core-Cx6yvn3j.js → mermaid-parser.core-DxPo1qbR.js} +3 -3
- package/console-app/assets/{mermaid.core-BebGyklS.js → mermaid.core-DpvXaF3y.js} +4 -4
- package/console-app/assets/{mindmap-definition-FAOFIHXS-C2_WUUJ9.js → mindmap-definition-FAOFIHXS-wIEKn4qe.js} +1 -1
- package/console-app/assets/{packet-7NZHBO7P-Dh5yNCA8.js → packet-7NZHBO7P-CXySycDQ.js} +1 -1
- package/console-app/assets/{pegDiagram-VL7TDLO6-XgUxesi8.js → pegDiagram-VL7TDLO6-CDGkzO6q.js} +1 -1
- package/console-app/assets/{pie-RZYD4A2V-D2x2RAXI.js → pie-RZYD4A2V-9woSahH7.js} +1 -1
- package/console-app/assets/{pieDiagram-7S7Q4E2Y-Bbor0KbG.js → pieDiagram-7S7Q4E2Y-DLoZWnVF.js} +1 -1
- package/console-app/assets/{quadrantDiagram-CIZ2JOQS-DZmnMHpM.js → quadrantDiagram-CIZ2JOQS-NBGRoga7.js} +1 -1
- package/console-app/assets/{radar-I7S5WNFK-CPeriDtN.js → radar-I7S5WNFK-BYhW66ZA.js} +1 -1
- package/console-app/assets/{railroad-3IZDKUUU-2iKAyaie.js → railroad-3IZDKUUU-BqHXlwF5.js} +1 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-BfGOy69e.js +1 -0
- package/console-app/assets/railroad-ebnf-EBAXGLYW-BbGv9WfS.js +1 -0
- package/console-app/assets/railroad-peg-LSFZ7HO6-CCiPI8BL.js +1 -0
- package/console-app/assets/{railroadDiagram-AXF67PYL-DVEqCXoo.js → railroadDiagram-AXF67PYL-FYQaHJ6A.js} +1 -1
- package/console-app/assets/{requirementDiagram-LRYGKXZP-CSgSNL8p.js → requirementDiagram-LRYGKXZP-ihhW1kgC.js} +1 -1
- package/console-app/assets/{sankeyDiagram-W5VNT64P-CFk11odN.js → sankeyDiagram-W5VNT64P-Dw2EbW8v.js} +1 -1
- package/console-app/assets/{sequenceDiagram-SI44F4Z6-Cb5u6FsJ.js → sequenceDiagram-SI44F4Z6-C6i_U4QX.js} +1 -1
- package/console-app/assets/{src-LceHEY_Q.js → src-DF-84qwJ.js} +1 -1
- package/console-app/assets/{stateDiagram-OKZ733FA-DM1jWlkU.js → stateDiagram-OKZ733FA-xH4wcMO4.js} +1 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-BJln5PLd.js +1 -0
- package/console-app/assets/{swimlanes-SLNWSIFB-DD6MchlE.js → swimlanes-SLNWSIFB-CkFlU1Qc.js} +1 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-CSLhmtbh.js +8 -0
- package/console-app/assets/{timeline-definition-Z64GVDOM-zu5cNnVv.js → timeline-definition-Z64GVDOM-BQE9-7mm.js} +1 -1
- package/console-app/assets/{treeView-QDETBFTQ-D_4IbvCG.js → treeView-QDETBFTQ-C4hse2Wn.js} +1 -1
- package/console-app/assets/{treemap-6X3UGDF4-DNc6bjUc.js → treemap-6X3UGDF4-Bi7ORgq6.js} +1 -1
- package/console-app/assets/{vennDiagram-T6HMQDX7-DfqoG28f.js → vennDiagram-T6HMQDX7-DbUdNREA.js} +1 -1
- package/console-app/assets/{wardley-OPB4EBWU-BqpI2Lx-.js → wardley-OPB4EBWU-BHqXIxRe.js} +1 -1
- package/console-app/assets/{wardleyDiagram-T6FBY63Y-CLIZSvNi.js → wardleyDiagram-T6FBY63Y-1VOvM_bb.js} +1 -1
- package/console-app/assets/{xychartDiagram-ELKLHX3M-Cni-XXa6.js → xychartDiagram-ELKLHX3M-C3DVfSR9.js} +1 -1
- package/console-app/index.html +1 -1
- package/dist/.pikku/addon/index.d.ts +1 -1
- package/dist/.pikku/addon/index.js +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
- package/dist/.pikku/agent/index.d.ts +1 -1
- package/dist/.pikku/agent/index.js +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
- package/dist/.pikku/auth/index.d.ts +1 -1
- package/dist/.pikku/auth/index.js +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
- package/dist/.pikku/channel/index.d.ts +1 -1
- package/dist/.pikku/channel/index.js +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/index.d.ts +1 -1
- package/dist/.pikku/cli/index.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +36 -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 +21 -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 +122 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- package/dist/.pikku/error/index.d.ts +1 -1
- package/dist/.pikku/error/index.js +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
- package/dist/.pikku/function/index.d.ts +1 -1
- package/dist/.pikku/function/index.js +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +137 -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 +7 -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 +27 -1
- package/dist/.pikku/schemas/schemas/FabricSecretsDeleteInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/FabricSecretsDeleteOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanDeferInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanDeferOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanProgressInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanProgressOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanSchemaInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanSchemaOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanSetInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanSetOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanShowInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgePlanShowOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuDistInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuNewAddonInput.schema.json +1 -1
- package/dist/.pikku/scopes/index.d.ts +1 -1
- package/dist/.pikku/scopes/index.js +1 -1
- package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
- package/dist/.pikku/secrets/index.d.ts +1 -1
- package/dist/.pikku/secrets/index.js +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/setup/index.d.ts +1 -1
- package/dist/.pikku/setup/index.js +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
- package/dist/.pikku/trigger/index.d.ts +1 -1
- package/dist/.pikku/trigger/index.js +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/index.d.ts +1 -1
- package/dist/.pikku/variables/index.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
- package/dist/.pikku/workflow/index.d.ts +1 -1
- package/dist/.pikku/workflow/index.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/cli.wiring.js +63 -1
- package/dist/src/deploy/analyzer/analyzer.js +42 -6
- package/dist/src/deploy/build-pipeline.js +92 -4
- package/dist/src/deploy/codegen/per-unit-codegen.d.ts +10 -0
- package/dist/src/deploy/codegen/per-unit-codegen.js +12 -1
- package/dist/src/deploy/server-entry.js +14 -1
- package/dist/src/fabric/fabric-commands.d.ts +25 -0
- package/dist/src/fabric/fabric-commands.js +13 -0
- package/dist/src/fabric/functions/secrets-delete.function.d.ts +36 -0
- package/dist/src/fabric/functions/secrets-delete.function.js +51 -0
- package/dist/src/functions/commands/dev.js +2 -1
- package/dist/src/functions/commands/dist.d.ts +28 -0
- package/dist/src/functions/commands/dist.js +58 -0
- package/dist/src/functions/commands/knowledge-plan.d.ts +112 -0
- package/dist/src/functions/commands/knowledge-plan.js +35 -0
- package/dist/src/functions/commands/new-addon.d.ts +30 -0
- package/dist/src/functions/commands/new-addon.js +81 -3
- package/dist/src/functions/commands/persona-sync.d.ts +5 -4
- package/dist/src/functions/commands/persona-sync.js +6 -5
- package/dist/src/functions/commands/persona.js +6 -2
- package/dist/src/functions/db/local-db.d.ts +1 -1
- package/dist/src/functions/db/local-db.js +5 -5
- package/dist/src/functions/db/postgres/postgres-introspector.js +1 -1
- package/dist/src/functions/db/sqlite/dev-seed.d.ts +1 -1
- package/dist/src/functions/db/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/src/functions/db/sqlite/sqlite-introspector.js +1 -1
- package/dist/src/functions/db/sqlite/sqlite-kysely.d.ts +1 -1
- package/dist/src/functions/knowledge/render.d.ts +6 -1
- package/dist/src/functions/knowledge/render.js +74 -0
- package/dist/src/functions/knowledge/schemas.d.ts +45 -0
- package/dist/src/functions/knowledge/schemas.js +11 -1
- package/dist/src/functions/surface/surface-editorial.js +12 -12
- package/dist/src/functions/validate/auth-plugin-checks.js +3 -2
- package/dist/src/functions/validate/persona-checks.js +2 -1
- package/dist/src/functions/validate/shared-checks.js +1 -1
- package/dist/src/functions/wirings/realtime/serialize-events-scaffold.d.ts +1 -1
- package/dist/src/functions/wirings/realtime/serialize-events-scaffold.js +2 -2
- package/dist/src/utils/persona-credentials.d.ts +0 -2
- package/dist/src/utils/persona-credentials.js +1 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -10
- package/snippets.json +1 -1
- package/surface.json +1245 -4866
- package/console-app/assets/architecture-TIHT7OUA-CWwmvxZF.js +0 -1
- package/console-app/assets/channel-pOkwZ_Ot.js +0 -1
- package/console-app/assets/chunk-XXDRQBXY-BU_UP6f5.js +0 -1
- package/console-app/assets/classDiagram-JCYQIIEL-CLBKUuxj.js +0 -1
- package/console-app/assets/classDiagram-v2-OCEON4UE-CLBKUuxj.js +0 -1
- package/console-app/assets/eventmodeling-45OFAUF4-DkN2KCrT.js +0 -1
- package/console-app/assets/flowDiagram-UKHOOZJN-DL0M9lBc.js +0 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-D26xz4MM.js +0 -1
- package/console-app/assets/railroad-ebnf-EBAXGLYW-CCAiMPWc.js +0 -1
- package/console-app/assets/railroad-peg-LSFZ7HO6-BA1zcisq.js +0 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-COVnPYic.js +0 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-B5q8iRCQ.js +0 -8
- package/dist/src/functions/db/db-migrator.d.ts +0 -63
- package/dist/src/functions/db/db-migrator.js +0 -136
- package/dist/src/functions/db/migration-identifiers.d.ts +0 -58
- package/dist/src/functions/db/migration-identifiers.js +0 -262
- package/dist/src/functions/db/postgres/postgres-migrator.d.ts +0 -15
- package/dist/src/functions/db/postgres/postgres-migrator.js +0 -40
- package/dist/src/functions/db/schema-sql.d.ts +0 -43
- package/dist/src/functions/db/schema-sql.js +0 -135
- package/dist/src/functions/db/sqlite/sqlite-migrator.d.ts +0 -11
- package/dist/src/functions/db/sqlite/sqlite-migrator.js +0 -41
- package/dist/src/functions/db/sqlite/sqlite-runtime-bun.d.ts +0 -2
- package/dist/src/functions/db/sqlite/sqlite-runtime-bun.js +0 -62
- package/dist/src/functions/db/sqlite/sqlite-runtime-node.d.ts +0 -2
- package/dist/src/functions/db/sqlite/sqlite-runtime-node.js +0 -78
- package/dist/src/functions/db/sqlite/sqlite-runtime.d.ts +0 -20
- package/dist/src/functions/db/sqlite/sqlite-runtime.js +0 -13
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow } from '../knowledge/render.js';
|
|
2
|
+
export declare const knowledgePlanSchema: import("#pikku/function").PikkuFunctionConfig<Record<string, never>, {
|
|
3
|
+
schema: string;
|
|
4
|
+
}, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<Record<string, never>, {
|
|
5
|
+
schema: string;
|
|
6
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<Record<string, never>, {
|
|
7
|
+
schema: string;
|
|
8
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
|
|
9
|
+
export declare const knowledgePlanShow: import("#pikku/function").PikkuFunctionConfig<{
|
|
10
|
+
milestone: string;
|
|
11
|
+
forBuild?: boolean | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
ok: boolean;
|
|
14
|
+
path: string;
|
|
15
|
+
body: string;
|
|
16
|
+
}, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
|
|
17
|
+
milestone: string;
|
|
18
|
+
forBuild?: boolean | undefined;
|
|
19
|
+
}, {
|
|
20
|
+
ok: boolean;
|
|
21
|
+
path: string;
|
|
22
|
+
body: string;
|
|
23
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
|
|
24
|
+
milestone: string;
|
|
25
|
+
forBuild?: boolean | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
ok: boolean;
|
|
28
|
+
path: string;
|
|
29
|
+
body: string;
|
|
30
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
|
|
31
|
+
export declare const knowledgePlanProgress: import("#pikku/function").PikkuFunctionConfig<{
|
|
32
|
+
milestone: string;
|
|
33
|
+
}, {
|
|
34
|
+
ok: boolean;
|
|
35
|
+
path: string;
|
|
36
|
+
message: string;
|
|
37
|
+
done: string[];
|
|
38
|
+
missing: string[];
|
|
39
|
+
deferred: string[];
|
|
40
|
+
problems: string[];
|
|
41
|
+
}, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
|
|
42
|
+
milestone: string;
|
|
43
|
+
}, {
|
|
44
|
+
ok: boolean;
|
|
45
|
+
path: string;
|
|
46
|
+
message: string;
|
|
47
|
+
done: string[];
|
|
48
|
+
missing: string[];
|
|
49
|
+
deferred: string[];
|
|
50
|
+
problems: string[];
|
|
51
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
|
|
52
|
+
milestone: string;
|
|
53
|
+
}, {
|
|
54
|
+
ok: boolean;
|
|
55
|
+
path: string;
|
|
56
|
+
message: string;
|
|
57
|
+
done: string[];
|
|
58
|
+
missing: string[];
|
|
59
|
+
deferred: string[];
|
|
60
|
+
problems: string[];
|
|
61
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
|
|
62
|
+
export declare const knowledgePlanSet: import("#pikku/function").PikkuFunctionConfig<{
|
|
63
|
+
milestone: string;
|
|
64
|
+
file: string;
|
|
65
|
+
}, {
|
|
66
|
+
ok: boolean;
|
|
67
|
+
path: string;
|
|
68
|
+
problems: string[];
|
|
69
|
+
schema?: string | undefined;
|
|
70
|
+
}, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
|
|
71
|
+
milestone: string;
|
|
72
|
+
file: string;
|
|
73
|
+
}, {
|
|
74
|
+
ok: boolean;
|
|
75
|
+
path: string;
|
|
76
|
+
problems: string[];
|
|
77
|
+
schema?: string | undefined;
|
|
78
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
|
|
79
|
+
milestone: string;
|
|
80
|
+
file: string;
|
|
81
|
+
}, {
|
|
82
|
+
ok: boolean;
|
|
83
|
+
path: string;
|
|
84
|
+
problems: string[];
|
|
85
|
+
schema?: string | undefined;
|
|
86
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
|
|
87
|
+
export declare const knowledgePlanDefer: import("#pikku/function").PikkuFunctionConfig<{
|
|
88
|
+
milestone: string;
|
|
89
|
+
item: string;
|
|
90
|
+
reason: string;
|
|
91
|
+
}, {
|
|
92
|
+
ok: boolean;
|
|
93
|
+
path: string;
|
|
94
|
+
message: string;
|
|
95
|
+
}, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
|
|
96
|
+
milestone: string;
|
|
97
|
+
item: string;
|
|
98
|
+
reason: string;
|
|
99
|
+
}, {
|
|
100
|
+
ok: boolean;
|
|
101
|
+
path: string;
|
|
102
|
+
message: string;
|
|
103
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
|
|
104
|
+
milestone: string;
|
|
105
|
+
item: string;
|
|
106
|
+
reason: string;
|
|
107
|
+
}, {
|
|
108
|
+
ok: boolean;
|
|
109
|
+
path: string;
|
|
110
|
+
message: string;
|
|
111
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
|
|
112
|
+
export { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow, };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku/function';
|
|
2
|
+
import { runKnowledgePlanDefer, runKnowledgePlanProgress, runKnowledgePlanSchema, runKnowledgePlanSet, runKnowledgePlanShow, } from '@pikku/knowledge';
|
|
3
|
+
import { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow, } from '../knowledge/render.js';
|
|
4
|
+
import { KnowledgePlanDeferInputSchema, KnowledgePlanDeferOutputSchema, KnowledgePlanProgressInputSchema, KnowledgePlanProgressOutputSchema, KnowledgePlanSchemaInputSchema, KnowledgePlanSchemaOutputSchema, KnowledgePlanSetInputSchema, KnowledgePlanSetOutputSchema, KnowledgePlanShowInputSchema, KnowledgePlanShowOutputSchema, } from '../knowledge/schemas.js';
|
|
5
|
+
export const knowledgePlanSchema = pikkuSessionlessFunc({
|
|
6
|
+
description: 'Print the plan schema, so a plan is written against what is actually enforced rather than guessed at.',
|
|
7
|
+
input: KnowledgePlanSchemaInputSchema,
|
|
8
|
+
output: KnowledgePlanSchemaOutputSchema,
|
|
9
|
+
func: async () => runKnowledgePlanSchema(),
|
|
10
|
+
});
|
|
11
|
+
export const knowledgePlanShow = pikkuSessionlessFunc({
|
|
12
|
+
description: "Print a milestone's plan, either as it is stored or as the ordered list of work a build follows.",
|
|
13
|
+
input: KnowledgePlanShowInputSchema,
|
|
14
|
+
output: KnowledgePlanShowOutputSchema,
|
|
15
|
+
func: async ({ config }, input) => runKnowledgePlanShow(config.rootDir, input),
|
|
16
|
+
});
|
|
17
|
+
export const knowledgePlanProgress = pikkuSessionlessFunc({
|
|
18
|
+
description: "Reconcile a milestone's plan against the generated meta and say what is still owed, so a milestone closes on what exists rather than on what was claimed.",
|
|
19
|
+
input: KnowledgePlanProgressInputSchema,
|
|
20
|
+
output: KnowledgePlanProgressOutputSchema,
|
|
21
|
+
func: async ({ config }, input) => runKnowledgePlanProgress(config.rootDir, input),
|
|
22
|
+
});
|
|
23
|
+
export const knowledgePlanSet = pikkuSessionlessFunc({
|
|
24
|
+
description: 'Validate a plan against its milestone note and write it, or write nothing and say what is wrong.',
|
|
25
|
+
input: KnowledgePlanSetInputSchema,
|
|
26
|
+
output: KnowledgePlanSetOutputSchema,
|
|
27
|
+
func: async ({ config }, input) => runKnowledgePlanSet(config.rootDir, input),
|
|
28
|
+
});
|
|
29
|
+
export const knowledgePlanDefer = pikkuSessionlessFunc({
|
|
30
|
+
description: 'Move one first-pass item to the next pass with the reason on the record, so it stops blocking the milestone.',
|
|
31
|
+
input: KnowledgePlanDeferInputSchema,
|
|
32
|
+
output: KnowledgePlanDeferOutputSchema,
|
|
33
|
+
func: async ({ config }, input) => runKnowledgePlanDefer(config.rootDir, input),
|
|
34
|
+
});
|
|
35
|
+
export { renderKnowledgePlanDefer, renderKnowledgePlanProgress, renderKnowledgePlanSchema, renderKnowledgePlanSet, renderKnowledgePlanShow, };
|
|
@@ -28,6 +28,33 @@ export declare function getAddonFiles(vars: AddonVars, flags: {
|
|
|
28
28
|
delegated?: boolean;
|
|
29
29
|
}): Record<string, string>;
|
|
30
30
|
export declare function getTestFiles(vars: AddonVars): Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Does `root`'s `workspaces` field cover `dir`?
|
|
33
|
+
*
|
|
34
|
+
* Declaring workspaces is not enough — a root with `packages/*` does not own an
|
|
35
|
+
* addon written to `addons/crm`, and yarn, npm and pnpm all skip a nested
|
|
36
|
+
* package they were never told about.
|
|
37
|
+
*/
|
|
38
|
+
export declare function workspaceCovers(root: string, dir: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* An addon that has not been built is dead at runtime.
|
|
41
|
+
*
|
|
42
|
+
* The generated package exports `./dist/...` — that is what an installed
|
|
43
|
+
* consumer resolves, and what the app's own `pikku-bootstrap.gen.ts` imports.
|
|
44
|
+
* Until `build` has run, every `ref('<addon>:...')` resolves to nothing and the
|
|
45
|
+
* app fails at boot with PKU340 plus an ERR_MODULE_NOT_FOUND on a dist path
|
|
46
|
+
* nobody wrote. Nothing about the generated files shows the problem, so the
|
|
47
|
+
* generator finishes the job: install at the root that owns the lockfile, then
|
|
48
|
+
* run the addon's own `build` script (whose `prebuild` is `pikku all`).
|
|
49
|
+
*/
|
|
50
|
+
export type AddonBuildRunner = (command: string, args: string[], cwd: string) => {
|
|
51
|
+
status: number | null;
|
|
52
|
+
error?: Error;
|
|
53
|
+
};
|
|
54
|
+
export declare const buildGeneratedAddon: (addonDir: string, logger: {
|
|
55
|
+
info: (message: string) => void;
|
|
56
|
+
error: (message: string) => void;
|
|
57
|
+
}, run?: AddonBuildRunner) => boolean;
|
|
31
58
|
export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfig<{
|
|
32
59
|
name: string;
|
|
33
60
|
displayName?: string;
|
|
@@ -43,6 +70,7 @@ export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfi
|
|
|
43
70
|
authConfig?: string;
|
|
44
71
|
mcp?: boolean;
|
|
45
72
|
camelCase?: boolean;
|
|
73
|
+
build?: boolean;
|
|
46
74
|
}, void, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<{
|
|
47
75
|
name: string;
|
|
48
76
|
displayName?: string;
|
|
@@ -58,6 +86,7 @@ export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfi
|
|
|
58
86
|
authConfig?: string;
|
|
59
87
|
mcp?: boolean;
|
|
60
88
|
camelCase?: boolean;
|
|
89
|
+
build?: boolean;
|
|
61
90
|
}, void, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<{
|
|
62
91
|
name: string;
|
|
63
92
|
displayName?: string;
|
|
@@ -73,4 +102,5 @@ export declare const pikkuNewAddon: import("#pikku/function").PikkuFunctionConfi
|
|
|
73
102
|
authConfig?: string;
|
|
74
103
|
mcp?: boolean;
|
|
75
104
|
camelCase?: boolean;
|
|
105
|
+
build?: boolean;
|
|
76
106
|
}, void, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'fs';
|
|
2
|
-
import { dirname, join } from 'path';
|
|
2
|
+
import { dirname, join, relative as relativePath, sep } from 'path';
|
|
3
3
|
import { mkdir, writeFile } from 'fs/promises';
|
|
4
|
+
import { spawnSync } from 'node:child_process';
|
|
5
|
+
import { findInstallRoot } from './update.js';
|
|
4
6
|
import { createEmptyManifest, saveManifest, } from '../../utils/contract-versions.js';
|
|
5
7
|
import { pikkuSessionlessFunc } from '#pikku/function';
|
|
6
8
|
import { parseOpenAPISpec, computeContractHash, generateAddonFromOpenAPI, loadAuthConfig, } from '@pikku/openapi-parser';
|
|
@@ -159,7 +161,7 @@ export function getAddonFiles(vars, flags) {
|
|
|
159
161
|
scripts: {
|
|
160
162
|
prepublishOnly: 'yarn build',
|
|
161
163
|
prebuild: 'pikku all',
|
|
162
|
-
build: 'tsc &&
|
|
164
|
+
build: 'tsc && pikku dist',
|
|
163
165
|
pikku: 'pikku all',
|
|
164
166
|
},
|
|
165
167
|
peerDependencies: {
|
|
@@ -851,8 +853,81 @@ async function writeFiles(baseDir, files) {
|
|
|
851
853
|
}
|
|
852
854
|
return written;
|
|
853
855
|
}
|
|
856
|
+
/**
|
|
857
|
+
* Does `root`'s `workspaces` field cover `dir`?
|
|
858
|
+
*
|
|
859
|
+
* Declaring workspaces is not enough — a root with `packages/*` does not own an
|
|
860
|
+
* addon written to `addons/crm`, and yarn, npm and pnpm all skip a nested
|
|
861
|
+
* package they were never told about.
|
|
862
|
+
*/
|
|
863
|
+
export function workspaceCovers(root, dir) {
|
|
864
|
+
const relative = relativePath(root, dir).split(sep).join('/');
|
|
865
|
+
if (relative === '' || relative.startsWith('..')) {
|
|
866
|
+
return false;
|
|
867
|
+
}
|
|
868
|
+
let patterns;
|
|
869
|
+
try {
|
|
870
|
+
const manifest = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'));
|
|
871
|
+
patterns = Array.isArray(manifest.workspaces)
|
|
872
|
+
? manifest.workspaces
|
|
873
|
+
: manifest.workspaces?.packages;
|
|
874
|
+
}
|
|
875
|
+
catch {
|
|
876
|
+
return false;
|
|
877
|
+
}
|
|
878
|
+
if (!Array.isArray(patterns)) {
|
|
879
|
+
return false;
|
|
880
|
+
}
|
|
881
|
+
return patterns.some((pattern) => {
|
|
882
|
+
if (typeof pattern !== 'string') {
|
|
883
|
+
return false;
|
|
884
|
+
}
|
|
885
|
+
const source = pattern
|
|
886
|
+
.split('/')
|
|
887
|
+
.map((segment) => segment === '**'
|
|
888
|
+
? '.*'
|
|
889
|
+
: segment.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^/]*'))
|
|
890
|
+
.join('/');
|
|
891
|
+
return new RegExp(`^${source}$`).test(relative);
|
|
892
|
+
});
|
|
893
|
+
}
|
|
894
|
+
const spawnAddonBuildStep = (command, args, cwd) => {
|
|
895
|
+
const { status, error } = spawnSync(command, args, {
|
|
896
|
+
cwd,
|
|
897
|
+
stdio: 'inherit',
|
|
898
|
+
shell: process.platform === 'win32',
|
|
899
|
+
});
|
|
900
|
+
return { status, error };
|
|
901
|
+
};
|
|
902
|
+
export const buildGeneratedAddon = (addonDir, logger, run = spawnAddonBuildStep) => {
|
|
903
|
+
const { dir: installDir, packageManager } = findInstallRoot(addonDir);
|
|
904
|
+
if (packageManager === 'unknown') {
|
|
905
|
+
logger.error(`Could not tell which package manager owns ${addonDir} — the addon is generated but NOT built. Run install, then the addon's build script, in ${addonDir} before using it.`);
|
|
906
|
+
return false;
|
|
907
|
+
}
|
|
908
|
+
// A root install only reaches the addon when the root's workspace patterns
|
|
909
|
+
// cover it. A root that owns the lockfile but not this package installs
|
|
910
|
+
// nothing for it, so its devDependencies — `@pikku/cli` and `typescript`,
|
|
911
|
+
// which the build script needs — would never arrive.
|
|
912
|
+
const installIn = workspaceCovers(installDir, addonDir)
|
|
913
|
+
? installDir
|
|
914
|
+
: addonDir;
|
|
915
|
+
const steps = [
|
|
916
|
+
[installIn, ['install']],
|
|
917
|
+
[addonDir, ['run', 'build']],
|
|
918
|
+
];
|
|
919
|
+
for (const [cwd, args] of steps) {
|
|
920
|
+
logger.info(`${packageManager} ${args.join(' ')} (${cwd})`);
|
|
921
|
+
const result = run(packageManager, args, cwd);
|
|
922
|
+
if (result.status !== 0) {
|
|
923
|
+
logger.error(`${packageManager} ${args.join(' ')} failed in ${cwd}: ${result.error?.message ?? `exit ${result.status}`}`);
|
|
924
|
+
return false;
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
return true;
|
|
928
|
+
};
|
|
854
929
|
export const pikkuNewAddon = pikkuSessionlessFunc({
|
|
855
|
-
func: async ({ logger, config }, { name, displayName, description, category = 'General', dir, secret = false, variable = false, oauth = false, credential, test = true, openapi, authConfig, mcp = false, camelCase = false, }) => {
|
|
930
|
+
func: async ({ logger, config }, { name, displayName, description, category = 'General', dir, secret = false, variable = false, oauth = false, credential, test = true, openapi, authConfig, mcp = false, camelCase = false, build = true, }) => {
|
|
856
931
|
name = sanitizeAddonName(name);
|
|
857
932
|
if (!/^[a-z][a-z0-9_-]*$/.test(name)) {
|
|
858
933
|
logger.error(`Invalid addon name "${name}": must start with a lowercase letter and contain only lowercase alphanumerics, hyphens, and underscores`);
|
|
@@ -949,6 +1024,9 @@ export const pikkuNewAddon = pikkuSessionlessFunc({
|
|
|
949
1024
|
for (const f of written) {
|
|
950
1025
|
logger.debug({ message: ` ${f}`, type: 'success' });
|
|
951
1026
|
}
|
|
1027
|
+
if (build && !buildGeneratedAddon(addonDir, logger)) {
|
|
1028
|
+
process.exit(1);
|
|
1029
|
+
}
|
|
952
1030
|
console.log(addonDir);
|
|
953
1031
|
},
|
|
954
1032
|
});
|
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
* config and write through it, which provisioned a local stage correctly and
|
|
10
10
|
* silently provisioned the wrong database for every other environment.
|
|
11
11
|
*
|
|
12
|
-
* So the deployment provisions itself: an app
|
|
13
|
-
* `@pikku/better-auth
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* So the deployment provisions itself: an app hands its personas to
|
|
13
|
+
* `pikkuFabric` from `@pikku/better-auth`, and the plugin creates a missing one
|
|
14
|
+
* on the operator handshake that asks for it, where the database connection and
|
|
15
|
+
* better-auth's own adapter are both already open. What is left here is the
|
|
16
|
+
* half that needs no database — the
|
|
16
17
|
* declaration, and the environment rule applied to it — which is what tells you
|
|
17
18
|
* before a deploy whether the accounts you expect will appear.
|
|
18
19
|
*/
|
|
@@ -12,10 +12,11 @@ import { resolvePersonas } from '../../utils/resolve-personas.js';
|
|
|
12
12
|
* config and write through it, which provisioned a local stage correctly and
|
|
13
13
|
* silently provisioned the wrong database for every other environment.
|
|
14
14
|
*
|
|
15
|
-
* So the deployment provisions itself: an app
|
|
16
|
-
* `@pikku/better-auth
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* So the deployment provisions itself: an app hands its personas to
|
|
16
|
+
* `pikkuFabric` from `@pikku/better-auth`, and the plugin creates a missing one
|
|
17
|
+
* on the operator handshake that asks for it, where the database connection and
|
|
18
|
+
* better-auth's own adapter are both already open. What is left here is the
|
|
19
|
+
* half that needs no database — the
|
|
19
20
|
* declaration, and the environment rule applied to it — which is what tells you
|
|
20
21
|
* before a deploy whether the accounts you expect will appear.
|
|
21
22
|
*/
|
|
@@ -65,6 +66,6 @@ export const personaSync = pikkuSessionlessFunc({
|
|
|
65
66
|
for (const refusal of skipped) {
|
|
66
67
|
logger.info(` skipped: ${refusal}`);
|
|
67
68
|
}
|
|
68
|
-
logger.info(" Provisioning runs in the deployment:
|
|
69
|
+
logger.info(" Provisioning runs in the deployment: pass `personas: { personas: personaConfigs, environments: personaEnvironments }` from the generated personas file to `pikkuFabric` from '@pikku/better-auth'.");
|
|
69
70
|
},
|
|
70
71
|
});
|
|
@@ -4,6 +4,7 @@ import { pikkuSessionlessFunc } from '#pikku/function';
|
|
|
4
4
|
import { createHttpPersonas, deriveActorSecret, personaEnvironmentRefusal, roleMismatchMessage, verifyPersonaRoles, } from '@pikku/core/persona';
|
|
5
5
|
import { personaVirtualUserTarget, runVirtualUser, catalogueClassification, DISPOSITIONS, prepareVirtualUserRun, } from '@pikku/core/virtual-user';
|
|
6
6
|
import { getSingletonServices, setSingletonServices } from '@pikku/core/state';
|
|
7
|
+
import { PikkuError } from '@pikku/core/errors';
|
|
7
8
|
import { resolvePersonas } from '../../utils/resolve-personas.js';
|
|
8
9
|
import { ACTOR_SECRET_VARIABLE, PERSONA_SECRETS_VARIABLE, resolvePersonaCredentials, } from '../../utils/persona-credentials.js';
|
|
9
10
|
import { resolveEnvironment } from './environment.js';
|
|
@@ -108,7 +109,7 @@ export const personaRun = pikkuSessionlessFunc({
|
|
|
108
109
|
agentsMeta: state.agents?.agentsMeta ?? {},
|
|
109
110
|
});
|
|
110
111
|
if (catalogue.length === 0) {
|
|
111
|
-
throw new
|
|
112
|
+
throw new PikkuError('This project exposes no RPCs, so there is nothing for a virtual user to do.');
|
|
112
113
|
}
|
|
113
114
|
const signedIn = createHttpPersonas({
|
|
114
115
|
apiUrl: env.apiUrl,
|
|
@@ -132,7 +133,10 @@ export const personaRun = pikkuSessionlessFunc({
|
|
|
132
133
|
else {
|
|
133
134
|
const message = roleMismatchMessage(verifyPersonaRoles(personaId, persona.roles, actual));
|
|
134
135
|
if (message) {
|
|
135
|
-
|
|
136
|
+
// A refusal, not a crash: `PikkuError` is what tells the CLI to print
|
|
137
|
+
// the message on its own, since the seed drift it names is the whole
|
|
138
|
+
// finding and the frames underneath it are noise.
|
|
139
|
+
throw new PikkuError(message);
|
|
136
140
|
}
|
|
137
141
|
}
|
|
138
142
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Kysely } from 'kysely';
|
|
2
|
-
import { type MigrateResult } from '
|
|
2
|
+
import { type MigrateResult } from '@pikku/migrator-sql';
|
|
3
3
|
import type { ColumnInfo } from './db-introspector.js';
|
|
4
4
|
import { type CodegenResult } from './db-codegen.js';
|
|
5
5
|
import { type ZodCodegenResult } from './zod-codegen.js';
|
|
@@ -5,18 +5,18 @@ import { pathToFileURL } from 'node:url';
|
|
|
5
5
|
import { runInNewContext } from 'node:vm';
|
|
6
6
|
import { transformSync } from 'esbuild';
|
|
7
7
|
import { CamelCasePlugin, Kysely, PostgresDialect } from 'kysely';
|
|
8
|
-
import { migrate, baselineMigrations, } from '
|
|
8
|
+
import { migrate, baselineMigrations, } from '@pikku/migrator-sql';
|
|
9
9
|
import { applyPikkuSchemas, compilePikkuSchemas, pikkuSchemas, requiredPikkuSchemas, resolveRequirements, createCoercionPlugin, } from '@pikku/kysely';
|
|
10
10
|
import { loadAuthOptions, getAuthMigrations } from './better-auth-schema.js';
|
|
11
11
|
import { generateSchemaTypes } from './db-codegen.js';
|
|
12
12
|
import { generateZodTypes } from './zod-codegen.js';
|
|
13
|
-
import { tableCreationSql } from '
|
|
14
|
-
import { SqliteMigrationExecutor } from '
|
|
13
|
+
import { tableCreationSql } from '@pikku/migrator-sql';
|
|
14
|
+
import { SqliteMigrationExecutor } from '@pikku/migrator-sql/sqlite';
|
|
15
15
|
import { SqliteIntrospector } from './sqlite/sqlite-introspector.js';
|
|
16
16
|
import { createSqliteKysely } from './sqlite/sqlite-kysely.js';
|
|
17
|
-
import { loadSqliteRuntime } from '
|
|
17
|
+
import { loadSqliteRuntime } from '@pikku/migrator-sql/sqlite';
|
|
18
18
|
import { devSeed as runDevSeed } from './sqlite/dev-seed.js';
|
|
19
|
-
import { PostgresMigrationExecutor } from '
|
|
19
|
+
import { PostgresMigrationExecutor } from '@pikku/migrator-sql/postgres';
|
|
20
20
|
import { createPGliteKysely } from './postgres/pglite-kysely.js';
|
|
21
21
|
import { PostgresIntrospector } from './postgres/postgres-introspector.js';
|
|
22
22
|
// ─── Resolution ───────────────────────────────────────────────────────────────
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Pool } from 'pg';
|
|
2
|
-
import { MIGRATION_TRACKING_TABLE } from '
|
|
2
|
+
import { MIGRATION_TRACKING_TABLE } from '@pikku/migrator-sql';
|
|
3
3
|
import { parseCheckEnumValues } from '../check-enums.js';
|
|
4
4
|
/** Table display name matching `listTables` (schema-qualified unless `public`). */
|
|
5
5
|
function tableKey(schema, table) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DbIntrospector, ColumnInfo, ForeignKeyInfo, EnumInfo } from '../db-introspector.js';
|
|
2
|
-
import type { SyncSqliteDatabase } from '
|
|
2
|
+
import type { SyncSqliteDatabase } from '@pikku/migrator-sql/sqlite';
|
|
3
3
|
export declare class SqliteIntrospector implements DbIntrospector {
|
|
4
4
|
private readonly db;
|
|
5
5
|
constructor(db: SyncSqliteDatabase);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MIGRATION_TRACKING_TABLE } from '
|
|
1
|
+
import { MIGRATION_TRACKING_TABLE } from '@pikku/migrator-sql';
|
|
2
2
|
import { parseCheckEnumsFromDdl } from '../check-enums.js';
|
|
3
3
|
const SKIP_TABLES = new Set(['sqlite_sequence', MIGRATION_TRACKING_TABLE]);
|
|
4
4
|
export class SqliteIntrospector {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Kysely, type KyselyPlugin } from 'kysely';
|
|
2
|
-
import type { SyncSqliteDatabase } from '
|
|
2
|
+
import type { SyncSqliteDatabase } from '@pikku/migrator-sql/sqlite';
|
|
3
3
|
export interface CreateSqliteKyselyOptions {
|
|
4
4
|
db: SyncSqliteDatabase;
|
|
5
5
|
camelCase?: boolean;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import type { KnowledgeIndexResult, KnowledgeValidateResult } from '@pikku/knowledge';
|
|
1
|
+
import type { KnowledgeIndexResult, KnowledgePlanDeferResult, KnowledgePlanProgressResult, KnowledgePlanSchemaResult, KnowledgePlanSetResult, KnowledgePlanShowResult, KnowledgeValidateResult } from '@pikku/knowledge';
|
|
2
2
|
export declare const renderKnowledgeValidate: (_services: unknown, { ok, notes, findings }: KnowledgeValidateResult) => void;
|
|
3
3
|
export declare const renderKnowledgeIndex: (_services: unknown, { ok, check, files }: KnowledgeIndexResult) => void;
|
|
4
|
+
export declare const renderKnowledgePlanSchema: (_services: unknown, { schema }: KnowledgePlanSchemaResult) => void;
|
|
5
|
+
export declare const renderKnowledgePlanShow: (_services: unknown, { ok, path, body }: KnowledgePlanShowResult) => void;
|
|
6
|
+
export declare const renderKnowledgePlanProgress: (_services: unknown, { ok, path, message, done, missing, deferred, problems, }: KnowledgePlanProgressResult) => void;
|
|
7
|
+
export declare const renderKnowledgePlanSet: (_services: unknown, { ok, path, problems, schema }: KnowledgePlanSetResult) => void;
|
|
8
|
+
export declare const renderKnowledgePlanDefer: (_services: unknown, { ok, message }: KnowledgePlanDeferResult) => void;
|
|
@@ -64,3 +64,77 @@ export const renderKnowledgeIndex = (_services, { ok, check, files }) => {
|
|
|
64
64
|
process.exitCode = 1;
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
|
+
export const renderKnowledgePlanSchema = (_services, { schema }) => {
|
|
68
|
+
console.log(schema);
|
|
69
|
+
};
|
|
70
|
+
export const renderKnowledgePlanShow = (_services, { ok, path, body }) => {
|
|
71
|
+
if (!ok) {
|
|
72
|
+
console.log(`${removed('✗')} ${body}`);
|
|
73
|
+
process.exitCode = 1;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
console.log(dim(path));
|
|
77
|
+
console.log(body);
|
|
78
|
+
};
|
|
79
|
+
const list = (label, entries, colour) => {
|
|
80
|
+
if (entries.length === 0)
|
|
81
|
+
return;
|
|
82
|
+
console.log(colour(`${label} (${entries.length})`));
|
|
83
|
+
for (const entry of entries)
|
|
84
|
+
console.log(` ${entry}`);
|
|
85
|
+
console.log();
|
|
86
|
+
};
|
|
87
|
+
export const renderKnowledgePlanProgress = (_services, { ok, path, message, done, missing, deferred, problems, }) => {
|
|
88
|
+
if (message) {
|
|
89
|
+
console.log(`${removed('✗')} ${message}`);
|
|
90
|
+
process.exitCode = 1;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
console.log(dim(path));
|
|
94
|
+
console.log();
|
|
95
|
+
list('DONE', done, added);
|
|
96
|
+
list('MISSING', missing, removed);
|
|
97
|
+
list('DEFERRED to a later pass', deferred, dim);
|
|
98
|
+
list('PROBLEMS', problems, changed);
|
|
99
|
+
console.log('─'.repeat(40));
|
|
100
|
+
if (ok) {
|
|
101
|
+
console.log(`${added('✓')} the plan's first pass is built`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (missing.length > 0) {
|
|
105
|
+
console.log(`${removed('✗')} the milestone is not built yet — build each missing item, or move it out with ` +
|
|
106
|
+
dim('pikku knowledge plan defer <milestone> <item> -r "<why>"'));
|
|
107
|
+
}
|
|
108
|
+
// A problem is something that EXISTS and does not do what was planned, so there is
|
|
109
|
+
// nothing to defer — saying "defer it" here sends the reader to a command that will
|
|
110
|
+
// refuse them.
|
|
111
|
+
if (problems.length > 0) {
|
|
112
|
+
console.log(`${removed('✗')} the milestone is not built yet — fix what the problems above name. ` +
|
|
113
|
+
dim('A problem is never deferred; the thing exists, it just does something else.'));
|
|
114
|
+
}
|
|
115
|
+
// A build closes a milestone on this exit code, so it has to be readable by a shell
|
|
116
|
+
// and not only by whoever is reading the output.
|
|
117
|
+
process.exitCode = 1;
|
|
118
|
+
};
|
|
119
|
+
export const renderKnowledgePlanSet = (_services, { ok, path, problems, schema }) => {
|
|
120
|
+
if (ok) {
|
|
121
|
+
console.log(`${added('✓')} plan written to ${path}`);
|
|
122
|
+
console.log(dim('the build is measured against it'));
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
console.log(`${removed('✗')} not written:`);
|
|
126
|
+
for (const problem of problems) {
|
|
127
|
+
console.log(` ${problem}`);
|
|
128
|
+
}
|
|
129
|
+
if (schema) {
|
|
130
|
+
console.log();
|
|
131
|
+
console.log(dim('the schema, in full — build the plan to match it:'));
|
|
132
|
+
console.log(schema);
|
|
133
|
+
}
|
|
134
|
+
process.exitCode = 1;
|
|
135
|
+
};
|
|
136
|
+
export const renderKnowledgePlanDefer = (_services, { ok, message }) => {
|
|
137
|
+
console.log(`${ok ? added('✓') : removed('✗')} ${message}`);
|
|
138
|
+
if (!ok)
|
|
139
|
+
process.exitCode = 1;
|
|
140
|
+
};
|
|
@@ -49,3 +49,48 @@ export declare const KnowledgeValidateOutputSchema: import("zod").ZodObject<{
|
|
|
49
49
|
fixHint: import("zod").ZodString;
|
|
50
50
|
}, import("zod/v4/core").$strip>>;
|
|
51
51
|
}, import("zod/v4/core").$strip>;
|
|
52
|
+
export declare const KnowledgePlanSchemaInputSchema: import("zod").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
53
|
+
export declare const KnowledgePlanSchemaOutputSchema: import("zod").ZodObject<{
|
|
54
|
+
schema: import("zod").ZodString;
|
|
55
|
+
}, import("zod/v4/core").$strip>;
|
|
56
|
+
export declare const KnowledgePlanProgressInputSchema: import("zod").ZodObject<{
|
|
57
|
+
milestone: import("zod").ZodString;
|
|
58
|
+
}, import("zod/v4/core").$strip>;
|
|
59
|
+
export declare const KnowledgePlanProgressOutputSchema: import("zod").ZodObject<{
|
|
60
|
+
ok: import("zod").ZodBoolean;
|
|
61
|
+
path: import("zod").ZodString;
|
|
62
|
+
message: import("zod").ZodString;
|
|
63
|
+
done: import("zod").ZodArray<import("zod").ZodString>;
|
|
64
|
+
missing: import("zod").ZodArray<import("zod").ZodString>;
|
|
65
|
+
deferred: import("zod").ZodArray<import("zod").ZodString>;
|
|
66
|
+
problems: import("zod").ZodArray<import("zod").ZodString>;
|
|
67
|
+
}, import("zod/v4/core").$strip>;
|
|
68
|
+
export declare const KnowledgePlanShowInputSchema: import("zod").ZodObject<{
|
|
69
|
+
milestone: import("zod").ZodString;
|
|
70
|
+
forBuild: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
71
|
+
}, import("zod/v4/core").$strip>;
|
|
72
|
+
export declare const KnowledgePlanShowOutputSchema: import("zod").ZodObject<{
|
|
73
|
+
ok: import("zod").ZodBoolean;
|
|
74
|
+
path: import("zod").ZodString;
|
|
75
|
+
body: import("zod").ZodString;
|
|
76
|
+
}, import("zod/v4/core").$strip>;
|
|
77
|
+
export declare const KnowledgePlanSetInputSchema: import("zod").ZodObject<{
|
|
78
|
+
milestone: import("zod").ZodString;
|
|
79
|
+
file: import("zod").ZodString;
|
|
80
|
+
}, import("zod/v4/core").$strip>;
|
|
81
|
+
export declare const KnowledgePlanSetOutputSchema: import("zod").ZodObject<{
|
|
82
|
+
ok: import("zod").ZodBoolean;
|
|
83
|
+
path: import("zod").ZodString;
|
|
84
|
+
problems: import("zod").ZodArray<import("zod").ZodString>;
|
|
85
|
+
schema: import("zod").ZodOptional<import("zod").ZodString>;
|
|
86
|
+
}, import("zod/v4/core").$strip>;
|
|
87
|
+
export declare const KnowledgePlanDeferInputSchema: import("zod").ZodObject<{
|
|
88
|
+
milestone: import("zod").ZodString;
|
|
89
|
+
item: import("zod").ZodString;
|
|
90
|
+
reason: import("zod").ZodString;
|
|
91
|
+
}, import("zod/v4/core").$strip>;
|
|
92
|
+
export declare const KnowledgePlanDeferOutputSchema: import("zod").ZodObject<{
|
|
93
|
+
ok: import("zod").ZodBoolean;
|
|
94
|
+
path: import("zod").ZodString;
|
|
95
|
+
message: import("zod").ZodString;
|
|
96
|
+
}, import("zod/v4/core").$strip>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KnowledgeIndexInput, KnowledgeIndexOutput, KnowledgeValidateInput, KnowledgeValidateOutput, } from '@pikku/knowledge';
|
|
1
|
+
import { KnowledgeIndexInput, KnowledgeIndexOutput, KnowledgePlanDeferInput, KnowledgePlanDeferOutput, KnowledgePlanProgressInput, KnowledgePlanProgressOutput, KnowledgePlanSchemaInput, KnowledgePlanSchemaOutput, KnowledgePlanSetInput, KnowledgePlanSetOutput, KnowledgePlanShowInput, KnowledgePlanShowOutput, KnowledgeValidateInput, KnowledgeValidateOutput, } from '@pikku/knowledge';
|
|
2
2
|
/**
|
|
3
3
|
* The knowledge command schemas, re-bound to variables declared HERE rather than
|
|
4
4
|
* imported straight into the command files.
|
|
@@ -23,3 +23,13 @@ export const KnowledgeIndexInputSchema = KnowledgeIndexInput;
|
|
|
23
23
|
export const KnowledgeIndexOutputSchema = KnowledgeIndexOutput;
|
|
24
24
|
export const KnowledgeValidateInputSchema = KnowledgeValidateInput;
|
|
25
25
|
export const KnowledgeValidateOutputSchema = KnowledgeValidateOutput;
|
|
26
|
+
export const KnowledgePlanSchemaInputSchema = KnowledgePlanSchemaInput;
|
|
27
|
+
export const KnowledgePlanSchemaOutputSchema = KnowledgePlanSchemaOutput;
|
|
28
|
+
export const KnowledgePlanProgressInputSchema = KnowledgePlanProgressInput;
|
|
29
|
+
export const KnowledgePlanProgressOutputSchema = KnowledgePlanProgressOutput;
|
|
30
|
+
export const KnowledgePlanShowInputSchema = KnowledgePlanShowInput;
|
|
31
|
+
export const KnowledgePlanShowOutputSchema = KnowledgePlanShowOutput;
|
|
32
|
+
export const KnowledgePlanSetInputSchema = KnowledgePlanSetInput;
|
|
33
|
+
export const KnowledgePlanSetOutputSchema = KnowledgePlanSetOutput;
|
|
34
|
+
export const KnowledgePlanDeferInputSchema = KnowledgePlanDeferInput;
|
|
35
|
+
export const KnowledgePlanDeferOutputSchema = KnowledgePlanDeferOutput;
|