@agent-native/core 0.107.0 → 0.107.2
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/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +16 -0
- package/corpus/core/docs/content/integrations.mdx +27 -27
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/artifact-response.ts +32 -10
- package/corpus/core/src/agent/production-agent.ts +19 -0
- package/corpus/core/src/agent/run-store.ts +98 -2
- package/corpus/core/src/client/AssistantChat.tsx +13 -0
- package/corpus/core/src/client/CommandMenu.tsx +5 -0
- package/corpus/core/src/client/active-run-state.ts +34 -0
- package/corpus/core/src/client/agent-chat-adapter.ts +4 -0
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +41 -11
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +27 -9
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +45 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +30 -9
- package/corpus/core/src/client/use-agent-chat-home-handoff.ts +2 -2
- package/corpus/core/src/integrations/a2a-continuation-processor.ts +107 -3
- package/corpus/core/src/integrations/pending-tasks-store.ts +98 -1
- package/corpus/core/src/integrations/plugin.ts +129 -4
- package/corpus/core/src/integrations/webhook-handler.ts +339 -36
- package/corpus/core/src/localization/default-messages.ts +4 -1
- package/corpus/core/src/secrets/register-framework-secrets.ts +28 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +122 -9
- package/corpus/core/src/vite/client.ts +24 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -21
- package/corpus/templates/analytics/AGENTS.md +8 -0
- package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +1 -1
- package/corpus/templates/analytics/actions/update-dashboard.ts +6 -2
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +35 -7
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +1 -3
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +11 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/extension-slot.ts +11 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +27 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extension-boxes.md +6 -0
- package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +8 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/assets/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/brain/app/hooks/use-navigation-state.ts +6 -1
- package/corpus/templates/brain/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/calendar/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +4 -1
- package/corpus/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
- package/corpus/templates/clips/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/content/actions/_content-space-access.ts +45 -2
- package/corpus/templates/content/actions/create-content-database.ts +41 -7
- package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/content/app/root.tsx +1 -10
- package/corpus/templates/content/changelog/2026-07-17-creating-a-database-now-completes-reliably-in-hosted-workspa.md +6 -0
- package/corpus/templates/content/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +4 -1
- package/corpus/templates/dispatch/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +2 -4
- package/corpus/templates/forms/app/components/ui/popover.tsx +25 -1
- package/corpus/templates/forms/app/hooks/use-navigation-state.ts +6 -1
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +13 -10
- package/corpus/templates/forms/app/root.tsx +6 -1
- package/corpus/templates/forms/changelog/2026-07-17-form-builder-popovers-stay-within-the-viewport.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-17-form-editor-loading-matches-current-sidebar-free-layout.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/mail/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +14 -3
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +8 -1
- package/corpus/templates/plan/app/root.tsx +0 -2
- package/corpus/templates/plan/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/slides/app/context/DeckContext.tsx +23 -23
- package/corpus/templates/slides/changelog/2026-07-17-duplicated-slides-now-stay-in-the-deck.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/tasks/app/components/layout/Layout.tsx +2 -13
- package/corpus/templates/tasks/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it.md +6 -0
- package/dist/a2a/artifact-response.d.ts +5 -1
- package/dist/a2a/artifact-response.d.ts.map +1 -1
- package/dist/a2a/artifact-response.js +18 -12
- package/dist/a2a/artifact-response.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +13 -1
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-store.d.ts +17 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +84 -2
- package/dist/agent/run-store.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +10 -1
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +4 -0
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/active-run-state.d.ts +7 -0
- package/dist/client/active-run-state.d.ts.map +1 -1
- package/dist/client/active-run-state.js +28 -0
- package/dist/client/active-run-state.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +4 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.js +27 -8
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +4 -2
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.d.ts +6 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +33 -0
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +15 -12
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/use-agent-chat-home-handoff.d.ts +1 -1
- package/dist/client/use-agent-chat-home-handoff.d.ts.map +1 -1
- package/dist/client/use-agent-chat-home-handoff.js +1 -1
- package/dist/client/use-agent-chat-home-handoff.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/integrations/a2a-continuation-processor.js +62 -5
- package/dist/integrations/a2a-continuation-processor.js.map +1 -1
- package/dist/integrations/pending-tasks-store.d.ts +3 -0
- package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-store.js +75 -1
- package/dist/integrations/pending-tasks-store.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +81 -5
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +23 -2
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +257 -35
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/localization/default-messages.d.ts +2 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +3 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +5 -5
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
- package/dist/secrets/register-framework-secrets.js +25 -0
- package/dist/secrets/register-framework-secrets.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat-plugin.d.ts +6 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +94 -7
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/templates/chat/app/hooks/use-navigation-state.ts +4 -1
- package/dist/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +20 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/integrations.mdx +27 -27
- package/package.json +1 -1
- package/src/templates/chat/app/hooks/use-navigation-state.ts +4 -1
- package/src/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/integrations/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/integrations/plugin.ts"],"names":[],"mappings":"AA6IA,OAAO,KAAK,EAEV,yBAAyB,EAK1B,MAAM,YAAY,CAAC;AAYpB,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA4F9D,KAAK,yBAAyB,GAAG;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAgCF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,yBAAyB,GAClC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsFlC;AA+ND;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CA6wEhB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,gBAA6B,CAAC"}
|
|
@@ -31,7 +31,7 @@ import { disconnectIntegrationInstallation, listIntegrationInstallations, resolv
|
|
|
31
31
|
import { forgetIntegrationMemory, integrationMemoryActions, listIntegrationMemory, rememberForIntegrationScope, } from "./integration-memory.js";
|
|
32
32
|
import { extractBearerToken, signInternalToken, verifyInternalToken, } from "./internal-token.js";
|
|
33
33
|
import { startPendingTasksRetryJob } from "./pending-tasks-retry-job.js";
|
|
34
|
-
import { claimPendingTask, getNextPendingTaskIdForThread, insertPendingTask, isDuplicateEventError, MAX_PENDING_TASK_ATTEMPTS, markTaskCompleted, markTaskFailed, markTaskRetryable, } from "./pending-tasks-store.js";
|
|
34
|
+
import { claimPendingTask, failTaskDeliveryTransition, getNextPendingTaskIdForThread, insertPendingTask, isDuplicateEventError, MAX_PENDING_TASK_ATTEMPTS, markTaskCompleted, markTaskDeliveryRetryable, markTaskFailed, markTaskRetryable, stageTaskDeliveryPayload, } from "./pending-tasks-store.js";
|
|
35
35
|
import { claimNextComputerCommand, claimNextRemoteCommand, enqueueComputerCommand, enqueueRemoteCommand as enqueueRemoteCommandRow, isRemoteCommandKind, listRemoteCommandsForOwner, updateRemoteCommandResult, } from "./remote-commands-store.js";
|
|
36
36
|
import { authenticateRemoteDeviceToken, createRemoteDevice, getRemoteComputerCapabilities, getRemoteDeviceForOwner, listRemoteDevicesForOwner, revokeRemoteDeviceForOwner, toPublicRemoteDevice, unregisterRemoteDevice, updateRemoteDeviceDetails, } from "./remote-devices-store.js";
|
|
37
37
|
import { listRemotePushNotificationsForOwner, listRemotePushRegistrationsForOwner, queueRemotePushNotifications, toPublicRemotePushRegistration, unregisterRemotePushRegistrationForOwner, upsertRemotePushRegistration, } from "./remote-push-store.js";
|
|
@@ -42,7 +42,7 @@ import { buildSlackAgentManifest } from "./slack-manifest.js";
|
|
|
42
42
|
import { assertSlackInstallAccess, buildSlackAuthorizeUrl, exchangeSlackOAuthCode, slackOAuthResponseToInstallation, testSlackAuth, } from "./slack-oauth.js";
|
|
43
43
|
import { getTaskQueueStats } from "./task-queue-stats.js";
|
|
44
44
|
import { listIntegrationUsageBudgets, saveIntegrationUsageBudget, } from "./usage-budget-store.js";
|
|
45
|
-
import { handleWebhook, processIntegrationTask } from "./webhook-handler.js";
|
|
45
|
+
import { handleWebhook, processIntegrationTask, recordIntegrationResponseDelivery, } from "./webhook-handler.js";
|
|
46
46
|
let a2aContinuationRetryInterval = null;
|
|
47
47
|
function startA2AContinuationRetryJob(adapters) {
|
|
48
48
|
if (a2aContinuationRetryInterval)
|
|
@@ -1285,6 +1285,9 @@ export function createIntegrationsPlugin(options) {
|
|
|
1285
1285
|
setResponseStatus(event, 200);
|
|
1286
1286
|
return { ok: true, skipped: "already-claimed-or-missing" };
|
|
1287
1287
|
}
|
|
1288
|
+
let deliveryRetryTransitionStarted = false;
|
|
1289
|
+
let deliveryRetryRecovery;
|
|
1290
|
+
let confirmedDeliveryRetryPayload;
|
|
1288
1291
|
try {
|
|
1289
1292
|
const adapter = adapterMap.get(task.platform);
|
|
1290
1293
|
if (!adapter) {
|
|
@@ -1292,7 +1295,7 @@ export function createIntegrationsPlugin(options) {
|
|
|
1292
1295
|
setResponseStatus(event, 404);
|
|
1293
1296
|
return { error: "Unknown platform" };
|
|
1294
1297
|
}
|
|
1295
|
-
await runWithRequestContext({
|
|
1298
|
+
const processingResult = await runWithRequestContext({
|
|
1296
1299
|
userEmail: task.ownerEmail,
|
|
1297
1300
|
...(task.orgId ? { orgId: task.orgId } : {}),
|
|
1298
1301
|
isIntegrationCaller: true,
|
|
@@ -1314,8 +1317,40 @@ export function createIntegrationsPlugin(options) {
|
|
|
1314
1317
|
}));
|
|
1315
1318
|
return;
|
|
1316
1319
|
}
|
|
1320
|
+
if (taskPayload.kind === "response-delivery") {
|
|
1321
|
+
let receipt = taskPayload.deliveryReceipt;
|
|
1322
|
+
if (!receipt) {
|
|
1323
|
+
receipt = await adapter.sendResponse(taskPayload.message, taskPayload.incoming, {
|
|
1324
|
+
...(taskPayload.placeholderRef
|
|
1325
|
+
? { placeholderRef: taskPayload.placeholderRef }
|
|
1326
|
+
: {}),
|
|
1327
|
+
});
|
|
1328
|
+
}
|
|
1329
|
+
if (receipt?.status !== "delivered") {
|
|
1330
|
+
throw new Error(`${task.platform} response completed without delivery proof`);
|
|
1331
|
+
}
|
|
1332
|
+
const deliveredPayload = taskPayload.deliveryReceipt
|
|
1333
|
+
? taskPayload
|
|
1334
|
+
: {
|
|
1335
|
+
...taskPayload,
|
|
1336
|
+
deliveryReceipt: receipt,
|
|
1337
|
+
deliveredAt: new Date().toISOString(),
|
|
1338
|
+
};
|
|
1339
|
+
confirmedDeliveryRetryPayload =
|
|
1340
|
+
JSON.stringify(deliveredPayload);
|
|
1341
|
+
if (!taskPayload.deliveryReceipt) {
|
|
1342
|
+
deliveryRetryRecovery = {
|
|
1343
|
+
payload: confirmedDeliveryRetryPayload,
|
|
1344
|
+
errorMessage: "Provider delivery was confirmed but its receipt checkpoint failed",
|
|
1345
|
+
};
|
|
1346
|
+
await stageTaskDeliveryPayload(task.id, deliveryRetryRecovery.payload);
|
|
1347
|
+
deliveryRetryRecovery = undefined;
|
|
1348
|
+
}
|
|
1349
|
+
await recordIntegrationResponseDelivery(deliveredPayload, receipt);
|
|
1350
|
+
return;
|
|
1351
|
+
}
|
|
1317
1352
|
const resources = await loadResourcesForPrompt(task.ownerEmail, true, options?.appId, task.orgId);
|
|
1318
|
-
await processIntegrationTask(task, {
|
|
1353
|
+
const result = await processIntegrationTask(task, {
|
|
1319
1354
|
adapter,
|
|
1320
1355
|
systemPrompt: baseSystemPrompt + resources,
|
|
1321
1356
|
actions,
|
|
@@ -1326,7 +1361,17 @@ export function createIntegrationsPlugin(options) {
|
|
|
1326
1361
|
ownerEmail: task.ownerEmail,
|
|
1327
1362
|
appId: options?.appId,
|
|
1328
1363
|
});
|
|
1364
|
+
if (result?.status === "delivery-pending") {
|
|
1365
|
+
deliveryRetryTransitionStarted = true;
|
|
1366
|
+
await markTaskDeliveryRetryable(task.id, JSON.stringify(result.payload), result.errorMessage);
|
|
1367
|
+
return "delivery-retry";
|
|
1368
|
+
}
|
|
1369
|
+
return "completed";
|
|
1329
1370
|
});
|
|
1371
|
+
if (processingResult === "delivery-retry") {
|
|
1372
|
+
setResponseStatus(event, 202);
|
|
1373
|
+
return { ok: true, taskId, retrying: "response-delivery" };
|
|
1374
|
+
}
|
|
1330
1375
|
await markTaskCompleted(taskId);
|
|
1331
1376
|
const nextTaskId = await getNextPendingTaskIdForThread(task.platform, task.externalThreadId);
|
|
1332
1377
|
if (nextTaskId) {
|
|
@@ -1354,7 +1399,38 @@ export function createIntegrationsPlugin(options) {
|
|
|
1354
1399
|
const errorMessage = err?.message
|
|
1355
1400
|
? String(err.message).slice(0, 1000)
|
|
1356
1401
|
: "processor failed";
|
|
1357
|
-
if (
|
|
1402
|
+
if (deliveryRetryRecovery) {
|
|
1403
|
+
try {
|
|
1404
|
+
await markTaskDeliveryRetryable(taskId, deliveryRetryRecovery.payload, `${deliveryRetryRecovery.errorMessage}: ${errorMessage}`);
|
|
1405
|
+
setResponseStatus(event, 202);
|
|
1406
|
+
return { ok: true, taskId, retrying: "response-delivery" };
|
|
1407
|
+
}
|
|
1408
|
+
catch (transitionError) {
|
|
1409
|
+
const transitionMessage = transitionError instanceof Error
|
|
1410
|
+
? transitionError.message
|
|
1411
|
+
: String(transitionError);
|
|
1412
|
+
await failTaskDeliveryTransition(taskId, `Could not safely checkpoint the delivery receipt: ${transitionMessage}`).catch((failureTransitionError) => {
|
|
1413
|
+
console.error("[integrations] Failed to contain delivery receipt transition failure:", failureTransitionError);
|
|
1414
|
+
});
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
else if (confirmedDeliveryRetryPayload) {
|
|
1418
|
+
try {
|
|
1419
|
+
await markTaskDeliveryRetryable(taskId, confirmedDeliveryRetryPayload, `Provider delivery was confirmed but history persistence failed: ${errorMessage}`);
|
|
1420
|
+
console.error("[integrations] process-task failure:", err);
|
|
1421
|
+
setResponseStatus(event, 202);
|
|
1422
|
+
return { ok: true, taskId, retrying: "response-delivery" };
|
|
1423
|
+
}
|
|
1424
|
+
catch (transitionError) {
|
|
1425
|
+
console.error("[integrations] Failed to requeue confirmed delivery history:", transitionError);
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
else if (deliveryRetryTransitionStarted) {
|
|
1429
|
+
await failTaskDeliveryTransition(taskId, `Could not safely checkpoint the delivery retry: ${errorMessage}`).catch((transitionError) => {
|
|
1430
|
+
console.error("[integrations] Failed to contain delivery retry transition failure:", transitionError);
|
|
1431
|
+
});
|
|
1432
|
+
}
|
|
1433
|
+
else if (task.attempts >= MAX_PENDING_TASK_ATTEMPTS) {
|
|
1358
1434
|
await markTaskFailed(taskId, errorMessage);
|
|
1359
1435
|
}
|
|
1360
1436
|
else {
|