@agent-native/core 0.68.2 → 0.68.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.
@@ -1,5 +1,11 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.68.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 9db3c12: Fix Cloudflare Pages worker bundling for content-heavy templates and add the published Clips Chrome extension URL defaults.
8
+
3
9
  ## 0.68.2
4
10
 
5
11
  ### Patch Changes
@@ -54,10 +54,13 @@ itself. The Chrome extension is the path for active-tab developer logs and
54
54
  browser-only repros. In the Clips UI, use the Chrome option for browser logs and
55
55
  the desktop app for the most seamless everyday capture path.
56
56
 
57
+ The Agent-Native Clips Chrome extension listing is
58
+ `https://chromewebstore.google.com/detail/baoipacpchggcdigagnajakiidcgcffn`.
57
59
  If you host your own Clips server, keep the Chrome extension option hidden until
58
- your Web Store listing is live. Set `VITE_CLIPS_CHROME_EXTENSION_ENABLED=1` and
59
- `VITE_CLIPS_CHROME_EXTENSION_URL=<chrome-web-store-url>` after approval to show
60
- the extension beside desktop-app download prompts.
60
+ your Web Store listing is live. Set `VITE_CLIPS_CHROME_EXTENSION_ENABLED=1`
61
+ after approval to show the extension beside desktop-app download prompts. Set
62
+ `VITE_CLIPS_CHROME_EXTENSION_URL` only if you need to override the default
63
+ listing URL.
61
64
 
62
65
  ## Agent-readable clips
63
66
 
@@ -165,7 +168,7 @@ Clips is a larger template with a native recorder (it ships a desktop companion
165
168
 
166
169
  1. **Video storage (required).** Connect a storage backend through the onboarding wizard. The easiest path is Builder.io (free during beta, one-click). For self-hosted storage, set `S3_ENDPOINT`, `S3_BUCKET`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, and optionally `S3_REGION` and `S3_PUBLIC_BASE_URL`. Cloudflare R2 and DigitalOcean Spaces use the same env vars with the `R2_*` prefix.
167
170
  2. **Google Calendar (optional).** To sync upcoming meetings, connect a Google Calendar account from Settings. The OAuth callback URL in dev is `http://localhost:8094/_agent-native/google/callback`. Set up a Google OAuth client in [Google Cloud Console](https://console.cloud.google.com/) with the Gmail and Google Calendar APIs enabled.
168
- 3. **Screen-capture permissions.** On macOS, grant Screen Recording permission to the browser (or the desktop companion app) in System Settings → Privacy & Security → Screen Recording. Browser recordings can save redacted console and fetch/XHR diagnostics from the recorder page. Once a deployment has a published Clips Chrome extension URL, enable `VITE_CLIPS_CHROME_EXTENSION_ENABLED=1` and set `VITE_CLIPS_CHROME_EXTENSION_URL` so users can choose the extension for active-tab browser logs or the desktop app for the smoothest native capture path.
171
+ 3. **Screen-capture permissions.** On macOS, grant Screen Recording permission to the browser (or the desktop companion app) in System Settings → Privacy & Security → Screen Recording. Browser recordings can save redacted console and fetch/XHR diagnostics from the recorder page. Once the Chrome extension listing is available, enable `VITE_CLIPS_CHROME_EXTENSION_ENABLED=1` so users can choose the extension for active-tab browser logs or the desktop app for the smoothest native capture path.
169
172
  4. **Slack previews (optional).** Create a Slack app with `links:read`, `links:write`, and `links.embed:write`; subscribe to `link_shared`; add your Clips share domain under **App Unfurl Domains**; set the Request URL to `https://your-clips.example.com/api/slack/unfurl`; and add the OAuth redirect URL `https://your-clips.example.com/api/slack/oauth/callback`. Configure `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET`, and `SLACK_SIGNING_SECRET`, then connect workspaces from Clips Settings.
170
173
 
171
174
  ### Host your own Clips server
@@ -209,9 +212,11 @@ tray app at your deployment.
209
212
 
210
213
  5. **Enable the Chrome extension after publishing.** Keep
211
214
  `VITE_CLIPS_CHROME_EXTENSION_ENABLED` unset until the Chrome Web Store listing
212
- is approved and you have a public extension URL. Then set it to `1` and set
213
- `VITE_CLIPS_CHROME_EXTENSION_URL` to reveal the browser-log option beside the
214
- desktop app prompts.
215
+ is approved. Then set it to `1` to reveal the browser-log option beside the
216
+ desktop app prompts. The default listing URL is
217
+ `https://chromewebstore.google.com/detail/baoipacpchggcdigagnajakiidcgcffn`;
218
+ set `VITE_CLIPS_CHROME_EXTENSION_URL` only if your deployment uses a
219
+ different extension listing.
215
220
 
216
221
  6. **Connect optional integrations.** Google Calendar powers the Meetings tab,
217
222
  `GEMINI_API_KEY` or Builder.io Connect powers transcript cleanup and titles,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.68.2",
3
+ "version": "0.68.3",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=22"
@@ -76,10 +76,8 @@ const MultiTabAssistantChatLazy = lazy(() =>
76
76
  })),
77
77
  );
78
78
  import type { MultiTabAssistantChatHeaderProps } from "./MultiTabAssistantChat.js";
79
- import {
80
- assistantUiRecoverableRenderErrorKind,
81
- type AssistantChatProps,
82
- } from "./AssistantChat.js";
79
+ import type { AssistantChatProps } from "./AssistantChat.js";
80
+ import { assistantUiRecoverableRenderErrorKind } from "./assistant-ui-recovery.js";
83
81
  import { useDevMode } from "./use-dev-mode.js";
84
82
  import { useScreenRefreshKey } from "./use-db-sync.js";
85
83
  import { useQuery, useQueryClient } from "@tanstack/react-query";
@@ -116,13 +116,23 @@ export async function applyExtensionContentUpdate(
116
116
  export async function formatExtensionHtml(content: string): Promise<string> {
117
117
  try {
118
118
  const prettier = await import("prettier");
119
- return await prettier.format(content, {
119
+ const formatted = await prettier.format(content, {
120
120
  parser: "html",
121
121
  htmlWhitespaceSensitivity: "ignore",
122
122
  });
123
+ return typeof formatted === "string" ? formatted : content;
123
124
  } catch (err: any) {
125
+ const message = String(err?.message ?? err);
126
+ if (
127
+ message.includes("Cannot find package 'prettier'") ||
128
+ message.includes('Cannot find package "prettier"') ||
129
+ message.includes("Cannot find module 'prettier'") ||
130
+ message.includes('Cannot find module "prettier"')
131
+ ) {
132
+ return content;
133
+ }
124
134
  throw new Error(
125
- `Unable to format extension HTML with Prettier: ${err?.message ?? err}`,
135
+ `Unable to format extension HTML with Prettier: ${message}`,
126
136
  );
127
137
  }
128
138
  }
@@ -330,7 +330,12 @@ export function renderAgentNativeOgImageSvg(
330
330
  export async function renderAgentNativeOgImagePng(
331
331
  input: AgentNativeOgImageInput = {},
332
332
  ): Promise<Uint8Array> {
333
- const { Resvg } = await import(/* @vite-ignore */ "@resvg/resvg-js");
333
+ const overridePackage =
334
+ typeof process !== "undefined"
335
+ ? process.env.AGENT_NATIVE_RESVG_PACKAGE
336
+ : undefined;
337
+ const resvgPackage = overridePackage || "@resvg/resvg-js";
338
+ const { Resvg } = await import(/* @vite-ignore */ resvgPackage);
334
339
  // Feed resvg the embedded Liberation Sans font explicitly. System fonts can't
335
340
  // be relied on: Linux serverless runtimes (Netlify/Lambda) ship neither Arial
336
341
  // nor Inter, so without a bundled font every `<text>` rendered blank.
@@ -1320,6 +1320,87 @@ function ssrStubPlugin(packages: string[]): Plugin | null {
1320
1320
  if (!packages.length) return null;
1321
1321
  const stubbed = new Set(packages);
1322
1322
  const STUB_ID = "\0agent-native-ssr-stub";
1323
+ const namedExports = [
1324
+ "ActionBarPrimitive",
1325
+ "AllSelection",
1326
+ "Array",
1327
+ "AssistantRuntimeProvider",
1328
+ "Awareness",
1329
+ "BranchPickerPrimitive",
1330
+ "BubbleMenu",
1331
+ "CodeBlockLowlight",
1332
+ "Collaboration",
1333
+ "CollaborationCaret",
1334
+ "ComposerPrimitive",
1335
+ "CompositeAttachmentAdapter",
1336
+ "DOMParser",
1337
+ "Decoration",
1338
+ "DecorationSet",
1339
+ "Editor",
1340
+ "EditorContent",
1341
+ "Extension",
1342
+ "FitAddon",
1343
+ "Fragment",
1344
+ "Image",
1345
+ "Link",
1346
+ "Map",
1347
+ "Markdown",
1348
+ "Mark",
1349
+ "MessagePrimitive",
1350
+ "Node",
1351
+ "NodeSelection",
1352
+ "NodeViewContent",
1353
+ "NodeViewWrapper",
1354
+ "Placeholder",
1355
+ "Plugin",
1356
+ "PluginKey",
1357
+ "ReactNodeViewRenderer",
1358
+ "Selection",
1359
+ "SimpleImageAttachmentAdapter",
1360
+ "SimpleTextAttachmentAdapter",
1361
+ "StarterKit",
1362
+ "Table",
1363
+ "TableCell",
1364
+ "TableHeader",
1365
+ "TableRow",
1366
+ "TaskItem",
1367
+ "TaskList",
1368
+ "Terminal",
1369
+ "TextSelection",
1370
+ "ThreadPrimitive",
1371
+ "WebLinksAddon",
1372
+ "captureException",
1373
+ "common",
1374
+ "createLowlight",
1375
+ "defaultUrlTransform",
1376
+ "extensions",
1377
+ "findTable",
1378
+ "format",
1379
+ "Doc",
1380
+ "getHTMLFromFragment",
1381
+ "getIsolationScope",
1382
+ "init",
1383
+ "isChangeOrigin",
1384
+ "mergeAttributes",
1385
+ "renderToString",
1386
+ "applyUpdate",
1387
+ "encodeStateVector",
1388
+ "encodeStateAsUpdate",
1389
+ "mergeUpdates",
1390
+ "useAui",
1391
+ "useComposer",
1392
+ "useComposerRuntime",
1393
+ "useCurrentEditor",
1394
+ "useEditor",
1395
+ "useLocalRuntime",
1396
+ "useMessagePartText",
1397
+ "useMessageRuntime",
1398
+ "useThread",
1399
+ "useThreadRuntime",
1400
+ "withScope",
1401
+ "XmlFragment",
1402
+ "XmlText",
1403
+ ];
1323
1404
  return {
1324
1405
  name: "agent-native-ssr-stub-heavy-libs",
1325
1406
  enforce: "pre",
@@ -1345,7 +1426,8 @@ function ssrStubPlugin(packages: string[]): Plugin | null {
1345
1426
  "return new Proxy(() => {}, handler); " +
1346
1427
  "} };" +
1347
1428
  "const stub = new Proxy(() => {}, handler);" +
1348
- "export default stub;"
1429
+ "export default stub;" +
1430
+ namedExports.map((name) => `export const ${name} = stub;`).join("")
1349
1431
  );
1350
1432
  },
1351
1433
  };
@@ -4,7 +4,8 @@ function isTruthy(value: unknown): boolean {
4
4
  }
5
5
 
6
6
  const chromeExtensionUrl =
7
- import.meta.env.VITE_CLIPS_CHROME_EXTENSION_URL?.trim() ?? "";
7
+ import.meta.env.VITE_CLIPS_CHROME_EXTENSION_URL?.trim() ??
8
+ "https://chromewebstore.google.com/detail/baoipacpchggcdigagnajakiidcgcffn";
8
9
 
9
10
  export const clipsChromeExtensionEnabled = isTruthy(
10
11
  import.meta.env.VITE_CLIPS_CHROME_EXTENSION_ENABLED,
@@ -6,6 +6,8 @@ Name: Agent-Native Clips
6
6
 
7
7
  Chrome Web Store item ID: `baoipacpchggcdigagnajakiidcgcffn`
8
8
 
9
+ Chrome Web Store URL: `https://chromewebstore.google.com/detail/baoipacpchggcdigagnajakiidcgcffn`
10
+
9
11
  Summary: Start Clips recordings from Chrome with optional redacted console and network diagnostics.
10
12
 
11
13
  Category: Productivity
@@ -61,7 +63,8 @@ approved and there is a stable public URL.
61
63
 
62
64
  - `VITE_CLIPS_CHROME_EXTENSION_ENABLED=1` reveals the Chrome option beside
63
65
  Clips desktop prompts.
64
- - `VITE_CLIPS_CHROME_EXTENSION_URL=<chrome-web-store-url>` powers the install
65
- links.
66
+ - `VITE_CLIPS_CHROME_EXTENSION_URL` overrides the default install URL
67
+ (`https://chromewebstore.google.com/detail/baoipacpchggcdigagnajakiidcgcffn`)
68
+ if a deployment uses a different listing.
66
69
  - Leave both unset while submitting the draft so production continues to send
67
70
  users directly to the desktop app.
@@ -346,6 +346,42 @@ const dynamicLocalComponentDirs = (() => {
346
346
  }
347
347
  })();
348
348
 
349
+ const cloudflareSsrStubs =
350
+ process.env.NITRO_PRESET === "cloudflare_pages"
351
+ ? [
352
+ "@assistant-ui/react",
353
+ "@tiptap/core",
354
+ "@tiptap/extension-blockquote",
355
+ "@tiptap/extension-code-block-lowlight",
356
+ "@tiptap/extension-collaboration",
357
+ "@tiptap/extension-collaboration-caret",
358
+ "@tiptap/extension-image",
359
+ "@tiptap/extension-link",
360
+ "@tiptap/extension-placeholder",
361
+ "@tiptap/extension-table",
362
+ "@tiptap/extension-table-cell",
363
+ "@tiptap/extension-table-header",
364
+ "@tiptap/extension-table-row",
365
+ "@tiptap/extension-task-item",
366
+ "@tiptap/extension-task-list",
367
+ "@tiptap/pm",
368
+ "@tiptap/react",
369
+ "@tiptap/starter-kit",
370
+ "@xterm/addon-fit",
371
+ "@xterm/addon-web-links",
372
+ "@xterm/xterm",
373
+ "katex",
374
+ "lowlight",
375
+ "prettier",
376
+ "react-markdown",
377
+ "remark-gfm",
378
+ "remark-mdx",
379
+ "tiptap-markdown",
380
+ "yjs",
381
+ "y-protocols",
382
+ ]
383
+ : [];
384
+
349
385
  export default defineConfig({
350
386
  plugins: [contentLocalComponentsPlugin(), reactRouter()],
351
387
  fsAllow: [
@@ -354,7 +390,7 @@ export default defineConfig({
354
390
  ],
355
391
  // shiki only runs in AssistantChat's useEffect — keep it out of the
356
392
  // CF Pages Functions bundle (25 MiB limit).
357
- ssrStubs: ["shiki"],
393
+ ssrStubs: ["shiki", ...cloudflareSsrStubs],
358
394
  optimizeDeps: {
359
395
  include: [
360
396
  "yjs",
@@ -22,7 +22,7 @@
22
22
  */
23
23
  import React from "react";
24
24
  import type { MultiTabAssistantChatHeaderProps } from "./MultiTabAssistantChat.js";
25
- import { type AssistantChatProps } from "./AssistantChat.js";
25
+ import type { AssistantChatProps } from "./AssistantChat.js";
26
26
  export declare function getAgentPanelChatTabGroups(tabs: MultiTabAssistantChatHeaderProps["tabs"], activeTabId: string): {
27
27
  activeTab: import("./MultiTabAssistantChat.js").ChatTab | undefined;
28
28
  childTabs: import("./MultiTabAssistantChat.js").ChatTab[];
@@ -1 +1 @@
1
- {"version":3,"file":"AgentPanel.d.ts","sourceRoot":"","sources":["../../src/client/AgentPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentPanel.d.ts","sourceRoot":"","sources":["../../src/client/AgentPanel.tsx"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ import { RunsTrayMenuItem } from "./progress/RunsTray.js";
35
35
  const MultiTabAssistantChatLazy = lazy(() => import("./MultiTabAssistantChat.js").then((m) => ({
36
36
  default: m.MultiTabAssistantChat,
37
37
  })));
38
- import { assistantUiRecoverableRenderErrorKind, } from "./AssistantChat.js";
38
+ import { assistantUiRecoverableRenderErrorKind } from "./assistant-ui-recovery.js";
39
39
  import { useDevMode } from "./use-dev-mode.js";
40
40
  import { useScreenRefreshKey } from "./use-db-sync.js";
41
41
  import { useQuery, useQueryClient } from "@tanstack/react-query";