@mesh-tech/mesh-cli 0.12.7 → 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.
- package/README.md +227 -0
- package/assets/app-skill/SKILL.md +59 -0
- package/dist/bin/mesh.js +579 -140
- package/dist/bin/mesh.js.map +4 -4
- package/dist/build-info.json +2 -2
- package/dist/src/commands/create-app.d.ts +37 -0
- package/dist/src/commands/create-app.d.ts.map +1 -1
- package/dist/src/commands/create-app.js +141 -26
- package/dist/src/commands/create-app.js.map +1 -1
- package/dist/src/commands/secrets/index.d.ts +1 -0
- package/dist/src/commands/secrets/index.d.ts.map +1 -1
- package/dist/src/commands/secrets/index.js +12 -0
- package/dist/src/commands/secrets/index.js.map +1 -1
- package/dist/src/commands/secrets/reindex.d.ts +48 -0
- package/dist/src/commands/secrets/reindex.d.ts.map +1 -0
- package/dist/src/commands/secrets/reindex.js +157 -0
- package/dist/src/commands/secrets/reindex.js.map +1 -0
- package/dist/src/commands/secrets/set.d.ts +63 -0
- package/dist/src/commands/secrets/set.d.ts.map +1 -1
- package/dist/src/commands/secrets/set.js +78 -3
- package/dist/src/commands/secrets/set.js.map +1 -1
- package/dist/src/commands/skills.d.ts +48 -8
- package/dist/src/commands/skills.d.ts.map +1 -1
- package/dist/src/commands/skills.js +204 -12
- package/dist/src/commands/skills.js.map +1 -1
- package/dist/src/utils/scaffold-versions.d.ts +57 -0
- package/dist/src/utils/scaffold-versions.d.ts.map +1 -0
- package/dist/src/utils/scaffold-versions.js +75 -0
- package/dist/src/utils/scaffold-versions.js.map +1 -0
- package/fragments/agents/AGENTS.md.hbs +4 -3
- package/fragments/base/package.json.hbs +4 -5
- package/fragments/service/api/package.json.hbs +5 -5
- package/fragments/temporal/worker/package.json.hbs +5 -5
- package/package.json +3 -2
- package/skills/core/SKILL.md +15 -3
- package/templates/apps-repo/package.json.hbs +2 -1
- package/templates/apps-repo/pnpm-workspace.yaml +9 -1
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAA4B,EAC5B,YAAoB;IAEpB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,SAA6B,CAAC;IAClC,GAAG,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,IAAI,kBAAkB,CAAC;YACrB,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;YACxD,SAAS,EAAE,SAAS;SACrB,CAAC,CACH,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtF,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,CAAC,QAAQ,SAAS,EAAE;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAiB,EACjB,KAAe,EACf,WAAoB,EACpB,SAAkB;IAElB,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAA+B,EAC/B,IAKC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,CAAC;IAEpE,MAAM,4BAA4B,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,SAAS,EACT,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,WAAW,CACpB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,qBAAqB,WAAW,cAAc,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,cAAc,GAAG,CAAC,MAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;IACvC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACzB,QAAQ,CACN,IAAI,WAAW,+DAA+D,CAC/E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;IAC3C,MAAM,OAAO,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAEpD,4DAA4D;IAC5D,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,IAAI,MAAM,GAAa,EAAE,CAAC;IAC1B,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC;YACH,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,CAAC,qBAAqB,OAAO,0CAA0C,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;QACxC,WAAW,GAAG,KAAK,CAAC;QACpB,OAAO,CAAC,eAAe,OAAO,4BAA4B,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,OAAO,CAAC,iCAAiC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,uBAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnF,IAAI,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;QAChE,UAAU,CAAC,YAAY,OAAO,mCAAmC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,yBAAyB,OAAO,SAAS,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,MAAM,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACtE,UAAU,CAAC,kBAAkB,OAAO,cAAc,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA4B,EAC5B,YAAoB,EACpB,WAAmB,EACnB,IAAc;IAEd,MAAM,OAAO,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAC7E,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;QACxC,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,mBAAmB,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,0BAA0B,WAAW,gFAAgF;YAClI,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE;gBACJ,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE;gBACrD,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE;aAC5C;SACF,CAAC,CACH,CAAC;QACF,OAAO,CACL,WAAW,OAAO,yDAAyD;YACzE,sEAAsE;YACtE,+CAA+C,CAClD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -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;
|
|
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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"}
|
|
@@ -1,31 +1,71 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* mesh skills sync — agent-skill distribution (design §7.2, AC D1/D2).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Three layers, one command:
|
|
5
5
|
*
|
|
6
|
-
* 1. BASE skills (how to
|
|
6
|
+
* 1. BASE skills (how to drive the CLI — the CLI's own skills/) are
|
|
7
7
|
* installed into the repo's `.claude/skills/mesh-<name>/SKILL.md`.
|
|
8
8
|
* CLI-managed: files carry a managed marker and are only overwritten
|
|
9
9
|
* when they carry it (hand-edited copies are left alone with a warning).
|
|
10
10
|
*
|
|
11
|
-
* 2.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* 2. PLATFORM skills — the build-an-app recipes that ship inside the
|
|
12
|
+
* `@mesh-tech/*` packages the repo already depends on
|
|
13
|
+
* (`node_modules/@mesh-tech/<pkg>/skills/<domain>/`). These are FETCHED
|
|
14
|
+
* from the installed package rather than vendored into the CLI, so the
|
|
15
|
+
* recipe stays owned by the platform package it documents and moves with
|
|
16
|
+
* it. `@mesh-tech/app-kit#apps` — the scaffold → wire → run → debug
|
|
17
|
+
* recipe — is the one every app repo needs.
|
|
18
|
+
* Requires `pnpm install` to have run; before that the layer is a no-op
|
|
19
|
+
* with a note.
|
|
20
|
+
*
|
|
21
|
+
* 3. INTENT discovery for those same package skills, for agents that read
|
|
22
|
+
* the catalog rather than `.claude/skills/`: the hook mechanism
|
|
23
|
+
* vendored into the CLI (deterministic, offline — no interactive
|
|
24
|
+
* installer):
|
|
15
25
|
* - .intent/hooks/intent-claude-gate.mjs (SessionStart catalog +
|
|
16
26
|
* edit gate; invokes the REPO-PINNED `pnpm exec intent`)
|
|
27
|
+
* - `@tanstack/intent` in the repo's devDependencies — the fence tells
|
|
28
|
+
* agents to run `pnpm exec intent list`, so the binary has to be
|
|
29
|
+
* pinned in the repo it runs in, tenant app repos included
|
|
17
30
|
* - .claude/settings.json SessionStart hook (JSON-merged, idempotent)
|
|
18
31
|
* - AGENTS.md fence (<!-- intent-skills:start/end -->) for
|
|
19
32
|
* non-Claude agents
|
|
20
33
|
*
|
|
21
34
|
* `mesh skills sync --check` is the CI/doctor form: exits 1 listing what is
|
|
22
35
|
* missing or stale, changes nothing. `mesh create-app` runs a best-effort
|
|
23
|
-
* sync after scaffolding so a fresh Claude session in a fresh repo sees
|
|
24
|
-
* skill
|
|
36
|
+
* sync after scaffolding so a fresh Claude session in a fresh repo sees every
|
|
37
|
+
* skill layer with zero manual setup (D1).
|
|
25
38
|
*/
|
|
26
39
|
import { Command } from "commander";
|
|
40
|
+
/**
|
|
41
|
+
* The `@tanstack/intent` range pinned into a target repo, and the single
|
|
42
|
+
* source for every place that range appears: the standalone apps-repo
|
|
43
|
+
* template renders from it, and `test/skills-sync.test.ts` holds it equal to
|
|
44
|
+
* the CLI's own devDependency, so the binary agents invoke matches the
|
|
45
|
+
* catalog format the vendored gate hook expects.
|
|
46
|
+
*/
|
|
47
|
+
export declare const INTENT_RANGE = "^0.3.6";
|
|
27
48
|
/** The repo root skills sync targets: the enclosing git root, else cwd. */
|
|
28
49
|
export declare function resolveTargetRoot(startDir?: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Platform skills reachable from the target repo: every
|
|
52
|
+
* `node_modules/@mesh-tech/<pkg>/skills/<domain>/SKILL.md`. Installed under
|
|
53
|
+
* `mesh-<pkg>-<domain>` so a package's `core` skill can never collide with the
|
|
54
|
+
* CLI's own `mesh-core`. One entry per `<pkg>/<domain>` — the same package
|
|
55
|
+
* linked from several workspace packages is still one skill.
|
|
56
|
+
*/
|
|
57
|
+
export declare function listPackageSkills(root: string): Array<{
|
|
58
|
+
name: string;
|
|
59
|
+
dir: string;
|
|
60
|
+
source: string;
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Seed the app's OWN skill — the stub a developer grows into the guidance only
|
|
64
|
+
* their app can carry. Written once and never touched again: it carries no
|
|
65
|
+
* managed marker, so `sync` leaves it alone forever.
|
|
66
|
+
* Returns the repo-relative path when it wrote one, else null.
|
|
67
|
+
*/
|
|
68
|
+
export declare function seedAppSkill(root: string, appName: string, appRelPath: string): string | null;
|
|
29
69
|
/** Run a sync (or check). Returns true when everything is in place. */
|
|
30
70
|
export declare function syncSkills(root: string, opts?: {
|
|
31
71
|
check?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/commands/skills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/commands/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,QAAQ,SAAgB,GAAG,MAAM,CAUlE;AA4DD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBpG;AAUD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7F;AA+LD,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAsBhF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmB7D"}
|