@burdenoff/microfe-botmanor 2026.1109.1 → 2026.1110.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/botlit/BotlitRoutes.js +34 -45
- package/dist/botlit/BotlitRoutes.js.map +1 -1
- package/dist/botlit/components/Badge.js +2 -2
- package/dist/botlit/components/Badge.js.map +1 -1
- package/dist/botlit/components/ChannelSelectorSheet.js +4 -4
- package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -1
- package/dist/botlit/components/LoadMore.d.ts +9 -0
- package/dist/botlit/components/LoadMore.js +22 -0
- package/dist/botlit/components/LoadMore.js.map +1 -0
- package/dist/botlit/components/index.d.ts +1 -0
- package/dist/botlit/hooks/index.d.ts +1 -2
- package/dist/botlit/hooks/index.js +15 -16
- package/dist/botlit/hooks/internal/workspaceGateway.d.ts +47 -0
- package/dist/botlit/hooks/internal/workspaceGateway.js +59 -1
- package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
- package/dist/botlit/hooks/useAgents.d.ts +2 -6
- package/dist/botlit/hooks/useAgents.js +71 -95
- package/dist/botlit/hooks/useAgents.js.map +1 -1
- package/dist/botlit/hooks/useBots.d.ts +2 -6
- package/dist/botlit/hooks/useBots.js +51 -75
- package/dist/botlit/hooks/useBots.js.map +1 -1
- package/dist/botlit/hooks/useBuckets.d.ts +5 -0
- package/dist/botlit/hooks/useBuckets.js +72 -38
- package/dist/botlit/hooks/useBuckets.js.map +1 -1
- package/dist/botlit/hooks/useExecutions.d.ts +2 -2
- package/dist/botlit/hooks/useExecutions.js +30 -34
- package/dist/botlit/hooks/useExecutions.js.map +1 -1
- package/dist/botlit/hooks/useStore.d.ts +3 -3
- package/dist/botlit/hooks/useStore.js +41 -50
- package/dist/botlit/hooks/useStore.js.map +1 -1
- package/dist/botlit/index.d.ts +0 -1
- package/dist/botlit/index.js +5 -6
- package/dist/botlit/pages/A2AAgentDetailPage.js +1 -1
- package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentDetailPage.js +1 -1
- package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentsListPage.js +157 -156
- package/dist/botlit/pages/AgentsListPage.js.map +1 -1
- package/dist/botlit/pages/BotChannelsTab.js +24 -24
- package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
- package/dist/botlit/pages/BotsListPage.js +147 -146
- package/dist/botlit/pages/BotsListPage.js.map +1 -1
- package/dist/botlit/pages/BucketDetailPage.d.ts +2 -0
- package/dist/botlit/pages/BucketDetailPage.js +251 -0
- package/dist/botlit/pages/BucketDetailPage.js.map +1 -0
- package/dist/botlit/pages/BucketsPage.js +3 -3
- package/dist/botlit/pages/BucketsPage.js.map +1 -1
- package/dist/botlit/pages/ChannelDetailPage.js +2 -2
- package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
- package/dist/botlit/pages/ExecutionsPage.js +141 -134
- package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
- package/dist/botlit/pages/InstalledPackagesPage.js +43 -36
- package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
- package/dist/botlit/pages/MCPServersPage.js +1 -1
- package/dist/botlit/pages/MCPServersPage.js.map +1 -1
- package/dist/botlit/pages/SettingsPage.js +2 -2
- package/dist/botlit/pages/SettingsPage.js.map +1 -1
- package/dist/botlit/pages/SkillDetailPage.js +1 -1
- package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
- package/dist/botlit/pages/StorePackageDetailPage.js +1 -1
- package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
- package/dist/botlit/pages/StorePage.js +150 -143
- package/dist/botlit/pages/StorePage.js.map +1 -1
- package/dist/botlit/pages/index.d.ts +1 -2
- package/dist/generated/wspace-operations.js +67 -67
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/index.js +5 -6
- package/package.json +1 -1
- package/dist/botlit/hooks/useConversations.d.ts +0 -42
- package/dist/botlit/hooks/useConversations.js +0 -63
- package/dist/botlit/hooks/useConversations.js.map +0 -1
- package/dist/botlit/pages/ConversationDetailPage.d.ts +0 -2
- package/dist/botlit/pages/ConversationsPage.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentDetailPage.js","names":["_Fragment","AgentDetailPage","t","useTr","useParams","useBotlit","can","useBotmanorCan","agent","refetchAgent","useAgent","agentId","updateAgent","updateAgentResult","useUpdateAgent","deleteAgent","deleteAgentResult","useDeleteAgent","activeTab","setActiveTab","useState","approvalSettings","useAgentApprovalSettings","loading","PageLayout","EmptyState","Button","navigateTo","systemPrompt","llmModelId","temperature","maxTokens","mcpConnectionIds","knowledgeBaseIds","workflowIds","capabilities","tagIds","maxConcurrentExecutions","metadata","tabs","Settings","BarChart3","FileText","Brain","Wrench","BookOpen","Shield","ShieldCheck","Share2","History","ArrowLeft","StatusBadge","Badge","BotmanorPermissionGate","BOTMANOR_PERMISSIONS","toast","err","Edit","Play","Trash2","AssistantRuntimeSetupPanel","Fragment","AssistantWebsitePanel","AssistantChannelPanel","PagePurpose","tab","cn","NextSteps","AgentApprovalPanel","Card","CardHeader","CardTitle","CardContent","formatRelativeTime","GlassCard","cap","tag","CardDescription","MessageSquare","mcpId","wfId","index","kbId","_","value","key","AiOperationsPanel","VersionHistoryPanel"],"sources":["../../../src/botlit/pages/AgentDetailPage.tsx"],"sourcesContent":["/**\n * Agent Detail Page\n * @module botlit/pages\n *\n * Displays agent details using flat API fields from the real GraphQL backend.\n * Maps flat fields (systemPrompt, llmModelId, mcpConnectionIds, knowledgeBaseIds, capabilities[])\n * to a rich detail view with tabs.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Play,\n Settings,\n BarChart3,\n BookOpen,\n Wrench,\n Shield,\n Brain,\n MessageSquare,\n Edit,\n Share2,\n FileText,\n Trash2,\n History,\n ShieldCheck,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { toast } from 'sonner';\nimport { PagePurpose, NextSteps, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { VersionHistoryPanel } from '../components/VersionHistoryPanel';\nimport { AgentApprovalPanel } from '../components/AgentApprovalPanel';\nimport { useAgentApprovalSettings } from '../hooks/useAgentApprovals';\nimport { AssistantRuntimeSetupPanel } from '../components/AssistantRuntimeSetupPanel';\nimport { AssistantChannelPanel } from '../components/AssistantChannelPanel';\nimport { AssistantWebsitePanel } from '../components/AssistantWebsitePanel';\nimport { AiOperationsPanel } from '../components/AiOperationsPanel';\nimport { useAgent, useUpdateAgent, useDeleteAgent } from '../hooks/useAgents';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport { formatRelativeTime } from '../utils/formatters';\nimport { cn } from '../utils/cn';\nimport { BOTMANOR_PERMISSIONS, BotmanorPermissionGate, useBotmanorCan } from '../permissions';\n\ntype TabType =\n | 'overview'\n | 'prompt'\n | 'llm'\n | 'tools'\n | 'knowledge'\n | 'guardrails'\n | 'aiOperations'\n | 'a2a'\n | 'versions'\n | 'assistant';\n\nexport const AgentDetailPage: FC = () => {\n const t = useTr();\n const { agentId } = useParams();\n const { navigateTo } = useBotlit();\n const can = useBotmanorCan();\n const { data: agent, loading, refetch: refetchAgent } = useAgent(agentId);\n const [updateAgent, updateAgentResult] = useUpdateAgent();\n const [deleteAgent, deleteAgentResult] = useDeleteAgent();\n const [activeTab, setActiveTab] = useState<TabType>('overview');\n // BOFF-9682: when the workspace requires activation approval, an agent that\n // has never been published goes live through a reviewer, not this button.\n const approvalSettings = useAgentApprovalSettings();\n\n if (loading) {\n return (\n <PageLayout title={t('botlit.common.loading', 'Loading...')}>\n <div className=\"h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\" />\n </PageLayout>\n );\n }\n\n if (!agent) {\n return (\n <PageLayout title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}>\n <EmptyState\n illustration=\"empty-agents\"\n title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}\n description={t(\n 'botlit.agentDetail.notFound.description',\n \"The agent you're looking for doesn't exist.\"\n )}\n action={\n <Button onClick={() => navigateTo('agents')}>\n {t('botlit.agentDetail.notFound.backAction', 'Back to Agents')}\n </Button>\n }\n />\n </PageLayout>\n );\n }\n\n // `AgentRecord` declares every field the agent query selects — read directly.\n const systemPrompt = agent.systemPrompt || '';\n const llmModelId = agent.llmModelId || '';\n const temperature = agent.temperature;\n const maxTokens = agent.maxTokens;\n const mcpConnectionIds = agent.mcpConnectionIds ?? [];\n const knowledgeBaseIds = agent.knowledgeBaseIds ?? [];\n const workflowIds = agent.workflowIds ?? [];\n const capabilities = agent.capabilities ?? [];\n const tagIds = agent.tagIds ?? [];\n const maxConcurrentExecutions = agent.maxConcurrentExecutions || 10;\n const metadata = agent.metadata ?? null;\n\n const tabs: { id: TabType; label: string; icon: ReactNode }[] = [\n { id: 'assistant', label: 'Assistant setup', icon: <Settings size={16} /> },\n {\n id: 'overview',\n label: t('botlit.agentDetail.tabs.overview', 'Overview'),\n icon: <BarChart3 size={16} />,\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.tabs.prompt', 'Prompt'),\n icon: <FileText size={16} />,\n },\n {\n id: 'llm',\n label: t('botlit.agentDetail.tabs.llmConfig', 'LLM Config'),\n icon: <Brain size={16} />,\n },\n { id: 'tools', label: t('botlit.agentDetail.tabs.tools', 'Tools'), icon: <Wrench size={16} /> },\n {\n id: 'knowledge',\n label: t('botlit.agentDetail.tabs.knowledge', 'Knowledge'),\n icon: <BookOpen size={16} />,\n },\n {\n id: 'guardrails',\n label: t('botlit.agentDetail.tabs.guardrails', 'Guardrails'),\n icon: <Shield size={16} />,\n },\n {\n id: 'aiOperations',\n label: t('botlit.agentDetail.tabs.aiOperations', 'AI Operations'),\n icon: <ShieldCheck size={16} />,\n },\n { id: 'a2a', label: t('botlit.agentDetail.tabs.a2a', 'A2A'), icon: <Share2 size={16} /> },\n {\n id: 'versions',\n label: t('botlit.agentDetail.tabs.versions', 'Versions'),\n icon: <History size={16} />,\n },\n ];\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"icon\" onClick={() => navigateTo('agents')}>\n <ArrowLeft size={20} />\n </Button>\n <span className=\"text-3xl\">{'🤖'}</span>\n <div>\n <div className=\"flex items-center gap-2\">\n <span>{agent.name}</span>\n <StatusBadge status={agent.status} />\n <Badge variant=\"outline\">{agent.slug}</Badge>\n </div>\n <p className=\"text-sm font-normal text-text-secondary\">{agent.description}</p>\n </div>\n </div>\n }\n actions={\n <div className=\"flex gap-2\">\n {approvalSettings.data?.requireActivationApproval &&\n (agent.status === 'DRAFT' || agent.status === 'ARCHIVED') &&\n !agent.currentVersionId ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n onClick={() => {\n setActiveTab('overview');\n requestAnimationFrame(() =>\n document\n .querySelector('[data-testid=\"agent-approval-panel\"]')\n ?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n );\n }}\n >\n {t('botlit.agentApproval.requestAction', 'Request activation')}\n </Button>\n </BotmanorPermissionGate>\n ) : agent.status === 'DRAFT' || agent.status === 'ARCHIVED' ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'ACTIVE' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.activate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.activate.successSuffix', 'activated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.activate.error', 'Failed to activate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.activate', 'Activate')}\n </Button>\n </BotmanorPermissionGate>\n ) : (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'DRAFT' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.deactivate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.deactivate.successSuffix', 'deactivated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.deactivate.error', 'Failed to deactivate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.deactivate', 'Deactivate')}\n </Button>\n </BotmanorPermissionGate>\n )}\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n leftIcon={<Edit size={16} />}\n onClick={() => navigateTo(`agents/${agentId}/edit`)}\n >\n {t('botlit.agentDetail.actions.editAgent', 'Edit Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_EXECUTE}>\n <Button leftIcon={<Play size={16} />} onClick={() => navigateTo(`chat/${agentId}`)}>\n {t('botlit.agentDetail.actions.testAgent', 'Test Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_DELETE}>\n <Button\n variant=\"destructive\"\n leftIcon={<Trash2 size={16} />}\n isLoading={deleteAgentResult.loading}\n onClick={async () => {\n if (!agentId) return;\n if (\n !confirm(\n `${t('botlit.agentDetail.delete.confirmPrefix', 'Are you sure you want to delete')} \"${agent.name}\"? ${t('botlit.agentDetail.delete.confirmSuffix', 'This action cannot be undone.')}`\n )\n )\n return;\n try {\n await deleteAgent(agentId);\n toast.success(\n `${t('botlit.agentDetail.delete.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.delete.successSuffix', 'deleted successfully')}`\n );\n navigateTo('agents');\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.delete.error', 'Failed to delete agent')\n );\n }\n }}\n >\n {t('botlit.common.delete', 'Delete')}\n </Button>\n </BotmanorPermissionGate>\n </div>\n }\n >\n <div className=\"space-y-6\">\n {activeTab === 'assistant' && agentId && (\n <div className=\"space-y-5\">\n {/* Each panel is setup work: runtime configuration needs update, and\n publishing (whose listings are publish-gated too) needs publish. */}\n {can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) && (\n <AssistantRuntimeSetupPanel\n agentId={agentId}\n onConfigured={() => void refetchAgent()}\n />\n )}\n {can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <>\n <AssistantWebsitePanel agentId={agentId} knowledgeBaseIds={knowledgeBaseIds} />\n <AssistantChannelPanel agentId={agentId} />\n </>\n )}\n {!can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) &&\n !can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <p role=\"status\" className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.agentDetail.assistant.readOnly',\n 'Assistant setup and publishing are available to members who can edit or publish agents in this workspace.'\n )}\n </p>\n )}\n </div>\n )}\n <PagePurpose icon={<Brain size={18} />}>\n {t(\n 'botlit.agentDetail.purpose',\n 'This is the full configuration for a single agent — its prompt, model settings, the tools and knowledge it can use, its guardrails and how it talks to other agents. Use the tabs to inspect or change any part, and test the agent in chat to confirm it behaves the way you expect before going live.'\n )}\n </PagePurpose>\n\n {/* Tabs */}\n <div className=\"flex gap-1 border-b border-border-subtle overflow-x-auto\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'flex items-center gap-2 px-4 py-2 text-sm font-medium border-b-2 transition-colors whitespace-nowrap',\n activeTab === tab.id\n ? 'border-primary text-primary'\n : 'border-transparent text-text-secondary hover:text-text-primary'\n )}\n >\n {tab.icon}\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* Overview Tab */}\n {activeTab === 'overview' && (\n <div className=\"space-y-6\">\n <NextSteps\n storageKey={`botlit-agent-${agentId}`}\n steps={[\n {\n id: 'test',\n label: t('botlit.agentDetail.nextSteps.test', 'Test the agent in chat'),\n description: t(\n 'botlit.agentDetail.nextSteps.testDesc',\n 'Send it a few real prompts to see how it responds.'\n ),\n icon: <Play size={16} />,\n onClick: () => navigateTo(`chat/${agentId}`),\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.nextSteps.prompt', 'Refine the system prompt'),\n description: t(\n 'botlit.agentDetail.nextSteps.promptDesc',\n 'Tune its instructions and behaviour.'\n ),\n icon: <FileText size={16} />,\n onClick: () => setActiveTab('prompt'),\n },\n {\n id: 'tools',\n label: t('botlit.agentDetail.nextSteps.tools', 'Connect tools & knowledge'),\n description: t(\n 'botlit.agentDetail.nextSteps.toolsDesc',\n 'Give it MCP tools and knowledge bases to work with.'\n ),\n icon: <Wrench size={16} />,\n onClick: () => setActiveTab('tools'),\n },\n {\n id: 'activate',\n label: t('botlit.agentDetail.nextSteps.activate', 'Activate and attach to a bot'),\n description: t(\n 'botlit.agentDetail.nextSteps.activateDesc',\n 'Put it live so a bot can route conversations to it.'\n ),\n icon: <Share2 size={16} />,\n onClick: () => navigateTo(`agents/${agentId}/edit`),\n done: agent.status === 'ACTIVE',\n },\n ]}\n />\n {agentId && (\n <AgentApprovalPanel\n agentId={agentId}\n agentStatus={agent.status}\n onChanged={() => void refetchAgent()}\n />\n )}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Quick Info */}\n <Card className=\"lg:col-span-1\">\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Status</p>\n <StatusBadge status={agent.status} />\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Type</p>\n <Badge variant=\"outline\">{agent.type}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Visibility</p>\n <Badge variant=\"outline\">{agent.visibility}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model</p>\n <p className=\"font-medium font-mono text-sm\">\n {llmModelId || 'Not configured'}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">MCP Connections</p>\n <p className=\"font-medium\">{mcpConnectionIds.length} servers</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Knowledge Bases</p>\n <p className=\"font-medium\">{knowledgeBaseIds.length} KBs</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Created</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.createdAt)}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Updated</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.updatedAt)}</p>\n </div>\n </CardContent>\n </Card>\n\n {/* Capabilities */}\n <GlassCard treatment=\"glass\" glow className=\"lg:col-span-2 p-6\">\n <h3 className=\"mb-4 text-lg font-semibold tracking-tight text-text-primary\">\n {t('botlit.agentDetail.capabilities.title', 'Capabilities')}\n </h3>\n <div>\n {capabilities.length > 0 ? (\n <div className=\"grid grid-cols-2 md:grid-cols-3 gap-4\">\n {capabilities.map((cap: string) => (\n <div\n key={cap}\n className=\"p-3 rounded-lg border border-green-500 bg-green-500/10\"\n >\n <p className=\"font-medium\">{cap}</p>\n <Badge variant=\"success\">\n {t('botlit.agentDetail.capabilities.enabled', 'Enabled')}\n </Badge>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.capabilities.empty', 'No capabilities configured')}\n </p>\n )}\n </div>\n </GlassCard>\n\n {/* Tags */}\n {tagIds.length > 0 && (\n <Card className=\"lg:col-span-3\">\n <CardHeader>\n <CardTitle>{t('botlit.agentDetail.tags.title', 'Tags')}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {tagIds.map((tag: string) => (\n <Badge key={tag} variant=\"outline\">\n {tag}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n )}\n\n {/* Prompt Tab */}\n {activeTab === 'prompt' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FileText size={18} />\n {t('botlit.agentDetail.prompt.title', 'System Prompt')}\n </CardTitle>\n <CardDescription>\n {t(\n 'botlit.agentDetail.prompt.description',\n \"The system prompt that defines this agent's behavior\"\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {systemPrompt ? (\n <pre className=\"p-4 bg-bg-sunken rounded-lg text-sm whitespace-pre-wrap font-mono\">\n {systemPrompt}\n </pre>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.prompt.empty', 'No system prompt configured')}\n </p>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* LLM Config Tab */}\n {activeTab === 'llm' && (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Brain size={18} />\n {t('botlit.agentDetail.llm.title', 'Model Configuration')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model ID</p>\n <p className=\"font-medium font-mono\">{llmModelId || 'Not configured'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Temperature</p>\n <p className=\"font-medium\">{temperature != null ? temperature : 'Default'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Tokens</p>\n <p className=\"font-medium\">{maxTokens != null ? maxTokens : 'Default'}</p>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageSquare size={18} />\n {t('botlit.agentDetail.executionLimits.title', 'Execution Limits')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent Executions</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Total Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n {agent.lastExecutedAt && (\n <div>\n <p className=\"text-sm text-text-secondary\">Last Executed</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.lastExecutedAt)}</p>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Tools Tab */}\n {activeTab === 'tools' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wrench size={18} />\n MCP Server Connections\n </CardTitle>\n <CardDescription>Connected MCP servers providing tools</CardDescription>\n </CardHeader>\n <CardContent>\n {mcpConnectionIds.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {mcpConnectionIds.map((mcpId: string) => (\n <div\n key={mcpId}\n className=\"flex items-center gap-3 p-4 border border-border-subtle rounded-lg\"\n >\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Wrench size={18} className=\"text-primary\" />\n </div>\n <div>\n <p className=\"font-medium\">MCP Server</p>\n <p className=\"text-sm text-text-secondary font-mono\">{mcpId}</p>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No MCP servers connected</p>\n )}\n </CardContent>\n </Card>\n\n {workflowIds.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Settings size={18} />\n Workflows\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {workflowIds.map((wfId: string) => (\n <div key={wfId} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"font-mono text-sm\">{wfId}</p>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n )}\n\n {/* Knowledge Tab */}\n {activeTab === 'knowledge' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <BookOpen size={18} />\n Knowledge Bases\n </CardTitle>\n <CardDescription>Connected knowledge bases for RAG</CardDescription>\n </CardHeader>\n <CardContent>\n {knowledgeBaseIds.length > 0 ? (\n <div className=\"space-y-4\">\n {knowledgeBaseIds.map((kbId: string, index: number) => (\n <div\n key={index}\n className=\"p-4 border border-border-subtle rounded-lg space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"font-medium\">Knowledge Base</p>\n <Badge variant=\"outline\">#{index + 1}</Badge>\n </div>\n <p className=\"font-mono text-sm\">{kbId}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No knowledge bases connected</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* Guardrails Tab */}\n {activeTab === 'guardrails' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Shield size={18} />\n Guardrails & Policies\n </CardTitle>\n <CardDescription>Security and policy configurations</CardDescription>\n </CardHeader>\n <CardContent>\n {metadata ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {Object.entries(metadata)\n .filter(([_, value]) => value)\n .map(([key, value]) => (\n <div key={key} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"text-sm text-text-secondary capitalize\">\n {key\n .replace('Id', '')\n .replace(/([A-Z])/g, ' $1')\n .trim()}\n </p>\n <p className=\"font-mono text-sm\">{String(value)}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No policy bindings configured</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* AI Operations Tab (supervisor findings for this agent, BOFF-3839) */}\n {activeTab === 'aiOperations' && agentId && (\n <AiOperationsPanel\n filter={{ subjectType: 'AGENT', subjectId: agentId }}\n description={t(\n 'botlit.agentDetail.aiOperationsDescription',\n 'What the supervisor flagged for this agent — drift, evidence and the recommended action.'\n )}\n />\n )}\n\n {/* A2A Tab */}\n {activeTab === 'a2a' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Share2 size={18} />\n A2A Configuration\n </CardTitle>\n <CardDescription>Agent-to-Agent communication settings</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-text-secondary\">A2A is not enabled for this agent</p>\n </CardContent>\n </Card>\n )}\n\n {/* Versions Tab (BOFF-4381) */}\n {activeTab === 'versions' && agentId && (\n <VersionHistoryPanel\n agentId={agentId}\n draftVersionId={agent.draftVersionId}\n currentVersionId={agent.currentVersionId}\n onChanged={() => void refetchAgent()}\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentDetailPage.js","names":["_Fragment","AgentDetailPage","t","useTr","useParams","useBotlit","can","useBotmanorCan","agent","refetchAgent","useAgent","agentId","updateAgent","updateAgentResult","useUpdateAgent","deleteAgent","deleteAgentResult","useDeleteAgent","activeTab","setActiveTab","useState","approvalSettings","useAgentApprovalSettings","loading","PageLayout","EmptyState","Button","navigateTo","systemPrompt","llmModelId","temperature","maxTokens","mcpConnectionIds","knowledgeBaseIds","workflowIds","capabilities","tagIds","maxConcurrentExecutions","metadata","tabs","Settings","BarChart3","FileText","Brain","Wrench","BookOpen","Shield","ShieldCheck","Share2","History","ArrowLeft","StatusBadge","Badge","BotmanorPermissionGate","BOTMANOR_PERMISSIONS","toast","err","Edit","Play","Trash2","AssistantRuntimeSetupPanel","Fragment","AssistantWebsitePanel","AssistantChannelPanel","PagePurpose","tab","cn","NextSteps","AgentApprovalPanel","Card","CardHeader","CardTitle","CardContent","formatRelativeTime","GlassCard","cap","tag","CardDescription","MessageSquare","mcpId","wfId","index","kbId","_","value","key","AiOperationsPanel","VersionHistoryPanel"],"sources":["../../../src/botlit/pages/AgentDetailPage.tsx"],"sourcesContent":["/**\n * Agent Detail Page\n * @module botlit/pages\n *\n * Displays agent details using flat API fields from the real GraphQL backend.\n * Maps flat fields (systemPrompt, llmModelId, mcpConnectionIds, knowledgeBaseIds, capabilities[])\n * to a rich detail view with tabs.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Play,\n Settings,\n BarChart3,\n BookOpen,\n Wrench,\n Shield,\n Brain,\n MessageSquare,\n Edit,\n Share2,\n FileText,\n Trash2,\n History,\n ShieldCheck,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { toast } from 'sonner';\nimport { PagePurpose, NextSteps, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { VersionHistoryPanel } from '../components/VersionHistoryPanel';\nimport { AgentApprovalPanel } from '../components/AgentApprovalPanel';\nimport { useAgentApprovalSettings } from '../hooks/useAgentApprovals';\nimport { AssistantRuntimeSetupPanel } from '../components/AssistantRuntimeSetupPanel';\nimport { AssistantChannelPanel } from '../components/AssistantChannelPanel';\nimport { AssistantWebsitePanel } from '../components/AssistantWebsitePanel';\nimport { AiOperationsPanel } from '../components/AiOperationsPanel';\nimport { useAgent, useUpdateAgent, useDeleteAgent } from '../hooks/useAgents';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport { formatRelativeTime } from '../utils/formatters';\nimport { cn } from '../utils/cn';\nimport { BOTMANOR_PERMISSIONS, BotmanorPermissionGate, useBotmanorCan } from '../permissions';\n\ntype TabType =\n | 'overview'\n | 'prompt'\n | 'llm'\n | 'tools'\n | 'knowledge'\n | 'guardrails'\n | 'aiOperations'\n | 'a2a'\n | 'versions'\n | 'assistant';\n\nexport const AgentDetailPage: FC = () => {\n const t = useTr();\n const { agentId } = useParams();\n const { navigateTo } = useBotlit();\n const can = useBotmanorCan();\n const { data: agent, loading, refetch: refetchAgent } = useAgent(agentId);\n const [updateAgent, updateAgentResult] = useUpdateAgent();\n const [deleteAgent, deleteAgentResult] = useDeleteAgent();\n const [activeTab, setActiveTab] = useState<TabType>('overview');\n // BOFF-9682: when the workspace requires activation approval, an agent that\n // has never been published goes live through a reviewer, not this button.\n const approvalSettings = useAgentApprovalSettings();\n\n if (loading) {\n return (\n <PageLayout title={t('botlit.common.loading', 'Loading...')}>\n <div className=\"h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\" />\n </PageLayout>\n );\n }\n\n if (!agent) {\n return (\n <PageLayout title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}>\n <EmptyState\n illustration=\"empty-agents\"\n title={t('botlit.agentDetail.notFound.title', 'Agent Not Found')}\n description={t(\n 'botlit.agentDetail.notFound.description',\n \"The agent you're looking for doesn't exist.\"\n )}\n action={\n <Button onClick={() => navigateTo('agents')}>\n {t('botlit.agentDetail.notFound.backAction', 'Back to Agents')}\n </Button>\n }\n />\n </PageLayout>\n );\n }\n\n // `AgentRecord` declares every field the agent query selects — read directly.\n const systemPrompt = agent.systemPrompt || '';\n const llmModelId = agent.llmModelId || '';\n const temperature = agent.temperature;\n const maxTokens = agent.maxTokens;\n const mcpConnectionIds = agent.mcpConnectionIds ?? [];\n const knowledgeBaseIds = agent.knowledgeBaseIds ?? [];\n const workflowIds = agent.workflowIds ?? [];\n const capabilities = agent.capabilities ?? [];\n const tagIds = agent.tagIds ?? [];\n const maxConcurrentExecutions = agent.maxConcurrentExecutions || 10;\n const metadata = agent.metadata ?? null;\n\n const tabs: { id: TabType; label: string; icon: ReactNode }[] = [\n { id: 'assistant', label: 'Assistant setup', icon: <Settings size={16} /> },\n {\n id: 'overview',\n label: t('botlit.agentDetail.tabs.overview', 'Overview'),\n icon: <BarChart3 size={16} />,\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.tabs.prompt', 'Prompt'),\n icon: <FileText size={16} />,\n },\n {\n id: 'llm',\n label: t('botlit.agentDetail.tabs.llmConfig', 'LLM Config'),\n icon: <Brain size={16} />,\n },\n { id: 'tools', label: t('botlit.agentDetail.tabs.tools', 'Tools'), icon: <Wrench size={16} /> },\n {\n id: 'knowledge',\n label: t('botlit.agentDetail.tabs.knowledge', 'Knowledge'),\n icon: <BookOpen size={16} />,\n },\n {\n id: 'guardrails',\n label: t('botlit.agentDetail.tabs.guardrails', 'Guardrails'),\n icon: <Shield size={16} />,\n },\n {\n id: 'aiOperations',\n label: t('botlit.agentDetail.tabs.aiOperations', 'AI Operations'),\n icon: <ShieldCheck size={16} />,\n },\n { id: 'a2a', label: t('botlit.agentDetail.tabs.a2a', 'A2A'), icon: <Share2 size={16} /> },\n {\n id: 'versions',\n label: t('botlit.agentDetail.tabs.versions', 'Versions'),\n icon: <History size={16} />,\n },\n ];\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"icon\" onClick={() => navigateTo('agents')}>\n <ArrowLeft size={20} />\n </Button>\n <span className=\"text-3xl\">{'🤖'}</span>\n <div>\n <div className=\"flex items-center gap-2\">\n <span>{agent.name}</span>\n <StatusBadge status={agent.status} />\n <Badge variant=\"outline\">{agent.slug}</Badge>\n </div>\n <p className=\"text-sm font-normal text-text-secondary\">{agent.description}</p>\n </div>\n </div>\n }\n actions={\n <div className=\"flex gap-2\">\n {approvalSettings.data?.requireActivationApproval &&\n (agent.status === 'DRAFT' || agent.status === 'ARCHIVED') &&\n !agent.currentVersionId ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n onClick={() => {\n setActiveTab('overview');\n requestAnimationFrame(() =>\n document\n .querySelector('[data-testid=\"agent-approval-panel\"]')\n ?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n );\n }}\n >\n {t('botlit.agentApproval.requestAction', 'Request activation')}\n </Button>\n </BotmanorPermissionGate>\n ) : agent.status === 'DRAFT' || agent.status === 'ARCHIVED' ? (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"default\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'ACTIVE' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.activate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.activate.successSuffix', 'activated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.activate.error', 'Failed to activate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.activate', 'Activate')}\n </Button>\n </BotmanorPermissionGate>\n ) : (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n isLoading={updateAgentResult.loading}\n onClick={async () => {\n try {\n if (!agentId) return;\n await updateAgent({ agentId, input: { status: 'DRAFT' } });\n await refetchAgent();\n toast.success(\n `${t('botlit.agentDetail.deactivate.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.deactivate.successSuffix', 'deactivated')}`\n );\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.deactivate.error', 'Failed to deactivate agent')\n );\n }\n }}\n >\n {t('botlit.agentDetail.actions.deactivate', 'Deactivate')}\n </Button>\n </BotmanorPermissionGate>\n )}\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_UPDATE}>\n <Button\n variant=\"outline\"\n leftIcon={<Edit size={16} />}\n onClick={() => navigateTo(`agents/${agentId}/edit`)}\n >\n {t('botlit.agentDetail.actions.editAgent', 'Edit Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_EXECUTE}>\n <Button leftIcon={<Play size={16} />} onClick={() => navigateTo(`chat/${agentId}`)}>\n {t('botlit.agentDetail.actions.testAgent', 'Test Agent')}\n </Button>\n </BotmanorPermissionGate>\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.AGENT_DELETE}>\n <Button\n variant=\"destructive\"\n leftIcon={<Trash2 size={16} />}\n isLoading={deleteAgentResult.loading}\n onClick={async () => {\n if (!agentId) return;\n if (\n !confirm(\n `${t('botlit.agentDetail.delete.confirmPrefix', 'Are you sure you want to delete')} \"${agent.name}\"? ${t('botlit.agentDetail.delete.confirmSuffix', 'This action cannot be undone.')}`\n )\n )\n return;\n try {\n await deleteAgent(agentId);\n toast.success(\n `${t('botlit.agentDetail.delete.successPrefix', 'Agent')} \"${agent.name}\" ${t('botlit.agentDetail.delete.successSuffix', 'deleted successfully')}`\n );\n navigateTo('agents');\n } catch (err: unknown) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.agentDetail.delete.error', 'Failed to delete agent')\n );\n }\n }}\n >\n {t('botlit.common.delete', 'Delete')}\n </Button>\n </BotmanorPermissionGate>\n </div>\n }\n >\n <div className=\"space-y-6\">\n {activeTab === 'assistant' && agentId && (\n <div className=\"space-y-5\">\n {/* Each panel is setup work: runtime configuration needs update, and\n publishing (whose listings are publish-gated too) needs publish. */}\n {can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) && (\n <AssistantRuntimeSetupPanel\n agentId={agentId}\n onConfigured={() => void refetchAgent()}\n />\n )}\n {can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <>\n <AssistantWebsitePanel agentId={agentId} knowledgeBaseIds={knowledgeBaseIds} />\n <AssistantChannelPanel agentId={agentId} />\n </>\n )}\n {!can(BOTMANOR_PERMISSIONS.AGENT_UPDATE) &&\n !can(BOTMANOR_PERMISSIONS.AGENT_PUBLISH) && (\n <p role=\"status\" className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.agentDetail.assistant.readOnly',\n 'Assistant setup and publishing are available to members who can edit or publish agents in this workspace.'\n )}\n </p>\n )}\n </div>\n )}\n <PagePurpose icon={<Brain size={18} />}>\n {t(\n 'botlit.agentDetail.purpose',\n 'This is the full configuration for a single agent — its prompt, model settings, the tools and knowledge it can use, its guardrails and how it talks to other agents. Use the tabs to inspect or change any part, and test the agent in chat to confirm it behaves the way you expect before going live.'\n )}\n </PagePurpose>\n\n {/* Tabs */}\n <div className=\"flex gap-1 border-b border-border-subtle overflow-x-auto\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'flex items-center gap-2 px-4 py-2 text-sm font-medium border-b-2 transition-colors whitespace-nowrap',\n activeTab === tab.id\n ? 'border-primary text-primary'\n : 'border-transparent text-text-secondary hover:text-text-primary'\n )}\n >\n {tab.icon}\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* Overview Tab */}\n {activeTab === 'overview' && (\n <div className=\"space-y-6\">\n <NextSteps\n storageKey={`botlit-agent-${agentId}`}\n steps={[\n {\n id: 'test',\n label: t('botlit.agentDetail.nextSteps.test', 'Test the agent in chat'),\n description: t(\n 'botlit.agentDetail.nextSteps.testDesc',\n 'Send it a few real prompts to see how it responds.'\n ),\n icon: <Play size={16} />,\n onClick: () => navigateTo(`chat/${agentId}`),\n },\n {\n id: 'prompt',\n label: t('botlit.agentDetail.nextSteps.prompt', 'Refine the system prompt'),\n description: t(\n 'botlit.agentDetail.nextSteps.promptDesc',\n 'Tune its instructions and behaviour.'\n ),\n icon: <FileText size={16} />,\n onClick: () => setActiveTab('prompt'),\n },\n {\n id: 'tools',\n label: t('botlit.agentDetail.nextSteps.tools', 'Connect tools & knowledge'),\n description: t(\n 'botlit.agentDetail.nextSteps.toolsDesc',\n 'Give it MCP tools and knowledge bases to work with.'\n ),\n icon: <Wrench size={16} />,\n onClick: () => setActiveTab('tools'),\n },\n {\n id: 'activate',\n label: t('botlit.agentDetail.nextSteps.activate', 'Activate and attach to a bot'),\n description: t(\n 'botlit.agentDetail.nextSteps.activateDesc',\n 'Put it live so a bot can route conversations to it.'\n ),\n icon: <Share2 size={16} />,\n onClick: () => navigateTo(`agents/${agentId}/edit`),\n done: agent.status === 'ACTIVE',\n },\n ]}\n />\n {agentId && (\n <AgentApprovalPanel\n agentId={agentId}\n agentStatus={agent.status}\n onChanged={() => void refetchAgent()}\n />\n )}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Quick Info */}\n <Card className=\"lg:col-span-1\">\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Status</p>\n <StatusBadge status={agent.status} />\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Type</p>\n <Badge variant=\"outline\">{agent.type}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Visibility</p>\n <Badge variant=\"outline\">{agent.visibility}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model</p>\n <p className=\"font-medium font-mono text-sm\">\n {llmModelId || 'Not configured'}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">MCP Connections</p>\n <p className=\"font-medium\">{mcpConnectionIds.length} servers</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Knowledge Bases</p>\n <p className=\"font-medium\">{knowledgeBaseIds.length} KBs</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Created</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.createdAt)}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Updated</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.updatedAt)}</p>\n </div>\n </CardContent>\n </Card>\n\n {/* Capabilities */}\n <GlassCard treatment=\"glass\" glow className=\"lg:col-span-2 p-6\">\n <h3 className=\"mb-4 text-lg font-semibold tracking-tight text-text-primary\">\n {t('botlit.agentDetail.capabilities.title', 'Capabilities')}\n </h3>\n <div>\n {capabilities.length > 0 ? (\n <div className=\"grid grid-cols-2 md:grid-cols-3 gap-4\">\n {capabilities.map((cap: string) => (\n <div\n key={cap}\n className=\"p-3 rounded-lg border border-status-success-border bg-status-success-bg-subtle\"\n >\n <p className=\"font-medium\">{cap}</p>\n <Badge variant=\"success\">\n {t('botlit.agentDetail.capabilities.enabled', 'Enabled')}\n </Badge>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.capabilities.empty', 'No capabilities configured')}\n </p>\n )}\n </div>\n </GlassCard>\n\n {/* Tags */}\n {tagIds.length > 0 && (\n <Card className=\"lg:col-span-3\">\n <CardHeader>\n <CardTitle>{t('botlit.agentDetail.tags.title', 'Tags')}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {tagIds.map((tag: string) => (\n <Badge key={tag} variant=\"outline\">\n {tag}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n )}\n\n {/* Prompt Tab */}\n {activeTab === 'prompt' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FileText size={18} />\n {t('botlit.agentDetail.prompt.title', 'System Prompt')}\n </CardTitle>\n <CardDescription>\n {t(\n 'botlit.agentDetail.prompt.description',\n \"The system prompt that defines this agent's behavior\"\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {systemPrompt ? (\n <pre className=\"p-4 bg-bg-sunken rounded-lg text-sm whitespace-pre-wrap font-mono\">\n {systemPrompt}\n </pre>\n ) : (\n <p className=\"text-text-secondary\">\n {t('botlit.agentDetail.prompt.empty', 'No system prompt configured')}\n </p>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* LLM Config Tab */}\n {activeTab === 'llm' && (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Brain size={18} />\n {t('botlit.agentDetail.llm.title', 'Model Configuration')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">LLM Model ID</p>\n <p className=\"font-medium font-mono\">{llmModelId || 'Not configured'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Temperature</p>\n <p className=\"font-medium\">{temperature != null ? temperature : 'Default'}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Max Tokens</p>\n <p className=\"font-medium\">{maxTokens != null ? maxTokens : 'Default'}</p>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageSquare size={18} />\n {t('botlit.agentDetail.executionLimits.title', 'Execution Limits')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Max Concurrent Executions</p>\n <p className=\"font-medium\">{maxConcurrentExecutions}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Total Executions</p>\n <p className=\"font-medium\">{agent.executionCount ?? 0}</p>\n </div>\n {agent.lastExecutedAt && (\n <div>\n <p className=\"text-sm text-text-secondary\">Last Executed</p>\n <p className=\"font-medium\">{formatRelativeTime(agent.lastExecutedAt)}</p>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )}\n\n {/* Tools Tab */}\n {activeTab === 'tools' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wrench size={18} />\n MCP Server Connections\n </CardTitle>\n <CardDescription>Connected MCP servers providing tools</CardDescription>\n </CardHeader>\n <CardContent>\n {mcpConnectionIds.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {mcpConnectionIds.map((mcpId: string) => (\n <div\n key={mcpId}\n className=\"flex items-center gap-3 p-4 border border-border-subtle rounded-lg\"\n >\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Wrench size={18} className=\"text-primary\" />\n </div>\n <div>\n <p className=\"font-medium\">MCP Server</p>\n <p className=\"text-sm text-text-secondary font-mono\">{mcpId}</p>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No MCP servers connected</p>\n )}\n </CardContent>\n </Card>\n\n {workflowIds.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Settings size={18} />\n Workflows\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {workflowIds.map((wfId: string) => (\n <div key={wfId} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"font-mono text-sm\">{wfId}</p>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n )}\n\n {/* Knowledge Tab */}\n {activeTab === 'knowledge' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <BookOpen size={18} />\n Knowledge Bases\n </CardTitle>\n <CardDescription>Connected knowledge bases for RAG</CardDescription>\n </CardHeader>\n <CardContent>\n {knowledgeBaseIds.length > 0 ? (\n <div className=\"space-y-4\">\n {knowledgeBaseIds.map((kbId: string, index: number) => (\n <div\n key={index}\n className=\"p-4 border border-border-subtle rounded-lg space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"font-medium\">Knowledge Base</p>\n <Badge variant=\"outline\">#{index + 1}</Badge>\n </div>\n <p className=\"font-mono text-sm\">{kbId}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No knowledge bases connected</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* Guardrails Tab */}\n {activeTab === 'guardrails' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Shield size={18} />\n Guardrails & Policies\n </CardTitle>\n <CardDescription>Security and policy configurations</CardDescription>\n </CardHeader>\n <CardContent>\n {metadata ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {Object.entries(metadata)\n .filter(([_, value]) => value)\n .map(([key, value]) => (\n <div key={key} className=\"p-4 border border-border-subtle rounded-lg\">\n <p className=\"text-sm text-text-secondary capitalize\">\n {key\n .replace('Id', '')\n .replace(/([A-Z])/g, ' $1')\n .trim()}\n </p>\n <p className=\"font-mono text-sm\">{String(value)}</p>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-text-secondary\">No policy bindings configured</p>\n )}\n </CardContent>\n </Card>\n )}\n\n {/* AI Operations Tab (supervisor findings for this agent, BOFF-3839) */}\n {activeTab === 'aiOperations' && agentId && (\n <AiOperationsPanel\n filter={{ subjectType: 'AGENT', subjectId: agentId }}\n description={t(\n 'botlit.agentDetail.aiOperationsDescription',\n 'What the supervisor flagged for this agent — drift, evidence and the recommended action.'\n )}\n />\n )}\n\n {/* A2A Tab */}\n {activeTab === 'a2a' && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Share2 size={18} />\n A2A Configuration\n </CardTitle>\n <CardDescription>Agent-to-Agent communication settings</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-text-secondary\">A2A is not enabled for this agent</p>\n </CardContent>\n </Card>\n )}\n\n {/* Versions Tab (BOFF-4381) */}\n {activeTab === 'versions' && agentId && (\n <VersionHistoryPanel\n agentId={agentId}\n draftVersionId={agent.draftVersionId}\n currentVersionId={agent.currentVersionId}\n onChanged={() => void refetchAgent()}\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|