@agent-native/toolkit 0.21.3 → 0.22.0-nightly-20260926111339

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 (166) hide show
  1. package/agent-native.eject.json +11 -20
  2. package/dist/agentkit.d.ts +5 -1
  3. package/dist/agentkit.d.ts.map +1 -1
  4. package/dist/agentkit.js +2 -0
  5. package/dist/agentkit.js.map +1 -1
  6. package/dist/app-shell/PromptHome.d.ts +26 -0
  7. package/dist/app-shell/PromptHome.d.ts.map +1 -0
  8. package/dist/app-shell/PromptHome.js +19 -0
  9. package/dist/app-shell/PromptHome.js.map +1 -0
  10. package/dist/app-shell/PromptHome.spec.d.ts +2 -0
  11. package/dist/app-shell/PromptHome.spec.d.ts.map +1 -0
  12. package/dist/app-shell/PromptHome.spec.js +206 -0
  13. package/dist/app-shell/PromptHome.spec.js.map +1 -0
  14. package/dist/app-shell/TemplateLibraryGrid.d.ts +48 -0
  15. package/dist/app-shell/TemplateLibraryGrid.d.ts.map +1 -0
  16. package/dist/app-shell/TemplateLibraryGrid.js +20 -0
  17. package/dist/app-shell/TemplateLibraryGrid.js.map +1 -0
  18. package/dist/app-shell/TemplatePreviewDialog.d.ts +41 -0
  19. package/dist/app-shell/TemplatePreviewDialog.d.ts.map +1 -0
  20. package/dist/app-shell/TemplatePreviewDialog.js +50 -0
  21. package/dist/app-shell/TemplatePreviewDialog.js.map +1 -0
  22. package/dist/app-shell/TemplatePreviewDialog.spec.d.ts +2 -0
  23. package/dist/app-shell/TemplatePreviewDialog.spec.d.ts.map +1 -0
  24. package/dist/app-shell/TemplatePreviewDialog.spec.js +258 -0
  25. package/dist/app-shell/TemplatePreviewDialog.spec.js.map +1 -0
  26. package/dist/app-shell/index.d.ts +3 -0
  27. package/dist/app-shell/index.d.ts.map +1 -1
  28. package/dist/app-shell/index.js +3 -0
  29. package/dist/app-shell/index.js.map +1 -1
  30. package/dist/app-shell/prompt-home.css +159 -0
  31. package/dist/composer/ComposerContextMenu.d.ts +48 -0
  32. package/dist/composer/ComposerContextMenu.d.ts.map +1 -0
  33. package/dist/composer/ComposerContextMenu.js +295 -0
  34. package/dist/composer/ComposerContextMenu.js.map +1 -0
  35. package/dist/composer/ComposerContextMenu.spec.d.ts +2 -0
  36. package/dist/composer/ComposerContextMenu.spec.d.ts.map +1 -0
  37. package/dist/composer/ComposerContextMenu.spec.js +270 -0
  38. package/dist/composer/ComposerContextMenu.spec.js.map +1 -0
  39. package/dist/composer/ComposerContextMenuSearch.d.ts +11 -0
  40. package/dist/composer/ComposerContextMenuSearch.d.ts.map +1 -0
  41. package/dist/composer/ComposerContextMenuSearch.js +42 -0
  42. package/dist/composer/ComposerContextMenuSearch.js.map +1 -0
  43. package/dist/composer/ComposerContextPicker.d.ts +7 -0
  44. package/dist/composer/ComposerContextPicker.d.ts.map +1 -0
  45. package/dist/composer/ComposerContextPicker.js +71 -0
  46. package/dist/composer/ComposerContextPicker.js.map +1 -0
  47. package/dist/composer/ComposerContextPicker.spec.d.ts +2 -0
  48. package/dist/composer/ComposerContextPicker.spec.d.ts.map +1 -0
  49. package/dist/composer/ComposerContextPicker.spec.js +454 -0
  50. package/dist/composer/ComposerContextPicker.spec.js.map +1 -0
  51. package/dist/composer/ComposerContextPickerDialog.d.ts +8 -0
  52. package/dist/composer/ComposerContextPickerDialog.d.ts.map +1 -0
  53. package/dist/composer/ComposerContextPickerDialog.js +101 -0
  54. package/dist/composer/ComposerContextPickerDialog.js.map +1 -0
  55. package/dist/composer/ComposerContextPickerDialog.spec.d.ts +2 -0
  56. package/dist/composer/ComposerContextPickerDialog.spec.d.ts.map +1 -0
  57. package/dist/composer/ComposerContextPickerDialog.spec.js +329 -0
  58. package/dist/composer/ComposerContextPickerDialog.spec.js.map +1 -0
  59. package/dist/composer/ComposerContextSearchInput.d.ts +7 -0
  60. package/dist/composer/ComposerContextSearchInput.d.ts.map +1 -0
  61. package/dist/composer/ComposerContextSearchInput.js +18 -0
  62. package/dist/composer/ComposerContextSearchInput.js.map +1 -0
  63. package/dist/composer/PromptComposer.context.spec.d.ts +2 -0
  64. package/dist/composer/PromptComposer.context.spec.d.ts.map +1 -0
  65. package/dist/composer/PromptComposer.context.spec.js +383 -0
  66. package/dist/composer/PromptComposer.context.spec.js.map +1 -0
  67. package/dist/composer/PromptComposer.d.ts +19 -5
  68. package/dist/composer/PromptComposer.d.ts.map +1 -1
  69. package/dist/composer/PromptComposer.js +30 -25
  70. package/dist/composer/PromptComposer.js.map +1 -1
  71. package/dist/composer/PromptComposer.spec.js +24 -1
  72. package/dist/composer/PromptComposer.spec.js.map +1 -1
  73. package/dist/composer/TiptapComposer.d.ts +13 -2
  74. package/dist/composer/TiptapComposer.d.ts.map +1 -1
  75. package/dist/composer/TiptapComposer.js +89 -32
  76. package/dist/composer/TiptapComposer.js.map +1 -1
  77. package/dist/composer/context-items.d.ts +12 -0
  78. package/dist/composer/context-items.d.ts.map +1 -0
  79. package/dist/composer/context-items.js +46 -0
  80. package/dist/composer/context-items.js.map +1 -0
  81. package/dist/composer/context-items.spec.d.ts +2 -0
  82. package/dist/composer/context-items.spec.d.ts.map +1 -0
  83. package/dist/composer/context-items.spec.js +43 -0
  84. package/dist/composer/context-items.spec.js.map +1 -0
  85. package/dist/composer/index.d.ts +4 -1
  86. package/dist/composer/index.d.ts.map +1 -1
  87. package/dist/composer/index.js +3 -1
  88. package/dist/composer/index.js.map +1 -1
  89. package/dist/composer/runtime-adapters.d.ts +6 -1
  90. package/dist/composer/runtime-adapters.d.ts.map +1 -1
  91. package/dist/composer/runtime-adapters.js.map +1 -1
  92. package/dist/composer/useComposerContextPicker.d.ts +111 -0
  93. package/dist/composer/useComposerContextPicker.d.ts.map +1 -0
  94. package/dist/composer/useComposerContextPicker.js +299 -0
  95. package/dist/composer/useComposerContextPicker.js.map +1 -0
  96. package/dist/design-system/default-adapter.d.ts.map +1 -1
  97. package/dist/design-system/default-adapter.js +13 -7
  98. package/dist/design-system/default-adapter.js.map +1 -1
  99. package/dist/design-system/default-adapter.spec.js +13 -0
  100. package/dist/design-system/default-adapter.spec.js.map +1 -1
  101. package/dist/design-system/types.d.ts +4 -1
  102. package/dist/design-system/types.d.ts.map +1 -1
  103. package/dist/index.d.ts +0 -1
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +0 -1
  106. package/dist/index.js.map +1 -1
  107. package/dist/styles.css +1 -0
  108. package/dist/ui/command.d.ts +8 -2
  109. package/dist/ui/command.d.ts.map +1 -1
  110. package/dist/ui/command.js +9 -2
  111. package/dist/ui/command.js.map +1 -1
  112. package/dist/ui/command.spec.js +20 -1
  113. package/dist/ui/command.spec.js.map +1 -1
  114. package/package.json +2 -15
  115. package/src/agentkit.ts +26 -0
  116. package/src/app-shell/PromptHome.spec.tsx +404 -0
  117. package/src/app-shell/PromptHome.tsx +111 -0
  118. package/src/app-shell/TemplateLibraryGrid.tsx +212 -0
  119. package/src/app-shell/TemplatePreviewDialog.spec.tsx +473 -0
  120. package/src/app-shell/TemplatePreviewDialog.tsx +224 -0
  121. package/src/app-shell/index.ts +3 -0
  122. package/src/app-shell/prompt-home.css +159 -0
  123. package/src/composer/ComposerContextMenu.spec.tsx +343 -0
  124. package/src/composer/ComposerContextMenu.tsx +610 -0
  125. package/src/composer/ComposerContextMenuSearch.tsx +69 -0
  126. package/src/composer/ComposerContextPicker.spec.tsx +520 -0
  127. package/src/composer/ComposerContextPicker.tsx +280 -0
  128. package/src/composer/ComposerContextPickerDialog.spec.tsx +405 -0
  129. package/src/composer/ComposerContextPickerDialog.tsx +274 -0
  130. package/src/composer/ComposerContextSearchInput.tsx +48 -0
  131. package/src/composer/PromptComposer.context.spec.tsx +577 -0
  132. package/src/composer/PromptComposer.spec.ts +24 -1
  133. package/src/composer/PromptComposer.tsx +60 -26
  134. package/src/composer/TiptapComposer.tsx +198 -48
  135. package/src/composer/context-items.spec.ts +68 -0
  136. package/src/composer/context-items.ts +72 -0
  137. package/src/composer/index.ts +27 -0
  138. package/src/composer/runtime-adapters.tsx +6 -1
  139. package/src/composer/useComposerContextPicker.ts +441 -0
  140. package/src/design-system/default-adapter.spec.tsx +23 -0
  141. package/src/design-system/default-adapter.tsx +52 -23
  142. package/src/design-system/types.ts +4 -1
  143. package/src/index.ts +0 -1
  144. package/src/styles.css +1 -0
  145. package/src/ui/command.spec.tsx +33 -1
  146. package/src/ui/command.tsx +52 -9
  147. package/dist/marketing/MarketingHome.d.ts +0 -36
  148. package/dist/marketing/MarketingHome.d.ts.map +0 -1
  149. package/dist/marketing/MarketingHome.js +0 -28
  150. package/dist/marketing/MarketingHome.js.map +0 -1
  151. package/dist/marketing/MarketingHome.spec.d.ts +0 -2
  152. package/dist/marketing/MarketingHome.spec.d.ts.map +0 -1
  153. package/dist/marketing/MarketingHome.spec.js +0 -44
  154. package/dist/marketing/MarketingHome.spec.js.map +0 -1
  155. package/dist/marketing/Starfield.d.ts +0 -8
  156. package/dist/marketing/Starfield.d.ts.map +0 -1
  157. package/dist/marketing/Starfield.js +0 -349
  158. package/dist/marketing/Starfield.js.map +0 -1
  159. package/dist/marketing/index.d.ts +0 -3
  160. package/dist/marketing/index.d.ts.map +0 -1
  161. package/dist/marketing/index.js +0 -3
  162. package/dist/marketing/index.js.map +0 -1
  163. package/src/marketing/MarketingHome.spec.tsx +0 -75
  164. package/src/marketing/MarketingHome.tsx +0 -183
  165. package/src/marketing/Starfield.tsx +0 -403
  166. package/src/marketing/index.ts +0 -6
@@ -0,0 +1,295 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconFile, IconPlus, IconTextRecognition } from "@tabler/icons-react";
3
+ import { useCallback, useEffect, useRef, useState, } from "react";
4
+ import { Button } from "../ui/button.js";
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "../ui/dropdown-menu.js";
6
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/tooltip.js";
7
+ import { formatAttachmentError } from "./attachment-accept.js";
8
+ import { ComposerContextMenuSearch } from "./ComposerContextMenuSearch.js";
9
+ import { ComposerContextPicker, } from "./ComposerContextPicker.js";
10
+ import { ComposerContextPickerDialog } from "./ComposerContextPickerDialog.js";
11
+ import { useComposerRuntimeAdapters } from "./runtime-adapters.js";
12
+ export { ComposerContextSearchInput, } from "./ComposerContextSearchInput.js";
13
+ function findAction(items, id) {
14
+ for (const item of items) {
15
+ if (item.children) {
16
+ const match = findAction(item.children, id);
17
+ if (match)
18
+ return match;
19
+ }
20
+ else if (item.id === id)
21
+ return item;
22
+ }
23
+ }
24
+ export function getComposerContextMenuEntries(items, path, query) {
25
+ let scope = items;
26
+ for (const id of path) {
27
+ const category = scope.find((item) => item.id === id);
28
+ if (!category?.children || category.disabled)
29
+ return [];
30
+ scope = category.children;
31
+ }
32
+ const terms = query.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);
33
+ if (!terms.length)
34
+ return [...scope];
35
+ const matches = [];
36
+ const visit = (entries, ancestors, disabled = false) => {
37
+ for (const entry of entries) {
38
+ const searchable = [...ancestors, entry.label, ...(entry.keywords ?? [])];
39
+ if (entry.children)
40
+ visit(entry.children, searchable, disabled || entry.disabled === true);
41
+ else if (terms.every((term) => searchable.join(" ").toLocaleLowerCase().includes(term)))
42
+ matches.push(disabled ? { ...entry, disabled: true } : entry);
43
+ }
44
+ };
45
+ visit(scope, []);
46
+ return matches;
47
+ }
48
+ function ContextSubmenu({ label, icon, disabled, open, onOpenChange, children, }) {
49
+ const trigger = useRef(null);
50
+ return (_jsxs(DropdownMenuSub, { open: open, onOpenChange: onOpenChange, children: [_jsxs(DropdownMenuSubTrigger, { ref: trigger, disabled: disabled, children: [icon, label] }), _jsx(DropdownMenuSubContent, { className: "w-64", "data-agent-native-composer-popover": "true", onFocusOutside: (event) => {
51
+ const target = event.target;
52
+ // Radix focuses ancestor menus/triggers while a resumed chain mounts.
53
+ if (target instanceof HTMLElement &&
54
+ target.closest('[data-agent-native-composer-popover="true"]') &&
55
+ target.matches('[role="menu"], [aria-haspopup="menu"][aria-expanded="true"]')) {
56
+ event.preventDefault();
57
+ }
58
+ }, onEscapeKeyDown: (event) => {
59
+ event.preventDefault();
60
+ event.stopPropagation();
61
+ onOpenChange(false);
62
+ trigger.current?.focus();
63
+ }, children: children })] }));
64
+ }
65
+ function ContextMenuPanel({ placeholder, children, }) {
66
+ const [query, setQuery] = useState("");
67
+ return (_jsxs(_Fragment, { children: [_jsx(ComposerContextMenuSearch, { placeholder: placeholder, value: query, onValueChange: setQuery }), children(query)] }));
68
+ }
69
+ function matchesEntry(entry, query) {
70
+ const terms = query.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);
71
+ const text = [entry.label, ...(entry.keywords ?? [])]
72
+ .join(" ")
73
+ .toLocaleLowerCase();
74
+ return (terms.every((term) => text.includes(term)) ||
75
+ Boolean(entry.children?.some((child) => matchesEntry(child, query))));
76
+ }
77
+ function LegacyContextPage({ children }) {
78
+ const element = useRef(null);
79
+ useEffect(() => {
80
+ const frame = requestAnimationFrame(() => {
81
+ const input = element.current?.querySelector("[data-autofocus], [cmdk-input], input:not([type=hidden]):not(:disabled), textarea:not(:disabled)");
82
+ input?.focus();
83
+ });
84
+ return () => cancelAnimationFrame(frame);
85
+ }, []);
86
+ return _jsx("div", { ref: element, children: children });
87
+ }
88
+ export function ComposerContextMenu({ items, addAttachment, attachmentAccept, onAttachmentError, disabled, }) {
89
+ const t = useComposerRuntimeAdapters().translate;
90
+ const [open, setOpen] = useState(false);
91
+ const [contextOpen, setContextOpen] = useState(false);
92
+ const [path, setPath] = useState([]);
93
+ const pathRef = useRef(path);
94
+ const [page, setPage] = useState(null);
95
+ const pageRef = useRef(page);
96
+ const itemsRef = useRef(items);
97
+ itemsRef.current = items;
98
+ const [error, setError] = useState(null);
99
+ const inputRef = useRef(null);
100
+ const triggerRef = useRef(null);
101
+ const pendingDialog = useRef(null);
102
+ const [dialog, setDialog] = useState(null);
103
+ const dialogRef = useRef(dialog);
104
+ dialogRef.current = dialog;
105
+ const dialogAction = dialog ? findAction(items, dialog.id) : undefined;
106
+ const dialogAvailable = dialogAction?.picker &&
107
+ typeof dialogAction.picker.presentation === "object" &&
108
+ dialogAction.picker.scopeKey === dialog?.scopeKey;
109
+ useEffect(() => {
110
+ if (dialog && !dialogAvailable) {
111
+ dialogRef.current = null;
112
+ setDialog(null);
113
+ }
114
+ }, [dialog, dialogAvailable]);
115
+ const restoreFocusOnClose = useRef(true);
116
+ const label = t("agentChat.composer.addContext", {
117
+ defaultValue: "Add context",
118
+ });
119
+ const searchContext = t("agentChat.composer.searchContext", {
120
+ defaultValue: "Search context…",
121
+ });
122
+ const uploadLabel = t("agentChat.composer.menu.uploadFile", {
123
+ defaultValue: "Upload File",
124
+ });
125
+ const reportError = useCallback((cause) => {
126
+ const message = formatAttachmentError(cause, t("agentChat.composer.contextActionFailed", {
127
+ defaultValue: "Could not add context.",
128
+ }));
129
+ setError(message);
130
+ onAttachmentError?.(message);
131
+ }, [t, onAttachmentError]);
132
+ const dismissPage = useCallback(() => {
133
+ const current = pageRef.current;
134
+ pageRef.current = null;
135
+ setPage(null);
136
+ if (!current)
137
+ return;
138
+ try {
139
+ (findAction(itemsRef.current, current.id)?.onDismiss ?? current.onDismiss)?.();
140
+ }
141
+ catch (cause) {
142
+ reportError(cause);
143
+ }
144
+ }, [reportError]);
145
+ const updatePath = (next) => {
146
+ pathRef.current = next;
147
+ setPath(next);
148
+ };
149
+ const changeOpen = (next) => {
150
+ setOpen(next);
151
+ if (!next) {
152
+ dismissPage();
153
+ updatePath([]);
154
+ setContextOpen(false);
155
+ }
156
+ };
157
+ const selectAction = (action) => {
158
+ setError(null);
159
+ try {
160
+ void Promise.resolve(action.onSelect?.()).catch(reportError);
161
+ }
162
+ catch (cause) {
163
+ reportError(cause);
164
+ }
165
+ };
166
+ const activate = (action, origin, select = true) => {
167
+ dismissPage();
168
+ const next = { id: action.id, origin, onDismiss: action.onDismiss };
169
+ pageRef.current = next;
170
+ setPage(next);
171
+ updatePath([...origin, action.id]);
172
+ if (select && !action.picker)
173
+ selectAction(action);
174
+ };
175
+ const currentAction = page ? findAction(items, page.id) : undefined;
176
+ useEffect(() => {
177
+ if (page && !currentAction?.render && !currentAction?.picker)
178
+ dismissPage();
179
+ }, [page, currentAction, dismissPage]);
180
+ const renderEntries = (entries, origin) => (_jsx(DropdownMenuGroup, { children: entries.map((entry) => {
181
+ if (entry.picker && typeof entry.picker.presentation === "object") {
182
+ return (_jsxs(DropdownMenuItem, { disabled: entry.disabled, onSelect: () => {
183
+ pendingDialog.current = {
184
+ id: entry.id,
185
+ scopeKey: entry.picker?.scopeKey,
186
+ };
187
+ changeOpen(false);
188
+ }, children: [entry.icon, entry.label] }, entry.id));
189
+ }
190
+ const branch = [...origin, entry.id];
191
+ const expanded = branch.every((id, index) => path[index] === id);
192
+ if (entry.children || entry.picker || entry.render) {
193
+ const back = () => {
194
+ dismissPage();
195
+ updatePath(origin);
196
+ };
197
+ const activePage = page;
198
+ return (_jsx(ContextSubmenu, { label: entry.label, icon: entry.icon, disabled: entry.disabled, open: expanded, onOpenChange: (next) => {
199
+ const isOpen = branch.every((id, index) => pathRef.current[index] === id);
200
+ if (next === isOpen)
201
+ return;
202
+ if (!next) {
203
+ back();
204
+ return;
205
+ }
206
+ setError(null);
207
+ if (entry.children) {
208
+ dismissPage();
209
+ updatePath(branch);
210
+ }
211
+ else
212
+ activate(entry, origin);
213
+ }, children: entry.children ? (_jsx(ContextMenuPanel, { placeholder: entry.searchPlaceholder ?? searchContext, children: (query) => renderEntries(entry.children.filter((child) => matchesEntry(child, query)), branch) })) : entry.picker ? (_jsx(ComposerContextPicker, { config: entry.picker, onClose: () => {
214
+ if (pageRef.current === activePage)
215
+ changeOpen(false);
216
+ } }, JSON.stringify([entry.id, entry.picker.scopeKey]))) : entry.render && expanded ? (_jsx(LegacyContextPage, { children: entry.render({
217
+ onBack: back,
218
+ onClose: (options) => {
219
+ if (pageRef.current !== activePage)
220
+ return;
221
+ restoreFocusOnClose.current =
222
+ options?.restoreFocus !== false;
223
+ changeOpen(false);
224
+ },
225
+ onResume: () => {
226
+ const action = findAction(itemsRef.current, entry.id);
227
+ if (!action?.render) {
228
+ reportError(new Error(t("agentChat.composer.contextActionFailed", {
229
+ defaultValue: "Could not add context.",
230
+ })));
231
+ return;
232
+ }
233
+ setOpen(true);
234
+ setContextOpen(true);
235
+ activate(action, origin, false);
236
+ },
237
+ }) })) : null }, entry.id));
238
+ }
239
+ return (_jsxs(DropdownMenuItem, { disabled: entry.disabled, onSelect: () => {
240
+ changeOpen(false);
241
+ selectAction(entry);
242
+ }, children: [entry.icon, entry.label] }, entry.id));
243
+ }) }));
244
+ return (_jsxs(_Fragment, { children: [addAttachment && (_jsx("input", { ref: inputRef, type: "file", multiple: true, accept: attachmentAccept, hidden: true, onChange: (event) => {
245
+ const files = Array.from(event.target.files ?? []);
246
+ event.target.value = "";
247
+ setError(null);
248
+ void Promise.all(files.map((file) => Promise.resolve().then(() => addAttachment(file)))).catch(reportError);
249
+ } })), _jsxs(DropdownMenu, { open: open, onOpenChange: changeOpen, children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { ref: triggerRef, type: "button", variant: "ghost", size: "icon", className: "size-7 shrink-0", disabled: disabled, "aria-label": label, children: _jsx(IconPlus, {}) }) }) }), _jsx(TooltipContent, { children: label })] }), _jsx(DropdownMenuContent, { align: "start", className: "w-64", "data-agent-native-composer-popover": "true", onCloseAutoFocus: (event) => {
250
+ if (pendingDialog.current) {
251
+ event.preventDefault();
252
+ setDialog(pendingDialog.current);
253
+ pendingDialog.current = null;
254
+ }
255
+ if (!restoreFocusOnClose.current)
256
+ event.preventDefault();
257
+ restoreFocusOnClose.current = true;
258
+ }, children: _jsx(ContextMenuPanel, { placeholder: t("agentChat.composer.menu.search", {
259
+ defaultValue: "Search…",
260
+ }), children: (query) => (_jsxs(DropdownMenuGroup, { children: [addAttachment &&
261
+ uploadLabel
262
+ .toLocaleLowerCase()
263
+ .includes(query.trim().toLocaleLowerCase()) && (_jsxs(DropdownMenuItem, { onSelect: () => {
264
+ changeOpen(false);
265
+ inputRef.current?.click();
266
+ }, children: [_jsx(IconFile, { size: 16 }), uploadLabel] })), items.length > 0 &&
267
+ (label
268
+ .toLocaleLowerCase()
269
+ .includes(query.trim().toLocaleLowerCase()) ||
270
+ items.some((item) => matchesEntry(item, query))) && (_jsx(ContextSubmenu, { label: label, icon: _jsx(IconTextRecognition, { size: 16 }), open: contextOpen, onOpenChange: (next) => {
271
+ setContextOpen(next);
272
+ if (!next) {
273
+ dismissPage();
274
+ updatePath([]);
275
+ }
276
+ }, children: _jsx(ContextMenuPanel, { placeholder: searchContext, children: (contextQuery) => renderEntries(items.filter((item) => matchesEntry(item, contextQuery)), []) }) }))] })) }) })] }), dialog &&
277
+ dialogAvailable &&
278
+ dialogAction?.picker &&
279
+ typeof dialogAction.picker.presentation === "object" && (_jsx(ComposerContextPickerDialog, { title: dialogAction.label, config: dialogAction.picker, onClose: () => {
280
+ if (dialogRef.current !== dialog)
281
+ return;
282
+ dialogRef.current = null;
283
+ setDialog(null);
284
+ try {
285
+ dialogAction.onDismiss?.();
286
+ }
287
+ catch (cause) {
288
+ reportError(cause);
289
+ }
290
+ }, onRestoreFocus: () => {
291
+ if (!dialogRef.current)
292
+ triggerRef.current?.focus();
293
+ } }, JSON.stringify([dialog.id, dialogAction.picker.scopeKey]))), error && (_jsx("span", { role: "alert", className: "text-xs text-destructive", children: error }))] }));
294
+ }
295
+ //# sourceMappingURL=ComposerContextMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerContextMenu.js","sourceRoot":"","sources":["../../src/composer/ComposerContextMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ComposerContextMenu.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerContextMenu.spec.d.ts","sourceRoot":"","sources":["../../src/composer/ComposerContextMenu.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,270 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } 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 { TooltipProvider } from "../ui/tooltip.js";
7
+ import { ComposerContextMenu, getComposerContextMenuEntries, } from "./ComposerContextMenu.js";
8
+ import { snapshotComposerContextItems } from "./context-items.js";
9
+ const items = [
10
+ {
11
+ id: "documents",
12
+ label: "Documents",
13
+ searchPlaceholder: "Search documents…",
14
+ children: [
15
+ {
16
+ id: "brief",
17
+ label: "Project brief",
18
+ keywords: ["launch"],
19
+ onSelect() { },
20
+ },
21
+ {
22
+ id: "archive",
23
+ label: "Archive",
24
+ children: [{ id: "notes", label: "Meeting notes", onSelect() { } }],
25
+ },
26
+ ],
27
+ },
28
+ {
29
+ id: "library",
30
+ label: "Library",
31
+ children: [{ id: "reference", label: "Launch reference", onSelect() { } }],
32
+ },
33
+ ];
34
+ describe("composer context contracts", () => {
35
+ it("retains scoped public search and inherited disabled state", () => {
36
+ expect(getComposerContextMenuEntries(items, [], "").map((item) => item.id)).toEqual(["documents", "library"]);
37
+ expect(getComposerContextMenuEntries(items, [], "launch").map((item) => item.id)).toEqual(["brief", "reference"]);
38
+ expect(getComposerContextMenuEntries(items, ["documents"], "launch").map((item) => item.id)).toEqual(["brief"]);
39
+ expect(getComposerContextMenuEntries([{ ...items[0], disabled: true }], [], "brief")[0].disabled).toBe(true);
40
+ expect(getComposerContextMenuEntries(items, ["missing"], "")).toEqual([]);
41
+ });
42
+ it("copies and freezes selected context and rejects unready items", () => {
43
+ const source = [{ key: "brief", title: "Brief", context: "original" }];
44
+ const snapshot = snapshotComposerContextItems(source);
45
+ source[0].context = "changed";
46
+ expect(snapshot[0].context).toBe("original");
47
+ expect(Object.isFrozen(snapshot)).toBe(true);
48
+ expect(Object.isFrozen(snapshot[0])).toBe(true);
49
+ expect(snapshotComposerContextItems(undefined)).toBeUndefined();
50
+ expect(snapshotComposerContextItems([])).toEqual([]);
51
+ for (const status of ["pending", "error"])
52
+ expect(() => snapshotComposerContextItems([
53
+ { key: "bad", title: "Bad", context: "", status },
54
+ ])).toThrow("not ready");
55
+ });
56
+ });
57
+ describe("connected composer menus", () => {
58
+ let container;
59
+ let root;
60
+ beforeEach(() => {
61
+ vi.stubGlobal("IS_REACT_ACT_ENVIRONMENT", true);
62
+ vi.spyOn(HTMLElement.prototype, "scrollIntoView").mockImplementation(() => { });
63
+ container = document.createElement("div");
64
+ document.body.append(container);
65
+ root = createRoot(container);
66
+ });
67
+ afterEach(async () => {
68
+ await act(async () => root.unmount());
69
+ container.remove();
70
+ vi.restoreAllMocks();
71
+ vi.unstubAllGlobals();
72
+ });
73
+ async function render(entries = items, props = {}) {
74
+ await act(async () => root.render(_jsxs(TooltipProvider, { children: [_jsx("input", { "aria-label": "Prompt draft", defaultValue: "Keep this draft" }), _jsx(ComposerContextMenu, { items: entries, ...props })] })));
75
+ }
76
+ const menus = () => Array.from(document.querySelectorAll('[role="menu"]'));
77
+ const row = (label) => {
78
+ const found = Array.from(document.querySelectorAll('[role^="menuitem"]')).find((element) => element.textContent === label);
79
+ expect(found, label).toBeDefined();
80
+ return found;
81
+ };
82
+ async function key(target, key) {
83
+ await act(async () => {
84
+ target.focus();
85
+ target.dispatchEvent(new KeyboardEvent("keydown", { key, bubbles: true, cancelable: true }));
86
+ await new Promise((resolve) => setTimeout(resolve, 0));
87
+ });
88
+ }
89
+ const open = () => key(container.querySelector('button[aria-label="Add context"]'), "ArrowDown");
90
+ async function click(label) {
91
+ await act(async () => row(label).click());
92
+ }
93
+ async function search(placeholder, value) {
94
+ const input = document.querySelector(`input[placeholder="${placeholder}"]`);
95
+ await act(async () => {
96
+ Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value").set.call(input, value);
97
+ input.dispatchEvent(new Event("input", { bubbles: true }));
98
+ });
99
+ }
100
+ it("keeps all anchored panels visible with category search overrides and w64", async () => {
101
+ await render(items, { addAttachment: vi.fn() });
102
+ await open();
103
+ expect(document.querySelector('input[placeholder="Search…"]')).not.toBeNull();
104
+ expect(row("Upload File").querySelector("svg")?.getAttribute("width")).toBe("16");
105
+ await click("Add context");
106
+ await click("Documents");
107
+ await click("Archive");
108
+ expect(menus()).toHaveLength(4);
109
+ expect(menus().every((menu) => menu.classList.contains("w-64"))).toBe(true);
110
+ expect(document.querySelectorAll('[role="searchbox"]')).toHaveLength(4);
111
+ expect(document.querySelector('input[placeholder="Search documents…"]')).not.toBeNull();
112
+ expect(row("Documents").getAttribute("aria-expanded")).toBe("true");
113
+ expect(row("Meeting notes").getAttribute("role")).toBe("menuitem");
114
+ });
115
+ it("filters root and category search without flattening the hierarchy", async () => {
116
+ const select = vi.fn();
117
+ await render([
118
+ {
119
+ id: "documents",
120
+ label: "Documents",
121
+ searchPlaceholder: "Search documents…",
122
+ children: [
123
+ { id: "brief", label: "Project brief", onSelect: select },
124
+ { id: "notes", label: "Notes", onSelect() { } },
125
+ ],
126
+ },
127
+ items[1],
128
+ ], { addAttachment: vi.fn() });
129
+ await open();
130
+ await search("Search…", "brief");
131
+ expect(menus()[0].textContent).not.toContain("Upload File");
132
+ await click("Add context");
133
+ await search("Search context…", "documents");
134
+ expect(menus()[1].textContent).not.toContain("Library");
135
+ await click("Documents");
136
+ await search("Search documents…", "brief");
137
+ expect(menus()[2].textContent).not.toContain("Notes");
138
+ await click("Project brief");
139
+ expect(select).toHaveBeenCalledOnce();
140
+ expect(menus()).toHaveLength(0);
141
+ });
142
+ it("keeps typing out of typeahead and supports native ArrowRight, Left and Escape", async () => {
143
+ await render();
144
+ await open();
145
+ const input = document.querySelector('[role="searchbox"]');
146
+ await key(input, "d");
147
+ expect(document.activeElement).toBe(input);
148
+ await key(input, "ArrowDown");
149
+ expect(document.activeElement).toBe(row("Add context"));
150
+ await key(row("Add context"), "ArrowRight");
151
+ await key(row("Documents"), "ArrowRight");
152
+ expect(menus()).toHaveLength(3);
153
+ await key(row("Project brief"), "ArrowDown");
154
+ expect(document.activeElement).toBe(row("Archive"));
155
+ await key(row("Archive"), "ArrowLeft");
156
+ expect(menus()).toHaveLength(2);
157
+ expect(document.activeElement).toBe(row("Documents"));
158
+ await key(row("Documents"), "Escape");
159
+ expect(menus()).toHaveLength(1);
160
+ expect(document.activeElement).toBe(row("Add context"));
161
+ });
162
+ it("preserves native upload accepts, cancellation, multiple files and errors", async () => {
163
+ const attach = vi
164
+ .fn()
165
+ .mockRejectedValueOnce(new Error("Upload unavailable"))
166
+ .mockResolvedValue(undefined);
167
+ const error = vi.fn();
168
+ await render([], {
169
+ addAttachment: attach,
170
+ attachmentAccept: "text/plain",
171
+ onAttachmentError: error,
172
+ });
173
+ const input = container.querySelector('input[type="file"]');
174
+ const picker = vi.spyOn(input, "click");
175
+ expect(input.multiple).toBe(true);
176
+ expect(input.accept).toBe("text/plain");
177
+ await open();
178
+ await click("Upload File");
179
+ expect(picker).toHaveBeenCalledOnce();
180
+ await act(async () => input.dispatchEvent(new Event("change", { bubbles: true })));
181
+ expect(attach).not.toHaveBeenCalled();
182
+ const files = [new File(["one"], "one.txt"), new File(["two"], "two.txt")];
183
+ Object.defineProperty(input, "files", { value: files, configurable: true });
184
+ await act(async () => input.dispatchEvent(new Event("change", { bubbles: true })));
185
+ expect(attach.mock.calls.map(([file]) => file)).toEqual(files);
186
+ expect(error).toHaveBeenCalledWith("Upload unavailable");
187
+ });
188
+ it("preserves legacy render, latest updates, dismissal and resume without reselecting", async () => {
189
+ let controls;
190
+ const select = vi.fn();
191
+ const dismiss = vi.fn();
192
+ const legacy = (text) => [
193
+ {
194
+ id: "legacy",
195
+ label: "Reference",
196
+ onSelect: select,
197
+ onDismiss: dismiss,
198
+ render(next) {
199
+ controls = next;
200
+ return _jsx("input", { "aria-label": "Reference URL", defaultValue: text });
201
+ },
202
+ },
203
+ ];
204
+ await render(legacy("first"));
205
+ const draft = container.querySelector('[aria-label="Prompt draft"]');
206
+ await open();
207
+ await click("Add context");
208
+ await click("Reference");
209
+ expect(select).toHaveBeenCalledOnce();
210
+ const resume = controls.onResume;
211
+ await act(async () => controls.onClose({ restoreFocus: false }));
212
+ expect(dismiss).toHaveBeenCalledOnce();
213
+ await render(legacy("updated"));
214
+ await act(async () => resume());
215
+ expect(document.querySelector('[aria-label="Reference URL"]')
216
+ ?.value).toBe("updated");
217
+ expect(select).toHaveBeenCalledOnce();
218
+ expect(container.querySelector('[aria-label="Prompt draft"]')).toBe(draft);
219
+ await act(async () => controls.onBack());
220
+ expect(menus()).toHaveLength(2);
221
+ expect(dismiss).toHaveBeenCalledTimes(2);
222
+ });
223
+ it("ignores stale legacy close and reports resume of a removed source", async () => {
224
+ let controls;
225
+ const dismiss = vi.fn();
226
+ await render([
227
+ {
228
+ id: "legacy",
229
+ label: "Reference",
230
+ onSelect() { },
231
+ onDismiss: dismiss,
232
+ render(next) {
233
+ controls = next;
234
+ return _jsx("input", {});
235
+ },
236
+ },
237
+ ]);
238
+ await open();
239
+ await click("Add context");
240
+ await click("Reference");
241
+ const old = controls;
242
+ await act(async () => controls.onBack());
243
+ await act(async () => old.onClose());
244
+ expect(menus()).toHaveLength(2);
245
+ await render([]);
246
+ await act(async () => old.onResume());
247
+ expect(document.querySelector('[role="alert"]')?.textContent).toBe("Could not add context.");
248
+ expect(dismiss).toHaveBeenCalledOnce();
249
+ });
250
+ it.each(["sync", "async"])("reports %s legacy errors without losing the picker", async (kind) => {
251
+ await render([
252
+ {
253
+ id: "error",
254
+ label: "Reference",
255
+ render: () => _jsx("input", {}),
256
+ onSelect() {
257
+ if (kind === "sync")
258
+ throw new Error("Reference unavailable");
259
+ return Promise.reject(new Error("Reference unavailable"));
260
+ },
261
+ },
262
+ ]);
263
+ await open();
264
+ await click("Add context");
265
+ await click("Reference");
266
+ expect(menus()).toHaveLength(3);
267
+ expect(document.querySelector('[role="alert"]')?.textContent).toBe("Reference unavailable");
268
+ });
269
+ });
270
+ //# sourceMappingURL=ComposerContextMenu.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerContextMenu.spec.js","sourceRoot":"","sources":["../../src/composer/ComposerContextMenu.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type ReactNode } from "react";
2
+ /** Integrated search with keyboard navigation owned by its Radix menu. */
3
+ export declare function ComposerContextMenuSearch({ placeholder, value, onValueChange, leading, invalid, onSubmit, }: {
4
+ placeholder: string;
5
+ value: string;
6
+ onValueChange: (value: string) => void;
7
+ leading?: ReactNode;
8
+ invalid?: boolean;
9
+ onSubmit?: () => void;
10
+ }): import("react").JSX.Element;
11
+ //# sourceMappingURL=ComposerContextMenuSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerContextMenuSearch.d.ts","sourceRoot":"","sources":["../../src/composer/ComposerContextMenuSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI1D,0EAA0E;AAC1E,wBAAgB,yBAAyB,CAAC,EACxC,WAAW,EACX,KAAK,EACL,aAAa,EACb,OAAO,EACP,OAAO,EACP,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,+BAiDA"}