Spaces:
Sleeping
Sleeping
File size: 1,787 Bytes
b6ecafa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | /**
* Example Plugin: Hyperbrowser
*
* Reference showing how to register Hyperbrowser via the plugin system.
* The actual Hyperbrowser integration lives as a built-in in the
* integrations route (Phase 2). This file demonstrates the plugin API
* for documentation purposes.
*
* Usage:
* import { initHyperbrowserPlugin } from '@/plugins/hyperbrowser-example'
* initHyperbrowserPlugin()
*/
import {
registerIntegrations,
registerCategories,
registerToolProviders,
} from '@/lib/plugins'
export function initHyperbrowserPlugin(): void {
registerCategories([
{ id: 'browser', label: 'Browser Automation', order: 8 },
])
registerIntegrations([
{
id: 'hyperbrowser',
name: 'Hyperbrowser',
category: 'browser',
envVars: ['HYPERBROWSER_API_KEY'],
testable: true,
recommendation: 'Cloud browser automation for AI agents. Get a key at hyperbrowser.ai',
testHandler: async (envMap: Map<string, string>) => {
const key = envMap.get('HYPERBROWSER_API_KEY') || process.env.HYPERBROWSER_API_KEY || ''
if (!key) return { ok: false, detail: 'API key not set' }
try {
const res = await fetch('https://app.hyperbrowser.ai/api/v2/sessions', {
headers: { 'x-api-key': key },
signal: AbortSignal.timeout(5000),
})
return res.ok
? { ok: true, detail: 'API key valid' }
: { ok: false, detail: `HTTP ${res.status}` }
} catch (err: any) {
return { ok: false, detail: err.message || 'Connection failed' }
}
},
},
])
registerToolProviders([
{
id: 'hyperbrowser',
name: 'Hyperbrowser',
tools: ['browser', 'web'],
requiredIntegration: 'hyperbrowser',
},
])
}
|