@agent-native/core 0.92.4 → 0.92.6

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 (160) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +19 -0
  3. package/corpus/core/docs/content/template-assets.mdx +139 -0
  4. package/corpus/core/package.json +1 -1
  5. package/corpus/core/src/agent/production-agent.ts +96 -6
  6. package/corpus/core/src/cli/design-connect.ts +43 -16
  7. package/corpus/core/src/cli/skills.ts +52 -16
  8. package/corpus/core/src/client/AssistantChat.tsx +127 -15
  9. package/corpus/core/src/client/chat/tool-call-display.tsx +9 -3
  10. package/corpus/core/src/client/org/TeamPage.tsx +274 -177
  11. package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -6
  12. package/corpus/core/src/client/settings/SettingsPanel.tsx +1 -1
  13. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +49 -1
  14. package/corpus/core/src/demo/actions/toggle-demo-mode.ts +2 -2
  15. package/corpus/core/src/demo/config.ts +3 -3
  16. package/corpus/core/src/demo/redact.ts +720 -0
  17. package/corpus/core/src/extensions/url-safety.ts +13 -1
  18. package/corpus/core/src/localization/default-messages.ts +7 -0
  19. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +7 -0
  20. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +7 -0
  21. package/corpus/core/src/templates/default/app/i18n/en-US.ts +7 -0
  22. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +7 -0
  23. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +7 -0
  24. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +7 -0
  25. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +7 -0
  26. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +7 -0
  27. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +7 -0
  28. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +7 -0
  29. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +7 -0
  30. package/corpus/templates/analytics/AGENTS.md +6 -3
  31. package/corpus/templates/analytics/changelog/2026-07-09-uptime-monitors-use-scheduled-workers-in-production-serverless.md +6 -0
  32. package/corpus/templates/analytics/docs/uptime-monitoring.md +5 -0
  33. package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +14 -2
  34. package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +35 -0
  35. package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +19 -0
  36. package/corpus/templates/assets/AGENTS.md +13 -0
  37. package/corpus/templates/assets/actions/_generation-preset-settings.ts +73 -0
  38. package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +63 -0
  39. package/corpus/templates/assets/actions/create-generation-preset.ts +22 -8
  40. package/corpus/templates/assets/actions/duplicate-library.ts +49 -1
  41. package/corpus/templates/assets/actions/generate-image-batch.ts +14 -1
  42. package/corpus/templates/assets/actions/generate-image.ts +195 -26
  43. package/corpus/templates/assets/actions/import-asset-from-url.ts +323 -0
  44. package/corpus/templates/assets/actions/list-generation-presets.ts +1 -1
  45. package/corpus/templates/assets/actions/rerun-generation-run.ts +37 -0
  46. package/corpus/templates/assets/actions/update-generation-preset.ts +19 -1
  47. package/corpus/templates/assets/app/i18n/ar-SA.ts +1 -0
  48. package/corpus/templates/assets/app/i18n/de-DE.ts +1 -0
  49. package/corpus/templates/assets/app/i18n/es-ES.ts +1 -0
  50. package/corpus/templates/assets/app/i18n/fr-FR.ts +1 -0
  51. package/corpus/templates/assets/app/i18n/hi-IN.ts +1 -0
  52. package/corpus/templates/assets/app/i18n/ja-JP.ts +1 -0
  53. package/corpus/templates/assets/app/i18n/ko-KR.ts +1 -0
  54. package/corpus/templates/assets/app/i18n/pt-BR.ts +1 -0
  55. package/corpus/templates/assets/app/i18n/zh-CN.ts +1 -0
  56. package/corpus/templates/assets/app/i18n/zh-TW.ts +41 -0
  57. package/corpus/templates/assets/app/i18n-data.ts +93 -0
  58. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +66 -11
  59. package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +959 -24
  60. package/corpus/templates/assets/changelog/2026-07-07-preset-skeleton-controls-fit-correctly-on-narrower-edit-page.md +6 -0
  61. package/corpus/templates/assets/changelog/2026-07-09-import-reference-images-from-url.md +6 -0
  62. package/corpus/templates/assets/changelog/2026-07-09-preset-reference-board.md +6 -0
  63. package/corpus/templates/assets/server/handlers/assets.ts +7 -27
  64. package/corpus/templates/assets/server/lib/generation.ts +83 -2
  65. package/corpus/templates/assets/server/lib/preset-chat-context.ts +17 -4
  66. package/corpus/templates/assets/server/lib/preset-references.ts +182 -0
  67. package/corpus/templates/assets/server/lib/upload-validation.ts +38 -0
  68. package/corpus/templates/assets/shared/api.ts +20 -0
  69. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +6 -0
  70. package/corpus/templates/calendar/actions/create-event.ts +8 -2
  71. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +22 -7
  72. package/corpus/templates/calendar/changelog/2026-07-09-calendar-events-with-guests-now-automatically-get-a-google-m.md +6 -0
  73. package/corpus/templates/calendar/changelog/2026-07-09-new-events-now-mark-the-creator-rsvp-as-yes.md +6 -0
  74. package/corpus/templates/calendar/server/handlers/events.ts +9 -2
  75. package/corpus/templates/calendar/server/lib/event-video-conferencing.ts +58 -0
  76. package/corpus/templates/calendar/server/lib/google-calendar.ts +1 -0
  77. package/corpus/templates/clips/changelog/2026-07-09-meeting-reminder-popovers-can-now-be-dismissed-with-a-top-le.md +6 -0
  78. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +3 -1
  79. package/corpus/templates/clips/desktop/src/styles.css +13 -9
  80. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +5 -2
  81. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +27 -15
  82. package/corpus/templates/design/actions/connect-localhost.ts +40 -11
  83. package/corpus/templates/design/actions/open-visual-edit.ts +7 -1
  84. package/dist/agent/production-agent.d.ts +34 -1
  85. package/dist/agent/production-agent.d.ts.map +1 -1
  86. package/dist/agent/production-agent.js +58 -5
  87. package/dist/agent/production-agent.js.map +1 -1
  88. package/dist/cli/design-connect.d.ts +5 -1
  89. package/dist/cli/design-connect.d.ts.map +1 -1
  90. package/dist/cli/design-connect.js +37 -16
  91. package/dist/cli/design-connect.js.map +1 -1
  92. package/dist/cli/skills.d.ts.map +1 -1
  93. package/dist/cli/skills.js +52 -16
  94. package/dist/cli/skills.js.map +1 -1
  95. package/dist/client/AssistantChat.d.ts +3 -1
  96. package/dist/client/AssistantChat.d.ts.map +1 -1
  97. package/dist/client/AssistantChat.js +96 -15
  98. package/dist/client/AssistantChat.js.map +1 -1
  99. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  100. package/dist/client/chat/tool-call-display.js +5 -1
  101. package/dist/client/chat/tool-call-display.js.map +1 -1
  102. package/dist/client/org/TeamPage.d.ts.map +1 -1
  103. package/dist/client/org/TeamPage.js +32 -13
  104. package/dist/client/org/TeamPage.js.map +1 -1
  105. package/dist/client/settings/DemoModeSection.d.ts +3 -3
  106. package/dist/client/settings/DemoModeSection.js +4 -4
  107. package/dist/client/settings/DemoModeSection.js.map +1 -1
  108. package/dist/client/settings/SettingsPanel.js +1 -1
  109. package/dist/client/settings/SettingsPanel.js.map +1 -1
  110. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  111. package/dist/client/settings/SettingsTabsPage.js +38 -2
  112. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  113. package/dist/collab/routes.d.ts +1 -1
  114. package/dist/collab/struct-routes.d.ts +1 -1
  115. package/dist/demo/actions/toggle-demo-mode.js +2 -2
  116. package/dist/demo/actions/toggle-demo-mode.js.map +1 -1
  117. package/dist/demo/config.js +3 -3
  118. package/dist/demo/config.js.map +1 -1
  119. package/dist/demo/redact.d.ts +1 -1
  120. package/dist/demo/redact.d.ts.map +1 -1
  121. package/dist/demo/redact.js +0 -0
  122. package/dist/demo/redact.js.map +1 -1
  123. package/dist/extensions/url-safety.d.ts +5 -0
  124. package/dist/extensions/url-safety.d.ts.map +1 -1
  125. package/dist/extensions/url-safety.js +10 -0
  126. package/dist/extensions/url-safety.js.map +1 -1
  127. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  128. package/dist/localization/default-messages.d.ts +7 -0
  129. package/dist/localization/default-messages.d.ts.map +1 -1
  130. package/dist/localization/default-messages.js +7 -0
  131. package/dist/localization/default-messages.js.map +1 -1
  132. package/dist/notifications/routes.d.ts +2 -2
  133. package/dist/observability/routes.d.ts +3 -3
  134. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  135. package/dist/resources/handlers.d.ts +1 -1
  136. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  137. package/dist/templates/default/app/i18n/ar-SA.ts +7 -0
  138. package/dist/templates/default/app/i18n/de-DE.ts +7 -0
  139. package/dist/templates/default/app/i18n/en-US.ts +7 -0
  140. package/dist/templates/default/app/i18n/es-ES.ts +7 -0
  141. package/dist/templates/default/app/i18n/fr-FR.ts +7 -0
  142. package/dist/templates/default/app/i18n/hi-IN.ts +7 -0
  143. package/dist/templates/default/app/i18n/ja-JP.ts +7 -0
  144. package/dist/templates/default/app/i18n/ko-KR.ts +7 -0
  145. package/dist/templates/default/app/i18n/pt-BR.ts +7 -0
  146. package/dist/templates/default/app/i18n/zh-CN.ts +7 -0
  147. package/dist/templates/default/app/i18n/zh-TW.ts +7 -0
  148. package/docs/content/template-assets.mdx +139 -0
  149. package/package.json +1 -1
  150. package/src/templates/default/app/i18n/ar-SA.ts +7 -0
  151. package/src/templates/default/app/i18n/de-DE.ts +7 -0
  152. package/src/templates/default/app/i18n/en-US.ts +7 -0
  153. package/src/templates/default/app/i18n/es-ES.ts +7 -0
  154. package/src/templates/default/app/i18n/fr-FR.ts +7 -0
  155. package/src/templates/default/app/i18n/hi-IN.ts +7 -0
  156. package/src/templates/default/app/i18n/ja-JP.ts +7 -0
  157. package/src/templates/default/app/i18n/ko-KR.ts +7 -0
  158. package/src/templates/default/app/i18n/pt-BR.ts +7 -0
  159. package/src/templates/default/app/i18n/zh-CN.ts +7 -0
  160. package/src/templates/default/app/i18n/zh-TW.ts +7 -0
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-09
4
+ ---
5
+
6
+ New events now mark the creator's RSVP as Yes when guests are invited.
@@ -16,7 +16,10 @@ import {
16
16
  normalizeGuestNotificationMessage,
17
17
  sendEventGuestNotificationNote,
18
18
  } from "../lib/event-guest-notifications.js";
19
- import { prepareZoomMeetingPatch } from "../lib/event-video-conferencing.js";
19
+ import {
20
+ prepareZoomMeetingPatch,
21
+ shouldAutoAddGoogleMeet,
22
+ } from "../lib/event-video-conferencing.js";
20
23
  import * as googleCalendar from "../lib/google-calendar.js";
21
24
 
22
25
  async function uEmail(event: H3Event): Promise<string> {
@@ -287,7 +290,11 @@ export const createEvent = defineEventHandler(async (event: H3Event) => {
287
290
  }
288
291
 
289
292
  const result = await googleCalendar.createEvent(calEvent, {
290
- addGoogleMeet: addGoogleMeet === true,
293
+ addGoogleMeet: shouldAutoAddGoogleMeet(calEvent, {
294
+ addGoogleMeet:
295
+ typeof addGoogleMeet === "boolean" ? addGoogleMeet : undefined,
296
+ addZoom: addZoom === true,
297
+ }),
291
298
  });
292
299
  if (result.id) {
293
300
  calEvent.id = `google-${result.id}`;
@@ -5,6 +5,9 @@ import { createZoomMeeting, getZoomStatus } from "./zoom.js";
5
5
 
6
6
  const DEFAULT_TIMEZONE = "America/New_York";
7
7
  const ZOOM_LINK_RE = /https?:\/\/[^\s<>"')]*zoom\.us\/[^\s<>"')]+/i;
8
+ const VIDEO_MEETING_HOST_RE =
9
+ /(^|\.)((meet\.google|zoom|teams\.microsoft|webex|gotomeeting|bluejeans|whereby)\.com|chime\.aws)$/i;
10
+ const VIDEO_MEETING_LINK_RE = /https?:\/\/[^\s<>"')]+/gi;
8
11
 
9
12
  type EventForVideo = Pick<
10
13
  CalendarEvent,
@@ -15,6 +18,19 @@ type CalendarSettings = {
15
18
  timezone?: string;
16
19
  };
17
20
 
21
+ type EventWithConferencing = Partial<
22
+ Pick<
23
+ CalendarEvent,
24
+ | "attendees"
25
+ | "conferenceData"
26
+ | "description"
27
+ | "eventType"
28
+ | "hangoutLink"
29
+ | "location"
30
+ | "meetingLink"
31
+ >
32
+ >;
33
+
18
34
  function trimTrailingPunctuation(url: string): string {
19
35
  return url.replace(/[.,;:!?]+$/, "");
20
36
  }
@@ -35,6 +51,48 @@ export function extractZoomMeetingLink(
35
51
  return match ? trimTrailingPunctuation(match[0]) : undefined;
36
52
  }
37
53
 
54
+ export function hasExplicitMeetingLink(event: EventWithConferencing): boolean {
55
+ if (event.meetingLink || event.hangoutLink) return true;
56
+ if (
57
+ event.conferenceData?.entryPoints?.some(
58
+ (entryPoint) => entryPoint.entryPointType === "video" && entryPoint.uri,
59
+ )
60
+ ) {
61
+ return true;
62
+ }
63
+
64
+ const text = `${event.location || ""}\n${event.description || ""}`;
65
+ for (const match of text.matchAll(VIDEO_MEETING_LINK_RE)) {
66
+ try {
67
+ const url = new URL(trimTrailingPunctuation(match[0]));
68
+ if (VIDEO_MEETING_HOST_RE.test(url.hostname)) return true;
69
+ } catch {
70
+ // Ignore malformed free-text URL fragments.
71
+ }
72
+ }
73
+ return false;
74
+ }
75
+
76
+ function hasInvitedGuests(event: EventWithConferencing): boolean {
77
+ return (
78
+ event.attendees?.some((attendee) => {
79
+ const email = attendee.email?.trim();
80
+ return !!email && attendee.self !== true && attendee.organizer !== true;
81
+ }) ?? false
82
+ );
83
+ }
84
+
85
+ export function shouldAutoAddGoogleMeet(
86
+ event: EventWithConferencing,
87
+ opts?: { addGoogleMeet?: boolean; addZoom?: boolean },
88
+ ): boolean {
89
+ if (opts?.addGoogleMeet !== undefined) return opts.addGoogleMeet;
90
+ if (opts?.addZoom === true) return false;
91
+ if ((event.eventType ?? "default") !== "default") return false;
92
+ if (!hasInvitedGuests(event)) return false;
93
+ return !hasExplicitMeetingLink(event);
94
+ }
95
+
38
96
  export function buildMeetingLinkPatch(
39
97
  event: Pick<CalendarEvent, "description" | "location">,
40
98
  meetingLink: string,
@@ -1095,6 +1095,7 @@ export async function createEvent(
1095
1095
  email: a.email,
1096
1096
  ...(a.displayName ? { displayName: a.displayName } : {}),
1097
1097
  ...(a.comment ? { comment: a.comment } : {}),
1098
+ ...(a.responseStatus ? { responseStatus: a.responseStatus } : {}),
1098
1099
  ...(a.optional === true ? { optional: true } : {}),
1099
1100
  }));
1100
1101
  }
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-09
4
+ ---
5
+
6
+ Meeting reminder popovers can now be dismissed with a top-left close button on hover, and their drop shadow is no longer clipped
@@ -38,7 +38,9 @@ interface TranscriptionStatusPayload {
38
38
 
39
39
  const SNOOZE_MS = 5 * 60_000;
40
40
  const FALLBACK_AUTO_HIDE_MS = 6 * 60_000;
41
- const NOTIFICATION_WINDOW_WIDTH = 440;
41
+ // Card is up to 440px wide; the extra width leaves room for the drop shadow
42
+ // (~32px each side) so it isn't clipped by the transparent window edges.
43
+ const NOTIFICATION_WINDOW_WIDTH = 504;
42
44
  const NOTIFICATION_COLLAPSED_HEIGHT = 120;
43
45
  const NOTIFICATION_MENU_HEIGHT = 224;
44
46
 
@@ -3621,7 +3621,9 @@ body[data-clips-route="recording-pill"] #root {
3621
3621
  display: flex;
3622
3622
  align-items: flex-start;
3623
3623
  justify-content: flex-end;
3624
- padding: 8px;
3624
+ /* Extra horizontal room so the card's drop shadow isn't clipped by the
3625
+ transparent window edges (shadow blur is ~30px). */
3626
+ padding: 12px 32px;
3625
3627
  background: transparent;
3626
3628
  pointer-events: none;
3627
3629
  }
@@ -3835,23 +3837,25 @@ body[data-clips-route="recording-pill"] #root {
3835
3837
 
3836
3838
  .meeting-notification-close {
3837
3839
  position: absolute;
3838
- top: 6px;
3839
- right: 6px;
3840
- width: 18px;
3841
- height: 18px;
3840
+ top: -8px;
3841
+ left: -8px;
3842
+ width: 20px;
3843
+ height: 20px;
3842
3844
  border-radius: 50%;
3843
- border: none;
3844
- background: rgba(255, 255, 255, 0.1);
3845
- color: rgba(255, 255, 255, 0.7);
3845
+ border: 1px solid rgba(255, 255, 255, 0.14);
3846
+ background: rgba(28, 30, 38, 0.98);
3847
+ color: rgba(255, 255, 255, 0.75);
3846
3848
  cursor: pointer;
3847
3849
  display: inline-flex;
3848
3850
  align-items: center;
3849
3851
  justify-content: center;
3850
3852
  padding: 0;
3853
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
3854
+ z-index: 6;
3851
3855
  }
3852
3856
 
3853
3857
  .meeting-notification-close:hover {
3854
- background: rgba(255, 255, 255, 0.2);
3858
+ background: rgba(48, 50, 60, 0.98);
3855
3859
  color: white;
3856
3860
  }
3857
3861
 
@@ -16,10 +16,13 @@ use crate::util::{
16
16
  };
17
17
 
18
18
  const MEETING_NOTIFICATION_LABEL: &str = "meeting-notif";
19
- const NOTIFICATION_W_LOGICAL: u32 = 440;
19
+ // Window is wider than the 440px card so the card's drop shadow (~32px each
20
+ // side) renders inside the transparent window instead of being clipped. The
21
+ // right margin is pulled in to keep the card near the top-right corner.
22
+ const NOTIFICATION_W_LOGICAL: u32 = 504;
20
23
  const NOTIFICATION_H_LOGICAL: u32 = 120;
21
24
  const NOTIFICATION_TOP_MARGIN_LOGICAL: u32 = 44;
22
- const NOTIFICATION_RIGHT_MARGIN_LOGICAL: u32 = 24;
25
+ const NOTIFICATION_RIGHT_MARGIN_LOGICAL: u32 = 0;
23
26
 
24
27
  #[derive(Default)]
25
28
  pub struct MeetingNotificationState(pub Mutex<Option<Value>>);
@@ -60,31 +60,43 @@ iframe-backed screens on the infinite canvas.
60
60
 
61
61
  ## Required Local Bridge
62
62
 
63
- From the target app repo, make sure its dev server is running, then run the
64
- Design bridge with `npx`:
63
+ The live-edit bridge is unlocked by a shared secret (the "bridge token") that
64
+ must match on two sides: the local bridge process and the user's connection row
65
+ (which the browser reads to authorize `/live-edit-bridge`, `/read-file`,
66
+ `/write-file`). Let the authenticated `connect-localhost` / `open-visual-edit`
67
+ action mint the token, then start the bridge adopting it — the bridge cannot
68
+ push its own token to the server without a CLI auth token, so the server mints.
69
+
70
+ From the target app repo, make sure its dev server is running, then:
71
+
72
+ **1. Discover routes without a durable bridge** (one-shot, exits):
65
73
 
66
74
  ```bash
67
- npx @agent-native/core@latest design connect --url http://localhost:5173 --root .
75
+ npx @agent-native/core@latest design connect --url http://localhost:5173 --root . --json
68
76
  ```
69
77
 
70
- Use the app's real port. The command starts a local bridge on
71
- `http://127.0.0.1:7331` by default and exposes:
78
+ Prints the manifest (routes + capabilities). Use it to build `routeManifest` for
79
+ the action call. Skip if the user already gave explicit paths/URLs.
72
80
 
73
- - `GET /manifest.json` dev server URL, bridge URL, discovered routes, root.
74
- - `GET /routes.json` route manifest only.
75
- - `GET /health` bridge liveness.
81
+ **2. Register the connection** via `connect-localhost` / `open-visual-edit`
82
+ (Action Flow below) with NO `bridgeToken`. The server mints one, stores it on the
83
+ connection row, and returns it as `bridgeToken`. Capture it.
76
84
 
77
- For one-shot agent setup, ask for JSON and keep the long-running bridge open in
78
- a second terminal if the user needs live updates:
85
+ **3. Start the persistent bridge adopting that token:**
79
86
 
80
87
  ```bash
81
- npx @agent-native/core@latest design connect --url http://localhost:5173 --root .
82
- curl http://127.0.0.1:7331/manifest.json
88
+ AGENT_NATIVE_BRIDGE_TOKEN="<bridgeToken from step 2>" \
89
+ npx @agent-native/core@latest design connect \
90
+ --url http://localhost:5173 --root . --daemon
83
91
  ```
84
92
 
85
- Do not use `--json` for an editable session. `--json`, `--once`, and
86
- `--dry-run` print the manifest and exit, so Design will fall back to a
87
- non-editable live iframe as soon as it tries to refresh the snapshot.
93
+ (Or pass `--bridge-token <token>`; prefer the env var to keep the secret out of
94
+ `ps`.) The bridge exposes `GET /manifest.json`, `GET /routes.json`,
95
+ `GET /health`, and now authorizes live-edit because its token matches the row.
96
+
97
+ Only use `--json` for the step-1 route probe. Never use `--json`, `--once`, or
98
+ `--dry-run` for the durable step-3 bridge: they print the manifest and exit, so
99
+ Design falls back to a non-editable live iframe.
88
100
 
89
101
  ## Action Flow
90
102
 
@@ -5,7 +5,7 @@ import {
5
5
  getRequestOrgId,
6
6
  getRequestUserEmail,
7
7
  } from "@agent-native/core/server/request-context";
8
- import { eq } from "drizzle-orm";
8
+ import { and, eq, sql } from "drizzle-orm";
9
9
  import { z } from "zod";
10
10
 
11
11
  import { getDb, schema } from "../server/db/index.js";
@@ -202,8 +202,14 @@ export default defineAction({
202
202
  );
203
203
  }
204
204
 
205
- const nextBridgeToken = args.bridgeToken?.trim() || undefined;
206
- const values = {
205
+ // Token for a new row: explicit, else existing, else mint. The authenticated
206
+ // action owning the mint is what lets the CLI skip its own auth (the 401 gap).
207
+ const explicitToken = args.bridgeToken?.trim() || undefined;
208
+ const nextBridgeToken =
209
+ explicitToken ||
210
+ existing[0]?.bridgeToken ||
211
+ crypto.randomBytes(32).toString("hex");
212
+ const baseValues = {
207
213
  id,
208
214
  name: args.name ?? new URL(devServerUrl).host,
209
215
  sourceType: "localhost" as const,
@@ -212,7 +218,6 @@ export default defineAction({
212
218
  rootPath: routeManifest.rootPath ?? null,
213
219
  routeManifest: JSON.stringify(routeManifest),
214
220
  capabilities: JSON.stringify(capabilities),
215
- bridgeToken: nextBridgeToken ?? existing[0]?.bridgeToken ?? null,
216
221
  status: args.status,
217
222
  lastSeenAt: now,
218
223
  ownerEmail,
@@ -220,23 +225,44 @@ export default defineAction({
220
225
  updatedAt: now,
221
226
  };
222
227
 
223
- // Atomic upsert keyed on the id primary key no check-then-insert race.
224
- // setWhere keeps a concurrent insert by another user (TOCTOU on the
225
- // ownership check above) from being overwritten: on a cross-user conflict
226
- // the update filters to a no-op instead of hijacking the other row.
228
+ // On conflict, an explicit token overwrites; a server-minted one uses
229
+ // coalesce(existing, minted) evaluated at write time it fills a null token
230
+ // but never clobbers one, so concurrent first-time callers converge on the
231
+ // first writer (read->mint->write isn't atomic). setWhere keeps a cross-user
232
+ // conflict a no-op.
227
233
  await db
228
234
  .insert(schema.designLocalhostConnections)
229
- .values({ ...values, createdAt: now })
235
+ .values({ ...baseValues, bridgeToken: nextBridgeToken, createdAt: now })
230
236
  .onConflictDoUpdate({
231
237
  target: schema.designLocalhostConnections.id,
232
- set: values,
238
+ set: {
239
+ ...baseValues,
240
+ bridgeToken: explicitToken
241
+ ? nextBridgeToken
242
+ : sql`coalesce(${schema.designLocalhostConnections.bridgeToken}, excluded.bridge_token)`,
243
+ },
233
244
  setWhere: eq(schema.designLocalhostConnections.ownerEmail, ownerEmail),
234
245
  });
235
246
 
247
+ // Return the token the row actually holds (owner-scoped, so a cross-user
248
+ // no-op never leaks another user's token), not the one we minted — so
249
+ // concurrent callers converge on the winner (no 401 on a lost race).
250
+ const [stored] = await db
251
+ .select({ bridgeToken: schema.designLocalhostConnections.bridgeToken })
252
+ .from(schema.designLocalhostConnections)
253
+ .where(
254
+ and(
255
+ eq(schema.designLocalhostConnections.id, id),
256
+ eq(schema.designLocalhostConnections.ownerEmail, ownerEmail),
257
+ ),
258
+ )
259
+ .limit(1);
260
+ const effectiveBridgeToken = stored?.bridgeToken ?? nextBridgeToken;
261
+
236
262
  return {
237
263
  id,
238
264
  sourceType: "localhost",
239
- name: values.name,
265
+ name: baseValues.name,
240
266
  devServerUrl,
241
267
  bridgeUrl: bridgeUrl ?? null,
242
268
  rootPath: routeManifest.rootPath ?? null,
@@ -245,6 +271,9 @@ export default defineAction({
245
271
  capabilities,
246
272
  status: args.status,
247
273
  lastSeenAt: now,
274
+ // Returned so the caller can start the bridge with
275
+ // `design connect --bridge-token <this>`, matching this row.
276
+ bridgeToken: effectiveBridgeToken,
248
277
  };
249
278
  },
250
279
  });
@@ -162,7 +162,10 @@ export default defineAction({
162
162
  .string()
163
163
  .optional()
164
164
  .describe(
165
- "Real bridge token from the running bridge. Stored server-side only; never returned.",
165
+ "Optional bridge token to store on the connection (e.g. one a CLI " +
166
+ "self-registered). Omit it and the server mints one, stores it, and " +
167
+ "returns it as `bridgeToken` so the caller can start the local bridge " +
168
+ "with `design connect --bridge-token <token>`.",
166
169
  ),
167
170
  routes: jsonArray(z.array(screenRouteSchema))
168
171
  .optional()
@@ -315,6 +318,9 @@ export default defineAction({
315
318
  overview: true,
316
319
  urlPath,
317
320
  openUrl: designOverviewDeepLink(designId),
321
+ // Minted/stored by connect-localhost; the skill starts the bridge with
322
+ // `design connect --bridge-token <this>` so bridge and row agree.
323
+ bridgeToken: connection.bridgeToken,
318
324
  };
319
325
  },
320
326
  link: ({ result }) => {
@@ -469,7 +469,40 @@ export declare function runAgentLoop(opts: {
469
469
  }): Promise<AgentLoopUsage>;
470
470
  export declare function lastUnfinishedPreparingActionToolFromEvents(events: readonly AgentChatEvent[]): string | undefined;
471
471
  export declare function backgroundContinuationReasonForRun(run: ActiveRun): AgentLoopContinuationReason;
472
- export declare function runAgentLoopWithMainChatInternalContinuations(opts: Parameters<typeof runAgentLoop>[0]): Promise<Awaited<ReturnType<typeof runAgentLoop>>>;
472
+ export declare function runAgentLoopWithMainChatInternalContinuations(opts: Parameters<typeof runAgentLoop>[0] & {
473
+ /**
474
+ * Opt-in: also catch a thrown `isResumableEngineError` (gateway drop /
475
+ * transport interruption surviving engine retries) and retry it in-process
476
+ * — the same "continue from where you left off" treatment already applied
477
+ * to in-loop `auto_continue` events below — instead of letting it
478
+ * propagate out to the caller. Default false/omitted preserves the exact
479
+ * prior behavior: such an error is NOT caught here and propagates to
480
+ * `startRun`'s outer catch, which marks the run "errored" and (for a
481
+ * background worker) hands off to `chainServerDrivenContinuation` for a
482
+ * fresh invocation.
483
+ *
484
+ * Only safe to enable when the CALLER is a proven durable-background
485
+ * worker (`isInBackgroundFunctionRuntime()`): such a worker has minutes of
486
+ * remaining budget on this same invocation, so resuming in-process avoids
487
+ * a self-dispatch entirely — critically, it avoids the bg-function
488
+ * self-dispatch 404 (a background function cannot invoke its own public
489
+ * URL from inside a live invocation) that this same recoverable-error
490
+ * path would otherwise hit via `chainServerDrivenContinuation`. A
491
+ * foreground turn (~40s budget) must NOT set this — it keeps depending on
492
+ * the existing cross-invocation recovery (foreground self-chain or the
493
+ * client's `auto_continue` re-POST), unchanged.
494
+ */
495
+ resumeResumableErrorsInProcess?: boolean;
496
+ /**
497
+ * Override for the per-invocation continuation attempt cap. Defaults to
498
+ * `MAIN_CHAT_INTERNAL_CONTINUATION_LIMIT` (6) when omitted — unchanged for
499
+ * every existing caller. A proven background-function worker (15-min
500
+ * budget) can pass a higher cap (e.g. `MAX_BACKGROUND_RUN_CONTINUATIONS`)
501
+ * so a run that needs several resumable-error recoveries within one
502
+ * 13-minute chunk isn't cut off at the foreground-sized limit.
503
+ */
504
+ maxContinuations?: number;
505
+ }): Promise<Awaited<ReturnType<typeof runAgentLoop>>>;
473
506
  /**
474
507
  * Hard cap on server-driven background→background continuation chunks for a
475
508
  * single logical turn. A `backgroundFunction` run gets a ~13-min soft timeout,
@@ -1 +1 @@
1
- {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
@@ -3154,7 +3154,7 @@ export async function runAgentLoop(opts) {
3154
3154
  // `_agentImages` result field (stripped from the JSON the model
3155
3155
  // reads, even in demo mode). Demo mode drops the images themselves —
3156
3156
  // text redaction can't scrub pixels, and a screenshot would leak the
3157
- // real names/emails the redaction exists to hide. The images array
3157
+ // real contact names/emails/numbers the redaction exists to hide. The images array
3158
3158
  // never touches the ledger — only the compact text notes appended
3159
3159
  // below are persisted.
3160
3160
  let imageNotes = [];
@@ -3569,9 +3569,13 @@ export async function runAgentLoopWithMainChatInternalContinuations(opts) {
3569
3569
  usage.cacheWriteTokens += next.cacheWriteTokens;
3570
3570
  usage.model = next.model;
3571
3571
  };
3572
+ const resumeResumableErrorsInProcess = opts.resumeResumableErrorsInProcess === true;
3573
+ const maxContinuations = typeof opts.maxContinuations === "number" && opts.maxContinuations > 0
3574
+ ? opts.maxContinuations
3575
+ : MAIN_CHAT_INTERNAL_CONTINUATION_LIMIT;
3572
3576
  const localTurnEvents = [];
3573
3577
  let lastAttemptWasUnfinishedContinuation = false;
3574
- for (let attempt = 0; !opts.signal.aborted && attempt < MAIN_CHAT_INTERNAL_CONTINUATION_LIMIT; attempt++) {
3578
+ for (let attempt = 0; !opts.signal.aborted && attempt < maxContinuations; attempt++) {
3575
3579
  lastAttemptWasUnfinishedContinuation = false;
3576
3580
  let continuationReason;
3577
3581
  const attemptStartIndex = localTurnEvents.length;
@@ -3584,8 +3588,22 @@ export async function runAgentLoopWithMainChatInternalContinuations(opts) {
3584
3588
  }
3585
3589
  opts.send(event);
3586
3590
  };
3587
- const nextUsage = await runAgentLoop({ ...opts, send });
3588
- addUsage(nextUsage);
3591
+ try {
3592
+ const nextUsage = await runAgentLoop({ ...opts, send });
3593
+ addUsage(nextUsage);
3594
+ }
3595
+ catch (err) {
3596
+ // Preserve exact prior behavior unless explicitly opted in: an aborted
3597
+ // signal (real soft-timeout / user stop) or a non-resumable error is
3598
+ // always rethrown, and when `resumeResumableErrorsInProcess` is not
3599
+ // set, EVERY thrown error is rethrown exactly as before.
3600
+ if (!resumeResumableErrorsInProcess ||
3601
+ opts.signal.aborted ||
3602
+ !isResumableEngineError(err)) {
3603
+ throw err;
3604
+ }
3605
+ continuationReason = continuationReasonForResumableError(err);
3606
+ }
3589
3607
  if (!continuationReason || opts.signal.aborted) {
3590
3608
  return usage;
3591
3609
  }
@@ -5031,9 +5049,24 @@ export function createProductionAgentHandler(options) {
5031
5049
  // chaining via the regular function — the Netlify
5032
5050
  // `-background` function is only emitted into the deploy
5033
5051
  // output when the durable flag is on.
5052
+ //
5053
+ // `&& !runsInBackgroundFunction`: a worker PROVEN to already
5054
+ // be executing inside the real `-background` function must
5055
+ // never dispatch back to that same function's own URL — a
5056
+ // background function invoking itself by URL from inside a
5057
+ // live invocation is a documented Netlify platform
5058
+ // limitation (404), unlike the initial foreground→background
5059
+ // dispatch or a worker that landed on the regular function
5060
+ // (a genuinely different function calling the background
5061
+ // one, which works). This only changes the dispatch TARGET
5062
+ // for that one proven-in-bg-function case — by this point
5063
+ // (with the in-process resumable-error resume above) it is
5064
+ // reached only when the chunk genuinely exhausted its
5065
+ // budget, so falling back to the regular `_process-run`
5066
+ // function (40s clamp) here is the correct, safe target.
5034
5067
  chainViaDurableBackground: isAgentChatDurableBackgroundEnabled({
5035
5068
  appOptIn: options.durableBackgroundRuns === true,
5036
- }),
5069
+ }) && !runsInBackgroundFunction,
5037
5070
  });
5038
5071
  }
5039
5072
  }
@@ -5381,6 +5414,26 @@ export function createProductionAgentHandler(options) {
5381
5414
  .slice(0, 200),
5382
5415
  }
5383
5416
  : {}),
5417
+ // A worker PROVEN to be running inside the real 15-min Netlify
5418
+ // `-background` function (`runsInBackgroundFunction`) has minutes of
5419
+ // budget left on THIS invocation. Let it catch a recoverable
5420
+ // transport/gateway error (isResumableEngineError) and resume the
5421
+ // agent loop in-process instead of unwinding out to `startRun`'s
5422
+ // outer catch, which would otherwise hand off to
5423
+ // `chainServerDrivenContinuation` — and for a worker already inside
5424
+ // the background function, that hand-off is a same-function
5425
+ // self-dispatch that 404s on Netlify (a background function cannot
5426
+ // invoke its own public URL from inside a live invocation). A
5427
+ // foreground turn or a worker that landed on the regular ~60s
5428
+ // function (runsInBackgroundFunction false) must NOT set this — it
5429
+ // keeps depending on the existing cross-invocation recovery
5430
+ // (foreground self-chain / client auto_continue re-POST), unchanged.
5431
+ ...(runsInBackgroundFunction
5432
+ ? {
5433
+ resumeResumableErrorsInProcess: true,
5434
+ maxContinuations: MAX_BACKGROUND_RUN_CONTINUATIONS,
5435
+ }
5436
+ : {}),
5384
5437
  };
5385
5438
  send({ type: "activity", label: "Contacting model" });
5386
5439
  // loopUsage is always assigned — either via instrumentAgentLoop or