@agent-native/core 0.84.17 → 0.84.20

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 (75) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +19 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/agent/run-store.ts +180 -13
  5. package/corpus/core/src/client/AssistantChat.tsx +49 -0
  6. package/corpus/core/src/client/active-run-state.ts +30 -0
  7. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +41 -3
  8. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +133 -0
  9. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +2 -2
  10. package/corpus/core/src/client/session-replay.ts +2 -2
  11. package/corpus/core/src/extensions/html-shell.ts +17 -3
  12. package/corpus/core/src/extensions/theme.ts +39 -0
  13. package/corpus/templates/analytics/actions/provider-api-request.ts +8 -1
  14. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +2 -1
  15. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +91 -33
  16. package/corpus/templates/analytics/changelog/2026-07-01-session-replay-recordings-upload-reliably-in-production.md +6 -0
  17. package/corpus/templates/analytics/server/handlers/session-replay.ts +46 -5
  18. package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +10 -0
  19. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +15 -6
  20. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +22 -0
  21. package/corpus/templates/calendar/app/hooks/use-bookings.ts +6 -2
  22. package/corpus/templates/calendar/app/i18n/zh-TW.ts +4 -0
  23. package/corpus/templates/calendar/app/i18n-data.ts +107 -0
  24. package/corpus/templates/calendar/app/lib/google-oauth-setup.ts +17 -0
  25. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +9 -1
  26. package/corpus/templates/calendar/app/pages/BookingPage.tsx +40 -26
  27. package/corpus/templates/calendar/app/pages/Settings.tsx +3 -1
  28. package/corpus/templates/calendar/changelog/2026-07-01-booking-links-now-show-an-error-when-calendar-availability-c.md +6 -0
  29. package/corpus/templates/calendar/server/handlers/bookings.ts +78 -13
  30. package/corpus/templates/calendar/server/handlers/google-auth.ts +3 -2
  31. package/corpus/templates/calendar/server/lib/google-calendar.ts +16 -2
  32. package/corpus/templates/clips/changelog/2026-07-01-chrome-recording-uploads-now-serialize-chunks-to-avoid-resum.md +6 -0
  33. package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
  34. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +30 -23
  35. package/corpus/templates/design/app/lib/design-system-preview.ts +69 -0
  36. package/corpus/templates/design/app/pages/DesignSystems.tsx +71 -50
  37. package/corpus/templates/design/changelog/2026-07-01-design-systems-no-longer-crash-on-responsive-tokens.md +6 -0
  38. package/dist/agent/run-store.d.ts +19 -6
  39. package/dist/agent/run-store.d.ts.map +1 -1
  40. package/dist/agent/run-store.js +163 -13
  41. package/dist/agent/run-store.js.map +1 -1
  42. package/dist/client/AssistantChat.d.ts +2 -0
  43. package/dist/client/AssistantChat.d.ts.map +1 -1
  44. package/dist/client/AssistantChat.js +36 -2
  45. package/dist/client/AssistantChat.js.map +1 -1
  46. package/dist/client/active-run-state.d.ts +3 -0
  47. package/dist/client/active-run-state.d.ts.map +1 -1
  48. package/dist/client/active-run-state.js +24 -0
  49. package/dist/client/active-run-state.js.map +1 -1
  50. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  51. package/dist/client/extensions/EmbeddedExtension.js +32 -3
  52. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  53. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  54. package/dist/client/extensions/ExtensionViewer.js +59 -2
  55. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  56. package/dist/client/extensions/ExtensionsSidebarSection.js +2 -2
  57. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  58. package/dist/client/session-replay.js +2 -2
  59. package/dist/client/session-replay.js.map +1 -1
  60. package/dist/collab/routes.d.ts +2 -2
  61. package/dist/extensions/html-shell.d.ts.map +1 -1
  62. package/dist/extensions/html-shell.js +17 -3
  63. package/dist/extensions/html-shell.js.map +1 -1
  64. package/dist/extensions/theme.d.ts +9 -0
  65. package/dist/extensions/theme.d.ts.map +1 -1
  66. package/dist/extensions/theme.js +38 -0
  67. package/dist/extensions/theme.js.map +1 -1
  68. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  69. package/dist/notifications/routes.d.ts +2 -2
  70. package/dist/observability/routes.d.ts +8 -8
  71. package/dist/progress/routes.d.ts +1 -1
  72. package/dist/resources/handlers.d.ts +3 -3
  73. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  74. package/dist/server/transcribe-voice.d.ts +1 -1
  75. package/package.json +1 -1
@@ -1,3 +1,41 @@
1
+ /**
2
+ * Canonical set of semantic theme token names shared by the app and extension
3
+ * iframes. This is the single source of truth: `getThemeVars` bakes default
4
+ * values for these into every iframe, and the host reads the *actual* computed
5
+ * values for the same names to sync its live palette into embedded extensions
6
+ * (see EmbeddedExtension). Custom properties can't be enumerated portably from
7
+ * a computed style, so the names must be listed explicitly.
8
+ */
9
+ export const THEME_VAR_NAMES = [
10
+ "--background",
11
+ "--foreground",
12
+ "--card",
13
+ "--card-foreground",
14
+ "--popover",
15
+ "--popover-foreground",
16
+ "--primary",
17
+ "--primary-foreground",
18
+ "--secondary",
19
+ "--secondary-foreground",
20
+ "--muted",
21
+ "--muted-foreground",
22
+ "--accent",
23
+ "--accent-foreground",
24
+ "--destructive",
25
+ "--destructive-foreground",
26
+ "--border",
27
+ "--input",
28
+ "--ring",
29
+ "--radius",
30
+ "--sidebar-background",
31
+ "--sidebar-foreground",
32
+ "--sidebar-primary",
33
+ "--sidebar-primary-foreground",
34
+ "--sidebar-accent",
35
+ "--sidebar-accent-foreground",
36
+ "--sidebar-border",
37
+ "--sidebar-ring",
38
+ ];
1
39
  /**
2
40
  * CSS variables baked into every extension iframe. Both light and dark are
3
41
  * always emitted — the `.dark` class on the iframe's `<html>` toggles between
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/extensions/theme.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,OAAiB;IAC5C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEP,CAAC;AACH,CAAC","sourcesContent":["/**\n * CSS variables baked into every extension iframe. Both light and dark are\n * always emitted — the `.dark` class on the iframe's `<html>` toggles between\n * them. This means a parent theme toggle becomes a single class toggle inside\n * the iframe (cheap, atomic, no full reload), and there is no race where the\n * iframe is briefly half-themed while postMessage values arrive.\n */\nexport function getThemeVars(_isDark?: boolean): string {\n return `\n:root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 240 10% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 240 10% 3.9%;\n --primary: 240 5.9% 10%;\n --primary-foreground: 0 0% 98%;\n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 240 5.9% 10%;\n --radius: 0.5rem;\n --sidebar-background: 0 0% 98%;\n --sidebar-foreground: 240 5.3% 26.1%;\n --sidebar-primary: 240 5.9% 10%;\n --sidebar-primary-foreground: 0 0% 98%;\n --sidebar-accent: 240 4.8% 95.9%;\n --sidebar-accent-foreground: 240 5.9% 10%;\n --sidebar-border: 220 13% 91%;\n --sidebar-ring: 240 5.9% 10%;\n color-scheme: light;\n}\n.dark {\n --background: 240 10% 3.9%;\n --foreground: 0 0% 98%;\n --card: 240 10% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 240 10% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 240 5.9% 10%;\n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 240 3.7% 15.9%;\n --muted-foreground: 240 5% 64.9%;\n --accent: 240 3.7% 15.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 240 4.9% 83.9%;\n --sidebar-background: 240 5.9% 10%;\n --sidebar-foreground: 240 4.8% 95.9%;\n --sidebar-primary: 224.3 76.3% 48%;\n --sidebar-primary-foreground: 0 0% 100%;\n --sidebar-accent: 240 3.7% 15.9%;\n --sidebar-accent-foreground: 240 4.8% 95.9%;\n --sidebar-border: 240 3.7% 15.9%;\n --sidebar-ring: 240 4.9% 83.9%;\n color-scheme: dark;\n}\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}`;\n}\n"]}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/extensions/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc;IACd,cAAc;IACd,QAAQ;IACR,mBAAmB;IACnB,WAAW;IACX,sBAAsB;IACtB,WAAW;IACX,sBAAsB;IACtB,aAAa;IACb,wBAAwB;IACxB,SAAS;IACT,oBAAoB;IACpB,UAAU;IACV,qBAAqB;IACrB,eAAe;IACf,0BAA0B;IAC1B,UAAU;IACV,SAAS;IACT,QAAQ;IACR,UAAU;IACV,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;IACnB,8BAA8B;IAC9B,kBAAkB;IAClB,6BAA6B;IAC7B,kBAAkB;IAClB,gBAAgB;CACR,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,OAAiB;IAC5C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEP,CAAC;AACH,CAAC","sourcesContent":["/**\n * Canonical set of semantic theme token names shared by the app and extension\n * iframes. This is the single source of truth: `getThemeVars` bakes default\n * values for these into every iframe, and the host reads the *actual* computed\n * values for the same names to sync its live palette into embedded extensions\n * (see EmbeddedExtension). Custom properties can't be enumerated portably from\n * a computed style, so the names must be listed explicitly.\n */\nexport const THEME_VAR_NAMES = [\n \"--background\",\n \"--foreground\",\n \"--card\",\n \"--card-foreground\",\n \"--popover\",\n \"--popover-foreground\",\n \"--primary\",\n \"--primary-foreground\",\n \"--secondary\",\n \"--secondary-foreground\",\n \"--muted\",\n \"--muted-foreground\",\n \"--accent\",\n \"--accent-foreground\",\n \"--destructive\",\n \"--destructive-foreground\",\n \"--border\",\n \"--input\",\n \"--ring\",\n \"--radius\",\n \"--sidebar-background\",\n \"--sidebar-foreground\",\n \"--sidebar-primary\",\n \"--sidebar-primary-foreground\",\n \"--sidebar-accent\",\n \"--sidebar-accent-foreground\",\n \"--sidebar-border\",\n \"--sidebar-ring\",\n] as const;\n\n/**\n * CSS variables baked into every extension iframe. Both light and dark are\n * always emitted — the `.dark` class on the iframe's `<html>` toggles between\n * them. This means a parent theme toggle becomes a single class toggle inside\n * the iframe (cheap, atomic, no full reload), and there is no race where the\n * iframe is briefly half-themed while postMessage values arrive.\n */\nexport function getThemeVars(_isDark?: boolean): string {\n return `\n:root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 240 10% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 240 10% 3.9%;\n --primary: 240 5.9% 10%;\n --primary-foreground: 0 0% 98%;\n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 240 5.9% 10%;\n --radius: 0.5rem;\n --sidebar-background: 0 0% 98%;\n --sidebar-foreground: 240 5.3% 26.1%;\n --sidebar-primary: 240 5.9% 10%;\n --sidebar-primary-foreground: 0 0% 98%;\n --sidebar-accent: 240 4.8% 95.9%;\n --sidebar-accent-foreground: 240 5.9% 10%;\n --sidebar-border: 220 13% 91%;\n --sidebar-ring: 240 5.9% 10%;\n color-scheme: light;\n}\n.dark {\n --background: 240 10% 3.9%;\n --foreground: 0 0% 98%;\n --card: 240 10% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 240 10% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 240 5.9% 10%;\n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 240 3.7% 15.9%;\n --muted-foreground: 240 5% 64.9%;\n --accent: 240 3.7% 15.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 240 4.9% 83.9%;\n --sidebar-background: 240 5.9% 10%;\n --sidebar-foreground: 240 4.8% 95.9%;\n --sidebar-primary: 224.3 76.3% 48%;\n --sidebar-primary-foreground: 0 0% 100%;\n --sidebar-accent: 240 3.7% 15.9%;\n --sidebar-accent-foreground: 240 4.8% 95.9%;\n --sidebar-border: 240 3.7% 15.9%;\n --sidebar-ring: 240 4.9% 83.9%;\n color-scheme: dark;\n}\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}`;\n}\n"]}
@@ -3,18 +3,18 @@ declare const _default: import("../../action.js").ActionDefinition<{
3
3
  url?: string;
4
4
  filename?: string;
5
5
  }, {
6
+ id?: undefined;
6
7
  error: string;
7
8
  configured?: undefined;
8
9
  connectPath?: undefined;
9
10
  url?: undefined;
10
- id?: undefined;
11
11
  provider?: undefined;
12
12
  } | {
13
+ id?: undefined;
13
14
  error: string;
14
15
  configured: boolean;
15
16
  connectPath: string;
16
17
  url?: undefined;
17
- id?: undefined;
18
18
  provider?: undefined;
19
19
  } | {
20
20
  error?: undefined;
@@ -13,13 +13,13 @@
13
13
  export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
14
14
  count: number;
15
15
  updated?: undefined;
16
- ok?: undefined;
17
16
  error?: undefined;
17
+ ok?: undefined;
18
18
  } | {
19
19
  count?: undefined;
20
20
  updated: number;
21
- ok?: undefined;
22
21
  error?: undefined;
22
+ ok?: undefined;
23
23
  } | {
24
24
  count?: undefined;
25
25
  updated?: undefined;
@@ -41,28 +41,28 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
41
41
  thumbsUpRate: number;
42
42
  avgEvalScore: number;
43
43
  } | {
44
- ok?: undefined;
45
- error?: undefined;
46
44
  summary: import("./types.js").TraceSummary;
47
45
  spans: import("./types.js").TraceSpan[];
48
46
  id?: undefined;
49
- } | {
50
- ok?: undefined;
51
47
  error?: undefined;
48
+ ok?: undefined;
49
+ } | {
52
50
  summary?: undefined;
53
51
  spans?: undefined;
54
52
  id: string;
55
- } | {
53
+ error?: undefined;
56
54
  ok?: undefined;
55
+ } | {
57
56
  summary?: undefined;
58
57
  spans?: undefined;
59
- error: any;
60
58
  id?: undefined;
59
+ error: any;
60
+ ok?: undefined;
61
61
  } | {
62
- error?: undefined;
63
62
  summary?: undefined;
64
63
  spans?: undefined;
65
- ok: boolean;
66
64
  id?: undefined;
65
+ error?: undefined;
66
+ ok: boolean;
67
67
  }>>;
68
68
  //# sourceMappingURL=routes.d.ts.map
@@ -15,7 +15,7 @@ export declare function createProgressHandler(): import("h3").EventHandlerWithFe
15
15
  error: string;
16
16
  ok?: undefined;
17
17
  } | {
18
- ok: boolean;
19
18
  error?: undefined;
19
+ ok: boolean;
20
20
  }>>;
21
21
  //# sourceMappingURL=routes.d.ts.map
@@ -49,11 +49,11 @@ export declare function handleUpdateResource(event: any): Promise<import("./stor
49
49
  }>;
50
50
  /** DELETE /_agent-native/resources/:id — delete a resource */
51
51
  export declare function handleDeleteResource(event: any): Promise<{
52
- error: string;
53
52
  ok?: undefined;
53
+ error: string;
54
54
  } | {
55
- ok: boolean;
56
55
  error?: undefined;
56
+ ok: boolean;
57
57
  }>;
58
58
  /** POST /_agent-native/resources/upload — upload a file as a resource */
59
59
  export declare function handleUploadResource(event: any): Promise<import("./store.js").Resource | {
@@ -73,9 +73,9 @@ export declare function handleUploadResource(event: any): Promise<import("./stor
73
73
  runId: string | null;
74
74
  expiresAt: number | null;
75
75
  metadata: string | null;
76
+ error?: undefined;
76
77
  url: string;
77
78
  provider: string;
78
- error?: undefined;
79
79
  }>;
80
80
  export {};
81
81
  //# sourceMappingURL=handlers.d.ts.map
@@ -27,11 +27,11 @@ export declare function resolveAgentEngineApiKeyWriteTarget(event: H3Event, scop
27
27
  export declare function createAgentEngineApiKeyHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
28
28
  error: any;
29
29
  } | {
30
- error?: undefined;
31
30
  ok: boolean;
32
31
  key: string;
33
32
  baseUrlKey?: string;
34
33
  scope: AgentEngineApiKeyScope;
34
+ error?: undefined;
35
35
  }>>;
36
36
  export {};
37
37
  //# sourceMappingURL=agent-engine-api-key-route.d.ts.map
@@ -20,7 +20,7 @@ export declare function createTranscribeVoiceHandler(): import("h3").EventHandle
20
20
  error: string;
21
21
  text?: undefined;
22
22
  } | {
23
- text: string;
24
23
  error?: undefined;
24
+ text: string;
25
25
  }>>;
26
26
  //# sourceMappingURL=transcribe-voice.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.84.17",
3
+ "version": "0.84.20",
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": {