@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":"useAgents.js","names":["LIST_AGENTS_DOCUMENT","GET_AGENT_DOCUMENT","CREATE_AGENT_DOCUMENT","UPDATE_AGENT_DOCUMENT","DELETE_AGENT_DOCUMENT","LIST_AGENT_VERSIONS_DOCUMENT","PUBLISH_AGENT_VERSION_DOCUMENT","ROLLBACK_AGENT_VERSION_DOCUMENT","UPDATE_AGENT_FIELDS","fieldsOf","getWorkspaceClient","client","buildAgentFilter","workspaceId","filter","useAgents","useGatewayClient","useBotlit","data","setData","useState","loading","setLoading","error","setError","variables","useMemo","refetch","useCallback","result","queryError","useEffect","useAgent","agentId","useCreateAgent","state","setState","createdAgent","mutationError","useUpdateAgent","updatedAgent","buildMutationInput","input","useDeleteAgent","deleted","useAgentVersions","versions","a","b","usePublishAgentVersion","published","changelog","useRollbackAgentVersion","rolledBack"],"sources":["../../../src/botlit/hooks/useAgents.ts"],"sourcesContent":["import { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport type { UpdateBotmanorAgentInput } from '../../generated/wspace-types';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport type { BaseFilter } from '../types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\n\nconst LIST_AGENTS_DOCUMENT = gql`\n query ListBotmanorAgents($filters: BotmanorAgentFilterInput, $pagination: PaginationInput) {\n listBotmanorAgents(filters: $filters, pagination: $pagination) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n executionCount\n lastExecutedAt\n specialization\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst GET_AGENT_DOCUMENT = gql`\n query GetBotmanorAgent($id: ID!) {\n getBotmanorAgent(id: $id) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n currentVersionId\n draftVersionId\n executionCount\n lastExecutedAt\n specialization\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst CREATE_AGENT_DOCUMENT = gql`\n mutation CreateBotmanorAgent($input: CreateBotmanorAgentInput!) {\n createBotmanorAgent(input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n tagIds\n createdAt\n updatedAt\n workspaceId\n }\n }\n`;\n\nconst UPDATE_AGENT_DOCUMENT = gql`\n mutation UpdateBotmanorAgent($id: ID!, $input: UpdateBotmanorAgentInput!) {\n updateBotmanorAgent(id: $id, input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n updatedById\n workspaceId\n }\n }\n`;\n\nconst DELETE_AGENT_DOCUMENT = gql`\n mutation DeleteBotmanorAgent($id: ID!) {\n deleteBotmanorAgent(id: $id)\n }\n`;\n\n// BOFF-4381: agent version history, publish, and rollback.\nconst LIST_AGENT_VERSIONS_DOCUMENT = gql`\n query ListAgentVersions($agentId: ID!, $pagination: PaginationInput) {\n listAgentVersions(agentId: $agentId, pagination: $pagination) {\n id\n agentId\n version\n status\n changelog\n config\n createdById\n createdAt\n publishedById\n publishedAt\n }\n }\n`;\n\nconst PUBLISH_AGENT_VERSION_DOCUMENT = gql`\n mutation PublishAgentVersion($agentId: ID!, $versionId: ID!, $changelog: String) {\n publishAgentVersion(agentId: $agentId, versionId: $versionId, changelog: $changelog) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\nconst ROLLBACK_AGENT_VERSION_DOCUMENT = gql`\n mutation RollbackAgentVersion($agentId: ID!, $targetVersionId: ID!) {\n rollbackAgentVersion(agentId: $agentId, targetVersionId: $targetVersionId) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\ntype WorkspaceClient = ApolloClient;\n\nexport interface AgentRecord {\n id: string;\n name: string;\n slug: string;\n description?: string | null;\n type: string;\n status: string;\n visibility?: string | null;\n capabilities?: string[] | null;\n llmModelId?: string | null;\n bucketId?: string | null;\n currentVersionId?: string | null;\n draftVersionId?: string | null;\n executionCount?: number | null;\n lastExecutedAt?: string | null;\n specialization?: string | null;\n systemPrompt?: string | null;\n temperature?: number | null;\n maxTokens?: number | null;\n maxConcurrentExecutions?: number | null;\n knowledgeBaseIds?: string[] | null;\n mcpConnectionIds?: string[] | null;\n workflowIds?: string[] | null;\n tagIds?: string[] | null;\n metadata?: Record<string, unknown> | null;\n createdAt?: string | null;\n updatedAt?: string | null;\n createdById?: string | null;\n updatedById?: string | null;\n workspaceId?: string | null;\n}\n\ninterface ListBotmanorAgentsData {\n listBotmanorAgents: AgentRecord[];\n}\n\ninterface GetAgentData {\n getBotmanorAgent: AgentRecord | null;\n}\n\ninterface CreateAgentData {\n createBotmanorAgent: AgentRecord;\n}\n\ninterface UpdateAgentData {\n updateBotmanorAgent: AgentRecord;\n}\n\ninterface DeleteAgentData {\n deleteBotmanorAgent: boolean;\n}\n\nexport interface AgentVersionRecord {\n id: string;\n agentId: string;\n version: string;\n status: 'DRAFT' | 'PUBLISHED' | 'HISTORICAL';\n changelog?: string | null;\n config?: Record<string, unknown> | null;\n createdById?: string | null;\n createdAt?: string | null;\n publishedById?: string | null;\n publishedAt?: string | null;\n}\n\ninterface ListAgentVersionsData {\n listAgentVersions: AgentVersionRecord[];\n}\n\ninterface PublishAgentVersionData {\n publishAgentVersion: AgentVersionRecord;\n}\n\ninterface RollbackAgentVersionData {\n rollbackAgentVersion: AgentVersionRecord;\n}\n\ninterface AgentMutationState<T> {\n data: T | undefined;\n loading: boolean;\n error: Error | undefined;\n}\n\ninterface CreateAgentInput {\n workspaceId: string;\n name: string;\n slug?: string;\n description?: string;\n type: string;\n systemPrompt: string;\n temperature?: number;\n maxTokens?: number;\n capabilities?: string[];\n llmModelId?: string;\n}\n\ninterface UpdateAgentInput {\n agentId: string;\n input: GraphQLInput<UpdateBotmanorAgentInput>;\n}\n\nconst UPDATE_AGENT_FIELDS = fieldsOf<UpdateBotmanorAgentInput>({\n bucketId: true,\n capabilities: true,\n context: true,\n description: true,\n knowledgeBaseIds: true,\n llmModelId: true,\n maxConcurrentExecutions: true,\n maxTokens: true,\n mcpConnectionIds: true,\n metadata: true,\n name: true,\n slug: true,\n specialization: true,\n status: true,\n systemPrompt: true,\n tagIds: true,\n tags: true,\n temperature: true,\n type: true,\n visibility: true,\n workflowIds: true,\n});\n\nfunction getWorkspaceClient(client: unknown): WorkspaceClient {\n return client as WorkspaceClient;\n}\n\nfunction buildAgentFilter(\n workspaceId: string | undefined,\n filter?: BaseFilter\n): Record<string, unknown> | undefined {\n if (!workspaceId && !filter) return undefined;\n\n return {\n workspaceId,\n search: filter?.search,\n status: filter?.status?.[0],\n visibility: filter?.visibility?.[0],\n bucketId: filter?.bucketId,\n };\n}\n\nexport const agentKeys = {\n all: ['agents'] as const,\n lists: () => [...agentKeys.all, 'list'] as const,\n list: (filter?: BaseFilter) => [...agentKeys.lists(), filter] as const,\n details: () => [...agentKeys.all, 'detail'] as const,\n detail: (id: string) => [...agentKeys.details(), id] as const,\n};\n\nexport function useAgents(filter?: BaseFilter) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<AgentRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const variables = useMemo(\n () => ({\n filters: buildAgentFilter(workspaceId, filter),\n pagination: { limit: 100, offset: 0 },\n }),\n [filter, workspaceId]\n );\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListBotmanorAgentsData>({\n query: LIST_AGENTS_DOCUMENT,\n variables,\n fetchPolicy: 'network-only',\n });\n setData(result.data?.listBotmanorAgents ?? []);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load agents'));\n } finally {\n setLoading(false);\n }\n }, [client, variables, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useAgent(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData(null);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<GetAgentData>({\n query: GET_AGENT_DOCUMENT,\n variables: { id: agentId },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.getBotmanorAgent ?? null);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load agent'));\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useCreateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const createAgent = useCallback(\n async (input: CreateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<CreateAgentData>({\n mutation: CREATE_AGENT_DOCUMENT,\n variables: { input },\n });\n\n const createdAgent = result.data?.createBotmanorAgent;\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n\n setState({ data: createdAgent, loading: false, error: undefined });\n return createdAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to create agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [createAgent, state] as const;\n}\n\nexport function useUpdateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const updateAgent = useCallback(\n async ({ agentId, input }: UpdateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<UpdateAgentData>({\n mutation: UPDATE_AGENT_DOCUMENT,\n variables: { id: agentId, input: buildMutationInput(input, UPDATE_AGENT_FIELDS) },\n });\n\n const updatedAgent = result.data?.updateBotmanorAgent;\n if (!updatedAgent) {\n throw new Error('Failed to update agent');\n }\n\n setState({ data: updatedAgent, loading: false, error: undefined });\n return updatedAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to update agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [updateAgent, state] as const;\n}\n\nexport function useDeleteAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<boolean>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const deleteAgent = useCallback(\n async (agentId: string) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<DeleteAgentData>({\n mutation: DELETE_AGENT_DOCUMENT,\n variables: { id: agentId },\n });\n\n const deleted = result.data?.deleteBotmanorAgent ?? false;\n setState({ data: deleted, loading: false, error: undefined });\n return deleted;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to delete agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [deleteAgent, state] as const;\n}\n\n// ============================================================================\n// VERSIONING (BOFF-4381) — version history, publish, rollback\n// ============================================================================\n\nexport function useAgentVersions(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentVersionRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListAgentVersionsData>({\n query: LIST_AGENT_VERSIONS_DOCUMENT,\n variables: { agentId, pagination: { limit: 50, offset: 0 } },\n fetchPolicy: 'network-only',\n });\n const versions = result.data?.listAgentVersions ?? [];\n // Newest first, regardless of what the server returned.\n setData(\n [...versions].sort((a, b) =>\n a.createdAt && b.createdAt ? b.createdAt.localeCompare(a.createdAt) : 0\n )\n );\n } catch (queryError) {\n setError(\n queryError instanceof Error ? queryError : new Error('Failed to load agent versions')\n );\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function usePublishAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const publishAgentVersion = useCallback(\n async ({\n agentId,\n versionId,\n changelog,\n }: {\n agentId: string;\n versionId: string;\n changelog?: string;\n }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<PublishAgentVersionData>({\n mutation: PUBLISH_AGENT_VERSION_DOCUMENT,\n variables: { agentId, versionId, changelog: changelog?.trim() || undefined },\n });\n\n const published = result.data?.publishAgentVersion;\n if (!published) {\n throw new Error('Failed to publish agent version');\n }\n\n setState({ data: published, loading: false, error: undefined });\n return published;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to publish agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [publishAgentVersion, state] as const;\n}\n\nexport function useRollbackAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const rollbackAgentVersion = useCallback(\n async ({ agentId, targetVersionId }: { agentId: string; targetVersionId: string }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<RollbackAgentVersionData>({\n mutation: ROLLBACK_AGENT_VERSION_DOCUMENT,\n variables: { agentId, targetVersionId },\n });\n\n const rolledBack = result.data?.rollbackAgentVersion;\n if (!rolledBack) {\n throw new Error('Failed to roll back agent version');\n }\n\n setState({ data: rolledBack, loading: false, error: undefined });\n return rolledBack;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to roll back agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [rollbackAgentVersion, state] as const;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAgents.js","names":["LIST_AGENTS_DOCUMENT","GET_AGENT_DOCUMENT","CREATE_AGENT_DOCUMENT","UPDATE_AGENT_DOCUMENT","DELETE_AGENT_DOCUMENT","LIST_AGENT_VERSIONS_DOCUMENT","PUBLISH_AGENT_VERSION_DOCUMENT","ROLLBACK_AGENT_VERSION_DOCUMENT","LIST_PAGE_SIZE","NO_AGENTS","UPDATE_AGENT_FIELDS","fieldsOf","getWorkspaceClient","client","buildAgentFilter","workspaceId","filter","useAgents","useBotlit","variables","useMemo","useWorkspacePaginatedQuery","data","rows","useAgent","useGatewayClient","setData","useState","loading","setLoading","error","setError","refetch","useCallback","agentId","result","queryError","useEffect","useCreateAgent","state","setState","createdAgent","mutationError","useUpdateAgent","updatedAgent","buildMutationInput","input","useDeleteAgent","deleted","useAgentVersions","versions","a","b","usePublishAgentVersion","published","changelog","useRollbackAgentVersion","rolledBack"],"sources":["../../../src/botlit/hooks/useAgents.ts"],"sourcesContent":["import { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport type { UpdateBotmanorAgentInput } from '../../generated/wspace-types';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport type { BaseFilter } from '../types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport { useWorkspacePaginatedQuery, type PaginatedQueryResult } from './internal/workspaceGateway';\n\nconst LIST_AGENTS_DOCUMENT = gql`\n query ListBotmanorAgents($filters: BotmanorAgentFilterInput, $pagination: PaginationInput) {\n listBotmanorAgents(filters: $filters, pagination: $pagination) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n executionCount\n lastExecutedAt\n specialization\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst GET_AGENT_DOCUMENT = gql`\n query GetBotmanorAgent($id: ID!) {\n getBotmanorAgent(id: $id) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n bucketId\n currentVersionId\n draftVersionId\n executionCount\n lastExecutedAt\n specialization\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst CREATE_AGENT_DOCUMENT = gql`\n mutation CreateBotmanorAgent($input: CreateBotmanorAgentInput!) {\n createBotmanorAgent(input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n tagIds\n createdAt\n updatedAt\n workspaceId\n }\n }\n`;\n\nconst UPDATE_AGENT_DOCUMENT = gql`\n mutation UpdateBotmanorAgent($id: ID!, $input: UpdateBotmanorAgentInput!) {\n updateBotmanorAgent(id: $id, input: $input) {\n id\n name\n slug\n description\n type\n status\n visibility\n capabilities\n llmModelId\n systemPrompt\n temperature\n maxTokens\n maxConcurrentExecutions\n knowledgeBaseIds\n mcpConnectionIds\n workflowIds\n tagIds\n metadata\n createdAt\n updatedAt\n updatedById\n workspaceId\n }\n }\n`;\n\nconst DELETE_AGENT_DOCUMENT = gql`\n mutation DeleteBotmanorAgent($id: ID!) {\n deleteBotmanorAgent(id: $id)\n }\n`;\n\n// BOFF-4381: agent version history, publish, and rollback.\nconst LIST_AGENT_VERSIONS_DOCUMENT = gql`\n query ListAgentVersions($agentId: ID!, $pagination: PaginationInput) {\n listAgentVersions(agentId: $agentId, pagination: $pagination) {\n id\n agentId\n version\n status\n changelog\n config\n createdById\n createdAt\n publishedById\n publishedAt\n }\n }\n`;\n\nconst PUBLISH_AGENT_VERSION_DOCUMENT = gql`\n mutation PublishAgentVersion($agentId: ID!, $versionId: ID!, $changelog: String) {\n publishAgentVersion(agentId: $agentId, versionId: $versionId, changelog: $changelog) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\nconst ROLLBACK_AGENT_VERSION_DOCUMENT = gql`\n mutation RollbackAgentVersion($agentId: ID!, $targetVersionId: ID!) {\n rollbackAgentVersion(agentId: $agentId, targetVersionId: $targetVersionId) {\n id\n agentId\n version\n status\n changelog\n publishedById\n publishedAt\n }\n }\n`;\n\ntype WorkspaceClient = ApolloClient;\n\nexport interface AgentRecord {\n id: string;\n name: string;\n slug: string;\n description?: string | null;\n type: string;\n status: string;\n visibility?: string | null;\n capabilities?: string[] | null;\n llmModelId?: string | null;\n bucketId?: string | null;\n currentVersionId?: string | null;\n draftVersionId?: string | null;\n executionCount?: number | null;\n lastExecutedAt?: string | null;\n specialization?: string | null;\n systemPrompt?: string | null;\n temperature?: number | null;\n maxTokens?: number | null;\n maxConcurrentExecutions?: number | null;\n knowledgeBaseIds?: string[] | null;\n mcpConnectionIds?: string[] | null;\n workflowIds?: string[] | null;\n tagIds?: string[] | null;\n metadata?: Record<string, unknown> | null;\n createdAt?: string | null;\n updatedAt?: string | null;\n createdById?: string | null;\n updatedById?: string | null;\n workspaceId?: string | null;\n}\n\ninterface ListBotmanorAgentsData {\n listBotmanorAgents: AgentRecord[];\n}\n\nconst LIST_PAGE_SIZE = 100;\nconst NO_AGENTS: AgentRecord[] = [];\n\ninterface GetAgentData {\n getBotmanorAgent: AgentRecord | null;\n}\n\ninterface CreateAgentData {\n createBotmanorAgent: AgentRecord;\n}\n\ninterface UpdateAgentData {\n updateBotmanorAgent: AgentRecord;\n}\n\ninterface DeleteAgentData {\n deleteBotmanorAgent: boolean;\n}\n\nexport interface AgentVersionRecord {\n id: string;\n agentId: string;\n version: string;\n status: 'DRAFT' | 'PUBLISHED' | 'HISTORICAL';\n changelog?: string | null;\n config?: Record<string, unknown> | null;\n createdById?: string | null;\n createdAt?: string | null;\n publishedById?: string | null;\n publishedAt?: string | null;\n}\n\ninterface ListAgentVersionsData {\n listAgentVersions: AgentVersionRecord[];\n}\n\ninterface PublishAgentVersionData {\n publishAgentVersion: AgentVersionRecord;\n}\n\ninterface RollbackAgentVersionData {\n rollbackAgentVersion: AgentVersionRecord;\n}\n\ninterface AgentMutationState<T> {\n data: T | undefined;\n loading: boolean;\n error: Error | undefined;\n}\n\ninterface CreateAgentInput {\n workspaceId: string;\n name: string;\n slug?: string;\n description?: string;\n type: string;\n systemPrompt: string;\n temperature?: number;\n maxTokens?: number;\n capabilities?: string[];\n llmModelId?: string;\n}\n\ninterface UpdateAgentInput {\n agentId: string;\n input: GraphQLInput<UpdateBotmanorAgentInput>;\n}\n\nconst UPDATE_AGENT_FIELDS = fieldsOf<UpdateBotmanorAgentInput>({\n bucketId: true,\n capabilities: true,\n context: true,\n description: true,\n knowledgeBaseIds: true,\n llmModelId: true,\n maxConcurrentExecutions: true,\n maxTokens: true,\n mcpConnectionIds: true,\n metadata: true,\n name: true,\n slug: true,\n specialization: true,\n status: true,\n systemPrompt: true,\n tagIds: true,\n tags: true,\n temperature: true,\n type: true,\n visibility: true,\n workflowIds: true,\n});\n\nfunction getWorkspaceClient(client: unknown): WorkspaceClient {\n return client as WorkspaceClient;\n}\n\nfunction buildAgentFilter(\n workspaceId: string | undefined,\n filter?: BaseFilter\n): Record<string, unknown> | undefined {\n if (!workspaceId && !filter) return undefined;\n\n return {\n workspaceId,\n search: filter?.search,\n status: filter?.status?.[0],\n visibility: filter?.visibility?.[0],\n bucketId: filter?.bucketId,\n };\n}\n\nexport const agentKeys = {\n all: ['agents'] as const,\n lists: () => [...agentKeys.all, 'list'] as const,\n list: (filter?: BaseFilter) => [...agentKeys.lists(), filter] as const,\n details: () => [...agentKeys.all, 'detail'] as const,\n detail: (id: string) => [...agentKeys.details(), id] as const,\n};\n\nexport function useAgents(filter?: BaseFilter): PaginatedQueryResult<AgentRecord[]> {\n const { workspaceId } = useBotlit();\n\n const variables = useMemo(\n () => ({ filters: buildAgentFilter(workspaceId, filter) }),\n [filter, workspaceId]\n );\n\n return useWorkspacePaginatedQuery<ListBotmanorAgentsData, AgentRecord, AgentRecord[]>({\n document: LIST_AGENTS_DOCUMENT,\n variables,\n pageSize: LIST_PAGE_SIZE,\n extractRows: (data) => data?.listBotmanorAgents ?? [],\n select: (rows) => rows,\n fallback: NO_AGENTS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load agents',\n });\n}\n\nexport function useAgent(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData(null);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<GetAgentData>({\n query: GET_AGENT_DOCUMENT,\n variables: { id: agentId },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.getBotmanorAgent ?? null);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load agent'));\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useCreateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const createAgent = useCallback(\n async (input: CreateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<CreateAgentData>({\n mutation: CREATE_AGENT_DOCUMENT,\n variables: { input },\n });\n\n const createdAgent = result.data?.createBotmanorAgent;\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n\n setState({ data: createdAgent, loading: false, error: undefined });\n return createdAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to create agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [createAgent, state] as const;\n}\n\nexport function useUpdateAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const updateAgent = useCallback(\n async ({ agentId, input }: UpdateAgentInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<UpdateAgentData>({\n mutation: UPDATE_AGENT_DOCUMENT,\n variables: { id: agentId, input: buildMutationInput(input, UPDATE_AGENT_FIELDS) },\n });\n\n const updatedAgent = result.data?.updateBotmanorAgent;\n if (!updatedAgent) {\n throw new Error('Failed to update agent');\n }\n\n setState({ data: updatedAgent, loading: false, error: undefined });\n return updatedAgent;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to update agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [updateAgent, state] as const;\n}\n\nexport function useDeleteAgent() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<boolean>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const deleteAgent = useCallback(\n async (agentId: string) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<DeleteAgentData>({\n mutation: DELETE_AGENT_DOCUMENT,\n variables: { id: agentId },\n });\n\n const deleted = result.data?.deleteBotmanorAgent ?? false;\n setState({ data: deleted, loading: false, error: undefined });\n return deleted;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to delete agent');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [deleteAgent, state] as const;\n}\n\n// ============================================================================\n// VERSIONING (BOFF-4381) — version history, publish, rollback\n// ============================================================================\n\nexport function useAgentVersions(agentId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<AgentVersionRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!agentId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListAgentVersionsData>({\n query: LIST_AGENT_VERSIONS_DOCUMENT,\n variables: { agentId, pagination: { limit: 50, offset: 0 } },\n fetchPolicy: 'network-only',\n });\n const versions = result.data?.listAgentVersions ?? [];\n // Newest first, regardless of what the server returned.\n setData(\n [...versions].sort((a, b) =>\n a.createdAt && b.createdAt ? b.createdAt.localeCompare(a.createdAt) : 0\n )\n );\n } catch (queryError) {\n setError(\n queryError instanceof Error ? queryError : new Error('Failed to load agent versions')\n );\n } finally {\n setLoading(false);\n }\n }, [agentId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function usePublishAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const publishAgentVersion = useCallback(\n async ({\n agentId,\n versionId,\n changelog,\n }: {\n agentId: string;\n versionId: string;\n changelog?: string;\n }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<PublishAgentVersionData>({\n mutation: PUBLISH_AGENT_VERSION_DOCUMENT,\n variables: { agentId, versionId, changelog: changelog?.trim() || undefined },\n });\n\n const published = result.data?.publishAgentVersion;\n if (!published) {\n throw new Error('Failed to publish agent version');\n }\n\n setState({ data: published, loading: false, error: undefined });\n return published;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to publish agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [publishAgentVersion, state] as const;\n}\n\nexport function useRollbackAgentVersion() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<AgentMutationState<AgentVersionRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const rollbackAgentVersion = useCallback(\n async ({ agentId, targetVersionId }: { agentId: string; targetVersionId: string }) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<RollbackAgentVersionData>({\n mutation: ROLLBACK_AGENT_VERSION_DOCUMENT,\n variables: { agentId, targetVersionId },\n });\n\n const rolledBack = result.data?.rollbackAgentVersion;\n if (!rolledBack) {\n throw new Error('Failed to roll back agent version');\n }\n\n setState({ data: rolledBack, loading: false, error: undefined });\n return rolledBack;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error\n ? mutationError\n : new Error('Failed to roll back agent version');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [rollbackAgentVersion, state] as const;\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UpdateBotAppInput } from '../../generated/wspace-types';
|
|
2
2
|
import { BaseFilter } from '../types';
|
|
3
3
|
import { GraphQLInput } from './internal/mutationInput';
|
|
4
|
+
import { PaginatedQueryResult } from './internal/workspaceGateway';
|
|
4
5
|
export interface BotAppRecord {
|
|
5
6
|
id: string;
|
|
6
7
|
name: string;
|
|
@@ -50,12 +51,7 @@ export declare const botKeys: {
|
|
|
50
51
|
details: () => readonly ["bots", "detail"];
|
|
51
52
|
detail: (id: string) => readonly ["bots", "detail", string];
|
|
52
53
|
};
|
|
53
|
-
export declare function useBots(filter?: BaseFilter):
|
|
54
|
-
data: BotAppRecord[];
|
|
55
|
-
loading: boolean;
|
|
56
|
-
error: Error | undefined;
|
|
57
|
-
refetch: () => Promise<void>;
|
|
58
|
-
};
|
|
54
|
+
export declare function useBots(filter?: BaseFilter): PaginatedQueryResult<BotAppRecord[]>;
|
|
59
55
|
export declare function useBot(botId: string | undefined): {
|
|
60
56
|
data: BotAppRecord | null;
|
|
61
57
|
loading: boolean;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { useBotlit as e } from "../providers/BotlitProvider.js";
|
|
2
2
|
import { buildMutationInput as t, fieldsOf as n } from "./internal/mutationInput.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useWorkspacePaginatedQuery as r } from "./internal/workspaceGateway.js";
|
|
4
|
+
import { useCallback as i, useEffect as a, useMemo as o, useState as s } from "react";
|
|
5
|
+
import { gql as c } from "@apollo/client";
|
|
6
|
+
import { useGatewayClient as l } from "@burdenoff/fe-libs/shared/graphql";
|
|
6
7
|
// src/botlit/hooks/useBots.ts
|
|
7
|
-
var
|
|
8
|
+
var u = c`
|
|
8
9
|
query ListBotApps($filters: BotAppFilterInput, $pagination: PaginationInput) {
|
|
9
10
|
listBotApps(filters: $filters, pagination: $pagination) {
|
|
10
11
|
id
|
|
@@ -30,7 +31,7 @@ var l = s`
|
|
|
30
31
|
workspaceId
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
`,
|
|
34
|
+
`, d = c`
|
|
34
35
|
query GetBotApp($id: ID!) {
|
|
35
36
|
getBotApp(id: $id) {
|
|
36
37
|
id
|
|
@@ -56,7 +57,7 @@ var l = s`
|
|
|
56
57
|
workspaceId
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
|
-
`,
|
|
60
|
+
`, f = c`
|
|
60
61
|
mutation CreateBotApp($input: CreateBotAppInput!) {
|
|
61
62
|
createBotApp(input: $input) {
|
|
62
63
|
id
|
|
@@ -76,7 +77,7 @@ var l = s`
|
|
|
76
77
|
workspaceId
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
|
-
`,
|
|
80
|
+
`, p = c`
|
|
80
81
|
mutation UpdateBotApp($id: ID!, $input: UpdateBotAppInput!) {
|
|
81
82
|
updateBotApp(id: $id, input: $input) {
|
|
82
83
|
id
|
|
@@ -98,11 +99,11 @@ var l = s`
|
|
|
98
99
|
workspaceId
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
|
-
`,
|
|
102
|
+
`, m = c`
|
|
102
103
|
mutation DeleteBotApp($id: ID!) {
|
|
103
104
|
deleteBotApp(id: $id)
|
|
104
105
|
}
|
|
105
|
-
`,
|
|
106
|
+
`, h = 100, g = [], _ = n({
|
|
106
107
|
bucketId: !0,
|
|
107
108
|
context: !0,
|
|
108
109
|
defaultAgentId: !0,
|
|
@@ -121,10 +122,10 @@ var l = s`
|
|
|
121
122
|
welcomeMessage: !0,
|
|
122
123
|
workflowId: !0
|
|
123
124
|
});
|
|
124
|
-
function
|
|
125
|
+
function v(e) {
|
|
125
126
|
return e;
|
|
126
127
|
}
|
|
127
|
-
function
|
|
128
|
+
function y(e, t) {
|
|
128
129
|
if (e || t) return {
|
|
129
130
|
workspaceId: e,
|
|
130
131
|
search: t?.search,
|
|
@@ -133,79 +134,54 @@ function g(e, t) {
|
|
|
133
134
|
bucketId: t?.bucketId
|
|
134
135
|
};
|
|
135
136
|
}
|
|
136
|
-
function
|
|
137
|
-
let
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
let e = await n.query({
|
|
149
|
-
query: l,
|
|
150
|
-
variables: v,
|
|
151
|
-
fetchPolicy: "network-only"
|
|
152
|
-
});
|
|
153
|
-
d(e.data?.listBotApps ?? []);
|
|
154
|
-
} catch (e) {
|
|
155
|
-
_(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load bots"));
|
|
156
|
-
} finally {
|
|
157
|
-
p(!1);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}, [
|
|
161
|
-
n,
|
|
162
|
-
v,
|
|
163
|
-
s
|
|
164
|
-
]);
|
|
165
|
-
return i(() => {
|
|
166
|
-
y();
|
|
167
|
-
}, [y]), {
|
|
168
|
-
data: u,
|
|
169
|
-
loading: f,
|
|
170
|
-
error: m,
|
|
171
|
-
refetch: y
|
|
172
|
-
};
|
|
137
|
+
function b(t) {
|
|
138
|
+
let { workspaceId: n } = e(), i = o(() => ({ filters: y(n, t) }), [t, n]);
|
|
139
|
+
return r({
|
|
140
|
+
document: u,
|
|
141
|
+
variables: i,
|
|
142
|
+
pageSize: h,
|
|
143
|
+
extractRows: (e) => e?.listBotApps ?? [],
|
|
144
|
+
select: (e) => e,
|
|
145
|
+
fallback: g,
|
|
146
|
+
enabled: !!n,
|
|
147
|
+
errorMessage: "Failed to load bots"
|
|
148
|
+
});
|
|
173
149
|
}
|
|
174
|
-
function
|
|
175
|
-
let t =
|
|
176
|
-
if (!e)
|
|
150
|
+
function x(e) {
|
|
151
|
+
let t = v(l("workspace")), [n, r] = s(null), [o, c] = s(!1), [u, f] = s(), p = i(async () => {
|
|
152
|
+
if (!e) r(null);
|
|
177
153
|
else {
|
|
178
|
-
|
|
154
|
+
c(!0), f(void 0);
|
|
179
155
|
try {
|
|
180
156
|
let n = await t.query({
|
|
181
|
-
query:
|
|
157
|
+
query: d,
|
|
182
158
|
variables: { id: e },
|
|
183
159
|
fetchPolicy: "network-only"
|
|
184
160
|
});
|
|
185
|
-
|
|
161
|
+
r(n.data?.getBotApp ?? null);
|
|
186
162
|
} catch (e) {
|
|
187
163
|
f(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load bot"));
|
|
188
164
|
} finally {
|
|
189
|
-
|
|
165
|
+
c(!1);
|
|
190
166
|
}
|
|
191
167
|
}
|
|
192
168
|
}, [e, t]);
|
|
193
|
-
return
|
|
169
|
+
return a(() => {
|
|
194
170
|
p();
|
|
195
171
|
}, [p]), {
|
|
196
172
|
data: n,
|
|
197
|
-
loading:
|
|
198
|
-
error:
|
|
173
|
+
loading: o,
|
|
174
|
+
error: u,
|
|
199
175
|
refetch: p
|
|
200
176
|
};
|
|
201
177
|
}
|
|
202
|
-
function
|
|
203
|
-
let e =
|
|
178
|
+
function S() {
|
|
179
|
+
let e = v(l("workspace")), [t, n] = s({
|
|
204
180
|
data: void 0,
|
|
205
181
|
loading: !1,
|
|
206
182
|
error: void 0
|
|
207
183
|
});
|
|
208
|
-
return [
|
|
184
|
+
return [i(async (t) => {
|
|
209
185
|
n({
|
|
210
186
|
data: void 0,
|
|
211
187
|
loading: !0,
|
|
@@ -213,7 +189,7 @@ function y() {
|
|
|
213
189
|
});
|
|
214
190
|
try {
|
|
215
191
|
let r = (await e.mutate({
|
|
216
|
-
mutation:
|
|
192
|
+
mutation: f,
|
|
217
193
|
variables: { input: t }
|
|
218
194
|
})).data?.createBotApp;
|
|
219
195
|
if (!r) throw Error("Failed to create bot");
|
|
@@ -232,35 +208,35 @@ function y() {
|
|
|
232
208
|
}
|
|
233
209
|
}, [e]), t];
|
|
234
210
|
}
|
|
235
|
-
function
|
|
236
|
-
let e =
|
|
211
|
+
function C() {
|
|
212
|
+
let e = v(l("workspace")), [n, r] = s({
|
|
237
213
|
data: void 0,
|
|
238
214
|
loading: !1,
|
|
239
215
|
error: void 0
|
|
240
216
|
});
|
|
241
|
-
return [
|
|
242
|
-
|
|
217
|
+
return [i(async ({ botId: n, input: i }) => {
|
|
218
|
+
r({
|
|
243
219
|
data: void 0,
|
|
244
220
|
loading: !0,
|
|
245
221
|
error: void 0
|
|
246
222
|
});
|
|
247
223
|
try {
|
|
248
224
|
let a = (await e.mutate({
|
|
249
|
-
mutation:
|
|
225
|
+
mutation: p,
|
|
250
226
|
variables: {
|
|
251
227
|
id: n,
|
|
252
|
-
input: t(
|
|
228
|
+
input: t(i, _)
|
|
253
229
|
}
|
|
254
230
|
})).data?.updateBotApp;
|
|
255
231
|
if (!a) throw Error("Failed to update bot");
|
|
256
|
-
return
|
|
232
|
+
return r({
|
|
257
233
|
data: a,
|
|
258
234
|
loading: !1,
|
|
259
235
|
error: void 0
|
|
260
236
|
}), a;
|
|
261
237
|
} catch (e) {
|
|
262
238
|
let t = e instanceof Error ? e : /* @__PURE__ */ Error("Failed to update bot");
|
|
263
|
-
throw
|
|
239
|
+
throw r({
|
|
264
240
|
data: void 0,
|
|
265
241
|
loading: !1,
|
|
266
242
|
error: t
|
|
@@ -268,13 +244,13 @@ function b() {
|
|
|
268
244
|
}
|
|
269
245
|
}, [e]), n];
|
|
270
246
|
}
|
|
271
|
-
function
|
|
272
|
-
let e =
|
|
247
|
+
function w() {
|
|
248
|
+
let e = v(l("workspace")), [t, n] = s({
|
|
273
249
|
data: void 0,
|
|
274
250
|
loading: !1,
|
|
275
251
|
error: void 0
|
|
276
252
|
});
|
|
277
|
-
return [
|
|
253
|
+
return [i(async (t) => {
|
|
278
254
|
n({
|
|
279
255
|
data: void 0,
|
|
280
256
|
loading: !0,
|
|
@@ -282,7 +258,7 @@ function x() {
|
|
|
282
258
|
});
|
|
283
259
|
try {
|
|
284
260
|
let r = (await e.mutate({
|
|
285
|
-
mutation:
|
|
261
|
+
mutation: m,
|
|
286
262
|
variables: { id: t }
|
|
287
263
|
})).data?.deleteBotApp ?? !1;
|
|
288
264
|
return n({
|
|
@@ -300,6 +276,6 @@ function x() {
|
|
|
300
276
|
}
|
|
301
277
|
}, [e]), t];
|
|
302
278
|
}
|
|
303
|
-
export {
|
|
279
|
+
export { x as useBot, b as useBots, S as useCreateBot, w as useDeleteBot, C as useUpdateBot };
|
|
304
280
|
|
|
305
281
|
//# sourceMappingURL=useBots.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBots.js","names":["LIST_BOT_APPS_DOCUMENT","GET_BOT_APP_DOCUMENT","CREATE_BOT_APP_DOCUMENT","UPDATE_BOT_APP_DOCUMENT","DELETE_BOT_APP_DOCUMENT","UPDATE_BOT_APP_FIELDS","fieldsOf","getWorkspaceClient","client","buildBotFilter","workspaceId","filter","useBots","useGatewayClient","useBotlit","data","setData","useState","loading","setLoading","error","setError","variables","useMemo","refetch","useCallback","result","queryError","useEffect","useBot","botId","useCreateBot","state","setState","createdBot","mutationError","useUpdateBot","updatedBot","buildMutationInput","input","useDeleteBot","deleted"],"sources":["../../../src/botlit/hooks/useBots.ts"],"sourcesContent":["import { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport type { UpdateBotAppInput } from '../../generated/wspace-types';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport type { BaseFilter } from '../types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\n\nconst LIST_BOT_APPS_DOCUMENT = gql`\n query ListBotApps($filters: BotAppFilterInput, $pagination: PaginationInput) {\n listBotApps(filters: $filters, pagination: $pagination) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n welcomeMessage\n fallbackMessage\n workflowId\n executionCount\n lastExecutedAt\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst GET_BOT_APP_DOCUMENT = gql`\n query GetBotApp($id: ID!) {\n getBotApp(id: $id) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n welcomeMessage\n fallbackMessage\n workflowId\n executionCount\n lastExecutedAt\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst CREATE_BOT_APP_DOCUMENT = gql`\n mutation CreateBotApp($input: CreateBotAppInput!) {\n createBotApp(input: $input) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n workflowId\n tagIds\n createdAt\n updatedAt\n workspaceId\n }\n }\n`;\n\nconst UPDATE_BOT_APP_DOCUMENT = gql`\n mutation UpdateBotApp($id: ID!, $input: UpdateBotAppInput!) {\n updateBotApp(id: $id, input: $input) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n welcomeMessage\n fallbackMessage\n workflowId\n tagIds\n updatedAt\n updatedById\n workspaceId\n }\n }\n`;\n\nconst DELETE_BOT_APP_DOCUMENT = gql`\n mutation DeleteBotApp($id: ID!) {\n deleteBotApp(id: $id)\n }\n`;\n\ntype WorkspaceClient = ApolloClient;\n\nexport interface BotAppRecord {\n id: string;\n name: string;\n slug: string;\n description?: string | null;\n icon?: string | null;\n type: string;\n status: string;\n visibility?: string | null;\n routingStrategy?: string | null;\n defaultAgentId?: string | null;\n welcomeMessage?: string | null;\n fallbackMessage?: string | null;\n /** Bound FluidGrids workflow definition id — the bot's designed behaviour. */\n workflowId?: string | null;\n executionCount?: number | null;\n lastExecutedAt?: string | null;\n tagIds?: string[] | null;\n createdAt?: string | null;\n updatedAt?: string | null;\n createdById?: string | null;\n updatedById?: string | null;\n workspaceId?: string | null;\n}\n\ninterface ListBotAppsData {\n listBotApps: BotAppRecord[];\n}\n\ninterface GetBotAppData {\n getBotApp: BotAppRecord | null;\n}\n\ninterface CreateBotAppData {\n createBotApp: BotAppRecord;\n}\n\ninterface UpdateBotAppData {\n updateBotApp: BotAppRecord;\n}\n\ninterface DeleteBotAppData {\n deleteBotApp: boolean;\n}\n\ninterface BotMutationState<T> {\n data: T | undefined;\n loading: boolean;\n error: Error | undefined;\n}\n\ninterface CreateBotInput {\n workspaceId: string;\n name: string;\n slug?: string;\n type: string;\n routingStrategy?: string;\n description?: string;\n icon?: string;\n}\n\ninterface UpdateBotInput {\n botId: string;\n input: GraphQLInput<UpdateBotAppInput>;\n}\n\nconst UPDATE_BOT_APP_FIELDS = fieldsOf<UpdateBotAppInput>({\n bucketId: true,\n context: true,\n defaultAgentId: true,\n description: true,\n fallbackMessage: true,\n icon: true,\n metadata: true,\n name: true,\n routingStrategy: true,\n slug: true,\n status: true,\n tagIds: true,\n tags: true,\n type: true,\n visibility: true,\n welcomeMessage: true,\n workflowId: true,\n});\n\nfunction getWorkspaceClient(client: unknown): WorkspaceClient {\n return client as WorkspaceClient;\n}\n\nfunction buildBotFilter(\n workspaceId: string | undefined,\n filter?: BaseFilter\n): Record<string, unknown> | undefined {\n if (!workspaceId && !filter) return undefined;\n\n return {\n workspaceId,\n search: filter?.search,\n status: filter?.status?.[0],\n visibility: filter?.visibility?.[0],\n bucketId: filter?.bucketId,\n };\n}\n\nexport const botKeys = {\n all: ['bots'] as const,\n lists: () => [...botKeys.all, 'list'] as const,\n list: (filter?: BaseFilter) => [...botKeys.lists(), filter] as const,\n details: () => [...botKeys.all, 'detail'] as const,\n detail: (id: string) => [...botKeys.details(), id] as const,\n};\n\nexport function useBots(filter?: BaseFilter) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const { workspaceId } = useBotlit();\n const [data, setData] = useState<BotAppRecord[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const variables = useMemo(\n () => ({ filters: buildBotFilter(workspaceId, filter), pagination: { limit: 100, offset: 0 } }),\n [filter, workspaceId]\n );\n\n const refetch = useCallback(async () => {\n if (!workspaceId) {\n setData([]);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<ListBotAppsData>({\n query: LIST_BOT_APPS_DOCUMENT,\n variables,\n fetchPolicy: 'network-only',\n });\n setData(result.data?.listBotApps ?? []);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load bots'));\n } finally {\n setLoading(false);\n }\n }, [client, variables, workspaceId]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useBot(botId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<BotAppRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!botId) {\n setData(null);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<GetBotAppData>({\n query: GET_BOT_APP_DOCUMENT,\n variables: { id: botId },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.getBotApp ?? null);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load bot'));\n } finally {\n setLoading(false);\n }\n }, [botId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useCreateBot() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<BotMutationState<BotAppRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const createBot = useCallback(\n async (input: CreateBotInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<CreateBotAppData>({\n mutation: CREATE_BOT_APP_DOCUMENT,\n variables: { input },\n });\n\n const createdBot = result.data?.createBotApp;\n if (!createdBot) {\n throw new Error('Failed to create bot');\n }\n\n setState({ data: createdBot, loading: false, error: undefined });\n return createdBot;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to create bot');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [createBot, state] as const;\n}\n\nexport function useUpdateBot() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<BotMutationState<BotAppRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const updateBot = useCallback(\n async ({ botId, input }: UpdateBotInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<UpdateBotAppData>({\n mutation: UPDATE_BOT_APP_DOCUMENT,\n variables: { id: botId, input: buildMutationInput(input, UPDATE_BOT_APP_FIELDS) },\n });\n\n const updatedBot = result.data?.updateBotApp;\n if (!updatedBot) {\n throw new Error('Failed to update bot');\n }\n\n setState({ data: updatedBot, loading: false, error: undefined });\n return updatedBot;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to update bot');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [updateBot, state] as const;\n}\n\nexport function useDeleteBot() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<BotMutationState<boolean>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const deleteBot = useCallback(\n async (botId: string) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<DeleteBotAppData>({\n mutation: DELETE_BOT_APP_DOCUMENT,\n variables: { id: botId },\n });\n\n const deleted = result.data?.deleteBotApp ?? false;\n setState({ data: deleted, loading: false, error: undefined });\n return deleted;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to delete bot');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [deleteBot, state] as const;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useBots.js","names":["LIST_BOT_APPS_DOCUMENT","GET_BOT_APP_DOCUMENT","CREATE_BOT_APP_DOCUMENT","UPDATE_BOT_APP_DOCUMENT","DELETE_BOT_APP_DOCUMENT","LIST_PAGE_SIZE","NO_BOTS","UPDATE_BOT_APP_FIELDS","fieldsOf","getWorkspaceClient","client","buildBotFilter","workspaceId","filter","useBots","useBotlit","variables","useMemo","useWorkspacePaginatedQuery","data","rows","useBot","useGatewayClient","setData","useState","loading","setLoading","error","setError","refetch","useCallback","botId","result","queryError","useEffect","useCreateBot","state","setState","createdBot","mutationError","useUpdateBot","updatedBot","buildMutationInput","input","useDeleteBot","deleted"],"sources":["../../../src/botlit/hooks/useBots.ts"],"sourcesContent":["import { gql, type ApolloClient } from '@apollo/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\n\nimport type { UpdateBotAppInput } from '../../generated/wspace-types';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport type { BaseFilter } from '../types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport { useWorkspacePaginatedQuery, type PaginatedQueryResult } from './internal/workspaceGateway';\n\nconst LIST_BOT_APPS_DOCUMENT = gql`\n query ListBotApps($filters: BotAppFilterInput, $pagination: PaginationInput) {\n listBotApps(filters: $filters, pagination: $pagination) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n welcomeMessage\n fallbackMessage\n workflowId\n executionCount\n lastExecutedAt\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst GET_BOT_APP_DOCUMENT = gql`\n query GetBotApp($id: ID!) {\n getBotApp(id: $id) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n welcomeMessage\n fallbackMessage\n workflowId\n executionCount\n lastExecutedAt\n tagIds\n createdAt\n updatedAt\n createdById\n updatedById\n workspaceId\n }\n }\n`;\n\nconst CREATE_BOT_APP_DOCUMENT = gql`\n mutation CreateBotApp($input: CreateBotAppInput!) {\n createBotApp(input: $input) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n workflowId\n tagIds\n createdAt\n updatedAt\n workspaceId\n }\n }\n`;\n\nconst UPDATE_BOT_APP_DOCUMENT = gql`\n mutation UpdateBotApp($id: ID!, $input: UpdateBotAppInput!) {\n updateBotApp(id: $id, input: $input) {\n id\n name\n slug\n description\n icon\n type\n status\n visibility\n routingStrategy\n defaultAgentId\n welcomeMessage\n fallbackMessage\n workflowId\n tagIds\n updatedAt\n updatedById\n workspaceId\n }\n }\n`;\n\nconst DELETE_BOT_APP_DOCUMENT = gql`\n mutation DeleteBotApp($id: ID!) {\n deleteBotApp(id: $id)\n }\n`;\n\ntype WorkspaceClient = ApolloClient;\n\nexport interface BotAppRecord {\n id: string;\n name: string;\n slug: string;\n description?: string | null;\n icon?: string | null;\n type: string;\n status: string;\n visibility?: string | null;\n routingStrategy?: string | null;\n defaultAgentId?: string | null;\n welcomeMessage?: string | null;\n fallbackMessage?: string | null;\n /** Bound FluidGrids workflow definition id — the bot's designed behaviour. */\n workflowId?: string | null;\n executionCount?: number | null;\n lastExecutedAt?: string | null;\n tagIds?: string[] | null;\n createdAt?: string | null;\n updatedAt?: string | null;\n createdById?: string | null;\n updatedById?: string | null;\n workspaceId?: string | null;\n}\n\ninterface ListBotAppsData {\n listBotApps: BotAppRecord[];\n}\n\nconst LIST_PAGE_SIZE = 100;\nconst NO_BOTS: BotAppRecord[] = [];\n\ninterface GetBotAppData {\n getBotApp: BotAppRecord | null;\n}\n\ninterface CreateBotAppData {\n createBotApp: BotAppRecord;\n}\n\ninterface UpdateBotAppData {\n updateBotApp: BotAppRecord;\n}\n\ninterface DeleteBotAppData {\n deleteBotApp: boolean;\n}\n\ninterface BotMutationState<T> {\n data: T | undefined;\n loading: boolean;\n error: Error | undefined;\n}\n\ninterface CreateBotInput {\n workspaceId: string;\n name: string;\n slug?: string;\n type: string;\n routingStrategy?: string;\n description?: string;\n icon?: string;\n}\n\ninterface UpdateBotInput {\n botId: string;\n input: GraphQLInput<UpdateBotAppInput>;\n}\n\nconst UPDATE_BOT_APP_FIELDS = fieldsOf<UpdateBotAppInput>({\n bucketId: true,\n context: true,\n defaultAgentId: true,\n description: true,\n fallbackMessage: true,\n icon: true,\n metadata: true,\n name: true,\n routingStrategy: true,\n slug: true,\n status: true,\n tagIds: true,\n tags: true,\n type: true,\n visibility: true,\n welcomeMessage: true,\n workflowId: true,\n});\n\nfunction getWorkspaceClient(client: unknown): WorkspaceClient {\n return client as WorkspaceClient;\n}\n\nfunction buildBotFilter(\n workspaceId: string | undefined,\n filter?: BaseFilter\n): Record<string, unknown> | undefined {\n if (!workspaceId && !filter) return undefined;\n\n return {\n workspaceId,\n search: filter?.search,\n status: filter?.status?.[0],\n visibility: filter?.visibility?.[0],\n bucketId: filter?.bucketId,\n };\n}\n\nexport const botKeys = {\n all: ['bots'] as const,\n lists: () => [...botKeys.all, 'list'] as const,\n list: (filter?: BaseFilter) => [...botKeys.lists(), filter] as const,\n details: () => [...botKeys.all, 'detail'] as const,\n detail: (id: string) => [...botKeys.details(), id] as const,\n};\n\nexport function useBots(filter?: BaseFilter): PaginatedQueryResult<BotAppRecord[]> {\n const { workspaceId } = useBotlit();\n\n const variables = useMemo(\n () => ({ filters: buildBotFilter(workspaceId, filter) }),\n [filter, workspaceId]\n );\n\n return useWorkspacePaginatedQuery<ListBotAppsData, BotAppRecord, BotAppRecord[]>({\n document: LIST_BOT_APPS_DOCUMENT,\n variables,\n pageSize: LIST_PAGE_SIZE,\n extractRows: (data) => data?.listBotApps ?? [],\n select: (rows) => rows,\n fallback: NO_BOTS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load bots',\n });\n}\n\nexport function useBot(botId: string | undefined) {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [data, setData] = useState<BotAppRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const refetch = useCallback(async () => {\n if (!botId) {\n setData(null);\n return;\n }\n\n setLoading(true);\n setError(undefined);\n try {\n const result = await client.query<GetBotAppData>({\n query: GET_BOT_APP_DOCUMENT,\n variables: { id: botId },\n fetchPolicy: 'network-only',\n });\n setData(result.data?.getBotApp ?? null);\n } catch (queryError) {\n setError(queryError instanceof Error ? queryError : new Error('Failed to load bot'));\n } finally {\n setLoading(false);\n }\n }, [botId, client]);\n\n useEffect(() => {\n void refetch();\n }, [refetch]);\n\n return { data, loading, error, refetch };\n}\n\nexport function useCreateBot() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<BotMutationState<BotAppRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const createBot = useCallback(\n async (input: CreateBotInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<CreateBotAppData>({\n mutation: CREATE_BOT_APP_DOCUMENT,\n variables: { input },\n });\n\n const createdBot = result.data?.createBotApp;\n if (!createdBot) {\n throw new Error('Failed to create bot');\n }\n\n setState({ data: createdBot, loading: false, error: undefined });\n return createdBot;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to create bot');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [createBot, state] as const;\n}\n\nexport function useUpdateBot() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<BotMutationState<BotAppRecord>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const updateBot = useCallback(\n async ({ botId, input }: UpdateBotInput) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<UpdateBotAppData>({\n mutation: UPDATE_BOT_APP_DOCUMENT,\n variables: { id: botId, input: buildMutationInput(input, UPDATE_BOT_APP_FIELDS) },\n });\n\n const updatedBot = result.data?.updateBotApp;\n if (!updatedBot) {\n throw new Error('Failed to update bot');\n }\n\n setState({ data: updatedBot, loading: false, error: undefined });\n return updatedBot;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to update bot');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [updateBot, state] as const;\n}\n\nexport function useDeleteBot() {\n const client = getWorkspaceClient(useGatewayClient('workspace'));\n const [state, setState] = useState<BotMutationState<boolean>>({\n data: undefined,\n loading: false,\n error: undefined,\n });\n\n const deleteBot = useCallback(\n async (botId: string) => {\n setState({ data: undefined, loading: true, error: undefined });\n try {\n const result = await client.mutate<DeleteBotAppData>({\n mutation: DELETE_BOT_APP_DOCUMENT,\n variables: { id: botId },\n });\n\n const deleted = result.data?.deleteBotApp ?? false;\n setState({ data: deleted, loading: false, error: undefined });\n return deleted;\n } catch (mutationError) {\n const error =\n mutationError instanceof Error ? mutationError : new Error('Failed to delete bot');\n setState({ data: undefined, loading: false, error });\n throw error;\n }\n },\n [client]\n );\n\n return [deleteBot, state] as const;\n}\n"],"mappings":"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"}
|
|
@@ -51,6 +51,11 @@ export declare function useBuckets(filter?: BaseFilter): QueryResult<BucketRecor
|
|
|
51
51
|
* parent link on every bucket, so no separate tree operation is needed.
|
|
52
52
|
*/
|
|
53
53
|
export declare function useBucketTree(): QueryResult<BucketTreeNode[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Direct children of one bucket, resolved via the `parentBucketId` filter on
|
|
56
|
+
* `listBuckets`. Powers the sub-bucket section of the bucket detail page.
|
|
57
|
+
*/
|
|
58
|
+
export declare function useChildBuckets(parentBucketId: string | undefined): QueryResult<BucketRecord[]>;
|
|
54
59
|
export declare function useBucket(bucketId: string | undefined): QueryResult<BucketRecord | null>;
|
|
55
60
|
export declare function useCreateBucket(): readonly [(input: CreateBucketVariables) => Promise<BucketRecord>, import('./internal/workspaceGateway').MutationState<BucketRecord>];
|
|
56
61
|
export declare function useUpdateBucket(): readonly [(input: UpdateBucketVariables) => Promise<BucketRecord>, import('./internal/workspaceGateway').MutationState<BucketRecord>];
|