@e-llm-studio/instant-learning 1.3.4 → 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.
@@ -71,9 +71,12 @@ const TeachMePluginInner = ({
71
71
  useAuthStore["default"].getState().setUser({ ...useAuthStore["default"].getState().user, accessToken: token });
72
72
  useEnvStore["default"].getState().setLlmStudioUrl(config == null ? void 0 : config.BASE_URL);
73
73
  useLearningTemplateStore.useLearningTemplateStore.getState().setAppIntegrationId(app_integration_id != null ? app_integration_id : "");
74
+ if (token) {
75
+ useLearningTemplateStore.useLearningTemplateStore.getState().setToken(token);
76
+ }
74
77
  useLearningTemplateStore.useLearningTemplateStore.getState().setSelectedRuleSetId((_b = (_a2 = pluginPayload == null ? void 0 : pluginPayload.ruleSet) == null ? void 0 : _a2.ruleSetId) != null ? _b : null);
75
78
  if (!token || !(config == null ? void 0 : config.BASE_URL)) return;
76
- if (tiers.length === 0 && !(pluginPayload == null ? void 0 : pluginPayload.tiers)) scopeApis.fetchTiers();
79
+ if ((tiers.length === 0 || isOpen) && !(pluginPayload == null ? void 0 : pluginPayload.tiers)) void scopeApis.fetchTiers();
77
80
  if (app_integration_id && !useEnvStore["default"].getState().rbacConfig) {
78
81
  scopeApis.fetchRBACConfig(app_integration_id, token).then((data) => {
79
82
  var _a3, _b2, _c, _d, _e, _f, _g, _h, _i, _j;
@@ -92,7 +95,7 @@ const TeachMePluginInner = ({
92
95
  console.error("Error fetching RBAC config for TeachMePlugin:", error);
93
96
  });
94
97
  }
95
- }, [app_integration_id, token, config == null ? void 0 : config.BASE_URL]);
98
+ }, [app_integration_id, token, config == null ? void 0 : config.BASE_URL, isOpen, pluginPayload == null ? void 0 : pluginPayload.tiers]);
96
99
  !!(pluginPayload == null ? void 0 : pluginPayload.teachMe);
97
100
  useLMSConfigQuery.useLMSConfigQuery(app_integration_id, false, true, content_mode_mapping_id);
98
101
  React.useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"TeachMePlugin.js","sources":["../../../../../src/features/IL-OTJ/ValueTypeWrappers/TeachMePlugin.tsx"],"sourcesContent":["/**\n * TeachMePlugin — Public Contribution Entry Point\n *\n * This is the file teammates contribute to.\n * To register your template:\n * 1. Build your renderer component implementing `TeachMePluginProps`\n * 2. Import it here\n * 3. Add it to `TemplateRegistry` with the exact value_type_name string as the key\n *\n * That's it. The wrapper handles routing, loading, and error states automatically.\n */\n\nimport React, { useEffect, useMemo } from \"react\";\nimport TeachMeWrapper, { TeachMeWrapperProps } from \"./TeachMeWrapper\";\n\nimport DefaultTeachMeRenderer from \"../../../plugins/ValueTypes/Default/DefaultTeachMeRenderer\";\nimport RadioTrafficLearningRenderer from \"../../../plugins/ValueTypes/RadioTrafficLearning/RadioTrafficLearningRenderer\";\nimport GuidelinesTeachMeRenderer from \"../../../plugins/ValueTypes/Guidelines/GuidelinesTeachMeRenderer\";\nimport { dt, useLMSConfigStore, useTeachMeConfigStore } from \"../../LearningManagement/store/useLMSConfigStore\";\nimport { useLearningTemplateStore } from \"../../LearningManagement/store/useLearningTemplateStore\";\nimport { useLMSConfigQuery } from \"../../LearningManagement/queries/useLMSConfigQuery\";\nimport useAuthStore from \"../../LearningManagement/store/useAuthStore\";\nimport useEnvStore from \"../../LearningManagement/store/useEnvStore\";\nimport { QueryClient, QueryClientProvider, useQuery } from \"@tanstack/react-query\";\nimport { fetchMarketplaceDomains } from \"../../IL-marketplace/services/IL-marketplace.api\";\nimport { buildDynamicOptionsFromMarketplaceDomains } from \"../../IL-marketplace/utils\";\nimport { fetchRBACConfig, fetchTiers } from \"../../LearningManagement/apis/scopeApis\";\nimport { useConfigStore } from \"../../LearningManagement/store/useConfigStore\";\nimport { useExternalWorkflowStore, ExternalWorkflowMetaData } from \"../../LearningManagement/store/useExternalWorkflowStore\";\nimport ContinueWithTemplateModal from \"../../../ContinueWithTemplateModal\";\nimport { EXTERNAL_WORKFLOW_METADATA_DT_PATH } from \"../../LearningManagement/constants\";\nimport { ILMarketplaceThemeProvider, getILMarketplaceThemeStyles, useILMarketplaceThemeStyles, type ILMarketplaceTheme } from \"../../IL-marketplace/marketplaceTheme\";\n\nexport type TeachMeMode = \"ADD\" | \"EDIT\";\n\nexport interface TeachMePluginProps {\n // baseURL: string; // Optional base URL for API calls, can also be set via environment variable\n /** App integration ID used by non-marketplace integrations to resolve the correct template. */\n app_integration_id?: string;\n /**\n * Marketplace content-mode mapping ID. When provided, TeachMe resolves its\n * value-type JSON from `/marketplace/getValueType/{content_mode_mapping_id}`.\n * It takes precedence over the app integration ID for that request.\n */\n content_mode_mapping_id?: string;\n /** Controls dialog visibility */\n isOpen: boolean;\n /** Called when the dialog requests to close */\n onClose: () => void;\n /** Arbitrary team-specific data passed straight through to your renderer */\n pluginPayload?: Record<string, any>;\n /** Bearer token for API calls */\n token: string;\n /** Whether the plugin is opened for creating a new entry or editing an existing one */\n mode: TeachMeMode;\n config:any;\n /**\n * Opt into the schema-driven dynamic form pipeline (InstantLearningModalDynamic).\n * Defaults to false → the original InstantLearningModal flow is used unchanged.\n */\n useDynamicForm?: boolean;\n /**\n * Verbose chat logs. Omit it and the JSON's `teachMe.enableChatLogs` decides\n * (see resolveEnableChatLogs).\n */\n enableChatLogs?: boolean;\n /**\n * External workflow metadata: handlers, MF event bus, and `stepBadges` — the\n * step chips shown on the ContinueWithTemplateModal cards, e.g.\n * `stepBadges: { configureNow: [\"Output Breakdown\", \"Input Definition\"] }`.\n * Cards with no badges for their key simply render none.\n */\n externalWorkflowMetaData?: ExternalWorkflowMetaData;\n /**\n * Setter function to programmatically send messages to the chat.\n * Used to trigger automatic messages from the parent component.\n */\n setSendMessageInChat?: React.Dispatch<React.SetStateAction<string>>;\n /**\n * When true, auto-sends \"Validate this template.\" to the chat once the\n * plugin opens. Used by the marketplace publish \"Validate & proceed\" flow.\n */\n triggerValidateMessage?: boolean;\n /**\n * Marks this as a marketplace template, so the plugin resolves Category/Sub-Category\n * options from the marketplace domain tree when `pluginPayload.dynamicOptions` is omitted.\n */\n isMarketPlace?: boolean;\n /**\n * Whether this plugin instance renders its own bundled `<ContinueWithTemplateModal />`.\n * Defaults to true. Set to false when the host conditionally mounts/unmounts\n * `<TeachMePlugin />` itself (e.g. `{isOpen && <TeachMePlugin ... />}`) — the continue\n * modal is opened via a store flag right as the plugin's `onClose` fires, so a bundled\n * copy gets unmounted before it can show and `isContinueModalOpen` is left stuck `true`\n * for the next mount to immediately (and wrongly) re-show. In that setup, the host should\n * render a single `<ContinueWithTemplateModal />` itself at a level that stays mounted\n * across the plugin's open/close cycle, and pass `renderContinueModal={false}` here.\n */\n renderContinueModal?: boolean;\n /** Optional shared theme for standalone TeachMe integrations. */\n theme?: ILMarketplaceTheme;\n /**\n * Controls whether to show a loader/spinner in the TeachMe component.\n * Forwarded to TeachMeWrapper for controlling the loading state UI.\n */\n showLoader?: boolean;\n}\n\n// ─── Template Registry ────────────────────────────────────────────────────────\n/**\n * Map a value_type_name (returned by the /getValueType API) to its renderer.\n *\n * Contributing a new template:\n * \"Your Value Type Name\": YourCustomRenderer,\n *\n * Keys must exactly match the `value_type_name` field in the database.\n */\nexport const TemplateRegistry: Record<string, React.FC<TeachMeWrapperProps>> = {\n \"Default\": DefaultTeachMeRenderer,\n \"Radio Traffic Learning\": RadioTrafficLearningRenderer,\n \"Guidelines\": GuidelinesTeachMeRenderer,\n // ↓ Add your template here ↓\n // \"Your Template Name\": YourCustomRenderer,\n};\n\n// ─── Plugin Entry Point ───────────────────────────────────────────────────────\n\n/**\n * `TeachMePlugin` is the public surface for this module.\n *\n * Teammates consume this component — not `TeachMeWrapper` directly.\n * It bridges the slimmed-down public API to the internal wrapper,\n * supplying the shared `TemplateRegistry` and a safe default for `initialScope`.\n *\n * @example\n * <TeachMePlugin\n * app_integration_id=\"abc-123\"\n * isOpen={open}\n * onClose={() => setOpen(false)}\n * token={authToken}\n * mode=\"ADD\"\n * pluginPayload={{ someTeamSpecificKey: \"value\" }}\n * />\n */\nconst queryClient = new QueryClient();\n\nconst TeachMePlugin: React.FC<TeachMePluginProps> = (props) => {\n const inheritedThemeStyles = useILMarketplaceThemeStyles();\n const themeStyles = useMemo(\n () => props.theme ? getILMarketplaceThemeStyles(props.theme) : inheritedThemeStyles,\n [props.theme, inheritedThemeStyles],\n );\n\n return (\n <ILMarketplaceThemeProvider theme={props.theme}>\n <QueryClientProvider client={queryClient}>\n <div style={themeStyles}>\n <TeachMePluginInner {...props} />\n </div>\n </QueryClientProvider>\n </ILMarketplaceThemeProvider>\n );\n};\n\nconst TeachMePluginInner: React.FC<TeachMePluginProps> = ({\n app_integration_id,\n content_mode_mapping_id,\n isOpen,\n onClose,\n pluginPayload,\n token,\n mode,\n config,\n useDynamicForm,\n enableChatLogs,\n externalWorkflowMetaData,\n setSendMessageInChat,\n triggerValidateMessage,\n isMarketPlace,\n renderContinueModal = true,\n showLoader,\n}) => {\n const setTeachMeConfig = useTeachMeConfigStore((state) => state.setTeachMeConfig);\n const clearTeachMeConfig = useTeachMeConfigStore((state) => state.clearTeachMeConfig);\n const setLMSConfig = useLMSConfigStore((state) => state.setLMSConfig);\n const lmsConfig = useLMSConfigStore((state) => state.lmsConfig);\n const { setConfig } = useConfigStore();\n const setExternalWorkflowMetaData = useExternalWorkflowStore((state) => state.setExternalWorkflowMetaData);\n const openContinueModal = useExternalWorkflowStore((state) => state.openContinueModal);\n const tiers = useLearningTemplateStore((state) => state.tiers);\n useEffect(() => {\n setConfig(config);\n useAuthStore.getState().setUser({ ...useAuthStore.getState().user, accessToken: token } as any);\n useEnvStore.getState().setLlmStudioUrl(config?.BASE_URL);\n useLearningTemplateStore.getState().setAppIntegrationId(app_integration_id ?? '');\n useLearningTemplateStore.getState().setSelectedRuleSetId(pluginPayload?.ruleSet?.ruleSetId ?? null);\n if (!token || !config?.BASE_URL) return;\n if (tiers.length === 0 && !pluginPayload?.tiers) fetchTiers();\n if (app_integration_id && !useEnvStore.getState().rbacConfig) {\n fetchRBACConfig(app_integration_id, token)\n .then((data) => {\n if (!data) return;\n const envState = useEnvStore.getState();\n envState.setRbacConfig({\n applicationName: data.application_name ?? '',\n applicationId: data.application_id ?? '',\n moduleId: data.module_data?.Scopes ?? '',\n applicationModuleId: data.module_data?.General ?? '',\n applicationResourceId: data.resource_data?.['Learning Management'] ?? '',\n appsecRbacUrl: envState.appsecRbacUrl ?? '',\n appsecBaseUrl: envState.appsecBaseUrl ?? '',\n });\n })\n .catch((error) => {\n console.error('Error fetching RBAC config for TeachMePlugin:', error);\n });\n }\n }, [app_integration_id, token, config?.BASE_URL]);\n const hasTeachMeInPayload = !!pluginPayload?.teachMe;\n const { isLoading: isLMSConfigLoading, isError: isLMSConfigError, refetch: refetchLMSConfig, isSuccess } =\n useLMSConfigQuery(app_integration_id, false, true, content_mode_mapping_id);\n\nuseEffect(() => {\n if (pluginPayload?.teachMe) {\n const config = pluginPayload.teachMe;\n\n if (config.teachMe) {\n setTeachMeConfig(config.teachMe);\n }\n\n if (config.template) {\n useLearningTemplateStore\n .getState()\n .setTemplateData(app_integration_id ?? \"\", config.template);\n }\n\n if (config.learningManagement) {\n setLMSConfig({\n ...config.learningManagement,\n agents: config.agents ?? {},\n externalWorkflowMetaData:\n config.teachMe?.externalWorkflowMetaData ?? {\n enableExternalWorkflow: false,\n current_mode: \"\",\n sub_mode: \"\",\n next_mode: \"\",\n externalWorkflowModal: {\n heading: \"\",\n options: {\n saveDraft: {\n title: \"\",\n desc: \"\",\n footerDesc: \"\",\n },\n configureNow: {\n title: \"\",\n desc: \"\",\n footerDesc: \"\",\n },\n },\n },\n },\n });\n }\n }\n\n if (pluginPayload?.tiers) {\n useLearningTemplateStore.getState().setTiers(pluginPayload.tiers);\n }\n}, [pluginPayload]);\n\n useEffect(() => {\n if (externalWorkflowMetaData) {\n setExternalWorkflowMetaData(externalWorkflowMetaData);\n }\n }, [externalWorkflowMetaData, setExternalWorkflowMetaData]);\n\n // Marketplace templates pick their Category/Sub-Category from the marketplace domain tree, which\n // is keyed by the same app_integration_id already passed in — so the plugin fetches it rather than\n // every caller repeating the request and the reshaping.\n const { data: marketplaceDomainsResponse } = useQuery({\n queryKey: ['teachme-marketplace-domains', app_integration_id, content_mode_mapping_id],\n queryFn: () => fetchMarketplaceDomains(app_integration_id!, token, config?.BASE_URL, {\n content_mode_mapping_id,\n }),\n enabled: Boolean(\n isMarketPlace &&\n pluginPayload?.dynamicOptions === undefined &&\n app_integration_id &&\n content_mode_mapping_id\n ),\n staleTime: Infinity,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n });\n\n const resolvedDynamicOptions = useMemo(() => {\n if (!isMarketPlace || pluginPayload?.dynamicOptions !== undefined) return pluginPayload?.dynamicOptions;\n\n const options = buildDynamicOptionsFromMarketplaceDomains(\n marketplaceDomainsResponse?.responseData?.data?.data\n );\n // Falls back while the request is in flight, and if the tree comes back empty.\n return options.categoryOptions.length ? options : pluginPayload?.dynamicOptions;\n }, [isMarketPlace, marketplaceDomainsResponse, pluginPayload?.dynamicOptions]);\n\n // const handleClose = () => {\n // const isExternalWorkflowExists = dt(`${EXTERNAL_WORKFLOW_METADATA_DT_PATH}.enableExternalWorkflow`, 'false') === 'true';\n // console.log('teach me ', dt(`${EXTERNAL_WORKFLOW_METADATA_DT_PATH}`));\n // console.log('TeachMePlugin: handleClose called. isExternalWorkflowExists:', isExternalWorkflowExists);\n // onClose();\n // if (true) {\n // openContinueModal();\n // }\n\n // };\n\n return (\n <>\n <TeachMeWrapper\n app_integration_id={app_integration_id}\n content_mode_mapping_id={content_mode_mapping_id}\n isOpen={isOpen}\n onClose={onClose}\n token={token}\n templateRegistry={TemplateRegistry}\n baseURL={config?.BASE_URL}\n initialScope={pluginPayload?.initialScope ?? \"\"}\n ruleSet={pluginPayload?.ruleSet}\n useDynamicForm={useDynamicForm}\n enableChatLogs={enableChatLogs}\n pluginPayload={{\n ...pluginPayload,\n dynamicOptions: resolvedDynamicOptions,\n mode,\n triggerValidateMessage,\n }}\n setSendMessageInChat={setSendMessageInChat}\n showLoader={showLoader}\n />\n {renderContinueModal && <ContinueWithTemplateModal />}\n </>\n );\n};\n\nexport default TeachMePlugin;"],"names":["DefaultTeachMeRenderer","RadioTrafficLearningRenderer","GuidelinesTeachMeRenderer","QueryClient","useILMarketplaceThemeStyles","useMemo","getILMarketplaceThemeStyles","ILMarketplaceThemeProvider","jsx","QueryClientProvider","useTeachMeConfigStore","useLMSConfigStore","useConfigStore","useExternalWorkflowStore","useLearningTemplateStore","useEffect","_a","useAuthStore","useEnvStore","fetchTiers","fetchRBACConfig","_b","useLMSConfigQuery","config","useQuery","fetchMarketplaceDomains","buildDynamicOptionsFromMarketplaceDomains","jsxs","Fragment","TeachMeWrapper","ContinueWithTemplateModal"],"mappings":"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"}
1
+ {"version":3,"file":"TeachMePlugin.js","sources":["../../../../../src/features/IL-OTJ/ValueTypeWrappers/TeachMePlugin.tsx"],"sourcesContent":["/**\n * TeachMePlugin — Public Contribution Entry Point\n *\n * This is the file teammates contribute to.\n * To register your template:\n * 1. Build your renderer component implementing `TeachMePluginProps`\n * 2. Import it here\n * 3. Add it to `TemplateRegistry` with the exact value_type_name string as the key\n *\n * That's it. The wrapper handles routing, loading, and error states automatically.\n */\n\nimport React, { useEffect, useMemo } from \"react\";\nimport TeachMeWrapper, { TeachMeWrapperProps } from \"./TeachMeWrapper\";\n\nimport DefaultTeachMeRenderer from \"../../../plugins/ValueTypes/Default/DefaultTeachMeRenderer\";\nimport RadioTrafficLearningRenderer from \"../../../plugins/ValueTypes/RadioTrafficLearning/RadioTrafficLearningRenderer\";\nimport GuidelinesTeachMeRenderer from \"../../../plugins/ValueTypes/Guidelines/GuidelinesTeachMeRenderer\";\nimport { dt, useLMSConfigStore, useTeachMeConfigStore } from \"../../LearningManagement/store/useLMSConfigStore\";\nimport { useLearningTemplateStore } from \"../../LearningManagement/store/useLearningTemplateStore\";\nimport { useLMSConfigQuery } from \"../../LearningManagement/queries/useLMSConfigQuery\";\nimport useAuthStore from \"../../LearningManagement/store/useAuthStore\";\nimport useEnvStore from \"../../LearningManagement/store/useEnvStore\";\nimport { QueryClient, QueryClientProvider, useQuery } from \"@tanstack/react-query\";\nimport { fetchMarketplaceDomains } from \"../../IL-marketplace/services/IL-marketplace.api\";\nimport { buildDynamicOptionsFromMarketplaceDomains } from \"../../IL-marketplace/utils\";\nimport { fetchRBACConfig, fetchTiers } from \"../../LearningManagement/apis/scopeApis\";\nimport { useConfigStore } from \"../../LearningManagement/store/useConfigStore\";\nimport { useExternalWorkflowStore, ExternalWorkflowMetaData } from \"../../LearningManagement/store/useExternalWorkflowStore\";\nimport ContinueWithTemplateModal from \"../../../ContinueWithTemplateModal\";\nimport { EXTERNAL_WORKFLOW_METADATA_DT_PATH } from \"../../LearningManagement/constants\";\nimport { ILMarketplaceThemeProvider, getILMarketplaceThemeStyles, useILMarketplaceThemeStyles, type ILMarketplaceTheme } from \"../../IL-marketplace/marketplaceTheme\";\n\nexport type TeachMeMode = \"ADD\" | \"EDIT\";\n\nexport interface TeachMePluginProps {\n // baseURL: string; // Optional base URL for API calls, can also be set via environment variable\n /** App integration ID used by non-marketplace integrations to resolve the correct template. */\n app_integration_id?: string;\n /**\n * Marketplace content-mode mapping ID. When provided, TeachMe resolves its\n * value-type JSON from `/marketplace/getValueType/{content_mode_mapping_id}`.\n * It takes precedence over the app integration ID for that request.\n */\n content_mode_mapping_id?: string;\n /** Controls dialog visibility */\n isOpen: boolean;\n /** Called when the dialog requests to close */\n onClose: () => void;\n /** Arbitrary team-specific data passed straight through to your renderer */\n pluginPayload?: Record<string, any>;\n /** Bearer token for API calls */\n token: string;\n /** Whether the plugin is opened for creating a new entry or editing an existing one */\n mode: TeachMeMode;\n config:any;\n /**\n * Opt into the schema-driven dynamic form pipeline (InstantLearningModalDynamic).\n * Defaults to false → the original InstantLearningModal flow is used unchanged.\n */\n useDynamicForm?: boolean;\n /**\n * Verbose chat logs. Omit it and the JSON's `teachMe.enableChatLogs` decides\n * (see resolveEnableChatLogs).\n */\n enableChatLogs?: boolean;\n /**\n * External workflow metadata: handlers, MF event bus, and `stepBadges` — the\n * step chips shown on the ContinueWithTemplateModal cards, e.g.\n * `stepBadges: { configureNow: [\"Output Breakdown\", \"Input Definition\"] }`.\n * Cards with no badges for their key simply render none.\n */\n externalWorkflowMetaData?: ExternalWorkflowMetaData;\n /**\n * Setter function to programmatically send messages to the chat.\n * Used to trigger automatic messages from the parent component.\n */\n setSendMessageInChat?: React.Dispatch<React.SetStateAction<string>>;\n /**\n * When true, auto-sends \"Validate this template.\" to the chat once the\n * plugin opens. Used by the marketplace publish \"Validate & proceed\" flow.\n */\n triggerValidateMessage?: boolean;\n /**\n * Marks this as a marketplace template, so the plugin resolves Category/Sub-Category\n * options from the marketplace domain tree when `pluginPayload.dynamicOptions` is omitted.\n */\n isMarketPlace?: boolean;\n /**\n * Whether this plugin instance renders its own bundled `<ContinueWithTemplateModal />`.\n * Defaults to true. Set to false when the host conditionally mounts/unmounts\n * `<TeachMePlugin />` itself (e.g. `{isOpen && <TeachMePlugin ... />}`) — the continue\n * modal is opened via a store flag right as the plugin's `onClose` fires, so a bundled\n * copy gets unmounted before it can show and `isContinueModalOpen` is left stuck `true`\n * for the next mount to immediately (and wrongly) re-show. In that setup, the host should\n * render a single `<ContinueWithTemplateModal />` itself at a level that stays mounted\n * across the plugin's open/close cycle, and pass `renderContinueModal={false}` here.\n */\n renderContinueModal?: boolean;\n /** Optional shared theme for standalone TeachMe integrations. */\n theme?: ILMarketplaceTheme;\n /**\n * Controls whether to show a loader/spinner in the TeachMe component.\n * Forwarded to TeachMeWrapper for controlling the loading state UI.\n */\n showLoader?: boolean;\n}\n\n// ─── Template Registry ────────────────────────────────────────────────────────\n/**\n * Map a value_type_name (returned by the /getValueType API) to its renderer.\n *\n * Contributing a new template:\n * \"Your Value Type Name\": YourCustomRenderer,\n *\n * Keys must exactly match the `value_type_name` field in the database.\n */\nexport const TemplateRegistry: Record<string, React.FC<TeachMeWrapperProps>> = {\n \"Default\": DefaultTeachMeRenderer,\n \"Radio Traffic Learning\": RadioTrafficLearningRenderer,\n \"Guidelines\": GuidelinesTeachMeRenderer,\n // ↓ Add your template here ↓\n // \"Your Template Name\": YourCustomRenderer,\n};\n\n// ─── Plugin Entry Point ───────────────────────────────────────────────────────\n\n/**\n * `TeachMePlugin` is the public surface for this module.\n *\n * Teammates consume this component — not `TeachMeWrapper` directly.\n * It bridges the slimmed-down public API to the internal wrapper,\n * supplying the shared `TemplateRegistry` and a safe default for `initialScope`.\n *\n * @example\n * <TeachMePlugin\n * app_integration_id=\"abc-123\"\n * isOpen={open}\n * onClose={() => setOpen(false)}\n * token={authToken}\n * mode=\"ADD\"\n * pluginPayload={{ someTeamSpecificKey: \"value\" }}\n * />\n */\nconst queryClient = new QueryClient();\n\nconst TeachMePlugin: React.FC<TeachMePluginProps> = (props) => {\n const inheritedThemeStyles = useILMarketplaceThemeStyles();\n const themeStyles = useMemo(\n () => props.theme ? getILMarketplaceThemeStyles(props.theme) : inheritedThemeStyles,\n [props.theme, inheritedThemeStyles],\n );\n\n return (\n <ILMarketplaceThemeProvider theme={props.theme}>\n <QueryClientProvider client={queryClient}>\n <div style={themeStyles}>\n <TeachMePluginInner {...props} />\n </div>\n </QueryClientProvider>\n </ILMarketplaceThemeProvider>\n );\n};\n\nconst TeachMePluginInner: React.FC<TeachMePluginProps> = ({\n app_integration_id,\n content_mode_mapping_id,\n isOpen,\n onClose,\n pluginPayload,\n token,\n mode,\n config,\n useDynamicForm,\n enableChatLogs,\n externalWorkflowMetaData,\n setSendMessageInChat,\n triggerValidateMessage,\n isMarketPlace,\n renderContinueModal = true,\n showLoader,\n}) => {\n const setTeachMeConfig = useTeachMeConfigStore((state) => state.setTeachMeConfig);\n const clearTeachMeConfig = useTeachMeConfigStore((state) => state.clearTeachMeConfig);\n const setLMSConfig = useLMSConfigStore((state) => state.setLMSConfig);\n const lmsConfig = useLMSConfigStore((state) => state.lmsConfig);\n const { setConfig } = useConfigStore();\n const setExternalWorkflowMetaData = useExternalWorkflowStore((state) => state.setExternalWorkflowMetaData);\n const openContinueModal = useExternalWorkflowStore((state) => state.openContinueModal);\n const tiers = useLearningTemplateStore((state) => state.tiers);\n useEffect(() => {\n setConfig(config);\n useAuthStore.getState().setUser({ ...useAuthStore.getState().user, accessToken: token } as any);\n useEnvStore.getState().setLlmStudioUrl(config?.BASE_URL);\n useLearningTemplateStore.getState().setAppIntegrationId(app_integration_id ?? '');\n if (token) {\n useLearningTemplateStore.getState().setToken(token);\n }\n useLearningTemplateStore.getState().setSelectedRuleSetId(pluginPayload?.ruleSet?.ruleSetId ?? null);\n if (!token || !config?.BASE_URL) return;\n // Preserve LMS preloading while also refreshing for each opened Teach Me\n // popup. Host-provided tiers are already mapping-specific and need no fetch.\n // const shouldPreloadTiers = useLearningTemplateStore.getState().tiers.length === 0;\n if ((tiers.length === 0 || isOpen) && !pluginPayload?.tiers) void fetchTiers();\n if (app_integration_id && !useEnvStore.getState().rbacConfig) {\n fetchRBACConfig(app_integration_id, token)\n .then((data) => {\n if (!data) return;\n const envState = useEnvStore.getState();\n envState.setRbacConfig({\n applicationName: data.application_name ?? '',\n applicationId: data.application_id ?? '',\n moduleId: data.module_data?.Scopes ?? '',\n applicationModuleId: data.module_data?.General ?? '',\n applicationResourceId: data.resource_data?.['Learning Management'] ?? '',\n appsecRbacUrl: envState.appsecRbacUrl ?? '',\n appsecBaseUrl: envState.appsecBaseUrl ?? '',\n });\n })\n .catch((error) => {\n console.error('Error fetching RBAC config for TeachMePlugin:', error);\n });\n }\n }, [app_integration_id, token, config?.BASE_URL, isOpen, pluginPayload?.tiers]);\n const hasTeachMeInPayload = !!pluginPayload?.teachMe;\n const { isLoading: isLMSConfigLoading, isError: isLMSConfigError, refetch: refetchLMSConfig, isSuccess } =\n useLMSConfigQuery(app_integration_id, false, true, content_mode_mapping_id);\n\nuseEffect(() => {\n if (pluginPayload?.teachMe) {\n const config = pluginPayload.teachMe;\n\n if (config.teachMe) {\n setTeachMeConfig(config.teachMe);\n }\n\n if (config.template) {\n useLearningTemplateStore\n .getState()\n .setTemplateData(app_integration_id ?? \"\", config.template);\n }\n\n if (config.learningManagement) {\n setLMSConfig({\n ...config.learningManagement,\n agents: config.agents ?? {},\n externalWorkflowMetaData:\n config.teachMe?.externalWorkflowMetaData ?? {\n enableExternalWorkflow: false,\n current_mode: \"\",\n sub_mode: \"\",\n next_mode: \"\",\n externalWorkflowModal: {\n heading: \"\",\n options: {\n saveDraft: {\n title: \"\",\n desc: \"\",\n footerDesc: \"\",\n },\n configureNow: {\n title: \"\",\n desc: \"\",\n footerDesc: \"\",\n },\n },\n },\n },\n });\n }\n }\n\n if (pluginPayload?.tiers) {\n useLearningTemplateStore.getState().setTiers(pluginPayload.tiers);\n }\n}, [pluginPayload]);\n\n useEffect(() => {\n if (externalWorkflowMetaData) {\n setExternalWorkflowMetaData(externalWorkflowMetaData);\n }\n }, [externalWorkflowMetaData, setExternalWorkflowMetaData]);\n\n // Marketplace templates pick their Category/Sub-Category from the marketplace domain tree, which\n // is keyed by the same app_integration_id already passed in — so the plugin fetches it rather than\n // every caller repeating the request and the reshaping.\n const { data: marketplaceDomainsResponse } = useQuery({\n queryKey: ['teachme-marketplace-domains', app_integration_id, content_mode_mapping_id],\n queryFn: () => fetchMarketplaceDomains(app_integration_id!, token, config?.BASE_URL, {\n content_mode_mapping_id,\n }),\n enabled: Boolean(\n isMarketPlace &&\n pluginPayload?.dynamicOptions === undefined &&\n app_integration_id &&\n content_mode_mapping_id\n ),\n staleTime: Infinity,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n });\n\n const resolvedDynamicOptions = useMemo(() => {\n if (!isMarketPlace || pluginPayload?.dynamicOptions !== undefined) return pluginPayload?.dynamicOptions;\n\n const options = buildDynamicOptionsFromMarketplaceDomains(\n marketplaceDomainsResponse?.responseData?.data?.data\n );\n // Falls back while the request is in flight, and if the tree comes back empty.\n return options.categoryOptions.length ? options : pluginPayload?.dynamicOptions;\n }, [isMarketPlace, marketplaceDomainsResponse, pluginPayload?.dynamicOptions]);\n\n // const handleClose = () => {\n // const isExternalWorkflowExists = dt(`${EXTERNAL_WORKFLOW_METADATA_DT_PATH}.enableExternalWorkflow`, 'false') === 'true';\n // console.log('teach me ', dt(`${EXTERNAL_WORKFLOW_METADATA_DT_PATH}`));\n // console.log('TeachMePlugin: handleClose called. isExternalWorkflowExists:', isExternalWorkflowExists);\n // onClose();\n // if (true) {\n // openContinueModal();\n // }\n\n // };\n\n return (\n <>\n <TeachMeWrapper\n app_integration_id={app_integration_id}\n content_mode_mapping_id={content_mode_mapping_id}\n isOpen={isOpen}\n onClose={onClose}\n token={token}\n templateRegistry={TemplateRegistry}\n baseURL={config?.BASE_URL}\n initialScope={pluginPayload?.initialScope ?? \"\"}\n ruleSet={pluginPayload?.ruleSet}\n useDynamicForm={useDynamicForm}\n enableChatLogs={enableChatLogs}\n pluginPayload={{\n ...pluginPayload,\n dynamicOptions: resolvedDynamicOptions,\n mode,\n triggerValidateMessage,\n }}\n setSendMessageInChat={setSendMessageInChat}\n showLoader={showLoader}\n />\n {renderContinueModal && <ContinueWithTemplateModal />}\n </>\n );\n};\n\nexport default TeachMePlugin;\n"],"names":["DefaultTeachMeRenderer","RadioTrafficLearningRenderer","GuidelinesTeachMeRenderer","QueryClient","useILMarketplaceThemeStyles","useMemo","getILMarketplaceThemeStyles","ILMarketplaceThemeProvider","jsx","QueryClientProvider","useTeachMeConfigStore","useLMSConfigStore","useConfigStore","useExternalWorkflowStore","useLearningTemplateStore","useEffect","_a","useAuthStore","useEnvStore","fetchTiers","fetchRBACConfig","_b","useLMSConfigQuery","config","useQuery","fetchMarketplaceDomains","buildDynamicOptionsFromMarketplaceDomains","jsxs","Fragment","TeachMeWrapper","ContinueWithTemplateModal"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqHO,MAAM,gBAAkE,GAAA;AAAA,EAC7E,SAAW,EAAAA,iCAAA;AAAA,EACX,wBAA0B,EAAAC,uCAAA;AAAA,EAC1B,YAAc,EAAAC,oCAAA;AAAA;AAAA;AAGhB,EAAA;AAqBA,MAAM,WAAA,GAAc,IAAIC,sBAAY,EAAA,CAAA;AAEpC,MAAM,aAAA,GAA8C,CAAC,KAAU,KAAA;AAC7D,EAAA,MAAM,uBAAuBC,4CAA4B,EAAA,CAAA;AACzD,EAAA,MAAM,WAAc,GAAAC,aAAA;AAAA,IAClB,MAAM,KAAM,CAAA,KAAA,GAAQC,4CAA4B,CAAA,KAAA,CAAM,KAAK,CAAI,GAAA,oBAAA;AAAA,IAC/D,CAAC,KAAM,CAAA,KAAA,EAAO,oBAAoB,CAAA;AAAA,GACpC,CAAA;AAEA,EAAA,sCACGC,2CAA2B,EAAA,EAAA,KAAA,EAAO,MAAM,KACvC,EAAA,QAAA,kBAAAC,cAAA,CAACC,kCAAoB,MAAQ,EAAA,WAAA,EAC3B,yCAAC,KAAI,EAAA,EAAA,KAAA,EAAO,aACV,QAAC,kBAAAD,cAAA,CAAA,kBAAA,EAAA,EAAoB,GAAG,KAAO,EAAA,CAAA,EACjC,GACF,CACF,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEA,MAAM,qBAAmD,CAAC;AAAA,EACxD,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,wBAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAsB,GAAA,IAAA;AAAA,EACtB,UAAA;AACF,CAAM,KAAA;AArLN,EAAA,IAAA,EAAA,CAAA;AAsLE,EAAA,MAAM,gBAAmB,GAAAE,uCAAA,CAAsB,CAAC,KAAA,KAAU,MAAM,gBAAgB,CAAA,CAAA;AAChF,EAA2BA,uCAAA,CAAsB,CAAC,KAAA,KAAU,MAAM,kBAAkB,EAAA;AACpF,EAAA,MAAM,YAAe,GAAAC,mCAAA,CAAkB,CAAC,KAAA,KAAU,MAAM,YAAY,CAAA,CAAA;AACpE,EAAkBA,mCAAA,CAAkB,CAAC,KAAA,KAAU,MAAM,SAAS,EAAA;AAC9D,EAAM,MAAA,EAAE,SAAU,EAAA,GAAIC,6BAAe,EAAA,CAAA;AACrC,EAAA,MAAM,2BAA8B,GAAAC,iDAAA,CAAyB,CAAC,KAAA,KAAU,MAAM,2BAA2B,CAAA,CAAA;AACzG,EAA0BA,iDAAA,CAAyB,CAAC,KAAA,KAAU,MAAM,iBAAiB,EAAA;AACrF,EAAA,MAAM,KAAQ,GAAAC,iDAAA,CAAyB,CAAC,KAAA,KAAU,MAAM,KAAK,CAAA,CAAA;AAC7D,EAAAC,eAAA,CAAU,MAAM;AA9LlB,IAAA,IAAAC,GAAA,EAAA,EAAA,CAAA;AA+LI,IAAA,SAAA,CAAU,MAAM,CAAA,CAAA;AAChB,IAAaC,uBAAA,CAAA,QAAA,EAAW,CAAA,OAAA,CAAQ,EAAE,GAAGA,uBAAa,CAAA,QAAA,EAAW,CAAA,IAAA,EAAM,WAAa,EAAA,KAAA,EAAc,CAAA,CAAA;AAC9F,IAAAC,sBAAA,CAAY,QAAS,EAAA,CAAE,eAAgB,CAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,QAAQ,CAAA,CAAA;AACvD,IAAAJ,iDAAA,CAAyB,QAAS,EAAA,CAAE,mBAAoB,CAAA,kBAAA,IAAA,IAAA,GAAA,kBAAA,GAAsB,EAAE,CAAA,CAAA;AAChF,IAAA,IAAI,KAAO,EAAA;AACT,MAAyBA,iDAAA,CAAA,QAAA,EAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,KACpD;AACA,IAAyBA,iDAAA,CAAA,QAAA,EAAW,CAAA,oBAAA,CAAA,CAAqB,EAAAE,GAAAA,CAAAA,GAAAA,GAAA,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,OAAA,KAAf,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAwB,SAAxB,KAAA,IAAA,GAAA,EAAA,GAAqC,IAAI,CAAA,CAAA;AAClG,IAAA,IAAI,CAAC,KAAA,IAAS,EAAC,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,QAAU,CAAA,EAAA,OAAA;AAIjC,IAAK,IAAA,CAAA,KAAA,CAAM,WAAW,CAAK,IAAA,MAAA,KAAW,EAAC,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,KAAA,CAAA,OAAYG,oBAAW,EAAA,CAAA;AAC7E,IAAA,IAAI,kBAAsB,IAAA,CAACD,sBAAY,CAAA,QAAA,GAAW,UAAY,EAAA;AAC5D,MAAAE,yBAAA,CAAgB,kBAAoB,EAAA,KAAK,CACtC,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA;AA9MxB,QAAA,IAAAJ,KAAAK,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA+MU,QAAA,IAAI,CAAC,IAAM,EAAA,OAAA;AACX,QAAM,MAAA,QAAA,GAAWH,uBAAY,QAAS,EAAA,CAAA;AACtC,QAAA,QAAA,CAAS,aAAc,CAAA;AAAA,UACrB,eAAiBF,EAAAA,CAAAA,GAAAA,GAAA,IAAK,CAAA,gBAAA,KAAL,OAAAA,GAAyB,GAAA,EAAA;AAAA,UAC1C,aAAeK,EAAAA,CAAAA,GAAAA,GAAA,IAAK,CAAA,cAAA,KAAL,OAAAA,GAAuB,GAAA,EAAA;AAAA,UACtC,QAAU,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,WAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,WAAlB,IAA4B,GAAA,EAAA,GAAA,EAAA;AAAA,UACtC,mBAAqB,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,WAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,YAAlB,IAA6B,GAAA,EAAA,GAAA,EAAA;AAAA,UAClD,qBAAuB,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,aAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,2BAArB,IAA+C,GAAA,EAAA,GAAA,EAAA;AAAA,UACtE,aAAA,EAAA,CAAe,EAAS,GAAA,QAAA,CAAA,aAAA,KAAT,IAA0B,GAAA,EAAA,GAAA,EAAA;AAAA,UACzC,aAAA,EAAA,CAAe,EAAS,GAAA,QAAA,CAAA,aAAA,KAAT,IAA0B,GAAA,EAAA,GAAA,EAAA;AAAA,SAC1C,CAAA,CAAA;AAAA,OACF,CAAA,CACA,KAAM,CAAA,CAAC,KAAU,KAAA;AAChB,QAAQ,OAAA,CAAA,KAAA,CAAM,iDAAiD,KAAK,CAAA,CAAA;AAAA,OACrE,CAAA,CAAA;AAAA,KACL;AAAA,GACF,EAAG,CAAC,kBAAoB,EAAA,KAAA,EAAO,iCAAQ,QAAU,EAAA,MAAA,EAAQ,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,KAAK,CAAC,CAAA,CAAA;AAC9E,EAA4B,CAAC,EAAC,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,OAAA,EAAA;AAC7C,EACEC,mCAAA,CAAkB,kBAAoB,EAAA,KAAA,EAAO,MAAM,uBAAuB,EAAA;AAE9E,EAAAP,eAAA,CAAU,MAAM;AApOhB,IAAA,IAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAqOE,IAAA,IAAI,+CAAe,OAAS,EAAA;AAC1B,MAAA,MAAMO,UAAS,aAAc,CAAA,OAAA,CAAA;AAE7B,MAAA,IAAIA,QAAO,OAAS,EAAA;AAClB,QAAA,gBAAA,CAAiBA,QAAO,OAAO,CAAA,CAAA;AAAA,OACjC;AAEA,MAAA,IAAIA,QAAO,QAAU,EAAA;AACnB,QAAAT,iDAAA,CACG,UACA,CAAA,eAAA,CAAgB,kBAAsB,IAAA,IAAA,GAAA,kBAAA,GAAA,EAAA,EAAIS,QAAO,QAAQ,CAAA,CAAA;AAAA,OAC9D;AAEA,MAAA,IAAIA,QAAO,kBAAoB,EAAA;AAC7B,QAAa,YAAA,CAAA;AAAA,UACX,GAAGA,OAAO,CAAA,kBAAA;AAAA,UACV,SAAQP,GAAAO,GAAAA,OAAAA,CAAO,MAAP,KAAA,IAAA,GAAAP,MAAiB,EAAC;AAAA,UAC1B,2BACE,EAAAO,GAAAA,CAAAA,EAAAA,GAAAA,OAAAA,CAAO,OAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,6BAAhB,IAA4C,GAAA,EAAA,GAAA;AAAA,YAC1C,sBAAwB,EAAA,KAAA;AAAA,YACxB,YAAc,EAAA,EAAA;AAAA,YACd,QAAU,EAAA,EAAA;AAAA,YACV,SAAW,EAAA,EAAA;AAAA,YACX,qBAAuB,EAAA;AAAA,cACrB,OAAS,EAAA,EAAA;AAAA,cACT,OAAS,EAAA;AAAA,gBACP,SAAW,EAAA;AAAA,kBACT,KAAO,EAAA,EAAA;AAAA,kBACP,IAAM,EAAA,EAAA;AAAA,kBACN,UAAY,EAAA,EAAA;AAAA,iBACd;AAAA,gBACA,YAAc,EAAA;AAAA,kBACZ,KAAO,EAAA,EAAA;AAAA,kBACP,IAAM,EAAA,EAAA;AAAA,kBACN,UAAY,EAAA,EAAA;AAAA,iBACd;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SACH,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAEA,IAAA,IAAI,+CAAe,KAAO,EAAA;AACxB,MAAAT,iDAAA,CAAyB,QAAS,EAAA,CAAE,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,KAClE;AAAA,GACF,EAAG,CAAC,aAAa,CAAC,CAAA,CAAA;AAEhB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,wBAA0B,EAAA;AAC5B,MAAA,2BAAA,CAA4B,wBAAwB,CAAA,CAAA;AAAA,KACtD;AAAA,GACC,EAAA,CAAC,wBAA0B,EAAA,2BAA2B,CAAC,CAAA,CAAA;AAK1D,EAAA,MAAM,EAAE,IAAA,EAAM,0BAA2B,EAAA,GAAIS,mBAAS,CAAA;AAAA,IACpD,QAAU,EAAA,CAAC,6BAA+B,EAAA,kBAAA,EAAoB,uBAAuB,CAAA;AAAA,IACrF,SAAS,MAAMC,yCAAA,CAAwB,kBAAqB,EAAA,KAAA,EAAO,iCAAQ,QAAU,EAAA;AAAA,MACnF,uBAAA;AAAA,KACD,CAAA;AAAA,IACD,OAAS,EAAA,OAAA;AAAA,MACP,aACA,IAAA,CAAA,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,cAAmB,MAAA,KAAA,CAAA,IAClC,kBACA,IAAA,uBAAA;AAAA,KACF;AAAA,IACA,SAAW,EAAA,QAAA;AAAA,IACX,cAAgB,EAAA,KAAA;AAAA,IAChB,oBAAsB,EAAA,KAAA;AAAA,GACvB,CAAA,CAAA;AAED,EAAM,MAAA,sBAAA,GAAyBpB,cAAQ,MAAM;AA9S/C,IAAA,IAAAW,GAAA,EAAA,EAAA,CAAA;AA+SI,IAAA,IAAI,CAAC,aAAiB,IAAA,CAAA,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,cAAmB,MAAA,KAAA,CAAA,SAAkB,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,cAAA,CAAA;AAEzF,IAAA,MAAM,OAAU,GAAAU,+CAAA;AAAA,MAAA,CACd,MAAAV,GAAA,GAAA,0BAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,0BAAA,CAA4B,iBAA5B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAA0C,SAA1C,IAAgD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA;AAAA,KAClD,CAAA;AAEA,IAAA,OAAO,OAAQ,CAAA,eAAA,CAAgB,MAAS,GAAA,OAAA,GAAU,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,cAAA,CAAA;AAAA,KAChE,CAAC,aAAA,EAAe,0BAA4B,EAAA,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,cAAc,CAAC,CAAA,CAAA;AAa7E,EAAA,uBAEIW,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAApB,cAAA;AAAA,MAACqB,yBAAA;AAAA,MAAA;AAAA,QACC,kBAAA;AAAA,QACA,uBAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,gBAAkB,EAAA,gBAAA;AAAA,QAClB,SAAS,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,QAAA;AAAA,QACjB,YAAA,EAAA,CAAc,EAAe,GAAA,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,YAAA,KAAf,IAA+B,GAAA,EAAA,GAAA,EAAA;AAAA,QAC7C,SAAS,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,OAAA;AAAA,QACxB,cAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAe,EAAA;AAAA,UACb,GAAG,aAAA;AAAA,UACH,cAAgB,EAAA,sBAAA;AAAA,UAChB,IAAA;AAAA,UACA,sBAAA;AAAA,SACF;AAAA,QACA,oBAAA;AAAA,QACA,UAAA;AAAA,OAAA;AAAA,KACF;AAAA,IACC,mBAAA,mCAAwBC,oCAA0B,EAAA,EAAA,CAAA;AAAA,GACrD,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEA,sBAAe,aAAA;;;;;"}
@@ -169,6 +169,10 @@ const ChatComponent = ({
169
169
  () => isInputEmpty || isFormValidating || !!isGlobalEditActive || isLastMessageUser,
170
170
  [isInputEmpty, isFormValidating, isGlobalEditActive, isLastMessageUser]
171
171
  );
172
+ const accessTokenRef = React.useRef(user == null ? void 0 : user.accessToken);
173
+ React.useEffect(() => {
174
+ accessTokenRef.current = user == null ? void 0 : user.accessToken;
175
+ }, [user == null ? void 0 : user.accessToken]);
172
176
  React.useEffect(() => {
173
177
  if (initialDraftMessage && !userInput) {
174
178
  setUserInput(initialDraftMessage);
@@ -814,6 +818,11 @@ ${liveContent}` : liveContent;
814
818
  }
815
819
  return meta;
816
820
  };
821
+ const liveHeaders = {
822
+ get Authorization() {
823
+ return accessTokenRef.current ? `Bearer ${accessTokenRef.current}` : void 0;
824
+ }
825
+ };
817
826
  const params = {
818
827
  WEBSOCKET_URL: baseWebsocketUrl,
819
828
  organizationName,
@@ -831,9 +840,7 @@ ${liveContent}` : liveContent;
831
840
  chatPreviewId: chatPreviewIdRef.current,
832
841
  customMetaData: resolveMetaData(customMetaData),
833
842
  aiModel: "",
834
- additionalHeaders: (user == null ? void 0 : user.accessToken) ? {
835
- Authorization: `Bearer ${user.accessToken}`
836
- } : void 0,
843
+ additionalHeaders: liveHeaders,
837
844
  enableLogs: true,
838
845
  logControls: {
839
846
  infoLogs: enableChatLogs,