Wenchao An 42334f26d7
feat(capabilities): unify catalog, plugin configuration and agent selection (#5497)
* feat(capabilities): unify catalog, plugin configuration and agent selection

* fix(capabilities): address review isolation, validation and demo issues

* fix(capabilities): preserve concurrent selections and guide launcher repair
2026-09-19 12:14:24 +08:00

66 lines
1.6 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import {
completeLarkAuthorization,
completeLarkConfiguration,
installLarkIntegration,
loadLarkIntegrationStatus,
setLarkAppCredentials,
startLarkAuthorization,
startLarkConfiguration,
} from "./api";
export const larkIntegrationQueryKey = ["integrations", "lark"] as const;
export function useLarkIntegrationStatus() {
return useQuery({
queryKey: larkIntegrationQueryKey,
queryFn: ({ signal }) => loadLarkIntegrationStatus(signal),
});
}
export function useInstallLarkIntegration() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: installLarkIntegration,
onSuccess: async (result) => {
queryClient.setQueryData(larkIntegrationQueryKey, result.status);
await queryClient.invalidateQueries({
queryKey: larkIntegrationQueryKey,
});
await queryClient.invalidateQueries({ queryKey: ["skills"] });
await queryClient.invalidateQueries({ queryKey: ["capabilities"] });
},
});
}
export function useStartLarkAuthorization() {
return useMutation({
mutationFn: startLarkAuthorization,
});
}
export function useStartLarkConfiguration() {
return useMutation({
mutationFn: startLarkConfiguration,
});
}
export function useCompleteLarkConfiguration() {
return useMutation({
mutationFn: completeLarkConfiguration,
});
}
export function useSetLarkAppCredentials() {
return useMutation({
mutationFn: setLarkAppCredentials,
});
}
export function useCompleteLarkAuthorization() {
return useMutation({
mutationFn: completeLarkAuthorization,
});
}