Files
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

70 lines
2.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
AGENT_COMPOSER_HOME_DRAFT_SCOPE,
areAgentComposerProjectPathsEqual,
isAgentComposerSessionDraftScope,
normalizeAgentComposerDraftProjectPath,
resolveAgentComposerDraftScopeKey
} from "./agentComposerDraftScope";
describe("agentComposerDraftScope", () => {
it("shares one home draft across projects, providers, and empty selection", () => {
expect(
resolveAgentComposerDraftScopeKey({ projectPath: "/workspace/project-a" })
).toBe(AGENT_COMPOSER_HOME_DRAFT_SCOPE);
expect(
resolveAgentComposerDraftScopeKey({ projectPath: "/workspace/project-b" })
).toBe(AGENT_COMPOSER_HOME_DRAFT_SCOPE);
expect(resolveAgentComposerDraftScopeKey({ projectPath: null })).toBe(
AGENT_COMPOSER_HOME_DRAFT_SCOPE
);
expect(resolveAgentComposerDraftScopeKey({ projectPath: " " })).toBe(
AGENT_COMPOSER_HOME_DRAFT_SCOPE
);
expect(resolveAgentComposerDraftScopeKey({})).toBe(
AGENT_COMPOSER_HOME_DRAFT_SCOPE
);
});
it("normalizes project separators and trailing slashes for selected path", () => {
expect(normalizeAgentComposerDraftProjectPath(" C:\\repo\\app\\ ")).toBe(
"C:/repo/app"
);
expect(normalizeAgentComposerDraftProjectPath("/workspace/app///")).toBe(
"/workspace/app"
);
expect(normalizeAgentComposerDraftProjectPath("/")).toBe("/");
expect(normalizeAgentComposerDraftProjectPath("///")).toBe("/");
expect(normalizeAgentComposerDraftProjectPath("C:\\")).toBe("C:/");
expect(normalizeAgentComposerDraftProjectPath("C:\\\\\\")).toBe("C:/");
});
it("matches Windows project metadata despite slash style and casing", () => {
expect(
areAgentComposerProjectPathsEqual(
"C:\\Users\\Demo\\Repo",
"c:/users/demo/repo/"
)
).toBe(true);
});
it("gives an existing session precedence over the shared home draft", () => {
expect(
resolveAgentComposerDraftScopeKey({
agentSessionId: " session-1 ",
projectPath: "/workspace/project-a"
})
).toBe("session:session-1");
});
it("treats only session-prefixed keys as session drafts", () => {
expect(isAgentComposerSessionDraftScope("session:session-1")).toBe(true);
expect(
isAgentComposerSessionDraftScope(AGENT_COMPOSER_HOME_DRAFT_SCOPE)
).toBe(false);
expect(isAgentComposerSessionDraftScope("project:/workspace/app")).toBe(
false
);
});
});