feat: DefaultPath als Base-Path für User-Workspaces
- WorkspaceHelper.cs: Zentrale Workspace-Auflösung (relativ → absolut) - Session-Workspace wird relativ zum User-DefaultPath gespeichert - System-Prompt bekommt aufgelösten absoluten Pfad - Path-Traversal-Schutz: '..' in Workspace-Pfaden blockiert - Browse-API gibt '..' nicht mehr als Eintrag zurück - Folder-Browser: basePath-Limit, Back-Button navigiert zum Parent - DefaultPath nur durch Admin bearbeitbar (Profil: readonly) - Legacy: Absolute Pfade in session.Workspace weiterhin kompatibel
This commit is contained in:
1 parent
8e7bda50f9
commit
4e1ed81f37
12 files changed
+240
-106
No files matched your search
@@ -58,14 +58,16 @@ public class ChatService
|
||||
var agentMemoryDir = _memoryService.GetAgentMemoryDir(agent.AgentId);
|
||||
var agentSkills = await _db.GetAgentSkills(agent.AgentId);
|
||||
var user = userId != null ? await _db.GetUser(userId) : null;
|
||||
var systemPromptText = SystemPromptBuilder.Build(
|
||||
agent, session, markedMessages, _memoryService, agentMemoryDir,
|
||||
agentSkills, _skillService, userPersona: user?.GetEffectivePersona());
|
||||
|
||||
var workspace = session.Workspace;
|
||||
var workspace = WorkspaceHelper.ResolveWorkspace(session, user);
|
||||
if (string.IsNullOrEmpty(workspace) && agentSkills.Any())
|
||||
workspace = "/tmp";
|
||||
|
||||
var systemPromptText = SystemPromptBuilder.Build(
|
||||
agent, session, markedMessages, _memoryService, agentMemoryDir,
|
||||
agentSkills, _skillService, userPersona: user?.GetEffectivePersona(),
|
||||
resolvedWorkspace: workspace);
|
||||
|
||||
var toolChoice = agent.ToolChoice ?? "any";
|
||||
var hasWorkspace = !string.IsNullOrEmpty(workspace);
|
||||
var includeMemory = agent.UseMemory && !string.IsNullOrEmpty(agent.AgentId);
|
||||
|
||||
Reference in new issue
Block a user