@arbidocs/blocks 0.4.75 → 0.4.77
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 +341 -253
- package/dist/agents/index.js +3 -3
- package/dist/agents/tasks/TaskActivityTimeline.d.ts +1 -1
- package/dist/agents/tasks/WorkflowThreadStrip.d.ts +44 -1
- package/dist/agents/tasks/index.d.ts +2 -1
- package/dist/agents/tasks/linkedRuns.d.ts +31 -0
- package/dist/agents/workflows/SchemaForm.d.ts +6 -1
- package/dist/agents/workflows/StepParts.d.ts +109 -0
- package/dist/agents/workflows/WorkflowRunner.d.ts +11 -2
- package/dist/agents/workflows/index.d.ts +3 -2
- package/dist/agents/workflows/planSteps.d.ts +10 -1
- package/dist/agents/workflows/run.d.ts +61 -8
- package/dist/agents/workflows/types.d.ts +160 -4
- package/dist/agents/workflows/useWorkflowPreview.d.ts +2 -1
- package/dist/agents/workflows/useWorkflowView.d.ts +19 -0
- package/dist/chat/ChatPage.d.ts +1 -1
- package/dist/chat/WorkflowStepChip.d.ts +24 -0
- package/dist/chat/chat-page-types.d.ts +4 -0
- package/dist/chat/index.cjs +130 -122
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/index.js +2 -2
- package/dist/{chunk-YWYVIQ7T.js → chunk-34UW6XUQ.js} +948 -38
- package/dist/chunk-34UW6XUQ.js.map +1 -0
- package/dist/{chunk-P2RBE3FD.cjs → chunk-3XR3IEGU.cjs} +965 -35
- package/dist/chunk-3XR3IEGU.cjs.map +1 -0
- package/dist/{chunk-ZWA7UUZL.cjs → chunk-7YUFMNFW.cjs} +2 -54
- package/dist/chunk-7YUFMNFW.cjs.map +1 -0
- package/dist/chunk-A24C6BNA.js +92 -0
- package/dist/chunk-A24C6BNA.js.map +1 -0
- package/dist/chunk-AINNADMT.cjs +62 -0
- package/dist/chunk-AINNADMT.cjs.map +1 -0
- package/dist/{chunk-7CVF3DK2.cjs → chunk-EKIUMNCN.cjs} +5 -5
- package/dist/{chunk-7CVF3DK2.cjs.map → chunk-EKIUMNCN.cjs.map} +1 -1
- package/dist/chunk-FE4ULGOR.js +151 -0
- package/dist/chunk-FE4ULGOR.js.map +1 -0
- package/dist/chunk-FT5FFXSJ.js +60 -0
- package/dist/chunk-FT5FFXSJ.js.map +1 -0
- package/dist/{chunk-HITAN7JF.cjs → chunk-GTXOV7IJ.cjs} +4 -4
- package/dist/{chunk-HITAN7JF.cjs.map → chunk-GTXOV7IJ.cjs.map} +1 -1
- package/dist/{chunk-LT2UORRG.js → chunk-HEVVT6IT.js} +205 -38
- package/dist/chunk-HEVVT6IT.js.map +1 -0
- package/dist/{chunk-IPGKTUF7.cjs → chunk-HOD6OM7L.cjs} +68 -3
- package/dist/chunk-HOD6OM7L.cjs.map +1 -0
- package/dist/{chunk-F4LUD3YC.cjs → chunk-JFUN4D7D.cjs} +229 -60
- package/dist/chunk-JFUN4D7D.cjs.map +1 -0
- package/dist/{chunk-UIWLDSTF.js → chunk-NIP5BOP7.js} +68 -5
- package/dist/chunk-NIP5BOP7.js.map +1 -0
- package/dist/{chunk-MK6NJQGF.js → chunk-OEM5ARVM.js} +3 -3
- package/dist/{chunk-MK6NJQGF.js.map → chunk-OEM5ARVM.js.map} +1 -1
- package/dist/{chunk-5EBGRG3X.js → chunk-OPA2Y6YZ.js} +3 -54
- package/dist/chunk-OPA2Y6YZ.js.map +1 -0
- package/dist/chunk-TZR36PPP.cjs +95 -0
- package/dist/chunk-TZR36PPP.cjs.map +1 -0
- package/dist/{chunk-WJEKRSPH.js → chunk-UEU23PTW.js} +3 -3
- package/dist/{chunk-WJEKRSPH.js.map → chunk-UEU23PTW.js.map} +1 -1
- package/dist/chunk-ZVBPRMHJ.cjs +153 -0
- package/dist/chunk-ZVBPRMHJ.cjs.map +1 -0
- package/dist/connect/docx.cjs +10 -88
- package/dist/connect/docx.cjs.map +1 -1
- package/dist/connect/docx.js +6 -86
- package/dist/connect/docx.js.map +1 -1
- package/dist/connect/index.cjs +295 -32
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +280 -17
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedWorkflowRunner.d.ts +16 -2
- package/dist/connection/WorkflowRunnerDialogs.d.ts +37 -0
- package/dist/connection/useWorkflowThread.d.ts +12 -0
- package/dist/document-tools/index.cjs +7 -143
- package/dist/document-tools/index.cjs.map +1 -1
- package/dist/document-tools/index.js +5 -144
- package/dist/document-tools/index.js.map +1 -1
- package/dist/docx/index.cjs +18 -17
- package/dist/docx/index.cjs.map +1 -1
- package/dist/docx/index.js +3 -2
- package/dist/docx/index.js.map +1 -1
- package/dist/facts/index.cjs +1 -1
- package/dist/facts/index.js +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 +631 -535
- package/dist/index.js +8 -8
- package/dist/settings/index.cjs +1 -1
- package/dist/settings/index.js +1 -1
- package/dist/shell/index.cjs +1 -1
- package/dist/shell/index.js +1 -1
- package/dist/studio/index.cjs +4 -4
- package/dist/studio/index.js +3 -3
- package/dist/workflow-canvas/SignalsEditor.d.ts +41 -0
- package/dist/workflow-canvas/StepActionSettings.d.ts +132 -0
- package/dist/workflow-canvas/StepInspector.d.ts +28 -2
- package/dist/workflow-canvas/TriggerInspector.d.ts +11 -2
- package/dist/workflow-canvas/WorkflowBuilder.d.ts +17 -4
- package/dist/workflow-canvas/WorkflowCanvas.d.ts +27 -2
- package/dist/workflow-canvas/edit.d.ts +9 -1
- package/dist/workflow-canvas/index.cjs +1282 -208
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.d.ts +2 -1
- package/dist/workflow-canvas/index.js +1255 -188
- package/dist/workflow-canvas/index.js.map +1 -1
- package/dist/workflow-canvas/trigger.d.ts +20 -1
- package/package.json +4 -4
- package/src/workflow-canvas/canvas.css +9 -0
- package/dist/chunk-5EBGRG3X.js.map +0 -1
- package/dist/chunk-F4LUD3YC.cjs.map +0 -1
- package/dist/chunk-IPGKTUF7.cjs.map +0 -1
- package/dist/chunk-LT2UORRG.js.map +0 -1
- package/dist/chunk-P2RBE3FD.cjs.map +0 -1
- package/dist/chunk-UIWLDSTF.js.map +0 -1
- package/dist/chunk-YWYVIQ7T.js.map +0 -1
- package/dist/chunk-ZWA7UUZL.cjs.map +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
var chunkYJQVLVBJ_cjs = require('./chunk-YJQVLVBJ.cjs');
|
|
5
5
|
var chunkZW6FPIFC_cjs = require('./chunk-ZW6FPIFC.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunk3XR3IEGU_cjs = require('./chunk-3XR3IEGU.cjs');
|
|
7
7
|
var chunk7RGLTF76_cjs = require('./chunk-7RGLTF76.cjs');
|
|
8
8
|
var chunk3AFWGEDJ_cjs = require('./chunk-3AFWGEDJ.cjs');
|
|
9
9
|
var chunkVFUWWH52_cjs = require('./chunk-VFUWWH52.cjs');
|
|
@@ -13,10 +13,10 @@ var chunkIXALYQT7_cjs = require('./chunk-IXALYQT7.cjs');
|
|
|
13
13
|
var chunkZ5VUZ6YD_cjs = require('./chunk-Z5VUZ6YD.cjs');
|
|
14
14
|
var chunk7D737FLE_cjs = require('./chunk-7D737FLE.cjs');
|
|
15
15
|
var chunkOB5F4577_cjs = require('./chunk-OB5F4577.cjs');
|
|
16
|
+
var chunkC54XEN5T_cjs = require('./chunk-C54XEN5T.cjs');
|
|
16
17
|
var chunkB4SRYJLM_cjs = require('./chunk-B4SRYJLM.cjs');
|
|
17
18
|
var chunk7UTB4PHM_cjs = require('./chunk-7UTB4PHM.cjs');
|
|
18
19
|
var chunkFX3K6LNZ_cjs = require('./chunk-FX3K6LNZ.cjs');
|
|
19
|
-
var chunkC54XEN5T_cjs = require('./chunk-C54XEN5T.cjs');
|
|
20
20
|
var chunkKDG6FER6_cjs = require('./chunk-KDG6FER6.cjs');
|
|
21
21
|
var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
|
|
22
22
|
var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
|
|
@@ -145,7 +145,7 @@ function WorkflowConfigDialog({
|
|
|
145
145
|
}) {
|
|
146
146
|
const l = { ...DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, ...labels };
|
|
147
147
|
const initialKey = JSON.stringify(initialInputs ?? {});
|
|
148
|
-
const seedKey = JSON.stringify({ ...
|
|
148
|
+
const seedKey = JSON.stringify({ ...chunk3XR3IEGU_cjs.defaultInputs(workflow), ...JSON.parse(initialKey) });
|
|
149
149
|
const seed = react.useMemo(() => JSON.parse(seedKey), [seedKey]);
|
|
150
150
|
const [inputs, setInputs] = useControllableState(inputsProp, seed, onInputsChange);
|
|
151
151
|
const [agentId, setAgentId] = useControllableState(
|
|
@@ -157,7 +157,7 @@ function WorkflowConfigDialog({
|
|
|
157
157
|
if (open && inputsProp === void 0) setInputs(seed);
|
|
158
158
|
}, [open, seed]);
|
|
159
159
|
const setField = (name, value) => setInputs({ ...inputs, [name]: value });
|
|
160
|
-
const errors =
|
|
160
|
+
const errors = chunk3XR3IEGU_cjs.validateInputs(workflow, inputs);
|
|
161
161
|
const valid = Object.keys(errors).length === 0;
|
|
162
162
|
const visibleErrors = Object.fromEntries(
|
|
163
163
|
Object.entries(errors).filter(([, e]) => e !== "required")
|
|
@@ -170,7 +170,7 @@ function WorkflowConfigDialog({
|
|
|
170
170
|
const blockedByScope = matchedCount !== null && matchedCount === 0 && Boolean(workflow.requiresFiles);
|
|
171
171
|
const showAgent = workflow.run.kind === "prompt" && workflow.options?.agent !== false && agents !== void 0 && agents.length > 0;
|
|
172
172
|
const launch = (values) => {
|
|
173
|
-
Promise.resolve(onLaunch(
|
|
173
|
+
Promise.resolve(onLaunch(chunk3XR3IEGU_cjs.buildLaunch(workflow, values, agentId))).catch(() => {
|
|
174
174
|
});
|
|
175
175
|
};
|
|
176
176
|
const submit = () => {
|
|
@@ -248,7 +248,7 @@ function WorkflowConfigDialog({
|
|
|
248
248
|
}
|
|
249
249
|
) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
250
250
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
251
|
-
|
|
251
|
+
chunk3XR3IEGU_cjs.SchemaForm,
|
|
252
252
|
{
|
|
253
253
|
fields,
|
|
254
254
|
values: inputs,
|
|
@@ -326,7 +326,7 @@ function resolveScopeInputs(workflow, inputs, scopeSource) {
|
|
|
326
326
|
for (const field of workflow.inputs) {
|
|
327
327
|
if (field.type !== "scope") continue;
|
|
328
328
|
const raw = inputs[field.name];
|
|
329
|
-
const scope =
|
|
329
|
+
const scope = chunk3XR3IEGU_cjs.isWorkflowScope(raw) ? raw : { folders: [], labels: [] };
|
|
330
330
|
next[field.name] = { ...scope, documents: scopeSource.resolveDocuments(scope) };
|
|
331
331
|
}
|
|
332
332
|
return next;
|
|
@@ -368,9 +368,9 @@ function WorkflowLauncher({
|
|
|
368
368
|
};
|
|
369
369
|
const select = (workflow) => {
|
|
370
370
|
if (workflow.run.kind === "operation" && workflow.inputs.length === 0) {
|
|
371
|
-
const inputs =
|
|
372
|
-
if (Object.keys(
|
|
373
|
-
Promise.resolve(onLaunch(
|
|
371
|
+
const inputs = chunk3XR3IEGU_cjs.defaultInputs(workflow);
|
|
372
|
+
if (Object.keys(chunk3XR3IEGU_cjs.validateInputs(workflow, inputs)).length === 0) {
|
|
373
|
+
Promise.resolve(onLaunch(chunk3XR3IEGU_cjs.buildLaunch(workflow, inputs, void 0))).catch(() => {
|
|
374
374
|
});
|
|
375
375
|
return;
|
|
376
376
|
}
|
|
@@ -506,7 +506,7 @@ function WorkflowDocumentsField({
|
|
|
506
506
|
|
|
507
507
|
// src/agents/workflows/skillMarkdown.ts
|
|
508
508
|
var JSON_KEYS = /* @__PURE__ */ new Set(["inputs"]);
|
|
509
|
-
var oneLine = (
|
|
509
|
+
var oneLine = (text2) => text2.replace(/\s*\n\s*/g, " ").trim();
|
|
510
510
|
var skillSlug = (raw) => raw.toLowerCase().replace(/[^a-z0-9-]/g, "");
|
|
511
511
|
function workflowToSkillMarkdown(workflow) {
|
|
512
512
|
const { run } = workflow;
|
|
@@ -520,15 +520,15 @@ function workflowToSkillMarkdown(workflow) {
|
|
|
520
520
|
if (workflow.landing !== "chat") lines.push(`landing: ${workflow.landing}`);
|
|
521
521
|
if (workflow.requiresFiles) lines.push("requires_files: true");
|
|
522
522
|
if (workflow.inputs.length > 0) {
|
|
523
|
-
lines.push(`inputs: ${JSON.stringify(workflow.inputs.map(
|
|
523
|
+
lines.push(`inputs: ${JSON.stringify(workflow.inputs.map(chunk3XR3IEGU_cjs.fieldToFrontmatter))}`);
|
|
524
524
|
}
|
|
525
525
|
lines.push("---", "", run.promptTemplate.trim(), "");
|
|
526
526
|
return lines.join("\n");
|
|
527
527
|
}
|
|
528
|
-
function workflowFromSkillMarkdown(id,
|
|
529
|
-
const match = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(
|
|
528
|
+
function workflowFromSkillMarkdown(id, text2) {
|
|
529
|
+
const match = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(text2);
|
|
530
530
|
const frontmatter = {};
|
|
531
|
-
const body = match ? match[2] :
|
|
531
|
+
const body = match ? match[2] : text2;
|
|
532
532
|
for (const line of (match ? match[1] : "").split("\n")) {
|
|
533
533
|
const i = line.indexOf(":");
|
|
534
534
|
if (i < 1) continue;
|
|
@@ -542,11 +542,11 @@ function workflowFromSkillMarkdown(id, text) {
|
|
|
542
542
|
} else if (value === "true" || value === "false") frontmatter[key] = value === "true";
|
|
543
543
|
else frontmatter[key] = value;
|
|
544
544
|
}
|
|
545
|
-
return
|
|
545
|
+
return chunk3XR3IEGU_cjs.workflowFromFrontmatter(id, frontmatter, body);
|
|
546
546
|
}
|
|
547
547
|
function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, resolveWorkflow, compose } = {}) {
|
|
548
|
-
const steps =
|
|
549
|
-
const [inputs, setInputs] = react.useState(() =>
|
|
548
|
+
const steps = chunk3XR3IEGU_cjs.workflowSteps(workflow);
|
|
549
|
+
const [inputs, setInputs] = react.useState(() => chunk3XR3IEGU_cjs.initialRunInputs(workflow));
|
|
550
550
|
const [states, setStates] = react.useState({});
|
|
551
551
|
const set = (id, state) => setStates((s) => ({ ...s, [id]: state }));
|
|
552
552
|
const timers = react.useRef(/* @__PURE__ */ new Map());
|
|
@@ -567,19 +567,24 @@ function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, reso
|
|
|
567
567
|
}, []);
|
|
568
568
|
react.useEffect(() => {
|
|
569
569
|
if (Object.values(states).some((s) => s.status === "running")) return;
|
|
570
|
-
const next = steps.find(
|
|
571
|
-
|
|
572
|
-
|
|
570
|
+
const next = steps.find(
|
|
571
|
+
(s) => (s.kind === "agent" || s.kind === "action") && chunk3XR3IEGU_cjs.stepPhase(steps, states, s.id) === "ready"
|
|
572
|
+
);
|
|
573
|
+
if (!next || next.kind !== "agent" && next.kind !== "action") return;
|
|
574
|
+
const prompt = next.kind === "agent" ? chunk3XR3IEGU_cjs.composeStepPrompt(workflow, next, inputs, { resolveWorkflow, compose }) : "";
|
|
573
575
|
set(next.id, { status: "running", startedAt: (/* @__PURE__ */ new Date()).toISOString() });
|
|
574
576
|
timers.current.set(
|
|
575
577
|
next.id,
|
|
576
578
|
setTimeout(() => {
|
|
577
579
|
timers.current.delete(next.id);
|
|
578
|
-
set(
|
|
580
|
+
set(
|
|
581
|
+
next.id,
|
|
582
|
+
next.kind === "agent" ? { status: "done", text: answer.replace("{prompt}", prompt) } : { status: "done" }
|
|
583
|
+
);
|
|
579
584
|
}, delayMs)
|
|
580
585
|
);
|
|
581
586
|
}, [states, steps, workflow]);
|
|
582
|
-
return
|
|
587
|
+
return chunk3XR3IEGU_cjs.useWorkflowView({
|
|
583
588
|
steps,
|
|
584
589
|
states,
|
|
585
590
|
inputs,
|
|
@@ -2030,7 +2035,7 @@ function TaskPlan({
|
|
|
2030
2035
|
);
|
|
2031
2036
|
}
|
|
2032
2037
|
const patch = (fields) => onChange({ ...plan, ...fields });
|
|
2033
|
-
const setCriterion = (idx,
|
|
2038
|
+
const setCriterion = (idx, text2) => patch({ criteria: plan.criteria.map((c, i) => i === idx ? { ...c, text: text2 } : c) });
|
|
2034
2039
|
const addCriterion = () => patch({ criteria: [...plan.criteria, { id: nextCriterionId(plan.criteria), text: "" }] });
|
|
2035
2040
|
const removeCriterion = (idx) => patch({ criteria: plan.criteria.filter((_, i) => i !== idx) });
|
|
2036
2041
|
const count = plan.criteria.length;
|
|
@@ -2976,10 +2981,10 @@ function TaskStatusPill({
|
|
|
2976
2981
|
const generating = key === "generating";
|
|
2977
2982
|
const now = useNow(generating && Boolean(runStartedAt));
|
|
2978
2983
|
const started = runStartedAt ? Date.parse(runStartedAt) : NaN;
|
|
2979
|
-
let
|
|
2984
|
+
let text2 = STATUS_LABELS[key];
|
|
2980
2985
|
let tone = STATUS_TONE[key];
|
|
2981
2986
|
if (awaitingAccess) {
|
|
2982
|
-
|
|
2987
|
+
text2 = l.waitingForAccess;
|
|
2983
2988
|
tone = "danger";
|
|
2984
2989
|
}
|
|
2985
2990
|
const elapsed = generating && !Number.isNaN(started) ? formatElapsed(started, now) : null;
|
|
@@ -2992,7 +2997,7 @@ function TaskStatusPill({
|
|
|
2992
2997
|
"data-status": key,
|
|
2993
2998
|
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: `task-status-${id}` }),
|
|
2994
2999
|
children: [
|
|
2995
|
-
|
|
3000
|
+
text2,
|
|
2996
3001
|
elapsed && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "tabular-nums opacity-70", children: [
|
|
2997
3002
|
"\xB7 ",
|
|
2998
3003
|
elapsed
|
|
@@ -3398,8 +3403,8 @@ function TaskTable(props) {
|
|
|
3398
3403
|
const map = new Map(STATUS_ORDER.map((s) => [s, 0]));
|
|
3399
3404
|
let all = 0;
|
|
3400
3405
|
for (const task of tasks) {
|
|
3401
|
-
const
|
|
3402
|
-
if (q && !
|
|
3406
|
+
const text2 = `${nameOf(task)} ${task.description ?? ""}`.toLowerCase();
|
|
3407
|
+
if (q && !text2.includes(q)) continue;
|
|
3403
3408
|
all += 1;
|
|
3404
3409
|
const s = asTaskStatus(task.status);
|
|
3405
3410
|
map.set(s, (map.get(s) ?? 0) + 1);
|
|
@@ -4944,8 +4949,8 @@ function isoToLocalInput(iso) {
|
|
|
4944
4949
|
return new Date(d.getTime() - d.getTimezoneOffset() * 6e4).toISOString().slice(0, 16);
|
|
4945
4950
|
}
|
|
4946
4951
|
var DERIVED_NAME_WORDS = 6;
|
|
4947
|
-
function firstWords(
|
|
4948
|
-
const words =
|
|
4952
|
+
function firstWords(text2, count = DERIVED_NAME_WORDS) {
|
|
4953
|
+
const words = text2.trim().split(/\s+/).filter(Boolean);
|
|
4949
4954
|
if (words.length <= count) return words.join(" ");
|
|
4950
4955
|
return `${words.slice(0, count).join(" ")}\u2026`;
|
|
4951
4956
|
}
|
|
@@ -4992,7 +4997,7 @@ function workflowTaskFields(workflow, inputs, name, context) {
|
|
|
4992
4997
|
}
|
|
4993
4998
|
const typed = name?.trim();
|
|
4994
4999
|
if (workflow.options?.agent === false) {
|
|
4995
|
-
const message =
|
|
5000
|
+
const message = chunk3XR3IEGU_cjs.composeWorkflowPrompt(workflow, inputs, context);
|
|
4996
5001
|
return { name: typed || message, prompt: "", skill_ref: null, skill_inputs: null };
|
|
4997
5002
|
}
|
|
4998
5003
|
const derived = typed || deriveWorkflowName(workflow, inputs);
|
|
@@ -5006,7 +5011,7 @@ function workflowTaskFields(workflow, inputs, name, context) {
|
|
|
5006
5011
|
}
|
|
5007
5012
|
return {
|
|
5008
5013
|
name: derived,
|
|
5009
|
-
prompt:
|
|
5014
|
+
prompt: chunk3XR3IEGU_cjs.composeWorkflowPrompt(workflow, inputs, context),
|
|
5010
5015
|
skill_ref: null,
|
|
5011
5016
|
// The files a run is bound to travel in the saved inputs, whatever the template: the server binds
|
|
5012
5017
|
// the run to the ids listed under any input's `documents`.
|
|
@@ -5539,7 +5544,7 @@ function TaskTriggerChip({
|
|
|
5539
5544
|
}) {
|
|
5540
5545
|
const l = { ...DEFAULT_TASK_TRIGGER_CHIP_LABELS, ...labels };
|
|
5541
5546
|
const chained = Boolean(afterTaskId);
|
|
5542
|
-
const
|
|
5547
|
+
const text2 = chained ? afterTaskName ? l.after(afterTaskName) : l.afterUnknown : triggerType === "on_demand" ? l.onDemand : summary;
|
|
5543
5548
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5544
5549
|
"span",
|
|
5545
5550
|
{
|
|
@@ -5548,7 +5553,7 @@ function TaskTriggerChip({
|
|
|
5548
5553
|
"data-trigger": chained ? "task" : triggerType,
|
|
5549
5554
|
children: [
|
|
5550
5555
|
/* @__PURE__ */ jsxRuntime.jsx(TriggerIcon, { type: triggerType, chained }),
|
|
5551
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children:
|
|
5556
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: text2 })
|
|
5552
5557
|
]
|
|
5553
5558
|
}
|
|
5554
5559
|
);
|
|
@@ -5781,9 +5786,9 @@ function WorkflowsTable(props) {
|
|
|
5781
5786
|
renderName: (w) => {
|
|
5782
5787
|
const { l: lb } = latest.current;
|
|
5783
5788
|
const skill = isSkillRow(w);
|
|
5784
|
-
const
|
|
5789
|
+
const text2 = skill ? latest.current.actionText(w) : w.description || latest.current.actionText(w);
|
|
5785
5790
|
const stem = w.name.replace(/…$/, "").trim();
|
|
5786
|
-
const about =
|
|
5791
|
+
const about = text2 && text2.trim() !== w.name.trim() && text2.trim() !== stem ? text2 : "";
|
|
5787
5792
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 leading-tight", children: [
|
|
5788
5793
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
5789
5794
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6212,7 +6217,14 @@ var ICONS = {
|
|
|
6212
6217
|
step_started: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Play, { className: "size-3.5", "aria-hidden": true }),
|
|
6213
6218
|
step_done: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "size-3.5", "aria-hidden": true }),
|
|
6214
6219
|
step_skipped: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { className: "size-3.5", "aria-hidden": true }),
|
|
6215
|
-
step_failed: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-3.5", "aria-hidden": true })
|
|
6220
|
+
step_failed: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-3.5", "aria-hidden": true }),
|
|
6221
|
+
step_signal: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Flag, { className: "size-3.5", "aria-hidden": true }),
|
|
6222
|
+
step_waiting: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Hourglass, { className: "size-3.5", "aria-hidden": true }),
|
|
6223
|
+
step_progress: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PenLine, { className: "size-3.5", "aria-hidden": true }),
|
|
6224
|
+
step_sent_back: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CornerUpLeft, { className: "size-3.5", "aria-hidden": true }),
|
|
6225
|
+
step_ready: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.BellRing, { className: "size-3.5", "aria-hidden": true }),
|
|
6226
|
+
step_reminded: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.BellRing, { className: "size-3.5", "aria-hidden": true }),
|
|
6227
|
+
linked_run: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpRight, { className: "size-3.5", "aria-hidden": true })
|
|
6216
6228
|
};
|
|
6217
6229
|
var asString = (v) => typeof v === "string" && v.trim() ? v : null;
|
|
6218
6230
|
function summarizeError(error) {
|
|
@@ -6257,6 +6269,22 @@ function TaskActivityTimeline({
|
|
|
6257
6269
|
return { headline: "Step done" };
|
|
6258
6270
|
case "step_skipped":
|
|
6259
6271
|
return { headline: "Step skipped" };
|
|
6272
|
+
case "step_waiting":
|
|
6273
|
+
return { headline: "Waiting on people" };
|
|
6274
|
+
case "step_progress":
|
|
6275
|
+
return { headline: detail.signed ? "Signed" : "Step moved on" };
|
|
6276
|
+
case "step_sent_back":
|
|
6277
|
+
return { headline: "Sent the work back" };
|
|
6278
|
+
case "step_ready":
|
|
6279
|
+
return { headline: "Told whose turn it is" };
|
|
6280
|
+
case "step_reminded":
|
|
6281
|
+
return { headline: "Sent a reminder" };
|
|
6282
|
+
case "step_signal":
|
|
6283
|
+
return { headline: `Signalled \u201C${asString(detail.signal) ?? "a signal"}\u201D` };
|
|
6284
|
+
case "linked_run":
|
|
6285
|
+
return {
|
|
6286
|
+
headline: `Started a linked workflow on \u201C${asString(detail.signal) ?? "a signal"}\u201D`
|
|
6287
|
+
};
|
|
6260
6288
|
case "step_failed":
|
|
6261
6289
|
return {
|
|
6262
6290
|
headline: "Step failed",
|
|
@@ -6461,7 +6489,13 @@ function ThreadActivity({ item, children }) {
|
|
|
6461
6489
|
}
|
|
6462
6490
|
) });
|
|
6463
6491
|
}
|
|
6464
|
-
var STEP_KINDS = /* @__PURE__ */ new Set([
|
|
6492
|
+
var STEP_KINDS = /* @__PURE__ */ new Set([
|
|
6493
|
+
"step_started",
|
|
6494
|
+
"step_waiting",
|
|
6495
|
+
"step_done",
|
|
6496
|
+
"step_skipped",
|
|
6497
|
+
"step_failed"
|
|
6498
|
+
]);
|
|
6465
6499
|
function groupThreadActivity(steps, items) {
|
|
6466
6500
|
const out = { before: [], byStep: {}, after: [] };
|
|
6467
6501
|
const states = {};
|
|
@@ -6470,12 +6504,12 @@ function groupThreadActivity(steps, items) {
|
|
|
6470
6504
|
if (item.kind && STEP_KINDS.has(item.kind) && item.step) {
|
|
6471
6505
|
current = item.step;
|
|
6472
6506
|
states[item.step] = {
|
|
6473
|
-
status: item.kind === "step_started" ? "running" : item.kind === "step_done" ? "done" : item.kind === "step_skipped" ? "skipped" : "failed"
|
|
6507
|
+
status: item.kind === "step_started" ? "running" : item.kind === "step_waiting" ? "waiting" : item.kind === "step_done" ? "done" : item.kind === "step_skipped" ? "skipped" : "failed"
|
|
6474
6508
|
};
|
|
6475
6509
|
continue;
|
|
6476
6510
|
}
|
|
6477
6511
|
if (current === void 0) out.before.push(item);
|
|
6478
|
-
else if (
|
|
6512
|
+
else if (chunk3XR3IEGU_cjs.isRunFinished(steps, states)) out.after.push(item);
|
|
6479
6513
|
else {
|
|
6480
6514
|
const status = states[current]?.status;
|
|
6481
6515
|
const at = status === "done" || status === "skipped" ? steps.find((s) => !["done", "skipped"].includes(states[s.id]?.status ?? ""))?.id ?? current : current;
|
|
@@ -6487,11 +6521,70 @@ function groupThreadActivity(steps, items) {
|
|
|
6487
6521
|
var DEFAULT_WORKFLOW_THREAD_STRIP_LABELS = {
|
|
6488
6522
|
happened: "{count} in this step",
|
|
6489
6523
|
nothingYet: "Nothing here yet.",
|
|
6490
|
-
skip: "Skip this step"
|
|
6524
|
+
skip: "Skip this step",
|
|
6525
|
+
startedBy: "Started by {step} in {thread}",
|
|
6526
|
+
signalled: "This step signalled \u201C{signal}\u201D",
|
|
6527
|
+
linkedRun: "Started on \u201C{signal}\u201D: open its thread",
|
|
6528
|
+
waitingFor: "Waiting for {name}",
|
|
6529
|
+
sentBack: "Sent back to be done again"
|
|
6491
6530
|
};
|
|
6531
|
+
function WorkflowThreadStartedBy({
|
|
6532
|
+
origin,
|
|
6533
|
+
labels
|
|
6534
|
+
}) {
|
|
6535
|
+
const l = { ...DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, ...labels };
|
|
6536
|
+
const text2 = l.startedBy.replace("{step}", origin.stepTitle).replace("{thread}", origin.threadTitle);
|
|
6537
|
+
const className = "flex max-w-64 shrink-0 items-center gap-1 truncate rounded-full border border-border px-2 py-0.5 text-[11px] text-muted-foreground";
|
|
6538
|
+
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6539
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CornerLeftUp, { className: "size-3 shrink-0" }),
|
|
6540
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: text2 })
|
|
6541
|
+
] });
|
|
6542
|
+
return origin.onSelect ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6543
|
+
"button",
|
|
6544
|
+
{
|
|
6545
|
+
type: "button",
|
|
6546
|
+
onClick: origin.onSelect,
|
|
6547
|
+
title: origin.signal ? `${text2} (${origin.signal})` : text2,
|
|
6548
|
+
className: ui.cn(className, "hover:border-primary/40 hover:text-primary"),
|
|
6549
|
+
"data-testid": "workflow-thread-started-by",
|
|
6550
|
+
children: content
|
|
6551
|
+
}
|
|
6552
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className, title: text2, "data-testid": "workflow-thread-started-by", children: content });
|
|
6553
|
+
}
|
|
6554
|
+
function SignalPill({ signal, l }) {
|
|
6555
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6556
|
+
"span",
|
|
6557
|
+
{
|
|
6558
|
+
className: "flex shrink-0 items-center gap-1 rounded-full border border-amber-500/40 bg-amber-500/10 px-1.5 py-0.5 text-[11px] text-amber-700 dark:text-amber-300",
|
|
6559
|
+
title: l.signalled.replace("{signal}", signal.signal),
|
|
6560
|
+
"data-testid": `workflow-thread-signal-${signal.step}-${signal.signal}`,
|
|
6561
|
+
children: [
|
|
6562
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Flag, { className: "size-3 shrink-0" }),
|
|
6563
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: signal.signal }),
|
|
6564
|
+
signal.runs.map((run) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6565
|
+
"button",
|
|
6566
|
+
{
|
|
6567
|
+
type: "button",
|
|
6568
|
+
onClick: run.onSelect,
|
|
6569
|
+
disabled: !run.onSelect,
|
|
6570
|
+
title: l.linkedRun.replace("{signal}", signal.signal),
|
|
6571
|
+
className: "flex max-w-40 items-center gap-0.5 truncate rounded-full bg-background/80 px-1.5 text-foreground hover:text-primary disabled:cursor-default",
|
|
6572
|
+
"data-testid": `workflow-thread-linked-${run.id}`,
|
|
6573
|
+
children: [
|
|
6574
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpRight, { className: "size-3 shrink-0" }),
|
|
6575
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: run.label })
|
|
6576
|
+
]
|
|
6577
|
+
},
|
|
6578
|
+
run.id
|
|
6579
|
+
))
|
|
6580
|
+
]
|
|
6581
|
+
}
|
|
6582
|
+
);
|
|
6583
|
+
}
|
|
6492
6584
|
function Mark({ phase, icon }) {
|
|
6493
6585
|
if (phase === "done") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3.5" });
|
|
6494
6586
|
if (phase === "running") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-3.5 animate-spin" });
|
|
6587
|
+
if (phase === "waiting") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Hourglass, { className: "size-3.5" });
|
|
6495
6588
|
if (phase === "failed") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-3.5" });
|
|
6496
6589
|
if (phase === "skipped") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MinusCircle, { className: "size-3.5" });
|
|
6497
6590
|
return icon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-3.5 items-center justify-center [&_svg]:size-3.5", children: icon }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-1.5 rounded-full bg-current" });
|
|
@@ -6529,11 +6622,15 @@ function WorkflowThreadStrip({
|
|
|
6529
6622
|
renderIcon,
|
|
6530
6623
|
onSkip,
|
|
6531
6624
|
renderStepAction,
|
|
6625
|
+
signals = [],
|
|
6626
|
+
startedBy,
|
|
6627
|
+
assigneeOf,
|
|
6532
6628
|
labels,
|
|
6533
6629
|
className
|
|
6534
6630
|
}) {
|
|
6535
6631
|
const l = { ...DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, ...labels };
|
|
6536
6632
|
const grouped = groupThreadActivity(steps, items);
|
|
6633
|
+
const strays = signals.filter((s) => !steps.some((step) => step.id === s.step));
|
|
6537
6634
|
const chevron = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-3 shrink-0 text-muted-foreground" });
|
|
6538
6635
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6539
6636
|
"div",
|
|
@@ -6543,19 +6640,25 @@ function WorkflowThreadStrip({
|
|
|
6543
6640
|
"aria-label": "Workflow steps",
|
|
6544
6641
|
"data-testid": "workflow-thread-strip",
|
|
6545
6642
|
children: /* @__PURE__ */ jsxRuntime.jsxs("ol", { className: "flex w-max min-w-full items-center gap-1", children: [
|
|
6643
|
+
startedBy && /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex shrink-0 items-center gap-1", children: [
|
|
6644
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowThreadStartedBy, { origin: startedBy, labels }),
|
|
6645
|
+
chevron
|
|
6646
|
+
] }),
|
|
6546
6647
|
grouped.before.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex shrink-0 items-center gap-1", children: [
|
|
6547
6648
|
/* @__PURE__ */ jsxRuntime.jsx(Entry, { item }),
|
|
6548
6649
|
chevron
|
|
6549
6650
|
] }, item.id)),
|
|
6550
6651
|
steps.map((step, i) => {
|
|
6551
|
-
const phase =
|
|
6652
|
+
const phase = chunk3XR3IEGU_cjs.stepPhase(steps, states, step.id);
|
|
6552
6653
|
const happened = grouped.byStep[step.id] ?? [];
|
|
6654
|
+
const assignee = phase === "ready" || phase === "waiting" ? assigneeOf?.(step) : void 0;
|
|
6655
|
+
const sentBack = states[step.id]?.sentBack;
|
|
6553
6656
|
const chip = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6554
6657
|
"span",
|
|
6555
6658
|
{
|
|
6556
6659
|
className: ui.cn(
|
|
6557
6660
|
"flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border px-2 py-0.5 text-xs font-medium",
|
|
6558
|
-
phase === "running" || phase === "ready" ? "border-primary bg-primary/10 text-primary" : phase === "done" || phase === "skipped" ? "border-primary/30 text-primary" : phase === "failed" ? "border-destructive/40 text-destructive" : "border-dashed border-border text-muted-foreground"
|
|
6661
|
+
phase === "running" || phase === "ready" || phase === "waiting" ? "border-primary bg-primary/10 text-primary" : phase === "done" || phase === "skipped" ? "border-primary/30 text-primary" : phase === "failed" ? "border-destructive/40 text-destructive" : "border-dashed border-border text-muted-foreground"
|
|
6559
6662
|
),
|
|
6560
6663
|
"data-phase": phase,
|
|
6561
6664
|
"data-testid": `workflow-thread-step-${step.id}`,
|
|
@@ -6568,6 +6671,26 @@ function WorkflowThreadStrip({
|
|
|
6568
6671
|
}
|
|
6569
6672
|
),
|
|
6570
6673
|
step.title,
|
|
6674
|
+
sentBack && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6675
|
+
lucideReact.CornerUpLeft,
|
|
6676
|
+
{
|
|
6677
|
+
className: "size-3 text-amber-600 dark:text-amber-400",
|
|
6678
|
+
"aria-label": l.sentBack,
|
|
6679
|
+
"data-testid": `workflow-thread-step-${step.id}-sent-back`
|
|
6680
|
+
}
|
|
6681
|
+
),
|
|
6682
|
+
assignee && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6683
|
+
"span",
|
|
6684
|
+
{
|
|
6685
|
+
className: "flex max-w-32 items-center gap-0.5 truncate font-normal opacity-80",
|
|
6686
|
+
title: l.waitingFor.replace("{name}", assignee),
|
|
6687
|
+
"data-testid": `workflow-thread-step-${step.id}-assignee`,
|
|
6688
|
+
children: [
|
|
6689
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserRound, { className: "size-3 shrink-0" }),
|
|
6690
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: assignee })
|
|
6691
|
+
]
|
|
6692
|
+
}
|
|
6693
|
+
),
|
|
6571
6694
|
happened.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-muted px-1.5 text-[10px] text-muted-foreground", children: happened.length })
|
|
6572
6695
|
]
|
|
6573
6696
|
}
|
|
@@ -6582,10 +6705,19 @@ function WorkflowThreadStrip({
|
|
|
6582
6705
|
className: "w-72 space-y-1 p-2",
|
|
6583
6706
|
"data-testid": `workflow-thread-step-${step.id}-menu`,
|
|
6584
6707
|
children: [
|
|
6708
|
+
assignee && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6709
|
+
"p",
|
|
6710
|
+
{
|
|
6711
|
+
className: "px-1 text-xs",
|
|
6712
|
+
"data-testid": `workflow-thread-step-${step.id}-waiting-for`,
|
|
6713
|
+
children: l.waitingFor.replace("{name}", assignee)
|
|
6714
|
+
}
|
|
6715
|
+
),
|
|
6716
|
+
sentBack && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-1 text-xs text-amber-700 dark:text-amber-300", children: l.sentBack }),
|
|
6585
6717
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-1 text-xs font-medium text-muted-foreground", children: happened.length ? l.happened.replace("{count}", String(happened.length)) : l.nothingYet }),
|
|
6586
6718
|
happened.map((item) => /* @__PURE__ */ jsxRuntime.jsx(Entry, { item }, item.id)),
|
|
6587
6719
|
renderStepAction?.(step, phase),
|
|
6588
|
-
onSkip && ["ready", "blocked", "failed"].includes(phase) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6720
|
+
onSkip && ["ready", "blocked", "failed", "waiting"].includes(phase) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6589
6721
|
"button",
|
|
6590
6722
|
{
|
|
6591
6723
|
type: "button",
|
|
@@ -6599,24 +6731,59 @@ function WorkflowThreadStrip({
|
|
|
6599
6731
|
}
|
|
6600
6732
|
)
|
|
6601
6733
|
] }),
|
|
6602
|
-
(
|
|
6734
|
+
signals.filter((s) => s.step === step.id).map((s) => /* @__PURE__ */ jsxRuntime.jsx(SignalPill, { signal: s, l }, `${s.step}-${s.signal}`)),
|
|
6735
|
+
(i < steps.length - 1 || grouped.after.length > 0 || strays.length > 0) && chevron
|
|
6603
6736
|
] }, step.id);
|
|
6604
6737
|
}),
|
|
6605
6738
|
grouped.after.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex shrink-0 items-center gap-1", children: [
|
|
6606
6739
|
/* @__PURE__ */ jsxRuntime.jsx(Entry, { item }),
|
|
6607
|
-
i < grouped.after.length - 1 && chevron
|
|
6608
|
-
] }, item.id))
|
|
6740
|
+
(i < grouped.after.length - 1 || strays.length > 0) && chevron
|
|
6741
|
+
] }, item.id)),
|
|
6742
|
+
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}`))
|
|
6609
6743
|
] })
|
|
6610
6744
|
}
|
|
6611
6745
|
);
|
|
6612
6746
|
}
|
|
6613
6747
|
|
|
6748
|
+
// src/agents/tasks/linkedRuns.ts
|
|
6749
|
+
var text = (v) => typeof v === "string" && v ? v : void 0;
|
|
6750
|
+
function linkedRunsFromActivity(events) {
|
|
6751
|
+
const raised = [];
|
|
6752
|
+
let startedBy;
|
|
6753
|
+
const entry = (step, signal) => {
|
|
6754
|
+
let found = raised.find((r) => r.step === step && r.signal === signal);
|
|
6755
|
+
if (!found) raised.push(found = { step, signal, runs: [] });
|
|
6756
|
+
return found;
|
|
6757
|
+
};
|
|
6758
|
+
for (const e of events ?? []) {
|
|
6759
|
+
const d = e.detail ?? {};
|
|
6760
|
+
const step = text(d.step);
|
|
6761
|
+
const signal = text(d.signal);
|
|
6762
|
+
if (e.kind === "step_signal" && step && signal) entry(step, signal);
|
|
6763
|
+
else if (e.kind === "linked_run" && step && signal) {
|
|
6764
|
+
const conversationId = text(d.conversation_ext_id);
|
|
6765
|
+
const runs = entry(step, signal).runs;
|
|
6766
|
+
if (conversationId && !runs.some((r) => r.conversationId === conversationId))
|
|
6767
|
+
runs.push({ conversationId, workflowId: text(d.workflow_ext_id) });
|
|
6768
|
+
} else if (e.kind === "created" && d.linked_from && typeof d.linked_from === "object") {
|
|
6769
|
+
const from = d.linked_from;
|
|
6770
|
+
const conversationId = text(from.conversation_ext_id);
|
|
6771
|
+
if (conversationId)
|
|
6772
|
+
startedBy = { conversationId, step: text(from.step), signal: text(from.signal) };
|
|
6773
|
+
}
|
|
6774
|
+
}
|
|
6775
|
+
return startedBy ? { raised, startedBy } : { raised };
|
|
6776
|
+
}
|
|
6777
|
+
|
|
6614
6778
|
// src/agents/tasks/compact-thread-activity.ts
|
|
6615
6779
|
var STEP_LABELS = {
|
|
6616
6780
|
step_started: "Step started",
|
|
6617
6781
|
step_done: "Step done",
|
|
6618
6782
|
step_skipped: "Step skipped",
|
|
6619
|
-
step_failed: "Step failed"
|
|
6783
|
+
step_failed: "Step failed",
|
|
6784
|
+
step_waiting: "Waiting",
|
|
6785
|
+
step_progress: "Signed",
|
|
6786
|
+
step_sent_back: "Sent back"
|
|
6620
6787
|
};
|
|
6621
6788
|
function compactThreadActivity(events) {
|
|
6622
6789
|
const result = [];
|
|
@@ -7037,7 +7204,7 @@ function defaultTaskComposerValues(workflows, initial) {
|
|
|
7037
7204
|
return {
|
|
7038
7205
|
assignee: "me",
|
|
7039
7206
|
workflowId,
|
|
7040
|
-
inputs: workflow ? { ...
|
|
7207
|
+
inputs: workflow ? { ...chunk3XR3IEGU_cjs.defaultInputs(workflow), ...initial?.inputs } : { ...initial?.inputs },
|
|
7041
7208
|
when: "manual",
|
|
7042
7209
|
runAt: "",
|
|
7043
7210
|
rrule: "",
|
|
@@ -7146,7 +7313,7 @@ function WorkflowComposer({
|
|
|
7146
7313
|
return !docs?.length;
|
|
7147
7314
|
})
|
|
7148
7315
|
);
|
|
7149
|
-
const whatMissing = !workflow || Object.keys(
|
|
7316
|
+
const whatMissing = !workflow || Object.keys(chunk3XR3IEGU_cjs.validateInputs({ ...workflow, inputs: fields }, values.inputs)).length > 0;
|
|
7150
7317
|
const runAtPast = values.when === "once" && values.runAt !== "" && values.runAt !== initialValues?.runAt && new Date(values.runAt).getTime() <= Date.now();
|
|
7151
7318
|
const whenMissing = missingWhen(values, runAtPast);
|
|
7152
7319
|
const scheduled = values.when !== "now" && values.when !== "manual";
|
|
@@ -7158,7 +7325,7 @@ function WorkflowComposer({
|
|
|
7158
7325
|
setValues({
|
|
7159
7326
|
...values,
|
|
7160
7327
|
workflowId: next,
|
|
7161
|
-
inputs: def ?
|
|
7328
|
+
inputs: def ? chunk3XR3IEGU_cjs.defaultInputs(def) : {},
|
|
7162
7329
|
...def?.documentAction ? { access: "standing" } : {}
|
|
7163
7330
|
});
|
|
7164
7331
|
};
|
|
@@ -7296,7 +7463,7 @@ function WorkflowComposer({
|
|
|
7296
7463
|
}
|
|
7297
7464
|
),
|
|
7298
7465
|
!noFiles && workflow && fields.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7299
|
-
|
|
7466
|
+
chunk3XR3IEGU_cjs.SchemaForm,
|
|
7300
7467
|
{
|
|
7301
7468
|
fields,
|
|
7302
7469
|
values: values.inputs,
|
|
@@ -7735,7 +7902,7 @@ function WorkTaskComposer({
|
|
|
7735
7902
|
}, [open]);
|
|
7736
7903
|
const workflow = workflows.find((w) => w.id === values.workflowId);
|
|
7737
7904
|
const fields = workflow?.inputs ?? [];
|
|
7738
|
-
const errors = workflow ?
|
|
7905
|
+
const errors = workflow ? chunk3XR3IEGU_cjs.validateInputs({ ...workflow, inputs: fields }, values.inputs) : {};
|
|
7739
7906
|
const hasWork = configOpen && Boolean(workflow) && Object.keys(errors).length === 0;
|
|
7740
7907
|
const unattended = hasWork && values.when !== "now" && values.when !== "manual";
|
|
7741
7908
|
const canConfigure = !isEdit || seed.assignee === "agent";
|
|
@@ -7743,7 +7910,7 @@ function WorkTaskComposer({
|
|
|
7743
7910
|
const set = (key, value) => setValues({ ...values, [key]: value });
|
|
7744
7911
|
const pickWorkflow = (id2) => {
|
|
7745
7912
|
const next = workflows.find((w) => w.id === id2);
|
|
7746
|
-
setValues({ ...values, workflowId: id2, inputs: next ?
|
|
7913
|
+
setValues({ ...values, workflowId: id2, inputs: next ? chunk3XR3IEGU_cjs.defaultInputs(next) : {} });
|
|
7747
7914
|
};
|
|
7748
7915
|
const openConfigure = () => {
|
|
7749
7916
|
setConfigOpen(true);
|
|
@@ -7929,7 +8096,7 @@ function WorkTaskComposer({
|
|
|
7929
8096
|
)
|
|
7930
8097
|
] }),
|
|
7931
8098
|
workflow && fields.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7932
|
-
|
|
8099
|
+
chunk3XR3IEGU_cjs.SchemaForm,
|
|
7933
8100
|
{
|
|
7934
8101
|
fields,
|
|
7935
8102
|
values: values.inputs,
|
|
@@ -9021,7 +9188,7 @@ function AgentBarNotes({
|
|
|
9021
9188
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cn("mx-3 mb-2 space-y-1.5", className), children });
|
|
9022
9189
|
}
|
|
9023
9190
|
function AgentBarQueuedNote({
|
|
9024
|
-
text,
|
|
9191
|
+
text: text2,
|
|
9025
9192
|
isAcknowledged,
|
|
9026
9193
|
labels,
|
|
9027
9194
|
testId = "agent-queued-message"
|
|
@@ -9043,7 +9210,7 @@ function AgentBarQueuedNote({
|
|
|
9043
9210
|
children: l.queuedMessage
|
|
9044
9211
|
}
|
|
9045
9212
|
),
|
|
9046
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "line-clamp-2 whitespace-pre-line text-sm text-foreground", title:
|
|
9213
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "line-clamp-2 whitespace-pre-line text-sm text-foreground", title: text2, children: text2 })
|
|
9047
9214
|
] })
|
|
9048
9215
|
]
|
|
9049
9216
|
}
|
|
@@ -10043,6 +10210,7 @@ exports.WORKFLOW_COLUMN_ORDER = WORKFLOW_COLUMN_ORDER;
|
|
|
10043
10210
|
exports.WorkflowConfigDialog = WorkflowConfigDialog;
|
|
10044
10211
|
exports.WorkflowDocumentsField = WorkflowDocumentsField;
|
|
10045
10212
|
exports.WorkflowLauncher = WorkflowLauncher;
|
|
10213
|
+
exports.WorkflowThreadStartedBy = WorkflowThreadStartedBy;
|
|
10046
10214
|
exports.WorkflowThreadStrip = WorkflowThreadStrip;
|
|
10047
10215
|
exports.WorkflowsTable = WorkflowsTable;
|
|
10048
10216
|
exports.WorkflowsToolbar = WorkflowsToolbar;
|
|
@@ -10085,6 +10253,7 @@ exports.isPlainTodo = isPlainTodo;
|
|
|
10085
10253
|
exports.isSkillRow = isSkillRow;
|
|
10086
10254
|
exports.isValidAgentName = isValidAgentName;
|
|
10087
10255
|
exports.isoToLocalInput = isoToLocalInput;
|
|
10256
|
+
exports.linkedRunsFromActivity = linkedRunsFromActivity;
|
|
10088
10257
|
exports.localInputToIso = localInputToIso;
|
|
10089
10258
|
exports.matchWorkflowScope = matchWorkflowScope;
|
|
10090
10259
|
exports.moveTargets = moveTargets;
|
|
@@ -10110,5 +10279,5 @@ exports.workflowToComposerValues = workflowToComposerValues;
|
|
|
10110
10279
|
exports.workflowToSkillMarkdown = workflowToSkillMarkdown;
|
|
10111
10280
|
exports.workflowTriggerType = workflowTriggerType;
|
|
10112
10281
|
exports.workflowWhen = workflowWhen;
|
|
10113
|
-
//# sourceMappingURL=chunk-
|
|
10114
|
-
//# sourceMappingURL=chunk-
|
|
10282
|
+
//# sourceMappingURL=chunk-JFUN4D7D.cjs.map
|
|
10283
|
+
//# sourceMappingURL=chunk-JFUN4D7D.cjs.map
|