49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
|
|
// Package ide provides an MCP subsystem that bridges the desktop IDE to
|
||
|
|
// a Laravel core-agentic backend over WebSocket.
|
||
|
|
package ide
|
||
|
|
|
||
|
|
import "time"
|
||
|
|
|
||
|
|
// Config holds connection and workspace settings for the IDE subsystem.
|
||
|
|
type Config struct {
|
||
|
|
// LaravelWSURL is the WebSocket endpoint for the Laravel core-agentic backend.
|
||
|
|
LaravelWSURL string
|
||
|
|
|
||
|
|
// WorkspaceRoot is the local path used as the default workspace context.
|
||
|
|
WorkspaceRoot string
|
||
|
|
|
||
|
|
// ReconnectInterval controls how long to wait between reconnect attempts.
|
||
|
|
ReconnectInterval time.Duration
|
||
|
|
|
||
|
|
// MaxReconnectInterval caps exponential backoff for reconnection.
|
||
|
|
MaxReconnectInterval time.Duration
|
||
|
|
}
|
||
|
|
|
||
|
|
// DefaultConfig returns sensible defaults for local development.
|
||
|
|
func DefaultConfig() Config {
|
||
|
|
return Config{
|
||
|
|
LaravelWSURL: "ws://localhost:9876/ws",
|
||
|
|
WorkspaceRoot: ".",
|
||
|
|
ReconnectInterval: 2 * time.Second,
|
||
|
|
MaxReconnectInterval: 30 * time.Second,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Option configures the IDE subsystem.
|
||
|
|
type Option func(*Config)
|
||
|
|
|
||
|
|
// WithLaravelURL sets the Laravel WebSocket endpoint.
|
||
|
|
func WithLaravelURL(url string) Option {
|
||
|
|
return func(c *Config) { c.LaravelWSURL = url }
|
||
|
|
}
|
||
|
|
|
||
|
|
// WithWorkspaceRoot sets the workspace root directory.
|
||
|
|
func WithWorkspaceRoot(root string) Option {
|
||
|
|
return func(c *Config) { c.WorkspaceRoot = root }
|
||
|
|
}
|
||
|
|
|
||
|
|
// WithReconnectInterval sets the base reconnect interval.
|
||
|
|
func WithReconnectInterval(d time.Duration) Option {
|
||
|
|
return func(c *Config) { c.ReconnectInterval = d }
|
||
|
|
}
|