Fix agent workspace file handlers

This commit is contained in:
2026-03-26 13:07:47 +08:00
parent 86eb8c37a9
commit fecf8a9466
2 changed files with 33 additions and 5 deletions

View File

@@ -129,6 +129,33 @@ class RunWorkspaceManager:
) )
return asset_dir return asset_dir
def load_agent_file(
self,
*,
config_name: str,
agent_id: str,
filename: str,
) -> str:
"""Load one run-scoped agent workspace file."""
path = self.get_agent_asset_dir(config_name, agent_id) / filename
if not path.exists():
raise FileNotFoundError(f"File not found: {filename}")
return path.read_text(encoding="utf-8")
def update_agent_file(
self,
*,
config_name: str,
agent_id: str,
filename: str,
content: str,
) -> None:
"""Write one run-scoped agent workspace file."""
asset_dir = self.get_agent_asset_dir(config_name, agent_id)
asset_dir.mkdir(parents=True, exist_ok=True)
path = asset_dir / filename
path.write_text(content, encoding="utf-8")
def initialize_default_assets( def initialize_default_assets(
self, self,
config_name: str, config_name: str,

View File

@@ -13,7 +13,8 @@ from typing import Any, Dict, List, Optional
from fastapi import APIRouter, HTTPException, Depends, Body, UploadFile, File, Form from fastapi import APIRouter, HTTPException, Depends, Body, UploadFile, File, Form
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from backend.agents import AgentFactory, WorkspaceManager, get_registry from backend.agents import AgentFactory, get_registry
from backend.agents.workspace_manager import RunWorkspaceManager
from backend.agents.agent_workspace import load_agent_workspace_config from backend.agents.agent_workspace import load_agent_workspace_config
from backend.agents.skills_manager import SkillsManager from backend.agents.skills_manager import SkillsManager
from backend.agents.toolkit_factory import load_agent_profiles from backend.agents.toolkit_factory import load_agent_profiles
@@ -100,8 +101,8 @@ def get_agent_factory():
def get_workspace_manager(): def get_workspace_manager():
"""Get WorkspaceManager instance.""" """Get run-scoped workspace manager instance."""
return WorkspaceManager() return RunWorkspaceManager()
def get_skills_manager(): def get_skills_manager():
@@ -652,7 +653,7 @@ async def get_agent_file(
workspace_id: str, workspace_id: str,
agent_id: str, agent_id: str,
filename: str, filename: str,
workspace_manager: WorkspaceManager = Depends(get_workspace_manager), workspace_manager: RunWorkspaceManager = Depends(get_workspace_manager),
): ):
""" """
Read an agent's workspace file. Read an agent's workspace file.
@@ -682,7 +683,7 @@ async def update_agent_file(
agent_id: str, agent_id: str,
filename: str, filename: str,
content: str = Body(..., media_type="text/plain"), content: str = Body(..., media_type="text/plain"),
workspace_manager: WorkspaceManager = Depends(get_workspace_manager), workspace_manager: RunWorkspaceManager = Depends(get_workspace_manager),
): ):
""" """
Update an agent's workspace file. Update an agent's workspace file.