From bc0d1b32aacf820872b49669a6e158c63e3b631f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Such=C3=A1nek?= Date: Tue, 13 Oct 2026 09:30:34 +0200 Subject: [PATCH] fix(server): the managed Folder's refusals say what happens in plain words MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The messages a person sees when a Lazurio Environment refuses a project or chat outside its Lazurio Folder used internal words ("retarget", "provides … at its Folder root", "T3 worktree", "must not become a repository"). The wording pass on #58 suggested plain replacements, and the Admin asked that they be applied. Behaviour does not change; the engine test that pinned "retarget" now pins the new words. Co-Authored-By: Claude Opus 5.5 --- apps/server/src/lazurio/managedFolder.ts | 12 ++++++------ .../orchestration/Layers/OrchestrationEngine.test.ts | 2 +- .../orchestration/Layers/ProviderCommandReactor.ts | 2 +- apps/server/src/vcs/VcsProvisioningService.ts | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/server/src/lazurio/managedFolder.ts b/apps/server/src/lazurio/managedFolder.ts index 341bc631bae23..1857fee3319ba 100644 --- a/apps/server/src/lazurio/managedFolder.ts +++ b/apps/server/src/lazurio/managedFolder.ts @@ -9,34 +9,34 @@ export function managedFolderRefusal( ): string | null { if (folder === undefined) return null; const message = - "Start a new chat in the Lazurio project. This Environment starts agents in its Lazurio Folder; existing conversations remain available as history."; + "Start a new chat in the Lazurio project. Agents in this Environment work in its Lazurio Folder; your earlier chats stay here as history."; const project = (id: string) => state.projects.find((item) => item.id === id); const allowedProject = (id: string) => project(id)?.workspaceRoot === folder; switch (command.type) { case "project.create": return command.workspaceRoot === folder ? null - : "This Environment provides the Lazurio project at its Folder root."; + : "In this Environment, the Lazurio project is the Lazurio Folder itself."; case "project.meta.update": if ( allowedProject(command.projectId) && command.title !== undefined && command.title !== "Lazurio" ) - return "The managed project is named Lazurio."; + return "This project keeps the name Lazurio."; return command.workspaceRoot !== undefined && command.workspaceRoot !== project(command.projectId)?.workspaceRoot - ? "A managed Environment does not retarget projects. Use the Lazurio project." + ? "In this Environment a project cannot point to another folder. Use the Lazurio project." : null; case "project.delete": return allowedProject(command.projectId) - ? "The Lazurio project is provided by this Environment and cannot be removed." + ? "The Lazurio project belongs to this Environment and cannot be removed." : null; case "thread.create": return allowedProject(command.projectId) && command.worktreePath === null ? null : message; case "thread.meta.update": return command.worktreePath != null - ? "Chats in this Environment start at the Lazurio Folder root, without a T3 worktree." + ? "Chats in this Environment start in the Lazurio Folder, without a separate worktree." : null; case "thread.turn.start": { const thread = state.threads.find((item) => item.id === command.threadId); diff --git a/apps/server/src/orchestration/Layers/OrchestrationEngine.test.ts b/apps/server/src/orchestration/Layers/OrchestrationEngine.test.ts index d01c4a3da8acf..3ef633ab01d67 100644 --- a/apps/server/src/orchestration/Layers/OrchestrationEngine.test.ts +++ b/apps/server/src/orchestration/Layers/OrchestrationEngine.test.ts @@ -224,7 +224,7 @@ describe("OrchestrationEngine", () => { projectId: id, workspaceRoot: "/tmp/other", }), - ).rejects.toThrow("retarget"); + ).rejects.toThrow("cannot point to another folder"); await expect( dispatch({ type: "project.delete", commandId: CommandId.make("delete"), projectId: id }), ).rejects.toThrow("cannot be removed"); diff --git a/apps/server/src/orchestration/Layers/ProviderCommandReactor.ts b/apps/server/src/orchestration/Layers/ProviderCommandReactor.ts index ffb6cdc8b9814..7b00d044842f9 100644 --- a/apps/server/src/orchestration/Layers/ProviderCommandReactor.ts +++ b/apps/server/src/orchestration/Layers/ProviderCommandReactor.ts @@ -722,7 +722,7 @@ const make = Effect.gen(function* () { provider: preferredProvider, method: "thread.turn.start", detail: - "This Environment starts agents in its Lazurio Folder. Start a new chat in the Lazurio project.", + "Agents in this Environment work in its Lazurio Folder. Start a new chat in the Lazurio project.", }); } } diff --git a/apps/server/src/vcs/VcsProvisioningService.ts b/apps/server/src/vcs/VcsProvisioningService.ts index 1c6ef72b84b3a..8f16c5b0b4fc0 100644 --- a/apps/server/src/vcs/VcsProvisioningService.ts +++ b/apps/server/src/vcs/VcsProvisioningService.ts @@ -53,7 +53,7 @@ export const make = Effect.gen(function* () { operation: "VcsProvisioningService.initRepository", kind: input.kind ?? "git", detail: - "The Lazurio Folder contains separate repositories and must not become a repository itself.", + "The Lazurio Folder holds separate repositories, so it cannot become a repository itself.", }); } const kind = yield* resolveRequestedKind(input.kind);