ace-pm
35dc87ef53
chore: sync workspace state after rebrand
...
- Rebrand commits already in history (gsd → forge)
- Sync pre-existing doc, docker, and CI config updates
- All rebrand artifacts verified in place:
* Native crates: forge-engine, forge-ast, forge-grep
* Log prefixes: [forge] across 22+ files
* Binary: ~/bin/sf-run
* Workspace scopes: @sf-run/*, @singularity-forge/*
* Nix flake: Rust toolchain ready
System ready for: nix develop && bun run build:native
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 14:54:20 +02:00
Jeremy
b1c0dafc70
feat(gsd): implement ADR-005 multi-model provider and tool strategy
...
Implements all 4 phases of ADR-005 (issue #2790 ):
Phase 1: Provider Capabilities Registry
- Declarative ProviderCapabilities interface and PROVIDER_CAPABILITIES
registry covering all 12 API providers
- Consolidates scattered *-shared.ts knowledge into queryable registry
- Unknown providers get permissive defaults (backward compatible)
Phase 2: Tool Compatibility Metadata
- ToolCompatibility interface (producesImages, schemaFeatures, minCapabilityTier)
- compatibility field on ToolDefinition
- Tool compatibility registry with pre-populated built-in tools
- Auto-registration from registerTool() and MCP tool defaults
Phase 3: Tool-Compat Filter + ProviderSwitchReport
- ProviderSwitchReport tracks thinking blocks dropped/downgraded,
tool call IDs remapped, synthetic results inserted, thought
signatures dropped during cross-provider message transformation
- isToolCompatibleWithProvider(), filterToolsForProvider(), adjustToolSet()
functions in model router
- filteredTools field on RoutingDecision
- Verbose output for filtered tools in auto-model-selection
Phase 4: adjustToolSet Extension Hook
- AdjustToolSetEvent and AdjustToolSetResult interfaces
- emitAdjustToolSet() on ExtensionAPI and ExtensionRuntime
- Default no-op handler in register-hooks.ts
Includes 47 new tests (20 provider caps + 10 switch report + 17 tool compat)
Closes #2790
2026-04-10 12:33:40 -05:00