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 + bundledWorkspace::Cwdthat scopes filesystem access to a chosen root, rejecting..-escapes and symlinks that resolve outside the root.Pikuri::Tool::Confirmer— abstract base +AUTO_APPROVE/TERMINALfor 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:).