@mesh-tech/mesh-cli 0.20.2 → 0.20.4
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/dist/bin/mesh.d.ts +0 -12
- package/dist/bin/mesh.js +15 -13
- package/dist/bin/mesh.js.map +1 -2
- package/dist/build-info.json +2 -2
- package/dist/src/commands/agent-api-client.d.ts +0 -70
- package/dist/src/commands/agent-api-client.js +0 -80
- package/dist/src/commands/app-check.d.ts +0 -56
- package/dist/src/commands/app-check.js +0 -72
- package/dist/src/commands/artifacts.d.ts +0 -11
- package/dist/src/commands/artifacts.js +0 -33
- package/dist/src/commands/cluster.d.ts +0 -39
- package/dist/src/commands/cluster.js +0 -73
- package/dist/src/commands/conversations.d.ts +0 -36
- package/dist/src/commands/conversations.js +0 -59
- package/dist/src/commands/create-app.d.ts +0 -98
- package/dist/src/commands/create-app.js +1 -163
- package/dist/src/commands/db/connect.d.ts +0 -7
- package/dist/src/commands/db/connect.js +0 -9
- package/dist/src/commands/db/credentials.d.ts +0 -7
- package/dist/src/commands/db/credentials.js +0 -10
- package/dist/src/commands/db/env.d.ts +0 -6
- package/dist/src/commands/db/env.js +0 -14
- package/dist/src/commands/db/exec.d.ts +0 -43
- package/dist/src/commands/db/exec.js +0 -69
- package/dist/src/commands/db/index.d.ts +0 -10
- package/dist/src/commands/db/index.js +0 -10
- package/dist/src/commands/db/psql.d.ts +0 -7
- package/dist/src/commands/db/psql.js +0 -18
- package/dist/src/commands/deploy.d.ts +0 -38
- package/dist/src/commands/deploy.js +1 -76
- package/dist/src/commands/dev-doctor.d.ts +0 -82
- package/dist/src/commands/dev-doctor.js +3 -132
- package/dist/src/commands/dev-launch.d.ts +0 -52
- package/dist/src/commands/dev-launch.js +0 -56
- package/dist/src/commands/dev-token-server.d.ts +0 -18
- package/dist/src/commands/dev-token-server.js +1 -24
- package/dist/src/commands/dev.d.ts +0 -246
- package/dist/src/commands/dev.js +5 -963
- package/dist/src/commands/docs.d.ts +0 -1
- package/dist/src/commands/docs.js +0 -12
- package/dist/src/commands/hub/index.d.ts +0 -60
- package/dist/src/commands/hub/index.js +2 -139
- package/dist/src/commands/init/wizard.d.ts +0 -128
- package/dist/src/commands/init/wizard.js +0 -109
- package/dist/src/commands/init.d.ts +0 -55
- package/dist/src/commands/init.js +0 -70
- package/dist/src/commands/install-shim.d.ts +0 -23
- package/dist/src/commands/install-shim.js +2 -29
- package/dist/src/commands/local/auth-provision.d.ts +0 -80
- package/dist/src/commands/local/auth-provision.js +0 -109
- package/dist/src/commands/local/dev-local.d.ts +0 -91
- package/dist/src/commands/local/dev-local.js +0 -147
- package/dist/src/commands/local/docker-runner.d.ts +0 -22
- package/dist/src/commands/local/docker-runner.js +2 -35
- package/dist/src/commands/local/helpers.d.ts +0 -14
- package/dist/src/commands/local/helpers.js +0 -13
- package/dist/src/commands/local/hub-local.d.ts +0 -96
- package/dist/src/commands/local/hub-local.js +0 -111
- package/dist/src/commands/local/index.d.ts +0 -14
- package/dist/src/commands/local/index.js +0 -86
- package/dist/src/commands/local/mocks.d.ts +0 -269
- package/dist/src/commands/local/mocks.js +1 -274
- package/dist/src/commands/local/seed-hub-catalog.d.ts +0 -25
- package/dist/src/commands/local/seed-hub-catalog.js +0 -41
- package/dist/src/commands/local/seed-zitadel.d.ts +0 -82
- package/dist/src/commands/local/seed-zitadel.js +0 -158
- package/dist/src/commands/local/seed.d.ts +0 -64
- package/dist/src/commands/local/seed.js +0 -78
- package/dist/src/commands/local/stack.d.ts +0 -141
- package/dist/src/commands/local/stack.js +0 -153
- package/dist/src/commands/login.d.ts +0 -265
- package/dist/src/commands/login.js +4 -418
- package/dist/src/commands/peer-addressing.d.ts +0 -39
- package/dist/src/commands/peer-addressing.js +0 -37
- package/dist/src/commands/port-ownership.d.ts +0 -44
- package/dist/src/commands/port-ownership.js +0 -47
- package/dist/src/commands/registry-publish.d.ts +0 -1
- package/dist/src/commands/registry-publish.js +0 -46
- package/dist/src/commands/registry.d.ts +4 -237
- package/dist/src/commands/registry.js +2 -316
- package/dist/src/commands/secrets/exec.d.ts +0 -16
- package/dist/src/commands/secrets/exec.js +0 -24
- package/dist/src/commands/secrets/index.d.ts +0 -9
- package/dist/src/commands/secrets/index.js +0 -10
- package/dist/src/commands/secrets/migrate-config.d.ts +0 -17
- package/dist/src/commands/secrets/migrate-config.js +0 -40
- package/dist/src/commands/secrets/reindex.d.ts +0 -38
- package/dist/src/commands/secrets/reindex.js +0 -39
- package/dist/src/commands/secrets/set.d.ts +0 -47
- package/dist/src/commands/secrets/set.js +0 -107
- package/dist/src/commands/site.d.ts +0 -1
- package/dist/src/commands/site.js +0 -61
- package/dist/src/commands/skills.d.ts +0 -61
- package/dist/src/commands/skills.js +0 -83
- package/dist/src/commands/stack.d.ts +0 -15
- package/dist/src/commands/stack.js +1 -128
- package/dist/src/commands/temporal.d.ts +0 -30
- package/dist/src/commands/temporal.js +3 -1
- package/dist/src/commands/temporal.js.map +1 -2
- package/dist/src/commands/tenant.d.ts +0 -31
- package/dist/src/commands/tenant.js +0 -55
- package/dist/src/commands/tunnel/index.d.ts +0 -40
- package/dist/src/commands/tunnel/index.js +0 -141
- package/dist/src/commands/vcs/clone.d.ts +0 -1
- package/dist/src/commands/vcs/clone.js +0 -4
- package/dist/src/commands/vcs/common.d.ts +0 -32
- package/dist/src/commands/vcs/common.js +0 -41
- package/dist/src/commands/vcs/drafts.d.ts +0 -1
- package/dist/src/commands/vcs/drafts.js +0 -1
- package/dist/src/commands/vcs/get.d.ts +0 -1
- package/dist/src/commands/vcs/get.js +0 -11
- package/dist/src/commands/vcs/index.d.ts +0 -1
- package/dist/src/commands/vcs/index.js +0 -1
- package/dist/src/commands/vcs/propose.d.ts +0 -26
- package/dist/src/commands/vcs/propose.js +3 -34
- package/dist/src/commands/vcs/review.d.ts +0 -1
- package/dist/src/commands/vcs/review.js +0 -1
- package/dist/src/commands/vcs/rm.d.ts +0 -11
- package/dist/src/commands/vcs/rm.js +0 -14
- package/dist/src/commands/vcs-enrich.d.ts +0 -12
- package/dist/src/commands/vcs-enrich.js +0 -12
- package/dist/src/commands/vpn/index.d.ts +0 -17
- package/dist/src/commands/vpn/index.js +0 -102
- package/dist/src/commands/vpn/tunnel.d.ts +0 -9
- package/dist/src/commands/vpn/tunnel.js +0 -37
- package/dist/src/commands/workflow.d.ts +0 -22
- package/dist/src/commands/workflow.js +0 -80
- package/dist/src/docs/assemble.d.ts +0 -117
- package/dist/src/docs/assemble.js +0 -142
- package/dist/src/docs/cli-reference.d.ts +0 -58
- package/dist/src/docs/cli-reference.js +0 -77
- package/dist/src/docs/discover.d.ts +0 -40
- package/dist/src/docs/discover.js +2 -60
- package/dist/src/docs/portal.d.ts +0 -44
- package/dist/src/docs/portal.js +0 -49
- package/dist/src/docs/registry-docs.d.ts +0 -29
- package/dist/src/docs/registry-docs.js +0 -40
- package/dist/src/docs/schema.d.ts +0 -36
- package/dist/src/docs/schema.js +0 -52
- package/dist/src/docs/serve.d.ts +0 -18
- package/dist/src/docs/serve.js +2 -30
- package/dist/src/docs/start.d.ts +0 -42
- package/dist/src/docs/start.js +0 -70
- package/dist/src/eval/agent-eval.d.mts +0 -12
- package/dist/src/eval/agent-eval.mjs +0 -22
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.js.map +0 -1
- package/dist/src/program.d.ts +0 -20
- package/dist/src/program.js +0 -24
- package/dist/src/utils/auth-preflight.d.ts +0 -137
- package/dist/src/utils/auth-preflight.js +0 -149
- package/dist/src/utils/aws-auth.d.ts +0 -163
- package/dist/src/utils/aws-auth.js +3 -232
- package/dist/src/utils/bastion.d.ts +0 -27
- package/dist/src/utils/bastion.js +0 -28
- package/dist/src/utils/build-info.d.ts +0 -22
- package/dist/src/utils/build-info.js +0 -27
- package/dist/src/utils/cache-home.d.ts +0 -23
- package/dist/src/utils/cache-home.js +0 -25
- package/dist/src/utils/capture-history.d.ts +0 -54
- package/dist/src/utils/capture-history.js +1 -55
- package/dist/src/utils/context.d.ts +0 -23
- package/dist/src/utils/context.js +0 -43
- package/dist/src/utils/credentials.d.ts +0 -38
- package/dist/src/utils/credentials.js +0 -39
- package/dist/src/utils/deploy-preflight.d.ts +0 -38
- package/dist/src/utils/deploy-preflight.js +1 -71
- package/dist/src/utils/errors.d.ts +0 -53
- package/dist/src/utils/errors.js +0 -49
- package/dist/src/utils/first-party-contexts.d.ts +0 -38
- package/dist/src/utils/first-party-contexts.js +0 -44
- package/dist/src/utils/index.d.ts +0 -4
- package/dist/src/utils/index.js +0 -4
- package/dist/src/utils/kubeconfig.d.ts +0 -40
- package/dist/src/utils/kubeconfig.js +0 -44
- package/dist/src/utils/log.d.ts +0 -20
- package/dist/src/utils/log.js +0 -20
- package/dist/src/utils/mesh-json.d.ts +0 -46
- package/dist/src/utils/mesh-json.js +0 -39
- package/dist/src/utils/pid.d.ts +0 -42
- package/dist/src/utils/pid.js +0 -48
- package/dist/src/utils/pulumi-run.d.ts +0 -14
- package/dist/src/utils/pulumi-run.js +0 -42
- package/dist/src/utils/pulumi.d.ts +0 -34
- package/dist/src/utils/pulumi.js +0 -38
- package/dist/src/utils/reachability.d.ts +0 -27
- package/dist/src/utils/reachability.js +0 -40
- package/dist/src/utils/recover-conversation.d.ts +0 -110
- package/dist/src/utils/recover-conversation.js +0 -108
- package/dist/src/utils/registry-broker.d.ts +5 -84
- package/dist/src/utils/registry-broker.js +0 -62
- package/dist/src/utils/registry-identity.d.ts +0 -149
- package/dist/src/utils/registry-identity.js +0 -143
- package/dist/src/utils/scaffold-versions.d.ts +0 -41
- package/dist/src/utils/scaffold-versions.js +0 -42
- package/dist/src/utils/socks-forward.d.ts +0 -24
- package/dist/src/utils/socks-forward.js +2 -25
- package/dist/src/utils/stack-flag.d.ts +0 -13
- package/dist/src/utils/stack-flag.js +0 -21
- package/dist/src/utils/tailscale-targets.d.ts +0 -37
- package/dist/src/utils/tailscale-targets.js +0 -33
- package/dist/src/utils/tailscale.d.ts +0 -177
- package/dist/src/utils/tailscale.js +6 -337
- package/dist/src/utils/temporal-auth.d.ts +0 -41
- package/dist/src/utils/temporal-auth.js +0 -52
- package/dist/src/utils/temporal-codec.d.ts +0 -89
- package/dist/src/utils/temporal-codec.js.map +0 -1
- package/dist/src/utils/tunnel-ownership.d.ts +0 -79
- package/dist/src/utils/tunnel-ownership.js +0 -74
- package/dist/src/utils/vpn-join.d.ts +0 -16
- package/dist/src/utils/vpn-join.js +0 -17
- package/dist/src/utils/vpn.d.ts +0 -42
- package/dist/src/utils/vpn.js +0 -52
- package/dist/src/utils/workflow-fingerprint.d.ts +0 -39
- package/dist/src/utils/workflow-fingerprint.js +1 -63
- package/dist/src/utils/worktree-identity.d.ts +0 -62
- package/dist/src/utils/worktree-identity.js +0 -88
- package/package.json +2 -2
- package/skills/core/SKILL.md +9 -10
- package/templates/api-auth/api/src/index.ts.hbs +1 -1
- package/templates/api-auth/api/src/spicedb-http-provider.ts.hbs +2 -2
- package/templates/api-role-gating/api/src/authn.ts.hbs +2 -2
- package/templates/api-role-gating/index.ts.hbs +1 -1
- package/templates/api-role-gating/skills/develop/SKILL.md.hbs +1 -1
- package/templates/platform-repo/core/Pulumi.{{tenant}}-{{env}}.yaml.hbs +2 -2
- package/templates/platform-repo/platform/index.ts +1 -1
- package/dist/bin/mesh.d.ts.map +0 -1
- package/dist/src/commands/agent-api-client.d.ts.map +0 -1
- package/dist/src/commands/agent-api-client.js.map +0 -1
- package/dist/src/commands/app-check.d.ts.map +0 -1
- package/dist/src/commands/app-check.js.map +0 -1
- package/dist/src/commands/artifacts.d.ts.map +0 -1
- package/dist/src/commands/artifacts.js.map +0 -1
- package/dist/src/commands/cluster.d.ts.map +0 -1
- package/dist/src/commands/cluster.js.map +0 -1
- package/dist/src/commands/conversations.d.ts.map +0 -1
- package/dist/src/commands/conversations.js.map +0 -1
- package/dist/src/commands/create-app.d.ts.map +0 -1
- package/dist/src/commands/create-app.js.map +0 -1
- package/dist/src/commands/db/connect.d.ts.map +0 -1
- package/dist/src/commands/db/connect.js.map +0 -1
- package/dist/src/commands/db/credentials.d.ts.map +0 -1
- package/dist/src/commands/db/credentials.js.map +0 -1
- package/dist/src/commands/db/env.d.ts.map +0 -1
- package/dist/src/commands/db/env.js.map +0 -1
- package/dist/src/commands/db/exec.d.ts.map +0 -1
- package/dist/src/commands/db/exec.js.map +0 -1
- package/dist/src/commands/db/index.d.ts.map +0 -1
- package/dist/src/commands/db/index.js.map +0 -1
- package/dist/src/commands/db/psql.d.ts.map +0 -1
- package/dist/src/commands/db/psql.js.map +0 -1
- package/dist/src/commands/deploy.d.ts.map +0 -1
- package/dist/src/commands/deploy.js.map +0 -1
- package/dist/src/commands/dev-doctor.d.ts.map +0 -1
- package/dist/src/commands/dev-doctor.js.map +0 -1
- package/dist/src/commands/dev-launch.d.ts.map +0 -1
- package/dist/src/commands/dev-launch.js.map +0 -1
- package/dist/src/commands/dev-token-server.d.ts.map +0 -1
- package/dist/src/commands/dev-token-server.js.map +0 -1
- package/dist/src/commands/dev.d.ts.map +0 -1
- package/dist/src/commands/dev.js.map +0 -1
- package/dist/src/commands/docs.d.ts.map +0 -1
- package/dist/src/commands/docs.js.map +0 -1
- package/dist/src/commands/hub/index.d.ts.map +0 -1
- package/dist/src/commands/hub/index.js.map +0 -1
- package/dist/src/commands/init/wizard.d.ts.map +0 -1
- package/dist/src/commands/init/wizard.js.map +0 -1
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js.map +0 -1
- package/dist/src/commands/install-shim.d.ts.map +0 -1
- package/dist/src/commands/install-shim.js.map +0 -1
- package/dist/src/commands/local/auth-provision.d.ts.map +0 -1
- package/dist/src/commands/local/auth-provision.js.map +0 -1
- package/dist/src/commands/local/dev-local.d.ts.map +0 -1
- package/dist/src/commands/local/dev-local.js.map +0 -1
- package/dist/src/commands/local/docker-runner.d.ts.map +0 -1
- package/dist/src/commands/local/docker-runner.js.map +0 -1
- package/dist/src/commands/local/helpers.d.ts.map +0 -1
- package/dist/src/commands/local/helpers.js.map +0 -1
- package/dist/src/commands/local/hub-local.d.ts.map +0 -1
- package/dist/src/commands/local/hub-local.js.map +0 -1
- package/dist/src/commands/local/index.d.ts.map +0 -1
- package/dist/src/commands/local/index.js.map +0 -1
- package/dist/src/commands/local/mocks.d.ts.map +0 -1
- package/dist/src/commands/local/mocks.js.map +0 -1
- package/dist/src/commands/local/seed-hub-catalog.d.ts.map +0 -1
- package/dist/src/commands/local/seed-hub-catalog.js.map +0 -1
- package/dist/src/commands/local/seed-zitadel.d.ts.map +0 -1
- package/dist/src/commands/local/seed-zitadel.js.map +0 -1
- package/dist/src/commands/local/seed.d.ts.map +0 -1
- package/dist/src/commands/local/seed.js.map +0 -1
- package/dist/src/commands/local/stack.d.ts.map +0 -1
- package/dist/src/commands/local/stack.js.map +0 -1
- package/dist/src/commands/login.d.ts.map +0 -1
- package/dist/src/commands/login.js.map +0 -1
- package/dist/src/commands/peer-addressing.d.ts.map +0 -1
- package/dist/src/commands/peer-addressing.js.map +0 -1
- package/dist/src/commands/port-ownership.d.ts.map +0 -1
- package/dist/src/commands/port-ownership.js.map +0 -1
- package/dist/src/commands/registry-publish.d.ts.map +0 -1
- package/dist/src/commands/registry-publish.js.map +0 -1
- package/dist/src/commands/registry.d.ts.map +0 -1
- package/dist/src/commands/registry.js.map +0 -1
- package/dist/src/commands/secrets/exec.d.ts.map +0 -1
- package/dist/src/commands/secrets/exec.js.map +0 -1
- package/dist/src/commands/secrets/index.d.ts.map +0 -1
- package/dist/src/commands/secrets/index.js.map +0 -1
- package/dist/src/commands/secrets/migrate-config.d.ts.map +0 -1
- package/dist/src/commands/secrets/migrate-config.js.map +0 -1
- package/dist/src/commands/secrets/reindex.d.ts.map +0 -1
- package/dist/src/commands/secrets/reindex.js.map +0 -1
- package/dist/src/commands/secrets/set.d.ts.map +0 -1
- package/dist/src/commands/secrets/set.js.map +0 -1
- package/dist/src/commands/site.d.ts.map +0 -1
- package/dist/src/commands/site.js.map +0 -1
- package/dist/src/commands/skills.d.ts.map +0 -1
- package/dist/src/commands/skills.js.map +0 -1
- package/dist/src/commands/stack.d.ts.map +0 -1
- package/dist/src/commands/stack.js.map +0 -1
- package/dist/src/commands/temporal.d.ts.map +0 -1
- package/dist/src/commands/tenant.d.ts.map +0 -1
- package/dist/src/commands/tenant.js.map +0 -1
- package/dist/src/commands/tunnel/index.d.ts.map +0 -1
- package/dist/src/commands/tunnel/index.js.map +0 -1
- package/dist/src/commands/vcs/clone.d.ts.map +0 -1
- package/dist/src/commands/vcs/clone.js.map +0 -1
- package/dist/src/commands/vcs/common.d.ts.map +0 -1
- package/dist/src/commands/vcs/common.js.map +0 -1
- package/dist/src/commands/vcs/drafts.d.ts.map +0 -1
- package/dist/src/commands/vcs/drafts.js.map +0 -1
- package/dist/src/commands/vcs/get.d.ts.map +0 -1
- package/dist/src/commands/vcs/get.js.map +0 -1
- package/dist/src/commands/vcs/index.d.ts.map +0 -1
- package/dist/src/commands/vcs/index.js.map +0 -1
- package/dist/src/commands/vcs/propose.d.ts.map +0 -1
- package/dist/src/commands/vcs/propose.js.map +0 -1
- package/dist/src/commands/vcs/review.d.ts.map +0 -1
- package/dist/src/commands/vcs/review.js.map +0 -1
- package/dist/src/commands/vcs/rm.d.ts.map +0 -1
- package/dist/src/commands/vcs/rm.js.map +0 -1
- package/dist/src/commands/vcs-enrich.d.ts.map +0 -1
- package/dist/src/commands/vcs-enrich.js.map +0 -1
- package/dist/src/commands/vpn/index.d.ts.map +0 -1
- package/dist/src/commands/vpn/index.js.map +0 -1
- package/dist/src/commands/vpn/tunnel.d.ts.map +0 -1
- package/dist/src/commands/vpn/tunnel.js.map +0 -1
- package/dist/src/commands/workflow.d.ts.map +0 -1
- package/dist/src/commands/workflow.js.map +0 -1
- package/dist/src/docs/assemble.d.ts.map +0 -1
- package/dist/src/docs/assemble.js.map +0 -1
- package/dist/src/docs/cli-reference.d.ts.map +0 -1
- package/dist/src/docs/cli-reference.js.map +0 -1
- package/dist/src/docs/discover.d.ts.map +0 -1
- package/dist/src/docs/discover.js.map +0 -1
- package/dist/src/docs/portal.d.ts.map +0 -1
- package/dist/src/docs/portal.js.map +0 -1
- package/dist/src/docs/registry-docs.d.ts.map +0 -1
- package/dist/src/docs/registry-docs.js.map +0 -1
- package/dist/src/docs/schema.d.ts.map +0 -1
- package/dist/src/docs/schema.js.map +0 -1
- package/dist/src/docs/serve.d.ts.map +0 -1
- package/dist/src/docs/serve.js.map +0 -1
- package/dist/src/docs/start.d.ts.map +0 -1
- package/dist/src/docs/start.js.map +0 -1
- package/dist/src/eval/agent-eval.d.mts.map +0 -1
- package/dist/src/eval/agent-eval.mjs.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/program.d.ts.map +0 -1
- package/dist/src/program.js.map +0 -1
- package/dist/src/utils/auth-preflight.d.ts.map +0 -1
- package/dist/src/utils/auth-preflight.js.map +0 -1
- package/dist/src/utils/aws-auth.d.ts.map +0 -1
- package/dist/src/utils/aws-auth.js.map +0 -1
- package/dist/src/utils/bastion.d.ts.map +0 -1
- package/dist/src/utils/bastion.js.map +0 -1
- package/dist/src/utils/build-info.d.ts.map +0 -1
- package/dist/src/utils/build-info.js.map +0 -1
- package/dist/src/utils/cache-home.d.ts.map +0 -1
- package/dist/src/utils/cache-home.js.map +0 -1
- package/dist/src/utils/capture-history.d.ts.map +0 -1
- package/dist/src/utils/capture-history.js.map +0 -1
- package/dist/src/utils/context.d.ts.map +0 -1
- package/dist/src/utils/context.js.map +0 -1
- package/dist/src/utils/credentials.d.ts.map +0 -1
- package/dist/src/utils/credentials.js.map +0 -1
- package/dist/src/utils/deploy-preflight.d.ts.map +0 -1
- package/dist/src/utils/deploy-preflight.js.map +0 -1
- package/dist/src/utils/errors.d.ts.map +0 -1
- package/dist/src/utils/errors.js.map +0 -1
- package/dist/src/utils/first-party-contexts.d.ts.map +0 -1
- package/dist/src/utils/first-party-contexts.js.map +0 -1
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/kubeconfig.d.ts.map +0 -1
- package/dist/src/utils/kubeconfig.js.map +0 -1
- package/dist/src/utils/log.d.ts.map +0 -1
- package/dist/src/utils/log.js.map +0 -1
- package/dist/src/utils/mesh-json.d.ts.map +0 -1
- package/dist/src/utils/mesh-json.js.map +0 -1
- package/dist/src/utils/pid.d.ts.map +0 -1
- package/dist/src/utils/pid.js.map +0 -1
- package/dist/src/utils/pulumi-run.d.ts.map +0 -1
- package/dist/src/utils/pulumi-run.js.map +0 -1
- package/dist/src/utils/pulumi.d.ts.map +0 -1
- package/dist/src/utils/pulumi.js.map +0 -1
- package/dist/src/utils/reachability.d.ts.map +0 -1
- package/dist/src/utils/reachability.js.map +0 -1
- package/dist/src/utils/recover-conversation.d.ts.map +0 -1
- package/dist/src/utils/recover-conversation.js.map +0 -1
- package/dist/src/utils/registry-broker.d.ts.map +0 -1
- package/dist/src/utils/registry-broker.js.map +0 -1
- package/dist/src/utils/registry-identity.d.ts.map +0 -1
- package/dist/src/utils/registry-identity.js.map +0 -1
- package/dist/src/utils/scaffold-versions.d.ts.map +0 -1
- package/dist/src/utils/scaffold-versions.js.map +0 -1
- package/dist/src/utils/socks-forward.d.ts.map +0 -1
- package/dist/src/utils/socks-forward.js.map +0 -1
- package/dist/src/utils/stack-flag.d.ts.map +0 -1
- package/dist/src/utils/stack-flag.js.map +0 -1
- package/dist/src/utils/tailscale-targets.d.ts.map +0 -1
- package/dist/src/utils/tailscale-targets.js.map +0 -1
- package/dist/src/utils/tailscale.d.ts.map +0 -1
- package/dist/src/utils/tailscale.js.map +0 -1
- package/dist/src/utils/temporal-auth.d.ts.map +0 -1
- package/dist/src/utils/temporal-auth.js.map +0 -1
- package/dist/src/utils/temporal-codec.d.ts.map +0 -1
- package/dist/src/utils/tunnel-ownership.d.ts.map +0 -1
- package/dist/src/utils/tunnel-ownership.js.map +0 -1
- package/dist/src/utils/vpn-join.d.ts.map +0 -1
- package/dist/src/utils/vpn-join.js.map +0 -1
- package/dist/src/utils/vpn.d.ts.map +0 -1
- package/dist/src/utils/vpn.js.map +0 -1
- package/dist/src/utils/workflow-fingerprint.d.ts.map +0 -1
- package/dist/src/utils/workflow-fingerprint.js.map +0 -1
- package/dist/src/utils/worktree-identity.d.ts.map +0 -1
- package/dist/src/utils/worktree-identity.js.map +0 -1
|
@@ -122,15 +122,7 @@ async function buildDocs(configPathArg) {
|
|
|
122
122
|
}
|
|
123
123
|
logSuccess(`Docs build complete (${generatedSpecs.size} OpenAPI file${generatedSpecs.size === 1 ? "" : "s"})`);
|
|
124
124
|
}
|
|
125
|
-
/** Default location of the committed, reviewable CLI reference. */
|
|
126
125
|
const CLI_REFERENCE_PATH = "docs/portal/generated/cli-reference.md";
|
|
127
|
-
/**
|
|
128
|
-
* Render the CLI reference markdown.
|
|
129
|
-
*
|
|
130
|
-
* `../program.js` is imported dynamically because it imports this module —
|
|
131
|
-
* a static import would close the cycle. It also keeps the whole command tree
|
|
132
|
-
* out of the module graph for every other `mesh` invocation.
|
|
133
|
-
*/
|
|
134
126
|
async function renderCliReference() {
|
|
135
127
|
const [{ createProgram }, { extractCliReference, renderCliReferenceMarkdown }] = await Promise.all([
|
|
136
128
|
import("../program.js"),
|
|
@@ -138,7 +130,6 @@ async function renderCliReference() {
|
|
|
138
130
|
]);
|
|
139
131
|
return renderCliReferenceMarkdown(extractCliReference(createProgram()));
|
|
140
132
|
}
|
|
141
|
-
/** Wrap an action so any thrown error becomes a one-line failure + exit 1. */
|
|
142
133
|
function guarded(action) {
|
|
143
134
|
return async () => {
|
|
144
135
|
try {
|
|
@@ -241,8 +232,6 @@ export function registerDocsCommand(program) {
|
|
|
241
232
|
const { runDocsStop } = await import("../docs/start.js");
|
|
242
233
|
runDocsStop();
|
|
243
234
|
})());
|
|
244
|
-
// Hidden: the tmux session re-enters through this. Not in the reference —
|
|
245
|
-
// cli-reference excludes hidden commands by design.
|
|
246
235
|
docs
|
|
247
236
|
.command("serve-static", { hidden: true })
|
|
248
237
|
.option("--root <dir>", "built site root", "")
|
|
@@ -259,4 +248,3 @@ export function registerDocsCommand(program) {
|
|
|
259
248
|
await runDocsList();
|
|
260
249
|
})());
|
|
261
250
|
}
|
|
262
|
-
//# sourceMappingURL=docs.js.map
|
|
@@ -1,29 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* mesh hub dev — one-command local Hub over a running dev-local stack (MESH-2275).
|
|
3
|
-
*
|
|
4
|
-
* Launches the CURRENT-CODE Hub (apps/hub api + ui from a mesh-platform
|
|
5
|
-
* checkout) pointed at an existing `mesh dev` session's stack, auto-assembling
|
|
6
|
-
* the env that used to be hand-set (the FUB-demo runbook §6 recipe):
|
|
7
|
-
*
|
|
8
|
-
* HUB_TENANT / HUB_SCOPE_ENV / HUB_SCOPE_TENANTS from the session's platform context
|
|
9
|
-
* TEMPORAL_ADDRESS from the session's tunnel (VPN or SSM)
|
|
10
|
-
* AWS_* from the session's scratch credential_process profile
|
|
11
|
-
* DEV_USER_* / DEV_USER_TOKEN_URL from the session's injected dev identity +
|
|
12
|
-
* per-session token-server (MESH-2039)
|
|
13
|
-
*
|
|
14
|
-
* The `mesh dev` session already resolved all of these — its tmux session
|
|
15
|
-
* environment and state file (`$TMPDIR/mesh-dev-sessions/<name>.json`) are the
|
|
16
|
-
* source of truth; this command only reads them and never mutates the app
|
|
17
|
-
* session.
|
|
18
|
-
*
|
|
19
|
-
* Scoped-tenant enumeration is validated up front: HUB_SCOPE_ENV without a
|
|
20
|
-
* non-empty HUB_SCOPE_TENANTS makes the Hub API silently return zero
|
|
21
|
-
* registrations (apps/hub/api/src/lib/ssm/reader.ts), so that combination is
|
|
22
|
-
* a loud error here, never an empty Hub.
|
|
23
|
-
*/
|
|
24
1
|
import { Command } from "commander";
|
|
25
2
|
import { type SessionState } from "../dev.js";
|
|
26
|
-
/** tmux session the Hub runs in — fixed, one local Hub at a time. */
|
|
27
3
|
export declare const HUB_SESSION = "mesh-hub-dev";
|
|
28
4
|
export declare const DEFAULT_HUB_UI_PORT: number;
|
|
29
5
|
export declare const DEFAULT_HUB_API_PORT = 3002;
|
|
@@ -32,28 +8,14 @@ export interface DiscoveredSession {
|
|
|
32
8
|
state: SessionState;
|
|
33
9
|
}
|
|
34
10
|
export declare function devSessionsDir(): string;
|
|
35
|
-
/** All persisted `mesh dev` session states (unparseable files skipped). */
|
|
36
11
|
export declare function listDevSessions(dir?: string): DiscoveredSession[];
|
|
37
|
-
/**
|
|
38
|
-
* Pick the dev session to point the Hub at.
|
|
39
|
-
*
|
|
40
|
-
* 1. --session <name> wins (error if its state file is missing).
|
|
41
|
-
* 2. The session whose appRoot equals the cwd's app root (both sides come
|
|
42
|
-
* from findAppRoot, so exact equality is the right comparison).
|
|
43
|
-
* 3. A sole running session.
|
|
44
|
-
*
|
|
45
|
-
* Ambiguity (multiple sessions, none matching cwd) is an error listing the
|
|
46
|
-
* candidates — never a silent guess.
|
|
47
|
-
*/
|
|
48
12
|
export declare function pickDevSession(sessions: DiscoveredSession[], opts: {
|
|
49
13
|
session?: string;
|
|
50
14
|
cwdAppRoot?: string | null;
|
|
51
15
|
}): DiscoveredSession;
|
|
52
|
-
/** Parse `tmux show-environment` output (`KEY=value` lines; `-KEY` = unset). */
|
|
53
16
|
export declare function parseTmuxEnv(output: string): Record<string, string>;
|
|
54
17
|
export declare function forwardedSessionVars(sessionEnv: Record<string, string>): Record<string, string>;
|
|
55
18
|
export interface HubDevEnvOptions {
|
|
56
|
-
/** Comma-separated tenant override (--tenants). */
|
|
57
19
|
tenants?: string;
|
|
58
20
|
uiPort: number;
|
|
59
21
|
apiPort: number;
|
|
@@ -61,7 +23,6 @@ export interface HubDevEnvOptions {
|
|
|
61
23
|
export interface AssembledHubEnv {
|
|
62
24
|
apiEnv: Record<string, string>;
|
|
63
25
|
uiEnv: Record<string, string>;
|
|
64
|
-
/** Human-readable scope summary for the launch banner. */
|
|
65
26
|
scope: {
|
|
66
27
|
hubTenant: string;
|
|
67
28
|
scopeEnv: string;
|
|
@@ -69,31 +30,10 @@ export interface AssembledHubEnv {
|
|
|
69
30
|
};
|
|
70
31
|
temporalAddress: string;
|
|
71
32
|
warnings: string[];
|
|
72
|
-
/** Informational — things the command is handling itself, not user problems. */
|
|
73
33
|
notes: string[];
|
|
74
34
|
}
|
|
75
|
-
/**
|
|
76
|
-
* Assemble the Hub api/ui env from a discovered dev session. Throws loudly on
|
|
77
|
-
* the combinations that today produce a silently-empty Hub.
|
|
78
|
-
*/
|
|
79
35
|
export declare function assembleHubEnv(session: DiscoveredSession, sessionEnv: Record<string, string>, opts: HubDevEnvOptions): AssembledHubEnv;
|
|
80
|
-
/**
|
|
81
|
-
* Locate the mesh-platform checkout the Hub runs from:
|
|
82
|
-
* --platform-dir → $MESH_PLATFORM_DIR → walk up from cwd (monorepo case).
|
|
83
|
-
*
|
|
84
|
-
* An invalid `--platform-dir` is fatal (the user named it explicitly), but a
|
|
85
|
-
* stale `MESH_PLATFORM_DIR` left over in the shell only warns and falls through
|
|
86
|
-
* to the cwd walk-up — otherwise it would hard-fail runs made from inside a
|
|
87
|
-
* perfectly good checkout.
|
|
88
|
-
*/
|
|
89
36
|
export declare function resolvePlatformDir(explicit: string | undefined, cwd: string, env?: Record<string, string | undefined>): string;
|
|
90
|
-
/**
|
|
91
|
-
* Parse a port option, naming its source in the error. Without this a typo'd
|
|
92
|
-
* `--port` (or a stale non-numeric `MESH_HUB_DEV_PORT` left in the shell) becomes
|
|
93
|
-
* `NaN`, lands in the env file as `PORT=NaN`, and reaches `net.connect` — which
|
|
94
|
-
* throws a raw `ERR_SOCKET_BAD_PORT` instead of an actionable CLI error.
|
|
95
|
-
*/
|
|
96
37
|
export declare function parsePort(raw: string | undefined, fallback: number, source: string): number;
|
|
97
38
|
export declare function redactEnv(env: Record<string, string>): Record<string, string>;
|
|
98
39
|
export declare function registerHubCommands(program: Command): void;
|
|
99
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* mesh hub dev — one-command local Hub over a running dev-local stack (MESH-2275).
|
|
3
|
-
*
|
|
4
|
-
* Launches the CURRENT-CODE Hub (apps/hub api + ui from a mesh-platform
|
|
5
|
-
* checkout) pointed at an existing `mesh dev` session's stack, auto-assembling
|
|
6
|
-
* the env that used to be hand-set (the FUB-demo runbook §6 recipe):
|
|
7
|
-
*
|
|
8
|
-
* HUB_TENANT / HUB_SCOPE_ENV / HUB_SCOPE_TENANTS from the session's platform context
|
|
9
|
-
* TEMPORAL_ADDRESS from the session's tunnel (VPN or SSM)
|
|
10
|
-
* AWS_* from the session's scratch credential_process profile
|
|
11
|
-
* DEV_USER_* / DEV_USER_TOKEN_URL from the session's injected dev identity +
|
|
12
|
-
* per-session token-server (MESH-2039)
|
|
13
|
-
*
|
|
14
|
-
* The `mesh dev` session already resolved all of these — its tmux session
|
|
15
|
-
* environment and state file (`$TMPDIR/mesh-dev-sessions/<name>.json`) are the
|
|
16
|
-
* source of truth; this command only reads them and never mutates the app
|
|
17
|
-
* session.
|
|
18
|
-
*
|
|
19
|
-
* Scoped-tenant enumeration is validated up front: HUB_SCOPE_ENV without a
|
|
20
|
-
* non-empty HUB_SCOPE_TENANTS makes the Hub API silently return zero
|
|
21
|
-
* registrations (apps/hub/api/src/lib/ssm/reader.ts), so that combination is
|
|
22
|
-
* a loud error here, never an empty Hub.
|
|
23
|
-
*/
|
|
24
1
|
import { execFileSync } from "node:child_process";
|
|
25
2
|
import * as fs from "node:fs";
|
|
26
3
|
import * as net from "node:net";
|
|
@@ -33,19 +10,12 @@ import { MeshCliError } from "../../utils/errors.js";
|
|
|
33
10
|
import { DEFAULT_HUB_PORT } from "../local/stack.js";
|
|
34
11
|
import { logInfo, logSuccess, logWarn } from "../../utils/log.js";
|
|
35
12
|
import { findAppRoot } from "../../utils/pulumi.js";
|
|
36
|
-
/** tmux session the Hub runs in — fixed, one local Hub at a time. */
|
|
37
13
|
export const HUB_SESSION = "mesh-hub-dev";
|
|
38
|
-
// Same default as the containerized Hub (local/stack.ts DEFAULT_HUB_PORT),
|
|
39
|
-
// but a SEPARATE override variable: MESH_HUB_PORT moves the containerized
|
|
40
|
-
// Hub's published port, MESH_HUB_DEV_PORT moves this dev-server Hub. The two
|
|
41
|
-
// are built to run side by side — one shared variable would make "move the
|
|
42
|
-
// containerized Hub off 9000" also move the dev server onto the same port.
|
|
43
14
|
export const DEFAULT_HUB_UI_PORT = Number(DEFAULT_HUB_PORT);
|
|
44
15
|
export const DEFAULT_HUB_API_PORT = 3002;
|
|
45
16
|
export function devSessionsDir() {
|
|
46
17
|
return path.join(os.tmpdir(), "mesh-dev-sessions");
|
|
47
18
|
}
|
|
48
|
-
/** All persisted `mesh dev` session states (unparseable files skipped). */
|
|
49
19
|
export function listDevSessions(dir = devSessionsDir()) {
|
|
50
20
|
if (!fs.existsSync(dir))
|
|
51
21
|
return [];
|
|
@@ -60,22 +30,10 @@ export function listDevSessions(dir = devSessionsDir()) {
|
|
|
60
30
|
}
|
|
61
31
|
}
|
|
62
32
|
catch {
|
|
63
|
-
// stale/corrupt state file — not a candidate
|
|
64
33
|
}
|
|
65
34
|
}
|
|
66
35
|
return sessions;
|
|
67
36
|
}
|
|
68
|
-
/**
|
|
69
|
-
* Pick the dev session to point the Hub at.
|
|
70
|
-
*
|
|
71
|
-
* 1. --session <name> wins (error if its state file is missing).
|
|
72
|
-
* 2. The session whose appRoot equals the cwd's app root (both sides come
|
|
73
|
-
* from findAppRoot, so exact equality is the right comparison).
|
|
74
|
-
* 3. A sole running session.
|
|
75
|
-
*
|
|
76
|
-
* Ambiguity (multiple sessions, none matching cwd) is an error listing the
|
|
77
|
-
* candidates — never a silent guess.
|
|
78
|
-
*/
|
|
79
37
|
export function pickDevSession(sessions, opts) {
|
|
80
38
|
if (opts.session) {
|
|
81
39
|
const match = sessions.find((s) => s.name === opts.session);
|
|
@@ -99,8 +57,6 @@ export function pickDevSession(sessions, opts) {
|
|
|
99
57
|
.map((s) => `${s.name} (${s.state.appRoot})`)
|
|
100
58
|
.join(", ")}`, { remediation: { command: "mesh hub dev --session <name>" } });
|
|
101
59
|
}
|
|
102
|
-
// ── tmux session env ─────────────────────────────────────────────────────────
|
|
103
|
-
/** Parse `tmux show-environment` output (`KEY=value` lines; `-KEY` = unset). */
|
|
104
60
|
export function parseTmuxEnv(output) {
|
|
105
61
|
const env = {};
|
|
106
62
|
for (const line of output.split("\n")) {
|
|
@@ -134,8 +90,6 @@ function tmuxSessionExists(sessionName) {
|
|
|
134
90
|
return false;
|
|
135
91
|
}
|
|
136
92
|
}
|
|
137
|
-
// ── env assembly ─────────────────────────────────────────────────────────────
|
|
138
|
-
/** Vars carried over verbatim from the dev session's tmux environment. */
|
|
139
93
|
const FORWARD_PREFIXES = ["AWS_", "DEV_USER_"];
|
|
140
94
|
export function forwardedSessionVars(sessionEnv) {
|
|
141
95
|
const out = {};
|
|
@@ -145,10 +99,6 @@ export function forwardedSessionVars(sessionEnv) {
|
|
|
145
99
|
}
|
|
146
100
|
return out;
|
|
147
101
|
}
|
|
148
|
-
/**
|
|
149
|
-
* Assemble the Hub api/ui env from a discovered dev session. Throws loudly on
|
|
150
|
-
* the combinations that today produce a silently-empty Hub.
|
|
151
|
-
*/
|
|
152
102
|
export function assembleHubEnv(session, sessionEnv, opts) {
|
|
153
103
|
const warnings = [];
|
|
154
104
|
const notes = [];
|
|
@@ -158,9 +108,6 @@ export function assembleHubEnv(session, sessionEnv, opts) {
|
|
|
158
108
|
}
|
|
159
109
|
const isLocalPlatform = platform.tenant === "local";
|
|
160
110
|
if (isLocalPlatform) {
|
|
161
|
-
// Supported, and deliberately so: `mesh start`'s own Hub is built from the
|
|
162
|
-
// PUBLISHED tarball, so it is the one place a Hub change cannot be tried
|
|
163
|
-
// before it ships. The backing services come from `localPlatformEnv` below.
|
|
164
111
|
notes.push("Local platform session — the Hub runs from this checkout against `mesh start`. " +
|
|
165
112
|
"Its containerized Hub keeps :9000, so pass --port/--api-port to run both.");
|
|
166
113
|
}
|
|
@@ -171,9 +118,6 @@ export function assembleHubEnv(session, sessionEnv, opts) {
|
|
|
171
118
|
.map((t) => t.trim())
|
|
172
119
|
.filter(Boolean);
|
|
173
120
|
if (scopeTenants.length === 0) {
|
|
174
|
-
// The Hub API's scoped SSM reader returns [] with no error when
|
|
175
|
-
// HUB_SCOPE_ENV is set and HUB_SCOPE_TENANTS is empty — every page renders
|
|
176
|
-
// blank with nothing in the logs. Refuse to launch into that state.
|
|
177
121
|
throw new MeshCliError("Tenant scope resolved EMPTY (HUB_SCOPE_ENV set, no HUB_SCOPE_TENANTS) — the Hub would launch but show zero tenants everywhere.", { remediation: { command: "mesh hub dev --tenants <tenant>[,<tenant>…]" } });
|
|
178
122
|
}
|
|
179
123
|
const forwarded = forwardedSessionVars(sessionEnv);
|
|
@@ -185,16 +129,12 @@ export function assembleHubEnv(session, sessionEnv, opts) {
|
|
|
185
129
|
`${scopeEnv}\` and relaunch \`mesh dev\`.`);
|
|
186
130
|
}
|
|
187
131
|
if (!forwarded.DEV_USER_TOKEN_URL) {
|
|
188
|
-
|
|
189
|
-
// case, so telling the user to restart `mesh dev` would contradict the
|
|
190
|
-
// `✔ Dev-user token-server: …` line printed moments later.
|
|
191
|
-
notes.push("Dev session predates the per-session token-server (MESH-2039) — starting a dedicated one so tokens stay fresh past ~1h.");
|
|
132
|
+
notes.push("Dev session predates the per-session token-server — starting a dedicated one so tokens stay fresh past ~1h.");
|
|
192
133
|
}
|
|
193
134
|
const temporalAddress = sessionEnv.TEMPORAL_ADDRESS ??
|
|
194
135
|
(session.state.devOutput.tunnels["temporal"]
|
|
195
136
|
? tunnelClientAddress(session.state.devOutput.tunnels["temporal"])
|
|
196
|
-
:
|
|
197
|
-
// no tunnel to record and none to demand — the address is fixed.
|
|
137
|
+
:
|
|
198
138
|
isLocalPlatform
|
|
199
139
|
? "localhost:7233"
|
|
200
140
|
: undefined);
|
|
@@ -215,33 +155,13 @@ export function assembleHubEnv(session, sessionEnv, opts) {
|
|
|
215
155
|
PORT: String(opts.uiPort),
|
|
216
156
|
API_URL: `http://localhost:${opts.apiPort}`,
|
|
217
157
|
HUB_TENANT: hubTenant,
|
|
218
|
-
// UI namespace parsing + session defaults land on the scoped tenant.
|
|
219
158
|
DEFAULT_ORG: scopeTenants[0],
|
|
220
159
|
DEFAULT_ENV: scopeEnv,
|
|
221
160
|
};
|
|
222
161
|
return { apiEnv, uiEnv, scope: { hubTenant, scopeEnv, scopeTenants }, temporalAddress, warnings, notes };
|
|
223
162
|
}
|
|
224
|
-
/**
|
|
225
|
-
* The backing services a Hub needs when the dev session targets `mesh start`.
|
|
226
|
-
*
|
|
227
|
-
* A tethered session forwards these from the deployed stack, but a local one
|
|
228
|
-
* cannot: the platform is a set of containers whose addresses only exist on
|
|
229
|
-
* this machine. Without them the Hub comes up able to VERIFY a token and unable
|
|
230
|
-
* to write anything — no ops database, so no API-key rows, and no Zitadel admin
|
|
231
|
-
* key, so no machine user to attach a key to. The console renders with the
|
|
232
|
-
* create affordances simply absent, which reads as a broken feature rather than
|
|
233
|
-
* an unprovisioned one.
|
|
234
|
-
*
|
|
235
|
-
* The values mirror `stack/docker-compose.hub.yml`, translated from compose
|
|
236
|
-
* service names to the ports that compose publishes on the host — `mesh hub dev`
|
|
237
|
-
* runs the Hub as a host process, not inside the stack's network.
|
|
238
|
-
*/
|
|
239
163
|
const localPlatformEnv = (sessionEnv) => ({
|
|
240
|
-
// The issuer the local `mesh login` tokens carry. Zitadel routes by Host
|
|
241
|
-
// header, so the host must stay `localhost` on both sides of the call.
|
|
242
164
|
ZITADEL_ISSUER: sessionEnv.ZITADEL_ISSUER ?? "http://localhost:8080",
|
|
243
|
-
// Postgres publishes on 5433; the Hub's ops schema lives in the `hub` database
|
|
244
|
-
// alongside the per-app ones.
|
|
245
165
|
OPS_DB_HOST: "localhost",
|
|
246
166
|
OPS_DB_PORT: "5433",
|
|
247
167
|
OPS_DB_NAME: "hub",
|
|
@@ -249,9 +169,6 @@ const localPlatformEnv = (sessionEnv) => ({
|
|
|
249
169
|
DATABASE_PASSWORD: "postgres",
|
|
250
170
|
PGSSLMODE: "disable",
|
|
251
171
|
DATABASE_URL: "postgres://postgres:postgres@localhost:5433/hub?sslmode=disable",
|
|
252
|
-
// The Hub's ADMIN plane. `mesh start` seeds the machine key this names, in the
|
|
253
|
-
// platform org with IAM_OWNER, so the Hub can administer each app tenant's own
|
|
254
|
-
// Zitadel org rather than only its own.
|
|
255
172
|
ZITADEL_OPSHUB_SECRET_NAME: "mesh/local/dev/zitadel/ops-hub",
|
|
256
173
|
SPICEDB_ENDPOINT: "localhost:50051",
|
|
257
174
|
SPICEDB_HTTP_ENDPOINT: "http://localhost:8443",
|
|
@@ -261,30 +178,13 @@ const localPlatformEnv = (sessionEnv) => ({
|
|
|
261
178
|
TEMPO_URL: "http://localhost:3200",
|
|
262
179
|
PROMETHEUS_URL: "http://localhost:9090",
|
|
263
180
|
TEMPORAL_UI_URL: "http://localhost:8233",
|
|
264
|
-
// The stack's namespace. Absent, the Hub's compliance schedules fail to
|
|
265
|
-
// register with "Temporal namespace is required".
|
|
266
181
|
TEMPORAL_NAMESPACE: "local-dev",
|
|
267
|
-
// Dagster discovery records written by `mesh dev --local` carry
|
|
268
|
-
// `host.docker.internal` (for the containerized `mesh start` hub). This hub
|
|
269
|
-
// runs on the host, where that name does not resolve — tell the Data
|
|
270
|
-
// section's resolver to swap it for localhost.
|
|
271
182
|
MESH_DAGSTER_LOCAL_HOST: "localhost",
|
|
272
183
|
});
|
|
273
|
-
// ── platform checkout resolution ────────────────────────────────────────────
|
|
274
|
-
/** Does `dir` look like a mesh-platform checkout root (has the Hub app)? */
|
|
275
184
|
function isPlatformRoot(dir) {
|
|
276
185
|
return (fs.existsSync(path.join(dir, "apps", "hub", "api", "package.json")) &&
|
|
277
186
|
fs.existsSync(path.join(dir, "apps", "hub", "ui", "package.json")));
|
|
278
187
|
}
|
|
279
|
-
/**
|
|
280
|
-
* Locate the mesh-platform checkout the Hub runs from:
|
|
281
|
-
* --platform-dir → $MESH_PLATFORM_DIR → walk up from cwd (monorepo case).
|
|
282
|
-
*
|
|
283
|
-
* An invalid `--platform-dir` is fatal (the user named it explicitly), but a
|
|
284
|
-
* stale `MESH_PLATFORM_DIR` left over in the shell only warns and falls through
|
|
285
|
-
* to the cwd walk-up — otherwise it would hard-fail runs made from inside a
|
|
286
|
-
* perfectly good checkout.
|
|
287
|
-
*/
|
|
288
188
|
export function resolvePlatformDir(explicit, cwd, env = process.env) {
|
|
289
189
|
if (explicit) {
|
|
290
190
|
const resolved = path.resolve(explicit);
|
|
@@ -313,7 +213,6 @@ export function resolvePlatformDir(explicit, cwd, env = process.env) {
|
|
|
313
213
|
},
|
|
314
214
|
});
|
|
315
215
|
}
|
|
316
|
-
// ── token server ─────────────────────────────────────────────────────────────
|
|
317
216
|
async function findFreePort() {
|
|
318
217
|
return new Promise((resolve, reject) => {
|
|
319
218
|
const server = net.createServer();
|
|
@@ -337,17 +236,9 @@ function isPortListening(port) {
|
|
|
337
236
|
socket.once("error", () => done(false));
|
|
338
237
|
});
|
|
339
238
|
}
|
|
340
|
-
// ── env file dir ─────────────────────────────────────────────────────────────
|
|
341
239
|
function hubEnvDir() {
|
|
342
240
|
return path.join(os.tmpdir(), "mesh-dev-sessions", HUB_SESSION);
|
|
343
241
|
}
|
|
344
|
-
// ── port parsing ─────────────────────────────────────────────────────────────
|
|
345
|
-
/**
|
|
346
|
-
* Parse a port option, naming its source in the error. Without this a typo'd
|
|
347
|
-
* `--port` (or a stale non-numeric `MESH_HUB_DEV_PORT` left in the shell) becomes
|
|
348
|
-
* `NaN`, lands in the env file as `PORT=NaN`, and reaches `net.connect` — which
|
|
349
|
-
* throws a raw `ERR_SOCKET_BAD_PORT` instead of an actionable CLI error.
|
|
350
|
-
*/
|
|
351
242
|
export function parsePort(raw, fallback, source) {
|
|
352
243
|
if (raw === undefined)
|
|
353
244
|
return fallback;
|
|
@@ -359,12 +250,10 @@ export function parsePort(raw, fallback, source) {
|
|
|
359
250
|
}
|
|
360
251
|
return n;
|
|
361
252
|
}
|
|
362
|
-
// ── redaction for --print-env ────────────────────────────────────────────────
|
|
363
253
|
const SENSITIVE_RE = /TOKEN|SECRET|KEY|PASSWORD/i;
|
|
364
254
|
export function redactEnv(env) {
|
|
365
255
|
const out = {};
|
|
366
256
|
for (const [key, value] of Object.entries(env)) {
|
|
367
|
-
// URLs named *_TOKEN_URL etc. are locators, not credentials.
|
|
368
257
|
const sensitive = SENSITIVE_RE.test(key) && !key.endsWith("_URL") && !key.endsWith("_FILE");
|
|
369
258
|
out[key] = sensitive ? `<redacted ${value.length} chars>` : value;
|
|
370
259
|
}
|
|
@@ -386,16 +275,13 @@ async function hubDevAction(opts) {
|
|
|
386
275
|
? parsePort(opts.port, DEFAULT_HUB_UI_PORT, "--port")
|
|
387
276
|
: parsePort(process.env.MESH_HUB_DEV_PORT, DEFAULT_HUB_UI_PORT, "MESH_HUB_DEV_PORT");
|
|
388
277
|
const apiPort = parsePort(opts.apiPort, DEFAULT_HUB_API_PORT, "--api-port");
|
|
389
|
-
// 1. The Hub's source.
|
|
390
278
|
const platformDir = resolvePlatformDir(opts.platformDir, process.cwd());
|
|
391
|
-
// 2. The dev-local stack session to observe.
|
|
392
279
|
const cwdAppRoot = findAppRoot(process.cwd());
|
|
393
280
|
const session = pickDevSession(listDevSessions(), { session: opts.session, cwdAppRoot });
|
|
394
281
|
if (!tmuxSessionExists(session.name)) {
|
|
395
282
|
throw new MeshCliError(`Dev session '${session.name}' has a state file but no live tmux session — its tunnels and token-server are gone.`, { remediation: { command: `mesh dev # from ${session.state.appRoot}` } });
|
|
396
283
|
}
|
|
397
284
|
const sessionEnv = readTmuxSessionEnv(session.name);
|
|
398
|
-
// 3. Assemble the env (loud failures instead of a silently-empty Hub).
|
|
399
285
|
const assembled = assembleHubEnv(session, sessionEnv, { tenants: opts.tenants, uiPort, apiPort });
|
|
400
286
|
if (opts.printEnv) {
|
|
401
287
|
console.log(chalk.bold("\nhub-api env:"));
|
|
@@ -411,13 +297,6 @@ async function hubDevAction(opts) {
|
|
|
411
297
|
remediation: { command: "mesh hub dev --kill # then re-run mesh hub dev" },
|
|
412
298
|
});
|
|
413
299
|
}
|
|
414
|
-
// Pre-flight the ports. Without this, a port already owned by ANOTHER Hub
|
|
415
|
-
// (the containerized `mesh start` one is fixed at :9000, or a plain
|
|
416
|
-
// `mesh dev` from apps/hub holds :3002) makes the post-launch waitForPort
|
|
417
|
-
// succeed against that other process: vite has no strictPort in its config
|
|
418
|
-
// so the UI silently falls forward to the next free port, and we would then
|
|
419
|
-
// print "Hub → http://localhost:9000" pointing at someone else's Hub — the
|
|
420
|
-
// exact silently-wrong-Hub failure this command exists to remove.
|
|
421
300
|
for (const [label, port, flag] of [
|
|
422
301
|
["API", apiPort, "--api-port"],
|
|
423
302
|
["UI", uiPort, "--port"],
|
|
@@ -437,9 +316,6 @@ async function hubDevAction(opts) {
|
|
|
437
316
|
const apiDir = path.join(platformDir, "apps", "hub", "api");
|
|
438
317
|
const uiDir = path.join(platformDir, "apps", "hub", "ui");
|
|
439
318
|
execFileSync("tmux", ["new-session", "-d", "-s", HUB_SESSION, "-n", "api", "-c", apiDir]);
|
|
440
|
-
// Fresh dev tokens: reuse the app session's token-server when it has one;
|
|
441
|
-
// otherwise run our own (MESH-2039 pattern) so the Hub survives past the
|
|
442
|
-
// ~1h Zitadel horizon either way.
|
|
443
319
|
if (!assembled.apiEnv.DEV_USER_TOKEN_URL && assembled.apiEnv.DEV_USER_ID_TOKEN) {
|
|
444
320
|
const platform = session.state.devOutput.platform;
|
|
445
321
|
const credContext = `mesh.${platform.env}`;
|
|
@@ -475,18 +351,6 @@ async function hubDevAction(opts) {
|
|
|
475
351
|
execFileSync("tmux", ["send-keys", "-t", `${HUB_SESSION}:${window}`, buildLaunchCommand(envFile, dir, cmd), "Enter"]);
|
|
476
352
|
};
|
|
477
353
|
launch("api", apiDir, assembled.apiEnv, "pnpm dev", false);
|
|
478
|
-
// --strictPort: the Hub UI's vite config sets `port` but NOT `strictPort`, so
|
|
479
|
-
// vite would silently fall forward to the next free port and we'd advertise a
|
|
480
|
-
// URL serving something else. Fail instead — the pre-flight above already
|
|
481
|
-
// rejects a taken port, this closes the race. (`host: true` is already in
|
|
482
|
-
// apps/hub/ui/vite.config.ts, so the tailnet binding needs no flag here.)
|
|
483
|
-
//
|
|
484
|
-
// No `--` separator before the flags: the script is `react-router dev`, whose
|
|
485
|
-
// first positional is the PROJECT DIRECTORY. `pnpm dev -- --port …` forwards
|
|
486
|
-
// the separator, react-router reads `--` as that directory, looks for a vite
|
|
487
|
-
// config inside it, finds none, and exits with "React Router Vite plugin not
|
|
488
|
-
// found in Vite config" — a message that points at the config rather than at
|
|
489
|
-
// the argument that caused it. pnpm passes trailing args through regardless.
|
|
490
354
|
launch("ui", uiDir, assembled.uiEnv, `pnpm dev --port ${uiPort} --strictPort`, true);
|
|
491
355
|
logInfo("Waiting for the Hub to come up…");
|
|
492
356
|
const apiUp = await waitForPort("127.0.0.1", apiPort, 90_000);
|
|
@@ -515,4 +379,3 @@ export function registerHubCommands(program) {
|
|
|
515
379
|
.option("--kill", "tear down the running Hub session")
|
|
516
380
|
.action(hubDevAction);
|
|
517
381
|
}
|
|
518
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,105 +1,56 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bare `mesh init` — the guided setup of a machine and a repo for one tenant.
|
|
3
|
-
*
|
|
4
|
-
* Four questions and four steps, in order:
|
|
5
|
-
*
|
|
6
|
-
* 1. tenant — which tenant this repo belongs to
|
|
7
|
-
* 2. mode — local only (`mesh start` / `mesh dev`) or a deployed platform
|
|
8
|
-
* 3. registry — package-registry access, signing in if the machine has none
|
|
9
|
-
* 4. platform — (deployed only) `mesh login <tenant>.<env>` in-process
|
|
10
|
-
* 5. repo — bootstrap an empty apps repo, or check an existing one
|
|
11
|
-
* 6. skills — the agent skills the repo's packages ship
|
|
12
|
-
*
|
|
13
|
-
* Two identities never mix: the registry step talks to the ONE global package
|
|
14
|
-
* registry and never needs a context; the platform step is the only place a
|
|
15
|
-
* `<tenant>.<env>` context appears, and the local branch never mentions it.
|
|
16
|
-
*
|
|
17
|
-
* Every step is data (`WizardStep` → `StepResult`) so the summary, the exit
|
|
18
|
-
* code and the `--json` document are one reducer over one list, and a step
|
|
19
|
-
* that fails without blocking (a registry 403 — the user needs the summary to
|
|
20
|
-
* know whom to ask) lets the rest run. Every prompt has a flag, so a runner
|
|
21
|
-
* with `--tenant … --local --yes` sees no prompt at all.
|
|
22
|
-
*/
|
|
23
1
|
import { probeRegistryToken } from "../../utils/auth-preflight.js";
|
|
24
2
|
import { type RegistryLoginOptions } from "../registry.js";
|
|
25
3
|
import { type MeshJson } from "../../utils/mesh-json.js";
|
|
26
|
-
/** The flags — one per wizard answer, so a headless run needs no prompt. */
|
|
27
4
|
export interface WizardOptions {
|
|
28
5
|
tenant?: string;
|
|
29
|
-
/** Local only: `mesh start` / `mesh dev`, no deployed platform. */
|
|
30
6
|
local?: boolean;
|
|
31
|
-
/** A deployed platform's environment (`dev`, `uat`, …) → context `<tenant>.<env>`. */
|
|
32
7
|
platform?: string;
|
|
33
|
-
/** Device-code sign-in for the registry and platform steps (headless / SSH). */
|
|
34
8
|
device?: boolean;
|
|
35
|
-
/** Deployers only: an AWS profile that can read the registry (skips the broker). */
|
|
36
9
|
profile?: string;
|
|
37
|
-
/** Do not touch the repo (no bootstrap, no doctor, no skills). */
|
|
38
10
|
skipRepo?: boolean;
|
|
39
|
-
/** Accept every default and never prompt. */
|
|
40
11
|
yes?: boolean;
|
|
41
|
-
/** One JSON document on stdout; human output on stderr. */
|
|
42
12
|
json?: boolean;
|
|
43
13
|
}
|
|
44
14
|
export type StepStatus = "pass" | "fail" | "warn" | "skip";
|
|
45
|
-
/** One step's verdict — what the summary, the exit code and `--json` all read. */
|
|
46
15
|
export interface StepResult {
|
|
47
16
|
name: string;
|
|
48
17
|
status: StepStatus;
|
|
49
18
|
detail: string;
|
|
50
|
-
/** The exact command (or, for a grant, the person to ask) that fixes it. */
|
|
51
19
|
fix?: string;
|
|
52
|
-
/** `false` = a failure the wizard carries on past (a registry 403). */
|
|
53
20
|
blocking?: boolean;
|
|
54
21
|
}
|
|
55
|
-
/** Where the tenant runs. */
|
|
56
22
|
export type WizardMode = "local" | {
|
|
57
23
|
platform: string;
|
|
58
24
|
};
|
|
59
|
-
/** The wizard's answers, shared by every step. */
|
|
60
25
|
export interface WizardCtx {
|
|
61
26
|
cwd: string;
|
|
62
27
|
tenant: string;
|
|
63
28
|
mode: WizardMode;
|
|
64
|
-
/** The `<tenant>.<env>` context — only in deployed mode. */
|
|
65
29
|
context: string | null;
|
|
66
30
|
device?: boolean;
|
|
67
31
|
profile?: string;
|
|
68
|
-
/** True when a prompt or a browser can be used on this run. */
|
|
69
32
|
interactive: boolean;
|
|
70
|
-
/**
|
|
71
|
-
* True when no browser can open here (SSH, a container, no TTY), so the
|
|
72
|
-
* device code is the sign-in that works and every remediation names it.
|
|
73
|
-
*/
|
|
74
33
|
remote: boolean;
|
|
75
34
|
yes: boolean;
|
|
76
35
|
skipRepo: boolean;
|
|
77
36
|
prompts: Prompts;
|
|
78
|
-
/** Test seams for the steps' side effects; production leaves them unset. */
|
|
79
37
|
seams?: WizardSeams;
|
|
80
38
|
}
|
|
81
|
-
/** The impure calls a step makes, injectable so the real steps run under test. */
|
|
82
39
|
export interface WizardSeams {
|
|
83
|
-
/** The `~/.npmrc` token probe — defaults to `probeRegistryToken`. */
|
|
84
40
|
probe?: typeof probeRegistryToken;
|
|
85
|
-
/** The in-process registry login — defaults to `runRegistryLogin(undefined, opts)`. */
|
|
86
41
|
runRegistryLogin?: (opts: RegistryLoginOptions) => Promise<void>;
|
|
87
|
-
/** Turns a plain folder into a git repo — defaults to `git init -q`. */
|
|
88
42
|
gitInit?: (dir: string) => void;
|
|
89
43
|
}
|
|
90
|
-
/** A step: a name and a runner. */
|
|
91
44
|
export interface WizardStep {
|
|
92
45
|
name: "registry" | "platform" | "repo" | "skills";
|
|
93
46
|
run(ctx: WizardCtx): Promise<StepResult>;
|
|
94
47
|
}
|
|
95
|
-
/** The final document — rendered for a terminal or emitted as `--json`. */
|
|
96
48
|
export interface WizardOutcome {
|
|
97
49
|
tenant: string;
|
|
98
50
|
mode: WizardMode;
|
|
99
51
|
steps: StepResult[];
|
|
100
52
|
next: string[];
|
|
101
53
|
}
|
|
102
|
-
/** The prompt surface, injectable so the flow is testable without a TTY. */
|
|
103
54
|
export interface Prompts {
|
|
104
55
|
input(args: {
|
|
105
56
|
message: string;
|
|
@@ -119,109 +70,31 @@ export interface Prompts {
|
|
|
119
70
|
default?: boolean;
|
|
120
71
|
}): Promise<boolean>;
|
|
121
72
|
}
|
|
122
|
-
/** Printed when the registry step has no session and no way to sign in. */
|
|
123
73
|
export declare const NO_SESSION_NO_TTY_MESSAGE: string;
|
|
124
|
-
/** Printed when a non-TTY run has no `--tenant`. */
|
|
125
74
|
export declare const TENANT_REQUIRED_MESSAGE = "--tenant is required (no TTY for interactive mode)";
|
|
126
|
-
/** Exit code for a Ctrl-C at a prompt: nothing half-written, conventional SIGINT code. */
|
|
127
75
|
export declare const INTERRUPTED_EXIT_CODE = 130;
|
|
128
|
-
/**
|
|
129
|
-
* The exit code for a finished run: 1 when any step failed (blocking or not
|
|
130
|
-
* — a registry 403 still means the machine is not set up), else 0.
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
* wizardExitCode([{ name: "Registry access", status: "fail", detail: "…", blocking: false }]); // → 1
|
|
134
|
-
*/
|
|
135
76
|
export declare function wizardExitCode(steps: ReadonlyArray<Pick<StepResult, "status">>): number;
|
|
136
|
-
/**
|
|
137
|
-
* The commands to run next, by mode. When the repo step did not leave an apps
|
|
138
|
-
* repo behind, its own fix comes first — `mesh create-app` has nowhere to
|
|
139
|
-
* scaffold until the repo exists.
|
|
140
|
-
*
|
|
141
|
-
* @example
|
|
142
|
-
* wizardNextCommands({ platform: "dev" }); // → ["mesh create-app", "mesh deploy up # from the app directory"]
|
|
143
|
-
* wizardNextCommands("local", [{ name: "Repo", status: "skip", detail: "…", fix: "git init && mesh init" }]);
|
|
144
|
-
* // → ["git init && mesh init"]
|
|
145
|
-
*/
|
|
146
77
|
export declare function wizardNextCommands(mode: WizardMode, steps?: ReadonlyArray<StepResult>): string[];
|
|
147
|
-
/**
|
|
148
|
-
* Whether the wizard should stop after `result`: a failing step that did not
|
|
149
|
-
* opt out of blocking.
|
|
150
|
-
*/
|
|
151
78
|
export declare function stepBlocks(result: StepResult): boolean;
|
|
152
|
-
/** The mode as a short phrase for the summary heading. */
|
|
153
79
|
export declare function describeMode(mode: WizardMode): string;
|
|
154
|
-
/**
|
|
155
|
-
* Render the summary check-list — the same lines for a terminal and for the
|
|
156
|
-
* stderr side of `--json`.
|
|
157
|
-
*
|
|
158
|
-
* @example
|
|
159
|
-
* renderWizardSummary({ tenant: "acme", mode: "local", steps: [], next: ["mesh create-app"] });
|
|
160
|
-
*/
|
|
161
80
|
export declare function renderWizardSummary(outcome: WizardOutcome, opts?: {
|
|
162
81
|
color?: boolean;
|
|
163
82
|
}): string;
|
|
164
|
-
/**
|
|
165
|
-
* Resolve the answers that need no prompt: flags first, then `--yes`
|
|
166
|
-
* defaults, then what the repo already records. Returns the questions still
|
|
167
|
-
* open so the caller prompts for exactly those.
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
* resolveAnswers({ tenant: "acme", local: true }, null, false)
|
|
171
|
-
* // → { tenant: "acme", mode: "local", open: [] }
|
|
172
|
-
*/
|
|
173
83
|
export declare function resolveAnswers(opts: WizardOptions, recorded: MeshJson | null, interactive: boolean): {
|
|
174
84
|
tenant?: string;
|
|
175
85
|
mode?: WizardMode;
|
|
176
86
|
open: Array<"tenant" | "mode">;
|
|
177
87
|
};
|
|
178
|
-
/** The registry step, exported so a test can drive the real thing through its seams. */
|
|
179
88
|
export declare const registryStep: WizardStep;
|
|
180
|
-
/**
|
|
181
|
-
* What kind of directory the wizard is standing in. `empty-dir` is a folder
|
|
182
|
-
* that is not a git repo and holds nothing but dotfiles (a `.DS_Store` does
|
|
183
|
-
* not count as content) — a freshly made `<tenant>-mesh-apps` folder before
|
|
184
|
-
* `git init`. A non-git folder with any real entry in it is `no-repo`: it is
|
|
185
|
-
* somebody's directory, never one to run `git init` in unasked.
|
|
186
|
-
*/
|
|
187
89
|
export type RepoKind = "platform-monorepo" | "empty-apps-repo" | "apps-repo" | "other-repo" | "empty-dir" | "no-repo";
|
|
188
|
-
/**
|
|
189
|
-
* Classify `cwd` for the repo step. Pure over the filesystem; exported for
|
|
190
|
-
* tests.
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* classifyRepo("/tmp/empty-git-clone"); // → "empty-apps-repo"
|
|
194
|
-
* classifyRepo("/tmp/new-empty-folder"); // → "empty-dir"
|
|
195
|
-
*/
|
|
196
90
|
export declare function classifyRepo(cwd: string): {
|
|
197
91
|
kind: RepoKind;
|
|
198
92
|
root: string;
|
|
199
93
|
};
|
|
200
|
-
/** The fix a folder that is not yet a repo needs before anything can be scaffolded in it. */
|
|
201
94
|
export declare const INIT_REPO_FIX = "git init && mesh init";
|
|
202
|
-
/** The repo step: classify the cwd, then bootstrap, warn or skip accordingly. */
|
|
203
95
|
export declare const repoStep: WizardStep;
|
|
204
|
-
/** The steps in run order. Exported so tests can drive the reducer with fakes. */
|
|
205
96
|
export declare const WIZARD_STEPS: readonly WizardStep[];
|
|
206
|
-
/**
|
|
207
|
-
* Run `steps` in order, stopping after the first blocking failure. Pure over
|
|
208
|
-
* the steps' results — the reducer the CLI and the tests share.
|
|
209
|
-
*
|
|
210
|
-
* @example
|
|
211
|
-
* const steps = await runWizardSteps(ctx, WIZARD_STEPS);
|
|
212
|
-
*/
|
|
213
97
|
export declare function runWizardSteps(ctx: WizardCtx, steps: readonly WizardStep[]): Promise<StepResult[]>;
|
|
214
|
-
/**
|
|
215
|
-
* The wizard entry point behind bare `mesh init`.
|
|
216
|
-
*
|
|
217
|
-
* Returns the process exit code instead of exiting, so the caller decides
|
|
218
|
-
* (and a test can assert on it). Ctrl-C at a prompt returns 130 with nothing
|
|
219
|
-
* written. All human output goes to stderr under `--json`, leaving stdout for
|
|
220
|
-
* the one document.
|
|
221
|
-
*
|
|
222
|
-
* @example
|
|
223
|
-
* process.exitCode = await runInitWizard({ tenant: "acme", local: true, yes: true });
|
|
224
|
-
*/
|
|
225
98
|
export declare function runInitWizard(opts: WizardOptions, deps?: {
|
|
226
99
|
cwd?: string;
|
|
227
100
|
prompts?: Prompts;
|
|
@@ -230,4 +103,3 @@ export declare function runInitWizard(opts: WizardOptions, deps?: {
|
|
|
230
103
|
remote?: boolean;
|
|
231
104
|
seams?: WizardSeams;
|
|
232
105
|
}): Promise<number>;
|
|
233
|
-
//# sourceMappingURL=wizard.d.ts.map
|