源码快照 @ 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,74 @@
|
||||
import {
|
||||
type AgentActivityGoalControlAction,
|
||||
type AgentSessionEngine
|
||||
} from "@tutti-os/agent-activity-core";
|
||||
import type { Dispatch, RefObject, SetStateAction } from "react";
|
||||
import { useCallback, useRef } from "react";
|
||||
import { translate } from "../../../i18n/index";
|
||||
import type { AgentComposerDraft } from "../model/agentGuiNodeTypes";
|
||||
import {
|
||||
emptyAgentComposerDraft,
|
||||
snapshotAgentComposerDraft
|
||||
} from "../model/agentComposerDraft";
|
||||
import type { AgentGUIGoalControlPendingSettlement } from "./AgentGUIEngineSettlementController";
|
||||
|
||||
interface UseAgentGUIGoalControlActionsInput {
|
||||
activeConversationIdRef: RefObject<string | null>;
|
||||
draftByScopeKeyRef: RefObject<Record<string, AgentComposerDraft>>;
|
||||
goalControlSettlementsRef: RefObject<
|
||||
Record<string, AgentGUIGoalControlPendingSettlement>
|
||||
>;
|
||||
sessionEngine: AgentSessionEngine;
|
||||
setDetailError: Dispatch<SetStateAction<string | null>>;
|
||||
}
|
||||
|
||||
export function useAgentGUIGoalControlActions(
|
||||
input: UseAgentGUIGoalControlActionsInput
|
||||
) {
|
||||
const requestSequenceRef = useRef(0);
|
||||
const goalControl = useCallback(
|
||||
(
|
||||
action: AgentActivityGoalControlAction,
|
||||
objective?: string,
|
||||
submittedDraftScopeKey?: string
|
||||
) => {
|
||||
const agentSessionId = input.activeConversationIdRef.current;
|
||||
if (!agentSessionId) return;
|
||||
const clientSubmitId = `goal-control:${Date.now()}:${++requestSequenceRef.current}`;
|
||||
const submittedDraftSnapshot = submittedDraftScopeKey
|
||||
? {
|
||||
sourceScopeKey: submittedDraftScopeKey,
|
||||
content: snapshotAgentComposerDraft(
|
||||
input.draftByScopeKeyRef.current[submittedDraftScopeKey] ??
|
||||
emptyAgentComposerDraft()
|
||||
),
|
||||
targetAgentSessionId: agentSessionId
|
||||
}
|
||||
: null;
|
||||
input.setDetailError(null);
|
||||
const admission = input.sessionEngine.controlGoal({
|
||||
action,
|
||||
agentSessionId,
|
||||
clientSubmitId,
|
||||
...(objective !== undefined ? { objective } : {})
|
||||
});
|
||||
if (!admission.accepted) {
|
||||
input.setDetailError(translate("agentHost.agentGui.goalControlFailed"));
|
||||
return;
|
||||
}
|
||||
input.goalControlSettlementsRef.current[agentSessionId] = {
|
||||
action,
|
||||
clientSubmitId: admission.clientSubmitId,
|
||||
submittedDraftSnapshot
|
||||
};
|
||||
},
|
||||
[
|
||||
input.activeConversationIdRef,
|
||||
input.draftByScopeKeyRef,
|
||||
input.goalControlSettlementsRef,
|
||||
input.sessionEngine,
|
||||
input.setDetailError
|
||||
]
|
||||
);
|
||||
return { goalControl };
|
||||
}
|
||||
Reference in New Issue
Block a user