pikuri-workspace

Filesystem tools + Workspace/Confirmer seams for the pikuri AI-assistant toolkit.

Self-contained "operate on a directory tree" toolkit:

  • Pikuri::Tool::Workspace — abstract base + bundled Workspace::Cwd that scopes filesystem access to a chosen root, rejecting ..-escapes and symlinks that resolve outside the root.
  • Pikuri::Tool::Confirmer — abstract base + AUTO_APPROVE / TERMINAL for user-state mutations.
  • Five file tools: Pikuri::Tool::Read, Pikuri::Tool::Write, Pikuri::Tool::Edit, Pikuri::Tool::Grep, Pikuri::Tool::Glob.

No shell execution — Pikuri::Tool::Bash ships in pikuri-code on top of these.

Install

# Gemfile
gem 'pikuri-workspace'

Usage

require 'pikuri-core'
require 'pikuri-workspace'

workspace = Pikuri::Tool::Workspace::Cwd.new(root: Dir.pwd)
confirmer = Pikuri::Tool::Confirmer::TERMINAL

agent = Pikuri::Agent.new(
  transport: ...,
  system_prompt: ...,
) do |c|
  c.add_tool Pikuri::Tool::Read.new(workspace: workspace)
  c.add_tool Pikuri::Tool::Grep.new(workspace: workspace)
  c.add_tool Pikuri::Tool::Glob.new(workspace: workspace)
  c.add_tool Pikuri::Tool::Edit.new(workspace: workspace)
  c.add_tool Pikuri::Tool::Write.new(workspace: workspace, confirmer: confirmer)
  c.add_listener ...
end

Workspace::Cwd is the "look-but-don't-leak" guard around filesystem access. Read tools route through #resolve_for_read(path); mutating tools route through #resolve_for_write(path) + the Confirmer's #confirm?(prompt:).