@adecore/agents-react 0.37.1 → 0.37.3
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.
- package/dist/chat/chat-client.d.ts +1 -0
- package/dist/chat/chat-client.js +2 -1
- package/dist/chat/chat-references.d.ts +16 -1
- package/dist/chat/chat-references.js +29 -3
- package/dist/chat/drafts.d.ts +2 -0
- package/dist/chat/drafts.js +21 -5
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/logic/picker-entries.d.ts +6 -1
- package/dist/chat/logic/picker-entries.js +10 -0
- package/dist/chat/mentions.d.ts +31 -14
- package/dist/chat/mentions.js +186 -41
- package/dist/chat/stash.d.ts +1 -0
- package/dist/chat/stash.js +4 -2
- package/dist/chat/ui/Composer.js +438 -429
- package/dist/chat/ui/ComposerInput.d.ts +1 -0
- package/dist/chat/ui/ComposerInput.js +2 -0
- package/dist/chat/ui/Markdown.d.ts +3 -1
- package/dist/chat/ui/Markdown.js +194 -120
- package/dist/chat/ui/MessageActions.js +70 -66
- package/dist/chat/ui/Pickers.js +151 -207
- package/dist/chat/ui/ReferenceChip.d.ts +15 -0
- package/dist/chat/ui/ReferenceChip.js +255 -0
- package/dist/chat/ui/RunSettings.js +25 -21
- package/dist/chat/ui/Timeline.js +52 -29
- package/dist/chat/ui/TimelineMenu.js +84 -78
- package/dist/chat/ui/chip-clipboard.d.ts +9 -0
- package/dist/chat/ui/chip-clipboard.js +105 -0
- package/dist/chat/ui/chips.d.ts +5 -0
- package/dist/chat/ui/chips.js +15 -1
- package/dist/chat/ui/composer/ComposerMenu.js +140 -79
- package/dist/chat/ui/composer/DraftParts.d.ts +0 -4
- package/dist/chat/ui/composer/DraftParts.js +0 -41
- package/dist/chat/ui/composer/chip-paste.d.ts +15 -0
- package/dist/chat/ui/composer/chip-paste.js +104 -0
- package/dist/chat/ui/composer/chips.d.ts +5 -0
- package/dist/chat/ui/composer/chips.js +59 -9
- package/dist/chat/ui/composer/key-handler.js +9 -0
- package/dist/chat/ui/composer/use-composer-draft.d.ts +0 -1
- package/dist/chat/ui/composer/use-composer-draft.js +2 -10
- package/dist/chat/ui/composer/use-composer-menus.d.ts +12 -2
- package/dist/chat/ui/composer/use-composer-menus.js +192 -149
- package/dist/chat/ui/composer/use-composer-submit.js +17 -12
- package/dist/chat/ui/composer/use-draft-files.d.ts +7 -1
- package/dist/chat/ui/composer/use-draft-files.js +90 -58
- package/dist/chat/ui/composer/use-take-back.js +2 -1
- package/dist/chat/ui/index.d.ts +0 -1
- package/dist/chat/ui/index.js +0 -1
- package/dist/chat/ui/reference-icons.d.ts +3 -0
- package/dist/chat/ui/reference-icons.js +15 -0
- package/dist/chat/ui/reference-lookup.d.ts +7 -0
- package/dist/chat/ui/reference-lookup.js +6 -0
- package/dist/chat/ui/rehype-chips.d.ts +8 -1
- package/dist/chat/ui/rehype-chips.js +35 -11
- package/dist/chat/ui/rows/MessageRows.js +218 -158
- package/dist/chat/ui/thread-references.d.ts +4 -0
- package/dist/chat/ui/thread-references.js +78 -0
- package/dist/host-hooks.d.ts +2 -0
- package/dist/host-hooks.js +7 -0
- package/dist/host.d.ts +3 -0
- package/dist/locales/en/agent-chat.d.ts +20 -3
- package/dist/locales/en/agent-chat.js +24 -7
- package/dist/locales/nl/agent-chat.d.ts +20 -3
- package/dist/locales/nl/agent-chat.js +24 -7
- package/package.json +8 -8
- package/src/chat/chat-client.ts +4 -1
- package/src/chat/chat-references.ts +44 -3
- package/src/chat/drafts.ts +24 -6
- package/src/chat/index.ts +1 -1
- package/src/chat/logic/picker-entries.ts +12 -1
- package/src/chat/mentions.ts +202 -36
- package/src/chat/stash.ts +6 -2
- package/src/chat/ui/Composer.tsx +14 -4
- package/src/chat/ui/ComposerInput.tsx +4 -0
- package/src/chat/ui/Markdown.tsx +57 -25
- package/src/chat/ui/MessageActions.tsx +5 -2
- package/src/chat/ui/Pickers.tsx +8 -2
- package/src/chat/ui/ReferenceChip.tsx +74 -0
- package/src/chat/ui/RunSettings.tsx +29 -23
- package/src/chat/ui/Timeline.tsx +24 -2
- package/src/chat/ui/TimelineMenu.tsx +7 -3
- package/src/chat/ui/chip-clipboard.ts +115 -0
- package/src/chat/ui/chips.ts +20 -1
- package/src/chat/ui/composer/ComposerMenu.tsx +53 -37
- package/src/chat/ui/composer/DraftParts.tsx +0 -12
- package/src/chat/ui/composer/chip-paste.ts +122 -0
- package/src/chat/ui/composer/chips.ts +60 -10
- package/src/chat/ui/composer/key-handler.ts +9 -0
- package/src/chat/ui/composer/use-composer-draft.ts +1 -7
- package/src/chat/ui/composer/use-composer-menus.ts +68 -29
- package/src/chat/ui/composer/use-composer-submit.ts +13 -6
- package/src/chat/ui/composer/use-draft-files.ts +39 -5
- package/src/chat/ui/composer/use-take-back.ts +2 -1
- package/src/chat/ui/index.ts +0 -1
- package/src/chat/ui/reference-icons.ts +17 -0
- package/src/chat/ui/reference-lookup.ts +13 -0
- package/src/chat/ui/rehype-chips.ts +38 -13
- package/src/chat/ui/rows/MessageRows.tsx +88 -64
- package/src/chat/ui/thread-references.ts +47 -0
- package/src/host-hooks.ts +9 -0
- package/src/host.ts +6 -1
- package/src/locales/en/agent-chat.ts +24 -7
- package/src/locales/nl/agent-chat.ts +24 -7
- package/dist/chat/ui/ChatReferenceChip.d.ts +0 -4
- package/dist/chat/ui/ChatReferenceChip.js +0 -110
- package/src/chat/ui/ChatReferenceChip.tsx +0 -26
package/dist/chat/ui/Pickers.js
CHANGED
|
@@ -10,7 +10,7 @@ import { useChatHost } from '../../host.js';
|
|
|
10
10
|
import { ChatScopeContext } from '../../scope.js';
|
|
11
11
|
import { useReportedModels } from '../../state/chats.js';
|
|
12
12
|
import { ModelMarks } from './ModelMarks.js';
|
|
13
|
-
import { pickerEntriesOf } from '../logic/picker-entries.js';
|
|
13
|
+
import { inPickerOrder, pickerEntriesOf, separatesGroups } from '../logic/picker-entries.js';
|
|
14
14
|
import { favoriteModelsOf, toggleFavoriteModel, useChatPreferences } from '../preferences.js';
|
|
15
15
|
import { forgetStashed, STASH_SHORTCUT, useStash } from '../stash.js';
|
|
16
16
|
import { Button, Icon, IconButton, Menu, Popover, Tooltip } from '@adecore/ui';
|
|
@@ -23,7 +23,7 @@ const triggerClass = 'flex h-7 shrink-0 items-center gap-1 whitespace-nowrap rou
|
|
|
23
23
|
* provider's model is also how a chat picks its provider; with one CLI the group headers drop.
|
|
24
24
|
*/
|
|
25
25
|
export function ModelPicker(t0) {
|
|
26
|
-
const $ = _c(
|
|
26
|
+
const $ = _c(49);
|
|
27
27
|
const {
|
|
28
28
|
providers,
|
|
29
29
|
provider,
|
|
@@ -111,7 +111,7 @@ export function ModelPicker(t0) {
|
|
|
111
111
|
} else {
|
|
112
112
|
t8 = $[15];
|
|
113
113
|
}
|
|
114
|
-
const entries = pickerEntriesOf(providers, trimmed, legacyOpen, expanded, {
|
|
114
|
+
const entries = pickerEntriesOf(inPickerOrder(providers), trimmed, legacyOpen, expanded, {
|
|
115
115
|
provider,
|
|
116
116
|
model: selection.model
|
|
117
117
|
}, t8);
|
|
@@ -127,6 +127,10 @@ export function ModelPicker(t0) {
|
|
|
127
127
|
t9 = $[17];
|
|
128
128
|
}
|
|
129
129
|
const requirementOf = t9;
|
|
130
|
+
const kindBefore = i => {
|
|
131
|
+
const before = entries[i - 1];
|
|
132
|
+
return before === undefined || before.kind === "legacy" ? undefined : before.provider.kind;
|
|
133
|
+
};
|
|
130
134
|
let t10;
|
|
131
135
|
if ($[18] !== requirementOf) {
|
|
132
136
|
t10 = entry_1 => entry_1.kind === "model" && requirementOf(entry_1) !== null ? [entry_1.provider.kind] : [];
|
|
@@ -173,83 +177,63 @@ export function ModelPicker(t0) {
|
|
|
173
177
|
t13 = $[24];
|
|
174
178
|
}
|
|
175
179
|
useEffect(t12, t13);
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
} else {
|
|
210
|
-
t14 = $[28];
|
|
211
|
-
}
|
|
212
|
-
const choose = t14;
|
|
213
|
-
let t15;
|
|
214
|
-
if ($[29] !== choose || $[30] !== entries || $[31] !== index) {
|
|
215
|
-
t15 = e => {
|
|
216
|
-
if (e.key === "ArrowDown") {
|
|
180
|
+
const choose = entry_2 => {
|
|
181
|
+
if (!entry_2) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (entry_2.kind === "legacy") {
|
|
185
|
+
setLegacyOpen(true);
|
|
186
|
+
inputRef.current?.focus();
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
if (entry_2.kind === "all") {
|
|
190
|
+
const kind_0 = entry_2.provider.kind;
|
|
191
|
+
setExpanded(now => {
|
|
192
|
+
const next_0 = new Set(now);
|
|
193
|
+
if (!next_0.delete(kind_0)) {
|
|
194
|
+
next_0.add(kind_0);
|
|
195
|
+
}
|
|
196
|
+
return next_0;
|
|
197
|
+
});
|
|
198
|
+
inputRef.current?.focus();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (requirementOf(entry_2) !== null) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
onChange(entry_2.provider.kind, entry_2.model.slug);
|
|
205
|
+
setOpen(false);
|
|
206
|
+
};
|
|
207
|
+
const onKeyDown = e => {
|
|
208
|
+
if (e.key === "ArrowDown") {
|
|
209
|
+
e.preventDefault();
|
|
210
|
+
setIndex(i_0 => entries.length === 0 ? 0 : (i_0 + 1) % entries.length);
|
|
211
|
+
} else {
|
|
212
|
+
if (e.key === "ArrowUp") {
|
|
217
213
|
e.preventDefault();
|
|
218
|
-
setIndex(
|
|
214
|
+
setIndex(i_1 => entries.length === 0 ? 0 : (i_1 - 1 + entries.length) % entries.length);
|
|
219
215
|
} else {
|
|
220
|
-
if (e.key === "
|
|
216
|
+
if (e.key === "Enter") {
|
|
221
217
|
e.preventDefault();
|
|
222
|
-
|
|
223
|
-
} else {
|
|
224
|
-
if (e.key === "Enter") {
|
|
225
|
-
e.preventDefault();
|
|
226
|
-
choose(entries[index]);
|
|
227
|
-
}
|
|
218
|
+
choose(entries[index]);
|
|
228
219
|
}
|
|
229
220
|
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
let t14;
|
|
224
|
+
if ($[25] !== current || $[26] !== owner || $[27] !== t) {
|
|
225
|
+
t14 = owner ? `${owner.name} · ${current}` : t("pickers.model.choose");
|
|
226
|
+
$[25] = current;
|
|
227
|
+
$[26] = owner;
|
|
228
|
+
$[27] = t;
|
|
229
|
+
$[28] = t14;
|
|
235
230
|
} else {
|
|
236
|
-
|
|
231
|
+
t14 = $[28];
|
|
237
232
|
}
|
|
238
|
-
const
|
|
233
|
+
const t15 = kbd ?? undefined;
|
|
239
234
|
let t16;
|
|
240
|
-
if ($[
|
|
241
|
-
t16 =
|
|
242
|
-
$[33] = current;
|
|
243
|
-
$[34] = owner;
|
|
244
|
-
$[35] = t;
|
|
245
|
-
$[36] = t16;
|
|
246
|
-
} else {
|
|
247
|
-
t16 = $[36];
|
|
248
|
-
}
|
|
249
|
-
const t17 = kbd ?? undefined;
|
|
250
|
-
let t18;
|
|
251
|
-
if ($[37] !== chip || $[38] !== current || $[39] !== provider || $[40] !== trigger) {
|
|
252
|
-
t18 = trigger === "chip" ? /*#__PURE__*/_jsxs(Popover.Trigger, {
|
|
235
|
+
if ($[29] !== chip || $[30] !== current || $[31] !== provider || $[32] !== trigger) {
|
|
236
|
+
t16 = trigger === "chip" ? /*#__PURE__*/_jsxs(Popover.Trigger, {
|
|
253
237
|
render: /*#__PURE__*/_jsx(Button, {
|
|
254
238
|
variant: "secondary",
|
|
255
239
|
size: "sm",
|
|
@@ -286,117 +270,89 @@ export function ModelPicker(t0) {
|
|
|
286
270
|
className: "text-text-faint"
|
|
287
271
|
})]
|
|
288
272
|
});
|
|
289
|
-
$[
|
|
290
|
-
$[
|
|
291
|
-
$[
|
|
292
|
-
$[
|
|
293
|
-
$[
|
|
294
|
-
} else {
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
let
|
|
298
|
-
if ($[
|
|
299
|
-
|
|
300
|
-
label:
|
|
301
|
-
kbd:
|
|
302
|
-
children:
|
|
273
|
+
$[29] = chip;
|
|
274
|
+
$[30] = current;
|
|
275
|
+
$[31] = provider;
|
|
276
|
+
$[32] = trigger;
|
|
277
|
+
$[33] = t16;
|
|
278
|
+
} else {
|
|
279
|
+
t16 = $[33];
|
|
280
|
+
}
|
|
281
|
+
let t17;
|
|
282
|
+
if ($[34] !== t14 || $[35] !== t15 || $[36] !== t16) {
|
|
283
|
+
t17 = /*#__PURE__*/_jsx(Tooltip, {
|
|
284
|
+
label: t14,
|
|
285
|
+
kbd: t15,
|
|
286
|
+
children: t16
|
|
303
287
|
});
|
|
304
|
-
$[
|
|
305
|
-
$[
|
|
306
|
-
$[
|
|
307
|
-
$[
|
|
288
|
+
$[34] = t14;
|
|
289
|
+
$[35] = t15;
|
|
290
|
+
$[36] = t16;
|
|
291
|
+
$[37] = t17;
|
|
308
292
|
} else {
|
|
309
|
-
|
|
293
|
+
t17 = $[37];
|
|
310
294
|
}
|
|
311
|
-
let
|
|
312
|
-
if ($[
|
|
313
|
-
|
|
295
|
+
let t18;
|
|
296
|
+
if ($[38] !== finalFocus) {
|
|
297
|
+
t18 = finalFocus === undefined ? {} : {
|
|
314
298
|
finalFocus
|
|
315
299
|
};
|
|
316
|
-
$[
|
|
317
|
-
$[
|
|
300
|
+
$[38] = finalFocus;
|
|
301
|
+
$[39] = t18;
|
|
318
302
|
} else {
|
|
319
|
-
|
|
303
|
+
t18 = $[39];
|
|
320
304
|
}
|
|
321
|
-
let
|
|
322
|
-
if ($[
|
|
323
|
-
|
|
305
|
+
let t19;
|
|
306
|
+
if ($[40] === Symbol.for("react.memo_cache_sentinel")) {
|
|
307
|
+
t19 = /*#__PURE__*/_jsx(Icon, {
|
|
324
308
|
icon: Search,
|
|
325
309
|
size: 14,
|
|
326
310
|
className: "shrink-0 text-text-faint"
|
|
327
311
|
});
|
|
328
|
-
$[
|
|
312
|
+
$[40] = t19;
|
|
329
313
|
} else {
|
|
330
|
-
|
|
314
|
+
t19 = $[40];
|
|
331
315
|
}
|
|
332
|
-
let
|
|
333
|
-
if ($[
|
|
334
|
-
|
|
335
|
-
$[
|
|
336
|
-
$[
|
|
316
|
+
let t20;
|
|
317
|
+
if ($[41] !== t) {
|
|
318
|
+
t20 = t("pickers.model.search");
|
|
319
|
+
$[41] = t;
|
|
320
|
+
$[42] = t20;
|
|
337
321
|
} else {
|
|
338
|
-
|
|
322
|
+
t20 = $[42];
|
|
339
323
|
}
|
|
340
|
-
let
|
|
341
|
-
if ($[
|
|
342
|
-
|
|
324
|
+
let t21;
|
|
325
|
+
if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
|
|
326
|
+
t21 = e_0 => {
|
|
343
327
|
setQuery(e_0.target.value);
|
|
344
328
|
setIndex(0);
|
|
345
329
|
};
|
|
346
|
-
$[
|
|
330
|
+
$[43] = t21;
|
|
347
331
|
} else {
|
|
348
|
-
|
|
332
|
+
t21 = $[43];
|
|
349
333
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
placeholder: t22,
|
|
358
|
-
spellCheck: false,
|
|
359
|
-
value: query,
|
|
360
|
-
onChange: t23,
|
|
361
|
-
onKeyDown: onKeyDown
|
|
362
|
-
})]
|
|
363
|
-
});
|
|
364
|
-
$[52] = onKeyDown;
|
|
365
|
-
$[53] = query;
|
|
366
|
-
$[54] = t22;
|
|
367
|
-
$[55] = t24;
|
|
368
|
-
} else {
|
|
369
|
-
t24 = $[55];
|
|
370
|
-
}
|
|
371
|
-
let t25;
|
|
372
|
-
if ($[56] !== entries.length || $[57] !== providers.length || $[58] !== t) {
|
|
373
|
-
t25 = entries.length === 0 && /*#__PURE__*/_jsx("div", {
|
|
374
|
-
className: "px-3 py-6 text-center text-xs text-text-faint",
|
|
375
|
-
children: providers.length === 0 ? t("pickers.model.noProvider") : t("pickers.model.noMatch")
|
|
376
|
-
});
|
|
377
|
-
$[56] = entries.length;
|
|
378
|
-
$[57] = providers.length;
|
|
379
|
-
$[58] = t;
|
|
380
|
-
$[59] = t25;
|
|
381
|
-
} else {
|
|
382
|
-
t25 = $[59];
|
|
383
|
-
}
|
|
384
|
-
const t26 = entries.map((entry_3, i_1) => {
|
|
334
|
+
const t22 = "max-h-72 overflow-auto p-1";
|
|
335
|
+
const t23 = "listbox";
|
|
336
|
+
const t24 = entries.length === 0 && /*#__PURE__*/_jsx("div", {
|
|
337
|
+
className: "px-3 py-6 text-center text-xs text-text-faint",
|
|
338
|
+
children: providers.length === 0 ? t("pickers.model.noProvider") : t("pickers.model.noMatch")
|
|
339
|
+
});
|
|
340
|
+
const t25 = entries.map((entry_3, i_2) => {
|
|
385
341
|
if (entry_3.kind === "all") {
|
|
386
|
-
const
|
|
387
|
-
const header = grouped && (
|
|
342
|
+
const before_0 = entries[i_2 - 1];
|
|
343
|
+
const header = grouped && (before_0 === undefined || before_0.kind === "legacy" || before_0.provider.kind !== entry_3.provider.kind);
|
|
388
344
|
return /*#__PURE__*/_jsxs("div", {
|
|
389
|
-
children: [header && /*#__PURE__*/_jsxs(Menu.Label, {
|
|
345
|
+
children: [separatesGroups(kindBefore(i_2), entry_3.provider.kind) && /*#__PURE__*/_jsx(Menu.Separator, {}), header && /*#__PURE__*/_jsxs(Menu.Label, {
|
|
390
346
|
className: "flex items-center gap-1.5",
|
|
391
347
|
children: [/*#__PURE__*/_jsx(AgentIcon, {
|
|
392
348
|
kind: entry_3.provider.kind,
|
|
393
349
|
size: 12
|
|
394
350
|
}), entry_3.provider.name]
|
|
395
351
|
}), /*#__PURE__*/_jsxs("button", {
|
|
396
|
-
"data-active":
|
|
352
|
+
"data-active": i_2 === index,
|
|
397
353
|
"aria-expanded": entry_3.open,
|
|
398
354
|
className: "cursor-row flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-left text-xs text-text-muted",
|
|
399
|
-
onMouseEnter: () => setIndex(
|
|
355
|
+
onMouseEnter: () => setIndex(i_2),
|
|
400
356
|
onClick: () => choose(entry_3),
|
|
401
357
|
children: [/*#__PURE__*/_jsx(Icon, {
|
|
402
358
|
icon: entry_3.open ? ChevronDown : ChevronRight,
|
|
@@ -409,9 +365,9 @@ export function ModelPicker(t0) {
|
|
|
409
365
|
}
|
|
410
366
|
if (entry_3.kind === "legacy") {
|
|
411
367
|
return /*#__PURE__*/_jsxs("button", {
|
|
412
|
-
"data-active":
|
|
368
|
+
"data-active": i_2 === index,
|
|
413
369
|
className: "cursor-row flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-left text-xs text-text-faint",
|
|
414
|
-
onMouseEnter: () => setIndex(
|
|
370
|
+
onMouseEnter: () => setIndex(i_2),
|
|
415
371
|
onClick: () => choose(entry_3),
|
|
416
372
|
children: [/*#__PURE__*/_jsx(Icon, {
|
|
417
373
|
icon: legacyOpen ? ChevronDown : ChevronRight,
|
|
@@ -421,17 +377,17 @@ export function ModelPicker(t0) {
|
|
|
421
377
|
})]
|
|
422
378
|
}, "legacy");
|
|
423
379
|
}
|
|
424
|
-
const previous = entries[
|
|
380
|
+
const previous = entries[i_2 - 1];
|
|
425
381
|
const first = grouped && (previous === undefined || previous.kind === "legacy" || previous.provider.kind !== entry_3.provider.kind);
|
|
426
382
|
const vendorOpen = trimmed !== "" || expanded.has(entry_3.provider.kind);
|
|
427
383
|
const vendorFirst = vendorOpen && entry_3.model.vendor !== undefined && !starredHere(entry_3) && (previous === undefined || previous.kind !== "model" || previous.provider.kind !== entry_3.provider.kind || starredHere(previous) || previous.model.vendor !== entry_3.model.vendor);
|
|
428
384
|
const requirement = requirementOf(entry_3);
|
|
429
|
-
const next_1 = entries[
|
|
385
|
+
const next_1 = entries[i_2 + 1];
|
|
430
386
|
const lastOfGroup = next_1 === undefined || next_1.kind !== "model" || next_1.provider.kind !== entry_3.provider.kind;
|
|
431
387
|
const chosen = entry_3.provider.kind === provider && entry_3.model.slug === selection.model;
|
|
432
388
|
const starred = starredHere(entry_3);
|
|
433
389
|
return /*#__PURE__*/_jsxs("div", {
|
|
434
|
-
children: [first && /*#__PURE__*/_jsxs(Menu.Label, {
|
|
390
|
+
children: [separatesGroups(kindBefore(i_2), entry_3.provider.kind) && /*#__PURE__*/_jsx(Menu.Separator, {}), first && /*#__PURE__*/_jsxs(Menu.Label, {
|
|
435
391
|
className: "flex items-center gap-1.5",
|
|
436
392
|
children: [/*#__PURE__*/_jsx(AgentIcon, {
|
|
437
393
|
kind: entry_3.provider.kind,
|
|
@@ -445,9 +401,9 @@ export function ModelPicker(t0) {
|
|
|
445
401
|
role: "option",
|
|
446
402
|
"aria-selected": chosen,
|
|
447
403
|
"aria-disabled": requirement !== null || undefined,
|
|
448
|
-
"data-active":
|
|
404
|
+
"data-active": i_2 === index,
|
|
449
405
|
className: `cursor-row flex min-w-0 grow flex-col items-stretch gap-0.5 rounded-md px-2.5 py-1.5 text-left text-sm ${requirement === null ? "text-text-muted" : "text-text-faint"}`,
|
|
450
|
-
onMouseEnter: () => setIndex(
|
|
406
|
+
onMouseEnter: () => setIndex(i_2),
|
|
451
407
|
onClick: () => choose(entry_3),
|
|
452
408
|
children: [/*#__PURE__*/_jsxs("span", {
|
|
453
409
|
className: "flex w-full items-center gap-2",
|
|
@@ -496,65 +452,53 @@ export function ModelPicker(t0) {
|
|
|
496
452
|
})]
|
|
497
453
|
}, `${entry_3.provider.kind}/${entry_3.model.slug}`);
|
|
498
454
|
});
|
|
499
|
-
let
|
|
500
|
-
if ($[
|
|
501
|
-
|
|
455
|
+
let t26;
|
|
456
|
+
if ($[44] !== t24 || $[45] !== t25) {
|
|
457
|
+
t26 = /*#__PURE__*/_jsxs("div", {
|
|
502
458
|
ref: listRef,
|
|
503
|
-
className:
|
|
504
|
-
role:
|
|
505
|
-
children: [
|
|
459
|
+
className: t22,
|
|
460
|
+
role: t23,
|
|
461
|
+
children: [t24, t25]
|
|
506
462
|
});
|
|
507
|
-
$[
|
|
508
|
-
$[
|
|
509
|
-
$[
|
|
463
|
+
$[44] = t24;
|
|
464
|
+
$[45] = t25;
|
|
465
|
+
$[46] = t26;
|
|
510
466
|
} else {
|
|
511
|
-
|
|
467
|
+
t26 = $[46];
|
|
512
468
|
}
|
|
513
|
-
let
|
|
514
|
-
if ($[
|
|
515
|
-
|
|
469
|
+
let t27;
|
|
470
|
+
if ($[47] !== footer) {
|
|
471
|
+
t27 = footer !== undefined && /*#__PURE__*/_jsx("div", {
|
|
516
472
|
className: "border-t border-border-soft px-3 py-2 text-xs text-text-faint",
|
|
517
473
|
children: footer
|
|
518
474
|
});
|
|
519
|
-
$[
|
|
520
|
-
$[
|
|
475
|
+
$[47] = footer;
|
|
476
|
+
$[48] = t27;
|
|
521
477
|
} else {
|
|
522
|
-
|
|
478
|
+
t27 = $[48];
|
|
523
479
|
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
480
|
+
return /*#__PURE__*/_jsxs(Popover.Root, {
|
|
481
|
+
open: open,
|
|
482
|
+
onOpenChange: setOpen,
|
|
483
|
+
children: [t17, /*#__PURE__*/_jsxs(Popover.Popup, {
|
|
527
484
|
variant: "picker",
|
|
528
485
|
side: side,
|
|
529
486
|
initialFocus: inputRef,
|
|
530
|
-
...
|
|
531
|
-
children: [
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
open: open,
|
|
546
|
-
onOpenChange: setOpen,
|
|
547
|
-
children: [t19, t29]
|
|
548
|
-
});
|
|
549
|
-
$[71] = open;
|
|
550
|
-
$[72] = setOpen;
|
|
551
|
-
$[73] = t19;
|
|
552
|
-
$[74] = t29;
|
|
553
|
-
$[75] = t30;
|
|
554
|
-
} else {
|
|
555
|
-
t30 = $[75];
|
|
556
|
-
}
|
|
557
|
-
return t30;
|
|
487
|
+
...t18,
|
|
488
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
489
|
+
className: "flex items-center gap-2 border-b border-border px-2.5",
|
|
490
|
+
children: [t19, /*#__PURE__*/_jsx("input", {
|
|
491
|
+
ref: inputRef,
|
|
492
|
+
className: "h-8 w-full bg-transparent text-sm text-text outline-none placeholder:text-text-faint",
|
|
493
|
+
placeholder: t20,
|
|
494
|
+
spellCheck: false,
|
|
495
|
+
value: query,
|
|
496
|
+
onChange: t21,
|
|
497
|
+
onKeyDown: onKeyDown
|
|
498
|
+
})]
|
|
499
|
+
}), t26, t27]
|
|
500
|
+
})]
|
|
501
|
+
});
|
|
558
502
|
}
|
|
559
503
|
/*
|
|
560
504
|
* Prompts put aside with Cmd+S, on a shelf the whole app shares, since a stashed prompt usually moves
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
interface TokenChipProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
3
|
+
kind: 'mention' | 'skill' | 'reference' | 'gone';
|
|
4
|
+
value?: string;
|
|
5
|
+
sigil?: string;
|
|
6
|
+
icon: ReactNode;
|
|
7
|
+
label: string;
|
|
8
|
+
tone: string;
|
|
9
|
+
onOpen?: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function TokenChip({ kind, value, sigil, icon, label, tone, onOpen, className, ...rest }: TokenChipProps): import("react").JSX.Element;
|
|
12
|
+
export declare function ReferenceChip({ id }: {
|
|
13
|
+
id: string;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
15
|
+
export {};
|