// What the generated tenant-isolation suite needs of this module: seeds and one fixture per // tenant-scoped procedure, built from the OTHER tenant's ids. import type { TransportCaller } from "@conusai-kit/core" import type { IsolationFixture, IsolationTenant } from "@conusai-kit/testing" export interface ModuleIsolation { seed( call: TransportCaller, inProject: { org: string; workspace: string; project: string }, ): Promise> fixtures: Record } const NOWHERE = "00000000-0000-0000-0000-000000000000" const inProjectOf = (t: IsolationTenant) => ({ org: t.orgSlug, workspace: t.workspaceSlug, project: t.projectSlug }) const runOf = (t: IsolationTenant) => t.extra.agentRunId ?? NOWHERE const PLAN = [{ key: "read", label: "Read", tool: "documents.read", args: {} }] export const isolation: ModuleIsolation = { async seed(call, inProject) { const started = (await call.callByName("agent.run.start", { ...inProject, goal: "Seed run", plan: PLAN })) as { runId: string } return { agentRunId: started.runId } }, fixtures: { "agent.run.start": { input: (t) => ({ ...inProjectOf(t), goal: "Intruder", plan: PLAN }) }, "agent.run.status": { input: (t) => ({ ...inProjectOf(t), runId: runOf(t) }) }, "agent.run.cancel": { input: (t) => ({ ...inProjectOf(t), runId: runOf(t) }) }, "agent.run.list": { input: (t) => inProjectOf(t) }, "agent.approval.list": { input: (t) => inProjectOf(t) }, "agent.approval.review": { input: (t) => ({ ...inProjectOf(t), runId: runOf(t), stepKey: "read", decision: "approve" }), }, }, }