@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.
Files changed (113) hide show
  1. package/dist/agents/index.cjs +341 -253
  2. package/dist/agents/index.js +3 -3
  3. package/dist/agents/tasks/TaskActivityTimeline.d.ts +1 -1
  4. package/dist/agents/tasks/WorkflowThreadStrip.d.ts +44 -1
  5. package/dist/agents/tasks/index.d.ts +2 -1
  6. package/dist/agents/tasks/linkedRuns.d.ts +31 -0
  7. package/dist/agents/workflows/SchemaForm.d.ts +6 -1
  8. package/dist/agents/workflows/StepParts.d.ts +109 -0
  9. package/dist/agents/workflows/WorkflowRunner.d.ts +11 -2
  10. package/dist/agents/workflows/index.d.ts +3 -2
  11. package/dist/agents/workflows/planSteps.d.ts +10 -1
  12. package/dist/agents/workflows/run.d.ts +61 -8
  13. package/dist/agents/workflows/types.d.ts +160 -4
  14. package/dist/agents/workflows/useWorkflowPreview.d.ts +2 -1
  15. package/dist/agents/workflows/useWorkflowView.d.ts +19 -0
  16. package/dist/chat/ChatPage.d.ts +1 -1
  17. package/dist/chat/WorkflowStepChip.d.ts +24 -0
  18. package/dist/chat/chat-page-types.d.ts +4 -0
  19. package/dist/chat/index.cjs +130 -122
  20. package/dist/chat/index.d.ts +1 -0
  21. package/dist/chat/index.js +2 -2
  22. package/dist/{chunk-YWYVIQ7T.js → chunk-34UW6XUQ.js} +948 -38
  23. package/dist/chunk-34UW6XUQ.js.map +1 -0
  24. package/dist/{chunk-P2RBE3FD.cjs → chunk-3XR3IEGU.cjs} +965 -35
  25. package/dist/chunk-3XR3IEGU.cjs.map +1 -0
  26. package/dist/{chunk-ZWA7UUZL.cjs → chunk-7YUFMNFW.cjs} +2 -54
  27. package/dist/chunk-7YUFMNFW.cjs.map +1 -0
  28. package/dist/chunk-A24C6BNA.js +92 -0
  29. package/dist/chunk-A24C6BNA.js.map +1 -0
  30. package/dist/chunk-AINNADMT.cjs +62 -0
  31. package/dist/chunk-AINNADMT.cjs.map +1 -0
  32. package/dist/{chunk-7CVF3DK2.cjs → chunk-EKIUMNCN.cjs} +5 -5
  33. package/dist/{chunk-7CVF3DK2.cjs.map → chunk-EKIUMNCN.cjs.map} +1 -1
  34. package/dist/chunk-FE4ULGOR.js +151 -0
  35. package/dist/chunk-FE4ULGOR.js.map +1 -0
  36. package/dist/chunk-FT5FFXSJ.js +60 -0
  37. package/dist/chunk-FT5FFXSJ.js.map +1 -0
  38. package/dist/{chunk-HITAN7JF.cjs → chunk-GTXOV7IJ.cjs} +4 -4
  39. package/dist/{chunk-HITAN7JF.cjs.map → chunk-GTXOV7IJ.cjs.map} +1 -1
  40. package/dist/{chunk-LT2UORRG.js → chunk-HEVVT6IT.js} +205 -38
  41. package/dist/chunk-HEVVT6IT.js.map +1 -0
  42. package/dist/{chunk-IPGKTUF7.cjs → chunk-HOD6OM7L.cjs} +68 -3
  43. package/dist/chunk-HOD6OM7L.cjs.map +1 -0
  44. package/dist/{chunk-F4LUD3YC.cjs → chunk-JFUN4D7D.cjs} +229 -60
  45. package/dist/chunk-JFUN4D7D.cjs.map +1 -0
  46. package/dist/{chunk-UIWLDSTF.js → chunk-NIP5BOP7.js} +68 -5
  47. package/dist/chunk-NIP5BOP7.js.map +1 -0
  48. package/dist/{chunk-MK6NJQGF.js → chunk-OEM5ARVM.js} +3 -3
  49. package/dist/{chunk-MK6NJQGF.js.map → chunk-OEM5ARVM.js.map} +1 -1
  50. package/dist/{chunk-5EBGRG3X.js → chunk-OPA2Y6YZ.js} +3 -54
  51. package/dist/chunk-OPA2Y6YZ.js.map +1 -0
  52. package/dist/chunk-TZR36PPP.cjs +95 -0
  53. package/dist/chunk-TZR36PPP.cjs.map +1 -0
  54. package/dist/{chunk-WJEKRSPH.js → chunk-UEU23PTW.js} +3 -3
  55. package/dist/{chunk-WJEKRSPH.js.map → chunk-UEU23PTW.js.map} +1 -1
  56. package/dist/chunk-ZVBPRMHJ.cjs +153 -0
  57. package/dist/chunk-ZVBPRMHJ.cjs.map +1 -0
  58. package/dist/connect/docx.cjs +10 -88
  59. package/dist/connect/docx.cjs.map +1 -1
  60. package/dist/connect/docx.js +6 -86
  61. package/dist/connect/docx.js.map +1 -1
  62. package/dist/connect/index.cjs +295 -32
  63. package/dist/connect/index.cjs.map +1 -1
  64. package/dist/connect/index.js +280 -17
  65. package/dist/connect/index.js.map +1 -1
  66. package/dist/connection/ConnectedWorkflowRunner.d.ts +16 -2
  67. package/dist/connection/WorkflowRunnerDialogs.d.ts +37 -0
  68. package/dist/connection/useWorkflowThread.d.ts +12 -0
  69. package/dist/document-tools/index.cjs +7 -143
  70. package/dist/document-tools/index.cjs.map +1 -1
  71. package/dist/document-tools/index.js +5 -144
  72. package/dist/document-tools/index.js.map +1 -1
  73. package/dist/docx/index.cjs +18 -17
  74. package/dist/docx/index.cjs.map +1 -1
  75. package/dist/docx/index.js +3 -2
  76. package/dist/docx/index.js.map +1 -1
  77. package/dist/facts/index.cjs +1 -1
  78. package/dist/facts/index.js +1 -1
  79. package/dist/files/index.cjs +1 -1
  80. package/dist/files/index.js +1 -1
  81. package/dist/home/index.cjs +1 -1
  82. package/dist/home/index.js +1 -1
  83. package/dist/index.cjs +631 -535
  84. package/dist/index.js +8 -8
  85. package/dist/settings/index.cjs +1 -1
  86. package/dist/settings/index.js +1 -1
  87. package/dist/shell/index.cjs +1 -1
  88. package/dist/shell/index.js +1 -1
  89. package/dist/studio/index.cjs +4 -4
  90. package/dist/studio/index.js +3 -3
  91. package/dist/workflow-canvas/SignalsEditor.d.ts +41 -0
  92. package/dist/workflow-canvas/StepActionSettings.d.ts +132 -0
  93. package/dist/workflow-canvas/StepInspector.d.ts +28 -2
  94. package/dist/workflow-canvas/TriggerInspector.d.ts +11 -2
  95. package/dist/workflow-canvas/WorkflowBuilder.d.ts +17 -4
  96. package/dist/workflow-canvas/WorkflowCanvas.d.ts +27 -2
  97. package/dist/workflow-canvas/edit.d.ts +9 -1
  98. package/dist/workflow-canvas/index.cjs +1282 -208
  99. package/dist/workflow-canvas/index.cjs.map +1 -1
  100. package/dist/workflow-canvas/index.d.ts +2 -1
  101. package/dist/workflow-canvas/index.js +1255 -188
  102. package/dist/workflow-canvas/index.js.map +1 -1
  103. package/dist/workflow-canvas/trigger.d.ts +20 -1
  104. package/package.json +4 -4
  105. package/src/workflow-canvas/canvas.css +9 -0
  106. package/dist/chunk-5EBGRG3X.js.map +0 -1
  107. package/dist/chunk-F4LUD3YC.cjs.map +0 -1
  108. package/dist/chunk-IPGKTUF7.cjs.map +0 -1
  109. package/dist/chunk-LT2UORRG.js.map +0 -1
  110. package/dist/chunk-P2RBE3FD.cjs.map +0 -1
  111. package/dist/chunk-UIWLDSTF.js.map +0 -1
  112. package/dist/chunk-YWYVIQ7T.js.map +0 -1
  113. 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 chunkP2RBE3FD_cjs = require('./chunk-P2RBE3FD.cjs');
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({ ...chunkP2RBE3FD_cjs.defaultInputs(workflow), ...JSON.parse(initialKey) });
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 = chunkP2RBE3FD_cjs.validateInputs(workflow, inputs);
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(chunkP2RBE3FD_cjs.buildLaunch(workflow, values, agentId))).catch(() => {
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
- chunkP2RBE3FD_cjs.SchemaForm,
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 = chunkP2RBE3FD_cjs.isWorkflowScope(raw) ? raw : { folders: [], labels: [] };
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 = chunkP2RBE3FD_cjs.defaultInputs(workflow);
372
- if (Object.keys(chunkP2RBE3FD_cjs.validateInputs(workflow, inputs)).length === 0) {
373
- Promise.resolve(onLaunch(chunkP2RBE3FD_cjs.buildLaunch(workflow, inputs, void 0))).catch(() => {
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 = (text) => text.replace(/\s*\n\s*/g, " ").trim();
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(chunkP2RBE3FD_cjs.fieldToFrontmatter))}`);
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, text) {
529
- const match = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(text);
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] : text;
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 chunkP2RBE3FD_cjs.workflowFromFrontmatter(id, frontmatter, body);
545
+ return chunk3XR3IEGU_cjs.workflowFromFrontmatter(id, frontmatter, body);
546
546
  }
547
547
  function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, resolveWorkflow, compose } = {}) {
548
- const steps = chunkP2RBE3FD_cjs.workflowSteps(workflow);
549
- const [inputs, setInputs] = react.useState(() => chunkP2RBE3FD_cjs.initialRunInputs(workflow));
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((s) => s.kind === "agent" && chunkP2RBE3FD_cjs.stepPhase(steps, states, s.id) === "ready");
571
- if (!next || next.kind !== "agent") return;
572
- const prompt = chunkP2RBE3FD_cjs.composeStepPrompt(workflow, next, inputs, { resolveWorkflow, compose });
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(next.id, { status: "done", text: answer.replace("{prompt}", prompt) });
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 chunkP2RBE3FD_cjs.useWorkflowView({
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, text) => patch({ criteria: plan.criteria.map((c, i) => i === idx ? { ...c, text } : c) });
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 text = STATUS_LABELS[key];
2984
+ let text2 = STATUS_LABELS[key];
2980
2985
  let tone = STATUS_TONE[key];
2981
2986
  if (awaitingAccess) {
2982
- text = l.waitingForAccess;
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
- text,
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 text = `${nameOf(task)} ${task.description ?? ""}`.toLowerCase();
3402
- if (q && !text.includes(q)) continue;
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(text, count = DERIVED_NAME_WORDS) {
4948
- const words = text.trim().split(/\s+/).filter(Boolean);
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 = chunkP2RBE3FD_cjs.composeWorkflowPrompt(workflow, inputs, context);
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: chunkP2RBE3FD_cjs.composeWorkflowPrompt(workflow, inputs, context),
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 text = chained ? afterTaskName ? l.after(afterTaskName) : l.afterUnknown : triggerType === "on_demand" ? l.onDemand : summary;
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: text })
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 text = skill ? latest.current.actionText(w) : w.description || latest.current.actionText(w);
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 = text && text.trim() !== w.name.trim() && text.trim() !== stem ? text : "";
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(["step_started", "step_done", "step_skipped", "step_failed"]);
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 (chunkP2RBE3FD_cjs.isRunFinished(steps, states)) out.after.push(item);
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 = chunkP2RBE3FD_cjs.stepPhase(steps, states, step.id);
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
- (i < steps.length - 1 || grouped.after.length > 0) && chevron
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 ? { ...chunkP2RBE3FD_cjs.defaultInputs(workflow), ...initial?.inputs } : { ...initial?.inputs },
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(chunkP2RBE3FD_cjs.validateInputs({ ...workflow, inputs: fields }, values.inputs)).length > 0;
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 ? chunkP2RBE3FD_cjs.defaultInputs(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
- chunkP2RBE3FD_cjs.SchemaForm,
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 ? chunkP2RBE3FD_cjs.validateInputs({ ...workflow, inputs: fields }, values.inputs) : {};
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 ? chunkP2RBE3FD_cjs.defaultInputs(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
- chunkP2RBE3FD_cjs.SchemaForm,
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: text, children: text })
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-F4LUD3YC.cjs.map
10114
- //# sourceMappingURL=chunk-F4LUD3YC.cjs.map
10282
+ //# sourceMappingURL=chunk-JFUN4D7D.cjs.map
10283
+ //# sourceMappingURL=chunk-JFUN4D7D.cjs.map