{"version":3,"file":"SweepPage-DmTVqXt4.js","sources":["../../src/components/AgentTable.tsx","../../src/state/graphql/sweepPageQuery.ts","../../src/pages/SweepPage.styles.ts","../../src/pages/SweepPage.tsx"],"sourcesContent":["import {Icon} from '@wandb/weave/components/Icon';\nimport React from 'react';\nimport TimeAgo from 'react-timeago';\n// eslint-disable-next-line wandb/no-deprecated-imports\nimport {Table} from 'semantic-ui-react';\n\nimport {AgentData} from '../state/graphql/sweepPageQuery';\n\ntype AgentTableProps = {\n agents: AgentData[];\n};\n\nconst AgentTable = React.memo(({agents}: AgentTableProps) => {\n return (\n
\n \n \n \n Agent\n Host\n Last heartbeat\n Runs launched\n \n \n \n {agents.map(agent => {\n return (\n \n \n
\n \n {agent.name}\n
\n
\n {agent.host}\n \n \n \n {agent.totalRuns}\n
\n );\n })}\n
\n
\n
\n );\n});\nAgentTable.displayName = 'AgentTable';\n\nexport default AgentTable;\n","import gql from 'graphql-tag';\n\nimport * as Generated from '../../generated/graphql';\nimport {AccessOptions} from '../../util/permissions';\nimport {useQuery, UseQueryOptions} from './query';\n\nexport const SWEEP_PAGE_QUERY = gql`\n query SweepPage(\n $projectName: String!\n $entityName: String!\n $sweepName: String!\n ) {\n project(name: $projectName, entityName: $entityName) {\n id\n access\n readOnly\n sweep(sweepName: $sweepName) {\n id\n name\n displayName\n runCount\n runCountExpected\n runTime\n method\n state\n description\n user {\n id\n username\n photoUrl\n }\n config\n createdAt\n heartbeatAt\n updatedAt\n # earlyStopJobRunning\n controllerRunName\n priorRuns {\n edges {\n node {\n id\n name\n }\n }\n }\n agents {\n edges {\n node {\n id\n name\n state\n host\n persistent\n user {\n id\n }\n metrics\n createdAt\n heartbeatAt\n totalRuns\n }\n }\n }\n scheduler\n }\n entity {\n id\n name\n defaultAccess\n readOnlyAdmin\n privateOnly\n isTeam\n }\n }\n }\n`;\n\nexport interface SweepData {\n id: string;\n name: string;\n displayName?: string | null;\n state: string;\n createdAt: string;\n config: string;\n runCount?: number | null;\n runCountExpected?: number | null;\n runTime: number;\n user?: {\n id?: string | null;\n username?: string | null;\n photoUrl?: string | null;\n } | null;\n scheduler?: any;\n}\n\ntype DetailedSweepData = SweepData & {\n description: string;\n method: string;\n updatedAt: string;\n heartbeatAt: string;\n controllerRunName: string;\n priorRuns: {\n edges: Array<{\n node: {name: string};\n }>;\n };\n agents: {\n edges: Array<{\n node: AgentData;\n }>;\n };\n};\n\nexport interface AgentData {\n id: string;\n name: string;\n state: string;\n host?: string;\n heartbeatAt: string;\n totalRuns: number;\n}\n\n// The query's output shape.\nexport interface SweepPageQueryData {\n project: {\n id: string;\n access: AccessOptions;\n readOnly: boolean;\n sweep: DetailedSweepData;\n entity: {\n id: string;\n name: string;\n defaultAccess: AccessOptions;\n readOnlyAdmin: boolean;\n privateOnly: boolean;\n isTeam: boolean;\n };\n } | null;\n}\n\nexport function useSweepPageQuery(\n variables: Generated.SweepPageQueryVariables,\n options: UseQueryOptions\n) {\n return useQuery(SWEEP_PAGE_QUERY, {\n ...options,\n variables,\n });\n}\n","// eslint-disable-next-line wandb/no-deprecated-imports\nimport styled from 'styled-components';\n\nexport const SweepConfigBody = styled.div`\n padding: 32px 32px 80px;\n width: 80%;\n`;\nSweepConfigBody.displayName = 'S.SweepConfigBody';\n\nexport const ErrorWrapper = styled.div`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n`;\nErrorWrapper.displayName = 'S.ErrorWrapper';\n\nexport const ErrorMessage = styled.div`\n margin: auto;\n color: gray;\n line-height: 24px;\n font-size: 20px;\n`;\nErrorMessage.displayName = 'S.ErrorMessage';\n\nexport const Value2 = styled.div`\n padding-left: 15px;\n margin-top: 5px;\n margin-bottom: 5px;\n`;\nValue2.displayName = 'S.Value2';\n","import EditableField from '@wandb/weave/common/components/EditableField';\nimport Editor from '@wandb/weave/common/components/Monaco/Editor';\nimport {TargetBlank} from '@wandb/weave/common/util/links';\nimport {Alert} from '@wandb/weave/components/Alert';\nimport {FancyPage} from '@wandb/weave/components/FancyPage';\nimport {IconName} from '@wandb/weave/components/Icon';\nimport React, {FC, useCallback, useEffect, useMemo, useState} from 'react';\nimport {Link} from 'react-router-dom';\n// eslint-disable-next-line wandb/no-deprecated-imports\nimport {\n Button,\n Divider,\n Dropdown,\n Header,\n Image,\n Popup,\n Segment,\n Tab,\n} from 'semantic-ui-react';\n\nimport YAML from '../../services/yaml';\nimport AgentTable from '../components/AgentTable';\nimport {Bash, Command} from '../components/Code';\nimport DeleteSweepModal from '../components/DeleteSweepModal';\nimport {DEFAULT_LAUNCH_PROJECT_NAME} from '../components/Launch';\nimport {Link as LaunchLink} from '../components/Launch/Link';\nimport {parseJobInput, quoteIfMultiWord} from '../components/Launch/utils';\nimport {Log} from '../components/Log';\nimport {MultiRunWorkspaceWithContext} from '../components/MultiRunWorkspace';\nimport {RunSelectorResizingContextProvider} from '../components/MultiRunWorkspace/RunSelectorResizingContext';\nimport NoMatch from '../components/NoMatch';\nimport RunSelector from '../components/RunSelector';\nimport {SWEEP_PRIOR_RUNS_DISABLED_FEATURES} from '../components/RunSelector/util';\nimport {RunState} from '../components/RunState';\nimport WBModal from '../components/WBModal';\nimport {\n LaunchAgent,\n RunQueueItem,\n useFetchJobVersionsQuery,\n useFetchLaunchAgentsFromProjectQuery,\n useFetchRunQueuesFromProjectQuery,\n useUpsertModelMutation,\n useUpsertSweepMutation,\n} from '../generated/graphql';\nimport {Analytics} from '../services/analytics/Analytics';\nimport {\n SweepPageQueryData,\n useSweepPageQuery,\n} from '../state/graphql/sweepPageQuery';\nimport {useDispatch} from '../state/hooks';\nimport * as PollingHooks from '../state/polling/hooks';\nimport {RunQueryContext} from '../state/runs/context';\nimport {ProjectPageViewSpec} from '../state/views/projectPage/types';\nimport DOC_URLS from '../util/doc_urls';\nimport {setDocumentDescription, setDocumentTitle} from '../util/document';\nimport {propagateErrorsContext} from '../util/errors';\nimport * as Filter from '../util/filters';\nimport {runNamesFilter} from '../util/filters';\nimport * as FilterTypes from '../util/filterTypes';\nimport {trackPageViewed} from '../util/navigation';\nimport {getDefaultPanelSectionConfig} from '../util/panelbankConfigs';\nimport {AccessOption} from '../util/permissions';\nimport * as RunTypes from '../util/runTypes';\nimport {RunSetConfig} from '../util/section';\nimport {toggleSelection} from '../util/selectionmanager';\nimport * as Sweeps from '../util/sweeps';\nimport {\n SweepState,\n sweepStateDisplayName,\n SweepYamlConfig,\n} from '../util/sweeps';\nimport * as Url from '../util/urls';\nimport {JobPathParams} from '../util/urls';\nimport {InstrumentedLoader as Loader} from './../components/utility/InstrumentedLoader';\nimport NoAccessWrapper from './NoAccessPage/NoAccessWrapper';\nimport {ProjectPageContextProvider} from './ProjectPage/ProjectPageContext';\nimport * as S from './SweepPage.styles';\n\ninterface SweepPageProps {\n match: {\n params: {\n entityName: string;\n projectName: string;\n projectId: string;\n sweepName: string;\n tab?: string;\n };\n };\n history: any;\n}\n\ntype UseSweepPageProps = ReturnType;\ntype UseSweepPagePropsAfterLoad = Omit & {\n project: NonNullable;\n refetch: Exclude<\n ReturnType,\n {\n loading: true;\n }\n >['refetch'];\n};\n\ntype SweepPageAllProps = SweepPageProps & UseSweepPagePropsAfterLoad;\n\n// TODO: There are a lot of unnecessary non-null assertions (Typescript's\n// ! operator). We can get rid of them by making fewer things optional in\n// ReportPanelGridSection\nconst SweepPage: FC = React.memo(\n ({\n project,\n match,\n updateProject,\n configEditorValue,\n setConfigEditorValue,\n savingConfig,\n pollInterval,\n history,\n dispatch,\n upsertSweep,\n refetch,\n setSavingConfig,\n }) => {\n const sweep = project.sweep;\n const {entityName, projectName, sweepName, tab} = match.params;\n\n const isPublicOrOpenProject =\n project?.access === AccessOption.Public ||\n project?.access === AccessOption.Open;\n\n const config = YAML.parse(sweep.config) as SweepYamlConfig;\n\n const getSweepName = useCallback(() => {\n if (project.sweep) {\n return Sweeps.getSweepDisplayName(project.sweep);\n }\n return match.params.sweepName;\n }, [match, project]);\n\n const tabDescription: string = useMemo(() => {\n switch (tab) {\n case `overview`:\n return `Overview`;\n case `table`:\n return `Table`;\n case `agents`:\n return `Agents`;\n case `controls`:\n return `Controls`;\n case `logs`:\n return `Logs`;\n case `workspace`:\n default:\n return 'Workspace';\n }\n }, [tab]);\n\n useEffect(() => {\n setDocumentTitle(`${getSweepName()} | ${projectName} ${tabDescription}`);\n setDocumentDescription(\n `${tabDescription} of sweep ${getSweepName()} in ${projectName}, a machine learning project by ${entityName} using Weights & Biases.`\n );\n }, [tabDescription, getSweepName, projectName, entityName]);\n\n const sweepFilter: FilterTypes.Filter = {\n key: {section: 'run', name: 'sweepName'},\n op: '=',\n value: sweepName,\n };\n\n const baseUrl =\n '/' + entityName + '/' + projectName + '/sweeps/' + sweepName;\n\n const priorRunsEdges = sweep.priorRuns.edges;\n\n const priorRunNames = priorRunsEdges.map(edge => edge.node.name);\n const priorRunsFilter = runNamesFilter(priorRunNames);\n\n const updateDefaultSpec = (defaultSpec: ProjectPageViewSpec) => {\n const toggleSelectionInConfig = (\n runSetConfig: RunSetConfig,\n {\n node: run,\n }: {\n node: {\n name: string;\n };\n }\n ) =>\n toggleSelection(runSetConfig, run as RunTypes.Run, 1) as RunSetConfig;\n const oldConfig = defaultSpec.section.runSets![0];\n const newConfig = sweep.priorRuns.edges.reduce(\n toggleSelectionInConfig,\n oldConfig\n );\n return {\n ...defaultSpec,\n section: {\n ...defaultSpec.section,\n runSets: [newConfig],\n panelBankConfig: {\n ...defaultSpec.section.panelBankConfig,\n sections: [\n {\n ...getDefaultPanelSectionConfig({\n name: 'Sweep',\n type: 'grid',\n }),\n isOpen: true,\n panels: Sweeps.getDefaultPanels(project.sweep),\n },\n ...defaultSpec.section.panelBankConfig.sections,\n ],\n },\n },\n };\n };\n\n const onSetTableExpanded = (isTableExpanded: boolean) => {\n history.push({\n pathname: baseUrl + (isTableExpanded ? '/table' : '/workspace'),\n search: window.location.search,\n });\n };\n\n const overviewTabBody = () => (\n \n );\n\n const workspaceTabBody = (isTableExpanded: boolean) => () =>\n (\n \n );\n\n const agentTabBody = () => ;\n\n const sweepControlsTabBody = () => (\n \n );\n\n const logsTabBody = () => (\n \n );\n\n return (\n
\n \n \n \n \n \n
\n );\n }\n);\n\nfunction useSweepPageProps(\n entityName: string,\n projectName: string,\n sweepName: string\n) {\n const [configEditorValue, setConfigEditorValue] = useState('');\n const [savingConfig, setSavingConfig] = useState(false);\n\n const sweepQuery = useSweepPageQuery(\n {\n entityName,\n projectName,\n sweepName,\n },\n {\n fetchPolicy: 'network-only',\n enablePolling: true,\n }\n );\n\n const pollInterval = PollingHooks.usePollInterval();\n\n const sweepConfig =\n (!sweepQuery.loading && sweepQuery.data?.project?.sweep?.config) || '';\n useEffect(() => {\n setConfigEditorValue(sweepConfig);\n }, [sweepConfig]);\n\n const [updateProject] = useUpsertModelMutation();\n const [upsertSweep] = useUpsertSweepMutation({\n // Show the error message to the user instead of rendering error page\n context: propagateErrorsContext(),\n onError: ({networkError}) => {\n const message = (networkError as any)?.result?.errors[0]?.message;\n if (message != null) {\n alert(message);\n }\n },\n });\n\n const dispatch = useDispatch();\n\n return {\n dispatch,\n updateProject,\n sweepQuery,\n upsertSweep,\n configEditorValue,\n setConfigEditorValue,\n savingConfig,\n setSavingConfig,\n pollInterval,\n };\n}\n\nexport default (props: SweepPageProps) => {\n const {entityName, projectName, sweepName} = props.match.params;\n const selectedProps = useSweepPageProps(entityName, projectName, sweepName);\n\n if (selectedProps.sweepQuery.loading) {\n return ;\n }\n if (\n selectedProps.sweepQuery.data?.project == null ||\n selectedProps.sweepQuery.data?.project.sweep == null\n ) {\n return ;\n }\n\n return (\n \n );\n};\n\ntype SweepOverviewProps = Pick<\n SweepPageAllProps,\n | 'match'\n | 'project'\n | 'history'\n | 'upsertSweep'\n | 'updateProject'\n | 'configEditorValue'\n | 'setConfigEditorValue'\n | 'savingConfig'\n | 'setSavingConfig'\n | 'refetch'\n> & {\n getSweepName: () => string;\n};\n\nconst SweepOverview: React.FC = React.memo(\n ({\n match,\n project,\n history,\n getSweepName,\n upsertSweep,\n updateProject,\n configEditorValue,\n setConfigEditorValue,\n savingConfig,\n setSavingConfig,\n refetch,\n }) => {\n // for page view tracking\n useEffect(() => {\n trackPageViewed('Sweep', 'Overview');\n }, []);\n\n const sweep = project.sweep;\n const {entityName, projectName, sweepName} = match.params;\n const [deleteConfirmModalOpen, setDeleteConfirmModalOpen] = useState(false);\n\n // Launch info setup\n const launchScheduler: Record | null = JSON.parse(\n sweep.scheduler\n );\n const rawQueueStr: string | undefined = launchScheduler?.queue;\n const rawQueueEntityStr: string | undefined =\n launchScheduler?.run_queue_entity;\n const [launchSchedulerQueueID, setLaunchSchedulerQueueID] = useState('');\n const runQueuesQuery = useFetchRunQueuesFromProjectQuery({\n variables: {\n projectName: DEFAULT_LAUNCH_PROJECT_NAME,\n entityName: rawQueueEntityStr ?? entityName,\n },\n skip: !rawQueueStr,\n });\n\n const runQueues =\n runQueuesQuery.data?.project?.runQueues.filter(\n x => x.name.localeCompare(rawQueueStr ?? '') === 0\n ) ?? [];\n const runQueue = runQueues.length > 0 ? runQueues[0] : null;\n\n const schedulerRQI: RunQueueItem | null = useMemo(() => {\n if (!runQueue?.runQueueItems) {\n return null;\n }\n\n setLaunchSchedulerQueueID(runQueue?.id);\n\n let rqis = runQueue?.runQueueItems.edges.map(\n (rqi: {node: Partial}) => rqi.node\n ) as RunQueueItem[];\n rqis = rqis.filter(\n rqi => rqi.id.localeCompare(launchScheduler?.scheduler_id ?? '') === 0\n );\n\n if (rqis.length > 0) {\n return rqis[0];\n }\n return null;\n }, [runQueue, launchScheduler?.scheduler_id]);\n\n const jobFullName = getJobNameFromRunSpec(schedulerRQI?.runSpec);\n const jobPathParams = useJobPathParams(entityName, jobFullName);\n const runningAgents = useAgentQuery(projectName, entityName, runQueue?.id);\n\n const priorRunsEdges = sweep.priorRuns.edges;\n const priorRunNames = priorRunsEdges.map(edge => edge.node.name);\n const priorRunsFilter = runNamesFilter(priorRunNames);\n const priorRunsTable = () => (\n \n \n \n \n \n );\n\n const canReconfigure = useCallback(() => {\n return project.sweep.state === 'PENDING';\n }, [project]);\n\n const saveConfig = useCallback(async () => {\n if (!canReconfigure() || savingConfig) {\n return;\n }\n\n Analytics.track('saved edited sweep config in UI', {\n entityName: project.entity.name,\n sweepId: sweep.id,\n });\n\n if (sweep != null) {\n setSavingConfig(true);\n await upsertSweep({\n variables: {id: sweep.id, config: configEditorValue},\n });\n await refetch();\n setSavingConfig(false);\n }\n }, [\n canReconfigure,\n savingConfig,\n sweep,\n refetch,\n upsertSweep,\n configEditorValue,\n setSavingConfig,\n project.entity.name,\n ]);\n\n const resetConfig = useCallback(() => {\n if (savingConfig) {\n return;\n }\n setConfigEditorValue(project.sweep.config);\n }, [project, savingConfig, setConfigEditorValue]);\n\n const canSaveConfig = useCallback(() => {\n if (!canReconfigure() || project == null) {\n return false;\n }\n return project.sweep.config !== configEditorValue;\n }, [canReconfigure, configEditorValue, project]);\n\n let configDownloadURL = '';\n if (sweep.config != null && sweep.config.length > 0) {\n const file = new Blob([sweep.config], {\n type: 'text/yaml',\n });\n configDownloadURL = URL.createObjectURL(file);\n }\n\n return (\n
\n setDeleteConfirmModalOpen(false)}\n onDelete={() =>\n history.push(\n Url.project({\n name: projectName,\n entityName,\n })\n )\n }\n />\n
\n
\n
\n {\n upsertSweep({\n variables: {id: sweep.id, displayName},\n });\n }}\n />\n }\n direction=\"left\">\n \n setDeleteConfirmModalOpen(true)}\n />\n \n \n
\n {\n upsertSweep({variables: {id: sweep.id, description: value}});\n }}\n />\n
\n
\n
ID
\n
{sweep.name}
\n
\n {launchScheduler && (\n
\n
Status
\n
\n \n
\n
\n )}\n
\n
Created
\n
\n {new Date(sweep.createdAt).toLocaleString()}\n
\n
\n
\n
Last updated
\n
\n {new Date(sweep.updatedAt).toLocaleString()}\n
\n
\n {launchScheduler && jobFullName && (\n
\n
Job
\n
\n {jobPathParams ? (\n
\n \n {jobFullName}\n \n
\n ) : (\n
{jobFullName}
\n )}\n
\n
\n )}\n {!launchScheduler ? (\n
\n
Launch agent
\n
\n \n \n wandb agent {entityName}/{quoteIfMultiWord(projectName)}/\n {sweepName}\n \n \n
\n
\n ) : (\n <>\n
\n
Launch queue
\n {launchSchedulerQueueID !== '' ? (\n
\n \n {rawQueueStr}\n \n
\n ) : (\n // Scheduler run queue item older than 7 days, not in queue\n
{rawQueueStr}
\n )}\n {launchScheduler &&\n runningAgents &&\n runningAgents.length === 0 && (\n \n No running launch agents\n \n )}\n
\n \n )}\n
\n
Author
\n
\n \n (i.target.style.display = 'none')}\n />\n {sweep.user?.username}\n \n
\n
\n {sweep.state === 'FLAPPING' && (\n \n \n The sweep was stopped automatically due to a high number of\n crashed runs. Please update your sweep with a working\n configuration, then resume from the Sweep Controls page.\n \n \n )}\n
\n \n {priorRunNames.length > 0 && (\n <>\n
Prior Runs ({priorRunNames.length})
\n {priorRunsTable()}\n \n )}\n {Boolean(sweep.config) && (\n <>\n
Sweep configuration
\n {canReconfigure() && (\n <>\n

\n To change your sweep configuration,{' '}\n \n download your configuration file\n {' '}\n and save it as sweep.yaml.\n

\n

\n Modify it as you like then run the command below to upload\n the new configuration.\n

\n \n \n wandb sweep --update {entityName}/{projectName}/\n {sweep.name} sweep.yaml\n \n \n

\n Check out our{' '}\n \n docs\n {' '}\n for more information.\n

\n

\n You can also edit your configuration in the editor below:\n

\n \n )}\n
\n {canReconfigure() ? (\n \n ) : (\n
{sweep.config}
\n )}\n
\n {canReconfigure() && (\n
\n \n Cancel\n \n \n Save\n \n
\n )}\n \n )}\n
\n
\n );\n }\n);\n\ntype SweepAgentsProps = Pick;\n\nconst SweepAgents = React.memo(({project}: SweepAgentsProps) => {\n // for page view tracking\n useEffect(() => {\n trackPageViewed('Sweep', 'Agents');\n }, []);\n\n return (\n \n
\n e.node)} />\n
\n
\n );\n});\nSweepAgents.displayName = 'SweepAgents';\n\ntype SweepControlsProps = Pick<\n SweepPageAllProps,\n 'project' | 'upsertSweep' | 'refetch'\n>;\n\nconst SweepControls: React.FC = React.memo(\n ({project, upsertSweep, refetch}) => {\n // for page view tracking\n useEffect(() => {\n trackPageViewed('Sweep', 'Controls');\n }, []);\n\n const sweep = project.sweep;\n const [killConfirmModalOpen, setKillConfirmModalOpen] = useState(false);\n\n const setSweepState = useCallback(\n (st: string) => {\n // These will either both be set, or both be unset. This is just for typing.\n if (sweep != null) {\n upsertSweep({variables: {id: sweep.id, state: st}}).then(() =>\n refetch()\n );\n }\n },\n [sweep, refetch, upsertSweep]\n );\n\n const launchScheduler: Record | null = JSON.parse(\n sweep.scheduler\n );\n\n const state: SweepState = (sweep.state as SweepState) || 'UNKNOWN';\n const pauseMsg = 'Pause the sweep to temporarily stop running new runs.';\n const pauseLaunchMsg =\n 'Pause the sweep scheduler to stop enqueuing new runs.';\n const resumeMsg = 'Resume the sweep to continue running new runs.';\n const finishMsg =\n 'Finish the sweep to stop running new runs and let currently running runs finish.';\n const restartMsg =\n 'Resume running the sweep. If you exhausted a grid search, no new runs will run unless you delete some of the previous runs.';\n const cancelMsg =\n 'Cancel the sweep to kill all running runs and stop running new runs.';\n const flappingMsg =\n 'This sweep was automatically stopped due to a high number of crashed runs. Please update your sweep with a working configuration before resuming.';\n return (\n \n setKillConfirmModalOpen(false)}\n includeCancel\n primaryAction={{\n content: 'Kill',\n onClick: () => {\n setSweepState('CANCELED');\n setKillConfirmModalOpen(false);\n },\n }}\n header=\"Are you sure you want to kill this sweep?\"\n headerIcon=\"warning\">\n

\n This will kill all runs in this sweep and stop running new runs.\n

\n \n \n
\n Sweep state: {' '}\n \n
\n {launchScheduler ? (\n <>\n {state === 'PENDING' ? (\n

\n \n Create a launch agent on queue:{' '}\n \n {launchScheduler.queue}\n {' '}\n to start your sweep. You can't reconfigure the sweep once it\n has started.\n \n

\n ) : state === 'RUNNING' ? (\n

\n \n This sweep is running on launch queue:{' '}\n \n {launchScheduler.queue}\n {' '}\n \n

\n ) : null}\n \n ) : (\n

\n \n Create an agent to start your sweep. You can't reconfigure the\n sweep once it has started.\n \n

\n )}\n \n
Pause / Resume
\n

\n \n {state === 'PAUSED' && resumeMsg}\n {state === 'RUNNING' && launchScheduler\n ? pauseLaunchMsg\n : pauseMsg}\n \n

\n

\n setSweepState('RUNNING')}\n />\n }\n content={resumeMsg}\n />\n {state === 'RUNNING' && (\n setSweepState('PAUSED')}\n />\n }\n content={launchScheduler ? pauseLaunchMsg : pauseMsg}\n />\n )}\n

\n \n
Stop
\n

\n {finishMsg}\n

\n

\n setSweepState('FINISHED')}\n />\n }\n content={finishMsg}\n />\n {state === 'FINISHED' && !launchScheduler && (\n setSweepState('RUNNING')}\n />\n }\n content={restartMsg}\n />\n )}\n {state === 'FLAPPING' && (\n setSweepState('RUNNING')}\n />\n }\n content={flappingMsg}\n />\n )}\n

\n \n
Cancel
\n

\n {cancelMsg}\n

\n

\n setKillConfirmModalOpen(true)}\n />\n }\n content={cancelMsg}\n />\n

\n
\n
\n );\n }\n);\n\ntype SweepLogsProps = Pick<\n SweepPageAllProps,\n 'project' | 'match' | 'pollInterval'\n>;\n\nconst SweepLogs: React.FC = React.memo(\n ({project, match, pollInterval}) => {\n // for page view tracking\n useEffect(() => {\n trackPageViewed('Sweep', 'Logs');\n }, []);\n\n const {entityName, projectName} = match.params;\n const sweep = project.sweep;\n\n if (!sweep.controllerRunName) {\n return null;\n }\n // const outputLogFile = RunHelpers.outputLogFile(run);\n return (\n \n );\n }\n);\n\nconst useAgentQuery = (\n projectName: string,\n entityName: string,\n runQueueID: string | undefined\n): LaunchAgent[] | null => {\n // Hook that returns the running agents on a given queue\n const launchAgentsQuery = useFetchLaunchAgentsFromProjectQuery({\n variables: {\n projectName,\n entityName,\n },\n skip: !runQueueID,\n });\n const launchAgentEntityQuery = useFetchLaunchAgentsFromProjectQuery({\n variables: {\n projectName: DEFAULT_LAUNCH_PROJECT_NAME,\n entityName,\n },\n skip: !runQueueID,\n });\n\n const allAgents = (\n launchAgentsQuery.data?.project?.launchAgents ?? []\n ).concat(launchAgentEntityQuery.data?.project?.launchAgents ?? []);\n\n if (allAgents?.length === 0) {\n return null;\n }\n\n const runningAgents = allAgents.filter(x =>\n x.runQueues.includes(runQueueID ?? '')\n );\n\n return runningAgents;\n};\n\nfunction getJobNameFromRunSpec(schedulerRunSpec: any): string | null {\n // Helper function get a job name from a run queue item runspec\n\n if (!schedulerRunSpec?.overrides?.entry_point) {\n return null;\n }\n\n const overrideList: string[] = schedulerRunSpec.overrides.entry_point;\n const idx = overrideList.findIndex(x => {\n return String(x).localeCompare('--job') === 0;\n });\n if (idx === -1) {\n return null;\n }\n return overrideList[idx + 1];\n}\n\nfunction useJobPathParams(\n entityName: string,\n jobName: string | null\n): JobPathParams | null {\n const jobInfo = parseJobInput(jobName ?? undefined);\n // job name parsed from string, no version nor entitiy/project\n const simpleJobName: string | undefined = jobInfo?.jobName;\n\n const versionsQuery = useFetchJobVersionsQuery({\n variables: {\n entityName,\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n projectName: jobInfo?.jobProject!,\n jobName: simpleJobName!,\n },\n skip: !jobName || !simpleJobName || !jobInfo?.jobProject,\n });\n\n if (\n !jobName ||\n !jobInfo?.jobProject ||\n versionsQuery.loading ||\n versionsQuery.error\n ) {\n return null;\n }\n\n const artifactId = versionsQuery.data?.project?.artifactCollection?.id;\n if (!artifactId) {\n return null;\n }\n\n const jobPathParams: JobPathParams = {\n entityName,\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n projectName: jobInfo?.jobProject!,\n jobId: artifactId,\n jobVersion: jobInfo?.jobVersion,\n };\n\n return jobPathParams;\n}\n"],"names":["AgentTable","React","memo","agents","className","children","Table","selectable","padded","_jsx","Header","Row","HeaderCell","singleLine","Body","map","agent","_jsxs","Cell","style","display","alignItems","Icon","marginRight","name","host","TimeAgo","date","heartbeatAt","live","totalRuns","id","displayName","SWEEP_PAGE_QUERY","gql","useSweepPageQuery","variables","options","useQuery","SweepConfigBody","styled","ErrorWrapper","ErrorMessage","Value2","SweepPage","project","match","updateProject","configEditorValue","setConfigEditorValue","savingConfig","pollInterval","history","dispatch","upsertSweep","refetch","setSavingConfig","sweep","entityName","projectName","sweepName","tab","params","isPublicOrOpenProject","access","AccessOption","Public","Open","config","YAML","parse","getSweepName","useCallback","Sweeps","tabDescription","useMemo","useEffect","setDocumentTitle","setDocumentDescription","sweepFilter","key","section","op","value","baseUrl","priorRunNames","priorRuns","edges","edge","node","priorRunsFilter","runNamesFilter","updateDefaultSpec","defaultSpec","toggleSelectionInConfig","runSetConfig","run","toggleSelection","oldConfig","runSets","newConfig","reduce","panelBankConfig","sections","getDefaultPanelSectionConfig","type","isOpen","panels","onSetTableExpanded","isTableExpanded","push","pathname","search","window","location","overviewTabBody","SweepOverview","workspaceTabBody","MultiRunWorkspaceWithContext","defaultSpecPostFn","mergeFilters","Filter","recommendGrouping","runSetName","runsQueryContextValue","earlyTerminate","early_terminate","title","viewType","workspaceObjectID","agentTabBody","SweepAgents","sweepControlsTabBody","SweepControls","logsTabBody","SweepLogs","marginLeft","NoAccessWrapper","skipCheck","ProjectPageContextProvider","FancyPage","activeSlug","items","iconName","slug","render","controllerRunName","useSweepPageProps","useState","sweepQuery","fetchPolicy","enablePolling","PollingHooks","sweepConfig","loading","data","useUpsertModelMutation","useUpsertSweepMutation","context","propagateErrorsContext","onError","networkError","message","result","errors","alert","useDispatch","SweepPage$1","props","selectedProps","Loader","NoMatch","trackPageViewed","deleteConfirmModalOpen","setDeleteConfirmModalOpen","launchScheduler","JSON","scheduler","rawQueueStr","queue","rawQueueEntityStr","run_queue_entity","launchSchedulerQueueID","setLaunchSchedulerQueueID","runQueues","useFetchRunQueuesFromProjectQuery","DEFAULT_LAUNCH_PROJECT_NAME","skip","filter","x","localeCompare","runQueue","length","schedulerRQI","runQueueItems","rqis","rqi","scheduler_id","jobFullName","getJobNameFromRunSpec","runSpec","jobPathParams","useJobPathParams","runningAgents","useAgentQuery","priorRunsTable","RunQueryContext","Provider","RunSelectorResizingContextProvider","RunSelector","pageEntityName","pageProjectName","disabledFeatures","SWEEP_PRIOR_RUNS_DISABLED_FEATURES","canReconfigure","state","saveConfig","Analytics","track","entity","sweepId","resetConfig","canSaveConfig","configDownloadURL","file","Blob","URL","createObjectURL","DeleteSweepModal","open","sweeps","onClose","onDelete","Url","EditableField","readOnly","asHeader","placeholder","showEditIcon","save","Dropdown","floating","trigger","Button","size","icon","direction","Menu","Item","content","disabled","onClick","multiline","renderLinks","description","RunState","sweepStateDisplayName","toLowerCase","Date","createdAt","toLocaleString","updatedAt","LaunchLink","to","_Fragment","S","Alert","severity","Bash","Command","quoteIfMultiWord","Link","user","username","Image","src","photoUrl","avatar","i","target","as","Boolean","href","download","TargetBlank","DOC_URLS","Editor","onChange","language","primary","Tab","Pane","marginBottom","e","killConfirmModalOpen","setKillConfirmModalOpen","setSweepState","st","then","pauseMsg","pauseLaunchMsg","resumeMsg","finishMsg","restartMsg","cancelMsg","WBModal","includeCancel","primaryAction","header","headerIcon","Segment","Divider","marginTop","Popup","color","flappingMsg","includes","Log","runName","outputLogFile","runQueueID","launchAgentsQuery","useFetchLaunchAgentsFromProjectQuery","launchAgentEntityQuery","allAgents","launchAgents","concat","schedulerRunSpec","overrides","entry_point","overrideList","idx","findIndex","String","jobName","jobInfo","parseJobInput","undefined","simpleJobName","versionsQuery","useFetchJobVersionsQuery","jobProject","error","artifactId","artifactCollection","jobId","jobVersion"],"mappings":"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"}