@agent-native/core 0.54.1 → 0.56.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/README.md +16 -1
- package/dist/action-ui.d.ts +17 -0
- package/dist/action-ui.d.ts.map +1 -0
- package/dist/action-ui.js +23 -0
- package/dist/action-ui.js.map +1 -0
- package/dist/action.d.ts +8 -1
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +3 -0
- package/dist/action.js.map +1 -1
- package/dist/agent/production-agent.d.ts +2 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +11 -1
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts +4 -0
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +4 -0
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +2 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/connect.d.ts +3 -1
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +7 -1
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plan-local.d.ts +40 -0
- package/dist/cli/plan-local.d.ts.map +1 -1
- package/dist/cli/plan-local.js +495 -9
- package/dist/cli/plan-local.js.map +1 -1
- package/dist/cli/skills.d.ts +17 -2
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +135 -36
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentChatHome.d.ts +23 -0
- package/dist/client/AgentChatHome.d.ts.map +1 -0
- package/dist/client/AgentChatHome.js +13 -0
- package/dist/client/AgentChatHome.js.map +1 -0
- package/dist/client/AgentPanel.d.ts +29 -2
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +116 -68
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +145 -21
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts +7 -1
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +13 -3
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts +1 -2
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-sidebar-state.d.ts +2 -0
- package/dist/client/agent-sidebar-state.d.ts.map +1 -1
- package/dist/client/agent-sidebar-state.js +15 -4
- package/dist/client/agent-sidebar-state.js.map +1 -1
- package/dist/client/chat/index.d.ts +7 -0
- package/dist/client/chat/index.d.ts.map +1 -1
- package/dist/client/chat/index.js +6 -0
- package/dist/client/chat/index.js.map +1 -1
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +11 -9
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/chat/runtime.d.ts +354 -0
- package/dist/client/chat/runtime.d.ts.map +1 -0
- package/dist/client/chat/runtime.js +2 -0
- package/dist/client/chat/runtime.js.map +1 -0
- package/dist/client/chat/tool-call-display.d.ts +5 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +22 -5
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/tool-render-registry.d.ts +35 -0
- package/dist/client/chat/tool-render-registry.d.ts.map +1 -0
- package/dist/client/chat/tool-render-registry.js +83 -0
- package/dist/client/chat/tool-render-registry.js.map +1 -0
- package/dist/client/chat/widgets/DataChartRenderer.d.ts +5 -0
- package/dist/client/chat/widgets/DataChartRenderer.d.ts.map +1 -0
- package/dist/client/chat/widgets/DataChartRenderer.js +33 -0
- package/dist/client/chat/widgets/DataChartRenderer.js.map +1 -0
- package/dist/client/chat/widgets/DataChartWidget.d.ts +5 -0
- package/dist/client/chat/widgets/DataChartWidget.d.ts.map +1 -0
- package/dist/client/chat/widgets/DataChartWidget.js +15 -0
- package/dist/client/chat/widgets/DataChartWidget.js.map +1 -0
- package/dist/client/chat/widgets/DataInsightsWidget.d.ts +5 -0
- package/dist/client/chat/widgets/DataInsightsWidget.d.ts.map +1 -0
- package/dist/client/chat/widgets/DataInsightsWidget.js +18 -0
- package/dist/client/chat/widgets/DataInsightsWidget.js.map +1 -0
- package/dist/client/chat/widgets/DataTableWidget.d.ts +9 -0
- package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -0
- package/dist/client/chat/widgets/DataTableWidget.js +95 -0
- package/dist/client/chat/widgets/DataTableWidget.js.map +1 -0
- package/dist/client/chat/widgets/builtin-tool-renderers.d.ts +2 -0
- package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -0
- package/dist/client/chat/widgets/builtin-tool-renderers.js +82 -0
- package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -0
- package/dist/client/chat/widgets/data-widget-types.d.ts +2 -0
- package/dist/client/chat/widgets/data-widget-types.d.ts.map +1 -0
- package/dist/client/chat/widgets/data-widget-types.js +2 -0
- package/dist/client/chat/widgets/data-widget-types.js.map +1 -0
- package/dist/client/chat-view-transition.d.ts +35 -0
- package/dist/client/chat-view-transition.d.ts.map +1 -0
- package/dist/client/chat-view-transition.js +66 -0
- package/dist/client/chat-view-transition.js.map +1 -0
- package/dist/client/composer/PromptComposer.d.ts +1 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +2 -2
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +2 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +2 -1
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/index.d.ts +7 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/route-state.d.ts +6 -0
- package/dist/client/route-state.d.ts.map +1 -1
- package/dist/client/route-state.js +16 -1
- package/dist/client/route-state.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +3 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +2 -0
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +19 -4
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/data-widgets/index.d.ts +326 -0
- package/dist/data-widgets/index.d.ts.map +1 -0
- package/dist/data-widgets/index.js +232 -0
- package/dist/data-widgets/index.js.map +1 -0
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +2 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +160 -0
- package/dist/provider-api/corpus-jobs.d.ts.map +1 -1
- package/dist/provider-api/corpus-jobs.js +44 -0
- package/dist/provider-api/corpus-jobs.js.map +1 -1
- package/dist/provider-api/index.d.ts +39 -0
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +53 -0
- package/dist/provider-api/index.js.map +1 -1
- package/dist/scripts/dev/index.d.ts +1 -0
- package/dist/scripts/dev/index.d.ts.map +1 -1
- package/dist/scripts/dev/index.js +129 -127
- package/dist/scripts/dev/index.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +5 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +8 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +34 -21
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/prompts/framework-core-compact.d.ts +4 -1
- package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
- package/dist/server/prompts/framework-core-compact.js +11 -4
- package/dist/server/prompts/framework-core-compact.js.map +1 -1
- package/dist/server/prompts/framework-core.d.ts +4 -1
- package/dist/server/prompts/framework-core.d.ts.map +1 -1
- package/dist/server/prompts/framework-core.js +15 -5
- package/dist/server/prompts/framework-core.js.map +1 -1
- package/dist/server/prompts/shared-rules.d.ts +4 -1
- package/dist/server/prompts/shared-rules.d.ts.map +1 -1
- package/dist/server/prompts/shared-rules.js +4 -1
- package/dist/server/prompts/shared-rules.js.map +1 -1
- package/dist/styles/agent-native.css +62 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +5 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/actions.md +52 -0
- package/docs/content/components.md +24 -1
- package/docs/content/drop-in-agent.md +9 -2
- package/docs/content/external-agents.md +14 -4
- package/docs/content/faq.md +5 -4
- package/docs/content/getting-started.md +39 -87
- package/docs/content/key-concepts.md +34 -15
- package/docs/content/mcp-apps.md +2 -0
- package/docs/content/mcp-protocol.md +2 -2
- package/docs/content/native-chat-ui.md +210 -0
- package/docs/content/template-plan.md +16 -1
- package/docs/content/what-is-agent-native.md +10 -2
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useRef, useEffect, useCallback, useMemo, forwardRef, useImperativeHandle, } from "react";
|
|
2
|
+
import { useState, useRef, useEffect, useCallback, useMemo, useLayoutEffect, forwardRef, useImperativeHandle, } from "react";
|
|
3
3
|
import { AssistantRuntimeProvider, useLocalRuntime, useThreadRuntime, useThread, useAui, useComposer, useComposerRuntime, ThreadPrimitive, } from "@assistant-ui/react";
|
|
4
4
|
import { CompositeAttachmentAdapter } from "@assistant-ui/react";
|
|
5
5
|
import { createAgentChatAdapter, } from "./agent-chat-adapter.js";
|
|
@@ -14,6 +14,7 @@ import { cn } from "./utils.js";
|
|
|
14
14
|
import { useNearBottomAutoscroll } from "./conversation/index.js";
|
|
15
15
|
import { TextAttachmentAdapter } from "./composer/attachment-accept.js";
|
|
16
16
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "./components/ui/tooltip.js";
|
|
17
|
+
import { AGENT_CHAT_VIEW_TRANSITION_PREPARE_EVENT } from "./chat-view-transition.js";
|
|
17
18
|
import { GuidedQuestionFlow, useGuidedQuestionFlow, } from "./guided-questions.js";
|
|
18
19
|
import { useDevMode } from "./use-dev-mode.js";
|
|
19
20
|
import { agentNativePath } from "./api-path.js";
|
|
@@ -32,6 +33,7 @@ import { BuilderSetupCard, LoopLimitContinueCard, RunErrorRecoveryCard, PlanMode
|
|
|
32
33
|
import { repoHasAssistantMessage, getRepoMessages, getRepoMessage, shouldImportServerThreadData, } from "./chat/repo-helpers.js";
|
|
33
34
|
export { AssistantMessageListErrorBoundary, AssistantUiStaleIndexErrorBoundary, assistantUiRecoverableRenderErrorKind, isAssistantUiRecoverableRenderError, isAssistantUiStaleIndexError, } from "./assistant-ui-recovery.js";
|
|
34
35
|
export { displayableUserMessageText } from "./chat/message-components.js";
|
|
36
|
+
const useBrowserLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
|
|
35
37
|
function createUserMessageRunConfig(references, requestMode, recoveryAction, trackInRunsTray, approvedToolCalls) {
|
|
36
38
|
const custom = {};
|
|
37
39
|
if (references && references.length > 0) {
|
|
@@ -73,6 +75,7 @@ function cloneContentParts(content) {
|
|
|
73
75
|
...part,
|
|
74
76
|
args: { ...part.args },
|
|
75
77
|
...(part.mcpApp ? { mcpApp: { ...part.mcpApp } } : {}),
|
|
78
|
+
...(part.chatUI ? { chatUI: { ...part.chatUI } } : {}),
|
|
76
79
|
});
|
|
77
80
|
}
|
|
78
81
|
function clearPendingSelection() {
|
|
@@ -85,6 +88,12 @@ function clearPendingSelection() {
|
|
|
85
88
|
window.dispatchEvent(new CustomEvent("agent-panel:selection-cleared"));
|
|
86
89
|
}
|
|
87
90
|
}
|
|
91
|
+
// Thread ids the server has already told us don't exist (a prior mount's
|
|
92
|
+
// /threads/:id probe returned 404). Module-scoped so it survives remounts:
|
|
93
|
+
// re-probing a known-absent thread on every navigation just re-spams DevTools
|
|
94
|
+
// with 404s for a thread that has no server row yet (e.g. a freshly created,
|
|
95
|
+
// not-yet-sent chat). Reset on a full page reload.
|
|
96
|
+
const knownAbsentThreadIds = new Set();
|
|
88
97
|
async function waitForThreadRunToClear(apiUrl, threadId) {
|
|
89
98
|
if (!threadId)
|
|
90
99
|
return;
|
|
@@ -179,6 +188,7 @@ function contentPartFollowKey(part) {
|
|
|
179
188
|
String(part.argsText ?? "").length,
|
|
180
189
|
String(part.result ?? "").length,
|
|
181
190
|
part.mcpApp ? 1 : 0,
|
|
191
|
+
part.chatUI?.renderer ?? "",
|
|
182
192
|
].join(":");
|
|
183
193
|
}
|
|
184
194
|
if (type === "image")
|
|
@@ -246,6 +256,45 @@ export function latestNonRecoveryUserMessageText(messages) {
|
|
|
246
256
|
return "";
|
|
247
257
|
}
|
|
248
258
|
export const CHAT_STORAGE_PREFIX = "agent-chat:";
|
|
259
|
+
const THREAD_SNAPSHOT_CACHE_PREFIX = `${CHAT_STORAGE_PREFIX}thread-snapshot:`;
|
|
260
|
+
function threadSnapshotCacheKey(apiUrl, threadId) {
|
|
261
|
+
return `${THREAD_SNAPSHOT_CACHE_PREFIX}${apiUrl}:${threadId}`;
|
|
262
|
+
}
|
|
263
|
+
function normalizeCachedThreadSnapshot(value) {
|
|
264
|
+
if (!value || typeof value !== "object")
|
|
265
|
+
return null;
|
|
266
|
+
const snapshot = value;
|
|
267
|
+
if (typeof snapshot.threadData !== "string")
|
|
268
|
+
return null;
|
|
269
|
+
return {
|
|
270
|
+
threadData: snapshot.threadData,
|
|
271
|
+
title: typeof snapshot.title === "string" ? snapshot.title : "",
|
|
272
|
+
preview: typeof snapshot.preview === "string" ? snapshot.preview : "",
|
|
273
|
+
messageCount: typeof snapshot.messageCount === "number" &&
|
|
274
|
+
Number.isFinite(snapshot.messageCount)
|
|
275
|
+
? snapshot.messageCount
|
|
276
|
+
: 0,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
function readCachedThreadSnapshot(apiUrl, threadId) {
|
|
280
|
+
if (!threadId || typeof sessionStorage === "undefined")
|
|
281
|
+
return null;
|
|
282
|
+
try {
|
|
283
|
+
const raw = sessionStorage.getItem(threadSnapshotCacheKey(apiUrl, threadId));
|
|
284
|
+
return raw ? normalizeCachedThreadSnapshot(JSON.parse(raw)) : null;
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
function writeCachedThreadSnapshot(apiUrl, threadId, snapshot) {
|
|
291
|
+
if (!threadId || typeof sessionStorage === "undefined")
|
|
292
|
+
return;
|
|
293
|
+
try {
|
|
294
|
+
sessionStorage.setItem(threadSnapshotCacheKey(apiUrl, threadId), JSON.stringify(snapshot));
|
|
295
|
+
}
|
|
296
|
+
catch { }
|
|
297
|
+
}
|
|
249
298
|
/** Remove persisted chat for a given tabId (or "default"). */
|
|
250
299
|
export function clearChatStorage(tabId) {
|
|
251
300
|
try {
|
|
@@ -600,7 +649,11 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
600
649
|
}, [isRunning, tabId, threadId]);
|
|
601
650
|
// ─── Chat persistence ──────────────────────────────────────────────
|
|
602
651
|
const hasRestoredRef = useRef(false);
|
|
603
|
-
const [
|
|
652
|
+
const [initialCachedThreadSnapshot] = useState(() => readCachedThreadSnapshot(apiUrl, threadId));
|
|
653
|
+
const hasImportedInitialCachedSnapshotRef = useRef(false);
|
|
654
|
+
const [isRestoring, setIsRestoring] = useState(!!(threadId || loadHistoryRepository) &&
|
|
655
|
+
!isNewThread &&
|
|
656
|
+
!initialCachedThreadSnapshot);
|
|
604
657
|
const onSaveThreadRef = useRef(onSaveThread);
|
|
605
658
|
onSaveThreadRef.current = onSaveThread;
|
|
606
659
|
const onGenerateTitleRef = useRef(onGenerateTitle);
|
|
@@ -694,6 +747,40 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
694
747
|
return null;
|
|
695
748
|
}
|
|
696
749
|
}, [apiUrl, importThreadData, loadHistoryRepository, threadId]);
|
|
750
|
+
const cacheCurrentThreadSnapshot = useCallback(() => {
|
|
751
|
+
if (!threadId || messages.length === 0)
|
|
752
|
+
return;
|
|
753
|
+
const repo = threadRuntime.export();
|
|
754
|
+
const threadData = JSON.stringify(stripBase64FromRepo(repo));
|
|
755
|
+
const { title, preview } = extractThreadMeta(repo);
|
|
756
|
+
writeCachedThreadSnapshot(apiUrl, threadId, {
|
|
757
|
+
threadData,
|
|
758
|
+
title,
|
|
759
|
+
preview,
|
|
760
|
+
messageCount: messages.length,
|
|
761
|
+
});
|
|
762
|
+
}, [apiUrl, messages.length, threadId, threadRuntime]);
|
|
763
|
+
useBrowserLayoutEffect(() => {
|
|
764
|
+
if (hasImportedInitialCachedSnapshotRef.current)
|
|
765
|
+
return;
|
|
766
|
+
if (!initialCachedThreadSnapshot)
|
|
767
|
+
return;
|
|
768
|
+
hasImportedInitialCachedSnapshotRef.current = true;
|
|
769
|
+
try {
|
|
770
|
+
importThreadData(initialCachedThreadSnapshot.threadData, {
|
|
771
|
+
markTitleGenerated: Boolean(initialCachedThreadSnapshot.title),
|
|
772
|
+
});
|
|
773
|
+
}
|
|
774
|
+
finally {
|
|
775
|
+
setIsRestoring(false);
|
|
776
|
+
}
|
|
777
|
+
}, [importThreadData, initialCachedThreadSnapshot]);
|
|
778
|
+
useEffect(() => {
|
|
779
|
+
window.addEventListener(AGENT_CHAT_VIEW_TRANSITION_PREPARE_EVENT, cacheCurrentThreadSnapshot);
|
|
780
|
+
return () => {
|
|
781
|
+
window.removeEventListener(AGENT_CHAT_VIEW_TRANSITION_PREPARE_EVENT, cacheCurrentThreadSnapshot);
|
|
782
|
+
};
|
|
783
|
+
}, [cacheCurrentThreadSnapshot]);
|
|
697
784
|
const wasRecentlyStoppedRun = useCallback((runId) => {
|
|
698
785
|
const stopped = userStoppedRunRef.current;
|
|
699
786
|
return Boolean(stopped &&
|
|
@@ -904,6 +991,11 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
904
991
|
// can only 404 and makes normal app startup look broken in DevTools.
|
|
905
992
|
setIsRestoring(false);
|
|
906
993
|
}
|
|
994
|
+
else if (threadId && knownAbsentThreadIds.has(threadId)) {
|
|
995
|
+
// A prior mount already learned this thread has no server row (404).
|
|
996
|
+
// Skip the re-probe so remounts don't re-spam 404s for the same id.
|
|
997
|
+
setIsRestoring(false);
|
|
998
|
+
}
|
|
907
999
|
else if (threadId) {
|
|
908
1000
|
(async () => {
|
|
909
1001
|
try {
|
|
@@ -911,13 +1003,33 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
911
1003
|
if (res.ok) {
|
|
912
1004
|
const data = await res.json();
|
|
913
1005
|
if (data.threadData) {
|
|
914
|
-
importThreadData(data.threadData, {
|
|
1006
|
+
const repo = importThreadData(data.threadData, {
|
|
1007
|
+
markTitleGenerated: true,
|
|
1008
|
+
});
|
|
1009
|
+
if (repo) {
|
|
1010
|
+
const { title, preview } = extractThreadMeta(repo);
|
|
1011
|
+
writeCachedThreadSnapshot(apiUrl, threadId, {
|
|
1012
|
+
threadData: typeof data.threadData === "string"
|
|
1013
|
+
? data.threadData
|
|
1014
|
+
: JSON.stringify(data.threadData),
|
|
1015
|
+
title: data.title || title,
|
|
1016
|
+
preview,
|
|
1017
|
+
messageCount: Array.isArray(repo.messages)
|
|
1018
|
+
? repo.messages.length
|
|
1019
|
+
: 0,
|
|
1020
|
+
});
|
|
1021
|
+
}
|
|
915
1022
|
}
|
|
916
1023
|
// Also skip title generation if thread already has a title
|
|
917
1024
|
if (data.title) {
|
|
918
1025
|
titleGeneratedRef.current = true;
|
|
919
1026
|
}
|
|
920
1027
|
}
|
|
1028
|
+
else if (res.status === 404) {
|
|
1029
|
+
// No server row for this thread yet — remember it so later remounts
|
|
1030
|
+
// skip the probe instead of re-fetching a known 404.
|
|
1031
|
+
knownAbsentThreadIds.add(threadId);
|
|
1032
|
+
}
|
|
921
1033
|
}
|
|
922
1034
|
catch {
|
|
923
1035
|
// Start fresh
|
|
@@ -1071,15 +1183,18 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1071
1183
|
return;
|
|
1072
1184
|
const repo = threadRuntime.export();
|
|
1073
1185
|
const { title, preview } = extractThreadMeta(repo);
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
threadData: JSON.stringify(stripBase64FromRepo(repo)),
|
|
1186
|
+
const threadData = JSON.stringify(stripBase64FromRepo(repo));
|
|
1187
|
+
const snapshot = {
|
|
1188
|
+
threadData,
|
|
1078
1189
|
title,
|
|
1079
1190
|
preview,
|
|
1080
1191
|
messageCount: messages.length,
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1192
|
+
};
|
|
1193
|
+
lastSaveTimeRef.current = now;
|
|
1194
|
+
savedTitleRef.current = title;
|
|
1195
|
+
writeCachedThreadSnapshot(apiUrl, threadId, snapshot);
|
|
1196
|
+
onSaveThreadRef.current(threadId, snapshot);
|
|
1197
|
+
}, [apiUrl, messages, isRunning, threadId, threadRuntime]);
|
|
1083
1198
|
// Persist full thread data after each completed response
|
|
1084
1199
|
useEffect(() => {
|
|
1085
1200
|
if (!hasRestoredRef.current)
|
|
@@ -1092,13 +1207,16 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1092
1207
|
if (threadId && onSaveThreadRef.current) {
|
|
1093
1208
|
// Save to server via the hook callback
|
|
1094
1209
|
const { title, preview } = extractThreadMeta(repo);
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
threadData
|
|
1210
|
+
const threadData = JSON.stringify(stripBase64FromRepo(repo));
|
|
1211
|
+
const snapshot = {
|
|
1212
|
+
threadData,
|
|
1098
1213
|
title,
|
|
1099
1214
|
preview,
|
|
1100
1215
|
messageCount: messages.length,
|
|
1101
|
-
}
|
|
1216
|
+
};
|
|
1217
|
+
savedTitleRef.current = title;
|
|
1218
|
+
writeCachedThreadSnapshot(apiUrl, threadId, snapshot);
|
|
1219
|
+
onSaveThreadRef.current(threadId, snapshot);
|
|
1102
1220
|
}
|
|
1103
1221
|
else {
|
|
1104
1222
|
// Legacy: save to sessionStorage
|
|
@@ -1108,7 +1226,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1108
1226
|
}
|
|
1109
1227
|
catch { }
|
|
1110
1228
|
}
|
|
1111
|
-
}, [messages, isRunning, threadId, tabId, threadRuntime]);
|
|
1229
|
+
}, [apiUrl, messages, isRunning, threadId, tabId, threadRuntime]);
|
|
1112
1230
|
useEffect(() => {
|
|
1113
1231
|
onMessageCountChange?.(messages.length);
|
|
1114
1232
|
}, [messages.length, onMessageCountChange]);
|
|
@@ -1829,12 +1947,18 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1829
1947
|
(!userStoppedRunRef.current.runId ||
|
|
1830
1948
|
!visibleRunError.runId ||
|
|
1831
1949
|
userStoppedRunRef.current.runId === visibleRunError.runId));
|
|
1950
|
+
const hasActiveChatWork = showRunningInUI ||
|
|
1951
|
+
isAutoResuming ||
|
|
1952
|
+
queuedMessages.length > 0 ||
|
|
1953
|
+
reconnectContent.length > 0;
|
|
1832
1954
|
const isFreshEmptyChat = messages.length === 0 &&
|
|
1955
|
+
!hasActiveChatWork &&
|
|
1833
1956
|
!isRestoring &&
|
|
1834
1957
|
!isReconnecting &&
|
|
1835
|
-
!authError
|
|
1836
|
-
!missingApiKey;
|
|
1958
|
+
!authError;
|
|
1837
1959
|
const centeredEmptyState = centerComposerWhenEmpty && isFreshEmptyChat;
|
|
1960
|
+
const showEmptyState = messages.length === 0 && !isReconnecting && !hasActiveChatWork;
|
|
1961
|
+
const showComposerSlot = Boolean(composerSlot) && (!centerComposerWhenEmpty || centeredEmptyState);
|
|
1838
1962
|
// Clarifying-question surface: the `ask-question` action writes a
|
|
1839
1963
|
// GuidedQuestionPayload to application_state under "guided-questions". The
|
|
1840
1964
|
// hook polls that key, and on submit/skip composes the answer as a normal
|
|
@@ -1894,7 +2018,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1894
2018
|
window.location.reload();
|
|
1895
2019
|
}, className: authSessionAvailable
|
|
1896
2020
|
? "text-xs text-background bg-foreground hover:opacity-90 px-3 py-1.5 rounded-md"
|
|
1897
|
-
: "text-xs text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md border border-border hover:bg-accent", children: "Refresh chat" })] })] })) :
|
|
2021
|
+
: "text-xs text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md border border-border hover:bg-accent", children: "Refresh chat" })] })] })) : isRestoring ? (_jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "flex justify-end", children: _jsx("div", { className: "h-8 w-32 rounded-lg bg-muted animate-pulse" }) }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("div", { className: "h-4 w-48 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-4 w-64 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-4 w-40 rounded bg-muted animate-pulse" })] })] })) : showEmptyState ? (_jsxs("div", { className: cn("agent-empty-state", emptyStateDisplay === "hidden"
|
|
1898
2022
|
? "sr-only"
|
|
1899
2023
|
: "flex h-full flex-col items-center justify-center gap-4 px-4 py-16"), children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: _jsx(IconMessage, { className: "h-5 w-5 text-muted-foreground" }) }), _jsx("p", { className: "sr-only", children: emptyStateText ?? "How can I help you?" }), emptyStateAddon, resolvedSuggestions && resolvedSuggestions.length > 0 ? (_jsx("div", { className: "flex flex-col gap-1.5 w-full max-w-[280px]", children: resolvedSuggestions.map((suggestion) => (_jsx("button", { onClick: () => {
|
|
1900
2024
|
threadRuntime.append({
|
|
@@ -1904,7 +2028,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1904
2028
|
}, className: "w-full rounded-lg border border-border px-3 py-2 text-left text-[13px] text-muted-foreground hover:bg-accent hover:text-foreground", children: suggestion }, suggestion))) })) : null] })) : (_jsxs("div", { className: "agent-thread-content flex flex-col gap-4 px-4 py-4", children: [_jsx(AssistantMessageListErrorBoundary, { resetKey: messageListResetKey, children: _jsx(ThreadPrimitive.Messages, { components: {
|
|
1905
2029
|
UserMessage,
|
|
1906
2030
|
AssistantMessage,
|
|
1907
|
-
} }) }),
|
|
2031
|
+
} }) }), visibleLoopLimit && !showRunningInUI && (_jsx(LoopLimitContinueCard, { info: visibleLoopLimit, onContinue: () => {
|
|
1908
2032
|
setShowContinue(false);
|
|
1909
2033
|
setLoopLimitInfo(null);
|
|
1910
2034
|
addToQueue("Continue from where you left off.", undefined, undefined, undefined, undefined, "queued", "continue");
|
|
@@ -1927,7 +2051,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1927
2051
|
.replace(/<context>[\s\S]*?<\/context>\n?/g, "")
|
|
1928
2052
|
.trim();
|
|
1929
2053
|
return (_jsx("div", { className: "flex justify-end group", children: _jsxs("div", { className: "relative max-w-[85%] rounded-lg bg-accent/50 text-foreground/60 px-3 py-2 text-sm leading-relaxed whitespace-pre-wrap break-words", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: [_jsx(IconClock, { className: "h-3 w-3" }), "Queued"] }), displayText, msg.images && msg.images.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1.5 mt-1.5", children: msg.images.map((img, j) => (_jsx("img", { src: img, alt: "", className: "h-12 w-12 rounded object-cover border border-border/50" }, j))) })), _jsx("button", { type: "button", onClick: () => setQueuedMessages((prev) => prev.filter((m) => m.id !== msg.id)), "aria-label": "Remove from queue", className: "absolute -top-2 -right-2 flex h-5 w-5 items-center justify-center rounded-full border border-border bg-background text-muted-foreground opacity-0 group-hover:opacity-100 focus-visible:opacity-100 hover:text-foreground hover:bg-accent shadow-sm", children: _jsx(IconX, { className: "h-3 w-3" }) })] }) }, msg.id));
|
|
1930
|
-
})] })) }), showScrollToBottom && (_jsx("div", { className: "shrink-0 flex justify-center -mb-1", children: _jsx("button", { type: "button", onClick: scrollToBottom, className: "flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent", "aria-label": "Scroll to bottom", children: _jsx(IconChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) }) })), composerSlot, guidedQuestions && guidedQuestions.length > 0 && (_jsx("div", { className: "shrink-0 px-3 pb-2 pt-1", children: _jsx("div", { className: "rounded-lg border border-border bg-card/60 shadow-sm", children: _jsx(GuidedQuestionFlow, { questions: guidedQuestions, onSubmit: handleGuidedQuestionsSubmit, onSkip: handleGuidedQuestionsSkip, ...(guidedQuestionsTitle
|
|
2054
|
+
})] })) }), showScrollToBottom && (_jsx("div", { className: "shrink-0 flex justify-center -mb-1", children: _jsx("button", { type: "button", onClick: scrollToBottom, className: "flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent", "aria-label": "Scroll to bottom", children: _jsx(IconChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) }) })), showComposerSlot ? composerSlot : null, guidedQuestions && guidedQuestions.length > 0 && (_jsx("div", { className: "shrink-0 px-3 pb-2 pt-1", children: _jsx("div", { className: "rounded-lg border border-border bg-card/60 shadow-sm", children: _jsx(GuidedQuestionFlow, { questions: guidedQuestions, onSubmit: handleGuidedQuestionsSubmit, onSkip: handleGuidedQuestionsSkip, ...(guidedQuestionsTitle
|
|
1931
2055
|
? { title: guidedQuestionsTitle }
|
|
1932
2056
|
: {}), ...(guidedQuestionsDescription
|
|
1933
2057
|
? { description: guidedQuestionsDescription }
|
|
@@ -1945,7 +2069,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1945
2069
|
"Thinking" })), composerError && (_jsxs("div", { role: "alert", className: "shrink-0 mx-3 mb-1.5 flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive", children: [_jsx(IconAlertTriangle, { className: "h-3.5 w-3.5 mt-0.5 shrink-0" }), _jsx("span", { className: "flex-1 leading-snug", children: composerError }), _jsx("button", { type: "button", "aria-label": "Dismiss error", onClick: () => setComposerError(null), className: "shrink-0 opacity-70 hover:opacity-100", children: _jsx(IconX, { className: "h-3 w-3" }) })] })), _jsxs(AgentComposerFrame, { layoutVariant: composerLayoutVariant, className: cn(composerAreaClassName, missingApiKey && "cursor-pointer", isComposerDisabled && "opacity-70"), onClick: missingApiKey
|
|
1946
2070
|
? () => setMissingKeyBouncePulse((p) => p + 1)
|
|
1947
2071
|
: undefined, children: [_jsx(ComposerAttachmentPreviewStrip, {}), _jsx(TiptapComposer, { focusRef: tiptapRef, disabled: isComposerDisabled, placeholder: missingApiKey
|
|
1948
|
-
? "Connect
|
|
2072
|
+
? "Connect AI below to start chatting..."
|
|
1949
2073
|
: composerDisabled
|
|
1950
2074
|
? (composerDisabledPlaceholder ??
|
|
1951
2075
|
"Open Desktop to use this chat.")
|
|
@@ -1957,7 +2081,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1957
2081
|
? (text, references, attachments, options) => void addToQueue(text, undefined, references.length > 0 ? references : undefined, attachments, undefined, options?.intent ?? "immediate", undefined, true)
|
|
1958
2082
|
: undefined, onSlashCommand: onSlashCommand, execMode: execMode, onExecModeChange: onExecModeChange, planModeDisabled: planModeDisabled, planModeDisabledReason: planModeDisabledReason, selectedModel: selectedModel ?? defaultModel, selectedEffort: selectedEffort, availableModels: availableModels, onModelChange: onModelChange, onEffortChange: onEffortChange, onConnectProvider: onConnectProvider, toolbarSlot: composerToolbarSlot, contextItems: composerContextItems, onRemoveContextItem: removeComposerContextItem, plusMenuMode: plusMenuMode, layoutVariant: composerLayoutVariant, providerConnectStatusEnabled: providerStatusChecksEnabled, draftScope: threadId || tabId, interceptBuildRequestsForBuilder: true, onAttachmentError: setComposerError, extraActionButton: contextXRayEnabled ||
|
|
1959
2083
|
composerExtraActionButton ||
|
|
1960
|
-
showRunningInUI ? (_jsxs(_Fragment, { children: [contextXRayEnabled && (_jsx(ContextMeter, { threadId: threadId })), composerExtraActionButton, showRunningInUI && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: stopActiveRun, className: "shrink-0 flex h-7 w-7 items-center justify-center rounded-md bg-muted text-foreground hover:bg-muted/80", children: _jsx(IconPlayerStop, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Stop generating" })] }))] })) : undefined })] })] }) }) }) }) }) }));
|
|
2084
|
+
showRunningInUI ? (_jsxs(_Fragment, { children: [contextXRayEnabled && (_jsx(ContextMeter, { threadId: threadId })), composerExtraActionButton, showRunningInUI && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: stopActiveRun, className: "shrink-0 flex h-7 w-7 items-center justify-center rounded-md bg-muted text-foreground hover:bg-muted/80", children: _jsx(IconPlayerStop, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Stop generating" })] }))] })) : undefined })] }), missingApiKey && !authError ? (_jsx(BuilderSetupCard, { onConnected: handleBuilderConnected, bouncePulse: missingKeyBouncePulse })) : null] }) }) }) }) }) }));
|
|
1961
2085
|
});
|
|
1962
2086
|
export const AssistantChat = forwardRef(function AssistantChat({ apiUrl = agentNativePath("/_agent-native/agent-chat"), tabId, browserTabId, threadId, contextScope, isActiveComposer, ...props }, ref) {
|
|
1963
2087
|
const modelRef = useRef(props.selectedModel);
|