Replaces the stray useClaudeCli settings checkbox + onboarding question
with a proper provider-card UX. The card lives next to OAuth + API-key
cards in onboarding and settings, with Enable/Disable + Test actions.
Backend:
- Vendors rchern/pi-claude-cli@0.3.1 as packages/pi-claude-cli
(MIT, attribution in UPSTREAM.md). Lets us bump peer-dep on
pi-coding-agent in lockstep with Fusion (upstream pinned ^0.52.0
vs ours ^0.62.0) and fix bugs without waiting on upstream.
- Adds @fusion/pi-claude-cli as a workspace dep of @runfusion/fusion
so users don't have to `npm install -g pi-claude-cli` manually.
- serve/daemon/dashboard conditionally load the extension via
discoverAndLoadExtensions() when GlobalSettings.useClaudeCli is on;
no side-effects on user ~/.fusion/agent/settings.json.
- New GET /api/providers/claude-cli/status: claude --version probe
+ toggle state + cached extension resolution.
- New POST /api/auth/claude-cli: flips useClaudeCli, refuses if the
claude binary is missing, fires the existing skill-backfill hook.
- /api/auth/status now injects a synthetic {id:"claude-cli", type:"cli"}
provider entry so onboarding + settings see a consistent list.
Frontend:
- New ClaudeCliProviderCard component shared between ModelOnboardingModal
and SettingsModal's Authentication section.
- New AuthProvider.type = "cli" variant.
- Removed the old "Route AI calls through the Claude CLI" checkbox from
Global Models settings and the opt-in step from the onboarding wizard.
- ProviderIcon gets a composite Anthropic-mark-plus-terminal glyph for
the claude-cli provider id.
Tests:
- 8 unit tests for extension resolution (@fusion/pi-claude-cli is
workspace-linked so these run in-tree).
- 2 unit tests for the binary probe.
- Existing /auth/status tests filter out the new synthetic entry so
they keep asserting structural OAuth/API-key behavior in isolation.
- The vendored package's own 296 tests still pass unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
# Upstream provenance
|
|
|
|
This package is a vendored fork of:
|
|
|
|
- **Upstream**: https://github.com/rchern/pi-claude-cli
|
|
- **Forked at version**: `0.3.1` (see `package.json`)
|
|
- **Forked on**: 2026-04-23
|
|
|
|
The original project is MIT-licensed; the full license text is preserved in
|
|
`LICENSE` alongside this file. All copyrights noted in the original source
|
|
are retained.
|
|
|
|
## Why a fork
|
|
|
|
`pi-claude-cli` is a load-bearing runtime extension for Fusion's "Route AI
|
|
through Claude CLI" feature. Vendoring lets us:
|
|
|
|
1. Bump its peer dependency on `@mariozechner/pi-coding-agent` in lockstep
|
|
with Fusion's own version (upstream tracked `^0.52.0`; Fusion needs
|
|
`^0.62.0`).
|
|
2. Fix bugs without waiting for upstream release cadence.
|
|
3. Wire the extension into the monorepo's build, typecheck, and test
|
|
pipeline.
|
|
4. Ship it bundled with `@runfusion/fusion` so users don't have to
|
|
`npm install -g pi-claude-cli` manually.
|
|
|
|
## Syncing from upstream
|
|
|
|
This is a soft fork — we do not track upstream automatically. When upstream
|
|
releases a change worth adopting:
|
|
|
|
1. `git diff` the upstream ref against this directory.
|
|
2. Hand-apply the relevant parts (most of our modifications are localized to
|
|
`package.json` — peer-dep pins, package name scoping).
|
|
3. Update "Forked at version" above.
|
|
|
|
There is no `git subtree` relationship — upstream's git history is not
|
|
preserved here. Attribution is via this file plus the retained `LICENSE`.
|