Skip to content

fix(coding-agent): share Pi packages by default - #30

Merged
Kushalkhemka merged 8 commits into
opensec-git:pi-boltfrom
boonlai:feat/shared-package-defaults
Oct 15, 2026
Merged

Kushalkhemka merged 8 commits into
opensec-git:pi-boltfrom
boonlai:feat/shared-package-defaults

Conversation

@boonlai

@boonlai boonlai commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

What and why

Closes #28.

Pi-Bolt now inherits Pi’s shared packages list instead of copying it on the first package mutation.

  • Ordinary install/remove commands modify shared declarations.
  • --pi-bolt explicitly modifies additive piBolt.packages overrides, supporting additions, replacements and exclusions.
  • Resource filters, project trust and declaration ownership are preserved.
  • Removal retains installed files still required by the other list.
  • Installers, configuration editing and documentation follow the same semantics.

Existing copied lists remain readable without loading duplicate packages. Packages omitted from those lists are now inherited; explicit exclusions disable them.

How it was tested

  • 559 focused tests passed across package management, settings, resource loading and CLI parsing.

  • Five installer tests and npm run check passed.

  • Regression tests cover filter preservation, concurrent settings updates, queued writes, unreadable settings, selector precedence and argument parsing.

  • Earlier compiled macOS ARM64 smoke checks passed.

  • Full-suite verification previously encountered a TUI cancellation reproduced on the unchanged baseline.

  • Latest upstream pi-bolt changes merge cleanly. Windows execution remains unverified.

  • ci passes

  • Engine or build change: tests/aot/run.sh and tests/pi/run.sh on a build with it — not applicable

…install/remove effective

- Convert a piBolt.packages list copied from packages by Pi-Bolt before 0.9.1 once per
  settings file (global, trusted project): exclude shared packages missing from the copy,
  drop entries identical to their shared entry, keep replacements and Pi-Bolt-only entries.
  Every writer marks the list with piBolt.packagesOverlay so it is never converted again.
- Plain pi-bolt install/remove also drop Pi-Bolt's entry for that package in the same file
  (replacement, addition or exclusion), so remove cannot leave Pi-Bolt loading it and
  install cannot be hidden by a stale replacement or an exclusion. A plain remove no longer
  keeps installed files for a Pi-Bolt entry it drops.
- Package CLI flushes queued settings writes before main() exits.
- SDK getPackages adds a project's Pi-Bolt entries to the global packages when the project
  has no packages list of its own.
@Kushalkhemka

Copy link
Copy Markdown
Member

Pushed 47209a9 on top, with pi-bolt merged in, for 0.9.1:

  • A piBolt.packages list copied by an earlier Pi-Bolt is converted once on load: shared packages missing from it get -<source>, identical entries are dropped, the rest kept; piBolt.packagesOverlay: true marks it.
  • Plain pi-bolt remove X also drops Pi-Bolt's own entry for X (and finds a Pi-Bolt-only X); plain pi-bolt install X@2 drops a stale replacement or exclusion of X.
  • SDK getPackages(): a project with only piBolt.packages adds to the global packages.
  • The package CLI waits for queued settings writes before exiting.

Tests: settings-pibolt-packages (73), package-manager-cli-preflight, package-manager, settings-manager suites (434 across 8 files), tests/installer/extensions.py; npm run check clean.

…-defaults

# Conflicts:
#	site/docs/search.json
@Kushalkhemka
Kushalkhemka merged commit a8a62a4 into opensec-git:pi-bolt Oct 15, 2026
11 checks passed
Kushalkhemka pushed a commit that referenced this pull request Oct 15, 2026
Shared package defaults (#30); site/docs/search.json built again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pi-Bolt maintains its own package list

3 participants