@agent-native/core 0.76.8 → 0.76.10
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/core/CHANGELOG.md +48 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/scripts/generate-og-font-data.mjs +9 -5
- package/corpus/core/src/agent/run-store.ts +21 -0
- package/corpus/core/src/client/AgentPanel.tsx +70 -1
- package/corpus/core/src/client/AssistantChat.tsx +1 -3
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +0 -62
- package/corpus/core/src/client/composer/TiptapComposer.tsx +6 -13
- package/corpus/core/src/server/agent-chat-plugin.ts +26 -0
- package/corpus/core/src/server/og-fonts-data.ts +7 -4
- package/corpus/core/src/server/og-fonts.ts +10 -3
- package/corpus/core/src/server/social-og-image.ts +45 -6
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +199 -19
- package/corpus/templates/analytics/app/pages/adhoc/AdhocRouter.tsx +1 -21
- package/corpus/templates/analytics/app/pages/adhoc/DashboardSkeleton.tsx +35 -0
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +3 -23
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +3 -26
- package/corpus/templates/analytics/changelog/2026-06-24-daily-dashboard-charts-now-use-local-day-buckets-and-show-th.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-24-dashboard-loading-placeholders-now-span-the-available-page-w.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-24-first-party-dashboard-dates-now-align-to-pacific-time-for-da.md +6 -0
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +19 -7
- package/dist/agent/run-store.d.ts +11 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +20 -0
- package/dist/agent/run-store.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +5 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +23 -4
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +1 -3
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -17
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +4 -0
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +5 -9
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +26 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/og-fonts-data.d.ts +1 -0
- package/dist/server/og-fonts-data.d.ts.map +1 -1
- package/dist/server/og-fonts-data.js +5 -4
- package/dist/server/og-fonts-data.js.map +1 -1
- package/dist/server/og-fonts.d.ts +1 -0
- package/dist/server/og-fonts.d.ts.map +1 -1
- package/dist/server/og-fonts.js +10 -4
- package/dist/server/og-fonts.js.map +1 -1
- package/dist/server/social-og-image.d.ts.map +1 -1
- package/dist/server/social-og-image.js +33 -6
- package/dist/server/social-og-image.js.map +1 -1
- package/package.json +1 -1
|
@@ -179,6 +179,11 @@ export function shouldShowAgentPanelChatTabBar(tabs, activeTabId) {
|
|
|
179
179
|
const { hasSubTabs, mainTabs } = getAgentPanelChatTabGroups(tabs, activeTabId);
|
|
180
180
|
return mainTabs.length > 1 || hasSubTabs;
|
|
181
181
|
}
|
|
182
|
+
export function shouldShowAgentPanelPageNewChatButton(tabs, activeTabId, activeTabMessageCount) {
|
|
183
|
+
const activeTab = tabs.find((tab) => tab.id === activeTabId);
|
|
184
|
+
return (Boolean(activeTabId) &&
|
|
185
|
+
(activeTabMessageCount > 0 || activeTab?.status === "running"));
|
|
186
|
+
}
|
|
182
187
|
export function shouldShowAgentPanelCliTabBar(cliTabs) {
|
|
183
188
|
return cliTabs.length > 1;
|
|
184
189
|
}
|
|
@@ -298,7 +303,7 @@ function CodeAccessUnavailablePanel({ title, description, ctaLabel, ctaHref, sec
|
|
|
298
303
|
});
|
|
299
304
|
}, className: "inline-flex items-center gap-1.5 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent", children: [secondaryCtaLabel, _jsx(IconExternalLink, { className: "h-3 w-3" })] })] })] }));
|
|
300
305
|
}
|
|
301
|
-
function AgentPanelInner({ defaultMode = "chat", className, style, apiUrl, emptyStateText, emptyStateAddon, suggestions, dynamicSuggestions, showHeader = true, onCollapse, isFullscreen, onToggleFullscreen, devAppUrl, storageKey, restoreActiveThread = true, scope, browserTabId, threadUrlSync, chatNotice, showTabBar = true, codeAccess, ...assistantChatProps }) {
|
|
306
|
+
function AgentPanelInner({ defaultMode = "chat", className, style, apiUrl, emptyStateText, emptyStateAddon, suggestions, dynamicSuggestions, showHeader = true, onCollapse, isFullscreen, onToggleFullscreen, devAppUrl, storageKey, restoreActiveThread = true, scope, browserTabId, threadUrlSync, chatNotice, showTabBar = true, showPageNewChatButton = false, codeAccess, ...assistantChatProps }) {
|
|
302
307
|
const t = useT();
|
|
303
308
|
const mounted = useClientOnly();
|
|
304
309
|
const keyPrefix = storageKey ? `:${storageKey}` : "";
|
|
@@ -553,6 +558,14 @@ function AgentPanelInner({ defaultMode = "chat", className, style, apiUrl, empty
|
|
|
553
558
|
switchMode,
|
|
554
559
|
t,
|
|
555
560
|
]);
|
|
561
|
+
const renderPageChatOverlay = useCallback(({ activeTabId, activeTabMessageCount, addTab, tabs, }) => {
|
|
562
|
+
if (!shouldShowAgentPanelPageNewChatButton(tabs, activeTabId, activeTabMessageCount)) {
|
|
563
|
+
return null;
|
|
564
|
+
}
|
|
565
|
+
return (_jsx("div", { className: "pointer-events-none absolute inset-x-0 top-3 z-[60] flex justify-end px-3 sm:top-4 sm:px-4", children: _jsxs("button", { type: "button", "data-agent-page-new-chat": "", "aria-label": t("agentPanel.newChat"), onClick: () => {
|
|
566
|
+
addTab();
|
|
567
|
+
}, className: "pointer-events-auto inline-flex h-8 items-center gap-1.5 rounded-md border border-border bg-background/95 px-2.5 text-xs font-medium text-foreground shadow-sm backdrop-blur transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: [_jsx(IconPlus, { size: 14 }), _jsx("span", { children: t("agentPanel.newChat") })] }) }));
|
|
568
|
+
}, [t]);
|
|
556
569
|
// Ref callback: scroll the active tab into view in the overflow container.
|
|
557
570
|
// Uses getBoundingClientRect for reliable positioning regardless of offsetParent.
|
|
558
571
|
const activeTabRefCb = useCallback((el) => {
|
|
@@ -672,7 +685,9 @@ function AgentPanelInner({ defaultMode = "chat", className, style, apiUrl, empty
|
|
|
672
685
|
`[data-agent-fullscreen='true'] .agent-composer-area{` +
|
|
673
686
|
`max-width:${FULLSCREEN_CONTENT_MAX_PX}px;` +
|
|
674
687
|
`margin-left:auto;margin-right:auto;width:100%;}`,
|
|
675
|
-
} }), SHOW_ONBOARDING && mounted && (_jsx(Suspense, { fallback: null, children: _jsx(OnboardingPanel, {}) })), _jsx("div", { className: cn("flex flex-col min-h-0", mode === "chat" ? "flex-1" : "shrink-0"), children: mounted && (_jsx(Suspense, { fallback: _jsx(ChatLoadingSkeleton, { renderHeader: showHeader ? renderChatHeader : undefined, centerComposerWhenEmpty: assistantChatProps.centerComposerWhenEmpty, composerSlot: assistantChatProps.composerSlot, composerAreaClassName: assistantChatProps.composerAreaClassName, composerLayoutVariant: assistantChatProps.composerLayoutVariant }), children: _jsx(MultiTabAssistantChatLazy, { ...assistantChatProps, apiUrl: apiUrl, showHeader: false, renderHeader: showHeader ? renderChatHeader : undefined, showTabBar: showTabBar, renderOverlay:
|
|
688
|
+
} }), SHOW_ONBOARDING && mounted && (_jsx(Suspense, { fallback: null, children: _jsx(OnboardingPanel, {}) })), _jsx("div", { className: cn("flex flex-col min-h-0", mode === "chat" ? "flex-1" : "shrink-0"), children: mounted && (_jsx(Suspense, { fallback: _jsx(ChatLoadingSkeleton, { renderHeader: showHeader ? renderChatHeader : undefined, centerComposerWhenEmpty: assistantChatProps.centerComposerWhenEmpty, composerSlot: assistantChatProps.composerSlot, composerAreaClassName: assistantChatProps.composerAreaClassName, composerLayoutVariant: assistantChatProps.composerLayoutVariant }), children: _jsx(MultiTabAssistantChatLazy, { ...assistantChatProps, apiUrl: apiUrl, showHeader: false, renderHeader: showHeader ? renderChatHeader : undefined, showTabBar: showTabBar, renderOverlay: showPageNewChatButton && !showHeader
|
|
689
|
+
? renderPageChatOverlay
|
|
690
|
+
: undefined, contentHidden: mode !== "chat", emptyStateText: emptyStateText, emptyStateAddon: emptyStateAddon, suggestions: suggestions, dynamicSuggestions: dynamicSuggestions, onSwitchToCli: () => switchMode("cli"), execMode: execMode, onExecModeChange: switchExecMode, storageKey: storageKey, restoreActiveThread: restoreActiveThread, scope: scope, browserTabId: browserTabId, threadUrlSync: threadUrlSync }) })) }), canUseCodeTools
|
|
676
691
|
? mode === "cli" &&
|
|
677
692
|
cliTabs.map((id) => (_jsx("div", { className: "min-h-0 relative flex-1", style: {
|
|
678
693
|
display: id === activeCliTab ? undefined : "none",
|
|
@@ -1040,6 +1055,9 @@ export function AgentPanel(props) {
|
|
|
1040
1055
|
}, [props.storageKey]);
|
|
1041
1056
|
return (_jsx(TooltipProvider, { delayDuration: 200, children: _jsx(AgentPanelErrorBoundary, { onReset: resetPanel, children: _jsx(AgentPanelInner, { ...props }, resetKey) }) }));
|
|
1042
1057
|
}
|
|
1058
|
+
export function shouldDefaultAgentChatSurfacePageNewChatButton(mode, showTabBar) {
|
|
1059
|
+
return mode === "page" && showTabBar !== false;
|
|
1060
|
+
}
|
|
1043
1061
|
/**
|
|
1044
1062
|
* Reusable chat surface backed by AgentPanel internals.
|
|
1045
1063
|
*
|
|
@@ -1047,9 +1065,10 @@ export function AgentPanel(props) {
|
|
|
1047
1065
|
* model controls, scoped chat behavior, and recovery boundary used by the
|
|
1048
1066
|
* sidebar without introducing a second chat implementation.
|
|
1049
1067
|
*/
|
|
1050
|
-
export function AgentChatSurface({ mode = "panel", className, defaultMode = "chat", isFullscreen, style, chatViewTransition = false, ...props }) {
|
|
1068
|
+
export function AgentChatSurface({ mode = "panel", className, defaultMode = "chat", isFullscreen, style, chatViewTransition = false, showPageNewChatButton, ...props }) {
|
|
1051
1069
|
const pageMode = mode === "page";
|
|
1052
|
-
|
|
1070
|
+
const defaultShowPageNewChatButton = shouldDefaultAgentChatSurfacePageNewChatButton(mode, props.showTabBar);
|
|
1071
|
+
return (_jsx(AgentPanel, { ...props, defaultMode: defaultMode, isFullscreen: isFullscreen ?? pageMode, showPageNewChatButton: showPageNewChatButton ?? defaultShowPageNewChatButton, className: cn(pageMode && "h-full min-h-0 w-full overflow-hidden bg-background", chatViewTransition && AGENT_CHAT_VIEW_TRANSITION_CLASS, className), style: chatViewTransition ? getAgentChatViewTransitionStyle(style) : style }));
|
|
1053
1072
|
}
|
|
1054
1073
|
/**
|
|
1055
1074
|
* Wraps app content with a toggleable agent sidebar.
|