@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.
- package/corpus/core/CHANGELOG.md +6 -0
- package/corpus/core/docs/content/template-clips.md +12 -7
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/client/AgentPanel.tsx +2 -4
- package/corpus/core/src/extensions/content-patch.ts +12 -2
- package/corpus/core/src/server/social-og-image.ts +6 -1
- package/corpus/core/src/vite/client.ts +83 -1
- package/corpus/templates/clips/app/lib/capture-install-options.ts +2 -1
- package/corpus/templates/clips/chrome-extension/STORE_DRAFT.md +5 -2
- package/corpus/templates/content/vite.config.ts +37 -1
- package/dist/client/AgentPanel.d.ts +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +1 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/extensions/content-patch.d.ts.map +1 -1
- package/dist/extensions/content-patch.js +10 -2
- package/dist/extensions/content-patch.js.map +1 -1
- package/dist/server/social-og-image.d.ts.map +1 -1
- package/dist/server/social-og-image.js +5 -1
- package/dist/server/social-og-image.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +83 -1
- package/dist/vite/client.js.map +1 -1
- package/docs/content/template-clips.md +12 -7
- package/package.json +1 -1
package/corpus/core/CHANGELOG.md
CHANGED
|
@@ -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`
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
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
|
|
213
|
-
|
|
214
|
-
|
|
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,
|
package/corpus/core/package.json
CHANGED
|
@@ -76,10 +76,8 @@ const MultiTabAssistantChatLazy = lazy(() =>
|
|
|
76
76
|
})),
|
|
77
77
|
);
|
|
78
78
|
import type { MultiTabAssistantChatHeaderProps } from "./MultiTabAssistantChat.js";
|
|
79
|
-
import {
|
|
80
|
-
|
|
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
|
-
|
|
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: ${
|
|
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
|
|
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
|
|
65
|
-
|
|
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 {
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KASN,MAAM,OAAO,CAAC;AA6Cf,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,
|
|
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
|
|
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";
|