@arbidocs/blocks 0.4.103 → 0.4.104
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 +207 -207
- package/dist/agents/index.js +2 -2
- package/dist/{chunk-AOFATOT3.cjs → chunk-2A4MDHJR.cjs} +7 -5
- package/dist/chunk-2A4MDHJR.cjs.map +1 -0
- package/dist/{chunk-GQTIAATM.js → chunk-4GFB5U3K.js} +3 -3
- package/dist/{chunk-GQTIAATM.js.map → chunk-4GFB5U3K.js.map} +1 -1
- package/dist/chunk-5FYU7ZIU.cjs +139 -0
- package/dist/chunk-5FYU7ZIU.cjs.map +1 -0
- package/dist/{chunk-TFDU2KGS.cjs → chunk-7LLLQUM7.cjs} +5 -5
- package/dist/{chunk-TFDU2KGS.cjs.map → chunk-7LLLQUM7.cjs.map} +1 -1
- package/dist/{chunk-D3QPYKZG.js → chunk-EPHGD4YV.js} +7 -6
- package/dist/chunk-EPHGD4YV.js.map +1 -0
- package/dist/chunk-HFZ45FD3.js +133 -0
- package/dist/chunk-HFZ45FD3.js.map +1 -0
- package/dist/{chunk-5NQIBJPP.js → chunk-NJX774HB.js} +3 -3
- package/dist/{chunk-5NQIBJPP.js.map → chunk-NJX774HB.js.map} +1 -1
- package/dist/{chunk-DDYXFALG.cjs → chunk-NW3LFDZL.cjs} +3 -3
- package/dist/{chunk-DDYXFALG.cjs.map → chunk-NW3LFDZL.cjs.map} +1 -1
- package/dist/{chunk-H6DFXG5N.js → chunk-PIT2YZCK.js} +3 -3
- package/dist/{chunk-H6DFXG5N.js.map → chunk-PIT2YZCK.js.map} +1 -1
- package/dist/{chunk-Z3G65XHZ.js → chunk-S55VDTX3.js} +3 -3
- package/dist/{chunk-Z3G65XHZ.js.map → chunk-S55VDTX3.js.map} +1 -1
- package/dist/{chunk-LENXDIMY.cjs → chunk-SKSE4OT6.cjs} +22 -22
- package/dist/{chunk-LENXDIMY.cjs.map → chunk-SKSE4OT6.cjs.map} +1 -1
- package/dist/{chunk-N36PWG7A.cjs → chunk-TP3FAP5J.cjs} +5 -5
- package/dist/{chunk-N36PWG7A.cjs.map → chunk-TP3FAP5J.cjs.map} +1 -1
- package/dist/{chunk-CVYY4X5R.js → chunk-W2RTZOK3.js} +1232 -193
- package/dist/chunk-W2RTZOK3.js.map +1 -0
- package/dist/{chunk-O33EBMIX.cjs → chunk-ZWWN4CUL.cjs} +1410 -359
- package/dist/chunk-ZWWN4CUL.cjs.map +1 -0
- package/dist/connect/docx.cjs +8 -7
- package/dist/connect/docx.cjs.map +1 -1
- package/dist/connect/docx.js +6 -5
- package/dist/connect/docx.js.map +1 -1
- package/dist/connect/index.cjs +12 -11
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +5 -4
- package/dist/connect/index.js.map +1 -1
- package/dist/docx/LinkHoverCard.d.ts +24 -0
- package/dist/docx/NativeDocxEditor.d.ts +6 -0
- package/dist/docx/beforeSave.d.ts +9 -0
- package/dist/docx/definitions/fragment.d.ts +19 -1
- package/dist/docx/definitions/port.d.ts +43 -11
- package/dist/docx/index.cjs +85 -36
- package/dist/docx/index.cjs.map +1 -1
- package/dist/docx/index.d.ts +6 -0
- package/dist/docx/index.js +5 -4
- package/dist/docx/index.js.map +1 -1
- package/dist/docx/references/CrossReferences.d.ts +97 -0
- package/dist/docx/references/EditorMenus.d.ts +10 -0
- package/dist/docx/references/commands.d.ts +119 -0
- package/dist/docx/references/numbering.d.ts +49 -0
- package/dist/docx/references/passages.d.ts +32 -0
- package/dist/docx/references/port.d.ts +20 -0
- package/dist/facts/index.cjs +22 -129
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +3 -125
- package/dist/facts/index.js.map +1 -1
- package/dist/files/index.cjs +1 -1
- package/dist/files/index.js +1 -1
- package/dist/home/index.cjs +1 -1
- package/dist/home/index.js +1 -1
- package/dist/index.cjs +314 -314
- package/dist/index.js +8 -8
- package/dist/shell/index.cjs +1 -1
- package/dist/shell/index.js +1 -1
- package/dist/studio/index.cjs +1 -1
- package/dist/studio/index.js +1 -1
- package/dist/tags/ooxml.d.ts +4 -0
- package/dist/workflow-canvas/index.cjs +9 -9
- package/dist/workflow-canvas/index.js +2 -2
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +4 -4
- package/src/docx/README.md +22 -0
- package/dist/chunk-AOFATOT3.cjs.map +0 -1
- package/dist/chunk-CVYY4X5R.js.map +0 -1
- package/dist/chunk-D3QPYKZG.js.map +0 -1
- package/dist/chunk-O33EBMIX.cjs.map +0 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { testIdOr } from './chunk-7F6CBP3Z.js';
|
|
3
|
+
import { X } from 'lucide-react';
|
|
4
|
+
import { cn, PopoverContent } from '@arbidocs/react/ui';
|
|
5
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var DEFAULT_FACT_PASSAGES_LABELS = {
|
|
8
|
+
loading: "Loading passage\u2026",
|
|
9
|
+
close: "Close"
|
|
10
|
+
};
|
|
11
|
+
function toPreviewLine(md) {
|
|
12
|
+
return md.replace(/`{1,3}([^`]*)`{1,3}/g, "$1").replace(/!\[[^\]]*\]\([^)]*\)/g, "").replace(/\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/^[>\s]*#{1,6}\s*/gm, "").replace(/^[>\s]*[-*+]\s+/gm, "").replace(/[*_~]/g, "").replace(/\|/g, " ").replace(/\s+/g, " ").trim();
|
|
13
|
+
}
|
|
14
|
+
var SUP_SUB_RE = /<(sup|sub)>([\s\S]*?)<\/\1>/gi;
|
|
15
|
+
var STRAY_SUP_SUB_RE = /<\/?(?:sup|sub)>/gi;
|
|
16
|
+
var stripStrayTags = (s) => s.replace(STRAY_SUP_SUB_RE, "");
|
|
17
|
+
function renderPreviewInline(line) {
|
|
18
|
+
const nodes = [];
|
|
19
|
+
let last = 0;
|
|
20
|
+
let key = 0;
|
|
21
|
+
for (const m of line.matchAll(SUP_SUB_RE)) {
|
|
22
|
+
const start = m.index ?? 0;
|
|
23
|
+
if (start > last) nodes.push(stripStrayTags(line.slice(last, start)));
|
|
24
|
+
const inner = stripStrayTags(m[2]);
|
|
25
|
+
nodes.push(
|
|
26
|
+
m[1].toLowerCase() === "sup" ? /* @__PURE__ */ jsx("sup", { children: inner }, key++) : /* @__PURE__ */ jsx("sub", { children: inner }, key++)
|
|
27
|
+
);
|
|
28
|
+
last = start + m[0].length;
|
|
29
|
+
}
|
|
30
|
+
if (last < line.length) nodes.push(stripStrayTags(line.slice(last)));
|
|
31
|
+
return nodes;
|
|
32
|
+
}
|
|
33
|
+
function FactPassageItem({
|
|
34
|
+
index,
|
|
35
|
+
page,
|
|
36
|
+
excerpt,
|
|
37
|
+
isViewing,
|
|
38
|
+
onSelect,
|
|
39
|
+
testId,
|
|
40
|
+
className,
|
|
41
|
+
labels
|
|
42
|
+
}) {
|
|
43
|
+
const l = { ...DEFAULT_FACT_PASSAGES_LABELS, ...labels };
|
|
44
|
+
return /* @__PURE__ */ jsxs(
|
|
45
|
+
"button",
|
|
46
|
+
{
|
|
47
|
+
type: "button",
|
|
48
|
+
onClick: onSelect,
|
|
49
|
+
"data-testid": testIdOr(testId, { testId: "fact-source-passage" }),
|
|
50
|
+
"aria-current": isViewing || void 0,
|
|
51
|
+
className: cn(
|
|
52
|
+
"flex w-full items-start gap-2 rounded px-2 py-1.5 text-left text-xs transition-colors pointer-coarse:min-h-11",
|
|
53
|
+
isViewing ? "bg-ai-soft text-foreground ring-1 ring-ai-accent/40" : "bg-ai-soft/60 text-foreground hover:bg-ai-soft",
|
|
54
|
+
className
|
|
55
|
+
),
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsxs("span", { className: "mt-0.5 shrink-0 rounded bg-muted px-1 py-0.5 font-mono text-xs text-muted-foreground", children: [
|
|
58
|
+
index + 1,
|
|
59
|
+
"."
|
|
60
|
+
] }),
|
|
61
|
+
page != null && /* @__PURE__ */ jsxs("span", { className: "mt-0.5 shrink-0 rounded-full bg-muted px-1.5 py-0.5 font-mono text-xs text-muted-foreground", children: [
|
|
62
|
+
"p.",
|
|
63
|
+
page
|
|
64
|
+
] }),
|
|
65
|
+
/* @__PURE__ */ jsx("span", { className: "block min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap", children: excerpt ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
66
|
+
"\u201C",
|
|
67
|
+
renderPreviewInline(toPreviewLine(excerpt)),
|
|
68
|
+
"\u201D"
|
|
69
|
+
] }) : l.loading })
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
function FactSourcesPanel({
|
|
75
|
+
title,
|
|
76
|
+
onClose,
|
|
77
|
+
container,
|
|
78
|
+
children,
|
|
79
|
+
labels,
|
|
80
|
+
testIds
|
|
81
|
+
}) {
|
|
82
|
+
const l = { ...DEFAULT_FACT_PASSAGES_LABELS, ...labels };
|
|
83
|
+
return /* @__PURE__ */ jsxs(
|
|
84
|
+
PopoverContent,
|
|
85
|
+
{
|
|
86
|
+
align: "start",
|
|
87
|
+
side: "bottom",
|
|
88
|
+
sideOffset: 4,
|
|
89
|
+
collisionPadding: 16,
|
|
90
|
+
container,
|
|
91
|
+
collisionBoundary: container ?? void 0,
|
|
92
|
+
onInteractOutside: (e) => {
|
|
93
|
+
const target = e.detail.originalEvent.target;
|
|
94
|
+
if (target?.closest(
|
|
95
|
+
'[data-testid="parsed-viewer"], [role="dialog"], [data-radix-popper-content-wrapper]'
|
|
96
|
+
)) {
|
|
97
|
+
e.preventDefault();
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
className: "w-[34rem] max-w-[var(--radix-popover-content-available-width)] p-0 data-[state=closed]:animate-none",
|
|
101
|
+
"data-testid": testIdOr(testIds?.popover, { testId: "fact-sources-popover" }),
|
|
102
|
+
"data-slot": "fact-sources-panel",
|
|
103
|
+
children: [
|
|
104
|
+
/* @__PURE__ */ jsxs("div", { className: "sticky top-0 z-10 flex items-center justify-between gap-2 border-b border-border bg-popover px-3 py-2", children: [
|
|
105
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-muted-foreground", children: title }),
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
|
+
"button",
|
|
108
|
+
{
|
|
109
|
+
type: "button",
|
|
110
|
+
"aria-label": l.close,
|
|
111
|
+
"data-testid": testIdOr(testIds?.close, { testId: "fact-sources-close" }),
|
|
112
|
+
onClick: onClose,
|
|
113
|
+
className: "-m-1.5 flex shrink-0 items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground pointer-coarse:p-3",
|
|
114
|
+
children: /* @__PURE__ */ jsx(X, { className: "size-3.5" })
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
] }),
|
|
118
|
+
/* @__PURE__ */ jsx(
|
|
119
|
+
"div",
|
|
120
|
+
{
|
|
121
|
+
className: "flex max-h-[min(60vh,var(--radix-popover-content-available-height))] flex-col gap-2 overflow-y-auto p-1.5",
|
|
122
|
+
"data-testid": testIdOr(testIds?.list, { testId: "fact-sources-list" }),
|
|
123
|
+
children
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export { DEFAULT_FACT_PASSAGES_LABELS, FactPassageItem, FactSourcesPanel, renderPreviewInline, toPreviewLine };
|
|
132
|
+
//# sourceMappingURL=chunk-HFZ45FD3.js.map
|
|
133
|
+
//# sourceMappingURL=chunk-HFZ45FD3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/facts/FactPassages.tsx"],"names":[],"mappings":"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","file":"chunk-HFZ45FD3.js","sourcesContent":["import type { ReactNode } from 'react'\nimport { X } from 'lucide-react'\nimport { PopoverContent, cn } from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\nexport interface FactPassagesLabels {\n loading: string\n close: string\n}\n\nexport const DEFAULT_FACT_PASSAGES_LABELS: FactPassagesLabels = {\n loading: 'Loading passage…',\n close: 'Close',\n}\n\nexport interface FactSourcesPanelTestIds {\n popover: string\n close: string\n list: string\n}\n\n/**\n * Flatten a passage's markdown to one readable line for a list preview: headings, bullets,\n * emphasis, links and table pipes only add noise on a single truncated line.\n */\nexport function toPreviewLine(md: string): string {\n return md\n .replace(/`{1,3}([^`]*)`{1,3}/g, '$1') // inline / fenced code -> its content\n .replace(/!\\[[^\\]]*\\]\\([^)]*\\)/g, '') // images out\n .replace(/\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1') // links -> their text\n .replace(/^[>\\s]*#{1,6}\\s*/gm, '') // heading markers\n .replace(/^[>\\s]*[-*+]\\s+/gm, '') // list bullets\n .replace(/[*_~]/g, '') // emphasis marks\n .replace(/\\|/g, ' ') // table pipes\n .replace(/\\s+/g, ' ') // collapse whitespace/newlines\n .trim()\n}\n\n/** Inline `<sup>`/`<sub>` (footnote markers) kept by the flatten above, plus stray tag fragments. */\nconst SUP_SUB_RE = /<(sup|sub)>([\\s\\S]*?)<\\/\\1>/gi\nconst STRAY_SUP_SUB_RE = /<\\/?(?:sup|sub)>/gi\n\nconst stripStrayTags = (s: string): string => s.replace(STRAY_SUP_SUB_RE, '')\n\n/**\n * Render a flattened preview line with real super/subscripts: `<sup>15</sup>` shows as a\n * superscript 15, not literal tag text. Unpaired tag fragments are dropped.\n */\nexport function renderPreviewInline(line: string): ReactNode {\n const nodes: ReactNode[] = []\n let last = 0\n let key = 0\n for (const m of line.matchAll(SUP_SUB_RE)) {\n const start = m.index ?? 0\n if (start > last) nodes.push(stripStrayTags(line.slice(last, start)))\n const inner = stripStrayTags(m[2])\n nodes.push(\n m[1].toLowerCase() === 'sup' ? <sup key={key++}>{inner}</sup> : <sub key={key++}>{inner}</sub>\n )\n last = start + m[0].length\n }\n if (last < line.length) nodes.push(stripStrayTags(line.slice(last)))\n return nodes\n}\n\nexport interface FactPassageItemProps {\n /** Zero-based position in the list (shown as `n.`). */\n index: number\n page?: number | null\n /** The passage excerpt (markdown), or null/undefined while it loads. */\n excerpt?: string | null\n /** This passage is the one open in the viewer. */\n isViewing?: boolean\n onSelect: () => void\n testId?: string\n className?: string\n labels?: Partial<FactPassagesLabels>\n}\n\n/** One cited passage: index badge, page pill and a single quoted line. */\nexport function FactPassageItem({\n index,\n page,\n excerpt,\n isViewing,\n onSelect,\n testId,\n className,\n labels,\n}: FactPassageItemProps) {\n const l = { ...DEFAULT_FACT_PASSAGES_LABELS, ...labels }\n return (\n <button\n type=\"button\"\n onClick={onSelect}\n data-testid={testIdOr(testId, { testId: 'fact-source-passage' })}\n aria-current={isViewing || undefined}\n className={cn(\n 'flex w-full items-start gap-2 rounded px-2 py-1.5 text-left text-xs transition-colors pointer-coarse:min-h-11',\n isViewing\n ? 'bg-ai-soft text-foreground ring-1 ring-ai-accent/40'\n : 'bg-ai-soft/60 text-foreground hover:bg-ai-soft',\n className\n )}\n >\n <span className=\"mt-0.5 shrink-0 rounded bg-muted px-1 py-0.5 font-mono text-xs text-muted-foreground\">\n {index + 1}.\n </span>\n {page != null && (\n <span className=\"mt-0.5 shrink-0 rounded-full bg-muted px-1.5 py-0.5 font-mono text-xs text-muted-foreground\">\n p.{page}\n </span>\n )}\n <span className=\"block min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap\">\n {excerpt ? <>“{renderPreviewInline(toPreviewLine(excerpt))}”</> : l.loading}\n </span>\n </button>\n )\n}\n\nexport interface FactSourcesPanelProps {\n /** Header caption, e.g. \"Sources (2 documents)\". */\n title: string\n onClose: () => void\n /** The fact section the panel is portalled INTO and fenced WITHIN. */\n container?: HTMLElement | null\n children: ReactNode\n labels?: Partial<FactPassagesLabels>\n testIds?: Partial<FactSourcesPanelTestIds>\n}\n\n/**\n * Popover panel shell for a fact's sources: sticky header with a close control and a scrolling\n * list. Must sit inside a `Popover`. Stays open while the user works in the document viewer\n * (clicks inside the viewer, dialogs or other popper layers do not dismiss it).\n */\nexport function FactSourcesPanel({\n title,\n onClose,\n container,\n children,\n labels,\n testIds,\n}: FactSourcesPanelProps) {\n const l = { ...DEFAULT_FACT_PASSAGES_LABELS, ...labels }\n return (\n <PopoverContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={4}\n collisionPadding={16}\n container={container}\n collisionBoundary={container ?? undefined}\n onInteractOutside={(e) => {\n const target = e.detail.originalEvent.target as Element | null\n if (\n target?.closest(\n '[data-testid=\"parsed-viewer\"], [role=\"dialog\"], [data-radix-popper-content-wrapper]'\n )\n ) {\n e.preventDefault()\n }\n }}\n // No exit animation: removing the last source unmounts the anchor in the same click, and an\n // animating popover would linger anchorless at the page's top-left.\n className=\"w-[34rem] max-w-[var(--radix-popover-content-available-width)] p-0 data-[state=closed]:animate-none\"\n data-testid={testIdOr(testIds?.popover, { testId: 'fact-sources-popover' })}\n data-slot=\"fact-sources-panel\"\n >\n <div className=\"sticky top-0 z-10 flex items-center justify-between gap-2 border-b border-border bg-popover px-3 py-2\">\n <span className=\"text-xs font-semibold text-muted-foreground\">{title}</span>\n <button\n type=\"button\"\n aria-label={l.close}\n data-testid={testIdOr(testIds?.close, { testId: 'fact-sources-close' })}\n onClick={onClose}\n className=\"-m-1.5 flex shrink-0 items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground pointer-coarse:p-3\"\n >\n <X className=\"size-3.5\" />\n </button>\n </div>\n <div\n className=\"flex max-h-[min(60vh,var(--radix-popover-content-available-height))] flex-col gap-2 overflow-y-auto p-1.5\"\n data-testid={testIdOr(testIds?.list, { testId: 'fact-sources-list' })}\n >\n {children}\n </div>\n </PopoverContent>\n )\n}\n"]}
|
|
@@ -11,9 +11,9 @@ import { FilterInput } from './chunk-YU2KUMGE.js';
|
|
|
11
11
|
import { QuickActionDialogHeader, AddFilesFirst, ScopePicker, StartTiles } from './chunk-DDF5GPIJ.js';
|
|
12
12
|
import { FoldSection } from './chunk-XD2M6LIG.js';
|
|
13
13
|
import { ActionLink } from './chunk-S7PSMMRG.js';
|
|
14
|
+
import { useBlocksEnvironment } from './chunk-76JDDMSP.js';
|
|
14
15
|
import { useMentionAutocomplete } from './chunk-HOXKR26S.js';
|
|
15
16
|
import { toMessageMentions, extractMentions, MentionMenu } from './chunk-AA3PT6KR.js';
|
|
16
|
-
import { useBlocksEnvironment } from './chunk-76JDDMSP.js';
|
|
17
17
|
import { formatCount, initials } from './chunk-OXF2IFXG.js';
|
|
18
18
|
import { ModalHeader } from './chunk-TX2ZICS7.js';
|
|
19
19
|
import { GridView } from './chunk-ZPLG7QYF.js';
|
|
@@ -9906,5 +9906,5 @@ function AgentCreateView({
|
|
|
9906
9906
|
}
|
|
9907
9907
|
|
|
9908
9908
|
export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EntityChip, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen };
|
|
9909
|
-
//# sourceMappingURL=chunk-
|
|
9910
|
-
//# sourceMappingURL=chunk-
|
|
9909
|
+
//# sourceMappingURL=chunk-NJX774HB.js.map
|
|
9910
|
+
//# sourceMappingURL=chunk-NJX774HB.js.map
|