Skip to content
Kward Search API index

Module: Kward::WorkspaceFactory

Defined in:
lib/kward/workspace_factory.rb

Overview

Builds workspaces with the same user-configured command sandbox in every frontend.

Class Method Summary collapse

Class Method Details

.build(root:, guardrails: true, config: ConfigFiles.read_config, strict: false) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/kward/workspace_factory.rb', line 11

def build(root:, guardrails: true, config: ConfigFiles.read_config, strict: false)
  policy = ConfigFiles.sandbox_policy(root, config)
  policy = strict_policy(root, policy) if strict
  runner = Sandbox::RunnerFactory.build(policy)
  if strict && !runner.capabilities.filesystem_enforced?
    reason = runner.capabilities.reason || "filesystem enforcement is unavailable"
    raise Sandbox::UnavailableError, "Strict workspace sandbox is unavailable: #{reason}"
  end

  Workspace.new(root:, guardrails: strict ? true : guardrails, command_runner: runner)
end