File size: 1,232 Bytes
ce72224
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
/**

 * Plugin Manager

 * Verwaltet das automatische Laden und Initialisieren von Plugins

 */

const plugins = new Map()

export function registerPlugin(name, plugin) {
  plugins.set(name, plugin)
  console.log(`✓ Plugin registered: ${name}`)
}

export function getPlugin(name) {
  return plugins.get(name)
}

export function getAllPlugins() {
  return Array.from(plugins.values())
}

export async function initializePlugins() {
  console.log('🔌 Initializing plugin system...')
  
  // Globale Plugin API bereitstellen
  window.PluginAPI = {
    register: registerPlugin,
    get: getPlugin,
    getAll: getAllPlugins,
    
    // Event Emitter für Plugins
    on: (event, callback) => {
      window.addEventListener(event, callback)
    },
    
    off: (event, callback) => {
      window.removeEventListener(event, callback)
    },
    
    emit: (event, data) => {
      window.dispatchEvent(new CustomEvent(event, { detail: data }))
    },
  }
  
  console.log('✓ Plugin API ready')
}

// Plugin Hook System
export const PluginHooks = {
  PLUGIN_INIT: 'onPluginInit',
  MESSAGE_SENT: 'onMessageSent',
  RESPONSE_RECEIVED: 'onResponseReceived',
  ERROR: 'onError',
}