@mesh-tech/mesh-cli 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/mesh.js +1381 -897
- package/dist/bin/mesh.js.map +4 -4
- package/dist/build-info.json +2 -2
- package/dist/src/commands/agent-api-client.d.ts +17 -0
- package/dist/src/commands/agent-api-client.d.ts.map +1 -1
- package/dist/src/commands/agent-api-client.js +22 -0
- package/dist/src/commands/agent-api-client.js.map +1 -1
- package/dist/src/commands/dev-doctor.d.ts.map +1 -1
- package/dist/src/commands/dev-doctor.js +7 -2
- package/dist/src/commands/dev-doctor.js.map +1 -1
- package/dist/src/commands/dev.d.ts +22 -0
- package/dist/src/commands/dev.d.ts.map +1 -1
- package/dist/src/commands/dev.js +124 -9
- package/dist/src/commands/dev.js.map +1 -1
- package/dist/src/commands/local/docker-runner.d.ts.map +1 -1
- package/dist/src/commands/local/docker-runner.js +2 -4
- package/dist/src/commands/local/docker-runner.js.map +1 -1
- package/dist/src/commands/local/hub-local.d.ts.map +1 -1
- package/dist/src/commands/local/hub-local.js +2 -3
- package/dist/src/commands/local/hub-local.js.map +1 -1
- package/dist/src/commands/local/seed-zitadel.d.ts.map +1 -1
- package/dist/src/commands/local/seed-zitadel.js +108 -109
- package/dist/src/commands/local/seed-zitadel.js.map +1 -1
- package/dist/src/commands/local/stack.d.ts.map +1 -1
- package/dist/src/commands/local/stack.js +4 -9
- package/dist/src/commands/local/stack.js.map +1 -1
- package/dist/src/commands/site.d.ts +3 -0
- package/dist/src/commands/site.d.ts.map +1 -0
- package/dist/src/commands/site.js +277 -0
- package/dist/src/commands/site.js.map +1 -0
- package/dist/src/commands/temporal.d.ts +25 -0
- package/dist/src/commands/temporal.d.ts.map +1 -1
- package/dist/src/commands/temporal.js +2459 -732
- package/dist/src/commands/temporal.js.map +7 -1
- package/dist/src/commands/vcs/clone.d.ts.map +1 -1
- package/dist/src/commands/vcs/clone.js +4 -4
- package/dist/src/commands/vcs/clone.js.map +1 -1
- package/dist/src/commands/vcs/common.d.ts +34 -0
- package/dist/src/commands/vcs/common.d.ts.map +1 -1
- package/dist/src/commands/vcs/common.js +52 -0
- package/dist/src/commands/vcs/common.js.map +1 -1
- package/dist/src/commands/vcs/index.d.ts.map +1 -1
- package/dist/src/commands/vcs/index.js +7 -1
- package/dist/src/commands/vcs/index.js.map +1 -1
- package/dist/src/commands/vcs/propose.d.ts +22 -0
- package/dist/src/commands/vcs/propose.d.ts.map +1 -1
- package/dist/src/commands/vcs/propose.js +25 -5
- package/dist/src/commands/vcs/propose.js.map +1 -1
- package/dist/src/commands/vcs/rm.d.ts +18 -0
- package/dist/src/commands/vcs/rm.d.ts.map +1 -0
- package/dist/src/commands/vcs/rm.js +88 -0
- package/dist/src/commands/vcs/rm.js.map +1 -0
- package/dist/src/program.d.ts.map +1 -1
- package/dist/src/program.js +2 -0
- package/dist/src/program.js.map +1 -1
- package/dist/src/utils/aws-auth.d.ts +10 -0
- package/dist/src/utils/aws-auth.d.ts.map +1 -1
- package/dist/src/utils/aws-auth.js +35 -0
- package/dist/src/utils/aws-auth.js.map +1 -1
- package/dist/src/utils/cache-home.d.ts +25 -0
- package/dist/src/utils/cache-home.d.ts.map +1 -0
- package/dist/src/utils/cache-home.js +36 -0
- package/dist/src/utils/cache-home.js.map +1 -0
- package/dist/src/utils/temporal-codec.js +207 -294
- package/dist/src/utils/temporal-codec.js.map +7 -1
- package/fragments/base/index.ts.hbs +1 -1
- package/package.json +12 -3
- package/skills/core/SKILL.md +13 -3
- package/templates/api-auth/README.md.hbs +6 -0
- package/templates/api-auth/index.ts.hbs +1 -1
- package/templates/api-auth/package.json.hbs +1 -0
- package/templates/api-role-gating/index.ts.hbs +1 -1
- package/templates/api-role-gating/package.json.hbs +1 -0
- package/templates/external-service/api/package.json.hbs +1 -0
- package/templates/external-service/index.ts.hbs +1 -1
- package/templates/external-service/package.json.hbs +1 -0
- package/templates/workflow/index.ts.hbs +1 -1
- package/templates/workflow/package.json.hbs +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/clone.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzE,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { gitWithAuth, resolveToken } from "./common.js";
|
|
2
2
|
export async function cloneCommand(repo, dest, opts) {
|
|
3
3
|
const baseUrl = (opts.url ?? process.env.VCS_URL)?.replace(/\/$/, "");
|
|
4
4
|
if (!baseUrl)
|
|
5
5
|
throw new Error("clone requires --url or VCS_URL");
|
|
6
6
|
const token = await resolveToken(opts);
|
|
7
|
-
await
|
|
7
|
+
await gitWithAuth([
|
|
8
8
|
"clone",
|
|
9
9
|
"-c",
|
|
10
10
|
`http.extraHeader=Authorization: Bearer ${token}`,
|
|
11
11
|
`${baseUrl}/git/${repo}`,
|
|
12
12
|
dest ?? repo,
|
|
13
|
-
]);
|
|
13
|
+
], token);
|
|
14
14
|
// Persist the auth header for future fetches in THIS clone only.
|
|
15
15
|
// Dev-grade: tokens land in .git/config — revisit with a credential helper
|
|
16
16
|
// once non-dev tokens are routine.
|
|
17
|
-
await
|
|
17
|
+
await gitWithAuth(["config", "http.extraHeader", `Authorization: Bearer ${token}`], token, dest ?? repo);
|
|
18
18
|
console.log(`cloned ${repo} → ${dest ?? repo} (read-only remote; use 'mesh vcs propose' to submit changes)`);
|
|
19
19
|
}
|
|
20
20
|
//# sourceMappingURL=clone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../../src/commands/vcs/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../../src/commands/vcs/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAmB,MAAM,aAAa,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAAwB,EACxB,IAAgB;IAEhB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,WAAW,CACf;QACE,OAAO;QACP,IAAI;QACJ,0CAA0C,KAAK,EAAE;QACjD,GAAG,OAAO,QAAQ,IAAI,EAAE;QACxB,IAAI,IAAI,IAAI;KACb,EACD,KAAK,CACN,CAAC;IACF,iEAAiE;IACjE,2EAA2E;IAC3E,mCAAmC;IACnC,MAAM,WAAW,CACf,CAAC,QAAQ,EAAE,kBAAkB,EAAE,yBAAyB,KAAK,EAAE,CAAC,EAChE,KAAK,EACL,IAAI,IAAI,IAAI,CACb,CAAC;IACF,OAAO,CAAC,GAAG,CACT,UAAU,IAAI,MAAM,IAAI,IAAI,IAAI,+DAA+D,CAChG,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,40 @@ export interface CommonOpts {
|
|
|
9
9
|
token?: string;
|
|
10
10
|
context?: string;
|
|
11
11
|
}
|
|
12
|
+
/** Strip a bearer token out of an error before it is surfaced.
|
|
13
|
+
*
|
|
14
|
+
* The vcs git calls authenticate by putting the token in argv
|
|
15
|
+
* (`-c http.extraHeader=Authorization: Bearer <jwt>`), and `execFile` puts the
|
|
16
|
+
* whole argv into the message it throws. So an ordinary mistake — a wrong repo
|
|
17
|
+
* name, a typo'd host — prints a live credential into the terminal, the CI log,
|
|
18
|
+
* or an agent transcript — a `mesh vcs clone` against a mistyped host would
|
|
19
|
+
* otherwise emit the full JWT.
|
|
20
|
+
*
|
|
21
|
+
* Folds `stderr` into the message on the way, because that is where git's
|
|
22
|
+
* actual reason lives ("repository not found", "Authentication failed") and it
|
|
23
|
+
* can carry the token too.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* try {
|
|
27
|
+
* await execFileAsync("git", ["-c", `http.extraHeader=Authorization: Bearer ${token}`, "clone", url]);
|
|
28
|
+
* } catch (err) {
|
|
29
|
+
* throw redactToken(err, token); // the JWT reads as `<redacted-token>`
|
|
30
|
+
* }
|
|
31
|
+
*/
|
|
32
|
+
export declare function redactToken(err: unknown, token: string): Error;
|
|
33
|
+
/**
|
|
34
|
+
* Run git with a bearer token in argv, redacting it from any failure.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* const { stdout } = await gitWithAuth(
|
|
38
|
+
* ["-c", `http.extraHeader=Authorization: Bearer ${token}`, "ls-remote", url],
|
|
39
|
+
* token,
|
|
40
|
+
* );
|
|
41
|
+
*/
|
|
42
|
+
export declare function gitWithAuth(args: string[], token: string, cwd?: string): Promise<{
|
|
43
|
+
stdout: string;
|
|
44
|
+
stderr: string;
|
|
45
|
+
}>;
|
|
12
46
|
/** https://host/git/<repo> (origin remote) → { baseUrl: https://host, repo }. */
|
|
13
47
|
export declare function parseRemote(remoteUrl: string): VcsTarget | null;
|
|
14
48
|
export declare function resolveTarget(opts: CommonOpts & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,eAAO,MAAM,aAAa,+BAAsB,CAAC;AAEjD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAG/D;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,SAAS,CAAC,CA0BpB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpE;AAED,2DAA2D;AAC3D,wBAAsB,MAAM,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,SAAQ,EACd,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,eAAO,MAAM,aAAa,+BAAsB,CAAC;AAEjD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAa9D;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAM7C;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAG/D;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,SAAS,CAAC,CA0BpB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpE;AAED,2DAA2D;AAC3D,wBAAsB,MAAM,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,SAAQ,EACd,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
export const execFileAsync = promisify(execFile);
|
|
4
|
+
/** Strip a bearer token out of an error before it is surfaced.
|
|
5
|
+
*
|
|
6
|
+
* The vcs git calls authenticate by putting the token in argv
|
|
7
|
+
* (`-c http.extraHeader=Authorization: Bearer <jwt>`), and `execFile` puts the
|
|
8
|
+
* whole argv into the message it throws. So an ordinary mistake — a wrong repo
|
|
9
|
+
* name, a typo'd host — prints a live credential into the terminal, the CI log,
|
|
10
|
+
* or an agent transcript — a `mesh vcs clone` against a mistyped host would
|
|
11
|
+
* otherwise emit the full JWT.
|
|
12
|
+
*
|
|
13
|
+
* Folds `stderr` into the message on the way, because that is where git's
|
|
14
|
+
* actual reason lives ("repository not found", "Authentication failed") and it
|
|
15
|
+
* can carry the token too.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* try {
|
|
19
|
+
* await execFileAsync("git", ["-c", `http.extraHeader=Authorization: Bearer ${token}`, "clone", url]);
|
|
20
|
+
* } catch (err) {
|
|
21
|
+
* throw redactToken(err, token); // the JWT reads as `<redacted-token>`
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
export function redactToken(err, token) {
|
|
25
|
+
const base = err instanceof Error ? err.message : String(err);
|
|
26
|
+
const stderr = typeof err?.stderr === "string"
|
|
27
|
+
? err.stderr.trim()
|
|
28
|
+
: "";
|
|
29
|
+
const combined = stderr && !base.includes(stderr) ? `${base}\n${stderr}` : base;
|
|
30
|
+
// Guard: splitting on "" inserts the marker between every character, turning
|
|
31
|
+
// a token-free failure into unreadable confetti.
|
|
32
|
+
const message = token ? combined.split(token).join("<redacted-token>") : combined;
|
|
33
|
+
const out = new Error(message);
|
|
34
|
+
const code = err?.code;
|
|
35
|
+
if (code !== undefined)
|
|
36
|
+
out.code = code;
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Run git with a bearer token in argv, redacting it from any failure.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* const { stdout } = await gitWithAuth(
|
|
44
|
+
* ["-c", `http.extraHeader=Authorization: Bearer ${token}`, "ls-remote", url],
|
|
45
|
+
* token,
|
|
46
|
+
* );
|
|
47
|
+
*/
|
|
48
|
+
export async function gitWithAuth(args, token, cwd) {
|
|
49
|
+
try {
|
|
50
|
+
return await execFileAsync("git", args, cwd ? { cwd } : {});
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
throw redactToken(err, token);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
4
56
|
/** https://host/git/<repo> (origin remote) → { baseUrl: https://host, repo }. */
|
|
5
57
|
export function parseRemote(remoteUrl) {
|
|
6
58
|
const m = remoteUrl.trim().match(/^(https?:\/\/[^/]+)\/git\/([^/]+?)(?:\.git)?$/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/commands/vcs/common.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/commands/vcs/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwF1D"}
|
|
@@ -2,6 +2,7 @@ import { cloneCommand } from "./clone.js";
|
|
|
2
2
|
import { getCommand } from "./get.js";
|
|
3
3
|
import { draftsCreateCommand, draftsDiscardCommand, draftsListCommand, draftsShowCommand, draftsSubmitCommand, } from "./drafts.js";
|
|
4
4
|
import { proposeCommand } from "./propose.js";
|
|
5
|
+
import { rmCommand } from "./rm.js";
|
|
5
6
|
import { approveCommand, commentCommand, diffCommand, proposalsCommand, rejectCommand, requestChangesCommand, showCommand, } from "./review.js";
|
|
6
7
|
function withCommon(cmd) {
|
|
7
8
|
return cmd
|
|
@@ -12,7 +13,7 @@ function withCommon(cmd) {
|
|
|
12
13
|
export function registerVcsCommands(program) {
|
|
13
14
|
const vcs = program
|
|
14
15
|
.command("vcs")
|
|
15
|
-
.description("Versioned content repos (mesh.vcs): clone, get, propose, review");
|
|
16
|
+
.description("Versioned content repos (mesh.vcs): clone, get, propose, rm, review");
|
|
16
17
|
withCommon(vcs.command("clone <repo> [dest]").description("Clone a repo (read-only remote)")).action(cloneCommand);
|
|
17
18
|
withCommon(vcs
|
|
18
19
|
.command("get <repo> <path>")
|
|
@@ -26,6 +27,11 @@ export function registerVcsCommands(program) {
|
|
|
26
27
|
.option("--proposal-id <id>", "explicit proposal id")
|
|
27
28
|
.option("--revise <id>", "add a revision to an existing proposal")
|
|
28
29
|
.option("--merge-parent <sha>", "conflict resolution: main sha incorporated")).action(proposeCommand);
|
|
30
|
+
withCommon(vcs
|
|
31
|
+
.command("rm <repo> <paths...>")
|
|
32
|
+
.description("Propose deleting files or folders (no clone needed)")
|
|
33
|
+
.option("-m, --message <message>", "proposal message")
|
|
34
|
+
.option("--dry-run", "list what would be deleted, propose nothing")).action(rmCommand);
|
|
29
35
|
withCommon(vcs.command("proposals <repo>").description("List open proposals")).action(proposalsCommand);
|
|
30
36
|
withCommon(vcs.command("show <repo> <id>").description("Show proposal state")).action(showCommand);
|
|
31
37
|
withCommon(vcs.command("diff <repo> <id>").description("Show proposal diff")).action(diffCommand);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/vcs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,SAAS,UAAU,CAAC,GAAY;IAC9B,OAAO,GAAG;SACP,MAAM,CAAC,aAAa,EAAE,6DAA6D,CAAC;SACpF,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/vcs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,28 @@ export interface FileChange {
|
|
|
13
13
|
* orig-path token as a status-prefixed record.
|
|
14
14
|
*/
|
|
15
15
|
export declare function parseStatus(out: string): FileChange[];
|
|
16
|
+
/** Build one write operation, choosing an encoding by what the bytes actually are.
|
|
17
|
+
*
|
|
18
|
+
* The test is a UTF-8 round trip, not a file-extension list: a file is text
|
|
19
|
+
* precisely when decoding and re-encoding reproduces it byte for byte. Reading
|
|
20
|
+
* everything as `"utf8"` does not fail on a PNG — it replaces every invalid byte
|
|
21
|
+
* with U+FFFD and proposes a corrupt file that looks perfectly normal in the
|
|
22
|
+
* diff.
|
|
23
|
+
*
|
|
24
|
+
* Text files send a plain UTF-8 string; binary files send base64.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* await writeOp(process.cwd(), "docs/note.md");
|
|
28
|
+
* // → { op: "write", path: "docs/note.md", content: "# Note\n" }
|
|
29
|
+
* await writeOp(process.cwd(), "img/logo.png");
|
|
30
|
+
* // → { op: "write", path: "img/logo.png", content: "iVBORw0…", encoding: "base64" }
|
|
31
|
+
*/
|
|
32
|
+
export declare function writeOp(cwd: string, path: string): Promise<{
|
|
33
|
+
op: "write";
|
|
34
|
+
path: string;
|
|
35
|
+
content: string;
|
|
36
|
+
encoding?: "base64";
|
|
37
|
+
}>;
|
|
16
38
|
export interface ProposeOpts extends CommonOpts {
|
|
17
39
|
message?: string;
|
|
18
40
|
proposalId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/propose.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAiCrD;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/propose.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAiCrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC,CAO9E;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DrE"}
|
|
@@ -42,6 +42,30 @@ export function parseStatus(out) {
|
|
|
42
42
|
}
|
|
43
43
|
return changes;
|
|
44
44
|
}
|
|
45
|
+
/** Build one write operation, choosing an encoding by what the bytes actually are.
|
|
46
|
+
*
|
|
47
|
+
* The test is a UTF-8 round trip, not a file-extension list: a file is text
|
|
48
|
+
* precisely when decoding and re-encoding reproduces it byte for byte. Reading
|
|
49
|
+
* everything as `"utf8"` does not fail on a PNG — it replaces every invalid byte
|
|
50
|
+
* with U+FFFD and proposes a corrupt file that looks perfectly normal in the
|
|
51
|
+
* diff.
|
|
52
|
+
*
|
|
53
|
+
* Text files send a plain UTF-8 string; binary files send base64.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* await writeOp(process.cwd(), "docs/note.md");
|
|
57
|
+
* // → { op: "write", path: "docs/note.md", content: "# Note\n" }
|
|
58
|
+
* await writeOp(process.cwd(), "img/logo.png");
|
|
59
|
+
* // → { op: "write", path: "img/logo.png", content: "iVBORw0…", encoding: "base64" }
|
|
60
|
+
*/
|
|
61
|
+
export async function writeOp(cwd, path) {
|
|
62
|
+
const buf = await readFile(join(cwd, path));
|
|
63
|
+
const asUtf8 = buf.toString("utf8");
|
|
64
|
+
if (Buffer.from(asUtf8, "utf8").equals(buf)) {
|
|
65
|
+
return { op: "write", path, content: asUtf8 };
|
|
66
|
+
}
|
|
67
|
+
return { op: "write", path, content: buf.toString("base64"), encoding: "base64" };
|
|
68
|
+
}
|
|
45
69
|
export async function proposeCommand(opts) {
|
|
46
70
|
const cwd = process.cwd();
|
|
47
71
|
const target = await resolveTarget(opts);
|
|
@@ -60,11 +84,7 @@ export async function proposeCommand(opts) {
|
|
|
60
84
|
}
|
|
61
85
|
const operations = await Promise.all(changes.map(async (c) => c.status.startsWith("D")
|
|
62
86
|
? { op: "delete", path: c.path }
|
|
63
|
-
:
|
|
64
|
-
op: "write",
|
|
65
|
-
path: c.path,
|
|
66
|
-
content: await readFile(join(cwd, c.path), "utf8"),
|
|
67
|
-
}));
|
|
87
|
+
: await writeOp(cwd, c.path)));
|
|
68
88
|
// New proposals diff against the clone's HEAD; revisions against the
|
|
69
89
|
// proposal's current head (the author proposed from this clone).
|
|
70
90
|
let baseCommit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose.js","sourceRoot":"","sources":["../../../../src/commands/vcs/propose.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"propose.js","sourceRoot":"","sources":["../../../../src/commands/vcs/propose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,MAAM,GAEP,MAAM,aAAa,CAAC;AAOrB;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,CAAC,EAAE,CAAC;YACJ,SAAS,CAAC,oCAAoC;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sCAAsC;QACxE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,QAAQ,GACZ,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QACzC,MAAM,MAAM,GACV,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACxD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,CAAC,IAAI,CAAC,CAAC,CAAC,kCAAkC;YAC1C,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,SAAS;QACX,CAAC;QACD,CAAC,EAAE,CAAC;QACJ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,IAAY;IAEZ,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACpF,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAiB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAEvC,wEAAwE;IACxE,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAC/C,KAAK,EACL,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,uBAAuB,CAAC,EACxD,EAAE,GAAG,EAAE,CACR,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CACtB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,CAAC,CAAC,EAAE,EAAE,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACzC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAC/B,CACF,CAAC;IAEF,qEAAqE;IACrE,iEAAiE;IACjE,IAAI,UAAkB,CAAC;IACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CACzB,MAAM,CAAC,OAAO,EACd,KAAK,EACL,aAAa,MAAM,CAAC,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE,CACpD,CAAyB,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACpF,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,IAAI,GAAG;QACX,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,UAAU;QACV,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,UAAU,UAAU,CAAC,MAAM,UAAU;QAC9D,UAAU;QACV,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;QACtB,CAAC,CAAC,aAAa,MAAM,CAAC,IAAI,cAAc,IAAI,CAAC,MAAM,YAAY;QAC/D,CAAC,CAAC,aAAa,MAAM,CAAC,IAAI,YAAY,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAGpE,CAAC;IACF,OAAO,CAAC,GAAG,CACT,YAAY,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,4BAA4B,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,UAAU,MAAM,CAAC,OAAO,EAAE,CAC1I,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CommonOpts } from "./common.js";
|
|
2
|
+
/** Resolve the caller's paths against the repo's actual file list.
|
|
3
|
+
*
|
|
4
|
+
* A path may name a file or a directory. Directory matches are taken on a path
|
|
5
|
+
* SEGMENT boundary — `products/foo` must not sweep in `products/foo-v2/`, which
|
|
6
|
+
* is what a bare `startsWith` would do and is not recoverable once merged.
|
|
7
|
+
*
|
|
8
|
+
* A path that matches nothing throws rather than being skipped: a delete that
|
|
9
|
+
* silently drops one of its arguments is worse than one that refuses, because
|
|
10
|
+
* the proposal still looks successful.
|
|
11
|
+
*/
|
|
12
|
+
export declare function expandPathsToDeletions(repoFiles: string[], requested: string[]): string[];
|
|
13
|
+
export interface RmOpts extends CommonOpts {
|
|
14
|
+
message?: string;
|
|
15
|
+
dryRun?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function rmCommand(repo: string, paths: string[], opts: RmOpts): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=rm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../../../src/commands/vcs/rm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAOjF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAwBzF;AAED,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD1F"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { mkdtemp, rm as rmrf } from "node:fs/promises";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { gitWithAuth, resolveToken, vcsApi } from "./common.js";
|
|
5
|
+
/** Strip the cosmetic bits git and shells add: `./` prefix, trailing slashes. */
|
|
6
|
+
function normalize(p) {
|
|
7
|
+
return p.trim().replace(/^\.\//, "").replace(/\/+$/, "");
|
|
8
|
+
}
|
|
9
|
+
/** Resolve the caller's paths against the repo's actual file list.
|
|
10
|
+
*
|
|
11
|
+
* A path may name a file or a directory. Directory matches are taken on a path
|
|
12
|
+
* SEGMENT boundary — `products/foo` must not sweep in `products/foo-v2/`, which
|
|
13
|
+
* is what a bare `startsWith` would do and is not recoverable once merged.
|
|
14
|
+
*
|
|
15
|
+
* A path that matches nothing throws rather than being skipped: a delete that
|
|
16
|
+
* silently drops one of its arguments is worse than one that refuses, because
|
|
17
|
+
* the proposal still looks successful.
|
|
18
|
+
*/
|
|
19
|
+
export function expandPathsToDeletions(repoFiles, requested) {
|
|
20
|
+
const out = new Set();
|
|
21
|
+
for (const raw of requested) {
|
|
22
|
+
const path = normalize(raw);
|
|
23
|
+
if (path.startsWith("/") || path.split("/").includes("..")) {
|
|
24
|
+
throw new Error(`"${raw}" is not a repo-relative path — vcs paths never start with "/" or traverse with "..".`);
|
|
25
|
+
}
|
|
26
|
+
const exact = repoFiles.filter((f) => f === path);
|
|
27
|
+
if (exact.length > 0) {
|
|
28
|
+
for (const f of exact)
|
|
29
|
+
out.add(f);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const under = repoFiles.filter((f) => f.startsWith(`${path}/`));
|
|
33
|
+
if (under.length === 0) {
|
|
34
|
+
throw new Error(`"${raw}" matched no files in the repo — nothing was proposed. ` +
|
|
35
|
+
`Check the path with: mesh vcs get <repo> ${path}`);
|
|
36
|
+
}
|
|
37
|
+
for (const f of under)
|
|
38
|
+
out.add(f);
|
|
39
|
+
}
|
|
40
|
+
return [...out].sort();
|
|
41
|
+
}
|
|
42
|
+
export async function rmCommand(repo, paths, opts) {
|
|
43
|
+
const baseUrl = (opts.url ?? process.env.VCS_URL)?.replace(/\/$/, "");
|
|
44
|
+
if (!baseUrl)
|
|
45
|
+
throw new Error("rm requires --url or VCS_URL");
|
|
46
|
+
const token = await resolveToken(opts);
|
|
47
|
+
// Blobless + no checkout: we only need the tree listing and HEAD's sha, so
|
|
48
|
+
// don't pay for file contents we are about to delete.
|
|
49
|
+
const dir = await mkdtemp(join(tmpdir(), "mesh-vcs-rm-"));
|
|
50
|
+
try {
|
|
51
|
+
const git = (args, cwd) => gitWithAuth(args, token, cwd);
|
|
52
|
+
await git([
|
|
53
|
+
"clone",
|
|
54
|
+
"--filter=blob:none",
|
|
55
|
+
"--no-checkout",
|
|
56
|
+
"-c",
|
|
57
|
+
`http.extraHeader=Authorization: Bearer ${token}`,
|
|
58
|
+
`${baseUrl}/git/${repo}`,
|
|
59
|
+
dir,
|
|
60
|
+
]);
|
|
61
|
+
const { stdout: treeOut } = await git(["ls-tree", "-r", "--name-only", "HEAD"], dir);
|
|
62
|
+
const repoFiles = treeOut.split("\n").filter(Boolean);
|
|
63
|
+
const doomed = expandPathsToDeletions(repoFiles, paths);
|
|
64
|
+
if (opts.dryRun) {
|
|
65
|
+
console.log(`would delete ${doomed.length} file(s) from ${repo}:`);
|
|
66
|
+
for (const p of doomed)
|
|
67
|
+
console.log(` ${p}`);
|
|
68
|
+
console.log("(--dry-run: nothing proposed)");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const { stdout: head } = await git(["rev-parse", "HEAD"], dir);
|
|
72
|
+
const body = {
|
|
73
|
+
baseCommit: head.trim(),
|
|
74
|
+
message: opts.message ?? `Delete ${doomed.length} file(s)`,
|
|
75
|
+
operations: doomed.map((path) => ({ op: "delete", path })),
|
|
76
|
+
};
|
|
77
|
+
const data = (await vcsApi(baseUrl, token, `/v1/repos/${repo}/proposals`, "POST", body));
|
|
78
|
+
console.log(`deleting ${doomed.length} file(s) from ${repo}:`);
|
|
79
|
+
for (const p of doomed)
|
|
80
|
+
console.log(` ${p}`);
|
|
81
|
+
console.log(`proposal ${data.proposalId} @ ${data.sha.slice(0, 8)} — a human must approve: ` +
|
|
82
|
+
`mesh vcs approve ${repo} ${data.proposalId} --url ${baseUrl}`);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
await rmrf(dir, { recursive: true, force: true });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=rm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../../src/commands/vcs/rm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,eAAO,MAAM,QAAQ,SAAS,CAAC;AAC/B,eAAO,MAAM,eAAe,2CAA2C,CAAC;AAExE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAiCzE"}
|
package/dist/src/program.js
CHANGED
|
@@ -27,6 +27,7 @@ import { registerLocalCommands } from "./commands/local/index.js";
|
|
|
27
27
|
import { registerLoginCommand } from "./commands/login.js";
|
|
28
28
|
import { registerRegistryCommands } from "./commands/registry.js";
|
|
29
29
|
import { registerSecretsCommands } from "./commands/secrets/index.js";
|
|
30
|
+
import { registerSiteCommands } from "./commands/site.js";
|
|
30
31
|
import { registerSkillsCommands } from "./commands/skills.js";
|
|
31
32
|
import { registerStackCommand } from "./commands/stack.js";
|
|
32
33
|
import { registerTemporalCommands } from "./commands/temporal.js";
|
|
@@ -64,6 +65,7 @@ export function createProgram(options = {}) {
|
|
|
64
65
|
registerConversationsCommands(program);
|
|
65
66
|
registerVpnCommands(program);
|
|
66
67
|
registerWorkflowCommands(program);
|
|
68
|
+
registerSiteCommands(program);
|
|
67
69
|
registerTemporalCommands(program);
|
|
68
70
|
registerClusterCommands(program);
|
|
69
71
|
registerVcsCommands(program);
|
package/dist/src/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,16 @@ export declare function renderCredentialProcessProfile(args: {
|
|
|
65
65
|
* newline is added to the existing content if it lacks one).
|
|
66
66
|
*/
|
|
67
67
|
export declare function upsertManagedAwsConfigSection(existing: string, context: string, profileBlock: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Remove a BARE `[profile name]` block — one outside any managed section — from
|
|
70
|
+
* AWS config content. A file written before the managed-section format carries
|
|
71
|
+
* exactly one such block, and migrating it must not leave that block behind as a
|
|
72
|
+
* duplicate profile. Pure; exported for unit testing.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* stripBareProfile("[profile acme]\nregion = us-east-2\n", "acme"); // → ""
|
|
76
|
+
*/
|
|
77
|
+
export declare function stripBareProfile(existing: string, profileName: string): string;
|
|
68
78
|
/** Assume an IAM role via current AWS session and return credentials as env vars. */
|
|
69
79
|
export declare function assumeRole(roleArn: string, sessionName?: string, durationSeconds?: number): Promise<Record<string, string> | null>;
|
|
70
80
|
/** STS credentials for a Zitadel-JWT-assumed role, including expiry. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-auth.d.ts","sourceRoot":"","sources":["../../../src/utils/aws-auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aws-auth.d.ts","sourceRoot":"","sources":["../../../src/utils/aws-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -205,6 +205,41 @@ export function upsertManagedAwsConfigSection(existing, context, profileBlock) {
|
|
|
205
205
|
const sep = existing.endsWith("\n\n") ? "" : existing.endsWith("\n") ? "\n" : "\n\n";
|
|
206
206
|
return existing + sep + section;
|
|
207
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Remove a BARE `[profile name]` block — one outside any managed section — from
|
|
210
|
+
* AWS config content. A file written before the managed-section format carries
|
|
211
|
+
* exactly one such block, and migrating it must not leave that block behind as a
|
|
212
|
+
* duplicate profile. Pure; exported for unit testing.
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* stripBareProfile("[profile acme]\nregion = us-east-2\n", "acme"); // → ""
|
|
216
|
+
*/
|
|
217
|
+
export function stripBareProfile(existing, profileName) {
|
|
218
|
+
const header = `[profile ${profileName}]`;
|
|
219
|
+
const lines = existing.split("\n");
|
|
220
|
+
const out = [];
|
|
221
|
+
let managed = false;
|
|
222
|
+
let dropping = false;
|
|
223
|
+
for (const line of lines) {
|
|
224
|
+
if (line.startsWith(MANAGED_START_PREFIX))
|
|
225
|
+
managed = true;
|
|
226
|
+
if (managed) {
|
|
227
|
+
out.push(line);
|
|
228
|
+
if (line === MANAGED_END)
|
|
229
|
+
managed = false;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
if (line.trim() === header) {
|
|
233
|
+
dropping = true;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
if (dropping && line.startsWith("["))
|
|
237
|
+
dropping = false;
|
|
238
|
+
if (!dropping)
|
|
239
|
+
out.push(line);
|
|
240
|
+
}
|
|
241
|
+
return out.join("\n");
|
|
242
|
+
}
|
|
208
243
|
function newStsClient() {
|
|
209
244
|
return new STSClient({ region: DEFAULT_REGION });
|
|
210
245
|
}
|