@agent-native/core 0.84.27 → 0.84.29

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 (44) 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/MultiTabAssistantChat.tsx +17 -2
  5. package/corpus/core/src/client/agent-chat.ts +118 -0
  6. package/corpus/core/src/client/index.ts +4 -0
  7. package/corpus/core/src/deploy/build.ts +5 -0
  8. package/corpus/core/src/server/analytics.ts +29 -7
  9. package/corpus/core/src/server/ssr-handler.ts +161 -25
  10. package/corpus/core/src/vite/client.ts +3 -0
  11. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +324 -24
  12. package/corpus/templates/analytics/app/i18n/zh-TW.ts +11 -0
  13. package/corpus/templates/analytics/app/i18n-data.ts +110 -0
  14. package/corpus/templates/design/app/components/layout/Header.tsx +16 -23
  15. package/corpus/templates/design/app/pages/DesignEditor.tsx +23 -9
  16. package/corpus/templates/design/changelog/2026-07-01-zoom-menus-in-the-design-editor-now-open-independently-from-.md +6 -0
  17. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  18. package/dist/client/MultiTabAssistantChat.js +14 -2
  19. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  20. package/dist/client/agent-chat.d.ts +23 -0
  21. package/dist/client/agent-chat.d.ts.map +1 -1
  22. package/dist/client/agent-chat.js +79 -0
  23. package/dist/client/agent-chat.js.map +1 -1
  24. package/dist/client/index.d.ts +1 -1
  25. package/dist/client/index.d.ts.map +1 -1
  26. package/dist/client/index.js +1 -1
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/deploy/build.js +3 -0
  29. package/dist/deploy/build.js.map +1 -1
  30. package/dist/notifications/routes.d.ts +1 -1
  31. package/dist/observability/routes.d.ts +5 -5
  32. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  33. package/dist/server/analytics.d.ts +10 -2
  34. package/dist/server/analytics.d.ts.map +1 -1
  35. package/dist/server/analytics.js +26 -5
  36. package/dist/server/analytics.js.map +1 -1
  37. package/dist/server/ssr-handler.d.ts.map +1 -1
  38. package/dist/server/ssr-handler.js +103 -21
  39. package/dist/server/ssr-handler.js.map +1 -1
  40. package/dist/server/transcribe-voice.d.ts +1 -1
  41. package/dist/vite/client.d.ts.map +1 -1
  42. package/dist/vite/client.js +1 -0
  43. package/dist/vite/client.js.map +1 -1
  44. package/package.json +1 -1
@@ -15617,11 +15617,13 @@ ${serializedHtml}
15617
15617
  );
15618
15618
 
15619
15619
  const zoomLabel = `${Math.round(zoom)}%`;
15620
- const [zoomMenuOpen, setZoomMenuOpen] = useState(false);
15620
+ const [openZoomControl, setOpenZoomControl] = useState<
15621
+ "toolbar" | "inspector" | null
15622
+ >(null);
15621
15623
  const [zoomInputValue, setZoomInputValue] = useState(zoomLabel);
15622
15624
  useEffect(() => {
15623
- if (!zoomMenuOpen) setZoomInputValue(zoomLabel);
15624
- }, [zoomLabel, zoomMenuOpen]);
15625
+ if (!openZoomControl) setZoomInputValue(zoomLabel);
15626
+ }, [zoomLabel, openZoomControl]);
15625
15627
  const commitZoomInput = useCallback(() => {
15626
15628
  const next = Number(zoomInputValue.replace("%", "").trim());
15627
15629
  if (!Number.isFinite(next)) {
@@ -15629,7 +15631,7 @@ ${serializedHtml}
15629
15631
  return;
15630
15632
  }
15631
15633
  setZoom(Math.max(10, Math.min(500, next)));
15632
- setZoomMenuOpen(false);
15634
+ setOpenZoomControl(null);
15633
15635
  }, [setZoom, zoomInputValue, zoomLabel]);
15634
15636
 
15635
15637
  const handleTokensApplied = useCallback(
@@ -15970,8 +15972,20 @@ ${serializedHtml}
15970
15972
  </span>
15971
15973
  );
15972
15974
 
15973
- const renderZoomControl = () => (
15974
- <DropdownMenu open={zoomMenuOpen} onOpenChange={setZoomMenuOpen}>
15975
+ const renderZoomControl = (controlId: "toolbar" | "inspector") => (
15976
+ <DropdownMenu
15977
+ open={openZoomControl === controlId}
15978
+ onOpenChange={(open) => {
15979
+ if (open) {
15980
+ setZoomInputValue(zoomLabel);
15981
+ setOpenZoomControl(controlId);
15982
+ return;
15983
+ }
15984
+ setOpenZoomControl((current) =>
15985
+ current === controlId ? null : current,
15986
+ );
15987
+ }}
15988
+ >
15975
15989
  <Tooltip>
15976
15990
  <TooltipTrigger asChild>
15977
15991
  <DropdownMenuTrigger asChild>
@@ -16005,7 +16019,7 @@ ${serializedHtml}
16005
16019
  } else if (event.key === "Escape") {
16006
16020
  event.preventDefault();
16007
16021
  setZoomInputValue(zoomLabel);
16008
- setZoomMenuOpen(false);
16022
+ setOpenZoomControl(null);
16009
16023
  }
16010
16024
  }}
16011
16025
  className="h-10 rounded-md border-[var(--design-editor-accent-color)] bg-[var(--design-editor-control-bg)] px-3 text-base font-medium tabular-nums text-foreground shadow-none focus-visible:ring-2 focus-visible:ring-[var(--design-editor-accent-color)]"
@@ -16563,7 +16577,7 @@ ${serializedHtml}
16563
16577
  </DropdownMenuContent>
16564
16578
  </DropdownMenu>
16565
16579
 
16566
- {renderZoomControl()}
16580
+ {renderZoomControl("toolbar")}
16567
16581
 
16568
16582
  <div className="mx-1 h-5 w-px bg-border" />
16569
16583
  </>
@@ -17637,7 +17651,7 @@ ${serializedHtml}
17637
17651
  selectedElements={selectedInspectorElements}
17638
17652
  pageStyles={pageStyles}
17639
17653
  zoom={zoom}
17640
- headerTrailing={renderZoomControl()}
17654
+ headerTrailing={renderZoomControl("inspector")}
17641
17655
  width={rightSidebarWidth}
17642
17656
  activeTab={activeInspectorTab}
17643
17657
  onActiveTabChange={setActiveInspectorTab}
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-01
4
+ ---
5
+
6
+ Zoom menus in the design editor now open independently from the toolbar and inspector.
@@ -1 +1 @@
1
- {"version":3,"file":"MultiTabAssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/MultiTabAssistantChat.tsx"],"names":[],"mappings":"AASA,OAAO,KAMN,MAAM,OAAO,CAAC;AAoBf,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAoB5B,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AA8mB/B,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IACzC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsGD,MAAM,WAAW,wBAAwB;IACvC,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAC9C,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAyED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,kBAAkB,EAClB,OAAO,GAAG,UAAU,CACrB,GAAG;IACF,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5E,2DAA2D;IAC3D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7E,sGAAsG;IACtG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAC;IACnD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,UAAiB,EACjB,YAAY,EACZ,aAAa,EACb,aAAqB,EACrB,MAAqD,EACrD,UAAU,EACV,mBAA0B,EAC1B,YAAY,EACZ,aAAqB,EACrB,KAAY,EACZ,cAAqB,EACrB,GAAG,KAAK,EACT,EAAE,0BAA0B,qBAgwD5B"}
1
+ {"version":3,"file":"MultiTabAssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/MultiTabAssistantChat.tsx"],"names":[],"mappings":"AASA,OAAO,KAMN,MAAM,OAAO,CAAC;AAsBf,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAoB5B,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AA8mB/B,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IACzC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsGD,MAAM,WAAW,wBAAwB;IACvC,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAC9C,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAyED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,kBAAkB,EAClB,OAAO,GAAG,UAAU,CACrB,GAAG;IACF,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5E,2DAA2D;IAC3D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7E,sGAAsG;IACtG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAC;IACnD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,UAAiB,EACjB,YAAY,EACZ,aAAa,EACb,aAAqB,EACrB,MAAqD,EACrD,UAAU,EACV,mBAA0B,EAC1B,YAAY,EACZ,aAAqB,EACrB,KAAY,EACZ,cAAqB,EACrB,GAAG,KAAK,EACT,EAAE,0BAA0B,qBA6wD5B"}
@@ -3,7 +3,7 @@ import { IconX, IconPlus, IconHistory, IconSearch, IconLink, IconLinkOff, IconCh
3
3
  import { useState, useRef, useEffect, useCallback, useMemo, } from "react";
4
4
  import { DEFAULT_MODEL } from "../agent/default-model.js";
5
5
  import { getReasoningEffortOptionsForModel, isReasoningEffort, } from "../shared/reasoning-effort.js";
6
- import { AGENT_CHAT_CLEAR_CONTEXT_MESSAGE_TYPE, AGENT_CHAT_REMOVE_CONTEXT_MESSAGE_TYPE, AGENT_CHAT_SET_CONTEXT_MESSAGE_TYPE, appendAgentChatContextToMessage, claimAgentChatSubmit, drainBufferedAgentChatSubmits, normalizeAgentChatContextItem, parseSubmitChatMessage, } from "./agent-chat.js";
6
+ import { AGENT_CHAT_CLEAR_CONTEXT_MESSAGE_TYPE, AGENT_CHAT_REMOVE_CONTEXT_MESSAGE_TYPE, AGENT_CHAT_SET_CONTEXT_MESSAGE_TYPE, appendAgentChatContextToMessage, claimAgentChatOpenRequest, claimAgentChatSubmit, drainBufferedAgentChatOpenRequests, drainBufferedAgentChatSubmits, normalizeAgentChatContextItem, parseSubmitChatMessage, } from "./agent-chat.js";
7
7
  import { agentNativePath, appPath } from "./api-path.js";
8
8
  import { AssistantChat, } from "./AssistantChat.js";
9
9
  import { buildChatModelGroups, } from "./chat-model-groups.js";
@@ -1402,7 +1402,9 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
1402
1402
  const handleOpenThread = (event) => {
1403
1403
  const detail = event.detail;
1404
1404
  const threadId = typeof detail?.threadId === "string" ? detail.threadId : "";
1405
- if (!threadId)
1405
+ if (!detail || !threadId)
1406
+ return;
1407
+ if (!claimAgentChatOpenRequest(detail.openRequestId))
1406
1408
  return;
1407
1409
  if (detail?.newThread === true) {
1408
1410
  newThreadIds.current.add(threadId);
@@ -1445,6 +1447,8 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
1445
1447
  const threadId = detail?.threadId;
1446
1448
  if (!threadId)
1447
1449
  return;
1450
+ if (!claimAgentChatOpenRequest(detail.openRequestId))
1451
+ return;
1448
1452
  dismissedSubAgentTabsRef.current.delete(threadId);
1449
1453
  // Prefer an explicit parent (RunsTray/background hydration knows it);
1450
1454
  // inline task cards fall back to the active orchestrator thread.
@@ -1490,6 +1494,14 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
1490
1494
  window.addEventListener("agent-task-open", handleOpenTask);
1491
1495
  return () => window.removeEventListener("agent-task-open", handleOpenTask);
1492
1496
  }, [openTabIds, switchThread, refreshThreads, parentMap]);
1497
+ // Replay thread/task opens requested before this lazy panel's listeners
1498
+ // attached. Live events claim their id; replay drains only unclaimed requests.
1499
+ useEffect(() => {
1500
+ const buffered = drainBufferedAgentChatOpenRequests();
1501
+ for (const request of buffered) {
1502
+ window.dispatchEvent(new CustomEvent(request.eventType, { detail: request.detail }));
1503
+ }
1504
+ }, []);
1493
1505
  // Watch for agent-issued chat-command in application-state
1494
1506
  const lastChatCommandRef = useRef(0);
1495
1507
  useEffect(() => {