{"record":{"id":"8968cf610c58846d","repo":"router-for-me/CLIProxyAPI","slug":"plugin-executor-s-panic-v","errorCode":null,"errorMessage":"plugin executor %s panic: %v","messagePattern":"plugin executor (.+?) panic: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/pluginhost/adapters_executors.go","lineNumber":643,"sourceCode":"\nfunc sendExecutorPluginStreamChunk(ctx context.Context, out chan<- pluginapi.ExecutorStreamChunk, chunk pluginapi.ExecutorStreamChunk) bool {\n\tselect {\n\tcase out <- pluginapi.ExecutorStreamChunk{Payload: bytes.Clone(chunk.Payload), Err: chunk.Err}:\n\t\treturn true\n\tcase <-ctx.Done():\n\t\treturn false\n\t}\n}\n\nfunc (a *executorAdapter) Execute(ctx context.Context, auth *coreauth.Auth, req coreexecutor.Request, opts coreexecutor.Options) (resp coreexecutor.Response, err error) {\n\tif a == nil || a.executor == nil || a.host.isPluginFused(a.pluginID) || !a.host.pluginIdentityCurrent(a.pluginID, a.path, a.version) {\n\t\treturn coreexecutor.Response{}, fmt.Errorf(\"plugin executor %s is unavailable\", a.Identifier())\n\t}\n\tdefer func() {\n\t\tif recovered := recover(); recovered != nil {\n\t\t\ta.host.fusePlugin(a.pluginID, \"Executor.Execute\", recovered)\n\t\t\tresp = coreexecutor.Response{}\n\t\t\terr = fmt.Errorf(\"plugin executor %s panic: %v\", a.Identifier(), recovered)\n\t\t}\n\t}()\n\n\tprepared, errPrepare := a.prepareExecutorCall(req, opts)\n\tif errPrepare != nil {\n\t\treturn coreexecutor.Response{}, errPrepare\n\t}\n\tpluginResp, errExecute := a.executor.Execute(ctx, buildExecutorRequest(a.host, a.provider, auth, prepared.req, prepared.opts))\n\tif errExecute != nil {\n\t\treturn coreexecutor.Response{}, errExecute\n\t}\n\treturn coreexecutor.Response{\n\t\tPayload:  a.translateExecutorResponse(ctx, prepared, pluginResp.Payload, false, nil),\n\t\tMetadata: cloneAnyMap(pluginResp.Metadata),\n\t\tHeaders:  cloneHeader(pluginResp.Headers),\n\t}, nil\n}\n","sourceCodeStart":625,"sourceCodeEnd":661,"githubUrl":"https://github.com/router-for-me/CLIProxyAPI/blob/78f0c4079e3e6273d65d03b5549cffc898703264/internal/pluginhost/adapters_executors.go#L625-L661","documentation":"Error \"plugin executor %s panic: %v\" thrown in router-for-me/CLIProxyAPI.","triggerScenarios":"Thrown at internal/pluginhost/adapters_executors.go:643 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the panic value and plugin logs to find the crashing code path.","Update or replace the faulty plugin; report the panic to the plugin author."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"78f0c4079e3e6273d65d03b5549cffc898703264","analyzedAt":"2026-08-15T12:26:37.444Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}