Files
agent-radar 2ed3415fb7
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
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

68 lines
1.8 KiB
TypeScript

import type { AgentPromptContentBlock } from "../../../shared/contracts/dto";
import type {
AgentComposerDraft,
AgentComposerDraftConnector,
AgentComposerDraftContent
} from "./agentGuiNodeTypes";
export function agentComposerDraftConnectors(
draft: AgentComposerDraftContent
): AgentComposerDraftConnector[] {
return draft
.filter(
(
block
): block is Extract<
AgentComposerDraftContent[number],
{ type: "connector" }
> => block.type === "connector"
)
.map(({ type: _type, ...connector }) => connector);
}
export function agentComposerDraftConnectorBlocks(
connectors: readonly AgentComposerDraftConnector[]
): Extract<AgentComposerDraftContent[number], { type: "connector" }>[] {
return connectors.map((connector) => ({
type: "connector",
connectorKey: connector.connectorKey
}));
}
export function agentPromptContentConnectors(
content: readonly AgentPromptContentBlock[]
): AgentComposerDraftConnector[] {
return content.flatMap((block) => {
if (block.type !== "connector") {
return [];
}
const connectorKey = block.connectorKey?.trim();
return connectorKey ? [{ connectorKey }] : [];
});
}
export function mergeAgentComposerDraftConnectorKeys(
draft: AgentComposerDraftContent,
additionalKeys: readonly string[]
): string[] {
return Array.from(
new Set([
...agentComposerDraftConnectors(draft).map(
(connector) => connector.connectorKey
),
...additionalKeys
])
);
}
export function agentComposerDraftPreservingConnectors(
previous: AgentComposerDraft | undefined
): AgentComposerDraft {
return [
{ type: "text", text: "" },
...agentComposerDraftConnectorBlocks(
previous ? agentComposerDraftConnectors(previous) : []
)
];
}