Files
tutti/tools/scripts/check-agent-provider-strategy-boundaries.test.mjs
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

209 lines
5.0 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
createProviderIdentityPatterns,
findProviderIdentityViolations,
isExemptPath
} from "./check-agent-provider-strategy-boundaries.mjs";
const providerIds = [
"claude-code",
"codex",
"cursor",
"nexight",
"openclaw",
"opencode",
"tutti-agent"
];
test("detects every registered provider through constants and literal branches", () => {
for (const providerId of providerIds) {
const stem = providerId
.split("-")
.map((part) => part[0].toUpperCase() + part.slice(1))
.join("");
const source = [
`if provider == providerregistry.${stem}ProviderID {}`,
`if p != "${providerId}" {}`,
"switch kind {",
"if nested {",
`case "${providerId}":`,
"return true",
"}",
"}"
].join("\n");
assert.equal(
findProviderIdentityViolations(
"services/tuttid/service/example.go",
source,
providerIds
).length,
3,
providerId
);
}
});
test("detects legacy provider identity constant forms", () => {
const source = [
"return agentprovider.ClaudeCode",
"return agentproviderbiz.Nexight",
"return ProviderOpenClaw"
].join("\n");
assert.equal(
findProviderIdentityViolations(
"services/tuttid/service/example.go",
source,
providerIds
).length,
3
);
});
test("detects provider literal branches in desktop TypeScript", () => {
const source = [
'if (p === "codex") { return true; }',
"switch (kind) {",
'case "opencode":',
"return false;",
"}"
].join("\n");
assert.equal(
findProviderIdentityViolations(
"apps/desktop/src/renderer/providerPolicy.ts",
source,
providerIds
).length,
2
);
});
test("detects provider identity dispatched through Set membership", () => {
const source = [
"const runtimeProbeFallbackProviders = new Set<Provider>([",
' "cursor"',
"]);",
"return runtimeProbeFallbackProviders.has(provider);"
].join("\n");
assert.deepEqual(
findProviderIdentityViolations(
"apps/desktop/src/renderer/providerPolicy.ts",
source,
providerIds
),
['apps/desktop/src/renderer/providerPolicy.ts:2: "cursor"']
);
});
test("detects provider identity dispatched through array membership", () => {
const source = [
'const providersWithFallback = ["codex", "opencode"] as const;',
"return providersWithFallback.includes(provider);"
].join("\n");
assert.equal(
findProviderIdentityViolations(
"apps/desktop/src/renderer/providerPolicy.ts",
source,
providerIds
).length,
2
);
});
test("allows provider identity catalogs that do not dispatch through membership", () => {
const source = [
'const providerLabels = ["codex", "opencode"] as const;',
"return providerLabels.map(renderProviderLabel);"
].join("\n");
assert.deepEqual(
findProviderIdentityViolations(
"apps/desktop/src/renderer/providerLabels.ts",
source,
providerIds
),
[]
);
});
test("allows provider enum validation without treating it as behavior dispatch", () => {
const source = [
'const desktopAgentProviders = ["codex", "opencode"] as const;',
"return desktopAgentProviders.includes(provider);"
].join("\n");
assert.deepEqual(
findProviderIdentityViolations(
"apps/desktop/src/shared/preferences/core.ts",
source,
providerIds
),
[]
);
});
test("skips desktop TypeScript tests but scans adjacent production files", () => {
const source = 'if (p === "codex") {}';
assert.deepEqual(
findProviderIdentityViolations(
"apps/desktop/src/renderer/providerPolicy.test.ts",
source,
providerIds
),
[]
);
assert.equal(
findProviderIdentityViolations(
"apps/desktop/src/renderer/providerPolicy.ts",
source,
providerIds
).length,
1
);
});
test("does not treat descriptor lookup or unrelated literals as identity branches", () => {
const source = [
"descriptor, ok := providerregistry.Find(provider)",
'name := "codex"',
'values := map[string]bool{"opencode": true}'
].join("\n");
assert.deepEqual(
findProviderIdentityViolations(
"services/tuttid/service/example.go",
source,
providerIds
),
[]
);
});
test("keeps exemptions exact", () => {
assert.equal(
isExemptPath("packages/agent/daemon/runtime/codex_appserver_adapter.go"),
true
);
assert.equal(
isExemptPath("packages/agent/daemon/runtime/codex_appserver_policy.go"),
false
);
assert.equal(
isExemptPath("services/tuttid/service/agent/external_import_parse.go"),
true
);
assert.equal(
isExemptPath(
"services/tuttid/service/agent/external_import_claude_export.go"
),
true
);
assert.equal(
isExemptPath("services/tuttid/service/agent/external_import_policy.go"),
false
);
});
test("rejects an invalid provider catalog", () => {
assert.throws(() => createProviderIdentityPatterns(["codex", "codex"]), {
name: "TypeError"
});
});