Onboarding: emoji-first flow with shape/color selection, user preferences, language setup (9 locales), and bot creation with avatarValue persistence. executor.ts: split 4928→4159 lines into 8 modules (completion, computer, effects, model, utils, tools, attachments, types). pi-runtime.ts: split 1726→561 lines into 2 modules (model-config, tool-utils). E2E: new onboarding-emoji-first tests + updated completeOnboarding helper.
59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import { builtinAgentTools } from "./builtin-tools.js";
|
|
import { selectCloudAgentTools } from "./cloud-agent-tools-select.js";
|
|
import { selectMemoryTools } from "./memory-tools.js";
|
|
import {
|
|
filterBuiltinToolsForRun,
|
|
filterBuiltinToolsForThread,
|
|
} from "./schedule-tools.js";
|
|
import {
|
|
filterImageReturningComputerTools,
|
|
} from "./model-vision.js";
|
|
|
|
/** Browser tools that require a graphical computer (Chrome). */
|
|
export const PAGE_BROWSER_TOOL_NAMES = new Set([
|
|
"browser_navigate",
|
|
"browser_snapshot",
|
|
"browser_act",
|
|
]);
|
|
|
|
export function filterPageBrowserTools<T extends { name: string }>(
|
|
tools: T[],
|
|
pageBrowserAllowed: boolean,
|
|
): T[] {
|
|
if (pageBrowserAllowed) return tools;
|
|
return tools.filter((tool) => !PAGE_BROWSER_TOOL_NAMES.has(tool.name));
|
|
}
|
|
|
|
export function selectBuiltinToolsForRun(options: {
|
|
graphicalToolsAllowed: boolean;
|
|
/** Page browser tools need a graphical computer (Chrome), not model vision. */
|
|
pageBrowserAllowed?: boolean;
|
|
groupId: string | null;
|
|
trigger: string;
|
|
semanticMemoryEnabled: boolean;
|
|
cloudAgentEnabled?: boolean;
|
|
messagingChannelRun: boolean;
|
|
}) {
|
|
return selectCloudAgentTools(
|
|
selectMemoryTools(
|
|
filterBuiltinToolsForRun(
|
|
filterBuiltinToolsForThread(
|
|
filterPageBrowserTools(
|
|
filterImageReturningComputerTools(builtinAgentTools, options.graphicalToolsAllowed),
|
|
options.pageBrowserAllowed ?? options.graphicalToolsAllowed,
|
|
),
|
|
options.groupId,
|
|
),
|
|
options.trigger,
|
|
),
|
|
options.semanticMemoryEnabled,
|
|
),
|
|
Boolean(options.cloudAgentEnabled),
|
|
).filter(
|
|
(tool) =>
|
|
!options.messagingChannelRun ||
|
|
(!["remember", "save_memory", "recall_memory", "forget_memory"].includes(tool.name) &&
|
|
!tool.name.startsWith("scratchpad_")),
|
|
);
|
|
}
|