@agent-native/toolkit 0.198.4 → 0.198.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/agentkit/react/components.d.ts +6 -3
- package/dist/app/agentkit/react/components.d.ts.map +1 -1
- package/dist/app/agentkit/react/components.js +98 -68
- package/dist/app/agentkit/react/components.js.map +1 -1
- package/dist/app/agentkit/react/styles.css +36 -24
- package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.js +32 -15
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/AgentPanel.d.ts +1 -1
- package/dist/app/chat/AgentPanel.d.ts.map +1 -1
- package/dist/app/chat/AgentPanel.js +11 -38
- package/dist/app/chat/AgentPanel.js.map +1 -1
- package/dist/app/chat/AgentSidebar.d.ts.map +1 -1
- package/dist/app/chat/AgentSidebar.js +3 -11
- package/dist/app/chat/AgentSidebar.js.map +1 -1
- package/dist/app/chat/chat/tool-call-display.d.ts +2 -1
- package/dist/app/chat/chat/tool-call-display.d.ts.map +1 -1
- package/dist/app/chat/chat/tool-call-display.js +83 -55
- package/dist/app/chat/chat/tool-call-display.js.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +1 -0
- package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.js +1 -0
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +1 -0
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +1 -0
- package/dist/app/i18n/catalogs/en-US.js.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.js +1 -0
- package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.js +1 -0
- package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.js +1 -0
- package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.js +1 -0
- package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.js +1 -0
- package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.js +1 -0
- package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.js +1 -0
- package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.js +1 -0
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/composer/PromptComposer.d.ts +3 -0
- package/dist/composer/PromptComposer.d.ts.map +1 -1
- package/dist/composer/PromptComposer.js +2 -2
- package/dist/composer/PromptComposer.js.map +1 -1
- package/dist/composer/TiptapComposer.d.ts +4 -1
- package/dist/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/composer/TiptapComposer.js +32 -25
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/dist/ui/sonner.js +1 -1
- package/dist/ui/sonner.js.map +1 -1
- package/package.json +3 -3
- package/src/app/agentkit/react/components.interaction.spec.tsx +93 -0
- package/src/app/agentkit/react/components.spec.tsx +1 -2
- package/src/app/agentkit/react/components.tsx +185 -132
- package/src/app/agentkit/react/composer-context.spec.tsx +7 -0
- package/src/app/agentkit/react/lifecycle.spec.tsx +556 -39
- package/src/app/agentkit/react/styles.css +36 -24
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +60 -1
- package/src/app/chat/AgentKitAssistantChat.tsx +45 -14
- package/src/app/chat/AgentPanel.overlay.spec.tsx +28 -4
- package/src/app/chat/AgentPanel.tsx +51 -168
- package/src/app/chat/AgentSidebar.spec.tsx +19 -19
- package/src/app/chat/AgentSidebar.tsx +59 -94
- package/src/app/chat/chat/tool-call-display.spec.tsx +371 -15
- package/src/app/chat/chat/tool-call-display.tsx +154 -80
- package/src/app/i18n/catalogs/ar-SA.ts +1 -0
- package/src/app/i18n/catalogs/de-DE.ts +1 -0
- package/src/app/i18n/catalogs/en-US.ts +1 -0
- package/src/app/i18n/catalogs/es-ES.ts +1 -0
- package/src/app/i18n/catalogs/fr-FR.ts +1 -0
- package/src/app/i18n/catalogs/hi-IN.ts +1 -0
- package/src/app/i18n/catalogs/ja-JP.ts +1 -0
- package/src/app/i18n/catalogs/ko-KR.ts +1 -0
- package/src/app/i18n/catalogs/pt-BR.ts +1 -0
- package/src/app/i18n/catalogs/zh-CN.ts +1 -0
- package/src/app/i18n/catalogs/zh-TW.ts +1 -0
- package/src/app-shell/sidebar-overflow.spec.tsx +2 -1
- package/src/composer/PromptComposer.context.spec.tsx +28 -15
- package/src/composer/PromptComposer.tsx +7 -0
- package/src/composer/TiptapComposer.spec.ts +40 -6
- package/src/composer/TiptapComposer.tsx +89 -89
- package/src/ui/sonner.spec.ts +15 -0
- package/src/ui/sonner.tsx +1 -1
|
@@ -984,6 +984,15 @@ body:has(> [data-agent-native-composer-popover="true"]) > .fixed.inset-0 {
|
|
|
984
984
|
opacity: 1;
|
|
985
985
|
}
|
|
986
986
|
|
|
987
|
+
.agentkit-message .agentkit-message-actions[data-streaming="true"],
|
|
988
|
+
.agentkit-message:hover .agentkit-message-actions[data-streaming="true"],
|
|
989
|
+
.agentkit-message:focus-within
|
|
990
|
+
.agentkit-message-actions[data-streaming="true"] {
|
|
991
|
+
opacity: 0;
|
|
992
|
+
visibility: hidden;
|
|
993
|
+
pointer-events: none;
|
|
994
|
+
}
|
|
995
|
+
|
|
987
996
|
@media (hover: none), (any-pointer: coarse) {
|
|
988
997
|
.agentkit-message-actions[data-role="user"] {
|
|
989
998
|
opacity: 1;
|
|
@@ -1133,11 +1142,11 @@ body:has(> [data-agent-native-composer-popover="true"]) > .fixed.inset-0 {
|
|
|
1133
1142
|
}
|
|
1134
1143
|
|
|
1135
1144
|
.agentkit-activities-summary {
|
|
1136
|
-
display:
|
|
1145
|
+
display: flex;
|
|
1137
1146
|
inline-size: fit-content;
|
|
1138
1147
|
max-inline-size: 100%;
|
|
1139
|
-
|
|
1140
|
-
gap: 0.
|
|
1148
|
+
align-items: center;
|
|
1149
|
+
gap: 0.375rem;
|
|
1141
1150
|
}
|
|
1142
1151
|
|
|
1143
1152
|
.agentkit-activities {
|
|
@@ -1263,6 +1272,12 @@ body:has(> [data-agent-native-composer-popover="true"]) > .fixed.inset-0 {
|
|
|
1263
1272
|
gap: 0.375rem;
|
|
1264
1273
|
}
|
|
1265
1274
|
|
|
1275
|
+
.agentkit-activities-summary-content {
|
|
1276
|
+
display: grid;
|
|
1277
|
+
min-inline-size: 0;
|
|
1278
|
+
gap: 0.125rem;
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1266
1281
|
.agentkit-activities-current {
|
|
1267
1282
|
display: flex;
|
|
1268
1283
|
align-items: center;
|
|
@@ -1280,20 +1295,6 @@ body:has(> [data-agent-native-composer-popover="true"]) > .fixed.inset-0 {
|
|
|
1280
1295
|
white-space: nowrap;
|
|
1281
1296
|
}
|
|
1282
1297
|
|
|
1283
|
-
.agentkit-activities-current[data-running="true"]
|
|
1284
|
-
.agentkit-activities-current-label {
|
|
1285
|
-
color: transparent;
|
|
1286
|
-
background: linear-gradient(
|
|
1287
|
-
90deg,
|
|
1288
|
-
var(--agentkit-text),
|
|
1289
|
-
color-mix(in srgb, var(--agentkit-text) 32%, transparent),
|
|
1290
|
-
var(--agentkit-text)
|
|
1291
|
-
);
|
|
1292
|
-
background-size: 200% 100%;
|
|
1293
|
-
background-clip: text;
|
|
1294
|
-
animation: agentkit-shimmer 1.8s linear infinite;
|
|
1295
|
-
}
|
|
1296
|
-
|
|
1297
1298
|
.agentkit-summary-chevron,
|
|
1298
1299
|
.agentkit-disclosure-icon {
|
|
1299
1300
|
transition:
|
|
@@ -1301,16 +1302,24 @@ body:has(> [data-agent-native-composer-popover="true"]) > .fixed.inset-0 {
|
|
|
1301
1302
|
transform 160ms ease;
|
|
1302
1303
|
}
|
|
1303
1304
|
|
|
1304
|
-
.agentkit-activities-summary .agentkit-summary-chevron {
|
|
1305
|
+
.agentkit-activities-summary > .agentkit-summary-chevron {
|
|
1305
1306
|
opacity: 0;
|
|
1306
1307
|
}
|
|
1307
1308
|
|
|
1308
|
-
.agentkit-activities-
|
|
1309
|
-
.agentkit-activities-summary:
|
|
1310
|
-
|
|
1309
|
+
.agentkit-activities[data-expandable="true"]
|
|
1310
|
+
.agentkit-activities-summary:hover
|
|
1311
|
+
> .agentkit-summary-chevron,
|
|
1312
|
+
.agentkit-activities[data-expandable="true"]
|
|
1313
|
+
.agentkit-activities-summary:focus-visible
|
|
1314
|
+
> .agentkit-summary-chevron,
|
|
1315
|
+
.agentkit-activities[data-expandable="true"][open] .agentkit-summary-chevron {
|
|
1311
1316
|
opacity: 1;
|
|
1312
1317
|
}
|
|
1313
1318
|
|
|
1319
|
+
.agentkit-activities[data-expandable="false"] .agentkit-activities-summary {
|
|
1320
|
+
cursor: default;
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1314
1323
|
.agentkit-activities-static {
|
|
1315
1324
|
display: grid;
|
|
1316
1325
|
min-inline-size: 0;
|
|
@@ -1346,7 +1355,10 @@ body:has(> [data-agent-native-composer-popover="true"]) > .fixed.inset-0 {
|
|
|
1346
1355
|
|
|
1347
1356
|
.agentkit-activities-list {
|
|
1348
1357
|
display: grid;
|
|
1358
|
+
max-block-size: 15.625rem;
|
|
1349
1359
|
gap: 0.5rem;
|
|
1360
|
+
overflow: auto;
|
|
1361
|
+
overscroll-behavior: contain;
|
|
1350
1362
|
padding-block-start: 0.25rem;
|
|
1351
1363
|
}
|
|
1352
1364
|
|
|
@@ -1384,7 +1396,9 @@ body:has(> [data-agent-native-composer-popover="true"]) > .fixed.inset-0 {
|
|
|
1384
1396
|
|
|
1385
1397
|
@media (hover: none) {
|
|
1386
1398
|
.agentkit-message-actions[data-role="user"],
|
|
1387
|
-
.agentkit-activities-
|
|
1399
|
+
.agentkit-activities[data-expandable="true"]
|
|
1400
|
+
.agentkit-activities-summary
|
|
1401
|
+
.agentkit-summary-chevron {
|
|
1388
1402
|
opacity: 1;
|
|
1389
1403
|
}
|
|
1390
1404
|
}
|
|
@@ -1844,8 +1858,6 @@ button.agentkit-object {
|
|
|
1844
1858
|
}
|
|
1845
1859
|
|
|
1846
1860
|
@media (prefers-reduced-motion: reduce) {
|
|
1847
|
-
.agentkit-activities-current[data-running="true"]
|
|
1848
|
-
.agentkit-activities-current-label,
|
|
1849
1861
|
.agentkit-activity-item[data-status="running"] .agentkit-activity-label,
|
|
1850
1862
|
.agentkit-agent[data-status="working"] .agentkit-agent-name,
|
|
1851
1863
|
.agentkit-reasoning[data-active="true"] .agentkit-reasoning-label {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentKitAssistantChat.d.ts","sourceRoot":"","sources":["../../../src/app/chat/AgentKitAssistantChat.tsx"],"names":[],"mappings":"AA2FA,OAAO,KASN,MAAM,OAAO,CAAC;AAEf,OAAO,EAWL,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AAoCpC,OAAO,KAAK,EAGV,mBAAmB,EACnB,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAajC,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,mFAAmF;IACnF,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C;;;OAGG;IACH,aAAa,CAAC,EAAE,iHAAiH,CAAC;CACnI;
|
|
1
|
+
{"version":3,"file":"AgentKitAssistantChat.d.ts","sourceRoot":"","sources":["../../../src/app/chat/AgentKitAssistantChat.tsx"],"names":[],"mappings":"AA2FA,OAAO,KASN,MAAM,OAAO,CAAC;AAEf,OAAO,EAWL,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AAoCpC,OAAO,KAAK,EAGV,mBAAmB,EACnB,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAajC,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,mFAAmF;IACnF,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C;;;OAGG;IACH,aAAa,CAAC,EAAE,iHAAiH,CAAC;CACnI;AAwZD,eAAO,MAAM,qBAAqB,wGAmgBhC,CAAC"}
|
|
@@ -659,6 +659,7 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
659
659
|
}, [fileUploadStatus.refetch]);
|
|
660
660
|
const isRestoring = history?.isRestoring === true || props.threadRestore.status === "loading";
|
|
661
661
|
const isSubmissionInFlight = history?.isSubmissionInFlight === true;
|
|
662
|
+
const [composerSubmissionPending, setComposerSubmissionPending] = useState(false);
|
|
662
663
|
const [authError, setAuthError] = useState(null);
|
|
663
664
|
const [authSessionAvailable, setAuthSessionAvailable] = useState(false);
|
|
664
665
|
const [composerText, setComposerText] = useState(() => readAssistantChatComposerDraft(props.tabId ?? threadId) ?? "");
|
|
@@ -768,6 +769,10 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
768
769
|
.reverse()
|
|
769
770
|
.find((message) => message.role === "assistant"), [thread.messages]);
|
|
770
771
|
const isRunning = hasActiveAgentRuns(thread);
|
|
772
|
+
const lastMessage = thread.messages.at(-1);
|
|
773
|
+
const isThinkingVisibleInTranscript = (isRunning || isSubmissionInFlight) &&
|
|
774
|
+
lastMessage?.role === "user" &&
|
|
775
|
+
lastMessage.metadata?.hideUserMessage !== true;
|
|
771
776
|
const isThreadRunning = useCallback(() => hasActiveAgentRuns(controller.getThread(threadId)), [controller, threadId]);
|
|
772
777
|
useEffect(() => {
|
|
773
778
|
if (previousPrefillRevisionRef.current === prefillRevision)
|
|
@@ -1764,13 +1769,15 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
1764
1769
|
}
|
|
1765
1770
|
}, [props.isActiveComposer, props.tabId, send, threadId]);
|
|
1766
1771
|
const submitSuggestion = useCallback((suggestion) => {
|
|
1772
|
+
if (composerSubmissionPending)
|
|
1773
|
+
return;
|
|
1767
1774
|
const handler = suggestionSubmitRef.current;
|
|
1768
1775
|
if (!handler || handler.threadId !== threadId)
|
|
1769
1776
|
return;
|
|
1770
1777
|
void handler.submit(suggestion).catch((error) => {
|
|
1771
1778
|
dispatchSetupRequiredEvent(error, props.tabId, threadId);
|
|
1772
1779
|
});
|
|
1773
|
-
}, [props.tabId, threadId]);
|
|
1780
|
+
}, [composerSubmissionPending, props.tabId, threadId]);
|
|
1774
1781
|
const retryDeferredSubmission = useCallback(async () => {
|
|
1775
1782
|
if (!deferredProviderSubmissionFailureId)
|
|
1776
1783
|
return;
|
|
@@ -1903,6 +1910,9 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
1903
1910
|
setupBouncePulse,
|
|
1904
1911
|
bounceSetupCard,
|
|
1905
1912
|
isSubmissionInFlight,
|
|
1913
|
+
composerSubmissionPending,
|
|
1914
|
+
onComposerSubmissionPendingChange: setComposerSubmissionPending,
|
|
1915
|
+
isThinkingVisibleInTranscript,
|
|
1906
1916
|
contextItems,
|
|
1907
1917
|
voiceTranscriptMessages,
|
|
1908
1918
|
selectionLength,
|
|
@@ -1974,7 +1984,8 @@ function AgentKitEmptyState({ threadId }) {
|
|
|
1974
1984
|
const prompt = agentSuggestionPrompt(suggestion);
|
|
1975
1985
|
return (_jsx("button", { type: "button", disabled: !surface.canChat ||
|
|
1976
1986
|
surface.props.composerDisabled ||
|
|
1977
|
-
surface.props.composerSubmissionDisabled
|
|
1987
|
+
surface.props.composerSubmissionDisabled ||
|
|
1988
|
+
surface.composerSubmissionPending, onClick: () => surface.submitSuggestion(suggestion), className: "w-full rounded-xl border border-border/70 bg-card/60 px-3 py-2.5 text-left text-[13px] text-muted-foreground shadow-sm transition-colors hover:border-border hover:bg-card hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", children: typeof suggestion === "string"
|
|
1978
1989
|
? suggestion
|
|
1979
1990
|
: suggestion.label || prompt || String(index) }, typeof suggestion === "string"
|
|
1980
1991
|
? suggestion
|
|
@@ -2022,7 +2033,8 @@ function AgentKitTranscript({ children, threadId }) {
|
|
|
2022
2033
|
});
|
|
2023
2034
|
const threadMessageIds = new Set(thread.messages.map((message) => message.id));
|
|
2024
2035
|
const lastMessage = thread.messages.at(-1);
|
|
2025
|
-
const showThinking =
|
|
2036
|
+
const showThinking = surface.isSubmissionInFlight &&
|
|
2037
|
+
!surface.isRunning &&
|
|
2026
2038
|
lastMessage?.role === "user" &&
|
|
2027
2039
|
lastMessage.metadata?.hideUserMessage !== true;
|
|
2028
2040
|
const pendingVoiceMessages = surface.voiceTranscriptMessages.filter((message) => !threadMessageIds.has(message.id));
|
|
@@ -2037,7 +2049,8 @@ function AgentKitTranscript({ children, threadId }) {
|
|
|
2037
2049
|
surface.suggestions.length > 0 ? (_jsx(AgentKitSuggestedPrompts, { suggestions: surface.suggestions, disabled: !surface.canChat ||
|
|
2038
2050
|
surface.props.composerDisabled ||
|
|
2039
2051
|
surface.props.composerSubmissionDisabled ||
|
|
2040
|
-
surface.isSubmissionInFlight
|
|
2052
|
+
surface.isSubmissionInFlight ||
|
|
2053
|
+
surface.composerSubmissionPending, onSelect: surface.submitSuggestion, className: "agentkit-host-suggestions" })) : null;
|
|
2041
2054
|
if (surface.authError) {
|
|
2042
2055
|
const authTitle = surface.authSessionAvailable
|
|
2043
2056
|
? t("agentChat.auth.refreshTitle")
|
|
@@ -2068,7 +2081,7 @@ function AgentKitTranscript({ children, threadId }) {
|
|
|
2068
2081
|
}
|
|
2069
2082
|
return (_jsxs(_Fragment, { children: [thread.messages.length > 0 || surface.hasRenderedMessages ? (_jsx(AgentKitHistoryBeginningRevert, {})) : null, surface.threadRestore.status === "error" ? (_jsxs("div", { className: "mx-4 mt-3 flex items-center justify-between gap-3 rounded-md border border-border px-3 py-2 text-xs text-muted-foreground", role: "alert", children: [_jsx("span", { children: surface.threadRestore.notFound
|
|
2070
2083
|
? t("agentChat.message.threadNotFound")
|
|
2071
|
-
: t("agentChat.message.restoreRequestFailed") }), _jsx("button", { type: "button", onClick: surface.retryThreadRestore, className: "shrink-0 rounded px-2 py-1 hover:bg-accent hover:text-foreground", children: t("agentChat.common.retry") })] })) : null, renderThreadSlot(surface.props.threadContentSlot, threadId, surface.props.tabId), children, handoffMessages.map((message) => (_jsx(AgentMessageView, { value: message, threadId: threadId }, message.id))), pendingVoiceMessages.map((message) => (_jsx(AgentMessageView, { value: message, threadId: threadId }, message.id))), showThinking ? (_jsx("div", { role: "status", "aria-live": "polite",
|
|
2084
|
+
: t("agentChat.message.restoreRequestFailed") }), _jsx("button", { type: "button", onClick: surface.retryThreadRestore, className: "shrink-0 rounded px-2 py-1 hover:bg-accent hover:text-foreground", children: t("agentChat.common.retry") })] })) : null, renderThreadSlot(surface.props.threadContentSlot, threadId, surface.props.tabId), children, handoffMessages.map((message) => (_jsx(AgentMessageView, { value: message, threadId: threadId }, message.id))), pendingVoiceMessages.map((message) => (_jsx(AgentMessageView, { value: message, threadId: threadId }, message.id))), showThinking ? (_jsx("div", { className: "agent-thinking-indicator", role: "status", "aria-live": "polite", children: _jsx("span", { className: "agent-thinking-indicator__text", children: t("agentChat.status.thinking") }) })) : null, guided.questions?.length ? (_jsx("div", { className: "px-3 pb-3", children: _jsx(GuidedQuestionFlow, { questions: guided.questions, onSubmit: guided.handleSubmit, onSkip: guided.handleSkip, isSubmitting: guided.isSubmitting, isSubmissionBlocked: !surface.canChat, providerStatus: surface.providerStatus, onRetryProviderStatus: surface.retryProviderStatus, ...(guided.title ? { title: guided.title } : {}), ...(guided.description ? { description: guided.description } : {}), ...(guided.skipLabel ? { skipLabel: guided.skipLabel } : {}), ...(guided.submitLabel ? { submitLabel: guided.submitLabel } : {}), className: "h-auto items-stretch justify-stretch bg-transparent" }) })) : null, suggestionBar, renderThreadSlot(surface.props.threadFooterSlot, threadId, surface.props.tabId)] }));
|
|
2072
2085
|
}
|
|
2073
2086
|
function renderThreadSlot(slot, threadId, tabId) {
|
|
2074
2087
|
return typeof slot === "function"
|
|
@@ -2125,7 +2138,7 @@ class AgentKitComposerContextError extends Error {
|
|
|
2125
2138
|
this.name = "AgentKitComposerContextError";
|
|
2126
2139
|
}
|
|
2127
2140
|
}
|
|
2128
|
-
function AgentKitComposerSurface({ threadId, props, composerContext, canChat, setupMissing, providerStatus, retryProviderStatus, fileStorageConfigured, fileStorageMissing, retryFileStorageStatus, deferredSubmissionFailed, retryDeferredSubmission, dismissDeferredSubmission, isRunning, isRestoring, isSubmissionInFlight, hasRenderedMessages, threadRestore, suggestions, showSuggestions, setupBouncePulse, bounceSetupCard, contextItems, selectionLength, prefillRevision, text, onTextChange, onRemoveContextItem, onClearSelection, onBeforeSubmit, onSubmit, submitSuggestion, suggestionSubmitRef, onImplementPlan, }) {
|
|
2141
|
+
function AgentKitComposerSurface({ threadId, props, composerContext, canChat, setupMissing, providerStatus, retryProviderStatus, fileStorageConfigured, fileStorageMissing, retryFileStorageStatus, deferredSubmissionFailed, retryDeferredSubmission, dismissDeferredSubmission, isRunning, isRestoring, isSubmissionInFlight, composerSubmissionPending, onComposerSubmissionPendingChange, isThinkingVisibleInTranscript, hasRenderedMessages, threadRestore, suggestions, showSuggestions, setupBouncePulse, bounceSetupCard, contextItems, selectionLength, prefillRevision, text, onTextChange, onRemoveContextItem, onClearSelection, onBeforeSubmit, onSubmit, submitSuggestion, suggestionSubmitRef, onImplementPlan, }) {
|
|
2129
2142
|
const t = useT();
|
|
2130
2143
|
const [composerError, setComposerError] = useState(null);
|
|
2131
2144
|
const mounted = useRef(true);
|
|
@@ -2298,7 +2311,8 @@ function AgentKitComposerSurface({ threadId, props, composerContext, canChat, se
|
|
|
2298
2311
|
}) }), props.composerSlot, showHomeIntro ? (_jsx("div", { className: "agentkit-home-intro", children: props.homeIntroSlot })) : null, showHomeSuggestions ? (_jsx(AgentKitSuggestedPrompts, { suggestions: suggestions, disabled: !canChat ||
|
|
2299
2312
|
props.composerDisabled ||
|
|
2300
2313
|
props.composerSubmissionDisabled ||
|
|
2301
|
-
isSubmissionInFlight
|
|
2314
|
+
isSubmissionInFlight ||
|
|
2315
|
+
composerSubmissionPending, onSelect: submitSuggestion, className: "agentkit-home-suggestions" })) : null, showPlanCallout ? (_jsx(PlanModeCallout, { canImplementPlan: latestAssistantWasPlan, onImplementPlan: onImplementPlan, onSwitchToAct: () => props.onExecModeChange?.("build") })) : null, setupMissing && props.showMissingApiKeySetup !== false ? (_jsx(BuilderSetupCard, { fullWidth: true, attached: true, bouncePulse: setupBouncePulse, layout: props.missingApiKeySetupLayout ?? "default", onConnected: () => window.dispatchEvent(new Event("agent-engine:configured-changed")) })) : null, !canChat && !setupMissing && providerStatus !== "configured" ? (_jsx(GuidedQuestionProviderGate, { providerStatus: providerStatus, onRetry: retryProviderStatus })) : null, integration ? (_jsx(McpConnectionSuggestion, { text: text, variant: "composer", requestedByUser: true, integrationId: integration.id })) : null, selectionLength !== null && selectionLength > 0 ? (_jsx(AgentKitSelectionPill, { length: selectionLength, onClear: onClearSelection })) : null, _jsxs("div", { className: "relative", children: [_jsx(AgentKitComposer, { threadId: threadId, disabled: (!canChat && !providerSubmissionPending) ||
|
|
2302
2316
|
props.composerDisabled ||
|
|
2303
2317
|
isRestoring, submissionDisabled: (!canChat && !providerSubmissionPending) ||
|
|
2304
2318
|
props.composerSubmissionDisabled === true ||
|
|
@@ -2309,7 +2323,7 @@ function AgentKitComposerSurface({ threadId, props, composerContext, canChat, se
|
|
|
2309
2323
|
window.dispatchEvent(new CustomEvent("agent-chat:missing-api-key", {
|
|
2310
2324
|
detail: { tabId: props.tabId, threadId },
|
|
2311
2325
|
}));
|
|
2312
|
-
}, initialText: text, initialTextKey: `${props.tabId ?? threadId}:${prefillRevision}`, requireAgentEngine: false, onTextChange: onTextChange, onBeforeSubmit: onBeforeSubmit, contextItems: visibleContextItems, contextMenuItems: composerContext?.menuItems, onRemoveContextItem: (key) => {
|
|
2326
|
+
}, initialText: text, initialTextKey: `${props.tabId ?? threadId}:${prefillRevision}`, requireAgentEngine: false, onTextChange: onTextChange, onBeforeSubmit: onBeforeSubmit, announcePendingSubmission: !isThinkingVisibleInTranscript, onSubmissionPendingChange: onComposerSubmissionPendingChange, contextItems: visibleContextItems, contextMenuItems: composerContext?.menuItems, onRemoveContextItem: (key) => {
|
|
2313
2327
|
if (providerContextKeys.has(key))
|
|
2314
2328
|
composerContext?.onRemoveContextItem(key);
|
|
2315
2329
|
else
|
|
@@ -2335,7 +2349,8 @@ function AgentKitComposerSurface({ threadId, props, composerContext, canChat, se
|
|
|
2335
2349
|
}, "aria-label": t("agentChat.composer.stopResponse"), title: t("agentChat.composer.stopResponse"), "data-agent-composer-slot": "stop-button", className: "flex h-7 w-7 items-center justify-center rounded-full bg-primary text-primary-foreground", children: _jsx(IconPlayerStopFilled, { className: "h-3 w-3" }) })) : undefined }), deferredSubmissionFailed ? (_jsxs("div", { role: "alert", className: "mx-3 mb-1.5 flex shrink-0 items-center gap-2 rounded-md border border-border bg-muted/70 px-3 py-2 text-xs text-foreground shadow-sm", children: [_jsx(IconAlertTriangle, { className: "size-3.5 shrink-0 text-muted-foreground" }), _jsx("span", { className: "flex-1 leading-snug", children: t("agentChat.recovery.deferredSubmissionFailed") }), _jsx("button", { type: "button", disabled: !canChat || isSubmissionInFlight, onClick: () => void retryDeferredSubmission().catch(() => undefined), className: "shrink-0 rounded px-2 py-1 font-medium hover:bg-accent disabled:opacity-60", children: t("agentChat.common.retry") }), _jsx("button", { type: "button", "aria-label": t("agentChat.common.dismissError"), onClick: () => void dismissDeferredSubmission().catch(() => undefined), className: "-mr-1 flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: _jsx(IconX, { className: "size-3.5" }) })] })) : null, composerError ? (_jsxs("div", { role: "alert", className: "mx-3 mb-1.5 flex shrink-0 items-start gap-2 rounded-md border border-border bg-muted/70 px-3 py-2 text-xs text-foreground shadow-sm", children: [_jsx(IconAlertTriangle, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground" }), _jsx("span", { className: "flex-1 leading-snug", children: composerError }), _jsx("button", { type: "button", "aria-label": t("agentChat.common.dismissError"), onClick: () => setComposerError(null), className: "-mr-1 -mt-1 flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: _jsx(IconX, { className: "h-3.5 w-3.5" }) })] })) : null, _jsx(ExternalAgentNudge, { variant: "prompt" })] }), showAfterComposerSuggestions ? (_jsx(AgentKitSuggestedPrompts, { suggestions: suggestions, disabled: !canChat ||
|
|
2336
2350
|
props.composerDisabled ||
|
|
2337
2351
|
props.composerSubmissionDisabled ||
|
|
2338
|
-
isSubmissionInFlight
|
|
2352
|
+
isSubmissionInFlight ||
|
|
2353
|
+
composerSubmissionPending, onSelect: submitSuggestion, className: "agentkit-home-suggestions" })) : null, showAfterComposerSlot ? (_jsx("div", { className: "agentkit-after-composer-slot", children: props.afterComposerSlot })) : null, composerContext?.dialogs] }));
|
|
2339
2354
|
}
|
|
2340
2355
|
function AgentKitSuggestedPrompts({ suggestions, disabled, onSelect, className, }) {
|
|
2341
2356
|
const t = useT();
|
|
@@ -2404,12 +2419,14 @@ function AgentKitTool({ value, active }) {
|
|
|
2404
2419
|
const surface = useAgentKitSurface();
|
|
2405
2420
|
const metadata = value.metadata ?? {};
|
|
2406
2421
|
const input = asRecord(value.input) ?? {};
|
|
2407
|
-
const output =
|
|
2408
|
-
? value.
|
|
2409
|
-
: value.output ===
|
|
2410
|
-
?
|
|
2411
|
-
:
|
|
2412
|
-
|
|
2422
|
+
const output = value.status === "failed" && value.error?.message
|
|
2423
|
+
? value.error.message
|
|
2424
|
+
: typeof value.output === "string"
|
|
2425
|
+
? value.output
|
|
2426
|
+
: value.output === undefined
|
|
2427
|
+
? undefined
|
|
2428
|
+
: JSON.stringify(value.output);
|
|
2429
|
+
return (_jsx(ChatRunningContext.Provider, { value: active === true || value.status === "running", children: _jsx(SuppressInlineOpenAppContext.Provider, { value: surface.props.suppressInlineOpenApp === true, children: _jsx(ToolCallDisplay, { toolName: value.name, toolCallId: value.id, args: input, argsText: JSON.stringify(input), result: output, isError: value.status === "failed", isRunning: value.status === "running", structuredMeta: metadata, mcpApp: asRecord(metadata.mcpApp), chatUI: asRecord(metadata.chatUI), activity: metadata.activity === true, isActiveTail: active === true }) }) }));
|
|
2413
2430
|
}
|
|
2414
2431
|
function AgentKitApproval({ value, runId, }) {
|
|
2415
2432
|
const surface = useAgentKitSurface();
|