@mesh-tech/mesh-cli 0.27.0 → 0.29.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/README.md +11 -2
- package/dist/bin/mesh.js +1151 -865
- package/dist/bin/mesh.js.map +3 -3
- package/dist/build-info.json +2 -2
- package/dist/src/commands/app-check-resolve.d.ts +28 -0
- package/dist/src/commands/app-check-resolve.js +276 -0
- package/dist/src/commands/app-check.d.ts +6 -3
- package/dist/src/commands/app-check.js +31 -7
- package/dist/src/commands/hub/index.d.ts +2 -0
- package/dist/src/commands/hub/index.js +16 -1
- package/fragments/base/index.ts.hbs +16 -1
- package/package.json +2 -2
- package/skills/core/SKILL.md +9 -3
- package/templates/api-auth/index.ts.hbs +5 -1
- package/templates/api-role-gating/index.ts.hbs +5 -1
- package/templates/external-service/index.ts.hbs +5 -1
- package/templates/platform-repo/AGENTS.md.hbs +20 -4
- package/templates/platform-repo/platform/index.ts +10 -0
- package/templates/workflow/index.ts.hbs +5 -1
|
@@ -42,7 +42,11 @@ const vendorpay = new mesh.apps.ExternalService("vendorpay", {
|
|
|
42
42
|
env,
|
|
43
43
|
type: "payment",
|
|
44
44
|
kind: "connection",
|
|
45
|
-
|
|
45
|
+
// One sentence a client operator can act on, in their words. This renders on
|
|
46
|
+
// the Hub's Integrations row, which a credit union's own staff read.
|
|
47
|
+
description: "Gets price quotes from our payments vendor.",
|
|
48
|
+
// Engineer to engineer: never serialized by a Hub deployed for a client.
|
|
49
|
+
operatorNote: "Example vendor wired the external-service way — credentials in Secrets Manager, no runtime to probe.",
|
|
46
50
|
credentials: {
|
|
47
51
|
fields: {
|
|
48
52
|
baseUrl: { name: "Base URL", description: "Vendor API endpoint" },
|
|
@@ -3,11 +3,27 @@
|
|
|
3
3
|
- Invoke the CLI as `pnpm mesh <cmd>` or (cwd-independent) `pnpm exec mesh <cmd>` —
|
|
4
4
|
a root `"mesh"` script + the `@mesh-tech/mesh-cli` devDependency make both work
|
|
5
5
|
after `pnpm install`. For a bare `mesh` on PATH, run once: `pnpm exec mesh install-shim`.
|
|
6
|
-
- Operations are `mesh` commands, never raw `
|
|
7
|
-
`
|
|
8
|
-
|
|
6
|
+
- Operations are `mesh` commands, never raw `pulumi`/`kubectl`: `mesh deploy
|
|
7
|
+
preview|up` (run inside `core/` or `platform/`), `mesh init app-tenant`
|
|
8
|
+
(doctor). **One exception:** a platform stack carries no `mesh:deployerRole`
|
|
9
|
+
— only app stacks do — so `mesh deploy` reads credentials from the
|
|
10
|
+
environment, on the first deploy and on every day-2 run:
|
|
11
|
+
`aws sso login --profile {{profile}}`, then
|
|
12
|
+
`eval "$(aws configure export-credentials --profile {{profile}} --format env)"`.
|
|
13
|
+
- **`mesh login {{tenant}}.{{env}}` comes LAST, after the first deploy.** The
|
|
14
|
+
Zitadel it signs in to is what the `platform/` layer creates; run earlier it
|
|
15
|
+
fails with `No configuration found for "{{tenant}}.{{env}}"`. Package access
|
|
16
|
+
is a separate, global sign-in (`mesh registry login`) and is not needed in
|
|
17
|
+
this repo at all.
|
|
9
18
|
- Deploy order matters: `core/` before `platform/` (platform imports core
|
|
10
|
-
from the SSM registry)
|
|
19
|
+
from the SSM registry), and the NS delegation of the public zone is a manual
|
|
20
|
+
step **in the middle of the `core/` deploy** — that deploy blocks on its ACM
|
|
21
|
+
certificate until you delegate the new zone's NS records from the parent, so
|
|
22
|
+
a `core/` deploy that looks hung is waiting on you. README.md holds the full
|
|
23
|
+
first-deploy sequence, the one `mesh init` printed when it scaffolded this
|
|
24
|
+
repo. Do not invent a different one.
|
|
25
|
+
- `platform/` builds service images, so it needs Docker; `core/` does not.
|
|
26
|
+
That is why a Docker-less container can deploy `core/` and stop there.
|
|
11
27
|
- Capabilities are config, not code: enable/disable platform services in
|
|
12
28
|
`platform/Pulumi.{{tenant}}-{{env}}.yaml` (temporal/zitadel/hub/tenants/…);
|
|
13
29
|
the `index.ts` layer programs should rarely change.
|
|
@@ -71,6 +71,16 @@ const meshPlatform = new mesh.layers.MeshPlatform("platform", {
|
|
|
71
71
|
// DevBox - remote development instances (optional)
|
|
72
72
|
// Config: mesh:devbox: { users: { <username>: { home: "/Users/<username>", ... } } }
|
|
73
73
|
devbox: config.getObject("devbox") ?? false,
|
|
74
|
+
// Image build mode for the platform's mesh-built images (Temporal
|
|
75
|
+
// provisioner, custom server, Hub): "remote" builds them inside the target
|
|
76
|
+
// cluster as rootless BuildKit Jobs. Three opt-ins still build on the
|
|
77
|
+
// deploying machine and keep a Docker requirement there:
|
|
78
|
+
// `mesh:hub: { cdn: true }` (the UI's CDN asset build), `mesh:headscale`
|
|
79
|
+
// (the VPN join broker image) and `mesh:packageRegistry` (the registry-auth
|
|
80
|
+
// broker image, on unless `broker: false`).
|
|
81
|
+
// Config: mesh:buildMode: remote + mesh:remoteBuild: { bucket: ..., bucketRegion: ... }
|
|
82
|
+
buildMode: config.get<"local" | "remote">("buildMode"),
|
|
83
|
+
remoteBuild: config.getObject("remoteBuild"),
|
|
74
84
|
});
|
|
75
85
|
|
|
76
86
|
// ============================================================================
|
|
@@ -64,5 +64,9 @@ const worker = new mesh.apps.TemporalWorker("worker", {
|
|
|
64
64
|
// --- Outputs ---
|
|
65
65
|
|
|
66
66
|
export const app = env.register({
|
|
67
|
-
|
|
67
|
+
displayName: "{{titleCase name}}",
|
|
68
|
+
// What a client operator reads on the Apps list. One sentence, their words.
|
|
69
|
+
description: "Runs {{titleCase name}}'s scheduled and long-running jobs.",
|
|
70
|
+
// Engineer to engineer; a Hub deployed for a client never serializes it.
|
|
71
|
+
operatorNote: "Temporal workflow app scaffolded by `mesh create-app --template workflow`.",
|
|
68
72
|
});
|