diff --git a/packages/adapters/src/agent-environment.test.ts b/packages/adapters/src/agent-environment.test.ts index a940c9c..a9660d7 100644 --- a/packages/adapters/src/agent-environment.test.ts +++ b/packages/adapters/src/agent-environment.test.ts @@ -1,11 +1,19 @@ import { describe, expect, it } from "vitest"; import { + agentSecretScopeForRun, decryptAgentEnvironment, formatAgentEnvironmentInstruction, redactAgentCommandResult, } from "./agent-environment.js"; describe("agent-environment", () => { + it("scopes agent secrets to the run owner in shared Spaces", () => { + expect(agentSecretScopeForRun("shared-ws", "member-user")).toEqual({ + spaceId: "shared-ws", + createdByUserId: "member-user", + }); + }); + it("decrypts named agent secrets", () => { const env = decryptAgentEnvironment( [ diff --git a/packages/adapters/src/agent-environment.ts b/packages/adapters/src/agent-environment.ts index 0c839d3..031b078 100644 --- a/packages/adapters/src/agent-environment.ts +++ b/packages/adapters/src/agent-environment.ts @@ -10,6 +10,10 @@ type SecretLoader = { load(ciphertext: string, recordId: string): string; }; +export function agentSecretScopeForRun(spaceId: string, userId: string) { + return { spaceId, createdByUserId: userId }; +} + export function decryptAgentEnvironment( rows: EncryptedAgentSecret[], secrets: SecretLoader, diff --git a/packages/adapters/src/executor.ts b/packages/adapters/src/executor.ts index f55e5ee..1a2a6b5 100644 --- a/packages/adapters/src/executor.ts +++ b/packages/adapters/src/executor.ts @@ -108,6 +108,7 @@ import { respondAgentConnection, } from "./agent-connections.js"; import { + agentSecretScopeForRun, decryptAgentEnvironment, formatAgentEnvironmentInstruction, redactAgentCommandResult, @@ -1029,7 +1030,7 @@ export function createRunExecutor(deps: ExecutorDeps) { userId: run.userId, }), deps.prisma.agentSecret.findMany({ - where: { spaceId: run.spaceId }, + where: agentSecretScopeForRun(run.spaceId, run.userId), select: { name: true, secret: { select: { id: true, ciphertext: true } },