@mesh-tech/mesh-cli 0.14.0 → 0.15.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/dist/bin/mesh.js +686 -226
- package/dist/bin/mesh.js.map +3 -3
- package/dist/build-info.json +2 -2
- package/dist/src/commands/create-app.d.ts +4 -0
- package/dist/src/commands/create-app.d.ts.map +1 -1
- package/dist/src/commands/create-app.js +13 -6
- package/dist/src/commands/create-app.js.map +1 -1
- package/dist/src/commands/dev.d.ts +11 -0
- package/dist/src/commands/dev.d.ts.map +1 -1
- package/dist/src/commands/dev.js +70 -1
- package/dist/src/commands/dev.js.map +1 -1
- package/dist/src/commands/hub/index.d.ts.map +1 -1
- package/dist/src/commands/hub/index.js +65 -4
- package/dist/src/commands/hub/index.js.map +1 -1
- package/dist/src/commands/local/auth-provision.d.ts +34 -0
- package/dist/src/commands/local/auth-provision.d.ts.map +1 -1
- package/dist/src/commands/local/auth-provision.js +78 -1
- package/dist/src/commands/local/auth-provision.js.map +1 -1
- package/dist/src/commands/local/hub-local.d.ts +38 -0
- package/dist/src/commands/local/hub-local.d.ts.map +1 -1
- package/dist/src/commands/local/hub-local.js +137 -0
- package/dist/src/commands/local/hub-local.js.map +1 -1
- package/dist/src/commands/local/index.d.ts.map +1 -1
- package/dist/src/commands/local/index.js +31 -3
- package/dist/src/commands/local/index.js.map +1 -1
- package/dist/src/commands/local/seed-zitadel.d.ts +10 -3
- package/dist/src/commands/local/seed-zitadel.d.ts.map +1 -1
- package/dist/src/commands/local/seed-zitadel.js +259 -78
- package/dist/src/commands/local/seed-zitadel.js.map +1 -1
- package/dist/src/commands/local/stack.d.ts +30 -0
- package/dist/src/commands/local/stack.d.ts.map +1 -1
- package/dist/src/commands/local/stack.js +48 -0
- package/dist/src/commands/local/stack.js.map +1 -1
- package/fragments/base/index.ts.hbs +9 -0
- package/fragments/base/package.json.hbs +1 -1
- package/fragments/service/api/package.json.hbs +4 -0
- package/fragments/service/api/src/index.ts.hbs +1 -4
- package/fragments/temporal/worker/package.json.hbs +1 -0
- package/fragments/temporal/worker/src/activities.ts.hbs +5 -1
- package/fragments/temporal/worker/src/workflows.ts.hbs +4 -1
- package/package.json +2 -2
- package/skills/core/SKILL.md +1 -1
- package/stack/docker-compose.hub.yml +5 -0
- package/stack/docker-compose.yml +35 -0
|
@@ -24,21 +24,21 @@
|
|
|
24
24
|
* Idempotent: search-before-create for project/app, "already exists" is
|
|
25
25
|
* success for users, SSM params overwrite.
|
|
26
26
|
*/
|
|
27
|
-
import * as fs from
|
|
28
|
-
import * as os from
|
|
29
|
-
import * as path from
|
|
30
|
-
import {
|
|
31
|
-
import { logInfo, logSuccess } from
|
|
32
|
-
import { MeshCliError } from
|
|
33
|
-
import { writeContextConfig } from
|
|
34
|
-
import { compose, hubPort, DEFAULT_HUB_PORT } from
|
|
35
|
-
import { LOCAL_TENANT, LOCAL_ENV } from
|
|
36
|
-
export const ZITADEL_ISSUER =
|
|
37
|
-
export const LOGIN_CONTEXT =
|
|
27
|
+
import * as fs from 'fs';
|
|
28
|
+
import * as os from 'os';
|
|
29
|
+
import * as path from 'path';
|
|
30
|
+
import { hubOperatorRoleKeys, hubRoleKeyTenant, restrictedRoleBase, } from '@mesh-tech/api-registry';
|
|
31
|
+
import { logInfo, logSuccess, logWarn } 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
38
|
/** The platform org — home of platform-layer creds, same name as the cloud
|
|
39
39
|
* platform tenant. Set by ZITADEL_FIRSTINSTANCE_ORG_NAME in the compose;
|
|
40
40
|
* app tenants (incl. the default `local`) get their own orgs on demand. */
|
|
41
|
-
export const PLATFORM_ORG =
|
|
41
|
+
export const PLATFORM_ORG = 'mesh';
|
|
42
42
|
/**
|
|
43
43
|
* Approved-pattern naming inside the platform org: project per app
|
|
44
44
|
* (lowercase), application per service/client inside it. The CLI is a
|
|
@@ -46,9 +46,9 @@ export const PLATFORM_ORG = "mesh";
|
|
|
46
46
|
* (The cloud's legacy catch-all "Platform" project is being retired by the
|
|
47
47
|
* pattern doc's spec items; local starts pattern-true.)
|
|
48
48
|
*/
|
|
49
|
-
export const CLI_PROJECT_NAME =
|
|
50
|
-
export const CLI_APP_NAME =
|
|
51
|
-
export const CLI_REDIRECT_URI =
|
|
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
52
|
/**
|
|
53
53
|
* The Hub's own auth config (pattern-true: the Hub is a platform app →
|
|
54
54
|
* project `hub` in the platform org, application per service). The `ui`
|
|
@@ -56,11 +56,14 @@ export const CLI_REDIRECT_URI = "http://localhost:9876/callback";
|
|
|
56
56
|
* sidecar topology `mesh.apps.Service` deploys with `auth.provider: "mesh"`.
|
|
57
57
|
* Roles ARE the Hub's vocabulary — imported from the module the deployed Hub's
|
|
58
58
|
* infra declares them from, so a role that exists in the cloud is grantable
|
|
59
|
-
* locally too (MESH-2504)
|
|
60
|
-
*
|
|
59
|
+
* locally too (MESH-2504), including the tenant-keyed restricted keys
|
|
60
|
+
* (`vendor:<tenant>`, `auditor:<tenant>`) that carry the only scope the policy
|
|
61
|
+
* actually reads. The bare keys alone are not a usable local vocabulary: a bare
|
|
62
|
+
* restricted grant names no tenant, so `checkPolicy` matches it against nothing
|
|
63
|
+
* and it authorizes no tenant-scoped read.
|
|
61
64
|
*/
|
|
62
|
-
export const HUB_PROJECT_NAME =
|
|
63
|
-
export const HUB_APP_NAME =
|
|
65
|
+
export const HUB_PROJECT_NAME = 'hub';
|
|
66
|
+
export const HUB_APP_NAME = 'ui';
|
|
64
67
|
/** Registered on the seeded Hub app; the default-port URI is always included
|
|
65
68
|
* so a later port switch never strands the app config. Zitadel's devMode only
|
|
66
69
|
* relaxes the https requirement — every redirect URI must still be registered
|
|
@@ -69,13 +72,25 @@ export const HUB_APP_NAME = "ui";
|
|
|
69
72
|
* programmatic callers that set MESH_HUB_PORT after import see the override. */
|
|
70
73
|
export const hubRedirectUri = () => `http://localhost:${hubPort()}/oauth2/callback`;
|
|
71
74
|
export const HUB_DEFAULT_REDIRECT_URI = `http://localhost:${DEFAULT_HUB_PORT}/oauth2/callback`;
|
|
72
|
-
export const HUB_ROLES =
|
|
75
|
+
export const HUB_ROLES = hubOperatorRoleKeys([LOCAL_TENANT]);
|
|
73
76
|
export const ZITADEL_SSM_PARAM = `/mesh-platform/${LOCAL_TENANT}/${LOCAL_ENV}/platform/zitadel`;
|
|
74
77
|
export const TEST_USERS_SSM_PREFIX = `/mesh-platform/${LOCAL_TENANT}/${LOCAL_ENV}/temporal/test-users`;
|
|
75
78
|
/** Seeded human test users — plainly-labeled dev-grade credentials. */
|
|
76
79
|
export const TEST_USERS = [
|
|
77
|
-
{
|
|
78
|
-
|
|
80
|
+
{
|
|
81
|
+
name: 'dev',
|
|
82
|
+
email: 'dev@local.mesh',
|
|
83
|
+
firstName: 'Dev',
|
|
84
|
+
lastName: 'User',
|
|
85
|
+
password: 'LocalDev1!',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: 'ops',
|
|
89
|
+
email: 'ops@local.mesh',
|
|
90
|
+
firstName: 'Ops',
|
|
91
|
+
lastName: 'User',
|
|
92
|
+
password: 'LocalDev1!',
|
|
93
|
+
},
|
|
79
94
|
];
|
|
80
95
|
/**
|
|
81
96
|
* The CLI OIDC app payload — the same shape ZitadelPlatformIdentity creates in
|
|
@@ -86,11 +101,11 @@ export function buildCliAppPayload() {
|
|
|
86
101
|
return {
|
|
87
102
|
name: CLI_APP_NAME,
|
|
88
103
|
redirectUris: [CLI_REDIRECT_URI],
|
|
89
|
-
responseTypes: [
|
|
90
|
-
grantTypes: [
|
|
91
|
-
appType:
|
|
92
|
-
authMethodType:
|
|
93
|
-
accessTokenType:
|
|
104
|
+
responseTypes: ['OIDC_RESPONSE_TYPE_CODE'],
|
|
105
|
+
grantTypes: ['OIDC_GRANT_TYPE_AUTHORIZATION_CODE', 'OIDC_GRANT_TYPE_DEVICE_CODE'],
|
|
106
|
+
appType: 'OIDC_APP_TYPE_NATIVE',
|
|
107
|
+
authMethodType: 'OIDC_AUTH_METHOD_TYPE_NONE',
|
|
108
|
+
accessTokenType: 'OIDC_TOKEN_TYPE_JWT',
|
|
94
109
|
accessTokenRoleAssertion: true,
|
|
95
110
|
idTokenRoleAssertion: true,
|
|
96
111
|
idTokenUserinfoAssertion: true,
|
|
@@ -99,16 +114,16 @@ export function buildCliAppPayload() {
|
|
|
99
114
|
}
|
|
100
115
|
/** Read the seeder PAT the compose bootstrap wrote to the machinekey volume. */
|
|
101
116
|
export function readSeederPat() {
|
|
102
|
-
const tmp = path.join(fs.mkdtempSync(path.join(os.tmpdir(),
|
|
117
|
+
const tmp = path.join(fs.mkdtempSync(path.join(os.tmpdir(), 'mesh-zitadel-')), 'pat.txt');
|
|
103
118
|
try {
|
|
104
|
-
compose([
|
|
105
|
-
const pat = fs.readFileSync(tmp,
|
|
119
|
+
compose(['cp', 'zitadel:/machinekey/pat.txt', tmp]);
|
|
120
|
+
const pat = fs.readFileSync(tmp, 'utf-8').trim();
|
|
106
121
|
if (!pat)
|
|
107
|
-
throw new Error(
|
|
122
|
+
throw new Error('empty PAT file');
|
|
108
123
|
return pat;
|
|
109
124
|
}
|
|
110
125
|
catch {
|
|
111
|
-
throw new MeshCliError(
|
|
126
|
+
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
127
|
}
|
|
113
128
|
finally {
|
|
114
129
|
fs.rmSync(path.dirname(tmp), { recursive: true, force: true });
|
|
@@ -120,8 +135,8 @@ export async function api(pat, method, apiPath, body, orgId) {
|
|
|
120
135
|
method,
|
|
121
136
|
headers: {
|
|
122
137
|
Authorization: `Bearer ${pat}`,
|
|
123
|
-
|
|
124
|
-
...(orgId ? {
|
|
138
|
+
'Content-Type': 'application/json',
|
|
139
|
+
...(orgId ? { 'x-zitadel-orgid': orgId } : {}),
|
|
125
140
|
},
|
|
126
141
|
body: body === undefined ? undefined : JSON.stringify(body),
|
|
127
142
|
signal: AbortSignal.timeout(15_000),
|
|
@@ -136,44 +151,47 @@ export async function api(pat, method, apiPath, body, orgId) {
|
|
|
136
151
|
}
|
|
137
152
|
return data;
|
|
138
153
|
}
|
|
139
|
-
export const isAlreadyExists = (err) => err?.status === 409 || err?.zitadelCode === 6 || /already exists/i.test(err?.message ??
|
|
154
|
+
export const isAlreadyExists = (err) => err?.status === 409 || err?.zitadelCode === 6 || /already exists/i.test(err?.message ?? '');
|
|
140
155
|
/**
|
|
141
156
|
* Shared search-before-create for Zitadel projects: return the existing
|
|
142
157
|
* project's id, else create it. Every ensure*Project in the local seeding
|
|
143
158
|
* and auth-provisioning goes through this.
|
|
144
159
|
*/
|
|
145
160
|
export async function ensureZitadelProject(pat, name, opts = {}) {
|
|
146
|
-
const search = await api(pat,
|
|
161
|
+
const search = await api(pat, 'POST', '/management/v1/projects/_search', { queries: [{ nameQuery: { name, method: 'TEXT_QUERY_METHOD_EQUALS' } }] }, opts.orgId);
|
|
147
162
|
const existing = search?.result?.[0]?.id;
|
|
148
163
|
if (existing) {
|
|
149
164
|
if (opts.logExisting)
|
|
150
165
|
logInfo(`Zitadel project '${name}' already exists`);
|
|
151
166
|
return existing;
|
|
152
167
|
}
|
|
153
|
-
const created = await api(pat,
|
|
154
|
-
logSuccess(`Created Zitadel project '${name}'${opts.describe ? ` (${opts.describe})` :
|
|
168
|
+
const created = await api(pat, 'POST', '/management/v1/projects', { name, projectRoleAssertion: true }, opts.orgId);
|
|
169
|
+
logSuccess(`Created Zitadel project '${name}'${opts.describe ? ` (${opts.describe})` : ''}`);
|
|
155
170
|
return created.id;
|
|
156
171
|
}
|
|
157
172
|
/** Shared name-equals application search; returns the raw app or undefined. */
|
|
158
173
|
export async function searchZitadelApp(pat, projectId, name, orgId) {
|
|
159
|
-
const search = await api(pat,
|
|
174
|
+
const search = await api(pat, 'POST', `/management/v1/projects/${projectId}/apps/_search`, { queries: [{ nameQuery: { name, method: 'TEXT_QUERY_METHOD_EQUALS' } }] }, orgId);
|
|
160
175
|
return search?.result?.[0];
|
|
161
176
|
}
|
|
162
|
-
const ensureCliProject = (pat) => ensureZitadelProject(pat, CLI_PROJECT_NAME, {
|
|
177
|
+
const ensureCliProject = (pat) => ensureZitadelProject(pat, CLI_PROJECT_NAME, {
|
|
178
|
+
describe: 'platform client feature',
|
|
179
|
+
logExisting: true,
|
|
180
|
+
});
|
|
163
181
|
async function ensureCliApp(pat, projectId) {
|
|
164
182
|
const existing = (await searchZitadelApp(pat, projectId, CLI_APP_NAME))?.oidcConfig?.clientId;
|
|
165
183
|
if (existing) {
|
|
166
184
|
logInfo(`Zitadel app '${CLI_APP_NAME}' already exists`);
|
|
167
185
|
return existing;
|
|
168
186
|
}
|
|
169
|
-
const created = await api(pat,
|
|
187
|
+
const created = await api(pat, 'POST', `/management/v1/projects/${projectId}/apps/oidc`, buildCliAppPayload());
|
|
170
188
|
logSuccess(`Created Zitadel application '${CLI_APP_NAME}' (PKCE + device code)`);
|
|
171
189
|
return created.clientId;
|
|
172
190
|
}
|
|
173
191
|
async function ensureTestUsers(pat) {
|
|
174
192
|
for (const user of TEST_USERS) {
|
|
175
193
|
try {
|
|
176
|
-
await api(pat,
|
|
194
|
+
await api(pat, 'POST', '/management/v1/users/human/_import', {
|
|
177
195
|
userName: user.email,
|
|
178
196
|
profile: {
|
|
179
197
|
firstName: user.firstName,
|
|
@@ -199,13 +217,13 @@ async function ensureTestUsers(pat) {
|
|
|
199
217
|
/** Where the Hub's oauth2-proxy credentials persist between runs (the local
|
|
200
218
|
* analog of the K8s Secret the Service component creates for the sidecar). */
|
|
201
219
|
export function hubAuthPath() {
|
|
202
|
-
const dir = path.join(os.homedir(),
|
|
220
|
+
const dir = path.join(os.homedir(), '.cache', 'mesh', 'mesh-local');
|
|
203
221
|
fs.mkdirSync(dir, { recursive: true });
|
|
204
|
-
return path.join(dir,
|
|
222
|
+
return path.join(dir, 'hub-auth.json');
|
|
205
223
|
}
|
|
206
224
|
export function readHubAuth() {
|
|
207
225
|
try {
|
|
208
|
-
const parsed = JSON.parse(fs.readFileSync(hubAuthPath(),
|
|
226
|
+
const parsed = JSON.parse(fs.readFileSync(hubAuthPath(), 'utf-8'));
|
|
209
227
|
if (parsed?.clientId && parsed?.clientSecret && parsed?.cookieSecret)
|
|
210
228
|
return parsed;
|
|
211
229
|
return null;
|
|
@@ -214,13 +232,24 @@ export function readHubAuth() {
|
|
|
214
232
|
return null;
|
|
215
233
|
}
|
|
216
234
|
}
|
|
217
|
-
const ensureHubProject = (pat) => ensureZitadelProject(pat, HUB_PROJECT_NAME, { describe:
|
|
235
|
+
const ensureHubProject = (pat) => ensureZitadelProject(pat, HUB_PROJECT_NAME, { describe: 'Hub platform app' });
|
|
236
|
+
/**
|
|
237
|
+
* What a role key is called in Zitadel's own UI and in the Hub's role picker.
|
|
238
|
+
*
|
|
239
|
+
* A tenant-keyed key reads as the base role plus the tenant it is scoped to, so
|
|
240
|
+
* that `vendor:local` is not offered to an administrator as an opaque string
|
|
241
|
+
* sitting next to a bare `vendor` that grants something entirely different.
|
|
242
|
+
*/
|
|
243
|
+
function hubRoleDisplayName(roleKey) {
|
|
244
|
+
const tenant = hubRoleKeyTenant(roleKey);
|
|
245
|
+
return tenant === null ? roleKey : `${restrictedRoleBase(roleKey) ?? roleKey} (${tenant})`;
|
|
246
|
+
}
|
|
218
247
|
async function ensureHubRoles(pat, projectId) {
|
|
219
248
|
for (const role of HUB_ROLES) {
|
|
220
249
|
try {
|
|
221
|
-
await api(pat,
|
|
250
|
+
await api(pat, 'POST', `/management/v1/projects/${projectId}/roles`, {
|
|
222
251
|
roleKey: role,
|
|
223
|
-
displayName: role,
|
|
252
|
+
displayName: hubRoleDisplayName(role),
|
|
224
253
|
});
|
|
225
254
|
logSuccess(`Created Hub role '${role}'`);
|
|
226
255
|
}
|
|
@@ -264,14 +293,17 @@ export async function reconcileHubRedirectUris(pat, projectId, app) {
|
|
|
264
293
|
// additionalOrigins, clockSkew, backChannelLogoutUri — are NOT carried, so
|
|
265
294
|
// anything set out-of-band in the Zitadel console is dropped here. Fine for
|
|
266
295
|
// the local dev app; revisit before reusing against a shared instance.
|
|
267
|
-
await api(pat,
|
|
296
|
+
await api(pat, 'PUT', `/management/v1/projects/${projectId}/apps/${app.id}/oidc_config`, {
|
|
268
297
|
redirectUris,
|
|
269
298
|
postLogoutRedirectUris,
|
|
270
|
-
responseTypes: cfg.responseTypes ?? [
|
|
271
|
-
grantTypes: cfg.grantTypes ?? [
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
299
|
+
responseTypes: cfg.responseTypes ?? ['OIDC_RESPONSE_TYPE_CODE'],
|
|
300
|
+
grantTypes: cfg.grantTypes ?? [
|
|
301
|
+
'OIDC_GRANT_TYPE_AUTHORIZATION_CODE',
|
|
302
|
+
'OIDC_GRANT_TYPE_REFRESH_TOKEN',
|
|
303
|
+
],
|
|
304
|
+
appType: 'OIDC_APP_TYPE_WEB',
|
|
305
|
+
authMethodType: 'OIDC_AUTH_METHOD_TYPE_BASIC',
|
|
306
|
+
accessTokenType: cfg.accessTokenType ?? 'OIDC_TOKEN_TYPE_JWT',
|
|
275
307
|
accessTokenRoleAssertion: cfg.accessTokenRoleAssertion ?? true,
|
|
276
308
|
idTokenRoleAssertion: cfg.idTokenRoleAssertion ?? true,
|
|
277
309
|
idTokenUserinfoAssertion: cfg.idTokenUserinfoAssertion ?? true,
|
|
@@ -290,11 +322,11 @@ async function ensureHubApp(pat, projectId) {
|
|
|
290
322
|
const persisted = readHubAuth();
|
|
291
323
|
if (persisted && persisted.clientId === clientId)
|
|
292
324
|
return { clientId };
|
|
293
|
-
const regenerated = await api(pat,
|
|
325
|
+
const regenerated = await api(pat, 'POST', `/management/v1/projects/${projectId}/apps/${existing.id}/oidc_config/_generate_client_secret`, {});
|
|
294
326
|
logSuccess(`Regenerated Hub UI client secret (local copy was missing)`);
|
|
295
327
|
return { clientId, clientSecret: regenerated.clientSecret };
|
|
296
328
|
}
|
|
297
|
-
const created = await api(pat,
|
|
329
|
+
const created = await api(pat, 'POST', `/management/v1/projects/${projectId}/apps/oidc`, {
|
|
298
330
|
name: HUB_APP_NAME,
|
|
299
331
|
redirectUris: [...new Set([hubRedirectUri(), HUB_DEFAULT_REDIRECT_URI])],
|
|
300
332
|
postLogoutRedirectUris: [
|
|
@@ -307,11 +339,11 @@ async function ensureHubApp(pat, projectId) {
|
|
|
307
339
|
`http://localhost:${DEFAULT_HUB_PORT}/`,
|
|
308
340
|
]),
|
|
309
341
|
],
|
|
310
|
-
responseTypes: [
|
|
311
|
-
grantTypes: [
|
|
312
|
-
appType:
|
|
313
|
-
authMethodType:
|
|
314
|
-
accessTokenType:
|
|
342
|
+
responseTypes: ['OIDC_RESPONSE_TYPE_CODE'],
|
|
343
|
+
grantTypes: ['OIDC_GRANT_TYPE_AUTHORIZATION_CODE', 'OIDC_GRANT_TYPE_REFRESH_TOKEN'],
|
|
344
|
+
appType: 'OIDC_APP_TYPE_WEB',
|
|
345
|
+
authMethodType: 'OIDC_AUTH_METHOD_TYPE_BASIC',
|
|
346
|
+
accessTokenType: 'OIDC_TOKEN_TYPE_JWT',
|
|
315
347
|
accessTokenRoleAssertion: true,
|
|
316
348
|
idTokenRoleAssertion: true,
|
|
317
349
|
idTokenUserinfoAssertion: true,
|
|
@@ -324,23 +356,23 @@ async function ensureHubApp(pat, projectId) {
|
|
|
324
356
|
* ops@local.mesh gets `developer` — proves per-user role claims. */
|
|
325
357
|
async function ensureHubGrants(pat, projectId) {
|
|
326
358
|
const grants = [
|
|
327
|
-
{ email:
|
|
328
|
-
{ email:
|
|
329
|
-
{ email:
|
|
359
|
+
{ email: 'admin@local.mesh', roles: ['ops'] },
|
|
360
|
+
{ email: 'dev@local.mesh', roles: ['ops'] },
|
|
361
|
+
{ email: 'ops@local.mesh', roles: ['developer'] },
|
|
330
362
|
];
|
|
331
363
|
for (const grant of grants) {
|
|
332
|
-
const search = await api(pat,
|
|
333
|
-
queries: [{ userNameQuery: { userName: grant.email, method:
|
|
364
|
+
const search = await api(pat, 'POST', '/management/v1/users/_search', {
|
|
365
|
+
queries: [{ userNameQuery: { userName: grant.email, method: 'TEXT_QUERY_METHOD_EQUALS' } }],
|
|
334
366
|
});
|
|
335
367
|
const userId = search?.result?.[0]?.id;
|
|
336
368
|
if (!userId)
|
|
337
369
|
continue;
|
|
338
370
|
try {
|
|
339
|
-
await api(pat,
|
|
371
|
+
await api(pat, 'POST', `/management/v1/users/${userId}/grants`, {
|
|
340
372
|
projectId,
|
|
341
373
|
roleKeys: grant.roles,
|
|
342
374
|
});
|
|
343
|
-
logSuccess(`Granted Hub role(s) ${grant.roles.join(
|
|
375
|
+
logSuccess(`Granted Hub role(s) ${grant.roles.join(', ')} → ${grant.email}`);
|
|
344
376
|
}
|
|
345
377
|
catch (err) {
|
|
346
378
|
if (!isAlreadyExists(err))
|
|
@@ -362,40 +394,186 @@ export async function seedHubAuth(pat) {
|
|
|
362
394
|
: undefined;
|
|
363
395
|
const config = {
|
|
364
396
|
clientId: app.clientId,
|
|
365
|
-
|
|
366
|
-
|
|
397
|
+
projectId,
|
|
398
|
+
clientSecret: app.clientSecret ?? persisted?.clientSecret ?? '',
|
|
399
|
+
cookieSecret: persistedCookie ?? (await import('crypto')).randomBytes(16).toString('hex'),
|
|
367
400
|
};
|
|
368
401
|
fs.writeFileSync(hubAuthPath(), JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
369
402
|
return config;
|
|
370
403
|
}
|
|
404
|
+
/**
|
|
405
|
+
* Publish the Hub's OWN authz pointer — the local stand-in for what the platform
|
|
406
|
+
* Pulumi program publishes (Hub RBAC design §7.1).
|
|
407
|
+
*
|
|
408
|
+
* The Hub administers every app's identity through
|
|
409
|
+
* `identity/apps/{app}/users`, which resolves the app's Zitadel project and org
|
|
410
|
+
* from its published pointer. Without a pointer of its own the Hub is the one
|
|
411
|
+
* app it cannot administer: its Users page has no project to create people in
|
|
412
|
+
* and no role vocabulary to grant, which is why that page could only ever be a
|
|
413
|
+
* mock. Locally there is no Pulumi run to publish it, so seeding does.
|
|
414
|
+
*
|
|
415
|
+
* Read-modify-write: the compiled-schema keys (`opsHubMetadataRef`, `mode`) are
|
|
416
|
+
* published by the Hub itself and must survive this.
|
|
417
|
+
*/
|
|
418
|
+
async function publishHubAuthzPointer(projectId, orgId, awsConfig) {
|
|
419
|
+
const { SSMClient, GetParameterCommand, PutParameterCommand } = await import("@aws-sdk/client-ssm");
|
|
420
|
+
const ssm = new SSMClient(awsConfig);
|
|
421
|
+
const name = `/mesh-platform/${LOCAL_TENANT}/${LOCAL_ENV}/apps/hub/stacks/local/authz`;
|
|
422
|
+
let current = {};
|
|
423
|
+
try {
|
|
424
|
+
const existing = await ssm.send(new GetParameterCommand({ Name: name }));
|
|
425
|
+
current = JSON.parse(existing.Parameter?.Value ?? "{}");
|
|
426
|
+
}
|
|
427
|
+
catch {
|
|
428
|
+
// First run — nothing published yet.
|
|
429
|
+
}
|
|
430
|
+
const value = {
|
|
431
|
+
spicedb: { instanceRefs: [] },
|
|
432
|
+
...current,
|
|
433
|
+
zitadel: { projectId, orgId, issuer: ZITADEL_ISSUER },
|
|
434
|
+
};
|
|
435
|
+
await ssm.send(new PutParameterCommand({
|
|
436
|
+
Name: name,
|
|
437
|
+
Type: "String",
|
|
438
|
+
Overwrite: true,
|
|
439
|
+
Value: JSON.stringify(value),
|
|
440
|
+
Description: "Hub authz pointer (local analog of the platform Pulumi program)",
|
|
441
|
+
}));
|
|
442
|
+
logSuccess(`Hub authz pointer published → project ${projectId} in org ${orgId}`);
|
|
443
|
+
}
|
|
371
444
|
/** Registry parity: what SSM discovery and `mesh dev test-user` read in the cloud. */
|
|
372
445
|
async function writeRegistryParams(cliClientId, awsConfig) {
|
|
373
|
-
const { SSMClient, PutParameterCommand } = await import(
|
|
446
|
+
const { SSMClient, PutParameterCommand } = await import('@aws-sdk/client-ssm');
|
|
374
447
|
const ssm = new SSMClient(awsConfig);
|
|
375
448
|
await ssm.send(new PutParameterCommand({
|
|
376
449
|
Name: ZITADEL_SSM_PARAM,
|
|
377
|
-
Type:
|
|
450
|
+
Type: 'String',
|
|
378
451
|
Overwrite: true,
|
|
379
452
|
Value: JSON.stringify({ endpoint: ZITADEL_ISSUER, cliClientId }),
|
|
380
|
-
Description:
|
|
453
|
+
Description: 'Zitadel platform export (seeded by mesh start)',
|
|
381
454
|
}));
|
|
382
455
|
for (const user of TEST_USERS) {
|
|
383
456
|
await ssm.send(new PutParameterCommand({
|
|
384
457
|
Name: `${TEST_USERS_SSM_PREFIX}/${user.name}`,
|
|
385
|
-
Type:
|
|
458
|
+
Type: 'String',
|
|
386
459
|
Overwrite: true,
|
|
387
460
|
Value: JSON.stringify({ email: user.email, password: user.password, roles: [] }),
|
|
388
461
|
Description: `Local test user '${user.name}' (dev-grade, seeded by mesh start)`,
|
|
389
462
|
}));
|
|
390
463
|
}
|
|
391
464
|
}
|
|
465
|
+
/** Secrets Manager id the Hub reads its Zitadel admin key from (opsHubSecretName). */
|
|
466
|
+
export const OPS_HUB_SECRET_ID = 'mesh/local/dev/zitadel/ops-hub';
|
|
467
|
+
/**
|
|
468
|
+
* Give the local Hub an ADMIN plane.
|
|
469
|
+
*
|
|
470
|
+
* The Hub verifies tokens with `ZITADEL_ISSUER`, but every WRITE — creating a
|
|
471
|
+
* user, minting an API key — goes through a machine key it loads from Secrets
|
|
472
|
+
* Manager. Without that key the local Hub silently offers no create affordance
|
|
473
|
+
* and nothing reaches the IdP, which reads as "the feature is broken" rather
|
|
474
|
+
* than "the credential was never provisioned".
|
|
475
|
+
*
|
|
476
|
+
* The key is a Zitadel machine key (private_key_jwt): `{ keyId, key, userId }`.
|
|
477
|
+
* Idempotent — an existing user is reused, and a fresh key is minted only when
|
|
478
|
+
* the secret is absent, because Zitadel returns the private half exactly once.
|
|
479
|
+
*/
|
|
480
|
+
async function ensureOpsHubAdmin(pat, awsConfig) {
|
|
481
|
+
const { SecretsManagerClient, GetSecretValueCommand, CreateSecretCommand, PutSecretValueCommand, } = await import('@aws-sdk/client-secrets-manager');
|
|
482
|
+
const sm = new SecretsManagerClient(awsConfig);
|
|
483
|
+
const existing = await sm
|
|
484
|
+
.send(new GetSecretValueCommand({ SecretId: OPS_HUB_SECRET_ID }))
|
|
485
|
+
.catch(() => null);
|
|
486
|
+
if (existing?.SecretString) {
|
|
487
|
+
logSuccess('Hub admin key already provisioned (Zitadel writes enabled)');
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
const userName = 'hub-opshub';
|
|
491
|
+
const found = await api(pat, 'POST', '/management/v1/users/_search', {
|
|
492
|
+
queries: [{ userNameQuery: { userName, method: 'TEXT_QUERY_METHOD_EQUALS' } }],
|
|
493
|
+
});
|
|
494
|
+
let userId = found?.result?.[0]?.id;
|
|
495
|
+
if (!userId) {
|
|
496
|
+
const created = await api(pat, 'POST', '/management/v1/users/machine', {
|
|
497
|
+
userName,
|
|
498
|
+
name: 'Hub Ops Hub admin',
|
|
499
|
+
description: 'Local Hub Zitadel admin plane (seeded by mesh start)',
|
|
500
|
+
});
|
|
501
|
+
userId = created?.userId;
|
|
502
|
+
}
|
|
503
|
+
if (!userId)
|
|
504
|
+
throw new MeshCliError("could not create the Hub's Zitadel admin user");
|
|
505
|
+
// IAM_OWNER because the Hub administers every org on the instance — each app
|
|
506
|
+
// tenant gets its own org, and a key is minted in the app's org, not the Hub's.
|
|
507
|
+
await api(pat, 'POST', '/admin/v1/members', { userId, roles: ['IAM_OWNER'] }).catch(() => undefined);
|
|
508
|
+
const key = await api(pat, 'POST', `/management/v1/users/${userId}/keys`, {
|
|
509
|
+
type: 'KEY_TYPE_JSON',
|
|
510
|
+
});
|
|
511
|
+
if (!key?.keyDetails)
|
|
512
|
+
throw new MeshCliError('Zitadel did not return a machine key for the Hub admin user');
|
|
513
|
+
const raw = JSON.parse(Buffer.from(key.keyDetails, 'base64').toString('utf8'));
|
|
514
|
+
const secretString = JSON.stringify({ keyId: raw.keyId, key: raw.key, userId: raw.userId });
|
|
515
|
+
await sm
|
|
516
|
+
.send(new CreateSecretCommand({ Name: OPS_HUB_SECRET_ID, SecretString: secretString }))
|
|
517
|
+
.catch(async () => {
|
|
518
|
+
await sm.send(new PutSecretValueCommand({ SecretId: OPS_HUB_SECRET_ID, SecretString: secretString }));
|
|
519
|
+
});
|
|
520
|
+
logSuccess(`Hub admin key provisioned → ${OPS_HUB_SECRET_ID} (Zitadel writes enabled)`);
|
|
521
|
+
}
|
|
522
|
+
/** Where the local stack's mail goes — the `mailpit` service in docker-compose. */
|
|
523
|
+
const LOCAL_SMTP = {
|
|
524
|
+
host: 'mailpit:1025',
|
|
525
|
+
from: 'no-reply@local.mesh',
|
|
526
|
+
fromName: 'Mesh (local)',
|
|
527
|
+
};
|
|
528
|
+
/**
|
|
529
|
+
* Point the instance's mail at the local mailbox, on every start.
|
|
530
|
+
*
|
|
531
|
+
* The compose file sets the same thing via `ZITADEL_DEFAULTINSTANCE_SMTP…`,
|
|
532
|
+
* but those apply at FIRST INIT only — so every stack that existed before the
|
|
533
|
+
* mailbox was added would keep no SMTP config at all, and activation and
|
|
534
|
+
* password-reset mail would go on silently going nowhere. Reconciling here
|
|
535
|
+
* covers those without asking anyone to `mesh stop --destroy`.
|
|
536
|
+
*
|
|
537
|
+
* Idempotent: reads the configured providers first and only writes when the
|
|
538
|
+
* host differs. Best-effort — a stack whose mail is misconfigured is worth a
|
|
539
|
+
* warning, not a failed `mesh start`.
|
|
540
|
+
*/
|
|
541
|
+
async function ensureLocalSmtp(pat) {
|
|
542
|
+
try {
|
|
543
|
+
const existing = await api(pat, 'POST', '/admin/v1/smtp/_search', {}).catch(() => null);
|
|
544
|
+
const configs = existing?.result ?? [];
|
|
545
|
+
const match = configs.find((c) => c.host === LOCAL_SMTP.host);
|
|
546
|
+
if (!match) {
|
|
547
|
+
const created = await api(pat, 'POST', '/admin/v1/smtp', {
|
|
548
|
+
senderAddress: LOCAL_SMTP.from,
|
|
549
|
+
senderName: LOCAL_SMTP.fromName,
|
|
550
|
+
tls: false,
|
|
551
|
+
host: LOCAL_SMTP.host,
|
|
552
|
+
user: '',
|
|
553
|
+
password: '',
|
|
554
|
+
});
|
|
555
|
+
// A provider that exists but is not active still sends nothing.
|
|
556
|
+
if (created?.id)
|
|
557
|
+
await api(pat, 'POST', `/admin/v1/smtp/${created.id}/_activate`, {});
|
|
558
|
+
logSuccess(`Local mailbox wired to Zitadel → ${LOCAL_SMTP.host} (view at http://localhost:8025)`);
|
|
559
|
+
return;
|
|
560
|
+
}
|
|
561
|
+
if (match.state !== 'SMTP_CONFIG_ACTIVE' && match.id) {
|
|
562
|
+
await api(pat, 'POST', `/admin/v1/smtp/${match.id}/_activate`, {});
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
catch (err) {
|
|
566
|
+
logWarn(`Could not wire the local mailbox to Zitadel (${err.message}). ` +
|
|
567
|
+
'Activation and password-reset mail will not be delivered locally.');
|
|
568
|
+
}
|
|
569
|
+
}
|
|
392
570
|
export async function seedZitadel(awsConfig) {
|
|
393
571
|
const pat = readSeederPat();
|
|
394
|
-
const org = await api(pat,
|
|
395
|
-
queries: [{ nameQuery: { name: PLATFORM_ORG, method:
|
|
572
|
+
const org = await api(pat, 'POST', '/admin/v1/orgs/_search', {
|
|
573
|
+
queries: [{ nameQuery: { name: PLATFORM_ORG, method: 'TEXT_QUERY_METHOD_EQUALS' } }],
|
|
396
574
|
});
|
|
397
575
|
if (!org?.result?.[0]) {
|
|
398
|
-
throw new MeshCliError(`Platform org '${PLATFORM_ORG}' not found — the zitadel volume predates the org naming.`, { remediation: { command:
|
|
576
|
+
throw new MeshCliError(`Platform org '${PLATFORM_ORG}' not found — the zitadel volume predates the org naming.`, { remediation: { command: 'mesh stop --destroy && mesh start' } });
|
|
399
577
|
}
|
|
400
578
|
logSuccess(`Platform org '${PLATFORM_ORG}' ready (platform tenant root — holds platform-service auth config)`);
|
|
401
579
|
// Zitadel v4 defaults new instances to the login-v2 UI — a separate
|
|
@@ -403,17 +581,20 @@ export async function seedZitadel(awsConfig) {
|
|
|
403
581
|
// authorize flow has a page to land on (idempotent; compose sets the
|
|
404
582
|
// same default at first-instance time).
|
|
405
583
|
try {
|
|
406
|
-
await api(pat,
|
|
584
|
+
await api(pat, 'PUT', '/v2/features/instance', { loginV2: { required: false } });
|
|
407
585
|
}
|
|
408
586
|
catch {
|
|
409
587
|
// pre-v4 instance or endpoint drift — v1 login is already the default
|
|
410
588
|
}
|
|
589
|
+
await ensureLocalSmtp(pat);
|
|
411
590
|
const projectId = await ensureCliProject(pat);
|
|
412
591
|
const cliClientId = await ensureCliApp(pat, projectId);
|
|
413
592
|
await ensureTestUsers(pat);
|
|
414
593
|
// Hub auth AFTER test users exist (role grants target them).
|
|
415
594
|
const hubAuth = await seedHubAuth(pat);
|
|
595
|
+
await publishHubAuthzPointer(hubAuth.projectId, org.result[0].id, awsConfig);
|
|
416
596
|
await writeRegistryParams(cliClientId, awsConfig);
|
|
597
|
+
await ensureOpsHubAdmin(pat, awsConfig);
|
|
417
598
|
writeContextConfig(LOGIN_CONTEXT, { issuer: ZITADEL_ISSUER, clientId: cliClientId });
|
|
418
599
|
logSuccess(`Login context '${LOGIN_CONTEXT}' configured → try: mesh login ${LOGIN_CONTEXT}`);
|
|
419
600
|
return { projectId, cliClientId, hubAuth };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-zitadel.js","sourceRoot":"","sources":["../../../../src/commands/local/seed-zitadel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seed-zitadel.js","sourceRoot":"","sources":["../../../../src/commands/local/seed-zitadel.ts"],"names":[],"mappings":"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"}
|