源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
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
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
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import { useCallback, useState } from "react";
|
||||
|
||||
export function useAgentGUIProjectMenuState(
|
||||
isRailInteractionLocked: () => boolean,
|
||||
isUserProjectMutationPending: boolean
|
||||
): {
|
||||
isProjectActionLocked: () => boolean;
|
||||
onProjectMenuOpenChange: (sectionId: string, open: boolean) => void;
|
||||
projectMenuOpen: boolean;
|
||||
} {
|
||||
const [openSectionId, setOpenSectionId] = useState<string | null>(null);
|
||||
const isProjectActionLocked = useCallback(
|
||||
() => isRailInteractionLocked() || isUserProjectMutationPending,
|
||||
[isRailInteractionLocked, isUserProjectMutationPending]
|
||||
);
|
||||
const onProjectMenuOpenChange = useCallback(
|
||||
(sectionId: string, open: boolean) => {
|
||||
setOpenSectionId((current) =>
|
||||
open ? sectionId : current === sectionId ? null : current
|
||||
);
|
||||
},
|
||||
[]
|
||||
);
|
||||
return {
|
||||
isProjectActionLocked,
|
||||
onProjectMenuOpenChange,
|
||||
projectMenuOpen: openSectionId !== null
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user