@pikku/cli 0.12.137 → 0.12.141
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 +106 -0
- package/console-app/assets/{abnfDiagram-N423BO3Z-W1UI4BWy.js → abnfDiagram-N423BO3Z-CG60mMUd.js} +1 -1
- package/console-app/assets/architecture-TIHT7OUA-DSzfLiV3.js +1 -0
- package/console-app/assets/{architectureDiagram-T3A2C74G-Dgnhu9J8.js → architectureDiagram-T3A2C74G-Ch6qWsLf.js} +1 -1
- package/console-app/assets/{blockDiagram-VBNYF7ZC-Da-H9pFU.js → blockDiagram-VBNYF7ZC-yRgqjgqW.js} +1 -1
- package/console-app/assets/{c4Diagram-5PPSVZJV-CPQ006DM.js → c4Diagram-5PPSVZJV-NvawOgnU.js} +1 -1
- package/console-app/assets/channel-DYUdcfEK.js +1 -0
- package/console-app/assets/{chunk-2GRJ4B5K-B3QE8g_6.js → chunk-2GRJ4B5K-BJ9-Roz7.js} +1 -1
- package/console-app/assets/{chunk-4I5QYGJK-D04DssN0.js → chunk-4I5QYGJK-DZwmcj48.js} +1 -1
- package/console-app/assets/{chunk-5RXB4S5H-CXe_vAKZ.js → chunk-5RXB4S5H-BTBwIEIt.js} +1 -1
- package/console-app/assets/{chunk-6Q2QTUOP-DhpMC5UR.js → chunk-6Q2QTUOP-C55aqlA-.js} +1 -1
- package/console-app/assets/{chunk-7Z6QIM7H-CtoQQGfm.js → chunk-7Z6QIM7H-DRmYZ-SZ.js} +1 -1
- package/console-app/assets/{chunk-GF5L2VYU-BovriS0p.js → chunk-GF5L2VYU-InZeM4Hr.js} +1 -1
- package/console-app/assets/{chunk-I66GZJ75-Goasace2.js → chunk-I66GZJ75-BNvijc65.js} +1 -1
- package/console-app/assets/{chunk-JQJVKLGR-Dy3HStoh.js → chunk-JQJVKLGR-CIMXqmif.js} +1 -1
- package/console-app/assets/{chunk-KBJHAD2P-Cm5EwbeQ.js → chunk-KBJHAD2P-C9h3FBoE.js} +1 -1
- package/console-app/assets/{chunk-NSK5VX7P-DZ-VVQUA.js → chunk-NSK5VX7P-lz8xBTRo.js} +1 -1
- package/console-app/assets/{chunk-QR6OTTB3-W5GRG-wW.js → chunk-QR6OTTB3-CjOfjLMq.js} +1 -1
- package/console-app/assets/{chunk-RYQCIY6F-_xvZ8Hx8.js → chunk-RYQCIY6F-CV3667Qm.js} +1 -1
- package/console-app/assets/{chunk-UBXNYLIW-C0L1Tpxq.js → chunk-UBXNYLIW-CBN7usxw.js} +1 -1
- package/console-app/assets/{chunk-W5SLKNZC-DAyLbBQq.js → chunk-W5SLKNZC-5TkpffRm.js} +1 -1
- package/console-app/assets/{chunk-WRU74C26-BrL4inwu.js → chunk-WRU74C26-GBek0Nby.js} +1 -1
- package/console-app/assets/chunk-XXDRQBXY-B3U_w_pW.js +1 -0
- package/console-app/assets/classDiagram-JCYQIIEL-Mg8_8GSE.js +1 -0
- package/console-app/assets/classDiagram-v2-OCEON4UE-Mg8_8GSE.js +1 -0
- package/console-app/assets/{cose-bilkent-JH36ORCC-DxHzzMQL.js → cose-bilkent-JH36ORCC-BkGyb7Kn.js} +1 -1
- package/console-app/assets/{cynefin-VYW2F7L2-7ytt-CDO.js → cynefin-VYW2F7L2-qMmeyMja.js} +1 -1
- package/console-app/assets/{cynefinDiagram-MW4NZA55-Cq-zIV7s.js → cynefinDiagram-MW4NZA55-7MuIYiO4.js} +1 -1
- package/console-app/assets/{dagre-Dl-9JF5i.js → dagre-BbESpUs5.js} +1 -1
- package/console-app/assets/{dagre-VZM6K2ZE-DLlanPb9.js → dagre-VZM6K2ZE-I6YsMazW.js} +1 -1
- package/console-app/assets/{diagram-7IWD3JNH-NTCRs_uw.js → diagram-7IWD3JNH-CJPB2T6d.js} +1 -1
- package/console-app/assets/{diagram-B4RE2ZJO-Dwf7hoRU.js → diagram-B4RE2ZJO-CmFGMFPx.js} +1 -1
- package/console-app/assets/{diagram-LBJQPF4R-2h_a7jsr.js → diagram-LBJQPF4R-BMzRMe8g.js} +1 -1
- package/console-app/assets/{diagram-Q27KOJAE-DuOfl1WJ.js → diagram-Q27KOJAE-CeJb7xQ2.js} +1 -1
- package/console-app/assets/{diagram-UB23O5K3-Blp2hikL.js → diagram-UB23O5K3-BQkhJgYU.js} +1 -1
- package/console-app/assets/{ebnfDiagram-BXEA7PRR-BwdeYz2Z.js → ebnfDiagram-BXEA7PRR-C1F_8089.js} +1 -1
- package/console-app/assets/{erDiagram-JOGREHBK-DY_x1XSg.js → erDiagram-JOGREHBK-DRwpdW4v.js} +1 -1
- package/console-app/assets/eventmodeling-45OFAUF4-C5L7A6YY.js +1 -0
- package/console-app/assets/flowDiagram-UKHOOZJN-D6GmsM3x.js +1 -0
- package/console-app/assets/{ganttDiagram-PKOTCBZU-DxiIwMWB.js → ganttDiagram-PKOTCBZU-CfsGz3Lj.js} +1 -1
- package/console-app/assets/{gitGraph-TEB2WS4Q-C3DsIpZV.js → gitGraph-TEB2WS4Q-BBt9AGD3.js} +1 -1
- package/console-app/assets/{gitGraphDiagram-DS77QQ5N-C2pPy08m.js → gitGraphDiagram-DS77QQ5N-y5WPOR-G.js} +1 -1
- package/console-app/assets/{index-D6aBqNnO.js → index-BmvyL35Z.js} +150 -150
- package/console-app/assets/{info-DKCQHKI2-FJuVYZ8D.js → info-DKCQHKI2-mYDlDDyA.js} +1 -1
- package/console-app/assets/{infoDiagram-6WML65LV-Bih5T82B.js → infoDiagram-6WML65LV-uOP7AjEu.js} +1 -1
- package/console-app/assets/{ishikawaDiagram-WSZJBQD7-jOkuIgMl.js → ishikawaDiagram-WSZJBQD7-BUMKV94t.js} +1 -1
- package/console-app/assets/{journeyDiagram-NVQOT4AX-CZ9yVscx.js → journeyDiagram-NVQOT4AX-C8_km86P.js} +1 -1
- package/console-app/assets/{kanban-definition-27J2QSJJ-Dpmgfv5c.js → kanban-definition-27J2QSJJ-Ce5oUBPR.js} +1 -1
- package/console-app/assets/{line-DjmQl1gv.js → line-D-6c8Gxs.js} +1 -1
- package/console-app/assets/{linear-B8fAzric.js → linear-CyrGkJOO.js} +1 -1
- package/console-app/assets/{mermaid-parser.core-BxoecV24.js → mermaid-parser.core-CYuFKArA.js} +3 -3
- package/console-app/assets/{mermaid.core-D2Ux-Rs7.js → mermaid.core-CXQhu3yO.js} +4 -4
- package/console-app/assets/{mindmap-definition-FAOFIHXS-5xpWfvPY.js → mindmap-definition-FAOFIHXS-CTMHna5d.js} +1 -1
- package/console-app/assets/{packet-7NZHBO7P-Bq9JPqWg.js → packet-7NZHBO7P-Bu7Wxek6.js} +1 -1
- package/console-app/assets/{pegDiagram-VL7TDLO6-BKWLK1GI.js → pegDiagram-VL7TDLO6-CQOikBgW.js} +1 -1
- package/console-app/assets/{pie-RZYD4A2V-CsGG-f-c.js → pie-RZYD4A2V-Co7qIvyZ.js} +1 -1
- package/console-app/assets/{pieDiagram-7S7Q4E2Y-BRy6lUc2.js → pieDiagram-7S7Q4E2Y-Dh6jYgnj.js} +1 -1
- package/console-app/assets/{quadrantDiagram-CIZ2JOQS-OcYHZLLg.js → quadrantDiagram-CIZ2JOQS-Boongjy-.js} +1 -1
- package/console-app/assets/{radar-I7S5WNFK-8MO05jdC.js → radar-I7S5WNFK-CSJyAKYA.js} +1 -1
- package/console-app/assets/{railroad-3IZDKUUU-CLs1yR0q.js → railroad-3IZDKUUU-DklknXem.js} +1 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-D-2EAJOD.js +1 -0
- package/console-app/assets/railroad-ebnf-EBAXGLYW-C5XxxCx7.js +1 -0
- package/console-app/assets/railroad-peg-LSFZ7HO6-D8fXoMuX.js +1 -0
- package/console-app/assets/{railroadDiagram-AXF67PYL-DjpHDwhw.js → railroadDiagram-AXF67PYL-DEapZRM_.js} +1 -1
- package/console-app/assets/{requirementDiagram-LRYGKXZP-CyKaqOMR.js → requirementDiagram-LRYGKXZP-CqFLtnyL.js} +1 -1
- package/console-app/assets/{sankeyDiagram-W5VNT64P-0WoWlmdY.js → sankeyDiagram-W5VNT64P-CNu-G1MH.js} +1 -1
- package/console-app/assets/{sequenceDiagram-SI44F4Z6-kd31YoP4.js → sequenceDiagram-SI44F4Z6-CoEKUR3G.js} +1 -1
- package/console-app/assets/{src-CGPyCqg2.js → src-C1UIZ0TF.js} +1 -1
- package/console-app/assets/{stateDiagram-OKZ733FA-Cwy-Xwqp.js → stateDiagram-OKZ733FA-CJka40EH.js} +1 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-Bfuo66an.js +1 -0
- package/console-app/assets/{swimlanes-SLNWSIFB-Cq0Pq-Qq.js → swimlanes-SLNWSIFB-Dv3MGmvW.js} +1 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-CyQmsXKP.js +8 -0
- package/console-app/assets/{timeline-definition-Z64GVDOM-CgFH2I_j.js → timeline-definition-Z64GVDOM-CO8etJHi.js} +1 -1
- package/console-app/assets/{treeView-QDETBFTQ-CmeHYUxi.js → treeView-QDETBFTQ-BjLcvY-V.js} +1 -1
- package/console-app/assets/{treemap-6X3UGDF4-B6JWxyQe.js → treemap-6X3UGDF4-xC9XqGfS.js} +1 -1
- package/console-app/assets/{vennDiagram-T6HMQDX7-DdGYpKcz.js → vennDiagram-T6HMQDX7-CJGsYvlQ.js} +1 -1
- package/console-app/assets/{wardley-OPB4EBWU-BVF8AOCQ.js → wardley-OPB4EBWU-DkMc876g.js} +1 -1
- package/console-app/assets/{wardleyDiagram-T6FBY63Y-BUFon1WP.js → wardleyDiagram-T6FBY63Y-CTe7zAVZ.js} +1 -1
- package/console-app/assets/{xychartDiagram-ELKLHX3M-Bu-WJdeF.js → xychartDiagram-ELKLHX3M-CABg-MLE.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 +11 -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 +11 -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 +24 -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 +75 -87
- package/dist/.pikku/function/pikku-functions.gen.js +3 -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 +3 -3
- 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 +7 -5
- package/dist/.pikku/schemas/schemas/FabricLinkInput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/KnowledgeReconcileInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/KnowledgeReconcileOutput.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/meta/allWorkflow.gen.json +8 -2
- 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 +11 -1
- package/dist/src/deploy/build-pipeline.js +2 -0
- package/dist/src/deploy/bundler/bun-bundler.js +5 -2
- package/dist/src/deploy/bundler/bundler.interface.d.ts +9 -1
- package/dist/src/deploy/bundler/bundler.js +1 -0
- package/dist/src/deploy/bundler/node-bundler.js +12 -2
- package/dist/src/deploy/bundler/service-module-map.js +2 -2
- package/dist/src/fabric/fabric-commands.d.ts +18 -9
- package/dist/src/fabric/fabric-commands.js +11 -0
- package/dist/src/fabric/functions/deploy.function.d.ts +5 -5
- package/dist/src/fabric/functions/link.function.d.ts +12 -0
- package/dist/src/fabric/functions/link.function.js +95 -6
- package/dist/src/fabric/functions/llm-key.function.d.ts +4 -4
- package/dist/src/fabric/functions/smoke.function.d.ts +4 -4
- package/dist/src/fabric/lib/git.d.ts +27 -0
- package/dist/src/fabric/lib/git.js +70 -2
- package/dist/src/functions/commands/db-export.js +4 -9
- package/dist/src/functions/commands/enable.d.ts +1 -0
- package/dist/src/functions/commands/enable.js +3 -0
- package/dist/src/functions/commands/knowledge-reconcile.d.ts +45 -0
- package/dist/src/functions/commands/knowledge-reconcile.js +11 -0
- package/dist/src/functions/db/local-db.d.ts +12 -2
- package/dist/src/functions/db/local-db.js +71 -13
- package/dist/src/functions/knowledge/render.d.ts +12 -1
- package/dist/src/functions/knowledge/render.js +48 -0
- package/dist/src/functions/knowledge/schemas.d.ts +23 -0
- package/dist/src/functions/knowledge/schemas.js +3 -1
- package/dist/src/functions/wirings/agent/pikku-command-agent.js +11 -14
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +10 -13
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +10 -13
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.js +7 -15
- package/dist/src/functions/wirings/credentials/serialize-credentials-types.js +2 -8
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +21 -18
- package/dist/src/functions/wirings/gateway/pikku-command-gateway.js +11 -10
- package/dist/src/functions/wirings/http/pikku-command-http-routes.js +10 -13
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +11 -17
- package/dist/src/functions/wirings/personas/serialize-personas-types.js +2 -2
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +11 -14
- package/dist/src/functions/wirings/remote-jobs/pikku-command-remote-jobs.d.ts +1 -0
- package/dist/src/functions/wirings/remote-jobs/pikku-command-remote-jobs.js +31 -0
- package/dist/src/functions/wirings/remote-jobs/serialize-remote-jobs.d.ts +16 -0
- package/dist/src/functions/wirings/remote-jobs/serialize-remote-jobs.js +78 -0
- package/dist/src/functions/wirings/roles/serialize-roles-types.js +2 -2
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +11 -12
- package/dist/src/functions/wirings/scopes/serialize-scopes-client.js +2 -2
- package/dist/src/functions/wirings/scopes/serialize-scopes-types.js +5 -3
- package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +4 -10
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.js +11 -11
- package/dist/src/functions/wirings/variables/serialize-variables-types.js +2 -8
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +7 -8
- package/dist/src/functions/workflows/all.workflow.js +8 -0
- package/dist/src/services.js +13 -0
- package/dist/src/utils/pikku-cli-config.js +4 -0
- package/dist/src/utils/remote-jobs-schemas-file.d.ts +6 -0
- package/dist/src/utils/remote-jobs-schemas-file.js +9 -0
- package/dist/src/utils/remove-legacy-scaffold-file.js +3 -0
- package/dist/src/utils/strip-verbose-meta.d.ts +9 -10
- package/dist/src/utils/strip-verbose-meta.js +15 -19
- package/dist/src/utils/ts-literal.d.ts +7 -0
- package/dist/src/utils/ts-literal.js +7 -0
- package/dist/src/utils/write-wiring-meta.d.ts +43 -0
- package/dist/src/utils/write-wiring-meta.js +45 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/surface.json +15 -15
- package/console-app/assets/architecture-TIHT7OUA-ChuyZvLt.js +0 -1
- package/console-app/assets/channel-Bk5Nkkn2.js +0 -1
- package/console-app/assets/chunk-XXDRQBXY-CCdCi2uV.js +0 -1
- package/console-app/assets/classDiagram-JCYQIIEL-Dgekxp3j.js +0 -1
- package/console-app/assets/classDiagram-v2-OCEON4UE-Dgekxp3j.js +0 -1
- package/console-app/assets/eventmodeling-45OFAUF4-2ImzjrgM.js +0 -1
- package/console-app/assets/flowDiagram-UKHOOZJN-DmrgHe66.js +0 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-CA9-7Fw1.js +0 -1
- package/console-app/assets/railroad-ebnf-EBAXGLYW-BhkwTTAW.js +0 -1
- package/console-app/assets/railroad-peg-LSFZ7HO6-BEaB8UlJ.js +0 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-DExEOOCw.js +0 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-B0RUxlCH.js +0 -8
- package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +0 -1
- package/dist/src/fabric/lib/not-implemented.d.ts +0 -5
- package/dist/src/fabric/lib/not-implemented.js +0 -8
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +0 -1
- package/dist/src/functions/wirings/channels/pikku-channels.js +0 -38
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +0 -1
- package/dist/src/functions/wirings/http/pikku-http-routes.js +0 -30
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +0 -1
- package/dist/src/functions/wirings/queue/pikku-queue.js +0 -31
- package/dist/src/utils/pikku-files-and-methods.d.ts +0 -20
- package/dist/src/utils/pikku-files-and-methods.js +0 -25
- /package/dist/.pikku/schemas/schemas/{PikkuHTTPOutput.schema.json → PikkuRemoteJobsOutput.schema.json} +0 -0
|
@@ -37,6 +37,9 @@ export const enableEvents = pikkuVoidFunc({
|
|
|
37
37
|
export const enableRemoteRpc = pikkuVoidFunc({
|
|
38
38
|
func: async ({ logger, config }) => enableFeature('remoteRpc', logger, config),
|
|
39
39
|
});
|
|
40
|
+
export const enableRemoteJobs = pikkuVoidFunc({
|
|
41
|
+
func: async ({ logger, config }) => enableFeature('remoteJobs', logger, config),
|
|
42
|
+
});
|
|
40
43
|
export const enableWebhook = pikkuVoidFunc({
|
|
41
44
|
func: async ({ logger, config }) => enableFeature('webhook', logger, config),
|
|
42
45
|
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { renderKnowledgeReconcile } from '../knowledge/render.js';
|
|
2
|
+
export declare const knowledgeReconcile: import("#pikku/function").PikkuFunctionConfig<Record<string, never>, {
|
|
3
|
+
kind: "hold" | "idle" | "repair-note" | "write-plan" | "ask-user" | "dispatch";
|
|
4
|
+
reason: string;
|
|
5
|
+
note?: string | undefined;
|
|
6
|
+
hold?: string | undefined;
|
|
7
|
+
notes?: string[] | undefined;
|
|
8
|
+
question?: {
|
|
9
|
+
header: string;
|
|
10
|
+
question: string;
|
|
11
|
+
options: {
|
|
12
|
+
label: string;
|
|
13
|
+
description?: string | undefined;
|
|
14
|
+
}[];
|
|
15
|
+
} | undefined;
|
|
16
|
+
}, "rpc" | "session", import("#pikku/function").PikkuFunctionSessionless<Record<string, never>, {
|
|
17
|
+
kind: "hold" | "idle" | "repair-note" | "write-plan" | "ask-user" | "dispatch";
|
|
18
|
+
reason: string;
|
|
19
|
+
note?: string | undefined;
|
|
20
|
+
hold?: string | undefined;
|
|
21
|
+
notes?: string[] | undefined;
|
|
22
|
+
question?: {
|
|
23
|
+
header: string;
|
|
24
|
+
question: string;
|
|
25
|
+
options: {
|
|
26
|
+
label: string;
|
|
27
|
+
description?: string | undefined;
|
|
28
|
+
}[];
|
|
29
|
+
} | undefined;
|
|
30
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices, unknown> | import("#pikku/function").PikkuFunction<Record<string, never>, {
|
|
31
|
+
kind: "hold" | "idle" | "repair-note" | "write-plan" | "ask-user" | "dispatch";
|
|
32
|
+
reason: string;
|
|
33
|
+
note?: string | undefined;
|
|
34
|
+
hold?: string | undefined;
|
|
35
|
+
notes?: string[] | undefined;
|
|
36
|
+
question?: {
|
|
37
|
+
header: string;
|
|
38
|
+
question: string;
|
|
39
|
+
options: {
|
|
40
|
+
label: string;
|
|
41
|
+
description?: string | undefined;
|
|
42
|
+
}[];
|
|
43
|
+
} | undefined;
|
|
44
|
+
}, "rpc" | "session", import("#pikku/function").WiredServices>, undefined, undefined>;
|
|
45
|
+
export { renderKnowledgeReconcile };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku/function';
|
|
2
|
+
import { runKnowledgeReconcile } from '@pikku/knowledge';
|
|
3
|
+
import { renderKnowledgeReconcile } from '../knowledge/render.js';
|
|
4
|
+
import { KnowledgeReconcileInputSchema, KnowledgeReconcileOutputSchema, } from '../knowledge/schemas.js';
|
|
5
|
+
export const knowledgeReconcile = pikkuSessionlessFunc({
|
|
6
|
+
description: 'Say the one thing to do next with the knowledge base — repair a note, write a plan, ask the user, dispatch a build, or nothing — derived from what is on disk rather than from what a previous step remembered to announce.',
|
|
7
|
+
input: KnowledgeReconcileInputSchema,
|
|
8
|
+
output: KnowledgeReconcileOutputSchema,
|
|
9
|
+
func: async ({ config }) => runKnowledgeReconcile(config.rootDir),
|
|
10
|
+
});
|
|
11
|
+
export { renderKnowledgeReconcile };
|
|
@@ -74,8 +74,6 @@ export declare function resolveDb(userConfig: UserConfigShape, rootDir: string,
|
|
|
74
74
|
defaultSchema?: string;
|
|
75
75
|
pgliteExtensions?: string[];
|
|
76
76
|
} | string): ResolvedDb | null;
|
|
77
|
-
/** @deprecated Use resolveDb(userConfig, ...) instead. */
|
|
78
|
-
export declare function resolveLocalDb(sqliteDb: string | undefined, rootDir: string, outDir: string, runtimeDir?: string): ResolvedSqliteDb | null;
|
|
79
77
|
/**
|
|
80
78
|
* What an embedded PGlite instance needs beyond its data directory: where to
|
|
81
79
|
* resolve extension packages from, and which ones to load.
|
|
@@ -356,6 +354,18 @@ export interface AddonDeclaration {
|
|
|
356
354
|
* projects on either engine.
|
|
357
355
|
*/
|
|
358
356
|
export declare function exportSchema(rootDir: string, pgliteExtensions?: string[]): Promise<SchemaArtifact>;
|
|
357
|
+
/**
|
|
358
|
+
* Write the artifact a consumer reads, whether or not this package has tables.
|
|
359
|
+
*
|
|
360
|
+
* An addon with no tables still publishes, because the consumer's only other
|
|
361
|
+
* reading of an absent file is "this package cannot say", which it must treat
|
|
362
|
+
* as a broken publish. The empty artifact is the addon stating, in a file that
|
|
363
|
+
* ships, that it needs nothing.
|
|
364
|
+
*/
|
|
365
|
+
export declare function writeSchemaArtifact(rootDir: string, outDir: string, pgliteExtensions?: string[]): Promise<{
|
|
366
|
+
file: string;
|
|
367
|
+
dialects: string[];
|
|
368
|
+
}>;
|
|
359
369
|
/**
|
|
360
370
|
* The schema every wired addon publishes, as sources.
|
|
361
371
|
*
|
|
@@ -10,7 +10,7 @@ import { applyPikkuSchemas, compilePikkuSchemas, pikkuSchemas, requiredPikkuSche
|
|
|
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 '@pikku/migrator-sql';
|
|
13
|
+
import { tableCreationSql, tablesInSourceOrder } from '@pikku/migrator-sql';
|
|
14
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';
|
|
@@ -114,13 +114,6 @@ export function resolveDb(userConfig, rootDir, outDir, runtimeDir, dbConfig) {
|
|
|
114
114
|
}
|
|
115
115
|
return null;
|
|
116
116
|
}
|
|
117
|
-
/** @deprecated Use resolveDb(userConfig, ...) instead. */
|
|
118
|
-
export function resolveLocalDb(sqliteDb, rootDir, outDir, runtimeDir) {
|
|
119
|
-
if (!sqliteDb)
|
|
120
|
-
return null;
|
|
121
|
-
const result = resolveDb({ sqliteDb }, rootDir, outDir, runtimeDir);
|
|
122
|
-
return result;
|
|
123
|
-
}
|
|
124
117
|
function resolveAgainst(root, p) {
|
|
125
118
|
return isAbsolute(p) ? p : resolve(root, p);
|
|
126
119
|
}
|
|
@@ -1066,6 +1059,59 @@ export async function exportSchema(rootDir, pgliteExtensions = []) {
|
|
|
1066
1059
|
}
|
|
1067
1060
|
return artifact;
|
|
1068
1061
|
}
|
|
1062
|
+
/**
|
|
1063
|
+
* Write the artifact a consumer reads, whether or not this package has tables.
|
|
1064
|
+
*
|
|
1065
|
+
* An addon with no tables still publishes, because the consumer's only other
|
|
1066
|
+
* reading of an absent file is "this package cannot say", which it must treat
|
|
1067
|
+
* as a broken publish. The empty artifact is the addon stating, in a file that
|
|
1068
|
+
* ships, that it needs nothing.
|
|
1069
|
+
*/
|
|
1070
|
+
export async function writeSchemaArtifact(rootDir, outDir, pgliteExtensions) {
|
|
1071
|
+
const artifact = await exportSchema(rootDir, pgliteExtensions);
|
|
1072
|
+
const file = join(outDir, 'db', 'pikku-db-meta.gen.json');
|
|
1073
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
1074
|
+
writeFileSync(file, `${JSON.stringify(artifact, null, 2)}\n`, 'utf8');
|
|
1075
|
+
return { file, dialects: Object.keys(artifact) };
|
|
1076
|
+
}
|
|
1077
|
+
/**
|
|
1078
|
+
* Read and check one addon's published artifact.
|
|
1079
|
+
*
|
|
1080
|
+
* The file is generated, so a malformed one is not an authoring mistake to be
|
|
1081
|
+
* explained away — it is a broken publish, and every branch here says which
|
|
1082
|
+
* package to go and rebuild. Answering with half an artifact would be worse
|
|
1083
|
+
* than refusing: a dialect carrying tables but no SQL generates a migration
|
|
1084
|
+
* that creates nothing, and the schema silently drifts from what the addon's
|
|
1085
|
+
* own functions expect.
|
|
1086
|
+
*/
|
|
1087
|
+
function readSchemaArtifact(artifactPath, pkg) {
|
|
1088
|
+
let parsed;
|
|
1089
|
+
try {
|
|
1090
|
+
parsed = JSON.parse(readFileSync(artifactPath, 'utf8'));
|
|
1091
|
+
}
|
|
1092
|
+
catch (error) {
|
|
1093
|
+
throw new Error(`The '${pkg}' addon publishes an unreadable ${ADDON_DB_ARTIFACT} ` +
|
|
1094
|
+
`(${artifactPath}): ${error.message}. Rebuild the addon.`);
|
|
1095
|
+
}
|
|
1096
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
1097
|
+
throw new Error(`The '${pkg}' addon publishes a ${ADDON_DB_ARTIFACT} that is not an ` +
|
|
1098
|
+
'object of dialects. Rebuild the addon.');
|
|
1099
|
+
}
|
|
1100
|
+
for (const [dialect, exported] of Object.entries(parsed)) {
|
|
1101
|
+
const entry = exported;
|
|
1102
|
+
const hasSql = typeof entry?.sql === 'string' && entry.sql.trim().length > 0;
|
|
1103
|
+
const hasTables = typeof entry?.tables === 'object' &&
|
|
1104
|
+
entry.tables !== null &&
|
|
1105
|
+
!Array.isArray(entry.tables);
|
|
1106
|
+
if (!hasSql || !hasTables) {
|
|
1107
|
+
throw new Error(`The '${pkg}' addon publishes a ${dialect} schema that is incomplete — ` +
|
|
1108
|
+
`it needs both the SQL to run and the tables that SQL creates, and it ` +
|
|
1109
|
+
`has ${!hasSql ? 'no sql' : 'sql'} and ${!hasTables ? 'no tables' : 'tables'}. ` +
|
|
1110
|
+
'Rebuild the addon.');
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
return parsed;
|
|
1114
|
+
}
|
|
1069
1115
|
/**
|
|
1070
1116
|
* The schema every wired addon publishes, as sources.
|
|
1071
1117
|
*
|
|
@@ -1089,11 +1135,23 @@ export async function addonSchemaSources(rootDir, dialect, addons, logger) {
|
|
|
1089
1135
|
artifactPath = require.resolve(`${addon.package}/${ADDON_DB_ARTIFACT}`);
|
|
1090
1136
|
}
|
|
1091
1137
|
catch {
|
|
1092
|
-
//
|
|
1093
|
-
//
|
|
1094
|
-
|
|
1138
|
+
// Every addon publishes this file, and one with no tables publishes an
|
|
1139
|
+
// empty one. Absence is therefore never "contributes nothing" — it is a
|
|
1140
|
+
// package that cannot say, and the two used to be indistinguishable:
|
|
1141
|
+
// the addon was skipped in silence and the mistake surfaced much later,
|
|
1142
|
+
// as a function querying a table nobody created.
|
|
1143
|
+
throw new Error(`The '${addon.package}' addon does not publish ${ADDON_DB_ARTIFACT}, so ` +
|
|
1144
|
+
'there is no way to tell whether it ships tables. Build it with a ' +
|
|
1145
|
+
"current CLI (`pikku all` writes the file, empty when there are no " +
|
|
1146
|
+
'tables), and make sure the package exports and packs it:\n' +
|
|
1147
|
+
` "exports": { "./${ADDON_DB_ARTIFACT}": "./dist/.pikku/addon/db/pikku-db-meta.gen.json" }\n` +
|
|
1148
|
+
' "files": ["dist"]');
|
|
1095
1149
|
}
|
|
1096
|
-
const artifact =
|
|
1150
|
+
const artifact = readSchemaArtifact(artifactPath, addon.package);
|
|
1151
|
+
// An addon with no tables says so with an empty artifact, which is the
|
|
1152
|
+
// ordinary case and contributes nothing.
|
|
1153
|
+
if (Object.keys(artifact).length === 0)
|
|
1154
|
+
continue;
|
|
1097
1155
|
const exported = artifact[dialect];
|
|
1098
1156
|
if (!exported) {
|
|
1099
1157
|
logger.error(`The '${addon.package}' addon publishes a schema, but not for ${dialect} — ` +
|
|
@@ -1232,7 +1290,7 @@ export async function generateMigrations(resolved, rootDir, srcDirectories, logg
|
|
|
1232
1290
|
}
|
|
1233
1291
|
else {
|
|
1234
1292
|
const statements = [];
|
|
1235
|
-
for (const table of missingTables) {
|
|
1293
|
+
for (const table of tablesInSourceOrder(source.desired.sql, missingTables)) {
|
|
1236
1294
|
// A wholly new table is the first-time case in miniature: nothing to
|
|
1237
1295
|
// diff against, and the source's own SQL already says exactly how to
|
|
1238
1296
|
// build it. Rendering the column map instead would drop the primary
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { KnowledgeIndexResult, KnowledgePlanDeferResult, KnowledgePlanProgressResult, KnowledgePlanSchemaResult, KnowledgePlanSetResult, KnowledgePlanShowResult, KnowledgeValidateResult } from '@pikku/knowledge';
|
|
1
|
+
import type { KnowledgeIndexResult, KnowledgePlanDeferResult, KnowledgePlanProgressResult, KnowledgePlanSchemaResult, KnowledgePlanSetResult, KnowledgePlanShowResult, KnowledgeReconcileResult, 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
4
|
export declare const renderKnowledgePlanSchema: (_services: unknown, { schema }: KnowledgePlanSchemaResult) => void;
|
|
@@ -6,3 +6,14 @@ export declare const renderKnowledgePlanShow: (_services: unknown, { ok, path, b
|
|
|
6
6
|
export declare const renderKnowledgePlanProgress: (_services: unknown, { ok, path, message, done, missing, deferred, problems, }: KnowledgePlanProgressResult) => void;
|
|
7
7
|
export declare const renderKnowledgePlanSet: (_services: unknown, { ok, path, problems, schema }: KnowledgePlanSetResult) => void;
|
|
8
8
|
export declare const renderKnowledgePlanDefer: (_services: unknown, { ok, message }: KnowledgePlanDeferResult) => void;
|
|
9
|
+
/**
|
|
10
|
+
* What to do next, and — when only a person can settle it — the question to put to
|
|
11
|
+
* them.
|
|
12
|
+
*
|
|
13
|
+
* The action's `reason` is machine wording that names the note and the frontmatter
|
|
14
|
+
* key; on `ask-user` it is deliberately NOT what gets printed as the question, because
|
|
15
|
+
* the reader there has never seen a note. The options are numbered rather than
|
|
16
|
+
* rendered as a picker: this is the fallback every harness has, and one that can do
|
|
17
|
+
* better reads the same answer as JSON.
|
|
18
|
+
*/
|
|
19
|
+
export declare const renderKnowledgeReconcile: (_services: unknown, { kind, reason, note, hold, notes, question }: KnowledgeReconcileResult) => void;
|
|
@@ -138,3 +138,51 @@ export const renderKnowledgePlanDefer = (_services, { ok, message }) => {
|
|
|
138
138
|
if (!ok)
|
|
139
139
|
process.exitCode = 1;
|
|
140
140
|
};
|
|
141
|
+
/**
|
|
142
|
+
* What to do next, and — when only a person can settle it — the question to put to
|
|
143
|
+
* them.
|
|
144
|
+
*
|
|
145
|
+
* The action's `reason` is machine wording that names the note and the frontmatter
|
|
146
|
+
* key; on `ask-user` it is deliberately NOT what gets printed as the question, because
|
|
147
|
+
* the reader there has never seen a note. The options are numbered rather than
|
|
148
|
+
* rendered as a picker: this is the fallback every harness has, and one that can do
|
|
149
|
+
* better reads the same answer as JSON.
|
|
150
|
+
*/
|
|
151
|
+
export const renderKnowledgeReconcile = (_services, { kind, reason, note, hold, notes, question }) => {
|
|
152
|
+
if (kind === 'idle') {
|
|
153
|
+
console.log(`${dim('=')} ${dim(reason)}`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const label = {
|
|
157
|
+
'repair-note': 'REPAIR',
|
|
158
|
+
'write-plan': 'PLAN',
|
|
159
|
+
'ask-user': 'ASK',
|
|
160
|
+
dispatch: 'BUILD',
|
|
161
|
+
hold: 'HELD',
|
|
162
|
+
};
|
|
163
|
+
const paint = kind === 'dispatch' ? added : kind === 'hold' ? dim : changed;
|
|
164
|
+
console.log(`${paint(label[kind] ?? kind.toUpperCase())} ${note ?? ''}`.trim());
|
|
165
|
+
console.log();
|
|
166
|
+
if (question) {
|
|
167
|
+
console.log(`${dim(question.header)}`);
|
|
168
|
+
console.log(question.question);
|
|
169
|
+
question.options.forEach((option, index) => {
|
|
170
|
+
const description = option.description
|
|
171
|
+
? ` ${dim(option.description)}`
|
|
172
|
+
: '';
|
|
173
|
+
console.log(` ${index + 1}. ${option.label}${description}`);
|
|
174
|
+
});
|
|
175
|
+
if (question.options.length === 0)
|
|
176
|
+
console.log(dim(' (free text)'));
|
|
177
|
+
console.log();
|
|
178
|
+
console.log(`${dim('why:')} ${dim(reason)}`);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
console.log(reason);
|
|
182
|
+
if (hold) {
|
|
183
|
+
console.log();
|
|
184
|
+
console.log(`${dim('held on:')} ${hold}`);
|
|
185
|
+
for (const path of notes ?? [])
|
|
186
|
+
console.log(` ${dim(path)}`);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
@@ -94,3 +94,26 @@ export declare const KnowledgePlanDeferOutputSchema: import("zod").ZodObject<{
|
|
|
94
94
|
path: import("zod").ZodString;
|
|
95
95
|
message: import("zod").ZodString;
|
|
96
96
|
}, import("zod/v4/core").$strip>;
|
|
97
|
+
export declare const KnowledgeReconcileInputSchema: import("zod").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
98
|
+
export declare const KnowledgeReconcileOutputSchema: import("zod").ZodObject<{
|
|
99
|
+
kind: import("zod").ZodEnum<{
|
|
100
|
+
idle: "idle";
|
|
101
|
+
"repair-note": "repair-note";
|
|
102
|
+
"write-plan": "write-plan";
|
|
103
|
+
"ask-user": "ask-user";
|
|
104
|
+
dispatch: "dispatch";
|
|
105
|
+
hold: "hold";
|
|
106
|
+
}>;
|
|
107
|
+
reason: import("zod").ZodString;
|
|
108
|
+
note: import("zod").ZodOptional<import("zod").ZodString>;
|
|
109
|
+
hold: import("zod").ZodOptional<import("zod").ZodString>;
|
|
110
|
+
notes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
111
|
+
question: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
112
|
+
header: import("zod").ZodString;
|
|
113
|
+
question: import("zod").ZodString;
|
|
114
|
+
options: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
|
|
115
|
+
label: import("zod").ZodString;
|
|
116
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
117
|
+
}, import("zod/v4/core").$strip>>>;
|
|
118
|
+
}, import("zod/v4/core").$strip>>;
|
|
119
|
+
}, import("zod/v4/core").$strip>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KnowledgeIndexInput, KnowledgeIndexOutput, KnowledgePlanDeferInput, KnowledgePlanDeferOutput, KnowledgePlanProgressInput, KnowledgePlanProgressOutput, KnowledgePlanSchemaInput, KnowledgePlanSchemaOutput, KnowledgePlanSetInput, KnowledgePlanSetOutput, KnowledgePlanShowInput, KnowledgePlanShowOutput, KnowledgeValidateInput, KnowledgeValidateOutput, } from '@pikku/knowledge';
|
|
1
|
+
import { KnowledgeIndexInput, KnowledgeIndexOutput, KnowledgePlanDeferInput, KnowledgePlanDeferOutput, KnowledgePlanProgressInput, KnowledgePlanProgressOutput, KnowledgePlanSchemaInput, KnowledgePlanSchemaOutput, KnowledgePlanSetInput, KnowledgePlanSetOutput, KnowledgePlanShowInput, KnowledgePlanShowOutput, KnowledgeReconcileInput, KnowledgeReconcileOutput, 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.
|
|
@@ -33,3 +33,5 @@ export const KnowledgePlanSetInputSchema = KnowledgePlanSetInput;
|
|
|
33
33
|
export const KnowledgePlanSetOutputSchema = KnowledgePlanSetOutput;
|
|
34
34
|
export const KnowledgePlanDeferInputSchema = KnowledgePlanDeferInput;
|
|
35
35
|
export const KnowledgePlanDeferOutputSchema = KnowledgePlanDeferOutput;
|
|
36
|
+
export const KnowledgeReconcileInputSchema = KnowledgeReconcileInput;
|
|
37
|
+
export const KnowledgeReconcileOutputSchema = KnowledgeReconcileOutput;
|
|
@@ -2,7 +2,7 @@ import { pikkuSessionlessFunc } from '#pikku/function';
|
|
|
2
2
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
3
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
4
4
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
5
|
-
import {
|
|
5
|
+
import { writeWiringMeta } from '../../../utils/write-wiring-meta.js';
|
|
6
6
|
import { serializeAgentMap } from './serialize-agent-map.js';
|
|
7
7
|
import { serializeModelAliases } from './serialize-model-aliases.js';
|
|
8
8
|
export const pikkuAgent = pikkuSessionlessFunc({
|
|
@@ -38,21 +38,18 @@ export const pikkuAgent = pikkuSessionlessFunc({
|
|
|
38
38
|
const metaData = {
|
|
39
39
|
agentsMeta: agents.agentsMeta,
|
|
40
40
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const importStatement = supportsImportAttributes
|
|
50
|
-
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
51
|
-
: `import metaData from '${jsonImportPath}'`;
|
|
52
|
-
await writeFileInDir(logger, agentWiringMetaFile, `import { pikkuState } from '@pikku/core/state'
|
|
41
|
+
await writeWiringMeta({
|
|
42
|
+
logger,
|
|
43
|
+
meta: metaData,
|
|
44
|
+
metaJsonFile: agentWiringMetaJsonFile,
|
|
45
|
+
metaFile: agentWiringMetaFile,
|
|
46
|
+
packageMappings,
|
|
47
|
+
supportsImportAttributes: schema?.supportsImportAttributes ?? false,
|
|
48
|
+
serializeMetaTS: ({ importStatement }) => `import { pikkuState } from '@pikku/core/state'
|
|
53
49
|
import type { AgentsMeta } from '@pikku/core/agent'
|
|
54
50
|
${importStatement}
|
|
55
|
-
pikkuState(${addonName ? `'${addonName}'` : 'null'}, 'agent', 'agentsMeta', metaData.agentsMeta as AgentsMeta)
|
|
51
|
+
pikkuState(${addonName ? `'${addonName}'` : 'null'}, 'agent', 'agentsMeta', metaData.agentsMeta as AgentsMeta)`,
|
|
52
|
+
});
|
|
56
53
|
await writeFileInDir(logger, agentMapDeclarationFile, serializeAgentMap(logger, agentMapDeclarationFile, packageMappings, functions.typesMap, agents.agentsMeta));
|
|
57
54
|
return true;
|
|
58
55
|
},
|
|
@@ -3,7 +3,7 @@ import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
|
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
5
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
6
|
-
import {
|
|
6
|
+
import { writeWiringMeta } from '../../../utils/write-wiring-meta.js';
|
|
7
7
|
export const pikkuCommandChannels = pikkuSessionlessFunc({
|
|
8
8
|
func: async ({ logger, config, getInspectorState }) => {
|
|
9
9
|
const visitState = await getInspectorState();
|
|
@@ -21,12 +21,6 @@ export const pikkuCommandChannels = pikkuSessionlessFunc({
|
|
|
21
21
|
// (channels.files is empty). Skipping either leaves the bootstrap importing
|
|
22
22
|
// a file that was never generated and the per-unit deploy bundle fails.
|
|
23
23
|
await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
|
|
24
|
-
const minimalMeta = stripVerboseFields(channels.meta);
|
|
25
|
-
await writeFileInDir(logger, channelsWiringMetaJsonFile, JSON.stringify(minimalMeta, null, 2));
|
|
26
|
-
if (hasVerboseFields(channels.meta)) {
|
|
27
|
-
const verbosePath = channelsWiringMetaJsonFile.replace(/\.gen\.json$/, '-verbose.gen.json');
|
|
28
|
-
await writeFileInDir(logger, verbosePath, JSON.stringify(channels.meta, null, 2));
|
|
29
|
-
}
|
|
30
24
|
await writeFileInDir(logger, channelContractsMetaJsonFile, JSON.stringify(exportedContracts.channel, null, 2));
|
|
31
25
|
if (hasChannelContracts) {
|
|
32
26
|
const contractsJsonImportPath = getFileImportRelativePath(channelContractsMetaFile, channelContractsMetaJsonFile, packageMappings);
|
|
@@ -36,12 +30,15 @@ export const pikkuCommandChannels = pikkuSessionlessFunc({
|
|
|
36
30
|
: `import contractsMeta from '${contractsJsonImportPath}'`;
|
|
37
31
|
await writeFileInDir(logger, channelContractsMetaFile, `${contractsImportStatement}\nexport default contractsMeta`);
|
|
38
32
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
:
|
|
44
|
-
|
|
33
|
+
await writeWiringMeta({
|
|
34
|
+
logger,
|
|
35
|
+
meta: channels.meta,
|
|
36
|
+
metaJsonFile: channelsWiringMetaJsonFile,
|
|
37
|
+
metaFile: channelsWiringMetaFile,
|
|
38
|
+
packageMappings,
|
|
39
|
+
supportsImportAttributes: schema?.supportsImportAttributes ?? false,
|
|
40
|
+
serializeMetaTS: ({ importStatement }) => `import { pikkuState } from '@pikku/core/state'\nimport type { ChannelsMeta } from '@pikku/core/channel'\n${importStatement}\npikkuState(null, 'channel', 'meta', metaData as ChannelsMeta)`,
|
|
41
|
+
});
|
|
45
42
|
return true;
|
|
46
43
|
},
|
|
47
44
|
middleware: [
|
|
@@ -3,7 +3,7 @@ import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
|
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
5
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
6
|
-
import {
|
|
6
|
+
import { writeWiringMeta } from '../../../utils/write-wiring-meta.js';
|
|
7
7
|
export const pikkuCLI = pikkuSessionlessFunc({
|
|
8
8
|
func: async ({ logger, config, getInspectorState }) => {
|
|
9
9
|
const visitState = await getInspectorState();
|
|
@@ -21,12 +21,6 @@ export const pikkuCLI = pikkuSessionlessFunc({
|
|
|
21
21
|
// Skipping either leaves the bootstrap importing a file that was never
|
|
22
22
|
// generated and the per-unit deploy bundle fails.
|
|
23
23
|
await writeFileInDir(logger, cliWiringsFile, serializeFileImports('wireCLI', cliWiringsFile, cli.files, packageMappings));
|
|
24
|
-
const minimalMeta = stripVerboseFields(cli.meta);
|
|
25
|
-
await writeFileInDir(logger, cliWiringMetaJsonFile, JSON.stringify(minimalMeta, null, 2));
|
|
26
|
-
if (hasVerboseFields(cli.meta)) {
|
|
27
|
-
const verbosePath = cliWiringMetaJsonFile.replace(/\.gen\.json$/, '-verbose.gen.json');
|
|
28
|
-
await writeFileInDir(logger, verbosePath, JSON.stringify(cli.meta, null, 2));
|
|
29
|
-
}
|
|
30
24
|
await writeFileInDir(logger, cliContractsMetaJsonFile, JSON.stringify(exportedContracts.cli, null, 2));
|
|
31
25
|
if (hasCLIContracts) {
|
|
32
26
|
const contractsJsonImportPath = getFileImportRelativePath(cliContractsMetaFile, cliContractsMetaJsonFile, packageMappings);
|
|
@@ -36,12 +30,15 @@ export const pikkuCLI = pikkuSessionlessFunc({
|
|
|
36
30
|
: `import contractsMeta from '${contractsJsonImportPath}'`;
|
|
37
31
|
await writeFileInDir(logger, cliContractsMetaFile, `${contractsImportStatement}\nexport default contractsMeta`);
|
|
38
32
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
:
|
|
44
|
-
|
|
33
|
+
await writeWiringMeta({
|
|
34
|
+
logger,
|
|
35
|
+
meta: cli.meta,
|
|
36
|
+
metaJsonFile: cliWiringMetaJsonFile,
|
|
37
|
+
metaFile: cliWiringMetaFile,
|
|
38
|
+
packageMappings,
|
|
39
|
+
supportsImportAttributes: schema?.supportsImportAttributes ?? false,
|
|
40
|
+
serializeMetaTS: ({ importStatement }) => `import { pikkuState } from '@pikku/core/state'\nimport { CLIMeta } from '@pikku/core/cli'\n${importStatement}\npikkuState(null, 'cli', 'meta', metaData as CLIMeta)`,
|
|
41
|
+
});
|
|
45
42
|
return true;
|
|
46
43
|
},
|
|
47
44
|
middleware: [
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { pikkuSessionlessFunc } from '#pikku/function';
|
|
2
2
|
import { ErrorCode } from '@pikku/inspector';
|
|
3
|
-
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
3
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
4
|
import { readFile } from 'fs/promises';
|
|
6
5
|
import { join, isAbsolute } from 'path';
|
|
7
|
-
import {
|
|
6
|
+
import { writeMetaSidecar } from '../../../utils/write-wiring-meta.js';
|
|
8
7
|
import { validateAndBuildSecretDefinitionsMeta } from '@pikku/core/secret';
|
|
9
8
|
const loadIcon = async (iconPath, rootDir, logger) => {
|
|
10
9
|
if (!iconPath)
|
|
@@ -73,19 +72,12 @@ export const pikkuNodesMeta = pikkuSessionlessFunc({
|
|
|
73
72
|
metaData.requiredParentServices = state.addonRequiredParentServices;
|
|
74
73
|
}
|
|
75
74
|
if (addonMetaJsonFile && (config.scaffold?.console || config.addon)) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (verbosePath === addonMetaJsonFile) {
|
|
83
|
-
logger.warn(`Cannot derive verbose path from ${addonMetaJsonFile}, skipping verbose metadata`);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
await writeFileInDir(logger, verbosePath, JSON.stringify(metaData, null, 2), { ignoreModifyComment: true });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
75
|
+
await writeMetaSidecar({
|
|
76
|
+
logger,
|
|
77
|
+
meta: metaData,
|
|
78
|
+
metaJsonFile: addonMetaJsonFile,
|
|
79
|
+
ignoreModifyComment: true,
|
|
80
|
+
});
|
|
89
81
|
}
|
|
90
82
|
return true;
|
|
91
83
|
},
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { validateAndBuildCredentialDefinitionsMeta } from '@pikku/core/credential';
|
|
2
2
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
3
|
-
|
|
4
|
-
* A display name is the human-facing label a developer wrote, so an apostrophe
|
|
5
|
-
* in it is ordinary. `JSON.stringify` emits a valid, escaped TypeScript string
|
|
6
|
-
* literal; interpolating the raw text into a quoted one terminates the string
|
|
7
|
-
* and the generated file stops parsing.
|
|
8
|
-
*/
|
|
9
|
-
const literal = (value) => JSON.stringify(value);
|
|
3
|
+
import { tsLiteral } from '../../../utils/ts-literal.js';
|
|
10
4
|
export const serializeCredentialsTypes = ({ definitions, schemaLookup, credentialsFile, packageMappings, }) => {
|
|
11
5
|
const credentials = validateAndBuildCredentialDefinitionsMeta(definitions, schemaLookup);
|
|
12
6
|
const credentialEntries = Object.entries(credentials);
|
|
@@ -29,7 +23,7 @@ export const serializeCredentialsTypes = ({ definitions, schemaLookup, credentia
|
|
|
29
23
|
}
|
|
30
24
|
const metaParts = [
|
|
31
25
|
`name: '${name}'`,
|
|
32
|
-
`displayName: ${
|
|
26
|
+
`displayName: ${tsLiteral(meta.displayName)}`,
|
|
33
27
|
`type: '${meta.type}'`,
|
|
34
28
|
];
|
|
35
29
|
if (meta.oauth2) {
|
|
@@ -3,31 +3,32 @@ import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
|
3
3
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
4
4
|
import { serializeFunctionImports } from './serialize-function-imports.js';
|
|
5
5
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
6
|
-
import { stripVerboseFields,
|
|
6
|
+
import { stripVerboseFields, reattachFunctionServices, reattachAgentToolDescriptions, } from '../../../utils/strip-verbose-meta.js';
|
|
7
|
+
import { writeMetaSidecar, writeWiringMeta, } from '../../../utils/write-wiring-meta.js';
|
|
7
8
|
import { partitionScenarioFunctions, partitionScenarioFunctionsMeta, } from '../scenarios/scenario-partition.js';
|
|
8
9
|
import { serializeScenarioFunctionMeta } from '../scenarios/serialize-scenario-meta.js';
|
|
9
10
|
export const pikkuFunctions = pikkuSessionlessFunc({
|
|
10
11
|
func: async ({ logger, config, getInspectorState }) => {
|
|
11
|
-
const { functions, rpc } = await getInspectorState();
|
|
12
|
+
const { functions, rpc, agents } = await getInspectorState();
|
|
12
13
|
const { functionsMetaFile, functionsMetaJsonFile, functionsFile, scenarioStepsFile, scenarioStepsMetaFile, scenarioStepsMetaJsonFile, packageMappings, schema, } = config;
|
|
13
14
|
const { app: appFunctionsMeta, scenario: scenarioFunctionsMeta } = partitionScenarioFunctionsMeta(functions.meta);
|
|
14
15
|
let minimalMeta = stripVerboseFields(appFunctionsMeta);
|
|
15
16
|
if (config.addonName) {
|
|
16
17
|
minimalMeta = reattachFunctionServices(minimalMeta, appFunctionsMeta);
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
// Write verbose JSON only if it has additional fields
|
|
20
|
-
if (hasVerboseFields(appFunctionsMeta)) {
|
|
21
|
-
const verbosePath = functionsMetaJsonFile.replace(/\.gen\.json$/, '-verbose.gen.json');
|
|
22
|
-
await writeFileInDir(logger, verbosePath, JSON.stringify(appFunctionsMeta, null, 2));
|
|
23
|
-
}
|
|
24
|
-
const jsonImportPath = getFileImportRelativePath(functionsMetaFile, functionsMetaJsonFile, packageMappings);
|
|
25
|
-
const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
|
|
26
|
-
const importStatement = supportsImportAttributes
|
|
27
|
-
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
28
|
-
: `import metaData from '${jsonImportPath}'`;
|
|
19
|
+
minimalMeta = reattachAgentToolDescriptions(minimalMeta, appFunctionsMeta, new Set(Object.values(agents.agentsMeta).flatMap((agent) => agent.tools ?? [])));
|
|
29
20
|
const packageName = config.addonName ? `'${config.addonName}'` : 'null';
|
|
30
|
-
|
|
21
|
+
const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
|
|
22
|
+
await writeWiringMeta({
|
|
23
|
+
logger,
|
|
24
|
+
meta: appFunctionsMeta,
|
|
25
|
+
minimalMeta,
|
|
26
|
+
metaJsonFile: functionsMetaJsonFile,
|
|
27
|
+
metaFile: functionsMetaFile,
|
|
28
|
+
packageMappings,
|
|
29
|
+
supportsImportAttributes,
|
|
30
|
+
serializeMetaTS: ({ importStatement }) => `import { pikkuState } from '@pikku/core/state'\nimport type { FunctionsMeta } from '@pikku/core/services'\n${importStatement}\npikkuState(${packageName}, 'function', 'meta', metaData as FunctionsMeta)`,
|
|
31
|
+
});
|
|
31
32
|
// For addon packages, register ALL functions (they'll be invoked by consumers)
|
|
32
33
|
// For main packages, only register functions that are invoked via internal RPCs
|
|
33
34
|
const isAddon = !!config.addonName;
|
|
@@ -43,13 +44,15 @@ export const pikkuFunctions = pikkuSessionlessFunc({
|
|
|
43
44
|
// Always written, even when empty: a project that deletes its last scenario
|
|
44
45
|
// must stop registering the one it had, and the scenario bootstrap imports
|
|
45
46
|
// these unconditionally.
|
|
46
|
-
|
|
47
|
+
//
|
|
47
48
|
// The bootstrap imports the stripped copy; the verbose one is read off disk
|
|
48
49
|
// by whatever documents a scenario — the console needs `sourceFile` and
|
|
49
50
|
// `exportedName` to show the code a step runs.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
await writeMetaSidecar({
|
|
52
|
+
logger,
|
|
53
|
+
meta: scenarioFunctionsMeta,
|
|
54
|
+
metaJsonFile: scenarioStepsMetaJsonFile,
|
|
55
|
+
});
|
|
53
56
|
await writeFileInDir(logger, scenarioStepsMetaFile, serializeScenarioFunctionMeta(getFileImportRelativePath(scenarioStepsMetaFile, scenarioStepsMetaJsonFile, packageMappings), getFileImportRelativePath(scenarioStepsMetaFile, functionsMetaFile, packageMappings), supportsImportAttributes, config.addonName));
|
|
54
57
|
await writeFileInDir(logger, scenarioStepsFile, scenarioFiles.size === 0
|
|
55
58
|
? 'export {}'
|
|
@@ -2,8 +2,7 @@ import { pikkuSessionlessFunc } from '#pikku/function';
|
|
|
2
2
|
import { serializeFileImports } from '../../../utils/file-imports-serializer.js';
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
-
import {
|
|
6
|
-
import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
|
|
5
|
+
import { writeWiringMeta } from '../../../utils/write-wiring-meta.js';
|
|
7
6
|
import { serializeGatewayMeta, serializeGatewayMetaTS, } from './serialize-gateway-meta.js';
|
|
8
7
|
export const pikkuGateway = pikkuSessionlessFunc({
|
|
9
8
|
func: async ({ logger, config, getInspectorState }) => {
|
|
@@ -14,14 +13,16 @@ export const pikkuGateway = pikkuSessionlessFunc({
|
|
|
14
13
|
return undefined;
|
|
15
14
|
}
|
|
16
15
|
const fullMeta = serializeGatewayMeta(gateways.meta);
|
|
17
|
-
const
|
|
18
|
-
await
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
|
|
17
|
+
await writeWiringMeta({
|
|
18
|
+
logger,
|
|
19
|
+
meta: fullMeta,
|
|
20
|
+
metaJsonFile: gatewaysWiringMetaJsonFile,
|
|
21
|
+
metaFile: gatewaysWiringMetaFile,
|
|
22
|
+
packageMappings,
|
|
23
|
+
supportsImportAttributes,
|
|
24
|
+
serializeMetaTS: ({ jsonImportPath }) => serializeGatewayMetaTS(jsonImportPath, supportsImportAttributes),
|
|
25
|
+
});
|
|
25
26
|
await writeFileInDir(logger, gatewaysWiringFile, serializeFileImports('wireGateway', gatewaysWiringFile, gateways.files, packageMappings));
|
|
26
27
|
return true;
|
|
27
28
|
},
|