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

1.6 KiB

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