@agent-native/core 0.35.2 → 0.36.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 +1 -1
- package/dist/cli/context-xray-local.d.ts +2 -2
- package/dist/cli/context-xray-local.d.ts.map +1 -1
- package/dist/cli/context-xray-local.js +1449 -53
- package/dist/cli/context-xray-local.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +381 -73
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +8 -4
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +5 -11
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +6 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +50 -26
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +81 -8
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +68 -24
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-chat.d.ts +39 -3
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +168 -33
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/application-state.d.ts +13 -0
- package/dist/client/application-state.d.ts.map +1 -0
- package/dist/client/application-state.js +99 -0
- package/dist/client/application-state.js.map +1 -0
- package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -1
- package/dist/client/composer/ComposerPlusMenu.js +174 -8
- package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts +2 -0
- 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.js +1 -1
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/context-xray/ContextMeter.d.ts +2 -1
- package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
- package/dist/client/context-xray/ContextMeter.js +19 -25
- package/dist/client/context-xray/ContextMeter.js.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.d.ts +1 -3
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.js +27 -24
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/client/conversation/AgentConversation.js +2 -1
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/frame-protocol.d.ts +11 -3
- package/dist/client/frame-protocol.d.ts.map +1 -1
- package/dist/client/frame-protocol.js.map +1 -1
- package/dist/client/index.d.ts +4 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts +1 -0
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +50 -16
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +1 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +62 -15
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/tool-display.d.ts +4 -0
- package/dist/client/tool-display.d.ts.map +1 -0
- package/dist/client/tool-display.js +28 -0
- package/dist/client/tool-display.js.map +1 -0
- package/dist/client/use-action.d.ts +12 -0
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +14 -2
- package/dist/client/use-action.js.map +1 -1
- package/dist/client/use-agent-chat-context.d.ts +15 -0
- package/dist/client/use-agent-chat-context.d.ts.map +1 -0
- package/dist/client/use-agent-chat-context.js +32 -0
- package/dist/client/use-agent-chat-context.js.map +1 -0
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +40 -31
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-external-value.d.ts.map +1 -1
- package/dist/client/use-external-value.js +14 -7
- package/dist/client/use-external-value.js.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +1 -2
- package/dist/deploy/build.js.map +1 -1
- package/dist/extensions/html-shell.d.ts +3 -2
- package/dist/extensions/html-shell.d.ts.map +1 -1
- package/dist/extensions/html-shell.js +12 -2
- package/dist/extensions/html-shell.js.map +1 -1
- package/dist/extensions/routes.js +2 -7
- package/dist/extensions/routes.js.map +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +4 -2
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +33 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +14 -6
- package/dist/provider-api/index.js.map +1 -1
- package/dist/server/agent-teams.d.ts +4 -1
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +104 -28
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +21 -11
- package/dist/server/auth.js.map +1 -1
- package/dist/server/core-routes-plugin.js +2 -2
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/request-context.d.ts +3 -4
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/security-headers.d.ts +16 -19
- package/dist/server/security-headers.d.ts.map +1 -1
- package/dist/server/security-headers.js +24 -25
- package/dist/server/security-headers.js.map +1 -1
- package/dist/server/self-dispatch.d.ts.map +1 -1
- package/dist/server/self-dispatch.js +17 -1
- package/dist/server/self-dispatch.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +9 -18
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/templates/default/AGENTS.md +1 -1
- package/dist/templates/default/DEVELOPING.md +7 -13
- package/dist/templates/workspace-core/AGENTS.md +6 -4
- package/dist/templates/workspace-root/AGENTS.md +6 -4
- package/docs/content/actions.md +5 -7
- package/docs/content/client.md +49 -44
- package/docs/content/context-awareness.md +20 -33
- package/docs/content/creating-templates.md +2 -2
- package/docs/content/external-agents.md +1 -1
- package/docs/content/key-concepts.md +3 -3
- package/docs/content/sharing.md +1 -1
- package/docs/content/template-mail.md +1 -1
- package/docs/content/voice-input.md +1 -1
- package/package.json +5 -1
- package/src/templates/default/AGENTS.md +1 -1
- package/src/templates/default/DEVELOPING.md +7 -13
- package/src/templates/workspace-core/AGENTS.md +6 -4
- package/src/templates/workspace-root/AGENTS.md +6 -4
|
@@ -17,6 +17,10 @@ export interface AssistantChatHandle {
|
|
|
17
17
|
prefillMessage(text: string): void;
|
|
18
18
|
/** Add or replace keyed context for the next composer submission. */
|
|
19
19
|
setComposerContextItem(item: AgentChatContextItem): void;
|
|
20
|
+
/** Remove a keyed context item from the composer. */
|
|
21
|
+
removeComposerContextItem(key: string): void;
|
|
22
|
+
/** Clear all staged context items from the composer. */
|
|
23
|
+
clearComposerContextItems(): void;
|
|
20
24
|
/** Programmatically send a recovery prompt without replacing the original request. */
|
|
21
25
|
sendRecoveryMessage(text: string, recoveryAction: AgentRecoveryAction, images?: string[]): void;
|
|
22
26
|
/** Queue a message to send after the current run finishes */
|
|
@@ -61,6 +65,8 @@ export interface AssistantChatProps {
|
|
|
61
65
|
threadId?: string;
|
|
62
66
|
/** Resource scope to include with chat requests for server-side context. */
|
|
63
67
|
contextScope?: ChatThreadScope | null;
|
|
68
|
+
/** Whether this chat owns the active visible composer context snapshot. */
|
|
69
|
+
isActiveComposer?: boolean;
|
|
64
70
|
/**
|
|
65
71
|
* Identifies which surface hosts this chat. Defaults to "app", which keeps
|
|
66
72
|
* dev filesystem/bash code-editing tools out of in-product sidebars.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAcf,OAAO,KAAK,EAEV,gBAAgB,EAEhB,yBAAyB,EAI1B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { CompositeAttachmentAdapter } from "@assistant-ui/react";
|
|
|
5
5
|
import ReactMarkdown, { defaultUrlTransform } from "react-markdown";
|
|
6
6
|
import remarkGfm from "remark-gfm";
|
|
7
7
|
import { createAgentChatAdapter, } from "./agent-chat-adapter.js";
|
|
8
|
-
import { appendAgentChatContextToMessage, formatAgentChatContextItemsForPrompt, normalizeAgentChatContextItem, } from "./agent-chat.js";
|
|
8
|
+
import { appendAgentChatContextToMessage, formatAgentChatContextItemsForPrompt, normalizeAgentChatContextItem, publishAgentChatContextItems, refreshAgentChatContext, } from "./agent-chat.js";
|
|
9
9
|
import { useAgentDynamicSuggestions, } from "./dynamic-suggestions.js";
|
|
10
10
|
import { initialSmoothStreamingGraphemeCount, SMOOTH_STREAMING_COMMIT_INTERVAL_MS, smoothStreamingPunctuationDelayMs, smoothStreamingRevealCount, splitStreamingTextGraphemes, } from "../shared/streaming-text-smoothing.js";
|
|
11
11
|
import { getActiveRun } from "./active-run-state.js";
|
|
@@ -19,6 +19,7 @@ import { TextAttachmentAdapter } from "./composer/attachment-accept.js";
|
|
|
19
19
|
import { AgentTaskCard } from "./AgentTaskCard.js";
|
|
20
20
|
import { ConnectBuilderCard } from "./ConnectBuilderCard.js";
|
|
21
21
|
import { McpAppRenderer } from "./mcp-apps/McpAppRenderer.js";
|
|
22
|
+
import { humanizeToolLabelText, humanizeToolName } from "./tool-display.js";
|
|
22
23
|
import { useBuilderConnectFlow } from "./settings/useBuilderStatus.js";
|
|
23
24
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "./components/ui/tooltip.js";
|
|
24
25
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "./components/ui/dropdown-menu.js";
|
|
@@ -114,7 +115,7 @@ function getFileDataURL(file) {
|
|
|
114
115
|
// images on the client before we ever serialize them.
|
|
115
116
|
const MAX_IMAGE_BYTES = 4 * 1024 * 1024;
|
|
116
117
|
const MAX_IMAGE_DIMENSION = 2048;
|
|
117
|
-
const SHOW_AGENT_ACTIVITY_STEPS =
|
|
118
|
+
const SHOW_AGENT_ACTIVITY_STEPS = true;
|
|
118
119
|
function loadImage(url) {
|
|
119
120
|
return new Promise((resolve, reject) => {
|
|
120
121
|
const img = new Image();
|
|
@@ -867,9 +868,9 @@ function useSmoothStreamingText(targetText, streaming, resetKey) {
|
|
|
867
868
|
}
|
|
868
869
|
const visibleNoLongerMatchesTarget = visibleTextRef.current.length > 0 &&
|
|
869
870
|
!targetText.startsWith(visibleTextRef.current);
|
|
870
|
-
if (
|
|
871
|
-
|
|
872
|
-
|
|
871
|
+
if (visibleNoLongerMatchesTarget ||
|
|
872
|
+
visibleCountRef.current > targetGraphemes.length ||
|
|
873
|
+
(keyChanged && visibleTextRef.current.length === 0)) {
|
|
873
874
|
commitVisibleCount(initialSmoothStreamingGraphemeCount(targetGraphemes));
|
|
874
875
|
lastCommitAtRef.current = 0;
|
|
875
876
|
pauseUntilRef.current = 0;
|
|
@@ -963,15 +964,6 @@ function stringifyToolValue(value, pretty = false) {
|
|
|
963
964
|
return String(value ?? "");
|
|
964
965
|
}
|
|
965
966
|
}
|
|
966
|
-
function toolArgsPreview(args) {
|
|
967
|
-
return Object.entries(args)
|
|
968
|
-
.map(([key, value]) => {
|
|
969
|
-
const singleLine = stringifyToolValue(value).replace(/\s+/g, " ").trim();
|
|
970
|
-
const preview = singleLine.length > 96 ? `${singleLine.slice(0, 96)}...` : singleLine;
|
|
971
|
-
return `${key}=${preview}`;
|
|
972
|
-
})
|
|
973
|
-
.join(", ");
|
|
974
|
-
}
|
|
975
967
|
function looksLikeSql(text) {
|
|
976
968
|
return /^\s*(select|with|insert|update|delete|merge|create|alter|drop|explain|declare|begin)\b/i.test(text);
|
|
977
969
|
}
|
|
@@ -1195,7 +1187,6 @@ function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, isRunning,
|
|
|
1195
1187
|
// Fall through to default pill rendering
|
|
1196
1188
|
}
|
|
1197
1189
|
}
|
|
1198
|
-
const argsStr = isAgentCall ? "" : toolArgsPreview(args);
|
|
1199
1190
|
const inputPayload = hasArgs ? toolInputPayload(toolName, args) : null;
|
|
1200
1191
|
const resultPayload = toolResultPayload(result);
|
|
1201
1192
|
const displayName = isAgentCall
|
|
@@ -1204,14 +1195,14 @@ function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, isRunning,
|
|
|
1204
1195
|
: isAgentError
|
|
1205
1196
|
? `Error asking ${agentName}`
|
|
1206
1197
|
: `Asked ${agentName}`
|
|
1207
|
-
: toolName;
|
|
1198
|
+
: humanizeToolName(toolName);
|
|
1208
1199
|
const canExpand = isAgentCall
|
|
1209
1200
|
? hasStreamText
|
|
1210
1201
|
: hasArgs || result !== undefined;
|
|
1211
1202
|
const isExpanded = isAgentCall ? hasStreamText && expanded : expanded;
|
|
1212
1203
|
return (_jsxs("div", { className: "my-1 overflow-hidden", children: [mcpApp && _jsx(McpAppRenderer, { app: mcpApp, className: "mb-1.5" }), _jsxs("button", { onClick: () => canExpand && setExpanded(!isExpanded), "aria-expanded": canExpand ? isExpanded : undefined, className: cn("flex items-center gap-2 rounded-md px-2.5 py-1.5 text-xs font-mono w-full text-left overflow-hidden", isRunning
|
|
1213
1204
|
? "bg-muted text-muted-foreground"
|
|
1214
|
-
: "bg-muted text-muted-foreground hover:bg-accent"), children: [_jsx("span", { className: "shrink-0", children: isRunning ? (_jsx(IconLoader2, { className: "h-3 w-3 animate-spin" })) : isAgentError ? (_jsx(IconCircleX, { className: "h-3 w-3 text-destructive" })) : result !== undefined ? (_jsx(IconCheck, { className: "h-3 w-3 text-emerald-500" })) : (_jsx(IconSquareFilled, { className: "h-3 w-3 text-muted-foreground" })) }),
|
|
1205
|
+
: "bg-muted text-muted-foreground hover:bg-accent"), children: [_jsx("span", { className: "shrink-0", children: isRunning ? (_jsx(IconLoader2, { className: "h-3 w-3 animate-spin" })) : isAgentError ? (_jsx(IconCircleX, { className: "h-3 w-3 text-destructive" })) : result !== undefined ? (_jsx(IconCheck, { className: "h-3 w-3 text-emerald-500" })) : (_jsx(IconSquareFilled, { className: "h-3 w-3 text-muted-foreground" })) }), _jsx("span", { className: "truncate min-w-0", children: _jsx("span", { className: "font-medium", children: displayName }) }), canExpand && (_jsx(IconChevronDown, { className: cn("ml-auto h-3 w-3 shrink-0 opacity-40", isExpanded && "rotate-180") }))] }), isExpanded && isAgentCall && hasStreamText && (_jsx("div", { ref: streamRef, className: "mt-1 rounded-md bg-muted/50 px-3 py-2 text-xs text-muted-foreground break-words max-h-48 overflow-y-auto agent-markdown prose prose-sm prose-invert max-w-none", children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], components: markdownComponents, urlTransform: markdownUrlTransform, children: agentStreamText }) })), isExpanded && !isAgentCall && (hasArgs || result !== undefined) && (_jsxs("div", { className: "mt-1 space-y-2 rounded-md bg-muted/50 px-3 py-2 text-xs text-muted-foreground", children: [inputPayload && _jsx(ToolDetailViewer, { payload: inputPayload }), resultPayload && _jsx(ToolDetailViewer, { payload: resultPayload })] }))] }));
|
|
1215
1206
|
}
|
|
1216
1207
|
function ToolCallFallback({ toolName, args, argsText, result, ...rest }) {
|
|
1217
1208
|
const chatRunning = React.useContext(ChatRunningContext);
|
|
@@ -1958,7 +1949,7 @@ function ensureMessageMetadata(repo) {
|
|
|
1958
1949
|
// Re-export for backwards compatibility
|
|
1959
1950
|
import { extractThreadMeta, normalizeThreadRepository, } from "../agent/thread-data-builder.js";
|
|
1960
1951
|
export { extractThreadMeta };
|
|
1961
|
-
const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateText, suggestions, dynamicSuggestions, emptyStateAddon, showHeader = true, onSwitchToCli, className, apiUrl, tabId, browserTabId, threadId, contextScope, onMessageCountChange, onSaveThread, onGenerateTitle, composerSlot, composerAreaClassName, composerPlaceholder, composerLayoutVariant = "default", centerComposerWhenEmpty = false, emptyStateDisplay = "default", composerToolbarSlot, composerExtraActionButton, composerDisabled = false, composerDisabledPlaceholder, isNewThread, onSlashCommand, execMode, onExecModeChange, planModeDisabled, planModeDisabledReason, selectedModel, defaultModel, selectedEngine, selectedEffort, availableModels, onModelChange, onEffortChange, onForkChat, onConnectProvider, plusMenuMode = "full", providerStatusChecksEnabled = true, loadHistoryRepository, historyReloadKey, externalStreaming = false, }, ref) {
|
|
1952
|
+
const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateText, suggestions, dynamicSuggestions, emptyStateAddon, showHeader = true, onSwitchToCli, className, apiUrl, tabId, browserTabId, threadId, contextScope, isActiveComposer = true, onMessageCountChange, onSaveThread, onGenerateTitle, composerSlot, composerAreaClassName, composerPlaceholder, composerLayoutVariant = "default", centerComposerWhenEmpty = false, emptyStateDisplay = "default", composerToolbarSlot, composerExtraActionButton, composerDisabled = false, composerDisabledPlaceholder, isNewThread, onSlashCommand, execMode, onExecModeChange, planModeDisabled, planModeDisabledReason, selectedModel, defaultModel, selectedEngine, selectedEffort, availableModels, onModelChange, onEffortChange, onForkChat, onConnectProvider, plusMenuMode = "full", providerStatusChecksEnabled = true, loadHistoryRepository, historyReloadKey, externalStreaming = false, }, ref) {
|
|
1962
1953
|
const thread = useThread();
|
|
1963
1954
|
const threadRuntime = useThreadRuntime();
|
|
1964
1955
|
const composerRuntime = useComposerRuntime();
|
|
@@ -2078,13 +2069,21 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2078
2069
|
const [queuedMessages, setQueuedMessages] = useState([]);
|
|
2079
2070
|
const [composerContextItems, setComposerContextItems] = useState([]);
|
|
2080
2071
|
const composerContextItemsRef = useRef([]);
|
|
2072
|
+
const isActiveComposerRef = useRef(isActiveComposer);
|
|
2073
|
+
isActiveComposerRef.current = isActiveComposer;
|
|
2074
|
+
const publishComposerContextItems = useCallback((items) => {
|
|
2075
|
+
if (!isActiveComposerRef.current)
|
|
2076
|
+
return;
|
|
2077
|
+
publishAgentChatContextItems(items);
|
|
2078
|
+
}, []);
|
|
2081
2079
|
const updateComposerContextItems = useCallback((updater) => {
|
|
2082
2080
|
setComposerContextItems((previous) => {
|
|
2083
2081
|
const next = updater(previous);
|
|
2084
2082
|
composerContextItemsRef.current = next;
|
|
2083
|
+
publishComposerContextItems(next);
|
|
2085
2084
|
return next;
|
|
2086
2085
|
});
|
|
2087
|
-
}, []);
|
|
2086
|
+
}, [publishComposerContextItems]);
|
|
2088
2087
|
const stageComposerContextItem = useCallback((rawItem) => {
|
|
2089
2088
|
const item = normalizeAgentChatContextItem(rawItem);
|
|
2090
2089
|
if (!item)
|
|
@@ -2108,6 +2107,20 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2108
2107
|
includesContext: true,
|
|
2109
2108
|
};
|
|
2110
2109
|
}, []);
|
|
2110
|
+
useEffect(() => {
|
|
2111
|
+
if (!isActiveComposer)
|
|
2112
|
+
return;
|
|
2113
|
+
let cancelled = false;
|
|
2114
|
+
void refreshAgentChatContext().then((state) => {
|
|
2115
|
+
if (cancelled || !isActiveComposerRef.current)
|
|
2116
|
+
return;
|
|
2117
|
+
composerContextItemsRef.current = state.items;
|
|
2118
|
+
setComposerContextItems(state.items);
|
|
2119
|
+
});
|
|
2120
|
+
return () => {
|
|
2121
|
+
cancelled = true;
|
|
2122
|
+
};
|
|
2123
|
+
}, [isActiveComposer]);
|
|
2111
2124
|
// Tracks the JSON of the last queue we successfully persisted so the
|
|
2112
2125
|
// debounced save effect can skip no-op writes (e.g. restore-from-server
|
|
2113
2126
|
// on mount, or queue state that hasn't actually changed).
|
|
@@ -2815,16 +2828,17 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2815
2828
|
detail.label.trim()) {
|
|
2816
2829
|
const label = detail.label.trim();
|
|
2817
2830
|
const tool = detail.tool?.trim() || undefined;
|
|
2818
|
-
|
|
2831
|
+
const displayLabel = humanizeToolLabelText(label, tool);
|
|
2832
|
+
setActivityLabel(displayLabel);
|
|
2819
2833
|
setActivitySteps((prev) => {
|
|
2820
2834
|
const last = prev[prev.length - 1];
|
|
2821
|
-
if (last?.label ===
|
|
2835
|
+
if (last?.label === displayLabel && last.tool === tool)
|
|
2822
2836
|
return prev;
|
|
2823
2837
|
return [
|
|
2824
2838
|
...prev,
|
|
2825
2839
|
{
|
|
2826
2840
|
id: `${Date.now()}-${++activityStepIdCounter.current}`,
|
|
2827
|
-
label,
|
|
2841
|
+
label: displayLabel,
|
|
2828
2842
|
...(tool ? { tool } : {}),
|
|
2829
2843
|
},
|
|
2830
2844
|
].slice(-6);
|
|
@@ -3058,6 +3072,12 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
3058
3072
|
stageComposerContextItem(item);
|
|
3059
3073
|
tiptapRef.current?.focus();
|
|
3060
3074
|
},
|
|
3075
|
+
removeComposerContextItem(key) {
|
|
3076
|
+
removeComposerContextItem(key);
|
|
3077
|
+
},
|
|
3078
|
+
clearComposerContextItems() {
|
|
3079
|
+
updateComposerContextItems(() => []);
|
|
3080
|
+
},
|
|
3061
3081
|
sendRecoveryMessage(text, recoveryAction, images) {
|
|
3062
3082
|
addToQueue(text, images, undefined, undefined, undefined, "queued", recoveryAction);
|
|
3063
3083
|
},
|
|
@@ -3160,6 +3180,8 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
3160
3180
|
!isComposerDisabled &&
|
|
3161
3181
|
!showRunningInUI;
|
|
3162
3182
|
const canImplementPlan = showPlanModeCallout && latestAssistantWasPlan;
|
|
3183
|
+
const contextXRayEnabled = Boolean(threadId &&
|
|
3184
|
+
(messages.length > 0 || isReconnecting || reconnectContent.length > 0));
|
|
3163
3185
|
const handleImplementPlan = useCallback(() => {
|
|
3164
3186
|
onExecModeChange?.("build");
|
|
3165
3187
|
void addToQueue("Implement the plan.", undefined, undefined, undefined, "act");
|
|
@@ -3269,7 +3291,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
3269
3291
|
? "Reconnecting"
|
|
3270
3292
|
: SHOW_AGENT_ACTIVITY_STEPS
|
|
3271
3293
|
? (activityLabel ?? "Thinking")
|
|
3272
|
-
: "Thinking" })),
|
|
3294
|
+
: "Thinking" })), _jsxs(AgentComposerFrame, { layoutVariant: composerLayoutVariant, className: cn(composerAreaClassName, missingApiKey && "cursor-pointer", isComposerDisabled && "opacity-70"), onClick: missingApiKey
|
|
3273
3295
|
? () => setMissingKeyBouncePulse((p) => p + 1)
|
|
3274
3296
|
: undefined, children: [_jsx(ComposerAttachmentPreviewStrip, {}), _jsx(TiptapComposer, { focusRef: tiptapRef, disabled: isComposerDisabled, placeholder: missingApiKey
|
|
3275
3297
|
? "Connect an AI engine above to start chatting…"
|
|
@@ -3282,7 +3304,9 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
3282
3304
|
: "Send a follow-up..."
|
|
3283
3305
|
: composerPlaceholder, onSubmit: isRunning || composerContextItems.length > 0
|
|
3284
3306
|
? (text, references, attachments, options) => void addToQueue(text, undefined, references.length > 0 ? references : undefined, attachments, undefined, options?.intent ?? "immediate", undefined, true)
|
|
3285
|
-
: 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, extraActionButton:
|
|
3307
|
+
: 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, extraActionButton: contextXRayEnabled ||
|
|
3308
|
+
composerExtraActionButton ||
|
|
3309
|
+
showRunningInUI ? (_jsxs(_Fragment, { children: [contextXRayEnabled && (_jsx(ContextMeter, { threadId: threadId })), composerExtraActionButton, showRunningInUI && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => {
|
|
3286
3310
|
// Nuclear stop: flip forceStopped so isRunning is false
|
|
3287
3311
|
// immediately. This unblocks submission even if the
|
|
3288
3312
|
// runtime or reconnect state is stuck.
|
|
@@ -3317,7 +3341,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
3317
3341
|
}));
|
|
3318
3342
|
}, 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 })] })] }) }) }) }) }));
|
|
3319
3343
|
});
|
|
3320
|
-
export const AssistantChat = forwardRef(function AssistantChat({ apiUrl = agentNativePath("/_agent-native/agent-chat"), tabId, browserTabId, threadId, contextScope, ...props }, ref) {
|
|
3344
|
+
export const AssistantChat = forwardRef(function AssistantChat({ apiUrl = agentNativePath("/_agent-native/agent-chat"), tabId, browserTabId, threadId, contextScope, isActiveComposer, ...props }, ref) {
|
|
3321
3345
|
const modelRef = useRef(props.selectedModel);
|
|
3322
3346
|
modelRef.current = props.selectedModel;
|
|
3323
3347
|
const engineRef = useRef(props.selectedEngine);
|
|
@@ -3361,6 +3385,6 @@ export const AssistantChat = forwardRef(function AssistantChat({ apiUrl = agentN
|
|
|
3361
3385
|
const runtime = useLocalRuntime(adapter, {
|
|
3362
3386
|
adapters: { attachments: attachmentAdapter },
|
|
3363
3387
|
});
|
|
3364
|
-
return (_jsx(AssistantRuntimeProvider, { runtime: runtime, children: _jsx(TooltipProvider, { delayDuration: 200, children: _jsx(ThreadPrimitive.Root, { className: "flex flex-1 flex-col h-full min-h-0 overflow-x-hidden", children: _jsx(AssistantUiStaleIndexErrorBoundary, { resetKey: `${tabId ?? ""}:${threadId ?? ""}`, componentName: "AssistantChat", children: _jsx(AssistantChatInner, { ref: ref, ...props, browserTabId: browserTabId, contextScope: contextScope, apiUrl: apiUrl, tabId: tabId, threadId: threadId }) }) }) }) }));
|
|
3388
|
+
return (_jsx(AssistantRuntimeProvider, { runtime: runtime, children: _jsx(TooltipProvider, { delayDuration: 200, children: _jsx(ThreadPrimitive.Root, { className: "flex flex-1 flex-col h-full min-h-0 overflow-x-hidden", children: _jsx(AssistantUiStaleIndexErrorBoundary, { resetKey: `${tabId ?? ""}:${threadId ?? ""}`, componentName: "AssistantChat", children: _jsx(AssistantChatInner, { ref: ref, ...props, browserTabId: browserTabId, contextScope: contextScope, isActiveComposer: isActiveComposer, apiUrl: apiUrl, tabId: tabId, threadId: threadId }) }) }) }) }));
|
|
3365
3389
|
});
|
|
3366
3390
|
//# sourceMappingURL=AssistantChat.js.map
|