jseval

package
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrMissingHTTPFetchArgument = errors.New("httpFetch requires at least one argument")
	ErrMissingHTTPFetchURL      = errors.New("httpFetch requires a non-empty 'url'")
)

Simple typed errors so callers can distinguish mis-use vs network errors.

Functions

func Compile

func Compile(name, src string) (*goja.Program, error)

Compile wraps goja.Compile so callers don’t depend directly on goja.

func RunProgram

func RunProgram(
	ctx context.Context,
	vm *goja.Runtime,
	prog *goja.Program,
	_ ExecOptions,
) (goja.Value, error)

RunProgram executes a precompiled program in the given VM, with context cancellation and panic recovery. It DOES NOT wire builtins; caller must have called Env.SetupVM first.

Types

type ActionFunc

type ActionFunc func() (interface{}, error)

type Builtin

type Builtin interface {
	Name() string
	Description() string
	// ParametersSchema returns a JSON Schema object (type, properties, required)
	// compatible with taskengine.FunctionTool.Parameters. May be nil or empty.
	ParametersSchema() map[string]any
	// Register performs vm.Set(name, ...) and uses deps where needed.
	Register(vm *goja.Runtime, ctx context.Context, tracker libtracker.ActivityTracker, col *Collector, deps BuiltinHandlers) error
}

Builtin is the plugin interface for VM globals. Each implementation provides name, description, parameters schema, and registers itself on the VM.

func DefaultBuiltins

func DefaultBuiltins() []Builtin

DefaultBuiltins returns the default set of builtins in registration order.

type BuiltinHandlers

type BuiltinHandlers struct {
	Eventsource          eventsourceservice.Service
	TaskService          execservice.ExecService
	TaskchainService     taskchainservice.Service
	TaskchainExecService execservice.TasksEnvService
	FunctionService      functionservice.Service // not used yet, but available

	HookRepo taskengine.HookRepo
}

BuiltinHandlers holds the REAL services used by the builtins. These are injected once when you create the env.

type CallTaskChainBuiltin

type CallTaskChainBuiltin struct{}

CallTaskChainBuiltin registers callTaskChain(chainID, input).

func (CallTaskChainBuiltin) Description

func (CallTaskChainBuiltin) Description() string

func (CallTaskChainBuiltin) Name

func (CallTaskChainBuiltin) ParametersSchema

func (CallTaskChainBuiltin) ParametersSchema() map[string]any

func (CallTaskChainBuiltin) Register

type Collector

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

Collector accumulates logs and call records for a single JS execution.

func NewCollector

func NewCollector() *Collector

func (*Collector) Add

func (c *Collector) Add(entry ExecLogEntry)

func (*Collector) Logs

func (c *Collector) Logs() []ExecLogEntry

type ConsoleBuiltin

type ConsoleBuiltin struct{}

ConsoleBuiltin registers the console object (console.log).

func (ConsoleBuiltin) Description

func (ConsoleBuiltin) Description() string

func (ConsoleBuiltin) Name

func (ConsoleBuiltin) Name() string

func (ConsoleBuiltin) ParametersSchema

func (ConsoleBuiltin) ParametersSchema() map[string]any

func (ConsoleBuiltin) Register

type Env

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

Env = configured JS environment with tracker + services.

func NewEnv

func NewEnv(
	tracker libtracker.ActivityTracker,
	deps BuiltinHandlers,
	builtins []Builtin,
) *Env

func (*Env) GetBuiltinSignatures

func (e *Env) GetBuiltinSignatures() []taskengine.Tool

GetBuiltinSignatures returns tool-shaped descriptions for all registered builtins, for use in sandbox API documentation to the model.

func (*Env) GetExecuteHookToolDescriptions

func (e *Env) GetExecuteHookToolDescriptions(ctx context.Context) ([]taskengine.Tool, error)

GetExecuteHookToolDescriptions returns tool-shaped descriptions for all tools callable via executeHook(hookName, toolName, args), using the env's HookRepo. Used to document the sandbox API for the model.

func (*Env) SetBuiltinHandlers

func (e *Env) SetBuiltinHandlers(deps BuiltinHandlers)

func (*Env) SetupVM

func (e *Env) SetupVM(ctx context.Context, vm *goja.Runtime, col *Collector) error

SetupVM wires console + builtins into the given VM using the env’s deps. Everything they do gets appended to the Collector.

type ExecLogEntry

type ExecLogEntry struct {
	Timestamp time.Time      `json:"ts"`
	Kind      string         `json:"kind"`            // "console", "sendEvent", "executeTask", "executeTaskChain", ...
	Level     string         `json:"level,omitempty"` // for console logs, e.g. "log", "error"
	Name      string         `json:"name,omitempty"`  // builtin / function name (sendEvent, executeTask, etc)
	Message   string         `json:"message,omitempty"`
	Args      []any          `json:"args,omitempty"` // raw args for console / calls
	Meta      map[string]any `json:"meta,omitempty"` // arbitrary extra data (event_type, chain_id, etc)
	Error     string         `json:"error,omitempty"`
}

ExecLogEntry is a single line in the JS execution trace.

type ExecOptions

type ExecOptions struct{}

ExecOptions is a placeholder for future tuning (timeouts, maxSteps, etc).

type ExecuteHookBuiltin

type ExecuteHookBuiltin struct{}

ExecuteHookBuiltin registers executeHook(hookName, toolName, args).

func (ExecuteHookBuiltin) Description

func (ExecuteHookBuiltin) Description() string

func (ExecuteHookBuiltin) Name

func (ExecuteHookBuiltin) Name() string

func (ExecuteHookBuiltin) ParametersSchema

func (ExecuteHookBuiltin) ParametersSchema() map[string]any

func (ExecuteHookBuiltin) Register

type ExecuteTaskBuiltin

type ExecuteTaskBuiltin struct{}

ExecuteTaskBuiltin registers executeTask(prompt, modelName, modelProvider).

func (ExecuteTaskBuiltin) Description

func (ExecuteTaskBuiltin) Description() string

func (ExecuteTaskBuiltin) Name

func (ExecuteTaskBuiltin) Name() string

func (ExecuteTaskBuiltin) ParametersSchema

func (ExecuteTaskBuiltin) ParametersSchema() map[string]any

func (ExecuteTaskBuiltin) Register

type ExecuteTaskChainBuiltin

type ExecuteTaskChainBuiltin struct{}

ExecuteTaskChainBuiltin registers executeTaskChain(chainID, input).

func (ExecuteTaskChainBuiltin) Description

func (ExecuteTaskChainBuiltin) Description() string

func (ExecuteTaskChainBuiltin) Name

func (ExecuteTaskChainBuiltin) ParametersSchema

func (ExecuteTaskChainBuiltin) ParametersSchema() map[string]any

func (ExecuteTaskChainBuiltin) Register

type HTTPClient

type HTTPClient interface {
	Do(req *http.Request) (*http.Response, error)
}

HTTPClient is the minimal interface we need from an HTTP client.

type HTTPFetchBuiltin

type HTTPFetchBuiltin struct{}

HTTPFetchBuiltin registers httpFetch(urlOrOptions).

func (HTTPFetchBuiltin) Description

func (HTTPFetchBuiltin) Description() string

func (HTTPFetchBuiltin) Name

func (HTTPFetchBuiltin) Name() string

func (HTTPFetchBuiltin) ParametersSchema

func (HTTPFetchBuiltin) ParametersSchema() map[string]any

func (HTTPFetchBuiltin) Register

type SendEventBuiltin

type SendEventBuiltin struct{}

SendEventBuiltin registers sendEvent(eventType, data).

func (SendEventBuiltin) Description

func (SendEventBuiltin) Description() string

func (SendEventBuiltin) Name

func (SendEventBuiltin) Name() string

func (SendEventBuiltin) ParametersSchema

func (SendEventBuiltin) ParametersSchema() map[string]any

func (SendEventBuiltin) Register

Jump to

Keyboard shortcuts

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