Files
headquarter/openspec/changes/archive/2026-05-23-remove-built-in-tools/proposal.md
T
Fusion 312a646b89 feat: remove built-in tool types distinction
- Drop is_builtin column from tool_types table
- Remove built-in tool seeding from startup
- Remove is_builtin from API schemas and frontend types
- Update tool-types spec to reflect removal of built-in concept
- Add Alembic migration for column removal
- Update tests to work without built-in distinction
2026-05-23 20:02:19 +02:00

33 lines
1.6 KiB
Markdown

## Why
Currently, the system maintains a hardcoded distinction between "built-in" and "custom" tool types via the `is_builtin` flag and automatic seeding logic in `main.py`. This creates a two-tier system where built-in tools are privileged, cannot be fully managed by users, and require code changes to modify. All tool types should be first-class citizens — the former "built-in" tools are simply preconfigured tool types that ship with the system.
## What Changes
- **Remove `is_builtin` field** from `ToolType` model and database schema
- **Remove automatic seeding** of built-in tool types from `main.py` startup logic
- **Create migration script** to convert existing built-in types to regular types
- **Update tool type API** to remove built-in vs custom distinction in responses and permissions
- **Remove built-in protections** that prevent deletion/modification of built-in types
- **Seed initial data via migration** instead of runtime code, making them regular database records
- **Update frontend** to remove any built-in-specific UI treatment
## Capabilities
### New Capabilities
None.
### Modified Capabilities
- `tool-types`: Remove built-in vs custom distinction. All tool types are equal.
## Impact
- **Database**: Migration to drop `is_builtin` column and convert existing records
- **Backend API**: `tool_types.py` — remove built-in checks, simplify permissions
- **Models**: `tool_type.py` — remove `is_builtin` field
- **Startup**: `main.py` — remove `seed_builtin_tool_types()` function
- **Frontend**: Remove any built-in-specific UI (badges, restrictions, etc.)
- **Data**: Existing built-in types become regular editable tool types