Skip to content
Clone

feat(web): gate agent creation entry points behind a flag

ZhenYi committed
parent 3d404c6 commit 510cdb9 Browse files

5 files changed

+23 −12

File tree 5
Modified web/src/entities/agent/model/meta.ts View web/src/entities/agent/model/meta.ts
@@ -14,6 +14,9 @@
1414 WatchMode,
1515} from './agent'
1616
17/** Creation entry points stay hidden until the console is verified in production. */
18export const AGENT_CREATE_ENABLED = false
19
1720/** Backend enum order: an unfinished run reads left→right, then the outcomes. */
1821export const AGENT_STATES: readonly AgentState[] = [
1922 'draft',
Modified web/src/features/agent-console/ui/agent-console.tsx View web/src/features/agent-console/ui/agent-console.tsx
@@ -20,7 +20,7 @@
2020 view: AgentConsoleView
2121 onFilter: (patch: Partial<AgentConsoleView>) => void
2222 onOpenTask: (task: AgentTask) => void
23 onCreate: () => void
23 onCreate?: () => void
2424 onRetry: () => void
2525}
2626
@@ -164,7 +164,7 @@
164164 </span>
165165 </div>
166166
167 {tasks.length > 0 && total === 0 ? (
167 {onCreate && tasks.length > 0 && total === 0 ? (
168168 <Button variant="ghost" className="self-start" onClick={onCreate}>
169169 {t('agent.console.new')}
170170 </Button>
Modified web/src/features/agent-console/ui/agent-filters.tsx View web/src/features/agent-console/ui/agent-filters.tsx
@@ -96,7 +96,7 @@
9696export interface AgentActionsProps {
9797 view: AgentConsoleView
9898 onFilter: (patch: Partial<AgentConsoleView>) => void
99 onCreate: () => void
99 onCreate?: () => void
100100}
101101
102102export function AgentActions({ view, onFilter, onCreate }: AgentActionsProps) {
@@ -114,10 +114,12 @@
114114 {view.layout === 'cards' ? <LayoutGrid className="h-3.5 w-3.5" /> : <List className="h-3.5 w-3.5" />}
115115 {t(view.layout === 'cards' ? 'agent.console.viewCards' : 'agent.console.viewList')}
116116 </button>
117 <Button className="h-7 px-3 text-[12.5px]" onClick={onCreate}>
118 <Plus className="h-3.5 w-3.5" />
119 {t('agent.console.new')}
120 </Button>
117 {onCreate ? (
118 <Button className="h-7 px-3 text-[12.5px]" onClick={onCreate}>
119 <Plus className="h-3.5 w-3.5" />
120 {t('agent.console.new')}
121 </Button>
122 ) : null}
121123 </>
122124 )
123125}
No newline at end of file
Modified web/src/features/space-management/ui/space-header.tsx View web/src/features/space-management/ui/space-header.tsx
@@ -25,7 +25,7 @@
2525 updatePreferences,
2626} from '../model/api'
2727import type { MySpace } from '../model/api'
28import { createCollection } from '@/entities/agent'
28import { AGENT_CREATE_ENABLED, createCollection } from '@/entities/agent'
2929import { ImportRepoModal } from './import-repo-modal'
3030import { findUserByUsername, getSpaceImage, listSpaceGroups } from '../model/space-admin'
3131import { FormModal, parseList } from '@/shared/ui'
@@ -225,7 +225,9 @@
225225 <MenuItem icon={FolderGit2} label={t('space.menu.createRepo')} onClick={() => openDialog('repo')} />
226226 <MenuItem icon={Download} label={t('space.import')} onClick={() => openDialog('import')} />
227227 <MenuItem icon={SquareKanban} label={t('space.menu.createBoard')} onClick={() => openDialog('board')} />
228 <MenuItem icon={Bot} label={t('space.menu.createAgent')} onClick={() => openDialog('agent')} />
228 {AGENT_CREATE_ENABLED ? (
229 <MenuItem icon={Bot} label={t('space.menu.createAgent')} onClick={() => openDialog('agent')} />
230 ) : null}
229231 {perms.has('manage_channels') ? (
230232 <MenuItem icon={Hash} label={t('space.menu.createRoom')} onClick={() => openDialog('room')} />
231233 ) : null}
Modified web/src/pages/workspace/ui/agent/agent-view.tsx View web/src/pages/workspace/ui/agent/agent-view.tsx
@@ -12,7 +12,7 @@
1212 CollectionManageModal,
1313 useAgentConsoleData,
1414} from '@/features/agent-console'
15import { deleteTask, type AgentCollection, type AgentTask } from '@/entities/agent'
15import { AGENT_CREATE_ENABLED, deleteTask, type AgentCollection, type AgentTask } from '@/entities/agent'
1616import { useAgentViewLocation } from '../../model/agent-location'
1717import { AgentLayout } from '../layout/agent-layout'
1818
@@ -128,7 +128,11 @@
128128 topic={collection?.description ?? undefined}
129129 toolbar={<AgentFilters view={view} onFilter={loc.patch} onClear={loc.clearFilters} />}
130130 toolbarActions={
131 <AgentActions view={view} onFilter={loc.patch} onCreate={() => setCreating(true)} />
131 <AgentActions
132 view={view}
133 onFilter={loc.patch}
134 onCreate={AGENT_CREATE_ENABLED ? () => setCreating(true) : undefined}
135 />
132136 }
133137 >
134138 {view.task ? (
@@ -146,7 +150,7 @@
146150 view={view}
147151 onFilter={loc.patch}
148152 onOpenTask={task => loc.openTask(String(task.number))}
149 onCreate={() => setCreating(true)}
153 onCreate={AGENT_CREATE_ENABLED ? () => setCreating(true) : undefined}
150154 onRetry={() => setReload(key => key + 1)}
151155 />
152156 )}