@agent-native/core 0.81.0 → 0.81.2

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 (47) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/client/AgentPanel.tsx +33 -1
  5. package/corpus/core/src/server/core-routes-plugin.ts +4 -5
  6. package/corpus/core/src/server/create-server.ts +3 -5
  7. package/corpus/core/src/server/google-oauth.ts +4 -0
  8. package/corpus/templates/calendar/actions/create-event.ts +9 -2
  9. package/corpus/templates/calendar/actions/event-action-helpers.ts +8 -2
  10. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +11 -0
  11. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +17 -0
  12. package/corpus/templates/calendar/app/hooks/use-google-auth.ts +70 -39
  13. package/corpus/templates/calendar/changelog/2026-06-30-google-calendar-connection-errors-now-stay-in-the-app-instea.md +6 -0
  14. package/corpus/templates/calendar/server/handlers/google-auth.ts +77 -21
  15. package/corpus/templates/calendar/server/lib/google-calendar.ts +19 -8
  16. package/corpus/templates/design/actions/apply-design-token-edit.ts +13 -6
  17. package/corpus/templates/design/actions/import-design-tokens.ts +17 -13
  18. package/corpus/templates/design/actions/preview-design-token-edit.ts +20 -3
  19. package/corpus/templates/design/actions/run-design-audit.ts +9 -2
  20. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +35 -14
  21. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +20 -3
  22. package/corpus/templates/design/app/pages/DesignEditor.tsx +237 -51
  23. package/corpus/templates/design/app/pages/VisualEdit.tsx +1 -1
  24. package/corpus/templates/design/changelog/2026-06-30-design-editor-undo-drag-drop-style-editing-and-visual-edit-s.md +6 -0
  25. package/corpus/templates/design/shared/resolve-tweaks.ts +29 -6
  26. package/dist/client/AgentPanel.d.ts +1 -1
  27. package/dist/client/AgentPanel.d.ts.map +1 -1
  28. package/dist/client/AgentPanel.js +18 -3
  29. package/dist/client/AgentPanel.js.map +1 -1
  30. package/dist/collab/awareness.d.ts +2 -2
  31. package/dist/collab/awareness.d.ts.map +1 -1
  32. package/dist/collab/routes.d.ts +2 -2
  33. package/dist/notifications/routes.d.ts +3 -3
  34. package/dist/progress/routes.d.ts +1 -1
  35. package/dist/resources/handlers.d.ts +3 -3
  36. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  37. package/dist/server/core-routes-plugin.js +1 -2
  38. package/dist/server/core-routes-plugin.js.map +1 -1
  39. package/dist/server/create-server.d.ts.map +1 -1
  40. package/dist/server/create-server.js +1 -2
  41. package/dist/server/create-server.js.map +1 -1
  42. package/dist/server/google-oauth.d.ts +2 -0
  43. package/dist/server/google-oauth.d.ts.map +1 -1
  44. package/dist/server/google-oauth.js +3 -0
  45. package/dist/server/google-oauth.js.map +1 -1
  46. package/dist/server/transcribe-voice.d.ts +1 -1
  47. package/package.json +1 -1
@@ -37,7 +37,7 @@ const MultiTabAssistantChatLazy = lazy(() => import("./MultiTabAssistantChat.js"
37
37
  })));
38
38
  import { useQuery, useQueryClient } from "@tanstack/react-query";
39
39
  import { useLocation, useNavigate } from "react-router";
40
- import { consumeAgentSidebarUrlOpenOverride, dispatchAgentSidebarStateChange, getInitialAgentSidebarOpen, setAgentSidebarOpenPreference, subscribeAgentSidebarUrlChanges, } from "./agent-sidebar-state.js";
40
+ import { consumeAgentSidebarUrlOpenOverride, dispatchAgentSidebarStateChange, getInitialAgentSidebarOpen, setAgentSidebarOpenPreference, subscribeAgentSidebarUrlChanges, SIDEBAR_STATE_CHANGE_EVENT, } from "./agent-sidebar-state.js";
41
41
  import { trackEvent } from "./analytics.js";
42
42
  import { agentNativePath } from "./api-path.js";
43
43
  import { assistantUiRecoverableRenderErrorKind } from "./assistant-ui-recovery.js";
@@ -532,7 +532,7 @@ function AgentPanelInner({ defaultMode = "chat", className, style, apiUrl, empty
532
532
  window.location.hostname === "127.0.0.1" ||
533
533
  window.location.hostname === "::1");
534
534
  const showDevToggle = canToggle && isLocalhost && isDevFrameChatSurface;
535
- const renderModeButtons = useCallback((activeMode) => (_jsx(TooltipProvider, { delayDuration: 200, children: _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("button", { onClick: () => switchMode("chat"), "aria-label": t("agentPanel.chatMode"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "chat"
535
+ const renderModeButtons = useCallback((activeMode) => (_jsx(TooltipProvider, { delayDuration: 200, children: _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [onCollapse && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: onCollapse, "aria-label": t("agentPanel.collapseSidebar"), className: "flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground", style: AGENT_PANEL_CONTROL_STYLE, children: _jsx(IconX, { size: 16 }) }) }), _jsx(TooltipContent, { children: t("agentPanel.collapseSidebar") })] })), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("button", { onClick: () => switchMode("chat"), "aria-label": t("agentPanel.chatMode"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "chat"
536
536
  ? "bg-accent text-foreground"
537
537
  : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconMessageCircle, { size: 14 }), t("agentPanel.chat")] }) }), _jsx(TooltipContent, { children: t("agentPanel.chatMode") })] }), showCliMode && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("button", { onClick: () => switchMode("cli"), "aria-label": t("agentPanel.cliTerminalMode"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "cli"
538
538
  ? "bg-accent text-foreground"
@@ -540,7 +540,7 @@ function AgentPanelInner({ defaultMode = "chat", className, style, apiUrl, empty
540
540
  ? t("agentPanel.cliTerminalMode")
541
541
  : codeUnavailableDescription })] })), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("button", { onClick: () => switchMode("resources"), "aria-label": t("agentPanel.workspaceMode"), className: cn("agent-sidebar-hover-reveal flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "resources"
542
542
  ? "bg-accent text-foreground"
543
- : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconLayoutGrid, { size: 14 }), t("agentPanel.workspace")] }) }), _jsx(TooltipContent, { children: t("agentPanel.workspaceMode") })] })] }) })), [codeAccessEnabled, codeUnavailableDescription, showCliMode, t]);
543
+ : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconLayoutGrid, { size: 14 }), t("agentPanel.workspace")] }) }), _jsx(TooltipContent, { children: t("agentPanel.workspaceMode") })] })] }) })), [codeAccessEnabled, codeUnavailableDescription, onCollapse, showCliMode, t]);
544
544
  const [headerMenuOpen, setHeaderMenuOpen] = useState(false);
545
545
  const [feedbackOpen, setFeedbackOpen] = useState(false);
546
546
  const renderHeaderActions = useCallback(({ activeChatSessionId, activeTabId, addTab, clearActiveTab, closeAllTabs, closeOtherTabs, closeTab, showHistory, tabs, toggleHistory, }) => (_jsxs("div", { className: "relative flex shrink-0 items-center gap-0.5", children: [SHOW_ONBOARDING && (_jsx(Suspense, { fallback: null, children: _jsx(SetupButton, {}) })), _jsx(FeedbackButton, { variant: "icon", side: "bottom", align: "end", chatSessionId: activeChatSessionId, chatStorageKey: storageKey, open: feedbackOpen, onOpenChange: setFeedbackOpen, trigger: _jsx("button", { type: "button", tabIndex: -1, "aria-hidden": "true", className: "pointer-events-none absolute end-0 top-full h-px w-px opacity-0" }) }), mode === "chat" && (_jsx(IconTooltip, { content: t("agentPanel.newChat"), children: _jsx("button", { onClick: addTab, "aria-label": t("agentPanel.newChat"), className: "agent-sidebar-hover-reveal flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) })), mode === "cli" && canUseCodeTools && (_jsx(IconTooltip, { content: t("agentPanel.newTerminal"), children: _jsx("button", { onClick: addCliTab, "aria-label": t("agentPanel.newTerminal"), className: "agent-sidebar-hover-reveal flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) })), _jsxs(DropdownMenu, { open: headerMenuOpen, onOpenChange: setHeaderMenuOpen, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx("button", { className: cn("flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", (headerMenuOpen || mode === "settings") &&
@@ -1552,6 +1552,21 @@ export function focusAgentChat() {
1552
1552
  * Dispatches a custom event that AgentSidebar listens for.
1553
1553
  */
1554
1554
  export function AgentToggleButton({ className }) {
1555
+ const [open, setOpen] = useState(false);
1556
+ useEffect(() => {
1557
+ const handler = (event) => {
1558
+ const detail = event
1559
+ .detail;
1560
+ if (detail && typeof detail.open === "boolean")
1561
+ setOpen(detail.open);
1562
+ };
1563
+ window.addEventListener(SIDEBAR_STATE_CHANGE_EVENT, handler);
1564
+ return () => window.removeEventListener(SIDEBAR_STATE_CHANGE_EVENT, handler);
1565
+ }, []);
1566
+ // Hide the open-agent button while the agent pane is open; the pane has its
1567
+ // own close button.
1568
+ if (open)
1569
+ return null;
1555
1570
  return (_jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", "aria-label": "Toggle agent", onClick: () => window.dispatchEvent(new Event("agent-panel:toggle")), className: cn("inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/40 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", className), children: _jsx(IconMessageDots, { size: 20, "aria-hidden": true }) }) }), _jsx(TooltipContent, { children: "Toggle agent" })] }) }));
1556
1571
  }
1557
1572
  //# sourceMappingURL=AgentPanel.js.map