from haystack.components.agents import Agent
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
from haystack_integrations.tools.mirage import (
MirageMount,
MirageShellTool,
MirageWorkspace,
)
workspace = MirageWorkspace([
MirageMount(path="/data", resource="ram"),
MirageMount(path="/s3", resource="s3", config={"bucket": "my-bucket"},
read_only=True),
])
tool = MirageShellTool(
workspace,
allowed_commands=["ls", "cat", "grep", "head", "wc", "cp"],
)
agent = Agent(chat_generator=OpenAIChatGenerator(model="gpt-4o-mini"),
tools=[tool])
result = agent.run(messages=[
ChatMessage.from_user("How many lines in /s3/log.txt mention 'alert'?"),
])
print(result["messages"][-1].text)