Skip to main content
Glama

@arizeai/phoenix-mcp

Official
by Arize-ai
CreateRetentionPolicy.tsx3.33 kB
import { useState } from "react"; import { ConnectionHandler, graphql, useMutation } from "react-relay"; import { Alert } from "@phoenix/components"; import { useNotifySuccess } from "@phoenix/contexts/NotificationContext"; import { getErrorMessagesFromRelayMutationError } from "@phoenix/utils/errorUtils"; import { CreateRetentionPolicyMutation, ProjectTraceRetentionRuleInput, } from "./__generated__/CreateRetentionPolicyMutation.graphql"; import { RetentionPolicyForm, RetentionPolicyFormParams, } from "./RetentionPolicyForm"; /** * A Wrapper around the RetentionPolicyForm component that is used to create a new retention policy. */ export function CreateRetentionPolicy(props: { onCreate: () => void }) { const [error, setError] = useState<string | null>(null); const notifySuccess = useNotifySuccess(); const [submit, isSubmitting] = useMutation<CreateRetentionPolicyMutation>( graphql` mutation CreateRetentionPolicyMutation( $input: CreateProjectTraceRetentionPolicyInput! $connectionId: ID! ) { createProjectTraceRetentionPolicy(input: $input) { node @prependNode( connections: [$connectionId] edgeTypeName: "ProjectTraceRetentionPolicyEdge" ) { ...RetentionPoliciesTable_retentionPolicy } } } ` ); const onSubmit = (params: RetentionPolicyFormParams) => { setError(null); let rule: ProjectTraceRetentionRuleInput; if (params.numberOfDays && params.numberOfTraces) { rule = { maxDaysOrCount: { maxDays: params.numberOfDays, maxCount: params.numberOfTraces, }, }; } else if (params.numberOfDays) { rule = { maxDays: { maxDays: params.numberOfDays, }, }; } else if (params.numberOfTraces) { rule = { maxCount: { maxCount: params.numberOfTraces, }, }; } else if (params.numberOfDays === 0) { rule = { maxDays: { maxDays: 0, }, }; } else { setError( "Invalid retention policy rule. Please enter a number of days or a number of traces, or both, to configure this policy." ); return; } const connectionId = ConnectionHandler.getConnectionID( "client:root", "RetentionPoliciesTable_projectTraceRetentionPolicies" ); submit({ variables: { input: { cronExpression: params.schedule, rule, name: params.name, }, connectionId, }, onCompleted: () => { notifySuccess({ title: "Retention policy created successfully", message: "The retention policy has been created. You can now add this policy to projects.", }); props.onCreate(); }, onError: (error) => { setError( getErrorMessagesFromRelayMutationError(error)?.join("\n") ?? "An unknown error occurred while creating the retention policy. Please try again." ); }, }); }; return ( <> {error && <Alert variant="danger">{error}</Alert>} <RetentionPolicyForm onSubmit={onSubmit} isSubmitting={isSubmitting} mode="create" /> </> ); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Arize-ai/phoenix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server