@e-llm-studio/instant-learning 1.3.3 → 1.3.5
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/ILMarketplaceWrapper.js +3 -0
- package/dist/ILMarketplaceWrapper.js.map +1 -1
- package/dist/cjs/ILMarketplaceWrapper.js +3 -0
- package/dist/cjs/ILMarketplaceWrapper.js.map +1 -1
- package/dist/cjs/features/IL-OTJ/ValueTypeWrappers/TeachMePlugin.js +5 -2
- package/dist/cjs/features/IL-OTJ/ValueTypeWrappers/TeachMePlugin.js.map +1 -1
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/ChatComponent.js +12 -4
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/ChatComponent.js.map +1 -1
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/NormalChat.js +13 -4
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/NormalChat.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js +41 -4
- package/dist/cjs/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/PromoteFlow.js +444 -169
- package/dist/cjs/features/IL-marketplace/PromoteFlow/PromoteFlow.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/PromoteFlow.module.css.js +2 -2
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.api.js +19 -2
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.api.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.store.js +7 -0
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.store.js.map +1 -1
- package/dist/cjs/features/InstantLearning/InstantLearning.js +1 -0
- package/dist/cjs/features/InstantLearning/InstantLearning.js.map +1 -1
- package/dist/cjs/features/InstantLearning/_components/ChatComponent.js +3 -1
- package/dist/cjs/features/InstantLearning/_components/ChatComponent.js.map +1 -1
- package/dist/cjs/features/InstantLearning/_components/ContextualChatComponent.js +3 -1
- package/dist/cjs/features/InstantLearning/_components/ContextualChatComponent.js.map +1 -1
- package/dist/features/IL-OTJ/ValueTypeWrappers/TeachMePlugin.js +5 -2
- package/dist/features/IL-OTJ/ValueTypeWrappers/TeachMePlugin.js.map +1 -1
- package/dist/features/IL-OTJ/_components/ChatComponents/ChatComponent.js +12 -4
- package/dist/features/IL-OTJ/_components/ChatComponents/ChatComponent.js.map +1 -1
- package/dist/features/IL-OTJ/_components/ChatComponents/NormalChat.js +13 -4
- package/dist/features/IL-OTJ/_components/ChatComponents/NormalChat.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js +41 -4
- package/dist/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/PromoteFlow.js +446 -171
- package/dist/features/IL-marketplace/PromoteFlow/PromoteFlow.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/PromoteFlow.module.css.js +2 -2
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.api.js +17 -3
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.api.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.store.js +7 -0
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.store.js.map +1 -1
- package/dist/features/InstantLearning/InstantLearning.js +1 -0
- package/dist/features/InstantLearning/InstantLearning.js.map +1 -1
- package/dist/features/InstantLearning/_components/ChatComponent.js +3 -1
- package/dist/features/InstantLearning/_components/ChatComponent.js.map +1 -1
- package/dist/features/InstantLearning/_components/ContextualChatComponent.js +3 -1
- package/dist/features/InstantLearning/_components/ContextualChatComponent.js.map +1 -1
- package/dist/types/src/ILMarketplaceWrapper.d.ts.map +1 -1
- package/dist/types/src/features/IL-OTJ/ValueTypeWrappers/TeachMePlugin.d.ts.map +1 -1
- package/dist/types/src/features/IL-OTJ/_components/ChatComponents/ChatComponent.d.ts.map +1 -1
- package/dist/types/src/features/IL-OTJ/_components/ChatComponents/NormalChat.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/PromoteFlow.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.api.d.ts +5 -2
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.api.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.interfaces.d.ts +26 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.interfaces.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.store.d.ts +3 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.store.d.ts.map +1 -1
- package/dist/types/src/features/InstantLearning/InstantLearning.d.ts.map +1 -1
- package/dist/types/src/features/InstantLearning/_components/ChatComponent.d.ts.map +1 -1
- package/dist/types/src/features/InstantLearning/_components/ContextualChatComponent.d.ts.map +1 -1
- package/package.json +4 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromoteFlow.js","sources":["../../../../src/features/IL-marketplace/PromoteFlow/PromoteFlow.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport Tooltip, { type TooltipProps } from '@mui/material/Tooltip';\nimport { styled } from '@mui/material/styles';\nimport { tooltipClasses } from '@mui/material/Tooltip';\nimport {\n ArrowDownUp,\n ArrowLeft,\n ArrowUpRight,\n Bell,\n Calendar,\n ChevronDown,\n Copy,\n ExternalLink,\n LoaderCircle,\n Settings2,\n} from 'lucide-react';\nimport { cx, getGuidelineTitle } from '../utils';\nimport type { FileItem } from '../types/file-item';\nimport { EnvironmentConfigurationModal } from './EnvironmentConfigurationModal';\nimport {\n createEnvironmentConfig,\n getCWUser,\n getPromotionHistory,\n getPromotionStatus,\n schedulePromotion,\n searchEnvironmentConfigs,\n startPromotion,\n triggerScheduledPromotion,\n} from './promote-flow.api';\nimport { usePromoteFlowStore } from './promote-flow.store';\nimport type {\n EnvironmentConfiguration,\n EnvironmentRegistryRecord,\n EnvironmentTier,\n PromotionEnvironment,\n PromotionHistoryEntry,\n} from './promote-flow.interfaces';\nimport {\n EMPTY_ENVIRONMENT_CONFIGURATION,\n formatPromotionDate,\n getEnvironmentDisplayName,\n getLatestPromotionForEnvironmentPair,\n getPermittedDestinationTiers,\n getPromotionResourceId,\n toCreateEnvironmentConfigRequest,\n toRegistryRecord,\n} from './promote-flow.utils';\nimport cssStyles from './PromoteFlow.module.css';\n//\nconst StyledPromoteTooltip = styled(({ className, ...props }: TooltipProps) => (\n <Tooltip {...props} classes={{ popper: className }} />\n))(() => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: '#161616cf',\n color: '#ffffff',\n fontSize: '12px',\n padding: '7px 11px',\n borderRadius: 6,\n maxWidth: 250,\n textAlign: 'center',\n whiteSpace: 'normal',\n wordBreak: 'break-word',\n lineHeight: 1.5,\n },\n [`& .${tooltipClasses.arrow}`]: {\n color: '#000000',\n },\n}));\n\nexport interface PromoteFlowProps {\n guideline: FileItem;\n onBack?: () => void;\n onPromote?: (guideline: FileItem) => void;\n onSaveDraft?: (guideline: FileItem) => void;\n className?: string;\n}\n\ntype SubmissionAction = 'now' | 'later' | 'trigger' | null;\n\nconst ACCORDIONS = [\n {\n id: 'overview',\n title: 'Overview',\n },\n {\n id: 'history',\n title: 'Promotion History',\n comingSoon: false,\n },\n {\n id: 'database',\n title: 'Database Details',\n comingSoon: true,\n },\n {\n id: 'knowledgebase',\n title: 'Knowledgebase Details',\n comingSoon: true,\n },\n];\n\nconst TABLE_NAMES = [\n 'document_feature_details',\n 'document_feature_terminology',\n 'document_feature_validation',\n 'techo_document_feature',\n 'document_feature_configuration',\n 'document_feature_techme',\n 'document_feature_schema',\n 'document_feature_cognitive_compare',\n];\n\nexport function PromoteFlow({ guideline, onBack, onPromote, className }: PromoteFlowProps) {\n const [openSections, setOpenSections] = useState<Record<string, boolean>>({\n overview: true,\n });\n const [copiedId, setCopiedId] = useState<string | null>(null);\n const [configuredEnvironment, setConfiguredEnvironment] = useState<PromotionEnvironment | null>(\n null\n );\n const [promotedByName, setPromotedByName] = useState<string | null>(null);\n const [promotionHistory, setPromotionHistory] = useState<PromotionHistoryEntry[]>([]);\n const [isLoadingHistory, setIsLoadingHistory] = useState(false);\n const [promotionConfigs, setPromotionConfigs] = useState<EnvironmentRegistryRecord[]>([]);\n const [isLoadingConfigs, setIsLoadingConfigs] = useState(false);\n const [configSearchTier, setConfigSearchTier] = useState<EnvironmentTier | null>(null);\n const [submittingAction, setSubmittingAction] = useState<SubmissionAction>(null);\n const sourceEnvironment = usePromoteFlowStore((state) => state.sourceEnvironment);\n const destinationEnvironment = usePromoteFlowStore((state) => state.destinationEnvironment);\n const promotionTask = usePromoteFlowStore((state) => state.promotionTask);\n const promotionResourceId = usePromoteFlowStore((state) => state.promotionResourceId);\n const isSubmitting = usePromoteFlowStore((state) => state.isSubmitting);\n const error = usePromoteFlowStore((state) => state.error);\n const errorResourceId = usePromoteFlowStore((state) => state.errorResourceId);\n const setEnvironment = usePromoteFlowStore((state) => state.setEnvironment);\n const setPromotionTask = usePromoteFlowStore((state) => state.setPromotionTask);\n const setSubmitting = usePromoteFlowStore((state) => state.setSubmitting);\n const setError = usePromoteFlowStore((state) => state.setError);\n const resetPromotionSession = usePromoteFlowStore((state) => state.resetPromotionSession);\n const title = getGuidelineTitle(guideline);\n const currentUrl = typeof window !== 'undefined' ? window.location.href : '';\n const versionLabel = guideline.version ? `v${guideline.version}` : 'v1';\n const statusLabel = guideline.status ?? 'Published';\n const guidelineResourceId = getPromotionResourceId(guideline);\n const promotionTaskForGuideline =\n promotionResourceId === guidelineResourceId ? promotionTask : null;\n const errorForGuideline = errorResourceId === guidelineResourceId ? error : null;\n const isSourceConfigured = Boolean(sourceEnvironment);\n const isDestinationConfigured = Boolean(destinationEnvironment);\n const canPromote = isSourceConfigured && isDestinationConfigured && !isSubmitting;\n const sourceEnvironmentLabel = getEnvironmentDisplayName(sourceEnvironment, 'Dev');\n const destinationEnvironmentLabel = getEnvironmentDisplayName(destinationEnvironment, 'QA');\n const isPromoting = Boolean(promotionTaskForGuideline);\n const canRetryPromotion = promotionTaskForGuideline?.status === 'FAILED';\n const sourceTier = sourceEnvironment?.env_tier ?? 'dev';\n const permittedDestinationTiers = useMemo(\n () => getPermittedDestinationTiers(sourceTier),\n [sourceTier]\n );\n const permittedSourceTiers: EnvironmentTier[] = ['dev', 'qa', 'prod', 'external'];\n const selectedEnvironment =\n configuredEnvironment === 'source' ? sourceEnvironment : destinationEnvironment;\n const latestPromotionForPair = useMemo(\n () =>\n getLatestPromotionForEnvironmentPair(\n promotionHistory,\n sourceEnvironment,\n destinationEnvironment\n ),\n [destinationEnvironment, promotionHistory, sourceEnvironment]\n );\n const promoteActionLabel = latestPromotionForPair?.status === 'SUCCESS' ? 'Sync' : 'Promote Now';\n\n const toggleSection = (id: string) => {\n setOpenSections((current) => ({ ...current, [id]: !current[id] }));\n };\n\n useEffect(() => {\n let isCurrent = true;\n setIsLoadingHistory(true);\n getPromotionHistory(guidelineResourceId)\n .then((history) => {\n if (isCurrent) setPromotionHistory(history);\n })\n .catch((historyError) => {\n if (isCurrent) {\n setError(\n historyError instanceof Error\n ? historyError.message\n : 'Unable to load promotion history.',\n guidelineResourceId\n );\n }\n })\n .finally(() => {\n if (isCurrent) setIsLoadingHistory(false);\n });\n\n return () => {\n isCurrent = false;\n };\n }, [guidelineResourceId, setError]);\n\n useEffect(() => {\n if (!configuredEnvironment) return;\n\n const defaultTier =\n configuredEnvironment === 'source'\n ? (sourceEnvironment?.env_tier ?? 'dev')\n : (destinationEnvironment?.env_tier ?? permittedDestinationTiers[0]);\n const envTier = configSearchTier ?? defaultTier;\n let isCurrent = true;\n setIsLoadingConfigs(true);\n setPromotionConfigs([]);\n searchEnvironmentConfigs({\n env_tier: envTier,\n db_type: envTier === 'external' ? 'EXTERNAL' : 'INTERNAL',\n })\n .then((configs) => {\n if (isCurrent) setPromotionConfigs(configs);\n })\n .catch(() => {\n // Pre-configured environments are optional. A transport failure here must not\n // be presented as a promotion failure on the main screen.\n if (isCurrent) setPromotionConfigs([]);\n })\n .finally(() => {\n if (isCurrent) setIsLoadingConfigs(false);\n });\n\n return () => {\n isCurrent = false;\n };\n }, [\n configSearchTier,\n configuredEnvironment,\n destinationEnvironment?.env_tier,\n guidelineResourceId,\n permittedDestinationTiers,\n sourceEnvironment?.env_tier,\n ]);\n\n useEffect(() => {\n const promotedByEmail = promotionTaskForGuideline?.created_by;\n if (!promotedByEmail) {\n setPromotedByName(null);\n return;\n }\n\n let isCurrent = true;\n setPromotedByName(promotedByEmail);\n\n getCWUser(promotedByEmail)\n .then((userResponse) => {\n const user = userResponse.data ?? userResponse;\n const fullName = [user.firstname, user.lastname].filter(Boolean).join(' ').trim();\n if (isCurrent) setPromotedByName(fullName || user.user_name || promotedByEmail);\n })\n .catch(() => {\n if (isCurrent) setPromotedByName(promotedByEmail);\n });\n\n return () => {\n isCurrent = false;\n };\n }, [promotionTaskForGuideline?.created_by, promotionTaskForGuideline?.promotion_task_id]);\n\n useEffect(() => {\n if (!promotionTaskForGuideline || promotionTaskForGuideline.status !== 'MIGRATING') return;\n\n const pollStatus = async () => {\n try {\n setPromotionTask(await getPromotionStatus(promotionTaskForGuideline.promotion_task_id));\n } catch (pollError) {\n setError(\n pollError instanceof Error ? pollError.message : 'Unable to refresh promotion status.',\n guidelineResourceId\n );\n }\n };\n\n const intervalId = window.setInterval(pollStatus, 30_000);\n return () => window.clearInterval(intervalId);\n }, [guidelineResourceId, promotionTaskForGuideline, setError, setPromotionTask]);\n\n const handlePromoteNow = async () => {\n if (!canPromote || !sourceEnvironment || !destinationEnvironment) return;\n\n setSubmitting(true);\n setSubmittingAction('now');\n setError(null);\n try {\n const task = await startPromotion({\n resource_id: getPromotionResourceId(guideline),\n resource_type: 'PACKAGE',\n target_version: 'latest',\n global_source_env_id: sourceEnvironment.env_id,\n global_target_env_id: destinationEnvironment.env_id,\n });\n setPromotionTask(task, guidelineResourceId);\n onPromote?.(guideline);\n } catch (promotionError) {\n setError(\n promotionError instanceof Error ? promotionError.message : 'Unable to start promotion.',\n guidelineResourceId\n );\n } finally {\n setSubmitting(false);\n setSubmittingAction(null);\n }\n };\n\n const handleSaveEnvironment = async (\n environment: PromotionEnvironment,\n configuration: EnvironmentConfiguration\n ) => {\n const response = await createEnvironmentConfig(toCreateEnvironmentConfigRequest(configuration));\n setEnvironment(environment, toRegistryRecord(response.env_id, configuration));\n };\n\n const openEnvironmentConfiguration = (environment: PromotionEnvironment) => {\n const selected = environment === 'source' ? sourceEnvironment : destinationEnvironment;\n setConfigSearchTier(\n selected?.env_tier ?? (environment === 'source' ? 'dev' : permittedDestinationTiers[0])\n );\n setConfiguredEnvironment(environment);\n };\n\n const handlePromoteLater = async () => {\n if (!canPromote || !sourceEnvironment || !destinationEnvironment) return;\n\n setSubmitting(true);\n setSubmittingAction('later');\n setError(null);\n try {\n const scheduledPromotion = await schedulePromotion({\n resource_id: guidelineResourceId,\n resource_type: 'PACKAGE',\n target_version: 'latest',\n global_source_env_id: sourceEnvironment.env_id,\n global_target_env_id: destinationEnvironment.env_id,\n });\n const now = new Date().toISOString();\n setPromotionTask(\n {\n ...scheduledPromotion,\n source_env: sourceEnvironmentLabel,\n target_env: destinationEnvironmentLabel,\n transferred_records_count: 0,\n transferred_tables_count: 0,\n error_summary: null,\n created_at: scheduledPromotion.created_at ?? now,\n updated_at: scheduledPromotion.updated_at ?? now,\n },\n guidelineResourceId\n );\n onPromote?.(guideline);\n } catch (promotionError) {\n setError(\n promotionError instanceof Error ? promotionError.message : 'Unable to schedule promotion.',\n guidelineResourceId\n );\n } finally {\n setSubmitting(false);\n setSubmittingAction(null);\n }\n };\n\n const handleTriggerScheduledPromotion = async () => {\n const triggerUrl = promotionTaskForGuideline?.trigger_url;\n if (!triggerUrl) return;\n\n setSubmitting(true);\n setSubmittingAction('trigger');\n setError(null);\n try {\n const task = await triggerScheduledPromotion(triggerUrl);\n setPromotionTask(task, guidelineResourceId);\n onPromote?.(guideline);\n } catch (promotionError) {\n setError(\n promotionError instanceof Error\n ? promotionError.message\n : 'Unable to start the scheduled promotion.',\n guidelineResourceId\n );\n } finally {\n setSubmitting(false);\n setSubmittingAction(null);\n }\n };\n\n const handleBack = () => {\n if (promotionTaskForGuideline?.status === 'FAILED') {\n resetPromotionSession();\n }\n\n if (onBack) {\n onBack();\n return;\n }\n\n window.history.back();\n };\n\n const handleCopyToClipboard = async (text: string, id: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopiedId(id);\n // Reset copied state after 2 seconds\n setTimeout(() => setCopiedId(null), 2000);\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n };\n\n const renderAccordionBody = (id: string) => {\n if (id === 'overview') {\n return (\n <div className={cssStyles.overviewPanel}>\n <div className={cssStyles.overviewGrid}>\n <div>\n <div className={cssStyles.environmentHeading}>\n <span className={cssStyles.metaLabel}>Source Environment</span>\n <button\n type=\"button\"\n className={cx(\n cssStyles.configureEnvironmentButton,\n !isSourceConfigured && cssStyles.configureEnvironmentButtonRequired\n )}\n aria-label=\"Configure source environment\"\n data-tooltip=\"Configure source environment\"\n onClick={() => openEnvironmentConfiguration('source')}\n >\n <Settings2 aria-hidden=\"true\" strokeWidth={2} />\n </button>\n </div>\n <div className={cssStyles.metaValue}>{sourceEnvironmentLabel}</div>\n </div>\n <div>\n <div className={cssStyles.environmentHeading}>\n <span className={cssStyles.metaLabel}>Destination Environment</span>\n <button\n type=\"button\"\n className={cx(\n cssStyles.configureEnvironmentButton,\n !isDestinationConfigured && cssStyles.configureEnvironmentButtonRequired\n )}\n aria-label=\"Configure destination environment\"\n data-tooltip=\"Configure destination environment\"\n onClick={() => openEnvironmentConfiguration('destination')}\n >\n <Settings2 aria-hidden=\"true\" strokeWidth={2} />\n </button>\n </div>\n <div className={cssStyles.metaValue}>{destinationEnvironmentLabel}</div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>ILKB status</div>\n <div className={cssStyles.metaValue}>{statusLabel}</div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>Version</div>\n <span className={cssStyles.versionPill}>{versionLabel}</span>\n </div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>Current URL</div>\n {/* <a href=\"#\" className={cssStyles.urlLink} target=\"_blank\" rel=\"noreferrer\"> */}\n Coming soon.\n <ExternalLink className={cssStyles.urlIcon} strokeWidth={2} />\n {/* </a> */}\n </div>\n {/* <div>\n <div className={cssStyles.metaLabel}>Promotion Statistics</div>\n <div className={cssStyles.statsGrid}>\n <div className={cssStyles.statCell}>\n <span>Total Learnings</span>\n <strong>24</strong>\n </div>\n <div className={cssStyles.statCell}>\n <span>New</span>\n <strong>24</strong>\n </div>\n <div className={cssStyles.statCell}>\n <span>Updated</span>\n <strong>-</strong>\n </div>\n </div>\n </div> */}\n </div>\n );\n }\n\n if (id === 'history') {\n return (\n <div className={cssStyles.historyPanel}>\n <div className={cssStyles.historyTableWrapper}>\n <table className={cssStyles.historyTable}>\n <thead>\n <tr>\n <th>Log ID</th>\n <th>Promoted by</th>\n <th>Error Summary</th>\n <th>Change date & time</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n {isLoadingHistory ? (\n <tr>\n <td colSpan={5}>Loading promotion history…</td>\n </tr>\n ) : promotionHistory.length === 0 ? (\n <tr>\n <td colSpan={5}>No promotion history yet.</td>\n </tr>\n ) : (\n promotionHistory.map((row) => (\n <tr key={row.promotion_task_id}>\n <td>{row.promotion_task_id}</td>\n <td>{row.created_by ?? '—'}</td>\n <td>{row.error_summary ?? 'No errors.'}</td>\n <td>{formatPromotionDate(row.updated_at)}</td>\n <td>\n <span className={cssStyles.statusPill}>{row.status}</span>\n </td>\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n </div>\n );\n }\n\n if (id === 'database') {\n return (\n <div className={cssStyles.databaseGrid}>\n <div className={cssStyles.databaseCard}>\n <h3>Source Database : il-otj-35</h3>\n <p>\n <ChevronDown className={cssStyles.inlineChevron} strokeWidth={2} />\n Tables (12)\n </p>\n <ol className={cssStyles.tableList}>\n {TABLE_NAMES.map((name) => (\n <li key={name}>{name}</li>\n ))}\n </ol>\n <button type=\"button\" className={cssStyles.moreTablesButton}>\n +4 more\n </button>\n </div>\n <div className={cssStyles.databaseCard}>\n <h3>Destination Database : il-otj-35</h3>\n <p>\n <ChevronDown className={cssStyles.inlineChevron} strokeWidth={2} />\n Tables (12)\n </p>\n <ol className={cssStyles.tableList}>\n {TABLE_NAMES.map((name) => (\n <li key={name}>{name}</li>\n ))}\n </ol>\n <button type=\"button\" className={cssStyles.moreTablesButton}>\n +4 more\n </button>\n </div>\n </div>\n );\n }\n\n return <div className={cssStyles.emptyBody}>No details available yet.</div>;\n };\n\n return (\n <div className={cx(cssStyles.root, className)}>\n <main className={cssStyles.body}>\n <div className={cssStyles.topRow}>\n <div className={cssStyles.titleGroup}>\n <button type=\"button\" className={cssStyles.backButton} onClick={handleBack}>\n <ArrowLeft className={cssStyles.buttonIcon} strokeWidth={2.2} />\n Back\n </button>\n <h1 className={cssStyles.title}>{title}</h1>\n {/* Promotion environment progress is temporarily hidden.\n <nav className={cssStyles.stepper} aria-label=\"Promotion progress\">\n {PROMOTE_STEPS.map((step, index) => (\n <div className={cssStyles.stepItem} key={step}>\n {index === 0 ? (\n <span className={cssStyles.stepPill}>\n <span className={cssStyles.stepPillDot} />\n {step}\n </span>\n ) : (\n <>\n <span className={cssStyles.stepIndicator} />\n <span className={cssStyles.stepLabel}>{step}</span>\n </>\n )}\n {index < PROMOTE_STEPS.length - 1 && <span className={cssStyles.stepConnector} />}\n </div>\n ))}\n </nav>\n */}\n </div>\n\n <div className={cssStyles.ctaRow}>\n {isPromoting ? (\n <>\n {canRetryPromotion && (\n <button\n type=\"button\"\n className={cssStyles.primaryButton}\n onClick={handlePromoteNow}\n disabled={!canPromote}\n >\n <ArrowUpRight className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {isSubmitting ? 'Starting promotion…' : promoteActionLabel}\n </button>\n )}\n <button type=\"button\" className={cssStyles.primaryButton} onClick={handleBack}>\n <ArrowDownUp className={cssStyles.buttonIcon} strokeWidth={2.2} />\n Go to Marketplace\n </button>\n </>\n ) : (\n <>\n {submittingAction !== 'now' && (\n <button\n type=\"button\"\n className={cssStyles.secondaryButton}\n onClick={handlePromoteLater}\n disabled={!canPromote}\n >\n <Calendar className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {submittingAction === 'later' ? 'Scheduling…' : 'Promote later'}\n </button>\n )}\n {submittingAction !== 'later' && (\n <StyledPromoteTooltip\n title={\n canPromote ? '' : 'Configure both source and destination environments first.'\n }\n disableHoverListener={canPromote}\n placement=\"top\"\n arrow\n >\n <button\n type=\"button\"\n className={cssStyles.primaryButton}\n onClick={handlePromoteNow}\n disabled={!canPromote}\n >\n <ArrowUpRight className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {submittingAction === 'now' ? 'Starting promotion…' : promoteActionLabel}\n </button>\n </StyledPromoteTooltip>\n )}\n </>\n )}\n </div>\n </div>\n\n {isPromoting ? (\n <div className={cssStyles.promotionStatusBox}>\n <div className={cssStyles.promotionStatusRow}>\n <div className={cssStyles.promotionStatusRowHeader}>\n <div className={cssStyles.promotionStatusField}>\n <span className={cssStyles.metaLabel}>Promotion Status</span>\n <div className={cssStyles.statusWithPill}>\n <span className={cssStyles.statusValue}>\n {promotionTaskForGuideline?.status ?? 'In Progress'}\n </span>\n {promotionTaskForGuideline?.status === 'MIGRATING' && (\n <span className={cssStyles.ingestingPill}>\n <LoaderCircle className={cssStyles.migrationLoader} aria-hidden=\"true\" />\n Migration in progress\n </span>\n )}\n </div>\n </div>\n <span className={cssStyles.notificationPill}>\n <Bell className={cssStyles.notificationBellIcon} strokeWidth={2} />\n <span>You'll be notified once completed</span>\n </span>\n </div>\n </div>\n <div className={cssStyles.promotionDetailsGrid}>\n <div>\n <div className={cssStyles.metaLabel}>Started At</div>\n <div className={cssStyles.metaValue}>\n {formatPromotionDate(promotionTaskForGuideline?.created_at)}\n </div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>Promoted by</div>\n <div className={cssStyles.metaValue}>{promotedByName ?? '—'}</div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>Promotion Identifier</div>\n <div className={cssStyles.metaValueWithCopy}>\n <div className={cssStyles.copyTooltipWrapper}>\n <button\n type=\"button\"\n className={cssStyles.copyIconButton}\n onClick={() =>\n handleCopyToClipboard(\n promotionTaskForGuideline?.promotion_task_id ?? '',\n 'promo-id'\n )\n }\n aria-label=\"Copy Promotion Identifier\"\n title={copiedId === 'promo-id' ? 'Copied!' : 'Copy'}\n >\n <Copy className={cssStyles.copyIconInline} strokeWidth={2} />\n </button>\n {copiedId === 'promo-id' && (\n <span className={cssStyles.copiedTooltip}>Copied!</span>\n )}\n </div>\n <div className={cssStyles.metaValue}>\n {promotionTaskForGuideline?.promotion_task_id}\n </div>\n </div>\n </div>\n </div>\n {promotionTaskForGuideline?.status === 'SCHEDULED' &&\n promotionTaskForGuideline.trigger_url && (\n <div className={cssStyles.scheduledTrigger}>\n <div>\n <div className={cssStyles.metaLabel}>Scheduled promotion URL</div>\n <button\n type=\"button\"\n className={cssStyles.scheduledTriggerUrl}\n onClick={handleTriggerScheduledPromotion}\n disabled={submittingAction === 'trigger'}\n title={promotionTaskForGuideline.trigger_url}\n >\n <span>{promotionTaskForGuideline.trigger_url}</span>\n <ExternalLink className={cssStyles.urlIcon} strokeWidth={2} />\n </button>\n </div>\n <button\n type=\"button\"\n className={cssStyles.primaryButton}\n onClick={handleTriggerScheduledPromotion}\n disabled={submittingAction === 'trigger'}\n >\n <ArrowUpRight className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {submittingAction === 'trigger' ? 'Starting promotion…' : 'Start promotion'}\n </button>\n </div>\n )}\n {promotionTaskForGuideline?.error_summary && (\n <p className={cssStyles.promotionError}>{promotionTaskForGuideline.error_summary}</p>\n )}\n {errorForGuideline && (\n <p className={cssStyles.promotionError} role=\"alert\">\n {errorForGuideline}\n </p>\n )}\n {/* <div>\n <div className={cssStyles.metaLabel}>Promotion URL</div>\n <div className={cssStyles.urlWithCopyContainer}>\n <div className={cssStyles.copyTooltipWrapper}>\n <button\n type=\"button\"\n className={cx(cssStyles.copyIconButton, cssStyles.copyIconButtonBlue)}\n onClick={() =>\n handleCopyToClipboard(\n 'https://dev.appmod.ai/mode/Data%20Ingest%20Mode/setup?id=01a06c1d-dacc-78d7-a9d8-25c82b1996ae',\n 'promo-url'\n )\n }\n aria-label=\"Copy Promotion URL\"\n title={copiedId === 'promo-url' ? 'Copied!' : 'Copy'}\n >\n <Copy className={cssStyles.copyIconInline} strokeWidth={2} />\n </button>\n {copiedId === 'promo-url' && (\n <span className={cssStyles.copiedTooltip}>Copied!</span>\n )}\n </div>\n <a\n href=\"https://dev.appmod.ai/mode/Data%20Ingest%20Mode/setup?id=01a06c1d-dacc-78d7-a9d8-25c82b1996ae\"\n className={cssStyles.urlLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span>\n https://dev.appmod.ai/mode/Data%20Ingest%20Mode/setup?id=01a06c1d-dacc-78d7-a9d8-25c82b1996ae\n </span>\n <ExternalLink className={cssStyles.urlIcon} strokeWidth={2} />\n </a>\n </div>\n </div> */}\n </div>\n ) : (\n <>\n {errorForGuideline && (\n <p className={cssStyles.promotionError} role=\"alert\">\n {errorForGuideline}\n </p>\n )}\n <section className={cssStyles.accordionList} aria-label=\"Promotion details\">\n {ACCORDIONS.map((item) => {\n const isOpen = Boolean(openSections[item.id]);\n return (\n <div className={cssStyles.accordion} key={item.id}>\n <button\n type=\"button\"\n className={cssStyles.accordionHeader}\n onClick={() => !item.comingSoon && toggleSection(item.id)}\n aria-expanded={isOpen}\n disabled={item.comingSoon}\n >\n <span>{item.title}</span>\n {item.comingSoon && (\n <span className={cssStyles.comingSoonBadge}>Coming soon</span>\n )}\n <ChevronDown\n className={cx(\n cssStyles.accordionIcon,\n isOpen && cssStyles.accordionIconOpen\n )}\n strokeWidth={2.2}\n />\n </button>\n {!item.comingSoon && isOpen && (\n <div className={cssStyles.accordionBody}>{renderAccordionBody(item.id)}</div>\n )}\n </div>\n );\n })}\n </section>\n </>\n )}\n </main>\n <EnvironmentConfigurationModal\n environment={configuredEnvironment}\n initialConfiguration={\n selectedEnvironment\n ? {\n env_name: selectedEnvironment.env_name,\n env_tier: selectedEnvironment.env_tier,\n db_type: selectedEnvironment.db_type,\n host: selectedEnvironment.host,\n port: String(selectedEnvironment.port),\n username: selectedEnvironment.username,\n password: '',\n database_name: selectedEnvironment.database_name,\n is_tenant_db: selectedEnvironment.is_tenant_db,\n }\n : {\n ...EMPTY_ENVIRONMENT_CONFIGURATION,\n env_tier: configuredEnvironment === 'source' ? 'dev' : permittedDestinationTiers[0],\n db_type:\n configuredEnvironment === 'destination' &&\n permittedDestinationTiers[0] === 'external'\n ? 'EXTERNAL'\n : 'INTERNAL',\n }\n }\n permittedTiers={\n configuredEnvironment === 'source' ? permittedSourceTiers : permittedDestinationTiers\n }\n onSave={handleSaveEnvironment}\n onSelectPreset={setEnvironment}\n onPresetTierChange={setConfigSearchTier}\n presetTier={\n configSearchTier ??\n (configuredEnvironment === 'source'\n ? (sourceEnvironment?.env_tier ?? 'dev')\n : (destinationEnvironment?.env_tier ?? permittedDestinationTiers[0]))\n }\n onClose={() => {\n setConfiguredEnvironment(null);\n setConfigSearchTier(null);\n }}\n promotionConfigs={promotionConfigs}\n selectedPromotionConfig={selectedEnvironment}\n isLoadingConfigs={isLoadingConfigs}\n />\n </div>\n );\n}\n"],"names":["_a","_b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PromoteFlow.js","sources":["../../../../src/features/IL-marketplace/PromoteFlow/PromoteFlow.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport Tooltip, { type TooltipProps } from '@mui/material/Tooltip';\nimport { styled } from '@mui/material/styles';\nimport { tooltipClasses } from '@mui/material/Tooltip';\nimport {\n ArrowDownUp,\n ArrowLeft,\n ArrowUpRight,\n Bell,\n Calendar,\n CircleCheck,\n ChevronDown,\n Copy,\n ExternalLink,\n Info,\n LoaderCircle,\n Settings2,\n} from 'lucide-react';\nimport { cx, getGuidelineTitle } from '../utils';\nimport type { FileItem } from '../types/file-item';\nimport { EnvironmentConfigurationModal } from './EnvironmentConfigurationModal';\nimport {\n createEnvironmentConfig,\n checkPromotionPreflight,\n getCWUser,\n getPromotionHistory,\n getPromotionStatus,\n getSchemaPreview,\n rollbackPromotion,\n schedulePromotion,\n searchEnvironmentConfigs,\n startPromotion,\n triggerScheduledPromotion,\n} from './promote-flow.api';\nimport { usePromoteFlowStore } from './promote-flow.store';\nimport type {\n EnvironmentConfiguration,\n EnvironmentRegistryRecord,\n EnvironmentTier,\n PromotionEnvironment,\n PromotionHistoryEntry,\n SchemaPreviewGroup,\n} from './promote-flow.interfaces';\nimport {\n EMPTY_ENVIRONMENT_CONFIGURATION,\n formatPromotionDate,\n getEnvironmentDisplayName,\n getLatestPromotionForEnvironmentPair,\n getPermittedDestinationTiers,\n getPromotionResourceId,\n toCreateEnvironmentConfigRequest,\n toRegistryRecord,\n} from './promote-flow.utils';\nimport cssStyles from './PromoteFlow.module.css';\n//\nconst StyledPromoteTooltip = styled(({ className, ...props }: TooltipProps) => (\n <Tooltip {...props} classes={{ popper: className }} />\n))(() => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: '#161616cf',\n color: '#ffffff',\n fontSize: '12px',\n padding: '7px 11px',\n borderRadius: 6,\n maxWidth: 250,\n textAlign: 'center',\n whiteSpace: 'normal',\n wordBreak: 'break-word',\n lineHeight: 1.5,\n },\n [`& .${tooltipClasses.arrow}`]: {\n color: '#000000',\n },\n}));\n\nexport interface PromoteFlowProps {\n guideline: FileItem;\n onBack?: () => void;\n onPromote?: (guideline: FileItem) => void;\n onSaveDraft?: (guideline: FileItem) => void;\n className?: string;\n}\n\ntype SubmissionAction = 'now' | 'later' | 'trigger' | null;\n\nconst ACCORDIONS = [\n {\n id: 'overview',\n title: 'Overview',\n },\n {\n id: 'history',\n title: 'Promotion History',\n comingSoon: false,\n },\n {\n id: 'database',\n title: 'Database Details',\n comingSoon: false,\n },\n // {\n // id: 'knowledgebase',\n // title: 'Knowledgebase Details',\n // comingSoon: true,\n // },\n];\n//dwwdwd\nconst TABLE_NAMES = [\n 'document_feature_details',\n 'document_feature_terminology',\n 'document_feature_validation',\n 'techo_document_feature',\n 'document_feature_configuration',\n 'document_feature_techme',\n 'document_feature_schema',\n 'document_feature_cognitive_compare',\n];\n\nconst isMissingPromotionStatus = (error: unknown) => {\n if (error instanceof Error && error.message.includes('404')) return true;\n\n return (\n typeof error === 'object' &&\n error !== null &&\n 'response' in error &&\n (error as { response?: { status?: number } }).response?.status === 404\n );\n};\n\nexport function PromoteFlow({ guideline, onBack, onPromote, className }: PromoteFlowProps) {\n const [openSections, setOpenSections] = useState<Record<string, boolean>>({\n overview: true,\n });\n const [copiedId, setCopiedId] = useState<string | null>(null);\n const [configuredEnvironment, setConfiguredEnvironment] = useState<PromotionEnvironment | null>(\n null\n );\n const [promotedByName, setPromotedByName] = useState<string | null>(null);\n const [promotionHistory, setPromotionHistory] = useState<PromotionHistoryEntry[]>([]);\n const [schemaPreview, setSchemaPreview] = useState<Record<string, SchemaPreviewGroup>>({});\n const [isLoadingSchemaPreview, setIsLoadingSchemaPreview] = useState(false);\n const [isLoadingHistory, setIsLoadingHistory] = useState(false);\n const [promotionConfigs, setPromotionConfigs] = useState<EnvironmentRegistryRecord[]>([]);\n const [isLoadingConfigs, setIsLoadingConfigs] = useState(false);\n const [configSearchTier, setConfigSearchTier] = useState<EnvironmentTier | null>(null);\n const [submittingAction, setSubmittingAction] = useState<SubmissionAction>(null);\n const [historyActionTaskId, setHistoryActionTaskId] = useState<string | null>(null);\n const [isStatusPollingStopped, setIsStatusPollingStopped] = useState(false);\n const [isInitialStatusLoading, setIsInitialStatusLoading] = useState(true);\n const [isCheckingPreflight, setIsCheckingPreflight] = useState(false);\n const [preflightResult, setPreflightResult] = useState<{\n ready: boolean;\n itemsChecked: number;\n itemsReady: number;\n } | null>(null);\n const sourceEnvironment = usePromoteFlowStore((state) => state.sourceEnvironment);\n const destinationEnvironment = usePromoteFlowStore((state) => state.destinationEnvironment);\n const tenantSourceEnvironment = usePromoteFlowStore((state) => state.tenantSourceEnvironment);\n const tenantDestinationEnvironment = usePromoteFlowStore(\n (state) => state.tenantDestinationEnvironment\n );\n const promotionTask = usePromoteFlowStore((state) => state.promotionTask);\n const promotionResourceId = usePromoteFlowStore((state) => state.promotionResourceId);\n const isSubmitting = usePromoteFlowStore((state) => state.isSubmitting);\n const error = usePromoteFlowStore((state) => state.error);\n const errorResourceId = usePromoteFlowStore((state) => state.errorResourceId);\n const setEnvironment = usePromoteFlowStore((state) => state.setEnvironment);\n const setPromotionTask = usePromoteFlowStore((state) => state.setPromotionTask);\n const setSubmitting = usePromoteFlowStore((state) => state.setSubmitting);\n const setError = usePromoteFlowStore((state) => state.setError);\n const resetPromotionSession = usePromoteFlowStore((state) => state.resetPromotionSession);\n const title = getGuidelineTitle(guideline);\n const versionLabel = guideline.version ? `v${guideline.version}` : 'v1';\n const statusLabel = guideline.status ?? 'Published';\n const guidelineResourceId = getPromotionResourceId(guideline);\n const promotionTaskForGuideline =\n promotionResourceId === guidelineResourceId ? promotionTask : null;\n const errorForGuideline = errorResourceId === guidelineResourceId ? error : null;\n const isSourceConfigured = Boolean(sourceEnvironment);\n const isDestinationConfigured = Boolean(destinationEnvironment);\n const canPromote =\n isSourceConfigured &&\n isDestinationConfigured &&\n !isSubmitting &&\n !isInitialStatusLoading;\n const sourceEnvironmentLabel = getEnvironmentDisplayName(sourceEnvironment, 'Dev');\n const destinationEnvironmentLabel = getEnvironmentDisplayName(destinationEnvironment, 'QA');\n const tenantSourceEnvironmentLabel = getEnvironmentDisplayName(tenantSourceEnvironment, '—');\n const tenantDestinationEnvironmentLabel = getEnvironmentDisplayName(\n tenantDestinationEnvironment,\n '—'\n );\n const isPromoting = Boolean(promotionTaskForGuideline);\n const canRetryPromotion = promotionTaskForGuideline?.status === 'FAILED';\n const sourceTier = sourceEnvironment?.env_tier ?? 'dev';\n const permittedDestinationTiers = useMemo(\n () => getPermittedDestinationTiers(sourceTier),\n [sourceTier]\n );\n const permittedSourceTiers: EnvironmentTier[] = ['dev', 'qa', 'prod', 'external'];\n const selectedEnvironment =\n configuredEnvironment === 'source'\n ? sourceEnvironment\n : configuredEnvironment === 'destination'\n ? destinationEnvironment\n : configuredEnvironment === 'tenantSource'\n ? tenantSourceEnvironment\n : tenantDestinationEnvironment;\n const latestPromotionForPair = useMemo(\n () =>\n getLatestPromotionForEnvironmentPair(\n promotionHistory,\n sourceEnvironment,\n destinationEnvironment\n ),\n [destinationEnvironment, promotionHistory, sourceEnvironment]\n );\n const latestPromotionTaskId = useMemo(() => {\n const latestPromotion = promotionHistory.reduce<PromotionHistoryEntry | null>(\n (latest, entry) => {\n if (!latest) return entry;\n\n return Date.parse(entry.updated_at) > Date.parse(latest.updated_at) ? entry : latest;\n },\n null\n );\n\n return latestPromotion?.promotion_task_id ?? null;\n }, [promotionHistory]);\n const promoteActionLabel = latestPromotionForPair?.status === 'SUCCESS' ? 'Sync' : 'Promote Now';\n\n const toggleSection = (id: string) => {\n setOpenSections((current) => ({ ...current, [id]: !current[id] }));\n };\n\n useEffect(() => {\n let isCurrent = true;\n setIsLoadingHistory(true);\n setIsInitialStatusLoading(true);\n setError(null);\n // The entry status call only clears stale backend state. Details are shown\n // only after an explicit promotion action or a View details selection.\n setPromotionTask(null);\n\n const refreshInitialPromotionState = async () => {\n try {\n // Entering this view refreshes backend state before a promote, schedule,\n // or rollback action is available; it must not open the status card.\n await getPromotionStatus(guidelineResourceId);\n } catch (statusError) {\n // A resource with no promotion returns 404. This is an expected state,\n // not a user-facing error.\n if (isCurrent && !isMissingPromotionStatus(statusError)) {\n setError(\n statusError instanceof Error\n ? statusError.message\n : 'Unable to refresh promotion status.',\n guidelineResourceId\n );\n }\n } finally {\n if (isCurrent) setIsInitialStatusLoading(false);\n }\n\n try {\n const history = await getPromotionHistory(guidelineResourceId);\n if (isCurrent) setPromotionHistory(history);\n } catch (historyError) {\n if (isCurrent) {\n setError(\n historyError instanceof Error\n ? historyError.message\n : 'Unable to load promotion history.',\n guidelineResourceId\n );\n }\n } finally {\n if (isCurrent) setIsLoadingHistory(false);\n }\n };\n\n void refreshInitialPromotionState();\n\n return () => {\n isCurrent = false;\n };\n }, [guidelineResourceId, setError, setPromotionTask]);\n\n useEffect(() => {\n let isCurrent = true;\n setIsLoadingSchemaPreview(true);\n getSchemaPreview(guidelineResourceId)\n .then((preview) => {\n if (!isCurrent) return;\n setSchemaPreview(\n Object.entries(preview ?? {}).reduce<Record<string, SchemaPreviewGroup>>((groups, [key, value]) => {\n if (value && Array.isArray(value.tables)) groups[key] = value;\n return groups;\n }, {})\n );\n })\n .catch((schemaError) => {\n if (isCurrent) {\n console.error('Failed to load schema preview', { resourceId: guidelineResourceId, schemaError });\n setSchemaPreview({});\n }\n })\n .finally(() => {\n if (isCurrent) setIsLoadingSchemaPreview(false);\n });\n\n return () => {\n isCurrent = false;\n };\n }, [guidelineResourceId]);\n\n useEffect(() => {\n if (!configuredEnvironment) return;\n\n const selectedEnvironment =\n configuredEnvironment === 'source'\n ? (sourceEnvironment?.env_tier ?? 'dev')\n : configuredEnvironment === 'destination'\n ? (destinationEnvironment?.env_tier ?? permittedDestinationTiers[0])\n : configuredEnvironment === 'tenantSource'\n ? (tenantSourceEnvironment?.env_tier ?? 'dev')\n : (tenantDestinationEnvironment?.env_tier ?? permittedDestinationTiers[0]);\n const defaultTier = selectedEnvironment;\n const envTier = configSearchTier ?? defaultTier;\n let isCurrent = true;\n setIsLoadingConfigs(true);\n setPromotionConfigs([]);\n searchEnvironmentConfigs({\n env_tier: envTier,\n db_type: envTier === 'external' ? 'EXTERNAL' : 'INTERNAL',\n is_tenant:\n configuredEnvironment === 'tenantSource' || configuredEnvironment === 'tenantDestination',\n })\n .then((configs) => {\n if (isCurrent) setPromotionConfigs(configs);\n })\n .catch(() => {\n // Pre-configured environments are optional. A transport failure here must not\n // be presented as a promotion failure on the main screen.\n if (isCurrent) setPromotionConfigs([]);\n })\n .finally(() => {\n if (isCurrent) setIsLoadingConfigs(false);\n });\n\n return () => {\n isCurrent = false;\n };\n }, [\n configSearchTier,\n configuredEnvironment,\n destinationEnvironment?.env_tier,\n guidelineResourceId,\n permittedDestinationTiers,\n sourceEnvironment?.env_tier,\n tenantDestinationEnvironment?.env_tier,\n tenantSourceEnvironment?.env_tier,\n ]);\n\n useEffect(() => {\n const promotedByEmail = promotionTaskForGuideline?.created_by;\n if (!promotedByEmail) {\n setPromotedByName(null);\n return;\n }\n\n let isCurrent = true;\n setPromotedByName(promotedByEmail);\n\n getCWUser(promotedByEmail)\n .then((userResponse) => {\n const user = userResponse.data ?? userResponse;\n const fullName = [user.firstname, user.lastname].filter(Boolean).join(' ').trim();\n if (isCurrent) setPromotedByName(fullName || user.user_name || promotedByEmail);\n })\n .catch(() => {\n if (isCurrent) setPromotedByName(promotedByEmail);\n });\n\n return () => {\n isCurrent = false;\n };\n }, [promotionTaskForGuideline?.created_by, promotionTaskForGuideline?.promotion_task_id]);\n\n useEffect(() => {\n if (\n !promotionTaskForGuideline ||\n isStatusPollingStopped ||\n !['MIGRATING', 'ROLLBACK_IN_PROGRESS'].includes(promotionTaskForGuideline.status)\n ) {\n return;\n }\n\n const pollStatus = async () => {\n try {\n setPromotionTask(await getPromotionStatus(guidelineResourceId), guidelineResourceId);\n } catch (pollError) {\n setIsStatusPollingStopped(true);\n setError(\n pollError instanceof Error ? pollError.message : 'Unable to refresh promotion status.',\n guidelineResourceId\n );\n }\n };\n\n const intervalId = window.setInterval(pollStatus, 30_000);\n return () => window.clearInterval(intervalId);\n }, [guidelineResourceId, isStatusPollingStopped, promotionTaskForGuideline, setError, setPromotionTask]);\n\n const handlePromoteNow = async () => {\n if (!canPromote || !sourceEnvironment || !destinationEnvironment) return;\n\n setSubmitting(true);\n setSubmittingAction('now');\n setError(null);\n try {\n const task = await startPromotion({\n resource_id: getPromotionResourceId(guideline),\n resource_type: 'PACKAGE',\n target_version: 'latest',\n global_source_env_id: sourceEnvironment.env_id,\n global_target_env_id: destinationEnvironment.env_id,\n ...(tenantSourceEnvironment && tenantDestinationEnvironment\n ? {\n tenant_source_env_id: tenantSourceEnvironment.env_id,\n tenant_target_env_id: tenantDestinationEnvironment.env_id,\n }\n : {}),\n });\n setIsStatusPollingStopped(false);\n setPromotionTask(task, guidelineResourceId);\n // Refresh immediately so the backend's resource status is current before\n // the history view is next requested.\n try {\n setPromotionTask(await getPromotionStatus(guidelineResourceId), guidelineResourceId);\n } catch {\n // Promotion has already started successfully. Normal polling will retry\n // this status lookup without presenting a false promotion failure.\n }\n onPromote?.(guideline);\n } catch (promotionError) {\n setError(\n promotionError instanceof Error ? promotionError.message : 'Unable to start promotion.',\n guidelineResourceId\n );\n } finally {\n setSubmitting(false);\n setSubmittingAction(null);\n }\n };\n\n const handlePreflightCheck = async () => {\n if (!sourceEnvironment || !destinationEnvironment || isCheckingPreflight) return;\n\n setIsCheckingPreflight(true);\n setPreflightResult(null);\n setError(null);\n try {\n const result = await checkPromotionPreflight({\n resource_id: guidelineResourceId,\n resource_type: 'PACKAGE',\n target_version: 'latest',\n global_source_env_id: sourceEnvironment.env_id,\n global_target_env_id: destinationEnvironment.env_id,\n ...(tenantSourceEnvironment && tenantDestinationEnvironment\n ? {\n tenant_source_env_id: tenantSourceEnvironment.env_id,\n tenant_target_env_id: tenantDestinationEnvironment.env_id,\n }\n : {}),\n });\n setPreflightResult({\n ready: result.ready,\n itemsChecked: result.items_checked,\n itemsReady: result.items_ready,\n });\n } catch (preflightError) {\n setError(\n preflightError instanceof Error\n ? preflightError.message\n : 'Unable to complete pre-flight check.',\n guidelineResourceId\n );\n } finally {\n setIsCheckingPreflight(false);\n }\n };\n\n const handleSaveEnvironment = async (\n environment: PromotionEnvironment,\n configuration: EnvironmentConfiguration\n ) => {\n const isTenantEnvironment =\n environment === 'tenantSource' || environment === 'tenantDestination';\n const configurationToSave = {\n ...configuration,\n is_tenant_db: isTenantEnvironment,\n };\n const response = await createEnvironmentConfig(\n toCreateEnvironmentConfigRequest(configurationToSave)\n );\n setEnvironment(environment, toRegistryRecord(response.env_id, configurationToSave));\n };\n\n const openEnvironmentConfiguration = (environment: PromotionEnvironment) => {\n const selected =\n environment === 'source'\n ? sourceEnvironment\n : environment === 'destination'\n ? destinationEnvironment\n : environment === 'tenantSource'\n ? tenantSourceEnvironment\n : tenantDestinationEnvironment;\n setConfigSearchTier(\n selected?.env_tier ??\n (environment === 'source' || environment === 'tenantSource'\n ? 'dev'\n : permittedDestinationTiers[0])\n );\n setConfiguredEnvironment(environment);\n };\n\n const handlePromoteLater = async () => {\n if (!canPromote || !sourceEnvironment || !destinationEnvironment) return;\n\n setSubmitting(true);\n setSubmittingAction('later');\n setError(null);\n try {\n const scheduledPromotion = await schedulePromotion({\n resource_id: guidelineResourceId,\n resource_type: 'PACKAGE',\n target_version: 'latest',\n global_source_env_id: sourceEnvironment.env_id,\n global_target_env_id: destinationEnvironment.env_id,\n ...(tenantSourceEnvironment && tenantDestinationEnvironment\n ? {\n tenant_source_env_id: tenantSourceEnvironment.env_id,\n tenant_target_env_id: tenantDestinationEnvironment.env_id,\n }\n : {}),\n });\n const now = new Date().toISOString();\n setPromotionTask(\n {\n ...scheduledPromotion,\n source_env: sourceEnvironmentLabel,\n target_env: destinationEnvironmentLabel,\n transferred_records_count: 0,\n transferred_tables_count: 0,\n error_summary: null,\n created_at: scheduledPromotion.created_at ?? now,\n updated_at: scheduledPromotion.updated_at ?? now,\n },\n guidelineResourceId\n );\n onPromote?.(guideline);\n } catch (promotionError) {\n setError(\n promotionError instanceof Error ? promotionError.message : 'Unable to schedule promotion.',\n guidelineResourceId\n );\n } finally {\n setSubmitting(false);\n setSubmittingAction(null);\n }\n };\n\n const handleTriggerScheduledPromotion = async () => {\n const triggerUrl = promotionTaskForGuideline?.trigger_url;\n if (!triggerUrl) return;\n\n setSubmitting(true);\n setSubmittingAction('trigger');\n setError(null);\n try {\n const task = await triggerScheduledPromotion(triggerUrl);\n setIsStatusPollingStopped(false);\n setPromotionTask(task, guidelineResourceId);\n try {\n setPromotionTask(await getPromotionStatus(guidelineResourceId), guidelineResourceId);\n } catch {\n // The scheduled promotion has started; polling will retry the status lookup.\n }\n onPromote?.(guideline);\n } catch (promotionError) {\n setError(\n promotionError instanceof Error\n ? promotionError.message\n : 'Unable to start the scheduled promotion.',\n guidelineResourceId\n );\n } finally {\n setSubmitting(false);\n setSubmittingAction(null);\n }\n };\n\n const handleViewPromotionDetails = async (promotionTaskId: string) => {\n setHistoryActionTaskId(promotionTaskId);\n setError(null);\n try {\n // The status endpoint is scoped to the ILKB resource and returns its latest task.\n setIsStatusPollingStopped(false);\n setPromotionTask(await getPromotionStatus(guidelineResourceId), guidelineResourceId);\n } catch (statusError) {\n setError(\n statusError instanceof Error ? statusError.message : 'Unable to load promotion details.',\n guidelineResourceId\n );\n } finally {\n setHistoryActionTaskId(null);\n }\n };\n\n const handleRollbackPromotion = async (promotionTaskId: string) => {\n setHistoryActionTaskId(promotionTaskId);\n setError(null);\n try {\n const task = await rollbackPromotion(promotionTaskId);\n setIsStatusPollingStopped(false);\n setPromotionTask(task, guidelineResourceId);\n } catch (rollbackError) {\n setError(\n rollbackError instanceof Error ? rollbackError.message : 'Unable to start rollback.',\n guidelineResourceId\n );\n } finally {\n setHistoryActionTaskId(null);\n }\n };\n\n const handleBack = () => {\n // A promotion status is rendered in place of the accordion overview. Back\n // from that status should restore the overview the user promoted from,\n // rather than leave the Promote flow altogether.\n if (promotionTaskForGuideline) {\n setPromotionTask(null);\n return;\n }\n\n handleGoToMarketplace();\n };\n\n const handleGoToMarketplace = () => {\n if (promotionTaskForGuideline?.status === 'FAILED') {\n resetPromotionSession();\n }\n\n if (onBack) {\n onBack();\n return;\n }\n\n window.history.back();\n };\n\n const handleCopyToClipboard = async (text: string, id: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopiedId(id);\n // Reset copied state after 2 seconds\n setTimeout(() => setCopiedId(null), 2000);\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n };\n\n const renderAccordionBody = (id: string) => {\n if (id === 'overview') {\n return (\n <div className={cssStyles.overviewPanel}>\n <div className={cssStyles.overviewGrid}>\n <div>\n <div className={cssStyles.environmentHeading}>\n <span className={cssStyles.metaLabel}>Source Environment</span>\n <button\n type=\"button\"\n className={cx(\n cssStyles.configureEnvironmentButton,\n !isSourceConfigured && cssStyles.configureEnvironmentButtonRequired\n )}\n aria-label=\"Configure source environment\"\n data-tooltip=\"Configure source environment\"\n onClick={() => openEnvironmentConfiguration('source')}\n >\n <Settings2 aria-hidden=\"true\" strokeWidth={2} />\n </button>\n </div>\n <div className={cssStyles.metaValue}>{sourceEnvironmentLabel}</div>\n </div>\n <div>\n <div className={cssStyles.environmentHeading}>\n <span className={cssStyles.metaLabel}>Destination Environment</span>\n <button\n type=\"button\"\n className={cx(\n cssStyles.configureEnvironmentButton,\n !isDestinationConfigured && cssStyles.configureEnvironmentButtonRequired\n )}\n aria-label=\"Configure destination environment\"\n data-tooltip=\"Configure destination environment\"\n onClick={() => openEnvironmentConfiguration('destination')}\n >\n <Settings2 aria-hidden=\"true\" strokeWidth={2} />\n </button>\n </div>\n <div className={cssStyles.metaValue}>{destinationEnvironmentLabel}</div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>ILKB status</div>\n <div className={cssStyles.metaValue}>{statusLabel}</div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>Version</div>\n <span className={cssStyles.versionPill}>{versionLabel}</span>\n </div>\n <div>\n <div className={cssStyles.environmentHeading}>\n <span className={cssStyles.metaLabel}>Tenant Source Environment (optional)</span>\n <button\n type=\"button\"\n className={cssStyles.configureEnvironmentButton}\n aria-label=\"Configure tenant source environment\"\n data-tooltip=\"Configure tenant source environment\"\n onClick={() => openEnvironmentConfiguration('tenantSource')}\n >\n <Settings2 aria-hidden=\"true\" strokeWidth={2} />\n </button>\n </div>\n <div className={cssStyles.metaValue}>{tenantSourceEnvironmentLabel}</div>\n </div>\n <div>\n <div className={cssStyles.environmentHeading}>\n <span className={cssStyles.metaLabel}>Tenant Database Environment (optional)</span>\n <button\n type=\"button\"\n className={cssStyles.configureEnvironmentButton}\n aria-label=\"Configure tenant database environment\"\n data-tooltip=\"Configure tenant database environment\"\n onClick={() => openEnvironmentConfiguration('tenantDestination')}\n >\n <Settings2 aria-hidden=\"true\" strokeWidth={2} />\n </button>\n </div>\n <div className={cssStyles.metaValue}>{tenantDestinationEnvironmentLabel}</div>\n </div>\n </div>\n {/* <div>\n <div className={cssStyles.metaLabel}>Promotion Statistics</div>\n <div className={cssStyles.statsGrid}>\n <div className={cssStyles.statCell}>\n <span>Total Learnings</span>\n <strong>24</strong>\n </div>\n <div className={cssStyles.statCell}>\n <span>New</span>\n <strong>24</strong>\n </div>\n <div className={cssStyles.statCell}>\n <span>Updated</span>\n <strong>-</strong>\n </div>\n </div>\n </div> */}\n </div>\n );\n }\n\n if (id === 'history') {\n return (\n <div className={cssStyles.historyPanel}>\n <div className={cssStyles.historyTableWrapper}>\n <table className={cssStyles.historyTable}>\n <thead>\n <tr>\n <th>Log ID</th>\n <th>Promoted by</th>\n <th>Error Summary</th>\n <th>Change date & time</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n {isLoadingHistory ? (\n <tr>\n <td colSpan={5}>Loading promotion history…</td>\n </tr>\n ) : promotionHistory.length === 0 ? (\n <tr>\n <td colSpan={5}>No promotion history yet.</td>\n </tr>\n ) : (\n promotionHistory.map((row) => {\n const canRollback =\n row.status === 'SUCCESS' && row.promotion_task_id === latestPromotionTaskId;\n\n return (\n <tr key={row.promotion_task_id}>\n <td>{row.promotion_task_id}</td>\n <td>{row.created_by ?? '—'}</td>\n <td>{row.error_summary ?? 'No errors.'}</td>\n <td>{formatPromotionDate(row.updated_at)}</td>\n <td>\n <span className={cssStyles.statusPill}>{row.status}</span>\n <button\n type=\"button\"\n className={cx(\n cssStyles.tableActionButton,\n canRollback && cssStyles.tableActionButtonDanger\n )}\n onClick={() =>\n canRollback\n ? handleRollbackPromotion(row.promotion_task_id)\n : handleViewPromotionDetails(row.promotion_task_id)\n }\n disabled={isInitialStatusLoading || historyActionTaskId !== null}\n >\n {historyActionTaskId === row.promotion_task_id\n ? canRollback\n ? 'Rolling back…'\n : 'Loading…'\n : canRollback\n ? 'Rollback'\n : 'View details'}\n </button>\n </td>\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n </div>\n );\n }\n\n if (id === 'database') {\n if (isLoadingSchemaPreview) return <div className={cssStyles.emptyBody}>Loading database details…</div>;\n const groups = Object.entries(schemaPreview);\n if (groups.length === 0) return <div className={cssStyles.emptyBody}>No database details available.</div>;\n\n return (\n <div className={cssStyles.databaseGrid}>\n {groups.flatMap(([groupName, group]) =>\n (['Source', 'Destination'] as const).map((environment) => (\n <div className={cssStyles.databaseCard} key={`${groupName}-${environment}`}>\n <h3>{environment} Database: {group.database_name}</h3>\n <p>\n <ChevronDown className={cssStyles.inlineChevron} strokeWidth={2} />\n {groupName} · {group.schema} · Tables ({group.tables.length})\n </p>\n <ol className={cssStyles.tableList}>\n {group.tables.map((name) => <li key={`${groupName}-${environment}-${name}`}>{name}</li>)}\n </ol>\n </div>\n ))\n )}\n </div>\n );\n }\n\n return <div className={cssStyles.emptyBody}>No details available yet.</div>;\n };\n\n return (\n <div className={cx(cssStyles.root, className)}>\n <main className={cssStyles.body}>\n <div className={cssStyles.topRow}>\n <div className={cssStyles.titleGroup}>\n <button type=\"button\" className={cssStyles.backButton} onClick={handleBack}>\n <ArrowLeft className={cssStyles.buttonIcon} strokeWidth={2.2} />\n Back\n </button>\n <h1 className={cssStyles.title}>{title}</h1>\n {/* Promotion environment progress is temporarily hidden.\n <nav className={cssStyles.stepper} aria-label=\"Promotion progress\">\n {PROMOTE_STEPS.map((step, index) => (\n <div className={cssStyles.stepItem} key={step}>\n {index === 0 ? (\n <span className={cssStyles.stepPill}>\n <span className={cssStyles.stepPillDot} />\n {step}\n </span>\n ) : (\n <>\n <span className={cssStyles.stepIndicator} />\n <span className={cssStyles.stepLabel}>{step}</span>\n </>\n )}\n {index < PROMOTE_STEPS.length - 1 && <span className={cssStyles.stepConnector} />}\n </div>\n ))}\n </nav>\n */}\n </div>\n\n <div className={cssStyles.ctaRow}>\n <div className={cssStyles.preflightAction}>\n <StyledPromoteTooltip\n title={\n canPromote\n ? 'Optionally check that this migration is ready before promoting.'\n : 'Configure both source and destination environments first.'\n }\n placement=\"top\"\n arrow\n >\n <button\n type=\"button\"\n className={cssStyles.secondaryButton}\n onClick={handlePreflightCheck}\n disabled={!canPromote || isCheckingPreflight}\n >\n <CircleCheck className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {isCheckingPreflight ? 'Checking readiness…' : 'Check promotion readiness'}\n </button>\n </StyledPromoteTooltip>\n <StyledPromoteTooltip\n title=\"Runs a safe validation of the selected source and destination environments. It does not start a migration.\"\n placement=\"top\"\n arrow\n >\n <span className={cssStyles.preflightInfo} aria-label=\"About the pre-flight check\">\n <Info className={cssStyles.helpIcon} strokeWidth={2.2} aria-hidden=\"true\" />\n </span>\n </StyledPromoteTooltip>\n </div>\n {isPromoting ? (\n <>\n {canRetryPromotion && (\n <button\n type=\"button\"\n className={cssStyles.primaryButton}\n onClick={handlePromoteNow}\n disabled={!canPromote}\n >\n <ArrowUpRight className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {isSubmitting ? 'Starting promotion…' : promoteActionLabel}\n </button>\n )}\n <button\n type=\"button\"\n className={cssStyles.primaryButton}\n onClick={handleGoToMarketplace}\n >\n <ArrowDownUp className={cssStyles.buttonIcon} strokeWidth={2.2} />\n Go to Marketplace\n </button>\n </>\n ) : (\n <>\n {submittingAction !== 'now' && (\n <button\n type=\"button\"\n className={cssStyles.secondaryButton}\n onClick={handlePromoteLater}\n disabled={!canPromote}\n >\n <Calendar className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {submittingAction === 'later' ? 'Scheduling…' : 'Promote later'}\n </button>\n )}\n {submittingAction !== 'later' && (\n <StyledPromoteTooltip\n title={\n canPromote ? '' : 'Configure both source and destination environments first.'\n }\n disableHoverListener={canPromote}\n placement=\"top\"\n arrow\n >\n <button\n type=\"button\"\n className={cssStyles.primaryButton}\n onClick={handlePromoteNow}\n disabled={!canPromote}\n >\n <ArrowUpRight className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {submittingAction === 'now' ? 'Starting promotion…' : promoteActionLabel}\n </button>\n </StyledPromoteTooltip>\n )}\n </>\n )}\n </div>\n </div>\n\n {preflightResult && (\n <div className={cssStyles.preflightSuccess} role=\"status\">\n Pre-flight check completed successfully.{' '}\n {preflightResult.ready\n ? `Migration is ready (${preflightResult.itemsReady}/${preflightResult.itemsChecked} checks passed).`\n : `Migration readiness requires attention (${preflightResult.itemsReady}/${preflightResult.itemsChecked} checks passed).`}\n </div>\n )}\n\n {isPromoting ? (\n <div className={cssStyles.promotionStatusBox}>\n <div className={cssStyles.promotionStatusRow}>\n <div className={cssStyles.promotionStatusRowHeader}>\n <div className={cssStyles.promotionStatusField}>\n <span className={cssStyles.metaLabel}>Promotion Status</span>\n <div className={cssStyles.statusWithPill}>\n <span className={cssStyles.statusValue}>\n {promotionTaskForGuideline?.status ?? 'In Progress'}\n </span>\n {promotionTaskForGuideline?.status === 'MIGRATING' && (\n <span className={cssStyles.ingestingPill}>\n <LoaderCircle className={cssStyles.migrationLoader} aria-hidden=\"true\" />\n Migration in progress\n </span>\n )}\n </div>\n </div>\n <span className={cssStyles.notificationPill}>\n <Bell className={cssStyles.notificationBellIcon} strokeWidth={2} />\n <span>You'll be notified once completed</span>\n </span>\n </div>\n </div>\n <div className={cssStyles.promotionDetailsGrid}>\n <div>\n <div className={cssStyles.metaLabel}>Started At</div>\n <div className={cssStyles.metaValue}>\n {formatPromotionDate(promotionTaskForGuideline?.created_at)}\n </div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>Promoted by</div>\n <div className={cssStyles.metaValue}>{promotedByName ?? '—'}</div>\n </div>\n <div>\n <div className={cssStyles.metaLabel}>Promotion Identifier</div>\n <div className={cssStyles.metaValueWithCopy}>\n <div className={cssStyles.copyTooltipWrapper}>\n <button\n type=\"button\"\n className={cssStyles.copyIconButton}\n onClick={() =>\n handleCopyToClipboard(\n promotionTaskForGuideline?.promotion_task_id ?? '',\n 'promo-id'\n )\n }\n aria-label=\"Copy Promotion Identifier\"\n title={copiedId === 'promo-id' ? 'Copied!' : 'Copy'}\n >\n <Copy className={cssStyles.copyIconInline} strokeWidth={2} />\n </button>\n {copiedId === 'promo-id' && (\n <span className={cssStyles.copiedTooltip}>Copied!</span>\n )}\n </div>\n <div className={cssStyles.metaValue}>\n {promotionTaskForGuideline?.promotion_task_id}\n </div>\n </div>\n </div>\n </div>\n {promotionTaskForGuideline?.view_detail_url && (\n <div className={cssStyles.promotionDetailsLink}>\n <div className={cssStyles.metaLabel}>Promotion details</div>\n <a\n className={cssStyles.urlLink}\n href={promotionTaskForGuideline.view_detail_url}\n target=\"_blank\"\n rel=\"noreferrer\"\n title={promotionTaskForGuideline.view_detail_url}\n >\n <span>{promotionTaskForGuideline.view_detail_url}</span>\n <ExternalLink className={cssStyles.urlIcon} strokeWidth={2} />\n </a>\n </div>\n )}\n {promotionTaskForGuideline?.status === 'SCHEDULED' &&\n promotionTaskForGuideline.trigger_url && (\n <div className={cssStyles.scheduledTrigger}>\n <div>\n <div className={cssStyles.metaLabel}>Scheduled promotion URL</div>\n <button\n type=\"button\"\n className={cssStyles.scheduledTriggerUrl}\n onClick={handleTriggerScheduledPromotion}\n disabled={isInitialStatusLoading || submittingAction === 'trigger'}\n title={promotionTaskForGuideline.trigger_url}\n >\n <span>{promotionTaskForGuideline.trigger_url}</span>\n <ExternalLink className={cssStyles.urlIcon} strokeWidth={2} />\n </button>\n </div>\n <button\n type=\"button\"\n className={cssStyles.primaryButton}\n onClick={handleTriggerScheduledPromotion}\n disabled={isInitialStatusLoading || submittingAction === 'trigger'}\n >\n <ArrowUpRight className={cssStyles.buttonIcon} strokeWidth={2.2} />\n {submittingAction === 'trigger' ? 'Starting promotion…' : 'Start promotion'}\n </button>\n </div>\n )}\n {promotionTaskForGuideline?.error_summary && (\n <p className={cssStyles.promotionError}>{promotionTaskForGuideline.error_summary}</p>\n )}\n {errorForGuideline && (\n <p className={cssStyles.promotionError} role=\"alert\">\n {errorForGuideline}\n </p>\n )}\n {/* <div>\n <div className={cssStyles.metaLabel}>Promotion URL</div>\n <div className={cssStyles.urlWithCopyContainer}>\n <div className={cssStyles.copyTooltipWrapper}>\n <button\n type=\"button\"\n className={cx(cssStyles.copyIconButton, cssStyles.copyIconButtonBlue)}\n onClick={() =>\n handleCopyToClipboard(\n 'https://dev.appmod.ai/mode/Data%20Ingest%20Mode/setup?id=01a06c1d-dacc-78d7-a9d8-25c82b1996ae',\n 'promo-url'\n )\n }\n aria-label=\"Copy Promotion URL\"\n title={copiedId === 'promo-url' ? 'Copied!' : 'Copy'}\n >\n <Copy className={cssStyles.copyIconInline} strokeWidth={2} />\n </button>\n {copiedId === 'promo-url' && (\n <span className={cssStyles.copiedTooltip}>Copied!</span>\n )}\n </div>\n <a\n href=\"https://dev.appmod.ai/mode/Data%20Ingest%20Mode/setup?id=01a06c1d-dacc-78d7-a9d8-25c82b1996ae\"\n className={cssStyles.urlLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span>\n https://dev.appmod.ai/mode/Data%20Ingest%20Mode/setup?id=01a06c1d-dacc-78d7-a9d8-25c82b1996ae\n </span>\n <ExternalLink className={cssStyles.urlIcon} strokeWidth={2} />\n </a>\n </div>\n </div> */}\n </div>\n ) : (\n <>\n {errorForGuideline && (\n <p className={cssStyles.promotionError} role=\"alert\">\n {errorForGuideline}\n </p>\n )}\n <section className={cssStyles.accordionList} aria-label=\"Promotion details\">\n {ACCORDIONS.map((item) => {\n const isOpen = Boolean(openSections[item.id]);\n return (\n <div className={cssStyles.accordion} key={item.id}>\n <button\n type=\"button\"\n className={cssStyles.accordionHeader}\n onClick={() => !item.comingSoon && toggleSection(item.id)}\n aria-expanded={isOpen}\n disabled={item.comingSoon}\n >\n <span>{item.title}</span>\n {item.comingSoon && (\n <span className={cssStyles.comingSoonBadge}>Coming soon</span>\n )}\n <ChevronDown\n className={cx(\n cssStyles.accordionIcon,\n isOpen && cssStyles.accordionIconOpen\n )}\n strokeWidth={2.2}\n />\n </button>\n {!item.comingSoon && isOpen && (\n <div className={cssStyles.accordionBody}>{renderAccordionBody(item.id)}</div>\n )}\n </div>\n );\n })}\n </section>\n </>\n )}\n </main>\n <EnvironmentConfigurationModal\n environment={configuredEnvironment}\n initialConfiguration={\n selectedEnvironment\n ? {\n env_name: selectedEnvironment.env_name,\n env_tier: selectedEnvironment.env_tier,\n db_type: selectedEnvironment.db_type,\n host: selectedEnvironment.host,\n port: String(selectedEnvironment.port),\n username: selectedEnvironment.username,\n password: '',\n database_name: selectedEnvironment.database_name,\n is_tenant_db: selectedEnvironment.is_tenant_db,\n }\n : {\n ...EMPTY_ENVIRONMENT_CONFIGURATION,\n env_tier:\n configuredEnvironment === 'source' || configuredEnvironment === 'tenantSource'\n ? 'dev'\n : permittedDestinationTiers[0],\n db_type:\n (configuredEnvironment === 'destination' ||\n configuredEnvironment === 'tenantDestination') &&\n permittedDestinationTiers[0] === 'external'\n ? 'EXTERNAL'\n : 'INTERNAL',\n is_tenant_db:\n configuredEnvironment === 'tenantSource' ||\n configuredEnvironment === 'tenantDestination',\n }\n }\n permittedTiers={\n configuredEnvironment === 'source' || configuredEnvironment === 'tenantSource'\n ? permittedSourceTiers\n : permittedDestinationTiers\n }\n onSave={handleSaveEnvironment}\n onSelectPreset={setEnvironment}\n onPresetTierChange={setConfigSearchTier}\n presetTier={\n configSearchTier ??\n (configuredEnvironment === 'source'\n ? (sourceEnvironment?.env_tier ?? 'dev')\n : configuredEnvironment === 'destination'\n ? (destinationEnvironment?.env_tier ?? permittedDestinationTiers[0])\n : configuredEnvironment === 'tenantSource'\n ? (tenantSourceEnvironment?.env_tier ?? 'dev')\n : (tenantDestinationEnvironment?.env_tier ?? permittedDestinationTiers[0]))\n }\n onClose={() => {\n setConfiguredEnvironment(null);\n setConfigSearchTier(null);\n }}\n promotionConfigs={promotionConfigs}\n selectedPromotionConfig={selectedEnvironment}\n isLoadingConfigs={isLoadingConfigs}\n />\n </div>\n );\n}\n"],"names":["_a","_b","_c","_d","selectedEnvironment"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import styleInject from '../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".PromoteFlow-module_root__gqGfx{background-color:var(--il-color-f9fafb,#f9fafb);color:var(--il-color-19213d,#19213d);display:flex;flex-direction:column;font-family:var(--il-font-family,Inter,sans-serif);height:100%;min-height:0}.PromoteFlow-module_title__hZxg6{color:var(--il-color-1f2937,#1f2937);font-size:var(--il-font-size-lg,20px);font-weight:var(--il-font-weight-semibold,600);line-height:1.75rem;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_body__TllTh{display:flex;flex:1 1 auto;flex-direction:column;gap:1rem;min-height:0;overflow-y:auto;padding:1.5rem 2rem}.PromoteFlow-module_topRow__DcKME{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between}.PromoteFlow-module_titleGroup__-KBzO{min-width:0}.PromoteFlow-module_backButton__YKJma{align-items:center;background:transparent;border:0;color:var(--il-color-475467,#475467);cursor:pointer;display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.375rem;margin-bottom:.5rem;padding:0}.PromoteFlow-module_backButton__YKJma:hover{color:var(--il-color-1f2937,#1f2937)}.PromoteFlow-module_stepper__kqpWN{align-items:center;display:flex;margin-top:.75rem;max-width:100%;width:fit-content}.PromoteFlow-module_stepItem__WlKEK{align-items:center;display:flex;flex:0 1 auto;min-width:0}.PromoteFlow-module_stepItem__WlKEK:last-child{flex:0 1 auto}.PromoteFlow-module_stepIndicator__uF0Fv{align-items:center;background-color:var(--il-color-98a2b3,#98a2b3);border:none;border-radius:9999px;display:inline-flex;flex-shrink:0;height:.375rem;justify-content:center;width:.375rem}.PromoteFlow-module_stepPill__av2nE{align-items:center;background-color:var(--il-color-dcfce7,#dcfce7);border:1px solid var(--il-color-86efac,#86efac);border-radius:6px;color:var(--il-color-15803d,#15803d);display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.375rem;height:1.5rem;padding:0 .625rem}.PromoteFlow-module_stepPillDot__hYbNK{background-color:currentColor;border-radius:9999px;height:.25rem;width:.25rem}.PromoteFlow-module_stepLabel__ImMuL{color:var(--il-color-667085,#667085);font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);margin-left:.375rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_stepConnector__mq9X9{background-color:var(--il-color-cbd5e1,#cbd5e1);flex:0 0 auto;height:1px;margin:0 .5rem;width:2.5rem}.PromoteFlow-module_ctaRow__VdPQn{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.625rem;justify-content:flex-end}.PromoteFlow-module_primaryButton__X4QtV,.PromoteFlow-module_secondaryButton__VQNnz{align-items:center;border-radius:6px;cursor:pointer;display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-semibold,600);gap:.5rem;height:2.5rem;justify-content:center;padding:.5rem 1rem;white-space:nowrap;width:fit-content}.PromoteFlow-module_primaryButton__X4QtV{background-color:var(--il-color-5b2cf4,#5b2cf4);border:1px solid var(--il-color-5b2cf4,#5b2cf4);color:var(--il-color-ffffff,#fff)}.PromoteFlow-module_primaryButton__X4QtV:hover{background-color:var(--il-color-4c22d6,#4c22d6)}.PromoteFlow-module_primaryButton__X4QtV:disabled{background-color:var(--il-color-e4e7ec,#e4e7ec);border-color:var(--il-color-d0d5dd,#d0d5dd);color:var(--il-color-98a2b3,#98a2b3);cursor:not-allowed}.PromoteFlow-module_secondaryButton__VQNnz{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d0d5dd,#d0d5dd);color:var(--il-color-344054,#344054)}.PromoteFlow-module_secondaryButton__VQNnz:hover{background-color:var(--il-color-f9fafb,#f9fafb)}.PromoteFlow-module_accordionHeader__PKCQL:disabled,.PromoteFlow-module_secondaryButton__VQNnz:disabled{cursor:not-allowed}.PromoteFlow-module_secondaryButton__VQNnz:disabled{background-color:var(--il-color-f9fafb,#f9fafb);color:var(--il-color-667085,#667085)}.PromoteFlow-module_buttonIcon__t-Mih{flex-shrink:0;height:1rem;width:1rem}.PromoteFlow-module_helpIcon__9kj7N{color:var(--il-color-98a2b3,#98a2b3);flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_accordionList__QKiHy{display:flex;flex-direction:column;gap:.75rem}.PromoteFlow-module_accordion__cGLUd{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-eaecf0,#eaecf0);border-radius:8px}.PromoteFlow-module_accordionHeader__PKCQL{align-items:center;background:transparent;border:none;color:var(--il-color-344054,#344054);cursor:pointer;display:flex;font-size:var(--il-font-size-md,15px);font-weight:var(--il-font-weight-semibold,600);gap:1rem;justify-content:space-between;padding:1rem;text-align:left;width:100%}.PromoteFlow-module_accordionHeader__PKCQL>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_comingSoonBadge__Ntczn{background-color:var(--il-color-f2f4f7,#f2f4f7);border-radius:9999px;flex-shrink:0;font-size:.75rem;line-height:1;padding:.25rem .5rem}.PromoteFlow-module_accordionAction__Ml8Zb,.PromoteFlow-module_comingSoonBadge__Ntczn{align-items:center;color:var(--il-color-475467,#475467);display:inline-flex;font-weight:var(--il-font-weight-medium,500);white-space:nowrap}.PromoteFlow-module_accordionAction__Ml8Zb{border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;font-size:var(--il-font-size-sm,14px);gap:.5rem;height:2.25rem;margin-left:auto;padding:0 .75rem}.PromoteFlow-module_accordionActionIcon__Tyfh3{flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_accordionIcon__hpIiN{flex-shrink:0;height:1rem;transition:transform .15s ease;width:1rem}.PromoteFlow-module_accordionIconOpen__BnuS8{transform:rotate(180deg)}.PromoteFlow-module_accordionBody__vwx2c{border-top:1px solid var(--il-color-eaecf0,#eaecf0);color:var(--il-color-475467,#475467);font-size:var(--il-font-size-sm,14px);line-height:1.5;padding:1rem}.PromoteFlow-module_overviewPanel__Zk68D{border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:8px;display:flex;flex-direction:column;gap:1.5rem;padding:1rem}.PromoteFlow-module_overviewGrid__ETogw{display:grid;gap:1rem;grid-template-columns:repeat(4,minmax(0,1fr))}.PromoteFlow-module_metaLabel__8fn-7{color:var(--il-color-475467,#475467);font-size:var(--il-font-size-sm,14px)}.PromoteFlow-module_environmentHeading__c-6Ou{align-items:center;display:inline-flex;gap:.375rem}.PromoteFlow-module_configureEnvironmentButton__9E94Z{align-items:center;background:transparent;border:0;border-radius:.25rem;color:var(--il-color-667085,#667085);cursor:pointer;display:inline-flex;justify-content:center;padding:.125rem;position:relative}.PromoteFlow-module_configureEnvironmentButton__9E94Z svg{height:.875rem;width:.875rem}.PromoteFlow-module_configureEnvironmentButton__9E94Z:hover{color:var(--il-color-5b2cf4,#5b2cf4)}.PromoteFlow-module_configureEnvironmentButtonRequired__xc4X9{background:var(--il-color-fffbfa,#fffbfa);border:1px solid var(--il-color-fda29b,#fda29b);box-shadow:0 0 0 3px rgba(217,45,32,.1);color:var(--il-color-b42318,#b42318)}.PromoteFlow-module_configureEnvironmentButtonRequired__xc4X9:hover{color:var(--il-color-b42318,#b42318)}.PromoteFlow-module_promotionError__TcrW5{background:var(--il-color-fffbfa,#fffbfa);border:1px solid var(--il-color-fda29b,#fda29b);border-radius:.375rem;color:var(--il-color-b42318,#b42318);font-size:var(--il-font-size-sm,14px);margin:0;padding:.75rem 1rem}.PromoteFlow-module_configureEnvironmentButton__9E94Z:after{background:var(--il-color-344054,#344054);border-radius:.375rem;bottom:calc(100% + .5rem);color:#fff;content:attr(data-tooltip);font-size:.75rem;left:50%;line-height:1rem;max-width:14rem;opacity:0;padding:.375rem .5rem;pointer-events:none;position:absolute;transform:translateX(-50%);transition:opacity .15s ease;white-space:nowrap;width:max-content;z-index:2}.PromoteFlow-module_configureEnvironmentButton__9E94Z:focus-visible:after,.PromoteFlow-module_configureEnvironmentButton__9E94Z:hover:after{opacity:1}.PromoteFlow-module_metaValue__HlSsf{color:var(--il-color-101828,#101828);font-weight:var(--il-font-weight-medium,500);margin-top:.25rem}.PromoteFlow-module_versionPill__2Rdbk{background-color:var(--il-color-f8fafc,#f8fafc);border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;color:var(--il-color-475467,#475467);display:inline-flex;margin-top:.25rem;padding:.125rem .5rem}.PromoteFlow-module_urlLink__rxqSl{align-items:center;color:var(--il-color-155eef,#155eef);display:inline-flex;gap:.375rem;max-width:100%;min-width:0;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_urlIcon__jgxVE{flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_statsGrid__h3Zsl{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:.625rem}.PromoteFlow-module_statCell__jhnJE{background-color:var(--il-color-f8fafc,#f8fafc);border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:6px;display:flex;flex-direction:column;gap:.25rem;min-width:0;padding:.75rem 1rem}.PromoteFlow-module_statCell__jhnJE+.PromoteFlow-module_statCell__jhnJE{border-left:1px solid var(--il-color-e3e8ef,#e3e8ef)}.PromoteFlow-module_statCell__jhnJE span{color:var(--il-color-475467,#475467)}.PromoteFlow-module_statCell__jhnJE strong{color:var(--il-color-101828,#101828);font-size:var(--il-font-size-md,16px)}.PromoteFlow-module_historyPanel__C6U-W{background-color:var(--il-color-f8fafc,#f8fafc);border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:8px;overflow:hidden}.PromoteFlow-module_historyToolbar__iwqQx{display:grid;gap:.75rem;grid-template-columns:minmax(14rem,1fr) auto auto auto;padding:1rem}.PromoteFlow-module_searchBox__EPjKE{align-items:center;background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-cfd8e3,#cfd8e3);border-radius:6px;display:flex;gap:.5rem;height:2.5rem;min-width:0;padding:0 .75rem}.PromoteFlow-module_searchBox__EPjKE input{background:transparent;border:none;color:var(--il-color-344054,#344054);flex:1 1 auto;font-size:var(--il-font-size-md,16px);min-width:0;outline:none}.PromoteFlow-module_searchBox__EPjKE input::placeholder{color:var(--il-color-98a2b3,#98a2b3)}.PromoteFlow-module_inputIcon__qr6Bp,.PromoteFlow-module_toolbarIcon__q-XqU{color:var(--il-color-475467,#475467);flex-shrink:0;height:1rem;width:1rem}.PromoteFlow-module_toolbarButton__Vm4-e{align-items:center;background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;color:var(--il-color-475467,#475467);cursor:pointer;display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.5rem;height:2.5rem;justify-content:center;padding:0 .875rem;white-space:nowrap}.PromoteFlow-module_historyTableWrapper__8GIi4{overflow-x:auto}.PromoteFlow-module_historyTable__F-MuL{background-color:var(--il-color-ffffff,#fff);border-collapse:collapse;color:var(--il-color-101828,#101828);min-width:58rem;width:100%}.PromoteFlow-module_historyTable__F-MuL td,.PromoteFlow-module_historyTable__F-MuL th{border-top:1px solid var(--il-color-e3e8ef,#e3e8ef);padding:1rem 1.25rem;text-align:center;vertical-align:middle;white-space:pre-line}.PromoteFlow-module_historyTable__F-MuL th{background-color:var(--il-color-f8fafc,#f8fafc);color:var(--il-color-667085,#667085);font-weight:var(--il-font-weight-semibold,600)}.PromoteFlow-module_statusPill__ZDXky{align-items:center;background-color:var(--il-color-dcfce7,#dcfce7);border:1px solid var(--il-color-86efac,#86efac);border-radius:9999px;color:var(--il-color-15803d,#15803d);display:inline-flex;font-weight:var(--il-font-weight-medium,500);padding:.125rem .625rem}.PromoteFlow-module_tableActionButton__PkB2v{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;color:var(--il-color-475467,#475467);cursor:pointer;font-weight:var(--il-font-weight-medium,500);height:2.5rem;padding:0 1rem}.PromoteFlow-module_tableActionButtonDanger__8VLsq{border-color:var(--il-color-fca5a5,#fca5a5);color:var(--il-color-ef4444,#ef4444)}.PromoteFlow-module_databaseGrid__Ai-4t{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.PromoteFlow-module_databaseCard__uMMyE{border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:8px;min-width:0;padding:.875rem}.PromoteFlow-module_databaseCard__uMMyE h3{color:var(--il-color-344054,#344054);font-size:var(--il-font-size-md,16px);font-weight:var(--il-font-weight-medium,500);margin:0}.PromoteFlow-module_databaseCard__uMMyE p,.PromoteFlow-module_emptyBody__t3lpZ{color:var(--il-color-475467,#475467);margin:.75rem 0 0}.PromoteFlow-module_databaseCard__uMMyE p{align-items:center;color:var(--il-color-101828,#101828);display:flex;gap:.375rem}.PromoteFlow-module_inlineChevron__oFz2Z{flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_tableList__HYD9T{background-color:var(--il-color-f8fafc,#f8fafc);border-radius:8px;color:var(--il-color-475467,#475467);line-height:1.45;margin:.5rem 0 0;padding:.75rem .75rem .75rem 2rem}.PromoteFlow-module_moreTablesButton__BLL-R{background:none;border:none;color:var(--il-color-4d21f3,#4d21f3);cursor:pointer;font-weight:var(--il-font-weight-medium,500);margin-top:.375rem}.PromoteFlow-module_promotionStatusBox__HPWiW{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:8px;display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1rem;padding:1.5rem 2rem}.PromoteFlow-module_promotionStatusRow__6JMP-{display:flex;flex-direction:column;gap:.5rem}.PromoteFlow-module_promotionStatusRowHeader__XIieX{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between}.PromoteFlow-module_promotionStatusField__5-LIT{display:flex;flex-direction:column;gap:.5rem}.PromoteFlow-module_statusWithPill__YjWR3{align-items:center;display:flex;gap:.75rem}.PromoteFlow-module_statusValue__-0o-U{color:var(--il-color-101828,#101828);font-weight:var(--il-font-weight-medium,500)}.PromoteFlow-module_ingestingPill__acAIF{align-items:center;background-color:var(--il-color-fef3c7,#fef3c7);border:1px solid var(--il-color-fcd34d,#fcd34d);border-radius:9999px;color:var(--il-color-92400e,#92400e);display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.375rem;padding:.25rem .75rem;white-space:nowrap}.PromoteFlow-module_migrationLoader__kbID5{animation:PromoteFlow-module_promotion-spin__jteN8 .8s linear infinite;height:.875rem;width:.875rem}@keyframes PromoteFlow-module_promotion-spin__jteN8{to{transform:rotate(1turn)}}.PromoteFlow-module_notificationPill__qxzxd{align-items:center;background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d0d5dd,#d0d5dd);border-radius:9999px;display:inline-flex;flex-shrink:0;gap:.5rem;padding:.375rem .75rem;white-space:nowrap}.PromoteFlow-module_notificationBellIcon__Gnymu{color:var(--il-color-475467,#475467);flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_notificationPill__qxzxd span{color:var(--il-color-475467,#475467);font-size:var(--il-font-size-xs,12px);font-weight:var(--il-font-weight-medium,500);line-height:1.5}.PromoteFlow-module_metaValueWithCopy__-bcL9{align-items:center;display:inline-flex;gap:.375rem}.PromoteFlow-module_copyIconButton__ldDyf{align-items:center;background:none;border:none;color:var(--il-color-475467,#475467);cursor:pointer;display:inline-flex;flex-shrink:0;height:auto;justify-content:center;padding:0;width:auto}.PromoteFlow-module_copyIconButton__ldDyf:hover{color:var(--il-color-344054,#344054)}.PromoteFlow-module_copyIconButtonBlue__-Gp6G{color:var(--il-color-155eef,#155eef)}.PromoteFlow-module_copyIconButtonBlue__-Gp6G:hover{color:var(--il-color-124cc4,#124cc4)}.PromoteFlow-module_copyIconInline__DIzY6{flex-shrink:0;height:1rem;width:1rem}.PromoteFlow-module_copyTooltipWrapper__MOxrW{align-items:center;display:inline-flex;position:relative}.PromoteFlow-module_copiedTooltip__Wc6v7{background-color:var(--il-color-1f2937,#1f2937);border-radius:4px;bottom:100%;color:var(--il-color-ffffff,#fff);font-size:var(--il-font-size-xs,12px);left:50%;margin-bottom:.5rem;padding:.375rem .75rem;pointer-events:none;position:absolute;transform:translateX(-50%);white-space:nowrap;z-index:1000}.PromoteFlow-module_copiedTooltip__Wc6v7:after{border:4px solid transparent;border-top:4px solid var(--il-color-1f2937,#1f2937);content:\"\";left:50%;position:absolute;top:100%;transform:translateX(-50%)}.PromoteFlow-module_urlWithCopyContainer__2q3h2{align-items:center;display:flex;gap:.5rem}.PromoteFlow-module_urlLinkWithCopy__tmy8C{align-items:center;color:var(--il-color-155eef,#155eef);display:inline-flex;gap:.375rem;text-decoration:none}.PromoteFlow-module_promotionDetailsGrid__eK-Zl{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr))}.PromoteFlow-module_scheduledTrigger__7RkKd{align-items:end;border-top:1px solid var(--il-color-e3e8ef,#e3e8ef);display:flex;gap:1rem;justify-content:space-between;margin-top:1.25rem;padding-top:1rem}.PromoteFlow-module_scheduledTriggerUrl__uDMcb{align-items:center;background:transparent;border:0;color:var(--il-color-155eef,#155eef);cursor:pointer;display:inline-flex;font:inherit;gap:.375rem;margin-top:.25rem;max-width:100%;padding:0;text-align:left}.PromoteFlow-module_scheduledTriggerUrl__uDMcb span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_scheduledTriggerUrl__uDMcb:hover span{text-decoration:underline}.PromoteFlow-module_scheduledTriggerUrl__uDMcb:disabled{cursor:wait;opacity:.65}@media (max-width:760px){.PromoteFlow-module_body__TllTh,.PromoteFlow-module_header__bdIDh{padding:1rem}.PromoteFlow-module_topRow__DcKME{flex-direction:column}.PromoteFlow-module_title__hZxg6{white-space:normal}.PromoteFlow-module_stepper__kqpWN{flex-wrap:wrap;row-gap:.5rem}.PromoteFlow-module_stepItem__WlKEK,.PromoteFlow-module_stepItem__WlKEK:last-child{flex:none;width:100%}.PromoteFlow-module_stepConnector__mq9X9{display:none}.PromoteFlow-module_ctaRow__VdPQn{justify-content:stretch;width:100%}.PromoteFlow-module_primaryButton__X4QtV,.PromoteFlow-module_secondaryButton__VQNnz{flex:1 1 fit-content}.PromoteFlow-module_databaseGrid__Ai-4t,.PromoteFlow-module_historyToolbar__iwqQx,.PromoteFlow-module_overviewGrid__ETogw,.PromoteFlow-module_statsGrid__h3Zsl{grid-template-columns:1fr}.PromoteFlow-module_promotionStatusBox__HPWiW{padding:1rem}.PromoteFlow-module_promotionStatusRowHeader__XIieX{align-items:flex-start;flex-direction:column}.PromoteFlow-module_notificationPill__qxzxd{justify-content:flex-start;width:100%}.PromoteFlow-module_promotionDetailsGrid__eK-Zl{grid-template-columns:1fr}.PromoteFlow-module_metaValueWithCopy__-bcL9{flex-wrap:wrap}.PromoteFlow-module_urlWithCopyContainer__2q3h2{align-items:flex-start;flex-direction:column}.PromoteFlow-module_copyTooltipWrapper__MOxrW{margin-bottom:.5rem}.PromoteFlow-module_copiedTooltip__Wc6v7{bottom:auto;margin-bottom:0;margin-top:.5rem;top:100%}.PromoteFlow-module_copiedTooltip__Wc6v7:after{border-bottom-color:var(--il-color-1f2937,#1f2937);border-top-color:transparent;bottom:100%;top:auto}.PromoteFlow-module_scheduledTrigger__7RkKd{align-items:stretch;flex-direction:column}}";
|
|
4
|
-
var cssStyles = {"root":"PromoteFlow-module_root__gqGfx","title":"PromoteFlow-module_title__hZxg6","body":"PromoteFlow-module_body__TllTh","topRow":"PromoteFlow-module_topRow__DcKME","titleGroup":"PromoteFlow-module_titleGroup__-KBzO","backButton":"PromoteFlow-module_backButton__YKJma","stepper":"PromoteFlow-module_stepper__kqpWN","stepItem":"PromoteFlow-module_stepItem__WlKEK","stepIndicator":"PromoteFlow-module_stepIndicator__uF0Fv","stepPill":"PromoteFlow-module_stepPill__av2nE","stepPillDot":"PromoteFlow-module_stepPillDot__hYbNK","stepLabel":"PromoteFlow-module_stepLabel__ImMuL","stepConnector":"PromoteFlow-module_stepConnector__mq9X9","ctaRow":"PromoteFlow-module_ctaRow__VdPQn","primaryButton":"PromoteFlow-module_primaryButton__X4QtV","secondaryButton":"PromoteFlow-module_secondaryButton__VQNnz","accordionHeader":"PromoteFlow-module_accordionHeader__PKCQL","buttonIcon":"PromoteFlow-module_buttonIcon__t-Mih","helpIcon":"PromoteFlow-module_helpIcon__9kj7N","accordionList":"PromoteFlow-module_accordionList__QKiHy","accordion":"PromoteFlow-module_accordion__cGLUd","comingSoonBadge":"PromoteFlow-module_comingSoonBadge__Ntczn","accordionAction":"PromoteFlow-module_accordionAction__Ml8Zb","accordionActionIcon":"PromoteFlow-module_accordionActionIcon__Tyfh3","accordionIcon":"PromoteFlow-module_accordionIcon__hpIiN","accordionIconOpen":"PromoteFlow-module_accordionIconOpen__BnuS8","accordionBody":"PromoteFlow-module_accordionBody__vwx2c","overviewPanel":"PromoteFlow-module_overviewPanel__Zk68D","overviewGrid":"PromoteFlow-module_overviewGrid__ETogw","metaLabel":"PromoteFlow-module_metaLabel__8fn-7","environmentHeading":"PromoteFlow-module_environmentHeading__c-6Ou","configureEnvironmentButton":"PromoteFlow-module_configureEnvironmentButton__9E94Z","configureEnvironmentButtonRequired":"PromoteFlow-module_configureEnvironmentButtonRequired__xc4X9","promotionError":"PromoteFlow-module_promotionError__TcrW5","metaValue":"PromoteFlow-module_metaValue__HlSsf","versionPill":"PromoteFlow-module_versionPill__2Rdbk","urlLink":"PromoteFlow-module_urlLink__rxqSl","urlIcon":"PromoteFlow-module_urlIcon__jgxVE","statsGrid":"PromoteFlow-module_statsGrid__h3Zsl","statCell":"PromoteFlow-module_statCell__jhnJE","historyPanel":"PromoteFlow-module_historyPanel__C6U-W","historyToolbar":"PromoteFlow-module_historyToolbar__iwqQx","searchBox":"PromoteFlow-module_searchBox__EPjKE","inputIcon":"PromoteFlow-module_inputIcon__qr6Bp","toolbarIcon":"PromoteFlow-module_toolbarIcon__q-XqU","toolbarButton":"PromoteFlow-module_toolbarButton__Vm4-e","historyTableWrapper":"PromoteFlow-module_historyTableWrapper__8GIi4","historyTable":"PromoteFlow-module_historyTable__F-MuL","statusPill":"PromoteFlow-module_statusPill__ZDXky","tableActionButton":"PromoteFlow-module_tableActionButton__PkB2v","tableActionButtonDanger":"PromoteFlow-module_tableActionButtonDanger__8VLsq","databaseGrid":"PromoteFlow-module_databaseGrid__Ai-4t","databaseCard":"PromoteFlow-module_databaseCard__uMMyE","emptyBody":"PromoteFlow-module_emptyBody__t3lpZ","inlineChevron":"PromoteFlow-module_inlineChevron__oFz2Z","tableList":"PromoteFlow-module_tableList__HYD9T","moreTablesButton":"PromoteFlow-module_moreTablesButton__BLL-R","promotionStatusBox":"PromoteFlow-module_promotionStatusBox__HPWiW","promotionStatusRow":"PromoteFlow-module_promotionStatusRow__6JMP-","promotionStatusRowHeader":"PromoteFlow-module_promotionStatusRowHeader__XIieX","promotionStatusField":"PromoteFlow-module_promotionStatusField__5-LIT","statusWithPill":"PromoteFlow-module_statusWithPill__YjWR3","statusValue":"PromoteFlow-module_statusValue__-0o-U","ingestingPill":"PromoteFlow-module_ingestingPill__acAIF","migrationLoader":"PromoteFlow-module_migrationLoader__kbID5","promotion-spin":"PromoteFlow-module_promotion-spin__jteN8","notificationPill":"PromoteFlow-module_notificationPill__qxzxd","notificationBellIcon":"PromoteFlow-module_notificationBellIcon__Gnymu","metaValueWithCopy":"PromoteFlow-module_metaValueWithCopy__-bcL9","copyIconButton":"PromoteFlow-module_copyIconButton__ldDyf","copyIconButtonBlue":"PromoteFlow-module_copyIconButtonBlue__-Gp6G","copyIconInline":"PromoteFlow-module_copyIconInline__DIzY6","copyTooltipWrapper":"PromoteFlow-module_copyTooltipWrapper__MOxrW","copiedTooltip":"PromoteFlow-module_copiedTooltip__Wc6v7","urlWithCopyContainer":"PromoteFlow-module_urlWithCopyContainer__2q3h2","urlLinkWithCopy":"PromoteFlow-module_urlLinkWithCopy__tmy8C","promotionDetailsGrid":"PromoteFlow-module_promotionDetailsGrid__eK-Zl","scheduledTrigger":"PromoteFlow-module_scheduledTrigger__7RkKd","scheduledTriggerUrl":"PromoteFlow-module_scheduledTriggerUrl__uDMcb","header":"PromoteFlow-module_header__bdIDh"};
|
|
3
|
+
var css_248z = ".PromoteFlow-module_root__gqGfx{background-color:var(--il-color-f9fafb,#f9fafb);color:var(--il-color-19213d,#19213d);display:flex;flex-direction:column;font-family:var(--il-font-family,Inter,sans-serif);height:100%;min-height:0}.PromoteFlow-module_title__hZxg6{color:var(--il-color-1f2937,#1f2937);font-size:var(--il-font-size-lg,20px);font-weight:var(--il-font-weight-semibold,600);line-height:1.75rem;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_body__TllTh{display:flex;flex:1 1 auto;flex-direction:column;gap:1rem;min-height:0;overflow-y:auto;padding:1.5rem 2rem}.PromoteFlow-module_topRow__DcKME{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between}.PromoteFlow-module_titleGroup__-KBzO{min-width:0}.PromoteFlow-module_backButton__YKJma{align-items:center;background:transparent;border:0;color:var(--il-color-475467,#475467);cursor:pointer;display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.375rem;margin-bottom:.5rem;padding:0}.PromoteFlow-module_backButton__YKJma:hover{color:var(--il-color-1f2937,#1f2937)}.PromoteFlow-module_stepper__kqpWN{align-items:center;display:flex;margin-top:.75rem;max-width:100%;width:fit-content}.PromoteFlow-module_stepItem__WlKEK{align-items:center;display:flex;flex:0 1 auto;min-width:0}.PromoteFlow-module_stepItem__WlKEK:last-child{flex:0 1 auto}.PromoteFlow-module_stepIndicator__uF0Fv{align-items:center;background-color:var(--il-color-98a2b3,#98a2b3);border:none;border-radius:9999px;display:inline-flex;flex-shrink:0;height:.375rem;justify-content:center;width:.375rem}.PromoteFlow-module_stepPill__av2nE{align-items:center;background-color:var(--il-color-dcfce7,#dcfce7);border:1px solid var(--il-color-86efac,#86efac);border-radius:6px;color:var(--il-color-15803d,#15803d);display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.375rem;height:1.5rem;padding:0 .625rem}.PromoteFlow-module_stepPillDot__hYbNK{background-color:currentColor;border-radius:9999px;height:.25rem;width:.25rem}.PromoteFlow-module_stepLabel__ImMuL{color:var(--il-color-667085,#667085);font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);margin-left:.375rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_stepConnector__mq9X9{background-color:var(--il-color-cbd5e1,#cbd5e1);flex:0 0 auto;height:1px;margin:0 .5rem;width:2.5rem}.PromoteFlow-module_ctaRow__VdPQn{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.625rem;justify-content:flex-end}.PromoteFlow-module_preflightAction__urODG{align-items:center;display:inline-flex;gap:.375rem}.PromoteFlow-module_preflightInfo__pD0gU{align-items:center;color:var(--il-color-667085,#667085);cursor:help;display:inline-flex}.PromoteFlow-module_preflightSuccess__ifbiu{background:var(--il-color-dcfce7,#dcfce7);border:1px solid;border-color:var(--il-color-86efac,#86efac);border-radius:6px;color:var(--il-color-15803d,#15803d);font-size:var(--il-font-size-sm,14px);line-height:1.25rem;padding:.75rem 1rem}.PromoteFlow-module_primaryButton__X4QtV,.PromoteFlow-module_secondaryButton__VQNnz{align-items:center;border-radius:6px;cursor:pointer;display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-semibold,600);gap:.5rem;height:2.5rem;justify-content:center;padding:.5rem 1rem;white-space:nowrap;width:fit-content}.PromoteFlow-module_primaryButton__X4QtV{background-color:var(--il-color-5b2cf4,#5b2cf4);border:1px solid var(--il-color-5b2cf4,#5b2cf4);color:var(--il-color-ffffff,#fff)}.PromoteFlow-module_primaryButton__X4QtV:hover{background-color:var(--il-color-4c22d6,#4c22d6)}.PromoteFlow-module_primaryButton__X4QtV:disabled{background-color:var(--il-color-e4e7ec,#e4e7ec);border-color:var(--il-color-d0d5dd,#d0d5dd);color:var(--il-color-98a2b3,#98a2b3);cursor:not-allowed}.PromoteFlow-module_secondaryButton__VQNnz{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d0d5dd,#d0d5dd);color:var(--il-color-344054,#344054)}.PromoteFlow-module_secondaryButton__VQNnz:hover{background-color:var(--il-color-f9fafb,#f9fafb)}.PromoteFlow-module_accordionHeader__PKCQL:disabled,.PromoteFlow-module_secondaryButton__VQNnz:disabled{cursor:not-allowed}.PromoteFlow-module_secondaryButton__VQNnz:disabled{background-color:var(--il-color-f9fafb,#f9fafb);color:var(--il-color-667085,#667085)}.PromoteFlow-module_buttonIcon__t-Mih{flex-shrink:0;height:1rem;width:1rem}.PromoteFlow-module_helpIcon__9kj7N{color:var(--il-color-98a2b3,#98a2b3);flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_accordionList__QKiHy{display:flex;flex-direction:column;gap:.75rem}.PromoteFlow-module_accordion__cGLUd{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-eaecf0,#eaecf0);border-radius:8px}.PromoteFlow-module_accordionHeader__PKCQL{align-items:center;background:transparent;border:none;color:var(--il-color-344054,#344054);cursor:pointer;display:flex;font-size:var(--il-font-size-md,15px);font-weight:var(--il-font-weight-semibold,600);gap:1rem;justify-content:space-between;padding:1rem;text-align:left;width:100%}.PromoteFlow-module_accordionHeader__PKCQL>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_comingSoonBadge__Ntczn{background-color:var(--il-color-f2f4f7,#f2f4f7);border-radius:9999px;flex-shrink:0;font-size:.75rem;line-height:1;padding:.25rem .5rem}.PromoteFlow-module_accordionAction__Ml8Zb,.PromoteFlow-module_comingSoonBadge__Ntczn{align-items:center;color:var(--il-color-475467,#475467);display:inline-flex;font-weight:var(--il-font-weight-medium,500);white-space:nowrap}.PromoteFlow-module_accordionAction__Ml8Zb{border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;font-size:var(--il-font-size-sm,14px);gap:.5rem;height:2.25rem;margin-left:auto;padding:0 .75rem}.PromoteFlow-module_accordionActionIcon__Tyfh3{flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_accordionIcon__hpIiN{flex-shrink:0;height:1rem;transition:transform .15s ease;width:1rem}.PromoteFlow-module_accordionIconOpen__BnuS8{transform:rotate(180deg)}.PromoteFlow-module_accordionBody__vwx2c{border-top:1px solid var(--il-color-eaecf0,#eaecf0);color:var(--il-color-475467,#475467);font-size:var(--il-font-size-sm,14px);line-height:1.5;padding:1rem}.PromoteFlow-module_overviewPanel__Zk68D{border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:8px;display:flex;flex-direction:column;gap:1.5rem;padding:1rem}.PromoteFlow-module_overviewGrid__ETogw{display:grid;gap:1rem;grid-template-columns:repeat(4,minmax(0,1fr))}.PromoteFlow-module_metaLabel__8fn-7{color:var(--il-color-475467,#475467);font-size:var(--il-font-size-sm,14px)}.PromoteFlow-module_environmentHeading__c-6Ou{align-items:center;display:inline-flex;gap:.375rem}.PromoteFlow-module_configureEnvironmentButton__9E94Z{align-items:center;background:transparent;border:0;border-radius:.25rem;color:var(--il-color-667085,#667085);cursor:pointer;display:inline-flex;justify-content:center;padding:.125rem;position:relative}.PromoteFlow-module_configureEnvironmentButton__9E94Z svg{height:.875rem;width:.875rem}.PromoteFlow-module_configureEnvironmentButton__9E94Z:hover{color:var(--il-color-5b2cf4,#5b2cf4)}.PromoteFlow-module_configureEnvironmentButtonRequired__xc4X9{background:var(--il-color-fffbfa,#fffbfa);border:1px solid var(--il-color-fda29b,#fda29b);box-shadow:0 0 0 3px rgba(217,45,32,.1);color:var(--il-color-b42318,#b42318)}.PromoteFlow-module_configureEnvironmentButtonRequired__xc4X9:hover{color:var(--il-color-b42318,#b42318)}.PromoteFlow-module_promotionError__TcrW5{background:var(--il-color-fffbfa,#fffbfa);border:1px solid var(--il-color-fda29b,#fda29b);border-radius:.375rem;color:var(--il-color-b42318,#b42318);font-size:var(--il-font-size-sm,14px);margin:0;padding:.75rem 1rem}.PromoteFlow-module_configureEnvironmentButton__9E94Z:after{background:var(--il-color-344054,#344054);border-radius:.375rem;bottom:calc(100% + .5rem);color:#fff;content:attr(data-tooltip);font-size:.75rem;left:50%;line-height:1rem;max-width:14rem;opacity:0;padding:.375rem .5rem;pointer-events:none;position:absolute;transform:translateX(-50%);transition:opacity .15s ease;white-space:nowrap;width:max-content;z-index:2}.PromoteFlow-module_configureEnvironmentButton__9E94Z:focus-visible:after,.PromoteFlow-module_configureEnvironmentButton__9E94Z:hover:after{opacity:1}.PromoteFlow-module_metaValue__HlSsf{color:var(--il-color-101828,#101828);font-weight:var(--il-font-weight-medium,500);margin-top:.25rem}.PromoteFlow-module_versionPill__2Rdbk{background-color:var(--il-color-f8fafc,#f8fafc);border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;color:var(--il-color-475467,#475467);display:inline-flex;margin-top:.25rem;padding:.125rem .5rem}.PromoteFlow-module_urlLink__rxqSl{align-items:center;color:var(--il-color-155eef,#155eef);display:inline-flex;gap:.375rem;max-width:100%;text-decoration:none}.PromoteFlow-module_urlLink__rxqSl,.PromoteFlow-module_urlLink__rxqSl span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_urlIcon__jgxVE{flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_statsGrid__h3Zsl{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:.625rem}.PromoteFlow-module_statCell__jhnJE{background-color:var(--il-color-f8fafc,#f8fafc);border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:6px;display:flex;flex-direction:column;gap:.25rem;min-width:0;padding:.75rem 1rem}.PromoteFlow-module_statCell__jhnJE+.PromoteFlow-module_statCell__jhnJE{border-left:1px solid var(--il-color-e3e8ef,#e3e8ef)}.PromoteFlow-module_statCell__jhnJE span{color:var(--il-color-475467,#475467)}.PromoteFlow-module_statCell__jhnJE strong{color:var(--il-color-101828,#101828);font-size:var(--il-font-size-md,16px)}.PromoteFlow-module_historyPanel__C6U-W{background-color:var(--il-color-f8fafc,#f8fafc);border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:8px;overflow:hidden}.PromoteFlow-module_historyToolbar__iwqQx{display:grid;gap:.75rem;grid-template-columns:minmax(14rem,1fr) auto auto auto;padding:1rem}.PromoteFlow-module_searchBox__EPjKE{align-items:center;background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-cfd8e3,#cfd8e3);border-radius:6px;display:flex;gap:.5rem;height:2.5rem;min-width:0;padding:0 .75rem}.PromoteFlow-module_searchBox__EPjKE input{background:transparent;border:none;color:var(--il-color-344054,#344054);flex:1 1 auto;font-size:var(--il-font-size-md,16px);min-width:0;outline:none}.PromoteFlow-module_searchBox__EPjKE input::placeholder{color:var(--il-color-98a2b3,#98a2b3)}.PromoteFlow-module_inputIcon__qr6Bp,.PromoteFlow-module_toolbarIcon__q-XqU{color:var(--il-color-475467,#475467);flex-shrink:0;height:1rem;width:1rem}.PromoteFlow-module_toolbarButton__Vm4-e{align-items:center;background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;color:var(--il-color-475467,#475467);cursor:pointer;display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.5rem;height:2.5rem;justify-content:center;padding:0 .875rem;white-space:nowrap}.PromoteFlow-module_historyTableWrapper__8GIi4{overflow-x:auto}.PromoteFlow-module_historyTable__F-MuL{background-color:var(--il-color-ffffff,#fff);border-collapse:collapse;color:var(--il-color-101828,#101828);min-width:58rem;width:100%}.PromoteFlow-module_historyTable__F-MuL td,.PromoteFlow-module_historyTable__F-MuL th{border-top:1px solid var(--il-color-e3e8ef,#e3e8ef);padding:1rem 1.25rem;text-align:center;vertical-align:middle;white-space:pre-line}.PromoteFlow-module_historyTable__F-MuL th{background-color:var(--il-color-f8fafc,#f8fafc);color:var(--il-color-667085,#667085);font-weight:var(--il-font-weight-semibold,600)}.PromoteFlow-module_statusPill__ZDXky{align-items:center;background-color:var(--il-color-dcfce7,#dcfce7);border:1px solid var(--il-color-86efac,#86efac);border-radius:9999px;color:var(--il-color-15803d,#15803d);display:inline-flex;font-weight:var(--il-font-weight-medium,500);padding:.125rem .625rem}.PromoteFlow-module_statusPill__ZDXky+.PromoteFlow-module_tableActionButton__PkB2v{margin-left:.5rem}.PromoteFlow-module_tableActionButton__PkB2v{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:6px;color:var(--il-color-475467,#475467);cursor:pointer;font-weight:var(--il-font-weight-medium,500);height:2.5rem;padding:0 1rem}.PromoteFlow-module_tableActionButtonDanger__8VLsq{border-color:var(--il-color-fca5a5,#fca5a5);color:var(--il-color-ef4444,#ef4444)}.PromoteFlow-module_databaseGrid__Ai-4t{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.PromoteFlow-module_databaseCard__uMMyE{border:1px solid var(--il-color-d8e0ea,#d8e0ea);border-radius:8px;min-width:0;padding:.875rem}.PromoteFlow-module_databaseCard__uMMyE h3{color:var(--il-color-344054,#344054);font-size:var(--il-font-size-md,16px);font-weight:var(--il-font-weight-medium,500);margin:0}.PromoteFlow-module_databaseCard__uMMyE p,.PromoteFlow-module_emptyBody__t3lpZ{color:var(--il-color-475467,#475467);margin:.75rem 0 0}.PromoteFlow-module_databaseCard__uMMyE p{align-items:center;color:var(--il-color-101828,#101828);display:flex;gap:.375rem}.PromoteFlow-module_inlineChevron__oFz2Z{flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_tableList__HYD9T{background-color:var(--il-color-f8fafc,#f8fafc);border-radius:8px;color:var(--il-color-475467,#475467);line-height:1.45;margin:.5rem 0 0;padding:.75rem .75rem .75rem 2rem}.PromoteFlow-module_moreTablesButton__BLL-R{background:none;border:none;color:var(--il-color-4d21f3,#4d21f3);cursor:pointer;font-weight:var(--il-font-weight-medium,500);margin-top:.375rem}.PromoteFlow-module_promotionStatusBox__HPWiW{background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-e3e8ef,#e3e8ef);border-radius:8px;display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1rem;padding:1.5rem 2rem}.PromoteFlow-module_promotionStatusRow__6JMP-{display:flex;flex-direction:column;gap:.5rem}.PromoteFlow-module_promotionStatusRowHeader__XIieX{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between}.PromoteFlow-module_promotionStatusField__5-LIT{display:flex;flex-direction:column;gap:.5rem}.PromoteFlow-module_statusWithPill__YjWR3{align-items:center;display:flex;gap:.75rem}.PromoteFlow-module_statusValue__-0o-U{color:var(--il-color-101828,#101828);font-weight:var(--il-font-weight-medium,500)}.PromoteFlow-module_ingestingPill__acAIF{align-items:center;background-color:var(--il-color-fef3c7,#fef3c7);border:1px solid var(--il-color-fcd34d,#fcd34d);border-radius:9999px;color:var(--il-color-92400e,#92400e);display:inline-flex;font-size:var(--il-font-size-sm,14px);font-weight:var(--il-font-weight-medium,500);gap:.375rem;padding:.25rem .75rem;white-space:nowrap}.PromoteFlow-module_migrationLoader__kbID5{animation:PromoteFlow-module_promotion-spin__jteN8 .8s linear infinite;height:.875rem;width:.875rem}@keyframes PromoteFlow-module_promotion-spin__jteN8{to{transform:rotate(1turn)}}.PromoteFlow-module_notificationPill__qxzxd{align-items:center;background-color:var(--il-color-ffffff,#fff);border:1px solid var(--il-color-d0d5dd,#d0d5dd);border-radius:9999px;display:inline-flex;flex-shrink:0;gap:.5rem;padding:.375rem .75rem;white-space:nowrap}.PromoteFlow-module_notificationBellIcon__Gnymu{color:var(--il-color-475467,#475467);flex-shrink:0;height:.875rem;width:.875rem}.PromoteFlow-module_notificationPill__qxzxd span{color:var(--il-color-475467,#475467);font-size:var(--il-font-size-xs,12px);font-weight:var(--il-font-weight-medium,500);line-height:1.5}.PromoteFlow-module_metaValueWithCopy__-bcL9{align-items:center;display:inline-flex;gap:.375rem}.PromoteFlow-module_copyIconButton__ldDyf{align-items:center;background:none;border:none;color:var(--il-color-475467,#475467);cursor:pointer;display:inline-flex;flex-shrink:0;height:auto;justify-content:center;padding:0;width:auto}.PromoteFlow-module_copyIconButton__ldDyf:hover{color:var(--il-color-344054,#344054)}.PromoteFlow-module_copyIconButtonBlue__-Gp6G{color:var(--il-color-155eef,#155eef)}.PromoteFlow-module_copyIconButtonBlue__-Gp6G:hover{color:var(--il-color-124cc4,#124cc4)}.PromoteFlow-module_copyIconInline__DIzY6{flex-shrink:0;height:1rem;width:1rem}.PromoteFlow-module_copyTooltipWrapper__MOxrW{align-items:center;display:inline-flex;position:relative}.PromoteFlow-module_copiedTooltip__Wc6v7{background-color:var(--il-color-1f2937,#1f2937);border-radius:4px;bottom:100%;color:var(--il-color-ffffff,#fff);font-size:var(--il-font-size-xs,12px);left:50%;margin-bottom:.5rem;padding:.375rem .75rem;pointer-events:none;position:absolute;transform:translateX(-50%);white-space:nowrap;z-index:1000}.PromoteFlow-module_copiedTooltip__Wc6v7:after{border:4px solid transparent;border-top:4px solid var(--il-color-1f2937,#1f2937);content:\"\";left:50%;position:absolute;top:100%;transform:translateX(-50%)}.PromoteFlow-module_urlWithCopyContainer__2q3h2{align-items:center;display:flex;gap:.5rem}.PromoteFlow-module_urlLinkWithCopy__tmy8C{align-items:center;color:var(--il-color-155eef,#155eef);display:inline-flex;gap:.375rem;text-decoration:none}.PromoteFlow-module_promotionDetailsGrid__eK-Zl{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr))}.PromoteFlow-module_promotionDetailsLink__25QF6{min-width:0}.PromoteFlow-module_scheduledTrigger__7RkKd{align-items:end;border-top:1px solid var(--il-color-e3e8ef,#e3e8ef);display:flex;gap:1rem;justify-content:space-between;margin-top:1.25rem;padding-top:1rem}.PromoteFlow-module_scheduledTrigger__7RkKd>div{flex:1 1 auto;min-width:0}.PromoteFlow-module_scheduledTriggerUrl__uDMcb{align-items:center;background:transparent;border:0;color:var(--il-color-155eef,#155eef);cursor:pointer;display:inline-flex;font:inherit;gap:.375rem;margin-top:.25rem;max-width:100%;padding:0;text-align:left}.PromoteFlow-module_scheduledTriggerUrl__uDMcb span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PromoteFlow-module_scheduledTriggerUrl__uDMcb:hover span{text-decoration:underline}.PromoteFlow-module_scheduledTriggerUrl__uDMcb:disabled{cursor:wait;opacity:.65}@media (max-width:1100px){.PromoteFlow-module_topRow__DcKME{flex-direction:column}.PromoteFlow-module_ctaRow__VdPQn{width:100%}}@media (max-width:760px){.PromoteFlow-module_body__TllTh,.PromoteFlow-module_header__bdIDh{padding:1rem}.PromoteFlow-module_topRow__DcKME{flex-direction:column}.PromoteFlow-module_title__hZxg6{white-space:normal}.PromoteFlow-module_stepper__kqpWN{flex-wrap:wrap;row-gap:.5rem}.PromoteFlow-module_stepItem__WlKEK,.PromoteFlow-module_stepItem__WlKEK:last-child{flex:none;width:100%}.PromoteFlow-module_stepConnector__mq9X9{display:none}.PromoteFlow-module_ctaRow__VdPQn{justify-content:stretch;width:100%}.PromoteFlow-module_primaryButton__X4QtV,.PromoteFlow-module_secondaryButton__VQNnz{flex:1 1 fit-content}.PromoteFlow-module_databaseGrid__Ai-4t,.PromoteFlow-module_historyToolbar__iwqQx,.PromoteFlow-module_overviewGrid__ETogw,.PromoteFlow-module_statsGrid__h3Zsl{grid-template-columns:1fr}.PromoteFlow-module_promotionStatusBox__HPWiW{padding:1rem}.PromoteFlow-module_promotionStatusRowHeader__XIieX{align-items:flex-start;flex-direction:column}.PromoteFlow-module_notificationPill__qxzxd{justify-content:flex-start;width:100%}.PromoteFlow-module_promotionDetailsGrid__eK-Zl{grid-template-columns:1fr}.PromoteFlow-module_metaValueWithCopy__-bcL9{flex-wrap:wrap}.PromoteFlow-module_urlWithCopyContainer__2q3h2{align-items:flex-start;flex-direction:column}.PromoteFlow-module_copyTooltipWrapper__MOxrW{margin-bottom:.5rem}.PromoteFlow-module_copiedTooltip__Wc6v7{bottom:auto;margin-bottom:0;margin-top:.5rem;top:100%}.PromoteFlow-module_copiedTooltip__Wc6v7:after{border-bottom-color:var(--il-color-1f2937,#1f2937);border-top-color:transparent;bottom:100%;top:auto}.PromoteFlow-module_scheduledTrigger__7RkKd{align-items:stretch;flex-direction:column}.PromoteFlow-module_scheduledTriggerUrl__uDMcb{width:100%}}";
|
|
4
|
+
var cssStyles = {"root":"PromoteFlow-module_root__gqGfx","title":"PromoteFlow-module_title__hZxg6","body":"PromoteFlow-module_body__TllTh","topRow":"PromoteFlow-module_topRow__DcKME","titleGroup":"PromoteFlow-module_titleGroup__-KBzO","backButton":"PromoteFlow-module_backButton__YKJma","stepper":"PromoteFlow-module_stepper__kqpWN","stepItem":"PromoteFlow-module_stepItem__WlKEK","stepIndicator":"PromoteFlow-module_stepIndicator__uF0Fv","stepPill":"PromoteFlow-module_stepPill__av2nE","stepPillDot":"PromoteFlow-module_stepPillDot__hYbNK","stepLabel":"PromoteFlow-module_stepLabel__ImMuL","stepConnector":"PromoteFlow-module_stepConnector__mq9X9","ctaRow":"PromoteFlow-module_ctaRow__VdPQn","preflightAction":"PromoteFlow-module_preflightAction__urODG","preflightInfo":"PromoteFlow-module_preflightInfo__pD0gU","preflightSuccess":"PromoteFlow-module_preflightSuccess__ifbiu","primaryButton":"PromoteFlow-module_primaryButton__X4QtV","secondaryButton":"PromoteFlow-module_secondaryButton__VQNnz","accordionHeader":"PromoteFlow-module_accordionHeader__PKCQL","buttonIcon":"PromoteFlow-module_buttonIcon__t-Mih","helpIcon":"PromoteFlow-module_helpIcon__9kj7N","accordionList":"PromoteFlow-module_accordionList__QKiHy","accordion":"PromoteFlow-module_accordion__cGLUd","comingSoonBadge":"PromoteFlow-module_comingSoonBadge__Ntczn","accordionAction":"PromoteFlow-module_accordionAction__Ml8Zb","accordionActionIcon":"PromoteFlow-module_accordionActionIcon__Tyfh3","accordionIcon":"PromoteFlow-module_accordionIcon__hpIiN","accordionIconOpen":"PromoteFlow-module_accordionIconOpen__BnuS8","accordionBody":"PromoteFlow-module_accordionBody__vwx2c","overviewPanel":"PromoteFlow-module_overviewPanel__Zk68D","overviewGrid":"PromoteFlow-module_overviewGrid__ETogw","metaLabel":"PromoteFlow-module_metaLabel__8fn-7","environmentHeading":"PromoteFlow-module_environmentHeading__c-6Ou","configureEnvironmentButton":"PromoteFlow-module_configureEnvironmentButton__9E94Z","configureEnvironmentButtonRequired":"PromoteFlow-module_configureEnvironmentButtonRequired__xc4X9","promotionError":"PromoteFlow-module_promotionError__TcrW5","metaValue":"PromoteFlow-module_metaValue__HlSsf","versionPill":"PromoteFlow-module_versionPill__2Rdbk","urlLink":"PromoteFlow-module_urlLink__rxqSl","urlIcon":"PromoteFlow-module_urlIcon__jgxVE","statsGrid":"PromoteFlow-module_statsGrid__h3Zsl","statCell":"PromoteFlow-module_statCell__jhnJE","historyPanel":"PromoteFlow-module_historyPanel__C6U-W","historyToolbar":"PromoteFlow-module_historyToolbar__iwqQx","searchBox":"PromoteFlow-module_searchBox__EPjKE","inputIcon":"PromoteFlow-module_inputIcon__qr6Bp","toolbarIcon":"PromoteFlow-module_toolbarIcon__q-XqU","toolbarButton":"PromoteFlow-module_toolbarButton__Vm4-e","historyTableWrapper":"PromoteFlow-module_historyTableWrapper__8GIi4","historyTable":"PromoteFlow-module_historyTable__F-MuL","statusPill":"PromoteFlow-module_statusPill__ZDXky","tableActionButton":"PromoteFlow-module_tableActionButton__PkB2v","tableActionButtonDanger":"PromoteFlow-module_tableActionButtonDanger__8VLsq","databaseGrid":"PromoteFlow-module_databaseGrid__Ai-4t","databaseCard":"PromoteFlow-module_databaseCard__uMMyE","emptyBody":"PromoteFlow-module_emptyBody__t3lpZ","inlineChevron":"PromoteFlow-module_inlineChevron__oFz2Z","tableList":"PromoteFlow-module_tableList__HYD9T","moreTablesButton":"PromoteFlow-module_moreTablesButton__BLL-R","promotionStatusBox":"PromoteFlow-module_promotionStatusBox__HPWiW","promotionStatusRow":"PromoteFlow-module_promotionStatusRow__6JMP-","promotionStatusRowHeader":"PromoteFlow-module_promotionStatusRowHeader__XIieX","promotionStatusField":"PromoteFlow-module_promotionStatusField__5-LIT","statusWithPill":"PromoteFlow-module_statusWithPill__YjWR3","statusValue":"PromoteFlow-module_statusValue__-0o-U","ingestingPill":"PromoteFlow-module_ingestingPill__acAIF","migrationLoader":"PromoteFlow-module_migrationLoader__kbID5","promotion-spin":"PromoteFlow-module_promotion-spin__jteN8","notificationPill":"PromoteFlow-module_notificationPill__qxzxd","notificationBellIcon":"PromoteFlow-module_notificationBellIcon__Gnymu","metaValueWithCopy":"PromoteFlow-module_metaValueWithCopy__-bcL9","copyIconButton":"PromoteFlow-module_copyIconButton__ldDyf","copyIconButtonBlue":"PromoteFlow-module_copyIconButtonBlue__-Gp6G","copyIconInline":"PromoteFlow-module_copyIconInline__DIzY6","copyTooltipWrapper":"PromoteFlow-module_copyTooltipWrapper__MOxrW","copiedTooltip":"PromoteFlow-module_copiedTooltip__Wc6v7","urlWithCopyContainer":"PromoteFlow-module_urlWithCopyContainer__2q3h2","urlLinkWithCopy":"PromoteFlow-module_urlLinkWithCopy__tmy8C","promotionDetailsGrid":"PromoteFlow-module_promotionDetailsGrid__eK-Zl","promotionDetailsLink":"PromoteFlow-module_promotionDetailsLink__25QF6","scheduledTrigger":"PromoteFlow-module_scheduledTrigger__7RkKd","scheduledTriggerUrl":"PromoteFlow-module_scheduledTriggerUrl__uDMcb","header":"PromoteFlow-module_header__bdIDh"};
|
|
5
5
|
styleInject(css_248z);
|
|
6
6
|
|
|
7
7
|
export { cssStyles as default };
|
|
@@ -15,7 +15,7 @@ const absoluteTarget = (url) => {
|
|
|
15
15
|
}
|
|
16
16
|
return { kind: "absolute", url };
|
|
17
17
|
};
|
|
18
|
-
const request = async (method, target, data) => {
|
|
18
|
+
const request = async (method, target, data, expectedStatus) => {
|
|
19
19
|
var _a;
|
|
20
20
|
const runtimeConfig = getGuidelineRuntimeConfig();
|
|
21
21
|
const authToken = runtimeConfig.getHostContext().authToken;
|
|
@@ -23,9 +23,13 @@ const request = async (method, target, data) => {
|
|
|
23
23
|
method,
|
|
24
24
|
url: target.kind === "absolute" ? target.url : `${PROMOTION_API_PATH}${target.path}`,
|
|
25
25
|
...target.kind === "promotion" ? { baseURL: runtimeConfig.apiBaseUrls.llmStudio } : {},
|
|
26
|
+
// baseURL: runtimeConfig.apiBaseUrls.llmStudio
|
|
26
27
|
data,
|
|
27
28
|
headers: authToken ? { Authorization: `Bearer ${authToken}` } : void 0
|
|
28
29
|
});
|
|
30
|
+
if (expectedStatus && response.status !== expectedStatus) {
|
|
31
|
+
throw new Error(`Promotion request returned HTTP ${response.status}.`);
|
|
32
|
+
}
|
|
29
33
|
if (response.data.status !== "success") {
|
|
30
34
|
throw new Error((_a = response.data.message) != null ? _a : "Promotion request failed.");
|
|
31
35
|
}
|
|
@@ -34,10 +38,20 @@ const request = async (method, target, data) => {
|
|
|
34
38
|
const createEnvironmentConfig = (payload) => request("post", promotionTarget("/promotions/config"), payload);
|
|
35
39
|
const searchEnvironmentConfigs = (payload) => request("post", promotionTarget("/promotions/config/search"), payload);
|
|
36
40
|
const startPromotion = (payload) => request("post", promotionTarget("/promotions/now"), payload);
|
|
41
|
+
const checkPromotionPreflight = (payload) => request("post", promotionTarget("/promotions/preflight"), payload);
|
|
37
42
|
const schedulePromotion = (payload) => request("post", promotionTarget("/promotions/later"), payload);
|
|
38
43
|
const triggerScheduledPromotion = (triggerUrl) => request("post", absoluteTarget(triggerUrl));
|
|
39
|
-
const getPromotionStatus = (
|
|
44
|
+
const getPromotionStatus = async (resourceId) => {
|
|
45
|
+
const target = promotionTarget(`/promotions/${encodeURIComponent(resourceId)}/status`);
|
|
46
|
+
try {
|
|
47
|
+
return await request("get", target, void 0, 200);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
return request("get", target, void 0, 200);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const rollbackPromotion = (promotionTaskId) => request("post", promotionTarget(`/promotions/rollback/${encodeURIComponent(promotionTaskId)}`), {});
|
|
40
53
|
const getPromotionHistory = (resourceId) => request("get", promotionTarget(`/promotions/${encodeURIComponent(resourceId)}/history`));
|
|
54
|
+
const getSchemaPreview = (resourceId) => request("get", promotionTarget(`/promotions/${encodeURIComponent(resourceId)}/schema-preview`));
|
|
41
55
|
const getCWUser = async (userEmail) => {
|
|
42
56
|
var _a;
|
|
43
57
|
const runtimeConfig = getGuidelineRuntimeConfig();
|
|
@@ -55,5 +69,5 @@ const getCWUser = async (userEmail) => {
|
|
|
55
69
|
return response.data;
|
|
56
70
|
};
|
|
57
71
|
|
|
58
|
-
export { createEnvironmentConfig, getCWUser, getPromotionHistory, getPromotionStatus, schedulePromotion, searchEnvironmentConfigs, startPromotion, triggerScheduledPromotion };
|
|
72
|
+
export { checkPromotionPreflight, createEnvironmentConfig, getCWUser, getPromotionHistory, getPromotionStatus, getSchemaPreview, rollbackPromotion, schedulePromotion, searchEnvironmentConfigs, startPromotion, triggerScheduledPromotion };
|
|
59
73
|
//# sourceMappingURL=promote-flow.api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote-flow.api.js","sources":["../../../../src/features/IL-marketplace/PromoteFlow/promote-flow.api.ts"],"sourcesContent":["import { http } from '../../../api/transport';\nimport { getGuidelineRuntimeConfig } from '../services/guideline.runtime.config';\nimport type {\n CreateEnvironmentConfigRequest,\n CreateEnvironmentConfigResponse,\n EnvironmentRegistryRecord,\n GetCWUserApiResponse,\n PromotionApiResponse,\n PromotionHistoryEntry,\n PromotionTask,\n SearchEnvironmentConfigsRequest,\n SchedulePromotionResponse,\n StartPromotionRequest,\n} from './promote-flow.interfaces';\n\nconst PROMOTION_API_PATH = '/instant_learning/ilotj';\n\ntype PromotionRequestTarget =\n { kind: 'promotion'; path: string } | { kind: 'absolute'; url: string };\n\nconst promotionTarget = (path: string): PromotionRequestTarget => ({ kind: 'promotion', path });\n\nconst absoluteTarget = (url: string): PromotionRequestTarget => {\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(url);\n } catch {\n throw new Error('The scheduled promotion URL is invalid.');\n }\n\n if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n throw new Error('The scheduled promotion URL must use HTTP or HTTPS.');\n }\n\n return { kind: 'absolute', url };\n};\n\nconst request = async <T>(\n method: 'get' | 'post',\n target: PromotionRequestTarget,\n data?: unknown\n): Promise<T> => {\n const runtimeConfig = getGuidelineRuntimeConfig();\n const authToken = runtimeConfig.getHostContext().authToken;\n const response = await http.request<PromotionApiResponse<T>>({\n method,\n url: target.kind === 'absolute' ? target.url : `${PROMOTION_API_PATH}${target.path}`,\n ...(target.kind === 'promotion' ? { baseURL: runtimeConfig.apiBaseUrls.llmStudio } : {})
|
|
1
|
+
{"version":3,"file":"promote-flow.api.js","sources":["../../../../src/features/IL-marketplace/PromoteFlow/promote-flow.api.ts"],"sourcesContent":["import { http } from '../../../api/transport';\nimport { getGuidelineRuntimeConfig } from '../services/guideline.runtime.config';\nimport type {\n CreateEnvironmentConfigRequest,\n CreateEnvironmentConfigResponse,\n EnvironmentRegistryRecord,\n GetCWUserApiResponse,\n PromotionApiResponse,\n PromotionHistoryEntry,\n PromotionTask,\n PreflightCheckResponse,\n PreflightPromotionRequest,\n SearchEnvironmentConfigsRequest,\n SchedulePromotionResponse,\n SchemaPreviewResponse,\n StartPromotionRequest,\n} from './promote-flow.interfaces';\n\nconst PROMOTION_API_PATH = '/instant_learning/ilotj';\n\ntype PromotionRequestTarget =\n { kind: 'promotion'; path: string } | { kind: 'absolute'; url: string };\n\nconst promotionTarget = (path: string): PromotionRequestTarget => ({ kind: 'promotion', path });\n\nconst absoluteTarget = (url: string): PromotionRequestTarget => {\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(url);\n } catch {\n throw new Error('The scheduled promotion URL is invalid.');\n }\n\n if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n throw new Error('The scheduled promotion URL must use HTTP or HTTPS.');\n }\n\n return { kind: 'absolute', url };\n};\n\nconst request = async <T>(\n method: 'get' | 'post',\n target: PromotionRequestTarget,\n data?: unknown,\n expectedStatus?: number\n): Promise<T> => {\n const runtimeConfig = getGuidelineRuntimeConfig();\n const authToken = runtimeConfig.getHostContext().authToken;\n const response = await http.request<PromotionApiResponse<T>>({\n method,\n url: target.kind === 'absolute' ? target.url : `${PROMOTION_API_PATH}${target.path}`,\n ...(target.kind === 'promotion' ? { baseURL: runtimeConfig.apiBaseUrls.llmStudio } : {}), // baseURL: runtimeConfig.apiBaseUrls.llmStudio\n data,\n headers: authToken ? { Authorization: `Bearer ${authToken}` } : undefined,\n });\n\n if (expectedStatus && response.status !== expectedStatus) {\n throw new Error(`Promotion request returned HTTP ${response.status}.`);\n }\n\n if (response.data.status !== 'success') {\n throw new Error(response.data.message ?? 'Promotion request failed.');\n }\n\n return response.data.data;\n};\n\nexport const createEnvironmentConfig = (\n payload: CreateEnvironmentConfigRequest\n): Promise<CreateEnvironmentConfigResponse> =>\n request('post', promotionTarget('/promotions/config'), payload);\n\nexport const searchEnvironmentConfigs = (\n payload: SearchEnvironmentConfigsRequest\n): Promise<EnvironmentRegistryRecord[]> =>\n request('post', promotionTarget('/promotions/config/search'), payload);\n\nexport const startPromotion = (payload: StartPromotionRequest): Promise<PromotionTask> =>\n request('post', promotionTarget('/promotions/now'), payload);\n\nexport const checkPromotionPreflight = (\n payload: PreflightPromotionRequest\n): Promise<PreflightCheckResponse> =>\n request('post', promotionTarget('/promotions/preflight'), payload);\n\nexport const schedulePromotion = (\n payload: StartPromotionRequest\n): Promise<SchedulePromotionResponse> =>\n request('post', promotionTarget('/promotions/later'), payload);\n\nexport const triggerScheduledPromotion = (triggerUrl: string): Promise<PromotionTask> =>\n request('post', absoluteTarget(triggerUrl));\n\nexport const getPromotionStatus = async (resourceId: string): Promise<PromotionTask> => {\n const target = promotionTarget(`/promotions/${encodeURIComponent(resourceId)}/status`);\n\n try {\n return await request('get', target, undefined, 200);\n } catch {\n // Retry transient status lookup failures once. Callers stop polling if this fails too.\n return request('get', target, undefined, 200);\n }\n};\n\nexport const rollbackPromotion = (promotionTaskId: string): Promise<PromotionTask> =>\n request('post', promotionTarget(`/promotions/rollback/${encodeURIComponent(promotionTaskId)}`), {});\n\nexport const getPromotionHistory = (resourceId: string): Promise<PromotionHistoryEntry[]> =>\n request('get', promotionTarget(`/promotions/${encodeURIComponent(resourceId)}/history`));\n\nexport const getSchemaPreview = (resourceId: string): Promise<SchemaPreviewResponse> =>\n request('get', promotionTarget(`/promotions/${encodeURIComponent(resourceId)}/schema-preview`));\n\nexport const getCWUser = async (userEmail: string): Promise<GetCWUserApiResponse> => {\n const runtimeConfig = getGuidelineRuntimeConfig();\n const authToken = runtimeConfig.getHostContext().authToken;\n const response = await http.request<GetCWUserApiResponse>({\n method: 'get',\n url: '/backend/user/appsec/getUser',\n baseURL: runtimeConfig.editorConfig.appmodUrl ?? 'https://dev.appmod.ai',\n params: { email: userEmail },\n headers: {\n Accept: 'application/json',\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n },\n });\n\n return response.data;\n};\n"],"names":[],"mappings":"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"}
|