You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #252/#555/#656/#673, not a request to reopen the completed npm-root layout work. Audited framework 72a8857ebe968636ac44dfc7ce4eba30664a8445 and public cargo-hauler dfd2a9a50067c9e600e2d7b96b07bd4b937a9c4a. GitHub source review only.
Cargo Hauler has reimplemented the package-local installation boundary:
src/cargo-hauler-install.ts: argument grammar, artifact-root probing, raw manifest identity lookup, a local plan response, result formatting and pre-validation mode restoration.
src/install-api.mjs: imports implementation files through agent-bundle-src/packages/agent-bundle/src/install/*.
The framework already owns validation, native installation, receipts, replacement, uninstall, mode normalization and purge safeguards. The consumer is not implementing a new lifecycle product; it is reconstructing how to call the existing one from an installed package.
Public API gap, not a fictional existing helper
The inspected package export map and public API do not expose installBundle/uninstallBundle as a supported consumer programming API. Do not tell the consumer to switch to a nonexistent runPluginInstaller export. The public framework CLI and generated host-specific installation surfaces do exist.
Establish one supported choice for a source-free, package-bound entry: reuse the generated lifecycle entry where appropriate, make delegation to the existing public CLI viable/documented, or expose a minimal stable wrapper around the existing implementation if a self-contained branded installer is required. Choose the smallest option that lets the consumer delete its private-source shim. Do not require authors to know internal receipt types, host caches or output-root heuristics.
Acceptance / deletion proof
Demonstrate the supported operator journey from an actual installed consumer tarball, with the source checkout and build-time AB monorepo alias absent.
Bind the package's own canonical artifact root without guessing sibling artifact/, nested host directories, or the current working directory.
Reuse existing install/uninstall/doctor/plan semantics, native host identifiers, consent and receipt ownership; no second lifecycle implementation.
Requested unselected hosts fail before mutation. --plan is truly read-only and reports the real framework plan, not a consumer approximation.
Preserve mode handling from fix: validate published bins and npm modes #674. No pre-validation chmod of attacker-/operator-edited manifest paths and no global weakening of hashes/containment.
Cover replacement, foreign directory refusal, keep-data and safe purge using current framework tests plus one clean consumer process fixture.
Remove the corresponding cargo install-api source imports and handwritten installer paths as the consumer proof, or link the exact follow-up accomplishing that deletion.
Existing native-only distributions may use native host commands; do not generate an unnecessary installer process for a static plugin.
Exported types/declarations, if added, resolve from the packed public package and do not leak private source/devDependencies.
Boundaries
No new installer registry, public exposure of every internal lifecycle helper, automatic host mutation during npm installation, permission bypass, daemon lifecycle ownership, or requirement that all users install a branded CLI. Keep this independent from private consumer internals and #411 release automation. Safe removal of Cargo Hauler's mode-repair workaround can proceed before the public entry decision.
Consumer evidence / scope
Follow-up to #252/#555/#656/#673, not a request to reopen the completed npm-root layout work. Audited framework
72a8857ebe968636ac44dfc7ce4eba30664a8445and public cargo-haulerdfd2a9a50067c9e600e2d7b96b07bd4b937a9c4a. GitHub source review only.Cargo Hauler has reimplemented the package-local installation boundary:
agent-bundle-src/packages/agent-bundle/src/install/*.The framework already owns validation, native installation, receipts, replacement, uninstall, mode normalization and purge safeguards. The consumer is not implementing a new lifecycle product; it is reconstructing how to call the existing one from an installed package.
Public API gap, not a fictional existing helper
The inspected package export map and public API do not expose
installBundle/uninstallBundleas a supported consumer programming API. Do not tell the consumer to switch to a nonexistentrunPluginInstallerexport. The public framework CLI and generated host-specific installation surfaces do exist.Establish one supported choice for a source-free, package-bound entry: reuse the generated lifecycle entry where appropriate, make delegation to the existing public CLI viable/documented, or expose a minimal stable wrapper around the existing implementation if a self-contained branded installer is required. Choose the smallest option that lets the consumer delete its private-source shim. Do not require authors to know internal receipt types, host caches or output-root heuristics.
Acceptance / deletion proof
artifact/, nested host directories, or the current working directory.--planis truly read-only and reports the real framework plan, not a consumer approximation.install-apisource imports and handwritten installer paths as the consumer proof, or link the exact follow-up accomplishing that deletion.Boundaries
No new installer registry, public exposure of every internal lifecycle helper, automatic host mutation during npm installation, permission bypass, daemon lifecycle ownership, or requirement that all users install a branded CLI. Keep this independent from private consumer internals and #411 release automation. Safe removal of Cargo Hauler's mode-repair workaround can proceed before the public entry decision.