mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-07-05 10:14:42 +08:00
- Added an example plugin `host-model-callback` in Go to summarize host model callbacks. - Implemented `cliproxy_plugin_init`, `cliproxyPluginCall`, and other plugin functions for callback handling. - Introduced API handlers for `ModelExecution` and `ModelExecutionStream` with support for both streaming and non-streaming requests. - Included unit tests (`model_execution_test.go`) to validate execution logic and streaming responses.
83 lines
2.8 KiB
Go
83 lines
2.8 KiB
Go
package pluginabi
|
|
|
|
import "encoding/json"
|
|
|
|
const (
|
|
ABIVersion uint32 = 1
|
|
SchemaVersion uint32 = 1
|
|
)
|
|
|
|
const (
|
|
MethodPluginRegister = "plugin.register"
|
|
MethodPluginReconfigure = "plugin.reconfigure"
|
|
MethodPluginShutdown = "plugin.shutdown"
|
|
|
|
MethodModelRegister = "model.register"
|
|
MethodModelStatic = "model.static"
|
|
MethodModelForAuth = "model.for_auth"
|
|
|
|
MethodAuthIdentifier = "auth.identifier"
|
|
MethodAuthParse = "auth.parse"
|
|
MethodAuthLoginStart = "auth.login.start"
|
|
MethodAuthLoginPoll = "auth.login.poll"
|
|
MethodAuthRefresh = "auth.refresh"
|
|
|
|
MethodFrontendAuthIdentifier = "frontend_auth.identifier"
|
|
MethodFrontendAuthAuthenticate = "frontend_auth.authenticate"
|
|
|
|
// MethodSchedulerPick asks a scheduler plugin to select an auth candidate.
|
|
MethodSchedulerPick = "scheduler.pick"
|
|
|
|
MethodExecutorIdentifier = "executor.identifier"
|
|
MethodExecutorExecute = "executor.execute"
|
|
MethodExecutorExecuteStream = "executor.execute_stream"
|
|
MethodExecutorCountTokens = "executor.count_tokens"
|
|
MethodExecutorHTTPRequest = "executor.http_request"
|
|
|
|
MethodRequestTranslate = "request.translate"
|
|
MethodRequestNormalize = "request.normalize"
|
|
MethodRequestInterceptBefore = "request.intercept_before"
|
|
MethodRequestInterceptAfter = "request.intercept_after"
|
|
|
|
MethodResponseTranslate = "response.translate"
|
|
MethodResponseNormalizeBefore = "response.normalize_before"
|
|
MethodResponseNormalizeAfter = "response.normalize_after"
|
|
MethodResponseInterceptAfter = "response.intercept_after"
|
|
MethodResponseInterceptStreamChunk = "response.intercept_stream_chunk"
|
|
|
|
MethodThinkingIdentifier = "thinking.identifier"
|
|
MethodThinkingApply = "thinking.apply"
|
|
|
|
MethodUsageHandle = "usage.handle"
|
|
|
|
MethodCommandLineRegister = "command_line.register"
|
|
MethodCommandLineExecute = "command_line.execute"
|
|
|
|
MethodManagementRegister = "management.register"
|
|
MethodManagementHandle = "management.handle"
|
|
|
|
MethodHostHTTPDo = "host.http.do"
|
|
MethodHostHTTPDoStream = "host.http.do_stream"
|
|
MethodHostHTTPStreamRead = "host.http.stream_read"
|
|
MethodHostHTTPStreamClose = "host.http.stream_close"
|
|
MethodHostModelExecute = "host.model.execute"
|
|
MethodHostModelExecuteStream = "host.model.execute_stream"
|
|
MethodHostModelStreamRead = "host.model.stream_read"
|
|
MethodHostModelStreamClose = "host.model.stream_close"
|
|
MethodHostStreamEmit = "host.stream.emit"
|
|
MethodHostStreamClose = "host.stream.close"
|
|
MethodHostLog = "host.log"
|
|
)
|
|
|
|
type Envelope struct {
|
|
OK bool `json:"ok"`
|
|
Result json.RawMessage `json:"result,omitempty"`
|
|
Error *Error `json:"error,omitempty"`
|
|
}
|
|
|
|
type Error struct {
|
|
Code string `json:"code"`
|
|
Message string `json:"message"`
|
|
Retryable bool `json:"retryable,omitempty"`
|
|
}
|