* Add detach action for subagents * Translate detached subagent connection error * Address subagent detach review feedback * Fix subagent integration test import * Focus detached subagents as tabs
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { useCallback } from "react";
|
|
import { useToast } from "@/contexts/toast-context";
|
|
import { useArchiveAgent } from "@/hooks/use-archive-agent";
|
|
import { useSessionStore } from "@/stores/session-store";
|
|
import { confirmDialog } from "@/utils/confirm-dialog";
|
|
import { toErrorMessage } from "@/utils/error-messages";
|
|
import { requestArchiveSubagent, type ResolveArchiveSubagentDialogInput } from "./archive-subagent";
|
|
|
|
export { resolveArchiveSubagentDialog, requestArchiveSubagent } from "./archive-subagent";
|
|
export type {
|
|
ArchiveSubagentDeps,
|
|
RequestArchiveSubagentInput,
|
|
ResolveArchiveSubagentDialogInput,
|
|
} from "./archive-subagent";
|
|
|
|
export interface UseArchiveSubagentInput {
|
|
serverId: string;
|
|
}
|
|
|
|
export function useArchiveSubagent(input: UseArchiveSubagentInput): (subagentId: string) => void {
|
|
const { archiveAgent } = useArchiveAgent();
|
|
const { serverId } = input;
|
|
const toast = useToast();
|
|
|
|
return useCallback(
|
|
(subagentId: string) => {
|
|
void requestArchiveSubagent(
|
|
{ serverId, subagentId },
|
|
{
|
|
getSubagent: (id): ResolveArchiveSubagentDialogInput | undefined =>
|
|
useSessionStore.getState().sessions[serverId]?.agents?.get(id),
|
|
confirm: confirmDialog,
|
|
archiveAgent,
|
|
reportError: (error) => {
|
|
toast.error(toErrorMessage(error));
|
|
},
|
|
},
|
|
);
|
|
},
|
|
[archiveAgent, serverId, toast],
|
|
);
|
|
}
|