@agent-native/core 0.153.10 → 0.154.1
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/README.md +1 -1
- package/corpus/templates/analytics/AGENTS.md +20 -30
- package/corpus/templates/analytics/actions/search-dashboard-references.ts +58 -0
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/analytics/app/lib/utils.ts +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +1 -1
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +2 -0
- package/corpus/templates/analytics/server/lib/dashboards-store.ts +366 -3
- package/corpus/templates/analytics/server/lib/real-data-actions.ts +3 -1
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +6 -2
- package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +1 -1
- package/corpus/templates/calendar/app/lib/utils.ts +1 -1
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +32 -5
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +15 -15
- package/corpus/templates/clips/app/i18n/en-US.ts +3 -3
- package/corpus/templates/clips/app/lib/utils.ts +5 -6
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +43 -8
- package/corpus/templates/clips/desktop/src/app.tsx +26 -12
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +23 -9
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +261 -11
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +21 -3
- package/corpus/templates/clips/shared/mic-audio-cleanup.ts +350 -0
- package/corpus/templates/content/actions/resolve-content-landing.ts +162 -32
- package/corpus/templates/content/app/i18n-data.ts +10 -10
- package/corpus/templates/content/scripts/check-native-deps.mjs +181 -15
- package/corpus/templates/content/shared/content-landing.ts +5 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +79 -7
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +14 -2
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +2 -2
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +35 -11
- package/corpus/templates/design/actions/get-design-system.ts +103 -3
- package/corpus/templates/design/actions/import-design-tokens.ts +37 -8
- package/corpus/templates/design/actions/import-github.ts +32 -138
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +49 -16
- package/corpus/templates/design/actions/present-design-variants.ts +93 -4
- package/corpus/templates/design/actions/run-design-audit.ts +229 -0
- package/corpus/templates/design/actions/sync-design-system-with-builder.ts +64 -0
- package/corpus/templates/design/app/components/design/code-workbench/commands.ts +2 -2
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +17 -4
- package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +5 -1
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +5 -1
- package/corpus/templates/design/app/hooks/use-question-flow.ts +81 -5
- package/corpus/templates/design/app/i18n/en-US.ts +1 -1
- package/corpus/templates/design/app/i18n-data.ts +32 -1
- package/corpus/templates/design/app/i18n-keyboard-shortcuts.ts +10 -10
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +83 -11
- package/corpus/templates/design/app/pages/DesignSystems.tsx +14 -0
- package/corpus/templates/design/app/pages/design-editor/generation-prompt-directives.ts +22 -0
- package/corpus/templates/design/changelog/2026-08-13-a-screen-that-would-render-behind-an-invisible-alpine-overla.md +6 -0
- package/corpus/templates/design/changelog/2026-08-13-attach-a-ui-screenshot-and-the-design-is-reproduced-not-rein.md +6 -0
- package/corpus/templates/design/changelog/2026-08-13-linking-a-design-system-means-you-never-get-generic-directio.md +6 -0
- package/corpus/templates/design/changelog/2026-08-13-the-design-audit-now-reports-when-a-screen-ignores-its-linke.md +6 -0
- package/corpus/templates/design/changelog/2026-08-13-the-design-system-preview-now-shows-how-many-named-tokens-we.md +6 -0
- package/corpus/templates/design/changelog/2026-08-13-your-design-system-prompt-and-reference-screenshots-now-reac.md +6 -0
- package/corpus/templates/design/server/lib/builder-design-system-proxy.ts +18 -2
- package/corpus/templates/design/shared/design-review.ts +1 -0
- package/corpus/templates/design/shared/html-integrity.ts +171 -0
- package/corpus/templates/mail/app/lib/utils.ts +1 -1
- package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +10 -6
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +41 -3
- package/corpus/templates/slides/actions/patch-deck.ts +12 -3
- package/corpus/templates/slides/actions/sync-design-system-with-builder.ts +64 -0
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +1 -1
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +193 -20
- package/corpus/templates/slides/app/components/editor/EditorActionCluster.tsx +73 -1
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +64 -34
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +34 -41
- package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +119 -91
- package/corpus/templates/slides/app/components/editor/ImageOverlay.tsx +16 -0
- package/corpus/templates/slides/app/components/editor/NewDeckReferenceStep.tsx +15 -0
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +158 -31
- package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +30 -14
- package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +2 -2
- package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +4 -1
- package/corpus/templates/slides/app/components/editor/rich-text-selection.ts +14 -0
- package/corpus/templates/slides/app/components/editor/slide-text-targets.ts +24 -0
- package/corpus/templates/slides/app/context/DeckContext.tsx +19 -31
- package/corpus/templates/slides/app/global.css +24 -0
- package/corpus/templates/slides/app/hooks/use-navigation-state.ts +20 -17
- package/corpus/templates/slides/app/i18n/en-US.ts +19 -10
- package/corpus/templates/slides/app/lib/deck-filter.ts +47 -0
- package/corpus/templates/slides/app/lib/export-google-slides-client.ts +15 -4
- package/corpus/templates/slides/app/lib/export-pptx-client.ts +637 -1
- package/corpus/templates/slides/app/lib/image-download.ts +84 -0
- package/corpus/templates/slides/app/lib/utils.ts +1 -1
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +9 -0
- package/corpus/templates/slides/app/pages/Index.tsx +25 -9
- package/corpus/templates/slides/changelog/2026-08-13-clicking-a-slide-thumbnail-now-focuses-it-so-the-slide-shortc.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-13-duplicating-or-restoring-a-slide-now-keeps-its-transition-ani.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-13-opening-presentation-mode-from-the-agent-now-starts-on-the-re.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-13-slide-transitions-can-be-set-from-a-visible-control-in-the-sl.md +6 -0
- package/corpus/templates/slides/netlify.toml +1 -0
- package/corpus/templates/slides/server/lib/builder-design-system-proxy.ts +14 -2
- package/dist/a2a/audience.d.ts +2 -0
- package/dist/a2a/audience.js +23 -0
- package/dist/a2a/client.d.ts +4 -0
- package/dist/a2a/client.js +32 -14
- package/dist/a2a/server.d.ts +9 -4
- package/dist/a2a/server.js +52 -25
- package/dist/a2a/types.d.ts +4 -4
- package/dist/agent/production-agent.js +1 -1
- package/dist/brand-kit/types.d.ts +10 -2
- package/dist/cli/code.js +1 -1
- package/dist/cli/index.js +30 -1
- package/dist/cli/native-dependencies.d.ts +24 -0
- package/dist/cli/native-dependencies.js +264 -0
- package/dist/cli/plan-local.js +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.js +2 -2
- package/dist/cli/visualize-repo.js +1 -1
- package/dist/client/FeedbackButton.js +12 -12
- package/dist/client/agent-chat-adapter.js +3 -4
- package/dist/client/assistant-ui-recovery.d.ts +1 -1
- package/dist/client/assistant-ui-recovery.js +4 -0
- package/dist/client/chat/message-components.d.ts +11 -3
- package/dist/client/chat/message-components.js +31 -5
- package/dist/client/chat/tool-call-display.d.ts +2 -1
- package/dist/client/chat/tool-call-display.js +33 -15
- package/dist/client/db-admin/SqlEditor.js +1 -1
- package/dist/client/dev-overlay/DevOverlay.js +2 -2
- package/dist/client/extensions/portable-extension.js +4 -0
- package/dist/client/guided-questions.d.ts +8 -0
- package/dist/client/guided-questions.js +12 -3
- package/dist/client/sharing/ShareButton.js +16 -24
- package/dist/client/sse-event-processor.js +35 -15
- package/dist/client/tool-display.d.ts +9 -0
- package/dist/client/tool-display.js +39 -0
- package/dist/client/vite-dev-recovery-script.js +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/extensions/html-shell.js +5 -0
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +2 -2
- package/dist/server/agent-capabilities.js +0 -0
- package/dist/server/agent-chat/action-filters-a2a.d.ts +14 -13
- package/dist/server/agent-chat/action-filters-a2a.js +59 -23
- package/dist/server/agent-chat/prompt-resources.js +17 -16
- package/dist/server/agent-chat-plugin.d.ts +9 -0
- package/dist/server/agent-chat-plugin.js +29 -7
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/builder-design-systems.d.ts +33 -1
- package/dist/server/builder-design-systems.js +293 -11
- package/dist/server/design-token-utils.d.ts +11 -0
- package/dist/server/design-token-utils.js +68 -16
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,7 @@ import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
|
4
4
|
import { useEffect, useRef } from "react";
|
|
5
5
|
import { useLocation, useNavigate } from "react-router";
|
|
6
6
|
|
|
7
|
+
import { readStoredDeckFilter, resolveDeckFilter } from "@/lib/deck-filter";
|
|
7
8
|
import { TAB_ID } from "@/lib/tab-id";
|
|
8
9
|
|
|
9
10
|
export interface NavigationState {
|
|
@@ -59,7 +60,10 @@ export function useNavigationState() {
|
|
|
59
60
|
} else {
|
|
60
61
|
const params = new URLSearchParams(location.search);
|
|
61
62
|
state.deckFilter =
|
|
62
|
-
params.get("createdBy") ===
|
|
63
|
+
resolveDeckFilter(params.get("createdBy"), readStoredDeckFilter()) ===
|
|
64
|
+
"mine"
|
|
65
|
+
? "created-by-me"
|
|
66
|
+
: "all";
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
const write = (key: string) =>
|
|
@@ -152,22 +156,21 @@ export function useNavigationState() {
|
|
|
152
156
|
path = `/deck/${cmd.deckId}`;
|
|
153
157
|
if (cmd.view === "present") {
|
|
154
158
|
path += "/present";
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
159
|
+
}
|
|
160
|
+
const internalSlideIndex =
|
|
161
|
+
typeof cmd.slideNumber === "number" &&
|
|
162
|
+
Number.isFinite(cmd.slideNumber) &&
|
|
163
|
+
cmd.slideNumber >= 1
|
|
164
|
+
? cmd.slideNumber - 1
|
|
165
|
+
: cmd.slideIndex;
|
|
166
|
+
if (
|
|
167
|
+
typeof internalSlideIndex === "number" &&
|
|
168
|
+
Number.isFinite(internalSlideIndex) &&
|
|
169
|
+
internalSlideIndex >= 0
|
|
170
|
+
) {
|
|
171
|
+
// Convert the internal zero-based value back to the 1-based
|
|
172
|
+
// ?slide=N URL param both the editor and presentation view read.
|
|
173
|
+
path += `?slide=${internalSlideIndex + 1}`;
|
|
171
174
|
}
|
|
172
175
|
}
|
|
173
176
|
|
|
@@ -242,8 +242,7 @@ const messages = {
|
|
|
242
242
|
code: "Code",
|
|
243
243
|
comments: "Comments",
|
|
244
244
|
editorLink: "Editor link",
|
|
245
|
-
editorLinkDescription:
|
|
246
|
-
"Opens the deck in the editor. Anyone with access can use this link.",
|
|
245
|
+
editorLinkDescription: "Opens the deck in the editor",
|
|
247
246
|
presentationLink: "Presentation link",
|
|
248
247
|
presentationLinkDescription:
|
|
249
248
|
"Opens directly in fullscreen presentation mode.",
|
|
@@ -251,7 +250,7 @@ const messages = {
|
|
|
251
250
|
more: "More",
|
|
252
251
|
importing: "Importing...",
|
|
253
252
|
importFile: "Import file",
|
|
254
|
-
savedVersions: "
|
|
253
|
+
savedVersions: "History",
|
|
255
254
|
lightTheme: "Light theme",
|
|
256
255
|
darkTheme: "Dark theme",
|
|
257
256
|
},
|
|
@@ -273,8 +272,8 @@ const messages = {
|
|
|
273
272
|
exportPdf: "Export as PDF",
|
|
274
273
|
exportPptx: "Export as PPTX",
|
|
275
274
|
connectGoogle: "Connect Google",
|
|
276
|
-
openInGoogleSlides: "
|
|
277
|
-
googleSlidesCreated: "
|
|
275
|
+
openInGoogleSlides: "Export to Google Slides",
|
|
276
|
+
googleSlidesCreated: "Exported to Google Slides",
|
|
278
277
|
googleSlidesCreatedHint:
|
|
279
278
|
"A copy of this deck was created in your Google Drive.",
|
|
280
279
|
duplicateDeck: "Duplicate deck",
|
|
@@ -494,17 +493,17 @@ const messages = {
|
|
|
494
493
|
"The deck was rolled back to the selected snapshot.",
|
|
495
494
|
restoreFailed: "Restore failed",
|
|
496
495
|
restoreFailedDescription: "Could not restore this deck version.",
|
|
497
|
-
backToSavedVersions: "Back to
|
|
498
|
-
savedVersions: "
|
|
499
|
-
description: "Browse
|
|
496
|
+
backToSavedVersions: "Back to history",
|
|
497
|
+
savedVersions: "History",
|
|
498
|
+
description: "Browse deck history and restore a previous snapshot.",
|
|
500
499
|
untitled: "Untitled",
|
|
501
500
|
snapshotUnavailable: "Snapshot unavailable",
|
|
502
501
|
slideNumber: "Slide {{number}}",
|
|
503
502
|
noSlidesInSnapshot: "No slides in this snapshot.",
|
|
504
503
|
restoreThisVersion: "Restore this version",
|
|
505
|
-
noSavedVersions: "No
|
|
504
|
+
noSavedVersions: "No history yet",
|
|
506
505
|
noSavedVersionsDescription:
|
|
507
|
-
"
|
|
506
|
+
"History is saved automatically before future deck edits.",
|
|
508
507
|
},
|
|
509
508
|
editorSidebar: {
|
|
510
509
|
selectSlide: "Select slide {{number}}",
|
|
@@ -561,6 +560,10 @@ const messages = {
|
|
|
561
560
|
deckHasNoSlides: "Deck has no slides.",
|
|
562
561
|
pdfRenderFailed: "Could not render PDF.",
|
|
563
562
|
buildingDeck: "Building deck",
|
|
563
|
+
layoutOverflowWarning: "Layout overflows",
|
|
564
|
+
layoutOverflowDetails: "Show overflow details",
|
|
565
|
+
layoutOverflowVertical: "Vertical overflow: {{pixels}}px",
|
|
566
|
+
layoutOverflowHorizontal: "Horizontal overflow: {{pixels}}px",
|
|
564
567
|
dismissLayoutWarning: "Dismiss layout warning",
|
|
565
568
|
slidesAdded_one: "{{count}} slide added",
|
|
566
569
|
slidesAdded_other: "{{count}} slides added",
|
|
@@ -606,6 +609,8 @@ const messages = {
|
|
|
606
609
|
websitePlaceholder: "example.com or Nike",
|
|
607
610
|
add: "Add",
|
|
608
611
|
githubRepository: "Connect Code: GitHub repository",
|
|
612
|
+
githubRef: "Branch, tag, or commit (optional)",
|
|
613
|
+
githubPaths: "Files or folders, comma-separated (optional)",
|
|
609
614
|
codeFiles: "Connect Code Files",
|
|
610
615
|
codeFilesDrop:
|
|
611
616
|
"CSS, Tailwind config, theme files, design.md — drop or click",
|
|
@@ -639,6 +644,10 @@ const messages = {
|
|
|
639
644
|
sourceUnavailableDescription:
|
|
640
645
|
"Builder could not load the latest source results.",
|
|
641
646
|
sourceOpenInBuilder: "Open in Builder",
|
|
647
|
+
syncSource: "Sync source",
|
|
648
|
+
syncingSource: "Syncing source...",
|
|
649
|
+
syncStarted: "Design system sync started",
|
|
650
|
+
syncFailed: "Could not sync design system",
|
|
642
651
|
loading: "Loading design system",
|
|
643
652
|
loadFailed: "We couldn't load this design system. Close and try again.",
|
|
644
653
|
cancel: "Cancel",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const DECK_FILTER_STORAGE_KEY = "slides:deck-filter";
|
|
2
|
+
|
|
3
|
+
export type DeckFilter = "all" | "mine";
|
|
4
|
+
|
|
5
|
+
export function resolveDeckFilter(
|
|
6
|
+
createdByParam: string | null,
|
|
7
|
+
storedFilter: DeckFilter | undefined,
|
|
8
|
+
): DeckFilter {
|
|
9
|
+
if (createdByParam === "me") return "mine";
|
|
10
|
+
if (createdByParam !== null) return "all";
|
|
11
|
+
return storedFilter ?? "mine";
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function readStoredDeckFilter(
|
|
15
|
+
storage: Pick<Storage, "getItem"> | null | undefined = typeof window ===
|
|
16
|
+
"undefined"
|
|
17
|
+
? null
|
|
18
|
+
: window.localStorage,
|
|
19
|
+
): DeckFilter | undefined {
|
|
20
|
+
if (!storage) return undefined;
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
const stored = storage.getItem(DECK_FILTER_STORAGE_KEY);
|
|
24
|
+
return stored === "all" || stored === "mine" ? stored : undefined;
|
|
25
|
+
} catch {
|
|
26
|
+
// coercion-ok: localStorage failures intentionally fall back to the default filter.
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function writeStoredDeckFilter(
|
|
32
|
+
filter: DeckFilter,
|
|
33
|
+
storage: Pick<Storage, "setItem"> | null | undefined = typeof window ===
|
|
34
|
+
"undefined"
|
|
35
|
+
? null
|
|
36
|
+
: window.localStorage,
|
|
37
|
+
): boolean {
|
|
38
|
+
if (!storage) return false;
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
storage.setItem(DECK_FILTER_STORAGE_KEY, filter);
|
|
42
|
+
return true;
|
|
43
|
+
} catch {
|
|
44
|
+
// coercion-ok: a non-persisted filter is an acceptable browser-storage fallback.
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -11,7 +11,9 @@ interface GoogleSlidesExportSlide {
|
|
|
11
11
|
export type GoogleSlidesExportResult =
|
|
12
12
|
| { url: string }
|
|
13
13
|
/** Drive was unavailable, so the PPTX was downloaded for a manual import. */
|
|
14
|
-
| { url: null; downloaded: true; reason: string }
|
|
14
|
+
| { url: null; downloaded: true; reason: string }
|
|
15
|
+
/** The export action should send the user through Google OAuth first. */
|
|
16
|
+
| { url: null; requiresConnection: true; reason: string };
|
|
15
17
|
|
|
16
18
|
function triggerBlobDownload(blob: Blob, filename: string) {
|
|
17
19
|
const url = URL.createObjectURL(blob);
|
|
@@ -27,9 +29,9 @@ function triggerBlobDownload(blob: Blob, filename: string) {
|
|
|
27
29
|
|
|
28
30
|
/**
|
|
29
31
|
* Creates a native Google Slides deck in the user's Drive when their Google
|
|
30
|
-
* account is connected.
|
|
31
|
-
*
|
|
32
|
-
* reason
|
|
32
|
+
* account is connected. A missing connection is returned to the caller so the
|
|
33
|
+
* export action can launch OAuth; other Drive failures still fall back to a
|
|
34
|
+
* manual PPTX import with the reason reported rather than swallowed.
|
|
33
35
|
*/
|
|
34
36
|
export async function exportDeckToGoogleSlides(
|
|
35
37
|
deckTitle: string,
|
|
@@ -54,10 +56,19 @@ export async function exportDeckToGoogleSlides(
|
|
|
54
56
|
const payload = (await res.json().catch(() => null)) as {
|
|
55
57
|
url?: string;
|
|
56
58
|
error?: string;
|
|
59
|
+
code?: string;
|
|
57
60
|
} | null;
|
|
58
61
|
|
|
59
62
|
if (res.ok && payload?.url) return { url: payload.url };
|
|
60
63
|
|
|
64
|
+
if (payload?.code === "google-not-connected") {
|
|
65
|
+
return {
|
|
66
|
+
url: null,
|
|
67
|
+
requiresConnection: true,
|
|
68
|
+
reason: payload.error ?? "No connected Google account.",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
61
72
|
triggerBlobDownload(blob, filename);
|
|
62
73
|
return {
|
|
63
74
|
url: null,
|