@adminide-stack/yantra-mobile 12.0.142 → 12.0.145-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/features/attachments/displayUserMessageText.js +2 -2
- package/lib/features/attachments/displayUserMessageText.js.map +1 -1
- package/lib/features/devices/readings.js.map +1 -1
- package/lib/features/devices/session.js +2 -22
- package/lib/features/devices/session.js.map +1 -1
- package/lib/features/notion/NotionAgentPanel.js +987 -0
- package/lib/features/notion/NotionAgentPanel.js.map +1 -0
- package/lib/features/notion/NotionAskAiSheet.js +362 -0
- package/lib/features/notion/NotionAskAiSheet.js.map +1 -0
- package/lib/features/notion/NotionBlockView.js +4 -3
- package/lib/features/notion/NotionBlockView.js.map +1 -1
- package/lib/features/notion/NotionConnectionsSheet.js +47 -13
- package/lib/features/notion/NotionConnectionsSheet.js.map +1 -1
- package/lib/features/notion/NotionPageView.js +68 -8
- package/lib/features/notion/NotionPageView.js.map +1 -1
- package/lib/features/notion/NotionSidebarSections.js +1 -1
- package/lib/features/notion/NotionSidebarSections.js.map +1 -1
- package/lib/features/notion/NotionWorkspaceView.js +14 -9
- package/lib/features/notion/NotionWorkspaceView.js.map +1 -1
- package/lib/features/notion/database/DatabaseCells.js +3 -1
- package/lib/features/notion/database/DatabaseCells.js.map +1 -1
- package/lib/features/notion/database/DatabaseDateLayouts.js +1 -1
- package/lib/features/notion/database/DatabaseDateLayouts.js.map +1 -1
- package/lib/features/notion/database/NotionDatabaseView.js +1 -1
- package/lib/features/notion/database/NotionDatabaseView.js.map +1 -1
- package/lib/features/notion/notionAgentRunStatus.js +2 -2
- package/lib/features/notion/notionAgentRunStatus.js.map +1 -1
- package/lib/features/notion/notionAgentRuns.js +57 -0
- package/lib/features/notion/notionAgentRuns.js.map +1 -0
- package/lib/features/notion/notionAiContext.js +91 -0
- package/lib/features/notion/notionAiContext.js.map +1 -0
- package/lib/features/notion/notionConnections.js +42 -4
- package/lib/features/notion/notionConnections.js.map +1 -1
- package/lib/features/notion/notionDocuments.js +61 -1
- package/lib/features/notion/notionDocuments.js.map +1 -1
- package/lib/features/notion/notionNotesAgent.js +173 -3
- package/lib/features/notion/notionNotesAgent.js.map +1 -1
- package/lib/features/notion/notionPageKinds.js +1 -1
- package/lib/features/webbuilder/WebBuilderExperience.js +229 -97
- package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
- package/lib/features/webbuilder/buildFragments.js +33 -7
- package/lib/features/webbuilder/buildFragments.js.map +1 -1
- package/lib/features/webbuilder/buildJob.js +2 -2
- package/lib/features/webbuilder/buildJob.js.map +1 -1
- package/lib/features/webbuilder/codeFiles.js +18 -1
- package/lib/features/webbuilder/codeFiles.js.map +1 -1
- package/lib/features/webbuilder/components/BottomTabs.js.map +1 -1
- package/lib/features/webbuilder/components/CodeView.js +134 -56
- package/lib/features/webbuilder/components/CodeView.js.map +1 -1
- package/lib/features/webbuilder/components/Composer.js +2 -2
- package/lib/features/webbuilder/components/Composer.js.map +1 -1
- package/lib/features/webbuilder/components/PreviewFrame.js +19 -3
- package/lib/features/webbuilder/components/PreviewFrame.js.map +1 -1
- package/lib/features/webbuilder/components/PreviewScreen.js +310 -46
- package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
- package/lib/features/webbuilder/components/ProjectChat.js +141 -12
- package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
- package/lib/features/webbuilder/components/ProjectSheets.js +792 -0
- package/lib/features/webbuilder/components/ProjectSheets.js.map +1 -0
- package/lib/features/webbuilder/components/ProjectsScreen.js +14 -2
- package/lib/features/webbuilder/components/ProjectsScreen.js.map +1 -1
- package/lib/features/webbuilder/components/PublishSheet.js +914 -58
- package/lib/features/webbuilder/components/PublishSheet.js.map +1 -1
- package/lib/features/webbuilder/components/TemplateCard.js +9 -6
- package/lib/features/webbuilder/components/TemplateCard.js.map +1 -1
- package/lib/features/webbuilder/components/TemplatesSheet.js +5 -17
- package/lib/features/webbuilder/components/TemplatesSheet.js.map +1 -1
- package/lib/features/webbuilder/connectorTemplates.js +171 -0
- package/lib/features/webbuilder/connectorTemplates.js.map +1 -0
- package/lib/features/webbuilder/fileTree.js +163 -0
- package/lib/features/webbuilder/fileTree.js.map +1 -0
- package/lib/features/webbuilder/followUps.js +67 -0
- package/lib/features/webbuilder/followUps.js.map +1 -0
- package/lib/features/webbuilder/previewProbe.js +49 -0
- package/lib/features/webbuilder/previewProbe.js.map +1 -0
- package/lib/features/webbuilder/previewRoutes.js +156 -0
- package/lib/features/webbuilder/previewRoutes.js.map +1 -0
- package/lib/features/webbuilder/projectTools.js +341 -0
- package/lib/features/webbuilder/projectTools.js.map +1 -0
- package/lib/features/webbuilder/publishTools.js +475 -0
- package/lib/features/webbuilder/publishTools.js.map +1 -0
- package/lib/features/webbuilder/sleepNotice.js +13 -0
- package/lib/features/webbuilder/sleepNotice.js.map +1 -0
- package/lib/features/webbuilder/stepLabels.js +37 -7
- package/lib/features/webbuilder/stepLabels.js.map +1 -1
- package/lib/features/webbuilder/studioCatalog.js +5 -1
- package/lib/features/webbuilder/studioCatalog.js.map +1 -1
- package/lib/features/webbuilder/templateCatalog.js +140 -0
- package/lib/features/webbuilder/templateCatalog.js.map +1 -0
- package/lib/features/webbuilder/webbuilderPrompts.js +31 -5
- package/lib/features/webbuilder/webbuilderPrompts.js.map +1 -1
- package/lib/features/webbuilder/workflow.js +8 -4
- package/lib/features/webbuilder/workflow.js.map +1 -1
- package/lib/screens/Devices/index.js +3 -205
- package/lib/screens/Devices/index.js.map +1 -1
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js +9 -6
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js.map +1 -1
- package/lib/screens/WebBuilderNative/index.js +1 -1
- package/lib/screens/WebBuilderNative/index.js.map +1 -1
- package/lib/screens/WebBuilderNative/keepAlive.js +53 -3
- package/lib/screens/WebBuilderNative/keepAlive.js.map +1 -1
- package/lib/screens/WebBuilderNative/unreachableRetry.js +23 -0
- package/lib/screens/WebBuilderNative/unreachableRetry.js.map +1 -0
- package/lib/screens/WebBuilderNative/useConnectorTemplates.js +37 -0
- package/lib/screens/WebBuilderNative/useConnectorTemplates.js.map +1 -0
- package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js +6 -0
- package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js +302 -40
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderJobs.js +2 -2
- package/lib/screens/WebBuilderNative/useWebBuilderJobs.js.map +1 -1
- package/lib/screens/WebBuilderNative/versionUndo.js +1 -1
- package/lib/screens/WebBuilderNative/versionUndo.js.map +1 -1
- package/lib/screens/WebBuilderNative/webbuilderTransport.js +147 -77
- package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
- package/package.json +4 -4
- package/lib/features/devices/bodyComposition.js +0 -116
- package/lib/features/devices/bodyComposition.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useMemo,useEffect}from'react';import {StyleSheet,KeyboardAvoidingView,FlatList,View,Text,TextInput,Platform,ActivityIndicator,Image}from'react-native';import {WebView}from'react-native-webview';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Tap,DIM}from'../../inbox/components/Tap.js';import {AssistantMarkdown}from'../../chat/AssistantMarkdown.js';import {ToolTimeline}from'../../chat/ToolTimeline.js';import {parseToolActivity}from'../../chat/toolActivity.js';import {friendlySteps}from'../stepLabels.js';import {AskUserCard}from'../../chat/AskUserCard.js';import {displayHost}from'../buildFragments.js';import {DESKTOP_VIEWPORT_SCRIPT}from'./PreviewFrame.js';import {PreviewPlaceholder}from'./PreviewPlaceholder.js';import {
|
|
1
|
+
import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useMemo,useEffect}from'react';import {StyleSheet,KeyboardAvoidingView,FlatList,View,Text,TextInput,Platform,ActivityIndicator,Image}from'react-native';import {WebView}from'react-native-webview';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Tap,DIM}from'../../inbox/components/Tap.js';import {AssistantMarkdown}from'../../chat/AssistantMarkdown.js';import {ToolTimeline}from'../../chat/ToolTimeline.js';import {parseToolActivity}from'../../chat/toolActivity.js';import {friendlySteps}from'../stepLabels.js';import {webbuilderAgentSuggestions,withoutRestorePointLine,publishEventText}from'../webbuilderPrompts.js';import {sleepNoticeDue,minutesUntilSleep}from'../sleepNotice.js';import {followUpSuggestions}from'../followUps.js';import {AskUserCard}from'../../chat/AskUserCard.js';import {displayHost}from'../buildFragments.js';import {DESKTOP_VIEWPORT_SCRIPT}from'./PreviewFrame.js';import {PreviewPlaceholder}from'./PreviewPlaceholder.js';import {probePreview,mayFrame}from'../previewProbe.js';var __defProp = Object.defineProperty;
|
|
2
2
|
var __defProps = Object.defineProperties;
|
|
3
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -58,10 +58,40 @@ function AgentTurn({
|
|
|
58
58
|
theme
|
|
59
59
|
}) {
|
|
60
60
|
const parsed = useMemo(() => parseToolActivity(content, active), [content, active]);
|
|
61
|
+
const {
|
|
62
|
+
text,
|
|
63
|
+
saved
|
|
64
|
+
} = useMemo(() => withoutRestorePointLine(parsed.text), [parsed.text]);
|
|
61
65
|
return /* @__PURE__ */ jsxs(View, { style: styles.agentTurn, children: [
|
|
62
66
|
/* @__PURE__ */ jsx(AgentAvatar, { theme }),
|
|
63
67
|
parsed.steps.length ? /* @__PURE__ */ jsx(ToolTimeline, { steps: friendlySteps(parsed.steps), active, isDark: theme.isDark }) : null,
|
|
64
|
-
|
|
68
|
+
text ? /* @__PURE__ */ jsx(AssistantMarkdown, { text, streaming: active, isDark: theme.isDark }) : null,
|
|
69
|
+
saved && !active ? /* @__PURE__ */ jsxs(View, { style: [styles.versionChip, {
|
|
70
|
+
borderColor: theme.border,
|
|
71
|
+
backgroundColor: theme.chip
|
|
72
|
+
}], accessibilityLabel: "Version saved. You can go back to it from Versions.", children: [
|
|
73
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "history", size: 12, color: theme.muted }),
|
|
74
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.versionChipText, {
|
|
75
|
+
color: theme.muted
|
|
76
|
+
}], children: "Version saved" })
|
|
77
|
+
] }) : null
|
|
78
|
+
] });
|
|
79
|
+
}
|
|
80
|
+
function EventLine({
|
|
81
|
+
text,
|
|
82
|
+
theme
|
|
83
|
+
}) {
|
|
84
|
+
return /* @__PURE__ */ jsxs(View, { style: styles.eventLine, accessibilityRole: "text", children: [
|
|
85
|
+
/* @__PURE__ */ jsx(View, { style: [styles.eventRule, {
|
|
86
|
+
backgroundColor: theme.border
|
|
87
|
+
}] }),
|
|
88
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "rocket-launch-outline", size: 13, color: theme.muted }),
|
|
89
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.eventText, {
|
|
90
|
+
color: theme.muted
|
|
91
|
+
}], numberOfLines: 1, children: text }),
|
|
92
|
+
/* @__PURE__ */ jsx(View, { style: [styles.eventRule, {
|
|
93
|
+
backgroundColor: theme.border
|
|
94
|
+
}] })
|
|
65
95
|
] });
|
|
66
96
|
}
|
|
67
97
|
function LiveTurn({
|
|
@@ -103,11 +133,24 @@ function SiteCard({
|
|
|
103
133
|
onOpen,
|
|
104
134
|
onPublish,
|
|
105
135
|
onAsleep,
|
|
136
|
+
previewDown = false,
|
|
106
137
|
theme
|
|
107
138
|
}) {
|
|
108
|
-
const url = build.previewUrl;
|
|
139
|
+
const url = previewDown ? null : build.previewUrl;
|
|
109
140
|
const [loaded, setLoaded] = useState(false);
|
|
110
141
|
const [asleep, setAsleep] = useState(false);
|
|
142
|
+
const [now, setNow] = useState(() => Date.now());
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
if (build.origin !== "agent" || build.liveUrl) return void 0;
|
|
145
|
+
const timer = setInterval(() => setNow(Date.now()), 6e4);
|
|
146
|
+
return () => clearInterval(timer);
|
|
147
|
+
}, [build.origin, build.liveUrl]);
|
|
148
|
+
const sleepSoon = sleepNoticeDue({
|
|
149
|
+
lastChangeAt: build.updatedAt,
|
|
150
|
+
now,
|
|
151
|
+
busy
|
|
152
|
+
});
|
|
153
|
+
const sleepMinutes = minutesUntilSleep(build.updatedAt, now);
|
|
111
154
|
useEffect(() => {
|
|
112
155
|
setLoaded(false);
|
|
113
156
|
setAsleep(false);
|
|
@@ -129,6 +172,20 @@ function SiteCard({
|
|
|
129
172
|
const [coverFailed, setCoverFailed] = useState(false);
|
|
130
173
|
useEffect(() => setCoverFailed(false), [build.coverUrl]);
|
|
131
174
|
const cover = build.coverUrl && !coverFailed ? build.coverUrl : null;
|
|
175
|
+
const [verified, setVerified] = useState(false);
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
setVerified(false);
|
|
178
|
+
if (!url || cover) return void 0;
|
|
179
|
+
let live = true;
|
|
180
|
+
probePreview(url).then((probe) => {
|
|
181
|
+
if (!live) return;
|
|
182
|
+
if (mayFrame(probe)) setVerified(true);
|
|
183
|
+
else setAsleep(true);
|
|
184
|
+
});
|
|
185
|
+
return () => {
|
|
186
|
+
live = false;
|
|
187
|
+
};
|
|
188
|
+
}, [url, cover, recheck]);
|
|
132
189
|
const status = build.liveUrl ? `Live \xB7 ${displayHost(build.liveUrl)}` : `Not published \xB7 ${timeOf(build.updatedAt)}`;
|
|
133
190
|
return /* @__PURE__ */ jsxs(View, { style: [styles.site, {
|
|
134
191
|
backgroundColor: theme.card,
|
|
@@ -155,15 +212,15 @@ function SiteCard({
|
|
|
155
212
|
cover ? /* @__PURE__ */ jsx(Image, { source: {
|
|
156
213
|
uri: cover
|
|
157
214
|
}, style: styles.siteCover, resizeMode: "cover", onError: () => setCoverFailed(true), accessibilityIgnoresInvertColors: true }) : null,
|
|
158
|
-
!cover && url ? /* @__PURE__ */ jsx(WebView, { source: {
|
|
215
|
+
!cover && url && verified ? /* @__PURE__ */ jsx(WebView, { source: {
|
|
159
216
|
uri: url
|
|
160
217
|
}, style: [styles.siteWeb, !loaded && styles.hidden], scrollEnabled: false, javaScriptEnabled: true, domStorageEnabled: true, originWhitelist: ["*"], scalesPageToFit: true, injectedJavaScript: DESKTOP_VIEWPORT_SCRIPT, onLoadEnd: () => setLoaded(true), onHttpError: (event) => {
|
|
161
218
|
if (event.nativeEvent.statusCode >= 500) setAsleep(true);
|
|
162
219
|
}, onError: () => setAsleep(true) }, `${url}-${recheck}`) : null,
|
|
163
|
-
!cover && asleep ? /* @__PURE__ */ jsx(View, { style: [styles.siteLoading, {
|
|
220
|
+
!cover && (asleep || previewDown) ? /* @__PURE__ */ jsx(View, { style: [styles.siteLoading, {
|
|
164
221
|
backgroundColor: theme.stage
|
|
165
222
|
}], children: /* @__PURE__ */ jsx(PreviewPlaceholder, { theme, compact: true }) }) : null,
|
|
166
|
-
!cover && !asleep && (!url || !loaded) ? /* @__PURE__ */ jsxs(View, { style: styles.siteLoading, children: [
|
|
223
|
+
!cover && !asleep && !previewDown && (!url || !loaded) ? /* @__PURE__ */ jsxs(View, { style: styles.siteLoading, children: [
|
|
167
224
|
/* @__PURE__ */ jsx(ActivityIndicator, { color: theme.accent }),
|
|
168
225
|
/* @__PURE__ */ jsx(Text, { style: [styles.siteLoadingText, {
|
|
169
226
|
color: theme.muted
|
|
@@ -178,13 +235,17 @@ function SiteCard({
|
|
|
178
235
|
}], children: "Updating\u2026" })
|
|
179
236
|
] }) : null
|
|
180
237
|
] }) }),
|
|
181
|
-
build.origin === "agent" && !build.liveUrl ? /* @__PURE__ */ jsxs(View, { style: [styles.siteNote, {
|
|
238
|
+
build.origin === "agent" && !build.liveUrl && sleepSoon ? /* @__PURE__ */ jsxs(View, { style: [styles.siteNote, {
|
|
182
239
|
backgroundColor: theme.warnSoft
|
|
183
240
|
}], children: [
|
|
184
241
|
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "clock-outline", size: 15, color: theme.warn }),
|
|
185
|
-
/* @__PURE__ */
|
|
242
|
+
/* @__PURE__ */ jsxs(Text, { style: [styles.siteNoteText, {
|
|
186
243
|
color: theme.ink
|
|
187
|
-
}], children:
|
|
244
|
+
}], children: [
|
|
245
|
+
sleepMinutes > 0 ? `The preview sleeps in about ${sleepMinutes} minute${sleepMinutes === 1 ? "" : "s"}` : "The preview sleeps about now",
|
|
246
|
+
build.snapshotId ? "; a restore point is saved." : ".",
|
|
247
|
+
" Publish to keep it online."
|
|
248
|
+
] })
|
|
188
249
|
] }) : null,
|
|
189
250
|
/* @__PURE__ */ jsxs(View, { style: styles.siteFoot, children: [
|
|
190
251
|
/* @__PURE__ */ jsx(Tap, { onPress: onOpen, accessibilityRole: "button", style: [styles.siteBtn, {
|
|
@@ -213,6 +274,7 @@ function ProjectChat({
|
|
|
213
274
|
onOpenPreview,
|
|
214
275
|
onPublish,
|
|
215
276
|
onPreviewAsleep,
|
|
277
|
+
previewDown = false,
|
|
216
278
|
ask = null,
|
|
217
279
|
onAnswerAsk,
|
|
218
280
|
theme,
|
|
@@ -256,6 +318,8 @@ function ProjectChat({
|
|
|
256
318
|
setDraft("");
|
|
257
319
|
};
|
|
258
320
|
const suggestions = messages.length === 0 && !live ? webbuilderAgentSuggestions(Boolean(build), siteTitle) : [];
|
|
321
|
+
const lastReply = messages[messages.length - 1];
|
|
322
|
+
const followUps = useMemo(() => (lastReply == null ? void 0 : lastReply.role) === "assistant" ? followUpSuggestions(withoutRestorePointLine(parseToolActivity(lastReply.content, false).text).text) : [], [lastReply]);
|
|
259
323
|
return /* @__PURE__ */ jsxs(KeyboardAvoidingView, { style: styles.fill, behavior: Platform.OS === "ios" ? "padding" : void 0, keyboardVerticalOffset: Platform.OS === "ios" ? 96 : 0, children: [
|
|
260
324
|
/* @__PURE__ */ jsx(FlatList, { ref: listRef, data: rows, keyExtractor: (row) => row.id, contentContainerStyle: styles.list, keyboardShouldPersistTaps: "handled", scrollEventThrottle: 100, onScroll: (event) => {
|
|
261
325
|
const {
|
|
@@ -283,12 +347,27 @@ function ProjectChat({
|
|
|
283
347
|
var _a;
|
|
284
348
|
if (item.kind === "live") return /* @__PURE__ */ jsx(LiveTurn, { streaming, building, theme });
|
|
285
349
|
if (item.kind === "site" && build) {
|
|
286
|
-
return /* @__PURE__ */ jsx(SiteCard, { build, title: siteTitle, busy: live, onOpen: onOpenPreview, onPublish, onAsleep: onPreviewAsleep, theme });
|
|
350
|
+
return /* @__PURE__ */ jsx(SiteCard, { build, title: siteTitle, busy: live, onOpen: onOpenPreview, onPublish, onAsleep: onPreviewAsleep, previewDown, theme });
|
|
287
351
|
}
|
|
288
352
|
if (item.kind !== "message") return null;
|
|
289
353
|
const m = item.message;
|
|
290
|
-
if (m.role === "user")
|
|
291
|
-
|
|
354
|
+
if (m.role === "user") {
|
|
355
|
+
const event = publishEventText(m.content);
|
|
356
|
+
if (event) return /* @__PURE__ */ jsx(EventLine, { text: event, theme });
|
|
357
|
+
return /* @__PURE__ */ jsx(UserBubble, { text: (_a = m.displayContent) != null ? _a : m.content, theme });
|
|
358
|
+
}
|
|
359
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
360
|
+
/* @__PURE__ */ jsx(AgentTurn, { content: m.content, active: false, theme }),
|
|
361
|
+
m === lastReply && followUps.length && !live ? /* @__PURE__ */ jsx(View, { style: styles.followUps, testID: "webbuilder-follow-ups", children: followUps.map((f) => /* @__PURE__ */ jsxs(Tap, { onPress: () => setDraft(f.prompt), accessibilityRole: "button", accessibilityLabel: `Suggest: ${f.prompt}`, style: [styles.followUp, {
|
|
362
|
+
borderColor: theme.border,
|
|
363
|
+
backgroundColor: theme.card
|
|
364
|
+
}], pressedStyle: DIM, children: [
|
|
365
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "lightbulb-outline", size: 14, color: theme.accent }),
|
|
366
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.followUpText, {
|
|
367
|
+
color: theme.ink
|
|
368
|
+
}], numberOfLines: 1, children: f.label })
|
|
369
|
+
] }, f.label)) }) : null
|
|
370
|
+
] });
|
|
292
371
|
} }),
|
|
293
372
|
!atBottom ? /* @__PURE__ */ jsx(Tap, { onPress: () => {
|
|
294
373
|
var _a;
|
|
@@ -341,6 +420,56 @@ function ProjectChat({
|
|
|
341
420
|
] });
|
|
342
421
|
}
|
|
343
422
|
const styles = StyleSheet.create({
|
|
423
|
+
versionChip: {
|
|
424
|
+
flexDirection: "row",
|
|
425
|
+
alignItems: "center",
|
|
426
|
+
alignSelf: "flex-start",
|
|
427
|
+
gap: 4,
|
|
428
|
+
marginTop: 6,
|
|
429
|
+
paddingHorizontal: 8,
|
|
430
|
+
paddingVertical: 3,
|
|
431
|
+
borderRadius: 999,
|
|
432
|
+
borderWidth: StyleSheet.hairlineWidth
|
|
433
|
+
},
|
|
434
|
+
versionChipText: {
|
|
435
|
+
fontSize: 11,
|
|
436
|
+
fontWeight: "500"
|
|
437
|
+
},
|
|
438
|
+
followUps: {
|
|
439
|
+
flexDirection: "row",
|
|
440
|
+
flexWrap: "wrap",
|
|
441
|
+
gap: 6,
|
|
442
|
+
marginTop: 6
|
|
443
|
+
},
|
|
444
|
+
followUp: {
|
|
445
|
+
flexDirection: "row",
|
|
446
|
+
alignItems: "center",
|
|
447
|
+
gap: 5,
|
|
448
|
+
maxWidth: "100%",
|
|
449
|
+
minHeight: 34,
|
|
450
|
+
paddingHorizontal: 11,
|
|
451
|
+
borderRadius: 17,
|
|
452
|
+
borderWidth: StyleSheet.hairlineWidth
|
|
453
|
+
},
|
|
454
|
+
followUpText: {
|
|
455
|
+
fontSize: 13,
|
|
456
|
+
flexShrink: 1
|
|
457
|
+
},
|
|
458
|
+
eventLine: {
|
|
459
|
+
flexDirection: "row",
|
|
460
|
+
alignItems: "center",
|
|
461
|
+
gap: 8,
|
|
462
|
+
paddingVertical: 6,
|
|
463
|
+
paddingHorizontal: 4
|
|
464
|
+
},
|
|
465
|
+
eventRule: {
|
|
466
|
+
flex: 1,
|
|
467
|
+
height: StyleSheet.hairlineWidth
|
|
468
|
+
},
|
|
469
|
+
eventText: {
|
|
470
|
+
fontSize: 12,
|
|
471
|
+
flexShrink: 1
|
|
472
|
+
},
|
|
344
473
|
askCard: {
|
|
345
474
|
paddingHorizontal: 16,
|
|
346
475
|
paddingTop: 4,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectChat.js","sources":["../../../../src/features/webbuilder/components/ProjectChat.tsx"],"sourcesContent":["/**\n * A project's conversation, the way Manus shows an agent at work: what you\n * asked, then the agent's turn - its live steps (\"Working · 12s\" with each tool\n * it ran), what it says, and once there is a site, a live card of it with Open\n * preview and Publish. The composer stays at the bottom for the next change.\n */\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n Image,\n KeyboardAvoidingView,\n Platform,\n StyleSheet,\n Text,\n TextInput,\n View,\n} from 'react-native';\nimport { WebView } from 'react-native-webview';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { DIM, Tap } from '../../inbox/components/Tap';\nimport { AssistantMarkdown } from '../../chat/AssistantMarkdown';\nimport { ToolTimeline } from '../../chat/ToolTimeline';\nimport { parseToolActivity } from '../../chat/toolActivity';\nimport { friendlySteps } from '../stepLabels';\nimport { AskUserCard } from '../../chat/AskUserCard';\nimport type { AskUserPayload } from '../../chat/askUser';\nimport type { AgentChatMessage } from '../../agent-chat';\nimport { displayHost } from '../buildFragments';\nimport type { WebBuilderBuild, WebBuilderBuilding } from '../types';\nimport type { WebBuilderTheme } from '../webbuilderTheme';\nimport { DESKTOP_VIEWPORT_SCRIPT } from './PreviewFrame';\nimport { PreviewPlaceholder } from './PreviewPlaceholder';\nimport { webbuilderAgentSuggestions } from '../webbuilderPrompts';\n\ntype Row =\n | { kind: 'message'; id: string; message: AgentChatMessage }\n | { kind: 'live'; id: string }\n | { kind: 'site'; id: string };\n\nfunction elapsedLabel(seconds: number): string {\n if (seconds < 60) return `${seconds}s`;\n return `${Math.floor(seconds / 60)}m ${String(seconds % 60).padStart(2, '0')}s`;\n}\n\nfunction useElapsed(startedAt: number | null): number {\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n if (!startedAt) return undefined;\n const timer = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(timer);\n }, [startedAt]);\n return startedAt ? Math.max(0, Math.floor((now - startedAt) / 1000)) : 0;\n}\n\nfunction UserBubble({ text, theme }: { text: string; theme: WebBuilderTheme }) {\n return (\n <View style={styles.userRow}>\n <View style={[styles.userBubble, { backgroundColor: theme.chip }]}>\n <Text style={[styles.userText, { color: theme.ink }]} selectable>\n {text}\n </Text>\n </View>\n </View>\n );\n}\n\nfunction AgentAvatar({ theme }: { theme: WebBuilderTheme }) {\n return (\n <View style={styles.agentHead}>\n <View style={[styles.agentMark, { backgroundColor: theme.accent }]}>\n <MaterialCommunityIcons name=\"creation\" size={14} color={theme.accentInk} />\n </View>\n <Text style={[styles.agentName, { color: theme.ink }]}>Web Builder</Text>\n </View>\n );\n}\n\nfunction AgentTurn({ content, active, theme }: { content: string; active: boolean; theme: WebBuilderTheme }) {\n const parsed = useMemo(() => parseToolActivity(content, active), [content, active]);\n return (\n <View style={styles.agentTurn}>\n <AgentAvatar theme={theme} />\n {parsed.steps.length ? (\n <ToolTimeline steps={friendlySteps(parsed.steps)} active={active} isDark={theme.isDark} />\n ) : null}\n {parsed.text ? <AssistantMarkdown text={parsed.text} streaming={active} isDark={theme.isDark} /> : null}\n </View>\n );\n}\n\nfunction LiveTurn({\n streaming,\n building,\n theme,\n}: {\n streaming: string | null;\n building: WebBuilderBuilding | null;\n theme: WebBuilderTheme;\n}) {\n const elapsed = useElapsed(building?.startedAt ?? null);\n const parsed = useMemo(() => parseToolActivity(streaming ?? '', true), [streaming]);\n const showStatus = !parsed.text && parsed.steps.length === 0;\n return (\n <View style={styles.agentTurn}>\n <AgentAvatar theme={theme} />\n {parsed.steps.length ? (\n <ToolTimeline steps={friendlySteps(parsed.steps)} active isDark={theme.isDark} />\n ) : null}\n {parsed.text ? <AssistantMarkdown text={parsed.text} streaming isDark={theme.isDark} /> : null}\n {showStatus ? (\n <View style={[styles.working, { backgroundColor: theme.card, borderColor: theme.border }]}>\n <ActivityIndicator size=\"small\" color={theme.accent} />\n <Text style={[styles.workingText, { color: theme.ink }]} numberOfLines={2}>\n {building?.statusText || 'Thinking…'}\n </Text>\n {building ? (\n <Text style={[styles.workingTime, { color: theme.muted }]}>{elapsedLabel(elapsed)}</Text>\n ) : null}\n </View>\n ) : null}\n </View>\n );\n}\n\nfunction timeOf(ms: number): string {\n if (!ms) return '';\n const d = new Date(ms);\n return `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`;\n}\n\n/**\n * The site as it is now - Manus's app card: what it is and whether it is live,\n * a glimpse of the running page (laid out at desktop width and fitted, so it\n * reads as the site rather than a cropped corner), and the two ways forward.\n */\nfunction SiteCard({\n build,\n title,\n busy,\n onOpen,\n onPublish,\n onAsleep,\n theme,\n}: {\n build: WebBuilderBuild;\n title: string;\n busy: boolean;\n onOpen: () => void;\n onPublish: () => void;\n /** The live page answered 5xx: start bringing it back (web `ensurePreview` on open). */\n onAsleep?: () => void;\n theme: WebBuilderTheme;\n}) {\n const url = build.previewUrl;\n const [loaded, setLoaded] = useState(false);\n // A sandbox that slept or was reclaimed answers with the host's own error page\n // (E2B \"502 Sandbox not found\"); that page is never shown, the card says what it means.\n const [asleep, setAsleep] = useState(false);\n useEffect(() => {\n setLoaded(false);\n setAsleep(false);\n }, [url]);\n // During the agent's turn a 5xx means its dev server is still starting: check again\n // every 3 s and leave the sandbox to the agent; wake it only once the turn ends (web #431).\n const [recheck, setRecheck] = useState(0);\n useEffect(() => {\n if (!asleep) return undefined;\n if (!busy) {\n onAsleep?.();\n return undefined;\n }\n const timer = setTimeout(() => {\n setAsleep(false);\n setLoaded(false);\n setRecheck((n) => n + 1);\n }, 3_000);\n return () => clearTimeout(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [asleep, busy]);\n // Cover first, live page only without one - the web CreationTile's order. The\n // screenshot is instant and needs no awake sandbox, so it outlives the preview.\n const [coverFailed, setCoverFailed] = useState(false);\n useEffect(() => setCoverFailed(false), [build.coverUrl]);\n const cover = build.coverUrl && !coverFailed ? build.coverUrl : null;\n const status = build.liveUrl\n ? `Live · ${displayHost(build.liveUrl)}`\n : `Not published · ${timeOf(build.updatedAt)}`;\n return (\n <View\n style={[\n styles.site,\n {\n backgroundColor: theme.card,\n borderColor: theme.border,\n shadowColor: theme.isDark ? '#000' : '#1c1917',\n },\n ]}\n >\n <Tap\n onPress={onOpen}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${title}`}\n style={styles.siteHead}\n pressedStyle={DIM}\n >\n <View style={[styles.siteGlobe, { backgroundColor: build.liveUrl ? theme.good : theme.accent }]}>\n <MaterialCommunityIcons name=\"web\" size={24} color={theme.accentInk} />\n </View>\n <View style={styles.siteHeadText}>\n <Text style={[styles.siteTitle, { color: theme.ink }]} numberOfLines={1}>\n {title}\n </Text>\n <Text style={[styles.siteStatus, { color: theme.muted }]} numberOfLines={1}>\n {status}\n </Text>\n </View>\n </Tap>\n <Tap onPress={onOpen} accessibilityRole=\"button\" accessibilityLabel={`Open the preview of ${title}`}>\n <View\n style={[styles.siteView, { backgroundColor: theme.stage, borderColor: theme.border }]}\n pointerEvents=\"none\"\n >\n {cover ? (\n <Image\n source={{ uri: cover }}\n style={styles.siteCover}\n resizeMode=\"cover\"\n onError={() => setCoverFailed(true)}\n accessibilityIgnoresInvertColors\n />\n ) : null}\n {!cover && url ? (\n <WebView\n key={`${url}-${recheck}`}\n source={{ uri: url }}\n style={[styles.siteWeb, !loaded && styles.hidden]}\n scrollEnabled={false}\n javaScriptEnabled\n domStorageEnabled\n originWhitelist={['*']}\n scalesPageToFit\n injectedJavaScript={DESKTOP_VIEWPORT_SCRIPT}\n onLoadEnd={() => setLoaded(true)}\n onHttpError={(event) => {\n if (event.nativeEvent.statusCode >= 500) setAsleep(true);\n }}\n onError={() => setAsleep(true)}\n />\n ) : null}\n {!cover && asleep ? (\n <View style={[styles.siteLoading, { backgroundColor: theme.stage }]}>\n <PreviewPlaceholder theme={theme} compact />\n </View>\n ) : null}\n {!cover && !asleep && (!url || !loaded) ? (\n <View style={styles.siteLoading}>\n <ActivityIndicator color={theme.accent} />\n <Text style={[styles.siteLoadingText, { color: theme.muted }]}>Loading preview…</Text>\n </View>\n ) : null}\n {busy && (cover || (loaded && !asleep)) ? (\n <View style={[styles.siteBusy, { backgroundColor: theme.card }]}>\n <ActivityIndicator size=\"small\" color={theme.accent} />\n <Text style={[styles.siteBusyText, { color: theme.ink }]}>Updating…</Text>\n </View>\n ) : null}\n </View>\n </Tap>\n {build.origin === 'agent' && !build.liveUrl ? (\n <View style={[styles.siteNote, { backgroundColor: theme.warnSoft }]}>\n <MaterialCommunityIcons name=\"clock-outline\" size={15} color={theme.warn} />\n <Text style={[styles.siteNoteText, { color: theme.ink }]}>\n {build.snapshotId\n ? 'The preview lasts about an hour after the last change; a restore point is saved. Publish to keep it online.'\n : 'The preview lasts about an hour after the last change. Publish to keep it online.'}\n </Text>\n </View>\n ) : null}\n <View style={styles.siteFoot}>\n <Tap\n onPress={onOpen}\n accessibilityRole=\"button\"\n style={[styles.siteBtn, { backgroundColor: theme.chip }]}\n pressedStyle={DIM}\n testID=\"webbuilder-card-preview\"\n >\n <Text style={[styles.siteBtnText, { color: theme.ink }]}>Preview</Text>\n </Tap>\n <Tap\n onPress={onPublish}\n disabled={!build.sandboxId}\n accessibilityRole=\"button\"\n style={[styles.siteBtn, { backgroundColor: theme.ink }, !build.sandboxId && styles.disabled]}\n pressedStyle={DIM}\n testID=\"webbuilder-card-publish\"\n >\n <Text style={[styles.siteBtnText, { color: theme.card }]}>Publish</Text>\n </Tap>\n </View>\n </View>\n );\n}\n\nexport function ProjectChat({\n messages,\n streaming,\n busy,\n error,\n connected,\n building,\n build,\n siteTitle,\n onSend,\n onOpenPreview,\n onPublish,\n onPreviewAsleep,\n ask = null,\n onAnswerAsk,\n theme,\n bottomInset,\n}: {\n messages: AgentChatMessage[];\n streaming: string | null;\n busy: boolean;\n error: string | null;\n connected: boolean;\n building: WebBuilderBuilding | null;\n build: WebBuilderBuild | null;\n siteTitle: string;\n onSend: (text: string) => void;\n onOpenPreview: () => void;\n onPublish: () => void;\n /** The site card found the sandbox asleep or expired. */\n onPreviewAsleep?: () => void;\n /** The agent's question waiting for an answer (`[ASK_USER]`), shown as the question card. */\n ask?: AskUserPayload | null;\n /** Send the formatted answers as the reply (releases the agent's parked turn). */\n onAnswerAsk?: (formatted: string) => void;\n theme: WebBuilderTheme;\n bottomInset: number;\n}) {\n const [draft, setDraft] = useState('');\n // Questions the person closed without answering (the agent asks again if it needs to).\n const [dismissedAsks, setDismissedAsks] = useState<string[]>([]);\n const listRef = useRef<FlatList<Row>>(null);\n // Follow the conversation unless the person scrolled up to read; then offer a way back.\n const [atBottom, setAtBottom] = useState(true);\n const live = busy || Boolean(building);\n\n const rows = useMemo<Row[]>(() => {\n const out: Row[] = messages.map((m) => ({ kind: 'message', id: m.id, message: m }));\n if (build) out.push({ kind: 'site', id: `site-${build.key}` });\n if (live) out.push({ kind: 'live', id: 'live' });\n return out;\n }, [messages, build, live]);\n\n useEffect(() => {\n if (!atBottom) return undefined;\n const timer = setTimeout(() => listRef.current?.scrollToEnd({ animated: true }), 80);\n return () => clearTimeout(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rows.length, streaming]);\n\n const send = (text: string) => {\n const words = text.trim();\n if (!words) return;\n onSend(words);\n setDraft('');\n };\n\n const suggestions = messages.length === 0 && !live ? webbuilderAgentSuggestions(Boolean(build), siteTitle) : [];\n\n return (\n <KeyboardAvoidingView\n style={styles.fill}\n behavior={Platform.OS === 'ios' ? 'padding' : undefined}\n keyboardVerticalOffset={Platform.OS === 'ios' ? 96 : 0}\n >\n <FlatList\n ref={listRef}\n data={rows}\n keyExtractor={(row) => row.id}\n contentContainerStyle={styles.list}\n keyboardShouldPersistTaps=\"handled\"\n scrollEventThrottle={100}\n onScroll={(event) => {\n const { layoutMeasurement, contentOffset, contentSize } = event.nativeEvent;\n setAtBottom(layoutMeasurement.height + contentOffset.y >= contentSize.height - 48);\n }}\n ListEmptyComponent={\n <View style={styles.empty}>\n <View style={[styles.emptyMark, { backgroundColor: theme.accentSoft }]}>\n <MaterialCommunityIcons name=\"creation\" size={26} color={theme.accent} />\n </View>\n <Text style={[styles.emptyTitle, { color: theme.ink }]}>\n {build ? `What should change on ${siteTitle}?` : 'Describe your idea'}\n </Text>\n <Text style={[styles.emptyBody, { color: theme.muted }]}>\n {build\n ? 'Ask for new sections, another look, copy changes or fixes.'\n : \"Tell me what the site is for and I'll build it step by step.\"}\n </Text>\n </View>\n }\n ListFooterComponent={\n ask && onAnswerAsk && !dismissedAsks.includes(ask.requestId) ? (\n <View style={styles.askCard}>\n <AskUserCard\n key={ask.requestId}\n payload={ask}\n isDark={theme.isDark}\n onAnswer={(formatted) => {\n // Answered: the card goes, as in the main chat.\n setDismissedAsks((prev) => [...prev, ask.requestId]);\n onAnswerAsk(formatted);\n }}\n onDismiss={() => setDismissedAsks((prev) => [...prev, ask.requestId])}\n />\n </View>\n ) : null\n }\n renderItem={({ item }) => {\n if (item.kind === 'live')\n return <LiveTurn streaming={streaming} building={building} theme={theme} />;\n if (item.kind === 'site' && build) {\n return (\n <SiteCard\n build={build}\n title={siteTitle}\n busy={live}\n onOpen={onOpenPreview}\n onPublish={onPublish}\n onAsleep={onPreviewAsleep}\n theme={theme}\n />\n );\n }\n if (item.kind !== 'message') return null;\n const m = item.message;\n if (m.role === 'user') return <UserBubble text={m.displayContent ?? m.content} theme={theme} />;\n return <AgentTurn content={m.content} active={false} theme={theme} />;\n }}\n />\n\n {!atBottom ? (\n <Tap\n onPress={() => {\n setAtBottom(true);\n listRef.current?.scrollToEnd({ animated: true });\n }}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Jump to the latest\"\n style={[\n styles.jump,\n {\n backgroundColor: theme.card,\n borderColor: theme.border,\n shadowColor: theme.isDark ? '#000' : '#1c1917',\n },\n ]}\n pressedStyle={DIM}\n >\n <MaterialCommunityIcons name=\"arrow-down\" size={20} color={theme.ink} />\n </Tap>\n ) : null}\n\n {suggestions.length ? (\n <View style={styles.suggestions}>\n {suggestions.slice(0, 3).map((s) => (\n <Tap\n key={s.id}\n onPress={() => send(s.prompt ?? s.label)}\n accessibilityRole=\"button\"\n style={[styles.suggestion, { backgroundColor: theme.card, borderColor: theme.border }]}\n pressedStyle={DIM}\n >\n <Text style={[styles.suggestionText, { color: theme.ink }]} numberOfLines={1}>\n {s.label}\n </Text>\n </Tap>\n ))}\n </View>\n ) : null}\n\n {error ? (\n <View style={[styles.error, { backgroundColor: theme.critSoft }]}>\n <MaterialCommunityIcons name=\"alert-circle-outline\" size={16} color={theme.crit} />\n <Text style={[styles.errorText, { color: theme.crit }]}>{error}</Text>\n </View>\n ) : null}\n\n <View\n style={[\n styles.composerDock,\n { backgroundColor: theme.screen, paddingBottom: Math.max(bottomInset, 10) },\n ]}\n >\n <View\n style={[\n styles.composer,\n {\n backgroundColor: theme.card,\n borderColor: theme.border,\n shadowColor: theme.isDark ? '#000' : '#1c1917',\n },\n ]}\n >\n <TextInput\n value={draft}\n onChangeText={setDraft}\n placeholder=\"Message Web Builder\"\n placeholderTextColor={theme.faint}\n multiline\n style={[styles.input, { color: theme.ink }]}\n accessibilityLabel=\"Message the agent\"\n testID=\"webbuilder-chat-input\"\n />\n <Tap\n onPress={() => send(draft)}\n disabled={!draft.trim() || !connected}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Send\"\n style={[\n styles.send,\n { backgroundColor: draft.trim() && connected ? theme.accent : theme.chip },\n ]}\n pressedStyle={DIM}\n testID=\"webbuilder-chat-send\"\n >\n <MaterialCommunityIcons\n name=\"arrow-up\"\n size={20}\n color={draft.trim() && connected ? theme.accentInk : theme.faint}\n />\n </Tap>\n </View>\n {!connected ? (\n <Text style={[styles.connecting, { color: theme.muted }]}>Connecting to Web Builder…</Text>\n ) : null}\n </View>\n </KeyboardAvoidingView>\n );\n}\n\nconst styles = StyleSheet.create({\n askCard: { paddingHorizontal: 16, paddingTop: 4, paddingBottom: 12 },\n fill: { flex: 1 },\n list: { paddingHorizontal: 16, paddingTop: 16, paddingBottom: 12, gap: 18, flexGrow: 1 },\n userRow: { alignItems: 'flex-end' },\n userBubble: {\n maxWidth: '86%',\n paddingHorizontal: 14,\n paddingVertical: 10,\n borderRadius: 20,\n borderBottomRightRadius: 6,\n },\n userText: { fontSize: 16, lineHeight: 22 },\n agentTurn: { gap: 8 },\n agentHead: { flexDirection: 'row', alignItems: 'center', gap: 8 },\n agentMark: { width: 24, height: 24, borderRadius: 8, alignItems: 'center', justifyContent: 'center' },\n agentName: { fontSize: 14, fontWeight: '700' },\n working: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n alignSelf: 'flex-start',\n maxWidth: '100%',\n paddingHorizontal: 14,\n paddingVertical: 10,\n borderRadius: 14,\n borderWidth: StyleSheet.hairlineWidth,\n },\n workingText: { flexShrink: 1, fontSize: 14, fontWeight: '600' },\n workingTime: { fontSize: 13, fontVariant: ['tabular-nums'] },\n site: {\n borderRadius: 22,\n borderWidth: StyleSheet.hairlineWidth,\n overflow: 'hidden',\n shadowOpacity: 0.06,\n shadowRadius: 14,\n shadowOffset: { width: 0, height: 4 },\n elevation: 2,\n },\n siteHead: { flexDirection: 'row', alignItems: 'center', gap: 14, padding: 16 },\n siteGlobe: { width: 48, height: 48, borderRadius: 14, alignItems: 'center', justifyContent: 'center' },\n siteHeadText: { flex: 1, gap: 2 },\n siteTitle: { fontSize: 18, fontWeight: '700', letterSpacing: -0.2 },\n siteStatus: { fontSize: 14 },\n siteView: {\n height: 240,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderBottomWidth: StyleSheet.hairlineWidth,\n overflow: 'hidden',\n },\n siteWeb: { flex: 1, backgroundColor: 'transparent' },\n siteCover: { ...StyleSheet.absoluteFillObject, width: '100%', height: '100%' },\n hidden: { opacity: 0 },\n siteLoading: { ...StyleSheet.absoluteFillObject, alignItems: 'center', justifyContent: 'center', gap: 8 },\n siteLoadingText: { fontSize: 13 },\n siteBusy: {\n position: 'absolute',\n top: 10,\n right: 10,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n paddingHorizontal: 10,\n paddingVertical: 6,\n borderRadius: 999,\n },\n siteBusyText: { fontSize: 12, fontWeight: '600' },\n siteNote: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 8,\n marginHorizontal: 14,\n marginTop: 12,\n paddingHorizontal: 12,\n paddingVertical: 9,\n borderRadius: 12,\n },\n siteNoteText: { flex: 1, fontSize: 13, lineHeight: 18 },\n siteFoot: { flexDirection: 'row', gap: 10, padding: 14 },\n siteBtn: { flex: 1, height: 46, borderRadius: 23, alignItems: 'center', justifyContent: 'center' },\n siteBtnText: { fontSize: 16, fontWeight: '700' },\n disabled: { opacity: 0.35 },\n empty: { flex: 1, alignItems: 'center', justifyContent: 'center', paddingHorizontal: 32, gap: 8 },\n emptyMark: {\n width: 56,\n height: 56,\n borderRadius: 18,\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: 6,\n },\n emptyTitle: { fontSize: 18, fontWeight: '700', textAlign: 'center' },\n emptyBody: { fontSize: 14, lineHeight: 20, textAlign: 'center' },\n suggestions: { flexDirection: 'row', flexWrap: 'wrap', gap: 8, paddingHorizontal: 16, paddingBottom: 8 },\n suggestion: { paddingHorizontal: 14, paddingVertical: 8, borderRadius: 999, borderWidth: StyleSheet.hairlineWidth },\n suggestionText: { fontSize: 14, fontWeight: '500' },\n error: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 8,\n marginHorizontal: 16,\n marginBottom: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n borderRadius: 12,\n },\n errorText: { flex: 1, fontSize: 13, lineHeight: 18 },\n composerDock: { paddingHorizontal: 14, paddingTop: 8 },\n composer: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 8,\n minHeight: 58,\n borderRadius: 29,\n borderWidth: StyleSheet.hairlineWidth,\n paddingLeft: 18,\n paddingRight: 8,\n paddingVertical: 8,\n shadowOpacity: 0.1,\n shadowRadius: 18,\n shadowOffset: { width: 0, height: 6 },\n elevation: 6,\n },\n jump: {\n position: 'absolute',\n right: 16,\n bottom: 104,\n width: 44,\n height: 44,\n borderRadius: 22,\n borderWidth: StyleSheet.hairlineWidth,\n alignItems: 'center',\n justifyContent: 'center',\n shadowOpacity: 0.12,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 4 },\n elevation: 4,\n },\n input: { flex: 1, fontSize: 17, lineHeight: 22, maxHeight: 120, paddingTop: 10, paddingBottom: 10 },\n send: { width: 42, height: 42, borderRadius: 21, alignItems: 'center', justifyContent: 'center' },\n connecting: { fontSize: 12, textAlign: 'center', marginTop: 6 },\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectChat.js","sources":["../../../../src/features/webbuilder/components/ProjectChat.tsx"],"sourcesContent":["/**\n * A project's conversation, the way Manus shows an agent at work: what you\n * asked, then the agent's turn - its live steps (\"Working · 12s\" with each tool\n * it ran), what it says, and once there is a site, a live card of it with Open\n * preview and Publish. The composer stays at the bottom for the next change.\n */\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n Image,\n KeyboardAvoidingView,\n Platform,\n StyleSheet,\n Text,\n TextInput,\n View,\n} from 'react-native';\nimport { WebView } from 'react-native-webview';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { DIM, Tap } from '../../inbox/components/Tap';\nimport { AssistantMarkdown } from '../../chat/AssistantMarkdown';\nimport { ToolTimeline } from '../../chat/ToolTimeline';\nimport { parseToolActivity } from '../../chat/toolActivity';\nimport { friendlySteps } from '../stepLabels';\nimport { publishEventText, webbuilderAgentSuggestions, withoutRestorePointLine } from '../webbuilderPrompts';\nimport { minutesUntilSleep, sleepNoticeDue } from '../sleepNotice';\nimport { followUpSuggestions } from '../followUps';\nimport { AskUserCard } from '../../chat/AskUserCard';\nimport type { AskUserPayload } from '../../chat/askUser';\nimport type { AgentChatMessage } from '../../agent-chat';\nimport { displayHost } from '../buildFragments';\nimport type { WebBuilderBuild, WebBuilderBuilding } from '../types';\nimport type { WebBuilderTheme } from '../webbuilderTheme';\nimport { DESKTOP_VIEWPORT_SCRIPT } from './PreviewFrame';\nimport { PreviewPlaceholder } from './PreviewPlaceholder';\nimport { mayFrame, probePreview } from '../previewProbe';\n\ntype Row =\n | { kind: 'message'; id: string; message: AgentChatMessage }\n | { kind: 'live'; id: string }\n | { kind: 'site'; id: string };\n\nfunction elapsedLabel(seconds: number): string {\n if (seconds < 60) return `${seconds}s`;\n return `${Math.floor(seconds / 60)}m ${String(seconds % 60).padStart(2, '0')}s`;\n}\n\nfunction useElapsed(startedAt: number | null): number {\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n if (!startedAt) return undefined;\n const timer = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(timer);\n }, [startedAt]);\n return startedAt ? Math.max(0, Math.floor((now - startedAt) / 1000)) : 0;\n}\n\nfunction UserBubble({ text, theme }: { text: string; theme: WebBuilderTheme }) {\n return (\n <View style={styles.userRow}>\n <View style={[styles.userBubble, { backgroundColor: theme.chip }]}>\n <Text style={[styles.userText, { color: theme.ink }]} selectable>\n {text}\n </Text>\n </View>\n </View>\n );\n}\n\nfunction AgentAvatar({ theme }: { theme: WebBuilderTheme }) {\n return (\n <View style={styles.agentHead}>\n <View style={[styles.agentMark, { backgroundColor: theme.accent }]}>\n <MaterialCommunityIcons name=\"creation\" size={14} color={theme.accentInk} />\n </View>\n <Text style={[styles.agentName, { color: theme.ink }]}>Web Builder</Text>\n </View>\n );\n}\n\nfunction AgentTurn({ content, active, theme }: { content: string; active: boolean; theme: WebBuilderTheme }) {\n const parsed = useMemo(() => parseToolActivity(content, active), [content, active]);\n // \"Saved a restore point.\" is a small chip: Versions lists it (web).\n const { text, saved } = useMemo(() => withoutRestorePointLine(parsed.text), [parsed.text]);\n return (\n <View style={styles.agentTurn}>\n <AgentAvatar theme={theme} />\n {parsed.steps.length ? (\n <ToolTimeline steps={friendlySteps(parsed.steps)} active={active} isDark={theme.isDark} />\n ) : null}\n {text ? <AssistantMarkdown text={text} streaming={active} isDark={theme.isDark} /> : null}\n {saved && !active ? (\n <View\n style={[styles.versionChip, { borderColor: theme.border, backgroundColor: theme.chip }]}\n accessibilityLabel=\"Version saved. You can go back to it from Versions.\"\n >\n <MaterialCommunityIcons name=\"history\" size={12} color={theme.muted} />\n <Text style={[styles.versionChipText, { color: theme.muted }]}>Version saved</Text>\n </View>\n ) : null}\n </View>\n );\n}\n\n/** \"Publishing lotus-flow…\": Publish asked the agent; the person did not type it (web `EventLine`). */\nfunction EventLine({ text, theme }: { text: string; theme: WebBuilderTheme }) {\n return (\n <View style={styles.eventLine} accessibilityRole=\"text\">\n <View style={[styles.eventRule, { backgroundColor: theme.border }]} />\n <MaterialCommunityIcons name=\"rocket-launch-outline\" size={13} color={theme.muted} />\n <Text style={[styles.eventText, { color: theme.muted }]} numberOfLines={1}>\n {text}\n </Text>\n <View style={[styles.eventRule, { backgroundColor: theme.border }]} />\n </View>\n );\n}\n\nfunction LiveTurn({\n streaming,\n building,\n theme,\n}: {\n streaming: string | null;\n building: WebBuilderBuilding | null;\n theme: WebBuilderTheme;\n}) {\n const elapsed = useElapsed(building?.startedAt ?? null);\n const parsed = useMemo(() => parseToolActivity(streaming ?? '', true), [streaming]);\n const showStatus = !parsed.text && parsed.steps.length === 0;\n return (\n <View style={styles.agentTurn}>\n <AgentAvatar theme={theme} />\n {parsed.steps.length ? (\n <ToolTimeline steps={friendlySteps(parsed.steps)} active isDark={theme.isDark} />\n ) : null}\n {parsed.text ? <AssistantMarkdown text={parsed.text} streaming isDark={theme.isDark} /> : null}\n {showStatus ? (\n <View style={[styles.working, { backgroundColor: theme.card, borderColor: theme.border }]}>\n <ActivityIndicator size=\"small\" color={theme.accent} />\n <Text style={[styles.workingText, { color: theme.ink }]} numberOfLines={2}>\n {building?.statusText || 'Thinking…'}\n </Text>\n {building ? (\n <Text style={[styles.workingTime, { color: theme.muted }]}>{elapsedLabel(elapsed)}</Text>\n ) : null}\n </View>\n ) : null}\n </View>\n );\n}\n\nfunction timeOf(ms: number): string {\n if (!ms) return '';\n const d = new Date(ms);\n return `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`;\n}\n\n/**\n * The site as it is now - Manus's app card: what it is and whether it is live,\n * a glimpse of the running page (laid out at desktop width and fitted, so it\n * reads as the site rather than a cropped corner), and the two ways forward.\n */\nfunction SiteCard({\n build,\n title,\n busy,\n onOpen,\n onPublish,\n onAsleep,\n previewDown = false,\n theme,\n}: {\n build: WebBuilderBuild;\n title: string;\n busy: boolean;\n onOpen: () => void;\n onPublish: () => void;\n /** The live page answered 5xx: start bringing it back (web `ensurePreview` on open). */\n onAsleep?: () => void;\n /** The sandbox is known gone or would not wake: never framed, the cover or the drawn page instead. */\n previewDown?: boolean;\n theme: WebBuilderTheme;\n}) {\n const url = previewDown ? null : build.previewUrl;\n const [loaded, setLoaded] = useState(false);\n // A sandbox that slept or was reclaimed answers with the host's own error page\n // (E2B \"502 Sandbox not found\"); that page is never shown, the card says what it means.\n const [asleep, setAsleep] = useState(false);\n // The sleep notice only matters near the end of the hour: checked once a minute, never mid-build.\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n if (build.origin !== 'agent' || build.liveUrl) return undefined;\n const timer = setInterval(() => setNow(Date.now()), 60_000);\n return () => clearInterval(timer);\n }, [build.origin, build.liveUrl]);\n const sleepSoon = sleepNoticeDue({ lastChangeAt: build.updatedAt, now, busy });\n const sleepMinutes = minutesUntilSleep(build.updatedAt, now);\n useEffect(() => {\n setLoaded(false);\n setAsleep(false);\n }, [url]);\n // During the agent's turn a 5xx means its dev server is still starting: check again\n // every 3 s and leave the sandbox to the agent; wake it only once the turn ends (web #431).\n const [recheck, setRecheck] = useState(0);\n useEffect(() => {\n if (!asleep) return undefined;\n if (!busy) {\n onAsleep?.();\n return undefined;\n }\n const timer = setTimeout(() => {\n setAsleep(false);\n setLoaded(false);\n setRecheck((n) => n + 1);\n }, 3_000);\n return () => clearTimeout(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [asleep, busy]);\n // Cover first, live page only without one - the web CreationTile's order. The\n // screenshot is instant and needs no awake sandbox, so it outlives the preview.\n const [coverFailed, setCoverFailed] = useState(false);\n useEffect(() => setCoverFailed(false), [build.coverUrl]);\n const cover = build.coverUrl && !coverFailed ? build.coverUrl : null;\n // Framed only once a probe saw the site answer: e2b's own error page can be a 200 (web #f99bd580).\n const [verified, setVerified] = useState(false);\n useEffect(() => {\n setVerified(false);\n if (!url || cover) return undefined;\n let live = true;\n probePreview(url).then((probe) => {\n if (!live) return;\n if (mayFrame(probe)) setVerified(true);\n else setAsleep(true);\n });\n return () => {\n live = false;\n };\n }, [url, cover, recheck]);\n const status = build.liveUrl\n ? `Live · ${displayHost(build.liveUrl)}`\n : `Not published · ${timeOf(build.updatedAt)}`;\n return (\n <View\n style={[\n styles.site,\n {\n backgroundColor: theme.card,\n borderColor: theme.border,\n shadowColor: theme.isDark ? '#000' : '#1c1917',\n },\n ]}\n >\n <Tap\n onPress={onOpen}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${title}`}\n style={styles.siteHead}\n pressedStyle={DIM}\n >\n <View style={[styles.siteGlobe, { backgroundColor: build.liveUrl ? theme.good : theme.accent }]}>\n <MaterialCommunityIcons name=\"web\" size={24} color={theme.accentInk} />\n </View>\n <View style={styles.siteHeadText}>\n <Text style={[styles.siteTitle, { color: theme.ink }]} numberOfLines={1}>\n {title}\n </Text>\n <Text style={[styles.siteStatus, { color: theme.muted }]} numberOfLines={1}>\n {status}\n </Text>\n </View>\n </Tap>\n <Tap onPress={onOpen} accessibilityRole=\"button\" accessibilityLabel={`Open the preview of ${title}`}>\n <View\n style={[styles.siteView, { backgroundColor: theme.stage, borderColor: theme.border }]}\n pointerEvents=\"none\"\n >\n {cover ? (\n <Image\n source={{ uri: cover }}\n style={styles.siteCover}\n resizeMode=\"cover\"\n onError={() => setCoverFailed(true)}\n accessibilityIgnoresInvertColors\n />\n ) : null}\n {!cover && url && verified ? (\n <WebView\n key={`${url}-${recheck}`}\n source={{ uri: url }}\n style={[styles.siteWeb, !loaded && styles.hidden]}\n scrollEnabled={false}\n javaScriptEnabled\n domStorageEnabled\n originWhitelist={['*']}\n scalesPageToFit\n injectedJavaScript={DESKTOP_VIEWPORT_SCRIPT}\n onLoadEnd={() => setLoaded(true)}\n onHttpError={(event) => {\n if (event.nativeEvent.statusCode >= 500) setAsleep(true);\n }}\n onError={() => setAsleep(true)}\n />\n ) : null}\n {!cover && (asleep || previewDown) ? (\n <View style={[styles.siteLoading, { backgroundColor: theme.stage }]}>\n <PreviewPlaceholder theme={theme} compact />\n </View>\n ) : null}\n {!cover && !asleep && !previewDown && (!url || !loaded) ? (\n <View style={styles.siteLoading}>\n <ActivityIndicator color={theme.accent} />\n <Text style={[styles.siteLoadingText, { color: theme.muted }]}>Loading preview…</Text>\n </View>\n ) : null}\n {busy && (cover || (loaded && !asleep)) ? (\n <View style={[styles.siteBusy, { backgroundColor: theme.card }]}>\n <ActivityIndicator size=\"small\" color={theme.accent} />\n <Text style={[styles.siteBusyText, { color: theme.ink }]}>Updating…</Text>\n </View>\n ) : null}\n </View>\n </Tap>\n {build.origin === 'agent' && !build.liveUrl && sleepSoon ? (\n <View style={[styles.siteNote, { backgroundColor: theme.warnSoft }]}>\n <MaterialCommunityIcons name=\"clock-outline\" size={15} color={theme.warn} />\n <Text style={[styles.siteNoteText, { color: theme.ink }]}>\n {sleepMinutes > 0\n ? `The preview sleeps in about ${sleepMinutes} minute${sleepMinutes === 1 ? '' : 's'}`\n : 'The preview sleeps about now'}\n {build.snapshotId ? '; a restore point is saved.' : '.'} Publish to keep it online.\n </Text>\n </View>\n ) : null}\n <View style={styles.siteFoot}>\n <Tap\n onPress={onOpen}\n accessibilityRole=\"button\"\n style={[styles.siteBtn, { backgroundColor: theme.chip }]}\n pressedStyle={DIM}\n testID=\"webbuilder-card-preview\"\n >\n <Text style={[styles.siteBtnText, { color: theme.ink }]}>Preview</Text>\n </Tap>\n <Tap\n onPress={onPublish}\n disabled={!build.sandboxId}\n accessibilityRole=\"button\"\n style={[styles.siteBtn, { backgroundColor: theme.ink }, !build.sandboxId && styles.disabled]}\n pressedStyle={DIM}\n testID=\"webbuilder-card-publish\"\n >\n <Text style={[styles.siteBtnText, { color: theme.card }]}>Publish</Text>\n </Tap>\n </View>\n </View>\n );\n}\n\nexport function ProjectChat({\n messages,\n streaming,\n busy,\n error,\n connected,\n building,\n build,\n siteTitle,\n onSend,\n onOpenPreview,\n onPublish,\n onPreviewAsleep,\n previewDown = false,\n ask = null,\n onAnswerAsk,\n theme,\n bottomInset,\n}: {\n messages: AgentChatMessage[];\n streaming: string | null;\n busy: boolean;\n error: string | null;\n connected: boolean;\n building: WebBuilderBuilding | null;\n build: WebBuilderBuild | null;\n siteTitle: string;\n onSend: (text: string) => void;\n onOpenPreview: () => void;\n onPublish: () => void;\n /** The site card found the sandbox asleep or expired. */\n onPreviewAsleep?: () => void;\n /** The open build's sandbox is known gone or would not wake: the site card never frames it. */\n previewDown?: boolean;\n /** The agent's question waiting for an answer (`[ASK_USER]`), shown as the question card. */\n ask?: AskUserPayload | null;\n /** Send the formatted answers as the reply (releases the agent's parked turn). */\n onAnswerAsk?: (formatted: string) => void;\n theme: WebBuilderTheme;\n bottomInset: number;\n}) {\n const [draft, setDraft] = useState('');\n // Questions the person closed without answering (the agent asks again if it needs to).\n const [dismissedAsks, setDismissedAsks] = useState<string[]>([]);\n const listRef = useRef<FlatList<Row>>(null);\n // Follow the conversation unless the person scrolled up to read; then offer a way back.\n const [atBottom, setAtBottom] = useState(true);\n const live = busy || Boolean(building);\n\n const rows = useMemo<Row[]>(() => {\n const out: Row[] = messages.map((m) => ({ kind: 'message', id: m.id, message: m }));\n if (build) out.push({ kind: 'site', id: `site-${build.key}` });\n if (live) out.push({ kind: 'live', id: 'live' });\n return out;\n }, [messages, build, live]);\n\n useEffect(() => {\n if (!atBottom) return undefined;\n const timer = setTimeout(() => listRef.current?.scrollToEnd({ animated: true }), 80);\n return () => clearTimeout(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rows.length, streaming]);\n\n const send = (text: string) => {\n const words = text.trim();\n if (!words) return;\n onSend(words);\n setDraft('');\n };\n\n const suggestions = messages.length === 0 && !live ? webbuilderAgentSuggestions(Boolean(build), siteTitle) : [];\n // The last reply's next steps as chips (web): a tap puts the words in the composer to send or edit.\n const lastReply = messages[messages.length - 1];\n const followUps = useMemo(\n () =>\n lastReply?.role === 'assistant'\n ? followUpSuggestions(withoutRestorePointLine(parseToolActivity(lastReply.content, false).text).text)\n : [],\n [lastReply],\n );\n\n return (\n <KeyboardAvoidingView\n style={styles.fill}\n behavior={Platform.OS === 'ios' ? 'padding' : undefined}\n keyboardVerticalOffset={Platform.OS === 'ios' ? 96 : 0}\n >\n <FlatList\n ref={listRef}\n data={rows}\n keyExtractor={(row) => row.id}\n contentContainerStyle={styles.list}\n keyboardShouldPersistTaps=\"handled\"\n scrollEventThrottle={100}\n onScroll={(event) => {\n const { layoutMeasurement, contentOffset, contentSize } = event.nativeEvent;\n setAtBottom(layoutMeasurement.height + contentOffset.y >= contentSize.height - 48);\n }}\n ListEmptyComponent={\n <View style={styles.empty}>\n <View style={[styles.emptyMark, { backgroundColor: theme.accentSoft }]}>\n <MaterialCommunityIcons name=\"creation\" size={26} color={theme.accent} />\n </View>\n <Text style={[styles.emptyTitle, { color: theme.ink }]}>\n {build ? `What should change on ${siteTitle}?` : 'Describe your idea'}\n </Text>\n <Text style={[styles.emptyBody, { color: theme.muted }]}>\n {build\n ? 'Ask for new sections, another look, copy changes or fixes.'\n : \"Tell me what the site is for and I'll build it step by step.\"}\n </Text>\n </View>\n }\n ListFooterComponent={\n ask && onAnswerAsk && !dismissedAsks.includes(ask.requestId) ? (\n <View style={styles.askCard}>\n <AskUserCard\n key={ask.requestId}\n payload={ask}\n isDark={theme.isDark}\n onAnswer={(formatted) => {\n // Answered: the card goes, as in the main chat.\n setDismissedAsks((prev) => [...prev, ask.requestId]);\n onAnswerAsk(formatted);\n }}\n onDismiss={() => setDismissedAsks((prev) => [...prev, ask.requestId])}\n />\n </View>\n ) : null\n }\n renderItem={({ item }) => {\n if (item.kind === 'live')\n return <LiveTurn streaming={streaming} building={building} theme={theme} />;\n if (item.kind === 'site' && build) {\n return (\n <SiteCard\n build={build}\n title={siteTitle}\n busy={live}\n onOpen={onOpenPreview}\n onPublish={onPublish}\n onAsleep={onPreviewAsleep}\n previewDown={previewDown}\n theme={theme}\n />\n );\n }\n if (item.kind !== 'message') return null;\n const m = item.message;\n if (m.role === 'user') {\n const event = publishEventText(m.content);\n if (event) return <EventLine text={event} theme={theme} />;\n return <UserBubble text={m.displayContent ?? m.content} theme={theme} />;\n }\n return (\n <>\n <AgentTurn content={m.content} active={false} theme={theme} />\n {m === lastReply && followUps.length && !live ? (\n <View style={styles.followUps} testID=\"webbuilder-follow-ups\">\n {followUps.map((f) => (\n <Tap\n key={f.label}\n onPress={() => setDraft(f.prompt)}\n accessibilityRole=\"button\"\n accessibilityLabel={`Suggest: ${f.prompt}`}\n style={[\n styles.followUp,\n { borderColor: theme.border, backgroundColor: theme.card },\n ]}\n pressedStyle={DIM}\n >\n <MaterialCommunityIcons\n name=\"lightbulb-outline\"\n size={14}\n color={theme.accent}\n />\n <Text style={[styles.followUpText, { color: theme.ink }]} numberOfLines={1}>\n {f.label}\n </Text>\n </Tap>\n ))}\n </View>\n ) : null}\n </>\n );\n }}\n />\n\n {!atBottom ? (\n <Tap\n onPress={() => {\n setAtBottom(true);\n listRef.current?.scrollToEnd({ animated: true });\n }}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Jump to the latest\"\n style={[\n styles.jump,\n {\n backgroundColor: theme.card,\n borderColor: theme.border,\n shadowColor: theme.isDark ? '#000' : '#1c1917',\n },\n ]}\n pressedStyle={DIM}\n >\n <MaterialCommunityIcons name=\"arrow-down\" size={20} color={theme.ink} />\n </Tap>\n ) : null}\n\n {suggestions.length ? (\n <View style={styles.suggestions}>\n {suggestions.slice(0, 3).map((s) => (\n <Tap\n key={s.id}\n onPress={() => send(s.prompt ?? s.label)}\n accessibilityRole=\"button\"\n style={[styles.suggestion, { backgroundColor: theme.card, borderColor: theme.border }]}\n pressedStyle={DIM}\n >\n <Text style={[styles.suggestionText, { color: theme.ink }]} numberOfLines={1}>\n {s.label}\n </Text>\n </Tap>\n ))}\n </View>\n ) : null}\n\n {error ? (\n <View style={[styles.error, { backgroundColor: theme.critSoft }]}>\n <MaterialCommunityIcons name=\"alert-circle-outline\" size={16} color={theme.crit} />\n <Text style={[styles.errorText, { color: theme.crit }]}>{error}</Text>\n </View>\n ) : null}\n\n <View\n style={[\n styles.composerDock,\n { backgroundColor: theme.screen, paddingBottom: Math.max(bottomInset, 10) },\n ]}\n >\n <View\n style={[\n styles.composer,\n {\n backgroundColor: theme.card,\n borderColor: theme.border,\n shadowColor: theme.isDark ? '#000' : '#1c1917',\n },\n ]}\n >\n <TextInput\n value={draft}\n onChangeText={setDraft}\n placeholder=\"Message Web Builder\"\n placeholderTextColor={theme.faint}\n multiline\n style={[styles.input, { color: theme.ink }]}\n accessibilityLabel=\"Message the agent\"\n testID=\"webbuilder-chat-input\"\n />\n <Tap\n onPress={() => send(draft)}\n disabled={!draft.trim() || !connected}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Send\"\n style={[\n styles.send,\n { backgroundColor: draft.trim() && connected ? theme.accent : theme.chip },\n ]}\n pressedStyle={DIM}\n testID=\"webbuilder-chat-send\"\n >\n <MaterialCommunityIcons\n name=\"arrow-up\"\n size={20}\n color={draft.trim() && connected ? theme.accentInk : theme.faint}\n />\n </Tap>\n </View>\n {!connected ? (\n <Text style={[styles.connecting, { color: theme.muted }]}>Connecting to Web Builder…</Text>\n ) : null}\n </View>\n </KeyboardAvoidingView>\n );\n}\n\nconst styles = StyleSheet.create({\n versionChip: {\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n gap: 4,\n marginTop: 6,\n paddingHorizontal: 8,\n paddingVertical: 3,\n borderRadius: 999,\n borderWidth: StyleSheet.hairlineWidth,\n },\n versionChipText: { fontSize: 11, fontWeight: '500' },\n followUps: { flexDirection: 'row', flexWrap: 'wrap', gap: 6, marginTop: 6 },\n followUp: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 5,\n maxWidth: '100%',\n minHeight: 34,\n paddingHorizontal: 11,\n borderRadius: 17,\n borderWidth: StyleSheet.hairlineWidth,\n },\n followUpText: { fontSize: 13, flexShrink: 1 },\n eventLine: { flexDirection: 'row', alignItems: 'center', gap: 8, paddingVertical: 6, paddingHorizontal: 4 },\n eventRule: { flex: 1, height: StyleSheet.hairlineWidth },\n eventText: { fontSize: 12, flexShrink: 1 },\n askCard: { paddingHorizontal: 16, paddingTop: 4, paddingBottom: 12 },\n fill: { flex: 1 },\n list: { paddingHorizontal: 16, paddingTop: 16, paddingBottom: 12, gap: 18, flexGrow: 1 },\n userRow: { alignItems: 'flex-end' },\n userBubble: {\n maxWidth: '86%',\n paddingHorizontal: 14,\n paddingVertical: 10,\n borderRadius: 20,\n borderBottomRightRadius: 6,\n },\n userText: { fontSize: 16, lineHeight: 22 },\n agentTurn: { gap: 8 },\n agentHead: { flexDirection: 'row', alignItems: 'center', gap: 8 },\n agentMark: { width: 24, height: 24, borderRadius: 8, alignItems: 'center', justifyContent: 'center' },\n agentName: { fontSize: 14, fontWeight: '700' },\n working: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n alignSelf: 'flex-start',\n maxWidth: '100%',\n paddingHorizontal: 14,\n paddingVertical: 10,\n borderRadius: 14,\n borderWidth: StyleSheet.hairlineWidth,\n },\n workingText: { flexShrink: 1, fontSize: 14, fontWeight: '600' },\n workingTime: { fontSize: 13, fontVariant: ['tabular-nums'] },\n site: {\n borderRadius: 22,\n borderWidth: StyleSheet.hairlineWidth,\n overflow: 'hidden',\n shadowOpacity: 0.06,\n shadowRadius: 14,\n shadowOffset: { width: 0, height: 4 },\n elevation: 2,\n },\n siteHead: { flexDirection: 'row', alignItems: 'center', gap: 14, padding: 16 },\n siteGlobe: { width: 48, height: 48, borderRadius: 14, alignItems: 'center', justifyContent: 'center' },\n siteHeadText: { flex: 1, gap: 2 },\n siteTitle: { fontSize: 18, fontWeight: '700', letterSpacing: -0.2 },\n siteStatus: { fontSize: 14 },\n siteView: {\n height: 240,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderBottomWidth: StyleSheet.hairlineWidth,\n overflow: 'hidden',\n },\n siteWeb: { flex: 1, backgroundColor: 'transparent' },\n siteCover: { ...StyleSheet.absoluteFillObject, width: '100%', height: '100%' },\n hidden: { opacity: 0 },\n siteLoading: { ...StyleSheet.absoluteFillObject, alignItems: 'center', justifyContent: 'center', gap: 8 },\n siteLoadingText: { fontSize: 13 },\n siteBusy: {\n position: 'absolute',\n top: 10,\n right: 10,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n paddingHorizontal: 10,\n paddingVertical: 6,\n borderRadius: 999,\n },\n siteBusyText: { fontSize: 12, fontWeight: '600' },\n siteNote: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 8,\n marginHorizontal: 14,\n marginTop: 12,\n paddingHorizontal: 12,\n paddingVertical: 9,\n borderRadius: 12,\n },\n siteNoteText: { flex: 1, fontSize: 13, lineHeight: 18 },\n siteFoot: { flexDirection: 'row', gap: 10, padding: 14 },\n siteBtn: { flex: 1, height: 46, borderRadius: 23, alignItems: 'center', justifyContent: 'center' },\n siteBtnText: { fontSize: 16, fontWeight: '700' },\n disabled: { opacity: 0.35 },\n empty: { flex: 1, alignItems: 'center', justifyContent: 'center', paddingHorizontal: 32, gap: 8 },\n emptyMark: {\n width: 56,\n height: 56,\n borderRadius: 18,\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: 6,\n },\n emptyTitle: { fontSize: 18, fontWeight: '700', textAlign: 'center' },\n emptyBody: { fontSize: 14, lineHeight: 20, textAlign: 'center' },\n suggestions: { flexDirection: 'row', flexWrap: 'wrap', gap: 8, paddingHorizontal: 16, paddingBottom: 8 },\n suggestion: { paddingHorizontal: 14, paddingVertical: 8, borderRadius: 999, borderWidth: StyleSheet.hairlineWidth },\n suggestionText: { fontSize: 14, fontWeight: '500' },\n error: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 8,\n marginHorizontal: 16,\n marginBottom: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n borderRadius: 12,\n },\n errorText: { flex: 1, fontSize: 13, lineHeight: 18 },\n composerDock: { paddingHorizontal: 14, paddingTop: 8 },\n composer: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 8,\n minHeight: 58,\n borderRadius: 29,\n borderWidth: StyleSheet.hairlineWidth,\n paddingLeft: 18,\n paddingRight: 8,\n paddingVertical: 8,\n shadowOpacity: 0.1,\n shadowRadius: 18,\n shadowOffset: { width: 0, height: 6 },\n elevation: 6,\n },\n jump: {\n position: 'absolute',\n right: 16,\n bottom: 104,\n width: 44,\n height: 44,\n borderRadius: 22,\n borderWidth: StyleSheet.hairlineWidth,\n alignItems: 'center',\n justifyContent: 'center',\n shadowOpacity: 0.12,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 4 },\n elevation: 4,\n },\n input: { flex: 1, fontSize: 17, lineHeight: 22, maxHeight: 120, paddingTop: 10, paddingBottom: 10 },\n send: { width: 42, height: 42, borderRadius: 21, alignItems: 'center', justifyContent: 'center' },\n connecting: { fontSize: 12, textAlign: 'center', marginTop: 6 },\n});\n"],"names":[],"mappings":"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"}
|