Quick Start
- Create Plugin Project
[]
= "my-plugin"
= "0.1.0"
= "2024"
[]
= ["cdylib"]
[]
= "0.3"
- Implement Plugin
In src/lib.rs:
use ;
use request;
use Value;
;
// Export the plugin
export_wasm!;
- Build Plugin
Available Hooks
| Trait Method | When Called |
|---|---|
on_request |
HTTP request headers received, before proxying |
on_request_body |
Request body received |
on_response |
Response headers received from upstream |
on_response_body |
Response body received (sync, not async) |
on_logging |
After request completes (logging only) |
Logging
Use the provided macros with context:
log_error!;
log_warn!;
log_info!;
log_debug!;
log_trace!;
HTTP Requests
Plugins can make outbound HTTP requests via PluginContext::http_request:
use ;
// Simple GET
let resp = ctx.http_request ?;
let body_text = resp.text ?;
let json: Value = resp.json ?;
// POST with JSON body
let resp = ctx.http_request ?;
// Multipart form upload
let resp = ctx.http_request ?;
Context API
PluginContext provides request metadata:
let request_id = ctx.request_id;
let is_sse = ctx.is_sse;
let is_websocket = ctx.is_websocket;
let route_name = ctx.get_route_name;
let routing_url = ctx.get_routing_url;
// With `model` feature enabled:
let model_name = ctx.get_model_name;
let provider = ctx.get_model_provider;