mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-13 11:13:43 +08:00
* docs: add plugin search provider design spec and plan (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * feat(plugin-api): add SEARCH plugin type and PluginSearchProvider SPI (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * feat(search): make SearchProviderRegistry accept runtime plugin providers (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * test(search): cover blank plugin provider id rejection (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * feat(plugin): bridge PluginSearchProvider to the core SearchProvider chain (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * feat(plugin): registerSearchProvider lifecycle — register, disable, rollback (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * fix(plugin): preserve cause when wrapping registry conflict as PluginException (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * feat(plugin): add search provider sample plugin module (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * docs(plugin): note unused query params and narrow parse exception in search sample (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK * docs(architecture): document the standalone-jar plugin system and SEARCH type (#477) Claude-Session: https://claude.ai/code/session_013uyvXEazZkhNw27geRtakK
51 lines
1.5 KiB
Java
51 lines
1.5 KiB
Java
package vip.mate.plugin;
|
|
|
|
import lombok.Data;
|
|
import vip.mate.plugin.api.MateClawPlugin;
|
|
import vip.mate.plugin.api.PluginManifest;
|
|
|
|
import java.net.URLClassLoader;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Internal state holder for a loaded plugin.
|
|
*
|
|
* @author MateClaw Team
|
|
*/
|
|
@Data
|
|
public class LoadedPlugin {
|
|
|
|
private final PluginManifest manifest;
|
|
private final MateClawPlugin plugin;
|
|
private final URLClassLoader classLoader;
|
|
|
|
/** Set after construction (circular reference with PluginContextImpl) */
|
|
private PluginContextImpl context;
|
|
|
|
/** Names of tools registered by this plugin */
|
|
private final List<String> registeredTools = new ArrayList<>();
|
|
|
|
/** Channel types registered by this plugin */
|
|
private final List<String> registeredChannels = new ArrayList<>();
|
|
|
|
/** Search provider ids registered by this plugin */
|
|
private final List<String> registeredSearchProviders = new ArrayList<>();
|
|
|
|
/** Provider ID registered by this plugin (null if none) */
|
|
private String registeredProvider;
|
|
|
|
/** Memory provider ID registered by this plugin (null if none) */
|
|
private String registeredMemoryProvider;
|
|
|
|
/** Whether the plugin is currently enabled */
|
|
private boolean enabled = true;
|
|
|
|
public LoadedPlugin(PluginManifest manifest, MateClawPlugin plugin,
|
|
URLClassLoader classLoader) {
|
|
this.manifest = manifest;
|
|
this.plugin = plugin;
|
|
this.classLoader = classLoader;
|
|
}
|
|
}
|