Merged feat(FN-3059) which aligns provider metadata and documentation across the codebase, updating README and getting-started docs plus refinements to the CustomProviderForm and ProviderIcon dashboard components.
Fusion-Task-Id: FN-3059
This merge introduces a new `packages/droid-cli` package that bridges AI agent execution as a subprocess, including process management, event streaming, tool mapping, MCP configuration, and thinking-mode support. It also adds the `DroidCliProviderCard` dashboard UI component with onboarding flows an
Fusion-Task-Id: FN-2978
- Hermes / OpenClaw plugin index.ts now re-export `probeHermesBinary` /
`probeOpenClawBinary` and their status types so the dashboard's
`runtime-provider-probes.ts` façade can import them via the public
package entry instead of deep paths.
- Dashboard `package.json` adds `@fusion-plugin-examples/hermes-runtime`,
`…/openclaw-runtime`, `…/paperclip-runtime` as workspace deps so
pnpm symlinks them into `packages/dashboard/node_modules/`. Without
these, the new probe imports failed with "Cannot find module" during
`pnpm typecheck`.
This clears 6 of the 9 outstanding typecheck errors. The remaining 3 are
in the in-flight Hermes plugin rewrite (runtime-adapter still imports
from a deleted `./pi-module.js`; the new `index.ts` calls a factory
with the wrong arg type) and should be resolved by the same change set
that landed the rewrite.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two more brand-id spellings observed in the wild that previously fell
through to the generic Cpu glyph:
fireworksai → FireworksIcon (joins fireworks / fireworks-ai)
qwen-ai → QwenIcon (joins qwen / qwen-coder / alibaba / tongyi)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Audited the pi-ai built-in model catalog provider IDs against the
ProviderIcon registry and filled every remaining gap.
New icons:
--provider-cerebras (#f1592a) → CerebrasIcon (concentric arcs)
--provider-groq (#f55036) → GroqIcon (lightning bolt)
--provider-vercel (text) → VercelIcon (triangle wordmark)
New aliases routed to existing icons:
minimax-cn → MiniMaxIcon
azure-openai-responses → AzureIcon
google-gemini-cli → GeminiIcon
google-generative-ai → GeminiIcon
opencode-go → OpencodeIcon
vercel-ai-gateway → VercelIcon
After this commit every provider id emitted by `@mariozechner/pi-ai`'s
register-builtins (anthropic, openai, openai-codex, google,
google-vertex, google-gemini-cli, google-antigravity,
amazon-bedrock, mistral, openrouter, fireworks, cerebras, groq,
huggingface, kimi-coding, minimax, minimax-cn, zai, xai, opencode,
opencode-go, github-copilot, azure-openai-responses,
vercel-ai-gateway) plus the user-curated set (qwen, lm-studio,
hugging-face, alibaba/tongyi, hf, lmstudio…) renders a brand icon
instead of falling back to the generic Cpu glyph.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds six new provider icons rendered as inline SVG, each backed by a new
brand token in styles.css:
--provider-qwen (Qwen / Tongyi)
--provider-lmstudio (LM Studio)
--provider-huggingface (Hugging Face)
--provider-mistral (Mistral AI)
--provider-azure (Microsoft Azure / Azure OpenAI)
--provider-fireworks (Fireworks AI)
Aliases registered:
qwen / qwen-coder / alibaba / tongyi
lmstudio / lm-studio
huggingface / hugging-face / hf
mistral / mistral-ai
azure / azure-openai
fireworks / fireworks-ai
Also extends the Gemini icon to cover every Google-product alias the
catalog throws at it: google-vertex, vertex, google-cloud-code,
cloud-code, antigravity (in addition to the existing google,
gemini, google-antigravity).
Tests cover each new mapping (and confirm the Gemini alias group all
resolves to the gemini icon with --provider-gemini color).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add a dedicated Bedrock SVG provider icon and provider token styling
- Wire Bedrock provider aliases so provider detection resolves to the new icon key
- Update usage indicator mapping so Bedrock usage providers render the correct icon
- Expand ProviderIcon tests to cover Bedrock icon rendering and alias coverage
- Add dedicated xAI and Opencode SVG icon components in ProviderIcon with provider config entries
- Map grok to the xAI icon and add opencode color token for consistent themed rendering
- Extend UsageIndicator provider normalization to resolve xai/grok and opencode icon keys
- Add ProviderIcon tests for xai, grok alias behavior, and opencode rendering/color normalization
- Map the pi-claude-cli provider key to the Claude CLI icon config in ProviderIcon.
- Reuse Anthropic tokenized provider color and accessible label for the new alias.
- Add dashboard tests asserting icon rendering, color/label metadata, and mixed-case alias normalization.
The status-bar folder-toggle button had a 1px border + radius that made it
look like a chip. Per request, render it as a bare icon — transparent
background, no border. Hover now only shifts the icon color, the active
state drops to color only, and focus-visible still draws a focus ring with
border-radius applied so it remains a clean halo.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>
- Update ProviderIcon with Kimi's official crescent moon brand mark
- Add comprehensive tests for ProviderIcon component with Kimi logo variants
- Include changeset for @gsxdsm/fusion package
- Update ProviderIcon.tsx to use Moonshot AI logo instead of Kimi branding
- Fix logo display in UsageIndicator component
- Add ProviderIcon unit tests covering all provider icons
- Add UsageIndicator tests for provider icon rendering
- Add CustomModelDropdown integration tests for model selection flow
- Add Kimi logo to ProviderIcon component for visual identification
- Add Kimi provider to usage mapping for cost tracking
- Add Kimi usage fetcher to fetch cost and usage data from Kimi API
- Add ProviderIcon tests for Kimi logo verification
- Add UsageIndicator tests for Kimi provider
- Add comprehensive usage tests for Kimi fetcher
- Add openai-codex AI provider with OpenAI icon and label support in ProviderIcon component
- Add comprehensive test coverage for provider icon mappings
- Extend SetupWizardModal with enhanced project setup workflow capabilities
- Update CLI bin, core types, and store interfaces for new provider support
- Remove obsolete multi-project migration changeset
- Add project API methods and types (fetchProjects, registerProject, fetchProjectHealth, etc.)
- Add ProjectCard component with health metrics, status badges, and pause/resume actions
- Add server-side project management routes for multi-project orchestration
- Add ActivityFeed component with grouped entries and project badges
- Add SetupWizard component with 5-step project creation flow
- Fix TypeScript errors in server routes for listProjects and getGlobalConcurrencyState
- Add 'openai-codex' provider alias mapped to OpenAI icon with green color (#10a37f)
- ProviderIcon component now recognizes openai-codex as valid provider
- Add comprehensive test coverage for openai-codex provider icon rendering
- Tests cover icon presence, accessibility label, color styling, and SVG fill attributes
- Replace Lucide icons with accurate brand SVG logos for AI providers (OpenAI, Anthropic, Google, Grok, XAI)\n- Update ProviderIcon tests with comprehensive coverage for new SVG icons\n- Add changeset for accurate provider icons feature\n- Remove obsolete FileEditor test file and related changeset\n- Clean up associated CSS styles
- Create ProviderIcon component with provider-to-icon mappings (OpenAI, Anthropic, Google, etc.)
- Build CustomModelDropdown with icon display, filtering, and keyboard navigation
- Integrate custom dropdown into ModelSelectorTab replacing native select element
- Add CSS styles for provider icons in dropdown items and model badges
- Add comprehensive tests for ProviderIcon, CustomModelDropdown, and ModelSelectorTab