From 336769deb1d5fdbc66f498a9be5fb7e298e38975 Mon Sep 17 00:00:00 2001 From: crazywoola <427733928@qq.com> Date: Wed, 24 Dec 2025 15:04:42 +0800 Subject: [PATCH] feat: use @banana --- .../components/goto-anything/actions/commands/slash.tsx | 3 --- web/app/components/goto-anything/actions/index.ts | 5 ++++- web/app/components/goto-anything/actions/types.ts | 2 +- web/app/components/goto-anything/command-selector.tsx | 1 + web/app/components/goto-anything/index.tsx | 8 ++++++++ web/i18n/en-US/app.ts | 2 +- 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/web/app/components/goto-anything/actions/commands/slash.tsx b/web/app/components/goto-anything/actions/commands/slash.tsx index d6b808e1e3..4c43b5b61e 100644 --- a/web/app/components/goto-anything/actions/commands/slash.tsx +++ b/web/app/components/goto-anything/actions/commands/slash.tsx @@ -12,7 +12,6 @@ import { forumCommand } from './forum' import { languageCommand } from './language' import { slashCommandRegistry } from './registry' import { themeCommand } from './theme' -import { vibeCommand } from './vibe' import { zenCommand } from './zen' export const slashAction: ActionItem = { @@ -42,7 +41,6 @@ export const registerSlashCommands = (deps: Record) => { slashCommandRegistry.register(communityCommand, {}) slashCommandRegistry.register(accountCommand, {}) slashCommandRegistry.register(zenCommand, {}) - slashCommandRegistry.register(vibeCommand, {}) } export const unregisterSlashCommands = () => { @@ -54,7 +52,6 @@ export const unregisterSlashCommands = () => { slashCommandRegistry.unregister('community') slashCommandRegistry.unregister('account') slashCommandRegistry.unregister('zen') - slashCommandRegistry.unregister('vibe') } export const SlashCommandProvider = () => { diff --git a/web/app/components/goto-anything/actions/index.ts b/web/app/components/goto-anything/actions/index.ts index a038ef1a6c..abf1c077f8 100644 --- a/web/app/components/goto-anything/actions/index.ts +++ b/web/app/components/goto-anything/actions/index.ts @@ -165,6 +165,7 @@ import type { ActionItem, SearchResult } from './types' import { appAction } from './app' +import { bananaAction } from './banana' import { slashAction } from './commands' import { slashCommandRegistry } from './commands/registry' import { knowledgeAction } from './knowledge' @@ -191,6 +192,7 @@ export const createActions = (isWorkflowPage: boolean, isRagPipelinePage: boolea else if (isWorkflowPage) { return { ...baseActions, + banana: bananaAction, node: workflowNodesAction, } } @@ -205,6 +207,7 @@ export const Actions = { app: appAction, knowledge: knowledgeAction, plugin: pluginAction, + banana: bananaAction, node: workflowNodesAction, } @@ -296,4 +299,4 @@ export const matchAction = (query: string, actions: Record) export * from './commands' export * from './types' -export { appAction, knowledgeAction, pluginAction, workflowNodesAction } +export { appAction, bananaAction, knowledgeAction, pluginAction, workflowNodesAction } diff --git a/web/app/components/goto-anything/actions/types.ts b/web/app/components/goto-anything/actions/types.ts index 838195ad85..7c3f77f27f 100644 --- a/web/app/components/goto-anything/actions/types.ts +++ b/web/app/components/goto-anything/actions/types.ts @@ -44,7 +44,7 @@ export type CommandSearchResult = { export type SearchResult = AppSearchResult | PluginSearchResult | KnowledgeSearchResult | WorkflowNodeSearchResult | CommandSearchResult export type ActionItem = { - key: '@app' | '@knowledge' | '@plugin' | '@node' | '/' + key: '@app' | '@banana' | '@knowledge' | '@plugin' | '@node' | '/' shortcut: string title: string | TypeWithI18N description: string diff --git a/web/app/components/goto-anything/command-selector.tsx b/web/app/components/goto-anything/command-selector.tsx index f62a7a3829..2241e79e42 100644 --- a/web/app/components/goto-anything/command-selector.tsx +++ b/web/app/components/goto-anything/command-selector.tsx @@ -127,6 +127,7 @@ const CommandSelector: FC = ({ actions, onCommandSelect, searchFilter, co '@plugin': 'app.gotoAnything.actions.searchPluginsDesc', '@knowledge': 'app.gotoAnything.actions.searchKnowledgeBasesDesc', '@node': 'app.gotoAnything.actions.searchWorkflowNodesDesc', + '@banana': 'app.gotoAnything.actions.vibeDesc', } return t(keyMap[item.key] as any) as string })() diff --git a/web/app/components/goto-anything/index.tsx b/web/app/components/goto-anything/index.tsx index 76c2e26ebd..a87340f3d2 100644 --- a/web/app/components/goto-anything/index.tsx +++ b/web/app/components/goto-anything/index.tsx @@ -12,6 +12,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import Input from '@/app/components/base/input' import Modal from '@/app/components/base/modal' +import { VIBE_COMMAND_EVENT } from '@/app/components/workflow/constants' import { getKeyboardKeyCodeBySystem, isEventTargetInputArea, isMac } from '@/app/components/workflow/utils/common' import { selectWorkflowNode } from '@/app/components/workflow/utils/node-navigation' import { useGetLanguage } from '@/context/i18n' @@ -158,6 +159,13 @@ const GotoAnything: FC = ({ switch (result.type) { case 'command': { + if (result.data.command === 'workflow.vibe') { + if (typeof document !== 'undefined') { + document.dispatchEvent(new CustomEvent(VIBE_COMMAND_EVENT, { detail: { dsl: result.data.args?.dsl } })) + } + break + } + // Execute slash commands const action = Actions.slash action?.action?.(result) diff --git a/web/i18n/en-US/app.ts b/web/i18n/en-US/app.ts index 7ea0aadafb..4faf8cb0ad 100644 --- a/web/i18n/en-US/app.ts +++ b/web/i18n/en-US/app.ts @@ -333,7 +333,7 @@ const translation = { feedbackDesc: 'Open community feedback discussions', zenTitle: 'Zen Mode', zenDesc: 'Toggle canvas focus mode', - vibeTitle: 'Vibe Workflow', + vibeTitle: 'Banana Workflow', vibeDesc: 'Generate a workflow from natural language', vibeHint: 'Describe the workflow, e.g. "{{prompt}}"', },