@agent-native/core 0.98.2 → 0.98.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 (64) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +10 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/agent/production-agent.ts +2 -2
  5. package/corpus/core/src/client/index.ts +2 -0
  6. package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -6
  7. package/corpus/core/src/client/settings/SettingsPanel.tsx +31 -211
  8. package/corpus/core/src/client/settings/agent-settings-search.ts +219 -0
  9. package/corpus/core/src/client/settings/index.ts +4 -0
  10. package/corpus/core/src/demo/actions/toggle-demo-mode.ts +2 -2
  11. package/corpus/core/src/demo/config.ts +6 -6
  12. package/corpus/core/src/demo/redact.ts +18 -76
  13. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +21 -4
  14. package/corpus/templates/analytics/AGENTS.md +6 -6
  15. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +429 -244
  16. package/corpus/templates/analytics/app/components/layout/command-palette-search.ts +93 -0
  17. package/corpus/templates/analytics/app/hooks/use-replay-storage-status.ts +2 -1
  18. package/corpus/templates/analytics/app/lib/demo-chart-trend.ts +46 -33
  19. package/corpus/templates/analytics/app/pages/Settings.tsx +8 -45
  20. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +205 -70
  21. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +32 -16
  22. package/corpus/templates/analytics/app/pages/settings/settings-search.ts +126 -0
  23. package/corpus/templates/analytics/changelog/2026-07-12-command-menu-loading-placeholders-now-stay-below-available-r.md +6 -0
  24. package/corpus/templates/analytics/changelog/2026-07-12-command-menu-search-now-prioritizes-the-best-match.md +6 -0
  25. package/corpus/templates/analytics/changelog/2026-07-12-demo-charts-preserve-source-movement.md +6 -0
  26. package/corpus/templates/analytics/changelog/2026-07-12-replay-storage-settings-stay-readable-at-narrow-widths.md +6 -0
  27. package/corpus/templates/analytics/changelog/2026-07-12-session-replays-preserve-recorded-styling-and-keep-malformed.md +6 -0
  28. package/dist/agent/production-agent.js +2 -2
  29. package/dist/agent/production-agent.js.map +1 -1
  30. package/dist/client/index.d.ts +1 -1
  31. package/dist/client/index.d.ts.map +1 -1
  32. package/dist/client/index.js +1 -1
  33. package/dist/client/index.js.map +1 -1
  34. package/dist/client/settings/DemoModeSection.d.ts +3 -3
  35. package/dist/client/settings/DemoModeSection.js +4 -4
  36. package/dist/client/settings/DemoModeSection.js.map +1 -1
  37. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  38. package/dist/client/settings/SettingsPanel.js +41 -191
  39. package/dist/client/settings/SettingsPanel.js.map +1 -1
  40. package/dist/client/settings/agent-settings-search.d.ts +16 -0
  41. package/dist/client/settings/agent-settings-search.d.ts.map +1 -0
  42. package/dist/client/settings/agent-settings-search.js +178 -0
  43. package/dist/client/settings/agent-settings-search.js.map +1 -0
  44. package/dist/client/settings/index.d.ts +1 -0
  45. package/dist/client/settings/index.d.ts.map +1 -1
  46. package/dist/client/settings/index.js +1 -0
  47. package/dist/client/settings/index.js.map +1 -1
  48. package/dist/collab/routes.d.ts +2 -2
  49. package/dist/collab/struct-routes.d.ts +1 -1
  50. package/dist/demo/actions/toggle-demo-mode.js +2 -2
  51. package/dist/demo/actions/toggle-demo-mode.js.map +1 -1
  52. package/dist/demo/config.js +6 -6
  53. package/dist/demo/config.js.map +1 -1
  54. package/dist/demo/redact.d.ts +7 -5
  55. package/dist/demo/redact.d.ts.map +1 -1
  56. package/dist/demo/redact.js +19 -54
  57. package/dist/demo/redact.js.map +1 -1
  58. package/dist/notifications/routes.d.ts +1 -1
  59. package/dist/progress/routes.d.ts +1 -1
  60. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  61. package/dist/resources/handlers.d.ts +3 -3
  62. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  63. package/dist/server/transcribe-voice.d.ts +1 -1
  64. package/package.json +2 -2
@@ -464,7 +464,11 @@ function EmptySessionsState() {
464
464
  );
465
465
  }
466
466
 
467
- export function ReplayStorageHint() {
467
+ export function ReplayStorageHint({
468
+ embedded = false,
469
+ }: {
470
+ embedded?: boolean;
471
+ }) {
468
472
  const t = useT();
469
473
  const storageStatus = useReplayStorageStatus();
470
474
  const builderStatus = useBuilderStatus();
@@ -523,22 +527,29 @@ export function ReplayStorageHint() {
523
527
 
524
528
  return (
525
529
  <Collapsible open={s3Expanded} onOpenChange={setS3Expanded}>
526
- <div className="mb-6 rounded-md border border-primary/30 bg-primary/5 p-4">
527
- <div className="flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
528
- <div className="flex min-w-0 items-start gap-3">
529
- <div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-background text-primary">
530
- <IconCloud className="h-5 w-5" />
531
- </div>
532
- <div className="min-w-0">
533
- <div className="text-sm font-medium">
534
- {t("sessions.storageSetupTitle")}
530
+ <div
531
+ className={cn(
532
+ !embedded &&
533
+ "mb-6 rounded-md border border-primary/30 bg-primary/5 p-4",
534
+ )}
535
+ >
536
+ <div className="flex flex-wrap items-center gap-4">
537
+ {!embedded ? (
538
+ <div className="flex min-w-[min(100%,24rem)] flex-1 items-start gap-3">
539
+ <div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-background text-primary">
540
+ <IconCloud className="h-5 w-5" />
541
+ </div>
542
+ <div className="min-w-0">
543
+ <div className="text-sm font-medium">
544
+ {t("sessions.storageSetupTitle")}
545
+ </div>
546
+ <p className="mt-0.5 text-xs text-muted-foreground">
547
+ {t("sessions.storageSetupDescription")}
548
+ </p>
535
549
  </div>
536
- <p className="mt-0.5 text-xs text-muted-foreground">
537
- {t("sessions.storageSetupDescription")}
538
- </p>
539
550
  </div>
540
- </div>
541
- <div className="flex shrink-0 flex-wrap items-center gap-3">
551
+ ) : null}
552
+ <div className="flex max-w-full flex-wrap items-center gap-3">
542
553
  <Button
543
554
  type="button"
544
555
  size="sm"
@@ -584,7 +595,12 @@ export function ReplayStorageHint() {
584
595
  </div>
585
596
  </div>
586
597
  <CollapsibleContent>
587
- <div className="mt-4 border-t border-primary/20 pt-4">
598
+ <div
599
+ className={cn(
600
+ "mt-4 border-t pt-4",
601
+ embedded ? "border-border" : "border-primary/20",
602
+ )}
603
+ >
588
604
  <p className="mb-4 text-xs text-muted-foreground">
589
605
  {t("settings.s3OwnBucketDescription")}
590
606
  </p>
@@ -0,0 +1,126 @@
1
+ import {
2
+ getAgentSettingsSearchTabs,
3
+ type SettingsSearchEntry,
4
+ } from "@agent-native/core/client";
5
+
6
+ interface SettingsCommandItem {
7
+ id: string;
8
+ label: string;
9
+ keywords: string;
10
+ href: string;
11
+ }
12
+
13
+ type Translate = (key: string) => string;
14
+
15
+ export function buildAnalyticsGeneralSettingsSearchEntries(
16
+ t: Translate,
17
+ replayStorageConfigured: boolean,
18
+ ): SettingsSearchEntry[] {
19
+ return [
20
+ {
21
+ id: "analytics-account",
22
+ label: t("settings.account"),
23
+ keywords: "profile email signed in identity",
24
+ hash: "account",
25
+ },
26
+ {
27
+ id: "analytics-credentials",
28
+ label: t("settings.credentials"),
29
+ keywords: "data sources api keys manage credentials",
30
+ hash: "credentials",
31
+ },
32
+ {
33
+ id: "analytics-dashboard-templates",
34
+ label: t("settings.dashboardTemplates"),
35
+ keywords: "templates catalog dashboards",
36
+ hash: "dashboard-templates",
37
+ },
38
+ ...(replayStorageConfigured
39
+ ? [
40
+ {
41
+ id: "analytics-replay-storage",
42
+ label: t("sessions.storageSetupTitle"),
43
+ keywords: "session replay recording storage s3 bucket builder",
44
+ hash: "replay-storage",
45
+ },
46
+ ]
47
+ : []),
48
+ {
49
+ id: "analytics-language",
50
+ label: t("settings.languageTitle"),
51
+ keywords: "language locale translation i18n",
52
+ hash: "language",
53
+ },
54
+ {
55
+ id: "analytics-about",
56
+ label: t("settings.about"),
57
+ keywords: "about version info usage",
58
+ hash: "about",
59
+ },
60
+ ];
61
+ }
62
+
63
+ function normalizeLabel(label: string): string {
64
+ return label.trim().toLocaleLowerCase();
65
+ }
66
+
67
+ export function buildAnalyticsSettingsCommandItems(
68
+ t: Translate,
69
+ generalEntries: SettingsSearchEntry[],
70
+ ): SettingsCommandItem[] {
71
+ const tabs = [
72
+ {
73
+ id: "general",
74
+ label: "General",
75
+ keywords: "settings preferences configuration",
76
+ searchEntries: generalEntries.filter(
77
+ (entry) => entry.id !== "analytics-language",
78
+ ),
79
+ },
80
+ {
81
+ id: "alerts",
82
+ label: t("settings.alertsTitle"),
83
+ keywords: "alerts rules notifications thresholds triggers monitoring",
84
+ },
85
+ ...getAgentSettingsSearchTabs(),
86
+ ];
87
+ const commandIndexByDestination = new Map<string, number>();
88
+ const commands: SettingsCommandItem[] = [];
89
+
90
+ const add = (command: SettingsCommandItem) => {
91
+ const destinationKey = `${normalizeLabel(command.label)}\0${command.href}`;
92
+ const existingIndex = commandIndexByDestination.get(destinationKey);
93
+ if (existingIndex !== undefined) {
94
+ const existing = commands[existingIndex];
95
+ commands[existingIndex] = {
96
+ ...existing,
97
+ // Duplicate destinations can come from the app and shared settings
98
+ // catalogs. Preserve both sources' search phrases and tab context.
99
+ keywords: `${existing.keywords} ${command.keywords}`,
100
+ };
101
+ return;
102
+ }
103
+
104
+ commandIndexByDestination.set(destinationKey, commands.length);
105
+ commands.push(command);
106
+ };
107
+
108
+ for (const tab of tabs) {
109
+ add({
110
+ id: `tab:${tab.id}`,
111
+ label: tab.label,
112
+ keywords: `${tab.keywords} settings`,
113
+ href: `/settings#${tab.id}`,
114
+ });
115
+ for (const entry of tab.searchEntries ?? []) {
116
+ add({
117
+ id: entry.id,
118
+ label: entry.label,
119
+ keywords: `${entry.keywords ?? ""} ${entry.description ?? ""} ${tab.label} settings`,
120
+ href: `/settings#${entry.hash ?? entry.tabId ?? tab.id}`,
121
+ });
122
+ }
123
+ }
124
+
125
+ return commands;
126
+ }
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-12
4
+ ---
5
+
6
+ Command menu loading placeholders now stay below available results without flashing.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-12
4
+ ---
5
+
6
+ Command menu search now finds settings, prioritizes the best match, and keeps keyboard selection aligned with each query.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-12
4
+ ---
5
+
6
+ Demo mode trend charts now preserve the source series' real spikes, dips, and smooth stretches.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-12
4
+ ---
5
+
6
+ Replay storage settings stay readable at narrow widths.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-12
4
+ ---
5
+
6
+ Session replays preserve recorded styling and keep malformed ultra-wide captures readable.
@@ -3247,8 +3247,8 @@ export async function runAgentLoop(opts) {
3247
3247
  // content parts; first-party actions opt in via the well-known
3248
3248
  // `_agentImages` result field (stripped from the JSON the model
3249
3249
  // reads, even in demo mode). Demo mode drops the images themselves —
3250
- // text redaction can't scrub pixels, and a screenshot would leak the
3251
- // real contact names/emails/numbers the redaction exists to hide. The images array
3250
+ // text redaction can't scrub pixels, and a screenshot may expose
3251
+ // original visual data. The images array
3252
3252
  // never touches the ledger — only the compact text notes appended
3253
3253
  // below are persisted.
3254
3254
  let imageNotes = [];