@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.
- 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 +10 -3
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/ChatComponent.js.map +1 -1
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/NormalChat.js +11 -3
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/NormalChat.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 +10 -3
- package/dist/features/IL-OTJ/_components/ChatComponents/ChatComponent.js.map +1 -1
- package/dist/features/IL-OTJ/_components/ChatComponents/NormalChat.js +11 -3
- package/dist/features/IL-OTJ/_components/ChatComponents/NormalChat.js.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/package.json +4 -5
|
@@ -67,9 +67,12 @@ const TeachMePluginInner = ({
|
|
|
67
67
|
useAuthStore.getState().setUser({ ...useAuthStore.getState().user, accessToken: token });
|
|
68
68
|
useEnvStore.getState().setLlmStudioUrl(config == null ? void 0 : config.BASE_URL);
|
|
69
69
|
useLearningTemplateStore.getState().setAppIntegrationId(app_integration_id != null ? app_integration_id : "");
|
|
70
|
+
if (token) {
|
|
71
|
+
useLearningTemplateStore.getState().setToken(token);
|
|
72
|
+
}
|
|
70
73
|
useLearningTemplateStore.getState().setSelectedRuleSetId((_b = (_a2 = pluginPayload == null ? void 0 : pluginPayload.ruleSet) == null ? void 0 : _a2.ruleSetId) != null ? _b : null);
|
|
71
74
|
if (!token || !(config == null ? void 0 : config.BASE_URL)) return;
|
|
72
|
-
if (tiers.length === 0 && !(pluginPayload == null ? void 0 : pluginPayload.tiers)) fetchTiers();
|
|
75
|
+
if ((tiers.length === 0 || isOpen) && !(pluginPayload == null ? void 0 : pluginPayload.tiers)) void fetchTiers();
|
|
73
76
|
if (app_integration_id && !useEnvStore.getState().rbacConfig) {
|
|
74
77
|
fetchRBACConfig(app_integration_id, token).then((data) => {
|
|
75
78
|
var _a3, _b2, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
@@ -88,7 +91,7 @@ const TeachMePluginInner = ({
|
|
|
88
91
|
console.error("Error fetching RBAC config for TeachMePlugin:", error);
|
|
89
92
|
});
|
|
90
93
|
}
|
|
91
|
-
}, [app_integration_id, token, config == null ? void 0 : config.BASE_URL]);
|
|
94
|
+
}, [app_integration_id, token, config == null ? void 0 : config.BASE_URL, isOpen, pluginPayload == null ? void 0 : pluginPayload.tiers]);
|
|
92
95
|
!!(pluginPayload == null ? void 0 : pluginPayload.teachMe);
|
|
93
96
|
useLMSConfigQuery(app_integration_id, false, true, content_mode_mapping_id);
|
|
94
97
|
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":["_a","_b","config"],"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":["_a","_b","config"],"mappings":"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"}
|
|
@@ -159,6 +159,10 @@ const ChatComponent = ({
|
|
|
159
159
|
() => isInputEmpty || isFormValidating || !!isGlobalEditActive || isLastMessageUser,
|
|
160
160
|
[isInputEmpty, isFormValidating, isGlobalEditActive, isLastMessageUser]
|
|
161
161
|
);
|
|
162
|
+
const accessTokenRef = useRef(user == null ? void 0 : user.accessToken);
|
|
163
|
+
useEffect(() => {
|
|
164
|
+
accessTokenRef.current = user == null ? void 0 : user.accessToken;
|
|
165
|
+
}, [user == null ? void 0 : user.accessToken]);
|
|
162
166
|
useEffect(() => {
|
|
163
167
|
if (initialDraftMessage && !userInput) {
|
|
164
168
|
setUserInput(initialDraftMessage);
|
|
@@ -804,6 +808,11 @@ ${liveContent}` : liveContent;
|
|
|
804
808
|
}
|
|
805
809
|
return meta;
|
|
806
810
|
};
|
|
811
|
+
const liveHeaders = {
|
|
812
|
+
get Authorization() {
|
|
813
|
+
return accessTokenRef.current ? `Bearer ${accessTokenRef.current}` : void 0;
|
|
814
|
+
}
|
|
815
|
+
};
|
|
807
816
|
const params = {
|
|
808
817
|
WEBSOCKET_URL: baseWebsocketUrl,
|
|
809
818
|
organizationName,
|
|
@@ -821,9 +830,7 @@ ${liveContent}` : liveContent;
|
|
|
821
830
|
chatPreviewId: chatPreviewIdRef.current,
|
|
822
831
|
customMetaData: resolveMetaData(customMetaData),
|
|
823
832
|
aiModel: "",
|
|
824
|
-
additionalHeaders:
|
|
825
|
-
Authorization: `Bearer ${user.accessToken}`
|
|
826
|
-
} : void 0,
|
|
833
|
+
additionalHeaders: liveHeaders,
|
|
827
834
|
enableLogs: true,
|
|
828
835
|
logControls: {
|
|
829
836
|
infoLogs: enableChatLogs,
|