@mesh-tech/mesh-cli 0.39.0 → 0.40.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.
Files changed (95) hide show
  1. package/dist/bin/{mesh.auth-preflight-JO5G7SOF.js → mesh.auth-preflight-AUFQ2FGD.js} +1 -1
  2. package/dist/bin/{mesh.chunk-CNLSVKYY.js → mesh.chunk-2ASXJ5DO.js} +233 -581
  3. package/dist/bin/mesh.chunk-2ASXJ5DO.js.map +6 -0
  4. package/dist/bin/{mesh.chunk-WODQO6TP.js → mesh.chunk-6AIG5OJM.js} +3 -3
  5. package/dist/bin/{mesh.chunk-OSV3EZQ3.js → mesh.chunk-6SSOVZOI.js} +1 -1
  6. package/dist/bin/{mesh.chunk-2ZJR5LGN.js → mesh.chunk-7HTKSUWR.js} +1507 -548
  7. package/dist/bin/mesh.chunk-7HTKSUWR.js.map +6 -0
  8. package/dist/bin/{mesh.chunk-UI6EFAMD.js → mesh.chunk-F44A3ACW.js} +2 -2
  9. package/dist/bin/{mesh.chunk-C2TKCYHP.js → mesh.chunk-HJGMOEUG.js} +1 -1
  10. package/dist/bin/{mesh.chunk-O6WRZU4X.js → mesh.chunk-NSQJEX36.js} +1 -1
  11. package/dist/bin/{mesh.chunk-C4ZM7DM2.js → mesh.chunk-PZVI7V3J.js} +1 -1
  12. package/dist/bin/mesh.chunk-TDCH4SFQ.js +419 -0
  13. package/dist/bin/mesh.chunk-TDCH4SFQ.js.map +6 -0
  14. package/dist/bin/mesh.chunk-YE2WIY3Y.js +473 -0
  15. package/dist/bin/mesh.chunk-YE2WIY3Y.js.map +6 -0
  16. package/dist/bin/{mesh.create-app-SOHBL75U.js → mesh.create-app-Z3RKSTBO.js} +3 -3
  17. package/dist/bin/{mesh.dev-token-server-SS7QEQOQ.js → mesh.dev-token-server-XG26C6IQ.js} +2 -2
  18. package/dist/bin/mesh.generate-XSM4C6FQ.js +10 -0
  19. package/dist/bin/mesh.js +9 -8
  20. package/dist/bin/mesh.js.map +1 -1
  21. package/dist/bin/{mesh.login-6VPMWHHU.js → mesh.login-3AWVGPCM.js} +2 -2
  22. package/dist/bin/{mesh.platform-setup-DJJB2PWL.js → mesh.platform-setup-2ZDMHRCI.js} +1 -1
  23. package/dist/bin/{mesh.program-Y4HUNBFP.js → mesh.program-K5JQXEHX.js} +9 -8
  24. package/dist/bin/{mesh.registry-5P4ZLFLJ.js → mesh.registry-JLQYFUNN.js} +4 -4
  25. package/dist/bin/{mesh.registry-identity-ONGUJQAY.js → mesh.registry-identity-3AR27UGO.js} +3 -3
  26. package/dist/bin/mesh.registry-identity-3AR27UGO.js.map +6 -0
  27. package/dist/bin/mesh.review-command-LUVZQN2T.js +238 -0
  28. package/dist/bin/mesh.review-command-LUVZQN2T.js.map +6 -0
  29. package/dist/bin/{mesh.start-5CPWOHDJ.js → mesh.start-KZ5L6SOJ.js} +2 -2
  30. package/dist/bin/{mesh.wizard-FNRTSGVN.js → mesh.wizard-FCTT55KI.js} +7 -7
  31. package/dist/bin/mesh.workspace-membership-DI3YQGEK.js +65 -0
  32. package/dist/bin/mesh.workspace-membership-DI3YQGEK.js.map +6 -0
  33. package/dist/build-info.json +2 -2
  34. package/dist/src/commands/dev-doctor.d.ts +22 -0
  35. package/dist/src/commands/dev-doctor.js +149 -0
  36. package/dist/src/commands/dev-env-leaks.d.ts +24 -0
  37. package/dist/src/commands/dev-env-leaks.js +178 -0
  38. package/dist/src/commands/dev-launch.d.ts +17 -1
  39. package/dist/src/commands/dev-launch.js +130 -5
  40. package/dist/src/commands/dev-readiness.d.ts +49 -0
  41. package/dist/src/commands/dev-readiness.js +78 -0
  42. package/dist/src/commands/dev.d.ts +60 -0
  43. package/dist/src/commands/dev.js +539 -140
  44. package/dist/src/commands/hub/index.js +10 -7
  45. package/dist/src/commands/mcp/generate.d.ts +11 -0
  46. package/dist/src/commands/mcp/generate.js +78 -0
  47. package/dist/src/commands/mcp/index.d.ts +2 -0
  48. package/dist/src/commands/mcp/index.js +70 -0
  49. package/dist/src/commands/mcp/manifest-file.d.ts +5 -0
  50. package/dist/src/commands/mcp/manifest-file.js +24 -0
  51. package/dist/src/commands/mcp/review-command.d.ts +24 -0
  52. package/dist/src/commands/mcp/review-command.js +66 -0
  53. package/dist/src/commands/mcp/review.d.ts +41 -0
  54. package/dist/src/commands/mcp/review.js +140 -0
  55. package/dist/src/commands/mcp/workspace-membership.d.ts +7 -0
  56. package/dist/src/commands/mcp/workspace-membership.js +77 -0
  57. package/dist/src/commands/secrets/reindex.js +2 -7
  58. package/dist/src/commands/secrets/set.d.ts +22 -1
  59. package/dist/src/commands/secrets/set.js +31 -8
  60. package/dist/src/commands/temporal.js +35 -4
  61. package/dist/src/commands/temporal.js.map +2 -2
  62. package/dist/src/program.js +2 -0
  63. package/dist/src/utils/aws-auth.d.ts +4 -0
  64. package/dist/src/utils/aws-auth.js +7 -3
  65. package/dist/src/utils/dev-sessions-root.d.ts +3 -0
  66. package/dist/src/utils/dev-sessions-root.js +45 -0
  67. package/dist/src/utils/kubeconfig.js +2 -2
  68. package/dist/src/utils/tailscale.js +7 -1
  69. package/dist/src/utils/temporal-auth.js +2 -1
  70. package/dist/src/utils/workflow-fingerprint.js +23 -12
  71. package/fragments/base/index.ts.hbs +3 -0
  72. package/package.json +7 -5
  73. package/skills/mesh/SKILL.md +10 -6
  74. package/templates/api-auth/index.ts.hbs +1 -0
  75. package/templates/api-role-gating/index.ts.hbs +1 -0
  76. package/templates/external-service/index.ts.hbs +1 -0
  77. package/templates/workflow/index.ts.hbs +2 -0
  78. package/dist/bin/mesh.chunk-2ZJR5LGN.js.map +0 -6
  79. package/dist/bin/mesh.chunk-CNLSVKYY.js.map +0 -6
  80. /package/dist/bin/{mesh.auth-preflight-JO5G7SOF.js.map → mesh.auth-preflight-AUFQ2FGD.js.map} +0 -0
  81. /package/dist/bin/{mesh.chunk-WODQO6TP.js.map → mesh.chunk-6AIG5OJM.js.map} +0 -0
  82. /package/dist/bin/{mesh.chunk-OSV3EZQ3.js.map → mesh.chunk-6SSOVZOI.js.map} +0 -0
  83. /package/dist/bin/{mesh.chunk-UI6EFAMD.js.map → mesh.chunk-F44A3ACW.js.map} +0 -0
  84. /package/dist/bin/{mesh.chunk-C2TKCYHP.js.map → mesh.chunk-HJGMOEUG.js.map} +0 -0
  85. /package/dist/bin/{mesh.chunk-O6WRZU4X.js.map → mesh.chunk-NSQJEX36.js.map} +0 -0
  86. /package/dist/bin/{mesh.chunk-C4ZM7DM2.js.map → mesh.chunk-PZVI7V3J.js.map} +0 -0
  87. /package/dist/bin/{mesh.create-app-SOHBL75U.js.map → mesh.create-app-Z3RKSTBO.js.map} +0 -0
  88. /package/dist/bin/{mesh.dev-token-server-SS7QEQOQ.js.map → mesh.dev-token-server-XG26C6IQ.js.map} +0 -0
  89. /package/dist/bin/{mesh.login-6VPMWHHU.js.map → mesh.generate-XSM4C6FQ.js.map} +0 -0
  90. /package/dist/bin/{mesh.platform-setup-DJJB2PWL.js.map → mesh.login-3AWVGPCM.js.map} +0 -0
  91. /package/dist/bin/{mesh.program-Y4HUNBFP.js.map → mesh.platform-setup-2ZDMHRCI.js.map} +0 -0
  92. /package/dist/bin/{mesh.registry-5P4ZLFLJ.js.map → mesh.program-K5JQXEHX.js.map} +0 -0
  93. /package/dist/bin/{mesh.registry-identity-ONGUJQAY.js.map → mesh.registry-JLQYFUNN.js.map} +0 -0
  94. /package/dist/bin/{mesh.start-5CPWOHDJ.js.map → mesh.start-KZ5L6SOJ.js.map} +0 -0
  95. /package/dist/bin/{mesh.wizard-FNRTSGVN.js.map → mesh.wizard-FCTT55KI.js.map} +0 -0
@@ -0,0 +1,473 @@
1
+ import {
2
+ derivePlatformRef,
3
+ detectContext,
4
+ findAppRoot,
5
+ readStackConfig,
6
+ resolveAwsCredentials,
7
+ resolveStackOption
8
+ } from "./mesh.chunk-7HTKSUWR.js";
9
+ import {
10
+ isAwsErrorCode
11
+ } from "./mesh.chunk-MCBMHWXP.js";
12
+ import {
13
+ logError,
14
+ logInfo,
15
+ logSuccess
16
+ } from "./mesh.chunk-WFFDF346.js";
17
+
18
+ // packages/mesh-cli/src/commands/secrets/set.ts
19
+ import {
20
+ SSMClient,
21
+ GetParametersByPathCommand
22
+ } from "@aws-sdk/client-ssm";
23
+ import {
24
+ SecretsManagerClient as SecretsManagerClient2,
25
+ GetSecretValueCommand as GetSecretValueCommand2,
26
+ PutSecretValueCommand,
27
+ CreateSecretCommand
28
+ } from "@aws-sdk/client-secrets-manager";
29
+ import input from "@inquirer/input";
30
+ import password from "@inquirer/password";
31
+
32
+ // packages/secrets/src/index.ts
33
+ import {
34
+ SecretsManagerClient,
35
+ GetSecretValueCommand
36
+ } from "@aws-sdk/client-secrets-manager";
37
+ var INSTANCE_INDEX_SUFFIX = ".index";
38
+ function instanceIndexSecretId(secretPrefix) {
39
+ return `${secretPrefix}/${INSTANCE_INDEX_SUFFIX}`;
40
+ }
41
+ function isInstanceKey(key) {
42
+ return key.length > 0 && !key.includes("/") && !key.startsWith(".") && !key.endsWith(".config");
43
+ }
44
+ function instanceKeyFromSecretName(secretPrefix, secretName) {
45
+ if (!secretName.startsWith(`${secretPrefix}/`)) return null;
46
+ const key = secretName.slice(secretPrefix.length + 1);
47
+ return isInstanceKey(key) ? key : null;
48
+ }
49
+ function parseInstanceIndex(secretString) {
50
+ let parsed;
51
+ try {
52
+ parsed = JSON.parse(secretString);
53
+ } catch {
54
+ parsed = void 0;
55
+ }
56
+ const instances = parsed?.instances;
57
+ if (!Array.isArray(instances) || !instances.every((k) => typeof k === "string")) {
58
+ throw new Error(
59
+ `Malformed instance index (expected {"instances": string[]}). Rebuild it with: mesh secrets reindex external/<name>`
60
+ );
61
+ }
62
+ return instances.filter(isInstanceKey);
63
+ }
64
+ function buildInstanceIndexValue(keys) {
65
+ const instances = [...new Set([...keys].filter(isInstanceKey))].sort();
66
+ const index = { version: 1, instances };
67
+ return JSON.stringify(index);
68
+ }
69
+
70
+ // packages/mesh-cli/src/commands/secrets/context.ts
71
+ function resolveSecretsContext(opts, stackOpt = resolveStackOption(opts)) {
72
+ return detectContext(stackOpt, { tenant: opts.tenant, stack: stackOpt });
73
+ }
74
+
75
+ // packages/mesh-cli/src/commands/secrets/set.ts
76
+ async function ensureAwsCredentialsForStack(stack) {
77
+ if (process.env.AWS_ACCESS_KEY_ID || process.env.AWS_SESSION_TOKEN) return;
78
+ if (!stack) return;
79
+ const appRoot = findAppRoot(process.cwd());
80
+ if (!appRoot) return;
81
+ const roleArn = readStackConfig(appRoot, stack, "mesh:deployerRole");
82
+ if (!roleArn) return;
83
+ const resolved = await resolveAwsCredentials(roleArn, appRoot, stack);
84
+ if (resolved) {
85
+ Object.assign(process.env, resolved.env);
86
+ delete process.env.AWS_PROFILE;
87
+ }
88
+ }
89
+ function normalizeEntry(raw) {
90
+ if (raw.type === "group" && raw.fields) {
91
+ return {
92
+ type: "group",
93
+ name: raw.name ?? "",
94
+ description: raw.description ?? "",
95
+ fields: normalizeFields(raw.fields)
96
+ };
97
+ }
98
+ return {
99
+ type: "field",
100
+ name: raw.name ?? "",
101
+ description: raw.description ?? "",
102
+ secret: raw.secret ?? false,
103
+ optional: raw.optional ?? false
104
+ };
105
+ }
106
+ function normalizeFields(raw) {
107
+ return Object.fromEntries(
108
+ Object.entries(raw).map(([key, value]) => [key, normalizeEntry(value)])
109
+ );
110
+ }
111
+ async function discoverExternalServices(ssmClient, tenant, platformEnv, stack) {
112
+ const services = /* @__PURE__ */ new Map();
113
+ const basePath = `/mesh-platform/${tenant}/${platformEnv}`;
114
+ const stackSegment = stack ? `/stacks/${stack}/` : void 0;
115
+ const fromStack = /* @__PURE__ */ new Set();
116
+ let nextToken;
117
+ do {
118
+ const response = await ssmClient.send(
119
+ new GetParametersByPathCommand({
120
+ Path: basePath,
121
+ Recursive: true,
122
+ NextToken: nextToken
123
+ })
124
+ );
125
+ for (const param of response.Parameters ?? []) {
126
+ if (!param.Name || !param.Value) continue;
127
+ const scoped = param.Name.includes("/stacks/");
128
+ if (stackSegment && scoped && !param.Name.includes(stackSegment)) continue;
129
+ const metaMatch = param.Name.match(
130
+ /\/external-services\/([^/]+)\/meta$/
131
+ );
132
+ if (metaMatch?.[1]) {
133
+ const serviceName = metaMatch[1];
134
+ if (stackSegment && !scoped && fromStack.has(`meta:${serviceName}`)) continue;
135
+ if (stackSegment && scoped) fromStack.add(`meta:${serviceName}`);
136
+ const meta = JSON.parse(param.Value);
137
+ const existing = services.get(serviceName);
138
+ services.set(serviceName, { ...existing, meta });
139
+ }
140
+ const credMatch = param.Name.match(
141
+ /\/external-services\/([^/]+)\/credentials$/
142
+ );
143
+ if (credMatch?.[1]) {
144
+ const serviceName = credMatch[1];
145
+ if (stackSegment && !scoped && fromStack.has(`schema:${serviceName}`)) continue;
146
+ if (stackSegment && scoped) fromStack.add(`schema:${serviceName}`);
147
+ const raw = JSON.parse(param.Value);
148
+ const schema = {
149
+ fields: normalizeFields(raw.fields),
150
+ keyedBy: raw.keyedBy
151
+ };
152
+ const existing = services.get(serviceName);
153
+ if (existing) {
154
+ existing.schema = schema;
155
+ } else {
156
+ services.set(serviceName, { meta: {}, schema });
157
+ }
158
+ }
159
+ }
160
+ nextToken = response.NextToken;
161
+ } while (nextToken);
162
+ return services;
163
+ }
164
+ async function promptFields(fields, existing, result, opts, depth = 0) {
165
+ for (const [fieldKey, entry] of Object.entries(fields)) {
166
+ if (entry.type === "group") {
167
+ const indent = " ".repeat(depth);
168
+ console.error("");
169
+ console.error(`${indent}\u2500\u2500 ${entry.name} \u2500\u2500`);
170
+ const existingGroup = existing[fieldKey] ?? {};
171
+ const resultGroup = {};
172
+ await promptFields(entry.fields, existingGroup, resultGroup, opts, depth + 1);
173
+ result[fieldKey] = resultGroup;
174
+ } else {
175
+ if (entry.optional && !opts.all) {
176
+ const existingVal2 = existing[fieldKey];
177
+ if (existingVal2 !== void 0 && existingVal2 !== "") {
178
+ result[fieldKey] = existingVal2;
179
+ }
180
+ continue;
181
+ }
182
+ const existingVal = existing[fieldKey];
183
+ const hasExisting = !!existingVal && existingVal !== "";
184
+ const message = entry.description ? `${entry.name} (${entry.description})` : entry.name;
185
+ const label = entry.optional ? `${message} [optional]` : message;
186
+ let value;
187
+ if (entry.secret) {
188
+ value = await password({ message: label, mask: "*" });
189
+ if (!value && hasExisting) {
190
+ value = existingVal;
191
+ }
192
+ } else {
193
+ value = await input({
194
+ message: label,
195
+ default: hasExisting ? existingVal : void 0
196
+ });
197
+ }
198
+ result[fieldKey] = value || (hasExisting ? existingVal : "");
199
+ }
200
+ }
201
+ }
202
+ function displaySummary(fields, values, depth = 0) {
203
+ const indent = " ".repeat(depth);
204
+ for (const [key, entry] of Object.entries(fields)) {
205
+ if (entry.type === "group") {
206
+ console.error(`${indent}${entry.name}:`);
207
+ const group = values[key] ?? {};
208
+ displaySummary(entry.fields, group, depth + 1);
209
+ } else {
210
+ const val = values[key];
211
+ if (!val) continue;
212
+ const display = entry.secret ? "********" : String(val);
213
+ console.error(`${indent}${entry.name}: ${display}`);
214
+ }
215
+ }
216
+ }
217
+ function resolveExternalServiceScope(opts) {
218
+ const stackOpt = resolveStackOption(opts);
219
+ const context = resolveSecretsContext(opts, stackOpt);
220
+ const stack = stackOpt ?? context.stage;
221
+ const appRoot = findAppRoot(process.cwd());
222
+ const platformEnv = (appRoot && stack ? derivePlatformRef(appRoot, stack)?.env : void 0) ?? context.platformEnv;
223
+ return { context, stack, platformEnv };
224
+ }
225
+ async function discoverStackExternalServices(opts, ssmClient, deps = {}) {
226
+ const scope = resolveExternalServiceScope(opts);
227
+ await (deps.ensureCredentials ?? ensureAwsCredentialsForStack)(scope.stack);
228
+ const services = await discoverExternalServices(
229
+ ssmClient,
230
+ scope.context.tenant,
231
+ scope.platformEnv,
232
+ scope.stack
233
+ );
234
+ return { scope, services };
235
+ }
236
+ async function setCommand(servicePath, opts) {
237
+ const region = opts.region ?? process.env.AWS_REGION ?? "us-east-2";
238
+ const { services } = await discoverStackExternalServices(opts, new SSMClient({ region }));
239
+ const smClient = new SecretsManagerClient2({ region });
240
+ if (services.size === 0) {
241
+ logError(
242
+ 'No external services found. Deploy an ExternalService first:\n new mesh.apps.ExternalService("symitar", { env, credentials: { ... } })'
243
+ );
244
+ process.exit(1);
245
+ }
246
+ let serviceName;
247
+ if (servicePath) {
248
+ serviceName = servicePath.replace(/^external\//, "");
249
+ }
250
+ if (!serviceName || !services.has(serviceName)) {
251
+ if (serviceName) {
252
+ logError(`External service "${serviceName}" not found.`);
253
+ }
254
+ console.error("\nAvailable external services:");
255
+ for (const [name, svc2] of services) {
256
+ const desc = svc2.meta?.description ? ` \u2014 ${svc2.meta.description}` : "";
257
+ const type = svc2.meta?.type ? ` (${svc2.meta.type})` : "";
258
+ console.error(` ${name}${type}${desc}`);
259
+ }
260
+ console.error(`
261
+ Usage: mesh secrets set external/<name>`);
262
+ process.exit(serviceName ? 1 : 0);
263
+ }
264
+ const svc = services.get(serviceName);
265
+ const schema = svc.schema;
266
+ if (!schema) {
267
+ logError(`No credential schema found for "${serviceName}".`);
268
+ process.exit(1);
269
+ }
270
+ const secretPrefix = svc.meta.secretPrefix;
271
+ const secretId = opts.key ? `${secretPrefix}/${opts.key}` : secretPrefix;
272
+ if (schema.keyedBy && !opts.key) {
273
+ logError(
274
+ `"${serviceName}" is multi-instance (keyed by ${schema.keyedBy}). Specify an instance:
275
+ mesh secrets set external/${serviceName} --key=<${schema.keyedBy}>`
276
+ );
277
+ process.exit(1);
278
+ }
279
+ if (opts.key && !isInstanceKey(opts.key)) {
280
+ logError(
281
+ `Invalid instance key "${opts.key}": keys must not contain "/", start with ".", or end with ".config" \u2014 those names are reserved for the index and config mirrors.`
282
+ );
283
+ process.exit(1);
284
+ }
285
+ let existing = {};
286
+ try {
287
+ const response = await smClient.send(new GetSecretValueCommand2({ SecretId: secretId }));
288
+ if (response.SecretString) {
289
+ existing = JSON.parse(response.SecretString);
290
+ }
291
+ } catch (err) {
292
+ if (!isResourceNotFound(err)) {
293
+ throw err;
294
+ }
295
+ }
296
+ if (opts.json) {
297
+ let values2;
298
+ try {
299
+ values2 = JSON.parse(opts.json);
300
+ } catch {
301
+ logError(`Invalid JSON input. Provide valid JSON, e.g.: --json='{"key": "value"}'`);
302
+ return;
303
+ }
304
+ const merged2 = deepMerge(existing, values2);
305
+ await writeSecret(smClient, secretId, merged2, svc.meta);
306
+ await writeConfigMirror(smClient, secretId, schema, merged2, svc.meta);
307
+ if (opts.key) {
308
+ await addKeyToInstanceIndex(smClient, secretPrefix, opts.key, serviceName);
309
+ }
310
+ logSuccess(`Credentials written to ${secretId}`);
311
+ return;
312
+ }
313
+ console.error("");
314
+ logInfo(`Setting credentials for: ${svc.meta.description || serviceName}`);
315
+ if (opts.key) {
316
+ logInfo(`Instance: ${opts.key}`);
317
+ }
318
+ logInfo(`Secret: ${secretId}`);
319
+ const values = {};
320
+ await promptFields(schema.fields, existing, values, { all: !!opts.all });
321
+ console.error("");
322
+ const merged = deepMerge(existing, values);
323
+ await writeSecret(smClient, secretId, merged, svc.meta);
324
+ await writeConfigMirror(smClient, secretId, schema, merged, svc.meta);
325
+ if (opts.key) {
326
+ await addKeyToInstanceIndex(smClient, secretPrefix, opts.key, serviceName);
327
+ }
328
+ logSuccess(`Credentials written to ${secretId}`);
329
+ console.error("\nStored fields:");
330
+ displaySummary(schema.fields, merged);
331
+ console.error("");
332
+ }
333
+ function isResourceNotFound(err) {
334
+ return isAwsErrorCode(err, "ResourceNotFoundException");
335
+ }
336
+ function deepMerge(target, source) {
337
+ const result = { ...target };
338
+ for (const [key, value] of Object.entries(source)) {
339
+ if (value !== null && typeof value === "object" && !Array.isArray(value) && typeof result[key] === "object" && result[key] !== null && !Array.isArray(result[key])) {
340
+ result[key] = deepMerge(
341
+ result[key],
342
+ value
343
+ );
344
+ } else {
345
+ result[key] = value;
346
+ }
347
+ }
348
+ return result;
349
+ }
350
+ async function writeSecret(client, secretId, values, meta) {
351
+ const secretString = JSON.stringify(values);
352
+ try {
353
+ await client.send(
354
+ new PutSecretValueCommand({
355
+ SecretId: secretId,
356
+ SecretString: secretString
357
+ })
358
+ );
359
+ } catch (err) {
360
+ if (isResourceNotFound(err)) {
361
+ await client.send(
362
+ new CreateSecretCommand({
363
+ Name: secretId,
364
+ Description: `External service credentials for ${meta.name} (instance)`,
365
+ SecretString: secretString,
366
+ Tags: [
367
+ { Key: "mesh:type", Value: "external-service" },
368
+ { Key: "mesh:service", Value: meta.name }
369
+ ]
370
+ })
371
+ );
372
+ } else {
373
+ throw err;
374
+ }
375
+ }
376
+ }
377
+ function extractNonSecretFields(fields, values) {
378
+ const result = {};
379
+ for (const [key, entry] of Object.entries(fields)) {
380
+ if (entry.type === "group") {
381
+ const groupValues = values[key] ?? {};
382
+ const filtered = extractNonSecretFields(entry.fields, groupValues);
383
+ if (Object.keys(filtered).length > 0) {
384
+ result[key] = filtered;
385
+ }
386
+ } else if (!entry.secret && values[key] !== void 0) {
387
+ result[key] = values[key];
388
+ }
389
+ }
390
+ return result;
391
+ }
392
+ async function addKeyToInstanceIndex(client, secretPrefix, key, serviceName) {
393
+ const indexId = instanceIndexSecretId(secretPrefix);
394
+ try {
395
+ let keys = [];
396
+ try {
397
+ const res = await client.send(new GetSecretValueCommand2({ SecretId: indexId }));
398
+ keys = parseInstanceIndex(res.SecretString ?? "");
399
+ } catch (err) {
400
+ if (!isResourceNotFound(err)) throw err;
401
+ }
402
+ if (keys.includes(key)) return;
403
+ const secretString = buildInstanceIndexValue([...keys, key]);
404
+ try {
405
+ await client.send(
406
+ new PutSecretValueCommand({ SecretId: indexId, SecretString: secretString })
407
+ );
408
+ } catch (err) {
409
+ if (!isResourceNotFound(err)) throw err;
410
+ await client.send(
411
+ new CreateSecretCommand({
412
+ Name: indexId,
413
+ Description: `Instance-key index for ${serviceName} (read by listInstances(); maintained by mesh secrets set/reindex and the Hub)`,
414
+ SecretString: secretString,
415
+ Tags: [
416
+ { Key: "mesh:type", Value: "external-service-index" },
417
+ { Key: "mesh:service", Value: serviceName }
418
+ ]
419
+ })
420
+ );
421
+ logInfo(
422
+ `Created ${indexId} OUT OF BAND \u2014 the declaring stack does not manage it. Deploy the declaring stack (it creates the index) before writing keys, or import this secret into the stack before its next deploy.`
423
+ );
424
+ }
425
+ } catch (err) {
426
+ logInfo(
427
+ `Warning: failed to record instance "${key}" in ${indexId} \u2014 listInstances() will not see it until you run: mesh secrets reindex external/${serviceName} (${err})`
428
+ );
429
+ }
430
+ }
431
+ async function writeConfigMirror(client, secretId, schema, merged, meta) {
432
+ const configId = `${secretId}/.config`;
433
+ const configValues = extractNonSecretFields(schema.fields, merged);
434
+ const secretString = JSON.stringify(configValues);
435
+ try {
436
+ try {
437
+ await client.send(
438
+ new PutSecretValueCommand({
439
+ SecretId: configId,
440
+ SecretString: secretString
441
+ })
442
+ );
443
+ } catch (err) {
444
+ if (isResourceNotFound(err)) {
445
+ await client.send(
446
+ new CreateSecretCommand({
447
+ Name: configId,
448
+ Description: `Non-secret credential fields for ${meta.name} (Hub display)`,
449
+ SecretString: secretString,
450
+ Tags: [{ Key: "mesh:type", Value: "external-service-config" }]
451
+ })
452
+ );
453
+ } else {
454
+ throw err;
455
+ }
456
+ }
457
+ } catch (err) {
458
+ logInfo(`Warning: failed to write .config mirror to ${configId}: ${err}`);
459
+ }
460
+ }
461
+
462
+ export {
463
+ instanceIndexSecretId,
464
+ instanceKeyFromSecretName,
465
+ parseInstanceIndex,
466
+ buildInstanceIndexValue,
467
+ resolveSecretsContext,
468
+ ensureAwsCredentialsForStack,
469
+ resolveExternalServiceScope,
470
+ discoverStackExternalServices,
471
+ setCommand,
472
+ isResourceNotFound
473
+ };
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/commands/secrets/set.ts", "../../../secrets/src/index.ts", "../../src/commands/secrets/context.ts"],
4
+ "mappings": "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",
5
+ "names": ["SecretsManagerClient", "GetSecretValueCommand", "existingVal", "SecretsManagerClient", "svc", "GetSecretValueCommand", "values", "merged"]
6
+ }
@@ -13,14 +13,14 @@ import {
13
13
  resolveAppDir,
14
14
  shouldBootstrapAppsRepo,
15
15
  workspaceGlobForApp
16
- } from "./mesh.chunk-UI6EFAMD.js";
16
+ } from "./mesh.chunk-F44A3ACW.js";
17
17
  import "./mesh.chunk-F4654EPX.js";
18
- import "./mesh.chunk-2ZJR5LGN.js";
18
+ import "./mesh.chunk-7HTKSUWR.js";
19
19
  import "./mesh.chunk-2QIVBQX5.js";
20
20
  import "./mesh.chunk-MCBMHWXP.js";
21
21
  import "./mesh.chunk-WFFDF346.js";
22
22
  import "./mesh.chunk-IQOBTL42.js";
23
- import "./mesh.chunk-OSV3EZQ3.js";
23
+ import "./mesh.chunk-6SSOVZOI.js";
24
24
  export {
25
25
  NO_REGISTRY_ACCESS_MESSAGE,
26
26
  PLATFORM_MONOREPO_NAME,
@@ -2,7 +2,7 @@ import {
2
2
  decodeJwtPayload,
3
3
  getValidToken,
4
4
  readCredentials
5
- } from "./mesh.chunk-2ZJR5LGN.js";
5
+ } from "./mesh.chunk-7HTKSUWR.js";
6
6
  import "./mesh.chunk-2QIVBQX5.js";
7
7
  import "./mesh.chunk-MCBMHWXP.js";
8
8
  import {
@@ -10,7 +10,7 @@ import {
10
10
  logWarn
11
11
  } from "./mesh.chunk-WFFDF346.js";
12
12
  import "./mesh.chunk-IQOBTL42.js";
13
- import "./mesh.chunk-OSV3EZQ3.js";
13
+ import "./mesh.chunk-6SSOVZOI.js";
14
14
 
15
15
  // packages/mesh-cli/src/commands/dev-token-server.ts
16
16
  import * as http from "node:http";
@@ -0,0 +1,10 @@
1
+ import {
2
+ defaultServeDir,
3
+ generateMcpServeDir,
4
+ resolveServeDependencies
5
+ } from "./mesh.chunk-TDCH4SFQ.js";
6
+ export {
7
+ defaultServeDir,
8
+ generateMcpServeDir,
9
+ resolveServeDependencies
10
+ };
package/dist/bin/mesh.js CHANGED
@@ -1,24 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createProgram
4
- } from "./mesh.chunk-CNLSVKYY.js";
4
+ } from "./mesh.chunk-2ASXJ5DO.js";
5
+ import "./mesh.chunk-YE2WIY3Y.js";
5
6
  import {
6
7
  formatVersionLine,
7
8
  resolveCliRuntime
8
- } from "./mesh.chunk-C4ZM7DM2.js";
9
- import "./mesh.chunk-UI6EFAMD.js";
10
- import "./mesh.chunk-O6WRZU4X.js";
11
- import "./mesh.chunk-WODQO6TP.js";
9
+ } from "./mesh.chunk-PZVI7V3J.js";
10
+ import "./mesh.chunk-F44A3ACW.js";
11
+ import "./mesh.chunk-NSQJEX36.js";
12
+ import "./mesh.chunk-6AIG5OJM.js";
12
13
  import "./mesh.chunk-F4654EPX.js";
13
- import "./mesh.chunk-C2TKCYHP.js";
14
- import "./mesh.chunk-2ZJR5LGN.js";
14
+ import "./mesh.chunk-HJGMOEUG.js";
15
+ import "./mesh.chunk-7HTKSUWR.js";
15
16
  import "./mesh.chunk-2QIVBQX5.js";
16
17
  import "./mesh.chunk-MCBMHWXP.js";
17
18
  import "./mesh.chunk-WFFDF346.js";
18
19
  import {
19
20
  handleCliError
20
21
  } from "./mesh.chunk-IQOBTL42.js";
21
- import "./mesh.chunk-OSV3EZQ3.js";
22
+ import "./mesh.chunk-6SSOVZOI.js";
22
23
  import "./mesh.chunk-OW5EMVG5.js";
23
24
 
24
25
  // packages/mesh-cli/bin/mesh.ts
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/mesh.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAM,eAAe,QAAQ,KAAK,SAAS,WAAW,KAAK,QAAQ,KAAK,SAAS,IAAI;AAErF,IAAM,UAAU,cAAc;AAAA,EAC5B,SAAS,eACL,kBAAkB,kBAAkB,CAAC,IACrC,kBAAkB,EAAE,KAAK,MAAM,CAAC,EAAE;AACxC,CAAC;AAED,QAAQ,WAAW,EAAE,MAAM,cAAc;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAM,eAAe,QAAQ,KAAK,SAAS,WAAW,KAAK,QAAQ,KAAK,SAAS,IAAI;AAErF,IAAM,UAAU,cAAc;AAAA,EAC5B,SAAS,eACL,kBAAkB,kBAAkB,CAAC,IACrC,kBAAkB,EAAE,KAAK,MAAM,CAAC,EAAE;AACxC,CAAC;AAED,QAAQ,WAAW,EAAE,MAAM,cAAc;",
5
5
  "names": []
6
6
  }
@@ -40,12 +40,12 @@ import {
40
40
  tokenStillValid,
41
41
  withDiscoveredFields,
42
42
  writeContextConfig
43
- } from "./mesh.chunk-2ZJR5LGN.js";
43
+ } from "./mesh.chunk-7HTKSUWR.js";
44
44
  import "./mesh.chunk-2QIVBQX5.js";
45
45
  import "./mesh.chunk-MCBMHWXP.js";
46
46
  import "./mesh.chunk-WFFDF346.js";
47
47
  import "./mesh.chunk-IQOBTL42.js";
48
- import "./mesh.chunk-OSV3EZQ3.js";
48
+ import "./mesh.chunk-6SSOVZOI.js";
49
49
  export {
50
50
  CONFIG_DIR,
51
51
  CONFIG_FILE,
@@ -15,7 +15,7 @@ import {
15
15
  validateEnv,
16
16
  validateRegion,
17
17
  validateStateBucket
18
- } from "./mesh.chunk-O6WRZU4X.js";
18
+ } from "./mesh.chunk-NSQJEX36.js";
19
19
  import "./mesh.chunk-IQOBTL42.js";
20
20
  export {
21
21
  DOMAIN_REQUIRED_MESSAGE,
@@ -2,19 +2,20 @@ import {
2
2
  CLI_DESCRIPTION,
3
3
  CLI_NAME,
4
4
  createProgram
5
- } from "./mesh.chunk-CNLSVKYY.js";
6
- import "./mesh.chunk-C4ZM7DM2.js";
7
- import "./mesh.chunk-UI6EFAMD.js";
8
- import "./mesh.chunk-O6WRZU4X.js";
9
- import "./mesh.chunk-WODQO6TP.js";
5
+ } from "./mesh.chunk-2ASXJ5DO.js";
6
+ import "./mesh.chunk-YE2WIY3Y.js";
7
+ import "./mesh.chunk-PZVI7V3J.js";
8
+ import "./mesh.chunk-F44A3ACW.js";
9
+ import "./mesh.chunk-NSQJEX36.js";
10
+ import "./mesh.chunk-6AIG5OJM.js";
10
11
  import "./mesh.chunk-F4654EPX.js";
11
- import "./mesh.chunk-C2TKCYHP.js";
12
- import "./mesh.chunk-2ZJR5LGN.js";
12
+ import "./mesh.chunk-HJGMOEUG.js";
13
+ import "./mesh.chunk-7HTKSUWR.js";
13
14
  import "./mesh.chunk-2QIVBQX5.js";
14
15
  import "./mesh.chunk-MCBMHWXP.js";
15
16
  import "./mesh.chunk-WFFDF346.js";
16
17
  import "./mesh.chunk-IQOBTL42.js";
17
- import "./mesh.chunk-OSV3EZQ3.js";
18
+ import "./mesh.chunk-6SSOVZOI.js";
18
19
  import "./mesh.chunk-OW5EMVG5.js";
19
20
  export {
20
21
  CLI_DESCRIPTION,
@@ -17,14 +17,14 @@ import {
17
17
  runRegistryStatus,
18
18
  shouldRemintAfter,
19
19
  shouldRepairUserNpmrc
20
- } from "./mesh.chunk-WODQO6TP.js";
21
- import "./mesh.chunk-C2TKCYHP.js";
22
- import "./mesh.chunk-2ZJR5LGN.js";
20
+ } from "./mesh.chunk-6AIG5OJM.js";
21
+ import "./mesh.chunk-HJGMOEUG.js";
22
+ import "./mesh.chunk-7HTKSUWR.js";
23
23
  import "./mesh.chunk-2QIVBQX5.js";
24
24
  import "./mesh.chunk-MCBMHWXP.js";
25
25
  import "./mesh.chunk-WFFDF346.js";
26
26
  import "./mesh.chunk-IQOBTL42.js";
27
- import "./mesh.chunk-OSV3EZQ3.js";
27
+ import "./mesh.chunk-6SSOVZOI.js";
28
28
  export {
29
29
  CONTEXT_IGNORED_NOTICE,
30
30
  NOT_AUTHORIZED_RERUN,