@agent-native/toolkit 0.201.0 → 0.201.1-nightly-20261005213104

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.
@@ -1 +1 @@
1
- {"version":3,"file":"McpConnectionSuggestion.d.ts","sourceRoot":"","sources":["../../../src/app/resources/McpConnectionSuggestion.tsx"],"names":[],"mappings":"AAMA,OAAO,EAOL,KAAK,qBAAqB,EAC3B,MAAM,6DAA6D,CAAC;AAcrE,MAAM,MAAM,8BAA8B,GAAG,UAAU,GAAG,UAAU,CAAC;AAErE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AA6CD,wBAAgB,sCAAsC,CAAC,EACrD,IAAI,EACJ,WAAgB,EAChB,OAAoB,EACpB,gBAAwB,EACxB,eAAuB,EACvB,YAA0C,EAC1C,aAAa,GACd,EAAE,4BAA4B,GAAG,qBAAqB,GAAG,IAAI,CA0C7D;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,GACtB,OAAO,CAET;AAmBD,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAgB,EAChB,OAAoB,EACpB,gBAAwB,EACxB,eAAuB,EACvB,YAAY,EAAE,kBAAkB,EAChC,aAAa,EACb,WAAW,EACX,SAAS,EACT,YAAY,GACb,EAAE,4BAA4B,sCAqN9B"}
1
+ {"version":3,"file":"McpConnectionSuggestion.d.ts","sourceRoot":"","sources":["../../../src/app/resources/McpConnectionSuggestion.tsx"],"names":[],"mappings":"AAMA,OAAO,EAOL,KAAK,qBAAqB,EAC3B,MAAM,6DAA6D,CAAC;AAcrE,MAAM,MAAM,8BAA8B,GAAG,UAAU,GAAG,UAAU,CAAC;AAErE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AA8ED,wBAAgB,sCAAsC,CAAC,EACrD,IAAI,EACJ,WAAgB,EAChB,OAAoB,EACpB,gBAAwB,EACxB,eAAuB,EACvB,YAA0C,EAC1C,aAAa,GACd,EAAE,4BAA4B,GAAG,qBAAqB,GAAG,IAAI,CA0C7D;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,GACtB,OAAO,CAET;AAmBD,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAgB,EAChB,OAAoB,EACpB,gBAAwB,EACxB,eAAuB,EACvB,YAAY,EAAE,kBAAkB,EAChC,aAAa,EACb,WAAW,EACX,SAAS,EACT,YAAY,GACb,EAAE,4BAA4B,sCAoO9B"}
@@ -9,31 +9,53 @@ import { openAgentSettings } from "../shared/index.js";
9
9
  import { McpIntegrationDialogDeferred } from "./McpIntegrationDialogDeferred.js";
10
10
  import { McpIntegrationLogo } from "./McpIntegrationLogo.js";
11
11
  const DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY = "agent-native:mcp-connection-suggestions-dismissed";
12
- function readDismissedMcpSuggestionIds() {
12
+ const MCP_SUGGESTION_DISMISSAL_WINDOW_MS = 7 * 24 * 60 * 60 * 1000;
13
+ function readDismissedMcpSuggestionTimestamps(now = Date.now()) {
13
14
  if (typeof window === "undefined")
14
- return [];
15
+ return {};
15
16
  try {
16
17
  const raw = window.localStorage.getItem(DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY);
17
18
  if (!raw)
18
- return [];
19
+ return {};
19
20
  const parsed = JSON.parse(raw);
20
- return Array.isArray(parsed)
21
- ? parsed.filter((value) => typeof value === "string")
22
- : [];
21
+ if (Array.isArray(parsed)) {
22
+ const timestamps = Object.fromEntries(parsed
23
+ .filter((id) => typeof id === "string")
24
+ .map((id) => [id, now]));
25
+ try {
26
+ // Legacy IDs have no timestamp, so start their cooldown at migration.
27
+ window.localStorage.setItem(DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY, JSON.stringify(timestamps));
28
+ }
29
+ catch {
30
+ // coercion-ok: unavailable storage cannot persist the migration.
31
+ }
32
+ return timestamps;
33
+ }
34
+ if (!parsed || typeof parsed !== "object") {
35
+ return {};
36
+ }
37
+ const timestamps = {};
38
+ for (const [id, dismissedAt] of Object.entries(parsed)) {
39
+ if (typeof dismissedAt === "number" &&
40
+ Number.isFinite(dismissedAt) &&
41
+ dismissedAt <= now &&
42
+ now - dismissedAt < MCP_SUGGESTION_DISMISSAL_WINDOW_MS) {
43
+ timestamps[id] = dismissedAt;
44
+ }
45
+ }
46
+ return timestamps;
23
47
  }
24
48
  catch {
25
49
  // coercion-ok: unavailable browser storage means no persisted dismissals.
26
- return [];
50
+ return {};
27
51
  }
28
52
  }
29
- function rememberMcpSuggestionDismissal(id) {
53
+ function rememberMcpSuggestionDismissal(id, dismissedAt) {
30
54
  if (typeof window === "undefined")
31
55
  return;
32
56
  try {
33
- const ids = readDismissedMcpSuggestionIds();
34
- if (ids.includes(id))
35
- return;
36
- window.localStorage.setItem(DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY, JSON.stringify([...ids, id]));
57
+ const timestamps = readDismissedMcpSuggestionTimestamps(dismissedAt);
58
+ window.localStorage.setItem(DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY, JSON.stringify({ ...timestamps, [id]: dismissedAt }));
37
59
  }
38
60
  catch {
39
61
  // coercion-ok: unavailable browser storage only skips persistence.
@@ -91,7 +113,7 @@ export function McpConnectionSuggestion({ text, contextText = "", variant = "com
91
113
  const createMcpServer = useCreateMcpServer();
92
114
  const [dialogOpen, setDialogOpen] = useState(false);
93
115
  const [quickConnectIntegrationId, setQuickConnectIntegrationId] = useState(null);
94
- const [dismissedIds, setDismissedIds] = useState(readDismissedMcpSuggestionIds);
116
+ const [dismissedAtById, setDismissedAtById] = useState(readDismissedMcpSuggestionTimestamps);
95
117
  const [connecting, setConnecting] = useState(false);
96
118
  const [error, setError] = useState(null);
97
119
  const oauthStartingRef = useRef(false);
@@ -127,10 +149,13 @@ export function McpConnectionSuggestion({ text, contextText = "", variant = "com
127
149
  !serversPending &&
128
150
  (mcpServersQuery.data?.role === "owner" ||
129
151
  mcpServersQuery.data?.role === "admin"));
152
+ const dismissedAt = integration ? dismissedAtById[integration.id] : undefined;
153
+ const dismissed = dismissedAt !== undefined &&
154
+ Date.now() - dismissedAt < MCP_SUGGESTION_DISMISSAL_WINDOW_MS;
130
155
  const shouldSuggest = mcpServersQuery.isSuccess &&
131
156
  integration &&
132
157
  !connected &&
133
- !dismissedIds.includes(integration.id) &&
158
+ !dismissed &&
134
159
  (Boolean(integrationId) ||
135
160
  variant === "composer" ||
136
161
  isMcpConnectionFailureText(text) ||
@@ -143,6 +168,12 @@ export function McpConnectionSuggestion({ text, contextText = "", variant = "com
143
168
  setError(null);
144
169
  setConnecting(false);
145
170
  }, [integration?.id, integration?.logoUrl, variant]);
171
+ useEffect(() => {
172
+ if (!integration || dismissedAt === undefined)
173
+ return;
174
+ const timeout = window.setTimeout(() => setDismissedAtById(readDismissedMcpSuggestionTimestamps()), Math.max(0, dismissedAt + MCP_SUGGESTION_DISMISSAL_WINDOW_MS - Date.now()));
175
+ return () => window.clearTimeout(timeout);
176
+ }, [dismissedAt, integration?.id]);
146
177
  if (!shouldSuggest)
147
178
  return null;
148
179
  const connect = async () => {
@@ -171,10 +202,12 @@ export function McpConnectionSuggestion({ text, contextText = "", variant = "com
171
202
  return;
172
203
  setError(null);
173
204
  setConnecting(true);
174
- setDismissedIds((current) => current.includes(integration.id)
175
- ? current
176
- : [...current, integration.id]);
177
- rememberMcpSuggestionDismissal(integration.id);
205
+ const dismissedAt = Date.now();
206
+ setDismissedAtById((current) => ({
207
+ ...current,
208
+ [integration.id]: dismissedAt,
209
+ }));
210
+ rememberMcpSuggestionDismissal(integration.id, dismissedAt);
178
211
  void Promise.resolve(onDismiss?.())
179
212
  .catch((cause) => {
180
213
  setError(cause instanceof Error ? cause.message : String(cause));
@@ -196,9 +229,10 @@ export function McpConnectionSuggestion({ text, contextText = "", variant = "com
196
229
  await onOAuthStart(url);
197
230
  }
198
231
  : undefined, onCreated: () => {
199
- setDismissedIds((current) => current.includes(integration.id)
200
- ? current
201
- : [...current, integration.id]);
232
+ setDismissedAtById((current) => ({
233
+ ...current,
234
+ [integration.id]: Date.now(),
235
+ }));
202
236
  saveMcpConnectionResume(variant === "response" ? contextText : text);
203
237
  notifyMcpConnectionComplete();
204
238
  onConnected?.();
@@ -1 +1 @@
1
- {"version":3,"file":"McpConnectionSuggestion.js","sourceRoot":"","sources":["../../../src/app/resources/McpConnectionSuggestion.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"McpConnectionSuggestion.js","sourceRoot":"","sources":["../../../src/app/resources/McpConnectionSuggestion.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/toolkit",
3
- "version": "0.201.0",
3
+ "version": "0.201.1-nightly-20261005213104",
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": {
@@ -665,7 +665,7 @@
665
665
  "y-protocols": "^1.0.7",
666
666
  "yjs": "^13.6.33",
667
667
  "zod": "^4.3.6",
668
- "@agent-native/agentkit": "^0.201.0"
668
+ "@agent-native/agentkit": "^0.201.1-nightly-20261005213104"
669
669
  },
670
670
  "devDependencies": {
671
671
  "@excalidraw/excalidraw": "0.18.1",
@@ -686,10 +686,10 @@
686
686
  "typescript-7": "npm:typescript@^7.0.2",
687
687
  "vite": "8.1.0",
688
688
  "vitest": "^4.1.5",
689
- "@agent-native/core": "^0.201.0"
689
+ "@agent-native/core": "^0.201.1-nightly-20261005213104"
690
690
  },
691
691
  "peerDependencies": {
692
- "@agent-native/core": ">=0.196.0",
692
+ "@agent-native/core": "0.201.1-nightly-20261005213104",
693
693
  "@excalidraw/excalidraw": ">=0.18",
694
694
  "@excalidraw/mermaid-to-excalidraw": ">=2",
695
695
  "@tanstack/react-query": "^5.99.2",
@@ -117,6 +117,7 @@ describe("McpConnectionSuggestion render", () => {
117
117
  } else {
118
118
  Reflect.deleteProperty(window, "localStorage");
119
119
  }
120
+ vi.useRealTimers();
120
121
  vi.restoreAllMocks();
121
122
  vi.unstubAllGlobals();
122
123
  });
@@ -142,6 +143,57 @@ describe("McpConnectionSuggestion render", () => {
142
143
 
143
144
  act(() => (dismiss as HTMLButtonElement).click());
144
145
 
146
+ expect(container.querySelector("[data-mcp-connection-suggestion]")).toBe(
147
+ null,
148
+ );
149
+ const dismissals = JSON.parse(
150
+ window.localStorage.getItem(
151
+ "agent-native:mcp-connection-suggestions-dismissed",
152
+ ) ?? "{}",
153
+ ) as Record<string, number>;
154
+ expect(dismissals["test-integration"]).toEqual(expect.any(Number));
155
+
156
+ act(() => root.unmount());
157
+ root = createRoot(container);
158
+ renderSuggestion();
159
+ expect(container.querySelector("[data-mcp-connection-suggestion]")).toBe(
160
+ null,
161
+ );
162
+ });
163
+
164
+ it("shows a dismissed suggestion again after one week", () => {
165
+ vi.useFakeTimers();
166
+ const dismissedAt = new Date("2026-10-01T00:00:00.000Z").getTime();
167
+ vi.setSystemTime(dismissedAt);
168
+ window.localStorage.setItem(
169
+ "agent-native:mcp-connection-suggestions-dismissed",
170
+ JSON.stringify({ "test-integration": dismissedAt }),
171
+ );
172
+
173
+ renderSuggestion();
174
+
175
+ expect(container.querySelector("[data-mcp-connection-suggestion]")).toBe(
176
+ null,
177
+ );
178
+
179
+ act(() => vi.advanceTimersByTime(7 * 24 * 60 * 60 * 1000));
180
+
181
+ expect(
182
+ container.querySelector("[data-mcp-connection-suggestion]"),
183
+ ).not.toBeNull();
184
+ });
185
+
186
+ it("migrates existing dismissal IDs and preserves them across mounts", () => {
187
+ vi.useFakeTimers();
188
+ const dismissedAt = new Date("2026-10-01T00:00:00.000Z").getTime();
189
+ vi.setSystemTime(dismissedAt);
190
+ window.localStorage.setItem(
191
+ "agent-native:mcp-connection-suggestions-dismissed",
192
+ JSON.stringify(["test-integration"]),
193
+ );
194
+
195
+ renderSuggestion();
196
+
145
197
  expect(container.querySelector("[data-mcp-connection-suggestion]")).toBe(
146
198
  null,
147
199
  );
@@ -149,9 +201,9 @@ describe("McpConnectionSuggestion render", () => {
149
201
  JSON.parse(
150
202
  window.localStorage.getItem(
151
203
  "agent-native:mcp-connection-suggestions-dismissed",
152
- ) ?? "[]",
204
+ ) ?? "{}",
153
205
  ),
154
- ).toEqual(["test-integration"]);
206
+ ).toEqual({ "test-integration": dismissedAt });
155
207
 
156
208
  act(() => root.unmount());
157
209
  root = createRoot(container);
@@ -44,32 +44,65 @@ export interface McpConnectionSuggestionProps {
44
44
 
45
45
  const DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY =
46
46
  "agent-native:mcp-connection-suggestions-dismissed";
47
+ const MCP_SUGGESTION_DISMISSAL_WINDOW_MS = 7 * 24 * 60 * 60 * 1000;
47
48
 
48
- function readDismissedMcpSuggestionIds(): string[] {
49
- if (typeof window === "undefined") return [];
49
+ function readDismissedMcpSuggestionTimestamps(
50
+ now = Date.now(),
51
+ ): Record<string, number> {
52
+ if (typeof window === "undefined") return {};
50
53
  try {
51
54
  const raw = window.localStorage.getItem(
52
55
  DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY,
53
56
  );
54
- if (!raw) return [];
57
+ if (!raw) return {};
55
58
  const parsed: unknown = JSON.parse(raw);
56
- return Array.isArray(parsed)
57
- ? parsed.filter((value): value is string => typeof value === "string")
58
- : [];
59
+ if (Array.isArray(parsed)) {
60
+ const timestamps = Object.fromEntries(
61
+ parsed
62
+ .filter((id): id is string => typeof id === "string")
63
+ .map((id) => [id, now]),
64
+ ) as Record<string, number>;
65
+ try {
66
+ // Legacy IDs have no timestamp, so start their cooldown at migration.
67
+ window.localStorage.setItem(
68
+ DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY,
69
+ JSON.stringify(timestamps),
70
+ );
71
+ } catch {
72
+ // coercion-ok: unavailable storage cannot persist the migration.
73
+ }
74
+ return timestamps;
75
+ }
76
+ if (!parsed || typeof parsed !== "object") {
77
+ return {};
78
+ }
79
+ const timestamps: Record<string, number> = {};
80
+ for (const [id, dismissedAt] of Object.entries(
81
+ parsed as Record<string, unknown>,
82
+ )) {
83
+ if (
84
+ typeof dismissedAt === "number" &&
85
+ Number.isFinite(dismissedAt) &&
86
+ dismissedAt <= now &&
87
+ now - dismissedAt < MCP_SUGGESTION_DISMISSAL_WINDOW_MS
88
+ ) {
89
+ timestamps[id] = dismissedAt;
90
+ }
91
+ }
92
+ return timestamps;
59
93
  } catch {
60
94
  // coercion-ok: unavailable browser storage means no persisted dismissals.
61
- return [];
95
+ return {};
62
96
  }
63
97
  }
64
98
 
65
- function rememberMcpSuggestionDismissal(id: string): void {
99
+ function rememberMcpSuggestionDismissal(id: string, dismissedAt: number): void {
66
100
  if (typeof window === "undefined") return;
67
101
  try {
68
- const ids = readDismissedMcpSuggestionIds();
69
- if (ids.includes(id)) return;
102
+ const timestamps = readDismissedMcpSuggestionTimestamps(dismissedAt);
70
103
  window.localStorage.setItem(
71
104
  DISMISSED_MCP_SUGGESTIONS_STORAGE_KEY,
72
- JSON.stringify([...ids, id]),
105
+ JSON.stringify({ ...timestamps, [id]: dismissedAt }),
73
106
  );
74
107
  } catch {
75
108
  // coercion-ok: unavailable browser storage only skips persistence.
@@ -180,8 +213,8 @@ export function McpConnectionSuggestion({
180
213
  const [quickConnectIntegrationId, setQuickConnectIntegrationId] = useState<
181
214
  string | null
182
215
  >(null);
183
- const [dismissedIds, setDismissedIds] = useState(
184
- readDismissedMcpSuggestionIds,
216
+ const [dismissedAtById, setDismissedAtById] = useState(
217
+ readDismissedMcpSuggestionTimestamps,
185
218
  );
186
219
  const [connecting, setConnecting] = useState(false);
187
220
  const [error, setError] = useState<string | null>(null);
@@ -230,11 +263,15 @@ export function McpConnectionSuggestion({
230
263
  (mcpServersQuery.data?.role === "owner" ||
231
264
  mcpServersQuery.data?.role === "admin"),
232
265
  );
266
+ const dismissedAt = integration ? dismissedAtById[integration.id] : undefined;
267
+ const dismissed =
268
+ dismissedAt !== undefined &&
269
+ Date.now() - dismissedAt < MCP_SUGGESTION_DISMISSAL_WINDOW_MS;
233
270
  const shouldSuggest =
234
271
  mcpServersQuery.isSuccess &&
235
272
  integration &&
236
273
  !connected &&
237
- !dismissedIds.includes(integration.id) &&
274
+ !dismissed &&
238
275
  (Boolean(integrationId) ||
239
276
  variant === "composer" ||
240
277
  isMcpConnectionFailureText(text) ||
@@ -249,6 +286,18 @@ export function McpConnectionSuggestion({
249
286
  setConnecting(false);
250
287
  }, [integration?.id, integration?.logoUrl, variant]);
251
288
 
289
+ useEffect(() => {
290
+ if (!integration || dismissedAt === undefined) return;
291
+ const timeout = window.setTimeout(
292
+ () => setDismissedAtById(readDismissedMcpSuggestionTimestamps()),
293
+ Math.max(
294
+ 0,
295
+ dismissedAt + MCP_SUGGESTION_DISMISSAL_WINDOW_MS - Date.now(),
296
+ ),
297
+ );
298
+ return () => window.clearTimeout(timeout);
299
+ }, [dismissedAt, integration?.id]);
300
+
252
301
  if (!shouldSuggest) return null;
253
302
 
254
303
  const connect = async () => {
@@ -314,12 +363,12 @@ export function McpConnectionSuggestion({
314
363
  if (connecting) return;
315
364
  setError(null);
316
365
  setConnecting(true);
317
- setDismissedIds((current) =>
318
- current.includes(integration.id)
319
- ? current
320
- : [...current, integration.id],
321
- );
322
- rememberMcpSuggestionDismissal(integration.id);
366
+ const dismissedAt = Date.now();
367
+ setDismissedAtById((current) => ({
368
+ ...current,
369
+ [integration.id]: dismissedAt,
370
+ }));
371
+ rememberMcpSuggestionDismissal(integration.id, dismissedAt);
323
372
  void Promise.resolve(onDismiss?.())
324
373
  .catch((cause: unknown) => {
325
374
  setError(
@@ -372,11 +421,10 @@ export function McpConnectionSuggestion({
372
421
  : undefined
373
422
  }
374
423
  onCreated={() => {
375
- setDismissedIds((current) =>
376
- current.includes(integration.id)
377
- ? current
378
- : [...current, integration.id],
379
- );
424
+ setDismissedAtById((current) => ({
425
+ ...current,
426
+ [integration.id]: Date.now(),
427
+ }));
380
428
  saveMcpConnectionResume(variant === "response" ? contextText : text);
381
429
  notifyMcpConnectionComplete();
382
430
  onConnected?.();