@agent-native/toolkit 0.198.8 → 0.199.0-nightly-20261001064935
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.map +1 -1
- package/dist/app/agentkit/react/components.js +142 -56
- package/dist/app/agentkit/react/components.js.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.js +34 -27
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/AgentPanel.d.ts +2 -1
- package/dist/app/chat/AgentPanel.d.ts.map +1 -1
- package/dist/app/chat/AgentPanel.js +7 -4
- package/dist/app/chat/AgentPanel.js.map +1 -1
- package/dist/app/chat/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/MultiTabAssistantChat.js +21 -4
- package/dist/app/chat/MultiTabAssistantChat.js.map +1 -1
- package/dist/app/chat/chat/run-recovery.d.ts +2 -1
- package/dist/app/chat/chat/run-recovery.d.ts.map +1 -1
- package/dist/app/chat/chat/run-recovery.js +13 -9
- package/dist/app/chat/chat/run-recovery.js.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +24 -2
- 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 +24 -2
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +24 -2
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +24 -2
- 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 +24 -2
- 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 +24 -2
- 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 +24 -2
- 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 +24 -2
- 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 +24 -2
- 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 +24 -2
- 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 +24 -2
- 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 +24 -2
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/app/labs/LabsSettings.d.ts.map +1 -1
- package/dist/app/labs/LabsSettings.js +10 -2
- package/dist/app/labs/LabsSettings.js.map +1 -1
- package/dist/app/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/app/org/OrgSwitcher.js +51 -9
- package/dist/app/org/OrgSwitcher.js.map +1 -1
- package/dist/app/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/app/settings/SettingsPanel.js +4 -145
- package/dist/app/settings/SettingsPanel.js.map +1 -1
- package/dist/app/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/app/settings/SettingsTabsPage.js +27 -16
- package/dist/app/settings/SettingsTabsPage.js.map +1 -1
- package/dist/app/settings/model/ChatGPTSubscriptionRow.d.ts +24 -2
- package/dist/app/settings/model/ChatGPTSubscriptionRow.d.ts.map +1 -1
- package/dist/app/settings/model/ChatGPTSubscriptionRow.js +97 -26
- package/dist/app/settings/model/ChatGPTSubscriptionRow.js.map +1 -1
- package/dist/app/settings/model/ModelSettingsPage.d.ts.map +1 -1
- package/dist/app/settings/model/ModelSettingsPage.js +73 -22
- package/dist/app/settings/model/ModelSettingsPage.js.map +1 -1
- package/dist/app/settings/model/model-page-state.d.ts +12 -2
- package/dist/app/settings/model/model-page-state.d.ts.map +1 -1
- package/dist/app/settings/model/model-page-state.js +14 -1
- package/dist/app/settings/model/model-page-state.js.map +1 -1
- package/dist/app/settings/shell/bridge.d.ts +1 -1
- package/dist/app/settings/shell/bridge.d.ts.map +1 -1
- package/dist/app/settings/shell/bridge.js +1 -4
- package/dist/app/settings/shell/bridge.js.map +1 -1
- package/dist/app/settings/usage/UsagePage.d.ts.map +1 -1
- package/dist/app/settings/usage/UsagePage.js +3 -2
- package/dist/app/settings/usage/UsagePage.js.map +1 -1
- package/dist/composer/TiptapComposer.d.ts +1 -0
- package/dist/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/composer/TiptapComposer.js +10 -4
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/dist/composer/runtime-adapters.d.ts +1 -0
- package/dist/composer/runtime-adapters.d.ts.map +1 -1
- package/dist/composer/runtime-adapters.js.map +1 -1
- package/package.json +4 -4
- package/src/app/agentkit/react/components.tsx +295 -98
- package/src/app/agentkit/react/lifecycle.spec.tsx +758 -17
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +116 -7
- package/src/app/chat/AgentKitAssistantChat.tsx +100 -45
- package/src/app/chat/AgentPanel.header.spec.ts +9 -0
- package/src/app/chat/AgentPanel.tsx +10 -1
- package/src/app/chat/MultiTabAssistantChat.spec.tsx +115 -1
- package/src/app/chat/MultiTabAssistantChat.tsx +24 -4
- package/src/app/chat/chat/run-recovery.spec.tsx +31 -0
- package/src/app/chat/chat/run-recovery.tsx +22 -5
- package/src/app/i18n/catalogs/ar-SA.ts +31 -2
- package/src/app/i18n/catalogs/de-DE.ts +33 -2
- package/src/app/i18n/catalogs/en-US.ts +33 -2
- package/src/app/i18n/catalogs/es-ES.ts +34 -2
- package/src/app/i18n/catalogs/fr-FR.ts +33 -2
- package/src/app/i18n/catalogs/hi-IN.ts +34 -2
- package/src/app/i18n/catalogs/ja-JP.ts +31 -2
- package/src/app/i18n/catalogs/ko-KR.ts +31 -2
- package/src/app/i18n/catalogs/pt-BR.ts +33 -2
- package/src/app/i18n/catalogs/zh-CN.ts +32 -2
- package/src/app/i18n/catalogs/zh-TW.ts +32 -2
- package/src/app/labs/LabsSettings.tsx +13 -3
- package/src/app/org/OrgSwitcher.spec.tsx +75 -0
- package/src/app/org/OrgSwitcher.tsx +104 -34
- package/src/app/settings/SettingsPanel.connections.spec.tsx +25 -5
- package/src/app/settings/SettingsPanel.tsx +3 -286
- package/src/app/settings/SettingsTabsPage.spec.tsx +110 -17
- package/src/app/settings/SettingsTabsPage.tsx +36 -20
- package/src/app/settings/model/ChatGPTSubscriptionRow.tsx +316 -60
- package/src/app/settings/model/ModelSettingsPage.spec.tsx +599 -20
- package/src/app/settings/model/ModelSettingsPage.tsx +114 -25
- package/src/app/settings/model/model-page-state.spec.ts +46 -0
- package/src/app/settings/model/model-page-state.ts +27 -2
- package/src/app/settings/shell/bridge.spec.ts +3 -13
- package/src/app/settings/shell/bridge.ts +2 -5
- package/src/app/settings/shell/pages/app-group-pages.spec.tsx +50 -2
- package/src/app/settings/usage/UsagePage.spec.tsx +25 -1
- package/src/app/settings/usage/UsagePage.tsx +21 -1
- package/src/composer/PromptComposer.context.spec.tsx +22 -3
- package/src/composer/TiptapComposer.tsx +13 -4
- package/src/composer/runtime-adapters.tsx +1 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { hasActiveAgentRuns, selectAgentSuggestions, isCurrentAgentSuggestion, } from "@agent-native/agentkit";
|
|
3
|
+
import { CHATGPT_SUBSCRIPTION_ENGINE_NAME } from "@agent-native/core/agent/chatgpt-subscription-contract";
|
|
3
4
|
import { appendAgentChatContextToMessage, filterAgentChatContextItems, formatAgentChatContextItemsForPrompt, getAgentChatContextState, normalizeAgentChatContextItem, publishAgentChatContextItems, reportAgentChatSubmitResult, refreshAgentChatContext, subscribeAgentChatContext, } from "@agent-native/core/client/agent-chat";
|
|
4
5
|
import { AGENT_NATIVE_PROTOCOL_METADATA_KEY } from "@agent-native/core/client/agent-chat";
|
|
5
6
|
import { readAssistantChatComposerDraft, writeAssistantChatComposerDraft, } from "@agent-native/core/client/agent-chat";
|
|
@@ -1395,14 +1396,16 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
1395
1396
|
const currentPendingSelection = pendingSelectionRef.current;
|
|
1396
1397
|
const selectionRevision = selectionRevisionRef.current;
|
|
1397
1398
|
const attachments = options.attachments ?? [];
|
|
1398
|
-
const needsFileStorage =
|
|
1399
|
-
|
|
1399
|
+
const needsFileStorage = !options.deferredFileParts &&
|
|
1400
|
+
(files.length > 0 ||
|
|
1401
|
+
attachments.some((attachment) => !attachment.displayOnly && !attachment.url));
|
|
1400
1402
|
if (needsFileStorage && !fileStorageConfigured) {
|
|
1401
1403
|
throw new Error(t("onboarding.fileStorage.title"));
|
|
1402
1404
|
}
|
|
1403
1405
|
// Persist only URLs or opaque file handles; application_state is
|
|
1404
1406
|
// not a file store and must never receive attachment bodies.
|
|
1405
|
-
const fileParts =
|
|
1407
|
+
const fileParts = options.deferredFileParts ??
|
|
1408
|
+
(await uploadAgentChatAttachments(control, attachments, files));
|
|
1406
1409
|
const selectionChangedDuringUpload = selectionRevision !== selectionRevisionRef.current;
|
|
1407
1410
|
const context = options.recoveryAction
|
|
1408
1411
|
? ""
|
|
@@ -1737,17 +1740,18 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
1737
1740
|
})),
|
|
1738
1741
|
],
|
|
1739
1742
|
}), [isThreadRunning, submit]);
|
|
1740
|
-
const sendRecoveryMessage = useCallback(async (text, recoveryAction, images,
|
|
1743
|
+
const sendRecoveryMessage = useCallback(async (text, recoveryAction, images, fileParts, references, recoveryOptions) => {
|
|
1741
1744
|
return submit(text, [], [], { intent: isThreadRunning() ? "queued" : "immediate" }, {
|
|
1742
1745
|
hideUserMessage: true,
|
|
1743
1746
|
recoveryAction,
|
|
1744
1747
|
recoveryReferences: references,
|
|
1745
1748
|
...recoveryOptions,
|
|
1746
|
-
|
|
1747
|
-
...(
|
|
1749
|
+
deferredFileParts: [
|
|
1750
|
+
...(fileParts ?? []),
|
|
1748
1751
|
...(images ?? []).map((url) => ({
|
|
1749
|
-
type: "
|
|
1752
|
+
type: "file",
|
|
1750
1753
|
name: "image",
|
|
1754
|
+
mediaType: "image",
|
|
1751
1755
|
url,
|
|
1752
1756
|
})),
|
|
1753
1757
|
],
|
|
@@ -2081,7 +2085,7 @@ function AgentKitTranscript({ children, threadId }) {
|
|
|
2081
2085
|
}
|
|
2082
2086
|
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
|
|
2083
2087
|
? t("agentChat.message.threadNotFound")
|
|
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: "
|
|
2088
|
+
: 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: "agentkit-activities agentkit-activities-summary-content", role: "status", "aria-live": "polite", children: _jsx("span", { className: "agentkit-activities-current", "data-running": "true", "data-agentkit-current-activity": "true", children: _jsx("span", { className: "agentkit-activities-current-label agent-running-shimmer", 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)] }));
|
|
2085
2089
|
}
|
|
2086
2090
|
function renderThreadSlot(slot, threadId, tabId) {
|
|
2087
2091
|
return typeof slot === "function"
|
|
@@ -2328,7 +2332,7 @@ function AgentKitComposerSurface({ threadId, props, composerContext, canChat, se
|
|
|
2328
2332
|
composerContext?.onRemoveContextItem(key);
|
|
2329
2333
|
else
|
|
2330
2334
|
onRemoveContextItem(key);
|
|
2331
|
-
}, onRetryContextItem: composerContext?.onRetryContextItem,
|
|
2335
|
+
}, onRetryContextItem: composerContext?.onRetryContextItem, interceptBuildRequestsForBuilder: isInBuilderFrame(), selectedModel: props.selectedModel ?? props.defaultModel, selectedEngine: props.selectedEngine, selectedEffort: props.selectedEffort, availableModels: props.availableModels, modelListLoading: props.modelListLoading, onModelChange: props.onModelChange, onEffortChange: props.onEffortChange, availableAgents: props.availableAgents, selectedAgent: props.selectedAgent, agentOnly: props.hostedHarness, onAgentChange: props.onAgentChange, showModelSelector: props.showModelSelector, mode: props.execMode === "plan" ? "plan" : "act", planModeDisabled: props.planModeDisabled, planModeDisabledReason: props.planModeDisabledReason, onModeChange: (mode) => props.onExecModeChange?.(mode === "plan" ? "plan" : "build"), layoutVariant: props.composerLayoutVariant, plusMenuMode: props.plusMenuMode, placeholder: composerPlaceholder({
|
|
2332
2336
|
props,
|
|
2333
2337
|
canChat,
|
|
2334
2338
|
providerStatus,
|
|
@@ -2336,7 +2340,7 @@ function AgentKitComposerSurface({ threadId, props, composerContext, canChat, se
|
|
|
2336
2340
|
isRunning,
|
|
2337
2341
|
thread,
|
|
2338
2342
|
t,
|
|
2339
|
-
}), onConnectProvider: props.onConnectProvider, onConnectLocalRuntime: props.onConnectLocalRuntime, imageModelMenu: props.imageModelMenu, voiceEnabled: true, toolbarSlot: props.composerToolbarSlot, extraActionButton: props.composerExtraActionButton, includeDefaultSlashCommands: true, includeDefaultSlashSkills: true, onSlashCommand: props.onSlashCommand, modelStatusChecksEnabled: props.showModelSelector !== false &&
|
|
2343
|
+
}), onConnectProvider: props.onConnectProvider, onConnectLocalRuntime: props.onConnectLocalRuntime, imageModelMenu: props.imageModelMenu, voiceEnabled: true, toolbarSlot: _jsxs(_Fragment, { children: [props.selectedEngine === CHATGPT_SUBSCRIPTION_ENGINE_NAME ? (_jsxs("span", { className: "inline-flex items-center gap-2 text-[11px] text-muted-foreground", children: [_jsx("span", { children: t("agentChat.composer.chatgptPlanUsing") }), _jsx("a", { href: "https://chatgpt.com/settings/usage", target: "_blank", rel: "noreferrer", className: "font-medium text-foreground underline-offset-2 hover:underline", children: t("agentChat.composer.chatgptManageUsage") })] })) : null, props.composerToolbarSlot] }), extraActionButton: props.composerExtraActionButton, includeDefaultSlashCommands: true, includeDefaultSlashSkills: true, onSlashCommand: props.onSlashCommand, modelStatusChecksEnabled: props.showModelSelector !== false &&
|
|
2340
2344
|
props.availableModels === undefined, attachmentsEnabled: fileStorageConfigured, onAttachmentRequest: requestFileStorage, contextButtonTooltipDisabled: fileStoragePromptOpen, onAttachmentError: setComposerError, onSubmit: submitComposer, composerRef: composerRef, stopButton: isRunning ? (_jsx("button", { type: "button", onClick: () => {
|
|
2341
2345
|
setComposerError(null);
|
|
2342
2346
|
void (async () => {
|
|
@@ -2419,13 +2423,19 @@ function AgentKitTool({ value, active }) {
|
|
|
2419
2423
|
const surface = useAgentKitSurface();
|
|
2420
2424
|
const metadata = value.metadata ?? {};
|
|
2421
2425
|
const input = asRecord(value.input) ?? {};
|
|
2422
|
-
const
|
|
2423
|
-
?
|
|
2424
|
-
|
|
2426
|
+
const errorOutput = value.status === "failed"
|
|
2427
|
+
? Array.from(new Set([
|
|
2428
|
+
value.error?.message?.trim(),
|
|
2429
|
+
formatErrorDetails(value.error?.details),
|
|
2430
|
+
formatErrorDetails(value.output),
|
|
2431
|
+
].filter((detail) => Boolean(detail?.trim())))).join("\n\n") || undefined
|
|
2432
|
+
: undefined;
|
|
2433
|
+
const output = errorOutput ??
|
|
2434
|
+
(typeof value.output === "string"
|
|
2425
2435
|
? value.output
|
|
2426
2436
|
: value.output === undefined
|
|
2427
2437
|
? undefined
|
|
2428
|
-
: JSON.stringify(value.output);
|
|
2438
|
+
: JSON.stringify(value.output));
|
|
2429
2439
|
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 }) }) }));
|
|
2430
2440
|
}
|
|
2431
2441
|
function AgentKitApproval({ value, runId, }) {
|
|
@@ -2560,28 +2570,20 @@ function AgentKitRunFailure({ error, runId, threadId, }) {
|
|
|
2560
2570
|
const value = retryMetadata?.[key] ?? retryCustomMetadata?.[key];
|
|
2561
2571
|
return typeof value === "string" && value.trim() ? value : undefined;
|
|
2562
2572
|
};
|
|
2563
|
-
const
|
|
2564
|
-
|
|
2565
|
-
{
|
|
2566
|
-
type: "file",
|
|
2567
|
-
name: part.name,
|
|
2568
|
-
...(part.mediaType ? { contentType: part.mediaType } : {}),
|
|
2569
|
-
...(part.url ? { url: part.url } : {}),
|
|
2570
|
-
},
|
|
2571
|
-
]
|
|
2572
|
-
: []) ?? [];
|
|
2573
|
+
const retryFileParts = lastUserMessage?.parts.filter((part) => part.type === "file") ?? [];
|
|
2574
|
+
const retryHasUnavailableAttachment = retryFileParts.some((part) => !part.url && !part.fileId);
|
|
2573
2575
|
const retryReferences = Array.isArray(retryMetadata?.references)
|
|
2574
2576
|
? retryMetadata.references
|
|
2575
2577
|
: [];
|
|
2576
2578
|
const retryRequestMode = metadataString("requestMode");
|
|
2577
|
-
return (_jsx(RunErrorRecoveryCard, { info: info, onContinue: () => void surface.sendRecoveryMessage(RECOVERY_CONTINUE_PROMPT, "continue"), onRetry: () => void surface.sendRecoveryMessage(retryText || "Please retry the last request.", "retry", undefined,
|
|
2579
|
+
return (_jsx(RunErrorRecoveryCard, { info: info, onContinue: () => void surface.sendRecoveryMessage(RECOVERY_CONTINUE_PROMPT, "continue"), onRetry: () => void surface.sendRecoveryMessage(retryText || "Please retry the last request.", "retry", undefined, retryFileParts, retryReferences, {
|
|
2578
2580
|
recoveryModel: metadataString("model"),
|
|
2579
2581
|
recoveryEngine: metadataString("engine"),
|
|
2580
2582
|
recoveryEffort: metadataString("effort"),
|
|
2581
2583
|
...(retryRequestMode === "plan" || retryRequestMode === "act"
|
|
2582
2584
|
? { recoveryRequestMode: retryRequestMode }
|
|
2583
2585
|
: {}),
|
|
2584
|
-
}), onFork: async () => {
|
|
2586
|
+
}), retryHasUnavailableAttachment: retryHasUnavailableAttachment, onFork: async () => {
|
|
2585
2587
|
if (!lastUserMessage)
|
|
2586
2588
|
return surface.props.onForkChat?.();
|
|
2587
2589
|
const fork = await control.fork(lastUserMessage.id);
|
|
@@ -2591,7 +2593,12 @@ function AgentKitRunFailure({ error, runId, threadId, }) {
|
|
|
2591
2593
|
}
|
|
2592
2594
|
function AgentKitConnectionError({ error, threadId, recover, recovering, recoveryError, }) {
|
|
2593
2595
|
const t = useT();
|
|
2594
|
-
|
|
2596
|
+
const surface = useAgentKitSurface();
|
|
2597
|
+
const chatGPTPlanUsageError = surface.props.selectedEngine === CHATGPT_SUBSCRIPTION_ENGINE_NAME &&
|
|
2598
|
+
`${error.code} ${error.message}`.match(/subscription_sharing_usage_limit_(exceeded|unavailable)/)?.[1];
|
|
2599
|
+
return (_jsxs("div", { className: "rounded-md border border-border px-3 py-2 text-xs text-muted-foreground", "data-error-code": error.code, "data-thread-id": threadId, role: "alert", children: [_jsx("strong", { className: "mr-2 font-medium text-foreground", children: t("agentChat.error.failed") }), chatGPTPlanUsageError ? (_jsxs(_Fragment, { children: [_jsx("span", { children: t(chatGPTPlanUsageError === "exceeded"
|
|
2600
|
+
? "agentChat.error.chatgptPlanUsageLimit"
|
|
2601
|
+
: "agentChat.error.chatgptPlanUsageUnavailable") }), _jsx("a", { href: "https://chatgpt.com/settings/usage", target: "_blank", rel: "noreferrer", className: "ml-3 font-medium text-foreground underline-offset-2 hover:underline", children: t("agentChat.composer.chatgptManageUsage") })] })) : (_jsx("span", { children: formatAgentKitErrorText(error, t) })), error.retryable ? (_jsx("button", { type: "button", disabled: recovering, onClick: () => void recover().catch(() => undefined), className: "ml-3 rounded px-2 py-1 hover:bg-accent hover:text-foreground disabled:opacity-60", children: recovering
|
|
2595
2602
|
? t("agentChat.common.loading")
|
|
2596
2603
|
: t("agentChat.agentPanel.chatgptSubscriptionReconnect") })) : null, recoveryError ? (_jsx("span", { className: "mt-2 block", role: "alert", children: formatAgentKitErrorText({ code: "runtime_error", message: recoveryError.message }, t) })) : null] }));
|
|
2597
2604
|
}
|