@burdenoff/microfe-botmanor 2026.821.1 → 2026.926.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/README.md +4 -1
- package/dist/botlit/BotlitRoutes.js.map +1 -1
- package/dist/botlit/BotmanorRoot.js.map +1 -1
- package/dist/botlit/BotmanorRootInner.js +4 -4
- package/dist/botlit/BotmanorRootInner.js.map +1 -1
- package/dist/botlit/components/ErrorState.js +33 -29
- package/dist/botlit/components/ErrorState.js.map +1 -1
- package/dist/botlit/components/RouteLoader.js +52 -48
- package/dist/botlit/components/RouteLoader.js.map +1 -1
- package/dist/botlit/components/VersionHistoryPanel.js +74 -77
- package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
- package/dist/botlit/components/WorkspaceRequired.js +31 -30
- package/dist/botlit/components/WorkspaceRequired.js.map +1 -1
- package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
- package/dist/botlit/hooks/useConversations.js.map +1 -1
- package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
- package/dist/botlit/pages/A2AAgentDetailPage.js +1 -1
- package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/A2ARegistryPage.js +116 -124
- package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
- package/dist/botlit/pages/AgentDetailPage.js +169 -172
- package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentsListPage.js +96 -90
- package/dist/botlit/pages/AgentsListPage.js.map +1 -1
- package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
- package/dist/botlit/pages/BotDetailPage.js +228 -231
- package/dist/botlit/pages/BotDetailPage.js.map +1 -1
- package/dist/botlit/pages/BotWorkflowTab.js +84 -87
- package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
- package/dist/botlit/pages/BotsListPage.js +144 -147
- package/dist/botlit/pages/BotsListPage.js.map +1 -1
- package/dist/botlit/pages/BucketsPage.js +3 -3
- package/dist/botlit/pages/BucketsPage.js.map +1 -1
- package/dist/botlit/pages/ChannelDetailPage.js +1 -1
- package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
- package/dist/botlit/pages/ChannelsPage.js +156 -149
- package/dist/botlit/pages/ChannelsPage.js.map +1 -1
- package/dist/botlit/pages/ChatPage.js +126 -129
- package/dist/botlit/pages/ChatPage.js.map +1 -1
- package/dist/botlit/pages/DashboardPage.js +111 -114
- package/dist/botlit/pages/DashboardPage.js.map +1 -1
- package/dist/botlit/pages/ExecutionsPage.js +163 -159
- package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
- package/dist/botlit/pages/InstalledPackagesPage.js +3 -3
- package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
- package/dist/botlit/pages/KnowledgeBasesPage.js +84 -78
- package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
- package/dist/botlit/pages/MCPServersPage.js +159 -154
- package/dist/botlit/pages/MCPServersPage.js.map +1 -1
- package/dist/botlit/pages/PoliciesPage.js +119 -114
- package/dist/botlit/pages/PoliciesPage.js.map +1 -1
- package/dist/botlit/pages/RetrievalProfilesPage.js +102 -109
- package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
- package/dist/botlit/pages/SettingsPage.js +144 -159
- package/dist/botlit/pages/SettingsPage.js.map +1 -1
- package/dist/botlit/pages/SkillsPage.js +122 -105
- package/dist/botlit/pages/SkillsPage.js.map +1 -1
- package/dist/botlit/pages/StorePage.js +176 -175
- package/dist/botlit/pages/StorePage.js.map +1 -1
- package/dist/botlit/providers/BotlitProvider.js.map +1 -1
- package/dist/botlit/store/botlitStore.js +1 -1
- package/dist/botlit/store/botlitStore.js.map +1 -1
- package/dist/botlit/utils/navigation.js.map +1 -1
- package/dist/shared/hooks/useTr.js +14 -0
- package/dist/shared/hooks/useTr.js.map +1 -0
- package/package.json +33 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"A2ARegistryPage.js","names":[],"sources":["../../../src/botlit/pages/A2ARegistryPage.tsx"],"sourcesContent":["/**\n * A2A Registry Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Plus,\n Search as SearchIcon,\n Filter,\n Globe,\n Shield,\n CheckCircle,\n AlertCircle,\n ExternalLink,\n Zap,\n} from 'lucide-react';\nimport { PagePurpose, 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 { Input } from '../components/Input';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useA2AAgents, a2aAgentSkillCount, type A2AAgentRecord } from '../hooks';\nimport { formatRelativeTime, MISSING_VALUE } from '../utils/formatters';\n\nconst TrustBadge: FC<{ level: string }> = ({ level }) => {\n switch (level) {\n case 'INTERNAL':\n return (\n <Badge variant=\"success\" className=\"flex items-center gap-1\">\n <Shield size={12} />\n Internal\n </Badge>\n );\n case 'VERIFIED_PUBLISHER':\n return (\n <Badge variant=\"default\" className=\"flex items-center gap-1\">\n <CheckCircle size={12} />\n Verified\n </Badge>\n );\n case 'UNVERIFIED':\n default:\n return (\n <Badge variant=\"outline\" className=\"flex items-center gap-1\">\n <AlertCircle size={12} />\n Unverified\n </Badge>\n );\n }\n};\n\nexport const A2ARegistryPage: FC = () => {\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: agents, loading, error, refetch } = useA2AAgents({ search });\n\n return (\n <PageLayout\n title=\"A2A Registry\"\n description=\"Discover and connect to external agents via the Agent-to-Agent protocol\"\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>Register Agent</Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Globe size={18} />}>\n The A2A (Agent-to-Agent) registry lets your bots collaborate with external agents — your\n own or third-party — over a shared open protocol. Register an agent by its\n <code> /.well-known/agent.json</code> card to discover its skills, set how much you trust\n it, and let your agents delegate tasks to it. Use this page to curate that network of\n partner agents.\n </PagePurpose>\n\n {/* Search */}\n <div className=\"flex items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search A2A agents...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <Button variant=\"outline\" leftIcon={<Filter size={16} />}>\n Filters\n </Button>\n </div>\n\n {/* Agents List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className=\"h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"the A2A registry\" error={error} onRetry={() => void refetch()} />\n ) : agents.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {agents.map((agent: A2AAgentRecord) => (\n <Link key={agent.id} to={getPath(`a2a/${agent.id}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Globe className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{agent.name}</CardTitle>\n <CardDescription className=\"text-xs line-clamp-2\">\n {agent.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={agent.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Trust Level */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Trust Level</span>\n <TrustBadge level={agent.trustLevel} />\n </div>\n\n {/* Skills Count */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Available Skills</span>\n <Badge variant=\"secondary\">{a2aAgentSkillCount(agent)} skills</Badge>\n </div>\n\n {/* Well-known URL */}\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <ExternalLink size={14} />\n <span className=\"truncate\">{agent.wellKnownUrl ?? MISSING_VALUE}</span>\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary\">\n <span>Added {formatRelativeTime(agent.createdAt)}</span>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-7 text-xs\">\n <Zap size={12} className=\"mr-1\" />\n Test\n </Button>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-people\"\n title=\"No A2A agents registered\"\n description=\"Register external agents to enable agent-to-agent communication and delegation.\"\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>Register Agent</Link>\n </Button>\n }\n />\n )}\n\n {/* A2A Protocol Info */}\n <GlassCard treatment=\"glass\" glow className=\"p-6\">\n <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary\">\n <Globe size={18} />\n Agent-to-Agent Protocol\n </h2>\n <p className=\"text-sm text-text-secondary\">\n A2A enables secure communication between agents across different systems\n </p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Shield size={16} className=\"text-primary\" />\n Trust Levels\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n <strong>Internal:</strong> Your own agents\n </li>\n <li>\n <strong>Verified:</strong> Publisher verified by Botlit\n </li>\n <li>\n <strong>Unverified:</strong> Community agents\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Zap size={16} className=\"text-primary\" />\n Capabilities\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>Skill discovery via agent cards</li>\n <li>Secure task delegation</li>\n <li>Structured input/output modes</li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <ExternalLink size={16} className=\"text-primary\" />\n Integration\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>Discover via /.well-known/agent.json</li>\n <li>Automatic capability negotiation</li>\n <li>Entitlement-based access control</li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"A2ARegistryPage.js","names":[],"sources":["../../../src/botlit/pages/A2ARegistryPage.tsx"],"sourcesContent":["/**\n * A2A Registry Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Plus,\n Search as SearchIcon,\n Filter,\n Globe,\n Shield,\n CheckCircle,\n AlertCircle,\n ExternalLink,\n Zap,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { PagePurpose, 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 { Input } from '../components/Input';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useA2AAgents, a2aAgentSkillCount, type A2AAgentRecord } from '../hooks';\nimport { formatRelativeTime, MISSING_VALUE } from '../utils/formatters';\n\nconst TrustBadge: FC<{ level: string; t: ReturnType<typeof useTr> }> = ({ level, t }) => {\n switch (level) {\n case 'INTERNAL':\n return (\n <Badge variant=\"success\" className=\"flex items-center gap-1\">\n <Shield size={12} />\n {t('botlit.a2aRegistry.trustBadge.internal', 'Internal')}\n </Badge>\n );\n case 'VERIFIED_PUBLISHER':\n return (\n <Badge variant=\"default\" className=\"flex items-center gap-1\">\n <CheckCircle size={12} />\n {t('botlit.a2aRegistry.trustBadge.verified', 'Verified')}\n </Badge>\n );\n case 'UNVERIFIED':\n default:\n return (\n <Badge variant=\"outline\" className=\"flex items-center gap-1\">\n <AlertCircle size={12} />\n {t('botlit.a2aRegistry.trustBadge.unverified', 'Unverified')}\n </Badge>\n );\n }\n};\n\nexport const A2ARegistryPage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: agents, loading, error, refetch } = useA2AAgents({ search });\n\n return (\n <PageLayout\n title={t('botlit.a2aRegistry.title', 'A2A Registry')}\n description={t(\n 'botlit.a2aRegistry.description',\n 'Discover and connect to external agents via the Agent-to-Agent protocol'\n )}\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>\n {t('botlit.a2aRegistry.actions.registerAgent', 'Register Agent')}\n </Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Globe size={18} />}>\n {t(\n 'botlit.a2aRegistry.purpose',\n 'The A2A (Agent-to-Agent) registry lets your bots collaborate with external agents — your own or third-party — over a shared open protocol. Register an agent by its /.well-known/agent.json card to discover its skills, set how much you trust it, and let your agents delegate tasks to it. Use this page to curate that network of partner agents.'\n )}\n </PagePurpose>\n\n {/* Search */}\n <div className=\"flex items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder={t('botlit.a2aRegistry.searchPlaceholder', 'Search A2A agents...')}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <Button variant=\"outline\" leftIcon={<Filter size={16} />}>\n {t('botlit.a2aRegistry.actions.filters', 'Filters')}\n </Button>\n </div>\n\n {/* Agents List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className=\"h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"the A2A registry\" error={error} onRetry={() => void refetch()} />\n ) : agents.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {agents.map((agent: A2AAgentRecord) => (\n <Link key={agent.id} to={getPath(`a2a/${agent.id}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Globe className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{agent.name}</CardTitle>\n <CardDescription className=\"text-xs line-clamp-2\">\n {agent.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={agent.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Trust Level */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">\n {t('botlit.a2aRegistry.list.trustLevel', 'Trust Level')}\n </span>\n <TrustBadge level={agent.trustLevel} t={t} />\n </div>\n\n {/* Skills Count */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">\n {t('botlit.a2aRegistry.list.availableSkills', 'Available Skills')}\n </span>\n <Badge variant=\"secondary\">\n {t('botlit.a2aRegistry.list.skillsCount', '{{count}} skills', {\n count: a2aAgentSkillCount(agent),\n })}\n </Badge>\n </div>\n\n {/* Well-known URL */}\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <ExternalLink size={14} />\n <span className=\"truncate\">{agent.wellKnownUrl ?? MISSING_VALUE}</span>\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary\">\n <span>\n {t('botlit.a2aRegistry.list.added', 'Added')}{' '}\n {formatRelativeTime(agent.createdAt)}\n </span>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-7 text-xs\">\n <Zap size={12} className=\"mr-1\" />\n {t('botlit.a2aRegistry.actions.test', 'Test')}\n </Button>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-people\"\n title={t('botlit.a2aRegistry.empty.title', 'No A2A agents registered')}\n description={t(\n 'botlit.a2aRegistry.empty.description',\n 'Register external agents to enable agent-to-agent communication and delegation.'\n )}\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>\n {t('botlit.a2aRegistry.actions.registerAgent', 'Register Agent')}\n </Link>\n </Button>\n }\n />\n )}\n\n {/* A2A Protocol Info */}\n <GlassCard treatment=\"glass\" glow className=\"p-6\">\n <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary\">\n <Globe size={18} />\n {t('botlit.a2aRegistry.overview.title', 'Agent-to-Agent Protocol')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.a2aRegistry.overview.description',\n 'A2A enables secure communication between agents across different systems'\n )}\n </p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Shield size={16} className=\"text-primary\" />\n {t('botlit.a2aRegistry.overview.trustTitle', 'Trust Levels')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.a2aRegistry.overview.trustDescription',\n 'Internal: your own agents; Verified: publisher verified by BotManor; Unverified: community agents.'\n )}\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Zap size={16} className=\"text-primary\" />\n {t('botlit.a2aRegistry.overview.capabilitiesTitle', 'Capabilities')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.a2aRegistry.overview.capabilitiesDescription',\n 'Skill discovery via agent cards, secure task delegation, and structured input/output modes.'\n )}\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <ExternalLink size={16} className=\"text-primary\" />\n {t('botlit.a2aRegistry.overview.integrationTitle', 'Integration')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.a2aRegistry.overview.integrationDescription',\n 'Discover via /.well-known/agent.json, automatic capability negotiation, and entitlement-based access control.'\n )}\n </li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|