server

package
v0.17.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2026 License: MIT Imports: 36 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Functions

func RunJSONRPCServer added in v0.12.0

func RunJSONRPCServer(ctx context.Context, config ServerConfig) error

RunJSONRPCServer runs the stdio JSON-RPC 2.0 server. It performs the same bootstrap as RunServer (setup script registers handlers via runtime.jsonrpc.method/notification or runtime.plugin.serve/function), then serves requests from stdin until stdin closes or a terminating signal arrives.

When the setup script calls runtime.plugin.serve(), the server switches to the full Scriptling plugin protocol (scriptling.handshake, function.call, etc.) so that clients can load it with scriptling=True and receive auto-generated proxy libraries. Otherwise the plain JSON-RPC 2.0 loop runs.

func RunMCPStdioServer added in v0.16.0

func RunMCPStdioServer(ctx context.Context, config ServerConfig) error

RunMCPStdioServer runs the MCP server over stdio (newline-delimited JSON-RPC 2.0 on stdin/stdout). It performs the same bootstrap as RunServer — the setup script may register libraries or keep itself alive via runtime.start_server() — then builds the MCP server from --mcp-tools / --mcp-exec-script and serves it until stdin closes or a terminating signal arrives.

Logs must go to stderr in this mode (the CLI arranges this) so the stdout protocol stream stays pure.

func RunServer

func RunServer(ctx context.Context, config ServerConfig) error

RunServer is the main entry point for running the server

Types

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server represents the HTTP server

func NewServer

func NewServer(config ServerConfig) (*Server, error)

NewServer creates a new HTTP server

func (*Server) RunJSONRPCStdio added in v0.12.0

func (s *Server) RunJSONRPCStdio(ctx context.Context) error

RunJSONRPCStdio serves JSON-RPC 2.0 requests from stdin, writing one response per line to stdout. Each request runs on a fresh Scriptling evaluator in its own goroutine. The call blocks until stdin closes (or returns on a fatal read/write error).

func (*Server) RunPluginServerStdio added in v0.15.0

func (s *Server) RunPluginServerStdio(ctx context.Context) error

RunPluginServerStdio serves the Scriptling plugin protocol over stdio using the pre-built plugin server.

func (*Server) Start

func (s *Server) Start() error

Start starts the HTTP server

func (*Server) Stop

func (s *Server) Stop(ctx context.Context) error

Stop gracefully stops the server

type ServerConfig

type ServerConfig struct {
	Address         string
	ScriptFile      string
	LibDirs         []string
	Packages        []string // Package (.zip) paths or URLs
	Insecure        bool     // Allow self-signed HTTPS for package URLs
	CacheDir        string   // Override default OS cache dir for remote packages
	BearerToken     string
	AllowedPaths    []string // Filesystem path restrictions (empty = no restrictions)
	DisabledLibs    []string // Built-in libraries to disable (empty = all enabled)
	PluginDirs      []string
	PluginManager   *scriptlingplugin.Manager
	MCPToolsDir     string // Empty means MCP disabled
	MCPResourcesDir string // Folder of resource .toml/.py pairs (empty = none)
	MCPPromptsDir   string // Folder of prompt .toml/.py pairs (empty = none)
	MCPExecTool     bool   // Enable code execution tool
	JSONRPC         bool   // Mount JSON-RPC over HTTP at /json-rpc
	KVStoragePath   string // Empty means in-memory KV store
	WebRoot         string // Directory to serve static files from (empty = disabled)
	SecretRegistry  *secretprovider.Registry
	DockerSock      string
	PodmanSock      string
	TLSCert         string
	TLSKey          string
	TLSGenerate     bool

	// ExtraLibs, if set, registers additional libraries on every evaluator
	// after the standard library set — the setup script and every json-rpc,
	// http, mcp and websocket request handler. Host applications use this to
	// expose their own libraries to served scripts.
	ExtraLibs func(*scriptling.Scriptling)
}

ServerConfig holds the configuration for the HTTP server

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL