@arbidocs/blocks 0.4.16 → 0.4.18
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/agents/index.cjs +369 -171
- package/dist/agents/index.js +4 -2
- package/dist/agents/tasks/DueDateMenu.d.ts +32 -0
- package/dist/agents/tasks/NewThreadDialog.d.ts +53 -0
- package/dist/agents/tasks/PersonPill.d.ts +22 -0
- package/dist/agents/tasks/PillSelect.d.ts +39 -0
- package/dist/agents/tasks/TaskActivityDialog.d.ts +14 -0
- package/dist/agents/tasks/TaskActivityTimeline.d.ts +54 -0
- package/dist/agents/tasks/TaskComposer.d.ts +6 -106
- package/dist/agents/tasks/TaskMoveDialog.d.ts +25 -0
- package/dist/agents/tasks/TaskOutputsCell.d.ts +23 -0
- package/dist/agents/tasks/TaskPlan.d.ts +4 -2
- package/dist/agents/tasks/TaskReviewActions.d.ts +44 -0
- package/dist/agents/tasks/TaskRowMenu.d.ts +28 -0
- package/dist/agents/tasks/TaskStatusPill.d.ts +24 -0
- package/dist/agents/tasks/TaskTable.d.ts +99 -0
- package/dist/agents/tasks/TaskThreadChip.d.ts +19 -0
- package/dist/agents/tasks/TaskTriggerChip.d.ts +24 -0
- package/dist/agents/tasks/TasksChrome.d.ts +17 -17
- package/dist/agents/tasks/WorkflowComposer.d.ts +10 -0
- package/dist/agents/tasks/WorkflowsTable.d.ts +72 -0
- package/dist/agents/tasks/gridWidth.d.ts +11 -0
- package/dist/agents/tasks/index.d.ts +23 -7
- package/dist/agents/tasks/taskColumns.d.ts +39 -63
- package/dist/agents/tasks/taskComposerTypes.d.ts +217 -0
- package/dist/agents/tasks/taskLabels.d.ts +27 -10
- package/dist/agents/tasks/taskRequest.d.ts +151 -25
- package/dist/agents/tasks/taskRows.d.ts +111 -0
- package/dist/agents/tasks/taskTableLabels.d.ts +64 -0
- package/dist/agents/tasks/workflowColumns.d.ts +23 -0
- package/dist/agents/tasks/workflowRows.d.ts +44 -0
- package/dist/agents/tasks/workflowTableLabels.d.ts +53 -0
- package/dist/agents/workflows/WorkflowConfigDialog.d.ts +5 -0
- package/dist/agents/workflows/index.d.ts +1 -0
- package/dist/agents/workflows/scopeRender.d.ts +10 -0
- package/dist/agents/workflows/types.d.ts +2 -0
- package/dist/chat/AssistantModeToggle.d.ts +25 -0
- package/dist/chat/MentionMenu.d.ts +52 -0
- package/dist/chat/index.cjs +119 -63
- package/dist/chat/index.d.ts +4 -0
- package/dist/chat/index.js +1 -1
- package/dist/chat/mentions.d.ts +64 -0
- package/dist/chat/useMentionAutocomplete.d.ts +33 -0
- package/dist/{chunk-IMA6I73C.js → chunk-ABSII3ND.js} +336 -4
- package/dist/chunk-ABSII3ND.js.map +1 -0
- package/dist/{chunk-22T6KHGB.cjs → chunk-C2V6HQKG.cjs} +348 -2
- package/dist/chunk-C2V6HQKG.cjs.map +1 -0
- package/dist/{chunk-CVFBSUXL.js → chunk-F3F56LOR.js} +4227 -851
- package/dist/chunk-F3F56LOR.js.map +1 -0
- package/dist/chunk-IC2VHFWR.js +158 -0
- package/dist/chunk-IC2VHFWR.js.map +1 -0
- package/dist/{chunk-D6XY3C4O.cjs → chunk-JGZTRLKL.cjs} +207 -139
- package/dist/chunk-JGZTRLKL.cjs.map +1 -0
- package/dist/{chunk-H7OD4CHN.js → chunk-NUPVHEJW.js} +208 -140
- package/dist/chunk-NUPVHEJW.js.map +1 -0
- package/dist/{chunk-67HGXV4I.cjs → chunk-TP7JJAXZ.cjs} +4280 -855
- package/dist/chunk-TP7JJAXZ.cjs.map +1 -0
- package/dist/chunk-ZPERNIMP.cjs +162 -0
- package/dist/chunk-ZPERNIMP.cjs.map +1 -0
- package/dist/connection/ai.d.ts +4 -1
- package/dist/facts/FactRowActions.d.ts +5 -1
- package/dist/facts/factColumns.d.ts +1 -1
- package/dist/facts/index.cjs +19 -10
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +14 -5
- package/dist/facts/index.js.map +1 -1
- package/dist/files/GridView.d.ts +5 -0
- package/dist/files/index.cjs +18 -18
- package/dist/files/index.js +4 -5
- package/dist/files/index.js.map +1 -1
- package/dist/index.cjs +549 -297
- package/dist/index.js +8 -8
- package/dist/settings/ConversationSettingsParts.d.ts +5 -1
- package/dist/settings/index.cjs +8 -3
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.js +8 -3
- package/dist/settings/index.js.map +1 -1
- package/dist/shell/index.cjs +1 -1
- package/dist/shell/index.js +1 -1
- package/dist/site/index.cjs +12 -12
- package/dist/site/index.js +2 -2
- package/dist/studio/index.cjs +1 -1
- package/dist/studio/index.js +1 -1
- package/dist/workspaces/index.cjs +1 -1
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.js +1 -1
- package/dist/workspaces/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/agents/tasks/LiveRunsBanner.d.ts +0 -26
- package/dist/agents/tasks/TaskRowActions.d.ts +0 -43
- package/dist/chunk-22T6KHGB.cjs.map +0 -1
- package/dist/chunk-67HGXV4I.cjs.map +0 -1
- package/dist/chunk-CVFBSUXL.js.map +0 -1
- package/dist/chunk-D6XY3C4O.cjs.map +0 -1
- package/dist/chunk-H7OD4CHN.js.map +0 -1
- package/dist/chunk-IMA6I73C.js.map +0 -1
- package/dist/chunk-NUNKSZKU.js +0 -203
- package/dist/chunk-NUNKSZKU.js.map +0 -1
- package/dist/chunk-V4ISCZJ7.cjs +0 -207
- package/dist/chunk-V4ISCZJ7.cjs.map +0 -1
|
@@ -227,6 +227,338 @@ var SlashMenu = react.memo(function SlashMenu2({
|
|
|
227
227
|
}
|
|
228
228
|
);
|
|
229
229
|
});
|
|
230
|
+
var DEFAULT_MENTION_LABELS = {
|
|
231
|
+
hint: "Enter or Tab to mention, Esc to dismiss",
|
|
232
|
+
list: "People and assistant to mention",
|
|
233
|
+
resultCount: (count) => `${count} ${count === 1 ? "match" : "matches"}`,
|
|
234
|
+
assistantBadge: "AI",
|
|
235
|
+
chipTitle: (label, kind) => kind === "assistant" ? `${label} (AI assistant)` : label
|
|
236
|
+
};
|
|
237
|
+
var MentionMenu = react.memo(function MentionMenu2({
|
|
238
|
+
open,
|
|
239
|
+
placement = "above",
|
|
240
|
+
items,
|
|
241
|
+
selectedIndex,
|
|
242
|
+
setSelectedIndex,
|
|
243
|
+
listboxId: listboxIdProp,
|
|
244
|
+
onSelect,
|
|
245
|
+
className,
|
|
246
|
+
labels,
|
|
247
|
+
testId,
|
|
248
|
+
itemTestIdPrefix
|
|
249
|
+
}) {
|
|
250
|
+
const l = { ...DEFAULT_MENTION_LABELS, ...labels };
|
|
251
|
+
const ownId = react.useId();
|
|
252
|
+
const listboxId = listboxIdProp ?? ownId;
|
|
253
|
+
const scrollRef = react.useRef(null);
|
|
254
|
+
react.useEffect(() => {
|
|
255
|
+
if (!open) return;
|
|
256
|
+
const el = scrollRef.current?.querySelector(
|
|
257
|
+
`[data-mention-index="${selectedIndex}"]`
|
|
258
|
+
);
|
|
259
|
+
el?.scrollIntoView?.({ block: "nearest" });
|
|
260
|
+
}, [open, selectedIndex]);
|
|
261
|
+
if (!open || items.length === 0) return null;
|
|
262
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
263
|
+
"div",
|
|
264
|
+
{
|
|
265
|
+
"data-slot": "mention-menu",
|
|
266
|
+
className: ui.cn(
|
|
267
|
+
"absolute left-0 right-0 z-30 max-h-64 overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-lg",
|
|
268
|
+
placement === "above" ? "bottom-full mb-2" : "top-full mt-2",
|
|
269
|
+
className
|
|
270
|
+
),
|
|
271
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
272
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "mention-menu" }),
|
|
273
|
+
children: [
|
|
274
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border/50 px-3 py-1.5 text-xs text-muted-foreground", children: l.hint }),
|
|
275
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true", children: l.resultCount(items.length) }),
|
|
276
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
277
|
+
"div",
|
|
278
|
+
{
|
|
279
|
+
ref: scrollRef,
|
|
280
|
+
id: listboxId,
|
|
281
|
+
role: "listbox",
|
|
282
|
+
"aria-label": l.list,
|
|
283
|
+
className: "scrollbar-subtle max-h-56 overflow-y-auto py-1",
|
|
284
|
+
children: items.map((item, index) => {
|
|
285
|
+
const isActive = index === selectedIndex;
|
|
286
|
+
const Icon = item.kind === "assistant" ? lucideReact.Bot : lucideReact.AtSign;
|
|
287
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
288
|
+
"div",
|
|
289
|
+
{
|
|
290
|
+
id: listOptionId(listboxId, index),
|
|
291
|
+
role: "option",
|
|
292
|
+
"aria-selected": isActive,
|
|
293
|
+
"data-mention-index": index,
|
|
294
|
+
className: ui.cn(
|
|
295
|
+
"flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm pointer-coarse:min-h-11",
|
|
296
|
+
isActive ? "bg-accent text-accent-foreground" : "hover:bg-accent/50"
|
|
297
|
+
),
|
|
298
|
+
onMouseEnter: () => setSelectedIndex(index),
|
|
299
|
+
onClick: () => onSelect(item),
|
|
300
|
+
"data-testid": chunkMHVNT4J3_cjs.prefixedTestId(itemTestIdPrefix, item.id, {
|
|
301
|
+
testId: `mention-item-${item.id}`
|
|
302
|
+
}),
|
|
303
|
+
children: [
|
|
304
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground", "aria-hidden": "true" }),
|
|
305
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 font-medium text-foreground", children: item.label }),
|
|
306
|
+
item.kind === "assistant" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded bg-muted px-1 text-[10px] font-medium uppercase text-muted-foreground", children: l.assistantBadge }),
|
|
307
|
+
item.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs text-muted-foreground", children: item.description })
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
item.id
|
|
311
|
+
);
|
|
312
|
+
})
|
|
313
|
+
}
|
|
314
|
+
)
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
);
|
|
318
|
+
});
|
|
319
|
+
function MentionChip({
|
|
320
|
+
label,
|
|
321
|
+
kind,
|
|
322
|
+
id,
|
|
323
|
+
isSelf,
|
|
324
|
+
labels,
|
|
325
|
+
className,
|
|
326
|
+
testId
|
|
327
|
+
}) {
|
|
328
|
+
const l = { ...DEFAULT_MENTION_LABELS, ...labels };
|
|
329
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
330
|
+
"span",
|
|
331
|
+
{
|
|
332
|
+
"data-slot": "mention-chip",
|
|
333
|
+
"data-mention-kind": kind,
|
|
334
|
+
"data-mention-id": id,
|
|
335
|
+
title: l.chipTitle(label, kind),
|
|
336
|
+
className: ui.cn(
|
|
337
|
+
"inline-flex items-baseline rounded px-1 font-medium",
|
|
338
|
+
isSelf ? "bg-primary/15 text-primary" : "bg-accent text-accent-foreground",
|
|
339
|
+
className
|
|
340
|
+
),
|
|
341
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: `mention-chip-${id ?? kind}` }),
|
|
342
|
+
children: [
|
|
343
|
+
"@",
|
|
344
|
+
label
|
|
345
|
+
]
|
|
346
|
+
}
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// src/chat/mentions.ts
|
|
351
|
+
var MAX_QUERY_LENGTH = 40;
|
|
352
|
+
function findMentionQuery(text, caret) {
|
|
353
|
+
const before = text.slice(0, caret);
|
|
354
|
+
const at = before.lastIndexOf("@");
|
|
355
|
+
if (at < 0) return null;
|
|
356
|
+
if (at > 0 && !/\s/.test(before[at - 1])) return null;
|
|
357
|
+
const query = before.slice(at + 1);
|
|
358
|
+
if (query.length > MAX_QUERY_LENGTH || query.includes("\n") || query.startsWith(" ")) return null;
|
|
359
|
+
return { start: at, query };
|
|
360
|
+
}
|
|
361
|
+
function filterMentionCandidates(candidates, query) {
|
|
362
|
+
const q = query.trim().toLowerCase();
|
|
363
|
+
if (!q) return candidates.slice();
|
|
364
|
+
const scored = [];
|
|
365
|
+
for (const c of candidates) {
|
|
366
|
+
const label = c.label.toLowerCase();
|
|
367
|
+
if (label.startsWith(q)) scored.push({ c, score: 0 });
|
|
368
|
+
else if (label.split(/\s+/).some((word) => word.startsWith(q))) scored.push({ c, score: 1 });
|
|
369
|
+
else if (c.description?.toLowerCase().startsWith(q)) scored.push({ c, score: 2 });
|
|
370
|
+
}
|
|
371
|
+
return scored.sort((a, b) => a.score - b.score).map((s) => s.c);
|
|
372
|
+
}
|
|
373
|
+
function insertMention(text, start, caret, label) {
|
|
374
|
+
const inserted = `@${label} `;
|
|
375
|
+
return {
|
|
376
|
+
text: text.slice(0, start) + inserted + text.slice(caret),
|
|
377
|
+
caret: start + inserted.length
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
function tokenRanges(text, label) {
|
|
381
|
+
const needle = `@${label}`;
|
|
382
|
+
const ranges = [];
|
|
383
|
+
let from = 0;
|
|
384
|
+
for (; ; ) {
|
|
385
|
+
const i = text.indexOf(needle, from);
|
|
386
|
+
if (i < 0) break;
|
|
387
|
+
const end = i + needle.length;
|
|
388
|
+
const startsToken = i === 0 || /\s|\(|\[/.test(text[i - 1]);
|
|
389
|
+
const endsToken = end === text.length || !/[\p{L}\p{N}_]/u.test(text[end]);
|
|
390
|
+
if (startsToken && endsToken) ranges.push([i, end]);
|
|
391
|
+
from = end;
|
|
392
|
+
}
|
|
393
|
+
return ranges;
|
|
394
|
+
}
|
|
395
|
+
function extractMentions(text, candidates) {
|
|
396
|
+
const taken = [];
|
|
397
|
+
const found = [];
|
|
398
|
+
const byLength = [...candidates].sort((a, b) => b.label.length - a.label.length);
|
|
399
|
+
for (const c of byLength) {
|
|
400
|
+
if (!c.label) continue;
|
|
401
|
+
for (const [from, to] of tokenRanges(text, c.label)) {
|
|
402
|
+
if (taken.some(([a, b]) => from < b && to > a)) continue;
|
|
403
|
+
taken.push([from, to]);
|
|
404
|
+
if (!found.some((f) => f.c.id === c.id)) found.push({ c, at: from });
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
return found.sort((a, b) => a.at - b.at).map((f) => f.c);
|
|
408
|
+
}
|
|
409
|
+
function toMessageMentions(mentioned) {
|
|
410
|
+
return mentioned.map(
|
|
411
|
+
(c) => c.kind === "assistant" ? { type: "assistant" } : { type: "user", user_ext_id: c.id }
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
var MENTION_HREF_PREFIX = "#mention-";
|
|
415
|
+
function escapeLinkText(label) {
|
|
416
|
+
return label.replace(/[[\]\\]/g, (ch) => `\\${ch}`);
|
|
417
|
+
}
|
|
418
|
+
function linkMentions(content, mentions, assistantLabels = []) {
|
|
419
|
+
if (!mentions || mentions.length === 0 || !content) return content;
|
|
420
|
+
const targets = [];
|
|
421
|
+
for (const m of mentions) {
|
|
422
|
+
const id = m.type === "assistant" ? "assistant" : m.user_ext_id;
|
|
423
|
+
if (!id) continue;
|
|
424
|
+
const labels = m.type === "assistant" ? [m.label ?? "", ...assistantLabels] : [m.label ?? ""];
|
|
425
|
+
for (const label of labels) if (label) targets.push({ label, id });
|
|
426
|
+
}
|
|
427
|
+
targets.sort((a, b) => b.label.length - a.label.length);
|
|
428
|
+
const replacements = [];
|
|
429
|
+
for (const { label, id } of targets) {
|
|
430
|
+
for (const [from, to] of tokenRanges(content, label)) {
|
|
431
|
+
if (replacements.some((r) => from < r.to && to > r.from)) continue;
|
|
432
|
+
replacements.push({
|
|
433
|
+
from,
|
|
434
|
+
to,
|
|
435
|
+
text: `[@${escapeLinkText(label)}](${MENTION_HREF_PREFIX}${id})`
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
replacements.sort((a, b) => b.from - a.from);
|
|
440
|
+
let out = content;
|
|
441
|
+
for (const r of replacements) out = out.slice(0, r.from) + r.text + out.slice(r.to);
|
|
442
|
+
return out;
|
|
443
|
+
}
|
|
444
|
+
function mentionFromHref(href) {
|
|
445
|
+
if (!href?.startsWith(MENTION_HREF_PREFIX)) return null;
|
|
446
|
+
const id = href.slice(MENTION_HREF_PREFIX.length);
|
|
447
|
+
if (!id) return null;
|
|
448
|
+
return { kind: id === "assistant" ? "assistant" : "user", id };
|
|
449
|
+
}
|
|
450
|
+
function useMentionAutocomplete({
|
|
451
|
+
value,
|
|
452
|
+
onValueChange,
|
|
453
|
+
candidates,
|
|
454
|
+
textareaRef
|
|
455
|
+
}) {
|
|
456
|
+
const [caret, setCaret] = react.useState(null);
|
|
457
|
+
const [dismissedAt, setDismissedAt] = react.useState(null);
|
|
458
|
+
react.useEffect(() => {
|
|
459
|
+
if (dismissedAt !== null && value[dismissedAt] !== "@") setDismissedAt(null);
|
|
460
|
+
}, [value, dismissedAt]);
|
|
461
|
+
const match = react.useMemo(
|
|
462
|
+
() => caret === null ? null : findMentionQuery(value, Math.min(caret, value.length)),
|
|
463
|
+
[value, caret]
|
|
464
|
+
);
|
|
465
|
+
const items = react.useMemo(
|
|
466
|
+
() => match ? filterMentionCandidates(candidates, match.query) : [],
|
|
467
|
+
[match, candidates]
|
|
468
|
+
);
|
|
469
|
+
const isOpen = !!match && items.length > 0 && dismissedAt !== match.start;
|
|
470
|
+
const readCaret = react.useCallback(() => {
|
|
471
|
+
const ta = textareaRef.current;
|
|
472
|
+
setCaret(ta ? ta.selectionStart : null);
|
|
473
|
+
}, [textareaRef]);
|
|
474
|
+
const pick = react.useCallback(
|
|
475
|
+
(candidate) => {
|
|
476
|
+
if (!match || caret === null) return;
|
|
477
|
+
const next = insertMention(value, match.start, Math.min(caret, value.length), candidate.label);
|
|
478
|
+
onValueChange(next.text);
|
|
479
|
+
setCaret(next.caret);
|
|
480
|
+
setDismissedAt(match.start);
|
|
481
|
+
requestAnimationFrame(() => {
|
|
482
|
+
const ta = textareaRef.current;
|
|
483
|
+
if (!ta) return;
|
|
484
|
+
ta.focus();
|
|
485
|
+
ta.setSelectionRange(next.caret, next.caret);
|
|
486
|
+
});
|
|
487
|
+
},
|
|
488
|
+
[match, caret, value, onValueChange, textareaRef]
|
|
489
|
+
);
|
|
490
|
+
const nav = useListKeyNav({
|
|
491
|
+
open: isOpen,
|
|
492
|
+
items,
|
|
493
|
+
onPick: pick,
|
|
494
|
+
onDismiss: () => setDismissedAt(match?.start ?? null),
|
|
495
|
+
resetKey: match?.query
|
|
496
|
+
});
|
|
497
|
+
const handleValueChange = react.useCallback(
|
|
498
|
+
(next) => {
|
|
499
|
+
onValueChange(next);
|
|
500
|
+
const ta = textareaRef.current;
|
|
501
|
+
setCaret(ta ? ta.selectionStart : next.length);
|
|
502
|
+
if (dismissedAt !== null && (next.length < value.length || next[dismissedAt] !== "@")) {
|
|
503
|
+
setDismissedAt(null);
|
|
504
|
+
}
|
|
505
|
+
},
|
|
506
|
+
[onValueChange, textareaRef, dismissedAt, value]
|
|
507
|
+
);
|
|
508
|
+
return {
|
|
509
|
+
isOpen,
|
|
510
|
+
items,
|
|
511
|
+
nav,
|
|
512
|
+
pick,
|
|
513
|
+
onValueChange: handleValueChange,
|
|
514
|
+
textareaProps: { onSelect: readCaret }
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
var DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS = {
|
|
518
|
+
always: "Assistant replies",
|
|
519
|
+
mentioned: "Thread",
|
|
520
|
+
alwaysHint: "The assistant answers every message. Click to make this a thread.",
|
|
521
|
+
mentionedHint: "A thread: messages are comments between people. @mention the assistant to get an answer. Click to have it answer every message."
|
|
522
|
+
};
|
|
523
|
+
function AssistantModeToggle({
|
|
524
|
+
mode,
|
|
525
|
+
onModeChange,
|
|
526
|
+
disabled,
|
|
527
|
+
labels,
|
|
528
|
+
className,
|
|
529
|
+
testId
|
|
530
|
+
}) {
|
|
531
|
+
const l = { ...DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS, ...labels };
|
|
532
|
+
const isThread = mode === "mentioned";
|
|
533
|
+
const hint = isThread ? l.mentionedHint : l.alwaysHint;
|
|
534
|
+
const Icon = isThread ? lucideReact.MessagesSquare : lucideReact.Bot;
|
|
535
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
|
|
536
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
537
|
+
ui.Button,
|
|
538
|
+
{
|
|
539
|
+
type: "button",
|
|
540
|
+
variant: "ghost",
|
|
541
|
+
size: "sm",
|
|
542
|
+
disabled,
|
|
543
|
+
"aria-pressed": isThread,
|
|
544
|
+
"aria-label": `${isThread ? l.mentioned : l.always}. ${hint}`,
|
|
545
|
+
onClick: () => onModeChange(isThread ? "always" : "mentioned"),
|
|
546
|
+
className: ui.cn(
|
|
547
|
+
"h-8 gap-1.5 px-2 text-xs text-muted-foreground hover:bg-muted pointer-coarse:h-11",
|
|
548
|
+
isThread && "bg-accent text-accent-foreground",
|
|
549
|
+
className
|
|
550
|
+
),
|
|
551
|
+
"data-mode": mode,
|
|
552
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "assistant-mode-toggle" }),
|
|
553
|
+
children: [
|
|
554
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3.5 w-3.5", "aria-hidden": "true" }),
|
|
555
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: isThread ? l.mentioned : l.always })
|
|
556
|
+
]
|
|
557
|
+
}
|
|
558
|
+
) }),
|
|
559
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "top", className: "max-w-xs", children: hint })
|
|
560
|
+
] });
|
|
561
|
+
}
|
|
230
562
|
var DEFAULT_PINNED_DOC_CHIP_LABELS = {
|
|
231
563
|
unpin: "Unpin",
|
|
232
564
|
unpinDocument: (title) => `Unpin ${title}`
|
|
@@ -1633,6 +1965,7 @@ function AssistantToaster(props) {
|
|
|
1633
1965
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkTO4FAMQP_cjs.Toaster, { ...props, dockOpen: dock.isOpen && isDockAvailable });
|
|
1634
1966
|
}
|
|
1635
1967
|
|
|
1968
|
+
exports.AssistantModeToggle = AssistantModeToggle;
|
|
1636
1969
|
exports.AssistantToaster = AssistantToaster;
|
|
1637
1970
|
exports.BranchControls = BranchControls;
|
|
1638
1971
|
exports.ComposerAccessories = ComposerAccessories;
|
|
@@ -1657,17 +1990,22 @@ exports.ConversationMain = ConversationMain;
|
|
|
1657
1990
|
exports.ConversationRoot = ConversationRoot;
|
|
1658
1991
|
exports.ConversationSearchView = ConversationSearchView;
|
|
1659
1992
|
exports.ConversationSettingsButton = ConversationSettingsButton;
|
|
1993
|
+
exports.DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS = DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS;
|
|
1660
1994
|
exports.DEFAULT_BRANCH_CONTROLS_LABELS = DEFAULT_BRANCH_CONTROLS_LABELS;
|
|
1661
1995
|
exports.DEFAULT_CONVERSATION_LAYOUT_LABELS = DEFAULT_CONVERSATION_LAYOUT_LABELS;
|
|
1662
1996
|
exports.DEFAULT_CONVERSATION_PARTS_LABELS = DEFAULT_CONVERSATION_PARTS_LABELS;
|
|
1663
1997
|
exports.DEFAULT_CONVERSATION_SEARCH_LABELS = DEFAULT_CONVERSATION_SEARCH_LABELS;
|
|
1664
1998
|
exports.DEFAULT_LABEL_PIN_ROW_LABELS = DEFAULT_LABEL_PIN_ROW_LABELS;
|
|
1999
|
+
exports.DEFAULT_MENTION_LABELS = DEFAULT_MENTION_LABELS;
|
|
1665
2000
|
exports.DEFAULT_MODEL_PRICING_TIP_LABELS = DEFAULT_MODEL_PRICING_TIP_LABELS;
|
|
1666
2001
|
exports.DEFAULT_PENDING_ANSWER_BAR_LABELS = DEFAULT_PENDING_ANSWER_BAR_LABELS;
|
|
1667
2002
|
exports.DEFAULT_PINNED_DOC_CHIP_LABELS = DEFAULT_PINNED_DOC_CHIP_LABELS;
|
|
1668
2003
|
exports.DEFAULT_SLASH_MENU_LABELS = DEFAULT_SLASH_MENU_LABELS;
|
|
1669
2004
|
exports.DEFAULT_THREAD_MAP_LABELS = DEFAULT_THREAD_MAP_LABELS;
|
|
1670
2005
|
exports.LabelPinRow = LabelPinRow;
|
|
2006
|
+
exports.MENTION_HREF_PREFIX = MENTION_HREF_PREFIX;
|
|
2007
|
+
exports.MentionChip = MentionChip;
|
|
2008
|
+
exports.MentionMenu = MentionMenu;
|
|
1671
2009
|
exports.ModelAutoIcon = ModelAutoIcon;
|
|
1672
2010
|
exports.ModelConfigureButton = ModelConfigureButton;
|
|
1673
2011
|
exports.ModelDot = ModelDot;
|
|
@@ -1691,9 +2029,17 @@ exports.ThreadMap = ThreadMap;
|
|
|
1691
2029
|
exports.ThreadMapDiagram = ThreadMapDiagram;
|
|
1692
2030
|
exports.ThreadMapError = ThreadMapError;
|
|
1693
2031
|
exports.ThreadMapLoading = ThreadMapLoading;
|
|
2032
|
+
exports.extractMentions = extractMentions;
|
|
2033
|
+
exports.filterMentionCandidates = filterMentionCandidates;
|
|
2034
|
+
exports.findMentionQuery = findMentionQuery;
|
|
2035
|
+
exports.insertMention = insertMention;
|
|
1694
2036
|
exports.isLongPastedText = isLongPastedText;
|
|
2037
|
+
exports.linkMentions = linkMentions;
|
|
2038
|
+
exports.mentionFromHref = mentionFromHref;
|
|
2039
|
+
exports.toMessageMentions = toMessageMentions;
|
|
1695
2040
|
exports.useDismissibleCard = useDismissibleCard;
|
|
1696
2041
|
exports.useListKeyNav = useListKeyNav;
|
|
1697
2042
|
exports.useLongPaste = useLongPaste;
|
|
1698
|
-
|
|
1699
|
-
//# sourceMappingURL=chunk-
|
|
2043
|
+
exports.useMentionAutocomplete = useMentionAutocomplete;
|
|
2044
|
+
//# sourceMappingURL=chunk-C2V6HQKG.cjs.map
|
|
2045
|
+
//# sourceMappingURL=chunk-C2V6HQKG.cjs.map
|