@m-kopa/launchpad-cli 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/CHANGELOG.md +854 -0
  2. package/README.md +109 -0
  3. package/dist/auth/browser.d.ts +18 -0
  4. package/dist/auth/browser.d.ts.map +1 -0
  5. package/dist/auth/callback-server.d.ts +24 -0
  6. package/dist/auth/callback-server.d.ts.map +1 -0
  7. package/dist/auth/discovery.d.ts +25 -0
  8. package/dist/auth/discovery.d.ts.map +1 -0
  9. package/dist/auth/flow.d.ts +39 -0
  10. package/dist/auth/flow.d.ts.map +1 -0
  11. package/dist/auth/jwt.d.ts +27 -0
  12. package/dist/auth/jwt.d.ts.map +1 -0
  13. package/dist/auth/pkce.d.ts +26 -0
  14. package/dist/auth/pkce.d.ts.map +1 -0
  15. package/dist/auth/registration.d.ts +8 -0
  16. package/dist/auth/registration.d.ts.map +1 -0
  17. package/dist/auth/session.d.ts +54 -0
  18. package/dist/auth/session.d.ts.map +1 -0
  19. package/dist/auth/token.d.ts +37 -0
  20. package/dist/auth/token.d.ts.map +1 -0
  21. package/dist/bundle/cron-bundle.d.ts +77 -0
  22. package/dist/bundle/cron-bundle.d.ts.map +1 -0
  23. package/dist/bundle/cwd-walker.d.ts +43 -0
  24. package/dist/bundle/cwd-walker.d.ts.map +1 -0
  25. package/dist/bundle/orchestrate.d.ts +51 -0
  26. package/dist/bundle/orchestrate.d.ts.map +1 -0
  27. package/dist/bundle/upload.d.ts +66 -0
  28. package/dist/bundle/upload.d.ts.map +1 -0
  29. package/dist/cli.d.ts +3 -0
  30. package/dist/cli.d.ts.map +1 -0
  31. package/dist/cli.js +9757 -0
  32. package/dist/clone/git-init.d.ts +18 -0
  33. package/dist/clone/git-init.d.ts.map +1 -0
  34. package/dist/clone/tar-extract.d.ts +59 -0
  35. package/dist/clone/tar-extract.d.ts.map +1 -0
  36. package/dist/commands/apps.d.ts +14 -0
  37. package/dist/commands/apps.d.ts.map +1 -0
  38. package/dist/commands/channel-auth.d.ts +31 -0
  39. package/dist/commands/channel-auth.d.ts.map +1 -0
  40. package/dist/commands/clone.d.ts +3 -0
  41. package/dist/commands/clone.d.ts.map +1 -0
  42. package/dist/commands/create.d.ts +27 -0
  43. package/dist/commands/create.d.ts.map +1 -0
  44. package/dist/commands/deploy-flags.d.ts +75 -0
  45. package/dist/commands/deploy-flags.d.ts.map +1 -0
  46. package/dist/commands/deploy-modes.d.ts +59 -0
  47. package/dist/commands/deploy-modes.d.ts.map +1 -0
  48. package/dist/commands/deploy.d.ts +29 -0
  49. package/dist/commands/deploy.d.ts.map +1 -0
  50. package/dist/commands/destroy.d.ts +14 -0
  51. package/dist/commands/destroy.d.ts.map +1 -0
  52. package/dist/commands/envvars.d.ts +28 -0
  53. package/dist/commands/envvars.d.ts.map +1 -0
  54. package/dist/commands/generate.d.ts +3 -0
  55. package/dist/commands/generate.d.ts.map +1 -0
  56. package/dist/commands/groups-whoami.d.ts +3 -0
  57. package/dist/commands/groups-whoami.d.ts.map +1 -0
  58. package/dist/commands/groups.d.ts +3 -0
  59. package/dist/commands/groups.d.ts.map +1 -0
  60. package/dist/commands/init.d.ts +44 -0
  61. package/dist/commands/init.d.ts.map +1 -0
  62. package/dist/commands/login.d.ts +3 -0
  63. package/dist/commands/login.d.ts.map +1 -0
  64. package/dist/commands/logout.d.ts +3 -0
  65. package/dist/commands/logout.d.ts.map +1 -0
  66. package/dist/commands/logs.d.ts +16 -0
  67. package/dist/commands/logs.d.ts.map +1 -0
  68. package/dist/commands/merge.d.ts +29 -0
  69. package/dist/commands/merge.d.ts.map +1 -0
  70. package/dist/commands/plan.d.ts +3 -0
  71. package/dist/commands/plan.d.ts.map +1 -0
  72. package/dist/commands/pull.d.ts +12 -0
  73. package/dist/commands/pull.d.ts.map +1 -0
  74. package/dist/commands/review.d.ts +22 -0
  75. package/dist/commands/review.d.ts.map +1 -0
  76. package/dist/commands/rollback.d.ts +3 -0
  77. package/dist/commands/rollback.d.ts.map +1 -0
  78. package/dist/commands/secrets-template.d.ts +3 -0
  79. package/dist/commands/secrets-template.d.ts.map +1 -0
  80. package/dist/commands/secrets.d.ts +3 -0
  81. package/dist/commands/secrets.d.ts.map +1 -0
  82. package/dist/commands/skills.d.ts +13 -0
  83. package/dist/commands/skills.d.ts.map +1 -0
  84. package/dist/commands/status.d.ts +54 -0
  85. package/dist/commands/status.d.ts.map +1 -0
  86. package/dist/commands/update.d.ts +114 -0
  87. package/dist/commands/update.d.ts.map +1 -0
  88. package/dist/commands/validate.d.ts +3 -0
  89. package/dist/commands/validate.d.ts.map +1 -0
  90. package/dist/commands/whoami.d.ts +3 -0
  91. package/dist/commands/whoami.d.ts.map +1 -0
  92. package/dist/config.d.ts +11 -0
  93. package/dist/config.d.ts.map +1 -0
  94. package/dist/deploy/apply.d.ts +29 -0
  95. package/dist/deploy/apply.d.ts.map +1 -0
  96. package/dist/deploy/dry-run.d.ts +13 -0
  97. package/dist/deploy/dry-run.d.ts.map +1 -0
  98. package/dist/deploy/git-files.d.ts +33 -0
  99. package/dist/deploy/git-files.d.ts.map +1 -0
  100. package/dist/deploy/group-pin.d.ts +66 -0
  101. package/dist/deploy/group-pin.d.ts.map +1 -0
  102. package/dist/deploy/manifest-state.d.ts +20 -0
  103. package/dist/deploy/manifest-state.d.ts.map +1 -0
  104. package/dist/deploy/manifest-status.d.ts +11 -0
  105. package/dist/deploy/manifest-status.d.ts.map +1 -0
  106. package/dist/deploy/resolve.d.ts +53 -0
  107. package/dist/deploy/resolve.d.ts.map +1 -0
  108. package/dist/deploy/rollback.d.ts +23 -0
  109. package/dist/deploy/rollback.d.ts.map +1 -0
  110. package/dist/deploy/runner.d.ts +29 -0
  111. package/dist/deploy/runner.d.ts.map +1 -0
  112. package/dist/deploy/stage-exit-codes.d.ts +41 -0
  113. package/dist/deploy/stage-exit-codes.d.ts.map +1 -0
  114. package/dist/deploy/status-polling.d.ts +37 -0
  115. package/dist/deploy/status-polling.d.ts.map +1 -0
  116. package/dist/deploy/tar-pack.d.ts +22 -0
  117. package/dist/deploy/tar-pack.d.ts.map +1 -0
  118. package/dist/detect/index.d.ts +53 -0
  119. package/dist/detect/index.d.ts.map +1 -0
  120. package/dist/dispatcher.d.ts +30 -0
  121. package/dist/dispatcher.d.ts.map +1 -0
  122. package/dist/groups/client.d.ts +62 -0
  123. package/dist/groups/client.d.ts.map +1 -0
  124. package/dist/http/api-client.d.ts +33 -0
  125. package/dist/http/api-client.d.ts.map +1 -0
  126. package/dist/http/errors.d.ts +31 -0
  127. package/dist/http/errors.d.ts.map +1 -0
  128. package/dist/manifest/load.d.ts +38 -0
  129. package/dist/manifest/load.d.ts.map +1 -0
  130. package/dist/manifest/schema.d.ts +3 -0
  131. package/dist/manifest/schema.d.ts.map +1 -0
  132. package/dist/postinstall.d.ts +3 -0
  133. package/dist/postinstall.d.ts.map +1 -0
  134. package/dist/postinstall.js +37 -0
  135. package/dist/secrets/env-parse.d.ts +19 -0
  136. package/dist/secrets/env-parse.d.ts.map +1 -0
  137. package/dist/secrets/push.d.ts +13 -0
  138. package/dist/secrets/push.d.ts.map +1 -0
  139. package/dist/secrets/set.d.ts +19 -0
  140. package/dist/secrets/set.d.ts.map +1 -0
  141. package/dist/secrets/status.d.ts +19 -0
  142. package/dist/secrets/status.d.ts.map +1 -0
  143. package/dist/types/api.d.ts +112 -0
  144. package/dist/types/api.d.ts.map +1 -0
  145. package/dist/update-notifier.d.ts +69 -0
  146. package/dist/update-notifier.d.ts.map +1 -0
  147. package/dist/version.d.ts +2 -0
  148. package/dist/version.d.ts.map +1 -0
  149. package/package.json +62 -0
  150. package/skills/README.md +100 -0
  151. package/skills/_partials/shell-contract.md +42 -0
  152. package/skills/launchpad-content-pr/SKILL.md +255 -0
  153. package/skills/launchpad-deploy/SKILL.md +415 -0
  154. package/skills/launchpad-deploy-status/SKILL.md +231 -0
  155. package/skills/launchpad-destroy/SKILL.md +317 -0
  156. package/skills/launchpad-onboard/SKILL.md +179 -0
  157. package/skills/launchpad-status/SKILL.md +263 -0
  158. package/skills/marquee-share/README.md +155 -0
  159. package/skills/marquee-share/SKILL.md +94 -0
  160. package/skills/marquee-share/SYNC.md +27 -0
  161. package/skills/marquee-share/dist/cli.js +896 -0
  162. package/skills/marquee-share/eslint.config.mjs +71 -0
  163. package/skills/marquee-share/install.sh +103 -0
  164. package/skills/marquee-share/package-lock.json +3946 -0
  165. package/skills/marquee-share/package.json +30 -0
  166. package/skills/marquee-share/src/auth/PROVENANCE.md +103 -0
  167. package/skills/marquee-share/src/auth/browser.ts +75 -0
  168. package/skills/marquee-share/src/auth/callback-server.ts +171 -0
  169. package/skills/marquee-share/src/auth/discovery.ts +171 -0
  170. package/skills/marquee-share/src/auth/flow.ts +262 -0
  171. package/skills/marquee-share/src/auth/index.ts +171 -0
  172. package/skills/marquee-share/src/auth/jwt.ts +77 -0
  173. package/skills/marquee-share/src/auth/pkce.ts +79 -0
  174. package/skills/marquee-share/src/auth/registration.ts +87 -0
  175. package/skills/marquee-share/src/auth/session.ts +205 -0
  176. package/skills/marquee-share/src/auth/token.ts +162 -0
  177. package/skills/marquee-share/src/cli.ts +246 -0
  178. package/skills/marquee-share/src/config.ts +101 -0
  179. package/skills/marquee-share/src/render/template.ts +171 -0
  180. package/skills/marquee-share/src/upload/index.ts +11 -0
  181. package/skills/marquee-share/src/upload/upload.ts +191 -0
  182. package/skills/marquee-share/tests/cli.test.ts +281 -0
  183. package/skills/marquee-share/tests/config.test.ts +119 -0
  184. package/skills/marquee-share/tests/flow.test.ts +356 -0
  185. package/skills/marquee-share/tests/no-token-leak.test.ts +240 -0
  186. package/skills/marquee-share/tests/pkce.test.ts +121 -0
  187. package/skills/marquee-share/tests/session.test.ts +173 -0
  188. package/skills/marquee-share/tests/template.test.ts +170 -0
  189. package/skills/marquee-share/tests/upload.test.ts +311 -0
  190. package/skills/marquee-share/tsconfig.json +23 -0
  191. package/skills/marquee-share/vitest.config.ts +15 -0
@@ -0,0 +1,37 @@
1
+ export interface StatusPayloadShape {
2
+ readonly id: string;
3
+ readonly stage: string;
4
+ }
5
+ export type PollOutcome = {
6
+ readonly kind: "ready";
7
+ } | {
8
+ readonly kind: "done";
9
+ } | {
10
+ readonly kind: "failure";
11
+ readonly stage: string;
12
+ } | {
13
+ readonly kind: "timeout";
14
+ } | {
15
+ readonly kind: "transport-error";
16
+ readonly message: string;
17
+ };
18
+ export interface PollArgs {
19
+ readonly fetchStatus: () => Promise<StatusPayloadShape>;
20
+ readonly sleep: (ms: number) => Promise<void>;
21
+ readonly now: () => number;
22
+ readonly intervalMs: number;
23
+ readonly deadlineMs: number;
24
+ readonly onTick?: (stage: string) => void;
25
+ }
26
+ /**
27
+ * Drive the poll loop. Returns when the workflow reaches a terminal
28
+ * state, the deadline elapses, or transport fails.
29
+ *
30
+ * Each iteration calls `onTick` (if supplied) with the current stage
31
+ * — the CLI uses this to render a progress line. Tick fires on EVERY
32
+ * successful poll, including consecutive identical stages, so a
33
+ * "stuck at tf_pr_opened for 3 minutes" condition is visible without
34
+ * any extra plumbing.
35
+ */
36
+ export declare function pollUntilTerminal(args: PollArgs): Promise<PollOutcome>;
37
+ //# sourceMappingURL=status-polling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-polling.d.ts","sourceRoot":"","sources":["../../src/deploy/status-polling.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAKD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CA8B5E"}
@@ -0,0 +1,22 @@
1
+ export declare const MAX_COMPRESSED_TARBALL_BYTES: number;
2
+ /** Per-file size cap — defensive belt-and-braces. The bot's
3
+ * tarball-walk has a 5MB cap too; rejecting client-side gives a
4
+ * clearer error. */
5
+ export declare const MAX_FILE_BYTES: number;
6
+ export declare class TarPackError extends Error {
7
+ readonly code: "tar_pack_error";
8
+ }
9
+ export interface PackResult {
10
+ readonly bytes: Uint8Array;
11
+ readonly fileCount: number;
12
+ readonly uncompressedBytes: number;
13
+ }
14
+ /**
15
+ * Pack the listed `files` (relative to `cwd`) into a gzipped tar
16
+ * and return the byte buffer + counters.
17
+ *
18
+ * Throws `TarPackError` on per-file size overflow OR if the
19
+ * compressed output exceeds `MAX_COMPRESSED_TARBALL_BYTES`.
20
+ */
21
+ export declare function packTarGz(cwd: string, files: readonly string[]): Promise<PackResult>;
22
+ //# sourceMappingURL=tar-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar-pack.d.ts","sourceRoot":"","sources":["../../src/deploy/tar-pack.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,4BAA4B,QAAmB,CAAC;AAC7D;;qBAEqB;AACrB,eAAO,MAAM,cAAc,QAAkB,CAAC;AAE9C,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC,UAAU,CAAC,CAoGrB"}
@@ -0,0 +1,53 @@
1
+ export type AppType = "react" | "react+api";
2
+ export type PackageManager = "npm" | "bun" | "pnpm" | "yarn";
3
+ export interface DetectedShape {
4
+ readonly appType: AppType;
5
+ readonly packageManager: PackageManager;
6
+ /** Full build command line including install step, e.g. `npm ci && npm run build`. */
7
+ readonly buildCommand: string;
8
+ /** Output directory from vite.config or `dist` default. */
9
+ readonly destinationDir: string;
10
+ /** Always empty in Model A — CWD IS the build root. */
11
+ readonly rootDir: "";
12
+ }
13
+ export type DetectionResult = {
14
+ kind: "ok";
15
+ detected: DetectedShape;
16
+ } | {
17
+ kind: "ambiguous";
18
+ reason: string;
19
+ } | {
20
+ kind: "not-applicable";
21
+ reason: string;
22
+ };
23
+ /**
24
+ * Top-level entry point. Composes the individual detectors and
25
+ * surfaces the first ambiguity it hits (so the user gets one clear
26
+ * error rather than a wall of compounding ones).
27
+ *
28
+ * Three outcomes:
29
+ * - `ok` — Vite app detected, all signals consistent.
30
+ * - `ambiguous` — real conflict (multiple lockfiles, etc.).
31
+ * Caller should refuse and surface the reason.
32
+ * - `not-applicable` — no signals at all (e.g. empty directory or
33
+ * a non-Vite project). Caller can fall through
34
+ * to manual entry / prompts.
35
+ */
36
+ export declare function detectAppShape(cwd: string): DetectionResult;
37
+ type DetectorResult<T> = {
38
+ kind: "ok";
39
+ value: T;
40
+ } | {
41
+ kind: "ambiguous";
42
+ reason: string;
43
+ };
44
+ export declare function detectPackageManager(cwd: string): DetectorResult<PackageManager>;
45
+ interface ViteFinding {
46
+ readonly path: string;
47
+ }
48
+ export declare function detectVitePresence(cwd: string): DetectorResult<ViteFinding>;
49
+ export declare function detectAppType(cwd: string): DetectorResult<AppType>;
50
+ export declare function detectBuildCommand(cwd: string, pm: PackageManager): DetectorResult<string>;
51
+ export declare function detectDestinationDir(cwd: string, vite: ViteFinding): DetectorResult<string>;
52
+ export {};
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;AAC5C,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,sFAAsF;IACtF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAuC3D;AAWD,KAAK,cAAc,CAAC,CAAC,IACjB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAY1C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,CAuBhF;AAKD,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAY3E;AAKD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAoBlE;AAKD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,cAAc,GACjB,cAAc,CAAC,MAAM,CAAC,CAuCxB;AAoBD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAChB,cAAc,CAAC,MAAM,CAAC,CAsBxB"}
@@ -0,0 +1,30 @@
1
+ export interface CliIo {
2
+ /** Where regular CLI output goes (matches stdout). */
3
+ readonly out: (line: string) => void;
4
+ /** Where errors go (matches stderr). */
5
+ readonly err: (line: string) => void;
6
+ }
7
+ export type ExitCode = number;
8
+ export interface Command {
9
+ readonly name: string;
10
+ readonly summary: string;
11
+ readonly run: (args: readonly string[], io: CliIo) => Promise<ExitCode>;
12
+ /**
13
+ * Internal verbs (e.g. the update-notifier's background refresh) set
14
+ * this so they remain dispatchable but never appear in `--help`.
15
+ */
16
+ readonly hidden?: boolean;
17
+ }
18
+ /**
19
+ * Verb table. Each slice imports + appends its `Command` here.
20
+ * Keeping the registry as a const array (rather than a Map)
21
+ * preserves a stable rendering order in `--help`.
22
+ */
23
+ export declare const COMMANDS: readonly Command[];
24
+ /**
25
+ * Top-level dispatcher. Returns an exit code; never calls
26
+ * `process.exit` itself (the bin wrapper does).
27
+ */
28
+ export declare function dispatch(argv: readonly string[], io: CliIo, commands?: readonly Command[]): Promise<ExitCode>;
29
+ export declare function printHelp(io: CliIo, commands: readonly Command[]): void;
30
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAgDA,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,EA6BtC,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"}
@@ -0,0 +1,62 @@
1
+ import type { CliConfig } from "../config.js";
2
+ /** Shape of one group in the bot's response. Mirrors
3
+ * `portal-bot/src/graph.ts`'s `EntraGroup`. */
4
+ export interface EntraGroup {
5
+ /** Canonical Entra Object ID UUID (8-4-4-4-12 hex). */
6
+ readonly id: string;
7
+ /** Human-readable group name (e.g. `G_Product_Security`). */
8
+ readonly displayName: string;
9
+ /** Email-style nickname; null when the bot couldn't read it. */
10
+ readonly mailNickname: string | null;
11
+ }
12
+ /** Cache TTL — matches the Scope 4 plan ("~1h"). */
13
+ export declare const CACHE_TTL_MS: number;
14
+ export interface FetchGroupsOptions {
15
+ readonly forceRefresh?: boolean;
16
+ /** Test seam for `Date.now`. */
17
+ readonly now?: () => number;
18
+ /** Test seam for the HTTP layer. */
19
+ readonly fetcher?: typeof fetch;
20
+ }
21
+ export type FetchGroupsResult = {
22
+ kind: "ok";
23
+ source: "cache" | "fresh";
24
+ fetchedAt: string;
25
+ groups: readonly EntraGroup[];
26
+ } | {
27
+ kind: "error";
28
+ message: string;
29
+ };
30
+ /**
31
+ * Resolve the Entra group list, preferring the on-disk cache
32
+ * unless `forceRefresh` is set or the cache is missing / stale /
33
+ * malformed. Network failures are returned as `kind: "error"`
34
+ * rather than thrown so the verb can render a user-friendly
35
+ * message.
36
+ */
37
+ export declare function fetchGroups(cfg: CliConfig, opts?: FetchGroupsOptions): Promise<FetchGroupsResult>;
38
+ /** True for a canonical Entra Object ID UUID. */
39
+ export declare function isUuid(value: string): boolean;
40
+ /**
41
+ * Find a single group by an exact match on `id` (UUID),
42
+ * `displayName`, or `mailNickname`. Returns `null` when no match
43
+ * is found and the array of candidates when more than one entry
44
+ * matches the same key (only possible with case-sensitive
45
+ * collisions on displayName — Entra allows duplicate display
46
+ * names on different groups).
47
+ */
48
+ export declare function findGroup(groups: readonly EntraGroup[], nameOrId: string): {
49
+ kind: "found";
50
+ group: EntraGroup;
51
+ } | {
52
+ kind: "not-found";
53
+ } | {
54
+ kind: "ambiguous";
55
+ matches: readonly EntraGroup[];
56
+ };
57
+ /**
58
+ * Case-insensitive substring search across `displayName`,
59
+ * `mailNickname`, and `id`. Used by `launchpad groups search`.
60
+ */
61
+ export declare function searchGroups(groups: readonly EntraGroup[], query: string): readonly EntraGroup[];
62
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/groups/client.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C;gDACgD;AAChD,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAYD,oDAAoD;AACpD,eAAO,MAAM,YAAY,QAAkB,CAAC;AAK5C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,gCAAgC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACjC;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,GAC3F;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,SAAS,EACd,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA0D5B;AA8DD,iDAAiD;AACjD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAcxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,KAAK,EAAE,MAAM,GACZ,SAAS,UAAU,EAAE,CAQvB"}
@@ -0,0 +1,33 @@
1
+ import type { CliConfig } from "../config.js";
2
+ export interface ApiRequestOptions {
3
+ readonly method?: "GET" | "POST" | "DELETE" | "PUT" | "PATCH";
4
+ readonly path: string;
5
+ /** JSON body. If set, content-type is forced to application/json. */
6
+ readonly jsonBody?: unknown;
7
+ /** Headers to merge in. Authorization is set automatically. */
8
+ readonly headers?: Readonly<Record<string, string>>;
9
+ /**
10
+ * Statuses the caller wants to handle itself instead of mapping to
11
+ * a typed error. `launchpad merge` uses this so that 409 codes
12
+ * (review_running, merge_conflict, sha_mismatch, ...) reach the
13
+ * command verb as parsed JSON rather than being swallowed by the
14
+ * shared error mapper. 401/403/404 still throw — they mean the
15
+ * same thing on every endpoint and the typed errors stay useful.
16
+ */
17
+ readonly nonThrowingStatuses?: readonly number[];
18
+ }
19
+ /**
20
+ * GET-style helper that returns a parsed JSON body of type `T`.
21
+ * Throws typed errors for non-2xx + transport failures.
22
+ */
23
+ export declare function apiJson<T>(cfg: CliConfig, opts: ApiRequestOptions, fetcher?: typeof fetch): Promise<T>;
24
+ /**
25
+ * Lower-level helper that returns the raw `Response` after the
26
+ * status check. Used for streaming endpoints (e.g. tarball clone)
27
+ * where buffering the body would defeat the purpose.
28
+ *
29
+ * On non-2xx, drains the body for a short preview, throws a typed
30
+ * error, and the caller never sees the response.
31
+ */
32
+ export declare function apiRaw(cfg: CliConfig, opts: ApiRequestOptions, fetcher?: typeof fetch): Promise<Response>;
33
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/http/api-client.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAC1B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,QAAQ,CAAC,CA2FnB"}
@@ -0,0 +1,31 @@
1
+ /** 401 from the bot. The user's session is bad — re-login is the
2
+ * only fix. The flow layer's LoginRequiredError gets translated
3
+ * to this when the refresh attempt itself returns 401. */
4
+ export declare class UnauthenticatedError extends Error {
5
+ readonly code: "unauthenticated";
6
+ }
7
+ /** 403 — authenticated but not allowed (no role on the app, etc.).
8
+ * The CLI shows this verbatim plus the path so the user knows
9
+ * exactly which call was rejected. */
10
+ export declare class ForbiddenError extends Error {
11
+ readonly code: "forbidden";
12
+ }
13
+ /** 404 — the bot returned not-found. Distinct from UnauthenticatedError
14
+ * so the CLI doesn't suggest re-login when the slug is just unknown. */
15
+ export declare class NotFoundError extends Error {
16
+ readonly code: "not_found";
17
+ }
18
+ /** Any other non-2xx. Carries the upstream status + a short body
19
+ * preview so the CLI can render a meaningful diagnostic without
20
+ * dumping a full HTML page. */
21
+ export declare class ApiError extends Error {
22
+ readonly code: "api_error";
23
+ readonly status: number;
24
+ constructor(message: string, status: number);
25
+ }
26
+ /** Network failure, JSON parse failure, anything that wasn't
27
+ * actually a response. */
28
+ export declare class TransportError extends Error {
29
+ readonly code: "transport_error";
30
+ }
31
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAIA;;2DAE2D;AAC3D,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAU;CAC5C;AAED;;uCAEuC;AACvC,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;CACtC;AAED;yEACyE;AACzE,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;CACtC;AAED;;gCAEgC;AAChC,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED;2BAC2B;AAC3B,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAU;CAC5C"}
@@ -0,0 +1,38 @@
1
+ import { type Manifest } from "./schema.js";
2
+ export type LoadResult = {
3
+ kind: "ok";
4
+ manifest: Manifest;
5
+ } | {
6
+ kind: "file-not-found";
7
+ path: string;
8
+ } | {
9
+ kind: "read-error";
10
+ path: string;
11
+ message: string;
12
+ } | {
13
+ kind: "yaml-parse-error";
14
+ path: string;
15
+ message: string;
16
+ } | {
17
+ kind: "schema-error";
18
+ path: string;
19
+ issues: SchemaIssue[];
20
+ };
21
+ export interface SchemaIssue {
22
+ /** Dotted path into the manifest, e.g. `containers.0.env`. */
23
+ readonly path: string;
24
+ readonly message: string;
25
+ }
26
+ /**
27
+ * Load + parse + validate a manifest from disk. `path` must be
28
+ * absolute; the caller is responsible for CWD resolution.
29
+ */
30
+ export declare function loadManifest(path: string): LoadResult;
31
+ /**
32
+ * Validate a manifest from a pre-loaded YAML string. Exposed for
33
+ * tests and for the future `launchpad pull` flow (which has the
34
+ * text in memory after `git pull` without hitting disk a second
35
+ * time).
36
+ */
37
+ export declare function parseManifest(yamlText: string, path: string): LoadResult;
38
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/manifest/load.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAYrD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAkBxE"}
@@ -0,0 +1,3 @@
1
+ export { APP_TYPES, AUTH_MODES, RUNTIMES, SECRET_SOURCES, MetadataSchema, DeploymentSchema, AccessSchema, ContainerSchema, SecretBindingSchema, SecretsSchema, TARGET_KINDS, PRIMARY_TARGET, TargetSchema, ManifestSchema, } from "@m-kopa/launchpad-engine";
2
+ export type { AppType, AuthMode, Runtime, SecretSource, Metadata, Deployment, Access, Container, SecretBinding, SecretsConfig, TargetKind, Target, Manifest, } from "@m-kopa/launchpad-engine";
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,OAAO,EACP,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,SAAS,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACV,MAAM,EACN,QAAQ,GACT,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=postinstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/postinstall.ts
4
+ import { createRequire } from "node:module";
5
+ function isGlobalInstall() {
6
+ return process.env.npm_config_global === "true";
7
+ }
8
+ function readVersion() {
9
+ try {
10
+ const require2 = createRequire(import.meta.url);
11
+ const pkg = require2("../package.json");
12
+ return typeof pkg.version === "string" ? pkg.version : "(unknown)";
13
+ } catch {
14
+ return "(unknown)";
15
+ }
16
+ }
17
+ function main() {
18
+ if (!isGlobalInstall())
19
+ return;
20
+ const version = readVersion();
21
+ const lines = [
22
+ "",
23
+ `✓ @m-kopa/launchpad-cli v${version} installed.`,
24
+ "",
25
+ "Next steps:",
26
+ " 1. launchpad login authenticate against Cloudflare Access",
27
+ " 2. launchpad skills install install Claude Code skills (/launchpad-deploy, etc.)",
28
+ "",
29
+ "Run `launchpad --help` for the full command list.",
30
+ ""
31
+ ];
32
+ process.stdout.write(`${lines.join(`
33
+ `)}`);
34
+ }
35
+ try {
36
+ main();
37
+ } catch {}
@@ -0,0 +1,19 @@
1
+ export interface EnvParseResult {
2
+ readonly entries: ReadonlyMap<string, string>;
3
+ /** Keys that fail the `UPPER_SNAKE_CASE` shape check used by
4
+ * the manifest's `secrets.bindings[]`. Surfaced so the operator
5
+ * can fix typos before push. */
6
+ readonly invalidNames: readonly string[];
7
+ /** Lines we couldn't parse at all. Empty in the happy path. */
8
+ readonly malformedLines: readonly {
9
+ lineno: number;
10
+ raw: string;
11
+ }[];
12
+ }
13
+ /**
14
+ * Parse a `.env` file's contents into a name → value map.
15
+ * Non-throwing — every failure mode lands on the returned shape
16
+ * so the caller can render a single consolidated error.
17
+ */
18
+ export declare function parseEnv(text: string): EnvParseResult;
19
+ //# sourceMappingURL=env-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-parse.d.ts","sourceRoot":"","sources":["../../src/secrets/env-parse.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C;;qCAEiC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAmCrD"}
@@ -0,0 +1,13 @@
1
+ import { type CliConfig } from "../config.js";
2
+ import type { CliIo, ExitCode } from "../dispatcher.js";
3
+ export interface PushOptions {
4
+ readonly file: string | null;
5
+ readonly env: string | null;
6
+ readonly dryRun: boolean;
7
+ }
8
+ export interface PushDeps {
9
+ readonly config?: CliConfig;
10
+ readonly fetcher?: typeof fetch;
11
+ }
12
+ export declare function runSecretsPush(opts: PushOptions, io: CliIo, deps?: PushDeps): Promise<ExitCode>;
13
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/secrets/push.ts"],"names":[],"mappings":"AAiDA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAW1D,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACjC;AAcD,wBAAsB,cAAc,CAClC,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,QAAa,GAClB,OAAO,CAAC,QAAQ,CAAC,CAqLnB"}
@@ -0,0 +1,19 @@
1
+ import { type CliConfig } from "../config.js";
2
+ import type { CliIo, ExitCode } from "../dispatcher.js";
3
+ export interface PushSetOptions {
4
+ readonly set: string;
5
+ readonly fleetFile: string | null;
6
+ readonly env: string | null;
7
+ readonly yes: boolean;
8
+ }
9
+ export interface StatusSetOptions {
10
+ readonly set: string;
11
+ readonly fleetFile: string | null;
12
+ }
13
+ export interface SetDeps {
14
+ readonly config?: CliConfig;
15
+ readonly fetcher?: typeof fetch;
16
+ }
17
+ export declare function runSecretsStatusSet(opts: StatusSetOptions, io: CliIo, deps?: SetDeps): Promise<ExitCode>;
18
+ export declare function runSecretsPushSet(opts: PushSetOptions, io: CliIo, deps?: SetDeps): Promise<ExitCode>;
19
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/secrets/set.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAU1D,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACjC;AAoHD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CAuCnB;AAKD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,cAAc,EACpB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CA2HnB"}
@@ -0,0 +1,19 @@
1
+ import { type CliConfig } from "../config.js";
2
+ import type { CliIo, ExitCode } from "../dispatcher.js";
3
+ export interface StatusOptions {
4
+ readonly file: string | null;
5
+ /**
6
+ * Optional slug positional (AC0 / sp-st5hw9) — accepted so the arg surface
7
+ * matches `launchpad status [<slug>]` instead of erroring "unknown argument".
8
+ * `secrets status` audits the MANIFEST in the cwd (it needs the declared
9
+ * bindings), so a provided slug must match `metadata.name`; a mismatch is a
10
+ * clear error rather than silently auditing the wrong app.
11
+ */
12
+ readonly slug?: string | null;
13
+ }
14
+ export interface StatusDeps {
15
+ readonly config?: CliConfig;
16
+ readonly fetcher?: typeof fetch;
17
+ }
18
+ export declare function runSecretsStatus(opts: StatusOptions, io: CliIo, deps?: StatusDeps): Promise<ExitCode>;
19
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/secrets/status.ts"],"names":[],"mappings":"AAaA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAW1D,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACjC;AAkBD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,QAAQ,CAAC,CAsEnB"}
@@ -0,0 +1,112 @@
1
+ export type AppLifecycle = "provisioning" | "live" | "failed";
2
+ export type AppRole = "owner" | "editor" | "break_glass" | "none";
3
+ /** One row in `GET /me/apps`. */
4
+ export interface MeAppEntry {
5
+ readonly slug: string;
6
+ readonly name: string;
7
+ readonly description?: string;
8
+ readonly lifecycle: AppLifecycle;
9
+ readonly lifecycleAt?: string;
10
+ readonly lifecycleReason?: string;
11
+ readonly role: AppRole;
12
+ }
13
+ export interface MeAppsResponse {
14
+ readonly apps: readonly MeAppEntry[];
15
+ }
16
+ export type ReviewStatus = "running" | "passed" | "blocked";
17
+ export type ReviewSeverity = "blocker_hard" | "blocker_dismissable" | "warning" | "advisory";
18
+ export interface ReviewFinding {
19
+ readonly id: string;
20
+ readonly source: string;
21
+ readonly severity: ReviewSeverity;
22
+ readonly file?: string;
23
+ readonly line?: number;
24
+ readonly message: string;
25
+ }
26
+ export interface ReviewStatePayload {
27
+ readonly slug: string;
28
+ readonly prNumber: number;
29
+ readonly status: ReviewStatus;
30
+ readonly findings: readonly ReviewFinding[];
31
+ readonly expectedStages: readonly string[];
32
+ readonly reportedStages: readonly string[];
33
+ readonly failedStages: readonly string[];
34
+ readonly createdAt: string;
35
+ readonly lastUpdated: string;
36
+ }
37
+ export interface ReviewResponse {
38
+ readonly review: ReviewStatePayload;
39
+ readonly role: AppRole;
40
+ }
41
+ export interface PrSummary {
42
+ readonly number: number;
43
+ readonly title: string;
44
+ readonly htmlUrl: string;
45
+ readonly headRef: string;
46
+ readonly headSha: string;
47
+ readonly base: string;
48
+ readonly author: string;
49
+ readonly authorAvatarUrl: string | null;
50
+ readonly draft: boolean;
51
+ readonly createdAt: string;
52
+ readonly updatedAt: string;
53
+ }
54
+ export interface PrsListResponse {
55
+ readonly role: AppRole;
56
+ readonly prs: readonly PrSummary[];
57
+ }
58
+ /** `POST /apps/<slug>/merge/<prNumber>` — success body. */
59
+ export interface MergeSuccessResponse {
60
+ readonly merged: true;
61
+ readonly sha: string;
62
+ readonly mergedBy: string;
63
+ readonly selfMerge: boolean;
64
+ }
65
+ /**
66
+ * Env var entry returned by `GET /apps/<slug>/env-vars`. Mirrors
67
+ * `PagesEnvVarEntry` in the bot. `value` is only populated for
68
+ * `plain_text` rows; `secret_text` rows omit it (Cf redacts secret
69
+ * values server-side).
70
+ */
71
+ export interface EnvVarEntry {
72
+ readonly name: string;
73
+ readonly type: "plain_text" | "secret_text";
74
+ readonly value?: string;
75
+ }
76
+ export interface EnvVarsListResponse {
77
+ readonly envVars: readonly EnvVarEntry[];
78
+ }
79
+ /**
80
+ * Pages deployment summary returned by `GET /apps/<slug>/deployments`.
81
+ * Mirrors `PagesDeploymentSummary` in the bot.
82
+ */
83
+ export interface DeploymentSummary {
84
+ readonly id: string;
85
+ readonly created: string;
86
+ readonly modified: string;
87
+ readonly url: string | null;
88
+ readonly environment: "production" | "preview";
89
+ readonly stage: string;
90
+ readonly status: "ok" | "active" | "failure" | "skipped" | "canceled" | "queued" | "building" | "unknown";
91
+ readonly trigger: {
92
+ readonly type: string;
93
+ readonly metadata: Readonly<Record<string, string>>;
94
+ };
95
+ }
96
+ export interface DeploymentsResponse {
97
+ readonly deployments: readonly DeploymentSummary[];
98
+ }
99
+ /** Structured 4xx/5xx envelope from the merge endpoint (and the
100
+ * bot's other endpoints — content-type is always JSON with at
101
+ * least an `error` discriminator). */
102
+ export interface BotErrorEnvelope {
103
+ readonly error: string;
104
+ readonly message?: string;
105
+ /** review_running carries these. */
106
+ readonly reportedStages?: readonly string[];
107
+ readonly expectedStages?: readonly string[];
108
+ /** review_blocked carries these. */
109
+ readonly failedStages?: readonly string[];
110
+ readonly findingCount?: number;
111
+ }
112
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9D,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;AAElE,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;CACtC;AAQD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,qBAAqB,GACrB,SAAS,GACT,UAAU,CAAC;AAEf,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,CAAC;CACpC;AAED,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EACX,IAAI,GACJ,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,CAAC;IACd,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACrD,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACpD;AAED;;uCAEuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,oCAAoC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC"}