@mesh-tech/mesh-cli 0.1.1 → 0.12.0
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/assets/intent/agents-fence.md +10 -0
- package/assets/intent/intent-claude-gate.mjs +255 -0
- package/assets/log-shipper.mjs +94 -0
- package/bin/mesh.mjs +80 -0
- package/dist/bin/mesh.d.ts +7 -9
- package/dist/bin/mesh.d.ts.map +1 -1
- package/dist/bin/mesh.js +20826 -37
- package/dist/bin/mesh.js.map +7 -1
- package/dist/build-info.json +4 -0
- package/dist/src/commands/agent-api-client.d.ts +79 -0
- package/dist/src/commands/agent-api-client.d.ts.map +1 -0
- package/dist/src/commands/agent-api-client.js +170 -0
- package/dist/src/commands/agent-api-client.js.map +1 -0
- package/dist/src/commands/artifacts.d.ts +13 -0
- package/dist/src/commands/artifacts.d.ts.map +1 -0
- package/dist/src/commands/artifacts.js +140 -0
- package/dist/src/commands/artifacts.js.map +1 -0
- package/dist/src/commands/cluster.d.ts +45 -0
- package/dist/src/commands/cluster.d.ts.map +1 -0
- package/dist/src/commands/cluster.js +259 -0
- package/dist/src/commands/cluster.js.map +1 -0
- package/dist/src/commands/conversations.d.ts +61 -0
- package/dist/src/commands/conversations.d.ts.map +1 -0
- package/dist/src/commands/conversations.js +239 -0
- package/dist/src/commands/conversations.js.map +1 -0
- package/dist/src/commands/create-app.d.ts +26 -3
- package/dist/src/commands/create-app.d.ts.map +1 -1
- package/dist/src/commands/create-app.js +465 -107
- package/dist/src/commands/create-app.js.map +1 -1
- package/dist/src/commands/deploy.d.ts +19 -0
- package/dist/src/commands/deploy.d.ts.map +1 -1
- package/dist/src/commands/deploy.js +83 -142
- package/dist/src/commands/deploy.js.map +1 -1
- package/dist/src/commands/dev-doctor.d.ts +137 -0
- package/dist/src/commands/dev-doctor.d.ts.map +1 -0
- package/dist/src/commands/dev-doctor.js +671 -0
- package/dist/src/commands/dev-doctor.js.map +1 -0
- package/dist/src/commands/dev-launch.d.ts +59 -0
- package/dist/src/commands/dev-launch.d.ts.map +1 -0
- package/dist/src/commands/dev-launch.js +118 -0
- package/dist/src/commands/dev-launch.js.map +1 -0
- package/dist/src/commands/dev-token-server.d.ts +32 -0
- package/dist/src/commands/dev-token-server.d.ts.map +1 -0
- package/dist/src/commands/dev-token-server.js +68 -0
- package/dist/src/commands/dev-token-server.js.map +1 -0
- package/dist/src/commands/dev.d.ts +289 -2
- package/dist/src/commands/dev.d.ts.map +1 -1
- package/dist/src/commands/dev.js +2501 -574
- package/dist/src/commands/dev.js.map +1 -1
- package/dist/src/commands/docs.d.ts +3 -0
- package/dist/src/commands/docs.d.ts.map +1 -0
- package/dist/src/commands/docs.js +262 -0
- package/dist/src/commands/docs.js.map +1 -0
- package/dist/src/commands/hub/index.d.ts +99 -0
- package/dist/src/commands/hub/index.d.ts.map +1 -0
- package/dist/src/commands/hub/index.js +452 -0
- package/dist/src/commands/hub/index.js.map +1 -0
- package/dist/src/commands/init.d.ts +65 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +370 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/install-shim.d.ts +21 -0
- package/dist/src/commands/install-shim.d.ts.map +1 -0
- package/dist/src/commands/install-shim.js +132 -0
- package/dist/src/commands/install-shim.js.map +1 -0
- package/dist/src/commands/local/auth-provision.d.ts +71 -0
- package/dist/src/commands/local/auth-provision.d.ts.map +1 -0
- package/dist/src/commands/local/auth-provision.js +286 -0
- package/dist/src/commands/local/auth-provision.js.map +1 -0
- package/dist/src/commands/local/dev-local.d.ts +97 -0
- package/dist/src/commands/local/dev-local.d.ts.map +1 -0
- package/dist/src/commands/local/dev-local.js +306 -0
- package/dist/src/commands/local/dev-local.js.map +1 -0
- package/dist/src/commands/local/docker-runner.d.ts +37 -0
- package/dist/src/commands/local/docker-runner.d.ts.map +1 -0
- package/dist/src/commands/local/docker-runner.js +104 -0
- package/dist/src/commands/local/docker-runner.js.map +1 -0
- package/dist/src/commands/local/helpers.d.ts +22 -0
- package/dist/src/commands/local/helpers.d.ts.map +1 -0
- package/dist/src/commands/local/helpers.js +46 -0
- package/dist/src/commands/local/helpers.js.map +1 -0
- package/dist/src/commands/local/hub-local.d.ts +51 -0
- package/dist/src/commands/local/hub-local.d.ts.map +1 -0
- package/dist/src/commands/local/hub-local.js +197 -0
- package/dist/src/commands/local/hub-local.js.map +1 -0
- package/dist/src/commands/local/index.d.ts +23 -0
- package/dist/src/commands/local/index.d.ts.map +1 -0
- package/dist/src/commands/local/index.js +386 -0
- package/dist/src/commands/local/index.js.map +1 -0
- package/dist/src/commands/local/mocks.d.ts +361 -0
- package/dist/src/commands/local/mocks.d.ts.map +1 -0
- package/dist/src/commands/local/mocks.js +756 -0
- package/dist/src/commands/local/mocks.js.map +1 -0
- package/dist/src/commands/local/seed-zitadel.d.ts +151 -0
- package/dist/src/commands/local/seed-zitadel.d.ts.map +1 -0
- package/dist/src/commands/local/seed-zitadel.js +408 -0
- package/dist/src/commands/local/seed-zitadel.js.map +1 -0
- package/dist/src/commands/local/seed.d.ts +106 -0
- package/dist/src/commands/local/seed.d.ts.map +1 -0
- package/dist/src/commands/local/seed.js +252 -0
- package/dist/src/commands/local/seed.js.map +1 -0
- package/dist/src/commands/local/stack.d.ts +173 -0
- package/dist/src/commands/local/stack.d.ts.map +1 -0
- package/dist/src/commands/local/stack.js +499 -0
- package/dist/src/commands/local/stack.js.map +1 -0
- package/dist/src/commands/login.d.ts +256 -12
- package/dist/src/commands/login.d.ts.map +1 -1
- package/dist/src/commands/login.js +978 -50
- package/dist/src/commands/login.js.map +1 -1
- package/dist/src/commands/peer-addressing.d.ts +51 -0
- package/dist/src/commands/peer-addressing.d.ts.map +1 -0
- package/dist/src/commands/peer-addressing.js +64 -0
- package/dist/src/commands/peer-addressing.js.map +1 -0
- package/dist/src/commands/port-ownership.d.ts +69 -0
- package/dist/src/commands/port-ownership.d.ts.map +1 -0
- package/dist/src/commands/port-ownership.js +161 -0
- package/dist/src/commands/port-ownership.js.map +1 -0
- package/dist/src/commands/registry-publish.d.ts +3 -0
- package/dist/src/commands/registry-publish.d.ts.map +1 -0
- package/dist/src/commands/registry-publish.js +161 -0
- package/dist/src/commands/registry-publish.js.map +1 -0
- package/dist/src/commands/registry.d.ts +146 -2
- package/dist/src/commands/registry.d.ts.map +1 -1
- package/dist/src/commands/registry.js +541 -85
- package/dist/src/commands/registry.js.map +1 -1
- package/dist/src/commands/secrets/index.d.ts.map +1 -1
- package/dist/src/commands/secrets/index.js +15 -1
- package/dist/src/commands/secrets/index.js.map +1 -1
- package/dist/src/commands/secrets/migrate-config.d.ts +24 -0
- package/dist/src/commands/secrets/migrate-config.d.ts.map +1 -0
- package/dist/src/commands/secrets/migrate-config.js +277 -0
- package/dist/src/commands/secrets/migrate-config.js.map +1 -0
- package/dist/src/commands/secrets/set.d.ts +1 -0
- package/dist/src/commands/secrets/set.d.ts.map +1 -1
- package/dist/src/commands/secrets/set.js +96 -2
- package/dist/src/commands/secrets/set.js.map +1 -1
- package/dist/src/commands/skills.d.ts +34 -0
- package/dist/src/commands/skills.d.ts.map +1 -0
- package/dist/src/commands/skills.js +207 -0
- package/dist/src/commands/skills.js.map +1 -0
- package/dist/src/commands/stack.d.ts.map +1 -1
- package/dist/src/commands/stack.js +361 -23
- package/dist/src/commands/stack.js.map +1 -1
- package/dist/src/commands/temporal.d.ts +15 -0
- package/dist/src/commands/temporal.d.ts.map +1 -0
- package/dist/src/commands/temporal.js +781 -0
- package/dist/src/commands/temporal.js.map +1 -0
- package/dist/src/commands/tenant.d.ts +56 -0
- package/dist/src/commands/tenant.d.ts.map +1 -0
- package/dist/src/commands/tenant.js +233 -0
- package/dist/src/commands/tenant.js.map +1 -0
- package/dist/src/commands/tunnel/index.d.ts +49 -3
- package/dist/src/commands/tunnel/index.d.ts.map +1 -1
- package/dist/src/commands/tunnel/index.js +331 -8
- package/dist/src/commands/tunnel/index.js.map +1 -1
- package/dist/src/commands/vcs/clone.d.ts +3 -0
- package/dist/src/commands/vcs/clone.d.ts.map +1 -0
- package/dist/src/commands/vcs/clone.js +20 -0
- package/dist/src/commands/vcs/clone.js.map +1 -0
- package/dist/src/commands/vcs/common.d.ts +21 -0
- package/dist/src/commands/vcs/common.d.ts.map +1 -0
- package/dist/src/commands/vcs/common.js +62 -0
- package/dist/src/commands/vcs/common.js.map +1 -0
- package/dist/src/commands/vcs/drafts.d.ts +13 -0
- package/dist/src/commands/vcs/drafts.d.ts.map +1 -0
- package/dist/src/commands/vcs/drafts.js +45 -0
- package/dist/src/commands/vcs/drafts.js.map +1 -0
- package/dist/src/commands/vcs/get.d.ts +8 -0
- package/dist/src/commands/vcs/get.d.ts.map +1 -0
- package/dist/src/commands/vcs/get.js +61 -0
- package/dist/src/commands/vcs/get.js.map +1 -0
- package/dist/src/commands/vcs/index.d.ts +3 -0
- package/dist/src/commands/vcs/index.d.ts.map +1 -0
- package/dist/src/commands/vcs/index.js +58 -0
- package/dist/src/commands/vcs/index.js.map +1 -0
- package/dist/src/commands/vcs/propose.d.ts +23 -0
- package/dist/src/commands/vcs/propose.d.ts.map +1 -0
- package/dist/src/commands/vcs/propose.js +94 -0
- package/dist/src/commands/vcs/propose.js.map +1 -0
- package/dist/src/commands/vcs/review.d.ts +15 -0
- package/dist/src/commands/vcs/review.d.ts.map +1 -0
- package/dist/src/commands/vcs/review.js +35 -0
- package/dist/src/commands/vcs/review.js.map +1 -0
- package/dist/src/commands/vcs-enrich.d.ts +15 -0
- package/dist/src/commands/vcs-enrich.d.ts.map +1 -0
- package/dist/src/commands/vcs-enrich.js +28 -0
- package/dist/src/commands/vcs-enrich.js.map +1 -0
- package/dist/src/commands/vpn/index.d.ts +24 -0
- package/dist/src/commands/vpn/index.d.ts.map +1 -0
- package/dist/src/commands/vpn/index.js +543 -0
- package/dist/src/commands/vpn/index.js.map +1 -0
- package/dist/src/commands/vpn/tunnel.d.ts +11 -0
- package/dist/src/commands/vpn/tunnel.d.ts.map +1 -0
- package/dist/src/commands/vpn/tunnel.js +188 -0
- package/dist/src/commands/vpn/tunnel.js.map +1 -0
- package/dist/src/commands/workflow.d.ts +24 -0
- package/dist/src/commands/workflow.d.ts.map +1 -0
- package/dist/src/commands/workflow.js +577 -0
- package/dist/src/commands/workflow.js.map +1 -0
- package/dist/src/docs/assemble.d.ts +217 -0
- package/dist/src/docs/assemble.d.ts.map +1 -0
- package/dist/src/docs/assemble.js +739 -0
- package/dist/src/docs/assemble.js.map +1 -0
- package/dist/src/docs/cli-reference.d.ts +93 -0
- package/dist/src/docs/cli-reference.d.ts.map +1 -0
- package/dist/src/docs/cli-reference.js +256 -0
- package/dist/src/docs/cli-reference.js.map +1 -0
- package/dist/src/docs/discover.d.ts +60 -0
- package/dist/src/docs/discover.d.ts.map +1 -0
- package/dist/src/docs/discover.js +233 -0
- package/dist/src/docs/discover.js.map +1 -0
- package/dist/src/docs/portal.d.ts +79 -0
- package/dist/src/docs/portal.d.ts.map +1 -0
- package/dist/src/docs/portal.js +242 -0
- package/dist/src/docs/portal.js.map +1 -0
- package/dist/src/docs/registry-docs.d.ts +43 -0
- package/dist/src/docs/registry-docs.d.ts.map +1 -0
- package/dist/src/docs/registry-docs.js +138 -0
- package/dist/src/docs/registry-docs.js.map +1 -0
- package/dist/src/docs/schema.d.ts +48 -0
- package/dist/src/docs/schema.d.ts.map +1 -0
- package/dist/src/docs/schema.js +96 -0
- package/dist/src/docs/schema.js.map +1 -0
- package/dist/src/docs/serve.d.ts +27 -0
- package/dist/src/docs/serve.d.ts.map +1 -0
- package/dist/src/docs/serve.js +102 -0
- package/dist/src/docs/serve.js.map +1 -0
- package/dist/src/docs/start.d.ts +80 -0
- package/dist/src/docs/start.d.ts.map +1 -0
- package/dist/src/docs/start.js +313 -0
- package/dist/src/docs/start.js.map +1 -0
- package/dist/src/eval/agent-eval.d.mts +14 -0
- package/dist/src/eval/agent-eval.d.mts.map +1 -0
- package/dist/src/eval/agent-eval.mjs +273 -0
- package/dist/src/eval/agent-eval.mjs.map +1 -0
- package/dist/src/index.js +624 -7
- package/dist/src/index.js.map +7 -1
- package/dist/src/program.d.ts +26 -0
- package/dist/src/program.d.ts.map +1 -0
- package/dist/src/program.js +76 -0
- package/dist/src/program.js.map +1 -0
- package/dist/src/utils/auth-preflight.d.ts +159 -0
- package/dist/src/utils/auth-preflight.d.ts.map +1 -0
- package/dist/src/utils/auth-preflight.js +298 -0
- package/dist/src/utils/auth-preflight.js.map +1 -0
- package/dist/src/utils/aws-auth.d.ts +181 -0
- package/dist/src/utils/aws-auth.d.ts.map +1 -0
- package/dist/src/utils/aws-auth.js +527 -0
- package/dist/src/utils/aws-auth.js.map +1 -0
- package/dist/src/utils/bastion.d.ts +1 -1
- package/dist/src/utils/bastion.d.ts.map +1 -1
- package/dist/src/utils/bastion.js +29 -8
- package/dist/src/utils/bastion.js.map +1 -1
- package/dist/src/utils/build-info.d.ts +33 -0
- package/dist/src/utils/build-info.d.ts.map +1 -0
- package/dist/src/utils/build-info.js +102 -0
- package/dist/src/utils/build-info.js.map +1 -0
- package/dist/src/utils/capture-history.d.ts +62 -0
- package/dist/src/utils/capture-history.d.ts.map +1 -0
- package/dist/src/utils/capture-history.js +94 -0
- package/dist/src/utils/capture-history.js.map +1 -0
- package/dist/src/utils/deploy-preflight.d.ts +52 -0
- package/dist/src/utils/deploy-preflight.d.ts.map +1 -0
- package/dist/src/utils/deploy-preflight.js +183 -0
- package/dist/src/utils/deploy-preflight.js.map +1 -0
- package/dist/src/utils/errors.d.ts +75 -0
- package/dist/src/utils/errors.d.ts.map +1 -0
- package/dist/src/utils/errors.js +106 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/first-party-contexts.d.ts +40 -0
- package/dist/src/utils/first-party-contexts.d.ts.map +1 -0
- package/dist/src/utils/first-party-contexts.js +53 -0
- package/dist/src/utils/first-party-contexts.js.map +1 -0
- package/dist/src/utils/index.d.ts +2 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +2 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/kubeconfig.d.ts +62 -0
- package/dist/src/utils/kubeconfig.d.ts.map +1 -0
- package/dist/src/utils/kubeconfig.js +118 -0
- package/dist/src/utils/kubeconfig.js.map +1 -0
- package/dist/src/utils/log.d.ts +27 -1
- package/dist/src/utils/log.d.ts.map +1 -1
- package/dist/src/utils/log.js +59 -5
- package/dist/src/utils/log.js.map +1 -1
- package/dist/src/utils/pid.d.ts +47 -0
- package/dist/src/utils/pid.d.ts.map +1 -0
- package/dist/src/utils/pid.js +83 -0
- package/dist/src/utils/pid.js.map +1 -0
- package/dist/src/utils/pulumi-run.d.ts +23 -0
- package/dist/src/utils/pulumi-run.d.ts.map +1 -0
- package/dist/src/utils/pulumi-run.js +112 -0
- package/dist/src/utils/pulumi-run.js.map +1 -0
- package/dist/src/utils/pulumi.d.ts +15 -0
- package/dist/src/utils/pulumi.d.ts.map +1 -1
- package/dist/src/utils/pulumi.js +35 -0
- package/dist/src/utils/pulumi.js.map +1 -1
- package/dist/src/utils/reachability.d.ts +29 -0
- package/dist/src/utils/reachability.d.ts.map +1 -0
- package/dist/src/utils/reachability.js +81 -0
- package/dist/src/utils/reachability.js.map +1 -0
- package/dist/src/utils/recover-conversation.d.ts +154 -0
- package/dist/src/utils/recover-conversation.d.ts.map +1 -0
- package/dist/src/utils/recover-conversation.js +314 -0
- package/dist/src/utils/recover-conversation.js.map +1 -0
- package/dist/src/utils/registry-broker.d.ts +148 -0
- package/dist/src/utils/registry-broker.d.ts.map +1 -0
- package/dist/src/utils/registry-broker.js +180 -0
- package/dist/src/utils/registry-broker.js.map +1 -0
- package/dist/src/utils/socks-forward.d.ts +40 -0
- package/dist/src/utils/socks-forward.d.ts.map +1 -0
- package/dist/src/utils/socks-forward.js +97 -0
- package/dist/src/utils/socks-forward.js.map +1 -0
- package/dist/src/utils/stack-flag.d.ts +23 -0
- package/dist/src/utils/stack-flag.d.ts.map +1 -0
- package/dist/src/utils/stack-flag.js +41 -0
- package/dist/src/utils/stack-flag.js.map +1 -0
- package/dist/src/utils/tailscale-targets.d.ts +52 -0
- package/dist/src/utils/tailscale-targets.d.ts.map +1 -0
- package/dist/src/utils/tailscale-targets.js +93 -0
- package/dist/src/utils/tailscale-targets.js.map +1 -0
- package/dist/src/utils/tailscale.d.ts +277 -0
- package/dist/src/utils/tailscale.d.ts.map +1 -0
- package/dist/src/utils/tailscale.js +1007 -0
- package/dist/src/utils/tailscale.js.map +1 -0
- package/dist/src/utils/temporal-auth.d.ts +43 -0
- package/dist/src/utils/temporal-auth.d.ts.map +1 -0
- package/dist/src/utils/temporal-auth.js +176 -0
- package/dist/src/utils/temporal-auth.js.map +1 -0
- package/dist/src/utils/temporal-codec.d.ts +101 -0
- package/dist/src/utils/temporal-codec.d.ts.map +1 -0
- package/dist/src/utils/temporal-codec.js +319 -0
- package/dist/src/utils/temporal-codec.js.map +1 -0
- package/dist/src/utils/tunnel-ownership.d.ts +130 -0
- package/dist/src/utils/tunnel-ownership.d.ts.map +1 -0
- package/dist/src/utils/tunnel-ownership.js +274 -0
- package/dist/src/utils/tunnel-ownership.js.map +1 -0
- package/dist/src/utils/vpn-join.d.ts +32 -0
- package/dist/src/utils/vpn-join.d.ts.map +1 -0
- package/dist/src/utils/vpn-join.js +62 -0
- package/dist/src/utils/vpn-join.js.map +1 -0
- package/dist/src/utils/vpn.d.ts +62 -0
- package/dist/src/utils/vpn.d.ts.map +1 -0
- package/dist/src/utils/vpn.js +183 -0
- package/dist/src/utils/vpn.js.map +1 -0
- package/dist/src/utils/workflow-fingerprint.d.ts +49 -0
- package/dist/src/utils/workflow-fingerprint.d.ts.map +1 -0
- package/dist/src/utils/workflow-fingerprint.js +135 -0
- package/dist/src/utils/workflow-fingerprint.js.map +1 -0
- package/dist/src/utils/worktree-identity.d.ts +86 -0
- package/dist/src/utils/worktree-identity.d.ts.map +1 -0
- package/dist/src/utils/worktree-identity.js +164 -0
- package/dist/src/utils/worktree-identity.js.map +1 -0
- package/fragments/agents/AGENTS.md.hbs +92 -0
- package/fragments/agents/CLAUDE.md.hbs +8 -0
- package/fragments/base/Pulumi.dev.yaml.hbs +10 -0
- package/fragments/base/Pulumi.yaml.hbs +9 -0
- package/fragments/base/index.ts.hbs +107 -0
- package/fragments/base/package.json.hbs +22 -0
- package/{templates/api-web-db/api → fragments/base}/tsconfig.json +3 -4
- package/fragments/bucket/api/src/storage.ts.hbs +81 -0
- package/fragments/database/api/src/db.ts.hbs +23 -0
- package/fragments/database/prisma/schema.prisma.hbs +18 -0
- package/{templates/api-web-db → fragments/service}/api/.dockerignore +2 -0
- package/fragments/service/api/package.json.hbs +40 -0
- package/fragments/service/api/src/index.ts.hbs +58 -0
- package/{templates/api-web-db → fragments/service/api}/tsconfig.json +5 -3
- package/fragments/temporal/worker/.dockerignore +4 -0
- package/fragments/temporal/worker/Dockerfile +15 -0
- package/{templates/temporal-api-worker → fragments/temporal}/worker/package.json.hbs +3 -2
- package/fragments/temporal/worker/src/activities.ts.hbs +14 -0
- package/fragments/temporal/worker/src/worker.ts.hbs +27 -0
- package/fragments/temporal/worker/src/workflows.ts.hbs +24 -0
- package/fragments/temporal/worker/tsconfig.json +13 -0
- package/package.json +36 -22
- package/skills/core/SKILL.md +365 -0
- package/skills/pull-remote-agent-context/SKILL.md +194 -0
- package/stack/docker-compose.hub.yml +134 -0
- package/stack/docker-compose.yml +447 -0
- package/stack/hub/Dockerfile.api +18 -0
- package/stack/hub/Dockerfile.auth +10 -0
- package/stack/hub/Dockerfile.ui +10 -0
- package/stack/init/01-databases.sql +12 -0
- package/stack/observability/blackbox.yml +20 -0
- package/stack/observability/otel-collector.yaml +73 -0
- package/stack/observability/prometheus.yml +36 -0
- package/stack/observability/tempo.yaml +25 -0
- package/stack/temporal/local.yaml +44 -0
- package/templates/api-auth/AGENTS.md.hbs +16 -0
- package/templates/api-auth/Pulumi.dev.yaml.hbs +8 -0
- package/templates/api-auth/Pulumi.yaml.hbs +8 -0
- package/templates/api-auth/README.md.hbs +67 -0
- package/templates/api-auth/api/package.json.hbs +28 -0
- package/templates/api-auth/api/src/index.ts.hbs +96 -0
- package/templates/api-auth/api/src/schema.ts.hbs +35 -0
- package/templates/api-auth/api/src/seed-authz.ts.hbs +48 -0
- package/templates/api-auth/api/src/spicedb-http-provider.ts.hbs +89 -0
- package/templates/api-auth/index.ts.hbs +65 -0
- package/templates/api-auth/package.json.hbs +20 -0
- package/templates/api-auth/skills/develop/SKILL.md.hbs +32 -0
- package/templates/api-role-gating/AGENTS.md.hbs +20 -0
- package/templates/api-role-gating/Pulumi.dev.yaml.hbs +8 -0
- package/templates/api-role-gating/Pulumi.yaml.hbs +8 -0
- package/templates/api-role-gating/README.md.hbs +64 -0
- package/templates/api-role-gating/api/Dockerfile +17 -0
- package/templates/api-role-gating/api/package.json.hbs +28 -0
- package/templates/api-role-gating/api/src/authn.ts.hbs +29 -0
- package/templates/api-role-gating/api/src/authz.ts.hbs +12 -0
- package/templates/api-role-gating/api/src/main.ts.hbs +58 -0
- package/templates/api-role-gating/api/src/schema.ts.hbs +22 -0
- package/templates/api-role-gating/api/tsconfig.json +13 -0
- package/templates/api-role-gating/index.ts.hbs +107 -0
- package/templates/api-role-gating/package.json.hbs +21 -0
- package/templates/api-role-gating/skills/develop/SKILL.md.hbs +60 -0
- package/templates/api-role-gating/tsconfig.json +10 -0
- package/templates/apps-repo/README.md.hbs +24 -0
- package/templates/apps-repo/gitignore +41 -0
- package/templates/apps-repo/npmrc.hbs +7 -0
- package/templates/apps-repo/package.json.hbs +15 -0
- package/templates/apps-repo/pnpm-workspace.yaml +3 -0
- package/templates/apps-repo/tsconfig.json +18 -0
- package/templates/external-service/AGENTS.md.hbs +20 -0
- package/templates/external-service/Pulumi.dev.yaml.hbs +8 -0
- package/templates/external-service/Pulumi.yaml.hbs +8 -0
- package/templates/external-service/README.md.hbs +56 -0
- package/templates/external-service/api/Dockerfile +15 -0
- package/templates/external-service/api/package.json.hbs +25 -0
- package/templates/external-service/api/src/index.ts.hbs +81 -0
- package/templates/external-service/index.ts.hbs +82 -0
- package/templates/external-service/mocks/vendorpay/package.json.hbs +9 -0
- package/templates/external-service/mocks/vendorpay/server.mjs.hbs +61 -0
- package/templates/external-service/package.json.hbs +34 -0
- package/templates/external-service/skills/develop/SKILL.md.hbs +55 -0
- package/templates/external-service/tsconfig.json +10 -0
- package/templates/platform-repo/AGENTS.md.hbs +18 -0
- package/templates/platform-repo/README.md.hbs +38 -0
- package/templates/platform-repo/core/Pulumi.yaml.hbs +12 -0
- package/templates/platform-repo/core/Pulumi.{{tenant}}-{{env}}.yaml.hbs +57 -0
- package/templates/platform-repo/core/index.ts +62 -0
- package/templates/platform-repo/core/package.json.hbs +22 -0
- package/templates/platform-repo/core/tsconfig.json +8 -0
- package/templates/platform-repo/package.json.hbs +15 -0
- package/templates/platform-repo/platform/Pulumi.yaml.hbs +12 -0
- package/templates/platform-repo/platform/Pulumi.{{tenant}}-{{env}}.yaml.hbs +59 -0
- package/templates/platform-repo/platform/index.ts +95 -0
- package/templates/platform-repo/platform/package.json.hbs +26 -0
- package/templates/platform-repo/platform/tsconfig.json +8 -0
- package/templates/platform-repo/pnpm-workspace.yaml +3 -0
- package/templates/workflow/AGENTS.md.hbs +15 -0
- package/templates/workflow/Pulumi.dev.yaml.hbs +8 -0
- package/templates/workflow/Pulumi.yaml.hbs +8 -0
- package/templates/workflow/README.md.hbs +45 -0
- package/templates/workflow/api/.dockerignore +4 -0
- package/templates/workflow/api/Dockerfile +15 -0
- package/templates/{temporal-api-worker → workflow}/api/package.json.hbs +8 -6
- package/templates/workflow/api/src/index.ts.hbs +130 -0
- package/templates/workflow/api/tsconfig.json +14 -0
- package/templates/workflow/index.ts.hbs +67 -0
- package/templates/workflow/package.json.hbs +20 -0
- package/templates/workflow/skills/develop/SKILL.md.hbs +32 -0
- package/templates/workflow/tsconfig.json +10 -0
- package/templates/workflow/worker/.dockerignore +4 -0
- package/templates/workflow/worker/Dockerfile +13 -0
- package/templates/workflow/worker/package.json.hbs +25 -0
- package/templates/workflow/worker/src/worker.ts.hbs +24 -0
- package/templates/workflow/worker/tsconfig.json +14 -0
- package/dist/src/commands/devbox.d.ts +0 -22
- package/dist/src/commands/devbox.d.ts.map +0 -1
- package/dist/src/commands/devbox.js +0 -463
- package/dist/src/commands/devbox.js.map +0 -1
- package/templates/api-web-db/api/Dockerfile +0 -16
- package/templates/api-web-db/api/package.json.hbs +0 -21
- package/templates/api-web-db/api/src/index.ts.hbs +0 -123
- package/templates/api-web-db/package.json.hbs +0 -27
- package/templates/api-web-db/sst.config.ts.hbs +0 -151
- package/templates/api-web-db/web/.dockerignore +0 -3
- package/templates/api-web-db/web/Dockerfile +0 -17
- package/templates/api-web-db/web/app/lib/db.server.ts +0 -36
- package/templates/api-web-db/web/app/root.tsx +0 -29
- package/templates/api-web-db/web/app/routes/home.tsx.hbs +0 -114
- package/templates/api-web-db/web/app/routes.ts +0 -3
- package/templates/api-web-db/web/package.json.hbs +0 -30
- package/templates/api-web-db/web/prisma/schema.prisma +0 -25
- package/templates/api-web-db/web/prisma.config.ts +0 -18
- package/templates/api-web-db/web/react-router.config.ts +0 -5
- package/templates/api-web-db/web/tsconfig.json +0 -19
- package/templates/api-web-db/web/vite.config.ts +0 -9
- package/templates/temporal-api-worker/README.md.hbs +0 -133
- package/templates/temporal-api-worker/api/src/index.ts.hbs +0 -145
- package/templates/temporal-api-worker/package.json.hbs +0 -29
- package/templates/temporal-api-worker/sst.config.ts.hbs +0 -161
- package/templates/temporal-api-worker/worker/Dockerfile +0 -11
- package/templates/temporal-api-worker/worker/src/bundle-workflows.ts +0 -38
- package/templates/temporal-api-worker/worker/src/worker.ts.hbs +0 -93
- /package/templates/{temporal-api-worker → api-auth}/api/.dockerignore +0 -0
- /package/templates/{temporal-api-worker → api-auth}/api/Dockerfile +0 -0
- /package/templates/{temporal-api-worker → api-auth}/api/tsconfig.json +0 -0
- /package/templates/{temporal-api-worker → api-auth}/tsconfig.json +0 -0
- /package/templates/{temporal-api-worker/worker → api-role-gating/api}/.dockerignore +0 -0
- /package/templates/{temporal-api-worker/worker → external-service/api}/tsconfig.json +0 -0
- /package/templates/{temporal-api-worker → workflow}/api/src/encryption-codec.ts +0 -0
- /package/templates/{temporal-api-worker → workflow}/worker/src/activities.ts.hbs +0 -0
- /package/templates/{temporal-api-worker → workflow}/worker/src/encryption-codec.ts +0 -0
- /package/templates/{temporal-api-worker → workflow}/worker/src/workflows.ts.hbs +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../../src/commands/local/mocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zitadel seeding for the `mesh start` local platform — the `mesh login local`
|
|
3
|
+
* path (P1 critical path, design §2.1 seeding).
|
|
4
|
+
*
|
|
5
|
+
* Mirrors what ZitadelPlatformIdentity provisions in the cloud, via the
|
|
6
|
+
* management REST API using the first-instance machine user's PAT (written to
|
|
7
|
+
* the zitadel_machinekey volume by the compose bootstrap). Org structure
|
|
8
|
+
* follows the approved Zitadel tenant-auth pattern: everything here lives in
|
|
9
|
+
* the PLATFORM org (`mesh` — platform-layer creds home, named by the
|
|
10
|
+
* compose first-instance config); app tenants get their own orgs, created by
|
|
11
|
+
* `mesh dev --local` (see auth-provision.ts):
|
|
12
|
+
* - project "mesh-cli" (pattern naming: project per app — the CLI is a
|
|
13
|
+
* platform-level client feature)
|
|
14
|
+
* - native OIDC application "cli" inside it (PKCE + device code, no
|
|
15
|
+
* secret — the same shape as ZitadelPlatformIdentity's cliApp, plus
|
|
16
|
+
* devMode for http)
|
|
17
|
+
* - two human test users (dev@local.mesh, ops@local.mesh)
|
|
18
|
+
* - registry parity: /mesh-platform/local/dev/platform/zitadel in the local
|
|
19
|
+
* AWS fabric ({endpoint, cliClientId} — what `mesh login` SSM discovery
|
|
20
|
+
* reads) and temporal/test-users entries (what `mesh dev test-user` reads)
|
|
21
|
+
* - the `local` CLI login context in ~/.config/mesh/config.json, so
|
|
22
|
+
* `mesh login local` works with zero discovery.
|
|
23
|
+
*
|
|
24
|
+
* Idempotent: search-before-create for project/app, "already exists" is
|
|
25
|
+
* success for users, SSM params overwrite.
|
|
26
|
+
*/
|
|
27
|
+
export declare const ZITADEL_ISSUER = "http://localhost:8080";
|
|
28
|
+
export declare const LOGIN_CONTEXT = "local";
|
|
29
|
+
/** The platform org — home of platform-layer creds, same name as the cloud
|
|
30
|
+
* platform tenant. Set by ZITADEL_FIRSTINSTANCE_ORG_NAME in the compose;
|
|
31
|
+
* app tenants (incl. the default `local`) get their own orgs on demand. */
|
|
32
|
+
export declare const PLATFORM_ORG = "mesh";
|
|
33
|
+
/**
|
|
34
|
+
* Approved-pattern naming inside the platform org: project per app
|
|
35
|
+
* (lowercase), application per service/client inside it. The CLI is a
|
|
36
|
+
* platform-level client feature → project `mesh-cli`, application `cli`.
|
|
37
|
+
* (The cloud's legacy catch-all "Platform" project is being retired by the
|
|
38
|
+
* pattern doc's spec items; local starts pattern-true.)
|
|
39
|
+
*/
|
|
40
|
+
export declare const CLI_PROJECT_NAME = "mesh-cli";
|
|
41
|
+
export declare const CLI_APP_NAME = "cli";
|
|
42
|
+
export declare const CLI_REDIRECT_URI = "http://localhost:9876/callback";
|
|
43
|
+
/**
|
|
44
|
+
* The Hub's own auth config (pattern-true: the Hub is a platform app →
|
|
45
|
+
* project `hub` in the platform org, application per service). The `ui`
|
|
46
|
+
* application backs the oauth2-proxy that fronts the Hub UI — the same
|
|
47
|
+
* sidecar topology `mesh.apps.Service` deploys with `auth.provider: "mesh"`.
|
|
48
|
+
* Roles ARE the Hub's vocabulary — imported from the module the deployed Hub's
|
|
49
|
+
* infra declares them from, so a role that exists in the cloud is grantable
|
|
50
|
+
* locally too (MESH-2504). Local seeds the base roles only; the tenant-keyed
|
|
51
|
+
* restricted grants (`vendor:<tenant>`) are a deployed-estate concern.
|
|
52
|
+
*/
|
|
53
|
+
export declare const HUB_PROJECT_NAME = "hub";
|
|
54
|
+
export declare const HUB_APP_NAME = "ui";
|
|
55
|
+
/** Registered on the seeded Hub app; the default-port URI is always included
|
|
56
|
+
* so a later port switch never strands the app config. Zitadel's devMode only
|
|
57
|
+
* relaxes the https requirement — every redirect URI must still be registered
|
|
58
|
+
* exactly, so an existing app is RECONCILED (union-merged) on each seed run.
|
|
59
|
+
* Functions, not constants: hubPort() must be read at call time so tests and
|
|
60
|
+
* programmatic callers that set MESH_HUB_PORT after import see the override. */
|
|
61
|
+
export declare const hubRedirectUri: () => string;
|
|
62
|
+
export declare const HUB_DEFAULT_REDIRECT_URI = "http://localhost:9000/oauth2/callback";
|
|
63
|
+
export declare const HUB_ROLES: readonly ["ops", "admin", "developer", "auditor", "vendor"];
|
|
64
|
+
export declare const ZITADEL_SSM_PARAM = "/mesh-platform/local/dev/platform/zitadel";
|
|
65
|
+
export declare const TEST_USERS_SSM_PREFIX = "/mesh-platform/local/dev/temporal/test-users";
|
|
66
|
+
export interface LocalTestUser {
|
|
67
|
+
name: string;
|
|
68
|
+
email: string;
|
|
69
|
+
firstName: string;
|
|
70
|
+
lastName: string;
|
|
71
|
+
password: string;
|
|
72
|
+
}
|
|
73
|
+
/** Seeded human test users — plainly-labeled dev-grade credentials. */
|
|
74
|
+
export declare const TEST_USERS: LocalTestUser[];
|
|
75
|
+
/**
|
|
76
|
+
* The CLI OIDC app payload — the same shape ZitadelPlatformIdentity creates in
|
|
77
|
+
* the cloud (native, PKCE, device code, JWT access tokens, role assertions),
|
|
78
|
+
* plus devMode so Zitadel accepts the http:// redirect locally.
|
|
79
|
+
*/
|
|
80
|
+
export declare function buildCliAppPayload(): {
|
|
81
|
+
name: string;
|
|
82
|
+
redirectUris: string[];
|
|
83
|
+
responseTypes: string[];
|
|
84
|
+
grantTypes: string[];
|
|
85
|
+
appType: string;
|
|
86
|
+
authMethodType: string;
|
|
87
|
+
accessTokenType: string;
|
|
88
|
+
accessTokenRoleAssertion: boolean;
|
|
89
|
+
idTokenRoleAssertion: boolean;
|
|
90
|
+
idTokenUserinfoAssertion: boolean;
|
|
91
|
+
devMode: boolean;
|
|
92
|
+
};
|
|
93
|
+
/** Read the seeder PAT the compose bootstrap wrote to the machinekey volume. */
|
|
94
|
+
export declare function readSeederPat(): string;
|
|
95
|
+
/** Call the local Zitadel REST API; `orgId` sets the org context header. */
|
|
96
|
+
export declare function api(pat: string, method: string, apiPath: string, body?: unknown, orgId?: string): Promise<any>;
|
|
97
|
+
export declare const isAlreadyExists: (err: any) => boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Shared search-before-create for Zitadel projects: return the existing
|
|
100
|
+
* project's id, else create it. Every ensure*Project in the local seeding
|
|
101
|
+
* and auth-provisioning goes through this.
|
|
102
|
+
*/
|
|
103
|
+
export declare function ensureZitadelProject(pat: string, name: string, opts?: {
|
|
104
|
+
orgId?: string;
|
|
105
|
+
describe?: string;
|
|
106
|
+
logExisting?: boolean;
|
|
107
|
+
}): Promise<string>;
|
|
108
|
+
/** Shared name-equals application search; returns the raw app or undefined. */
|
|
109
|
+
export declare function searchZitadelApp(pat: string, projectId: string, name: string, orgId?: string): Promise<any | undefined>;
|
|
110
|
+
export interface HubAuthConfig {
|
|
111
|
+
clientId: string;
|
|
112
|
+
clientSecret: string;
|
|
113
|
+
cookieSecret: string;
|
|
114
|
+
}
|
|
115
|
+
/** Where the Hub's oauth2-proxy credentials persist between runs (the local
|
|
116
|
+
* analog of the K8s Secret the Service component creates for the sidecar). */
|
|
117
|
+
export declare function hubAuthPath(): string;
|
|
118
|
+
export declare function readHubAuth(): HubAuthConfig | null;
|
|
119
|
+
/** The slice of Zitadel's OIDC app shape the reconcile below reads. */
|
|
120
|
+
interface HubOidcApp {
|
|
121
|
+
id: string;
|
|
122
|
+
oidcConfig?: {
|
|
123
|
+
clientId?: string;
|
|
124
|
+
redirectUris?: string[];
|
|
125
|
+
postLogoutRedirectUris?: string[];
|
|
126
|
+
responseTypes?: string[];
|
|
127
|
+
grantTypes?: string[];
|
|
128
|
+
accessTokenType?: string;
|
|
129
|
+
accessTokenRoleAssertion?: boolean;
|
|
130
|
+
idTokenRoleAssertion?: boolean;
|
|
131
|
+
idTokenUserinfoAssertion?: boolean;
|
|
132
|
+
devMode?: boolean;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Union-merge the current-port redirect URIs into an existing Hub app's OIDC
|
|
136
|
+
* config. Needed whenever the app was seeded under a different MESH_HUB_PORT:
|
|
137
|
+
* devMode does NOT exempt an unregistered redirect_uri (Zitadel rejects the
|
|
138
|
+
* authorize call with "redirect_uri is missing in the client configuration"),
|
|
139
|
+
* it only permits http://. No-op when everything is already registered.
|
|
140
|
+
* Exported for tests. */
|
|
141
|
+
export declare function reconcileHubRedirectUris(pat: string, projectId: string, app: HubOidcApp): Promise<void>;
|
|
142
|
+
/** Seed the Hub's auth config; persists oauth2-proxy credentials locally. */
|
|
143
|
+
export declare function seedHubAuth(pat: string): Promise<HubAuthConfig>;
|
|
144
|
+
export interface ZitadelSeedResult {
|
|
145
|
+
projectId: string;
|
|
146
|
+
cliClientId: string;
|
|
147
|
+
hubAuth: HubAuthConfig;
|
|
148
|
+
}
|
|
149
|
+
export declare function seedZitadel(awsConfig: object): Promise<ZitadelSeedResult>;
|
|
150
|
+
export {};
|
|
151
|
+
//# sourceMappingURL=seed-zitadel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-zitadel.d.ts","sourceRoot":"","sources":["../../../../src/commands/local/seed-zitadel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zitadel seeding for the `mesh start` local platform — the `mesh login local`
|
|
3
|
+
* path (P1 critical path, design §2.1 seeding).
|
|
4
|
+
*
|
|
5
|
+
* Mirrors what ZitadelPlatformIdentity provisions in the cloud, via the
|
|
6
|
+
* management REST API using the first-instance machine user's PAT (written to
|
|
7
|
+
* the zitadel_machinekey volume by the compose bootstrap). Org structure
|
|
8
|
+
* follows the approved Zitadel tenant-auth pattern: everything here lives in
|
|
9
|
+
* the PLATFORM org (`mesh` — platform-layer creds home, named by the
|
|
10
|
+
* compose first-instance config); app tenants get their own orgs, created by
|
|
11
|
+
* `mesh dev --local` (see auth-provision.ts):
|
|
12
|
+
* - project "mesh-cli" (pattern naming: project per app — the CLI is a
|
|
13
|
+
* platform-level client feature)
|
|
14
|
+
* - native OIDC application "cli" inside it (PKCE + device code, no
|
|
15
|
+
* secret — the same shape as ZitadelPlatformIdentity's cliApp, plus
|
|
16
|
+
* devMode for http)
|
|
17
|
+
* - two human test users (dev@local.mesh, ops@local.mesh)
|
|
18
|
+
* - registry parity: /mesh-platform/local/dev/platform/zitadel in the local
|
|
19
|
+
* AWS fabric ({endpoint, cliClientId} — what `mesh login` SSM discovery
|
|
20
|
+
* reads) and temporal/test-users entries (what `mesh dev test-user` reads)
|
|
21
|
+
* - the `local` CLI login context in ~/.config/mesh/config.json, so
|
|
22
|
+
* `mesh login local` works with zero discovery.
|
|
23
|
+
*
|
|
24
|
+
* Idempotent: search-before-create for project/app, "already exists" is
|
|
25
|
+
* success for users, SSM params overwrite.
|
|
26
|
+
*/
|
|
27
|
+
import * as fs from "fs";
|
|
28
|
+
import * as os from "os";
|
|
29
|
+
import * as path from "path";
|
|
30
|
+
import { HUB_BASE_ROLES } from "@mesh-tech/api-registry";
|
|
31
|
+
import { logInfo, logSuccess } from "../../utils/log.js";
|
|
32
|
+
import { MeshCliError } from "../../utils/errors.js";
|
|
33
|
+
import { writeContextConfig } from "../login.js";
|
|
34
|
+
import { compose, hubPort, DEFAULT_HUB_PORT } from "./stack.js";
|
|
35
|
+
import { LOCAL_TENANT, LOCAL_ENV } from "./seed.js";
|
|
36
|
+
export const ZITADEL_ISSUER = "http://localhost:8080";
|
|
37
|
+
export const LOGIN_CONTEXT = "local";
|
|
38
|
+
/** The platform org — home of platform-layer creds, same name as the cloud
|
|
39
|
+
* platform tenant. Set by ZITADEL_FIRSTINSTANCE_ORG_NAME in the compose;
|
|
40
|
+
* app tenants (incl. the default `local`) get their own orgs on demand. */
|
|
41
|
+
export const PLATFORM_ORG = "mesh";
|
|
42
|
+
/**
|
|
43
|
+
* Approved-pattern naming inside the platform org: project per app
|
|
44
|
+
* (lowercase), application per service/client inside it. The CLI is a
|
|
45
|
+
* platform-level client feature → project `mesh-cli`, application `cli`.
|
|
46
|
+
* (The cloud's legacy catch-all "Platform" project is being retired by the
|
|
47
|
+
* pattern doc's spec items; local starts pattern-true.)
|
|
48
|
+
*/
|
|
49
|
+
export const CLI_PROJECT_NAME = "mesh-cli";
|
|
50
|
+
export const CLI_APP_NAME = "cli";
|
|
51
|
+
export const CLI_REDIRECT_URI = "http://localhost:9876/callback";
|
|
52
|
+
/**
|
|
53
|
+
* The Hub's own auth config (pattern-true: the Hub is a platform app →
|
|
54
|
+
* project `hub` in the platform org, application per service). The `ui`
|
|
55
|
+
* application backs the oauth2-proxy that fronts the Hub UI — the same
|
|
56
|
+
* sidecar topology `mesh.apps.Service` deploys with `auth.provider: "mesh"`.
|
|
57
|
+
* Roles ARE the Hub's vocabulary — imported from the module the deployed Hub's
|
|
58
|
+
* infra declares them from, so a role that exists in the cloud is grantable
|
|
59
|
+
* locally too (MESH-2504). Local seeds the base roles only; the tenant-keyed
|
|
60
|
+
* restricted grants (`vendor:<tenant>`) are a deployed-estate concern.
|
|
61
|
+
*/
|
|
62
|
+
export const HUB_PROJECT_NAME = "hub";
|
|
63
|
+
export const HUB_APP_NAME = "ui";
|
|
64
|
+
/** Registered on the seeded Hub app; the default-port URI is always included
|
|
65
|
+
* so a later port switch never strands the app config. Zitadel's devMode only
|
|
66
|
+
* relaxes the https requirement — every redirect URI must still be registered
|
|
67
|
+
* exactly, so an existing app is RECONCILED (union-merged) on each seed run.
|
|
68
|
+
* Functions, not constants: hubPort() must be read at call time so tests and
|
|
69
|
+
* programmatic callers that set MESH_HUB_PORT after import see the override. */
|
|
70
|
+
export const hubRedirectUri = () => `http://localhost:${hubPort()}/oauth2/callback`;
|
|
71
|
+
export const HUB_DEFAULT_REDIRECT_URI = `http://localhost:${DEFAULT_HUB_PORT}/oauth2/callback`;
|
|
72
|
+
export const HUB_ROLES = HUB_BASE_ROLES;
|
|
73
|
+
export const ZITADEL_SSM_PARAM = `/mesh-platform/${LOCAL_TENANT}/${LOCAL_ENV}/platform/zitadel`;
|
|
74
|
+
export const TEST_USERS_SSM_PREFIX = `/mesh-platform/${LOCAL_TENANT}/${LOCAL_ENV}/temporal/test-users`;
|
|
75
|
+
/** Seeded human test users — plainly-labeled dev-grade credentials. */
|
|
76
|
+
export const TEST_USERS = [
|
|
77
|
+
{ name: "dev", email: "dev@local.mesh", firstName: "Dev", lastName: "User", password: "LocalDev1!" },
|
|
78
|
+
{ name: "ops", email: "ops@local.mesh", firstName: "Ops", lastName: "User", password: "LocalDev1!" },
|
|
79
|
+
];
|
|
80
|
+
/**
|
|
81
|
+
* The CLI OIDC app payload — the same shape ZitadelPlatformIdentity creates in
|
|
82
|
+
* the cloud (native, PKCE, device code, JWT access tokens, role assertions),
|
|
83
|
+
* plus devMode so Zitadel accepts the http:// redirect locally.
|
|
84
|
+
*/
|
|
85
|
+
export function buildCliAppPayload() {
|
|
86
|
+
return {
|
|
87
|
+
name: CLI_APP_NAME,
|
|
88
|
+
redirectUris: [CLI_REDIRECT_URI],
|
|
89
|
+
responseTypes: ["OIDC_RESPONSE_TYPE_CODE"],
|
|
90
|
+
grantTypes: ["OIDC_GRANT_TYPE_AUTHORIZATION_CODE", "OIDC_GRANT_TYPE_DEVICE_CODE"],
|
|
91
|
+
appType: "OIDC_APP_TYPE_NATIVE",
|
|
92
|
+
authMethodType: "OIDC_AUTH_METHOD_TYPE_NONE",
|
|
93
|
+
accessTokenType: "OIDC_TOKEN_TYPE_JWT",
|
|
94
|
+
accessTokenRoleAssertion: true,
|
|
95
|
+
idTokenRoleAssertion: true,
|
|
96
|
+
idTokenUserinfoAssertion: true,
|
|
97
|
+
devMode: true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** Read the seeder PAT the compose bootstrap wrote to the machinekey volume. */
|
|
101
|
+
export function readSeederPat() {
|
|
102
|
+
const tmp = path.join(fs.mkdtempSync(path.join(os.tmpdir(), "mesh-zitadel-")), "pat.txt");
|
|
103
|
+
try {
|
|
104
|
+
compose(["cp", "zitadel:/machinekey/pat.txt", tmp]);
|
|
105
|
+
const pat = fs.readFileSync(tmp, "utf-8").trim();
|
|
106
|
+
if (!pat)
|
|
107
|
+
throw new Error("empty PAT file");
|
|
108
|
+
return pat;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
throw new MeshCliError("Zitadel seeder PAT not found — the zitadel volume predates the bootstrap machine user (first-instance settings only apply on the first init).", { remediation: { command: "mesh stop --destroy && mesh start" } });
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
fs.rmSync(path.dirname(tmp), { recursive: true, force: true });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** Call the local Zitadel REST API; `orgId` sets the org context header. */
|
|
118
|
+
export async function api(pat, method, apiPath, body, orgId) {
|
|
119
|
+
const res = await fetch(`${ZITADEL_ISSUER}${apiPath}`, {
|
|
120
|
+
method,
|
|
121
|
+
headers: {
|
|
122
|
+
Authorization: `Bearer ${pat}`,
|
|
123
|
+
"Content-Type": "application/json",
|
|
124
|
+
...(orgId ? { "x-zitadel-orgid": orgId } : {}),
|
|
125
|
+
},
|
|
126
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
127
|
+
signal: AbortSignal.timeout(15_000),
|
|
128
|
+
});
|
|
129
|
+
const text = await res.text();
|
|
130
|
+
const data = text ? JSON.parse(text) : {};
|
|
131
|
+
if (!res.ok) {
|
|
132
|
+
const err = new Error(`Zitadel ${method} ${apiPath} → ${res.status}: ${data?.message ?? text}`);
|
|
133
|
+
err.status = res.status;
|
|
134
|
+
err.zitadelCode = data?.code;
|
|
135
|
+
throw err;
|
|
136
|
+
}
|
|
137
|
+
return data;
|
|
138
|
+
}
|
|
139
|
+
export const isAlreadyExists = (err) => err?.status === 409 || err?.zitadelCode === 6 || /already exists/i.test(err?.message ?? "");
|
|
140
|
+
/**
|
|
141
|
+
* Shared search-before-create for Zitadel projects: return the existing
|
|
142
|
+
* project's id, else create it. Every ensure*Project in the local seeding
|
|
143
|
+
* and auth-provisioning goes through this.
|
|
144
|
+
*/
|
|
145
|
+
export async function ensureZitadelProject(pat, name, opts = {}) {
|
|
146
|
+
const search = await api(pat, "POST", "/management/v1/projects/_search", { queries: [{ nameQuery: { name, method: "TEXT_QUERY_METHOD_EQUALS" } }] }, opts.orgId);
|
|
147
|
+
const existing = search?.result?.[0]?.id;
|
|
148
|
+
if (existing) {
|
|
149
|
+
if (opts.logExisting)
|
|
150
|
+
logInfo(`Zitadel project '${name}' already exists`);
|
|
151
|
+
return existing;
|
|
152
|
+
}
|
|
153
|
+
const created = await api(pat, "POST", "/management/v1/projects", { name, projectRoleAssertion: true }, opts.orgId);
|
|
154
|
+
logSuccess(`Created Zitadel project '${name}'${opts.describe ? ` (${opts.describe})` : ""}`);
|
|
155
|
+
return created.id;
|
|
156
|
+
}
|
|
157
|
+
/** Shared name-equals application search; returns the raw app or undefined. */
|
|
158
|
+
export async function searchZitadelApp(pat, projectId, name, orgId) {
|
|
159
|
+
const search = await api(pat, "POST", `/management/v1/projects/${projectId}/apps/_search`, { queries: [{ nameQuery: { name, method: "TEXT_QUERY_METHOD_EQUALS" } }] }, orgId);
|
|
160
|
+
return search?.result?.[0];
|
|
161
|
+
}
|
|
162
|
+
const ensureCliProject = (pat) => ensureZitadelProject(pat, CLI_PROJECT_NAME, { describe: "platform client feature", logExisting: true });
|
|
163
|
+
async function ensureCliApp(pat, projectId) {
|
|
164
|
+
const existing = (await searchZitadelApp(pat, projectId, CLI_APP_NAME))?.oidcConfig?.clientId;
|
|
165
|
+
if (existing) {
|
|
166
|
+
logInfo(`Zitadel app '${CLI_APP_NAME}' already exists`);
|
|
167
|
+
return existing;
|
|
168
|
+
}
|
|
169
|
+
const created = await api(pat, "POST", `/management/v1/projects/${projectId}/apps/oidc`, buildCliAppPayload());
|
|
170
|
+
logSuccess(`Created Zitadel application '${CLI_APP_NAME}' (PKCE + device code)`);
|
|
171
|
+
return created.clientId;
|
|
172
|
+
}
|
|
173
|
+
async function ensureTestUsers(pat) {
|
|
174
|
+
for (const user of TEST_USERS) {
|
|
175
|
+
try {
|
|
176
|
+
await api(pat, "POST", "/management/v1/users/human/_import", {
|
|
177
|
+
userName: user.email,
|
|
178
|
+
profile: {
|
|
179
|
+
firstName: user.firstName,
|
|
180
|
+
lastName: user.lastName,
|
|
181
|
+
displayName: `${user.firstName} ${user.lastName}`,
|
|
182
|
+
},
|
|
183
|
+
email: { email: user.email, isEmailVerified: true },
|
|
184
|
+
password: user.password,
|
|
185
|
+
passwordChangeRequired: false,
|
|
186
|
+
});
|
|
187
|
+
logSuccess(`Created test user ${user.email}`);
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
if (isAlreadyExists(err)) {
|
|
191
|
+
logInfo(`Test user ${user.email} already exists`);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/** Where the Hub's oauth2-proxy credentials persist between runs (the local
|
|
200
|
+
* analog of the K8s Secret the Service component creates for the sidecar). */
|
|
201
|
+
export function hubAuthPath() {
|
|
202
|
+
const dir = path.join(os.homedir(), ".cache", "mesh", "mesh-local");
|
|
203
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
204
|
+
return path.join(dir, "hub-auth.json");
|
|
205
|
+
}
|
|
206
|
+
export function readHubAuth() {
|
|
207
|
+
try {
|
|
208
|
+
const parsed = JSON.parse(fs.readFileSync(hubAuthPath(), "utf-8"));
|
|
209
|
+
if (parsed?.clientId && parsed?.clientSecret && parsed?.cookieSecret)
|
|
210
|
+
return parsed;
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const ensureHubProject = (pat) => ensureZitadelProject(pat, HUB_PROJECT_NAME, { describe: "Hub platform app" });
|
|
218
|
+
async function ensureHubRoles(pat, projectId) {
|
|
219
|
+
for (const role of HUB_ROLES) {
|
|
220
|
+
try {
|
|
221
|
+
await api(pat, "POST", `/management/v1/projects/${projectId}/roles`, {
|
|
222
|
+
roleKey: role,
|
|
223
|
+
displayName: role,
|
|
224
|
+
});
|
|
225
|
+
logSuccess(`Created Hub role '${role}'`);
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
if (!isAlreadyExists(err))
|
|
229
|
+
throw err;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/** Union-merge the current-port redirect URIs into an existing Hub app's OIDC
|
|
234
|
+
* config. Needed whenever the app was seeded under a different MESH_HUB_PORT:
|
|
235
|
+
* devMode does NOT exempt an unregistered redirect_uri (Zitadel rejects the
|
|
236
|
+
* authorize call with "redirect_uri is missing in the client configuration"),
|
|
237
|
+
* it only permits http://. No-op when everything is already registered.
|
|
238
|
+
* Exported for tests. */
|
|
239
|
+
export async function reconcileHubRedirectUris(pat, projectId, app) {
|
|
240
|
+
const cfg = app?.oidcConfig ?? {};
|
|
241
|
+
const redirectUris = [
|
|
242
|
+
...new Set([...(cfg.redirectUris ?? []), hubRedirectUri(), HUB_DEFAULT_REDIRECT_URI]),
|
|
243
|
+
];
|
|
244
|
+
const postLogoutRedirectUris = [
|
|
245
|
+
...new Set([
|
|
246
|
+
...(cfg.postLogoutRedirectUris ?? []),
|
|
247
|
+
`http://localhost:${hubPort()}`,
|
|
248
|
+
`http://localhost:${DEFAULT_HUB_PORT}`,
|
|
249
|
+
]),
|
|
250
|
+
];
|
|
251
|
+
if (redirectUris.length === (cfg.redirectUris ?? []).length &&
|
|
252
|
+
postLogoutRedirectUris.length === (cfg.postLogoutRedirectUris ?? []).length) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
// UpdateOIDCAppConfig replaces the whole config — carry the fields we seed
|
|
256
|
+
// (falling back to the create-time shape; appType/authMethodType are
|
|
257
|
+
// re-asserted to the seeded values). Fields we never seed — e.g.
|
|
258
|
+
// additionalOrigins, clockSkew, backChannelLogoutUri — are NOT carried, so
|
|
259
|
+
// anything set out-of-band in the Zitadel console is dropped here. Fine for
|
|
260
|
+
// the local dev app; revisit before reusing against a shared instance.
|
|
261
|
+
await api(pat, "PUT", `/management/v1/projects/${projectId}/apps/${app.id}/oidc_config`, {
|
|
262
|
+
redirectUris,
|
|
263
|
+
postLogoutRedirectUris,
|
|
264
|
+
responseTypes: cfg.responseTypes ?? ["OIDC_RESPONSE_TYPE_CODE"],
|
|
265
|
+
grantTypes: cfg.grantTypes ?? ["OIDC_GRANT_TYPE_AUTHORIZATION_CODE", "OIDC_GRANT_TYPE_REFRESH_TOKEN"],
|
|
266
|
+
appType: "OIDC_APP_TYPE_WEB",
|
|
267
|
+
authMethodType: "OIDC_AUTH_METHOD_TYPE_BASIC",
|
|
268
|
+
accessTokenType: cfg.accessTokenType ?? "OIDC_TOKEN_TYPE_JWT",
|
|
269
|
+
accessTokenRoleAssertion: cfg.accessTokenRoleAssertion ?? true,
|
|
270
|
+
idTokenRoleAssertion: cfg.idTokenRoleAssertion ?? true,
|
|
271
|
+
idTokenUserinfoAssertion: cfg.idTokenUserinfoAssertion ?? true,
|
|
272
|
+
devMode: cfg.devMode ?? true,
|
|
273
|
+
});
|
|
274
|
+
logSuccess(`Registered Hub redirect URI http://localhost:${hubPort()}/oauth2/callback (MESH_HUB_PORT)`);
|
|
275
|
+
}
|
|
276
|
+
/** Ensure the Hub `ui` web application; heals a lost client secret (Zitadel
|
|
277
|
+
* returns it once — regenerate when the persisted copy is gone) and keeps the
|
|
278
|
+
* redirect URIs in sync with the configured Hub port. */
|
|
279
|
+
async function ensureHubApp(pat, projectId) {
|
|
280
|
+
const existing = await searchZitadelApp(pat, projectId, HUB_APP_NAME);
|
|
281
|
+
if (existing) {
|
|
282
|
+
await reconcileHubRedirectUris(pat, projectId, existing);
|
|
283
|
+
const clientId = existing?.oidcConfig?.clientId;
|
|
284
|
+
const persisted = readHubAuth();
|
|
285
|
+
if (persisted && persisted.clientId === clientId)
|
|
286
|
+
return { clientId };
|
|
287
|
+
const regenerated = await api(pat, "POST", `/management/v1/projects/${projectId}/apps/${existing.id}/oidc_config/_generate_client_secret`, {});
|
|
288
|
+
logSuccess(`Regenerated Hub UI client secret (local copy was missing)`);
|
|
289
|
+
return { clientId, clientSecret: regenerated.clientSecret };
|
|
290
|
+
}
|
|
291
|
+
const created = await api(pat, "POST", `/management/v1/projects/${projectId}/apps/oidc`, {
|
|
292
|
+
name: HUB_APP_NAME,
|
|
293
|
+
redirectUris: [...new Set([hubRedirectUri(), HUB_DEFAULT_REDIRECT_URI])],
|
|
294
|
+
postLogoutRedirectUris: [
|
|
295
|
+
...new Set([`http://localhost:${hubPort()}`, `http://localhost:${DEFAULT_HUB_PORT}`]),
|
|
296
|
+
],
|
|
297
|
+
responseTypes: ["OIDC_RESPONSE_TYPE_CODE"],
|
|
298
|
+
grantTypes: ["OIDC_GRANT_TYPE_AUTHORIZATION_CODE", "OIDC_GRANT_TYPE_REFRESH_TOKEN"],
|
|
299
|
+
appType: "OIDC_APP_TYPE_WEB",
|
|
300
|
+
authMethodType: "OIDC_AUTH_METHOD_TYPE_BASIC",
|
|
301
|
+
accessTokenType: "OIDC_TOKEN_TYPE_JWT",
|
|
302
|
+
accessTokenRoleAssertion: true,
|
|
303
|
+
idTokenRoleAssertion: true,
|
|
304
|
+
idTokenUserinfoAssertion: true,
|
|
305
|
+
devMode: true,
|
|
306
|
+
});
|
|
307
|
+
logSuccess(`Created Zitadel application '${HUB_APP_NAME}' (Hub UI web client, code flow)`);
|
|
308
|
+
return { clientId: created.clientId, clientSecret: created.clientSecret };
|
|
309
|
+
}
|
|
310
|
+
/** Grant Hub roles: admin@local.mesh + dev get `ops` (full dashboard),
|
|
311
|
+
* ops@local.mesh gets `developer` — proves per-user role claims. */
|
|
312
|
+
async function ensureHubGrants(pat, projectId) {
|
|
313
|
+
const grants = [
|
|
314
|
+
{ email: "admin@local.mesh", roles: ["ops"] },
|
|
315
|
+
{ email: "dev@local.mesh", roles: ["ops"] },
|
|
316
|
+
{ email: "ops@local.mesh", roles: ["developer"] },
|
|
317
|
+
];
|
|
318
|
+
for (const grant of grants) {
|
|
319
|
+
const search = await api(pat, "POST", "/management/v1/users/_search", {
|
|
320
|
+
queries: [{ userNameQuery: { userName: grant.email, method: "TEXT_QUERY_METHOD_EQUALS" } }],
|
|
321
|
+
});
|
|
322
|
+
const userId = search?.result?.[0]?.id;
|
|
323
|
+
if (!userId)
|
|
324
|
+
continue;
|
|
325
|
+
try {
|
|
326
|
+
await api(pat, "POST", `/management/v1/users/${userId}/grants`, {
|
|
327
|
+
projectId,
|
|
328
|
+
roleKeys: grant.roles,
|
|
329
|
+
});
|
|
330
|
+
logSuccess(`Granted Hub role(s) ${grant.roles.join(", ")} → ${grant.email}`);
|
|
331
|
+
}
|
|
332
|
+
catch (err) {
|
|
333
|
+
if (!isAlreadyExists(err))
|
|
334
|
+
throw err;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/** Seed the Hub's auth config; persists oauth2-proxy credentials locally. */
|
|
339
|
+
export async function seedHubAuth(pat) {
|
|
340
|
+
const projectId = await ensureHubProject(pat);
|
|
341
|
+
await ensureHubRoles(pat, projectId);
|
|
342
|
+
const app = await ensureHubApp(pat, projectId);
|
|
343
|
+
await ensureHubGrants(pat, projectId);
|
|
344
|
+
const persisted = readHubAuth();
|
|
345
|
+
// oauth2-proxy wants a RAW 16/24/32-byte cookie secret — the hosted
|
|
346
|
+
// sidecar uses a 32-char RandomPassword; mirror that.
|
|
347
|
+
const persistedCookie = persisted?.cookieSecret && [16, 24, 32].includes(persisted.cookieSecret.length)
|
|
348
|
+
? persisted.cookieSecret
|
|
349
|
+
: undefined;
|
|
350
|
+
const config = {
|
|
351
|
+
clientId: app.clientId,
|
|
352
|
+
clientSecret: app.clientSecret ?? persisted?.clientSecret ?? "",
|
|
353
|
+
cookieSecret: persistedCookie ?? (await import("crypto")).randomBytes(16).toString("hex"),
|
|
354
|
+
};
|
|
355
|
+
fs.writeFileSync(hubAuthPath(), JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
356
|
+
return config;
|
|
357
|
+
}
|
|
358
|
+
/** Registry parity: what SSM discovery and `mesh dev test-user` read in the cloud. */
|
|
359
|
+
async function writeRegistryParams(cliClientId, awsConfig) {
|
|
360
|
+
const { SSMClient, PutParameterCommand } = await import("@aws-sdk/client-ssm");
|
|
361
|
+
const ssm = new SSMClient(awsConfig);
|
|
362
|
+
await ssm.send(new PutParameterCommand({
|
|
363
|
+
Name: ZITADEL_SSM_PARAM,
|
|
364
|
+
Type: "String",
|
|
365
|
+
Overwrite: true,
|
|
366
|
+
Value: JSON.stringify({ endpoint: ZITADEL_ISSUER, cliClientId }),
|
|
367
|
+
Description: "Zitadel platform export (seeded by mesh start)",
|
|
368
|
+
}));
|
|
369
|
+
for (const user of TEST_USERS) {
|
|
370
|
+
await ssm.send(new PutParameterCommand({
|
|
371
|
+
Name: `${TEST_USERS_SSM_PREFIX}/${user.name}`,
|
|
372
|
+
Type: "String",
|
|
373
|
+
Overwrite: true,
|
|
374
|
+
Value: JSON.stringify({ email: user.email, password: user.password, roles: [] }),
|
|
375
|
+
Description: `Local test user '${user.name}' (dev-grade, seeded by mesh start)`,
|
|
376
|
+
}));
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
export async function seedZitadel(awsConfig) {
|
|
380
|
+
const pat = readSeederPat();
|
|
381
|
+
const org = await api(pat, "POST", "/admin/v1/orgs/_search", {
|
|
382
|
+
queries: [{ nameQuery: { name: PLATFORM_ORG, method: "TEXT_QUERY_METHOD_EQUALS" } }],
|
|
383
|
+
});
|
|
384
|
+
if (!org?.result?.[0]) {
|
|
385
|
+
throw new MeshCliError(`Platform org '${PLATFORM_ORG}' not found — the zitadel volume predates the org naming.`, { remediation: { command: "mesh stop --destroy && mesh start" } });
|
|
386
|
+
}
|
|
387
|
+
logSuccess(`Platform org '${PLATFORM_ORG}' ready (platform tenant root — holds platform-service auth config)`);
|
|
388
|
+
// Zitadel v4 defaults new instances to the login-v2 UI — a separate
|
|
389
|
+
// container this stack doesn't run. Pin the built-in v1 login so the
|
|
390
|
+
// authorize flow has a page to land on (idempotent; compose sets the
|
|
391
|
+
// same default at first-instance time).
|
|
392
|
+
try {
|
|
393
|
+
await api(pat, "PUT", "/v2/features/instance", { loginV2: { required: false } });
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
// pre-v4 instance or endpoint drift — v1 login is already the default
|
|
397
|
+
}
|
|
398
|
+
const projectId = await ensureCliProject(pat);
|
|
399
|
+
const cliClientId = await ensureCliApp(pat, projectId);
|
|
400
|
+
await ensureTestUsers(pat);
|
|
401
|
+
// Hub auth AFTER test users exist (role grants target them).
|
|
402
|
+
const hubAuth = await seedHubAuth(pat);
|
|
403
|
+
await writeRegistryParams(cliClientId, awsConfig);
|
|
404
|
+
writeContextConfig(LOGIN_CONTEXT, { issuer: ZITADEL_ISSUER, clientId: cliClientId });
|
|
405
|
+
logSuccess(`Login context '${LOGIN_CONTEXT}' configured → try: mesh login ${LOGIN_CONTEXT}`);
|
|
406
|
+
return { projectId, cliClientId, hubAuth };
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=seed-zitadel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-zitadel.js","sourceRoot":"","sources":["../../../../src/commands/local/seed-zitadel.ts"],"names":[],"mappings":"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"}
|