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
69 lines
2.3 KiB
TypeScript
69 lines
2.3 KiB
TypeScript
import { renderHook } from "@testing-library/react";
|
|
import { describe, expect, it } from "vitest";
|
|
import type { AgentGUIAgentTarget } from "../../../types";
|
|
import { useAgentGUIProviderCatalogSelection } from "./useAgentGUIProviderCatalogSelection";
|
|
|
|
describe("useAgentGUIProviderCatalogSelection handoff catalog", () => {
|
|
it("uses an independent ready target catalog for handoff", () => {
|
|
const local = target("local-codex", "codex");
|
|
const shared = target("shared-agent:claude", "claude-code");
|
|
const unavailable = {
|
|
...target("shared-agent:offline", "codex"),
|
|
disabled: true
|
|
};
|
|
const { result } = renderHook(() =>
|
|
useAgentGUIProviderCatalogSelection({
|
|
agentTargets: [local],
|
|
agentTargetsLoading: false,
|
|
comingSoonProviders: undefined,
|
|
data: {
|
|
agentTargetId: local.agentTargetId,
|
|
lastActiveAgentSessionId: null,
|
|
provider: local.provider
|
|
},
|
|
defaultAgentTargetId: local.agentTargetId,
|
|
handoffAgentTargets: [local, shared, unavailable],
|
|
handoffAgentTargetsLoading: false,
|
|
providerRailMode: "exact",
|
|
providerReadinessGates: null
|
|
})
|
|
);
|
|
|
|
expect(result.current.normalizedProviderTargets).toEqual([local]);
|
|
expect(result.current.handoffAgentTargets).toEqual([local, shared]);
|
|
});
|
|
|
|
it("uses the runtime catalog when no independent handoff catalog is supplied", () => {
|
|
const local = target("local-codex", "codex");
|
|
const { result } = renderHook(() =>
|
|
useAgentGUIProviderCatalogSelection({
|
|
agentTargets: [local],
|
|
agentTargetsLoading: false,
|
|
comingSoonProviders: undefined,
|
|
data: {
|
|
agentTargetId: local.agentTargetId,
|
|
lastActiveAgentSessionId: null,
|
|
provider: local.provider
|
|
},
|
|
defaultAgentTargetId: local.agentTargetId,
|
|
handoffAgentTargets: undefined,
|
|
handoffAgentTargetsLoading: undefined,
|
|
providerRailMode: "exact",
|
|
providerReadinessGates: null
|
|
})
|
|
);
|
|
|
|
expect(result.current.handoffAgentTargets).toEqual([local]);
|
|
});
|
|
});
|
|
|
|
function target(agentTargetId: string, provider: string): AgentGUIAgentTarget {
|
|
return {
|
|
agentTargetId,
|
|
label: agentTargetId,
|
|
provider,
|
|
ref: { agentTargetId, kind: "agent-directory", provider },
|
|
targetId: agentTargetId
|
|
};
|
|
}
|