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
35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { useCallback, useRef } from "react";
|
|
import { agentComposerDraftPrompt } from "../model/agentComposerDraft";
|
|
import type { AgentComposerProps } from "./AgentComposer.types";
|
|
|
|
interface UseComposerDraftCapabilitiesRequestOptions {
|
|
agentSessionId: string | null;
|
|
onDraftContentChange: AgentComposerProps["onDraftContentChange"];
|
|
onRetryComposerOptions: AgentComposerProps["onRetryComposerOptions"];
|
|
provider: string;
|
|
}
|
|
|
|
export function useComposerDraftCapabilitiesRequest({
|
|
agentSessionId,
|
|
onDraftContentChange,
|
|
onRetryComposerOptions,
|
|
provider
|
|
}: UseComposerDraftCapabilitiesRequestOptions): AgentComposerProps["onDraftContentChange"] {
|
|
const requestedKeyRef = useRef<string | null>(null);
|
|
|
|
return useCallback(
|
|
(nextDraft, sourceScopeKey) => {
|
|
const nextPrompt = agentComposerDraftPrompt(nextDraft).trimStart();
|
|
if (onRetryComposerOptions && nextPrompt.startsWith("/")) {
|
|
const requestKey = `${provider}:${agentSessionId ?? "draft"}`;
|
|
if (requestedKeyRef.current !== requestKey) {
|
|
requestedKeyRef.current = requestKey;
|
|
onRetryComposerOptions({ section: "capabilities" });
|
|
}
|
|
}
|
|
onDraftContentChange(nextDraft, sourceScopeKey);
|
|
},
|
|
[agentSessionId, onDraftContentChange, onRetryComposerOptions, provider]
|
|
);
|
|
}
|