@agent-native/core 0.12.15 → 0.12.16

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 (38) hide show
  1. package/dist/agent/run-manager.d.ts.map +1 -1
  2. package/dist/agent/run-manager.js +56 -42
  3. package/dist/agent/run-manager.js.map +1 -1
  4. package/dist/cli/workspace-dev.js +26 -5
  5. package/dist/cli/workspace-dev.js.map +1 -1
  6. package/dist/client/AssistantChat.d.ts.map +1 -1
  7. package/dist/client/AssistantChat.js +33 -6
  8. package/dist/client/AssistantChat.js.map +1 -1
  9. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  10. package/dist/client/MultiTabAssistantChat.js +7 -2
  11. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  12. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  13. package/dist/client/NewWorkspaceAppFlow.js +2 -0
  14. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  15. package/dist/client/sharing/ShareButton.js +6 -1
  16. package/dist/client/sharing/ShareButton.js.map +1 -1
  17. package/dist/client/sharing/ShareButton.spec.d.ts +2 -0
  18. package/dist/client/sharing/ShareButton.spec.d.ts.map +1 -0
  19. package/dist/client/sharing/ShareButton.spec.js +90 -0
  20. package/dist/client/sharing/ShareButton.spec.js.map +1 -0
  21. package/dist/client/sse-event-processor.d.ts.map +1 -1
  22. package/dist/client/sse-event-processor.js +10 -2
  23. package/dist/client/sse-event-processor.js.map +1 -1
  24. package/dist/client/use-chat-threads.d.ts.map +1 -1
  25. package/dist/client/use-chat-threads.js +19 -2
  26. package/dist/client/use-chat-threads.js.map +1 -1
  27. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  28. package/dist/server/agent-chat-plugin.js +11 -7
  29. package/dist/server/agent-chat-plugin.js.map +1 -1
  30. package/dist/templates/default/AGENTS.md +7 -1
  31. package/dist/templates/default/DEVELOPING.md +12 -0
  32. package/dist/templates/default/app/hooks/use-navigation-state.ts +81 -0
  33. package/dist/templates/default/app/root.tsx +11 -5
  34. package/package.json +1 -1
  35. package/src/templates/default/AGENTS.md +7 -1
  36. package/src/templates/default/DEVELOPING.md +12 -0
  37. package/src/templates/default/app/hooks/use-navigation-state.ts +81 -0
  38. package/src/templates/default/app/root.tsx +11 -5
@@ -807,7 +807,15 @@ function AssistantMessage() {
807
807
  "");
808
808
  })(), messageSeq: thread.messages.findIndex((m) => m.id === msg.id) }) }))] }))] }));
809
809
  }
810
- // ─── Thinking Indicator ─────────────────────────────────────────────────────
810
+ function ActivitySteps({ steps }) {
811
+ if (steps.length === 0)
812
+ return null;
813
+ const visibleSteps = steps.slice(-4);
814
+ return (_jsx("div", { className: "max-w-[85%] rounded-md border border-border/60 bg-muted/30 px-2.5 py-2 text-xs text-muted-foreground", "aria-live": "polite", children: _jsx("div", { className: "space-y-1", children: visibleSteps.map((step, index) => {
815
+ const isCurrent = index === visibleSteps.length - 1;
816
+ return (_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [isCurrent ? (_jsx(IconLoader2, { className: "h-3 w-3 shrink-0 animate-spin" })) : (_jsx(IconCheck, { className: "h-3 w-3 shrink-0 text-emerald-500" })), _jsx("span", { className: "truncate", children: step.label })] }, step.id));
817
+ }) }) }));
818
+ }
811
819
  function ThinkingIndicator({ label = "Thinking" } = {}) {
812
820
  const [dots, setDots] = useState(0);
813
821
  useEffect(() => {
@@ -1106,6 +1114,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
1106
1114
  const wasRunningRef = useRef(false);
1107
1115
  const lastBroadcastRunningRef = useRef(isRunning);
1108
1116
  const tiptapRef = useRef(null);
1117
+ const [activitySteps, setActivitySteps] = useState([]);
1109
1118
  useEffect(() => {
1110
1119
  if (lastBroadcastRunningRef.current === isRunning)
1111
1120
  return;
@@ -1623,15 +1632,32 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
1623
1632
  if (tabId && detail?.tabId && detail.tabId !== tabId)
1624
1633
  return;
1625
1634
  if (typeof detail?.label === "string" && detail.label.trim()) {
1626
- setActivityLabel(detail.label.trim());
1635
+ const label = detail.label.trim();
1636
+ const tool = detail.tool?.trim() || undefined;
1637
+ setActivityLabel(label);
1638
+ setActivitySteps((prev) => {
1639
+ const last = prev[prev.length - 1];
1640
+ if (last?.label === label && last.tool === tool)
1641
+ return prev;
1642
+ return [
1643
+ ...prev,
1644
+ {
1645
+ id: `${Date.now()}-${prev.length}`,
1646
+ label,
1647
+ ...(tool ? { tool } : {}),
1648
+ },
1649
+ ].slice(-6);
1650
+ });
1627
1651
  }
1628
1652
  };
1629
1653
  window.addEventListener("agent-chat:activity", handler);
1630
1654
  return () => window.removeEventListener("agent-chat:activity", handler);
1631
1655
  }, [tabId]);
1632
1656
  useEffect(() => {
1633
- if (!showRunningInUI)
1657
+ if (!showRunningInUI) {
1634
1658
  setActivityLabel(null);
1659
+ setActivitySteps([]);
1660
+ }
1635
1661
  }, [showRunningInUI]);
1636
1662
  // Auto-dequeue: when agent finishes running, send the next queued message
1637
1663
  useEffect(() => {
@@ -1699,6 +1725,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
1699
1725
  setRunErrorInfo(null);
1700
1726
  setDismissedRunErrorKey(null);
1701
1727
  setActivityLabel(null);
1728
+ setActivitySteps([]);
1702
1729
  userStoppedRunRef.current = null;
1703
1730
  // Selection context attached via Cmd+I is one-shot — clear it as soon
1704
1731
  // as the user actually sends a message so it can't be re-used.
@@ -1915,9 +1942,9 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
1915
1942
  }
1916
1943
  setRunErrorInfo(null);
1917
1944
  } })), (isReconnecting || reconnectFrozen) &&
1918
- reconnectContent.length > 0 && (_jsx(ReconnectStreamMessage, { content: reconnectContent })), showRunningInUI && (_jsx(ThinkingIndicator, { label: isReconnecting
1919
- ? "Reconnecting"
1920
- : (activityLabel ?? "Thinking") })), queuedMessages.map((msg) => {
1945
+ reconnectContent.length > 0 && (_jsx(ReconnectStreamMessage, { content: reconnectContent })), showRunningInUI && (_jsxs(_Fragment, { children: [_jsx(ActivitySteps, { steps: activitySteps }), _jsx(ThinkingIndicator, { label: isReconnecting
1946
+ ? "Reconnecting"
1947
+ : (activityLabel ?? "Thinking") })] })), queuedMessages.map((msg) => {
1921
1948
  const displayText = msg.text
1922
1949
  .replace(/<context>[\s\S]*?<\/context>\n?/g, "")
1923
1950
  .trim();