UNPKG

supapup

Version:

⚡ Lightning-fast MCP browser dev tool. Navigate → Get instant structured data. No screenshots needed! Puppeteer: 📸 → CSS selectors → JS eval. Supapup: semantic IDs ready to use. 10x faster, 90% fewer tokens.

156 lines (155 loc) 4.69 kB
/** * Role-based tool filtering for Supapup * Defines which tools are available for different use cases */ // Define tester tools first const TESTER_TOOLS = [ // Core Navigation & Interaction 'browser_navigate', 'agent_execute_action', 'agent_read_content', // Form Testing 'form_fill', 'form_detect', // Visual Verification 'screenshot_capture', 'screenshot_paginated', 'screenshot_get_chunk', // Responsive Testing 'viewport_set', 'viewport_test_responsive', 'test_responsive', 'test_responsive_section', 'test_responsive_section_get_screenshot', // Element Inspection (Read-only) 'devtools_inspect_element', 'page_inspect_element', // Network & Console Monitoring 'network_get_api_logs', 'network_get_console_logs', 'network_clear_logs', // Performance & Accessibility Testing 'page_get_performance', 'page_get_accessibility', // Page Analysis 'page_evaluate_script', 'page_trigger_hover', // Server Info 'server_info' ]; export const ROLE_DEFINITIONS = { tester: { name: 'tester', description: 'Essential tools for QA testing and responsive design verification', defaultHeadless: true, tools: TESTER_TOOLS }, developer: { name: 'developer', description: 'Full development toolkit with debugging and modification capabilities', defaultHeadless: false, tools: [ // All tester tools ...TESTER_TOOLS, // Advanced Element Manipulation 'devtools_modify_css', 'devtools_modify_html', 'devtools_highlight_element', 'devtools_get_computed_styles', 'devtools_visual_element_map', // Advanced Network Tools 'network_get_logs', 'network_replay_request', 'network_intercept_requests', 'network_throttle', // Storage Management 'storage_get', 'storage_set', 'storage_remove', 'storage_clear', 'storage_export_state', 'storage_import_state', 'storage_get_info', // Advanced Agent Tools 'agent_generate_page', 'agent_remap_page', 'agent_wait_for_changes', 'agent_get_page_chunk', 'agent_get_page_state', 'agent_discover_actions', // Browser Management 'browser_close', 'browser_set_visibility', 'browser_open_in_tab', 'browser_list_tabs', 'browser_switch_tab', // Advanced Screenshots 'browser_navigate_and_capture_loading_sequence', 'get_loading_sequence_frame', // Human Interaction 'ask_human', // Page Resources 'page_get_resources', // Hover testing (developer role only) 'page_trigger_hover' ] }, automation: { name: 'automation', description: 'Minimal tools for basic web automation tasks', defaultHeadless: true, tools: [ // Core Navigation 'browser_navigate', // Basic Interaction 'agent_execute_action', 'agent_read_content', // Form Automation 'form_fill', // Basic Verification 'screenshot_capture', // Network Monitoring 'network_get_console_logs', // Script Execution 'page_evaluate_script', // Server Info 'server_info' ] } }; /** * Get tools for a specific role */ export function getToolsForRole(role) { if (!role) { return null; // Return null to indicate all tools should be used } const roleConfig = ROLE_DEFINITIONS[role.toLowerCase()]; if (!roleConfig) { throw new Error(`Unknown role: ${role}. Available roles: ${Object.keys(ROLE_DEFINITIONS).join(', ')}`); } return roleConfig.tools; } /** * Get default headless setting for a role */ export function getDefaultHeadlessForRole(role) { if (!role) { return undefined; // Use existing default } const roleConfig = ROLE_DEFINITIONS[role.toLowerCase()]; return roleConfig?.defaultHeadless; } /** * Get role description */ export function getRoleDescription(role) { const roleConfig = ROLE_DEFINITIONS[role.toLowerCase()]; return roleConfig?.description || 'Unknown role'; } /** * List all available roles */ export function getAvailableRoles() { return Object.values(ROLE_DEFINITIONS); }