@agent-native/toolkit 0.226.0 → 0.226.1-nightly-20261107004051

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.
Files changed (46) hide show
  1. package/dist/app/agentkit/react/components.d.ts +11 -9
  2. package/dist/app/agentkit/react/components.d.ts.map +1 -1
  3. package/dist/app/agentkit/react/components.js +115 -111
  4. package/dist/app/agentkit/react/components.js.map +1 -1
  5. package/dist/app/agentkit/react/stop-button.js +5 -5
  6. package/dist/app/agentkit/react/stop-button.js.map +1 -1
  7. package/dist/app/agentkit/react/styles.css +19 -48
  8. package/dist/app/auth/AuthPage.d.ts.map +1 -1
  9. package/dist/app/auth/AuthPage.js +7 -5
  10. package/dist/app/auth/AuthPage.js.map +1 -1
  11. package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
  12. package/dist/app/chat/AgentKitAssistantChat.js +7 -2
  13. package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
  14. package/dist/app/integrations/IntegrationDetailPage.d.ts.map +1 -1
  15. package/dist/app/integrations/IntegrationDetailPage.js +43 -1
  16. package/dist/app/integrations/IntegrationDetailPage.js.map +1 -1
  17. package/dist/app/integrations/IntegrationsPage.d.ts.map +1 -1
  18. package/dist/app/integrations/IntegrationsPage.js +16 -7
  19. package/dist/app/integrations/IntegrationsPage.js.map +1 -1
  20. package/dist/app/integrations/connected-server-id.d.ts +17 -0
  21. package/dist/app/integrations/connected-server-id.d.ts.map +1 -0
  22. package/dist/app/integrations/connected-server-id.js +26 -0
  23. package/dist/app/integrations/connected-server-id.js.map +1 -0
  24. package/dist/composer/TiptapComposer.d.ts +5 -3
  25. package/dist/composer/TiptapComposer.d.ts.map +1 -1
  26. package/dist/composer/TiptapComposer.js +1 -1
  27. package/dist/composer/TiptapComposer.js.map +1 -1
  28. package/package.json +4 -4
  29. package/src/app/agentkit/react/components.interaction.spec.tsx +112 -0
  30. package/src/app/agentkit/react/components.tsx +178 -192
  31. package/src/app/agentkit/react/lifecycle.spec.tsx +5 -16
  32. package/src/app/agentkit/react/stop-button.spec.tsx +1 -1
  33. package/src/app/agentkit/react/stop-button.tsx +5 -5
  34. package/src/app/agentkit/react/styles.css +19 -48
  35. package/src/app/agentkit/react/work-handoff.spec.tsx +202 -69
  36. package/src/app/auth/AuthPage.interaction.spec.tsx +17 -1
  37. package/src/app/auth/AuthPage.tsx +12 -4
  38. package/src/app/chat/AgentKitAssistantChat.tsx +6 -2
  39. package/src/app/integrations/IntegrationDetailPage.spec.tsx +30 -0
  40. package/src/app/integrations/IntegrationDetailPage.tsx +85 -1
  41. package/src/app/integrations/IntegrationsPage.spec.tsx +74 -0
  42. package/src/app/integrations/IntegrationsPage.tsx +47 -20
  43. package/src/app/integrations/connected-server-id.ts +34 -0
  44. package/src/composer/TiptapComposer.spec.ts +7 -7
  45. package/src/composer/TiptapComposer.tsx +12 -13
  46. package/src/composer/TiptapComposer.voice-toolbar.spec.tsx +24 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/toolkit",
3
- "version": "0.226.0",
3
+ "version": "0.226.1-nightly-20261107004051",
4
4
  "description": "Reusable app-building UI and helpers for Agent-Native apps.",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -716,7 +716,7 @@
716
716
  "y-protocols": "^1.0.7",
717
717
  "yjs": "^13.6.33",
718
718
  "zod": "^4.3.6",
719
- "@agent-native/agentkit": "^0.226.0"
719
+ "@agent-native/agentkit": "^0.226.1-nightly-20261107004051"
720
720
  },
721
721
  "devDependencies": {
722
722
  "@excalidraw/excalidraw": "0.18.1",
@@ -740,10 +740,10 @@
740
740
  "typescript-7": "npm:typescript@^7.0.2",
741
741
  "vite": "8.1.0",
742
742
  "vitest": "^4.1.5",
743
- "@agent-native/core": "^0.226.0"
743
+ "@agent-native/core": "^0.226.1-nightly-20261107004051"
744
744
  },
745
745
  "peerDependencies": {
746
- "@agent-native/core": ">=0.226.0-0",
746
+ "@agent-native/core": "0.226.1-nightly-20261107004051",
747
747
  "@excalidraw/excalidraw": ">=0.18",
748
748
  "@excalidraw/mermaid-to-excalidraw": ">=2",
749
749
  "@tanstack/react-query": "^5.99.2",
@@ -1203,6 +1203,118 @@ describe("AgentKitChat interactions", () => {
1203
1203
  }
1204
1204
  });
1205
1205
 
1206
+ it("drops a refused Continue once a newer run carries the thread", async () => {
1207
+ let releaseNewerRun!: () => void;
1208
+ const newerRunHeld = new Promise<void>((resolve) => {
1209
+ releaseNewerRun = resolve;
1210
+ });
1211
+ let started = 0;
1212
+ const transport: AgentTransport = {
1213
+ async startRun() {
1214
+ started += 1;
1215
+ return { runId: started === 1 ? "run-crashed" : "run-newer" };
1216
+ },
1217
+ async *subscribeToRun(input) {
1218
+ const base = {
1219
+ threadId: "thread-continue-superseded",
1220
+ runId: input.runId,
1221
+ occurredAt: `2026-10-05T00:00:0${started}.000Z`,
1222
+ };
1223
+ yield {
1224
+ ...base,
1225
+ id: `${input.runId}-1`,
1226
+ sequence: 1,
1227
+ type: "run.started",
1228
+ };
1229
+ if (input.runId === "run-newer") {
1230
+ await newerRunHeld;
1231
+ return;
1232
+ }
1233
+ yield {
1234
+ ...base,
1235
+ id: `${input.runId}-2`,
1236
+ sequence: 2,
1237
+ type: "run.failed",
1238
+ error: {
1239
+ code: "stale_run",
1240
+ message: "The agent stopped before it could finish.",
1241
+ retryable: true,
1242
+ },
1243
+ };
1244
+ },
1245
+ async continueRun() {
1246
+ throw new Error("Run already in progress for this thread");
1247
+ },
1248
+ async cancelRun() {},
1249
+ };
1250
+ const client = new AgentKitClient({ transport });
1251
+ const first = await client.sendMessage({
1252
+ threadId: "thread-continue-superseded",
1253
+ text: "Remove the CDN links",
1254
+ });
1255
+ await first.completed.catch(() => undefined);
1256
+ const container = document.createElement("div");
1257
+ document.body.appendChild(container);
1258
+ const root = createRoot(container);
1259
+ const actEnvironment = globalThis as typeof globalThis & {
1260
+ IS_REACT_ACT_ENVIRONMENT?: boolean;
1261
+ };
1262
+ const previousActEnvironment = actEnvironment.IS_REACT_ACT_ENVIRONMENT;
1263
+ actEnvironment.IS_REACT_ACT_ENVIRONMENT = true;
1264
+ const refused = () =>
1265
+ container.textContent?.includes("can't be continued") ?? false;
1266
+
1267
+ try {
1268
+ await act(async () => {
1269
+ root.render(
1270
+ <AgentKitProvider
1271
+ controller={client}
1272
+ threadId="thread-continue-superseded"
1273
+ >
1274
+ <AgentKitChat composer={false} />
1275
+ </AgentKitProvider>,
1276
+ );
1277
+ await Promise.resolve();
1278
+ });
1279
+ await act(async () => {
1280
+ [
1281
+ ...container.querySelectorAll<HTMLButtonElement>(
1282
+ ".agentkit-run-failure button",
1283
+ ),
1284
+ ]
1285
+ .find((button) => button.textContent === "Continue")
1286
+ ?.click();
1287
+ await new Promise((resolve) => setTimeout(resolve, 0));
1288
+ });
1289
+ expect(refused()).toBe(true);
1290
+
1291
+ await act(async () => {
1292
+ await client.sendMessage({
1293
+ threadId: "thread-continue-superseded",
1294
+ text: "Keep going",
1295
+ });
1296
+ await new Promise((resolve) => setTimeout(resolve, 0));
1297
+ });
1298
+
1299
+ expect(
1300
+ client.getThread("thread-continue-superseded").activeRunIds,
1301
+ ).toEqual(["run-newer"]);
1302
+ expect(refused()).toBe(false);
1303
+ } finally {
1304
+ releaseNewerRun();
1305
+ await act(async () => {
1306
+ root.unmount();
1307
+ await Promise.resolve();
1308
+ });
1309
+ container.remove();
1310
+ if (previousActEnvironment === undefined) {
1311
+ delete actEnvironment.IS_REACT_ACT_ENVIRONMENT;
1312
+ } else {
1313
+ actEnvironment.IS_REACT_ACT_ENVIRONMENT = previousActEnvironment;
1314
+ }
1315
+ }
1316
+ });
1317
+
1206
1318
  it("renders the default plus control and routes chat-wide file drops to the composer", async () => {
1207
1319
  const transport: AgentTransport = {
1208
1320
  capabilities: { uploads: true },