@hype-stack/cli 0.1.0 → 0.2.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.
Files changed (95) hide show
  1. package/dist/cli-B_p3GdS8.js +4845 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/commands/compose.d.ts +16 -0
  4. package/dist/commands/compose.d.ts.map +1 -0
  5. package/dist/commands/create.d.ts +1 -1
  6. package/dist/commands/create.d.ts.map +1 -1
  7. package/dist/commands/init.d.ts +24 -2
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/install-helpers.d.ts +41 -0
  10. package/dist/commands/install-helpers.d.ts.map +1 -0
  11. package/dist/commands/login.d.ts +2 -0
  12. package/dist/commands/login.d.ts.map +1 -0
  13. package/dist/commands/logout.d.ts +2 -0
  14. package/dist/commands/logout.d.ts.map +1 -0
  15. package/dist/commands/template.d.ts +13 -0
  16. package/dist/commands/template.d.ts.map +1 -0
  17. package/dist/config/bin.d.ts.map +1 -0
  18. package/dist/config/bin.js +2439 -0
  19. package/dist/config/env.d.ts +8 -0
  20. package/dist/config/env.d.ts.map +1 -0
  21. package/dist/constants/constants.d.ts +58 -0
  22. package/dist/constants/constants.d.ts.map +1 -0
  23. package/dist/constants/themes.d.ts +40 -0
  24. package/dist/constants/themes.d.ts.map +1 -0
  25. package/dist/core/access-prompts.d.ts +15 -0
  26. package/dist/core/access-prompts.d.ts.map +1 -0
  27. package/dist/core/apply-theme.d.ts +17 -0
  28. package/dist/core/apply-theme.d.ts.map +1 -0
  29. package/dist/core/auth-api.d.ts +9 -0
  30. package/dist/core/auth-api.d.ts.map +1 -0
  31. package/dist/core/auth-store.d.ts +16 -0
  32. package/dist/core/auth-store.d.ts.map +1 -0
  33. package/dist/core/client.d.ts +2 -0
  34. package/dist/core/client.d.ts.map +1 -0
  35. package/dist/core/clone.d.ts.map +1 -1
  36. package/dist/core/codegen.d.ts +18 -0
  37. package/dist/core/codegen.d.ts.map +1 -0
  38. package/dist/core/codemods.d.ts +58 -0
  39. package/dist/core/codemods.d.ts.map +1 -0
  40. package/dist/core/device.d.ts +3 -0
  41. package/dist/core/device.d.ts.map +1 -0
  42. package/dist/core/editor-config.d.ts +1 -1
  43. package/dist/core/editor-config.d.ts.map +1 -1
  44. package/dist/core/env-files.d.ts +2 -0
  45. package/dist/core/env-files.d.ts.map +1 -0
  46. package/dist/core/installer.d.ts +104 -0
  47. package/dist/core/installer.d.ts.map +1 -0
  48. package/dist/core/license.d.ts +7 -0
  49. package/dist/core/license.d.ts.map +1 -0
  50. package/dist/core/login.d.ts +13 -0
  51. package/dist/core/login.d.ts.map +1 -0
  52. package/dist/core/npm-deps.d.ts +32 -0
  53. package/dist/core/npm-deps.d.ts.map +1 -0
  54. package/dist/core/open-browser.d.ts +2 -0
  55. package/dist/core/open-browser.d.ts.map +1 -0
  56. package/dist/core/pack-categories.d.ts +40 -0
  57. package/dist/core/pack-categories.d.ts.map +1 -0
  58. package/dist/core/post-clone.d.ts.map +1 -1
  59. package/dist/core/post-setup.d.ts +6 -0
  60. package/dist/core/post-setup.d.ts.map +1 -0
  61. package/dist/core/readme.d.ts +10 -0
  62. package/dist/core/readme.d.ts.map +1 -0
  63. package/dist/core/registry.d.ts +35 -0
  64. package/dist/core/registry.d.ts.map +1 -0
  65. package/dist/core/resolve.d.ts +44 -0
  66. package/dist/core/resolve.d.ts.map +1 -0
  67. package/dist/core/stack-config.d.ts +3 -1
  68. package/dist/core/stack-config.d.ts.map +1 -1
  69. package/dist/core/templates.d.ts +15 -0
  70. package/dist/core/templates.d.ts.map +1 -0
  71. package/dist/core/tracking.d.ts +9 -0
  72. package/dist/core/tracking.d.ts.map +1 -0
  73. package/dist/core/variants.d.ts +47 -0
  74. package/dist/core/variants.d.ts.map +1 -0
  75. package/dist/index.d.ts +7 -5
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +2 -2
  78. package/dist/themes.js +833 -0
  79. package/dist/types/types.d.ts +303 -0
  80. package/dist/types/types.d.ts.map +1 -0
  81. package/dist/ui/banner.d.ts.map +1 -1
  82. package/dist/ui/logger.d.ts.map +1 -1
  83. package/dist/ui/theme.d.ts +13 -0
  84. package/dist/ui/theme.d.ts.map +1 -1
  85. package/package.json +37 -3
  86. package/dist/bin.d.ts.map +0 -1
  87. package/dist/bin.js +0 -5
  88. package/dist/cli-B_f7CCee.js +0 -548
  89. package/dist/commands/add.d.ts +0 -2
  90. package/dist/commands/add.d.ts.map +0 -1
  91. package/dist/constants.d.ts +0 -30
  92. package/dist/constants.d.ts.map +0 -1
  93. package/dist/types.d.ts +0 -23
  94. package/dist/types.d.ts.map +0 -1
  95. /package/dist/{bin.d.ts → config/bin.d.ts} +0 -0
@@ -0,0 +1,35 @@
1
+ import { PackAuthorizationMap, PackDownloadResult, PackListItem, PackManifest, StackConfig, StackPaths } from '../types/types.js';
2
+ /**
3
+ * Fetch a pack manifest from the backend. The registry is NEVER read from disk by the CLI - all
4
+ * pack content comes through the API so paid packs stay behind the license gate.
5
+ */
6
+ export declare function loadPackManifest(packName: string): Promise<PackManifest>;
7
+ /**
8
+ * Download a pack's files from the backend into a fresh temp directory.
9
+ *
10
+ * For paid packs the backend authorizes before sending a single byte, via either a logged-in CLI
11
+ * token (browser login) or a license key (CI). There is no way to install a paid pack without
12
+ * access. The caller is responsible for removing the returned `packDir` once installation finishes.
13
+ */
14
+ export declare function downloadPack(packName: string, auth?: {
15
+ licenseKey?: string | null;
16
+ token?: string | null;
17
+ }): Promise<PackDownloadResult>;
18
+ export declare function resolveTargetPath(target: string, paths: StackPaths, projectRoot: string): string;
19
+ export declare function resolveSourcePath(source: string, packDir: string): string;
20
+ export declare function checkDependencies(manifest: PackManifest, installedPacks: string[]): {
21
+ satisfied: boolean;
22
+ missing: string[];
23
+ };
24
+ export declare function isPackInstalled(packName: string, config: StackConfig): boolean;
25
+ export declare function fetchPackList(): Promise<PackListItem[]>;
26
+ /**
27
+ * Classify a set of packs as owned or locked for the compose picker. This is a non-mutating
28
+ * pre-flight check: the backend never serves source or touches download counters here, it only
29
+ * reports access so the CLI can render free/owned/paid states and gate the upsell flow.
30
+ */
31
+ export declare function authorizePacks(packNames: string[], auth?: {
32
+ token?: string | null;
33
+ key?: string | null;
34
+ }): Promise<PackAuthorizationMap>;
35
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,UAAU,EACX,MAAM,mBAAmB,CAAC;AAc3B;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB9E;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAC/D,OAAO,CAAC,kBAAkB,CAAC,CA4C7B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGhG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,EAAE,GACvB;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAG3C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAE9E;AAOD,wBAAsB,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAQ7D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GACxD,OAAO,CAAC,oBAAoB,CAAC,CAwB/B"}
@@ -0,0 +1,44 @@
1
+ import { PackListItem } from '../types/types.js';
2
+ export interface PackNode {
3
+ name: string;
4
+ dependencies: string[];
5
+ }
6
+ export type PackGraph = Map<string, PackNode>;
7
+ /** Build a dependency graph from the pack list returned by the backend. */
8
+ export declare function buildPackGraph(packs: PackListItem[]): PackGraph;
9
+ /**
10
+ * Topologically order a single pack and its transitive dependencies, dependencies first.
11
+ * Packs already in `resolved` are skipped. Throws on a circular dependency or an unknown pack.
12
+ * Mirrors the registry's `resolveDependencyOrder` so the CLI installs in the same order the
13
+ * dev sandbox does.
14
+ */
15
+ export declare function resolveDependencyOrder(name: string, graph: PackGraph, resolved?: Set<string>): string[];
16
+ export interface InstallPlan {
17
+ /** Packs to install, dependencies first, with already-installed packs removed. */
18
+ order: string[];
19
+ /** Selected packs that are already installed (nothing to do for them). */
20
+ alreadyInstalled: string[];
21
+ }
22
+ /**
23
+ * Resolve the full install order for a selection of packs. Pulls in transitive dependencies,
24
+ * removes packs already present in the project, and deduplicates shared dependencies.
25
+ */
26
+ export declare function resolveInstallPlan(selected: string[], graph: PackGraph, installed?: string[]): InstallPlan;
27
+ export interface AccessPartition {
28
+ /** Packs from the order that can be installed (not locked, no locked dependency). */
29
+ installable: string[];
30
+ /** Packs that cannot install because they, or one of their dependencies, is locked. */
31
+ blocked: string[];
32
+ }
33
+ /**
34
+ * Split an install order into what can be installed now versus what is blocked. A pack is blocked
35
+ * if it is locked (paid and unowned), or if any of its not-yet-installed dependencies is blocked.
36
+ * Because `order` is dependency-first, a single forward pass is enough.
37
+ */
38
+ export declare function partitionByAccess(options: {
39
+ order: string[];
40
+ graph: PackGraph;
41
+ isLocked: (name: string) => boolean;
42
+ installed?: string[];
43
+ }): AccessPartition;
44
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/core/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE9C,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,SAAS,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,MAAM,EAAE,CA0BlH;AAED,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,WAAW,CAkB9G;AAED,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uFAAuF;IACvF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,eAAe,CAiBlB"}
@@ -1,9 +1,11 @@
1
- import { DetectedWorkspace, StackConfig } from '../types.js';
1
+ import { DetectedWorkspace, StackConfig, StackPaths } from '../types/types.js';
2
2
  export declare function loadStackConfig(cwd: string): Promise<StackConfig | null>;
3
3
  export declare function hasStackConfig(cwd: string): Promise<boolean>;
4
4
  export declare function writeStackConfig(cwd: string, config: StackConfig): Promise<void>;
5
5
  export declare function detectWorkspace(cwd: string): Promise<DetectedWorkspace>;
6
+ export declare function getDefaultPaths(workspace: DetectedWorkspace): StackPaths;
6
7
  export declare function createStackConfig(name: string, workspace: DetectedWorkspace): StackConfig;
7
8
  export declare function ensureStackConfig(cwd: string): Promise<StackConfig | null>;
8
9
  export declare function isHypeStackProject(cwd: string): Promise<boolean>;
10
+ export declare function resolvePathTemplate(template: string, paths: StackPaths): string;
9
11
  //# sourceMappingURL=stack-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stack-config.d.ts","sourceRoot":"","sources":["../../src/core/stack-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlE,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAG9E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtF;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAO7E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,WAAW,CAQzF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMhF;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOtE"}
1
+ {"version":3,"file":"stack-config.d.ts","sourceRoot":"","sources":["../../src/core/stack-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpF,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAG9E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtF;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAO7E;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAqCxE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,WAAW,CAWzF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMhF;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOtE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAY/E"}
@@ -0,0 +1,15 @@
1
+ import { TemplateDownloadResult, TemplateListItem, TemplateManifest } from '../types/types.js';
2
+ /** Fetch every template the marketplace offers, with slot/variant metadata for the compose picker. */
3
+ export declare function fetchTemplateList(): Promise<TemplateListItem[]>;
4
+ /** Fetch a single template's manifest (override files + codemod wiring). */
5
+ export declare function fetchTemplateManifest(templateId: string): Promise<TemplateManifest>;
6
+ /**
7
+ * Download a template's override files into a fresh temp directory. Like pack
8
+ * downloads, paid templates are authorized before a byte is sent, via a CLI
9
+ * token or license key. The caller removes `templateDir` when done.
10
+ */
11
+ export declare function downloadTemplate(templateId: string, auth?: {
12
+ licenseKey?: string | null;
13
+ token?: string | null;
14
+ }): Promise<TemplateDownloadResult>;
15
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAkBpG,sGAAsG;AACtG,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAMrE;AAED,4EAA4E;AAC5E,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgBzF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAC/D,OAAO,CAAC,sBAAsB,CAAC,CA4CjC"}
@@ -0,0 +1,9 @@
1
+ export type CliTrackEvent = "project_create";
2
+ /**
3
+ * Report a CLI lifecycle event to the backend, fire-and-forget. This never throws
4
+ * and never blocks the command on failure: the `create` command is otherwise fully
5
+ * offline, so a telemetry hiccup (no network, server down) must stay invisible. If
6
+ * the user is logged in, the stored token attributes the event to them.
7
+ */
8
+ export declare function trackCliEvent(event: CliTrackEvent): Promise<void>;
9
+ //# sourceMappingURL=tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../src/core/tracking.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBvE"}
@@ -0,0 +1,47 @@
1
+ import { PackListItem, TemplateSlot } from '../types/types.js';
2
+ /**
3
+ * Resolved variant choices for a template's slots, keyed by family id. Built
4
+ * from the template's slots plus the user's picks (or the slot defaults). The
5
+ * CLI uses this to swap a pack's same-family dependencies for the chosen
6
+ * variant before building the install graph, so e.g. a layout that declares a
7
+ * dependency on `starter-saas-workos` still resolves when the user picks
8
+ * `starter-saas-better-auth`.
9
+ */
10
+ export interface VariantContext {
11
+ /** family id -> chosen pack name */
12
+ chosen: Map<string, string>;
13
+ /** pack name -> family id (only packs that are members of a swappable family) */
14
+ familyOf: Map<string, string>;
15
+ }
16
+ /**
17
+ * Build the variant context from a template's slots and the user's per-family
18
+ * choices. Missing choices fall back to the slot's default variant.
19
+ */
20
+ export declare function buildVariantContext(slots: TemplateSlot[], choices?: Record<string, string>): VariantContext;
21
+ /**
22
+ * Expand a template into the concrete pack names to install: one chosen variant
23
+ * per slot, plus the template's fixed feature packs. Order is slots first (so
24
+ * starters/layouts land before features in the resolved plan), matching how the
25
+ * compose picker groups them.
26
+ */
27
+ export declare function expandTemplate(slots: TemplateSlot[], fixedPacks: string[], ctx: VariantContext): string[];
28
+ /** Swap a pack for the chosen variant of its family, or return it unchanged when it is not in a family. */
29
+ export declare function substitutePack(pack: string, ctx: VariantContext): string;
30
+ /**
31
+ * Build a {@link VariantContext} from a pack list and the user's selection, so the plain
32
+ * `compose` flow (which has no template slots) can still remap same-family dependencies to
33
+ * the chosen variant. `familyOf` covers every pack the backend flagged as a family member;
34
+ * `chosen` records the single selected variant per family. A family with no selection, or with
35
+ * more than one selected variant, is left out of `chosen` so its dependency edges stay as
36
+ * authored (the default is pulled when nothing is chosen, and an explicit multi-variant
37
+ * selection is respected rather than silently collapsed).
38
+ */
39
+ export declare function buildVariantContextFromPacks(packs: PackListItem[], selected: string[]): VariantContext;
40
+ /**
41
+ * Rewrite a pack list so every same-family dependency points at the chosen
42
+ * variant. Returns new items; the input is not mutated. The pack names
43
+ * themselves are left alone (the selected list already uses the chosen
44
+ * variants via `expandTemplate`), only their `dependencies` edges are remapped.
45
+ */
46
+ export declare function substitutePackList(packs: PackListItem[], ctx: VariantContext): PackListItem[];
47
+ //# sourceMappingURL=variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../src/core/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,cAAc,CAa/G;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAGzG;AAED,2GAA2G;AAC3G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAIxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAmBtG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG,YAAY,EAAE,CAK7F"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export { createProgram } from './cli.js';
2
- export { createCommand } from './commands/create.js';
3
- export { initCommand, ensureInit } from './commands/init.js';
4
- export { addCommand } from './commands/add.js';
5
- export type { StackConfig, CreateOptions, InitOptions, DetectedWorkspace, CodeEditor } from './types.js';
1
+ export { createProgram } from './cli';
2
+ export { createCommand } from './commands/create';
3
+ export { initCommand, ensureInit } from './commands/init';
4
+ export { composeCommand } from './commands/compose';
5
+ export { loginCommand } from './commands/login';
6
+ export { logoutCommand } from './commands/logout';
7
+ export type { StackConfig, CreateOptions, InitOptions, DetectedWorkspace, CodeEditor, StackPaths, AppPaths, PackManifest, PackFile, PackTier, FileStrategy, PackValidationResult, PackListItem, PackAuthorization, PackAuthorizationMap, ComposeOptions, } from './types/types';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "./cli-B_f7CCee.js";
2
- export { n as addCommand, e as createCommand, i as createProgram, r as ensureInit, t as initCommand };
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./cli-B_p3GdS8.js";
2
+ export { t as composeCommand, a as createCommand, o as createProgram, e as ensureInit, r as initCommand, i as loginCommand, n as logoutCommand };