Spaces:
Sleeping
Sleeping
| """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)} | |