源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
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
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
This commit is contained in:
+68
@@ -0,0 +1,68 @@
|
||||
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
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user