@agent-native/core 0.136.0 → 0.136.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.
Files changed (120) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/analysis-workspace/SKILL.md +31 -5
  3. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +7 -0
  4. package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +52 -19
  5. package/corpus/templates/analytics/.agents/skills/provider-api/SKILL.md +25 -3
  6. package/corpus/templates/analytics/AGENTS.md +6 -7
  7. package/corpus/templates/analytics/actions/gong-calls.ts +3 -3
  8. package/corpus/templates/analytics/actions/provider-api-catalog.ts +1 -1
  9. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +1 -1
  10. package/corpus/templates/analytics/app/i18n-data.ts +46 -0
  11. package/corpus/templates/analytics/app/pages/Settings.tsx +67 -1
  12. package/corpus/templates/analytics/app/pages/settings/settings-search.ts +6 -0
  13. package/corpus/templates/analytics/changelog/2026-08-03-dashboard-builds-now-finish-without-an-extra-confirmation.md +6 -0
  14. package/corpus/templates/analytics/changelog/2026-08-03-error-alert-emails-are-opt-in.md +6 -0
  15. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +10 -9
  16. package/corpus/templates/analytics/server/lib/error-capture.ts +38 -10
  17. package/corpus/templates/analytics/server/lib/gong.ts +27 -4
  18. package/corpus/templates/analytics/server/plugins/agent-chat.ts +64 -4
  19. package/corpus/templates/analytics/shared/analytics-user-prefs.ts +7 -0
  20. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +15 -6
  21. package/corpus/templates/clips/actions/apply-rewind-extension.ts +9 -0
  22. package/corpus/templates/clips/actions/cleanup-dictation.ts +2 -2
  23. package/corpus/templates/clips/actions/cleanup-transcript.ts +8 -11
  24. package/corpus/templates/clips/actions/clear-edits.ts +15 -2
  25. package/corpus/templates/clips/actions/create-recording-agent-link.ts +10 -0
  26. package/corpus/templates/clips/actions/finalize-meeting.ts +6 -6
  27. package/corpus/templates/clips/actions/finalize-recording.ts +33 -8
  28. package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +1 -3
  29. package/corpus/templates/clips/actions/list-recordings.ts +39 -24
  30. package/corpus/templates/clips/actions/list-transactional-email-ai-requests.ts +4 -1
  31. package/corpus/templates/clips/actions/regenerate-title.ts +2 -2
  32. package/corpus/templates/clips/actions/stitch-recordings.ts +36 -7
  33. package/corpus/templates/clips/app/components/editor/rewind-extension-dialog.tsx +1 -4
  34. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +3 -1
  35. package/corpus/templates/clips/app/components/library/recording-card.tsx +9 -0
  36. package/corpus/templates/clips/app/components/player/recording-views-badge.tsx +52 -7
  37. package/corpus/templates/clips/app/hooks/use-library.ts +1 -0
  38. package/corpus/templates/clips/app/hooks/use-transactional-email-bridge.ts +17 -10
  39. package/corpus/templates/clips/app/i18n/en-US.ts +3 -0
  40. package/corpus/templates/clips/app/lib/timestamp-mapping.ts +5 -0
  41. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +1 -0
  42. package/corpus/templates/clips/app/routes/share.$shareId.tsx +2 -0
  43. package/corpus/templates/clips/changelog/2026-07-31-agent-views-now-show-the-agent-s-name-from-the-link-it-was-g.md +6 -0
  44. package/corpus/templates/clips/changelog/2026-07-31-clip-cards-and-the-watch-share-page-header-now-show-agent-vi.md +6 -0
  45. package/corpus/templates/clips/changelog/2026-08-01-recordings-stored-in-private-s3-compatible-buckets-finalize-.md +6 -0
  46. package/corpus/templates/clips/changelog/2026-08-03-clip-cleanup-titles-and-meeting-summaries-now-use-luna-by-de.md +6 -0
  47. package/corpus/templates/clips/changelog/2026-08-03-get-a-monthly-recap-email-showing-how-many-people-and-ai-age.md +6 -0
  48. package/corpus/templates/clips/changelog/2026-08-03-get-an-email-the-first-time-an-ai-agent-reads-one-of-your-cl.md +6 -0
  49. package/corpus/templates/clips/learnings.defaults.md +2 -2
  50. package/corpus/templates/clips/package.json +1 -1
  51. package/corpus/templates/clips/scripts/send-real-recap.ts +165 -0
  52. package/corpus/templates/clips/scripts/send-test-emails.ts +60 -0
  53. package/corpus/templates/clips/server/db/schema.ts +4 -0
  54. package/corpus/templates/clips/server/jobs/transactional-emails.ts +256 -0
  55. package/corpus/templates/clips/server/lib/agent-views.ts +38 -11
  56. package/corpus/templates/clips/server/lib/media-storage-provenance.ts +16 -0
  57. package/corpus/templates/clips/server/lib/public-agent-context.ts +3 -1
  58. package/corpus/templates/clips/server/lib/recap-metrics.ts +373 -0
  59. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +84 -4
  60. package/corpus/templates/clips/server/lib/transactional-email-store.ts +41 -2
  61. package/corpus/templates/clips/server/lib/transactional-email-templates.ts +245 -3
  62. package/corpus/templates/clips/server/plugins/db.ts +16 -0
  63. package/corpus/templates/clips/server/register-secrets.ts +2 -2
  64. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +7 -2
  65. package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +42 -1
  66. package/corpus/templates/design/actions/take-design-screenshot.ts +5 -3
  67. package/corpus/templates/design/package.json +1 -1
  68. package/corpus/templates/design/server/lib/playwright-runtime.ts +13 -5
  69. package/corpus/templates/mail/actions/get-automation-settings.ts +4 -12
  70. package/corpus/templates/mail/app/pages/SettingsPage.tsx +1 -1
  71. package/corpus/templates/mail/changelog/2026-08-03-inbox-automations-now-prefer-the-lowest-cost-luna-model-when.md +6 -0
  72. package/corpus/templates/mail/server/lib/automation-engine.ts +19 -14
  73. package/corpus/templates/mail/server/lib/automation-model.ts +110 -0
  74. package/corpus/templates/mail/server/plugins/agent-chat.ts +1 -1
  75. package/corpus/templates/slides/actions/generate-slides-ai.ts +92 -24
  76. package/corpus/templates/slides/changelog/2026-08-03-legacy-slide-outlines-now-prefer-the-lowest-cost-luna-model-.md +6 -0
  77. package/corpus/templates/tasks/package.json +2 -2
  78. package/dist/agent/production-agent.d.ts +2 -2
  79. package/dist/agent/production-agent.js +1 -1
  80. package/dist/catalog.json +2 -0
  81. package/dist/client/AgentTaskCard.js +4 -2
  82. package/dist/client/i18n.js +3 -0
  83. package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
  84. package/dist/collab/awareness.d.ts +2 -2
  85. package/dist/collab/routes.d.ts +1 -1
  86. package/dist/collab/struct-routes.d.ts +1 -1
  87. package/dist/localization/default-messages.d.ts +5 -0
  88. package/dist/localization/default-messages.js +5 -0
  89. package/dist/mcp/oauth-client-metadata.d.ts +7 -0
  90. package/dist/mcp/oauth-client-metadata.js +47 -0
  91. package/dist/mcp/oauth-route.js +7 -3
  92. package/dist/mcp/oauth-store.d.ts +2 -0
  93. package/dist/mcp/oauth-store.js +25 -3
  94. package/dist/notifications/routes.d.ts +1 -1
  95. package/dist/observability/routes.d.ts +3 -3
  96. package/dist/observability/traces.d.ts +1 -1
  97. package/dist/observability/traces.js +2 -1
  98. package/dist/progress/routes.d.ts +1 -1
  99. package/dist/provider-api/index.js +29 -1
  100. package/dist/secrets/routes.d.ts +6 -6
  101. package/dist/server/agent-access.d.ts +3 -1
  102. package/dist/server/agent-access.js +2 -1
  103. package/dist/server/agent-chat/browser-team-tools.d.ts +1 -0
  104. package/dist/server/agent-chat/browser-team-tools.js +5 -4
  105. package/dist/server/agent-chat/context-tools.js +2 -2
  106. package/dist/server/agent-chat-plugin.js +13 -6
  107. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  108. package/dist/server/agent-teams-run-queue.d.ts +2 -0
  109. package/dist/server/agent-teams.d.ts +2 -0
  110. package/dist/server/agent-teams.js +45 -2
  111. package/dist/server/request-context.d.ts +2 -0
  112. package/dist/server/short-lived-token.d.ts +7 -0
  113. package/dist/server/short-lived-token.js +7 -1
  114. package/dist/server/ssr-handler.js +19 -1
  115. package/dist/server/transcribe-voice.d.ts +1 -1
  116. package/dist/server/transcribe-voice.js +24 -16
  117. package/dist/vite/client.d.ts +37 -1
  118. package/dist/vite/client.js +110 -1
  119. package/docs/content/template-assets.mdx +14 -4
  120. package/package.json +3 -4
@@ -46,6 +46,7 @@ const MAX_TRANSCRIPT_CHARS = 150_000;
46
46
  // Public Builder transcription model id. The Builder gateway maps this to
47
47
  // Gemini 3.1 Flash-Lite.
48
48
  const BUILDER_GEMINI_TRANSCRIPTION_MODEL = "gemini-3-1-flash-lite";
49
+ const BUILDER_CLEANUP_MODEL = "gpt-5-6-luna";
49
50
  // Gemini Flash Lite BYOK path when GEMINI_API_KEY is configured.
50
51
  // Gemini accepts inline audio; we just give it the bytes and a "transcribe
51
52
  // this" prompt and it replies with text. 2.5x faster TTFT than 2.5 Flash
@@ -492,7 +493,14 @@ async function cleanupTranscriptText({ event, text, instructions, contextPack, p
492
493
  };
493
494
  }
494
495
  try {
495
- const cleaned = await withRequestContext(() => cleanupWithBuilder({ text: original, instructions, clientAbortSignal }));
496
+ const cleaned = await withRequestContext(() => cleanupWithBuilder({
497
+ text: original,
498
+ instructions,
499
+ clientAbortSignal,
500
+ model: providerPref === "builder-gemini"
501
+ ? BUILDER_GEMINI_TRANSCRIPTION_MODEL
502
+ : undefined,
503
+ }));
496
504
  return { text: finalizeText(cleaned || original) };
497
505
  }
498
506
  catch (err) {
@@ -562,12 +570,13 @@ async function cleanupTranscriptText({ event, text, instructions, contextPack, p
562
570
  // Fall through to BYOK providers, then raw text.
563
571
  }
564
572
  }
565
- const geminiKey = await resolveApiKey("GEMINI_API_KEY");
566
- if (geminiKey) {
573
+ const openaiKey = await resolveApiKey("OPENAI_API_KEY");
574
+ if (openaiKey) {
567
575
  try {
568
- const cleaned = await cleanupWithGemini({
576
+ const cleaned = await cleanupWithChatProvider({
577
+ provider: "openai",
569
578
  text: original,
570
- apiKey: geminiKey,
579
+ apiKey: openaiKey,
571
580
  instructions,
572
581
  clientAbortSignal,
573
582
  });
@@ -578,13 +587,12 @@ async function cleanupTranscriptText({ event, text, instructions, contextPack, p
578
587
  // Fall through.
579
588
  }
580
589
  }
581
- const groqKey = await resolveApiKey("GROQ_API_KEY");
582
- if (groqKey) {
590
+ const geminiKey = await resolveApiKey("GEMINI_API_KEY");
591
+ if (geminiKey) {
583
592
  try {
584
- const cleaned = await cleanupWithChatProvider({
585
- provider: "groq",
593
+ const cleaned = await cleanupWithGemini({
586
594
  text: original,
587
- apiKey: groqKey,
595
+ apiKey: geminiKey,
588
596
  instructions,
589
597
  clientAbortSignal,
590
598
  });
@@ -595,13 +603,13 @@ async function cleanupTranscriptText({ event, text, instructions, contextPack, p
595
603
  // Fall through.
596
604
  }
597
605
  }
598
- const openaiKey = await resolveApiKey("OPENAI_API_KEY");
599
- if (openaiKey) {
606
+ const groqKey = await resolveApiKey("GROQ_API_KEY");
607
+ if (groqKey) {
600
608
  try {
601
609
  const cleaned = await cleanupWithChatProvider({
602
- provider: "openai",
610
+ provider: "groq",
603
611
  text: original,
604
- apiKey: openaiKey,
612
+ apiKey: groqKey,
605
613
  instructions,
606
614
  clientAbortSignal,
607
615
  });
@@ -614,7 +622,7 @@ async function cleanupTranscriptText({ event, text, instructions, contextPack, p
614
622
  }
615
623
  return { text: finalizeText(original) };
616
624
  }
617
- async function cleanupWithBuilder({ text, instructions, clientAbortSignal, }) {
625
+ async function cleanupWithBuilder({ text, instructions, clientAbortSignal, model, }) {
618
626
  const engine = createBuilderEngine();
619
627
  const controller = new AbortController();
620
628
  const timeout = setTimeout(() => controller.abort(), 8_000);
@@ -623,7 +631,7 @@ async function cleanupWithBuilder({ text, instructions, clientAbortSignal, }) {
623
631
  let terminalError;
624
632
  try {
625
633
  for await (const event of engine.stream({
626
- model: BUILDER_GEMINI_TRANSCRIPTION_MODEL,
634
+ model: model ?? BUILDER_CLEANUP_MODEL,
627
635
  systemPrompt: buildCleanupSystemPrompt(instructions),
628
636
  messages: [
629
637
  {
@@ -17,6 +17,42 @@ import { type AgentNativeRouteWarmupConfigInput } from "../shared/route-warmup-c
17
17
  * this has no effect outside `vite dev`.
18
18
  */
19
19
  declare function debounceNitroFullReloadHotUpdate(plugin: Plugin): Plugin;
20
+ /**
21
+ * Invalidate every React Router virtual module in every Vite environment, and
22
+ * tell each affected server environment's runner to re-import.
23
+ *
24
+ * Returns the environment names that had something to invalidate.
25
+ */
26
+ declare function mirrorReactRouterVirtualInvalidation(server: any, now?: () => number): string[];
27
+ /**
28
+ * Mirror React Router's dev-time virtual-module invalidation into the
29
+ * environment that actually serves requests.
30
+ *
31
+ * `@react-router/dev`'s framework-mode plugin invalidates its virtual modules
32
+ * through `server.moduleGraph` — Vite's deprecated back-compat graph, which
33
+ * proxies only the `client` and `ssr` environments. Agent Native serves SSR
34
+ * from Nitro's `nitro` environment, so that invalidation never reaches the
35
+ * `virtual:react-router/server-build` the request path evaluates, and the route
36
+ * table stays frozen at whatever it was when the dev server booted. A new route
37
+ * file then 404s forever, and a deleted one makes the stale manifest import a
38
+ * file that no longer exists — which fails the whole build, so EVERY page 500s
39
+ * with "Failed to load url … Does the file exist?" until the process restarts.
40
+ * Editing a route's contents hides all of this, because that path goes through
41
+ * Vite's normal HMR pipeline, which is environment-aware.
42
+ *
43
+ * Hooking React Router's call rather than the file watcher is what makes this
44
+ * ordering-safe: it awaits `updatePluginContext()` before invalidating, so by
45
+ * the time we mirror, the freshly resolved routes are already in place.
46
+ *
47
+ * React Router's RSC plugin already iterates `environments`; only the classic
48
+ * plugin still uses the back-compat graph (still true in 8.3.0). Delete this
49
+ * once upstream's classic path is environment-aware.
50
+ */
51
+ declare function installReactRouterVirtualInvalidationMirror(server: any, { debounceMs, now, warn, }?: {
52
+ debounceMs?: number;
53
+ now?: () => number;
54
+ warn?: (message: string) => void;
55
+ }): boolean;
20
56
  /**
21
57
  * Build the `resolve.dedupe` list dynamically. Reads core's package.json and
22
58
  * collects every peerDependency that the consuming app also declares. This
@@ -179,5 +215,5 @@ export declare function agentNative(options?: AgentNativeVitePluginOptions): Plu
179
215
  * preset. This compatibility wrapper remains for existing templates.
180
216
  */
181
217
  export declare function defineConfig(options?: ClientConfigOptions): UserConfig;
182
- export { getClientDedupe as _getClientDedupe, getDefaultOptimizeDeps as _getDefaultOptimizeDeps, findCorePackageRoot as _findCorePackageRoot, getReactRouterAliases as _getReactRouterAliases, nitroStartupGate as _nitroStartupGate, nitroStartupRecovery as _nitroStartupRecovery, nitroModuleGraphSignature as _nitroModuleGraphSignature, debounceNitroFullReloadHotUpdate as _debounceNitroFullReloadHotUpdate, };
218
+ export { getClientDedupe as _getClientDedupe, getDefaultOptimizeDeps as _getDefaultOptimizeDeps, findCorePackageRoot as _findCorePackageRoot, getReactRouterAliases as _getReactRouterAliases, nitroStartupGate as _nitroStartupGate, nitroStartupRecovery as _nitroStartupRecovery, nitroModuleGraphSignature as _nitroModuleGraphSignature, debounceNitroFullReloadHotUpdate as _debounceNitroFullReloadHotUpdate, installReactRouterVirtualInvalidationMirror as _installReactRouterVirtualInvalidationMirror, mirrorReactRouterVirtualInvalidation as _mirrorReactRouterVirtualInvalidation, };
183
219
  //# sourceMappingURL=client.d.ts.map
@@ -285,6 +285,114 @@ function debounceNitroFullReloadHotUpdate(plugin) {
285
285
  }
286
286
  return { ...plugin, hotUpdate: wrappedHotUpdate };
287
287
  }
288
+ /** Prefix Vite gives React Router's virtual modules. */
289
+ const REACT_ROUTER_VIRTUAL_ID_PREFIX = "\0virtual:react-router/";
290
+ /**
291
+ * Debounce window for coalescing mirrored route-table reloads.
292
+ *
293
+ * A coding agent that rewrites a route tree emits one watcher event per file,
294
+ * and React Router re-resolves its config for each one. Keep this independent
295
+ * of `NITRO_FULL_RELOAD_DEBOUNCE_MS`: that one throttles Nitro's own reload
296
+ * broadcasts, this one throttles ours, and tuning either must not silently
297
+ * retune the other.
298
+ */
299
+ const REACT_ROUTER_INVALIDATION_MIRROR_DEBOUNCE_MS = 300;
300
+ /**
301
+ * Invalidate every React Router virtual module in every Vite environment, and
302
+ * tell each affected server environment's runner to re-import.
303
+ *
304
+ * Returns the environment names that had something to invalidate.
305
+ */
306
+ function mirrorReactRouterVirtualInvalidation(server, now = Date.now) {
307
+ const timestamp = now();
308
+ const touched = [];
309
+ for (const [name, environment] of Object.entries(server?.environments ?? {})) {
310
+ const moduleGraph = environment?.moduleGraph;
311
+ if (!moduleGraph?.idToModuleMap)
312
+ continue;
313
+ const seen = new Set();
314
+ let invalidated = 0;
315
+ for (const id of [...moduleGraph.idToModuleMap.keys()]) {
316
+ if (!id.startsWith(REACT_ROUTER_VIRTUAL_ID_PREFIX))
317
+ continue;
318
+ const mod = moduleGraph.getModuleById(id);
319
+ if (!mod)
320
+ continue;
321
+ moduleGraph.invalidateModule(mod, seen, timestamp, true);
322
+ invalidated += 1;
323
+ }
324
+ if (invalidated === 0)
325
+ continue;
326
+ touched.push(name);
327
+ // Server environments evaluate the build inside a runner that keeps its own
328
+ // module cache; graph invalidation alone never reaches it. Client
329
+ // environments get their update through React Router's own HMR handling.
330
+ if (environment?.config?.consumer !== "client") {
331
+ environment?.hot?.send?.({ type: "full-reload" });
332
+ }
333
+ }
334
+ return touched;
335
+ }
336
+ /**
337
+ * Mirror React Router's dev-time virtual-module invalidation into the
338
+ * environment that actually serves requests.
339
+ *
340
+ * `@react-router/dev`'s framework-mode plugin invalidates its virtual modules
341
+ * through `server.moduleGraph` — Vite's deprecated back-compat graph, which
342
+ * proxies only the `client` and `ssr` environments. Agent Native serves SSR
343
+ * from Nitro's `nitro` environment, so that invalidation never reaches the
344
+ * `virtual:react-router/server-build` the request path evaluates, and the route
345
+ * table stays frozen at whatever it was when the dev server booted. A new route
346
+ * file then 404s forever, and a deleted one makes the stale manifest import a
347
+ * file that no longer exists — which fails the whole build, so EVERY page 500s
348
+ * with "Failed to load url … Does the file exist?" until the process restarts.
349
+ * Editing a route's contents hides all of this, because that path goes through
350
+ * Vite's normal HMR pipeline, which is environment-aware.
351
+ *
352
+ * Hooking React Router's call rather than the file watcher is what makes this
353
+ * ordering-safe: it awaits `updatePluginContext()` before invalidating, so by
354
+ * the time we mirror, the freshly resolved routes are already in place.
355
+ *
356
+ * React Router's RSC plugin already iterates `environments`; only the classic
357
+ * plugin still uses the back-compat graph (still true in 8.3.0). Delete this
358
+ * once upstream's classic path is environment-aware.
359
+ */
360
+ function installReactRouterVirtualInvalidationMirror(server, { debounceMs = REACT_ROUTER_INVALIDATION_MIRROR_DEBOUNCE_MS, now = Date.now, warn = console.warn, } = {}) {
361
+ const backCompatGraph = server?.moduleGraph;
362
+ const original = backCompatGraph?.invalidateModule;
363
+ if (typeof original !== "function") {
364
+ warn("[agent-native] Vite's server.moduleGraph.invalidateModule is unavailable, " +
365
+ "so React Router route additions and deletions cannot be mirrored into " +
366
+ "the Nitro dev environment. Adding or deleting a route file will need a " +
367
+ "dev server restart to take effect.");
368
+ return false;
369
+ }
370
+ let pending;
371
+ backCompatGraph.invalidateModule = function patchedInvalidateModule(mod, ...rest) {
372
+ const result = original.call(this, mod, ...rest);
373
+ if (!mod?.id?.startsWith(REACT_ROUTER_VIRTUAL_ID_PREFIX))
374
+ return result;
375
+ if (pending)
376
+ clearTimeout(pending);
377
+ pending = setTimeout(() => {
378
+ pending = undefined;
379
+ mirrorReactRouterVirtualInvalidation(server, now);
380
+ }, debounceMs);
381
+ // Never hold the process open just for a pending reload.
382
+ pending.unref?.();
383
+ return result;
384
+ };
385
+ return true;
386
+ }
387
+ function reactRouterVirtualInvalidationMirrorPlugin() {
388
+ return {
389
+ name: "agent-native-react-router-invalidation-mirror",
390
+ apply: "serve",
391
+ configureServer(server) {
392
+ installReactRouterVirtualInvalidationMirror(server);
393
+ },
394
+ };
395
+ }
288
396
  /**
289
397
  * Sync discovery for the workspace-core in an enterprise monorepo.
290
398
  *
@@ -2408,6 +2516,7 @@ function createAgentNativePlugins(options, { command, includeReactTransform, use
2408
2516
  baseRedirectGuard(),
2409
2517
  portExposer(),
2410
2518
  nitroStartupGate(),
2519
+ reactRouterVirtualInvalidationMirrorPlugin(),
2411
2520
  silenceConnectionResets(),
2412
2521
  rolldownInputFix(),
2413
2522
  // Nitro Vite plugin for dev-mode API route serving and HMR.
@@ -2778,5 +2887,5 @@ export function defineConfig(options = {}) {
2778
2887
  }),
2779
2888
  };
2780
2889
  }
2781
- export { getClientDedupe as _getClientDedupe, getDefaultOptimizeDeps as _getDefaultOptimizeDeps, findCorePackageRoot as _findCorePackageRoot, getReactRouterAliases as _getReactRouterAliases, nitroStartupGate as _nitroStartupGate, nitroStartupRecovery as _nitroStartupRecovery, nitroModuleGraphSignature as _nitroModuleGraphSignature, debounceNitroFullReloadHotUpdate as _debounceNitroFullReloadHotUpdate, };
2890
+ export { getClientDedupe as _getClientDedupe, getDefaultOptimizeDeps as _getDefaultOptimizeDeps, findCorePackageRoot as _findCorePackageRoot, getReactRouterAliases as _getReactRouterAliases, nitroStartupGate as _nitroStartupGate, nitroStartupRecovery as _nitroStartupRecovery, nitroModuleGraphSignature as _nitroModuleGraphSignature, debounceNitroFullReloadHotUpdate as _debounceNitroFullReloadHotUpdate, installReactRouterVirtualInvalidationMirror as _installReactRouterVirtualInvalidationMirror, mirrorReactRouterVirtualInvalidation as _mirrorReactRouterVirtualInvalidation, };
2782
2891
  //# sourceMappingURL=client.js.map
@@ -5,7 +5,7 @@ description: "An agent-native digital asset manager and cross-agent generation s
5
5
 
6
6
  # Assets
7
7
 
8
- Assets is a workspace for creating and managing brand-consistent media for anyone who needs on-brand images and video without wrangling prompts, models, and aspect ratios every time. It organizes uploads and generated results into libraries and folders, lets teams collect examples for blog heroes, diagrams, landing pages, product shots, videos, and logos, then routes generation through the agent chat so every asset can be reviewed and refined.
8
+ Assets is a workspace for creating and managing brand-consistent media, especially when image or video models have a clear advantage. It organizes uploads and generated results into libraries and folders, lets teams collect approved references for product shots, logos, social images, photorealistic scenes, and other media to use in a Design composition or elsewhere, then routes generation through the agent chat so every asset can be reviewed and refined.
9
9
 
10
10
  <WireframeBlock id="doc-block-assets1">
11
11
  <Screen
@@ -81,6 +81,14 @@ When you open the app, the selected library, prompt, references, and generated c
81
81
 
82
82
  </Diagram>
83
83
 
84
+ ## Assets vs Design
85
+
86
+ Use **Design** for most visual work. Start there for landing pages, ads, diagrams, and other compositions when you need HTML/CSS, precise layout, editable structure, or design-tool import/export.
87
+
88
+ Use **Assets** when image or video models are better suited to the job and the result can be used as media rather than edited piece by piece. This includes photorealistic or pixel-based imagery, product shots, social images, and video. Hand-drawn or Excalidraw-style diagrams can be an exception when you want the generated image as-is.
89
+
90
+ The intended workflow is to start in Design and let the Design agent delegate supporting image generation to Assets when a PNG or other media asset is the right fit. Use the result in the Design composition or in another app.
91
+
84
92
  ## When to pick it
85
93
 
86
94
  - **Your team needs reusable visual direction**, not one-off generic media prompts — collect approved logos, product shots, and style examples so generations stay on brand.
@@ -104,9 +112,11 @@ Live demo: [assets.agent-native.com](https://assets.agent-native.com).
104
112
  want to manage.
105
113
  2. **Upload references.** Add approved logos, product shots, style examples, or
106
114
  existing videos so the agent has concrete material to work from.
107
- 3. **Generate from chat or a library.** Ask for a hero image, diagram, product
108
- shot, or video variant. Assets stores the prompt, references, model, status,
109
- and lineage for review.
115
+ 3. **Generate a media asset from chat or a library.** Ask for a product shot,
116
+ social image, photorealistic scene, image-based diagram, or video variant.
117
+ For a landing page, ad, or other editable composition, start in Design and
118
+ use Assets for supporting media. Assets stores the prompt, references,
119
+ model, status, and lineage for review.
110
120
  4. **Use the asset elsewhere.** Copy the export, embed the picker in another
111
121
  app, or let another agent call Assets over A2A.
112
122
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.136.0",
3
+ "version": "0.136.3",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -400,7 +400,7 @@
400
400
  "y-protocols": "^1.0.7",
401
401
  "yjs": "^13.6.31",
402
402
  "zod": "^4.3.6",
403
- "@agent-native/recap-cli": "0.5.2",
403
+ "@agent-native/recap-cli": "0.5.3",
404
404
  "@agent-native/toolkit": "^0.12.2"
405
405
  },
406
406
  "devDependencies": {
@@ -441,7 +441,7 @@
441
441
  "express": "^5.2.1",
442
442
  "mermaid": "11.15.0",
443
443
  "node-pty": "^1.1.0",
444
- "playwright": "^1.61.1",
444
+ "playwright": "1.61.1",
445
445
  "react": "^19.2.7",
446
446
  "react-dom": "^19.2.7",
447
447
  "react-router": "^8.1.0",
@@ -579,7 +579,6 @@
579
579
  "jszip": "^3.10.1",
580
580
  "mammoth": "^1.12.0",
581
581
  "officeparser": "^7.3.0",
582
- "playwright": "^1.61.1",
583
582
  "sharp": "^0.35.3"
584
583
  },
585
584
  "engines": {