from __future__ import annotations
import asyncio
import json
from pathlib import Path
try:
from llama_index.core.tools import FunctionTool
except ImportError:
print("Install llama-index-core to run this example.")
raise
from a1.llamaindex_tool import a1_llamaindex_guard
@a1_llamaindex_guard(passport_path="passport.json", capability="research.web_search")
async def web_search(query: str) -> str:
return f"[authorized] Search results for: {query}"
@a1_llamaindex_guard(passport_path="passport.json", capability="research.summarize")
async def summarize_document(url: str) -> str:
return f"[authorized] Summary of document at: {url}"
web_search_tool = FunctionTool.from_defaults(async_fn=web_search)
summarize_tool = FunctionTool.from_defaults(async_fn=summarize_document)
async def main() -> None:
result = await web_search(query="AI agent security frameworks 2025")
print(result)
summary = await summarize_document(url="https://example.com/whitepaper.pdf")
print(summary)
if __name__ == "__main__":
asyncio.run(main())