[importlinter]
root_package = odoo_mcp

[importlinter:contract:core-no-surface]
name = Core helpers must not import the MCP surface
type = forbidden
source_modules =
    odoo_mcp.tool_helpers
    odoo_mcp.schema_cache
    odoo_mcp.write_policy
    odoo_mcp.access_helpers
    odoo_mcp.agent_tools
    odoo_mcp.diagnostics
    odoo_mcp.odoo_client
    odoo_mcp.task_queue
    odoo_mcp.rate_limit
    odoo_mcp.knowledge_index
    odoo_mcp.accounting_tools
    odoo_mcp.field_policy
    odoo_mcp.cross_instance
    odoo_mcp.audit
    odoo_mcp.auth
    odoo_mcp.schemas
    odoo_mcp.data_quality
forbidden_modules =
    odoo_mcp.server
    odoo_mcp.server_core
    odoo_mcp.plugin_api
    odoo_mcp.tools_read
    odoo_mcp.tools_write
    odoo_mcp.tools_data_quality
    odoo_mcp.tools_diagnostics
    odoo_mcp.tools_knowledge
    odoo_mcp.tools_accounting
    odoo_mcp.tools_cross_instance
    odoo_mcp.tools_async
    odoo_mcp.prompts
    odoo_mcp.prompts_workflows

[importlinter:contract:surface-layering]
name = MCP surface layering (server above tool modules above core)
type = layers
layers =
    odoo_mcp.server
    odoo_mcp.tools_async
    odoo_mcp.plugin_api | odoo_mcp.tools_read | odoo_mcp.tools_write | odoo_mcp.tools_data_quality | odoo_mcp.tools_diagnostics | odoo_mcp.tools_knowledge | odoo_mcp.tools_accounting | odoo_mcp.tools_cross_instance | odoo_mcp.prompts | odoo_mcp.prompts_workflows
    odoo_mcp.server_core
ignore_imports =
    odoo_mcp.server_core -> odoo_mcp.server
    odoo_mcp.tools_read -> odoo_mcp.server
    odoo_mcp.tools_write -> odoo_mcp.server
    odoo_mcp.tools_diagnostics -> odoo_mcp.server
    odoo_mcp.tools_knowledge -> odoo_mcp.server
    odoo_mcp.tools_cross_instance -> odoo_mcp.server
