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
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { useMemo, type ReactNode } from "react";
|
|
import {
|
|
RichTextMentionServiceProvider,
|
|
useRichTextMentionService
|
|
} from "@tutti-os/ui-rich-text/editor";
|
|
import type { RichTextMentionService } from "@tutti-os/ui-rich-text/service";
|
|
import type { AgentGUIObservationGapSource } from "../../types";
|
|
import { AgentObservationGapSourceProvider } from "../../shared/agentConversation/AgentObservationGapContext";
|
|
import { composeAgentGUIMentionService } from "./composeAgentGUIMentionService";
|
|
|
|
export function AgentGUIMentionServiceBoundary({
|
|
children,
|
|
observationGapSource,
|
|
service
|
|
}: {
|
|
children: ReactNode;
|
|
observationGapSource?: AgentGUIObservationGapSource | null;
|
|
service?: RichTextMentionService;
|
|
}): ReactNode {
|
|
const inheritedService = useRichTextMentionService();
|
|
const effectiveService = useMemo(
|
|
() =>
|
|
service && inheritedService && service !== inheritedService
|
|
? composeAgentGUIMentionService({
|
|
inheritedService,
|
|
surfaceService: service
|
|
})
|
|
: service,
|
|
[inheritedService, service]
|
|
);
|
|
|
|
const content =
|
|
!effectiveService || effectiveService === inheritedService ? (
|
|
children
|
|
) : (
|
|
<RichTextMentionServiceProvider service={effectiveService}>
|
|
{children}
|
|
</RichTextMentionServiceProvider>
|
|
);
|
|
|
|
return (
|
|
<AgentObservationGapSourceProvider source={observationGapSource}>
|
|
{content}
|
|
</AgentObservationGapSourceProvider>
|
|
);
|
|
}
|