@agent-native/toolkit 0.6.0 → 0.8.0

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 (174) hide show
  1. package/README.md +17 -1
  2. package/agent-native.eject.json +411 -0
  3. package/dist/chat-history/ChatHistoryList.d.ts +103 -0
  4. package/dist/chat-history/ChatHistoryList.d.ts.map +1 -0
  5. package/dist/chat-history/ChatHistoryList.js +109 -0
  6. package/dist/chat-history/ChatHistoryList.js.map +1 -0
  7. package/dist/chat-history/ChatHistoryList.spec.d.ts +2 -0
  8. package/dist/chat-history/ChatHistoryList.spec.d.ts.map +1 -0
  9. package/dist/chat-history/ChatHistoryList.spec.js +283 -0
  10. package/dist/chat-history/ChatHistoryList.spec.js.map +1 -0
  11. package/dist/chat-history/index.d.ts +2 -0
  12. package/dist/chat-history/index.d.ts.map +1 -0
  13. package/dist/chat-history/index.js +2 -0
  14. package/dist/chat-history/index.js.map +1 -0
  15. package/dist/chat-history.css +314 -0
  16. package/package.json +20 -1
  17. package/src/app-shell/header-actions.tsx +84 -0
  18. package/src/app-shell/index.ts +1 -0
  19. package/src/chat-history/ChatHistoryList.spec.tsx +453 -0
  20. package/src/chat-history/ChatHistoryList.tsx +469 -0
  21. package/src/chat-history/index.ts +7 -0
  22. package/src/chat-history.css +314 -0
  23. package/src/collab-ui/AgentPresenceChip.tsx +69 -0
  24. package/src/collab-ui/LiveCursorOverlay.tsx +241 -0
  25. package/src/collab-ui/PresenceBar.tsx +346 -0
  26. package/src/collab-ui/RecentEditHighlights.tsx +225 -0
  27. package/src/collab-ui/RemoteSelectionRings.tsx +227 -0
  28. package/src/collab-ui/agent-identity.ts +16 -0
  29. package/src/collab-ui/index.ts +39 -0
  30. package/src/collab-ui/lead-client.ts +32 -0
  31. package/src/collab-ui/types.spec.ts +18 -0
  32. package/src/collab-ui/types.ts +96 -0
  33. package/src/composer/AgentComposerFrame.tsx +59 -0
  34. package/src/composer/ComposerPlusMenu.tsx +983 -0
  35. package/src/composer/MentionPopover.tsx +412 -0
  36. package/src/composer/PastedTextChip.tsx +150 -0
  37. package/src/composer/PromptComposer.spec.ts +73 -0
  38. package/src/composer/PromptComposer.tsx +718 -0
  39. package/src/composer/RealtimeVoiceMode.spec.tsx +771 -0
  40. package/src/composer/RealtimeVoiceMode.tsx +856 -0
  41. package/src/composer/TiptapComposer.spec.ts +390 -0
  42. package/src/composer/TiptapComposer.tsx +2936 -0
  43. package/src/composer/VoiceButton.spec.ts +33 -0
  44. package/src/composer/VoiceButton.tsx +255 -0
  45. package/src/composer/asset-picker-url.spec.ts +56 -0
  46. package/src/composer/asset-picker-url.ts +80 -0
  47. package/src/composer/attachment-accept.spec.ts +22 -0
  48. package/src/composer/attachment-accept.ts +71 -0
  49. package/src/composer/draft-key.spec.ts +19 -0
  50. package/src/composer/draft-key.ts +7 -0
  51. package/src/composer/extensions/FileReference.tsx +55 -0
  52. package/src/composer/extensions/MentionReference.tsx +93 -0
  53. package/src/composer/extensions/SkillReference.tsx +56 -0
  54. package/src/composer/index.ts +79 -0
  55. package/src/composer/pasted-text.spec.ts +162 -0
  56. package/src/composer/pasted-text.ts +160 -0
  57. package/src/composer/prompt-attachments.spec.ts +80 -0
  58. package/src/composer/prompt-attachments.ts +93 -0
  59. package/src/composer/realtime-voice-audio-level.spec.ts +32 -0
  60. package/src/composer/realtime-voice-audio-level.ts +64 -0
  61. package/src/composer/realtime-voice-transcript.spec.ts +95 -0
  62. package/src/composer/realtime-voice-transcript.ts +134 -0
  63. package/src/composer/runtime-adapters.tsx +343 -0
  64. package/src/composer/types.ts +66 -0
  65. package/src/composer/use-file-search.ts +64 -0
  66. package/src/composer/use-mention-search.ts +90 -0
  67. package/src/composer/use-skills.ts +45 -0
  68. package/src/composer/useRealtimeVoiceMode.spec.ts +818 -0
  69. package/src/composer/useRealtimeVoiceMode.tsx +2117 -0
  70. package/src/composer/useVoiceDictation.spec.ts +45 -0
  71. package/src/composer/useVoiceDictation.ts +1191 -0
  72. package/src/context-ui/ContextMeter.tsx +101 -0
  73. package/src/context-ui/ContextSegmentRow.tsx +184 -0
  74. package/src/context-ui/ContextTreemap.tsx +125 -0
  75. package/src/context-ui/ContextXRayPanel.tsx +377 -0
  76. package/src/context-ui/format.ts +42 -0
  77. package/src/context-ui/index.ts +15 -0
  78. package/src/context-ui/types.ts +43 -0
  79. package/src/design-tweaks/index.ts +1 -0
  80. package/src/design-tweaks/visual-style-controls.tsx +1084 -0
  81. package/src/editor/BubbleToolbar.tsx +253 -0
  82. package/src/editor/CodeBlockNode.tsx +254 -0
  83. package/src/editor/DragHandle.spec.ts +588 -0
  84. package/src/editor/DragHandle.ts +1437 -0
  85. package/src/editor/ImageExtension.roundtrip.spec.ts +117 -0
  86. package/src/editor/ImageExtension.ts +306 -0
  87. package/src/editor/RegistryBlockContext.tsx +107 -0
  88. package/src/editor/RegistryBlockNode.spec.ts +279 -0
  89. package/src/editor/RegistryBlockNode.tsx +652 -0
  90. package/src/editor/RichMarkdownEditor.collab.spec.ts +79 -0
  91. package/src/editor/RichMarkdownEditor.roundtrip.spec.ts +226 -0
  92. package/src/editor/RichMarkdownEditor.tsx +81 -0
  93. package/src/editor/RunId.ts +61 -0
  94. package/src/editor/SharedRichEditor.tsx +321 -0
  95. package/src/editor/SlashCommandMenu.tsx +310 -0
  96. package/src/editor/disableHistory.spec.ts +85 -0
  97. package/src/editor/extensions.ts +402 -0
  98. package/src/editor/gfmDoc.spec.ts +230 -0
  99. package/src/editor/gfmDoc.ts +92 -0
  100. package/src/editor/index.ts +93 -0
  101. package/src/editor/registrySlashCommands.ts +131 -0
  102. package/src/editor/structuralReorderUndo.spec.ts +144 -0
  103. package/src/editor/surgical-apply.spec.ts +279 -0
  104. package/src/editor/surgical-apply.ts +192 -0
  105. package/src/editor/useCollabReconcile.concurrent.spec.ts +422 -0
  106. package/src/editor/useCollabReconcile.idempotent.spec.ts +324 -0
  107. package/src/editor/useCollabReconcile.ts +589 -0
  108. package/src/editor.css +510 -0
  109. package/src/hooks/index.ts +2 -0
  110. package/src/hooks/use-mobile.tsx +21 -0
  111. package/src/hooks/use-toast.ts +188 -0
  112. package/src/index.ts +8 -0
  113. package/src/onboarding/index.ts +1 -0
  114. package/src/provider.tsx +47 -0
  115. package/src/sharing/VisibilityBadge.spec.ts +96 -0
  116. package/src/sharing/VisibilityBadge.tsx +37 -0
  117. package/src/sharing/index.ts +4 -0
  118. package/src/styles.css +21 -0
  119. package/src/ui/accordion.tsx +56 -0
  120. package/src/ui/alert-dialog.tsx +141 -0
  121. package/src/ui/alert.tsx +59 -0
  122. package/src/ui/aspect-ratio.tsx +5 -0
  123. package/src/ui/avatar.tsx +48 -0
  124. package/src/ui/badge.tsx +37 -0
  125. package/src/ui/breadcrumb.tsx +115 -0
  126. package/src/ui/button.tsx +78 -0
  127. package/src/ui/calendar.tsx +214 -0
  128. package/src/ui/card.tsx +86 -0
  129. package/src/ui/carousel.tsx +260 -0
  130. package/src/ui/chart.tsx +375 -0
  131. package/src/ui/checkbox.tsx +28 -0
  132. package/src/ui/collapsible.tsx +9 -0
  133. package/src/ui/command.spec.tsx +51 -0
  134. package/src/ui/command.tsx +174 -0
  135. package/src/ui/context-menu.tsx +202 -0
  136. package/src/ui/date-picker.tsx +64 -0
  137. package/src/ui/dialog.spec.tsx +43 -0
  138. package/src/ui/dialog.tsx +146 -0
  139. package/src/ui/drawer.tsx +126 -0
  140. package/src/ui/dropdown-menu.tsx +218 -0
  141. package/src/ui/form.tsx +177 -0
  142. package/src/ui/hover-card.tsx +27 -0
  143. package/src/ui/index.ts +52 -0
  144. package/src/ui/input-otp.tsx +69 -0
  145. package/src/ui/input.tsx +22 -0
  146. package/src/ui/label.tsx +24 -0
  147. package/src/ui/logo.tsx +36 -0
  148. package/src/ui/menubar.tsx +235 -0
  149. package/src/ui/navigation-menu.tsx +128 -0
  150. package/src/ui/pagination.tsx +121 -0
  151. package/src/ui/popover.tsx +44 -0
  152. package/src/ui/progress.tsx +26 -0
  153. package/src/ui/radio-group.tsx +42 -0
  154. package/src/ui/resizable.tsx +43 -0
  155. package/src/ui/scroll-area.tsx +46 -0
  156. package/src/ui/select.tsx +158 -0
  157. package/src/ui/separator.tsx +29 -0
  158. package/src/ui/sheet.tsx +160 -0
  159. package/src/ui/sidebar.tsx +777 -0
  160. package/src/ui/skeleton.tsx +18 -0
  161. package/src/ui/slider.tsx +26 -0
  162. package/src/ui/sonner.tsx +58 -0
  163. package/src/ui/spinner.tsx +17 -0
  164. package/src/ui/switch.tsx +27 -0
  165. package/src/ui/table.tsx +117 -0
  166. package/src/ui/tabs.tsx +53 -0
  167. package/src/ui/textarea.tsx +23 -0
  168. package/src/ui/toast.tsx +127 -0
  169. package/src/ui/toaster.tsx +33 -0
  170. package/src/ui/toggle-group.tsx +59 -0
  171. package/src/ui/toggle.tsx +43 -0
  172. package/src/ui/tooltip.tsx +53 -0
  173. package/src/ui/use-toast.ts +3 -0
  174. package/src/utils.ts +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHistoryList.js","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatHistoryList.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHistoryList.spec.d.ts","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,283 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { act } from "react";
4
+ import { createRoot } from "react-dom/client";
5
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { ChatHistoryList, } from "./ChatHistoryList.js";
7
+ function item(overrides) {
8
+ return {
9
+ title: overrides.id,
10
+ ...overrides,
11
+ };
12
+ }
13
+ /** React tracks the DOM input's value via a wrapped setter to decide whether
14
+ * to fire its synthetic change handler, so setting `.value` directly is not
15
+ * observed. Go through the native prototype setter instead, matching the
16
+ * pattern used by CommandMenu.spec.tsx. */
17
+ function typeIntoInput(input, value) {
18
+ const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set;
19
+ setter?.call(input, value);
20
+ input.dispatchEvent(new Event("input", { bubbles: true }));
21
+ input.dispatchEvent(new Event("change", { bubbles: true }));
22
+ }
23
+ describe("ChatHistoryList", () => {
24
+ let container;
25
+ let root;
26
+ beforeEach(() => {
27
+ vi.stubGlobal("IS_REACT_ACT_ENVIRONMENT", true);
28
+ vi.stubGlobal("requestAnimationFrame", (cb) => {
29
+ cb(0);
30
+ return 0;
31
+ });
32
+ container = document.createElement("div");
33
+ document.body.appendChild(container);
34
+ root = createRoot(container);
35
+ });
36
+ afterEach(() => {
37
+ act(() => root.unmount());
38
+ container.remove();
39
+ document.body.innerHTML = "";
40
+ vi.restoreAllMocks();
41
+ vi.unstubAllGlobals();
42
+ });
43
+ it("renders a flat item list and calls onSelect when a row is clicked", () => {
44
+ const onSelect = vi.fn();
45
+ const items = [
46
+ item({ id: "thread-1", title: "First chat", timestamp: "Yesterday" }),
47
+ item({ id: "thread-2", title: "Second chat", timestamp: "2 min ago" }),
48
+ ];
49
+ act(() => {
50
+ root.render(_jsx(ChatHistoryList, { items: items, onSelect: onSelect }));
51
+ });
52
+ const titles = Array.from(container.querySelectorAll(".an-chat-history-row__title")).map((el) => el.textContent);
53
+ expect(titles).toEqual(["First chat", "Second chat"]);
54
+ expect(container.textContent).toContain("Yesterday");
55
+ expect(container.textContent).toContain("2 min ago");
56
+ const buttons = container.querySelectorAll(".an-chat-history-row__button");
57
+ act(() => {
58
+ buttons[1].click();
59
+ });
60
+ expect(onSelect).toHaveBeenCalledWith("thread-2");
61
+ });
62
+ it("highlights the active item", () => {
63
+ const items = [
64
+ item({ id: "thread-1" }),
65
+ item({ id: "thread-2" }),
66
+ ];
67
+ act(() => {
68
+ root.render(_jsx(ChatHistoryList, { items: items, activeId: "thread-2", onSelect: () => { } }));
69
+ });
70
+ const rows = container.querySelectorAll(".an-chat-history-row");
71
+ expect(rows[0].className).not.toContain("an-chat-history-row--active");
72
+ expect(rows[1].className).toContain("an-chat-history-row--active");
73
+ });
74
+ it("renders grouped sections with labels", () => {
75
+ const sections = [
76
+ {
77
+ id: "scoped",
78
+ label: "This deck",
79
+ items: [item({ id: "thread-1", title: "Deck chat" })],
80
+ },
81
+ {
82
+ id: "other",
83
+ label: "All chats",
84
+ items: [item({ id: "thread-2", title: "Other chat" })],
85
+ },
86
+ ];
87
+ act(() => {
88
+ root.render(_jsx(ChatHistoryList, { sections: sections, onSelect: () => { } }));
89
+ });
90
+ const labels = Array.from(container.querySelectorAll(".an-chat-history__section-label")).map((el) => el.textContent);
91
+ expect(labels).toEqual(["This deck", "All chats"]);
92
+ });
93
+ it("shows the empty state, distinguishing plain-empty from no-search-results", () => {
94
+ act(() => {
95
+ root.render(_jsx(ChatHistoryList, { items: [], onSelect: () => { } }));
96
+ });
97
+ expect(container.textContent).toContain("No chats yet");
98
+ act(() => {
99
+ root.render(_jsx(ChatHistoryList, { items: [], searchValue: "foo", onSearchChange: () => { }, onSelect: () => { } }));
100
+ });
101
+ expect(container.textContent).toContain("No matching chats");
102
+ });
103
+ it("shows a loading state instead of the list", () => {
104
+ const items = [item({ id: "thread-1" })];
105
+ act(() => {
106
+ root.render(_jsx(ChatHistoryList, { items: items, loading: true, loadingLabel: "Searching...", onSelect: () => { } }));
107
+ });
108
+ expect(container.textContent).toContain("Searching...");
109
+ expect(container.querySelector(".an-chat-history-row")).toBeNull();
110
+ });
111
+ it("shows an error state that takes priority over loading and items", () => {
112
+ const items = [item({ id: "thread-1" })];
113
+ act(() => {
114
+ root.render(_jsx(ChatHistoryList, { items: items, loading: true, error: "Could not load chats", onSelect: () => { } }));
115
+ });
116
+ expect(container.textContent).toContain("Could not load chats");
117
+ expect(container.querySelector(".an-chat-history-row")).toBeNull();
118
+ });
119
+ it("renders a controlled search box only when onSearchChange is supplied", () => {
120
+ const onSearchChange = vi.fn();
121
+ act(() => {
122
+ root.render(_jsx(ChatHistoryList, { items: [], searchValue: "abc", onSearchChange: onSearchChange, onSelect: () => { } }));
123
+ });
124
+ const input = container.querySelector(".an-chat-history__search-input");
125
+ expect(input).not.toBeNull();
126
+ expect(input.value).toBe("abc");
127
+ act(() => {
128
+ typeIntoInput(input, "abcd");
129
+ });
130
+ expect(onSearchChange).toHaveBeenCalledWith("abcd");
131
+ act(() => {
132
+ root.render(_jsx(ChatHistoryList, { items: [], onSelect: () => { } }));
133
+ });
134
+ expect(container.querySelector(".an-chat-history__search-input")).toBeNull();
135
+ });
136
+ it("does not render a row action menu when no menu callbacks are given", () => {
137
+ const items = [item({ id: "thread-1" })];
138
+ act(() => {
139
+ root.render(_jsx(ChatHistoryList, { items: items, onSelect: () => { } }));
140
+ });
141
+ expect(container.querySelector(".an-chat-history-row__menu")).toBeNull();
142
+ });
143
+ it("supports pin toggling via the row action menu", () => {
144
+ const onTogglePin = vi.fn();
145
+ const items = [
146
+ item({ id: "thread-1", title: "First chat" }),
147
+ ];
148
+ act(() => {
149
+ root.render(_jsx(ChatHistoryList, { items: items, onSelect: () => { }, onTogglePin: onTogglePin }));
150
+ });
151
+ const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
152
+ expect(trigger).not.toBeNull();
153
+ act(() => {
154
+ trigger.click();
155
+ });
156
+ const pinItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((el) => el.textContent?.includes("Pin to top"));
157
+ expect(pinItem).toBeDefined();
158
+ act(() => {
159
+ pinItem.click();
160
+ });
161
+ expect(onTogglePin).toHaveBeenCalledWith("thread-1");
162
+ });
163
+ it("uses custom labels for localized row actions", () => {
164
+ const onTogglePin = vi.fn();
165
+ const onDelete = vi.fn();
166
+ const labels = {
167
+ options: "Conversation actions",
168
+ renameInput: "Rename analytics conversation",
169
+ rename: "Rename conversation",
170
+ pin: "Keep at top",
171
+ unpin: "Remove from top",
172
+ delete: "Archive conversation",
173
+ };
174
+ const render = (pinned = false) => {
175
+ act(() => {
176
+ root.render(_jsx(ChatHistoryList, { items: [item({ id: "thread-1", titleText: "Campaign", pinned })], onSelect: () => { }, onRename: () => { }, onTogglePin: onTogglePin, onDelete: onDelete, labels: labels }, String(pinned)));
177
+ });
178
+ };
179
+ render();
180
+ const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
181
+ expect(trigger?.getAttribute("aria-label")).toBe(labels.options);
182
+ act(() => {
183
+ trigger.click();
184
+ });
185
+ expect(container.textContent).toContain(labels.rename);
186
+ expect(container.textContent).toContain(labels.pin);
187
+ expect(container.textContent).toContain(labels.delete);
188
+ const archiveItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent?.includes(labels.delete));
189
+ act(() => {
190
+ archiveItem.click();
191
+ });
192
+ expect(onDelete).toHaveBeenCalledWith("thread-1");
193
+ render();
194
+ const renameTrigger = container.querySelector(".an-chat-history-row__menu-trigger");
195
+ act(() => {
196
+ renameTrigger.click();
197
+ });
198
+ const renameItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent?.includes(labels.rename));
199
+ act(() => {
200
+ renameItem.click();
201
+ });
202
+ expect(container
203
+ .querySelector(".an-chat-history-row__rename-input")
204
+ ?.getAttribute("aria-label")).toBe(labels.renameInput);
205
+ render(true);
206
+ const pinnedTrigger = container.querySelector(".an-chat-history-row__menu-trigger");
207
+ act(() => {
208
+ pinnedTrigger.click();
209
+ });
210
+ expect(container.textContent).toContain(labels.unpin);
211
+ });
212
+ it("supports inline rename via the row action menu", () => {
213
+ const onRename = vi.fn();
214
+ const items = [
215
+ item({ id: "thread-1", title: "Old title", titleText: "Old title" }),
216
+ ];
217
+ act(() => {
218
+ root.render(_jsx(ChatHistoryList, { items: items, onSelect: () => { }, onRename: onRename, renameMaxLength: 160 }));
219
+ });
220
+ const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
221
+ act(() => {
222
+ trigger.click();
223
+ });
224
+ const renameItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((el) => el.textContent?.includes("Rename"));
225
+ act(() => {
226
+ renameItem.click();
227
+ });
228
+ const input = container.querySelector(".an-chat-history-row__rename-input");
229
+ expect(input).not.toBeNull();
230
+ expect(input.value).toBe("Old title");
231
+ expect(input.maxLength).toBe(160);
232
+ act(() => {
233
+ typeIntoInput(input, "New title");
234
+ });
235
+ act(() => {
236
+ input.dispatchEvent(new KeyboardEvent("keydown", { key: "Enter", bubbles: true }));
237
+ });
238
+ expect(onRename).toHaveBeenCalledWith("thread-1", "New title");
239
+ });
240
+ it("supports item-aware labels and app-specific actions", () => {
241
+ const onShare = vi.fn();
242
+ const items = [
243
+ item({ id: "thread-1", title: "Campaign", titleText: "Campaign" }),
244
+ ];
245
+ act(() => {
246
+ root.render(_jsx(ChatHistoryList, { items: items, onSelect: () => { }, onRename: () => { }, labels: {
247
+ options: (chat) => `Options for ${chat.titleText}`,
248
+ renameInput: (chat) => `Rename ${chat.titleText}`,
249
+ }, renderAdditionalRowActions: (chat, closeMenu) => (_jsx("button", { type: "button", className: "an-chat-history-row__menu-item", onClick: () => {
250
+ closeMenu();
251
+ onShare(chat.id);
252
+ }, children: "Share" })) }));
253
+ });
254
+ const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
255
+ expect(trigger?.getAttribute("aria-label")).toBe("Options for Campaign");
256
+ act(() => {
257
+ trigger.click();
258
+ });
259
+ const shareItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent === "Share");
260
+ act(() => {
261
+ shareItem.click();
262
+ });
263
+ expect(onShare).toHaveBeenCalledWith("thread-1");
264
+ expect(container.querySelector(".an-chat-history-row__menu-content")).toBeNull();
265
+ act(() => {
266
+ trigger.click();
267
+ });
268
+ const renameItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent === "Rename");
269
+ act(() => {
270
+ renameItem.click();
271
+ });
272
+ expect(container
273
+ .querySelector(".an-chat-history-row__rename-input")
274
+ ?.getAttribute("aria-label")).toBe("Rename Campaign");
275
+ });
276
+ it("renders the footer inside the scroll region regardless of list state", () => {
277
+ act(() => {
278
+ root.render(_jsx(ChatHistoryList, { items: [], onSelect: () => { }, footer: _jsx("div", { "data-testid": "footer", children: "Load older chats" }) }));
279
+ });
280
+ expect(container.textContent).toContain("Load older chats");
281
+ });
282
+ });
283
+ //# sourceMappingURL=ChatHistoryList.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHistoryList.spec.js","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ChatHistoryList, type ChatHistoryItem, type ChatHistoryListLabels, type ChatHistoryListProps, type ChatHistorySection, } from "./ChatHistoryList.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat-history/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ChatHistoryList, } from "./ChatHistoryList.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat-history/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAKhB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,314 @@
1
+ /*
2
+ * Shared chat history list — used by Core's `HistoryPopover`
3
+ * (MultiTabAssistantChat.tsx) and by Agent-Native Code's run rail
4
+ * (code-agents-ui CodeAgentsApp.tsx). Stable, prefixed class names (not
5
+ * Tailwind utilities) so the same visual language works in both a Tailwind
6
+ * host (core/templates) and a plain-CSS host (code-agents-ui), matching the
7
+ * approach used by agent-conversation.css. All colors resolve through the
8
+ * shared `hsl(var(--token))` variables so light/dark both work in either
9
+ * host's theme.
10
+ *
11
+ * Two density variants:
12
+ * .an-chat-history default — compact popover list (core)
13
+ * .an-chat-history--rail denser rail list with solid active state
14
+ */
15
+
16
+ .an-chat-history {
17
+ display: flex;
18
+ flex-direction: column;
19
+ min-height: 0;
20
+ }
21
+
22
+ .an-chat-history__search {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 8px;
26
+ padding: 8px 12px;
27
+ border-bottom: 1px solid hsl(var(--border));
28
+ color: hsl(var(--muted-foreground));
29
+ flex-shrink: 0;
30
+ }
31
+
32
+ .an-chat-history__search-icon {
33
+ flex-shrink: 0;
34
+ }
35
+
36
+ .an-chat-history__search-input {
37
+ flex: 1;
38
+ min-width: 0;
39
+ background: transparent;
40
+ border: 0;
41
+ outline: none;
42
+ font-size: 12px;
43
+ color: hsl(var(--foreground));
44
+ }
45
+
46
+ .an-chat-history__search-input::placeholder {
47
+ color: hsl(var(--muted-foreground));
48
+ }
49
+
50
+ .an-chat-history__list {
51
+ overflow-y: auto;
52
+ padding: 4px 0;
53
+ max-height: 16rem;
54
+ }
55
+
56
+ .an-chat-history--rail .an-chat-history__list {
57
+ max-height: none;
58
+ flex: 1;
59
+ min-height: 0;
60
+ }
61
+
62
+ .an-chat-history__state {
63
+ padding: 16px 12px;
64
+ text-align: center;
65
+ font-size: 12px;
66
+ color: hsl(var(--muted-foreground));
67
+ }
68
+
69
+ .an-chat-history__state--error {
70
+ /* Matches the amber-500 warning tone historically used for the
71
+ HistoryPopover load-error state (Tailwind's `text-amber-500`). */
72
+ color: hsl(38 92% 50%);
73
+ }
74
+
75
+ .an-chat-history__section-label {
76
+ padding: 6px 12px 4px;
77
+ font-size: 10px;
78
+ text-transform: uppercase;
79
+ letter-spacing: 0.04em;
80
+ color: hsl(var(--muted-foreground) / 0.7);
81
+ }
82
+
83
+ .an-chat-history--rail .an-chat-history__section {
84
+ display: grid;
85
+ gap: 1px;
86
+ }
87
+
88
+ /* ── Row ──────────────────────────────────────────────────────────────── */
89
+
90
+ .an-chat-history-row {
91
+ position: relative;
92
+ }
93
+
94
+ .an-chat-history--rail .an-chat-history-row {
95
+ border-radius: calc(var(--radius) - 2px);
96
+ margin: 0 4px;
97
+ }
98
+
99
+ .an-chat-history-row__button {
100
+ display: block;
101
+ width: 100%;
102
+ padding: 8px 12px;
103
+ border: 0;
104
+ background: transparent;
105
+ color: inherit;
106
+ text-align: start;
107
+ cursor: pointer;
108
+ }
109
+
110
+ .an-chat-history-row--disabled .an-chat-history-row__button {
111
+ cursor: default;
112
+ opacity: 0.6;
113
+ }
114
+
115
+ .an-chat-history-row:hover .an-chat-history-row__button {
116
+ background: hsl(var(--accent) / 0.5);
117
+ }
118
+
119
+ .an-chat-history-row--active .an-chat-history-row__button {
120
+ background: hsl(var(--accent) / 0.3);
121
+ }
122
+
123
+ .an-chat-history--rail .an-chat-history-row__button {
124
+ min-height: 32px;
125
+ padding-block: 6px;
126
+ padding-inline: 10px 36px;
127
+ border-radius: inherit;
128
+ color: hsl(var(--muted-foreground));
129
+ }
130
+
131
+ .an-chat-history--rail
132
+ .an-chat-history-row--active
133
+ .an-chat-history-row__button {
134
+ background: hsl(var(--accent));
135
+ color: hsl(var(--accent-foreground));
136
+ }
137
+
138
+ .an-chat-history-row__topline {
139
+ display: flex;
140
+ align-items: baseline;
141
+ justify-content: space-between;
142
+ gap: 8px;
143
+ min-width: 0;
144
+ }
145
+
146
+ .an-chat-history-row__title {
147
+ min-width: 0;
148
+ overflow: hidden;
149
+ text-overflow: ellipsis;
150
+ white-space: nowrap;
151
+ font-size: 12px;
152
+ font-weight: 500;
153
+ color: hsl(var(--foreground));
154
+ }
155
+
156
+ .an-chat-history-row--active .an-chat-history-row__title {
157
+ color: hsl(var(--foreground));
158
+ }
159
+
160
+ .an-chat-history--rail
161
+ .an-chat-history-row--active
162
+ .an-chat-history-row__title {
163
+ color: hsl(var(--accent-foreground));
164
+ }
165
+
166
+ .an-chat-history--rail
167
+ .an-chat-history-row--pinned:not(.an-chat-history-row--active)
168
+ .an-chat-history-row__title {
169
+ color: hsl(var(--foreground));
170
+ }
171
+
172
+ .an-chat-history-row__timestamp {
173
+ flex-shrink: 0;
174
+ font-size: 10px;
175
+ color: hsl(var(--muted-foreground));
176
+ }
177
+
178
+ .an-chat-history--rail .an-chat-history-row__timestamp {
179
+ font-size: 11px;
180
+ color: hsl(var(--muted-foreground) / 0.62);
181
+ }
182
+
183
+ .an-chat-history--rail
184
+ .an-chat-history-row--active
185
+ .an-chat-history-row__timestamp {
186
+ color: hsl(var(--accent-foreground));
187
+ }
188
+
189
+ .an-chat-history-row__subtitle {
190
+ margin-top: 2px;
191
+ overflow: hidden;
192
+ text-overflow: ellipsis;
193
+ white-space: nowrap;
194
+ font-size: 11px;
195
+ color: hsl(var(--muted-foreground));
196
+ }
197
+
198
+ .an-chat-history-row__detail {
199
+ margin-top: 2px;
200
+ overflow: hidden;
201
+ text-overflow: ellipsis;
202
+ white-space: nowrap;
203
+ font-size: 10px;
204
+ color: hsl(var(--muted-foreground) / 0.7);
205
+ }
206
+
207
+ /* ── Inline rename ────────────────────────────────────────────────────── */
208
+
209
+ .an-chat-history-row__rename {
210
+ display: flex;
211
+ align-items: center;
212
+ padding: 6px 12px;
213
+ }
214
+
215
+ .an-chat-history-row__rename-input {
216
+ width: 100%;
217
+ min-width: 0;
218
+ padding: 2px 6px;
219
+ border: 1px solid hsl(var(--ring));
220
+ border-radius: calc(var(--radius) - 3px);
221
+ background: hsl(var(--background));
222
+ color: hsl(var(--foreground));
223
+ font-size: 12px;
224
+ font-weight: 500;
225
+ line-height: 1.4;
226
+ outline: none;
227
+ box-shadow: 0 0 0 2px hsl(var(--ring) / 0.25);
228
+ }
229
+
230
+ .an-chat-history-row__rename-input:focus {
231
+ box-shadow: 0 0 0 2px hsl(var(--ring) / 0.35);
232
+ }
233
+
234
+ /* ── Row action menu ──────────────────────────────────────────────────── */
235
+
236
+ .an-chat-history-row__menu {
237
+ position: absolute;
238
+ top: 4px;
239
+ inset-inline-end: 4px;
240
+ }
241
+
242
+ .an-chat-history-row__menu-trigger {
243
+ display: inline-flex;
244
+ align-items: center;
245
+ justify-content: center;
246
+ width: 24px;
247
+ height: 24px;
248
+ border: 0;
249
+ border-radius: calc(var(--radius) - 3px);
250
+ background: transparent;
251
+ color: hsl(var(--muted-foreground) / 0.72);
252
+ opacity: 0;
253
+ cursor: pointer;
254
+ transition:
255
+ background 100ms ease,
256
+ color 100ms ease,
257
+ opacity 100ms ease;
258
+ }
259
+
260
+ .an-chat-history-row:hover .an-chat-history-row__menu-trigger,
261
+ .an-chat-history-row:focus-within .an-chat-history-row__menu-trigger,
262
+ .an-chat-history-row__menu-trigger[aria-expanded="true"],
263
+ .an-chat-history-row__menu-trigger--pinned {
264
+ opacity: 1;
265
+ }
266
+
267
+ .an-chat-history-row__menu-trigger:hover,
268
+ .an-chat-history-row__menu-trigger[aria-expanded="true"] {
269
+ background: hsl(var(--accent));
270
+ color: hsl(var(--foreground));
271
+ }
272
+
273
+ .an-chat-history-row__menu-content {
274
+ position: absolute;
275
+ top: calc(100% + 4px);
276
+ inset-inline-end: 0;
277
+ z-index: 30;
278
+ min-width: 160px;
279
+ padding: 4px;
280
+ border: 1px solid hsl(var(--border));
281
+ border-radius: var(--radius);
282
+ background: hsl(var(--popover));
283
+ color: hsl(var(--popover-foreground));
284
+ box-shadow: 0 10px 30px hsl(var(--background) / 0.28);
285
+ }
286
+
287
+ .an-chat-history-row__menu-item {
288
+ display: flex;
289
+ align-items: center;
290
+ gap: 8px;
291
+ width: 100%;
292
+ padding: 6px 8px;
293
+ border: 0;
294
+ border-radius: calc(var(--radius) - 4px);
295
+ background: transparent;
296
+ color: inherit;
297
+ font-size: 12px;
298
+ text-align: start;
299
+ cursor: pointer;
300
+ }
301
+
302
+ .an-chat-history-row__menu-item:hover {
303
+ background: hsl(var(--accent));
304
+ color: hsl(var(--accent-foreground));
305
+ }
306
+
307
+ .an-chat-history-row__menu-item--danger {
308
+ color: hsl(var(--destructive));
309
+ }
310
+
311
+ .an-chat-history-row__menu-item--danger:hover {
312
+ background: hsl(var(--destructive) / 0.12);
313
+ color: hsl(var(--destructive));
314
+ }