@mesh-tech/mesh-cli 0.13.0 → 0.14.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.
@@ -1,4 +1,4 @@
1
1
  {
2
- "commit": "d15985415",
3
- "builtAt": "2026-08-28T13:48:03.762Z"
2
+ "commit": "c9c8801dc",
3
+ "builtAt": "2026-09-01T15:06:04.467Z"
4
4
  }
@@ -4,6 +4,7 @@
4
4
  * Commands:
5
5
  * mesh secrets exec - Run command with secrets injected as environment variables
6
6
  * mesh secrets set - Set credentials for an external service
7
+ * mesh secrets reindex - Rebuild a keyed service's instance index from Secrets Manager
7
8
  */
8
9
  import { Command } from "commander";
9
10
  export declare function registerSecretsCommands(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAK5C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuC9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAM5C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoD9D"}
@@ -4,10 +4,12 @@
4
4
  * Commands:
5
5
  * mesh secrets exec - Run command with secrets injected as environment variables
6
6
  * mesh secrets set - Set credentials for an external service
7
+ * mesh secrets reindex - Rebuild a keyed service's instance index from Secrets Manager
7
8
  */
8
9
  import { Option } from "commander";
9
10
  import { execCommand } from "./exec.js";
10
11
  import { setCommand } from "./set.js";
12
+ import { reindexCommand } from "./reindex.js";
11
13
  import { migrateConfigCommand } from "./migrate-config.js";
12
14
  export function registerSecretsCommands(program) {
13
15
  const secrets = program
@@ -34,6 +36,16 @@ export function registerSecretsCommands(program) {
34
36
  .action(async (service, opts) => {
35
37
  await setCommand(service, opts);
36
38
  });
39
+ secrets
40
+ .command("reindex [service]")
41
+ .description("Rebuild a multi-instance external service's instance index (the {prefix}/.index secret listInstances() reads) from the per-key secrets actually in Secrets Manager — the repair for an instance secret created or deleted out of band")
42
+ .option("--dry-run", "Show what would change without writing")
43
+ .option("--stack <stack>", "Pulumi stack name (override detection)")
44
+ .addOption(new Option("--stage <stack>", "Deprecated alias for --stack").hideHelp())
45
+ .option("--region <region>", "AWS region (default: us-east-2)")
46
+ .action(async (service, opts) => {
47
+ await reindexCommand(service, opts);
48
+ });
37
49
  secrets
38
50
  .command("migrate-config")
39
51
  .description("Backfill .config mirror secrets for all external services")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAEhD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mDAAmD,CAAC;SAChE,kBAAkB,CAAC,IAAI,CAAC;SACxB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,oCAAoC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mFAAmF,CAAC;SAChG,MAAM,CAAC,aAAa,EAAE,wDAAwD,CAAC;SAC/E,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACnE,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;SACjE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACnE,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAEhD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mDAAmD,CAAC;SAChE,kBAAkB,CAAC,IAAI,CAAC;SACxB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,oCAAoC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mFAAmF,CAAC;SAChG,MAAM,CAAC,aAAa,EAAE,wDAAwD,CAAC;SAC/E,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACnE,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CACV,uOAAuO,CACxO;SACA,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACnE,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;SACjE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACnE,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * mesh secrets reindex — Rebuild a keyed external service's instance index.
3
+ *
4
+ * The instance index (`{secretPrefix}/.index`) is what `listInstances()`
5
+ * reads, and it is only as correct as its writers: `mesh secrets set --key`
6
+ * and the Hub maintain it as they create and delete instance secrets, but a
7
+ * per-key secret created or deleted OUT OF BAND (the AWS console, a raw SDK
8
+ * call) leaves it stale — the instance exists but is invisible, or is listed
9
+ * but gone. This command is the repair: it scans the real per-key secrets
10
+ * under the prefix with `secretsmanager:ListSecrets` (an operator-credential
11
+ * call — pods cannot make it, which is why the index exists at all) and
12
+ * rewrites the index to match.
13
+ *
14
+ * Usage:
15
+ * mesh secrets reindex external/symitar
16
+ * mesh secrets reindex external/symitar --dry-run
17
+ *
18
+ * The command detects tenant/stage from Pulumi config in the current
19
+ * directory, like `mesh secrets set`.
20
+ */
21
+ import { SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
22
+ /**
23
+ * Scan the per-key secrets actually present under the prefix. Uses the shared
24
+ * `instanceKeyFromSecretName` filter, so "which secrets are instances" cannot
25
+ * drift from what `mesh secrets set` and the Hub consider an instance.
26
+ */
27
+ export declare function scanInstanceKeys(client: SecretsManagerClient, secretPrefix: string): Promise<string[]>;
28
+ /**
29
+ * Whether the index can be left untouched. A malformed index never counts as
30
+ * matching — even when the diff is empty (zero per-key secrets): the whole
31
+ * point of the repair is to leave a well-formed index behind.
32
+ */
33
+ export declare function indexAlreadyMatches(missing: string[], stale: string[], indexExists: boolean, malformed: boolean): boolean;
34
+ export declare function reindexCommand(servicePath: string | undefined, opts: {
35
+ stack?: string;
36
+ stage?: string;
37
+ region?: string;
38
+ dryRun?: boolean;
39
+ }): Promise<void>;
40
+ /**
41
+ * Write the canonical index value for `keys`, creating the index secret when
42
+ * it does not exist. The create path warns that the secret is not
43
+ * stack-managed: the declaring stack also declares it, and created here
44
+ * first it is not in the stack's state, so the stack's next deploy fails on
45
+ * the name collision until the secret is imported or deleted.
46
+ */
47
+ export declare function writeInstanceIndex(client: SecretsManagerClient, secretPrefix: string, serviceName: string, keys: string[]): Promise<void>;
48
+ //# sourceMappingURL=reindex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../../../src/commands/secrets/reindex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EACL,oBAAoB,EAKrB,MAAM,iCAAiC,CAAC;AAgBzC;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,oBAAoB,EAC5B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,OAAO,GACjB,OAAO,CAET;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CA+Ef;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,oBAAoB,EAC5B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * mesh secrets reindex — Rebuild a keyed external service's instance index.
3
+ *
4
+ * The instance index (`{secretPrefix}/.index`) is what `listInstances()`
5
+ * reads, and it is only as correct as its writers: `mesh secrets set --key`
6
+ * and the Hub maintain it as they create and delete instance secrets, but a
7
+ * per-key secret created or deleted OUT OF BAND (the AWS console, a raw SDK
8
+ * call) leaves it stale — the instance exists but is invisible, or is listed
9
+ * but gone. This command is the repair: it scans the real per-key secrets
10
+ * under the prefix with `secretsmanager:ListSecrets` (an operator-credential
11
+ * call — pods cannot make it, which is why the index exists at all) and
12
+ * rewrites the index to match.
13
+ *
14
+ * Usage:
15
+ * mesh secrets reindex external/symitar
16
+ * mesh secrets reindex external/symitar --dry-run
17
+ *
18
+ * The command detects tenant/stage from Pulumi config in the current
19
+ * directory, like `mesh secrets set`.
20
+ */
21
+ import { SSMClient } from "@aws-sdk/client-ssm";
22
+ import { SecretsManagerClient, ListSecretsCommand, GetSecretValueCommand, PutSecretValueCommand, CreateSecretCommand, } from "@aws-sdk/client-secrets-manager";
23
+ import { buildInstanceIndexValue, instanceIndexSecretId, instanceKeyFromSecretName, parseInstanceIndex, } from "@mesh-tech/secrets";
24
+ import { detectContext } from "../../utils/context.js";
25
+ import { logInfo, logSuccess, logError } from "../../utils/log.js";
26
+ import { resolveStackOption } from "../../utils/stack-flag.js";
27
+ import { discoverExternalServices, ensureAwsCredentialsForStack, isResourceNotFound, } from "./set.js";
28
+ /**
29
+ * Scan the per-key secrets actually present under the prefix. Uses the shared
30
+ * `instanceKeyFromSecretName` filter, so "which secrets are instances" cannot
31
+ * drift from what `mesh secrets set` and the Hub consider an instance.
32
+ */
33
+ export async function scanInstanceKeys(client, secretPrefix) {
34
+ const keys = [];
35
+ let nextToken;
36
+ do {
37
+ const response = await client.send(new ListSecretsCommand({
38
+ Filters: [{ Key: "name", Values: [`${secretPrefix}/`] }],
39
+ NextToken: nextToken,
40
+ }));
41
+ for (const secret of response.SecretList ?? []) {
42
+ const key = secret.Name ? instanceKeyFromSecretName(secretPrefix, secret.Name) : null;
43
+ if (key)
44
+ keys.push(key);
45
+ }
46
+ nextToken = response.NextToken;
47
+ } while (nextToken);
48
+ return keys;
49
+ }
50
+ /**
51
+ * Whether the index can be left untouched. A malformed index never counts as
52
+ * matching — even when the diff is empty (zero per-key secrets): the whole
53
+ * point of the repair is to leave a well-formed index behind.
54
+ */
55
+ export function indexAlreadyMatches(missing, stale, indexExists, malformed) {
56
+ return missing.length === 0 && stale.length === 0 && indexExists && !malformed;
57
+ }
58
+ export async function reindexCommand(servicePath, opts) {
59
+ const stackOpt = resolveStackOption(opts);
60
+ const context = detectContext(stackOpt);
61
+ const region = opts.region ?? process.env.AWS_REGION ?? "us-east-2";
62
+ await ensureAwsCredentialsForStack(stackOpt ?? context.stage);
63
+ const ssmClient = new SSMClient({ region });
64
+ const smClient = new SecretsManagerClient({ region });
65
+ const services = await discoverExternalServices(ssmClient, context.tenant, context.platformEnv);
66
+ const serviceName = servicePath?.replace(/^external\//, "");
67
+ if (!serviceName || !services.has(serviceName)) {
68
+ if (serviceName) {
69
+ logError(`External service "${serviceName}" not found.`);
70
+ }
71
+ const keyed = [...services.entries()].filter(([, s]) => s.schema?.keyedBy);
72
+ console.error("\nMulti-instance external services:");
73
+ for (const [name, svc] of keyed) {
74
+ console.error(` ${name} (keyed by ${svc.schema.keyedBy})`);
75
+ }
76
+ if (keyed.length === 0)
77
+ console.error(" (none)");
78
+ console.error(`\nUsage: mesh secrets reindex external/<name>`);
79
+ process.exit(serviceName ? 1 : 0);
80
+ }
81
+ const svc = services.get(serviceName);
82
+ if (!svc.schema?.keyedBy) {
83
+ logError(`"${serviceName}" is single-instance (no keyedBy) — it has no instance index.`);
84
+ process.exit(1);
85
+ }
86
+ const secretPrefix = svc.meta.secretPrefix;
87
+ const indexId = instanceIndexSecretId(secretPrefix);
88
+ // What the account actually holds vs what the index claims.
89
+ const actual = [...new Set(await scanInstanceKeys(smClient, secretPrefix))].sort();
90
+ let listed = [];
91
+ let indexExists = true;
92
+ let malformed = false;
93
+ try {
94
+ const res = await smClient.send(new GetSecretValueCommand({ SecretId: indexId }));
95
+ try {
96
+ listed = parseInstanceIndex(res.SecretString ?? "");
97
+ }
98
+ catch {
99
+ malformed = true;
100
+ logInfo(`Existing index at ${indexId} is malformed — rebuilding from scratch.`);
101
+ }
102
+ }
103
+ catch (err) {
104
+ if (!isResourceNotFound(err))
105
+ throw err;
106
+ indexExists = false;
107
+ logInfo(`No index at ${indexId} yet — it will be created.`);
108
+ }
109
+ const missing = actual.filter((k) => !listed.includes(k));
110
+ const stale = listed.filter((k) => !actual.includes(k));
111
+ logInfo(`Instances in Secrets Manager: ${actual.length ? actual.join(", ") : "(none)"}`);
112
+ if (missing.length > 0)
113
+ logInfo(`Missing from index: ${missing.join(", ")}`);
114
+ if (stale.length > 0)
115
+ logInfo(`Stale in index (secret gone): ${stale.join(", ")}`);
116
+ if (indexAlreadyMatches(missing, stale, indexExists, malformed)) {
117
+ logSuccess(`Index at ${indexId} already matches — nothing to do.`);
118
+ return;
119
+ }
120
+ if (opts.dryRun) {
121
+ logInfo(`Dry run — would write ${indexId} with ${actual.length} instance(s).`);
122
+ return;
123
+ }
124
+ await writeInstanceIndex(smClient, secretPrefix, serviceName, actual);
125
+ logSuccess(`Index rebuilt: ${indexId} now lists ${actual.length} instance(s).`);
126
+ }
127
+ /**
128
+ * Write the canonical index value for `keys`, creating the index secret when
129
+ * it does not exist. The create path warns that the secret is not
130
+ * stack-managed: the declaring stack also declares it, and created here
131
+ * first it is not in the stack's state, so the stack's next deploy fails on
132
+ * the name collision until the secret is imported or deleted.
133
+ */
134
+ export async function writeInstanceIndex(client, secretPrefix, serviceName, keys) {
135
+ const indexId = instanceIndexSecretId(secretPrefix);
136
+ const secretString = buildInstanceIndexValue(keys);
137
+ try {
138
+ await client.send(new PutSecretValueCommand({ SecretId: indexId, SecretString: secretString }));
139
+ }
140
+ catch (err) {
141
+ if (!isResourceNotFound(err))
142
+ throw err;
143
+ await client.send(new CreateSecretCommand({
144
+ Name: indexId,
145
+ Description: `Instance-key index for ${serviceName} (read by listInstances(); maintained by mesh secrets set/reindex and the Hub)`,
146
+ SecretString: secretString,
147
+ Tags: [
148
+ { Key: "mesh:type", Value: "external-service-index" },
149
+ { Key: "mesh:service", Value: serviceName },
150
+ ],
151
+ }));
152
+ logInfo(`Created ${indexId} OUT OF BAND — the declaring stack does not manage it. ` +
153
+ `Deploy the declaring stack BEFORE reindex next time, or import this ` +
154
+ `secret into the stack before its next deploy.`);
155
+ }
156
+ }
157
+ //# sourceMappingURL=reindex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../../src/commands/secrets/reindex.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,50 @@
15
15
  *
16
16
  * The command detects tenant/stage from Pulumi config in the current directory.
17
17
  */
18
+ import { SSMClient } from "@aws-sdk/client-ssm";
19
+ import { SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
20
+ /**
21
+ * Ensure AWS credentials are available for the SSM/Secrets Manager calls. If the
22
+ * environment has none, assume the stack's `mesh:deployerRole` — which triggers
23
+ * `mesh login` automatically when there's no active session. No-op when
24
+ * credentials are already present or the stack/role can't be resolved.
25
+ *
26
+ * The stack is the locally-detected stage (from the `Pulumi.<stage>.yaml`
27
+ * filename) — NOT `pulumi stack --show-name`, which would itself need creds to
28
+ * read the backend (the chicken-and-egg this is meant to avoid).
29
+ */
30
+ export declare function ensureAwsCredentialsForStack(stack: string | undefined): Promise<void>;
31
+ /** Leaf field in the credential schema */
32
+ interface SchemaField {
33
+ type: "field";
34
+ name: string;
35
+ description: string;
36
+ secret: boolean;
37
+ optional: boolean;
38
+ }
39
+ /** Group of fields (may nest further) */
40
+ interface SchemaGroup {
41
+ type: "group";
42
+ name: string;
43
+ description: string;
44
+ fields: Record<string, SchemaField | SchemaGroup>;
45
+ }
46
+ /** A schema entry is either a leaf field or a nested group */
47
+ type SchemaEntry = SchemaField | SchemaGroup;
48
+ export interface CredentialSchema {
49
+ fields: Record<string, SchemaEntry>;
50
+ keyedBy: string | null;
51
+ }
52
+ export interface ExternalServiceMeta {
53
+ name: string;
54
+ type: string;
55
+ description: string;
56
+ secretPrefix: string;
57
+ }
58
+ export declare function discoverExternalServices(ssmClient: SSMClient, tenant: string, platformEnv: string): Promise<Map<string, {
59
+ meta: ExternalServiceMeta;
60
+ schema?: CredentialSchema;
61
+ }>>;
18
62
  export declare function setCommand(servicePath: string | undefined, opts: {
19
63
  key?: string;
20
64
  all?: boolean;
@@ -23,4 +67,23 @@ export declare function setCommand(servicePath: string | undefined, opts: {
23
67
  stage?: string;
24
68
  region?: string;
25
69
  }): Promise<void>;
70
+ export declare function isResourceNotFound(err: unknown): boolean;
71
+ /**
72
+ * Add an instance key to the service's instance index at
73
+ * `{secretPrefix}/.index` — the list `listInstances()` reads. Read-modify-
74
+ * write: a MISSING index is created from just this key (the deploy normally
75
+ * seeds an empty one), an already-listed key is a no-op. A MALFORMED index
76
+ * is deliberately left alone (warn only): rebuilding it from just this key
77
+ * would silently drop the rest of the fleet from the list, so the full
78
+ * repair belongs to `mesh secrets reindex`. The read-modify-write itself is
79
+ * unguarded — Secrets Manager has no conditional put — so two concurrent
80
+ * writers to the same service can drop a key; same repair.
81
+ *
82
+ * Non-fatal by design, like the `.config` mirror: the credential itself is
83
+ * already written, so failing the whole command here would report a write
84
+ * that succeeded as failed. The cost of skipping is an instance invisible to
85
+ * `listInstances()` until repaired — the warning names the repair.
86
+ */
87
+ export declare function addKeyToInstanceIndex(client: SecretsManagerClient, secretPrefix: string, key: string, serviceName: string): Promise<void>;
88
+ export {};
26
89
  //# sourceMappingURL=set.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/commands/secrets/set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA4RH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE;IACJ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA6Hf"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/commands/secrets/set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,SAAS,EAEV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EAIrB,MAAM,iCAAiC,CAAC;AAezC;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3F;AAMD,0CAA0C;AAC1C,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,yCAAyC;AACzC,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;CACnD;AAED,8DAA8D;AAC9D,KAAK,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AA2CD,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC,CAwDhF;AAuGD,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE;IACJ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA6If;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAgBxD;AAsFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,oBAAoB,EAC5B,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
@@ -19,6 +19,7 @@ import { SSMClient, GetParametersByPathCommand, } from "@aws-sdk/client-ssm";
19
19
  import { SecretsManagerClient, GetSecretValueCommand, PutSecretValueCommand, CreateSecretCommand, } from "@aws-sdk/client-secrets-manager";
20
20
  import input from "@inquirer/input";
21
21
  import password from "@inquirer/password";
22
+ import { buildInstanceIndexValue, instanceIndexSecretId, isInstanceKey, parseInstanceIndex, } from "@mesh-tech/secrets";
22
23
  import { detectContext } from "../../utils/context.js";
23
24
  import { logInfo, logSuccess, logError } from "../../utils/log.js";
24
25
  import { resolveStackOption } from "../../utils/stack-flag.js";
@@ -34,7 +35,7 @@ import { resolveAwsCredentials } from "../../utils/aws-auth.js";
34
35
  * filename) — NOT `pulumi stack --show-name`, which would itself need creds to
35
36
  * read the backend (the chicken-and-egg this is meant to avoid).
36
37
  */
37
- async function ensureAwsCredentialsForStack(stack) {
38
+ export async function ensureAwsCredentialsForStack(stack) {
38
39
  if (process.env.AWS_ACCESS_KEY_ID || process.env.AWS_SESSION_TOKEN)
39
40
  return;
40
41
  if (!stack)
@@ -83,7 +84,7 @@ function normalizeFields(raw) {
83
84
  // =============================================================================
84
85
  // SSM discovery
85
86
  // =============================================================================
86
- async function discoverExternalServices(ssmClient, tenant, platformEnv) {
87
+ export async function discoverExternalServices(ssmClient, tenant, platformEnv) {
87
88
  const services = new Map();
88
89
  const basePath = `/mesh-platform/${tenant}/${platformEnv}`;
89
90
  let nextToken;
@@ -255,6 +256,13 @@ export async function setCommand(servicePath, opts) {
255
256
  `Specify an instance:\n mesh secrets set external/${serviceName} --key=<${schema.keyedBy}>`);
256
257
  process.exit(1);
257
258
  }
259
+ // A reserved dot-name (`.index`, `.config`) or a path-bearing key would
260
+ // write credential JSON over the service's bookkeeping secrets.
261
+ if (opts.key && !isInstanceKey(opts.key)) {
262
+ logError(`Invalid instance key "${opts.key}": keys must not contain "/", start with ".", ` +
263
+ `or end with ".config" — those names are reserved for the index and config mirrors.`);
264
+ process.exit(1);
265
+ }
258
266
  // Read existing values (if any)
259
267
  let existing = {};
260
268
  try {
@@ -282,6 +290,9 @@ export async function setCommand(servicePath, opts) {
282
290
  const merged = deepMerge(existing, values);
283
291
  await writeSecret(smClient, secretId, merged, svc.meta);
284
292
  await writeConfigMirror(smClient, secretId, schema, merged, svc.meta);
293
+ if (opts.key) {
294
+ await addKeyToInstanceIndex(smClient, secretPrefix, opts.key, serviceName);
295
+ }
285
296
  logSuccess(`Credentials written to ${secretId}`);
286
297
  return;
287
298
  }
@@ -299,6 +310,9 @@ export async function setCommand(servicePath, opts) {
299
310
  const merged = deepMerge(existing, values);
300
311
  await writeSecret(smClient, secretId, merged, svc.meta);
301
312
  await writeConfigMirror(smClient, secretId, schema, merged, svc.meta);
313
+ if (opts.key) {
314
+ await addKeyToInstanceIndex(smClient, secretPrefix, opts.key, serviceName);
315
+ }
302
316
  logSuccess(`Credentials written to ${secretId}`);
303
317
  // Show summary
304
318
  console.error("\nStored fields:");
@@ -308,7 +322,7 @@ export async function setCommand(servicePath, opts) {
308
322
  // =============================================================================
309
323
  // Helpers
310
324
  // =============================================================================
311
- function isResourceNotFound(err) {
325
+ export function isResourceNotFound(err) {
312
326
  const e = err;
313
327
  return (e?.name === "ResourceNotFoundException" ||
314
328
  e?.__type === "ResourceNotFoundException" ||
@@ -380,6 +394,67 @@ function extractNonSecretFields(fields, values) {
380
394
  }
381
395
  return result;
382
396
  }
397
+ /**
398
+ * Add an instance key to the service's instance index at
399
+ * `{secretPrefix}/.index` — the list `listInstances()` reads. Read-modify-
400
+ * write: a MISSING index is created from just this key (the deploy normally
401
+ * seeds an empty one), an already-listed key is a no-op. A MALFORMED index
402
+ * is deliberately left alone (warn only): rebuilding it from just this key
403
+ * would silently drop the rest of the fleet from the list, so the full
404
+ * repair belongs to `mesh secrets reindex`. The read-modify-write itself is
405
+ * unguarded — Secrets Manager has no conditional put — so two concurrent
406
+ * writers to the same service can drop a key; same repair.
407
+ *
408
+ * Non-fatal by design, like the `.config` mirror: the credential itself is
409
+ * already written, so failing the whole command here would report a write
410
+ * that succeeded as failed. The cost of skipping is an instance invisible to
411
+ * `listInstances()` until repaired — the warning names the repair.
412
+ */
413
+ export async function addKeyToInstanceIndex(client, secretPrefix, key, serviceName) {
414
+ const indexId = instanceIndexSecretId(secretPrefix);
415
+ try {
416
+ let keys = [];
417
+ try {
418
+ const res = await client.send(new GetSecretValueCommand({ SecretId: indexId }));
419
+ keys = parseInstanceIndex(res.SecretString ?? "");
420
+ }
421
+ catch (err) {
422
+ if (!isResourceNotFound(err))
423
+ throw err;
424
+ // Pre-index deployment: the write below creates the index.
425
+ }
426
+ if (keys.includes(key))
427
+ return;
428
+ const secretString = buildInstanceIndexValue([...keys, key]);
429
+ try {
430
+ await client.send(new PutSecretValueCommand({ SecretId: indexId, SecretString: secretString }));
431
+ }
432
+ catch (err) {
433
+ if (!isResourceNotFound(err))
434
+ throw err;
435
+ await client.send(new CreateSecretCommand({
436
+ Name: indexId,
437
+ Description: `Instance-key index for ${serviceName} (read by listInstances(); maintained by mesh secrets set/reindex and the Hub)`,
438
+ SecretString: secretString,
439
+ Tags: [
440
+ { Key: "mesh:type", Value: "external-service-index" },
441
+ { Key: "mesh:service", Value: serviceName },
442
+ ],
443
+ }));
444
+ // The declaring stack also declares this secret; created here first,
445
+ // it is not in the stack's state, and the stack's next deploy fails on
446
+ // the name collision until the secret is imported or deleted.
447
+ logInfo(`Created ${indexId} OUT OF BAND — the declaring stack does not manage it. ` +
448
+ `Deploy the declaring stack (it creates the index) before writing keys, or ` +
449
+ `import this secret into the stack before its next deploy.`);
450
+ }
451
+ }
452
+ catch (err) {
453
+ logInfo(`Warning: failed to record instance "${key}" in ${indexId} — ` +
454
+ `listInstances() will not see it until you run: ` +
455
+ `mesh secrets reindex external/${serviceName} (${err})`);
456
+ }
457
+ }
383
458
  async function writeConfigMirror(client, secretId, schema, merged, meta) {
384
459
  const configId = `${secretId}/.config`;
385
460
  const configValues = extractNonSecretFields(schema.fields, merged);
@@ -1 +1 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/commands/secrets/set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/commands/secrets/set.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mesh-tech/mesh-cli",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "CLI for Mesh platform development utilities",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -33,7 +33,7 @@
33
33
  "./package.json": "./package.json"
34
34
  },
35
35
  "devDependencies": {
36
- "@mesh-tech/tsconfig": "1.47.1",
36
+ "@mesh-tech/tsconfig": "1.50.1",
37
37
  "@mesh-tech/workflow-viz": "0.2.1",
38
38
  "@tanstack/intent": "^0.3.6",
39
39
  "@types/node": "^20.0.0",
@@ -48,6 +48,7 @@
48
48
  "@inquirer/input": "^4.2.1",
49
49
  "@inquirer/password": "^4.0.17",
50
50
  "@inquirer/select": "^4.3.1",
51
+ "@mesh-tech/secrets": "0.1.0",
51
52
  "chalk": "^5.3.0",
52
53
  "commander": "^12.1.0",
53
54
  "handlebars": "^4.7.8",
@@ -102,7 +102,7 @@ Top-level commands (each `register*` is wired in `src/program.ts`, which `bin/me
102
102
  | `mesh stack` | `init`, `rm <name>` | `init` creates a personal dev stack `dev-{github-user}`, copying base-stack config, setting `mesh:deploy: false`, inheriting KMS secrets provider; `--worktree` appends the git-worktree token (`dev-{user}-{token}`) so concurrent worktrees deploy to **distinct** stacks (SSM paths, Temporal namespace, Nexus endpoint all derive from the stack name → one discriminator isolates all three; no-op on the primary checkout). `rm <name>` removes a personal stack (backend state + local config), credentialed. Both assume the deployer role — no raw `pulumi` / manual creds needed. | `init`: `--from <stack>`, `--name <stack>`, `--worktree`; `rm`: `--yes` |
103
103
  | `mesh tenant` | `add <name>`, `list` | Register/inspect app tenants on a platform stack. Run from the **platform layer** of a tenant platform repo (e.g. `mesh-sandbox/platform`). `add` inserts the tenant under `mesh:tenants` in `Pulumi.<stack>.yaml` via a comment-preserving YAML round-trip (untouched lines don't reformat), refuses a tenant that is already declared (an existing entry may carry fields a re-add would drop), derives the `{name}-{env}` subdomain from the stack name (echoed in the success line), and guards against running on the core layer or an app dir; it then prints the deploy + verify sequence — `mesh deploy up` is what makes the registration live. `list` prints what the stack config declares, so "is it registered?" is answerable without opening YAML (warns when the project doesn't look like a platform layer, so an empty result isn't mistaken for "no tenants"). | `add`: `--display-name <name>`, `--subdomain <sub>`, `--zitadel-org-id <id>`, `--stack <stack>`, `--json`; `list`: `--stack <stack>`, `--json` |
104
104
  | `mesh tunnel [group]` | `external <name>` | SSM port-forward to platform services. Groups: `dev` (temporal+db), `temporal`. **`external <name>`** tunnels to a *registered* `ExternalService`: host/port are read from its credential secret (`mesh/{app-tenant}/{app-stage}/external/{name}`) — the same values deployed apps resolve at runtime — so anything the bastion can reach is tunnelable with no per-service CLI entry and no bastion services-map change. `-t/-e` are **optional everywhere** — they fall back to the same Pulumi/SST context detection `mesh dev` uses, and `AWS_REGION`/`AWS_PROFILE` default from the nearest Pulumi config + the `{tenant}-{env}` profile convention (region falls back to the effective profile's own `region` — the `[default]` profile when none was resolved — before the platform default us-east-2). | root: `-t/--tenant`, `-e/--env`, `-l/--list`, `-s/--services <csv\|group>`, `--db-port`, `--temporal-ui-port`, `--temporal-frontend-port`; `external`: `-p/--port` (default: the remote port), `-k/--key <key>` (multi-instance `credentials.keyedBy` externals), `--app-tenant`/`--app-stage` (credential axis; default to `-t`/`-e`) |
105
- | `mesh secrets` | `exec <command...>`, `set [service]`, `migrate-config` | Manage external-service creds in Secrets Manager. `exec` injects secrets as env; `set` reads field schema from SSM and prompts (or `--json`). | `set`: `--key <id>` (multi-instance), `--all`, `--json <str>`, `--stage`, `--region`; `migrate-config`: `--force`, `--dry-run`, `--stage`, `--region` |
105
+ | `mesh secrets` | `exec <command...>`, `set [service]`, `reindex [service]`, `migrate-config` | Manage external-service creds in Secrets Manager. `exec` injects secrets as env; `set` reads field schema from SSM and prompts (or `--json`) — with `--key` it also records the instance in the service's instance index (`{prefix}/.index`, what `listInstances()` reads). `reindex` rebuilds that index from the per-key secrets actually in Secrets Manager (operator-credential `ListSecrets`) — the repair for an index that drifted (out-of-band secret create/delete, concurrent writers, malformed value) and the populate step when rolling the index out to an estate: **deploy the declaring stack first** (creates the managed, empty index), then `reindex`. | `set`: `--key <id>` (multi-instance), `--all`, `--json <str>`, `--stack`, `--region`; `reindex`: `--dry-run`, `--stack`, `--region`; `migrate-config`: `--force`, `--dry-run`, `--stack`, `--region` |
106
106
  | `mesh artifacts` | `get <ref>` | Download workflow artifact files from an AI-agent conversation. Ref `<conversationId>:<artifactId>` (artifactId defaults to `workflow-artifact`). | `-o/--output <dir>`, `--target <name>`, `--api-url <url>`, `--context <ctx>` (default `mesh.dev`) |
107
107
  | `mesh conversations` (alias `conv`) | `list`, `show <id>`, `artifacts <id>` | Read a deployed Mesh agent's conversations: list the caller's conversations, render a transcript, or list a conversation's artifacts. Resolves against the same `agent-targets` registry the MCP `agent_*` tools use. | all three: `--target <name>`, `--api-url <url>` (overrides `--target`), `--context <ctx>` (used with `--api-url`, default `mesh.dev`), `--json` (default when stdout isn't a TTY) |
108
108
  | `mesh vpn` | `connect <context>`, `disconnect`, `status`, `tunnel <up\|down\|status>`, `api-key`, `pre-auth-key`, `users` | Headscale VPN mgmt via Tailscale + kubectl. **`connect` now defaults to the userspace `tailscaled`** (brew formula, NOT the GUI Tailscale.app) — the same daemon `mesh dev --transport tailscale` / `mesh vpn tunnel` use, so it **runs headless / under the sandbox** and exposes a local SOCKS5 proxy (route a tool via `ALL_PROXY=socks5://127.0.0.1:<port>`). It relays a one-time browser-register URL for Zitadel auth. `--system` opts into the whole-machine GUI Tailscale.app (system TUN) — needs the app installed and **cannot run headless/sandboxed** (Sparkle.framework abort). For auto-forwarded VPC services (Temporal/RDS) prefer **`mesh vpn tunnel up`** or `mesh dev`. `tunnel status` reports runner **ownership** (`Runner: owned (verified)` vs `NOT OWNED (<reason>)` — a port answering a dial is not proof it's mesh's, MESH-2407); `--json` adds `owned` (bool) + `ownership` (reason string). Admin subcommands `exec` into the `headscale-0` pod. | root: `-t/--tenant` (default `mesh`), `-e/--env` (default `dev`), `-n/--namespace`; `connect`/`disconnect`: `--system`; `tunnel up`: `--context <ctx>`; `tunnel down`: `--stop` (stop daemon, keep login), `--logout`; `tunnel status`: `--json`; `pre-auth-key`: `-u/--user` (**required**), `--expiration <24h>`, `--reusable`, `--ephemeral` |
@@ -283,6 +283,8 @@ mesh db exec --secret <arn> -- node seed.js # direct mode, skips SSM discovery
283
283
  mesh secrets set external/symitar # interactive (schema from SSM)
284
284
  mesh secrets set external/symitar --json '{"baseUrl":"…"}'
285
285
  mesh secrets set external/symitar --key 12345 --json '{…}' # multi-instance (key = FI id)
286
+ mesh secrets reindex external/symitar --dry-run # show instance-index drift, write nothing
287
+ mesh secrets reindex external/symitar # rebuild {prefix}/.index from real secrets
286
288
  mesh secrets exec -- node ./script.js # secrets injected as env
287
289
  ```
288
290