@penvhq/launcher 0.11.0 → 0.13.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
@@ -51,10 +51,13 @@ interface LauncherIo {
51
51
  * is two committed files with no runtime in them: the manifest entry, and a
52
52
  * type-only declaration.
53
53
  *
54
- * Because those two files are committed, `add` is a decision and needs a person:
55
- * `--no-download` and a run with nobody at it are both refused before the first
56
- * request, and CI gets `penv install`, which installs what the manifest already
57
- * pins rather than choosing what it should.
54
+ * `add` refuses a run with nobody at it only when it has something to ask. The
55
+ * questions are known from the package name before anything is fetched, and for
56
+ * `@penvhq/*` there are none so the gate used to refuse a run that would have
57
+ * been silent. What cannot be answered unattended is the trust ceremony, whose
58
+ * one field is a sentence about why a stranger's code is trusted; `--yes` says
59
+ * nobody is here to be asked, so it cannot answer that either. `--no-download`
60
+ * is refused whatever the package, because there is nothing to pin without it.
58
61
  *
59
62
  * `--local` is the one path with no release behind it: a repository that writes
60
63
  * a provider adds the package it already builds. Nothing is fetched and nothing
@@ -365,17 +368,17 @@ declare class AddNoDownloadError extends PenvError {
365
368
  constructor(name: string);
366
369
  }
367
370
  /**
368
- * `penv add` on a machine with nobody at it.
371
+ * `penv add` with a question and nobody to answer it.
369
372
  *
370
- * It is refused everywhere, not only for the packages that pay the trust
371
- * ceremony: what `add` writes is two committed files, and a pipeline that
372
- * rewrites the manifest it was handed is a pipeline choosing which bytes the
373
- * project runs. `penv install` is the command CI has, and it installs exactly
374
- * what a person already decided.
373
+ * Only the trust ceremony reaches here. It used to refuse every unattended add,
374
+ * including an `@penvhq/*` one that asks nothing at all a gate stopping a run
375
+ * that would have been silent. What no flag can supply is the ceremony's one
376
+ * field: a sentence about why a stranger's code is trusted, which is why
377
+ * `--yes` does not answer it either.
375
378
  */
376
- declare class AddNotInteractiveError extends PenvError {
377
- readonly name = "AddNotInteractiveError";
378
- constructor(name: string);
379
+ declare class AddTrustUnattendedError extends PenvError {
380
+ readonly name = "AddTrustUnattendedError";
381
+ constructor(name: string, ceremony: string);
379
382
  }
380
383
  /** The trust ceremony was declined. Nothing was installed or recorded. */
381
384
  declare class TrustDeclinedError extends PenvError {
@@ -449,10 +452,12 @@ declare class UpgradeDeclinedError extends PenvError {
449
452
  *
450
453
  * The dependency moves before the manifest for exactly this reason: an upgrade
451
454
  * that cannot finish leaves a project pinning the engine it was already running.
455
+ * The remedy is never the command that just failed — that is the one instruction
456
+ * known not to work. The manager printed why; that line is where to look.
452
457
  */
453
458
  declare class UpgradeInstallFailedError extends PenvError {
454
459
  readonly name = "UpgradeInstallFailedError";
455
- constructor(command: string);
460
+ constructor(manager: string, version: string);
456
461
  }
457
462
  /** An installed directory with nothing runnable in it. */
458
463
  declare class EngineEntryError extends PenvError {
@@ -688,11 +693,14 @@ declare function readTarball(gzipped: Uint8Array, subject: ArchiveSubject): TarE
688
693
  * whole purpose is that its bytes are verified, and a mistyped character came
689
694
  * back as a supply-chain check failing closed.
690
695
  *
691
- * Two committed files move: the manifest's engine pin and the project's
692
- * `@penvhq/penv` dependency, at the same exact version. They move together or
693
- * not at all one consent covers both, and the dependency lands first, so a
694
- * package manager that refuses leaves a project still pinning the engine it was
695
- * already running.
696
+ * The manifest's engine pin and the project's `@penvhq/penv` dependency move
697
+ * together, at the same exact version. In a workspace that dependency is plural
698
+ * a package declaring its own `@penvhq/penv` is a second bridge running under
699
+ * the pin, and one repository ran the 0.8 one under a 0.11 manifest for three
700
+ * releases because `upgrade` looked only at the root. Every `package.json` that
701
+ * declares it is in the one diff, and they move together or not at all: the
702
+ * dependencies land first, so a package manager that refuses leaves a project
703
+ * still pinning the engine it was already running.
696
704
  *
697
705
  * Extensions are not touched. Each carries its own pin and its own trust
698
706
  * decision, and re-pinning them because the engine moved would be penv choosing
@@ -723,4 +731,4 @@ interface UpgradeOptions {
723
731
  }
724
732
  declare function upgrade(options: UpgradeOptions): Promise<void>;
725
733
 
726
- 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, UPGRADE_COMMAND, UpgradeDeclinedError, UpgradeFlagError, UpgradeInstallFailedError, UpgradeNoDownloadError, type UpgradeOptions, UpgradeSubjectError, UpgradeUnattendedError, VersionUnknownError, YES_FLAG, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packumentUrl, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, upgrade, writeDeclaration };
734
+ export { AddFlagError, AddLocalFlagError, AddLocalInCiError, AddNoDownloadError, type AddOptions, AddPackageNameError, AddRegistryError, type AddResult, AddSubjectError, AddTrustUnattendedError, 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, UPGRADE_COMMAND, UpgradeDeclinedError, UpgradeFlagError, UpgradeInstallFailedError, UpgradeNoDownloadError, type UpgradeOptions, UpgradeSubjectError, UpgradeUnattendedError, VersionUnknownError, YES_FLAG, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packumentUrl, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, upgrade, writeDeclaration };
package/dist/index.d.ts CHANGED
@@ -51,10 +51,13 @@ interface LauncherIo {
51
51
  * is two committed files with no runtime in them: the manifest entry, and a
52
52
  * type-only declaration.
53
53
  *
54
- * Because those two files are committed, `add` is a decision and needs a person:
55
- * `--no-download` and a run with nobody at it are both refused before the first
56
- * request, and CI gets `penv install`, which installs what the manifest already
57
- * pins rather than choosing what it should.
54
+ * `add` refuses a run with nobody at it only when it has something to ask. The
55
+ * questions are known from the package name before anything is fetched, and for
56
+ * `@penvhq/*` there are none so the gate used to refuse a run that would have
57
+ * been silent. What cannot be answered unattended is the trust ceremony, whose
58
+ * one field is a sentence about why a stranger's code is trusted; `--yes` says
59
+ * nobody is here to be asked, so it cannot answer that either. `--no-download`
60
+ * is refused whatever the package, because there is nothing to pin without it.
58
61
  *
59
62
  * `--local` is the one path with no release behind it: a repository that writes
60
63
  * a provider adds the package it already builds. Nothing is fetched and nothing
@@ -365,17 +368,17 @@ declare class AddNoDownloadError extends PenvError {
365
368
  constructor(name: string);
366
369
  }
367
370
  /**
368
- * `penv add` on a machine with nobody at it.
371
+ * `penv add` with a question and nobody to answer it.
369
372
  *
370
- * It is refused everywhere, not only for the packages that pay the trust
371
- * ceremony: what `add` writes is two committed files, and a pipeline that
372
- * rewrites the manifest it was handed is a pipeline choosing which bytes the
373
- * project runs. `penv install` is the command CI has, and it installs exactly
374
- * what a person already decided.
373
+ * Only the trust ceremony reaches here. It used to refuse every unattended add,
374
+ * including an `@penvhq/*` one that asks nothing at all a gate stopping a run
375
+ * that would have been silent. What no flag can supply is the ceremony's one
376
+ * field: a sentence about why a stranger's code is trusted, which is why
377
+ * `--yes` does not answer it either.
375
378
  */
376
- declare class AddNotInteractiveError extends PenvError {
377
- readonly name = "AddNotInteractiveError";
378
- constructor(name: string);
379
+ declare class AddTrustUnattendedError extends PenvError {
380
+ readonly name = "AddTrustUnattendedError";
381
+ constructor(name: string, ceremony: string);
379
382
  }
380
383
  /** The trust ceremony was declined. Nothing was installed or recorded. */
381
384
  declare class TrustDeclinedError extends PenvError {
@@ -449,10 +452,12 @@ declare class UpgradeDeclinedError extends PenvError {
449
452
  *
450
453
  * The dependency moves before the manifest for exactly this reason: an upgrade
451
454
  * that cannot finish leaves a project pinning the engine it was already running.
455
+ * The remedy is never the command that just failed — that is the one instruction
456
+ * known not to work. The manager printed why; that line is where to look.
452
457
  */
453
458
  declare class UpgradeInstallFailedError extends PenvError {
454
459
  readonly name = "UpgradeInstallFailedError";
455
- constructor(command: string);
460
+ constructor(manager: string, version: string);
456
461
  }
457
462
  /** An installed directory with nothing runnable in it. */
458
463
  declare class EngineEntryError extends PenvError {
@@ -688,11 +693,14 @@ declare function readTarball(gzipped: Uint8Array, subject: ArchiveSubject): TarE
688
693
  * whole purpose is that its bytes are verified, and a mistyped character came
689
694
  * back as a supply-chain check failing closed.
690
695
  *
691
- * Two committed files move: the manifest's engine pin and the project's
692
- * `@penvhq/penv` dependency, at the same exact version. They move together or
693
- * not at all one consent covers both, and the dependency lands first, so a
694
- * package manager that refuses leaves a project still pinning the engine it was
695
- * already running.
696
+ * The manifest's engine pin and the project's `@penvhq/penv` dependency move
697
+ * together, at the same exact version. In a workspace that dependency is plural
698
+ * a package declaring its own `@penvhq/penv` is a second bridge running under
699
+ * the pin, and one repository ran the 0.8 one under a 0.11 manifest for three
700
+ * releases because `upgrade` looked only at the root. Every `package.json` that
701
+ * declares it is in the one diff, and they move together or not at all: the
702
+ * dependencies land first, so a package manager that refuses leaves a project
703
+ * still pinning the engine it was already running.
696
704
  *
697
705
  * Extensions are not touched. Each carries its own pin and its own trust
698
706
  * decision, and re-pinning them because the engine moved would be penv choosing
@@ -723,4 +731,4 @@ interface UpgradeOptions {
723
731
  }
724
732
  declare function upgrade(options: UpgradeOptions): Promise<void>;
725
733
 
726
- 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, UPGRADE_COMMAND, UpgradeDeclinedError, UpgradeFlagError, UpgradeInstallFailedError, UpgradeNoDownloadError, type UpgradeOptions, UpgradeSubjectError, UpgradeUnattendedError, VersionUnknownError, YES_FLAG, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packumentUrl, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, upgrade, writeDeclaration };
734
+ export { AddFlagError, AddLocalFlagError, AddLocalInCiError, AddNoDownloadError, type AddOptions, AddPackageNameError, AddRegistryError, type AddResult, AddSubjectError, AddTrustUnattendedError, 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, UPGRADE_COMMAND, UpgradeDeclinedError, UpgradeFlagError, UpgradeInstallFailedError, UpgradeNoDownloadError, type UpgradeOptions, UpgradeSubjectError, UpgradeUnattendedError, VersionUnknownError, YES_FLAG, add, assertReleasePin, bundledEngine, declarationPath, engineAt, fetchRelease, findAdoptedRoot, findProject, httpFetcher, inspectInstall, installPin, integrityOf, launcherUpdateCommand, nodeSpawner, packumentUrl, readExtensionPackage, readProviderEntries, readTarball, releaseEnginePin, renderDeclaration, runLauncher, setProviderType, tarballUrl, upgrade, writeDeclaration };
package/dist/index.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  AddLocalFlagError,
4
4
  AddLocalInCiError,
5
5
  AddNoDownloadError,
6
- AddNotInteractiveError,
7
6
  AddPackageNameError,
8
7
  AddRegistryError,
9
8
  AddSubjectError,
9
+ AddTrustUnattendedError,
10
10
  ArchiveError,
11
11
  BUNDLED_ENGINE_PIN,
12
12
  DEFAULT_REGISTRY,
@@ -76,16 +76,16 @@ import {
76
76
  tarballUrl,
77
77
  upgrade,
78
78
  writeDeclaration
79
- } from "./chunk-USYQEKPW.js";
79
+ } from "./chunk-QOQVOYJC.js";
80
80
  export {
81
81
  AddFlagError,
82
82
  AddLocalFlagError,
83
83
  AddLocalInCiError,
84
84
  AddNoDownloadError,
85
- AddNotInteractiveError,
86
85
  AddPackageNameError,
87
86
  AddRegistryError,
88
87
  AddSubjectError,
88
+ AddTrustUnattendedError,
89
89
  ArchiveError,
90
90
  BUNDLED_ENGINE_PIN,
91
91
  DEFAULT_REGISTRY,
package/package.json CHANGED
@@ -1,8 +1,14 @@
1
1
  {
2
2
  "name": "@penvhq/launcher",
3
- "version": "0.11.0",
3
+ "version": "0.13.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
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Itzfeminisce/penvhq.git",
9
+ "directory": "packages/launcher"
10
+ },
11
+ "homepage": "https://github.com/Itzfeminisce/penvhq#readme",
6
12
  "type": "module",
7
13
  "main": "./dist/index.cjs",
8
14
  "module": "./dist/index.js",
@@ -22,8 +28,8 @@
22
28
  ],
23
29
  "dependencies": {
24
30
  "zod": "4.4.3",
25
- "@penvhq/cli": "0.11.0",
26
- "@penvhq/core": "0.11.0"
31
+ "@penvhq/cli": "0.13.0",
32
+ "@penvhq/core": "0.13.0"
27
33
  },
28
34
  "scripts": {
29
35
  "build": "tsup"