@arbidocs/blocks 0.4.91 → 0.4.93
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 +280 -280
- package/dist/agents/index.js +4 -4
- package/dist/{chunk-ZPERNIMP.cjs → chunk-2WLXQGWC.cjs} +8 -3
- package/dist/chunk-2WLXQGWC.cjs.map +1 -0
- package/dist/{chunk-3US5OIDQ.cjs → chunk-3WW32OUU.cjs} +3 -3
- package/dist/{chunk-3US5OIDQ.cjs.map → chunk-3WW32OUU.cjs.map} +1 -1
- package/dist/{chunk-EHF63UYP.cjs → chunk-AMC5PMJ3.cjs} +5 -5
- package/dist/{chunk-EHF63UYP.cjs.map → chunk-AMC5PMJ3.cjs.map} +1 -1
- package/dist/{chunk-IC2VHFWR.js → chunk-JJA6GQKH.js} +8 -3
- package/dist/chunk-JJA6GQKH.js.map +1 -0
- package/dist/{chunk-DDYXFALG.cjs → chunk-MROSCSPW.cjs} +43 -43
- package/dist/{chunk-DDYXFALG.cjs.map → chunk-MROSCSPW.cjs.map} +1 -1
- package/dist/{chunk-PGDL26TQ.js → chunk-SF4BDUZS.js} +3 -3
- package/dist/{chunk-PGDL26TQ.js.map → chunk-SF4BDUZS.js.map} +1 -1
- package/dist/{chunk-5NQIBJPP.js → chunk-SJVUKXS6.js} +5 -5
- package/dist/{chunk-5NQIBJPP.js.map → chunk-SJVUKXS6.js.map} +1 -1
- package/dist/{chunk-5RQOVALO.js → chunk-UO74FLRK.js} +3 -3
- package/dist/{chunk-5RQOVALO.js.map → chunk-UO74FLRK.js.map} +1 -1
- package/dist/connect/index.cjs +27 -29
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +7 -9
- package/dist/connect/index.js.map +1 -1
- package/dist/facts/index.cjs +2 -2
- package/dist/facts/index.js +1 -1
- package/dist/files/ViewToggle.d.ts +6 -1
- package/dist/files/index.cjs +4 -4
- package/dist/files/index.js +1 -1
- package/dist/index.cjs +315 -315
- package/dist/index.js +7 -7
- package/dist/workflow-canvas/index.cjs +47 -47
- package/dist/workflow-canvas/index.js +4 -4
- package/package.json +4 -4
- package/dist/chunk-IC2VHFWR.js.map +0 -1
- package/dist/chunk-ZPERNIMP.cjs.map +0 -1
|
@@ -53,6 +53,10 @@ function ViewToggleItem({
|
|
|
53
53
|
)
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
|
+
var CONTAINER_LABEL_CLASS = {
|
|
57
|
+
"32rem": "hidden @lg:inline text-sm",
|
|
58
|
+
"40rem": "hidden @[40rem]:inline text-sm"
|
|
59
|
+
};
|
|
56
60
|
function ViewToggle({
|
|
57
61
|
options,
|
|
58
62
|
value,
|
|
@@ -62,9 +66,10 @@ function ViewToggle({
|
|
|
62
66
|
hideTooltips = false,
|
|
63
67
|
size = "default",
|
|
64
68
|
containerCollapse = false,
|
|
69
|
+
labelsFrom = "32rem",
|
|
65
70
|
className
|
|
66
71
|
}) {
|
|
67
|
-
const labelClassName = containerCollapse ?
|
|
72
|
+
const labelClassName = containerCollapse ? CONTAINER_LABEL_CLASS[labelsFrom] : "hidden md:inline text-sm";
|
|
68
73
|
return /* @__PURE__ */ jsx(
|
|
69
74
|
ToggleGroup,
|
|
70
75
|
{
|
|
@@ -154,5 +159,5 @@ function DocumentViewToggle({
|
|
|
154
159
|
}
|
|
155
160
|
|
|
156
161
|
export { DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS, DocumentViewToggle, ViewToggle };
|
|
157
|
-
//# sourceMappingURL=chunk-
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
162
|
+
//# sourceMappingURL=chunk-JJA6GQKH.js.map
|
|
163
|
+
//# sourceMappingURL=chunk-JJA6GQKH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/files/ViewToggle.tsx"],"names":[],"mappings":"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","file":"chunk-JJA6GQKH.js","sourcesContent":["import { useRef, useState, type ReactNode } from 'react'\nimport { BookOpen, FileImage, Search, Table2 } from 'lucide-react'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n ToggleGroup,\n ToggleGroupItem,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\n/** Names of the four document view modes. Pass a partial `labels` to translate or reword. */\nexport interface DocumentViewToggleLabels {\n gallery: string\n table: string\n review: string\n smartSearch: string\n}\n\nexport const DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS: DocumentViewToggleLabels = {\n gallery: 'Gallery',\n table: 'Table',\n review: 'Review',\n smartSearch: 'Smart Search',\n}\n\nexport interface ViewToggleOption {\n value: string\n icon: ReactNode\n label: string\n /** Overrides this item's test id (default `${testIdPrefix}-${value}-button`). */\n testId?: string\n}\n\nexport interface ViewToggleProps {\n options: ViewToggleOption[]\n value: string\n onChange: (value: string) => void\n /** Item test ids are `${testIdPrefix}-${value}-button` unless an option sets its own `testId`. */\n testIdPrefix?: string\n showLabels?: boolean\n hideTooltips?: boolean\n size?: 'default' | 'sm'\n /**\n * Collapse labels to icons by the width of the nearest `@container` ancestor instead of the\n * viewport. The consumer must mark that region `@container`.\n */\n containerCollapse?: boolean\n /**\n * With `containerCollapse`: the container width from which labels show (default `32rem`). More\n * options need a wider container before their labels fit.\n */\n labelsFrom?: '32rem' | '40rem'\n className?: string\n}\n\ninterface ViewToggleItemProps {\n option: ViewToggleOption\n size: 'default' | 'sm'\n testIdPrefix: string\n showLabel: boolean\n labelClassName: string\n hideTooltip: boolean\n}\n\nfunction ViewToggleItem({\n option,\n size,\n testIdPrefix,\n showLabel,\n labelClassName,\n hideTooltip,\n}: ViewToggleItemProps) {\n const labelRef = useRef<HTMLSpanElement>(null)\n const [isTipNeeded, setIsTipNeeded] = useState(true)\n // A control that shows its own text needs no tooltip repeating it; when the container is too\n // narrow and the label collapses to the icon, the tooltip is the label.\n const isLabelShown = () => !!labelRef.current && labelRef.current.offsetParent !== null\n const content = (\n <span\n className=\"flex items-center gap-1.5\"\n onPointerEnter={() => setIsTipNeeded(!isLabelShown())}\n onFocus={() => setIsTipNeeded(!isLabelShown())}\n >\n {option.icon}\n {showLabel && (\n <span ref={labelRef} className={labelClassName}>\n {option.label}\n </span>\n )}\n </span>\n )\n return (\n // The tooltip lives INSIDE the item: wrapping the ToggleGroupItem would make Radix\n // Tooltip's data-state collide with the toggle's on/off state.\n <ToggleGroupItem\n value={option.value}\n aria-label={option.label}\n size={size}\n className=\"rounded-[5px] border-0 bg-transparent text-muted-foreground pointer-coarse:min-h-11 data-[state=off]:hover:bg-background/60 data-[state=off]:hover:text-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground data-[state=on]:hover:bg-accent data-[state=on]:hover:text-accent-foreground\"\n data-testid={option.testId ?? `${testIdPrefix}-${option.value}-button`}\n >\n {hideTooltip ? (\n content\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>{content}</TooltipTrigger>\n {isTipNeeded && <TooltipContent>{option.label}</TooltipContent>}\n </Tooltip>\n )}\n </ToggleGroupItem>\n )\n}\n\n/** Labels shown from a container width on (spelled out so Tailwind sees each class). */\nconst CONTAINER_LABEL_CLASS = {\n '32rem': 'hidden @lg:inline text-sm',\n '40rem': 'hidden @[40rem]:inline text-sm',\n} as const\n\n/** Segmented view switch: selected = accent tint, tone-only hover, 44px targets on touch. */\nexport function ViewToggle({\n options,\n value,\n onChange,\n testIdPrefix = 'view',\n showLabels = false,\n hideTooltips = false,\n size = 'default',\n containerCollapse = false,\n labelsFrom = '32rem',\n className,\n}: ViewToggleProps) {\n const labelClassName = containerCollapse\n ? CONTAINER_LABEL_CLASS[labelsFrom]\n : 'hidden md:inline text-sm'\n return (\n <ToggleGroup\n variant=\"default\"\n type=\"single\"\n value={value}\n onValueChange={(next) => next && onChange(next)}\n className={cn('gap-0.5 rounded-md bg-muted p-0.5', className)}\n >\n {options.map((option) => (\n <ViewToggleItem\n key={option.value}\n option={option}\n size={size}\n testIdPrefix={testIdPrefix}\n showLabel={showLabels}\n labelClassName={labelClassName}\n hideTooltip={hideTooltips}\n />\n ))}\n </ToggleGroup>\n )\n}\n\nexport type DocumentViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\nfunction documentViewOptions(l: DocumentViewToggleLabels): ViewToggleOption[] {\n return [\n // \"Gallery\" (page-preview grid) reads more conventionally than \"Tiles\".\n { value: 'explorer', icon: <FileImage className=\"size-3.5\" />, label: l.gallery },\n { value: 'grid', icon: <Table2 className=\"size-3.5\" />, label: l.table },\n { value: 'navigator', icon: <BookOpen className=\"size-3.5\" />, label: l.review },\n { value: 'search', icon: <Search className=\"size-3.5\" />, label: l.smartSearch },\n ]\n}\n\nexport interface DocumentViewToggleProps {\n viewMode: DocumentViewMode\n onChange: (mode: DocumentViewMode) => void\n /** Collapse the four modes into one select trigger (narrow viewports). */\n compact?: boolean\n labels?: Partial<DocumentViewToggleLabels>\n /** Overrides the segmented items' prefix (default `documents-layout`: `<prefix>-<mode>-button`). */\n testIdPrefix?: string\n /** Per-mode item ids, for hosts that keep their own (e.g. `documents-view-gallery`). */\n testIds?: Partial<Record<DocumentViewMode, string>>\n /** Overrides the compact select test ids (defaults keep the current ids). */\n compactTestIds?: Partial<{ select: string; option: (mode: DocumentViewMode) => string }>\n}\n\n/** The Documents page's Gallery / Table / Review / Smart Search switch. */\nexport function DocumentViewToggle({\n viewMode,\n onChange,\n compact,\n labels,\n testIdPrefix,\n testIds,\n compactTestIds,\n}: DocumentViewToggleProps) {\n const options = documentViewOptions({ ...DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS, ...labels }).map(\n (o) => ({ ...o, testId: testIds?.[o.value as DocumentViewMode] })\n )\n if (compact) {\n const current = options.find((o) => o.value === viewMode) ?? options[0]\n return (\n <Select value={viewMode} onValueChange={(v) => onChange(v as DocumentViewMode)}>\n <SelectTrigger\n className=\"h-7 w-10 justify-center gap-0 border-input p-0 pointer-coarse:h-11! pointer-coarse:w-11! shrink-0 [&>svg]:hidden\"\n aria-label={current.label}\n data-testid={testIdOr(compactTestIds?.select, {\n testId: 'documents-layout-compact-select',\n })}\n >\n <SelectValue>{current.icon}</SelectValue>\n </SelectTrigger>\n <SelectContent align=\"center\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n data-testid={testIdOr(compactTestIds?.option?.(option.value as DocumentViewMode), {\n testId: `documents-layout-compact-${option.value}-option`,\n })}\n >\n <span className=\"flex items-center gap-2\">\n {option.icon}\n {option.label}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n return (\n <ViewToggle\n options={options}\n value={viewMode}\n onChange={(v) => onChange(v as DocumentViewMode)}\n testIdPrefix={testIdPrefix ?? 'documents-layout'}\n showLabels\n containerCollapse\n size=\"sm\"\n />\n )\n}\n"]}
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
|
|
4
4
|
var chunkS5HZBXZA_cjs = require('./chunk-S5HZBXZA.cjs');
|
|
5
5
|
var chunkZW6FPIFC_cjs = require('./chunk-ZW6FPIFC.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunk3WW32OUU_cjs = require('./chunk-3WW32OUU.cjs');
|
|
7
7
|
var chunkN26CXGXC_cjs = require('./chunk-N26CXGXC.cjs');
|
|
8
8
|
var chunk7RGLTF76_cjs = require('./chunk-7RGLTF76.cjs');
|
|
9
|
+
var chunkZ5VUZ6YD_cjs = require('./chunk-Z5VUZ6YD.cjs');
|
|
10
|
+
var chunk7D737FLE_cjs = require('./chunk-7D737FLE.cjs');
|
|
9
11
|
var chunk3AFWGEDJ_cjs = require('./chunk-3AFWGEDJ.cjs');
|
|
10
12
|
var chunkDVUZTGVL_cjs = require('./chunk-DVUZTGVL.cjs');
|
|
11
13
|
var chunkV4ISCZJ7_cjs = require('./chunk-V4ISCZJ7.cjs');
|
|
12
14
|
var chunk2EI7NCUA_cjs = require('./chunk-2EI7NCUA.cjs');
|
|
13
|
-
var chunkZ5VUZ6YD_cjs = require('./chunk-Z5VUZ6YD.cjs');
|
|
14
|
-
var chunk7D737FLE_cjs = require('./chunk-7D737FLE.cjs');
|
|
15
15
|
var chunkOB5F4577_cjs = require('./chunk-OB5F4577.cjs');
|
|
16
16
|
var chunkB4SRYJLM_cjs = require('./chunk-B4SRYJLM.cjs');
|
|
17
17
|
var chunk7UTB4PHM_cjs = require('./chunk-7UTB4PHM.cjs');
|
|
@@ -146,7 +146,7 @@ function WorkflowConfigDialog({
|
|
|
146
146
|
}) {
|
|
147
147
|
const l = { ...DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, ...labels };
|
|
148
148
|
const initialKey = JSON.stringify(initialInputs ?? {});
|
|
149
|
-
const seedKey = JSON.stringify({ ...
|
|
149
|
+
const seedKey = JSON.stringify({ ...chunk3WW32OUU_cjs.defaultInputs(workflow), ...JSON.parse(initialKey) });
|
|
150
150
|
const seed = react.useMemo(() => JSON.parse(seedKey), [seedKey]);
|
|
151
151
|
const [inputs, setInputs] = useControllableState(inputsProp, seed, onInputsChange);
|
|
152
152
|
const [agentId, setAgentId] = useControllableState(
|
|
@@ -158,7 +158,7 @@ function WorkflowConfigDialog({
|
|
|
158
158
|
if (open && inputsProp === void 0) setInputs(seed);
|
|
159
159
|
}, [open, seed]);
|
|
160
160
|
const setField = (name, value) => setInputs({ ...inputs, [name]: value });
|
|
161
|
-
const errors =
|
|
161
|
+
const errors = chunk3WW32OUU_cjs.validateInputs(workflow, inputs);
|
|
162
162
|
const valid = Object.keys(errors).length === 0;
|
|
163
163
|
const visibleErrors = Object.fromEntries(
|
|
164
164
|
Object.entries(errors).filter(([, e]) => e !== "required")
|
|
@@ -171,7 +171,7 @@ function WorkflowConfigDialog({
|
|
|
171
171
|
const blockedByScope = matchedCount !== null && matchedCount === 0 && Boolean(workflow.requiresFiles);
|
|
172
172
|
const showAgent = workflow.run.kind === "prompt" && workflow.options?.agent !== false && agents !== void 0 && agents.length > 0;
|
|
173
173
|
const launch = (values) => {
|
|
174
|
-
Promise.resolve(onLaunch(
|
|
174
|
+
Promise.resolve(onLaunch(chunk3WW32OUU_cjs.buildLaunch(workflow, values, agentId))).catch(() => {
|
|
175
175
|
});
|
|
176
176
|
};
|
|
177
177
|
const submit = () => {
|
|
@@ -249,7 +249,7 @@ function WorkflowConfigDialog({
|
|
|
249
249
|
}
|
|
250
250
|
) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
251
251
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
252
|
-
|
|
252
|
+
chunk3WW32OUU_cjs.SchemaForm,
|
|
253
253
|
{
|
|
254
254
|
fields,
|
|
255
255
|
values: inputs,
|
|
@@ -327,7 +327,7 @@ function resolveScopeInputs(workflow, inputs, scopeSource) {
|
|
|
327
327
|
for (const field of workflow.inputs) {
|
|
328
328
|
if (field.type !== "scope") continue;
|
|
329
329
|
const raw = inputs[field.name];
|
|
330
|
-
const scope =
|
|
330
|
+
const scope = chunk3WW32OUU_cjs.isWorkflowScope(raw) ? raw : { folders: [], labels: [] };
|
|
331
331
|
next[field.name] = { ...scope, documents: scopeSource.resolveDocuments(scope) };
|
|
332
332
|
}
|
|
333
333
|
return next;
|
|
@@ -369,9 +369,9 @@ function WorkflowLauncher({
|
|
|
369
369
|
};
|
|
370
370
|
const select = (workflow) => {
|
|
371
371
|
if (workflow.run.kind === "operation" && workflow.inputs.length === 0) {
|
|
372
|
-
const inputs =
|
|
373
|
-
if (Object.keys(
|
|
374
|
-
Promise.resolve(onLaunch(
|
|
372
|
+
const inputs = chunk3WW32OUU_cjs.defaultInputs(workflow);
|
|
373
|
+
if (Object.keys(chunk3WW32OUU_cjs.validateInputs(workflow, inputs)).length === 0) {
|
|
374
|
+
Promise.resolve(onLaunch(chunk3WW32OUU_cjs.buildLaunch(workflow, inputs, void 0))).catch(() => {
|
|
375
375
|
});
|
|
376
376
|
return;
|
|
377
377
|
}
|
|
@@ -521,7 +521,7 @@ function workflowToSkillMarkdown(workflow) {
|
|
|
521
521
|
if (workflow.landing !== "chat") lines.push(`landing: ${workflow.landing}`);
|
|
522
522
|
if (workflow.requiresFiles) lines.push("requires_files: true");
|
|
523
523
|
if (workflow.inputs.length > 0) {
|
|
524
|
-
lines.push(`inputs: ${JSON.stringify(workflow.inputs.map(
|
|
524
|
+
lines.push(`inputs: ${JSON.stringify(workflow.inputs.map(chunk3WW32OUU_cjs.fieldToFrontmatter))}`);
|
|
525
525
|
}
|
|
526
526
|
lines.push("---", "", run.promptTemplate.trim(), "");
|
|
527
527
|
return lines.join("\n");
|
|
@@ -543,11 +543,11 @@ function workflowFromSkillMarkdown(id, text2) {
|
|
|
543
543
|
} else if (value === "true" || value === "false") frontmatter[key] = value === "true";
|
|
544
544
|
else frontmatter[key] = value;
|
|
545
545
|
}
|
|
546
|
-
return
|
|
546
|
+
return chunk3WW32OUU_cjs.workflowFromFrontmatter(id, frontmatter, body);
|
|
547
547
|
}
|
|
548
548
|
function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, resolveWorkflow, compose } = {}) {
|
|
549
|
-
const steps =
|
|
550
|
-
const [inputs, setInputs] = react.useState(() =>
|
|
549
|
+
const steps = chunk3WW32OUU_cjs.workflowSteps(workflow);
|
|
550
|
+
const [inputs, setInputs] = react.useState(() => chunk3WW32OUU_cjs.initialRunInputs(workflow));
|
|
551
551
|
const [states, setStates] = react.useState({});
|
|
552
552
|
const set = (id, state) => setStates((s) => ({ ...s, [id]: state }));
|
|
553
553
|
const timers = react.useRef(/* @__PURE__ */ new Map());
|
|
@@ -569,10 +569,10 @@ function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, reso
|
|
|
569
569
|
react.useEffect(() => {
|
|
570
570
|
if (Object.values(states).some((s) => s.status === "running")) return;
|
|
571
571
|
const next = steps.find(
|
|
572
|
-
(s) => (s.kind === "agent" || s.kind === "action") &&
|
|
572
|
+
(s) => (s.kind === "agent" || s.kind === "action") && chunk3WW32OUU_cjs.stepPhase(steps, states, s.id) === "ready"
|
|
573
573
|
);
|
|
574
574
|
if (!next || next.kind !== "agent" && next.kind !== "action") return;
|
|
575
|
-
const prompt = next.kind === "agent" ?
|
|
575
|
+
const prompt = next.kind === "agent" ? chunk3WW32OUU_cjs.composeStepPrompt(workflow, next, inputs, { resolveWorkflow, compose }) : "";
|
|
576
576
|
set(next.id, { status: "running", startedAt: (/* @__PURE__ */ new Date()).toISOString() });
|
|
577
577
|
timers.current.set(
|
|
578
578
|
next.id,
|
|
@@ -585,7 +585,7 @@ function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, reso
|
|
|
585
585
|
}, delayMs)
|
|
586
586
|
);
|
|
587
587
|
}, [states, steps, workflow]);
|
|
588
|
-
return
|
|
588
|
+
return chunk3WW32OUU_cjs.useWorkflowView({
|
|
589
589
|
steps,
|
|
590
590
|
states,
|
|
591
591
|
inputs,
|
|
@@ -4998,7 +4998,7 @@ function workflowTaskFields(workflow, inputs, name, context) {
|
|
|
4998
4998
|
}
|
|
4999
4999
|
const typed = name?.trim();
|
|
5000
5000
|
if (workflow.options?.agent === false) {
|
|
5001
|
-
const message =
|
|
5001
|
+
const message = chunk3WW32OUU_cjs.composeWorkflowPrompt(workflow, inputs, context);
|
|
5002
5002
|
return { name: typed || message, prompt: "", skill_ref: null, skill_inputs: null };
|
|
5003
5003
|
}
|
|
5004
5004
|
const derived = typed || deriveWorkflowName(workflow, inputs);
|
|
@@ -5012,7 +5012,7 @@ function workflowTaskFields(workflow, inputs, name, context) {
|
|
|
5012
5012
|
}
|
|
5013
5013
|
return {
|
|
5014
5014
|
name: derived,
|
|
5015
|
-
prompt:
|
|
5015
|
+
prompt: chunk3WW32OUU_cjs.composeWorkflowPrompt(workflow, inputs, context),
|
|
5016
5016
|
skill_ref: null,
|
|
5017
5017
|
// The files a run is bound to travel in the saved inputs, whatever the template: the server binds
|
|
5018
5018
|
// the run to the ids listed under any input's `documents`.
|
|
@@ -6192,7 +6192,7 @@ function TaskActivityDialog({
|
|
|
6192
6192
|
testId,
|
|
6193
6193
|
...timeline
|
|
6194
6194
|
}) {
|
|
6195
|
-
const l = { ...
|
|
6195
|
+
const l = { ...chunk3WW32OUU_cjs.DEFAULT_TASK_ACTIVITY_LABELS, ...labels };
|
|
6196
6196
|
const id = chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "task-activity" });
|
|
6197
6197
|
const count = events?.length ?? 0;
|
|
6198
6198
|
const scrollToEnd = react.useCallback(
|
|
@@ -6207,7 +6207,7 @@ function TaskActivityDialog({
|
|
|
6207
6207
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { className: "truncate", children: taskName })
|
|
6208
6208
|
] }),
|
|
6209
6209
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-h-[55dvh] overflow-y-auto pr-1", "data-testid": `${id}-scroll`, children: [
|
|
6210
|
-
isLoading && !events ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: l.loading }) : isError && !events ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-destructive", children: l.error }) : count === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: l.empty }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6210
|
+
isLoading && !events ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: l.loading }) : isError && !events ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-destructive", children: l.error }) : count === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: l.empty }) : /* @__PURE__ */ jsxRuntime.jsx(chunk3WW32OUU_cjs.TaskActivityTimeline, { events: events ?? [], labels, testId: id, ...timeline }),
|
|
6211
6211
|
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollToEnd })
|
|
6212
6212
|
] })
|
|
6213
6213
|
] }) });
|
|
@@ -6334,7 +6334,7 @@ function groupThreadActivity(steps, items) {
|
|
|
6334
6334
|
continue;
|
|
6335
6335
|
}
|
|
6336
6336
|
if (current === void 0) out.before.push(item);
|
|
6337
|
-
else if (
|
|
6337
|
+
else if (chunk3WW32OUU_cjs.isRunFinished(steps, states)) out.after.push(item);
|
|
6338
6338
|
else {
|
|
6339
6339
|
const status = states[current]?.status;
|
|
6340
6340
|
const at = status === "done" || status === "skipped" ? steps.find((s) => !["done", "skipped"].includes(states[s.id]?.status ?? ""))?.id ?? current : current;
|
|
@@ -6452,13 +6452,13 @@ function WorkflowThreadStrip({
|
|
|
6452
6452
|
const chevron = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-3 shrink-0 text-muted-foreground" });
|
|
6453
6453
|
const [selected, setSelected] = react.useState(null);
|
|
6454
6454
|
const [open, setOpen] = react.useState(null);
|
|
6455
|
-
const phaseOf = (id) =>
|
|
6455
|
+
const phaseOf = (id) => chunk3WW32OUU_cjs.stepPhase(steps, states, id);
|
|
6456
6456
|
const iconOf = (step) => step.icon && renderIcon ? renderIcon(step.icon) : void 0;
|
|
6457
6457
|
const waitingOf = (id) => {
|
|
6458
6458
|
const step = steps.find((s) => s.id === id);
|
|
6459
6459
|
const phase = phaseOf(id);
|
|
6460
|
-
const documents =
|
|
6461
|
-
if (documents.length) return
|
|
6460
|
+
const documents = chunk3WW32OUU_cjs.waitingDocuments(states[id]);
|
|
6461
|
+
if (documents.length) return chunk3WW32OUU_cjs.waitingForDocumentsText(documents.length);
|
|
6462
6462
|
const name = step && (phase === "ready" || phase === "waiting") ? assigneeOf?.(step) : void 0;
|
|
6463
6463
|
return name ? l.waitingFor.replace("{name}", name) : void 0;
|
|
6464
6464
|
};
|
|
@@ -6473,14 +6473,14 @@ function WorkflowThreadStrip({
|
|
|
6473
6473
|
"button",
|
|
6474
6474
|
{
|
|
6475
6475
|
type: "button",
|
|
6476
|
-
className: ui.cn(
|
|
6476
|
+
className: ui.cn(chunk3WW32OUU_cjs.STEP_PILL, "py-0.5", chunk3WW32OUU_cjs.stepPillTone(phase, isCurrent)),
|
|
6477
6477
|
"aria-current": isCurrent ? "step" : void 0,
|
|
6478
6478
|
title: waiting ? `${step.title} \xB7 ${waiting}` : step.title,
|
|
6479
6479
|
"data-phase": phase,
|
|
6480
6480
|
"data-testid": `workflow-thread-step-${step.id}`,
|
|
6481
6481
|
children: [
|
|
6482
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6483
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: isCurrent ?
|
|
6482
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3WW32OUU_cjs.PhaseMark, { phase, icon: iconOf(step) }),
|
|
6483
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: isCurrent ? chunk3WW32OUU_cjs.STEP_LABEL_CURRENT : ui.cn(chunk3WW32OUU_cjs.STEP_LABEL, chunk3WW32OUU_cjs.STEP_LABEL_MAX), children: step.title }),
|
|
6484
6484
|
sentBack && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6485
6485
|
lucideReact.CornerUpLeft,
|
|
6486
6486
|
{
|
|
@@ -6492,7 +6492,7 @@ function WorkflowThreadStrip({
|
|
|
6492
6492
|
assignee && isCurrent && !narrow && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6493
6493
|
"span",
|
|
6494
6494
|
{
|
|
6495
|
-
className: ui.cn(
|
|
6495
|
+
className: ui.cn(chunk3WW32OUU_cjs.STEP_EXTRA, "flex max-w-[12rem] items-center gap-0.5"),
|
|
6496
6496
|
title: waiting,
|
|
6497
6497
|
"data-testid": `workflow-thread-step-${step.id}-assignee`,
|
|
6498
6498
|
children: [
|
|
@@ -6551,9 +6551,9 @@ function WorkflowThreadStrip({
|
|
|
6551
6551
|
strays.map((s) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "flex shrink-0 items-center gap-1", children: /* @__PURE__ */ jsxRuntime.jsx(SignalPill, { signal: s, l }) }, `${s.step}-${s.signal}`))
|
|
6552
6552
|
] }) : null;
|
|
6553
6553
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cn("min-w-0 flex-1", className), "data-testid": "workflow-thread-strip", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6554
|
-
|
|
6554
|
+
chunk3WW32OUU_cjs.StepBarFrame,
|
|
6555
6555
|
{
|
|
6556
|
-
levels:
|
|
6556
|
+
levels: chunk3WW32OUU_cjs.stepLevels(steps),
|
|
6557
6557
|
phaseOf,
|
|
6558
6558
|
current: selected,
|
|
6559
6559
|
onSelect: (id) => {
|
|
@@ -6638,10 +6638,10 @@ function compactThreadActivity(events) {
|
|
|
6638
6638
|
const count = Math.max(1, entry.recipients.length);
|
|
6639
6639
|
entry.label = `Notified ${count} ${count === 1 ? "user" : "users"}`;
|
|
6640
6640
|
} else if (STEP_LABELS[event.kind]) {
|
|
6641
|
-
const documents =
|
|
6641
|
+
const documents = chunk3WW32OUU_cjs.eventWaitingDocuments(event.detail);
|
|
6642
6642
|
result.push({
|
|
6643
6643
|
event,
|
|
6644
|
-
label: documents ?
|
|
6644
|
+
label: documents ? chunk3WW32OUU_cjs.waitingForDocumentsText(documents.length) : STEP_LABELS[event.kind],
|
|
6645
6645
|
recipients: []
|
|
6646
6646
|
});
|
|
6647
6647
|
} else if (["artifact_created", "artifact_edited", "document_added", "document_removed"].includes(
|
|
@@ -7040,7 +7040,7 @@ function defaultTaskComposerValues(workflows, initial) {
|
|
|
7040
7040
|
return {
|
|
7041
7041
|
assignee: "me",
|
|
7042
7042
|
workflowId,
|
|
7043
|
-
inputs: workflow ? { ...
|
|
7043
|
+
inputs: workflow ? { ...chunk3WW32OUU_cjs.defaultInputs(workflow), ...initial?.inputs } : { ...initial?.inputs },
|
|
7044
7044
|
when: "manual",
|
|
7045
7045
|
runAt: "",
|
|
7046
7046
|
rrule: "",
|
|
@@ -7149,7 +7149,7 @@ function WorkflowComposer({
|
|
|
7149
7149
|
return !docs?.length;
|
|
7150
7150
|
})
|
|
7151
7151
|
);
|
|
7152
|
-
const whatMissing = !workflow || Object.keys(
|
|
7152
|
+
const whatMissing = !workflow || Object.keys(chunk3WW32OUU_cjs.validateInputs({ ...workflow, inputs: fields }, values.inputs)).length > 0;
|
|
7153
7153
|
const runAtPast = values.when === "once" && values.runAt !== "" && values.runAt !== initialValues?.runAt && new Date(values.runAt).getTime() <= Date.now();
|
|
7154
7154
|
const whenMissing = missingWhen(values, runAtPast);
|
|
7155
7155
|
const scheduled = values.when !== "now" && values.when !== "manual";
|
|
@@ -7161,7 +7161,7 @@ function WorkflowComposer({
|
|
|
7161
7161
|
setValues({
|
|
7162
7162
|
...values,
|
|
7163
7163
|
workflowId: next,
|
|
7164
|
-
inputs: def ?
|
|
7164
|
+
inputs: def ? chunk3WW32OUU_cjs.defaultInputs(def) : {},
|
|
7165
7165
|
...def?.documentAction ? { access: "standing" } : {}
|
|
7166
7166
|
});
|
|
7167
7167
|
};
|
|
@@ -7299,7 +7299,7 @@ function WorkflowComposer({
|
|
|
7299
7299
|
}
|
|
7300
7300
|
),
|
|
7301
7301
|
!noFiles && workflow && fields.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7302
|
-
|
|
7302
|
+
chunk3WW32OUU_cjs.SchemaForm,
|
|
7303
7303
|
{
|
|
7304
7304
|
fields,
|
|
7305
7305
|
values: values.inputs,
|
|
@@ -7738,7 +7738,7 @@ function WorkTaskComposer({
|
|
|
7738
7738
|
}, [open]);
|
|
7739
7739
|
const workflow = workflows.find((w) => w.id === values.workflowId);
|
|
7740
7740
|
const fields = workflow?.inputs ?? [];
|
|
7741
|
-
const errors = workflow ?
|
|
7741
|
+
const errors = workflow ? chunk3WW32OUU_cjs.validateInputs({ ...workflow, inputs: fields }, values.inputs) : {};
|
|
7742
7742
|
const hasWork = configOpen && Boolean(workflow) && Object.keys(errors).length === 0;
|
|
7743
7743
|
const unattended = hasWork && values.when !== "now" && values.when !== "manual";
|
|
7744
7744
|
const canConfigure = !isEdit || seed.assignee === "agent";
|
|
@@ -7746,7 +7746,7 @@ function WorkTaskComposer({
|
|
|
7746
7746
|
const set = (key, value) => setValues({ ...values, [key]: value });
|
|
7747
7747
|
const pickWorkflow = (id2) => {
|
|
7748
7748
|
const next = workflows.find((w) => w.id === id2);
|
|
7749
|
-
setValues({ ...values, workflowId: id2, inputs: next ?
|
|
7749
|
+
setValues({ ...values, workflowId: id2, inputs: next ? chunk3WW32OUU_cjs.defaultInputs(next) : {} });
|
|
7750
7750
|
};
|
|
7751
7751
|
const openConfigure = () => {
|
|
7752
7752
|
setConfigOpen(true);
|
|
@@ -7932,7 +7932,7 @@ function WorkTaskComposer({
|
|
|
7932
7932
|
)
|
|
7933
7933
|
] }),
|
|
7934
7934
|
workflow && fields.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7935
|
-
|
|
7935
|
+
chunk3WW32OUU_cjs.SchemaForm,
|
|
7936
7936
|
{
|
|
7937
7937
|
fields,
|
|
7938
7938
|
values: values.inputs,
|
|
@@ -10113,5 +10113,5 @@ exports.workflowToComposerValues = workflowToComposerValues;
|
|
|
10113
10113
|
exports.workflowToSkillMarkdown = workflowToSkillMarkdown;
|
|
10114
10114
|
exports.workflowTriggerType = workflowTriggerType;
|
|
10115
10115
|
exports.workflowWhen = workflowWhen;
|
|
10116
|
-
//# sourceMappingURL=chunk-
|
|
10117
|
-
//# sourceMappingURL=chunk-
|
|
10116
|
+
//# sourceMappingURL=chunk-MROSCSPW.cjs.map
|
|
10117
|
+
//# sourceMappingURL=chunk-MROSCSPW.cjs.map
|