@adminide-stack/yantra-mobile 12.0.28-alpha.62 → 12.0.28-alpha.63

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.
@@ -1,31 +1,94 @@
1
- import {DEFAULT_PRODUCTION_TAG_ID}from'@adminide-stack/core/lib/constants/defaultIds.js';import {useSettings}from'@adminide-stack/platform-client';import {ContributionSchemaId}from'common';import {useGetContextDataQuery,useAccountProfileQuery,useGetProjectsLazyQuery,useQuickCreateProjectForAccountBkMutation,useCreateVaultMutation}from'common/graphql';import {useState,useRef,useEffect}from'react';const uuidToObjectId = (uuid) => uuid.replace(/-/g, "").substring(0, 24);
1
+ import {DEFAULT_PRODUCTION_TAG_ID}from'@adminide-stack/core/lib/constants/defaultIds.js';import {useSettings}from'@adminide-stack/platform-client';import {ContributionSchemaId}from'common';import {useGetContextDataQuery,useAccountProfileQuery,useGetProjectsLazyQuery,useQuickCreateProjectForAccountBkMutation,useCreateVaultMutation}from'common/graphql';import {useState,useRef,useEffect}from'react';var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ const uuidToObjectId = (uuid) => uuid.replace(/-/g, "").substring(0, 24);
2
18
  const PROJECT_NAME = "DEFAULT_YANTRA_PROJECT";
3
19
  const TAG_ID = uuidToObjectId(DEFAULT_PRODUCTION_TAG_ID);
20
+ const FALLBACK_SETTINGS_URI = {
21
+ scheme: "cdecode",
22
+ authority: "default",
23
+ path: "/",
24
+ fragment: "settings"
25
+ };
26
+ function toUriInput(value) {
27
+ const uri = value;
28
+ if (uri && typeof uri.scheme === "string" && typeof uri.path === "string") {
29
+ return {
30
+ scheme: uri.scheme,
31
+ authority: typeof uri.authority === "string" ? uri.authority : "default",
32
+ path: uri.path || "/",
33
+ fragment: typeof uri.fragment === "string" ? uri.fragment : "settings"
34
+ };
35
+ }
36
+ if (uri && typeof uri.external === "string") {
37
+ try {
38
+ const parsed = new URL(uri.external);
39
+ return {
40
+ scheme: parsed.protocol.replace(":", "") || "cdecode",
41
+ authority: parsed.hostname || "default",
42
+ path: parsed.pathname || "/",
43
+ fragment: parsed.hash ? parsed.hash.replace("#", "") : "settings"
44
+ };
45
+ } catch (e) {
46
+ return __spreadValues({}, FALLBACK_SETTINGS_URI);
47
+ }
48
+ }
49
+ return __spreadValues({}, FALLBACK_SETTINGS_URI);
50
+ }
4
51
  function usePrerequisiteIds() {
5
- var _a, _b, _c, _d, _e;
52
+ var _a, _b, _c;
53
+ const getProjectValue = (value) => {
54
+ if (!value) return "";
55
+ if (typeof value.project === "string") return value.project.trim();
56
+ if (typeof value.projectId === "string") return value.projectId.trim();
57
+ return "";
58
+ };
6
59
  const {
7
60
  data: contextData,
8
61
  loading: contextLoading
9
62
  } = useGetContextDataQuery();
10
63
  const cdecodeUri = (_a = contextData == null ? void 0 : contextData.getContextData) == null ? void 0 : _a.cdecodeUri;
64
+ const settingsResourceUri = toUriInput(cdecodeUri);
11
65
  const {
12
66
  data: defaultAccount,
13
67
  loading: accountSettingsLoading
14
68
  } = useSettings({
15
- resourceUri: cdecodeUri,
69
+ resourceUri: settingsResourceUri,
16
70
  options: {
17
71
  schemaId: ContributionSchemaId.Configuration,
18
72
  configKey: "account.default",
19
73
  includeMarketplace: true
20
- },
21
- skip: !cdecodeUri
74
+ }
22
75
  });
23
- const settingsLoading = contextLoading || !cdecodeUri || accountSettingsLoading;
24
- const pageSettings = defaultAccount == null ? void 0 : defaultAccount.pageSettings;
25
- const accountDefaults = (_c = (_b = pageSettings == null ? void 0 : pageSettings.settings) != null ? _b : defaultAccount) != null ? _c : {};
26
- const orgFromFlattened = defaultAccount == null ? void 0 : defaultAccount.organization;
27
- const orgName = accountDefaults.organization || orgFromFlattened || null;
28
- const rawSettingsProjectId = accountDefaults.project || (defaultAccount == null ? void 0 : defaultAccount.project) || null;
76
+ const settingsLoading = contextLoading || accountSettingsLoading;
77
+ const defaultAccountAny = defaultAccount;
78
+ const pageSettings = defaultAccountAny == null ? void 0 : defaultAccountAny.pageSettings;
79
+ const pageSettingsSettings = typeof (pageSettings == null ? void 0 : pageSettings.settings) === "string" ? (() => {
80
+ try {
81
+ return JSON.parse(pageSettings.settings);
82
+ } catch (e) {
83
+ return void 0;
84
+ }
85
+ })() : pageSettings == null ? void 0 : pageSettings.settings;
86
+ const orgFromPageSettings = typeof (pageSettingsSettings == null ? void 0 : pageSettingsSettings.organization) === "string" ? pageSettingsSettings.organization.trim() : "";
87
+ const projectFromPageSettings = getProjectValue(pageSettingsSettings);
88
+ const orgFromTopLevel = typeof (defaultAccountAny == null ? void 0 : defaultAccountAny.organization) === "string" ? defaultAccountAny.organization.trim() : "";
89
+ const projectFromTopLevel = getProjectValue(defaultAccountAny);
90
+ const orgName = orgFromPageSettings || orgFromTopLevel || null;
91
+ const rawSettingsProjectId = projectFromPageSettings || projectFromTopLevel || null;
29
92
  const settingsProjectId = rawSettingsProjectId;
30
93
  const [resolvedProjectId, setResolvedProjectId] = useState(null);
31
94
  const [isInitializingProject, setIsInitializingProject] = useState(false);
@@ -36,7 +99,7 @@ function usePrerequisiteIds() {
36
99
  data: accountProfileData,
37
100
  loading: userLoading
38
101
  } = useAccountProfileQuery();
39
- const userId = (_e = (_d = accountProfileData == null ? void 0 : accountProfileData.accountProfile) == null ? void 0 : _d.user) == null ? void 0 : _e.id;
102
+ const userId = (_c = (_b = accountProfileData == null ? void 0 : accountProfileData.accountProfile) == null ? void 0 : _b.user) == null ? void 0 : _c.id;
40
103
  const [fetchProjects] = useGetProjectsLazyQuery();
41
104
  const [createProject, {
42
105
  error: createError,
@@ -1 +1 @@
1
- {"version":3,"file":"usePrerequisiteIds.js","sources":["../../src/hooks/usePrerequisiteIds.ts"],"sourcesContent":["import { DEFAULT_PRODUCTION_TAG_ID } from '@adminide-stack/core/lib/constants/defaultIds.js';\nimport { useSettings } from '@adminide-stack/platform-client';\nimport { ContributionSchemaId } from 'common';\nimport {\n useAccountProfileQuery,\n useCreateVaultMutation,\n useGetContextDataQuery,\n useGetProjectsLazyQuery,\n useQuickCreateProjectForAccountBkMutation,\n} from 'common/graphql';\nimport { useEffect, useRef, useState } from 'react';\n\nconst uuidToObjectId = (uuid: string) => uuid.replace(/-/g, '').substring(0, 24);\n\nconst PROJECT_NAME = 'DEFAULT_YANTRA_PROJECT';\nconst TAG_ID = uuidToObjectId(DEFAULT_PRODUCTION_TAG_ID);\n\n/**\n * Same data as web: org + project public UUID from `account.default`, loaded via\n * `useSettings` (Apollo page settings). On mobile we use `useGetContextDataQuery`\n * for `cdecodeUri` instead of Remix loader data (useSettingsLoader is web-oriented).\n */\nexport function usePrerequisiteIds() {\n const { data: contextData, loading: contextLoading } = useGetContextDataQuery();\n const cdecodeUri = contextData?.getContextData?.cdecodeUri;\n\n const { data: defaultAccount, loading: accountSettingsLoading } = useSettings({\n resourceUri: cdecodeUri as never,\n options: {\n schemaId: ContributionSchemaId.Configuration,\n configKey: 'account.default',\n includeMarketplace: true,\n },\n skip: !cdecodeUri,\n });\n\n const settingsLoading = contextLoading || !cdecodeUri || accountSettingsLoading;\n\n const pageSettings = (defaultAccount as { pageSettings?: { settings?: unknown } } | undefined)?.pageSettings;\n const accountDefaults = (pageSettings?.settings ?? defaultAccount ?? {}) as {\n organization?: string;\n project?: string;\n };\n const orgFromFlattened = (defaultAccount as { organization?: string } | undefined)?.organization;\n const orgName = accountDefaults.organization || orgFromFlattened || null;\n const rawSettingsProjectId =\n accountDefaults.project || (defaultAccount as { project?: string } | undefined)?.project || null;\n\n const settingsProjectId = rawSettingsProjectId;\n\n const [resolvedProjectId, setResolvedProjectId] = useState<string | null>(null);\n const [isInitializingProject, setIsInitializingProject] = useState(false);\n const isCreatingRef = useRef(false);\n\n const projectId = settingsProjectId || resolvedProjectId;\n const needsProjectCreation = !settingsLoading && !!orgName && !rawSettingsProjectId && !projectId;\n\n const { data: accountProfileData, loading: userLoading } = useAccountProfileQuery();\n const userId = accountProfileData?.accountProfile?.user?.id;\n\n const [fetchProjects] = useGetProjectsLazyQuery();\n const [createProject, { error: createError, loading: projectCreating }] =\n useQuickCreateProjectForAccountBkMutation();\n const [createVault, { error: vaultCreateError }] = useCreateVaultMutation();\n\n useEffect(() => {\n if (!needsProjectCreation || isCreatingRef.current || !userId || userLoading) {\n return;\n }\n\n isCreatingRef.current = true;\n setIsInitializingProject(true);\n\n createProject({\n variables: {\n input: {\n accountId: userId,\n projectName: PROJECT_NAME,\n },\n },\n onCompleted: (data) => {\n const newMongoProjectId = data.quickCreateProjectForAccount?.id;\n if (!newMongoProjectId) {\n isCreatingRef.current = false;\n setIsInitializingProject(false);\n console.error('[usePrerequisiteIds] Project creation returned no id');\n return;\n }\n\n fetchProjects({\n variables: { orgName: orgName!, limit: 50 },\n })\n .then(({ data: projectsData }) => {\n const createdProject = (projectsData?.getProjects?.data || []).find(\n (project) => project?.id === newMongoProjectId,\n );\n if (createdProject?.projectId) {\n setResolvedProjectId(createdProject.projectId);\n }\n })\n .catch((error) => {\n console.error('[usePrerequisiteIds] Failed to resolve created project UUID:', error.message);\n })\n .finally(() => {\n setIsInitializingProject(false);\n });\n\n createVault({\n variables: {\n input: {\n orgName: orgName!,\n projectId: newMongoProjectId,\n },\n },\n onCompleted: () => {\n console.log('[usePrerequisiteIds] Vault created for project:', newMongoProjectId);\n },\n onError: (error) => {\n console.error('[usePrerequisiteIds] Vault creation failed:', error.message);\n },\n });\n },\n onError: (error) => {\n console.error('[usePrerequisiteIds] Project creation failed:', error.message);\n isCreatingRef.current = false;\n setIsInitializingProject(false);\n },\n });\n }, [createProject, createVault, fetchProjects, needsProjectCreation, orgName, userId, userLoading]);\n\n const isLoading =\n settingsLoading ||\n isInitializingProject ||\n (!rawSettingsProjectId && !projectId && (userLoading || projectCreating));\n\n return {\n projectId,\n orgName,\n accountUserId: userId ?? null,\n tagId: TAG_ID,\n loading: isLoading,\n errors: { createError, vaultCreateError },\n };\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"usePrerequisiteIds.js","sources":["../../src/hooks/usePrerequisiteIds.ts"],"sourcesContent":["import { DEFAULT_PRODUCTION_TAG_ID } from '@adminide-stack/core/lib/constants/defaultIds.js';\nimport { useSettings } from '@adminide-stack/platform-client';\nimport { ContributionSchemaId } from 'common';\nimport {\n useAccountProfileQuery,\n useCreateVaultMutation,\n useGetContextDataQuery,\n useGetProjectsLazyQuery,\n useQuickCreateProjectForAccountBkMutation,\n} from 'common/graphql';\nimport { useEffect, useRef, useState } from 'react';\n\nconst uuidToObjectId = (uuid: string) => uuid.replace(/-/g, '').substring(0, 24);\n\nconst PROJECT_NAME = 'DEFAULT_YANTRA_PROJECT';\nconst TAG_ID = uuidToObjectId(DEFAULT_PRODUCTION_TAG_ID);\nconst FALLBACK_SETTINGS_URI = {\n scheme: 'cdecode',\n authority: 'default',\n path: '/',\n fragment: 'settings',\n} as const;\n\ntype UriLike = {\n scheme?: unknown;\n authority?: unknown;\n path?: unknown;\n fragment?: unknown;\n external?: unknown;\n};\n\nfunction toUriInput(value: unknown): { scheme: string; authority: string; path: string; fragment: string } {\n const uri = value as UriLike | undefined;\n if (uri && typeof uri.scheme === 'string' && typeof uri.path === 'string') {\n return {\n scheme: uri.scheme,\n authority: typeof uri.authority === 'string' ? uri.authority : 'default',\n path: uri.path || '/',\n fragment: typeof uri.fragment === 'string' ? uri.fragment : 'settings',\n };\n }\n\n if (uri && typeof uri.external === 'string') {\n try {\n const parsed = new URL(uri.external);\n return {\n scheme: parsed.protocol.replace(':', '') || 'cdecode',\n authority: parsed.hostname || 'default',\n path: parsed.pathname || '/',\n fragment: parsed.hash ? parsed.hash.replace('#', '') : 'settings',\n };\n } catch {\n return { ...FALLBACK_SETTINGS_URI };\n }\n }\n\n return { ...FALLBACK_SETTINGS_URI };\n}\n\n/**\n * Same data as web: org + project public UUID from `account.default`, loaded via\n * `useSettings` (Apollo page settings). On mobile we use `useGetContextDataQuery`\n * for `cdecodeUri` instead of Remix loader data (useSettingsLoader is web-oriented).\n */\nexport function usePrerequisiteIds() {\n const getProjectValue = (value: { project?: unknown; projectId?: unknown } | undefined): string => {\n if (!value) return '';\n if (typeof value.project === 'string') return value.project.trim();\n if (typeof value.projectId === 'string') return value.projectId.trim();\n return '';\n };\n\n const { data: contextData, loading: contextLoading } = useGetContextDataQuery();\n const cdecodeUri = contextData?.getContextData?.cdecodeUri;\n const settingsResourceUri = toUriInput(cdecodeUri);\n\n const { data: defaultAccount, loading: accountSettingsLoading } = useSettings({\n resourceUri: settingsResourceUri as never,\n options: {\n schemaId: ContributionSchemaId.Configuration,\n configKey: 'account.default',\n includeMarketplace: true,\n },\n });\n\n const settingsLoading = contextLoading || accountSettingsLoading;\n\n const defaultAccountAny = defaultAccount as\n | {\n pageSettings?: { settings?: unknown };\n organization?: unknown;\n project?: unknown;\n projectId?: unknown;\n }\n | undefined;\n const pageSettings = defaultAccountAny?.pageSettings;\n const pageSettingsSettings =\n typeof pageSettings?.settings === 'string'\n ? (() => {\n try {\n return JSON.parse(pageSettings.settings);\n } catch {\n return undefined;\n }\n })()\n : pageSettings?.settings;\n\n const orgFromPageSettings =\n typeof pageSettingsSettings?.organization === 'string' ? pageSettingsSettings.organization.trim() : '';\n const projectFromPageSettings = getProjectValue(\n pageSettingsSettings as { project?: unknown; projectId?: unknown } | undefined,\n );\n\n const orgFromTopLevel =\n typeof defaultAccountAny?.organization === 'string' ? defaultAccountAny.organization.trim() : '';\n const projectFromTopLevel = getProjectValue(defaultAccountAny);\n\n const orgName = orgFromPageSettings || orgFromTopLevel || null;\n const rawSettingsProjectId = projectFromPageSettings || projectFromTopLevel || null;\n\n const settingsProjectId = rawSettingsProjectId;\n\n const [resolvedProjectId, setResolvedProjectId] = useState<string | null>(null);\n const [isInitializingProject, setIsInitializingProject] = useState(false);\n const isCreatingRef = useRef(false);\n\n const projectId = settingsProjectId || resolvedProjectId;\n const needsProjectCreation = !settingsLoading && !!orgName && !rawSettingsProjectId && !projectId;\n\n const { data: accountProfileData, loading: userLoading } = useAccountProfileQuery();\n const userId = accountProfileData?.accountProfile?.user?.id;\n\n const [fetchProjects] = useGetProjectsLazyQuery();\n const [createProject, { error: createError, loading: projectCreating }] =\n useQuickCreateProjectForAccountBkMutation();\n const [createVault, { error: vaultCreateError }] = useCreateVaultMutation();\n\n useEffect(() => {\n if (!needsProjectCreation || isCreatingRef.current || !userId || userLoading) {\n return;\n }\n\n isCreatingRef.current = true;\n setIsInitializingProject(true);\n\n createProject({\n variables: {\n input: {\n accountId: userId,\n projectName: PROJECT_NAME,\n },\n },\n onCompleted: (data) => {\n const newMongoProjectId = data.quickCreateProjectForAccount?.id;\n if (!newMongoProjectId) {\n isCreatingRef.current = false;\n setIsInitializingProject(false);\n console.error('[usePrerequisiteIds] Project creation returned no id');\n return;\n }\n\n fetchProjects({\n variables: { orgName: orgName!, limit: 50 },\n })\n .then(({ data: projectsData }) => {\n const createdProject = (projectsData?.getProjects?.data || []).find(\n (project) => project?.id === newMongoProjectId,\n );\n if (createdProject?.projectId) {\n setResolvedProjectId(createdProject.projectId);\n }\n })\n .catch((error) => {\n console.error('[usePrerequisiteIds] Failed to resolve created project UUID:', error.message);\n })\n .finally(() => {\n setIsInitializingProject(false);\n });\n\n createVault({\n variables: {\n input: {\n orgName: orgName!,\n projectId: newMongoProjectId,\n },\n },\n onCompleted: () => {\n console.log('[usePrerequisiteIds] Vault created for project:', newMongoProjectId);\n },\n onError: (error) => {\n console.error('[usePrerequisiteIds] Vault creation failed:', error.message);\n },\n });\n },\n onError: (error) => {\n console.error('[usePrerequisiteIds] Project creation failed:', error.message);\n isCreatingRef.current = false;\n setIsInitializingProject(false);\n },\n });\n }, [createProject, createVault, fetchProjects, needsProjectCreation, orgName, userId, userLoading]);\n\n const isLoading =\n settingsLoading ||\n isInitializingProject ||\n (!rawSettingsProjectId && !projectId && (userLoading || projectCreating));\n\n return {\n projectId,\n orgName,\n accountUserId: userId ?? null,\n tagId: TAG_ID,\n loading: isLoading,\n errors: { createError, vaultCreateError },\n };\n}\n"],"names":["_a"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {jsx,jsxs}from'react/jsx-runtime';import React,{useState,useMemo,useCallback,useEffect}from'react';import {useWindowDimensions,useColorScheme,View,StyleSheet,Pressable,Platform,Keyboard,TouchableWithoutFeedback}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {getDefaultLeftItems,getDefaultRightItems,Box,Text,InputToolBar}from'@admin-layout/gluestack-ui-mobile';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {useNavigation,useRoute,CommonActions}from'@react-navigation/native';import {MessagesContainerUI}from'@messenger-box/platform-mobile';import {v4}from'uuid';import {ContributionSchemaId}from'common';import {useGetContextDataQuery,useGetPageSettingsQuery}from'common/graphql';import {useGatewayContext}from'../../contexts/GatewayContext.js';import {GatewayToolbarButtonMobile}from'../../components/GatewayToolbarButtonMobile.js';import {useCdecliAutoConnect}from'../../hooks/useCdecliAutoConnect.js';import {usePrerequisiteIds}from'../../hooks/usePrerequisiteIds.js';import {useChatMutations,useChatSessions}from'../../hooks/useChatApi.js';import {useChatStream}from'../../hooks/useChatStream.js';import DeepSearchModal from'./components/DeepSearchModal.js';import ChatHistoryLanding from'./components/ChatHistoryLanding.js';import {normalizeSummaryText,extractDeepSearchSources}from'./deepSearchUtils.js';import {YantraBrandLoader,YANTRA_LOADER_SIZE_COMPACT}from'../../components/YantraBrandLoader.js';import {navigationRef}from'@common-stack/client-react';import {mobileTokens}from'../../theme/mobileTokens.js';var __defProp = Object.defineProperty;
1
+ import {jsx,jsxs}from'react/jsx-runtime';import React,{useState,useMemo,useEffect,useCallback}from'react';import {useWindowDimensions,useColorScheme,Platform,Keyboard,TouchableWithoutFeedback,View,StyleSheet,Pressable}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {getDefaultLeftItems,getDefaultRightItems,Box,Text,InputToolBar}from'@admin-layout/gluestack-ui-mobile';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {useNavigation,useRoute,CommonActions}from'@react-navigation/native';import {MessagesContainerUI}from'@messenger-box/platform-mobile';import {v4}from'uuid';import {ContributionSchemaId}from'common';import {useGetContextDataQuery,useGetPageSettingsQuery}from'common/graphql';import {useGatewayContext}from'../../contexts/GatewayContext.js';import {GatewayToolbarButtonMobile}from'../../components/GatewayToolbarButtonMobile.js';import {useCdecliAutoConnect}from'../../hooks/useCdecliAutoConnect.js';import {usePrerequisiteIds}from'../../hooks/usePrerequisiteIds.js';import {useChatMutations,useChatSessions}from'../../hooks/useChatApi.js';import {useChatStream}from'../../hooks/useChatStream.js';import DeepSearchModal from'./components/DeepSearchModal.js';import ChatHistoryLanding from'./components/ChatHistoryLanding.js';import {normalizeSummaryText,extractDeepSearchSources}from'./deepSearchUtils.js';import {YantraBrandLoader,YANTRA_LOADER_SIZE_COMPACT}from'../../components/YantraBrandLoader.js';import {mobileTokens}from'../../theme/mobileTokens.js';var __defProp = Object.defineProperty;
2
2
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
3
  var __hasOwnProp = Object.prototype.hasOwnProperty;
4
4
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -15,8 +15,7 @@ var __spreadValues = (a, b) => {
15
15
  return a;
16
16
  };
17
17
  const SENDING_LOADER_COMPOSER_RESERVE_PX = 156;
18
- const IOS_KEYBOARD_DOCKING_ADJUST_PX = 10;
19
- const COMPOSER_SCROLL_RESERVE_PX = 136;
18
+ const COMPOSER_SCROLL_RESERVE_PX = 164;
20
19
  function organizationFromSettingsValue(settings) {
21
20
  if (settings == null) return null;
22
21
  if (typeof settings === "string") {
@@ -51,6 +50,115 @@ function projectFromSettingsValue(settings) {
51
50
  }
52
51
  return null;
53
52
  }
53
+ const ChatContentSection = React.memo(function ChatContentSection2({
54
+ contentMaxWidth,
55
+ composerScrollBottomPadding,
56
+ messages,
57
+ response,
58
+ isLoading,
59
+ disabled,
60
+ isStreaming,
61
+ onStop,
62
+ cancel,
63
+ onSend,
64
+ onBackPress
65
+ }) {
66
+ return /* @__PURE__ */ jsx(Box, { flex: 1, width: "100%", alignSelf: "stretch", children: /* @__PURE__ */ jsx(MessagesContainerUI, { mode: "chat", showBackButton: false, onBackPress, compactTop: true, messagesContainerStyle: {
67
+ paddingHorizontal: 0,
68
+ paddingTop: 0,
69
+ paddingBottom: composerScrollBottomPadding,
70
+ margin: 0,
71
+ marginTop: 0,
72
+ alignSelf: "center",
73
+ width: contentMaxWidth
74
+ }, listContentStyle: {
75
+ paddingTop: 0,
76
+ paddingBottom: composerScrollBottomPadding,
77
+ margin: 0,
78
+ marginTop: 0,
79
+ width: contentMaxWidth,
80
+ alignSelf: "center",
81
+ justifyContent: "flex-end"
82
+ }, messages: messages.map((msg, index) => ({
83
+ id: `msg-${index}-${msg.role}`,
84
+ role: msg.role,
85
+ content: msg.content,
86
+ metadata: msg.metadata
87
+ })), streamingContent: response, currentUser: {
88
+ id: "user"
89
+ }, onSend, disabled: isLoading || disabled, isLoading, onStop: isStreaming ? cancel : onStop, renderPlanInputToolbar: () => null, renderBuildInputToolbar: () => null }) });
90
+ });
91
+ const EmptyStateSection = React.memo(function EmptyStateSection2({
92
+ isDark,
93
+ secondaryTextColor,
94
+ primaryTextColor,
95
+ activeMode,
96
+ onModeSwitch
97
+ }) {
98
+ return /* @__PURE__ */ jsx(Box, { flex: 1, width: "100%", children: /* @__PURE__ */ jsxs(View, { style: styles.emptyCenterTitleWrap, children: [
99
+ /* @__PURE__ */ jsx(Text, { style: [styles.emptyEyebrow, {
100
+ color: secondaryTextColor
101
+ }], children: "Choose your mode" }),
102
+ /* @__PURE__ */ jsxs(View, { style: [styles.emptyModePillRow, {
103
+ backgroundColor: isDark ? "rgba(30, 41, 59, 0.9)" : "#eef2ff",
104
+ borderColor: isDark ? "rgba(148, 163, 184, 0.26)" : "rgba(67, 56, 202, 0.15)"
105
+ }], children: [
106
+ /* @__PURE__ */ jsxs(Pressable, { onPress: () => onModeSwitch("chat"), style: [styles.emptyModePill, activeMode === "chat" && styles.emptyModePillActive, activeMode === "chat" && {
107
+ backgroundColor: isDark ? "#312e81" : "#4338ca"
108
+ }], accessibilityRole: "button", accessibilityLabel: "Switch to chat mode", children: [
109
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "magnify", size: 14, color: activeMode === "chat" ? "#ffffff" : secondaryTextColor }),
110
+ /* @__PURE__ */ jsx(Text, { style: [styles.emptyModePillLabel, {
111
+ color: activeMode === "chat" ? "#ffffff" : secondaryTextColor
112
+ }], children: "Chat" })
113
+ ] }),
114
+ /* @__PURE__ */ jsxs(Pressable, { onPress: () => onModeSwitch("deep-search"), style: [styles.emptyModePill, activeMode === "deep-search" && styles.emptyModePillActive, activeMode === "deep-search" && {
115
+ backgroundColor: isDark ? "#312e81" : "#4338ca"
116
+ }], accessibilityRole: "button", accessibilityLabel: "Switch to deep-search mode", children: [
117
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "lightning-bolt-outline", size: 14, color: activeMode === "deep-search" ? "#ffffff" : secondaryTextColor }),
118
+ /* @__PURE__ */ jsx(Text, { style: [styles.emptyModePillLabel, {
119
+ color: activeMode === "deep-search" ? "#ffffff" : secondaryTextColor
120
+ }], children: "Deep Search" })
121
+ ] })
122
+ ] }),
123
+ /* @__PURE__ */ jsx(Text, { style: [styles.emptyCenterTitle, {
124
+ color: primaryTextColor
125
+ }], children: "How do you want to start?" }),
126
+ /* @__PURE__ */ jsx(Text, { style: [styles.emptySubtitle, {
127
+ color: secondaryTextColor
128
+ }], children: "Use Chat for quick help, or Deep Search for researched, source-backed answers." })
129
+ ] }) });
130
+ });
131
+ const HeaderBackButton = React.memo(function HeaderBackButton2({
132
+ color,
133
+ onPress
134
+ }) {
135
+ return /* @__PURE__ */ jsx(Pressable, { onPress, style: ({
136
+ pressed
137
+ }) => [styles.backButton, pressed && styles.newChatButtonPressed], accessibilityLabel: "Back to chat", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "chevron-left", size: 24, color }) });
138
+ });
139
+ const HeaderRightActions = React.memo(function HeaderRightActions2({
140
+ gatewayToolbarStatus,
141
+ gatewayToolbarError,
142
+ onToggleGateway,
143
+ gatewayToolbarLabel,
144
+ gatewayToolbarTone,
145
+ showChatHistory,
146
+ onOpenChatHistory,
147
+ onNewChat,
148
+ isDark,
149
+ accentColor,
150
+ newChatIconColor
151
+ }) {
152
+ return /* @__PURE__ */ jsxs(View, { style: styles.headerRight, children: [
153
+ /* @__PURE__ */ jsx(GatewayToolbarButtonMobile, { gatewayStatus: gatewayToolbarStatus, gatewayError: gatewayToolbarError, onToggleGateway, disabled: false, statusLabel: gatewayToolbarLabel, tone: gatewayToolbarTone }),
154
+ !showChatHistory ? /* @__PURE__ */ jsx(Pressable, { onPress: onOpenChatHistory, style: ({
155
+ pressed
156
+ }) => [styles.historyHeaderButton, pressed && styles.historyHeaderButtonPressed], accessibilityLabel: "Chat history", accessibilityRole: "button", children: /* @__PURE__ */ jsx(View, { style: [styles.historyHeaderButtonInner, isDark ? styles.historyHeaderButtonInnerDark : null], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "history", size: 19, color: accentColor }) }) }) : null,
157
+ /* @__PURE__ */ jsx(Pressable, { onPress: onNewChat, style: ({
158
+ pressed
159
+ }) => [styles.newChatButton, pressed && styles.newChatButtonPressed], accessibilityLabel: "New chat", children: /* @__PURE__ */ jsx(View, { style: [styles.newChatButtonInner, isDark ? styles.newChatButtonInnerDark : null], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "chat-plus-outline", size: 20, color: newChatIconColor }) }) })
160
+ ] });
161
+ });
54
162
  function HomeScreenContent({
55
163
  initialMode = "chat",
56
164
  onSubmit: onSubmitProp,
@@ -137,7 +245,6 @@ function HomeScreenContent({
137
245
  error: chatError,
138
246
  isLoading: chatLoading,
139
247
  isStreaming,
140
- hasMessages,
141
248
  sendMessage,
142
249
  cancel,
143
250
  clearMessages
@@ -155,8 +262,36 @@ function HomeScreenContent({
155
262
  }, [chatLoading, isStreaming, messages]);
156
263
  const pinSendingLoaderNearComposer = useMemo(() => messages.length > 0 || Boolean((response != null ? response : "").trim()), [messages.length, response]);
157
264
  const showSendingLoader = !showChatHistory && (channelBootstrap || waitingForAssistant);
265
+ const hasRenderableConversation = messages.length > 0 || isStreaming;
158
266
  const insets = useSafeAreaInsets();
159
267
  const [keyboardHeight, setKeyboardHeight] = useState(0);
268
+ useEffect(() => {
269
+ if (Platform.OS === "ios") {
270
+ const frameSub = Keyboard.addListener("keyboardWillChangeFrame", (event) => {
271
+ var _a2, _b2;
272
+ return setKeyboardHeight((_b2 = (_a2 = event.endCoordinates) == null ? void 0 : _a2.height) != null ? _b2 : 0);
273
+ });
274
+ const showSub2 = Keyboard.addListener("keyboardWillShow", (event) => {
275
+ var _a2, _b2;
276
+ return setKeyboardHeight((_b2 = (_a2 = event.endCoordinates) == null ? void 0 : _a2.height) != null ? _b2 : 0);
277
+ });
278
+ const hideSub2 = Keyboard.addListener("keyboardWillHide", () => setKeyboardHeight(0));
279
+ return () => {
280
+ frameSub.remove();
281
+ showSub2.remove();
282
+ hideSub2.remove();
283
+ };
284
+ }
285
+ const showSub = Keyboard.addListener("keyboardDidShow", (event) => {
286
+ var _a2, _b2;
287
+ return setKeyboardHeight((_b2 = (_a2 = event.endCoordinates) == null ? void 0 : _a2.height) != null ? _b2 : 0);
288
+ });
289
+ const hideSub = Keyboard.addListener("keyboardDidHide", () => setKeyboardHeight(0));
290
+ return () => {
291
+ showSub.remove();
292
+ hideSub.remove();
293
+ };
294
+ }, []);
160
295
  const handleModeSwitch = useCallback((mode) => {
161
296
  setActiveMode(mode);
162
297
  }, []);
@@ -243,13 +378,11 @@ function HomeScreenContent({
243
378
  const gatewayToolbarTone = "default";
244
379
  const gatewayToolbarLabel = cdecli.status === "connecting" ? "Checking..." : void 0;
245
380
  const gatewayToolbarError = cdecli.error;
246
- const surfaceColor = isDark ? "#0f172a" : mobileTokens.color.bg;
381
+ const surfaceColor = isDark ? "#0f172a" : mobileTokens.color.surface;
247
382
  const primaryTextColor = isDark ? "#e5e7eb" : mobileTokens.color.text;
248
383
  const secondaryTextColor = isDark ? "#94a3b8" : mobileTokens.color.textMuted;
249
384
  const accentColor = isDark ? "#a5b4fc" : "#4338ca";
250
385
  const newChatIconColor = isDark ? "#e5e7eb" : "#000000";
251
- const composerBarBackground = isDark ? "rgba(15, 23, 42, 0.94)" : "rgba(248, 250, 252, 0.97)";
252
- const composerBarBorder = isDark ? "rgba(71, 85, 105, 0.5)" : "rgba(148, 163, 184, 0.25)";
253
386
  const contentMaxWidth = Math.min(720, Math.max(360, screenWidth - 24));
254
387
  useEffect(() => {
255
388
  var _a2, _b2, _c2;
@@ -264,7 +397,6 @@ function HomeScreenContent({
264
397
  const currentOrgName = ((_b2 = (_a2 = route == null ? void 0 : route.params) == null ? void 0 : _a2.orgName) == null ? void 0 : _b2.trim()) || "";
265
398
  if (hasRehydratedOrgRef.current || currentOrgName || !effectiveOrgName) return;
266
399
  hasRehydratedOrgRef.current = true;
267
- console.log("effectiveOrgName..", effectiveOrgName);
268
400
  (_c2 = navigation.getParent()) == null ? void 0 : _c2.dispatch(CommonActions.navigate("MainStack", {
269
401
  screen: "MainStack.Layout.Home",
270
402
  params: {
@@ -273,23 +405,15 @@ function HomeScreenContent({
273
405
  merge: true,
274
406
  key: Date.now().toString()
275
407
  }));
276
- }, [navigation, (_g = route == null ? void 0 : route.params) == null ? void 0 : _g.orgName, effectiveOrgName, navigationRef]);
408
+ }, [navigation, (_g = route == null ? void 0 : route.params) == null ? void 0 : _g.orgName, effectiveOrgName]);
277
409
  useEffect(() => {
410
+ const headerLeft = showChatHistory ? () => /* @__PURE__ */ jsx(HeaderBackButton, { color: primaryTextColor, onPress: handleCloseChatHistory }) : void 0;
411
+ const headerRight = () => /* @__PURE__ */ jsx(HeaderRightActions, { gatewayToolbarStatus, gatewayToolbarError, onToggleGateway: handleToggleGateway, gatewayToolbarLabel, gatewayToolbarTone, showChatHistory, onOpenChatHistory: handleOpenChatHistory, onNewChat: handleNewChat, isDark, accentColor, newChatIconColor });
278
412
  navigation.setOptions({
279
413
  drawerLabel: "Chat",
280
414
  headerTitle: showChatHistory ? "Chats" : "Yantra",
281
- headerLeft: showChatHistory ? () => /* @__PURE__ */ jsx(Pressable, { onPress: handleCloseChatHistory, style: ({
282
- pressed
283
- }) => [styles.backButton, pressed && styles.newChatButtonPressed], accessibilityLabel: "Back to chat", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "chevron-left", size: 24, color: primaryTextColor }) }) : void 0,
284
- headerRight: () => /* @__PURE__ */ jsxs(View, { style: styles.headerRight, children: [
285
- /* @__PURE__ */ jsx(GatewayToolbarButtonMobile, { gatewayStatus: gatewayToolbarStatus, gatewayError: gatewayToolbarError, onToggleGateway: handleToggleGateway, disabled: false, statusLabel: gatewayToolbarLabel, tone: gatewayToolbarTone }),
286
- !showChatHistory ? /* @__PURE__ */ jsx(Pressable, { onPress: handleOpenChatHistory, style: ({
287
- pressed
288
- }) => [styles.historyHeaderButton, pressed && styles.historyHeaderButtonPressed], accessibilityLabel: "Chat history", accessibilityRole: "button", children: /* @__PURE__ */ jsx(View, { style: [styles.historyHeaderButtonInner, isDark ? styles.historyHeaderButtonInnerDark : null], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "history", size: 19, color: accentColor }) }) }) : null,
289
- /* @__PURE__ */ jsx(Pressable, { onPress: handleNewChat, style: ({
290
- pressed
291
- }) => [styles.newChatButton, pressed && styles.newChatButtonPressed], accessibilityLabel: "New chat", children: /* @__PURE__ */ jsx(View, { style: [styles.newChatButtonInner, isDark ? styles.newChatButtonInnerDark : null], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "chat-plus-outline", size: 20, color: newChatIconColor }) }) })
292
- ] })
415
+ headerLeft,
416
+ headerRight
293
417
  });
294
418
  }, [navigation, showChatHistory, handleCloseChatHistory, handleOpenChatHistory, handleNewChat, handleToggleGateway, gatewayToolbarStatus, gatewayToolbarError, gatewayToolbarLabel, gatewayToolbarTone, primaryTextColor, accentColor, newChatIconColor, isDark]);
295
419
  const handleSendMessage = useCallback(async (text) => {
@@ -327,39 +451,6 @@ function HomeScreenContent({
327
451
  setChannelBootstrap(false);
328
452
  }
329
453
  }, [isLoading, disabled, activeMode, onSubmitProp, ensureSessionId, sendMessage]);
330
- const leftItems = getDefaultLeftItems({
331
- search: {
332
- active: activeMode === "chat",
333
- onClick: () => handleModeSwitch("chat")
334
- },
335
- zap: {
336
- active: activeMode === "deep-search",
337
- onClick: () => handleModeSwitch("deep-search")
338
- },
339
- lightbulb: {
340
- enabled: false
341
- }
342
- });
343
- const rightItems = getDefaultRightItems({
344
- tag: {
345
- enabled: false
346
- },
347
- chip: {
348
- enabled: false
349
- },
350
- camera: {
351
- enabled: false,
352
- onClick: () => console.log("camera")
353
- },
354
- image: {
355
- enabled: false,
356
- onClick: () => console.log("image")
357
- },
358
- attach: {
359
- enabled: false,
360
- onClick: () => console.log("attach")
361
- }
362
- });
363
454
  const latestAssistantMessage = useMemo(() => {
364
455
  var _a2, _b2, _c2;
365
456
  for (let i = messages.length - 1; i >= 0; i -= 1) {
@@ -392,40 +483,85 @@ function HomeScreenContent({
392
483
  setChannelBootstrap(false);
393
484
  }
394
485
  }, [deepSearchQuery, isStreaming, ensureSessionId, sendMessage]);
486
+ const handleValueChange = useCallback((e) => {
487
+ setValue(e.nativeEvent.text);
488
+ }, []);
489
+ const handleMicPress = useCallback(() => {
490
+ console.log("mic");
491
+ }, []);
492
+ const handleSelectHistorySession = useCallback((channelId) => {
493
+ setShowChatHistory(false);
494
+ setActiveSessionId(channelId);
495
+ setActiveMode("chat");
496
+ }, []);
497
+ const handleComposeFromHistory = useCallback(() => {
498
+ setShowChatHistory(false);
499
+ setActiveSessionId(null);
500
+ setValue("");
501
+ clearMessages();
502
+ }, [clearMessages]);
503
+ const handleToggleResearchProcess = useCallback(() => {
504
+ setResearchProcessOpen((prev) => !prev);
505
+ }, []);
506
+ const handleToggleSourcesAccordion = useCallback(() => {
507
+ setSourcesAccordionOpen((prev) => !prev);
508
+ }, []);
509
+ const handleRetryDeepSearchPress = useCallback(() => {
510
+ void handleRetryDeepSearch();
511
+ }, [handleRetryDeepSearch]);
395
512
  useEffect(() => {
396
513
  if (!deepSearchQuery || isStreaming || !latestAssistantMessage) return;
397
514
  setDeepSearchSummary(normalizeSummaryText(latestAssistantMessage));
398
515
  setDeepSearchSources(extractDeepSearchSources(latestAssistantMessage));
399
516
  }, [deepSearchQuery, isStreaming, latestAssistantMessage]);
400
- useEffect(() => {
401
- if (Platform.OS === "ios") {
402
- const frameSub = Keyboard.addListener("keyboardWillChangeFrame", (event) => {
403
- var _a2, _b2;
404
- return setKeyboardHeight((_b2 = (_a2 = event.endCoordinates) == null ? void 0 : _a2.height) != null ? _b2 : 0);
405
- });
406
- const showSub2 = Keyboard.addListener("keyboardWillShow", (event) => {
407
- var _a2, _b2;
408
- return setKeyboardHeight((_b2 = (_a2 = event.endCoordinates) == null ? void 0 : _a2.height) != null ? _b2 : 0);
409
- });
410
- const hideSub2 = Keyboard.addListener("keyboardWillHide", () => setKeyboardHeight(0));
411
- return () => {
412
- frameSub.remove();
413
- showSub2.remove();
414
- hideSub2.remove();
415
- };
416
- }
417
- const showSub = Keyboard.addListener("keyboardDidShow", (event) => {
418
- var _a2, _b2;
419
- return setKeyboardHeight((_b2 = (_a2 = event.endCoordinates) == null ? void 0 : _a2.height) != null ? _b2 : 0);
420
- });
421
- const hideSub = Keyboard.addListener("keyboardDidHide", () => setKeyboardHeight(0));
422
- return () => {
423
- showSub.remove();
424
- hideSub.remove();
425
- };
426
- }, []);
427
- const composerBottomOffset = Math.max(0, keyboardHeight - insets.bottom - (Platform.OS === "ios" ? IOS_KEYBOARD_DOCKING_ADJUST_PX : 0));
428
517
  const composerScrollBottomPadding = COMPOSER_SCROLL_RESERVE_PX;
518
+ const leftItems = useMemo(() => getDefaultLeftItems({
519
+ search: {
520
+ active: activeMode === "chat",
521
+ onClick: () => handleModeSwitch("chat")
522
+ },
523
+ zap: {
524
+ active: activeMode === "deep-search",
525
+ onClick: () => handleModeSwitch("deep-search")
526
+ },
527
+ lightbulb: {
528
+ enabled: false
529
+ }
530
+ }), [activeMode, handleModeSwitch]);
531
+ const rightItems = useMemo(() => getDefaultRightItems({
532
+ tag: {
533
+ enabled: false
534
+ },
535
+ chip: {
536
+ enabled: false
537
+ },
538
+ camera: {
539
+ enabled: false,
540
+ onClick: () => console.log("camera")
541
+ },
542
+ image: {
543
+ enabled: false,
544
+ onClick: () => console.log("image")
545
+ },
546
+ attach: {
547
+ enabled: false,
548
+ onClick: () => console.log("attach")
549
+ }
550
+ }), []);
551
+ const inputConfig = useMemo(() => ({
552
+ value,
553
+ onChange: handleValueChange,
554
+ placeholder: inputPlaceholder,
555
+ disabled: isLoading || disabled
556
+ }), [value, handleValueChange, inputPlaceholder, isLoading, disabled]);
557
+ const micSendButton = useMemo(() => ({
558
+ hasContent: canSubmit,
559
+ onSend: () => handleSubmit(),
560
+ onMic: handleMicPress,
561
+ disabled: isLoading || disabled,
562
+ isLoading,
563
+ onStop: isStreaming ? cancel : onStop
564
+ }), [canSubmit, handleSubmit, handleMicPress, isLoading, disabled, isStreaming, cancel, onStop]);
429
565
  return /* @__PURE__ */ jsxs(SafeAreaView, { edges: ["left", "right", "bottom"], style: {
430
566
  flex: 1,
431
567
  backgroundColor: surfaceColor
@@ -438,95 +574,20 @@ function HomeScreenContent({
438
574
  }, children: /* @__PURE__ */ jsx(Text, { fontSize: "$sm", style: {
439
575
  color: isDark ? "#fecaca" : "#991b1b"
440
576
  }, children: chatError || cdecli.error }) }),
441
- showChatHistory ? /* @__PURE__ */ jsx(ChatHistoryLanding, { onSelectSession: (channelId) => {
442
- setShowChatHistory(false);
443
- setActiveSessionId(channelId);
444
- setActiveMode("chat");
445
- }, onCompose: () => {
446
- setShowChatHistory(false);
447
- setActiveSessionId(null);
448
- setValue("");
449
- clearMessages();
450
- } }) : hasMessages || response ? /* @__PURE__ */ jsx(Box, { flex: 1, width: "100%", alignSelf: "stretch", children: /* @__PURE__ */ jsx(MessagesContainerUI, { mode: "chat", showBackButton: false, onBackPress: handleNewChat, compactTop: true, messagesContainerStyle: {
451
- paddingHorizontal: 0,
452
- paddingTop: 0,
453
- paddingBottom: composerScrollBottomPadding,
454
- margin: 0,
455
- marginTop: 0,
456
- alignSelf: "center",
457
- width: contentMaxWidth
458
- }, listContentStyle: {
459
- paddingTop: 0,
460
- paddingBottom: composerScrollBottomPadding,
461
- margin: 0,
462
- marginTop: 0,
463
- width: contentMaxWidth,
464
- alignSelf: "center"
465
- }, messages: messages.map((msg, index) => ({
466
- id: `msg-${index}-${msg.role}`,
467
- role: msg.role,
468
- content: msg.content,
469
- metadata: msg.metadata
470
- })), streamingContent: response, currentUser: {
471
- id: "user"
472
- }, onSend: handleSendMessage, disabled: isLoading || disabled, isLoading, onStop: isStreaming ? cancel : onStop, renderPlanInputToolbar: () => null, renderBuildInputToolbar: () => null }) }) : /* @__PURE__ */ jsx(Box, { flex: 1, width: "100%", children: /* @__PURE__ */ jsxs(View, { style: styles.emptyCenterTitleWrap, children: [
473
- /* @__PURE__ */ jsx(Text, { style: [styles.emptyEyebrow, {
474
- color: secondaryTextColor
475
- }], children: "Choose your mode" }),
476
- /* @__PURE__ */ jsxs(View, { style: [styles.emptyModePillRow, {
477
- backgroundColor: isDark ? "rgba(30, 41, 59, 0.9)" : "#eef2ff",
478
- borderColor: isDark ? "rgba(148, 163, 184, 0.26)" : "rgba(67, 56, 202, 0.15)"
479
- }], children: [
480
- /* @__PURE__ */ jsxs(Pressable, { onPress: () => handleModeSwitch("chat"), style: [styles.emptyModePill, activeMode === "chat" && styles.emptyModePillActive, activeMode === "chat" && {
481
- backgroundColor: isDark ? "#312e81" : "#4338ca"
482
- }], accessibilityRole: "button", accessibilityLabel: "Switch to chat mode", children: [
483
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "magnify", size: 14, color: activeMode === "chat" ? "#ffffff" : secondaryTextColor }),
484
- /* @__PURE__ */ jsx(Text, { style: [styles.emptyModePillLabel, {
485
- color: activeMode === "chat" ? "#ffffff" : secondaryTextColor
486
- }], children: "Chat" })
487
- ] }),
488
- /* @__PURE__ */ jsxs(Pressable, { onPress: () => handleModeSwitch("deep-search"), style: [styles.emptyModePill, activeMode === "deep-search" && styles.emptyModePillActive, activeMode === "deep-search" && {
489
- backgroundColor: isDark ? "#312e81" : "#4338ca"
490
- }], accessibilityRole: "button", accessibilityLabel: "Switch to deep-search mode", children: [
491
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "lightning-bolt-outline", size: 14, color: activeMode === "deep-search" ? "#ffffff" : secondaryTextColor }),
492
- /* @__PURE__ */ jsx(Text, { style: [styles.emptyModePillLabel, {
493
- color: activeMode === "deep-search" ? "#ffffff" : secondaryTextColor
494
- }], children: "Deep Search" })
495
- ] })
496
- ] }),
497
- /* @__PURE__ */ jsx(Text, { style: [styles.emptyCenterTitle, {
498
- color: primaryTextColor
499
- }], children: "How do you want to start?" }),
500
- /* @__PURE__ */ jsx(Text, { style: [styles.emptySubtitle, {
501
- color: secondaryTextColor
502
- }], children: "Use Chat for quick help, or Deep Search for researched, source-backed answers." })
503
- ] }) }),
577
+ showChatHistory ? /* @__PURE__ */ jsx(ChatHistoryLanding, { onSelectSession: handleSelectHistorySession, onCompose: handleComposeFromHistory }) : hasRenderableConversation ? /* @__PURE__ */ jsx(ChatContentSection, { contentMaxWidth, composerScrollBottomPadding, messages, response, isLoading, disabled, isStreaming, onStop, cancel, onSend: handleSendMessage, onBackPress: handleNewChat }) : /* @__PURE__ */ jsx(EmptyStateSection, { isDark, secondaryTextColor, primaryTextColor, activeMode, onModeSwitch: handleModeSwitch }),
504
578
  !showChatHistory ? /* @__PURE__ */ jsx(View, { style: [styles.bottomComposerWrap, {
505
- paddingBottom: Math.max(insets.bottom - 6, 2) + composerBottomOffset,
506
- backgroundColor: composerBarBackground,
507
- borderTopColor: composerBarBorder
579
+ bottom: Math.max(0, keyboardHeight - insets.bottom),
580
+ paddingBottom: Math.max(insets.bottom - 6, 2)
581
+ // backgroundColor: composerBarBackground,
582
+ // borderTopColor: composerBarBorder,
508
583
  }], children: /* @__PURE__ */ jsx(View, { style: [styles.bottomComposerInner, {
509
584
  width: contentMaxWidth
510
- }], children: /* @__PURE__ */ jsx(InputToolBar, { inputConfig: {
511
- value,
512
- onChange: (e) => setValue(e.nativeEvent.text),
513
- placeholder: inputPlaceholder,
514
- disabled: isLoading || disabled
515
- }, leftItems, rightItems, templateButton: null, templateModalConfig: null, micSendButton: {
516
- hasContent: canSubmit,
517
- onSend: () => handleSubmit(),
518
- onMic: () => console.log("mic"),
519
- disabled: isLoading || disabled,
520
- isLoading,
521
- onStop: isStreaming ? cancel : onStop
522
- } }) }) }) : null,
585
+ }], children: /* @__PURE__ */ jsx(InputToolBar, { inputConfig, leftItems, rightItems, templateButton: null, templateModalConfig: null, micSendButton }) }) }) : null,
523
586
  showSendingLoader ? /* @__PURE__ */ jsx(View, { pointerEvents: "none", style: pinSendingLoaderNearComposer ? [styles.sendingLoaderAboveComposer, {
524
587
  bottom: Math.max(insets.bottom, 12) + SENDING_LOADER_COMPOSER_RESERVE_PX
525
588
  }] : styles.sendingLoaderEmptyState, children: /* @__PURE__ */ jsx(YantraBrandLoader, { size: YANTRA_LOADER_SIZE_COMPACT }) }) : null
526
589
  ] }) }),
527
- /* @__PURE__ */ jsx(DeepSearchModal, { visible: isDeepSearchModalOpen, query: deepSearchQuery, summaryText: deepSearchPreviewNormalized, sources: deepSearchSources, isStreaming, researchProcessOpen, sourcesAccordionOpen, onToggleResearchProcess: () => setResearchProcessOpen((prev) => !prev), onToggleSourcesAccordion: () => setSourcesAccordionOpen((prev) => !prev), onRetry: () => {
528
- void handleRetryDeepSearch();
529
- }, onStop: cancel, onClose: handleDeepSearchClose })
590
+ /* @__PURE__ */ jsx(DeepSearchModal, { visible: isDeepSearchModalOpen, query: deepSearchQuery, summaryText: deepSearchPreviewNormalized, sources: deepSearchSources, isStreaming, researchProcessOpen, sourcesAccordionOpen, onToggleResearchProcess: handleToggleResearchProcess, onToggleSourcesAccordion: handleToggleSourcesAccordion, onRetry: handleRetryDeepSearchPress, onStop: cancel, onClose: handleDeepSearchClose })
530
591
  ] });
531
592
  }
532
593
  const styles = StyleSheet.create({
@@ -662,12 +723,13 @@ const styles = StyleSheet.create({
662
723
  },
663
724
  bottomComposerWrap: {
664
725
  position: "absolute",
726
+ width: "100%",
665
727
  left: 0,
666
728
  right: 0,
667
729
  bottom: 0,
668
730
  alignItems: "center",
669
731
  justifyContent: "flex-end",
670
- borderTopWidth: 1,
732
+ // borderTopWidth: 1,
671
733
  shadowColor: "#0f172a",
672
734
  shadowOpacity: 0.08,
673
735
  shadowRadius: 8,
@@ -675,6 +737,7 @@ const styles = StyleSheet.create({
675
737
  width: 0,
676
738
  height: -2
677
739
  },
740
+ backgroundColor: "transparent",
678
741
  elevation: 6
679
742
  },
680
743
  bottomComposerInner: {
@@ -1 +1 @@
1
- {"version":3,"file":"HomeScreen.js","sources":["../../../src/screens/Home/HomeScreen.tsx"],"sourcesContent":["import React, { FC, useState, useCallback, useEffect, useMemo } from 'react';\nimport {\n Keyboard,\n Platform,\n Pressable,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n useColorScheme,\n useWindowDimensions,\n} from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Box, InputToolBar, Text, getDefaultLeftItems, getDefaultRightItems } from '@admin-layout/gluestack-ui-mobile';\nimport { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useNavigation, useRoute, StackActions, CommonActions } from '@react-navigation/native';\nimport { MessagesContainerUI } from '@messenger-box/platform-mobile';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ContributionSchemaId } from 'common';\nimport { useGetContextDataQuery, useGetPageSettingsQuery } from 'common/graphql';\nimport { useGatewayContext } from '../../contexts/GatewayContext';\nimport { GatewayToolbarButtonMobile } from '../../components/GatewayToolbarButtonMobile';\nimport { useCdecliAutoConnect } from '../../hooks/useCdecliAutoConnect';\nimport { usePrerequisiteIds } from '../../hooks/usePrerequisiteIds';\nimport { useChatMutations, useChatSessions } from '../../hooks/useChatApi';\nimport { useChatStream, type UseChatStreamRouting } from '../../hooks/useChatStream';\nimport type { ModeSubmission, RoutingMode } from './types';\nimport DeepSearchModal from './components/DeepSearchModal';\nimport ChatHistoryLanding from './components/ChatHistoryLanding';\nimport { extractDeepSearchSources, normalizeSummaryText, type DeepSearchSourceItem } from './deepSearchUtils';\nimport { YantraBrandLoader, YANTRA_LOADER_SIZE_COMPACT } from '../../components/YantraBrandLoader';\nimport { navigationRef } from '@common-stack/client-react';\nimport { mobileTokens } from '../../theme/mobileTokens';\n\nexport type { RoutingMode, ModeSubmission };\n\nexport interface HomeScreenProps {\n initialMode?: RoutingMode;\n onSubmit?: (submission: ModeSubmission) => void;\n onStop?: () => void;\n isLoading?: boolean;\n disabled?: boolean;\n}\n\n/** Reserve the bottom composer band (toolbar + mode row) so the sending loader centers in the messages area above it. */\nconst SENDING_LOADER_COMPOSER_RESERVE_PX = 156;\nconst IOS_KEYBOARD_DOCKING_ADJUST_PX = 10;\nconst COMPOSER_SCROLL_RESERVE_PX = 136;\n\nfunction organizationFromSettingsValue(settings: unknown): string | null {\n if (settings == null) return null;\n if (typeof settings === 'string') {\n try {\n const parsed = JSON.parse(settings) as { organization?: string };\n const o = parsed?.organization;\n return typeof o === 'string' && o.trim() ? o.trim() : null;\n } catch {\n return null;\n }\n }\n if (typeof settings === 'object' && settings !== null && 'organization' in settings) {\n const o = (settings as { organization?: unknown }).organization;\n return typeof o === 'string' && o.trim() ? o.trim() : null;\n }\n return null;\n}\n\nfunction projectFromSettingsValue(settings: unknown): string | null {\n if (settings == null) return null;\n if (typeof settings === 'string') {\n try {\n const parsed = JSON.parse(settings) as { project?: string };\n const p = parsed?.project;\n return typeof p === 'string' && p.trim() ? p.trim() : null;\n } catch {\n return null;\n }\n }\n if (typeof settings === 'object' && settings !== null && 'project' in settings) {\n const p = (settings as { project?: unknown }).project;\n return typeof p === 'string' && p.trim() ? p.trim() : null;\n }\n return null;\n}\n\nfunction HomeScreenContent({\n initialMode = 'chat',\n onSubmit: onSubmitProp,\n onStop,\n isLoading: isLoadingProp = false,\n disabled = false,\n}: HomeScreenProps) {\n const { width: screenWidth } = useWindowDimensions();\n const colorScheme = useColorScheme();\n const isDark = colorScheme === 'dark';\n const navigation = useNavigation();\n const route = useRoute<any>();\n const hasRehydratedOrgRef = React.useRef(false);\n const [value, setValue] = useState('');\n const [activeMode, setActiveMode] = useState<RoutingMode>(initialMode);\n const [activeSessionId, setActiveSessionId] = useState<string | null>(null);\n const [isDeepSearchModalOpen, setIsDeepSearchModalOpen] = useState(false);\n const [deepSearchQuery, setDeepSearchQuery] = useState<string | null>(null);\n const [deepSearchSummary, setDeepSearchSummary] = useState('');\n const [deepSearchSources, setDeepSearchSources] = useState<DeepSearchSourceItem[]>([]);\n const [researchProcessOpen, setResearchProcessOpen] = useState(true);\n const [sourcesAccordionOpen, setSourcesAccordionOpen] = useState(true);\n /** Full-screen chat history list opened from header (chat UI remains default). */\n const [showChatHistory, setShowChatHistory] = useState(false);\n /** True while creating channel id before send (covers UI delay before chatLoading flips). */\n const [channelBootstrap, setChannelBootstrap] = useState(false);\n\n const { createChannel } = useChatMutations();\n const { sessions } = useChatSessions();\n const { orgName: resolvedOrgName, projectId } = usePrerequisiteIds();\n const { data: contextData } = useGetContextDataQuery();\n const cdecodeUri = contextData?.getContextData?.cdecodeUri;\n const { data: pageSettingsData } = useGetPageSettingsQuery({\n variables: {\n resourceUri: cdecodeUri as never,\n options: {\n schemaId: ContributionSchemaId.Configuration,\n configKey: 'account.default',\n includeMarketplace: true,\n },\n },\n skip: !cdecodeUri,\n fetchPolicy: 'cache-first',\n });\n const fallbackOrgNameFromSettings = useMemo(\n () => organizationFromSettingsValue(pageSettingsData?.pageSettings?.settings),\n [pageSettingsData],\n );\n const fallbackProjectIdFromSettings = useMemo(\n () => projectFromSettingsValue(pageSettingsData?.pageSettings?.settings),\n [pageSettingsData],\n );\n const routeOrgName = ((route?.params?.orgName as string | undefined) ?? '').trim() || null;\n const effectiveOrgName = resolvedOrgName || fallbackOrgNameFromSettings || routeOrgName || null;\n /** Prefer hook (same source as web); fall back to this screen's page settings when prerequisites lag one frame. */\n const effectiveProjectId = projectId || fallbackProjectIdFromSettings || null;\n const { selectedGateway } = useGatewayContext();\n const cdecliSelected = selectedGateway?.channelType === 'cdecli-serve';\n const cdecli = useCdecliAutoConnect(cdecliSelected, activeSessionId ?? undefined);\n\n /** Same gate as web ChatSessionPage (`cdecliConnected`): only route via gateway when the channel is live. */\n const cdecliConnected = cdecliSelected && cdecli.channelConnected;\n\n const effectivePersistenceMode = cdecli.persistenceMode ?? selectedGateway?.persistenceMode ?? 'frontend';\n\n const chatRouting: UseChatStreamRouting = useMemo(\n () =>\n cdecliConnected\n ? {\n kind: 'cdecli',\n channelConnected: cdecli.channelConnected,\n accountId: cdecli.accountId,\n persistenceMode: effectivePersistenceMode,\n }\n : { kind: 'groq' },\n [cdecliConnected, cdecli.channelConnected, cdecli.accountId, effectivePersistenceMode],\n );\n\n const chat = useChatStream(activeSessionId, chatRouting);\n\n const {\n messages,\n response,\n error: chatError,\n isLoading: chatLoading,\n isStreaming,\n hasMessages,\n sendMessage,\n cancel,\n clearMessages,\n } = chat;\n\n const trimmedQuery = value.trim();\n const hasQuery = trimmedQuery.length > 0;\n const canSubmit = hasQuery && Boolean(routeOrgName || effectiveOrgName);\n const isLoading = isLoadingProp || chatLoading;\n const isResearchMode = activeMode === 'deep-search';\n const inputPlaceholder = !effectiveOrgName\n ? 'Initializing workspace...'\n : isResearchMode\n ? 'Research anything...'\n : 'Ask anything...';\n const waitingForAssistant = useMemo(() => {\n if ((!chatLoading && !isStreaming) || messages.length === 0) return false;\n return messages[messages.length - 1]?.role === 'user';\n }, [chatLoading, isStreaming, messages]);\n\n /** Thread has bubbles or streaming buffer → anchor loader above composer; empty landing → center. */\n const pinSendingLoaderNearComposer = useMemo(\n () => messages.length > 0 || Boolean((response ?? '').trim()),\n [messages.length, response],\n );\n\n const showSendingLoader = !showChatHistory && (channelBootstrap || waitingForAssistant);\n\n const insets = useSafeAreaInsets();\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n\n // useEffect(() => {\n // navigation.setOptions({\n // headerLeft: () => null,\n // });\n // }, []);\n\n const handleModeSwitch = useCallback((mode: RoutingMode) => {\n setActiveMode(mode);\n }, []);\n\n // Web-aligned flow: create channel first, then send first post using returned channel id.\n const ensureSessionId = useCallback(\n async (mode: RoutingMode): Promise<string> => {\n if (activeSessionId) return activeSessionId;\n if (!effectiveOrgName || !effectiveProjectId) {\n throw new Error('Workspace is still initializing. Please retry in a moment.');\n }\n const requestedChannelId = uuidv4();\n const title =\n mode === 'deep-search' ? `deep-search-${requestedChannelId}` : `chat-channel-${requestedChannelId}`;\n const session = await createChannel({\n id: requestedChannelId,\n title,\n isShared: false,\n sharedSlug: null,\n isArchived: false,\n isPinned: false,\n model: null,\n systemPrompt: null,\n orgName: effectiveOrgName,\n projectId: effectiveProjectId,\n } as any);\n setActiveSessionId(session.id);\n return session.id;\n },\n [activeSessionId, createChannel, effectiveOrgName, effectiveProjectId],\n );\n\n const handleSubmit = useCallback(\n async (attachments?: ModeSubmission['attachments']) => {\n if (!canSubmit || isLoading || disabled) return;\n\n const submission: ModeSubmission = {\n mode: activeMode,\n query: trimmedQuery,\n attachments,\n };\n\n if (activeMode === 'deep-search') {\n if (onSubmitProp) {\n onSubmitProp(submission);\n }\n setValue('');\n setDeepSearchQuery(trimmedQuery);\n setDeepSearchSummary('');\n setDeepSearchSources([]);\n setIsDeepSearchModalOpen(true);\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('deep-search');\n await sendMessage(trimmedQuery, undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create deep-search session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n return;\n }\n\n if (onSubmitProp && activeMode === 'chat') {\n onSubmitProp(submission);\n setValue('');\n return;\n }\n\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('chat');\n setValue('');\n await sendMessage(trimmedQuery, undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n },\n [\n canSubmit,\n isLoading,\n disabled,\n activeMode,\n trimmedQuery,\n activeSessionId,\n onSubmitProp,\n ensureSessionId,\n sendMessage,\n ],\n );\n\n const handleNewChat = useCallback(() => {\n setShowChatHistory(false);\n setActiveSessionId(null);\n setValue('');\n clearMessages();\n }, [clearMessages]);\n\n const handleOpenChatHistory = useCallback(() => {\n setShowChatHistory(true);\n }, []);\n\n const handleCloseChatHistory = useCallback(() => {\n setShowChatHistory(false);\n }, []);\n\n const handleToggleGateway = useCallback(() => {\n // CDeCLI connection is selection-driven via useCdecliAutoConnect.\n }, []);\n\n const gatewayToolbarStatus =\n cdecli.status === 'connecting'\n ? 'connecting'\n : cdecli.status === 'connected'\n ? 'connected'\n : cdecli.status === 'error'\n ? 'error'\n : 'disconnected';\n\n const gatewayToolbarTone = 'default';\n\n const gatewayToolbarLabel = cdecli.status === 'connecting' ? 'Checking...' : undefined;\n\n const gatewayToolbarError = cdecli.error;\n const surfaceColor = isDark ? '#0f172a' : mobileTokens.color.bg;\n const primaryTextColor = isDark ? '#e5e7eb' : mobileTokens.color.text;\n const secondaryTextColor = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n const accentColor = isDark ? '#a5b4fc' : '#4338ca';\n const newChatIconColor = isDark ? '#e5e7eb' : '#000000';\n const composerBarBackground = isDark ? 'rgba(15, 23, 42, 0.94)' : 'rgba(248, 250, 252, 0.97)';\n const composerBarBorder = isDark ? 'rgba(71, 85, 105, 0.5)' : 'rgba(148, 163, 184, 0.25)';\n const contentMaxWidth = Math.min(720, Math.max(360, screenWidth - 24));\n\n useEffect(() => {\n const currentOrgName = (route?.params?.orgName as string | undefined)?.trim() || '';\n if (!effectiveOrgName || currentOrgName === effectiveOrgName) return;\n // Keep current screen params in sync with resolved org context.\n (navigation as any).setParams?.({ orgName: effectiveOrgName });\n }, [navigation, route?.params?.orgName, effectiveOrgName]);\n\n useEffect(() => {\n const currentOrgName = (route?.params?.orgName as string | undefined)?.trim() || '';\n if (hasRehydratedOrgRef.current || currentOrgName || !effectiveOrgName) return;\n\n hasRehydratedOrgRef.current = true;\n console.log('effectiveOrgName..', effectiveOrgName);\n // navigationRef.navigate('MainStack.Layout.Home', {\n // orgName: effectiveOrgName,\n // });\n // Also navigate with merge=true to patch parent stack params in nested navigation state.\n navigation.getParent()?.dispatch(\n CommonActions.navigate('MainStack', {\n screen: 'MainStack.Layout.Home',\n params: {\n orgName: effectiveOrgName,\n },\n merge: true,\n key: Date.now().toString(),\n }),\n );\n\n // CommonActions.reset({\n // index: 0,\n // routes: [\n // {\n // name: 'MainStack',\n // state: {\n // routes: [\n // {\n // name: 'MainStack.Layout.Home',\n // params: { orgName: effectiveOrgName },\n // },\n // ],\n // },\n // },\n // ],\n // });\n\n // (navigation as any).navigate('MainStack', {\n // screen: 'MainStack.Layout.Home',\n // params: { orgName: effectiveOrgName },\n // merge: true,\n // key: Date.now().toString(),\n // });\n }, [navigation, route?.params?.orgName, effectiveOrgName, navigationRef]);\n\n useEffect(() => {\n navigation.setOptions({\n drawerLabel: 'Chat',\n headerTitle: showChatHistory ? 'Chats' : 'Yantra',\n headerLeft: showChatHistory\n ? () => (\n <Pressable\n onPress={handleCloseChatHistory}\n style={({ pressed }) => [styles.backButton, pressed && styles.newChatButtonPressed]}\n accessibilityLabel=\"Back to chat\"\n >\n <MaterialCommunityIcons name=\"chevron-left\" size={24} color={primaryTextColor} />\n </Pressable>\n )\n : undefined,\n headerRight: () => (\n <View style={styles.headerRight}>\n <GatewayToolbarButtonMobile\n gatewayStatus={gatewayToolbarStatus}\n gatewayError={gatewayToolbarError}\n onToggleGateway={handleToggleGateway}\n disabled={false}\n statusLabel={gatewayToolbarLabel}\n tone={gatewayToolbarTone}\n />\n {!showChatHistory ? (\n <Pressable\n onPress={handleOpenChatHistory}\n style={({ pressed }) => [\n styles.historyHeaderButton,\n pressed && styles.historyHeaderButtonPressed,\n ]}\n accessibilityLabel=\"Chat history\"\n accessibilityRole=\"button\"\n >\n <View\n style={[\n styles.historyHeaderButtonInner,\n isDark ? styles.historyHeaderButtonInnerDark : null,\n ]}\n >\n <MaterialCommunityIcons name=\"history\" size={19} color={accentColor} />\n </View>\n </Pressable>\n ) : null}\n <Pressable\n onPress={handleNewChat}\n style={({ pressed }) => [styles.newChatButton, pressed && styles.newChatButtonPressed]}\n accessibilityLabel=\"New chat\"\n >\n <View style={[styles.newChatButtonInner, isDark ? styles.newChatButtonInnerDark : null]}>\n <MaterialCommunityIcons name=\"chat-plus-outline\" size={20} color={newChatIconColor} />\n </View>\n </Pressable>\n </View>\n ),\n });\n }, [\n navigation,\n showChatHistory,\n handleCloseChatHistory,\n handleOpenChatHistory,\n handleNewChat,\n handleToggleGateway,\n gatewayToolbarStatus,\n gatewayToolbarError,\n gatewayToolbarLabel,\n gatewayToolbarTone,\n primaryTextColor,\n accentColor,\n newChatIconColor,\n isDark,\n ]);\n\n const handleSendMessage = useCallback(\n async (text: string) => {\n if (!text.trim() || isLoading || disabled) return;\n const submission: ModeSubmission = { mode: activeMode, query: text.trim() };\n if (activeMode === 'deep-search') {\n if (onSubmitProp) {\n onSubmitProp(submission);\n }\n setDeepSearchQuery(text.trim());\n setDeepSearchSummary('');\n setDeepSearchSources([]);\n setIsDeepSearchModalOpen(true);\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('deep-search');\n await sendMessage(text.trim(), undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create deep-search session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n return;\n }\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('chat');\n await sendMessage(text.trim(), undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n },\n [isLoading, disabled, activeMode, onSubmitProp, ensureSessionId, sendMessage],\n );\n\n const leftItems = getDefaultLeftItems({\n search: {\n active: activeMode === 'chat',\n onClick: () => handleModeSwitch('chat'),\n },\n zap: {\n active: activeMode === 'deep-search',\n onClick: () => handleModeSwitch('deep-search'),\n },\n lightbulb: { enabled: false },\n });\n\n const rightItems = getDefaultRightItems({\n tag: { enabled: false },\n chip: { enabled: false },\n camera: { enabled: false, onClick: () => console.log('camera') },\n image: { enabled: false, onClick: () => console.log('image') },\n attach: { enabled: false, onClick: () => console.log('attach') },\n });\n const latestAssistantMessage = useMemo(() => {\n for (let i = messages.length - 1; i >= 0; i -= 1) {\n if (messages[i]?.role === 'assistant') return messages[i]?.content ?? '';\n }\n return '';\n }, [messages]);\n\n const deepSearchPreviewContent = response || deepSearchSummary;\n const deepSearchPreviewNormalized = useMemo(\n () => normalizeSummaryText(deepSearchPreviewContent || deepSearchSummary || ''),\n [deepSearchPreviewContent, deepSearchSummary],\n );\n\n const handleDeepSearchClose = useCallback(() => {\n if (isStreaming) {\n cancel();\n }\n setIsDeepSearchModalOpen(false);\n setDeepSearchQuery(null);\n setDeepSearchSummary('');\n setDeepSearchSources([]);\n setResearchProcessOpen(true);\n setSourcesAccordionOpen(true);\n }, [isStreaming, cancel]);\n\n const handleRetryDeepSearch = useCallback(async () => {\n if (!deepSearchQuery || isStreaming) return;\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('deep-search');\n await sendMessage(deepSearchQuery, undefined, sessionId);\n } catch (error) {\n console.error('[HomeScreen] Failed to retry deep-search:', error);\n } finally {\n setChannelBootstrap(false);\n }\n }, [deepSearchQuery, isStreaming, ensureSessionId, sendMessage]);\n\n useEffect(() => {\n if (!deepSearchQuery || isStreaming || !latestAssistantMessage) return;\n setDeepSearchSummary(normalizeSummaryText(latestAssistantMessage));\n setDeepSearchSources(extractDeepSearchSources(latestAssistantMessage));\n }, [deepSearchQuery, isStreaming, latestAssistantMessage]);\n\n useEffect(() => {\n if (Platform.OS === 'ios') {\n const frameSub = Keyboard.addListener('keyboardWillChangeFrame', (event) =>\n setKeyboardHeight(event.endCoordinates?.height ?? 0),\n );\n const showSub = Keyboard.addListener('keyboardWillShow', (event) =>\n setKeyboardHeight(event.endCoordinates?.height ?? 0),\n );\n const hideSub = Keyboard.addListener('keyboardWillHide', () => setKeyboardHeight(0));\n return () => {\n frameSub.remove();\n showSub.remove();\n hideSub.remove();\n };\n }\n\n const showSub = Keyboard.addListener('keyboardDidShow', (event) =>\n setKeyboardHeight(event.endCoordinates?.height ?? 0),\n );\n const hideSub = Keyboard.addListener('keyboardDidHide', () => setKeyboardHeight(0));\n return () => {\n showSub.remove();\n hideSub.remove();\n };\n }, []);\n\n const composerBottomOffset = Math.max(\n 0,\n keyboardHeight - insets.bottom - (Platform.OS === 'ios' ? IOS_KEYBOARD_DOCKING_ADJUST_PX : 0),\n );\n const composerScrollBottomPadding = COMPOSER_SCROLL_RESERVE_PX;\n\n return (\n <SafeAreaView edges={['left', 'right', 'bottom']} style={{ flex: 1, backgroundColor: surfaceColor }}>\n <TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>\n <Box flex={1} width=\"100%\" position=\"relative\">\n {(chatError || cdecli.error) && (\n <Box\n mb=\"$2\"\n mx=\"$4\"\n p=\"$3\"\n borderRadius=\"$md\"\n style={{\n backgroundColor: isDark ? '#2b1a1d' : '#fef2f2',\n borderWidth: 1,\n borderColor: isDark ? '#7f1d1d' : '#fecaca',\n }}\n >\n <Text fontSize=\"$sm\" style={{ color: isDark ? '#fecaca' : '#991b1b' }}>\n {chatError || cdecli.error}\n </Text>\n </Box>\n )}\n {showChatHistory ? (\n <ChatHistoryLanding\n onSelectSession={(channelId) => {\n setShowChatHistory(false);\n setActiveSessionId(channelId);\n setActiveMode('chat');\n }}\n onCompose={() => {\n setShowChatHistory(false);\n setActiveSessionId(null);\n setValue('');\n clearMessages();\n }}\n />\n ) : hasMessages || response ? (\n <Box flex={1} width=\"100%\" alignSelf=\"stretch\">\n <MessagesContainerUI\n mode=\"chat\"\n showBackButton={false}\n onBackPress={handleNewChat}\n compactTop\n messagesContainerStyle={{\n paddingHorizontal: 0,\n paddingTop: 0,\n paddingBottom: composerScrollBottomPadding,\n margin: 0,\n marginTop: 0,\n alignSelf: 'center',\n width: contentMaxWidth,\n }}\n listContentStyle={{\n paddingTop: 0,\n paddingBottom: composerScrollBottomPadding,\n margin: 0,\n marginTop: 0,\n width: contentMaxWidth,\n alignSelf: 'center',\n }}\n messages={messages.map((msg, index) => ({\n id: `msg-${index}-${msg.role}`,\n role: msg.role,\n content: msg.content,\n metadata: msg.metadata,\n }))}\n streamingContent={response}\n currentUser={{ id: 'user' }}\n onSend={handleSendMessage}\n disabled={isLoading || disabled}\n isLoading={isLoading}\n onStop={isStreaming ? cancel : onStop}\n renderPlanInputToolbar={() => null}\n renderBuildInputToolbar={() => null}\n />\n </Box>\n ) : (\n <Box flex={1} width=\"100%\">\n <View style={styles.emptyCenterTitleWrap}>\n <Text style={[styles.emptyEyebrow, { color: secondaryTextColor }]}>\n Choose your mode\n </Text>\n <View\n style={[\n styles.emptyModePillRow,\n {\n backgroundColor: isDark ? 'rgba(30, 41, 59, 0.9)' : '#eef2ff',\n borderColor: isDark\n ? 'rgba(148, 163, 184, 0.26)'\n : 'rgba(67, 56, 202, 0.15)',\n },\n ]}\n >\n <Pressable\n onPress={() => handleModeSwitch('chat')}\n style={[\n styles.emptyModePill,\n activeMode === 'chat' && styles.emptyModePillActive,\n activeMode === 'chat' && {\n backgroundColor: isDark ? '#312e81' : '#4338ca',\n },\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Switch to chat mode\"\n >\n <MaterialCommunityIcons\n name=\"magnify\"\n size={14}\n color={activeMode === 'chat' ? '#ffffff' : secondaryTextColor}\n />\n <Text\n style={[\n styles.emptyModePillLabel,\n { color: activeMode === 'chat' ? '#ffffff' : secondaryTextColor },\n ]}\n >\n Chat\n </Text>\n </Pressable>\n <Pressable\n onPress={() => handleModeSwitch('deep-search')}\n style={[\n styles.emptyModePill,\n activeMode === 'deep-search' && styles.emptyModePillActive,\n activeMode === 'deep-search' && {\n backgroundColor: isDark ? '#312e81' : '#4338ca',\n },\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Switch to deep-search mode\"\n >\n <MaterialCommunityIcons\n name=\"lightning-bolt-outline\"\n size={14}\n color={activeMode === 'deep-search' ? '#ffffff' : secondaryTextColor}\n />\n <Text\n style={[\n styles.emptyModePillLabel,\n {\n color:\n activeMode === 'deep-search' ? '#ffffff' : secondaryTextColor,\n },\n ]}\n >\n Deep Search\n </Text>\n </Pressable>\n </View>\n <Text style={[styles.emptyCenterTitle, { color: primaryTextColor }]}>\n How do you want to start?\n </Text>\n <Text style={[styles.emptySubtitle, { color: secondaryTextColor }]}>\n Use Chat for quick help, or Deep Search for researched, source-backed answers.\n </Text>\n </View>\n </Box>\n )}\n {!showChatHistory ? (\n <View\n style={[\n styles.bottomComposerWrap,\n {\n paddingBottom: Math.max(insets.bottom - 6, 2) + composerBottomOffset,\n backgroundColor: composerBarBackground,\n borderTopColor: composerBarBorder,\n },\n ]}\n >\n <View style={[styles.bottomComposerInner, { width: contentMaxWidth }]}>\n <InputToolBar\n inputConfig={{\n value,\n onChange: (e) => setValue(e.nativeEvent.text),\n placeholder: inputPlaceholder,\n disabled: isLoading || disabled,\n }}\n leftItems={leftItems}\n rightItems={rightItems}\n templateButton={null}\n templateModalConfig={null}\n micSendButton={{\n hasContent: canSubmit,\n onSend: () => handleSubmit(),\n onMic: () => console.log('mic'),\n disabled: isLoading || disabled,\n isLoading,\n onStop: isStreaming ? cancel : onStop,\n }}\n />\n </View>\n </View>\n ) : null}\n {showSendingLoader ? (\n <View\n pointerEvents=\"none\"\n style={\n pinSendingLoaderNearComposer\n ? [\n styles.sendingLoaderAboveComposer,\n {\n bottom: Math.max(insets.bottom, 12) + SENDING_LOADER_COMPOSER_RESERVE_PX,\n },\n ]\n : styles.sendingLoaderEmptyState\n }\n >\n <YantraBrandLoader size={YANTRA_LOADER_SIZE_COMPACT} />\n </View>\n ) : null}\n </Box>\n </TouchableWithoutFeedback>\n <DeepSearchModal\n visible={isDeepSearchModalOpen}\n query={deepSearchQuery}\n summaryText={deepSearchPreviewNormalized}\n sources={deepSearchSources}\n isStreaming={isStreaming}\n researchProcessOpen={researchProcessOpen}\n sourcesAccordionOpen={sourcesAccordionOpen}\n onToggleResearchProcess={() => setResearchProcessOpen((prev) => !prev)}\n onToggleSourcesAccordion={() => setSourcesAccordionOpen((prev) => !prev)}\n onRetry={() => {\n void handleRetryDeepSearch();\n }}\n onStop={cancel}\n onClose={handleDeepSearchClose}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n /** First message / empty screen: loader in the middle of the pane. */\n sendingLoaderEmptyState: {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 40,\n },\n /** Active thread: loader just above the input, not over message history. */\n sendingLoaderAboveComposer: {\n position: 'absolute',\n left: 0,\n right: 0,\n alignItems: 'center',\n justifyContent: 'flex-end',\n paddingBottom: 8,\n zIndex: 40,\n },\n headerRight: {\n flexDirection: 'row',\n alignItems: 'center',\n marginRight: 6,\n gap: 6,\n },\n historyHeaderButton: {\n marginHorizontal: 0,\n padding: 0,\n borderRadius: 22,\n },\n historyHeaderButtonPressed: {\n opacity: 0.72,\n },\n historyHeaderButtonInner: {\n width: 32,\n height: 32,\n borderRadius: 16,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: mobileTokens.color.primarySoft,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: mobileTokens.color.primaryBorder,\n shadowColor: '#312e81',\n shadowOpacity: 0.1,\n shadowRadius: 5,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n historyHeaderButtonInnerDark: {\n backgroundColor: '#1e293b',\n borderColor: 'rgba(148, 163, 184, 0.35)',\n shadowColor: '#111827',\n },\n newChatButton: {\n padding: 0,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 22,\n },\n newChatButtonInner: {\n width: 32,\n height: 32,\n borderRadius: 16,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: mobileTokens.color.surface,\n borderWidth: 1,\n borderColor: mobileTokens.color.border,\n shadowColor: '#0f172a',\n shadowOpacity: 0.08,\n shadowRadius: 5,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n newChatButtonInnerDark: {\n backgroundColor: '#0f172a',\n borderColor: '#334155',\n },\n backButton: {\n marginLeft: 6,\n width: 36,\n height: 36,\n borderRadius: 18,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#f3f4f6',\n },\n newChatButtonPressed: {\n opacity: 0.6,\n },\n emptyCenterTitleWrap: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'flex-start',\n paddingHorizontal: 24,\n paddingTop: 88,\n paddingBottom: 52,\n maxWidth: 520,\n alignSelf: 'center',\n },\n emptyEyebrow: {\n fontSize: 12,\n fontWeight: '600',\n letterSpacing: 0.4,\n textTransform: 'uppercase',\n marginBottom: 10,\n },\n emptyCenterTitle: {\n marginTop: 2,\n fontSize: 30,\n fontWeight: '700',\n textAlign: 'center',\n letterSpacing: -0.5,\n },\n emptySubtitle: {\n marginTop: 12,\n fontSize: 14,\n lineHeight: 22,\n textAlign: 'center',\n paddingHorizontal: 16,\n maxWidth: 360,\n },\n bottomComposerWrap: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'flex-end',\n borderTopWidth: 1,\n shadowColor: '#0f172a',\n shadowOpacity: 0.08,\n shadowRadius: 8,\n shadowOffset: { width: 0, height: -2 },\n elevation: 6,\n },\n bottomComposerInner: {\n paddingHorizontal: 14,\n paddingTop: 10,\n paddingBottom: 4,\n },\n emptyModePillRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n marginBottom: 22,\n borderRadius: 16,\n padding: 6,\n borderWidth: 1,\n shadowColor: '#312e81',\n shadowOpacity: 0.08,\n shadowRadius: 8,\n shadowOffset: { width: 0, height: 3 },\n elevation: 3,\n },\n emptyModePill: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n paddingHorizontal: 12,\n paddingVertical: 7,\n borderRadius: 11,\n },\n emptyModePillActive: {\n shadowColor: '#312e81',\n shadowOpacity: 0.18,\n shadowRadius: 6,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n emptyModePillLabel: {\n fontSize: 12,\n fontWeight: '600',\n },\n});\n\nconst HomeScreen: FC<HomeScreenProps> = (props) => <HomeScreenContent {...props} />;\n\nexport default HomeScreen;\n"],"names":["_a","uuidv4","_b","_c","showSub","hideSub"],"mappings":"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"}
1
+ {"version":3,"file":"HomeScreen.js","sources":["../../../src/screens/Home/HomeScreen.tsx"],"sourcesContent":["import React, { FC, useState, useCallback, useEffect, useMemo } from 'react';\nimport {\n Keyboard,\n Platform,\n Pressable,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n useColorScheme,\n useWindowDimensions,\n} from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Box, InputToolBar, Text, getDefaultLeftItems, getDefaultRightItems } from '@admin-layout/gluestack-ui-mobile';\nimport { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useNavigation, useRoute, CommonActions } from '@react-navigation/native';\nimport { MessagesContainerUI } from '@messenger-box/platform-mobile';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ContributionSchemaId } from 'common';\nimport { useGetContextDataQuery, useGetPageSettingsQuery } from 'common/graphql';\nimport { useGatewayContext } from '../../contexts/GatewayContext';\nimport { GatewayToolbarButtonMobile } from '../../components/GatewayToolbarButtonMobile';\nimport { useCdecliAutoConnect } from '../../hooks/useCdecliAutoConnect';\nimport { usePrerequisiteIds } from '../../hooks/usePrerequisiteIds';\nimport { useChatMutations, useChatSessions } from '../../hooks/useChatApi';\nimport { useChatStream, type UseChatStreamRouting } from '../../hooks/useChatStream';\nimport type { ModeSubmission, RoutingMode } from './types';\nimport DeepSearchModal from './components/DeepSearchModal';\nimport ChatHistoryLanding from './components/ChatHistoryLanding';\nimport { extractDeepSearchSources, normalizeSummaryText, type DeepSearchSourceItem } from './deepSearchUtils';\nimport { YantraBrandLoader, YANTRA_LOADER_SIZE_COMPACT } from '../../components/YantraBrandLoader';\nimport { mobileTokens } from '../../theme/mobileTokens';\n\nexport type { RoutingMode, ModeSubmission };\n\nexport interface HomeScreenProps {\n initialMode?: RoutingMode;\n onSubmit?: (submission: ModeSubmission) => void;\n onStop?: () => void;\n isLoading?: boolean;\n disabled?: boolean;\n}\n\n/** Reserve the bottom composer band (toolbar + mode row) so the sending loader centers in the messages area above it. */\nconst SENDING_LOADER_COMPOSER_RESERVE_PX = 156;\nconst COMPOSER_SCROLL_RESERVE_PX = 164;\n\nfunction organizationFromSettingsValue(settings: unknown): string | null {\n if (settings == null) return null;\n if (typeof settings === 'string') {\n try {\n const parsed = JSON.parse(settings) as { organization?: string };\n const o = parsed?.organization;\n return typeof o === 'string' && o.trim() ? o.trim() : null;\n } catch {\n return null;\n }\n }\n if (typeof settings === 'object' && settings !== null && 'organization' in settings) {\n const o = (settings as { organization?: unknown }).organization;\n return typeof o === 'string' && o.trim() ? o.trim() : null;\n }\n return null;\n}\n\nfunction projectFromSettingsValue(settings: unknown): string | null {\n if (settings == null) return null;\n if (typeof settings === 'string') {\n try {\n const parsed = JSON.parse(settings) as { project?: string };\n const p = parsed?.project;\n return typeof p === 'string' && p.trim() ? p.trim() : null;\n } catch {\n return null;\n }\n }\n if (typeof settings === 'object' && settings !== null && 'project' in settings) {\n const p = (settings as { project?: unknown }).project;\n return typeof p === 'string' && p.trim() ? p.trim() : null;\n }\n return null;\n}\n\ninterface ChatContentSectionProps {\n contentMaxWidth: number;\n composerScrollBottomPadding: number;\n messages: Array<{ role: string; content: string; metadata?: unknown }>;\n response?: string;\n isLoading: boolean;\n disabled: boolean;\n isStreaming: boolean;\n onStop?: () => void;\n cancel: () => void;\n onSend: (text: string) => void;\n onBackPress: () => void;\n}\n\nconst ChatContentSection = React.memo(function ChatContentSection({\n contentMaxWidth,\n composerScrollBottomPadding,\n messages,\n response,\n isLoading,\n disabled,\n isStreaming,\n onStop,\n cancel,\n onSend,\n onBackPress,\n}: ChatContentSectionProps) {\n return (\n <Box flex={1} width=\"100%\" alignSelf=\"stretch\">\n <MessagesContainerUI\n mode=\"chat\"\n showBackButton={false}\n onBackPress={onBackPress}\n compactTop\n messagesContainerStyle={{\n paddingHorizontal: 0,\n paddingTop: 0,\n paddingBottom: composerScrollBottomPadding,\n margin: 0,\n marginTop: 0,\n alignSelf: 'center',\n width: contentMaxWidth,\n }}\n listContentStyle={{\n paddingTop: 0,\n paddingBottom: composerScrollBottomPadding,\n margin: 0,\n marginTop: 0,\n width: contentMaxWidth,\n alignSelf: 'center',\n justifyContent: 'flex-end',\n }}\n messages={messages.map((msg, index) => ({\n id: `msg-${index}-${msg.role}`,\n role: msg.role,\n content: msg.content,\n metadata: msg.metadata as any,\n }))}\n streamingContent={response}\n currentUser={{ id: 'user' }}\n onSend={onSend}\n disabled={isLoading || disabled}\n isLoading={isLoading}\n onStop={isStreaming ? cancel : onStop}\n renderPlanInputToolbar={() => null}\n renderBuildInputToolbar={() => null}\n />\n </Box>\n );\n});\n\ninterface EmptyStateSectionProps {\n isDark: boolean;\n secondaryTextColor: string;\n primaryTextColor: string;\n activeMode: RoutingMode;\n onModeSwitch: (mode: RoutingMode) => void;\n}\n\nconst EmptyStateSection = React.memo(function EmptyStateSection({\n isDark,\n secondaryTextColor,\n primaryTextColor,\n activeMode,\n onModeSwitch,\n}: EmptyStateSectionProps) {\n return (\n <Box flex={1} width=\"100%\">\n <View style={styles.emptyCenterTitleWrap}>\n <Text style={[styles.emptyEyebrow, { color: secondaryTextColor }]}>Choose your mode</Text>\n <View\n style={[\n styles.emptyModePillRow,\n {\n backgroundColor: isDark ? 'rgba(30, 41, 59, 0.9)' : '#eef2ff',\n borderColor: isDark ? 'rgba(148, 163, 184, 0.26)' : 'rgba(67, 56, 202, 0.15)',\n },\n ]}\n >\n <Pressable\n onPress={() => onModeSwitch('chat')}\n style={[\n styles.emptyModePill,\n activeMode === 'chat' && styles.emptyModePillActive,\n activeMode === 'chat' && { backgroundColor: isDark ? '#312e81' : '#4338ca' },\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Switch to chat mode\"\n >\n <MaterialCommunityIcons\n name=\"magnify\"\n size={14}\n color={activeMode === 'chat' ? '#ffffff' : secondaryTextColor}\n />\n <Text\n style={[\n styles.emptyModePillLabel,\n { color: activeMode === 'chat' ? '#ffffff' : secondaryTextColor },\n ]}\n >\n Chat\n </Text>\n </Pressable>\n <Pressable\n onPress={() => onModeSwitch('deep-search')}\n style={[\n styles.emptyModePill,\n activeMode === 'deep-search' && styles.emptyModePillActive,\n activeMode === 'deep-search' && { backgroundColor: isDark ? '#312e81' : '#4338ca' },\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Switch to deep-search mode\"\n >\n <MaterialCommunityIcons\n name=\"lightning-bolt-outline\"\n size={14}\n color={activeMode === 'deep-search' ? '#ffffff' : secondaryTextColor}\n />\n <Text\n style={[\n styles.emptyModePillLabel,\n { color: activeMode === 'deep-search' ? '#ffffff' : secondaryTextColor },\n ]}\n >\n Deep Search\n </Text>\n </Pressable>\n </View>\n <Text style={[styles.emptyCenterTitle, { color: primaryTextColor }]}>How do you want to start?</Text>\n <Text style={[styles.emptySubtitle, { color: secondaryTextColor }]}>\n Use Chat for quick help, or Deep Search for researched, source-backed answers.\n </Text>\n </View>\n </Box>\n );\n});\n\ninterface HeaderBackButtonProps {\n color: string;\n onPress: () => void;\n}\n\nconst HeaderBackButton = React.memo(function HeaderBackButton({ color, onPress }: HeaderBackButtonProps) {\n return (\n <Pressable\n onPress={onPress}\n style={({ pressed }) => [styles.backButton, pressed && styles.newChatButtonPressed]}\n accessibilityLabel=\"Back to chat\"\n >\n <MaterialCommunityIcons name=\"chevron-left\" size={24} color={color} />\n </Pressable>\n );\n});\n\ninterface HeaderRightActionsProps {\n gatewayToolbarStatus: string;\n gatewayToolbarError?: string | null;\n onToggleGateway: () => void;\n gatewayToolbarLabel?: string;\n gatewayToolbarTone: string;\n showChatHistory: boolean;\n onOpenChatHistory: () => void;\n onNewChat: () => void;\n isDark: boolean;\n accentColor: string;\n newChatIconColor: string;\n}\n\nconst HeaderRightActions = React.memo(function HeaderRightActions({\n gatewayToolbarStatus,\n gatewayToolbarError,\n onToggleGateway,\n gatewayToolbarLabel,\n gatewayToolbarTone,\n showChatHistory,\n onOpenChatHistory,\n onNewChat,\n isDark,\n accentColor,\n newChatIconColor,\n}: HeaderRightActionsProps) {\n return (\n <View style={styles.headerRight}>\n <GatewayToolbarButtonMobile\n gatewayStatus={gatewayToolbarStatus}\n gatewayError={gatewayToolbarError}\n onToggleGateway={onToggleGateway}\n disabled={false}\n statusLabel={gatewayToolbarLabel}\n tone={gatewayToolbarTone}\n />\n {!showChatHistory ? (\n <Pressable\n onPress={onOpenChatHistory}\n style={({ pressed }) => [styles.historyHeaderButton, pressed && styles.historyHeaderButtonPressed]}\n accessibilityLabel=\"Chat history\"\n accessibilityRole=\"button\"\n >\n <View\n style={[styles.historyHeaderButtonInner, isDark ? styles.historyHeaderButtonInnerDark : null]}\n >\n <MaterialCommunityIcons name=\"history\" size={19} color={accentColor} />\n </View>\n </Pressable>\n ) : null}\n <Pressable\n onPress={onNewChat}\n style={({ pressed }) => [styles.newChatButton, pressed && styles.newChatButtonPressed]}\n accessibilityLabel=\"New chat\"\n >\n <View style={[styles.newChatButtonInner, isDark ? styles.newChatButtonInnerDark : null]}>\n <MaterialCommunityIcons name=\"chat-plus-outline\" size={20} color={newChatIconColor} />\n </View>\n </Pressable>\n </View>\n );\n});\n\nfunction HomeScreenContent({\n initialMode = 'chat',\n onSubmit: onSubmitProp,\n onStop,\n isLoading: isLoadingProp = false,\n disabled = false,\n}: HomeScreenProps) {\n const { width: screenWidth } = useWindowDimensions();\n const colorScheme = useColorScheme();\n const isDark = colorScheme === 'dark';\n const navigation = useNavigation();\n const route = useRoute<any>();\n const hasRehydratedOrgRef = React.useRef(false);\n const [value, setValue] = useState('');\n const [activeMode, setActiveMode] = useState<RoutingMode>(initialMode);\n const [activeSessionId, setActiveSessionId] = useState<string | null>(null);\n const [isDeepSearchModalOpen, setIsDeepSearchModalOpen] = useState(false);\n const [deepSearchQuery, setDeepSearchQuery] = useState<string | null>(null);\n const [deepSearchSummary, setDeepSearchSummary] = useState('');\n const [deepSearchSources, setDeepSearchSources] = useState<DeepSearchSourceItem[]>([]);\n const [researchProcessOpen, setResearchProcessOpen] = useState(true);\n const [sourcesAccordionOpen, setSourcesAccordionOpen] = useState(true);\n /** Full-screen chat history list opened from header (chat UI remains default). */\n const [showChatHistory, setShowChatHistory] = useState(false);\n /** True while creating channel id before send (covers UI delay before chatLoading flips). */\n const [channelBootstrap, setChannelBootstrap] = useState(false);\n\n const { createChannel } = useChatMutations();\n const { sessions } = useChatSessions();\n const { orgName: resolvedOrgName, projectId } = usePrerequisiteIds();\n const { data: contextData } = useGetContextDataQuery();\n const cdecodeUri = contextData?.getContextData?.cdecodeUri;\n const { data: pageSettingsData } = useGetPageSettingsQuery({\n variables: {\n resourceUri: cdecodeUri as never,\n options: {\n schemaId: ContributionSchemaId.Configuration,\n configKey: 'account.default',\n includeMarketplace: true,\n },\n },\n skip: !cdecodeUri,\n fetchPolicy: 'cache-first',\n });\n const fallbackOrgNameFromSettings = useMemo(\n () => organizationFromSettingsValue(pageSettingsData?.pageSettings?.settings),\n [pageSettingsData],\n );\n const fallbackProjectIdFromSettings = useMemo(\n () => projectFromSettingsValue(pageSettingsData?.pageSettings?.settings),\n [pageSettingsData],\n );\n const routeOrgName = ((route?.params?.orgName as string | undefined) ?? '').trim() || null;\n const effectiveOrgName = resolvedOrgName || fallbackOrgNameFromSettings || routeOrgName || null;\n /** Prefer hook (same source as web); fall back to this screen's page settings when prerequisites lag one frame. */\n const effectiveProjectId = projectId || fallbackProjectIdFromSettings || null;\n const { selectedGateway } = useGatewayContext();\n const cdecliSelected = selectedGateway?.channelType === 'cdecli-serve';\n const cdecli = useCdecliAutoConnect(cdecliSelected, activeSessionId ?? undefined);\n\n /** Same gate as web ChatSessionPage (`cdecliConnected`): only route via gateway when the channel is live. */\n const cdecliConnected = cdecliSelected && cdecli.channelConnected;\n\n const effectivePersistenceMode = cdecli.persistenceMode ?? selectedGateway?.persistenceMode ?? 'frontend';\n\n const chatRouting: UseChatStreamRouting = useMemo(\n () =>\n cdecliConnected\n ? {\n kind: 'cdecli',\n channelConnected: cdecli.channelConnected,\n accountId: cdecli.accountId,\n persistenceMode: effectivePersistenceMode,\n }\n : { kind: 'groq' },\n [cdecliConnected, cdecli.channelConnected, cdecli.accountId, effectivePersistenceMode],\n );\n\n const chat = useChatStream(activeSessionId, chatRouting);\n\n const {\n messages,\n response,\n error: chatError,\n isLoading: chatLoading,\n isStreaming,\n hasMessages,\n sendMessage,\n cancel,\n clearMessages,\n } = chat;\n\n const trimmedQuery = value.trim();\n const hasQuery = trimmedQuery.length > 0;\n const canSubmit = hasQuery && Boolean(routeOrgName || effectiveOrgName);\n const isLoading = isLoadingProp || chatLoading;\n const isResearchMode = activeMode === 'deep-search';\n const inputPlaceholder = !effectiveOrgName\n ? 'Initializing workspace...'\n : isResearchMode\n ? 'Research anything...'\n : 'Ask anything...';\n const waitingForAssistant = useMemo(() => {\n if ((!chatLoading && !isStreaming) || messages.length === 0) return false;\n return messages[messages.length - 1]?.role === 'user';\n }, [chatLoading, isStreaming, messages]);\n\n /** Thread has bubbles or streaming buffer → anchor loader above composer; empty landing → center. */\n const pinSendingLoaderNearComposer = useMemo(\n () => messages.length > 0 || Boolean((response ?? '').trim()),\n [messages.length, response],\n );\n\n const showSendingLoader = !showChatHistory && (channelBootstrap || waitingForAssistant);\n const hasRenderableConversation = messages.length > 0 || isStreaming;\n\n const insets = useSafeAreaInsets();\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n\n useEffect(() => {\n if (Platform.OS === 'ios') {\n const frameSub = Keyboard.addListener('keyboardWillChangeFrame', (event) =>\n setKeyboardHeight(event.endCoordinates?.height ?? 0),\n );\n const showSub = Keyboard.addListener('keyboardWillShow', (event) =>\n setKeyboardHeight(event.endCoordinates?.height ?? 0),\n );\n const hideSub = Keyboard.addListener('keyboardWillHide', () => setKeyboardHeight(0));\n return () => {\n frameSub.remove();\n showSub.remove();\n hideSub.remove();\n };\n }\n const showSub = Keyboard.addListener('keyboardDidShow', (event) =>\n setKeyboardHeight(event.endCoordinates?.height ?? 0),\n );\n const hideSub = Keyboard.addListener('keyboardDidHide', () => setKeyboardHeight(0));\n return () => {\n showSub.remove();\n hideSub.remove();\n };\n }, []);\n\n // useEffect(() => {\n // navigation.setOptions({\n // headerLeft: () => null,\n // });\n // }, []);\n\n const handleModeSwitch = useCallback((mode: RoutingMode) => {\n setActiveMode(mode);\n }, []);\n\n // Web-aligned flow: create channel first, then send first post using returned channel id.\n const ensureSessionId = useCallback(\n async (mode: RoutingMode): Promise<string> => {\n if (activeSessionId) return activeSessionId;\n if (!effectiveOrgName || !effectiveProjectId) {\n throw new Error('Workspace is still initializing. Please retry in a moment.');\n }\n const requestedChannelId = uuidv4();\n const title =\n mode === 'deep-search' ? `deep-search-${requestedChannelId}` : `chat-channel-${requestedChannelId}`;\n const session = await createChannel({\n id: requestedChannelId,\n title,\n isShared: false,\n sharedSlug: null,\n isArchived: false,\n isPinned: false,\n model: null,\n systemPrompt: null,\n orgName: effectiveOrgName,\n projectId: effectiveProjectId,\n } as any);\n setActiveSessionId(session.id);\n return session.id;\n },\n [activeSessionId, createChannel, effectiveOrgName, effectiveProjectId],\n );\n\n const handleSubmit = useCallback(\n async (attachments?: ModeSubmission['attachments']) => {\n if (!canSubmit || isLoading || disabled) return;\n\n const submission: ModeSubmission = {\n mode: activeMode,\n query: trimmedQuery,\n attachments,\n };\n\n if (activeMode === 'deep-search') {\n if (onSubmitProp) {\n onSubmitProp(submission);\n }\n setValue('');\n setDeepSearchQuery(trimmedQuery);\n setDeepSearchSummary('');\n setDeepSearchSources([]);\n setIsDeepSearchModalOpen(true);\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('deep-search');\n await sendMessage(trimmedQuery, undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create deep-search session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n return;\n }\n\n if (onSubmitProp && activeMode === 'chat') {\n onSubmitProp(submission);\n setValue('');\n return;\n }\n\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('chat');\n setValue('');\n await sendMessage(trimmedQuery, undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n },\n [\n canSubmit,\n isLoading,\n disabled,\n activeMode,\n trimmedQuery,\n activeSessionId,\n onSubmitProp,\n ensureSessionId,\n sendMessage,\n ],\n );\n\n const handleNewChat = useCallback(() => {\n setShowChatHistory(false);\n setActiveSessionId(null);\n setValue('');\n clearMessages();\n }, [clearMessages]);\n\n const handleOpenChatHistory = useCallback(() => {\n setShowChatHistory(true);\n }, []);\n\n const handleCloseChatHistory = useCallback(() => {\n setShowChatHistory(false);\n }, []);\n\n const handleToggleGateway = useCallback(() => {\n // CDeCLI connection is selection-driven via useCdecliAutoConnect.\n }, []);\n\n const gatewayToolbarStatus =\n cdecli.status === 'connecting'\n ? 'connecting'\n : cdecli.status === 'connected'\n ? 'connected'\n : cdecli.status === 'error'\n ? 'error'\n : 'disconnected';\n\n const gatewayToolbarTone = 'default';\n\n const gatewayToolbarLabel = cdecli.status === 'connecting' ? 'Checking...' : undefined;\n\n const gatewayToolbarError = cdecli.error;\n // const surfaceColor = isDark ? '#0f172a' : mobileTokens.color.bg;\n const surfaceColor = isDark ? '#0f172a' : mobileTokens.color.surface;\n const primaryTextColor = isDark ? '#e5e7eb' : mobileTokens.color.text;\n const secondaryTextColor = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n const accentColor = isDark ? '#a5b4fc' : '#4338ca';\n const newChatIconColor = isDark ? '#e5e7eb' : '#000000';\n const contentMaxWidth = Math.min(720, Math.max(360, screenWidth - 24));\n\n useEffect(() => {\n const currentOrgName = (route?.params?.orgName as string | undefined)?.trim() || '';\n if (!effectiveOrgName || currentOrgName === effectiveOrgName) return;\n // Keep current screen params in sync with resolved org context.\n (navigation as any).setParams?.({ orgName: effectiveOrgName });\n }, [navigation, route?.params?.orgName, effectiveOrgName]);\n\n useEffect(() => {\n const currentOrgName = (route?.params?.orgName as string | undefined)?.trim() || '';\n if (hasRehydratedOrgRef.current || currentOrgName || !effectiveOrgName) return;\n\n hasRehydratedOrgRef.current = true;\n // Also navigate with merge=true to patch parent stack params in nested navigation state.\n navigation.getParent()?.dispatch(\n CommonActions.navigate('MainStack', {\n screen: 'MainStack.Layout.Home',\n params: {\n orgName: effectiveOrgName,\n },\n merge: true,\n key: Date.now().toString(),\n }),\n );\n\n // CommonActions.reset({\n // index: 0,\n // routes: [\n // {\n // name: 'MainStack',\n // state: {\n // routes: [\n // {\n // name: 'MainStack.Layout.Home',\n // params: { orgName: effectiveOrgName },\n // },\n // ],\n // },\n // },\n // ],\n // });\n\n // (navigation as any).navigate('MainStack', {\n // screen: 'MainStack.Layout.Home',\n // params: { orgName: effectiveOrgName },\n // merge: true,\n // key: Date.now().toString(),\n // });\n }, [navigation, route?.params?.orgName, effectiveOrgName]);\n\n useEffect(() => {\n const headerLeft = showChatHistory\n ? () => <HeaderBackButton color={primaryTextColor} onPress={handleCloseChatHistory} />\n : undefined;\n const headerRight = () => (\n <HeaderRightActions\n gatewayToolbarStatus={gatewayToolbarStatus}\n gatewayToolbarError={gatewayToolbarError}\n onToggleGateway={handleToggleGateway}\n gatewayToolbarLabel={gatewayToolbarLabel}\n gatewayToolbarTone={gatewayToolbarTone}\n showChatHistory={showChatHistory}\n onOpenChatHistory={handleOpenChatHistory}\n onNewChat={handleNewChat}\n isDark={isDark}\n accentColor={accentColor}\n newChatIconColor={newChatIconColor}\n />\n );\n\n navigation.setOptions({\n drawerLabel: 'Chat',\n headerTitle: showChatHistory ? 'Chats' : 'Yantra',\n headerLeft,\n headerRight,\n });\n }, [\n navigation,\n showChatHistory,\n handleCloseChatHistory,\n handleOpenChatHistory,\n handleNewChat,\n handleToggleGateway,\n gatewayToolbarStatus,\n gatewayToolbarError,\n gatewayToolbarLabel,\n gatewayToolbarTone,\n primaryTextColor,\n accentColor,\n newChatIconColor,\n isDark,\n ]);\n\n const handleSendMessage = useCallback(\n async (text: string) => {\n if (!text.trim() || isLoading || disabled) return;\n const submission: ModeSubmission = { mode: activeMode, query: text.trim() };\n if (activeMode === 'deep-search') {\n if (onSubmitProp) {\n onSubmitProp(submission);\n }\n setDeepSearchQuery(text.trim());\n setDeepSearchSummary('');\n setDeepSearchSources([]);\n setIsDeepSearchModalOpen(true);\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('deep-search');\n await sendMessage(text.trim(), undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create deep-search session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n return;\n }\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('chat');\n await sendMessage(text.trim(), undefined, sessionId);\n } catch (err) {\n console.error('[HomeScreen] Failed to create session:', err);\n } finally {\n setChannelBootstrap(false);\n }\n },\n [isLoading, disabled, activeMode, onSubmitProp, ensureSessionId, sendMessage],\n );\n\n const latestAssistantMessage = useMemo(() => {\n for (let i = messages.length - 1; i >= 0; i -= 1) {\n if (messages[i]?.role === 'assistant') return messages[i]?.content ?? '';\n }\n return '';\n }, [messages]);\n\n const deepSearchPreviewContent = response || deepSearchSummary;\n const deepSearchPreviewNormalized = useMemo(\n () => normalizeSummaryText(deepSearchPreviewContent || deepSearchSummary || ''),\n [deepSearchPreviewContent, deepSearchSummary],\n );\n\n const handleDeepSearchClose = useCallback(() => {\n if (isStreaming) {\n cancel();\n }\n setIsDeepSearchModalOpen(false);\n setDeepSearchQuery(null);\n setDeepSearchSummary('');\n setDeepSearchSources([]);\n setResearchProcessOpen(true);\n setSourcesAccordionOpen(true);\n }, [isStreaming, cancel]);\n\n const handleRetryDeepSearch = useCallback(async () => {\n if (!deepSearchQuery || isStreaming) return;\n try {\n setChannelBootstrap(true);\n const sessionId = await ensureSessionId('deep-search');\n await sendMessage(deepSearchQuery, undefined, sessionId);\n } catch (error) {\n console.error('[HomeScreen] Failed to retry deep-search:', error);\n } finally {\n setChannelBootstrap(false);\n }\n }, [deepSearchQuery, isStreaming, ensureSessionId, sendMessage]);\n\n const handleValueChange = useCallback((e: any) => {\n setValue(e.nativeEvent.text);\n }, []);\n\n const handleMicPress = useCallback(() => {\n console.log('mic');\n }, []);\n\n const handleSelectHistorySession = useCallback((channelId: string) => {\n setShowChatHistory(false);\n setActiveSessionId(channelId);\n setActiveMode('chat');\n }, []);\n\n const handleComposeFromHistory = useCallback(() => {\n setShowChatHistory(false);\n setActiveSessionId(null);\n setValue('');\n clearMessages();\n }, [clearMessages]);\n\n const handleToggleResearchProcess = useCallback(() => {\n setResearchProcessOpen((prev) => !prev);\n }, []);\n\n const handleToggleSourcesAccordion = useCallback(() => {\n setSourcesAccordionOpen((prev) => !prev);\n }, []);\n\n const handleRetryDeepSearchPress = useCallback(() => {\n void handleRetryDeepSearch();\n }, [handleRetryDeepSearch]);\n\n useEffect(() => {\n if (!deepSearchQuery || isStreaming || !latestAssistantMessage) return;\n setDeepSearchSummary(normalizeSummaryText(latestAssistantMessage));\n setDeepSearchSources(extractDeepSearchSources(latestAssistantMessage));\n }, [deepSearchQuery, isStreaming, latestAssistantMessage]);\n\n const composerScrollBottomPadding = COMPOSER_SCROLL_RESERVE_PX;\n\n const leftItems = useMemo(\n () =>\n getDefaultLeftItems({\n search: {\n active: activeMode === 'chat',\n onClick: () => handleModeSwitch('chat'),\n },\n zap: {\n active: activeMode === 'deep-search',\n onClick: () => handleModeSwitch('deep-search'),\n },\n lightbulb: { enabled: false },\n }),\n [activeMode, handleModeSwitch],\n );\n\n const rightItems = useMemo(\n () =>\n getDefaultRightItems({\n tag: { enabled: false },\n chip: { enabled: false },\n camera: { enabled: false, onClick: () => console.log('camera') },\n image: { enabled: false, onClick: () => console.log('image') },\n attach: { enabled: false, onClick: () => console.log('attach') },\n }),\n [],\n );\n\n const inputConfig = useMemo(\n () => ({\n value,\n onChange: handleValueChange,\n placeholder: inputPlaceholder,\n disabled: isLoading || disabled,\n }),\n [value, handleValueChange, inputPlaceholder, isLoading, disabled],\n );\n\n const micSendButton = useMemo(\n () => ({\n hasContent: canSubmit,\n onSend: () => handleSubmit(),\n onMic: handleMicPress,\n disabled: isLoading || disabled,\n isLoading,\n onStop: isStreaming ? cancel : onStop,\n }),\n [canSubmit, handleSubmit, handleMicPress, isLoading, disabled, isStreaming, cancel, onStop],\n );\n\n return (\n <SafeAreaView edges={['left', 'right', 'bottom']} style={{ flex: 1, backgroundColor: surfaceColor }}>\n <TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>\n <Box flex={1} width=\"100%\" position=\"relative\">\n {(chatError || cdecli.error) && (\n <Box\n mb=\"$2\"\n mx=\"$4\"\n p=\"$3\"\n borderRadius=\"$md\"\n style={{\n backgroundColor: isDark ? '#2b1a1d' : '#fef2f2',\n borderWidth: 1,\n borderColor: isDark ? '#7f1d1d' : '#fecaca',\n }}\n >\n <Text fontSize=\"$sm\" style={{ color: isDark ? '#fecaca' : '#991b1b' }}>\n {chatError || cdecli.error}\n </Text>\n </Box>\n )}\n {showChatHistory ? (\n <ChatHistoryLanding\n onSelectSession={handleSelectHistorySession}\n onCompose={handleComposeFromHistory}\n />\n ) : hasRenderableConversation ? (\n <ChatContentSection\n contentMaxWidth={contentMaxWidth}\n composerScrollBottomPadding={composerScrollBottomPadding}\n messages={messages}\n response={response}\n isLoading={isLoading}\n disabled={disabled}\n isStreaming={isStreaming}\n onStop={onStop}\n cancel={cancel}\n onSend={handleSendMessage}\n onBackPress={handleNewChat}\n />\n ) : (\n <EmptyStateSection\n isDark={isDark}\n secondaryTextColor={secondaryTextColor}\n primaryTextColor={primaryTextColor}\n activeMode={activeMode}\n onModeSwitch={handleModeSwitch}\n />\n )}\n {!showChatHistory ? (\n <View\n style={[\n styles.bottomComposerWrap,\n {\n bottom: Math.max(0, keyboardHeight - insets.bottom),\n paddingBottom: Math.max(insets.bottom - 6, 2),\n // backgroundColor: composerBarBackground,\n // borderTopColor: composerBarBorder,\n },\n ]}\n >\n <View style={[styles.bottomComposerInner, { width: contentMaxWidth }]}>\n <InputToolBar\n inputConfig={inputConfig}\n leftItems={leftItems}\n rightItems={rightItems}\n templateButton={null}\n templateModalConfig={null}\n micSendButton={micSendButton}\n />\n </View>\n </View>\n ) : null}\n {showSendingLoader ? (\n <View\n pointerEvents=\"none\"\n style={\n pinSendingLoaderNearComposer\n ? [\n styles.sendingLoaderAboveComposer,\n {\n bottom: Math.max(insets.bottom, 12) + SENDING_LOADER_COMPOSER_RESERVE_PX,\n },\n ]\n : styles.sendingLoaderEmptyState\n }\n >\n <YantraBrandLoader size={YANTRA_LOADER_SIZE_COMPACT} />\n </View>\n ) : null}\n </Box>\n </TouchableWithoutFeedback>\n <DeepSearchModal\n visible={isDeepSearchModalOpen}\n query={deepSearchQuery}\n summaryText={deepSearchPreviewNormalized}\n sources={deepSearchSources}\n isStreaming={isStreaming}\n researchProcessOpen={researchProcessOpen}\n sourcesAccordionOpen={sourcesAccordionOpen}\n onToggleResearchProcess={handleToggleResearchProcess}\n onToggleSourcesAccordion={handleToggleSourcesAccordion}\n onRetry={handleRetryDeepSearchPress}\n onStop={cancel}\n onClose={handleDeepSearchClose}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n /** First message / empty screen: loader in the middle of the pane. */\n sendingLoaderEmptyState: {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 40,\n },\n /** Active thread: loader just above the input, not over message history. */\n sendingLoaderAboveComposer: {\n position: 'absolute',\n left: 0,\n right: 0,\n alignItems: 'center',\n justifyContent: 'flex-end',\n paddingBottom: 8,\n zIndex: 40,\n },\n headerRight: {\n flexDirection: 'row',\n alignItems: 'center',\n marginRight: 6,\n gap: 6,\n },\n historyHeaderButton: {\n marginHorizontal: 0,\n padding: 0,\n borderRadius: 22,\n },\n historyHeaderButtonPressed: {\n opacity: 0.72,\n },\n historyHeaderButtonInner: {\n width: 32,\n height: 32,\n borderRadius: 16,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: mobileTokens.color.primarySoft,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: mobileTokens.color.primaryBorder,\n shadowColor: '#312e81',\n shadowOpacity: 0.1,\n shadowRadius: 5,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n historyHeaderButtonInnerDark: {\n backgroundColor: '#1e293b',\n borderColor: 'rgba(148, 163, 184, 0.35)',\n shadowColor: '#111827',\n },\n newChatButton: {\n padding: 0,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 22,\n },\n newChatButtonInner: {\n width: 32,\n height: 32,\n borderRadius: 16,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: mobileTokens.color.surface,\n borderWidth: 1,\n borderColor: mobileTokens.color.border,\n shadowColor: '#0f172a',\n shadowOpacity: 0.08,\n shadowRadius: 5,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n newChatButtonInnerDark: {\n backgroundColor: '#0f172a',\n borderColor: '#334155',\n },\n backButton: {\n marginLeft: 6,\n width: 36,\n height: 36,\n borderRadius: 18,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#f3f4f6',\n },\n newChatButtonPressed: {\n opacity: 0.6,\n },\n emptyCenterTitleWrap: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'flex-start',\n paddingHorizontal: 24,\n paddingTop: 88,\n paddingBottom: 52,\n maxWidth: 520,\n alignSelf: 'center',\n },\n emptyEyebrow: {\n fontSize: 12,\n fontWeight: '600',\n letterSpacing: 0.4,\n textTransform: 'uppercase',\n marginBottom: 10,\n },\n emptyCenterTitle: {\n marginTop: 2,\n fontSize: 30,\n fontWeight: '700',\n textAlign: 'center',\n letterSpacing: -0.5,\n },\n emptySubtitle: {\n marginTop: 12,\n fontSize: 14,\n lineHeight: 22,\n textAlign: 'center',\n paddingHorizontal: 16,\n maxWidth: 360,\n },\n bottomComposerWrap: {\n position: 'absolute',\n width: '100%',\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'flex-end',\n // borderTopWidth: 1,\n shadowColor: '#0f172a',\n shadowOpacity: 0.08,\n shadowRadius: 8,\n shadowOffset: { width: 0, height: -2 },\n backgroundColor: 'transparent',\n elevation: 6,\n },\n bottomComposerInner: {\n paddingHorizontal: 14,\n paddingTop: 10,\n paddingBottom: 4,\n },\n emptyModePillRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n marginBottom: 22,\n borderRadius: 16,\n padding: 6,\n borderWidth: 1,\n shadowColor: '#312e81',\n shadowOpacity: 0.08,\n shadowRadius: 8,\n shadowOffset: { width: 0, height: 3 },\n elevation: 3,\n },\n emptyModePill: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n paddingHorizontal: 12,\n paddingVertical: 7,\n borderRadius: 11,\n },\n emptyModePillActive: {\n shadowColor: '#312e81',\n shadowOpacity: 0.18,\n shadowRadius: 6,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n emptyModePillLabel: {\n fontSize: 12,\n fontWeight: '600',\n },\n});\n\nconst HomeScreen: FC<HomeScreenProps> = (props) => <HomeScreenContent {...props} />;\n\nexport default HomeScreen;\n"],"names":["ChatContentSection","EmptyStateSection","HeaderBackButton","HeaderRightActions","_a","_b","showSub","hideSub","uuidv4","_c"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminide-stack/yantra-mobile",
3
- "version": "12.0.28-alpha.62",
3
+ "version": "12.0.28-alpha.63",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -25,7 +25,7 @@
25
25
  "uuid": "^9.0.0"
26
26
  },
27
27
  "devDependencies": {
28
- "common": "12.0.28-alpha.62"
28
+ "common": "12.0.28-alpha.63"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "@admin-layout/gluestack-ui-mobile": "*",
@@ -40,7 +40,7 @@
40
40
  "@expo/vector-icons": "*",
41
41
  "@messenger-box/platform-mobile": "*",
42
42
  "@react-native-async-storage/async-storage": "*",
43
- "common": "12.0.28-alpha.61",
43
+ "common": "12.0.28-alpha.62",
44
44
  "lodash": "*"
45
45
  },
46
46
  "publishConfig": {
@@ -49,5 +49,5 @@
49
49
  "typescript": {
50
50
  "definition": "lib/index.d.ts"
51
51
  },
52
- "gitHead": "e348ee834c2835b83100a7f126cb4ecea5e35dee"
52
+ "gitHead": "9e362e93155a945fe864bdfafbf59270921be525"
53
53
  }