package pluginabi import "encoding/json" const ( // ABIVersion tracks the native C ABI shape (native plugin exports). ABIVersion uint32 = 1 // SchemaVersion tracks the RPC JSON contract exchanged at plugin.register. // Version 2 adds request lifecycle completion and active request termination. SchemaVersion uint32 = 2) 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" // MethodModelRoute asks a router plugin to select a plugin executor for a matching request. MethodModelRoute = "model.route" 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" MethodRequestComplete = "request.complete" 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" MethodHostAuthList = "host.auth.list" MethodHostAuthGet = "host.auth.get" MethodHostAuthGetRuntime = "host.auth.get_runtime" MethodHostAuthSave = "host.auth.save") 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"` HTTPStatus int `json:"http_status,omitempty"`}
package pluginabi
import "encoding/json"
const (
// ABIVersion tracks the native C ABI shape (native plugin exports).
ABIVersion uint32 = 1
// SchemaVersion tracks the RPC JSON contract exchanged at plugin.register.
// Version 2 adds request lifecycle completion and active request termination.
SchemaVersion uint32 = 2
)
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"
// MethodModelRoute asks a router plugin to select a plugin executor for a matching request.
MethodModelRoute = "model.route"
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"
MethodRequestComplete = "request.complete"
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"
MethodHostAuthList = "host.auth.list"
MethodHostAuthGet = "host.auth.get"
MethodHostAuthGetRuntime = "host.auth.get_runtime"
MethodHostAuthSave = "host.auth.save"
)
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"`
HTTPStatus int `json:"http_status,omitempty"`
}