openskynet / src /agents /acp-binding-architecture.guardrail.test.ts
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import { readFileSync } from "node:fs";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import { describe, expect, it } from "vitest";
const ROOT_DIR = resolve(dirname(fileURLToPath(import.meta.url)), "..");
type GuardedSource = {
path: string;
forbiddenPatterns: RegExp[];
};
const GUARDED_SOURCES: GuardedSource[] = [
{
path: "agents/acp-spawn.ts",
forbiddenPatterns: [/\bgetThreadBindingManager\b/, /\bparseDiscordTarget\b/],
},
{
path: "auto-reply/reply/commands-acp/lifecycle.ts",
forbiddenPatterns: [/\bgetThreadBindingManager\b/, /\bunbindThreadBindingsBySessionKey\b/],
},
{
path: "auto-reply/reply/commands-acp/targets.ts",
forbiddenPatterns: [/\bgetThreadBindingManager\b/],
},
{
path: "auto-reply/reply/commands-subagents/action-focus.ts",
forbiddenPatterns: [/\bgetThreadBindingManager\b/],
},
];
describe("ACP/session binding architecture guardrails", () => {
it("keeps ACP/focus flows off Discord thread-binding manager APIs", () => {
for (const source of GUARDED_SOURCES) {
const absolutePath = resolve(ROOT_DIR, source.path);
const text = readFileSync(absolutePath, "utf8");
for (const pattern of source.forbiddenPatterns) {
expect(text).not.toMatch(pattern);
}
}
});
});