@agent-native/core 0.24.1 → 0.24.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 (58) hide show
  1. package/README.md +22 -2
  2. package/dist/agent/thread-data-builder.d.ts +1 -0
  3. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  4. package/dist/agent/thread-data-builder.js +8 -2
  5. package/dist/agent/thread-data-builder.js.map +1 -1
  6. package/dist/chat-threads/store.d.ts +9 -0
  7. package/dist/chat-threads/store.d.ts.map +1 -1
  8. package/dist/chat-threads/store.js +73 -8
  9. package/dist/chat-threads/store.js.map +1 -1
  10. package/dist/cli/templates-meta.js +1 -1
  11. package/dist/cli/templates-meta.js.map +1 -1
  12. package/dist/client/AgentPanel.d.ts +2 -0
  13. package/dist/client/AgentPanel.d.ts.map +1 -1
  14. package/dist/client/AgentPanel.js +2 -2
  15. package/dist/client/AgentPanel.js.map +1 -1
  16. package/dist/client/MultiTabAssistantChat.d.ts +3 -1
  17. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  18. package/dist/client/MultiTabAssistantChat.js +12 -3
  19. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  20. package/dist/client/NewWorkspaceAppFlow.js +2 -2
  21. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  22. package/dist/client/onboarding/OnboardingPanel.js +1 -1
  23. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  24. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  25. package/dist/client/org/OrgSwitcher.js +29 -2
  26. package/dist/client/org/OrgSwitcher.js.map +1 -1
  27. package/dist/client/org/workspace-app-links.d.ts +1 -0
  28. package/dist/client/org/workspace-app-links.d.ts.map +1 -1
  29. package/dist/client/org/workspace-app-links.js +7 -1
  30. package/dist/client/org/workspace-app-links.js.map +1 -1
  31. package/dist/client/use-chat-threads.d.ts +9 -0
  32. package/dist/client/use-chat-threads.d.ts.map +1 -1
  33. package/dist/client/use-chat-threads.js +135 -32
  34. package/dist/client/use-chat-threads.js.map +1 -1
  35. package/dist/client/use-chat-threads.spec.js +143 -0
  36. package/dist/client/use-chat-threads.spec.js.map +1 -1
  37. package/dist/scripts/chat/search-chats.d.ts.map +1 -1
  38. package/dist/scripts/chat/search-chats.js +7 -1
  39. package/dist/scripts/chat/search-chats.js.map +1 -1
  40. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  41. package/dist/server/agent-chat-plugin.js +115 -6
  42. package/dist/server/agent-chat-plugin.js.map +1 -1
  43. package/dist/server/framework-request-handler.d.ts.map +1 -1
  44. package/dist/server/framework-request-handler.js +45 -0
  45. package/dist/server/framework-request-handler.js.map +1 -1
  46. package/dist/server/index.d.ts +1 -1
  47. package/dist/server/index.d.ts.map +1 -1
  48. package/dist/server/index.js +1 -1
  49. package/dist/server/index.js.map +1 -1
  50. package/dist/templates/workspace-root/AGENTS.md +6 -5
  51. package/dist/templates/workspace-root/README.md +1 -1
  52. package/docs/content/cloneable-saas.md +1 -0
  53. package/docs/content/faq.md +1 -0
  54. package/docs/content/getting-started.md +1 -0
  55. package/docs/content/multi-tenancy.md +1 -1
  56. package/package.json +1 -1
  57. package/src/templates/workspace-root/AGENTS.md +6 -5
  58. package/src/templates/workspace-root/README.md +1 -1
@@ -37,6 +37,8 @@ export type MultiTabAssistantChatProps = Omit<AssistantChatProps, "tabId" | "thr
37
37
  contentHidden?: boolean;
38
38
  /** Namespace for localStorage keys — used to isolate chat state per app in the frame. */
39
39
  storageKey?: string;
40
+ /** Restore the previously active thread and open tabs from localStorage. */
41
+ restoreActiveThread?: boolean;
40
42
  /** Stable browser tab id used for tab-scoped app-state context. */
41
43
  browserTabId?: string;
42
44
  /**
@@ -48,6 +50,6 @@ export type MultiTabAssistantChatProps = Omit<AssistantChatProps, "tabId" | "thr
48
50
  */
49
51
  scope?: ChatThreadScope | null;
50
52
  };
51
- export declare function MultiTabAssistantChat({ showTabBar, renderHeader, renderOverlay, contentHidden, apiUrl, storageKey, browserTabId, scope, ...props }: MultiTabAssistantChatProps): import("react/jsx-runtime").JSX.Element;
53
+ export declare function MultiTabAssistantChat({ showTabBar, renderHeader, renderOverlay, contentHidden, apiUrl, storageKey, restoreActiveThread, browserTabId, scope, ...props }: MultiTabAssistantChatProps): import("react/jsx-runtime").JSX.Element;
52
54
  export {};
53
55
  //# sourceMappingURL=MultiTabAssistantChat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiTabAssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/MultiTabAssistantChat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAUf,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAc5B,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AAwnB/B,UAAU,OAAO;IACf,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;AAED,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,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,UAAiB,EACjB,YAAY,EACZ,aAAa,EACb,aAAqB,EACrB,MAAqD,EACrD,UAAU,EACV,YAAY,EACZ,KAAY,EACZ,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAu2C5B"}
1
+ {"version":3,"file":"MultiTabAssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/MultiTabAssistantChat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAUf,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAc5B,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AAwnB/B,UAAU,OAAO;IACf,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;AAED,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;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,UAAiB,EACjB,YAAY,EACZ,aAAa,EACb,aAAqB,EACrB,MAAqD,EACrD,UAAU,EACV,mBAA0B,EAC1B,YAAY,EACZ,KAAY,EACZ,GAAG,KAAK,EACT,EAAE,0BAA0B,2CA+2C5B"}
@@ -266,8 +266,8 @@ function HelpPopover({ onClose }) {
266
266
  ];
267
267
  return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: onClose }), _jsxs("div", { className: "absolute right-2 top-0 z-50 w-72 rounded-lg border border-border bg-popover shadow-lg", children: [_jsxs("div", { className: "flex items-center justify-between px-3 py-2 border-b border-border", children: [_jsx("span", { className: "text-xs font-medium text-foreground", children: "Available Commands" }), _jsx("button", { onClick: onClose, "aria-label": "Close help", className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground", children: _jsx(IconX, { size: 12 }) })] }), _jsx("div", { className: "py-1", children: commands.map((cmd) => (_jsxs("div", { className: "px-3 py-1.5", children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: cmd.name }), _jsx("div", { className: "text-[11px] text-muted-foreground", children: cmd.description })] }, cmd.name))) })] })] }));
268
268
  }
269
- export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderOverlay, contentHidden = false, apiUrl = agentNativePath("/_agent-native/agent-chat"), storageKey, browserTabId, scope = null, ...props }) {
270
- const { threads, activeThreadId, isLoading, createThread, switchThread, deleteThread, detachThread, forkThread, saveThreadData, generateTitle, searchThreads, refreshThreads, isNewThread, } = useChatThreads(apiUrl, storageKey, scope);
269
+ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderOverlay, contentHidden = false, apiUrl = agentNativePath("/_agent-native/agent-chat"), storageKey, restoreActiveThread = true, browserTabId, scope = null, ...props }) {
270
+ const { threads, activeThreadId, isLoading, createThread, switchThread, deleteThread, detachThread, forkThread, saveThreadData, generateTitle, searchThreads, refreshThreads, isNewThread, } = useChatThreads(apiUrl, storageKey, scope, { restoreActiveThread });
271
271
  // Namespace all localStorage keys by storageKey when provided (for per-app isolation in frame)
272
272
  const keyPrefix = storageKey ? `:${storageKey}` : "";
273
273
  const modelSelectionKey = `${MODEL_SELECTION_STORAGE_KEY}${keyPrefix}`;
@@ -491,6 +491,11 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
491
491
  const scopeKeyPart = scope ? `:scope:${scope.type}:${scope.id}` : "";
492
492
  const OPEN_TABS_KEY = `agent-chat-open-tabs${keyPrefix}${scopeKeyPart}`;
493
493
  const [openTabIds, setOpenTabIds] = useState(() => {
494
+ if (!restoreActiveThread && activeThreadId) {
495
+ for (const id of [activeThreadId])
496
+ mountedTabsRef.current.add(id);
497
+ return [activeThreadId];
498
+ }
494
499
  try {
495
500
  const saved = localStorage.getItem(OPEN_TABS_KEY);
496
501
  if (saved) {
@@ -517,6 +522,10 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
517
522
  return;
518
523
  openTabsKeyRef.current = OPEN_TABS_KEY;
519
524
  initializedRef.current = false;
525
+ if (!restoreActiveThread) {
526
+ setOpenTabIds(activeThreadId ? [activeThreadId] : []);
527
+ return;
528
+ }
520
529
  try {
521
530
  const saved = localStorage.getItem(OPEN_TABS_KEY);
522
531
  if (saved) {
@@ -531,7 +540,7 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
531
540
  }
532
541
  catch { }
533
542
  setOpenTabIds([]);
534
- }, [OPEN_TABS_KEY]);
543
+ }, [OPEN_TABS_KEY, activeThreadId, restoreActiveThread]);
535
544
  // Look up the active thread's actual scope from the list — when the
536
545
  // user opens a chat from history that was scoped to a different
537
546
  // resource, the badge should advertise that thread's binding, not