@agent-native/core 0.122.2 → 0.122.3
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 +2 -2
- package/corpus/core/CHANGELOG.md +6 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/run-loop-with-resume.ts +12 -0
- package/corpus/core/src/integrations/a2a-continuation-processor.ts +182 -0
- package/corpus/core/src/integrations/a2a-continuations-store.ts +122 -12
- package/corpus/core/src/integrations/integration-campaign-recovery.ts +127 -0
- package/corpus/core/src/integrations/integration-campaigns-store.ts +1039 -0
- package/corpus/core/src/integrations/integration-durable-dispatch.ts +28 -3
- package/corpus/core/src/integrations/pending-tasks-retry-job.ts +8 -0
- package/corpus/core/src/integrations/plugin.ts +453 -35
- package/corpus/core/src/integrations/webhook-handler.ts +469 -11
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +7 -3
- package/corpus/templates/content/app/components/editor/body-hydration.ts +10 -0
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +1 -0
- package/corpus/templates/content/app/root.tsx +12 -1
- package/corpus/templates/content/changelog/2026-07-23-new-pages-open-immediately-while-slow-network-work-continues.md +6 -0
- package/corpus/templates/content/changelog/2026-07-25-database-preview-actions-open-reliably.md +6 -0
- package/corpus/templates/content/e2e/playwright.config.ts +1 -1
- package/dist/agent/run-loop-with-resume.d.ts +7 -1
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +7 -0
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/integrations/a2a-continuation-processor.d.ts +14 -0
- package/dist/integrations/a2a-continuation-processor.d.ts.map +1 -1
- package/dist/integrations/a2a-continuation-processor.js +134 -1
- package/dist/integrations/a2a-continuation-processor.js.map +1 -1
- package/dist/integrations/a2a-continuations-store.d.ts +23 -0
- package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
- package/dist/integrations/a2a-continuations-store.js +99 -13
- package/dist/integrations/a2a-continuations-store.js.map +1 -1
- package/dist/integrations/integration-campaign-recovery.d.ts +16 -0
- package/dist/integrations/integration-campaign-recovery.d.ts.map +1 -0
- package/dist/integrations/integration-campaign-recovery.js +94 -0
- package/dist/integrations/integration-campaign-recovery.js.map +1 -0
- package/dist/integrations/integration-campaigns-store.d.ts +121 -0
- package/dist/integrations/integration-campaigns-store.d.ts.map +1 -0
- package/dist/integrations/integration-campaigns-store.js +784 -0
- package/dist/integrations/integration-campaigns-store.js.map +1 -0
- package/dist/integrations/integration-durable-dispatch.d.ts +3 -0
- package/dist/integrations/integration-durable-dispatch.d.ts.map +1 -1
- package/dist/integrations/integration-durable-dispatch.js +22 -3
- package/dist/integrations/integration-durable-dispatch.js.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.js +6 -0
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +325 -18
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +16 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +368 -13
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/package.json +1 -1
- package/src/agent/run-loop-with-resume.ts +12 -0
- package/src/integrations/a2a-continuation-processor.ts +182 -0
- package/src/integrations/a2a-continuations-store.ts +122 -12
- package/src/integrations/integration-campaign-recovery.ts +127 -0
- package/src/integrations/integration-campaigns-store.ts +1039 -0
- package/src/integrations/integration-durable-dispatch.ts +28 -3
- package/src/integrations/pending-tasks-retry-job.ts +8 -0
- package/src/integrations/plugin.ts +453 -35
- package/src/integrations/webhook-handler.ts +469 -11
|
@@ -30,6 +30,9 @@ export type IntegrationDispatchOutcome =
|
|
|
30
30
|
| "portable-unconfirmed"
|
|
31
31
|
| "failed";
|
|
32
32
|
|
|
33
|
+
export const INTEGRATION_CAMPAIGN_PROCESSOR_FIELD =
|
|
34
|
+
"__integrationCampaignContinuation";
|
|
35
|
+
|
|
33
36
|
export interface IntegrationDispatchTaskScope {
|
|
34
37
|
platform: string;
|
|
35
38
|
externalThreadId: string;
|
|
@@ -136,9 +139,19 @@ export async function dispatchPendingIntegrationTask(input: {
|
|
|
136
139
|
event?: unknown;
|
|
137
140
|
baseUrl?: string;
|
|
138
141
|
portableSettleMs?: number;
|
|
142
|
+
campaignContinuation?: boolean;
|
|
143
|
+
allowPortableConfirmedReceiptReconciliation?: boolean;
|
|
139
144
|
}): Promise<IntegrationDispatchOutcome> {
|
|
140
145
|
const startedAt = Date.now();
|
|
141
146
|
const durable = isIntegrationDurableDispatchEnabledForTask(input.task);
|
|
147
|
+
if (
|
|
148
|
+
input.campaignContinuation &&
|
|
149
|
+
!durable &&
|
|
150
|
+
!input.allowPortableConfirmedReceiptReconciliation
|
|
151
|
+
) {
|
|
152
|
+
logDispatch(input.taskId, "failed", startedAt);
|
|
153
|
+
return "failed";
|
|
154
|
+
}
|
|
142
155
|
if (durable) {
|
|
143
156
|
const backgroundPath = resolveDurableBackgroundDispatchPath(
|
|
144
157
|
INTEGRATION_PROCESS_TASK_PATH,
|
|
@@ -152,11 +165,16 @@ export async function dispatchPendingIntegrationTask(input: {
|
|
|
152
165
|
body: {
|
|
153
166
|
[AGENT_BACKGROUND_PROCESSOR_FIELD]:
|
|
154
167
|
AGENT_BACKGROUND_PROCESSOR_INTEGRATION,
|
|
168
|
+
...(input.campaignContinuation
|
|
169
|
+
? { [INTEGRATION_CAMPAIGN_PROCESSOR_FIELD]: true }
|
|
170
|
+
: {}),
|
|
155
171
|
},
|
|
156
172
|
awaitResponse: true,
|
|
157
173
|
responseTimeoutMs: 2_000,
|
|
158
174
|
});
|
|
159
|
-
|
|
175
|
+
if (!input.campaignContinuation) {
|
|
176
|
+
await recordDispatch(input.taskId, "background-acknowledged");
|
|
177
|
+
}
|
|
160
178
|
logDispatch(input.taskId, "background-acknowledged", startedAt);
|
|
161
179
|
return "background-acknowledged";
|
|
162
180
|
} catch (error) {
|
|
@@ -173,9 +191,14 @@ export async function dispatchPendingIntegrationTask(input: {
|
|
|
173
191
|
baseUrl: input.baseUrl,
|
|
174
192
|
path: INTEGRATION_PROCESS_TASK_PATH,
|
|
175
193
|
taskId: input.taskId,
|
|
194
|
+
body: input.campaignContinuation
|
|
195
|
+
? { [INTEGRATION_CAMPAIGN_PROCESSOR_FIELD]: true }
|
|
196
|
+
: undefined,
|
|
176
197
|
settleMs: input.portableSettleMs,
|
|
177
198
|
});
|
|
178
|
-
|
|
199
|
+
if (!input.campaignContinuation) {
|
|
200
|
+
await recordDispatch(input.taskId, "portable-unconfirmed");
|
|
201
|
+
}
|
|
179
202
|
logDispatch(input.taskId, "portable-unconfirmed", startedAt);
|
|
180
203
|
return "portable-unconfirmed";
|
|
181
204
|
} catch (error) {
|
|
@@ -183,7 +206,9 @@ export async function dispatchPendingIntegrationTask(input: {
|
|
|
183
206
|
`[integrations] Portable dispatch failed for ${input.taskId}:`,
|
|
184
207
|
error,
|
|
185
208
|
);
|
|
186
|
-
|
|
209
|
+
if (!input.campaignContinuation) {
|
|
210
|
+
await recordDispatch(input.taskId, "failed");
|
|
211
|
+
}
|
|
187
212
|
logDispatch(input.taskId, "failed", startedAt);
|
|
188
213
|
return "failed";
|
|
189
214
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getDbExec } from "../db/client.js";
|
|
2
|
+
import { hasActiveIntegrationCampaign } from "./integration-campaigns-store.js";
|
|
2
3
|
import {
|
|
3
4
|
configuredIntegrationDurableDispatchScopes,
|
|
4
5
|
dispatchPendingIntegrationTask,
|
|
@@ -231,6 +232,13 @@ export async function retryStuckPendingTasks(
|
|
|
231
232
|
|
|
232
233
|
for (const row of stuckRows) {
|
|
233
234
|
try {
|
|
235
|
+
if (
|
|
236
|
+
row.status === "processing" &&
|
|
237
|
+
(await hasActiveIntegrationCampaign(row.id))
|
|
238
|
+
) {
|
|
239
|
+
result.skipped += 1;
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
234
242
|
// Cap retries — mark failed and move on so the row stops bouncing
|
|
235
243
|
// between pending and processing forever.
|
|
236
244
|
if (row.attempts >= MAX_PENDING_TASK_ATTEMPTS) {
|