@agent-native/toolkit 0.209.1-nightly-20261015153252 → 0.209.1
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/styles.css +1 -1
- package/dist/app/chat/AgentKitAssistantChat.d.ts +1 -0
- package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.js +96 -1
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/MultiTabAssistantChat.js +21 -0
- package/dist/app/chat/MultiTabAssistantChat.js.map +1 -1
- package/dist/app/chat/chat/surface-types.d.ts +3 -1
- package/dist/app/chat/chat/surface-types.d.ts.map +1 -1
- package/dist/app/chat/chat/surface-types.js.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +2 -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 +2 -0
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +2 -0
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -0
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/composer/TiptapComposer.js +2 -4
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/package.json +4 -4
- package/src/app/agentkit/react/styles.css +1 -1
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +137 -4
- package/src/app/chat/AgentKitAssistantChat.tsx +168 -0
- package/src/app/chat/MultiTabAssistantChat.spec.tsx +53 -0
- package/src/app/chat/MultiTabAssistantChat.tsx +36 -1
- package/src/app/chat/chat/surface-types.ts +6 -1
- package/src/app/i18n/catalogs/ar-SA.ts +4 -0
- package/src/app/i18n/catalogs/de-DE.ts +4 -0
- package/src/app/i18n/catalogs/en-US.ts +4 -0
- package/src/app/i18n/catalogs/es-ES.ts +4 -0
- package/src/app/i18n/catalogs/fr-FR.ts +4 -0
- package/src/app/i18n/catalogs/hi-IN.ts +4 -0
- package/src/app/i18n/catalogs/ja-JP.ts +4 -0
- package/src/app/i18n/catalogs/ko-KR.ts +4 -0
- package/src/app/i18n/catalogs/pt-BR.ts +4 -0
- package/src/app/i18n/catalogs/zh-CN.ts +3 -0
- package/src/app/i18n/catalogs/zh-TW.ts +3 -0
- package/src/composer/TiptapComposer.spec.ts +11 -12
- package/src/composer/TiptapComposer.tsx +2 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentKitAssistantChat.d.ts","sourceRoot":"","sources":["../../../src/app/chat/AgentKitAssistantChat.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentKitAssistantChat.d.ts","sourceRoot":"","sources":["../../../src/app/chat/AgentKitAssistantChat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { AgentKitUploadError, hasActiveAgentRuns, selectAgentSuggestions, isCurrentAgentSuggestion, splitAgentKitMessageContext, } from "@agent-native/agentkit";
|
|
2
|
+
import { AgentKitUploadError, hasActiveAgentRuns, selectAgentSuggestions, isCurrentAgentSuggestion, AGENT_NATIVE_SUBMISSION_EXPIRES_AT_METADATA_KEY, splitAgentKitMessageContext, } from "@agent-native/agentkit";
|
|
3
3
|
import { MAX_AGENT_REQUEST_ATTACHMENT_DATA_CHARS, isPersistableAttachmentUrl, persistableFilePart, } from "@agent-native/agentkit/protocol";
|
|
4
4
|
import { CHATGPT_SUBSCRIPTION_ENGINE_NAME } from "@agent-native/core/agent/chatgpt-subscription-contract";
|
|
5
5
|
import { isCreditsLimitErrorCode } from "@agent-native/core/agent/engine/error-detail";
|
|
@@ -368,6 +368,13 @@ function withCoreSnapshotPersistence(customTransport, coreTransport, persistence
|
|
|
368
368
|
},
|
|
369
369
|
});
|
|
370
370
|
}
|
|
371
|
+
function isSubmissionExpired(submissionExpiresAt) {
|
|
372
|
+
return (submissionExpiresAt !== undefined &&
|
|
373
|
+
(!Number.isFinite(submissionExpiresAt) || submissionExpiresAt <= Date.now()));
|
|
374
|
+
}
|
|
375
|
+
function isSubmissionExpiredError(error) {
|
|
376
|
+
return asRecord(error)?.code === "submission_expired";
|
|
377
|
+
}
|
|
371
378
|
function createPendingSelectionHydration(threadId) {
|
|
372
379
|
let resolve;
|
|
373
380
|
const promise = new Promise((resolvePromise) => {
|
|
@@ -532,6 +539,9 @@ function parseDeferredProviderSubmissions(value, threadId) {
|
|
|
532
539
|
!Array.isArray(submission.references) ||
|
|
533
540
|
!composerOptions ||
|
|
534
541
|
!options ||
|
|
542
|
+
(submission.submissionExpiresAt !== undefined &&
|
|
543
|
+
(typeof submission.submissionExpiresAt !== "number" ||
|
|
544
|
+
!Number.isFinite(submission.submissionExpiresAt))) ||
|
|
535
545
|
(submission.attempts !== undefined &&
|
|
536
546
|
(!Number.isSafeInteger(submission.attempts) ||
|
|
537
547
|
submission.attempts < 0)) ||
|
|
@@ -548,6 +558,9 @@ function parseDeferredProviderSubmissions(value, threadId) {
|
|
|
548
558
|
id: submission.id,
|
|
549
559
|
threadId,
|
|
550
560
|
text: submission.text,
|
|
561
|
+
...(typeof submission.submissionExpiresAt === "number"
|
|
562
|
+
? { submissionExpiresAt: submission.submissionExpiresAt }
|
|
563
|
+
: {}),
|
|
551
564
|
fileParts: fileParts,
|
|
552
565
|
...(Array.isArray(requestAttachments)
|
|
553
566
|
? {
|
|
@@ -2459,6 +2472,11 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
2459
2472
|
: props.selectedAgent;
|
|
2460
2473
|
const actionScope = options.actionScope ?? contextScope;
|
|
2461
2474
|
const customMetadata = {
|
|
2475
|
+
...(typeof options.submissionExpiresAt === "number"
|
|
2476
|
+
? {
|
|
2477
|
+
[AGENT_NATIVE_SUBMISSION_EXPIRES_AT_METADATA_KEY]: options.submissionExpiresAt,
|
|
2478
|
+
}
|
|
2479
|
+
: {}),
|
|
2462
2480
|
...(options.recoveryAction
|
|
2463
2481
|
? { agentNativeRecoveryAction: options.recoveryAction }
|
|
2464
2482
|
: {}),
|
|
@@ -2520,12 +2538,18 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
2520
2538
|
};
|
|
2521
2539
|
if (!queuedMessageReservationId)
|
|
2522
2540
|
localSubmissionRef.current = true;
|
|
2541
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2542
|
+
throw Object.assign(new Error("The prompt expired before it could be sent."), { code: "submission_expired", retryable: false });
|
|
2543
|
+
}
|
|
2523
2544
|
await control.sendMessage({
|
|
2524
2545
|
text: message,
|
|
2525
2546
|
attachments: fileParts,
|
|
2526
2547
|
...(requestAttachments.length ? { requestAttachments } : {}),
|
|
2527
2548
|
queuedWhileRunActive: composerOptions.queuedWhileRunActive ||
|
|
2528
2549
|
composerOptions.intent === "queued",
|
|
2550
|
+
...(options.submissionExpiresAt !== undefined
|
|
2551
|
+
? { queueWhileRunning: false }
|
|
2552
|
+
: {}),
|
|
2529
2553
|
interruptActiveRun: composerOptions.steer,
|
|
2530
2554
|
options: {
|
|
2531
2555
|
model,
|
|
@@ -2587,9 +2611,17 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
2587
2611
|
requestPendingSelectionClear,
|
|
2588
2612
|
]);
|
|
2589
2613
|
const submit = useCallback(async (text, files, references, composerOptions, options = {}) => {
|
|
2614
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2615
|
+
reportAgentChatSubmitResult(options.submitMessageId, false, "submission-expired");
|
|
2616
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2617
|
+
}
|
|
2590
2618
|
const submittedComposerOptions = captureQueuedRunState(composerOptions, isThreadRunning());
|
|
2591
2619
|
const release = await acquireSubmission();
|
|
2592
2620
|
if (!release) {
|
|
2621
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2622
|
+
reportAgentChatSubmitResult(options.submitMessageId, false, "submission-expired");
|
|
2623
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2624
|
+
}
|
|
2593
2625
|
if (isRestoring) {
|
|
2594
2626
|
try {
|
|
2595
2627
|
const selectedEngine = submittedComposerOptions.engine ?? props.selectedEngine;
|
|
@@ -2627,9 +2659,17 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
2627
2659
|
uploadedAttachments.requestAttachments.some((attachment) => attachment.data)) {
|
|
2628
2660
|
throw new Error(t("onboarding.fileStorage.title"));
|
|
2629
2661
|
}
|
|
2662
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2663
|
+
reportAgentChatSubmitResult(options.submitMessageId, false, "submission-expired");
|
|
2664
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2665
|
+
}
|
|
2630
2666
|
const requestAttachments = normalizeRequestAttachmentReferences(options.deferredRequestAttachments ??
|
|
2631
2667
|
(await uploadRequestAttachments(control, uploadedAttachments.requestAttachments)));
|
|
2632
2668
|
submittedComposerOptions.validateSubmissionScope?.();
|
|
2669
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2670
|
+
reportAgentChatSubmitResult(options.submitMessageId, false, "submission-expired");
|
|
2671
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2672
|
+
}
|
|
2633
2673
|
const selectionChangedDuringUpload = selectionRevision !== selectionRevisionRef.current;
|
|
2634
2674
|
const context = options.recoveryAction
|
|
2635
2675
|
? ""
|
|
@@ -2673,21 +2713,39 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
2673
2713
|
id: deferredOptions.deferredSubmissionId,
|
|
2674
2714
|
threadId,
|
|
2675
2715
|
text: appendAgentChatContextToMessage(text, context),
|
|
2716
|
+
...(typeof options.submissionExpiresAt === "number"
|
|
2717
|
+
? { submissionExpiresAt: options.submissionExpiresAt }
|
|
2718
|
+
: {}),
|
|
2676
2719
|
fileParts,
|
|
2677
2720
|
...(requestAttachments.length ? { requestAttachments } : {}),
|
|
2678
2721
|
references: [...references],
|
|
2679
2722
|
composerOptions: deferredComposerOptions,
|
|
2680
2723
|
options: deferredOptions,
|
|
2681
2724
|
};
|
|
2725
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2726
|
+
reportAgentChatSubmitResult(submitMessageId, false, "submission-expired");
|
|
2727
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2728
|
+
}
|
|
2682
2729
|
const submissions = await updateDeferredProviderSubmissions(threadId, (current) => current.some(({ id }) => id === submission.id)
|
|
2683
2730
|
? current
|
|
2684
2731
|
: [...current, submission]);
|
|
2732
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2733
|
+
pendingProviderSubmissionsRef.current =
|
|
2734
|
+
await updateDeferredProviderSubmissions(threadId, (current) => current.filter(({ id }) => id !== submission.id));
|
|
2735
|
+
setPendingProviderSubmissionVersion((version) => version + 1);
|
|
2736
|
+
reportAgentChatSubmitResult(submitMessageId, false, "submission-expired");
|
|
2737
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2738
|
+
}
|
|
2685
2739
|
pendingProviderSubmissionsRef.current = submissions;
|
|
2686
2740
|
setDeferredSubmissionsLoadedThread(threadId);
|
|
2687
2741
|
reportAgentChatSubmitResult(submitMessageId, true);
|
|
2688
2742
|
return { status: "submitted" };
|
|
2689
2743
|
}
|
|
2690
2744
|
catch (error) {
|
|
2745
|
+
if (isSubmissionExpiredError(error)) {
|
|
2746
|
+
reportAgentChatSubmitResult(options.submitMessageId, false, "submission-expired");
|
|
2747
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2748
|
+
}
|
|
2691
2749
|
reportAgentChatSubmitResult(options.submitMessageId, false, submitFailureReason(error));
|
|
2692
2750
|
dispatchSetupRequiredEvent(error, props.tabId, threadId);
|
|
2693
2751
|
throw error;
|
|
@@ -2712,10 +2770,18 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
2712
2770
|
}
|
|
2713
2771
|
}
|
|
2714
2772
|
try {
|
|
2773
|
+
if (isSubmissionExpired(options.submissionExpiresAt)) {
|
|
2774
|
+
reportAgentChatSubmitResult(options.submitMessageId, false, "submission-expired");
|
|
2775
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2776
|
+
}
|
|
2715
2777
|
await dispatch(text, files, references, submittedComposerOptions, options);
|
|
2716
2778
|
return { status: "submitted" };
|
|
2717
2779
|
}
|
|
2718
2780
|
catch (error) {
|
|
2781
|
+
if (isSubmissionExpiredError(error)) {
|
|
2782
|
+
reportAgentChatSubmitResult(options.submitMessageId, false, "submission-expired");
|
|
2783
|
+
return { status: "rejected", reason: "submission-expired" };
|
|
2784
|
+
}
|
|
2719
2785
|
reportAgentChatSubmitResult(options.submitMessageId, false, submitFailureReason(error));
|
|
2720
2786
|
dispatchSetupRequiredEvent(error, props.tabId, threadId);
|
|
2721
2787
|
throw error;
|
|
@@ -3011,6 +3077,13 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
3011
3077
|
let claimToken;
|
|
3012
3078
|
let claimRenewalTimer;
|
|
3013
3079
|
try {
|
|
3080
|
+
if (isSubmissionExpired(submission.submissionExpiresAt)) {
|
|
3081
|
+
const submissions = await updateDeferredProviderSubmissions(threadId, (current) => current.filter(({ id }) => id !== submission.id));
|
|
3082
|
+
pendingProviderSubmissionsRef.current = submissions;
|
|
3083
|
+
reportAgentChatSubmitResult(submission.id, false, "submission-expired");
|
|
3084
|
+
setPendingProviderSubmissionVersion((version) => version + 1);
|
|
3085
|
+
return;
|
|
3086
|
+
}
|
|
3014
3087
|
release = await acquireSubmission();
|
|
3015
3088
|
if (!release) {
|
|
3016
3089
|
if (active)
|
|
@@ -3060,6 +3133,13 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
3060
3133
|
scheduleProviderSubmissionRetry(Math.max(1000, Math.min(10_000, waitMs)));
|
|
3061
3134
|
return;
|
|
3062
3135
|
}
|
|
3136
|
+
if (isSubmissionExpired(currentSubmission.submissionExpiresAt)) {
|
|
3137
|
+
const submissions = await updateDeferredProviderSubmissions(threadId, (current) => current.filter(({ id }) => id !== submission.id));
|
|
3138
|
+
pendingProviderSubmissionsRef.current = submissions;
|
|
3139
|
+
reportAgentChatSubmitResult(submission.id, false, "submission-expired");
|
|
3140
|
+
setPendingProviderSubmissionVersion((version) => version + 1);
|
|
3141
|
+
return;
|
|
3142
|
+
}
|
|
3063
3143
|
claimRenewalTimer = window.setInterval(() => {
|
|
3064
3144
|
void updateDeferredProviderSubmissions(threadId, (current) => current.map((candidate) => candidate.id === submission.id &&
|
|
3065
3145
|
candidate.claim?.token === claimToken
|
|
@@ -3089,6 +3169,18 @@ const AgentKitAssistantChatBody = forwardRef(function AgentKitAssistantChatBody(
|
|
|
3089
3169
|
setPendingProviderSubmissionVersion((version) => version + 1);
|
|
3090
3170
|
}
|
|
3091
3171
|
catch (error) {
|
|
3172
|
+
if (isSubmissionExpiredError(error)) {
|
|
3173
|
+
const submissions = await updateDeferredProviderSubmissions(threadId, (current) => current.filter((candidate) => candidate.id !== submission.id ||
|
|
3174
|
+
!claimToken ||
|
|
3175
|
+
candidate.claim?.token !== claimToken));
|
|
3176
|
+
pendingProviderSubmissionsRef.current = submissions;
|
|
3177
|
+
reportAgentChatSubmitResult(submission.id, false, "submission-expired");
|
|
3178
|
+
if (active) {
|
|
3179
|
+
setDeferredProviderSubmissionFailureId(null);
|
|
3180
|
+
setPendingProviderSubmissionVersion((version) => version + 1);
|
|
3181
|
+
}
|
|
3182
|
+
return;
|
|
3183
|
+
}
|
|
3092
3184
|
let snapshotReadFailed = false;
|
|
3093
3185
|
const latestThread = await props
|
|
3094
3186
|
.getThreadSnapshot(threadId)
|
|
@@ -4641,6 +4733,9 @@ async function attachmentToFile(attachment) {
|
|
|
4641
4733
|
const ATTACHMENT_UNREADABLE_SUBMIT_REASON = "attachment-unreadable";
|
|
4642
4734
|
function submitFailureReason(error) {
|
|
4643
4735
|
const record = asRecord(error);
|
|
4736
|
+
if (record?.code === "submission_expired") {
|
|
4737
|
+
return "submission-expired";
|
|
4738
|
+
}
|
|
4644
4739
|
if (record?.code === ATTACHMENT_UNREADABLE_SUBMIT_REASON) {
|
|
4645
4740
|
return ATTACHMENT_UNREADABLE_SUBMIT_REASON;
|
|
4646
4741
|
}
|