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
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import {
|
|
createContext,
|
|
useCallback,
|
|
useContext,
|
|
useMemo,
|
|
useState,
|
|
type JSX,
|
|
type ReactNode
|
|
} from "react";
|
|
|
|
export interface AgentTurnDisclosureStore {
|
|
expandedOverrides: Readonly<Record<string, boolean>>;
|
|
setExpandedOverride: (key: string, expanded: boolean) => void;
|
|
}
|
|
|
|
const AgentTurnDisclosureContext =
|
|
createContext<AgentTurnDisclosureStore | null>(null);
|
|
|
|
export function AgentTurnDisclosureProvider({
|
|
children
|
|
}: {
|
|
children: ReactNode;
|
|
}): JSX.Element {
|
|
const store = useAgentTurnDisclosureStoreState();
|
|
return (
|
|
<AgentTurnDisclosureContext.Provider value={store}>
|
|
{children}
|
|
</AgentTurnDisclosureContext.Provider>
|
|
);
|
|
}
|
|
|
|
export function useAgentTurnDisclosureStore(): AgentTurnDisclosureStore {
|
|
const contextStore = useContext(AgentTurnDisclosureContext);
|
|
const localStore = useAgentTurnDisclosureStoreState();
|
|
return contextStore ?? localStore;
|
|
}
|
|
|
|
function useAgentTurnDisclosureStoreState(): AgentTurnDisclosureStore {
|
|
const [expandedOverrides, setExpandedOverrides] = useState<
|
|
Record<string, boolean>
|
|
>({});
|
|
const setExpandedOverride = useCallback((key: string, expanded: boolean) => {
|
|
setExpandedOverrides((previous) =>
|
|
previous[key] === expanded ? previous : { ...previous, [key]: expanded }
|
|
);
|
|
}, []);
|
|
return useMemo(
|
|
() => ({ expandedOverrides, setExpandedOverride }),
|
|
[expandedOverrides, setExpandedOverride]
|
|
);
|
|
}
|