mirror of
https://gh-proxy.org/https://github.com/klinsmaya/CLIProxyAPI.git
synced 2026-11-10 10:26:48 +08:00
feat(pluginhost): introduce browser-navigable plugin resources in Management API
- Added `resources` field in `management.register` for defining browser-accessible resources. - Updated examples and documentation to reflect resource-based paths under `/v0/resource/plugins/<pluginID>/...`. - Replaced legacy `GET` menu routes with resource-based implementations for consistent plugin behavior. - Enhanced request handling for resource paths, including proper response headers and streamlined test coverage.
This commit is contained in:
@@ -37,6 +37,7 @@ type Host struct {
|
||||
commandLineFlags map[string]commandLineFlagRecord
|
||||
commandLineHits map[string]struct{}
|
||||
managementRoutes map[string]managementRouteRecord
|
||||
resourceRoutes map[string]resourceRouteRecord
|
||||
streams *streamBridge
|
||||
httpStreams *hostHTTPStreamBridge
|
||||
callbackContexts *callbackContextRegistry
|
||||
@@ -58,6 +59,7 @@ func New() *Host {
|
||||
commandLineFlags: make(map[string]commandLineFlagRecord),
|
||||
commandLineHits: make(map[string]struct{}),
|
||||
managementRoutes: make(map[string]managementRouteRecord),
|
||||
resourceRoutes: make(map[string]resourceRouteRecord),
|
||||
streams: newStreamBridge(),
|
||||
httpStreams: newHostHTTPStreamBridge(),
|
||||
callbackContexts: newCallbackContextRegistry(),
|
||||
@@ -93,6 +95,8 @@ func (h *Host) ApplyConfig(ctx context.Context, cfg *config.Config) {
|
||||
h.runtimeConfig = cfg
|
||||
|
||||
if !rc.Enabled {
|
||||
h.managementRoutes = make(map[string]managementRouteRecord)
|
||||
h.resourceRoutes = make(map[string]resourceRouteRecord)
|
||||
h.snapshot.Store(emptySnapshot())
|
||||
h.mu.Unlock()
|
||||
h.refreshThinkingProviders(nil)
|
||||
@@ -102,6 +106,8 @@ func (h *Host) ApplyConfig(ctx context.Context, cfg *config.Config) {
|
||||
files, errSelect := selectPluginFiles(rc.Dir)
|
||||
if errSelect != nil {
|
||||
log.Warnf("pluginhost: failed to select plugin files: %v", errSelect)
|
||||
h.managementRoutes = make(map[string]managementRouteRecord)
|
||||
h.resourceRoutes = make(map[string]resourceRouteRecord)
|
||||
h.snapshot.Store(emptySnapshot())
|
||||
h.mu.Unlock()
|
||||
h.refreshThinkingProviders(nil)
|
||||
@@ -187,6 +193,7 @@ func (h *Host) ShutdownAll() {
|
||||
h.commandLineFlags = make(map[string]commandLineFlagRecord)
|
||||
h.commandLineHits = make(map[string]struct{})
|
||||
h.managementRoutes = make(map[string]managementRouteRecord)
|
||||
h.resourceRoutes = make(map[string]resourceRouteRecord)
|
||||
h.snapshot.Store(emptySnapshot())
|
||||
h.mu.Unlock()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user