annator-command-center / tools /canvas_sheets_tool.py
techprotrade's picture
Deploy ATOM FastAPI command center runtime (part 10)
a37e6db verified
Raw
History Blame Contribute Delete
2.01 kB
"""Spreadsheet Canvas Tool"""
import logging
from typing import Any, Dict, List, Optional
logger = logging.getLogger(__name__)
async def present_sheets_canvas(
user_id: str,
title: str,
data: Dict[str, Any],
agent_id: Optional[str] = None,
layout: str = "sheet",
formulas: List[str] = None
) -> Dict[str, Any]:
"""
Present a spreadsheet canvas.
Creates a grid-based spreadsheet with cells, formulas, and charts.
"""
from core.canvas_sheets_service import SpreadsheetCanvasService
from core.database import get_db_session
from tools.canvas_tool import present_specialized_canvas
try:
with get_db_session() as db:
service = SpreadsheetCanvasService(db)
result = service.create_spreadsheet_canvas(
user_id=user_id,
title=title,
data=data,
agent_id=agent_id,
layout=layout,
formulas=formulas
)
if not result.get("success"):
return result
canvas_id = result["canvas_id"]
present_result = await present_specialized_canvas(
user_id=user_id,
canvas_type="sheets",
component_type="data_grid",
data={
"title": title,
"cells": result["cells"],
"formulas": formulas or []
},
title=title,
agent_id=agent_id,
layout=layout
)
if not present_result.get("success"):
return present_result
return {
"success": True,
"canvas_id": canvas_id,
"title": title,
"message": f"Presented spreadsheet canvas: {title}"
}
except Exception as e:
logger.error(f"Failed to present sheets canvas: {e}")
return {"success": False, "error": str(e)}