From 2089d41c0f309ea176ec8cc17ca449d294b47f4e Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sun, 16 Aug 2026 18:44:28 +0800 Subject: [PATCH] =?UTF-8?q?sync:=20=E5=90=8C=E6=AD=A5=20SDK=20PluginMgr=20?= =?UTF-8?q?API=20=E4=B8=8E=20dispatch=2048/49/50=20(vendored=20=E5=89=AF?= =?UTF-8?q?=E6=9C=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- third_party/homeagent-sdk/meta/meta.go | 5 +++++ third_party/homeagent-sdk/sdk/plugin.go | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/third_party/homeagent-sdk/meta/meta.go b/third_party/homeagent-sdk/meta/meta.go index dfa7d67..6b69bb8 100644 --- a/third_party/homeagent-sdk/meta/meta.go +++ b/third_party/homeagent-sdk/meta/meta.go @@ -99,4 +99,9 @@ const ( CoreSettingsDefs = 43 CoreSettingsDump = 44 CoreSettingsPlugins = 45 + CoreRegisterInputCh = 46 + CoreInjectInputSync = 47 + CorePluginReloadOne = 48 + CorePluginListLoaded = 49 + CorePluginIsDisabled = 50 ) diff --git a/third_party/homeagent-sdk/sdk/plugin.go b/third_party/homeagent-sdk/sdk/plugin.go index 1378eaf..f3cb0b1 100644 --- a/third_party/homeagent-sdk/sdk/plugin.go +++ b/third_party/homeagent-sdk/sdk/plugin.go @@ -147,6 +147,17 @@ type EventSubscriber interface { Subscribe(eventType EventType, handler EventHandler) func() } +// PluginMgrAPI 提供插件管理能力(外部插件可调用)。 +// 由 bridge 注入 dispatch 实现,走 C ABI CORE_PLUGIN_RELOAD_ONE 等。 +type PluginMgrAPI interface { + // ReloadOne 重载单个插件(停止后重新加载)。 + ReloadOne(name string) error + // ListLoadedPlugins 列出已加载插件。 + ListLoadedPlugins() []string + // IsPluginDisabled 查询插件是否被禁用。 + IsPluginDisabled(name string) bool +} + // StageScope controls which events a stage handler receives. type StageScope int @@ -200,6 +211,7 @@ type PluginSDK struct { sett SettingsAPI social SocialAPI events EventSubscriber + plgMgr PluginMgrAPI autoRestart bool @@ -347,6 +359,13 @@ func (s *PluginSDK) SetLLMAPI(llm LLMAPI) { s.llm = llm } func (s *PluginSDK) SetSocialAPI(social SocialAPI) { s.social = social } func (s *PluginSDK) SetEventSubscriber(es EventSubscriber) { s.events = es } +// SetPluginMgrAPI sets the plugin manager API (called by the bridge at startup). +func (s *PluginSDK) SetPluginMgrAPI(pm PluginMgrAPI) { s.plgMgr = pm } + +// PluginMgr returns the plugin manager API (ReloadOne / ReloadPlugins / list). +// May be nil if the host did not wire it. +func (s *PluginSDK) PluginMgr() PluginMgrAPI { return s.plgMgr } + // ---- IO Convenience Methods ---- // InjectInterruptText injects a text interrupt that can preempt current LLM processing.