@penvhq/launcher 0.9.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { PenvError, ManifestEngine } from '@penvhq/core';
1
+ import { Environment, PenvError, ManifestEngine, PackageKind } from '@penvhq/core';
2
2
 
3
3
  /**
4
4
  * Every byte penv downloads comes through here.
@@ -54,6 +54,10 @@ interface LauncherIo {
54
54
  * `--no-download` and a run with nobody at it are both refused before the first
55
55
  * request, and CI gets `penv install`, which installs what the manifest already
56
56
  * pins rather than choosing what it should.
57
+ *
58
+ * `--local` is the one path with no release behind it: a repository that writes
59
+ * a provider adds the package it already builds. Nothing is fetched and nothing
60
+ * is pinned, so the manifest is not touched — see {@link addLocal}.
57
61
  */
58
62
 
59
63
  interface AddOptions {
@@ -113,6 +117,10 @@ declare function setProviderType(source: string, environment: string, type: stri
113
117
  */
114
118
  /** What an extension's `package.json` tells `add`, and nothing more. */
115
119
  interface ExtensionPackage {
120
+ /** The package's own name, which is what identifies the directory as its own. */
121
+ readonly name: string | undefined;
122
+ /** The package's own version. Only a local add reads it; a release pins the registry's. */
123
+ readonly version: string | undefined;
116
124
  /** A path inside the package to a self-contained declaration file. */
117
125
  readonly types: string | undefined;
118
126
  /** The engine command that finishes setting this provider up, e.g. `cloud login`. */
@@ -129,6 +137,8 @@ interface DeclarationSubject {
129
137
  readonly version: string;
130
138
  /** Recorded in the header: what npm knew about where these bytes came from. */
131
139
  readonly attested: boolean;
140
+ /** The package is this project's own, resolved from it rather than pinned. */
141
+ readonly local?: boolean;
132
142
  }
133
143
  /** The declaration's text: the package's own, or the open shape under its name. */
134
144
  declare function renderDeclaration(subject: DeclarationSubject, shipped?: {
@@ -146,50 +156,6 @@ interface WriteDeclarationOptions extends DeclarationSubject {
146
156
  /** Writes the declaration and answers with the path a message prints. */
147
157
  declare function writeDeclaration(options: WriteDeclarationOptions): string;
148
158
 
149
- /**
150
- * `$PENV_HOME` — the one directory the launcher owns.
151
- *
152
- * Engines and extensions are addressed by exact name and exact version, so a
153
- * machine holds every version any of its projects pins at once and no project's
154
- * command is ever answered by another project's bytes.
155
- */
156
- /** A read-only view of the process environment. */
157
- type Environment = Readonly<Record<string, string | undefined>>;
158
- /** The variable that moves the store off `~/.penv`. */
159
- declare const PENV_HOME_VAR = "PENV_HOME";
160
- /** The two things the store holds, and the directory each lives under. */
161
- type PackageKind = "engines" | "extensions";
162
- /** How the launcher was installed, recorded by the installer that did it. */
163
- declare const HOME_META_FILE = "meta.json";
164
- /** Written beside an installed package: the SSRI of the tarball it came from. */
165
- declare const INTEGRITY_FILE = ".penv-integrity";
166
- /** The update command for a launcher whose installer recorded nothing. */
167
- declare const NPM_UPDATE_COMMAND = "npm install -g @penvhq/launcher";
168
- /** The store, from the environment. `~/.penv` unless `$PENV_HOME` says otherwise. */
169
- declare function penvHome(env: Environment): string;
170
- /**
171
- * Where one exact version lives.
172
- *
173
- * The manifest's grammar already refuses a name or a version that could climb
174
- * out of the store, so the containment check is the second lock rather than the
175
- * first: this function is also reached from `penv add`, where the name is
176
- * whatever the user typed.
177
- *
178
- * Containment is measured against the bucket, not against `$PENV_HOME`. A name
179
- * of `../extensions/x` stays inside the store while landing an engine among the
180
- * extensions, and a store where the two are not separated is a store where the
181
- * kind a caller asked for is not the kind it gets.
182
- */
183
- declare function packageDir(home: string, kind: PackageKind, name: string, version: string): string;
184
- /**
185
- * The command that updates this launcher.
186
- *
187
- * Advisory, so it never throws: a store with no `meta.json`, or one holding
188
- * something unreadable, falls back to the npm form rather than turning a
189
- * manifest-format refusal into a second failure about a metadata file.
190
- */
191
- declare function launcherUpdateCommand(home: string): string;
192
-
193
159
  /**
194
160
  * Handing the command over.
195
161
  *
@@ -313,6 +279,40 @@ declare class AddFlagError extends PenvError {
313
279
  readonly name = "AddFlagError";
314
280
  constructor(flag: string);
315
281
  }
282
+ /** The flag that adds an extension this project builds instead of one a registry publishes. */
283
+ declare const LOCAL_FLAG = "--local";
284
+ /** `--local` asked for something only a published release has. */
285
+ declare class AddLocalFlagError extends PenvError {
286
+ readonly name = "AddLocalFlagError";
287
+ constructor(subject: string);
288
+ }
289
+ /**
290
+ * The extension resolved and is not something penv can import.
291
+ *
292
+ * `add` used to certify resolution and stop there, so a package whose `exports`
293
+ * pointed at TypeScript source got three green checks and failed much later,
294
+ * from an unrelated command. The load check runs here, at the one moment the
295
+ * operator is looking at the provider.
296
+ */
297
+ declare class ExtensionNotImportableError extends PenvError {
298
+ readonly name = "ExtensionNotImportableError";
299
+ constructor(name: string, entry: string | undefined, local: boolean);
300
+ }
301
+ /** The extension imported and threw. Its own failure is the diagnosis. */
302
+ declare class ExtensionUnloadableError extends PenvError {
303
+ readonly name = "ExtensionUnloadableError";
304
+ constructor(name: string, entry: string, detail: string, local: boolean);
305
+ }
306
+ /** `--local` on a package the project does not have. */
307
+ declare class LocalExtensionUnresolvedError extends PenvError {
308
+ readonly name = "LocalExtensionUnresolvedError";
309
+ constructor(name: string, root: string);
310
+ }
311
+ /** `penv add --local` on a machine with nobody at it. */
312
+ declare class AddLocalInCiError extends PenvError {
313
+ readonly name = "AddLocalInCiError";
314
+ constructor(name: string);
315
+ }
316
316
  /** `--registry` with something that is not an https origin. */
317
317
  declare class AddRegistryError extends PenvError {
318
318
  readonly name = "AddRegistryError";
@@ -407,6 +407,29 @@ declare class EngineEntryError extends PenvError {
407
407
  constructor(name: string, version: string, dir: string);
408
408
  }
409
409
 
410
+ /**
411
+ * What the launcher alone knows about `$PENV_HOME`: how the installation that
412
+ * created it updates itself, and what it writes beside an installed package.
413
+ *
414
+ * The store's layout — where `$PENV_HOME` is and where one exact version lives —
415
+ * is `@penvhq/core`'s, because the engine reads the same directories the
416
+ * launcher fills.
417
+ */
418
+ /** How the launcher was installed, recorded by the installer that did it. */
419
+ declare const HOME_META_FILE = "meta.json";
420
+ /** Written beside an installed package: the SSRI of the tarball it came from. */
421
+ declare const INTEGRITY_FILE = ".penv-integrity";
422
+ /** The update command for a launcher whose installer recorded nothing. */
423
+ declare const NPM_UPDATE_COMMAND = "npm install -g @penvhq/launcher";
424
+ /**
425
+ * The command that updates this launcher.
426
+ *
427
+ * Advisory, so it never throws: a store with no `meta.json`, or one holding
428
+ * something unreadable, falls back to the npm form rather than turning a
429
+ * manifest-format refusal into a second failure about a metadata file.
430
+ */
431
+ declare function launcherUpdateCommand(home: string): string;
432
+
410
433
  /**
411
434
  * The one hash penv checks: npm's SSRI, over the tarball bytes.
412
435
  *
@@ -598,4 +621,4 @@ interface ArchiveSubject {
598
621
  /** Every regular file in an npm tarball, `package/` stripped. */
599
622
  declare function readTarball(gzipped: Uint8Array, subject: ArchiveSubject): TarEntry[];
600
623
 
601
- export { AddFlagError, AddNoDownloadError, AddNotInteractiveError, type AddOptions, AddPackageNameError, AddRegistryError, type AddResult, AddSubjectError, ArchiveError, type ArchiveSubject, BUNDLED_ENGINE_PIN, DEFAULT_REGISTRY, DEV_PIN_INTEGRITY, DEV_PIN_VERSION, DeclarationMissingError, DeclarationNotSelfContainedError, type DeclarationSubject, type Delegation, DownloadFailedError, DownloadIntegrityError, ENGINE_BIN, type Engine, EngineEntryError, EnginePinMismatchError, EnginePinUnreleasedError, type Environment, type ExtensionPackage, type Fetcher, HOME_META_FILE, INSTALL_COMMAND, INTEGRITY_FILE, InstallDeclinedError, type InstallOptions, type InstallState, type Installation, type LauncherIo, type LauncherOptions, MIN_PACKAGE_AGE_DAYS, NPM_UPDATE_COMMAND, NoProjectError, OfficialRegistryError, PENV_HOME_VAR, PackageCorruptError, type PackageKind, PackageMissingError, PackageTooYoungError, PackageUnknownError, type Pin, type Project, type ProviderEntry, RegistryUnreadableError, type Release, ReleaseIncompleteError, type ReleaseQuery, type Spawner, TRUST_YOUNG_FLAG, type TarEntry, TrustDeclinedError, TrustPublisherMissingError, TrustReasonMissingError, VersionUnknownError, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packageDir, packumentUrl, penvHome, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, writeDeclaration };
624
+ export { AddFlagError, AddLocalFlagError, AddLocalInCiError, AddNoDownloadError, AddNotInteractiveError, type AddOptions, AddPackageNameError, AddRegistryError, type AddResult, AddSubjectError, ArchiveError, type ArchiveSubject, BUNDLED_ENGINE_PIN, DEFAULT_REGISTRY, DEV_PIN_INTEGRITY, DEV_PIN_VERSION, DeclarationMissingError, DeclarationNotSelfContainedError, type DeclarationSubject, type Delegation, DownloadFailedError, DownloadIntegrityError, ENGINE_BIN, type Engine, EngineEntryError, EnginePinMismatchError, EnginePinUnreleasedError, ExtensionNotImportableError, type ExtensionPackage, ExtensionUnloadableError, type Fetcher, HOME_META_FILE, INSTALL_COMMAND, INTEGRITY_FILE, InstallDeclinedError, type InstallOptions, type InstallState, type Installation, LOCAL_FLAG, type LauncherIo, type LauncherOptions, LocalExtensionUnresolvedError, MIN_PACKAGE_AGE_DAYS, NPM_UPDATE_COMMAND, NoProjectError, OfficialRegistryError, PackageCorruptError, PackageMissingError, PackageTooYoungError, PackageUnknownError, type Pin, type Project, type ProviderEntry, RegistryUnreadableError, type Release, ReleaseIncompleteError, type ReleaseQuery, type Spawner, TRUST_YOUNG_FLAG, type TarEntry, TrustDeclinedError, TrustPublisherMissingError, TrustReasonMissingError, VersionUnknownError, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packumentUrl, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, writeDeclaration };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { PenvError, ManifestEngine } from '@penvhq/core';
1
+ import { Environment, PenvError, ManifestEngine, PackageKind } from '@penvhq/core';
2
2
 
3
3
  /**
4
4
  * Every byte penv downloads comes through here.
@@ -54,6 +54,10 @@ interface LauncherIo {
54
54
  * `--no-download` and a run with nobody at it are both refused before the first
55
55
  * request, and CI gets `penv install`, which installs what the manifest already
56
56
  * pins rather than choosing what it should.
57
+ *
58
+ * `--local` is the one path with no release behind it: a repository that writes
59
+ * a provider adds the package it already builds. Nothing is fetched and nothing
60
+ * is pinned, so the manifest is not touched — see {@link addLocal}.
57
61
  */
58
62
 
59
63
  interface AddOptions {
@@ -113,6 +117,10 @@ declare function setProviderType(source: string, environment: string, type: stri
113
117
  */
114
118
  /** What an extension's `package.json` tells `add`, and nothing more. */
115
119
  interface ExtensionPackage {
120
+ /** The package's own name, which is what identifies the directory as its own. */
121
+ readonly name: string | undefined;
122
+ /** The package's own version. Only a local add reads it; a release pins the registry's. */
123
+ readonly version: string | undefined;
116
124
  /** A path inside the package to a self-contained declaration file. */
117
125
  readonly types: string | undefined;
118
126
  /** The engine command that finishes setting this provider up, e.g. `cloud login`. */
@@ -129,6 +137,8 @@ interface DeclarationSubject {
129
137
  readonly version: string;
130
138
  /** Recorded in the header: what npm knew about where these bytes came from. */
131
139
  readonly attested: boolean;
140
+ /** The package is this project's own, resolved from it rather than pinned. */
141
+ readonly local?: boolean;
132
142
  }
133
143
  /** The declaration's text: the package's own, or the open shape under its name. */
134
144
  declare function renderDeclaration(subject: DeclarationSubject, shipped?: {
@@ -146,50 +156,6 @@ interface WriteDeclarationOptions extends DeclarationSubject {
146
156
  /** Writes the declaration and answers with the path a message prints. */
147
157
  declare function writeDeclaration(options: WriteDeclarationOptions): string;
148
158
 
149
- /**
150
- * `$PENV_HOME` — the one directory the launcher owns.
151
- *
152
- * Engines and extensions are addressed by exact name and exact version, so a
153
- * machine holds every version any of its projects pins at once and no project's
154
- * command is ever answered by another project's bytes.
155
- */
156
- /** A read-only view of the process environment. */
157
- type Environment = Readonly<Record<string, string | undefined>>;
158
- /** The variable that moves the store off `~/.penv`. */
159
- declare const PENV_HOME_VAR = "PENV_HOME";
160
- /** The two things the store holds, and the directory each lives under. */
161
- type PackageKind = "engines" | "extensions";
162
- /** How the launcher was installed, recorded by the installer that did it. */
163
- declare const HOME_META_FILE = "meta.json";
164
- /** Written beside an installed package: the SSRI of the tarball it came from. */
165
- declare const INTEGRITY_FILE = ".penv-integrity";
166
- /** The update command for a launcher whose installer recorded nothing. */
167
- declare const NPM_UPDATE_COMMAND = "npm install -g @penvhq/launcher";
168
- /** The store, from the environment. `~/.penv` unless `$PENV_HOME` says otherwise. */
169
- declare function penvHome(env: Environment): string;
170
- /**
171
- * Where one exact version lives.
172
- *
173
- * The manifest's grammar already refuses a name or a version that could climb
174
- * out of the store, so the containment check is the second lock rather than the
175
- * first: this function is also reached from `penv add`, where the name is
176
- * whatever the user typed.
177
- *
178
- * Containment is measured against the bucket, not against `$PENV_HOME`. A name
179
- * of `../extensions/x` stays inside the store while landing an engine among the
180
- * extensions, and a store where the two are not separated is a store where the
181
- * kind a caller asked for is not the kind it gets.
182
- */
183
- declare function packageDir(home: string, kind: PackageKind, name: string, version: string): string;
184
- /**
185
- * The command that updates this launcher.
186
- *
187
- * Advisory, so it never throws: a store with no `meta.json`, or one holding
188
- * something unreadable, falls back to the npm form rather than turning a
189
- * manifest-format refusal into a second failure about a metadata file.
190
- */
191
- declare function launcherUpdateCommand(home: string): string;
192
-
193
159
  /**
194
160
  * Handing the command over.
195
161
  *
@@ -313,6 +279,40 @@ declare class AddFlagError extends PenvError {
313
279
  readonly name = "AddFlagError";
314
280
  constructor(flag: string);
315
281
  }
282
+ /** The flag that adds an extension this project builds instead of one a registry publishes. */
283
+ declare const LOCAL_FLAG = "--local";
284
+ /** `--local` asked for something only a published release has. */
285
+ declare class AddLocalFlagError extends PenvError {
286
+ readonly name = "AddLocalFlagError";
287
+ constructor(subject: string);
288
+ }
289
+ /**
290
+ * The extension resolved and is not something penv can import.
291
+ *
292
+ * `add` used to certify resolution and stop there, so a package whose `exports`
293
+ * pointed at TypeScript source got three green checks and failed much later,
294
+ * from an unrelated command. The load check runs here, at the one moment the
295
+ * operator is looking at the provider.
296
+ */
297
+ declare class ExtensionNotImportableError extends PenvError {
298
+ readonly name = "ExtensionNotImportableError";
299
+ constructor(name: string, entry: string | undefined, local: boolean);
300
+ }
301
+ /** The extension imported and threw. Its own failure is the diagnosis. */
302
+ declare class ExtensionUnloadableError extends PenvError {
303
+ readonly name = "ExtensionUnloadableError";
304
+ constructor(name: string, entry: string, detail: string, local: boolean);
305
+ }
306
+ /** `--local` on a package the project does not have. */
307
+ declare class LocalExtensionUnresolvedError extends PenvError {
308
+ readonly name = "LocalExtensionUnresolvedError";
309
+ constructor(name: string, root: string);
310
+ }
311
+ /** `penv add --local` on a machine with nobody at it. */
312
+ declare class AddLocalInCiError extends PenvError {
313
+ readonly name = "AddLocalInCiError";
314
+ constructor(name: string);
315
+ }
316
316
  /** `--registry` with something that is not an https origin. */
317
317
  declare class AddRegistryError extends PenvError {
318
318
  readonly name = "AddRegistryError";
@@ -407,6 +407,29 @@ declare class EngineEntryError extends PenvError {
407
407
  constructor(name: string, version: string, dir: string);
408
408
  }
409
409
 
410
+ /**
411
+ * What the launcher alone knows about `$PENV_HOME`: how the installation that
412
+ * created it updates itself, and what it writes beside an installed package.
413
+ *
414
+ * The store's layout — where `$PENV_HOME` is and where one exact version lives —
415
+ * is `@penvhq/core`'s, because the engine reads the same directories the
416
+ * launcher fills.
417
+ */
418
+ /** How the launcher was installed, recorded by the installer that did it. */
419
+ declare const HOME_META_FILE = "meta.json";
420
+ /** Written beside an installed package: the SSRI of the tarball it came from. */
421
+ declare const INTEGRITY_FILE = ".penv-integrity";
422
+ /** The update command for a launcher whose installer recorded nothing. */
423
+ declare const NPM_UPDATE_COMMAND = "npm install -g @penvhq/launcher";
424
+ /**
425
+ * The command that updates this launcher.
426
+ *
427
+ * Advisory, so it never throws: a store with no `meta.json`, or one holding
428
+ * something unreadable, falls back to the npm form rather than turning a
429
+ * manifest-format refusal into a second failure about a metadata file.
430
+ */
431
+ declare function launcherUpdateCommand(home: string): string;
432
+
410
433
  /**
411
434
  * The one hash penv checks: npm's SSRI, over the tarball bytes.
412
435
  *
@@ -598,4 +621,4 @@ interface ArchiveSubject {
598
621
  /** Every regular file in an npm tarball, `package/` stripped. */
599
622
  declare function readTarball(gzipped: Uint8Array, subject: ArchiveSubject): TarEntry[];
600
623
 
601
- export { AddFlagError, AddNoDownloadError, AddNotInteractiveError, type AddOptions, AddPackageNameError, AddRegistryError, type AddResult, AddSubjectError, ArchiveError, type ArchiveSubject, BUNDLED_ENGINE_PIN, DEFAULT_REGISTRY, DEV_PIN_INTEGRITY, DEV_PIN_VERSION, DeclarationMissingError, DeclarationNotSelfContainedError, type DeclarationSubject, type Delegation, DownloadFailedError, DownloadIntegrityError, ENGINE_BIN, type Engine, EngineEntryError, EnginePinMismatchError, EnginePinUnreleasedError, type Environment, type ExtensionPackage, type Fetcher, HOME_META_FILE, INSTALL_COMMAND, INTEGRITY_FILE, InstallDeclinedError, type InstallOptions, type InstallState, type Installation, type LauncherIo, type LauncherOptions, MIN_PACKAGE_AGE_DAYS, NPM_UPDATE_COMMAND, NoProjectError, OfficialRegistryError, PENV_HOME_VAR, PackageCorruptError, type PackageKind, PackageMissingError, PackageTooYoungError, PackageUnknownError, type Pin, type Project, type ProviderEntry, RegistryUnreadableError, type Release, ReleaseIncompleteError, type ReleaseQuery, type Spawner, TRUST_YOUNG_FLAG, type TarEntry, TrustDeclinedError, TrustPublisherMissingError, TrustReasonMissingError, VersionUnknownError, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packageDir, packumentUrl, penvHome, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, writeDeclaration };
624
+ export { AddFlagError, AddLocalFlagError, AddLocalInCiError, AddNoDownloadError, AddNotInteractiveError, type AddOptions, AddPackageNameError, AddRegistryError, type AddResult, AddSubjectError, ArchiveError, type ArchiveSubject, BUNDLED_ENGINE_PIN, DEFAULT_REGISTRY, DEV_PIN_INTEGRITY, DEV_PIN_VERSION, DeclarationMissingError, DeclarationNotSelfContainedError, type DeclarationSubject, type Delegation, DownloadFailedError, DownloadIntegrityError, ENGINE_BIN, type Engine, EngineEntryError, EnginePinMismatchError, EnginePinUnreleasedError, ExtensionNotImportableError, type ExtensionPackage, ExtensionUnloadableError, type Fetcher, HOME_META_FILE, INSTALL_COMMAND, INTEGRITY_FILE, InstallDeclinedError, type InstallOptions, type InstallState, type Installation, LOCAL_FLAG, type LauncherIo, type LauncherOptions, LocalExtensionUnresolvedError, MIN_PACKAGE_AGE_DAYS, NPM_UPDATE_COMMAND, NoProjectError, OfficialRegistryError, PackageCorruptError, PackageMissingError, PackageTooYoungError, PackageUnknownError, type Pin, type Project, type ProviderEntry, RegistryUnreadableError, type Release, ReleaseIncompleteError, type ReleaseQuery, type Spawner, TRUST_YOUNG_FLAG, type TarEntry, TrustDeclinedError, TrustPublisherMissingError, TrustReasonMissingError, VersionUnknownError, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packumentUrl, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, writeDeclaration };
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import {
2
2
  AddFlagError,
3
+ AddLocalFlagError,
4
+ AddLocalInCiError,
3
5
  AddNoDownloadError,
4
6
  AddNotInteractiveError,
5
7
  AddPackageNameError,
@@ -18,15 +20,18 @@ import {
18
20
  EngineEntryError,
19
21
  EnginePinMismatchError,
20
22
  EnginePinUnreleasedError,
23
+ ExtensionNotImportableError,
24
+ ExtensionUnloadableError,
21
25
  HOME_META_FILE,
22
26
  INSTALL_COMMAND,
23
27
  INTEGRITY_FILE,
24
28
  InstallDeclinedError,
29
+ LOCAL_FLAG,
30
+ LocalExtensionUnresolvedError,
25
31
  MIN_PACKAGE_AGE_DAYS,
26
32
  NPM_UPDATE_COMMAND,
27
33
  NoProjectError,
28
34
  OfficialRegistryError,
29
- PENV_HOME_VAR,
30
35
  PackageCorruptError,
31
36
  PackageMissingError,
32
37
  PackageTooYoungError,
@@ -52,9 +57,7 @@ import {
52
57
  integrityOf,
53
58
  launcherUpdateCommand,
54
59
  nodeSpawner,
55
- packageDir,
56
60
  packumentUrl,
57
- penvHome,
58
61
  readExtensionPackage,
59
62
  readProviderEntries,
60
63
  readTarball,
@@ -64,9 +67,11 @@ import {
64
67
  setProviderType,
65
68
  tarballUrl,
66
69
  writeDeclaration
67
- } from "./chunk-Q27F7QYT.js";
70
+ } from "./chunk-BNUZ52VN.js";
68
71
  export {
69
72
  AddFlagError,
73
+ AddLocalFlagError,
74
+ AddLocalInCiError,
70
75
  AddNoDownloadError,
71
76
  AddNotInteractiveError,
72
77
  AddPackageNameError,
@@ -85,15 +90,18 @@ export {
85
90
  EngineEntryError,
86
91
  EnginePinMismatchError,
87
92
  EnginePinUnreleasedError,
93
+ ExtensionNotImportableError,
94
+ ExtensionUnloadableError,
88
95
  HOME_META_FILE,
89
96
  INSTALL_COMMAND,
90
97
  INTEGRITY_FILE,
91
98
  InstallDeclinedError,
99
+ LOCAL_FLAG,
100
+ LocalExtensionUnresolvedError,
92
101
  MIN_PACKAGE_AGE_DAYS,
93
102
  NPM_UPDATE_COMMAND,
94
103
  NoProjectError,
95
104
  OfficialRegistryError,
96
- PENV_HOME_VAR,
97
105
  PackageCorruptError,
98
106
  PackageMissingError,
99
107
  PackageTooYoungError,
@@ -119,9 +127,7 @@ export {
119
127
  integrityOf,
120
128
  launcherUpdateCommand,
121
129
  nodeSpawner,
122
- packageDir,
123
130
  packumentUrl,
124
- penvHome,
125
131
  readExtensionPackage,
126
132
  readProviderEntries,
127
133
  readTarball,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@penvhq/launcher",
3
- "version": "0.9.4",
3
+ "version": "0.10.0",
4
4
  "description": "The stable penv launcher: it verifies the engine your project pins and hands over the command.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,8 +22,8 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "zod": "4.4.3",
25
- "@penvhq/cli": "0.9.4",
26
- "@penvhq/core": "0.9.4"
25
+ "@penvhq/cli": "0.10.0",
26
+ "@penvhq/core": "0.10.0"
27
27
  },
28
28
  "scripts": {
29
29
  "build": "tsup"