@m-kopa/launchpad-cli 0.24.0 → 0.26.1
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/CHANGELOG.md +92 -0
- package/dist/bundle/upload.d.ts +34 -2
- package/dist/bundle/upload.d.ts.map +1 -1
- package/dist/cli.js +585 -266
- package/dist/commands/deploy-flags.d.ts +6 -0
- package/dist/commands/deploy-flags.d.ts.map +1 -1
- package/dist/commands/deploy.d.ts +10 -13
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/destroy.d.ts +1 -1
- package/dist/commands/destroy.d.ts.map +1 -1
- package/dist/commands/envvars.d.ts +2 -2
- package/dist/commands/envvars.d.ts.map +1 -1
- package/dist/commands/infer-slug.d.ts +37 -0
- package/dist/commands/infer-slug.d.ts.map +1 -0
- package/dist/commands/logs.d.ts +2 -2
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/merge.d.ts +2 -2
- package/dist/commands/merge.d.ts.map +1 -1
- package/dist/commands/pull.d.ts +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/recover.d.ts +12 -0
- package/dist/commands/recover.d.ts.map +1 -0
- package/dist/commands/review.d.ts +2 -2
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/status.d.ts +18 -4
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/deploy/apply.d.ts +5 -2
- package/dist/deploy/apply.d.ts.map +1 -1
- package/dist/deploy/deployment-status.d.ts +18 -0
- package/dist/deploy/deployment-status.d.ts.map +1 -1
- package/dist/deploy/rollback.d.ts.map +1 -1
- package/dist/dispatcher.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/skills/launchpad-content-pr/SKILL.md +1 -1
- package/skills/launchpad-deploy/SKILL.md +1 -1
- package/skills/launchpad-deploy-status/SKILL.md +6 -4
- package/skills/launchpad-destroy/SKILL.md +1 -1
- package/skills/launchpad-onboard/SKILL.md +1 -1
- package/skills/launchpad-status/SKILL.md +13 -6
|
@@ -54,6 +54,12 @@ export type DeployMode = {
|
|
|
54
54
|
* so we use a distinct flag here.
|
|
55
55
|
*/
|
|
56
56
|
readonly resumePrNumber: number | null;
|
|
57
|
+
/**
|
|
58
|
+
* `--at <sha>` (sp-devlp1 AC3) — pin the manifest to a specific
|
|
59
|
+
* MANAGED-repo sha. Default (null) lets the bot resolve managed
|
|
60
|
+
* main HEAD; local git state is irrelevant either way.
|
|
61
|
+
*/
|
|
62
|
+
readonly atSha: string | null;
|
|
57
63
|
/**
|
|
58
64
|
* `--timeout-minutes <n>` — override the 90-minute default
|
|
59
65
|
* polling timeout (AC-U2). Apply-only.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-flags.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-flags.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACrD;;;;;;;GAOG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE;AACpF;;;;;;;;;;GAUG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC,CAAC;AAEN,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAQD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"deploy-flags.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-flags.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACrD;;;;;;;GAOG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE;AACpF;;;;;;;;;;GAUG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC,CAAC;AAEN,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAQD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,GAAG,MAAM,CAqU9E"}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
import { MAX_COMPRESSED_TARBALL_BYTES } from "../deploy/tar-pack.js";
|
|
2
|
+
import { inferSlugFromCwd, resolveManifestSlug } from "./infer-slug.js";
|
|
2
3
|
import type { Command } from "../dispatcher.js";
|
|
4
|
+
export { inferSlugFromCwd, resolveManifestSlug };
|
|
3
5
|
export declare const deployCommand: Command;
|
|
4
6
|
interface DeployArgs {
|
|
5
7
|
/** Null = infer from cwd. */
|
|
6
8
|
readonly slug: string | null;
|
|
7
9
|
readonly message: string | null;
|
|
8
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* The deploy usage banner. Kept in ONE place (sp-devlp1 T7 rider) so
|
|
13
|
+
* it can't drift from the parser again: the previous copy still
|
|
14
|
+
* advertised `--apply --platform-repo <path>` long after the flag was
|
|
15
|
+
* removed (apply runs server-side via portal-bot; runDeployApply
|
|
16
|
+
* refuses `--platform-repo` with exit 64).
|
|
17
|
+
*/
|
|
18
|
+
export declare function deployUsage(): string;
|
|
9
19
|
/**
|
|
10
20
|
* Parse the deploy verb's flag set. Returns null on a malformed
|
|
11
21
|
* argv (so the caller can render the usage banner).
|
|
12
22
|
*/
|
|
13
23
|
export declare function parseArgs(args: readonly string[]): DeployArgs | null;
|
|
14
|
-
/**
|
|
15
|
-
* Pull the `<slug>` out of a directory named `launchpad-app-<slug>`.
|
|
16
|
-
* Returns null for any other cwd shape.
|
|
17
|
-
*/
|
|
18
|
-
export declare function inferSlugFromCwd(cwd: string): string | null;
|
|
19
24
|
/** Re-export for tests. */
|
|
20
25
|
export { MAX_COMPRESSED_TARBALL_BYTES };
|
|
21
|
-
/**
|
|
22
|
-
* Resolve the app slug from a parsed `launchpad.yaml`. Manifest v1
|
|
23
|
-
* carries it as `metadata.name`; manifest v2 (spec/status, the per-app
|
|
24
|
-
* shape) as `metadata.slug`. Accept either so `launchpad deploy` works
|
|
25
|
-
* against both shapes. Returns `null` when neither is a string (caller
|
|
26
|
-
* surfaces the error). Pure — the deploy command's testable seam (AC1).
|
|
27
|
-
*/
|
|
28
|
-
export declare function resolveManifestSlug(parsed: unknown): string | null;
|
|
29
26
|
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAgDA,OAAO,EAGL,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAS,OAAO,EAAY,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAgDA,OAAO,EAGL,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAa,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,KAAK,EAAS,OAAO,EAAY,MAAM,kBAAkB,CAAC;AAKjE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;AAEjD,eAAO,MAAM,aAAa,EAAE,OAI3B,CAAC;AAEF,UAAU,UAAU;IAClB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAqPD;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAoBpC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI,CAwBpE;AA6GD,2BAA2B;AAC3B,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
|
|
@@ -9,6 +9,6 @@ interface DestroyArgs {
|
|
|
9
9
|
readonly json: boolean;
|
|
10
10
|
}
|
|
11
11
|
export declare function runDestroy(args: readonly string[], io: CliIo, prompt: PromptFn, isTty: () => boolean): Promise<ExitCode>;
|
|
12
|
-
export declare function parseArgs(args: readonly string[], cwd?: string): DestroyArgs | string;
|
|
12
|
+
export declare function parseArgs(args: readonly string[], cwd?: string, warn?: (line: string) => void): DestroyArgs | string;
|
|
13
13
|
export {};
|
|
14
14
|
//# sourceMappingURL=destroy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjE,iEAAiE;AACjE,MAAM,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,cAAc,EAAE,OAI5B,CAAC;AAEF,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AA0CD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,OAAO,GACnB,OAAO,CAAC,QAAQ,CAAC,CAqEnB;AAKD,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,
|
|
1
|
+
{"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjE,iEAAiE;AACjE,MAAM,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,cAAc,EAAE,OAI5B,CAAC;AAEF,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AA0CD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,OAAO,GACnB,OAAO,CAAC,QAAQ,CAAC,CAqEnB;AAKD,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,EAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B,WAAW,GAAG,MAAM,CAsEtB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CliIo, Command } from "../dispatcher.js";
|
|
2
|
+
import { inferSlugFromCwd } from "./infer-slug.js";
|
|
3
|
+
export { inferSlugFromCwd };
|
|
2
4
|
import type { EnvVarEntry } from "../types/api.js";
|
|
3
5
|
export declare const envvarsCommand: Command;
|
|
4
6
|
interface ListArgs {
|
|
@@ -18,11 +20,9 @@ interface RmArgs {
|
|
|
18
20
|
}
|
|
19
21
|
type EnvArgs = ListArgs | SetArgs | RmArgs;
|
|
20
22
|
export declare function parseArgs(args: readonly string[]): EnvArgs | null;
|
|
21
|
-
export declare function inferSlugFromCwd(cwd: string): string | null;
|
|
22
23
|
/**
|
|
23
24
|
* Two-column rendering: NAME + VALUE. secret_text values render as
|
|
24
25
|
* `•••` (the bot never returns them, so this is what we have).
|
|
25
26
|
*/
|
|
26
27
|
export declare function renderList(envVars: readonly EnvVarEntry[], io: CliIo): void;
|
|
27
|
-
export {};
|
|
28
28
|
//# sourceMappingURL=envvars.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envvars.d.ts","sourceRoot":"","sources":["../../src/commands/envvars.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EAEZ,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,cAAc,EAAE,OAI5B,CAAC;AAEF,UAAU,QAAQ;IAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AACD,UAAU,OAAO;IACf,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AACD,UAAU,MAAM;IACd,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AACD,KAAK,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"envvars.d.ts","sourceRoot":"","sources":["../../src/commands/envvars.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAa,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI9D,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,OAAO,KAAK,EACV,WAAW,EAEZ,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,cAAc,EAAE,OAI5B,CAAC;AAEF,UAAU,QAAQ;IAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AACD,UAAU,OAAO;IACf,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AACD,UAAU,MAAM;IACd,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AACD,KAAK,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAoH3C,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAqDjE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,EAAE,EAAE,KAAK,GACR,IAAI,CAqBN"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull the `<slug>` out of a directory named `launchpad-app-<slug>`.
|
|
3
|
+
* Returns null for any other cwd shape.
|
|
4
|
+
*/
|
|
5
|
+
export declare function inferSlugFromCwd(cwd: string): string | null;
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the app slug from a parsed `launchpad.yaml`. Manifest v1
|
|
8
|
+
* carries it as `metadata.name`; manifest v2 (spec/status, the per-app
|
|
9
|
+
* shape) as `metadata.slug`. Accept either so the verbs work against
|
|
10
|
+
* both shapes. Returns `null` when neither is a string (caller
|
|
11
|
+
* surfaces the error). Pure — the testable seam (M-1216 AC1).
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveManifestSlug(parsed: unknown): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Read the manifest at `manifestPath` and resolve its declared slug.
|
|
16
|
+
* Returns null when the file is absent, unreadable, not valid YAML, or
|
|
17
|
+
* declares no slug — inference degrades to the directory-name
|
|
18
|
+
* convention in every failure mode (the file is re-read and properly
|
|
19
|
+
* error-mapped by whichever verb actually needs its contents).
|
|
20
|
+
*/
|
|
21
|
+
export declare function inferSlugFromManifestFile(manifestPath: string): string | null;
|
|
22
|
+
export interface InferSlugOptions {
|
|
23
|
+
readonly cwd: string;
|
|
24
|
+
/** Manifest path override (`--file`). Relative paths resolve against
|
|
25
|
+
* `cwd`. Defaults to `<cwd>/launchpad.yaml`. */
|
|
26
|
+
readonly file?: string | undefined;
|
|
27
|
+
/** Sink for the manifest-vs-dirname disagreement note (stderr). */
|
|
28
|
+
readonly warn?: ((line: string) => void) | undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Infer the app slug when none was passed explicitly: the local
|
|
32
|
+
* manifest's declared slug first, then the `launchpad-app-<slug>`
|
|
33
|
+
* directory-name convention. Manifest wins a disagreement (with a
|
|
34
|
+
* `warn` note). Returns null when neither source resolves.
|
|
35
|
+
*/
|
|
36
|
+
export declare function inferSlug(opts: InferSlugOptions): string | null;
|
|
37
|
+
//# sourceMappingURL=infer-slug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-slug.d.ts","sourceRoot":"","sources":["../../src/commands/infer-slug.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAalE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO7E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;qDACiD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAY/D"}
|
package/dist/commands/logs.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CliIo, Command } from "../dispatcher.js";
|
|
2
|
+
import { inferSlugFromCwd } from "./infer-slug.js";
|
|
3
|
+
export { inferSlugFromCwd };
|
|
2
4
|
import type { DeploymentSummary } from "../types/api.js";
|
|
3
5
|
export declare const logsCommand: Command;
|
|
4
6
|
interface LogsArgs {
|
|
@@ -6,11 +8,9 @@ interface LogsArgs {
|
|
|
6
8
|
readonly lines: number;
|
|
7
9
|
}
|
|
8
10
|
export declare function parseArgs(args: readonly string[]): LogsArgs | null;
|
|
9
|
-
export declare function inferSlugFromCwd(cwd: string): string | null;
|
|
10
11
|
/**
|
|
11
12
|
* Render a list of deployments. Pulled out for testing without
|
|
12
13
|
* the full apiJson stack.
|
|
13
14
|
*/
|
|
14
15
|
export declare function renderDeployments(deployments: readonly DeploymentSummary[], io: CliIo): void;
|
|
15
|
-
export {};
|
|
16
16
|
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,WAAW,EAAE,OAIzB,CAAC;AAEF,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAa,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI9D,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,WAAW,EAAE,OAIzB,CAAC;AAEF,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AA+ED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CA0BlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,SAAS,iBAAiB,EAAE,EACzC,EAAE,EAAE,KAAK,GACR,IAAI,CA+BN"}
|
package/dist/commands/merge.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CliIo, Command } from "../dispatcher.js";
|
|
2
|
+
import { inferSlugFromCwd } from "./infer-slug.js";
|
|
3
|
+
export { inferSlugFromCwd };
|
|
2
4
|
import type { BotErrorEnvelope } from "../types/api.js";
|
|
3
5
|
export declare const mergeCommand: Command;
|
|
4
6
|
interface MergeArgs {
|
|
@@ -10,7 +12,6 @@ interface MergeArgs {
|
|
|
10
12
|
* positional `prNumber` is mandatory; an empty argv is a usage error.
|
|
11
13
|
*/
|
|
12
14
|
export declare function parseArgs(args: readonly string[]): MergeArgs | null;
|
|
13
|
-
export declare function inferSlugFromCwd(cwd: string): string | null;
|
|
14
15
|
/**
|
|
15
16
|
* Render the bot's structured error envelope. Pulled out so the
|
|
16
17
|
* test can exercise each `error` discriminator without spinning
|
|
@@ -25,5 +26,4 @@ export declare function inferSlugFromCwd(cwd: string): string | null;
|
|
|
25
26
|
* "blocked"`.
|
|
26
27
|
*/
|
|
27
28
|
export declare function renderBotError(status: number, env: BotErrorEnvelope | null, io: CliIo, prNumber?: number | null): void;
|
|
28
|
-
export {};
|
|
29
29
|
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,YAAY,EAAE,OAI1B,CAAC;AAEF,UAAU,SAAS;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAa,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI9D,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,YAAY,EAAE,OAI1B,CAAC;AAEF,UAAU,SAAS;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AA8GD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CA8BnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAC5B,EAAE,EAAE,KAAK,EACT,QAAQ,GAAE,MAAM,GAAG,IAAW,GAC7B,IAAI,CA4EN"}
|
package/dist/commands/pull.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ interface PullArgs {
|
|
|
7
7
|
readonly status: boolean;
|
|
8
8
|
}
|
|
9
9
|
/** Pure arg parser. Returns parsed shape or human-readable error string. */
|
|
10
|
-
export declare function parseArgs(args: readonly string[], cwd?: string): PullArgs | string;
|
|
10
|
+
export declare function parseArgs(args: readonly string[], cwd?: string, warn?: (line: string) => void): PullArgs | string;
|
|
11
11
|
export {};
|
|
12
12
|
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAS,OAAO,EAAY,MAAM,kBAAkB,CAAC;AAEjE,eAAO,MAAM,WAAW,EAAE,OAIzB,CAAC;AAEF,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAyID,4EAA4E;AAC5E,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAS,OAAO,EAAY,MAAM,kBAAkB,CAAC;AAEjE,eAAO,MAAM,WAAW,EAAE,OAIzB,CAAC;AAEF,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAyID,4EAA4E;AAC5E,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,EAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B,QAAQ,GAAG,MAAM,CA8DnB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Command } from "../dispatcher.js";
|
|
2
|
+
export declare const recoverCommand: Command;
|
|
3
|
+
interface RecoverArgs {
|
|
4
|
+
readonly slug: string;
|
|
5
|
+
readonly json: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Pure arg parser. Exported for tests. Slug resolution mirrors
|
|
8
|
+
* `launchpad status` (positional / --slug / cwd dirname) plus the
|
|
9
|
+
* Model A fallback: a `launchpad.yaml` at cwd names the slug. */
|
|
10
|
+
export declare function parseRecoverArgs(args: readonly string[], cwd?: string, warn?: (line: string) => void): RecoverArgs | string;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=recover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recover.d.ts","sourceRoot":"","sources":["../../src/commands/recover.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAS,OAAO,EAAY,MAAM,kBAAkB,CAAC;AAEjE,eAAO,MAAM,cAAc,EAAE,OAI5B,CAAC;AAIF,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAiLD;;kEAEkE;AAClE,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,EAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B,WAAW,GAAG,MAAM,CAgDtB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CliIo, Command } from "../dispatcher.js";
|
|
2
|
+
import { inferSlugFromCwd } from "./infer-slug.js";
|
|
3
|
+
export { inferSlugFromCwd };
|
|
2
4
|
import type { ReviewResponse } from "../types/api.js";
|
|
3
5
|
export declare const reviewCommand: Command;
|
|
4
6
|
interface ReviewArgs {
|
|
@@ -11,12 +13,10 @@ interface ReviewArgs {
|
|
|
11
13
|
* the caller can render the usage banner.
|
|
12
14
|
*/
|
|
13
15
|
export declare function parseArgs(args: readonly string[]): ReviewArgs | null;
|
|
14
|
-
export declare function inferSlugFromCwd(cwd: string): string | null;
|
|
15
16
|
/**
|
|
16
17
|
* Render the ReviewResponse to stdout. Pulled out so the test
|
|
17
18
|
* can exercise the formatter directly without spinning up the
|
|
18
19
|
* full apiJson stack.
|
|
19
20
|
*/
|
|
20
21
|
export declare function renderReview(r: ReviewResponse, io: CliIo): void;
|
|
21
|
-
export {};
|
|
22
22
|
//# sourceMappingURL=review.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,aAAa,EAAE,OAI3B,CAAC;AAEF,UAAU,UAAU;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAa,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI9D,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,aAAa,EAAE,OAI3B,CAAC;AAEF,UAAU,UAAU;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAwFD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI,CA4BpE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CA4B/D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DeploymentStatusView } from "../deploy/deployment-status.js";
|
|
1
|
+
import { type DeploymentStatusView, type StandingExceptionView } from "../deploy/deployment-status.js";
|
|
2
2
|
import { type Manifest } from "@m-kopa/launchpad-engine";
|
|
3
3
|
import type { Command } from "../dispatcher.js";
|
|
4
4
|
export declare const statusCommand: Command;
|
|
@@ -17,8 +17,17 @@ export interface StatusJsonOutput {
|
|
|
17
17
|
/** Live CF Pages content exists but no platform-tracked manifest —
|
|
18
18
|
* the app deploys via git integration / outside `launchpad deploy`
|
|
19
19
|
* (sp-devlp1 AC6; the sp-gitst1 misreport fix). */
|
|
20
|
-
| "live_content_untracked" | "in_sync" | "drift"
|
|
20
|
+
| "live_content_untracked" | "in_sync" | "drift"
|
|
21
|
+
/** The app is live and a deployed manifest exists, but there is no
|
|
22
|
+
* local launchpad.yaml to compare against — status degraded to the
|
|
23
|
+
* live-truth-only view (fix/status-slug-inference Fault 2). */
|
|
24
|
+
| "live_drift_unknown" | "no_deployed_manifest" | "destroying" | "destroyed" | "destroy_failed";
|
|
21
25
|
readonly slug: string;
|
|
26
|
+
/** Drift-evaluation discriminant (fix/status-slug-inference): emitted
|
|
27
|
+
* as `null` when drift was NOT evaluated because no local manifest
|
|
28
|
+
* exists (live-truth-only degrade). Absent when drift was evaluated
|
|
29
|
+
* (the `state` field carries in_sync/drift) or doesn't apply. */
|
|
30
|
+
readonly drift?: null;
|
|
22
31
|
/** Provisioning/failed only — the current (or failing) workflow stage. */
|
|
23
32
|
readonly stage?: string | null;
|
|
24
33
|
/** provisioning_failed only — the failure message. */
|
|
@@ -42,6 +51,10 @@ export interface StatusJsonOutput {
|
|
|
42
51
|
* Absent when the bot pre-dates the endpoint; null when fetched but
|
|
43
52
|
* the app has no Pages surface. */
|
|
44
53
|
readonly deployment?: DeploymentStatusView | null;
|
|
54
|
+
/** Standing-exception inventory (sp-devlp1 T3 / D2): non-blocking
|
|
55
|
+
* policy violations in content already live on managed main.
|
|
56
|
+
* Absent when the bot pre-dates the endpoint. */
|
|
57
|
+
readonly standingExceptions?: readonly StandingExceptionView[];
|
|
45
58
|
}
|
|
46
59
|
/**
|
|
47
60
|
* Compute drift over the v1 closed field set (AC5).
|
|
@@ -58,7 +71,8 @@ export declare function computeDrift(local: Manifest, deployed: Manifest): Reado
|
|
|
58
71
|
local: unknown;
|
|
59
72
|
deployed: unknown;
|
|
60
73
|
}>;
|
|
61
|
-
/**
|
|
62
|
-
|
|
74
|
+
/** Arg parser (reads the filesystem only for slug inference).
|
|
75
|
+
* Exported for tests. */
|
|
76
|
+
export declare function parseArgs(args: readonly string[], cwd?: string, warn?: (line: string) => void): StatusArgs | string;
|
|
63
77
|
export {};
|
|
64
78
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AA6CA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,gCAAgC,CAAC;AASxC,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,KAAK,EAAS,OAAO,EAAY,MAAM,kBAAkB,CAAC;AAEjE,eAAO,MAAM,aAAa,EAAE,OAI3B,CAAC;AAEF,UAAU,UAAU;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAuBD;;;uEAGuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EACV,cAAc,GACd,qBAAqB,GACrB,iBAAiB;IACnB;;wDAEoD;OAClD,wBAAwB,GACxB,SAAS,GACT,OAAO;IACT;;oEAEgE;OAC9D,oBAAoB,GACpB,sBAAsB,GACtB,YAAY,GACZ,WAAW,GACX,gBAAgB,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;sEAGkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oFAAoF;IACpF,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC5B,CAAC,CAAC;IACH;;;wCAGoC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD;;sDAEkD;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAChE;AAuRD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,GACjB,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CA2DpE;AAuRD;0BAC0B;AAC1B,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,EAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B,UAAU,GAAG,MAAM,CAqErB"}
|
package/dist/deploy/apply.d.ts
CHANGED
|
@@ -9,6 +9,11 @@ export interface ApplyOptions {
|
|
|
9
9
|
* Removal in v0.13 alongside `--platform-repo`. */
|
|
10
10
|
readonly rePin: boolean;
|
|
11
11
|
readonly yes: boolean;
|
|
12
|
+
/** `--at <sha>` — pin the manifest to a specific MANAGED-repo sha
|
|
13
|
+
* instead of letting the bot resolve managed main HEAD (sp-devlp1
|
|
14
|
+
* AC3). The sha must exist in the managed repo; a local-only sha
|
|
15
|
+
* is rejected by the bot with a pointer at the no-sha path. */
|
|
16
|
+
readonly atSha?: string;
|
|
12
17
|
/** Re-attach to an in-flight apply for `--resume <prNumber>`. */
|
|
13
18
|
readonly resumePrNumber?: number;
|
|
14
19
|
/** Override the 90-minute default polling timeout (AC-U2). */
|
|
@@ -20,8 +25,6 @@ export interface ApplyDeps {
|
|
|
20
25
|
readonly config?: CliConfig;
|
|
21
26
|
/** Inject `fetch` for tests; defaults to `globalThis.fetch`. */
|
|
22
27
|
readonly fetcher?: typeof fetch;
|
|
23
|
-
/** Inject `git rev-parse` resolution for tests. */
|
|
24
|
-
readonly gitHeadSha?: (cwd: string) => string;
|
|
25
28
|
/** Polling interval seconds (defaults to 10s; tests use 0). */
|
|
26
29
|
readonly pollIntervalSeconds?: number;
|
|
27
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/deploy/apply.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/deploy/apply.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAU1D,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;iCAC6B;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;wDACoD;IACpD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB;;;oEAGgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAwCD,wBAAsB,cAAc,CAClC,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,SAAc,GACnB,OAAO,CAAC,QAAQ,CAAC,CAoLnB"}
|
|
@@ -27,6 +27,24 @@ export interface DeploymentStatusView {
|
|
|
27
27
|
readonly url: string | null;
|
|
28
28
|
} | null;
|
|
29
29
|
}
|
|
30
|
+
/** One standing-exception inventory entry (sp-devlp1 T3 / D2) — a
|
|
31
|
+
* policy/boundary/build-command violation observed in content already
|
|
32
|
+
* live on managed main. Non-blocking; recorded by the bot on every
|
|
33
|
+
* deploy that observes it. Mirror of the bot's `StandingException`. */
|
|
34
|
+
export interface StandingExceptionView {
|
|
35
|
+
readonly path: string;
|
|
36
|
+
readonly rule: string;
|
|
37
|
+
readonly detectedAt: string;
|
|
38
|
+
readonly deployRef: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Fetch the app's standing-exception inventory via
|
|
42
|
+
* `GET /apps/<slug>/exceptions` (owner/editor/break-glass). Returns
|
|
43
|
+
* `null` when the bot pre-dates the endpoint (404) or the response is
|
|
44
|
+
* shape-less — callers omit the block in that case. Auth errors
|
|
45
|
+
* propagate.
|
|
46
|
+
*/
|
|
47
|
+
export declare function fetchStandingExceptions(cfg: CliConfig, slug: string, fetcher?: typeof fetch): Promise<readonly StandingExceptionView[] | null>;
|
|
30
48
|
/**
|
|
31
49
|
* Fetch the live deployment status. Returns `null` when the bot
|
|
32
50
|
* pre-dates the endpoint (404) or the response doesn't carry the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-status.d.ts","sourceRoot":"","sources":["../../src/deploy/deployment-status.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,wBAAwB,EAAE;QACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,GAAG,IAAI,CAAC;CACV;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAuBtC"}
|
|
1
|
+
{"version":3,"file":"deployment-status.d.ts","sourceRoot":"","sources":["../../src/deploy/deployment-status.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,wBAAwB,EAAE;QACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,GAAG,IAAI,CAAC;CACV;AAED;;;wEAGwE;AACxE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,SAAS,qBAAqB,EAAE,GAAG,IAAI,CAAC,CAsBlD;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAuBtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIxD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD;;;gDAG4C;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAUD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIxD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD;;;gDAG4C;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAUD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,QAAQ,CAAC,CAyInB"}
|
package/dist/dispatcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAiDA,MAAM,WAAW,KAAK;IACpB,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxE;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EA8BtC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,QAAQ,GAAE,SAAS,OAAO,EAAa,GACtC,OAAO,CAAC,QAAQ,CAAC,CAmBnB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAyBvE"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.
|
|
1
|
+
export declare const CLI_VERSION = "0.26.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: launchpad-content-pr
|
|
3
3
|
description: Push a content change to a Launchpad app via `launchpad deploy` and verify it shipped via `launchpad status`. Covers the post-first-deploy iteration loop (edit → deploy → verify) and the stack-fit pre-flight that the bot enforces server-side. Use when someone says "push a content change", "ship an update", "/launchpad-content-pr", "verify my deploy", or after `/launchpad-deploy` reports `done` and they want to follow up with an edit.
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.26.1
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- BEGIN shell-contract (managed by scripts/sync-skill-contract.sh — edit skills/_partials/shell-contract.md) -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: launchpad-deploy
|
|
3
3
|
description: Walk a Launchpad user through deploying an app from their local working directory (Model A — `launchpad init` + `launchpad deploy`). Wraps the CLI verbs end-to-end: detects the app shape, scaffolds `launchpad.yaml`, resolves the allowed Entra group via `launchpad groups`, bundles the CWD via `launchpad deploy`, and tails the resulting content PR. Use when someone says "deploy a new app", "ship my app to Launchpad", "/launchpad-deploy", "I have an app locally — get it on Launchpad", or any variant. Resume/abandon for legacy in-flight provisioning is at the bottom.
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.26.1
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- BEGIN shell-contract (managed by scripts/sync-skill-contract.sh — edit skills/_partials/shell-contract.md) -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: launchpad-deploy-status
|
|
3
3
|
description: Show the current provisioning stage + failure reason for a Launchpad app via `launchpad status` (Model A drift + deployment_verified) and `launchpad apps` (lifecycle bucket). Renders the M-892 stage trace for legacy in-flight provisioning. Use when someone says "what's the status of demo-X", "/launchpad-deploy-status", "is my deploy stuck", or after `/launchpad-deploy` reports a non-`done` terminal stage.
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.26.1
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- BEGIN shell-contract (managed by scripts/sync-skill-contract.sh — edit skills/_partials/shell-contract.md) -->
|
|
@@ -46,9 +46,11 @@ If that fails, run `/launchpad-onboard` first.
|
|
|
46
46
|
## Input
|
|
47
47
|
|
|
48
48
|
Accept a **slug** (e.g. `demo-9`) as a positional argument. If the
|
|
49
|
-
user
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
user is sitting in a directory with a `launchpad.yaml` (any directory
|
|
50
|
+
name) or inside a `launchpad-app-<slug>/` clone, every verb below
|
|
51
|
+
infers the slug from cwd (manifest slug first, then directory name) —
|
|
52
|
+
do not ask. Ask for the slug only when the user gave none AND neither
|
|
53
|
+
inference source resolves.
|
|
52
54
|
|
|
53
55
|
## Quick triage — which verb do you want?
|
|
54
56
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: launchpad-destroy
|
|
3
3
|
description: Tear down a Launchpad app end-to-end via `launchpad destroy` — Cloudflare Pages project, Access app, custom hostname, platform-repo TF entries, and the app repo (archive-renamed). Owner-only verb with a two-step destructive confirmation. Use when someone says "destroy this app", "/launchpad-destroy", "tear down `<slug>`", "delete the app", or asks to clean up a smoke-test / orphan / retired app.
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.26.1
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- BEGIN shell-contract (managed by scripts/sync-skill-contract.sh — edit skills/_partials/shell-contract.md) -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: launchpad-onboard
|
|
3
3
|
description: One-time setup for the Launchpad CLI + Claude Code skill bundle. Verifies the `launchpad` CLI is installed and current, runs `launchpad whoami` to confirm the Cf Access session is fresh, and checks the bundled skills are installed and in lock-step with the CLI. Idempotent — safe to re-run any time. Use when someone says "set me up for Launchpad", "I just got a new machine and want to use Launchpad", "/launchpad-onboard", or any of the other launchpad-* skills fails on a prereq check.
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.26.1
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- BEGIN shell-contract (managed by scripts/sync-skill-contract.sh — edit skills/_partials/shell-contract.md) -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: launchpad-status
|
|
3
3
|
description: Show whether a Launchpad app's local launchpad.yaml matches what's deployed, and read the deployed manifest. Wraps `launchpad pull` (fetch deployed YAML) and `launchpad status` (drift report). Use when someone says "is my app in sync", "what's deployed", "show drift", "/launchpad-status", "/launchpad-pull", or after `launchpad deploy` to verify the change landed.
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.26.1
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- BEGIN shell-contract (managed by scripts/sync-skill-contract.sh — edit skills/_partials/shell-contract.md) -->
|
|
@@ -68,16 +68,23 @@ Both verbs are owner/editor-scoped — non-members get HTTP 403 with
|
|
|
68
68
|
|
|
69
69
|
## Slug resolution
|
|
70
70
|
|
|
71
|
-
Both verbs accept the slug
|
|
71
|
+
Both verbs accept the slug four ways, with this precedence:
|
|
72
72
|
|
|
73
73
|
1. **`--slug <slug>`** — explicit, wins over everything.
|
|
74
74
|
2. **Positional argument** — `launchpad pull horizon-clone`.
|
|
75
|
-
3. **
|
|
75
|
+
3. **Local manifest inference** — the slug declared by
|
|
76
|
+
`./launchpad.yaml` (or `--file` on `launchpad status`); v1
|
|
77
|
+
`metadata.name` / v2 `metadata.slug`. Works from any directory
|
|
78
|
+
containing a valid manifest, whatever it is called.
|
|
79
|
+
4. **Current directory inference** — if cwd is named
|
|
76
80
|
`launchpad-app-<slug>/`, the slug is extracted automatically.
|
|
77
|
-
This is the default when you've `launchpad clone`d an app.
|
|
78
81
|
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
When 3 and 4 both resolve and disagree, the manifest wins and a note
|
|
83
|
+
is printed to stderr. `--slug` / positional always override.
|
|
84
|
+
|
|
85
|
+
If `launchpad status` has a slug but NO local manifest exists, it does
|
|
86
|
+
not error: it renders the live-truth-only view (lifecycle + deployment;
|
|
87
|
+
drift not checked) and exits 0.
|
|
81
88
|
|
|
82
89
|
## `launchpad pull`
|
|
83
90
|
|