@pikku/cli 0.12.119 → 0.12.121
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 +225 -0
- package/console-app/assets/{abnfDiagram-N423BO3Z-CiK5F2ml.js → abnfDiagram-N423BO3Z-Dfq94a7u.js} +1 -1
- package/console-app/assets/architecture-TIHT7OUA-CA-Di-O3.js +1 -0
- package/console-app/assets/{architectureDiagram-T3A2C74G-g4Elcs_0.js → architectureDiagram-T3A2C74G-C9MjP0IU.js} +1 -1
- package/console-app/assets/{blockDiagram-VBNYF7ZC-CI6muc3M.js → blockDiagram-VBNYF7ZC-CGgHSlOO.js} +1 -1
- package/console-app/assets/{c4Diagram-5PPSVZJV-CjzL9yGp.js → c4Diagram-5PPSVZJV-3kzckivq.js} +1 -1
- package/console-app/assets/channel-UOxM22B3.js +1 -0
- package/console-app/assets/{chunk-2GRJ4B5K-C68TKOLb.js → chunk-2GRJ4B5K-UZ1q29J_.js} +1 -1
- package/console-app/assets/{chunk-4I5QYGJK-D_DINIPO.js → chunk-4I5QYGJK-bq4iSS6S.js} +1 -1
- package/console-app/assets/{chunk-5RXB4S5H-D8mEuiea.js → chunk-5RXB4S5H-BCeU8nXq.js} +1 -1
- package/console-app/assets/{chunk-6Q2QTUOP-CVNqLnb8.js → chunk-6Q2QTUOP-DpsTVhit.js} +1 -1
- package/console-app/assets/{chunk-7Z6QIM7H-Bnih6HyS.js → chunk-7Z6QIM7H-I6XKkv2A.js} +1 -1
- package/console-app/assets/{chunk-GF5L2VYU-C5efrbFt.js → chunk-GF5L2VYU-aYODFCZ6.js} +1 -1
- package/console-app/assets/{chunk-I66GZJ75-dckv50K3.js → chunk-I66GZJ75-CWdPrY4a.js} +1 -1
- package/console-app/assets/{chunk-JQJVKLGR-HirBo6LQ.js → chunk-JQJVKLGR-D5bHP4bt.js} +1 -1
- package/console-app/assets/{chunk-KBJHAD2P-lknhmPj0.js → chunk-KBJHAD2P-B-Spac9o.js} +1 -1
- package/console-app/assets/{chunk-NSK5VX7P-tGAl7zxF.js → chunk-NSK5VX7P-0jZVLBhi.js} +1 -1
- package/console-app/assets/{chunk-QR6OTTB3-BlSKCrEq.js → chunk-QR6OTTB3-BurXFOtV.js} +1 -1
- package/console-app/assets/{chunk-RYQCIY6F-CwQmwEV-.js → chunk-RYQCIY6F-C4zacxhH.js} +1 -1
- package/console-app/assets/{chunk-UBXNYLIW-D1Dn6ZK0.js → chunk-UBXNYLIW-7RthekQ-.js} +1 -1
- package/console-app/assets/{chunk-W5SLKNZC-DOkZHhST.js → chunk-W5SLKNZC-rq3UcMTy.js} +1 -1
- package/console-app/assets/{chunk-WRU74C26-CB4orIKm.js → chunk-WRU74C26-DUX-oZjQ.js} +1 -1
- package/console-app/assets/chunk-XXDRQBXY-gIL1rRSY.js +1 -0
- package/console-app/assets/classDiagram-JCYQIIEL-BwV1w5At.js +1 -0
- package/console-app/assets/classDiagram-v2-OCEON4UE-BwV1w5At.js +1 -0
- package/console-app/assets/{cose-bilkent-JH36ORCC-stBhaqpU.js → cose-bilkent-JH36ORCC-DZn35HFs.js} +1 -1
- package/console-app/assets/{cynefin-VYW2F7L2-Bb1nmKWZ.js → cynefin-VYW2F7L2-mZlOMKNi.js} +1 -1
- package/console-app/assets/{cynefinDiagram-MW4NZA55-Bp8fMJi-.js → cynefinDiagram-MW4NZA55-uUAfUoag.js} +1 -1
- package/console-app/assets/{dagre-DshmzimC.js → dagre-DfTmIhGN.js} +1 -1
- package/console-app/assets/{dagre-VZM6K2ZE-DIl1klf5.js → dagre-VZM6K2ZE-7oTddCss.js} +1 -1
- package/console-app/assets/{diagram-7IWD3JNH-DdkSOxKT.js → diagram-7IWD3JNH-D6TR4TlN.js} +1 -1
- package/console-app/assets/{diagram-B4RE2ZJO-9Dj9O4L8.js → diagram-B4RE2ZJO-BZwUFLzC.js} +1 -1
- package/console-app/assets/{diagram-LBJQPF4R-CxBb73tU.js → diagram-LBJQPF4R-B4Ug2xRo.js} +1 -1
- package/console-app/assets/{diagram-Q27KOJAE-CPpUmnvb.js → diagram-Q27KOJAE-Fpr_Cahs.js} +1 -1
- package/console-app/assets/{diagram-UB23O5K3-7wV_Db6W.js → diagram-UB23O5K3-d0X7PA-5.js} +1 -1
- package/console-app/assets/{ebnfDiagram-BXEA7PRR-Cxzbf8pk.js → ebnfDiagram-BXEA7PRR-DExP954c.js} +1 -1
- package/console-app/assets/{erDiagram-JOGREHBK-BBPLq83P.js → erDiagram-JOGREHBK-WdnXmG8f.js} +1 -1
- package/console-app/assets/eventmodeling-45OFAUF4-DXnDrAdV.js +1 -0
- package/console-app/assets/flowDiagram-UKHOOZJN-UixAvy5Z.js +1 -0
- package/console-app/assets/{ganttDiagram-PKOTCBZU-Erh7WK4H.js → ganttDiagram-PKOTCBZU-ADJHCyvl.js} +1 -1
- package/console-app/assets/{gitGraph-TEB2WS4Q-o5FLRF57.js → gitGraph-TEB2WS4Q-BPcXt1vK.js} +1 -1
- package/console-app/assets/{gitGraphDiagram-DS77QQ5N-BFbsaenX.js → gitGraphDiagram-DS77QQ5N-DFhenfUX.js} +1 -1
- package/console-app/assets/{index-w2ZoJr8X.js → index-BwP6EcJr.js} +184 -184
- package/console-app/assets/{info-DKCQHKI2-Dkcrdr1w.js → info-DKCQHKI2-BsE7egna.js} +1 -1
- package/console-app/assets/{infoDiagram-6WML65LV-iZVC5Wzy.js → infoDiagram-6WML65LV-BmVqXMw0.js} +1 -1
- package/console-app/assets/{ishikawaDiagram-WSZJBQD7-BjV8LLeA.js → ishikawaDiagram-WSZJBQD7-CdFTPIY5.js} +1 -1
- package/console-app/assets/{journeyDiagram-NVQOT4AX-D3rpLjYi.js → journeyDiagram-NVQOT4AX-DC8CKdJk.js} +1 -1
- package/console-app/assets/{kanban-definition-27J2QSJJ-Dds5TFyv.js → kanban-definition-27J2QSJJ-Bo7kRcLN.js} +1 -1
- package/console-app/assets/{line-D1rUAT18.js → line-5nUqh22u.js} +1 -1
- package/console-app/assets/{linear-fQ_6Sc79.js → linear-82KoPtTH.js} +1 -1
- package/console-app/assets/{mermaid-parser.core-B9Q-4IXF.js → mermaid-parser.core-R240ylPw.js} +3 -3
- package/console-app/assets/{mermaid.core-bPhADShw.js → mermaid.core-BZ3jSM6D.js} +4 -4
- package/console-app/assets/{mindmap-definition-FAOFIHXS-CULlU6Fy.js → mindmap-definition-FAOFIHXS-x1K54VeO.js} +1 -1
- package/console-app/assets/{packet-7NZHBO7P-DpwzoQpc.js → packet-7NZHBO7P-CE2Lun0t.js} +1 -1
- package/console-app/assets/{pegDiagram-VL7TDLO6-B9fKKc4F.js → pegDiagram-VL7TDLO6-CpGZYdUz.js} +1 -1
- package/console-app/assets/{pie-RZYD4A2V-DkXpqWAI.js → pie-RZYD4A2V-Hf5MOyY8.js} +1 -1
- package/console-app/assets/{pieDiagram-7S7Q4E2Y-Bcpn2rUM.js → pieDiagram-7S7Q4E2Y-0J5H7r7g.js} +1 -1
- package/console-app/assets/{quadrantDiagram-CIZ2JOQS-Bd5wWFj_.js → quadrantDiagram-CIZ2JOQS-DWtYi8O-.js} +1 -1
- package/console-app/assets/{radar-I7S5WNFK-ylw-u3HI.js → radar-I7S5WNFK-BgtvrX4w.js} +1 -1
- package/console-app/assets/{railroad-3IZDKUUU-D4LMucL-.js → railroad-3IZDKUUU-CeR0NhLL.js} +1 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-BEVU16-y.js +1 -0
- package/console-app/assets/railroad-ebnf-EBAXGLYW-WT4rrGXf.js +1 -0
- package/console-app/assets/railroad-peg-LSFZ7HO6-BnObCMjn.js +1 -0
- package/console-app/assets/{railroadDiagram-AXF67PYL-CZukQql9.js → railroadDiagram-AXF67PYL-CUIn_gPf.js} +1 -1
- package/console-app/assets/{requirementDiagram-LRYGKXZP-Ou4nRENK.js → requirementDiagram-LRYGKXZP-Ds9Aqcts.js} +1 -1
- package/console-app/assets/{sankeyDiagram-W5VNT64P-BKdG-c_o.js → sankeyDiagram-W5VNT64P-CKhuya4d.js} +1 -1
- package/console-app/assets/{sequenceDiagram-SI44F4Z6-Dc7d5obe.js → sequenceDiagram-SI44F4Z6-DKgOmdzz.js} +1 -1
- package/console-app/assets/{src-BFb2oeKx.js → src-DwHVY--Z.js} +1 -1
- package/console-app/assets/{stateDiagram-OKZ733FA-BA9fuN7b.js → stateDiagram-OKZ733FA-CPIfaZie.js} +1 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-DHcCmJ1C.js +1 -0
- package/console-app/assets/{swimlanes-SLNWSIFB-l-ETgM83.js → swimlanes-SLNWSIFB-8q3lK4RS.js} +1 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-B1uT0NiL.js +8 -0
- package/console-app/assets/{timeline-definition-Z64GVDOM-Uj_ByeVr.js → timeline-definition-Z64GVDOM-CHHi2Rpq.js} +1 -1
- package/console-app/assets/{treeView-QDETBFTQ-BvFRkVGY.js → treeView-QDETBFTQ-DrLHlsII.js} +1 -1
- package/console-app/assets/{treemap-6X3UGDF4-BV5T7Dw9.js → treemap-6X3UGDF4-C3saYKuK.js} +1 -1
- package/console-app/assets/{vennDiagram-T6HMQDX7-DAFU8gAo.js → vennDiagram-T6HMQDX7-CdyzNiAu.js} +1 -1
- package/console-app/assets/{wardley-OPB4EBWU-MLNuhuiA.js → wardley-OPB4EBWU-BSrymyse.js} +1 -1
- package/console-app/assets/{wardleyDiagram-T6FBY63Y-B1lCTfi1.js → wardleyDiagram-T6FBY63Y-CCW6rhEo.js} +1 -1
- package/console-app/assets/{xychartDiagram-ELKLHX3M-Bw3zhuWc.js → xychartDiagram-ELKLHX3M-BQvPaxzg.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 +1 -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-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.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 +1 -1
- 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/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 +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/fabric/functions/validate.function.js +22 -2
- package/dist/src/functions/wirings/agent/serialize-public-agent.js +7 -19
- package/dist/src/functions/wirings/console/serialize-console-functions.js +3 -12
- package/dist/src/functions/wirings/emails/serialize-emails.d.ts +10 -0
- package/dist/src/functions/wirings/emails/serialize-emails.js +30 -173
- package/dist/src/functions/wirings/virtual-user/serialize-virtual-user-functions.js +171 -405
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +7 -7
- package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +11 -148
- package/dist/src/utils/pikku-cli-config.d.ts +18 -0
- package/dist/src/utils/pikku-cli-config.js +39 -0
- package/package.json +6 -6
- package/surface.json +2 -2
- package/console-app/assets/architecture-TIHT7OUA-FMO1RByN.js +0 -1
- package/console-app/assets/channel-Dp8A5NJg.js +0 -1
- package/console-app/assets/chunk-XXDRQBXY-BMybY6E-.js +0 -1
- package/console-app/assets/classDiagram-JCYQIIEL-C-K-UAUR.js +0 -1
- package/console-app/assets/classDiagram-v2-OCEON4UE-C-K-UAUR.js +0 -1
- package/console-app/assets/eventmodeling-45OFAUF4-CLUnygIv.js +0 -1
- package/console-app/assets/flowDiagram-UKHOOZJN-D3mDcWWx.js +0 -1
- package/console-app/assets/railroad-abnf-AHOZXSZD-CRTVzK1g.js +0 -1
- package/console-app/assets/railroad-ebnf-EBAXGLYW-CB13ugAF.js +0 -1
- package/console-app/assets/railroad-peg-LSFZ7HO6-AN8zyQYp.js +0 -1
- package/console-app/assets/stateDiagram-v2-UEYNNEHI-D13a6mUd.js +0 -1
- package/console-app/assets/swimlanesDiagram-ULZ7WXOC-BsC-B2Z9.js +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,228 @@
|
|
|
1
|
+
## 0.12.121
|
|
2
|
+
|
|
3
|
+
### Patch Changes
|
|
4
|
+
|
|
5
|
+
- 30e390b: `pikku.config.json` takes a `locale`, naming the language the project's meta is
|
|
6
|
+
written in.
|
|
7
|
+
|
|
8
|
+
Meta is the human-readable prose authored inside the code rather than in a
|
|
9
|
+
message catalogue: `description` on functions and steps, `name`/`title` on
|
|
10
|
+
features and scenarios, step `template` strings, role and persona descriptions.
|
|
11
|
+
It is also the one part of a project the Pikku Console renders back to a human,
|
|
12
|
+
which is what the field is for — a team whose working language is German should
|
|
13
|
+
be able to read their own Console in German without anything else about the
|
|
14
|
+
project changing.
|
|
15
|
+
|
|
16
|
+
This release is the groundwork: the field is read, validated and canonicalized,
|
|
17
|
+
and the skills explain which of a project's three languages it is. Nothing
|
|
18
|
+
consumes it yet, so setting it does not change what the Console renders — that
|
|
19
|
+
comes with the reader.
|
|
20
|
+
|
|
21
|
+
It defaults to `en`, is validated as a BCP-47 tag through
|
|
22
|
+
`Intl.getCanonicalLocales` (so `de_DE` fails at the line that is wrong rather
|
|
23
|
+
than degrading to "some language" three layers down), and comes back
|
|
24
|
+
canonicalized so `EN-gb` and `en-GB` are one value downstream.
|
|
25
|
+
|
|
26
|
+
Two things it deliberately does not do, because collapsing them is the bug this
|
|
27
|
+
came from. It never renames anything — identifiers, files, database tables and
|
|
28
|
+
columns stay English whatever it says. And it is not the product's UI language:
|
|
29
|
+
what the app says to its users lives in `messages/<locale>.json`, with
|
|
30
|
+
`active.json`'s `defaultLocale` deciding what a first-time visitor is served,
|
|
31
|
+
while `baseLocale` names the message source and stays `en`.
|
|
32
|
+
|
|
33
|
+
- b5e79c1: Resolve `Config`, `SingletonServices` and `Services` by declaration rather than
|
|
34
|
+
by name.
|
|
35
|
+
|
|
36
|
+
Service extraction read `typesLookup` under the hardcoded names the scaffold
|
|
37
|
+
happens to use, but the lookup is keyed by whatever the project named its
|
|
38
|
+
interface. A project that renamed one satisfied every required-type check and
|
|
39
|
+
then resolved to no services at all, surfacing much later as PKU724 or as every
|
|
40
|
+
singleton service turning optional. These now go through the import maps, which
|
|
41
|
+
carry the real name.
|
|
42
|
+
|
|
43
|
+
`pikku workflow` carried the same lookup as its fallback when aggregation came
|
|
44
|
+
back empty, so a project with a renamed interface was told
|
|
45
|
+
`WORKFLOW_ORCHESTRATOR_NOT_CONFIGURED` while holding a perfectly good
|
|
46
|
+
`workflowService`.
|
|
47
|
+
|
|
48
|
+
- 30e390b: `pikku fabric validate` warns when an app's `baseLocale` is not `en`.
|
|
49
|
+
|
|
50
|
+
`baseLocale` names the message source, not the language the app is served in,
|
|
51
|
+
and pointing it at the product's language looks like it works — the app does
|
|
52
|
+
come up in that language. What it actually does is leave the project without an
|
|
53
|
+
English catalogue to add a second language from, permanently, because repointing
|
|
54
|
+
it later re-authors every key.
|
|
55
|
+
|
|
56
|
+
New finding `app-base-locale-not-english-<app>` (warn) says so and names the
|
|
57
|
+
setting that was wanted instead: `baseLocale: "en"` with the language in
|
|
58
|
+
`locales`, and `defaultLocale` in `active.json` deciding what a first-time
|
|
59
|
+
visitor opens in. Where the app is already keyed in the other language the hint
|
|
60
|
+
adds that this is a re-key rather than a rename, since that is the part someone
|
|
61
|
+
otherwise discovers halfway through.
|
|
62
|
+
|
|
63
|
+
- 2a02288: Let a virtual user run against a deployed stage.
|
|
64
|
+
|
|
65
|
+
Until now the scaffolded run could only sign its personas in with
|
|
66
|
+
`SCENARIO_ACTOR_SECRET`, which only `pikku dev` serves — so a run against a
|
|
67
|
+
deployed target failed before its first turn. `runVirtualUser` now takes an
|
|
68
|
+
optional short-lived Fabric operator token, handed in by whoever starts the run
|
|
69
|
+
and passed through to `createPersonas` as `operator`.
|
|
70
|
+
|
|
71
|
+
Handed in rather than fetched on demand: a stage that could ask for a token
|
|
72
|
+
would be holding a credential able to mint admin sessions for itself for as long
|
|
73
|
+
as the box lives. It holds one receipt, for one run, and the receipt expires. It
|
|
74
|
+
is never written to the run record — only `FABRIC_OPERATOR_TOKEN` in the
|
|
75
|
+
environment is read, and only as the fallback for a run nobody handed a token to.
|
|
76
|
+
|
|
77
|
+
`HttpPersonasConfig.signInPath` now applies to the operator path too, so an app
|
|
78
|
+
that mounts auth under `/api` can say so once.
|
|
79
|
+
|
|
80
|
+
The framework's own virtual-user RPCs no longer enter a virtual user's
|
|
81
|
+
catalogue. A persona whose role carries `virtualUser:*` could otherwise start
|
|
82
|
+
further runs, read back every run's transcript — an adversarial run's steps are
|
|
83
|
+
working exploits against the same app — and put a persona on a schedule that
|
|
84
|
+
outlives it.
|
|
85
|
+
|
|
86
|
+
The scheduled tick now runs as the platform user, and starts its runs through
|
|
87
|
+
the same door a person uses.
|
|
88
|
+
|
|
89
|
+
The scaffolded `startVirtualUserRun` RPC is gone — not the `startVirtualUserRun`
|
|
90
|
+
helper `@pikku/core/virtual-user` now exports, which is the shared record-writer
|
|
91
|
+
`runVirtualUser` calls. The RPC existed only so the tick could record a run
|
|
92
|
+
without holding a session, which meant the persona checks, the
|
|
93
|
+
production-disposition rule and the record lived in two places that would
|
|
94
|
+
eventually disagree. The tick calls `runVirtualUser` over RPC instead, and the
|
|
95
|
+
scaffold emits `virtualUserPlatformSession` to give it an identity:
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
wireScheduler({
|
|
99
|
+
name: 'virtualUsers',
|
|
100
|
+
schedule: '0 * * * *',
|
|
101
|
+
middleware: [virtualUserPlatformSession],
|
|
102
|
+
func: tickVirtualUserSchedules,
|
|
103
|
+
})
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
`pikku-platform` is the platform's own principal and already exists for exactly
|
|
107
|
+
this — a reserved user row created with no credential account of any kind, so no
|
|
108
|
+
sign-in method can resolve it, and one the user directory already filters out, so
|
|
109
|
+
unlike a seeded service account it costs no phantom member in any list, seat
|
|
110
|
+
count or bill.
|
|
111
|
+
|
|
112
|
+
The middleware is attached to the task rather than declared as tag middleware
|
|
113
|
+
over `/rpc`, which cannot set a session at all: `runScheduledTask` builds its
|
|
114
|
+
wire with a `sessionService`, so the session set here is the one the function is
|
|
115
|
+
frozen with. A tick wired without it is refused for want of a session, and one
|
|
116
|
+
carrying the wrong scope is refused on `virtualUser:run` — both now covered by
|
|
117
|
+
tests.
|
|
118
|
+
|
|
119
|
+
A Fabric operator can now actually start the run it signs in to start.
|
|
120
|
+
|
|
121
|
+
`fabric()` granted its operator row `admin` and nothing else. `admin` is this
|
|
122
|
+
package's own root — pikku's parent-grant rule walks down from a root that is
|
|
123
|
+
held, and the virtual-user scaffold declares `virtualUser` as a root of its own
|
|
124
|
+
precisely so a role can carry `virtualUser:run` without also implying
|
|
125
|
+
administration. So the operator was refused by `runVirtualUser`, the one
|
|
126
|
+
function the operator sign-in exists to reach.
|
|
127
|
+
|
|
128
|
+
The operator is now granted the roots in `OPERATOR_SCOPE_ROOTS`
|
|
129
|
+
(`admin`, `virtualUser`) rather than a bare `admin`. Listed rather than
|
|
130
|
+
collapsed to `*`, which would make every operator a superuser on every app for
|
|
131
|
+
the sake of one function: an operator still holds nothing in the application's
|
|
132
|
+
own domain, and a root the app never declared is skipped rather than stored.
|
|
133
|
+
|
|
134
|
+
The grant is also re-checked on every operator sign-in instead of only when the
|
|
135
|
+
row is created. It is deliberately logged rather than thrown, so a single
|
|
136
|
+
failure used to leave that operator permanently unprivileged with nothing to
|
|
137
|
+
retry it, and a root added to the set later would never have reached the
|
|
138
|
+
operators that already existed.
|
|
139
|
+
|
|
140
|
+
The scaffolds no longer keep their logic inside the CLI's template strings.
|
|
141
|
+
|
|
142
|
+
Code written as text inside a template literal is never compiled, never linted,
|
|
143
|
+
and testable only by matching the source the CLI emits — so a dead branch or a
|
|
144
|
+
duplicated loop survives there indefinitely. Five scaffolds were carrying real
|
|
145
|
+
logic that way, and it now lives in `@pikku/core` alongside the types it uses,
|
|
146
|
+
leaving each serializer to emit only what is genuinely per-application.
|
|
147
|
+
|
|
148
|
+
- **virtual-user** — 677 lines: the run driver, the persona and disposition
|
|
149
|
+
rules, the schedule writer and the serializers, now
|
|
150
|
+
`@pikku/core/virtual-user`. The guarantee that an operator token never
|
|
151
|
+
reaches the run record used to be a regex over emitted text; it is now
|
|
152
|
+
structural, because `startVirtualUserRun` has no parameter to pass one to.
|
|
153
|
+
- **workflow** — the two status streams were an ~80-line poll loop each,
|
|
154
|
+
identical apart from three fields, now one `streamWorkflowRunStatus` told
|
|
155
|
+
whether to be detailed. Fixes three latent bugs both copies shared: a
|
|
156
|
+
`setInterval(async …)` whose poll threw produced an unhandled rejection; a
|
|
157
|
+
poll that threw left the channel open rather than ending the stream; and the
|
|
158
|
+
interval fired whether or not the previous poll had returned, so a slow store
|
|
159
|
+
put two polls in flight and sent the init frame twice.
|
|
160
|
+
- **emails** — ~190 lines of HTML escaping, trusted-root allowlist and
|
|
161
|
+
single-pass substitution, now `renderEmail` in `@pikku/core/services`. This
|
|
162
|
+
was the security-sensitive one, and compiling it surfaced a bug the template
|
|
163
|
+
string had been hiding: `{{ content }}` was written unescaped in every render
|
|
164
|
+
rather than only in the layout it is the slot for, so a caller passing
|
|
165
|
+
`data.content` to a template that named it got raw HTML out. Nested lookups
|
|
166
|
+
also used `in`, which walks the prototype chain; nothing inherited actually
|
|
167
|
+
reached the output — every step past a prototype hit lands on a function,
|
|
168
|
+
which is neither traversed nor written — so that one is a closed door rather
|
|
169
|
+
than a fixed leak.
|
|
170
|
+
- **agent** — both callers built the same options object; now
|
|
171
|
+
`agentCallOptions`, typed against `AgentInput` rather than a second copy of
|
|
172
|
+
its shape.
|
|
173
|
+
- **console** — two branches that could only survive uncompiled: a catch block
|
|
174
|
+
identical to its try, and an if/else whose arms were the same call.
|
|
175
|
+
|
|
176
|
+
Behaviour is unchanged throughout, and the emitted modules are the same modules
|
|
177
|
+
— the emails scaffold's ten escaping tests pass untouched through core. The five
|
|
178
|
+
serializers shrink from 1,936 lines to 1,281, and what they used to emit is now
|
|
179
|
+
covered by 75 tests that run the code rather than by regexes over the text.
|
|
180
|
+
|
|
181
|
+
- Updated dependencies [a3deea4]
|
|
182
|
+
- Updated dependencies [a3deea4]
|
|
183
|
+
- Updated dependencies [1cc50ef]
|
|
184
|
+
- Updated dependencies [b5e79c1]
|
|
185
|
+
- Updated dependencies [a3deea4]
|
|
186
|
+
- Updated dependencies [30e390b]
|
|
187
|
+
- Updated dependencies [2a02288]
|
|
188
|
+
- @pikku/better-auth@0.12.31
|
|
189
|
+
- @pikku/skills@0.12.17
|
|
190
|
+
- @pikku/core@0.12.95
|
|
191
|
+
- @pikku/inspector@0.12.65
|
|
192
|
+
|
|
193
|
+
## 0.12.120
|
|
194
|
+
|
|
195
|
+
### Patch Changes
|
|
196
|
+
|
|
197
|
+
- 29309e2: Send what a persona currently declares alongside the schedule row that is actually running it. A cadence is enabled once and then outlives the declaration it was written from: someone edits `personas.ts`, redeploys, and the row keeps running last month's goals and disposition with nothing anywhere to say so. `listVirtualUserSchedules` now resolves each row's persona out of `personaConfigs` and returns its goals and disposition as `declared`, so the difference is readable rather than inferred.
|
|
198
|
+
|
|
199
|
+
Which fields differ is deliberately not computed here. It is a question about how to render two values, and a codegen step that answered it would fix the answer for every client — including the ones that want to show both sides rather than a flag.
|
|
200
|
+
|
|
201
|
+
- 2caea1d: Make the virtual user scaffold typecheck in the project it is generated into.
|
|
202
|
+
|
|
203
|
+
Three shapes in `virtual-user.gen.ts` were written against what the scaffold
|
|
204
|
+
knows rather than what an application actually has, and every one of them was
|
|
205
|
+
an error the moment a real project turned `scaffold.virtualUser` on:
|
|
206
|
+
|
|
207
|
+
- `startVirtualUserRun` asked for `config: { nodeEnv?: string }`. An
|
|
208
|
+
application's `Config` is its own interface and need not declare `nodeEnv` at
|
|
209
|
+
all — and a target type whose properties are all optional shares none with
|
|
210
|
+
such a config, so TypeScript rejected the whole call. It takes `unknown` and
|
|
211
|
+
reads `nodeEnv` off it.
|
|
212
|
+
- It also asked for `rpc.invoke(name: string, …)`. A project's generated
|
|
213
|
+
`invoke` is generic over its own map's keys and `string` is not one of them.
|
|
214
|
+
The parameter now names the one function the scaffold dispatches.
|
|
215
|
+
- `listVirtualUserSchedules` passed `input: null`, which is not one of the two
|
|
216
|
+
things an input may be. The field is omitted.
|
|
217
|
+
|
|
218
|
+
It also signed in at the wrong door. `createPersonas` was called without a
|
|
219
|
+
sign-in or RPC path, so a run against an application that mounts auth anywhere
|
|
220
|
+
but the root — `/api/auth` is the usual place — signed in against a 404 and
|
|
221
|
+
spent its whole budget reasoning about why every call failed. It now reads
|
|
222
|
+
`SCENARIO_SIGN_IN_PATH` and `SCENARIO_RPC_PATH`, the same two variables a
|
|
223
|
+
scenario run reads, because a virtual user goes through exactly the doors a
|
|
224
|
+
scenario does.
|
|
225
|
+
|
|
1
226
|
## 0.12.119
|
|
2
227
|
|
|
3
228
|
### Patch Changes
|
package/console-app/assets/{abnfDiagram-N423BO3Z-CiK5F2ml.js → abnfDiagram-N423BO3Z-Dfq94a7u.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e,t}from"./mermaid-parser.core-
|
|
1
|
+
import{m as e,t}from"./mermaid-parser.core-R240ylPw.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t as r}from"./src-DwHVY--Z.js";import"./chunk-I66GZJ75-CWdPrY4a.js";import{n as i,r as a,t as o}from"./chunk-6Q2QTUOP-DpsTVhit.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-BZ3jSM6D.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-KEIR6QF5-BICK3FdT.js";import{M as e}from"./mermaid-parser.core-R240ylPw.js";export{e as createArchitectureServices};
|